From eb49cce31ce50054e7c9ef2e66b568ae65063223 Mon Sep 17 00:00:00 2001 From: Tom Ferriere Date: Mon, 3 Aug 2026 03:14:10 +0200 Subject: [PATCH 01/73] clean empty project --- .../Classes/ActorFactoryAkAmbientSound.uc | 14 - .../Src/AkAudio/Classes/AkAmbientSound.uc | 20 - .../Src/AkAudio/Classes/AkComponent.uc | 10 - .../Src/AkAudio/Classes/InterpTrackAkEvent.uc | 24 - .../Src/AkAudio/Classes/InterpTrackAkRTPC.uc | 12 - .../AkAudio/Classes/InterpTrackInstAkEvent.uc | 4 - .../AkAudio/Classes/InterpTrackInstAkRTPC.uc | 2 - .../AkAudio/Classes/SeqAct_AkClearBanks.uc | 12 - .../Src/AkAudio/Classes/SeqAct_AkLoadBank.uc | 20 - .../Src/AkAudio/Classes/SeqAct_AkPostEvent.uc | 15 - .../AkAudio/Classes/SeqAct_AkPostTrigger.uc | 13 - .../AkAudio/Classes/SeqAct_AkSetRTPCValue.uc | 19 - .../Src/AkAudio/Classes/SeqAct_AkSetState.uc | 15 - .../Src/AkAudio/Classes/SeqAct_AkSetSwitch.uc | 14 - .../Classes/SeqAct_AkStartAmbientSound.uc | 14 - .../Src/AkAudio/Classes/SeqAct_AkStopAll.uc | 12 - .../Classes/PComBrowserInteraction.uc | 7 - .../Classes/PComBrowserManager.uc | 7 - .../Classes/PComCheatManager.uc | 3 - .../Classes/PComDataDogUploader.uc | 65 -- .../PlatformCommon/Classes/PComGameEngine.uc | 33 - .../Classes/PComGameViewportClient.uc | 51 -- .../Classes/PComImageDownloader.uc | 45 -- .../Classes/PComInputLightingEffect.uc | 71 -- .../PlatformCommon/Classes/PComJsonHandler.uc | 14 - .../PlatformCommon/Classes/PComMusicTheme.uc | 25 - .../Classes/PComMusicThemeFactory.uc | 11 - .../Classes/PComMusicThemePlayer.uc | 47 -- .../Classes/PComMusicThemeSyncActor.uc | 36 - .../Classes/PComOpenBroadcaster.uc | 98 --- .../Classes/PComPerformanceCaptureBase.uc | 167 ----- .../Classes/PComPerformanceCaptureGame.uc | 37 - .../Classes/PComPerformanceCaptureNode.uc | 14 - .../Classes/PComPictureInPicture.uc | 73 -- .../Classes/PComPictureInPictureScene.uc | 61 -- .../Classes/PComPlayerController.uc | 570 ---------------- .../PlatformCommon/Classes/PComPlayerInput.uc | 113 ---- .../Classes/PComPlayerProfile.uc | 83 --- .../Classes/PComPositionHistoryComponent.uc | 2 - .../PComPositionHistoryServerComponent.uc | 55 -- .../Classes/PComRepInfo_Game.uc | 26 - .../Classes/PComSeqAct_PlayMusicEvent.uc | 12 - .../PlatformCommon/Classes/PComStructures.uc | 50 -- .../Classes/PComSupportCommands.uc | 192 ------ .../Classes/PComUIManagerBase.uc | 25 - .../Classes/PComUtilityFunctions.uc | 11 - .../PlatformCommon/Classes/PComVideoPlayer.uc | 94 --- .../Src/PlatformCommon/Classes/SearFiles.uc | 3 - .../TempestMp/Classes/APlayerConfigData.uc | 72 -- .../TempestMp/Classes/AServerConfigData.uc | 260 ------- .../Src/TempestMp/Classes/ATempestLib.uc | 148 ---- Development/Src/TempestMp/Classes/Maps.uc | 60 -- .../Src/TempestMp/Classes/Onslaught.uc | 598 ---------------- Development/Src/TempestMp/Classes/Payload.uc | 558 --------------- Development/Src/TempestMp/Classes/Siege.uc | 622 ----------------- Development/Src/TempestMp/Classes/SiegeDEV.uc | 640 ------------------ Development/Src/TempestMp/Classes/TDM.uc | 582 ---------------- .../Src/TempestMp/Classes/TempestMp.UPKG | 4 - .../Classes/TempestSpectatorController.uc | 19 - Development/Src/TempestMp/Classes/ttt.uc | 494 -------------- .../Src/TgClient/Classes/TgClientHud.uc | 21 - Development/Src/TgClient/Classes/TgGameHUD.uc | 11 - .../Src/TgClient/Classes/TgGameLaunch.uc | 4 - .../TgClient/Classes/TgGameViewportClient.uc | 8 - .../Src/TgClient/Classes/TgGfxScene.uc | 2 - .../Src/TgClient/Classes/TgLobbyHUD.uc | 8 - .../TgClient/Classes/TgSynchronizedTimer.uc | 23 - .../Src/TgGame/Classes/TgAIController.uc | 4 - .../TgGame/Classes/TgAIController_Behavior.uc | 4 - .../Classes/TgAIController_BehaviorGod.uc | 7 - .../Src/TgGame/Classes/TgActorFactory.uc | 5 - .../TgGame/Classes/TgBattleCheatManager.uc | 47 -- .../Src/TgGame/Classes/TgBotFactory.uc | 4 - .../Src/TgGame/Classes/TgCameraShake.uc | 17 - .../Src/TgGame/Classes/TgChaosCapturePoint.uc | 4 - .../Src/TgGame/Classes/TgControlModule.uc | 4 - .../Classes/TgControlModule_Spectator.uc | 2 - .../Classes/TgCustomCharacterComponent.uc | 48 -- .../Src/TgGame/Classes/TgDemoRecSpectator.uc | 10 - .../Classes/TgDemoRecSpectator_Debug.uc | 7 - .../Src/TgGame/Classes/TgDeploy_Illusion.uc | 8 - .../Src/TgGame/Classes/TgDeployable.uc | 5 - Development/Src/TgGame/Classes/TgDevice.uc | 71 -- .../Src/TgGame/Classes/TgDeviceFire.uc | 2 - .../Src/TgGame/Classes/TgDeviceVolume.uc | 43 -- .../Src/TgGame/Classes/TgDevice_Mount.uc | 18 - .../Src/TgGame/Classes/TgDevice_Toggle.uc | 3 - Development/Src/TgGame/Classes/TgGame.uc | 63 -- .../Src/TgGame/Classes/TgGameEngine.uc | 4 - .../Src/TgGame/Classes/TgGame_Battle.uc | 6 - .../Src/TgGame/Classes/TgGame_Chaos.uc | 4 - .../Src/TgGame/Classes/TgGame_ChaosSiege.uc | 4 - .../TgGame_ChaosSiege_CaptureAndPayload.uc | 4 - .../Src/TgGame/Classes/TgGame_Mission.uc | 50 -- .../Src/TgGame/Classes/TgGame_Paladins.uc | 49 -- .../TgGame/Classes/TgGame_PaladinsExtended.uc | 143 ---- .../TgGame/Classes/TgGame_Paladins_Assault.uc | 4 - .../Classes/TgGame_Paladins_Onslaught.uc | 4 - .../TgGame/Classes/TgGame_Paladins_Payload.uc | 58 -- .../Classes/TgGame_Paladins_ShootingRange.uc | 4 - .../TgGame/Classes/TgGame_Paladins_Siege.uc | 38 -- .../Classes/TgGame_Paladins_Survival.uc | 4 - .../Classes/TgGame_Paladins_TeamDeathMatch.uc | 4 - Development/Src/TgGame/Classes/TgHud.uc | 5 - .../Classes/TgInterface_YingIllusion.uc | 2 - .../Src/TgGame/Classes/TgInventoryManager.uc | 45 -- .../Src/TgGame/Classes/TgInventoryObject.uc | 19 - .../Classes/TgInventoryObject_Device.uc | 14 - .../Src/TgGame/Classes/TgItemShopVolume.uc | 35 - Development/Src/TgGame/Classes/TgObject.uc | 83 --- Development/Src/TgGame/Classes/TgObjective.uc | 4 - .../TgGame/Classes/TgPaladinsController.uc | 1 - Development/Src/TgGame/Classes/TgPawn.uc | 112 --- .../Src/TgGame/Classes/TgPawn_Biped.uc | 4 - .../Src/TgGame/Classes/TgPawn_Character.uc | 19 - .../Src/TgGame/Classes/TgPawn_Illusion.uc | 9 - Development/Src/TgGame/Classes/TgPawn_Pip.uc | 1 - Development/Src/TgGame/Classes/TgPawn_Ying.uc | 4 - .../Src/TgGame/Classes/TgPlayerController.uc | 177 ----- Development/Src/TgGame/Classes/TgProperty.uc | 2 - .../Src/TgGame/Classes/TgRepInfo_Game.uc | 23 - .../Src/TgGame/Classes/TgRepInfo_Player.uc | 29 - .../Src/TgGame/Classes/TgRepInfo_TaskForce.uc | 90 --- .../Src/TgGame/Classes/TgSeqAct_AIFreeze.uc | 14 - .../TgGame/Classes/TgSeqAct_AIMoveToActor.uc | 14 - .../TgGame/Classes/TgSeqAct_AIStartFireAt.uc | 14 - .../Src/TgGame/Classes/TgSeqAct_AIStopFire.uc | 9 - .../TgGame/Classes/TgSeqAct_AITargetActor.uc | 14 - .../TgGame/Classes/TgSeqAct_AddAnimSets.uc | 14 - .../TgSeqAct_BeaconEntranceSetActive.uc | 13 - .../Classes/TgSeqAct_BeaconExitSetRespawn.uc | 15 - .../Classes/TgSeqAct_BeginWaitForLookAt.uc | 20 - .../TgGame/Classes/TgSeqAct_ChangeScale.uc | 19 - .../Classes/TgSeqAct_ClientLoadDevices.uc | 14 - .../TgGame/Classes/TgSeqAct_CloseHUDMenus.uc | 14 - .../Classes/TgSeqAct_DefenseWaveSpawner.uc | 21 - .../TgGame/Classes/TgSeqAct_DespawnBots.uc | 10 - .../Classes/TgSeqAct_DisplaySlamText.uc | 15 - .../Src/TgGame/Classes/TgSeqAct_EndMission.uc | 4 - .../Src/TgGame/Classes/TgSeqAct_FadeIn.uc | 16 - .../Src/TgGame/Classes/TgSeqAct_FadeOut.uc | 16 - .../Classes/TgSeqAct_FillUltimateEnergy.uc | 14 - .../TgSeqAct_ForceClientTutorialAction.uc | 23 - .../Src/TgGame/Classes/TgSeqAct_GetBot.uc | 14 - .../TgGame/Classes/TgSeqAct_GetCharClass.uc | 15 - .../TgSeqAct_GetLocalPlayerController.uc | 17 - .../Classes/TgSeqAct_GetMaterialInst.uc | 16 - .../TgGame/Classes/TgSeqAct_GetPlayerCount.uc | 22 - .../Classes/TgSeqAct_GetTaskForceCount.uc | 16 - .../Classes/TgSeqAct_GetTaskForceNumber.uc | 11 - .../TgGame/Classes/TgSeqAct_GetTeamIndex.uc | 11 - .../TgGame/Classes/TgSeqAct_GiveCredits.uc | 17 - .../TgGame/Classes/TgSeqAct_GiveFullVitals.uc | 11 - .../Src/TgGame/Classes/TgSeqAct_HackBot.uc | 13 - .../Src/TgGame/Classes/TgSeqAct_HideHUD.uc | 13 - .../Classes/TgSeqAct_HideSilhouettes.uc | 13 - .../Src/TgGame/Classes/TgSeqAct_JoinTeam.uc | 13 - .../Src/TgGame/Classes/TgSeqAct_KillBots.uc | 10 - .../Classes/TgSeqAct_KillCurrentSquad.uc | 10 - .../Src/TgGame/Classes/TgSeqAct_Killpawns.uc | 9 - .../Classes/TgSeqAct_LaunchHomeInstance.uc | 9 - .../Classes/TgSeqAct_LogTutorialAction.uc | 14 - .../Classes/TgSeqAct_MapOutroFinished.uc | 10 - .../Classes/TgSeqAct_MarkSpawnReturn.uc | 16 - .../TgGame/Classes/TgSeqAct_NavIndicator.uc | 14 - .../TgGame/Classes/TgSeqAct_NextGamePhase.uc | 13 - .../Classes/TgSeqAct_ParentAnimComponent.uc | 13 - .../Classes/TgSeqAct_PauseSetupTimer.uc | 18 - .../TgGame/Classes/TgSeqAct_PingMinimap.uc | 14 - .../Classes/TgSeqAct_PlayAnnouncement.uc | 22 - .../TgGame/Classes/TgSeqAct_PlayCameraAnim.uc | 21 - .../Classes/TgSeqAct_PlayFullBodyAnim.uc | 22 - .../Src/TgGame/Classes/TgSeqAct_ProgressTo.uc | 14 - .../TgGame/Classes/TgSeqAct_PushMatinee.uc | 15 - .../TgGame/Classes/TgSeqAct_RequestMission.uc | 21 - .../TgGame/Classes/TgSeqAct_ResetCooldowns.uc | 14 - .../Classes/TgSeqAct_RespawnAllPlayers.uc | 19 - .../TgGame/Classes/TgSeqAct_RestartPlayers.uc | 9 - .../Classes/TgSeqAct_SelectBestSpawnPoint.uc | 19 - .../TgSeqAct_SendPlayerTrackingEvent.uc | 15 - .../Classes/TgSeqAct_SetCreditGainBlock.uc | 13 - .../Classes/TgSeqAct_SetCrowdControlImmune.uc | 12 - .../Classes/TgSeqAct_SetEnergyGainBlock.uc | 13 - .../TgGame/Classes/TgSeqAct_SetHexState.uc | 13 - .../Classes/TgSeqAct_SetInputEnabled.uc | 47 -- .../Classes/TgSeqAct_SetLobbyMeshSkin.uc | 19 - .../Src/TgGame/Classes/TgSeqAct_SetMapLane.uc | 13 - .../TgGame/Classes/TgSeqAct_SetMissionTime.uc | 22 - .../TgGame/Classes/TgSeqAct_SetPlayerLevel.uc | 13 - .../TgGame/Classes/TgSeqAct_SetPlayerMesh.uc | 13 - .../Classes/TgSeqAct_SetPlayerMeshVisible.uc | 19 - .../TgGame/Classes/TgSeqAct_SetSkelPosture.uc | 12 - .../TgGame/Classes/TgSeqAct_SetTaskforce.uc | 13 - .../Src/TgGame/Classes/TgSeqAct_SetUIClock.uc | 21 - .../TgGame/Classes/TgSeqAct_SetUITextBox.uc | 23 - .../Classes/TgSeqAct_SetUltimateEnergy.uc | 16 - .../TgGame/Classes/TgSeqAct_ShowGameTip.uc | 18 - .../Src/TgGame/Classes/TgSeqAct_ShowHUD.uc | 13 - .../Classes/TgSeqAct_ShowLoadoutMenu.uc | 13 - .../Classes/TgSeqAct_ShowSilhouettes.uc | 13 - .../Classes/TgSeqAct_SpawnProjectile.uc | 25 - .../Classes/TgSeqAct_TemporaryAddDevice.uc | 16 - .../Classes/TgSeqAct_TemporaryRemoveDevice.uc | 14 - .../Src/TgGame/Classes/TgSeqAct_TestResult.uc | 14 - .../TgGame/Classes/TgSeqAct_TgCameraShake.uc | 16 - .../TgSeqAct_ToggleStaticMeshSilhouette.uc | 22 - .../TgGame/Classes/TgSeqAct_TrainingAwards.uc | 26 - .../TgGame/Classes/TgSeqAct_TriggerBots.uc | 19 - .../Classes/TgSeqAct_TriggerInterpActor.uc | 13 - .../Classes/TgSeqAct_TutorialHighlighter.uc | 33 - .../Classes/TgSeqAct_TutorialInstruction.uc | 12 - .../TgGame/Classes/TgSeqAct_TutorialTips.uc | 12 - .../Src/TgGame/Classes/TgSeqAct_UIAlert.uc | 17 - .../Classes/TgSeqAct_UIElementVisibility.uc | 18 - .../Classes/TgSeqAct_UnpauseSetupTimer.uc | 14 - .../Src/TgGame/Classes/TgSeqCond_And.uc | 13 - .../Classes/TgSeqCond_CompareDamageType.uc | 14 - .../Classes/TgSeqCond_CompareDeviceId.uc | 17 - .../TgGame/Classes/TgSeqCond_HasCondition.uc | 29 - .../Src/TgGame/Classes/TgSeqCond_IsHuman.uc | 13 - .../TgGame/Classes/TgSeqCond_IsSecuring.uc | 12 - .../TgGame/Classes/TgSeqCond_IsSpectating.uc | 12 - .../Src/TgGame/Classes/TgSeqCond_Or.uc | 13 - .../TgGame/Classes/TgSeqEvent_AIRespawned.uc | 11 - .../Src/TgGame/Classes/TgSeqEvent_BotDied.uc | 17 - .../TgGame/Classes/TgSeqEvent_BotSpawned.uc | 11 - .../Classes/TgSeqEvent_BurnCardPurchased.uc | 22 - ...nt_CaptureAndPayloadCapturePointVictory.uc | 10 - .../TgSeqEvent_CaptureAndPayloadRoundBegin.uc | 11 - .../TgSeqEvent_CaptureAndPayloadRoundEnd.uc | 11 - ...t_CaptureAndPayloadSuccessfulDefenseTF1.uc | 10 - ...t_CaptureAndPayloadSuccessfulDefenseTF2.uc | 10 - ...vent_CaptureAndPayloadSuccessfulPushTF1.uc | 11 - ...vent_CaptureAndPayloadSuccessfulPushTF2.uc | 10 - .../TgSeqEvent_CaptureAndPayloadWinTF1.uc | 10 - .../TgSeqEvent_CaptureAndPayloadWinTF2.uc | 10 - .../Classes/TgSeqEvent_ChaosGameEvent.uc | 21 - .../TgSeqEvent_ChaosObjectiveActive.uc | 15 - .../TgSeqEvent_ChaosObjectiveStatus.uc | 21 - .../Classes/TgSeqEvent_ClassSelected.uc | 11 - .../Classes/TgSeqEvent_ClientGameOver.uc | 16 - .../TgSeqEvent_ControlPointOwnershipChange.uc | 17 - ...vent_ControlPointOwnershipChange_Server.uc | 14 - ...TgSeqEvent_ControlPointOwnershipPercent.uc | 15 - .../TgGame/Classes/TgSeqEvent_CrowdEvent.uc | 22 - .../TgSeqEvent_DebugConsoleKismetTest.uc | 11 - .../Classes/TgSeqEvent_DeployableFired.uc | 15 - .../Classes/TgSeqEvent_DoorStatusChanged.uc | 14 - .../Classes/TgSeqEvent_EnergyUpdated.uc | 24 - .../TgSeqEvent_Escort_Despawn_Success.uc | 15 - .../TgGame/Classes/TgSeqEvent_FactoryEmpty.uc | 11 - .../TgGame/Classes/TgSeqEvent_FiringDevice.uc | 10 - .../Classes/TgSeqEvent_FlagballTF1Score.uc | 10 - .../Classes/TgSeqEvent_FlagballTF1Win.uc | 10 - .../Classes/TgSeqEvent_FlagballTF2Score.uc | 10 - .../Classes/TgSeqEvent_FlagballTF2Win.uc | 10 - .../Classes/TgSeqEvent_InputReceived.uc | 38 -- .../TgGame/Classes/TgSeqEvent_LevelFadedIn.uc | 13 - .../Classes/TgSeqEvent_LoadoutChanged.uc | 21 - .../TgSeqEvent_LobbyCameraSetActive.uc | 15 - .../TgGame/Classes/TgSeqEvent_LobbyEvents.uc | 16 - .../Classes/TgSeqEvent_LocalPlayerDied.uc | 12 - .../Classes/TgSeqEvent_LocalPlayerRecalled.uc | 12 - .../TgSeqEvent_LocalPlayerScoredKill.uc | 12 - ...Event_LocalPlayersTeamScoredPhoenixKill.uc | 12 - ...eqEvent_LocalPlayersTeamScoredTowerKill.uc | 12 - .../Classes/TgSeqEvent_LookAtReceived.uc | 11 - .../Classes/TgSeqEvent_MICParameterEvent.uc | 31 - .../TgSeqEvent_MissionTimeRemaining.uc | 15 - .../TgGame/Classes/TgSeqEvent_MissionTimer.uc | 24 - .../Src/TgGame/Classes/TgSeqEvent_Named.uc | 23 - .../Classes/TgSeqEvent_PayloadAttackersWin.uc | 10 - .../Classes/TgSeqEvent_PayloadBeginTF1.uc | 10 - .../Classes/TgSeqEvent_PayloadBeginTF2.uc | 10 - .../Classes/TgSeqEvent_PayloadCP1Reached.uc | 10 - .../Classes/TgSeqEvent_PayloadCP2Reached.uc | 10 - .../Classes/TgSeqEvent_PayloadDefendersWin.uc | 10 - .../Classes/TgSeqEvent_PayloadEndTF1.uc | 10 - .../Classes/TgSeqEvent_PayloadEndTF2.uc | 10 - .../Classes/TgSeqEvent_PayloadGameEvent.uc | 20 - .../TgSeqEvent_PayloadMissionEvents.uc | 27 - .../TgGame/Classes/TgSeqEvent_PhaseNotify.uc | 15 - .../Classes/TgSeqEvent_PlaceableDestroyed.uc | 15 - .../TgGame/Classes/TgSeqEvent_PlayIntro.uc | 11 - .../Classes/TgSeqEvent_PlayOfTheGame.uc | 18 - .../Classes/TgSeqEvent_PlayerCountHit.uc | 11 - .../Classes/TgSeqEvent_PlayerInitialized.uc | 13 - .../TgGame/Classes/TgSeqEvent_PlayerMoved.uc | 31 - .../Classes/TgSeqEvent_SetupTimeEnded.uc | 13 - .../TgGame/Classes/TgSeqEvent_SiegePush.uc | 15 - .../Classes/TgSeqEvent_SpawnGateActivate.uc | 11 - .../Classes/TgSeqEvent_SpawnGateDeactivate.uc | 11 - ...gSeqEvent_SpawnGateDeactivate_Attackers.uc | 11 - ...gSeqEvent_SpawnGateDeactivate_Defenders.uc | 11 - .../Classes/TgSeqEvent_SpawnLanePusher.uc | 17 - .../TgGame/Classes/TgSeqEvent_SpawnWise.uc | 16 - .../Classes/TgSeqEvent_SpectatorReady.uc | 16 - .../Classes/TgSeqEvent_SurvivalGameBegin.uc | 10 - .../Classes/TgSeqEvent_SurvivalGameEnd.uc | 10 - .../Classes/TgSeqEvent_SurvivalGameEvent.uc | 17 - .../Src/TgGame/Classes/TgSeqEvent_TF1Win.uc | 10 - .../Src/TgGame/Classes/TgSeqEvent_TF2Win.uc | 10 - .../TgGame/Classes/TgSeqEvent_TakeDamage.uc | 20 - .../Classes/TgSeqEvent_TaskForceInactive.uc | 12 - .../TgSeqEvent_TaskForceScoreUpdated.uc | 17 - .../TgGame/Classes/TgSeqEvent_TeamInactive.uc | 12 - .../Classes/TgSeqEvent_TicketCountUpdated.uc | 14 - .../TgGame/Classes/TgSeqEvent_TimeLapse.uc | 15 - .../Src/TgGame/Classes/TgSeqEvent_Tutorial.uc | 49 -- .../Classes/TgSeqEvent_TutorialEvent.uc | 51 -- .../Src/TgGame/Classes/TgSeqEvent_UI_Event.uc | 66 -- .../TgSeqEvent_UpdateLanePusherCount.uc | 16 - .../Src/TgGame/Classes/TgSeqEvent_Used.uc | 13 - .../Classes/TgSeqEvent_VaultLowHealth.uc | 10 - .../Src/TgGame/Classes/TgSeqOp_MathCalc.uc | 19 - .../Src/TgGame/Classes/TgSeqVar_DamageType.uc | 12 - .../Src/TgGame/Classes/TgSeqVar_Player.uc | 21 - .../TgGame/Classes/TgSeqVar_RouteNumber.uc | 11 - .../TgGame/Classes/TgSpectatorController.uc | 38 -- .../Src/TgGame/Classes/TgStartPoint.uc | 5 - .../Src/TgGame/Classes/TgTeamPlayerStart.uc | 73 -- .../Src/TgGame/Classes/TgTimerManager.uc | 48 -- .../Src/TgGame/Classes/TgWeaponMeshActor.uc | 7 - .../Src/TgMod/Classes/TempestProxyActor.uc | 51 -- Development/Src/TgMod/Classes/TempestUtils.uc | 159 ----- .../TgMod/Classes/TgModGameViewportClient.uc | 118 ---- Development/Src/UTEditor/Classes/UTEditor.uc | 2 + UDKGame/Config/DefaultEngine.ini | 12 +- 328 files changed, 8 insertions(+), 11453 deletions(-) delete mode 100755 Development/Src/AkAudio/Classes/ActorFactoryAkAmbientSound.uc delete mode 100755 Development/Src/AkAudio/Classes/AkAmbientSound.uc delete mode 100755 Development/Src/AkAudio/Classes/AkComponent.uc delete mode 100755 Development/Src/AkAudio/Classes/InterpTrackAkEvent.uc delete mode 100755 Development/Src/AkAudio/Classes/InterpTrackAkRTPC.uc delete mode 100755 Development/Src/AkAudio/Classes/InterpTrackInstAkEvent.uc delete mode 100755 Development/Src/AkAudio/Classes/InterpTrackInstAkRTPC.uc delete mode 100755 Development/Src/AkAudio/Classes/SeqAct_AkClearBanks.uc delete mode 100755 Development/Src/AkAudio/Classes/SeqAct_AkLoadBank.uc delete mode 100755 Development/Src/AkAudio/Classes/SeqAct_AkPostEvent.uc delete mode 100755 Development/Src/AkAudio/Classes/SeqAct_AkPostTrigger.uc delete mode 100755 Development/Src/AkAudio/Classes/SeqAct_AkSetRTPCValue.uc delete mode 100755 Development/Src/AkAudio/Classes/SeqAct_AkSetState.uc delete mode 100755 Development/Src/AkAudio/Classes/SeqAct_AkSetSwitch.uc delete mode 100755 Development/Src/AkAudio/Classes/SeqAct_AkStartAmbientSound.uc delete mode 100755 Development/Src/AkAudio/Classes/SeqAct_AkStopAll.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComBrowserInteraction.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComBrowserManager.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComCheatManager.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComDataDogUploader.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComGameEngine.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComGameViewportClient.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComImageDownloader.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComInputLightingEffect.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComJsonHandler.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComMusicTheme.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComMusicThemeFactory.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComMusicThemePlayer.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComMusicThemeSyncActor.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComOpenBroadcaster.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComPerformanceCaptureBase.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComPerformanceCaptureGame.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComPerformanceCaptureNode.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComPictureInPicture.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComPictureInPictureScene.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComPlayerController.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComPlayerInput.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComPlayerProfile.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComPositionHistoryComponent.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComPositionHistoryServerComponent.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComRepInfo_Game.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComSeqAct_PlayMusicEvent.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComStructures.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComSupportCommands.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComUIManagerBase.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComUtilityFunctions.uc delete mode 100755 Development/Src/PlatformCommon/Classes/PComVideoPlayer.uc delete mode 100755 Development/Src/PlatformCommon/Classes/SearFiles.uc delete mode 100755 Development/Src/TempestMp/Classes/APlayerConfigData.uc delete mode 100755 Development/Src/TempestMp/Classes/AServerConfigData.uc delete mode 100755 Development/Src/TempestMp/Classes/ATempestLib.uc delete mode 100755 Development/Src/TempestMp/Classes/Maps.uc delete mode 100755 Development/Src/TempestMp/Classes/Onslaught.uc delete mode 100755 Development/Src/TempestMp/Classes/Payload.uc delete mode 100755 Development/Src/TempestMp/Classes/Siege.uc delete mode 100755 Development/Src/TempestMp/Classes/SiegeDEV.uc delete mode 100755 Development/Src/TempestMp/Classes/TDM.uc delete mode 100755 Development/Src/TempestMp/Classes/TempestMp.UPKG delete mode 100755 Development/Src/TempestMp/Classes/TempestSpectatorController.uc delete mode 100755 Development/Src/TempestMp/Classes/ttt.uc delete mode 100755 Development/Src/TgClient/Classes/TgClientHud.uc delete mode 100755 Development/Src/TgClient/Classes/TgGameHUD.uc delete mode 100755 Development/Src/TgClient/Classes/TgGameLaunch.uc delete mode 100755 Development/Src/TgClient/Classes/TgGameViewportClient.uc delete mode 100755 Development/Src/TgClient/Classes/TgGfxScene.uc delete mode 100755 Development/Src/TgClient/Classes/TgLobbyHUD.uc delete mode 100755 Development/Src/TgClient/Classes/TgSynchronizedTimer.uc delete mode 100755 Development/Src/TgGame/Classes/TgAIController.uc delete mode 100755 Development/Src/TgGame/Classes/TgAIController_Behavior.uc delete mode 100755 Development/Src/TgGame/Classes/TgAIController_BehaviorGod.uc delete mode 100755 Development/Src/TgGame/Classes/TgActorFactory.uc delete mode 100755 Development/Src/TgGame/Classes/TgBattleCheatManager.uc delete mode 100755 Development/Src/TgGame/Classes/TgBotFactory.uc delete mode 100755 Development/Src/TgGame/Classes/TgCameraShake.uc delete mode 100755 Development/Src/TgGame/Classes/TgChaosCapturePoint.uc delete mode 100755 Development/Src/TgGame/Classes/TgControlModule.uc delete mode 100755 Development/Src/TgGame/Classes/TgControlModule_Spectator.uc delete mode 100755 Development/Src/TgGame/Classes/TgCustomCharacterComponent.uc delete mode 100755 Development/Src/TgGame/Classes/TgDemoRecSpectator.uc delete mode 100755 Development/Src/TgGame/Classes/TgDemoRecSpectator_Debug.uc delete mode 100755 Development/Src/TgGame/Classes/TgDeploy_Illusion.uc delete mode 100755 Development/Src/TgGame/Classes/TgDeployable.uc delete mode 100755 Development/Src/TgGame/Classes/TgDevice.uc delete mode 100755 Development/Src/TgGame/Classes/TgDeviceFire.uc delete mode 100755 Development/Src/TgGame/Classes/TgDeviceVolume.uc delete mode 100755 Development/Src/TgGame/Classes/TgDevice_Mount.uc delete mode 100755 Development/Src/TgGame/Classes/TgDevice_Toggle.uc delete mode 100755 Development/Src/TgGame/Classes/TgGame.uc delete mode 100755 Development/Src/TgGame/Classes/TgGameEngine.uc delete mode 100755 Development/Src/TgGame/Classes/TgGame_Battle.uc delete mode 100755 Development/Src/TgGame/Classes/TgGame_Chaos.uc delete mode 100755 Development/Src/TgGame/Classes/TgGame_ChaosSiege.uc delete mode 100755 Development/Src/TgGame/Classes/TgGame_ChaosSiege_CaptureAndPayload.uc delete mode 100755 Development/Src/TgGame/Classes/TgGame_Mission.uc delete mode 100755 Development/Src/TgGame/Classes/TgGame_Paladins.uc delete mode 100755 Development/Src/TgGame/Classes/TgGame_PaladinsExtended.uc delete mode 100755 Development/Src/TgGame/Classes/TgGame_Paladins_Assault.uc delete mode 100755 Development/Src/TgGame/Classes/TgGame_Paladins_Onslaught.uc delete mode 100755 Development/Src/TgGame/Classes/TgGame_Paladins_Payload.uc delete mode 100755 Development/Src/TgGame/Classes/TgGame_Paladins_ShootingRange.uc delete mode 100755 Development/Src/TgGame/Classes/TgGame_Paladins_Siege.uc delete mode 100755 Development/Src/TgGame/Classes/TgGame_Paladins_Survival.uc delete mode 100755 Development/Src/TgGame/Classes/TgGame_Paladins_TeamDeathMatch.uc delete mode 100755 Development/Src/TgGame/Classes/TgHud.uc delete mode 100755 Development/Src/TgGame/Classes/TgInterface_YingIllusion.uc delete mode 100755 Development/Src/TgGame/Classes/TgInventoryManager.uc delete mode 100755 Development/Src/TgGame/Classes/TgInventoryObject.uc delete mode 100755 Development/Src/TgGame/Classes/TgInventoryObject_Device.uc delete mode 100755 Development/Src/TgGame/Classes/TgItemShopVolume.uc delete mode 100755 Development/Src/TgGame/Classes/TgObject.uc delete mode 100755 Development/Src/TgGame/Classes/TgObjective.uc delete mode 100755 Development/Src/TgGame/Classes/TgPaladinsController.uc delete mode 100755 Development/Src/TgGame/Classes/TgPawn.uc delete mode 100755 Development/Src/TgGame/Classes/TgPawn_Biped.uc delete mode 100755 Development/Src/TgGame/Classes/TgPawn_Character.uc delete mode 100755 Development/Src/TgGame/Classes/TgPawn_Illusion.uc delete mode 100755 Development/Src/TgGame/Classes/TgPawn_Pip.uc delete mode 100755 Development/Src/TgGame/Classes/TgPawn_Ying.uc delete mode 100755 Development/Src/TgGame/Classes/TgPlayerController.uc delete mode 100755 Development/Src/TgGame/Classes/TgProperty.uc delete mode 100755 Development/Src/TgGame/Classes/TgRepInfo_Game.uc delete mode 100755 Development/Src/TgGame/Classes/TgRepInfo_Player.uc delete mode 100755 Development/Src/TgGame/Classes/TgRepInfo_TaskForce.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_AIFreeze.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_AIMoveToActor.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_AIStartFireAt.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_AIStopFire.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_AITargetActor.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_AddAnimSets.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_BeaconEntranceSetActive.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_BeaconExitSetRespawn.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_BeginWaitForLookAt.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_ChangeScale.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_ClientLoadDevices.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_CloseHUDMenus.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_DefenseWaveSpawner.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_DespawnBots.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_DisplaySlamText.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_EndMission.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_FadeIn.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_FadeOut.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_FillUltimateEnergy.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_ForceClientTutorialAction.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_GetBot.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_GetCharClass.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_GetLocalPlayerController.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_GetMaterialInst.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_GetPlayerCount.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_GetTaskForceCount.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_GetTaskForceNumber.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_GetTeamIndex.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_GiveCredits.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_GiveFullVitals.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_HackBot.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_HideHUD.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_HideSilhouettes.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_JoinTeam.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_KillBots.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_KillCurrentSquad.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_Killpawns.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_LaunchHomeInstance.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_LogTutorialAction.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_MapOutroFinished.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_MarkSpawnReturn.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_NavIndicator.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_NextGamePhase.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_ParentAnimComponent.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_PauseSetupTimer.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_PingMinimap.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_PlayAnnouncement.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_PlayCameraAnim.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_PlayFullBodyAnim.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_ProgressTo.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_PushMatinee.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_RequestMission.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_ResetCooldowns.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_RespawnAllPlayers.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_RestartPlayers.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SelectBestSpawnPoint.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SendPlayerTrackingEvent.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetCreditGainBlock.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetCrowdControlImmune.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetEnergyGainBlock.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetHexState.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetInputEnabled.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetLobbyMeshSkin.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetMapLane.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetMissionTime.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetPlayerLevel.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetPlayerMesh.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetPlayerMeshVisible.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetSkelPosture.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetTaskforce.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetUIClock.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetUITextBox.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SetUltimateEnergy.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_ShowGameTip.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_ShowHUD.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_ShowLoadoutMenu.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_ShowSilhouettes.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_SpawnProjectile.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_TemporaryAddDevice.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_TemporaryRemoveDevice.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_TestResult.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_TgCameraShake.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_ToggleStaticMeshSilhouette.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_TrainingAwards.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_TriggerBots.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_TriggerInterpActor.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_TutorialHighlighter.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_TutorialInstruction.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_TutorialTips.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_UIAlert.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_UIElementVisibility.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqAct_UnpauseSetupTimer.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqCond_And.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqCond_CompareDamageType.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqCond_CompareDeviceId.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqCond_HasCondition.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqCond_IsHuman.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqCond_IsSecuring.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqCond_IsSpectating.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqCond_Or.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_AIRespawned.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_BotDied.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_BotSpawned.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_BurnCardPurchased.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadCapturePointVictory.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundBegin.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundEnd.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF1.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF2.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF1.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF2.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF1.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF2.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_ChaosGameEvent.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_ChaosObjectiveActive.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_ChaosObjectiveStatus.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_ClassSelected.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_ClientGameOver.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange_Server.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_ControlPointOwnershipPercent.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_CrowdEvent.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_DebugConsoleKismetTest.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_DeployableFired.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_DoorStatusChanged.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_EnergyUpdated.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_Escort_Despawn_Success.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_FactoryEmpty.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_FiringDevice.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF1Score.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF1Win.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF2Score.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF2Win.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_InputReceived.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_LevelFadedIn.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_LoadoutChanged.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_LobbyCameraSetActive.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_LobbyEvents.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayerDied.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayerRecalled.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayerScoredKill.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredPhoenixKill.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredTowerKill.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_LookAtReceived.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_MICParameterEvent.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_MissionTimeRemaining.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_MissionTimer.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_Named.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PayloadAttackersWin.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PayloadBeginTF1.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PayloadBeginTF2.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PayloadCP1Reached.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PayloadCP2Reached.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PayloadDefendersWin.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PayloadEndTF1.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PayloadEndTF2.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PayloadGameEvent.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PayloadMissionEvents.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PhaseNotify.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PlaceableDestroyed.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PlayIntro.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PlayOfTheGame.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PlayerCountHit.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PlayerInitialized.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_PlayerMoved.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_SetupTimeEnded.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_SiegePush.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateActivate.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Attackers.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Defenders.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_SpawnLanePusher.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_SpawnWise.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_SpectatorReady.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_SurvivalGameBegin.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_SurvivalGameEnd.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_SurvivalGameEvent.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_TF1Win.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_TF2Win.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_TakeDamage.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_TaskForceInactive.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_TaskForceScoreUpdated.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_TeamInactive.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_TicketCountUpdated.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_TimeLapse.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_Tutorial.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_TutorialEvent.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_UI_Event.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_UpdateLanePusherCount.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_Used.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqEvent_VaultLowHealth.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqOp_MathCalc.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqVar_DamageType.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqVar_Player.uc delete mode 100755 Development/Src/TgGame/Classes/TgSeqVar_RouteNumber.uc delete mode 100755 Development/Src/TgGame/Classes/TgSpectatorController.uc delete mode 100755 Development/Src/TgGame/Classes/TgStartPoint.uc delete mode 100755 Development/Src/TgGame/Classes/TgTeamPlayerStart.uc delete mode 100755 Development/Src/TgGame/Classes/TgTimerManager.uc delete mode 100755 Development/Src/TgGame/Classes/TgWeaponMeshActor.uc delete mode 100755 Development/Src/TgMod/Classes/TempestProxyActor.uc delete mode 100755 Development/Src/TgMod/Classes/TempestUtils.uc delete mode 100755 Development/Src/TgMod/Classes/TgModGameViewportClient.uc create mode 100644 Development/Src/UTEditor/Classes/UTEditor.uc diff --git a/Development/Src/AkAudio/Classes/ActorFactoryAkAmbientSound.uc b/Development/Src/AkAudio/Classes/ActorFactoryAkAmbientSound.uc deleted file mode 100755 index a21e1187..00000000 --- a/Development/Src/AkAudio/Classes/ActorFactoryAkAmbientSound.uc +++ /dev/null @@ -1,14 +0,0 @@ -class ActorFactoryAkAmbientSound extends ActorFactory - native - config(Editor) - editinlinenew - collapsecategories - hidecategories(Object,Object); - -var() AkEvent AmbientEvent; - -defaultproperties -{ - MenuName="Add AkAmbientSound" - NewActorClass=Class'AkAmbientSound' -} \ No newline at end of file diff --git a/Development/Src/AkAudio/Classes/AkAmbientSound.uc b/Development/Src/AkAudio/Classes/AkAmbientSound.uc deleted file mode 100755 index c953edb7..00000000 --- a/Development/Src/AkAudio/Classes/AkAmbientSound.uc +++ /dev/null @@ -1,20 +0,0 @@ -class AkAmbientSound extends Keypoint - native - hidecategories(Navigation); - -var bool bAutoPlay; -var() bool StopWhenOwnerIsDestroyed; -var private transient bool bIsPlaying; -var() AkEvent PlayEvent; - -// Export UAkAmbientSound::execStartPlayback(FFrame&, void* const) -native function StartPlayback(); - -// Export UAkAmbientSound::execStopPlayback(FFrame&, void* const) -native function StopPlayback(); - -defaultproperties -{ - bAutoPlay=true - StopWhenOwnerIsDestroyed=true -} \ No newline at end of file diff --git a/Development/Src/AkAudio/Classes/AkComponent.uc b/Development/Src/AkAudio/Classes/AkComponent.uc deleted file mode 100755 index f1ee97b4..00000000 --- a/Development/Src/AkAudio/Classes/AkComponent.uc +++ /dev/null @@ -1,10 +0,0 @@ -class AkComponent extends ActorComponent - native - editinlinenew - collapsecategories - hidecategories(Object,ActorComponent); - -var() name BoneName; -var AkEvent AutoPlayEvent; -var bool bStopWhenOwnerDestroyed; -var transient bool bRegisteredWithWwise; diff --git a/Development/Src/AkAudio/Classes/InterpTrackAkEvent.uc b/Development/Src/AkAudio/Classes/InterpTrackAkEvent.uc deleted file mode 100755 index e6bf172a..00000000 --- a/Development/Src/AkAudio/Classes/InterpTrackAkEvent.uc +++ /dev/null @@ -1,24 +0,0 @@ -class InterpTrackAkEvent extends InterpTrack - native - collapsecategories - hidecategories(Object); - -struct native AkEventTrackKey -{ - var float Time; - var() AkEvent Event; - - structdefaultproperties - { - Time=0.0000000 - Event=none - } -}; - -var array AkEvents; - -defaultproperties -{ - TrackInstClass=Class'AkAudio.InterpTrackInstAkEvent' - TrackTitle="AkEvent" -} \ No newline at end of file diff --git a/Development/Src/AkAudio/Classes/InterpTrackAkRTPC.uc b/Development/Src/AkAudio/Classes/InterpTrackAkRTPC.uc deleted file mode 100755 index caf77d7b..00000000 --- a/Development/Src/AkAudio/Classes/InterpTrackAkRTPC.uc +++ /dev/null @@ -1,12 +0,0 @@ -class InterpTrackAkRTPC extends InterpTrackFloatBase - native - collapsecategories - hidecategories(Object); - -var() string Param; - -defaultproperties -{ - TrackInstClass=Class'AkAudio.InterpTrackInstAkRTPC' - TrackTitle="AkRTPC" -} \ No newline at end of file diff --git a/Development/Src/AkAudio/Classes/InterpTrackInstAkEvent.uc b/Development/Src/AkAudio/Classes/InterpTrackInstAkEvent.uc deleted file mode 100755 index 979659f1..00000000 --- a/Development/Src/AkAudio/Classes/InterpTrackInstAkEvent.uc +++ /dev/null @@ -1,4 +0,0 @@ -class InterpTrackInstAkEvent extends InterpTrackInst - native; - -var float LastUpdatePosition; diff --git a/Development/Src/AkAudio/Classes/InterpTrackInstAkRTPC.uc b/Development/Src/AkAudio/Classes/InterpTrackInstAkRTPC.uc deleted file mode 100755 index df02287d..00000000 --- a/Development/Src/AkAudio/Classes/InterpTrackInstAkRTPC.uc +++ /dev/null @@ -1,2 +0,0 @@ -class InterpTrackInstAkRTPC extends InterpTrackInst - native; diff --git a/Development/Src/AkAudio/Classes/SeqAct_AkClearBanks.uc b/Development/Src/AkAudio/Classes/SeqAct_AkClearBanks.uc deleted file mode 100755 index 44180e2d..00000000 --- a/Development/Src/AkAudio/Classes/SeqAct_AkClearBanks.uc +++ /dev/null @@ -1,12 +0,0 @@ -class SeqAct_AkClearBanks extends SequenceAction - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - InputLinks(0)=(LinkDesc="ClearBanks",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - //VariableLinks=none - ObjName="AkClearBanks" - ObjCategory="Wwise" -} \ No newline at end of file diff --git a/Development/Src/AkAudio/Classes/SeqAct_AkLoadBank.uc b/Development/Src/AkAudio/Classes/SeqAct_AkLoadBank.uc deleted file mode 100755 index 1e81f2b0..00000000 --- a/Development/Src/AkAudio/Classes/SeqAct_AkLoadBank.uc +++ /dev/null @@ -1,20 +0,0 @@ -class SeqAct_AkLoadBank extends SeqAct_Latent - native - forcescriptorder(true) - hidecategories(Object); - -var() bool Async; -var transient bool bWaitingCallback; -var() AkBank Bank; -var transient int Signal; - -defaultproperties -{ - Async=true - InputLinks(0)=(LinkDesc="Load",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(1)=(LinkDesc="Unload",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - OutputLinks(0)=(LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - //VariableLinks=none - ObjName="AkLoadBank" - ObjCategory="Wwise" -} \ No newline at end of file diff --git a/Development/Src/AkAudio/Classes/SeqAct_AkPostEvent.uc b/Development/Src/AkAudio/Classes/SeqAct_AkPostEvent.uc deleted file mode 100755 index c8df37d5..00000000 --- a/Development/Src/AkAudio/Classes/SeqAct_AkPostEvent.uc +++ /dev/null @@ -1,15 +0,0 @@ -class SeqAct_AkPostEvent extends SeqAct_Latent - native - forcescriptorder(true) - hidecategories(Object); - -var transient int Signal; -var() AkEvent Event; - -defaultproperties -{ - InputLinks(0)=(LinkDesc="Post",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - OutputLinks(0)=(LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="AkPostEvent" - ObjCategory="Wwise" -} \ No newline at end of file diff --git a/Development/Src/AkAudio/Classes/SeqAct_AkPostTrigger.uc b/Development/Src/AkAudio/Classes/SeqAct_AkPostTrigger.uc deleted file mode 100755 index 4962e13b..00000000 --- a/Development/Src/AkAudio/Classes/SeqAct_AkPostTrigger.uc +++ /dev/null @@ -1,13 +0,0 @@ -class SeqAct_AkPostTrigger extends SequenceAction - native - forcescriptorder(true) - hidecategories(Object); - -var() string Trigger; - -defaultproperties -{ - InputLinks(0)=(LinkDesc="Post",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="AkPostTrigger" - ObjCategory="Wwise" -} \ No newline at end of file diff --git a/Development/Src/AkAudio/Classes/SeqAct_AkSetRTPCValue.uc b/Development/Src/AkAudio/Classes/SeqAct_AkSetRTPCValue.uc deleted file mode 100755 index 7b7c5e10..00000000 --- a/Development/Src/AkAudio/Classes/SeqAct_AkSetRTPCValue.uc +++ /dev/null @@ -1,19 +0,0 @@ -class SeqAct_AkSetRTPCValue extends SeqAct_Latent - native - forcescriptorder(true) - hidecategories(Object); - -var() string Param; -var() float Value; -var transient bool Running; - -defaultproperties -{ - InputLinks(0)=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(1)=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - OutputLinks(0)=(LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Value",LinkVar="None",PropertyName="Value",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="AkSetRTPCValue" - ObjCategory="Wwise" -} \ No newline at end of file diff --git a/Development/Src/AkAudio/Classes/SeqAct_AkSetState.uc b/Development/Src/AkAudio/Classes/SeqAct_AkSetState.uc deleted file mode 100755 index 6167afd2..00000000 --- a/Development/Src/AkAudio/Classes/SeqAct_AkSetState.uc +++ /dev/null @@ -1,15 +0,0 @@ -class SeqAct_AkSetState extends SequenceAction - native - forcescriptorder(true) - hidecategories(Object); - -var() string StateGroup; -var() string State; - -defaultproperties -{ - InputLinks(0)=(LinkDesc="Set",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - //VariableLinks=none - ObjName="AkSetState" - ObjCategory="Wwise" -} \ No newline at end of file diff --git a/Development/Src/AkAudio/Classes/SeqAct_AkSetSwitch.uc b/Development/Src/AkAudio/Classes/SeqAct_AkSetSwitch.uc deleted file mode 100755 index 4d11c729..00000000 --- a/Development/Src/AkAudio/Classes/SeqAct_AkSetSwitch.uc +++ /dev/null @@ -1,14 +0,0 @@ -class SeqAct_AkSetSwitch extends SequenceAction - native - forcescriptorder(true) - hidecategories(Object); - -var() string SwitchGroup; -var() string Switch; - -defaultproperties -{ - InputLinks(0)=(LinkDesc="Set",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="AkSetSwitch" - ObjCategory="Wwise" -} \ No newline at end of file diff --git a/Development/Src/AkAudio/Classes/SeqAct_AkStartAmbientSound.uc b/Development/Src/AkAudio/Classes/SeqAct_AkStartAmbientSound.uc deleted file mode 100755 index 2a86a98f..00000000 --- a/Development/Src/AkAudio/Classes/SeqAct_AkStartAmbientSound.uc +++ /dev/null @@ -1,14 +0,0 @@ -class SeqAct_AkStartAmbientSound extends SequenceAction - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - InputLinks(0)=(LinkDesc="Start All",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(1)=(LinkDesc="Stop All",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(2)=(LinkDesc="Start Target(s)",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(3)=(LinkDesc="Stop Targets(s)",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="AkStartAmbientSound" - ObjCategory="Wwise" -} \ No newline at end of file diff --git a/Development/Src/AkAudio/Classes/SeqAct_AkStopAll.uc b/Development/Src/AkAudio/Classes/SeqAct_AkStopAll.uc deleted file mode 100755 index 218ceb5b..00000000 --- a/Development/Src/AkAudio/Classes/SeqAct_AkStopAll.uc +++ /dev/null @@ -1,12 +0,0 @@ -class SeqAct_AkStopAll extends SequenceAction - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - InputLinks(0)=(LinkDesc="StopAll",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - //VariableLinks=none - ObjName="AkStopAll" - ObjCategory="Wwise" -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComBrowserInteraction.uc b/Development/Src/PlatformCommon/Classes/PComBrowserInteraction.uc deleted file mode 100755 index 416b29c9..00000000 --- a/Development/Src/PlatformCommon/Classes/PComBrowserInteraction.uc +++ /dev/null @@ -1,7 +0,0 @@ -class PComBrowserInteraction extends Interaction - transient - native - config(Engine) - hidecategories(Object,UIRoot); - -var private native const noexport Pointer VfTable_FCallbackEventDevice; diff --git a/Development/Src/PlatformCommon/Classes/PComBrowserManager.uc b/Development/Src/PlatformCommon/Classes/PComBrowserManager.uc deleted file mode 100755 index 19bdfe31..00000000 --- a/Development/Src/PlatformCommon/Classes/PComBrowserManager.uc +++ /dev/null @@ -1,7 +0,0 @@ -class PComBrowserManager extends Object - native; - -const BROWSER_SURFACE_ID = 1; - -// Export UPComBrowserManager::execOpenURL(FFrame&, void* const) -native function OpenURL(string URL, optional bool bShowNavButtons = true, optional bool bSetFocus = false); diff --git a/Development/Src/PlatformCommon/Classes/PComCheatManager.uc b/Development/Src/PlatformCommon/Classes/PComCheatManager.uc deleted file mode 100755 index f321c8a6..00000000 --- a/Development/Src/PlatformCommon/Classes/PComCheatManager.uc +++ /dev/null @@ -1,3 +0,0 @@ -class PComCheatManager extends GameCheatManager within GamePlayerController - native - config(Game); diff --git a/Development/Src/PlatformCommon/Classes/PComDataDogUploader.uc b/Development/Src/PlatformCommon/Classes/PComDataDogUploader.uc deleted file mode 100755 index 22f5082c..00000000 --- a/Development/Src/PlatformCommon/Classes/PComDataDogUploader.uc +++ /dev/null @@ -1,65 +0,0 @@ -class PComDataDogUploader extends Object - native; - -enum METRIC_TYPE -{ - DD_COUNT, - DD_GAUGE, - DD_RATE -}; - -struct native DataDogMetricsConfig -{ - var init string DD_API_TOKEN; - var init string serverLink; - var init string URL; - var init string hostnameTag; - var init string baseSeriesName; - var int sendIntervalSeconds; - var int writeIntervalTicks; - var init array tags; - - structdefaultproperties - { - DD_API_TOKEN="" - serverLink="" - URL="" - hostnameTag="" - baseSeriesName="" - sendIntervalSeconds=0 - writeIntervalTicks=0 - tags=() - } -}; - -struct native MetricPoint -{ - var QWord unixUTCTimestamp; - var float Value; - - structdefaultproperties - { - unixUTCTimestamp=() - Value=0.0000000 - } -}; - -struct native Metric -{ - var PComDataDogUploader.METRIC_TYPE Type; - var init array Points; - - structdefaultproperties - { - Type=DD_COUNT - Points=() - } -}; - -var private native const noexport Pointer VfTable_FTickableObject; -var float m_NextUpdateInSeconds; -var int m_nNextWrite; -var string m_fsBaseSeriesName; -var DataDogMetricsConfig m_Config; -var init native map{VOID,VOID} m_Metrics; -var Pointer DDUploadSyncObject; diff --git a/Development/Src/PlatformCommon/Classes/PComGameEngine.uc b/Development/Src/PlatformCommon/Classes/PComGameEngine.uc deleted file mode 100755 index ab33b5c4..00000000 --- a/Development/Src/PlatformCommon/Classes/PComGameEngine.uc +++ /dev/null @@ -1,33 +0,0 @@ -class PComGameEngine extends GameEngine - transient - native - config(Engine); - -var native const Pointer pOutgoingMarshal; - -// Export UPComGameEngine::execSetFunction(FFrame&, void* const) -native function bool SetFunction(int nFunction); - -// Export UPComGameEngine::execSetFieldInt(FFrame&, void* const) -native function bool SetFieldInt(int nToken, int IntValue); - -// Export UPComGameEngine::execSetFieldFloat(FFrame&, void* const) -native function bool SetFieldFloat(int nToken, float FloatValue); - -// Export UPComGameEngine::execSetFieldString(FFrame&, void* const) -native function bool SetFieldString(int nToken, string StrValue); - -// Export UPComGameEngine::execClearMarshal(FFrame&, void* const) -native function ClearMarshal(); - -// Export UPComGameEngine::execSendMarshal(FFrame&, void* const) -native function SendMarshal(UniqueNetId qwPlayerId, bool bLowPriority); - -// Export UPComGameEngine::execSendMarshalAll(FFrame&, void* const) -native function SendMarshalAll(bool bLowPriority); - -// Export UPComGameEngine::execSendCtrlRequest(FFrame&, void* const) -native function SendCtrlRequest(string fsRequest); - -// Export UPComGameEngine::execSendGameRequest(FFrame&, void* const) -native function SendGameRequest(string fsRequest); diff --git a/Development/Src/PlatformCommon/Classes/PComGameViewportClient.uc b/Development/Src/PlatformCommon/Classes/PComGameViewportClient.uc deleted file mode 100755 index 85805e30..00000000 --- a/Development/Src/PlatformCommon/Classes/PComGameViewportClient.uc +++ /dev/null @@ -1,51 +0,0 @@ -class PComGameViewportClient extends GameViewportClient within Engine - transient - native - config(Engine); - -var transient PComOpenBroadcaster OpenBroadcaster; -var transient PComInputLightingEffect InputLightingEffect; -var config bool bUseDynamicResolutionScaler; -var native transient Pointer DynamicResolutionScaler; - -// Export UPComGameViewportClient::execInitDynamicResolutionScaler(FFrame&, void* const) -native final function InitDynamicResolutionScaler(); - -// Export UPComGameViewportClient::execGetCurrentGameSettingsVersion(FFrame&, void* const) -native function int GetCurrentGameSettingsVersion(); - -// Export UPComGameViewportClient::execHandleGameSettingsMigration(FFrame&, void* const) -native function HandleGameSettingsMigration(int OldGameSettingsVersion); - -// Export UPComGameViewportClient::execCheckGameSettingsVersion(FFrame&, void* const) -native final function CheckGameSettingsVersion(); - -exec function SetRTMPSettings(bool bAllowWebcam, bool bAllowMicrophone, bool bAllowDesktopAudio) -{ - //return; -} - -exec function StartRTMPStreaming(string InServer, string InKey) -{ - //return; -} - -exec function StopRTMPStreaming() -{ - //return; -} - -exec function StartFacebookStreaming() -{ - //return; -} - -event bool Init(out string OutError) -{ - CheckGameSettingsVersion(); - OpenBroadcaster = new (self) Class'PComOpenBroadcaster'; - InputLightingEffect = new (self) Class'PComInputLightingEffect'; - InitDynamicResolutionScaler(); - return super.Init(OutError); - //return ReturnValue; -} diff --git a/Development/Src/PlatformCommon/Classes/PComImageDownloader.uc b/Development/Src/PlatformCommon/Classes/PComImageDownloader.uc deleted file mode 100755 index 89774c86..00000000 --- a/Development/Src/PlatformCommon/Classes/PComImageDownloader.uc +++ /dev/null @@ -1,45 +0,0 @@ -class PComImageDownloader extends Object - native; - -const MAX_SIMULTANEOUS_DOWNLOADS = 8; -const TIME_OUT = 30.f; - -enum EPComImageDownloadState -{ - TIDS_NotStarted, - TIDS_Downloading, - TIDS_Succeeded, - TIDS_Failed -}; - -struct native PComImageDownload -{ - var init string URL; - var init string FilePath; - var private native const Pointer HttpDownloader; - var OnlineImageDownloaderWeb.EOnlineImageDownloadState State; - var init array Data; - var bool bPendingRemoval; - - structdefaultproperties - { - URL="" - FilePath="" - State=PIDS_NotStarted - Data=() - bPendingRemoval=false - } -}; - -var init array DownloadImages; -//var delegate __OnPComImageDownloaded__Delegate; - -delegate OnPComImageDownloaded(PComImageDownload CachedEntry) -{ - //return; -} - -function SetPComImageDownloadedDelegate(delegate PComImageDownloadedDelegate) -{ - //return; -} diff --git a/Development/Src/PlatformCommon/Classes/PComInputLightingEffect.uc b/Development/Src/PlatformCommon/Classes/PComInputLightingEffect.uc deleted file mode 100755 index d02be067..00000000 --- a/Development/Src/PlatformCommon/Classes/PComInputLightingEffect.uc +++ /dev/null @@ -1,71 +0,0 @@ -class PComInputLightingEffect extends Object - native - config(Game); - -struct native PComInputLightingPreset -{ - var() name PresetName; - var() InterpCurveLinearColor Curve; - var() LinearColor ColorTint; - var() int LoopCount; - var() float PlaybackRate; - var() float BlendInTime; - var() int Priority; - - structdefaultproperties - { - PresetName="None" - Curve=(Points=(),InterpMethod=IMT_UseFixedTangentEvalAndNewAutoTangents) - ColorTint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000) - LoopCount=0 - PlaybackRate=1.0000000 - BlendInTime=0.0000000 - Priority=0 - } -}; - -struct native PComActiveInputLightingPreset -{ - var int LoopCount; - var float CurrentTime; - var float PlaybackRate; - - structdefaultproperties - { - LoopCount=0 - CurrentTime=0.0000000 - PlaybackRate=0.0000000 - } -}; - -var config bool bAllowLogitechSdk; -var transient bool bLogitechSdkInitialized; -var transient bool bLatchedSystemSettingsSdkAllowed; -var config array Presets; -var native transient Map_Mirror PresetsMap; -var transient array ActivePresets; -var transient LinearColor BlendFromColor; -var transient float BlendPercent; - -// Export UPComInputLightingEffect::execTryEnableSystem(FFrame&, void* const) -native function TryEnableSystem(); - -// Export UPComInputLightingEffect::execDisableSystem(FFrame&, void* const) -native function DisableSystem(); - -// Export UPComInputLightingEffect::execPlayPreset(FFrame&, void* const) -native function PlayPreset(name InPresetName, optional bool bUseOverrideStartTime = false, optional float OverrideStartTime = 0.0000000); - -// Export UPComInputLightingEffect::execStopPreset(FFrame&, void* const) -native function StopPreset(name InPresetName); - -// Export UPComInputLightingEffect::execSetCurrentTime(FFrame&, void* const) -native function SetCurrentTime(name InPresetName, float CurrentTime); - -// Export UPComInputLightingEffect::execIsLogitechSdkVersionValid(FFrame&, void* const) -native function bool IsLogitechSdkVersionValid(); - -defaultproperties -{ - BlendFromColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComJsonHandler.uc b/Development/Src/PlatformCommon/Classes/PComJsonHandler.uc deleted file mode 100755 index 97f67995..00000000 --- a/Development/Src/PlatformCommon/Classes/PComJsonHandler.uc +++ /dev/null @@ -1,14 +0,0 @@ -class PComJsonHandler extends Object - native; - -var PComImageDownloader m_pImageDownloader; -var native Pointer m_pCallbackObject; -var init string m_strUrl; -var init string m_strDownloadDir; -var init string m_strLocalDir; -var init string m_strJson; -var init string m_strName; -var native const Pointer m_pHttp; - -// Export UPComJsonHandler::execOnImageDownloaded(FFrame&, void* const) -native function OnImageDownloaded(PComImageDownload CachedEntry); diff --git a/Development/Src/PlatformCommon/Classes/PComMusicTheme.uc b/Development/Src/PlatformCommon/Classes/PComMusicTheme.uc deleted file mode 100755 index de9db238..00000000 --- a/Development/Src/PlatformCommon/Classes/PComMusicTheme.uc +++ /dev/null @@ -1,25 +0,0 @@ -class PComMusicTheme extends Object - native(Audio) - hidecategories(Object); - -struct native MusicEvent -{ - var() name EventName; - var() MusicTrackStruct EventTrack; - var() float EventDuration; - - structdefaultproperties - { - EventName="None" - EventTrack=(TheSoundCue=none,bAutoPlay=false,bPersistentAcrossLevels=false,FadeInTime=5.0000000,FadeInVolumeLevel=1.0000000,FadeOutTime=5.0000000,FadeOutVolumeLevel=0.0000000,MP3Filename="") - EventDuration=0.0000000 - } -}; - -var() MusicTrackStruct DefaultTrack; -var() array MusicEvents; - -defaultproperties -{ - DefaultTrack=(TheSoundCue=none,bAutoPlay=false,bPersistentAcrossLevels=false,FadeInTime=5.0000000,FadeInVolumeLevel=1.0000000,FadeOutTime=5.0000000,FadeOutVolumeLevel=0.0000000,MP3Filename="") -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComMusicThemeFactory.uc b/Development/Src/PlatformCommon/Classes/PComMusicThemeFactory.uc deleted file mode 100755 index 0d729542..00000000 --- a/Development/Src/PlatformCommon/Classes/PComMusicThemeFactory.uc +++ /dev/null @@ -1,11 +0,0 @@ -class PComMusicThemeFactory extends Factory - transient - native(Audio); - -defaultproperties -{ - SupportedClass=Class'PComMusicTheme' - Description="Music Theme" - bCreateNew=true - bEditAfterNew=true -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComMusicThemePlayer.uc b/Development/Src/PlatformCommon/Classes/PComMusicThemePlayer.uc deleted file mode 100755 index c70afb15..00000000 --- a/Development/Src/PlatformCommon/Classes/PComMusicThemePlayer.uc +++ /dev/null @@ -1,47 +0,0 @@ -class PComMusicThemePlayer extends Object - native(Audio); - -var private native const noexport Pointer VfTable_FTickableObject; -var transient string MusicThemePath; -var transient PComMusicTheme MusicTheme; -var export editinline transient AudioComponent MusicComp; -var PComMusicThemeSyncActor MusicSyncActor; -var transient name LastMusicEvent; -var transient MusicTrackStruct CurrentMusicTrack; -var transient float CurrentMusicTrackStartTime; -var transient float CurrentMusicTrackDuration; - -// Export UPComMusicThemePlayer::execInit(FFrame&, void* const) -native function Init(); - -// Export UPComMusicThemePlayer::execLoadDefaultTheme(FFrame&, void* const) -native function LoadDefaultTheme(); - -// Export UPComMusicThemePlayer::execGetDefaultThemePath(FFrame&, void* const) -native function string GetDefaultThemePath(); - -// Export UPComMusicThemePlayer::execLoadTheme(FFrame&, void* const) -native function LoadTheme(const string themepath); - -// Export UPComMusicThemePlayer::execOnThemeLoaded(FFrame&, void* const) -native function OnThemeLoaded(); - -// Export UPComMusicThemePlayer::execPlayDefaultMusic(FFrame&, void* const) -native function PlayDefaultMusic(); - -// Export UPComMusicThemePlayer::execPlayMusicEvent(FFrame&, void* const) -native function PlayMusicEvent(const name EventName); - -// Export UPComMusicThemePlayer::execStopMusic(FFrame&, void* const) -native function StopMusic(); - -// Export UPComMusicThemePlayer::execUpdateMusicTrack(FFrame&, void* const) -native function UpdateMusicTrack(const MusicTrackStruct NewMusicTrack, const optional float fDuration = 0.0000000); - -// Export UPComMusicThemePlayer::execUpdateReplicatedMusicEvent(FFrame&, void* const) -native function UpdateReplicatedMusicEvent(const name EventName); - -defaultproperties -{ - CurrentMusicTrack=(TheSoundCue=none,bAutoPlay=false,bPersistentAcrossLevels=false,FadeInTime=5.0000000,FadeInVolumeLevel=1.0000000,FadeOutTime=5.0000000,FadeOutVolumeLevel=0.0000000,MP3Filename="") -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComMusicThemeSyncActor.uc b/Development/Src/PlatformCommon/Classes/PComMusicThemeSyncActor.uc deleted file mode 100755 index eedfac6b..00000000 --- a/Development/Src/PlatformCommon/Classes/PComMusicThemeSyncActor.uc +++ /dev/null @@ -1,36 +0,0 @@ -class PComMusicThemeSyncActor extends Actor - native(Audio) - notplaceable - hidecategories(Navigation); - -var repnotify name m_ReplicatedMusicEvent; - -replication -{ - // Pos:0x000 - if(Role == ROLE_Authority) - m_ReplicatedMusicEvent; -} - -// Export UPComMusicThemeSyncActor::execUpdateMusicEvent(FFrame&, void* const) -native function UpdateMusicEvent(name EventName); - -// Export UPComMusicThemeSyncActor::execUpdateMusicEventClient(FFrame&, void* const) -native function UpdateMusicEventClient(name EventName); - -simulated event ReplicatedEvent(name VarName) -{ - //return; -} - -defaultproperties -{ - RemoteRole=ROLE_SimulatedProxy - //bServerTickIsDisabled=true - bAlwaysRelevant=true - bReplicateMovement=false - bSkipActorPropertyReplication=true - bOnlyDirtyReplication=true - NetUpdateFrequency=1.0000000 - NetPriority=2.7000000 -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComOpenBroadcaster.uc b/Development/Src/PlatformCommon/Classes/PComOpenBroadcaster.uc deleted file mode 100755 index 0cb10f45..00000000 --- a/Development/Src/PlatformCommon/Classes/PComOpenBroadcaster.uc +++ /dev/null @@ -1,98 +0,0 @@ -class PComOpenBroadcaster extends Object - native - config(Game); - -enum EPComOpenBroadcasterState -{ - POBS_Idle, - POBS_WaitingForFacebookWebBrowserLoaded, - POBS_WaitingForFacebookNewPublishFlow, - POBS_FacebookNewPublishError, - POBS_WaitingForFacebookLogin, - POBS_WaitingForFacebookPublish, - POBS_FacebookPublishFinished, - POBS_Streaming, - POBS_Quitting -}; - -struct native PComOpenBroadcasterSettings -{ - var() bool bAllowWebcam; - var() bool bAllowMicrophone; - var() bool bAllowDesktopAudio; - - structdefaultproperties - { - bAllowWebcam=false - bAllowMicrophone=false - bAllowDesktopAudio=true - } -}; - -var private native const noexport Pointer VfTable_FCallbackEventDevice; -var config string FacebookAppId; -var config string FacebookApprovedDomain; -var config string FacebookLiveUrl; -var transient PComOpenBroadcaster.EPComOpenBroadcasterState CurrentState; -var transient PComOpenBroadcasterSettings CurrentSettings; -var transient Pointer StreamerProcessHandle; -var delegate __PreloadWebBrowser__Delegate; -var delegate __IsWebBrowserLoaded__Delegate; -var delegate __OpenWebBrowser__Delegate; -var delegate __CloseWebBrowser__Delegate; - -delegate PreloadWebBrowser() -{ - //return; -} - -delegate bool IsWebBrowserLoaded() -{ - //return ReturnValue; -} - -delegate OpenWebBrowser(string URL) -{ - //return; -} - -delegate CloseWebBrowser() -{ - //return; -} - -// Export UPComOpenBroadcaster::execIsStreaming(FFrame&, void* const) -native function bool IsStreaming(); - -// Export UPComOpenBroadcaster::execSetStreamSettings(FFrame&, void* const) -native function SetStreamSettings(const out PComOpenBroadcasterSettings InSettings); - -// Export UPComOpenBroadcaster::execQueueFacebookStreaming(FFrame&, void* const) -native function QueueFacebookStreaming(); - -// Export UPComOpenBroadcaster::execStartFacebookStreaming(FFrame&, void* const) -native function StartFacebookStreaming(); - -// Export UPComOpenBroadcaster::execStartRTMPStreaming(FFrame&, void* const) -native function StartRTMPStreaming(string InServer, string InKey); - -// Export UPComOpenBroadcaster::execStopStreaming(FFrame&, void* const) -native function StopStreaming(); - -// Export UPComOpenBroadcaster::execForceStopStreaming(FFrame&, void* const) -native function ForceStopStreaming(); - -// Export UPComOpenBroadcaster::execTick(FFrame&, void* const) -native final function Tick(); - -simulated event WebRequest DecodeFacebookRTMPUrl(string InRequest) -{ - //return ReturnValue; -} - -defaultproperties -{ - // FacebookAppId="958422817557131" - // FacebookApprovedDomain="www.smitegame.com" - // CurrentSettings=(bAllowWebcam=false,bAllowMicrophone=false,bAllowDesktopAudio=true) -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComPerformanceCaptureBase.uc b/Development/Src/PlatformCommon/Classes/PComPerformanceCaptureBase.uc deleted file mode 100755 index 90c0ba3d..00000000 --- a/Development/Src/PlatformCommon/Classes/PComPerformanceCaptureBase.uc +++ /dev/null @@ -1,167 +0,0 @@ -class PComPerformanceCaptureBase extends Object - native - config(Game); - -enum EPComPerformanceCaptureState -{ - PPCS_WaitingToStart, - PPCS_MoveToNode, - PPCS_StartBasicStats, - PPCS_StopBasicStats, - PPCS_StartCycleStats, - PPCS_StopCycleStats, - PPCS_SaveAndExit, - PPCS_LoadCharacters, - PPCS_LoadCharactersOnly, - PPCS_DestroyPawns -}; - -struct native PComPerformanceCaptureProfile -{ - var() name ProfileName; - var() int ScalabilityBucket; - var() int ResolutionX; - var() int ResolutionY; - var() int VsyncInterval; - var() bool bFullScreen; - - structdefaultproperties - { - ProfileName="Default" - ScalabilityBucket=5 - ResolutionX=1920 - ResolutionY=1080 - VsyncInterval=0 - bFullScreen=false - } -}; - -struct native PComPerformanceCaptureStat -{ - var name StatName; - var Double StatValue; - - structdefaultproperties - { - StatName="None" - StatValue=() - } -}; - -struct native PComPerformanceCaptureStatsPerNode -{ - var Actor Node; - var array Stats; - - structdefaultproperties - { - Node=none - Stats=() - } -}; - -struct native PComPerformanceCaptureStatsPerSkin -{ - var string CharacterName; - var string SkinName; - var string SkeletalMeshPathName; - var string SkeletalMeshPathNameHead; - var string SkeletalMeshPathNameBody; - var string SkeletalMeshPathNameWeapon; - var array Stats; - - structdefaultproperties - { - CharacterName="" - SkinName="" - SkeletalMeshPathName="" - SkeletalMeshPathNameHead="" - SkeletalMeshPathNameBody="" - SkeletalMeshPathNameWeapon="" - Stats=() - } -}; - -var config array StatsToCollect; -var native transient Array_Mirror StatIds; -var transient array StatTypes; -var config float FOV; -var config array Profiles; -var config PComPerformanceCaptureProfile FallbackProfile; -var transient PComPerformanceCaptureProfile ActiveProfile; - -// Export UPComPerformanceCaptureBase::execInitializePerformanceCaptureSettings(FFrame&, void* const) -native final function InitializePerformanceCaptureSettings(); - -// Export UPComPerformanceCaptureBase::execMoveCamera(FFrame&, void* const) -native final function MoveCamera(PlayerController PlayerController, Actor Node); - -// Export UPComPerformanceCaptureBase::execEnableNonCycleStats(FFrame&, void* const) -native final function EnableNonCycleStats(); - -// Export UPComPerformanceCaptureBase::execEnableStatNotify(FFrame&, void* const) -native final function EnableStatNotify(); - -// Export UPComPerformanceCaptureBase::execGetPerformanceData(FFrame&, void* const) -native final function GetPerformanceData(out array PerfStats); - -// Export UPComPerformanceCaptureBase::execStopCycleStats(FFrame&, void* const) -native final function StopCycleStats(out array PerfStats); - -// Export UPComPerformanceCaptureBase::execGetMapNameAndTime(FFrame&, void* const) -native final function GetMapNameAndTime(out string MapNameStr, out string FormattedDate, out string FormattedTime); - -// Export UPComPerformanceCaptureBase::execGetStatsToCollect(FFrame&, void* const) -native final function GetStatsToCollect(out string FileContents); - -// Export UPComPerformanceCaptureBase::execGetPerfStats(FFrame&, void* const) -native final function GetPerfStats(const array PerfStats, out string FileContents); - -// Export UPComPerformanceCaptureBase::execCreateFileAndExit(FFrame&, void* const) -native final function CreateFileAndExit(string FileNameWithExtension, string FileContents, string SubfolderName); - -defaultproperties -{ - // StatsToCollect(0)="STAT_MeshDrawCalls" - // StatsToCollect(1)="STAT_StaticDrawListMeshDrawCalls" - // StatsToCollect(2)="STAT_InitViewsTime" - // StatsToCollect(3)="STAT_TotalSceneRenderingTime" - // StatsToCollect(4)="STAT_VirtualAllocSize" - // StatsToCollect(5)="STAT_StaticMeshTotalMemory" - // StatsToCollect(6)="STAT_StaticMeshVertexMemory" - // StatsToCollect(7)="STAT_StaticMeshIndexMemory" - // StatsToCollect(8)="STAT_AnimationMemory" - // StatsToCollect(9)="STAT_PixelShaderMemory" - // StatsToCollect(10)="STAT_VertexShaderMemory" - // StatsToCollect(11)="STAT_VertexLightingAndShadowingMemory" - // StatsToCollect(12)="STAT_TextureMemory" - // StatsToCollect(13)="STAT_TextureLightmapMemory" - // StatsToCollect(14)="STAT_DepthDrawTime" - // StatsToCollect(15)="STAT_BasePassDrawTime" - // StatsToCollect(16)="STAT_TranslucencyDrawTime" - // StatsToCollect(17)="STAT_ProjectedShadowDrawTime" - // StatsToCollect(18)="STAT_GameEngineTick" - // StatsToCollect(19)="STAT_TickTime" - // StatsToCollect(20)="STAT_ParticleManagerUpdateData" - // StatsToCollect(21)="STAT_UnrealScriptTime" - // StatsToCollect(22)="STAT_KismetTime" - // StatsToCollect(23)="STAT_RedrawViewports" - // StatsToCollect(24)="STAT_AudioMemory" - // StatsToCollect(25)="STAT_SkeletalMeshVertexMemory" - // StatsToCollect(26)="STAT_SkeletalMeshIndexMemory" - // StatsToCollect(27)="STAT_ProcessedPrimitives" - // StatsToCollect(28)="STAT_DynamicPathMeshDrawCalls" - // FOV=100.0000000 - // Profiles(0)=(ProfileName="Min0",ScalabilityBucket=1,ResolutionX=1366,ResolutionY=768,VsyncInterval=0,bFullScreen=false) - // Profiles(1)=(ProfileName="Min1",ScalabilityBucket=1,ResolutionX=1366,ResolutionY=768,VsyncInterval=0,bFullScreen=false) - // Profiles(2)=(ProfileName="Med2",ScalabilityBucket=3,ResolutionX=1600,ResolutionY=900,VsyncInterval=0,bFullScreen=false) - // Profiles(3)=(ProfileName="Med3",ScalabilityBucket=3,ResolutionX=1600,ResolutionY=900,VsyncInterval=0,bFullScreen=false) - // Profiles(4)=(ProfileName="Med4",ScalabilityBucket=3,ResolutionX=1600,ResolutionY=900,VsyncInterval=0,bFullScreen=false) - // Profiles(5)=(ProfileName="Max5",ScalabilityBucket=5,ResolutionX=1920,ResolutionY=1080,VsyncInterval=0,bFullScreen=false) - // Profiles(6)=(ProfileName="Max6",ScalabilityBucket=5,ResolutionX=1920,ResolutionY=1200,VsyncInterval=0,bFullScreen=false) - // Profiles(7)=(ProfileName="Console",ScalabilityBucket=5,ResolutionX=1920,ResolutionY=1080,VsyncInterval=0,bFullScreen=false) - // Profiles(8)=(ProfileName="XBox",ScalabilityBucket=5,ResolutionX=1920,ResolutionY=1080,VsyncInterval=0,bFullScreen=false) - // Profiles(9)=(ProfileName="Switch",ScalabilityBucket=5,ResolutionX=1920,ResolutionY=1080,VsyncInterval=0,bFullScreen=false) - //FallbackProfile=(ProfileName="Default",ScalabilityBucket=5,ResolutionX=1920,ResolutionY=1080,VsyncInterval=0,bFullScreen=false) - ActiveProfile=(ProfileName="Default",ScalabilityBucket=5,ResolutionX=1920,ResolutionY=1080,VsyncInterval=0,bFullScreen=false) -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComPerformanceCaptureGame.uc b/Development/Src/PlatformCommon/Classes/PComPerformanceCaptureGame.uc deleted file mode 100755 index ff36a3fb..00000000 --- a/Development/Src/PlatformCommon/Classes/PComPerformanceCaptureGame.uc +++ /dev/null @@ -1,37 +0,0 @@ -class PComPerformanceCaptureGame extends GameInfo - native - config(Game) - hidecategories(Navigation,Movement,Collision); - -struct native PComPerformanceCaptureStatCollection -{ - var name ProfileName; - var array Stats; - - structdefaultproperties - { - ProfileName="None" - Stats=() - } -}; - -var transient PComPerformanceCaptureBase BasePerformanceCapture; -var PComPerformanceCaptureBase.EPComPerformanceCaptureState CurrentCaptureState; -var transient array NodesToCapture; -var transient array StatsPerNode; - -event PostBeginPlay() -{ - //return; -} - -// Export UPComPerformanceCaptureGame::execCollectNodes(FFrame&, void* const) -native final function CollectNodes(); - -// Export UPComPerformanceCaptureGame::execDoNextAction(FFrame&, void* const) -native final function DoNextAction(); - -defaultproperties -{ - BasePerformanceCapture=none//PComPerformanceCaptureBase'Default__PComPerformanceCaptureGame.MyPerformanceBase' -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComPerformanceCaptureNode.uc b/Development/Src/PlatformCommon/Classes/PComPerformanceCaptureNode.uc deleted file mode 100755 index 27d68ad9..00000000 --- a/Development/Src/PlatformCommon/Classes/PComPerformanceCaptureNode.uc +++ /dev/null @@ -1,14 +0,0 @@ -class PComPerformanceCaptureNode extends Actor - native - placeable - hidecategories(Navigation); - -var(PerformanceNode) string ExecCommand; -var(PerformanceNode) float DelayBeforeCapture; - -defaultproperties -{ - DelayBeforeCapture=2.0000000 - Components(0)=none - Components(1)=none -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComPictureInPicture.uc b/Development/Src/PlatformCommon/Classes/PComPictureInPicture.uc deleted file mode 100755 index 9b168101..00000000 --- a/Development/Src/PlatformCommon/Classes/PComPictureInPicture.uc +++ /dev/null @@ -1,73 +0,0 @@ -class PComPictureInPicture extends Object - native; - -const PICTURE_IN_PICTURE_BASE_WIDTH = 1920.0f; -const PICTURE_IN_PICTURE_BASE_HEIGHT = 1080.0f; - -struct native PComPipViewDesc -{ - var name ViewName; - var Vector ViewLocation; - var Rotator ViewRotation; - var Box Viewport; - var PostProcessChain PostProcessChain; - var PostProcessSettings PostProcessSettings; - var float FOV; - var Color ClearColor; - var bool bDebugRenderTranslucent; - var bool bAlwaysRender; - var Double RequestRenderTime; - var Double LastRenderedTime; - var int NumFramesSinceRender; - - structdefaultproperties - { - ViewName="None" - ViewLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) - ViewRotation=(Pitch=0,Yaw=0,Roll=0) - Viewport=(Min=(X=0.0000000,Y=0.0000000,Z=0.0000000),Max=(X=0.0000000,Y=0.0000000,Z=0.0000000),IsValid=0) - PostProcessChain=none - PostProcessSettings=()//(bOverride_EnableBloom=true,bOverride_EnableDOF=true,bOverride_EnableMotionBlur=true,bOverride_EnableSceneEffect=true,bOverride_AllowAmbientOcclusion=true,bOverride_OverrideRimShaderColor=true,bOverride_Bloom_Scale=true,bOverride_Bloom_Threshold=true,bOverride_Bloom_Tint=true,bOverride_Bloom_ScreenBlendThreshold=true,bOverride_Bloom_InterpolationDuration=true,bOverride_DOF_FalloffExponent=true,bOverride_DOF_BlurKernelSize=true,bOverride_DOF_BlurBloomKernelSize=true,bOverride_DOF_MaxNearBlurAmount=true,bOverride_DOF_MinBlurAmount=false,bOverride_DOF_MaxFarBlurAmount=true,bOverride_DOF_FocusType=true,bOverride_DOF_FocusInnerRadius=true,bOverride_DOF_FocusDistance=true,bOverride_DOF_FocusPosition=true,bOverride_DOF_InterpolationDuration=true,bOverride_DOF_BokehTexture=false,bOverride_MotionBlur_MaxVelocity=false,bOverride_MotionBlur_Amount=false,bOverride_MotionBlur_FullMotionBlur=false,bOverride_MotionBlur_CameraRotationThreshold=false,bOverride_MotionBlur_CameraTranslationThreshold=false,bOverride_MotionBlur_InterpolationDuration=false,bOverride_Scene_Desaturation=true,bOverride_Scene_Colorize=false,bOverride_Scene_TonemapperScale=false,bOverride_Scene_ImageGrainScale=false,bOverride_Scene_HighLights=true,bOverride_Scene_MidTones=true,bOverride_Scene_Shadows=true,bOverride_Scene_InterpolationDuration=true,bOverride_Scene_ColorGradingLUT=false,bOverride_RimShader_Color=true,bOverride_RimShader_InterpolationDuration=true,bOverride_MobileColorGrading=false,bEnableBloom=true,bEnableDOF=false,bEnableMotionBlur=true,bEnableSceneEffect=true,bAllowAmbientOcclusion=true,bOverrideRimShaderColor=false,Bloom_Scale=1.0000000,Bloom_Threshold=1.0000000,Bloom_Tint=(R=255,G=255,B=255,A=0),Bloom_ScreenBlendThreshold=10.0000000,Bloom_InterpolationDuration=1.0000000,DOF_BlurBloomKernelSize=16.0000000,DOF_FalloffExponent=4.0000000,DOF_BlurKernelSize=16.0000000,DOF_MaxNearBlurAmount=1.0000000,DOF_MinBlurAmount=0.0000000,DOF_MaxFarBlurAmount=1.0000000,DOF_FocusType=FOCUS_Distance,DOF_FocusInnerRadius=2000.0000000,DOF_FocusDistance=0.0000000,DOF_FocusPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000),DOF_InterpolationDuration=1.0000000,DOF_BokehTexture=none,MotionBlur_MaxVelocity=1.0000000,MotionBlur_Amount=0.5000000,MotionBlur_FullMotionBlur=true,MotionBlur_CameraRotationThreshold=45.0000000,MotionBlur_CameraTranslationThreshold=10000.0000000,MotionBlur_InterpolationDuration=1.0000000,Scene_Desaturation=0.0000000,Scene_Colorize=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_TonemapperScale=1.0000000,Scene_ImageGrainScale=0.0000000,Scene_HighLights=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_MidTones=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_Shadows=(X=0.0000000,Y=0.0000000,Z=0.0000000),Scene_InterpolationDuration=1.0000000,RimShader_Color=(R=0.4704400,G=0.5859730,B=0.8277260,A=1.0000000),RimShader_InterpolationDuration=1.0000000,ColorGrading_LookupTable=none,ColorGradingLUT=(LUTTextures=(),LUTWeights=()),MobileColorGrading=(TransitionTime=1.0000000,Blend=0.0000000,Desaturation=0.0000000,HighLights=(R=0.7000000,G=0.7000000,B=0.7000000,A=1.0000000),MidTones=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000),Shadows=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000)),MobilePostProcess=(bOverride_Mobile_BlurAmount=false,bOverride_Mobile_TransitionTime=false,bOverride_Mobile_Bloom_Scale=false,bOverride_Mobile_Bloom_Threshold=false,bOverride_Mobile_Bloom_Tint=false,bOverride_Mobile_DOF_Distance=false,bOverride_Mobile_DOF_MinRange=false,bOverride_Mobile_DOF_MaxRange=false,bOverride_Mobile_DOF_NearBlurFactor=false,bOverride_Mobile_DOF_FarBlurFactor=false,Mobile_BlurAmount=16.0000000,Mobile_TransitionTime=1.0000000,Mobile_Bloom_Scale=6.0000000,Mobile_Bloom_Threshold=0.5000000,Mobile_Bloom_Tint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000),Mobile_DOF_Distance=1500.0000000,Mobile_DOF_MinRange=600.0000000,Mobile_DOF_MaxRange=1200.0000000,Mobile_DOF_NearBlurFactor=1.0000000,Mobile_DOF_FarBlurFactor=1.0000000),Death_Enable=false,Death_DesatAlpha=0.0000000,Hit_Enable=false,Hit_FadeAlpha=0.0000000,ColorBlind_Enable=false,ColorBlind_Mode=0,ColorBlind_Intensity=1.0000000) - FOV=90.0000000 - ClearColor=(R=0,G=0,B=0,A=0) - bDebugRenderTranslucent=false - bAlwaysRender=false - RequestRenderTime=() - LastRenderedTime=() - NumFramesSinceRender=0 - } -}; - -var private native const noexport Pointer VfTable_FCallbackEventDevice; -var PComPictureInPictureScene Scene; -var TextureRenderTarget2D RenderTargetToUse; -var init native array ViewDescs; -var bool bEnableDebugRendering; -var Vector2D CurrentOffset; -var Vector2D CurrentScaling; - -// Export UPComPictureInPicture::execInitializeRenderTarget(FFrame&, void* const) -native final function InitializeRenderTarget(); - -// Export UPComPictureInPicture::execAddView(FFrame&, void* const) -native final function AddView(const out PComPipViewDesc InViewDesc); - -// Export UPComPictureInPicture::execRemoveView(FFrame&, void* const) -native final function RemoveView(name ViewName); - -// Export UPComPictureInPicture::execRequestRender(FFrame&, void* const) -native final function RequestRender(name ViewName); - -// Export UPComPictureInPicture::execIsViewReady(FFrame&, void* const) -native final function bool IsViewReady(name ViewName); - -// Export UPComPictureInPicture::execIsViewDescReady(FFrame&, void* const) -native final function bool IsViewDescReady(const out PComPipViewDesc ViewDesc); - -// Export UPComPictureInPicture::execDebugRender(FFrame&, void* const) -native final function DebugRender(Canvas Canvas); - -function TestPictureInPicture() -{ - //return; -} diff --git a/Development/Src/PlatformCommon/Classes/PComPictureInPictureScene.uc b/Development/Src/PlatformCommon/Classes/PComPictureInPictureScene.uc deleted file mode 100755 index 7565facc..00000000 --- a/Development/Src/PlatformCommon/Classes/PComPictureInPictureScene.uc +++ /dev/null @@ -1,61 +0,0 @@ -class PComPictureInPictureScene extends Object - native; - -var() float SkyBrightness; -var() Color SkyColor; -var() float LightBrightness; -var() bool bAlwaysAllowAudioPlayback; -var() bool bForceAllUsedMipsResident; -var native transient Pointer Scene; -var export editinline array Components; -var export editinline DirectionalLightComponent DirectionalLight; -var export editinline DirectionalLightComponent DirectionalBounceLight; -var export editinline SkyLightComponent SkyLight; -var export editinline LineBatchComponent LineBatcher; - -// Export UPComPictureInPictureScene::execInitScene(FFrame&, void* const) -native function InitScene(); - -// Export UPComPictureInPictureScene::execAddComponent(FFrame&, void* const) -native function AddComponent(ActorComponent Component, const out Matrix LocalToWorld); - -// Export UPComPictureInPictureScene::execRemoveComponent(FFrame&, void* const) -native function RemoveComponent(ActorComponent Component); - -// Export UPComPictureInPictureScene::execGetLightDirection(FFrame&, void* const) -native function Rotator GetLightDirection(); - -// Export UPComPictureInPictureScene::execSetLightDirection(FFrame&, void* const) -native function SetLightDirection(const out Rotator InLightDir); - -// Export UPComPictureInPictureScene::execSetLightBrightness(FFrame&, void* const) -native function SetLightBrightness(float InLightBrightness); - -// Export UPComPictureInPictureScene::execSetLightColor(FFrame&, void* const) -native function SetLightColor(const out Color LightColor); - -// Export UPComPictureInPictureScene::execEnableDirectionalBounceLight(FFrame&, void* const) -native function EnableDirectionalBounceLight(bool bInEnableBoundLight, optional float InBounceLightBrightness = 0.0000000, optional Rotator BounceLightDir); - -// Export UPComPictureInPictureScene::execSetBounceLightDirection(FFrame&, void* const) -native function SetBounceLightDirection(const out Rotator InLightDir); - -// Export UPComPictureInPictureScene::execSetBounceLightBrightness(FFrame&, void* const) -native function SetBounceLightBrightness(float InLightBrightness); - -// Export UPComPictureInPictureScene::execSetBounceLightColor(FFrame&, void* const) -native function SetBounceLightColor(const out Color LightColor); - -// Export UPComPictureInPictureScene::execSetSkyBrightness(FFrame&, void* const) -native function SetSkyBrightness(float InSkyBrightness); - -// Export UPComPictureInPictureScene::execSetSkyColor(FFrame&, void* const) -native function SetSkyColor(const out Color InSkyColor); - -defaultproperties -{ - SkyBrightness=0.2500000 - SkyColor=(R=255,G=255,B=255,A=255) - LightBrightness=1.0000000 - bForceAllUsedMipsResident=true -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComPlayerController.uc b/Development/Src/PlatformCommon/Classes/PComPlayerController.uc deleted file mode 100755 index 1dc14335..00000000 --- a/Development/Src/PlatformCommon/Classes/PComPlayerController.uc +++ /dev/null @@ -1,570 +0,0 @@ -class PComPlayerController extends GamePlayerController - native - config(Game) - hidecategories(Navigation); - -var UniqueNetId m_LastPendingPartyInviteId; -var bool m_bPartySessionJoinInProgress; -var bool m_bPartySessionCreateInProgress; -var bool m_bPartyDestroyInProgress; -var transient bool m_bQuittingToMainMenu; -var transient bool m_bHasAcknowledgedPawn; -var transient bool m_bLastClientTokenRequestFailed; -var globalconfig bool m_bKeepLoggedIn; -var dword m_dwPendingPartyId; -var config int m_nMaxPartyPublicConnections; -var OnlineGameSearchResult m_PendingInviteResult; -var const name PartySessionName; -var const name GameSessionName; -var globalconfig dword m_dwLastLoginPortalId; -var globalconfig dword m_dwLastLoginAccountId; -var globalconfig string m_sLastLoginAccessToken; -var globalconfig string m_sLastLoginAccessTokenExpiration; - -// Export UPComPlayerController::execClientAddCheats(FFrame&, void* const) -native function ClientAddCheats(); - -// xiloe: added bFore to stop UDK from bitching -simulated function AddCheats(optional bool bForce) -{ - ClientAddCheats(); - //return; -} - -exec function TestVideoPlayer() -{ - //return; -} - -// Export UPComPlayerController::execUpdateDatacenterPing(FFrame&, void* const) -native function UpdateDatacenterPing(); - -// Export UPComPlayerController::execChallengeCreate(FFrame&, void* const) -native exec function ChallengeCreate(int nQueue, string fsName, optional string fsPassword); - -// Export UPComPlayerController::execChallengeJoin(FFrame&, void* const) -native exec function ChallengeJoin(int nMatchId, string fsName, optional string fsPassword); - -// Export UPComPlayerController::execUpdateClientToken(FFrame&, void* const) -native function UpdateClientToken(string Token); - -// Export UPComPlayerController::execUpdateClientAuthToken(FFrame&, void* const) -native function UpdateClientAuthToken(string Token); - -// Export UPComPlayerController::execValidateCreatedPartySession(FFrame&, void* const) -native function ValidateCreatedPartySession(); - -// Export UPComPlayerController::execPlayerRetrievedOSSInventory(FFrame&, void* const) -//native function PlayerRetrievedOSSInventory(out array Items); - -// Export UPComPlayerController::execBeginLogin(FFrame&, void* const) -native exec function BeginLogin(); - -// Export UPComPlayerController::execGetTokenURL(FFrame&, void* const) -native function string GetTokenURL(); - -event GetOSSTokenAndSignatureForLogin() -{ - //return; -} - -function PlayerReceivedURLTokenAndSignatureForLogin(bool bSuccess, byte LocalUserNum, string URL, string Token, string AuthToken, string Signature) -{ - //return; -} - -// Export UPComPlayerController::execPlayerReceivedTokenForLogin(FFrame&, void* const) -native function PlayerReceivedTokenForLogin(bool bSuccess); - -event CacheLoggedInGamepad() -{ - //return; -} - -event bool ShowConsoleLoginUI(int ControllerId, optional bool bForceLoginAfter) -{ - //return ReturnValue; -} - -event bool IsLoggedIntoOSS() -{ - //return ReturnValue; -} - -event RefreshStoreData() -{ - //return; -} - -//function OnReadAvailableProductsComplete(OnlineSubsystem.EMediaItemType MediaType) -//{ - //return; -//} - -//function OnReadDetailsForProductIdListComplete(out array ProductList) -//{ - //return; -//} - -//function OnReadAdditionalProductDetailsComplete(OnlineSubsystem.EMediaItemType MediaType) -//{ - //return; -//} - -exec function DumpGameProducts() -{ - //return; -} - -exec function DumpDurables() -{ - //return; -} - -exec function DumpConumables() -{ - //return; -} - -//exec function DumpStoreCatalog(OnlineSubsystem.EMediaItemType MediaType) -//{ - //return; -//} - -event ProcessPortalInventoryWithAuthToken() -{ - //return; -} - -function PlayerReceivedURLTokenAndSignatureForPortalInventory(bool bSuccess, byte LocalUserNum, string URL, string Token, string AuthToken, string Signature) -{ - //return; -} - -function OnReadPlayerMarketplaceInventoryComplete() -{ - //return; -} - -event OnlineSubsystem.EOnlineEnumerationReadState GetPlayerDLCLicenses(out array ContentList) -{ - //return ReturnValue; -} - -simulated function OnMarketplaceItemPurchased() -{ - //return; -} - -// Export UPComPlayerController::execOnLoginStatusChange(FFrame&, void* const) -native function OnLoginStatusChange(OnlineSubsystem.ELoginStatus NewStatus, UniqueNetId NewId); - -// Export UPComPlayerController::execOnConnectionStatusChange(FFrame&, void* const) -native function OnConnectionStatusChange(OnlineSubsystem.EOnlineServerConnectionStatus ConnectionStatus); - -// Export UPComPlayerController::execOnCurrentUserChanged(FFrame&, void* const) -native function OnCurrentUserChanged(byte LocalUserNum, string CurrentUser, string LoggedInUser); - -// Export UPComPlayerController::execOnRemoteTalkerStatusChange(FFrame&, void* const) -native function OnRemoteTalkerStatusChange(UniqueNetId RemoteNetId, bool bIsTalking); - -// Export UPComPlayerController::execSendSessionStart(FFrame&, void* const) -native function SendSessionStart(int GameModeId); - -// Export UPComPlayerController::execSendSessionEnd(FFrame&, void* const) -native function SendSessionEnd(); - -// Export UPComPlayerController::execIsInCustomMatch(FFrame&, void* const) -native simulated function bool IsInCustomMatch(); - -// Export UPComPlayerController::execMCTSSetSessionId(FFrame&, void* const) -native function MCTSSetSessionId(byte PlatformSpecificInfo[80]); - -// Export UPComPlayerController::execTryJoinSession(FFrame&, void* const) -native function TryJoinSession(); - -// Export UPComPlayerController::execConnectToPeers(FFrame&, void* const) -//native simulated function ConnectToPeers(out array SessionListInfo); - -// Export UPComPlayerController::execShowPrivilegeMessageAndDeclineInvite(FFrame&, void* const) -native simulated function ShowPrivilegeMessageAndDeclineInvite(); - -// Export UPComPlayerController::execFilterFriendListForPeoplePicker(FFrame&, void* const) -//native simulated function FilterFriendListForPeoplePicker(out array FriendList, out array SessionMemberList); - -// Export UPComPlayerController::execBlockPartySceneInput(FFrame&, void* const) -native function BlockPartySceneInput(bool bBlockInput); - -// Export UPComPlayerController::execUpdateMCTSSession(FFrame&, void* const) -native simulated function UpdateMCTSSession(string SessionGuid, bool bIsHost); - -// Export UPComPlayerController::execArePartySessionInvitesAllowed(FFrame&, void* const) -native function bool ArePartySessionInvitesAllowed(); - -// Export UPComPlayerController::execCreateOrJoinPartySession(FFrame&, void* const) -native function CreateOrJoinPartySession(); - -function bool ShouldPartySessionsBePublic() -{ - //return ReturnValue; -} - -// Export UPComPlayerController::execShowControllerDisconnectedWarning(FFrame&, void* const) -native function ShowControllerDisconnectedWarning(); - -// Export UPComPlayerController::execShowNoFriendsForPartyInviteWarning(FFrame&, void* const) -native function ShowNoFriendsForPartyInviteWarning(); - -// Export UPComPlayerController::execShowUnableToReadFriendsListWarning(FFrame&, void* const) -native function ShowUnableToReadFriendsListWarning(); - -// Export UPComPlayerController::execShowPartyFullWarning(FFrame&, void* const) -native function ShowPartyFullWarning(bool bPartySession); - -// Export UPComPlayerController::execShowPartyNoLongerAvailableWarning(FFrame&, void* const) -native function ShowPartyNoLongerAvailableWarning(); - -// Export UPComPlayerController::execShowPackageNotInstalledForPartyInviteWarning(FFrame&, void* const) -native function ShowPackageNotInstalledForPartyInviteWarning(); - -// Export UPComPlayerController::execShowCustomGameDisallowedPopup(FFrame&, void* const) -native function ShowCustomGameDisallowedPopup(); - -// Export UPComPlayerController::execTryOpenPartyUI(FFrame&, void* const) -native function TryOpenPartyUI(); - -// Export UPComPlayerController::execUpdatePartyUI(FFrame&, void* const) -native function UpdatePartyUI(); - -// Export UPComPlayerController::execLeaveMatchQueue(FFrame&, void* const) -native function LeaveMatchQueue(); - -// Export UPComPlayerController::execOnAllMarketplaceProductDetailsRead(FFrame&, void* const) -native function OnAllMarketplaceProductDetailsRead(); - -function AcknowledgePossession(Pawn P) -{ - //return; -} - -reliable server event ServerAcknowledgePossession(Pawn P) -{ - //return; -} - -simulated event QuitToMainMenu() -{ - //return; -} - -function bool CleanupOnlineSubsystemSession(bool bWasFromMenu) -{ - //return ReturnValue; -} - -function FinishQuitToMainMenu() -{ - //return; -} - -function OnEndOnlineGameComplete(name SessionName, bool bWasSuccessful) -{ - //return; -} - -function OnDestroyOnlineGameComplete(name SessionName, bool bWasSuccessful) -{ - //return; -} - -exec event ChooseThisControllerForSessionScout(bool bCustomMatch, int MaxPlayers, bool bPrivate, optional out array ReservedMembers) -{ - //return; -} - -simulated function OnCreateOnlineGameComplete(name SessionName, bool bWasSuccessful) -{ - //return; -} - -reliable client simulated event ReceiveSessionInfo(byte PlatformSpecificInfo[80], WorldInfo.EConsoleType ConsoleType) -{ - //return; -} - -simulated function OnJoinOnlineGameCompleteForReceivedSessionInfo(name SessionName, bool bWasSuccessful) -{ - //return; -} - -simulated event RestablishVoiceForReconnect() -{ - //return; -} - -// Export UPComPlayerController::execIsReconnect(FFrame&, void* const) -native simulated function bool IsReconnect(); - -reliable server function ServerReEstablishP2PConnections() -{ - //return; -} - -reliable client simulated function ClientRestablishP2PConnections() -{ - //return; -} - -event RegisterOnlineDelegates() -{ - //return; -} - -event ClearOnlineDelegates() -{ - //return; -} - -// Export UPComPlayerController::execOnPrivilegeLevelChecked(FFrame&, void* const) -//native function OnPrivilegeLevelChecked(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevel, bool bDiffersFromHint); - -// Export UPComPlayerController::execOnPrivilegeCheckedForUsersByUniqueNetIds(FFrame&, void* const) -//native function OnPrivilegeCheckedForUsersByUniqueNetIds(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, array Results); - -// Export UPComPlayerController::execOnContentPurchaseResponse(FFrame&, void* const) -native function OnContentPurchaseResponse(bool bAuthorized, QWord qwOrderId); - -// Export UPComPlayerController::execUpdateMctsWithFriends(FFrame&, void* const) -native function UpdateMctsWithFriends(bool bWasSuccessful); - -// Export UPComPlayerController::execRequestUpdateFriendsList(FFrame&, void* const) -native function RequestUpdateFriendsList(optional bool bForceRequest = false); - -// Export UPComPlayerController::execOnTextFilterApplied(FFrame&, void* const) -native function OnTextFilterApplied(string OriginalText, string FilteredText, bool bCensorCompletely); - -event bool CanCommunicateText(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") -{ - //return ReturnValue; -} - -event bool CanCommunicateTextWithUsersByUniqueNetIds(byte LocalUserNum, array Users) -{ - //return ReturnValue; -} - -event bool CheckFilterText(string Text) -{ - //return ReturnValue; -} - -//function OnMultiplayerSessionChange(name SessionName, SessionUpdateInfo SessionChanges) -//{ - //return; -//} - -// Export UPComPlayerController::execIsPackageInstalled(FFrame&, void* const) -native function bool IsPackageInstalled(); - -// Export UPComPlayerController::execIsInGame(FFrame&, void* const) -native function bool IsInGame(); - -event PairLoggedInUserAndCurrentController() -{ - //return; -} - -event GetControllerIdFromNetId(UniqueNetId PlayerID, out int ControllerId) -{ - //return; -} - -simulated event LostP2PConnection(UniqueNetId UniqueId) -{ - //return; -} - -simulated exec event EstablishPeers() -{ - //return; -} - -// Export UPComPlayerController::execCloseConnectionsToInvalidPeers(FFrame&, void* const) -//native simulated function CloseConnectionsToInvalidPeers(array SessionListInfo); - -// Export UPComPlayerController::execGetUserNamesForPS4P2PConnections(FFrame&, void* const) -native simulated function array GetUserNamesForPS4P2PConnections(); - -//simulated function OnGetUserConnectionInfoComplete(array SessionListInfo, bool bWasSuccessful) -//{ - //return; -//} - -//simulated function OnGetSessionMemberInfoComplete(array SessionListInfo, bool bWasSuccessful) -//{ - //return; -//} - -//simulated function OnGetVoicePermissionsForUsersComplete(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, array Results) -//{ - //return; -//} - -event UnregisterP2PEnemiesForCustomMatch(array EnemyIds) -{ - //return; -} - -simulated exec event CreatePartySession() -{ - //return; -} - -simulated function OnCreatePartySessionComplete(name SessionName, bool bSuccessful) -{ - //return; -} - -event bool InvitePlayerToPartyByName(string InPlayerName) -{ - //return ReturnValue; -} - -event bool InvitePlayerToParty(UniqueNetId InPlayerId) -{ - //return ReturnValue; -} - -simulated exec event DestroyPartySession() -{ - //return; -} - -simulated event OnPartySessionDestroyed(name SessionName, bool bWasSuccessful) -{ - //return; -} - -event JoinPartySession(byte PartySessionGuid[80]) -{ - //return; -} - -simulated function OnGameInviteAccepted(const out OnlineGameSearchResult InviteResult) -{ - //return; -} - -//simulated function OnAlternatePrivilegeLevelCheckedComplete(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevel, bool bDiffersFromHint) -//{ - //return; -//} - -simulated function OnGameDestroyedForPartyJoin(name SessionName, bool bWasSuccessful) -{ - //return; -} - -//simulated function OnPrivilegeLevelCheckedCompleteForPartyJoin(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevel, bool bDiffersFromHint) -//{ - //return; -//} - -//simulated function OnPrivilegeCheckForGameSessionJoin(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevel, bool bDiffersFromHint) -//{ - //return; -//} - -simulated function OnJoinSessionForReceivedInviteComplete(name SessionName, bool bWasSuccessful) -{ - //return; -} - -event JoinCustomMatchFromInvite() -{ - //return; -} - -function JoinCustomMatchForInviteDelay() -{ - //return; -} - -simulated exec event bool ShowPeoplePickerUI() -{ - //return ReturnValue; -} - -function OnReadFriendsListComplete(bool bWasSuccessful) -{ - //return; -} - -function OnPeoplePickerComplete(bool bWasSuccessful, array PeoplePicked) -{ - //return; -} - -simulated event bool IsHostOfParty() -{ - //return ReturnValue; -} - -simulated event UpdateMCTSWithNewPartyInfo() -{ - //return; -} - -simulated event TogglePartySessionInvitesAllowed(bool bAllowed) -{ - //return; -} - -simulated event ToggleGameSessionInvitesAllowed(bool bAllowed) -{ - //return; -} - -simulated event SetAsNewPartyHost() -{ - //return; -} - -event TryAutoLoginDelayed() -{ - //return; -} - -// Export UPComPlayerController::execTryAutoLogin(FFrame&, void* const) -native function bool TryAutoLogin(); - -reliable client simulated event ClientPlayInputLightingEffect(name InPresetName, optional bool bUseOverrideStartTime = false, optional float OverrideStartTime = 0.0000000) -{ - //return; -} - -// Export UPComPlayerController::execPlayInputLightingEffect(FFrame&, void* const) -native function PlayInputLightingEffect(name InPresetName, optional bool bUseOverrideStartTime = false, optional float OverrideStartTime = 0.0000000); - -// Export UPComPlayerController::execStopInputLightingEffect(FFrame&, void* const) -native function StopInputLightingEffect(name InPresetName); - -// Export UPComPlayerController::execSetCurrentTimeForInputLightingEffect(FFrame&, void* const) -native function SetCurrentTimeForInputLightingEffect(name InPresetName, float InCurrentTime); - -exec event PlayTestInputLightingEffect(name InPresetName) -{ - //return; -} - -defaultproperties -{ - PartySessionName="Party" - GameSessionName="Game" - InputClass=Class'PComPlayerInput' - - // remove? - CylinderComponent=CollisionCylinder - Components(0)=CollisionCylinder - CollisionComponent=CollisionCylinder -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComPlayerInput.uc b/Development/Src/PlatformCommon/Classes/PComPlayerInput.uc deleted file mode 100755 index 1cfe26b2..00000000 --- a/Development/Src/PlatformCommon/Classes/PComPlayerInput.uc +++ /dev/null @@ -1,113 +0,0 @@ -class PComPlayerInput extends PlayerInput within PlayerController - transient - native - config(Input) - hidecategories(Object,UIRoot); - -const m_nMinDisplayLookSensitivity = 1.0; -const m_nMaxDisplayLookSensitivity = 100.0; - -var bool c_bDirty; -var config bool c_bUseServerBindings; -var config bool c_bJumpEnabled; -var config string c_sCurrentProfile; -var int m_nKeybindConfigSet; -var float m_nMinLookSensitivity; -var float m_nMaxLookSensitivity; -var int m_RecCastMode; - -// Export UPComPlayerInput::execResetKeysToDefault(FFrame&, void* const) -native function ResetKeysToDefault(); - -// Export UPComPlayerInput::execGetBindExtended(FFrame&, void* const) -native function bool GetBindExtended(string Str, out KeyBind Bind, optional bool bExactMatch = false); - -// Export UPComPlayerInput::execGetBindFromCommand(FFrame&, void* const) -native function KeyBind GetBindFromCommand(string Cmd, bool bGamepad, optional int nAlternate = 0); - -// Export UPComPlayerInput::execExtendedStringToKeybind(FFrame&, void* const) -native function KeyBind ExtendedStringToKeybind(string Str, string Cmd); - -// Export UPComPlayerInput::execKeybindToExtendedString(FFrame&, void* const) -native function string KeybindToExtendedString(const out KeyBind Bind); - -// xiloe: UDK is bitching again, I don't think we need this anyways -// Export UPComPlayerInput::execGetBind(FFrame&, void* const) -//native function string GetBind(const out name Key, const optional out KeyBind ModifierKeyBind); - -// Export UPComPlayerInput::execGetKeybindWithCurrentModifiers(FFrame&, void* const) -native function KeyBind GetKeybindWithCurrentModifiers(const out name Key); - -// Export UPComPlayerInput::execStoreMouseSettings(FFrame&, void* const) -native function StoreMouseSettings(); - -// Export UPComPlayerInput::execReadMouseSettings(FFrame&, void* const) -native function ReadMouseSettings(); - -simulated function SetDirty() -{ - //return; -} - -exec function SetMouseInput(bool bInvert, bool bSmooth, float fSensitivity) -{ - //return; -} - -exec function SetLookSensitivity(float fSensitivity, optional float fSensitivityY = 0.0000000) -{ - //return; -} - -exec function SetAimAcceleration(float fLookAccel) -{ - //return; -} - -event float GetDisplayLookSensitivity() -{ - //return ReturnValue; -} - -event float GetDisplayLookSensitivityY() -{ - //return ReturnValue; -} - -exec function SetBindExtended(const string ExtendedBinding, string Command) -{ - //return; -} - -event SetCommandBind(string Command, bool bGamepad, int nAlternate, const string ExtendedBinding) -{ - //return; -} - -exec function UnbindKey(const out name BindName) -{ - //return; -} - -exec event UnbindCommandAll(string Command) -{ - //return; -} - -exec function UnbindCommand(string Command, bool bGamepad, optional int nAlternate = 0) -{ - //return; -} - -exec function Jump() -{ - //return; -} - -defaultproperties -{ - //c_bUseServerBindings=true - m_nKeybindConfigSet=1 - m_nMinLookSensitivity=0.1500000 - m_nMaxLookSensitivity=6.5000000 -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComPlayerProfile.uc b/Development/Src/PlatformCommon/Classes/PComPlayerProfile.uc deleted file mode 100755 index 7f0735d0..00000000 --- a/Development/Src/PlatformCommon/Classes/PComPlayerProfile.uc +++ /dev/null @@ -1,83 +0,0 @@ -class PComPlayerProfile extends OnlinePlayerStorage - native; - -struct native PropertyPair -{ - var int PropertyId; - var int Value; - - structdefaultproperties - { - PropertyId=0 - Value=0 - } -}; - -struct native AccoladeStruct -{ - var int AccoladeId; - var int ActivityId; - var int Type; - var int Value; - - structdefaultproperties - { - AccoladeId=0 - ActivityId=0 - Type=0 - Value=0 - } -}; - -struct native BadgeStruct -{ - var int BadgeId; - var int ActivityId; - var int Icon; - var int Tier; - var int Progress; - var int MaxValue; - var int Category; - var init string Title; - var init string Description; - - structdefaultproperties - { - BadgeId=0 - ActivityId=0 - Icon=0 - Tier=0 - Progress=0 - MaxValue=0 - Category=0 - Title="" - Description="" - } -}; - -var int Rank; -var int Kills; -var int Deaths; -var int Assists; -var int XpLevel; -var int HZPoints; -var int XPPoints; -var int AssistPoints; -var int AverageScore; -var int BoostHoursRemaining; -var int InfoMask; -var int TimePlayed; -var int TotalAccolades; -var int FastestSki; -var int FlagGrabs; -var int FlagCaps; -var int GensDestroyed; -var int ObjsDestroyed; -var bool bVIP; -var bool bBoost; -var int PlayerID; -var init string PlayerName; -var array Badges; -var array TopBadges; -var array ClassTimePlayed; -var array Accolades; diff --git a/Development/Src/PlatformCommon/Classes/PComPositionHistoryComponent.uc b/Development/Src/PlatformCommon/Classes/PComPositionHistoryComponent.uc deleted file mode 100755 index a36579f2..00000000 --- a/Development/Src/PlatformCommon/Classes/PComPositionHistoryComponent.uc +++ /dev/null @@ -1,2 +0,0 @@ -class PComPositionHistoryComponent extends ActorComponent - native; diff --git a/Development/Src/PlatformCommon/Classes/PComPositionHistoryServerComponent.uc b/Development/Src/PlatformCommon/Classes/PComPositionHistoryServerComponent.uc deleted file mode 100755 index 95521910..00000000 --- a/Development/Src/PlatformCommon/Classes/PComPositionHistoryServerComponent.uc +++ /dev/null @@ -1,55 +0,0 @@ -class PComPositionHistoryServerComponent extends ActorComponent - native; - -const MAX_POSITION_HISTORY_FRAMES = 30; - -struct native PComPositionHistoryData -{ - var Vector Location; - var Rotator Rotation; - var Vector Velocity; - var Actor.EPhysics Physics; - var bool bWasFalling; - var bool bCollideActors; - var bool bBlockActors; - - structdefaultproperties - { - Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) - Rotation=(Pitch=0,Yaw=0,Roll=0) - Velocity=(X=0.0000000,Y=0.0000000,Z=0.0000000) - Physics=PHYS_None - bWasFalling=false - bCollideActors=false - bBlockActors=false - } -}; - -var int CurrentIndex; -var float ServerTimeStamps[30]; -var float ClientTimeStamps[30]; -var Vector Positions[30]; -var Vector Velocities[30]; -var Rotator Rotations[30]; -var byte bJustTeleported[30]; -var byte bCollideActors[30]; -var byte bBlockActors[30]; -var Actor.EPhysics Physics[30]; - -// Export UPComPositionHistoryServerComponent::execRecordData(FFrame&, void* const) -native final function RecordData(); - -// Export UPComPositionHistoryServerComponent::execGetPastData(FFrame&, void* const) -native final function PComPositionHistoryData GetPastData(float RewindTime, optional bool bUseClientTimeStamps = false); - -// Export UPComPositionHistoryServerComponent::execIsOverlapping(FFrame&, void* const) -native final function bool IsOverlapping(float RewindTime, Vector LocationToCheck, float RadiusToCheck, out PComPositionHistoryData PastDataUsed); - -// Export UPComPositionHistoryServerComponent::execIsInSphere(FFrame&, void* const) -native final function bool IsInSphere(float RewindTime, Vector LocationToCheck, float RadiusToCheck, out PComPositionHistoryData PastDataUsed); - -defaultproperties -{ - CurrentIndex=-1 - TickGroup=TG_PostUpdateWork -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComRepInfo_Game.uc b/Development/Src/PlatformCommon/Classes/PComRepInfo_Game.uc deleted file mode 100755 index 7d844db6..00000000 --- a/Development/Src/PlatformCommon/Classes/PComRepInfo_Game.uc +++ /dev/null @@ -1,26 +0,0 @@ -class PComRepInfo_Game extends GameReplicationInfo - native - config(Game) - hidecategories(Navigation,Movement,Collision); - -var PComMusicThemePlayer m_MusicThemePlayer; -var class m_MusicThemePlayerClass; -var globalconfig string m_MusicThemePlayerClassName; - -// Export UPComRepInfo_Game::execPlayMusicEvent(FFrame&, void* const) -native function PlayMusicEvent(const name EventName); - -simulated function PostBeginPlay() -{ - //return; -} - -simulated function CreateMusicThemePlayer() -{ - //return; -} - -defaultproperties -{ - m_MusicThemePlayerClass=Class'PComMusicThemePlayer' -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComSeqAct_PlayMusicEvent.uc b/Development/Src/PlatformCommon/Classes/PComSeqAct_PlayMusicEvent.uc deleted file mode 100755 index 636e639e..00000000 --- a/Development/Src/PlatformCommon/Classes/PComSeqAct_PlayMusicEvent.uc +++ /dev/null @@ -1,12 +0,0 @@ -class PComSeqAct_PlayMusicEvent extends SequenceAction - native(Audio) - forcescriptorder(true) - hidecategories(Object); - -var() name EventName; - -defaultproperties -{ - //VariableLinks=none - ObjName="Play Music Event" -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/PComStructures.uc b/Development/Src/PlatformCommon/Classes/PComStructures.uc deleted file mode 100755 index 8c3de210..00000000 --- a/Development/Src/PlatformCommon/Classes/PComStructures.uc +++ /dev/null @@ -1,50 +0,0 @@ -class PComStructures extends Object - native; - -enum CMTargetType -{ - CMTT_Pawn, - CMTT_Deployable, - CMTT_Destructible, - CMTT_Projectile -}; - -struct native CombatMessageInfo -{ - var int nMsgId; - var int nSourceId; - var PComStructures.CMTargetType eSourceType; - var int nSourceOwnerId; - var int nTargetId; - var int nTargetOwnerId; - var PComStructures.CMTargetType eTargetType; - var int nAmount1; - var int nAmount2; - var int nSourceItemId; - var int nDamageTypeId; - var byte nFireModeIndex; - var int nLocationId; - var int nEventIndex; - var int nLocationX; - var int nLocationY; - - structdefaultproperties - { - nMsgId=0 - nSourceId=0 - eSourceType=CMTT_Pawn - nSourceOwnerId=0 - nTargetId=0 - nTargetOwnerId=0 - eTargetType=CMTT_Pawn - nAmount1=0 - nAmount2=0 - nSourceItemId=0 - nDamageTypeId=0 - nFireModeIndex=0 - nLocationId=0 - nEventIndex=0 - nLocationX=0 - nLocationY=0 - } -}; diff --git a/Development/Src/PlatformCommon/Classes/PComSupportCommands.uc b/Development/Src/PlatformCommon/Classes/PComSupportCommands.uc deleted file mode 100755 index 7b96925a..00000000 --- a/Development/Src/PlatformCommon/Classes/PComSupportCommands.uc +++ /dev/null @@ -1,192 +0,0 @@ -class PComSupportCommands extends Object - native; - -const GC_OS_TYPE_BELOW_XP = 10300; -const GC_OS_TYPE_XP = 10301; -const GC_OS_TYPE_VISTA = 10303; -const GC_OS_TYPE_WIN7 = 10305; -const GC_OS_TYPE_WIN8 = 10307; - -enum GC_ALERT_PRIORITY -{ - GC_APT_MINIMAL, - GC_APT_NORMAL, - GC_APT_HIGH, - GC_APT_CRITICAL -}; - -enum GC_CHAT_CHANNEL -{ - GC_CC_GLOBAL, - GC_CC_CLAN, - GC_CC_INSTANCE, - GC_CC_LOCAL_TEAM, - GC_CC_PARTY, - GC_CC_CITY, - GC_CC_PERSONAL, - GC_CC_PRIVATE_1, - GC_CC_EOM_LOBBY, - GC_CC_SYSTEM, - GC_CC_TRADE, - GC_CC_LFG, - GC_CC_LFG_2, - GC_CC_HELP, - GC_CC_VOIP_NEWS, - GC_CC_GM, - GC_CC_VIP, - GC_CC_LFG_3, - GC_CC_COUNT, - GC_CC_VOIP_ECHO, - GC_CC_VOIP_CONF, - GC_CC_COMBAT, - GC_CC_EMOTE, - GC_CC_INVALID, - GC_CC_LAST -}; - -enum GC_STEAM_TXN_TYPES -{ - GC_STT_INVALID, - GC_STT_GETUSERINFO, - GC_STT_INIT, - GC_STT_FINALIZE, - GC_STT_DECLINE -}; - -var const transient PComPlayerController PC; -var const transient WorldInfo WorldInfo; - -// Export UPComSupportCommands::execgmMatchForce(FFrame&, void* const) -native exec function gmMatchForce(optional int nQueueId = 0); - -// Export UPComSupportCommands::execgmMatchNext(FFrame&, void* const) -native exec function gmMatchNext(int nMapId); - -// Export UPComSupportCommands::execgmMatchLobbyPause(FFrame&, void* const) -native exec function gmMatchLobbyPause(); - -// Export UPComSupportCommands::execgmMatchLobbyResume(FFrame&, void* const) -native exec function gmMatchLobbyResume(); - -// Export UPComSupportCommands::execgmCommand(FFrame&, void* const) -native exec function gmCommand(string sCommand); - -// Export UPComSupportCommands::execgmC(FFrame&, void* const) -native exec function gmC(string sCommand); - -// Export UPComSupportCommands::execgmDiag(FFrame&, void* const) -native exec function gmDiag(int Code, int Route); - -// Export UPComSupportCommands::execGPerfDebugFeet(FFrame&, void* const) -native function GPerfDebugFeet(int feet); - -// Export UPComSupportCommands::execGPerfDebugSkips(FFrame&, void* const) -native function GPerfDebugSkips(int skips); - -// Export UPComSupportCommands::execGPerfDebugRelevMode(FFrame&, void* const) -native function GPerfDebugRelevMode(int Mode); - -// Export UPComSupportCommands::execGPerfServerFlags(FFrame&, void* const) -native function GPerfServerFlags(int Flags, int alternate1, int alternate2); - -// Export UPComSupportCommands::execGPerfAllRelevantLimit(FFrame&, void* const) -native function GPerfAllRelevantLimit(int feet); - -// Export UPComSupportCommands::execGPerfDebugTickRate(FFrame&, void* const) -native function GPerfDebugTickRate(int tickHz, int altTickHz); - -// Export UPComSupportCommands::execGPerfDebugPhysicsThreshold(FFrame&, void* const) -native function GPerfDebugPhysicsThreshold(float fThresh1, float fThresh2); - -// Export UPComSupportCommands::execSetLogServerTickStatsFlags(FFrame&, void* const) -native function SetLogServerTickStatsFlags(int Flags, bool bSet); - -exec function gmmf() -{ - //return; -} - -exec function scLog(string LogName, optional bool bEnabled = true) -{ - //return; -} - -exec function scLogMark(string Comment) -{ - //return; -} - -exec function scStartGame(optional string Reason = "Admin") -{ - //return; -} - -exec function scEndGame(optional string Reason = "Admin") -{ - //return; -} - -exec function scScore(int nTeam, optional int nCount = 1) -{ - //return; -} - -exec function scTime(int nSeconds) -{ - //return; -} - -exec function scTimer(string sCommand) -{ - //return; -} - -exec function scDemoRec(string sCommand) -{ - //return; -} - -exec function scDemoStop() -{ - //return; -} - -exec function scPerfDebugFeet(int feet) -{ - //return; -} - -exec function scPerfDebugSkip(int skips) -{ - //return; -} - -exec function scPerfDebugRelevMode(int Mode) -{ - //return; -} - -exec function scPerfTickRate(int tickHz, int altTickHz) -{ - //return; -} - -exec function scPerfPhysThreshold(float thresh1, float thesh2) -{ - //return; -} - -exec function scGPerfServerFlags(int Flags, int alternate1, int alternate2) -{ - //return; -} - -exec function scPerfAlwaysRelevantLimit(int feet) -{ - //return; -} - -exec function scLogTickFlags(int nFlags, optional bool bSet = true) -{ - //return; -} diff --git a/Development/Src/PlatformCommon/Classes/PComUIManagerBase.uc b/Development/Src/PlatformCommon/Classes/PComUIManagerBase.uc deleted file mode 100755 index 2e7ae098..00000000 --- a/Development/Src/PlatformCommon/Classes/PComUIManagerBase.uc +++ /dev/null @@ -1,25 +0,0 @@ -class PComUIManagerBase extends Object - abstract - native; - -struct native ManagerImage -{ - var init string strImageName; - var Texture2DDynamic pTexture; - - structdefaultproperties - { - strImageName="" - pTexture=none - } -}; - -var bool m_bDebugDraw; -var bool m_bLocalLoad; -var init array m_cachedImages; -var init string m_strJson; - -event DebugDraw(Canvas Canvas) -{ - //return; -} diff --git a/Development/Src/PlatformCommon/Classes/PComUtilityFunctions.uc b/Development/Src/PlatformCommon/Classes/PComUtilityFunctions.uc deleted file mode 100755 index 4c178c51..00000000 --- a/Development/Src/PlatformCommon/Classes/PComUtilityFunctions.uc +++ /dev/null @@ -1,11 +0,0 @@ -class PComUtilityFunctions extends Object - native; - -// Export UPComUtilityFunctions::execFakeNetSerialize(FFrame&, void* const) -native static function Vector FakeNetSerialize(const out Vector InVector); - -// Export UPComUtilityFunctions::execIsAWithStop(FFrame&, void* const) -native static function bool IsAWithStop(Object InObject, const Class SomeBase, const Class StopAtBase); - -// Export UPComUtilityFunctions::execGetGDeltaTime(FFrame&, void* const) -native static function float GetGDeltaTime(); diff --git a/Development/Src/PlatformCommon/Classes/PComVideoPlayer.uc b/Development/Src/PlatformCommon/Classes/PComVideoPlayer.uc deleted file mode 100755 index 2a570437..00000000 --- a/Development/Src/PlatformCommon/Classes/PComVideoPlayer.uc +++ /dev/null @@ -1,94 +0,0 @@ -class PComVideoPlayer extends Actor - native - notplaceable - hidecategories(Navigation); - -enum EPComVideoPlayerError -{ - PVPE_NoError, - PVPE_CannotOpenVideo, - PVPE_StreamingProblem, - PVPE_Unknown -}; - -var() string VideoURL; -var() int Width; -var() int Height; -var() float Volume; -var() bool bAutoResize; -var() bool bConstrainAspectRatio; -var() bool bDebugRender; -var transient bool bVideoFinished; -var transient bool bOnVideoFinishedIssued; -var transient bool bHasMinorStreamingProblem; -var() float ConstrainedAspectRatio; -var native transient Pointer Resource; -var transient TextureRenderTarget2D RenderTargetToUse; -var transient TextureRenderTarget2D TextureCopyForStreamingProblem; -var transient float TimeSinceMinorStreamingProblem; -var transient Material StreamingProblemMaterial; -var transient PComVideoPlayer.EPComVideoPlayerError CurrentErrorState; -var transient PComVideoPlayer.EPComVideoPlayerError RenderThreadErrorState; -var transient Texture2D BlackTexture; -//var delegate __OnVideoFinished__Delegate; -//var delegate __OnVideoError__Delegate; - -delegate OnVideoFinished() -{ - //return; -} - -delegate OnVideoError(PComVideoPlayer VideoPlayer, PComVideoPlayer.EPComVideoPlayerError ErrorCode) -{ - //return; -} - -// Export UPComVideoPlayer::execNativePostRenderFor(FFrame&, void* const) -native simulated function NativePostRenderFor(PlayerController PC, Canvas Canvas, Vector CameraPosition, Vector CameraDir); - -// Export UPComVideoPlayer::execInitialize(FFrame&, void* const) -native simulated function Initialize(); - -// Export UPComVideoPlayer::execStopVideoSession(FFrame&, void* const) -native simulated function StopVideoSession(); - -static function TestVideoPlayer(Actor SpawningActor, optional string InURL = "http://sceerd.dl.playstation.net/sceerd/sceavplayer/streaming02.mp4") -{ - //return; -} - -function TestOnVideoError(PComVideoPlayer VideoPlayer, PComVideoPlayer.EPComVideoPlayerError ErrorCode) -{ - //return; -} - -function DestroyMe() -{ - //return; -} - -defaultproperties -{ - Width=1920 - Height=1080 - Volume=1.0000000 - bAutoResize=true - bConstrainAspectRatio=true - ConstrainedAspectRatio=1.7777800 - begin object name=MyRenderTarget class=TextureRenderTarget2D - ClearColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) - bNeedsTwoCopies=false - SRGB=false - end object - // Reference: TextureRenderTarget2D'Default__PComVideoPlayer.MyRenderTarget' - RenderTargetToUse=MyRenderTarget - begin object name=MyRenderTargetCopy class=TextureRenderTarget2D - ClearColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) - bNeedsTwoCopies=false - SRGB=false - end object - // Reference: TextureRenderTarget2D'Default__PComVideoPlayer.MyRenderTargetCopy' - TextureCopyForStreamingProblem=MyRenderTargetCopy - StreamingProblemMaterial=Material'EngineResources.M_StreamingPause' - BlackTexture=Texture2D'EngineResources.Black' -} \ No newline at end of file diff --git a/Development/Src/PlatformCommon/Classes/SearFiles.uc b/Development/Src/PlatformCommon/Classes/SearFiles.uc deleted file mode 100755 index 3f584fd5..00000000 --- a/Development/Src/PlatformCommon/Classes/SearFiles.uc +++ /dev/null @@ -1,3 +0,0 @@ -class SearFiles extends Commandlet - transient - native; diff --git a/Development/Src/TempestMp/Classes/APlayerConfigData.uc b/Development/Src/TempestMp/Classes/APlayerConfigData.uc deleted file mode 100755 index db0990e6..00000000 --- a/Development/Src/TempestMp/Classes/APlayerConfigData.uc +++ /dev/null @@ -1,72 +0,0 @@ -class APlayerConfigData extends Object - config(PlayerData); - -struct PlayerInfo -{ - var string PlayerName; - var string ChampionName; - var string Team; - var string Password; - var string Horse; - var string NetAddress; - var bool bProcessed; -}; - -var config array SavedPlayers; -var config int MaxStoredPlayers; - -function InitializeConfig() -{ - if (MaxStoredPlayers <= 0) - { - MaxStoredPlayers = 100; // TODO: Rename this so it actually makes sense lmao - SaveConfig(); - } -} - - -function PlayerInfo FindPlayerByAddress(string Address) -{ - local PlayerInfo EmptyInfo; - local int i; - - for (i = 0; i < SavedPlayers.Length; i++) - { - if (SavedPlayers[i].NetAddress == Address) - { - return SavedPlayers[i]; - } - } - - return EmptyInfo; -} - -function SavePlayerInfo(PlayerInfo Info) -{ - local int i; - local bool bFound; - - for (i = 0; i < SavedPlayers.Length; i++) - { - if (SavedPlayers[i].NetAddress == Info.NetAddress) - { - SavedPlayers[i] = Info; - bFound = true; - break; - } - } - - if (!bFound) - { - SavedPlayers.AddItem(Info); - } - - SaveConfig(); -} - - -function ClearAllPlayers() -{ - SavedPlayers.Length = 0; - SaveConfig(); -} \ No newline at end of file diff --git a/Development/Src/TempestMp/Classes/AServerConfigData.uc b/Development/Src/TempestMp/Classes/AServerConfigData.uc deleted file mode 100755 index 98534304..00000000 --- a/Development/Src/TempestMp/Classes/AServerConfigData.uc +++ /dev/null @@ -1,260 +0,0 @@ -class AServerConfigData extends Object - config(ServerConfig); - - -var config bool flag; - -struct ChampionData -{ - var string name; - var array aliases; - var int BotId; - var int SkinId; - var int DeviceSkinId; - var int HeadId; - var int sprayId; - var int mountId; - var string Talent; - var string card1; - var string card2; - var string card3; - var string card4; - var string card5; -}; - -var config array Champion; - -function InitializeConfig() -{ - local ChampionData TempChamp; - if(!flag) { - TempChamp.sprayId = 15587; - TempChamp.mountId = 12616; - - // Androxus - TempChamp.name = "androxus"; - TempChamp.aliases.AddItem("andro"); - TempChamp.BotId = 2205; TempChamp.SkinId = 15292; TempChamp.DeviceSkinId = 13168;TempChamp.HeadId = 15160; - TempChamp.Talent = "Dark Stalker"; TempChamp.card1 = "Power of the Abyss iv"; TempChamp.card2 = "Sleight of Hand i"; TempChamp.card3 = "Buying Time i"; TempChamp.card4 = "elusive iv" ; TempChamp.card5 = "Seething Hatred ii"; - Champion.AddItem(TempChamp); - - // Ash - TempChamp.name = "ash"; - TempChamp.aliases.RemoveItem("andro"); - TempChamp.BotId = 2404; TempChamp.SkinId = 16977; TempChamp.DeviceSkinId = 16981; TempChamp.HeadId = 18859; - TempChamp.Talent = "Battering Ram"; TempChamp.card1 = "Heavy Metal iv"; TempChamp.card2 = "Percussion ii"; TempChamp.card3 = "Trebuchet i"; TempChamp.card4 = "Gate Crasher iv"; TempChamp.card5 = "Watchtower i"; - Champion.AddItem(TempChamp); - - // Barik - TempChamp.name = "barik"; - TempChamp.BotId = 2073; TempChamp.SkinId = 12200; TempChamp.DeviceSkinId = 13169; TempChamp.HeadId = 15217; - TempChamp.Talent = "Tinkerin"; TempChamp.card1 = "Healing Station iv"; TempChamp.card2 = "Bowling Ball iv"; TempChamp.card3 = "Failsafe ii"; TempChamp.card4 = "Double Time i"; TempChamp.card5 = "Field Deploy i"; - Champion.AddItem(TempChamp); - - // Bomb King - TempChamp.name = "bombking"; - TempChamp.aliases.AddItem("bk"); - TempChamp.BotId = 2281; TempChamp.SkinId = 15294; TempChamp.DeviceSkinId = 13380; TempChamp.HeadId = 14960; - TempChamp.Talent = "Chain Reaction"; TempChamp.card1 = "Air Blast ii"; TempChamp.card2 = "Backdraft ii"; TempChamp.card3 = "King's New Cloak ii"; TempChamp.card4 = "Royal Decree iv"; TempChamp.card5 = "King's Court ii"; - Champion.AddItem(TempChamp); - - // Buck - TempChamp.name = "buck"; - TempChamp.aliases.RemoveItem("bk"); - TempChamp.BotId = 2147; TempChamp.SkinId = 15295; TempChamp.DeviceSkinId = 13170; TempChamp.HeadId = 15572; - TempChamp.Talent = "Bounce House"; TempChamp.card1 = "Leg Day iv"; TempChamp.card2 = "Stomping Ground ii"; TempChamp.card3 = "Seismic Wave iv"; TempChamp.card4 = "Rapid Sustain i"; TempChamp.card5 = "Giga Siphon i"; - Champion.AddItem(TempChamp); - - // Cassie - TempChamp.name = "cassie"; - TempChamp.BotId = 2092; TempChamp.SkinId = 12201; TempChamp.DeviceSkinId = 13171; TempChamp.HeadId = 15926; - TempChamp.Talent = "Exaction"; TempChamp.card1 = "Incitement iv"; TempChamp.card2 = "Somersault ii"; TempChamp.card3 = "Onslaught iii"; TempChamp.card4 = "Lunge ii"; TempChamp.card5 = "Megaton i"; - Champion.AddItem(TempChamp); - - // Drogoz - TempChamp.name = "drogoz"; - TempChamp.BotId = 2277; TempChamp.SkinId = 13404; TempChamp.DeviceSkinId = 13379; TempChamp.HeadId = 15274; - TempChamp.Talent = "W.Y.R.M. Jets"; TempChamp.card1 = "Propel iv"; TempChamp.card2 = "Fuel Tank iii"; TempChamp.card3 = "Survival ii"; TempChamp.card4 = "Follow the Scent i"; TempChamp.card5 = "Lung Capacity i"; - Champion.AddItem(TempChamp); - - // Evie - TempChamp.name = "evie"; - TempChamp.BotId = 2094; TempChamp.SkinId = 15298; TempChamp.DeviceSkinId = 13172; TempChamp.HeadId = 15204; - TempChamp.Talent = "Over the Moon"; TempChamp.card1 = "Swift Witch iii"; TempChamp.card2 = "Killing Frost iv"; TempChamp.card3 = "Cantrip i"; TempChamp.card4 = "Teleport ii"; TempChamp.card5 = "Great Distance ii"; - Champion.AddItem(TempChamp); - - // Fernando - TempChamp.name = "fernando"; - TempChamp.aliases.AddItem("nando"); - TempChamp.BotId = 2071; TempChamp.SkinId = 15299; TempChamp.DeviceSkinId = 13173; TempChamp.HeadId = 15257; - TempChamp.Talent = "Scorch"; TempChamp.card1 = "Hot Pursuit iv"; TempChamp.card2 = "Incinerate iv"; TempChamp.card3 = "Heat Transfer i"; TempChamp.card4 = "Last Stand ii"; TempChamp.card5 = "Launch i"; - Champion.AddItem(TempChamp); - - // Grohk - TempChamp.name = "grohk"; - TempChamp.aliases.RemoveItem("nando"); - TempChamp.BotId = 2093; TempChamp.SkinId = 15300; TempChamp.DeviceSkinId = 13174; TempChamp.HeadId = 15243; - TempChamp.Talent = "Totemic Ward"; TempChamp.card1 = "Gale iv"; TempChamp.card2 = "Shamanic Might i"; TempChamp.card3 = "Outreach iv"; TempChamp.card4 = "Crackle ii"; TempChamp.card5 = "Astral Traveler i"; - Champion.AddItem(TempChamp); - - // Grover - TempChamp.name = "grover"; - TempChamp.BotId = 2254; TempChamp.SkinId = 15301; TempChamp.DeviceSkinId = 13175; TempChamp.HeadId = 15588; - TempChamp.Talent = "Ferocity"; TempChamp.card1 = "Verdant Expanse iv"; TempChamp.card2 = "Gentle Breeze iv"; TempChamp.card3 = "Adrenaline i"; TempChamp.card4 = "Vine Grasp i"; TempChamp.card5 = "Over growth ii"; - Champion.AddItem(TempChamp); - - // Inara - TempChamp.name = "inara"; - TempChamp.aliases.AddItem("nara"); - TempChamp.BotId = 2348; TempChamp.SkinId = 16245; TempChamp.DeviceSkinId = 16290; TempChamp.HeadId = 16287; - TempChamp.Talent = "Mothers Grace"; TempChamp.card1 = "Geomancer iv"; TempChamp.card2 = "Steadfast ii"; TempChamp.card3 = "Shear i"; TempChamp.card4 = "Lodestone i"; TempChamp.card5 = "Stone Bulwark iv"; - Champion.AddItem(TempChamp); - - // Jenos - TempChamp.name = "jenos"; - TempChamp.aliases.RemoveItem("nara"); - TempChamp.BotId = 2431; TempChamp.SkinId = 19034; TempChamp.DeviceSkinId = 19035; TempChamp.HeadId = 19224; - TempChamp.Talent = "Luminary"; TempChamp.card1 = "Star Seeker iv"; TempChamp.card2 = "Space Jam iv"; TempChamp.card3 = "Relativity ii"; TempChamp.card4 = "Lightyears i"; TempChamp.card5 = "Heavenly Pull i"; - Champion.AddItem(TempChamp); - - // Kinessa - TempChamp.name = "kinessa"; - TempChamp.aliases.AddItem("nessa"); - TempChamp.BotId = 2249; TempChamp.SkinId = 12941; TempChamp.DeviceSkinId = 13176; TempChamp.HeadId = 15235; - TempChamp.Talent = "Steady Aim"; TempChamp.card1 = "Prodigy iv"; TempChamp.card2 = "Beam Me Up iv"; TempChamp.card3 = "Open Season i"; TempChamp.card4 = "Quick Scope ii"; TempChamp.card5 = "True Grit i"; - Champion.AddItem(TempChamp); - - // Lex - TempChamp.name = "lex"; - TempChamp.aliases.RemoveItem("nessa"); - TempChamp.BotId = 2362; TempChamp.SkinId = 16531; TempChamp.DeviceSkinId = 16532; TempChamp.HeadId = 16958; - TempChamp.Talent = "Death Hastens"; TempChamp.card1 = "Warrants Out iv"; TempChamp.card2 = "Requip ii"; TempChamp.card3 = "Wicked Dont Rest iv"; TempChamp.card4 = "Conditioned i"; TempChamp.card5 = "Compel i"; - Champion.AddItem(TempChamp); - - // Lian - TempChamp.name = "lian"; - TempChamp.BotId = 2417; TempChamp.SkinId = 19032; TempChamp.DeviceSkinId = 19033; TempChamp.HeadId = 19321; - TempChamp.Talent = "Eminence"; TempChamp.card1 = "Heraldry iv"; TempChamp.card2 = "Manifest Destiny ii"; TempChamp.card3 = "Highborn ii"; TempChamp.card4 = "Superiority i"; TempChamp.card5 = "Inheritance iii"; - Champion.AddItem(TempChamp); - - // Maeve - TempChamp.name = "maeve"; - TempChamp.BotId = 2338; TempChamp.SkinId = 16216; TempChamp.DeviceSkinId = 16221; TempChamp.HeadId = 16217; - TempChamp.Talent = "Cat Burglar"; TempChamp.card1 = "Street Cred ii"; TempChamp.card2 = "Chase iv"; TempChamp.card3 = "Scamper iv"; TempChamp.card4 = "featherlite i"; TempChamp.card5 = "walk it off i"; - Champion.AddItem(TempChamp); - - // Makoa - TempChamp.name = "makoa"; - TempChamp.aliases.AddItem("koa"); - TempChamp.BotId = 2288; TempChamp.SkinId = 14465; TempChamp.DeviceSkinId = 14466; TempChamp.HeadId = 15124; - TempChamp.Talent = "Pluck"; TempChamp.card1 = "Rampage iv"; TempChamp.card2 = "Strongarm ii"; TempChamp.card3 = "Surf iv"; TempChamp.card4 = "Salvage i"; TempChamp.card5 = "Ebb And Flow i"; - Champion.AddItem(TempChamp); - - // Mal'Damba - TempChamp.name = "maldamba"; - TempChamp.aliases.RemoveItem("koa"); - TempChamp.aliases.AddItem("damba"); - TempChamp.BotId = 2303; TempChamp.SkinId = 14587; TempChamp.DeviceSkinId = 14593; TempChamp.HeadId = 15194; - TempChamp.Talent = "Ripened Gourd"; TempChamp.card1 = "Possession iv"; TempChamp.card2 = "Swift Spirits iv"; TempChamp.card3 = "Eerie Presence ii"; TempChamp.card4 = "Ritual Magic i"; TempChamp.card5 = "Lighter Gourd i"; - Champion.AddItem(TempChamp); - - // Pip - TempChamp.name = "pip"; - TempChamp.aliases.RemoveItem("damba"); - TempChamp.BotId = 2056; TempChamp.SkinId = 15303; TempChamp.DeviceSkinId = 13177; TempChamp.HeadId = 14954; - TempChamp.Talent = "Catalyst"; TempChamp.card1 = "Moxie iii"; TempChamp.card2 = "Acumen iii"; TempChamp.card3 = "Side Tanks ii"; TempChamp.card4 = "Escape Artist iii"; TempChamp.card5 = "Smithereens i"; - Champion.AddItem(TempChamp); - - // Ruckus - TempChamp.name = "ruckus"; - TempChamp.BotId = 2149; TempChamp.SkinId = 15304; TempChamp.DeviceSkinId = 13178; TempChamp.HeadId = 15795; - TempChamp.Talent = "Aerial Assault"; TempChamp.card1 = "Fuel Reserves iv"; TempChamp.card2 = "Dampener ii"; TempChamp.card3 = "Crystal Capacitor iv"; TempChamp.card4 = "Refraction i"; TempChamp.card5 = "E.M.P i"; - Champion.AddItem(TempChamp); - - // Seris - TempChamp.name = "seris"; - TempChamp.BotId = 2372; TempChamp.SkinId = 16584; TempChamp.DeviceSkinId = 16585; TempChamp.HeadId = 16586; - TempChamp.Talent = "Mortal Reach"; TempChamp.card1 = "Veil iv"; TempChamp.card2 = "Blood Pact ii"; TempChamp.card3 = "Dark Sight i"; TempChamp.card4 = "Spirit Leech i"; TempChamp.card5 = "Umbral Gait iv"; - Champion.AddItem(TempChamp); - - // Sha Lin - TempChamp.name = "shalin"; - TempChamp.aliases.AddItem("sha"); - TempChamp.BotId = 2307; TempChamp.SkinId = 14890; TempChamp.DeviceSkinId = 14892; TempChamp.HeadId = 15642; - TempChamp.Talent = "Desert Shadow"; TempChamp.card1 = "Wanderlust iv"; TempChamp.card2 = "Swagger ii"; TempChamp.card3 = "Run Them Down iv"; TempChamp.card4 = "Mirage i"; TempChamp.card5 = "Run like the Wind i"; - Champion.AddItem(TempChamp); - - // Skye - TempChamp.name = "skye"; - TempChamp.aliases.RemoveItem("sha"); - TempChamp.BotId = 2057; TempChamp.SkinId = 12207; TempChamp.DeviceSkinId = 13179; TempChamp.HeadId = 15407; - TempChamp.Talent = "Surprise Attack"; TempChamp.card1 = "Victory Rush iv"; TempChamp.card2 = "Poisoner ii"; TempChamp.card3 = "Ninja iv"; TempChamp.card4 = "Dissipate i"; TempChamp.card5 = "Nimble Fingers i"; - Champion.AddItem(TempChamp); - - // Strix - TempChamp.name = "strix"; - TempChamp.BotId = 2438; TempChamp.SkinId = 19112; TempChamp.DeviceSkinId = 19136; TempChamp.HeadId = 19642; - TempChamp.Talent = "Crack Shot"; TempChamp.card1 = "Bushwack iii"; TempChamp.card2 = "Dexterous iii"; TempChamp.card3 = "Tactical Retreat iii"; TempChamp.card4 = "Relentless ii"; TempChamp.card5 = "Cooled Mags i"; - Champion.AddItem(TempChamp); - - // Torvald - TempChamp.name = "torvald"; - TempChamp.aliases.AddItem("torv"); - TempChamp.BotId = 2322; TempChamp.SkinId = 16485; TempChamp.DeviceSkinId = 15809; TempChamp.HeadId = 16236; - TempChamp.Talent = "Field Study"; TempChamp.card1 = "Winddancer iii"; TempChamp.card2 = "Glyph of Health ii"; TempChamp.card3 = "Eldritch Speed iv"; TempChamp.card4 = "Timeshaper ii"; TempChamp.card5 = "Scribe's Wit i"; - Champion.AddItem(TempChamp); - - // Tyra - TempChamp.name = "tyra"; - TempChamp.aliases.RemoveItem("torv"); - TempChamp.BotId = 2314; TempChamp.SkinId = 15822; TempChamp.DeviceSkinId = 15821; TempChamp.HeadId = 16068; - TempChamp.Talent = "Mercy Kill"; TempChamp.card1 = "Locked and Loaded ii"; TempChamp.card2 = "Bandolier iv"; TempChamp.card3 = "Tracker ii"; TempChamp.card4 = "Ranger i"; TempChamp.card5 = "Incensed iii"; - Champion.AddItem(TempChamp); - - // Viktor - TempChamp.name = "viktor"; - TempChamp.aliases.AddItem("vik"); - TempChamp.BotId = 2285; TempChamp.SkinId = 14173; TempChamp.DeviceSkinId = 14174; TempChamp.HeadId = 15154; - TempChamp.Talent = "Cardio"; TempChamp.card1 = "Scramble iv"; TempChamp.card2 = "Compensator ii"; TempChamp.card3 = "Firing Stance iv"; TempChamp.card4 = "Flak Jacket i"; TempChamp.card5 = "Second Wind i"; - Champion.AddItem(TempChamp); - - // Willo - TempChamp.name = "willo"; - TempChamp.aliases.RemoveItem("vik"); - TempChamp.BotId = 2393; TempChamp.SkinId = 16810; TempChamp.DeviceSkinId = 16811; TempChamp.HeadId = 18307; - TempChamp.Talent = "Blastflower"; TempChamp.card1 = "Hummingbird i"; TempChamp.card2 = "Flora iv"; TempChamp.card3 = "Just Believe! ii"; TempChamp.card4 = "Flitter iv"; TempChamp.card5 = "Germination i"; - Champion.AddItem(TempChamp); - - // Ying - TempChamp.name = "ying"; - TempChamp.aliases.AddItem("bestwaifu"); - TempChamp.BotId = 2267; TempChamp.SkinId = 13212; TempChamp.DeviceSkinId = 13221; TempChamp.HeadId = 15418; - TempChamp.Talent = "Lifelike"; TempChamp.card1 = "Spring Bloom iv"; TempChamp.card2 = "Spring Forward iii"; TempChamp.card3 = "Rewind i"; TempChamp.card4 = "Shuffle iii"; TempChamp.card5 = "Efficiency i"; - Champion.AddItem(TempChamp); - - // Zhin - TempChamp.name = "zhin"; - TempChamp.aliases.RemoveItem("bestwaifu"); - TempChamp.BotId = 2420; TempChamp.SkinId = 18231; TempChamp.DeviceSkinId = 18300; TempChamp.HeadId = 18232; - TempChamp.Talent = "Retaliation"; TempChamp.card1 = "Blade Dance ii"; TempChamp.card2 = "Master Stance iv"; TempChamp.card3 = "Perfect Block ii"; TempChamp.card4 = "Hideout ii"; TempChamp.card5 = "Up in Smoke ii"; - Champion.AddItem(TempChamp); - - // Churchill (Vivian) - TempChamp.name = "churchill"; - TempChamp.aliases.AddItem("vivian"); - TempChamp.BotId = 2478; TempChamp.SkinId = 15810; TempChamp.DeviceSkinId = 16236; TempChamp.HeadId = 14174; - TempChamp.Talent = ""; TempChamp.card1 = ""; TempChamp.card2 = ""; TempChamp.card3 = ""; - Champion.AddItem(TempChamp); - - // Lazarus (Terminus) - TempChamp.name = "lazarus"; - TempChamp.aliases.RemoveItem("vivian"); - TempChamp.aliases.AddItem("terminus"); - TempChamp.BotId = 2477; TempChamp.SkinId = 19431; TempChamp.DeviceSkinId = 19434; TempChamp.HeadId = 19750; - TempChamp.Talent = ""; TempChamp.card1 = ""; TempChamp.card2 = ""; TempChamp.card3 = ""; - Champion.AddItem(TempChamp); - - flag = true; // if this gets touched, the entire thing is fucked, but nobody will be dumb enough to touch it - SaveConfig(); - } -} \ No newline at end of file diff --git a/Development/Src/TempestMp/Classes/ATempestLib.uc b/Development/Src/TempestMp/Classes/ATempestLib.uc deleted file mode 100755 index c2cb609e..00000000 --- a/Development/Src/TempestMp/Classes/ATempestLib.uc +++ /dev/null @@ -1,148 +0,0 @@ -class ATempestLib extends Actor; -// A collection of useful functions - -var int lastWorldTime; -var string OriginalPlayerName; -var string AnimatedPlayerName; -var float NameAnimStartTime; -var bool bNameAnimActive; - -public function initTimer() { - lastWorldTime = WorldInfo.TimeSeconds; -} - -public function bool hasTimeElapsed(int seconds, bool reset) { - if((WorldInfo.TimeSeconds - lastWorldTime) > seconds) { - if(reset) { - lastWorldTime = WorldInfo.TimeSeconds; - } - return true; - } - return false; -} - -public function int toInt(coerce int strNb) { - return strNb; -} - -public function string decodeURLParam(string encodedParam) -{ - local string decodedParam; - decodedParam = encodedParam; - - // Decode common URL entities - decodedParam = Repl(decodedParam, "%spc", " "); - decodedParam = Repl(decodedParam, "%qtm", "?"); - decodedParam = Repl(decodedParam, "%amp", "&"); - decodedParam = Repl(decodedParam, "%eql", "="); - decodedParam = Repl(decodedParam, "%hsh", "#"); - decodedParam = Repl(decodedParam, "%prc", "%"); - - return decodedParam; -} - -function string UpdateAnimatedName(string PlayerName) -{ - local string TargetName; - local int MaxSteps; - local float ElapsedTime; - local int CurrentStep; - local float CycleTime; - local int CharPos; - local int VisibleChars; - - // Initialize if needed - if (OriginalPlayerName != PlayerName || !bNameAnimActive) - { - OriginalPlayerName = PlayerName; - NameAnimStartTime = WorldInfo.TimeSeconds; - bNameAnimActive = true; - } - - // Build target string - TargetName = "<3 " $ OriginalPlayerName $ " <3"; - MaxSteps = Len(TargetName); - - // Calculate elapsed time since animation started - ElapsedTime = WorldInfo.TimeSeconds - NameAnimStartTime; - - // Total cycle time: animation + 2 second pause - CycleTime = (MaxSteps + 2) * 1; // 4 extra steps for 2 second pause - - // Get position within current cycle - ElapsedTime = ElapsedTime - (int(ElapsedTime / CycleTime) * CycleTime); - - // Calculate current step (0.5 seconds per step, but skip spaces) - CurrentStep = int(ElapsedTime / 1); - - // Build display string - if (CurrentStep == 0) - { - AnimatedPlayerName = ""; - } - else if (CurrentStep <= MaxSteps) - { - // Find the actual character position, skipping spaces in timing - - VisibleChars = 0; - for (CharPos = 1; CharPos <= MaxSteps && VisibleChars < CurrentStep; CharPos++) - { - if (Mid(TargetName, CharPos - 1, 1) != " ") - { - VisibleChars++; - } - if (VisibleChars >= CurrentStep) - { - AnimatedPlayerName = Left(TargetName, CharPos); - break; - } - } - - // If we've processed all characters, show the full string - if (CharPos > MaxSteps) - { - AnimatedPlayerName = TargetName; - } - } - else - { - // Show complete name during pause - AnimatedPlayerName = TargetName; - } - - return AnimatedPlayerName; -} - -/* -public function setNextMap() { - local TgPlayerController TgPC; - local int rmap; - local array ValidMaps; - local int i; - local string Gamemode; - Gamemode = "Siege"; - for(i = 0; i < allMaps.MapDatabase.Length; i++) { - if(allMaps.MapDatabase[i].MapGamemodes.Find(Gamemode) != INDEX_NONE) { - ValidMaps.AddItem(allMaps.MapDatabase[i]); - } - } - - if(ValidMaps.Length > 0) { - rmap = rand(ValidMaps.Length); - nextMap = ValidMaps[rmap].MapName; - - foreach AllActors(class'TgPlayerController', TgPC) { - TgPC.ClientMessage("The server will soon restart and your game will close.", , 15); - TgPC.ClientMessage("The next Map will be:" @ ValidMaps[rmap].MapReadableName, , 15); - } - } else { - rmap = rand(allMaps.MapDatabase.Length); - nextMap = allMaps.MapDatabase[rmap].MapName; - - foreach AllActors(class'TgPlayerController', TgPC) { - TgPC.ClientMessage("The server will soon restart and your game will close.", , 15); - TgPC.ClientMessage("The next Map will be:" @ allMaps.MapDatabase[rmap].MapReadableName, , 15); - } - } -} - */ \ No newline at end of file diff --git a/Development/Src/TempestMp/Classes/Maps.uc b/Development/Src/TempestMp/Classes/Maps.uc deleted file mode 100755 index 3d5c6469..00000000 --- a/Development/Src/TempestMp/Classes/Maps.uc +++ /dev/null @@ -1,60 +0,0 @@ -class Maps extends Object; - -struct MapData -{ - var string MapName; - var array MapGamemodes; - var string MapReadableName; -}; - -var array MapDatabase; - -public function loadMaps() -{ - local MapData TempMap; - TempMap.MapGamemodes.AddItem("Siege"); - TempMap.MapGamemodes.AddItem("TDM"); - - - TempMap.MapName = "IMM_Mines_P_v04"; TempMap.MapReadableName = "Ice Mines"; MapDatabase.AddItem(TempMap); - TempMap.MapName = "BMM_P_v01"; TempMap.MapReadableName = "Brightmarsh"; MapDatabase.AddItem(TempMap); - TempMap.MapName = "TMM_Beach_P_v04"; TempMap.MapReadableName = "Serpent Beach"; MapDatabase.AddItem(TempMap); - TempMap.MapName = "TMM_Falls_P_v04"; TempMap.MapReadableName = "Jaguar Falls"; MapDatabase.AddItem(TempMap); - TempMap.MapName = "TMM_P_Isle_v02"; TempMap.MapReadableName = "Frog Isle"; MapDatabase.AddItem(TempMap); - TempMap.MapName = "QMM_P_v01"; TempMap.MapReadableName = "Splitstone Quarry"; MapDatabase.AddItem(TempMap); - TempMap.MapName = "KMM_P_v01"; TempMap.MapReadableName = "Stone Keep"; MapDatabase.AddItem(TempMap); - TempMap.MapName = "FMM_Mill_P_v04"; TempMap.MapReadableName = "Timber Mill"; MapDatabase.AddItem(TempMap); - TempMap.MapName = "IMM_P_Igloo_v02"; TempMap.MapReadableName = "Frozen Guard"; MapDatabase.AddItem(TempMap); - - TempMap.MapGamemodes.RemoveItem("Siege"); - TempMap.MapGamemodes.AddItem("Onslaught"); - - TempMap.MapName = "BMO_P_v01"; TempMap.MapReadableName = "Brightmarsh"; MapDatabase.AddItem(TempMap); - TempMap.MapName = "IOM_P_v01"; TempMap.MapReadableName = "Snowfall Junction"; MapDatabase.AddItem(TempMap); - TempMap.MapName = "TOM_P_v01"; TempMap.MapReadableName = "Primal Court"; MapDatabase.AddItem(TempMap); - TempMap.MapName = "TMO_Falls_P_v04"; TempMap.MapReadableName = "Jaguar Falls"; MapDatabase.AddItem(TempMap); - - TempMap.MapGamemodes.RemoveItem("Onslaught"); - TempMap.MapGamemodes.AddItem("Payload"); - - TempMap.MapName = "FPM_P_v01"; TempMap.MapReadableName = "Greenwood Outpost"; MapDatabase.AddItem(TempMap); - TempMap.MapName = "IPM_P_v01"; TempMap.MapReadableName = "Frostbite Cavern"; MapDatabase.AddItem(TempMap); - TempMap.MapName = "TPM_P_v01"; TempMap.MapReadableName = "Hidden Temple"; MapDatabase.AddItem(TempMap); - - TempMap.MapGamemodes.RemoveItem("Payload"); - TempMap.MapGamemodes.AddItem("ShootingRange"); - - TempMap.MapName = "ShootingRange_P"; TempMap.MapReadableName = "Shooting Range"; MapDatabase.AddItem(TempMap); - - // BMO_P_v01 brightmarsh onslaught - // IOM_P_v01 snowfall junction onslaught - // TOM_P_v01 primal court onslaught - // TMO_Falls_P_v04 jagual falls onslaught - - // FPM_P_v01 greenwood outpost payload - // IPM_P_v01 frostbite cavern payload - // TPM_P_v01 hidden temple payload - - // ShootingRange_P shooting range - // FT_P_v01 tutorial -} \ No newline at end of file diff --git a/Development/Src/TempestMp/Classes/Onslaught.uc b/Development/Src/TempestMp/Classes/Onslaught.uc deleted file mode 100755 index 18cefb6a..00000000 --- a/Development/Src/TempestMp/Classes/Onslaught.uc +++ /dev/null @@ -1,598 +0,0 @@ -class Onslaught extends TgGame_Paladins_Onslaught; - -var TgGame m_TgG; -var TgRepInfo_Game GRI; - -var int m_nPlayerCount; -var array m_Players; -var array pendingMountPawns; - -var array m_ProxyActors; - -var ATempestLib TempestLib; - -var Maps allMaps; -var string nextMap; -var bool isTravelling; - -var AServerConfigData ServerConfig; - -struct PendingLoginData -{ - var string netAddress; - var int uniqueAddressId; - var string playerName; - var string championName; - var string team; - var string password; - var string horse; -}; - -var array pendingLogins; - -struct ServerParameters { - var int maxPlayers; - var string password; - var string mapName; - var array allowedChampions; - var bool allowSpectators; - var bool totalMayhem; -}; - -var ServerParameters sOptions; - -var TgRepInfo_Player shouldAnimateYourNamePRI; -var PendingLoginData shouldAnimateYourNameData; - -public event InitGame(String Options, out String ErrorMessage) -{ - super.InitGame(Options, ErrorMessage); - - TempestLib = self.Spawn(Class'ATempestLib', self); - TempestLib.SetOwner(self); - TempestLib.initTimer(); - - sOptions.maxPlayers = TempestLib.toInt(ParseOption(Options, "maxplayers")); - sOptions.password = ParseOption(Options, "serverpassword"); - sOptions.allowSpectators = HasOption(Options, "allowSpectators"); - sOptions.totalMayhem = HasOption(Options, "totalMayhem"); - if(sOptions.maxPlayers == 0) - sOptions.maxPlayers = 10; - - ParseStringIntoArray(ParseOption(Options, "allowedChampions"), sOptions.allowedChampions, ",", true); -} - -event PreLogin(string Options, string Address, const UniqueNetId UniqueId, bool bSupportsAuth, out string ErrorMessage) -{ - local PendingLoginData Data; - local int i, uniqueAddressId; - - super.PreLogin(Options, Address, UniqueId, bSupportsAuth, ErrorMessage); - - Address = Repl(Address, ".", ""); - - uniqueAddressId = (((TempestLib.toInt(Address) % 1000000) + ((int(WorldInfo.TimeSeconds * 10000) % 10000000) * 1000)) / (Len(Address) * 10)) + Rand(10000); - uniqueAddressId = int(Abs(uniqueAddressId)); - `log(uniqueAddressId); - - for (i = 0; i < pendingLogins.Length; i++) { - if (pendingLogins[i].NetAddress == Address) { - pendingLogins.Remove(i, 1); - } - } - - Data.NetAddress = Address; - Data.uniqueAddressId = uniqueAddressId; - Data.PlayerName = TempestLib.decodeURLParam(ParseOption(Options, "name")); - Data.ChampionName = ParseOption(Options, "class"); - Data.Team = ParseOption(Options, "team"); - Data.password = ParseOption(Options, "password"); - Data.horse = ParseOption(Options, "horse"); - - pendingLogins.AddItem(Data); -} - -public event PostLogin(PlayerController NewPlayer) -{ - local TgPlayerController TgPC; - local TempestSpectatorController TgSpec; - local TgPawn_Character TgP; - local TempestProxyActor ProxyActor; - local TempestProxyActor ProxyActorS; - local TgRepInfo_Player TgRPI; - local TgInventoryManager InvMgr; - local PendingLoginData Data; - local ChampionData SelectedChampion; - local TgDevice_Mount MountDevice; - local string Address; - local int i; - super.PostLogin(NewPlayer); - - Address = Repl(NewPlayer.GetPlayerNetworkAddress(), ".", ""); - - for (i = 0; i < pendingLogins.Length; i++) { - if (pendingLogins[i].NetAddress == Address) { - Data = pendingLogins[i]; - } - } - - TgPC = TgPlayerController(NewPlayer); - TgRPI = TgRepInfo_Player(NewPlayer.PlayerReplicationInfo); - - ProxyActor = Class'TempestUtils'.static.SetupProxy(TgPC); - ProxyActor.ServerAddCheats(); - - TgPC.CheatClass = Class'TgGame.TgBattleCheatManager'; - // End:0x34A - if(TgPC.CheatManager == none) - { - TgPC.CheatManager = new (TgPC) Class'TgGame.TgBattleCheatManager'; - // End:0x314 - if(TgPC.CheatManager != none) - { - TgPC.CheatManager.InitCheatManager(); - LogInternal((("TempestProxyActor: CheatManager successfully created and initialized : " @ string(TgPC.CheatManager.Name)) @ ":") @ string(TgPC.CheatManager.Outer.Name)); - } - else - { - LogInternal("TempestProxyActor: Failed to create CheatManager!"); - } - } - - m_nPlayerCount++; - - if (hasLoginBeenRejected(NewPlayer, Data)) - return; - - m_ProxyActors.AddItem(ProxyActor); - - for (i = 0; i < sOptions.allowedChampions.Length; i++) { - ProxyActor.ClientPrecacheClass(sOptions.allowedChampions[i]); - } - - // the horse - ProxyActor.ClientTestPrecache(2236, 12612, 0, 0, true); - ProxyActor.ClientTestPrecache(2236, 12616, 0, 0, true); - ProxyActor.ClientTestPrecache(2236, 16526, 0, 0, true); - - ProxyActor.ClientTestPrecache(2267, 18656, 18655, 18657, true); - - SelectedChampion = setChampion(Data); - SelectedChampion.mountId = getHorse(Data); - SelectedChampion.sprayId = getSpray(Data); - - SelectedChampion = setBelgianYing(Data, SelectedChampion); - - checkShouldAnimateYourName(Data, TgRPI); - - Class'TempestUtils'.static.SetupPRI(m_TgG, TgRPI, Data.uniqueAddressId, Data.playerName, getTeam(Data), SelectedChampion.mountId, getTitle(Data)); - - Class'TempestUtils'.static.SpawnPawn(self, TgPC, SelectedChampion.BotId, SelectedChampion.SkinId, SelectedChampion.DeviceSkinId, SelectedChampion.HeadId, SelectedChampion.mountId); - - //NewPlayer.Player.SwitchController(TgPC); - TgP = TgPawn_Character(TgPC.Pawn); - - if (Role == Role_Authority) { - TgP.m_bAirAccuracyPenalty = false; - InvMgr = TgInventoryManager(TgP.InvManager); - - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card1), 19, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card2), 20, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card3), 21, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card4), 22, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card5), 5, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.Talent), 25, , true, ); - - InvMgr.AddDevice(SelectedChampion.sprayId, 17, , true, ); - } - - TgP.PostPawnSetupServer(); - if(sOptions.TotalMayhem) { - TgRPI.UpdateHealth(TgP.Health, TgP.GetMaxHealth() * 2); - } - - MountDevice = TgDevice_Mount(TgP.GetDeviceByEqPoint(23)); - // End:0x190 - if(MountDevice != none) - { - MountDevice.SetAllowMountServerTimer(); - MountDevice.ClientStartMount(); - } - - ProxyActor.ClientConsoleCommand("setreadytoplay"); -} - -public function Logout(Controller Exiting) { - local int i; - super.Logout(Exiting); - - m_nPlayerCount--; - if(!isTravelling) { - for (i = 0; i < m_ProxyActors.Length; i++) { - if (m_ProxyActors[i].Owner == Exiting) { - m_ProxyActors.Remove(i, 1); - } - } - setTimer(0.25, false, 'removeBots'); - } -} - -public event PreBeginPlay() { - super.PreBeginPlay(); - m_TgG = TgGame(WorldInfo.Game); - - allMaps = new class'Maps'; - allMaps.loadMaps(); - - m_nPlayerCount = 0; -} - -private function debugKillcam() { - local TgPlayerController TgPC; - local TgPawn Pawn; - GRI.r_bAttackersKillCamEnabled = true; - GRI.r_bDefendersKillCamEnabled = true; - `log(string(WorldInfo.IsRecordingTimelapse()) @ string(WorldInfo.IsPlayingTimelapse())); - `log(GameplayEventsWriter); - foreach AllActors(class'TgPlayerController', TgPC) { - if(TgPC.Pawn != none) { - Pawn = TgPawn(TgPC.Pawn); - `log("CHECK FOR" @ Pawn.Name); - TgPC.bForcedTimelapseRequested = true; - `log(string(TgPC.CanPlayKillCam(false))); - if((TgPC.r_fServerTimeStamp - Pawn.r_fReconnectTime) < 30.0) { - `log("TIMESTAMP < 30 IS CAUSING THE FALSE"); - } - if(GRI == none) { - `log("GRI NONE IS CAUSING THE FALSE"); - } - if(!GRI.r_bKillCamEnabled) { - `log("KILLCAMENABLED IS CAUSING THE FALSE"); - } - if(GRI.r_bBlockKillCam) { - `log("BLOCKKILLCAM IS CAUSING THE FALSE"); - } - if(GRI.r_AttackingTaskForce == none) { - `log("GRI ATTACKING TASKFORCE NONE IS CAUSING THE FALSE"); - } - if(!GRI.r_bAttackersKillCamEnabled) { - `log("GRI ATTACKERS KILLCAM IS CAUSING THE FALSE"); - } - if(!GRI.r_bDefendersKillCamEnabled) { - `log("GRI DEFENDERS KILLCAM IS CAUSING THE FALSE"); - } - if(!(TgPC.m_nKillCamTargetId >= 0)) { - `log("KILLCAM TARGET ID IS CAUSING THE FALSE"); - } - if(GRI.r_AttackingTaskForce.GetTeamNum() != TgPC.GetTaskForceNumber()) { - `log("GET TEAM NUM NONE IS CAUSING THE FALSE"); - } - `log(""); - `log(""); - `log(""); - } - } -} - -public function ScoreKill(Controller Killer, Controller Other) -{ - local TgPlayerController TgPCKiller; - local TgPlayerController TgPCKilled; - local TgPawn killerPawn; - local TgPawn killedPawn; - super.ScoreKill(Killer, Other); - - TgPCKiller = TgPlayerController(Killer); - TgPCKilled = TgPlayerController(Other); - - killerPawn = TgPawn(TgPCKiller.Pawn); - KilledPawn = TgPawn(TgPCKilled.Pawn); - - `log("FIRED SCOREKILL" @ killerPawn.Name); - `log("KILLER PAWNID" @ killerPawn.r_nPawnId); - `log("KILLER OWNER" @ killerPawn.r_Owner.Name); - TgPCKilled.SetKillCamTarget(KillerPawn); - TgPCKilled.ClientSetKillCamTarget(killerPawn.r_nPawnId, killerPawn.r_nPawnId); - `log("TG PC KILLED" @ TgPCKilled.m_nKillCamTargetId @ TgPCKilled.m_nKillCamTargetBackupId); - `log("TG PC KILLER" @ TgPCKiller.m_nKillCamTargetId @ TgPCKiller.m_nKillCamTargetBackupId); - `log("KillCamViewTarget" @ TgPCKilled.GetBestKillCamTarget().Name); - //TgPCKilled.StartTimelapsePlayback(-7.5000000, -3.0000000, false); - //TgPCKilled.ControllerPreTimeLapse(); - TgPCKilled.StartTimelapse(); - //KilledPawn.PreTimeLapse(false); -} - -public event PostBeginPlay() { - super.PostBeginPlay(); - - m_TgG = TgGame(WorldInfo.Game); - GRI = TgRepInfo_Game(WorldInfo.GRI); - isTravelling = false; - - if(Role == Role_Authority) { - ServerConfig = new class'AServerConfigData'; - ServerConfig.InitializeConfig(); - } - if(sOptions.TotalMayhem) { - SetTimer(1, true, 'runTotalMayhem'); - m_fBaseRespawnTime = 1; - m_fDefenseRespawnIncrease = 0; - m_fAttackRespawnIncrease = 0; - m_bCanPurchaseItemsAnywhere = true; - } - -} - -private function killcontroller() { - local TgPlayerController TgPC; - local TempestSpectatorController TgSC; - local TgRepInfo_Player TgRPI; - local Vector CamLoc; - local Rotator CamRot; - - foreach AllActors(class'TempestSpectatorController', TgSC) { - TgRPI = TgRepInfo_Player(TgSC.PlayerReplicationInfo); - LogInternal("Found spectator: " @ TgRPI.PlayerName); - - TgRPI.UpdateSpectatorUI(); - - // Destroy old controller — PRI already transferred via SwitchController - //TgPC.Destroy(); - - break; - } -} - -private function removeBots() { - local TgAIController_BehaviorGod TgAI; - foreach AllActors(class'TgAIController_BehaviorGod', TgAI) { - if(TgAI != none) { - TgAI.Pawn.Suicide(); - TgAI.Pawn.Destroy(); - TgAI.PlayerReplicationInfo.Destroy(); - TgAI.Destroy(); - } - } -} - -public function TaskforceWin(Int nTaskForce, EVictoryType VictoryType) { - local TgPlayerController TgPC; - local int rmap; - local array ValidMaps; - local int i; - local string Gamemode; - Gamemode = "Onslaught"; - - super.TaskforceWin(nTaskForce, VictoryType); - - isTravelling = true; - - SetTimer(6, false, 'proceedEndGame'); -} - -private event proceedEndGame() { - local TempestProxyActor ProxyActor; - foreach m_ProxyActors(ProxyActor) { - ProxyActor.ClientConsoleCommand("quit"); - } - if(Role == ROLE_Authority) { - foreach m_ProxyActors(ProxyActor) { - m_ProxyActors.RemoveItem(ProxyActor); - } - //switchMap(); - } -} - -private event runTotalMayhem() { - local TgPlayerController TgPC; - local TgPawn_Character Pawn; - foreach AllActors(class'TgPlayerController', TgPC) { - Pawn = TgPawn_Character(TgPC.Pawn); - if(TgPC != none && Pawn != none) { - reduceCooldownAndBoostUltCharge(Pawn); - } - } -} - -private function reduceCooldownAndBoostUltCharge(TgPawn_Character Pawn) { - local float ultChargeMount, cdRatio, CD, NewCD, BaseCD; - ultChargeMount = 2.5f; - cdRatio = 0.2f; - if(Pawn.MySpawnGatesAreOpen() && Pawn.ShouldRecharge()) Pawn.SetProperty(2, Pawn.GetEnergy() + ultChargeMount); - - if(Pawn.GetDeviceByEqPoint(3).GetCooldownRemaining() > 0) { - BaseCD = Pawn.GetDeviceByEqPoint(3).GetCooldownTime(); - CD = Pawn.GetDeviceByEqPoint(3).GetCooldownRemaining(); - - NewCD = CD - (BaseCD * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(3).ResetCooldown(0, NewCD); - } - - if(Pawn.GetDeviceByEqPoint(4).GetCooldownRemaining() > 0) { - BaseCD = Pawn.GetDeviceByEqPoint(4).GetCooldownTime(); - CD = Pawn.GetDeviceByEqPoint(4).GetCooldownRemaining(); - - NewCD = CD - (BaseCD * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(4).ResetCooldown(0, NewCD); - } - - if(Pawn.GetDeviceByEqPoint(16).GetCooldownRemaining() > 0) { - BaseCD = Pawn.GetDeviceByEqPoint(16).GetCooldownTime(); - CD = Pawn.GetDeviceByEqPoint(16).GetCooldownRemaining(); - - NewCD = CD - (BaseCD * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(16).ResetCooldown(0, NewCD); - } -} - -private function bool hasLoginBeenRejected(PlayerController NewPlayer, PendingLoginData data) { - if(isTravelling) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server is restarting."); - return true; - } - - if(sOptions.password != "") { - if(Data.password != sOptions.password) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: Wrong password."); - return true; - } - } - /* - if(!sOptions.allowSpectators && (Data.team == "spec" || Data.team == "spectator")) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server doesn't allow spectators."); - return true; - } -*/ - if(m_nPlayerCount > maxPlayers) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server is full."); - return true; - } - return false; -} - -private function ChampionData setChampion(PendingLoginData Data) { - local int randChamp; - local string incomingName; - local ChampionData selectedChampion; - - incomingName = Locs(Data.ChampionName); - - if (isChampionAllowed(incomingName)) { - selectedChampion = findChampionByNameOrAlias(incomingName); - return selectedChampion; - } - - randChamp = Rand(sOptions.allowedChampions.Length); - selectedChampion = findChampionByNameOrAlias(Locs(sOptions.allowedChampions[randChamp])); - return selectedChampion; -} - -private function bool isChampionAllowed(string championName) { - local int i, j; - - for (i = 0; i < ServerConfig.Champion.Length; i++) { - if (sOptions.allowedChampions.Find(Locs(ServerConfig.Champion[i].name)) != INDEX_NONE) { - if (Locs(ServerConfig.Champion[i].name) == championName) { - return true; - } - - for (j = 0; j < ServerConfig.Champion[i].aliases.Length; j++) { - if (Locs(ServerConfig.Champion[i].aliases[j]) == championName) { - return true; - } - } - } - } - return false; -} - -private function ChampionData findChampionByNameOrAlias(string championName) { - local int i, j; - local ChampionData emptyChampion; - - for (i = 0; i < ServerConfig.Champion.Length; i++) { - if (Locs(ServerConfig.Champion[i].name) == championName) { - return ServerConfig.Champion[i]; - } - - for (j = 0; j < ServerConfig.Champion[i].aliases.Length; j++) { - if (Locs(ServerConfig.Champion[i].aliases[j]) == championName) { - return ServerConfig.Champion[i]; - } - } - } - - return emptyChampion; -} - -private function switchMap() { - ProcessServerTravel(nextMap, true); - //removeBots(); -} - -public function int getTeam(PendingLoginData Data) { - switch(Data.Team) - { - case "1": return 1; break; - case "2": return 2; break; - case "spec": return 3; break; - case "spectator": return 3; break; - } - - return (m_nPlayerCount % 2 == 0) ? 1 : 2; -} - -public function int getHorse(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16526; - - switch(Data.horse) - { - case "1": return 12616; break; - case "2": return 12612; break; - } - - return 12616; -} - -public function int getSpray(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16457; - - return 15587; -} - -public function int getTitle(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16936; - - return 0; -} - -public function ChampionData setBelgianYing(PendingLoginData Data, ChampionData SelectedChampion) { - // Special Belgian Treatement - if(Data.netAddress == "262038383" && (Data.championName == "ying" || Data.championName == "bestwaifu")) { - SelectedChampion.BotId = 2267; - SelectedChampion.SkinId = 18656; - SelectedChampion.DeviceSkinId = 18655; - SelectedChampion.HeadId = 18657; - } - return SelectedChampion; -} - -public function checkShouldAnimateYourName(PendingLoginData Data, TgRepInfo_Player PRI) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") { - shouldAnimateYourNamePRI = PRI; - shouldAnimateYourNameData = Data; - } -} - -function animateYourName() { - `log(WorldInfo.TimeSeconds); - if(shouldAnimateYourNamePRI != none) shouldAnimateYourNamePRI.PlayerName = TempestLib.UpdateAnimatedName(shouldAnimateYourNameData.playerName); -} - -public function initServerCheatManager(TgPlayerController TgPC) { - TgPC.CheatClass = Class'TgBattleCheatManager'; - if(TgPC.CheatManager == none) { - TgPC.CheatManager = new (TgPC) Class'TgBattleCheatManager'; - if(TgPC.CheatManager != none) { - TgPC.CheatManager.InitCheatManager(); - `Log((("TempestProxyActor: CheatManager successfully created and initialized : " @ string(TgPC.CheatManager.Name)) @ ":") @ string(TgPC.CheatManager.Outer.Name)); - } else { - `Log("TempestProxyActor: Failed to create CheatManager!"); - } - } -} \ No newline at end of file diff --git a/Development/Src/TempestMp/Classes/Payload.uc b/Development/Src/TempestMp/Classes/Payload.uc deleted file mode 100755 index c8248da3..00000000 --- a/Development/Src/TempestMp/Classes/Payload.uc +++ /dev/null @@ -1,558 +0,0 @@ -class Payload extends TgGame_Paladins_Payload - config(Game); - -var TgGame m_TgG; -var TgRepInfo_Game GRI; - -var int m_nPlayerCount; -var array m_Players; -var array pendingMountPawns; - -var array m_ProxyActors; - -var ATempestLib TempestLib; - - -var Maps allMaps; -var string nextMap; -var bool isTravelling; - -var AServerConfigData ServerConfig; - -struct PendingLoginData -{ - var string netAddress; - var int uniqueAddressId; - var string playerName; - var string championName; - var string team; - var string password; - var string horse; -}; - -var array pendingLogins; - -struct ServerParameters { - var int maxPlayers; - var string password; - var string mapName; - var array allowedChampions; - var bool allowSpectators; - var bool totalMayhem; -}; - -var ServerParameters sOptions; - -var TgRepInfo_Player shouldAnimateYourNamePRI; -var PendingLoginData shouldAnimateYourNameData; - -public event InitGame(String Options, out String ErrorMessage) -{ - super.InitGame(Options, ErrorMessage); - - TempestLib = self.Spawn(Class'ATempestLib', self); - TempestLib.SetOwner(self); - TempestLib.initTimer(); - - sOptions.maxPlayers = TempestLib.toInt(ParseOption(Options, "maxplayers")); - sOptions.password = ParseOption(Options, "serverpassword"); - sOptions.allowSpectators = HasOption(Options, "allowSpectators"); - sOptions.totalMayhem = HasOption(Options, "totalMayhem"); - if(sOptions.maxPlayers == 0) - sOptions.maxPlayers = 10; - - ParseStringIntoArray(ParseOption(Options, "allowedChampions"), sOptions.allowedChampions, ",", true); -} - -event PreLogin(string Options, string Address, const UniqueNetId UniqueId, bool bSupportsAuth, out string ErrorMessage) -{ - local PendingLoginData Data; - local int i, uniqueAddressId; - - super.PreLogin(Options, Address, UniqueId, bSupportsAuth, ErrorMessage); - - Address = Repl(Address, ".", ""); - - uniqueAddressId = (((TempestLib.toInt(Address) % 1000000) + ((int(WorldInfo.TimeSeconds * 10000) % 10000000) * 1000)) / (Len(Address) * 10)) + Rand(10000); - uniqueAddressId = int(Abs(uniqueAddressId)); - `log(uniqueAddressId); - - for (i = 0; i < pendingLogins.Length; i++) { - if (pendingLogins[i].NetAddress == Address) { - pendingLogins.Remove(i, 1); - } - } - - - Data.NetAddress = Address; - Data.uniqueAddressId = uniqueAddressId; - Data.PlayerName = TempestLib.decodeURLParam(ParseOption(Options, "name")); - Data.ChampionName = ParseOption(Options, "class"); - Data.Team = ParseOption(Options, "team"); - Data.password = ParseOption(Options, "password"); - Data.horse = ParseOption(Options, "horse"); - - pendingLogins.AddItem(Data); -} - -public event PostLogin(PlayerController NewPlayer) -{ - local TgPlayerController TgPC; - local TempestProxyActor ProxyActor; - local TgRepInfo_Player TgRPI; - local TgInventoryManager InvMgr; - local PendingLoginData Data; - local ChampionData SelectedChampion; - local string Address; - local int i; - super.PostLogin(NewPlayer); - - Address = Repl(NewPlayer.GetPlayerNetworkAddress(), ".", ""); - - for (i = 0; i < pendingLogins.Length; i++) { - if (pendingLogins[i].NetAddress == Address) { - Data = pendingLogins[i]; - } - } - - TgPC = TgPlayerController(NewPlayer); - TgRPI = TgRepInfo_Player(NewPlayer.PlayerReplicationInfo); - ProxyActor = Class'TempestUtils'.static.SetupProxy(TgPC); - ProxyActor.ServerAddCheats(); - - m_nPlayerCount++; - - if (hasLoginBeenRejected(NewPlayer, Data)) - return; - - m_ProxyActors.AddItem(ProxyActor); - - for (i = 0; i < sOptions.allowedChampions.Length; i++) { - ProxyActor.ClientPrecacheClass(sOptions.allowedChampions[i]); - } - - // the horse - ProxyActor.ClientTestPrecache(2236, 12612, 0, 0, true); - ProxyActor.ClientTestPrecache(2236, 12616, 0, 0, true); - ProxyActor.ClientTestPrecache(2236, 16526, 0, 0, true); - - ProxyActor.ClientTestPrecache(2273, 18656, 18655, 18657, true); - - SelectedChampion = setChampion(Data); - SelectedChampion.mountId = getHorse(Data); - SelectedChampion.sprayId = getSpray(Data); - - SelectedChampion = setBelgianYing(Data, SelectedChampion); - - checkShouldAnimateYourName(Data, TgRPI); - - Class'TempestUtils'.static.SetupPRI(m_TgG, TgRPI, Data.uniqueAddressId, Data.playerName, getTeam(Data), SelectedChampion.mountId, getTitle(Data)); - Class'TempestUtils'.static.SpawnPawn(self, TgPC, SelectedChampion.BotId, SelectedChampion.SkinId, SelectedChampion.DeviceSkinId, SelectedChampion.HeadId, SelectedChampion.mountId); - - if (Role == Role_Authority) { - TgPawn(TgPC.Pawn).m_bAirAccuracyPenalty = false; - InvMgr = TgInventoryManager(TgPawn(TgPC.Pawn).InvManager); - - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card1), 19, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card2), 20, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card3), 21, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card4), 22, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card5), 5, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.Talent), 25, , true, ); - - InvMgr.AddDevice(SelectedChampion.sprayId, 17, , true, ); - - } - - ProxyActor.ClientConsoleCommand("setreadytoplay"); -} - -public function Logout(Controller Exiting) { - local int i; - super.Logout(Exiting); - - m_nPlayerCount--; - if(!isTravelling) { - for (i = 0; i < m_ProxyActors.Length; i++) { - if (m_ProxyActors[i].Owner == Exiting) { - m_ProxyActors.Remove(i, 1); - } - } - setTimer(0.25, false, 'removeBots'); - } -} - -public event PreBeginPlay() { - super.PreBeginPlay(); - m_TgG = TgGame(WorldInfo.Game); - - allMaps = new class'Maps'; - allMaps.loadMaps(); - - m_nPlayerCount = 0; -} - -public event PostBeginPlay() { - super.PostBeginPlay(); - - m_TgG = TgGame(WorldInfo.Game); - GRI = TgRepInfo_Game(WorldInfo.GRI); - isTravelling = false; - - if(Role == Role_Authority) { - ServerConfig = new class'AServerConfigData'; - ServerConfig.InitializeConfig(); - } - if(sOptions.TotalMayhem) { - SetTimer(1, true, 'runTotalMayhem'); - m_fBaseRespawnTime = 1; - m_fDefenseRespawnIncrease = 0; - m_fAttackRespawnIncrease = 0; - } - - setTimer(1, true, 'animateYourName'); -} - -private function removeBots() { - local TgAIController_BehaviorGod TgAI; - foreach AllActors(class'TgAIController_BehaviorGod', TgAI) { - if(TgAI != none) { - TgAI.Pawn.Suicide(); - TgAI.Pawn.Destroy(); - TgAI.PlayerReplicationInfo.Destroy(); - TgAI.Destroy(); - } - } -} - -public function TaskforceWin(Int nTaskForce, EVictoryType VictoryType) { - local TgPlayerController TgPC; - local int rmap; - local array ValidMaps; - local int i; - local string Gamemode; - Gamemode = "Payload"; - - super.TaskforceWin(nTaskForce, VictoryType); - - isTravelling = true; - - for(i = 0; i < allMaps.MapDatabase.Length; i++) { - if(allMaps.MapDatabase[i].MapGamemodes.Find(Gamemode) != INDEX_NONE) { - ValidMaps.AddItem(allMaps.MapDatabase[i]); - } - } - - if(ValidMaps.Length > 0) { - rmap = rand(ValidMaps.Length); - nextMap = ValidMaps[rmap].MapName; - - foreach AllActors(class'TgPlayerController', TgPC) { - TgPC.ClientMessage("The server will soon restart and your game will close.", , 15); - TgPC.ClientMessage("The next Map will be:" @ ValidMaps[rmap].MapReadableName, , 15); - } - } else { - rmap = rand(allMaps.MapDatabase.Length); - nextMap = allMaps.MapDatabase[rmap].MapName; - - foreach AllActors(class'TgPlayerController', TgPC) { - TgPC.ClientMessage("The server will soon restart and your game will close.", , 15); - TgPC.ClientMessage("The next Map will be:" @ allMaps.MapDatabase[rmap].MapReadableName, , 15); - } - } - - SetTimer(6, false, 'proceedEndGame'); -} - -private event proceedEndGame() { - local TempestProxyActor ProxyActor; - foreach m_ProxyActors(ProxyActor) { - ProxyActor.ClientConsoleCommand("quit"); - } - if(Role == ROLE_Authority) { - foreach m_ProxyActors(ProxyActor) { - m_ProxyActors.RemoveItem(ProxyActor); - } - switchMap(); - } -} - -private event runTotalMayhem() { - local TgPlayerController TgPC; - local TgPawn Pawn; - foreach AllActors(class'TgPlayerController', TgPC) { - Pawn = TgPawn(TgPC.Pawn); - if(TgPC != none && Pawn != none) { - reduceCooldownAndBoostUltCharge(Pawn); - } - } -} - -private function reduceCooldownAndBoostUltCharge(TgPawn Pawn) { - local float ultChargeMount, cdRatio, CD, NewCD; - ultChargeMount = 2.5f; - cdRatio = 0.2f; - if(Pawn.MySpawnGatesAreOpen() && Pawn.ShouldRecharge()) Pawn.SetProperty(2, Pawn.GetEnergy() + ultChargeMount); - - if(Pawn.GetDeviceByEqPoint(3).GetCooldownRemaining() > 0) { - CD = Pawn.GetDeviceByEqPoint(3).GetCooldownRemaining(); - - NewCD = CD - (Pawn.GetDeviceByEqPoint(3).GetCooldownTime() * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(3).ResetCooldown(0, NewCD); - } - - if(Pawn.GetDeviceByEqPoint(4).GetCooldownRemaining() > 0) { - CD = Pawn.GetDeviceByEqPoint(4).GetCooldownRemaining(); - NewCD = CD - (Pawn.GetDeviceByEqPoint(4).GetCooldownTime() * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(4).ResetCooldown(0, NewCD); - } - - if(Pawn.GetDeviceByEqPoint(16).GetCooldownRemaining() > 0) { - CD = Pawn.GetDeviceByEqPoint(16).GetCooldownRemaining(); - NewCD = CD - (Pawn.GetDeviceByEqPoint(16).GetCooldownTime() * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(16).ResetCooldown(0, NewCD); - } -} - -private function bool hasLoginBeenRejected(PlayerController NewPlayer, PendingLoginData data) { - if(isTravelling) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server is restarting."); - return true; - } - - if(sOptions.password != "") { - if(Data.password != sOptions.password) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: Wrong password."); - return true; - } - } - - if(!sOptions.allowSpectators && (Data.team == "spec" || Data.team == "spectator")) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server doesn't allow spectators."); - return true; - } - - if(m_nPlayerCount > maxPlayers) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server is full."); - return true; - } - return false; -} - -private function ChampionData setChampion(PendingLoginData Data) { - local int randChamp; - local string incomingName; - local ChampionData selectedChampion; - - incomingName = Locs(Data.ChampionName); - - if (isChampionAllowed(incomingName)) { - selectedChampion = findChampionByNameOrAlias(incomingName); - return selectedChampion; - } - - randChamp = Rand(sOptions.allowedChampions.Length); - selectedChampion = findChampionByNameOrAlias(Locs(sOptions.allowedChampions[randChamp])); - return selectedChampion; -} - -private function bool isChampionAllowed(string championName) { - local int i, j; - - for (i = 0; i < ServerConfig.Champion.Length; i++) { - if (sOptions.allowedChampions.Find(Locs(ServerConfig.Champion[i].name)) != INDEX_NONE) { - if (Locs(ServerConfig.Champion[i].name) == championName) { - return true; - } - - for (j = 0; j < ServerConfig.Champion[i].aliases.Length; j++) { - if (Locs(ServerConfig.Champion[i].aliases[j]) == championName) { - return true; - } - } - } - } - return false; -} - -private function ChampionData findChampionByNameOrAlias(string championName) { - local int i, j; - local ChampionData emptyChampion; - - for (i = 0; i < ServerConfig.Champion.Length; i++) { - if (Locs(ServerConfig.Champion[i].name) == championName) { - return ServerConfig.Champion[i]; - } - - for (j = 0; j < ServerConfig.Champion[i].aliases.Length; j++) { - if (Locs(ServerConfig.Champion[i].aliases[j]) == championName) { - return ServerConfig.Champion[i]; - } - } - } - - return emptyChampion; -} - -private function switchMap() { - ProcessServerTravel(nextMap, true); - //removeBots(); -} - -public function int getTeam(PendingLoginData Data) { - switch(Data.Team) - { - case "1": return 1; break; - case "2": return 2; break; - } - - return (m_nPlayerCount % 2 == 0) ? 1 : 2; -} - -public function int getHorse(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16526; - - switch(Data.horse) - { - case "1": return 12616; break; - case "2": return 12612; break; - } - - return 12616; -} - -public function int getSpray(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16457; - - return 15587; -} - -public function int getTitle(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16936; - - return 0; -} - -public function ChampionData setBelgianYing(PendingLoginData Data, ChampionData SelectedChampion) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168" && (Data.championName == "ying" || Data.championName == "bestwaifu")) { - SelectedChampion.BotId = 2267; - SelectedChampion.SkinId = 18656; - SelectedChampion.DeviceSkinId = 18655; - SelectedChampion.HeadId = 18657; - } - return SelectedChampion; -} - -public function checkShouldAnimateYourName(PendingLoginData Data, TgRepInfo_Player PRI) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") { - shouldAnimateYourNamePRI = PRI; - shouldAnimateYourNameData = Data; - } -} - -function animateYourName() { - if(shouldAnimateYourNamePRI != none) shouldAnimateYourNamePRI.PlayerName = TempestLib.UpdateAnimatedName(shouldAnimateYourNameData.playerName); // or use original name -} - -public function initServerCheatManager(TgPlayerController TgPC) { - TgPC.CheatClass = Class'TgBattleCheatManager'; - if(TgPC.CheatManager == none) { - TgPC.CheatManager = new (TgPC) Class'TgBattleCheatManager'; - if(TgPC.CheatManager != none) { - TgPC.CheatManager.InitCheatManager(); - `Log((("TempestProxyActor: CheatManager successfully created and initialized : " @ string(TgPC.CheatManager.Name)) @ ":") @ string(TgPC.CheatManager.Outer.Name)); - } else { - `Log("TempestProxyActor: Failed to create CheatManager!"); - } - } -} - -state GameRunning -{ - function NavigationPoint FindPlayerStart(Controller Player, optional byte InTeam, optional string IncomingName) - { - tg(); - return super.FindPlayerStart(Player, InTeam, incomingName); - } - - function PointCaptured(int nTaskForce, optional bool bSuppressPointsForCapture) - { - super.PointCaptured(nTaskForce, bSuppressPointsForCapture); - } - - stop; -} - -state AttackDefend -{ - function BeginState(name PreviousStateName) - { - super.BeginState(PreviousStateName); - } - - function float GetPayloadStartingDuration() - { - return super.GetPayloadStartingDuration(); - } - - function float GetOvertimeDuration() - { - return super.GetOvertimeDuration(); - } - - function bool OvertimePreventsPayloadExpiring() - { - return super.OvertimePreventsPayloadExpiring(); - } - - function TgChaosCapturePoint GetCapturePointToSpawnSiegeEngineAt() - { - return super.GetCapturePointToSpawnSiegeEngineAt(); - } - - function NavigationPoint FindPlayerStart(Controller Player, optional byte InTeam, optional string IncomingName) - { - tg1(); - return super.FindPlayerStart(Player, InTeam, incomingName); - } - - function Tick(float DeltaTime) - { - super.Tick(DeltaTime); - } - stop; -} - - -private function tg() { - local TgPlayerController TgPC; - foreach AllActors(class'TgPlayerController', TgPC ) { - TgPC.ClientMessage("The payload de bite pipi caca prout has spawned"); - `log(TgRepInfo_Player(TgPC.PlayerReplicationInfo).r_nPawnId @ TgRepInfo_Player(TgPC.PlayerReplicationInfo).r_nProfileId); - - } -} - -private function tg1() { - local TgPlayerController TgPC; - foreach AllActors(class'TgPlayerController', TgPC ) { - TgPC.ClientMessage("The payload de bite pipi caca prout has spawned 1"); - `log(TgRepInfo_Player(TgPC.PlayerReplicationInfo).r_nPawnId @ TgRepInfo_Player(TgPC.PlayerReplicationInfo).r_nProfileId); - } -} \ No newline at end of file diff --git a/Development/Src/TempestMp/Classes/Siege.uc b/Development/Src/TempestMp/Classes/Siege.uc deleted file mode 100755 index 506d4632..00000000 --- a/Development/Src/TempestMp/Classes/Siege.uc +++ /dev/null @@ -1,622 +0,0 @@ -class Siege extends TgGame_Paladins_Siege; - -var TgGame m_TgG; -var TgRepInfo_Game GRI; - -var int m_nPlayerCount; -var array m_Players; -var array pendingMountPawns; - -var array m_ProxyActors; - -var ATempestLib TempestLib; - -var Maps allMaps; -var string nextMap; -var bool isTravelling; - -var AServerConfigData ServerConfig; - -struct PendingLoginData -{ - var string netAddress; - var int uniqueAddressId; - var string playerName; - var string championName; - var string team; - var string password; - var string horse; -}; - -var array pendingLogins; - -struct ServerParameters { - var int maxPlayers; - var string password; - var string mapName; - var array allowedChampions; - var bool allowSpectators; - var bool totalMayhem; -}; - -var ServerParameters sOptions; - -var TgRepInfo_Player shouldAnimateYourNamePRI; -var PendingLoginData shouldAnimateYourNameData; - -public event InitGame(String Options, out String ErrorMessage) -{ - super.InitGame(Options, ErrorMessage); - - TempestLib = self.Spawn(Class'ATempestLib', self); - TempestLib.SetOwner(self); - TempestLib.initTimer(); - - sOptions.maxPlayers = TempestLib.toInt(ParseOption(Options, "maxplayers")); - sOptions.password = ParseOption(Options, "serverpassword"); - sOptions.allowSpectators = HasOption(Options, "allowSpectators"); - sOptions.totalMayhem = HasOption(Options, "totalMayhem"); - if(sOptions.maxPlayers == 0) - sOptions.maxPlayers = 10; - - ParseStringIntoArray(ParseOption(Options, "allowedChampions"), sOptions.allowedChampions, ",", true); -} - -event PreLogin(string Options, string Address, const UniqueNetId UniqueId, bool bSupportsAuth, out string ErrorMessage) -{ - local PendingLoginData Data; - local int i, uniqueAddressId; - - super.PreLogin(Options, Address, UniqueId, bSupportsAuth, ErrorMessage); - - Address = Repl(Address, ".", ""); - - uniqueAddressId = (((TempestLib.toInt(Address) % 1000000) + ((int(WorldInfo.TimeSeconds * 10000) % 10000000) * 1000)) / (Len(Address) * 10)) + Rand(10000); - uniqueAddressId = int(Abs(uniqueAddressId)); - `log(uniqueAddressId); - - for (i = 0; i < pendingLogins.Length; i++) { - if (pendingLogins[i].NetAddress == Address) { - pendingLogins.Remove(i, 1); - } - } - - Data.NetAddress = Address; - Data.uniqueAddressId = uniqueAddressId; - Data.PlayerName = TempestLib.decodeURLParam(ParseOption(Options, "name")); - Data.ChampionName = ParseOption(Options, "class"); - Data.Team = ParseOption(Options, "team"); - Data.password = ParseOption(Options, "password"); - Data.horse = ParseOption(Options, "horse"); - - pendingLogins.AddItem(Data); -} - -public event PostLogin(PlayerController NewPlayer) -{ - local TgPlayerController TgPC; - local TempestSpectatorController TgSpec; - local TgPawn_Character TgP; - local TempestProxyActor ProxyActor; - local TempestProxyActor ProxyActorS; - local TgRepInfo_Player TgRPI; - local TgInventoryManager InvMgr; - local PendingLoginData Data; - local ChampionData SelectedChampion; - local TgDevice_Mount MountDevice; - local string Address; - local int i; - super.PostLogin(NewPlayer); - - Address = Repl(NewPlayer.GetPlayerNetworkAddress(), ".", ""); - - for (i = 0; i < pendingLogins.Length; i++) { - if (pendingLogins[i].NetAddress == Address) { - Data = pendingLogins[i]; - } - } - - TgPC = TgPlayerController(NewPlayer); - TgRPI = TgRepInfo_Player(NewPlayer.PlayerReplicationInfo); - - ProxyActor = Class'TempestUtils'.static.SetupProxy(TgPC); - ProxyActor.ServerAddCheats(); - - TgPC.CheatClass = Class'TgGame.TgBattleCheatManager'; - // End:0x34A - if(TgPC.CheatManager == none) - { - TgPC.CheatManager = new (TgPC) Class'TgGame.TgBattleCheatManager'; - // End:0x314 - if(TgPC.CheatManager != none) - { - TgPC.CheatManager.InitCheatManager(); - LogInternal((("TempestProxyActor: CheatManager successfully created and initialized : " @ string(TgPC.CheatManager.Name)) @ ":") @ string(TgPC.CheatManager.Outer.Name)); - } - else - { - LogInternal("TempestProxyActor: Failed to create CheatManager!"); - } - } - - m_nPlayerCount++; - - if (hasLoginBeenRejected(NewPlayer, Data)) - return; - - m_ProxyActors.AddItem(ProxyActor); - - for (i = 0; i < sOptions.allowedChampions.Length; i++) { - ProxyActor.ClientPrecacheClass(sOptions.allowedChampions[i]); - } - - // the horse - ProxyActor.ClientTestPrecache(2236, 12612, 0, 0, true); - ProxyActor.ClientTestPrecache(2236, 12616, 0, 0, true); - ProxyActor.ClientTestPrecache(2236, 16526, 0, 0, true); - - ProxyActor.ClientTestPrecache(2267, 18656, 18655, 18657, true); - - SelectedChampion = setChampion(Data); - SelectedChampion.mountId = getHorse(Data); - SelectedChampion.sprayId = getSpray(Data); - - SelectedChampion = setBelgianYing(Data, SelectedChampion); - - checkShouldAnimateYourName(Data, TgRPI); - - Class'TempestUtils'.static.SetupPRI(m_TgG, TgRPI, Data.uniqueAddressId, Data.playerName, getTeam(Data), SelectedChampion.mountId, getTitle(Data)); - - Class'TempestUtils'.static.SpawnPawn(self, TgPC, SelectedChampion.BotId, SelectedChampion.SkinId, SelectedChampion.DeviceSkinId, SelectedChampion.HeadId, SelectedChampion.mountId); - - //NewPlayer.Player.SwitchController(TgPC); - TgP = TgPawn_Character(TgPC.Pawn); - - if (Role == Role_Authority) { - TgP.m_bAirAccuracyPenalty = false; - InvMgr = TgInventoryManager(TgP.InvManager); - - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card1), 19, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card2), 20, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card3), 21, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card4), 22, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card5), 5, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.Talent), 25, , true, ); - - InvMgr.AddDevice(SelectedChampion.sprayId, 17, , true, ); - } - - TgP.PostPawnSetupServer(); - if(sOptions.TotalMayhem) { - TgRPI.UpdateHealth(TgP.Health, TgP.GetMaxHealth() * 2); - } - - MountDevice = TgDevice_Mount(TgP.GetDeviceByEqPoint(23)); - // End:0x190 - if(MountDevice != none) - { - MountDevice.SetAllowMountServerTimer(); - MountDevice.ClientStartMount(); - } - - ProxyActor.ClientConsoleCommand("setreadytoplay"); -} - -public function Logout(Controller Exiting) { - local int i; - super.Logout(Exiting); - - m_nPlayerCount--; - if(!isTravelling) { - for (i = 0; i < m_ProxyActors.Length; i++) { - if (m_ProxyActors[i].Owner == Exiting) { - m_ProxyActors.Remove(i, 1); - } - } - setTimer(0.25, false, 'removeBots'); - } -} - -public event PreBeginPlay() { - super.PreBeginPlay(); - m_TgG = TgGame(WorldInfo.Game); - - allMaps = new class'Maps'; - allMaps.loadMaps(); - - m_nPlayerCount = 0; -} - -private function debugKillcam() { - local TgPlayerController TgPC; - local TgPawn Pawn; - GRI.r_bAttackersKillCamEnabled = true; - GRI.r_bDefendersKillCamEnabled = true; - `log(string(WorldInfo.IsRecordingTimelapse()) @ string(WorldInfo.IsPlayingTimelapse())); - `log(GameplayEventsWriter); - foreach AllActors(class'TgPlayerController', TgPC) { - if(TgPC.Pawn != none) { - Pawn = TgPawn(TgPC.Pawn); - `log("CHECK FOR" @ Pawn.Name); - TgPC.bForcedTimelapseRequested = true; - `log(string(TgPC.CanPlayKillCam(false))); - if((TgPC.r_fServerTimeStamp - Pawn.r_fReconnectTime) < 30.0) { - `log("TIMESTAMP < 30 IS CAUSING THE FALSE"); - } - if(GRI == none) { - `log("GRI NONE IS CAUSING THE FALSE"); - } - if(!GRI.r_bKillCamEnabled) { - `log("KILLCAMENABLED IS CAUSING THE FALSE"); - } - if(GRI.r_bBlockKillCam) { - `log("BLOCKKILLCAM IS CAUSING THE FALSE"); - } - if(GRI.r_AttackingTaskForce == none) { - `log("GRI ATTACKING TASKFORCE NONE IS CAUSING THE FALSE"); - } - if(!GRI.r_bAttackersKillCamEnabled) { - `log("GRI ATTACKERS KILLCAM IS CAUSING THE FALSE"); - } - if(!GRI.r_bDefendersKillCamEnabled) { - `log("GRI DEFENDERS KILLCAM IS CAUSING THE FALSE"); - } - if(!(TgPC.m_nKillCamTargetId >= 0)) { - `log("KILLCAM TARGET ID IS CAUSING THE FALSE"); - } - if(GRI.r_AttackingTaskForce.GetTeamNum() != TgPC.GetTaskForceNumber()) { - `log("GET TEAM NUM NONE IS CAUSING THE FALSE"); - } - `log(""); - `log(""); - `log(""); - } - } -} - -public function ScoreKill(Controller Killer, Controller Other) -{ - local TgPlayerController TgPCKiller; - local TgPlayerController TgPCKilled; - local TgPawn killerPawn; - local TgPawn killedPawn; - super.ScoreKill(Killer, Other); - - TgPCKiller = TgPlayerController(Killer); - TgPCKilled = TgPlayerController(Other); - - killerPawn = TgPawn(TgPCKiller.Pawn); - KilledPawn = TgPawn(TgPCKilled.Pawn); - - `log("FIRED SCOREKILL" @ killerPawn.Name); - `log("KILLER PAWNID" @ killerPawn.r_nPawnId); - `log("KILLER OWNER" @ killerPawn.r_Owner.Name); - TgPCKilled.SetKillCamTarget(KillerPawn); - TgPCKilled.ClientSetKillCamTarget(killerPawn.r_nPawnId, killerPawn.r_nPawnId); - `log("TG PC KILLED" @ TgPCKilled.m_nKillCamTargetId @ TgPCKilled.m_nKillCamTargetBackupId); - `log("TG PC KILLER" @ TgPCKiller.m_nKillCamTargetId @ TgPCKiller.m_nKillCamTargetBackupId); - `log("KillCamViewTarget" @ TgPCKilled.GetBestKillCamTarget().Name); - //TgPCKilled.StartTimelapsePlayback(-7.5000000, -3.0000000, false); - //TgPCKilled.ControllerPreTimeLapse(); - TgPCKilled.StartTimelapse(); - //KilledPawn.PreTimeLapse(false); -} - -public event PostBeginPlay() { - super.PostBeginPlay(); - - m_TgG = TgGame(WorldInfo.Game); - GRI = TgRepInfo_Game(WorldInfo.GRI); - isTravelling = false; - - if(Role == Role_Authority) { - ServerConfig = new class'AServerConfigData'; - ServerConfig.InitializeConfig(); - } - if(sOptions.TotalMayhem) { - SetTimer(1, true, 'runTotalMayhem'); - m_fBaseRespawnTime = 1; - m_fDefenseRespawnIncrease = 0; - m_fAttackRespawnIncrease = 0; - m_bCanPurchaseItemsAnywhere = true; - } - -} - -private function killcontroller() { - local TgPlayerController TgPC; - local TempestSpectatorController TgSC; - local TgRepInfo_Player TgRPI; - local Vector CamLoc; - local Rotator CamRot; - - foreach AllActors(class'TempestSpectatorController', TgSC) { - TgRPI = TgRepInfo_Player(TgSC.PlayerReplicationInfo); - LogInternal("Found spectator: " @ TgRPI.PlayerName); - - TgRPI.UpdateSpectatorUI(); - - // Destroy old controller — PRI already transferred via SwitchController - //TgPC.Destroy(); - - break; - } -} - -private function removeBots() { - local TgAIController_BehaviorGod TgAI; - foreach AllActors(class'TgAIController_BehaviorGod', TgAI) { - if(TgAI != none) { - TgAI.Pawn.Suicide(); - TgAI.Pawn.Destroy(); - TgAI.PlayerReplicationInfo.Destroy(); - TgAI.Destroy(); - } - } -} - -public function TaskforceWin(Int nTaskForce, EVictoryType VictoryType) { - local TgPlayerController TgPC; - local int rmap; - local array ValidMaps; - local int i; - local string Gamemode; - Gamemode = "Siege"; - - super.TaskforceWin(nTaskForce, VictoryType); - - isTravelling = true; - - for(i = 0; i < allMaps.MapDatabase.Length; i++) { - if(allMaps.MapDatabase[i].MapGamemodes.Find(Gamemode) != INDEX_NONE) { - ValidMaps.AddItem(allMaps.MapDatabase[i]); - } - } - - if(ValidMaps.Length > 0) { - rmap = rand(ValidMaps.Length); - nextMap = ValidMaps[rmap].MapName; - - foreach AllActors(class'TgPlayerController', TgPC) { - TgPC.ClientMessage("The server will soon restart and your game will close.", , 15); - TgPC.ClientMessage("The next Map will be:" @ ValidMaps[rmap].MapReadableName, , 15); - } - } else { - rmap = rand(allMaps.MapDatabase.Length); - nextMap = allMaps.MapDatabase[rmap].MapName; - - foreach AllActors(class'TgPlayerController', TgPC) { - TgPC.ClientMessage("The server will soon restart and your game will close.", , 15); - TgPC.ClientMessage("The next Map will be:" @ allMaps.MapDatabase[rmap].MapReadableName, , 15); - } - } - - SetTimer(6, false, 'proceedEndGame'); -} - -private event proceedEndGame() { - local TempestProxyActor ProxyActor; - foreach m_ProxyActors(ProxyActor) { - ProxyActor.ClientConsoleCommand("quit"); - } - if(Role == ROLE_Authority) { - foreach m_ProxyActors(ProxyActor) { - m_ProxyActors.RemoveItem(ProxyActor); - } - //switchMap(); - } -} - -private event runTotalMayhem() { - local TgPlayerController TgPC; - local TgPawn_Character Pawn; - foreach AllActors(class'TgPlayerController', TgPC) { - Pawn = TgPawn_Character(TgPC.Pawn); - if(TgPC != none && Pawn != none) { - reduceCooldownAndBoostUltCharge(Pawn); - } - } -} - -private function reduceCooldownAndBoostUltCharge(TgPawn_Character Pawn) { - local float ultChargeMount, cdRatio, CD, NewCD, BaseCD; - ultChargeMount = 2.5f; - cdRatio = 0.2f; - if(Pawn.MySpawnGatesAreOpen() && Pawn.ShouldRecharge()) Pawn.SetProperty(2, Pawn.GetEnergy() + ultChargeMount); - - if(Pawn.GetDeviceByEqPoint(3).GetCooldownRemaining() > 0) { - BaseCD = Pawn.GetDeviceByEqPoint(3).GetCooldownTime(); - CD = Pawn.GetDeviceByEqPoint(3).GetCooldownRemaining(); - - NewCD = CD - (BaseCD * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(3).ResetCooldown(0, NewCD); - } - - if(Pawn.GetDeviceByEqPoint(4).GetCooldownRemaining() > 0) { - BaseCD = Pawn.GetDeviceByEqPoint(4).GetCooldownTime(); - CD = Pawn.GetDeviceByEqPoint(4).GetCooldownRemaining(); - - NewCD = CD - (BaseCD * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(4).ResetCooldown(0, NewCD); - } - - if(Pawn.GetDeviceByEqPoint(16).GetCooldownRemaining() > 0) { - BaseCD = Pawn.GetDeviceByEqPoint(16).GetCooldownTime(); - CD = Pawn.GetDeviceByEqPoint(16).GetCooldownRemaining(); - - NewCD = CD - (BaseCD * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(16).ResetCooldown(0, NewCD); - } -} - -private function bool hasLoginBeenRejected(PlayerController NewPlayer, PendingLoginData data) { - if(isTravelling) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server is restarting."); - return true; - } - - if(sOptions.password != "") { - if(Data.password != sOptions.password) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: Wrong password."); - return true; - } - } - /* - if(!sOptions.allowSpectators && (Data.team == "spec" || Data.team == "spectator")) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server doesn't allow spectators."); - return true; - } -*/ - if(m_nPlayerCount > maxPlayers) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server is full."); - return true; - } - return false; -} - -private function ChampionData setChampion(PendingLoginData Data) { - local int randChamp; - local string incomingName; - local ChampionData selectedChampion; - - incomingName = Locs(Data.ChampionName); - - if (isChampionAllowed(incomingName)) { - selectedChampion = findChampionByNameOrAlias(incomingName); - return selectedChampion; - } - - randChamp = Rand(sOptions.allowedChampions.Length); - selectedChampion = findChampionByNameOrAlias(Locs(sOptions.allowedChampions[randChamp])); - return selectedChampion; -} - -private function bool isChampionAllowed(string championName) { - local int i, j; - - for (i = 0; i < ServerConfig.Champion.Length; i++) { - if (sOptions.allowedChampions.Find(Locs(ServerConfig.Champion[i].name)) != INDEX_NONE) { - if (Locs(ServerConfig.Champion[i].name) == championName) { - return true; - } - - for (j = 0; j < ServerConfig.Champion[i].aliases.Length; j++) { - if (Locs(ServerConfig.Champion[i].aliases[j]) == championName) { - return true; - } - } - } - } - return false; -} - -private function ChampionData findChampionByNameOrAlias(string championName) { - local int i, j; - local ChampionData emptyChampion; - - for (i = 0; i < ServerConfig.Champion.Length; i++) { - if (Locs(ServerConfig.Champion[i].name) == championName) { - return ServerConfig.Champion[i]; - } - - for (j = 0; j < ServerConfig.Champion[i].aliases.Length; j++) { - if (Locs(ServerConfig.Champion[i].aliases[j]) == championName) { - return ServerConfig.Champion[i]; - } - } - } - - return emptyChampion; -} - -private function switchMap() { - ProcessServerTravel(nextMap, true); - //removeBots(); -} - -public function int getTeam(PendingLoginData Data) { - switch(Data.Team) - { - case "1": return 1; break; - case "2": return 2; break; - case "spec": return 3; break; - case "spectator": return 3; break; - } - - return (m_nPlayerCount % 2 == 0) ? 1 : 2; -} - -public function int getHorse(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16526; - - switch(Data.horse) - { - case "1": return 12616; break; - case "2": return 12612; break; - } - - return 12616; -} - -public function int getSpray(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16457; - - return 15587; -} - -public function int getTitle(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16936; - - return 0; -} - -public function ChampionData setBelgianYing(PendingLoginData Data, ChampionData SelectedChampion) { - // Special Belgian Treatement - if(Data.netAddress == "262038383" && (Data.championName == "ying" || Data.championName == "bestwaifu")) { - SelectedChampion.BotId = 2267; - SelectedChampion.SkinId = 18656; - SelectedChampion.DeviceSkinId = 18655; - SelectedChampion.HeadId = 18657; - } - return SelectedChampion; -} - -public function checkShouldAnimateYourName(PendingLoginData Data, TgRepInfo_Player PRI) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") { - shouldAnimateYourNamePRI = PRI; - shouldAnimateYourNameData = Data; - } -} - -function animateYourName() { - `log(WorldInfo.TimeSeconds); - if(shouldAnimateYourNamePRI != none) shouldAnimateYourNamePRI.PlayerName = TempestLib.UpdateAnimatedName(shouldAnimateYourNameData.playerName); -} - -public function initServerCheatManager(TgPlayerController TgPC) { - TgPC.CheatClass = Class'TgBattleCheatManager'; - if(TgPC.CheatManager == none) { - TgPC.CheatManager = new (TgPC) Class'TgBattleCheatManager'; - if(TgPC.CheatManager != none) { - TgPC.CheatManager.InitCheatManager(); - `Log((("TempestProxyActor: CheatManager successfully created and initialized : " @ string(TgPC.CheatManager.Name)) @ ":") @ string(TgPC.CheatManager.Outer.Name)); - } else { - `Log("TempestProxyActor: Failed to create CheatManager!"); - } - } -} \ No newline at end of file diff --git a/Development/Src/TempestMp/Classes/SiegeDEV.uc b/Development/Src/TempestMp/Classes/SiegeDEV.uc deleted file mode 100755 index 44e23efb..00000000 --- a/Development/Src/TempestMp/Classes/SiegeDEV.uc +++ /dev/null @@ -1,640 +0,0 @@ -class SiegeDEV extends TgGame_Paladins_Siege; - -var TgGame m_TgG; -var TgRepInfo_Game GRI; - -var int m_nPlayerCount; -var array m_Players; -var array pendingMountPawns; - -var array m_ProxyActors; - -var ATempestLib TempestLib; - -var Maps allMaps; -var string nextMap; -var bool isTravelling; - -var AServerConfigData ServerConfig; - -struct PendingLoginData -{ - var string netAddress; - var int uniqueAddressId; - var string playerName; - var string championName; - var string team; - var string password; - var string horse; -}; - -var array pendingLogins; - -struct ServerParameters { - var int maxPlayers; - var string password; - var string mapName; - var array allowedChampions; - var bool allowSpectators; - var bool totalMayhem; -}; - -var ServerParameters sOptions; - -var TgRepInfo_Player shouldAnimateYourNamePRI; -var PendingLoginData shouldAnimateYourNameData; - -public event InitGame(String Options, out String ErrorMessage) -{ - super.InitGame(Options, ErrorMessage); - - TempestLib = self.Spawn(Class'ATempestLib', self); - TempestLib.SetOwner(self); - TempestLib.initTimer(); - - sOptions.maxPlayers = TempestLib.toInt(ParseOption(Options, "maxplayers")); - sOptions.password = ParseOption(Options, "serverpassword"); - sOptions.allowSpectators = HasOption(Options, "allowSpectators"); - sOptions.totalMayhem = HasOption(Options, "totalMayhem"); - if(sOptions.maxPlayers == 0) - sOptions.maxPlayers = 10; - - ParseStringIntoArray(ParseOption(Options, "allowedChampions"), sOptions.allowedChampions, ",", true); -} - -event PreLogin(string Options, string Address, const UniqueNetId UniqueId, bool bSupportsAuth, out string ErrorMessage) -{ - local PendingLoginData Data; - local int i, uniqueAddressId; - - super.PreLogin(Options, Address, UniqueId, bSupportsAuth, ErrorMessage); - - Address = Repl(Address, ".", ""); - - uniqueAddressId = (((TempestLib.toInt(Address) % 1000000) + ((int(WorldInfo.TimeSeconds * 10000) % 10000000) * 1000)) / (Len(Address) * 10)) + Rand(10000); - uniqueAddressId = int(Abs(uniqueAddressId)); - `log(uniqueAddressId); - - for (i = 0; i < pendingLogins.Length; i++) { - if (pendingLogins[i].NetAddress == Address) { - pendingLogins.Remove(i, 1); - } - } - - Data.NetAddress = Address; - Data.uniqueAddressId = uniqueAddressId; - Data.PlayerName = TempestLib.decodeURLParam(ParseOption(Options, "name")); - Data.ChampionName = ParseOption(Options, "class"); - Data.Team = ParseOption(Options, "team"); - Data.password = ParseOption(Options, "password"); - Data.horse = ParseOption(Options, "horse"); - - pendingLogins.AddItem(Data); - if(Data.team == "spec") { - PlayerControllerClass = class'TempestSpectatorController'; - } else { - PlayerControllerClass = class'TgGame.TgPlayerController'; - } -} - -public event PostLogin(PlayerController NewPlayer) -{ - local TgPlayerController TgPC; - local TempestSpectatorController TgSpec; - local TgPawn_Character TgP; - local TempestProxyActor ProxyActor; - local TempestProxyActor ProxyActorS; - local TgRepInfo_Player TgRPI; - local TgInventoryManager InvMgr; - local PendingLoginData Data; - local ChampionData SelectedChampion; - local TgDevice_Mount MountDevice; - local string Address; - local int i; - super.PostLogin(NewPlayer); - - Address = Repl(NewPlayer.GetPlayerNetworkAddress(), ".", ""); - - for (i = 0; i < pendingLogins.Length; i++) { - if (pendingLogins[i].NetAddress == Address) { - Data = pendingLogins[i]; - } - } - - TgPC = TgPlayerController(NewPlayer); - TgRPI = TgRepInfo_Player(NewPlayer.PlayerReplicationInfo); - - ProxyActor = Class'TempestUtils'.static.SetupProxy(TgPC); - ProxyActor.ServerAddCheats(); - - TgPC.CheatClass = Class'TgGame.TgBattleCheatManager'; - // End:0x34A - if(TgPC.CheatManager == none) - { - TgPC.CheatManager = new (TgPC) Class'TgGame.TgBattleCheatManager'; - // End:0x314 - if(TgPC.CheatManager != none) - { - TgPC.CheatManager.InitCheatManager(); - LogInternal((("TempestProxyActor: CheatManager successfully created and initialized : " @ string(TgPC.CheatManager.Name)) @ ":") @ string(TgPC.CheatManager.Outer.Name)); - } - else - { - LogInternal("TempestProxyActor: Failed to create CheatManager!"); - } - } - - m_nPlayerCount++; - - if (hasLoginBeenRejected(NewPlayer, Data)) - return; - - m_ProxyActors.AddItem(ProxyActor); - - for (i = 0; i < sOptions.allowedChampions.Length; i++) { - ProxyActor.ClientPrecacheClass(sOptions.allowedChampions[i]); - } - - // the horse - ProxyActor.ClientTestPrecache(2236, 12612, 0, 0, true); - ProxyActor.ClientTestPrecache(2236, 12616, 0, 0, true); - ProxyActor.ClientTestPrecache(2236, 16526, 0, 0, true); - - ProxyActor.ClientTestPrecache(2267, 18656, 18655, 18657, true); - - SelectedChampion = setChampion(Data); - SelectedChampion.mountId = getHorse(Data); - SelectedChampion.sprayId = getSpray(Data); - - SelectedChampion = setBelgianYing(Data, SelectedChampion); - - checkShouldAnimateYourName(Data, TgRPI); - - Class'TempestUtils'.static.SetupPRI(m_TgG, TgRPI, Data.uniqueAddressId, Data.playerName, getTeam(Data), SelectedChampion.mountId, getTitle(Data)); - - TgSpec = TempestSpectatorController(NewPlayer); - if (TgSpec != none) { - LogInternal("found TempestSpectatorController"); - TgSpec.ReceivedPlayer(); - TgSpec.PostBeginPlay(); - TgSpec.ForwardToSpectatingMatch(); - ProxyActor.ClientConsoleCommand("setreadytoplay"); - return; - } - - Class'TempestUtils'.static.SpawnPawn(self, TgPC, SelectedChampion.BotId, SelectedChampion.SkinId, SelectedChampion.DeviceSkinId, SelectedChampion.HeadId, SelectedChampion.mountId); - - //NewPlayer.Player.SwitchController(TgPC); - TgP = TgPawn_Character(TgPC.Pawn); - - if (Role == Role_Authority) { - TgP.m_bAirAccuracyPenalty = false; - InvMgr = TgInventoryManager(TgP.InvManager); - - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card1), 19, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card2), 20, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card3), 21, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card4), 22, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card5), 5, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.Talent), 25, , true, ); - - InvMgr.AddDevice(SelectedChampion.sprayId, 17, , true, ); - } - - TgP.PostPawnSetupServer(); - if(sOptions.TotalMayhem) { - TgRPI.UpdateHealth(TgP.Health, TgP.GetMaxHealth() * 2); - } - - MountDevice = TgDevice_Mount(TgP.GetDeviceByEqPoint(23)); - // End:0x190 - if(MountDevice != none) - { - MountDevice.SetAllowMountServerTimer(); - MountDevice.ClientStartMount(); - } - - ProxyActor.ClientConsoleCommand("setreadytoplay"); - - setTimer(5, true, 'killcontroller'); - -} - -public function Logout(Controller Exiting) { - local int i; - super.Logout(Exiting); - - m_nPlayerCount--; - if(!isTravelling) { - for (i = 0; i < m_ProxyActors.Length; i++) { - if (m_ProxyActors[i].Owner == Exiting) { - m_ProxyActors.Remove(i, 1); - } - } - setTimer(0.25, false, 'removeBots'); - } -} - -public event PreBeginPlay() { - super.PreBeginPlay(); - m_TgG = TgGame(WorldInfo.Game); - - allMaps = new class'Maps'; - allMaps.loadMaps(); - - m_nPlayerCount = 0; -} - -private function debugKillcam() { - local TgPlayerController TgPC; - local TgPawn Pawn; - GRI.r_bAttackersKillCamEnabled = true; - GRI.r_bDefendersKillCamEnabled = true; - `log(string(WorldInfo.IsRecordingTimelapse()) @ string(WorldInfo.IsPlayingTimelapse())); - `log(GameplayEventsWriter); - foreach AllActors(class'TgPlayerController', TgPC) { - if(TgPC.Pawn != none) { - Pawn = TgPawn(TgPC.Pawn); - `log("CHECK FOR" @ Pawn.Name); - TgPC.bForcedTimelapseRequested = true; - `log(string(TgPC.CanPlayKillCam(false))); - if((TgPC.r_fServerTimeStamp - Pawn.r_fReconnectTime) < 30.0) { - `log("TIMESTAMP < 30 IS CAUSING THE FALSE"); - } - if(GRI == none) { - `log("GRI NONE IS CAUSING THE FALSE"); - } - if(!GRI.r_bKillCamEnabled) { - `log("KILLCAMENABLED IS CAUSING THE FALSE"); - } - if(GRI.r_bBlockKillCam) { - `log("BLOCKKILLCAM IS CAUSING THE FALSE"); - } - if(GRI.r_AttackingTaskForce == none) { - `log("GRI ATTACKING TASKFORCE NONE IS CAUSING THE FALSE"); - } - if(!GRI.r_bAttackersKillCamEnabled) { - `log("GRI ATTACKERS KILLCAM IS CAUSING THE FALSE"); - } - if(!GRI.r_bDefendersKillCamEnabled) { - `log("GRI DEFENDERS KILLCAM IS CAUSING THE FALSE"); - } - if(!(TgPC.m_nKillCamTargetId >= 0)) { - `log("KILLCAM TARGET ID IS CAUSING THE FALSE"); - } - if(GRI.r_AttackingTaskForce.GetTeamNum() != TgPC.GetTaskForceNumber()) { - `log("GET TEAM NUM NONE IS CAUSING THE FALSE"); - } - `log(""); - `log(""); - `log(""); - } - } -} - -public function ScoreKill(Controller Killer, Controller Other) -{ - local TgPlayerController TgPCKiller; - local TgPlayerController TgPCKilled; - local TgPawn killerPawn; - local TgPawn killedPawn; - super.ScoreKill(Killer, Other); - - TgPCKiller = TgPlayerController(Killer); - TgPCKilled = TgPlayerController(Other); - - killerPawn = TgPawn(TgPCKiller.Pawn); - KilledPawn = TgPawn(TgPCKilled.Pawn); - - `log("FIRED SCOREKILL" @ killerPawn.Name); - `log("KILLER PAWNID" @ killerPawn.r_nPawnId); - `log("KILLER OWNER" @ killerPawn.r_Owner.Name); - TgPCKilled.SetKillCamTarget(KillerPawn); - TgPCKilled.ClientSetKillCamTarget(killerPawn.r_nPawnId, killerPawn.r_nPawnId); - `log("TG PC KILLED" @ TgPCKilled.m_nKillCamTargetId @ TgPCKilled.m_nKillCamTargetBackupId); - `log("TG PC KILLER" @ TgPCKiller.m_nKillCamTargetId @ TgPCKiller.m_nKillCamTargetBackupId); - `log("KillCamViewTarget" @ TgPCKilled.GetBestKillCamTarget().Name); - //TgPCKilled.StartTimelapsePlayback(-7.5000000, -3.0000000, false); - //TgPCKilled.ControllerPreTimeLapse(); - TgPCKilled.StartTimelapse(); - //KilledPawn.PreTimeLapse(false); -} - -public event PostBeginPlay() { - super.PostBeginPlay(); - - m_TgG = TgGame(WorldInfo.Game); - GRI = TgRepInfo_Game(WorldInfo.GRI); - isTravelling = false; - - if(Role == Role_Authority) { - ServerConfig = new class'AServerConfigData'; - ServerConfig.InitializeConfig(); - } - if(sOptions.TotalMayhem) { - SetTimer(1, true, 'runTotalMayhem'); - m_fBaseRespawnTime = 1; - m_fDefenseRespawnIncrease = 0; - m_fAttackRespawnIncrease = 0; - m_bCanPurchaseItemsAnywhere = true; - } - -} - -private function killcontroller() { - local TgPlayerController TgPC; - local TempestSpectatorController TgSC; - local TgRepInfo_Player TgRPI; - local Vector CamLoc; - local Rotator CamRot; - - foreach AllActors(class'TempestSpectatorController', TgSC) { - TgRPI = TgRepInfo_Player(TgSC.PlayerReplicationInfo); - LogInternal("Found spectator: " @ TgRPI.PlayerName); - - TgRPI.UpdateSpectatorUI(); - - // Destroy old controller — PRI already transferred via SwitchController - //TgPC.Destroy(); - - break; - } -} - -private function removeBots() { - local TgAIController_BehaviorGod TgAI; - foreach AllActors(class'TgAIController_BehaviorGod', TgAI) { - if(TgAI != none) { - TgAI.Pawn.Suicide(); - TgAI.Pawn.Destroy(); - TgAI.PlayerReplicationInfo.Destroy(); - TgAI.Destroy(); - } - } -} - -public function TaskforceWin(Int nTaskForce, EVictoryType VictoryType) { - local TgPlayerController TgPC; - local int rmap; - local array ValidMaps; - local int i; - local string Gamemode; - Gamemode = "Siege"; - - super.TaskforceWin(nTaskForce, VictoryType); - - isTravelling = true; - - for(i = 0; i < allMaps.MapDatabase.Length; i++) { - if(allMaps.MapDatabase[i].MapGamemodes.Find(Gamemode) != INDEX_NONE) { - ValidMaps.AddItem(allMaps.MapDatabase[i]); - } - } - - if(ValidMaps.Length > 0) { - rmap = rand(ValidMaps.Length); - nextMap = ValidMaps[rmap].MapName; - - foreach AllActors(class'TgPlayerController', TgPC) { - TgPC.ClientMessage("The server will soon restart and your game will close.", , 15); - TgPC.ClientMessage("The next Map will be:" @ ValidMaps[rmap].MapReadableName, , 15); - } - } else { - rmap = rand(allMaps.MapDatabase.Length); - nextMap = allMaps.MapDatabase[rmap].MapName; - - foreach AllActors(class'TgPlayerController', TgPC) { - TgPC.ClientMessage("The server will soon restart and your game will close.", , 15); - TgPC.ClientMessage("The next Map will be:" @ allMaps.MapDatabase[rmap].MapReadableName, , 15); - } - } - - SetTimer(6, false, 'proceedEndGame'); -} - -private event proceedEndGame() { - local TempestProxyActor ProxyActor; - foreach m_ProxyActors(ProxyActor) { - ProxyActor.ClientConsoleCommand("quit"); - } - if(Role == ROLE_Authority) { - foreach m_ProxyActors(ProxyActor) { - m_ProxyActors.RemoveItem(ProxyActor); - } - switchMap(); - } -} - -private event runTotalMayhem() { - local TgPlayerController TgPC; - local TgPawn_Character Pawn; - foreach AllActors(class'TgPlayerController', TgPC) { - Pawn = TgPawn_Character(TgPC.Pawn); - if(TgPC != none && Pawn != none) { - reduceCooldownAndBoostUltCharge(Pawn); - } - } -} - -private function reduceCooldownAndBoostUltCharge(TgPawn_Character Pawn) { - local float ultChargeMount, cdRatio, CD, NewCD, BaseCD; - ultChargeMount = 2.5f; - cdRatio = 0.2f; - if(Pawn.MySpawnGatesAreOpen() && Pawn.ShouldRecharge()) Pawn.SetProperty(2, Pawn.GetEnergy() + ultChargeMount); - - if(Pawn.GetDeviceByEqPoint(3).GetCooldownRemaining() > 0) { - BaseCD = Pawn.GetDeviceByEqPoint(3).GetCooldownTime(); - CD = Pawn.GetDeviceByEqPoint(3).GetCooldownRemaining(); - - NewCD = CD - (BaseCD * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(3).ResetCooldown(0, NewCD); - } - - if(Pawn.GetDeviceByEqPoint(4).GetCooldownRemaining() > 0) { - BaseCD = Pawn.GetDeviceByEqPoint(4).GetCooldownTime(); - CD = Pawn.GetDeviceByEqPoint(4).GetCooldownRemaining(); - - NewCD = CD - (BaseCD * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(4).ResetCooldown(0, NewCD); - } - - if(Pawn.GetDeviceByEqPoint(16).GetCooldownRemaining() > 0) { - BaseCD = Pawn.GetDeviceByEqPoint(16).GetCooldownTime(); - CD = Pawn.GetDeviceByEqPoint(16).GetCooldownRemaining(); - - NewCD = CD - (BaseCD * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(16).ResetCooldown(0, NewCD); - } -} - -private function bool hasLoginBeenRejected(PlayerController NewPlayer, PendingLoginData data) { - if(isTravelling) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server is restarting."); - return true; - } - - if(sOptions.password != "") { - if(Data.password != sOptions.password) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: Wrong password."); - return true; - } - } - /* - if(!sOptions.allowSpectators && (Data.team == "spec" || Data.team == "spectator")) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server doesn't allow spectators."); - return true; - } -*/ - if(m_nPlayerCount > maxPlayers) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server is full."); - return true; - } - return false; -} - -private function ChampionData setChampion(PendingLoginData Data) { - local int randChamp; - local string incomingName; - local ChampionData selectedChampion; - - incomingName = Locs(Data.ChampionName); - - if (isChampionAllowed(incomingName)) { - selectedChampion = findChampionByNameOrAlias(incomingName); - return selectedChampion; - } - - randChamp = Rand(sOptions.allowedChampions.Length); - selectedChampion = findChampionByNameOrAlias(Locs(sOptions.allowedChampions[randChamp])); - return selectedChampion; -} - -private function bool isChampionAllowed(string championName) { - local int i, j; - - for (i = 0; i < ServerConfig.Champion.Length; i++) { - if (sOptions.allowedChampions.Find(Locs(ServerConfig.Champion[i].name)) != INDEX_NONE) { - if (Locs(ServerConfig.Champion[i].name) == championName) { - return true; - } - - for (j = 0; j < ServerConfig.Champion[i].aliases.Length; j++) { - if (Locs(ServerConfig.Champion[i].aliases[j]) == championName) { - return true; - } - } - } - } - return false; -} - -private function ChampionData findChampionByNameOrAlias(string championName) { - local int i, j; - local ChampionData emptyChampion; - - for (i = 0; i < ServerConfig.Champion.Length; i++) { - if (Locs(ServerConfig.Champion[i].name) == championName) { - return ServerConfig.Champion[i]; - } - - for (j = 0; j < ServerConfig.Champion[i].aliases.Length; j++) { - if (Locs(ServerConfig.Champion[i].aliases[j]) == championName) { - return ServerConfig.Champion[i]; - } - } - } - - return emptyChampion; -} - -private function switchMap() { - ProcessServerTravel(nextMap, true); - //removeBots(); -} - -public function int getTeam(PendingLoginData Data) { - switch(Data.Team) - { - case "1": return 1; break; - case "2": return 2; break; - case "spec": return 3; break; - case "spectator": return 3; break; - } - - return (m_nPlayerCount % 2 == 0) ? 1 : 2; -} - -public function int getHorse(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16526; - - switch(Data.horse) - { - case "1": return 12616; break; - case "2": return 12612; break; - } - - return 12616; -} - -public function int getSpray(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16457; - - return 15587; -} - -public function int getTitle(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16936; - - return 0; -} - -public function ChampionData setBelgianYing(PendingLoginData Data, ChampionData SelectedChampion) { - // Special Belgian Treatement - if(Data.netAddress == "262038383" && (Data.championName == "ying" || Data.championName == "bestwaifu")) { - SelectedChampion.BotId = 2267; - SelectedChampion.SkinId = 18656; - SelectedChampion.DeviceSkinId = 18655; - SelectedChampion.HeadId = 18657; - } - return SelectedChampion; -} - -public function checkShouldAnimateYourName(PendingLoginData Data, TgRepInfo_Player PRI) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") { - shouldAnimateYourNamePRI = PRI; - shouldAnimateYourNameData = Data; - } -} - -function animateYourName() { - `log(WorldInfo.TimeSeconds); - if(shouldAnimateYourNamePRI != none) shouldAnimateYourNamePRI.PlayerName = TempestLib.UpdateAnimatedName(shouldAnimateYourNameData.playerName); -} - -public function initServerCheatManager(TgPlayerController TgPC) { - TgPC.CheatClass = Class'TgBattleCheatManager'; - if(TgPC.CheatManager == none) { - TgPC.CheatManager = new (TgPC) Class'TgBattleCheatManager'; - if(TgPC.CheatManager != none) { - TgPC.CheatManager.InitCheatManager(); - `Log((("TempestProxyActor: CheatManager successfully created and initialized : " @ string(TgPC.CheatManager.Name)) @ ":") @ string(TgPC.CheatManager.Outer.Name)); - } else { - `Log("TempestProxyActor: Failed to create CheatManager!"); - } - } -} \ No newline at end of file diff --git a/Development/Src/TempestMp/Classes/TDM.uc b/Development/Src/TempestMp/Classes/TDM.uc deleted file mode 100755 index cbc614c2..00000000 --- a/Development/Src/TempestMp/Classes/TDM.uc +++ /dev/null @@ -1,582 +0,0 @@ -class TDM extends TgGame_Paladins_TeamDeathMatch; - -var TgGame m_TgG; -var TgRepInfo_Game GRI; - -var int m_nPlayerCount; -var array m_Players; -var array pendingMountPawns; - -var array m_ProxyActors; - -var ATempestLib TempestLib; - -var Maps allMaps; -var string nextMap; -var bool isTravelling; - -var AServerConfigData ServerConfig; - -struct PendingLoginData -{ - var string netAddress; - var int uniqueAddressId; - var string playerName; - var string championName; - var string team; - var string password; - var string horse; -}; - -var array pendingLogins; - -struct ServerParameters { - var int maxPlayers; - var string password; - var string mapName; - var array allowedChampions; - var bool allowSpectators; - var bool totalMayhem; -}; - -var ServerParameters sOptions; - -var TgRepInfo_Player shouldAnimateYourNamePRI; -var PendingLoginData shouldAnimateYourNameData; - -public event InitGame(String Options, out String ErrorMessage) -{ - super.InitGame(Options, ErrorMessage); - - TempestLib = self.Spawn(Class'ATempestLib', self); - TempestLib.SetOwner(self); - TempestLib.initTimer(); - - sOptions.maxPlayers = TempestLib.toInt(ParseOption(Options, "maxplayers")); - sOptions.password = ParseOption(Options, "serverpassword"); - sOptions.allowSpectators = HasOption(Options, "allowSpectators"); - sOptions.totalMayhem = HasOption(Options, "totalMayhem"); - if(sOptions.maxPlayers == 0) - sOptions.maxPlayers = 10; - - ParseStringIntoArray(ParseOption(Options, "allowedChampions"), sOptions.allowedChampions, ",", true); -} - -event PreLogin(string Options, string Address, const UniqueNetId UniqueId, bool bSupportsAuth, out string ErrorMessage) -{ - local PendingLoginData Data; - local int i, uniqueAddressId; - - super.PreLogin(Options, Address, UniqueId, bSupportsAuth, ErrorMessage); - - Address = Repl(Address, ".", ""); - - uniqueAddressId = (((TempestLib.toInt(Address) % 1000000) + ((int(WorldInfo.TimeSeconds * 10000) % 10000000) * 1000)) / (Len(Address) * 10)) + Rand(10000); - uniqueAddressId = int(Abs(uniqueAddressId)); - `log(uniqueAddressId); - - for (i = 0; i < pendingLogins.Length; i++) { - if (pendingLogins[i].NetAddress == Address) { - pendingLogins.Remove(i, 1); - } - } - - Data.NetAddress = Address; - Data.uniqueAddressId = uniqueAddressId; - Data.PlayerName = TempestLib.decodeURLParam(ParseOption(Options, "name")); - Data.ChampionName = ParseOption(Options, "class"); - Data.Team = ParseOption(Options, "team"); - Data.password = ParseOption(Options, "password"); - Data.horse = ParseOption(Options, "horse"); - - pendingLogins.AddItem(Data); -} - -public event PostLogin(PlayerController NewPlayer) -{ - local TgPlayerController TgPC; - local TempestSpectatorController TgSpec; - local TgPawn_Character TgP; - local TempestProxyActor ProxyActor; - local TempestProxyActor ProxyActorS; - local TgRepInfo_Player TgRPI; - local TgInventoryManager InvMgr; - local PendingLoginData Data; - local ChampionData SelectedChampion; - local TgDevice_Mount MountDevice; - local string Address; - local int i; - super.PostLogin(NewPlayer); - - Address = Repl(NewPlayer.GetPlayerNetworkAddress(), ".", ""); - - for (i = 0; i < pendingLogins.Length; i++) { - if (pendingLogins[i].NetAddress == Address) { - Data = pendingLogins[i]; - } - } - - TgPC = TgPlayerController(NewPlayer); - TgRPI = TgRepInfo_Player(NewPlayer.PlayerReplicationInfo); - - ProxyActor = Class'TempestUtils'.static.SetupProxy(TgPC); - ProxyActor.ServerAddCheats(); - - TgPC.CheatClass = Class'TgGame.TgBattleCheatManager'; - // End:0x34A - if(TgPC.CheatManager == none) - { - TgPC.CheatManager = new (TgPC) Class'TgGame.TgBattleCheatManager'; - // End:0x314 - if(TgPC.CheatManager != none) - { - TgPC.CheatManager.InitCheatManager(); - LogInternal((("TempestProxyActor: CheatManager successfully created and initialized : " @ string(TgPC.CheatManager.Name)) @ ":") @ string(TgPC.CheatManager.Outer.Name)); - } - else - { - LogInternal("TempestProxyActor: Failed to create CheatManager!"); - } - } - - m_nPlayerCount++; - - if (hasLoginBeenRejected(NewPlayer, Data)) - return; - - m_ProxyActors.AddItem(ProxyActor); - - for (i = 0; i < sOptions.allowedChampions.Length; i++) { - ProxyActor.ClientPrecacheClass(sOptions.allowedChampions[i]); - } - - // the horse - ProxyActor.ClientTestPrecache(2236, 12612, 0, 0, true); - ProxyActor.ClientTestPrecache(2236, 12616, 0, 0, true); - ProxyActor.ClientTestPrecache(2236, 16526, 0, 0, true); - - ProxyActor.ClientTestPrecache(2267, 18656, 18655, 18657, true); - - SelectedChampion = setChampion(Data); - SelectedChampion.mountId = getHorse(Data); - SelectedChampion.sprayId = getSpray(Data); - - SelectedChampion = setBelgianYing(Data, SelectedChampion); - - checkShouldAnimateYourName(Data, TgRPI); - - Class'TempestUtils'.static.SetupPRI(m_TgG, TgRPI, Data.uniqueAddressId, Data.playerName, getTeam(Data), SelectedChampion.mountId, getTitle(Data)); - - Class'TempestUtils'.static.SpawnPawn(self, TgPC, SelectedChampion.BotId, SelectedChampion.SkinId, SelectedChampion.DeviceSkinId, SelectedChampion.HeadId, SelectedChampion.mountId); - - //NewPlayer.Player.SwitchController(TgPC); - TgP = TgPawn_Character(TgPC.Pawn); - - if (Role == Role_Authority) { - TgP.m_bAirAccuracyPenalty = false; - InvMgr = TgInventoryManager(TgP.InvManager); - - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card1), 19, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card2), 20, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card3), 21, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card4), 22, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card5), 5, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.Talent), 25, , true, ); - - InvMgr.AddDevice(SelectedChampion.sprayId, 17, , true, ); - } - - TgP.PostPawnSetupServer(); - if(sOptions.TotalMayhem) { - TgRPI.UpdateHealth(TgP.Health, TgP.GetMaxHealth() * 2); - } - - MountDevice = TgDevice_Mount(TgP.GetDeviceByEqPoint(23)); - // End:0x190 - if(MountDevice != none) - { - MountDevice.SetAllowMountServerTimer(); - MountDevice.ClientStartMount(); - } - - ProxyActor.ClientConsoleCommand("setreadytoplay"); - -} - -public function Logout(Controller Exiting) { - local int i; - super.Logout(Exiting); - - m_nPlayerCount--; - if(!isTravelling) { - for (i = 0; i < m_ProxyActors.Length; i++) { - if (m_ProxyActors[i].Owner == Exiting) { - m_ProxyActors.Remove(i, 1); - } - } - setTimer(0.25, false, 'removeBots'); - } -} - -public event PreBeginPlay() { - super.PreBeginPlay(); - m_TgG = TgGame(WorldInfo.Game); - - allMaps = new class'Maps'; - allMaps.loadMaps(); - - m_nPlayerCount = 0; -} - -private function debugKillcam() { - local TgPlayerController TgPC; - local TgPawn Pawn; - GRI.r_bAttackersKillCamEnabled = true; - GRI.r_bDefendersKillCamEnabled = true; - `log(string(WorldInfo.IsRecordingTimelapse()) @ string(WorldInfo.IsPlayingTimelapse())); - `log(GameplayEventsWriter); - foreach AllActors(class'TgPlayerController', TgPC) { - if(TgPC.Pawn != none) { - Pawn = TgPawn(TgPC.Pawn); - `log("CHECK FOR" @ Pawn.Name); - TgPC.bForcedTimelapseRequested = true; - `log(string(TgPC.CanPlayKillCam(false))); - if((TgPC.r_fServerTimeStamp - Pawn.r_fReconnectTime) < 30.0) { - `log("TIMESTAMP < 30 IS CAUSING THE FALSE"); - } - if(GRI == none) { - `log("GRI NONE IS CAUSING THE FALSE"); - } - if(!GRI.r_bKillCamEnabled) { - `log("KILLCAMENABLED IS CAUSING THE FALSE"); - } - if(GRI.r_bBlockKillCam) { - `log("BLOCKKILLCAM IS CAUSING THE FALSE"); - } - if(GRI.r_AttackingTaskForce == none) { - `log("GRI ATTACKING TASKFORCE NONE IS CAUSING THE FALSE"); - } - if(!GRI.r_bAttackersKillCamEnabled) { - `log("GRI ATTACKERS KILLCAM IS CAUSING THE FALSE"); - } - if(!GRI.r_bDefendersKillCamEnabled) { - `log("GRI DEFENDERS KILLCAM IS CAUSING THE FALSE"); - } - if(!(TgPC.m_nKillCamTargetId >= 0)) { - `log("KILLCAM TARGET ID IS CAUSING THE FALSE"); - } - if(GRI.r_AttackingTaskForce.GetTeamNum() != TgPC.GetTaskForceNumber()) { - `log("GET TEAM NUM NONE IS CAUSING THE FALSE"); - } - `log(""); - `log(""); - `log(""); - } - } -} - -public function ScoreKill(Controller Killer, Controller Other) -{ - local TgPlayerController TgPCKiller; - local TgPlayerController TgPCKilled; - local TgPawn killerPawn; - local TgPawn killedPawn; - super.ScoreKill(Killer, Other); - - TgPCKiller = TgPlayerController(Killer); - TgPCKilled = TgPlayerController(Other); - - killerPawn = TgPawn(TgPCKiller.Pawn); - KilledPawn = TgPawn(TgPCKilled.Pawn); - - `log("FIRED SCOREKILL" @ killerPawn.Name); - `log("KILLER PAWNID" @ killerPawn.r_nPawnId); - `log("KILLER OWNER" @ killerPawn.r_Owner.Name); - TgPCKilled.SetKillCamTarget(KillerPawn); - TgPCKilled.ClientSetKillCamTarget(killerPawn.r_nPawnId, killerPawn.r_nPawnId); - `log("TG PC KILLED" @ TgPCKilled.m_nKillCamTargetId @ TgPCKilled.m_nKillCamTargetBackupId); - `log("TG PC KILLER" @ TgPCKiller.m_nKillCamTargetId @ TgPCKiller.m_nKillCamTargetBackupId); - `log("KillCamViewTarget" @ TgPCKilled.GetBestKillCamTarget().Name); - //TgPCKilled.StartTimelapsePlayback(-7.5000000, -3.0000000, false); - //TgPCKilled.ControllerPreTimeLapse(); - TgPCKilled.StartTimelapse(); - //KilledPawn.PreTimeLapse(false); -} - -public event PostBeginPlay() { - super.PostBeginPlay(); - - m_TgG = TgGame(WorldInfo.Game); - GRI = TgRepInfo_Game(WorldInfo.GRI); - isTravelling = false; - - if(Role == Role_Authority) { - ServerConfig = new class'AServerConfigData'; - ServerConfig.InitializeConfig(); - } - if(sOptions.TotalMayhem) { - SetTimer(1, true, 'runTotalMayhem'); - m_fBaseRespawnTime = 1; - m_bCanPurchaseItemsAnywhere = true; - } - -} - -private function killcontroller() { - local TgPlayerController TgPC; - local TempestSpectatorController TgSC; - local TgRepInfo_Player TgRPI; - local Vector CamLoc; - local Rotator CamRot; - - foreach AllActors(class'TempestSpectatorController', TgSC) { - TgRPI = TgRepInfo_Player(TgSC.PlayerReplicationInfo); - LogInternal("Found spectator: " @ TgRPI.PlayerName); - - TgRPI.UpdateSpectatorUI(); - - // Destroy old controller — PRI already transferred via SwitchController - //TgPC.Destroy(); - - break; - } -} - -private function removeBots() { - local TgAIController_BehaviorGod TgAI; - foreach AllActors(class'TgAIController_BehaviorGod', TgAI) { - if(TgAI != none) { - TgAI.Pawn.Suicide(); - TgAI.Pawn.Destroy(); - TgAI.PlayerReplicationInfo.Destroy(); - TgAI.Destroy(); - } - } -} - -private event proceedEndGame() { - local TempestProxyActor ProxyActor; - foreach m_ProxyActors(ProxyActor) { - ProxyActor.ClientConsoleCommand("quit"); - } - if(Role == ROLE_Authority) { - foreach m_ProxyActors(ProxyActor) { - m_ProxyActors.RemoveItem(ProxyActor); - } - switchMap(); - } -} - -private event runTotalMayhem() { - local TgPlayerController TgPC; - local TgPawn_Character Pawn; - foreach AllActors(class'TgPlayerController', TgPC) { - Pawn = TgPawn_Character(TgPC.Pawn); - if(TgPC != none && Pawn != none) { - reduceCooldownAndBoostUltCharge(Pawn); - } - } -} - -private function reduceCooldownAndBoostUltCharge(TgPawn_Character Pawn) { - local float ultChargeMount, cdRatio, CD, NewCD, BaseCD; - ultChargeMount = 2.5f; - cdRatio = 0.2f; - if(Pawn.MySpawnGatesAreOpen() && Pawn.ShouldRecharge()) Pawn.SetProperty(2, Pawn.GetEnergy() + ultChargeMount); - - if(Pawn.GetDeviceByEqPoint(3).GetCooldownRemaining() > 0) { - BaseCD = Pawn.GetDeviceByEqPoint(3).GetCooldownTime(); - CD = Pawn.GetDeviceByEqPoint(3).GetCooldownRemaining(); - - NewCD = CD - (BaseCD * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(3).ResetCooldown(0, NewCD); - } - - if(Pawn.GetDeviceByEqPoint(4).GetCooldownRemaining() > 0) { - BaseCD = Pawn.GetDeviceByEqPoint(4).GetCooldownTime(); - CD = Pawn.GetDeviceByEqPoint(4).GetCooldownRemaining(); - - NewCD = CD - (BaseCD * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(4).ResetCooldown(0, NewCD); - } - - if(Pawn.GetDeviceByEqPoint(16).GetCooldownRemaining() > 0) { - BaseCD = Pawn.GetDeviceByEqPoint(16).GetCooldownTime(); - CD = Pawn.GetDeviceByEqPoint(16).GetCooldownRemaining(); - - NewCD = CD - (BaseCD * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(16).ResetCooldown(0, NewCD); - } -} - -private function bool hasLoginBeenRejected(PlayerController NewPlayer, PendingLoginData data) { - if(isTravelling) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server is restarting."); - return true; - } - - if(sOptions.password != "") { - if(Data.password != sOptions.password) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: Wrong password."); - return true; - } - } - /* - if(!sOptions.allowSpectators && (Data.team == "spec" || Data.team == "spectator")) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server doesn't allow spectators."); - return true; - } -*/ - if(m_nPlayerCount > maxPlayers) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server is full."); - return true; - } - return false; -} - -private function ChampionData setChampion(PendingLoginData Data) { - local int randChamp; - local string incomingName; - local ChampionData selectedChampion; - - incomingName = Locs(Data.ChampionName); - - if (isChampionAllowed(incomingName)) { - selectedChampion = findChampionByNameOrAlias(incomingName); - return selectedChampion; - } - - randChamp = Rand(sOptions.allowedChampions.Length); - selectedChampion = findChampionByNameOrAlias(Locs(sOptions.allowedChampions[randChamp])); - return selectedChampion; -} - -private function bool isChampionAllowed(string championName) { - local int i, j; - - for (i = 0; i < ServerConfig.Champion.Length; i++) { - if (sOptions.allowedChampions.Find(Locs(ServerConfig.Champion[i].name)) != INDEX_NONE) { - if (Locs(ServerConfig.Champion[i].name) == championName) { - return true; - } - - for (j = 0; j < ServerConfig.Champion[i].aliases.Length; j++) { - if (Locs(ServerConfig.Champion[i].aliases[j]) == championName) { - return true; - } - } - } - } - return false; -} - -private function ChampionData findChampionByNameOrAlias(string championName) { - local int i, j; - local ChampionData emptyChampion; - - for (i = 0; i < ServerConfig.Champion.Length; i++) { - if (Locs(ServerConfig.Champion[i].name) == championName) { - return ServerConfig.Champion[i]; - } - - for (j = 0; j < ServerConfig.Champion[i].aliases.Length; j++) { - if (Locs(ServerConfig.Champion[i].aliases[j]) == championName) { - return ServerConfig.Champion[i]; - } - } - } - - return emptyChampion; -} - -private function switchMap() { - ProcessServerTravel(nextMap, true); - //removeBots(); -} - -public function int getTeam(PendingLoginData Data) { - switch(Data.Team) - { - case "1": return 1; break; - case "2": return 2; break; - case "spec": return 3; break; - case "spectator": return 3; break; - } - - return (m_nPlayerCount % 2 == 0) ? 1 : 2; -} - -public function int getHorse(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16526; - - switch(Data.horse) - { - case "1": return 12616; break; - case "2": return 12612; break; - } - - return 12616; -} - -public function int getSpray(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16457; - - return 15587; -} - -public function int getTitle(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16936; - - return 0; -} - -public function ChampionData setBelgianYing(PendingLoginData Data, ChampionData SelectedChampion) { - // Special Belgian Treatement - if(Data.netAddress == "262038383" && (Data.championName == "ying" || Data.championName == "bestwaifu")) { - SelectedChampion.BotId = 2267; - SelectedChampion.SkinId = 18656; - SelectedChampion.DeviceSkinId = 18655; - SelectedChampion.HeadId = 18657; - } - return SelectedChampion; -} - -public function checkShouldAnimateYourName(PendingLoginData Data, TgRepInfo_Player PRI) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") { - shouldAnimateYourNamePRI = PRI; - shouldAnimateYourNameData = Data; - } -} - -function animateYourName() { - `log(WorldInfo.TimeSeconds); - if(shouldAnimateYourNamePRI != none) shouldAnimateYourNamePRI.PlayerName = TempestLib.UpdateAnimatedName(shouldAnimateYourNameData.playerName); -} - -public function initServerCheatManager(TgPlayerController TgPC) { - TgPC.CheatClass = Class'TgBattleCheatManager'; - if(TgPC.CheatManager == none) { - TgPC.CheatManager = new (TgPC) Class'TgBattleCheatManager'; - if(TgPC.CheatManager != none) { - TgPC.CheatManager.InitCheatManager(); - `Log((("TempestProxyActor: CheatManager successfully created and initialized : " @ string(TgPC.CheatManager.Name)) @ ":") @ string(TgPC.CheatManager.Outer.Name)); - } else { - `Log("TempestProxyActor: Failed to create CheatManager!"); - } - } -} \ No newline at end of file diff --git a/Development/Src/TempestMp/Classes/TempestMp.UPKG b/Development/Src/TempestMp/Classes/TempestMp.UPKG deleted file mode 100755 index 6c2e01bf..00000000 --- a/Development/Src/TempestMp/Classes/TempestMp.UPKG +++ /dev/null @@ -1,4 +0,0 @@ -[Flags] -AllowDownload=True -ClientOptional=False -ServerSideOnly=False \ No newline at end of file diff --git a/Development/Src/TempestMp/Classes/TempestSpectatorController.uc b/Development/Src/TempestMp/Classes/TempestSpectatorController.uc deleted file mode 100755 index 873ea410..00000000 --- a/Development/Src/TempestMp/Classes/TempestSpectatorController.uc +++ /dev/null @@ -1,19 +0,0 @@ -class TempestSpectatorController extends TgSpectatorController; - -// Override so characters default to third person instead of top-down -function SpectatorCameraMode GetDefaultModeFor(Actor Target) -{ - if (Target.IsInState('Dying')) - return SpecCam_None; - - if (Target.IsA('TgPawn_Structure')) - return SpecCam_FollowTopDown; - - if (Target.IsA('TgPawn_Character')) - return SpecCam_FollowFirstPerson; // was 4, now 2 - - if (Target.IsA('CameraActor')) - return SpecCam_Camera; - - return SpecCam_None; -} \ No newline at end of file diff --git a/Development/Src/TempestMp/Classes/ttt.uc b/Development/Src/TempestMp/Classes/ttt.uc deleted file mode 100755 index 2d6e8ab8..00000000 --- a/Development/Src/TempestMp/Classes/ttt.uc +++ /dev/null @@ -1,494 +0,0 @@ -class ttt extends Mutator; - -var TgGame m_TgG; -var TgRepInfo_Game GRI; - -var int m_nPlayerCount; -var array m_Players; -var array pendingMountPawns; - -var array m_ProxyActors; - -var ATempestLib TempestLib; - - -var Maps allMaps; -var string nextMap; -var bool isTravelling; - -var AServerConfigData ServerConfig; - -struct PendingLoginData -{ - var string netAddress; - var int uniqueAddressId; - var string playerName; - var string championName; - var string team; - var string password; - var string horse; -}; - -var array pendingLogins; - -struct ServerParameters { - var int maxPlayers; - var string password; - var string mapName; - var array allowedChampions; - var bool allowSpectators; - var bool totalMayhem; -}; - -var ServerParameters sOptions; - -var TgRepInfo_Player shouldAnimateYourNamePRI; -var PendingLoginData shouldAnimateYourNameData; - -public function InitMutator(String Options, out String ErrorMessage) -{ - super.InitMutator(Options, ErrorMessage); - - `log(Options); - - TempestLib = self.Spawn(Class'ATempestLib', self); - TempestLib.SetOwner(self); - TempestLib.initTimer(); - - sOptions.maxPlayers = TempestLib.toInt(ParseOption(Options, "maxplayers")); - sOptions.password = ParseOption(Options, "serverpassword"); - sOptions.allowSpectators = HasOption(Options, "allowSpectators"); - sOptions.totalMayhem = HasOption(Options, "totalMayhem"); - if(sOptions.maxPlayers == 0) - sOptions.maxPlayers = 10; - - ParseStringIntoArray(ParseOption(Options, "allowedChampions"), sOptions.allowedChampions, ",", true); -} - -public function ModifyLogin(out String Portal, out String Options) -{ - local string Address; - local PendingLoginData Data; - local int i, uniqueAddressId; - - super.ModifyLogin(Portal, Options); - - LogInternal(Portal @ ParseOption(Options, "class")); - Address = ParseOption(Options, "address"); - - Address = Repl(Address, ".", ""); - - uniqueAddressId = (((TempestLib.toInt(Address) % 1000000) + ((int(WorldInfo.TimeSeconds * 10000) % 10000000) * 1000)) / (Len(Address) * 10)) + Rand(10000); - uniqueAddressId = int(Abs(uniqueAddressId)); - `log(uniqueAddressId); - - for (i = 0; i < pendingLogins.Length; i++) { - if (pendingLogins[i].NetAddress == Address) { - pendingLogins.Remove(i, 1); - } - } - - Data.NetAddress = Portal; - Data.uniqueAddressId = uniqueAddressId; - Data.PlayerName = TempestLib.decodeURLParam(ParseOption(Options, "name")); - Data.ChampionName = ParseOption(Options, "class"); - Data.Team = ParseOption(Options, "team"); - Data.password = ParseOption(Options, "password"); - Data.horse = ParseOption(Options, "horse"); - - pendingLogins.AddItem(Data); -} - - -public event PreBeginPlay() -{ - super.PreBeginPlay(); -} - -public event PostBeginPlay() -{ - super.PostBeginPlay(); - m_TgG = TgGame(WorldInfo.Game); - GRI = TgRepInfo_Game(WorldInfo.GRI); - isTravelling = false; - - if(Role == Role_Authority) { - ServerConfig = new class'AServerConfigData'; - ServerConfig.InitializeConfig(); - } - if(sOptions.TotalMayhem) { - SetTimer(1, true, 'runTotalMayhem'); - } -} - -public function NotifyLogin(Controller NewPlayer) -{ - local TgPlayerController TgPC; - local TgPawn_Character TgP; - local TempestProxyActor ProxyActor; - local TgRepInfo_Player TgRPI; - local TgInventoryManager InvMgr; - local PendingLoginData Data; - local ChampionData SelectedChampion; - local string Address; - local int i; - super.NotifyLogin(NewPlayer); - - TgPC = TgPlayerController(NewPlayer); - - Address = Repl(TgPC.GetPlayerNetworkAddress(), ".", ""); - - for (i = 0; i < pendingLogins.Length; i++) { - if (pendingLogins[i].NetAddress == Address) { - Data = pendingLogins[i]; - } - } - - TgRPI = TgRepInfo_Player(TgPC.PlayerReplicationInfo); - ProxyActor = Class'TempestUtils'.static.SetupProxy(TgPC); - ProxyActor.ServerAddCheats(); - - m_nPlayerCount++; - - if (hasLoginBeenRejected(TgPC, Data)) - return; - - m_ProxyActors.AddItem(ProxyActor); - - for (i = 0; i < sOptions.allowedChampions.Length; i++) { - ProxyActor.ClientPrecacheClass(sOptions.allowedChampions[i]); - } - - // the horse - ProxyActor.ClientTestPrecache(2236, 12612, 0, 0, true); - ProxyActor.ClientTestPrecache(2236, 12616, 0, 0, true); - ProxyActor.ClientTestPrecache(2236, 16526, 0, 0, true); - - ProxyActor.ClientTestPrecache(2273, 18656, 18655, 18657, true); - - SelectedChampion = setChampion(Data); - SelectedChampion.mountId = getHorse(Data); - SelectedChampion.sprayId = getSpray(Data); - - SelectedChampion = setBelgianYing(Data, SelectedChampion); - - checkShouldAnimateYourName(Data, TgRPI); - - Class'TempestUtils'.static.SetupPRI(m_TgG, TgRPI, Data.uniqueAddressId, Data.playerName, getTeam(Data), SelectedChampion.mountId, getTitle(Data)); - Class'TempestUtils'.static.SpawnPawn(m_TgG, TgPC, SelectedChampion.BotId, SelectedChampion.SkinId, SelectedChampion.DeviceSkinId, SelectedChampion.HeadId, SelectedChampion.mountId); - - TgP = TgPawn_Character(TgPC.Pawn); - - `log(TgP.GetURLMap()); - - if (Role == Role_Authority) { - TgPawn(TgPC.Pawn).m_bAirAccuracyPenalty = false; - InvMgr = TgInventoryManager(TgPawn(TgPC.Pawn).InvManager); - - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card1), 19, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card2), 20, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card3), 21, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card4), 22, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.card5), 5, , true, ); - InvMgr.AddDevice(TgPC.GetDeviceIdByName(SelectedChampion.Talent), 25, , true, ); - - InvMgr.AddDevice(SelectedChampion.sprayId, 17, , true, ); - - } - - ProxyActor.ClientConsoleCommand("setreadytoplay"); -} - -private function removeBots() { - local TgAIController_BehaviorGod TgAI; - foreach AllActors(class'TgAIController_BehaviorGod', TgAI) { - if(TgAI != none) { - TgAI.Pawn.Suicide(); - TgAI.Pawn.Destroy(); - TgAI.PlayerReplicationInfo.Destroy(); - TgAI.Destroy(); - } - } -} - -private event proceedEndGame() { - local TempestProxyActor ProxyActor; - foreach m_ProxyActors(ProxyActor) { - ProxyActor.ClientConsoleCommand("quit"); - } - if(Role == ROLE_Authority) { - foreach m_ProxyActors(ProxyActor) { - m_ProxyActors.RemoveItem(ProxyActor); - } - } -} - -private event runTotalMayhem() { - local TgPlayerController TgPC; - local TgPawn Pawn; - foreach AllActors(class'TgPlayerController', TgPC) { - Pawn = TgPawn(TgPC.Pawn); - if(TgPC != none && Pawn != none) { - reduceCooldownAndBoostUltCharge(Pawn); - } - } -} - -private function reduceCooldownAndBoostUltCharge(TgPawn Pawn) { - local float ultChargeMount, cdRatio, CD, NewCD; - ultChargeMount = 2.5f; - cdRatio = 0.2f; - if(Pawn.MySpawnGatesAreOpen() && Pawn.ShouldRecharge()) Pawn.SetProperty(2, Pawn.GetEnergy() + ultChargeMount); - - if(Pawn.GetDeviceByEqPoint(3).GetCooldownRemaining() > 0) { - CD = Pawn.GetDeviceByEqPoint(3).GetCooldownRemaining(); - - NewCD = CD - (Pawn.GetDeviceByEqPoint(3).GetCooldownTime() * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(3).ResetCooldown(0, NewCD); - } - - if(Pawn.GetDeviceByEqPoint(4).GetCooldownRemaining() > 0) { - CD = Pawn.GetDeviceByEqPoint(4).GetCooldownRemaining(); - NewCD = CD - (Pawn.GetDeviceByEqPoint(4).GetCooldownTime() * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(4).ResetCooldown(0, NewCD); - } - - if(Pawn.GetDeviceByEqPoint(16).GetCooldownRemaining() > 0) { - CD = Pawn.GetDeviceByEqPoint(16).GetCooldownRemaining(); - NewCD = CD - (Pawn.GetDeviceByEqPoint(16).GetCooldownTime() * cdRatio); - if(NewCD < 0) NewCD = 0; - Pawn.GetDeviceByEqPoint(16).ResetCooldown(0, NewCD); - } -} - -private function bool hasLoginBeenRejected(PlayerController NewPlayer, PendingLoginData data) { - if(isTravelling) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server is restarting."); - return true; - } - - if(sOptions.password != "") { - if(Data.password != sOptions.password) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: Wrong password."); - return true; - } - } - - if(!sOptions.allowSpectators && (Data.team == "spec" || Data.team == "spectator")) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server doesn't allow spectators."); - return true; - } - - if(m_nPlayerCount > 10) { - m_TgG.RejectLogin(NewPlayer.Player, "ff"); - m_nPlayerCount--; - `log("A player (" $ Data.playerName $ ")" @ "has been forced to disconnect due to: The server is full."); - return true; - } - return false; -} - -private function ChampionData setChampion(PendingLoginData Data) { - local int randChamp; - local string incomingName; - local ChampionData selectedChampion; - - incomingName = Locs(Data.ChampionName); - - if (isChampionAllowed(incomingName)) { - selectedChampion = findChampionByNameOrAlias(incomingName); - return selectedChampion; - } - - randChamp = Rand(sOptions.allowedChampions.Length); - selectedChampion = findChampionByNameOrAlias(Locs(sOptions.allowedChampions[randChamp])); - return selectedChampion; -} - -private function bool isChampionAllowed(string championName) { - local int i, j; - - for (i = 0; i < ServerConfig.Champion.Length; i++) { - if (sOptions.allowedChampions.Find(Locs(ServerConfig.Champion[i].name)) != INDEX_NONE) { - if (Locs(ServerConfig.Champion[i].name) == championName) { - return true; - } - - for (j = 0; j < ServerConfig.Champion[i].aliases.Length; j++) { - if (Locs(ServerConfig.Champion[i].aliases[j]) == championName) { - return true; - } - } - } - } - return false; -} - -private function ChampionData findChampionByNameOrAlias(string championName) { - local int i, j; - local ChampionData emptyChampion; - - for (i = 0; i < ServerConfig.Champion.Length; i++) { - if (Locs(ServerConfig.Champion[i].name) == championName) { - return ServerConfig.Champion[i]; - } - - for (j = 0; j < ServerConfig.Champion[i].aliases.Length; j++) { - if (Locs(ServerConfig.Champion[i].aliases[j]) == championName) { - return ServerConfig.Champion[i]; - } - } - } - - return emptyChampion; -} - - -public function int getTeam(PendingLoginData Data) { - switch(Data.Team) - { - case "1": return 1; break; - case "2": return 2; break; - } - - return (m_nPlayerCount % 2 == 0) ? 1 : 2; -} - -public function int getHorse(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16526; - - switch(Data.horse) - { - case "1": return 12616; break; - case "2": return 12612; break; - } - - return 12616; -} - -public function int getSpray(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16457; - - return 15587; -} - -public function int getTitle(PendingLoginData Data) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") return 16936; - - return 0; -} - -public function ChampionData setBelgianYing(PendingLoginData Data, ChampionData SelectedChampion) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168" && (Data.championName == "ying" || Data.championName == "bestwaifu")) { - SelectedChampion.BotId = 2267; - SelectedChampion.SkinId = 18656; - SelectedChampion.DeviceSkinId = 18655; - SelectedChampion.HeadId = 18657; - } - return SelectedChampion; -} - -public function checkShouldAnimateYourName(PendingLoginData Data, TgRepInfo_Player PRI) { - // Special Belgian Treatement - if(Data.netAddress == "2625572168") { - shouldAnimateYourNamePRI = PRI; - shouldAnimateYourNameData = Data; - } -} - -function animateYourName() { - if(shouldAnimateYourNamePRI != none) shouldAnimateYourNamePRI.PlayerName = TempestLib.UpdateAnimatedName(shouldAnimateYourNameData.playerName); // or use original name -} - -public function initServerCheatManager(TgPlayerController TgPC) { - TgPC.CheatClass = Class'TgBattleCheatManager'; - if(TgPC.CheatManager == none) { - TgPC.CheatManager = new (TgPC) Class'TgBattleCheatManager'; - if(TgPC.CheatManager != none) { - TgPC.CheatManager.InitCheatManager(); - `Log((("TempestProxyActor: CheatManager successfully created and initialized : " @ string(TgPC.CheatManager.Name)) @ ":") @ string(TgPC.CheatManager.Outer.Name)); - } else { - `Log("TempestProxyActor: Failed to create CheatManager!"); - } - } -} - -/* ParseOption() - Find an option in the options string and return it. -*/ -static function string ParseOption( string Options, string InKey ) -{ - local string Pair, Key, Value; - while( GrabOption( Options, Pair ) ) - { - GetKeyValue( Pair, Key, Value ); - if( Key ~= InKey ) - return Value; - } - return ""; -} - -// -// HasOption - return true if the option is specified on the command line. -// -static function bool HasOption( string Options, string InKey ) -{ - local string Pair, Key, Value; - while( GrabOption( Options, Pair ) ) - { - GetKeyValue( Pair, Key, Value ); - if( Key ~= InKey ) - return true; - } - return false; -} - -static function bool GrabOption( out string Options, out string Result ) -{ - if( Left(Options,1)=="?" ) - { - // Get result. - Result = Mid(Options,1); - if( InStr(Result,"?")>=0 ) - Result = Left( Result, InStr(Result,"?") ); - - // Update options. - Options = Mid(Options,1); - if( InStr(Options,"?")>=0 ) - Options = Mid( Options, InStr(Options,"?") ); - else - Options = ""; - - return true; - } - else return false; -} - -// -// Break up a key=value pair into its key and value. -// -static function GetKeyValue( string Pair, out string Key, out string Value ) -{ - if( InStr(Pair,"=")>=0 ) - { - Key = Left(Pair,InStr(Pair,"=")); - Value = Mid(Pair,InStr(Pair,"=")+1); - } - else - { - Key = Pair; - Value = ""; - } -} \ No newline at end of file diff --git a/Development/Src/TgClient/Classes/TgClientHud.uc b/Development/Src/TgClient/Classes/TgClientHud.uc deleted file mode 100755 index 0c41e734..00000000 --- a/Development/Src/TgClient/Classes/TgClientHud.uc +++ /dev/null @@ -1,21 +0,0 @@ -class TgClientHUD extends TgHUD - transient - native - config(Game) - hidecategories(Navigation); - -struct native SceneInfo -{ - var int nDepth; - var init string sName; - var init string sPath; - - structdefaultproperties - { - nDepth=0 - sName="" - sPath="" - } -}; - -var array m_ScenePreloads; \ No newline at end of file diff --git a/Development/Src/TgClient/Classes/TgGameHUD.uc b/Development/Src/TgClient/Classes/TgGameHUD.uc deleted file mode 100755 index 683a2bbc..00000000 --- a/Development/Src/TgClient/Classes/TgGameHUD.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgGameHUD extends TgClientHUD - transient - native(GameUI) - config(Game) - hidecategories(Navigation); - -// Export UTgGameHUD::execTestPrecache(FFrame&, void* const) -native exec function TestPrecache(int nBotId, int nSkinId, int nWeaponSkinId, int nHeadId, optional bool bAll = false); - -// Export UTgGameHUD::execPrecacheClass(FFrame&, void* const) -native exec function PrecacheClass(string godName, optional string skinName, optional string weaponSkinName); diff --git a/Development/Src/TgClient/Classes/TgGameLaunch.uc b/Development/Src/TgClient/Classes/TgGameLaunch.uc deleted file mode 100755 index 84e41b0d..00000000 --- a/Development/Src/TgClient/Classes/TgGameLaunch.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgGameLaunch extends GameInfo - native - config(Game) - hidecategories(Navigation,Movement,Collision); \ No newline at end of file diff --git a/Development/Src/TgClient/Classes/TgGameViewportClient.uc b/Development/Src/TgClient/Classes/TgGameViewportClient.uc deleted file mode 100755 index 6be73cd3..00000000 --- a/Development/Src/TgClient/Classes/TgGameViewportClient.uc +++ /dev/null @@ -1,8 +0,0 @@ -class TgGameViewportClient extends PComGameViewportClient within Engine - transient - native - config(Engine); - -event PostRender(Canvas Canvas) -{ -} \ No newline at end of file diff --git a/Development/Src/TgClient/Classes/TgGfxScene.uc b/Development/Src/TgClient/Classes/TgGfxScene.uc deleted file mode 100755 index 40616236..00000000 --- a/Development/Src/TgClient/Classes/TgGfxScene.uc +++ /dev/null @@ -1,2 +0,0 @@ -class TgGfxScene extends GFxObject within GFxMoviePlayer - native(GFxScene); \ No newline at end of file diff --git a/Development/Src/TgClient/Classes/TgLobbyHUD.uc b/Development/Src/TgClient/Classes/TgLobbyHUD.uc deleted file mode 100755 index 512b52bf..00000000 --- a/Development/Src/TgClient/Classes/TgLobbyHUD.uc +++ /dev/null @@ -1,8 +0,0 @@ -class TgLobbyHUD extends TgClientHUD - transient - native(LobbyUI) - config(Game) - hidecategories(Navigation); - -// Export UTgLobbyHUD::execTriggerLazyPrecache(FFrame&, void* const) -native function TriggerLazyPrecache(); \ No newline at end of file diff --git a/Development/Src/TgClient/Classes/TgSynchronizedTimer.uc b/Development/Src/TgClient/Classes/TgSynchronizedTimer.uc deleted file mode 100755 index 278b13f3..00000000 --- a/Development/Src/TgClient/Classes/TgSynchronizedTimer.uc +++ /dev/null @@ -1,23 +0,0 @@ -class TgSynchronizedTimer extends GFxObject within GFxMoviePlayer - native; - -var bool m_bPausedByGame; -var bool m_bSuppressCallback; -var bool m_bRunning; -var bool m_bPaused; -var TgTimerManager m_TimerManager; - -// Export UTgSynchronizedTimer::execStartTimer(FFrame&, void* const) -native function StartTimer(float fSeconds); - -// Export UTgSynchronizedTimer::execUpdateTimer(FFrame&, void* const) -native function UpdateTimer(float fElapsed, float fTotal, optional bool bPaused = false, optional bool bFromCallback = false); - -// Export UTgSynchronizedTimer::execExpireTimer(FFrame&, void* const) -native function ExpireTimer(optional bool bFromCallback = false); - -// Export UTgSynchronizedTimer::execIsRunning(FFrame&, void* const) -native function bool IsRunning(); - -// Export UTgSynchronizedTimer::execIsPaused(FFrame&, void* const) -native function bool IsPaused(); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgAIController.uc b/Development/Src/TgGame/Classes/TgAIController.uc deleted file mode 100755 index 82510ad2..00000000 --- a/Development/Src/TgGame/Classes/TgAIController.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgAIController extends GameAIController - native(AI) - config(Game) - hidecategories(Navigation); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgAIController_Behavior.uc b/Development/Src/TgGame/Classes/TgAIController_Behavior.uc deleted file mode 100755 index 459a4d18..00000000 --- a/Development/Src/TgGame/Classes/TgAIController_Behavior.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgAIController_Behavior extends TgAIController - native(AI) - config(Game) - hidecategories(Navigation); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgAIController_BehaviorGod.uc b/Development/Src/TgGame/Classes/TgAIController_BehaviorGod.uc deleted file mode 100755 index 8f931d14..00000000 --- a/Development/Src/TgGame/Classes/TgAIController_BehaviorGod.uc +++ /dev/null @@ -1,7 +0,0 @@ -class TgAIController_BehaviorGod extends TgAIController_Behavior - native(AI) - config(Game) - hidecategories(Navigation) - implements(TgPaladinsController); - -function ResetUlt() {} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgActorFactory.uc b/Development/Src/TgGame/Classes/TgActorFactory.uc deleted file mode 100755 index 89cc78a3..00000000 --- a/Development/Src/TgGame/Classes/TgActorFactory.uc +++ /dev/null @@ -1,5 +0,0 @@ -class TgActorFactory extends Actor - abstract - native(Factory) - notplaceable - hidecategories(Navigation,Advanced,Attachment,Collision,Display); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgBattleCheatManager.uc b/Development/Src/TgGame/Classes/TgBattleCheatManager.uc deleted file mode 100755 index 2906efc6..00000000 --- a/Development/Src/TgGame/Classes/TgBattleCheatManager.uc +++ /dev/null @@ -1,47 +0,0 @@ -class TgBattleCheatManager extends PComCheatManager within TgPlayerController - native - config(Game); - -// Export UTgBattleCheatManager::execSwitchClass(FFrame&, void* const) -native exec function SwitchClass(string godName, optional string skinName, optional string weaponSkinName, optional string headName); - -exec function TestShowInventory() {} - -exec function EDBN(string sDeviceName, int nEquipPointId, optional int FireMode = 1){} - -exec function EquipDeviceByName(string sDeviceName, int nEquipPointId, optional int FireMode = 1){} - -exec function EquipDevice(int nDeviceId, int nEquipPointId, optional int FireMode = 0){} - -exec function ServerExec(string FSCommand){} - -exec function SetMountSkin(int nSkinId){} - -exec function AllowMount(optional bool bEnabled = true){} - -exec function SetRespawnIncrease(float fIncrease) -{ - -} - -exec function SetDefenseRespawn(float fDuration) -{ - -} - -exec function SetAttackRespawn(float fDuration) -{ - -} - -exec function SetRespawnCap(float fDuration) -{ - -} - -exec function TestStunEffect(float fDuration) {} - -function EquipDeviceOnPawn(TgPawn TgP, int nDeviceId, int nEquipPointId, optional int FireMode = 0){} - -simulated exec function SpectatorCamera(optional bool bOn = true){} -exec function ToggleSpectatorCamera(){} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgBotFactory.uc b/Development/Src/TgGame/Classes/TgBotFactory.uc deleted file mode 100755 index a659a989..00000000 --- a/Development/Src/TgGame/Classes/TgBotFactory.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgBotFactory extends TgActorFactory - native(Factory) - placeable - hidecategories(Navigation,Advanced,Attachment,Collision,Display,Advanced,Attachment,Collision,Display,Movement); diff --git a/Development/Src/TgGame/Classes/TgCameraShake.uc b/Development/Src/TgGame/Classes/TgCameraShake.uc deleted file mode 100755 index 7e9ae5de..00000000 --- a/Development/Src/TgGame/Classes/TgCameraShake.uc +++ /dev/null @@ -1,17 +0,0 @@ -class TgCameraShake extends CameraShake - native(View) - editinlinenew; - -var() float m_fShakeScale; -var() bool m_bDoControllerVibration; -var() bool m_bRadialShake; -var() bool m_bOrientTowardRadialEpicenter; -var() float m_fRadialShake_InnerRadius; -var() float m_fRadialShake_OuterRadius; -var() float m_fRadialShake_Falloff; -var() Camera.ECameraAnimPlaySpace m_PlaySpace; - -defaultproperties -{ - m_fShakeScale=1.0000000 -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgChaosCapturePoint.uc b/Development/Src/TgGame/Classes/TgChaosCapturePoint.uc deleted file mode 100755 index 558c038f..00000000 --- a/Development/Src/TgGame/Classes/TgChaosCapturePoint.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgChaosCapturePoint extends TgObjective - native(Game) - placeable - hidecategories(Navigation); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgControlModule.uc b/Development/Src/TgGame/Classes/TgControlModule.uc deleted file mode 100755 index 497b82f0..00000000 --- a/Development/Src/TgGame/Classes/TgControlModule.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgControlModule extends Object - abstract; - -function Init(){} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgControlModule_Spectator.uc b/Development/Src/TgGame/Classes/TgControlModule_Spectator.uc deleted file mode 100755 index 7c21c48b..00000000 --- a/Development/Src/TgGame/Classes/TgControlModule_Spectator.uc +++ /dev/null @@ -1,2 +0,0 @@ -class TgControlModule_Spectator extends TgControlModule - config(Game); diff --git a/Development/Src/TgGame/Classes/TgCustomCharacterComponent.uc b/Development/Src/TgGame/Classes/TgCustomCharacterComponent.uc deleted file mode 100755 index f1156321..00000000 --- a/Development/Src/TgGame/Classes/TgCustomCharacterComponent.uc +++ /dev/null @@ -1,48 +0,0 @@ -class TgCustomCharacterComponent extends ActorComponent - native; - -struct native CompositeTextureType -{ - var Texture2DComposite CompTexture; - var name TextureParamName; - - structdefaultproperties - { - CompTexture=none - TextureParamName="None" - } -}; - -struct native CompositePartInfo -{ - var int MeshAsmId; - var int DestOffsetX; - var int DestOffsetY; - var int RegionSizeX; - var int RegionSizeY; - - structdefaultproperties - { - MeshAsmId=0 - DestOffsetX=0 - DestOffsetY=0 - RegionSizeX=0 - RegionSizeY=0 - } -}; - -var array m_SourceMeshList; -var array m_CompositeTextures; -var int m_nCompositeTextureSizeX; -var int m_nCompositeTextureSizeY; -var() array m_CompositeParts; -//var array m_CompositeFxList; - -// Export UTgCustomCharacterComponent::execMergeMeshParts(FFrame&, void* const) -native function MergeMeshParts(SkeletalMeshComponent Mesh); - -// Export UTgCustomCharacterComponent::execComposeCharacter(FFrame&, void* const) -native function ComposeCharacter(SkeletalMeshComponent Mesh); - -// Export UTgCustomCharacterComponent::execSetupCompositeRegion(FFrame&, void* const) -native function SetupCompositeRegion(int MeshAsmId, int DestOffsetX, int DestOffsetY, int SizeX, int SizeY); diff --git a/Development/Src/TgGame/Classes/TgDemoRecSpectator.uc b/Development/Src/TgGame/Classes/TgDemoRecSpectator.uc deleted file mode 100755 index 1d07b852..00000000 --- a/Development/Src/TgGame/Classes/TgDemoRecSpectator.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgDemoRecSpectator extends TgSpectatorController - native(Pawns) - config(Game) - hidecategories(Navigation); - -// Export UTgDemoRecSpectator::execGetSpectatorTaskforceNumber(FFrame&, void* const) -native function int GetSpectatorTaskforceNumber(); - -simulated event ReceivedPlayer(){} -simulated event PostBeginPlay(){} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgDemoRecSpectator_Debug.uc b/Development/Src/TgGame/Classes/TgDemoRecSpectator_Debug.uc deleted file mode 100755 index 305193f0..00000000 --- a/Development/Src/TgGame/Classes/TgDemoRecSpectator_Debug.uc +++ /dev/null @@ -1,7 +0,0 @@ -class TgDemoRecSpectator_Debug extends TgDemoRecSpectator - native(Pawns) - config(Game) - hidecategories(Navigation); - -var Player m_OriginalPlayer; -var PlayerController m_OriginalPlayerController; \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgDeploy_Illusion.uc b/Development/Src/TgGame/Classes/TgDeploy_Illusion.uc deleted file mode 100755 index fe2fbe09..00000000 --- a/Development/Src/TgGame/Classes/TgDeploy_Illusion.uc +++ /dev/null @@ -1,8 +0,0 @@ -class TgDeploy_Illusion extends TgDeployable - native(ChampYing) - notplaceable - hidecategories(Navigation) - implements(TgInterface_YingIllusion); - -// Export UTgDeploy_Illusion::execAcquireTarget(FFrame&, void* const) -native function bool AcquireTarget(); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgDeployable.uc b/Development/Src/TgGame/Classes/TgDeployable.uc deleted file mode 100755 index a7928526..00000000 --- a/Development/Src/TgGame/Classes/TgDeployable.uc +++ /dev/null @@ -1,5 +0,0 @@ -class TgDeployable extends Actor - native(Deployable) - nativereplication - notplaceable - hidecategories(Navigation); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgDevice.uc b/Development/Src/TgGame/Classes/TgDevice.uc deleted file mode 100755 index 739ba1eb..00000000 --- a/Development/Src/TgGame/Classes/TgDevice.uc +++ /dev/null @@ -1,71 +0,0 @@ -class TgDevice extends Weapon - native(Devices) - hidecategories(Navigation); - //implements(TgGameplayCurveOwner); - -var TgInventoryObject_Device s_InventoryObject; -var repnotify int r_nPointsAllocated; - -enum EDeviceChangeEvent -{ - DCE_Created, // 0 - DCE_ToggleState, // 1 - DCE_CanFire, // 2 - DCE_Selected, // 3 - DCE_Cooldown, // 4 - DCE_PtsAlloc, // 5 - DCE_Refire, // 6 - DCE_InstanceCount, // 7 - DCE_DeviceBuildup, // 8 -}; - -// Export UTgDevice::execGetTotalDevicePoints(FFrame&, void* const) -native function int GetTotalDevicePoints(); - -// Export UTgDevice::execGetAllocatedDevicePoints(FFrame&, void* const) -native function int GetAllocatedDevicePoints(); - -// Export UTgDevice::execAllocateDevicePoint(FFrame&, void* const) -native function bool AllocateDevicePoint(); - -// Export UTgDevice::execIsOffhand(FFrame&, void* const) -native function bool IsOffhand(); - -native function TgTimerManager GetCooldownTimerManager(); - -simulated event float GetCooldownRemaining(){} - -// Export UTgDevice::execSendDeviceChangeEvent(FFrame&, void* const) -native function SendDeviceChangeEvent(TgDevice.EDeviceChangeEvent Event); - -simulated event bool Use(){} - -event ResetCooldown(int nMode, optional float fCooldownTimeOverride = -1.0000000){} - -simulated event float GetCooldownTime(optional int nMode = -1){} - -reliable client simulated event ClientStartCooldown(int nMode, float fCooldownTime) -{ - local int AbilityCooldownTimerIndex; - local TgTimerManager TimerManager; - - AbilityCooldownTimerIndex = 0; - // End:0x18 - - TimerManager = GetCooldownTimerManager(); - // End:0x80 - if(TimerManager.IsSet(AbilityCooldownTimerIndex)) - { - TimerManager.Close(AbilityCooldownTimerIndex, false); - } - // End:0xF7 - if(fCooldownTime > float(0)) - { - TimerManager.RegisterForEvents(AbilityCooldownTimerIndex, self, 'ClientCooldownTimerExpired'); - TimerManager.Start(AbilityCooldownTimerIndex, fCooldownTime); - } - SendDeviceChangeEvent(4); - //return; -} - -reliable client simulated event ClientResetCooldown(int nMode, float fCooldownTime){} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgDeviceFire.uc b/Development/Src/TgGame/Classes/TgDeviceFire.uc deleted file mode 100755 index 5d3b55c7..00000000 --- a/Development/Src/TgGame/Classes/TgDeviceFire.uc +++ /dev/null @@ -1,2 +0,0 @@ -class TgDeviceFire extends Object - native(Devices); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgDeviceVolume.uc b/Development/Src/TgGame/Classes/TgDeviceVolume.uc deleted file mode 100755 index 82d9b03e..00000000 --- a/Development/Src/TgGame/Classes/TgDeviceVolume.uc +++ /dev/null @@ -1,43 +0,0 @@ -class TgDeviceVolume extends Volume - native(Volumes) - hidecategories(Navigation,Object,Movement,Display); - -var() byte s_nTaskForce; - -event int GetSupportedTaskforce() -{ - local TgRepInfo_Game GRI; - - GRI = TgRepInfo_Game(WorldInfo.GRI); - // End:0x15D - if(GRI != none) - { - // End:0x151 - if(true) - { - // End:0x151 - if(GRI.r_AttackingTaskForce != none) - { - // End:0x10B - if(int(s_nTaskForce) == 1) - { - return int(GRI.r_AttackingTaskForce.r_nTaskForce); - } - else - { - // End:0x14F - if(int(GRI.r_AttackingTaskForce.r_nTaskForce) == 1) - { - return 2; - } - else - { - return 1; - } - } - } - } - return int(s_nTaskForce); - } - //return ReturnValue; -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgDevice_Mount.uc b/Development/Src/TgGame/Classes/TgDevice_Mount.uc deleted file mode 100755 index 56634d7e..00000000 --- a/Development/Src/TgGame/Classes/TgDevice_Mount.uc +++ /dev/null @@ -1,18 +0,0 @@ -class TgDevice_Mount extends TgDevice_Toggle - native(Devices) - hidecategories(Navigation); - -function SetAllowMountServerTimer() -{ - //return; -} - -function AllowMountServer() -{ - //return; -} - -reliable client simulated function ClientStartMount() -{ - //return; -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgDevice_Toggle.uc b/Development/Src/TgGame/Classes/TgDevice_Toggle.uc deleted file mode 100755 index 52991f6b..00000000 --- a/Development/Src/TgGame/Classes/TgDevice_Toggle.uc +++ /dev/null @@ -1,3 +0,0 @@ -class TgDevice_Toggle extends TgDevice - native(Devices) - hidecategories(Navigation); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgGame.uc b/Development/Src/TgGame/Classes/TgGame.uc deleted file mode 100755 index 1558ad55..00000000 --- a/Development/Src/TgGame/Classes/TgGame.uc +++ /dev/null @@ -1,63 +0,0 @@ -class TgGame extends FrameworkGame - abstract - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); - -var Class m_ContentPackageReference; -var float m_fSpawnProtectionTime; -var float m_fMaxRepawnTime; -var float m_fUnpauseCountdownRemaining; -var int s_nBotPlayerCount; -var bool s_bSpawnOfflinePawns; -var bool s_bGameInitialized; -var bool s_bGameEndMissionProcessed; -var bool s_bMissionSealed; -var const bool m_bForceUsePRISpawnPoint; -var bool m_bRewardCalculated; -var bool m_bStatsCanTie; -var bool m_bStatsIsSymmetric; -var protected bool m_bIsTutorialGametype; -var protected bool m_bIsPracticeGametype; -var globalconfig bool m_bEnableHeadShots; -var bool m_bPlayOfTheGameLocked; -var bool m_bSpawnDisconnectedPlayersStunned; -var bool m_bPlayersCanOnlyDieOnce; -var bool m_bUseKillEmotes; -var bool m_bNotifyKillCombos; -var bool m_bFirstBloodAwarded; -var protected int s_nNextActorInstanceId; -var protected int s_nNextProjectileInstanceId; -var init array s_Taskforce1AIVolumesIndices; -var init array s_Taskforce2AIVolumesIndices; -var init native map{VOID,VOID} s_AIAnnotations; -var array s_ActorFactories; -var float s_fXPModifier; -var const config float m_fGlobalCooldownTime; -var init array m_ClientLogins; -var config float m_fOcclusionCalcPeriod; -var config float m_fOcclusionMaxDeviation; -var float m_fPlayOfTheGameLength; -var float m_fPlayOfTheGameIntroBufferLength; -var float m_fPlayOfTheGameOuttroBufferLength; -var array m_ReadyPlayers; - -// Export UTgGame::execEnsureBotPrecache(FFrame&, void* const) -native function EnsureBotPrecache(int nBotId, int nSkinId, int nHeadId, int nDeviceSkinId); - -// Export UTgGame::execEnsureDevicePrecache(FFrame&, void* const) -native function EnsureDevicePrecache(int nDeviceId, int nDeviceSkinId); - -// Export UTgGame::execSpawnTemplatePlayer(FFrame&, void* const) -native function TgPawn SpawnTemplatePlayer(TgPlayerController pTgPC, int nProfileId, optional int nSkinId = 0, optional int nWeaponSkinId = 0, optional int nHeadSkinId = 0); - -// Export UTgGame::execSpawnBotById(FFrame&, void* const) -native function TgPawn SpawnBotById(int nBotId, int nSkinId, int nHeadId, int nWeaponSkinId, Vector vLocation, Rotator rRotation, TgBotFactory pFactory, optional bool bIgnoreCollision = false, optional TgPawn pOwnerPawn, optional TgDeviceFire deviceFire, optional float fDeployAnimLength = 0.0000000, optional name ControllerClassName, optional name BehaviorTreeName); - -// Export UTgGame::execSpawnPlayerCharacter(FFrame&, void* const) -native function TgPawn SpawnPlayerCharacter(Controller C, Vector vLocation); - -function bool ChangeTeam(Controller Other, int Num, bool bNewTeam){} -function Pawn SpawnDefaultPawnFor(Controller NewPlayer, NavigationPoint StartSpot) {} - -function NavigationPoint FindPlayerStart(Controller Player, optional byte InTeam, optional string IncomingName){} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgGameEngine.uc b/Development/Src/TgGame/Classes/TgGameEngine.uc deleted file mode 100755 index 840e11e5..00000000 --- a/Development/Src/TgGame/Classes/TgGameEngine.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgGameEngine extends PComGameEngine - transient - native - config(Engine); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgGame_Battle.uc b/Development/Src/TgGame/Classes/TgGame_Battle.uc deleted file mode 100755 index 18b2a220..00000000 --- a/Development/Src/TgGame/Classes/TgGame_Battle.uc +++ /dev/null @@ -1,6 +0,0 @@ -class TgGame_Battle extends TgGame_Mission - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); - -event int GetPlayerCount() {} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgGame_Chaos.uc b/Development/Src/TgGame/Classes/TgGame_Chaos.uc deleted file mode 100755 index 805137ea..00000000 --- a/Development/Src/TgGame/Classes/TgGame_Chaos.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgGame_Chaos extends TgGame_Battle - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgGame_ChaosSiege.uc b/Development/Src/TgGame/Classes/TgGame_ChaosSiege.uc deleted file mode 100755 index e602092e..00000000 --- a/Development/Src/TgGame/Classes/TgGame_ChaosSiege.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgGame_ChaosSiege extends TgGame_Chaos - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgGame_ChaosSiege_CaptureAndPayload.uc b/Development/Src/TgGame/Classes/TgGame_ChaosSiege_CaptureAndPayload.uc deleted file mode 100755 index f8f8eb2c..00000000 --- a/Development/Src/TgGame/Classes/TgGame_ChaosSiege_CaptureAndPayload.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgGame_ChaosSiege_CaptureAndPayload extends TgGame_ChaosSiege - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgGame_Mission.uc b/Development/Src/TgGame/Classes/TgGame_Mission.uc deleted file mode 100755 index f8bf95b6..00000000 --- a/Development/Src/TgGame/Classes/TgGame_Mission.uc +++ /dev/null @@ -1,50 +0,0 @@ -class TgGame_Mission extends TgGame - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); - -var bool m_bSpawnInTaskForceArea; -var bool s_bPreGuardianPhasePulsed; -var bool s_bGuardianPhasePulsed; -var bool s_bWasSurrendered; -var bool m_bSurrenderAvailable; -var bool m_bFirstBloodAwarded; -var bool m_bAllowAutoUpgrades; -var bool m_bUsePlayerCharacterIntros; -var bool m_bUseKillEmotes; -var bool m_bNotifyKillCombos; -var float m_fMissionTime; -var float m_fSecondaryMissionTime; -var private const float m_fWaitingForPlayersTime; -var config float m_fSetupTime; -var float m_fPausedAtTime; -var float m_fGameMissionTime; -var float s_MissionTimeAccumulator; -var array s_ReadyPlayers; -var int s_nReadyMercs; -var config float m_fTickCreditsFreq; -var config float m_fCreditsToGivePerTick; -var int m_nStartingCurrency; -var int m_nStartingLevel; -var int m_nWinBonusXp; -var int m_nWinPlayerXp; -var int m_nLosePlayerXp; -var float m_fGodXpCoefficient; -var float m_fGodXpCoefficientLoss; -var float m_fGodXpWinBonus; -var float m_fFreeVIPWinPoints; -var float m_fFreeVIPLossPoints; -var float m_fPaidVIPWinPoints; -var float m_fPaidVIPLossPoints; -var float m_fBaseTokens; -var float m_fSurrenderTime; -var int m_XPRadius; -var float m_MinionKillerBonus; -var float m_BasePlayerGoldReward; -var float m_fFirstBloodGoldReward; -var float m_fBasePlayerAssistGoldRewardMultipler; -var float m_fBasePlayerAssistXpRewardMultipler; -var float m_fBaseNPCAssistGoldRewardMultipler; -var float m_fBaseNPCAssistXpRewardMultipler; - -event PostLogin(PlayerController NewPlayer){} diff --git a/Development/Src/TgGame/Classes/TgGame_Paladins.uc b/Development/Src/TgGame/Classes/TgGame_Paladins.uc deleted file mode 100755 index de250a9e..00000000 --- a/Development/Src/TgGame/Classes/TgGame_Paladins.uc +++ /dev/null @@ -1,49 +0,0 @@ -class TgGame_Paladins extends TgGame_Battle - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); - - -var config int m_nGoalScore; -var transient int m_nTF1Score; -var transient int m_nTF2Score; -var config transient int m_nWinningScore; -var bool m_bScoringEnabled; -var config bool m_bCanPurchaseItemsAnywhere; -var config bool m_bLimitBurnCardsToOnePerCategory; -var config bool m_bAutoMountOnRespawn; -var config bool m_bDropHealthNuggetOnDeath; -var bool m_bRespawnBots; -var config bool m_bDisableKillcam; -var config bool m_bCanApplyCardEquipStats; -var config bool m_bTalentsEnabled; -var config bool m_bAutoMountAtRoundBegin; -var config bool m_bResetPlayersNotInSpawnRoom; -var config bool m_bDeckSwappingAlwaysEnabled; -var bool m_bDiminishingReturnsOnCCEnabled; -var int m_nCanSpoolCredits; -var const float m_fPlayerWaitTime; -var int m_nHealthNuggetDeployableId; -var int m_nHealthNuggetTeamOnlyDeployableId; -var int m_fHealthNuggetPersistTime; -var config float m_fPlayerViewDistance; -var config float m_fVisibilityVolumeViewDistance; -var float m_fCardCooldownIncrease; -var config float m_fCardCooldownMultiplier; -var config float m_fGameTypeReminderTime; -var config float m_fRespawnBeaconLifeSpan; -var config float m_fBaseRespawnTime; -var const float m_fMapLaneChangeDelay; -var config int m_nStartingCredits; -var config int m_nMaxCredits; -var config string m_GameplayEventsWriterClassName; -var GameplayEventsWriter GameplayEventsWriter; -var config float m_fFlankerSoloKillRewardDistance; -var config float m_fDamageRoleMultiplier; -var config float m_fFlankRoleMultiplier; -var config float m_fFrontLineRoleMultiplier; -var config float m_fSupportRoleMultiplier; -var int m_nNextUniquePlayerID; - -// Export UTgGame_Paladins::execBeginEndMission(FFrame&, void* const) -native function bool BeginEndMission(optional bool bClearNextMapGame = false, optional Actor EndMissionFocus, optional float fDelayOverride = 0.0000000); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgGame_PaladinsExtended.uc b/Development/Src/TgGame/Classes/TgGame_PaladinsExtended.uc deleted file mode 100755 index eae4f4f6..00000000 --- a/Development/Src/TgGame/Classes/TgGame_PaladinsExtended.uc +++ /dev/null @@ -1,143 +0,0 @@ -class TgGame_PaladinsExtended extends TgGame_Paladins - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); - -enum EVictoryType -{ - EVT_Default, // 0 - EVT_Capture, // 1 - EVT_Defend, // 2 - EVT_Payload, // 3 - EVT_Siege, // 4 - EVT_Survival, // 5 - EVT_Kill, // 6 - EVT_Ticket, // 7 - EVT_TimeLimit, // 8 -}; - -var config float m_fWinningTickets; -var config bool m_bTicketsPersist; -var const config bool m_bKillLanePusherOnWallDestroyed; -var bool m_bKeepThisPointForNextRound; -var bool m_bConvergeCompletely; -var bool m_bCanCaptureDuringSurvival; -var const config bool m_bCanAutoPushForward; -var bool m_bConvergeCompletelyAfterDelay; -var bool m_bOverrideSpawnTableID; -var config bool m_bActivateSpawnGatesAtStart; -var config bool m_bRevivePlayersWhenSiegeEngineDies; -var bool m_bStasisTimerOn; -var config bool m_bActivateAllCapturePoints; -var bool m_bPointContested; -var bool m_bPointCaptureOvertimeTF1; -var bool m_bPointCaptureOvertimeTF2; -var bool m_bSimpleOvertime; -var bool m_bSimpleOvertimeEnabled; -var bool m_bCapturePointContestDurationEnabled; -var bool m_bTF1Backsliding; -var bool m_bTF2Backsliding; -var bool m_bEndRoundWhenPointCaptured; -var bool m_bSpawnLanePusherWhenPointCaptured; -var bool m_bCaptureSpawnAlerts; -var bool m_bResetPlayersNotInSpawnRoomDisabled; -var config float m_fTicketsForKill; -var config float m_fTicketsPerCaptureTick; -var config float m_fTicketsBonusPerMultiCapture; -var config float m_fTicketsPerPointCapture; -var float m_fTF1Tickets; -var float m_fTF2Tickets; -var config float m_fTicketsPerTicketDisparity; -var config float m_fSecondsPerTicketDisparity; -var config float m_fMaximumDisparitySeconds; -var config float m_fObjectiveRepickTickets; -var float m_fLastObjectiveRepickTickets; -var config float m_fRoundLimitDuration; -var float s_fRoundLimitElapsed; -var config int m_nPointsForReachingTicketMax; -var config int m_nPointsForReachingRoundTimeLimit; -var config float m_fSecondaryGoalScore; -var const config float m_fSecondaryScoreAmount; -var const config float m_fObjectivePickTime; -var const config float m_fSetupObjectivePickTime; -var const config float m_fSpawnGateOpenTime; -var const config float m_fAttackersSpawnGateOpenTime; -var const config float m_fDefendersSpawnGateOpenTime; -var const config float m_fSetupSpawnGateOpenTime; -var const float m_fObjectiveActivationTime; -var int m_SpawnTableIndex; -var int s_nCurrentCapturePointQueueIndex; -var const config int m_nRegLanePusherHPScaling; -var const config int m_nRegLanePusherPowerScaling; -var const config int m_nGuardianHPScaling; -var const config int m_nGuardianPowerScaling; -var const config int m_nOuterGateHPScaling; -var const config int m_nInnerGateHPScaling; -var const config int m_nBaseObjectiveHPScaling; -var int m_nForcedObjectiveIndex; -var int m_nCountdown; -var protected float m_fSpeedScale; -var float m_fRespawnOffset; -var float m_fRespawnIncreaseOverTime; -var float m_fTimeDeltaRespawnIncrease; -var config float m_fDefenseRespawnIncrease; -var config float m_fAttackRespawnIncrease; -var config float m_fRespawnTimeCap; -var config float m_fNoSiegeEngineRespawnModification; -var const name m_AttackDefendState; -var() config float m_fConvergeStartDistance; -var() config float m_fConvergeRate; -var() config float m_fStartConvergeTime; -var() config float m_fConvergeSafeDistance; -var TgDevice ConvergeDevice; -var const config float m_fAutoPushForwardDelay; -var const config float m_fAutoPushForwardSpeedScale; -var const config float m_fStopAutoPushDelay; -var config int m_nCreditsForHoldingObjective; -var config int m_nCreditsBonusPerContested; -var config int m_nCreditsForHoldingPayload; -var float m_fFogCompleteConvergeDelay; -var config float m_fCapturePointsPerSecond1; -var config float m_fCapturePointsPerSecond2; -var config float m_fCapturePointsPerSecond3; -var config float m_fCapturePointsPerSecond4; -var config float m_fCapturePointsPerSecond5; -var config float m_fPointContestDuration; -var config float m_fPointOvertimeDuration; -var config float m_fPointOvertimeDrainPercPerSec; -var config float m_fPointClaimDuration; -var float m_fOvertimeActiveTime; -var float m_fOvertimeActiveTimeMemory[3]; -var int m_nOvertimeActiveTimeEntry; -var float m_fOvertimeLeft; -var config float m_fBackslidePercent; -var config float m_fBackslideDelay; -var config float m_fBackslideRate; -var int s_nCurrentActivePointIndex; -var int m_nAttackingTaskforce; -var Vector m_SnappedWaypointIndicatorOffset; -var float m_fGamePauseDelay; -var TgChaosCapturePoint m_LastActiveCapturePoint; -var array m_CapturePointQueue; - -// Export UTgGame_PaladinsExtended::execGetRespawnTime(FFrame&, void* const) -native function float GetRespawnTime(int TaskForceNum); - -// Export UTgGame_PaladinsExtended::execScoreObjectiveHold(FFrame&, void* const) -native function ScoreObjectiveHold(TgPawn ScorePawn, int NumContested); - -// Export UTgGame_PaladinsExtended::execScorePayloadHold(FFrame&, void* const) -native function ScorePayloadHold(TgPawn ScorePawn, int NumContested); - -// Export UTgGame_PaladinsExtended::execLoadCardVendor(FFrame&, void* const) -native function LoadCardVendor(); - -// Export UTgGame_PaladinsExtended::execCaptureSpawnAlert(FFrame&, void* const) -native function CaptureSpawnAlert(float TimeRemaining); - -event RespawnAllPlayers(bool bResetLivingPlayers, optional bool bResetDeadPlayers = true, optional bool bResetHealth = true, optional bool bResetDevices = false){} - -function GlobalRespawnTimeUpdate(float fRespawnTime, bool bEnsureRespawnTimeDoesntIncrease){} -function GlobalRespawnTimeUpdateHelper(Controller C, TgPawn TgP, float fRespawnTime, bool bEnsureRespawnTimeDoesntIncrease){} - -function StartGameMode(){} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgGame_Paladins_Assault.uc b/Development/Src/TgGame/Classes/TgGame_Paladins_Assault.uc deleted file mode 100755 index ee0481c2..00000000 --- a/Development/Src/TgGame/Classes/TgGame_Paladins_Assault.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgGame_Paladins_Assault extends TgGame_Paladins_Siege - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgGame_Paladins_Onslaught.uc b/Development/Src/TgGame/Classes/TgGame_Paladins_Onslaught.uc deleted file mode 100755 index 8e568098..00000000 --- a/Development/Src/TgGame/Classes/TgGame_Paladins_Onslaught.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgGame_Paladins_Onslaught extends TgGame_Paladins_Siege - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgGame_Paladins_Payload.uc b/Development/Src/TgGame/Classes/TgGame_Paladins_Payload.uc deleted file mode 100755 index 284f711e..00000000 --- a/Development/Src/TgGame/Classes/TgGame_Paladins_Payload.uc +++ /dev/null @@ -1,58 +0,0 @@ -class TgGame_Paladins_Payload extends TgGame_Paladins_Siege - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); - -var int m_nPayloadOnlyCurrentAttackingTeam; -var int s_nCurrentTurn; - -function OnRoundEnded(){} -function CaptureAndPayloadRoundEnded(){} -function ToggleAttackingTaskforce(){} -function SetResetEscapedPlayersTimers(bool bFirstRound){} - -state GameRunning -{ - - function NavigationPoint FindPlayerStart(Controller Player, optional byte InTeam, optional string IncomingName) - { - } - - function PointCaptured(int nTaskForce, optional bool bSuppressPointsForCapture) - { - - } - stop; -} - -state AttackDefend -{ - - function BeginState(name PreviousStateName) - { - } - - function float GetPayloadStartingDuration() - { - } - - function float GetOvertimeDuration() - { - } - - function bool OvertimePreventsPayloadExpiring() - { - } - - function TgChaosCapturePoint GetCapturePointToSpawnSiegeEngineAt() - { - } - - function NavigationPoint FindPlayerStart(Controller Player, optional byte InTeam, optional string IncomingName) - { - } - - function Tick(float DeltaTime) - { - } -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgGame_Paladins_ShootingRange.uc b/Development/Src/TgGame/Classes/TgGame_Paladins_ShootingRange.uc deleted file mode 100755 index 5833b650..00000000 --- a/Development/Src/TgGame/Classes/TgGame_Paladins_ShootingRange.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgGame_Paladins_ShootingRange extends TgGame_Paladins - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgGame_Paladins_Siege.uc b/Development/Src/TgGame/Classes/TgGame_Paladins_Siege.uc deleted file mode 100755 index 485f632c..00000000 --- a/Development/Src/TgGame/Classes/TgGame_Paladins_Siege.uc +++ /dev/null @@ -1,38 +0,0 @@ -class TgGame_Paladins_Siege extends TgGame_PaladinsExtended - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); - - -var config transient int m_nPointsForCapturing; -var config transient int m_nPointsForPayload; -var config transient int m_nPointsForDefending; -var config transient int m_nPointsForPayloadCheckpoint; -var config int m_nCreditsForWinningARound; -var config int m_nCreditsForCapturingPoint; -var config int m_nCreditsForSuccessfulDefend; -var config int m_nCreditsForSuccessfulPush; -var config bool m_bRespawnDeadPlayersAfterRound; -var config bool m_bRespawnLivePlayersAfterRound; -var config bool m_bRoundTreatment; -var config bool m_bCanWinOnDefense; -var bool m_bInCapturePointOvertime; -var bool m_bInPayloadOvertime; -var bool m_bDestroyPayloadCartAfterPayloadPhase; -var config bool m_bDoNotSwitchPoints; -var transient bool m_bHasHitCheckpoint; -var config bool m_bFadeOutAtRoundEnd; -var config float m_fLosingCaptureRateModifier; -var config float m_fDurationUntilCaptureOvertime; -var config float m_fCaptureOvertimeWarningDuration; -var const config float m_fPayloadDuration; -var const config float m_fPayloadOvertimeDuration; -var const config float m_fPayloadDurationCheckpoint; -var const config float m_fRoundEndRespawnDelay; -var int s_nCurrentRound; - -function PostBeginPlay(){} -function TaskforceWin(int nTaskForce, TgGame_PaladinsExtended.EVictoryType VictoryType){} -function NavigationPoint FindPlayerStart(Controller Player, optional byte InTeam, optional string IncomingName){} - -//event LanePusherReachedOuterWall(TgPawn_LanePusher LanePusher){} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgGame_Paladins_Survival.uc b/Development/Src/TgGame/Classes/TgGame_Paladins_Survival.uc deleted file mode 100755 index 74ea3620..00000000 --- a/Development/Src/TgGame/Classes/TgGame_Paladins_Survival.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgGame_Paladins_Survival extends TgGame_Paladins_Siege - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgGame_Paladins_TeamDeathMatch.uc b/Development/Src/TgGame/Classes/TgGame_Paladins_TeamDeathMatch.uc deleted file mode 100755 index c93a009d..00000000 --- a/Development/Src/TgGame/Classes/TgGame_Paladins_TeamDeathMatch.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgGame_Paladins_TeamDeathMatch extends TgGame_Paladins - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgHud.uc b/Development/Src/TgGame/Classes/TgHud.uc deleted file mode 100755 index cc764a8f..00000000 --- a/Development/Src/TgGame/Classes/TgHud.uc +++ /dev/null @@ -1,5 +0,0 @@ -class TgHUD extends HUD - transient - native - config(Game) - hidecategories(Navigation); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgInterface_YingIllusion.uc b/Development/Src/TgGame/Classes/TgInterface_YingIllusion.uc deleted file mode 100755 index ff7802af..00000000 --- a/Development/Src/TgGame/Classes/TgInterface_YingIllusion.uc +++ /dev/null @@ -1,2 +0,0 @@ -interface TgInterface_YingIllusion extends Interface - native; \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgInventoryManager.uc b/Development/Src/TgGame/Classes/TgInventoryManager.uc deleted file mode 100755 index 3bb7acd9..00000000 --- a/Development/Src/TgGame/Classes/TgInventoryManager.uc +++ /dev/null @@ -1,45 +0,0 @@ -class TgInventoryManager extends InventoryManager - native(Inventory) - hidecategories(Navigation); - -struct native transient InventoryData -{ - var init int nInvId; - var init int nItemId; - var init int nPower; - var init int nInstanceCount; - var init bool bBoundFlag; - var init float fAcquiredDatetime; - var init int nEquipSlotValueId; - - structdefaultproperties - { - nInvId=0 - nItemId=0 - nPower=0 - nInstanceCount=0 - bBoundFlag=false - fAcquiredDatetime=0.0000000 - nEquipSlotValueId=0 - } -}; - -var int r_ItemCount; -var int m_nPreviousDeviceInstanceId; -var bool m_bNeedsInvUpdate; -var Weapon m_PreviousWeapon; -var init native map{int,TgInventoryObject} m_InventoryMap; -var init native map{int,TgInventoryObject} s_ReplicateMap; -var init native map{int,TgInventoryObject} s_DeletionMap; - -// Export UTgInventoryManager::execSetInventoryDirty(FFrame&, void* const) -native function SetInventoryDirty(); - -// Export UTgInventoryManager::execRequestInventory(FFrame&, void* const) -native function RequestInventory(); - -// Export UTgInventoryManager::execAddDevice(FFrame&, void* const) -native function TgDevice AddDevice(int nDeviceId, int nEquipPoint, optional TgDevice parentDevice, optional bool bReplaceIfOccupied, optional int nPower); - -// Export UTgInventoryManager::execRemoveDevice(FFrame&, void* const) -native function RemoveDevice(TgInventoryObject_Device pInv); diff --git a/Development/Src/TgGame/Classes/TgInventoryObject.uc b/Development/Src/TgGame/Classes/TgInventoryObject.uc deleted file mode 100755 index b336653b..00000000 --- a/Development/Src/TgGame/Classes/TgInventoryObject.uc +++ /dev/null @@ -1,19 +0,0 @@ -class TgInventoryObject extends Object - native(Inventory); - -enum EReplicatedState -{ - IORS_Ok, // 0 - IORS_Edited, // 1 - IORS_Deleted, // 2 -}; - - -var protected InventoryData m_InventoryData; -var int m_nRefData; -var TgInventoryManager m_InvManager; -var bool m_bTemporary; -var TgInventoryObject.EReplicatedState s_ReplicatedState; -var native const Pointer m_pAmItem; -var int c_nNbrAcquired; -var float c_fTimeAcquired; \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgInventoryObject_Device.uc b/Development/Src/TgGame/Classes/TgInventoryObject_Device.uc deleted file mode 100755 index 5777d9dd..00000000 --- a/Development/Src/TgGame/Classes/TgInventoryObject_Device.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgInventoryObject_Device extends TgInventoryObject - native(Inventory); - -var TgDevice s_Device; -var int m_nDeviceInstanceId; -var int c_nNumFindDeviceFails; -var int m_nStackCount; -var native const Pointer m_pAmDevice; - -// Export UTgInventoryObject_Device::execSetInstanceCount(FFrame&, void* const) -native function SetInstanceCount(int nInstanceCount); - -// Export UTgInventoryObject_Device::execIsCard(FFrame&, void* const) -native final function bool IsCard(); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgItemShopVolume.uc b/Development/Src/TgGame/Classes/TgItemShopVolume.uc deleted file mode 100755 index 8f7133bf..00000000 --- a/Development/Src/TgGame/Classes/TgItemShopVolume.uc +++ /dev/null @@ -1,35 +0,0 @@ -class TgItemShopVolume extends Volume - native(Volumes) - hidecategories(Navigation,Object,Movement,Display); - -var() int TaskforceIndex; - -simulated function int GetSupportedTaskforce() -{ - local TgRepInfo_Game GRI; - - GRI = TgRepInfo_Game(WorldInfo.GRI); - // End:0x154 - if(GRI != none) - { - // End:0x14A - if(true) - { - // End:0x14A - if(GRI.r_AttackingTaskForce != none) - { - // End:0x106 - if(TaskforceIndex == 1) - { - return int(GRI.r_AttackingTaskForce.r_nTaskForce); - } - else - { - return ((int(GRI.r_AttackingTaskForce.r_nTaskForce) == 1) ? 2 : 1); - } - } - } - return TaskforceIndex; - } - //return ReturnValue; -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgObject.uc b/Development/Src/TgGame/Classes/TgObject.uc deleted file mode 100755 index 1eb8b0d7..00000000 --- a/Development/Src/TgGame/Classes/TgObject.uc +++ /dev/null @@ -1,83 +0,0 @@ -class TgObject extends Object - native; - -enum GAME_WIN_STATE -{ - GWS_NONE, // 0 - GWS_TASKFORCE_TWO_WON, // 1 - GWS_TASKFORCE_ONE_WON, // 2 - GWS_TIE, // 3 -}; - -enum eTutorialForceableElements -{ - ETBUI_Skills, - ETBUI_ItemShop, - ETBUI_ItemShopButton, - ETBUI_Intro, - ETBUI_ItemShopWalkthrough, - ETBUI_ActiveItems, - ETBUI_ConsumableItems, - ETBUI_Escape -}; - -enum TG_GAME_TYPE -{ - TGT_UNSET, - TGT_CITY, - TGT_ARENA, - TGT_ARENA_PRACTICE, - TGT_ARENA_CAPTURE, - TGT_ARENA_ESCORT, - TGT_ARENA_ESCORT_PRACTICE, - TGT_BATTLE, - TGT_BATTLE_EXPERT, - TGT_BATTLE_PRACTICE, - TGT_BATTLE_JOUST, - TGT_BATTLE_CASUAL, - TGT_BATTLE_TRAINING, - TGT_BATTLE_ARAM, - TGT_BATTLE_ARAM_PRACTICE, - TGT_POINTCAPTURE, - TGT_DOMINATION, - TGT_SINGLEPOINTCAPTUREANDHOLD, - TGT_IDOL, - TGT_SIEGE, - TGT_BATTLE_TC, - TGT_BATTLE_SHOOTINGRANGE, - TGT_CHAOS, - TGT_CHAOS_PRACTICE, - TGT_CHAOSRACE, - TGT_CHAOS_PUSH, - TGT_CHAOS_PAYLOAD, - TGT_CHAOS_PAYLOAD_PRACTICE, - TGT_CHAOS_CAPTUREANDPAYLOAD, - TGT_CHAOS_CAPTUREANDPAYLOAD_PRACTICE, - TGT_CHAOS_CAPTUREPOINT, - TGT_CHAOS_CAPTUREPOINT_PRACTICE, - TGT_CHAOS_SURVIVAL, - TGT_CHAOS_SURVIVAL_PRACTICE, - TGT_CHAOS_SHOOTINGRANGE, - TGT_CHAOS_TUTORIAL, - TGT_CHAOS_PVE, - TGT_CHAOS_PVE_SURVIVAL, - TGT_CHAOS_TEAM_DEATH_MATCH, - TGT_CHAOS_ONSLAUGHT, - TGT_CHAOS_ONSLAUGHT_PRACTICE, - TGT_CHAOS_ROYALE, - TGT_CHAOS_ASCENDED_ASSAULT, - TGT_CHAOS_FLAGBALL, - TGT_CHAOS_EVENT, - TGT_CHAOS_END_TIMES, - TGT_CHAOS_CRAZY_KING, - TGT_CHAOS_CAPTURE_THE_FLAG, -}; - -enum AlertType -{ - ATT_Regular, - ATT_Beneficial, - ATT_Detrimental, - ATT_Spectator, - ATT_Important -}; \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgObjective.uc b/Development/Src/TgGame/Classes/TgObjective.uc deleted file mode 100755 index 697de47d..00000000 --- a/Development/Src/TgGame/Classes/TgObjective.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgObjective extends Actor - native(Game) - placeable - hidecategories(Navigation); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgPaladinsController.uc b/Development/Src/TgGame/Classes/TgPaladinsController.uc deleted file mode 100755 index 87eb056c..00000000 --- a/Development/Src/TgGame/Classes/TgPaladinsController.uc +++ /dev/null @@ -1 +0,0 @@ -interface TgPaladinsController extends Interface; \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgPawn.uc b/Development/Src/TgGame/Classes/TgPawn.uc deleted file mode 100755 index f1c5ddb9..00000000 --- a/Development/Src/TgGame/Classes/TgPawn.uc +++ /dev/null @@ -1,112 +0,0 @@ -class TgPawn extends GamePawn - abstract - native(Pawns) - nativereplication - config(Game) - hidecategories(Navigation); - //implements(TgSkinnableInterface,TgCombatActor,TgGrabSource,TgObserver_ViewTargetChanged,TgInteractiveAudio,TgSoundNotifyActorInterface,TgCallbackInterface); - -enum TG_POSTURE -{ - TG_POSTURE_DEFAULT, - TG_POSTURE_REST, - TG_POSTURE_FUSSY, - TG_POSTURE_INTRO, - TG_POSTURE_ENRAGED, - TG_POSTURE_PATROL, - TG_POSTURE_GENERICFIRE1, - TG_POSTURE_GENERICFIRE2, - TG_POSTURE_GENERICFIRE3, - TG_POSTURE_DEAD, - TG_POSTURE_SEARCHING, - TG_POSTURE_FALLING, - TG_POSTURE_MOUNT, - TG_POSTURE_STASIS, - TG_POSTURE_KNOCKBACK, - TG_POSTURE_MESMERIZE, - TG_POSTURE_DISARMED, - TG_POSTURE_SCARED, - TG_POSTURE_STUNNED, - TG_POSTURE_PULLED, - TG_POSTURE_FEARLIFT, - TG_POSTURE_SHOOTWHILEPULL, - TG_POSTURE_NONE -}; - -var bool m_bAirAccuracyPenalty; -var bool r_bIsInStasis; -var repnotify bool r_bIsMounted; - -var repnotify int r_nMountSkinId; -var int r_nVoicePackId; - -var int r_nPawnId; -var TgPawn r_Owner; - -var float r_fReconnectTime; - -var bool m_bInitialized; -var bool m_bIsInvisibleToAI; -var bool r_bIsBot; -var bool s_bInvisibleToPets; -var bool s_bCanSeePets; - -// Export UTgPawn::execGetHealth(FFrame&, void* const) -native function float GetHealth(); - -// Export UTgPawn::execGetMaxHealth(FFrame&, void* const) -native function float GetMaxHealth(); - -// Export UTgPawn::execSetTaskForceNumber(FFrame&, void* const) -native function SetTaskForceNumber(int nTaskForce); - -// Export UTgPawn::execGetTaskForceNumber(FFrame&, void* const) -native function byte GetTaskForceNumber(); - -// Export UTgPawn::execSetProperty(FFrame&, void* const) -native function SetProperty(int nPropIndex, float fNewValue); - -native function float GetEnergy(); - -// Export UTgPawn::execGetPropIndex(FFrame&, void* const) -native function int GetPropIndex(int nPropId); - -// Export UTgPawn::execGetDeviceByEqPoint(FFrame&, void* const) -native function TgDevice GetDeviceByEqPoint(int eEqPoint); - -// Export UTgPawn::execPostPawnSetupServer(FFrame&, void* const) -native function PostPawnSetupServer(); - -simulated event bool PostPawnSetup(){} - -// Export UTgPawn::execApplyPawnSetup(FFrame&, void* const) -native function bool ApplyPawnSetup(); - -// Export UTgPawn::execMySpawnGatesAreOpen(FFrame&, void* const) -native function bool MySpawnGatesAreOpen(); - -// Export UTgPawn::execFlashCooldown(FFrame&, void* const) -native function FlashCooldown(int nDeviceInstanceId, int nFireModeNum); - -// Export UTgPawn::execIsTalentEquipped(FFrame&, void* const) -native function bool IsTalentEquipped(int nTalentDeviceId); - -// Export UTgPawn::execGetDeviceByInstanceId(FFrame&, void* const) -native function TgDevice GetDeviceByInstanceId(int nDeviceInstanceId); - -// Export UTgPawn::execGetDeviceById(FFrame&, void* const) -native function TgDevice GetDeviceById(int nDeviceId); - - -//simulated event Destroyed(){} -function LiveRespawn(bool bResetHealth, bool bResetDevices){} -simulated function SetMountOnRespawn(){} -event bool ShouldRecharge(){} -simulated event HandleClientPostPawnSetup(){} -simulated event AutoMount(bool bShouldBeMounted, optional bool bToggleMount = false){} - -simulated function PlayMountingEffects(bool bPlayMountAnim, bool bPostureChange){} - - - -simulated event PreTimeLapse(bool bPlayOfTheGame){} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgPawn_Biped.uc b/Development/Src/TgGame/Classes/TgPawn_Biped.uc deleted file mode 100755 index 8a012e74..00000000 --- a/Development/Src/TgGame/Classes/TgPawn_Biped.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgPawn_Biped extends TgPawn - native(Pawns) - config(Game) - hidecategories(Navigation); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgPawn_Character.uc b/Development/Src/TgGame/Classes/TgPawn_Character.uc deleted file mode 100755 index 82205415..00000000 --- a/Development/Src/TgGame/Classes/TgPawn_Character.uc +++ /dev/null @@ -1,19 +0,0 @@ -class TgPawn_Character extends TgPawn_Biped - native(Pawns) - config(Game) - hidecategories(Navigation); - -simulated function PrepareIntro(){} - -simulated function PlayIntroAnims(){} - -simulated function OnRespawn(){} - -simulated function PlaySpawnFx(){} - -function PossessedBy(Controller C, bool bVehicleTransition){} - -// Export UTgPawn_Character::execApplyPawnSetup(FFrame&, void* const) -native function bool ApplyPawnSetup(); - -simulated event bool PostPawnSetup(){} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgPawn_Illusion.uc b/Development/Src/TgGame/Classes/TgPawn_Illusion.uc deleted file mode 100755 index e964e584..00000000 --- a/Development/Src/TgGame/Classes/TgPawn_Illusion.uc +++ /dev/null @@ -1,9 +0,0 @@ -class TgPawn_Illusion extends TgPawn_Ying - native(ChampYing) - config(Game) - hidecategories(Navigation) - implements(TgInterface_YingIllusion); - -function TgPawn_Ying GetOwningYing(){} -// Export UTgPawn_Illusion::execPostPawnSetupServer(FFrame&, void* const) -native function PostPawnSetupServer(); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgPawn_Pip.uc b/Development/Src/TgGame/Classes/TgPawn_Pip.uc deleted file mode 100755 index 334d3372..00000000 --- a/Development/Src/TgGame/Classes/TgPawn_Pip.uc +++ /dev/null @@ -1 +0,0 @@ -class TgPawn_Pip extends TgPawn_Character; \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgPawn_Ying.uc b/Development/Src/TgGame/Classes/TgPawn_Ying.uc deleted file mode 100755 index f59867d7..00000000 --- a/Development/Src/TgGame/Classes/TgPawn_Ying.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgPawn_Ying extends TgPawn_Character - native(ChampYing) - config(Game) - hidecategories(Navigation); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgPlayerController.uc b/Development/Src/TgGame/Classes/TgPlayerController.uc deleted file mode 100755 index 38041376..00000000 --- a/Development/Src/TgGame/Classes/TgPlayerController.uc +++ /dev/null @@ -1,177 +0,0 @@ -class TgPlayerController extends PComPlayerController - native(Pawns) - nativereplication - config(Game) - hidecategories(Navigation); - //implements(TgPaladinsController,TgCallbackInterface,TgSoundNotifyActorInterface); - - - -enum EPlayerInputType -{ - PIT_MoveForward, - PIT_MoveBackward, - PIT_MoveRight, - PIT_MoveLeft, - PIT_LookLeft, - PIT_LookRight, - PIT_LookUp, - PIT_LookDown, - PIT_Auto, - PIT_Alt, - PIT_BattleAbility, - PIT_MovementAbility, - PIT_Ultimate, - PIT_Reload, - PIT_Jump, - PIT_Mount, - PIT_LoadoutMenu, - PIT_BurnCardMenu, - PIT_Emote, - PIT_Spray, - //PIT_MAX -}; - - -var int s_nPlayerId; -var QWord s_qwNetAccessFlags; -var transient TgRepInfo_Player CachedPRI; -var float r_fServerTimeStamp; - -var transient int m_nKillCamTargetId; -var transient int m_nKillCamTargetBackupId; - -var bool bForcedTimelapseRequested; -var bool bForcedPlayOfGameRequested; - -var int m_nVoicePackId; - -var() editinline TgControlModule ControlModule; - -// Export UTgPlayerController::execSetInputAllowed(FFrame&, void* const) -native exec function SetInputAllowed(TgPlayerController.EPlayerInputType InputType, bool bEnabled); - -// Export UTgPlayerController::execLiveMatchSwitchChampion(FFrame&, void* const) -native function LiveMatchSwitchChampion(int BotId, int BodySkinId, int WeaponSkinId); - -// Export UTgPlayerController::execCanPlayKillCam(FFrame&, void* const) -native function bool CanPlayKillCam(bool bPlayOfGame); - -// Export UTgPlayerController::execSwitchChampion(FFrame&, void* const) -native function SwitchChampion(int BotId, int BodySkinId, int WeaponSkinId, int VoicePackId); - -// Export UTgPlayerController::execSetPlayerProfile(FFrame&, void* const) -native function SetPlayerProfile(int nProfileId, int nSkinId, int nWeaponSkinId, int nHeadSkinId, optional int nVoicePackId = 0); - -// Export UTgPlayerController::execGetDeviceIdByName(FFrame&, void* const) -native function int GetDeviceIdByName(string sDeviceName); - -// Export UTgPlayerController::execGetTaskForceNumber(FFrame&, void* const) -native function int GetTaskForceNumber(); - -// Export UTgPlayerController::execSpectateGM(FFrame&, void* const) -native exec function SpectateGM(string sPlayerName, optional string sSpectatePassword); - -// Export UTgPlayerController::execSpectate(FFrame&, void* const) -native exec function Spectate(string sPlayerName, optional string sSpectatePassword); - -// Export UTgPlayerController::execSpectateStop(FFrame&, void* const) -native exec function SpectateStop(); - -// Export UTgPlayerController::execSpectateDamage(FFrame&, void* const) -native exec function SpectateDamage(bool bShow); - -// Export UTgPlayerController::execSpectateHeals(FFrame&, void* const) -native exec function SpectateHeals(bool bShow); - -// Export UTgPlayerController::execSpectateCrits(FFrame&, void* const) -native exec function SpectateCrits(bool bShow); - -// Export UTgPlayerController::execSpectateGold(FFrame&, void* const) -native exec function SpectateGold(bool bShow); - -// Export UTgPlayerController::execSpectateXP(FFrame&, void* const) -native exec function SpectateXP(bool bShow); - -// Export UTgPlayerController::execSpectateOutlines(FFrame&, void* const) -native exec function SpectateOutlines(bool bShow); - -// Export UTgPlayerController::execToggleCombatInfo(FFrame&, void* const) -native exec function ToggleCombatInfo(); - -// Export UTgPlayerController::execSendCombatMessage(FFrame&, void* const) -native function SendCombatMessage(CombatMessageInfo msgInfo); - -event InitInputSystem(){} - -reliable client native simulated function ClientDebugPlayPotg(); - -function SetCredits(int nCreditsAmount) {} - -unreliable client simulated function ClientPlaySound(SoundCue ASound){} - -unreliable client simulated function ClientPlaySoundBase(AkBaseSoundObject ASound){} - -function LiveRespawn(bool bResetHealth, bool bResetDevices){} - -event SetNoSmoothedMovementCorrection(bool bNoSmoothedCorrections, optional bool bManaged = false){} - -reliable client simulated event UpdateReviveTimeRemaining(float fTimeRemaining){} - -reliable client simulated event ClientSetRotationAndDesired(Rotator NewRotation, optional bool bResetCamera){} - -exec function SetReadyToPlay(){} -function AcknowledgePossession(Pawn P){} -reliable server function ServerAcknowledgePossession(Pawn P){} -event Possess(Pawn aPawn, bool bVehicleTransition){} -event UnPossess(){} - -exec function SwitchCamera(string sCamera){} -exec function GoSpectate(){} - -// Export UTgPlayerController::execClientDebugPlayPotg(FFrame&, void* const) -//reliable client native simulated function ClientDebugPlayPotg(); - - - - - - - - - - - - - - - - - - - - - -// KILLCAMS - -function SetKillCamTarget(TgPawn KillCamTarget){} -reliable client simulated function ClientSetKillCamTarget(int KillCamTargetId, int BackupKillCamTargetId){} -function ForceKillCamViewTargetChange(optional Actor ForceTarget){} - -// Export UTgPlayerController::execGetBestKillCamTarget(FFrame&, void* const) -native final function Actor GetBestKillCamTarget(); - -// Export UTgPlayerController::execStartTimelapsePlayback(FFrame&, void* const) -native function StartTimelapsePlayback(float BeginTimeOffset, float EndTimeOffset, optional bool bPlayOfGame); - -exec function StartTimelapse(optional float Begin = -5.0000000, optional float End = 2.0000000, optional bool bPlayOfGame = false, optional bool bForced = true){} -event ControllerPreTimeLapse(){} - - - -defaultproperties -{ - CheatClass=Class'TgBattleCheatManager' -} - - diff --git a/Development/Src/TgGame/Classes/TgProperty.uc b/Development/Src/TgGame/Classes/TgProperty.uc deleted file mode 100755 index 910156e6..00000000 --- a/Development/Src/TgGame/Classes/TgProperty.uc +++ /dev/null @@ -1,2 +0,0 @@ -class TgProperty extends Object - native; diff --git a/Development/Src/TgGame/Classes/TgRepInfo_Game.uc b/Development/Src/TgGame/Classes/TgRepInfo_Game.uc deleted file mode 100755 index 183705a9..00000000 --- a/Development/Src/TgGame/Classes/TgRepInfo_Game.uc +++ /dev/null @@ -1,23 +0,0 @@ -class TgRepInfo_Game extends GameReplicationInfo - native(Game) - config(Game) - hidecategories(Navigation,Movement,Collision); - -var bool r_bKillCamEnabled; -var bool r_bAttackersKillCamEnabled; -var bool r_bDefendersKillCamEnabled; -var bool r_bBlockKillCam; -var repnotify TgRepInfo_TaskForce r_AttackingTaskForce; -var repnotify TgRepInfo_TaskForce r_CapturingTaskForce; -var int r_nPlayOfTheGamePawnId; - -// Export UTgRepInfo_Game::execGetTaskForce(FFrame&, void* const) -native function TgRepInfo_TaskForce GetTaskForce(int nTaskForceNum, optional bool bCreate = false); - -// Export UTgRepInfo_Game::execGetAttackingTaskForce(FFrame&, void* const) -native final function TgRepInfo_TaskForce GetAttackingTaskForce(); - -// Export UTgRepInfo_Game::execGetDefendingTaskForce(FFrame&, void* const) -native final function TgRepInfo_TaskForce GetDefendingTaskForce(); - -simulated function UpdateAttackingTaskforce(TgRepInfo_TaskForce NewAttackingTaskForce){} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgRepInfo_Player.uc b/Development/Src/TgGame/Classes/TgRepInfo_Player.uc deleted file mode 100755 index 83b80598..00000000 --- a/Development/Src/TgGame/Classes/TgRepInfo_Player.uc +++ /dev/null @@ -1,29 +0,0 @@ -class TgRepInfo_Player extends PlayerReplicationInfo - native(Game) - nativereplication - hidecategories(Navigation,Movement,Collision); - -var int r_nPlayerId; -var int r_nPawnId; -var repnotify TgRepInfo_TaskForce r_TaskForce; -var TgTeamPlayerStart r_SpawnPoint; - -var int r_nMountSkinId; -var int r_nEquippedTitleId; -var repnotify int r_nVoicePackId; - -var bool r_bIsVolumeStealthed; -var repnotify int r_nProfileId; - -// Export UTgRepInfo_Player::execUpdateBroadcastedItems(FFrame&, void* const) -native function UpdateBroadcastedItems(TgInventoryManager InvMgr); -// Export UTgRepInfo_Player::execSetTaskForceNumber(FFrame&, void* const) -native function bool SetTaskForceNumber(byte nTaskForce, optional bool bForce = false); -// Export UTgRepInfo_Player::execUpdateSpectatorUI(FFrame&, void* const) -native function UpdateSpectatorUI(); -// Export UTgRepInfo_Player::execSetTeam(FFrame&, void* const) -native function SetTeam(TgRepInfo_TaskForce pNewTeamRep); - -simulated function ClientInitialize(Controller C){} -event UpdateIdAndProfile(){} -event UpdateHealth(int nCurrentHealth, int nMaxHealth){} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgRepInfo_TaskForce.uc b/Development/Src/TgGame/Classes/TgRepInfo_TaskForce.uc deleted file mode 100755 index c6f6e7b5..00000000 --- a/Development/Src/TgGame/Classes/TgRepInfo_TaskForce.uc +++ /dev/null @@ -1,90 +0,0 @@ -class TgRepInfo_TaskForce extends TeamInfo - native(Game) - nativereplication - hidecategories(Navigation,Movement,Collision); - -var repnotify byte r_nTaskForce; - -// Export UTgRepInfo_TaskForce::execCycleFrom(FFrame&, void* const) -native function TgRepInfo_Player CycleFrom(TgRepInfo_Player pFrom, bool bForward); - -// Export UTgRepInfo_TaskForce::execRepEvent(FFrame&, void* const) -native simulated function bool RepEvent(name VarName); - -// Export UTgRepInfo_TaskForce::execGetPlayerCount(FFrame&, void* const) -native function int GetPlayerCount(); - -// Export UTgRepInfo_TaskForce::execGetActivePlayerCount(FFrame&, void* const) -native function int GetActivePlayerCount(); - -// Export UTgRepInfo_TaskForce::execGetBotCount(FFrame&, void* const) -native function int GetBotCount(); - -// Export UTgRepInfo_TaskForce::execGetMinionFactoryCount(FFrame&, void* const) -native function int GetMinionFactoryCount(); - -// Export UTgRepInfo_TaskForce::execGetPlayer(FFrame&, void* const) -native function TgRepInfo_Player GetPlayer(int nIndex); - -// Export UTgRepInfo_TaskForce::execGetPlayerById(FFrame&, void* const) -native function TgRepInfo_Player GetPlayerById(int nPawnId); - -// Export UTgRepInfo_TaskForce::execGetPlayerByPower(FFrame&, void* const) -native function TgRepInfo_Player GetPlayerByPower(int nIndex); - -// Export UTgRepInfo_TaskForce::execGetBot(FFrame&, void* const) -native function TgRepInfo_Player GetBot(int nIndex); - -// Export UTgRepInfo_TaskForce::execIsLeader(FFrame&, void* const) -native function bool IsLeader(TgRepInfo_Player pTgPri); - -// Export UTgRepInfo_TaskForce::execTeamRemoveFrom(FFrame&, void* const) -native function TeamRemoveFrom(Controller Other); - -// Export UTgRepInfo_TaskForce::execUpdateSurrenderTimer(FFrame&, void* const) -native function UpdateSurrenderTimer(); - -// Export UTgRepInfo_TaskForce::execRemoveGlobalEffectGroup(FFrame&, void* const) -native function RemoveGlobalEffectGroup(int nEffectGroupID); - -// Export UTgRepInfo_TaskForce::execApplyGlobalEffectGroups(FFrame&, void* const) -native function ApplyGlobalEffectGroups(TgPawn_Character aPawn); - -// Export UTgRepInfo_TaskForce::execRemoveGlobalEffectGroups(FFrame&, void* const) -native function RemoveGlobalEffectGroups(TgPawn_Character aPawn); - -// Export UTgRepInfo_TaskForce::execReapplyGlobalEffectGroups(FFrame&, void* const) -native function ReapplyGlobalEffectGroups(); - -// Export UTgRepInfo_TaskForce::execRemoveAllGlobalEffectGroups(FFrame&, void* const) -native function RemoveAllGlobalEffectGroups(); - -// Export UTgRepInfo_TaskForce::execGetGodCount(FFrame&, void* const) -native function int GetGodCount(); - -// Export UTgRepInfo_TaskForce::execGetGod(FFrame&, void* const) -native function TgRepInfo_Player GetGod(int nIndex); - -// Export UTgRepInfo_TaskForce::execResetGodIterator(FFrame&, void* const) -native function ResetGodIterator(); - -// Export UTgRepInfo_TaskForce::execGetNextGod(FFrame&, void* const) -native function TgRepInfo_Player GetNextGod(optional bool bIncrement = true, optional bool bReset = false); - -// Export UTgRepInfo_TaskForce::execLaneOfSiegeWeapon(FFrame&, void* const) -native function int LaneOfSiegeWeapon(); - -// Export UTgRepInfo_TaskForce::execGetASiegeWeapon(FFrame&, void* const) -native function TgPawn GetASiegeWeapon(); - -// Export UTgRepInfo_TaskForce::execHasBot(FFrame&, void* const) -native function bool HasBot(class PawnClass); - -// Export UTgRepInfo_TaskForce::execGetNumAlivePlayers(FFrame&, void* const) -native function int GetNumAlivePlayers(); - -// Export UTgRepInfo_TaskForce::execGetPlayers(FFrame&, void* const) -native function GetPlayers(out array List); - -// Export UTgRepInfo_TaskForce::execGetPlayersByDistance(FFrame&, void* const) -native function GetPlayersByDistance(Vector fromVector, float dwDist, out array List); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_AIFreeze.uc b/Development/Src/TgGame/Classes/TgSeqAct_AIFreeze.uc deleted file mode 100755 index 5d87e158..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_AIFreeze.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_AIFreeze extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int TaskForceNumber; - -defaultproperties -{ - InputLinks(0)=(LinkDesc="Freeze",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(1)=(LinkDesc="Unfreeze",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Freeze" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_AIMoveToActor.uc b/Development/Src/TgGame/Classes/TgSeqAct_AIMoveToActor.uc deleted file mode 100755 index 08fc08ca..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_AIMoveToActor.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_AIMoveToActor extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() Actor Destination; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Destination",LinkVar="None",PropertyName="Destination",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Move to Actor" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_AIStartFireAt.uc b/Development/Src/TgGame/Classes/TgSeqAct_AIStartFireAt.uc deleted file mode 100755 index f8253458..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_AIStartFireAt.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_AIStartFireAt extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() byte ForcedFireMode; - -defaultproperties -{ - ForcedFireMode=255 - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Fire At",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Start Firing At" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_AIStopFire.uc b/Development/Src/TgGame/Classes/TgSeqAct_AIStopFire.uc deleted file mode 100755 index 53484b46..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_AIStopFire.uc +++ /dev/null @@ -1,9 +0,0 @@ -class TgSeqAct_AIStopFire extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - ObjName="Stop Firing" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_AITargetActor.uc b/Development/Src/TgGame/Classes/TgSeqAct_AITargetActor.uc deleted file mode 100755 index c9c5cf0d..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_AITargetActor.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_AITargetActor extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() Actor CombatTarget; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Combat Target",LinkVar="None",PropertyName="CombatTarget",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Target Actor" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_AddAnimSets.uc b/Development/Src/TgGame/Classes/TgSeqAct_AddAnimSets.uc deleted file mode 100755 index 174568eb..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_AddAnimSets.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_AddAnimSets extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() array m_MaleAnimSets; -var() array m_FemaleAnimSets; -var() bool m_bAppendToExisting; - -defaultproperties -{ - m_bAppendToExisting=true - ObjName="Add Anim Sets" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_BeaconEntranceSetActive.uc b/Development/Src/TgGame/Classes/TgSeqAct_BeaconEntranceSetActive.uc deleted file mode 100755 index 31747fd4..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_BeaconEntranceSetActive.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_BeaconEntranceSetActive extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var bool m_bSetActive; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="BeaconEntrance",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Bool',LinkDesc="ActiveState",LinkVar="None",PropertyName="m_bSetActive",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="BeaconEntranceSetActive" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_BeaconExitSetRespawn.uc b/Development/Src/TgGame/Classes/TgSeqAct_BeaconExitSetRespawn.uc deleted file mode 100755 index d5d47de0..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_BeaconExitSetRespawn.uc +++ /dev/null @@ -1,15 +0,0 @@ -class TgSeqAct_BeaconExitSetRespawn extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var Actor m_RespawnPoint; -var bool m_bRespawnImmediately; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="BeaconExit",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="RespawnPoint",LinkVar="None",PropertyName="m_RespawnPoint",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(2)=(ExpectedType=Class'Engine.SeqVar_Bool',LinkDesc="RespawnImmediately",LinkVar="None",PropertyName="m_bRespawnImmediately",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="BeaconExitSetRespawn" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_BeginWaitForLookAt.uc b/Development/Src/TgGame/Classes/TgSeqAct_BeginWaitForLookAt.uc deleted file mode 100755 index 1902f655..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_BeginWaitForLookAt.uc +++ /dev/null @@ -1,20 +0,0 @@ -class TgSeqAct_BeginWaitForLookAt extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() Vector LocationToLookAt; -var() float MinOffsetDistance; - -function Activated() -{ -} - -defaultproperties -{ - MinOffsetDistance=1.5000000 - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Vector',LinkDesc="Location To Look At",LinkVar="None",PropertyName="LocationToLookAt",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Min Aim Distance from Location",LinkVar="None",PropertyName="MinOffsetDistance",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Begin Wait For LookAt" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_ChangeScale.uc b/Development/Src/TgGame/Classes/TgSeqAct_ChangeScale.uc deleted file mode 100755 index 94be6138..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_ChangeScale.uc +++ /dev/null @@ -1,19 +0,0 @@ -class TgSeqAct_ChangeScale extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() float TargetScale; -var() Vector TargetScale3D; -var() float TransitionTime; - -defaultproperties -{ - TargetScale=1.0000000 - TargetScale3D=(X=1.0000000,Y=1.0000000,Z=1.0000000) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="TargetScale",LinkVar="None",PropertyName="TargetScale",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(2)=(ExpectedType=Class'Engine.SeqVar_Vector',LinkDesc="TargetScale3D",LinkVar="None",PropertyName="TargetScale3D",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(3)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Time",LinkVar="None",PropertyName="TransitionTime",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Change Scale" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_ClientLoadDevices.uc b/Development/Src/TgGame/Classes/TgSeqAct_ClientLoadDevices.uc deleted file mode 100755 index 10d1b2d1..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_ClientLoadDevices.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_ClientLoadDevices extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() array m_DeviceIdList; -var() bool m_bClearExistingLoads; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Pawn",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="ClientLoadDevices" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_CloseHUDMenus.uc b/Development/Src/TgGame/Classes/TgSeqAct_CloseHUDMenus.uc deleted file mode 100755 index f3e7ecb9..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_CloseHUDMenus.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_CloseHUDMenus extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -function Activated() -{ -} - -defaultproperties -{ - ObjName="Close HUD Menus" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_DefenseWaveSpawner.uc b/Development/Src/TgGame/Classes/TgSeqAct_DefenseWaveSpawner.uc deleted file mode 100755 index 0e711fa6..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_DefenseWaveSpawner.uc +++ /dev/null @@ -1,21 +0,0 @@ -class TgSeqAct_DefenseWaveSpawner extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var int m_nRoundNumber; -var float m_fSpawnFrequency; -var transient float m_fNextSpawnTime; - -defaultproperties -{ - bCallHandler=false - bAutoActivateOutputLinks=false - //InputLinks=none - OutputLinks(0)=(LinkDesc="Activated",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Round Number",LinkVar="None",PropertyName="m_nRoundNumber",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Spawn Frequency",LinkVar="None",PropertyName="m_fSpawnFrequency",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(2)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Bot Factories",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Defense Wave Spawner" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_DespawnBots.uc b/Development/Src/TgGame/Classes/TgSeqAct_DespawnBots.uc deleted file mode 100755 index 6a621c26..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_DespawnBots.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqAct_DespawnBots extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Factory/Pawn",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Despawn Bots" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_DisplaySlamText.uc b/Development/Src/TgGame/Classes/TgSeqAct_DisplaySlamText.uc deleted file mode 100755 index 90840895..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_DisplaySlamText.uc +++ /dev/null @@ -1,15 +0,0 @@ -class TgSeqAct_DisplaySlamText extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() int m_nMessageId; - -event Activated() -{ -} - -defaultproperties -{ - ObjName="Display Slam Text" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_EndMission.uc b/Development/Src/TgGame/Classes/TgSeqAct_EndMission.uc deleted file mode 100755 index 56940666..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_EndMission.uc +++ /dev/null @@ -1,4 +0,0 @@ -class TgSeqAct_EndMission extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); diff --git a/Development/Src/TgGame/Classes/TgSeqAct_FadeIn.uc b/Development/Src/TgGame/Classes/TgSeqAct_FadeIn.uc deleted file mode 100755 index cac94eb4..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_FadeIn.uc +++ /dev/null @@ -1,16 +0,0 @@ -class TgSeqAct_FadeIn extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() float m_fDuration; - -event Activated() -{ -} - -defaultproperties -{ - m_fDuration=2.0000000 - ObjName="Fade In" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_FadeOut.uc b/Development/Src/TgGame/Classes/TgSeqAct_FadeOut.uc deleted file mode 100755 index df761a61..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_FadeOut.uc +++ /dev/null @@ -1,16 +0,0 @@ -class TgSeqAct_FadeOut extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() float m_fDuration; - -event Activated() -{ -} - -defaultproperties -{ - m_fDuration=2.0000000 - ObjName="Fade Out" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_FillUltimateEnergy.uc b/Development/Src/TgGame/Classes/TgSeqAct_FillUltimateEnergy.uc deleted file mode 100755 index e9f35a0c..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_FillUltimateEnergy.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_FillUltimateEnergy extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -function Activated() -{ -} - -defaultproperties -{ - ObjName="Fill Ultimate Energy" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_ForceClientTutorialAction.uc b/Development/Src/TgGame/Classes/TgSeqAct_ForceClientTutorialAction.uc deleted file mode 100755 index d72b446f..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_ForceClientTutorialAction.uc +++ /dev/null @@ -1,23 +0,0 @@ -class TgSeqAct_ForceClientTutorialAction extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -enum eForcedClientTutorialAction -{ - FCTA_BlockAvl, - FCTA_UnblockAvl, - FCTA_Open, - FCTA_Close, - //FCTA_MAX -}; - -var() TgSeqAct_ForceClientTutorialAction.eForcedClientTutorialAction ForcedAction; -var() TgObject.eTutorialForceableElements GameUIElement; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Targets",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Force Client Tutorial Action" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_GetBot.uc b/Development/Src/TgGame/Classes/TgSeqAct_GetBot.uc deleted file mode 100755 index 01b66e0b..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_GetBot.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_GetBot extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var int m_nBotNumber; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Factory",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Bot Number",LinkVar="None",PropertyName="m_nBotNumber",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(2)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Bot Pawn",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="GetBot" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_GetCharClass.uc b/Development/Src/TgGame/Classes/TgSeqAct_GetCharClass.uc deleted file mode 100755 index 9d301383..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_GetCharClass.uc +++ /dev/null @@ -1,15 +0,0 @@ -class TgSeqAct_GetCharClass extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bAutoActivateOutputLinks=false - OutputLinks(0)=(LinkDesc="Assault",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Infiltrator",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="Medic",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(3)=(LinkDesc="Robotics",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Pawn",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="GetCharClass" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_GetLocalPlayerController.uc b/Development/Src/TgGame/Classes/TgSeqAct_GetLocalPlayerController.uc deleted file mode 100755 index 88b51616..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_GetLocalPlayerController.uc +++ /dev/null @@ -1,17 +0,0 @@ -class TgSeqAct_GetLocalPlayerController extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var TgPlayerController LocalPlayerController; - -function Activated() -{ -} - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Local Player Controller",LinkVar="None",PropertyName="LocalPlayerController",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Get Local Player Controller" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_GetMaterialInst.uc b/Development/Src/TgGame/Classes/TgSeqAct_GetMaterialInst.uc deleted file mode 100755 index c3e796bb..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_GetMaterialInst.uc +++ /dev/null @@ -1,16 +0,0 @@ -class TgSeqAct_GetMaterialInst extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() MaterialInstance MatInst; -var() string MatInstName; -var() int MaterialIndex; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Mesh",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="MaterialInstanceConstant",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="GetMaterialInst" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_GetPlayerCount.uc b/Development/Src/TgGame/Classes/TgSeqAct_GetPlayerCount.uc deleted file mode 100755 index 6486ee62..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_GetPlayerCount.uc +++ /dev/null @@ -1,22 +0,0 @@ -class TgSeqAct_GetPlayerCount extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int m_nTaskForce; -var float m_fPlayerCount; -var float m_fAssaultCount; -var float m_fMedicCount; -var float m_fReconCount; -var float m_fRoboticsCount; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Players",LinkVar="None",PropertyName="m_fPlayerCount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Assault",LinkVar="None",PropertyName="m_fAssaultCount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(2)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Medic",LinkVar="None",PropertyName="m_fMedicCount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(3)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Recon",LinkVar="None",PropertyName="m_fReconCount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(4)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Robotics",LinkVar="None",PropertyName="m_fRoboticsCount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="GetPlayerCount" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_GetTaskForceCount.uc b/Development/Src/TgGame/Classes/TgSeqAct_GetTaskForceCount.uc deleted file mode 100755 index b8c44727..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_GetTaskForceCount.uc +++ /dev/null @@ -1,16 +0,0 @@ -class TgSeqAct_GetTaskForceCount extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int Taskforce; -var int m_nPlayerCount; -var int m_nBotCount; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Player Count",LinkVar="None",PropertyName="m_nPlayerCount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Bot Count",LinkVar="None",PropertyName="m_nBotCount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="GetTaskForceCount" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_GetTaskForceNumber.uc b/Development/Src/TgGame/Classes/TgSeqAct_GetTaskForceNumber.uc deleted file mode 100755 index d9afc0f8..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_GetTaskForceNumber.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqAct_GetTaskForceNumber extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Actor",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="TaskForceNumber",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="GetTaskForceNumber" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_GetTeamIndex.uc b/Development/Src/TgGame/Classes/TgSeqAct_GetTeamIndex.uc deleted file mode 100755 index 6af8a0a5..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_GetTeamIndex.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqAct_GetTeamIndex extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Pawn",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="TeamIndex",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="GetTeamIndex" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_GiveCredits.uc b/Development/Src/TgGame/Classes/TgSeqAct_GiveCredits.uc deleted file mode 100755 index d1f72235..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_GiveCredits.uc +++ /dev/null @@ -1,17 +0,0 @@ -class TgSeqAct_GiveCredits extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int CreditsToGive; - -function Activated() -{ -} - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Credits to Give",LinkVar="None",PropertyName="CreditsToGive",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Give Credits" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_GiveFullVitals.uc b/Development/Src/TgGame/Classes/TgSeqAct_GiveFullVitals.uc deleted file mode 100755 index ef6e101d..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_GiveFullVitals.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqAct_GiveFullVitals extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Targets",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Give Full Vitals" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_HackBot.uc b/Development/Src/TgGame/Classes/TgSeqAct_HackBot.uc deleted file mode 100755 index 1ebe76ad..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_HackBot.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_HackBot extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var Actor m_ControlPawn; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Bots/Factory",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Control Pawn",LinkVar="None",PropertyName="m_ControlPawn",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Hack Bot" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_HideHUD.uc b/Development/Src/TgGame/Classes/TgSeqAct_HideHUD.uc deleted file mode 100755 index 5a7e0e49..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_HideHUD.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_HideHUD extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -event Activated() -{ -} - -defaultproperties -{ - ObjName="Hide HUD" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_HideSilhouettes.uc b/Development/Src/TgGame/Classes/TgSeqAct_HideSilhouettes.uc deleted file mode 100755 index 9ec0b6c2..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_HideSilhouettes.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_HideSilhouettes extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -event Activated() -{ -} - -defaultproperties -{ - ObjName="Hide Silhouettes" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_JoinTeam.uc b/Development/Src/TgGame/Classes/TgSeqAct_JoinTeam.uc deleted file mode 100755 index d2b8c1fc..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_JoinTeam.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_JoinTeam extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() Actor TeamLeader; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Targets",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="TeamLeader",LinkVar="None",PropertyName="TeamLeader",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="JoinTeam" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_KillBots.uc b/Development/Src/TgGame/Classes/TgSeqAct_KillBots.uc deleted file mode 100755 index 60211fb5..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_KillBots.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqAct_KillBots extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Bots/Factory",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Kill Bots" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_KillCurrentSquad.uc b/Development/Src/TgGame/Classes/TgSeqAct_KillCurrentSquad.uc deleted file mode 100755 index ad8e5203..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_KillCurrentSquad.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqAct_KillCurrentSquad extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Factory",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="KillCurrentSquad" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_Killpawns.uc b/Development/Src/TgGame/Classes/TgSeqAct_Killpawns.uc deleted file mode 100755 index 294d514c..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_Killpawns.uc +++ /dev/null @@ -1,9 +0,0 @@ -class TgSeqAct_Killpawns extends TgSeqAct_KillBots - hidecategories(Object); - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Pawn(s) To Kill",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Kill Pawn" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_LaunchHomeInstance.uc b/Development/Src/TgGame/Classes/TgSeqAct_LaunchHomeInstance.uc deleted file mode 100755 index 4744f405..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_LaunchHomeInstance.uc +++ /dev/null @@ -1,9 +0,0 @@ -class TgSeqAct_LaunchHomeInstance extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - ObjName="Launch Home Instance" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_LogTutorialAction.uc b/Development/Src/TgGame/Classes/TgSeqAct_LogTutorialAction.uc deleted file mode 100755 index ae96ffb2..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_LogTutorialAction.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_LogTutorialAction extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() int PlayerAction; -var() int EventData; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Targets",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="EventData",LinkVar="None",PropertyName="EventData",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Log Tutorial Action" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_MapOutroFinished.uc b/Development/Src/TgGame/Classes/TgSeqAct_MapOutroFinished.uc deleted file mode 100755 index d470c40e..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_MapOutroFinished.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqAct_MapOutroFinished extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - ObjName="Map Outro Finished" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_MarkSpawnReturn.uc b/Development/Src/TgGame/Classes/TgSeqAct_MarkSpawnReturn.uc deleted file mode 100755 index f6ac8c9a..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_MarkSpawnReturn.uc +++ /dev/null @@ -1,16 +0,0 @@ -class TgSeqAct_MarkSpawnReturn extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() Teleporter m_Teleporter; - -event Activated() -{ -} - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Player",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Mark Spawn Return" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_NavIndicator.uc b/Development/Src/TgGame/Classes/TgSeqAct_NavIndicator.uc deleted file mode 100755 index d27a7c76..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_NavIndicator.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_NavIndicator extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var Actor m_NavTarget; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Player(s)",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Destination",LinkVar="None",PropertyName="m_NavTarget",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Nav Indicator" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_NextGamePhase.uc b/Development/Src/TgGame/Classes/TgSeqAct_NextGamePhase.uc deleted file mode 100755 index c7a186d6..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_NextGamePhase.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_NextGamePhase extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -event Activated() -{ -} - -defaultproperties -{ - ObjName="Next Game Phase" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_ParentAnimComponent.uc b/Development/Src/TgGame/Classes/TgSeqAct_ParentAnimComponent.uc deleted file mode 100755 index f6bd6b20..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_ParentAnimComponent.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_ParentAnimComponent extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() bool bDetach; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Parent",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Child",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Parent Anim Component" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_PauseSetupTimer.uc b/Development/Src/TgGame/Classes/TgSeqAct_PauseSetupTimer.uc deleted file mode 100755 index 9903bf84..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_PauseSetupTimer.uc +++ /dev/null @@ -1,18 +0,0 @@ -class TgSeqAct_PauseSetupTimer extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var(PauseSetupTimer) bool PauseImmediately; -var(PauseSetupTimer) float PauseAtTimeRemaining; - -function Activated() -{ -} - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Bool',LinkDesc="Pause Immediately",LinkVar="None",PropertyName="PauseImmediately",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Pause At Time Remaining",LinkVar="None",PropertyName="PauseAtTimeRemaining",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Pause Setup Timer" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_PingMinimap.uc b/Development/Src/TgGame/Classes/TgSeqAct_PingMinimap.uc deleted file mode 100755 index 11556efe..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_PingMinimap.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_PingMinimap extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var Actor m_PingTarget; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Destination",LinkVar="None",PropertyName="m_PingTarget",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Ping Minimap" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_PlayAnnouncement.uc b/Development/Src/TgGame/Classes/TgSeqAct_PlayAnnouncement.uc deleted file mode 100755 index 76029d7d..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_PlayAnnouncement.uc +++ /dev/null @@ -1,22 +0,0 @@ -class TgSeqAct_PlayAnnouncement extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() bool bPlayImmediately; -var() bool bFlushOthers; -var() int SoundIndex; -var() SoundCue OptionalCue; - -event Activated() -{ -} - -static event int GetObjClassVersion() -{ -} - -defaultproperties -{ - ObjName="Tutorial Announcement" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_PlayCameraAnim.uc b/Development/Src/TgGame/Classes/TgSeqAct_PlayCameraAnim.uc deleted file mode 100755 index 7faa23ae..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_PlayCameraAnim.uc +++ /dev/null @@ -1,21 +0,0 @@ -class TgSeqAct_PlayCameraAnim extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() CameraAnim AnimToPlay; -var() float BlendInTime; -var() float BlendOutTime; -var() float Rate; -var() float IntensityScale; - -static event int GetObjClassVersion() -{ -} - -defaultproperties -{ - Rate=1.0000000 - IntensityScale=1.0000000 - ObjName="Play Camera Animation" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_PlayFullBodyAnim.uc b/Development/Src/TgGame/Classes/TgSeqAct_PlayFullBodyAnim.uc deleted file mode 100755 index b77d1a32..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_PlayFullBodyAnim.uc +++ /dev/null @@ -1,22 +0,0 @@ -class TgSeqAct_PlayFullBodyAnim extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() name c_AnimName; -var() float c_fRate; -var() float c_fBlendInTime; -var() float c_fBlendOutTime; -var() bool c_bLooping; -var() bool c_bOverride; - -defaultproperties -{ - c_fRate=1.0000000 - c_fBlendInTime=0.2000000 - c_fBlendOutTime=0.2000000 - c_bOverride=true - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Player",LinkVar="None",PropertyName="Targets",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Play Full Body Animation" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_ProgressTo.uc b/Development/Src/TgGame/Classes/TgSeqAct_ProgressTo.uc deleted file mode 100755 index e1101c59..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_ProgressTo.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_ProgressTo extends SeqAct_Delay - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var TgPawn m_Instigator; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Duration",LinkVar="None",PropertyName="Duration",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Target",LinkVar="None",PropertyName="Target",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="ProgressTo" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_PushMatinee.uc b/Development/Src/TgGame/Classes/TgSeqAct_PushMatinee.uc deleted file mode 100755 index 5102adc2..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_PushMatinee.uc +++ /dev/null @@ -1,15 +0,0 @@ -class TgSeqAct_PushMatinee extends SeqAct_Interp - native(Kismet) - config(Engine) - forcescriptorder(true) - hidecategories(Object); - -var() const float m_fCheckpoint1Time; -var() const float m_fCheckpoint2Time; -var() const int m_nDefenderTaskForce; - -defaultproperties -{ - ObjName="Push Matinee" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_RequestMission.uc b/Development/Src/TgGame/Classes/TgSeqAct_RequestMission.uc deleted file mode 100755 index 09954dff..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_RequestMission.uc +++ /dev/null @@ -1,21 +0,0 @@ -class TgSeqAct_RequestMission extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -enum EMissionDifficultyLevel -{ - DL_Easy, - DL_Medium, - DL_Hard, - //DL_MAX -}; - -var() int m_nMapGameId; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Player",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Request Mission" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_ResetCooldowns.uc b/Development/Src/TgGame/Classes/TgSeqAct_ResetCooldowns.uc deleted file mode 100755 index 0af4ab3b..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_ResetCooldowns.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_ResetCooldowns extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -function Activated() -{ -} - -defaultproperties -{ - ObjName="Reset Cooldowns" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_RespawnAllPlayers.uc b/Development/Src/TgGame/Classes/TgSeqAct_RespawnAllPlayers.uc deleted file mode 100755 index 1393ab0c..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_RespawnAllPlayers.uc +++ /dev/null @@ -1,19 +0,0 @@ -class TgSeqAct_RespawnAllPlayers extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() bool bResetLivingPlayers; -var() bool bResetDeadPlayers; -var() bool bResetHealth; - -defaultproperties -{ - bResetLivingPlayers=true - bResetDeadPlayers=true - bResetHealth=true - bCallHandler=false - //VariableLinks=none - ObjName="RespawnAllPlayers" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_RestartPlayers.uc b/Development/Src/TgGame/Classes/TgSeqAct_RestartPlayers.uc deleted file mode 100755 index cb4d301b..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_RestartPlayers.uc +++ /dev/null @@ -1,9 +0,0 @@ -class TgSeqAct_RestartPlayers extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - ObjName="Restart Players" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SelectBestSpawnPoint.uc b/Development/Src/TgGame/Classes/TgSeqAct_SelectBestSpawnPoint.uc deleted file mode 100755 index 57acbcfd..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SelectBestSpawnPoint.uc +++ /dev/null @@ -1,19 +0,0 @@ -class TgSeqAct_SelectBestSpawnPoint extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() array Points; -var() Actor PlayerReceived; - -function Activated() -{ -} - -defaultproperties -{ - InputLinks(0)=(LinkDesc="Teleport Pawn",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_ObjectList',LinkDesc="Spawn Points",LinkVar="None",PropertyName="Points",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Player",LinkVar="None",PropertyName="PlayerReceived",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Teleport Player To Best Spawn Point" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SendPlayerTrackingEvent.uc b/Development/Src/TgGame/Classes/TgSeqAct_SendPlayerTrackingEvent.uc deleted file mode 100755 index 4c7bdcbb..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SendPlayerTrackingEvent.uc +++ /dev/null @@ -1,15 +0,0 @@ -class TgSeqAct_SendPlayerTrackingEvent extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int m_nEventId; -var() int m_nSubEventID; -var() string m_ReferenceName; -var() int m_nReferenceValue; - -defaultproperties -{ - ObjName="Send Player Tracking Event" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetCreditGainBlock.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetCreditGainBlock.uc deleted file mode 100755 index b1afff4e..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetCreditGainBlock.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_SetCreditGainBlock extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var int m_bBlockCreditGain; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Bool',LinkDesc="Block Credit Gain",LinkVar="None",PropertyName="m_bBlockCreditGain",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Block Credit Gain" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetCrowdControlImmune.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetCrowdControlImmune.uc deleted file mode 100755 index 6212f12d..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetCrowdControlImmune.uc +++ /dev/null @@ -1,12 +0,0 @@ -class TgSeqAct_SetCrowdControlImmune extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - InputLinks(0)=(LinkDesc="Enable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(1)=(LinkDesc="Disable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(2)=(LinkDesc="Toggle",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Crowd Control Immune" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetEnergyGainBlock.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetEnergyGainBlock.uc deleted file mode 100755 index dc6a21b4..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetEnergyGainBlock.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_SetEnergyGainBlock extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int m_bBlockEnergyGain; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Bool',LinkDesc="Block Energy Gain",LinkVar="None",PropertyName="m_bBlockEnergyGain",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Block Energy Gain" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetHexState.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetHexState.uc deleted file mode 100755 index c11d60eb..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetHexState.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_SetHexState extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() bool m_bChallengerWon; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Bool',LinkDesc="Challenger Won",LinkVar="None",PropertyName="m_bChallengerWon",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Set Hex State" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetInputEnabled.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetInputEnabled.uc deleted file mode 100755 index 6fa11a95..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetInputEnabled.uc +++ /dev/null @@ -1,47 +0,0 @@ -class TgSeqAct_SetInputEnabled extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() bool bEnableMoveForward; -var() bool bEnableMoveBackward; -var() bool bEnableMoveLeft; -var() bool bEnableMoveRight; -var() bool bEnableLookUp; -var() bool bEnableLookDown; -var() bool bEnableLookLeft; -var() bool bEnableLookRight; -var() bool bEnableJumping; -var() bool bEnableMounting; -var() bool bEnableAuto; -var() bool bEnableAlt; -var() bool bEnableBattleAbility; -var() bool bEnableMovementAbility; -var() bool bEnableUltimate; -var() bool bEnableEmote; - -function Activated() -{ -} - -defaultproperties -{ - bEnableMoveForward=true - bEnableMoveBackward=true - bEnableMoveLeft=true - bEnableMoveRight=true - bEnableLookUp=true - bEnableLookDown=true - bEnableLookLeft=true - bEnableLookRight=true - bEnableJumping=true - bEnableMounting=true - bEnableAuto=true - bEnableAlt=true - bEnableBattleAbility=true - bEnableMovementAbility=true - bEnableUltimate=true - bEnableEmote=true - ObjName="Set Input Enabled/Disabled" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetLobbyMeshSkin.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetLobbyMeshSkin.uc deleted file mode 100755 index a1097a0b..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetLobbyMeshSkin.uc +++ /dev/null @@ -1,19 +0,0 @@ -class TgSeqAct_SetLobbyMeshSkin extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() int m_nMessageSkinId; -var() int m_nMessageDeviceSkinId; -var() int m_nSkinId; -var() int m_nDeviceSkinId; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Meshes",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="m_nMessageSkinId",LinkVar="None",PropertyName="m_nMessageSkinId",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(2)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="m_nMessageDeviceSkinId",LinkVar="None",PropertyName="m_nMessageDeviceSkinId",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(3)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Skin ID",LinkVar="None",PropertyName="m_nSkinId",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(4)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Device Skin ID",LinkVar="None",PropertyName="m_nDeviceSkinId",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Set Lobby Mesh Skin" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetMapLane.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetMapLane.uc deleted file mode 100755 index 6657527d..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetMapLane.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_SetMapLane extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var int m_nMapLane; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Map Lane",LinkVar="None",PropertyName="m_nMapLane",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Set Map Lane" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetMissionTime.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetMissionTime.uc deleted file mode 100755 index c20f4cab..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetMissionTime.uc +++ /dev/null @@ -1,22 +0,0 @@ -class TgSeqAct_SetMissionTime extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() float m_fMissionTimeSecs; -var() float m_fIncrementSecs; -var float m_fMissionTimeRemaining; - -defaultproperties -{ - bLatentExecution=true - InputLinks(0)=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(1)=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(2)=(LinkDesc="Pause",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(3)=(LinkDesc="Increment",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - OutputLinks(0)=(LinkDesc="Completed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Aborted",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Seconds Remaining",LinkVar="None",PropertyName="m_fMissionTimeRemaining",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Mission Timer" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetPlayerLevel.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetPlayerLevel.uc deleted file mode 100755 index 96633885..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetPlayerLevel.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_SetPlayerLevel extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int m_nLevel; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Pawn",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="SetPlayerLevel" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetPlayerMesh.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetPlayerMesh.uc deleted file mode 100755 index 25d20179..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetPlayerMesh.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_SetPlayerMesh extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int m_nMeshAsmId; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Pawn",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="SetPlayerMesh" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetPlayerMeshVisible.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetPlayerMeshVisible.uc deleted file mode 100755 index bbca6fdf..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetPlayerMeshVisible.uc +++ /dev/null @@ -1,19 +0,0 @@ -class TgSeqAct_SetPlayerMeshVisible extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() bool bIs1PMeshVisible; -var() bool bIs3PMeshVisible; - -function Activated() -{ -} - -defaultproperties -{ - bIs1PMeshVisible=true - bIs3PMeshVisible=true - ObjName="Set Player Meshes Enabled/Disabled" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetSkelPosture.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetSkelPosture.uc deleted file mode 100755 index 4ec34be1..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetSkelPosture.uc +++ /dev/null @@ -1,12 +0,0 @@ -class TgSeqAct_SetSkelPosture extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() TgPawn.TG_POSTURE m_Posture; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="MeshActor",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Set Skeletal Posture" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetTaskforce.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetTaskforce.uc deleted file mode 100755 index a7713cc1..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetTaskforce.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_SetTaskforce extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() int TaskForceNumber; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Bots/Factory",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="TaskForceNumber",LinkVar="None",PropertyName="TaskForceNumber",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Set Taskforce" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetUIClock.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetUIClock.uc deleted file mode 100755 index 2a6d6e78..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetUIClock.uc +++ /dev/null @@ -1,21 +0,0 @@ -class TgSeqAct_SetUIClock extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() bool ShowAlarmTexture; -var() bool UseProgressBar; -var() bool IsCountingDown; - -defaultproperties -{ - bAutoActivateOutputLinks=false - InputLinks(0)=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(1)=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - OutputLinks(0)=(LinkDesc="TurnedOn",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="TurnedOff",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="ClockTime",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Player(s)",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="SetUIClock" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetUITextBox.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetUITextBox.uc deleted file mode 100755 index d890a2ca..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetUITextBox.uc +++ /dev/null @@ -1,23 +0,0 @@ -class TgSeqAct_SetUITextBox extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int TextBox_MessageID; -var() bool TextBox_TargetSecondary; -var() bool TextBox_UseDuration; -var() bool TextBox_AllowEscape; -var() TgObject.AlertType TextBox_MessageType; - -defaultproperties -{ - bAutoActivateOutputLinks=false - InputLinks(0)=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(1)=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - OutputLinks(0)=(LinkDesc="TurnedOn",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="TurnedOff",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Duration",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Player(s)",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="SetUITextBox" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SetUltimateEnergy.uc b/Development/Src/TgGame/Classes/TgSeqAct_SetUltimateEnergy.uc deleted file mode 100755 index 69f23814..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SetUltimateEnergy.uc +++ /dev/null @@ -1,16 +0,0 @@ -class TgSeqAct_SetUltimateEnergy extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() float fChargePercent; - -function Activated() -{ -} - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Ultimate Charge %",LinkVar="None",PropertyName="fChargePercent",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Set Ultimate Energy" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_ShowGameTip.uc b/Development/Src/TgGame/Classes/TgSeqAct_ShowGameTip.uc deleted file mode 100755 index 80a594ee..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_ShowGameTip.uc +++ /dev/null @@ -1,18 +0,0 @@ -class TgSeqAct_ShowGameTip extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() int GameTipId; -var TgPlayerController TargetPlayer; - -function Activated() -{ -} - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Game Tip ID",LinkVar="None",PropertyName="GameTipId",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Target Player",LinkVar="None",PropertyName="TargetPlayer",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Show Game Tip" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_ShowHUD.uc b/Development/Src/TgGame/Classes/TgSeqAct_ShowHUD.uc deleted file mode 100755 index de8ca40c..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_ShowHUD.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_ShowHUD extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -event Activated() -{ -} - -defaultproperties -{ - ObjName="Show HUD" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_ShowLoadoutMenu.uc b/Development/Src/TgGame/Classes/TgSeqAct_ShowLoadoutMenu.uc deleted file mode 100755 index 581de863..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_ShowLoadoutMenu.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_ShowLoadoutMenu extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -event Activated() -{ -} - -defaultproperties -{ - ObjName="Show Loadout Menu" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_ShowSilhouettes.uc b/Development/Src/TgGame/Classes/TgSeqAct_ShowSilhouettes.uc deleted file mode 100755 index 1ae46074..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_ShowSilhouettes.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_ShowSilhouettes extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -event Activated() -{ -} - -defaultproperties -{ - ObjName="Show Silhouettes" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_SpawnProjectile.uc b/Development/Src/TgGame/Classes/TgSeqAct_SpawnProjectile.uc deleted file mode 100755 index d28b6dde..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_SpawnProjectile.uc +++ /dev/null @@ -1,25 +0,0 @@ -class TgSeqAct_SpawnProjectile extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int m_nFireModeID; -var TgDeviceFire m_FireMode; -var bool m_bSetupFireMode; - -// Export UTgSeqAct_SpawnProjectile::execSetupFireMode(FFrame&, void* const) -native function SetupFireMode(); - -event Activated() -{ -} - -defaultproperties -{ - bCallHandler=false - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Spawn Location",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Target Location",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(2)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Spawn Projectile" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_TemporaryAddDevice.uc b/Development/Src/TgGame/Classes/TgSeqAct_TemporaryAddDevice.uc deleted file mode 100755 index e1516c5b..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_TemporaryAddDevice.uc +++ /dev/null @@ -1,16 +0,0 @@ -class TgSeqAct_TemporaryAddDevice extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int m_nDeviceId; -var() int m_nEquipPoint; - -defaultproperties -{ - m_nDeviceId=-1 - m_nEquipPoint=-1 - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Players",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Temporary Add Device" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_TemporaryRemoveDevice.uc b/Development/Src/TgGame/Classes/TgSeqAct_TemporaryRemoveDevice.uc deleted file mode 100755 index 3586966c..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_TemporaryRemoveDevice.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_TemporaryRemoveDevice extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int m_nEquipPoint; - -defaultproperties -{ - m_nEquipPoint=-1 - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Players",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Temporary Remove Device" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_TestResult.uc b/Development/Src/TgGame/Classes/TgSeqAct_TestResult.uc deleted file mode 100755 index 6750011a..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_TestResult.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_TestResult extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - InputLinks(0)=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(1)=(LinkDesc="Pass",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(2)=(LinkDesc="Fail",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Test",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Test Result" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_TgCameraShake.uc b/Development/Src/TgGame/Classes/TgSeqAct_TgCameraShake.uc deleted file mode 100755 index a4fd5df9..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_TgCameraShake.uc +++ /dev/null @@ -1,16 +0,0 @@ -class TgSeqAct_TgCameraShake extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var() TgCameraShake m_CameraShake; -var Actor m_LocationActor; - -defaultproperties -{ - InputLinks(0)=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(1)=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Location",LinkVar="None",PropertyName="m_LocationActor",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Tg Camera Shake" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_ToggleStaticMeshSilhouette.uc b/Development/Src/TgGame/Classes/TgSeqAct_ToggleStaticMeshSilhouette.uc deleted file mode 100755 index 9678e8e9..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_ToggleStaticMeshSilhouette.uc +++ /dev/null @@ -1,22 +0,0 @@ -class TgSeqAct_ToggleStaticMeshSilhouette extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() StaticMeshActor SMA; -var bool bIsEnabled; - -function Activated() -{ -} - -defaultproperties -{ - InputLinks(0)=(LinkDesc="Turn On",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(1)=(LinkDesc="Turn Off",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(2)=(LinkDesc="Toggle",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Static Mesh Actor",LinkVar="None",PropertyName="SMA",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Bool',LinkDesc="Is Enabled After",LinkVar="None",PropertyName="bIsEnabled",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Toggle Static Mesh Silhouette" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_TrainingAwards.uc b/Development/Src/TgGame/Classes/TgSeqAct_TrainingAwards.uc deleted file mode 100755 index 0ceccd4c..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_TrainingAwards.uc +++ /dev/null @@ -1,26 +0,0 @@ -class TgSeqAct_TrainingAwards extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() float m_fGoldTime; -var() float m_fSilverTime; -var() float m_fBronzeTime; -var() float m_fPassTime; - -defaultproperties -{ - m_fGoldTime=-1.0000000 - m_fSilverTime=-1.0000000 - m_fBronzeTime=-1.0000000 - m_fPassTime=-1.0000000 - InputLinks(0)=(LinkDesc="Auto-Fail",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(1)=(LinkDesc="Auto-Pass",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(2)=(LinkDesc="Auto-Bronze",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(3)=(LinkDesc="Auto-Silver",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(4)=(LinkDesc="Auto-Gold",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - //OutputLinks=none - //VariableLinks=none - ObjName="Training Awards" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_TriggerBots.uc b/Development/Src/TgGame/Classes/TgSeqAct_TriggerBots.uc deleted file mode 100755 index 0bc4c255..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_TriggerBots.uc +++ /dev/null @@ -1,19 +0,0 @@ -class TgSeqAct_TriggerBots extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() bool bUseDestination; -var() Actor TargetActor; -var() Actor destActor; - -defaultproperties -{ - InputLinks(0)=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(1)=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Bots/Factory",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Target",LinkVar="None",PropertyName="TargetActor",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(2)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Destination",LinkVar="None",PropertyName="destActor",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Trigger Bots" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_TriggerInterpActor.uc b/Development/Src/TgGame/Classes/TgSeqAct_TriggerInterpActor.uc deleted file mode 100755 index ed682dd1..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_TriggerInterpActor.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqAct_TriggerInterpActor extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -var string m_sStateName; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="InterpActor",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_String',LinkDesc="State",LinkVar="None",PropertyName="m_sStateName",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Trigger InterpActor" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_TutorialHighlighter.uc b/Development/Src/TgGame/Classes/TgSeqAct_TutorialHighlighter.uc deleted file mode 100755 index 9358dfc1..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_TutorialHighlighter.uc +++ /dev/null @@ -1,33 +0,0 @@ -class TgSeqAct_TutorialHighlighter extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -enum eTutorialHighlighterElement -{ - THE_Ability1, - THE_ActiveItem, - THE_ConsumableItem, - THE_Gold, - THE_ItemShop_Gold, - THE_ItemShop_Item, - THE_ItemShop_Item2, - THE_ItemShop_Item3, - THE_ItemShop_Purchase, - THE_ItemShop_AllItems, - THE_ItemShop_RemoveOverlay, - THE_ItemShop_AddBlocker, - THE_Stats_Display, - //THE_MAX -}; - -var() TgSeqAct_TutorialHighlighter.eTutorialHighlighterElement GameUIElement; - -defaultproperties -{ - InputLinks(0)=(LinkDesc="Show",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(1)=(LinkDesc="Hide",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Targets",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Tutorial Highlighter" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_TutorialInstruction.uc b/Development/Src/TgGame/Classes/TgSeqAct_TutorialInstruction.uc deleted file mode 100755 index e50d8201..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_TutorialInstruction.uc +++ /dev/null @@ -1,12 +0,0 @@ -class TgSeqAct_TutorialInstruction extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int nMsgId; - -defaultproperties -{ - ObjName="Tutorial Instruction" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_TutorialTips.uc b/Development/Src/TgGame/Classes/TgSeqAct_TutorialTips.uc deleted file mode 100755 index 265153ef..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_TutorialTips.uc +++ /dev/null @@ -1,12 +0,0 @@ -class TgSeqAct_TutorialTips extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int nMsgId; - -defaultproperties -{ - ObjName="Tutorial Tips" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_UIAlert.uc b/Development/Src/TgGame/Classes/TgSeqAct_UIAlert.uc deleted file mode 100755 index 1f32f723..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_UIAlert.uc +++ /dev/null @@ -1,17 +0,0 @@ -class TgSeqAct_UIAlert extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int nMsgId; -var array Taskforces; -var array Broadcast; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Players",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Taskforces",LinkVar="None",PropertyName="Taskforces",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(2)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Broadcast",LinkVar="None",PropertyName="Broadcast",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="UI Alert" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_UIElementVisibility.uc b/Development/Src/TgGame/Classes/TgSeqAct_UIElementVisibility.uc deleted file mode 100755 index 99b75fcd..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_UIElementVisibility.uc +++ /dev/null @@ -1,18 +0,0 @@ -class TgSeqAct_UIElementVisibility extends SequenceAction - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() bool ShowElement; -var() string UISceneName; -var() string UIElementName; - -defaultproperties -{ - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Bool',LinkDesc="Show?",LinkVar="None",PropertyName="ShowElement",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(2)=(ExpectedType=Class'Engine.SeqVar_String',LinkDesc="UI Scene Name",LinkVar="None",PropertyName="UISceneName",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(3)=(ExpectedType=Class'Engine.SeqVar_String',LinkDesc="UI Element Name",LinkVar="None",PropertyName="UIElementName",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Show/Hide UI Element" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqAct_UnpauseSetupTimer.uc b/Development/Src/TgGame/Classes/TgSeqAct_UnpauseSetupTimer.uc deleted file mode 100755 index da18bc37..00000000 --- a/Development/Src/TgGame/Classes/TgSeqAct_UnpauseSetupTimer.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqAct_UnpauseSetupTimer extends SequenceAction - forcescriptorder(true) - hidecategories(Object); - -function Activated() -{ -} - -defaultproperties -{ - //VariableLinks=none - ObjName="Unpause Setup Timer" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqCond_And.uc b/Development/Src/TgGame/Classes/TgSeqCond_And.uc deleted file mode 100755 index 41976bb1..00000000 --- a/Development/Src/TgGame/Classes/TgSeqCond_And.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqCond_And extends SequenceCondition - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - OutputLinks(0)=(LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Bool',LinkDesc="Booleans",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="And" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqCond_CompareDamageType.uc b/Development/Src/TgGame/Classes/TgSeqCond_CompareDamageType.uc deleted file mode 100755 index 24bc7049..00000000 --- a/Development/Src/TgGame/Classes/TgSeqCond_CompareDamageType.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqCond_CompareDamageType extends SequenceCondition - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - OutputLinks(0)=(LinkDesc="A == B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="A != B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'TgSeqVar_DamageType',LinkDesc="A",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'TgSeqVar_DamageType',LinkDesc="B",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Compare Damage Types" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqCond_CompareDeviceId.uc b/Development/Src/TgGame/Classes/TgSeqCond_CompareDeviceId.uc deleted file mode 100755 index 2a650410..00000000 --- a/Development/Src/TgGame/Classes/TgSeqCond_CompareDeviceId.uc +++ /dev/null @@ -1,17 +0,0 @@ -class TgSeqCond_CompareDeviceId extends SequenceCondition - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() Object Device; -var() int DeviceID; - -defaultproperties -{ - OutputLinks(0)=(LinkDesc="Device Matches Id",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Device Does Not Match Id",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Device",LinkVar="None",PropertyName="Device",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Device Id",LinkVar="None",PropertyName="DeviceID",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Compare Device Id" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqCond_HasCondition.uc b/Development/Src/TgGame/Classes/TgSeqCond_HasCondition.uc deleted file mode 100755 index 5fff5ffe..00000000 --- a/Development/Src/TgGame/Classes/TgSeqCond_HasCondition.uc +++ /dev/null @@ -1,29 +0,0 @@ -class TgSeqCond_HasCondition extends SequenceCondition - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -enum ConditionType -{ - TGCT_POISON, - TGCT_DISEASE, - TGCT_REGENERATION, - TGCT_STUN, - TGCT_STEALTH, - TGCT_EMP_STUN, - TGCT_IGNITE, - TGCT_INVULNERABLE, - TGCT_SLOW, - //TGCT_MAX -}; - -var() TgSeqCond_HasCondition.ConditionType ConditionList; - -defaultproperties -{ - OutputLinks(0)=(LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Players",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Has Condition" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqCond_IsHuman.uc b/Development/Src/TgGame/Classes/TgSeqCond_IsHuman.uc deleted file mode 100755 index 550912ac..00000000 --- a/Development/Src/TgGame/Classes/TgSeqCond_IsHuman.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqCond_IsHuman extends SequenceCondition - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - OutputLinks(0)=(LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Players",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Is Human" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqCond_IsSecuring.uc b/Development/Src/TgGame/Classes/TgSeqCond_IsSecuring.uc deleted file mode 100755 index 685e6f5f..00000000 --- a/Development/Src/TgGame/Classes/TgSeqCond_IsSecuring.uc +++ /dev/null @@ -1,12 +0,0 @@ -class TgSeqCond_IsSecuring extends SequenceCondition - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - OutputLinks(0)=(LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="Is Securing" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqCond_IsSpectating.uc b/Development/Src/TgGame/Classes/TgSeqCond_IsSpectating.uc deleted file mode 100755 index e53cff42..00000000 --- a/Development/Src/TgGame/Classes/TgSeqCond_IsSpectating.uc +++ /dev/null @@ -1,12 +0,0 @@ -class TgSeqCond_IsSpectating extends SequenceCondition - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - OutputLinks(0)=(LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="Is Spectating" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqCond_Or.uc b/Development/Src/TgGame/Classes/TgSeqCond_Or.uc deleted file mode 100755 index cc2453a7..00000000 --- a/Development/Src/TgGame/Classes/TgSeqCond_Or.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqCond_Or extends SequenceCondition - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - OutputLinks(0)=(LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Bool',LinkDesc="Booleans",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Or" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_AIRespawned.uc b/Development/Src/TgGame/Classes/TgSeqEvent_AIRespawned.uc deleted file mode 100755 index 88458762..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_AIRespawned.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqEvent_AIRespawned extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - ObjName="TgSeqEvent_AIRespawned" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_BotDied.uc b/Development/Src/TgGame/Classes/TgSeqEvent_BotDied.uc deleted file mode 100755 index 85f81478..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_BotDied.uc +++ /dev/null @@ -1,17 +0,0 @@ -class TgSeqEvent_BotDied extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -event UpdateLinkedVars(Actor Killer) -{ -} - -defaultproperties -{ - MaxTriggerCount=0 - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Killer",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="TgSeqEvent_BotDied" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_BotSpawned.uc b/Development/Src/TgGame/Classes/TgSeqEvent_BotSpawned.uc deleted file mode 100755 index fc8f3955..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_BotSpawned.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqEvent_BotSpawned extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - ObjName="TgSeqEvent_BotSpawned" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_BurnCardPurchased.uc b/Development/Src/TgGame/Classes/TgSeqEvent_BurnCardPurchased.uc deleted file mode 100755 index e5d29390..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_BurnCardPurchased.uc +++ /dev/null @@ -1,22 +0,0 @@ -class TgSeqEvent_BurnCardPurchased extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -var int nFilledSlots; -var bool bAllBurnSlotsFull; - -static function bool TriggerGlobal(Actor InInstigator, int InFilledSlotsCount, bool bInAllBurnSlotsFull) -{ -} - -defaultproperties -{ - MaxTriggerCount=0 - OutputLinks(0)=(LinkDesc="Purchased",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Filled Slots Count",LinkVar="None",PropertyName="nFilledSlots",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(2)=(ExpectedType=Class'Engine.SeqVar_Bool',LinkDesc="Slots Full",LinkVar="None",PropertyName="bAllBurnSlotsFull",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Burn Card Purchased" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadCapturePointVictory.uc b/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadCapturePointVictory.uc deleted file mode 100755 index 00eaa442..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadCapturePointVictory.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_CaptureAndPayloadCapturePointVictory extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Capture Point Victory" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundBegin.uc b/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundBegin.uc deleted file mode 100755 index cab6d5c4..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundBegin.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqEvent_CaptureAndPayloadRoundBegin extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - ObjName="Round Begin" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundEnd.uc b/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundEnd.uc deleted file mode 100755 index 1317d44b..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundEnd.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqEvent_CaptureAndPayloadRoundEnd extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - ObjName="Round End" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF1.uc b/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF1.uc deleted file mode 100755 index c043f537..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF1.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF1 extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Successful Defense - TF1" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF2.uc b/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF2.uc deleted file mode 100755 index b551da82..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF2.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF2 extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Successful Defense - TF2" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF1.uc b/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF1.uc deleted file mode 100755 index 0851e5f6..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF1.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqEvent_CaptureAndPayloadSuccessfulPushTF1 extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - bClientSideOnly=true - ObjName="Successful Push - TF1" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF2.uc b/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF2.uc deleted file mode 100755 index 88d01089..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF2.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_CaptureAndPayloadSuccessfulPushTF2 extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Successful Push - TF2" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF1.uc b/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF1.uc deleted file mode 100755 index e522bc53..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF1.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_CaptureAndPayloadWinTF1 extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Win - TF1" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF2.uc b/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF2.uc deleted file mode 100755 index 0176ef4c..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF2.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_CaptureAndPayloadWinTF2 extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Win - TF2" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_ChaosGameEvent.uc b/Development/Src/TgGame/Classes/TgSeqEvent_ChaosGameEvent.uc deleted file mode 100755 index fe58d25b..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_ChaosGameEvent.uc +++ /dev/null @@ -1,21 +0,0 @@ -class TgSeqEvent_ChaosGameEvent extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - bClientSideOnly=true - OutputLinks(0)=(LinkDesc="Neutral",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="TaskForce 1 Attacking",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="TaskForce 2 Attacking",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(3)=(LinkDesc="Point Almost Captured",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(4)=(LinkDesc="Time Running Out",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(5)=(LinkDesc="Overtime",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(6)=(LinkDesc="Match Almost Won",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - //VariableLinks=none - ObjName="ChaosGameEvent" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_ChaosObjectiveActive.uc b/Development/Src/TgGame/Classes/TgSeqEvent_ChaosObjectiveActive.uc deleted file mode 100755 index 8f98e580..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_ChaosObjectiveActive.uc +++ /dev/null @@ -1,15 +0,0 @@ -class TgSeqEvent_ChaosObjectiveActive extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="Inactive",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Active",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="Pending Active",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - //VariableLinks=none - ObjName="ChaosObjectiveActive" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_ChaosObjectiveStatus.uc b/Development/Src/TgGame/Classes/TgSeqEvent_ChaosObjectiveStatus.uc deleted file mode 100755 index 23393861..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_ChaosObjectiveStatus.uc +++ /dev/null @@ -1,21 +0,0 @@ -class TgSeqEvent_ChaosObjectiveStatus extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -function UpdateLinkedVars(bool bFriendlyTaskForce) -{ - //return; -} - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - bClientSideOnly=true - OutputLinks(0)=(LinkDesc="Contested",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Uncontested",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="Empty",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Bool',LinkDesc="Friendly Controlled",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="ChaosObjectiveStatus" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_ClassSelected.uc b/Development/Src/TgGame/Classes/TgSeqEvent_ClassSelected.uc deleted file mode 100755 index fd4a552f..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_ClassSelected.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqEvent_ClassSelected extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bClientSideOnly=true - ObjName="Class Selected" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_ClientGameOver.uc b/Development/Src/TgGame/Classes/TgSeqEvent_ClientGameOver.uc deleted file mode 100755 index 22dab2d4..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_ClientGameOver.uc +++ /dev/null @@ -1,16 +0,0 @@ -class TgSeqEvent_ClientGameOver extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - bClientSideOnly=true - OutputLinks(0)=(LinkDesc="Attacker Win",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Attacker Lose",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="Defender Win",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(3)=(LinkDesc="Defender Lose",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="Client Game Over" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange.uc b/Development/Src/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange.uc deleted file mode 100755 index c02d00c1..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange.uc +++ /dev/null @@ -1,17 +0,0 @@ -class TgSeqEvent_ControlPointOwnershipChange extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -var() int PointIndex; - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - bClientSideOnly=true - OutputLinks(0)=(LinkDesc="Neutral",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Friendly",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="Enemy",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="Control Point Ownership Change" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange_Server.uc b/Development/Src/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange_Server.uc deleted file mode 100755 index be12c439..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange_Server.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqEvent_ControlPointOwnershipChange_Server extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -var() int PointIndex; - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="Output",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="Control Point Ownership Change (Server Notify)" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_ControlPointOwnershipPercent.uc b/Development/Src/TgGame/Classes/TgSeqEvent_ControlPointOwnershipPercent.uc deleted file mode 100755 index 7a6f49fd..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_ControlPointOwnershipPercent.uc +++ /dev/null @@ -1,15 +0,0 @@ -class TgSeqEvent_ControlPointOwnershipPercent extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -var() float OwnershipPercent; -var() int PointIndex; - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - bClientSideOnly=true - ObjName="Control Point Ownership Percent" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_CrowdEvent.uc b/Development/Src/TgGame/Classes/TgSeqEvent_CrowdEvent.uc deleted file mode 100755 index 0fed2fad..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_CrowdEvent.uc +++ /dev/null @@ -1,22 +0,0 @@ -class TgSeqEvent_CrowdEvent extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - bClientSideOnly=true - OutputLinks(0)=(LinkDesc="CrowdStandingPlay",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="CrowdStandingStop",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="CrowdBooPlay",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(3)=(LinkDesc="CrowdAwwPlay",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(4)=(LinkDesc="CrowdCheerMediumPlay",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(5)=(LinkDesc="CrowdCheerLoudPlay",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(6)=(LinkDesc="CrowdCheerCrazyPlay",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(7)=(LinkDesc="CrowdChantPlay",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(8)=(LinkDesc="CrowdChantStop",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - //VariableLinks=none - ObjName="CrowdEvent" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_DebugConsoleKismetTest.uc b/Development/Src/TgGame/Classes/TgSeqEvent_DebugConsoleKismetTest.uc deleted file mode 100755 index 0b9e32c5..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_DebugConsoleKismetTest.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqEvent_DebugConsoleKismetTest extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - ObjName="Debug Console Kismet Test" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_DeployableFired.uc b/Development/Src/TgGame/Classes/TgSeqEvent_DeployableFired.uc deleted file mode 100755 index ccc8f579..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_DeployableFired.uc +++ /dev/null @@ -1,15 +0,0 @@ -class TgSeqEvent_DeployableFired extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="Fired",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="DeployableTouched",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="TouchedActor",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="DeployableFired" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_DoorStatusChanged.uc b/Development/Src/TgGame/Classes/TgSeqEvent_DoorStatusChanged.uc deleted file mode 100755 index 244b3c89..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_DoorStatusChanged.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqEvent_DoorStatusChanged extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="Opened",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Closed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="DoorStatusChanged" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_EnergyUpdated.uc b/Development/Src/TgGame/Classes/TgSeqEvent_EnergyUpdated.uc deleted file mode 100755 index d683538d..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_EnergyUpdated.uc +++ /dev/null @@ -1,24 +0,0 @@ -class TgSeqEvent_EnergyUpdated extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var int ResultEnergy; - -static event int GetIndex(float CurrentEnergy, float PreviousEnergy) -{ - //return ReturnValue; -} - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="100%",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="75%",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="50%",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(3)=(LinkDesc="25%",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(4)=(LinkDesc="0%",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="Player Ultimate Energy Updated" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_Escort_Despawn_Success.uc b/Development/Src/TgGame/Classes/TgSeqEvent_Escort_Despawn_Success.uc deleted file mode 100755 index 4c69d869..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_Escort_Despawn_Success.uc +++ /dev/null @@ -1,15 +0,0 @@ -class TgSeqEvent_Escort_Despawn_Success extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int DefendersTaskForce; - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - //VariableLinks=none - ObjName="Escort_Despawn_Success" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_FactoryEmpty.uc b/Development/Src/TgGame/Classes/TgSeqEvent_FactoryEmpty.uc deleted file mode 100755 index e495089d..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_FactoryEmpty.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqEvent_FactoryEmpty extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - ObjName="TgSeqEvent_FactoryEmpty" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_FiringDevice.uc b/Development/Src/TgGame/Classes/TgSeqEvent_FiringDevice.uc deleted file mode 100755 index 0c169470..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_FiringDevice.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_FiringDevice extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - ObjName="TgSeqEvent_FiringDevice" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF1Score.uc b/Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF1Score.uc deleted file mode 100755 index 06368513..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF1Score.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_FlagballTF1Score extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Flagball TF1 Score" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF1Win.uc b/Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF1Win.uc deleted file mode 100755 index f40afad3..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF1Win.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_FlagballTF1Win extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Flagball TF1 Win" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF2Score.uc b/Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF2Score.uc deleted file mode 100755 index 3d362508..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF2Score.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_FlagballTF2Score extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Flagball TF2 Score" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF2Win.uc b/Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF2Win.uc deleted file mode 100755 index 7d4a9a99..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_FlagballTF2Win.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_FlagballTF2Win extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Flagball TF2 Win" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_InputReceived.uc b/Development/Src/TgGame/Classes/TgSeqEvent_InputReceived.uc deleted file mode 100755 index 8db9b9ea..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_InputReceived.uc +++ /dev/null @@ -1,38 +0,0 @@ -class TgSeqEvent_InputReceived extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -var() bool bAllowInputDisabling; - -static event bool TriggerGlobal(Actor InInstigator, TgPlayerController.EPlayerInputType InputType, bool bInputEnabled) -{ - //return ReturnValue; -} - -defaultproperties -{ - bAllowInputDisabling=true - MaxTriggerCount=0 - OutputLinks(0)=(LinkDesc="Move Forward",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Move Backward",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="Move Right",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(3)=(LinkDesc="Move Left",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(4)=(LinkDesc="Look Left",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(5)=(LinkDesc="Look Right",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(6)=(LinkDesc="Look Up",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(7)=(LinkDesc="Look Down",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(8)=(LinkDesc="Auto Ability",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(9)=(LinkDesc="Alt Ability",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(10)=(LinkDesc="Battle Ability",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(11)=(LinkDesc="Movement Ability",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(12)=(LinkDesc="Ultimate Ability",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(13)=(LinkDesc="Reload",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(14)=(LinkDesc="Jump",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(15)=(LinkDesc="Mount",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(16)=(LinkDesc="Loadout Menu",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(17)=(LinkDesc="BurnCard Menu",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(18)=(LinkDesc="Emote",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="Input Received" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_LevelFadedIn.uc b/Development/Src/TgGame/Classes/TgSeqEvent_LevelFadedIn.uc deleted file mode 100755 index 6107363d..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_LevelFadedIn.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqEvent_LevelFadedIn extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - bClientSideOnly=true - //VariableLinks=none - ObjName="Level Faded In" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_LoadoutChanged.uc b/Development/Src/TgGame/Classes/TgSeqEvent_LoadoutChanged.uc deleted file mode 100755 index 54907955..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_LoadoutChanged.uc +++ /dev/null @@ -1,21 +0,0 @@ -class TgSeqEvent_LoadoutChanged extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -var int DeckId; - -static function bool TriggerGlobal(Actor InInstigator, int InDeckId) -{ - //return ReturnValue; -} - -defaultproperties -{ - MaxTriggerCount=0 - OutputLinks(0)=(LinkDesc="Loadout Changed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Deck Id",LinkVar="None",PropertyName="DeckId",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Loadout Changed" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_LobbyCameraSetActive.uc b/Development/Src/TgGame/Classes/TgSeqEvent_LobbyCameraSetActive.uc deleted file mode 100755 index ede3370a..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_LobbyCameraSetActive.uc +++ /dev/null @@ -1,15 +0,0 @@ -class TgSeqEvent_LobbyCameraSetActive extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - bClientSideOnly=true - OutputLinks(0)=(LinkDesc="Inactive",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Active - 1",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="Active - 2",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="LobbyCam Set Active" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_LobbyEvents.uc b/Development/Src/TgGame/Classes/TgSeqEvent_LobbyEvents.uc deleted file mode 100755 index 1b7b398c..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_LobbyEvents.uc +++ /dev/null @@ -1,16 +0,0 @@ -class TgSeqEvent_LobbyEvents extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="Enter Queue",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Champion Locked In",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="Everyone Locked In",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(3)=(LinkDesc="Re-enter Lobby",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - //VariableLinks=none - ObjName="Lobby Events" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayerDied.uc b/Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayerDied.uc deleted file mode 100755 index 6384ce6b..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayerDied.uc +++ /dev/null @@ -1,12 +0,0 @@ -class TgSeqEvent_LocalPlayerDied extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bClientSideOnly=true - ObjName="TgSeqEvent_LocalPlayerDied" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayerRecalled.uc b/Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayerRecalled.uc deleted file mode 100755 index 1c8f207e..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayerRecalled.uc +++ /dev/null @@ -1,12 +0,0 @@ -class TgSeqEvent_LocalPlayerRecalled extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bClientSideOnly=true - ObjName="TgSeqEvent_LocalPlayerRecalled" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayerScoredKill.uc b/Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayerScoredKill.uc deleted file mode 100755 index b09f7ec5..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayerScoredKill.uc +++ /dev/null @@ -1,12 +0,0 @@ -class TgSeqEvent_LocalPlayerScoredKill extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bClientSideOnly=true - ObjName="TgSeqEvent_LocalPlayerScoredKill" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredPhoenixKill.uc b/Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredPhoenixKill.uc deleted file mode 100755 index 72a367b2..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredPhoenixKill.uc +++ /dev/null @@ -1,12 +0,0 @@ -class TgSeqEvent_LocalPlayersTeamScoredPhoenixKill extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bClientSideOnly=true - ObjName="TgSeqEvent_LocalPlayersTeamScoredPhoenixKill" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredTowerKill.uc b/Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredTowerKill.uc deleted file mode 100755 index b619f313..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredTowerKill.uc +++ /dev/null @@ -1,12 +0,0 @@ -class TgSeqEvent_LocalPlayersTeamScoredTowerKill extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bClientSideOnly=true - ObjName="TgSeqEvent_LocalPlayersTeamScoredTowerKill" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_LookAtReceived.uc b/Development/Src/TgGame/Classes/TgSeqEvent_LookAtReceived.uc deleted file mode 100755 index c0bc238d..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_LookAtReceived.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqEvent_LookAtReceived extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - OutputLinks(0)=(LinkDesc="Player Looked at Point",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="Look At Received" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_MICParameterEvent.uc b/Development/Src/TgGame/Classes/TgSeqEvent_MICParameterEvent.uc deleted file mode 100755 index 6e262307..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_MICParameterEvent.uc +++ /dev/null @@ -1,31 +0,0 @@ -class TgSeqEvent_MICParameterEvent extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -enum eMICEventType -{ - MET_NONE, - MET_DEFENSE_ALARM, - //MET_MAX -}; - -var() TgSeqEvent_MICParameterEvent.eMICEventType MICEventType; -var() array AttachedMICs; - -// Export UTgSeqEvent_MICParameterEvent::execSetScalarParameterValue(FFrame&, void* const) -native function SetScalarParameterValue(name ParamName, float fValue); - -// Export UTgSeqEvent_MICParameterEvent::execSetVectorParameterValue(FFrame&, void* const) -native function SetVectorParameterValue(name ParamName, LinearColor Value); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - bClientSideOnly=true - OutputLinks(0)=(LinkDesc="Activated",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Deactivated",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="MIC Parameter Event" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_MissionTimeRemaining.uc b/Development/Src/TgGame/Classes/TgSeqEvent_MissionTimeRemaining.uc deleted file mode 100755 index 4ea171f5..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_MissionTimeRemaining.uc +++ /dev/null @@ -1,15 +0,0 @@ -class TgSeqEvent_MissionTimeRemaining extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() float SecsRemaining; - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="TimeRemainingReached",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="Mission Time Remaining Alert" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_MissionTimer.uc b/Development/Src/TgGame/Classes/TgSeqEvent_MissionTimer.uc deleted file mode 100755 index d2080d26..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_MissionTimer.uc +++ /dev/null @@ -1,24 +0,0 @@ -class TgSeqEvent_MissionTimer extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -// Export UTgSeqEvent_MissionTimer::execUpdateChallengerWonValue(FFrame&, void* const) -native function UpdateChallengerWonValue(bool bValue); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="SetupStarted",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="MissionStarted",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="PreGuardianPhase",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(3)=(LinkDesc="GuardianPhase",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(4)=(LinkDesc="MissionEnded",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(5)=(LinkDesc="RoundReset",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(6)=(LinkDesc="RoundEnded",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(7)=(LinkDesc="TimedObjectiveUnlock",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Bool',LinkDesc="ChallengerWon",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Mission Timer Events" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_Named.uc b/Development/Src/TgGame/Classes/TgSeqEvent_Named.uc deleted file mode 100755 index 87022370..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_Named.uc +++ /dev/null @@ -1,23 +0,0 @@ -class TgSeqEvent_Named extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -enum TSE_NAME -{ - TSE_NONE, - TSE_MENU_CLOSE, - TSE_MOVIE_DONE, - //TSE_MAX -}; - -var() TgSeqEvent_Named.TSE_NAME NamedEvent; - -defaultproperties -{ - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="Off/Close",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="On/Open",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="Named TgSeqEvent" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadAttackersWin.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PayloadAttackersWin.uc deleted file mode 100755 index 64d5644d..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadAttackersWin.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_PayloadAttackersWin extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Payload Attackers Win" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadBeginTF1.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PayloadBeginTF1.uc deleted file mode 100755 index 6ede79ba..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadBeginTF1.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_PayloadBeginTF1 extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Payload Begin TF1" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadBeginTF2.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PayloadBeginTF2.uc deleted file mode 100755 index dd6f2ea6..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadBeginTF2.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_PayloadBeginTF2 extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Payload Begin TF2" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadCP1Reached.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PayloadCP1Reached.uc deleted file mode 100755 index df7647e4..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadCP1Reached.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_PayloadCP1Reached extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Checkpoint 1 Reached" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadCP2Reached.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PayloadCP2Reached.uc deleted file mode 100755 index 8ae51466..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadCP2Reached.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_PayloadCP2Reached extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Checkpoint 2 Reached" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadDefendersWin.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PayloadDefendersWin.uc deleted file mode 100755 index 65f889f8..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadDefendersWin.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_PayloadDefendersWin extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Payload Defenders Win" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadEndTF1.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PayloadEndTF1.uc deleted file mode 100755 index e8200b36..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadEndTF1.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_PayloadEndTF1 extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Payload End TF1" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadEndTF2.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PayloadEndTF2.uc deleted file mode 100755 index 3c8f2388..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadEndTF2.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_PayloadEndTF2 extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Payload End TF2" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadGameEvent.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PayloadGameEvent.uc deleted file mode 100755 index c156e208..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadGameEvent.uc +++ /dev/null @@ -1,20 +0,0 @@ -class TgSeqEvent_PayloadGameEvent extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - bClientSideOnly=true - OutputLinks(0)=(LinkDesc="Neutral",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Checkpoint 1 Reached",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="Checkpoint 2 Reached",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(3)=(LinkDesc="Match Almost Over",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(4)=(LinkDesc="Overtime",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(5)=(LinkDesc="Match Over",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - //VariableLinks=none - ObjName="PayloadGameEvent" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadMissionEvents.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PayloadMissionEvents.uc deleted file mode 100755 index ebab199f..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PayloadMissionEvents.uc +++ /dev/null @@ -1,27 +0,0 @@ -class TgSeqEvent_PayloadMissionEvents extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -// Export UTgSeqEvent_PayloadMissionEvents::execUpdateTaskForceAttackValue(FFrame&, void* const) -native function UpdateTaskForceAttackValue(byte iValue); - -// Export UTgSeqEvent_PayloadMissionEvents::execUpdateTaskForceWonValue(FFrame&, void* const) -native function UpdateTaskForceWonValue(byte iValue); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="SetupStarted",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Waiting for Capture Point",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="Capture Point",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(3)=(LinkDesc="Seige Attack",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(4)=(LinkDesc="Waiting for Payload",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(5)=(LinkDesc="Payload",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(6)=(LinkDesc="Game Won",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="TaskForceAttack",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="TaskForceWon",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Payload Mission Events" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PhaseNotify.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PhaseNotify.uc deleted file mode 100755 index 007b7bc7..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PhaseNotify.uc +++ /dev/null @@ -1,15 +0,0 @@ -class TgSeqEvent_PhaseNotify extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -var string m_PhaseName; - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_String',LinkDesc="Phase Name",LinkVar="None",PropertyName="m_PhaseName",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="TgSeqEvent_PhaseNotify" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PlaceableDestroyed.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PlaceableDestroyed.uc deleted file mode 100755 index abcbb9f6..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PlaceableDestroyed.uc +++ /dev/null @@ -1,15 +0,0 @@ -class TgSeqEvent_PlaceableDestroyed extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="Destroyed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="PlaceableDestroyed",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="PlaceableDestroyed" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PlayIntro.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PlayIntro.uc deleted file mode 100755 index 01f74737..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PlayIntro.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqEvent_PlayIntro extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - bClientSideOnly=true - ObjName="Play Intro" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PlayOfTheGame.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PlayOfTheGame.uc deleted file mode 100755 index af0d394a..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PlayOfTheGame.uc +++ /dev/null @@ -1,18 +0,0 @@ -class TgSeqEvent_PlayOfTheGame extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -event UpdateLinkedVars(int MapLane) -{ - //return; -} - -defaultproperties -{ - bPlayerOnly=false - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Map Lane",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Play of the Game" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PlayerCountHit.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PlayerCountHit.uc deleted file mode 100755 index 6ad254b4..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PlayerCountHit.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqEvent_PlayerCountHit extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - ObjName="TgSeqEvent_PlayerCountHit" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PlayerInitialized.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PlayerInitialized.uc deleted file mode 100755 index 30394e97..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PlayerInitialized.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqEvent_PlayerInitialized extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -var() bool bLocalPlayerOnly; - -defaultproperties -{ - bClientSideOnly=true - ObjName="Player Initialized" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_PlayerMoved.uc b/Development/Src/TgGame/Classes/TgSeqEvent_PlayerMoved.uc deleted file mode 100755 index 5fa12cb8..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_PlayerMoved.uc +++ /dev/null @@ -1,31 +0,0 @@ -class TgSeqEvent_PlayerMoved extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -enum EPlayerCardinalDirection -{ - PCD_Forward, - PCD_Backward, - PCD_Left, - PCD_Right, - //PCD_MAX -}; - -var int ResultEnergy; - -static event int GetIndex(TgSeqEvent_PlayerMoved.EPlayerCardinalDirection MovementDirection) -{ - //return ReturnValue; -} - -defaultproperties -{ - MaxTriggerCount=0 - OutputLinks(0)=(LinkDesc="Forward",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Backward",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="Left",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(3)=(LinkDesc="Right",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="Player Moving" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_SetupTimeEnded.uc b/Development/Src/TgGame/Classes/TgSeqEvent_SetupTimeEnded.uc deleted file mode 100755 index 0f3ae2dc..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_SetupTimeEnded.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqEvent_SetupTimeEnded extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="SetupTimeEnded",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - //VariableLinks=none - ObjName="SetupTimeEnded" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_SiegePush.uc b/Development/Src/TgGame/Classes/TgSeqEvent_SiegePush.uc deleted file mode 100755 index f162d1ce..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_SiegePush.uc +++ /dev/null @@ -1,15 +0,0 @@ -class TgSeqEvent_SiegePush extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="Forward",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Reverse",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="Stop",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - //VariableLinks=none - ObjName="SiegePushEvent" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateActivate.uc b/Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateActivate.uc deleted file mode 100755 index 1958e510..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateActivate.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqEvent_SpawnGateActivate extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - ObjName="Spawn Gate Activate" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate.uc b/Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate.uc deleted file mode 100755 index e4b82434..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqEvent_SpawnGateDeactivate extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - ObjName="Spawn Gate Deactivate" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Attackers.uc b/Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Attackers.uc deleted file mode 100755 index 8f4b38f2..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Attackers.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqEvent_SpawnGateDeactivate_Attackers extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - ObjName="Spawn Gate Deactivate (Attackers)" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Defenders.uc b/Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Defenders.uc deleted file mode 100755 index ecb54e01..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Defenders.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqEvent_SpawnGateDeactivate_Defenders extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - ObjName="Spawn Gate Deactivate (Defenders)" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_SpawnLanePusher.uc b/Development/Src/TgGame/Classes/TgSeqEvent_SpawnLanePusher.uc deleted file mode 100755 index 02a2998d..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_SpawnLanePusher.uc +++ /dev/null @@ -1,17 +0,0 @@ -class TgSeqEvent_SpawnLanePusher extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int Taskforce; - -defaultproperties -{ - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="LeftLane",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="MidLane",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="RightLane",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - //VariableLinks=none - ObjName="Spawn Lanepusher" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_SpawnWise.uc b/Development/Src/TgGame/Classes/TgSeqEvent_SpawnWise.uc deleted file mode 100755 index d2bd3f8f..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_SpawnWise.uc +++ /dev/null @@ -1,16 +0,0 @@ -class TgSeqEvent_SpawnWise extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int Taskforce; - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="TriggerFactory",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - //VariableLinks=none - ObjName="Spawn Wise" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_SpectatorReady.uc b/Development/Src/TgGame/Classes/TgSeqEvent_SpectatorReady.uc deleted file mode 100755 index 58e721ce..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_SpectatorReady.uc +++ /dev/null @@ -1,16 +0,0 @@ -class TgSeqEvent_SpectatorReady extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -static function bool TriggerGlobal(TgSpectatorController InInstigator) -{ - //return ReturnValue; -} - -defaultproperties -{ - MaxTriggerCount=0 - OutputLinks(0)=(LinkDesc="Ready",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="Spectator Ready" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_SurvivalGameBegin.uc b/Development/Src/TgGame/Classes/TgSeqEvent_SurvivalGameBegin.uc deleted file mode 100755 index 6e31e0e0..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_SurvivalGameBegin.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_SurvivalGameBegin extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Survival Game Begin" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_SurvivalGameEnd.uc b/Development/Src/TgGame/Classes/TgSeqEvent_SurvivalGameEnd.uc deleted file mode 100755 index 2026fb9f..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_SurvivalGameEnd.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_SurvivalGameEnd extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Survival Game End" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_SurvivalGameEvent.uc b/Development/Src/TgGame/Classes/TgSeqEvent_SurvivalGameEvent.uc deleted file mode 100755 index 86446cca..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_SurvivalGameEvent.uc +++ /dev/null @@ -1,17 +0,0 @@ -class TgSeqEvent_SurvivalGameEvent extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - bClientSideOnly=true - OutputLinks(0)=(LinkDesc="PreFog",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="FogConverging",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="PostFog",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - //VariableLinks=none - ObjName="SurvivalGameEvent" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_TF1Win.uc b/Development/Src/TgGame/Classes/TgSeqEvent_TF1Win.uc deleted file mode 100755 index 98ae6a28..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_TF1Win.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_TF1Win extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Win - TF1" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_TF2Win.uc b/Development/Src/TgGame/Classes/TgSeqEvent_TF2Win.uc deleted file mode 100755 index 19a4dc95..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_TF2Win.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_TF2Win extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - ObjName="Win - TF2" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_TakeDamage.uc b/Development/Src/TgGame/Classes/TgSeqEvent_TakeDamage.uc deleted file mode 100755 index 6bf52aa7..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_TakeDamage.uc +++ /dev/null @@ -1,20 +0,0 @@ -class TgSeqEvent_TakeDamage extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -event HandleDamage(Actor InOriginator, Actor InInstigator, int inAmount, class inDamageType, TgDevice InDevice) -{ - //return; -} - -defaultproperties -{ - MaxTriggerCount=0 - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Damage Taken",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(2)=(ExpectedType=Class'TgSeqVar_DamageType',LinkDesc="Damage Type",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(3)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Device",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Paladins Take Damage" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_TaskForceInactive.uc b/Development/Src/TgGame/Classes/TgSeqEvent_TaskForceInactive.uc deleted file mode 100755 index 926721c9..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_TaskForceInactive.uc +++ /dev/null @@ -1,12 +0,0 @@ -class TgSeqEvent_TaskForceInactive extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Inactive Task Force",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Task Force Inactive" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_TaskForceScoreUpdated.uc b/Development/Src/TgGame/Classes/TgSeqEvent_TaskForceScoreUpdated.uc deleted file mode 100755 index a314275b..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_TaskForceScoreUpdated.uc +++ /dev/null @@ -1,17 +0,0 @@ -class TgSeqEvent_TaskForceScoreUpdated extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -var() int DefenderTaskForce; -var() int currentScore; - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - bClientSideOnly=true - OutputLinks(0)=(LinkDesc="Score Updated",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - //VariableLinks=none - ObjName="TaskForce Score Updated" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_TeamInactive.uc b/Development/Src/TgGame/Classes/TgSeqEvent_TeamInactive.uc deleted file mode 100755 index 6494a2e1..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_TeamInactive.uc +++ /dev/null @@ -1,12 +0,0 @@ -class TgSeqEvent_TeamInactive extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - bPlayerOnly=false - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Inactive Team",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Team Inactive" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_TicketCountUpdated.uc b/Development/Src/TgGame/Classes/TgSeqEvent_TicketCountUpdated.uc deleted file mode 100755 index ea7d87e5..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_TicketCountUpdated.uc +++ /dev/null @@ -1,14 +0,0 @@ -class TgSeqEvent_TicketCountUpdated extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="Pulse",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Threshold",LinkVar="None",PropertyName="m_fPercentTicketsThreshold",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Ticket Count Updated" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_TimeLapse.uc b/Development/Src/TgGame/Classes/TgSeqEvent_TimeLapse.uc deleted file mode 100755 index 7cd0d008..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_TimeLapse.uc +++ /dev/null @@ -1,15 +0,0 @@ -class TgSeqEvent_TimeLapse extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - bClientSideOnly=true - OutputLinks(0)=(LinkDesc="Pre Time Lapse",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Post Time Lapse",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - //VariableLinks=none - ObjName="TgSeqEvent_TimeLapse" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_Tutorial.uc b/Development/Src/TgGame/Classes/TgSeqEvent_Tutorial.uc deleted file mode 100755 index 2d515d66..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_Tutorial.uc +++ /dev/null @@ -1,49 +0,0 @@ -class TgSeqEvent_Tutorial extends SequenceEvent - forcescriptorder(true) - hidecategories(Object); - -enum EPaladinsTutorialEvent -{ - PTE_Started, - PTE_HelperSpawned, - PTE_MovingToAutoShootingRange, - PTE_PlayerReachedAutoShootingRange, - PTE_WaitingForMovementAbility, - PTE_ReceivedMovementAbility, - PTE_PlayerReachedUltimateShootingRange, - PTE_PlayerUltimateComplete, - PTE_PlayerReachedLowerJumpArea, - PTE_PlayerReachedUpperJumpArea, - PTE_PlayerReachedObjective, - PTE_MoveBotToCapturePoint, - PTE_MoveBotToPayload, - PTE_Complete, - //PTE_MAX -}; - -static function bool TriggerGlobal(Actor InInstigator, TgSeqEvent_Tutorial.EPaladinsTutorialEvent TutEvent) -{ - //return ReturnValue; -} - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="Tutorial Started",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Helper Bot Spawned",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="Moving to Auto Shooting Range",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(3)=(LinkDesc="Player Reached Auto Shooting Range",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(4)=(LinkDesc="Waiting for Movement Ability",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(5)=(LinkDesc="Received Movement Ability",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(6)=(LinkDesc="Player reached Ultimate Shooting Range",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(7)=(LinkDesc="Player completed Ultimate",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(8)=(LinkDesc="Player reached lower jump area",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(9)=(LinkDesc="Player reached upper jump area",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(10)=(LinkDesc="Player reached capture point",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(11)=(LinkDesc="Move Bot to contest capture point",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(12)=(LinkDesc="Move Bot to contest payload",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(13)=(LinkDesc="Tutorial Complete",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - ObjName="Paladins Tutorial" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_TutorialEvent.uc b/Development/Src/TgGame/Classes/TgSeqEvent_TutorialEvent.uc deleted file mode 100755 index 3b1362a7..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_TutorialEvent.uc +++ /dev/null @@ -1,51 +0,0 @@ -class TgSeqEvent_TutorialEvent extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -enum TUTORIAL_EVENT -{ - TUTEVT_OPENED_ITEM_SHOP, - TUTEVT_BOUGHT_ITEM, - TUTEVT_CLOSED_ITEM_SHOP, - TUTEVT_OPENED_SKILLS, - TUTEVT_BOUGHT_SKILL, - TUTEVT_CLOSED_SKILLS, - TUTEVT_USED_ABILITY, - TUTEVT_USED_RECALL, - TUTEVT_TARGETED, - TUTEVT_OPENED_INTRO, - TUTEVT_CLOSED_INTRO, - TUTEVT_USED_ACTIVE_ITEM, - TUTEVT_SELECTED_SHOP_ITEM, - TUTEVT_SELECTED_SHOP_ITEM2, - TUTEVT_SELECTED_SHOP_ITEM3, - TUTEVT_USED_CONSUMABLE_ITEM, - TUTEVT_SELECTED_ALL_ITEMS, - //TUTEVT_MAX -}; - -enum TUTORIAL_TARGET_TYPE -{ - TUT_TARGET_TOWER, - TUT_TARGET_PHOENIX, - TUT_TARGET_GUARDIAN, - //TUT_TARGET_MAX -}; - -var() TgSeqEvent_TutorialEvent.TUTORIAL_EVENT TutEvent; -var int EventData; - -static event int GetObjClassVersion() -{ - //return ReturnValue; -} - -defaultproperties -{ - MaxTriggerCount=0 - bPlayerOnly=false - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="EventData",LinkVar="None",PropertyName="EventData",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Smite Tutorial Events" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_UI_Event.uc b/Development/Src/TgGame/Classes/TgSeqEvent_UI_Event.uc deleted file mode 100755 index eaeb57b7..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_UI_Event.uc +++ /dev/null @@ -1,66 +0,0 @@ -class TgSeqEvent_UI_Event extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var int mDeckNum; -var int mEmptyItemSlots; - -event DeckUIInitialized(Actor InOriginator, Actor InInstigator) -{ - //return; -} - -event ItemUIInitialized(Actor InOriginator, Actor InInstigator) -{ - //return; -} - -event DeckMenuOpened(Actor InOriginator, Actor InInstigator) -{ - //return; -} - -event DeckChanged(Actor InOriginator, Actor InInstigator, int Deck) -{ - //return; -} - -event DeckSelected(Actor InOriginator, Actor InInstigator, int Deck) -{ - //return; -} - -event ItemMenuOpened(Actor InOriginator, Actor InInstigator) -{ - //return; -} - -event ItemPurchased(Actor InOriginator, Actor InInstigator, int EmptySlots) -{ - //return; -} - -event ItemUpgraded(Actor InOriginator, Actor InInstigator) -{ - //return; -} - -defaultproperties -{ - MaxTriggerCount=0 - bClientSideOnly=true - OutputLinks(0)=(LinkDesc="Deck UI Initialized",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Item UI Initialized",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(2)=(LinkDesc="Deck Menu Opened",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(3)=(LinkDesc="Deck Changed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(4)=(LinkDesc="Deck Selected",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(5)=(LinkDesc="Item Menu Opened",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(6)=(LinkDesc="Item Purchased",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(7)=(LinkDesc="Item Upgraded",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Deck Number",LinkVar="None",PropertyName="mDeckNum",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(2)=(ExpectedType=Class'Engine.SeqVar_Int',LinkDesc="Empty Item Slots",LinkVar="None",PropertyName="mEmptyItemSlots",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Tutorial UI Event" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_UpdateLanePusherCount.uc b/Development/Src/TgGame/Classes/TgSeqEvent_UpdateLanePusherCount.uc deleted file mode 100755 index 68067e27..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_UpdateLanePusherCount.uc +++ /dev/null @@ -1,16 +0,0 @@ -class TgSeqEvent_UpdateLanePusherCount extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() int Taskforce; - -defaultproperties -{ - bPlayerOnly=false - OutputLinks(0)=(LinkDesc="Died",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - OutputLinks(1)=(LinkDesc="Spawned",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) - //VariableLinks=none - ObjName="Update LanePusher Count" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_Used.uc b/Development/Src/TgGame/Classes/TgSeqEvent_Used.uc deleted file mode 100755 index fc2428cf..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_Used.uc +++ /dev/null @@ -1,13 +0,0 @@ -class TgSeqEvent_Used extends SequenceEvent - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - MaxTriggerCount=0 - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Object',LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Distance",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="TgSeqEvent_Used" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqEvent_VaultLowHealth.uc b/Development/Src/TgGame/Classes/TgSeqEvent_VaultLowHealth.uc deleted file mode 100755 index 5c27252d..00000000 --- a/Development/Src/TgGame/Classes/TgSeqEvent_VaultLowHealth.uc +++ /dev/null @@ -1,10 +0,0 @@ -class TgSeqEvent_VaultLowHealth extends SequenceEvent - native - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - ObjName="TgSeqEvent_VaultLowHealth" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqOp_MathCalc.uc b/Development/Src/TgGame/Classes/TgSeqOp_MathCalc.uc deleted file mode 100755 index 73294daa..00000000 --- a/Development/Src/TgGame/Classes/TgSeqOp_MathCalc.uc +++ /dev/null @@ -1,19 +0,0 @@ -class TgSeqOp_MathCalc extends SequenceCondition - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var float m_fResult; - -defaultproperties -{ - InputLinks(0)=(LinkDesc="Add",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(1)=(LinkDesc="Subtract",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(2)=(LinkDesc="Multiply",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - InputLinks(3)=(LinkDesc="Divide",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(0)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Initial",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Inputs",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - VariableLinks(2)=(ExpectedType=Class'Engine.SeqVar_Float',LinkDesc="Ouput",LinkVar="None",PropertyName="m_fResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) - ObjName="Math Calc" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqVar_DamageType.uc b/Development/Src/TgGame/Classes/TgSeqVar_DamageType.uc deleted file mode 100755 index 98dce9f6..00000000 --- a/Development/Src/TgGame/Classes/TgSeqVar_DamageType.uc +++ /dev/null @@ -1,12 +0,0 @@ -class TgSeqVar_DamageType extends SequenceVariable - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var() class DamageTypeValue; - -defaultproperties -{ - ObjName="Damage Type" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqVar_Player.uc b/Development/Src/TgGame/Classes/TgSeqVar_Player.uc deleted file mode 100755 index b1c84973..00000000 --- a/Development/Src/TgGame/Classes/TgSeqVar_Player.uc +++ /dev/null @@ -1,21 +0,0 @@ -class TgSeqVar_Player extends SeqVar_Player - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -var transient array HumanPlayers; -var transient array BotPlayers; -var transient array PetPlayers; -var() bool bAllBots; -var() bool bAllHumans; -var() bool bAllHumansAndPets; -var() int nTaskForceNumber; - -defaultproperties -{ - bAllHumans=true - nTaskForceNumber=-1 - bAllPlayers=false - ObjName="TgPlayer" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSeqVar_RouteNumber.uc b/Development/Src/TgGame/Classes/TgSeqVar_RouteNumber.uc deleted file mode 100755 index ddb72c6f..00000000 --- a/Development/Src/TgGame/Classes/TgSeqVar_RouteNumber.uc +++ /dev/null @@ -1,11 +0,0 @@ -class TgSeqVar_RouteNumber extends SeqVar_Int - native(Kismet) - forcescriptorder(true) - hidecategories(Object); - -defaultproperties -{ - IntValue=-1 - ObjName="RouteNumber" - ObjCategory="TgGame" -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgSpectatorController.uc b/Development/Src/TgGame/Classes/TgSpectatorController.uc deleted file mode 100755 index 61f95ce4..00000000 --- a/Development/Src/TgGame/Classes/TgSpectatorController.uc +++ /dev/null @@ -1,38 +0,0 @@ -class TgSpectatorController extends TgPlayerController - native(Pawns) - config(Game) - hidecategories(Navigation); - -enum SpectatorCameraMode -{ - SpecCam_None, // 0 - SpecCam_Fly, // 1 - SpecCam_FollowThirdPerson, // 2 - SpecCam_FollowFirstPerson, // 3 - SpecCam_FollowTopDown, // 4 - SpecCam_Camera, // 5 - SpecCam_Overview, // 6 - SpecCam_LockedView, // 7 -}; - -enum ESpectatorMode -{ - SPECMODE_Manual, // 0 - SPECMODE_Director, // 1 - SPECMODE_Assisted, // 2 - SPECMODE_Broadcast1, // 3 - SPECMODE_Broadcast2, // 4 - SPECMODE_Broadcast3, // 5 - SPECMODE_Broadcast4, // 6 -}; - -var transient TgSpectatorController.ESpectatorMode m_CurrentSpectatorMode; - -simulated function ForwardToSpectatingMatch() {} -simulated event PostBeginPlay(){} -exec function SpecViewPlayer(string PlayerName){} -exec function SetSpectatorCameraMode(TgSpectatorController.SpectatorCameraMode Mode, optional bool bCameraTween = false){} -function TgSpectatorController.SpectatorCameraMode GetDefaultModeFor(Actor Target){} - -function SpectatorSetViewTarget(Actor VT, optional ViewTargetTransitionParams TransitionParams){} -function UpdateViewTargetUI(){} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgStartPoint.uc b/Development/Src/TgGame/Classes/TgStartPoint.uc deleted file mode 100755 index 284029f6..00000000 --- a/Development/Src/TgGame/Classes/TgStartPoint.uc +++ /dev/null @@ -1,5 +0,0 @@ -class TgStartPoint extends PlayerStart - native(Navigation) - hidecategories(Navigation,Lighting,LightColor,Force,Collision); - -simulated function AdjustRating(){} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgTeamPlayerStart.uc b/Development/Src/TgGame/Classes/TgTeamPlayerStart.uc deleted file mode 100755 index ee62bc13..00000000 --- a/Development/Src/TgGame/Classes/TgTeamPlayerStart.uc +++ /dev/null @@ -1,73 +0,0 @@ -class TgTeamPlayerStart extends TgStartPoint - native(Navigation) - hidecategories(Navigation,Lighting,LightColor,Force,Collision); - - -var() byte m_nTaskForce; -var() int m_nPriority; -var() int nPrevPriority; -var() float m_fMaxDistForEnemyCheckUU; -var() float m_fMaxWeightForEnemyDistanceCheck; -var() float m_fMaxDistForAllyCheckUU; -var() float m_fMinDistForAllyCheckUU; -var() float m_fMaxWeightForAllyDistanceCheck; -var() float m_fRandomRatingWeighting; -var() bool m_bInitialSpawnOnly; -var() bool m_bDisallowEnemyLOS; -var float m_fExtraHeightToTraceTo; -var editconst int m_nMinLevel; -var transient float m_fLastUsedTimeStamp; -var array s_AssignedPlayers; - -// Export UTgTeamPlayerStart::execLoadObjectConfig(FFrame&, void* const) -native function LoadObjectConfig(); - -// Export UTgTeamPlayerStart::execIsAssignedToPlayer(FFrame&, void* const) -native final function bool IsAssignedToPlayer(); - -// Export UTgTeamPlayerStart::execAreaUnoccupied(FFrame&, void* const) -native final function bool AreaUnoccupied(); - -// Export UTgTeamPlayerStart::execNativeGetRating(FFrame&, void* const) -native function float NativeGetRating(Controller Player, float fRating); - -// Export UTgTeamPlayerStart::execGetSpawnRotationFor(FFrame&, void* const) -native function Rotator GetSpawnRotationFor(Pawn TgP); - -event int GetSupportedTaskforce() -{ - local TgRepInfo_Game GRI; - - GRI = TgRepInfo_Game(WorldInfo.GRI); - // End:0x15D - if(GRI != none) - { - // End:0x151 - if(true) - { - // End:0x151 - if(GRI.r_AttackingTaskForce != none) - { - // End:0x10B - if(int(m_nTaskForce) == 1) - { - return int(GRI.r_AttackingTaskForce.r_nTaskForce); - } - else - { - // End:0x14F - if(int(GRI.r_AttackingTaskForce.r_nTaskForce) == 1) - { - return 2; - } - else - { - return 1; - } - } - } - } - return int(m_nTaskForce); - } - //return ReturnValue; -} \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgTimerManager.uc b/Development/Src/TgGame/Classes/TgTimerManager.uc deleted file mode 100755 index 88414629..00000000 --- a/Development/Src/TgGame/Classes/TgTimerManager.uc +++ /dev/null @@ -1,48 +0,0 @@ -class TgTimerManager extends Object - native; - - -// Export UTgTimerManager::execStart(FFrame&, void* const) -native function bool Start(int byTimerIndex, float fTime, optional bool bRepeat = false, optional bool bPausedByGame = true, optional float Rate = 1.0000000); - -// Export UTgTimerManager::execUpdate(FFrame&, void* const) -native function bool Update(int byTimerIndex, float fTime, optional float fTimeInitial = -1.0000000, optional float Rate = 1.0000000); - -// Export UTgTimerManager::execPause(FFrame&, void* const) -native function bool Pause(int byTimerIndex, float fTime); - -// Export UTgTimerManager::execClose(FFrame&, void* const) -native function bool Close(int byTimerIndex, optional bool bFireEvent = true); - -// Export UTgTimerManager::execIsSet(FFrame&, void* const) -native simulated function bool IsSet(int byTimerIndex); - -// Export UTgTimerManager::execIsPaused(FFrame&, void* const) -native simulated function bool IsPaused(int byTimerIndex); - -// Export UTgTimerManager::execGetTimeElapsed(FFrame&, void* const) -native simulated function float GetTimeElapsed(int byTimerIndex); - -// Export UTgTimerManager::execGetTimeRemaining(FFrame&, void* const) -native simulated function float GetTimeRemaining(int byTimerIndex); - -// Export UTgTimerManager::execGetPercentRemaining(FFrame&, void* const) -native simulated function float GetPercentRemaining(int byTimerIndex); - -// Export UTgTimerManager::execGetTimeInitial(FFrame&, void* const) -native simulated function float GetTimeInitial(int byTimerIndex); - -// Export UTgTimerManager::execSetRate(FFrame&, void* const) -native simulated function SetRate(int TimerIndex, float Rate); - -// Export UTgTimerManager::execRegisterForEvents(FFrame&, void* const) -native simulated function bool RegisterForEvents(int byTimerIndex, Object HostObject, name nmFunc); - -// Export UTgTimerManager::execUnRegisterForEvents(FFrame&, void* const) -native simulated function bool UnRegisterForEvents(int byTimerIndex, Object HostObject); - -// Export UTgTimerManager::execIsActiveTimers(FFrame&, void* const) -native simulated function bool IsActiveTimers(); - -// Export UTgTimerManager::execCloseAllTimers(FFrame&, void* const) -native simulated function CloseAllTimers(optional bool bFireEvent = true); \ No newline at end of file diff --git a/Development/Src/TgGame/Classes/TgWeaponMeshActor.uc b/Development/Src/TgGame/Classes/TgWeaponMeshActor.uc deleted file mode 100755 index 66ee86d5..00000000 --- a/Development/Src/TgGame/Classes/TgWeaponMeshActor.uc +++ /dev/null @@ -1,7 +0,0 @@ -class TgWeaponMeshActor extends Actor - native - notplaceable - hidecategories(Navigation); - -// Export UTgWeaponMeshActor::execGetMeshAsmIds(FFrame&, void* const) -native static function GetMeshAsmIds(int DeviceID, out int MeshId1P, out int MeshId3P); \ No newline at end of file diff --git a/Development/Src/TgMod/Classes/TempestProxyActor.uc b/Development/Src/TgMod/Classes/TempestProxyActor.uc deleted file mode 100755 index 429b5fba..00000000 --- a/Development/Src/TgMod/Classes/TempestProxyActor.uc +++ /dev/null @@ -1,51 +0,0 @@ -class TempestProxyActor extends Actor; - -simulated reliable client function ClientAddCheats() { - local TgPlayerController PC; - PC = TgPlayerController(Owner); - - PC.CheatClass = Class'TgGame.TgBattleCheatManager'; - if(PC.CheatManager == none) { - PC.CheatManager = new (PC) Class'TgGame.TgBattleCheatManager'; - if(PC.CheatManager != none) { - PC.CheatManager.InitCheatManager(); - `Log((("TempestProxyActor: CheatManager successfully created and initialized : " @ string(PC.CheatManager.Name)) @ ":") @ string(PC.CheatManager.Outer.Name)); - } else { - `Log("TempestProxyActor: Failed to create CheatManager!"); - } - } -} - -function ServerAddCheats() { - if (Role == ROLE_Authority) { - ClientAddCheats(); - } - ClientAddCheats(); -} - -simulated reliable client function ClientConsoleCommand(string Command, optional bool bWriteToLog) { - local TgBattleCheatManager CM; - - CM = TgBattleCheatManager(TgPlayerController(Owner).CheatManager); - if (CM != none) { - CM.Outer.ConsoleCommand(Command, bWriteToLog); - } else { - `Log("TempestProxyActor: No cheat manager found"); - } -} - -simulated reliable client function ClientPrecacheClass(string godName, optional string skinName, optional string weaponSkinName) { - ClientConsoleCommand("PrecacheClass" @ godName @ skinName @ weaponSkinName); -} - -simulated reliable client function ClientTestPrecache(int nBotId, int nSkinId, int nWeaponSkinId, int nHeadId, optional bool bAll = false) { - ClientConsoleCommand("TestPrecache" @ nBotId @ nSkinId @ nWeaponSkinId @ nHeadId @ "true"); -} - -public simulated reliable client function talkToClient(string message) { - `log("The server said to me :" @ message); -} - -defaultproperties { - bOnlyRelevantToOwner=true -} \ No newline at end of file diff --git a/Development/Src/TgMod/Classes/TempestUtils.uc b/Development/Src/TgMod/Classes/TempestUtils.uc deleted file mode 100755 index 07bab56f..00000000 --- a/Development/Src/TgMod/Classes/TempestUtils.uc +++ /dev/null @@ -1,159 +0,0 @@ -class TempestUtils extends Object - abstract - config(TempestUtils); - -var config string CachedName; -var config string CachedCharacter; - -static function TempestProxyActor SetupProxy(TgPlayerController PC) { - local TempestProxyActor ProxyActor; - - ProxyActor = PC.Spawn(Class'TgMod.TempestProxyActor', PC); - if (ProxyActor != none) { - ProxyActor.SetOwner(PC); - - return ProxyActor; - } else { - `log("Failed to spawn proxy actor"); - return none; - } -} - -static event NavigationPoint GetReviveLocation(TgGame Game, Controller Player, out Vector OutLocation, out Rotator OutRotation) -{ - local NavigationPoint RestartNavPoint; - local TgTeamPlayerStart TPS; - local Vector Forward; - - RestartNavPoint = Game.FindPlayerStart(Player); - // End:0x117 - if(RestartNavPoint != none) - { - OutLocation = RestartNavPoint.Location; - OutRotation = RestartNavPoint.Rotation; - // End:0x114 - if(Player.Pawn != none) - { - TPS = TgTeamPlayerStart(RestartNavPoint); - // End:0x114 - if(TPS != none) - { - OutRotation = TPS.GetSpawnRotationFor(Player.Pawn); - } - } - } - - // End:0x1B8 - if(Player.Pawn != none) - { - OutLocation = Player.Pawn.Location; - OutRotation = Player.Pawn.Rotation; - } - else - { - // End:0x217 - if(Player != none) - { - OutLocation = Player.Location; - OutRotation = Player.Rotation; - } - } - - Forward = Vector(OutRotation); - // End:0x26C - if(Forward.Z < 1.0000000) - { - OutRotation = Rotator(Normal2D(Forward)); - } - else - { - OutRotation = MakeRotator(0, 0, 0); - } - return RestartNavPoint; - //return ReturnValue; -} - -static function SetupPRI(TgGame Game, TgRepInfo_Player PRI, int Address, string PlayerName, int taskforce, int mountId, int titleId, optional bool spectator) { - local TgPlayerController PC; - PC = TgPlayerController(PRI.Owner); - - if(taskforce == 3) spectator = true; - - PC.s_nPlayerId = Address; - PC.s_qwNetAccessFlags.A = 0xFFFFFFFF; - PC.s_qwNetAccessFlags.B = 0xFFFFFFFF; - - PRI.UniqueId.Uid.A = PC.s_nPlayerId; - PRI.r_nPlayerId = PC.s_nPlayerId; - PRI.PlayerName = PlayerName; - //PRI.r_nPawnId = PC.s_nPlayerId; - - PC.m_nVoicePackId = 13450; - PRI.r_nMountSkinId = mountId; - PRI.r_nEquippedTitleId = titleId; - //PRI.r_nVoicePackId = 13450; - - PRI.SetTaskForceNumber(taskforce, true); - - PRI.bOnlySpectator = false; - PRI.bIsSpectator = false; - PRI.bReadyToPlay = true; - PRI.bWaitingPlayer = false; - PRI.bAdmin = true; -} - -static function SetupSpectatorPRI(TgDemoRecSpectator PC, TgRepInfo_Player PRI, int Address, string PlayerName, int taskforce) { - - PC.s_nPlayerId = Address; - PC.s_qwNetAccessFlags.A = 0xFFFFFFFF; - PC.s_qwNetAccessFlags.B = 0xFFFFFFFF; - - PRI.UniqueId.Uid.A = PC.s_nPlayerId; - PRI.r_nPlayerId = PC.s_nPlayerId; - PRI.PlayerName = PlayerName; - //PRI.r_nPawnId = PC.s_nPlayerId; - - PRI.SetTaskForceNumber(255, true); - - PRI.bOnlySpectator = true; - PRI.bIsSpectator = true; - PRI.bReadyToPlay = true; - PRI.bWaitingPlayer = false; -} - -static function SpawnPawn(TgGame Game, TgPlayerController PC, int BotId, int SkinId, int DeviceSkinId, int HeadId, int mountId) { - local TgPawn SpawnedPawn; - local NavigationPoint PlayerStart; - local Vector OutLocation; - local Rotator OutRotation; - local TgPawn_Character CharacterPawn; - - PlayerStart = GetReviveLocation(Game, PC, OutLocation, OutRotation); - - Game.EnsureBotPrecache(BotId, SkinId, HeadId, DeviceSkinId); - SpawnedPawn = TgPawn(Game.SpawnDefaultPawnFor(PC, PlayerStart)); - SpawnedPawn.PostPawnSetupServer(); - - if(SpawnedPawn != none) { - PC.Possess(SpawnedPawn, true); - PC.AcknowledgePossession(SpawnedPawn); - - PC.WorldInfo.NetMode = NM_Standalone; - SpawnedPawn = Game.SpawnTemplatePlayer(PC, BotId, SkinId, DeviceSkinId, HeadId); - PC.WorldInfo.NetMode = NM_DedicatedServer; - - if(SpawnedPawn != none) { - CharacterPawn = TgPawn_Character(SpawnedPawn); - CharacterPawn.r_nMountSkinId = mountId; - //CharacterPawn.r_nVoicePackId = 13450; - CharacterPawn.ApplyPawnSetup(); - CharacterPawn.PostPawnSetup(); - PC.Possess(CharacterPawn, true); - PC.AcknowledgePossession(CharacterPawn); - } else { - `log("TempestUtils: Failed to spawn pawn 2"); - } - } else { - `log("TempestUtils: Failed to spawn pawn"); - } -} \ No newline at end of file diff --git a/Development/Src/TgMod/Classes/TgModGameViewportClient.uc b/Development/Src/TgMod/Classes/TgModGameViewportClient.uc deleted file mode 100755 index 7ebae5d9..00000000 --- a/Development/Src/TgMod/Classes/TgModGameViewportClient.uc +++ /dev/null @@ -1,118 +0,0 @@ -class TgModGameViewportClient extends TgGameViewportClient within Engine; - -var TgPlayerController m_TgPC; -var float CurrentTime, StartTime; -var bool bHasStarted; - -var TempestProxyActor ProxyActor; - -function PostRender(Canvas Canvas) -{ - super.PostRender(Canvas); - - // Access TimeSeconds from PlayerController's WorldInfo - - m_TgPC = TgPlayerController(self.GetPlayerOwner(0).Actor); - if (m_TgPC == None || m_TgPC.WorldInfo == None) - { - return; - } - - CurrentTime = m_TgPC.WorldInfo.TimeSeconds; - - // Set StartTime once - if (!bHasStarted) - { - StartTime = CurrentTime; - bHasStarted = true; - } - - // Only draw for 20 seconds - if (CurrentTime - StartTime < 20) - { - Canvas.SetDrawColor(0,255,0,255); - Canvas.SetPos(49, 50); - Canvas.DrawText("TEMPEST LAUNCHER"); - Canvas.SetPos(50, 65); - Canvas.DrawText("F1: ENTER SHOOTING RANGE"); - Canvas.SetPos(50, 80); - Canvas.DrawText("F2: OPEN CONSOLE"); - } - - findPCAndAttachCM(); -} - -event bool Init(out string OutError) -{ - // Create the viewport's console. - - ViewportConsole = new(Self) class'Engine.Console'; - - if ( InsertInteraction(ViewportConsole) == -1 ) - { - OutError = "Failed to add interaction to GlobalInteractions array:" @ ViewportConsole; - return false; - } - - SetConsoleTarget(0); - - return super.Init(OutError); -} - -/** - * Sets the player which console commands will be executed in the context of. - */ -exec function SetConsoleTarget(int PlayerIndex) -{ - if (ViewportConsole != none) - { - if(PlayerIndex >= 0 && PlayerIndex < GamePlayers.Length) - { - ViewportConsole.ConsoleTargetPlayer = GamePlayers[PlayerIndex]; - } - else - { - ViewportConsole.ConsoleTargetPlayer = None; - } - } -} - -public function findPCAndAttachCM() { - m_TgPC = TgPlayerController(self.GetPlayerOwner(0).Actor); - - if (m_TgPC.CheatManager == None) { - ProxyActor = Class'TempestUtils'.static.SetupProxy(m_TgPC); - m_TgPC.CheatClass = class'TgBattleCheatManager'; - m_TgPC.CheatManager = new(m_TgPC) class'TgBattleCheatManager'; - if (m_TgPC.CheatManager != None) { - m_TgPC.CheatManager.InitCheatManager(); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_evie m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_grover m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_longbow m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_cassie m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_pip m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_bombking m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_barik m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_makoa m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_barriertank m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_darklord m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_Fairy m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_Flak m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_MalDamba m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_Oracle m_bAirAccuracyPenalty False"); - //hitscans - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_astro m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_Kinessa m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_lex m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_owl m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_ruckus m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_skye m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_tyra m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_viktor m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("setclientvalue Default__TgPawn_ying m_bAirAccuracyPenalty False"); - m_TgPC.ConsoleCommand("changetaskforce 1"); - } else { - `Log("Failed to create CheatManager!"); - } - } -} \ No newline at end of file diff --git a/Development/Src/UTEditor/Classes/UTEditor.uc b/Development/Src/UTEditor/Classes/UTEditor.uc new file mode 100644 index 00000000..ce7a5f26 --- /dev/null +++ b/Development/Src/UTEditor/Classes/UTEditor.uc @@ -0,0 +1,2 @@ +class UtEditor extends Object + abstract; \ No newline at end of file diff --git a/UDKGame/Config/DefaultEngine.ini b/UDKGame/Config/DefaultEngine.ini index 606bb463..cc19cb7c 100644 --- a/UDKGame/Config/DefaultEngine.ini +++ b/UDKGame/Config/DefaultEngine.ini @@ -2,9 +2,9 @@ BasedOn=..\UDKGame\Config\DefaultEngineUDK.ini [UnrealEd.EditorEngine] -+EditPackages=AkAudio -+EditPackages=PlatformCommon -+EditPackages=TgGame -+EditPackages=TgClient -+EditPackages=TgMod -+EditPackages=TempestMp +; +EditPackages=AkAudio +; +EditPackages=PlatformCommon +; +EditPackages=TgGame +; +EditPackages=TgClient +; +EditPackages=TgMod +; +EditPackages=TempestMp From a0341f4f3cd4cf15e49040456eeaf265e2b9c337 Mon Sep 17 00:00:00 2001 From: Tom Ferriere Date: Mon, 3 Aug 2026 03:20:27 +0200 Subject: [PATCH 02/73] uteditor proper class name --- Development/Src/UTEditor/Classes/UTEditor.uc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Development/Src/UTEditor/Classes/UTEditor.uc b/Development/Src/UTEditor/Classes/UTEditor.uc index ce7a5f26..c956c943 100644 --- a/Development/Src/UTEditor/Classes/UTEditor.uc +++ b/Development/Src/UTEditor/Classes/UTEditor.uc @@ -1,2 +1,2 @@ -class UtEditor extends Object +class UTEditor extends Object abstract; \ No newline at end of file From a76debdce11ce9778271cf909c7eeb6df10993e5 Mon Sep 17 00:00:00 2001 From: Tom Ferriere Date: Mon, 3 Aug 2026 05:09:46 +0200 Subject: [PATCH 03/73] add 0.57 exported files from UE Explorer --- .gitignore | 2 + exported/.DS_Store | Bin 0 -> 8196 bytes .../Classes/ActorFactoryAkAmbientSound.uc | 14 + exported/AkAudio/Classes/AkAmbientSound.uc | 14 + exported/AkAudio/Classes/AkAudio.UPKG | 4 + exported/AkAudio/Classes/AkComponent.uc | 9 + .../AkAudio/Classes/InterpTrackAkEvent.uc | 24 + exported/AkAudio/Classes/InterpTrackAkRTPC.uc | 12 + .../AkAudio/Classes/InterpTrackInstAkEvent.uc | 4 + .../AkAudio/Classes/InterpTrackInstAkRTPC.uc | 2 + .../AkAudio/Classes/SeqAct_AkClearBanks.uc | 11 + exported/AkAudio/Classes/SeqAct_AkLoadBank.uc | 19 + .../AkAudio/Classes/SeqAct_AkPostEvent.uc | 14 + .../AkAudio/Classes/SeqAct_AkPostTrigger.uc | 12 + .../AkAudio/Classes/SeqAct_AkSetRTPCValue.uc | 18 + exported/AkAudio/Classes/SeqAct_AkSetState.uc | 14 + .../AkAudio/Classes/SeqAct_AkSetSwitch.uc | 13 + .../Classes/SeqAct_AkStartAmbientSound.uc | 13 + exported/AkAudio/Classes/SeqAct_AkStopAll.uc | 11 + .../BattleClient/Classes/BattleClient.UPKG | 4 + exported/BattleClient/Classes/BattleHUD.uc | 17 + exported/BattleClient/Classes/BattleLaunch.uc | 10 + exported/BattleGame/Classes/BattleGame.UPKG | 4 + exported/BattleGame/Classes/BattleObject.uc | 2 + .../Classes/BattlePlayerController.uc | 21 + exported/Core/Classes/Commandlet.uc | 28 + exported/Core/Classes/Component.uc | 6 + exported/Core/Classes/Core.UPKG | 4 + exported/Core/Classes/DistributionFloat.uc | 30 + exported/Core/Classes/DistributionVector.uc | 42 + exported/Core/Classes/Factory.uc | 15 + exported/Core/Classes/HelpCommandlet.uc | 21 + exported/Core/Classes/Interface.uc | 3 + exported/Core/Classes/Object.uc | 2193 +++ exported/Core/Classes/Subsystem.uc | 6 + exported/Engine/Classes/AICommandBase.uc | 10 + exported/Engine/Classes/AIController.uc | 274 + exported/Engine/Classes/AISwitchablePylon.uc | 48 + exported/Engine/Classes/AccessControl.uc | 1486 ++ exported/Engine/Classes/Actor.uc | 2813 +++ exported/Engine/Classes/ActorComponent.uc | 32 + exported/Engine/Classes/ActorFactory.uc | 28 + exported/Engine/Classes/ActorFactoryAI.uc | 20 + exported/Engine/Classes/ActorFactoryActor.uc | 14 + .../Classes/ActorFactoryAmbientSound.uc | 16 + .../ActorFactoryAmbientSoundMovable.uc | 14 + .../ActorFactoryAmbientSoundNonLoop.uc | 13 + ...FactoryAmbientSoundNonLoopingToggleable.uc | 12 + .../Classes/ActorFactoryAmbientSoundSimple.uc | 15 + ...ctorFactoryAmbientSoundSimpleToggleable.uc | 13 + .../Classes/ActorFactoryApexClothing.uc | 17 + .../Classes/ActorFactoryApexDestructible.uc | 20 + .../Engine/Classes/ActorFactoryArchetype.uc | 13 + .../Engine/Classes/ActorFactoryCoverLink.uc | 13 + exported/Engine/Classes/ActorFactoryDecal.uc | 15 + .../Classes/ActorFactoryDecalMovable.uc | 12 + .../ActorFactoryDominantDirectionalLight.uc | 13 + ...rFactoryDominantDirectionalLightMovable.uc | 12 + .../Engine/Classes/ActorFactoryDynamicSM.uc | 23 + .../Engine/Classes/ActorFactoryEmitter.uc | 15 + ...ctorFactoryFogVolumeConstantDensityInfo.uc | 15 + ...toryFogVolumeLinearHalfspaceDensityInfo.uc | 12 + ...torFactoryFogVolumeSphericalDensityInfo.uc | 12 + .../ActorFactoryFracturedStaticMesh.uc | 17 + .../Classes/ActorFactoryInteractiveFoliage.uc | 13 + .../Engine/Classes/ActorFactoryLensFlare.uc | 14 + exported/Engine/Classes/ActorFactoryLight.uc | 14 + exported/Engine/Classes/ActorFactoryMover.uc | 13 + .../Engine/Classes/ActorFactoryPathNode.uc | 13 + .../Classes/ActorFactoryPhysicsAsset.uc | 27 + .../Engine/Classes/ActorFactoryPlayerStart.uc | 14 + exported/Engine/Classes/ActorFactoryPylon.uc | 13 + .../Engine/Classes/ActorFactoryRigidBody.uc | 33 + .../Classes/ActorFactorySkeletalMesh.uc | 18 + .../ActorFactorySkeletalMeshCinematic.uc | 12 + .../Classes/ActorFactorySkeletalMeshMAT.uc | 12 + .../Engine/Classes/ActorFactoryStaticMesh.uc | 17 + .../Engine/Classes/ActorFactoryTrigger.uc | 13 + .../Engine/Classes/ActorFactoryVehicle.uc | 14 + exported/Engine/Classes/Admin.uc | 103 + exported/Engine/Classes/AdvancedReachSpec.uc | 7 + exported/Engine/Classes/AkBank.uc | 12 + exported/Engine/Classes/AkBaseSoundObject.uc | 3 + exported/Engine/Classes/AkEvent.uc | 8 + .../Engine/Classes/AmbientOcclusionEffect.uc | 54 + exported/Engine/Classes/AmbientSound.uc | 26 + .../Engine/Classes/AmbientSoundMovable.uc | 22 + .../Engine/Classes/AmbientSoundNonLoop.uc | 29 + .../AmbientSoundNonLoopingToggleable.uc | 28 + exported/Engine/Classes/AmbientSoundSimple.uc | 32 + .../Classes/AmbientSoundSimpleSpline.uc | 28 + .../AmbientSoundSimpleSplineNonLoop.uc | 27 + .../Classes/AmbientSoundSimpleToggleable.uc | 156 + exported/Engine/Classes/AmbientSoundSpline.uc | 27 + .../Classes/AmbientSoundSplineMultiCue.uc | 28 + exported/Engine/Classes/AnalyticEventsBase.uc | 78 + exported/Engine/Classes/AnimMetaData.uc | 6 + .../Classes/AnimMetaData_SkelControl.uc | 14 + .../AnimMetaData_SkelControlKeyFrame.uc | 14 + exported/Engine/Classes/AnimNode.uc | 83 + .../Classes/AnimNodeAdditiveBlending.uc | 17 + exported/Engine/Classes/AnimNodeAimOffset.uc | 142 + exported/Engine/Classes/AnimNodeBlend.uc | 19 + exported/Engine/Classes/AnimNodeBlendBase.uc | 52 + .../Engine/Classes/AnimNodeBlendByBase.uc | 24 + .../Engine/Classes/AnimNodeBlendByPhysics.uc | 25 + .../Engine/Classes/AnimNodeBlendByPosture.uc | 9 + .../Engine/Classes/AnimNodeBlendByProperty.uc | 31 + .../Engine/Classes/AnimNodeBlendBySpeed.uc | 25 + .../Classes/AnimNodeBlendDirectional.uc | 20 + exported/Engine/Classes/AnimNodeBlendList.uc | 22 + .../Engine/Classes/AnimNodeBlendMultiBone.uc | 35 + .../Engine/Classes/AnimNodeBlendPerBone.uc | 17 + exported/Engine/Classes/AnimNodeCrossfader.uc | 19 + exported/Engine/Classes/AnimNodeFrame.uc | 23 + exported/Engine/Classes/AnimNodeMirror.uc | 12 + .../Engine/Classes/AnimNodePlayCustomAnim.uc | 80 + exported/Engine/Classes/AnimNodeRandom.uc | 38 + .../Engine/Classes/AnimNodeScalePlayRate.uc | 12 + .../Classes/AnimNodeScaleRateBySpeed.uc | 11 + exported/Engine/Classes/AnimNodeSequence.uc | 148 + .../Classes/AnimNodeSequenceBlendBase.uc | 40 + .../Classes/AnimNodeSequenceBlendByAim.uc | 36 + exported/Engine/Classes/AnimNodeSlot.uc | 57 + exported/Engine/Classes/AnimNodeSynch.uc | 47 + .../Classes/AnimNode_MultiBlendPerBone.uc | 98 + exported/Engine/Classes/AnimNotify.uc | 55 + exported/Engine/Classes/AnimNotify_AkEvent.uc | 20 + .../Engine/Classes/AnimNotify_CameraEffect.uc | 7 + .../AnimNotify_ClothingMaxDistanceScale.uc | 16 + .../Engine/Classes/AnimNotify_Footstep.uc | 9 + .../Engine/Classes/AnimNotify_ForceField.uc | 10 + exported/Engine/Classes/AnimNotify_Kismet.uc | 7 + .../Classes/AnimNotify_PawnMaterialParam.uc | 33 + .../Classes/AnimNotify_PlayFaceFXAnim.uc | 55 + .../Classes/AnimNotify_PlayParticleEffect.uc | 32 + exported/Engine/Classes/AnimNotify_Rumble.uc | 10 + exported/Engine/Classes/AnimNotify_Script.uc | 9 + .../Engine/Classes/AnimNotify_Scripted.uc | 16 + exported/Engine/Classes/AnimNotify_Sound.uc | 27 + exported/Engine/Classes/AnimNotify_Trails.uc | 81 + .../Engine/Classes/AnimNotify_ViewShake.uc | 71 + exported/Engine/Classes/AnimObject.uc | 6 + exported/Engine/Classes/AnimSequence.uc | 167 + exported/Engine/Classes/AnimSet.uc | 57 + exported/Engine/Classes/AnimTree.uc | 151 + .../Classes/AnimationCompressionAlgorithm.uc | 15 + ...AnimationCompressionAlgorithm_Automatic.uc | 22 + ...ompressionAlgorithm_BitwiseCompressOnly.uc | 8 + ...onCompressionAlgorithm_LeastDestructive.uc | 9 + ...ompressionAlgorithm_PerTrackCompression.uc | 47 + ...mpressionAlgorithm_RemoveEverySecondKey.uc | 12 + ...onCompressionAlgorithm_RemoveLinearKeys.uc | 26 + ...nCompressionAlgorithm_RemoveTrivialKeys.uc | 13 + ...imationCompressionAlgorithm_RevertToRaw.uc | 9 + exported/Engine/Classes/ApexAsset.uc | 6 + exported/Engine/Classes/ApexClothingAsset.uc | 54 + exported/Engine/Classes/ApexComponentBase.uc | 22 + .../Engine/Classes/ApexDestructibleActor.uc | 82 + .../Classes/ApexDestructibleActorSpawnable.uc | 25 + .../Engine/Classes/ApexDestructibleAsset.uc | 181 + .../ApexDestructibleDamageParameters.uc | 40 + .../Engine/Classes/ApexDynamicComponent.uc | 11 + exported/Engine/Classes/ApexGenericAsset.uc | 5 + .../Engine/Classes/ApexStaticComponent.uc | 10 + .../ApexStaticDestructibleComponent.uc | 18 + .../Engine/Classes/AppNotificationsBase.uc | 89 + exported/Engine/Classes/ArrowComponent.uc | 20 + exported/Engine/Classes/AudioComponent.uc | 175 + exported/Engine/Classes/AudioDevice.uc | 143 + exported/Engine/Classes/AutoLadder.uc | 23 + .../AutoNavMeshPathObstacleUnregister.uc | 4 + exported/Engine/Classes/AutoTestManager.uc | 743 + exported/Engine/Classes/BlockingVolume.uc | 58 + exported/Engine/Classes/BlurEffect.uc | 10 + exported/Engine/Classes/BookMark.uc | 7 + exported/Engine/Classes/BookMark2D.uc | 6 + exported/Engine/Classes/BroadcastHandler.uc | 122 + exported/Engine/Classes/Brush.uc | 56 + exported/Engine/Classes/BrushComponent.uc | 31 + exported/Engine/Classes/BrushShape.uc | 20 + exported/Engine/Classes/Camera.uc | 716 + exported/Engine/Classes/CameraActor.uc | 58 + exported/Engine/Classes/CameraAnim.uc | 17 + exported/Engine/Classes/CameraAnimInst.uc | 59 + .../Engine/Classes/CameraConeComponent.uc | 9 + exported/Engine/Classes/CameraModifier.uc | 178 + .../Classes/CameraModifier_CameraShake.uc | 261 + exported/Engine/Classes/CameraShake.uc | 124 + exported/Engine/Classes/Canvas.uc | 467 + exported/Engine/Classes/CeilingReachSpec.uc | 2 + exported/Engine/Classes/CheatManager.uc | 1293 ++ exported/Engine/Classes/ClipPadEntry.uc | 11 + exported/Engine/Classes/CloudSaveSystem.uc | 690 + .../CloudSaveSystemDataBlobStoreInterface.uc | 32 + .../Classes/CloudSaveSystemKVSInterface.uc | 12 + exported/Engine/Classes/CloudStorageBase.uc | 87 + .../CloudStorageBaseCloudSaveSystemKVS.uc | 44 + .../Classes/CloudStorageUpgradeHelper.uc | 18 + exported/Engine/Classes/CodecMovie.uc | 6 + exported/Engine/Classes/CodecMovieFallback.uc | 5 + exported/Engine/Classes/ColorScaleVolume.uc | 93 + exported/Engine/Classes/Console.uc | 1390 ++ exported/Engine/Classes/Controller.uc | 1197 ++ exported/Engine/Classes/CoverGroup.uc | 55 + .../Classes/CoverGroupRenderingComponent.uc | 8 + exported/Engine/Classes/CoverLink.uc | 887 + exported/Engine/Classes/CoverMeshComponent.uc | 70 + exported/Engine/Classes/CoverReplicator.uc | 946 + exported/Engine/Classes/CoverSlipReachSpec.uc | 9 + exported/Engine/Classes/CrowdAgentBase.uc | 14 + .../Classes/CrowdPopulationManagerBase.uc | 5 + exported/Engine/Classes/CullDistanceVolume.uc | 40 + exported/Engine/Classes/CurveEdPresetCurve.uc | 27 + .../Classes/CustomPropertyItemHandler.uc | 3 + exported/Engine/Classes/CylinderComponent.uc | 29 + exported/Engine/Classes/DOFAndBloomEffect.uc | 40 + .../Classes/DOFBloomMotionBlurEffect.uc | 19 + exported/Engine/Classes/DOFEffect.uc | 31 + exported/Engine/Classes/DamageType.uc | 34 + exported/Engine/Classes/DataStoreClient.uc | 154 + exported/Engine/Classes/DecalActor.uc | 19 + exported/Engine/Classes/DecalActorBase.uc | 29 + exported/Engine/Classes/DecalActorMovable.uc | 24 + exported/Engine/Classes/DecalComponent.uc | 129 + exported/Engine/Classes/DecalManager.uc | 171 + exported/Engine/Classes/DecalMaterial.uc | 12 + .../Engine/Classes/DefaultPhysicsVolume.uc | 29 + exported/Engine/Classes/DirectionalLight.uc | 21 + .../Classes/DirectionalLightComponent.uc | 30 + .../Classes/DirectionalLightToggleable.uc | 24 + .../Classes/DistributionFloatConstant.uc | 7 + .../Classes/DistributionFloatConstantCurve.uc | 7 + .../Classes/DistributionFloatParameterBase.uc | 27 + .../DistributionFloatParticleParameter.uc | 5 + .../DistributionFloatSoundParameter.uc | 5 + .../Classes/DistributionFloatUniform.uc | 8 + .../Classes/DistributionFloatUniformCurve.uc | 7 + .../Classes/DistributionFloatUniformRange.uc | 16 + .../Classes/DistributionVectorConstant.uc | 9 + .../DistributionVectorConstantCurve.uc | 9 + .../DistributionVectorParameterBase.uc | 19 + .../DistributionVectorParticleParameter.uc | 5 + .../Classes/DistributionVectorUniform.uc | 19 + .../Classes/DistributionVectorUniformCurve.uc | 19 + .../Classes/DistributionVectorUniformRange.uc | 15 + exported/Engine/Classes/DmgType_Crushed.uc | 1 + exported/Engine/Classes/DmgType_Fell.uc | 7 + exported/Engine/Classes/DmgType_Suicided.uc | 7 + .../Engine/Classes/DmgType_Telefragged.uc | 6 + .../Classes/DominantDirectionalLight.uc | 23 + .../DominantDirectionalLightComponent.uc | 12 + .../DominantDirectionalLightMovable.uc | 22 + exported/Engine/Classes/DominantPointLight.uc | 23 + .../Classes/DominantPointLightComponent.uc | 9 + exported/Engine/Classes/DominantSpotLight.uc | 26 + .../Classes/DominantSpotLightComponent.uc | 12 + exported/Engine/Classes/DoorMarker.uc | 201 + .../Classes/DownloadableContentEnumerator.uc | 65 + .../Classes/DownloadableContentManager.uc | 134 + exported/Engine/Classes/DrawBoxComponent.uc | 22 + .../Engine/Classes/DrawCapsuleComponent.uc | 24 + exported/Engine/Classes/DrawConeComponent.uc | 20 + .../Engine/Classes/DrawCylinderComponent.uc | 29 + .../Engine/Classes/DrawFrustumComponent.uc | 24 + .../Engine/Classes/DrawLightConeComponent.uc | 13 + .../Classes/DrawLightRadiusComponent.uc | 16 + .../Classes/DrawPylonRadiusComponent.uc | 15 + exported/Engine/Classes/DrawQuadComponent.uc | 18 + .../Classes/DrawSoundRadiusComponent.uc | 16 + .../Engine/Classes/DrawSphereComponent.uc | 24 + exported/Engine/Classes/DroppedPickup.uc | 262 + exported/Engine/Classes/DynamicAnchor.uc | 27 + .../Engine/Classes/DynamicBlockingVolume.uc | 122 + exported/Engine/Classes/DynamicCameraActor.uc | 9 + .../DynamicLightEnvironmentComponent.uc | 77 + .../Engine/Classes/DynamicPhysicsVolume.uc | 31 + exported/Engine/Classes/DynamicPylon.uc | 55 + exported/Engine/Classes/DynamicSMActor.uc | 323 + .../Classes/DynamicSMActor_Spawnable.uc | 28 + .../Engine/Classes/DynamicTriggerVolume.uc | 31 + exported/Engine/Classes/EdCoordSystem.uc | 13 + .../Classes/EditorLinkSelectionInterface.uc | 3 + exported/Engine/Classes/Emitter.uc | 311 + .../Classes/EmitterCameraLensEffectBase.uc | 93 + exported/Engine/Classes/EmitterPool.uc | 89 + exported/Engine/Classes/EmitterSpawnable.uc | 58 + exported/Engine/Classes/Engine.UPKG | 4 + exported/Engine/Classes/Engine.uc | 557 + exported/Engine/Classes/EngineBaseTypes.uc | 21 + exported/Engine/Classes/EngineTypes.uc | 406 + exported/Engine/Classes/EnvironmentVolume.uc | 26 + .../Engine/Classes/ExponentialHeightFog.uc | 85 + .../Classes/ExponentialHeightFogComponent.uc | 36 + exported/Engine/Classes/FaceFXAnimSet.uc | 8 + exported/Engine/Classes/FaceFXAsset.uc | 15 + .../Engine/Classes/FacebookIntegration.uc | 50 + exported/Engine/Classes/FailedConnect.uc | 42 + exported/Engine/Classes/FileLog.uc | 16 + exported/Engine/Classes/FileWriter.uc | 41 + .../Engine/Classes/FloorToCeilingReachSpec.uc | 7 + .../Engine/Classes/FluidInfluenceActor.uc | 89 + .../Engine/Classes/FluidInfluenceComponent.uc | 67 + exported/Engine/Classes/FluidSurfaceActor.uc | 39 + .../Classes/FluidSurfaceActorMovable.uc | 20 + .../Engine/Classes/FluidSurfaceComponent.uc | 113 + .../Classes/FogVolumeConeDensityComponent.uc | 20 + .../Classes/FogVolumeConeDensityInfo.uc | 28 + .../FogVolumeConstantDensityComponent.uc | 12 + .../Classes/FogVolumeConstantDensityInfo.uc | 26 + .../Classes/FogVolumeDensityComponent.uc | 34 + .../Engine/Classes/FogVolumeDensityInfo.uc | 129 + ...ogVolumeLinearHalfspaceDensityComponent.uc | 14 + .../FogVolumeLinearHalfspaceDensityInfo.uc | 26 + .../FogVolumeSphericalDensityComponent.uc | 16 + .../Classes/FogVolumeSphericalDensityInfo.uc | 29 + exported/Engine/Classes/Font.uc | 60 + exported/Engine/Classes/FontImportOptions.uc | 85 + .../Engine/Classes/ForceFeedbackManager.uc | 50 + .../Engine/Classes/ForceFeedbackWaveform.uc | 46 + exported/Engine/Classes/ForceFieldShape.uc | 29 + exported/Engine/Classes/ForceFieldShapeBox.uc | 58 + .../Engine/Classes/ForceFieldShapeCapsule.uc | 63 + .../Engine/Classes/ForceFieldShapeSphere.uc | 59 + .../Engine/Classes/ForcedLoopSoundNode.uc | 4 + exported/Engine/Classes/ForcedReachSpec.uc | 2 + exported/Engine/Classes/FractureManager.uc | 136 + exported/Engine/Classes/FractureMaterial.uc | 7 + .../Engine/Classes/FracturedBaseComponent.uc | 39 + .../Classes/FracturedSMActorSpawnable.uc | 37 + .../Classes/FracturedSkinnedMeshComponent.uc | 26 + .../Classes/FracturedStaticMeshActor.uc | 606 + .../FracturedStaticMeshActor_Spawnable.uc | 35 + .../Classes/FracturedStaticMeshComponent.uc | 68 + .../Engine/Classes/FracturedStaticMeshPart.uc | 113 + exported/Engine/Classes/GameEngine.uc | 163 + exported/Engine/Classes/GameInfo.uc | 3417 ++++ exported/Engine/Classes/GameMessage.uc | 178 + .../Classes/GamePadLightbarSubsystem.uc | 96 + .../Engine/Classes/GameReplicationInfo.uc | 281 + exported/Engine/Classes/GameUISceneClient.uc | 127 + exported/Engine/Classes/GameViewportClient.uc | 1296 ++ exported/Engine/Classes/GameplayEvents.uc | 263 + .../Engine/Classes/GameplayEventsHandler.uc | 65 + .../Engine/Classes/GameplayEventsReader.uc | 72 + .../Classes/GameplayEventsUploadAnalytics.uc | 80 + .../Engine/Classes/GameplayEventsWriter.uc | 97 + .../Classes/GameplayEventsWriterBase.uc | 228 + .../Engine/Classes/GeneratedMeshAreaLight.uc | 25 + .../Classes/GenericParamListStatEntry.uc | 32 + exported/Engine/Classes/Goal_AtActor.uc | 90 + exported/Engine/Classes/Goal_Null.uc | 38 + exported/Engine/Classes/GravityVolume.uc | 21 + exported/Engine/Classes/HUD.uc | 1067 ++ .../Classes/HavokCustomTraversalAnnotation.uc | 39 + .../HavokCustomTraversalRenderingComponent.uc | 9 + .../Engine/Classes/HavokMaterialPainter.uc | 19 + exported/Engine/Classes/HavokNavMeshActor.uc | 137 + exported/Engine/Classes/HavokNavMeshGrid.uc | 21 + .../Engine/Classes/HavokNavigationHandle.uc | 79 + .../HavokNavigationRenderingComponent.uc | 22 + .../Classes/HavokTraversalAnnotationPortal.uc | 12 + .../Engine/Classes/HeadTrackingComponent.uc | 49 + exported/Engine/Classes/HeightFog.uc | 79 + exported/Engine/Classes/HeightFogComponent.uc | 25 + exported/Engine/Classes/HttpBaseInterface.uc | 24 + exported/Engine/Classes/HttpFactory.uc | 20 + .../Engine/Classes/HttpRequestInterface.uc | 38 + .../Engine/Classes/HttpResponseInterface.uc | 9 + .../Classes/ImageBasedReflectionComponent.uc | 41 + exported/Engine/Classes/ImageReflection.uc | 83 + .../Classes/ImageReflectionComponent.uc | 6 + .../Classes/ImageReflectionSceneCapture.uc | 23 + .../Classes/ImageReflectionShadowPlane.uc | 83 + .../ImageReflectionShadowPlaneComponent.uc | 20 + exported/Engine/Classes/InAppMessageBase.uc | 19 + exported/Engine/Classes/InGameAdManager.uc | 35 + exported/Engine/Classes/Info.uc | 80 + exported/Engine/Classes/IniLocPatcher.uc | 457 + exported/Engine/Classes/Input.uc | 117 + .../Engine/Classes/InstancedFoliageActor.uc | 15 + .../Classes/InstancedFoliageSettings.uc | 106 + .../Classes/InstancedStaticMeshComponent.uc | 50 + exported/Engine/Classes/Interaction.uc | 78 + .../Engine/Classes/InteractiveFoliageActor.uc | 80 + .../Classes/InteractiveFoliageComponent.uc | 11 + .../Classes/Interface_ActorPathConstraints.uc | 6 + .../Classes/Interface_NavMeshPathObject.uc | 3 + .../Classes/Interface_NavMeshPathObstacle.uc | 12 + .../Classes/Interface_NavMeshPathSwitch.uc | 8 + .../Classes/Interface_NavigationHandle.uc | 8 + .../Interface_PylonGeometryProvider.uc | 3 + exported/Engine/Classes/Interface_RVO.uc | 3 + exported/Engine/Classes/Interface_Speaker.uc | 8 + exported/Engine/Classes/InterpActor.uc | 549 + .../Classes/InterpActor_ForCinematic.uc | 26 + exported/Engine/Classes/InterpCurveEdSetup.uc | 56 + exported/Engine/Classes/InterpData.uc | 36 + exported/Engine/Classes/InterpFilter.uc | 4 + .../Engine/Classes/InterpFilter_Classes.uc | 2 + .../Engine/Classes/InterpFilter_Custom.uc | 2 + exported/Engine/Classes/InterpGroup.uc | 38 + exported/Engine/Classes/InterpGroupAI.uc | 17 + exported/Engine/Classes/InterpGroupCamera.uc | 32 + .../Engine/Classes/InterpGroupDirector.uc | 9 + exported/Engine/Classes/InterpGroupInst.uc | 7 + exported/Engine/Classes/InterpGroupInstAI.uc | 9 + .../Engine/Classes/InterpGroupInstCamera.uc | 2 + .../Engine/Classes/InterpGroupInstDirector.uc | 2 + exported/Engine/Classes/InterpTrack.uc | 67 + .../Engine/Classes/InterpTrackAnimControl.uc | 39 + .../Engine/Classes/InterpTrackAudioMaster.uc | 12 + .../Engine/Classes/InterpTrackBoolProp.uc | 25 + .../Engine/Classes/InterpTrackColorProp.uc | 12 + .../Engine/Classes/InterpTrackColorScale.uc | 12 + .../Engine/Classes/InterpTrackDirector.uc | 35 + exported/Engine/Classes/InterpTrackEvent.uc | 29 + exported/Engine/Classes/InterpTrackFaceFX.uc | 42 + exported/Engine/Classes/InterpTrackFade.uc | 14 + .../Engine/Classes/InterpTrackFloatBase.uc | 13 + .../Classes/InterpTrackFloatMaterialParam.uc | 15 + .../Classes/InterpTrackFloatParticleParam.uc | 12 + .../Engine/Classes/InterpTrackFloatProp.uc | 12 + .../Engine/Classes/InterpTrackHeadTracking.uc | 50 + exported/Engine/Classes/InterpTrackInst.uc | 2 + .../Classes/InterpTrackInstAnimControl.uc | 4 + .../Classes/InterpTrackInstAudioMaster.uc | 2 + .../Engine/Classes/InterpTrackInstBoolProp.uc | 6 + .../Classes/InterpTrackInstColorProp.uc | 5 + .../Classes/InterpTrackInstColorScale.uc | 2 + .../Engine/Classes/InterpTrackInstDirector.uc | 10 + .../Engine/Classes/InterpTrackInstEvent.uc | 4 + .../Engine/Classes/InterpTrackInstFaceFX.uc | 5 + .../Engine/Classes/InterpTrackInstFade.uc | 2 + .../InterpTrackInstFloatMaterialParam.uc | 17 + .../InterpTrackInstFloatParticleParam.uc | 4 + .../Classes/InterpTrackInstFloatProp.uc | 6 + .../Classes/InterpTrackInstHeadTracking.uc | 8 + .../Classes/InterpTrackInstLinearColorProp.uc | 10 + .../Classes/InterpTrackInstMorphWeight.uc | 2 + .../Engine/Classes/InterpTrackInstMove.uc | 7 + .../Engine/Classes/InterpTrackInstNotify.uc | 4 + .../Classes/InterpTrackInstParticleReplay.uc | 4 + .../Engine/Classes/InterpTrackInstProperty.uc | 5 + .../InterpTrackInstSkelControlScale.uc | 2 + .../InterpTrackInstSkelControlStrength.uc | 4 + .../Engine/Classes/InterpTrackInstSlomo.uc | 4 + .../Engine/Classes/InterpTrackInstSound.uc | 5 + .../Engine/Classes/InterpTrackInstToggle.uc | 6 + .../InterpTrackInstVectorMaterialParam.uc | 17 + .../Classes/InterpTrackInstVectorProp.uc | 5 + .../Classes/InterpTrackInstVisibility.uc | 5 + .../Classes/InterpTrackLinearColorBase.uc | 13 + .../Classes/InterpTrackLinearColorProp.uc | 12 + .../Engine/Classes/InterpTrackMorphWeight.uc | 13 + exported/Engine/Classes/InterpTrackMove.uc | 65 + .../Engine/Classes/InterpTrackMoveAxis.uc | 24 + exported/Engine/Classes/InterpTrackNotify.uc | 28 + .../Classes/InterpTrackParticleReplay.uc | 27 + .../Classes/InterpTrackSkelControlScale.uc | 13 + .../Classes/InterpTrackSkelControlStrength.uc | 13 + exported/Engine/Classes/InterpTrackSlomo.uc | 12 + exported/Engine/Classes/InterpTrackSound.uc | 32 + exported/Engine/Classes/InterpTrackToggle.uc | 42 + .../Engine/Classes/InterpTrackVectorBase.uc | 13 + .../Classes/InterpTrackVectorMaterialParam.uc | 15 + .../Engine/Classes/InterpTrackVectorProp.uc | 12 + .../Engine/Classes/InterpTrackVisibility.uc | 48 + exported/Engine/Classes/Inventory.uc | 181 + exported/Engine/Classes/InventoryManager.uc | 529 + exported/Engine/Classes/JsonObject.uc | 73 + exported/Engine/Classes/KActor.uc | 428 + exported/Engine/Classes/KActorFromStatic.uc | 147 + exported/Engine/Classes/KActorSpawnable.uc | 71 + exported/Engine/Classes/KAsset.uc | 179 + exported/Engine/Classes/KAssetSpawnable.uc | 27 + exported/Engine/Classes/KMeshProps.uc | 101 + exported/Engine/Classes/Keypoint.uc | 14 + exported/Engine/Classes/KillZDamageType.uc | 8 + exported/Engine/Classes/KismetBookMark.uc | 5 + exported/Engine/Classes/Ladder.uc | 46 + exported/Engine/Classes/LadderReachSpec.uc | 7 + exported/Engine/Classes/LadderVolume.uc | 151 + exported/Engine/Classes/Landscape.uc | 40 + exported/Engine/Classes/LandscapeComponent.uc | 83 + .../Classes/LandscapeGizmoActiveActor.uc | 23 + .../Engine/Classes/LandscapeGizmoActor.uc | 13 + .../Classes/LandscapeGizmoRenderComponent.uc | 12 + .../LandscapeHeightfieldCollisionComponent.uc | 35 + exported/Engine/Classes/LandscapeInfo.uc | 20 + .../Classes/LandscapeLayerInfoObject.uc | 12 + .../LandscapeMaterialInstanceConstant.uc | 13 + exported/Engine/Classes/LandscapeProxy.uc | 73 + exported/Engine/Classes/LensFlare.uc | 155 + exported/Engine/Classes/LensFlareComponent.uc | 78 + exported/Engine/Classes/LensFlareSource.uc | 121 + exported/Engine/Classes/LevelGridVolume.uc | 59 + .../LevelGridVolumeRenderingComponent.uc | 12 + exported/Engine/Classes/LevelStreaming.uc | 36 + .../Classes/LevelStreamingAlwaysLoaded.uc | 5 + .../Engine/Classes/LevelStreamingDistance.uc | 6 + .../Engine/Classes/LevelStreamingKismet.uc | 3 + .../Classes/LevelStreamingPersistent.uc | 4 + .../Engine/Classes/LevelStreamingVolume.uc | 92 + exported/Engine/Classes/LiftCenter.uc | 119 + exported/Engine/Classes/LiftExit.uc | 97 + exported/Engine/Classes/Light.uc | 72 + exported/Engine/Classes/LightComponent.uc | 227 + .../Classes/LightEnvironmentComponent.uc | 24 + exported/Engine/Classes/LightFunction.uc | 15 + .../Classes/LightmappedSurfaceCollection.uc | 7 + .../LightmassCharacterIndirectDetailVolume.uc | 24 + .../Classes/LightmassImportanceVolume.uc | 24 + .../Engine/Classes/LightmassLevelSettings.uc | 31 + .../LightmassPrimitiveSettingsObject.uc | 11 + exported/Engine/Classes/LineBatchComponent.uc | 14 + exported/Engine/Classes/LocalMessage.uc | 97 + exported/Engine/Classes/LocalPlayer.uc | 439 + exported/Engine/Classes/MantleReachSpec.uc | 9 + exported/Engine/Classes/MapInfo.uc | 4 + .../Classes/MassiveLODOverrideVolume.uc | 24 + exported/Engine/Classes/Material.uc | 183 + exported/Engine/Classes/MaterialEffect.uc | 5 + exported/Engine/Classes/MaterialExpression.uc | 74 + .../Engine/Classes/MaterialExpressionAbs.uc | 11 + .../MaterialExpressionActorWorldPosition.uc | 10 + .../Engine/Classes/MaterialExpressionAdd.uc | 11 + ...aterialExpressionAntialiasedTextureMask.uc | 29 + .../Classes/MaterialExpressionAppendVector.uc | 13 + .../Classes/MaterialExpressionBumpOffset.uc | 17 + .../Classes/MaterialExpressionCameraVector.uc | 9 + .../MaterialExpressionCameraWorldPosition.uc | 11 + .../Engine/Classes/MaterialExpressionCeil.uc | 11 + .../Engine/Classes/MaterialExpressionClamp.uc | 12 + .../Classes/MaterialExpressionComment.uc | 14 + .../MaterialExpressionComponentMask.uc | 15 + .../Classes/MaterialExpressionConstant.uc | 11 + .../MaterialExpressionConstant2Vector.uc | 13 + .../MaterialExpressionConstant3Vector.uc | 14 + .../MaterialExpressionConstant4Vector.uc | 15 + .../MaterialExpressionConstantBiasScale.uc | 14 + .../MaterialExpressionConstantClamp.uc | 14 + .../Classes/MaterialExpressionCosine.uc | 13 + .../Classes/MaterialExpressionCrossProduct.uc | 12 + .../Classes/MaterialExpressionCustom.uc | 38 + .../MaterialExpressionCustomTexture.uc | 11 + .../MaterialExpressionDepthBiasBlend.uc | 14 + .../MaterialExpressionDepthBiasedAlpha.uc | 15 + .../MaterialExpressionDepthBiasedBlend.uc | 21 + .../MaterialExpressionDepthOfFieldFunction.uc | 19 + .../MaterialExpressionDeriveNormalZ.uc | 11 + .../Classes/MaterialExpressionDesaturation.uc | 15 + .../Classes/MaterialExpressionDestColor.uc | 15 + .../Classes/MaterialExpressionDestDepth.uc | 13 + .../Classes/MaterialExpressionDistance.uc | 11 + .../Classes/MaterialExpressionDivide.uc | 11 + .../Classes/MaterialExpressionDotProduct.uc | 12 + .../MaterialExpressionDynamicParameter.uc | 22 + .../MaterialExpressionFlipBookSample.uc | 4 + .../Engine/Classes/MaterialExpressionFloor.uc | 11 + .../Classes/MaterialExpressionFluidNormal.uc | 11 + .../Engine/Classes/MaterialExpressionFmod.uc | 12 + ...terialExpressionFoliageImpulseDirection.uc | 11 + ...onFoliageNormalizedRotationAxisAndAngle.uc | 11 + .../Classes/MaterialExpressionFontSample.uc | 18 + .../MaterialExpressionFontSampleParameter.uc | 15 + .../Engine/Classes/MaterialExpressionFrac.uc | 11 + .../Classes/MaterialExpressionFresnel.uc | 13 + .../MaterialExpressionFunctionInput.uc | 35 + .../MaterialExpressionFunctionOutput.uc | 18 + .../Engine/Classes/MaterialExpressionIf.uc | 15 + .../MaterialExpressionLandscapeLayerBlend.uc | 41 + .../MaterialExpressionLensFlareIntensity.uc | 9 + .../MaterialExpressionLensFlareOcclusion.uc | 9 + ...terialExpressionLensFlareRadialDistance.uc | 9 + .../MaterialExpressionLensFlareRayDistance.uc | 9 + ...terialExpressionLensFlareSourceDistance.uc | 9 + .../Classes/MaterialExpressionLightVector.uc | 9 + .../Classes/MaterialExpressionLightmapUVs.uc | 12 + .../MaterialExpressionLightmassReplace.uc | 11 + .../MaterialExpressionLinearInterpolate.uc | 13 + .../MaterialExpressionMaterialFunctionCall.uc | 43 + ...alExpressionMeshEmitterDynamicParameter.uc | 11 + ...aterialExpressionMeshEmitterVertexColor.uc | 16 + .../Classes/MaterialExpressionMeshSubUV.uc | 10 + .../MaterialExpressionMeshSubUVBlend.uc | 4 + .../Classes/MaterialExpressionMultiply.uc | 11 + .../Classes/MaterialExpressionNormalize.uc | 11 + .../MaterialExpressionObjectOrientation.uc | 11 + .../Classes/MaterialExpressionObjectRadius.uc | 10 + .../MaterialExpressionObjectWorldPosition.uc | 11 + .../MaterialExpressionOcclusionPercentage.uc | 10 + .../Classes/MaterialExpressionOneMinus.uc | 11 + .../Classes/MaterialExpressionPanner.uc | 15 + .../Classes/MaterialExpressionParameter.uc | 14 + .../MaterialExpressionParticleMacroUV.uc | 10 + .../MaterialExpressionParticleSubUV.uc | 10 + .../MaterialExpressionPerInstanceRandom.uc | 9 + .../Classes/MaterialExpressionPixelDepth.uc | 12 + .../Engine/Classes/MaterialExpressionPower.uc | 12 + .../MaterialExpressionQualitySwitch.uc | 13 + .../MaterialExpressionReflectionVector.uc | 9 + .../MaterialExpressionRotateAboutAxis.uc | 13 + .../Classes/MaterialExpressionRotator.uc | 19 + .../MaterialExpressionScalarParameter.uc | 12 + .../Classes/MaterialExpressionSceneDepth.uc | 13 + .../Classes/MaterialExpressionSceneTexture.uc | 24 + .../MaterialExpressionScreenPosition.uc | 11 + .../Classes/MaterialExpressionScreenSize.uc | 11 + .../Engine/Classes/MaterialExpressionSine.uc | 13 + .../Classes/MaterialExpressionSphereMask.uc | 17 + .../Classes/MaterialExpressionSquareRoot.uc | 11 + .../Classes/MaterialExpressionStaticBool.uc | 11 + .../MaterialExpressionStaticBoolParameter.uc | 13 + ...lExpressionStaticComponentMaskParameter.uc | 16 + .../Classes/MaterialExpressionStaticSwitch.uc | 16 + ...MaterialExpressionStaticSwitchParameter.uc | 13 + .../Classes/MaterialExpressionSubtract.uc | 11 + .../MaterialExpressionTerrainLayerCoords.uc | 25 + .../MaterialExpressionTerrainLayerSwitch.uc | 20 + .../MaterialExpressionTerrainLayerWeight.uc | 19 + .../Classes/MaterialExpressionTexelSize.uc | 11 + .../MaterialExpressionTextureCoordinate.uc | 18 + .../MaterialExpressionTextureObject.uc | 13 + ...aterialExpressionTextureObjectParameter.uc | 12 + .../MaterialExpressionTextureSample.uc | 18 + ...aterialExpressionTextureSampleParameter.uc | 15 + ...erialExpressionTextureSampleParameter2D.uc | 11 + ...ialExpressionTextureSampleParameterCube.uc | 11 + ...xpressionTextureSampleParameterFlipbook.uc | 4 + ...pressionTextureSampleParameterMeshSubUV.uc | 11 + ...ionTextureSampleParameterMeshSubUVBlend.uc | 4 + ...alExpressionTextureSampleParameterMovie.uc | 10 + ...lExpressionTextureSampleParameterNormal.uc | 14 + ...alExpressionTextureSampleParameterSubUV.uc | 11 + .../Engine/Classes/MaterialExpressionTime.uc | 12 + .../Classes/MaterialExpressionTransform.uc | 32 + .../MaterialExpressionTransformPosition.uc | 27 + .../Classes/MaterialExpressionTwoSidedSign.uc | 9 + .../MaterialExpressionVectorParameter.uc | 18 + .../Classes/MaterialExpressionVertexColor.uc | 16 + ...MaterialExpressionWindDirectionAndSpeed.uc | 11 + .../Classes/MaterialExpressionWorldNormal.uc | 11 + .../MaterialExpressionWorldPosition.uc | 10 + exported/Engine/Classes/MaterialFunction.uc | 15 + exported/Engine/Classes/MaterialInstance.uc | 53 + .../Engine/Classes/MaterialInstanceActor.uc | 14 + .../Classes/MaterialInstanceConstant.uc | 94 + .../Classes/MaterialInstanceTimeVarying.uc | 142 + .../MaterialInstanceTimeVaryingActor.uc | 12 + exported/Engine/Classes/MaterialInterface.uc | 266 + exported/Engine/Classes/MatineeActor.uc | 135 + exported/Engine/Classes/MatineePawn.uc | 33 + exported/Engine/Classes/MeshComponent.uc | 104 + .../Engine/Classes/MeshComponentFactory.uc | 10 + .../Engine/Classes/MicroTransactionBase.uc | 56 + exported/Engine/Classes/ModelComponent.uc | 20 + exported/Engine/Classes/MorphNodeBase.uc | 7 + exported/Engine/Classes/MorphNodeMultiPose.uc | 16 + exported/Engine/Classes/MorphNodePose.uc | 15 + exported/Engine/Classes/MorphNodeWeight.uc | 14 + .../Engine/Classes/MorphNodeWeightBase.uc | 20 + .../Classes/MorphNodeWeightByBoneAngle.uc | 38 + .../Classes/MorphNodeWeightByBoneRotation.uc | 22 + exported/Engine/Classes/MorphTarget.uc | 8 + exported/Engine/Classes/MorphTargetSet.uc | 9 + .../Engine/Classes/MorphWeightSequence.uc | 2 + exported/Engine/Classes/MotionBlurEffect.uc | 19 + .../Classes/MultiCueSplineAudioComponent.uc | 33 + exported/Engine/Classes/MultiFont.uc | 8 + .../Engine/Classes/MultiProviderAnalytics.uc | 80 + .../Classes/MusicTrackDataStructures.uc | 26 + exported/Engine/Classes/Mutator.uc | 265 + .../Engine/Classes/NavMeshBoundsVolume.uc | 20 + .../NavMeshGoalFilter_MinPathDistance.uc | 24 + .../NavMeshGoalFilter_NotNearOtherAI.uc | 24 + .../NavMeshGoalFilter_OutOfViewFrom.uc | 25 + ...MeshGoalFilter_OutSideOfDotProductWedge.uc | 28 + .../NavMeshGoalFilter_PolyEncompassesAI.uc | 24 + exported/Engine/Classes/NavMeshGoal_At.uc | 83 + .../Classes/NavMeshGoal_ClosestActorInList.uc | 33 + exported/Engine/Classes/NavMeshGoal_Filter.uc | 13 + .../NavMeshGoal_GenericFilterContainer.uc | 82 + exported/Engine/Classes/NavMeshGoal_Null.uc | 44 + .../Classes/NavMeshGoal_PolyEncompassesAI.uc | 35 + exported/Engine/Classes/NavMeshGoal_Random.uc | 49 + .../NavMeshGoal_WithinDistanceEnvelope.uc | 40 + exported/Engine/Classes/NavMeshObstacle.uc | 124 + .../Engine/Classes/NavMeshPathConstraint.uc | 24 + .../Classes/NavMeshPathGoalEvaluator.uc | 41 + .../Engine/Classes/NavMeshPath_AlongLine.uc | 31 + .../Classes/NavMeshPath_EnforceTwoWayEdges.uc | 21 + .../NavMeshPath_MinDistBetweenSpecsOfType.uc | 45 + .../Classes/NavMeshPath_SameCoverLink.uc | 21 + exported/Engine/Classes/NavMeshPath_Toward.uc | 61 + .../NavMeshPath_WithinDistanceEnvelope.uc | 56 + .../NavMeshPath_WithinTraversalDist.uc | 42 + .../Classes/NavMeshRenderingComponent.uc | 13 + exported/Engine/Classes/NavigationHandle.uc | 239 + exported/Engine/Classes/NavigationPoint.uc | 310 + exported/Engine/Classes/None.uc | 1 + exported/Engine/Classes/Note.uc | 15 + .../Engine/Classes/NxCylindricalForceField.uc | 22 + .../Classes/NxCylindricalForceFieldCapsule.uc | 23 + exported/Engine/Classes/NxForceField.uc | 66 + .../Engine/Classes/NxForceFieldComponent.uc | 35 + .../NxForceFieldCylindricalComponent.uc | 38 + .../Engine/Classes/NxForceFieldGeneric.uc | 46 + .../Classes/NxForceFieldGenericComponent.uc | 45 + exported/Engine/Classes/NxForceFieldRadial.uc | 21 + .../Classes/NxForceFieldRadialComponent.uc | 31 + .../Engine/Classes/NxForceFieldSpawnable.uc | 40 + .../Engine/Classes/NxForceFieldTornado.uc | 30 + .../Classes/NxForceFieldTornadoComponent.uc | 39 + .../Engine/Classes/NxGenericForceField.uc | 26 + .../Engine/Classes/NxGenericForceFieldBox.uc | 25 + .../Classes/NxGenericForceFieldBrush.uc | 77 + .../Classes/NxGenericForceFieldCapsule.uc | 24 + .../Classes/NxRadialCustomForceField.uc | 21 + exported/Engine/Classes/NxRadialForceField.uc | 27 + .../Classes/NxTornadoAngularForceField.uc | 23 + .../NxTornadoAngularForceFieldCapsule.uc | 20 + .../Engine/Classes/NxTornadoForceField.uc | 22 + .../Classes/NxTornadoForceFieldCapsule.uc | 20 + exported/Engine/Classes/ObjectReferencer.uc | 4 + .../Engine/Classes/OnlineAccountInterface.uc | 42 + .../Engine/Classes/OnlineAuthInterface.uc | 339 + .../Engine/Classes/OnlineChatInterface.uc | 27 + .../OnlineCommunityContentInterface.uc | 127 + .../Engine/Classes/OnlineContentInterface.uc | 202 + exported/Engine/Classes/OnlineEventTracker.uc | 18 + .../Engine/Classes/OnlineEventsInterface.uc | 17 + .../Engine/Classes/OnlineGameDVRInterface.uc | 72 + .../Classes/OnlineGameDownloadInterface.uc | 90 + .../Engine/Classes/OnlineGameInterface.uc | 782 + exported/Engine/Classes/OnlineGameSearch.uc | 161 + exported/Engine/Classes/OnlineGameSettings.uc | 46 + .../Classes/OnlineMarketplaceInterface.uc | 142 + .../Engine/Classes/OnlineMatchmakingStats.uc | 20 + .../Engine/Classes/OnlineNewsInterface.uc | 27 + .../Classes/OnlinePartyChatInterface.uc | 107 + .../Engine/Classes/OnlinePlayerInterface.uc | 742 + .../Engine/Classes/OnlinePlayerInterfaceEx.uc | 377 + .../Engine/Classes/OnlinePlayerStorage.uc | 142 + .../Classes/OnlinePlaylistGameTypeProvider.uc | 10 + .../Engine/Classes/OnlineProfileSettings.uc | 204 + .../Engine/Classes/OnlineRecentPlayersList.uc | 281 + .../Engine/Classes/OnlineSocialInterface.uc | 62 + exported/Engine/Classes/OnlineStats.uc | 50 + .../Engine/Classes/OnlineStatsInterface.uc | 152 + exported/Engine/Classes/OnlineStatsRead.uc | 10 + exported/Engine/Classes/OnlineStatsWrite.uc | 12 + exported/Engine/Classes/OnlineSubsystem.uc | 1380 ++ .../Classes/OnlineSuppliedUIInterface.uc | 27 + .../Engine/Classes/OnlineSystemInterface.uc | 112 + .../Classes/OnlineTitleFileCacheInterface.uc | 82 + .../Classes/OnlineTitleFileInterface.uc | 62 + .../Engine/Classes/OnlineVoiceInterface.uc | 137 + .../Engine/Classes/PBRuleNodeAlternate.uc | 18 + exported/Engine/Classes/PBRuleNodeBase.uc | 24 + exported/Engine/Classes/PBRuleNodeComment.uc | 23 + exported/Engine/Classes/PBRuleNodeCorner.uc | 37 + exported/Engine/Classes/PBRuleNodeCycle.uc | 20 + .../Engine/Classes/PBRuleNodeEdgeAngle.uc | 33 + exported/Engine/Classes/PBRuleNodeEdgeMesh.uc | 15 + .../Classes/PBRuleNodeExtractTopBottom.uc | 21 + exported/Engine/Classes/PBRuleNodeLODQuad.uc | 12 + exported/Engine/Classes/PBRuleNodeMesh.uc | 60 + .../Engine/Classes/PBRuleNodeOcclusion.uc | 12 + exported/Engine/Classes/PBRuleNodeQuad.uc | 20 + exported/Engine/Classes/PBRuleNodeRandom.uc | 18 + exported/Engine/Classes/PBRuleNodeRepeat.uc | 14 + exported/Engine/Classes/PBRuleNodeSize.uc | 16 + exported/Engine/Classes/PBRuleNodeSplit.uc | 31 + .../Engine/Classes/PBRuleNodeSubRuleset.uc | 12 + .../Engine/Classes/PBRuleNodeTransform.uc | 9 + .../Engine/Classes/PBRuleNodeVariation.uc | 12 + .../Engine/Classes/PBRuleNodeWindowWall.uc | 25 + exported/Engine/Classes/ParticleEmitter.uc | 70 + .../Engine/Classes/ParticleEventManager.uc | 10 + exported/Engine/Classes/ParticleLODLevel.uc | 26 + .../ParticleLightEnvironmentComponent.uc | 20 + exported/Engine/Classes/ParticleModule.uc | 74 + .../Classes/ParticleModuleAcceleration.uc | 19 + .../Classes/ParticleModuleAccelerationBase.uc | 7 + .../ParticleModuleAccelerationOverLifetime.uc | 17 + .../Classes/ParticleModuleAttractorBase.uc | 5 + .../ParticleModuleAttractorBoneSocket.uc | 96 + .../Classes/ParticleModuleAttractorLine.uc | 27 + .../ParticleModuleAttractorParticle.uc | 40 + .../Classes/ParticleModuleAttractorPoint.uc | 37 + .../ParticleModuleAttractorSkelVertSurface.uc | 77 + .../Engine/Classes/ParticleModuleBeamBase.uc | 25 + .../Classes/ParticleModuleBeamModifier.uc | 56 + .../Engine/Classes/ParticleModuleBeamNoise.uc | 66 + .../Classes/ParticleModuleBeamSource.uc | 41 + .../Classes/ParticleModuleBeamTarget.uc | 43 + .../Classes/ParticleModuleCameraBase.uc | 5 + .../Classes/ParticleModuleCameraOffset.uc | 29 + .../Engine/Classes/ParticleModuleCollision.uc | 89 + .../Classes/ParticleModuleCollisionActor.uc | 46 + .../Classes/ParticleModuleCollisionBase.uc | 16 + .../Engine/Classes/ParticleModuleColor.uc | 28 + .../Engine/Classes/ParticleModuleColorBase.uc | 5 + .../Classes/ParticleModuleColorByParameter.uc | 13 + .../Classes/ParticleModuleColorOverLife.uc | 29 + .../ParticleModuleColorScaleOverDensity.uc | 25 + .../ParticleModuleColorScaleOverLife.uc | 28 + .../Classes/ParticleModuleColor_Seeded.uc | 27 + .../Engine/Classes/ParticleModuleEventBase.uc | 5 + .../Classes/ParticleModuleEventGenerator.uc | 38 + .../ParticleModuleEventReceiverBase.uc | 8 + ...articleModuleEventReceiverKillParticles.uc | 12 + .../ParticleModuleEventReceiverSpawn.uc | 29 + .../Classes/ParticleModuleEventSendToGame.uc | 10 + .../Engine/Classes/ParticleModuleKillBase.uc | 5 + .../Engine/Classes/ParticleModuleKillBox.uc | 29 + .../Classes/ParticleModuleKillHeight.uc | 21 + .../Engine/Classes/ParticleModuleLifetime.uc | 17 + .../Classes/ParticleModuleLifetimeBase.uc | 5 + .../Classes/ParticleModuleLifetime_Seeded.uc | 20 + .../Engine/Classes/ParticleModuleLocation.uc | 20 + .../Classes/ParticleModuleLocationBase.uc | 5 + .../ParticleModuleLocationBoneSocket.uc | 52 + .../Classes/ParticleModuleLocationDirect.uc | 40 + .../Classes/ParticleModuleLocationEmitter.uc | 25 + .../ParticleModuleLocationEmitterDirect.uc | 12 + .../ParticleModuleLocationPrimitiveBase.uc | 39 + ...ParticleModuleLocationPrimitiveCylinder.uc | 53 + ...eModuleLocationPrimitiveCylinder_Seeded.uc | 41 + .../ParticleModuleLocationPrimitiveSphere.uc | 32 + ...cleModuleLocationPrimitiveSphere_Seeded.uc | 34 + .../ParticleModuleLocationSkelVertSurface.uc | 33 + ...ParticleModuleLocationStaticVertSurface.uc | 32 + .../ParticleModuleLocationWorldOffset.uc | 15 + ...articleModuleLocationWorldOffset_Seeded.uc | 20 + .../Classes/ParticleModuleLocation_Seeded.uc | 20 + .../Classes/ParticleModuleMaterialBase.uc | 5 + .../ParticleModuleMaterialByParameter.uc | 12 + .../Classes/ParticleModuleMeshMaterial.uc | 12 + .../Classes/ParticleModuleMeshRotation.uc | 19 + .../Classes/ParticleModuleMeshRotationRate.uc | 19 + ...ticleModuleMeshRotationRateMultiplyLife.uc | 18 + .../ParticleModuleMeshRotationRateOverLife.uc | 19 + .../ParticleModuleMeshRotationRate_Seeded.uc | 20 + .../ParticleModuleMeshRotation_Seeded.uc | 20 + .../Engine/Classes/ParticleModuleOrbit.uc | 65 + .../Engine/Classes/ParticleModuleOrbitBase.uc | 7 + .../ParticleModuleOrientationAxisLock.uc | 27 + .../Classes/ParticleModuleOrientationBase.uc | 5 + .../Classes/ParticleModuleParameterBase.uc | 5 + .../Classes/ParticleModuleParameterDynamic.uc | 68 + .../ParticleModuleParameterDynamic_Seeded.uc | 41 + .../Classes/ParticleModulePhysicsVolumes.uc | 26 + .../Engine/Classes/ParticleModuleRequired.uc | 95 + .../Engine/Classes/ParticleModuleRotation.uc | 18 + .../Classes/ParticleModuleRotationBase.uc | 5 + .../ParticleModuleRotationOverLifetime.uc | 19 + .../Classes/ParticleModuleRotationRate.uc | 17 + .../Classes/ParticleModuleRotationRateBase.uc | 5 + .../ParticleModuleRotationRateMultiplyLife.uc | 18 + .../ParticleModuleRotationRate_Seeded.uc | 20 + .../Classes/ParticleModuleRotation_Seeded.uc | 20 + exported/Engine/Classes/ParticleModuleSize.uc | 19 + .../Engine/Classes/ParticleModuleSizeBase.uc | 5 + .../Classes/ParticleModuleSizeMultiplyLife.uc | 24 + .../ParticleModuleSizeMultiplyVelocity.uc | 26 + .../Engine/Classes/ParticleModuleSizeScale.uc | 23 + .../Classes/ParticleModuleSizeScaleByTime.uc | 24 + .../ParticleModuleSizeScaleOverDensity.uc | 18 + .../Classes/ParticleModuleSize_Seeded.uc | 20 + .../Classes/ParticleModuleSourceMovement.uc | 18 + .../Engine/Classes/ParticleModuleSpawn.uc | 28 + .../Engine/Classes/ParticleModuleSpawnBase.uc | 14 + .../Classes/ParticleModuleSpawnPerUnit.uc | 27 + .../Classes/ParticleModuleStoreSpawnTime.uc | 4 + .../ParticleModuleStoreSpawnTimeBase.uc | 10 + .../Engine/Classes/ParticleModuleSubUV.uc | 19 + .../Engine/Classes/ParticleModuleSubUVBase.uc | 5 + .../Classes/ParticleModuleSubUVDirect.uc | 24 + .../Classes/ParticleModuleSubUVMovie.uc | 27 + .../Classes/ParticleModuleSubUVSelect.uc | 17 + .../Engine/Classes/ParticleModuleTrailBase.uc | 5 + .../Classes/ParticleModuleTrailSource.uc | 33 + .../Classes/ParticleModuleTrailSpawn.uc | 30 + .../Classes/ParticleModuleTrailTaper.uc | 27 + .../ParticleModuleTypeDataAnimTrail.uc | 28 + .../Classes/ParticleModuleTypeDataApex.uc | 20 + .../Classes/ParticleModuleTypeDataBase.uc | 5 + .../Classes/ParticleModuleTypeDataBeam.uc | 78 + .../Classes/ParticleModuleTypeDataBeam2.uc | 81 + .../Classes/ParticleModuleTypeDataMesh.uc | 55 + .../ParticleModuleTypeDataMeshPhysX.uc | 29 + .../Classes/ParticleModuleTypeDataPhysX.uc | 29 + .../Classes/ParticleModuleTypeDataRibbon.uc | 48 + .../Classes/ParticleModuleTypeDataTrail.uc | 27 + .../Classes/ParticleModuleTypeDataTrail2.uc | 29 + .../Engine/Classes/ParticleModuleUberBase.uc | 8 + .../Classes/ParticleModuleUberLTISIVCL.uc | 64 + .../Classes/ParticleModuleUberLTISIVCLIL.uc | 72 + .../ParticleModuleUberLTISIVCLILIRSSBLIRR.uc | 104 + .../Classes/ParticleModuleUberRainDrops.uc | 59 + .../Classes/ParticleModuleUberRainImpacts.uc | 117 + .../Classes/ParticleModuleUberRainSplashA.uc | 65 + .../Classes/ParticleModuleUberRainSplashB.uc | 64 + .../Engine/Classes/ParticleModuleVelocity.uc | 24 + .../Classes/ParticleModuleVelocityBase.uc | 8 + .../Classes/ParticleModuleVelocityCone.uc | 27 + .../ParticleModuleVelocityInheritParent.uc | 18 + .../ParticleModuleVelocityOverLifetime.uc | 19 + .../Classes/ParticleModuleVelocity_Seeded.uc | 27 + .../Classes/ParticleModuleWorldAttractor.uc | 19 + .../Classes/ParticleModuleWorldForcesBase.uc | 5 + .../Engine/Classes/ParticleSpriteEmitter.uc | 14 + exported/Engine/Classes/ParticleSystem.uc | 160 + .../Engine/Classes/ParticleSystemComponent.uc | 332 + .../Engine/Classes/ParticleSystemReplay.uc | 19 + exported/Engine/Classes/PathBlockingVolume.uc | 26 + exported/Engine/Classes/PathConstraint.uc | 22 + exported/Engine/Classes/PathGoalEvaluator.uc | 26 + exported/Engine/Classes/PathNode.uc | 28 + exported/Engine/Classes/PathNode_Dynamic.uc | 28 + .../Engine/Classes/PathRenderingComponent.uc | 12 + exported/Engine/Classes/PathTargetPoint.uc | 32 + exported/Engine/Classes/Path_AlongLine.uc | 36 + .../Classes/Path_AvoidInEscapableNodes.uc | 45 + .../Classes/Path_MinDistBetweenSpecsOfType.uc | 42 + exported/Engine/Classes/Path_TowardGoal.uc | 36 + exported/Engine/Classes/Path_TowardPoint.uc | 36 + .../Classes/Path_WithinDistanceEnvelope.uc | 57 + .../Classes/Path_WithinTraversalDist.uc | 43 + exported/Engine/Classes/Pawn.uc | 3143 +++ .../Engine/Classes/PhysXParticleSystem.uc | 77 + exported/Engine/Classes/PhysicalMaterial.uc | 102 + .../Classes/PhysicalMaterialPropertyBase.uc | 6 + exported/Engine/Classes/PhysicsAsset.uc | 12 + .../Engine/Classes/PhysicsAssetInstance.uc | 79 + .../Classes/PhysicsLODVerticalEmitter.uc | 5 + exported/Engine/Classes/PhysicsVolume.uc | 297 + exported/Engine/Classes/PickupFactory.uc | 509 + .../Engine/Classes/PlatformInterfaceBase.uc | 128 + .../Classes/PlatformInterfaceWebResponse.uc | 19 + exported/Engine/Classes/Player.uc | 27 + exported/Engine/Classes/PlayerController.uc | 7947 ++++++++ exported/Engine/Classes/PlayerInput.uc | 664 + .../Classes/PlayerManagerInteraction.uc | 5 + .../Engine/Classes/PlayerReplicationInfo.uc | 627 + exported/Engine/Classes/PlayerStart.uc | 124 + exported/Engine/Classes/PointLight.uc | 23 + .../Engine/Classes/PointLightComponent.uc | 41 + exported/Engine/Classes/PointLightMovable.uc | 28 + .../Engine/Classes/PointLightToggleable.uc | 55 + exported/Engine/Classes/Portal.uc | 39 + exported/Engine/Classes/PortalMarker.uc | 29 + .../Classes/PortalRenderingComponent.uc | 9 + exported/Engine/Classes/PortalTeleporter.uc | 63 + exported/Engine/Classes/PortalVolume.uc | 24 + exported/Engine/Classes/PostProcessChain.uc | 27 + exported/Engine/Classes/PostProcessEffect.uc | 24 + exported/Engine/Classes/PostProcessVolume.uc | 336 + .../Engine/Classes/PotentialClimbWatcher.uc | 44 + .../PrecomputedVisibilityOverrideVolume.uc | 27 + .../Classes/PrecomputedVisibilityVolume.uc | 24 + exported/Engine/Classes/Prefab.uc | 7 + exported/Engine/Classes/PrefabInstance.uc | 24 + exported/Engine/Classes/PrefabSequence.uc | 17 + .../Engine/Classes/PrefabSequenceContainer.uc | 9 + exported/Engine/Classes/PrimitiveComponent.uc | 425 + .../Classes/PrimitiveComponentFactory.uc | 12 + exported/Engine/Classes/ProcBuilding.uc | 251 + .../Engine/Classes/ProcBuildingRuleset.uc | 61 + .../Classes/ProcBuilding_SimpleLODActor.uc | 31 + exported/Engine/Classes/Projectile.uc | 322 + .../Engine/Classes/ProscribedReachSpec.uc | 8 + .../Classes/ProxyStaticMeshComponent.uc | 10 + exported/Engine/Classes/Pylon.uc | 254 + exported/Engine/Classes/PylonSeed.uc | 23 + exported/Engine/Classes/RB_BSJointActor.uc | 25 + exported/Engine/Classes/RB_BSJointSetup.uc | 3 + exported/Engine/Classes/RB_BodyInstance.uc | 102 + exported/Engine/Classes/RB_BodySetup.uc | 46 + exported/Engine/Classes/RB_ConstraintActor.uc | 147 + .../Classes/RB_ConstraintActorSpawnable.uc | 26 + .../Classes/RB_ConstraintDrawComponent.uc | 9 + .../Engine/Classes/RB_ConstraintInstance.uc | 93 + exported/Engine/Classes/RB_ConstraintSetup.uc | 68 + .../Classes/RB_CylindricalForceActor.uc | 85 + .../Engine/Classes/RB_DistanceJointSetup.uc | 3 + .../Classes/RB_ForceFieldExcludeVolume.uc | 24 + exported/Engine/Classes/RB_Handle.uc | 54 + exported/Engine/Classes/RB_HingeActor.uc | 26 + exported/Engine/Classes/RB_HingeSetup.uc | 9 + .../Engine/Classes/RB_LineImpulseActor.uc | 58 + exported/Engine/Classes/RB_PrismaticActor.uc | 26 + exported/Engine/Classes/RB_PrismaticSetup.uc | 10 + .../Engine/Classes/RB_PulleyJointActor.uc | 25 + .../Engine/Classes/RB_PulleyJointSetup.uc | 8 + .../Engine/Classes/RB_RadialForceActor.uc | 86 + .../Engine/Classes/RB_RadialImpulseActor.uc | 57 + .../Classes/RB_RadialImpulseComponent.uc | 21 + exported/Engine/Classes/RB_SkelJointSetup.uc | 12 + exported/Engine/Classes/RB_Spring.uc | 31 + .../Engine/Classes/RB_StayUprightSetup.uc | 13 + exported/Engine/Classes/RB_Thruster.uc | 42 + exported/Engine/Classes/RadialBlurActor.uc | 17 + .../Engine/Classes/RadialBlurComponent.uc | 61 + exported/Engine/Classes/ReachSpec.uc | 45 + exported/Engine/Classes/ReplicationInfo.uc | 13 + exported/Engine/Classes/ReverbVolume.uc | 137 + .../Engine/Classes/ReverbVolumeToggleable.uc | 47 + exported/Engine/Classes/RigidBodyBase.uc | 6 + exported/Engine/Classes/Route.uc | 51 + .../Engine/Classes/RouteRenderingComponent.uc | 9 + exported/Engine/Classes/SVehicle.uc | 663 + exported/Engine/Classes/SVehicleSimBase.uc | 32 + exported/Engine/Classes/SVehicleSimCar.uc | 18 + exported/Engine/Classes/SVehicleSimTank.uc | 24 + exported/Engine/Classes/SVehicleWheel.uc | 69 + exported/Engine/Classes/SaveGameSummary.uc | 5 + exported/Engine/Classes/SavedMove.uc | 322 + exported/Engine/Classes/Scene.uc | 24 + .../Engine/Classes/SceneCapture2DActor.uc | 27 + .../Engine/Classes/SceneCapture2DComponent.uc | 31 + .../Classes/SceneCapture2DHitMaskComponent.uc | 32 + exported/Engine/Classes/SceneCaptureActor.uc | 48 + .../Engine/Classes/SceneCaptureComponent.uc | 47 + .../Classes/SceneCaptureCubeMapActor.uc | 31 + .../Classes/SceneCaptureCubeMapComponent.uc | 14 + .../Engine/Classes/SceneCapturePortalActor.uc | 30 + .../Classes/SceneCapturePortalComponent.uc | 17 + .../Classes/SceneCaptureReflectActor.uc | 34 + .../Classes/SceneCaptureReflectComponent.uc | 13 + exported/Engine/Classes/Scout.uc | 129 + .../Engine/Classes/ScriptViewportClient.uc | 5 + exported/Engine/Classes/ScriptedTexture.uc | 20 + .../Classes/SeqAct_AIAbortMoveToActor.uc | 7 + .../Engine/Classes/SeqAct_AIMoveToActor.uc | 61 + .../Engine/Classes/SeqAct_AccessObjectList.uc | 18 + .../Classes/SeqAct_ActivateRemoteEvent.uc | 20 + .../Engine/Classes/SeqAct_ActorFactory.uc | 52 + .../Engine/Classes/SeqAct_ActorFactoryEx.uc | 13 + exported/Engine/Classes/SeqAct_AddFloat.uc | 17 + exported/Engine/Classes/SeqAct_AddInt.uc | 17 + .../Classes/SeqAct_AddRemoveFaceFXAnimSet.uc | 11 + exported/Engine/Classes/SeqAct_AndGate.uc | 15 + .../Engine/Classes/SeqAct_ApplySoundNode.uc | 11 + .../Engine/Classes/SeqAct_AssignController.uc | 9 + .../Engine/Classes/SeqAct_AttachToActor.uc | 24 + .../Engine/Classes/SeqAct_AttachToEvent.uc | 12 + exported/Engine/Classes/SeqAct_CameraFade.uc | 31 + .../Engine/Classes/SeqAct_CameraLookAt.uc | 47 + exported/Engine/Classes/SeqAct_CameraShake.uc | 40 + exported/Engine/Classes/SeqAct_CastToFloat.uc | 13 + exported/Engine/Classes/SeqAct_CastToInt.uc | 14 + .../Engine/Classes/SeqAct_ChangeCollision.uc | 19 + .../Engine/Classes/SeqAct_CommitMapChange.uc | 10 + .../Classes/SeqAct_ConcatenateStrings.uc | 22 + .../Engine/Classes/SeqAct_ConsoleCommand.uc | 27 + .../Classes/SeqAct_ControlMovieTexture.uc | 64 + .../Engine/Classes/SeqAct_ConvertToString.uc | 23 + exported/Engine/Classes/SeqAct_Delay.uc | 30 + exported/Engine/Classes/SeqAct_DelaySwitch.uc | 18 + exported/Engine/Classes/SeqAct_Destroy.uc | 10 + exported/Engine/Classes/SeqAct_DivideFloat.uc | 17 + exported/Engine/Classes/SeqAct_DivideInt.uc | 17 + exported/Engine/Classes/SeqAct_DrawText.uc | 26 + exported/Engine/Classes/SeqAct_FeatureTest.uc | 16 + .../Engine/Classes/SeqAct_FinishSequence.uc | 13 + .../Classes/SeqAct_FlyThroughHasEnded.uc | 7 + .../Engine/Classes/SeqAct_ForceFeedback.uc | 12 + .../Classes/SeqAct_ForceGarbageCollection.uc | 10 + exported/Engine/Classes/SeqAct_Gate.uc | 20 + exported/Engine/Classes/SeqAct_GetDistance.uc | 13 + .../Classes/SeqAct_GetLocationAndRotation.uc | 23 + exported/Engine/Classes/SeqAct_GetProperty.uc | 16 + .../Classes/SeqAct_GetVectorComponents.uc | 17 + exported/Engine/Classes/SeqAct_GetVelocity.uc | 20 + .../Engine/Classes/SeqAct_GiveInventory.uc | 11 + .../Classes/SeqAct_HeadTrackingControl.uc | 162 + exported/Engine/Classes/SeqAct_Interp.uc | 103 + .../Engine/Classes/SeqAct_IsInObjectList.uc | 17 + exported/Engine/Classes/SeqAct_Latent.uc | 24 + .../Engine/Classes/SeqAct_LevelStreaming.uc | 13 + .../Classes/SeqAct_LevelStreamingBase.uc | 16 + .../Engine/Classes/SeqAct_LevelVisibility.uc | 16 + exported/Engine/Classes/SeqAct_Log.uc | 30 + .../Engine/Classes/SeqAct_MITV_Activate.uc | 39 + exported/Engine/Classes/SeqAct_ModifyCover.uc | 16 + .../Engine/Classes/SeqAct_ModifyHealth.uc | 27 + .../Engine/Classes/SeqAct_ModifyObjectList.uc | 16 + .../Classes/SeqAct_MultiLevelStreaming.uc | 24 + .../Engine/Classes/SeqAct_MultiplyFloat.uc | 17 + exported/Engine/Classes/SeqAct_MultiplyInt.uc | 17 + .../Classes/SeqAct_ParticleEventGenerator.uc | 36 + .../Engine/Classes/SeqAct_PlayCameraAnim.uc | 30 + .../Engine/Classes/SeqAct_PlayFaceFXAnim.uc | 15 + .../Engine/Classes/SeqAct_PlayMusicTrack.uc | 12 + exported/Engine/Classes/SeqAct_PlaySound.uc | 34 + exported/Engine/Classes/SeqAct_Possess.uc | 15 + .../Engine/Classes/SeqAct_PrepareMapChange.uc | 16 + .../Classes/SeqAct_ProjectileFactory.uc | 23 + .../Engine/Classes/SeqAct_RandomSwitch.uc | 19 + exported/Engine/Classes/SeqAct_RangeSwitch.uc | 24 + .../Classes/SeqAct_SetActiveAnimChild.uc | 14 + .../Classes/SeqAct_SetApexClothingParam.uc | 10 + .../Classes/SeqAct_SetBlockRigidBody.uc | 10 + exported/Engine/Classes/SeqAct_SetBool.uc | 12 + .../Engine/Classes/SeqAct_SetCameraTarget.uc | 20 + .../Engine/Classes/SeqAct_SetDOFParams.uc | 36 + .../Classes/SeqAct_SetDamageInstigator.uc | 11 + exported/Engine/Classes/SeqAct_SetFloat.uc | 19 + exported/Engine/Classes/SeqAct_SetInt.uc | 19 + exported/Engine/Classes/SeqAct_SetLocation.uc | 25 + .../Classes/SeqAct_SetMatInstScalarParam.uc | 13 + .../Classes/SeqAct_SetMatInstTexParam.uc | 12 + .../Classes/SeqAct_SetMatInstVectorParam.uc | 19 + exported/Engine/Classes/SeqAct_SetMaterial.uc | 12 + exported/Engine/Classes/SeqAct_SetMesh.uc | 21 + .../Classes/SeqAct_SetMotionBlurParams.uc | 17 + exported/Engine/Classes/SeqAct_SetObject.uc | 19 + .../Classes/SeqAct_SetParticleSysParam.uc | 14 + exported/Engine/Classes/SeqAct_SetPhysics.uc | 11 + .../SeqAct_SetRigidBodyIgnoreVehicles.uc | 10 + .../Classes/SeqAct_SetSequenceVariable.uc | 9 + .../Classes/SeqAct_SetSkelControlTarget.uc | 12 + .../Engine/Classes/SeqAct_SetSoundMode.uc | 33 + exported/Engine/Classes/SeqAct_SetString.uc | 19 + exported/Engine/Classes/SeqAct_SetVector.uc | 37 + .../Classes/SeqAct_SetVectorComponents.uc | 17 + exported/Engine/Classes/SeqAct_SetVelocity.uc | 20 + .../Classes/SeqAct_SetWorldAttractorParam.uc | 39 + .../Engine/Classes/SeqAct_StreamInTextures.uc | 35 + .../Engine/Classes/SeqAct_SubtractFloat.uc | 17 + exported/Engine/Classes/SeqAct_SubtractInt.uc | 17 + exported/Engine/Classes/SeqAct_Switch.uc | 19 + exported/Engine/Classes/SeqAct_Teleport.uc | 59 + exported/Engine/Classes/SeqAct_Timer.uc | 15 + exported/Engine/Classes/SeqAct_Toggle.uc | 14 + .../SeqAct_ToggleAffectedByHitEffects.uc | 10 + .../Classes/SeqAct_ToggleCinematicMode.uc | 45 + .../Classes/SeqAct_ToggleConstraintDrive.uc | 14 + .../Engine/Classes/SeqAct_ToggleGodMode.uc | 10 + exported/Engine/Classes/SeqAct_ToggleHUD.uc | 16 + .../Engine/Classes/SeqAct_ToggleHidden.uc | 13 + exported/Engine/Classes/SeqAct_ToggleInput.uc | 13 + exported/Engine/Classes/SeqAct_Trace.uc | 31 + .../Classes/SeqAct_UpdatePhysBonesFromAnim.uc | 16 + .../Classes/SeqAct_WaitForLevelsVisible.uc | 34 + .../Engine/Classes/SeqCond_CompareBool.uc | 20 + .../Engine/Classes/SeqCond_CompareFloat.uc | 18 + exported/Engine/Classes/SeqCond_CompareInt.uc | 18 + .../Engine/Classes/SeqCond_CompareObject.uc | 12 + .../Engine/Classes/SeqCond_GetServerType.uc | 18 + exported/Engine/Classes/SeqCond_Increment.uc | 20 + .../Engine/Classes/SeqCond_IncrementFloat.uc | 20 + exported/Engine/Classes/SeqCond_IsAlive.uc | 11 + .../Engine/Classes/SeqCond_IsBenchmarking.uc | 16 + exported/Engine/Classes/SeqCond_IsConsole.uc | 10 + exported/Engine/Classes/SeqCond_IsInCombat.uc | 11 + exported/Engine/Classes/SeqCond_IsLoggedIn.uc | 48 + exported/Engine/Classes/SeqCond_IsPIE.uc | 16 + exported/Engine/Classes/SeqCond_IsSameTeam.uc | 11 + .../Engine/Classes/SeqCond_MatureLanguage.uc | 10 + exported/Engine/Classes/SeqCond_ShowGore.uc | 10 + exported/Engine/Classes/SeqCond_SwitchBase.uc | 30 + .../Engine/Classes/SeqCond_SwitchClass.uc | 56 + .../Engine/Classes/SeqCond_SwitchObject.uc | 72 + .../Engine/Classes/SeqCond_SwitchPlatform.uc | 24 + .../Classes/SeqEvent_AIReachedRouteActor.uc | 8 + .../Engine/Classes/SeqEvent_AISeeEnemy.uc | 10 + .../Engine/Classes/SeqEvent_AnalogInput.uc | 20 + .../Engine/Classes/SeqEvent_AnimNotify.uc | 13 + exported/Engine/Classes/SeqEvent_Console.uc | 14 + .../Classes/SeqEvent_ConstraintBroken.uc | 9 + exported/Engine/Classes/SeqEvent_Death.uc | 8 + exported/Engine/Classes/SeqEvent_Destroyed.uc | 8 + .../Engine/Classes/SeqEvent_GetInventory.uc | 10 + exported/Engine/Classes/SeqEvent_HitWall.uc | 10 + exported/Engine/Classes/SeqEvent_Input.uc | 21 + exported/Engine/Classes/SeqEvent_LOS.uc | 22 + .../Engine/Classes/SeqEvent_LevelBeginning.uc | 10 + .../Engine/Classes/SeqEvent_LevelLoaded.uc | 19 + .../Engine/Classes/SeqEvent_LevelStartup.uc | 10 + .../Engine/Classes/SeqEvent_MobileTouch.uc | 10 + exported/Engine/Classes/SeqEvent_Mover.uc | 98 + .../Engine/Classes/SeqEvent_ParticleEvent.uc | 41 + .../Classes/SeqEvent_PickupStatusChange.uc | 11 + .../Engine/Classes/SeqEvent_PlayerSpawned.uc | 11 + .../Classes/SeqEvent_ProjectileLanded.uc | 14 + .../Engine/Classes/SeqEvent_RemoteEvent.uc | 20 + .../Classes/SeqEvent_RigidBodyCollision.uc | 14 + exported/Engine/Classes/SeqEvent_SeeDeath.uc | 12 + .../Classes/SeqEvent_SequenceActivated.uc | 13 + .../Engine/Classes/SeqEvent_TakeDamage.uc | 144 + exported/Engine/Classes/SeqEvent_Touch.uc | 73 + .../Engine/Classes/SeqEvent_TouchInput.uc | 24 + exported/Engine/Classes/SeqEvent_Used.uc | 22 + exported/Engine/Classes/SeqVar_Bool.uc | 10 + exported/Engine/Classes/SeqVar_Byte.uc | 7 + exported/Engine/Classes/SeqVar_Character.uc | 6 + exported/Engine/Classes/SeqVar_External.uc | 12 + exported/Engine/Classes/SeqVar_Float.uc | 10 + exported/Engine/Classes/SeqVar_Group.uc | 12 + exported/Engine/Classes/SeqVar_Int.uc | 10 + exported/Engine/Classes/SeqVar_Name.uc | 7 + exported/Engine/Classes/SeqVar_Named.uc | 12 + exported/Engine/Classes/SeqVar_Object.uc | 25 + exported/Engine/Classes/SeqVar_ObjectList.uc | 22 + .../Engine/Classes/SeqVar_ObjectVolume.uc | 16 + exported/Engine/Classes/SeqVar_Player.uc | 40 + exported/Engine/Classes/SeqVar_RandomFloat.uc | 12 + exported/Engine/Classes/SeqVar_RandomInt.uc | 12 + exported/Engine/Classes/SeqVar_String.uc | 10 + exported/Engine/Classes/SeqVar_Union.uc | 7 + exported/Engine/Classes/SeqVar_Vector.uc | 10 + exported/Engine/Classes/Sequence.uc | 92 + exported/Engine/Classes/SequenceAction.uc | 15 + exported/Engine/Classes/SequenceCondition.uc | 10 + exported/Engine/Classes/SequenceEvent.uc | 51 + exported/Engine/Classes/SequenceFrame.uc | 25 + .../Engine/Classes/SequenceFrameWrapped.uc | 9 + exported/Engine/Classes/SequenceObject.uc | 54 + exported/Engine/Classes/SequenceOp.uc | 273 + exported/Engine/Classes/SequenceVariable.uc | 12 + exported/Engine/Classes/Settings.uc | 309 + exported/Engine/Classes/ShadowMap2D.uc | 16 + exported/Engine/Classes/ShadowMapTexture2D.uc | 11 + .../Classes/SharedCloudFileInterface.uc | 57 + .../Classes/SimpleSplineAudioComponent.uc | 62 + .../SimpleSplineNonLoopAudioComponent.uc | 37 + exported/Engine/Classes/SkelControlBase.uc | 69 + .../Classes/SkelControlFootPlacement.uc | 24 + .../Engine/Classes/SkelControlHandlebars.uc | 20 + exported/Engine/Classes/SkelControlLimb.uc | 32 + exported/Engine/Classes/SkelControlLookAt.uc | 75 + .../Engine/Classes/SkelControlSingleBone.uc | 15 + exported/Engine/Classes/SkelControlSpline.uc | 26 + exported/Engine/Classes/SkelControlTrail.uc | 23 + exported/Engine/Classes/SkelControlWheel.uc | 26 + exported/Engine/Classes/SkelControl_CCD_IK.uc | 24 + .../Engine/Classes/SkelControl_Multiply.uc | 11 + .../Engine/Classes/SkelControl_TwistBone.uc | 12 + exported/Engine/Classes/SkeletalMesh.uc | 424 + exported/Engine/Classes/SkeletalMeshActor.uc | 661 + .../SkeletalMeshActorBasedOnExtremeContent.uc | 108 + .../Engine/Classes/SkeletalMeshActorMAT.uc | 120 + .../Classes/SkeletalMeshActorMATSpawnable.uc | 45 + .../Classes/SkeletalMeshActorMATWalkable.uc | 59 + .../Classes/SkeletalMeshActorSpawnable.uc | 51 + .../Classes/SkeletalMeshCinematicActor.uc | 59 + .../Engine/Classes/SkeletalMeshComponent.uc | 1067 ++ exported/Engine/Classes/SkeletalMeshSocket.uc | 15 + exported/Engine/Classes/SkyLight.uc | 19 + exported/Engine/Classes/SkyLightComponent.uc | 13 + exported/Engine/Classes/SkyLightToggleable.uc | 21 + .../Engine/Classes/SlotToSlotReachSpec.uc | 9 + exported/Engine/Classes/SoundClass.uc | 64 + exported/Engine/Classes/SoundCue.uc | 42 + exported/Engine/Classes/SoundMode.uc | 63 + exported/Engine/Classes/SoundNode.uc | 8 + exported/Engine/Classes/SoundNodeAmbient.uc | 52 + .../Engine/Classes/SoundNodeAmbientNonLoop.uc | 10 + .../Classes/SoundNodeAmbientNonLoopToggle.uc | 6 + .../Engine/Classes/SoundNodeAttenuation.uc | 47 + .../Classes/SoundNodeAttenuationAndGain.uc | 36 + .../Engine/Classes/SoundNodeConcatenator.uc | 6 + .../Classes/SoundNodeConcatenatorRadio.uc | 4 + exported/Engine/Classes/SoundNodeDelay.uc | 8 + .../Classes/SoundNodeDistanceCrossFade.uc | 26 + exported/Engine/Classes/SoundNodeDoppler.uc | 11 + exported/Engine/Classes/SoundNodeEnveloper.uc | 31 + exported/Engine/Classes/SoundNodeLooping.uc | 16 + exported/Engine/Classes/SoundNodeMature.uc | 4 + exported/Engine/Classes/SoundNodeMixer.uc | 6 + exported/Engine/Classes/SoundNodeModulator.uc | 19 + .../Classes/SoundNodeModulatorContinuous.uc | 27 + .../Engine/Classes/SoundNodeOscillator.uc | 19 + exported/Engine/Classes/SoundNodeRandom.uc | 15 + exported/Engine/Classes/SoundNodeWave.uc | 67 + exported/Engine/Classes/SoundNodeWaveParam.uc | 6 + .../Engine/Classes/SoundNodeWaveStreaming.uc | 29 + exported/Engine/Classes/SpeechRecognition.uc | 67 + exported/Engine/Classes/SpeedTree.uc | 27 + exported/Engine/Classes/SpeedTreeActor.uc | 27 + .../Engine/Classes/SpeedTreeActorFactory.uc | 14 + exported/Engine/Classes/SpeedTreeComponent.uc | 100 + .../Classes/SpeedTreeComponentFactory.uc | 23 + .../SphericalHarmonicLightComponent.uc | 12 + exported/Engine/Classes/SplineActor.uc | 108 + .../Engine/Classes/SplineAudioComponent.uc | 28 + exported/Engine/Classes/SplineComponent.uc | 33 + .../Classes/SplineComponentSimplified.uc | 7 + exported/Engine/Classes/SplineLoftActor.uc | 39 + .../Engine/Classes/SplineLoftActorMovable.uc | 20 + .../Engine/Classes/SplineMeshComponent.uc | 44 + exported/Engine/Classes/SpotLight.uc | 27 + exported/Engine/Classes/SpotLightComponent.uc | 20 + exported/Engine/Classes/SpotLightMovable.uc | 31 + .../Engine/Classes/SpotLightToggleable.uc | 58 + exported/Engine/Classes/SpriteComponent.uc | 28 + .../Classes/StaticLightCollectionActor.uc | 14 + exported/Engine/Classes/StaticMeshActor.uc | 57 + .../Engine/Classes/StaticMeshActorBase.uc | 18 + .../StaticMeshActorBasedOnExtremeContent.uc | 87 + .../Classes/StaticMeshCollectionActor.uc | 13 + .../Engine/Classes/StaticMeshComponent.uc | 96 + .../Classes/StaticMeshComponentFactory.uc | 16 + exported/Engine/Classes/StringsTag.uc | 10 + exported/Engine/Classes/Surface.uc | 9 + exported/Engine/Classes/SwatTurnReachSpec.uc | 9 + exported/Engine/Classes/TargetPoint.uc | 14 + exported/Engine/Classes/TeamInfo.uc | 111 + exported/Engine/Classes/TeleportReachSpec.uc | 9 + exported/Engine/Classes/Teleporter.uc | 266 + exported/Engine/Classes/Terrain.uc | 233 + exported/Engine/Classes/TerrainComponent.uc | 67 + exported/Engine/Classes/TerrainLayerSetup.uc | 53 + exported/Engine/Classes/TerrainMaterial.uc | 28 + .../Engine/Classes/TerrainWeightMapTexture.uc | 10 + .../Engine/Classes/TestSplittingVolume.uc | 21 + exported/Engine/Classes/Texture.uc | 265 + exported/Engine/Classes/Texture2D.uc | 65 + exported/Engine/Classes/Texture2DComposite.uc | 44 + exported/Engine/Classes/Texture2DDynamic.uc | 29 + exported/Engine/Classes/TextureCube.uc | 15 + exported/Engine/Classes/TextureFlipBook.uc | 62 + exported/Engine/Classes/TextureMovie.uc | 44 + .../Engine/Classes/TextureRenderTarget.uc | 16 + .../Engine/Classes/TextureRenderTarget2D.uc | 20 + .../Engine/Classes/TextureRenderTargetCube.uc | 11 + exported/Engine/Classes/TgAnimTreeComment.uc | 5 + .../Engine/Classes/TgSilhouetteComponent.uc | 44 + exported/Engine/Classes/TranslationContext.uc | 7 + exported/Engine/Classes/TranslatorTag.uc | 7 + exported/Engine/Classes/Trigger.uc | 118 + .../Engine/Classes/TriggerStreamingLevel.uc | 68 + exported/Engine/Classes/TriggerVolume.uc | 40 + exported/Engine/Classes/Trigger_Dynamic.uc | 25 + exported/Engine/Classes/Trigger_LOS.uc | 90 + exported/Engine/Classes/Trigger_PawnsOnly.uc | 26 + exported/Engine/Classes/TriggeredPath.uc | 109 + .../Engine/Classes/TwitterIntegrationBase.uc | 43 + exported/Engine/Classes/UICharacterSummary.uc | 10 + exported/Engine/Classes/UIDataProvider.uc | 6 + .../Engine/Classes/UIDataProvider_MenuItem.uc | 42 + .../UIDataProvider_OnlineFriendMessages.uc | 122 + .../Classes/UIDataProvider_OnlineFriends.uc | 153 + .../UIDataProvider_OnlinePartyChatList.uc | 105 + .../UIDataProvider_OnlinePlayerDataBase.uc | 29 + .../UIDataProvider_OnlinePlayerStorage.uc | 294 + ...UIDataProvider_OnlinePlayerStorageArray.uc | 10 + .../UIDataProvider_OnlineProfileSettings.uc | 76 + .../UIDataProvider_PlayerAchievements.uc | 147 + .../Engine/Classes/UIDataProvider_Settings.uc | 8 + .../Classes/UIDataProvider_SettingsArray.uc | 11 + exported/Engine/Classes/UIDataStore.uc | 104 + .../Engine/Classes/UIDataStorePublisher.uc | 6 + .../Engine/Classes/UIDataStoreSubscriber.uc | 21 + .../Classes/UIDataStore_DynamicResource.uc | 114 + exported/Engine/Classes/UIDataStore_Fonts.uc | 10 + .../Classes/UIDataStore_GameResource.uc | 36 + .../Engine/Classes/UIDataStore_GameState.uc | 19 + .../Engine/Classes/UIDataStore_InputAlias.uc | 63 + .../Engine/Classes/UIDataStore_MenuItems.uc | 40 + .../Classes/UIDataStore_OnlineGameSearch.uc | 286 + .../Classes/UIDataStore_OnlineGameSettings.uc | 136 + .../Classes/UIDataStore_OnlinePlayerData.uc | 206 + .../Engine/Classes/UIDataStore_OnlineStats.uc | 166 + .../Engine/Classes/UIDataStore_Registry.uc | 75 + exported/Engine/Classes/UIDataStore_Remote.uc | 11 + .../Engine/Classes/UIDataStore_Settings.uc | 11 + .../Classes/UIDataStore_StringAliasMap.uc | 38 + .../Engine/Classes/UIDataStore_StringBase.uc | 11 + exported/Engine/Classes/UIGameInfoSummary.uc | 14 + exported/Engine/Classes/UIInteraction.uc | 402 + exported/Engine/Classes/UIManager.uc | 63 + exported/Engine/Classes/UIMapSummary.uc | 10 + .../Engine/Classes/UIPropertyDataProvider.uc | 22 + .../Classes/UIResourceCombinationProvider.uc | 24 + .../Engine/Classes/UIResourceDataProvider.uc | 21 + exported/Engine/Classes/UIRoot.uc | 208 + exported/Engine/Classes/UISceneClient.uc | 43 + exported/Engine/Classes/UISoundTheme.uc | 37 + exported/Engine/Classes/UIWeaponSummary.uc | 10 + .../Engine/Classes/UberPostProcessEffect.uc | 67 + ...erCloudFileCloudSaveSystemDataBlobStore.uc | 213 + .../Engine/Classes/UserCloudFileInterface.uc | 107 + exported/Engine/Classes/Vehicle.uc | 869 + exported/Engine/Classes/Volume.uc | 143 + exported/Engine/Classes/VolumePathNode.uc | 32 + exported/Engine/Classes/VolumeTimer.uc | 19 + exported/Engine/Classes/WallTransReachSpec.uc | 7 + exported/Engine/Classes/WaterVolume.uc | 87 + exported/Engine/Classes/WaveFormBase.uc | 13 + exported/Engine/Classes/Weapon.uc | 84 + .../Engine/Classes/WindDirectionalSource.uc | 21 + .../Classes/WindDirectionalSourceComponent.uc | 17 + exported/Engine/Classes/WindPointSource.uc | 21 + .../Classes/WindPointSourceComponent.uc | 13 + exported/Engine/Classes/WorldAttractor.uc | 106 + exported/Engine/Classes/WorldInfo.uc | 926 + exported/Engine/Classes/ZoneInfo.uc | 19 + .../Classes/DebugCameraController.uc | 231 + .../GameFramework/Classes/DebugCameraHUD.uc | 152 + .../GameFramework/Classes/DebugCameraInput.uc | 34 + .../Classes/DynamicGameCrowdDestination.uc | 20 + .../Classes/DynamicSpriteComponent.uc | 16 + .../GameFramework/Classes/FrameworkGame.uc | 55 + .../Classes/GameAICmd_Hover_MoveToGoal.uc | 193 + .../GameAICmd_Hover_MoveToGoal_Mesh.uc | 514 + .../GameFramework/Classes/GameAICommand.uc | 223 + .../GameFramework/Classes/GameAIController.uc | 166 + .../GameFramework/Classes/GameCameraBase.uc | 47 + .../Classes/GameCameraBlockingVolume.uc | 18 + .../GameFramework/Classes/GameCheatManager.uc | 222 + .../GameFramework/Classes/GameCrowdAgent.uc | 1317 ++ .../Classes/GameCrowdAgentBehavior.uc | 153 + .../GameFramework/Classes/GameCrowdAgentSM.uc | 84 + .../Classes/GameCrowdAgentSkeletal.uc | 289 + .../Classes/GameCrowdBehaviorPoint.uc | 73 + .../GameCrowdBehavior_PlayAnimation.uc | 195 + .../Classes/GameCrowdBehavior_RunFromPanic.uc | 79 + .../Classes/GameCrowdBehavior_WaitForGroup.uc | 43 + .../Classes/GameCrowdBehavior_WaitInQueue.uc | 65 + .../Classes/GameCrowdDestination.uc | 767 + .../Classes/GameCrowdDestinationQueuePoint.uc | 198 + .../GameFramework/Classes/GameCrowdGroup.uc | 41 + .../Classes/GameCrowdInfoVolume.uc | 59 + .../GameCrowdInteractionDestination.uc | 23 + .../Classes/GameCrowdInteractionPoint.uc | 65 + .../Classes/GameCrowdPopulationManager.uc | 755 + .../Classes/GameCrowdReplicationActor.uc | 39 + .../Classes/GameCrowdSpawnInterface.uc | 7 + .../Classes/GameCrowdSpawnRelativeActor.uc | 17 + .../Classes/GameCrowdSpawnerInterface.uc | 12 + .../Classes/GameCrowd_ListOfAgents.uc | 4 + .../GameDestinationConnRenderingComponent.uc | 12 + .../GameFramework/Classes/GameExplosion.uc | 66 + .../Classes/GameExplosionActor.uc | 580 + .../Classes/GameExplosionContent.uc | 22 + .../GameFramework/Classes/GameFixedCamera.uc | 40 + .../GameFramework/Classes/GameFramework.UPKG | 4 + .../Classes/GameKActorSpawnableEffect.uc | 67 + exported/GameFramework/Classes/GamePawn.uc | 83 + .../GameFramework/Classes/GamePlayerCamera.uc | 244 + .../Classes/GamePlayerController.uc | 284 + .../Classes/GameSkelCtrl_Recoil.uc | 79 + .../GameFramework/Classes/GameSpecialMove.uc | 132 + .../GameFramework/Classes/GameStateObject.uc | 54 + .../Classes/GameStatsAggregator.uc | 186 + .../Classes/GameThirdPersonCamera.uc | 442 + .../Classes/GameThirdPersonCameraMode.uc | 249 + .../GameThirdPersonCameraMode_Default.uc | 27 + exported/GameFramework/Classes/GameTypes.uc | 273 + .../GameFramework/Classes/GameWaveForms.uc | 30 + .../Classes/MobileDebugCameraController.uc | 149 + .../Classes/MobileDebugCameraHUD.uc | 160 + .../Classes/MobileDebugCameraInput.uc | 33 + exported/GameFramework/Classes/MobileHUD.uc | 578 + .../GameFramework/Classes/MobileInputZone.uc | 226 + .../GameFramework/Classes/MobileMenuBar.uc | 218 + .../Classes/MobileMenuBarItem.uc | 10 + .../GameFramework/Classes/MobileMenuButton.uc | 73 + .../Classes/MobileMenuElement.uc | 23 + .../GameFramework/Classes/MobileMenuGame.uc | 39 + .../GameFramework/Classes/MobileMenuImage.uc | 76 + .../Classes/MobileMenuInventory.uc | 415 + .../GameFramework/Classes/MobileMenuLabel.uc | 41 + .../GameFramework/Classes/MobileMenuList.uc | 878 + .../Classes/MobileMenuListItem.uc | 9 + .../GameFramework/Classes/MobileMenuObject.uc | 211 + .../Classes/MobileMenuObjectProxy.uc | 35 + .../Classes/MobileMenuPlayerController.uc | 18 + .../GameFramework/Classes/MobileMenuScene.uc | 201 + .../Classes/MobilePlayerInput.uc | 689 + .../Classes/MobileSecondaryViewportClient.uc | 31 + .../Classes/MobileTouchInputVolume.uc | 79 + .../Classes/NavMeshGoal_OutOfViewFrom.uc | 36 + ...asAgainstPolysWithinDistanceOfLocations.uc | 36 + .../Classes/PMESTG_LeaveADecalBase.uc | 6 + .../Classes/PlayerCollectorGame.uc | 41 + .../Classes/SecondaryViewportClient.uc | 8 + .../Classes/SeqAct_ControlGameMovie.uc | 21 + .../GameFramework/Classes/SeqAct_Deproject.uc | 22 + ...SeqAct_GameCrowdPopulationManagerToggle.uc | 121 + .../Classes/SeqAct_GameCrowdSpawner.uc | 19 + .../Classes/SeqAct_MobileAddInputZones.uc | 13 + .../Classes/SeqAct_MobileClearInputZones.uc | 10 + .../Classes/SeqAct_MobileRemoveInputZone.uc | 12 + .../Classes/SeqAct_MobileSaveLoadValue.uc | 23 + .../Classes/SeqAct_ModifyProperty.uc | 25 + .../Classes/SeqAct_PlayAgentAnimation.uc | 69 + .../Classes/SeqAct_ToggleMouseCursor.uc | 10 + .../SeqEvent_CrowdAgentReachedDestination.uc | 13 + .../Classes/SeqEvent_HudRender.uc | 55 + .../Classes/SeqEvent_HudRenderImage.uc | 41 + .../Classes/SeqEvent_HudRenderText.uc | 74 + .../Classes/SeqEvent_MobileBase.uc | 42 + .../Classes/SeqEvent_MobileButton.uc | 14 + .../Classes/SeqEvent_MobileInput.uc | 23 + .../Classes/SeqEvent_MobileLook.uc | 17 + .../Classes/SeqEvent_MobileMotion.uc | 28 + .../Classes/SeqEvent_MobileObjectPicker.uc | 19 + .../Classes/SeqEvent_MobileRawInput.uc | 49 + .../Classes/SeqEvent_MobileSwipe.uc | 22 + .../SeqEvent_MobileTouchInputVolume.uc | 12 + .../Classes/SeqEvent_MobileZoneBase.uc | 19 + .../Classes/TouchableElement3D.uc | 17 + .../Classes/ClientBeaconAddressResolver.uc | 5 + exported/IpDrv/Classes/HelloWeb.uc | 69 + exported/IpDrv/Classes/ImageServer.uc | 52 + exported/IpDrv/Classes/InternetLink.uc | 74 + exported/IpDrv/Classes/IpDrv.UPKG | 4 + exported/IpDrv/Classes/MCPBase.uc | 6 + exported/IpDrv/Classes/McpClashMobBase.uc | 310 + .../IpDrv/Classes/McpClashMobFileDownload.uc | 16 + exported/IpDrv/Classes/McpClashMobManager.uc | 1156 ++ exported/IpDrv/Classes/McpGroupsBase.uc | 199 + exported/IpDrv/Classes/McpGroupsManager.uc | 701 + exported/IpDrv/Classes/McpIdMappingBase.uc | 67 + exported/IpDrv/Classes/McpIdMappingManager.uc | 250 + .../IpDrv/Classes/McpManagedValueManager.uc | 370 + .../Classes/McpManagedValueManagerBase.uc | 106 + exported/IpDrv/Classes/McpMessageBase.uc | 150 + exported/IpDrv/Classes/McpMessageManager.uc | 495 + exported/IpDrv/Classes/McpServerTimeBase.uc | 42 + .../IpDrv/Classes/McpServerTimeManager.uc | 94 + exported/IpDrv/Classes/McpServiceBase.uc | 50 + exported/IpDrv/Classes/McpServiceConfig.uc | 19 + .../IpDrv/Classes/McpUserCloudFileDownload.uc | 734 + .../IpDrv/Classes/McpUserInventoryBase.uc | 211 + .../IpDrv/Classes/McpUserInventoryManager.uc | 1011 + exported/IpDrv/Classes/McpUserManager.uc | 456 + exported/IpDrv/Classes/McpUserManagerBase.uc | 104 + exported/IpDrv/Classes/MeshBeacon.uc | 110 + exported/IpDrv/Classes/MeshBeaconClient.uc | 108 + exported/IpDrv/Classes/MeshBeaconHost.uc | 138 + .../IpDrv/Classes/OnlineAuthInterfaceImpl.uc | 449 + .../IpDrv/Classes/OnlineEventsInterfaceMcp.uc | 46 + .../IpDrv/Classes/OnlineGameInterfaceImpl.uc | 963 + .../IpDrv/Classes/OnlineImageDownloaderWeb.uc | 323 + .../Classes/OnlineImageDownloaderWebHelper.uc | 8 + .../IpDrv/Classes/OnlineNewsInterfaceMcp.uc | 84 + .../IpDrv/Classes/OnlinePlaylistManager.uc | 576 + .../IpDrv/Classes/OnlinePlaylistProvider.uc | 11 + .../Classes/OnlineSubsystemCommonImpl.uc | 63 + .../Classes/OnlineTitleFileDownloadBase.uc | 129 + .../Classes/OnlineTitleFileDownloadMcp.uc | 37 + .../Classes/OnlineTitleFileDownloadWeb.uc | 246 + exported/IpDrv/Classes/PartyBeacon.uc | 89 + exported/IpDrv/Classes/PartyBeaconClient.uc | 73 + exported/IpDrv/Classes/PartyBeaconHost.uc | 265 + exported/IpDrv/Classes/TcpLink.uc | 86 + .../IpDrv/Classes/TitleFileDownloadCache.uc | 112 + .../Classes/UIDataStore_OnlinePlaylists.uc | 86 + exported/IpDrv/Classes/WebApplication.uc | 46 + exported/IpDrv/Classes/WebConnection.uc | 342 + exported/IpDrv/Classes/WebRequest.uc | 258 + exported/IpDrv/Classes/WebResponse.uc | 245 + exported/IpDrv/Classes/WebServer.uc | 182 + .../Classes/MctsOnlineSettings.uc | 2 + .../Classes/OnlineGameInterfaceMcts.uc | 142 + .../Classes/OnlineSubsystemMcts.UPKG | 4 + .../Classes/OnlineSubsystemMcts.uc | 1073 ++ .../Classes/OnlineVoiceInterfaceMcts.uc | 188 + exported/PlatformCommon/Classes/None.uc | 1 + .../Classes/PComBrowserInteraction.uc | 7 + .../Classes/PComCheatManager.uc | 3 + .../PlatformCommon/Classes/PComGameEngine.uc | 83 + .../Classes/PComGameViewportClient.uc | 60 + .../Classes/PComImageDownloader.uc | 47 + .../Classes/PComInputLightingEffect.uc | 71 + .../PlatformCommon/Classes/PComJsonHandler.uc | 13 + .../PlatformCommon/Classes/PComMusicTheme.uc | 25 + .../Classes/PComMusicThemeFactory.uc | 11 + .../Classes/PComMusicThemePlayer.uc | 47 + .../Classes/PComMusicThemeSyncActor.uc | 42 + .../Classes/PComOpenBroadcaster.uc | 104 + .../Classes/PComPerformanceCaptureBase.uc | 157 + .../Classes/PComPerformanceCaptureGame.uc | 43 + .../Classes/PComPerformanceCaptureNode.uc | 14 + .../Classes/PComPictureInPicture.uc | 101 + .../Classes/PComPictureInPictureScene.uc | 61 + .../Classes/PComPlayerController.uc | 1377 ++ .../PlatformCommon/Classes/PComPlayerInput.uc | 262 + .../Classes/PComPlayerProfile.uc | 83 + .../Classes/PComPositionHistoryComponent.uc | 2 + .../PComPositionHistoryServerComponent.uc | 55 + .../Classes/PComRepInfo_Game.uc | 35 + .../Classes/PComSeqAct_PlayMusicEvent.uc | 12 + .../PlatformCommon/Classes/PComStructures.uc | 47 + .../Classes/PComSupportCommands.uc | 252 + .../Classes/PComUIManagerBase.uc | 57 + .../Classes/PComUtilityFunctions.uc | 11 + .../PlatformCommon/Classes/PComVideoPlayer.uc | 58 + .../Classes/PComVoiceInterfaceCurseConfig.uc | 17 + .../Classes/PlatformCommon.UPKG | 4 + exported/PlatformCommon/Classes/SearFiles.uc | 3 + .../TgClient/Classes/DelayQueueInterface.uc | 3 + exported/TgClient/Classes/None.uc | 1 + exported/TgClient/Classes/TgBlinder.uc | 5 + exported/TgClient/Classes/TgBrowserManager.uc | 206 + exported/TgClient/Classes/TgChatData.uc | 36 + exported/TgClient/Classes/TgClient.UPKG | 4 + exported/TgClient/Classes/TgClientHUD.uc | 166 + exported/TgClient/Classes/TgDataChunk.uc | 92 + exported/TgClient/Classes/TgDataGroup_Game.uc | 15 + exported/TgClient/Classes/TgDataHandler.uc | 14 + exported/TgClient/Classes/TgDataManager.uc | 8 + exported/TgClient/Classes/TgDataObject.uc | 106 + exported/TgClient/Classes/TgData_Cards.uc | 59 + exported/TgClient/Classes/TgData_EOM.uc | 72 + .../TgClient/Classes/TgData_Notifications.uc | 51 + .../TgClient/Classes/TgDevMenuMoviePlayer.uc | 67 + exported/TgClient/Classes/TgGFxGroup.uc | 56 + exported/TgClient/Classes/TgGameDC_Chat.uc | 119 + exported/TgClient/Classes/TgGameDC_Device.uc | 55 + .../TgClient/Classes/TgGameDC_DeviceList.uc | 27 + exported/TgClient/Classes/TgGameDC_Effect.uc | 19 + .../TgClient/Classes/TgGameDC_EffectList.uc | 12 + exported/TgClient/Classes/TgGameDC_Game.uc | 29 + .../TgClient/Classes/TgGameDC_Guardian.uc | 2 + .../TgClient/Classes/TgGameDC_LocalPlayer.uc | 16 + .../TgClient/Classes/TgGameDC_MapEntity.uc | 16 + exported/TgClient/Classes/TgGameDC_Minion.uc | 2 + exported/TgClient/Classes/TgGameDC_Player.uc | 38 + .../TgClient/Classes/TgGameDC_PlayerVitals.uc | 32 + .../Classes/TgGameDC_RespawnLocation.uc | 2 + exported/TgClient/Classes/TgGameDC_Target.uc | 8 + exported/TgClient/Classes/TgGameDC_Team.uc | 30 + exported/TgClient/Classes/TgGameDC_Tower.uc | 5 + exported/TgClient/Classes/TgGameDC_Turret.uc | 2 + .../TgClient/Classes/TgGameDataHandler.uc | 7 + exported/TgClient/Classes/TgGameHUD.uc | 349 + exported/TgClient/Classes/TgGameLaunch.uc | 15 + .../TgClient/Classes/TgGameSceneManager.uc | 2 + .../TgClient/Classes/TgGameViewportClient.uc | 104 + exported/TgClient/Classes/TgGfxChatModal.uc | 1 + exported/TgClient/Classes/TgGfxCursor.uc | 9 + .../TgClient/Classes/TgGfxFriendManagement.uc | 285 + exported/TgClient/Classes/TgGfxScene.uc | 479 + exported/TgClient/Classes/TgGfxTeamInvite.uc | 24 + exported/TgClient/Classes/TgLobbyHUD.uc | 264 + exported/TgClient/Classes/TgMiniMap.uc | 327 + .../TgClient/Classes/TgMiniMap_Targeting.uc | 11 + exported/TgClient/Classes/TgPartyManager.uc | 8 + .../TgClient/Classes/TgRewardCenterManager.uc | 284 + exported/TgClient/Classes/TgSceneManager.uc | 47 + exported/TgClient/Classes/TgSetting.uc | 144 + .../TgClient/Classes/TgSettingsManager.uc | 86 + exported/TgClient/Classes/TgSpectatorHUD.uc | 100 + exported/TgClient/Classes/TgStreamManager.uc | 306 + .../TgClient/Classes/TgSynchronizedTimer.uc | 32 + exported/TgClient/Classes/TgThreatModel.uc | 27 + exported/TgClient/Classes/UIAcademy.uc | 44 + .../TgClient/Classes/UIAccountLinkPopup.uc | 35 + .../TgClient/Classes/UIAchievementPopups.uc | 68 + exported/TgClient/Classes/UIAcquisition.uc | 330 + exported/TgClient/Classes/UIBackground.uc | 17 + exported/TgClient/Classes/UIChampion.uc | 318 + exported/TgClient/Classes/UIChampionSelect.uc | 65 + exported/TgClient/Classes/UIChatTab.uc | 76 + exported/TgClient/Classes/UIChests.uc | 236 + exported/TgClient/Classes/UICompetitive.uc | 10 + .../Classes/UICompetitivePopupWelcome.uc | 12 + .../Classes/UICompetitiveRankChange.uc | 11 + .../Classes/UICompetitiveRankDecay.uc | 11 + exported/TgClient/Classes/UIComponent.uc | 67 + exported/TgClient/Classes/UIComponentPool.uc | 5 + .../Classes/UIComponent_AbilityPointsPool.uc | 15 + .../UIComponent_AcquisitionCarousel.uc | 59 + .../Classes/UIComponent_ChampionOverview.uc | 62 + .../Classes/UIComponent_ChampionRankRow.uc | 12 + .../Classes/UIComponent_ChampionSimple.uc | 6 + .../UIComponent_CompetitiveRankChange.uc | 6 + .../UIComponent_CompetitiveRankedDecay.uc | 5 + .../Classes/UIComponent_CompetitiveWelcome.uc | 6 + .../Classes/UIComponent_DailyRewards.uc | 41 + .../Classes/UIComponent_DemonTeleportTimer.uc | 7 + .../TgClient/Classes/UIComponent_Dropdown.uc | 7 + .../Classes/UIComponent_GamepadKey.uc | 4 + .../UIComponent_GenericTitleButtons.uc | 11 + .../UIComponent_GenericTitleInputButtons.uc | 15 + .../Classes/UIComponent_GoalReward.uc | 12 + .../TgClient/Classes/UIComponent_HeaderTab.uc | 2 + .../Classes/UIComponent_HeaderTabs.uc | 4 + .../TgClient/Classes/UIComponent_HealthBar.uc | 68 + .../UIComponent_HealthBarDamageOverlay.uc | 36 + .../Classes/UIComponent_HealthBar_Overlay.uc | 38 + ...IComponent_HealthBar_Overlay_Deployable.uc | 4 + .../UIComponent_HealthBar_Overlay_Player.uc | 8 + .../Classes/UIComponent_HealthBar_Player.uc | 25 + .../Classes/UIComponent_HoldPrompt.uc | 22 + .../Classes/UIComponent_HudScoreTDM.uc | 37 + .../Classes/UIComponent_HudSkillIcon.uc | 26 + .../Classes/UIComponent_HudSkillIcon_Ult.uc | 13 + .../TgClient/Classes/UIComponent_IconTF.uc | 4 + .../Classes/UIComponent_Interactable.uc | 5 + ...mponent_Interactable_LobbyEquipSlotItem.uc | 11 + .../UIComponent_Interactable_LobbySlotItem.uc | 23 + exported/TgClient/Classes/UIComponent_Item.uc | 23 + .../TgClient/Classes/UIComponent_ItemIcon.uc | 7 + .../TgClient/Classes/UIComponent_ItemMini.uc | 4 + .../UIComponent_ItemObtainabilityBanner.uc | 9 + .../Classes/UIComponent_ItemTooltip.uc | 12 + .../TgClient/Classes/UIComponent_Item_Card.uc | 8 + .../Classes/UIComponent_LeaderboardPlayer.uc | 15 + .../Classes/UIComponent_LeagueTierEntry.uc | 7 + .../Classes/UIComponent_LevelProgress.uc | 9 + .../TgClient/Classes/UIComponent_LexTarget.uc | 7 + .../Classes/UIComponent_LexVengeance.uc | 161 + exported/TgClient/Classes/UIComponent_List.uc | 24 + .../UIComponent_MasteryRewardsEntry.uc | 67 + .../UIComponent_MasteryRewardsPopup.uc | 13 + .../Classes/UIComponent_MatchDisplay.uc | 18 + .../Classes/UIComponent_MatchPlayerEntry.uc | 30 + .../Classes/UIComponent_OracleSoulCharges.uc | 122 + .../Classes/UIComponent_OwlStealthBar.uc | 9 + .../Classes/UIComponent_OwnershipProgress.uc | 7 + .../TgClient/Classes/UIComponent_PlayPanel.uc | 29 + .../TgClient/Classes/UIComponent_Popup.uc | 14 + .../Classes/UIComponent_PopupManager.uc | 23 + .../Classes/UIComponent_PortraitBorder.uc | 6 + .../UIComponent_ProgressBarHorizontal.uc | 11 + .../TgClient/Classes/UIComponent_Quest.uc | 32 + .../Classes/UIComponent_RankedEOMProgress.uc | 9 + .../Classes/UIComponent_RankedProgress.uc | 11 + .../TgClient/Classes/UIComponent_ScrollBar.uc | 16 + .../Classes/UIComponent_SocialPlayer.uc | 6 + .../TgClient/Classes/UIComponent_String.uc | 4 + .../Classes/UIComponent_StringWithCount.uc | 4 + .../Classes/UIComponent_TalentSelection.uc | 13 + .../TgClient/Classes/UIComponent_Targeter.uc | 31 + .../Classes/UIComponent_TargeterManager.uc | 7 + .../UIComponent_Targeter_AstralMark.uc | 9 + .../UIComponent_Targeter_BracketTargeter.uc | 11 + .../UIComponent_Targeter_DimensionalLink.uc | 10 + .../UIComponent_Targeter_Headhunter.uc | 5 + .../UIComponent_Targeter_HuntersMark.uc | 9 + .../UIComponent_Targeter_PointTargeter.uc | 2 + .../UIComponent_Targeter_Protection.uc | 9 + .../UIComponent_Targeter_RestoreSoul.uc | 9 + .../Classes/UIComponent_TeamPortraits.uc | 10 + .../Classes/UIComponent_TelepunchTarget.uc | 12 + .../Classes/UIComponent_TitleTooltip.uc | 12 + .../Classes/UIComponent_TitlesView.uc | 27 + .../Classes/UIComponent_TitlesViewEntry.uc | 22 + .../TgClient/Classes/UIComponent_Toggle.uc | 5 + .../Classes/UIComponent_TorvaldShieldBar.uc | 19 + .../Classes/UIComponent_TorvaldShieldText.uc | 9 + exported/TgClient/Classes/UICustomGame.uc | 204 + exported/TgClient/Classes/UIDailyReward.uc | 11 + exported/TgClient/Classes/UIData.uc | 2 + exported/TgClient/Classes/UIDataChampion.uc | 80 + exported/TgClient/Classes/UIDataChampions.uc | 9 + exported/TgClient/Classes/UIDataCommon.uc | 28 + exported/TgClient/Classes/UIDataGoals.uc | 7 + exported/TgClient/Classes/UIDataItem.uc | 92 + exported/TgClient/Classes/UIDataLeague.uc | 13 + .../TgClient/Classes/UIDataLeagueManager.uc | 7 + .../TgClient/Classes/UIDataLeaguePlayer.uc | 19 + exported/TgClient/Classes/UIDataLeagueTier.uc | 13 + exported/TgClient/Classes/UIDataManager.uc | 11 + exported/TgClient/Classes/UIDataObject.uc | 90 + exported/TgClient/Classes/UIDataPlayer.uc | 30 + exported/TgClient/Classes/UIDataPrice.uc | 12 + exported/TgClient/Classes/UIDataQueues.uc | 5 + exported/TgClient/Classes/UIDataSocial.uc | 36 + exported/TgClient/Classes/UIData_Goal.uc | 7 + .../Classes/UIData_LeaderboardPlayer.uc | 14 + exported/TgClient/Classes/UIData_LeagueEOM.uc | 11 + .../Classes/UIData_LeagueTierChange.uc | 14 + exported/TgClient/Classes/UIData_List.uc | 4 + .../TgClient/Classes/UIData_List_TitleIcon.uc | 5 + .../TgClient/Classes/UIData_LobbySlotItem.uc | 20 + .../Classes/UIData_MatchBoosterActivated.uc | 8 + .../TgClient/Classes/UIData_MultiQueue.uc | 6 + .../Classes/UIData_PlayerMatchRecord.uc | 44 + .../TgClient/Classes/UIData_PopupGeneric.uc | 13 + .../TgClient/Classes/UIData_PopupInput.uc | 12 + exported/TgClient/Classes/UIData_Quest.uc | 4 + exported/TgClient/Classes/UIData_Queue.uc | 22 + exported/TgClient/Classes/UIData_String.uc | 4 + .../TgClient/Classes/UIData_StringList.uc | 4 + .../Classes/UIData_StringWithCount.uc | 4 + .../Classes/UIData_String_Localized.uc | 5 + .../TgClient/Classes/UIData_TitleQuantity.uc | 6 + .../TgClient/Classes/UIEndOfMatchLobby.uc | 315 + exported/TgClient/Classes/UIFade.uc | 10 + exported/TgClient/Classes/UIFooter.uc | 50 + .../TgClient/Classes/UIFullscreenPopup.uc | 8 + .../TgClient/Classes/UIGameMoviePlayer.uc | 627 + exported/TgClient/Classes/UIHeader.uc | 8 + exported/TgClient/Classes/UIHome.uc | 58 + exported/TgClient/Classes/UIHud.uc | 26 + exported/TgClient/Classes/UIHudBinoculars.uc | 62 + exported/TgClient/Classes/UIHudBurns.uc | 104 + exported/TgClient/Classes/UIHudCards.uc | 65 + exported/TgClient/Classes/UIHudCenter.uc | 347 + .../TgClient/Classes/UIHudChampionSelect.uc | 28 + exported/TgClient/Classes/UIHudChat.uc | 8 + exported/TgClient/Classes/UIHudChatBox.uc | 67 + exported/TgClient/Classes/UIHudCredits.uc | 36 + exported/TgClient/Classes/UIHudDebuff.uc | 19 + exported/TgClient/Classes/UIHudDecks.uc | 35 + exported/TgClient/Classes/UIHudEnemy.uc | 7 + exported/TgClient/Classes/UIHudKillFeed.uc | 32 + exported/TgClient/Classes/UIHudMenu.uc | 40 + exported/TgClient/Classes/UIHudMinimap.uc | 72 + exported/TgClient/Classes/UIHudNotify.uc | 63 + exported/TgClient/Classes/UIHudOverlays.uc | 11 + exported/TgClient/Classes/UIHudPlayer.uc | 40 + exported/TgClient/Classes/UIHudRecap.uc | 29 + exported/TgClient/Classes/UIHudResult.uc | 137 + exported/TgClient/Classes/UIHudScore.uc | 145 + exported/TgClient/Classes/UIHudScoreboard.uc | 155 + exported/TgClient/Classes/UIHudSkills.uc | 40 + exported/TgClient/Classes/UIHudSniper.uc | 28 + exported/TgClient/Classes/UIHudSpectator.uc | 46 + exported/TgClient/Classes/UIHudStrix.uc | 13 + exported/TgClient/Classes/UIHudTarget.uc | 14 + exported/TgClient/Classes/UIHudTeam.uc | 319 + exported/TgClient/Classes/UIHudTip.uc | 106 + exported/TgClient/Classes/UIHudVGS.uc | 45 + exported/TgClient/Classes/UIHudVGSData.uc | 10 + exported/TgClient/Classes/UIHudVoiceChat.uc | 29 + exported/TgClient/Classes/UIHudWaypoint.uc | 129 + exported/TgClient/Classes/UIInputPopup.uc | 11 + .../TgClient/Classes/UIInteractable_Button.uc | 2 + .../UIInteractable_Button_ChampUnlock.uc | 9 + .../UIInteractable_Button_GamepadPrompt.uc | 5 + .../UIInteractable_Button_ItemPrice.uc | 2 + .../Classes/UIInteractable_Button_Price.uc | 15 + .../TgClient/Classes/UIInteractable_Item.uc | 21 + .../Classes/UIInteractable_JsonPanel.uc | 9 + .../UIInteractable_JsonPanel_Carousel.uc | 28 + .../Classes/UIInteractable_NavPanel.uc | 7 + .../Classes/UIInteractable_NavPanel_Play.uc | 21 + .../Classes/UIInteractable_NavPanel_Quests.uc | 5 + .../UIInteractable_NavPanel_QuestsLocked.uc | 4 + .../Classes/UIInteractable_NavPanel_Queued.uc | 6 + exported/TgClient/Classes/UIItemLarge.uc | 8 + .../TgClient/Classes/UILandingPanelManager.uc | 50 + exported/TgClient/Classes/UILeaderboard.uc | 11 + exported/TgClient/Classes/UILobbyChat.uc | 19 + exported/TgClient/Classes/UILogin.uc | 69 + exported/TgClient/Classes/UIMatchInvite.uc | 67 + exported/TgClient/Classes/UIMatchLobby.uc | 421 + exported/TgClient/Classes/UIMenuManager.uc | 12 + exported/TgClient/Classes/UIMoviePlayer.uc | 177 + .../TgClient/Classes/UINotificationCenter.uc | 144 + .../UINotificationCenterJsonManager.uc | 17 + exported/TgClient/Classes/UIObject.uc | 2 + exported/TgClient/Classes/UIPlay.uc | 87 + exported/TgClient/Classes/UIPopup.uc | 15 + exported/TgClient/Classes/UIPopupCrafting.uc | 10 + .../TgClient/Classes/UIPopupPartyManager.uc | 12 + .../Classes/UIPopup_MatchLobbyCustomize.uc | 22 + .../Classes/UIPopup_MatchLobbyCustomizeNew.uc | 26 + exported/TgClient/Classes/UIProfile.uc | 246 + exported/TgClient/Classes/UIProfileMini.uc | 49 + exported/TgClient/Classes/UIPurchaseGems.uc | 110 + exported/TgClient/Classes/UIQuestUtilities.uc | 6 + exported/TgClient/Classes/UIQuests.uc | 59 + exported/TgClient/Classes/UISafeFrame.uc | 14 + exported/TgClient/Classes/UIScene.uc | 53 + .../TgClient/Classes/UIScene_SceneAsPopup.uc | 2 + .../TgClient/Classes/UIScene_UIAccountLink.uc | 2 + .../TgClient/Classes/UIScene_UIAcquisition.uc | 2 + .../TgClient/Classes/UIScene_UIChampion.uc | 14 + .../TgClient/Classes/UIScene_UICompetitive.uc | 20 + .../UIScene_UICompetitivePopupWelcome.uc | 4 + .../UIScene_UICompetitiveRankChange.uc | 2 + .../Classes/UIScene_UICompetitiveRankDecay.uc | 2 + .../TgClient/Classes/UIScene_UICustomGame.uc | 2 + .../TgClient/Classes/UIScene_UIDailyReward.uc | 2 + .../Classes/UIScene_UIEndOfMatchLobby.uc | 8 + exported/TgClient/Classes/UIScene_UIHome.uc | 2 + .../TgClient/Classes/UIScene_UIHudBurns.uc | 2 + .../TgClient/Classes/UIScene_UIHudCenter.uc | 2 + .../TgClient/Classes/UIScene_UIHudDecks.uc | 8 + .../TgClient/Classes/UIScene_UIHudScore.uc | 2 + .../TgClient/Classes/UIScene_UIHudSkills.uc | 69 + .../TgClient/Classes/UIScene_UIHudStrix.uc | 21 + .../TgClient/Classes/UIScene_UILeaderboard.uc | 11 + .../TgClient/Classes/UIScene_UIMatchLobby.uc | 2 + .../Classes/UIScene_UINotificationCenter.uc | 2 + exported/TgClient/Classes/UIScene_UIPlay.uc | 13 + .../Classes/UIScene_UIPopupCrafting.uc | 71 + .../Classes/UIScene_UIPopupGeneric.uc | 4 + .../UIScene_UIPopupGenericFullscreen.uc | 2 + .../TgClient/Classes/UIScene_UIPopupInput.uc | 4 + .../Classes/UIScene_UIPopupPartyManager.uc | 25 + .../TgClient/Classes/UIScene_UIProfile.uc | 21 + exported/TgClient/Classes/UIScene_UIQuests.uc | 2 + .../TgClient/Classes/UIScene_UISettings.uc | 2 + exported/TgClient/Classes/UIScene_UIStore.uc | 2 + .../TgClient/Classes/UIScene_UIStoreDetail.uc | 2 + exported/TgClient/Classes/UISettings.uc | 204 + exported/TgClient/Classes/UISkills.uc | 25 + exported/TgClient/Classes/UISocial.uc | 209 + exported/TgClient/Classes/UIStore.uc | 480 + exported/TgClient/Classes/UIStoreDetail.uc | 87 + exported/TgClient/Classes/UISubtitle.uc | 13 + exported/TgClient/Classes/UIWebBrowser.uc | 20 + exported/TgClient/Classes/UIWorldOverlay.uc | 288 + exported/TgGame/Classes/AlienFXManager.uc | 97 + .../TgGame/Classes/Interface_AIAnnotation.uc | 6 + exported/TgGame/Classes/None.uc | 1 + exported/TgGame/Classes/TgAIAnnotation.uc | 48 + exported/TgGame/Classes/TgAIBehaviorAction.uc | 4 + .../Classes/TgAIBehaviorAction_AssignLane.uc | 10 + .../TgAIBehaviorAction_CancelFiring.uc | 8 + .../TgAIBehaviorAction_ClearCombatTarget.uc | 8 + .../TgAIBehaviorAction_ClearLaneMoveTarget.uc | 8 + .../TgAIBehaviorAction_ClearLastAttacker.uc | 8 + .../TgAIBehaviorAction_ClearLookAtTarget.uc | 8 + ...TgAIBehaviorAction_ClearNavigationQueue.uc | 8 + .../TgAIBehaviorAction_ClearRallyPoint.uc | 8 + .../TgAIBehaviorAction_ClearSpreadLocation.uc | 8 + .../TgAIBehaviorAction_FollowCombatTarget.uc | 10 + .../Classes/TgAIBehaviorAction_FollowLane.uc | 10 + .../TgAIBehaviorAction_FollowPatrol.uc | 8 + .../Classes/TgAIBehaviorAction_GroupUp.uc | 12 + .../TgGame/Classes/TgAIBehaviorAction_Juke.uc | 13 + .../TgGame/Classes/TgAIBehaviorAction_Jump.uc | 8 + .../Classes/TgAIBehaviorAction_Leash.uc | 8 + .../TgAIBehaviorAction_LookAtCapturePoint.uc | 8 + .../TgAIBehaviorAction_LookAtCombatTarget.uc | 13 + .../TgAIBehaviorAction_LookAtFortress.uc | 10 + .../TgAIBehaviorAction_LookAtLanepusher.uc | 8 + .../TgAIBehaviorAction_LookAtSpawnRotation.uc | 8 + .../TgAIBehaviorAction_LookAtTargetLKL.uc | 8 + ...TgAIBehaviorAction_MoveAroundLanePusher.uc | 11 + .../Classes/TgAIBehaviorAction_MoveBase.uc | 9 + ...gAIBehaviorAction_MoveToAssaultPosition.uc | 8 + ...ehaviorAction_MoveToAvoidableProjectile.uc | 13 + .../TgAIBehaviorAction_MoveToCapturePoint.uc | 13 + .../Classes/TgAIBehaviorAction_MoveToCover.uc | 11 + ...BehaviorAction_MoveToDamagingDeployable.uc | 13 + .../TgAIBehaviorAction_MoveToDeployable.uc | 13 + .../TgAIBehaviorAction_MoveToLanePusher.uc | 10 + ...gAIBehaviorAction_MoveToLanePusherFront.uc | 10 + .../TgAIBehaviorAction_MoveToLaneTarget.uc | 8 + .../TgAIBehaviorAction_MoveToLaneVolume.uc | 10 + .../TgAIBehaviorAction_MoveToRallyPoint.uc | 12 + .../TgAIBehaviorAction_MoveToShield.uc | 11 + .../TgAIBehaviorAction_MoveToTarget.uc | 7 + .../Classes/TgAIBehaviorAction_PauseAI.uc | 8 + .../Classes/TgAIBehaviorAction_PlayEmote.uc | 10 + .../Classes/TgAIBehaviorAction_PlayVGS.uc | 12 + .../TgAIBehaviorAction_PurchaseBurnCards.uc | 12 + .../TgAIBehaviorAction_PurchaseItems.uc | 8 + .../TgAIBehaviorAction_PurchaseSkills.uc | 8 + .../Classes/TgAIBehaviorAction_Regen.uc | 8 + .../TgAIBehaviorAction_ReloadDevice.uc | 10 + .../Classes/TgAIBehaviorAction_RunToOwner.uc | 10 + .../Classes/TgAIBehaviorAction_RunToSpawn.uc | 10 + .../TgAIBehaviorAction_RunToSpreadLocation.uc | 10 + ...haviorAction_SelectAllyAttackerAsTarget.uc | 13 + ...on_SelectCombatTarget_FortressObjective.uc | 8 + ...lectCombatTarget_LanepusherLastAttacker.uc | 8 + ...on_SelectCombatTarget_OwnerLastAttacker.uc | 8 + ...ehaviorAction_SelectCombatTargetsTarget.uc | 10 + ...AIBehaviorAction_SelectLaneCombatTarget.uc | 26 + ...iorAction_SelectLaneCombatTarget_Jungle.uc | 11 + ...ion_SelectLaneCombatTarget_LastAttacker.uc | 13 + ...TgAIBehaviorAction_SelectLaneMoveTarget.uc | 12 + ...tion_SelectLaneMoveTargetAsCombatTarget.uc | 10 + ...aviorAction_SelectLaneMoveTarget_Jungle.uc | 10 + ...iorAction_SelectLaneMoveTarget_Minotaur.uc | 10 + ...viorAction_SelectLanepusherCombatTarget.uc | 8 + ...IBehaviorAction_SelectLeashCombatTarget.uc | 21 + ...IBehaviorAction_SelectOwnerCombatTarget.uc | 8 + ...IBehaviorAction_SelectSquadCombatTarget.uc | 8 + ...BehaviorAction_SelectThreatCombatTarget.uc | 20 + .../TgAIBehaviorAction_SetAimDevice.uc | 10 + .../TgAIBehaviorAction_SetBotBehaviorState.uc | 10 + .../TgAIBehaviorAction_SpreadFromSquad.uc | 10 + .../Classes/TgAIBehaviorAction_StopDevice.uc | 10 + .../Classes/TgAIBehaviorAction_Strafe.uc | 13 + ...BehaviorAction_SuggestSquadCombatTarget.uc | 8 + ...iorAction_UpdateTargetLastKnownLocation.uc | 8 + .../Classes/TgAIBehaviorAction_UseActive.uc | 10 + .../TgAIBehaviorAction_UseConsumable.uc | 10 + .../Classes/TgAIBehaviorAction_UseDevice.uc | 13 + .../Classes/TgAIBehaviorAction_Wiggle.uc | 11 + .../TgGame/Classes/TgAIBehaviorComment.uc | 3 + .../TgGame/Classes/TgAIBehaviorComposite.uc | 16 + .../Classes/TgAIBehaviorComposite_Gated.uc | 9 + .../Classes/TgAIBehaviorComposite_Parallel.uc | 10 + .../Classes/TgAIBehaviorComposite_Random.uc | 14 + .../Classes/TgAIBehaviorComposite_Sequence.uc | 12 + .../TgAIBehaviorComposite_SequenceAND.uc | 8 + .../TgAIBehaviorComposite_SequenceOR.uc | 10 + .../TgAIBehaviorComposite_SequenceScripted.uc | 14 + .../Classes/TgAIBehaviorComposite_SubTree.uc | 10 + .../TgGame/Classes/TgAIBehaviorCondition.uc | 6 + .../TgAIBehaviorCondition_AmmoAfterShot.uc | 11 + .../TgAIBehaviorCondition_AmmoCostPerShot.uc | 11 + .../TgAIBehaviorCondition_AmmoCount.uc | 11 + .../TgAIBehaviorCondition_CanPurchaseItems.uc | 8 + ...TgAIBehaviorCondition_CanPurchaseSkills.uc | 8 + ...ehaviorCondition_CombatTargetDamageable.uc | 8 + ...ondition_CombatTargetDamageableByDevice.uc | 10 + ...ondition_CombatTargetDamagedFriendlyGod.uc | 8 + ...on_CombatTargetDistanceFromCapturePoint.uc | 8 + ...viorCondition_CombatTargetDistanceOwner.uc | 8 + ...AIBehaviorCondition_CombatTargetDropped.uc | 8 + ...Condition_CombatTargetHasEffectCategory.uc | 13 + ...viorCondition_CombatTargetHealthPercent.uc | 12 + ...on_CombatTargetHealthPercentAfterAttack.uc | 14 + ...iorCondition_CombatTargetInDeviceVolume.uc | 11 + ...ondition_CombatTargetIsInMinotaurRadius.uc | 10 + ...orCondition_CombatTargetIsInTowerRadius.uc | 10 + ...TargetIsTargetOfFriendlyTowerOrMinotaur.uc | 8 + ...aviorCondition_CombatTargetPhysicsState.uc | 11 + .../TgAIBehaviorCondition_CurrentLevel.uc | 11 + ...haviorCondition_DeltaGodsInCapturePoint.uc | 10 + .../TgAIBehaviorCondition_DeviceIsFiring.uc | 10 + .../TgAIBehaviorCondition_DeviceReadyToUse.uc | 10 + .../TgAIBehaviorCondition_DifficultyLevel.uc | 10 + .../TgAIBehaviorCondition_DistanceBase.uc | 10 + ...aviorCondition_DistanceFromAssaultPoint.uc | 8 + ...ndition_DistanceFromAvoidableProjectile.uc | 10 + ...aviorCondition_DistanceFromCapturePoint.uc | 8 + ...aviorCondition_DistanceFromCombatTarget.uc | 8 + ...ondition_DistanceFromDamagingDeployable.uc | 10 + ...Condition_DistanceFromFortressObjective.uc | 8 + ...ehaviorCondition_DistanceFromLanePusher.uc | 8 + ...ehaviorCondition_DistanceFromLaneTarget.uc | 8 + ...ition_DistanceFromNavigationDestination.uc | 8 + ...TgAIBehaviorCondition_DistanceFromOwner.uc | 8 + ...iorCondition_DistanceFromSelectedTarget.uc | 15 + ...gAIBehaviorCondition_DistanceFromShield.uc | 10 + ...TgAIBehaviorCondition_DistanceFromSpawn.uc | 8 + ...haviorCondition_DistanceFromSquadTarget.uc | 8 + .../Classes/TgAIBehaviorCondition_Energy.uc | 12 + .../Classes/TgAIBehaviorCondition_GameType.uc | 10 + .../TgAIBehaviorCondition_HasActive.uc | 10 + .../TgAIBehaviorCondition_HasCombatTarget.uc | 8 + .../TgAIBehaviorCondition_HasConsumable.uc | 10 + ...TgAIBehaviorCondition_HasEffectCategory.uc | 12 + ...TgAIBehaviorCondition_HasIncomingDamage.uc | 8 + .../TgAIBehaviorCondition_HasLaneTarget.uc | 8 + .../TgAIBehaviorCondition_HasMoveTarget.uc | 7 + .../TgAIBehaviorCondition_HasNavigation.uc | 8 + ...TgAIBehaviorCondition_HasSpreadLocation.uc | 8 + .../TgAIBehaviorCondition_HealthPercent.uc | 12 + ...gAIBehaviorCondition_InsideDeviceVolume.uc | 11 + ...IBehaviorCondition_IsActiveCapturePoint.uc | 8 + .../TgAIBehaviorCondition_IsActiveReady.uc | 10 + .../TgAIBehaviorCondition_IsAtCapturePoint.uc | 8 + .../TgAIBehaviorCondition_IsAtRallyPoint.uc | 8 + .../TgAIBehaviorCondition_IsAtSpawn.uc | 8 + ...IBehaviorCondition_IsAttackingTaskForce.uc | 8 + ...gAIBehaviorCondition_IsBotBehaviorState.uc | 10 + ...BehaviorCondition_IsCapturePointVisible.uc | 8 + ...ehaviorCondition_IsCombatTargetHittable.uc | 8 + ...BehaviorCondition_IsCombatTargetHostile.uc | 8 + ...aviorCondition_IsCombatTargetInFountain.uc | 8 + ...BehaviorCondition_IsCombatTargetInLeash.uc | 8 + ...orCondition_IsCombatTargetInSightRadius.uc | 8 + ...iorCondition_IsCombatTargetLastAttacker.uc | 8 + ...IBehaviorCondition_IsCombatTargetOfType.uc | 10 + ...ehaviorCondition_IsCombatTargetShielded.uc | 8 + ...viorCondition_IsCombatTargetSquadTarget.uc | 8 + ...haviorCondition_IsCombatTargetStealthed.uc | 8 + ...BehaviorCondition_IsCombatTargetVisible.uc | 8 + .../TgAIBehaviorCondition_IsDecoyState.uc | 10 + ...gAIBehaviorCondition_IsDesiredAimDevice.uc | 10 + ...Condition_IsFortressObjectiveVulnerable.uc | 8 + .../TgAIBehaviorCondition_IsInFortress.uc | 10 + ...gAIBehaviorCondition_IsInHostileAbility.uc | 8 + ...gAIBehaviorCondition_IsInMinotaurRadius.uc | 10 + .../TgAIBehaviorCondition_IsInTowerRadius.uc | 10 + ...AIBehaviorCondition_IsLanePusherVisible.uc | 8 + ...gAIBehaviorCondition_IsLanepusherActive.uc | 8 + ...AIBehaviorCondition_IsLanepusherHostile.uc | 8 + ...ondition_IsLanepusherLastAttackerOfType.uc | 10 + ...IBehaviorCondition_IsLastAttackerOfType.uc | 10 + ...haviorCondition_IsLookingAtCapturePoint.uc | 11 + ...haviorCondition_IsLookingAtCombatTarget.uc | 11 + .../TgAIBehaviorCondition_IsMetaGameState.uc | 10 + .../TgAIBehaviorCondition_IsOutsideLeash.uc | 8 + .../TgAIBehaviorCondition_IsSafeToRecall.uc | 8 + .../TgAIBehaviorCondition_IsSpawnGateOpen.uc | 8 + ...BehaviorCondition_IsSquadTargetShielded.uc | 8 + ...IBehaviorCondition_IsSquadTargetVisible.uc | 8 + ...ondition_IsTargetOfEnemyTowerOrMinotaur.uc | 8 + ...AIBehaviorCondition_IsTargetTypeInLeash.uc | 10 + .../TgAIBehaviorCondition_IsTooFarFromLane.uc | 10 + ...ehaviorCondition_IsWithinCombatDistance.uc | 13 + .../TgAIBehaviorCondition_IsWithinDistance.uc | 10 + ...haviorCondition_LanepusherHealthPercent.uc | 12 + .../TgAIBehaviorCondition_ManaPercent.uc | 12 + ...gAIBehaviorCondition_NearbyAllyAttacked.uc | 12 + .../TgAIBehaviorCondition_NearbyGodCount.uc | 13 + .../TgAIBehaviorCondition_NearbyGodDelta.uc | 12 + ...BehaviorCondition_NearbyTargetTypeCount.uc | 14 + ...BehaviorCondition_NearbyTargetTypeDelta.uc | 13 + ...viorCondition_NearestTowerHealthPercent.uc | 13 + .../TgAIBehaviorCondition_NumDeaths.uc | 10 + ...orCondition_NumGodsInCapturePointRadius.uc | 11 + ...viorCondition_NumGodsInLanePusherRadius.uc | 11 + ...IBehaviorCondition_NumGodsInTowerRadius.uc | 13 + ...BehaviorCondition_NumGodsNearDeployable.uc | 12 + ...BehaviorCondition_NumGodsNearProjectile.uc | 12 + ...haviorCondition_NumMinionsInTowerRadius.uc | 13 + .../TgAIBehaviorCondition_NumRallyPoints.uc | 13 + ...AIBehaviorCondition_NumberDevicesFiring.uc | 15 + .../Classes/TgAIBehaviorCondition_PetPhase.uc | 10 + .../TgAIBehaviorCondition_PhysicsState.uc | 11 + .../TgAIBehaviorCondition_ReturnAlways.uc | 11 + ...orCondition_SelectedTargetHealthPercent.uc | 18 + .../TgAIBehaviorCondition_SiegeScore.uc | 11 + ...IBehaviorCondition_SquadAverageDistance.uc | 8 + ...aviorCondition_SquadTargetHealthPercent.uc | 12 + ...viorCondition_TargetsDamageableByDevice.uc | 12 + .../TgAIBehaviorCondition_Taskforce.uc | 10 + .../TgAIBehaviorCondition_TeamDeathCount.uc | 12 + ...TgAIBehaviorCondition_TimeInPayloadMode.uc | 12 + ...Condition_TimeSinceLanepusherTookDamage.uc | 11 + ...haviorCondition_TimeSinceLastTookDamage.uc | 12 + .../Classes/TgAIBehaviorCondition_Timer.uc | 11 + .../TgAIBehaviorCondition_VisibilityBase.uc | 10 + ...orCondition_WhatIsCombatTargetTargeting.uc | 10 + ...orCondition_WhatIsLastAttackerTargeting.uc | 10 + .../TgAIBehaviorCondition_WonLastPoint.uc | 8 + exported/TgGame/Classes/TgAIBehaviorNode.uc | 46 + exported/TgGame/Classes/TgAIBehaviorObject.uc | 243 + exported/TgGame/Classes/TgAIBehaviorSensor.uc | 4 + .../Classes/TgAIBehaviorSensor_Devices.uc | 9 + .../Classes/TgAIBehaviorSensor_Fortress.uc | 9 + .../TgGame/Classes/TgAIBehaviorSensor_Gods.uc | 9 + .../TgAIBehaviorSensor_InHostileAbility.uc | 9 + .../TgAIBehaviorSensor_IncomingDamage.uc | 9 + .../TgGame/Classes/TgAIBehaviorSensor_Lane.uc | 9 + .../Classes/TgAIBehaviorSensor_Leash.uc | 9 + .../TgAIBehaviorSensor_PurchaseSkills.uc | 9 + .../Classes/TgAIBehaviorSensor_RallyPoints.uc | 9 + .../TgAIBehaviorSensor_SafeToRecall.uc | 12 + .../Classes/TgAIBehaviorSensor_SightRadius.uc | 9 + .../Classes/TgAIBehaviorSensor_Towers.uc | 9 + exported/TgGame/Classes/TgAIBehaviorTree.uc | 7 + exported/TgGame/Classes/TgAIController.uc | 344 + .../TgGame/Classes/TgAIController_Behavior.uc | 937 + .../TgAIController_BehaviorAerialDrone.uc | 9 + .../TgAIController_BehaviorChaosJuggernaut.uc | 4 + .../Classes/TgAIController_BehaviorGod.uc | 462 + .../TgAIController_BehaviorGodDisconnected.uc | 49 + .../Classes/TgAIController_BehaviorLaneNpc.uc | 17 + .../Classes/TgAIController_BehaviorMapNpc.uc | 75 + .../Classes/TgAIController_BehaviorPet.uc | 11 + .../TgAIController_BehaviorPetRanged.uc | 11 + .../TgAIController_BehaviorPet_LongTerm.uc | 9 + exported/TgGame/Classes/TgAIDirector.uc | 1169 ++ exported/TgGame/Classes/TgAIInfluenceMap.uc | 24 + .../TgAIInfluenceMapRenderingComponent.uc | 14 + .../TgGame/Classes/TgAILocalPositionSolver.uc | 50 + .../Classes/TgAILocalPositionSolver_God.uc | 1 + .../Classes/TgAILocalPositionSolver_Pet.uc | 6 + .../TgGame/Classes/TgAIObstacleAvoidance.uc | 53 + ...TgAIObstacleAvoidanceRenderingComponent.uc | 13 + exported/TgGame/Classes/TgAIScout.uc | 32 + exported/TgGame/Classes/TgAISquad.uc | 85 + exported/TgGame/Classes/TgAISquad_Minion.uc | 11 + exported/TgGame/Classes/TgAISquad_Monster.uc | 5 + .../Classes/TgAISquad_MonsterBehaviorTree.uc | 71 + .../Classes/TgAITaskforceBlockingVolume.uc | 36 + exported/TgGame/Classes/TgAIUtility.uc | 15 + exported/TgGame/Classes/TgAIUtilityFilter.uc | 10 + .../TgAIUtilityFilter_AssaultRangeType.uc | 11 + .../Classes/TgAIUtilityFilter_CapturePoint.uc | 10 + .../TgAIUtilityFilter_DistanceFromPawn.uc | 11 + .../TgAIUtilityFilter_DistanceFromTarget.uc | 11 + .../Classes/TgAIUtilityFilter_GameState.uc | 8 + ...gAIUtilityFilter_InsideActiveRallyPoint.uc | 10 + .../Classes/TgAIUtilityFilter_LoSToTarget.uc | 10 + ...lityFilter_LoSToTargetLastKnownLocation.uc | 10 + .../Classes/TgAIUtilityFilter_Payload.uc | 10 + .../TgAIUtilityFilter_StayInTargetFOV.uc | 10 + .../TgGame/Classes/TgAIUtilityFunction.uc | 15 + ...gAIUtilityFunction_CombatTargetDistance.uc | 8 + ...tyFunction_CombatTargetDistanceToNormal.uc | 8 + .../TgAIUtilityFunction_DistanceToPawn.uc | 8 + .../TgAIUtilityFunction_FortressDistance.uc | 8 + ...gAIUtilityFunction_PawnDistanceToNormal.uc | 8 + .../TgAIUtilityFunction_RandomUtility.uc | 8 + exported/TgGame/Classes/TgAIUtilityHandle.uc | 44 + exported/TgGame/Classes/TgAIUtilitySet.uc | 13 + exported/TgGame/Classes/TgAIVolume.uc | 86 + exported/TgGame/Classes/TgAchievement.uc | 38 + .../Classes/TgAchievement_ChampionKill.uc | 2 + .../TgAchievement_CounterAirDefense.uc | 2 + .../TgGame/Classes/TgAchievement_Damage.uc | 4 + .../Classes/TgAchievement_DoubleKill.uc | 2 + .../TgAchievement_EnvironmentalDeath.uc | 2 + .../Classes/TgAchievement_FromTheGrave.uc | 9 + .../TgGame/Classes/TgAchievement_HardCarry.uc | 4 + .../TgGame/Classes/TgAchievement_Headshot.uc | 4 + .../TgAchievement_KillAfterRoundEnd.uc | 2 + .../Classes/TgAchievement_KillEndStreak.uc | 2 + .../TgAchievement_KillFromLowHealth.uc | 2 + .../Classes/TgAchievement_LastOneStanding.uc | 2 + .../Classes/TgAchievement_QuestionsLater.uc | 6 + .../TgGame/Classes/TgAchievement_Sniper.uc | 2 + .../TgGame/Classes/TgAchievement_Survivor.uc | 2 + exported/TgGame/Classes/TgActionPoint.uc | 47 + exported/TgGame/Classes/TgActorFactory.uc | 111 + .../TgActorFactoryTgEmitter_TeamColor.uc | 12 + ...orFactory_TgStaticMeshActorCapturePoint.uc | 12 + ...ActorFactory_TgStaticMeshActorTeamColor.uc | 12 + .../TgGame/Classes/TgAimAccelerationCurves.uc | 42 + .../TgGame/Classes/TgAimAssistKeyframe.uc | 32 + exported/TgGame/Classes/TgAkActor.uc | 17 + .../TgGame/Classes/TgAkActorUnoccluded.uc | 11 + .../TgGame/Classes/TgAkAudioManagement.uc | 30 + exported/TgGame/Classes/TgAnimBlendBy1P3P.uc | 17 + exported/TgGame/Classes/TgAnimBlendByAmmo.uc | 92 + .../Classes/TgAnimBlendByBuffMonsterIntro.uc | 21 + .../TgGame/Classes/TgAnimBlendByDirection.uc | 46 + exported/TgGame/Classes/TgAnimBlendByEmote.uc | 29 + exported/TgGame/Classes/TgAnimBlendByFall.uc | 51 + exported/TgGame/Classes/TgAnimBlendByFire.uc | 55 + .../TgGame/Classes/TgAnimBlendByFireMode.uc | 44 + .../TgGame/Classes/TgAnimBlendByFlying.uc | 35 + .../TgGame/Classes/TgAnimBlendByHeadSkin.uc | 17 + .../TgGame/Classes/TgAnimBlendByMountSkin.uc | 17 + .../TgGame/Classes/TgAnimBlendByNodeName.uc | 38 + .../Classes/TgAnimBlendByPaladinsCharacter.uc | 162 + ...nimBlendByPaladinsCharacter_BarrierTank.uc | 19 + ...TgAnimBlendByPaladinsCharacter_BombKing.uc | 12 + ...TgAnimBlendByPaladinsCharacter_Darklord.uc | 25 + .../TgAnimBlendByPaladinsCharacter_Drogoz.uc | 19 + .../TgAnimBlendByPaladinsCharacter_Flak.uc | 17 + .../TgAnimBlendByPaladinsCharacter_Lex.uc | 15 + .../TgAnimBlendByPaladinsCharacter_Owl.uc | 12 + .../TgGame/Classes/TgAnimBlendByPercent.uc | 29 + exported/TgGame/Classes/TgAnimBlendByPhase.uc | 41 + .../TgGame/Classes/TgAnimBlendByPhysics.uc | 24 + .../TgGame/Classes/TgAnimBlendByPosture.uc | 69 + .../Classes/TgAnimBlendByPosture_Player.uc | 9 + .../Classes/TgAnimBlendByProgressiveReload.uc | 35 + .../TgGame/Classes/TgAnimBlendByRecoilTime.uc | 15 + exported/TgGame/Classes/TgAnimBlendBySkin.uc | 17 + exported/TgGame/Classes/TgAnimBlendBySpeed.uc | 81 + .../TgAnimBlendBySpeedWithExhaustion.uc | 21 + .../Classes/TgAnimBlendByStartingPosture.uc | 14 + .../Classes/TgAnimBlendByTeleportBeacon.uc | 120 + .../TgGame/Classes/TgAnimBlendByWeaponSkin.uc | 17 + .../Classes/TgAnimBlendInterpBySpeed.uc | 16 + exported/TgGame/Classes/TgAnimBlendPerBone.uc | 23 + .../TgAnimMetaData_InvisibleWallFailSafe.uc | 12 + .../TgAnimMetaData_MICScalarParameter.uc | 23 + ...AnimMetaData_MICScalarParameterExtended.uc | 55 + .../Classes/TgAnimMetaData_MaskingPlane.uc | 24 + .../Classes/TgAnimMetaData_MeshAccessory.uc | 34 + .../TgAnimMetaData_MeshAccessory_Mastery.uc | 5 + .../TgAnimMetaData_SkelControlKeyFrame.uc | 9 + .../TgAnimMetaData_SkelControl_BoneScale.uc | 10 + ...MetaData_SkelControl_BoneScale_KeyFrame.uc | 36 + .../Classes/TgAnimNodeAdditiveBlending.uc | 11 + .../TgGame/Classes/TgAnimNodeAimOffset.uc | 51 + .../Classes/TgAnimNodeAimOffset_Charge.uc | 16 + .../TgAnimNodeBlendAnimsByDirection.uc | 33 + .../TgGame/Classes/TgAnimNodeBlendByAFK.uc | 11 + .../Classes/TgAnimNodeBlendByAbilityDrag.uc | 80 + .../TgAnimNodeBlendByAbilityDragChain.uc | 42 + .../TgAnimNodeBlendByAbilityDragonSlam.uc | 48 + .../TgAnimNodeBlendByAbilityFragGrenade.uc | 22 + .../TgAnimNodeBlendByAbilityHyperShot.uc | 22 + .../TgAnimNodeBlendByAbilityReversal.uc | 18 + .../Classes/TgAnimNodeBlendByAbilitySimple.uc | 67 + .../Classes/TgAnimNodeBlendByAbilitySmash.uc | 27 + .../Classes/TgAnimNodeBlendByAbilityVine.uc | 66 + .../Classes/TgAnimNodeBlendByAndroxusDrift.uc | 52 + .../TgGame/Classes/TgAnimNodeBlendByBlink.uc | 20 + .../TgGame/Classes/TgAnimNodeBlendByCombat.uc | 11 + .../TgAnimNodeBlendByCombatWariness.uc | 20 + .../TgAnimNodeBlendByDeviceEquipped.uc | 17 + .../Classes/TgAnimNodeBlendByDrogozFlying.uc | 53 + .../Classes/TgAnimNodeBlendByGameState.uc | 12 + .../TgGame/Classes/TgAnimNodeBlendByHealth.uc | 6 + .../Classes/TgAnimNodeBlendByHitReaction.uc | 16 + .../Classes/TgAnimNodeBlendByIntroduction.uc | 17 + .../Classes/TgAnimNodeBlendByKnockdown.uc | 31 + .../TgGame/Classes/TgAnimNodeBlendByLobby.uc | 8 + .../Classes/TgAnimNodeBlendByMeleeIdle.uc | 13 + .../Classes/TgAnimNodeBlendByPhysics.uc | 44 + .../Classes/TgAnimNodeBlendBySlowFall.uc | 19 + .../TgGame/Classes/TgAnimNodeBlendByStrafe.uc | 12 + .../Classes/TgAnimNodeBlendByVerticalAim.uc | 36 + ...TgAnimNodeBlendByZoomPostFireTransition.uc | 39 + .../TgAnimNodeBlendByZoomTransition.uc | 87 + .../TgGame/Classes/TgAnimNodeBlendList.uc | 31 + .../TgAnimNodeBlendList_EquipScreen.uc | 34 + exported/TgGame/Classes/TgAnimNodeBlendNPC.uc | 168 + ...NodeBlendPerBone_Bakasura_ConsumeMinion.uc | 2 + .../TgGame/Classes/TgAnimNodeChannelFire.uc | 30 + .../Classes/TgAnimNodeChannelFire_Pounce.uc | 17 + .../Classes/TgAnimNodeChannelFire_Spite.uc | 20 + .../Classes/TgAnimNodeEmoteCustomAnim.uc | 12 + .../TgGame/Classes/TgAnimNodeEmoteSequence.uc | 17 + .../TgGame/Classes/TgAnimNodeEmoteSwitch.uc | 24 + exported/TgGame/Classes/TgAnimNodeFidget.uc | 32 + .../TgGame/Classes/TgAnimNodeFitToDuration.uc | 24 + .../Classes/TgAnimNodeJumpLeanOffset.uc | 22 + .../Classes/TgAnimNodeLockableChannelFire.uc | 24 + exported/TgGame/Classes/TgAnimNodeLog.uc | 8 + .../TgGame/Classes/TgAnimNodeMountSync.uc | 14 + .../TgGame/Classes/TgAnimNodePlayFireAnim.uc | 15 + .../Classes/TgAnimNodePlayTgCameraAnim.uc | 12 + exported/TgGame/Classes/TgAnimNodeRandom.uc | 51 + .../TgGame/Classes/TgAnimNodeSelfDestruct.uc | 17 + exported/TgGame/Classes/TgAnimNodeSequence.uc | 15 + .../TgAnimNodeSequenceByBoneRotation.uc | 68 + .../TgAnimNodeSequence_ZhongKui_Exorcism.uc | 2 + .../Classes/TgAnimNodeSimpleTransitioner.uc | 34 + exported/TgGame/Classes/TgAnimNodeSlot.uc | 54 + exported/TgGame/Classes/TgAnimNodeStance.uc | 11 + .../Classes/TgAnimNodeStanceDualFire.uc | 14 + .../Classes/TgAnimNodeStanceFireIntercept.uc | 18 + .../Classes/TgAnimNodeStanceTransition.uc | 12 + .../Classes/TgAnimNodeStanceTransitioner.uc | 75 + ...gAnimNodeStanceTransitionerSynchronized.uc | 37 + .../TgGame/Classes/TgAnimNodeTargeting.uc | 24 + .../Classes/TgAnimNodeTiltTowardsVelocity.uc | 16 + .../Classes/TgAnimNodeToggleWithTransition.uc | 98 + ...gAnimNodeToggleWithTransition_Disengage.uc | 21 + .../Classes/TgAnimNodeTriggerCameraAnim.uc | 37 + .../TgGame/Classes/TgAnimNotifySkinData.uc | 8 + .../TgGame/Classes/TgAnimNotify_AkEvent.uc | 22 + .../TgAnimNotify_ApplyRigidBodyPhysics.uc | 18 + .../TgGame/Classes/TgAnimNotify_AudioGroup.uc | 16 + .../TgGame/Classes/TgAnimNotify_CameraCut.uc | 13 + .../TgGame/Classes/TgAnimNotify_Disappear.uc | 5 + .../TgGame/Classes/TgAnimNotify_Footstep.uc | 5 + ...AnimNotify_InterpolateMorphTargetWeight.uc | 65 + ...TgAnimNotify_PlayParticleEffect_Skinned.uc | 31 + .../Classes/TgAnimNotify_PlayPetAnim.uc | 7 + exported/TgGame/Classes/TgAnimNotify_Sound.uc | 22 + .../Classes/TgAnimNotify_SpectatorSlomo.uc | 5 + .../TgAnimNotify_SwapToInhandWeaponMesh.uc | 5 + .../TgAnimNotify_ToggleInvisibleWall.uc | 64 + .../Classes/TgAnimNotify_ToggleRigidBodies.uc | 36 + .../TgAnimNotify_ToggleSocketSpecialFX.uc | 14 + .../TgGame/Classes/TgAnimNotify_ViewShake.uc | 82 + .../TgGame/Classes/TgAnimSequenceChain.uc | 20 + exported/TgGame/Classes/TgAnimTurnInPlace.uc | 80 + .../Classes/TgAnimTurnInPlace_Player.uc | 26 + .../Classes/TgAnimTurnInPlace_Rotator.uc | 12 + exported/TgGame/Classes/TgAssaultPoint.uc | 43 + exported/TgGame/Classes/TgAudioComponent.uc | 27 + .../Classes/TgAudioComponent_ModByVelocity.uc | 5 + .../TgGame/Classes/TgAudioOcclusionActor.uc | 39 + .../TgGame/Classes/TgBattleCheatManager.uc | 3101 +++ exported/TgGame/Classes/TgBeamHelper.uc | 66 + .../TgGame/Classes/TgBeamHelper_TheLaw.uc | 7 + exported/TgGame/Classes/TgBlockingVolume.uc | 18 + .../Classes/TgBossBlockDynamicVolume.uc | 17 + exported/TgGame/Classes/TgBossBlockVolume.uc | 17 + .../TgGame/Classes/TgBotEncounterVolume.uc | 109 + exported/TgGame/Classes/TgBotFactory.uc | 412 + .../TgGame/Classes/TgBotFactoryComponent.uc | 12 + .../TgGame/Classes/TgBotFactorySpawnable.uc | 30 + .../Classes/TgBotFactory_BonusTrigger.uc | 29 + .../TgGame/Classes/TgBotFactory_Leashed.uc | 36 + .../TgGame/Classes/TgBotFactory_Minions.uc | 66 + .../Classes/TgBotFactory_PointCapture.uc | 36 + exported/TgGame/Classes/TgBotStart.uc | 20 + exported/TgGame/Classes/TgCTFFlagBase.uc | 128 + exported/TgGame/Classes/TgCTFVolume.uc | 88 + .../TgGame/Classes/TgCallbackContainer.uc | 19 + .../TgGame/Classes/TgCallbackInterface.uc | 3 + .../TgCameraModifier_LobbyCameraTransition.uc | 62 + .../Classes/TgCameraModifier_LobbyFade.uc | 11 + exported/TgGame/Classes/TgCameraModule.uc | 50 + .../TgGame/Classes/TgCameraModule_Attached.uc | 44 + .../Classes/TgCameraModule_Cinematic.uc | 1 + .../TgGame/Classes/TgCameraModule_Dead.uc | 22 + .../Classes/TgCameraModule_FallOutOfWorld.uc | 32 + .../TgGame/Classes/TgCameraModule_Free.uc | 154 + .../TgCameraModule_FrontFacingCamera.uc | 42 + .../Classes/TgCameraModule_GroundTarget.uc | 76 + .../TgGame/Classes/TgCameraModule_Server.uc | 2 + .../Classes/TgCameraModule_Spectator.uc | 152 + .../TgCameraModule_SpectatorFirstPerson.uc | 1 + .../TgCameraModule_SpectatorLockedView.uc | 162 + .../TgCameraModule_SpectatorOverview.uc | 282 + .../TgCameraModule_SpectatorThirdPerson.uc | 92 + .../Classes/TgCameraModule_ThirdPerson.uc | 453 + ...gCameraModule_ThirdPersonVariableHeight.uc | 32 + .../TgGame/Classes/TgCameraModule_TopDown.uc | 83 + exported/TgGame/Classes/TgCameraShake.uc | 17 + exported/TgGame/Classes/TgCameraVolume.uc | 19 + exported/TgGame/Classes/TgCapturePoint.uc | 602 + exported/TgGame/Classes/TgCarriedFlag.uc | 400 + .../TgGame/Classes/TgChaosCapturePoint.uc | 803 + .../TgChaosCapturePoint_ParticleStorm.uc | 211 + .../TgGame/Classes/TgCharacterBuilderLight.uc | 23 + .../TgGame/Classes/TgCharacterPerformance.uc | 71 + exported/TgGame/Classes/TgClientSettings.uc | 363 + exported/TgGame/Classes/TgCollisionProxy.uc | 315 + .../Classes/TgCollisionProxy_Cylinder.uc | 20 + .../TgGame/Classes/TgCollisionProxy_Mesh.uc | 25 + ...gCollisionProxy_SpectatorActionListener.uc | 39 + .../TgGame/Classes/TgCollisionProxy_Vortex.uc | 125 + exported/TgGame/Classes/TgCombatActor.uc | 151 + .../Classes/TgCombinedPostProcessEffect.uc | 15 + .../TgGame/Classes/TgContextNotifyActor.uc | 17 + exported/TgGame/Classes/TgControlModule.uc | 68 + .../Classes/TgControlModule_BaseEngine.uc | 94 + .../TgGame/Classes/TgControlModule_Dead.uc | 70 + .../TgGame/Classes/TgControlModule_Dummy.uc | 1 + .../TgGame/Classes/TgControlModule_Feared.uc | 91 + .../TgGame/Classes/TgControlModule_Free.uc | 132 + .../TgControlModule_FrontFacingCamera.uc | 27 + .../Classes/TgControlModule_Spectator.uc | 248 + .../TgControlModule_SpectatorLockedView.uc | 64 + .../TgControlModule_SpectatorOverview.uc | 188 + .../TgGame/Classes/TgControlModule_Stoker.uc | 19 + .../TgControlModule_StunDisoriented.uc | 59 + .../Classes/TgControlModule_StunTaunted.uc | 114 + .../TgGame/Classes/TgControlModule_Stunned.uc | 30 + .../Classes/TgControlModule_ThirdPerson.uc | 578 + .../TgGame/Classes/TgControlModule_TopDown.uc | 93 + exported/TgGame/Classes/TgCoverPoint.uc | 45 + .../Classes/TgCustomCharacterComponent.uc | 48 + exported/TgGame/Classes/TgDamageType.uc | 99 + .../Classes/TgDamageType_AbilityCost.uc | 8 + .../TgGame/Classes/TgDamageType_DragonSlam.uc | 12 + .../Classes/TgDamageType_FallOutOfWorld.uc | 1 + .../Classes/TgDamageType_GeneralAfflicted.uc | 8 + .../Classes/TgDamageType_GeneralCharred.uc | 12 + .../Classes/TgDamageType_GeneralConcussion.uc | 11 + .../Classes/TgDamageType_GeneralElectric.uc | 10 + .../Classes/TgDamageType_GeneralFlattened.uc | 13 + .../Classes/TgDamageType_GeneralImpulseOut.uc | 10 + .../Classes/TgDamageType_GeneralMidImpulse.uc | 10 + .../Classes/TgDamageType_GeneralOnFire.uc | 11 + .../Classes/TgDamageType_IgnoreShields.uc | 7 + .../TgGame/Classes/TgDamageType_Latent.uc | 7 + .../Classes/TgDamageType_MeleeBasicAttack.uc | 7 + .../TgDamageType_MeleeBasicAttackImpulse.uc | 9 + .../Classes/TgDamageType_PaladinsAcid.uc | 13 + .../TgDamageType_PaladinsAcid_Latent.uc | 12 + .../Classes/TgDamageType_PaladinsBullet.uc | 13 + .../TgDamageType_PaladinsBullet_Latent.uc | 12 + .../TgDamageType_PaladinsConcussive.uc | 13 + .../TgDamageType_PaladinsConcussive_Latent.uc | 12 + .../Classes/TgDamageType_PaladinsExecute.uc | 10 + .../Classes/TgDamageType_PaladinsExplosive.uc | 13 + .../TgDamageType_PaladinsExplosive_Latent.uc | 12 + .../Classes/TgDamageType_PaladinsFire.uc | 13 + .../TgDamageType_PaladinsFire_Latent.uc | 12 + .../Classes/TgDamageType_PaladinsIce.uc | 13 + .../TgDamageType_PaladinsIce_Latent.uc | 12 + .../Classes/TgDamageType_PaladinsLightning.uc | 13 + .../TgDamageType_PaladinsLightning_Latent.uc | 12 + .../Classes/TgDamageType_PaladinsPiercing.uc | 13 + .../TgDamageType_PaladinsPiercing_Latent.uc | 12 + .../Classes/TgDamageType_PaladinsPoison.uc | 13 + .../TgDamageType_PaladinsPoison_Latent.uc | 12 + .../Classes/TgDamageType_PaladinsSniper.uc | 13 + .../Classes/TgDamageType_RangedBasicAttack.uc | 7 + .../TgDamageType_RangedBasicAttackImpulse.uc | 9 + .../TgGame/Classes/TgDamageType_RangedShot.uc | 1 + exported/TgGame/Classes/TgDatabaseIDs.uc | 41 + .../TgGame/Classes/TgDebugCameraController.uc | 73 + exported/TgGame/Classes/TgDebugCameraInput.uc | 4 + exported/TgGame/Classes/TgDecalManager.uc | 23 + exported/TgGame/Classes/TgDefensePoint.uc | 64 + exported/TgGame/Classes/TgDemoRecSpectator.uc | 518 + .../Classes/TgDemoRecSpectator_Debug.uc | 21 + .../Classes/TgDeploy_AbsorptionField.uc | 28 + exported/TgGame/Classes/TgDeploy_Barrage.uc | 99 + exported/TgGame/Classes/TgDeploy_BlackHole.uc | 87 + exported/TgGame/Classes/TgDeploy_Bomb.uc | 349 + .../Classes/TgDeploy_BombKingStickyBomb.uc | 649 + .../Classes/TgDeploy_DarkConvergence.uc | 375 + .../TgGame/Classes/TgDeploy_DemonTeleport.uc | 29 + .../Classes/TgDeploy_DeployableLinked.uc | 18 + .../TgDeploy_DeployableLinkedEffectField.uc | 18 + .../TgGame/Classes/TgDeploy_DominanceFlag.uc | 99 + .../TgGame/Classes/TgDeploy_DreadSerpent.uc | 39 + .../TgGame/Classes/TgDeploy_EffectAura.uc | 205 + .../TgGame/Classes/TgDeploy_EffectField.uc | 240 + .../TgGame/Classes/TgDeploy_EffectSpots.uc | 483 + .../TgGame/Classes/TgDeploy_EffectTrail.uc | 217 + exported/TgGame/Classes/TgDeploy_Epicenter.uc | 35 + exported/TgGame/Classes/TgDeploy_Exhaust.uc | 16 + exported/TgGame/Classes/TgDeploy_Explosion.uc | 192 + exported/TgGame/Classes/TgDeploy_Expose.uc | 26 + exported/TgGame/Classes/TgDeploy_Geometry.uc | 51 + .../Classes/TgDeploy_GeometryBarrierTank.uc | 422 + .../TgGame/Classes/TgDeploy_GeometryBuck.uc | 59 + exported/TgGame/Classes/TgDeploy_Gourd.uc | 130 + .../TgGame/Classes/TgDeploy_HealingTotem.uc | 275 + .../TgGame/Classes/TgDeploy_HealthNugget.uc | 196 + .../Classes/TgDeploy_HealthNugget_TeamOnly.uc | 72 + exported/TgGame/Classes/TgDeploy_Illusion.uc | 382 + .../Classes/TgDeploy_IllusionLongbow.uc | 141 + .../Classes/TgDeploy_MatchParentFireMode.uc | 16 + exported/TgGame/Classes/TgDeploy_Midnight.uc | 189 + exported/TgGame/Classes/TgDeploy_Molotov.uc | 2297 +++ .../TgGame/Classes/TgDeploy_OppressorMine.uc | 124 + exported/TgGame/Classes/TgDeploy_PoppyBomb.uc | 193 + .../TgGame/Classes/TgDeploy_RespawnBeacon.uc | 38 + exported/TgGame/Classes/TgDeploy_Reversal.uc | 96 + exported/TgGame/Classes/TgDeploy_Shield.uc | 82 + .../TgGame/Classes/TgDeploy_ShieldBarik.uc | 100 + .../Classes/TgDeploy_ShieldBarikDome.uc | 47 + .../TgGame/Classes/TgDeploy_ShieldFernando.uc | 113 + .../TgGame/Classes/TgDeploy_ShieldMakoa.uc | 32 + .../Classes/TgDeploy_ShieldSiegeUnit.uc | 174 + .../TgGame/Classes/TgDeploy_SmokeScreen.uc | 96 + .../TgGame/Classes/TgDeploy_ToxicTimeBomb.uc | 48 + .../TgGame/Classes/TgDeploy_Transporter.uc | 128 + .../Classes/TgDeploy_TurretEffectField.uc | 129 + .../TgGame/Classes/TgDeploy_TurretLinked.uc | 29 + .../TgGame/Classes/TgDeploy_WardersField.uc | 124 + exported/TgGame/Classes/TgDeployable.uc | 1850 ++ .../TgGame/Classes/TgDeployableFactory.uc | 142 + exported/TgGame/Classes/TgDestructible.uc | 171 + .../TgGame/Classes/TgDestructibleFactory.uc | 32 + exported/TgGame/Classes/TgDevice.uc | 7385 ++++++++ exported/TgGame/Classes/TgDeviceFire.uc | 1755 ++ .../TgGame/Classes/TgDeviceFire_AstralMark.uc | 87 + .../Classes/TgDeviceFire_BarricadeDome.uc | 10 + exported/TgGame/Classes/TgDeviceFire_Blink.uc | 5 + .../Classes/TgDeviceFire_BonusShieldDamage.uc | 5 + .../TgGame/Classes/TgDeviceFire_Counter.uc | 2 + .../Classes/TgDeviceFire_CounterAttack.uc | 8 + .../TgGame/Classes/TgDeviceFire_Cylinder.uc | 5 + .../TgDeviceFire_DarklordInhandChain1.uc | 1 + .../TgDeviceFire_DarklordInhandChain2.uc | 1 + .../TgDeviceFire_DarklordInhandChain3.uc | 1 + .../Classes/TgDeviceFire_DemonTeleport.uc | 7 + .../Classes/TgDeviceFire_DeployOnLocation.uc | 7 + .../Classes/TgDeviceFire_DeployOnTarget.uc | 11 + .../Classes/TgDeviceFire_DeployablesOnly.uc | 5 + .../Classes/TgDeviceFire_DimensionalLink.uc | 11 + .../Classes/TgDeviceFire_DrogozInhand.uc | 5 + .../TgDeviceFire_DrogozInhand_Salvo.uc | 33 + .../TgGame/Classes/TgDeviceFire_Emitter.uc | 71 + .../Classes/TgDeviceFire_EmitterEffect.uc | 71 + .../TgGame/Classes/TgDeviceFire_EvieCombo.uc | 56 + .../Classes/TgDeviceFire_FernandoInhand.uc | 8 + .../TgGame/Classes/TgDeviceFire_FlakInHand.uc | 53 + .../Classes/TgDeviceFire_FlameTurret.uc | 8 + .../Classes/TgDeviceFire_GauntletInhand.uc | 17 + .../Classes/TgDeviceFire_GeometryInara.uc | 48 + .../Classes/TgDeviceFire_GrohkInhand.uc | 5 + .../Classes/TgDeviceFire_GroverInhandAxe.uc | 7 + .../TgGame/Classes/TgDeviceFire_HeatHaze.uc | 8 + .../TgGame/Classes/TgDeviceFire_HeroicLeap.uc | 10 + .../Classes/TgDeviceFire_HuntersMark.uc | 6 + .../TgGame/Classes/TgDeviceFire_HyperBeam.uc | 12 + .../Classes/TgDeviceFire_IgnoreCounter.uc | 7 + ...gDeviceFire_IgnoreDeployableForBlocking.uc | 6 + ...viceFire_IgnoreDeployablesCannotCounter.uc | 6 + .../TgGame/Classes/TgDeviceFire_IgnorePets.uc | 5 + .../Classes/TgDeviceFire_IgnoreReversal.uc | 5 + .../TgGame/Classes/TgDeviceFire_Illusion.uc | 10 + .../Classes/TgDeviceFire_IllusoryRift.uc | 10 + .../Classes/TgDeviceFire_KinessaInhand.uc | 53 + .../Classes/TgDeviceFire_LazarusInhand.uc | 13 + .../TgGame/Classes/TgDeviceFire_Lockdown.uc | 10 + .../TgGame/Classes/TgDeviceFire_Midnight.uc | 5 + .../Classes/TgDeviceFire_MidnightSub.uc | 8 + .../TgDeviceFire_MirrorDamageToHeal.uc | 47 + .../TgDeviceFire_MirrorDamageToHealBlock.uc | 47 + exported/TgGame/Classes/TgDeviceFire_Mount.uc | 12 + .../Classes/TgDeviceFire_OppressorMine.uc | 5 + .../Classes/TgDeviceFire_OracleInhand.uc | 18 + .../TgGame/Classes/TgDeviceFire_PetsOnly.uc | 5 + .../TgGame/Classes/TgDeviceFire_PoppyBomb.uc | 51 + .../TgGame/Classes/TgDeviceFire_PrincessF.uc | 10 + .../TgGame/Classes/TgDeviceFire_Protection.uc | 12 + .../TgGame/Classes/TgDeviceFire_Pursuit.uc | 5 + .../TgGame/Classes/TgDeviceFire_Recharge.uc | 23 + .../TgGame/Classes/TgDeviceFire_RendSoul.uc | 59 + .../Classes/TgDeviceFire_RepulsorField.uc | 8 + .../Classes/TgDeviceFire_RestoreSoul.uc | 29 + .../TgGame/Classes/TgDeviceFire_Reversal.uc | 50 + exported/TgGame/Classes/TgDeviceFire_Salvo.uc | 35 + .../Classes/TgDeviceFire_SelfResurrection.uc | 20 + .../Classes/TgDeviceFire_ShatterExplosion.uc | 2 + .../Classes/TgDeviceFire_ShellShield.uc | 6 + .../Classes/TgDeviceFire_ShieldFernando.uc | 45 + .../Classes/TgDeviceFire_ShieldsOnly.uc | 5 + .../TgGame/Classes/TgDeviceFire_SiegeUnit.uc | 7 + exported/TgGame/Classes/TgDeviceFire_Smash.uc | 27 + .../TgGame/Classes/TgDeviceFire_SnakeToss.uc | 50 + exported/TgGame/Classes/TgDeviceFire_Soar.uc | 33 + .../TgGame/Classes/TgDeviceFire_SpaceTime.uc | 13 + .../TgDeviceFire_SpawnAtOwnerLocation.uc | 8 + exported/TgGame/Classes/TgDeviceFire_Spray.uc | 5 + .../TgGame/Classes/TgDeviceFire_Telepunch.uc | 11 + .../TgGame/Classes/TgDeviceFire_Tempest.uc | 12 + .../TgGame/Classes/TgDeviceFire_TheLaw.uc | 9 + .../Classes/TgDeviceFire_Transporter.uc | 5 + .../TgGame/Classes/TgDeviceFire_Turret.uc | 10 + .../TgGame/Classes/TgDeviceFire_TurretShot.uc | 5 + .../Classes/TgDeviceFire_TurtlePower.uc | 44 + .../TgGame/Classes/TgDeviceFire_Uppercut.uc | 8 + exported/TgGame/Classes/TgDeviceFire_Valor.uc | 6 + .../TgGame/Classes/TgDeviceFire_Whirlwind.uc | 6 + .../Classes/TgDeviceFire_WorldLOSOnly.uc | 5 + .../TgDeviceFire_YingIllusionInhand.uc | 9 + exported/TgGame/Classes/TgDeviceForm.uc | 1264 ++ .../Classes/TgDeviceForm_AccursedArm.uc | 73 + .../Classes/TgDeviceForm_AccursedArmGun.uc | 22 + .../TgGame/Classes/TgDeviceForm_Advance.uc | 15 + .../TgGame/Classes/TgDeviceForm_ArcingBeam.uc | 174 + .../Classes/TgDeviceForm_AstroInhand.uc | 56 + .../Classes/TgDeviceForm_BarikInhand.uc | 6 + .../TgGame/Classes/TgDeviceForm_Barrage.uc | 78 + .../Classes/TgDeviceForm_BarrageFire.uc | 57 + .../Classes/TgDeviceForm_BladesInhand.uc | 14 + .../TgGame/Classes/TgDeviceForm_Booster.uc | 128 + .../TgGame/Classes/TgDeviceForm_BuckInhand.uc | 6 + .../Classes/TgDeviceForm_CombatSlide.uc | 23 + .../TgGame/Classes/TgDeviceForm_Counter.uc | 8 + .../Classes/TgDeviceForm_CounterAttack.uc | 110 + .../TgDeviceForm_DarkConvergenceSub.uc | 1 + .../Classes/TgDeviceForm_DarklordInhand.uc | 188 + .../Classes/TgDeviceForm_DemonInhand.uc | 2 + .../Classes/TgDeviceForm_DimensionalLink.uc | 52 + .../TgGame/Classes/TgDeviceForm_Disengage.uc | 93 + .../TgGame/Classes/TgDeviceForm_Dominance.uc | 36 + exported/TgGame/Classes/TgDeviceForm_Drag.uc | 763 + .../TgGame/Classes/TgDeviceForm_DragonSlam.uc | 306 + .../TgGame/Classes/TgDeviceForm_FlakInhand.uc | 26 + .../Classes/TgDeviceForm_FragGrenade.uc | 117 + .../TgGame/Classes/TgDeviceForm_GaeBolg.uc | 66 + .../Classes/TgDeviceForm_GauntletInhand.uc | 85 + .../TgDeviceForm_GeometryBarrierTank.uc | 8 + .../Classes/TgDeviceForm_GraceSupport.uc | 40 + .../Classes/TgDeviceForm_GravityLift.uc | 39 + .../Classes/TgDeviceForm_GrohkInhand.uc | 67 + .../TgGame/Classes/TgDeviceForm_GrumpyBomb.uc | 1 + .../TgGame/Classes/TgDeviceForm_HeadHunter.uc | 44 + .../TgGame/Classes/TgDeviceForm_HeatHaze.uc | 36 + .../TgGame/Classes/TgDeviceForm_HeroicLeap.uc | 84 + .../TgGame/Classes/TgDeviceForm_HexaFire.uc | 123 + .../Classes/TgDeviceForm_HexaFireGuns.uc | 244 + exported/TgGame/Classes/TgDeviceForm_Hover.uc | 80 + .../TgGame/Classes/TgDeviceForm_Hustle.uc | 29 + .../TgGame/Classes/TgDeviceForm_HyperBeam.uc | 88 + .../TgGame/Classes/TgDeviceForm_Inhand.uc | 39 + .../TgGame/Classes/TgDeviceForm_IronSights.uc | 107 + .../Classes/TgDeviceForm_KinessaInhand.uc | 99 + .../Classes/TgDeviceForm_KineticBurst.uc | 45 + .../TgGame/Classes/TgDeviceForm_KingBomb.uc | 69 + .../TgGame/Classes/TgDeviceForm_LexInhand.uc | 222 + .../TgGame/Classes/TgDeviceForm_Lockdown.uc | 59 + .../Classes/TgDeviceForm_LongbowInhand.uc | 161 + .../Classes/TgDeviceForm_LongbowPlanted.uc | 34 + .../Classes/TgDeviceForm_MendingSpirits.uc | 36 + .../Classes/TgDeviceForm_MinigunSpinUp.uc | 62 + exported/TgGame/Classes/TgDeviceForm_Mount.uc | 69 + .../TgGame/Classes/TgDeviceForm_MountBoar.uc | 37 + .../TgGame/Classes/TgDeviceForm_MountHorse.uc | 8 + .../Classes/TgDeviceForm_MountHorseTest.uc | 6 + .../TgDeviceForm_MountInfernalWarhorse.uc | 8 + .../TgGame/Classes/TgDeviceForm_MountLion.uc | 37 + .../TgGame/Classes/TgDeviceForm_MountMech.uc | 47 + .../TgGame/Classes/TgDeviceForm_MountMorph.uc | 6 + .../Classes/TgDeviceForm_MountNoHorse.uc | 53 + .../Classes/TgDeviceForm_MountOnyxStallion.uc | 8 + .../Classes/TgDeviceForm_MountPanther.uc | 37 + .../TgGame/Classes/TgDeviceForm_NetherStep.uc | 88 + .../Classes/TgDeviceForm_OracleInhand.uc | 195 + .../TgGame/Classes/TgDeviceForm_OwlStealth.uc | 37 + .../TgGame/Classes/TgDeviceForm_PoppyBomb.uc | 37 + .../TgGame/Classes/TgDeviceForm_Pounce.uc | 162 + .../TgGame/Classes/TgDeviceForm_Presence.uc | 6 + .../TgGame/Classes/TgDeviceForm_Pursuit.uc | 131 + .../TgGame/Classes/TgDeviceForm_Recharge.uc | 66 + .../TgGame/Classes/TgDeviceForm_RendSoul.uc | 76 + .../Classes/TgDeviceForm_RestoreSoul.uc | 37 + .../TgGame/Classes/TgDeviceForm_Reversal.uc | 188 + .../Classes/TgDeviceForm_RocketLauncher.uc | 8 + .../Classes/TgDeviceForm_RuckusInhand.uc | 242 + exported/TgGame/Classes/TgDeviceForm_Salvo.uc | 216 + exported/TgGame/Classes/TgDeviceForm_Scope.uc | 71 + exported/TgGame/Classes/TgDeviceForm_Scout.uc | 38 + .../Classes/TgDeviceForm_SelfResurrection.uc | 39 + .../Classes/TgDeviceForm_ShadowTravel.uc | 43 + .../Classes/TgDeviceForm_ShellShield.uc | 107 + .../TgDeviceForm_ShockPulseSubdevice.uc | 8 + .../Classes/TgDeviceForm_ShoulderBash.uc | 29 + exported/TgGame/Classes/TgDeviceForm_Smash.uc | 128 + .../TgGame/Classes/TgDeviceForm_SniperMode.uc | 1 + .../TgGame/Classes/TgDeviceForm_SpaceTime.uc | 73 + .../TgDeviceForm_SpinnerWhileFiring.uc | 69 + exported/TgGame/Classes/TgDeviceForm_Spite.uc | 235 + exported/TgGame/Classes/TgDeviceForm_Spray.uc | 112 + .../TgGame/Classes/TgDeviceForm_Stasis.uc | 38 + .../TgGame/Classes/TgDeviceForm_Telepunch.uc | 189 + .../TgGame/Classes/TgDeviceForm_Tempest.uc | 94 + .../TgGame/Classes/TgDeviceForm_TheLaw.uc | 165 + .../TgGame/Classes/TgDeviceForm_Thrust.uc | 118 + .../Classes/TgDeviceForm_ToggleWithLockout.uc | 26 + .../Classes/TgDeviceForm_Transporter.uc | 61 + .../TgGame/Classes/TgDeviceForm_Turret.uc | 38 + .../Classes/TgDeviceForm_TurtlePower.uc | 97 + .../TgGame/Classes/TgDeviceForm_TyraInhand.uc | 20 + .../TgGame/Classes/TgDeviceForm_TyraUlt.uc | 47 + exported/TgGame/Classes/TgDeviceForm_Valor.uc | 12 + .../Classes/TgDeviceForm_ViktorInhand.uc | 31 + exported/TgGame/Classes/TgDeviceForm_Vine.uc | 254 + .../TgGame/Classes/TgDeviceForm_WeaponSwap.uc | 74 + .../TgGame/Classes/TgDeviceForm_Whirlwind.uc | 45 + .../TgGame/Classes/TgDeviceForm_Whirlwind2.uc | 34 + .../TgDeviceInterface_DismountModifier.uc | 8 + .../TgDeviceInterface_MoveSpeedMultiplier.uc | 6 + exported/TgGame/Classes/TgDeviceVolume.uc | 288 + exported/TgGame/Classes/TgDeviceVolumeInfo.uc | 18 + .../TgGame/Classes/TgDeviceVolume_Pulse.uc | 151 + .../Classes/TgDevice_AbsorptionField.uc | 66 + .../Classes/TgDevice_AcceleratorField.uc | 3 + .../TgGame/Classes/TgDevice_AccursedArm.uc | 188 + .../TgGame/Classes/TgDevice_AccursedArmGun.uc | 87 + .../TgGame/Classes/TgDevice_ActiveAura.uc | 21 + exported/TgGame/Classes/TgDevice_Advance.uc | 153 + exported/TgGame/Classes/TgDevice_Aegis.uc | 11 + .../TgGame/Classes/TgDevice_AimDownSights.uc | 71 + exported/TgGame/Classes/TgDevice_Alpine.uc | 3 + exported/TgGame/Classes/TgDevice_Amplitude.uc | 3 + .../TgGame/Classes/TgDevice_AndroxusInhand.uc | 251 + .../TgGame/Classes/TgDevice_ArcingBeam.uc | 218 + .../Classes/TgDevice_AssertDominance.uc | 122 + .../TgGame/Classes/TgDevice_AstralCycle.uc | 3 + .../TgGame/Classes/TgDevice_AstralMark.uc | 80 + .../TgGame/Classes/TgDevice_AstroInhand.uc | 30 + exported/TgGame/Classes/TgDevice_AstroQ.uc | 103 + exported/TgGame/Classes/TgDevice_Aura.uc | 235 + .../TgGame/Classes/TgDevice_AuraPerTarget.uc | 5 + .../TgGame/Classes/TgDevice_AutoHealing2.uc | 17 + .../TgGame/Classes/TgDevice_BarikInhand.uc | 47 + exported/TgGame/Classes/TgDevice_Barrage.uc | 156 + .../TgGame/Classes/TgDevice_BarrageFire.uc | 186 + .../TgGame/Classes/TgDevice_BarricadeDome.uc | 137 + .../TgGame/Classes/TgDevice_BarricadeMod.uc | 6 + exported/TgGame/Classes/TgDevice_Barrier.uc | 127 + .../TgGame/Classes/TgDevice_BarrierReef.uc | 8 + .../Classes/TgDevice_BarrierTankInhand.uc | 229 + exported/TgGame/Classes/TgDevice_Billow.uc | 79 + .../TgGame/Classes/TgDevice_BladesInhand.uc | 78 + .../Classes/TgDevice_BladesInhandAltFire.uc | 23 + exported/TgGame/Classes/TgDevice_BlastShot.uc | 55 + exported/TgGame/Classes/TgDevice_Blink.uc | 149 + exported/TgGame/Classes/TgDevice_Blossom.uc | 2 + .../Classes/TgDevice_BombKingDetonator.uc | 66 + .../TgGame/Classes/TgDevice_BombKingInhand.uc | 854 + ...evice_BombKingStickyBombExplosionDevice.uc | 7 + exported/TgGame/Classes/TgDevice_Booster.uc | 41 + .../TgGame/Classes/TgDevice_BuckInhand.uc | 257 + exported/TgGame/Classes/TgDevice_Bunker.uc | 3 + exported/TgGame/Classes/TgDevice_Carapace.uc | 3 + .../TgGame/Classes/TgDevice_CassieInhand.uc | 20 + .../TgGame/Classes/TgDevice_ChainLightning.uc | 54 + .../TgGame/Classes/TgDevice_ChainSequence.uc | 59 + exported/TgGame/Classes/TgDevice_Charge.uc | 514 + .../TgGame/Classes/TgDevice_ChargeBackward.uc | 9 + .../TgGame/Classes/TgDevice_ChargeBurst.uc | 52 + .../TgGame/Classes/TgDevice_ChargeFernando.uc | 40 + .../TgGame/Classes/TgDevice_CombatSlide.uc | 120 + .../TgGame/Classes/TgDevice_Compensator.uc | 64 + .../TgGame/Classes/TgDevice_CosmicGrace.uc | 9 + exported/TgGame/Classes/TgDevice_Counter.uc | 80 + .../TgGame/Classes/TgDevice_CounterAttack.uc | 33 + .../TgGame/Classes/TgDevice_CripplingThrow.uc | 3 + .../Classes/TgDevice_DarkConvergence.uc | 9 + .../TgGame/Classes/TgDevice_DarklordInhand.uc | 23 + exported/TgGame/Classes/TgDevice_DeadSpace.uc | 3 + exported/TgGame/Classes/TgDevice_DecoyMod.uc | 3 + .../TgGame/Classes/TgDevice_DemonInhand.uc | 79 + .../TgGame/Classes/TgDevice_DemonTeleport.uc | 336 + exported/TgGame/Classes/TgDevice_DemonUlt.uc | 70 + .../Classes/TgDevice_DimensionalLink.uc | 360 + exported/TgGame/Classes/TgDevice_Disengage.uc | 8 + .../TgGame/Classes/TgDevice_DoubleCharge.uc | 245 + exported/TgGame/Classes/TgDevice_Drag.uc | 488 + .../TgGame/Classes/TgDevice_DragonSlam.uc | 265 + .../TgGame/Classes/TgDevice_DreadSerpent.uc | 138 + .../TgGame/Classes/TgDevice_DrogozInhand.uc | 230 + exported/TgGame/Classes/TgDevice_DualFire.uc | 64 + exported/TgGame/Classes/TgDevice_DualWield.uc | 42 + .../TgGame/Classes/TgDevice_EarthenGuard.uc | 15 + .../TgGame/Classes/TgDevice_EbbAndFlow.uc | 39 + .../TgGame/Classes/TgDevice_EmergencyExit.uc | 17 + exported/TgGame/Classes/TgDevice_Emitter.uc | 225 + .../TgGame/Classes/TgDevice_EmitterMod.uc | 12 + exported/TgGame/Classes/TgDevice_Emote.uc | 217 + .../TgGame/Classes/TgDevice_Enlightenment.uc | 198 + .../Classes/TgDevice_EnlightenmentGun.uc | 57 + .../TgGame/Classes/TgDevice_EvieInhand.uc | 47 + exported/TgGame/Classes/TgDevice_EvilMojo.uc | 7 + .../TgGame/Classes/TgDevice_ExitStrategy.uc | 2 + .../TgGame/Classes/TgDevice_ExplosiveFlask.uc | 9 + exported/TgGame/Classes/TgDevice_FaeFlight.uc | 106 + exported/TgGame/Classes/TgDevice_Failsafe.uc | 39 + .../TgGame/Classes/TgDevice_FairyInhand.uc | 36 + .../Classes/TgDevice_FernandoImmortal.uc | 67 + .../TgGame/Classes/TgDevice_FernandoInhand.uc | 38 + exported/TgGame/Classes/TgDevice_FireInAir.uc | 11 + exported/TgGame/Classes/TgDevice_FireSpit.uc | 36 + exported/TgGame/Classes/TgDevice_Fireball.uc | 7 + .../TgGame/Classes/TgDevice_FlakInhand.uc | 77 + exported/TgGame/Classes/TgDevice_Flutter.uc | 13 + exported/TgGame/Classes/TgDevice_Fortify.uc | 3 + .../TgGame/Classes/TgDevice_FragGrenade.uc | 347 + .../TgDevice_FragGrenadeModWhileCook.uc | 87 + exported/TgGame/Classes/TgDevice_GaeBolg.uc | 9 + .../TgGame/Classes/TgDevice_GauntletInhand.uc | 102 + .../Classes/TgDevice_GeometryBarrierTank.uc | 286 + exported/TgGame/Classes/TgDevice_GhostWalk.uc | 33 + exported/TgGame/Classes/TgDevice_GourdMod.uc | 15 + .../TgGame/Classes/TgDevice_GrohkInhand.uc | 110 + .../TgGame/Classes/TgDevice_GroverInhand.uc | 81 + .../Classes/TgDevice_GroverInhandAxe.uc | 15 + .../TgGame/Classes/TgDevice_GrumpyBomb.uc | 106 + .../TgGame/Classes/TgDevice_Headhunter.uc | 126 + .../TgGame/Classes/TgDevice_HealingPotion.uc | 226 + .../TgGame/Classes/TgDevice_HealingRain.uc | 3 + .../TgGame/Classes/TgDevice_HealingStation.uc | 6 + .../TgGame/Classes/TgDevice_HealingTotem.uc | 14 + exported/TgGame/Classes/TgDevice_HeatHaze.uc | 111 + .../TgGame/Classes/TgDevice_HeatTransfer.uc | 9 + .../TgGame/Classes/TgDevice_HeroicLeap.uc | 63 + exported/TgGame/Classes/TgDevice_HexaFire.uc | 195 + .../TgGame/Classes/TgDevice_HexaFireGuns.uc | 119 + exported/TgGame/Classes/TgDevice_HitPulse.uc | 263 + exported/TgGame/Classes/TgDevice_Hover.uc | 124 + .../TgGame/Classes/TgDevice_HunterRoll.uc | 35 + .../TgGame/Classes/TgDevice_HuntersMark.uc | 38 + exported/TgGame/Classes/TgDevice_Hustle.uc | 224 + exported/TgGame/Classes/TgDevice_HyperBeam.uc | 79 + exported/TgGame/Classes/TgDevice_IceBlock.uc | 26 + exported/TgGame/Classes/TgDevice_IceStorm.uc | 7 + exported/TgGame/Classes/TgDevice_Illusion.uc | 33 + .../TgGame/Classes/TgDevice_IllusoryRift.uc | 24 + .../TgGame/Classes/TgDevice_ImpalerArrow.uc | 55 + .../TgGame/Classes/TgDevice_ImpasseMod.uc | 3 + exported/TgGame/Classes/TgDevice_Impede.uc | 3 + exported/TgGame/Classes/TgDevice_InPursuit.uc | 135 + .../TgGame/Classes/TgDevice_IronSights.uc | 193 + .../Classes/TgDevice_ItemStoreBeacon.uc | 47 + .../TgGame/Classes/TgDevice_KinessaInhand.uc | 86 + .../TgGame/Classes/TgDevice_KineticBurst.uc | 59 + exported/TgGame/Classes/TgDevice_KingBomb.uc | 258 + .../TgGame/Classes/TgDevice_LazarusInhand.uc | 19 + exported/TgGame/Classes/TgDevice_Leap.uc | 131 + exported/TgGame/Classes/TgDevice_LegDay.uc | 18 + exported/TgGame/Classes/TgDevice_LexInhand.uc | 105 + exported/TgGame/Classes/TgDevice_Lifelike.uc | 3 + .../TgGame/Classes/TgDevice_Lightspeed.uc | 93 + exported/TgGame/Classes/TgDevice_Lockdown.uc | 8 + exported/TgGame/Classes/TgDevice_LongReach.uc | 211 + .../TgGame/Classes/TgDevice_LongbowInhand.uc | 203 + .../TgGame/Classes/TgDevice_LongbowPlanted.uc | 141 + .../TgGame/Classes/TgDevice_MakoaInhand.uc | 31 + .../TgGame/Classes/TgDevice_MalDambaInhand.uc | 35 + .../TgGame/Classes/TgDevice_MarkAndRecall.uc | 32 + exported/TgGame/Classes/TgDevice_MarkShot.uc | 18 + .../TgGame/Classes/TgDevice_MegaTurret.uc | 3 + exported/TgGame/Classes/TgDevice_Meteor.uc | 20 + exported/TgGame/Classes/TgDevice_Midnight.uc | 21 + .../TgGame/Classes/TgDevice_MinigunSpinUp.uc | 91 + exported/TgGame/Classes/TgDevice_Molotov.uc | 7 + .../TgGame/Classes/TgDevice_MonolithTotem.uc | 3 + exported/TgGame/Classes/TgDevice_Mount.uc | 441 + .../TgGame/Classes/TgDevice_MountMorph.uc | 41 + .../TgGame/Classes/TgDevice_MountNoHorse.uc | 7 + exported/TgGame/Classes/TgDevice_NetShot.uc | 8 + .../TgGame/Classes/TgDevice_NetherStep.uc | 96 + exported/TgGame/Classes/TgDevice_NineLives.uc | 21 + .../TgGame/Classes/TgDevice_OppressorMine.uc | 66 + .../Classes/TgDevice_OppressorMineMod.uc | 14 + .../TgGame/Classes/TgDevice_OracleInhand.uc | 31 + exported/TgGame/Classes/TgDevice_Outreach.uc | 3 + .../TgGame/Classes/TgDevice_OverGrowth.uc | 39 + .../TgGame/Classes/TgDevice_OverTheMoon.uc | 2 + exported/TgGame/Classes/TgDevice_OwlFlare.uc | 7 + .../TgGame/Classes/TgDevice_OwlFlashbang.uc | 7 + exported/TgGame/Classes/TgDevice_OwlInhand.uc | 153 + .../TgGame/Classes/TgDevice_OwlSidearm.uc | 87 + .../TgGame/Classes/TgDevice_OwlStealth.uc | 193 + .../TgGame/Classes/TgDevice_PassiveAura.uc | 6 + exported/TgGame/Classes/TgDevice_Pet.uc | 3 + exported/TgGame/Classes/TgDevice_PipInhand.uc | 48 + .../TgGame/Classes/TgDevice_PoisonBolts.uc | 31 + exported/TgGame/Classes/TgDevice_PoppyBomb.uc | 283 + exported/TgGame/Classes/TgDevice_PortalMod.uc | 6 + exported/TgGame/Classes/TgDevice_Pounce.uc | 185 + exported/TgGame/Classes/TgDevice_Presence.uc | 2 + exported/TgGame/Classes/TgDevice_PrincessF.uc | 125 + .../Classes/TgDevice_PrincessFSupport.uc | 84 + .../TgGame/Classes/TgDevice_PrincessInhand.uc | 12 + .../TgGame/Classes/TgDevice_PrincessRMB.uc | 18 + exported/TgGame/Classes/TgDevice_Projector.uc | 9 + .../TgGame/Classes/TgDevice_Protection.uc | 36 + exported/TgGame/Classes/TgDevice_Prowl.uc | 171 + exported/TgGame/Classes/TgDevice_Pursuit.uc | 5 + exported/TgGame/Classes/TgDevice_QuadWield.uc | 49 + exported/TgGame/Classes/TgDevice_Rattle.uc | 6 + exported/TgGame/Classes/TgDevice_ReachOut.uc | 11 + exported/TgGame/Classes/TgDevice_Recharge.uc | 151 + exported/TgGame/Classes/TgDevice_Recovery.uc | 18 + exported/TgGame/Classes/TgDevice_RendSoul.uc | 36 + .../TgGame/Classes/TgDevice_RepulsorField.uc | 24 + exported/TgGame/Classes/TgDevice_Requip.uc | 21 + .../TgGame/Classes/TgDevice_RespawnBeacon.uc | 164 + exported/TgGame/Classes/TgDevice_Restock.uc | 21 + .../TgGame/Classes/TgDevice_RestoreSoul.uc | 285 + exported/TgGame/Classes/TgDevice_Reversal.uc | 147 + .../TgGame/Classes/TgDevice_ReversalMod.uc | 3 + exported/TgGame/Classes/TgDevice_Rewind.uc | 87 + .../TgGame/Classes/TgDevice_RipenedGourd.uc | 3 + .../TgGame/Classes/TgDevice_RocketBoots.uc | 68 + .../TgGame/Classes/TgDevice_RocketLauncher.uc | 83 + exported/TgGame/Classes/TgDevice_Roost.uc | 55 + .../TgGame/Classes/TgDevice_RuckusInhand.uc | 249 + exported/TgGame/Classes/TgDevice_Rush.uc | 159 + exported/TgGame/Classes/TgDevice_Salvo.uc | 129 + exported/TgGame/Classes/TgDevice_Scope.uc | 237 + exported/TgGame/Classes/TgDevice_Scout.uc | 20 + exported/TgGame/Classes/TgDevice_Scramble.uc | 55 + .../TgGame/Classes/TgDevice_SecondWind.uc | 72 + exported/TgGame/Classes/TgDevice_Seedling.uc | 10 + .../Classes/TgDevice_SelfResurrection.uc | 138 + .../TgGame/Classes/TgDevice_ShadowTravel.uc | 65 + exported/TgGame/Classes/TgDevice_Shatter.uc | 51 + .../TgGame/Classes/TgDevice_ShellShield.uc | 189 + .../TgGame/Classes/TgDevice_ShellShieldMod.uc | 9 + exported/TgGame/Classes/TgDevice_ShellSpin.uc | 213 + .../TgGame/Classes/TgDevice_ShieldFernando.uc | 189 + exported/TgGame/Classes/TgDevice_ShieldMod.uc | 3 + .../TgGame/Classes/TgDevice_ShockPulse.uc | 11 + .../TgGame/Classes/TgDevice_ShoulderBash.uc | 158 + exported/TgGame/Classes/TgDevice_SiegeUnit.uc | 28 + .../TgGame/Classes/TgDevice_SkyeInhand.uc | 37 + .../TgGame/Classes/TgDevice_SleightOfHand.uc | 21 + .../TgGame/Classes/TgDevice_SmokeScreen.uc | 6 + .../TgGame/Classes/TgDevice_SmokeScreenMod.uc | 18 + exported/TgGame/Classes/TgDevice_Smother.uc | 3 + exported/TgGame/Classes/TgDevice_SnakeToss.uc | 87 + .../TgGame/Classes/TgDevice_SniperMode.uc | 247 + exported/TgGame/Classes/TgDevice_Soar.uc | 73 + .../TgGame/Classes/TgDevice_Somersault.uc | 39 + exported/TgGame/Classes/TgDevice_SpaceJam.uc | 3 + exported/TgGame/Classes/TgDevice_SpaceTime.uc | 248 + exported/TgGame/Classes/TgDevice_Spite.uc | 606 + exported/TgGame/Classes/TgDevice_Spray.uc | 85 + .../TgGame/Classes/TgDevice_StarSeeker.uc | 3 + exported/TgGame/Classes/TgDevice_Stealth.uc | 112 + exported/TgGame/Classes/TgDevice_Stim.uc | 28 + exported/TgGame/Classes/TgDevice_Survival.uc | 39 + .../TgGame/Classes/TgDevice_TeamDevice.uc | 403 + exported/TgGame/Classes/TgDevice_Telepunch.uc | 491 + exported/TgGame/Classes/TgDevice_Tempest.uc | 185 + exported/TgGame/Classes/TgDevice_TheLaw.uc | 11 + exported/TgGame/Classes/TgDevice_Thrust.uc | 87 + exported/TgGame/Classes/TgDevice_Tinkerin.uc | 2 + exported/TgGame/Classes/TgDevice_Toggle.uc | 98 + .../TgGame/Classes/TgDevice_ToggleInhand.uc | 274 + .../Classes/TgDevice_ToggleInhandFiremode.uc | 84 + .../Classes/TgDevice_ToggleModeWithLockout.uc | 59 + .../Classes/TgDevice_ToggleWithLockout.uc | 258 + exported/TgGame/Classes/TgDevice_TotemMod.uc | 3 + .../Classes/TgDevice_ToweringBarrier.uc | 3 + .../Classes/TgDevice_ToweringBarrier_Old.uc | 3 + .../TgGame/Classes/TgDevice_ToxicTimeBomb.uc | 9 + .../TgGame/Classes/TgDevice_Transporter.uc | 162 + exported/TgGame/Classes/TgDevice_Turret.uc | 138 + exported/TgGame/Classes/TgDevice_TurretMod.uc | 3 + .../TgGame/Classes/TgDevice_TurretShot.uc | 7 + .../TgGame/Classes/TgDevice_TurtlePower.uc | 119 + .../Classes/TgDevice_TurtlePowerSmash.uc | 42 + .../TgGame/Classes/TgDevice_TyraAltFire.uc | 8 + .../TgGame/Classes/TgDevice_TyraInhand.uc | 80 + exported/TgGame/Classes/TgDevice_TyraUlt.uc | 81 + exported/TgGame/Classes/TgDevice_Uppercut.uc | 71 + exported/TgGame/Classes/TgDevice_Vengeance.uc | 3 + .../TgGame/Classes/TgDevice_Vengeance_Lex.uc | 75 + .../TgGame/Classes/TgDevice_VenomousGourd.uc | 8 + .../Classes/TgDevice_ViktorAmmoRefill.uc | 26 + .../TgGame/Classes/TgDevice_ViktorInhand.uc | 225 + exported/TgGame/Classes/TgDevice_Vine.uc | 259 + exported/TgGame/Classes/TgDevice_WYRMJets.uc | 47 + .../TgGame/Classes/TgDevice_WardersField.uc | 107 + exported/TgGame/Classes/TgDevice_WarpStep.uc | 85 + .../TgGame/Classes/TgDevice_Watchtower.uc | 3 + .../TgGame/Classes/TgDevice_WeaponSwap.uc | 113 + .../TgGame/Classes/TgDevice_Weightless.uc | 119 + exported/TgGame/Classes/TgDevice_Whirl.uc | 45 + exported/TgGame/Classes/TgDevice_Whirlwind.uc | 170 + .../TgGame/Classes/TgDevice_Whirlwind2.uc | 19 + exported/TgGame/Classes/TgDevice_WindTotem.uc | 3 + exported/TgGame/Classes/TgDevice_Withdraw.uc | 47 + .../TgGame/Classes/TgDevice_YingInhand.uc | 139 + .../TgGame/Classes/TgDevice_YingInhandProj.uc | 64 + exported/TgGame/Classes/TgDevice_Zodiac.uc | 22 + ...gDistributionFloatLitParticleBrightness.uc | 11 + .../TgDistributionFloatSoundAttenuation.uc | 60 + exported/TgGame/Classes/TgDoorMarker.uc | 322 + .../Classes/TgDropShadowDecalComponent.uc | 24 + exported/TgGame/Classes/TgDroppedItem.uc | 191 + exported/TgGame/Classes/TgEffect.uc | 83 + exported/TgGame/Classes/TgEffectDamage.uc | 48 + .../TgGame/Classes/TgEffectDamage_AstroDOT.uc | 35 + .../TgGame/Classes/TgEffectDamage_Execute.uc | 11 + .../Classes/TgEffectDamage_NoLifeSteal.uc | 6 + .../Classes/TgEffectDamage_PresenceDoT.uc | 24 + exported/TgGame/Classes/TgEffectForm.uc | 55 + .../TgGame/Classes/TgEffectForm_BuffBelt.uc | 14 + .../Classes/TgEffectForm_DisablePawn.uc | 15 + .../TgGame/Classes/TgEffectForm_Freeze.uc | 12 + .../Classes/TgEffectForm_Maeve_Midnight.uc | 19 + .../Classes/TgEffectForm_Maldamba_Slither.uc | 9 + .../Classes/TgEffectForm_Oracle_SoulStacks.uc | 2 + .../TgGame/Classes/TgEffectForm_WithMeshes.uc | 59 + exported/TgGame/Classes/TgEffectGroup.uc | 279 + exported/TgGame/Classes/TgEffectHeal.uc | 24 + exported/TgGame/Classes/TgEffectManager.uc | 493 + .../Classes/TgEffectModifyDeployable.uc | 23 + .../TgGame/Classes/TgEffectModifyEffect.uc | 23 + .../TgGame/Classes/TgEffectModifyProperty.uc | 30 + .../TgEffectModifyProperty_Ability1.uc | 6 + .../TgEffectModifyProperty_Ability2.uc | 6 + .../Classes/TgEffectModifyProperty_AltFire.uc | 7 + .../Classes/TgEffectModifyProperty_Child.uc | 2 + .../Classes/TgEffectModifyProperty_Inhand.uc | 6 + .../TgEffectModifyProperty_Movement.uc | 6 + exported/TgGame/Classes/TgEffect_Lift.uc | 22 + exported/TgGame/Classes/TgElevatingVolume.uc | 23 + exported/TgGame/Classes/TgEmitter.uc | 67 + .../TgGame/Classes/TgEmitterCrashlanding.uc | 114 + exported/TgGame/Classes/TgEmitterSpawnable.uc | 21 + .../Classes/TgEmitterSpawnable_TeamColor.uc | 20 + .../TgGame/Classes/TgEmitter_CameraEffect.uc | 102 + .../Classes/TgEmitter_CameraEffect_Bleed.uc | 16 + .../TgEmitter_CameraEffect_CCImmune.uc | 16 + .../Classes/TgEmitter_CameraEffect_Cripple.uc | 16 + .../TgEmitter_CameraEffect_DamageBase.uc | 63 + .../TgEmitter_CameraEffect_DamageBottom.uc | 17 + ...TgEmitter_CameraEffect_DamageBottomLeft.uc | 17 + ...gEmitter_CameraEffect_DamageBottomRight.uc | 17 + .../TgEmitter_CameraEffect_DamageLeft.uc | 17 + .../TgEmitter_CameraEffect_DamageRight.uc | 16 + .../TgEmitter_CameraEffect_DamageTop.uc | 17 + .../TgEmitter_CameraEffect_DamageTopLeft.uc | 17 + .../TgEmitter_CameraEffect_DamageTopRight.uc | 17 + .../Classes/TgEmitter_CameraEffect_Daze.uc | 16 + .../Classes/TgEmitter_CameraEffect_Fire.uc | 16 + .../Classes/TgEmitter_CameraEffect_Freeze.uc | 16 + .../Classes/TgEmitter_CameraEffect_Heal.uc | 24 + .../Classes/TgEmitter_CameraEffect_Hidden.uc | 32 + .../TgEmitter_CameraEffect_Knockback.uc | 16 + .../Classes/TgEmitter_CameraEffect_Mark.uc | 16 + .../Classes/TgEmitter_CameraEffect_Poison.uc | 16 + .../TgEmitter_CameraEffect_PreTeleport.uc | 17 + .../TgEmitter_CameraEffect_Revealed.uc | 16 + .../Classes/TgEmitter_CameraEffect_Root.uc | 16 + .../Classes/TgEmitter_CameraEffect_Slow.uc | 16 + .../Classes/TgEmitter_CameraEffect_Stun.uc | 16 + .../TgEmitter_CameraEffect_Teleport.uc | 18 + .../Classes/TgEmitter_CameraEffect_Venom.uc | 16 + .../TgGame/Classes/TgEmitter_TeamColor.uc | 32 + exported/TgGame/Classes/TgEndOfWorldVolume.uc | 18 + exported/TgGame/Classes/TgExplosionLight.uc | 55 + exported/TgGame/Classes/TgFatalityFactory.uc | 22 + .../TgGame/Classes/TgFatalityMeshActor.uc | 33 + exported/TgGame/Classes/TgFlagContentData.uc | 86 + exported/TgGame/Classes/TgFogOfWarBarrier.uc | 32 + exported/TgGame/Classes/TgFortressVolume.uc | 63 + exported/TgGame/Classes/TgGame.UPKG | 4 + exported/TgGame/Classes/TgGame.uc | 1076 ++ exported/TgGame/Classes/TgGameEngine.uc | 4 + exported/TgGame/Classes/TgGameTipManager.uc | 359 + exported/TgGame/Classes/TgGame_Arena.uc | 228 + .../TgGame/Classes/TgGame_Arena_Capture.uc | 151 + .../TgGame/Classes/TgGame_Arena_Escort.uc | 87 + .../Classes/TgGame_Arena_Escort_Practice.uc | 34 + .../TgGame/Classes/TgGame_Arena_Practice.uc | 34 + exported/TgGame/Classes/TgGame_Battle.uc | 228 + exported/TgGame/Classes/TgGame_Battle_Aram.uc | 18 + .../Classes/TgGame_Battle_Aram_Practice.uc | 24 + .../TgGame/Classes/TgGame_Battle_Casual.uc | 22 + .../TgGame/Classes/TgGame_Battle_Conquest.uc | 12 + .../Classes/TgGame_Battle_Conquest_Erez.uc | 94 + .../TgGame_Battle_Conquest_Practice.uc | 24 + .../Classes/TgGame_Battle_Conquest_Tc.uc | 12 + .../TgGame/Classes/TgGame_Battle_Expert.uc | 38 + .../TgGame/Classes/TgGame_Battle_Joust.uc | 34 + .../TgGame/Classes/TgGame_Battle_Joust_3v3.uc | 13 + .../TgGame/Classes/TgGame_Battle_Practice.uc | 43 + .../TgGame/Classes/TgGame_Battle_Training.uc | 36 + exported/TgGame/Classes/TgGame_CTF.uc | 234 + exported/TgGame/Classes/TgGame_Domination.uc | 138 + exported/TgGame/Classes/TgGame_Idol.uc | 52 + .../TgGame/Classes/TgGame_JeffPrototype.uc | 18 + exported/TgGame/Classes/TgGame_Mission.uc | 657 + exported/TgGame/Classes/TgGame_Paladins.uc | 445 + .../TgGame/Classes/TgGame_PaladinsExtended.uc | 3619 ++++ .../TgGame/Classes/TgGame_Paladins_Assault.uc | 346 + .../TgGame_Paladins_Assault_Practice.uc | 10 + .../Classes/TgGame_Paladins_Assault_Ranked.uc | 3 + .../Classes/TgGame_Paladins_CaptureOnly.uc | 13 + .../Classes/TgGame_Paladins_Halloween2017.uc | 50 + .../Classes/TgGame_Paladins_Onslaught.uc | 37 + .../TgGame_Paladins_Onslaught_Practice.uc | 11 + .../TgGame/Classes/TgGame_Paladins_Payload.uc | 883 + .../TgGame_Paladins_Payload_Practice.uc | 11 + .../Classes/TgGame_Paladins_Prototype1.uc | 21 + .../Classes/TgGame_Paladins_Prototype2.uc | 21 + .../Classes/TgGame_Paladins_Prototype3.uc | 22 + .../Classes/TgGame_Paladins_Prototype4.uc | 3 + .../Classes/TgGame_Paladins_Prototype5.uc | 3 + .../TgGame/Classes/TgGame_Paladins_PvE.uc | 15 + .../Classes/TgGame_Paladins_PvE_Survival.uc | 12 + .../Classes/TgGame_Paladins_ShootingRange.uc | 13 + .../TgGame/Classes/TgGame_Paladins_Siege.uc | 1143 ++ .../Classes/TgGame_Paladins_Siege_Practice.uc | 11 + .../Classes/TgGame_Paladins_Siege_Ranked.uc | 3 + .../Classes/TgGame_Paladins_Survival.uc | 178 + .../TgGame_Paladins_Survival_Practice.uc | 11 + .../Classes/TgGame_Paladins_TeamDeathMatch.uc | 39 + .../Classes/TgGame_Paladins_Tutorial.uc | 2375 +++ .../TgGame/Classes/TgGame_PointCapture.uc | 395 + exported/TgGame/Classes/TgGame_Siege.uc | 91 + .../TgGame_SinglePointCaptureAndHold.uc | 190 + .../TgGame/Classes/TgGameplayCurveOwner.uc | 9 + exported/TgGame/Classes/TgGameplayCurves.uc | 15 + .../TgGame/Classes/TgGameplayCurvesSet.uc | 45 + .../Classes/TgGameplayCurvesSet_Accuracy.uc | 17 + .../TgGameplayCurvesSet_AimAcceleration.uc | 14 + .../TgGameplayCurvesSet_AimAssistBounds.uc | 38 + ...gGameplayCurvesSet_AimAssistBoundsByFOV.uc | 17 + .../TgGameplayCurvesSet_AimAssistKeyframes.uc | 240 + ...meplayCurvesSet_AirControlFromZVelocity.uc | 17 + .../TgGameplayCurvesSet_DamageFalloff.uc | 19 + .../TgGameplayCurvesSet_DamageFalloffAOE.uc | 19 + .../TgGameplayCurvesSet_DamagePerShotHit.uc | 17 + ...TgGameplayCurvesSet_FlakInhandKnockback.uc | 17 + .../TgGameplayCurvesSet_FlakInhandSlow.uc | 17 + .../TgGameplayCurvesSet_GravityFromCustom.uc | 17 + ...gGameplayCurvesSet_GravityFromZVelocity.uc | 17 + ...ameplayCurvesSet_HitMarkerScaleByDamage.uc | 17 + ...gGameplayCurvesSet_ProjFrictionOverTime.uc | 17 + ...TgGameplayCurvesSet_ProjGravityOverTime.uc | 17 + ...meplayCurvesSet_ProjectileSpeedOverTime.uc | 17 + .../Classes/TgGameplayCurvesSet_Recoil.uc | 88 + .../TgGameplayCurvesSet_RecoilSimple.uc | 51 + ...TgGameplayCurvesSet_RuckusSpinUpControl.uc | 17 + .../TgGameplayCurvesSet_ScopeWeaponFOV.uc | 17 + .../Classes/TgGameplayCurvesSet_Simple.uc | 24 + .../TgGameplayCurvesSet_SpreadTendency.uc | 17 + .../TgGameplayCurvesSet_TargetAimTracking.uc | 97 + .../TgGameplayCurvesSet_ThreatLevelByRange.uc | 17 + ...meplayCurvesSet_WallRunVerticalMovement.uc | 17 + .../TgGame/Classes/TgGameplayEventsWriter.uc | 13 + exported/TgGame/Classes/TgHUD.uc | 102 + .../Classes/TgHavokNavigationHandleAudio.uc | 6 + .../TgGame/Classes/TgHeadShotComponent.uc | 15 + exported/TgGame/Classes/TgHeightFog.uc | 15 + exported/TgGame/Classes/TgHelpAlertVolume.uc | 67 + exported/TgGame/Classes/TgHelpTipActor.uc | 31 + exported/TgGame/Classes/TgHoldSpot.uc | 46 + exported/TgGame/Classes/TgIdol.uc | 32 + exported/TgGame/Classes/TgImpactFx.uc | 161 + exported/TgGame/Classes/TgInteractiveAudio.uc | 3 + .../Classes/TgInterface_YingIllusion.uc | 39 + .../Classes/TgInterpolatingCameraActor.uc | 82 + exported/TgGame/Classes/TgInvListener.uc | 2 + .../TgInvListener_ActiveDeployableEffect.uc | 2 + .../TgInvListener_ActiveWhileWeaponSwap.uc | 6 + ...vListener_AddDamageMissingHealthPercent.uc | 2 + .../Classes/TgInvListener_AerialAssault.uc | 2 + ...InvListener_AffectedByDeviceApplyEffect.uc | 2 + .../TgInvListener_ApplyHitSpecialOnKill.uc | 2 + .../Classes/TgInvListener_Combustible.uc | 2 + .../Classes/TgInvListener_CooledMags.uc | 12 + .../TgGame/Classes/TgInvListener_Counter.uc | 4 + .../Classes/TgInvListener_CounterLegendary.uc | 2 + .../TgGame/Classes/TgInvListener_CrackShot.uc | 16 + .../Classes/TgInvListener_Demolition.uc | 2 + .../Classes/TgInvListener_Enlightenment.uc | 4 + ...vListener_ExtraDamageAboveHealthPercent.uc | 7 + ...vListener_ExtraDamageBelowHealthPercent.uc | 7 + .../TgGame/Classes/TgInvListener_Firefight.uc | 2 + .../Classes/TgInvListener_GuerillaTactics.uc | 4 + .../TgGame/Classes/TgInvListener_Gunnery.uc | 2 + .../TgGame/Classes/TgInvListener_Halfshell.uc | 2 + .../TgInvListener_HitSelfOnHeadshot.uc | 2 + .../TgInvListener_HitWithDeviceFiremode.uc | 2 + .../Classes/TgInvListener_ImpasseEffect.uc | 2 + .../TgInvListener_KillVengeanceTarget.uc | 4 + .../Classes/TgInvListener_MegaPotion.uc | 2 + .../TgInvListener_NearVengeanceTarget.uc | 5 + .../TgGame/Classes/TgInvListener_Recycler.uc | 2 + .../Classes/TgInvListener_ReplaceCurveSets.uc | 2 + .../Classes/TgInvListener_SetChildFiremode.uc | 2 + .../Classes/TgInvListener_SetPetFiremode.uc | 2 + .../TgInvListener_SoulChargesActive.uc | 5 + .../TgInvListener_SoulChargesConsumed.uc | 5 + .../Classes/TgInvListener_SpiritsChosen.uc | 2 + .../Classes/TgInvListener_SpiteLegendary.uc | 2 + .../TgGame/Classes/TgInvListener_SteadyAim.uc | 10 + .../TgGame/Classes/TgInvListener_Tremors.uc | 2 + exported/TgGame/Classes/TgInventoryManager.uc | 191 + .../Classes/TgInventoryManager_Player.uc | 9 + exported/TgGame/Classes/TgInventoryObject.uc | 59 + .../Classes/TgInventoryObject_Device.uc | 14 + .../TgInventoryObject_Listen_Ability.uc | 2 + .../TgInventoryObject_Listen_AbilityEnd.uc | 2 + ...ect_Listen_AbilityEndTargetFiremodeOnly.uc | 2 + ...TgInventoryObject_Listen_AbilityInstant.uc | 3 + ...gInventoryObject_Listen_AbilityProcBase.uc | 6 + ...oryObject_Listen_AbilityProcDeployables.uc | 2 + ...entoryObject_Listen_AbilityShieldDamage.uc | 2 + .../TgInventoryObject_Listen_AbilityStart.uc | 2 + ...oryObject_Listen_AbilityStart_LowHealth.uc | 2 + .../TgInventoryObject_Listen_Accelerant.uc | 2 + .../TgInventoryObject_Listen_Acrobatics.uc | 2 + ...entoryObject_Listen_ActiveDuringAbility.uc | 2 + ...ten_ActiveDuringAbility_NotFiringInhand.uc | 2 + ...en_ActiveDuringAbility_WhileOutOfCombat.uc | 4 + ...ject_Listen_ActiveDuringDimensionalLink.uc | 5 + ...entoryObject_Listen_ActiveDuringPassive.uc | 6 + ...en_ActiveDuringPassive_WhileOutOfCombat.uc | 6 + ...ntoryObject_Listen_ActiveDuringPostFire.uc | 6 + ...entoryObject_Listen_ActiveDuringPreFire.uc | 6 + ...nventoryObject_Listen_ActiveMovementHit.uc | 2 + ...ject_Listen_ActiveWhileDeployableActive.uc | 4 + ...ct_Listen_ActiveWhileDeployableInactive.uc | 9 + ...ventoryObject_Listen_ActiveWhileInGrass.uc | 5 + ...oryObject_Listen_ActiveWhileOffCooldown.uc | 4 + .../TgInventoryObject_Listen_AddDamage.uc | 10 + ...Object_Listen_AddDamageMaxHealthPercent.uc | 2 + ...ventoryObject_Listen_AddDamagePerTarget.uc | 7 + ...gInventoryObject_Listen_AddShieldDamage.uc | 2 + ...InventoryObject_Listen_AffectedByDevice.uc | 2 + ...ject_Listen_AffectedByDeviceActiveWhile.uc | 4 + ...oryObject_Listen_AffectedByDeviceDamage.uc | 2 + ...ntoryObject_Listen_AffectedByDeviceKill.uc | 2 + ...Object_Listen_AffectedByDeviceLifesteal.uc | 4 + ...oryObject_Listen_AffectedByDeviceTarget.uc | 5 + .../TgInventoryObject_Listen_AirBlast.uc | 2 + .../TgInventoryObject_Listen_ArcingBeam.uc | 97 + .../TgInventoryObject_Listen_AtTheReady.uc | 2 + .../TgInventoryObject_Listen_AugmentPetHit.uc | 2 + .../TgInventoryObject_Listen_AuraMod.uc | 6 + ...nventoryObject_Listen_AuraNearObjective.uc | 2 + .../TgInventoryObject_Listen_Backstab.uc | 2 + ...entoryObject_Listen_BackstabExtraDamage.uc | 2 + ...gInventoryObject_Listen_BarricadeEffect.uc | 2 + .../TgInventoryObject_Listen_BarrierReef.uc | 2 + .../TgInventoryObject_Listen_BigGame.uc | 5 + ...ventoryObject_Listen_BlastShotHitEffect.uc | 10 + ...oryObject_Listen_BlastShotHitSelfEffect.uc | 6 + .../TgInventoryObject_Listen_BowlingBall.uc | 11 + .../TgInventoryObject_Listen_CatBurglar.uc | 2 + .../TgInventoryObject_Listen_CombatRepair.uc | 4 + .../Classes/TgInventoryObject_Listen_Combo.uc | 52 + ...TgInventoryObject_Listen_Combo_Androxus.uc | 10 + .../TgInventoryObject_Listen_Combo_Barik.uc | 56 + ...TgInventoryObject_Listen_Combo_BombKing.uc | 19 + .../TgInventoryObject_Listen_Combo_Buck.uc | 2 + .../TgInventoryObject_Listen_Combo_Cassie.uc | 7 + .../TgInventoryObject_Listen_Combo_Drogoz.uc | 4 + .../TgInventoryObject_Listen_Combo_Evie.uc | 13 + ...TgInventoryObject_Listen_Combo_Fernando.uc | 6 + .../TgInventoryObject_Listen_Combo_Grohk.uc | 6 + .../TgInventoryObject_Listen_Combo_Grover.uc | 6 + .../TgInventoryObject_Listen_Combo_Kinessa.uc | 5 + .../TgInventoryObject_Listen_Combo_Makoa.uc | 5 + .../TgInventoryObject_Listen_Combo_Pip.uc | 7 + .../TgInventoryObject_Listen_Combo_Ruckus.uc | 11 + .../TgInventoryObject_Listen_Combo_Skye.uc | 7 + .../TgInventoryObject_Listen_Combo_Viktor.uc | 16 + .../TgInventoryObject_Listen_Combo_Ying.uc | 16 + .../TgInventoryObject_Listen_Compensate.uc | 2 + .../TgInventoryObject_Listen_Conduit.uc | 12 + ...toryObject_Listen_CooldownDelayAbility1.uc | 6 + ...toryObject_Listen_CooldownDelayAbility2.uc | 6 + ...ect_Listen_CooldownDelayMovementAbility.uc | 6 + ...gInventoryObject_Listen_CooldownDelayer.uc | 18 + .../TgInventoryObject_Listen_DeepRoots.uc | 2 + .../TgInventoryObject_Listen_DefianceHit.uc | 2 + ...gInventoryObject_Listen_DeployOnAbility.uc | 17 + ...ventoryObject_Listen_DeployOnAbilityEnd.uc | 6 + ...ntoryObject_Listen_DeployOnAbilityStart.uc | 6 + ...ventoryObject_Listen_DeployOnDeployable.uc | 4 + ...nventoryObject_Listen_DeployOnDeviceHit.uc | 2 + ...ntoryObject_Listen_DeployWithProjectile.uc | 2 + ...toryObject_Listen_DeployedDuringAbility.uc | 2 + ...ntoryObject_Listen_DeployedWhileMounted.uc | 6 + .../TgInventoryObject_Listen_DirectHit.uc | 2 + .../TgInventoryObject_Listen_DoubleTap.uc | 12 + .../TgInventoryObject_Listen_DuringAbility.uc | 20 + .../TgInventoryObject_Listen_EarthenGuard.uc | 5 + .../TgInventoryObject_Listen_EmitterEffect.uc | 2 + .../TgInventoryObject_Listen_EnergyCharge.uc | 14 + ...ventoryObject_Listen_EquivalentExchange.uc | 2 + .../TgInventoryObject_Listen_Exaction.uc | 4 + .../TgInventoryObject_Listen_Exhilarate.uc | 2 + .../TgInventoryObject_Listen_Featherlite.uc | 2 + .../TgInventoryObject_Listen_Featherweight.uc | 2 + ...ventoryObject_Listen_FireInsteadOfDeath.uc | 2 + ...t_Listen_FireOnDamageInterruptedStealth.uc | 2 + ...nventoryObject_Listen_FireOnElimination.uc | 2 + .../TgInventoryObject_Listen_FireOnKill.uc | 2 + ...Object_Listen_FireOnKillWithChildDevice.uc | 2 + ...entoryObject_Listen_FireOnLandAfterLeap.uc | 2 + ...gInventoryObject_Listen_FireOnLowHealth.uc | 2 + .../TgInventoryObject_Listen_FireOnMiss.uc | 2 + ...TgInventoryObject_Listen_FireOnTeleport.uc | 2 + ...ventoryObject_Listen_FireWithDeployable.uc | 2 + ...ventoryObject_Listen_FireWithProjectile.uc | 2 + ...entoryObject_Listen_FiringDuringAbility.uc | 2 + ...bject_Listen_FiringDuringAbilityAltMode.uc | 2 + .../TgInventoryObject_Listen_FirstAidKit.uc | 2 + ...ct_Listen_FirstShotAfterMovementAbility.uc | 12 + ...n_FirstShotDuringOrAfterMovementAbility.uc | 4 + ...ct_Listen_FirstShotDuringOrAfterStealth.uc | 10 + .../TgInventoryObject_Listen_FragGrenade.uc | 2 + .../TgInventoryObject_Listen_FrigidField.uc | 2 + .../TgInventoryObject_Listen_Get_Nugget.uc | 2 + .../TgInventoryObject_Listen_GiftGiver.uc | 4 + .../TgInventoryObject_Listen_GourdEffect.uc | 2 + .../TgInventoryObject_Listen_Headhunter.uc | 2 + ...gInventoryObject_Listen_HealthByPercent.uc | 4 + ...ventoryObject_Listen_HealthPCT_In_Range.uc | 4 + .../TgInventoryObject_Listen_HitAirborne.uc | 2 + ...InventoryObject_Listen_HitAirborneOwner.uc | 2 + .../TgInventoryObject_Listen_HitOnHeadshot.uc | 2 + ...InventoryObject_Listen_HitStealthTarget.uc | 2 + .../TgInventoryObject_Listen_HitWithDevice.uc | 9 + ...ryObject_Listen_HitWithDeviceAllyTarget.uc | 6 + ...ryObject_Listen_HitWithDeviceAsIfInhand.uc | 6 + ...entoryObject_Listen_HitWithDeviceInhand.uc | 6 + ...ryObject_Listen_HitWithDeviceInhandOnly.uc | 7 + ...ntoryObject_Listen_HitWithDeviceSpecial.uc | 5 + ...t_Listen_HitWithInhandWhileDeviceFiring.uc | 7 + ...InventoryObject_Listen_HitWithPetDevice.uc | 5 + .../TgInventoryObject_Listen_Hustle.uc | 2 + ...gInventoryObject_Listen_ImpalerArrowHit.uc | 2 + ...toryObject_Listen_InHand_HitMissStacker.uc | 10 + .../Classes/TgInventoryObject_Listen_Jolt.uc | 2 + .../TgInventoryObject_Listen_Kindling.uc | 2 + .../TgInventoryObject_Listen_LastStand.uc | 4 + ...InventoryObject_Listen_LazarusResurrect.uc | 2 + .../TgInventoryObject_Listen_LiftOff.uc | 2 + ...TgInventoryObject_Listen_LoogieExploded.uc | 2 + ...nventoryObject_Listen_LoogieExplodedHit.uc | 4 + .../TgInventoryObject_Listen_LoogieHit.uc | 4 + .../TgInventoryObject_Listen_Marksman.uc | 10 + ...ntoryObject_Listen_MendingSpiritsActive.uc | 8 + ...ventoryObject_Listen_MirrorDamageToHeal.uc | 4 + ...ryObject_Listen_MirrorDamageToHealBlock.uc | 4 + ...yObject_Listen_MirrorInhandDamageToHeal.uc | 2 + ...toryObject_Listen_MirrorPetDamageToHeal.uc | 4 + .../TgInventoryObject_Listen_MoraleBoost.uc | 2 + .../Classes/TgInventoryObject_Listen_Mount.uc | 8 + .../TgInventoryObject_Listen_MountEnd.uc | 6 + .../TgInventoryObject_Listen_MountShield.uc | 10 + .../TgInventoryObject_Listen_NearObjective.uc | 5 + .../TgInventoryObject_Listen_NearOwnTurret.uc | 4 + ...entoryObject_Listen_OppressorMineEffect.uc | 2 + .../TgInventoryObject_Listen_OutOfCombat.uc | 4 + .../TgInventoryObject_Listen_PetAbility.uc | 2 + ..._Listen_PetAbilityWhileDeployableActive.uc | 4 + ...nventoryObject_Listen_PetAbility_Deploy.uc | 2 + .../TgInventoryObject_Listen_PetDied.uc | 2 + ...InventoryObject_Listen_PipConsequential.uc | 4 + .../TgInventoryObject_Listen_PoisonBolts.uc | 24 + .../TgInventoryObject_Listen_Proximity.uc | 2 + .../TgInventoryObject_Listen_RainOfFire.uc | 2 + .../TgInventoryObject_Listen_ReachOut.uc | 2 + ...oryObject_Listen_ReduceInhandSelfDamage.uc | 5 + ...yObject_Listen_ReduceOtherCooldownOnHit.uc | 2 + ...t_Listen_ReduceOtherCooldownOnStartFire.uc | 2 + ...ct_Listen_ReduceOtherCooldownOnStopFire.uc | 2 + ...bject_Listen_ReduceSelfDamageDeployable.uc | 2 + ...bject_Listen_ReduceSelfDamageProjectile.uc | 2 + .../TgInventoryObject_Listen_ReloadCard.uc | 5 + ...TgInventoryObject_Listen_ReversalEffect.uc | 2 + .../TgInventoryObject_Listen_SalvoExplode.uc | 2 + .../TgInventoryObject_Listen_Scramble.uc | 4 + ...nventoryObject_Listen_ShellShieldEffect.uc | 2 + .../TgInventoryObject_Listen_ShieldEffect.uc | 2 + ...TgInventoryObject_Listen_SizeOfTheFight.uc | 2 + ...nventoryObject_Listen_SmokeScreenEffect.uc | 2 + ...toryObject_Listen_SpawnTeamHealthNugget.uc | 15 + .../Classes/TgInventoryObject_Listen_Spite.uc | 4 + .../TgInventoryObject_Listen_Spitfire.uc | 2 + .../TgInventoryObject_Listen_SpringBloom.uc | 2 + .../TgInventoryObject_Listen_Sprint.uc | 2 + .../Classes/TgInventoryObject_Listen_Stack.uc | 5 + ...InventoryObject_Listen_StackPerPetAlive.uc | 5 + .../TgInventoryObject_Listen_StandingStill.uc | 2 + ...ryObject_Listen_StandingStillSelfEffect.uc | 11 + ...InventoryObject_Listen_StatusIsOnTarget.uc | 2 + ...ventoryObject_Listen_StickyBombDetonate.uc | 2 + ...gInventoryObject_Listen_TagForLifesteal.uc | 6 + .../TgInventoryObject_Listen_Thunderstruck.uc | 5 + .../TgInventoryObject_Listen_TotemEffect.uc | 2 + .../TgInventoryObject_Listen_TripWire.uc | 2 + .../TgInventoryObject_Listen_TrueGrit.uc | 2 + .../TgInventoryObject_Listen_Undying.uc | 2 + .../TgInventoryObject_Listen_Unveil.uc | 2 + .../TgInventoryObject_Listen_UseWhileCCed.uc | 4 + .../TgInventoryObject_Listen_Weaken.uc | 13 + exported/TgGame/Classes/TgItemShopVolume.uc | 149 + exported/TgGame/Classes/TgKActorSpawnable.uc | 35 + exported/TgGame/Classes/TgKAssetSpawnable.uc | 43 + .../TgGame/Classes/TgKAsset_ClientSideSim.uc | 79 + exported/TgGame/Classes/TgKismetTestActor.uc | 179 + exported/TgGame/Classes/TgLanePylon.uc | 26 + .../Classes/TgLevelStreamingSpectator.uc | 18 + .../Classes/TgLevelStreamingWorldDetail.uc | 15 + exported/TgGame/Classes/TgLian.uc | 4 + exported/TgGame/Classes/TgLobbyCamera.uc | 200 + .../TgGame/Classes/TgLobbyCaptureActor.uc | 27 + exported/TgGame/Classes/TgLocalPlayer.uc | 54 + exported/TgGame/Classes/TgManifestGroup.uc | 21 + exported/TgGame/Classes/TgMapBoundsVolume.uc | 36 + exported/TgGame/Classes/TgMapInfo.uc | 89 + exported/TgGame/Classes/TgMarkComponent.uc | 54 + exported/TgGame/Classes/TgMenuContentData.uc | 99 + exported/TgGame/Classes/TgMenuMeshInfo.uc | 98 + .../TgGame/Classes/TgMenuTransitionActor.uc | 47 + exported/TgGame/Classes/TgMeshAssembly.uc | 43 + .../Classes/TgMidnightFogVolumeDensityInfo.uc | 176 + exported/TgGame/Classes/TgMinimapManager.uc | 86 + exported/TgGame/Classes/TgMinionGoal.uc | 52 + .../TgGame/Classes/TgMinionGoal_Aphrodite.uc | 29 + .../TgGame/Classes/TgMissionListVolume.uc | 22 + .../TgGame/Classes/TgMobileAmbientSound.uc | 7 + .../Classes/TgModifyPawnPropertiesVolume.uc | 83 + exported/TgGame/Classes/TgMuzzleFlash.uc | 13 + exported/TgGame/Classes/TgMuzzleFlash_Bow.uc | 10 + .../TgGame/Classes/TgMuzzleFlash_IceStaff.uc | 10 + .../TgGame/Classes/TgMuzzleFlash_Lance.uc | 11 + exported/TgGame/Classes/TgMuzzleFlash_Orb.uc | 11 + .../Classes/TgMuzzleFlash_PotionLauncher.uc | 10 + .../Classes/TgMuzzleFlash_SkyeInHand.uc | 10 + .../TgGame/Classes/TgMuzzleFlash_Sniper.uc | 10 + .../TgGame/Classes/TgNavMeshPath_AlongLane.uc | 31 + .../TgGame/Classes/TgNavRouteIndicator.uc | 284 + exported/TgGame/Classes/TgNavigationPoint.uc | 24 + .../Classes/TgNavigationPointSpawnable.uc | 23 + .../TgGame/Classes/TgNearObjectiveVolume.uc | 45 + exported/TgGame/Classes/TgNewUserSettings.uc | 5 + exported/TgGame/Classes/TgObject.uc | 1250 ++ exported/TgGame/Classes/TgObjectReferencer.uc | 4 + exported/TgGame/Classes/TgObjective.uc | 184 + exported/TgGame/Classes/TgObjectiveVolume.uc | 67 + .../Classes/TgObserver_ViewTargetChanged.uc | 6 + .../TgGame/Classes/TgOnlineGameSettings.uc | 6 + .../TgGame/Classes/TgOverviewCameraActor.uc | 5 + .../TgGame/Classes/TgPaladinsController.uc | 39 + .../Classes/TgParticleModuleTypeDataLight.uc | 21 + .../Classes/TgParticleSystemComponent.uc | 12 + exported/TgGame/Classes/TgPathPreviewActor.uc | 24 + .../TgPathPreviewRenderingComponent.uc | 9 + exported/TgGame/Classes/TgPathfinder.uc | 120 + exported/TgGame/Classes/TgPathfinderWalker.uc | 29 + exported/TgGame/Classes/TgPawn.uc | 15764 ++++++++++++++++ exported/TgGame/Classes/TgPawn_Androxus.uc | 386 + exported/TgGame/Classes/TgPawn_Astro.uc | 227 + exported/TgGame/Classes/TgPawn_Barik.uc | 106 + exported/TgGame/Classes/TgPawn_BarrierTank.uc | 260 + exported/TgGame/Classes/TgPawn_Biped.uc | 259 + exported/TgGame/Classes/TgPawn_Blades.uc | 629 + exported/TgGame/Classes/TgPawn_BombKing.uc | 378 + exported/TgGame/Classes/TgPawn_Buck.uc | 103 + exported/TgGame/Classes/TgPawn_Cassie.uc | 134 + exported/TgGame/Classes/TgPawn_Character.uc | 1729 ++ exported/TgGame/Classes/TgPawn_Darklord.uc | 192 + exported/TgGame/Classes/TgPawn_Demon.uc | 173 + exported/TgGame/Classes/TgPawn_Drogoz.uc | 228 + exported/TgGame/Classes/TgPawn_Evie.uc | 141 + exported/TgGame/Classes/TgPawn_Fairy.uc | 126 + exported/TgGame/Classes/TgPawn_Fernando.uc | 322 + exported/TgGame/Classes/TgPawn_Flak.uc | 190 + exported/TgGame/Classes/TgPawn_Gauntlet.uc | 137 + exported/TgGame/Classes/TgPawn_Grohk.uc | 165 + exported/TgGame/Classes/TgPawn_Grover.uc | 103 + exported/TgGame/Classes/TgPawn_Illusion.uc | 658 + exported/TgGame/Classes/TgPawn_Juggernaut.uc | 147 + exported/TgGame/Classes/TgPawn_Kinessa.uc | 395 + exported/TgGame/Classes/TgPawn_LanePusher.uc | 350 + .../TgGame/Classes/TgPawn_LanePusherBase.uc | 403 + .../TgGame/Classes/TgPawn_LanePusherRace.uc | 135 + exported/TgGame/Classes/TgPawn_Lazarus.uc | 187 + exported/TgGame/Classes/TgPawn_Lex.uc | 310 + exported/TgGame/Classes/TgPawn_Longbow.uc | 215 + exported/TgGame/Classes/TgPawn_Makoa.uc | 230 + exported/TgGame/Classes/TgPawn_MalDamba.uc | 97 + exported/TgGame/Classes/TgPawn_Oracle.uc | 189 + exported/TgGame/Classes/TgPawn_Owl.uc | 268 + exported/TgGame/Classes/TgPawn_Pet.uc | 234 + exported/TgGame/Classes/TgPawn_Pip.uc | 302 + exported/TgGame/Classes/TgPawn_Princess.uc | 195 + exported/TgGame/Classes/TgPawn_Ruckus.uc | 300 + .../TgPawn_SiegeEngine_CaptureAndPayload.uc | 98 + ...TgPawn_SiegeEngine_ImmuneWhileTraveling.uc | 71 + .../Classes/TgPawn_SiegeEngine_Payload.uc | 645 + .../TgPawn_SiegeEngine_Payload_Crusade.uc | 71 + .../Classes/TgPawn_SiegeEngine_Wedge.uc | 78 + exported/TgGame/Classes/TgPawn_SiegeWall.uc | 241 + .../TgGame/Classes/TgPawn_SiegeWall_Base.uc | 176 + .../TgGame/Classes/TgPawn_SiegeWall_Inner.uc | 154 + .../TgGame/Classes/TgPawn_SiegeWall_Outer.uc | 154 + exported/TgGame/Classes/TgPawn_Skye.uc | 116 + exported/TgGame/Classes/TgPawn_Stoker.uc | 226 + exported/TgGame/Classes/TgPawn_Structure.uc | 164 + exported/TgGame/Classes/TgPawn_Tower.uc | 512 + exported/TgGame/Classes/TgPawn_TowerBase.uc | 160 + exported/TgGame/Classes/TgPawn_Tower_FA.uc | 198 + exported/TgGame/Classes/TgPawn_Tower_Inner.uc | 70 + exported/TgGame/Classes/TgPawn_Tower_Outer.uc | 70 + exported/TgGame/Classes/TgPawn_Tower_Upper.uc | 70 + exported/TgGame/Classes/TgPawn_Turret.uc | 186 + .../Classes/TgPawn_Turret_DefaultCone.uc | 70 + .../Classes/TgPawn_Turret_Flamethrower.uc | 63 + exported/TgGame/Classes/TgPawn_Turret_Mega.uc | 78 + exported/TgGame/Classes/TgPawn_Tyra.uc | 102 + exported/TgGame/Classes/TgPawn_Viktor.uc | 197 + exported/TgGame/Classes/TgPawn_VoodooTotem.uc | 209 + exported/TgGame/Classes/TgPawn_Ying.uc | 172 + .../TgGame/Classes/TgPhysAnimTestActor.uc | 564 + .../Classes/TgPhysicalMaterialProperty.uc | 7 + exported/TgGame/Classes/TgPickupFactory.uc | 66 + .../TgGame/Classes/TgPickupFactory_Item.uc | 73 + .../TgGame/Classes/TgPlayOfTheGameCamera.uc | 76 + .../TgGame/Classes/TgPlayerBlockingVolume.uc | 18 + exported/TgGame/Classes/TgPlayerCamera.uc | 1332 ++ exported/TgGame/Classes/TgPlayerController.uc | 8561 +++++++++ .../TgGame/Classes/TgPlayerCountVolume.uc | 51 + exported/TgGame/Classes/TgPlayerInput.uc | 990 + exported/TgGame/Classes/TgPointOfInterest.uc | 25 + exported/TgGame/Classes/TgPortal.uc | 73 + .../TgGame/Classes/TgPostProcessVolume.uc | 36 + exported/TgGame/Classes/TgProj_BlastShot.uc | 28 + .../Classes/TgProj_BombKingStickyBomb.uc | 364 + .../TgGame/Classes/TgProj_DarkConvergence.uc | 35 + .../TgGame/Classes/TgProj_DarklordBase.uc | 225 + .../TgGame/Classes/TgProj_DarklordChain1.uc | 25 + .../TgGame/Classes/TgProj_DarklordChain2.uc | 25 + .../TgGame/Classes/TgProj_DarklordChain3.uc | 37 + .../TgGame/Classes/TgProj_DemonTeleport.uc | 85 + exported/TgGame/Classes/TgProj_Drag.uc | 131 + .../TgGame/Classes/TgProj_DreadSerpent.uc | 26 + .../TgGame/Classes/TgProj_DrogozRocket.uc | 48 + .../TgGame/Classes/TgProj_Enlightenment.uc | 25 + exported/TgGame/Classes/TgProj_EvilMojo.uc | 43 + .../Classes/TgProj_ExplodeAtMaxRange.uc | 25 + .../TgGame/Classes/TgProj_ExplosiveFlask.uc | 28 + exported/TgGame/Classes/TgProj_Fireball.uc | 25 + exported/TgGame/Classes/TgProj_FlakRocket.uc | 26 + exported/TgGame/Classes/TgProj_Flare.uc | 102 + exported/TgGame/Classes/TgProj_FragGrenade.uc | 104 + exported/TgGame/Classes/TgProj_FreeGrenade.uc | 302 + exported/TgGame/Classes/TgProj_GaeBolg.uc | 25 + exported/TgGame/Classes/TgProj_Greatbow.uc | 30 + exported/TgGame/Classes/TgProj_GrumpyBomb.uc | 172 + .../TgGame/Classes/TgProj_HealingPotion.uc | 47 + .../TgGame/Classes/TgProj_HexaFireRocket.uc | 35 + exported/TgGame/Classes/TgProj_IceStorm.uc | 142 + .../TgGame/Classes/TgProj_ImpalerArrow.uc | 36 + .../TgGame/Classes/TgProj_KnifeLongRange.uc | 25 + .../TgGame/Classes/TgProj_KnifeShortRange.uc | 25 + .../TgGame/Classes/TgProj_LanepusherCannon.uc | 65 + exported/TgGame/Classes/TgProj_Loogie.uc | 257 + .../TgGame/Classes/TgProj_MalDambaInhand.uc | 30 + exported/TgGame/Classes/TgProj_Molotov.uc | 39 + .../TgGame/Classes/TgProj_OppressorMine.uc | 60 + exported/TgGame/Classes/TgProj_PoppyBomb.uc | 84 + .../TgProj_PotionLauncherProjectile.uc | 82 + ...ionLauncherProjectile_HighFireAngleTest.uc | 25 + exported/TgGame/Classes/TgProj_Reversal.uc | 27 + exported/TgGame/Classes/TgProj_Seedling.uc | 210 + .../Classes/TgProj_SeedlingSecondary.uc | 34 + exported/TgGame/Classes/TgProj_Simulated.uc | 546 + exported/TgGame/Classes/TgProj_SmokeScreen.uc | 27 + exported/TgGame/Classes/TgProj_SnakeToss.uc | 27 + exported/TgGame/Classes/TgProj_SoulOrb.uc | 25 + .../TgGame/Classes/TgProj_SpeedOverRange.uc | 25 + .../TgGame/Classes/TgProj_SpeedOverTime.uc | 25 + exported/TgGame/Classes/TgProj_Telepunch.uc | 47 + exported/TgGame/Classes/TgProj_TimeBomb.uc | 26 + exported/TgGame/Classes/TgProj_Tracer.uc | 95 + .../TgGame/Classes/TgProj_VenomousGourd.uc | 31 + exported/TgGame/Classes/TgProj_Vine.uc | 136 + exported/TgGame/Classes/TgProjectile.uc | 1906 ++ exported/TgGame/Classes/TgProperty.uc | 539 + exported/TgGame/Classes/TgRecoilKeyframe.uc | 18 + .../TgGame/Classes/TgRepInfo_CapturePoint.uc | 148 + .../TgGame/Classes/TgRepInfo_Deployable.uc | 256 + exported/TgGame/Classes/TgRepInfo_Factory.uc | 225 + exported/TgGame/Classes/TgRepInfo_Game.uc | 1131 ++ exported/TgGame/Classes/TgRepInfo_Player.uc | 1271 ++ exported/TgGame/Classes/TgRepInfo_Portal.uc | 13 + .../TgGame/Classes/TgRepInfo_TaskForce.uc | 444 + .../TgGame/Classes/TgRespawnBeaconBase.uc | 113 + .../TgGame/Classes/TgRespawnBeaconEntrance.uc | 489 + .../TgGame/Classes/TgRespawnBeaconExit.uc | 825 + exported/TgGame/Classes/TgSavedMove.uc | 121 + .../Classes/TgScreenCapturePostEffect.uc | 19 + exported/TgGame/Classes/TgSeqAct_AIFreeze.uc | 13 + .../TgGame/Classes/TgSeqAct_AIMoveToActor.uc | 13 + .../TgGame/Classes/TgSeqAct_AIStartFireAt.uc | 13 + .../TgGame/Classes/TgSeqAct_AIStopFire.uc | 8 + .../TgGame/Classes/TgSeqAct_AITargetActor.uc | 13 + .../TgGame/Classes/TgSeqAct_AddAnimSets.uc | 13 + .../TgSeqAct_BeaconEntranceSetActive.uc | 12 + .../Classes/TgSeqAct_BeaconExitSetRespawn.uc | 14 + .../Classes/TgSeqAct_BeginWaitForLookAt.uc | 33 + .../TgGame/Classes/TgSeqAct_ChangeScale.uc | 18 + .../Classes/TgSeqAct_ClientLoadDevices.uc | 13 + .../TgGame/Classes/TgSeqAct_CloseHUDMenus.uc | 27 + .../Classes/TgSeqAct_DefenseWaveSpawner.uc | 20 + .../TgGame/Classes/TgSeqAct_DespawnBots.uc | 9 + .../TgGame/Classes/TgSeqAct_EndMission.uc | 4 + .../Classes/TgSeqAct_FillUltimateEnergy.uc | 27 + .../TgSeqAct_ForceClientTutorialAction.uc | 22 + exported/TgGame/Classes/TgSeqAct_GetBot.uc | 13 + .../TgGame/Classes/TgSeqAct_GetCharClass.uc | 14 + .../TgSeqAct_GetLocalPlayerController.uc | 30 + .../Classes/TgSeqAct_GetMaterialInst.uc | 15 + .../TgGame/Classes/TgSeqAct_GetPlayerCount.uc | 21 + .../Classes/TgSeqAct_GetTaskForceCount.uc | 15 + .../Classes/TgSeqAct_GetTaskForceNumber.uc | 10 + .../TgGame/Classes/TgSeqAct_GetTeamIndex.uc | 10 + .../TgGame/Classes/TgSeqAct_GiveCredits.uc | 42 + .../TgGame/Classes/TgSeqAct_GiveFullVitals.uc | 10 + exported/TgGame/Classes/TgSeqAct_HackBot.uc | 12 + exported/TgGame/Classes/TgSeqAct_JoinTeam.uc | 12 + exported/TgGame/Classes/TgSeqAct_KillBots.uc | 9 + .../Classes/TgSeqAct_KillCurrentSquad.uc | 9 + exported/TgGame/Classes/TgSeqAct_Killpawns.uc | 8 + .../Classes/TgSeqAct_LaunchHomeInstance.uc | 8 + .../Classes/TgSeqAct_LogTutorialAction.uc | 13 + .../Classes/TgSeqAct_MapOutroFinished.uc | 9 + .../Classes/TgSeqAct_MarkSpawnReturn.uc | 19 + .../TgGame/Classes/TgSeqAct_NavIndicator.uc | 13 + .../Classes/TgSeqAct_ParentAnimComponent.uc | 12 + .../Classes/TgSeqAct_PauseSetupTimer.uc | 34 + .../TgGame/Classes/TgSeqAct_PingMinimap.uc | 13 + .../Classes/TgSeqAct_PlayAnnouncement.uc | 38 + .../TgGame/Classes/TgSeqAct_PlayCameraAnim.uc | 22 + .../Classes/TgSeqAct_PlayFullBodyAnim.uc | 21 + .../TgGame/Classes/TgSeqAct_ProgressTo.uc | 13 + .../TgGame/Classes/TgSeqAct_PushMatinee.uc | 14 + .../TgGame/Classes/TgSeqAct_RequestMission.uc | 20 + .../TgGame/Classes/TgSeqAct_ResetCooldowns.uc | 44 + .../Classes/TgSeqAct_RespawnAllPlayers.uc | 18 + .../TgGame/Classes/TgSeqAct_RestartPlayers.uc | 8 + .../Classes/TgSeqAct_SelectBestSpawnPoint.uc | 63 + .../TgSeqAct_SendPlayerTrackingEvent.uc | 14 + .../Classes/TgSeqAct_SetCreditGainBlock.uc | 12 + .../Classes/TgSeqAct_SetCrowdControlImmune.uc | 11 + .../Classes/TgSeqAct_SetEnergyGainBlock.uc | 12 + .../TgGame/Classes/TgSeqAct_SetHexState.uc | 12 + .../Classes/TgSeqAct_SetInputEnabled.uc | 69 + .../TgGame/Classes/TgSeqAct_SetMapLane.uc | 12 + .../TgGame/Classes/TgSeqAct_SetMissionTime.uc | 21 + .../TgGame/Classes/TgSeqAct_SetPlayerLevel.uc | 12 + .../TgGame/Classes/TgSeqAct_SetPlayerMesh.uc | 12 + .../Classes/TgSeqAct_SetPlayerMeshVisible.uc | 26 + .../TgGame/Classes/TgSeqAct_SetSkelPosture.uc | 11 + .../TgGame/Classes/TgSeqAct_SetTaskforce.uc | 12 + .../TgGame/Classes/TgSeqAct_SetUIClock.uc | 20 + .../TgGame/Classes/TgSeqAct_SetUITextBox.uc | 22 + .../Classes/TgSeqAct_SetUltimateEnergy.uc | 29 + .../TgGame/Classes/TgSeqAct_ShowGameTip.uc | 33 + .../Classes/TgSeqAct_SpawnProjectile.uc | 43 + .../Classes/TgSeqAct_TemporaryAddDevice.uc | 15 + .../Classes/TgSeqAct_TemporaryRemoveDevice.uc | 13 + .../TgGame/Classes/TgSeqAct_TestResult.uc | 13 + .../TgGame/Classes/TgSeqAct_TgCameraShake.uc | 15 + .../TgSeqAct_ToggleStaticMeshSilhouette.uc | 47 + .../TgGame/Classes/TgSeqAct_TrainingAwards.uc | 25 + .../TgGame/Classes/TgSeqAct_TriggerBots.uc | 18 + .../Classes/TgSeqAct_TriggerInterpActor.uc | 12 + .../Classes/TgSeqAct_TutorialHighlighter.uc | 32 + .../Classes/TgSeqAct_TutorialInstruction.uc | 11 + .../TgGame/Classes/TgSeqAct_TutorialTips.uc | 11 + exported/TgGame/Classes/TgSeqAct_UIAlert.uc | 16 + .../Classes/TgSeqAct_UIElementVisibility.uc | 17 + .../Classes/TgSeqAct_UnpauseSetupTimer.uc | 22 + exported/TgGame/Classes/TgSeqCond_And.uc | 12 + .../Classes/TgSeqCond_CompareDamageType.uc | 13 + .../Classes/TgSeqCond_CompareDeviceId.uc | 16 + .../TgGame/Classes/TgSeqCond_HasCondition.uc | 28 + exported/TgGame/Classes/TgSeqCond_IsHuman.uc | 12 + .../TgGame/Classes/TgSeqCond_IsSecuring.uc | 11 + .../TgGame/Classes/TgSeqCond_IsSpectating.uc | 11 + exported/TgGame/Classes/TgSeqCond_Or.uc | 12 + exported/TgGame/Classes/TgSeqEvent_BotDied.uc | 24 + .../TgGame/Classes/TgSeqEvent_BotSpawned.uc | 10 + .../Classes/TgSeqEvent_BurnCardPurchased.uc | 64 + ...nt_CaptureAndPayloadCapturePointVictory.uc | 9 + .../TgSeqEvent_CaptureAndPayloadRoundBegin.uc | 10 + .../TgSeqEvent_CaptureAndPayloadRoundEnd.uc | 10 + ...t_CaptureAndPayloadSuccessfulDefenseTF1.uc | 9 + ...t_CaptureAndPayloadSuccessfulDefenseTF2.uc | 9 + ...vent_CaptureAndPayloadSuccessfulPushTF1.uc | 10 + ...vent_CaptureAndPayloadSuccessfulPushTF2.uc | 9 + .../TgSeqEvent_CaptureAndPayloadWinTF1.uc | 9 + .../TgSeqEvent_CaptureAndPayloadWinTF2.uc | 9 + .../Classes/TgSeqEvent_ChaosGameEvent.uc | 20 + .../TgSeqEvent_ChaosObjectiveActive.uc | 14 + .../TgSeqEvent_ChaosObjectiveStatus.uc | 27 + .../Classes/TgSeqEvent_ClassSelected.uc | 10 + .../Classes/TgSeqEvent_ClientGameOver.uc | 15 + .../TgSeqEvent_ControlPointOwnershipChange.uc | 16 + ...vent_ControlPointOwnershipChange_Server.uc | 13 + ...TgSeqEvent_ControlPointOwnershipPercent.uc | 14 + .../TgGame/Classes/TgSeqEvent_CrowdEvent.uc | 21 + .../TgSeqEvent_DebugConsoleKismetTest.uc | 10 + .../Classes/TgSeqEvent_DeployableFired.uc | 14 + .../Classes/TgSeqEvent_DoorStatusChanged.uc | 13 + .../Classes/TgSeqEvent_EnergyUpdated.uc | 68 + .../TgSeqEvent_Escort_Despawn_Success.uc | 14 + .../TgGame/Classes/TgSeqEvent_FactoryEmpty.uc | 10 + .../TgGame/Classes/TgSeqEvent_FiringDevice.uc | 9 + .../Classes/TgSeqEvent_InputReceived.uc | 77 + .../TgGame/Classes/TgSeqEvent_LevelFadedIn.uc | 12 + .../Classes/TgSeqEvent_LoadoutChanged.uc | 61 + .../TgSeqEvent_LobbyCameraSetActive.uc | 14 + .../TgGame/Classes/TgSeqEvent_LobbyEvents.uc | 15 + .../Classes/TgSeqEvent_LocalPlayerDied.uc | 11 + .../Classes/TgSeqEvent_LocalPlayerRecalled.uc | 11 + .../TgSeqEvent_LocalPlayerScoredKill.uc | 11 + ...Event_LocalPlayersTeamScoredPhoenixKill.uc | 11 + ...eqEvent_LocalPlayersTeamScoredTowerKill.uc | 11 + .../Classes/TgSeqEvent_LookAtReceived.uc | 10 + .../Classes/TgSeqEvent_MICParameterEvent.uc | 30 + .../TgSeqEvent_MissionTimeRemaining.uc | 14 + .../TgGame/Classes/TgSeqEvent_MissionTimer.uc | 23 + exported/TgGame/Classes/TgSeqEvent_Named.uc | 22 + .../Classes/TgSeqEvent_PayloadAttackersWin.uc | 9 + .../Classes/TgSeqEvent_PayloadBeginTF1.uc | 9 + .../Classes/TgSeqEvent_PayloadBeginTF2.uc | 9 + .../Classes/TgSeqEvent_PayloadCP1Reached.uc | 9 + .../Classes/TgSeqEvent_PayloadCP2Reached.uc | 9 + .../Classes/TgSeqEvent_PayloadDefendersWin.uc | 9 + .../Classes/TgSeqEvent_PayloadEndTF1.uc | 9 + .../Classes/TgSeqEvent_PayloadEndTF2.uc | 9 + .../Classes/TgSeqEvent_PayloadGameEvent.uc | 19 + .../TgSeqEvent_PayloadMissionEvents.uc | 26 + .../Classes/TgSeqEvent_PlaceableDestroyed.uc | 14 + .../Classes/TgSeqEvent_PlayOfTheGame.uc | 24 + .../Classes/TgSeqEvent_PlayerCountHit.uc | 10 + .../Classes/TgSeqEvent_PlayerInitialized.uc | 12 + .../TgGame/Classes/TgSeqEvent_PlayerMoved.uc | 31 + .../Classes/TgSeqEvent_SetupTimeEnded.uc | 12 + .../TgGame/Classes/TgSeqEvent_SiegePush.uc | 14 + .../Classes/TgSeqEvent_SpawnGateActivate.uc | 10 + .../Classes/TgSeqEvent_SpawnGateDeactivate.uc | 10 + ...gSeqEvent_SpawnGateDeactivate_Attackers.uc | 10 + ...gSeqEvent_SpawnGateDeactivate_Defenders.uc | 10 + .../Classes/TgSeqEvent_SpawnLanePusher.uc | 16 + .../TgGame/Classes/TgSeqEvent_SpawnWise.uc | 15 + .../Classes/TgSeqEvent_SpectatorReady.uc | 55 + .../Classes/TgSeqEvent_SurvivalGameBegin.uc | 9 + .../Classes/TgSeqEvent_SurvivalGameEnd.uc | 9 + .../Classes/TgSeqEvent_SurvivalGameEvent.uc | 16 + .../TgGame/Classes/TgSeqEvent_TakeDamage.uc | 56 + .../Classes/TgSeqEvent_TaskForceInactive.uc | 11 + .../TgSeqEvent_TaskForceScoreUpdated.uc | 16 + .../TgGame/Classes/TgSeqEvent_TeamInactive.uc | 11 + .../Classes/TgSeqEvent_TicketCountUpdated.uc | 13 + .../TgGame/Classes/TgSeqEvent_TimeLapse.uc | 14 + .../TgGame/Classes/TgSeqEvent_Tutorial.uc | 84 + .../Classes/TgSeqEvent_TutorialEvent.uc | 51 + .../TgGame/Classes/TgSeqEvent_UI_Event.uc | 100 + .../TgSeqEvent_UpdateLanePusherCount.uc | 15 + exported/TgGame/Classes/TgSeqEvent_Used.uc | 12 + .../Classes/TgSeqEvent_VaultLowHealth.uc | 9 + exported/TgGame/Classes/TgSeqOp_MathCalc.uc | 18 + .../TgGame/Classes/TgSeqVar_DamageType.uc | 11 + exported/TgGame/Classes/TgSeqVar_Player.uc | 20 + .../TgGame/Classes/TgSeqVar_RouteNumber.uc | 10 + exported/TgGame/Classes/TgSiegePushActor.uc | 230 + .../Classes/TgSilhouetteComponentPaladins.uc | 92 + ...TgSilhouetteComponentPaladinsDeployable.uc | 10 + .../TgSilhouetteComponentPaladinsPawn.uc | 11 + .../Classes/TgSilhouetteComponentPayload.uc | 10 + .../TgGame/Classes/TgSilhouetteManager.uc | 40 + .../TgGame/Classes/TgSkelCon_AstroSpinner.uc | 5 + .../Classes/TgSkelCon_CCD_IK_FootPlacement.uc | 50 + .../Classes/TgSkelCon_ClockworkSpinner.uc | 36 + .../TgGame/Classes/TgSkelCon_FootPlacement.uc | 5 + exported/TgGame/Classes/TgSkelCon_Gate.uc | 23 + .../TgGame/Classes/TgSkelCon_HitReaction.uc | 102 + .../TgGame/Classes/TgSkelCon_HookChain.uc | 28 + exported/TgGame/Classes/TgSkelCon_LookAt.uc | 8 + .../Classes/TgSkelCon_OscillateBoneScale.uc | 15 + .../Classes/TgSkelCon_OscillateRotation.uc | 17 + .../Classes/TgSkelCon_OscillateTranslation.uc | 17 + .../TgGame/Classes/TgSkelCon_RuckusSpinner.uc | 3 + exported/TgGame/Classes/TgSkelCon_SkinGate.uc | 27 + exported/TgGame/Classes/TgSkelCon_Spinner.uc | 34 + exported/TgGame/Classes/TgSkelCon_Spring.uc | 9 + .../TgGame/Classes/TgSkelControlSingleBone.uc | 12 + .../Classes/TgSkelControlSingleBone_Ammo.uc | 20 + .../TgSkelControlSingleBone_Ammo_Lex.uc | 18 + .../TgSkelControlSingleBone_DisplayGroup.uc | 32 + .../TgSkelControlSingleBone_PistonBarrel.uc | 16 + .../TgSkelControlSingleBone_Skinned.uc | 25 + .../TgGame/Classes/TgSkeletalMeshActor.uc | 115 + .../Classes/TgSkeletalMeshActorSpawnable.uc | 48 + ...keletalMeshActor_DestructibleTowerChunk.uc | 120 + .../Classes/TgSkeletalMeshActor_FlagStand.uc | 111 + .../Classes/TgSkeletalMeshActor_Leash.uc | 54 + .../Classes/TgSkeletalMeshActor_Loader.uc | 282 + .../Classes/TgSkeletalMeshActor_Lobby.uc | 286 + .../Classes/TgSkeletalMeshActor_LobbyBase.uc | 149 + .../Classes/TgSkeletalMeshActor_Pedestal.uc | 93 + .../Classes/TgSkeletalMeshActor_Posture.uc | 127 + .../TgGame/Classes/TgSkeletalMeshComponent.uc | 172 + .../Classes/TgSkeletalMeshComponent_Weapon.uc | 65 + ...SkeletalMeshComponent_WeaponFirstPerson.uc | 15 + ...talMeshComponent_WeaponFirstPersonLance.uc | 9 + .../TgGame/Classes/TgSkinnableInterface.uc | 3 + exported/TgGame/Classes/TgSoundGroup.uc | 61 + .../TgGame/Classes/TgSoundInsulationVolume.uc | 19 + .../TgGame/Classes/TgSoundNodeAttenuation.uc | 5 + exported/TgGame/Classes/TgSpawnGate.uc | 103 + .../Classes/TgSpawnTeleporterEntrance.uc | 283 + .../TgGame/Classes/TgSpawnTeleporterExit.uc | 57 + exported/TgGame/Classes/TgSpecialFx.uc | 645 + .../TgGame/Classes/TgSpecialFxLightManager.uc | 66 + exported/TgGame/Classes/TgSpectatorCamera.uc | 44 + .../TgGame/Classes/TgSpectatorController.uc | 1308 ++ .../TgGame/Classes/TgSpectatorDirector.uc | 204 + exported/TgGame/Classes/TgSpectatorInput.uc | 120 + exported/TgGame/Classes/TgSpectatorTempCam.uc | 43 + exported/TgGame/Classes/TgSplineActor.uc | 27 + .../TgGame/Classes/TgSplineActor_Payload.uc | 37 + .../Classes/TgSplineLoftActorSpawnable.uc | 17 + exported/TgGame/Classes/TgStartPoint.uc | 87 + exported/TgGame/Classes/TgStaticMeshActor.uc | 26 + .../TgGame/Classes/TgStaticMeshActorGrass.uc | 84 + .../Classes/TgStaticMeshActorTargeting.uc | 34 + .../Classes/TgStaticMeshActor_CapturePoint.uc | 86 + .../Classes/TgStaticMeshActor_PantheonMIC.uc | 46 + .../Classes/TgStaticMeshActor_TeamColor.uc | 52 + .../TgGame/Classes/TgStaticMeshComponent.uc | 63 + .../TgGame/Classes/TgSubtitledMessages.uc | 96 + .../Classes/TgSurvivalFogVolumeDensityInfo.uc | 168 + .../Classes/TgTargetAimTrackingCurves.uc | 40 + exported/TgGame/Classes/TgTeamBlocker.uc | 21 + exported/TgGame/Classes/TgTeamPlayerStart.uc | 139 + .../TgGame/Classes/TgTeleportPlayerVolume.uc | 93 + exported/TgGame/Classes/TgTeleporter.uc | 117 + .../TgGame/Classes/TgTimeDilationVolume.uc | 158 + exported/TgGame/Classes/TgTimerManager.uc | 101 + .../TgTrigger_AIControlledCharacters.uc | 25 + exported/TgGame/Classes/TgTrigger_Instance.uc | 42 + .../TgTrigger_PlayerControlledCharacters.uc | 25 + exported/TgGame/Classes/TgTrigger_Use.uc | 106 + .../TgGame/Classes/TgTutorialAnnouncer.uc | 40 + exported/TgGame/Classes/TgTutorialInfo.uc | 142 + exported/TgGame/Classes/TgTutorialVolume.uc | 65 + exported/TgGame/Classes/TgVisibilityVolume.uc | 62 + exported/TgGame/Classes/TgVolume.uc | 16 + exported/TgGame/Classes/TgVolumePathNode.uc | 28 + exported/TgGame/Classes/TgWaterVolume.uc | 17 + exported/TgGame/Classes/TgWeaponMeshActor.uc | 2048 ++ .../TgWeaponMeshActor_AndroxusInhand.uc | 97 + .../Classes/TgWeaponMeshActor_AstroInhand.uc | 102 + .../TgWeaponMeshActor_BarrierTankInhand.uc | 47 + .../TgWeaponMeshActor_BombKingInhand.uc | 15 + .../Classes/TgWeaponMeshActor_BuckInhand.uc | 61 + .../Classes/TgWeaponMeshActor_DemonInhand.uc | 69 + .../Classes/TgWeaponMeshActor_FlakInhand.uc | 55 + .../TgWeaponMeshActor_GauntletInhand.uc | 254 + .../TgWeaponMeshActor_GroverInhandAxe.uc | 71 + .../Classes/TgWeaponMeshActor_IceStaff.uc | 12 + .../TgGame/Classes/TgWeaponMeshActor_Lance.uc | 13 + .../Classes/TgWeaponMeshActor_LexInhand.uc | 257 + .../Classes/TgWeaponMeshActor_LianInhand.uc | 142 + .../TgWeaponMeshActor_LongbowInhand.uc | 147 + .../Classes/TgWeaponMeshActor_OracleInhand.uc | 252 + .../TgGame/Classes/TgWeaponMeshActor_Orb.uc | 103 + .../Classes/TgWeaponMeshActor_OwlInhand.uc | 61 + .../TgWeaponMeshActor_PotionLauncher.uc | 12 + .../Classes/TgWeaponMeshActor_RuckusInhand.uc | 102 + .../Classes/TgWeaponMeshActor_SkyeInHand.uc | 12 + .../Classes/TgWeaponMeshActor_Sniper.uc | 17 + .../Classes/TgWeaponMeshActor_TyraInhand.uc | 69 + .../Classes/TgWeaponMeshActor_ViktorInhand.uc | 107 + .../Classes/TgWeaponMeshActor_YingInhand.uc | 74 + .../TgWeaponMeshActor_YingInhandProj.uc | 28 + 3904 files changed, 317203 insertions(+) create mode 100644 exported/.DS_Store create mode 100755 exported/AkAudio/Classes/ActorFactoryAkAmbientSound.uc create mode 100755 exported/AkAudio/Classes/AkAmbientSound.uc create mode 100755 exported/AkAudio/Classes/AkAudio.UPKG create mode 100755 exported/AkAudio/Classes/AkComponent.uc create mode 100755 exported/AkAudio/Classes/InterpTrackAkEvent.uc create mode 100755 exported/AkAudio/Classes/InterpTrackAkRTPC.uc create mode 100755 exported/AkAudio/Classes/InterpTrackInstAkEvent.uc create mode 100755 exported/AkAudio/Classes/InterpTrackInstAkRTPC.uc create mode 100755 exported/AkAudio/Classes/SeqAct_AkClearBanks.uc create mode 100755 exported/AkAudio/Classes/SeqAct_AkLoadBank.uc create mode 100755 exported/AkAudio/Classes/SeqAct_AkPostEvent.uc create mode 100755 exported/AkAudio/Classes/SeqAct_AkPostTrigger.uc create mode 100755 exported/AkAudio/Classes/SeqAct_AkSetRTPCValue.uc create mode 100755 exported/AkAudio/Classes/SeqAct_AkSetState.uc create mode 100755 exported/AkAudio/Classes/SeqAct_AkSetSwitch.uc create mode 100755 exported/AkAudio/Classes/SeqAct_AkStartAmbientSound.uc create mode 100755 exported/AkAudio/Classes/SeqAct_AkStopAll.uc create mode 100755 exported/BattleClient/Classes/BattleClient.UPKG create mode 100755 exported/BattleClient/Classes/BattleHUD.uc create mode 100755 exported/BattleClient/Classes/BattleLaunch.uc create mode 100755 exported/BattleGame/Classes/BattleGame.UPKG create mode 100755 exported/BattleGame/Classes/BattleObject.uc create mode 100755 exported/BattleGame/Classes/BattlePlayerController.uc create mode 100755 exported/Core/Classes/Commandlet.uc create mode 100755 exported/Core/Classes/Component.uc create mode 100755 exported/Core/Classes/Core.UPKG create mode 100755 exported/Core/Classes/DistributionFloat.uc create mode 100755 exported/Core/Classes/DistributionVector.uc create mode 100755 exported/Core/Classes/Factory.uc create mode 100755 exported/Core/Classes/HelpCommandlet.uc create mode 100755 exported/Core/Classes/Interface.uc create mode 100755 exported/Core/Classes/Object.uc create mode 100755 exported/Core/Classes/Subsystem.uc create mode 100755 exported/Engine/Classes/AICommandBase.uc create mode 100755 exported/Engine/Classes/AIController.uc create mode 100755 exported/Engine/Classes/AISwitchablePylon.uc create mode 100755 exported/Engine/Classes/AccessControl.uc create mode 100755 exported/Engine/Classes/Actor.uc create mode 100755 exported/Engine/Classes/ActorComponent.uc create mode 100755 exported/Engine/Classes/ActorFactory.uc create mode 100755 exported/Engine/Classes/ActorFactoryAI.uc create mode 100755 exported/Engine/Classes/ActorFactoryActor.uc create mode 100755 exported/Engine/Classes/ActorFactoryAmbientSound.uc create mode 100755 exported/Engine/Classes/ActorFactoryAmbientSoundMovable.uc create mode 100755 exported/Engine/Classes/ActorFactoryAmbientSoundNonLoop.uc create mode 100755 exported/Engine/Classes/ActorFactoryAmbientSoundNonLoopingToggleable.uc create mode 100755 exported/Engine/Classes/ActorFactoryAmbientSoundSimple.uc create mode 100755 exported/Engine/Classes/ActorFactoryAmbientSoundSimpleToggleable.uc create mode 100755 exported/Engine/Classes/ActorFactoryApexClothing.uc create mode 100755 exported/Engine/Classes/ActorFactoryApexDestructible.uc create mode 100755 exported/Engine/Classes/ActorFactoryArchetype.uc create mode 100755 exported/Engine/Classes/ActorFactoryCoverLink.uc create mode 100755 exported/Engine/Classes/ActorFactoryDecal.uc create mode 100755 exported/Engine/Classes/ActorFactoryDecalMovable.uc create mode 100755 exported/Engine/Classes/ActorFactoryDominantDirectionalLight.uc create mode 100755 exported/Engine/Classes/ActorFactoryDominantDirectionalLightMovable.uc create mode 100755 exported/Engine/Classes/ActorFactoryDynamicSM.uc create mode 100755 exported/Engine/Classes/ActorFactoryEmitter.uc create mode 100755 exported/Engine/Classes/ActorFactoryFogVolumeConstantDensityInfo.uc create mode 100755 exported/Engine/Classes/ActorFactoryFogVolumeLinearHalfspaceDensityInfo.uc create mode 100755 exported/Engine/Classes/ActorFactoryFogVolumeSphericalDensityInfo.uc create mode 100755 exported/Engine/Classes/ActorFactoryFracturedStaticMesh.uc create mode 100755 exported/Engine/Classes/ActorFactoryInteractiveFoliage.uc create mode 100755 exported/Engine/Classes/ActorFactoryLensFlare.uc create mode 100755 exported/Engine/Classes/ActorFactoryLight.uc create mode 100755 exported/Engine/Classes/ActorFactoryMover.uc create mode 100755 exported/Engine/Classes/ActorFactoryPathNode.uc create mode 100755 exported/Engine/Classes/ActorFactoryPhysicsAsset.uc create mode 100755 exported/Engine/Classes/ActorFactoryPlayerStart.uc create mode 100755 exported/Engine/Classes/ActorFactoryPylon.uc create mode 100755 exported/Engine/Classes/ActorFactoryRigidBody.uc create mode 100755 exported/Engine/Classes/ActorFactorySkeletalMesh.uc create mode 100755 exported/Engine/Classes/ActorFactorySkeletalMeshCinematic.uc create mode 100755 exported/Engine/Classes/ActorFactorySkeletalMeshMAT.uc create mode 100755 exported/Engine/Classes/ActorFactoryStaticMesh.uc create mode 100755 exported/Engine/Classes/ActorFactoryTrigger.uc create mode 100755 exported/Engine/Classes/ActorFactoryVehicle.uc create mode 100755 exported/Engine/Classes/Admin.uc create mode 100755 exported/Engine/Classes/AdvancedReachSpec.uc create mode 100755 exported/Engine/Classes/AkBank.uc create mode 100755 exported/Engine/Classes/AkBaseSoundObject.uc create mode 100755 exported/Engine/Classes/AkEvent.uc create mode 100755 exported/Engine/Classes/AmbientOcclusionEffect.uc create mode 100755 exported/Engine/Classes/AmbientSound.uc create mode 100755 exported/Engine/Classes/AmbientSoundMovable.uc create mode 100755 exported/Engine/Classes/AmbientSoundNonLoop.uc create mode 100755 exported/Engine/Classes/AmbientSoundNonLoopingToggleable.uc create mode 100755 exported/Engine/Classes/AmbientSoundSimple.uc create mode 100755 exported/Engine/Classes/AmbientSoundSimpleSpline.uc create mode 100755 exported/Engine/Classes/AmbientSoundSimpleSplineNonLoop.uc create mode 100755 exported/Engine/Classes/AmbientSoundSimpleToggleable.uc create mode 100755 exported/Engine/Classes/AmbientSoundSpline.uc create mode 100755 exported/Engine/Classes/AmbientSoundSplineMultiCue.uc create mode 100755 exported/Engine/Classes/AnalyticEventsBase.uc create mode 100755 exported/Engine/Classes/AnimMetaData.uc create mode 100755 exported/Engine/Classes/AnimMetaData_SkelControl.uc create mode 100755 exported/Engine/Classes/AnimMetaData_SkelControlKeyFrame.uc create mode 100755 exported/Engine/Classes/AnimNode.uc create mode 100755 exported/Engine/Classes/AnimNodeAdditiveBlending.uc create mode 100755 exported/Engine/Classes/AnimNodeAimOffset.uc create mode 100755 exported/Engine/Classes/AnimNodeBlend.uc create mode 100755 exported/Engine/Classes/AnimNodeBlendBase.uc create mode 100755 exported/Engine/Classes/AnimNodeBlendByBase.uc create mode 100755 exported/Engine/Classes/AnimNodeBlendByPhysics.uc create mode 100755 exported/Engine/Classes/AnimNodeBlendByPosture.uc create mode 100755 exported/Engine/Classes/AnimNodeBlendByProperty.uc create mode 100755 exported/Engine/Classes/AnimNodeBlendBySpeed.uc create mode 100755 exported/Engine/Classes/AnimNodeBlendDirectional.uc create mode 100755 exported/Engine/Classes/AnimNodeBlendList.uc create mode 100755 exported/Engine/Classes/AnimNodeBlendMultiBone.uc create mode 100755 exported/Engine/Classes/AnimNodeBlendPerBone.uc create mode 100755 exported/Engine/Classes/AnimNodeCrossfader.uc create mode 100755 exported/Engine/Classes/AnimNodeFrame.uc create mode 100755 exported/Engine/Classes/AnimNodeMirror.uc create mode 100755 exported/Engine/Classes/AnimNodePlayCustomAnim.uc create mode 100755 exported/Engine/Classes/AnimNodeRandom.uc create mode 100755 exported/Engine/Classes/AnimNodeScalePlayRate.uc create mode 100755 exported/Engine/Classes/AnimNodeScaleRateBySpeed.uc create mode 100755 exported/Engine/Classes/AnimNodeSequence.uc create mode 100755 exported/Engine/Classes/AnimNodeSequenceBlendBase.uc create mode 100755 exported/Engine/Classes/AnimNodeSequenceBlendByAim.uc create mode 100755 exported/Engine/Classes/AnimNodeSlot.uc create mode 100755 exported/Engine/Classes/AnimNodeSynch.uc create mode 100755 exported/Engine/Classes/AnimNode_MultiBlendPerBone.uc create mode 100755 exported/Engine/Classes/AnimNotify.uc create mode 100755 exported/Engine/Classes/AnimNotify_AkEvent.uc create mode 100755 exported/Engine/Classes/AnimNotify_CameraEffect.uc create mode 100755 exported/Engine/Classes/AnimNotify_ClothingMaxDistanceScale.uc create mode 100755 exported/Engine/Classes/AnimNotify_Footstep.uc create mode 100755 exported/Engine/Classes/AnimNotify_ForceField.uc create mode 100755 exported/Engine/Classes/AnimNotify_Kismet.uc create mode 100755 exported/Engine/Classes/AnimNotify_PawnMaterialParam.uc create mode 100755 exported/Engine/Classes/AnimNotify_PlayFaceFXAnim.uc create mode 100755 exported/Engine/Classes/AnimNotify_PlayParticleEffect.uc create mode 100755 exported/Engine/Classes/AnimNotify_Rumble.uc create mode 100755 exported/Engine/Classes/AnimNotify_Script.uc create mode 100755 exported/Engine/Classes/AnimNotify_Scripted.uc create mode 100755 exported/Engine/Classes/AnimNotify_Sound.uc create mode 100755 exported/Engine/Classes/AnimNotify_Trails.uc create mode 100755 exported/Engine/Classes/AnimNotify_ViewShake.uc create mode 100755 exported/Engine/Classes/AnimObject.uc create mode 100755 exported/Engine/Classes/AnimSequence.uc create mode 100755 exported/Engine/Classes/AnimSet.uc create mode 100755 exported/Engine/Classes/AnimTree.uc create mode 100755 exported/Engine/Classes/AnimationCompressionAlgorithm.uc create mode 100755 exported/Engine/Classes/AnimationCompressionAlgorithm_Automatic.uc create mode 100755 exported/Engine/Classes/AnimationCompressionAlgorithm_BitwiseCompressOnly.uc create mode 100755 exported/Engine/Classes/AnimationCompressionAlgorithm_LeastDestructive.uc create mode 100755 exported/Engine/Classes/AnimationCompressionAlgorithm_PerTrackCompression.uc create mode 100755 exported/Engine/Classes/AnimationCompressionAlgorithm_RemoveEverySecondKey.uc create mode 100755 exported/Engine/Classes/AnimationCompressionAlgorithm_RemoveLinearKeys.uc create mode 100755 exported/Engine/Classes/AnimationCompressionAlgorithm_RemoveTrivialKeys.uc create mode 100755 exported/Engine/Classes/AnimationCompressionAlgorithm_RevertToRaw.uc create mode 100755 exported/Engine/Classes/ApexAsset.uc create mode 100755 exported/Engine/Classes/ApexClothingAsset.uc create mode 100755 exported/Engine/Classes/ApexComponentBase.uc create mode 100755 exported/Engine/Classes/ApexDestructibleActor.uc create mode 100755 exported/Engine/Classes/ApexDestructibleActorSpawnable.uc create mode 100755 exported/Engine/Classes/ApexDestructibleAsset.uc create mode 100755 exported/Engine/Classes/ApexDestructibleDamageParameters.uc create mode 100755 exported/Engine/Classes/ApexDynamicComponent.uc create mode 100755 exported/Engine/Classes/ApexGenericAsset.uc create mode 100755 exported/Engine/Classes/ApexStaticComponent.uc create mode 100755 exported/Engine/Classes/ApexStaticDestructibleComponent.uc create mode 100755 exported/Engine/Classes/AppNotificationsBase.uc create mode 100755 exported/Engine/Classes/ArrowComponent.uc create mode 100755 exported/Engine/Classes/AudioComponent.uc create mode 100755 exported/Engine/Classes/AudioDevice.uc create mode 100755 exported/Engine/Classes/AutoLadder.uc create mode 100755 exported/Engine/Classes/AutoNavMeshPathObstacleUnregister.uc create mode 100755 exported/Engine/Classes/AutoTestManager.uc create mode 100755 exported/Engine/Classes/BlockingVolume.uc create mode 100755 exported/Engine/Classes/BlurEffect.uc create mode 100755 exported/Engine/Classes/BookMark.uc create mode 100755 exported/Engine/Classes/BookMark2D.uc create mode 100755 exported/Engine/Classes/BroadcastHandler.uc create mode 100755 exported/Engine/Classes/Brush.uc create mode 100755 exported/Engine/Classes/BrushComponent.uc create mode 100755 exported/Engine/Classes/BrushShape.uc create mode 100755 exported/Engine/Classes/Camera.uc create mode 100755 exported/Engine/Classes/CameraActor.uc create mode 100755 exported/Engine/Classes/CameraAnim.uc create mode 100755 exported/Engine/Classes/CameraAnimInst.uc create mode 100755 exported/Engine/Classes/CameraConeComponent.uc create mode 100755 exported/Engine/Classes/CameraModifier.uc create mode 100755 exported/Engine/Classes/CameraModifier_CameraShake.uc create mode 100755 exported/Engine/Classes/CameraShake.uc create mode 100755 exported/Engine/Classes/Canvas.uc create mode 100755 exported/Engine/Classes/CeilingReachSpec.uc create mode 100755 exported/Engine/Classes/CheatManager.uc create mode 100755 exported/Engine/Classes/ClipPadEntry.uc create mode 100755 exported/Engine/Classes/CloudSaveSystem.uc create mode 100755 exported/Engine/Classes/CloudSaveSystemDataBlobStoreInterface.uc create mode 100755 exported/Engine/Classes/CloudSaveSystemKVSInterface.uc create mode 100755 exported/Engine/Classes/CloudStorageBase.uc create mode 100755 exported/Engine/Classes/CloudStorageBaseCloudSaveSystemKVS.uc create mode 100755 exported/Engine/Classes/CloudStorageUpgradeHelper.uc create mode 100755 exported/Engine/Classes/CodecMovie.uc create mode 100755 exported/Engine/Classes/CodecMovieFallback.uc create mode 100755 exported/Engine/Classes/ColorScaleVolume.uc create mode 100755 exported/Engine/Classes/Console.uc create mode 100755 exported/Engine/Classes/Controller.uc create mode 100755 exported/Engine/Classes/CoverGroup.uc create mode 100755 exported/Engine/Classes/CoverGroupRenderingComponent.uc create mode 100755 exported/Engine/Classes/CoverLink.uc create mode 100755 exported/Engine/Classes/CoverMeshComponent.uc create mode 100755 exported/Engine/Classes/CoverReplicator.uc create mode 100755 exported/Engine/Classes/CoverSlipReachSpec.uc create mode 100755 exported/Engine/Classes/CrowdAgentBase.uc create mode 100755 exported/Engine/Classes/CrowdPopulationManagerBase.uc create mode 100755 exported/Engine/Classes/CullDistanceVolume.uc create mode 100755 exported/Engine/Classes/CurveEdPresetCurve.uc create mode 100755 exported/Engine/Classes/CustomPropertyItemHandler.uc create mode 100755 exported/Engine/Classes/CylinderComponent.uc create mode 100755 exported/Engine/Classes/DOFAndBloomEffect.uc create mode 100755 exported/Engine/Classes/DOFBloomMotionBlurEffect.uc create mode 100755 exported/Engine/Classes/DOFEffect.uc create mode 100755 exported/Engine/Classes/DamageType.uc create mode 100755 exported/Engine/Classes/DataStoreClient.uc create mode 100755 exported/Engine/Classes/DecalActor.uc create mode 100755 exported/Engine/Classes/DecalActorBase.uc create mode 100755 exported/Engine/Classes/DecalActorMovable.uc create mode 100755 exported/Engine/Classes/DecalComponent.uc create mode 100755 exported/Engine/Classes/DecalManager.uc create mode 100755 exported/Engine/Classes/DecalMaterial.uc create mode 100755 exported/Engine/Classes/DefaultPhysicsVolume.uc create mode 100755 exported/Engine/Classes/DirectionalLight.uc create mode 100755 exported/Engine/Classes/DirectionalLightComponent.uc create mode 100755 exported/Engine/Classes/DirectionalLightToggleable.uc create mode 100755 exported/Engine/Classes/DistributionFloatConstant.uc create mode 100755 exported/Engine/Classes/DistributionFloatConstantCurve.uc create mode 100755 exported/Engine/Classes/DistributionFloatParameterBase.uc create mode 100755 exported/Engine/Classes/DistributionFloatParticleParameter.uc create mode 100755 exported/Engine/Classes/DistributionFloatSoundParameter.uc create mode 100755 exported/Engine/Classes/DistributionFloatUniform.uc create mode 100755 exported/Engine/Classes/DistributionFloatUniformCurve.uc create mode 100755 exported/Engine/Classes/DistributionFloatUniformRange.uc create mode 100755 exported/Engine/Classes/DistributionVectorConstant.uc create mode 100755 exported/Engine/Classes/DistributionVectorConstantCurve.uc create mode 100755 exported/Engine/Classes/DistributionVectorParameterBase.uc create mode 100755 exported/Engine/Classes/DistributionVectorParticleParameter.uc create mode 100755 exported/Engine/Classes/DistributionVectorUniform.uc create mode 100755 exported/Engine/Classes/DistributionVectorUniformCurve.uc create mode 100755 exported/Engine/Classes/DistributionVectorUniformRange.uc create mode 100755 exported/Engine/Classes/DmgType_Crushed.uc create mode 100755 exported/Engine/Classes/DmgType_Fell.uc create mode 100755 exported/Engine/Classes/DmgType_Suicided.uc create mode 100755 exported/Engine/Classes/DmgType_Telefragged.uc create mode 100755 exported/Engine/Classes/DominantDirectionalLight.uc create mode 100755 exported/Engine/Classes/DominantDirectionalLightComponent.uc create mode 100755 exported/Engine/Classes/DominantDirectionalLightMovable.uc create mode 100755 exported/Engine/Classes/DominantPointLight.uc create mode 100755 exported/Engine/Classes/DominantPointLightComponent.uc create mode 100755 exported/Engine/Classes/DominantSpotLight.uc create mode 100755 exported/Engine/Classes/DominantSpotLightComponent.uc create mode 100755 exported/Engine/Classes/DoorMarker.uc create mode 100755 exported/Engine/Classes/DownloadableContentEnumerator.uc create mode 100755 exported/Engine/Classes/DownloadableContentManager.uc create mode 100755 exported/Engine/Classes/DrawBoxComponent.uc create mode 100755 exported/Engine/Classes/DrawCapsuleComponent.uc create mode 100755 exported/Engine/Classes/DrawConeComponent.uc create mode 100755 exported/Engine/Classes/DrawCylinderComponent.uc create mode 100755 exported/Engine/Classes/DrawFrustumComponent.uc create mode 100755 exported/Engine/Classes/DrawLightConeComponent.uc create mode 100755 exported/Engine/Classes/DrawLightRadiusComponent.uc create mode 100755 exported/Engine/Classes/DrawPylonRadiusComponent.uc create mode 100755 exported/Engine/Classes/DrawQuadComponent.uc create mode 100755 exported/Engine/Classes/DrawSoundRadiusComponent.uc create mode 100755 exported/Engine/Classes/DrawSphereComponent.uc create mode 100755 exported/Engine/Classes/DroppedPickup.uc create mode 100755 exported/Engine/Classes/DynamicAnchor.uc create mode 100755 exported/Engine/Classes/DynamicBlockingVolume.uc create mode 100755 exported/Engine/Classes/DynamicCameraActor.uc create mode 100755 exported/Engine/Classes/DynamicLightEnvironmentComponent.uc create mode 100755 exported/Engine/Classes/DynamicPhysicsVolume.uc create mode 100755 exported/Engine/Classes/DynamicPylon.uc create mode 100755 exported/Engine/Classes/DynamicSMActor.uc create mode 100755 exported/Engine/Classes/DynamicSMActor_Spawnable.uc create mode 100755 exported/Engine/Classes/DynamicTriggerVolume.uc create mode 100755 exported/Engine/Classes/EdCoordSystem.uc create mode 100755 exported/Engine/Classes/EditorLinkSelectionInterface.uc create mode 100755 exported/Engine/Classes/Emitter.uc create mode 100755 exported/Engine/Classes/EmitterCameraLensEffectBase.uc create mode 100755 exported/Engine/Classes/EmitterPool.uc create mode 100755 exported/Engine/Classes/EmitterSpawnable.uc create mode 100755 exported/Engine/Classes/Engine.UPKG create mode 100755 exported/Engine/Classes/Engine.uc create mode 100755 exported/Engine/Classes/EngineBaseTypes.uc create mode 100755 exported/Engine/Classes/EngineTypes.uc create mode 100755 exported/Engine/Classes/EnvironmentVolume.uc create mode 100755 exported/Engine/Classes/ExponentialHeightFog.uc create mode 100755 exported/Engine/Classes/ExponentialHeightFogComponent.uc create mode 100755 exported/Engine/Classes/FaceFXAnimSet.uc create mode 100755 exported/Engine/Classes/FaceFXAsset.uc create mode 100755 exported/Engine/Classes/FacebookIntegration.uc create mode 100755 exported/Engine/Classes/FailedConnect.uc create mode 100755 exported/Engine/Classes/FileLog.uc create mode 100755 exported/Engine/Classes/FileWriter.uc create mode 100755 exported/Engine/Classes/FloorToCeilingReachSpec.uc create mode 100755 exported/Engine/Classes/FluidInfluenceActor.uc create mode 100755 exported/Engine/Classes/FluidInfluenceComponent.uc create mode 100755 exported/Engine/Classes/FluidSurfaceActor.uc create mode 100755 exported/Engine/Classes/FluidSurfaceActorMovable.uc create mode 100755 exported/Engine/Classes/FluidSurfaceComponent.uc create mode 100755 exported/Engine/Classes/FogVolumeConeDensityComponent.uc create mode 100755 exported/Engine/Classes/FogVolumeConeDensityInfo.uc create mode 100755 exported/Engine/Classes/FogVolumeConstantDensityComponent.uc create mode 100755 exported/Engine/Classes/FogVolumeConstantDensityInfo.uc create mode 100755 exported/Engine/Classes/FogVolumeDensityComponent.uc create mode 100755 exported/Engine/Classes/FogVolumeDensityInfo.uc create mode 100755 exported/Engine/Classes/FogVolumeLinearHalfspaceDensityComponent.uc create mode 100755 exported/Engine/Classes/FogVolumeLinearHalfspaceDensityInfo.uc create mode 100755 exported/Engine/Classes/FogVolumeSphericalDensityComponent.uc create mode 100755 exported/Engine/Classes/FogVolumeSphericalDensityInfo.uc create mode 100755 exported/Engine/Classes/Font.uc create mode 100755 exported/Engine/Classes/FontImportOptions.uc create mode 100755 exported/Engine/Classes/ForceFeedbackManager.uc create mode 100755 exported/Engine/Classes/ForceFeedbackWaveform.uc create mode 100755 exported/Engine/Classes/ForceFieldShape.uc create mode 100755 exported/Engine/Classes/ForceFieldShapeBox.uc create mode 100755 exported/Engine/Classes/ForceFieldShapeCapsule.uc create mode 100755 exported/Engine/Classes/ForceFieldShapeSphere.uc create mode 100755 exported/Engine/Classes/ForcedLoopSoundNode.uc create mode 100755 exported/Engine/Classes/ForcedReachSpec.uc create mode 100755 exported/Engine/Classes/FractureManager.uc create mode 100755 exported/Engine/Classes/FractureMaterial.uc create mode 100755 exported/Engine/Classes/FracturedBaseComponent.uc create mode 100755 exported/Engine/Classes/FracturedSMActorSpawnable.uc create mode 100755 exported/Engine/Classes/FracturedSkinnedMeshComponent.uc create mode 100755 exported/Engine/Classes/FracturedStaticMeshActor.uc create mode 100755 exported/Engine/Classes/FracturedStaticMeshActor_Spawnable.uc create mode 100755 exported/Engine/Classes/FracturedStaticMeshComponent.uc create mode 100755 exported/Engine/Classes/FracturedStaticMeshPart.uc create mode 100755 exported/Engine/Classes/GameEngine.uc create mode 100755 exported/Engine/Classes/GameInfo.uc create mode 100755 exported/Engine/Classes/GameMessage.uc create mode 100755 exported/Engine/Classes/GamePadLightbarSubsystem.uc create mode 100755 exported/Engine/Classes/GameReplicationInfo.uc create mode 100755 exported/Engine/Classes/GameUISceneClient.uc create mode 100755 exported/Engine/Classes/GameViewportClient.uc create mode 100755 exported/Engine/Classes/GameplayEvents.uc create mode 100755 exported/Engine/Classes/GameplayEventsHandler.uc create mode 100755 exported/Engine/Classes/GameplayEventsReader.uc create mode 100755 exported/Engine/Classes/GameplayEventsUploadAnalytics.uc create mode 100755 exported/Engine/Classes/GameplayEventsWriter.uc create mode 100755 exported/Engine/Classes/GameplayEventsWriterBase.uc create mode 100755 exported/Engine/Classes/GeneratedMeshAreaLight.uc create mode 100755 exported/Engine/Classes/GenericParamListStatEntry.uc create mode 100755 exported/Engine/Classes/Goal_AtActor.uc create mode 100755 exported/Engine/Classes/Goal_Null.uc create mode 100755 exported/Engine/Classes/GravityVolume.uc create mode 100755 exported/Engine/Classes/HUD.uc create mode 100755 exported/Engine/Classes/HavokCustomTraversalAnnotation.uc create mode 100755 exported/Engine/Classes/HavokCustomTraversalRenderingComponent.uc create mode 100755 exported/Engine/Classes/HavokMaterialPainter.uc create mode 100755 exported/Engine/Classes/HavokNavMeshActor.uc create mode 100755 exported/Engine/Classes/HavokNavMeshGrid.uc create mode 100755 exported/Engine/Classes/HavokNavigationHandle.uc create mode 100755 exported/Engine/Classes/HavokNavigationRenderingComponent.uc create mode 100755 exported/Engine/Classes/HavokTraversalAnnotationPortal.uc create mode 100755 exported/Engine/Classes/HeadTrackingComponent.uc create mode 100755 exported/Engine/Classes/HeightFog.uc create mode 100755 exported/Engine/Classes/HeightFogComponent.uc create mode 100755 exported/Engine/Classes/HttpBaseInterface.uc create mode 100755 exported/Engine/Classes/HttpFactory.uc create mode 100755 exported/Engine/Classes/HttpRequestInterface.uc create mode 100755 exported/Engine/Classes/HttpResponseInterface.uc create mode 100755 exported/Engine/Classes/ImageBasedReflectionComponent.uc create mode 100755 exported/Engine/Classes/ImageReflection.uc create mode 100755 exported/Engine/Classes/ImageReflectionComponent.uc create mode 100755 exported/Engine/Classes/ImageReflectionSceneCapture.uc create mode 100755 exported/Engine/Classes/ImageReflectionShadowPlane.uc create mode 100755 exported/Engine/Classes/ImageReflectionShadowPlaneComponent.uc create mode 100755 exported/Engine/Classes/InAppMessageBase.uc create mode 100755 exported/Engine/Classes/InGameAdManager.uc create mode 100755 exported/Engine/Classes/Info.uc create mode 100755 exported/Engine/Classes/IniLocPatcher.uc create mode 100755 exported/Engine/Classes/Input.uc create mode 100755 exported/Engine/Classes/InstancedFoliageActor.uc create mode 100755 exported/Engine/Classes/InstancedFoliageSettings.uc create mode 100755 exported/Engine/Classes/InstancedStaticMeshComponent.uc create mode 100755 exported/Engine/Classes/Interaction.uc create mode 100755 exported/Engine/Classes/InteractiveFoliageActor.uc create mode 100755 exported/Engine/Classes/InteractiveFoliageComponent.uc create mode 100755 exported/Engine/Classes/Interface_ActorPathConstraints.uc create mode 100755 exported/Engine/Classes/Interface_NavMeshPathObject.uc create mode 100755 exported/Engine/Classes/Interface_NavMeshPathObstacle.uc create mode 100755 exported/Engine/Classes/Interface_NavMeshPathSwitch.uc create mode 100755 exported/Engine/Classes/Interface_NavigationHandle.uc create mode 100755 exported/Engine/Classes/Interface_PylonGeometryProvider.uc create mode 100755 exported/Engine/Classes/Interface_RVO.uc create mode 100755 exported/Engine/Classes/Interface_Speaker.uc create mode 100755 exported/Engine/Classes/InterpActor.uc create mode 100755 exported/Engine/Classes/InterpActor_ForCinematic.uc create mode 100755 exported/Engine/Classes/InterpCurveEdSetup.uc create mode 100755 exported/Engine/Classes/InterpData.uc create mode 100755 exported/Engine/Classes/InterpFilter.uc create mode 100755 exported/Engine/Classes/InterpFilter_Classes.uc create mode 100755 exported/Engine/Classes/InterpFilter_Custom.uc create mode 100755 exported/Engine/Classes/InterpGroup.uc create mode 100755 exported/Engine/Classes/InterpGroupAI.uc create mode 100755 exported/Engine/Classes/InterpGroupCamera.uc create mode 100755 exported/Engine/Classes/InterpGroupDirector.uc create mode 100755 exported/Engine/Classes/InterpGroupInst.uc create mode 100755 exported/Engine/Classes/InterpGroupInstAI.uc create mode 100755 exported/Engine/Classes/InterpGroupInstCamera.uc create mode 100755 exported/Engine/Classes/InterpGroupInstDirector.uc create mode 100755 exported/Engine/Classes/InterpTrack.uc create mode 100755 exported/Engine/Classes/InterpTrackAnimControl.uc create mode 100755 exported/Engine/Classes/InterpTrackAudioMaster.uc create mode 100755 exported/Engine/Classes/InterpTrackBoolProp.uc create mode 100755 exported/Engine/Classes/InterpTrackColorProp.uc create mode 100755 exported/Engine/Classes/InterpTrackColorScale.uc create mode 100755 exported/Engine/Classes/InterpTrackDirector.uc create mode 100755 exported/Engine/Classes/InterpTrackEvent.uc create mode 100755 exported/Engine/Classes/InterpTrackFaceFX.uc create mode 100755 exported/Engine/Classes/InterpTrackFade.uc create mode 100755 exported/Engine/Classes/InterpTrackFloatBase.uc create mode 100755 exported/Engine/Classes/InterpTrackFloatMaterialParam.uc create mode 100755 exported/Engine/Classes/InterpTrackFloatParticleParam.uc create mode 100755 exported/Engine/Classes/InterpTrackFloatProp.uc create mode 100755 exported/Engine/Classes/InterpTrackHeadTracking.uc create mode 100755 exported/Engine/Classes/InterpTrackInst.uc create mode 100755 exported/Engine/Classes/InterpTrackInstAnimControl.uc create mode 100755 exported/Engine/Classes/InterpTrackInstAudioMaster.uc create mode 100755 exported/Engine/Classes/InterpTrackInstBoolProp.uc create mode 100755 exported/Engine/Classes/InterpTrackInstColorProp.uc create mode 100755 exported/Engine/Classes/InterpTrackInstColorScale.uc create mode 100755 exported/Engine/Classes/InterpTrackInstDirector.uc create mode 100755 exported/Engine/Classes/InterpTrackInstEvent.uc create mode 100755 exported/Engine/Classes/InterpTrackInstFaceFX.uc create mode 100755 exported/Engine/Classes/InterpTrackInstFade.uc create mode 100755 exported/Engine/Classes/InterpTrackInstFloatMaterialParam.uc create mode 100755 exported/Engine/Classes/InterpTrackInstFloatParticleParam.uc create mode 100755 exported/Engine/Classes/InterpTrackInstFloatProp.uc create mode 100755 exported/Engine/Classes/InterpTrackInstHeadTracking.uc create mode 100755 exported/Engine/Classes/InterpTrackInstLinearColorProp.uc create mode 100755 exported/Engine/Classes/InterpTrackInstMorphWeight.uc create mode 100755 exported/Engine/Classes/InterpTrackInstMove.uc create mode 100755 exported/Engine/Classes/InterpTrackInstNotify.uc create mode 100755 exported/Engine/Classes/InterpTrackInstParticleReplay.uc create mode 100755 exported/Engine/Classes/InterpTrackInstProperty.uc create mode 100755 exported/Engine/Classes/InterpTrackInstSkelControlScale.uc create mode 100755 exported/Engine/Classes/InterpTrackInstSkelControlStrength.uc create mode 100755 exported/Engine/Classes/InterpTrackInstSlomo.uc create mode 100755 exported/Engine/Classes/InterpTrackInstSound.uc create mode 100755 exported/Engine/Classes/InterpTrackInstToggle.uc create mode 100755 exported/Engine/Classes/InterpTrackInstVectorMaterialParam.uc create mode 100755 exported/Engine/Classes/InterpTrackInstVectorProp.uc create mode 100755 exported/Engine/Classes/InterpTrackInstVisibility.uc create mode 100755 exported/Engine/Classes/InterpTrackLinearColorBase.uc create mode 100755 exported/Engine/Classes/InterpTrackLinearColorProp.uc create mode 100755 exported/Engine/Classes/InterpTrackMorphWeight.uc create mode 100755 exported/Engine/Classes/InterpTrackMove.uc create mode 100755 exported/Engine/Classes/InterpTrackMoveAxis.uc create mode 100755 exported/Engine/Classes/InterpTrackNotify.uc create mode 100755 exported/Engine/Classes/InterpTrackParticleReplay.uc create mode 100755 exported/Engine/Classes/InterpTrackSkelControlScale.uc create mode 100755 exported/Engine/Classes/InterpTrackSkelControlStrength.uc create mode 100755 exported/Engine/Classes/InterpTrackSlomo.uc create mode 100755 exported/Engine/Classes/InterpTrackSound.uc create mode 100755 exported/Engine/Classes/InterpTrackToggle.uc create mode 100755 exported/Engine/Classes/InterpTrackVectorBase.uc create mode 100755 exported/Engine/Classes/InterpTrackVectorMaterialParam.uc create mode 100755 exported/Engine/Classes/InterpTrackVectorProp.uc create mode 100755 exported/Engine/Classes/InterpTrackVisibility.uc create mode 100755 exported/Engine/Classes/Inventory.uc create mode 100755 exported/Engine/Classes/InventoryManager.uc create mode 100755 exported/Engine/Classes/JsonObject.uc create mode 100755 exported/Engine/Classes/KActor.uc create mode 100755 exported/Engine/Classes/KActorFromStatic.uc create mode 100755 exported/Engine/Classes/KActorSpawnable.uc create mode 100755 exported/Engine/Classes/KAsset.uc create mode 100755 exported/Engine/Classes/KAssetSpawnable.uc create mode 100755 exported/Engine/Classes/KMeshProps.uc create mode 100755 exported/Engine/Classes/Keypoint.uc create mode 100755 exported/Engine/Classes/KillZDamageType.uc create mode 100755 exported/Engine/Classes/KismetBookMark.uc create mode 100755 exported/Engine/Classes/Ladder.uc create mode 100755 exported/Engine/Classes/LadderReachSpec.uc create mode 100755 exported/Engine/Classes/LadderVolume.uc create mode 100755 exported/Engine/Classes/Landscape.uc create mode 100755 exported/Engine/Classes/LandscapeComponent.uc create mode 100755 exported/Engine/Classes/LandscapeGizmoActiveActor.uc create mode 100755 exported/Engine/Classes/LandscapeGizmoActor.uc create mode 100755 exported/Engine/Classes/LandscapeGizmoRenderComponent.uc create mode 100755 exported/Engine/Classes/LandscapeHeightfieldCollisionComponent.uc create mode 100755 exported/Engine/Classes/LandscapeInfo.uc create mode 100755 exported/Engine/Classes/LandscapeLayerInfoObject.uc create mode 100755 exported/Engine/Classes/LandscapeMaterialInstanceConstant.uc create mode 100755 exported/Engine/Classes/LandscapeProxy.uc create mode 100755 exported/Engine/Classes/LensFlare.uc create mode 100755 exported/Engine/Classes/LensFlareComponent.uc create mode 100755 exported/Engine/Classes/LensFlareSource.uc create mode 100755 exported/Engine/Classes/LevelGridVolume.uc create mode 100755 exported/Engine/Classes/LevelGridVolumeRenderingComponent.uc create mode 100755 exported/Engine/Classes/LevelStreaming.uc create mode 100755 exported/Engine/Classes/LevelStreamingAlwaysLoaded.uc create mode 100755 exported/Engine/Classes/LevelStreamingDistance.uc create mode 100755 exported/Engine/Classes/LevelStreamingKismet.uc create mode 100755 exported/Engine/Classes/LevelStreamingPersistent.uc create mode 100755 exported/Engine/Classes/LevelStreamingVolume.uc create mode 100755 exported/Engine/Classes/LiftCenter.uc create mode 100755 exported/Engine/Classes/LiftExit.uc create mode 100755 exported/Engine/Classes/Light.uc create mode 100755 exported/Engine/Classes/LightComponent.uc create mode 100755 exported/Engine/Classes/LightEnvironmentComponent.uc create mode 100755 exported/Engine/Classes/LightFunction.uc create mode 100755 exported/Engine/Classes/LightmappedSurfaceCollection.uc create mode 100755 exported/Engine/Classes/LightmassCharacterIndirectDetailVolume.uc create mode 100755 exported/Engine/Classes/LightmassImportanceVolume.uc create mode 100755 exported/Engine/Classes/LightmassLevelSettings.uc create mode 100755 exported/Engine/Classes/LightmassPrimitiveSettingsObject.uc create mode 100755 exported/Engine/Classes/LineBatchComponent.uc create mode 100755 exported/Engine/Classes/LocalMessage.uc create mode 100755 exported/Engine/Classes/LocalPlayer.uc create mode 100755 exported/Engine/Classes/MantleReachSpec.uc create mode 100755 exported/Engine/Classes/MapInfo.uc create mode 100755 exported/Engine/Classes/MassiveLODOverrideVolume.uc create mode 100755 exported/Engine/Classes/Material.uc create mode 100755 exported/Engine/Classes/MaterialEffect.uc create mode 100755 exported/Engine/Classes/MaterialExpression.uc create mode 100755 exported/Engine/Classes/MaterialExpressionAbs.uc create mode 100755 exported/Engine/Classes/MaterialExpressionActorWorldPosition.uc create mode 100755 exported/Engine/Classes/MaterialExpressionAdd.uc create mode 100755 exported/Engine/Classes/MaterialExpressionAntialiasedTextureMask.uc create mode 100755 exported/Engine/Classes/MaterialExpressionAppendVector.uc create mode 100755 exported/Engine/Classes/MaterialExpressionBumpOffset.uc create mode 100755 exported/Engine/Classes/MaterialExpressionCameraVector.uc create mode 100755 exported/Engine/Classes/MaterialExpressionCameraWorldPosition.uc create mode 100755 exported/Engine/Classes/MaterialExpressionCeil.uc create mode 100755 exported/Engine/Classes/MaterialExpressionClamp.uc create mode 100755 exported/Engine/Classes/MaterialExpressionComment.uc create mode 100755 exported/Engine/Classes/MaterialExpressionComponentMask.uc create mode 100755 exported/Engine/Classes/MaterialExpressionConstant.uc create mode 100755 exported/Engine/Classes/MaterialExpressionConstant2Vector.uc create mode 100755 exported/Engine/Classes/MaterialExpressionConstant3Vector.uc create mode 100755 exported/Engine/Classes/MaterialExpressionConstant4Vector.uc create mode 100755 exported/Engine/Classes/MaterialExpressionConstantBiasScale.uc create mode 100755 exported/Engine/Classes/MaterialExpressionConstantClamp.uc create mode 100755 exported/Engine/Classes/MaterialExpressionCosine.uc create mode 100755 exported/Engine/Classes/MaterialExpressionCrossProduct.uc create mode 100755 exported/Engine/Classes/MaterialExpressionCustom.uc create mode 100755 exported/Engine/Classes/MaterialExpressionCustomTexture.uc create mode 100755 exported/Engine/Classes/MaterialExpressionDepthBiasBlend.uc create mode 100755 exported/Engine/Classes/MaterialExpressionDepthBiasedAlpha.uc create mode 100755 exported/Engine/Classes/MaterialExpressionDepthBiasedBlend.uc create mode 100755 exported/Engine/Classes/MaterialExpressionDepthOfFieldFunction.uc create mode 100755 exported/Engine/Classes/MaterialExpressionDeriveNormalZ.uc create mode 100755 exported/Engine/Classes/MaterialExpressionDesaturation.uc create mode 100755 exported/Engine/Classes/MaterialExpressionDestColor.uc create mode 100755 exported/Engine/Classes/MaterialExpressionDestDepth.uc create mode 100755 exported/Engine/Classes/MaterialExpressionDistance.uc create mode 100755 exported/Engine/Classes/MaterialExpressionDivide.uc create mode 100755 exported/Engine/Classes/MaterialExpressionDotProduct.uc create mode 100755 exported/Engine/Classes/MaterialExpressionDynamicParameter.uc create mode 100755 exported/Engine/Classes/MaterialExpressionFlipBookSample.uc create mode 100755 exported/Engine/Classes/MaterialExpressionFloor.uc create mode 100755 exported/Engine/Classes/MaterialExpressionFluidNormal.uc create mode 100755 exported/Engine/Classes/MaterialExpressionFmod.uc create mode 100755 exported/Engine/Classes/MaterialExpressionFoliageImpulseDirection.uc create mode 100755 exported/Engine/Classes/MaterialExpressionFoliageNormalizedRotationAxisAndAngle.uc create mode 100755 exported/Engine/Classes/MaterialExpressionFontSample.uc create mode 100755 exported/Engine/Classes/MaterialExpressionFontSampleParameter.uc create mode 100755 exported/Engine/Classes/MaterialExpressionFrac.uc create mode 100755 exported/Engine/Classes/MaterialExpressionFresnel.uc create mode 100755 exported/Engine/Classes/MaterialExpressionFunctionInput.uc create mode 100755 exported/Engine/Classes/MaterialExpressionFunctionOutput.uc create mode 100755 exported/Engine/Classes/MaterialExpressionIf.uc create mode 100755 exported/Engine/Classes/MaterialExpressionLandscapeLayerBlend.uc create mode 100755 exported/Engine/Classes/MaterialExpressionLensFlareIntensity.uc create mode 100755 exported/Engine/Classes/MaterialExpressionLensFlareOcclusion.uc create mode 100755 exported/Engine/Classes/MaterialExpressionLensFlareRadialDistance.uc create mode 100755 exported/Engine/Classes/MaterialExpressionLensFlareRayDistance.uc create mode 100755 exported/Engine/Classes/MaterialExpressionLensFlareSourceDistance.uc create mode 100755 exported/Engine/Classes/MaterialExpressionLightVector.uc create mode 100755 exported/Engine/Classes/MaterialExpressionLightmapUVs.uc create mode 100755 exported/Engine/Classes/MaterialExpressionLightmassReplace.uc create mode 100755 exported/Engine/Classes/MaterialExpressionLinearInterpolate.uc create mode 100755 exported/Engine/Classes/MaterialExpressionMaterialFunctionCall.uc create mode 100755 exported/Engine/Classes/MaterialExpressionMeshEmitterDynamicParameter.uc create mode 100755 exported/Engine/Classes/MaterialExpressionMeshEmitterVertexColor.uc create mode 100755 exported/Engine/Classes/MaterialExpressionMeshSubUV.uc create mode 100755 exported/Engine/Classes/MaterialExpressionMeshSubUVBlend.uc create mode 100755 exported/Engine/Classes/MaterialExpressionMultiply.uc create mode 100755 exported/Engine/Classes/MaterialExpressionNormalize.uc create mode 100755 exported/Engine/Classes/MaterialExpressionObjectOrientation.uc create mode 100755 exported/Engine/Classes/MaterialExpressionObjectRadius.uc create mode 100755 exported/Engine/Classes/MaterialExpressionObjectWorldPosition.uc create mode 100755 exported/Engine/Classes/MaterialExpressionOcclusionPercentage.uc create mode 100755 exported/Engine/Classes/MaterialExpressionOneMinus.uc create mode 100755 exported/Engine/Classes/MaterialExpressionPanner.uc create mode 100755 exported/Engine/Classes/MaterialExpressionParameter.uc create mode 100755 exported/Engine/Classes/MaterialExpressionParticleMacroUV.uc create mode 100755 exported/Engine/Classes/MaterialExpressionParticleSubUV.uc create mode 100755 exported/Engine/Classes/MaterialExpressionPerInstanceRandom.uc create mode 100755 exported/Engine/Classes/MaterialExpressionPixelDepth.uc create mode 100755 exported/Engine/Classes/MaterialExpressionPower.uc create mode 100755 exported/Engine/Classes/MaterialExpressionQualitySwitch.uc create mode 100755 exported/Engine/Classes/MaterialExpressionReflectionVector.uc create mode 100755 exported/Engine/Classes/MaterialExpressionRotateAboutAxis.uc create mode 100755 exported/Engine/Classes/MaterialExpressionRotator.uc create mode 100755 exported/Engine/Classes/MaterialExpressionScalarParameter.uc create mode 100755 exported/Engine/Classes/MaterialExpressionSceneDepth.uc create mode 100755 exported/Engine/Classes/MaterialExpressionSceneTexture.uc create mode 100755 exported/Engine/Classes/MaterialExpressionScreenPosition.uc create mode 100755 exported/Engine/Classes/MaterialExpressionScreenSize.uc create mode 100755 exported/Engine/Classes/MaterialExpressionSine.uc create mode 100755 exported/Engine/Classes/MaterialExpressionSphereMask.uc create mode 100755 exported/Engine/Classes/MaterialExpressionSquareRoot.uc create mode 100755 exported/Engine/Classes/MaterialExpressionStaticBool.uc create mode 100755 exported/Engine/Classes/MaterialExpressionStaticBoolParameter.uc create mode 100755 exported/Engine/Classes/MaterialExpressionStaticComponentMaskParameter.uc create mode 100755 exported/Engine/Classes/MaterialExpressionStaticSwitch.uc create mode 100755 exported/Engine/Classes/MaterialExpressionStaticSwitchParameter.uc create mode 100755 exported/Engine/Classes/MaterialExpressionSubtract.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTerrainLayerCoords.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTerrainLayerSwitch.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTerrainLayerWeight.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTexelSize.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTextureCoordinate.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTextureObject.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTextureObjectParameter.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTextureSample.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTextureSampleParameter.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTextureSampleParameter2D.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTextureSampleParameterCube.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTextureSampleParameterFlipbook.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTextureSampleParameterMeshSubUV.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTextureSampleParameterMeshSubUVBlend.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTextureSampleParameterMovie.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTextureSampleParameterNormal.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTextureSampleParameterSubUV.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTime.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTransform.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTransformPosition.uc create mode 100755 exported/Engine/Classes/MaterialExpressionTwoSidedSign.uc create mode 100755 exported/Engine/Classes/MaterialExpressionVectorParameter.uc create mode 100755 exported/Engine/Classes/MaterialExpressionVertexColor.uc create mode 100755 exported/Engine/Classes/MaterialExpressionWindDirectionAndSpeed.uc create mode 100755 exported/Engine/Classes/MaterialExpressionWorldNormal.uc create mode 100755 exported/Engine/Classes/MaterialExpressionWorldPosition.uc create mode 100755 exported/Engine/Classes/MaterialFunction.uc create mode 100755 exported/Engine/Classes/MaterialInstance.uc create mode 100755 exported/Engine/Classes/MaterialInstanceActor.uc create mode 100755 exported/Engine/Classes/MaterialInstanceConstant.uc create mode 100755 exported/Engine/Classes/MaterialInstanceTimeVarying.uc create mode 100755 exported/Engine/Classes/MaterialInstanceTimeVaryingActor.uc create mode 100755 exported/Engine/Classes/MaterialInterface.uc create mode 100755 exported/Engine/Classes/MatineeActor.uc create mode 100755 exported/Engine/Classes/MatineePawn.uc create mode 100755 exported/Engine/Classes/MeshComponent.uc create mode 100755 exported/Engine/Classes/MeshComponentFactory.uc create mode 100755 exported/Engine/Classes/MicroTransactionBase.uc create mode 100755 exported/Engine/Classes/ModelComponent.uc create mode 100755 exported/Engine/Classes/MorphNodeBase.uc create mode 100755 exported/Engine/Classes/MorphNodeMultiPose.uc create mode 100755 exported/Engine/Classes/MorphNodePose.uc create mode 100755 exported/Engine/Classes/MorphNodeWeight.uc create mode 100755 exported/Engine/Classes/MorphNodeWeightBase.uc create mode 100755 exported/Engine/Classes/MorphNodeWeightByBoneAngle.uc create mode 100755 exported/Engine/Classes/MorphNodeWeightByBoneRotation.uc create mode 100755 exported/Engine/Classes/MorphTarget.uc create mode 100755 exported/Engine/Classes/MorphTargetSet.uc create mode 100755 exported/Engine/Classes/MorphWeightSequence.uc create mode 100755 exported/Engine/Classes/MotionBlurEffect.uc create mode 100755 exported/Engine/Classes/MultiCueSplineAudioComponent.uc create mode 100755 exported/Engine/Classes/MultiFont.uc create mode 100755 exported/Engine/Classes/MultiProviderAnalytics.uc create mode 100755 exported/Engine/Classes/MusicTrackDataStructures.uc create mode 100755 exported/Engine/Classes/Mutator.uc create mode 100755 exported/Engine/Classes/NavMeshBoundsVolume.uc create mode 100755 exported/Engine/Classes/NavMeshGoalFilter_MinPathDistance.uc create mode 100755 exported/Engine/Classes/NavMeshGoalFilter_NotNearOtherAI.uc create mode 100755 exported/Engine/Classes/NavMeshGoalFilter_OutOfViewFrom.uc create mode 100755 exported/Engine/Classes/NavMeshGoalFilter_OutSideOfDotProductWedge.uc create mode 100755 exported/Engine/Classes/NavMeshGoalFilter_PolyEncompassesAI.uc create mode 100755 exported/Engine/Classes/NavMeshGoal_At.uc create mode 100755 exported/Engine/Classes/NavMeshGoal_ClosestActorInList.uc create mode 100755 exported/Engine/Classes/NavMeshGoal_Filter.uc create mode 100755 exported/Engine/Classes/NavMeshGoal_GenericFilterContainer.uc create mode 100755 exported/Engine/Classes/NavMeshGoal_Null.uc create mode 100755 exported/Engine/Classes/NavMeshGoal_PolyEncompassesAI.uc create mode 100755 exported/Engine/Classes/NavMeshGoal_Random.uc create mode 100755 exported/Engine/Classes/NavMeshGoal_WithinDistanceEnvelope.uc create mode 100755 exported/Engine/Classes/NavMeshObstacle.uc create mode 100755 exported/Engine/Classes/NavMeshPathConstraint.uc create mode 100755 exported/Engine/Classes/NavMeshPathGoalEvaluator.uc create mode 100755 exported/Engine/Classes/NavMeshPath_AlongLine.uc create mode 100755 exported/Engine/Classes/NavMeshPath_EnforceTwoWayEdges.uc create mode 100755 exported/Engine/Classes/NavMeshPath_MinDistBetweenSpecsOfType.uc create mode 100755 exported/Engine/Classes/NavMeshPath_SameCoverLink.uc create mode 100755 exported/Engine/Classes/NavMeshPath_Toward.uc create mode 100755 exported/Engine/Classes/NavMeshPath_WithinDistanceEnvelope.uc create mode 100755 exported/Engine/Classes/NavMeshPath_WithinTraversalDist.uc create mode 100755 exported/Engine/Classes/NavMeshRenderingComponent.uc create mode 100755 exported/Engine/Classes/NavigationHandle.uc create mode 100755 exported/Engine/Classes/NavigationPoint.uc create mode 100755 exported/Engine/Classes/None.uc create mode 100755 exported/Engine/Classes/Note.uc create mode 100755 exported/Engine/Classes/NxCylindricalForceField.uc create mode 100755 exported/Engine/Classes/NxCylindricalForceFieldCapsule.uc create mode 100755 exported/Engine/Classes/NxForceField.uc create mode 100755 exported/Engine/Classes/NxForceFieldComponent.uc create mode 100755 exported/Engine/Classes/NxForceFieldCylindricalComponent.uc create mode 100755 exported/Engine/Classes/NxForceFieldGeneric.uc create mode 100755 exported/Engine/Classes/NxForceFieldGenericComponent.uc create mode 100755 exported/Engine/Classes/NxForceFieldRadial.uc create mode 100755 exported/Engine/Classes/NxForceFieldRadialComponent.uc create mode 100755 exported/Engine/Classes/NxForceFieldSpawnable.uc create mode 100755 exported/Engine/Classes/NxForceFieldTornado.uc create mode 100755 exported/Engine/Classes/NxForceFieldTornadoComponent.uc create mode 100755 exported/Engine/Classes/NxGenericForceField.uc create mode 100755 exported/Engine/Classes/NxGenericForceFieldBox.uc create mode 100755 exported/Engine/Classes/NxGenericForceFieldBrush.uc create mode 100755 exported/Engine/Classes/NxGenericForceFieldCapsule.uc create mode 100755 exported/Engine/Classes/NxRadialCustomForceField.uc create mode 100755 exported/Engine/Classes/NxRadialForceField.uc create mode 100755 exported/Engine/Classes/NxTornadoAngularForceField.uc create mode 100755 exported/Engine/Classes/NxTornadoAngularForceFieldCapsule.uc create mode 100755 exported/Engine/Classes/NxTornadoForceField.uc create mode 100755 exported/Engine/Classes/NxTornadoForceFieldCapsule.uc create mode 100755 exported/Engine/Classes/ObjectReferencer.uc create mode 100755 exported/Engine/Classes/OnlineAccountInterface.uc create mode 100755 exported/Engine/Classes/OnlineAuthInterface.uc create mode 100755 exported/Engine/Classes/OnlineChatInterface.uc create mode 100755 exported/Engine/Classes/OnlineCommunityContentInterface.uc create mode 100755 exported/Engine/Classes/OnlineContentInterface.uc create mode 100755 exported/Engine/Classes/OnlineEventTracker.uc create mode 100755 exported/Engine/Classes/OnlineEventsInterface.uc create mode 100755 exported/Engine/Classes/OnlineGameDVRInterface.uc create mode 100755 exported/Engine/Classes/OnlineGameDownloadInterface.uc create mode 100755 exported/Engine/Classes/OnlineGameInterface.uc create mode 100755 exported/Engine/Classes/OnlineGameSearch.uc create mode 100755 exported/Engine/Classes/OnlineGameSettings.uc create mode 100755 exported/Engine/Classes/OnlineMarketplaceInterface.uc create mode 100755 exported/Engine/Classes/OnlineMatchmakingStats.uc create mode 100755 exported/Engine/Classes/OnlineNewsInterface.uc create mode 100755 exported/Engine/Classes/OnlinePartyChatInterface.uc create mode 100755 exported/Engine/Classes/OnlinePlayerInterface.uc create mode 100755 exported/Engine/Classes/OnlinePlayerInterfaceEx.uc create mode 100755 exported/Engine/Classes/OnlinePlayerStorage.uc create mode 100755 exported/Engine/Classes/OnlinePlaylistGameTypeProvider.uc create mode 100755 exported/Engine/Classes/OnlineProfileSettings.uc create mode 100755 exported/Engine/Classes/OnlineRecentPlayersList.uc create mode 100755 exported/Engine/Classes/OnlineSocialInterface.uc create mode 100755 exported/Engine/Classes/OnlineStats.uc create mode 100755 exported/Engine/Classes/OnlineStatsInterface.uc create mode 100755 exported/Engine/Classes/OnlineStatsRead.uc create mode 100755 exported/Engine/Classes/OnlineStatsWrite.uc create mode 100755 exported/Engine/Classes/OnlineSubsystem.uc create mode 100755 exported/Engine/Classes/OnlineSuppliedUIInterface.uc create mode 100755 exported/Engine/Classes/OnlineSystemInterface.uc create mode 100755 exported/Engine/Classes/OnlineTitleFileCacheInterface.uc create mode 100755 exported/Engine/Classes/OnlineTitleFileInterface.uc create mode 100755 exported/Engine/Classes/OnlineVoiceInterface.uc create mode 100755 exported/Engine/Classes/PBRuleNodeAlternate.uc create mode 100755 exported/Engine/Classes/PBRuleNodeBase.uc create mode 100755 exported/Engine/Classes/PBRuleNodeComment.uc create mode 100755 exported/Engine/Classes/PBRuleNodeCorner.uc create mode 100755 exported/Engine/Classes/PBRuleNodeCycle.uc create mode 100755 exported/Engine/Classes/PBRuleNodeEdgeAngle.uc create mode 100755 exported/Engine/Classes/PBRuleNodeEdgeMesh.uc create mode 100755 exported/Engine/Classes/PBRuleNodeExtractTopBottom.uc create mode 100755 exported/Engine/Classes/PBRuleNodeLODQuad.uc create mode 100755 exported/Engine/Classes/PBRuleNodeMesh.uc create mode 100755 exported/Engine/Classes/PBRuleNodeOcclusion.uc create mode 100755 exported/Engine/Classes/PBRuleNodeQuad.uc create mode 100755 exported/Engine/Classes/PBRuleNodeRandom.uc create mode 100755 exported/Engine/Classes/PBRuleNodeRepeat.uc create mode 100755 exported/Engine/Classes/PBRuleNodeSize.uc create mode 100755 exported/Engine/Classes/PBRuleNodeSplit.uc create mode 100755 exported/Engine/Classes/PBRuleNodeSubRuleset.uc create mode 100755 exported/Engine/Classes/PBRuleNodeTransform.uc create mode 100755 exported/Engine/Classes/PBRuleNodeVariation.uc create mode 100755 exported/Engine/Classes/PBRuleNodeWindowWall.uc create mode 100755 exported/Engine/Classes/ParticleEmitter.uc create mode 100755 exported/Engine/Classes/ParticleEventManager.uc create mode 100755 exported/Engine/Classes/ParticleLODLevel.uc create mode 100755 exported/Engine/Classes/ParticleLightEnvironmentComponent.uc create mode 100755 exported/Engine/Classes/ParticleModule.uc create mode 100755 exported/Engine/Classes/ParticleModuleAcceleration.uc create mode 100755 exported/Engine/Classes/ParticleModuleAccelerationBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleAccelerationOverLifetime.uc create mode 100755 exported/Engine/Classes/ParticleModuleAttractorBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleAttractorBoneSocket.uc create mode 100755 exported/Engine/Classes/ParticleModuleAttractorLine.uc create mode 100755 exported/Engine/Classes/ParticleModuleAttractorParticle.uc create mode 100755 exported/Engine/Classes/ParticleModuleAttractorPoint.uc create mode 100755 exported/Engine/Classes/ParticleModuleAttractorSkelVertSurface.uc create mode 100755 exported/Engine/Classes/ParticleModuleBeamBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleBeamModifier.uc create mode 100755 exported/Engine/Classes/ParticleModuleBeamNoise.uc create mode 100755 exported/Engine/Classes/ParticleModuleBeamSource.uc create mode 100755 exported/Engine/Classes/ParticleModuleBeamTarget.uc create mode 100755 exported/Engine/Classes/ParticleModuleCameraBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleCameraOffset.uc create mode 100755 exported/Engine/Classes/ParticleModuleCollision.uc create mode 100755 exported/Engine/Classes/ParticleModuleCollisionActor.uc create mode 100755 exported/Engine/Classes/ParticleModuleCollisionBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleColor.uc create mode 100755 exported/Engine/Classes/ParticleModuleColorBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleColorByParameter.uc create mode 100755 exported/Engine/Classes/ParticleModuleColorOverLife.uc create mode 100755 exported/Engine/Classes/ParticleModuleColorScaleOverDensity.uc create mode 100755 exported/Engine/Classes/ParticleModuleColorScaleOverLife.uc create mode 100755 exported/Engine/Classes/ParticleModuleColor_Seeded.uc create mode 100755 exported/Engine/Classes/ParticleModuleEventBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleEventGenerator.uc create mode 100755 exported/Engine/Classes/ParticleModuleEventReceiverBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleEventReceiverKillParticles.uc create mode 100755 exported/Engine/Classes/ParticleModuleEventReceiverSpawn.uc create mode 100755 exported/Engine/Classes/ParticleModuleEventSendToGame.uc create mode 100755 exported/Engine/Classes/ParticleModuleKillBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleKillBox.uc create mode 100755 exported/Engine/Classes/ParticleModuleKillHeight.uc create mode 100755 exported/Engine/Classes/ParticleModuleLifetime.uc create mode 100755 exported/Engine/Classes/ParticleModuleLifetimeBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleLifetime_Seeded.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocation.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocationBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocationBoneSocket.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocationDirect.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocationEmitter.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocationEmitterDirect.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocationPrimitiveBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocationPrimitiveCylinder.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocationPrimitiveCylinder_Seeded.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocationPrimitiveSphere.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocationPrimitiveSphere_Seeded.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocationSkelVertSurface.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocationStaticVertSurface.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocationWorldOffset.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocationWorldOffset_Seeded.uc create mode 100755 exported/Engine/Classes/ParticleModuleLocation_Seeded.uc create mode 100755 exported/Engine/Classes/ParticleModuleMaterialBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleMaterialByParameter.uc create mode 100755 exported/Engine/Classes/ParticleModuleMeshMaterial.uc create mode 100755 exported/Engine/Classes/ParticleModuleMeshRotation.uc create mode 100755 exported/Engine/Classes/ParticleModuleMeshRotationRate.uc create mode 100755 exported/Engine/Classes/ParticleModuleMeshRotationRateMultiplyLife.uc create mode 100755 exported/Engine/Classes/ParticleModuleMeshRotationRateOverLife.uc create mode 100755 exported/Engine/Classes/ParticleModuleMeshRotationRate_Seeded.uc create mode 100755 exported/Engine/Classes/ParticleModuleMeshRotation_Seeded.uc create mode 100755 exported/Engine/Classes/ParticleModuleOrbit.uc create mode 100755 exported/Engine/Classes/ParticleModuleOrbitBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleOrientationAxisLock.uc create mode 100755 exported/Engine/Classes/ParticleModuleOrientationBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleParameterBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleParameterDynamic.uc create mode 100755 exported/Engine/Classes/ParticleModuleParameterDynamic_Seeded.uc create mode 100755 exported/Engine/Classes/ParticleModulePhysicsVolumes.uc create mode 100755 exported/Engine/Classes/ParticleModuleRequired.uc create mode 100755 exported/Engine/Classes/ParticleModuleRotation.uc create mode 100755 exported/Engine/Classes/ParticleModuleRotationBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleRotationOverLifetime.uc create mode 100755 exported/Engine/Classes/ParticleModuleRotationRate.uc create mode 100755 exported/Engine/Classes/ParticleModuleRotationRateBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleRotationRateMultiplyLife.uc create mode 100755 exported/Engine/Classes/ParticleModuleRotationRate_Seeded.uc create mode 100755 exported/Engine/Classes/ParticleModuleRotation_Seeded.uc create mode 100755 exported/Engine/Classes/ParticleModuleSize.uc create mode 100755 exported/Engine/Classes/ParticleModuleSizeBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleSizeMultiplyLife.uc create mode 100755 exported/Engine/Classes/ParticleModuleSizeMultiplyVelocity.uc create mode 100755 exported/Engine/Classes/ParticleModuleSizeScale.uc create mode 100755 exported/Engine/Classes/ParticleModuleSizeScaleByTime.uc create mode 100755 exported/Engine/Classes/ParticleModuleSizeScaleOverDensity.uc create mode 100755 exported/Engine/Classes/ParticleModuleSize_Seeded.uc create mode 100755 exported/Engine/Classes/ParticleModuleSourceMovement.uc create mode 100755 exported/Engine/Classes/ParticleModuleSpawn.uc create mode 100755 exported/Engine/Classes/ParticleModuleSpawnBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleSpawnPerUnit.uc create mode 100755 exported/Engine/Classes/ParticleModuleStoreSpawnTime.uc create mode 100755 exported/Engine/Classes/ParticleModuleStoreSpawnTimeBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleSubUV.uc create mode 100755 exported/Engine/Classes/ParticleModuleSubUVBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleSubUVDirect.uc create mode 100755 exported/Engine/Classes/ParticleModuleSubUVMovie.uc create mode 100755 exported/Engine/Classes/ParticleModuleSubUVSelect.uc create mode 100755 exported/Engine/Classes/ParticleModuleTrailBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleTrailSource.uc create mode 100755 exported/Engine/Classes/ParticleModuleTrailSpawn.uc create mode 100755 exported/Engine/Classes/ParticleModuleTrailTaper.uc create mode 100755 exported/Engine/Classes/ParticleModuleTypeDataAnimTrail.uc create mode 100755 exported/Engine/Classes/ParticleModuleTypeDataApex.uc create mode 100755 exported/Engine/Classes/ParticleModuleTypeDataBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleTypeDataBeam.uc create mode 100755 exported/Engine/Classes/ParticleModuleTypeDataBeam2.uc create mode 100755 exported/Engine/Classes/ParticleModuleTypeDataMesh.uc create mode 100755 exported/Engine/Classes/ParticleModuleTypeDataMeshPhysX.uc create mode 100755 exported/Engine/Classes/ParticleModuleTypeDataPhysX.uc create mode 100755 exported/Engine/Classes/ParticleModuleTypeDataRibbon.uc create mode 100755 exported/Engine/Classes/ParticleModuleTypeDataTrail.uc create mode 100755 exported/Engine/Classes/ParticleModuleTypeDataTrail2.uc create mode 100755 exported/Engine/Classes/ParticleModuleUberBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleUberLTISIVCL.uc create mode 100755 exported/Engine/Classes/ParticleModuleUberLTISIVCLIL.uc create mode 100755 exported/Engine/Classes/ParticleModuleUberLTISIVCLILIRSSBLIRR.uc create mode 100755 exported/Engine/Classes/ParticleModuleUberRainDrops.uc create mode 100755 exported/Engine/Classes/ParticleModuleUberRainImpacts.uc create mode 100755 exported/Engine/Classes/ParticleModuleUberRainSplashA.uc create mode 100755 exported/Engine/Classes/ParticleModuleUberRainSplashB.uc create mode 100755 exported/Engine/Classes/ParticleModuleVelocity.uc create mode 100755 exported/Engine/Classes/ParticleModuleVelocityBase.uc create mode 100755 exported/Engine/Classes/ParticleModuleVelocityCone.uc create mode 100755 exported/Engine/Classes/ParticleModuleVelocityInheritParent.uc create mode 100755 exported/Engine/Classes/ParticleModuleVelocityOverLifetime.uc create mode 100755 exported/Engine/Classes/ParticleModuleVelocity_Seeded.uc create mode 100755 exported/Engine/Classes/ParticleModuleWorldAttractor.uc create mode 100755 exported/Engine/Classes/ParticleModuleWorldForcesBase.uc create mode 100755 exported/Engine/Classes/ParticleSpriteEmitter.uc create mode 100755 exported/Engine/Classes/ParticleSystem.uc create mode 100755 exported/Engine/Classes/ParticleSystemComponent.uc create mode 100755 exported/Engine/Classes/ParticleSystemReplay.uc create mode 100755 exported/Engine/Classes/PathBlockingVolume.uc create mode 100755 exported/Engine/Classes/PathConstraint.uc create mode 100755 exported/Engine/Classes/PathGoalEvaluator.uc create mode 100755 exported/Engine/Classes/PathNode.uc create mode 100755 exported/Engine/Classes/PathNode_Dynamic.uc create mode 100755 exported/Engine/Classes/PathRenderingComponent.uc create mode 100755 exported/Engine/Classes/PathTargetPoint.uc create mode 100755 exported/Engine/Classes/Path_AlongLine.uc create mode 100755 exported/Engine/Classes/Path_AvoidInEscapableNodes.uc create mode 100755 exported/Engine/Classes/Path_MinDistBetweenSpecsOfType.uc create mode 100755 exported/Engine/Classes/Path_TowardGoal.uc create mode 100755 exported/Engine/Classes/Path_TowardPoint.uc create mode 100755 exported/Engine/Classes/Path_WithinDistanceEnvelope.uc create mode 100755 exported/Engine/Classes/Path_WithinTraversalDist.uc create mode 100755 exported/Engine/Classes/Pawn.uc create mode 100755 exported/Engine/Classes/PhysXParticleSystem.uc create mode 100755 exported/Engine/Classes/PhysicalMaterial.uc create mode 100755 exported/Engine/Classes/PhysicalMaterialPropertyBase.uc create mode 100755 exported/Engine/Classes/PhysicsAsset.uc create mode 100755 exported/Engine/Classes/PhysicsAssetInstance.uc create mode 100755 exported/Engine/Classes/PhysicsLODVerticalEmitter.uc create mode 100755 exported/Engine/Classes/PhysicsVolume.uc create mode 100755 exported/Engine/Classes/PickupFactory.uc create mode 100755 exported/Engine/Classes/PlatformInterfaceBase.uc create mode 100755 exported/Engine/Classes/PlatformInterfaceWebResponse.uc create mode 100755 exported/Engine/Classes/Player.uc create mode 100755 exported/Engine/Classes/PlayerController.uc create mode 100755 exported/Engine/Classes/PlayerInput.uc create mode 100755 exported/Engine/Classes/PlayerManagerInteraction.uc create mode 100755 exported/Engine/Classes/PlayerReplicationInfo.uc create mode 100755 exported/Engine/Classes/PlayerStart.uc create mode 100755 exported/Engine/Classes/PointLight.uc create mode 100755 exported/Engine/Classes/PointLightComponent.uc create mode 100755 exported/Engine/Classes/PointLightMovable.uc create mode 100755 exported/Engine/Classes/PointLightToggleable.uc create mode 100755 exported/Engine/Classes/Portal.uc create mode 100755 exported/Engine/Classes/PortalMarker.uc create mode 100755 exported/Engine/Classes/PortalRenderingComponent.uc create mode 100755 exported/Engine/Classes/PortalTeleporter.uc create mode 100755 exported/Engine/Classes/PortalVolume.uc create mode 100755 exported/Engine/Classes/PostProcessChain.uc create mode 100755 exported/Engine/Classes/PostProcessEffect.uc create mode 100755 exported/Engine/Classes/PostProcessVolume.uc create mode 100755 exported/Engine/Classes/PotentialClimbWatcher.uc create mode 100755 exported/Engine/Classes/PrecomputedVisibilityOverrideVolume.uc create mode 100755 exported/Engine/Classes/PrecomputedVisibilityVolume.uc create mode 100755 exported/Engine/Classes/Prefab.uc create mode 100755 exported/Engine/Classes/PrefabInstance.uc create mode 100755 exported/Engine/Classes/PrefabSequence.uc create mode 100755 exported/Engine/Classes/PrefabSequenceContainer.uc create mode 100755 exported/Engine/Classes/PrimitiveComponent.uc create mode 100755 exported/Engine/Classes/PrimitiveComponentFactory.uc create mode 100755 exported/Engine/Classes/ProcBuilding.uc create mode 100755 exported/Engine/Classes/ProcBuildingRuleset.uc create mode 100755 exported/Engine/Classes/ProcBuilding_SimpleLODActor.uc create mode 100755 exported/Engine/Classes/Projectile.uc create mode 100755 exported/Engine/Classes/ProscribedReachSpec.uc create mode 100755 exported/Engine/Classes/ProxyStaticMeshComponent.uc create mode 100755 exported/Engine/Classes/Pylon.uc create mode 100755 exported/Engine/Classes/PylonSeed.uc create mode 100755 exported/Engine/Classes/RB_BSJointActor.uc create mode 100755 exported/Engine/Classes/RB_BSJointSetup.uc create mode 100755 exported/Engine/Classes/RB_BodyInstance.uc create mode 100755 exported/Engine/Classes/RB_BodySetup.uc create mode 100755 exported/Engine/Classes/RB_ConstraintActor.uc create mode 100755 exported/Engine/Classes/RB_ConstraintActorSpawnable.uc create mode 100755 exported/Engine/Classes/RB_ConstraintDrawComponent.uc create mode 100755 exported/Engine/Classes/RB_ConstraintInstance.uc create mode 100755 exported/Engine/Classes/RB_ConstraintSetup.uc create mode 100755 exported/Engine/Classes/RB_CylindricalForceActor.uc create mode 100755 exported/Engine/Classes/RB_DistanceJointSetup.uc create mode 100755 exported/Engine/Classes/RB_ForceFieldExcludeVolume.uc create mode 100755 exported/Engine/Classes/RB_Handle.uc create mode 100755 exported/Engine/Classes/RB_HingeActor.uc create mode 100755 exported/Engine/Classes/RB_HingeSetup.uc create mode 100755 exported/Engine/Classes/RB_LineImpulseActor.uc create mode 100755 exported/Engine/Classes/RB_PrismaticActor.uc create mode 100755 exported/Engine/Classes/RB_PrismaticSetup.uc create mode 100755 exported/Engine/Classes/RB_PulleyJointActor.uc create mode 100755 exported/Engine/Classes/RB_PulleyJointSetup.uc create mode 100755 exported/Engine/Classes/RB_RadialForceActor.uc create mode 100755 exported/Engine/Classes/RB_RadialImpulseActor.uc create mode 100755 exported/Engine/Classes/RB_RadialImpulseComponent.uc create mode 100755 exported/Engine/Classes/RB_SkelJointSetup.uc create mode 100755 exported/Engine/Classes/RB_Spring.uc create mode 100755 exported/Engine/Classes/RB_StayUprightSetup.uc create mode 100755 exported/Engine/Classes/RB_Thruster.uc create mode 100755 exported/Engine/Classes/RadialBlurActor.uc create mode 100755 exported/Engine/Classes/RadialBlurComponent.uc create mode 100755 exported/Engine/Classes/ReachSpec.uc create mode 100755 exported/Engine/Classes/ReplicationInfo.uc create mode 100755 exported/Engine/Classes/ReverbVolume.uc create mode 100755 exported/Engine/Classes/ReverbVolumeToggleable.uc create mode 100755 exported/Engine/Classes/RigidBodyBase.uc create mode 100755 exported/Engine/Classes/Route.uc create mode 100755 exported/Engine/Classes/RouteRenderingComponent.uc create mode 100755 exported/Engine/Classes/SVehicle.uc create mode 100755 exported/Engine/Classes/SVehicleSimBase.uc create mode 100755 exported/Engine/Classes/SVehicleSimCar.uc create mode 100755 exported/Engine/Classes/SVehicleSimTank.uc create mode 100755 exported/Engine/Classes/SVehicleWheel.uc create mode 100755 exported/Engine/Classes/SaveGameSummary.uc create mode 100755 exported/Engine/Classes/SavedMove.uc create mode 100755 exported/Engine/Classes/Scene.uc create mode 100755 exported/Engine/Classes/SceneCapture2DActor.uc create mode 100755 exported/Engine/Classes/SceneCapture2DComponent.uc create mode 100755 exported/Engine/Classes/SceneCapture2DHitMaskComponent.uc create mode 100755 exported/Engine/Classes/SceneCaptureActor.uc create mode 100755 exported/Engine/Classes/SceneCaptureComponent.uc create mode 100755 exported/Engine/Classes/SceneCaptureCubeMapActor.uc create mode 100755 exported/Engine/Classes/SceneCaptureCubeMapComponent.uc create mode 100755 exported/Engine/Classes/SceneCapturePortalActor.uc create mode 100755 exported/Engine/Classes/SceneCapturePortalComponent.uc create mode 100755 exported/Engine/Classes/SceneCaptureReflectActor.uc create mode 100755 exported/Engine/Classes/SceneCaptureReflectComponent.uc create mode 100755 exported/Engine/Classes/Scout.uc create mode 100755 exported/Engine/Classes/ScriptViewportClient.uc create mode 100755 exported/Engine/Classes/ScriptedTexture.uc create mode 100755 exported/Engine/Classes/SeqAct_AIAbortMoveToActor.uc create mode 100755 exported/Engine/Classes/SeqAct_AIMoveToActor.uc create mode 100755 exported/Engine/Classes/SeqAct_AccessObjectList.uc create mode 100755 exported/Engine/Classes/SeqAct_ActivateRemoteEvent.uc create mode 100755 exported/Engine/Classes/SeqAct_ActorFactory.uc create mode 100755 exported/Engine/Classes/SeqAct_ActorFactoryEx.uc create mode 100755 exported/Engine/Classes/SeqAct_AddFloat.uc create mode 100755 exported/Engine/Classes/SeqAct_AddInt.uc create mode 100755 exported/Engine/Classes/SeqAct_AddRemoveFaceFXAnimSet.uc create mode 100755 exported/Engine/Classes/SeqAct_AndGate.uc create mode 100755 exported/Engine/Classes/SeqAct_ApplySoundNode.uc create mode 100755 exported/Engine/Classes/SeqAct_AssignController.uc create mode 100755 exported/Engine/Classes/SeqAct_AttachToActor.uc create mode 100755 exported/Engine/Classes/SeqAct_AttachToEvent.uc create mode 100755 exported/Engine/Classes/SeqAct_CameraFade.uc create mode 100755 exported/Engine/Classes/SeqAct_CameraLookAt.uc create mode 100755 exported/Engine/Classes/SeqAct_CameraShake.uc create mode 100755 exported/Engine/Classes/SeqAct_CastToFloat.uc create mode 100755 exported/Engine/Classes/SeqAct_CastToInt.uc create mode 100755 exported/Engine/Classes/SeqAct_ChangeCollision.uc create mode 100755 exported/Engine/Classes/SeqAct_CommitMapChange.uc create mode 100755 exported/Engine/Classes/SeqAct_ConcatenateStrings.uc create mode 100755 exported/Engine/Classes/SeqAct_ConsoleCommand.uc create mode 100755 exported/Engine/Classes/SeqAct_ControlMovieTexture.uc create mode 100755 exported/Engine/Classes/SeqAct_ConvertToString.uc create mode 100755 exported/Engine/Classes/SeqAct_Delay.uc create mode 100755 exported/Engine/Classes/SeqAct_DelaySwitch.uc create mode 100755 exported/Engine/Classes/SeqAct_Destroy.uc create mode 100755 exported/Engine/Classes/SeqAct_DivideFloat.uc create mode 100755 exported/Engine/Classes/SeqAct_DivideInt.uc create mode 100755 exported/Engine/Classes/SeqAct_DrawText.uc create mode 100755 exported/Engine/Classes/SeqAct_FeatureTest.uc create mode 100755 exported/Engine/Classes/SeqAct_FinishSequence.uc create mode 100755 exported/Engine/Classes/SeqAct_FlyThroughHasEnded.uc create mode 100755 exported/Engine/Classes/SeqAct_ForceFeedback.uc create mode 100755 exported/Engine/Classes/SeqAct_ForceGarbageCollection.uc create mode 100755 exported/Engine/Classes/SeqAct_Gate.uc create mode 100755 exported/Engine/Classes/SeqAct_GetDistance.uc create mode 100755 exported/Engine/Classes/SeqAct_GetLocationAndRotation.uc create mode 100755 exported/Engine/Classes/SeqAct_GetProperty.uc create mode 100755 exported/Engine/Classes/SeqAct_GetVectorComponents.uc create mode 100755 exported/Engine/Classes/SeqAct_GetVelocity.uc create mode 100755 exported/Engine/Classes/SeqAct_GiveInventory.uc create mode 100755 exported/Engine/Classes/SeqAct_HeadTrackingControl.uc create mode 100755 exported/Engine/Classes/SeqAct_Interp.uc create mode 100755 exported/Engine/Classes/SeqAct_IsInObjectList.uc create mode 100755 exported/Engine/Classes/SeqAct_Latent.uc create mode 100755 exported/Engine/Classes/SeqAct_LevelStreaming.uc create mode 100755 exported/Engine/Classes/SeqAct_LevelStreamingBase.uc create mode 100755 exported/Engine/Classes/SeqAct_LevelVisibility.uc create mode 100755 exported/Engine/Classes/SeqAct_Log.uc create mode 100755 exported/Engine/Classes/SeqAct_MITV_Activate.uc create mode 100755 exported/Engine/Classes/SeqAct_ModifyCover.uc create mode 100755 exported/Engine/Classes/SeqAct_ModifyHealth.uc create mode 100755 exported/Engine/Classes/SeqAct_ModifyObjectList.uc create mode 100755 exported/Engine/Classes/SeqAct_MultiLevelStreaming.uc create mode 100755 exported/Engine/Classes/SeqAct_MultiplyFloat.uc create mode 100755 exported/Engine/Classes/SeqAct_MultiplyInt.uc create mode 100755 exported/Engine/Classes/SeqAct_ParticleEventGenerator.uc create mode 100755 exported/Engine/Classes/SeqAct_PlayCameraAnim.uc create mode 100755 exported/Engine/Classes/SeqAct_PlayFaceFXAnim.uc create mode 100755 exported/Engine/Classes/SeqAct_PlayMusicTrack.uc create mode 100755 exported/Engine/Classes/SeqAct_PlaySound.uc create mode 100755 exported/Engine/Classes/SeqAct_Possess.uc create mode 100755 exported/Engine/Classes/SeqAct_PrepareMapChange.uc create mode 100755 exported/Engine/Classes/SeqAct_ProjectileFactory.uc create mode 100755 exported/Engine/Classes/SeqAct_RandomSwitch.uc create mode 100755 exported/Engine/Classes/SeqAct_RangeSwitch.uc create mode 100755 exported/Engine/Classes/SeqAct_SetActiveAnimChild.uc create mode 100755 exported/Engine/Classes/SeqAct_SetApexClothingParam.uc create mode 100755 exported/Engine/Classes/SeqAct_SetBlockRigidBody.uc create mode 100755 exported/Engine/Classes/SeqAct_SetBool.uc create mode 100755 exported/Engine/Classes/SeqAct_SetCameraTarget.uc create mode 100755 exported/Engine/Classes/SeqAct_SetDOFParams.uc create mode 100755 exported/Engine/Classes/SeqAct_SetDamageInstigator.uc create mode 100755 exported/Engine/Classes/SeqAct_SetFloat.uc create mode 100755 exported/Engine/Classes/SeqAct_SetInt.uc create mode 100755 exported/Engine/Classes/SeqAct_SetLocation.uc create mode 100755 exported/Engine/Classes/SeqAct_SetMatInstScalarParam.uc create mode 100755 exported/Engine/Classes/SeqAct_SetMatInstTexParam.uc create mode 100755 exported/Engine/Classes/SeqAct_SetMatInstVectorParam.uc create mode 100755 exported/Engine/Classes/SeqAct_SetMaterial.uc create mode 100755 exported/Engine/Classes/SeqAct_SetMesh.uc create mode 100755 exported/Engine/Classes/SeqAct_SetMotionBlurParams.uc create mode 100755 exported/Engine/Classes/SeqAct_SetObject.uc create mode 100755 exported/Engine/Classes/SeqAct_SetParticleSysParam.uc create mode 100755 exported/Engine/Classes/SeqAct_SetPhysics.uc create mode 100755 exported/Engine/Classes/SeqAct_SetRigidBodyIgnoreVehicles.uc create mode 100755 exported/Engine/Classes/SeqAct_SetSequenceVariable.uc create mode 100755 exported/Engine/Classes/SeqAct_SetSkelControlTarget.uc create mode 100755 exported/Engine/Classes/SeqAct_SetSoundMode.uc create mode 100755 exported/Engine/Classes/SeqAct_SetString.uc create mode 100755 exported/Engine/Classes/SeqAct_SetVector.uc create mode 100755 exported/Engine/Classes/SeqAct_SetVectorComponents.uc create mode 100755 exported/Engine/Classes/SeqAct_SetVelocity.uc create mode 100755 exported/Engine/Classes/SeqAct_SetWorldAttractorParam.uc create mode 100755 exported/Engine/Classes/SeqAct_StreamInTextures.uc create mode 100755 exported/Engine/Classes/SeqAct_SubtractFloat.uc create mode 100755 exported/Engine/Classes/SeqAct_SubtractInt.uc create mode 100755 exported/Engine/Classes/SeqAct_Switch.uc create mode 100755 exported/Engine/Classes/SeqAct_Teleport.uc create mode 100755 exported/Engine/Classes/SeqAct_Timer.uc create mode 100755 exported/Engine/Classes/SeqAct_Toggle.uc create mode 100755 exported/Engine/Classes/SeqAct_ToggleAffectedByHitEffects.uc create mode 100755 exported/Engine/Classes/SeqAct_ToggleCinematicMode.uc create mode 100755 exported/Engine/Classes/SeqAct_ToggleConstraintDrive.uc create mode 100755 exported/Engine/Classes/SeqAct_ToggleGodMode.uc create mode 100755 exported/Engine/Classes/SeqAct_ToggleHUD.uc create mode 100755 exported/Engine/Classes/SeqAct_ToggleHidden.uc create mode 100755 exported/Engine/Classes/SeqAct_ToggleInput.uc create mode 100755 exported/Engine/Classes/SeqAct_Trace.uc create mode 100755 exported/Engine/Classes/SeqAct_UpdatePhysBonesFromAnim.uc create mode 100755 exported/Engine/Classes/SeqAct_WaitForLevelsVisible.uc create mode 100755 exported/Engine/Classes/SeqCond_CompareBool.uc create mode 100755 exported/Engine/Classes/SeqCond_CompareFloat.uc create mode 100755 exported/Engine/Classes/SeqCond_CompareInt.uc create mode 100755 exported/Engine/Classes/SeqCond_CompareObject.uc create mode 100755 exported/Engine/Classes/SeqCond_GetServerType.uc create mode 100755 exported/Engine/Classes/SeqCond_Increment.uc create mode 100755 exported/Engine/Classes/SeqCond_IncrementFloat.uc create mode 100755 exported/Engine/Classes/SeqCond_IsAlive.uc create mode 100755 exported/Engine/Classes/SeqCond_IsBenchmarking.uc create mode 100755 exported/Engine/Classes/SeqCond_IsConsole.uc create mode 100755 exported/Engine/Classes/SeqCond_IsInCombat.uc create mode 100755 exported/Engine/Classes/SeqCond_IsLoggedIn.uc create mode 100755 exported/Engine/Classes/SeqCond_IsPIE.uc create mode 100755 exported/Engine/Classes/SeqCond_IsSameTeam.uc create mode 100755 exported/Engine/Classes/SeqCond_MatureLanguage.uc create mode 100755 exported/Engine/Classes/SeqCond_ShowGore.uc create mode 100755 exported/Engine/Classes/SeqCond_SwitchBase.uc create mode 100755 exported/Engine/Classes/SeqCond_SwitchClass.uc create mode 100755 exported/Engine/Classes/SeqCond_SwitchObject.uc create mode 100755 exported/Engine/Classes/SeqCond_SwitchPlatform.uc create mode 100755 exported/Engine/Classes/SeqEvent_AIReachedRouteActor.uc create mode 100755 exported/Engine/Classes/SeqEvent_AISeeEnemy.uc create mode 100755 exported/Engine/Classes/SeqEvent_AnalogInput.uc create mode 100755 exported/Engine/Classes/SeqEvent_AnimNotify.uc create mode 100755 exported/Engine/Classes/SeqEvent_Console.uc create mode 100755 exported/Engine/Classes/SeqEvent_ConstraintBroken.uc create mode 100755 exported/Engine/Classes/SeqEvent_Death.uc create mode 100755 exported/Engine/Classes/SeqEvent_Destroyed.uc create mode 100755 exported/Engine/Classes/SeqEvent_GetInventory.uc create mode 100755 exported/Engine/Classes/SeqEvent_HitWall.uc create mode 100755 exported/Engine/Classes/SeqEvent_Input.uc create mode 100755 exported/Engine/Classes/SeqEvent_LOS.uc create mode 100755 exported/Engine/Classes/SeqEvent_LevelBeginning.uc create mode 100755 exported/Engine/Classes/SeqEvent_LevelLoaded.uc create mode 100755 exported/Engine/Classes/SeqEvent_LevelStartup.uc create mode 100755 exported/Engine/Classes/SeqEvent_MobileTouch.uc create mode 100755 exported/Engine/Classes/SeqEvent_Mover.uc create mode 100755 exported/Engine/Classes/SeqEvent_ParticleEvent.uc create mode 100755 exported/Engine/Classes/SeqEvent_PickupStatusChange.uc create mode 100755 exported/Engine/Classes/SeqEvent_PlayerSpawned.uc create mode 100755 exported/Engine/Classes/SeqEvent_ProjectileLanded.uc create mode 100755 exported/Engine/Classes/SeqEvent_RemoteEvent.uc create mode 100755 exported/Engine/Classes/SeqEvent_RigidBodyCollision.uc create mode 100755 exported/Engine/Classes/SeqEvent_SeeDeath.uc create mode 100755 exported/Engine/Classes/SeqEvent_SequenceActivated.uc create mode 100755 exported/Engine/Classes/SeqEvent_TakeDamage.uc create mode 100755 exported/Engine/Classes/SeqEvent_Touch.uc create mode 100755 exported/Engine/Classes/SeqEvent_TouchInput.uc create mode 100755 exported/Engine/Classes/SeqEvent_Used.uc create mode 100755 exported/Engine/Classes/SeqVar_Bool.uc create mode 100755 exported/Engine/Classes/SeqVar_Byte.uc create mode 100755 exported/Engine/Classes/SeqVar_Character.uc create mode 100755 exported/Engine/Classes/SeqVar_External.uc create mode 100755 exported/Engine/Classes/SeqVar_Float.uc create mode 100755 exported/Engine/Classes/SeqVar_Group.uc create mode 100755 exported/Engine/Classes/SeqVar_Int.uc create mode 100755 exported/Engine/Classes/SeqVar_Name.uc create mode 100755 exported/Engine/Classes/SeqVar_Named.uc create mode 100755 exported/Engine/Classes/SeqVar_Object.uc create mode 100755 exported/Engine/Classes/SeqVar_ObjectList.uc create mode 100755 exported/Engine/Classes/SeqVar_ObjectVolume.uc create mode 100755 exported/Engine/Classes/SeqVar_Player.uc create mode 100755 exported/Engine/Classes/SeqVar_RandomFloat.uc create mode 100755 exported/Engine/Classes/SeqVar_RandomInt.uc create mode 100755 exported/Engine/Classes/SeqVar_String.uc create mode 100755 exported/Engine/Classes/SeqVar_Union.uc create mode 100755 exported/Engine/Classes/SeqVar_Vector.uc create mode 100755 exported/Engine/Classes/Sequence.uc create mode 100755 exported/Engine/Classes/SequenceAction.uc create mode 100755 exported/Engine/Classes/SequenceCondition.uc create mode 100755 exported/Engine/Classes/SequenceEvent.uc create mode 100755 exported/Engine/Classes/SequenceFrame.uc create mode 100755 exported/Engine/Classes/SequenceFrameWrapped.uc create mode 100755 exported/Engine/Classes/SequenceObject.uc create mode 100755 exported/Engine/Classes/SequenceOp.uc create mode 100755 exported/Engine/Classes/SequenceVariable.uc create mode 100755 exported/Engine/Classes/Settings.uc create mode 100755 exported/Engine/Classes/ShadowMap2D.uc create mode 100755 exported/Engine/Classes/ShadowMapTexture2D.uc create mode 100755 exported/Engine/Classes/SharedCloudFileInterface.uc create mode 100755 exported/Engine/Classes/SimpleSplineAudioComponent.uc create mode 100755 exported/Engine/Classes/SimpleSplineNonLoopAudioComponent.uc create mode 100755 exported/Engine/Classes/SkelControlBase.uc create mode 100755 exported/Engine/Classes/SkelControlFootPlacement.uc create mode 100755 exported/Engine/Classes/SkelControlHandlebars.uc create mode 100755 exported/Engine/Classes/SkelControlLimb.uc create mode 100755 exported/Engine/Classes/SkelControlLookAt.uc create mode 100755 exported/Engine/Classes/SkelControlSingleBone.uc create mode 100755 exported/Engine/Classes/SkelControlSpline.uc create mode 100755 exported/Engine/Classes/SkelControlTrail.uc create mode 100755 exported/Engine/Classes/SkelControlWheel.uc create mode 100755 exported/Engine/Classes/SkelControl_CCD_IK.uc create mode 100755 exported/Engine/Classes/SkelControl_Multiply.uc create mode 100755 exported/Engine/Classes/SkelControl_TwistBone.uc create mode 100755 exported/Engine/Classes/SkeletalMesh.uc create mode 100755 exported/Engine/Classes/SkeletalMeshActor.uc create mode 100755 exported/Engine/Classes/SkeletalMeshActorBasedOnExtremeContent.uc create mode 100755 exported/Engine/Classes/SkeletalMeshActorMAT.uc create mode 100755 exported/Engine/Classes/SkeletalMeshActorMATSpawnable.uc create mode 100755 exported/Engine/Classes/SkeletalMeshActorMATWalkable.uc create mode 100755 exported/Engine/Classes/SkeletalMeshActorSpawnable.uc create mode 100755 exported/Engine/Classes/SkeletalMeshCinematicActor.uc create mode 100755 exported/Engine/Classes/SkeletalMeshComponent.uc create mode 100755 exported/Engine/Classes/SkeletalMeshSocket.uc create mode 100755 exported/Engine/Classes/SkyLight.uc create mode 100755 exported/Engine/Classes/SkyLightComponent.uc create mode 100755 exported/Engine/Classes/SkyLightToggleable.uc create mode 100755 exported/Engine/Classes/SlotToSlotReachSpec.uc create mode 100755 exported/Engine/Classes/SoundClass.uc create mode 100755 exported/Engine/Classes/SoundCue.uc create mode 100755 exported/Engine/Classes/SoundMode.uc create mode 100755 exported/Engine/Classes/SoundNode.uc create mode 100755 exported/Engine/Classes/SoundNodeAmbient.uc create mode 100755 exported/Engine/Classes/SoundNodeAmbientNonLoop.uc create mode 100755 exported/Engine/Classes/SoundNodeAmbientNonLoopToggle.uc create mode 100755 exported/Engine/Classes/SoundNodeAttenuation.uc create mode 100755 exported/Engine/Classes/SoundNodeAttenuationAndGain.uc create mode 100755 exported/Engine/Classes/SoundNodeConcatenator.uc create mode 100755 exported/Engine/Classes/SoundNodeConcatenatorRadio.uc create mode 100755 exported/Engine/Classes/SoundNodeDelay.uc create mode 100755 exported/Engine/Classes/SoundNodeDistanceCrossFade.uc create mode 100755 exported/Engine/Classes/SoundNodeDoppler.uc create mode 100755 exported/Engine/Classes/SoundNodeEnveloper.uc create mode 100755 exported/Engine/Classes/SoundNodeLooping.uc create mode 100755 exported/Engine/Classes/SoundNodeMature.uc create mode 100755 exported/Engine/Classes/SoundNodeMixer.uc create mode 100755 exported/Engine/Classes/SoundNodeModulator.uc create mode 100755 exported/Engine/Classes/SoundNodeModulatorContinuous.uc create mode 100755 exported/Engine/Classes/SoundNodeOscillator.uc create mode 100755 exported/Engine/Classes/SoundNodeRandom.uc create mode 100755 exported/Engine/Classes/SoundNodeWave.uc create mode 100755 exported/Engine/Classes/SoundNodeWaveParam.uc create mode 100755 exported/Engine/Classes/SoundNodeWaveStreaming.uc create mode 100755 exported/Engine/Classes/SpeechRecognition.uc create mode 100755 exported/Engine/Classes/SpeedTree.uc create mode 100755 exported/Engine/Classes/SpeedTreeActor.uc create mode 100755 exported/Engine/Classes/SpeedTreeActorFactory.uc create mode 100755 exported/Engine/Classes/SpeedTreeComponent.uc create mode 100755 exported/Engine/Classes/SpeedTreeComponentFactory.uc create mode 100755 exported/Engine/Classes/SphericalHarmonicLightComponent.uc create mode 100755 exported/Engine/Classes/SplineActor.uc create mode 100755 exported/Engine/Classes/SplineAudioComponent.uc create mode 100755 exported/Engine/Classes/SplineComponent.uc create mode 100755 exported/Engine/Classes/SplineComponentSimplified.uc create mode 100755 exported/Engine/Classes/SplineLoftActor.uc create mode 100755 exported/Engine/Classes/SplineLoftActorMovable.uc create mode 100755 exported/Engine/Classes/SplineMeshComponent.uc create mode 100755 exported/Engine/Classes/SpotLight.uc create mode 100755 exported/Engine/Classes/SpotLightComponent.uc create mode 100755 exported/Engine/Classes/SpotLightMovable.uc create mode 100755 exported/Engine/Classes/SpotLightToggleable.uc create mode 100755 exported/Engine/Classes/SpriteComponent.uc create mode 100755 exported/Engine/Classes/StaticLightCollectionActor.uc create mode 100755 exported/Engine/Classes/StaticMeshActor.uc create mode 100755 exported/Engine/Classes/StaticMeshActorBase.uc create mode 100755 exported/Engine/Classes/StaticMeshActorBasedOnExtremeContent.uc create mode 100755 exported/Engine/Classes/StaticMeshCollectionActor.uc create mode 100755 exported/Engine/Classes/StaticMeshComponent.uc create mode 100755 exported/Engine/Classes/StaticMeshComponentFactory.uc create mode 100755 exported/Engine/Classes/StringsTag.uc create mode 100755 exported/Engine/Classes/Surface.uc create mode 100755 exported/Engine/Classes/SwatTurnReachSpec.uc create mode 100755 exported/Engine/Classes/TargetPoint.uc create mode 100755 exported/Engine/Classes/TeamInfo.uc create mode 100755 exported/Engine/Classes/TeleportReachSpec.uc create mode 100755 exported/Engine/Classes/Teleporter.uc create mode 100755 exported/Engine/Classes/Terrain.uc create mode 100755 exported/Engine/Classes/TerrainComponent.uc create mode 100755 exported/Engine/Classes/TerrainLayerSetup.uc create mode 100755 exported/Engine/Classes/TerrainMaterial.uc create mode 100755 exported/Engine/Classes/TerrainWeightMapTexture.uc create mode 100755 exported/Engine/Classes/TestSplittingVolume.uc create mode 100755 exported/Engine/Classes/Texture.uc create mode 100755 exported/Engine/Classes/Texture2D.uc create mode 100755 exported/Engine/Classes/Texture2DComposite.uc create mode 100755 exported/Engine/Classes/Texture2DDynamic.uc create mode 100755 exported/Engine/Classes/TextureCube.uc create mode 100755 exported/Engine/Classes/TextureFlipBook.uc create mode 100755 exported/Engine/Classes/TextureMovie.uc create mode 100755 exported/Engine/Classes/TextureRenderTarget.uc create mode 100755 exported/Engine/Classes/TextureRenderTarget2D.uc create mode 100755 exported/Engine/Classes/TextureRenderTargetCube.uc create mode 100755 exported/Engine/Classes/TgAnimTreeComment.uc create mode 100755 exported/Engine/Classes/TgSilhouetteComponent.uc create mode 100755 exported/Engine/Classes/TranslationContext.uc create mode 100755 exported/Engine/Classes/TranslatorTag.uc create mode 100755 exported/Engine/Classes/Trigger.uc create mode 100755 exported/Engine/Classes/TriggerStreamingLevel.uc create mode 100755 exported/Engine/Classes/TriggerVolume.uc create mode 100755 exported/Engine/Classes/Trigger_Dynamic.uc create mode 100755 exported/Engine/Classes/Trigger_LOS.uc create mode 100755 exported/Engine/Classes/Trigger_PawnsOnly.uc create mode 100755 exported/Engine/Classes/TriggeredPath.uc create mode 100755 exported/Engine/Classes/TwitterIntegrationBase.uc create mode 100755 exported/Engine/Classes/UICharacterSummary.uc create mode 100755 exported/Engine/Classes/UIDataProvider.uc create mode 100755 exported/Engine/Classes/UIDataProvider_MenuItem.uc create mode 100755 exported/Engine/Classes/UIDataProvider_OnlineFriendMessages.uc create mode 100755 exported/Engine/Classes/UIDataProvider_OnlineFriends.uc create mode 100755 exported/Engine/Classes/UIDataProvider_OnlinePartyChatList.uc create mode 100755 exported/Engine/Classes/UIDataProvider_OnlinePlayerDataBase.uc create mode 100755 exported/Engine/Classes/UIDataProvider_OnlinePlayerStorage.uc create mode 100755 exported/Engine/Classes/UIDataProvider_OnlinePlayerStorageArray.uc create mode 100755 exported/Engine/Classes/UIDataProvider_OnlineProfileSettings.uc create mode 100755 exported/Engine/Classes/UIDataProvider_PlayerAchievements.uc create mode 100755 exported/Engine/Classes/UIDataProvider_Settings.uc create mode 100755 exported/Engine/Classes/UIDataProvider_SettingsArray.uc create mode 100755 exported/Engine/Classes/UIDataStore.uc create mode 100755 exported/Engine/Classes/UIDataStorePublisher.uc create mode 100755 exported/Engine/Classes/UIDataStoreSubscriber.uc create mode 100755 exported/Engine/Classes/UIDataStore_DynamicResource.uc create mode 100755 exported/Engine/Classes/UIDataStore_Fonts.uc create mode 100755 exported/Engine/Classes/UIDataStore_GameResource.uc create mode 100755 exported/Engine/Classes/UIDataStore_GameState.uc create mode 100755 exported/Engine/Classes/UIDataStore_InputAlias.uc create mode 100755 exported/Engine/Classes/UIDataStore_MenuItems.uc create mode 100755 exported/Engine/Classes/UIDataStore_OnlineGameSearch.uc create mode 100755 exported/Engine/Classes/UIDataStore_OnlineGameSettings.uc create mode 100755 exported/Engine/Classes/UIDataStore_OnlinePlayerData.uc create mode 100755 exported/Engine/Classes/UIDataStore_OnlineStats.uc create mode 100755 exported/Engine/Classes/UIDataStore_Registry.uc create mode 100755 exported/Engine/Classes/UIDataStore_Remote.uc create mode 100755 exported/Engine/Classes/UIDataStore_Settings.uc create mode 100755 exported/Engine/Classes/UIDataStore_StringAliasMap.uc create mode 100755 exported/Engine/Classes/UIDataStore_StringBase.uc create mode 100755 exported/Engine/Classes/UIGameInfoSummary.uc create mode 100755 exported/Engine/Classes/UIInteraction.uc create mode 100755 exported/Engine/Classes/UIManager.uc create mode 100755 exported/Engine/Classes/UIMapSummary.uc create mode 100755 exported/Engine/Classes/UIPropertyDataProvider.uc create mode 100755 exported/Engine/Classes/UIResourceCombinationProvider.uc create mode 100755 exported/Engine/Classes/UIResourceDataProvider.uc create mode 100755 exported/Engine/Classes/UIRoot.uc create mode 100755 exported/Engine/Classes/UISceneClient.uc create mode 100755 exported/Engine/Classes/UISoundTheme.uc create mode 100755 exported/Engine/Classes/UIWeaponSummary.uc create mode 100755 exported/Engine/Classes/UberPostProcessEffect.uc create mode 100755 exported/Engine/Classes/UserCloudFileCloudSaveSystemDataBlobStore.uc create mode 100755 exported/Engine/Classes/UserCloudFileInterface.uc create mode 100755 exported/Engine/Classes/Vehicle.uc create mode 100755 exported/Engine/Classes/Volume.uc create mode 100755 exported/Engine/Classes/VolumePathNode.uc create mode 100755 exported/Engine/Classes/VolumeTimer.uc create mode 100755 exported/Engine/Classes/WallTransReachSpec.uc create mode 100755 exported/Engine/Classes/WaterVolume.uc create mode 100755 exported/Engine/Classes/WaveFormBase.uc create mode 100755 exported/Engine/Classes/Weapon.uc create mode 100755 exported/Engine/Classes/WindDirectionalSource.uc create mode 100755 exported/Engine/Classes/WindDirectionalSourceComponent.uc create mode 100755 exported/Engine/Classes/WindPointSource.uc create mode 100755 exported/Engine/Classes/WindPointSourceComponent.uc create mode 100755 exported/Engine/Classes/WorldAttractor.uc create mode 100755 exported/Engine/Classes/WorldInfo.uc create mode 100755 exported/Engine/Classes/ZoneInfo.uc create mode 100755 exported/GameFramework/Classes/DebugCameraController.uc create mode 100755 exported/GameFramework/Classes/DebugCameraHUD.uc create mode 100755 exported/GameFramework/Classes/DebugCameraInput.uc create mode 100755 exported/GameFramework/Classes/DynamicGameCrowdDestination.uc create mode 100755 exported/GameFramework/Classes/DynamicSpriteComponent.uc create mode 100755 exported/GameFramework/Classes/FrameworkGame.uc create mode 100755 exported/GameFramework/Classes/GameAICmd_Hover_MoveToGoal.uc create mode 100755 exported/GameFramework/Classes/GameAICmd_Hover_MoveToGoal_Mesh.uc create mode 100755 exported/GameFramework/Classes/GameAICommand.uc create mode 100755 exported/GameFramework/Classes/GameAIController.uc create mode 100755 exported/GameFramework/Classes/GameCameraBase.uc create mode 100755 exported/GameFramework/Classes/GameCameraBlockingVolume.uc create mode 100755 exported/GameFramework/Classes/GameCheatManager.uc create mode 100755 exported/GameFramework/Classes/GameCrowdAgent.uc create mode 100755 exported/GameFramework/Classes/GameCrowdAgentBehavior.uc create mode 100755 exported/GameFramework/Classes/GameCrowdAgentSM.uc create mode 100755 exported/GameFramework/Classes/GameCrowdAgentSkeletal.uc create mode 100755 exported/GameFramework/Classes/GameCrowdBehaviorPoint.uc create mode 100755 exported/GameFramework/Classes/GameCrowdBehavior_PlayAnimation.uc create mode 100755 exported/GameFramework/Classes/GameCrowdBehavior_RunFromPanic.uc create mode 100755 exported/GameFramework/Classes/GameCrowdBehavior_WaitForGroup.uc create mode 100755 exported/GameFramework/Classes/GameCrowdBehavior_WaitInQueue.uc create mode 100755 exported/GameFramework/Classes/GameCrowdDestination.uc create mode 100755 exported/GameFramework/Classes/GameCrowdDestinationQueuePoint.uc create mode 100755 exported/GameFramework/Classes/GameCrowdGroup.uc create mode 100755 exported/GameFramework/Classes/GameCrowdInfoVolume.uc create mode 100755 exported/GameFramework/Classes/GameCrowdInteractionDestination.uc create mode 100755 exported/GameFramework/Classes/GameCrowdInteractionPoint.uc create mode 100755 exported/GameFramework/Classes/GameCrowdPopulationManager.uc create mode 100755 exported/GameFramework/Classes/GameCrowdReplicationActor.uc create mode 100755 exported/GameFramework/Classes/GameCrowdSpawnInterface.uc create mode 100755 exported/GameFramework/Classes/GameCrowdSpawnRelativeActor.uc create mode 100755 exported/GameFramework/Classes/GameCrowdSpawnerInterface.uc create mode 100755 exported/GameFramework/Classes/GameCrowd_ListOfAgents.uc create mode 100755 exported/GameFramework/Classes/GameDestinationConnRenderingComponent.uc create mode 100755 exported/GameFramework/Classes/GameExplosion.uc create mode 100755 exported/GameFramework/Classes/GameExplosionActor.uc create mode 100755 exported/GameFramework/Classes/GameExplosionContent.uc create mode 100755 exported/GameFramework/Classes/GameFixedCamera.uc create mode 100755 exported/GameFramework/Classes/GameFramework.UPKG create mode 100755 exported/GameFramework/Classes/GameKActorSpawnableEffect.uc create mode 100755 exported/GameFramework/Classes/GamePawn.uc create mode 100755 exported/GameFramework/Classes/GamePlayerCamera.uc create mode 100755 exported/GameFramework/Classes/GamePlayerController.uc create mode 100755 exported/GameFramework/Classes/GameSkelCtrl_Recoil.uc create mode 100755 exported/GameFramework/Classes/GameSpecialMove.uc create mode 100755 exported/GameFramework/Classes/GameStateObject.uc create mode 100755 exported/GameFramework/Classes/GameStatsAggregator.uc create mode 100755 exported/GameFramework/Classes/GameThirdPersonCamera.uc create mode 100755 exported/GameFramework/Classes/GameThirdPersonCameraMode.uc create mode 100755 exported/GameFramework/Classes/GameThirdPersonCameraMode_Default.uc create mode 100755 exported/GameFramework/Classes/GameTypes.uc create mode 100755 exported/GameFramework/Classes/GameWaveForms.uc create mode 100755 exported/GameFramework/Classes/MobileDebugCameraController.uc create mode 100755 exported/GameFramework/Classes/MobileDebugCameraHUD.uc create mode 100755 exported/GameFramework/Classes/MobileDebugCameraInput.uc create mode 100755 exported/GameFramework/Classes/MobileHUD.uc create mode 100755 exported/GameFramework/Classes/MobileInputZone.uc create mode 100755 exported/GameFramework/Classes/MobileMenuBar.uc create mode 100755 exported/GameFramework/Classes/MobileMenuBarItem.uc create mode 100755 exported/GameFramework/Classes/MobileMenuButton.uc create mode 100755 exported/GameFramework/Classes/MobileMenuElement.uc create mode 100755 exported/GameFramework/Classes/MobileMenuGame.uc create mode 100755 exported/GameFramework/Classes/MobileMenuImage.uc create mode 100755 exported/GameFramework/Classes/MobileMenuInventory.uc create mode 100755 exported/GameFramework/Classes/MobileMenuLabel.uc create mode 100755 exported/GameFramework/Classes/MobileMenuList.uc create mode 100755 exported/GameFramework/Classes/MobileMenuListItem.uc create mode 100755 exported/GameFramework/Classes/MobileMenuObject.uc create mode 100755 exported/GameFramework/Classes/MobileMenuObjectProxy.uc create mode 100755 exported/GameFramework/Classes/MobileMenuPlayerController.uc create mode 100755 exported/GameFramework/Classes/MobileMenuScene.uc create mode 100755 exported/GameFramework/Classes/MobilePlayerInput.uc create mode 100755 exported/GameFramework/Classes/MobileSecondaryViewportClient.uc create mode 100755 exported/GameFramework/Classes/MobileTouchInputVolume.uc create mode 100755 exported/GameFramework/Classes/NavMeshGoal_OutOfViewFrom.uc create mode 100755 exported/GameFramework/Classes/NavMeshPath_BiasAgainstPolysWithinDistanceOfLocations.uc create mode 100755 exported/GameFramework/Classes/PMESTG_LeaveADecalBase.uc create mode 100755 exported/GameFramework/Classes/PlayerCollectorGame.uc create mode 100755 exported/GameFramework/Classes/SecondaryViewportClient.uc create mode 100755 exported/GameFramework/Classes/SeqAct_ControlGameMovie.uc create mode 100755 exported/GameFramework/Classes/SeqAct_Deproject.uc create mode 100755 exported/GameFramework/Classes/SeqAct_GameCrowdPopulationManagerToggle.uc create mode 100755 exported/GameFramework/Classes/SeqAct_GameCrowdSpawner.uc create mode 100755 exported/GameFramework/Classes/SeqAct_MobileAddInputZones.uc create mode 100755 exported/GameFramework/Classes/SeqAct_MobileClearInputZones.uc create mode 100755 exported/GameFramework/Classes/SeqAct_MobileRemoveInputZone.uc create mode 100755 exported/GameFramework/Classes/SeqAct_MobileSaveLoadValue.uc create mode 100755 exported/GameFramework/Classes/SeqAct_ModifyProperty.uc create mode 100755 exported/GameFramework/Classes/SeqAct_PlayAgentAnimation.uc create mode 100755 exported/GameFramework/Classes/SeqAct_ToggleMouseCursor.uc create mode 100755 exported/GameFramework/Classes/SeqEvent_CrowdAgentReachedDestination.uc create mode 100755 exported/GameFramework/Classes/SeqEvent_HudRender.uc create mode 100755 exported/GameFramework/Classes/SeqEvent_HudRenderImage.uc create mode 100755 exported/GameFramework/Classes/SeqEvent_HudRenderText.uc create mode 100755 exported/GameFramework/Classes/SeqEvent_MobileBase.uc create mode 100755 exported/GameFramework/Classes/SeqEvent_MobileButton.uc create mode 100755 exported/GameFramework/Classes/SeqEvent_MobileInput.uc create mode 100755 exported/GameFramework/Classes/SeqEvent_MobileLook.uc create mode 100755 exported/GameFramework/Classes/SeqEvent_MobileMotion.uc create mode 100755 exported/GameFramework/Classes/SeqEvent_MobileObjectPicker.uc create mode 100755 exported/GameFramework/Classes/SeqEvent_MobileRawInput.uc create mode 100755 exported/GameFramework/Classes/SeqEvent_MobileSwipe.uc create mode 100755 exported/GameFramework/Classes/SeqEvent_MobileTouchInputVolume.uc create mode 100755 exported/GameFramework/Classes/SeqEvent_MobileZoneBase.uc create mode 100755 exported/GameFramework/Classes/TouchableElement3D.uc create mode 100755 exported/IpDrv/Classes/ClientBeaconAddressResolver.uc create mode 100755 exported/IpDrv/Classes/HelloWeb.uc create mode 100755 exported/IpDrv/Classes/ImageServer.uc create mode 100755 exported/IpDrv/Classes/InternetLink.uc create mode 100755 exported/IpDrv/Classes/IpDrv.UPKG create mode 100755 exported/IpDrv/Classes/MCPBase.uc create mode 100755 exported/IpDrv/Classes/McpClashMobBase.uc create mode 100755 exported/IpDrv/Classes/McpClashMobFileDownload.uc create mode 100755 exported/IpDrv/Classes/McpClashMobManager.uc create mode 100755 exported/IpDrv/Classes/McpGroupsBase.uc create mode 100755 exported/IpDrv/Classes/McpGroupsManager.uc create mode 100755 exported/IpDrv/Classes/McpIdMappingBase.uc create mode 100755 exported/IpDrv/Classes/McpIdMappingManager.uc create mode 100755 exported/IpDrv/Classes/McpManagedValueManager.uc create mode 100755 exported/IpDrv/Classes/McpManagedValueManagerBase.uc create mode 100755 exported/IpDrv/Classes/McpMessageBase.uc create mode 100755 exported/IpDrv/Classes/McpMessageManager.uc create mode 100755 exported/IpDrv/Classes/McpServerTimeBase.uc create mode 100755 exported/IpDrv/Classes/McpServerTimeManager.uc create mode 100755 exported/IpDrv/Classes/McpServiceBase.uc create mode 100755 exported/IpDrv/Classes/McpServiceConfig.uc create mode 100755 exported/IpDrv/Classes/McpUserCloudFileDownload.uc create mode 100755 exported/IpDrv/Classes/McpUserInventoryBase.uc create mode 100755 exported/IpDrv/Classes/McpUserInventoryManager.uc create mode 100755 exported/IpDrv/Classes/McpUserManager.uc create mode 100755 exported/IpDrv/Classes/McpUserManagerBase.uc create mode 100755 exported/IpDrv/Classes/MeshBeacon.uc create mode 100755 exported/IpDrv/Classes/MeshBeaconClient.uc create mode 100755 exported/IpDrv/Classes/MeshBeaconHost.uc create mode 100755 exported/IpDrv/Classes/OnlineAuthInterfaceImpl.uc create mode 100755 exported/IpDrv/Classes/OnlineEventsInterfaceMcp.uc create mode 100755 exported/IpDrv/Classes/OnlineGameInterfaceImpl.uc create mode 100755 exported/IpDrv/Classes/OnlineImageDownloaderWeb.uc create mode 100755 exported/IpDrv/Classes/OnlineImageDownloaderWebHelper.uc create mode 100755 exported/IpDrv/Classes/OnlineNewsInterfaceMcp.uc create mode 100755 exported/IpDrv/Classes/OnlinePlaylistManager.uc create mode 100755 exported/IpDrv/Classes/OnlinePlaylistProvider.uc create mode 100755 exported/IpDrv/Classes/OnlineSubsystemCommonImpl.uc create mode 100755 exported/IpDrv/Classes/OnlineTitleFileDownloadBase.uc create mode 100755 exported/IpDrv/Classes/OnlineTitleFileDownloadMcp.uc create mode 100755 exported/IpDrv/Classes/OnlineTitleFileDownloadWeb.uc create mode 100755 exported/IpDrv/Classes/PartyBeacon.uc create mode 100755 exported/IpDrv/Classes/PartyBeaconClient.uc create mode 100755 exported/IpDrv/Classes/PartyBeaconHost.uc create mode 100755 exported/IpDrv/Classes/TcpLink.uc create mode 100755 exported/IpDrv/Classes/TitleFileDownloadCache.uc create mode 100755 exported/IpDrv/Classes/UIDataStore_OnlinePlaylists.uc create mode 100755 exported/IpDrv/Classes/WebApplication.uc create mode 100755 exported/IpDrv/Classes/WebConnection.uc create mode 100755 exported/IpDrv/Classes/WebRequest.uc create mode 100755 exported/IpDrv/Classes/WebResponse.uc create mode 100755 exported/IpDrv/Classes/WebServer.uc create mode 100755 exported/OnlineSubsystemMcts/Classes/MctsOnlineSettings.uc create mode 100755 exported/OnlineSubsystemMcts/Classes/OnlineGameInterfaceMcts.uc create mode 100755 exported/OnlineSubsystemMcts/Classes/OnlineSubsystemMcts.UPKG create mode 100755 exported/OnlineSubsystemMcts/Classes/OnlineSubsystemMcts.uc create mode 100755 exported/OnlineSubsystemMcts/Classes/OnlineVoiceInterfaceMcts.uc create mode 100755 exported/PlatformCommon/Classes/None.uc create mode 100755 exported/PlatformCommon/Classes/PComBrowserInteraction.uc create mode 100755 exported/PlatformCommon/Classes/PComCheatManager.uc create mode 100755 exported/PlatformCommon/Classes/PComGameEngine.uc create mode 100755 exported/PlatformCommon/Classes/PComGameViewportClient.uc create mode 100755 exported/PlatformCommon/Classes/PComImageDownloader.uc create mode 100755 exported/PlatformCommon/Classes/PComInputLightingEffect.uc create mode 100755 exported/PlatformCommon/Classes/PComJsonHandler.uc create mode 100755 exported/PlatformCommon/Classes/PComMusicTheme.uc create mode 100755 exported/PlatformCommon/Classes/PComMusicThemeFactory.uc create mode 100755 exported/PlatformCommon/Classes/PComMusicThemePlayer.uc create mode 100755 exported/PlatformCommon/Classes/PComMusicThemeSyncActor.uc create mode 100755 exported/PlatformCommon/Classes/PComOpenBroadcaster.uc create mode 100755 exported/PlatformCommon/Classes/PComPerformanceCaptureBase.uc create mode 100755 exported/PlatformCommon/Classes/PComPerformanceCaptureGame.uc create mode 100755 exported/PlatformCommon/Classes/PComPerformanceCaptureNode.uc create mode 100755 exported/PlatformCommon/Classes/PComPictureInPicture.uc create mode 100755 exported/PlatformCommon/Classes/PComPictureInPictureScene.uc create mode 100755 exported/PlatformCommon/Classes/PComPlayerController.uc create mode 100755 exported/PlatformCommon/Classes/PComPlayerInput.uc create mode 100755 exported/PlatformCommon/Classes/PComPlayerProfile.uc create mode 100755 exported/PlatformCommon/Classes/PComPositionHistoryComponent.uc create mode 100755 exported/PlatformCommon/Classes/PComPositionHistoryServerComponent.uc create mode 100755 exported/PlatformCommon/Classes/PComRepInfo_Game.uc create mode 100755 exported/PlatformCommon/Classes/PComSeqAct_PlayMusicEvent.uc create mode 100755 exported/PlatformCommon/Classes/PComStructures.uc create mode 100755 exported/PlatformCommon/Classes/PComSupportCommands.uc create mode 100755 exported/PlatformCommon/Classes/PComUIManagerBase.uc create mode 100755 exported/PlatformCommon/Classes/PComUtilityFunctions.uc create mode 100755 exported/PlatformCommon/Classes/PComVideoPlayer.uc create mode 100755 exported/PlatformCommon/Classes/PComVoiceInterfaceCurseConfig.uc create mode 100755 exported/PlatformCommon/Classes/PlatformCommon.UPKG create mode 100755 exported/PlatformCommon/Classes/SearFiles.uc create mode 100755 exported/TgClient/Classes/DelayQueueInterface.uc create mode 100755 exported/TgClient/Classes/None.uc create mode 100755 exported/TgClient/Classes/TgBlinder.uc create mode 100755 exported/TgClient/Classes/TgBrowserManager.uc create mode 100755 exported/TgClient/Classes/TgChatData.uc create mode 100755 exported/TgClient/Classes/TgClient.UPKG create mode 100755 exported/TgClient/Classes/TgClientHUD.uc create mode 100755 exported/TgClient/Classes/TgDataChunk.uc create mode 100755 exported/TgClient/Classes/TgDataGroup_Game.uc create mode 100755 exported/TgClient/Classes/TgDataHandler.uc create mode 100755 exported/TgClient/Classes/TgDataManager.uc create mode 100755 exported/TgClient/Classes/TgDataObject.uc create mode 100755 exported/TgClient/Classes/TgData_Cards.uc create mode 100755 exported/TgClient/Classes/TgData_EOM.uc create mode 100755 exported/TgClient/Classes/TgData_Notifications.uc create mode 100755 exported/TgClient/Classes/TgDevMenuMoviePlayer.uc create mode 100755 exported/TgClient/Classes/TgGFxGroup.uc create mode 100755 exported/TgClient/Classes/TgGameDC_Chat.uc create mode 100755 exported/TgClient/Classes/TgGameDC_Device.uc create mode 100755 exported/TgClient/Classes/TgGameDC_DeviceList.uc create mode 100755 exported/TgClient/Classes/TgGameDC_Effect.uc create mode 100755 exported/TgClient/Classes/TgGameDC_EffectList.uc create mode 100755 exported/TgClient/Classes/TgGameDC_Game.uc create mode 100755 exported/TgClient/Classes/TgGameDC_Guardian.uc create mode 100755 exported/TgClient/Classes/TgGameDC_LocalPlayer.uc create mode 100755 exported/TgClient/Classes/TgGameDC_MapEntity.uc create mode 100755 exported/TgClient/Classes/TgGameDC_Minion.uc create mode 100755 exported/TgClient/Classes/TgGameDC_Player.uc create mode 100755 exported/TgClient/Classes/TgGameDC_PlayerVitals.uc create mode 100755 exported/TgClient/Classes/TgGameDC_RespawnLocation.uc create mode 100755 exported/TgClient/Classes/TgGameDC_Target.uc create mode 100755 exported/TgClient/Classes/TgGameDC_Team.uc create mode 100755 exported/TgClient/Classes/TgGameDC_Tower.uc create mode 100755 exported/TgClient/Classes/TgGameDC_Turret.uc create mode 100755 exported/TgClient/Classes/TgGameDataHandler.uc create mode 100755 exported/TgClient/Classes/TgGameHUD.uc create mode 100755 exported/TgClient/Classes/TgGameLaunch.uc create mode 100755 exported/TgClient/Classes/TgGameSceneManager.uc create mode 100755 exported/TgClient/Classes/TgGameViewportClient.uc create mode 100755 exported/TgClient/Classes/TgGfxChatModal.uc create mode 100755 exported/TgClient/Classes/TgGfxCursor.uc create mode 100755 exported/TgClient/Classes/TgGfxFriendManagement.uc create mode 100755 exported/TgClient/Classes/TgGfxScene.uc create mode 100755 exported/TgClient/Classes/TgGfxTeamInvite.uc create mode 100755 exported/TgClient/Classes/TgLobbyHUD.uc create mode 100755 exported/TgClient/Classes/TgMiniMap.uc create mode 100755 exported/TgClient/Classes/TgMiniMap_Targeting.uc create mode 100755 exported/TgClient/Classes/TgPartyManager.uc create mode 100755 exported/TgClient/Classes/TgRewardCenterManager.uc create mode 100755 exported/TgClient/Classes/TgSceneManager.uc create mode 100755 exported/TgClient/Classes/TgSetting.uc create mode 100755 exported/TgClient/Classes/TgSettingsManager.uc create mode 100755 exported/TgClient/Classes/TgSpectatorHUD.uc create mode 100755 exported/TgClient/Classes/TgStreamManager.uc create mode 100755 exported/TgClient/Classes/TgSynchronizedTimer.uc create mode 100755 exported/TgClient/Classes/TgThreatModel.uc create mode 100755 exported/TgClient/Classes/UIAcademy.uc create mode 100755 exported/TgClient/Classes/UIAccountLinkPopup.uc create mode 100755 exported/TgClient/Classes/UIAchievementPopups.uc create mode 100755 exported/TgClient/Classes/UIAcquisition.uc create mode 100755 exported/TgClient/Classes/UIBackground.uc create mode 100755 exported/TgClient/Classes/UIChampion.uc create mode 100755 exported/TgClient/Classes/UIChampionSelect.uc create mode 100755 exported/TgClient/Classes/UIChatTab.uc create mode 100755 exported/TgClient/Classes/UIChests.uc create mode 100755 exported/TgClient/Classes/UICompetitive.uc create mode 100755 exported/TgClient/Classes/UICompetitivePopupWelcome.uc create mode 100755 exported/TgClient/Classes/UICompetitiveRankChange.uc create mode 100755 exported/TgClient/Classes/UICompetitiveRankDecay.uc create mode 100755 exported/TgClient/Classes/UIComponent.uc create mode 100755 exported/TgClient/Classes/UIComponentPool.uc create mode 100755 exported/TgClient/Classes/UIComponent_AbilityPointsPool.uc create mode 100755 exported/TgClient/Classes/UIComponent_AcquisitionCarousel.uc create mode 100755 exported/TgClient/Classes/UIComponent_ChampionOverview.uc create mode 100755 exported/TgClient/Classes/UIComponent_ChampionRankRow.uc create mode 100755 exported/TgClient/Classes/UIComponent_ChampionSimple.uc create mode 100755 exported/TgClient/Classes/UIComponent_CompetitiveRankChange.uc create mode 100755 exported/TgClient/Classes/UIComponent_CompetitiveRankedDecay.uc create mode 100755 exported/TgClient/Classes/UIComponent_CompetitiveWelcome.uc create mode 100755 exported/TgClient/Classes/UIComponent_DailyRewards.uc create mode 100755 exported/TgClient/Classes/UIComponent_DemonTeleportTimer.uc create mode 100755 exported/TgClient/Classes/UIComponent_Dropdown.uc create mode 100755 exported/TgClient/Classes/UIComponent_GamepadKey.uc create mode 100755 exported/TgClient/Classes/UIComponent_GenericTitleButtons.uc create mode 100755 exported/TgClient/Classes/UIComponent_GenericTitleInputButtons.uc create mode 100755 exported/TgClient/Classes/UIComponent_GoalReward.uc create mode 100755 exported/TgClient/Classes/UIComponent_HeaderTab.uc create mode 100755 exported/TgClient/Classes/UIComponent_HeaderTabs.uc create mode 100755 exported/TgClient/Classes/UIComponent_HealthBar.uc create mode 100755 exported/TgClient/Classes/UIComponent_HealthBarDamageOverlay.uc create mode 100755 exported/TgClient/Classes/UIComponent_HealthBar_Overlay.uc create mode 100755 exported/TgClient/Classes/UIComponent_HealthBar_Overlay_Deployable.uc create mode 100755 exported/TgClient/Classes/UIComponent_HealthBar_Overlay_Player.uc create mode 100755 exported/TgClient/Classes/UIComponent_HealthBar_Player.uc create mode 100755 exported/TgClient/Classes/UIComponent_HoldPrompt.uc create mode 100755 exported/TgClient/Classes/UIComponent_HudScoreTDM.uc create mode 100755 exported/TgClient/Classes/UIComponent_HudSkillIcon.uc create mode 100755 exported/TgClient/Classes/UIComponent_HudSkillIcon_Ult.uc create mode 100755 exported/TgClient/Classes/UIComponent_IconTF.uc create mode 100755 exported/TgClient/Classes/UIComponent_Interactable.uc create mode 100755 exported/TgClient/Classes/UIComponent_Interactable_LobbyEquipSlotItem.uc create mode 100755 exported/TgClient/Classes/UIComponent_Interactable_LobbySlotItem.uc create mode 100755 exported/TgClient/Classes/UIComponent_Item.uc create mode 100755 exported/TgClient/Classes/UIComponent_ItemIcon.uc create mode 100755 exported/TgClient/Classes/UIComponent_ItemMini.uc create mode 100755 exported/TgClient/Classes/UIComponent_ItemObtainabilityBanner.uc create mode 100755 exported/TgClient/Classes/UIComponent_ItemTooltip.uc create mode 100755 exported/TgClient/Classes/UIComponent_Item_Card.uc create mode 100755 exported/TgClient/Classes/UIComponent_LeaderboardPlayer.uc create mode 100755 exported/TgClient/Classes/UIComponent_LeagueTierEntry.uc create mode 100755 exported/TgClient/Classes/UIComponent_LevelProgress.uc create mode 100755 exported/TgClient/Classes/UIComponent_LexTarget.uc create mode 100755 exported/TgClient/Classes/UIComponent_LexVengeance.uc create mode 100755 exported/TgClient/Classes/UIComponent_List.uc create mode 100755 exported/TgClient/Classes/UIComponent_MasteryRewardsEntry.uc create mode 100755 exported/TgClient/Classes/UIComponent_MasteryRewardsPopup.uc create mode 100755 exported/TgClient/Classes/UIComponent_MatchDisplay.uc create mode 100755 exported/TgClient/Classes/UIComponent_MatchPlayerEntry.uc create mode 100755 exported/TgClient/Classes/UIComponent_OracleSoulCharges.uc create mode 100755 exported/TgClient/Classes/UIComponent_OwlStealthBar.uc create mode 100755 exported/TgClient/Classes/UIComponent_OwnershipProgress.uc create mode 100755 exported/TgClient/Classes/UIComponent_PlayPanel.uc create mode 100755 exported/TgClient/Classes/UIComponent_Popup.uc create mode 100755 exported/TgClient/Classes/UIComponent_PopupManager.uc create mode 100755 exported/TgClient/Classes/UIComponent_PortraitBorder.uc create mode 100755 exported/TgClient/Classes/UIComponent_ProgressBarHorizontal.uc create mode 100755 exported/TgClient/Classes/UIComponent_Quest.uc create mode 100755 exported/TgClient/Classes/UIComponent_RankedEOMProgress.uc create mode 100755 exported/TgClient/Classes/UIComponent_RankedProgress.uc create mode 100755 exported/TgClient/Classes/UIComponent_ScrollBar.uc create mode 100755 exported/TgClient/Classes/UIComponent_SocialPlayer.uc create mode 100755 exported/TgClient/Classes/UIComponent_String.uc create mode 100755 exported/TgClient/Classes/UIComponent_StringWithCount.uc create mode 100755 exported/TgClient/Classes/UIComponent_TalentSelection.uc create mode 100755 exported/TgClient/Classes/UIComponent_Targeter.uc create mode 100755 exported/TgClient/Classes/UIComponent_TargeterManager.uc create mode 100755 exported/TgClient/Classes/UIComponent_Targeter_AstralMark.uc create mode 100755 exported/TgClient/Classes/UIComponent_Targeter_BracketTargeter.uc create mode 100755 exported/TgClient/Classes/UIComponent_Targeter_DimensionalLink.uc create mode 100755 exported/TgClient/Classes/UIComponent_Targeter_Headhunter.uc create mode 100755 exported/TgClient/Classes/UIComponent_Targeter_HuntersMark.uc create mode 100755 exported/TgClient/Classes/UIComponent_Targeter_PointTargeter.uc create mode 100755 exported/TgClient/Classes/UIComponent_Targeter_Protection.uc create mode 100755 exported/TgClient/Classes/UIComponent_Targeter_RestoreSoul.uc create mode 100755 exported/TgClient/Classes/UIComponent_TeamPortraits.uc create mode 100755 exported/TgClient/Classes/UIComponent_TelepunchTarget.uc create mode 100755 exported/TgClient/Classes/UIComponent_TitleTooltip.uc create mode 100755 exported/TgClient/Classes/UIComponent_TitlesView.uc create mode 100755 exported/TgClient/Classes/UIComponent_TitlesViewEntry.uc create mode 100755 exported/TgClient/Classes/UIComponent_Toggle.uc create mode 100755 exported/TgClient/Classes/UIComponent_TorvaldShieldBar.uc create mode 100755 exported/TgClient/Classes/UIComponent_TorvaldShieldText.uc create mode 100755 exported/TgClient/Classes/UICustomGame.uc create mode 100755 exported/TgClient/Classes/UIDailyReward.uc create mode 100755 exported/TgClient/Classes/UIData.uc create mode 100755 exported/TgClient/Classes/UIDataChampion.uc create mode 100755 exported/TgClient/Classes/UIDataChampions.uc create mode 100755 exported/TgClient/Classes/UIDataCommon.uc create mode 100755 exported/TgClient/Classes/UIDataGoals.uc create mode 100755 exported/TgClient/Classes/UIDataItem.uc create mode 100755 exported/TgClient/Classes/UIDataLeague.uc create mode 100755 exported/TgClient/Classes/UIDataLeagueManager.uc create mode 100755 exported/TgClient/Classes/UIDataLeaguePlayer.uc create mode 100755 exported/TgClient/Classes/UIDataLeagueTier.uc create mode 100755 exported/TgClient/Classes/UIDataManager.uc create mode 100755 exported/TgClient/Classes/UIDataObject.uc create mode 100755 exported/TgClient/Classes/UIDataPlayer.uc create mode 100755 exported/TgClient/Classes/UIDataPrice.uc create mode 100755 exported/TgClient/Classes/UIDataQueues.uc create mode 100755 exported/TgClient/Classes/UIDataSocial.uc create mode 100755 exported/TgClient/Classes/UIData_Goal.uc create mode 100755 exported/TgClient/Classes/UIData_LeaderboardPlayer.uc create mode 100755 exported/TgClient/Classes/UIData_LeagueEOM.uc create mode 100755 exported/TgClient/Classes/UIData_LeagueTierChange.uc create mode 100755 exported/TgClient/Classes/UIData_List.uc create mode 100755 exported/TgClient/Classes/UIData_List_TitleIcon.uc create mode 100755 exported/TgClient/Classes/UIData_LobbySlotItem.uc create mode 100755 exported/TgClient/Classes/UIData_MatchBoosterActivated.uc create mode 100755 exported/TgClient/Classes/UIData_MultiQueue.uc create mode 100755 exported/TgClient/Classes/UIData_PlayerMatchRecord.uc create mode 100755 exported/TgClient/Classes/UIData_PopupGeneric.uc create mode 100755 exported/TgClient/Classes/UIData_PopupInput.uc create mode 100755 exported/TgClient/Classes/UIData_Quest.uc create mode 100755 exported/TgClient/Classes/UIData_Queue.uc create mode 100755 exported/TgClient/Classes/UIData_String.uc create mode 100755 exported/TgClient/Classes/UIData_StringList.uc create mode 100755 exported/TgClient/Classes/UIData_StringWithCount.uc create mode 100755 exported/TgClient/Classes/UIData_String_Localized.uc create mode 100755 exported/TgClient/Classes/UIData_TitleQuantity.uc create mode 100755 exported/TgClient/Classes/UIEndOfMatchLobby.uc create mode 100755 exported/TgClient/Classes/UIFade.uc create mode 100755 exported/TgClient/Classes/UIFooter.uc create mode 100755 exported/TgClient/Classes/UIFullscreenPopup.uc create mode 100755 exported/TgClient/Classes/UIGameMoviePlayer.uc create mode 100755 exported/TgClient/Classes/UIHeader.uc create mode 100755 exported/TgClient/Classes/UIHome.uc create mode 100755 exported/TgClient/Classes/UIHud.uc create mode 100755 exported/TgClient/Classes/UIHudBinoculars.uc create mode 100755 exported/TgClient/Classes/UIHudBurns.uc create mode 100755 exported/TgClient/Classes/UIHudCards.uc create mode 100755 exported/TgClient/Classes/UIHudCenter.uc create mode 100755 exported/TgClient/Classes/UIHudChampionSelect.uc create mode 100755 exported/TgClient/Classes/UIHudChat.uc create mode 100755 exported/TgClient/Classes/UIHudChatBox.uc create mode 100755 exported/TgClient/Classes/UIHudCredits.uc create mode 100755 exported/TgClient/Classes/UIHudDebuff.uc create mode 100755 exported/TgClient/Classes/UIHudDecks.uc create mode 100755 exported/TgClient/Classes/UIHudEnemy.uc create mode 100755 exported/TgClient/Classes/UIHudKillFeed.uc create mode 100755 exported/TgClient/Classes/UIHudMenu.uc create mode 100755 exported/TgClient/Classes/UIHudMinimap.uc create mode 100755 exported/TgClient/Classes/UIHudNotify.uc create mode 100755 exported/TgClient/Classes/UIHudOverlays.uc create mode 100755 exported/TgClient/Classes/UIHudPlayer.uc create mode 100755 exported/TgClient/Classes/UIHudRecap.uc create mode 100755 exported/TgClient/Classes/UIHudResult.uc create mode 100755 exported/TgClient/Classes/UIHudScore.uc create mode 100755 exported/TgClient/Classes/UIHudScoreboard.uc create mode 100755 exported/TgClient/Classes/UIHudSkills.uc create mode 100755 exported/TgClient/Classes/UIHudSniper.uc create mode 100755 exported/TgClient/Classes/UIHudSpectator.uc create mode 100755 exported/TgClient/Classes/UIHudStrix.uc create mode 100755 exported/TgClient/Classes/UIHudTarget.uc create mode 100755 exported/TgClient/Classes/UIHudTeam.uc create mode 100755 exported/TgClient/Classes/UIHudTip.uc create mode 100755 exported/TgClient/Classes/UIHudVGS.uc create mode 100755 exported/TgClient/Classes/UIHudVGSData.uc create mode 100755 exported/TgClient/Classes/UIHudVoiceChat.uc create mode 100755 exported/TgClient/Classes/UIHudWaypoint.uc create mode 100755 exported/TgClient/Classes/UIInputPopup.uc create mode 100755 exported/TgClient/Classes/UIInteractable_Button.uc create mode 100755 exported/TgClient/Classes/UIInteractable_Button_ChampUnlock.uc create mode 100755 exported/TgClient/Classes/UIInteractable_Button_GamepadPrompt.uc create mode 100755 exported/TgClient/Classes/UIInteractable_Button_ItemPrice.uc create mode 100755 exported/TgClient/Classes/UIInteractable_Button_Price.uc create mode 100755 exported/TgClient/Classes/UIInteractable_Item.uc create mode 100755 exported/TgClient/Classes/UIInteractable_JsonPanel.uc create mode 100755 exported/TgClient/Classes/UIInteractable_JsonPanel_Carousel.uc create mode 100755 exported/TgClient/Classes/UIInteractable_NavPanel.uc create mode 100755 exported/TgClient/Classes/UIInteractable_NavPanel_Play.uc create mode 100755 exported/TgClient/Classes/UIInteractable_NavPanel_Quests.uc create mode 100755 exported/TgClient/Classes/UIInteractable_NavPanel_QuestsLocked.uc create mode 100755 exported/TgClient/Classes/UIInteractable_NavPanel_Queued.uc create mode 100755 exported/TgClient/Classes/UIItemLarge.uc create mode 100755 exported/TgClient/Classes/UILandingPanelManager.uc create mode 100755 exported/TgClient/Classes/UILeaderboard.uc create mode 100755 exported/TgClient/Classes/UILobbyChat.uc create mode 100755 exported/TgClient/Classes/UILogin.uc create mode 100755 exported/TgClient/Classes/UIMatchInvite.uc create mode 100755 exported/TgClient/Classes/UIMatchLobby.uc create mode 100755 exported/TgClient/Classes/UIMenuManager.uc create mode 100755 exported/TgClient/Classes/UIMoviePlayer.uc create mode 100755 exported/TgClient/Classes/UINotificationCenter.uc create mode 100755 exported/TgClient/Classes/UINotificationCenterJsonManager.uc create mode 100755 exported/TgClient/Classes/UIObject.uc create mode 100755 exported/TgClient/Classes/UIPlay.uc create mode 100755 exported/TgClient/Classes/UIPopup.uc create mode 100755 exported/TgClient/Classes/UIPopupCrafting.uc create mode 100755 exported/TgClient/Classes/UIPopupPartyManager.uc create mode 100755 exported/TgClient/Classes/UIPopup_MatchLobbyCustomize.uc create mode 100755 exported/TgClient/Classes/UIPopup_MatchLobbyCustomizeNew.uc create mode 100755 exported/TgClient/Classes/UIProfile.uc create mode 100755 exported/TgClient/Classes/UIProfileMini.uc create mode 100755 exported/TgClient/Classes/UIPurchaseGems.uc create mode 100755 exported/TgClient/Classes/UIQuestUtilities.uc create mode 100755 exported/TgClient/Classes/UIQuests.uc create mode 100755 exported/TgClient/Classes/UISafeFrame.uc create mode 100755 exported/TgClient/Classes/UIScene.uc create mode 100755 exported/TgClient/Classes/UIScene_SceneAsPopup.uc create mode 100755 exported/TgClient/Classes/UIScene_UIAccountLink.uc create mode 100755 exported/TgClient/Classes/UIScene_UIAcquisition.uc create mode 100755 exported/TgClient/Classes/UIScene_UIChampion.uc create mode 100755 exported/TgClient/Classes/UIScene_UICompetitive.uc create mode 100755 exported/TgClient/Classes/UIScene_UICompetitivePopupWelcome.uc create mode 100755 exported/TgClient/Classes/UIScene_UICompetitiveRankChange.uc create mode 100755 exported/TgClient/Classes/UIScene_UICompetitiveRankDecay.uc create mode 100755 exported/TgClient/Classes/UIScene_UICustomGame.uc create mode 100755 exported/TgClient/Classes/UIScene_UIDailyReward.uc create mode 100755 exported/TgClient/Classes/UIScene_UIEndOfMatchLobby.uc create mode 100755 exported/TgClient/Classes/UIScene_UIHome.uc create mode 100755 exported/TgClient/Classes/UIScene_UIHudBurns.uc create mode 100755 exported/TgClient/Classes/UIScene_UIHudCenter.uc create mode 100755 exported/TgClient/Classes/UIScene_UIHudDecks.uc create mode 100755 exported/TgClient/Classes/UIScene_UIHudScore.uc create mode 100755 exported/TgClient/Classes/UIScene_UIHudSkills.uc create mode 100755 exported/TgClient/Classes/UIScene_UIHudStrix.uc create mode 100755 exported/TgClient/Classes/UIScene_UILeaderboard.uc create mode 100755 exported/TgClient/Classes/UIScene_UIMatchLobby.uc create mode 100755 exported/TgClient/Classes/UIScene_UINotificationCenter.uc create mode 100755 exported/TgClient/Classes/UIScene_UIPlay.uc create mode 100755 exported/TgClient/Classes/UIScene_UIPopupCrafting.uc create mode 100755 exported/TgClient/Classes/UIScene_UIPopupGeneric.uc create mode 100755 exported/TgClient/Classes/UIScene_UIPopupGenericFullscreen.uc create mode 100755 exported/TgClient/Classes/UIScene_UIPopupInput.uc create mode 100755 exported/TgClient/Classes/UIScene_UIPopupPartyManager.uc create mode 100755 exported/TgClient/Classes/UIScene_UIProfile.uc create mode 100755 exported/TgClient/Classes/UIScene_UIQuests.uc create mode 100755 exported/TgClient/Classes/UIScene_UISettings.uc create mode 100755 exported/TgClient/Classes/UIScene_UIStore.uc create mode 100755 exported/TgClient/Classes/UIScene_UIStoreDetail.uc create mode 100755 exported/TgClient/Classes/UISettings.uc create mode 100755 exported/TgClient/Classes/UISkills.uc create mode 100755 exported/TgClient/Classes/UISocial.uc create mode 100755 exported/TgClient/Classes/UIStore.uc create mode 100755 exported/TgClient/Classes/UIStoreDetail.uc create mode 100755 exported/TgClient/Classes/UISubtitle.uc create mode 100755 exported/TgClient/Classes/UIWebBrowser.uc create mode 100755 exported/TgClient/Classes/UIWorldOverlay.uc create mode 100755 exported/TgGame/Classes/AlienFXManager.uc create mode 100755 exported/TgGame/Classes/Interface_AIAnnotation.uc create mode 100755 exported/TgGame/Classes/None.uc create mode 100755 exported/TgGame/Classes/TgAIAnnotation.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_AssignLane.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_CancelFiring.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_ClearCombatTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_ClearLaneMoveTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_ClearLastAttacker.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_ClearLookAtTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_ClearNavigationQueue.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_ClearRallyPoint.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_ClearSpreadLocation.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_FollowCombatTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_FollowLane.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_FollowPatrol.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_GroupUp.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_Juke.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_Jump.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_Leash.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_LookAtCapturePoint.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_LookAtCombatTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_LookAtFortress.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_LookAtLanepusher.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_LookAtSpawnRotation.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_LookAtTargetLKL.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_MoveAroundLanePusher.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_MoveBase.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_MoveToAssaultPosition.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_MoveToAvoidableProjectile.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_MoveToCapturePoint.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_MoveToCover.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_MoveToDamagingDeployable.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_MoveToDeployable.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_MoveToLanePusher.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_MoveToLanePusherFront.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_MoveToLaneTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_MoveToLaneVolume.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_MoveToRallyPoint.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_MoveToShield.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_MoveToTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_PauseAI.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_PlayEmote.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_PlayVGS.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_PurchaseBurnCards.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_PurchaseItems.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_PurchaseSkills.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_Regen.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_ReloadDevice.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_RunToOwner.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_RunToSpawn.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_RunToSpreadLocation.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectAllyAttackerAsTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTarget_FortressObjective.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTarget_LanepusherLastAttacker.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTarget_OwnerLastAttacker.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTargetsTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneCombatTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneCombatTarget_Jungle.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneCombatTarget_LastAttacker.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTargetAsCombatTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTarget_Jungle.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTarget_Minotaur.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectLanepusherCombatTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectLeashCombatTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectOwnerCombatTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectSquadCombatTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SelectThreatCombatTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SetAimDevice.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SetBotBehaviorState.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SpreadFromSquad.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_StopDevice.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_Strafe.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_SuggestSquadCombatTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_UpdateTargetLastKnownLocation.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_UseActive.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_UseConsumable.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_UseDevice.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorAction_Wiggle.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorComment.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorComposite.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorComposite_Gated.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorComposite_Parallel.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorComposite_Random.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorComposite_Sequence.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorComposite_SequenceAND.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorComposite_SequenceOR.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorComposite_SequenceScripted.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorComposite_SubTree.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_AmmoAfterShot.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_AmmoCostPerShot.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_AmmoCount.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CanPurchaseItems.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CanPurchaseSkills.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDamageable.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDamageableByDevice.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDamagedFriendlyGod.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDistanceFromCapturePoint.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDistanceOwner.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDropped.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetHasEffectCategory.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetHealthPercent.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetHealthPercentAfterAttack.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetInDeviceVolume.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetIsInMinotaurRadius.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetIsInTowerRadius.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetIsTargetOfFriendlyTowerOrMinotaur.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetPhysicsState.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_CurrentLevel.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DeltaGodsInCapturePoint.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DeviceIsFiring.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DeviceReadyToUse.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DifficultyLevel.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DistanceBase.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromAssaultPoint.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromAvoidableProjectile.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromCapturePoint.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromCombatTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromDamagingDeployable.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromFortressObjective.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromLanePusher.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromLaneTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromNavigationDestination.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromOwner.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromSelectedTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromShield.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromSpawn.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromSquadTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_Energy.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_GameType.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_HasActive.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_HasCombatTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_HasConsumable.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_HasEffectCategory.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_HasIncomingDamage.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_HasLaneTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_HasMoveTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_HasNavigation.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_HasSpreadLocation.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_HealthPercent.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_InsideDeviceVolume.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsActiveCapturePoint.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsActiveReady.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsAtCapturePoint.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsAtRallyPoint.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsAtSpawn.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsAttackingTaskForce.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsBotBehaviorState.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsCapturePointVisible.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetHittable.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetHostile.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetInFountain.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetInLeash.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetInSightRadius.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetLastAttacker.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetOfType.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetShielded.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetSquadTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetStealthed.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetVisible.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsDecoyState.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsDesiredAimDevice.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsFortressObjectiveVulnerable.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsInFortress.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsInHostileAbility.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsInMinotaurRadius.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsInTowerRadius.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsLanePusherVisible.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsLanepusherActive.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsLanepusherHostile.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsLanepusherLastAttackerOfType.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsLastAttackerOfType.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsLookingAtCapturePoint.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsLookingAtCombatTarget.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsMetaGameState.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsOutsideLeash.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsSafeToRecall.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsSpawnGateOpen.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsSquadTargetShielded.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsSquadTargetVisible.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsTargetOfEnemyTowerOrMinotaur.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsTargetTypeInLeash.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsTooFarFromLane.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsWithinCombatDistance.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_IsWithinDistance.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_LanepusherHealthPercent.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_ManaPercent.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_NearbyAllyAttacked.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_NearbyGodCount.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_NearbyGodDelta.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_NearbyTargetTypeCount.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_NearbyTargetTypeDelta.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_NearestTowerHealthPercent.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_NumDeaths.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsInCapturePointRadius.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsInLanePusherRadius.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsInTowerRadius.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsNearDeployable.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsNearProjectile.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_NumMinionsInTowerRadius.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_NumRallyPoints.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_NumberDevicesFiring.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_PetPhase.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_PhysicsState.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_ReturnAlways.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_SelectedTargetHealthPercent.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_SiegeScore.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_SquadAverageDistance.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_SquadTargetHealthPercent.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_TargetsDamageableByDevice.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_Taskforce.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_TeamDeathCount.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_TimeInPayloadMode.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_TimeSinceLanepusherTookDamage.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_TimeSinceLastTookDamage.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_Timer.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_VisibilityBase.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_WhatIsCombatTargetTargeting.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_WhatIsLastAttackerTargeting.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorCondition_WonLastPoint.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorNode.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorObject.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorSensor.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorSensor_Devices.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorSensor_Fortress.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorSensor_Gods.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorSensor_InHostileAbility.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorSensor_IncomingDamage.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorSensor_Lane.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorSensor_Leash.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorSensor_PurchaseSkills.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorSensor_RallyPoints.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorSensor_SafeToRecall.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorSensor_SightRadius.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorSensor_Towers.uc create mode 100755 exported/TgGame/Classes/TgAIBehaviorTree.uc create mode 100755 exported/TgGame/Classes/TgAIController.uc create mode 100755 exported/TgGame/Classes/TgAIController_Behavior.uc create mode 100755 exported/TgGame/Classes/TgAIController_BehaviorAerialDrone.uc create mode 100755 exported/TgGame/Classes/TgAIController_BehaviorChaosJuggernaut.uc create mode 100755 exported/TgGame/Classes/TgAIController_BehaviorGod.uc create mode 100755 exported/TgGame/Classes/TgAIController_BehaviorGodDisconnected.uc create mode 100755 exported/TgGame/Classes/TgAIController_BehaviorLaneNpc.uc create mode 100755 exported/TgGame/Classes/TgAIController_BehaviorMapNpc.uc create mode 100755 exported/TgGame/Classes/TgAIController_BehaviorPet.uc create mode 100755 exported/TgGame/Classes/TgAIController_BehaviorPetRanged.uc create mode 100755 exported/TgGame/Classes/TgAIController_BehaviorPet_LongTerm.uc create mode 100755 exported/TgGame/Classes/TgAIDirector.uc create mode 100755 exported/TgGame/Classes/TgAIInfluenceMap.uc create mode 100755 exported/TgGame/Classes/TgAIInfluenceMapRenderingComponent.uc create mode 100755 exported/TgGame/Classes/TgAILocalPositionSolver.uc create mode 100755 exported/TgGame/Classes/TgAILocalPositionSolver_God.uc create mode 100755 exported/TgGame/Classes/TgAILocalPositionSolver_Pet.uc create mode 100755 exported/TgGame/Classes/TgAIObstacleAvoidance.uc create mode 100755 exported/TgGame/Classes/TgAIObstacleAvoidanceRenderingComponent.uc create mode 100755 exported/TgGame/Classes/TgAIScout.uc create mode 100755 exported/TgGame/Classes/TgAISquad.uc create mode 100755 exported/TgGame/Classes/TgAISquad_Minion.uc create mode 100755 exported/TgGame/Classes/TgAISquad_Monster.uc create mode 100755 exported/TgGame/Classes/TgAISquad_MonsterBehaviorTree.uc create mode 100755 exported/TgGame/Classes/TgAITaskforceBlockingVolume.uc create mode 100755 exported/TgGame/Classes/TgAIUtility.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFilter.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFilter_AssaultRangeType.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFilter_CapturePoint.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFilter_DistanceFromPawn.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFilter_DistanceFromTarget.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFilter_GameState.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFilter_InsideActiveRallyPoint.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFilter_LoSToTarget.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFilter_LoSToTargetLastKnownLocation.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFilter_Payload.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFilter_StayInTargetFOV.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFunction.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFunction_CombatTargetDistance.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFunction_CombatTargetDistanceToNormal.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFunction_DistanceToPawn.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFunction_FortressDistance.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFunction_PawnDistanceToNormal.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityFunction_RandomUtility.uc create mode 100755 exported/TgGame/Classes/TgAIUtilityHandle.uc create mode 100755 exported/TgGame/Classes/TgAIUtilitySet.uc create mode 100755 exported/TgGame/Classes/TgAIVolume.uc create mode 100755 exported/TgGame/Classes/TgAchievement.uc create mode 100755 exported/TgGame/Classes/TgAchievement_ChampionKill.uc create mode 100755 exported/TgGame/Classes/TgAchievement_CounterAirDefense.uc create mode 100755 exported/TgGame/Classes/TgAchievement_Damage.uc create mode 100755 exported/TgGame/Classes/TgAchievement_DoubleKill.uc create mode 100755 exported/TgGame/Classes/TgAchievement_EnvironmentalDeath.uc create mode 100755 exported/TgGame/Classes/TgAchievement_FromTheGrave.uc create mode 100755 exported/TgGame/Classes/TgAchievement_HardCarry.uc create mode 100755 exported/TgGame/Classes/TgAchievement_Headshot.uc create mode 100755 exported/TgGame/Classes/TgAchievement_KillAfterRoundEnd.uc create mode 100755 exported/TgGame/Classes/TgAchievement_KillEndStreak.uc create mode 100755 exported/TgGame/Classes/TgAchievement_KillFromLowHealth.uc create mode 100755 exported/TgGame/Classes/TgAchievement_LastOneStanding.uc create mode 100755 exported/TgGame/Classes/TgAchievement_QuestionsLater.uc create mode 100755 exported/TgGame/Classes/TgAchievement_Sniper.uc create mode 100755 exported/TgGame/Classes/TgAchievement_Survivor.uc create mode 100755 exported/TgGame/Classes/TgActionPoint.uc create mode 100755 exported/TgGame/Classes/TgActorFactory.uc create mode 100755 exported/TgGame/Classes/TgActorFactoryTgEmitter_TeamColor.uc create mode 100755 exported/TgGame/Classes/TgActorFactory_TgStaticMeshActorCapturePoint.uc create mode 100755 exported/TgGame/Classes/TgActorFactory_TgStaticMeshActorTeamColor.uc create mode 100755 exported/TgGame/Classes/TgAimAccelerationCurves.uc create mode 100755 exported/TgGame/Classes/TgAimAssistKeyframe.uc create mode 100755 exported/TgGame/Classes/TgAkActor.uc create mode 100755 exported/TgGame/Classes/TgAkActorUnoccluded.uc create mode 100755 exported/TgGame/Classes/TgAkAudioManagement.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendBy1P3P.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByAmmo.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByBuffMonsterIntro.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByDirection.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByEmote.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByFall.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByFire.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByFireMode.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByFlying.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByHeadSkin.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByMountSkin.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByNodeName.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_BarrierTank.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_BombKing.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Darklord.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Drogoz.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Flak.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Lex.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Owl.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByPercent.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByPhase.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByPhysics.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByPosture.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByPosture_Player.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByProgressiveReload.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByRecoilTime.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendBySkin.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendBySpeed.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendBySpeedWithExhaustion.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByStartingPosture.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByTeleportBeacon.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendByWeaponSkin.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendInterpBySpeed.uc create mode 100755 exported/TgGame/Classes/TgAnimBlendPerBone.uc create mode 100755 exported/TgGame/Classes/TgAnimMetaData_InvisibleWallFailSafe.uc create mode 100755 exported/TgGame/Classes/TgAnimMetaData_MICScalarParameter.uc create mode 100755 exported/TgGame/Classes/TgAnimMetaData_MICScalarParameterExtended.uc create mode 100755 exported/TgGame/Classes/TgAnimMetaData_MaskingPlane.uc create mode 100755 exported/TgGame/Classes/TgAnimMetaData_MeshAccessory.uc create mode 100755 exported/TgGame/Classes/TgAnimMetaData_MeshAccessory_Mastery.uc create mode 100755 exported/TgGame/Classes/TgAnimMetaData_SkelControlKeyFrame.uc create mode 100755 exported/TgGame/Classes/TgAnimMetaData_SkelControl_BoneScale.uc create mode 100755 exported/TgGame/Classes/TgAnimMetaData_SkelControl_BoneScale_KeyFrame.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeAdditiveBlending.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeAimOffset.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeAimOffset_Charge.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendAnimsByDirection.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByAFK.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByAbilityDrag.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByAbilityDragChain.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByAbilityDragonSlam.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByAbilityFragGrenade.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByAbilityHyperShot.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByAbilityReversal.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByAbilitySimple.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByAbilitySmash.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByAbilityVine.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByAndroxusDrift.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByBlink.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByCombat.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByCombatWariness.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByDeviceEquipped.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByDrogozFlying.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByGameState.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByHealth.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByHitReaction.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByIntroduction.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByKnockdown.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByLobby.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByMeleeIdle.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByPhysics.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendBySlowFall.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByStrafe.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByVerticalAim.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByZoomPostFireTransition.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendByZoomTransition.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendList.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendList_EquipScreen.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendNPC.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeBlendPerBone_Bakasura_ConsumeMinion.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeChannelFire.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeChannelFire_Pounce.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeChannelFire_Spite.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeEmoteCustomAnim.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeEmoteSequence.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeEmoteSwitch.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeFidget.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeFitToDuration.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeJumpLeanOffset.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeLockableChannelFire.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeLog.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeMountSync.uc create mode 100755 exported/TgGame/Classes/TgAnimNodePlayFireAnim.uc create mode 100755 exported/TgGame/Classes/TgAnimNodePlayTgCameraAnim.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeRandom.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeSelfDestruct.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeSequence.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeSequenceByBoneRotation.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeSequence_ZhongKui_Exorcism.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeSimpleTransitioner.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeSlot.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeStance.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeStanceDualFire.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeStanceFireIntercept.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeStanceTransition.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeStanceTransitioner.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeStanceTransitionerSynchronized.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeTargeting.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeTiltTowardsVelocity.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeToggleWithTransition.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeToggleWithTransition_Disengage.uc create mode 100755 exported/TgGame/Classes/TgAnimNodeTriggerCameraAnim.uc create mode 100755 exported/TgGame/Classes/TgAnimNotifySkinData.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_AkEvent.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_ApplyRigidBodyPhysics.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_AudioGroup.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_CameraCut.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_Disappear.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_Footstep.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_InterpolateMorphTargetWeight.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_PlayParticleEffect_Skinned.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_PlayPetAnim.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_Sound.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_SpectatorSlomo.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_SwapToInhandWeaponMesh.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_ToggleInvisibleWall.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_ToggleRigidBodies.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_ToggleSocketSpecialFX.uc create mode 100755 exported/TgGame/Classes/TgAnimNotify_ViewShake.uc create mode 100755 exported/TgGame/Classes/TgAnimSequenceChain.uc create mode 100755 exported/TgGame/Classes/TgAnimTurnInPlace.uc create mode 100755 exported/TgGame/Classes/TgAnimTurnInPlace_Player.uc create mode 100755 exported/TgGame/Classes/TgAnimTurnInPlace_Rotator.uc create mode 100755 exported/TgGame/Classes/TgAssaultPoint.uc create mode 100755 exported/TgGame/Classes/TgAudioComponent.uc create mode 100755 exported/TgGame/Classes/TgAudioComponent_ModByVelocity.uc create mode 100755 exported/TgGame/Classes/TgAudioOcclusionActor.uc create mode 100755 exported/TgGame/Classes/TgBattleCheatManager.uc create mode 100755 exported/TgGame/Classes/TgBeamHelper.uc create mode 100755 exported/TgGame/Classes/TgBeamHelper_TheLaw.uc create mode 100755 exported/TgGame/Classes/TgBlockingVolume.uc create mode 100755 exported/TgGame/Classes/TgBossBlockDynamicVolume.uc create mode 100755 exported/TgGame/Classes/TgBossBlockVolume.uc create mode 100755 exported/TgGame/Classes/TgBotEncounterVolume.uc create mode 100755 exported/TgGame/Classes/TgBotFactory.uc create mode 100755 exported/TgGame/Classes/TgBotFactoryComponent.uc create mode 100755 exported/TgGame/Classes/TgBotFactorySpawnable.uc create mode 100755 exported/TgGame/Classes/TgBotFactory_BonusTrigger.uc create mode 100755 exported/TgGame/Classes/TgBotFactory_Leashed.uc create mode 100755 exported/TgGame/Classes/TgBotFactory_Minions.uc create mode 100755 exported/TgGame/Classes/TgBotFactory_PointCapture.uc create mode 100755 exported/TgGame/Classes/TgBotStart.uc create mode 100755 exported/TgGame/Classes/TgCTFFlagBase.uc create mode 100755 exported/TgGame/Classes/TgCTFVolume.uc create mode 100755 exported/TgGame/Classes/TgCallbackContainer.uc create mode 100755 exported/TgGame/Classes/TgCallbackInterface.uc create mode 100755 exported/TgGame/Classes/TgCameraModifier_LobbyCameraTransition.uc create mode 100755 exported/TgGame/Classes/TgCameraModifier_LobbyFade.uc create mode 100755 exported/TgGame/Classes/TgCameraModule.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_Attached.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_Cinematic.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_Dead.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_FallOutOfWorld.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_Free.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_FrontFacingCamera.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_GroundTarget.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_Server.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_Spectator.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_SpectatorFirstPerson.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_SpectatorLockedView.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_SpectatorOverview.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_SpectatorThirdPerson.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_ThirdPerson.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_ThirdPersonVariableHeight.uc create mode 100755 exported/TgGame/Classes/TgCameraModule_TopDown.uc create mode 100755 exported/TgGame/Classes/TgCameraShake.uc create mode 100755 exported/TgGame/Classes/TgCameraVolume.uc create mode 100755 exported/TgGame/Classes/TgCapturePoint.uc create mode 100755 exported/TgGame/Classes/TgCarriedFlag.uc create mode 100755 exported/TgGame/Classes/TgChaosCapturePoint.uc create mode 100755 exported/TgGame/Classes/TgChaosCapturePoint_ParticleStorm.uc create mode 100755 exported/TgGame/Classes/TgCharacterBuilderLight.uc create mode 100755 exported/TgGame/Classes/TgCharacterPerformance.uc create mode 100755 exported/TgGame/Classes/TgClientSettings.uc create mode 100755 exported/TgGame/Classes/TgCollisionProxy.uc create mode 100755 exported/TgGame/Classes/TgCollisionProxy_Cylinder.uc create mode 100755 exported/TgGame/Classes/TgCollisionProxy_Mesh.uc create mode 100755 exported/TgGame/Classes/TgCollisionProxy_SpectatorActionListener.uc create mode 100755 exported/TgGame/Classes/TgCollisionProxy_Vortex.uc create mode 100755 exported/TgGame/Classes/TgCombatActor.uc create mode 100755 exported/TgGame/Classes/TgCombinedPostProcessEffect.uc create mode 100755 exported/TgGame/Classes/TgContextNotifyActor.uc create mode 100755 exported/TgGame/Classes/TgControlModule.uc create mode 100755 exported/TgGame/Classes/TgControlModule_BaseEngine.uc create mode 100755 exported/TgGame/Classes/TgControlModule_Dead.uc create mode 100755 exported/TgGame/Classes/TgControlModule_Dummy.uc create mode 100755 exported/TgGame/Classes/TgControlModule_Feared.uc create mode 100755 exported/TgGame/Classes/TgControlModule_Free.uc create mode 100755 exported/TgGame/Classes/TgControlModule_FrontFacingCamera.uc create mode 100755 exported/TgGame/Classes/TgControlModule_Spectator.uc create mode 100755 exported/TgGame/Classes/TgControlModule_SpectatorLockedView.uc create mode 100755 exported/TgGame/Classes/TgControlModule_SpectatorOverview.uc create mode 100755 exported/TgGame/Classes/TgControlModule_Stoker.uc create mode 100755 exported/TgGame/Classes/TgControlModule_StunDisoriented.uc create mode 100755 exported/TgGame/Classes/TgControlModule_StunTaunted.uc create mode 100755 exported/TgGame/Classes/TgControlModule_Stunned.uc create mode 100755 exported/TgGame/Classes/TgControlModule_ThirdPerson.uc create mode 100755 exported/TgGame/Classes/TgControlModule_TopDown.uc create mode 100755 exported/TgGame/Classes/TgCoverPoint.uc create mode 100755 exported/TgGame/Classes/TgCustomCharacterComponent.uc create mode 100755 exported/TgGame/Classes/TgDamageType.uc create mode 100755 exported/TgGame/Classes/TgDamageType_AbilityCost.uc create mode 100755 exported/TgGame/Classes/TgDamageType_DragonSlam.uc create mode 100755 exported/TgGame/Classes/TgDamageType_FallOutOfWorld.uc create mode 100755 exported/TgGame/Classes/TgDamageType_GeneralAfflicted.uc create mode 100755 exported/TgGame/Classes/TgDamageType_GeneralCharred.uc create mode 100755 exported/TgGame/Classes/TgDamageType_GeneralConcussion.uc create mode 100755 exported/TgGame/Classes/TgDamageType_GeneralElectric.uc create mode 100755 exported/TgGame/Classes/TgDamageType_GeneralFlattened.uc create mode 100755 exported/TgGame/Classes/TgDamageType_GeneralImpulseOut.uc create mode 100755 exported/TgGame/Classes/TgDamageType_GeneralMidImpulse.uc create mode 100755 exported/TgGame/Classes/TgDamageType_GeneralOnFire.uc create mode 100755 exported/TgGame/Classes/TgDamageType_IgnoreShields.uc create mode 100755 exported/TgGame/Classes/TgDamageType_Latent.uc create mode 100755 exported/TgGame/Classes/TgDamageType_MeleeBasicAttack.uc create mode 100755 exported/TgGame/Classes/TgDamageType_MeleeBasicAttackImpulse.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsAcid.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsAcid_Latent.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsBullet.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsBullet_Latent.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsConcussive.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsConcussive_Latent.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsExecute.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsExplosive.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsExplosive_Latent.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsFire.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsFire_Latent.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsIce.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsIce_Latent.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsLightning.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsLightning_Latent.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsPiercing.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsPiercing_Latent.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsPoison.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsPoison_Latent.uc create mode 100755 exported/TgGame/Classes/TgDamageType_PaladinsSniper.uc create mode 100755 exported/TgGame/Classes/TgDamageType_RangedBasicAttack.uc create mode 100755 exported/TgGame/Classes/TgDamageType_RangedBasicAttackImpulse.uc create mode 100755 exported/TgGame/Classes/TgDamageType_RangedShot.uc create mode 100755 exported/TgGame/Classes/TgDatabaseIDs.uc create mode 100755 exported/TgGame/Classes/TgDebugCameraController.uc create mode 100755 exported/TgGame/Classes/TgDebugCameraInput.uc create mode 100755 exported/TgGame/Classes/TgDecalManager.uc create mode 100755 exported/TgGame/Classes/TgDefensePoint.uc create mode 100755 exported/TgGame/Classes/TgDemoRecSpectator.uc create mode 100755 exported/TgGame/Classes/TgDemoRecSpectator_Debug.uc create mode 100755 exported/TgGame/Classes/TgDeploy_AbsorptionField.uc create mode 100755 exported/TgGame/Classes/TgDeploy_Barrage.uc create mode 100755 exported/TgGame/Classes/TgDeploy_BlackHole.uc create mode 100755 exported/TgGame/Classes/TgDeploy_Bomb.uc create mode 100755 exported/TgGame/Classes/TgDeploy_BombKingStickyBomb.uc create mode 100755 exported/TgGame/Classes/TgDeploy_DarkConvergence.uc create mode 100755 exported/TgGame/Classes/TgDeploy_DemonTeleport.uc create mode 100755 exported/TgGame/Classes/TgDeploy_DeployableLinked.uc create mode 100755 exported/TgGame/Classes/TgDeploy_DeployableLinkedEffectField.uc create mode 100755 exported/TgGame/Classes/TgDeploy_DominanceFlag.uc create mode 100755 exported/TgGame/Classes/TgDeploy_DreadSerpent.uc create mode 100755 exported/TgGame/Classes/TgDeploy_EffectAura.uc create mode 100755 exported/TgGame/Classes/TgDeploy_EffectField.uc create mode 100755 exported/TgGame/Classes/TgDeploy_EffectSpots.uc create mode 100755 exported/TgGame/Classes/TgDeploy_EffectTrail.uc create mode 100755 exported/TgGame/Classes/TgDeploy_Epicenter.uc create mode 100755 exported/TgGame/Classes/TgDeploy_Exhaust.uc create mode 100755 exported/TgGame/Classes/TgDeploy_Explosion.uc create mode 100755 exported/TgGame/Classes/TgDeploy_Expose.uc create mode 100755 exported/TgGame/Classes/TgDeploy_Geometry.uc create mode 100755 exported/TgGame/Classes/TgDeploy_GeometryBarrierTank.uc create mode 100755 exported/TgGame/Classes/TgDeploy_GeometryBuck.uc create mode 100755 exported/TgGame/Classes/TgDeploy_Gourd.uc create mode 100755 exported/TgGame/Classes/TgDeploy_HealingTotem.uc create mode 100755 exported/TgGame/Classes/TgDeploy_HealthNugget.uc create mode 100755 exported/TgGame/Classes/TgDeploy_HealthNugget_TeamOnly.uc create mode 100755 exported/TgGame/Classes/TgDeploy_Illusion.uc create mode 100755 exported/TgGame/Classes/TgDeploy_IllusionLongbow.uc create mode 100755 exported/TgGame/Classes/TgDeploy_MatchParentFireMode.uc create mode 100755 exported/TgGame/Classes/TgDeploy_Midnight.uc create mode 100755 exported/TgGame/Classes/TgDeploy_Molotov.uc create mode 100755 exported/TgGame/Classes/TgDeploy_OppressorMine.uc create mode 100755 exported/TgGame/Classes/TgDeploy_PoppyBomb.uc create mode 100755 exported/TgGame/Classes/TgDeploy_RespawnBeacon.uc create mode 100755 exported/TgGame/Classes/TgDeploy_Reversal.uc create mode 100755 exported/TgGame/Classes/TgDeploy_Shield.uc create mode 100755 exported/TgGame/Classes/TgDeploy_ShieldBarik.uc create mode 100755 exported/TgGame/Classes/TgDeploy_ShieldBarikDome.uc create mode 100755 exported/TgGame/Classes/TgDeploy_ShieldFernando.uc create mode 100755 exported/TgGame/Classes/TgDeploy_ShieldMakoa.uc create mode 100755 exported/TgGame/Classes/TgDeploy_ShieldSiegeUnit.uc create mode 100755 exported/TgGame/Classes/TgDeploy_SmokeScreen.uc create mode 100755 exported/TgGame/Classes/TgDeploy_ToxicTimeBomb.uc create mode 100755 exported/TgGame/Classes/TgDeploy_Transporter.uc create mode 100755 exported/TgGame/Classes/TgDeploy_TurretEffectField.uc create mode 100755 exported/TgGame/Classes/TgDeploy_TurretLinked.uc create mode 100755 exported/TgGame/Classes/TgDeploy_WardersField.uc create mode 100755 exported/TgGame/Classes/TgDeployable.uc create mode 100755 exported/TgGame/Classes/TgDeployableFactory.uc create mode 100755 exported/TgGame/Classes/TgDestructible.uc create mode 100755 exported/TgGame/Classes/TgDestructibleFactory.uc create mode 100755 exported/TgGame/Classes/TgDevice.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_AstralMark.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_BarricadeDome.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Blink.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_BonusShieldDamage.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Counter.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_CounterAttack.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Cylinder.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_DarklordInhandChain1.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_DarklordInhandChain2.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_DarklordInhandChain3.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_DemonTeleport.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_DeployOnLocation.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_DeployOnTarget.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_DeployablesOnly.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_DimensionalLink.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_DrogozInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_DrogozInhand_Salvo.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Emitter.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_EmitterEffect.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_EvieCombo.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_FernandoInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_FlakInHand.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_FlameTurret.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_GauntletInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_GeometryInara.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_GrohkInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_GroverInhandAxe.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_HeatHaze.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_HeroicLeap.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_HuntersMark.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_HyperBeam.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_IgnoreCounter.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_IgnoreDeployableForBlocking.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_IgnoreDeployablesCannotCounter.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_IgnorePets.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_IgnoreReversal.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Illusion.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_IllusoryRift.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_KinessaInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_LazarusInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Lockdown.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Midnight.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_MidnightSub.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_MirrorDamageToHeal.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_MirrorDamageToHealBlock.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Mount.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_OppressorMine.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_OracleInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_PetsOnly.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_PoppyBomb.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_PrincessF.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Protection.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Pursuit.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Recharge.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_RendSoul.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_RepulsorField.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_RestoreSoul.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Reversal.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Salvo.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_SelfResurrection.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_ShatterExplosion.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_ShellShield.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_ShieldFernando.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_ShieldsOnly.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_SiegeUnit.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Smash.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_SnakeToss.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Soar.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_SpaceTime.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_SpawnAtOwnerLocation.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Spray.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Telepunch.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Tempest.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_TheLaw.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Transporter.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Turret.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_TurretShot.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_TurtlePower.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Uppercut.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Valor.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_Whirlwind.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_WorldLOSOnly.uc create mode 100755 exported/TgGame/Classes/TgDeviceFire_YingIllusionInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_AccursedArm.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_AccursedArmGun.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Advance.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_ArcingBeam.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_AstroInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_BarikInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Barrage.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_BarrageFire.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_BladesInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Booster.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_BuckInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_CombatSlide.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Counter.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_CounterAttack.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_DarkConvergenceSub.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_DarklordInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_DemonInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_DimensionalLink.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Disengage.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Dominance.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Drag.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_DragonSlam.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_FlakInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_FragGrenade.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_GaeBolg.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_GauntletInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_GeometryBarrierTank.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_GraceSupport.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_GravityLift.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_GrohkInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_GrumpyBomb.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_HeadHunter.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_HeatHaze.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_HeroicLeap.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_HexaFire.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_HexaFireGuns.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Hover.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Hustle.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_HyperBeam.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Inhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_IronSights.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_KinessaInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_KineticBurst.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_KingBomb.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_LexInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Lockdown.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_LongbowInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_LongbowPlanted.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_MendingSpirits.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_MinigunSpinUp.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Mount.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_MountBoar.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_MountHorse.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_MountHorseTest.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_MountInfernalWarhorse.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_MountLion.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_MountMech.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_MountMorph.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_MountNoHorse.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_MountOnyxStallion.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_MountPanther.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_NetherStep.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_OracleInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_OwlStealth.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_PoppyBomb.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Pounce.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Presence.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Pursuit.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Recharge.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_RendSoul.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_RestoreSoul.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Reversal.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_RocketLauncher.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_RuckusInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Salvo.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Scope.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Scout.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_SelfResurrection.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_ShadowTravel.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_ShellShield.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_ShockPulseSubdevice.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_ShoulderBash.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Smash.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_SniperMode.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_SpaceTime.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_SpinnerWhileFiring.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Spite.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Spray.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Stasis.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Telepunch.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Tempest.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_TheLaw.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Thrust.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_ToggleWithLockout.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Transporter.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Turret.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_TurtlePower.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_TyraInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_TyraUlt.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Valor.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_ViktorInhand.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Vine.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_WeaponSwap.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Whirlwind.uc create mode 100755 exported/TgGame/Classes/TgDeviceForm_Whirlwind2.uc create mode 100755 exported/TgGame/Classes/TgDeviceInterface_DismountModifier.uc create mode 100755 exported/TgGame/Classes/TgDeviceInterface_MoveSpeedMultiplier.uc create mode 100755 exported/TgGame/Classes/TgDeviceVolume.uc create mode 100755 exported/TgGame/Classes/TgDeviceVolumeInfo.uc create mode 100755 exported/TgGame/Classes/TgDeviceVolume_Pulse.uc create mode 100755 exported/TgGame/Classes/TgDevice_AbsorptionField.uc create mode 100755 exported/TgGame/Classes/TgDevice_AcceleratorField.uc create mode 100755 exported/TgGame/Classes/TgDevice_AccursedArm.uc create mode 100755 exported/TgGame/Classes/TgDevice_AccursedArmGun.uc create mode 100755 exported/TgGame/Classes/TgDevice_ActiveAura.uc create mode 100755 exported/TgGame/Classes/TgDevice_Advance.uc create mode 100755 exported/TgGame/Classes/TgDevice_Aegis.uc create mode 100755 exported/TgGame/Classes/TgDevice_AimDownSights.uc create mode 100755 exported/TgGame/Classes/TgDevice_Alpine.uc create mode 100755 exported/TgGame/Classes/TgDevice_Amplitude.uc create mode 100755 exported/TgGame/Classes/TgDevice_AndroxusInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_ArcingBeam.uc create mode 100755 exported/TgGame/Classes/TgDevice_AssertDominance.uc create mode 100755 exported/TgGame/Classes/TgDevice_AstralCycle.uc create mode 100755 exported/TgGame/Classes/TgDevice_AstralMark.uc create mode 100755 exported/TgGame/Classes/TgDevice_AstroInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_AstroQ.uc create mode 100755 exported/TgGame/Classes/TgDevice_Aura.uc create mode 100755 exported/TgGame/Classes/TgDevice_AuraPerTarget.uc create mode 100755 exported/TgGame/Classes/TgDevice_AutoHealing2.uc create mode 100755 exported/TgGame/Classes/TgDevice_BarikInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_Barrage.uc create mode 100755 exported/TgGame/Classes/TgDevice_BarrageFire.uc create mode 100755 exported/TgGame/Classes/TgDevice_BarricadeDome.uc create mode 100755 exported/TgGame/Classes/TgDevice_BarricadeMod.uc create mode 100755 exported/TgGame/Classes/TgDevice_Barrier.uc create mode 100755 exported/TgGame/Classes/TgDevice_BarrierReef.uc create mode 100755 exported/TgGame/Classes/TgDevice_BarrierTankInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_Billow.uc create mode 100755 exported/TgGame/Classes/TgDevice_BladesInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_BladesInhandAltFire.uc create mode 100755 exported/TgGame/Classes/TgDevice_BlastShot.uc create mode 100755 exported/TgGame/Classes/TgDevice_Blink.uc create mode 100755 exported/TgGame/Classes/TgDevice_Blossom.uc create mode 100755 exported/TgGame/Classes/TgDevice_BombKingDetonator.uc create mode 100755 exported/TgGame/Classes/TgDevice_BombKingInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_BombKingStickyBombExplosionDevice.uc create mode 100755 exported/TgGame/Classes/TgDevice_Booster.uc create mode 100755 exported/TgGame/Classes/TgDevice_BuckInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_Bunker.uc create mode 100755 exported/TgGame/Classes/TgDevice_Carapace.uc create mode 100755 exported/TgGame/Classes/TgDevice_CassieInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_ChainLightning.uc create mode 100755 exported/TgGame/Classes/TgDevice_ChainSequence.uc create mode 100755 exported/TgGame/Classes/TgDevice_Charge.uc create mode 100755 exported/TgGame/Classes/TgDevice_ChargeBackward.uc create mode 100755 exported/TgGame/Classes/TgDevice_ChargeBurst.uc create mode 100755 exported/TgGame/Classes/TgDevice_ChargeFernando.uc create mode 100755 exported/TgGame/Classes/TgDevice_CombatSlide.uc create mode 100755 exported/TgGame/Classes/TgDevice_Compensator.uc create mode 100755 exported/TgGame/Classes/TgDevice_CosmicGrace.uc create mode 100755 exported/TgGame/Classes/TgDevice_Counter.uc create mode 100755 exported/TgGame/Classes/TgDevice_CounterAttack.uc create mode 100755 exported/TgGame/Classes/TgDevice_CripplingThrow.uc create mode 100755 exported/TgGame/Classes/TgDevice_DarkConvergence.uc create mode 100755 exported/TgGame/Classes/TgDevice_DarklordInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_DeadSpace.uc create mode 100755 exported/TgGame/Classes/TgDevice_DecoyMod.uc create mode 100755 exported/TgGame/Classes/TgDevice_DemonInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_DemonTeleport.uc create mode 100755 exported/TgGame/Classes/TgDevice_DemonUlt.uc create mode 100755 exported/TgGame/Classes/TgDevice_DimensionalLink.uc create mode 100755 exported/TgGame/Classes/TgDevice_Disengage.uc create mode 100755 exported/TgGame/Classes/TgDevice_DoubleCharge.uc create mode 100755 exported/TgGame/Classes/TgDevice_Drag.uc create mode 100755 exported/TgGame/Classes/TgDevice_DragonSlam.uc create mode 100755 exported/TgGame/Classes/TgDevice_DreadSerpent.uc create mode 100755 exported/TgGame/Classes/TgDevice_DrogozInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_DualFire.uc create mode 100755 exported/TgGame/Classes/TgDevice_DualWield.uc create mode 100755 exported/TgGame/Classes/TgDevice_EarthenGuard.uc create mode 100755 exported/TgGame/Classes/TgDevice_EbbAndFlow.uc create mode 100755 exported/TgGame/Classes/TgDevice_EmergencyExit.uc create mode 100755 exported/TgGame/Classes/TgDevice_Emitter.uc create mode 100755 exported/TgGame/Classes/TgDevice_EmitterMod.uc create mode 100755 exported/TgGame/Classes/TgDevice_Emote.uc create mode 100755 exported/TgGame/Classes/TgDevice_Enlightenment.uc create mode 100755 exported/TgGame/Classes/TgDevice_EnlightenmentGun.uc create mode 100755 exported/TgGame/Classes/TgDevice_EvieInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_EvilMojo.uc create mode 100755 exported/TgGame/Classes/TgDevice_ExitStrategy.uc create mode 100755 exported/TgGame/Classes/TgDevice_ExplosiveFlask.uc create mode 100755 exported/TgGame/Classes/TgDevice_FaeFlight.uc create mode 100755 exported/TgGame/Classes/TgDevice_Failsafe.uc create mode 100755 exported/TgGame/Classes/TgDevice_FairyInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_FernandoImmortal.uc create mode 100755 exported/TgGame/Classes/TgDevice_FernandoInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_FireInAir.uc create mode 100755 exported/TgGame/Classes/TgDevice_FireSpit.uc create mode 100755 exported/TgGame/Classes/TgDevice_Fireball.uc create mode 100755 exported/TgGame/Classes/TgDevice_FlakInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_Flutter.uc create mode 100755 exported/TgGame/Classes/TgDevice_Fortify.uc create mode 100755 exported/TgGame/Classes/TgDevice_FragGrenade.uc create mode 100755 exported/TgGame/Classes/TgDevice_FragGrenadeModWhileCook.uc create mode 100755 exported/TgGame/Classes/TgDevice_GaeBolg.uc create mode 100755 exported/TgGame/Classes/TgDevice_GauntletInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_GeometryBarrierTank.uc create mode 100755 exported/TgGame/Classes/TgDevice_GhostWalk.uc create mode 100755 exported/TgGame/Classes/TgDevice_GourdMod.uc create mode 100755 exported/TgGame/Classes/TgDevice_GrohkInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_GroverInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_GroverInhandAxe.uc create mode 100755 exported/TgGame/Classes/TgDevice_GrumpyBomb.uc create mode 100755 exported/TgGame/Classes/TgDevice_Headhunter.uc create mode 100755 exported/TgGame/Classes/TgDevice_HealingPotion.uc create mode 100755 exported/TgGame/Classes/TgDevice_HealingRain.uc create mode 100755 exported/TgGame/Classes/TgDevice_HealingStation.uc create mode 100755 exported/TgGame/Classes/TgDevice_HealingTotem.uc create mode 100755 exported/TgGame/Classes/TgDevice_HeatHaze.uc create mode 100755 exported/TgGame/Classes/TgDevice_HeatTransfer.uc create mode 100755 exported/TgGame/Classes/TgDevice_HeroicLeap.uc create mode 100755 exported/TgGame/Classes/TgDevice_HexaFire.uc create mode 100755 exported/TgGame/Classes/TgDevice_HexaFireGuns.uc create mode 100755 exported/TgGame/Classes/TgDevice_HitPulse.uc create mode 100755 exported/TgGame/Classes/TgDevice_Hover.uc create mode 100755 exported/TgGame/Classes/TgDevice_HunterRoll.uc create mode 100755 exported/TgGame/Classes/TgDevice_HuntersMark.uc create mode 100755 exported/TgGame/Classes/TgDevice_Hustle.uc create mode 100755 exported/TgGame/Classes/TgDevice_HyperBeam.uc create mode 100755 exported/TgGame/Classes/TgDevice_IceBlock.uc create mode 100755 exported/TgGame/Classes/TgDevice_IceStorm.uc create mode 100755 exported/TgGame/Classes/TgDevice_Illusion.uc create mode 100755 exported/TgGame/Classes/TgDevice_IllusoryRift.uc create mode 100755 exported/TgGame/Classes/TgDevice_ImpalerArrow.uc create mode 100755 exported/TgGame/Classes/TgDevice_ImpasseMod.uc create mode 100755 exported/TgGame/Classes/TgDevice_Impede.uc create mode 100755 exported/TgGame/Classes/TgDevice_InPursuit.uc create mode 100755 exported/TgGame/Classes/TgDevice_IronSights.uc create mode 100755 exported/TgGame/Classes/TgDevice_ItemStoreBeacon.uc create mode 100755 exported/TgGame/Classes/TgDevice_KinessaInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_KineticBurst.uc create mode 100755 exported/TgGame/Classes/TgDevice_KingBomb.uc create mode 100755 exported/TgGame/Classes/TgDevice_LazarusInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_Leap.uc create mode 100755 exported/TgGame/Classes/TgDevice_LegDay.uc create mode 100755 exported/TgGame/Classes/TgDevice_LexInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_Lifelike.uc create mode 100755 exported/TgGame/Classes/TgDevice_Lightspeed.uc create mode 100755 exported/TgGame/Classes/TgDevice_Lockdown.uc create mode 100755 exported/TgGame/Classes/TgDevice_LongReach.uc create mode 100755 exported/TgGame/Classes/TgDevice_LongbowInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_LongbowPlanted.uc create mode 100755 exported/TgGame/Classes/TgDevice_MakoaInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_MalDambaInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_MarkAndRecall.uc create mode 100755 exported/TgGame/Classes/TgDevice_MarkShot.uc create mode 100755 exported/TgGame/Classes/TgDevice_MegaTurret.uc create mode 100755 exported/TgGame/Classes/TgDevice_Meteor.uc create mode 100755 exported/TgGame/Classes/TgDevice_Midnight.uc create mode 100755 exported/TgGame/Classes/TgDevice_MinigunSpinUp.uc create mode 100755 exported/TgGame/Classes/TgDevice_Molotov.uc create mode 100755 exported/TgGame/Classes/TgDevice_MonolithTotem.uc create mode 100755 exported/TgGame/Classes/TgDevice_Mount.uc create mode 100755 exported/TgGame/Classes/TgDevice_MountMorph.uc create mode 100755 exported/TgGame/Classes/TgDevice_MountNoHorse.uc create mode 100755 exported/TgGame/Classes/TgDevice_NetShot.uc create mode 100755 exported/TgGame/Classes/TgDevice_NetherStep.uc create mode 100755 exported/TgGame/Classes/TgDevice_NineLives.uc create mode 100755 exported/TgGame/Classes/TgDevice_OppressorMine.uc create mode 100755 exported/TgGame/Classes/TgDevice_OppressorMineMod.uc create mode 100755 exported/TgGame/Classes/TgDevice_OracleInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_Outreach.uc create mode 100755 exported/TgGame/Classes/TgDevice_OverGrowth.uc create mode 100755 exported/TgGame/Classes/TgDevice_OverTheMoon.uc create mode 100755 exported/TgGame/Classes/TgDevice_OwlFlare.uc create mode 100755 exported/TgGame/Classes/TgDevice_OwlFlashbang.uc create mode 100755 exported/TgGame/Classes/TgDevice_OwlInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_OwlSidearm.uc create mode 100755 exported/TgGame/Classes/TgDevice_OwlStealth.uc create mode 100755 exported/TgGame/Classes/TgDevice_PassiveAura.uc create mode 100755 exported/TgGame/Classes/TgDevice_Pet.uc create mode 100755 exported/TgGame/Classes/TgDevice_PipInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_PoisonBolts.uc create mode 100755 exported/TgGame/Classes/TgDevice_PoppyBomb.uc create mode 100755 exported/TgGame/Classes/TgDevice_PortalMod.uc create mode 100755 exported/TgGame/Classes/TgDevice_Pounce.uc create mode 100755 exported/TgGame/Classes/TgDevice_Presence.uc create mode 100755 exported/TgGame/Classes/TgDevice_PrincessF.uc create mode 100755 exported/TgGame/Classes/TgDevice_PrincessFSupport.uc create mode 100755 exported/TgGame/Classes/TgDevice_PrincessInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_PrincessRMB.uc create mode 100755 exported/TgGame/Classes/TgDevice_Projector.uc create mode 100755 exported/TgGame/Classes/TgDevice_Protection.uc create mode 100755 exported/TgGame/Classes/TgDevice_Prowl.uc create mode 100755 exported/TgGame/Classes/TgDevice_Pursuit.uc create mode 100755 exported/TgGame/Classes/TgDevice_QuadWield.uc create mode 100755 exported/TgGame/Classes/TgDevice_Rattle.uc create mode 100755 exported/TgGame/Classes/TgDevice_ReachOut.uc create mode 100755 exported/TgGame/Classes/TgDevice_Recharge.uc create mode 100755 exported/TgGame/Classes/TgDevice_Recovery.uc create mode 100755 exported/TgGame/Classes/TgDevice_RendSoul.uc create mode 100755 exported/TgGame/Classes/TgDevice_RepulsorField.uc create mode 100755 exported/TgGame/Classes/TgDevice_Requip.uc create mode 100755 exported/TgGame/Classes/TgDevice_RespawnBeacon.uc create mode 100755 exported/TgGame/Classes/TgDevice_Restock.uc create mode 100755 exported/TgGame/Classes/TgDevice_RestoreSoul.uc create mode 100755 exported/TgGame/Classes/TgDevice_Reversal.uc create mode 100755 exported/TgGame/Classes/TgDevice_ReversalMod.uc create mode 100755 exported/TgGame/Classes/TgDevice_Rewind.uc create mode 100755 exported/TgGame/Classes/TgDevice_RipenedGourd.uc create mode 100755 exported/TgGame/Classes/TgDevice_RocketBoots.uc create mode 100755 exported/TgGame/Classes/TgDevice_RocketLauncher.uc create mode 100755 exported/TgGame/Classes/TgDevice_Roost.uc create mode 100755 exported/TgGame/Classes/TgDevice_RuckusInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_Rush.uc create mode 100755 exported/TgGame/Classes/TgDevice_Salvo.uc create mode 100755 exported/TgGame/Classes/TgDevice_Scope.uc create mode 100755 exported/TgGame/Classes/TgDevice_Scout.uc create mode 100755 exported/TgGame/Classes/TgDevice_Scramble.uc create mode 100755 exported/TgGame/Classes/TgDevice_SecondWind.uc create mode 100755 exported/TgGame/Classes/TgDevice_Seedling.uc create mode 100755 exported/TgGame/Classes/TgDevice_SelfResurrection.uc create mode 100755 exported/TgGame/Classes/TgDevice_ShadowTravel.uc create mode 100755 exported/TgGame/Classes/TgDevice_Shatter.uc create mode 100755 exported/TgGame/Classes/TgDevice_ShellShield.uc create mode 100755 exported/TgGame/Classes/TgDevice_ShellShieldMod.uc create mode 100755 exported/TgGame/Classes/TgDevice_ShellSpin.uc create mode 100755 exported/TgGame/Classes/TgDevice_ShieldFernando.uc create mode 100755 exported/TgGame/Classes/TgDevice_ShieldMod.uc create mode 100755 exported/TgGame/Classes/TgDevice_ShockPulse.uc create mode 100755 exported/TgGame/Classes/TgDevice_ShoulderBash.uc create mode 100755 exported/TgGame/Classes/TgDevice_SiegeUnit.uc create mode 100755 exported/TgGame/Classes/TgDevice_SkyeInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_SleightOfHand.uc create mode 100755 exported/TgGame/Classes/TgDevice_SmokeScreen.uc create mode 100755 exported/TgGame/Classes/TgDevice_SmokeScreenMod.uc create mode 100755 exported/TgGame/Classes/TgDevice_Smother.uc create mode 100755 exported/TgGame/Classes/TgDevice_SnakeToss.uc create mode 100755 exported/TgGame/Classes/TgDevice_SniperMode.uc create mode 100755 exported/TgGame/Classes/TgDevice_Soar.uc create mode 100755 exported/TgGame/Classes/TgDevice_Somersault.uc create mode 100755 exported/TgGame/Classes/TgDevice_SpaceJam.uc create mode 100755 exported/TgGame/Classes/TgDevice_SpaceTime.uc create mode 100755 exported/TgGame/Classes/TgDevice_Spite.uc create mode 100755 exported/TgGame/Classes/TgDevice_Spray.uc create mode 100755 exported/TgGame/Classes/TgDevice_StarSeeker.uc create mode 100755 exported/TgGame/Classes/TgDevice_Stealth.uc create mode 100755 exported/TgGame/Classes/TgDevice_Stim.uc create mode 100755 exported/TgGame/Classes/TgDevice_Survival.uc create mode 100755 exported/TgGame/Classes/TgDevice_TeamDevice.uc create mode 100755 exported/TgGame/Classes/TgDevice_Telepunch.uc create mode 100755 exported/TgGame/Classes/TgDevice_Tempest.uc create mode 100755 exported/TgGame/Classes/TgDevice_TheLaw.uc create mode 100755 exported/TgGame/Classes/TgDevice_Thrust.uc create mode 100755 exported/TgGame/Classes/TgDevice_Tinkerin.uc create mode 100755 exported/TgGame/Classes/TgDevice_Toggle.uc create mode 100755 exported/TgGame/Classes/TgDevice_ToggleInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_ToggleInhandFiremode.uc create mode 100755 exported/TgGame/Classes/TgDevice_ToggleModeWithLockout.uc create mode 100755 exported/TgGame/Classes/TgDevice_ToggleWithLockout.uc create mode 100755 exported/TgGame/Classes/TgDevice_TotemMod.uc create mode 100755 exported/TgGame/Classes/TgDevice_ToweringBarrier.uc create mode 100755 exported/TgGame/Classes/TgDevice_ToweringBarrier_Old.uc create mode 100755 exported/TgGame/Classes/TgDevice_ToxicTimeBomb.uc create mode 100755 exported/TgGame/Classes/TgDevice_Transporter.uc create mode 100755 exported/TgGame/Classes/TgDevice_Turret.uc create mode 100755 exported/TgGame/Classes/TgDevice_TurretMod.uc create mode 100755 exported/TgGame/Classes/TgDevice_TurretShot.uc create mode 100755 exported/TgGame/Classes/TgDevice_TurtlePower.uc create mode 100755 exported/TgGame/Classes/TgDevice_TurtlePowerSmash.uc create mode 100755 exported/TgGame/Classes/TgDevice_TyraAltFire.uc create mode 100755 exported/TgGame/Classes/TgDevice_TyraInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_TyraUlt.uc create mode 100755 exported/TgGame/Classes/TgDevice_Uppercut.uc create mode 100755 exported/TgGame/Classes/TgDevice_Vengeance.uc create mode 100755 exported/TgGame/Classes/TgDevice_Vengeance_Lex.uc create mode 100755 exported/TgGame/Classes/TgDevice_VenomousGourd.uc create mode 100755 exported/TgGame/Classes/TgDevice_ViktorAmmoRefill.uc create mode 100755 exported/TgGame/Classes/TgDevice_ViktorInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_Vine.uc create mode 100755 exported/TgGame/Classes/TgDevice_WYRMJets.uc create mode 100755 exported/TgGame/Classes/TgDevice_WardersField.uc create mode 100755 exported/TgGame/Classes/TgDevice_WarpStep.uc create mode 100755 exported/TgGame/Classes/TgDevice_Watchtower.uc create mode 100755 exported/TgGame/Classes/TgDevice_WeaponSwap.uc create mode 100755 exported/TgGame/Classes/TgDevice_Weightless.uc create mode 100755 exported/TgGame/Classes/TgDevice_Whirl.uc create mode 100755 exported/TgGame/Classes/TgDevice_Whirlwind.uc create mode 100755 exported/TgGame/Classes/TgDevice_Whirlwind2.uc create mode 100755 exported/TgGame/Classes/TgDevice_WindTotem.uc create mode 100755 exported/TgGame/Classes/TgDevice_Withdraw.uc create mode 100755 exported/TgGame/Classes/TgDevice_YingInhand.uc create mode 100755 exported/TgGame/Classes/TgDevice_YingInhandProj.uc create mode 100755 exported/TgGame/Classes/TgDevice_Zodiac.uc create mode 100755 exported/TgGame/Classes/TgDistributionFloatLitParticleBrightness.uc create mode 100755 exported/TgGame/Classes/TgDistributionFloatSoundAttenuation.uc create mode 100755 exported/TgGame/Classes/TgDoorMarker.uc create mode 100755 exported/TgGame/Classes/TgDropShadowDecalComponent.uc create mode 100755 exported/TgGame/Classes/TgDroppedItem.uc create mode 100755 exported/TgGame/Classes/TgEffect.uc create mode 100755 exported/TgGame/Classes/TgEffectDamage.uc create mode 100755 exported/TgGame/Classes/TgEffectDamage_AstroDOT.uc create mode 100755 exported/TgGame/Classes/TgEffectDamage_Execute.uc create mode 100755 exported/TgGame/Classes/TgEffectDamage_NoLifeSteal.uc create mode 100755 exported/TgGame/Classes/TgEffectDamage_PresenceDoT.uc create mode 100755 exported/TgGame/Classes/TgEffectForm.uc create mode 100755 exported/TgGame/Classes/TgEffectForm_BuffBelt.uc create mode 100755 exported/TgGame/Classes/TgEffectForm_DisablePawn.uc create mode 100755 exported/TgGame/Classes/TgEffectForm_Freeze.uc create mode 100755 exported/TgGame/Classes/TgEffectForm_Maeve_Midnight.uc create mode 100755 exported/TgGame/Classes/TgEffectForm_Maldamba_Slither.uc create mode 100755 exported/TgGame/Classes/TgEffectForm_Oracle_SoulStacks.uc create mode 100755 exported/TgGame/Classes/TgEffectForm_WithMeshes.uc create mode 100755 exported/TgGame/Classes/TgEffectGroup.uc create mode 100755 exported/TgGame/Classes/TgEffectHeal.uc create mode 100755 exported/TgGame/Classes/TgEffectManager.uc create mode 100755 exported/TgGame/Classes/TgEffectModifyDeployable.uc create mode 100755 exported/TgGame/Classes/TgEffectModifyEffect.uc create mode 100755 exported/TgGame/Classes/TgEffectModifyProperty.uc create mode 100755 exported/TgGame/Classes/TgEffectModifyProperty_Ability1.uc create mode 100755 exported/TgGame/Classes/TgEffectModifyProperty_Ability2.uc create mode 100755 exported/TgGame/Classes/TgEffectModifyProperty_AltFire.uc create mode 100755 exported/TgGame/Classes/TgEffectModifyProperty_Child.uc create mode 100755 exported/TgGame/Classes/TgEffectModifyProperty_Inhand.uc create mode 100755 exported/TgGame/Classes/TgEffectModifyProperty_Movement.uc create mode 100755 exported/TgGame/Classes/TgEffect_Lift.uc create mode 100755 exported/TgGame/Classes/TgElevatingVolume.uc create mode 100755 exported/TgGame/Classes/TgEmitter.uc create mode 100755 exported/TgGame/Classes/TgEmitterCrashlanding.uc create mode 100755 exported/TgGame/Classes/TgEmitterSpawnable.uc create mode 100755 exported/TgGame/Classes/TgEmitterSpawnable_TeamColor.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Bleed.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_CCImmune.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Cripple.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBase.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBottom.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBottomLeft.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBottomRight.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_DamageLeft.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_DamageRight.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_DamageTop.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_DamageTopLeft.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_DamageTopRight.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Daze.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Fire.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Freeze.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Heal.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Hidden.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Knockback.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Mark.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Poison.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_PreTeleport.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Revealed.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Root.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Slow.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Stun.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Teleport.uc create mode 100755 exported/TgGame/Classes/TgEmitter_CameraEffect_Venom.uc create mode 100755 exported/TgGame/Classes/TgEmitter_TeamColor.uc create mode 100755 exported/TgGame/Classes/TgEndOfWorldVolume.uc create mode 100755 exported/TgGame/Classes/TgExplosionLight.uc create mode 100755 exported/TgGame/Classes/TgFatalityFactory.uc create mode 100755 exported/TgGame/Classes/TgFatalityMeshActor.uc create mode 100755 exported/TgGame/Classes/TgFlagContentData.uc create mode 100755 exported/TgGame/Classes/TgFogOfWarBarrier.uc create mode 100755 exported/TgGame/Classes/TgFortressVolume.uc create mode 100755 exported/TgGame/Classes/TgGame.UPKG create mode 100755 exported/TgGame/Classes/TgGame.uc create mode 100755 exported/TgGame/Classes/TgGameEngine.uc create mode 100755 exported/TgGame/Classes/TgGameTipManager.uc create mode 100755 exported/TgGame/Classes/TgGame_Arena.uc create mode 100755 exported/TgGame/Classes/TgGame_Arena_Capture.uc create mode 100755 exported/TgGame/Classes/TgGame_Arena_Escort.uc create mode 100755 exported/TgGame/Classes/TgGame_Arena_Escort_Practice.uc create mode 100755 exported/TgGame/Classes/TgGame_Arena_Practice.uc create mode 100755 exported/TgGame/Classes/TgGame_Battle.uc create mode 100755 exported/TgGame/Classes/TgGame_Battle_Aram.uc create mode 100755 exported/TgGame/Classes/TgGame_Battle_Aram_Practice.uc create mode 100755 exported/TgGame/Classes/TgGame_Battle_Casual.uc create mode 100755 exported/TgGame/Classes/TgGame_Battle_Conquest.uc create mode 100755 exported/TgGame/Classes/TgGame_Battle_Conquest_Erez.uc create mode 100755 exported/TgGame/Classes/TgGame_Battle_Conquest_Practice.uc create mode 100755 exported/TgGame/Classes/TgGame_Battle_Conquest_Tc.uc create mode 100755 exported/TgGame/Classes/TgGame_Battle_Expert.uc create mode 100755 exported/TgGame/Classes/TgGame_Battle_Joust.uc create mode 100755 exported/TgGame/Classes/TgGame_Battle_Joust_3v3.uc create mode 100755 exported/TgGame/Classes/TgGame_Battle_Practice.uc create mode 100755 exported/TgGame/Classes/TgGame_Battle_Training.uc create mode 100755 exported/TgGame/Classes/TgGame_CTF.uc create mode 100755 exported/TgGame/Classes/TgGame_Domination.uc create mode 100755 exported/TgGame/Classes/TgGame_Idol.uc create mode 100755 exported/TgGame/Classes/TgGame_JeffPrototype.uc create mode 100755 exported/TgGame/Classes/TgGame_Mission.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins.uc create mode 100755 exported/TgGame/Classes/TgGame_PaladinsExtended.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Assault.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Assault_Practice.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Assault_Ranked.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_CaptureOnly.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Halloween2017.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Onslaught.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Onslaught_Practice.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Payload.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Payload_Practice.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Prototype1.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Prototype2.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Prototype3.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Prototype4.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Prototype5.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_PvE.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_PvE_Survival.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_ShootingRange.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Siege.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Siege_Practice.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Siege_Ranked.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Survival.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Survival_Practice.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_TeamDeathMatch.uc create mode 100755 exported/TgGame/Classes/TgGame_Paladins_Tutorial.uc create mode 100755 exported/TgGame/Classes/TgGame_PointCapture.uc create mode 100755 exported/TgGame/Classes/TgGame_Siege.uc create mode 100755 exported/TgGame/Classes/TgGame_SinglePointCaptureAndHold.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurveOwner.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurves.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_Accuracy.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_AimAcceleration.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_AimAssistBounds.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_AimAssistBoundsByFOV.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_AimAssistKeyframes.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_AirControlFromZVelocity.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_DamageFalloff.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_DamageFalloffAOE.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_DamagePerShotHit.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_FlakInhandKnockback.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_FlakInhandSlow.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_GravityFromCustom.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_GravityFromZVelocity.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_HitMarkerScaleByDamage.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_ProjFrictionOverTime.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_ProjGravityOverTime.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_ProjectileSpeedOverTime.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_Recoil.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_RecoilSimple.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_RuckusSpinUpControl.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_ScopeWeaponFOV.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_Simple.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_SpreadTendency.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_TargetAimTracking.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_ThreatLevelByRange.uc create mode 100755 exported/TgGame/Classes/TgGameplayCurvesSet_WallRunVerticalMovement.uc create mode 100755 exported/TgGame/Classes/TgGameplayEventsWriter.uc create mode 100755 exported/TgGame/Classes/TgHUD.uc create mode 100755 exported/TgGame/Classes/TgHavokNavigationHandleAudio.uc create mode 100755 exported/TgGame/Classes/TgHeadShotComponent.uc create mode 100755 exported/TgGame/Classes/TgHeightFog.uc create mode 100755 exported/TgGame/Classes/TgHelpAlertVolume.uc create mode 100755 exported/TgGame/Classes/TgHelpTipActor.uc create mode 100755 exported/TgGame/Classes/TgHoldSpot.uc create mode 100755 exported/TgGame/Classes/TgIdol.uc create mode 100755 exported/TgGame/Classes/TgImpactFx.uc create mode 100755 exported/TgGame/Classes/TgInteractiveAudio.uc create mode 100755 exported/TgGame/Classes/TgInterface_YingIllusion.uc create mode 100755 exported/TgGame/Classes/TgInterpolatingCameraActor.uc create mode 100755 exported/TgGame/Classes/TgInvListener.uc create mode 100755 exported/TgGame/Classes/TgInvListener_ActiveDeployableEffect.uc create mode 100755 exported/TgGame/Classes/TgInvListener_ActiveWhileWeaponSwap.uc create mode 100755 exported/TgGame/Classes/TgInvListener_AddDamageMissingHealthPercent.uc create mode 100755 exported/TgGame/Classes/TgInvListener_AerialAssault.uc create mode 100755 exported/TgGame/Classes/TgInvListener_AffectedByDeviceApplyEffect.uc create mode 100755 exported/TgGame/Classes/TgInvListener_ApplyHitSpecialOnKill.uc create mode 100755 exported/TgGame/Classes/TgInvListener_Combustible.uc create mode 100755 exported/TgGame/Classes/TgInvListener_CooledMags.uc create mode 100755 exported/TgGame/Classes/TgInvListener_Counter.uc create mode 100755 exported/TgGame/Classes/TgInvListener_CounterLegendary.uc create mode 100755 exported/TgGame/Classes/TgInvListener_CrackShot.uc create mode 100755 exported/TgGame/Classes/TgInvListener_Demolition.uc create mode 100755 exported/TgGame/Classes/TgInvListener_Enlightenment.uc create mode 100755 exported/TgGame/Classes/TgInvListener_ExtraDamageAboveHealthPercent.uc create mode 100755 exported/TgGame/Classes/TgInvListener_ExtraDamageBelowHealthPercent.uc create mode 100755 exported/TgGame/Classes/TgInvListener_Firefight.uc create mode 100755 exported/TgGame/Classes/TgInvListener_GuerillaTactics.uc create mode 100755 exported/TgGame/Classes/TgInvListener_Gunnery.uc create mode 100755 exported/TgGame/Classes/TgInvListener_Halfshell.uc create mode 100755 exported/TgGame/Classes/TgInvListener_HitSelfOnHeadshot.uc create mode 100755 exported/TgGame/Classes/TgInvListener_HitWithDeviceFiremode.uc create mode 100755 exported/TgGame/Classes/TgInvListener_ImpasseEffect.uc create mode 100755 exported/TgGame/Classes/TgInvListener_KillVengeanceTarget.uc create mode 100755 exported/TgGame/Classes/TgInvListener_MegaPotion.uc create mode 100755 exported/TgGame/Classes/TgInvListener_NearVengeanceTarget.uc create mode 100755 exported/TgGame/Classes/TgInvListener_Recycler.uc create mode 100755 exported/TgGame/Classes/TgInvListener_ReplaceCurveSets.uc create mode 100755 exported/TgGame/Classes/TgInvListener_SetChildFiremode.uc create mode 100755 exported/TgGame/Classes/TgInvListener_SetPetFiremode.uc create mode 100755 exported/TgGame/Classes/TgInvListener_SoulChargesActive.uc create mode 100755 exported/TgGame/Classes/TgInvListener_SoulChargesConsumed.uc create mode 100755 exported/TgGame/Classes/TgInvListener_SpiritsChosen.uc create mode 100755 exported/TgGame/Classes/TgInvListener_SpiteLegendary.uc create mode 100755 exported/TgGame/Classes/TgInvListener_SteadyAim.uc create mode 100755 exported/TgGame/Classes/TgInvListener_Tremors.uc create mode 100755 exported/TgGame/Classes/TgInventoryManager.uc create mode 100755 exported/TgGame/Classes/TgInventoryManager_Player.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Device.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Ability.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AbilityEnd.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AbilityEndTargetFiremodeOnly.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AbilityInstant.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AbilityProcBase.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AbilityProcDeployables.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AbilityShieldDamage.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AbilityStart.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AbilityStart_LowHealth.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Accelerant.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Acrobatics.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringAbility.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringAbility_NotFiringInhand.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringAbility_WhileOutOfCombat.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringDimensionalLink.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPassive.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPassive_WhileOutOfCombat.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPostFire.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPreFire.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ActiveMovementHit.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileDeployableActive.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileDeployableInactive.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileInGrass.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileOffCooldown.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AddDamage.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AddDamageMaxHealthPercent.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AddDamagePerTarget.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AddShieldDamage.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDevice.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceActiveWhile.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceDamage.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceKill.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceLifesteal.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceTarget.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AirBlast.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ArcingBeam.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AtTheReady.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AugmentPetHit.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AuraMod.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_AuraNearObjective.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Backstab.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_BackstabExtraDamage.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_BarricadeEffect.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_BarrierReef.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_BigGame.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_BlastShotHitEffect.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_BlastShotHitSelfEffect.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_BowlingBall.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_CatBurglar.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_CombatRepair.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Androxus.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Barik.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_BombKing.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Buck.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Cassie.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Drogoz.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Evie.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Fernando.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Grohk.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Grover.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Kinessa.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Makoa.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Pip.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Ruckus.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Skye.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Viktor.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Ying.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Compensate.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Conduit.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayAbility1.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayAbility2.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayMovementAbility.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayer.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_DeepRoots.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_DefianceHit.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnAbility.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnAbilityEnd.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnAbilityStart.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnDeployable.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnDeviceHit.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_DeployWithProjectile.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_DeployedDuringAbility.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_DeployedWhileMounted.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_DirectHit.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_DoubleTap.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_DuringAbility.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_EarthenGuard.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_EmitterEffect.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_EnergyCharge.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_EquivalentExchange.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Exaction.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Exhilarate.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Featherlite.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Featherweight.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FireInsteadOfDeath.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FireOnDamageInterruptedStealth.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FireOnElimination.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FireOnKill.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FireOnKillWithChildDevice.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FireOnLandAfterLeap.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FireOnLowHealth.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FireOnMiss.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FireOnTeleport.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FireWithDeployable.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FireWithProjectile.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FiringDuringAbility.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FiringDuringAbilityAltMode.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FirstAidKit.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FirstShotAfterMovementAbility.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FirstShotDuringOrAfterMovementAbility.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FirstShotDuringOrAfterStealth.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FragGrenade.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_FrigidField.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Get_Nugget.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_GiftGiver.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_GourdEffect.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Headhunter.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_HealthByPercent.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_HealthPCT_In_Range.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_HitAirborne.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_HitAirborneOwner.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_HitOnHeadshot.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_HitStealthTarget.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDevice.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceAllyTarget.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceAsIfInhand.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceInhand.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceInhandOnly.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceSpecial.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_HitWithInhandWhileDeviceFiring.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_HitWithPetDevice.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Hustle.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ImpalerArrowHit.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_InHand_HitMissStacker.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Jolt.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Kindling.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_LastStand.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_LazarusResurrect.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_LiftOff.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_LoogieExploded.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_LoogieExplodedHit.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_LoogieHit.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Marksman.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_MendingSpiritsActive.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_MirrorDamageToHeal.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_MirrorDamageToHealBlock.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_MirrorInhandDamageToHeal.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_MirrorPetDamageToHeal.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_MoraleBoost.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Mount.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_MountEnd.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_MountShield.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_NearObjective.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_NearOwnTurret.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_OppressorMineEffect.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_OutOfCombat.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_PetAbility.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_PetAbilityWhileDeployableActive.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_PetAbility_Deploy.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_PetDied.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_PipConsequential.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_PoisonBolts.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Proximity.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_RainOfFire.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ReachOut.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ReduceInhandSelfDamage.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ReduceOtherCooldownOnHit.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ReduceOtherCooldownOnStartFire.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ReduceOtherCooldownOnStopFire.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ReduceSelfDamageDeployable.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ReduceSelfDamageProjectile.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ReloadCard.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ReversalEffect.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_SalvoExplode.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Scramble.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ShellShieldEffect.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_ShieldEffect.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_SizeOfTheFight.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_SmokeScreenEffect.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_SpawnTeamHealthNugget.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Spite.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Spitfire.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_SpringBloom.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Sprint.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Stack.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_StackPerPetAlive.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_StandingStill.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_StandingStillSelfEffect.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_StatusIsOnTarget.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_StickyBombDetonate.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_TagForLifesteal.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Thunderstruck.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_TotemEffect.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_TripWire.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_TrueGrit.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Undying.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Unveil.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_UseWhileCCed.uc create mode 100755 exported/TgGame/Classes/TgInventoryObject_Listen_Weaken.uc create mode 100755 exported/TgGame/Classes/TgItemShopVolume.uc create mode 100755 exported/TgGame/Classes/TgKActorSpawnable.uc create mode 100755 exported/TgGame/Classes/TgKAssetSpawnable.uc create mode 100755 exported/TgGame/Classes/TgKAsset_ClientSideSim.uc create mode 100755 exported/TgGame/Classes/TgKismetTestActor.uc create mode 100755 exported/TgGame/Classes/TgLanePylon.uc create mode 100755 exported/TgGame/Classes/TgLevelStreamingSpectator.uc create mode 100755 exported/TgGame/Classes/TgLevelStreamingWorldDetail.uc create mode 100755 exported/TgGame/Classes/TgLian.uc create mode 100755 exported/TgGame/Classes/TgLobbyCamera.uc create mode 100755 exported/TgGame/Classes/TgLobbyCaptureActor.uc create mode 100755 exported/TgGame/Classes/TgLocalPlayer.uc create mode 100755 exported/TgGame/Classes/TgManifestGroup.uc create mode 100755 exported/TgGame/Classes/TgMapBoundsVolume.uc create mode 100755 exported/TgGame/Classes/TgMapInfo.uc create mode 100755 exported/TgGame/Classes/TgMarkComponent.uc create mode 100755 exported/TgGame/Classes/TgMenuContentData.uc create mode 100755 exported/TgGame/Classes/TgMenuMeshInfo.uc create mode 100755 exported/TgGame/Classes/TgMenuTransitionActor.uc create mode 100755 exported/TgGame/Classes/TgMeshAssembly.uc create mode 100755 exported/TgGame/Classes/TgMidnightFogVolumeDensityInfo.uc create mode 100755 exported/TgGame/Classes/TgMinimapManager.uc create mode 100755 exported/TgGame/Classes/TgMinionGoal.uc create mode 100755 exported/TgGame/Classes/TgMinionGoal_Aphrodite.uc create mode 100755 exported/TgGame/Classes/TgMissionListVolume.uc create mode 100755 exported/TgGame/Classes/TgMobileAmbientSound.uc create mode 100755 exported/TgGame/Classes/TgModifyPawnPropertiesVolume.uc create mode 100755 exported/TgGame/Classes/TgMuzzleFlash.uc create mode 100755 exported/TgGame/Classes/TgMuzzleFlash_Bow.uc create mode 100755 exported/TgGame/Classes/TgMuzzleFlash_IceStaff.uc create mode 100755 exported/TgGame/Classes/TgMuzzleFlash_Lance.uc create mode 100755 exported/TgGame/Classes/TgMuzzleFlash_Orb.uc create mode 100755 exported/TgGame/Classes/TgMuzzleFlash_PotionLauncher.uc create mode 100755 exported/TgGame/Classes/TgMuzzleFlash_SkyeInHand.uc create mode 100755 exported/TgGame/Classes/TgMuzzleFlash_Sniper.uc create mode 100755 exported/TgGame/Classes/TgNavMeshPath_AlongLane.uc create mode 100755 exported/TgGame/Classes/TgNavRouteIndicator.uc create mode 100755 exported/TgGame/Classes/TgNavigationPoint.uc create mode 100755 exported/TgGame/Classes/TgNavigationPointSpawnable.uc create mode 100755 exported/TgGame/Classes/TgNearObjectiveVolume.uc create mode 100755 exported/TgGame/Classes/TgNewUserSettings.uc create mode 100755 exported/TgGame/Classes/TgObject.uc create mode 100755 exported/TgGame/Classes/TgObjectReferencer.uc create mode 100755 exported/TgGame/Classes/TgObjective.uc create mode 100755 exported/TgGame/Classes/TgObjectiveVolume.uc create mode 100755 exported/TgGame/Classes/TgObserver_ViewTargetChanged.uc create mode 100755 exported/TgGame/Classes/TgOnlineGameSettings.uc create mode 100755 exported/TgGame/Classes/TgOverviewCameraActor.uc create mode 100755 exported/TgGame/Classes/TgPaladinsController.uc create mode 100755 exported/TgGame/Classes/TgParticleModuleTypeDataLight.uc create mode 100755 exported/TgGame/Classes/TgParticleSystemComponent.uc create mode 100755 exported/TgGame/Classes/TgPathPreviewActor.uc create mode 100755 exported/TgGame/Classes/TgPathPreviewRenderingComponent.uc create mode 100755 exported/TgGame/Classes/TgPathfinder.uc create mode 100755 exported/TgGame/Classes/TgPathfinderWalker.uc create mode 100755 exported/TgGame/Classes/TgPawn.uc create mode 100755 exported/TgGame/Classes/TgPawn_Androxus.uc create mode 100755 exported/TgGame/Classes/TgPawn_Astro.uc create mode 100755 exported/TgGame/Classes/TgPawn_Barik.uc create mode 100755 exported/TgGame/Classes/TgPawn_BarrierTank.uc create mode 100755 exported/TgGame/Classes/TgPawn_Biped.uc create mode 100755 exported/TgGame/Classes/TgPawn_Blades.uc create mode 100755 exported/TgGame/Classes/TgPawn_BombKing.uc create mode 100755 exported/TgGame/Classes/TgPawn_Buck.uc create mode 100755 exported/TgGame/Classes/TgPawn_Cassie.uc create mode 100755 exported/TgGame/Classes/TgPawn_Character.uc create mode 100755 exported/TgGame/Classes/TgPawn_Darklord.uc create mode 100755 exported/TgGame/Classes/TgPawn_Demon.uc create mode 100755 exported/TgGame/Classes/TgPawn_Drogoz.uc create mode 100755 exported/TgGame/Classes/TgPawn_Evie.uc create mode 100755 exported/TgGame/Classes/TgPawn_Fairy.uc create mode 100755 exported/TgGame/Classes/TgPawn_Fernando.uc create mode 100755 exported/TgGame/Classes/TgPawn_Flak.uc create mode 100755 exported/TgGame/Classes/TgPawn_Gauntlet.uc create mode 100755 exported/TgGame/Classes/TgPawn_Grohk.uc create mode 100755 exported/TgGame/Classes/TgPawn_Grover.uc create mode 100755 exported/TgGame/Classes/TgPawn_Illusion.uc create mode 100755 exported/TgGame/Classes/TgPawn_Juggernaut.uc create mode 100755 exported/TgGame/Classes/TgPawn_Kinessa.uc create mode 100755 exported/TgGame/Classes/TgPawn_LanePusher.uc create mode 100755 exported/TgGame/Classes/TgPawn_LanePusherBase.uc create mode 100755 exported/TgGame/Classes/TgPawn_LanePusherRace.uc create mode 100755 exported/TgGame/Classes/TgPawn_Lazarus.uc create mode 100755 exported/TgGame/Classes/TgPawn_Lex.uc create mode 100755 exported/TgGame/Classes/TgPawn_Longbow.uc create mode 100755 exported/TgGame/Classes/TgPawn_Makoa.uc create mode 100755 exported/TgGame/Classes/TgPawn_MalDamba.uc create mode 100755 exported/TgGame/Classes/TgPawn_Oracle.uc create mode 100755 exported/TgGame/Classes/TgPawn_Owl.uc create mode 100755 exported/TgGame/Classes/TgPawn_Pet.uc create mode 100755 exported/TgGame/Classes/TgPawn_Pip.uc create mode 100755 exported/TgGame/Classes/TgPawn_Princess.uc create mode 100755 exported/TgGame/Classes/TgPawn_Ruckus.uc create mode 100755 exported/TgGame/Classes/TgPawn_SiegeEngine_CaptureAndPayload.uc create mode 100755 exported/TgGame/Classes/TgPawn_SiegeEngine_ImmuneWhileTraveling.uc create mode 100755 exported/TgGame/Classes/TgPawn_SiegeEngine_Payload.uc create mode 100755 exported/TgGame/Classes/TgPawn_SiegeEngine_Payload_Crusade.uc create mode 100755 exported/TgGame/Classes/TgPawn_SiegeEngine_Wedge.uc create mode 100755 exported/TgGame/Classes/TgPawn_SiegeWall.uc create mode 100755 exported/TgGame/Classes/TgPawn_SiegeWall_Base.uc create mode 100755 exported/TgGame/Classes/TgPawn_SiegeWall_Inner.uc create mode 100755 exported/TgGame/Classes/TgPawn_SiegeWall_Outer.uc create mode 100755 exported/TgGame/Classes/TgPawn_Skye.uc create mode 100755 exported/TgGame/Classes/TgPawn_Stoker.uc create mode 100755 exported/TgGame/Classes/TgPawn_Structure.uc create mode 100755 exported/TgGame/Classes/TgPawn_Tower.uc create mode 100755 exported/TgGame/Classes/TgPawn_TowerBase.uc create mode 100755 exported/TgGame/Classes/TgPawn_Tower_FA.uc create mode 100755 exported/TgGame/Classes/TgPawn_Tower_Inner.uc create mode 100755 exported/TgGame/Classes/TgPawn_Tower_Outer.uc create mode 100755 exported/TgGame/Classes/TgPawn_Tower_Upper.uc create mode 100755 exported/TgGame/Classes/TgPawn_Turret.uc create mode 100755 exported/TgGame/Classes/TgPawn_Turret_DefaultCone.uc create mode 100755 exported/TgGame/Classes/TgPawn_Turret_Flamethrower.uc create mode 100755 exported/TgGame/Classes/TgPawn_Turret_Mega.uc create mode 100755 exported/TgGame/Classes/TgPawn_Tyra.uc create mode 100755 exported/TgGame/Classes/TgPawn_Viktor.uc create mode 100755 exported/TgGame/Classes/TgPawn_VoodooTotem.uc create mode 100755 exported/TgGame/Classes/TgPawn_Ying.uc create mode 100755 exported/TgGame/Classes/TgPhysAnimTestActor.uc create mode 100755 exported/TgGame/Classes/TgPhysicalMaterialProperty.uc create mode 100755 exported/TgGame/Classes/TgPickupFactory.uc create mode 100755 exported/TgGame/Classes/TgPickupFactory_Item.uc create mode 100755 exported/TgGame/Classes/TgPlayOfTheGameCamera.uc create mode 100755 exported/TgGame/Classes/TgPlayerBlockingVolume.uc create mode 100755 exported/TgGame/Classes/TgPlayerCamera.uc create mode 100755 exported/TgGame/Classes/TgPlayerController.uc create mode 100755 exported/TgGame/Classes/TgPlayerCountVolume.uc create mode 100755 exported/TgGame/Classes/TgPlayerInput.uc create mode 100755 exported/TgGame/Classes/TgPointOfInterest.uc create mode 100755 exported/TgGame/Classes/TgPortal.uc create mode 100755 exported/TgGame/Classes/TgPostProcessVolume.uc create mode 100755 exported/TgGame/Classes/TgProj_BlastShot.uc create mode 100755 exported/TgGame/Classes/TgProj_BombKingStickyBomb.uc create mode 100755 exported/TgGame/Classes/TgProj_DarkConvergence.uc create mode 100755 exported/TgGame/Classes/TgProj_DarklordBase.uc create mode 100755 exported/TgGame/Classes/TgProj_DarklordChain1.uc create mode 100755 exported/TgGame/Classes/TgProj_DarklordChain2.uc create mode 100755 exported/TgGame/Classes/TgProj_DarklordChain3.uc create mode 100755 exported/TgGame/Classes/TgProj_DemonTeleport.uc create mode 100755 exported/TgGame/Classes/TgProj_Drag.uc create mode 100755 exported/TgGame/Classes/TgProj_DreadSerpent.uc create mode 100755 exported/TgGame/Classes/TgProj_DrogozRocket.uc create mode 100755 exported/TgGame/Classes/TgProj_Enlightenment.uc create mode 100755 exported/TgGame/Classes/TgProj_EvilMojo.uc create mode 100755 exported/TgGame/Classes/TgProj_ExplodeAtMaxRange.uc create mode 100755 exported/TgGame/Classes/TgProj_ExplosiveFlask.uc create mode 100755 exported/TgGame/Classes/TgProj_Fireball.uc create mode 100755 exported/TgGame/Classes/TgProj_FlakRocket.uc create mode 100755 exported/TgGame/Classes/TgProj_Flare.uc create mode 100755 exported/TgGame/Classes/TgProj_FragGrenade.uc create mode 100755 exported/TgGame/Classes/TgProj_FreeGrenade.uc create mode 100755 exported/TgGame/Classes/TgProj_GaeBolg.uc create mode 100755 exported/TgGame/Classes/TgProj_Greatbow.uc create mode 100755 exported/TgGame/Classes/TgProj_GrumpyBomb.uc create mode 100755 exported/TgGame/Classes/TgProj_HealingPotion.uc create mode 100755 exported/TgGame/Classes/TgProj_HexaFireRocket.uc create mode 100755 exported/TgGame/Classes/TgProj_IceStorm.uc create mode 100755 exported/TgGame/Classes/TgProj_ImpalerArrow.uc create mode 100755 exported/TgGame/Classes/TgProj_KnifeLongRange.uc create mode 100755 exported/TgGame/Classes/TgProj_KnifeShortRange.uc create mode 100755 exported/TgGame/Classes/TgProj_LanepusherCannon.uc create mode 100755 exported/TgGame/Classes/TgProj_Loogie.uc create mode 100755 exported/TgGame/Classes/TgProj_MalDambaInhand.uc create mode 100755 exported/TgGame/Classes/TgProj_Molotov.uc create mode 100755 exported/TgGame/Classes/TgProj_OppressorMine.uc create mode 100755 exported/TgGame/Classes/TgProj_PoppyBomb.uc create mode 100755 exported/TgGame/Classes/TgProj_PotionLauncherProjectile.uc create mode 100755 exported/TgGame/Classes/TgProj_PotionLauncherProjectile_HighFireAngleTest.uc create mode 100755 exported/TgGame/Classes/TgProj_Reversal.uc create mode 100755 exported/TgGame/Classes/TgProj_Seedling.uc create mode 100755 exported/TgGame/Classes/TgProj_SeedlingSecondary.uc create mode 100755 exported/TgGame/Classes/TgProj_Simulated.uc create mode 100755 exported/TgGame/Classes/TgProj_SmokeScreen.uc create mode 100755 exported/TgGame/Classes/TgProj_SnakeToss.uc create mode 100755 exported/TgGame/Classes/TgProj_SoulOrb.uc create mode 100755 exported/TgGame/Classes/TgProj_SpeedOverRange.uc create mode 100755 exported/TgGame/Classes/TgProj_SpeedOverTime.uc create mode 100755 exported/TgGame/Classes/TgProj_Telepunch.uc create mode 100755 exported/TgGame/Classes/TgProj_TimeBomb.uc create mode 100755 exported/TgGame/Classes/TgProj_Tracer.uc create mode 100755 exported/TgGame/Classes/TgProj_VenomousGourd.uc create mode 100755 exported/TgGame/Classes/TgProj_Vine.uc create mode 100755 exported/TgGame/Classes/TgProjectile.uc create mode 100755 exported/TgGame/Classes/TgProperty.uc create mode 100755 exported/TgGame/Classes/TgRecoilKeyframe.uc create mode 100755 exported/TgGame/Classes/TgRepInfo_CapturePoint.uc create mode 100755 exported/TgGame/Classes/TgRepInfo_Deployable.uc create mode 100755 exported/TgGame/Classes/TgRepInfo_Factory.uc create mode 100755 exported/TgGame/Classes/TgRepInfo_Game.uc create mode 100755 exported/TgGame/Classes/TgRepInfo_Player.uc create mode 100755 exported/TgGame/Classes/TgRepInfo_Portal.uc create mode 100755 exported/TgGame/Classes/TgRepInfo_TaskForce.uc create mode 100755 exported/TgGame/Classes/TgRespawnBeaconBase.uc create mode 100755 exported/TgGame/Classes/TgRespawnBeaconEntrance.uc create mode 100755 exported/TgGame/Classes/TgRespawnBeaconExit.uc create mode 100755 exported/TgGame/Classes/TgSavedMove.uc create mode 100755 exported/TgGame/Classes/TgScreenCapturePostEffect.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_AIFreeze.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_AIMoveToActor.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_AIStartFireAt.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_AIStopFire.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_AITargetActor.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_AddAnimSets.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_BeaconEntranceSetActive.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_BeaconExitSetRespawn.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_BeginWaitForLookAt.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_ChangeScale.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_ClientLoadDevices.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_CloseHUDMenus.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_DefenseWaveSpawner.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_DespawnBots.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_EndMission.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_FillUltimateEnergy.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_ForceClientTutorialAction.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_GetBot.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_GetCharClass.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_GetLocalPlayerController.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_GetMaterialInst.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_GetPlayerCount.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_GetTaskForceCount.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_GetTaskForceNumber.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_GetTeamIndex.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_GiveCredits.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_GiveFullVitals.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_HackBot.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_JoinTeam.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_KillBots.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_KillCurrentSquad.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_Killpawns.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_LaunchHomeInstance.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_LogTutorialAction.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_MapOutroFinished.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_MarkSpawnReturn.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_NavIndicator.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_ParentAnimComponent.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_PauseSetupTimer.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_PingMinimap.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_PlayAnnouncement.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_PlayCameraAnim.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_PlayFullBodyAnim.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_ProgressTo.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_PushMatinee.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_RequestMission.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_ResetCooldowns.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_RespawnAllPlayers.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_RestartPlayers.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SelectBestSpawnPoint.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SendPlayerTrackingEvent.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SetCreditGainBlock.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SetCrowdControlImmune.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SetEnergyGainBlock.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SetHexState.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SetInputEnabled.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SetMapLane.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SetMissionTime.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SetPlayerLevel.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SetPlayerMesh.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SetPlayerMeshVisible.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SetSkelPosture.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SetTaskforce.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SetUIClock.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SetUITextBox.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SetUltimateEnergy.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_ShowGameTip.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_SpawnProjectile.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_TemporaryAddDevice.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_TemporaryRemoveDevice.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_TestResult.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_TgCameraShake.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_ToggleStaticMeshSilhouette.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_TrainingAwards.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_TriggerBots.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_TriggerInterpActor.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_TutorialHighlighter.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_TutorialInstruction.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_TutorialTips.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_UIAlert.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_UIElementVisibility.uc create mode 100755 exported/TgGame/Classes/TgSeqAct_UnpauseSetupTimer.uc create mode 100755 exported/TgGame/Classes/TgSeqCond_And.uc create mode 100755 exported/TgGame/Classes/TgSeqCond_CompareDamageType.uc create mode 100755 exported/TgGame/Classes/TgSeqCond_CompareDeviceId.uc create mode 100755 exported/TgGame/Classes/TgSeqCond_HasCondition.uc create mode 100755 exported/TgGame/Classes/TgSeqCond_IsHuman.uc create mode 100755 exported/TgGame/Classes/TgSeqCond_IsSecuring.uc create mode 100755 exported/TgGame/Classes/TgSeqCond_IsSpectating.uc create mode 100755 exported/TgGame/Classes/TgSeqCond_Or.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_BotDied.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_BotSpawned.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_BurnCardPurchased.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadCapturePointVictory.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundBegin.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundEnd.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF1.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF2.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF1.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF2.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF1.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF2.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_ChaosGameEvent.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_ChaosObjectiveActive.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_ChaosObjectiveStatus.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_ClassSelected.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_ClientGameOver.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange_Server.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_ControlPointOwnershipPercent.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_CrowdEvent.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_DebugConsoleKismetTest.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_DeployableFired.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_DoorStatusChanged.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_EnergyUpdated.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_Escort_Despawn_Success.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_FactoryEmpty.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_FiringDevice.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_InputReceived.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_LevelFadedIn.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_LoadoutChanged.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_LobbyCameraSetActive.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_LobbyEvents.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_LocalPlayerDied.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_LocalPlayerRecalled.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_LocalPlayerScoredKill.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredPhoenixKill.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredTowerKill.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_LookAtReceived.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_MICParameterEvent.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_MissionTimeRemaining.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_MissionTimer.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_Named.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_PayloadAttackersWin.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_PayloadBeginTF1.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_PayloadBeginTF2.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_PayloadCP1Reached.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_PayloadCP2Reached.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_PayloadDefendersWin.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_PayloadEndTF1.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_PayloadEndTF2.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_PayloadGameEvent.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_PayloadMissionEvents.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_PlaceableDestroyed.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_PlayOfTheGame.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_PlayerCountHit.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_PlayerInitialized.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_PlayerMoved.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_SetupTimeEnded.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_SiegePush.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_SpawnGateActivate.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Attackers.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Defenders.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_SpawnLanePusher.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_SpawnWise.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_SpectatorReady.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_SurvivalGameBegin.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_SurvivalGameEnd.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_SurvivalGameEvent.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_TakeDamage.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_TaskForceInactive.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_TaskForceScoreUpdated.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_TeamInactive.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_TicketCountUpdated.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_TimeLapse.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_Tutorial.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_TutorialEvent.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_UI_Event.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_UpdateLanePusherCount.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_Used.uc create mode 100755 exported/TgGame/Classes/TgSeqEvent_VaultLowHealth.uc create mode 100755 exported/TgGame/Classes/TgSeqOp_MathCalc.uc create mode 100755 exported/TgGame/Classes/TgSeqVar_DamageType.uc create mode 100755 exported/TgGame/Classes/TgSeqVar_Player.uc create mode 100755 exported/TgGame/Classes/TgSeqVar_RouteNumber.uc create mode 100755 exported/TgGame/Classes/TgSiegePushActor.uc create mode 100755 exported/TgGame/Classes/TgSilhouetteComponentPaladins.uc create mode 100755 exported/TgGame/Classes/TgSilhouetteComponentPaladinsDeployable.uc create mode 100755 exported/TgGame/Classes/TgSilhouetteComponentPaladinsPawn.uc create mode 100755 exported/TgGame/Classes/TgSilhouetteComponentPayload.uc create mode 100755 exported/TgGame/Classes/TgSilhouetteManager.uc create mode 100755 exported/TgGame/Classes/TgSkelCon_AstroSpinner.uc create mode 100755 exported/TgGame/Classes/TgSkelCon_CCD_IK_FootPlacement.uc create mode 100755 exported/TgGame/Classes/TgSkelCon_ClockworkSpinner.uc create mode 100755 exported/TgGame/Classes/TgSkelCon_FootPlacement.uc create mode 100755 exported/TgGame/Classes/TgSkelCon_Gate.uc create mode 100755 exported/TgGame/Classes/TgSkelCon_HitReaction.uc create mode 100755 exported/TgGame/Classes/TgSkelCon_HookChain.uc create mode 100755 exported/TgGame/Classes/TgSkelCon_LookAt.uc create mode 100755 exported/TgGame/Classes/TgSkelCon_OscillateBoneScale.uc create mode 100755 exported/TgGame/Classes/TgSkelCon_OscillateRotation.uc create mode 100755 exported/TgGame/Classes/TgSkelCon_OscillateTranslation.uc create mode 100755 exported/TgGame/Classes/TgSkelCon_RuckusSpinner.uc create mode 100755 exported/TgGame/Classes/TgSkelCon_SkinGate.uc create mode 100755 exported/TgGame/Classes/TgSkelCon_Spinner.uc create mode 100755 exported/TgGame/Classes/TgSkelCon_Spring.uc create mode 100755 exported/TgGame/Classes/TgSkelControlSingleBone.uc create mode 100755 exported/TgGame/Classes/TgSkelControlSingleBone_Ammo.uc create mode 100755 exported/TgGame/Classes/TgSkelControlSingleBone_Ammo_Lex.uc create mode 100755 exported/TgGame/Classes/TgSkelControlSingleBone_DisplayGroup.uc create mode 100755 exported/TgGame/Classes/TgSkelControlSingleBone_PistonBarrel.uc create mode 100755 exported/TgGame/Classes/TgSkelControlSingleBone_Skinned.uc create mode 100755 exported/TgGame/Classes/TgSkeletalMeshActor.uc create mode 100755 exported/TgGame/Classes/TgSkeletalMeshActorSpawnable.uc create mode 100755 exported/TgGame/Classes/TgSkeletalMeshActor_DestructibleTowerChunk.uc create mode 100755 exported/TgGame/Classes/TgSkeletalMeshActor_FlagStand.uc create mode 100755 exported/TgGame/Classes/TgSkeletalMeshActor_Leash.uc create mode 100755 exported/TgGame/Classes/TgSkeletalMeshActor_Loader.uc create mode 100755 exported/TgGame/Classes/TgSkeletalMeshActor_Lobby.uc create mode 100755 exported/TgGame/Classes/TgSkeletalMeshActor_LobbyBase.uc create mode 100755 exported/TgGame/Classes/TgSkeletalMeshActor_Pedestal.uc create mode 100755 exported/TgGame/Classes/TgSkeletalMeshActor_Posture.uc create mode 100755 exported/TgGame/Classes/TgSkeletalMeshComponent.uc create mode 100755 exported/TgGame/Classes/TgSkeletalMeshComponent_Weapon.uc create mode 100755 exported/TgGame/Classes/TgSkeletalMeshComponent_WeaponFirstPerson.uc create mode 100755 exported/TgGame/Classes/TgSkeletalMeshComponent_WeaponFirstPersonLance.uc create mode 100755 exported/TgGame/Classes/TgSkinnableInterface.uc create mode 100755 exported/TgGame/Classes/TgSoundGroup.uc create mode 100755 exported/TgGame/Classes/TgSoundInsulationVolume.uc create mode 100755 exported/TgGame/Classes/TgSoundNodeAttenuation.uc create mode 100755 exported/TgGame/Classes/TgSpawnGate.uc create mode 100755 exported/TgGame/Classes/TgSpawnTeleporterEntrance.uc create mode 100755 exported/TgGame/Classes/TgSpawnTeleporterExit.uc create mode 100755 exported/TgGame/Classes/TgSpecialFx.uc create mode 100755 exported/TgGame/Classes/TgSpecialFxLightManager.uc create mode 100755 exported/TgGame/Classes/TgSpectatorCamera.uc create mode 100755 exported/TgGame/Classes/TgSpectatorController.uc create mode 100755 exported/TgGame/Classes/TgSpectatorDirector.uc create mode 100755 exported/TgGame/Classes/TgSpectatorInput.uc create mode 100755 exported/TgGame/Classes/TgSpectatorTempCam.uc create mode 100755 exported/TgGame/Classes/TgSplineActor.uc create mode 100755 exported/TgGame/Classes/TgSplineActor_Payload.uc create mode 100755 exported/TgGame/Classes/TgSplineLoftActorSpawnable.uc create mode 100755 exported/TgGame/Classes/TgStartPoint.uc create mode 100755 exported/TgGame/Classes/TgStaticMeshActor.uc create mode 100755 exported/TgGame/Classes/TgStaticMeshActorGrass.uc create mode 100755 exported/TgGame/Classes/TgStaticMeshActorTargeting.uc create mode 100755 exported/TgGame/Classes/TgStaticMeshActor_CapturePoint.uc create mode 100755 exported/TgGame/Classes/TgStaticMeshActor_PantheonMIC.uc create mode 100755 exported/TgGame/Classes/TgStaticMeshActor_TeamColor.uc create mode 100755 exported/TgGame/Classes/TgStaticMeshComponent.uc create mode 100755 exported/TgGame/Classes/TgSubtitledMessages.uc create mode 100755 exported/TgGame/Classes/TgSurvivalFogVolumeDensityInfo.uc create mode 100755 exported/TgGame/Classes/TgTargetAimTrackingCurves.uc create mode 100755 exported/TgGame/Classes/TgTeamBlocker.uc create mode 100755 exported/TgGame/Classes/TgTeamPlayerStart.uc create mode 100755 exported/TgGame/Classes/TgTeleportPlayerVolume.uc create mode 100755 exported/TgGame/Classes/TgTeleporter.uc create mode 100755 exported/TgGame/Classes/TgTimeDilationVolume.uc create mode 100755 exported/TgGame/Classes/TgTimerManager.uc create mode 100755 exported/TgGame/Classes/TgTrigger_AIControlledCharacters.uc create mode 100755 exported/TgGame/Classes/TgTrigger_Instance.uc create mode 100755 exported/TgGame/Classes/TgTrigger_PlayerControlledCharacters.uc create mode 100755 exported/TgGame/Classes/TgTrigger_Use.uc create mode 100755 exported/TgGame/Classes/TgTutorialAnnouncer.uc create mode 100755 exported/TgGame/Classes/TgTutorialInfo.uc create mode 100755 exported/TgGame/Classes/TgTutorialVolume.uc create mode 100755 exported/TgGame/Classes/TgVisibilityVolume.uc create mode 100755 exported/TgGame/Classes/TgVolume.uc create mode 100755 exported/TgGame/Classes/TgVolumePathNode.uc create mode 100755 exported/TgGame/Classes/TgWaterVolume.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_AndroxusInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_AstroInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_BarrierTankInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_BombKingInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_BuckInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_DemonInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_FlakInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_GauntletInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_GroverInhandAxe.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_IceStaff.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_Lance.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_LexInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_LianInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_LongbowInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_OracleInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_Orb.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_OwlInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_PotionLauncher.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_RuckusInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_SkyeInHand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_Sniper.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_TyraInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_ViktorInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_YingInhand.uc create mode 100755 exported/TgGame/Classes/TgWeaponMeshActor_YingInhandProj.uc diff --git a/.gitignore b/.gitignore index f4290670..f2e33639 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ !tool.nu !manifest.toml !README.md +!exported/ +!exported/** !Config/ !Config/* !Development/ diff --git a/exported/.DS_Store b/exported/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7bf5a16aea05dbf33026a4e3615629cebe45cb32 GIT binary patch literal 8196 zcmeHML1+^}6#ZkVAB@CL#~2n!HeV| zc!(&7UPbUCh{xVNDc(F(P*L>F%(t0Ib~o!qh0KJRzuEu){P*8vW_C72B#N80d7@b& z%A!g+l|vI!q+ZscvXAc^gB0*5s!^SS#@c*kB^a`HHyi_w0mp!2z%k$$_#YU+o-Io@ zV&B(V*E$9q17pd6Tpv7CDGMw+TB@Z3jXDBArf^#oT;m*|d_0x~mK`mXEBe%@2f?m_ zj~GI`L+?p*$O6lbmfD?!b|=A+1)oraiVi{~t6`JhZukQ~Xo_f6yW>rgI)w(9%7H~8@dk;{Nu237F2CY&FZ5^^n zZT)89H?oOk#Ei5xG45VZPcgDbILA z`}Bi8)={=0I8)#>pc@0&#F2Zzwx=`kJp2&k7>}XvV+hk*aYYwhQ<@erifb6n=0NPZ zd~Z;1#;-rRpXK;gA0`h`HWrT7ONk>-JT`O!ET~bUZN3CF zi0R)%oXo?*pHsWrB%Pubm4SWB!aMn533v^yiEk&^`o{Pyi~cBvTUhZkT?C+MI*SpM zvl8P-6|5Uo+Mt`LZG89X46Wd5!@@?r=gB=y+`;zoFN`~3T$AHJ_qOt-cQW6DbPn0d z73r$_mH2A@_{cP%rj@05@Me^~ncJn(=UvV%Hinr|QXeai37H0-ur6TsMXjfqqZh+$ zOuVOmzWT&?hx#%x#@Si8X1WqrTHy*?FVFW%gL)IslV>v@8IRS6i6zR$!ts=!8YP AkEvents; + +defaultproperties +{ + TrackInstClass=Class'AkAudio.InterpTrackInstAkEvent' + TrackTitle="AkEvent" +} \ No newline at end of file diff --git a/exported/AkAudio/Classes/InterpTrackAkRTPC.uc b/exported/AkAudio/Classes/InterpTrackAkRTPC.uc new file mode 100755 index 00000000..caf77d7b --- /dev/null +++ b/exported/AkAudio/Classes/InterpTrackAkRTPC.uc @@ -0,0 +1,12 @@ +class InterpTrackAkRTPC extends InterpTrackFloatBase + native + collapsecategories + hidecategories(Object); + +var() string Param; + +defaultproperties +{ + TrackInstClass=Class'AkAudio.InterpTrackInstAkRTPC' + TrackTitle="AkRTPC" +} \ No newline at end of file diff --git a/exported/AkAudio/Classes/InterpTrackInstAkEvent.uc b/exported/AkAudio/Classes/InterpTrackInstAkEvent.uc new file mode 100755 index 00000000..979659f1 --- /dev/null +++ b/exported/AkAudio/Classes/InterpTrackInstAkEvent.uc @@ -0,0 +1,4 @@ +class InterpTrackInstAkEvent extends InterpTrackInst + native; + +var float LastUpdatePosition; diff --git a/exported/AkAudio/Classes/InterpTrackInstAkRTPC.uc b/exported/AkAudio/Classes/InterpTrackInstAkRTPC.uc new file mode 100755 index 00000000..df02287d --- /dev/null +++ b/exported/AkAudio/Classes/InterpTrackInstAkRTPC.uc @@ -0,0 +1,2 @@ +class InterpTrackInstAkRTPC extends InterpTrackInst + native; diff --git a/exported/AkAudio/Classes/SeqAct_AkClearBanks.uc b/exported/AkAudio/Classes/SeqAct_AkClearBanks.uc new file mode 100755 index 00000000..33a43e36 --- /dev/null +++ b/exported/AkAudio/Classes/SeqAct_AkClearBanks.uc @@ -0,0 +1,11 @@ +class SeqAct_AkClearBanks extends SequenceAction + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + InputLinks[0]=(LinkDesc="ClearBanks",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks=none + ObjName="AkClearBanks" +} \ No newline at end of file diff --git a/exported/AkAudio/Classes/SeqAct_AkLoadBank.uc b/exported/AkAudio/Classes/SeqAct_AkLoadBank.uc new file mode 100755 index 00000000..787e5594 --- /dev/null +++ b/exported/AkAudio/Classes/SeqAct_AkLoadBank.uc @@ -0,0 +1,19 @@ +class SeqAct_AkLoadBank extends SeqAct_Latent + native + forcescriptorder(true) + hidecategories(Object); + +var() bool Async; +var transient bool bWaitingCallback; +var() AkBank Bank; +var transient int Signal; + +defaultproperties +{ + Async=true + InputLinks[0]=(LinkDesc="Load",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Unload",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="AkLoadBank" +} \ No newline at end of file diff --git a/exported/AkAudio/Classes/SeqAct_AkPostEvent.uc b/exported/AkAudio/Classes/SeqAct_AkPostEvent.uc new file mode 100755 index 00000000..b77f1e64 --- /dev/null +++ b/exported/AkAudio/Classes/SeqAct_AkPostEvent.uc @@ -0,0 +1,14 @@ +class SeqAct_AkPostEvent extends SeqAct_Latent + native + forcescriptorder(true) + hidecategories(Object); + +var transient int Signal; +var() AkEvent Event; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Post",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="AkPostEvent" +} \ No newline at end of file diff --git a/exported/AkAudio/Classes/SeqAct_AkPostTrigger.uc b/exported/AkAudio/Classes/SeqAct_AkPostTrigger.uc new file mode 100755 index 00000000..3e8fd269 --- /dev/null +++ b/exported/AkAudio/Classes/SeqAct_AkPostTrigger.uc @@ -0,0 +1,12 @@ +class SeqAct_AkPostTrigger extends SequenceAction + native + forcescriptorder(true) + hidecategories(Object); + +var() string Trigger; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Post",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="AkPostTrigger" +} \ No newline at end of file diff --git a/exported/AkAudio/Classes/SeqAct_AkSetRTPCValue.uc b/exported/AkAudio/Classes/SeqAct_AkSetRTPCValue.uc new file mode 100755 index 00000000..6d082d56 --- /dev/null +++ b/exported/AkAudio/Classes/SeqAct_AkSetRTPCValue.uc @@ -0,0 +1,18 @@ +class SeqAct_AkSetRTPCValue extends SeqAct_Latent + native + forcescriptorder(true) + hidecategories(Object); + +var() string Param; +var() float Value; +var transient bool Running; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Value",LinkVar="None",PropertyName="Value",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="AkSetRTPCValue" +} \ No newline at end of file diff --git a/exported/AkAudio/Classes/SeqAct_AkSetState.uc b/exported/AkAudio/Classes/SeqAct_AkSetState.uc new file mode 100755 index 00000000..a1a4b80d --- /dev/null +++ b/exported/AkAudio/Classes/SeqAct_AkSetState.uc @@ -0,0 +1,14 @@ +class SeqAct_AkSetState extends SequenceAction + native + forcescriptorder(true) + hidecategories(Object); + +var() string StateGroup; +var() string State; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Set",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks=none + ObjName="AkSetState" +} \ No newline at end of file diff --git a/exported/AkAudio/Classes/SeqAct_AkSetSwitch.uc b/exported/AkAudio/Classes/SeqAct_AkSetSwitch.uc new file mode 100755 index 00000000..2bfdbca7 --- /dev/null +++ b/exported/AkAudio/Classes/SeqAct_AkSetSwitch.uc @@ -0,0 +1,13 @@ +class SeqAct_AkSetSwitch extends SequenceAction + native + forcescriptorder(true) + hidecategories(Object); + +var() string SwitchGroup; +var() string Switch; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Set",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="AkSetSwitch" +} \ No newline at end of file diff --git a/exported/AkAudio/Classes/SeqAct_AkStartAmbientSound.uc b/exported/AkAudio/Classes/SeqAct_AkStartAmbientSound.uc new file mode 100755 index 00000000..fe9632a5 --- /dev/null +++ b/exported/AkAudio/Classes/SeqAct_AkStartAmbientSound.uc @@ -0,0 +1,13 @@ +class SeqAct_AkStartAmbientSound extends SequenceAction + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Start All",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop All",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Start Target(s)",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[3]=(LinkDesc="Stop Targets(s)",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="AkStartAmbientSound" +} \ No newline at end of file diff --git a/exported/AkAudio/Classes/SeqAct_AkStopAll.uc b/exported/AkAudio/Classes/SeqAct_AkStopAll.uc new file mode 100755 index 00000000..4d06fc09 --- /dev/null +++ b/exported/AkAudio/Classes/SeqAct_AkStopAll.uc @@ -0,0 +1,11 @@ +class SeqAct_AkStopAll extends SequenceAction + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + InputLinks[0]=(LinkDesc="StopAll",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks=none + ObjName="AkStopAll" +} \ No newline at end of file diff --git a/exported/BattleClient/Classes/BattleClient.UPKG b/exported/BattleClient/Classes/BattleClient.UPKG new file mode 100755 index 00000000..29cb1564 --- /dev/null +++ b/exported/BattleClient/Classes/BattleClient.UPKG @@ -0,0 +1,4 @@ +[Flags] +AllowDownload=True +ClientOptional=False +ServerSideOnly=False diff --git a/exported/BattleClient/Classes/BattleHUD.uc b/exported/BattleClient/Classes/BattleHUD.uc new file mode 100755 index 00000000..ca148c3e --- /dev/null +++ b/exported/BattleClient/Classes/BattleHUD.uc @@ -0,0 +1,17 @@ +class BattleHUD extends TgClientHUD + transient + native + config(Game) + hidecategories(Navigation); + +// Export UBattleHUD::execBattleHUDFunction(FFrame&, void* const) +native function BattleHUDFunction(); + +defaultproperties +{ + // Reference: PComPictureInPicture'BattleClient.Default__BattleHUD.PictureInPicture' + // Archetype: PComPictureInPicture'TgClient.Default__TgClientHUD.PictureInPicture' + begin object name="PictureInPicture" + end object + m_PictureInPicture=PictureInPicture +} \ No newline at end of file diff --git a/exported/BattleClient/Classes/BattleLaunch.uc b/exported/BattleClient/Classes/BattleLaunch.uc new file mode 100755 index 00000000..6f725cb2 --- /dev/null +++ b/exported/BattleClient/Classes/BattleLaunch.uc @@ -0,0 +1,10 @@ +class BattleLaunch extends TgGameLaunch + native + config(Game) + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + HUDType=Class'BattleClient.BattleHUD' + PlayerControllerClass=Class'BattleGame.BattlePlayerController' +} \ No newline at end of file diff --git a/exported/BattleGame/Classes/BattleGame.UPKG b/exported/BattleGame/Classes/BattleGame.UPKG new file mode 100755 index 00000000..29cb1564 --- /dev/null +++ b/exported/BattleGame/Classes/BattleGame.UPKG @@ -0,0 +1,4 @@ +[Flags] +AllowDownload=True +ClientOptional=False +ServerSideOnly=False diff --git a/exported/BattleGame/Classes/BattleObject.uc b/exported/BattleGame/Classes/BattleObject.uc new file mode 100755 index 00000000..3ba8cd19 --- /dev/null +++ b/exported/BattleGame/Classes/BattleObject.uc @@ -0,0 +1,2 @@ +class BattleObject extends TgObject + native; diff --git a/exported/BattleGame/Classes/BattlePlayerController.uc b/exported/BattleGame/Classes/BattlePlayerController.uc new file mode 100755 index 00000000..b6aaa37a --- /dev/null +++ b/exported/BattleGame/Classes/BattlePlayerController.uc @@ -0,0 +1,21 @@ +class BattlePlayerController extends TgPlayerController + native(Pawns) + config(Game) + hidecategories(Navigation); + +// Export UBattlePlayerController::execBattlePlayerControllerFunction(FFrame&, void* const) +native function BattlePlayerControllerFunction(); + +defaultproperties +{ + // Reference: CylinderComponent'BattleGame.Default__BattlePlayerController.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPlayerController.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Core/Classes/Commandlet.uc b/exported/Core/Classes/Commandlet.uc new file mode 100755 index 00000000..b91ff882 --- /dev/null +++ b/exported/Core/Classes/Commandlet.uc @@ -0,0 +1,28 @@ +class Commandlet extends Object + abstract + transient + native; + +var const localized string HelpDescription; +var const localized string HelpUsage; +var const localized string HelpWebLink; +var const localized array HelpParamNames; +var const localized array HelpParamDescriptions; +var bool IsServer; +var bool IsClient; +var bool IsEditor; +var bool LogToConsole; +var bool ShowErrorCount; + +event int Main(string Params) +{ + //return ReturnValue; +} + +defaultproperties +{ + IsServer=true + IsClient=true + IsEditor=true + ShowErrorCount=true +} \ No newline at end of file diff --git a/exported/Core/Classes/Component.uc b/exported/Core/Classes/Component.uc new file mode 100755 index 00000000..42c08d9b --- /dev/null +++ b/exported/Core/Classes/Component.uc @@ -0,0 +1,6 @@ +class Component extends Object + abstract + native; + +var native const Class TemplateOwnerClass; +var native const name TemplateName; diff --git a/exported/Core/Classes/Core.UPKG b/exported/Core/Classes/Core.UPKG new file mode 100755 index 00000000..1a07be93 --- /dev/null +++ b/exported/Core/Classes/Core.UPKG @@ -0,0 +1,4 @@ +[Flags] +AllowDownload=False +ClientOptional=False +ServerSideOnly=False diff --git a/exported/Core/Classes/DistributionFloat.uc b/exported/Core/Classes/DistributionFloat.uc new file mode 100755 index 00000000..687dc30c --- /dev/null +++ b/exported/Core/Classes/DistributionFloat.uc @@ -0,0 +1,30 @@ +class DistributionFloat extends Component + abstract + native + editinlinenew + collapsecategories + hidecategories(Object); + +struct native RawDistributionFloat extends RawDistribution +{ + var() noclear export editinline DistributionFloat Distribution; +}; + +struct native MatineeRawDistributionFloat extends RawDistributionFloat +{ + var float MatineeValue; + var bool bInMatinee; +}; + +var private native const noexport Pointer VfTable_FCurveEdInterface; +var(Baked) bool bCanBeBaked; +var bool bIsDirty; + +// Export UDistributionFloat::execGetFloatValue(FFrame&, void* const) +native function float GetFloatValue(optional float F = 0.0000000); + +defaultproperties +{ + bCanBeBaked=true + bIsDirty=true +} \ No newline at end of file diff --git a/exported/Core/Classes/DistributionVector.uc b/exported/Core/Classes/DistributionVector.uc new file mode 100755 index 00000000..ce414ba9 --- /dev/null +++ b/exported/Core/Classes/DistributionVector.uc @@ -0,0 +1,42 @@ +class DistributionVector extends Component + abstract + native + editinlinenew + collapsecategories + hidecategories(Object); + +enum EDistributionVectorLockFlags +{ + EDVLF_None, // 0 + EDVLF_XY, // 1 + EDVLF_XZ, // 2 + EDVLF_YZ, // 3 + EDVLF_XYZ, // 4 + EDVLF_MAX // 5 +}; + +enum EDistributionVectorMirrorFlags +{ + EDVMF_Same, // 0 + EDVMF_Different, // 1 + EDVMF_Mirror, // 2 + EDVMF_MAX // 3 +}; + +struct native RawDistributionVector extends RawDistribution +{ + var() noclear export editinline DistributionVector Distribution; +}; + +var private native const noexport Pointer VfTable_FCurveEdInterface; +var(Baked) bool bCanBeBaked; +var bool bIsDirty; + +// Export UDistributionVector::execGetVectorValue(FFrame&, void* const) +native function Vector GetVectorValue(optional float F = 0.0000000, optional int LastExtreme = 0); + +defaultproperties +{ + bCanBeBaked=true + bIsDirty=true +} \ No newline at end of file diff --git a/exported/Core/Classes/Factory.uc b/exported/Core/Classes/Factory.uc new file mode 100755 index 00000000..ac907230 --- /dev/null +++ b/exported/Core/Classes/Factory.uc @@ -0,0 +1,15 @@ +class Factory extends Object + abstract + native + noexport; + +var Class SupportedClass; +var Class ContextClass; +var string Description; +var array Formats; +var bool bCreateNew; +var bool bEditAfterNew; +var bool bEditorImport; +var bool bText; +var int AutoPriority; +var array ValidGameNames; diff --git a/exported/Core/Classes/HelpCommandlet.uc b/exported/Core/Classes/HelpCommandlet.uc new file mode 100755 index 00000000..912cfb5a --- /dev/null +++ b/exported/Core/Classes/HelpCommandlet.uc @@ -0,0 +1,21 @@ +class HelpCommandlet extends Commandlet + transient + native; + +event int Main(string Params) +{ + //return ReturnValue; +} + +defaultproperties +{ + HelpDescription="This commandlet displays help information on other commandlets" + HelpUsage="gamename.exe help " + HelpWebLink="https://udn.epicgames.com/bin/view/Three/HelpCommandlet" + HelpParamNames[0]="list" + HelpParamNames[1]="commandlet name" + HelpParamNames[2]="webhelp" + HelpParamDescriptions[0]="Lists all commandlets that are available" + HelpParamDescriptions[1]="Displays help information for the specified commandlet" + HelpParamDescriptions[2]="Launches a browser with the URL of the web page that documents the commandlet" +} \ No newline at end of file diff --git a/exported/Core/Classes/Interface.uc b/exported/Core/Classes/Interface.uc new file mode 100755 index 00000000..1a5d52a9 --- /dev/null +++ b/exported/Core/Classes/Interface.uc @@ -0,0 +1,3 @@ +interface Interface + abstract + native; diff --git a/exported/Core/Classes/Object.uc b/exported/Core/Classes/Object.uc new file mode 100755 index 00000000..70e0b7f9 --- /dev/null +++ b/exported/Core/Classes/Object.uc @@ -0,0 +1,2193 @@ +class Object + abstract + native + noexport; + +const MaxInt = 0x7fffffff; +const Pi = 3.1415926535897932; +const RadToDeg = 57.295779513082321600; +const DegToRad = 0.017453292519943296; +const UnrRotToRad = 0.00009587379924285; +const RadToUnrRot = 10430.3783504704527; +const DegToUnrRot = 182.0444; +const UnrRotToDeg = 0.00549316540360483; +const INDEX_NONE = -1; +const AspectRatio4x3 = 1.33333; +const AspectRatio5x4 = 1.25; +const AspectRatio16x9 = 1.77778; +const AspectRatio16x10 = 1.6; +const InvAspectRatio4x3 = 0.75; +const InvAspectRatio5x4 = 0.8; +const InvAspectRatio16x10 = 0.625; + +enum AlphaBlendType +{ + ABT_Linear, // 0 + ABT_Cubic, // 1 + ABT_Sinusoidal, // 2 + ABT_EaseInOutExponent2, // 3 + ABT_EaseInOutExponent3, // 4 + ABT_EaseInOutExponent4, // 5 + ABT_EaseInOutExponent5, // 6 + ABT_MAX // 7 +}; + +enum EAxis +{ + AXIS_NONE, // 0 + AXIS_X, // 1 + AXIS_Y, // 2 + AXIS_BLANK, // 3 + AXIS_Z, // 4 + AXIS_MAX // 5 +}; + +enum EInputEvent +{ + IE_Pressed, // 0 + IE_Released, // 1 + IE_Repeat, // 2 + IE_DoubleClick, // 3 + IE_Axis, // 4 + IE_MAX // 5 +}; + +enum EAspectRatioAxisConstraint +{ + AspectRatio_MaintainYFOV, // 0 + AspectRatio_MaintainXFOV, // 1 + AspectRatio_MajorAxisFOV, // 2 + AspectRatio_MAX // 3 +}; + +enum EInterpCurveMode +{ + CIM_Linear, // 0 + CIM_CurveAuto, // 1 + CIM_Constant, // 2 + CIM_CurveUser, // 3 + CIM_CurveBreak, // 4 + CIM_CurveAutoClamped, // 5 + CIM_MAX // 6 +}; + +enum EInterpMethodType +{ + IMT_UseFixedTangentEvalAndNewAutoTangents,// 0 + IMT_UseFixedTangentEval, // 1 + IMT_UseBrokenTangentEval, // 2 + IMT_MAX // 3 +}; + +enum ETickingGroup +{ + TG_PreAsyncWork, // 0 + TG_DuringAsyncWorkThreaded, // 1 + TG_DuringAsyncWork, // 2 + TG_PostAsyncWork, // 3 + TG_PostUpdateWork, // 4 + TG_EffectsUpdateWork, // 5 + TG_MAX // 6 +}; + +enum EAutomatedRunResult +{ + ARR_Unknown, // 0 + ARR_OOM, // 1 + ARR_Passed, // 2 + ARR_MAX // 3 +}; + +enum EDebugBreakType +{ + DEBUGGER_NativeOnly, // 0 + DEBUGGER_ScriptOnly, // 1 + DEBUGGER_Both, // 2 + DEBUGGER_MAX // 3 +}; + +struct Pointer +{ + var native const int Dummy; +}; + +struct HatPointer +{ + var native const int Dummy; +}; + +struct QWord +{ + var() native int A; + var() native int B; +}; + +struct dword +{ + var() native int A; +}; + +struct IpAddr +{ + var int AddrA; + var int AddrB; + var int AddrC; + var int AddrD; + var int Port; + + structdefaultproperties + { + AddrA=0 + AddrB=0 + AddrC=0 + AddrD=0 + Port=0 + } +}; + +struct Double +{ + var native const int A; + var native const int B; +}; + +struct ThreadSafeCounter +{ + var native const int Value; +}; + +struct BitArray_Mirror +{ + var native const Pointer IndirectData; + var native const int InlineData[4]; + var native const int NumBits; + var native const int MaxBits; +}; + +struct SparseArray_Mirror +{ + var native const array Elements; + var native const BitArray_Mirror AllocationFlags; + var native const int FirstFreeIndex; + var native const int NumFreeIndices; +}; + +struct Set_Mirror +{ + var native const SparseArray_Mirror Elements; + var native const int InlineHash; + var native const Pointer Hash; + var native const int HashSize; +}; + +struct Map_Mirror +{ + var native const Set_Mirror Pairs; +}; + +struct MultiMap_Mirror +{ + var native const Set_Mirror Pairs; +}; + +struct UntypedBulkData_Mirror +{ + var native const Pointer VfTable; + var native const int BulkDataFlags; + var native const int ElementCount; + var native const int BulkDataOffsetInFile; + var native const int BulkDataSizeOnDisk; + var native const int SavedBulkDataFlags; + var native const int SavedElementCount; + var native const int SavedBulkDataOffsetInFile; + var native const int SavedBulkDataSizeOnDisk; + var native const Pointer BulkData; + var native const int LockStatus; + var native const Pointer AttachedAr; + var native const int bShouldFreeOnEmpty; +}; + +struct RenderCommandFence_Mirror +{ + var native const transient int NumPendingFences; +}; + +struct FColorVertexBuffer_Mirror +{ + var native const Pointer VfTable; + var native const Pointer VertexData; + var private const int Data; + var private const int Stride; + var private const int NumVertices; + + structdefaultproperties + { + Data=0 + Stride=0 + NumVertices=0 + } +}; + +struct IndirectArray_Mirror +{ + var native const Pointer Data; + var native const int ArrayNum; + var native const int ArrayMax; +}; + +struct Array_Mirror +{ + var native const Pointer Data; + var native const int ArrayNum; + var native const int ArrayMax; +}; + +struct InlinePointerArray_Mirror +{ + var private const Pointer InlineData; + var private const Array_Mirror SecondaryData; + + structdefaultproperties + { + InlineData=() + SecondaryData=() + } +}; + +struct atomic immutable Guid +{ + var int A; + var int B; + var int C; + var int D; + + structdefaultproperties + { + A=0 + B=0 + C=0 + D=0 + } +}; + +struct atomic immutable Vector +{ + var() float X; + var() float Y; + var() float Z; + + structdefaultproperties + { + X=0.0000000 + Y=0.0000000 + Z=0.0000000 + } +}; + +struct atomic immutable Vector4 +{ + var() float X; + var() float Y; + var() float Z; + var() float W; + + structdefaultproperties + { + X=0.0000000 + Y=0.0000000 + Z=0.0000000 + W=0.0000000 + } +}; + +struct atomic immutable Vector2D +{ + var() float X; + var() float Y; + + structdefaultproperties + { + X=0.0000000 + Y=0.0000000 + } +}; + +struct atomic immutable TwoVectors +{ + var() Vector v1; + var() Vector v2; + + structdefaultproperties + { + v1=(X=0.0000000,Y=0.0000000,Z=0.0000000) + v2=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct atomic immutable Plane extends Vector +{ + var() float W; +}; + +struct atomic immutable Rotator +{ + var() int Pitch; + var() int Yaw; + var() int Roll; + + structdefaultproperties + { + Pitch=0 + Yaw=0 + Roll=0 + } +}; + +struct atomic immutable Quat +{ + var() float X; + var() float Y; + var() float Z; + var() float W; + + structdefaultproperties + { + X=0.0000000 + Y=0.0000000 + Z=0.0000000 + W=0.0000000 + } +}; + +struct atomic immutable PackedNormal +{ + var() byte X; + var() byte Y; + var() byte Z; + var() byte W; + + structdefaultproperties + { + X=0 + Y=0 + Z=0 + W=0 + } +}; + +struct atomic immutable IntPoint +{ + var() int X; + var() int Y; + + structdefaultproperties + { + X=0 + Y=0 + } +}; + +struct SHVector +{ + var() float V[9]; + var float Padding[3]; + + structdefaultproperties + { + V[0]=0.0000000 + V[1]=0.0000000 + V[2]=0.0000000 + V[3]=0.0000000 + V[4]=0.0000000 + V[5]=0.0000000 + V[6]=0.0000000 + V[7]=0.0000000 + V[8]=0.0000000 + Padding[0]=0.0000000 + Padding[1]=0.0000000 + Padding[2]=0.0000000 + } +}; + +struct SHVectorRGB +{ + var() SHVector R; + var() SHVector G; + var() SHVector B; + + structdefaultproperties + { + R=(V=0.0000000,V[1]=0.0000000,V[2]=0.0000000,V[3]=0.0000000,V[4]=0.0000000,V[5]=0.0000000,V[6]=0.0000000,V[7]=0.0000000,V[8]=0.0000000,Padding=0.0000000,Padding[1]=0.0000000,Padding[2]=0.0000000) + G=(V=0.0000000,V[1]=0.0000000,V[2]=0.0000000,V[3]=0.0000000,V[4]=0.0000000,V[5]=0.0000000,V[6]=0.0000000,V[7]=0.0000000,V[8]=0.0000000,Padding=0.0000000,Padding[1]=0.0000000,Padding[2]=0.0000000) + B=(V=0.0000000,V[1]=0.0000000,V[2]=0.0000000,V[3]=0.0000000,V[4]=0.0000000,V[5]=0.0000000,V[6]=0.0000000,V[7]=0.0000000,V[8]=0.0000000,Padding=0.0000000,Padding[1]=0.0000000,Padding[2]=0.0000000) + } +}; + +struct TPOV +{ + var() Vector Location; + var() Rotator Rotation; + var() float FOV; + var() Vector2D HUDOffset; + + structdefaultproperties + { + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Rotation=(Pitch=0,Yaw=0,Roll=0) + FOV=90.0000000 + HUDOffset=(X=0.0000000,Y=0.0000000) + } +}; + +struct TAlphaBlend +{ + var const float AlphaIn; + var const float AlphaOut; + var() float AlphaTarget; + var() float BlendTime; + var const float BlendTimeToGo; + var() Object.AlphaBlendType BlendType; + + structdefaultproperties + { + AlphaIn=0.0000000 + AlphaOut=0.0000000 + AlphaTarget=0.0000000 + BlendTime=0.6700000 + BlendTimeToGo=0.0000000 + BlendType=AlphaBlendType.ABT_Linear + } +}; + +struct atomic immutable Color +{ + var() byte B; + var() byte G; + var() byte R; + var() byte A; + + structdefaultproperties + { + B=0 + G=0 + R=0 + A=0 + } +}; + +struct atomic immutable LinearColor +{ + var() float R; + var() float G; + var() float B; + var() float A; + + structdefaultproperties + { + R=0.0000000 + G=0.0000000 + B=0.0000000 + A=1.0000000 + } +}; + +struct atomic immutable Box +{ + var() Vector Min; + var() Vector Max; + var byte IsValid; + + structdefaultproperties + { + Min=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Max=(X=0.0000000,Y=0.0000000,Z=0.0000000) + IsValid=0 + } +}; + +struct BoxSphereBounds +{ + var() Vector Origin; + var() Vector BoxExtent; + var() float SphereRadius; + + structdefaultproperties + { + Origin=(X=0.0000000,Y=0.0000000,Z=0.0000000) + BoxExtent=(X=0.0000000,Y=0.0000000,Z=0.0000000) + SphereRadius=0.0000000 + } +}; + +struct atomic immutable Matrix +{ + var() Plane XPlane; + var() Plane YPlane; + var() Plane ZPlane; + var() Plane WPlane; + + structdefaultproperties + { + XPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000) + YPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000) + ZPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000) + WPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct Cylinder +{ + var float Radius; + var float Height; + + structdefaultproperties + { + Radius=0.0000000 + Height=0.0000000 + } +}; + +struct InterpCurvePointFloat +{ + var() float InVal; + var() float OutVal; + var() float ArriveTangent; + var() float LeaveTangent; + var() Object.EInterpCurveMode InterpMode; + + structdefaultproperties + { + InVal=0.0000000 + OutVal=0.0000000 + ArriveTangent=0.0000000 + LeaveTangent=0.0000000 + InterpMode=EInterpCurveMode.CIM_Linear + } +}; + +struct InterpCurveFloat +{ + var() array Points; + var Object.EInterpMethodType InterpMethod; + + structdefaultproperties + { + Points=none + InterpMethod=EInterpMethodType.IMT_UseFixedTangentEvalAndNewAutoTangents + } +}; + +struct InterpCurvePointVector2D +{ + var() float InVal; + var() Vector2D OutVal; + var() Vector2D ArriveTangent; + var() Vector2D LeaveTangent; + var() Object.EInterpCurveMode InterpMode; + + structdefaultproperties + { + InVal=0.0000000 + OutVal=(X=0.0000000,Y=0.0000000) + ArriveTangent=(X=0.0000000,Y=0.0000000) + LeaveTangent=(X=0.0000000,Y=0.0000000) + InterpMode=EInterpCurveMode.CIM_Linear + } +}; + +struct InterpCurveVector2D +{ + var() array Points; + var Object.EInterpMethodType InterpMethod; + + structdefaultproperties + { + Points=none + InterpMethod=EInterpMethodType.IMT_UseFixedTangentEvalAndNewAutoTangents + } +}; + +struct InterpCurvePointVector +{ + var() float InVal; + var() Vector OutVal; + var() Vector ArriveTangent; + var() Vector LeaveTangent; + var() Object.EInterpCurveMode InterpMode; + + structdefaultproperties + { + InVal=0.0000000 + OutVal=(X=0.0000000,Y=0.0000000,Z=0.0000000) + ArriveTangent=(X=0.0000000,Y=0.0000000,Z=0.0000000) + LeaveTangent=(X=0.0000000,Y=0.0000000,Z=0.0000000) + InterpMode=EInterpCurveMode.CIM_Linear + } +}; + +struct InterpCurveVector +{ + var() array Points; + var Object.EInterpMethodType InterpMethod; + + structdefaultproperties + { + Points=none + InterpMethod=EInterpMethodType.IMT_UseFixedTangentEvalAndNewAutoTangents + } +}; + +struct InterpCurvePointTwoVectors +{ + var() float InVal; + var() TwoVectors OutVal; + var() TwoVectors ArriveTangent; + var() TwoVectors LeaveTangent; + var() Object.EInterpCurveMode InterpMode; + + structdefaultproperties + { + InVal=0.0000000 + OutVal=(v1=(X=0.0000000,Y=0.0000000,Z=0.0000000),v2=(X=0.0000000,Y=0.0000000,Z=0.0000000)) + ArriveTangent=(v1=(X=0.0000000,Y=0.0000000,Z=0.0000000),v2=(X=0.0000000,Y=0.0000000,Z=0.0000000)) + LeaveTangent=(v1=(X=0.0000000,Y=0.0000000,Z=0.0000000),v2=(X=0.0000000,Y=0.0000000,Z=0.0000000)) + InterpMode=EInterpCurveMode.CIM_Linear + } +}; + +struct InterpCurveTwoVectors +{ + var() array Points; + var Object.EInterpMethodType InterpMethod; + + structdefaultproperties + { + Points=none + InterpMethod=EInterpMethodType.IMT_UseFixedTangentEvalAndNewAutoTangents + } +}; + +struct InterpCurvePointQuat +{ + var() float InVal; + var() Quat OutVal; + var() Quat ArriveTangent; + var() Quat LeaveTangent; + var() Object.EInterpCurveMode InterpMode; + + structdefaultproperties + { + InVal=0.0000000 + OutVal=(X=0.0000000,Y=0.0000000,Z=0.0000000,W=0.0000000) + ArriveTangent=(X=0.0000000,Y=0.0000000,Z=0.0000000,W=0.0000000) + LeaveTangent=(X=0.0000000,Y=0.0000000,Z=0.0000000,W=0.0000000) + InterpMode=EInterpCurveMode.CIM_Linear + } +}; + +struct InterpCurveQuat +{ + var() array Points; + var Object.EInterpMethodType InterpMethod; + + structdefaultproperties + { + Points=none + InterpMethod=EInterpMethodType.IMT_UseFixedTangentEvalAndNewAutoTangents + } +}; + +struct InterpCurvePointLinearColor +{ + var() float InVal; + var() LinearColor OutVal; + var() LinearColor ArriveTangent; + var() LinearColor LeaveTangent; + var() Object.EInterpCurveMode InterpMode; + + structdefaultproperties + { + InVal=0.0000000 + OutVal=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + ArriveTangent=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + LeaveTangent=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + InterpMode=EInterpCurveMode.CIM_Linear + } +}; + +struct InterpCurveLinearColor +{ + var() array Points; + var Object.EInterpMethodType InterpMethod; + + structdefaultproperties + { + Points=none + InterpMethod=EInterpMethodType.IMT_UseFixedTangentEvalAndNewAutoTangents + } +}; + +struct RawDistribution +{ + var byte Type; + var byte Op; + var byte LookupTableNumElements; + var byte LookupTableChunkSize; + var array LookupTable; + var float LookupTableTimeScale; + var float LookupTableStartTime; + + structdefaultproperties + { + Type=0 + Op=0 + LookupTableNumElements=0 + LookupTableChunkSize=0 + LookupTable=none + LookupTableTimeScale=0.0000000 + LookupTableStartTime=0.0000000 + } +}; + +struct RenderCommandFence +{ + var private native const int NumPendingFences; +}; + +struct OctreeElementId +{ + var private native const Pointer Node; + var private native const int ElementIndex; +}; + +struct BoneAtom +{ + var Quat Rotation; + var Vector Translation; + var float Scale; + + structdefaultproperties + { + Rotation=(X=0.0000000,Y=0.0000000,Z=0.0000000,W=0.0000000) + Translation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Scale=0.0000000 + } +}; + +var private native const editconst noexport Pointer VfTableObject; +var private native const editconst Pointer HashNext; +var private native const editconst QWord ObjectFlags; +var private native const editconst Pointer HashOuterNext; +var private native const editconst Pointer StateFrame; +var private native const editconst noexport Object Linker; +var private native const editconst noexport Pointer LinkerIndex; +var private native const editconst noexport int ObjectInternalInteger; +var private native const editconst noexport int NetIndex; +var native const editconst Object Outer; +var() native const editconst name Name; +var native const editconst Class Class; +var() native const editconst Object ObjectArchetype; + +// Export UObject::execNot_PreBool(FFrame&, void* const) +native(129) static final preoperator bool !(bool A); + +// Export UObject::execEqualEqual_BoolBool(FFrame&, void* const) +native(242) static final operator(24) bool ==(bool A, bool B); + +// Export UObject::execNotEqual_BoolBool(FFrame&, void* const) +native(243) static final operator(26) bool !=(bool A, bool B); + +// Export UObject::execAndAnd_BoolBool(FFrame&, void* const) +native(130) static final operator(30) bool &&(bool A, skip bool B); + +// Export UObject::execXorXor_BoolBool(FFrame&, void* const) +native(131) static final operator(30) bool ^^(bool A, bool B); + +// Export UObject::execOrOr_BoolBool(FFrame&, void* const) +native(132) static final operator(32) bool ||(bool A, skip bool B); + +// Export UObject::execMultiplyEqual_ByteByte(FFrame&, void* const) +native(133) static final operator(34) byte *=(out byte A, byte B); + +// Export UObject::execMultiplyEqual_ByteFloat(FFrame&, void* const) +native(198) static final operator(34) byte *=(out byte A, float B); + +// Export UObject::execDivideEqual_ByteByte(FFrame&, void* const) +native(134) static final operator(34) byte /=(out byte A, byte B); + +// Export UObject::execAddEqual_ByteByte(FFrame&, void* const) +native(135) static final operator(34) byte +=(out byte A, byte B); + +// Export UObject::execSubtractEqual_ByteByte(FFrame&, void* const) +native(136) static final operator(34) byte -=(out byte A, byte B); + +// Export UObject::execAddAdd_PreByte(FFrame&, void* const) +native(137) static final preoperator byte ++(out byte A); + +// Export UObject::execSubtractSubtract_PreByte(FFrame&, void* const) +native(138) static final preoperator byte --(out byte A); + +// Export UObject::execAddAdd_Byte(FFrame&, void* const) +native(139) static final postoperator byte ++(out byte A); + +// Export UObject::execSubtractSubtract_Byte(FFrame&, void* const) +native(140) static final postoperator byte --(out byte A); + +// Export UObject::execComplement_PreInt(FFrame&, void* const) +native(141) static final preoperator int ~(int A); + +// Export UObject::execSubtract_PreInt(FFrame&, void* const) +native(143) static final preoperator int -(int A); + +// Export UObject::execMultiply_IntInt(FFrame&, void* const) +native(144) static final operator(16) int *(int A, int B); + +// Export UObject::execDivide_IntInt(FFrame&, void* const) +native(145) static final operator(16) int /(int A, int B); + +// Export UObject::execPercent_IntInt(FFrame&, void* const) +native(253) static final operator(18) int %(int A, int B); + +// Export UObject::execAdd_IntInt(FFrame&, void* const) +native(146) static final operator(20) int +(int A, int B); + +// Export UObject::execSubtract_IntInt(FFrame&, void* const) +native(147) static final operator(20) int -(int A, int B); + +// Export UObject::execLessLess_IntInt(FFrame&, void* const) +native(148) static final operator(22) int <<(int A, int B); + +// Export UObject::execGreaterGreater_IntInt(FFrame&, void* const) +native(149) static final operator(22) int >>(int A, int B); + +// Export UObject::execGreaterGreaterGreater_IntInt(FFrame&, void* const) +native(196) static final operator(22) int >>>(int A, int B); + +// Export UObject::execLess_IntInt(FFrame&, void* const) +native(150) static final operator(24) bool <(int A, int B); + +// Export UObject::execGreater_IntInt(FFrame&, void* const) +native(151) static final operator(24) bool >(int A, int B); + +// Export UObject::execLessEqual_IntInt(FFrame&, void* const) +native(152) static final operator(24) bool <=(int A, int B); + +// Export UObject::execGreaterEqual_IntInt(FFrame&, void* const) +native(153) static final operator(24) bool >=(int A, int B); + +// Export UObject::execEqualEqual_IntInt(FFrame&, void* const) +native(154) static final operator(24) bool ==(int A, int B); + +// Export UObject::execNotEqual_IntInt(FFrame&, void* const) +native(155) static final operator(26) bool !=(int A, int B); + +// Export UObject::execAnd_IntInt(FFrame&, void* const) +native(156) static final operator(28) int &(int A, int B); + +// Export UObject::execXor_IntInt(FFrame&, void* const) +native(157) static final operator(28) int ^(int A, int B); + +// Export UObject::execOr_IntInt(FFrame&, void* const) +native(158) static final operator(28) int |(int A, int B); + +// Export UObject::execMultiplyEqual_IntFloat(FFrame&, void* const) +native(159) static final operator(34) int *=(out int A, float B); + +// Export UObject::execDivideEqual_IntFloat(FFrame&, void* const) +native(160) static final operator(34) int /=(out int A, float B); + +// Export UObject::execAddEqual_IntInt(FFrame&, void* const) +native(161) static final operator(34) int +=(out int A, int B); + +// Export UObject::execSubtractEqual_IntInt(FFrame&, void* const) +native(162) static final operator(34) int -=(out int A, int B); + +// Export UObject::execAddAdd_PreInt(FFrame&, void* const) +native(163) static final preoperator int ++(out int A); + +// Export UObject::execSubtractSubtract_PreInt(FFrame&, void* const) +native(164) static final preoperator int --(out int A); + +// Export UObject::execAddAdd_Int(FFrame&, void* const) +native(165) static final postoperator int ++(out int A); + +// Export UObject::execSubtractSubtract_Int(FFrame&, void* const) +native(166) static final postoperator int --(out int A); + +// Export UObject::execRand(FFrame&, void* const) +native(167) static final function int Rand(int Max); + +// Export UObject::execMin(FFrame&, void* const) +native(249) static final function int Min(int A, int B); + +// Export UObject::execMax(FFrame&, void* const) +native(250) static final function int Max(int A, int B); + +// Export UObject::execClamp(FFrame&, void* const) +native(251) static final function int Clamp(int V, int A, int B); + +// Export UObject::execToHex(FFrame&, void* const) +native static final function string ToHex(int A); + +// Export UObject::execSubtract_PreFloat(FFrame&, void* const) +native(169) static final preoperator float -(float A); + +// Export UObject::execMultiplyMultiply_FloatFloat(FFrame&, void* const) +native(170) static final operator(12) float **(float Base, float Exp); + +// Export UObject::execMultiply_FloatFloat(FFrame&, void* const) +native(171) static final operator(16) float *(float A, float B); + +// Export UObject::execDivide_FloatFloat(FFrame&, void* const) +native(172) static final operator(16) float /(float A, float B); + +// Export UObject::execPercent_FloatFloat(FFrame&, void* const) +native(173) static final operator(18) float %(float A, float B); + +// Export UObject::execAdd_FloatFloat(FFrame&, void* const) +native(174) static final operator(20) float +(float A, float B); + +// Export UObject::execSubtract_FloatFloat(FFrame&, void* const) +native(175) static final operator(20) float -(float A, float B); + +// Export UObject::execLess_FloatFloat(FFrame&, void* const) +native(176) static final operator(24) bool <(float A, float B); + +// Export UObject::execGreater_FloatFloat(FFrame&, void* const) +native(177) static final operator(24) bool >(float A, float B); + +// Export UObject::execLessEqual_FloatFloat(FFrame&, void* const) +native(178) static final operator(24) bool <=(float A, float B); + +// Export UObject::execGreaterEqual_FloatFloat(FFrame&, void* const) +native(179) static final operator(24) bool >=(float A, float B); + +// Export UObject::execEqualEqual_FloatFloat(FFrame&, void* const) +native(180) static final operator(24) bool ==(float A, float B); + +// Export UObject::execComplementEqual_FloatFloat(FFrame&, void* const) +native(210) static final operator(24) bool ~=(float A, float B); + +// Export UObject::execNotEqual_FloatFloat(FFrame&, void* const) +native(181) static final operator(26) bool !=(float A, float B); + +// Export UObject::execMultiplyEqual_FloatFloat(FFrame&, void* const) +native(182) static final operator(34) float *=(out float A, float B); + +// Export UObject::execDivideEqual_FloatFloat(FFrame&, void* const) +native(183) static final operator(34) float /=(out float A, float B); + +// Export UObject::execAddEqual_FloatFloat(FFrame&, void* const) +native(184) static final operator(34) float +=(out float A, float B); + +// Export UObject::execSubtractEqual_FloatFloat(FFrame&, void* const) +native(185) static final operator(34) float -=(out float A, float B); + +// Export UObject::execAbs(FFrame&, void* const) +native(186) static final function float Abs(float A); + +// Export UObject::execSin(FFrame&, void* const) +native(187) static final function float Sin(float A); + +// Export UObject::execAsin(FFrame&, void* const) +native static final function float Asin(float A); + +// Export UObject::execCos(FFrame&, void* const) +native(188) static final function float Cos(float A); + +// Export UObject::execAcos(FFrame&, void* const) +native static final function float Acos(float A); + +// Export UObject::execTan(FFrame&, void* const) +native(189) static final function float Tan(float A); + +// Export UObject::execAtan(FFrame&, void* const) +native(190) static final function float Atan(float A); + +// Export UObject::execAtan2(FFrame&, void* const) +native static final function float Atan2(float A, float B); + +// Export UObject::execExp(FFrame&, void* const) +native(191) static final function float Exp(float A); + +// Export UObject::execLoge(FFrame&, void* const) +native(192) static final function float Loge(float A); + +// Export UObject::execSqrt(FFrame&, void* const) +native(193) static final function float Sqrt(float A); + +// Export UObject::execSquare(FFrame&, void* const) +native(194) static final function float Square(float A); + +// Export UObject::execFRand(FFrame&, void* const) +native(195) static final function float FRand(); + +// Export UObject::execFMin(FFrame&, void* const) +native(244) static final function float FMin(float A, float B); + +// Export UObject::execFMax(FFrame&, void* const) +native(245) static final function float FMax(float A, float B); + +// Export UObject::execFClamp(FFrame&, void* const) +native(246) static final function float FClamp(float V, float A, float B); + +// Export UObject::execLerp(FFrame&, void* const) +native(247) static final function float Lerp(float A, float B, float Alpha); + +// Export UObject::execRound(FFrame&, void* const) +native(199) static final function int Round(float A); + +// Export UObject::execFFloor(FFrame&, void* const) +native static final function int FFloor(float A); + +// Export UObject::execFCeil(FFrame&, void* const) +native static final function int FCeil(float A); + +// Export UObject::execFCubicInterp(FFrame&, void* const) +native static final function float FCubicInterp(float P0, float T0, float P1, float T1, float A); + +static final function float FInterpEaseIn(float A, float B, float Alpha, float Exp) +{ + return Lerp(A, B, Alpha ** Exp); + //return ReturnValue; +} + +static final function float FInterpEaseOut(float A, float B, float Alpha, float Exp) +{ + return Lerp(A, B, Alpha ** (float(1) / Exp)); + //return ReturnValue; +} + +// Export UObject::execFInterpEaseInOut(FFrame&, void* const) +native static final function float FInterpEaseInOut(float A, float B, float Alpha, float Exp); + +static final simulated function float RandRange(float InMin, float InMax) +{ + return InMin + ((InMax - InMin) * FRand()); + //return ReturnValue; +} + +static final simulated function float FPctByRange(float Value, float InMin, float InMax) +{ + return (Value - InMin) / (InMax - InMin); + //return ReturnValue; +} + +// Export UObject::execFInterpTo(FFrame&, void* const) +native static final function float FInterpTo(float Current, float Target, float DeltaTime, float InterpSpeed); + +// Export UObject::execFInterpConstantTo(FFrame&, void* const) +native static final function float FInterpConstantTo(float Current, float Target, float DeltaTime, float InterpSpeed); + +// Export UObject::execSubtract_PreVector(FFrame&, void* const) +native(211) static final preoperator Vector -(Vector A); + +// Export UObject::execMultiply_VectorFloat(FFrame&, void* const) +native(212) static final operator(16) Vector *(Vector A, float B); + +// Export UObject::execMultiply_FloatVector(FFrame&, void* const) +native(213) static final operator(16) Vector *(float A, Vector B); + +// Export UObject::execMultiply_VectorVector(FFrame&, void* const) +native(296) static final operator(16) Vector *(Vector A, Vector B); + +// Export UObject::execDivide_VectorFloat(FFrame&, void* const) +native(214) static final operator(16) Vector /(Vector A, float B); + +// Export UObject::execAdd_VectorVector(FFrame&, void* const) +native(215) static final operator(20) Vector +(Vector A, Vector B); + +// Export UObject::execSubtract_VectorVector(FFrame&, void* const) +native(216) static final operator(20) Vector -(Vector A, Vector B); + +// Export UObject::execLessLess_VectorRotator(FFrame&, void* const) +native(275) static final operator(22) Vector <<(Vector A, Rotator B); + +// Export UObject::execGreaterGreater_VectorRotator(FFrame&, void* const) +native(276) static final operator(22) Vector >>(Vector A, Rotator B); + +// Export UObject::execEqualEqual_VectorVector(FFrame&, void* const) +native(217) static final operator(24) bool ==(Vector A, Vector B); + +// Export UObject::execNotEqual_VectorVector(FFrame&, void* const) +native(218) static final operator(26) bool !=(Vector A, Vector B); + +// Export UObject::execDot_VectorVector(FFrame&, void* const) +native(219) static final operator(16) float Dot(Vector A, Vector B); + +// Export UObject::execCross_VectorVector(FFrame&, void* const) +native(220) static final operator(16) Vector Cross(Vector A, Vector B); + +// Export UObject::execMultiplyEqual_VectorFloat(FFrame&, void* const) +native(221) static final operator(34) Vector *=(out Vector A, float B); + +// Export UObject::execMultiplyEqual_VectorVector(FFrame&, void* const) +native(297) static final operator(34) Vector *=(out Vector A, Vector B); + +// Export UObject::execDivideEqual_VectorFloat(FFrame&, void* const) +native(222) static final operator(34) Vector /=(out Vector A, float B); + +// Export UObject::execAddEqual_VectorVector(FFrame&, void* const) +native(223) static final operator(34) Vector +=(out Vector A, Vector B); + +// Export UObject::execSubtractEqual_VectorVector(FFrame&, void* const) +native(224) static final operator(34) Vector -=(out Vector A, Vector B); + +// Export UObject::execVSize(FFrame&, void* const) +native(225) static final function float VSize(Vector A); + +// Export UObject::execVSize2D(FFrame&, void* const) +native static final function float VSize2D(Vector A); + +// Export UObject::execVSizeSq(FFrame&, void* const) +native(228) static final function float VSizeSq(Vector A); + +// Export UObject::execVSizeSq2D(FFrame&, void* const) +native static final function float VSizeSq2D(Vector A); + +// Export UObject::execNormal(FFrame&, void* const) +native(226) static final function Vector Normal(Vector A); + +// Export UObject::execNormal2D(FFrame&, void* const) +native(227) static final function Vector Normal2D(Vector A); + +// Export UObject::execVLerp(FFrame&, void* const) +native static final function Vector VLerp(Vector A, Vector B, float Alpha); + +// Export UObject::execVRand(FFrame&, void* const) +native(252) static final function Vector VRand(); + +// Export UObject::execVRandCone(FFrame&, void* const) +native static final function Vector VRandCone(Vector Dir, float ConeHalfAngleRadians); + +// Export UObject::execVRandCone2(FFrame&, void* const) +native static final function Vector VRandCone2(Vector Dir, float HorizontalConeHalfAngleRadians, float VerticalConeHalfAngleRadians); + +// Export UObject::execMirrorVectorByNormal(FFrame&, void* const) +native(300) static final function Vector MirrorVectorByNormal(Vector InVect, Vector InNormal); + +// Export UObject::execProjectOnTo(FFrame&, void* const) +native(1500) static final function Vector ProjectOnTo(Vector X, Vector Y); + +// Export UObject::execIsZero(FFrame&, void* const) +native(1501) static final function bool IsZero(Vector A); + +// Export UObject::execVInterpTo(FFrame&, void* const) +native static final function Vector VInterpTo(Vector Current, Vector Target, float DeltaTime, float InterpSpeed); + +// Export UObject::execClampLength(FFrame&, void* const) +native static final function Vector ClampLength(Vector V, float MaxLength); + +// Export UObject::execNoZDot(FFrame&, void* const) +native static final function float NoZDot(Vector A, Vector B); + +final simulated function bool InCylinder(Vector Origin, Rotator Dir, float Width, Vector A, optional bool bIgnoreZ) +{ + local Vector B, VDir; + + // End:0x70 + if(bIgnoreZ) + { + Origin.Z = 0.0000000; + Dir.Pitch = 0; + A.Z = 0.0000000; + } + VDir = Vector(Dir); + B = (((A - Origin) Dot VDir) * VDir) + Origin; + // End:0xF5 + if(VSizeSq(B - A) <= (Width * Width)) + { + return true; + } + return false; + //return ReturnValue; +} + +// Export UObject::execEqualEqual_RotatorRotator(FFrame&, void* const) +native(142) static final operator(24) bool ==(Rotator A, Rotator B); + +// Export UObject::execNotEqual_RotatorRotator(FFrame&, void* const) +native(203) static final operator(26) bool !=(Rotator A, Rotator B); + +// Export UObject::execMultiply_RotatorFloat(FFrame&, void* const) +native(287) static final operator(16) Rotator *(Rotator A, float B); + +// Export UObject::execMultiply_FloatRotator(FFrame&, void* const) +native(288) static final operator(16) Rotator *(float A, Rotator B); + +// Export UObject::execDivide_RotatorFloat(FFrame&, void* const) +native(289) static final operator(16) Rotator /(Rotator A, float B); + +// Export UObject::execMultiplyEqual_RotatorFloat(FFrame&, void* const) +native(290) static final operator(34) Rotator *=(out Rotator A, float B); + +// Export UObject::execDivideEqual_RotatorFloat(FFrame&, void* const) +native(291) static final operator(34) Rotator /=(out Rotator A, float B); + +// Export UObject::execAdd_RotatorRotator(FFrame&, void* const) +native(316) static final operator(20) Rotator +(Rotator A, Rotator B); + +// Export UObject::execSubtract_RotatorRotator(FFrame&, void* const) +native(317) static final operator(20) Rotator -(Rotator A, Rotator B); + +// Export UObject::execAddEqual_RotatorRotator(FFrame&, void* const) +native(318) static final operator(34) Rotator +=(out Rotator A, Rotator B); + +// Export UObject::execSubtractEqual_RotatorRotator(FFrame&, void* const) +native(319) static final operator(34) Rotator -=(out Rotator A, Rotator B); + +// Export UObject::execClockwiseFrom_IntInt(FFrame&, void* const) +native static final operator(24) bool ClockwiseFrom(int A, int B); + +// Export UObject::execGetAxes(FFrame&, void* const) +native(229) static final function GetAxes(Rotator A, out Vector X, out Vector Y, out Vector Z); + +// Export UObject::execGetUnAxes(FFrame&, void* const) +native(230) static final function GetUnAxes(Rotator A, out Vector X, out Vector Y, out Vector Z); + +// Export UObject::execGetRotatorAxis(FFrame&, void* const) +native static final function Vector GetRotatorAxis(Rotator A, int Axis); + +// Export UObject::execRotRand(FFrame&, void* const) +native(320) static final function Rotator RotRand(optional bool bRoll); + +// Export UObject::execOrthoRotation(FFrame&, void* const) +native static final function Rotator OrthoRotation(Vector X, Vector Y, Vector Z); + +// Export UObject::execNormalize(FFrame&, void* const) +native static final function Rotator Normalize(Rotator Rot); + +// Export UObject::execRLerp(FFrame&, void* const) +native static final function Rotator RLerp(Rotator A, Rotator B, float Alpha, optional bool bShortestPath); + +// Export UObject::execRTransform(FFrame&, void* const) +native static final function Rotator RTransform(Rotator R, Rotator RBasis); + +// Export UObject::execRInterpTo(FFrame&, void* const) +native static final function Rotator RInterpTo(Rotator Current, Rotator Target, float DeltaTime, float InterpSpeed, optional bool bConstantInterpSpeed); + +// Export UObject::execNormalizeRotAxis(FFrame&, void* const) +native static final function int NormalizeRotAxis(int Angle); + +// Export UObject::execRDiff(FFrame&, void* const) +native static final function float RDiff(Rotator A, Rotator B); + +// Export UObject::execRSize(FFrame&, void* const) +native static final function float RSize(Rotator R); + +static final simulated function ClampRotAxis(int ViewAxis, out int out_DeltaViewAxis, int MaxLimit, int MinLimit) +{ + local int DesiredViewAxis; + + ViewAxis = NormalizeRotAxis(ViewAxis); + DesiredViewAxis = ViewAxis + out_DeltaViewAxis; + // End:0x65 + if(DesiredViewAxis > MaxLimit) + { + DesiredViewAxis = MaxLimit; + } + // End:0x8F + if(DesiredViewAxis < MinLimit) + { + DesiredViewAxis = MinLimit; + } + out_DeltaViewAxis = DesiredViewAxis - ViewAxis; + //return; +} + +static final simulated function int ClampRotAxisFromBase(int Current, int Center, int MaxDelta) +{ + local int DeltaFromCenter; + + DeltaFromCenter = NormalizeRotAxis(Current - Center); + // End:0x60 + if(DeltaFromCenter > MaxDelta) + { + Current = Center + MaxDelta; + } + else + { + // End:0x97 + if(DeltaFromCenter < -MaxDelta) + { + Current = Center - MaxDelta; + } + } + return Current; + //return ReturnValue; +} + +static final simulated function int ClampRotAxisFromRange(int Current, int Min, int Max) +{ + local int Delta, Center; + + Delta = NormalizeRotAxis(Max - Min) / 2; + Center = NormalizeRotAxis(Max + Min) / 2; + return ClampRotAxisFromBase(Current, Center, Delta); + //return ReturnValue; +} + +static final simulated function bool SClampRotAxis(float DeltaTime, int ViewAxis, out int out_DeltaViewAxis, int MaxLimit, int MinLimit, float InterpolationSpeed) +{ + local bool bClamped; + + out_DeltaViewAxis = NormalizeRotAxis(out_DeltaViewAxis); + ViewAxis = NormalizeRotAxis(ViewAxis); + // End:0xA2 + if((ViewAxis <= MaxLimit) && (ViewAxis + out_DeltaViewAxis) >= MaxLimit) + { + out_DeltaViewAxis = MaxLimit - ViewAxis; + bClamped = true; + } + else + { + // End:0x148 + if(ViewAxis > MaxLimit) + { + // End:0xD3 + if(out_DeltaViewAxis > 0) + { + out_DeltaViewAxis = 0; + } + // End:0x145 + if((ViewAxis + out_DeltaViewAxis) > MaxLimit) + { + out_DeltaViewAxis = int((FInterpTo(float(ViewAxis), float(MaxLimit), DeltaTime, InterpolationSpeed) - float(ViewAxis)) - float(1)); + } + } + else + { + // End:0x1B0 + if((ViewAxis >= MinLimit) && (ViewAxis + out_DeltaViewAxis) <= MinLimit) + { + out_DeltaViewAxis = MinLimit - ViewAxis; + bClamped = true; + } + else + { + // End:0x254 + if(ViewAxis < MinLimit) + { + // End:0x1E1 + if(out_DeltaViewAxis < 0) + { + out_DeltaViewAxis = 0; + } + // End:0x254 + if((ViewAxis + out_DeltaViewAxis) < MinLimit) + { + out_DeltaViewAxis += int((FInterpTo(float(ViewAxis), float(MinLimit), DeltaTime, InterpolationSpeed) - float(ViewAxis)) + float(1)); + } + } + } + } + } + return bClamped; + //return ReturnValue; +} + +static final function Rotator MakeRotator(int Pitch, int Yaw, int Roll) +{ + local Rotator R; + + R.Pitch = Pitch; + R.Yaw = Yaw; + R.Roll = Roll; + return R; + //return ReturnValue; +} + +// Export UObject::execConcat_StrStr(FFrame&, void* const) +native(112) static final operator(40) string $(coerce string A, coerce string B); + +// Export UObject::execAt_StrStr(FFrame&, void* const) +native(168) static final operator(40) string @(coerce string A, coerce string B); + +// Export UObject::execLess_StrStr(FFrame&, void* const) +native(115) static final operator(24) bool <(string A, string B); + +// Export UObject::execGreater_StrStr(FFrame&, void* const) +native(116) static final operator(24) bool >(string A, string B); + +// Export UObject::execLessEqual_StrStr(FFrame&, void* const) +native(120) static final operator(24) bool <=(string A, string B); + +// Export UObject::execGreaterEqual_StrStr(FFrame&, void* const) +native(121) static final operator(24) bool >=(string A, string B); + +// Export UObject::execEqualEqual_StrStr(FFrame&, void* const) +native(122) static final operator(24) bool ==(string A, string B); + +// Export UObject::execNotEqual_StrStr(FFrame&, void* const) +native(123) static final operator(26) bool !=(string A, string B); + +// Export UObject::execComplementEqual_StrStr(FFrame&, void* const) +native(124) static final operator(24) bool ~=(string A, string B); + +// Export UObject::execConcatEqual_StrStr(FFrame&, void* const) +native(322) static final operator(44) string $=(out string A, coerce string B); + +// Export UObject::execAtEqual_StrStr(FFrame&, void* const) +native(323) static final operator(44) string @=(out string A, coerce string B); + +// Export UObject::execSubtractEqual_StrStr(FFrame&, void* const) +native(324) static final operator(45) string -=(out string A, coerce string B); + +// Export UObject::execLen(FFrame&, void* const) +native(125) static final function int Len(coerce string S); + +// Export UObject::execInStr(FFrame&, void* const) +native(126) static final function int InStr(coerce string S, coerce string T, optional bool bSearchFromRight, optional bool bIgnoreCase, optional int StartPos); + +// Export UObject::execMid(FFrame&, void* const) +native(127) static final function string Mid(coerce string S, int I, optional int J); + +// Export UObject::execLeft(FFrame&, void* const) +native(128) static final function string Left(coerce string S, int I); + +// Export UObject::execRight(FFrame&, void* const) +native(234) static final function string Right(coerce string S, int I); + +// Export UObject::execCaps(FFrame&, void* const) +native(235) static final function string Caps(coerce string S); + +// Export UObject::execLocs(FFrame&, void* const) +native(238) static final function string Locs(coerce string S); + +// Export UObject::execChr(FFrame&, void* const) +native(236) static final function string Chr(int I); + +// Export UObject::execAsc(FFrame&, void* const) +native(237) static final function int Asc(string S); + +// Export UObject::execRepl(FFrame&, void* const) +native(201) static final function string Repl(coerce string Src, coerce string Match, coerce string With, optional bool bCaseSensitive); + +static final function string Split(coerce string Text, coerce string SplitStr, optional bool bOmitSplitStr) +{ + local int pos; + + pos = InStr(Text, SplitStr); + // End:0x7E + if(pos != -1) + { + // End:0x65 + if(bOmitSplitStr) + { + return Mid(Text, pos + Len(SplitStr)); + } + return Mid(Text, pos); + } + else + { + return Text; + } + //return ReturnValue; +} + +static final function string GetRightMost(coerce string Text) +{ + local int Idx; + + Idx = InStr(Text, "_"); + J0x1B: + + // End:0x78 [Loop If] + if(Idx != -1) + { + Text = Mid(Text, Idx + 1, Len(Text)); + Idx = InStr(Text, "_"); + // [Loop Continue] + goto J0x1B; + } + return Text; + //return ReturnValue; +} + +static final function JoinArray(array StringArray, out string out_Result, optional string delim = ",", optional bool bIgnoreBlanks = true) +{ + local int I; + + out_Result = ""; + I = 0; + J0x23: + + // End:0xEC [Loop If] + if(I < StringArray.Length) + { + // End:0xDE + if((StringArray[I] != "") || !bIgnoreBlanks) + { + // End:0xB6 + if((out_Result != "") || !bIgnoreBlanks && I > 0) + { + out_Result $= delim; + } + out_Result $= StringArray[I]; + } + I++; + // [Loop Continue] + goto J0x23; + } + //return; +} + +// Export UObject::execParseStringIntoArray(FFrame&, void* const) +native static final function ParseStringIntoArray(string BaseString, out array Pieces, string delim, bool bCullEmpty); + +static final function array SplitString(string Source, optional string Delimiter = ",", optional bool bCullEmpty) +{ + local array Result; + + ParseStringIntoArray(Source, Result, Delimiter, bCullEmpty); + return Result; + //return ReturnValue; +} + +// Export UObject::execPathName(FFrame&, void* const) +native static final function string PathName(Object CheckObject); + +// Export UObject::execEqualEqual_ObjectObject(FFrame&, void* const) +native(114) static final operator(24) bool ==(Object A, Object B); + +// Export UObject::execNotEqual_ObjectObject(FFrame&, void* const) +native(119) static final operator(26) bool !=(Object A, Object B); + +// Export UObject::execEqualEqual_InterfaceInterface(FFrame&, void* const) +native static final operator(24) bool ==(Interface A, Interface B); + +// Export UObject::execNotEqual_InterfaceInterface(FFrame&, void* const) +native static final operator(26) bool !=(Interface A, Interface B); + +// Export UObject::execClassIsChildOf(FFrame&, void* const) +native(258) static final function bool ClassIsChildOf(Class TestClass, Class ParentClass); + +// Export UObject::execIsA(FFrame&, void* const) +native(197) final function bool IsA(name ClassName); + +// Export UObject::execEqualEqual_NameName(FFrame&, void* const) +native(254) static final operator(24) bool ==(name A, name B); + +// Export UObject::execNotEqual_NameName(FFrame&, void* const) +native(255) static final operator(26) bool !=(name A, name B); + +// Export UObject::execMultiply_MatrixMatrix(FFrame&, void* const) +native static final operator(34) Matrix *(Matrix A, Matrix B); + +// Export UObject::execTransformVector(FFrame&, void* const) +native static final function Vector TransformVector(Matrix TM, Vector A); + +// Export UObject::execInverseTransformVector(FFrame&, void* const) +native static final function Vector InverseTransformVector(Matrix TM, Vector A); + +// Export UObject::execTransformNormal(FFrame&, void* const) +native static final function Vector TransformNormal(Matrix TM, Vector A); + +// Export UObject::execInverseTransformNormal(FFrame&, void* const) +native static final function Vector InverseTransformNormal(Matrix TM, Vector A); + +// Export UObject::execMakeRotationTranslationMatrix(FFrame&, void* const) +native static final function Matrix MakeRotationTranslationMatrix(Vector Translation, Rotator Rotation); + +// Export UObject::execMakeRotationMatrix(FFrame&, void* const) +native static final function Matrix MakeRotationMatrix(Rotator Rotation); + +// Export UObject::execMatrixGetRotator(FFrame&, void* const) +native static final function Rotator MatrixGetRotator(Matrix TM); + +// Export UObject::execMatrixGetOrigin(FFrame&, void* const) +native static final function Vector MatrixGetOrigin(Matrix TM); + +// Export UObject::execMatrixGetAxis(FFrame&, void* const) +native static final function Vector MatrixGetAxis(Matrix TM, Object.EAxis Axis); + +// Export UObject::execQuatProduct(FFrame&, void* const) +native static final function Quat QuatProduct(Quat A, Quat B); + +// Export UObject::execQuatDot(FFrame&, void* const) +native static final function float QuatDot(Quat A, Quat B); + +// Export UObject::execQuatInvert(FFrame&, void* const) +native static final function Quat QuatInvert(Quat A); + +// Export UObject::execQuatRotateVector(FFrame&, void* const) +native static final function Vector QuatRotateVector(Quat A, Vector B); + +// Export UObject::execQuatFindBetween(FFrame&, void* const) +native static final function Quat QuatFindBetween(Vector A, Vector B); + +// Export UObject::execQuatFromAxisAndAngle(FFrame&, void* const) +native static final function Quat QuatFromAxisAndAngle(Vector Axis, float Angle); + +// Export UObject::execQuatFromRotator(FFrame&, void* const) +native static final function Quat QuatFromRotator(Rotator A); + +// Export UObject::execQuatToRotator(FFrame&, void* const) +native static final function Rotator QuatToRotator(Quat A); + +// Export UObject::execQuatSlerp(FFrame&, void* const) +native static final function Quat QuatSlerp(Quat A, Quat B, float Alpha, optional bool bShortestPath); + +// Export UObject::execAdd_QuatQuat(FFrame&, void* const) +native(270) static final operator(16) Quat +(Quat A, Quat B); + +// Export UObject::execSubtract_QuatQuat(FFrame&, void* const) +native(271) static final operator(16) Quat -(Quat A, Quat B); + +// Export UObject::execAdd_Vector2DVector2D(FFrame&, void* const) +native static final operator(16) Vector2D +(Vector2D A, Vector2D B); + +// Export UObject::execSubtract_Vector2DVector2D(FFrame&, void* const) +native static final operator(16) Vector2D -(Vector2D A, Vector2D B); + +// Export UObject::execMultiply_Vector2DFloat(FFrame&, void* const) +native static final operator(16) Vector2D *(Vector2D A, float B); + +// Export UObject::execDivide_Vector2DFloat(FFrame&, void* const) +native static final operator(16) Vector2D /(Vector2D A, float B); + +// Export UObject::execMultiplyEqual_Vector2DFloat(FFrame&, void* const) +native static final operator(34) Vector2D *=(out Vector2D A, float B); + +// Export UObject::execDivideEqual_Vector2DFloat(FFrame&, void* const) +native static final operator(34) Vector2D /=(out Vector2D A, float B); + +// Export UObject::execAddEqual_Vector2DVector2D(FFrame&, void* const) +native static final operator(34) Vector2D +=(out Vector2D A, Vector2D B); + +// Export UObject::execSubtractEqual_Vector2DVector2D(FFrame&, void* const) +native static final operator(34) Vector2D -=(out Vector2D A, Vector2D B); + +static final simulated function float GetRangeValueByPct(Vector2D Range, float Pct) +{ + return Range.X + ((Range.Y - Range.X) * Pct); + //return ReturnValue; +} + +static final simulated function float GetRangePctByValue(Vector2D Range, float Value) +{ + return ((Range.Y == Range.X) ? Range.X : (Value - Range.X) / (Range.Y - Range.X)); + //return ReturnValue; +} + +// Export UObject::execGetMappedRangeValue(FFrame&, void* const) +native static final simulated function float GetMappedRangeValue(Vector2D InputRange, Vector2D OutputRange, float Value); + +static final function Vector2D vect2d(float InX, float InY) +{ + local Vector2D NewVect2d; + + NewVect2d.X = InX; + NewVect2d.Y = InY; + return NewVect2d; + //return ReturnValue; +} + +// Export UObject::execEvalInterpCurveFloat(FFrame&, void* const) +native static final function float EvalInterpCurveFloat(const out InterpCurveFloat FloatCurve, float InVal); + +// Export UObject::execEvalInterpCurveVector(FFrame&, void* const) +native static final function Vector EvalInterpCurveVector(const out InterpCurveVector VectorCurve, float InVal); + +// Export UObject::execEvalInterpCurveVector2D(FFrame&, void* const) +native static final function Vector2D EvalInterpCurveVector2D(const out InterpCurveVector2D Vector2DCurve, float InVal); + +static final operator(20) Color -(Color A, Color B) +{ + A.R -= B.R; + A.G -= B.G; + A.B -= B.B; + return A; + //return ReturnValue; +} + +static final operator(16) Color *(float A, Color B) +{ + B.R *= A; + B.G *= A; + B.B *= A; + return B; + //return ReturnValue; +} + +static final operator(16) Color *(Color A, float B) +{ + A.R *= B; + A.G *= B; + A.B *= B; + return A; + //return ReturnValue; +} + +static final operator(20) Color +(Color A, Color B) +{ + A.R += B.R; + A.G += B.G; + A.B += B.B; + return A; + //return ReturnValue; +} + +static final function Color MakeColor(byte R, byte G, byte B, optional byte A) +{ + local Color C; + + C.R = R; + C.G = G; + C.B = B; + C.A = A; + return C; + //return ReturnValue; +} + +static final function Color LerpColor(Color A, Color B, float Alpha) +{ + local Vector FloatA, FloatB, FloatResult; + local float AlphaA, AlphaB, FloatResultAlpha; + local Color Result; + + FloatA.X = float(A.R); + FloatA.Y = float(A.G); + FloatA.Z = float(A.B); + AlphaA = float(A.A); + FloatB.X = float(B.R); + FloatB.Y = float(B.G); + FloatB.Z = float(B.B); + AlphaB = float(B.A); + FloatResult = FloatA + ((FloatB - FloatA) * FClamp(Alpha, 0.0000000, 1.0000000)); + FloatResultAlpha = AlphaA + ((AlphaB - AlphaA) * FClamp(Alpha, 0.0000000, 1.0000000)); + Result.R = byte(FloatResult.X); + Result.G = byte(FloatResult.Y); + Result.B = byte(FloatResult.Z); + Result.A = byte(FloatResultAlpha); + return Result; + //return ReturnValue; +} + +static final function LinearColor MakeLinearColor(float R, float G, float B, float A) +{ + local LinearColor LC; + + LC.R = R; + LC.G = G; + LC.B = B; + LC.A = A; + return LC; + //return ReturnValue; +} + +static final function LinearColor ColorToLinearColor(Color OldColor) +{ + return MakeLinearColor(float(OldColor.R) / 255.0000000, float(OldColor.G) / 255.0000000, float(OldColor.B) / 255.0000000, float(OldColor.A) / 255.0000000); + //return ReturnValue; +} + +static final operator(16) LinearColor *(LinearColor LC, float Mult) +{ + LC.R *= Mult; + LC.G *= Mult; + LC.B *= Mult; + return LC; + //return ReturnValue; +} + +static final operator(20) LinearColor -(LinearColor A, LinearColor B) +{ + A.R -= B.R; + A.G -= B.G; + A.B -= B.B; + return A; + //return ReturnValue; +} + +// Export UObject::execLogInternal(FFrame&, void* const) +private native(231) static final function LogInternal(coerce string S, optional name Tag); + +// Export UObject::execWarnInternal(FFrame&, void* const) +private native(232) static final function WarnInternal(coerce string S); + +// Export UObject::execlogr(FFrame&, void* const) +native function logr(coerce string S); + +// Export UObject::execLocalize(FFrame&, void* const) +native static function string Localize(string SectionName, string KeyName, string PackageName); + +static final function string ParseLocalizedPropertyPath(string PathName) +{ + local array Pieces; + + ParseStringIntoArray(PathName, Pieces, ".", false); + // End:0x61 + if(Pieces.Length >= 3) + { + return Localize(Pieces[1], Pieces[2], Pieces[0]); + } + else + { + return ""; + } + //return ReturnValue; +} + +// Export UObject::execScriptTrace(FFrame&, void* const) +native static final function ScriptTrace(); + +// Export UObject::execGetScriptTrace(FFrame&, void* const) +native static final function string GetScriptTrace(); + +// Export UObject::execDebugBreak(FFrame&, void* const) +native static final function DebugBreak(optional int UserFlags, optional Object.EDebugBreakType DebuggerType = 0); + +// Export UObject::execGetFuncName(FFrame&, void* const) +native static final function name GetFuncName(); + +// Export UObject::execSetUTracing(FFrame&, void* const) +native static final function SetUTracing(bool bShouldUTrace); + +// Export UObject::execIsUTracing(FFrame&, void* const) +native static final function bool IsUTracing(); + +// Export UObject::execGotoState(FFrame&, void* const) +native(113) final function GotoState(optional name NewState, optional name Label, optional bool bForceEvents, optional bool bKeepStack); + +// Export UObject::execIsInState(FFrame&, void* const) +native(281) final function bool IsInState(name TestState, optional bool bTestStateStack); + +// Export UObject::execIsChildState(FFrame&, void* const) +native final function bool IsChildState(name TestState, name TestParentState); + +// Export UObject::execGetStateName(FFrame&, void* const) +native(284) final function name GetStateName(); + +// Export UObject::execPushState(FFrame&, void* const) +native final function PushState(name NewState, optional name NewLabel); + +// Export UObject::execPopState(FFrame&, void* const) +native final function PopState(optional bool bPopAll); + +// Export UObject::execDumpStateStack(FFrame&, void* const) +native final function DumpStateStack(); + +event BeginState(name PreviousStateName) +{ + //return; +} + +event EndState(name NextStateName) +{ + //return; +} + +event PushedState() +{ + //return; +} + +event PoppedState() +{ + //return; +} + +event PausedState() +{ + //return; +} + +event ContinuedState() +{ + //return; +} + +// Export UObject::execEnable(FFrame&, void* const) +native(117) final function Enable(name ProbeFunc); + +// Export UObject::execDisable(FFrame&, void* const) +native(118) final function Disable(name ProbeFunc); + +// Export UObject::execGetEnum(FFrame&, void* const) +native static final function name GetEnum(Object E, coerce int I); + +// Export UObject::execDynamicLoadObject(FFrame&, void* const) +native static final function Object DynamicLoadObject(string ObjectName, Class ObjectClass, optional bool MayFail); + +// Export UObject::execFindObject(FFrame&, void* const) +native static final function Object FindObject(string ObjectName, Class ObjectClass); + +// Export UObject::execSaveConfig(FFrame&, void* const) +native(536) final function SaveConfig(); + +// Export UObject::execStaticSaveConfig(FFrame&, void* const) +native static final function StaticSaveConfig(); + +// Export UObject::execImportJSON(FFrame&, void* const) +native static final function ImportJSON(string PropertyName, const out string JSON); + +// Export UObject::execGetPerObjectConfigSections(FFrame&, void* const) +native static final function bool GetPerObjectConfigSections(Class SearchClass, out array out_SectionNames, optional Object ObjectOuter, optional int MaxResults = 1024); + +// Export UObject::execPointDistToLine(FFrame&, void* const) +native final function float PointDistToLine(Vector Point, Vector Line, Vector Origin, optional out Vector OutClosestPoint); + +// Export UObject::execPointDistToSegment(FFrame&, void* const) +native final function float PointDistToSegment(Vector Point, Vector StartPoint, Vector EndPoint, optional out Vector OutClosestPoint); + +final simulated function float PointDistToPlane(Vector Point, Rotator Orientation, Vector Origin, optional out Vector out_ClosestPoint) +{ + local Vector AxisX, AxisY, AxisZ, PointNoZ, OriginNoZ; + + local float fPointZ, fProjDistToAxis; + + GetAxes(Orientation, AxisX, AxisY, AxisZ); + fPointZ = Point Dot AxisZ; + PointNoZ = Point - (fPointZ * AxisZ); + OriginNoZ = Origin - ((Origin Dot AxisZ) * AxisZ); + fProjDistToAxis = (PointNoZ - OriginNoZ) Dot AxisX; + out_ClosestPoint = (OriginNoZ + (fProjDistToAxis * AxisX)) + (fPointZ * AxisZ); + return VSize(out_ClosestPoint - Point); + //return ReturnValue; +} + +// Export UObject::execPointProjectToPlane(FFrame&, void* const) +native static final function Vector PointProjectToPlane(Vector Point, Vector A, Vector B, Vector C); + +// Export UObject::execGetDotDistance(FFrame&, void* const) +native static final function bool GetDotDistance(out Vector2D OutDotDist, Vector Direction, Vector AxisX, Vector AxisY, Vector AxisZ); + +// Export UObject::execGetAngularDistance(FFrame&, void* const) +native static final function bool GetAngularDistance(out Vector2D OutAngularDist, Vector Direction, Vector AxisX, Vector AxisY, Vector AxisZ); + +// Export UObject::execGetAngularFromDotDist(FFrame&, void* const) +native static final function GetAngularFromDotDist(out Vector2D OutAngDist, Vector2D DotDist); + +static final simulated function GetAngularDegreesFromRadians(out Vector2D OutFOV) +{ + OutFOV.X = OutFOV.X * 57.2957800; + OutFOV.Y = OutFOV.Y * 57.2957800; + //return; +} + +static final simulated function float GetHeadingAngle(Vector Dir) +{ + local float Angle; + + Angle = Acos(FClamp(Dir.X, -1.0000000, 1.0000000)); + // End:0x72 + if(Dir.Y < 0.0000000) + { + Angle *= -1.0000000; + } + return Angle; + //return ReturnValue; +} + +static final simulated function float FindDeltaAngle(float A1, float A2) +{ + local float Delta; + + Delta = A2 - A1; + // End:0x55 + if(Delta > 3.1415930) + { + Delta = Delta - (3.1415930 * 2.0000000); + } + else + { + // End:0x8B + if(Delta < -3.1415930) + { + Delta = Delta + (3.1415930 * 2.0000000); + } + } + return Delta; + //return ReturnValue; +} + +static final simulated function float UnwindHeading(float A) +{ + J0x00: + // End:0x2D [Loop If] + if(A > 3.1415930) + { + A -= (3.1415930 * 2.0000000); + // [Loop Continue] + goto J0x00; + } + J0x2D: + + // End:0x5C [Loop If] + if(A < -3.1415930) + { + A += (3.1415930 * 2.0000000); + // [Loop Continue] + goto J0x2D; + } + return A; + //return ReturnValue; +} + +final simulated function byte FloatToByte(float inputFloat, optional bool bSigned) +{ + // End:0x5D + if(bSigned) + { + // End:0x27 + if(inputFloat > 0.9800000) + { + return 255; + } + else + { + // End:0x40 + if(inputFloat < -0.9800000) + { + return 0; + } + else + { + return byte((inputFloat + 1.0000000) * 128.0000000); + } + } + } + else + { + // End:0x76 + if(inputFloat > 0.9961000) + { + return 255; + } + else + { + // End:0x8F + if(inputFloat < 0.0040000) + { + return 0; + } + else + { + return byte(inputFloat * 255.0000000); + } + } + } + //return ReturnValue; +} + +final simulated function float ByteToFloat(byte inputByte, optional bool bSigned) +{ + // End:0x2B + if(bSigned) + { + return (float(inputByte) / 128.0000000) - 1.0000000; + } + else + { + return float(inputByte) / 255.0000000; + } + //return ReturnValue; +} + +// Export UObject::execIsPendingKill(FFrame&, void* const) +native final function bool IsPendingKill(); + +final function name GetPackageName() +{ + local Object O; + + O = self; + J0x0B: + + // End:0x5A [Loop If] + if(O.Outer != none) + { + O = O.Outer; + // [Loop Continue] + goto J0x0B; + } + return O.Name; + //return ReturnValue; +} + +// Export UObject::execTransformVectorByRotation(FFrame&, void* const) +native final function Vector TransformVectorByRotation(Rotator SourceRotation, Vector SourceVector, optional bool bInverse); + +// Export UObject::execTimeStamp(FFrame&, void* const) +native final function string TimeStamp(); + +// Export UObject::execGetSystemTime(FFrame&, void* const) +native final function GetSystemTime(out int Year, out int Month, out int DayOfWeek, out int Day, out int Hour, out int Min, out int Sec, out int MSec); + +// Export UObject::execGetEngineVersion(FFrame&, void* const) +native final function int GetEngineVersion(); + +// Export UObject::execGetBuildChangelistNumber(FFrame&, void* const) +native final function int GetBuildChangelistNumber(); + +final function int GetRandomOptionSumFrequency(const out array FreqList) +{ + local float FreqSum, RandVal; + local int Idx; + + Idx = 0; + J0x0B: + + // End:0x4F [Loop If] + if(Idx < FreqList.Length) + { + FreqSum += FreqList[Idx]; + Idx++; + // [Loop Continue] + goto J0x0B; + } + RandVal = FRand() * FreqSum; + FreqSum = 0.0000000; + Idx = 0; + J0x80: + + // End:0xE5 [Loop If] + if(Idx < FreqList.Length) + { + FreqSum += FreqList[Idx]; + // End:0xD7 + if(RandVal < FreqSum) + { + return Idx; + } + Idx++; + // [Loop Continue] + goto J0x80; + } + return -1; + //return ReturnValue; +} + +// Export UObject::execGetLanguage(FFrame&, void* const) +native static final function string GetLanguage(); + +// Export UObject::execInvalidateGuid(FFrame&, void* const) +native static final function InvalidateGuid(out Guid InGuid); + +// Export UObject::execIsGuidValid(FFrame&, void* const) +native static final function bool IsGuidValid(const out Guid InGuid); + +// Export UObject::execCreateGuid(FFrame&, void* const) +native static final function Guid CreateGuid(); + +// Export UObject::execGetGuidFromString(FFrame&, void* const) +native static final function Guid GetGuidFromString(const out string InGuidString); + +// Export UObject::execGetStringFromGuid(FFrame&, void* const) +native static final function string GetStringFromGuid(const out Guid InGuid); + +// Export UObject::execProfNodeStart(FFrame&, void* const) +native static final function int ProfNodeStart(string TimerName); + +// Export UObject::execProfNodeStop(FFrame&, void* const) +native static final function ProfNodeStop(optional int AssumedTimerIndex = -1); + +// Export UObject::execProfNodeSetTimeThresholdSeconds(FFrame&, void* const) +native static final function ProfNodeSetTimeThresholdSeconds(float Threshold); + +// Export UObject::execProfNodeSetDepthThreshold(FFrame&, void* const) +native static final function ProfNodeSetDepthThreshold(int Depth); + +// Export UObject::execProfNodeEvent(FFrame&, void* const) +native static final function ProfNodeEvent(string EventName); diff --git a/exported/Core/Classes/Subsystem.uc b/exported/Core/Classes/Subsystem.uc new file mode 100755 index 00000000..360caa4b --- /dev/null +++ b/exported/Core/Classes/Subsystem.uc @@ -0,0 +1,6 @@ +class Subsystem extends Object + abstract + transient + native; + +var private native const noexport Pointer VfTable_FExec; diff --git a/exported/Engine/Classes/AICommandBase.uc b/exported/Engine/Classes/AICommandBase.uc new file mode 100755 index 00000000..4142f521 --- /dev/null +++ b/exported/Engine/Classes/AICommandBase.uc @@ -0,0 +1,10 @@ +class AICommandBase extends Object within AIController + abstract + native(AI); + +static event int GetUtility(AIController InAI) +{ + ScriptTrace(); + return -1; + //return ReturnValue; +} diff --git a/exported/Engine/Classes/AIController.uc b/exported/Engine/Classes/AIController.uc new file mode 100755 index 00000000..6f6cb89d --- /dev/null +++ b/exported/Engine/Classes/AIController.uc @@ -0,0 +1,274 @@ +class AIController extends Controller + native(AI) + notplaceable + hidecategories(Navigation); + +var bool bAdjustFromWalls; +var bool bReverseScriptedRoute; +var float Skill; +var Actor ScriptedMoveTarget; +var Route ScriptedRoute; +var int ScriptedRouteIndex; +var Actor ScriptedFocus; + +event PreBeginPlay() +{ + super(Actor).PreBeginPlay(); + // End:0x19 + if(bDeleteMe) + { + return; + } + // End:0x7B + if(WorldInfo.Game != none) + { + Skill += WorldInfo.Game.GameDifficulty; + } + Skill = FClamp(Skill, 0.0000000, 3.0000000); + //return; +} + +function Reset() +{ + super.Reset(); + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + local int I; + local string T; + local Canvas Canvas; + + Canvas = HUD.Canvas; + super.DisplayDebug(HUD, out_YL, out_YPos); + // End:0x53F + if(HUD.ShouldDisplayDebug('AI')) + { + Canvas.DrawColor.B = 255; + // End:0x191 + if(((Pawn != none) && MoveTarget != none) && Pawn.ReachedDestination(MoveTarget)) + { + Canvas.DrawText(((((" Skill " $ string(Skill)) $ " NAVIGATION MoveTarget ") $ (GetItemName(string(MoveTarget)))) $ "(REACHED) MoveTimer ") $ string(MoveTimer), false); + } + else + { + Canvas.DrawText(((((" Skill " $ string(Skill)) $ " NAVIGATION MoveTarget ") $ (GetItemName(string(MoveTarget)))) $ " MoveTimer ") $ string(MoveTimer), false); + } + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText(((((" Destination " $ string(GetDestinationPosition())) $ " Focus ") $ (GetItemName(string(Focus)))) $ " Preparing Move ") $ string(bPreparingMove), false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText(((" RouteGoal " $ (GetItemName(string(RouteGoal)))) $ " RouteDist ") $ string(RouteDist), false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + I = 0; + J0x3E0: + + // End:0x4BB [Loop If] + if(I < RouteCache.Length) + { + // End:0x464 + if(RouteCache[I] == none) + { + // End:0x45E + if(I > 5) + { + T = (T $ "--") $ (GetItemName(string(RouteCache[I - 1]))); + } + // [Explicit Break] + goto J0x4BB; + } + else + { + // End:0x4AD + if(I < 5) + { + T = (T $ (GetItemName(string(RouteCache[I])))) $ "-"; + } + } + I++; + // [Loop Continue] + goto J0x3E0; + } + J0x4BB: + + Canvas.DrawText(" RouteCache: " $ T, false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + //return; +} + +event SetTeam(int inTeamIdx) +{ + WorldInfo.Game.ChangeTeam(self, inTeamIdx, true); + //return; +} + +// Export UAIController::execGetPlayerViewPoint(FFrame&, void* const) +native function GetPlayerViewPoint(out Vector out_Location, out Rotator out_Rotation); + +function NotifyWeaponFired(Weapon W, byte FireMode) +{ + //return; +} + +function NotifyWeaponFinishedFiring(Weapon W, byte FireMode) +{ + //return; +} + +function bool CanFireWeapon(Weapon Wpn, byte FireModeNum) +{ + return true; + //return ReturnValue; +} + +state ScriptedMove +{ + event PoppedState() + { + // End:0x2F + if(ScriptedRoute == none) + { + ClearLatentAction(Class'Engine.SeqAct_AIMoveToActor', ScriptedMoveTarget == none); + } + ScriptedMoveTarget = none; + //return; + } + + event PushedState() + { + // End:0x2E + if(Pawn != none) + { + Pawn.SetMovementPhysics(); + } + //return; + } + J0x00: + // End:0xCA [Loop If] + if(((Pawn != none) && ScriptedMoveTarget != none) && !Pawn.ReachedDestination(ScriptedMoveTarget)) + { + // End:0x79 + if(ActorReachable(ScriptedMoveTarget)) + { + MoveToward(ScriptedMoveTarget, ScriptedFocus); + } + else + { + MoveTarget = FindPathToward(ScriptedMoveTarget); + // End:0xBC + if(MoveTarget != none) + { + MoveToward(MoveTarget, ScriptedFocus); + } + else + { + ScriptedMoveTarget = none; + } + } + // [Loop Continue] + goto J0x00; + } + PopState(); + stop; +} + +state ScriptedRouteMove +{ + event PoppedState() + { + ClearLatentAction(Class'Engine.SeqAct_AIMoveToActor', ScriptedRoute == none); + ScriptedRoute = none; + //return; + } + J0x00: + // End:0x178 [Loop If] + if((((Pawn != none) && ScriptedRoute != none) && ScriptedRouteIndex < ScriptedRoute.RouteList.Length) && ScriptedRouteIndex >= 0) + { + ScriptedMoveTarget = ScriptedRoute.RouteList[ScriptedRouteIndex].Actor; + // End:0xC8 + if(ScriptedMoveTarget != none) + { + PushState('ScriptedMove'); + } + // End:0x15F + if((Pawn != none) && Pawn.ReachedDestination(ScriptedRoute.RouteList[ScriptedRouteIndex].Actor)) + { + // End:0x151 + if(bReverseScriptedRoute) + { + ScriptedRouteIndex--; + } + else + { + ScriptedRouteIndex++; + } + } + else + { + ScriptedRoute = none; + PopState(); + } + // [Loop Continue] + goto J0x00; + } + // End:0x285 + if(((Pawn != none) && ScriptedRoute != none) && ScriptedRoute.RouteList.Length > 0) + { + switch(ScriptedRoute.RouteType) + { + // End:0x1FA + case 0: + PopState(); + // End:0x282 + break; + // End:0x249 + case 1: + bReverseScriptedRoute = !bReverseScriptedRoute; + // End:0x231 + if(bReverseScriptedRoute) + { + ScriptedRouteIndex--; + } + else + { + ScriptedRouteIndex++; + } + goto 'Begin'; + // End:0x282 + break; + // End:0x266 + case 2: + ScriptedRouteIndex = 0; + goto 'Begin'; + // End:0x282 + break; + // End:0xFFFF + default: + ScriptedRoute = none; + PopState(); + // End:0x282 + break; + break; + } + } + else + { + ScriptedRoute = none; + PopState(); + } + ScriptedRoute = none; + PopState(); + stop; +} + +defaultproperties +{ + bAdjustFromWalls=true + bCanDoSpecial=true + MinHitWall=-0.5000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AISwitchablePylon.uc b/exported/Engine/Classes/AISwitchablePylon.uc new file mode 100755 index 00000000..44e11240 --- /dev/null +++ b/exported/Engine/Classes/AISwitchablePylon.uc @@ -0,0 +1,48 @@ +class AISwitchablePylon extends Pylon + native + placeable + hidecategories(Navigation,Lighting,LightColor,Force,Lighting,LightColor,Force); + +var() bool bOpen; + +function PostBeginPlay() +{ + super.PostBeginPlay(); + SetEnabled(bOpen); + //return; +} + +event SetEnabled(bool bEnabled) +{ + bOpen = bEnabled; + bForceObstacleMeshCollision = !bOpen; + //return; +} + +event bool IsEnabled() +{ + return bOpen; + //return ReturnValue; +} + +defaultproperties +{ + bNeedsCostCheck=true + // Reference: CylinderComponent'Engine.Default__AISwitchablePylon.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Pylon.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + Components[5]=none + Components[6]=none + Components[7]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/AccessControl.uc b/exported/Engine/Classes/AccessControl.uc new file mode 100755 index 00000000..e80ab8d2 --- /dev/null +++ b/exported/Engine/Classes/AccessControl.uc @@ -0,0 +1,1486 @@ +class AccessControl extends Info + config(Game) + notplaceable + hidecategories(Navigation,Movement,Collision); + +struct PendingClientAuth +{ + var Player ClientConnection; + var UniqueNetId ClientUID; + var float AuthTimestamp; + var int AuthRetryCount; + + structdefaultproperties + { + ClientConnection=none + ClientUID=(Uid=()) + AuthTimestamp=0.0000000 + AuthRetryCount=0 + } +}; + +struct ServerAuthRetry +{ + var UniqueNetId ClientUID; + var int AuthRetryCount; + + structdefaultproperties + { + ClientUID=(Uid=()) + AuthRetryCount=0 + } +}; + +var globalconfig array IPPolicies; +var globalconfig array BannedIDs; +var const localized string IPBanned; +var const localized string WrongPassword; +var const localized string NeedPassword; +var const localized string SessionBanned; +var const localized string KickedMsg; +var const localized string DefaultKickReason; +var const localized string IdleKickReason; +var Class AdminClass; +var private globalconfig string AdminPassword; +var private globalconfig string GamePassword; +var const localized string ACDisplayText[3]; +var const localized string ACDescText[3]; +var bool bDontAddDefaultAdmin; +var globalconfig bool bAuthenticateClients; +var globalconfig bool bAuthenticateServer; +var globalconfig bool bAuthenticateListenHost; +var bool bAuthDelegatesRegistered; +var bool bPendingListenAuth; +var globalconfig int MaxAuthRetryCount; +var globalconfig int AuthRetryDelay; +var OnlineSubsystem OnlineSub; +var OnlineAuthInterface CachedAuthInt; +var array ClientsPendingAuth; +var array ServerAuthRetries; +var int ListenAuthTicketUID; +var int ListenAuthRetryCount; + +function PostBeginPlay() +{ + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + InitAuthHooks(); + //return; +} + +function Destroyed() +{ + Cleanup(); + //return; +} + +function bool IsAdmin(PlayerController P) +{ + // End:0x88 + if(P != none) + { + // End:0x29 + if(Admin(P) != none) + { + return true; + } + // End:0x88 + if((P.PlayerReplicationInfo != none) && P.PlayerReplicationInfo.bAdmin) + { + return true; + } + } + return false; + //return ReturnValue; +} + +function bool SetAdminPassword(string P) +{ + AdminPassword = P; + return true; + //return ReturnValue; +} + +function SetGamePassword(string P) +{ + GamePassword = P; + WorldInfo.Game.UpdateGameSettings(); + //return; +} + +function bool RequiresPassword() +{ + return GamePassword != ""; + //return ReturnValue; +} + +function Controller GetControllerFromString(string Target) +{ + local Controller C, FinalC; + local int I; + + FinalC = none; + // End:0x100 + foreach WorldInfo.AllControllers(Class'Engine.Controller', C) + { + // End:0xFF + if((C.PlayerReplicationInfo != none) && (C.PlayerReplicationInfo.PlayerName ~= Target) || C.PlayerReplicationInfo.PlayerName ~= Target) + { + FinalC = C; + // End:0x100 + break; + } + } + // End:0x26C + if(((C == none) && WorldInfo != none) && WorldInfo.GRI != none) + { + I = 0; + J0x152: + + // End:0x26C [Loop If] + if(I < WorldInfo.GRI.PRIArray.Length) + { + // End:0x25E + if(string(WorldInfo.GRI.PRIArray[I].PlayerID) == Target) + { + FinalC = Controller(WorldInfo.GRI.PRIArray[I].Owner); + // [Explicit Break] + goto J0x26C; + } + I++; + // [Loop Continue] + goto J0x152; + } + } + J0x26C: + + return FinalC; + //return ReturnValue; +} + +function Kick(string Target) +{ + local Controller C; + + C = GetControllerFromString(Target); + // End:0x12E + if((C != none) && C.PlayerReplicationInfo != none) + { + // End:0x92 + if(PlayerController(C) != none) + { + KickPlayer(PlayerController(C), DefaultKickReason); + } + else + { + // End:0x12E + if(C.PlayerReplicationInfo != none) + { + // End:0x107 + if(C.Pawn != none) + { + C.Pawn.Destroy(); + } + // End:0x12E + if(C != none) + { + C.Destroy(); + } + } + } + } + //return; +} + +function KickBan(string Target) +{ + local PlayerController P; + local string IP; + + P = PlayerController(GetControllerFromString(Target)); + // End:0x21E + if(NetConnection(P.Player) != none) + { + // End:0x107 + if(!WorldInfo.IsConsoleBuild()) + { + IP = P.GetPlayerNetworkAddress(); + // End:0x107 + if(CheckIPPolicy(IP)) + { + IP = Left(IP, InStr(IP, ":")); + IPPolicies[IPPolicies.Length] = "DENY," $ IP; + SaveConfig(); + } + } + // End:0x200 + if(P.PlayerReplicationInfo.UniqueId != P.PlayerReplicationInfo.default.UniqueId && !IsIDBanned(P.PlayerReplicationInfo.UniqueId)) + { + BannedIDs.AddItem(P.PlayerReplicationInfo.UniqueId); + SaveConfig(); + } + KickPlayer(P, DefaultKickReason); + return; + } + //return; +} + +function bool ForceKickPlayer(PlayerController C, string KickReason) +{ + // End:0xDE + if((C != none) && NetConnection(C.Player) != none) + { + // End:0x96 + if(C.Pawn != none) + { + C.Pawn.Suicide(); + } + C.ClientWasKicked(); + // End:0xDC + if(C != none) + { + C.Destroy(); + } + return true; + } + return false; + //return ReturnValue; +} + +function bool KickPlayer(PlayerController C, string KickReason) +{ + // End:0x75 + if(((C != none) && !IsAdmin(C)) && NetConnection(C.Player) != none) + { + return ForceKickPlayer(C, KickReason); + } + return false; + //return ReturnValue; +} + +function bool AdminLogin(PlayerController P, string Password) +{ + // End:0x12 + if(AdminPassword == "") + { + return false; + } + // End:0x61 + if(Password == AdminPassword) + { + P.PlayerReplicationInfo.bAdmin = true; + return true; + } + return false; + //return ReturnValue; +} + +function bool AdminLogout(PlayerController P) +{ + // End:0xD5 + if((P.PlayerReplicationInfo != none) && P.PlayerReplicationInfo.bAdmin) + { + P.PlayerReplicationInfo.bAdmin = false; + P.bGodMode = false; + P.Suicide(); + return true; + } + return false; + //return ReturnValue; +} + +function AdminEntered(PlayerController P) +{ + local string LoginString; + + LoginString = P.PlayerReplicationInfo.PlayerName @ "logged in as a server administrator."; + WorldInfo.Game.Broadcast(P, LoginString); + //return; +} + +function AdminExited(PlayerController P) +{ + local string LogoutString; + + LogoutString = P.PlayerReplicationInfo.PlayerName $ "is no longer logged in as a server administrator."; + WorldInfo.Game.Broadcast(P, LogoutString); + //return; +} + +function bool ParseAdminOptions(string Options) +{ + local string InAdminName, InPassword; + + InPassword = Class'Engine.GameInfo'.static.ParseOption(Options, "Password"); + InAdminName = Class'Engine.GameInfo'.static.ParseOption(Options, "AdminName"); + return ValidLogin(InAdminName, InPassword); + //return ReturnValue; +} + +function bool ValidLogin(string UserName, string Password) +{ + return (AdminPassword != "") && Password == AdminPassword; + //return ReturnValue; +} + +function bool CheckIPPolicy(string Address) +{ + local int I, J; + local string Policy, Mask; + local bool bAcceptAddress, bAcceptPolicy; + + J = InStr(Address, ":"); + // End:0x4C + if(J != -1) + { + Address = Left(Address, J); + } + bAcceptAddress = true; + I = 0; + J0x63: + + // End:0x202 [Loop If] + if(I < IPPolicies.Length) + { + J = InStr(IPPolicies[I], ","); + // End:0xB6 + if(J == -1) + { + } + else + { + Policy = Left(IPPolicies[I], J); + Mask = Mid(IPPolicies[I], J + 1); + // End:0x12F + if(Policy ~= "ACCEPT") + { + bAcceptPolicy = true; + } + else + { + // End:0x152 + if(Policy ~= "DENY") + { + bAcceptPolicy = false; + } + else + { + goto J0x1F4; + } + } + J = InStr(Mask, "*"); + // End:0x1C8 + if(J != -1) + { + // End:0x1C5 + if(Left(Mask, J) == Left(Address, J)) + { + bAcceptAddress = bAcceptPolicy; + } + } + else + { + // End:0x1F4 + if(Mask == Address) + { + bAcceptAddress = bAcceptPolicy; + } + } + } + J0x1F4: + + I++; + // [Loop Continue] + goto J0x63; + } + // End:0x211 + if(!bAcceptAddress) + { + } + return bAcceptAddress; + //return ReturnValue; +} + +function bool IsIDBanned(const out UniqueNetId NetId) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x5B [Loop If] + if(I < BannedIDs.Length) + { + // End:0x4D + if(BannedIDs[I] == NetId) + { + return true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +function InitAuthHooks() +{ + local OnlineGameSettings GameSettings; + local bool bIsLanMatch; + + // End:0x198 + if(OnlineSub != none) + { + CachedAuthInt = OnlineSub.AuthInterface; + // End:0xF3 + if(NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + GameSettings = OnlineSub.GameInterface.GetGameSettings(WorldInfo.Game.PlayerReplicationInfoClass.default.SessionName); + } + // End:0x195 + if((((int(WorldInfo.NetMode) == int(NM_DedicatedServer)) || int(WorldInfo.NetMode) == int(NM_ListenServer)) && GameSettings != none) && GameSettings.bIsLanMatch) + { + // End:0x189 + if(bAuthenticateClients) + { + } + bIsLanMatch = true; + } + } + else + { + bIsLanMatch = true; + } + // End:0x1CC + if(!bIsLanMatch && bAuthenticateClients) + { + RegisterAuthDelegates(); + } + //return; +} + +function RegisterAuthDelegates() +{ + // End:0x216 + if(NotEqual_InterfaceInterface(CachedAuthInt, OnlineAuthInterface(none))) + { + CachedAuthInt.AddAuthReadyDelegate(OnAuthReady); + CachedAuthInt.AddServerAuthRequestDelegate(ProcessServerAuthRequest); + CachedAuthInt.AddClientAuthResponseDelegate(ProcessClientAuthResponse); + CachedAuthInt.AddClientAuthCompleteDelegate(OnClientAuthComplete); + CachedAuthInt.AddClientConnectionCloseDelegate(OnClientConnectionClose); + CachedAuthInt.AddServerAuthRetryRequestDelegate(ProcessServerAuthRetryRequest); + CachedAuthInt.ClearClientConnectionCloseDelegate(Class'Engine.AccessControl'.StaticOnClientConnectionClose); + // End:0x207 + if(NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + OnlineSub.GameInterface.AddDestroyOnlineGameCompleteDelegate(OnDestroyOnlineGameComplete); + } + bAuthDelegatesRegistered = true; + } + else + { + // End:0x257 + if(OnlineSub.Class.Name != 'OnlineSubsystemSteamworks') + { + } + bAuthDelegatesRegistered = false; + } + //return; +} + +function ClearAuthDelegates(bool bExiting) +{ + // End:0x22A + if(NotEqual_InterfaceInterface(CachedAuthInt, OnlineAuthInterface(none))) + { + CachedAuthInt.ClearAuthReadyDelegate(OnAuthReady); + CachedAuthInt.ClearServerAuthRequestDelegate(ProcessServerAuthRequest); + CachedAuthInt.ClearClientAuthResponseDelegate(ProcessClientAuthResponse); + CachedAuthInt.ClearClientAuthCompleteDelegate(OnClientAuthComplete); + CachedAuthInt.ClearClientConnectionCloseDelegate(OnClientConnectionClose); + CachedAuthInt.ClearServerAuthRetryRequestDelegate(ProcessServerAuthRetryRequest); + // End:0x19B + if(!bExiting) + { + CachedAuthInt.AddClientConnectionCloseDelegate(Class'Engine.AccessControl'.StaticOnClientConnectionClose); + } + // End:0x227 + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + OnlineSub.GameInterface.ClearDestroyOnlineGameCompleteDelegate(OnDestroyOnlineGameComplete); + } + } + bAuthDelegatesRegistered = false; + //return; +} + +event PreLogin(string Options, string Address, const UniqueNetId UniqueId, bool bSupportsAuth, out string OutError, bool bSpectator) +{ + local string InPassword; + local int I, CurPort, LingeringPort; + local IpAddr CurIP, ClientIP; + local bool bFound, bSuccess; + local UniqueNetId NullId, HostUID; + local Player ClientConn, CurConn; + local AuthSession CurClientSession; + local OnlineGameSettings GameSettings; + + OutError = ""; + InPassword = WorldInfo.Game.ParseOption(Options, "Password"); + // End:0x127 + if((int(WorldInfo.NetMode) != int(NM_Standalone)) && WorldInfo.Game.AtCapacity(bSpectator)) + { + OutError = PathName(WorldInfo.Game.GameMessageClass) $ ".MaxedOutMessage"; + } + else + { + // End:0x1E2 + if(((GamePassword != "") && !InPassword == GamePassword) && (AdminPassword == "") || !InPassword == AdminPassword) + { + OutError = ((InPassword == "") ? "Engine.AccessControl.NeedPassword" : "Engine.AccessControl.WrongPassword"); + } + } + // End:0x223 + if(!CheckIPPolicy(Address)) + { + OutError = "Engine.AccessControl.IPBanned"; + } + // End:0xB47 + if(((bAuthenticateClients && OutError == "") && NotEqual_InterfaceInterface(CachedAuthInt, OnlineAuthInterface(none))) && bAuthDelegatesRegistered) + { + // End:0xB47 + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + GameSettings = OnlineSub.GameInterface.GetGameSettings(WorldInfo.Game.PlayerReplicationInfoClass.default.SessionName); + // End:0xB47 + if((((int(WorldInfo.NetMode) == int(NM_DedicatedServer)) || int(WorldInfo.NetMode) == int(NM_ListenServer)) && GameSettings != none) && !GameSettings.bIsLanMatch) + { + // End:0x475 + if(!bSupportsAuth) + { + // End:0x44B + if(OnlineSub.Class.Name == 'OnlineSubsystemSteamworks') + { + OutError = "Engine.Errors.SteamClientRequired"; + } + else + { + OutError = "Server requires authentication"; + } + } + // End:0x4C3 + if(OutError == "") + { + ClientConn = WorldInfo.Game.PauseLogin(); + } + // End:0xB0B + if(ClientConn != none) + { + // End:0x53D + foreach WorldInfo.AllClientConnections(CurConn, CurIP, CurPort) + { + // End:0x53C + if(CurConn == ClientConn) + { + ClientIP = CurIP; + // End:0x53D + break; + } + } + LingeringPort = 0; + // End:0x603 + foreach CachedAuthInt.AllClientAuthSessions(CurClientSession) + { + // End:0x602 + if(CurClientSession.EndPointIP == ClientIP && CurClientSession.EndPointUID == UniqueId) + { + LingeringPort = CurClientSession.EndPointPort; + // End:0x603 + break; + } + } + // End:0x6E4 + if(LingeringPort != 0) + { + // End:0x6E3 + foreach WorldInfo.AllClientConnections(CurConn, CurIP, CurPort) + { + // End:0x6E2 + if(((CurConn != ClientConn) && CurIP == ClientIP) && CurPort == LingeringPort) + { + WorldInfo.Game.RejectLogin(CurConn, ""); + // End:0x6E3 + break; + } + } + } + I = 0; + J0x6EF: + + // End:0x75F [Loop If] + if(I < ClientsPendingAuth.Length) + { + // End:0x751 + if(ClientsPendingAuth[I].ClientUID == UniqueId) + { + bFound = true; + // [Explicit Break] + goto J0x75F; + } + I++; + // [Loop Continue] + goto J0x6EF; + } + J0x75F: + + // End:0x80F + if(!bFound) + { + // End:0x80E + foreach CachedAuthInt.AllClientAuthSessions(CurClientSession) + { + // End:0x80D + if(CurClientSession.EndPointUID == UniqueId && CurClientSession.EndPointIP != ClientIP) + { + bFound = true; + // End:0x80E + break; + } + } + } + // End:0x8E0 + if((((int(WorldInfo.NetMode) == int(NM_ListenServer)) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) && OnlineSub.PlayerInterface.GetUniquePlayerId(0, HostUID)) && UniqueId == HostUID) + { + bFound = true; + } + // End:0xAC8 + if(!bFound && UniqueId != NullId) + { + // End:0x9AD + if(CachedAuthInt.IsReady()) + { + bSuccess = CachedAuthInt.SendClientAuthRequest(ClientConn, UniqueId); + // End:0x9AA + if(bSuccess && !IsTimerActive('PendingAuthTimer')) + { + SetTimer(3.0000000, true, 'PendingAuthTimer'); + } + } + else + { + bSuccess = true; + } + // End:0xA99 + if(bSuccess) + { + I = ClientsPendingAuth.Length; + ClientsPendingAuth.Length = I + 1; + ClientsPendingAuth[I].ClientConnection = ClientConn; + ClientsPendingAuth[I].ClientUID = UniqueId; + ClientsPendingAuth[I].AuthTimestamp = WorldInfo.RealTimeSeconds; + } + else + { + OutError = "Failed to kickoff authentication"; + } + } + else + { + // End:0xAF1 + if(bFound) + { + OutError = "Duplicate UID"; + } + else + { + OutError = "Invalid UID"; + } + } + } + else + { + // End:0xB47 + if(OutError == "") + { + OutError = "Failed to kickoff authentication"; + } + } + } + } + } + //return; +} + +function PostLogin(PlayerController NewPlayer) +{ + // End:0xD5 + if(((((LocalPlayer(NewPlayer.Player) != none) && bAuthDelegatesRegistered) && bAuthenticateListenHost) && int(WorldInfo.NetMode) == int(NM_ListenServer)) && NotEqual_InterfaceInterface(CachedAuthInt, OnlineAuthInterface(none))) + { + // End:0xC9 + if(CachedAuthInt.IsReady()) + { + BeginListenHostAuth(); + } + else + { + bPendingListenAuth = true; + } + } + //return; +} + +function PendingAuthTimer() +{ + local int I, OldLength; + local bool bFailed; + local AuthSession CurClientSession; + + I = 0; + J0x0B: + + // End:0x445 [Loop If] + if(I < ClientsPendingAuth.Length) + { + // End:0x72 + if(ClientsPendingAuth[I].ClientConnection == none) + { + ClientsPendingAuth.Remove(I, 1); + I--; + } + else + { + // End:0x103 + if(WorldInfo.RealTimeSeconds < ClientsPendingAuth[I].AuthTimestamp) + { + ClientsPendingAuth[I].AuthTimestamp = WorldInfo.RealTimeSeconds; + } + else + { + // End:0x437 + if((WorldInfo.RealTimeSeconds - ClientsPendingAuth[I].AuthTimestamp) >= float(AuthRetryDelay)) + { + // End:0x437 + if(CachedAuthInt.FindClientAuthSession(ClientsPendingAuth[I].ClientConnection, CurClientSession)) + { + // End:0x361 + if(ClientsPendingAuth[I].AuthRetryCount < MaxAuthRetryCount) + { + CachedAuthInt.EndRemoteClientAuthSession(CurClientSession.EndPointUID, CurClientSession.EndPointIP); + CachedAuthInt.SendClientAuthEndSessionRequest(ClientsPendingAuth[I].ClientConnection); + // End:0x352 + if(CachedAuthInt.SendClientAuthRequest(ClientsPendingAuth[I].ClientConnection, CurClientSession.EndPointUID)) + { + ClientsPendingAuth[I].AuthTimestamp = WorldInfo.RealTimeSeconds; + ClientsPendingAuth[I].AuthRetryCount++; + } + else + { + bFailed = true; + } + } + else + { + bFailed = true; + } + // End:0x437 + if(bFailed) + { + OldLength = ClientsPendingAuth.Length; + WorldInfo.Game.RejectLogin(ClientsPendingAuth[I].ClientConnection, "Authentication failed"); + // End:0x42C + if(OldLength == ClientsPendingAuth.Length) + { + ClientsPendingAuth.Remove(I, 1); + } + I--; + } + } + } + } + } + ++I; + // [Loop Continue] + goto J0x0B; + } + // End:0x469 + if(ClientsPendingAuth.Length == 0) + { + ClearTimer('PendingAuthTimer'); + } + //return; +} + +function OnAuthReady() +{ + local int I, OldLength; + + // End:0x279 + if(bAuthDelegatesRegistered) + { + I = 0; + J0x18: + + // End:0x204 [Loop If] + if(I < ClientsPendingAuth.Length) + { + // End:0x7F + if(ClientsPendingAuth[I].ClientConnection == none) + { + ClientsPendingAuth.Remove(I, 1); + I--; + } + else + { + // End:0x136 + if(CachedAuthInt.SendClientAuthRequest(ClientsPendingAuth[I].ClientConnection, ClientsPendingAuth[I].ClientUID)) + { + ClientsPendingAuth[I].AuthTimestamp = WorldInfo.RealTimeSeconds; + } + else + { + OldLength = ClientsPendingAuth.Length; + WorldInfo.Game.RejectLogin(ClientsPendingAuth[I].ClientConnection, "Authentication failed"); + // End:0x1E8 + if(OldLength == ClientsPendingAuth.Length) + { + ClientsPendingAuth.Remove(I, 1); + } + I--; + } + } + ++I; + // [Loop Continue] + goto J0x18; + } + // End:0x227 + if(ClientsPendingAuth.Length > 0) + { + SetTimer(3.0000000, true, 'PendingAuthTimer'); + } + // End:0x279 + if((bAuthenticateListenHost && int(WorldInfo.NetMode) == int(NM_ListenServer)) && bPendingListenAuth) + { + BeginListenHostAuth(); + } + } + //return; +} + +function ProcessClientAuthResponse(UniqueNetId ClientUID, IpAddr ClientIP, int AuthTicketUID) +{ + local bool bSuccess; + local int I, PendingIdx, OldLength; + + PendingIdx = -1; + I = 0; + J0x1A: + + // End:0x91 [Loop If] + if(I < ClientsPendingAuth.Length) + { + // End:0x83 + if(ClientsPendingAuth[I].ClientUID == ClientUID) + { + PendingIdx = I; + // [Explicit Break] + goto J0x91; + } + I++; + // [Loop Continue] + goto J0x1A; + } + J0x91: + + // End:0x1AF + if(PendingIdx != -1) + { + bSuccess = CachedAuthInt.VerifyClientAuthSession(ClientUID, ClientIP, 0, AuthTicketUID); + // End:0x1AC + if(!bSuccess) + { + OldLength = ClientsPendingAuth.Length; + WorldInfo.Game.RejectLogin(ClientsPendingAuth[I].ClientConnection, "Authentication failed"); + // End:0x1AC + if(OldLength == ClientsPendingAuth.Length) + { + ClientsPendingAuth.Remove(PendingIdx, 1); + } + } + } + //return; +} + +function OnClientAuthComplete(bool bSuccess, UniqueNetId ClientUID, Player ClientConnection, string ExtraInfo) +{ + local UniqueNetId HostUID; + local int I, PendingLen, PendingIdx; + local PlayerController P; + local PlayerReplicationInfo PRI; + local bool bResumeLogin; + local AuthSession CurClientSession; + + // End:0xFC + if((((int(WorldInfo.NetMode) == int(NM_ListenServer)) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) && OnlineSub.PlayerInterface.GetUniquePlayerId(0, HostUID)) && HostUID == ClientUID) + { + // End:0xFA + if(bSuccess) + { + ClearTimer('ListenHostAuthTimeout'); + ClearTimer('ContinueListenHostAuth'); + } + return; + } + PendingLen = ClientsPendingAuth.Length; + PendingIdx = -1; + I = 0; + J0x12A: + + // End:0x1F8 [Loop If] + if(I < PendingLen) + { + // End:0x1EA + if(((ClientConnection != none) && ClientsPendingAuth[I].ClientConnection == ClientConnection) || (ClientConnection == none) && ClientsPendingAuth[I].ClientUID == ClientUID) + { + PendingIdx = I; + // [Explicit Break] + goto J0x1F8; + } + I++; + // [Loop Continue] + goto J0x12A; + } + J0x1F8: + + // End:0x42F + if(PendingIdx != -1) + { + // End:0x3FF + if(ClientConnection != none) + { + // End:0x3AB + if(bSuccess) + { + // End:0x2B3 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', P) + { + // End:0x2B2 + if(P.Player == ClientConnection) + { + PRI = P.PlayerReplicationInfo; + // End:0x2B3 + break; + } + } + // End:0x303 + if(PRI != none) + { + P.PlayerReplicationInfo.SetUniqueId(ClientUID); + } + bResumeLogin = true; + // End:0x3A8 + if(bAuthenticateServer) + { + // End:0x3A8 + if(CachedAuthInt.FindClientAuthSession(ClientConnection, CurClientSession)) + { + ProcessServerAuthRequest(ClientConnection, ClientUID, CurClientSession.EndPointIP, CurClientSession.EndPointPort); + } + } + } + else + { + WorldInfo.Game.RejectLogin(ClientConnection, "Authentication failed"); + } + } + // End:0x42C + if(ClientsPendingAuth.Length == PendingLen) + { + ClientsPendingAuth.Remove(PendingIdx, 1); + } + } + // End:0x479 + if(bResumeLogin) + { + WorldInfo.Game.ResumeLogin(ClientConnection); + } + //return; +} + +function ProcessServerAuthRequest(Player ClientConnection, UniqueNetId ClientUID, IpAddr ClientIP, int ClientPort) +{ + local int AuthTicketUID; + local LocalAuthSession CurServerSession; + local bool bFound; + + // End:0x13B + if(bAuthenticateServer) + { + // End:0xAA + foreach CachedAuthInt.AllLocalServerAuthSessions(CurServerSession) + { + // End:0xA9 + if(CurServerSession.EndPointUID == ClientUID && CurServerSession.EndPointIP == ClientIP) + { + bFound = true; + } + } + // End:0x13B + if(!bFound) + { + // End:0x13B + if(CachedAuthInt.CreateServerAuthSession(ClientUID, ClientIP, ClientPort, AuthTicketUID)) + { + // End:0x138 + if(!CachedAuthInt.SendServerAuthResponse(ClientConnection, AuthTicketUID)) + { + } + } + } + } + //return; +} + +function ProcessServerAuthRetryRequest(Player ClientConnection) +{ + local bool bFoundAndAuthenticated; + local IpAddr ClientIP; + local int ClientPort, I, CurRetryIdx; + local UniqueNetId ClientUID; + local AuthSession CurClientSession; + local LocalAuthSession CurServerSession; + + // End:0x3DD + if(bAuthenticateServer && ClientConnection != none) + { + bFoundAndAuthenticated = CachedAuthInt.FindClientAuthSession(ClientConnection, CurClientSession) && int(CurClientSession.AuthStatus) == int(2); + // End:0x3DD + if(bFoundAndAuthenticated) + { + ClientUID = CurClientSession.EndPointUID; + ClientIP = CurClientSession.EndPointIP; + ClientPort = CurClientSession.EndPointPort; + CurRetryIdx = -1; + I = 0; + J0x11D: + + // End:0x194 [Loop If] + if(I < ServerAuthRetries.Length) + { + // End:0x186 + if(ServerAuthRetries[I].ClientUID == ClientUID) + { + CurRetryIdx = I; + // [Explicit Break] + goto J0x194; + } + ++I; + // [Loop Continue] + goto J0x11D; + } + J0x194: + + // End:0x202 + if(CurRetryIdx == -1) + { + CurRetryIdx = ServerAuthRetries.Length; + ServerAuthRetries.Length = CurRetryIdx + 1; + ServerAuthRetries[CurRetryIdx].ClientUID = ClientUID; + } + // End:0x323 + if(ServerAuthRetries[CurRetryIdx].AuthRetryCount < MaxAuthRetryCount) + { + // End:0x2C9 + foreach CachedAuthInt.AllLocalServerAuthSessions(CurServerSession) + { + // End:0x2C8 + if(CurServerSession.EndPointUID == ClientUID) + { + CachedAuthInt.EndLocalServerAuthSession(ClientUID, ClientIP); + // End:0x2C9 + break; + } + } + ProcessServerAuthRequest(ClientConnection, ClientUID, ClientIP, ClientPort); + ServerAuthRetries[CurRetryIdx].AuthRetryCount++; + } + else + { + // End:0x3B5 + if(ServerAuthRetries[CurRetryIdx].AuthRetryCount > Max(30, MaxAuthRetryCount + 20)) + { + WorldInfo.Game.RejectLogin(ClientConnection, "Spamming server auth"); + } + else + { + ServerAuthRetries[CurRetryIdx].AuthRetryCount++; + } + } + } + } + //return; +} + +function BeginListenHostAuth(optional bool bRetry) +{ + local UniqueNetId ServerUID, HostUID; + local IpAddr ServerIP; + local int ServerPort; + local OnlineGameSettings GameSettings; + local bool bGotHostInfo, bFound, bSecure; + local AuthSession CurClientSession, ListenSession; + + bPendingListenAuth = false; + // End:0xE0 + if(CachedAuthInt.IsReady()) + { + bGotHostInfo = (CachedAuthInt.GetServerUniqueId(ServerUID) && CachedAuthInt.GetServerAddr(ServerIP, ServerPort)) && OnlineSub.PlayerInterface.GetUniquePlayerId(0, HostUID); + } + // End:0x392 + if(bGotHostInfo) + { + // End:0x1A0 + foreach CachedAuthInt.AllClientAuthSessions(CurClientSession) + { + // End:0x19F + if(CurClientSession.EndPointUID == HostUID && CurClientSession.EndPointIP == ServerIP) + { + ListenSession = CurClientSession; + bFound = true; + // End:0x1A0 + break; + } + } + // End:0x334 + if(!bFound || bRetry) + { + // End:0x27B + if(NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + GameSettings = OnlineSub.GameInterface.GetGameSettings(WorldInfo.Game.PlayerReplicationInfoClass.default.SessionName); + } + // End:0x2B4 + if(GameSettings != none) + { + bSecure = GameSettings.bAntiCheatProtected; + } + // End:0x318 + if(CachedAuthInt.CreateClientAuthSession(ServerUID, ServerIP, ServerPort, bSecure, ListenAuthTicketUID)) + { + SetTimer(1.0000000, false, 'ContinueListenHostAuth'); + } + SetTimer(float(AuthRetryDelay), false, 'ListenHostAuthTimeout'); + } + else + { + // End:0x38F + if((int(ListenSession.AuthStatus) != int(2)) && !IsTimerActive('ListenHostAuthTimeout')) + { + SetTimer(float(AuthRetryDelay), false, 'ListenHostAuthTimeout'); + } + } + } + else + { + OnlineSub.PlayerInterface.GetUniquePlayerId(0, HostUID); + OnClientAuthComplete(false, HostUID, none, "Failed to kickoff listen host authentication"); + } + //return; +} + +function ContinueListenHostAuth() +{ + local bool bGotHostInfo; + local UniqueNetId HostUID; + local IpAddr ServerIP; + local int ServerPort; + + // End:0xB7 + if(NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + bGotHostInfo = OnlineSub.PlayerInterface.GetUniquePlayerId(0, HostUID) && CachedAuthInt.GetServerAddr(ServerIP, ServerPort); + } + // End:0x196 + if(!bGotHostInfo || !CachedAuthInt.VerifyClientAuthSession(HostUID, ServerIP, ServerPort, ListenAuthTicketUID)) + { + OnlineSub.PlayerInterface.GetUniquePlayerId(0, HostUID); + OnClientAuthComplete(false, HostUID, none, "VerifyClientAuthSession failed for listen host"); + } + //return; +} + +function EndListenHostAuth() +{ + local bool bGotHostInfo; + local UniqueNetId ServerUID, HostUID; + local IpAddr ServerIP; + local int ServerPort; + + // End:0xE5 + if(NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + bGotHostInfo = (CachedAuthInt.GetServerUniqueId(ServerUID) && CachedAuthInt.GetServerAddr(ServerIP, ServerPort)) && OnlineSub.PlayerInterface.GetUniquePlayerId(0, HostUID); + } + // End:0x162 + if(bGotHostInfo) + { + CachedAuthInt.EndLocalClientAuthSession(ServerUID, ServerIP, ServerPort); + CachedAuthInt.EndRemoteClientAuthSession(HostUID, ServerIP); + } + //return; +} + +function ListenHostAuthTimeout() +{ + local UniqueNetId HostUID; + + ClearTimer('ListenHostAuthTimeout'); + ClearTimer('ContinueListenHostAuth'); + // End:0x58 + if(ListenAuthRetryCount < MaxAuthRetryCount) + { + ListenAuthRetryCount++; + BeginListenHostAuth(true); + } + else + { + OnlineSub.PlayerInterface.GetUniquePlayerId(0, HostUID); + OnClientAuthComplete(false, HostUID, none, "VerifyClientAuthSession failed for listen host"); + EndListenHostAuth(); + } + //return; +} + +function OnClientConnectionClose(Player ClientConnection) +{ + local int I; + + // End:0xB0 + if(ClientConnection != none) + { + StaticOnClientConnectionClose(ClientConnection); + I = 0; + J0x2D: + + // End:0xB0 [Loop If] + if(I < ClientsPendingAuth.Length) + { + // End:0xA2 + if((ClientConnection != none) && ClientsPendingAuth[I].ClientConnection == ClientConnection) + { + ClientsPendingAuth.Remove(I, 1); + // [Explicit Break] + goto J0xB0; + } + ++I; + // [Loop Continue] + goto J0x2D; + } + } + J0xB0: + + //return; +} + +static final function StaticOnClientConnectionClose(Player ClientConnection) +{ + local OnlineSubsystem CurOnlineSub; + local OnlineAuthInterface CurAuthInt; + local int I; + local WorldInfo WI; + local AuthSession CurClientSession; + local LocalAuthSession CurServerSession; + + CurOnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x60 + if(CurOnlineSub != none) + { + CurAuthInt = CurOnlineSub.AuthInterface; + } + // End:0x3C1 + if(NotEqual_InterfaceInterface(CurAuthInt, OnlineAuthInterface(none)) && ClientConnection != none) + { + // End:0x147 + if(CurAuthInt.FindClientAuthSession(ClientConnection, CurClientSession) && int(CurClientSession.AuthStatus) == int(2)) + { + CurAuthInt.EndRemoteClientAuthSession(CurClientSession.EndPointUID, CurClientSession.EndPointIP); + } + // End:0x3C1 + if(CurAuthInt.FindLocalServerAuthSession(ClientConnection, CurServerSession)) + { + CurAuthInt.EndLocalServerAuthSession(CurServerSession.EndPointUID, CurServerSession.EndPointIP); + WI = Class'Engine.WorldInfo'.static.GetWorldInfo(); + // End:0x3C1 + if(((WI != none) && WI.Game != none) && WI.Game.AccessControl != none) + { + I = 0; + J0x278: + + // End:0x3C1 [Loop If] + if(I < WI.Game.AccessControl.ServerAuthRetries.Length) + { + // End:0x3B3 + if(WI.Game.AccessControl.ServerAuthRetries[I].ClientUID == CurServerSession.EndPointUID) + { + WI.Game.AccessControl.ServerAuthRetries.Remove(I, 1); + // [Explicit Break] + goto J0x3C1; + } + ++I; + // [Loop Continue] + goto J0x278; + } + } + } + } + J0x3C1: + + //return; +} + +function OnDestroyOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + local IpAddr CurIP; + local int CurPort; + local Player ClientConn, CurConn; + local AuthSession CurClientSession; + + // End:0x33 + if(int(WorldInfo.NetMode) == int(NM_ListenServer)) + { + EndListenHostAuth(); + } + // End:0x1D1 + foreach CachedAuthInt.AllClientAuthSessions(CurClientSession) + { + // End:0x1D0 + if(int(CurClientSession.AuthStatus) == int(2)) + { + CachedAuthInt.EndRemoteClientAuthSession(CurClientSession.EndPointUID, CurClientSession.EndPointIP); + // End:0x18F + foreach WorldInfo.AllClientConnections(CurConn, CurIP, CurPort) + { + // End:0x18E + if(CurIP == CurClientSession.EndPointIP && CurPort == CurClientSession.EndPointPort) + { + ClientConn = CurConn; + // End:0x18F + break; + } + } + // End:0x1D0 + if(ClientConn != none) + { + // End:0x1CD + if(!CachedAuthInt.SendClientAuthEndSessionRequest(ClientConn)) + { + } + // End:0x1D0 + continue; + } + } + } + CachedAuthInt.EndAllLocalServerAuthSessions(); + ServerAuthRetries.Length = 0; + //return; +} + +function NotifyServerTravel(bool bSeamless) +{ + // End:0x1A + if(!bSeamless) + { + Cleanup(); + } + //return; +} + +function NotifyGameEnding() +{ + local GameEngine Engine; + + Engine = GameEngine(Class'Engine.Engine'.static.GetEngine()); + // End:0x8C + if((WorldInfo.NextURL != "") || Engine.TravelURL != "") + { + Cleanup(); + } + else + { + NotifyExit(); + } + //return; +} + +function NotifyExit() +{ + Cleanup(true); + //return; +} + +function Cleanup(optional bool bExit) +{ + // End:0x8E + if(NotEqual_InterfaceInterface(CachedAuthInt, OnlineAuthInterface(none))) + { + ClearAuthDelegates(bExit); + // End:0x8E + if(bExit) + { + CachedAuthInt.EndAllRemoteClientAuthSessions(); + CachedAuthInt.EndAllLocalServerAuthSessions(); + ServerAuthRetries.Length = 0; + } + } + CachedAuthInt = none; + OnlineSub = none; + //return; +} + +function bool IsPendingAuth(UniqueNetId PlayerUID) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x6E [Loop If] + if(I < ClientsPendingAuth.Length) + { + // End:0x60 + if(ClientsPendingAuth[I].ClientUID == PlayerUID) + { + return true; + } + ++I; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +defaultproperties +{ + IPPolicies[0]="ACCEPT;*" + IPBanned="Your IP address has been banned on this server." + WrongPassword="The password you entered is incorrect." + NeedPassword="You need to enter a password to join this game." + SessionBanned="Your IP address has been banned from the current game session." + KickedMsg="You have been forcibly removed from the game." + DefaultKickReason="None specified" + IdleKickReason="Kicked for idling." + AdminClass=Class'Engine.Admin' + ACDisplayText[0]="Game Password" + ACDisplayText[1]="Access Policies" + ACDisplayText[2]="Admin Password" + ACDescText[0]="If this password is set, players will have to enter it to join this server." + ACDescText[1]="Specifies IP addresses or address ranges which have been banned." + ACDescText[2]="Password required to login with administrator privileges on this server." + bAuthenticateClients=true + bAuthenticateServer=true + bAuthenticateListenHost=true + MaxAuthRetryCount=3 + AuthRetryDelay=5 + bAlwaysTick=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/Actor.uc b/exported/Engine/Classes/Actor.uc new file mode 100755 index 00000000..2b5714c0 --- /dev/null +++ b/exported/Engine/Classes/Actor.uc @@ -0,0 +1,2813 @@ +class Actor extends Object + abstract + native + nativereplication + hidecategories(Navigation); + +const TRACEFLAG_Bullet = 1; +const TRACEFLAG_PhysicsVolumes = 2; +const TRACEFLAG_SkipMovers = 4; +const TRACEFLAG_Blocking = 8; +const TRACEFLAG_ForceController = 16; +const REP_RBLOCATION_ERROR_TOLERANCE_SQ = 16.0f; +const MINFLOORZ = 0.7; +const ACTORMAXSTEPHEIGHT = 35.0; +const RBSTATE_LINVELSCALE = 10.0; +const RBSTATE_ANGVELSCALE = 1000.0; +const RB_None = 0x00; +const RB_NeedsUpdate = 0x01; +const RB_Sleeping = 0x02; + +enum EPhysics +{ + PHYS_None, // 0 + PHYS_Walking, // 1 + PHYS_Falling, // 2 + PHYS_Swimming, // 3 + PHYS_Flying, // 4 + PHYS_Rotating, // 5 + PHYS_Projectile, // 6 + PHYS_Interpolating, // 7 + PHYS_Spider, // 8 + PHYS_Ladder, // 9 + PHYS_RigidBody, // 10 + PHYS_SoftBody, // 11 + PHYS_NavMeshWalking, // 12 + PHYS_Suspended, // 13 + PHYS_Custom, // 14 + PHYS_Tweening, // 15 + PHYS_Charging, // 16 + PHYS_Blinking, // 17 + PHYS_MAX // 18 +}; + +enum EMoveDir +{ + MD_Stationary, // 0 + MD_Forward, // 1 + MD_Backward, // 2 + MD_Left, // 3 + MD_Right, // 4 + MD_Up, // 5 + MD_Down, // 6 + MD_MAX // 7 +}; + +enum EActorMetricsType +{ + METRICS_VERTS, // 0 + METRICS_TRIS, // 1 + METRICS_SECTIONS, // 2 + METRICS_MAX // 3 +}; + +enum ENetRole +{ + ROLE_None, // 0 + ROLE_SimulatedProxy, // 1 + ROLE_AutonomousProxy, // 2 + ROLE_Authority, // 3 + ROLE_MAX // 4 +}; + +enum ECollisionType +{ + COLLIDE_CustomDefault, // 0 + COLLIDE_NoCollision, // 1 + COLLIDE_BlockAll, // 2 + COLLIDE_BlockWeapons, // 3 + COLLIDE_TouchAll, // 4 + COLLIDE_TouchWeapons, // 5 + COLLIDE_BlockAllButWeapons, // 6 + COLLIDE_TouchAllButWeapons, // 7 + COLLIDE_BlockWeaponsKickable, // 8 + COLLIDE_MAX // 9 +}; + +enum ETravelType +{ + TRAVEL_Absolute, // 0 + TRAVEL_Partial, // 1 + TRAVEL_Relative, // 2 + TRAVEL_MAX // 3 +}; + +enum EDoubleClickDir +{ + DCLICK_None, // 0 + DCLICK_Left, // 1 + DCLICK_Right, // 2 + DCLICK_Forward, // 3 + DCLICK_Back, // 4 + DCLICK_Active, // 5 + DCLICK_Done, // 6 + DCLICK_MAX // 7 +}; + +enum EApplyEffectResult +{ + APPLYEFFECT_OK, // 0 + APPLYEFFECT_IMMUNE, // 1 + APPLYEFFECT_FAIL, // 2 + APPLYEFFECT_MAX // 3 +}; + +struct native TimerData +{ + var bool bLoop; + var bool bPaused; + var name FuncName; + var float Rate; + var float Count; + var float TimerTimeDilation; + var Object TimerObj; + + structdefaultproperties + { + bLoop=false + bPaused=false + FuncName="None" + Rate=0.0000000 + Count=0.0000000 + TimerTimeDilation=1.0000000 + TimerObj=none + } +}; + +struct native transient TraceHitInfo +{ + var init Material Material; + var init PhysicalMaterial PhysMaterial; + var init int Item; + var init int LevelIndex; + var init name BoneName; + var init export editinline PrimitiveComponent HitComponent; + + structdefaultproperties + { + Material=none + PhysMaterial=none + Item=0 + LevelIndex=0 + BoneName="None" + HitComponent=none + } +}; + +struct native transient ImpactInfo +{ + var init Actor HitActor; + var init Vector HitLocation; + var init Vector HitNormal; + var init Vector RayDir; + var init Vector StartTrace; + var init TraceHitInfo HitInfo; + var init float PercAbsorbedDamage; + var init Object DeviceModeReference; + var init Projectile Projectile; + var init bool bDirectHit; + var init byte nFiringInstance; + var init byte nShotsHit; + + structdefaultproperties + { + HitActor=none + HitLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + HitNormal=(X=0.0000000,Y=0.0000000,Z=0.0000000) + RayDir=(X=0.0000000,Y=0.0000000,Z=0.0000000) + StartTrace=(X=0.0000000,Y=0.0000000,Z=0.0000000) + HitInfo=(Material=none,PhysMaterial=none,Item=0,LevelIndex=0,BoneName="None",HitComponent=none) + PercAbsorbedDamage=0.0000000 + DeviceModeReference=none + Projectile=none + bDirectHit=false + nFiringInstance=0 + nShotsHit=0 + } +}; + +struct native transient AnimSlotInfo +{ + var init name SlotName; + var init array ChannelWeights; + + structdefaultproperties + { + SlotName="None" + ChannelWeights=none + } +}; + +struct native transient AnimSlotDesc +{ + var init name SlotName; + var init int NumChannels; + + structdefaultproperties + { + SlotName="None" + NumChannels=0 + } +}; + +struct RigidBodyState +{ + var Vector Position; + var Quat Quaternion; + var Vector LinVel; + var Vector AngVel; + var byte bNewData; + + structdefaultproperties + { + Position=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Quaternion=(X=0.0000000,Y=0.0000000,Z=0.0000000,W=0.0000000) + LinVel=(X=0.0000000,Y=0.0000000,Z=0.0000000) + AngVel=(X=0.0000000,Y=0.0000000,Z=0.0000000) + bNewData=0 + } +}; + +struct RigidBodyContactInfo +{ + var Vector ContactPosition; + var Vector ContactNormal; + var float ContactPenetration; + var Vector ContactVelocity[2]; + var PhysicalMaterial PhysMaterial[2]; + + structdefaultproperties + { + ContactPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000) + ContactNormal=(X=0.0000000,Y=0.0000000,Z=0.0000000) + ContactPenetration=0.0000000 + ContactVelocity[0]=(X=0.0000000,Y=0.0000000,Z=0.0000000) + ContactVelocity[1]=(X=0.0000000,Y=0.0000000,Z=0.0000000) + PhysMaterial[0]=none + PhysMaterial[1]=none + } +}; + +struct CollisionImpactData +{ + var array ContactInfos; + var Vector TotalNormalForceVector; + var Vector TotalFrictionForceVector; + + structdefaultproperties + { + ContactInfos=none + TotalNormalForceVector=(X=0.0000000,Y=0.0000000,Z=0.0000000) + TotalFrictionForceVector=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct native PhysEffectInfo +{ + var() float Threshold; + var() float ReFireDelay; + var() ParticleSystem Effect; + var() SoundCue Sound; + + structdefaultproperties + { + Threshold=0.0000000 + ReFireDelay=0.0000000 + Effect=none + Sound=none + } +}; + +struct native atomicwhencooked immutablewhencooked ActorReference +{ + var() Actor Actor; + var() const editconst Guid Guid; + + structdefaultproperties + { + Actor=none + Guid=(A=0,B=0,C=0,D=0) + } +}; + +struct native atomicwhencooked immutablewhencooked NavReference +{ + var() NavigationPoint Nav; + var() const editconst Guid Guid; + + structdefaultproperties + { + Nav=none + Guid=(A=0,B=0,C=0,D=0) + } +}; + +struct native BasedPosition +{ + var() Actor Base; + var() Vector Position; + var Vector CachedBaseLocation; + var Rotator CachedBaseRotation; + var Vector CachedTransPosition; + + structdefaultproperties + { + Base=none + Position=(X=0.0000000,Y=0.0000000,Z=0.0000000) + CachedBaseLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + CachedBaseRotation=(Pitch=0,Yaw=0,Roll=0) + CachedTransPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +var private const export editinline array Components; +var private const export editinline transient array AllComponents; +var(Movement) const Vector Location; +var(Movement) const Rotator Rotation; +var(Display) repnotify interp const float DrawScale; +var(Display) interp const Vector DrawScale3D; +var(Display) const Vector PrePivot; +var private native const RenderCommandFence DetachFence; +var float CustomTimeDilation; +var(Movement) const Actor.EPhysics Physics; +var Actor.ENetRole RemoteRole; +var Actor.ENetRole Role; +var(Collision) const transient Actor.ECollisionType CollisionType; +var transient Actor.ECollisionType ReplicatedCollisionType; +var const Object.ETickingGroup TickGroup; +var const Actor Owner; +var(Attachment) const Actor Base; +var const array Timers; +var const bool bStatic; +var(Display) const bool bHidden; +var const bool bNoDelete; +var const bool bDeleteMe; +var const transient bool bTicked; +var const bool bOnlyOwnerSee; +var const bool bTickIsDisabled; +var const bool bServerTickIsDisabled; +var bool bWorldGeometry; +var bool bIgnoreRigidBodyPawns; +var bool bOrientOnSlope; +var const bool bIgnoreEncroachers; +var bool bPushedByEncroachers; +var bool bDestroyedByInterpActor; +var const bool bRouteBeginPlayEvenIfStatic; +var const bool bIsMoving; +var bool bAlwaysEncroachCheck; +var bool bHasAlternateTargetLocation; +var(Collision) bool bCanStepUpOn; +var const bool bNetTemporary; +var const bool bOnlyRelevantToOwner; +var transient bool bNetDirty; +var bool bAlwaysRelevant; +var bool bReplicateInstigator; +var bool bReplicateMovement; +var bool bSkipActorPropertyReplication; +var bool bUpdateSimulatedPosition; +var bool bTearOff; +var bool bOnlyDirtyReplication; +var const bool bAlwaysInformOfTimelapse; +var transient bool bNetTimelapse; +var transient bool bNetTimelapseInit; +var transient bool bNetTimelapsePost; +var(Physics) bool bAllowFluidSurfaceInteraction; +var transient bool bDemoRecording; +var bool bDemoOwner; +var bool bForceDemoRelevant; +var const bool bNetInitialRotation; +var bool bReplicateRigidBodyLocation; +var bool bKillDuringLevelTransition; +var const bool bExchangedRoles; +var(Advanced) bool bConsiderAllStaticMeshComponentsForStreaming; +var(Debug) bool bDebug; +var bool bPostRenderIfNotVisible; +var bool s_bThrottleNetRelevancy; +var const bool m_bHasThreadedWork; +var transient bool bForceNetUpdate; +var const transient bool bPendingNetUpdate; +var(Attachment) const bool bHardAttach; +var(Attachment) bool bIgnoreBaseRotation; +var(Attachment) bool bShadowParented; +var(Attachment) bool bSkipAttachedMoves; +var bool bCanBeAdheredTo; +var bool bCanBeFrictionedTo; +var bool bHurtEntry; +var bool bGameRelevant; +var const bool bMovable; +var bool bDestroyInPainVolume; +var bool bCanBeDamaged; +var bool bShouldBaseAtStartup; +var bool bPendingDelete; +var bool bCanTeleport; +var const bool bAlwaysTick; +var(Navigation) bool bBlocksNavigation; +var(Collision) const transient bool BlockRigidBody; +var bool bCollideWhenPlacing; +var const bool bCollideActors; +var bool bCollideWorld; +var(Collision) bool bCollideComplex; +var bool bBlockActors; +var bool bProjTarget; +var bool bBlocksTeleport; +var bool bMoveIgnoresDestruction; +var bool bProjectileMoveSingleBlocking; +var(Collision) bool bNoEncroachCheck; +var bool bCollideAsEncroacher; +var(Collision) bool bPhysRigidBodyOutOfWorldCheck; +var const transient bool bComponentOutsideWorld; +var bool bForceOctreeSNFilter; +var bool bForceOctreeMNFilter; +var const transient bool bRigidBodyWasAwake; +var bool bCallRigidBodyWakeEvents; +var(Collision) editoronly const bool bWhitelistCollisionWarning; +var bool bBounce; +var const bool bJustTeleported; +var(Relevancy) bool bSupportNetIrrelevant; +var(Relevancy) bool bClientSideOnly; +var(Mobile) bool bEnableMobileTouch; +var const bool bNetInitial; +var const bool bNetOwner; +var const bool bNetRelevant; +var const bool bNetAcked; +var const bool bHiddenEd; +var const bool bEditable; +var const deprecated bool bHiddenEdGroup; +var const bool bHiddenEdLayer; +var const bool bHiddenEdCustom; +var editoronly transient bool bHiddenEdTemporary; +var editoronly transient bool bHiddenEdLevel; +var editoronly transient bool bHiddenEdScene; +var(Advanced) bool bEdShouldSnap; +var const transient bool bTempEditor; +var(Collision) bool bPathColliding; +var transient bool bPathTemp; +var bool bScriptInitialized; +var(Advanced) bool bLockLocation; +var const bool bForceAllowKismetModification; +var bool bReplicateBotRankId; +var bool bNoTick; +var(Debug) bool bDebugEffectIsRelevant; +var bool bUpdateHavokPos; +var bool bHavokPosOnlyUseCollisionComponent; +var bool c_bJustStartedTimelapsePlayback; +var bool c_bJustEndedTimelapsePlayback; +var(Collision) bool m_bCanBaseOn; +var(Collision) bool m_bSupportsRelativeLocationBase; +var bool m_bComplexOccluder; +var const bool m_bCanPlayFirstPersonAkEvent; +var const transient int SkelMeshCompTickTag; +var const transient int NetTag; +var const transient int IndexInTickList; +var const transient float LastSlowRelevancyCheckTime; +var const float NetUpdateTime; +var float NetUpdateFrequency; +var float NetPriority; +var const transient float LastNetUpdateTime; +var float TimeSinceLastTick; +var Pawn Instigator; +var const transient WorldInfo WorldInfo; +var float LifeSpan; +var const float CreationTime; +var transient float LastRenderTime; +var(Object) name Tag; +var name InitialState; +var(Object) name Layer; +var deprecated name Group; +var transient QWord HiddenEditorViews; +var const transient array Touching; +var const transient array Children; +var const float LatentFloat; +var const AnimNodeSequence LatentSeqNode; +var const transient PhysicsVolume PhysicsVolume; +var Vector Velocity; +var Vector Acceleration; +var const transient Vector AngularVelocity; +var(Attachment) export editinline SkeletalMeshComponent BaseSkelComponent; +var(Attachment) name BaseBoneName; +var const array Attached; +var const Vector RelativeLocation; +var const Rotator RelativeRotation; +var(Collision) editconst export editinline PrimitiveComponent CollisionComponent; +var native int OverlapTag; +var(Movement) Rotator RotationRate; +var Actor PendingTouch; +var name DatabaseFieldName; +var Class MessageClass; +var int BotRankId; +var const array< Class > SupportedEvents; +var const array GeneratedEvents; +var array LatentActions; +var int LocationPackedKey; +var Vector LocationPrev; +var float m_fLastOcclusionCheckTime; +var() float m_fOcclusionCheckInterval; +var() float m_fOcclusionNormalization; +var float m_fLastOcclusionCheckLocation; +var() float m_fOcclusionCheckDist; +var float m_fOcclusionAmount; +var float m_fMaxDistForOcclusionPathfinding; +var float m_fMaxDistForOcclusionCheck; + +replication +{ + // Pos:0x000 + if(((!bSkipActorPropertyReplication || bNetInitial) && bReplicateMovement) && ((int(RemoteRole) == int(ROLE_AutonomousProxy)) && bNetInitial) || ((int(RemoteRole) == int(ROLE_SimulatedProxy)) && bNetInitial || bUpdateSimulatedPosition) && (Base == none) || Base.bWorldGeometry) + Location, Rotation; + + // Pos:0x0B8 + if(((!bSkipActorPropertyReplication || bNetInitial) && bReplicateMovement) && int(RemoteRole) == int(ROLE_SimulatedProxy)) + Base; + + // Pos:0x0F8 + if((((((!bSkipActorPropertyReplication || bNetInitial) && bReplicateMovement) && bNetInitial || bUpdateSimulatedPosition) && int(RemoteRole) == int(ROLE_SimulatedProxy)) && Base != none) && !Base.bWorldGeometry) + RelativeLocation, RelativeRotation; + + // Pos:0x18D + if(((!bSkipActorPropertyReplication || bNetInitial) && bReplicateMovement) && (int(RemoteRole) == int(ROLE_SimulatedProxy)) && bNetInitial || bUpdateSimulatedPosition) + Physics, Velocity; + + // Pos:0x1EB + if((!bSkipActorPropertyReplication || bNetInitial) && int(Role) == int(ROLE_Authority)) + bHardAttach; + + // Pos:0x21C + if(((!bSkipActorPropertyReplication || bNetInitial) && int(Role) == int(ROLE_Authority)) && bNetDirty) + bHidden; + + // Pos:0x25C + if((((!bSkipActorPropertyReplication || bNetInitial) && int(Role) == int(ROLE_Authority)) && bNetDirty) && bCollideActors || bCollideWorld) + bBlockActors, bProjTarget; + + // Pos:0x2BA + if((!bSkipActorPropertyReplication || bNetInitial) && int(Role) == int(ROLE_Authority)) + RemoteRole, Role, + bNetOwner, bTearOff; + + // Pos:0x2EB + if((((!bSkipActorPropertyReplication || bNetInitial) && int(Role) == int(ROLE_Authority)) && bNetDirty) && bReplicateInstigator) + Instigator; + + // Pos:0x33A + if(((!bSkipActorPropertyReplication || bNetInitial) && int(Role) == int(ROLE_Authority)) && bNetDirty) + DrawScale, ReplicatedCollisionType, + bCollideActors, bCollideWorld; + + // Pos:0x37A + if(((bNetOwner && !bSkipActorPropertyReplication || bNetInitial) && int(Role) == int(ROLE_Authority)) && bNetDirty) + Owner; + + // Pos:0x3C9 + if(((bReplicateBotRankId && !bSkipActorPropertyReplication || bNetInitial) && int(Role) == int(ROLE_Authority)) && bNetDirty) + BotRankId; + + // Pos:0x418 + if(((!bSkipActorPropertyReplication || bNetInitial) && int(Role) == int(ROLE_Authority)) && bReplicateMovement) + bNetRelevant; +} + +// Export UActor::execForceUpdateComponents(FFrame&, void* const) +native function ForceUpdateComponents(optional bool bCollisionUpdate = false, optional bool bTransformOnly = true); + +// Export UActor::execConsoleCommand(FFrame&, void* const) +native function string ConsoleCommand(string Command, optional bool bWriteToLog = true); + +// Export UActor::execSleep(FFrame&, void* const) +native(256) final latent function Sleep(float Seconds); + +// Export UActor::execFinishAnim(FFrame&, void* const) +native(261) final latent function FinishAnim(AnimNodeSequence SeqNode, optional bool bFinishOnBlendOut); + +// Export UActor::execSetCollision(FFrame&, void* const) +native(262) final function SetCollision(optional bool bNewColActors, optional bool bNewBlockActors, optional bool bNewIgnoreEncroachers); + +// Export UActor::execSetCollisionSize(FFrame&, void* const) +native(283) final function SetCollisionSize(float NewRadius, float NewHeight); + +// Export UActor::execSetCollisionType(FFrame&, void* const) +native final function SetCollisionType(Actor.ECollisionType NewCollisionType); + +// Export UActor::execSetDrawScale(FFrame&, void* const) +native final function SetDrawScale(float NewScale); + +// Export UActor::execSetDrawScale3D(FFrame&, void* const) +native final function SetDrawScale3D(Vector NewScale3D); + +// Export UActor::execMove(FFrame&, void* const) +native(266) final function bool Move(Vector Delta); + +// Export UActor::execSetLocation(FFrame&, void* const) +native(267) final function bool SetLocation(Vector NewLocation); + +// Export UActor::execSetRotation(FFrame&, void* const) +native(299) final function bool SetRotation(Rotator NewRotation); + +// Export UActor::execMovingWhichWay(FFrame&, void* const) +native function Actor.EMoveDir MovingWhichWay(out float Amount); + +// Export UActor::execSetZone(FFrame&, void* const) +native final function SetZone(bool bForceRefresh); + +// Export UActor::execSetRelativeRotation(FFrame&, void* const) +native final function bool SetRelativeRotation(Rotator NewRotation); + +// Export UActor::execSetRelativeLocation(FFrame&, void* const) +native final function bool SetRelativeLocation(Vector NewLocation); + +// Export UActor::execSetHardAttach(FFrame&, void* const) +native final function SetHardAttach(optional bool bNewHardAttach); + +// Export UActor::execSetShadowParentOnAllAttachedComponents(FFrame&, void* const) +native simulated function SetShadowParentOnAllAttachedComponents(PrimitiveComponent MyPrimComp, LightEnvironmentComponent MyLightEnv); + +// Export UActor::execfixedTurn(FFrame&, void* const) +native final function int fixedTurn(int Current, int Desired, int DeltaRate); + +// Export UActor::execMoveSmooth(FFrame&, void* const) +native(3969) final function bool MoveSmooth(Vector Delta); + +// Export UActor::execAutonomousPhysics(FFrame&, void* const) +native(3971) final function AutonomousPhysics(float DeltaSeconds); + +// Export UActor::execGetTerminalVelocity(FFrame&, void* const) +native function float GetTerminalVelocity(); + +// Export UActor::execSetBase(FFrame&, void* const) +native(298) final function SetBase(Actor NewBase, optional Vector NewFloor, optional SkeletalMeshComponent SkelComp, optional name AttachName); + +// Export UActor::execSetOwner(FFrame&, void* const) +native(272) final function SetOwner(Actor NewOwner); + +// Export UActor::execFindBase(FFrame&, void* const) +native function FindBase(); + +// Export UActor::execSearchForBaseBelow(FFrame&, void* const) +native function SearchForBaseBelow(float HeightBelow, out Actor NewBase, out Vector HitNormal); + +// Export UActor::execIsBasedOn(FFrame&, void* const) +native final function bool IsBasedOn(Actor TestActor); + +// Export UActor::execGetBaseMost(FFrame&, void* const) +native function Actor GetBaseMost(); + +// Export UActor::execIsOwnedBy(FFrame&, void* const) +native final function bool IsOwnedBy(Actor TestActor); + +// Export UActor::execGetAggregateBaseVelocity(FFrame&, void* const) +native final function Vector GetAggregateBaseVelocity(optional Actor TestBase); + +simulated event ReplicatedEvent(name VarName) +{ + //return; +} + +// Export UActor::execSetForcedInitialReplicatedProperty(FFrame&, void* const) +native final function SetForcedInitialReplicatedProperty(Property PropToReplicate, bool bAdd); + +// Export UActor::execVect2BP(FFrame&, void* const) +native static final function Vect2BP(out BasedPosition BP, Vector pos, optional Actor ForcedBase); + +// Export UActor::execBP2Vect(FFrame&, void* const) +native static final function Vector BP2Vect(BasedPosition BP); + +// Export UActor::execSetBasedPosition(FFrame&, void* const) +native static final function SetBasedPosition(out BasedPosition BP, Vector pos, optional Actor ForcedBase); + +// Export UActor::execGetBasedPosition(FFrame&, void* const) +native static final function Vector GetBasedPosition(BasedPosition BP); + +// Export UActor::execSetBotRankId(FFrame&, void* const) +native final function SetBotRankId(int RankId); + +// Export UActor::execFlushPersistentDebugLines(FFrame&, void* const) +native static final function FlushPersistentDebugLines(); + +// Export UActor::execDrawDebugLine(FFrame&, void* const) +native static final function DrawDebugLine(Vector LineStart, Vector LineEnd, byte R, byte G, byte B, optional bool bPersistentLines); + +// Export UActor::execDrawDebugPoint(FFrame&, void* const) +native static final function DrawDebugPoint(Vector Position, float Size, LinearColor PointColor, optional bool bPersistentLines); + +// Export UActor::execDrawDebugBox(FFrame&, void* const) +native static final function DrawDebugBox(Vector Center, Vector Extent, byte R, byte G, byte B, optional bool bPersistentLines); + +// Export UActor::execDrawDebugStar(FFrame&, void* const) +native static final function DrawDebugStar(Vector Position, float Size, byte R, byte G, byte B, optional bool bPersistentLines); + +// Export UActor::execDrawDebugCoordinateSystem(FFrame&, void* const) +native static final function DrawDebugCoordinateSystem(Vector AxisLoc, Rotator AxisRot, float Scale, optional bool bPersistentLines); + +// Export UActor::execDrawDebugSphere(FFrame&, void* const) +native static final function DrawDebugSphere(Vector Center, float Radius, int Segments, byte R, byte G, byte B, optional bool bPersistentLines); + +// Export UActor::execDrawDebugCylinder(FFrame&, void* const) +native static final function DrawDebugCylinder(Vector Start, Vector End, float Radius, int Segments, byte R, byte G, byte B, optional bool bPersistentLines); + +// Export UActor::execDrawDebugCone(FFrame&, void* const) +native static final function DrawDebugCone(Vector Origin, Vector Direction, float Length, float AngleWidth, float AngleHeight, int NumSides, Color DrawColor, optional bool bPersistentLines); + +// Export UActor::execDrawDebugString(FFrame&, void* const) +native static final function DrawDebugString(Vector TextLocation, coerce string Text, optional Actor TestBaseActor, optional Color TextColor, optional float Duration = -1.0000000); + +// Export UActor::execDrawDebugFrustrum(FFrame&, void* const) +native static final function DrawDebugFrustrum(const out Matrix FrustumToWorld, byte R, byte G, byte B, optional bool bPersistentLines); + +// Export UActor::execFlushDebugStrings(FFrame&, void* const) +native static final exec function FlushDebugStrings(); + +// Export UActor::execChartData(FFrame&, void* const) +native final function ChartData(string DataName, float DataValue); + +// Export UActor::execSetHidden(FFrame&, void* const) +native final function SetHidden(bool bNewHidden); + +// Export UActor::execSetOnlyOwnerSee(FFrame&, void* const) +native final function SetOnlyOwnerSee(bool bNewOnlyOwnerSee); + +// Export UActor::execSetPhysics(FFrame&, void* const) +native(3970) final function SetPhysics(Actor.EPhysics newPhysics); + +// Export UActor::execClock(FFrame&, void* const) +native final function Clock(out float Time); + +// Export UActor::execUnClock(FFrame&, void* const) +native final function UnClock(out float Time); + +// Export UActor::execAttachComponent(FFrame&, void* const) +native final function AttachComponent(ActorComponent NewComponent); + +// Export UActor::execDetachComponent(FFrame&, void* const) +native final function DetachComponent(ActorComponent ExComponent); + +// Export UActor::execReattachComponent(FFrame&, void* const) +native final function ReattachComponent(ActorComponent ComponentToReattach); + +// Export UActor::execSetTickGroup(FFrame&, void* const) +native final function SetTickGroup(Object.ETickingGroup NewTickGroup); + +// Export UActor::execSetTickIsDisabled(FFrame&, void* const) +native final function SetTickIsDisabled(bool bInDisabled); + +event Destroyed() +{ + //return; +} + +event GainedChild(Actor Other) +{ + //return; +} + +event LostChild(Actor Other) +{ + //return; +} + +event Tick(float DeltaTime) +{ + //return; +} + +event Timer() +{ + //return; +} + +event HitWall(Vector HitNormal, Actor Wall, PrimitiveComponent WallComp) +{ + TriggerEventClass(Class'Engine.SeqEvent_HitWall', Wall); + //return; +} + +event Falling() +{ + //return; +} + +event Landed(Vector HitNormal, Actor FloorActor) +{ + //return; +} + +event PhysicsVolumeChange(PhysicsVolume NewVolume) +{ + //return; +} + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + //return; +} + +event PostTouch(Actor Other) +{ + //return; +} + +event UnTouch(Actor Other) +{ + //return; +} + +event Bump(Actor Other, PrimitiveComponent OtherComp, Vector HitNormal) +{ + //return; +} + +singular event BaseChange() +{ + //return; +} + +event Attach(Actor Other) +{ + //return; +} + +event Detach(Actor Other) +{ + //return; +} + +event Actor SpecialHandling(Pawn Other) +{ + //return ReturnValue; +} + +event CollisionChanged() +{ + //return; +} + +event bool EncroachingOn(Actor Other) +{ + //return ReturnValue; +} + +event EncroachedBy(Actor Other) +{ + //return; +} + +event RanInto(Actor Other) +{ + //return; +} + +event OnWakeRBPhysics() +{ + //return; +} + +event OnSleepRBPhysics() +{ + //return; +} + +// Export UActor::execClampRotation(FFrame&, void* const) +native final simulated function bool ClampRotation(out Rotator out_Rot, Rotator rBase, Rotator rUpperLimits, Rotator rLowerLimits); + +simulated event bool OverRotated(out Rotator out_Desired, out Rotator out_Actual) +{ + //return ReturnValue; +} + +function bool UsedBy(Pawn User) +{ + return TriggerEventClass(Class'Engine.SeqEvent_Used', User, -1); + //return ReturnValue; +} + +simulated event FellOutOfWorld(Class dmgType) +{ + SetPhysics(0); + SetHidden(true); + SetCollision(false, false); + Destroy(); + //return; +} + +simulated event OutsideWorldBounds() +{ + Destroy(); + //return; +} + +simulated function VolumeBasedDestroy(PhysicsVolume PV) +{ + Destroy(); + //return; +} + +// Export UActor::execTrace(FFrame&, void* const) +native(277) final function Actor Trace(out Vector HitLocation, out Vector HitNormal, Vector TraceEnd, optional Vector TraceStart, optional bool bTraceActors, optional Vector Extent, optional out TraceHitInfo HitInfo, optional int ExtraTraceFlags); + +// Export UActor::execTraceComponent(FFrame&, void* const) +native final function bool TraceComponent(out Vector HitLocation, out Vector HitNormal, PrimitiveComponent InComponent, Vector TraceEnd, optional Vector TraceStart, optional Vector Extent, optional out TraceHitInfo HitInfo, optional bool bComplexCollision); + +// Export UActor::execPointCheckComponent(FFrame&, void* const) +native final function bool PointCheckComponent(PrimitiveComponent InComponent, Vector PointLocation, Vector PointExtent); + +// Export UActor::execFastTrace(FFrame&, void* const) +native(548) final function bool FastTrace(Vector TraceEnd, optional Vector TraceStart, optional Vector BoxExtent, optional bool bTraceBullet); + +// Export UActor::execTraceAllPhysicsAssetInteractions(FFrame&, void* const) +native final function bool TraceAllPhysicsAssetInteractions(SkeletalMeshComponent SkelMeshComp, Vector EndTrace, Vector StartTrace, out array out_Hits, optional Vector Extent); + +// Export UActor::execFindSpot(FFrame&, void* const) +native final function bool FindSpot(Vector BoxExtent, out Vector SpotLocation); + +// Export UActor::execContainsPoint(FFrame&, void* const) +native final function bool ContainsPoint(Vector Spot); + +// Export UActor::execIsOverlapping(FFrame&, void* const) +native final function bool IsOverlapping(Actor A); + +// Export UActor::execGetComponentsBoundingBox(FFrame&, void* const) +native final function GetComponentsBoundingBox(out Box ActorBox); + +// Export UActor::execGetBoundingCylinder(FFrame&, void* const) +native function GetBoundingCylinder(out float CollisionRadius, out float CollisionHeight); + +// Export UActor::execBoxCircleTest(FFrame&, void* const) +native final function bool BoxCircleTest(Vector CircleCenter, float CircleRadius, Vector BoxCenter, Vector BoxExtent); + +// Export UActor::execIsBlockedBy(FFrame&, void* const) +native final function bool IsBlockedBy(const Actor Other); + +// Export UActor::execSpawn(FFrame&, void* const) +native final function Actor Spawn(Class SpawnClass, optional Actor SpawnOwner, optional name SpawnTag, optional Vector SpawnLocation, optional Rotator SpawnRotation, optional Actor ActorTemplate, optional bool bNoCollisionFail); + +// Export UActor::execDestroy(FFrame&, void* const) +native(279) final function bool Destroy(); + +event TornOff() +{ + //return; +} + +// Export UActor::execSetTimer(FFrame&, void* const) +native(280) final function SetTimer(float InRate, optional bool inbLoop, optional name inTimerFunc = 'Timer', optional Object inObj); + +// Export UActor::execClearTimer(FFrame&, void* const) +native final function ClearTimer(optional name inTimerFunc = 'Timer', optional Object inObj); + +// Export UActor::execClearAllTimers(FFrame&, void* const) +native final function ClearAllTimers(optional Object inObj); + +// Export UActor::execPauseTimer(FFrame&, void* const) +native final function PauseTimer(bool bPause, optional name inTimerFunc = 'Timer', optional Object inObj); + +// Export UActor::execIsTimerActive(FFrame&, void* const) +native final function bool IsTimerActive(optional name inTimerFunc = 'Timer', optional Object inObj); + +// Export UActor::execGetTimerCount(FFrame&, void* const) +native final function float GetTimerCount(optional name inTimerFunc = 'Timer', optional Object inObj); + +// Export UActor::execGetTimerRate(FFrame&, void* const) +native final function float GetTimerRate(optional name TimerFuncName = 'Timer', optional Object inObj); + +// Export UActor::execGetRemainingTimeForTimer(FFrame&, void* const) +native final function float GetRemainingTimeForTimer(optional name TimerFuncName = 'Timer', optional Object inObj); + +// Export UActor::execGetTimerPercent(FFrame&, void* const) +native final function float GetTimerPercent(optional name TimerFuncName = 'Timer', optional Object inObj); + +// Export UActor::execModifyTimerTimeDilation(FFrame&, void* const) +native final function ModifyTimerTimeDilation(const name TimerName, const float InTimerTimeDilation, optional Object inObj); + +// Export UActor::execResetTimerTimeDilation(FFrame&, void* const) +native final function ResetTimerTimeDilation(const name TimerName, optional Object inObj); + +// Export UActor::execCreateAudioComponent(FFrame&, void* const) +native final function AudioComponent CreateAudioComponent(SoundCue InSoundCue, optional bool bPlay, optional bool bStopWhenOwnerDestroyed, optional bool bUseLocation, optional Vector SourceLocation, optional bool bAttachToSelf = true); + +simulated event AudioComponentAttached(AudioComponent AC, optional int DatabaseID = -1, optional int LoopIndex = 0) +{ + //return; +} + +// Export UActor::execPlaySound(FFrame&, void* const) +native final function PlaySound(SoundCue InSoundCue, optional bool bNotReplicated, optional bool bNoRepToOwner, optional bool bStopWhenOwnerDestroyed, optional Vector SoundLocation, optional bool bNoRepToRelevant); + +// Export UActor::execPlayAkEvent(FFrame&, void* const) +native final function PlayAkEvent(AkEvent InSoundCue, optional bool bNotReplicated, optional bool bNoRepToOwner, optional bool bStopWhenOwnerDestroyed, optional Vector SoundLocation, optional bool bNoRepToRelevant); + +// Export UActor::execPlaySoundBase(FFrame&, void* const) +native final function PlaySoundBase(AkBaseSoundObject InSoundCue, optional bool bNotReplicated, optional bool bNoRepToOwner, optional bool bStopWhenOwnerDestroyed, optional Vector SoundLocation, optional bool bNoRepToRelevant); + +// Export UActor::execPostAkEvent(FFrame&, void* const) +native function PostAkEvent(AkEvent InAkEvent); + +// Export UActor::execPostAkEventOnBone(FFrame&, void* const) +native final function PostAkEventOnBone(AkEvent InAkEvent, name BoneName); + +// Export UActor::execSetRTPCValue(FFrame&, void* const) +native final function SetRTPCValue(name InRTPC, float TargetValue); + +// Export UActor::execSetState(FFrame&, void* const) +native final function SetState(name InStateGroup, name InState); + +// Export UActor::execSetSwitch(FFrame&, void* const) +native final function SetSwitch(name InSwitchGroup, name InSwitch); + +// Export UActor::execPostTrigger(FFrame&, void* const) +native final function PostTrigger(name InTrigger); + +// Export UActor::execActivateOcclusion(FFrame&, void* const) +native final function ActivateOcclusion(bool bInActivate); + +// Export UActor::execCheckOcclusion(FFrame&, void* const) +native function float CheckOcclusion(); + +// Export UActor::execMakeNoise(FFrame&, void* const) +native(512) final function MakeNoise(float Loudness, optional name NoiseType); + +// Export UActor::execPlayerCanSeeMe(FFrame&, void* const) +native(532) final function bool PlayerCanSeeMe(optional bool bForceLOSCheck); + +// Export UActor::execSuggestTossVelocity(FFrame&, void* const) +native final function bool SuggestTossVelocity(out Vector TossVelocity, Vector Destination, Vector Start, float TossSpeed, optional float BaseTossZ, optional float DesiredZPct, optional Vector CollisionSize, optional float TerminalVelocity, optional float OverrideGravityZ, optional bool bOnlyTraceUp); + +// Export UActor::execCalculateMinSpeedTrajectory(FFrame&, void* const) +native final function bool CalculateMinSpeedTrajectory(out Vector out_Velocity, Vector End, Vector Start, float MaxTossSpeed, float MinTossSpeed, optional Vector CollisionSize, optional float TerminalVelocity, optional float GravityZ = GetGravityZ(), optional bool bOnlyTraceUp); + +// Export UActor::execGetDestination(FFrame&, void* const) +native final function Vector GetDestination(Controller C); + +function bool PreTeleport(Teleporter InTeleporter) +{ + //return ReturnValue; +} + +function PostTeleport(Teleporter OutTeleporter) +{ + //return; +} + +// Export UActor::execGetURLMap(FFrame&, void* const) +native(547) final function string GetURLMap(); + +// Export UActor::execAllActors(FFrame&, void* const) +native(304) final iterator function AllActors(Class BaseClass, out Actor Actor, optional Class InterfaceClass); + +// Export UActor::execDynamicActors(FFrame&, void* const) +native(313) final iterator function DynamicActors(Class BaseClass, out Actor Actor, optional Class InterfaceClass); + +// Export UActor::execChildActors(FFrame&, void* const) +native(305) final iterator function ChildActors(Class BaseClass, out Actor Actor); + +// Export UActor::execBasedActors(FFrame&, void* const) +native(306) final iterator function BasedActors(Class BaseClass, out Actor Actor); + +// Export UActor::execTouchingActors(FFrame&, void* const) +native(307) final iterator function TouchingActors(Class BaseClass, out Actor Actor); + +// Export UActor::execTraceActors(FFrame&, void* const) +native(309) final iterator function TraceActors(Class BaseClass, out Actor Actor, out Vector HitLoc, out Vector HitNorm, Vector End, optional Vector Start, optional Vector Extent, optional out TraceHitInfo HitInfo, optional int ExtraTraceFlags); + +// Export UActor::execVisibleActors(FFrame&, void* const) +native(311) final iterator function VisibleActors(Class BaseClass, out Actor Actor, optional float Radius, optional Vector Loc); + +// Export UActor::execVisibleCollidingActors(FFrame&, void* const) +native(312) final iterator function VisibleCollidingActors(Class BaseClass, out Actor Actor, float Radius, optional Vector Loc, optional bool bIgnoreHidden, optional Vector Extent, optional bool bTraceActors, optional Class InterfaceClass, optional out TraceHitInfo HitInfo); + +// Export UActor::execCollidingActors(FFrame&, void* const) +native(321) final iterator function CollidingActors(Class BaseClass, out Actor Actor, float Radius, optional Vector Loc, optional bool bUseOverlapCheck, optional Class InterfaceClass, optional out TraceHitInfo HitInfo); + +// Export UActor::execOverlappingActors(FFrame&, void* const) +native final iterator function OverlappingActors(Class BaseClass, out Actor out_Actor, float Radius, optional Vector Loc, optional bool bIgnoreHidden); + +// Export UActor::execComponentList(FFrame&, void* const) +native final iterator function ComponentList(Class BaseClass, out ActorComponent out_Component); + +// Export UActor::execAllOwnedComponents(FFrame&, void* const) +native final iterator function AllOwnedComponents(Class BaseClass, out ActorComponent OutComponent); + +// Export UActor::execLocalPlayerControllers(FFrame&, void* const) +native final iterator function LocalPlayerControllers(Class BaseClass, out PlayerController PC); + +// Export UActor::execGetALocalPlayerController(FFrame&, void* const) +native final function PlayerController GetALocalPlayerController(); + +// Export UActor::execForceNetIrrelevant(FFrame&, void* const) +native function bool ForceNetIrrelevant(); + +// Export UActor::execIsEnemy(FFrame&, void* const) +native final function bool IsEnemy(const Actor pOther); + +// Export UActor::execForceRecalculateMaterial(FFrame&, void* const) +native function ForceRecalculateMaterial(); + +// Export UActor::execRecalculateMaterial(FFrame&, void* const) +native function RecalculateMaterial(bool bIsFriendlyWithLocalPawn, optional bool bForce); + +// Export UActor::execGetTeleportDestination(FFrame&, void* const) +native function bool GetTeleportDestination(out Vector Destination); + +event PreBeginPlay() +{ + // End:0xA4 + if(((!bGameRelevant && !bStatic) && int(WorldInfo.NetMode) != int(NM_Client)) && !WorldInfo.Game.CheckRelevance(self)) + { + // End:0xA1 + if(bNoDelete) + { + ShutDown(); + } + else + { + Destroy(); + } + } + //return; +} + +event BroadcastLocalizedMessage(Class InMessageClass, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject) +{ + WorldInfo.Game.BroadcastLocalized(self, InMessageClass, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject); + //return; +} + +event BroadcastLocalizedTeamMessage(int TeamIndex, Class InMessageClass, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject) +{ + WorldInfo.Game.BroadcastLocalizedTeam(TeamIndex, self, InMessageClass, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject); + //return; +} + +event PostBeginPlay() +{ + //return; +} + +simulated event SetInitialState() +{ + bScriptInitialized = true; + // End:0x34 + if(InitialState != 'None') + { + GotoState(InitialState); + } + else + { + GotoState('Auto'); + } + //return; +} + +simulated event ConstraintBrokenNotify(Actor ConOwner, RB_ConstraintSetup ConSetup, RB_ConstraintInstance ConInstance) +{ + //return; +} + +simulated event NotifySkelControlBeyondLimit(SkelControlLookAt LookAt) +{ + //return; +} + +simulated function bool StopsProjectile(Projectile P) +{ + return bProjTarget || bBlockActors; + //return ReturnValue; +} + +simulated function bool HurtRadius(float BaseDamage, float DamageRadius, Class DamageType, float Momentum, Vector HurtOrigin, optional Actor IgnoredActor, optional Controller InstigatedByController = ((Instigator != none) ? Instigator.Controller : none), optional bool bDoFullDamage) +{ + local Actor Victim; + local bool bCausedDamage; + local TraceHitInfo HitInfo; + local editinline StaticMeshComponent HitComponent; + local KActorFromStatic NewKActor; + + // End:0x45 + if(bHurtEntry) + { + return false; + } + bHurtEntry = true; + bCausedDamage = false; + // End:0x29D + foreach VisibleCollidingActors(Class'Engine.Actor', Victim, DamageRadius, HurtOrigin,,,,, HitInfo) + { + // End:0x16C + if(Victim.bWorldGeometry) + { + HitComponent = StaticMeshComponent(HitInfo.HitComponent); + // End:0x16C + if((HitComponent != none) && HitComponent.CanBecomeDynamic()) + { + NewKActor = Class'Engine.KActorFromStatic'.static.MakeDynamic(HitComponent); + // End:0x16C + if(NewKActor != none) + { + Victim = NewKActor; + } + } + } + // End:0x29C + if(((!Victim.bWorldGeometry && Victim != self) && Victim != IgnoredActor) && Victim.bCanBeDamaged || Victim.bProjTarget) + { + Victim.TakeRadiusDamage(InstigatedByController, BaseDamage, DamageRadius, DamageType, Momentum, HurtOrigin, bDoFullDamage, self); + bCausedDamage = bCausedDamage || Victim.bProjTarget; + } + } + bHurtEntry = false; + return bCausedDamage; + //return ReturnValue; +} + +event KilledBy(Pawn EventInstigator) +{ + //return; +} + +event TakeDamage(int DamageAmount, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + local int Idx; + local SeqEvent_TakeDamage dmgEvent; + + Idx = 0; + J0x0D: + + // End:0xA3 [Loop If] + if(Idx < GeneratedEvents.Length) + { + dmgEvent = SeqEvent_TakeDamage(GeneratedEvents[Idx]); + // End:0x95 + if(dmgEvent != none) + { + dmgEvent.HandleDamage(self, EventInstigator, DamageType, DamageAmount); + } + Idx++; + // [Loop Continue] + goto J0x0D; + } + //return; +} + +event bool HealDamage(int Amount, Controller Healer, Class DamageType) +{ + //return ReturnValue; +} + +simulated function TakeRadiusDamage(Controller InstigatedBy, float BaseDamage, float DamageRadius, Class DamageType, float Momentum, Vector HurtOrigin, bool bFullDamage, Actor DamageCauser, optional float DamageFalloffExponent = 1.0000000) +{ + local float ColRadius, ColHeight, DamageScale, Dist, ScaledDamage; + + local Vector Dir; + + GetBoundingCylinder(ColRadius, ColHeight); + Dir = Location - HurtOrigin; + Dist = VSize(Dir); + Dir = Normal(Dir); + // End:0x8C + if(bFullDamage) + { + DamageScale = 1.0000000; + } + else + { + Dist = FMax(Dist - ColRadius, 0.0000000); + DamageScale = FClamp(1.0000000 - (Dist / DamageRadius), 0.0000000, 1.0000000); + DamageScale = DamageScale ** DamageFalloffExponent; + } + // End:0x1B2 + if(DamageScale > 0.0000000) + { + ScaledDamage = DamageScale * BaseDamage; + TakeDamage(int(ScaledDamage), InstigatedBy, Location - ((0.5000000 * (ColHeight + ColRadius)) * Dir), (DamageScale * Momentum) * Dir, DamageType,, DamageCauser); + } + //return; +} + +final simulated function CheckHitInfo(out TraceHitInfo HitInfo, PrimitiveComponent FallBackComponent, Vector Dir, out Vector out_HitLocation) +{ + local Vector out_NewHitLocation, out_HitNormal, TraceEnd, TraceStart; + local TraceHitInfo newHitInfo; + + // End:0x59 + if((SkeletalMeshComponent(HitInfo.HitComponent) != none) && HitInfo.BoneName != 'None') + { + return; + } + // End:0xE8 + if((HitInfo.HitComponent == none) || (SkeletalMeshComponent(HitInfo.HitComponent) == none) && SkeletalMeshComponent(FallBackComponent) != none) + { + HitInfo.HitComponent = FallBackComponent; + } + // End:0x2BA + if((SkeletalMeshComponent(HitInfo.HitComponent) != none) && HitInfo.BoneName == 'None') + { + // End:0x163 + if(IsZero(Dir)) + { + Dir = Vector(Rotation); + } + // End:0x185 + if(IsZero(out_HitLocation)) + { + out_HitLocation = Location; + } + TraceStart = out_HitLocation - (float(128) * Normal(Dir)); + TraceEnd = out_HitLocation + (float(128) * Normal(Dir)); + // End:0x2BA + if(TraceComponent(out_NewHitLocation, out_HitNormal, HitInfo.HitComponent, TraceEnd, TraceStart, vect(0.0000000, 0.0000000, 0.0000000), newHitInfo)) + { + HitInfo.BoneName = newHitInfo.BoneName; + HitInfo.PhysMaterial = newHitInfo.PhysMaterial; + out_HitLocation = out_NewHitLocation; + } + } + //return; +} + +// Export UActor::execGetGravityZ(FFrame&, void* const) +native function float GetGravityZ(); + +event DebugFreezeGame(optional Actor ActorToLookAt) +{ + //return; +} + +function bool CheckForErrors() +{ + //return ReturnValue; +} + +event BecomeViewTarget(PlayerController PC) +{ + //return; +} + +event EndViewTarget(PlayerController PC) +{ + //return; +} + +simulated function bool CalcCamera(float fDeltaTime, out Vector out_CamLoc, out Rotator out_CamRot, out float out_FOV) +{ + local Vector HitNormal; + local float Radius, Height; + + GetBoundingCylinder(Radius, Height); + // End:0x9F + if(Trace(out_CamLoc, HitNormal, Location - ((Vector(out_CamRot) * Radius) * float(20)), Location, false) == none) + { + out_CamLoc = Location - ((Vector(out_CamRot) * Radius) * float(20)); + } + else + { + out_CamLoc = Location + (Height * Vector(Rotation)); + } + return false; + //return ReturnValue; +} + +simulated function string GetItemName(string FullName) +{ + local int pos; + + pos = InStr(FullName, "."); + J0x1B: + + // End:0x7A [Loop If] + if(pos != -1) + { + FullName = Right(FullName, (Len(FullName) - pos) - 1); + pos = InStr(FullName, "."); + // [Loop Continue] + goto J0x1B; + } + return FullName; + //return ReturnValue; +} + +simulated function string GetHumanReadableName() +{ + return GetItemName(string(Class)); + //return ReturnValue; +} + +static function ReplaceText(out string Text, string Replace, string With) +{ + local int I; + local string Input; + + Input = Text; + Text = ""; + I = InStr(Input, Replace); + J0x40: + + // End:0xD7 [Loop If] + if(I != -1) + { + Text = (Text $ Left(Input, I)) $ With; + Input = Mid(Input, I + Len(Replace)); + I = InStr(Input, Replace); + // [Loop Continue] + goto J0x40; + } + Text = Text $ Input; + //return; +} + +static function string GetLocalString(optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2) +{ + return ""; + //return ReturnValue; +} + +function MatchStarting() +{ + //return; +} + +function string GetDebugName() +{ + return GetItemName(string(self)); + //return ReturnValue; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + local string T; + local Actor A; + local float MyRadius, MyHeight; + local Canvas Canvas; + + Canvas = HUD.Canvas; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.SetDrawColor(255, 0, 0); + T = GetDebugName(); + // End:0xD0 + if(bDeleteMe) + { + T = T $ " DELETED (bDeleteMe == true)"; + } + // End:0x14F + if(T != "") + { + Canvas.DrawText(T, false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + Canvas.SetDrawColor(255, 255, 255); + // End:0x2CC + if(HUD.ShouldDisplayDebug('net')) + { + // End:0x2CC + if(int(WorldInfo.NetMode) != int(NM_Standalone)) + { + T = (((("ROLE:" @ string(Role)) @ "RemoteRole:") @ string(RemoteRole)) @ "NetMode:") @ string(WorldInfo.NetMode); + // End:0x25D + if(bTearOff) + { + T = T @ "Tear Off"; + } + Canvas.DrawText(T, false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + } + Canvas.DrawText((("Location:" @ string(Location)) @ "Rotation:") @ string(Rotation), false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + // End:0x6DD + if(HUD.ShouldDisplayDebug('Physics')) + { + T = (((((("Physics" @ (GetPhysicsName())) @ "in physicsvolume") @ (GetItemName(string(PhysicsVolume)))) @ "on base") @ (GetItemName(string(Base)))) @ "gravity") @ string(GetGravityZ()); + // End:0x446 + if(bBounce) + { + T = T $ " - will bounce"; + } + Canvas.DrawText(T, false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText((((((((("bHardAttach:" @ string(bHardAttach)) @ "RelativeLoc:") @ string(RelativeLocation)) @ "RelativeRot:") @ string(RelativeRotation)) @ "SkelComp:") @ string(BaseSkelComponent)) @ "Bone:") @ string(BaseBoneName), false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText((((("Velocity:" @ string(Velocity)) @ "Speed:") @ string(VSize(Velocity))) @ "Speed2D:") @ string(VSize2D(Velocity)), false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText("Acceleration:" @ string(Acceleration), false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + // End:0xA3F + if(HUD.ShouldDisplayDebug('Collision')) + { + Canvas.DrawColor.B = 0; + GetBoundingCylinder(MyRadius, MyHeight); + Canvas.DrawText((("Collision Radius:" @ string(MyRadius)) @ "Height:") @ string(MyHeight)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText((((("Collides with Actors:" @ string(bCollideActors)) @ " world:") @ string(bCollideWorld)) @ "proj. target:") @ string(bProjTarget)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText("Blocks Actors:" @ string(bBlockActors)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + T = "Touching "; + // End:0x99A + foreach TouchingActors(Class'Engine.Actor', A) + { + T = (T $ (GetItemName(string(A)))) $ " "; + } + // End:0x9D0 + if(T == "Touching ") + { + T = "Touching nothing"; + } + Canvas.DrawText(T, false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + Canvas.DrawColor.B = 255; + Canvas.DrawText(" STATE:" @ string(GetStateName()), false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText(((" Instigator:" @ (GetItemName(string(Instigator)))) @ "Owner:") @ (GetItemName(string(Owner)))); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + //return; +} + +simulated function string GetPhysicsName() +{ + switch(Physics) + { + // End:0x22 + case 0: + return "None"; + // End:0x12E + break; + // End:0x34 + case 1: + return "Walking"; + // End:0x12E + break; + // End:0x46 + case 2: + return "Falling"; + // End:0x12E + break; + // End:0x59 + case 3: + return "Swimming"; + // End:0x12E + break; + // End:0x6A + case 4: + return "Flying"; + // End:0x12E + break; + // End:0x7D + case 5: + return "Rotating"; + // End:0x12E + break; + // End:0x92 + case 6: + return "Projectile"; + // End:0x12E + break; + // End:0xAA + case 7: + return "Interpolating"; + // End:0x12E + break; + // End:0xBB + case 8: + return "Spider"; + // End:0x12E + break; + // End:0xCC + case 9: + return "Ladder"; + // End:0x12E + break; + // End:0xE0 + case 10: + return "RigidBody"; + // End:0x12E + break; + // End:0xF3 + case 15: + return "Tweening"; + // End:0x12E + break; + // End:0x106 + case 16: + return "Charging"; + // End:0x12E + break; + // End:0x11A + case 13: + return "Suspended"; + // End:0x12E + break; + // End:0x12B + case 14: + return "Custom"; + // End:0x12E + break; + // End:0xFFFF + default: + break; + } + return "Unknown"; + //return ReturnValue; +} + +simulated event ModifyHearSoundComponent(AudioComponent AC) +{ + //return; +} + +simulated event AudioComponent GetFaceFXAudioComponent() +{ + return none; + //return ReturnValue; +} + +event Reset() +{ + //return; +} + +function bool IsInPain() +{ + local PhysicsVolume V; + + // End:0x66 + foreach TouchingActors(Class'Engine.PhysicsVolume', V) + { + // End:0x65 + if(V.bPainCausing && V.DamagePerSec > float(0)) + { + return true; + } + } + return false; + //return ReturnValue; +} + +function PlayTeleportEffect(bool bOut, bool bSound) +{ + //return; +} + +simulated function bool CanSplash() +{ + return false; + //return ReturnValue; +} + +simulated function ApplyFluidSurfaceImpact(FluidSurfaceActor Fluid, Vector HitLocation) +{ + local float Radius, Height, AdjustedVelocity; + + // End:0xE4 + if(bAllowFluidSurfaceInteraction) + { + AdjustedVelocity = 0.0100000 * Abs(Velocity.Z); + GetBoundingCylinder(Radius, Height); + Fluid.FluidComponent.ApplyForce(HitLocation, AdjustedVelocity * Fluid.FluidComponent.ForceImpact, Radius * 0.3000000, true); + } + //return; +} + +simulated function bool EffectIsRelevant(Vector SpawnLocation, bool bForceDedicated, optional float VisibleCullDistance = 5000.0000000, optional float HiddenCullDistance = 350.0000000) +{ + // End:0x5C + if(SpawnLocation == Location) + { + return ActorEffectIsRelevant(Instigator, bForceDedicated, VisibleCullDistance, HiddenCullDistance); + } + else + { + return ImpactEffectIsRelevant(Instigator, SpawnLocation, bForceDedicated, VisibleCullDistance, HiddenCullDistance); + } + //return ReturnValue; +} + +simulated function bool ActorEffectIsRelevant(Pawn EffectInstigator, bool bForceDedicated, optional float VisibleCullDistance = 5000.0000000, optional float HiddenCullDistance = 350.0000000) +{ + local PlayerController P; + local float DistSq; + local Vector CameraLoc; + local Rotator CameraRot; + + // End:0x98 + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + // End:0x8D + if(bDebugEffectIsRelevant && bForceDedicated) + { + DebugMessagePlayer("EffectIsRelevant FAILED - dedicated server"); + } + return bForceDedicated; + } + // End:0x10D + if((bForceDedicated && int(WorldInfo.NetMode) == int(NM_ListenServer)) && WorldInfo.Game.NumPlayers > 1) + { + return true; + } + // End:0x167 + if(((EffectInstigator != none) && EffectInstigator.IsHumanControlled()) && EffectInstigator.IsLocallyControlled()) + { + return true; + } + DistSq = 10000000000.0000000; + // End:0x23C + foreach LocalPlayerControllers(Class'Engine.PlayerController', P) + { + // End:0x1BD + if(P.GetViewTarget() == self) + { + return true; + } + P.GetPlayerViewPoint(CameraLoc, CameraRot); + DistSq = FMin(DistSq, VSizeSq(Location - CameraLoc) * Square(P.LODDistanceFactor)); + } + // End:0x2B0 + if(DistSq > (VisibleCullDistance * VisibleCullDistance)) + { + // End:0x2AB + if(bDebugEffectIsRelevant && true) + { + DebugMessagePlayer("EffectIsRelevant FAILED - VisibleCullDistance"); + } + return false; + } + else + { + // End:0x2D4 + if(DistSq < (HiddenCullDistance * HiddenCullDistance)) + { + return true; + } + } + return (WorldInfo.TimeSeconds - LastRenderTime) < 0.3000000; + //return ReturnValue; +} + +simulated function bool ImpactEffectIsRelevant(Pawn EffectInstigator, Vector SpawnLocation, bool bForceDedicated, optional float VisibleCullDistance = 5000.0000000, optional float HiddenCullDistance = 350.0000000, optional bool bSkipLOSCheck) +{ + local PlayerController P; + local float DistSq, InViewThreshold; + local bool bIsInViewFrustrum; + local Vector CameraLoc; + local Rotator CameraRot; + + // End:0x99 + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + // End:0x8E + if(bDebugEffectIsRelevant && bForceDedicated) + { + DebugMessagePlayer("EffectIsRelevant FAILED - dedicated server"); + } + return bForceDedicated; + } + // End:0x10E + if((bForceDedicated && int(WorldInfo.NetMode) == int(NM_ListenServer)) && WorldInfo.Game.NumPlayers > 1) + { + return true; + } + // End:0x168 + if(((EffectInstigator != none) && EffectInstigator.IsHumanControlled()) && EffectInstigator.IsLocallyControlled()) + { + return true; + } + DistSq = 10000000000.0000000; + // End:0x215 + foreach LocalPlayerControllers(Class'Engine.PlayerController', P) + { + P.GetPlayerViewPoint(CameraLoc, CameraRot); + DistSq = FMin(DistSq, VSizeSq(SpawnLocation - CameraLoc) * Square(P.LODDistanceFactor)); + } + // End:0x289 + if(DistSq > (VisibleCullDistance * VisibleCullDistance)) + { + // End:0x284 + if(bDebugEffectIsRelevant && true) + { + DebugMessagePlayer("EffectIsRelevant FAILED - VisibleCullDistance"); + } + return false; + } + else + { + // End:0x2AD + if(DistSq < (HiddenCullDistance * HiddenCullDistance)) + { + return true; + } + } + bIsInViewFrustrum = false; + // End:0x3A5 + foreach LocalPlayerControllers(Class'Engine.PlayerController', P) + { + P.GetPlayerViewPoint(CameraLoc, CameraRot); + InViewThreshold = Cos(P.GetFOVAngle()) - 0.1000000; + // End:0x3A4 + if((Normal(SpawnLocation - CameraLoc) Dot Vector(CameraRot)) > InViewThreshold) + { + // End:0x3A4 + if(bSkipLOSCheck || FastTrace(SpawnLocation, CameraLoc)) + { + bIsInViewFrustrum = true; + // End:0x3A5 + break; + } + } + } + // End:0x3FD + if(bDebugEffectIsRelevant && bIsInViewFrustrum) + { + DebugMessagePlayer("EffectIsRelevant FAILED - Outside View Frustrum"); + } + return bIsInViewFrustrum; + //return ReturnValue; +} + +final event DebugMessagePlayer(coerce string msg) +{ + //return; +} + +simulated function bool TriggerEventClass(Class InEventClass, Actor InInstigator, optional int ActivateIndex = -1, optional bool bTest, optional out array ActivatedEvents) +{ + local array ActivateIndices; + + // End:0x2F + if(ActivateIndex >= 0) + { + ActivateIndices[0] = ActivateIndex; + } + return ActivateEventClass(InEventClass, InInstigator, GeneratedEvents, ActivateIndices, bTest, ActivatedEvents); + //return ReturnValue; +} + +simulated event ReceivedNewEvent(SequenceEvent Evt) +{ + //return; +} + +simulated function bool TriggerGlobalEventClass(Class InEventClass, Actor InInstigator, optional int ActivateIndex = -1) +{ + local array EventsToActivate; + local array ActivateIndices; + local Sequence GameSeq; + local bool bResult; + local int I; + + // End:0x2D + if(ActivateIndex >= 0) + { + ActivateIndices[0] = ActivateIndex; + } + GameSeq = WorldInfo.GetGameSequence(); + // End:0x11E + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(InEventClass, true, EventsToActivate); + I = 0; + J0xA2: + + // End:0x11E [Loop If] + if(I < EventsToActivate.Length) + { + // End:0x110 + if(SequenceEvent(EventsToActivate[I]).CheckActivate(self, InInstigator,, ActivateIndices)) + { + bResult = true; + } + I++; + // [Loop Continue] + goto J0xA2; + } + } + return bResult; + //return ReturnValue; +} + +final simulated function bool ActivateEventClass(Class InClass, Actor InInstigator, const out array EventList, const optional out array ActivateIndices, optional bool bTest, optional out array ActivatedEvents) +{ + local SequenceEvent Evt; + + ActivatedEvents.Length = 0; + // End:0xAC + foreach EventList(Evt) + { + // End:0xAB + if(ClassIsChildOf(Evt.Class, InClass) && Evt.CheckActivate(self, InInstigator, bTest, ActivateIndices)) + { + ActivatedEvents.AddItem(Evt); + } + } + return ActivatedEvents.Length > 0; + //return ReturnValue; +} + +final simulated function bool FindEventsOfClass(Class EventClass, optional out array out_EventList, optional bool bIncludeDisabled) +{ + local SequenceEvent Evt; + local bool bFoundEvent; + + // End:0x116 + foreach GeneratedEvents(Evt) + { + // End:0x115 + if((((Evt != none) && Evt.bEnabled || bIncludeDisabled) && ClassIsChildOf(Evt.Class, EventClass)) && (Evt.MaxTriggerCount == 0) || Evt.MaxTriggerCount > Evt.TriggerCount) + { + out_EventList.AddItem(Evt); + bFoundEvent = true; + } + } + return bFoundEvent; + //return ReturnValue; +} + +final simulated function ClearLatentAction(Class actionClass, optional bool bAborted, optional SeqAct_Latent exceptionAction) +{ + local int Idx; + + Idx = 0; + J0x0D: + + // End:0x10E [Loop If] + if(Idx < LatentActions.Length) + { + // End:0x58 + if(LatentActions[Idx] == none) + { + LatentActions.Remove(Idx--, 1); + } + else + { + // End:0x100 + if(ClassIsChildOf(LatentActions[Idx].Class, actionClass) && LatentActions[Idx] != exceptionAction) + { + // End:0xE9 + if(bAborted) + { + LatentActions[Idx].AbortFor(self); + } + LatentActions.Remove(Idx--, 1); + } + } + Idx++; + // [Loop Continue] + goto J0x0D; + } + //return; +} + +simulated function OnDestroy(SeqAct_Destroy Action) +{ + local int AttachIdx, IgnoreIdx; + local Actor A; + + // End:0x14A + if(Action.bDestroyBasedActors) + { + AttachIdx = 0; + J0x2D: + + // End:0x14A [Loop If] + if(AttachIdx < Attached.Length) + { + A = Attached[AttachIdx]; + IgnoreIdx = 0; + J0x6D: + + // End:0x102 [Loop If] + if(IgnoreIdx < Action.IgnoreBasedClasses.Length) + { + // End:0xF4 + if(ClassIsChildOf(A.Class, Action.IgnoreBasedClasses[IgnoreIdx])) + { + A = none; + // [Explicit Break] + goto J0x102; + } + IgnoreIdx++; + // [Loop Continue] + goto J0x6D; + } + J0x102: + + // End:0x114 + if(A == none) + { + } + else + { + A.OnDestroy(Action); + } + AttachIdx++; + // [Loop Continue] + goto J0x2D; + } + } + // End:0x17A + if(bNoDelete || int(Role) < int(ROLE_Authority)) + { + ShutDown(); + } + else + { + // End:0x18C + if(!bDeleteMe) + { + Destroy(); + } + } + //return; +} + +event ForceNetRelevant() +{ + // End:0x0F + if(bClientSideOnly) + { + return; + } + // End:0x6A + if(((int(RemoteRole) == int(ROLE_None)) && bNoDelete) && !bStatic) + { + RemoteRole = ROLE_SimulatedProxy; + bAlwaysRelevant = true; + NetUpdateFrequency = 0.1000000; + } + bForceNetUpdate = true; + ClearTimer('ForceNetIrrelevant'); + //return; +} + +// Export UActor::execSetNetUpdateTime(FFrame&, void* const) +native final function SetNetUpdateTime(float NewUpdateTime); + +simulated event ShutDown() +{ + SetPhysics(0); + SetCollision(false, false); + // End:0x3A + if(CollisionComponent != none) + { + CollisionComponent.SetBlockRigidBody(false); + } + SetHidden(true); + SetTickIsDisabled(true); + ForceNetRelevant(); + // End:0x114 + if(int(RemoteRole) != int(ROLE_None)) + { + SetForcedInitialReplicatedProperty(BoolProperty'Engine.Actor.bCollideActors', bCollideActors == default.bCollideActors); + SetForcedInitialReplicatedProperty(BoolProperty'Engine.Actor.bBlockActors', bBlockActors == default.bBlockActors); + SetForcedInitialReplicatedProperty(BoolProperty'Engine.Actor.bHidden', bHidden == default.bHidden); + SetForcedInitialReplicatedProperty(ByteProperty'Engine.Actor.Physics', int(Physics) == int(default.Physics)); + } + NetUpdateFrequency = 0.1000000; + bForceNetUpdate = true; + //return; +} + +// Export UActor::execPrestreamTextures(FFrame&, void* const) +native function PrestreamTextures(float Seconds, bool bEnableStreaming, optional int CinematicTextureGroups = 0); + +simulated function OnModifyHealth(SeqAct_ModifyHealth Action) +{ + local Controller InstigatorController; + local Pawn InstigatorPawn; + + InstigatorController = Controller(Action.Instigator); + // End:0xA8 + if(InstigatorController == none) + { + InstigatorPawn = Pawn(Action.Instigator); + // End:0xA8 + if(InstigatorPawn != none) + { + InstigatorController = InstigatorPawn.Controller; + } + } + // End:0x11E + if(Action.bHeal) + { + HealDamage(int(Action.Amount), InstigatorController, Action.DamageType); + } + else + { + TakeDamage(int(Action.Amount), InstigatorController, Location, Vector(Rotation) * -Action.Momentum, Action.DamageType); + } + //return; +} + +simulated function OnTeleport(SeqAct_Teleport Action) +{ + local array objVars; + local int Idx; + local Actor destActor, tempActor, A; + local Controller C; + local bool bOccupiedDest, bColliding; + local float ColRadius, ColHeight; + local Vector Extent; + + GetBoundingCylinder(ColRadius, ColHeight); + Extent.X = ColRadius; + Extent.Y = ColRadius; + Extent.Z = ColHeight; + bOccupiedDest = false; + Action.GetObjectVars(objVars, "Destination"); + Idx = 0; + J0xDA: + + // End:0x2CA [Loop If] + if(Idx < objVars.Length) + { + tempActor = Actor(objVars[Idx]); + // End:0x12A + if(tempActor == none) + { + } + else + { + C = Controller(tempActor); + // End:0x1A3 + if((C != none) && C.Pawn != none) + { + tempActor = C.Pawn; + } + // End:0x260 + if(Action.bCheckOverlap) + { + bColliding = false; + // End:0x24A + foreach VisibleCollidingActors(Class'Engine.Actor', A, ColRadius * 2.0000000, tempActor.Location, false, Extent, true) + { + // End:0x249 + if(IsBlockedBy(A)) + { + bColliding = true; + // End:0x24A + break; + } + } + bOccupiedDest = bColliding; + } + destActor = tempActor; + // End:0x2BC + if((!Action.bCheckOverlap || !bOccupiedDest) && destActor != none) + { + // [Explicit Break] + goto J0x2CA; + } + } + Idx++; + // [Loop Continue] + goto J0xDA; + } + J0x2CA: + + // End:0x3F3 + if((destActor != none) && Action.ShouldTeleport(self, destActor.Location, Action.TeleportDistance, Action.TeleportVolumes)) + { + // End:0x3F0 + if(SetLocation(destActor.Location)) + { + PlayTeleportEffect(false, true); + // End:0x3CB + if(Action.bUpdateRotation) + { + SetRotation(destActor.Rotation); + } + ForceNetRelevant(); + bUpdateSimulatedPosition = true; + bNetDirty = true; + } + } + else + { + // End:0x402 + if(destActor != none) + { + } + } + //return; +} + +simulated function OnSetVelocity(SeqAct_SetVelocity Action) +{ + local Vector V; + local float Mag; + + Mag = Action.VelocityMag; + // End:0x65 + if(Mag <= 0.0000000) + { + Mag = VSize(Action.VelocityDir); + } + V = Normal(Action.VelocityDir) * Mag; + // End:0xDB + if(Action.bVelocityRelativeToActorRotation) + { + V = V >> Rotation; + } + Velocity = V; + // End:0x13C + if((int(Physics) == int(10)) && CollisionComponent != none) + { + CollisionComponent.SetRBLinearVelocity(Velocity); + } + //return; +} + +simulated function OnSetBlockRigidBody(SeqAct_SetBlockRigidBody Action) +{ + // End:0xC0 + if(CollisionComponent != none) + { + // End:0x69 + if(Action.InputLinks[0].bHasImpulse) + { + CollisionComponent.SetBlockRigidBody(true); + } + else + { + // End:0xC0 + if(Action.InputLinks[1].bHasImpulse) + { + CollisionComponent.SetBlockRigidBody(false); + } + } + } + //return; +} + +simulated function OnSetPhysics(SeqAct_SetPhysics Action) +{ + ForceNetRelevant(); + SetPhysics(Action.newPhysics); + // End:0xA3 + if(int(RemoteRole) != int(ROLE_None)) + { + // End:0x78 + if(int(Physics) != int(0)) + { + bUpdateSimulatedPosition = true; + // End:0x78 + if(bOnlyDirtyReplication) + { + bNetDirty = true; + } + } + SetForcedInitialReplicatedProperty(ByteProperty'Engine.Actor.Physics', int(Physics) == int(default.Physics)); + } + //return; +} + +function OnChangeCollision(SeqAct_ChangeCollision Action) +{ + // End:0xA5 + if(Action.ObjInstanceVersion < Action.GetObjClassVersion()) + { + SetCollision(Action.bCollideActors, Action.bBlockActors, Action.bIgnoreEncroachers); + } + else + { + SetCollisionType(Action.CollisionType); + } + ForceNetRelevant(); + // End:0x13D + if(int(RemoteRole) != int(ROLE_None)) + { + SetForcedInitialReplicatedProperty(BoolProperty'Engine.Actor.bCollideActors', bCollideActors == default.bCollideActors); + SetForcedInitialReplicatedProperty(BoolProperty'Engine.Actor.bBlockActors', bBlockActors == default.bBlockActors); + } + //return; +} + +simulated function OnToggleHidden(SeqAct_ToggleHidden Action) +{ + local int AttachIdx, IgnoreIdx; + local Actor A; + + // End:0x14A + if(Action.bToggleBasedActors) + { + AttachIdx = 0; + J0x2D: + + // End:0x14A [Loop If] + if(AttachIdx < Attached.Length) + { + A = Attached[AttachIdx]; + IgnoreIdx = 0; + J0x6D: + + // End:0x102 [Loop If] + if(IgnoreIdx < Action.IgnoreBasedClasses.Length) + { + // End:0xF4 + if(ClassIsChildOf(A.Class, Action.IgnoreBasedClasses[IgnoreIdx])) + { + A = none; + // [Explicit Break] + goto J0x102; + } + IgnoreIdx++; + // [Loop Continue] + goto J0x6D; + } + J0x102: + + // End:0x114 + if(A == none) + { + } + else + { + A.OnToggleHidden(Action); + } + AttachIdx++; + // [Loop Continue] + goto J0x2D; + } + } + // End:0x18F + if(Action.InputLinks[0].bHasImpulse) + { + SetHidden(true); + } + else + { + // End:0x1D4 + if(Action.InputLinks[1].bHasImpulse) + { + SetHidden(false); + } + else + { + SetHidden(!bHidden); + } + } + ForceNetRelevant(); + // End:0x231 + if(int(RemoteRole) != int(ROLE_None)) + { + SetForcedInitialReplicatedProperty(BoolProperty'Engine.Actor.bHidden', bHidden == default.bHidden); + } + //return; +} + +function OnAttachToActor(SeqAct_AttachToActor Action) +{ + local int Idx; + local Actor Attachment; + local Controller C; + local array objVars; + + Action.GetObjectVars(objVars, "Attachment"); + Idx = 0; + J0x3F: + + // End:0x233 [Loop If] + if((Idx < objVars.Length) && Attachment == none) + { + Attachment = Actor(objVars[Idx]); + C = Controller(Attachment); + // End:0x107 + if((C != none) && C.Pawn != none) + { + Attachment = C.Pawn; + } + // End:0x225 + if(Attachment != none) + { + // End:0x177 + if(Action.bDetach) + { + Attachment.SetBase(none); + Attachment.SetHardAttach(false); + } + else + { + C = Controller(self); + // End:0x209 + if((C != none) && C.Pawn != none) + { + C.Pawn.DoKismetAttachment(Attachment, Action); + } + else + { + DoKismetAttachment(Attachment, Action); + } + } + } + Idx++; + // [Loop Continue] + goto J0x3F; + } + //return; +} + +function DoKismetAttachment(Actor Attachment, SeqAct_AttachToActor Action) +{ + local bool bOldCollideActors, bOldBlockActors; + local Vector X, Y, Z; + + Attachment.SetBase(none); + Attachment.SetHardAttach(Action.bHardAttach); + // End:0x2C3 + if(Action.bUseRelativeOffset || Action.bUseRelativeRotation) + { + bOldCollideActors = Attachment.bCollideActors; + bOldBlockActors = Attachment.bBlockActors; + Attachment.SetCollision(false, false); + // End:0x173 + if(Action.bUseRelativeRotation) + { + Attachment.SetRotation(Rotation + Action.RelativeRotation); + } + // End:0x296 + if(Action.bUseRelativeOffset) + { + GetAxes(Rotation, X, Y, Z); + Attachment.SetLocation(((Location + (Action.RelativeOffset.X * X)) + (Action.RelativeOffset.Y * Y)) + (Action.RelativeOffset.Z * Z)); + } + Attachment.SetCollision(bOldCollideActors, bOldBlockActors); + } + Attachment.SetBase(self); + Attachment.ForceNetRelevant(); + Attachment.bNetDirty = true; + // End:0x45C + if((int(Attachment.RemoteRole) != int(ROLE_None)) && Attachment.bStatic || Attachment.bNoDelete) + { + Attachment.SetForcedInitialReplicatedProperty(StructProperty'Engine.Actor.RelativeLocation', Attachment.RelativeLocation == Attachment.default.RelativeLocation); + Attachment.SetForcedInitialReplicatedProperty(StructProperty'Engine.Actor.RelativeRotation', Attachment.RelativeRotation == Attachment.default.RelativeRotation); + } + //return; +} + +event OnAnimEnd(AnimNodeSequence SeqNode, float PlayedTime, float ExcessTime) +{ + //return; +} + +event OnAnimPlay(AnimNodeSequence SeqNode) +{ + //return; +} + +event BeginAnimControl(InterpGroup InInterpGroup) +{ + //return; +} + +event SetAnimPosition(name SlotName, int ChannelIndex, name InAnimSeqName, float InPosition, bool bFireNotifies, bool bLooping, bool bEnableRootMotion) +{ + //return; +} + +event FinishAnimControl(InterpGroup InInterpGroup) +{ + //return; +} + +event bool PlayActorFaceFXAnim(FaceFXAnimSet AnimSet, string GroupName, string SeqName, SoundCue SoundCueToPlay, AkEvent AkEventToPlay) +{ + //return ReturnValue; +} + +event StopActorFaceFXAnim() +{ + //return; +} + +event SetMorphWeight(name MorphNodeName, float MorphWeight) +{ + //return; +} + +event SetSkelControlScale(name SkelControlName, float Scale) +{ + //return; +} + +event TickSkelControl(float DeltaTime, SkeletalMeshComponent SkelComp, SkelControlBase SkelCtrl) +{ + //return; +} + +simulated function bool IsActorPlayingFaceFXAnim() +{ + return false; + //return ReturnValue; +} + +simulated function bool CanActorPlayFaceFXAnim() +{ + return true; + //return ReturnValue; +} + +event FaceFXAsset GetActorFaceFXAsset() +{ + //return ReturnValue; +} + +function bool IsStationary() +{ + return true; + //return ReturnValue; +} + +simulated event GetActorEyesViewPoint(out Vector out_Location, out Rotator out_Rotation) +{ + out_Location = Location; + out_Rotation = Rotation; + //return; +} + +// Export UActor::execIsPlayerOwned(FFrame&, void* const) +native simulated function bool IsPlayerOwned(); + +function PawnBaseDied() +{ + //return; +} + +// Export UActor::execGetTeamNum(FFrame&, void* const) +native simulated function byte GetTeamNum(); + +simulated event byte ScriptGetTeamNum() +{ + return 255; + //return ReturnValue; +} + +simulated function NotifyLocalPlayerTeamReceived() +{ + //return; +} + +simulated function FindGoodEndView(PlayerController PC, out Rotator GoodRotation) +{ + GoodRotation = PC.Rotation; + //return; +} + +// Export UActor::execGetTargetLocation(FFrame&, void* const) +native simulated function Vector GetTargetLocation(optional Actor RequestedBy, optional bool bRequestAlternateLoc); + +event SpawnedByKismet() +{ + //return; +} + +simulated event InterpolationStarted(SeqAct_Interp InterpAction, InterpGroupInst GroupInst) +{ + //return; +} + +simulated event InterpolationFinished(SeqAct_Interp InterpAction) +{ + //return; +} + +simulated event InterpolationChanged(SeqAct_Interp InterpAction) +{ + //return; +} + +event RigidBodyCollision(PrimitiveComponent HitComponent, PrimitiveComponent OtherComponent, const out CollisionImpactData RigidCollisionData, int ContactIndex) +{ + //return; +} + +event OnRanOver(SVehicle Vehicle, PrimitiveComponent RunOverComponent, int WheelIndex) +{ + //return; +} + +// Export UActor::execSetHUDLocation(FFrame&, void* const) +native simulated function SetHUDLocation(Vector NewHUDLocation); + +// Export UActor::execNativePostRenderFor(FFrame&, void* const) +native simulated function NativePostRenderFor(PlayerController PC, Canvas Canvas, Vector CameraPosition, Vector CameraDir); + +simulated event PostRenderFor(PlayerController PC, Canvas Canvas, Vector CameraPosition, Vector CameraDir) +{ + //return; +} + +simulated event RootMotionModeChanged(SkeletalMeshComponent SkelComp) +{ + //return; +} + +simulated event RootMotionProcessed(SkeletalMeshComponent SkelComp) +{ + //return; +} + +simulated event RootMotionExtracted(SkeletalMeshComponent SkelComp, out BoneAtom ExtractedRootMotionDelta) +{ + //return; +} + +event PostInitAnimTree(SkeletalMeshComponent SkelComp) +{ + //return; +} + +// Export UActor::execGetPackageGuid(FFrame&, void* const) +native static final function Guid GetPackageGuid(name PackageName); + +simulated event OnRigidBodySpringOverextension(RB_BodyInstance BodyInstance) +{ + //return; +} + +// Export UActor::execIsInPersistentLevel(FFrame&, void* const) +native final function bool IsInPersistentLevel(optional bool bIncludeLevelStreamingPersistent); + +simulated function GetAimFrictionExtent(out float Width, out float Height, out Vector Center) +{ + // End:0x2C + if(bCanBeFrictionedTo) + { + GetBoundingCylinder(Width, Height); + } + else + { + Width = 0.0000000; + Height = 0.0000000; + } + Center = Location; + //return; +} + +event bool CanApplyEffects() +{ + return false; + //return ReturnValue; +} + +simulated function GetAimAdhesionExtent(out float Width, out float Height, out Vector Center) +{ + // End:0x2C + if(bCanBeAdheredTo) + { + GetBoundingCylinder(Width, Height); + } + else + { + Width = 0.0000000; + Height = 0.0000000; + } + Center = Location; + //return; +} + +event bool PlayParticleEffect(const AnimNotify_PlayParticleEffect AnimNotifyData) +{ + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return true; + } + return false; + //return ReturnValue; +} + +event bool CreateForceField(const AnimNotify_ForceField AnimNotifyData) +{ + return false; + //return ReturnValue; +} + +event TrailsNotify(const AnimNotify_Trails AnimNotifyData) +{ + //return; +} + +event TrailsNotifyTick(const AnimNotify_Trails AnimNotifyData) +{ + //return; +} + +event TrailsNotifyEnd(const AnimNotify_Trails AnimNotifyData) +{ + //return; +} + +// Export UActor::execGetAnimTrailParticleSystem(FFrame&, void* const) +native function ParticleSystem GetAnimTrailParticleSystem(const AnimNotify_Trails AnimNotifyData); + +// Export UActor::execSupportsKismetModification(FFrame&, void* const) +native final function bool SupportsKismetModification(SequenceOp AskingOp, out string Reason); + +simulated event AnimTreeUpdated(SkeletalMeshComponent SkelMesh) +{ + //return; +} + +simulated event PreDemoRewind() +{ + //return; +} + +simulated event PostDemoRewind() +{ + //return; +} + +simulated event PreTimeLapse(bool bPlayOfTheGame) +{ + c_bJustStartedTimelapsePlayback = true; + NotifyLocalPlayerTeamReceived(); + //return; +} + +simulated event PostTimeLapse(bool bPlayOfTheGame) +{ + c_bJustEndedTimelapsePlayback = true; + NotifyLocalPlayerTeamReceived(); + //return; +} + +simulated event ReplicationEnded() +{ + //return; +} + +// Export UActor::execGetAvoidanceVector(FFrame&, void* const) +native final function Vector GetAvoidanceVector(const out array Obstacles, Vector GoalLocation, float CollisionRadius, float MaxSpeed, optional int NumSamples = 8, optional float VelocityStepRate = 0.1000000, optional float MaxTimeTilOverlap = 1.0000000); + +// Export UActor::execWillOverlap(FFrame&, void* const) +native final function bool WillOverlap(Vector PosA, Vector VelA, Vector PosB, Vector VelB, float StepSize, float Radius, out float Time); + +// Export UActor::execShouldBeHiddenBySHOW_NavigationNodes(FFrame&, void* const) +native function bool ShouldBeHiddenBySHOW_NavigationNodes(); + +function bool IsMobileTouchEnabled() +{ + return bEnableMobileTouch && bCollideActors; + //return ReturnValue; +} + +event bool OnMobileTouch(PlayerController InPC, Vector2D TouchLocation) +{ + TriggerEventClass(Class'Engine.SeqEvent_MobileTouch', InPC, 0); + return true; + //return ReturnValue; +} + +// Export UActor::execGetActorMetrics(FFrame&, void* const) +native simulated function int GetActorMetrics(Actor.EActorMetricsType MetricsType); + +// Export UActor::execGetActorSpriteComponent(FFrame&, void* const) +native function SpriteComponent GetActorSpriteComponent(); + +// Export UActor::execSetAux(FFrame&, void* const) +native function SetAux(name AuxBusName, float Level); + +// Export UActor::execUpdateReverbVolume(FFrame&, void* const) +native function UpdateReverbVolume(Vector WorldLocation, optional ReverbVolume VolumeTouched); + +defaultproperties +{ + DrawScale=1.0000000 + DrawScale3D=(X=1.0000000,Y=1.0000000,Z=1.0000000) + CustomTimeDilation=1.0000000 + Role=ENetRole.ROLE_Authority + ReplicatedCollisionType=ECollisionType.None + bPushedByEncroachers=true + bRouteBeginPlayEvenIfStatic=true + bCanStepUpOn=true + bReplicateMovement=true + bAllowFluidSurfaceInteraction=true + bMovable=true + bJustTeleported=true + bEditable=true + m_bCanBaseOn=true + m_bCanPlayFirstPersonAkEvent=true + NetUpdateFrequency=100.0000000 + NetPriority=1.0000000 + DatabaseFieldName="m_nMapObjectId" + MessageClass=Class'Engine.LocalMessage' + BotRankId=-1 + SupportedEvents[0]=Class'Engine.SeqEvent_Touch' + SupportedEvents[1]=Class'Engine.SeqEvent_Destroyed' + SupportedEvents[2]=Class'Engine.SeqEvent_TakeDamage' + SupportedEvents[3]=Class'Engine.SeqEvent_HitWall' + SupportedEvents[4]=Class'Engine.SeqEvent_AnimNotify' + SupportedEvents[5]=Class'Engine.SeqEvent_MobileTouch' + LocationPackedKey=-1 + m_fMaxDistForOcclusionCheck=10000.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorComponent.uc b/exported/Engine/Classes/ActorComponent.uc new file mode 100755 index 00000000..e9fc2b48 --- /dev/null +++ b/exported/Engine/Classes/ActorComponent.uc @@ -0,0 +1,32 @@ +class ActorComponent extends Component + abstract + native + noexport; + +var native const transient Pointer Scene; +var const transient Actor Owner; +var native const transient bool bAttached; +var const bool bTickInEditor; +var const transient bool bNeedsReattach; +var const transient bool bNeedsUpdateTransform; +var const Object.ETickingGroup TickGroup; + +// Export UActorComponent::execSetTickGroup(FFrame&, void* const) +native final function SetTickGroup(Object.ETickingGroup NewTickGroup); + +// Export UActorComponent::execSetComponentRBFixed(FFrame&, void* const) +native final function SetComponentRBFixed(bool bFixed); + +// Export UActorComponent::execForceUpdate(FFrame&, void* const) +native final function ForceUpdate(bool bTransformOnly); + +// Export UActorComponent::execDetachFromAny(FFrame&, void* const) +native final function DetachFromAny(); + +// Export UActorComponent::execGetAParticleSystemComponent(FFrame&, void* const) +native function ParticleSystemComponent GetAParticleSystemComponent(); + +defaultproperties +{ + TickGroup=ETickingGroup.TG_DuringAsyncWork +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactory.uc b/exported/Engine/Classes/ActorFactory.uc new file mode 100755 index 00000000..e4b71d81 --- /dev/null +++ b/exported/Engine/Classes/ActorFactory.uc @@ -0,0 +1,28 @@ +class ActorFactory extends Object + abstract + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +var Class GameplayActorClass; +var string MenuName; +var config int MenuPriority; +var deprecated int AlternateMenuPriority; +var config string NewActorClassName; +var Class NewActorClass; +var bool bPlaceable; +var bool bShowInEditorQuickMenu; + +simulated event PostCreateActor(Actor NewActor, const optional SeqAct_ActorFactory ActorFactoryData) +{ + //return; +} + +defaultproperties +{ + MenuName="Add Actor" + MenuPriority=10 + bPlaceable=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryAI.uc b/exported/Engine/Classes/ActorFactoryAI.uc new file mode 100755 index 00000000..be4ce54e --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryAI.uc @@ -0,0 +1,20 @@ +class ActorFactoryAI extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +var() Class ControllerClass; +var() Class PawnClass; +var() string PawnName; +var() bool bGiveDefaultInventory; +var() array< Class > InventoryList; +var() int TeamIndex; + +defaultproperties +{ + ControllerClass=Class'Engine.AIController' + TeamIndex=255 + bPlaceable=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryActor.uc b/exported/Engine/Classes/ActorFactoryActor.uc new file mode 100755 index 00000000..d0c61c75 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryActor.uc @@ -0,0 +1,14 @@ +class ActorFactoryActor extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +var() Class ActorClass; + +defaultproperties +{ + ActorClass=Class'Engine.Actor' + bPlaceable=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryAmbientSound.uc b/exported/Engine/Classes/ActorFactoryAmbientSound.uc new file mode 100755 index 00000000..87f26ae5 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryAmbientSound.uc @@ -0,0 +1,16 @@ +class ActorFactoryAmbientSound extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() SoundCue AmbientSoundCue; + +defaultproperties +{ + MenuName="Add AmbientSound" + MenuPriority=11 + NewActorClass=Class'Engine.AmbientSound' + bShowInEditorQuickMenu=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryAmbientSoundMovable.uc b/exported/Engine/Classes/ActorFactoryAmbientSoundMovable.uc new file mode 100755 index 00000000..ad8b70e5 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryAmbientSoundMovable.uc @@ -0,0 +1,14 @@ +class ActorFactoryAmbientSoundMovable extends ActorFactoryAmbientSound + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +defaultproperties +{ + MenuName="Add AmbientSoundMovable" + MenuPriority=10 + NewActorClass=Class'Engine.AmbientSoundMovable' + bShowInEditorQuickMenu=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryAmbientSoundNonLoop.uc b/exported/Engine/Classes/ActorFactoryAmbientSoundNonLoop.uc new file mode 100755 index 00000000..5d5298d4 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryAmbientSoundNonLoop.uc @@ -0,0 +1,13 @@ +class ActorFactoryAmbientSoundNonLoop extends ActorFactoryAmbientSoundSimple + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +defaultproperties +{ + MenuName="Add AmbientSoundNonLoop" + MenuPriority=10 + NewActorClass=Class'Engine.AmbientSoundNonLoop' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryAmbientSoundNonLoopingToggleable.uc b/exported/Engine/Classes/ActorFactoryAmbientSoundNonLoopingToggleable.uc new file mode 100755 index 00000000..13922a52 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryAmbientSoundNonLoopingToggleable.uc @@ -0,0 +1,12 @@ +class ActorFactoryAmbientSoundNonLoopingToggleable extends ActorFactoryAmbientSoundSimpleToggleable + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object,Object); + +defaultproperties +{ + MenuName="Add AmbientSoundNonLoopingToggleable" + NewActorClass=Class'Engine.AmbientSoundNonLoopingToggleable' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryAmbientSoundSimple.uc b/exported/Engine/Classes/ActorFactoryAmbientSoundSimple.uc new file mode 100755 index 00000000..a9c5022e --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryAmbientSoundSimple.uc @@ -0,0 +1,15 @@ +class ActorFactoryAmbientSoundSimple extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() SoundNodeWave SoundNodeWave; + +defaultproperties +{ + MenuName="Add AmbientSoundSimple" + MenuPriority=11 + NewActorClass=Class'Engine.AmbientSoundSimple' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryAmbientSoundSimpleToggleable.uc b/exported/Engine/Classes/ActorFactoryAmbientSoundSimpleToggleable.uc new file mode 100755 index 00000000..0f0c61f2 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryAmbientSoundSimpleToggleable.uc @@ -0,0 +1,13 @@ +class ActorFactoryAmbientSoundSimpleToggleable extends ActorFactoryAmbientSoundSimple + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +defaultproperties +{ + MenuName="Add AmbientSoundSimpleToggleable" + MenuPriority=10 + NewActorClass=Class'Engine.AmbientSoundSimpleToggleable' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryApexClothing.uc b/exported/Engine/Classes/ActorFactoryApexClothing.uc new file mode 100755 index 00000000..4fe89361 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryApexClothing.uc @@ -0,0 +1,17 @@ +class ActorFactoryApexClothing extends ActorFactorySkeletalMesh + native(Physics) + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() array ClothingAssets; +var() const PrimitiveComponent.ERBCollisionChannel ClothingRBChannel; +var() const RBCollisionChannelContainer ClothingRBCollideWithChannels; + +defaultproperties +{ + ClothingRBChannel=ERBCollisionChannel.RBCC_Clothing + ClothingRBCollideWithChannels=(Default=true,Nothing=false,Pawn=false,Vehicle=false,Water=false,GameplayPhysics=true,EffectPhysics=true,Untitled1=false,Untitled2=false,Untitled3=false,Untitled4=false,Cloth=false,FluidDrain=false,SoftBody=false,FracturedMeshPart=false,BlockingVolume=true,DeadPawn=false,Clothing=false,ClothingCollision=true) + MenuName="Add Clothing" +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryApexDestructible.uc b/exported/Engine/Classes/ActorFactoryApexDestructible.uc new file mode 100755 index 00000000..b944d31a --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryApexDestructible.uc @@ -0,0 +1,20 @@ +class ActorFactoryApexDestructible extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +var() bool bStartAwake; +var() PrimitiveComponent.ERBCollisionChannel RBChannel; +var() const RBCollisionChannelContainer CollideWithChannels; +var() ApexDestructibleAsset DestructibleAsset; + +defaultproperties +{ + RBChannel=ERBCollisionChannel.RBCC_EffectPhysics + CollideWithChannels=(Default=true,Nothing=false,Pawn=false,Vehicle=false,Water=false,GameplayPhysics=true,EffectPhysics=true,Untitled1=false,Untitled2=false,Untitled3=false,Untitled4=false,Cloth=false,FluidDrain=false,SoftBody=false,FracturedMeshPart=false,BlockingVolume=true,DeadPawn=false,Clothing=false,ClothingCollision=false) + GameplayActorClass=Class'Engine.ApexDestructibleActorSpawnable' + MenuName="Add ApexDestructibleActor" + NewActorClass=Class'Engine.ApexDestructibleActor' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryArchetype.uc b/exported/Engine/Classes/ActorFactoryArchetype.uc new file mode 100755 index 00000000..0ba53258 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryArchetype.uc @@ -0,0 +1,13 @@ +class ActorFactoryArchetype extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +var() Actor ArchetypeActor; + +defaultproperties +{ + MenuName="Add Archetype" +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryCoverLink.uc b/exported/Engine/Classes/ActorFactoryCoverLink.uc new file mode 100755 index 00000000..e0253a46 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryCoverLink.uc @@ -0,0 +1,13 @@ +class ActorFactoryCoverLink extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuName="Add CoverLink" + NewActorClass=Class'Engine.CoverLink' + bShowInEditorQuickMenu=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryDecal.uc b/exported/Engine/Classes/ActorFactoryDecal.uc new file mode 100755 index 00000000..44f0c5ed --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryDecal.uc @@ -0,0 +1,15 @@ +class ActorFactoryDecal extends ActorFactory + native(Decal) + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +var() MaterialInterface DecalMaterial; + +defaultproperties +{ + MenuName="Add Decal" + MenuPriority=15 + NewActorClass=Class'Engine.DecalActor' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryDecalMovable.uc b/exported/Engine/Classes/ActorFactoryDecalMovable.uc new file mode 100755 index 00000000..7923e675 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryDecalMovable.uc @@ -0,0 +1,12 @@ +class ActorFactoryDecalMovable extends ActorFactoryDecal + native(Decal) + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +defaultproperties +{ + MenuName="Add Movable Decal" + NewActorClass=Class'Engine.DecalActorMovable' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryDominantDirectionalLight.uc b/exported/Engine/Classes/ActorFactoryDominantDirectionalLight.uc new file mode 100755 index 00000000..e187abe6 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryDominantDirectionalLight.uc @@ -0,0 +1,13 @@ +class ActorFactoryDominantDirectionalLight extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuName="Add Light (DominantDirectionalLight)" + NewActorClass=Class'Engine.DominantDirectionalLight' + bShowInEditorQuickMenu=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryDominantDirectionalLightMovable.uc b/exported/Engine/Classes/ActorFactoryDominantDirectionalLightMovable.uc new file mode 100755 index 00000000..f23901dd --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryDominantDirectionalLightMovable.uc @@ -0,0 +1,12 @@ +class ActorFactoryDominantDirectionalLightMovable extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuName="Add Light (DominantDirectionalLightMovable)" + NewActorClass=Class'Engine.DominantDirectionalLightMovable' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryDynamicSM.uc b/exported/Engine/Classes/ActorFactoryDynamicSM.uc new file mode 100755 index 00000000..8c31ce11 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryDynamicSM.uc @@ -0,0 +1,23 @@ +class ActorFactoryDynamicSM extends ActorFactory + abstract + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +var() StaticMesh StaticMesh; +var() Vector DrawScale3D; +var() bool bNoEncroachCheck; +var() bool bNotifyRigidBodyCollision; +var() bool bBlockRigidBody; +var() bool bUseCompartment; +var() bool bCastDynamicShadow; +var() Actor.ECollisionType CollisionType; + +defaultproperties +{ + DrawScale3D=(X=1.0000000,Y=1.0000000,Z=1.0000000) + bCastDynamicShadow=true + CollisionType=ECollisionType.COLLIDE_NoCollision +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryEmitter.uc b/exported/Engine/Classes/ActorFactoryEmitter.uc new file mode 100755 index 00000000..405e6fc4 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryEmitter.uc @@ -0,0 +1,15 @@ +class ActorFactoryEmitter extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() ParticleSystem ParticleSystem; + +defaultproperties +{ + GameplayActorClass=Class'Engine.EmitterSpawnable' + MenuName="Add Emitter" + NewActorClass=Class'Engine.Emitter' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryFogVolumeConstantDensityInfo.uc b/exported/Engine/Classes/ActorFactoryFogVolumeConstantDensityInfo.uc new file mode 100755 index 00000000..be426f77 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryFogVolumeConstantDensityInfo.uc @@ -0,0 +1,15 @@ +class ActorFactoryFogVolumeConstantDensityInfo extends ActorFactory + native(FogVolume) + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +var MaterialInterface SelectedMaterial; +var bool bNothingSelected; + +defaultproperties +{ + MenuName="Add FogVolumeConstantDensityInfo" + NewActorClass=Class'Engine.FogVolumeConstantDensityInfo' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryFogVolumeLinearHalfspaceDensityInfo.uc b/exported/Engine/Classes/ActorFactoryFogVolumeLinearHalfspaceDensityInfo.uc new file mode 100755 index 00000000..072841b7 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryFogVolumeLinearHalfspaceDensityInfo.uc @@ -0,0 +1,12 @@ +class ActorFactoryFogVolumeLinearHalfspaceDensityInfo extends ActorFactoryFogVolumeConstantDensityInfo + native(FogVolume) + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +defaultproperties +{ + MenuName="Add FogVolumeLinearHalfspaceDensityInfo" + NewActorClass=Class'Engine.FogVolumeLinearHalfspaceDensityInfo' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryFogVolumeSphericalDensityInfo.uc b/exported/Engine/Classes/ActorFactoryFogVolumeSphericalDensityInfo.uc new file mode 100755 index 00000000..f0e28463 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryFogVolumeSphericalDensityInfo.uc @@ -0,0 +1,12 @@ +class ActorFactoryFogVolumeSphericalDensityInfo extends ActorFactoryFogVolumeConstantDensityInfo + native(FogVolume) + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +defaultproperties +{ + MenuName="Add FogVolumeSphericalDensityInfo" + NewActorClass=Class'Engine.FogVolumeSphericalDensityInfo' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryFracturedStaticMesh.uc b/exported/Engine/Classes/ActorFactoryFracturedStaticMesh.uc new file mode 100755 index 00000000..8ae472ba --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryFracturedStaticMesh.uc @@ -0,0 +1,17 @@ +class ActorFactoryFracturedStaticMesh extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +var() FracturedStaticMesh FracturedStaticMesh; +var() Vector DrawScale3D; + +defaultproperties +{ + DrawScale3D=(X=1.0000000,Y=1.0000000,Z=1.0000000) + MenuName="Add FracturedStaticMesh" + MenuPriority=35 + NewActorClass=Class'Engine.FracturedStaticMeshActor' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryInteractiveFoliage.uc b/exported/Engine/Classes/ActorFactoryInteractiveFoliage.uc new file mode 100755 index 00000000..059ce510 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryInteractiveFoliage.uc @@ -0,0 +1,13 @@ +class ActorFactoryInteractiveFoliage extends ActorFactoryStaticMesh + native(Foliage) + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +defaultproperties +{ + MenuName="Add InteractiveFoliageActor" + MenuPriority=26 + NewActorClass=Class'Engine.InteractiveFoliageActor' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryLensFlare.uc b/exported/Engine/Classes/ActorFactoryLensFlare.uc new file mode 100755 index 00000000..d774a25d --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryLensFlare.uc @@ -0,0 +1,14 @@ +class ActorFactoryLensFlare extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() LensFlare LensFlareObject; + +defaultproperties +{ + MenuName="Add LensFlare" + NewActorClass=Class'Engine.LensFlareSource' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryLight.uc b/exported/Engine/Classes/ActorFactoryLight.uc new file mode 100755 index 00000000..b8dfb1a9 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryLight.uc @@ -0,0 +1,14 @@ +class ActorFactoryLight extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuName="Add Light (Point)" + MenuPriority=20 + NewActorClass=Class'Engine.PointLight' + bShowInEditorQuickMenu=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryMover.uc b/exported/Engine/Classes/ActorFactoryMover.uc new file mode 100755 index 00000000..3e593582 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryMover.uc @@ -0,0 +1,13 @@ +class ActorFactoryMover extends ActorFactoryDynamicSM + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuName="Add InterpActor" + MenuPriority=25 + NewActorClass=Class'Engine.InterpActor' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryPathNode.uc b/exported/Engine/Classes/ActorFactoryPathNode.uc new file mode 100755 index 00000000..3da4b13b --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryPathNode.uc @@ -0,0 +1,13 @@ +class ActorFactoryPathNode extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuName="Add PathNode" + NewActorClass=Class'Engine.PathNode' + bShowInEditorQuickMenu=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryPhysicsAsset.uc b/exported/Engine/Classes/ActorFactoryPhysicsAsset.uc new file mode 100755 index 00000000..3f3eb40e --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryPhysicsAsset.uc @@ -0,0 +1,27 @@ +class ActorFactoryPhysicsAsset extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() PhysicsAsset PhysicsAsset; +var() SkeletalMesh SkeletalMesh; +var() bool bStartAwake; +var() bool bDamageAppliesImpulse; +var() bool bNotifyRigidBodyCollision; +var() bool bUseCompartment; +var() bool bCastDynamicShadow; +var() Vector InitialVelocity; +var() Vector DrawScale3D; + +defaultproperties +{ + bStartAwake=true + bDamageAppliesImpulse=true + bCastDynamicShadow=true + DrawScale3D=(X=1.0000000,Y=1.0000000,Z=1.0000000) + GameplayActorClass=Class'Engine.KAssetSpawnable' + MenuName="Add PhysicsAsset" + NewActorClass=Class'Engine.KAsset' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryPlayerStart.uc b/exported/Engine/Classes/ActorFactoryPlayerStart.uc new file mode 100755 index 00000000..a65f4652 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryPlayerStart.uc @@ -0,0 +1,14 @@ +class ActorFactoryPlayerStart extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuName="Add PlayerStart" + MenuPriority=20 + NewActorClass=Class'Engine.PlayerStart' + bShowInEditorQuickMenu=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryPylon.uc b/exported/Engine/Classes/ActorFactoryPylon.uc new file mode 100755 index 00000000..d1c623ad --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryPylon.uc @@ -0,0 +1,13 @@ +class ActorFactoryPylon extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuName="Add Pylon" + NewActorClass=Class'Engine.Pylon' + bShowInEditorQuickMenu=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryRigidBody.uc b/exported/Engine/Classes/ActorFactoryRigidBody.uc new file mode 100755 index 00000000..7ba46ff2 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryRigidBody.uc @@ -0,0 +1,33 @@ +class ActorFactoryRigidBody extends ActorFactoryDynamicSM + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() bool bStartAwake; +var() bool bDamageAppliesImpulse; +var() bool bLocalSpaceInitialVelocity; +var() bool bEnableStayUprightSpring; +var() Vector InitialVelocity; +var() export editinline DistributionVector AdditionalVelocity; +var() export editinline DistributionVector InitialAngularVelocity; +var() PrimitiveComponent.ERBCollisionChannel RBChannel; +var() float StayUprightTorqueFactor; +var() float StayUprightMaxTorque; + +defaultproperties +{ + bStartAwake=true + bDamageAppliesImpulse=true + RBChannel=ERBCollisionChannel.RBCC_GameplayPhysics + StayUprightTorqueFactor=1000.0000000 + StayUprightMaxTorque=1500.0000000 + bNoEncroachCheck=true + bBlockRigidBody=true + CollisionType=ECollisionType.COLLIDE_BlockAll + GameplayActorClass=Class'Engine.KActorSpawnable' + MenuName="Add RigidBody" + MenuPriority=15 + NewActorClass=Class'Engine.KActor' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactorySkeletalMesh.uc b/exported/Engine/Classes/ActorFactorySkeletalMesh.uc new file mode 100755 index 00000000..4a3e2767 --- /dev/null +++ b/exported/Engine/Classes/ActorFactorySkeletalMesh.uc @@ -0,0 +1,18 @@ +class ActorFactorySkeletalMesh extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +var() SkeletalMesh SkeletalMesh; +var() AnimSet AnimSet; +var() name AnimSequenceName; + +defaultproperties +{ + GameplayActorClass=Class'Engine.SkeletalMeshActorSpawnable' + MenuName="Add SkeletalMesh" + MenuPriority=13 + NewActorClass=Class'Engine.SkeletalMeshActor' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactorySkeletalMeshCinematic.uc b/exported/Engine/Classes/ActorFactorySkeletalMeshCinematic.uc new file mode 100755 index 00000000..88b283ad --- /dev/null +++ b/exported/Engine/Classes/ActorFactorySkeletalMeshCinematic.uc @@ -0,0 +1,12 @@ +class ActorFactorySkeletalMeshCinematic extends ActorFactorySkeletalMesh + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuName="Add SkeletalMeshCinematic" + MenuPriority=12 + NewActorClass=Class'Engine.SkeletalMeshCinematicActor' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactorySkeletalMeshMAT.uc b/exported/Engine/Classes/ActorFactorySkeletalMeshMAT.uc new file mode 100755 index 00000000..552687ea --- /dev/null +++ b/exported/Engine/Classes/ActorFactorySkeletalMeshMAT.uc @@ -0,0 +1,12 @@ +class ActorFactorySkeletalMeshMAT extends ActorFactorySkeletalMesh + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuName="Add SkeletalMeshMAT" + MenuPriority=12 + NewActorClass=Class'Engine.SkeletalMeshActorMAT' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryStaticMesh.uc b/exported/Engine/Classes/ActorFactoryStaticMesh.uc new file mode 100755 index 00000000..1bde3629 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryStaticMesh.uc @@ -0,0 +1,17 @@ +class ActorFactoryStaticMesh extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +var() StaticMesh StaticMesh; +var() Vector DrawScale3D; + +defaultproperties +{ + DrawScale3D=(X=1.0000000,Y=1.0000000,Z=1.0000000) + MenuName="Add StaticMesh" + MenuPriority=30 + NewActorClass=Class'Engine.StaticMeshActor' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryTrigger.uc b/exported/Engine/Classes/ActorFactoryTrigger.uc new file mode 100755 index 00000000..947f04c5 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryTrigger.uc @@ -0,0 +1,13 @@ +class ActorFactoryTrigger extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuName="Add Trigger" + NewActorClass=Class'Engine.Trigger' + bShowInEditorQuickMenu=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ActorFactoryVehicle.uc b/exported/Engine/Classes/ActorFactoryVehicle.uc new file mode 100755 index 00000000..ad1c1906 --- /dev/null +++ b/exported/Engine/Classes/ActorFactoryVehicle.uc @@ -0,0 +1,14 @@ +class ActorFactoryVehicle extends ActorFactory + native + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +var() Class VehicleClass; + +defaultproperties +{ + VehicleClass=Class'Engine.Vehicle' + bPlaceable=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/Admin.uc b/exported/Engine/Classes/Admin.uc new file mode 100755 index 00000000..c43fccb2 --- /dev/null +++ b/exported/Engine/Classes/Admin.uc @@ -0,0 +1,103 @@ +class Admin extends PlayerController + config(Game) + notplaceable + hidecategories(Navigation); + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + AddCheats(); + //return; +} + +exec function Admin(string CommandLine) +{ + ServerAdmin(CommandLine); + //return; +} + +reliable server function ServerAdmin(string CommandLine) +{ + local string Result; + + Result = ConsoleCommand(CommandLine); + // End:0x43 + if(Result != "") + { + ClientMessage(Result); + } + //return; +} + +exec function KickBan(string S) +{ + ServerKickBan(S); + //return; +} + +reliable server function ServerKickBan(string S) +{ + WorldInfo.Game.KickBan(S); + //return; +} + +exec function Kick(string S) +{ + ServerKick(S); + //return; +} + +reliable server function ServerKick(string S) +{ + WorldInfo.Game.Kick(S); + //return; +} + +exec function PlayerList() +{ + local PlayerReplicationInfo PRI; + + // End:0x1A + foreach DynamicActors(Class'Engine.PlayerReplicationInfo', PRI) + { + } + //return; +} + +exec function RestartMap() +{ + ServerRestartMap(); + //return; +} + +reliable server function ServerRestartMap() +{ + ClientTravel("?restart", 2); + //return; +} + +exec function Switch(string URL) +{ + ServerSwitch(URL); + //return; +} + +reliable server function ServerSwitch(string URL) +{ + WorldInfo.ServerTravel(URL); + //return; +} + +defaultproperties +{ + // Reference: CylinderComponent'Engine.Default__Admin.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__PlayerController.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/AdvancedReachSpec.uc b/exported/Engine/Classes/AdvancedReachSpec.uc new file mode 100755 index 00000000..15707544 --- /dev/null +++ b/exported/Engine/Classes/AdvancedReachSpec.uc @@ -0,0 +1,7 @@ +class AdvancedReachSpec extends ReachSpec + native; + +defaultproperties +{ + bCanCutCorners=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/AkBank.uc b/exported/Engine/Classes/AkBank.uc new file mode 100755 index 00000000..a124372e --- /dev/null +++ b/exported/Engine/Classes/AkBank.uc @@ -0,0 +1,12 @@ +class AkBank extends Object + native; + +var() bool AutoLoad; +var() bool GenerateDefinition; +var transient bool bIsAsyncLoading; + +defaultproperties +{ + AutoLoad=true + GenerateDefinition=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AkBaseSoundObject.uc b/exported/Engine/Classes/AkBaseSoundObject.uc new file mode 100755 index 00000000..22fe0c3c --- /dev/null +++ b/exported/Engine/Classes/AkBaseSoundObject.uc @@ -0,0 +1,3 @@ +class AkBaseSoundObject extends Object + abstract + native; diff --git a/exported/Engine/Classes/AkEvent.uc b/exported/Engine/Classes/AkEvent.uc new file mode 100755 index 00000000..df81e8a6 --- /dev/null +++ b/exported/Engine/Classes/AkEvent.uc @@ -0,0 +1,8 @@ +class AkEvent extends AkBaseSoundObject + native; + +var() AkBank RequiredBank; +var() AkEvent m_FirstPersonEvent; +var() AkEvent m_ShutdownEvent; +var() bool m_bIgnoreOcclusion; +var() bool m_bForce1pAnd3p; diff --git a/exported/Engine/Classes/AmbientOcclusionEffect.uc b/exported/Engine/Classes/AmbientOcclusionEffect.uc new file mode 100755 index 00000000..68d4f801 --- /dev/null +++ b/exported/Engine/Classes/AmbientOcclusionEffect.uc @@ -0,0 +1,54 @@ +class AmbientOcclusionEffect extends PostProcessEffect + native + hidecategories(Object); + +enum EAmbientOcclusionQuality +{ + AO_High, // 0 + AO_Medium, // 1 + AO_Low, // 2 + AO_MAX // 3 +}; + +var(Color) interp LinearColor OcclusionColor; +var(Color) float OcclusionPower; +var(Color) float OcclusionScale; +var(Color) float OcclusionBias; +var(Color) float MinOcclusion; +var deprecated bool SSAO2; +var(Occlusion) bool bAngleBasedSSAO; +var(Occlusion) float OcclusionRadius; +var deprecated float OcclusionAttenuation; +var(Occlusion) AmbientOcclusionEffect.EAmbientOcclusionQuality OcclusionQuality; +var(Occlusion) float OcclusionFadeoutMinDistance; +var(Occlusion) float OcclusionFadeoutMaxDistance; +var(Halo) float HaloDistanceThreshold; +var(Halo) float HaloDistanceScale; +var(Halo) float HaloOcclusion; +var(Filter) float EdgeDistanceThreshold; +var(Filter) float EdgeDistanceScale; +var(Filter) float FilterDistanceScale; +var deprecated int FilterSize; +var(History) float HistoryConvergenceTime; +var float HistoryWeightConvergenceTime; + +defaultproperties +{ + OcclusionColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + OcclusionPower=4.0000000 + OcclusionScale=20.0000000 + MinOcclusion=0.1000000 + OcclusionRadius=25.0000000 + OcclusionQuality=EAmbientOcclusionQuality.AO_Medium + OcclusionFadeoutMinDistance=4000.0000000 + OcclusionFadeoutMaxDistance=4500.0000000 + HaloDistanceThreshold=40.0000000 + HaloDistanceScale=0.1000000 + HaloOcclusion=0.0400000 + EdgeDistanceThreshold=10.0000000 + EdgeDistanceScale=0.0030000 + FilterDistanceScale=10.0000000 + HistoryWeightConvergenceTime=0.0700000 + bAffectsLightingOnly=true + SceneDPG=ESceneDepthPriorityGroup.SDPG_World +} \ No newline at end of file diff --git a/exported/Engine/Classes/AmbientSound.uc b/exported/Engine/Classes/AmbientSound.uc new file mode 100755 index 00000000..7094e521 --- /dev/null +++ b/exported/Engine/Classes/AmbientSound.uc @@ -0,0 +1,26 @@ +class AmbientSound extends Keypoint + native(Sound) + placeable + hidecategories(Navigation) + classgroup(Sounds) + autoexpandcategories(Audio); + +var() bool bAutoPlay; +var private bool bIsPlaying; +var(Audio) const editconst export editinline AudioComponent AudioComponent; + +defaultproperties +{ + bAutoPlay=true + // Reference: AudioComponent'Engine.Default__AmbientSound.AudioComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AudioComponent0' + begin object name="AudioComponent0" class=Engine.AudioComponent + bStopWhenOwnerDestroyed=true + bShouldRemainActiveIfDropped=true + end object + AudioComponent=AudioComponent0 + Components[0]=none + Components[1]=none + Components[2]=AudioComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AmbientSoundMovable.uc b/exported/Engine/Classes/AmbientSoundMovable.uc new file mode 100755 index 00000000..924685c2 --- /dev/null +++ b/exported/Engine/Classes/AmbientSoundMovable.uc @@ -0,0 +1,22 @@ +class AmbientSoundMovable extends AmbientSound + native(Sound) + placeable + hidecategories(Navigation) + autoexpandcategories(Audio); + +defaultproperties +{ + // Reference: AudioComponent'Engine.Default__AmbientSoundMovable.AudioComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AudioComponent0' + // Archetype: AudioComponent'Engine.Default__AmbientSound.AudioComponent0' + begin object name="AudioComponent0" + end object + AudioComponent=AudioComponent0 + Components[0]=none + Components[1]=none + Components[2]=AudioComponent0 + Physics=EPhysics.PHYS_Interpolating + TickGroup=ETickingGroup.TG_DuringAsyncWork + bStatic=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/AmbientSoundNonLoop.uc b/exported/Engine/Classes/AmbientSoundNonLoop.uc new file mode 100755 index 00000000..eaeeff87 --- /dev/null +++ b/exported/Engine/Classes/AmbientSoundNonLoop.uc @@ -0,0 +1,29 @@ +class AmbientSoundNonLoop extends AmbientSoundSimple + native(Sound) + placeable + hidecategories(Navigation,Audio) + autoexpandcategories(Audio,AmbientSoundSimple); + +defaultproperties +{ + // Reference: SoundCue'Engine.Default__AmbientSoundNonLoop.SoundCue0' + // Archetype: SoundCue'Engine.Default__AmbientSoundSimple.SoundCue0' + begin object name="SoundCue0" + end object + SoundCueInstance=SoundCue0 + // Reference: SoundNodeAmbientNonLoop'Engine.Default__AmbientSoundNonLoop.SoundNodeAmbientNonLoop0' + begin object name="SoundNodeAmbientNonLoop0" class=Engine.SoundNodeAmbientNonLoop + end object + SoundNodeInstance=SoundNodeAmbientNonLoop0 + // Reference: AudioComponent'Engine.Default__AmbientSoundNonLoop.AudioComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AudioComponent0' + // Archetype: AudioComponent'Engine.Default__AmbientSoundSimple.AudioComponent0' + begin object name="AudioComponent0" + end object + AudioComponent=AudioComponent0 + Components[0]=none + Components[1]=none + Components[2]=AudioComponent0 + DrawScale=2.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AmbientSoundNonLoopingToggleable.uc b/exported/Engine/Classes/AmbientSoundNonLoopingToggleable.uc new file mode 100755 index 00000000..0051841d --- /dev/null +++ b/exported/Engine/Classes/AmbientSoundNonLoopingToggleable.uc @@ -0,0 +1,28 @@ +class AmbientSoundNonLoopingToggleable extends AmbientSoundSimpleToggleable + native(Sound) + placeable + hidecategories(Navigation,Audio) + autoexpandcategories(Audio,AmbientSoundSimple,AmbientSoundSimpleToggleable); + +defaultproperties +{ + // Reference: SoundCue'Engine.Default__AmbientSoundNonLoopingToggleable.SoundCue0' + // Archetype: SoundCue'Engine.Default__AmbientSoundSimpleToggleable.SoundCue0' + begin object name="SoundCue0" + end object + SoundCueInstance=SoundCue0 + // Reference: SoundNodeAmbientNonLoopToggle'Engine.Default__AmbientSoundNonLoopingToggleable.SoundNodeAmbientNonLoopToggle0' + begin object name="SoundNodeAmbientNonLoopToggle0" class=Engine.SoundNodeAmbientNonLoopToggle + end object + SoundNodeInstance=SoundNodeAmbientNonLoopToggle0 + // Reference: AudioComponent'Engine.Default__AmbientSoundNonLoopingToggleable.AudioComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AudioComponent0' + // Archetype: AudioComponent'Engine.Default__AmbientSoundSimpleToggleable.AudioComponent0' + begin object name="AudioComponent0" + end object + AudioComponent=AudioComponent0 + Components[0]=none + Components[1]=none + Components[2]=AudioComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AmbientSoundSimple.uc b/exported/Engine/Classes/AmbientSoundSimple.uc new file mode 100755 index 00000000..1bab6542 --- /dev/null +++ b/exported/Engine/Classes/AmbientSoundSimple.uc @@ -0,0 +1,32 @@ +class AmbientSoundSimple extends AmbientSound + native(Sound) + placeable + hidecategories(Navigation,Audio) + autoexpandcategories(Audio,AmbientSoundSimple); + +var() editconst editinline SoundNodeAmbient AmbientProperties; +var const export editinline SoundCue SoundCueInstance; +var const export editinline SoundNodeAmbient SoundNodeInstance; + +defaultproperties +{ + // Reference: SoundCue'Engine.Default__AmbientSoundSimple.SoundCue0' + begin object name="SoundCue0" class=Engine.SoundCue + SoundClass="Ambient" + end object + SoundCueInstance=SoundCue0 + // Reference: SoundNodeAmbient'Engine.Default__AmbientSoundSimple.SoundNodeAmbient0' + begin object name="SoundNodeAmbient0" class=Engine.SoundNodeAmbient + end object + SoundNodeInstance=SoundNodeAmbient0 + // Reference: AudioComponent'Engine.Default__AmbientSoundSimple.AudioComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AudioComponent0' + // Archetype: AudioComponent'Engine.Default__AmbientSound.AudioComponent0' + begin object name="AudioComponent0" + end object + AudioComponent=AudioComponent0 + Components[0]=none + Components[1]=none + Components[2]=AudioComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AmbientSoundSimpleSpline.uc b/exported/Engine/Classes/AmbientSoundSimpleSpline.uc new file mode 100755 index 00000000..2c17df5f --- /dev/null +++ b/exported/Engine/Classes/AmbientSoundSimpleSpline.uc @@ -0,0 +1,28 @@ +class AmbientSoundSimpleSpline extends AmbientSoundSpline + native(Sound) + placeable + hidecategories(Navigation) + autoexpandcategories(Audio,AmbientSoundSpline); + +defaultproperties +{ + // Reference: SimpleSplineAudioComponent'Engine.Default__AmbientSoundSimpleSpline.AudioComponent2' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AudioComponent2' + begin object name="AudioComponent2" class=Engine.SimpleSplineAudioComponent + bStopWhenOwnerDestroyed=true + bShouldRemainActiveIfDropped=true + end object + AudioComponent=AudioComponent2 + Components[0]=none + Components[1]=none + // Reference: SplineComponentSimplified'Engine.Default__AmbientSoundSimpleSpline.SplineComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SplineComponent0' + // Archetype: SplineComponentSimplified'Engine.Default__AmbientSoundSpline.SplineComponent0' + begin object name="SplineComponent0" + ReplacementPrimitive=none + end object + Components[2]=SplineComponent0 + Components[3]=AudioComponent2 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AmbientSoundSimpleSplineNonLoop.uc b/exported/Engine/Classes/AmbientSoundSimpleSplineNonLoop.uc new file mode 100755 index 00000000..ef66ff27 --- /dev/null +++ b/exported/Engine/Classes/AmbientSoundSimpleSplineNonLoop.uc @@ -0,0 +1,27 @@ +class AmbientSoundSimpleSplineNonLoop extends AmbientSoundSimpleSpline + placeable + hidecategories(Navigation) + autoexpandcategories(Audio,AmbientSoundSpline); + +defaultproperties +{ + // Reference: SimpleSplineNonLoopAudioComponent'Engine.Default__AmbientSoundSimpleSplineNonLoop.AudioComponent3' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AudioComponent3' + begin object name="AudioComponent3" class=Engine.SimpleSplineNonLoopAudioComponent + bStopWhenOwnerDestroyed=true + bShouldRemainActiveIfDropped=true + end object + AudioComponent=AudioComponent3 + Components[0]=none + Components[1]=none + // Reference: SplineComponentSimplified'Engine.Default__AmbientSoundSimpleSplineNonLoop.SplineComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SplineComponent0' + // Archetype: SplineComponentSimplified'Engine.Default__AmbientSoundSimpleSpline.SplineComponent0' + begin object name="SplineComponent0" + ReplacementPrimitive=none + end object + Components[2]=SplineComponent0 + Components[3]=AudioComponent3 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AmbientSoundSimpleToggleable.uc b/exported/Engine/Classes/AmbientSoundSimpleToggleable.uc new file mode 100755 index 00000000..5b518399 --- /dev/null +++ b/exported/Engine/Classes/AmbientSoundSimpleToggleable.uc @@ -0,0 +1,156 @@ +class AmbientSoundSimpleToggleable extends AmbientSoundSimple + native(Sound) + placeable + hidecategories(Navigation,Audio) + autoexpandcategories(Audio,AmbientSoundSimple,AmbientSoundSimpleToggleable); + +struct CheckpointRecord +{ + var bool bCurrentlyPlaying; + + structdefaultproperties + { + bCurrentlyPlaying=false + } +}; + +var repnotify bool bCurrentlyPlaying; +var() bool bFadeOnToggle; +var transient bool bIgnoreAutoPlay; +var() float FadeInDuration; +var() float FadeInVolumeLevel; +var() float FadeOutDuration; +var() float FadeOutVolumeLevel; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + bCurrentlyPlaying; +} + +simulated event PostBeginPlay() +{ + super(Actor).PostBeginPlay(); + bCurrentlyPlaying = AudioComponent.bAutoPlay; + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x3E + if(VarName == 'bCurrentlyPlaying') + { + // End:0x31 + if(bCurrentlyPlaying) + { + StartPlaying(); + } + else + { + StopPlaying(); + } + } + else + { + super(Actor).ReplicatedEvent(VarName); + } + //return; +} + +simulated function StartPlaying() +{ + // End:0x41 + if(bFadeOnToggle) + { + AudioComponent.FadeIn(FadeInDuration, FadeInVolumeLevel); + } + else + { + AudioComponent.Play(); + } + bCurrentlyPlaying = true; + //return; +} + +simulated function StopPlaying() +{ + // End:0x42 + if(bFadeOnToggle) + { + AudioComponent.FadeOut(FadeOutDuration, FadeOutVolumeLevel); + } + else + { + AudioComponent.Stop(); + } + bCurrentlyPlaying = false; + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0xA4 + if(Action.InputLinks[0].bHasImpulse || Action.InputLinks[2].bHasImpulse && !AudioComponent.bWasPlaying) + { + StartPlaying(); + } + else + { + bIgnoreAutoPlay = true; + StopPlaying(); + } + ForceNetRelevant(); + //return; +} + +function CreateCheckpointRecord(out CheckpointRecord Record) +{ + Record.bCurrentlyPlaying = bCurrentlyPlaying; + //return; +} + +function ApplyCheckpointRecord(const out CheckpointRecord Record) +{ + bCurrentlyPlaying = Record.bCurrentlyPlaying; + // End:0x42 + if(bCurrentlyPlaying) + { + StartPlaying(); + } + else + { + StopPlaying(); + } + //return; +} + +defaultproperties +{ + FadeInDuration=1.0000000 + FadeInVolumeLevel=1.0000000 + FadeOutDuration=1.0000000 + // Reference: SoundCue'Engine.Default__AmbientSoundSimpleToggleable.SoundCue0' + // Archetype: SoundCue'Engine.Default__AmbientSoundSimple.SoundCue0' + begin object name="SoundCue0" + end object + SoundCueInstance=SoundCue0 + // Reference: SoundNodeAmbient'Engine.Default__AmbientSoundSimpleToggleable.SoundNodeAmbient0' + // Archetype: SoundNodeAmbient'Engine.Default__AmbientSoundSimple.SoundNodeAmbient0' + begin object name="SoundNodeAmbient0" + end object + SoundNodeInstance=SoundNodeAmbient0 + bAutoPlay=false + // Reference: AudioComponent'Engine.Default__AmbientSoundSimpleToggleable.AudioComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AudioComponent0' + // Archetype: AudioComponent'Engine.Default__AmbientSoundSimple.AudioComponent0' + begin object name="AudioComponent0" + end object + AudioComponent=AudioComponent0 + Components[0]=none + Components[1]=none + Components[2]=AudioComponent0 + bStatic=false + bNoDelete=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AmbientSoundSpline.uc b/exported/Engine/Classes/AmbientSoundSpline.uc new file mode 100755 index 00000000..b6aadee1 --- /dev/null +++ b/exported/Engine/Classes/AmbientSoundSpline.uc @@ -0,0 +1,27 @@ +class AmbientSoundSpline extends AmbientSound + native(Sound) + placeable + hidecategories(Navigation) + autoexpandcategories(Audio,AmbientSoundSpline); + +defaultproperties +{ + // Reference: SplineAudioComponent'Engine.Default__AmbientSoundSpline.AudioComponent1' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AudioComponent1' + begin object name="AudioComponent1" class=Engine.SplineAudioComponent + bStopWhenOwnerDestroyed=true + bShouldRemainActiveIfDropped=true + end object + AudioComponent=AudioComponent1 + Components[0]=none + Components[1]=none + // Reference: SplineComponentSimplified'Engine.Default__AmbientSoundSpline.SplineComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SplineComponent0' + begin object name="SplineComponent0" class=Engine.SplineComponentSimplified + ReplacementPrimitive=none + end object + Components[2]=SplineComponent0 + Components[3]=AudioComponent1 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AmbientSoundSplineMultiCue.uc b/exported/Engine/Classes/AmbientSoundSplineMultiCue.uc new file mode 100755 index 00000000..6dc7d479 --- /dev/null +++ b/exported/Engine/Classes/AmbientSoundSplineMultiCue.uc @@ -0,0 +1,28 @@ +class AmbientSoundSplineMultiCue extends AmbientSoundSpline + native(Sound) + placeable + hidecategories(Navigation) + autoexpandcategories(Audio,AmbientSoundSpline); + +defaultproperties +{ + // Reference: MultiCueSplineAudioComponent'Engine.Default__AmbientSoundSplineMultiCue.AudioComponent2' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AudioComponent2' + begin object name="AudioComponent2" class=Engine.MultiCueSplineAudioComponent + bStopWhenOwnerDestroyed=true + bShouldRemainActiveIfDropped=true + end object + AudioComponent=AudioComponent2 + Components[0]=none + Components[1]=none + // Reference: SplineComponentSimplified'Engine.Default__AmbientSoundSplineMultiCue.SplineComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SplineComponent0' + // Archetype: SplineComponentSimplified'Engine.Default__AmbientSoundSpline.SplineComponent0' + begin object name="SplineComponent0" + ReplacementPrimitive=none + end object + Components[2]=SplineComponent0 + Components[3]=AudioComponent2 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnalyticEventsBase.uc b/exported/Engine/Classes/AnalyticEventsBase.uc new file mode 100755 index 00000000..97f30306 --- /dev/null +++ b/exported/Engine/Classes/AnalyticEventsBase.uc @@ -0,0 +1,78 @@ +class AnalyticEventsBase extends PlatformInterfaceBase + transient + native(PlatformInterface) + config(Engine); + +struct native EventStringParam +{ + var string ParamName; + var string ParamValue; + + structdefaultproperties + { + ParamName="" + ParamValue="" + } +}; + +var const bool bSessionInProgress; +var config bool bAutoStartSession; +var config int SessionPauseThresholdSec; +var const string UserId; + +function bool IsSessionInProgress() +{ + return bSessionInProgress; + //return ReturnValue; +} + +// Export UAnalyticEventsBase::execInit(FFrame&, void* const) +native event Init(); + +// Export UAnalyticEventsBase::execSetUserId(FFrame&, void* const) +native event SetUserId(string NewUserId); + +// Export UAnalyticEventsBase::execStartSession(FFrame&, void* const) +native event StartSession(); + +// Export UAnalyticEventsBase::execEndSession(FFrame&, void* const) +native event EndSession(); + +// Export UAnalyticEventsBase::execLogStringEvent(FFrame&, void* const) +native event LogStringEvent(string EventName, bool bTimed); + +// Export UAnalyticEventsBase::execEndStringEvent(FFrame&, void* const) +native event EndStringEvent(string EventName); + +// Export UAnalyticEventsBase::execLogStringEventParam(FFrame&, void* const) +native event LogStringEventParam(string EventName, string ParamName, string ParamValue, bool bTimed); + +// Export UAnalyticEventsBase::execEndStringEventParam(FFrame&, void* const) +native event EndStringEventParam(string EventName, string ParamName, string ParamValue); + +// Export UAnalyticEventsBase::execLogStringEventParamArray(FFrame&, void* const) +native event LogStringEventParamArray(string EventName, array ParamArray, bool bTimed); + +// Export UAnalyticEventsBase::execEndStringEventParamArray(FFrame&, void* const) +native event EndStringEventParamArray(string EventName, array ParamArray); + +// Export UAnalyticEventsBase::execLogErrorMessage(FFrame&, void* const) +native event LogErrorMessage(string ErrorName, string ErrorMessage); + +// Export UAnalyticEventsBase::execLogUserAttributeUpdate(FFrame&, void* const) +native event LogUserAttributeUpdate(string AttributeName, string AttributeValue); + +// Export UAnalyticEventsBase::execLogUserAttributeUpdateArray(FFrame&, void* const) +native event LogUserAttributeUpdateArray(array AttributeArray); + +// Export UAnalyticEventsBase::execLogItemPurchaseEvent(FFrame&, void* const) +native event LogItemPurchaseEvent(string ItemId, string Currency, int PerItemCost, int ItemQuantity); + +// Export UAnalyticEventsBase::execLogCurrencyPurchaseEvent(FFrame&, void* const) +native event LogCurrencyPurchaseEvent(string GameCurrencyType, int GameCurrencyAmount, string RealCurrencyType, float RealMoneyCost, string PaymentProvider); + +// Export UAnalyticEventsBase::execLogCurrencyGivenEvent(FFrame&, void* const) +native event LogCurrencyGivenEvent(string GameCurrencyType, int GameCurrencyAmount); + +// Export UAnalyticEventsBase::execSendCachedEvents(FFrame&, void* const) +native event SendCachedEvents(); diff --git a/exported/Engine/Classes/AnimMetaData.uc b/exported/Engine/Classes/AnimMetaData.uc new file mode 100755 index 00000000..4f641d69 --- /dev/null +++ b/exported/Engine/Classes/AnimMetaData.uc @@ -0,0 +1,6 @@ +class AnimMetaData extends Object + abstract + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); diff --git a/exported/Engine/Classes/AnimMetaData_SkelControl.uc b/exported/Engine/Classes/AnimMetaData_SkelControl.uc new file mode 100755 index 00000000..afd3bdeb --- /dev/null +++ b/exported/Engine/Classes/AnimMetaData_SkelControl.uc @@ -0,0 +1,14 @@ +class AnimMetaData_SkelControl extends AnimMetaData + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() array SkelControlNameList; +var() bool bFullControlOverController; +var deprecated name SkelControlName; + +defaultproperties +{ + bFullControlOverController=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimMetaData_SkelControlKeyFrame.uc b/exported/Engine/Classes/AnimMetaData_SkelControlKeyFrame.uc new file mode 100755 index 00000000..c052f4f9 --- /dev/null +++ b/exported/Engine/Classes/AnimMetaData_SkelControlKeyFrame.uc @@ -0,0 +1,14 @@ +class AnimMetaData_SkelControlKeyFrame extends AnimMetaData_SkelControl + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() editinline array KeyFrames; +var() bool bForceFirstKeyFrameOnBecomeRelevant; +var() bool bForceLastKeyFrameOnCeaseRelevant; + +defaultproperties +{ + bFullControlOverController=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNode.uc b/exported/Engine/Classes/AnimNode.uc new file mode 100755 index 00000000..c9d84031 --- /dev/null +++ b/exported/Engine/Classes/AnimNode.uc @@ -0,0 +1,83 @@ +class AnimNode extends AnimObject + abstract + native(Anim) + hidecategories(Object,Object); + +enum ESliderType +{ + ST_1D, // 0 + ST_2D, // 1 + ST_MAX // 2 +}; + +struct CurveKey +{ + var name CurveName; + var float Weight; + + structdefaultproperties + { + CurveName="None" + Weight=0.0000000 + } +}; + +var const transient bool bRelevant; +var const transient bool bJustBecameRelevant; +var(Performance) bool bTickDuringPausedAnims; +var const bool bEditorOnly; +var const transient bool bDisableCaching; +var() bool bCallScriptEventOnInit; +var() bool bCallScriptEventOnBecomeRelevant; +var() bool bCallScriptEventOnCeaseRelevant; +var const transient int NodeTickTag; +var const transient int PostBoneUpdateNodeTickTag; +var const transient int NodeInitTag; +var const transient int NodeEndEventTick; +var const int TickArrayIndex; +var const transient int NodeCachedAtomsTag; +var const float NodeTotalWeight; +var duplicatetransient array ParentNodes; +var() name NodeName; +var transient array CachedBoneAtoms; +var transient byte CachedNumDesiredBones; +var transient BoneAtom CachedRootMotionDelta; +var transient int bCachedHasRootMotion; +var transient array CachedCurveKeys; +var transient int SearchTag; +var() Color m_LabelColor; + +event OnInit() +{ + //return; +} + +event OnBecomeRelevant() +{ + //return; +} + +event OnCeaseRelevant() +{ + //return; +} + +// Export UAnimNode::execFindAnimNode(FFrame&, void* const) +native final function AnimNode FindAnimNode(name InNodeName); + +// Export UAnimNode::execGetNodesByClassWrapper(FFrame&, void* const) +native final function GetNodesByClassWrapper(out array Nodes, Class BaseClass); + +// Export UAnimNode::execPlayAnim(FFrame&, void* const) +native function PlayAnim(optional bool bLoop = false, optional float Rate = 1.0000000, optional float StartTime = 0.0000000); + +// Export UAnimNode::execStopAnim(FFrame&, void* const) +native function StopAnim(); + +// Export UAnimNode::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); + +defaultproperties +{ + m_LabelColor=(R=112,G=112,B=112,A=255) +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeAdditiveBlending.uc b/exported/Engine/Classes/AnimNodeAdditiveBlending.uc new file mode 100755 index 00000000..ce4d098f --- /dev/null +++ b/exported/Engine/Classes/AnimNodeAdditiveBlending.uc @@ -0,0 +1,17 @@ +class AnimNodeAdditiveBlending extends AnimNodeBlend + native(Anim) + hidecategories(Object,Object,Object,Object); + +var(Performance) bool bPassThroughWhenNotRendered; + +// Export UAnimNodeAdditiveBlending::execSetBlendTarget(FFrame&, void* const) +native function SetBlendTarget(float BlendTarget, float BlendTime); + +defaultproperties +{ + bPassThroughWhenNotRendered=true + Child2Weight=1.0000000 + Child2WeightTarget=1.0000000 + Children[0]=(Name="Base Anim Input",Anim=none,Weight=1.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[1]=(Name="Additive Anim Input",Anim=none,Weight=1.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeAimOffset.uc b/exported/Engine/Classes/AnimNodeAimOffset.uc new file mode 100755 index 00000000..bd7f4c2c --- /dev/null +++ b/exported/Engine/Classes/AnimNodeAimOffset.uc @@ -0,0 +1,142 @@ +class AnimNodeAimOffset extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EAnimAimDir +{ + ANIMAIM_LEFTUP, // 0 + ANIMAIM_CENTERUP, // 1 + ANIMAIM_RIGHTUP, // 2 + ANIMAIM_LEFTCENTER, // 3 + ANIMAIM_CENTERCENTER, // 4 + ANIMAIM_RIGHTCENTER, // 5 + ANIMAIM_LEFTDOWN, // 6 + ANIMAIM_CENTERDOWN, // 7 + ANIMAIM_RIGHTDOWN, // 8 + ANIMAIM_MAX // 9 +}; + +enum EAimID +{ + EAID_LeftUp, // 0 + EAID_LeftDown, // 1 + EAID_RightUp, // 2 + EAID_RightDown, // 3 + EAID_ZeroUp, // 4 + EAID_ZeroDown, // 5 + EAID_ZeroLeft, // 6 + EAID_ZeroRight, // 7 + EAID_CellLU, // 8 + EAID_CellCU, // 9 + EAID_CellRU, // 10 + EAID_CellLC, // 11 + EAID_CellCC, // 12 + EAID_CellRC, // 13 + EAID_CellLD, // 14 + EAID_CellCD, // 15 + EAID_CellRD, // 16 + EAID_MAX // 17 +}; + +struct native atomicwhencooked immutablewhencooked AimTransform +{ + var() Quat Quaternion; + var() Vector Translation; + + structdefaultproperties + { + Quaternion=(X=0.0000000,Y=0.0000000,Z=0.0000000,W=0.0000000) + Translation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct native atomicwhencooked immutablewhencooked AimComponent +{ + var() name BoneName; + var() AimTransform LU; + var() AimTransform LC; + var() AimTransform LD; + var() AimTransform CU; + var() AimTransform CC; + var() AimTransform CD; + var() AimTransform RU; + var() AimTransform RC; + var() AimTransform RD; + + structdefaultproperties + { + BoneName="None" + LU=/* ERROR: System.ArgumentException */ + LC=/* ERROR: System.ArgumentException */ + LD=/* ERROR: System.ArgumentException */ + CU=/* ERROR: System.ArgumentException */ + CC=/* ERROR: System.ArgumentException */ + CD=/* ERROR: System.ArgumentException */ + RU=/* ERROR: System.ArgumentException */ + RC=/* ERROR: System.ArgumentException */ + RD=/* ERROR: System.IO.EndOfStreamException */ + } +}; + +struct native atomicwhencooked immutablewhencooked AimOffsetProfile +{ + var() const editconst name ProfileName; + var() Vector2D HorizontalRange; + var() Vector2D VerticalRange; + var array AimComponents; + var() name AnimName_LU; + var() name AnimName_LC; + var() name AnimName_LD; + var() name AnimName_CU; + var() name AnimName_CC; + var() name AnimName_CD; + var() name AnimName_RU; + var() name AnimName_RC; + var() name AnimName_RD; + + structdefaultproperties + { + ProfileName="Default" + HorizontalRange=(X=-1.0000000,Y=1.0000000) + VerticalRange=(X=-1.0000000,Y=1.0000000) + AimComponents=none + AnimName_LU="None" + AnimName_LC="None" + AnimName_LD="None" + AnimName_CU="None" + AnimName_CC="None" + AnimName_CD="None" + AnimName_RU="None" + AnimName_RC="None" + AnimName_RD="None" + } +}; + +var() Vector2D Aim; +var() Vector2D AngleOffset; +var() bool bForceAimDir; +var() bool bBakeFromAnimations; +var(Performance) bool bPassThroughWhenNotRendered; +var(Editor) bool bSynchronizeNodesInEditor; +var(Performance) int PassThroughAtOrAboveLOD; +var() AnimNodeAimOffset.EAnimAimDir ForcedAimDir; +var transient array RequiredBones; +var transient array AimCpntIndexLUT; +var transient AnimNodeAimOffset TemplateNode; +var() editfixedsize array Profiles; +var() const editconst int CurrentProfileIndex; + +// Export UAnimNodeAimOffset::execSetActiveProfileByName(FFrame&, void* const) +native function SetActiveProfileByName(name ProfileName); + +// Export UAnimNodeAimOffset::execSetActiveProfileByIndex(FFrame&, void* const) +native function SetActiveProfileByIndex(int ProfileIndex); + +defaultproperties +{ + bSynchronizeNodesInEditor=true + PassThroughAtOrAboveLOD=1000 + ForcedAimDir=EAnimAimDir.ANIMAIM_CENTERCENTER + Children[0]=(Name="Input",Anim=none,Weight=1.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeBlend.uc b/exported/Engine/Classes/AnimNodeBlend.uc new file mode 100755 index 00000000..e86b7517 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeBlend.uc @@ -0,0 +1,19 @@ +class AnimNodeBlend extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object,Object); + +var float Child2Weight; +var float Child2WeightTarget; +var float BlendTimeToGo; +var() bool bSkipBlendWhenNotRendered; + +// Export UAnimNodeBlend::execSetBlendTarget(FFrame&, void* const) +native function SetBlendTarget(float BlendTarget, float BlendTime); + +defaultproperties +{ + bSkipBlendWhenNotRendered=true + Children[0]=(Name="Child1",Anim=none,Weight=1.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[1]=(Name="Child2",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeBlendBase.uc b/exported/Engine/Classes/AnimNodeBlendBase.uc new file mode 100755 index 00000000..c49c4808 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeBlendBase.uc @@ -0,0 +1,52 @@ +class AnimNodeBlendBase extends AnimNode + abstract + native(Anim) + hidecategories(Object,Object,Object); + +struct native AnimBlendChild +{ + var() name Name; + var export editinline AnimNode Anim; + var float Weight; + var const transient float BlendWeight; + var bool bMirrorSkeleton; + var bool bIsAdditive; + + structdefaultproperties + { + Name="None" + Anim=none + Weight=0.0000000 + BlendWeight=0.0000000 + bMirrorSkeleton=false + bIsAdditive=false + } +}; + +struct native AnimationEndInformation +{ + var init array TreeBranchToLeaf; + var float PlayedTime; + var float ExcessTime; + + structdefaultproperties + { + TreeBranchToLeaf=none + PlayedTime=0.0000000 + ExcessTime=0.0000000 + } +}; + +var editfixedsize export editinline array Children; +var bool bFixNumChildren; +var() bool m_bForceChildToLoop; +var() Object.AlphaBlendType BlendType; + +// Export UAnimNodeBlendBase::execPlayAnim(FFrame&, void* const) +native function PlayAnim(optional bool bLoop = false, optional float Rate = 1.0000000, optional float StartTime = 0.0000000); + +// Export UAnimNodeBlendBase::execStopAnim(FFrame&, void* const) +native function StopAnim(); + +// Export UAnimNodeBlendBase::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); diff --git a/exported/Engine/Classes/AnimNodeBlendByBase.uc b/exported/Engine/Classes/AnimNodeBlendByBase.uc new file mode 100755 index 00000000..86e1ea32 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeBlendByBase.uc @@ -0,0 +1,24 @@ +class AnimNodeBlendByBase extends AnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EBaseBlendType +{ + BBT_ByActorTag, // 0 + BBT_ByActorClass, // 1 + BBT_MAX // 2 +}; + +var() AnimNodeBlendByBase.EBaseBlendType Type; +var() name ActorTag; +var() Class ActorClass; +var() float BlendTime; +var transient Actor CachedBase; + +defaultproperties +{ + BlendTime=0.2000000 + Children[0]=(Name="Normal",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[1]=(Name="Based",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeBlendByPhysics.uc b/exported/Engine/Classes/AnimNodeBlendByPhysics.uc new file mode 100755 index 00000000..4149d355 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeBlendByPhysics.uc @@ -0,0 +1,25 @@ +class AnimNodeBlendByPhysics extends AnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +defaultproperties +{ + Children[0]=(Name="PHYS_None",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[1]=(Name="PHYS_Walking",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[2]=(Name="PHYS_Falling",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[3]=(Name="PHYS_Swimming",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[4]=(Name="PHYS_Flying",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[5]=(Name="PHYS_Rotating",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[6]=(Name="PHYS_Projectile",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[7]=(Name="PHYS_Interpolating",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[8]=(Name="PHYS_Spider",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[9]=(Name="PHYS_Ladder",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[10]=(Name="PHYS_RigidBody",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[11]=(Name="PHYS_SoftBody",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[12]=(Name="PHYS_NavMeshWalking",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[13]=(Name="PHYS_Suspended",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[14]=(Name="PHYS_Custom",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[15]=(Name="PHYS_Tweening",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[16]=(Name="PHYS_Charging",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeBlendByPosture.uc b/exported/Engine/Classes/AnimNodeBlendByPosture.uc new file mode 100755 index 00000000..623b9cea --- /dev/null +++ b/exported/Engine/Classes/AnimNodeBlendByPosture.uc @@ -0,0 +1,9 @@ +class AnimNodeBlendByPosture extends AnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +defaultproperties +{ + Children[0]=(Name="Standing",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[1]=(Name="Crouched",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeBlendByProperty.uc b/exported/Engine/Classes/AnimNodeBlendByProperty.uc new file mode 100755 index 00000000..97f222ed --- /dev/null +++ b/exported/Engine/Classes/AnimNodeBlendByProperty.uc @@ -0,0 +1,31 @@ +class AnimNodeBlendByProperty extends AnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() name PropertyName; +var() bool bUseOwnersBase; +var const transient bool bForceUpdate; +var() bool bUseSpecificBlendTimes; +var(Editor) bool bSynchronizeNodesInEditor; +var transient name CachedPropertyName; +var native const transient Pointer CachedFloatProperty; +var native const transient Pointer CachedBoolProperty; +var native const transient Pointer CachedByteProperty; +var transient Actor CachedOwner; +var() float BlendTime; +var() float FloatPropMin; +var() float FloatPropMax; +var() float BlendToChild1Time; +var() float BlendToChild2Time; + +defaultproperties +{ + bSynchronizeNodesInEditor=true + BlendTime=0.1000000 + FloatPropMax=1.0000000 + BlendToChild1Time=0.1000000 + BlendToChild2Time=0.1000000 + bForceChildFullWeightWhenBecomingRelevant=false + Children[0]=(Name="Child1",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[1]=(Name="Child2",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeBlendBySpeed.uc b/exported/Engine/Classes/AnimNodeBlendBySpeed.uc new file mode 100755 index 00000000..bf9f8a8e --- /dev/null +++ b/exported/Engine/Classes/AnimNodeBlendBySpeed.uc @@ -0,0 +1,25 @@ +class AnimNodeBlendBySpeed extends AnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var float Speed; +var int LastChannel; +var() float BlendUpTime; +var() float BlendDownTime; +var() float BlendDownPerc; +var() array Constraints; +var() bool bUseAcceleration; +var() float BlendUpDelay; +var() float BlendDownDelay; +var transient float BlendDelayRemaining; + +defaultproperties +{ + BlendUpTime=0.1000000 + BlendDownTime=0.1000000 + BlendDownPerc=0.2000000 + Constraints[0]=0.0000000 + Constraints[1]=180.0000000 + Constraints[2]=350.0000000 + Constraints[3]=900.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeBlendDirectional.uc b/exported/Engine/Classes/AnimNodeBlendDirectional.uc new file mode 100755 index 00000000..04accf85 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeBlendDirectional.uc @@ -0,0 +1,20 @@ +class AnimNodeBlendDirectional extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() float DirDegreesPerSecond; +var float DirAngle; +var() int SingleAnimAtOrAboveLOD; +var Rotator RotationOffset; +var() bool bUseAcceleration; + +defaultproperties +{ + DirDegreesPerSecond=360.0000000 + SingleAnimAtOrAboveLOD=1000 + Children[0]=(Name="Forward",Anim=none,Weight=1.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[1]=(Name="Backward",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[2]=(Name="Left",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[3]=(Name="Right",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeBlendList.uc b/exported/Engine/Classes/AnimNodeBlendList.uc new file mode 100755 index 00000000..e276533b --- /dev/null +++ b/exported/Engine/Classes/AnimNodeBlendList.uc @@ -0,0 +1,22 @@ +class AnimNodeBlendList extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object,Object); + +var array TargetWeight; +var float BlendTimeToGo; +var int ActiveChildIndex; +var() bool bPlayActiveChild; +var(Performance) bool bForceChildFullWeightWhenBecomingRelevant; +var(Performance) bool bSkipBlendWhenNotRendered; +var() array PlayActiveChildExceptionList; +var const float SliderPosition; + +// Export UAnimNodeBlendList::execSetActiveChild(FFrame&, void* const) +native function SetActiveChild(int ChildIndex, float BlendTime); + +defaultproperties +{ + bForceChildFullWeightWhenBecomingRelevant=true + bSkipBlendWhenNotRendered=true + Children[0]=(Name="Child1",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeBlendMultiBone.uc b/exported/Engine/Classes/AnimNodeBlendMultiBone.uc new file mode 100755 index 00000000..c9a809f8 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeBlendMultiBone.uc @@ -0,0 +1,35 @@ +class AnimNodeBlendMultiBone extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native ChildBoneBlendInfo +{ + var array TargetPerBoneWeight; + var() name InitTargetStartBone; + var() float InitPerBoneIncrease; + var const name OldStartBone; + var const float OldBoneIncrease; + var transient array TargetRequiredBones; + + structdefaultproperties + { + TargetPerBoneWeight=none + InitTargetStartBone="None" + InitPerBoneIncrease=1.0000000 + OldStartBone="None" + OldBoneIncrease=0.0000000 + TargetRequiredBones=none + } +}; + +var() array BlendTargetList; +var transient array SourceRequiredBones; + +// Export UAnimNodeBlendMultiBone::execSetTargetStartBone(FFrame&, void* const) +native final function SetTargetStartBone(int TargetIdx, name StartBoneName, optional float PerBoneIncrease); + +defaultproperties +{ + Children[0]=(Name="Source",Anim=none,Weight=1.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[1]=(Name="Target",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeBlendPerBone.uc b/exported/Engine/Classes/AnimNodeBlendPerBone.uc new file mode 100755 index 00000000..bc7aa16b --- /dev/null +++ b/exported/Engine/Classes/AnimNodeBlendPerBone.uc @@ -0,0 +1,17 @@ +class AnimNodeBlendPerBone extends AnimNodeBlend + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() const bool bForceLocalSpaceBlend; +var() array BranchStartBoneName; +var array Child2PerBoneWeight; +var array LocalToCompReqBones; + +// Export UAnimNodeBlendPerBone::execSetBlendTarget(FFrame&, void* const) +native function SetBlendTarget(float BlendTarget, float BlendTime); + +defaultproperties +{ + Children[0]=(Name="Source",Anim=none,Weight=1.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[1]=(Name="Target",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeCrossfader.uc b/exported/Engine/Classes/AnimNodeCrossfader.uc new file mode 100755 index 00000000..fd8ab966 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeCrossfader.uc @@ -0,0 +1,19 @@ +class AnimNodeCrossfader extends AnimNodeBlend + native(Anim) + hidecategories(Object,Object,Object,Object,Object); + +var() name DefaultAnimSeqName; +var const bool bDontBlendOutOneShot; +var const float PendingBlendOutTimeOneShot; + +// Export UAnimNodeCrossfader::execPlayOneShotAnim(FFrame&, void* const) +native final function PlayOneShotAnim(name AnimSeqName, optional float BlendInTime, optional float BlendOutTime, optional bool bDontBlendOut, optional float Rate); + +// Export UAnimNodeCrossfader::execBlendToLoopingAnim(FFrame&, void* const) +native final function BlendToLoopingAnim(name AnimSeqName, optional float BlendInTime, optional float Rate); + +// Export UAnimNodeCrossfader::execGetAnimName(FFrame&, void* const) +native final function name GetAnimName(); + +// Export UAnimNodeCrossfader::execGetActiveChild(FFrame&, void* const) +native final function AnimNodeSequence GetActiveChild(); diff --git a/exported/Engine/Classes/AnimNodeFrame.uc b/exported/Engine/Classes/AnimNodeFrame.uc new file mode 100755 index 00000000..bdab2ba9 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeFrame.uc @@ -0,0 +1,23 @@ +class AnimNodeFrame extends AnimObject + native(Anim) + hidecategories(Object); + +var() int SizeX; +var() int SizeY; +var() int BorderWidth; +var() bool bDrawBox; +var() bool bFilled; +var() bool bTileFill; +var() Color BorderColor; +var() Color FillColor; + +defaultproperties +{ + SizeX=128 + SizeY=64 + BorderWidth=1 + bDrawBox=true + bFilled=true + BorderColor=(R=0,G=0,B=0,A=255) + FillColor=(R=255,G=255,B=255,A=16) +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeMirror.uc b/exported/Engine/Classes/AnimNodeMirror.uc new file mode 100755 index 00000000..e878c3a8 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeMirror.uc @@ -0,0 +1,12 @@ +class AnimNodeMirror extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() bool bEnableMirroring; + +defaultproperties +{ + bEnableMirroring=true + Children[0]=(Name="Child",Anim=none,Weight=1.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodePlayCustomAnim.uc b/exported/Engine/Classes/AnimNodePlayCustomAnim.uc new file mode 100755 index 00000000..518c8c92 --- /dev/null +++ b/exported/Engine/Classes/AnimNodePlayCustomAnim.uc @@ -0,0 +1,80 @@ +class AnimNodePlayCustomAnim extends AnimNodeBlend + native(Anim) + hidecategories(Object,Object,Object,Object); + +var bool bIsPlayingCustomAnim; +var float CustomPendingBlendOutTime; + +// Export UAnimNodePlayCustomAnim::execPlayCustomAnim(FFrame&, void* const) +native final function float PlayCustomAnim(name AnimName, float Rate, optional float BlendInTime, optional float BlendOutTime, optional bool bLooping, optional bool bOverride); + +// Export UAnimNodePlayCustomAnim::execPlayCustomAnimByDuration(FFrame&, void* const) +native final function PlayCustomAnimByDuration(name AnimName, float Duration, optional float BlendInTime, optional float BlendOutTime, optional bool bLooping, optional bool bOverride); + +// Export UAnimNodePlayCustomAnim::execStopCustomAnim(FFrame&, void* const) +native final function StopCustomAnim(float BlendOutTime); + +final function SetCustomAnim(name AnimName) +{ + local AnimNodeSequence SeqNode; + + SeqNode = AnimNodeSequence(Children[1].Anim); + // End:0x68 + if(SeqNode != none) + { + SeqNode.SetAnim(AnimName); + } + //return; +} + +final function SetActorAnimEndNotification(bool bNewStatus) +{ + local AnimNodeSequence SeqNode; + + SeqNode = AnimNodeSequence(Children[1].Anim); + // End:0x6A + if(SeqNode != none) + { + SeqNode.bCauseActorAnimEnd = bNewStatus; + } + //return; +} + +final function AnimNodeSequence GetCustomAnimNodeSeq() +{ + return AnimNodeSequence(Children[1].Anim); + //return ReturnValue; +} + +final function SetRootBoneAxisOption(optional AnimNodeSequence.ERootBoneAxis AxisX = 0, optional AnimNodeSequence.ERootBoneAxis AxisY = 0, optional AnimNodeSequence.ERootBoneAxis AxisZ = 0) +{ + local AnimNodeSequence AnimSeq; + + AnimSeq = GetCustomAnimNodeSeq(); + // End:0x72 + if(AnimSeq != none) + { + AnimSeq.super(AnimNodePlayCustomAnim).SetRootBoneAxisOption(AxisX, AxisY, AxisZ); + } + //return; +} + +function SetPlayRate(float fPlayRate) +{ + local AnimNodeSequence SeqNode; + + SeqNode = AnimNodeSequence(Children[1].Anim); + // End:0x68 + if(SeqNode != none) + { + SeqNode.Rate = fPlayRate; + } + //return; +} + +defaultproperties +{ + Children[0]=(Name="Normal",Anim=none,Weight=1.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[1]=(Name="Custom",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + NodeName="CustomAnim" +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeRandom.uc b/exported/Engine/Classes/AnimNodeRandom.uc new file mode 100755 index 00000000..0fdc70c7 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeRandom.uc @@ -0,0 +1,38 @@ +class AnimNodeRandom extends AnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object,Object); + +struct native RandomAnimInfo +{ + var() float Chance; + var() byte LoopCountMin; + var() byte LoopCountMax; + var() float BlendInTime; + var() Vector2D PlayRateRange; + var() bool bStillFrame; + var transient byte LoopCount; + var transient float LastPosition; + + structdefaultproperties + { + Chance=1.0000000 + LoopCountMin=0 + LoopCountMax=0 + BlendInTime=0.2500000 + PlayRateRange=(X=1.0000000,Y=1.0000000) + bStillFrame=false + LoopCount=0 + LastPosition=0.0000000 + } +}; + +var() editfixedsize editinline array RandomInfo; +var transient AnimNodeSequence PlayingSeqNode; +var transient int PendingChildIndex; +var transient bool bPickedPendingChildIndex; + +defaultproperties +{ + PendingChildIndex=-1 + ActiveChildIndex=-1 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeScalePlayRate.uc b/exported/Engine/Classes/AnimNodeScalePlayRate.uc new file mode 100755 index 00000000..97b7457e --- /dev/null +++ b/exported/Engine/Classes/AnimNodeScalePlayRate.uc @@ -0,0 +1,12 @@ +class AnimNodeScalePlayRate extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() float ScaleByValue; + +defaultproperties +{ + ScaleByValue=1.0000000 + Children[0]=(Name="Input",Anim=none,Weight=1.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeScaleRateBySpeed.uc b/exported/Engine/Classes/AnimNodeScaleRateBySpeed.uc new file mode 100755 index 00000000..a47a2bb4 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeScaleRateBySpeed.uc @@ -0,0 +1,11 @@ +class AnimNodeScaleRateBySpeed extends AnimNodeScalePlayRate + native(Anim) + hidecategories(Object,Object,Object,Object,Object); + +var() float BaseSpeed; +var() float MinScaleValue; + +defaultproperties +{ + BaseSpeed=350.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeSequence.uc b/exported/Engine/Classes/AnimNodeSequence.uc new file mode 100755 index 00000000..75401527 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeSequence.uc @@ -0,0 +1,148 @@ +class AnimNodeSequence extends AnimNode + native(Anim) + hidecategories(Object,Object,Object); + +enum ERootBoneAxis +{ + RBA_Default, // 0 + RBA_Discard, // 1 + RBA_Translate, // 2 + RBA_MAX // 3 +}; + +enum ERootRotationOption +{ + RRO_Default, // 0 + RRO_Discard, // 1 + RRO_Extract, // 2 + RRO_MAX // 3 +}; + +struct native DeferredAnimNotifyTickInformation +{ + var AnimNotify Notify; + var float CurrentTime; + var float TimeStep; + var float TotalDuration; + + structdefaultproperties + { + Notify=none + CurrentTime=0.0000000 + TimeStep=0.0000000 + TotalDuration=0.0000000 + } +}; + +struct native DeferredAnimNotifyEndInformation +{ + var AnimNotify Notify; + var float CurrentTime; + + structdefaultproperties + { + Notify=none + CurrentTime=0.0000000 + } +}; + +var() const name AnimSeqName; +var() float Rate; +var() bool bPlaying; +var() bool bLooping; +var() bool bCauseActorAnimEnd; +var() bool bCauseActorAnimPlay; +var() bool bZeroRootRotation; +var() bool bZeroRootTranslation; +var() bool bDisableWarningWhenAnimNotFound; +var() bool bNoNotifies; +var() bool bForceRefposeWhenNotPlaying; +var bool bIsIssuingNotifies; +var(Group) bool bForceAlwaysSlave; +var(Group) const bool bSynchronize; +var(Group) const bool bReverseSync; +var(Display) bool bShowTimeLineSlider; +var(Camera) bool bLoopCameraAnim; +var(Camera) bool bRandomizeCameraAnimLoopStartTime; +var() bool m_bIgnoreFootSkelControls; +var() bool m_bIgnoreBlendBySpeedScaling; +var() bool bDoNotResetIfPlaying; +var(Group) bool bOnlyResetSynchGroupOnReplayAnim; +var const bool bEditorOnlyAddRefPoseToAdditiveAnimation; +var transient bool bCheckForFinishAnimEarly; +var transient bool bBlendingOut; +var() const float CurrentTime; +var const transient float PreviousTime; +var const transient float EndTime; +var const transient AnimSequence AnimSeq; +var const transient int AnimLinkupIndex; +var() float NotifyWeightThreshold; +var(Group) const name SynchGroupName; +var(Group) float SynchPosOffset; +var(Camera) CameraAnim CameraAnim; +var transient CameraAnimInst ActiveCameraAnimInstance; +var(Camera) float CameraAnimScale; +var(Camera) float CameraAnimPlayRate; +var(Camera) float CameraAnimBlendInTime; +var(Camera) float CameraAnimBlendOutTime; +var() const AnimNodeSequence.ERootBoneAxis RootBoneOption[3]; +var() const AnimNodeSequence.ERootRotationOption RootRotationOption[3]; +var Texture2D DebugTrack; +var Texture2D DebugCarat; +var transient array DeferredNotifies; +var transient array DeferredNotifyTicks; +var transient array DeferredNotifyEnds; +var const transient array MetaDataSkelControlList; + +// Export UAnimNodeSequence::execSetAnim(FFrame&, void* const) +native function SetAnim(name Sequence); + +// Export UAnimNodeSequence::execPlayAnim(FFrame&, void* const) +native function PlayAnim(optional bool bLoop = false, optional float InRate = 1.0000000, optional float StartTime = 0.0000000); + +// Export UAnimNodeSequence::execStopAnim(FFrame&, void* const) +native function StopAnim(); + +// Export UAnimNodeSequence::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); + +// Export UAnimNodeSequence::execSetPosition(FFrame&, void* const) +native function SetPosition(float NewTime, bool bFireNotifies); + +// Export UAnimNodeSequence::execGetNormalizedPosition(FFrame&, void* const) +native function float GetNormalizedPosition(); + +// Export UAnimNodeSequence::execFindGroupRelativePosition(FFrame&, void* const) +native function float FindGroupRelativePosition(float GroupRelativePosition); + +// Export UAnimNodeSequence::execFindGroupPosition(FFrame&, void* const) +native function float FindGroupPosition(float GroupRelativePosition); + +// Export UAnimNodeSequence::execGetGroupRelativePosition(FFrame&, void* const) +native function float GetGroupRelativePosition(); + +// Export UAnimNodeSequence::execGetGlobalPlayRate(FFrame&, void* const) +native function float GetGlobalPlayRate(); + +// Export UAnimNodeSequence::execGetAnimPlaybackLength(FFrame&, void* const) +native function float GetAnimPlaybackLength(); + +// Export UAnimNodeSequence::execGetTimeLeft(FFrame&, void* const) +native function float GetTimeLeft(); + +// Export UAnimNodeSequence::execSetRootBoneAxisOption(FFrame&, void* const) +native final function SetRootBoneAxisOption(optional AnimNodeSequence.ERootBoneAxis AxisX = 0, optional AnimNodeSequence.ERootBoneAxis AxisY = 0, optional AnimNodeSequence.ERootBoneAxis AxisZ = 0); + +// Export UAnimNodeSequence::execSetRootBoneRotationOption(FFrame&, void* const) +native final function SetRootBoneRotationOption(optional AnimNodeSequence.ERootRotationOption AxisX = 0, optional AnimNodeSequence.ERootRotationOption AxisY = 0, optional AnimNodeSequence.ERootRotationOption AxisZ = 0); + +defaultproperties +{ + Rate=1.0000000 + bSynchronize=true + NotifyWeightThreshold=0.0100000 + CameraAnimScale=1.0000000 + CameraAnimPlayRate=1.0000000 + CameraAnimBlendInTime=0.2000000 + CameraAnimBlendOutTime=0.2000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeSequenceBlendBase.uc b/exported/Engine/Classes/AnimNodeSequenceBlendBase.uc new file mode 100755 index 00000000..7f2e6572 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeSequenceBlendBase.uc @@ -0,0 +1,40 @@ +class AnimNodeSequenceBlendBase extends AnimNodeSequence + abstract + native(Anim) + hidecategories(Object,Object,Object); + +struct native AnimInfo +{ + var const name AnimSeqName; + var const transient AnimSequence AnimSeq; + var const transient int AnimLinkupIndex; + + structdefaultproperties + { + AnimSeqName="None" + AnimSeq=none + AnimLinkupIndex=0 + } +}; + +struct native AnimBlendInfo +{ + var() name AnimName; + var AnimInfo AnimInfo; + var transient float Weight; + + structdefaultproperties + { + AnimName="None" + AnimInfo=(AnimSeqName="None",AnimSeq=none,AnimLinkupIndex=0) + Weight=0.0000000 + } +}; + +var(Animations) editfixedsize export editinline array Anims; + +defaultproperties +{ + Anims[0]=(AnimName="None",AnimInfo=(AnimSeqName="None",AnimSeq=none,AnimLinkupIndex=0),Weight=1.0000000) + Anims[1]=(AnimName="None",AnimInfo=(AnimSeqName="None",AnimSeq=none,AnimLinkupIndex=0),Weight=0.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeSequenceBlendByAim.uc b/exported/Engine/Classes/AnimNodeSequenceBlendByAim.uc new file mode 100755 index 00000000..71f27208 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeSequenceBlendByAim.uc @@ -0,0 +1,36 @@ +class AnimNodeSequenceBlendByAim extends AnimNodeSequenceBlendBase + native(Anim) + hidecategories(Object,Object,Object,Animations); + +var() Vector2D Aim; +var const transient Vector2D PreviousAim; +var() Vector2D HorizontalRange; +var() Vector2D VerticalRange; +var() Vector2D AngleOffset; +var() name AnimName_LU; +var() name AnimName_LC; +var() name AnimName_LD; +var() name AnimName_CU; +var() name AnimName_CC; +var() name AnimName_CD; +var() name AnimName_RU; +var() name AnimName_RC; +var() name AnimName_RD; + +// Export UAnimNodeSequenceBlendByAim::execCheckAnimsUpToDate(FFrame&, void* const) +native final function CheckAnimsUpToDate(); + +defaultproperties +{ + HorizontalRange=(X=-1.0000000,Y=1.0000000) + VerticalRange=(X=-1.0000000,Y=1.0000000) + Anims[0]=(AnimName="None",AnimInfo=(AnimSeqName="None",AnimSeq=none,AnimLinkupIndex=0),Weight=1.0000000) + Anims[1]=(AnimName="None",AnimInfo=(AnimSeqName="None",AnimSeq=none,AnimLinkupIndex=0),Weight=0.0000000) + Anims[2]=(AnimName="None",AnimInfo=(AnimSeqName="None",AnimSeq=none,AnimLinkupIndex=0),Weight=0.0000000) + Anims[3]=(AnimName="None",AnimInfo=(AnimSeqName="None",AnimSeq=none,AnimLinkupIndex=0),Weight=0.0000000) + Anims[4]=(AnimName="None",AnimInfo=(AnimSeqName="None",AnimSeq=none,AnimLinkupIndex=0),Weight=0.0000000) + Anims[5]=(AnimName="None",AnimInfo=(AnimSeqName="None",AnimSeq=none,AnimLinkupIndex=0),Weight=0.0000000) + Anims[6]=(AnimName="None",AnimInfo=(AnimSeqName="None",AnimSeq=none,AnimLinkupIndex=0),Weight=0.0000000) + Anims[7]=(AnimName="None",AnimInfo=(AnimSeqName="None",AnimSeq=none,AnimLinkupIndex=0),Weight=0.0000000) + Anims[8]=(AnimName="None",AnimInfo=(AnimSeqName="None",AnimSeq=none,AnimLinkupIndex=0),Weight=0.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeSlot.uc b/exported/Engine/Classes/AnimNodeSlot.uc new file mode 100755 index 00000000..5da9ebb9 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeSlot.uc @@ -0,0 +1,57 @@ +class AnimNodeSlot extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object,Object); + +var const bool bIsPlayingCustomAnim; +var() bool bEarlyAnimEndNotify; +var() bool bSkipBlendWhenNotRendered; +var() bool bAdditiveAnimationsOverrideSource; +var const transient bool bIsBeingUsedByInterpGroup; +var() bool bDontAddToAlwaysTickArray; +var const float PendingBlendOutTime; +var const int CustomChildIndex; +var const int TargetChildIndex; +var array TargetWeight; +var const float BlendTimeToGo; + +// Export UAnimNodeSlot::execPlayCustomAnim(FFrame&, void* const) +native final function float PlayCustomAnim(name AnimName, float Rate, optional float BlendInTime, optional float BlendOutTime, optional bool bLooping, optional bool bOverride, optional float StartTime, optional float EndTime); + +// Export UAnimNodeSlot::execPlayCustomAnimByDuration(FFrame&, void* const) +native final function bool PlayCustomAnimByDuration(name AnimName, float Duration, optional float BlendInTime, optional float BlendOutTime, optional bool bLooping, optional bool bOverride = true); + +// Export UAnimNodeSlot::execGetPlayedAnimation(FFrame&, void* const) +native final function name GetPlayedAnimation(); + +// Export UAnimNodeSlot::execStopCustomAnim(FFrame&, void* const) +native function StopCustomAnim(float BlendOutTime); + +// Export UAnimNodeSlot::execSetAllowPauseAnims(FFrame&, void* const) +native final function SetAllowPauseAnims(bool bSet); + +// Export UAnimNodeSlot::execSetCustomAnim(FFrame&, void* const) +native final function SetCustomAnim(name AnimName); + +// Export UAnimNodeSlot::execSetActorAnimEndNotification(FFrame&, void* const) +native final function SetActorAnimEndNotification(bool bNewStatus); + +// Export UAnimNodeSlot::execGetCustomAnimNodeSeq(FFrame&, void* const) +native final function AnimNodeSequence GetCustomAnimNodeSeq(); + +// Export UAnimNodeSlot::execSetRootBoneAxisOption(FFrame&, void* const) +native final function SetRootBoneAxisOption(optional AnimNodeSequence.ERootBoneAxis AxisX = 0, optional AnimNodeSequence.ERootBoneAxis AxisY = 0, optional AnimNodeSequence.ERootBoneAxis AxisZ = 0); + +// Export UAnimNodeSlot::execSetRootBoneRotationOption(FFrame&, void* const) +native final function SetRootBoneRotationOption(optional AnimNodeSequence.ERootRotationOption AxisX = 0, optional AnimNodeSequence.ERootRotationOption AxisY = 0, optional AnimNodeSequence.ERootRotationOption AxisZ = 0); + +// Export UAnimNodeSlot::execTickChildWeights(FFrame&, void* const) +native final function TickChildWeights(float DeltaSeconds); + +defaultproperties +{ + bEarlyAnimEndNotify=true + TargetWeight[0]=1.0000000 + Children[0]=(Name="Source",Anim=none,Weight=1.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + Children[1]=(Name="Channel 01",Anim=none,Weight=0.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + NodeName="SlotName" +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNodeSynch.uc b/exported/Engine/Classes/AnimNodeSynch.uc new file mode 100755 index 00000000..9c17e130 --- /dev/null +++ b/exported/Engine/Classes/AnimNodeSynch.uc @@ -0,0 +1,47 @@ +class AnimNodeSynch extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object); + +struct native SynchGroup +{ + var array SeqNodes; + var transient AnimNodeSequence MasterNode; + var() name GroupName; + var() bool bFireSlaveNotifies; + var() float RateScale; + + structdefaultproperties + { + SeqNodes=none + MasterNode=none + GroupName="None" + bFireSlaveNotifies=false + RateScale=1.0000000 + } +}; + +var() array Groups; + +// Export UAnimNodeSynch::execAddNodeToGroup(FFrame&, void* const) +native final function AddNodeToGroup(AnimNodeSequence SeqNode, name GroupName); + +// Export UAnimNodeSynch::execRemoveNodeFromGroup(FFrame&, void* const) +native final function RemoveNodeFromGroup(AnimNodeSequence SeqNode, name GroupName); + +// Export UAnimNodeSynch::execGetMasterNodeOfGroup(FFrame&, void* const) +native final function AnimNodeSequence GetMasterNodeOfGroup(name GroupName); + +// Export UAnimNodeSynch::execForceRelativePosition(FFrame&, void* const) +native final function ForceRelativePosition(name GroupName, float RelativePosition); + +// Export UAnimNodeSynch::execGetRelativePosition(FFrame&, void* const) +native final function float GetRelativePosition(name GroupName); + +// Export UAnimNodeSynch::execSetGroupRateScale(FFrame&, void* const) +native final function SetGroupRateScale(name GroupName, float NewRateScale); + +defaultproperties +{ + Children[0]=(Name="Input",Anim=none,Weight=1.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNode_MultiBlendPerBone.uc b/exported/Engine/Classes/AnimNode_MultiBlendPerBone.uc new file mode 100755 index 00000000..28e67a8e --- /dev/null +++ b/exported/Engine/Classes/AnimNode_MultiBlendPerBone.uc @@ -0,0 +1,98 @@ +class AnimNode_MultiBlendPerBone extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object); + +enum EWeightCheck +{ + EWC_AnimNodeSlotNotPlaying, // 0 + EWC_MAX // 1 +}; + +enum EBlendType +{ + EBT_ParentBoneSpace, // 0 + EBT_MeshSpace, // 1 + EBT_MAX // 2 +}; + +struct native WeightNodeRule +{ + var() name NodeName; + var AnimNodeBlendBase CachedNode; + var AnimNodeSlot CachedSlotNode; + var() AnimNode_MultiBlendPerBone.EWeightCheck WeightCheck; + var() int ChildIndex; + + structdefaultproperties + { + NodeName="None" + CachedNode=none + CachedSlotNode=none + WeightCheck=EWeightCheck.EWC_AnimNodeSlotNotPlaying + ChildIndex=0 + } +}; + +struct native WeightRule +{ + var() WeightNodeRule FirstNode; + var() WeightNodeRule SecondNode; + + structdefaultproperties + { + FirstNode=(NodeName="None",CachedNode=none,CachedSlotNode=none,WeightCheck=EWeightCheck.EWC_AnimNodeSlotNotPlaying,ChildIndex=0) + SecondNode=(NodeName="None",CachedNode=none,CachedSlotNode=none,WeightCheck=EWeightCheck.EWC_AnimNodeSlotNotPlaying,ChildIndex=0) + } +}; + +struct native BranchInfo +{ + var() name BoneName; + var() float PerBoneWeightIncrease; + + structdefaultproperties + { + BoneName="None" + PerBoneWeightIncrease=1.0000000 + } +}; + +struct native PerBoneMaskInfo +{ + var() array BranchList; + var() float DesiredWeight; + var() float BlendTimeToGo; + var() array WeightRuleList; + var() bool bWeightBasedOnNodeRules; + var() bool bDisableForNonLocalHumanPlayers; + var transient bool bPendingBlend; + var transient array PerBoneWeights; + var transient array TransformReqBone; + var transient int TransformReqBoneIndex; + + structdefaultproperties + { + BranchList=none + DesiredWeight=0.0000000 + BlendTimeToGo=0.0000000 + WeightRuleList=none + bWeightBasedOnNodeRules=false + bDisableForNonLocalHumanPlayers=false + bPendingBlend=false + PerBoneWeights=none + TransformReqBone=none + TransformReqBoneIndex=0 + } +}; + +var const transient Pawn PawnOwner; +var() editfixedsize editinline array MaskList; +var() AnimNode_MultiBlendPerBone.EBlendType RotationBlendType; + +// Export UAnimNode_MultiBlendPerBone::execSetMaskWeight(FFrame&, void* const) +native final function SetMaskWeight(int MaskIndex, float DesiredWeight, float BlendTime); + +defaultproperties +{ + Children[0]=(Name="Source",Anim=none,Weight=1.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNotify.uc b/exported/Engine/Classes/AnimNotify.uc new file mode 100755 index 00000000..cc69e2ef --- /dev/null +++ b/exported/Engine/Classes/AnimNotify.uc @@ -0,0 +1,55 @@ +class AnimNotify extends Object + abstract + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var bool ShouldDeferIssue; +var() Scene.EDetailMode DetailMode; + +simulated function bool FindNextNotifyOfClass(AnimNodeSequence AnimSeqInstigator, Class NotifyClass, out AnimNotifyEvent OutEvent) +{ + local AnimSequence Seq; + local int I; + local bool bFoundThis; + + // End:0x181 + if(AnimSeqInstigator.AnimSeq != none) + { + Seq = AnimSeqInstigator.AnimSeq; + I = 0; + J0x57: + + // End:0x181 [Loop If] + if(I < Seq.Notifies.Length) + { + // End:0xD1 + if(Seq.Notifies[I].Notify == self) + { + bFoundThis = true; + } + // End:0x173 + if(bFoundThis && ClassIsChildOf(Seq.Notifies[I].Notify.Class, NotifyClass)) + { + OutEvent = Seq.Notifies[I]; + return true; + } + I++; + // [Loop Continue] + goto J0x57; + } + } + return false; + //return ReturnValue; +} + +simulated event OnAnimNodeSequenceCeaseRelevant(AnimNodeSequence OwningNode) +{ + //return; +} + +simulated event OnAnimNodeSequenceBecomeRelevant(AnimNodeSequence OwningNode) +{ + //return; +} diff --git a/exported/Engine/Classes/AnimNotify_AkEvent.uc b/exported/Engine/Classes/AnimNotify_AkEvent.uc new file mode 100755 index 00000000..7a66f8b3 --- /dev/null +++ b/exported/Engine/Classes/AnimNotify_AkEvent.uc @@ -0,0 +1,20 @@ +class AnimNotify_AkEvent extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() AkEvent AkEvent; +var() bool bFollowActor; +var() bool m_bIgnoreIfMeshHidden; +var() bool m_bIgnoreIfActorHidden; +var() name BoneName; + +// Export UAnimNotify_AkEvent::execGetAkEventToPlay(FFrame&, void* const) +native function AkEvent GetAkEventToPlay(SkeletalMeshComponent skel); + +defaultproperties +{ + bFollowActor=true + m_bIgnoreIfActorHidden=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNotify_CameraEffect.uc b/exported/Engine/Classes/AnimNotify_CameraEffect.uc new file mode 100755 index 00000000..2e5d8f40 --- /dev/null +++ b/exported/Engine/Classes/AnimNotify_CameraEffect.uc @@ -0,0 +1,7 @@ +class AnimNotify_CameraEffect extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() Class CameraLensEffect; diff --git a/exported/Engine/Classes/AnimNotify_ClothingMaxDistanceScale.uc b/exported/Engine/Classes/AnimNotify_ClothingMaxDistanceScale.uc new file mode 100755 index 00000000..d2a168eb --- /dev/null +++ b/exported/Engine/Classes/AnimNotify_ClothingMaxDistanceScale.uc @@ -0,0 +1,16 @@ +class AnimNotify_ClothingMaxDistanceScale extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() float StartScale; +var() float EndScale; +var() SkeletalMeshComponent.EMaxDistanceScaleMode ScaleMode; +var float Duration; + +defaultproperties +{ + StartScale=1.0000000 + EndScale=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNotify_Footstep.uc b/exported/Engine/Classes/AnimNotify_Footstep.uc new file mode 100755 index 00000000..7970308d --- /dev/null +++ b/exported/Engine/Classes/AnimNotify_Footstep.uc @@ -0,0 +1,9 @@ +class AnimNotify_Footstep extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() int FootDown; +var() SoundCue m_PreviewSound; +var() Pawn.EFootstepTypes m_FootstepType; diff --git a/exported/Engine/Classes/AnimNotify_ForceField.uc b/exported/Engine/Classes/AnimNotify_ForceField.uc new file mode 100755 index 00000000..5c979356 --- /dev/null +++ b/exported/Engine/Classes/AnimNotify_ForceField.uc @@ -0,0 +1,10 @@ +class AnimNotify_ForceField extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() export editinline NxForceFieldComponent ForceFieldComponent; +var() bool bAttach; +var() name SocketName; +var() name BoneName; diff --git a/exported/Engine/Classes/AnimNotify_Kismet.uc b/exported/Engine/Classes/AnimNotify_Kismet.uc new file mode 100755 index 00000000..0b165c73 --- /dev/null +++ b/exported/Engine/Classes/AnimNotify_Kismet.uc @@ -0,0 +1,7 @@ +class AnimNotify_Kismet extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() name NotifyName; diff --git a/exported/Engine/Classes/AnimNotify_PawnMaterialParam.uc b/exported/Engine/Classes/AnimNotify_PawnMaterialParam.uc new file mode 100755 index 00000000..aefcb6b4 --- /dev/null +++ b/exported/Engine/Classes/AnimNotify_PawnMaterialParam.uc @@ -0,0 +1,33 @@ +class AnimNotify_PawnMaterialParam extends AnimNotify_Scripted + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() array ScalarParameterInterpArray; + +event Notify(Actor Owner, AnimNodeSequence AnimSeqInstigator) +{ + local Pawn P; + local int I; + local ScalarParameterInterpStruct ScalarParam; + + P = Pawn(Owner); + // End:0xA1 + if(P != none) + { + I = 0; + J0x36: + + // End:0xA1 [Loop If] + if(I < ScalarParameterInterpArray.Length) + { + ScalarParam = ScalarParameterInterpArray[I]; + P.SetScalarParameterInterp(ScalarParam); + I++; + // [Loop Continue] + goto J0x36; + } + } + //return; +} diff --git a/exported/Engine/Classes/AnimNotify_PlayFaceFXAnim.uc b/exported/Engine/Classes/AnimNotify_PlayFaceFXAnim.uc new file mode 100755 index 00000000..da6e203b --- /dev/null +++ b/exported/Engine/Classes/AnimNotify_PlayFaceFXAnim.uc @@ -0,0 +1,55 @@ +class AnimNotify_PlayFaceFXAnim extends AnimNotify_Scripted + editinlinenew + collapsecategories + hidecategories(Object); + +var() FaceFXAnimSet FaceFXAnimSetRef; +var() string GroupName; +var() string AnimName; +var() SoundCue SoundCueToPlay; +var() AkEvent AkEventToPlay; +var() bool bOverridePlayingAnim; +var() float PlayFrequency; + +event Notify(Actor Owner, AnimNodeSequence AnimSeqInstigator) +{ + // End:0x28 + if(PlayFrequency < 1.0000000) + { + // End:0x25 + if(FRand() > PlayFrequency) + { + return; + } + } + else + { + // End:0x3B + if(PlayFrequency > 1.0000000) + { + } + } + // End:0xF1 + if(Owner != none) + { + // End:0xF1 + if(Owner.CanActorPlayFaceFXAnim()) + { + // End:0xF1 + if(bOverridePlayingAnim || !Owner.IsActorPlayingFaceFXAnim()) + { + // End:0xF1 + if(Owner.PlayActorFaceFXAnim(FaceFXAnimSetRef, GroupName, AnimName, SoundCueToPlay, AkEventToPlay) == false) + { + } + } + } + } + //return; +} + +defaultproperties +{ + bOverridePlayingAnim=true + PlayFrequency=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNotify_PlayParticleEffect.uc b/exported/Engine/Classes/AnimNotify_PlayParticleEffect.uc new file mode 100755 index 00000000..a1413746 --- /dev/null +++ b/exported/Engine/Classes/AnimNotify_PlayParticleEffect.uc @@ -0,0 +1,32 @@ +class AnimNotify_PlayParticleEffect extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() ParticleSystem PSTemplate; +var() bool bIsExtremeContent; +var() bool bAttach; +var() editoronly bool bPreview; +var() bool bSkipIfOwnerIsHidden; +var() bool ShouldDilateTimeByPlayRate; +var() bool m_bReuse; +var() ParticleSystem PSNonExtremeContentTemplate; +var() name SocketName; +var() name BoneName; +var() name BoneSocketModuleActorName; +var() float TimeDilationFactor; + +// Export UAnimNotify_PlayParticleEffect::execGetParticleSystemToPlay(FFrame&, void* const) +native function ParticleSystem GetParticleSystemToPlay(SkeletalMeshComponent skel); + +// Export UAnimNotify_PlayParticleEffect::execGetParticleChannels(FFrame&, void* const) +native function ParticleChannelContainer GetParticleChannels(SkeletalMeshComponent skel); + +defaultproperties +{ + bSkipIfOwnerIsHidden=true + BoneSocketModuleActorName="BoneSocketActor" + TimeDilationFactor=1.0000000 + ShouldDeferIssue=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNotify_Rumble.uc b/exported/Engine/Classes/AnimNotify_Rumble.uc new file mode 100755 index 00000000..523ea668 --- /dev/null +++ b/exported/Engine/Classes/AnimNotify_Rumble.uc @@ -0,0 +1,10 @@ +class AnimNotify_Rumble extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() Class PredefinedWaveForm; +var() editinline ForceFeedbackWaveform WaveForm; +var() bool bCheckForBasedPlayer; +var() float EffectRadius; diff --git a/exported/Engine/Classes/AnimNotify_Script.uc b/exported/Engine/Classes/AnimNotify_Script.uc new file mode 100755 index 00000000..d69807ef --- /dev/null +++ b/exported/Engine/Classes/AnimNotify_Script.uc @@ -0,0 +1,9 @@ +class AnimNotify_Script extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() name NotifyName; +var() name NotifyTickName; +var() name NotifyEndName; diff --git a/exported/Engine/Classes/AnimNotify_Scripted.uc b/exported/Engine/Classes/AnimNotify_Scripted.uc new file mode 100755 index 00000000..ee021a57 --- /dev/null +++ b/exported/Engine/Classes/AnimNotify_Scripted.uc @@ -0,0 +1,16 @@ +class AnimNotify_Scripted extends AnimNotify + abstract + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +event Notify(Actor Owner, AnimNodeSequence AnimSeqInstigator) +{ + //return; +} + +event NotifyEnd(Actor Owner, AnimNodeSequence AnimSeqInstigator) +{ + //return; +} diff --git a/exported/Engine/Classes/AnimNotify_Sound.uc b/exported/Engine/Classes/AnimNotify_Sound.uc new file mode 100755 index 00000000..86be9d32 --- /dev/null +++ b/exported/Engine/Classes/AnimNotify_Sound.uc @@ -0,0 +1,27 @@ +class AnimNotify_Sound extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() SoundCue SoundCue; +var() bool bFollowActor; +var() bool bIgnoreIfMeshHidden; +var() bool bIgnoreIfActorHidden; +var() name BoneName; +var() float PercentToPlay; +var() float VolumeMultiplier; +var() float PitchMultiplier; + +// Export UAnimNotify_Sound::execGetSoundCueToPlay(FFrame&, void* const) +native function SoundCue GetSoundCueToPlay(SkeletalMeshComponent skel); + +defaultproperties +{ + bFollowActor=true + bIgnoreIfActorHidden=true + PercentToPlay=1.0000000 + VolumeMultiplier=1.0000000 + PitchMultiplier=1.0000000 + ShouldDeferIssue=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNotify_Trails.uc b/exported/Engine/Classes/AnimNotify_Trails.uc new file mode 100755 index 00000000..55fac561 --- /dev/null +++ b/exported/Engine/Classes/AnimNotify_Trails.uc @@ -0,0 +1,81 @@ +class AnimNotify_Trails extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +struct native TrailSocketSamplePoint +{ + var Vector Position; + var Vector Velocity; + + structdefaultproperties + { + Position=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Velocity=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct native TrailSamplePoint +{ + var float RelativeTime; + var TrailSocketSamplePoint FirstEdgeSample; + var TrailSocketSamplePoint ControlPointSample; + var TrailSocketSamplePoint SecondEdgeSample; + + structdefaultproperties + { + RelativeTime=0.0000000 + FirstEdgeSample=(Position=(X=0.0000000,Y=0.0000000,Z=0.0000000),Velocity=(X=0.0000000,Y=0.0000000,Z=0.0000000)) + ControlPointSample=(Position=(X=0.0000000,Y=0.0000000,Z=0.0000000),Velocity=(X=0.0000000,Y=0.0000000,Z=0.0000000)) + SecondEdgeSample=(Position=(X=0.0000000,Y=0.0000000,Z=0.0000000),Velocity=(X=0.0000000,Y=0.0000000,Z=0.0000000)) + } +}; + +struct native TrailSample +{ + var float RelativeTime; + var Vector FirstEdgeSample; + var Vector ControlPointSample; + var Vector SecondEdgeSample; + + structdefaultproperties + { + RelativeTime=0.0000000 + FirstEdgeSample=(X=0.0000000,Y=0.0000000,Z=0.0000000) + ControlPointSample=(X=0.0000000,Y=0.0000000,Z=0.0000000) + SecondEdgeSample=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +var(Trails) ParticleSystem PSTemplate; +var(Trails) bool bIsExtremeContent; +var() editoronly bool bPreview; +var() editoronly bool bPreviewForceExplicit; +var() bool bSkipIfOwnerIsHidden; +var bool bResampleRequired; +var(Trails) name FirstEdgeSocketName; +var(Trails) name ControlPointSocketName; +var(Trails) name SecondEdgeSocketName; +var float LastStartTime; +var float EndTime; +var deprecated float SampleTimeStep; +var deprecated array TrailSampleData; +var(Trails) float SamplesPerSecond; +var array TrailSampledData; +var transient float CurrentTime; +var transient float TimeStep; +var transient AnimNodeSequence AnimNodeSeq; + +// Export UAnimNotify_Trails::execGetNumSteps(FFrame&, void* const) +native function int GetNumSteps(int InLastTrailIndex); + +defaultproperties +{ + bSkipIfOwnerIsHidden=true + FirstEdgeSocketName="EndControl" + ControlPointSocketName="MidControl" + SecondEdgeSocketName="StartControl" + SamplesPerSecond=60.0000000 + ShouldDeferIssue=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimNotify_ViewShake.uc b/exported/Engine/Classes/AnimNotify_ViewShake.uc new file mode 100755 index 00000000..8b6cc459 --- /dev/null +++ b/exported/Engine/Classes/AnimNotify_ViewShake.uc @@ -0,0 +1,71 @@ +class AnimNotify_ViewShake extends AnimNotify_Scripted + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var private editconst float Duration; +var private editconst Vector RotAmplitude; +var private editconst Vector RotFrequency; +var private editconst Vector LocAmplitude; +var private editconst Vector LocFrequency; +var private editconst float FOVAmplitude; +var private editconst float FOVFrequency; +var() bool bDoControllerVibration; +var() bool bUseBoneLocation; +var() float ShakeRadius; +var() name BoneName; +var() export editinline CameraShake ShakeParams; + +event Notify(Actor Owner, AnimNodeSequence AnimSeqInstigator) +{ + local Vector ViewShakeOrigin; + local Pawn P; + local PlayerController PC; + + // End:0xCF + if(ShakeRadius == float(0)) + { + P = Pawn(Owner); + // End:0xCC + if((P != none) && P.IsLocallyControlled()) + { + PC = PlayerController(P.Controller); + // End:0xCC + if(PC != none) + { + PC.ClientPlayCameraShake(ShakeParams); + } + } + } + else + { + // End:0x15E + if((bUseBoneLocation && AnimSeqInstigator != none) && AnimSeqInstigator.SkelComponent != none) + { + ViewShakeOrigin = AnimSeqInstigator.SkelComponent.GetBoneLocation(BoneName); + } + else + { + ViewShakeOrigin = Owner.Location; + } + // End:0x1ED + if(Owner != none) + { + Class'Engine.Camera'.static.PlayWorldCameraShake(ShakeParams, Owner, ViewShakeOrigin, 0.0000000, ShakeRadius, 1.0000000, bDoControllerVibration); + } + } + //return; +} + +defaultproperties +{ + Duration=1.0000000 + RotAmplitude=(X=100.0000000,Y=100.0000000,Z=200.0000000) + RotFrequency=(X=10.0000000,Y=10.0000000,Z=25.0000000) + LocAmplitude=(X=0.0000000,Y=3.0000000,Z=6.0000000) + LocFrequency=(X=1.0000000,Y=10.0000000,Z=20.0000000) + FOVAmplitude=2.0000000 + FOVFrequency=5.0000000 + ShakeRadius=4096.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimObject.uc b/exported/Engine/Classes/AnimObject.uc new file mode 100755 index 00000000..3cbc8f5d --- /dev/null +++ b/exported/Engine/Classes/AnimObject.uc @@ -0,0 +1,6 @@ +class AnimObject extends Object + abstract + native(Anim) + hidecategories(Object); + +var duplicatetransient const transient SkeletalMeshComponent SkelComponent; diff --git a/exported/Engine/Classes/AnimSequence.uc b/exported/Engine/Classes/AnimSequence.uc new file mode 100755 index 00000000..e9a04385 --- /dev/null +++ b/exported/Engine/Classes/AnimSequence.uc @@ -0,0 +1,167 @@ +class AnimSequence extends Object + native(Anim) + hidecategories(Object); + +enum AnimationCompressionFormat +{ + ACF_None, // 0 + ACF_Float96NoW, // 1 + ACF_Fixed48NoW, // 2 + ACF_IntervalFixed32NoW, // 3 + ACF_Fixed32NoW, // 4 + ACF_Float32NoW, // 5 + ACF_Identity, // 6 + ACF_MAX // 7 +}; + +enum AnimationKeyFormat +{ + AKF_ConstantKeyLerp, // 0 + AKF_VariableKeyLerp, // 1 + AKF_PerTrackCompression, // 2 + AKF_MAX // 3 +}; + +struct native AnimNotifyEvent +{ + var() float Time; + var() export editinline AnimNotify Notify; + var() float Duration; + + structdefaultproperties + { + Time=0.0000000 + Notify=none + Duration=0.0000000 + } +}; + +struct RawAnimSequenceTrack +{ + var array PosKeys; + var array RotKeys; + + structdefaultproperties + { + PosKeys=none + RotKeys=none + } +}; + +struct native TimeModifier +{ + var() float Time; + var() float TargetStrength; + + structdefaultproperties + { + Time=0.0000000 + TargetStrength=0.0000000 + } +}; + +struct native SkelControlModifier +{ + var() name SkelControlName; + var() editinline array Modifiers; + + structdefaultproperties + { + SkelControlName="None" + Modifiers=none + } +}; + +struct native TranslationTrack +{ + var array PosKeys; + var array Times; + + structdefaultproperties + { + PosKeys=none + Times=none + } +}; + +struct native RotationTrack +{ + var array RotKeys; + var array Times; + + structdefaultproperties + { + RotKeys=none + Times=none + } +}; + +struct native CurveTrack +{ + var name CurveName; + var array CurveWeights; + + structdefaultproperties + { + CurveName="None" + CurveWeights=none + } +}; + +struct native CompressedTrack +{ + var array ByteStream; + var array Times; + var float Mins[3]; + var float Ranges[3]; + + structdefaultproperties + { + ByteStream=none + Times=none + Mins[0]=0.0000000 + Mins[1]=0.0000000 + Mins[2]=0.0000000 + Ranges[0]=0.0000000 + Ranges[1]=0.0000000 + Ranges[2]=0.0000000 + } +}; + +var name SequenceName; +var() editinline array Notifies; +var() export editinline array MetaData; +var editinline deprecated array BoneControlModifiers; +var float SequenceLength; +var int NumFrames; +var() float RateScale; +var() bool bNoLoopingInterpolation; +var const bool bIsAdditive; +var bool bAdditiveBuiltLooping; +var() editoronly const bool bDoNotOverrideCompression; +var const transient bool bHasBeenUsed; +var bool bWasCompressedWithoutTranslations; +var private const deprecated array RawAnimData; +var private native const array RawAnimationData; +var const transient array TranslationData; +var const transient array RotationData; +var const array CurveData; +var const AnimSequence.AnimationCompressionFormat TranslationCompressionFormat; +var const AnimSequence.AnimationCompressionFormat RotationCompressionFormat; +var const AnimSequence.AnimationKeyFormat KeyEncodingFormat; +var array CompressedTrackOffsets; +var native array CompressedByteStream; +var private native transient Pointer TranslationCodec; +var private native transient Pointer RotationCodec; +var const deprecated array AdditiveRefPose; +var const array AdditiveBasePose; +var const int EncodingPkgVersion; +var const transient float UseScore; + +// Export UAnimSequence::execGetNotifyTimeByClass(FFrame&, void* const) +native function float GetNotifyTimeByClass(Class NotifyClass, optional float PlayRate = 1.0000000, optional float StartPosition = -1.0000000, optional out AnimNotify out_Notify, optional out float out_Duration); + +defaultproperties +{ + RateScale=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimSet.uc b/exported/Engine/Classes/AnimSet.uc new file mode 100755 index 00000000..9bfb5a14 --- /dev/null +++ b/exported/Engine/Classes/AnimSet.uc @@ -0,0 +1,57 @@ +class AnimSet extends Object + native(Anim) + hidecategories(Object); + +struct native AnimSetMeshLinkup +{ + var array BoneToTrackTable; + + structdefaultproperties + { + BoneToTrackTable=none + } +}; + +var() bool bAnimRotationOnly; +var() bool m_bUsesHandIK; +var() bool m_bCompressOutFacialBones; +var array TrackBoneNames; +var array Sequences; +var native transient map{VOID,VOID} SequenceCache; +var transient array LinkupCache; +var native transient map{VOID,VOID} SkelMesh2LinkupCache; +var transient array BoneUseAnimTranslation; +var transient array ForceUseMeshTranslation; +var() array UseTranslationBoneNames; +var() array ForceMeshTranslationBoneNames; +var name PreviewSkelMeshName; +var name BestRatioSkelMeshName; +var array m_FacialFilteredBones; + +defaultproperties +{ + m_FacialFilteredBones[0]="Cheeks" + m_FacialFilteredBones[1]="CheeksWeighted" + m_FacialFilteredBones[2]="EyebrowMiddle" + m_FacialFilteredBones[3]="EyebrowMiddleWeighted" + m_FacialFilteredBones[4]="L_Eye" + m_FacialFilteredBones[5]="L_Eyebrow" + m_FacialFilteredBones[6]="L_EyebrowWeighted" + m_FacialFilteredBones[7]="R_Eye" + m_FacialFilteredBones[8]="R_Eyebrow" + m_FacialFilteredBones[9]="R_EyebrowWeighted" + m_FacialFilteredBones[10]="UpperLip" + m_FacialFilteredBones[11]="UpperLipWeighted" + m_FacialFilteredBones[12]="JawForward" + m_FacialFilteredBones[13]="Jaw" + m_FacialFilteredBones[14]="JawWeighted" + m_FacialFilteredBones[15]="L_MouthCorner" + m_FacialFilteredBones[16]="L_MouthCornerWeighted" + m_FacialFilteredBones[17]="L_CheekPullWeighted" + m_FacialFilteredBones[18]="LowerLip" + m_FacialFilteredBones[19]="LowerLipWeighted" + m_FacialFilteredBones[20]="R_MouthCorner" + m_FacialFilteredBones[21]="R_MouthCornerWeighted" + m_FacialFilteredBones[22]="R_CheekPullWeighted" + m_FacialFilteredBones[23]="EyelidsTop" +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimTree.uc b/exported/Engine/Classes/AnimTree.uc new file mode 100755 index 00000000..c9bae2e0 --- /dev/null +++ b/exported/Engine/Classes/AnimTree.uc @@ -0,0 +1,151 @@ +class AnimTree extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native AnimGroup +{ + var const transient array SeqNodes; + var const transient AnimNodeSequence SynchMaster; + var const transient AnimNodeSequence NotifyMaster; + var() const name GroupName; + var() const float RateScale; + var const float SynchPctPosition; + var() const bool bOnlyFireNotifiesOnBestGroupMember; + + structdefaultproperties + { + SeqNodes=none + SynchMaster=none + NotifyMaster=none + GroupName="None" + RateScale=1.0000000 + SynchPctPosition=0.0000000 + bOnlyFireNotifiesOnBestGroupMember=false + } +}; + +struct native SkelControlListHead +{ + var name BoneName; + var export editinline SkelControlBase ControlHead; + + structdefaultproperties + { + BoneName="None" + ControlHead=none + } +}; + +struct native PreviewSkelMeshStruct +{ + var() name DisplayName; + var() SkeletalMesh PreviewSkelMesh; + var() array PreviewMorphSets; + + structdefaultproperties + { + DisplayName="None" + PreviewSkelMesh=none + PreviewMorphSets=none + } +}; + +struct native PreviewSocketStruct +{ + var() name DisplayName; + var() name SocketName; + var() SkeletalMesh PreviewSkelMesh; + var() StaticMesh PreviewStaticMesh; + + structdefaultproperties + { + DisplayName="None" + SocketName="None" + PreviewSkelMesh=none + PreviewStaticMesh=none + } +}; + +struct native PreviewAnimSetsStruct +{ + var() name DisplayName; + var() array PreviewAnimSets; + + structdefaultproperties + { + DisplayName="None" + PreviewAnimSets=none + } +}; + +struct native HelmetMorphRestrictions +{ + var() name MorphName; + var() float Weight; + + structdefaultproperties + { + MorphName="None" + Weight=0.0000000 + } +}; + +var() const AnimTree AnimTreeTemplate; +var() bool bEnablePooling; +var bool bUseSavedPose; +var editoronly transient bool bBeingEdited; +var duplicatetransient bool bParentNodeArrayBuilt; +var bool bRebuildAnimTickArray; +var(Speed) bool m_bControlSpeed; +var() array AnimGroups; +var deprecated array PrioritizedSkelBranches; +var() array ComposePrePassBoneNames; +var() array ComposePostPassBoneNames; +var export editinline array RootMorphNodes; +var export editinline array m_AnimTreeComments; +var export editinline array SkelControlLists; +var array SavedPose; +var duplicatetransient array AnimTickArray; +var(Speed) float m_fSpeed; +var(MorphGroup) array m_MasterMorphWeightNodeNames; +var array m_MasterMorphWeightGroups; +var(MorphGroup) array m_HelmetMorphRestrictions; + +// Export UAnimTree::execFindSkelControl(FFrame&, void* const) +native final function SkelControlBase FindSkelControl(name InControlName); + +// Export UAnimTree::execFindMorphNode(FFrame&, void* const) +native final function MorphNodeBase FindMorphNode(name InNodeName); + +// Export UAnimTree::execSetUseSavedPose(FFrame&, void* const) +native final function SetUseSavedPose(bool bUseSaved); + +// Export UAnimTree::execSetAnimGroupForNode(FFrame&, void* const) +native final function bool SetAnimGroupForNode(AnimNodeSequence SeqNode, name GroupName, optional bool bCreateIfNotFound); + +// Export UAnimTree::execGetGroupSynchMaster(FFrame&, void* const) +native final function AnimNodeSequence GetGroupSynchMaster(name GroupName); + +// Export UAnimTree::execGetGroupNotifyMaster(FFrame&, void* const) +native final function AnimNodeSequence GetGroupNotifyMaster(name GroupName); + +// Export UAnimTree::execForceGroupRelativePosition(FFrame&, void* const) +native final function ForceGroupRelativePosition(name GroupName, float RelativePosition); + +// Export UAnimTree::execGetGroupRelativePosition(FFrame&, void* const) +native final function float GetGroupRelativePosition(name GroupName); + +// Export UAnimTree::execSetGroupRateScale(FFrame&, void* const) +native final function SetGroupRateScale(name GroupName, float NewRateScale); + +// Export UAnimTree::execGetGroupRateScale(FFrame&, void* const) +native final function float GetGroupRateScale(name GroupName); + +// Export UAnimTree::execGetGroupIndex(FFrame&, void* const) +native final function int GetGroupIndex(name GroupName); + +defaultproperties +{ + Children[0]=(Name="Child",Anim=none,Weight=1.0000000,BlendWeight=0.0000000,bMirrorSkeleton=false,bIsAdditive=false) + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimationCompressionAlgorithm.uc b/exported/Engine/Classes/AnimationCompressionAlgorithm.uc new file mode 100755 index 00000000..e981f388 --- /dev/null +++ b/exported/Engine/Classes/AnimationCompressionAlgorithm.uc @@ -0,0 +1,15 @@ +class AnimationCompressionAlgorithm extends Object + abstract + native(Anim) + hidecategories(Object); + +var string Description; +var bool bNeedsSkeleton; +var AnimSequence.AnimationCompressionFormat TranslationCompressionFormat; +var() AnimSequence.AnimationCompressionFormat RotationCompressionFormat; + +defaultproperties +{ + Description="None" + RotationCompressionFormat=AnimationCompressionFormat.ACF_Float96NoW +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimationCompressionAlgorithm_Automatic.uc b/exported/Engine/Classes/AnimationCompressionAlgorithm_Automatic.uc new file mode 100755 index 00000000..51df0eb5 --- /dev/null +++ b/exported/Engine/Classes/AnimationCompressionAlgorithm_Automatic.uc @@ -0,0 +1,22 @@ +class AnimationCompressionAlgorithm_Automatic extends AnimationCompressionAlgorithm + native(Anim) + hidecategories(Object,AnimationCompressionAlgorithm); + +var() float MaxEndEffectorError; +var() bool bTryFixedBitwiseCompression; +var() bool bTryPerTrackBitwiseCompression; +var() bool bTryLinearKeyRemovalCompression; +var() bool bTryIntervalKeyRemoval; +var() bool bRunCurrentDefaultCompressor; +var() bool bAutoReplaceIfExistingErrorTooGreat; +var() bool bRaiseMaxErrorToExisting; + +defaultproperties +{ + MaxEndEffectorError=1.0000000 + bTryFixedBitwiseCompression=true + bTryPerTrackBitwiseCompression=true + bTryLinearKeyRemovalCompression=true + bTryIntervalKeyRemoval=true + Description="Automatic" +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimationCompressionAlgorithm_BitwiseCompressOnly.uc b/exported/Engine/Classes/AnimationCompressionAlgorithm_BitwiseCompressOnly.uc new file mode 100755 index 00000000..c0fa8082 --- /dev/null +++ b/exported/Engine/Classes/AnimationCompressionAlgorithm_BitwiseCompressOnly.uc @@ -0,0 +1,8 @@ +class AnimationCompressionAlgorithm_BitwiseCompressOnly extends AnimationCompressionAlgorithm + native(Anim) + hidecategories(Object); + +defaultproperties +{ + Description="Bitwise Compress Only" +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimationCompressionAlgorithm_LeastDestructive.uc b/exported/Engine/Classes/AnimationCompressionAlgorithm_LeastDestructive.uc new file mode 100755 index 00000000..3e10f2ed --- /dev/null +++ b/exported/Engine/Classes/AnimationCompressionAlgorithm_LeastDestructive.uc @@ -0,0 +1,9 @@ +class AnimationCompressionAlgorithm_LeastDestructive extends AnimationCompressionAlgorithm + native(Anim) + hidecategories(Object); + +defaultproperties +{ + Description="Least Destructive" + RotationCompressionFormat=AnimationCompressionFormat.ACF_None +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimationCompressionAlgorithm_PerTrackCompression.uc b/exported/Engine/Classes/AnimationCompressionAlgorithm_PerTrackCompression.uc new file mode 100755 index 00000000..f98d87dc --- /dev/null +++ b/exported/Engine/Classes/AnimationCompressionAlgorithm_PerTrackCompression.uc @@ -0,0 +1,47 @@ +class AnimationCompressionAlgorithm_PerTrackCompression extends AnimationCompressionAlgorithm_RemoveLinearKeys + native(Anim) + hidecategories(Object,AnimationCompressionAlgorithm); + +var(PerTrack) float MaxZeroingThreshold; +var(PerTrack) float MaxPosDiffBitwise; +var(PerTrack) float MaxAngleDiffBitwise; +var(PerTrack) array AllowedRotationFormats; +var(PerTrack) array AllowedTranslationFormats; +var(Resampling) bool bResampleAnimation; +var(AdaptiveError) bool bUseAdaptiveError; +var(AdaptiveError) bool bUseOverrideForEndEffectors; +var(AdaptiveError2) bool bUseAdaptiveError2; +var(Resampling) float ResampledFramerate; +var(Resampling) int MinKeysForResampling; +var(AdaptiveError) int TrackHeightBias; +var(AdaptiveError) float ParentingDivisor; +var(AdaptiveError) float ParentingDivisorExponent; +var(AdaptiveError2) float RotationErrorSourceRatio; +var(AdaptiveError2) float TranslationErrorSourceRatio; +var(AdaptiveError2) float MaxErrorPerTrackRatio; +var float PerturbationProbeSize; +var native const transient Pointer PerReductionCachedData; + +defaultproperties +{ + MaxZeroingThreshold=0.0002000 + MaxPosDiffBitwise=0.0070000 + MaxAngleDiffBitwise=0.0020000 + AllowedRotationFormats[0]=125 + AllowedRotationFormats[1]=0 + AllowedTranslationFormats[0]=125 + AllowedTranslationFormats[1]=0 + AllowedTranslationFormats[2]=0 + ResampledFramerate=15.0000000 + MinKeysForResampling=10 + TrackHeightBias=1 + ParentingDivisor=1.0000000 + ParentingDivisorExponent=1.0000000 + RotationErrorSourceRatio=0.8000000 + TranslationErrorSourceRatio=0.8000000 + MaxErrorPerTrackRatio=0.3000000 + PerturbationProbeSize=0.0010000 + bRetarget=false + bActuallyFilterLinearKeys=false + Description="Compress each track independently" +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimationCompressionAlgorithm_RemoveEverySecondKey.uc b/exported/Engine/Classes/AnimationCompressionAlgorithm_RemoveEverySecondKey.uc new file mode 100755 index 00000000..17a29a0d --- /dev/null +++ b/exported/Engine/Classes/AnimationCompressionAlgorithm_RemoveEverySecondKey.uc @@ -0,0 +1,12 @@ +class AnimationCompressionAlgorithm_RemoveEverySecondKey extends AnimationCompressionAlgorithm + native(Anim) + hidecategories(Object); + +var() int MinKeys; +var() bool bStartAtSecondKey; + +defaultproperties +{ + MinKeys=10 + Description="Remove Every Second Key" +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimationCompressionAlgorithm_RemoveLinearKeys.uc b/exported/Engine/Classes/AnimationCompressionAlgorithm_RemoveLinearKeys.uc new file mode 100755 index 00000000..bdbd5e00 --- /dev/null +++ b/exported/Engine/Classes/AnimationCompressionAlgorithm_RemoveLinearKeys.uc @@ -0,0 +1,26 @@ +class AnimationCompressionAlgorithm_RemoveLinearKeys extends AnimationCompressionAlgorithm + native(Anim) + hidecategories(Object); + +var(LinearKeyRemoval) float MaxPosDiff; +var(LinearKeyRemoval) float MaxAngleDiff; +var(LinearKeyRemoval) float MaxEffectorDiff; +var(LinearKeyRemoval) float MinEffectorDiff; +var(LinearKeyRemoval) float EffectorDiffSocket; +var(LinearKeyRemoval) float ParentKeyScale; +var(LinearKeyRemoval) bool bRetarget; +var(LinearKeyRemoval) bool bActuallyFilterLinearKeys; + +defaultproperties +{ + MaxPosDiff=0.0010000 + MaxAngleDiff=0.0007500 + MaxEffectorDiff=0.0010000 + MinEffectorDiff=0.0010000 + EffectorDiffSocket=0.0010000 + ParentKeyScale=2.0000000 + bRetarget=true + bActuallyFilterLinearKeys=true + Description="Remove Linear Keys" + bNeedsSkeleton=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimationCompressionAlgorithm_RemoveTrivialKeys.uc b/exported/Engine/Classes/AnimationCompressionAlgorithm_RemoveTrivialKeys.uc new file mode 100755 index 00000000..52aa6faf --- /dev/null +++ b/exported/Engine/Classes/AnimationCompressionAlgorithm_RemoveTrivialKeys.uc @@ -0,0 +1,13 @@ +class AnimationCompressionAlgorithm_RemoveTrivialKeys extends AnimationCompressionAlgorithm + native(Anim) + hidecategories(Object); + +var() float MaxPosDiff; +var() float MaxAngleDiff; + +defaultproperties +{ + MaxPosDiff=0.0001000 + MaxAngleDiff=0.0003000 + Description="Remove Trivial Keys" +} \ No newline at end of file diff --git a/exported/Engine/Classes/AnimationCompressionAlgorithm_RevertToRaw.uc b/exported/Engine/Classes/AnimationCompressionAlgorithm_RevertToRaw.uc new file mode 100755 index 00000000..ed2de2f7 --- /dev/null +++ b/exported/Engine/Classes/AnimationCompressionAlgorithm_RevertToRaw.uc @@ -0,0 +1,9 @@ +class AnimationCompressionAlgorithm_RevertToRaw extends AnimationCompressionAlgorithm + native(Anim) + hidecategories(Object); + +defaultproperties +{ + Description="Revert To Raw" + RotationCompressionFormat=AnimationCompressionFormat.ACF_None +} \ No newline at end of file diff --git a/exported/Engine/Classes/ApexAsset.uc b/exported/Engine/Classes/ApexAsset.uc new file mode 100755 index 00000000..5f8f4c2b --- /dev/null +++ b/exported/Engine/Classes/ApexAsset.uc @@ -0,0 +1,6 @@ +class ApexAsset extends Object + native(Mesh) + hidecategories(Object); + +var const editinline string OriginalApexName; +var native const export editinline transient array ApexComponents; diff --git a/exported/Engine/Classes/ApexClothingAsset.uc b/exported/Engine/Classes/ApexClothingAsset.uc new file mode 100755 index 00000000..e5942376 --- /dev/null +++ b/exported/Engine/Classes/ApexClothingAsset.uc @@ -0,0 +1,54 @@ +class ApexClothingAsset extends ApexAsset + native(Mesh) + hidecategories(Object,Object); + +struct native ClothingLodInfo +{ + var() init const editfixedsize array LODMaterialMap; + + structdefaultproperties + { + LODMaterialMap=none + } +}; + +var() const editfixedsize array LodMaterialInfo; +var native Pointer MApexAsset; +var() const editfixedsize array Materials; +var const deprecated ApexGenericAsset ApexClothingLibrary; +var() const bool bUseHardwareCloth; +var() const bool bFallbackSkinning; +var() const bool bSlowStart; +var() const bool bRecomputeNormals; +var() const bool bAllowAdaptiveTargetFrequency; +var() const bool bResetAfterTeleport; +var() const bool bUseLocalSpaceSimulation; +var bool bHasUniqueAssetMaterialNames; +var(Sound) bool IgnoreInitialTrigger; +var() const int UVChannelForTangentUpdate; +var() const float MaxDistanceBlendTime; +var() const float ContinuousRotationThreshold; +var() const float ContinuousDistanceThreshold; +var() const float LodWeightsMaxDistance; +var() const float LodWeightsDistanceWeight; +var() const float LodWeightsBias; +var() const float LodWeightsBenefitsBias; +var() const float LODDecayTime; +var(Sound) SoundCue SoundOnMove; +var(Sound) SoundCue SoundOnRest; +var(Sound) SoundCue SoundWhileMoving; +var(Sound) float SpeedThresholdOnMove; +var(Sound) float SpeedThresholdOnRest; + +defaultproperties +{ + bUseHardwareCloth=true + bSlowStart=true + bResetAfterTeleport=true + MaxDistanceBlendTime=1.0000000 + ContinuousRotationThreshold=84.0000000 + ContinuousDistanceThreshold=50.0000000 + LodWeightsMaxDistance=10000.0000000 + LodWeightsDistanceWeight=1.0000000 + LODDecayTime=10.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ApexComponentBase.uc b/exported/Engine/Classes/ApexComponentBase.uc new file mode 100755 index 00000000..a307de52 --- /dev/null +++ b/exported/Engine/Classes/ApexComponentBase.uc @@ -0,0 +1,22 @@ +class ApexComponentBase extends MeshComponent + native(Mesh) + editinlinenew + hidecategories(Object); + +var protected native const transient Pointer ComponentBaseResources; +var protected native const transient RenderCommandFence_Mirror ReleaseResourcesFence; +var() const ApexAsset Asset; +var() Color WireframeColor; +var const bool bAssetChanged; + +defaultproperties +{ + WireframeColor=(R=255,G=128,B=64,A=255) + ReplacementPrimitive=none + CollideActors=true + BlockActors=true + BlockZeroExtent=true + BlockNonZeroExtent=true + BlockRigidBody=true + TickGroup=ETickingGroup.TG_PreAsyncWork +} \ No newline at end of file diff --git a/exported/Engine/Classes/ApexDestructibleActor.uc b/exported/Engine/Classes/ApexDestructibleActor.uc new file mode 100755 index 00000000..ff3cbacf --- /dev/null +++ b/exported/Engine/Classes/ApexDestructibleActor.uc @@ -0,0 +1,82 @@ +class ApexDestructibleActor extends Actor + native(Mesh) + placeable + hidecategories(Navigation); + +var() export editinline DynamicLightEnvironmentComponent LightEnvironment; +var() bool bFractureMaterialOverride; +var() const bool bPlaySingleFractureMaterialEffect; +var() const editfixedsize array FractureMaterials; +var() const editconst export editinline ApexStaticDestructibleComponent StaticDestructibleComponent; +var() const int LOD; +var init array VisibilityFactors; +var transient array FractureSounds; +var transient array FractureParticleEffects; + +event SpawnFractureEmitter(ParticleSystem EmitterTemplate, Vector SpawnLocation, Vector SpawnDirection) +{ + local editinline ParticleSystemComponent PSC; + local LightingChannelContainer Lights; + + PSC = WorldInfo.MyEmitterPool.SpawnEmitter(EmitterTemplate, SpawnLocation, Rotator(SpawnDirection)); + Lights = PSC.LightingChannels; + Lights.Dynamic = true; + Lights.bInitialized = true; + PSC.SetLightingChannels(Lights); + //return; +} + +// Export UApexDestructibleActor::execCacheFractureEffects(FFrame&, void* const) +native function CacheFractureEffects(); + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + CacheFractureEffects(); + //return; +} + +// Export UApexDestructibleActor::execTakeDamage(FFrame&, void* const) +native simulated function TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser); + +// Export UApexDestructibleActor::execTakeRadiusDamage(FFrame&, void* const) +native simulated function TakeRadiusDamage(Controller InstigatedBy, float BaseDamage, float DamageRadius, Class DamageType, float Momentum, Vector HurtOrigin, bool bFullDamage, Actor DamageCauser, optional float DamageFalloffExponent = 1.0000000); + +function OnSetMaterial(SeqAct_SetMaterial Action) +{ + StaticDestructibleComponent.SetMaterial(Action.MaterialIndex, Action.NewMaterial); + //return; +} + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'Engine.Default__ApexDestructibleActor.LightEnvironment0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'LightEnvironment0' + begin object name="LightEnvironment0" class=Engine.DynamicLightEnvironmentComponent + bEnabled=false + end object + LightEnvironment=LightEnvironment0 + // Reference: ApexStaticDestructibleComponent'Engine.Default__ApexDestructibleActor.DestructibleComponent0' + begin object name="DestructibleComponent0" class=Engine.ApexStaticDestructibleComponent + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__ApexDestructibleActor.LightEnvironment0' + bAllowApproximateOcclusion=true + bForceDirectLightMap=true + bCastDynamicShadow=false + end object + StaticDestructibleComponent=DestructibleComponent0 + LOD=-1 + Components[0]=LightEnvironment0 + Components[1]=DestructibleComponent0 + bNoDelete=true + bRouteBeginPlayEvenIfStatic=false + bGameRelevant=true + bCanBeDamaged=true + bCollideActors=true + bBlockActors=true + bProjTarget=true + bNoEncroachCheck=true + bEdShouldSnap=true + CollisionComponent=DestructibleComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ApexDestructibleActorSpawnable.uc b/exported/Engine/Classes/ApexDestructibleActorSpawnable.uc new file mode 100755 index 00000000..e1d31f13 --- /dev/null +++ b/exported/Engine/Classes/ApexDestructibleActorSpawnable.uc @@ -0,0 +1,25 @@ +class ApexDestructibleActorSpawnable extends ApexDestructibleActor + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'Engine.Default__ApexDestructibleActorSpawnable.LightEnvironment0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'LightEnvironment0' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__ApexDestructibleActor.LightEnvironment0' + begin object name="LightEnvironment0" + end object + LightEnvironment=LightEnvironment0 + // Reference: ApexStaticDestructibleComponent'Engine.Default__ApexDestructibleActorSpawnable.DestructibleComponent0' + // Archetype: ApexStaticDestructibleComponent'Engine.Default__ApexDestructibleActor.DestructibleComponent0' + begin object name="DestructibleComponent0" + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__ApexDestructibleActorSpawnable.LightEnvironment0' + end object + StaticDestructibleComponent=DestructibleComponent0 + Components[0]=LightEnvironment0 + Components[1]=DestructibleComponent0 + bNoDelete=false + CollisionComponent=DestructibleComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ApexDestructibleAsset.uc b/exported/Engine/Classes/ApexDestructibleAsset.uc new file mode 100755 index 00000000..c3a7b4cf --- /dev/null +++ b/exported/Engine/Classes/ApexDestructibleAsset.uc @@ -0,0 +1,181 @@ +class ApexDestructibleAsset extends ApexAsset + native(Mesh) + hidecategories(Object,Object); + +enum EImpactDamageOverride +{ + IDO_None, // 0 + IDO_On, // 1 + IDO_Off, // 2 + IDO_MAX // 3 +}; + +struct native NxDestructibleDepthParameters +{ + var deprecated bool TAKE_IMPACT_DAMAGE; + var deprecated bool IGNORE_POSE_UPDATES; + var deprecated bool IGNORE_RAYCAST_CALLBACKS; + var deprecated bool IGNORE_CONTACT_CALLBACKS; + var deprecated bool USER_FLAG; + var deprecated bool USER_FLAG_1; + var deprecated bool USER_FLAG_2; + var deprecated bool USER_FLAG_3; + var() ApexDestructibleAsset.EImpactDamageOverride ImpactDamageOverride; + + structdefaultproperties + { + ImpactDamageOverride=EImpactDamageOverride.IDO_None + } +}; + +struct native NxDestructibleParametersFlag +{ + var() bool ACCUMULATE_DAMAGE; + var() bool ASSET_DEFINED_SUPPORT; + var() bool WORLD_SUPPORT; + var() bool DEBRIS_TIMEOUT; + var() bool DEBRIS_MAX_SEPARATION; + var() bool CRUMBLE_SMALLEST_CHUNKS; + var() bool ACCURATE_RAYCASTS; + var() bool USE_VALID_BOUNDS; + var() bool FORM_EXTENDED_STRUCTURES; + + structdefaultproperties + { + ACCUMULATE_DAMAGE=false + ASSET_DEFINED_SUPPORT=false + WORLD_SUPPORT=false + DEBRIS_TIMEOUT=false + DEBRIS_MAX_SEPARATION=false + CRUMBLE_SMALLEST_CHUNKS=false + ACCURATE_RAYCASTS=false + USE_VALID_BOUNDS=false + FORM_EXTENDED_STRUCTURES=false + } +}; + +struct native NxDestructibleDamageParameters +{ + var() float DamageThreshold; + var() float DamageSpread; + var() float ImpactDamage; + var() float ImpactResistance; + var() int DefaultImpactDamageDepth; + + structdefaultproperties + { + DamageThreshold=0.0000000 + DamageSpread=0.0000000 + ImpactDamage=0.0000000 + ImpactResistance=0.0000000 + DefaultImpactDamageDepth=-1 + } +}; + +struct native NxDestructibleDebrisParameters +{ + var() float DebrisLifetimeMin; + var() float DebrisLifetimeMax; + var() float DebrisMaxSeparationMin; + var() float DebrisMaxSeparationMax; + var() Box ValidBounds; + + structdefaultproperties + { + DebrisLifetimeMin=0.0000000 + DebrisLifetimeMax=0.0000000 + DebrisMaxSeparationMin=0.0000000 + DebrisMaxSeparationMax=0.0000000 + ValidBounds=(Min=(X=-500000.0000000,Y=-500000.0000000,Z=-500000.0000000),Max=(X=500000.0000000,Y=500000.0000000,Z=500000.0000000),IsValid=0) + } +}; + +struct native NxDestructibleAdvancedParameters +{ + var() float DamageCap; + var() float ImpactVelocityThreshold; + var() float MaxChunkSpeed; + var() float MassScaleExponent; + var() float MassScale; + var() float FractureImpulseScale; + + structdefaultproperties + { + DamageCap=0.0000000 + ImpactVelocityThreshold=0.0000000 + MaxChunkSpeed=0.0000000 + MassScaleExponent=0.0000000 + MassScale=0.0000000 + FractureImpulseScale=0.0000000 + } +}; + +struct native NxDestructibleParameters +{ + var(Damage) NxDestructibleDamageParameters DamageParameters; + var(Debris) NxDestructibleDebrisParameters DebrisParameters; + var(Advanced) NxDestructibleAdvancedParameters AdvancedParameters; + var deprecated float DamageThreshold; + var deprecated float DamageToRadius; + var deprecated float DamageCap; + var deprecated float ForceToDamage; + var deprecated float ImpactVelocityThreshold; + var deprecated float MaterialStrength; + var deprecated float DamageToPercentDeformation; + var deprecated float DeformationPercentLimit; + var deprecated bool bFormExtendedStructures; + var() int SupportDepth; + var() int MinimumFractureDepth; + var() int DebrisDepth; + var() int EssentialDepth; + var deprecated float DebrisLifetimeMin; + var deprecated float DebrisLifetimeMax; + var deprecated float DebrisMaxSeparationMin; + var deprecated float DebrisMaxSeparationMax; + var deprecated Box ValidBounds; + var deprecated float MaxChunkSpeed; + var deprecated float MassScaleExponent; + var() NxDestructibleParametersFlag Flags; + var deprecated float GrbVolumeLimit; + var deprecated float GrbParticleSpacing; + var deprecated float FractureImpulseScale; + var() editfixedsize array DepthParameters; + var() int DynamicChunksDominanceGroup; + var() bool UseDynamicChunksGroupsMask; + var() const PrimitiveComponent.ERBCollisionChannel DynamicChunksChannel; + var() const RBCollisionChannelContainer DynamicChunksCollideWithChannels; + + structdefaultproperties + { + DamageParameters=(DamageThreshold=0.0000000,DamageSpread=0.0000000,ImpactDamage=0.0000000,ImpactResistance=0.0000000,DefaultImpactDamageDepth=-1) + DebrisParameters=(DebrisLifetimeMin=0.0000000,DebrisLifetimeMax=0.0000000,DebrisMaxSeparationMin=0.0000000,DebrisMaxSeparationMax=0.0000000,ValidBounds=(Min=(X=-500000.0000000,Y=-500000.0000000,Z=-500000.0000000),Max=(X=500000.0000000,Y=500000.0000000,Z=500000.0000000),IsValid=0)) + AdvancedParameters=(DamageCap=0.0000000,ImpactVelocityThreshold=0.0000000,MaxChunkSpeed=0.0000000,MassScaleExponent=0.0000000,MassScale=0.0000000,FractureImpulseScale=0.0000000) + SupportDepth=0 + MinimumFractureDepth=0 + DebrisDepth=0 + EssentialDepth=0 + Flags=(ACCUMULATE_DAMAGE=false,ASSET_DEFINED_SUPPORT=false,WORLD_SUPPORT=false,DEBRIS_TIMEOUT=false,DEBRIS_MAX_SEPARATION=false,CRUMBLE_SMALLEST_CHUNKS=false,ACCURATE_RAYCASTS=false,USE_VALID_BOUNDS=false,FORM_EXTENDED_STRUCTURES=false) + DepthParameters=none + DynamicChunksDominanceGroup=-1 + UseDynamicChunksGroupsMask=false + DynamicChunksChannel=ERBCollisionChannel.RBCC_Default + DynamicChunksCollideWithChannels=(Default=false,Nothing=false,Pawn=false,Vehicle=false,Water=false,GameplayPhysics=false,EffectPhysics=false,Untitled1=false,Untitled2=false,Untitled3=false,Untitled4=false,Cloth=false,FluidDrain=false,SoftBody=false,FracturedMeshPart=false,BlockingVolume=false,DeadPawn=false,Clothing=false,ClothingCollision=false) + } +}; + +var native Pointer MApexAsset; +var() const editfixedsize array Materials; +var() const editfixedsize array FractureMaterials; +var() const bool bPlaySingleFractureMaterialEffect; +var bool bHasUniqueAssetMaterialNames; +var deprecated bool bDynamic; +var() PhysicalMaterial DefaultPhysMaterial; +var native Pointer MDestructibleThumbnailComponent; +var() string CrumbleEmitterName; +var() string DustEmitterName; +var() NxDestructibleParameters DestructibleParameters; + +defaultproperties +{ + DestructibleParameters=(DamageParameters=(DamageThreshold=0.0000000,DamageSpread=0.0000000,ImpactDamage=0.0000000,ImpactResistance=0.0000000,DefaultImpactDamageDepth=-1),DebrisParameters=(DebrisLifetimeMin=0.0000000,DebrisLifetimeMax=0.0000000,DebrisMaxSeparationMin=0.0000000,DebrisMaxSeparationMax=0.0000000,ValidBounds=(Min=(X=-500000.0000000,Y=-500000.0000000,Z=-500000.0000000),Max=(X=500000.0000000,Y=500000.0000000,Z=500000.0000000),IsValid=0)),AdvancedParameters=(DamageCap=0.0000000,ImpactVelocityThreshold=0.0000000,MaxChunkSpeed=0.0000000,MassScaleExponent=0.0000000,MassScale=0.0000000,FractureImpulseScale=0.0000000),SupportDepth=0,MinimumFractureDepth=0,DebrisDepth=0,EssentialDepth=0,Flags=(ACCUMULATE_DAMAGE=false,ASSET_DEFINED_SUPPORT=false,WORLD_SUPPORT=false,DEBRIS_TIMEOUT=false,DEBRIS_MAX_SEPARATION=false,CRUMBLE_SMALLEST_CHUNKS=false,ACCURATE_RAYCASTS=false,USE_VALID_BOUNDS=false,FORM_EXTENDED_STRUCTURES=false),DepthParameters=none,DynamicChunksDominanceGroup=-1,UseDynamicChunksGroupsMask=false,DynamicChunksChannel=ERBCollisionChannel.RBCC_Default,DynamicChunksCollideWithChannels=(Default=false,Nothing=false,Pawn=false,Vehicle=false,Water=false,GameplayPhysics=false,EffectPhysics=false,Untitled1=false,Untitled2=false,Untitled3=false,Untitled4=false,Cloth=false,FluidDrain=false,SoftBody=false,FracturedMeshPart=false,BlockingVolume=false,DeadPawn=false,Clothing=false,ClothingCollision=false)) +} \ No newline at end of file diff --git a/exported/Engine/Classes/ApexDestructibleDamageParameters.uc b/exported/Engine/Classes/ApexDestructibleDamageParameters.uc new file mode 100755 index 00000000..559719fd --- /dev/null +++ b/exported/Engine/Classes/ApexDestructibleDamageParameters.uc @@ -0,0 +1,40 @@ +class ApexDestructibleDamageParameters extends Object + native(Physics) + hidecategories(Object); + +enum EDamageParameterOverrideMode +{ + DPOM_Absolute, // 0 + DPOM_Multiplier, // 1 + DPOM_MAX // 2 +}; + +struct native DamageParameters +{ + var() ApexDestructibleDamageParameters.EDamageParameterOverrideMode OverrideMode; + var() float BaseDamage; + var() float Radius; + var() float Momentum; + + structdefaultproperties + { + OverrideMode=EDamageParameterOverrideMode.DPOM_Absolute + BaseDamage=0.0000000 + Radius=0.0000000 + Momentum=0.0000000 + } +}; + +struct native DamagePair +{ + var() name DamageCauserName; + var() DamageParameters Params; + + structdefaultproperties + { + DamageCauserName="None" + Params=(OverrideMode=EDamageParameterOverrideMode.DPOM_Absolute,BaseDamage=0.0000000,Radius=0.0000000,Momentum=0.0000000) + } +}; + +var() array DamageMap; diff --git a/exported/Engine/Classes/ApexDynamicComponent.uc b/exported/Engine/Classes/ApexDynamicComponent.uc new file mode 100755 index 00000000..2bd82c6d --- /dev/null +++ b/exported/Engine/Classes/ApexDynamicComponent.uc @@ -0,0 +1,11 @@ +class ApexDynamicComponent extends ApexComponentBase + native(Mesh) + editinlinenew + hidecategories(Object); + +var protected native const transient Pointer ComponentDynamicResources; + +defaultproperties +{ + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/ApexGenericAsset.uc b/exported/Engine/Classes/ApexGenericAsset.uc new file mode 100755 index 00000000..fb106ecd --- /dev/null +++ b/exported/Engine/Classes/ApexGenericAsset.uc @@ -0,0 +1,5 @@ +class ApexGenericAsset extends ApexAsset + native(Mesh) + hidecategories(Object,Object); + +var native Pointer MApexAsset; diff --git a/exported/Engine/Classes/ApexStaticComponent.uc b/exported/Engine/Classes/ApexStaticComponent.uc new file mode 100755 index 00000000..f27efc63 --- /dev/null +++ b/exported/Engine/Classes/ApexStaticComponent.uc @@ -0,0 +1,10 @@ +class ApexStaticComponent extends ApexComponentBase + native(Mesh) + editinlinenew + hidecategories(Object); + +defaultproperties +{ + ReplacementPrimitive=none + bUsePrecomputedShadows=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ApexStaticDestructibleComponent.uc b/exported/Engine/Classes/ApexStaticDestructibleComponent.uc new file mode 100755 index 00000000..4eb076e2 --- /dev/null +++ b/exported/Engine/Classes/ApexStaticDestructibleComponent.uc @@ -0,0 +1,18 @@ +class ApexStaticDestructibleComponent extends ApexStaticComponent + native(Mesh) + editinlinenew + hidecategories(Object); + +var(Physics) float SleepEnergyThreshold; +var(Physics) float SleepDamping; +var duplicatetransient native Pointer ApexDestructibleActor; +var duplicatetransient native Pointer ApexDestructiblePreview; +var native bool bIsThumbnailComponent; + +defaultproperties +{ + SleepEnergyThreshold=1250.0000000 + SleepDamping=0.2000000 + ReplacementPrimitive=none + bUsePrecomputedShadows=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/AppNotificationsBase.uc b/exported/Engine/Classes/AppNotificationsBase.uc new file mode 100755 index 00000000..35bdcc9f --- /dev/null +++ b/exported/Engine/Classes/AppNotificationsBase.uc @@ -0,0 +1,89 @@ +class AppNotificationsBase extends PlatformInterfaceBase + transient + native(PlatformInterface); + +struct native NotificationMessageInfo +{ + var string Key; + var string Value; + + structdefaultproperties + { + Key="" + Value="" + } +}; + +struct native NotificationInfo +{ + var bool bIsLocal; + var string MessageBody; + var int BadgeNumber; + var array MessageInfo; + + structdefaultproperties + { + bIsLocal=false + MessageBody="" + BadgeNumber=0 + MessageInfo=none + } +}; + +struct native LaunchNotificationInfo +{ + var bool bWasLaunchedViaNotification; + var NotificationInfo Notification; + + structdefaultproperties + { + bWasLaunchedViaNotification=false + Notification=(bIsLocal=false,MessageBody="",BadgeNumber=0,MessageInfo=none) + } +}; + +var const LaunchNotificationInfo AppLaunchNotification; +//var delegate __OnReceivedLocalNotification__Delegate; +//var delegate __OnReceivedRemoteNotification__Delegate; + +// Export UAppNotificationsBase::execInit(FFrame&, void* const) +native event Init(); + +function bool WasLaunchedViaNotification() +{ + return AppLaunchNotification.bWasLaunchedViaNotification; + //return ReturnValue; +} + +// Export UAppNotificationsBase::execScheduleLocalNotification(FFrame&, void* const) +native function ScheduleLocalNotification(const out NotificationInfo Notification, int StartOffsetSeconds); + +// Export UAppNotificationsBase::execCancelAllScheduledLocalNotifications(FFrame&, void* const) +native function CancelAllScheduledLocalNotifications(); + +delegate OnReceivedLocalNotification(const out NotificationInfo Notification, bool bWasAppActive) +{ + //return; +} + +delegate OnReceivedRemoteNotification(const out NotificationInfo Notification, bool bWasAppActive) +{ + //return; +} + +function DebugLogNotification(const out NotificationInfo Notification) +{ + local int Idx; + + Idx = 0; + J0x0B: + + // End:0x44 [Loop If] + if(Idx < Notification.MessageInfo.Length) + { + Idx++; + // [Loop Continue] + goto J0x0B; + } + //return; +} diff --git a/exported/Engine/Classes/ArrowComponent.uc b/exported/Engine/Classes/ArrowComponent.uc new file mode 100755 index 00000000..d0d221a9 --- /dev/null +++ b/exported/Engine/Classes/ArrowComponent.uc @@ -0,0 +1,20 @@ +class ArrowComponent extends PrimitiveComponent + native + editinlinenew + collapsecategories + noexport + hidecategories(Object); + +var() Color ArrowColor; +var() float ArrowSize; +var() bool bTreatAsASprite; + +defaultproperties +{ + ArrowColor=(R=255,G=0,B=0,A=255) + ArrowSize=1.0000000 + ReplacementPrimitive=none + HiddenGame=true + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/AudioComponent.uc b/exported/Engine/Classes/AudioComponent.uc new file mode 100755 index 00000000..e0a9594b --- /dev/null +++ b/exported/Engine/Classes/AudioComponent.uc @@ -0,0 +1,175 @@ +class AudioComponent extends ActorComponent + native + editinlinenew + collapsecategories + noexport + hidecategories(Object,ActorComponent); + +struct native AudioComponentParam +{ + var() name ParamName; + var() float FloatParam; + var() SoundNodeWave WaveParam; + + structdefaultproperties + { + ParamName="None" + FloatParam=0.0000000 + WaveParam=none + } +}; + +var() SoundCue SoundCue; +var native const SoundNode CueFirstNode; +var() editinline array InstanceParameters; +var bool bUseOwnerLocation; +var bool bAutoPlay; +var bool bAutoDestroy; +var bool bStopWhenOwnerDestroyed; +var bool bShouldRemainActiveIfDropped; +var bool bWasOccluded; +var transient bool bNeedsOcclusionCheck; +var transient bool bSuppressSubtitles; +var transient bool bWasPlaying; +var bool bAllowSpatialization; +var transient bool bFinished; +var transient bool bApplyRadioFilter; +var transient bool bRadioFilterSelected; +var transient bool bPreviewComponent; +var transient bool bIgnoreForFlushing; +var transient float StereoBleed; +var transient float LFEBleed; +var transient bool bEQFilterApplied; +var transient bool bAlwaysPlay; +var transient bool bIsUISound; +var transient bool bIsMusic; +var transient bool bReverb; +var transient bool bCenterChannelOnly; +var transient float m_fAdditionalPriority; +var duplicatetransient native const array WaveInstances; +var duplicatetransient native const array SoundNodeData; +var duplicatetransient native const map{VOID,VOID} SoundNodeOffsetMap; +var duplicatetransient native const MultiMap_Mirror SoundNodeResetWaveMap; +var duplicatetransient native const Pointer Listener; +var duplicatetransient native const float PlaybackTime; +var duplicatetransient native const PortalVolume PortalVolume; +var duplicatetransient native Vector Location; +var duplicatetransient native const Vector ComponentLocation; +var const transient Actor LastOwner; +var native float SubtitlePriority; +var float FadeInStartTime; +var float FadeInStopTime; +var float FadeInTargetVolume; +var float FadeOutStartTime; +var float FadeOutStopTime; +var float FadeOutTargetVolume; +var float m_fFadeOutTargetPitch; +var float AdjustVolumeStartTime; +var float AdjustVolumeStopTime; +var float AdjustVolumeTargetVolume; +var float CurrAdjustVolumeTargetVolume; +var native const SoundNode CurrentNotifyBufferFinishedHook; +var native const Vector CurrentLocation; +var native const Vector CurrentVelocity; +var native const float CurrentVolume; +var native const float CurrentPitch; +var native const float CurrentHighFrequencyGain; +var native const int CurrentUseSpatialization; +var native const int CurrentNotifyOnLoop; +var native const float OmniRadius; +var native const float CurrentVolumeMultiplier; +var native const float CurrentPitchMultiplier; +var native const float CurrentHighFrequencyGainMultiplier; +var native const float CurrentVoiceCenterChannelVolume; +var native const float CurrentRadioFilterVolume; +var native const float CurrentRadioFilterVolumeThreshold; +var native const Double LastUpdateTime; +var native const float SourceInteriorVolume; +var native const float SourceInteriorLPF; +var native const float CurrentInteriorVolume; +var native const float CurrentInteriorLPF; +var duplicatetransient native const Double SoundModeStartTime; +var const transient Vector LastLocation; +var native const InteriorSettings LastInteriorSettings; +var native const int LastReverbVolumeIndex; +var() float VolumeMultiplier; +var() float PitchMultiplier; +var() float HighFrequencyGainMultiplier; +var float OcclusionCheckInterval; +var transient float LastOcclusionCheckTime; +var const export editinline DrawSoundRadiusComponent PreviewSoundRadius; +//var delegate __OnAudioFinished__Delegate; +//var delegate __OnAudioFinishedFX__Delegate; +//var delegate __OnQueueSubtitles__Delegate; + +// Export UAudioComponent::execApplyAdditionalPriority(FFrame&, void* const) +native function ApplyAdditionalPriority(); + +// Export UAudioComponent::execPlay(FFrame&, void* const) +native final function Play(); + +// Export UAudioComponent::execStop(FFrame&, void* const) +native final function Stop(optional bool bFadeOut); + +// Export UAudioComponent::execIsPlaying(FFrame&, void* const) +native final function bool IsPlaying(); + +// Export UAudioComponent::execIsFadingIn(FFrame&, void* const) +native final function bool IsFadingIn(); + +// Export UAudioComponent::execIsFadingOut(FFrame&, void* const) +native final function bool IsFadingOut(); + +// Export UAudioComponent::execFadeIn(FFrame&, void* const) +native final function FadeIn(float FadeInDuration, float FadeVolumeLevel); + +// Export UAudioComponent::execFadeOut(FFrame&, void* const) +native final function FadeOut(float FadeOutDuration, float FadeVolumeLevel, optional float FadePitchLevel = 1.0000000); + +// Export UAudioComponent::execAdjustVolume(FFrame&, void* const) +native final function AdjustVolume(float AdjustVolumeDuration, float AdjustVolumeLevel); + +// Export UAudioComponent::execSetFloatParameter(FFrame&, void* const) +native final function SetFloatParameter(name InName, float InFloat); + +// Export UAudioComponent::execSetWaveParameter(FFrame&, void* const) +native final function SetWaveParameter(name InName, SoundNodeWave InWave); + +// Export UAudioComponent::execResetToDefaults(FFrame&, void* const) +native final function ResetToDefaults(); + +delegate OnAudioFinished(AudioComponent AC) +{ + //return; +} + +delegate OnAudioFinishedFX(AudioComponent AC) +{ + //return; +} + +delegate OnQueueSubtitles(array Subtitles, float CueDuration) +{ + //return; +} + +// Export UAudioComponent::execOcclusionChanged(FFrame&, void* const) +native function OcclusionChanged(bool bNowOccluded); + +defaultproperties +{ + bUseOwnerLocation=true + bAllowSpatialization=true + FadeInStopTime=-1.0000000 + FadeInTargetVolume=1.0000000 + FadeOutStopTime=-1.0000000 + FadeOutTargetVolume=1.0000000 + m_fFadeOutTargetPitch=1.0000000 + AdjustVolumeStopTime=-1.0000000 + AdjustVolumeTargetVolume=1.0000000 + CurrAdjustVolumeTargetVolume=1.0000000 + LastLocation=(X=1.0000000,Y=2.0000000,Z=3.0000000) + VolumeMultiplier=1.0000000 + PitchMultiplier=1.0000000 + HighFrequencyGainMultiplier=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/AudioDevice.uc b/exported/Engine/Classes/AudioDevice.uc new file mode 100755 index 00000000..139d0c9a --- /dev/null +++ b/exported/Engine/Classes/AudioDevice.uc @@ -0,0 +1,143 @@ +class AudioDevice extends Subsystem + transient + native(AudioDevice) + config(Engine); + +enum ESoundClassName +{ + Master, // 0 + ESoundClassName_MAX // 1 +}; + +enum EDebugState +{ + DEBUGSTATE_None, // 0 + DEBUGSTATE_IsolateDryAudio, // 1 + DEBUGSTATE_IsolateReverb, // 2 + DEBUGSTATE_TestLPF, // 3 + DEBUGSTATE_TestStereoBleed, // 4 + DEBUGSTATE_TestLFEBleed, // 5 + DEBUGSTATE_DisableLPF, // 6 + DEBUGSTATE_DisableRadio, // 7 + DEBUGSTATE_MAX // 8 +}; + +enum ETTSSpeaker +{ + TTSSPEAKER_Paul, // 0 + TTSSPEAKER_Harry, // 1 + TTSSPEAKER_Frank, // 2 + TTSSPEAKER_Dennis, // 3 + TTSSPEAKER_Kit, // 4 + TTSSPEAKER_Betty, // 5 + TTSSPEAKER_Ursula, // 6 + TTSSPEAKER_Rita, // 7 + TTSSPEAKER_Wendy, // 8 + TTSSPEAKER_MAX // 9 +}; + +struct native Listener +{ + var const PortalVolume PortalVolume; + var Vector Location; + var Vector Up; + var Vector Right; + var Vector Front; + var Vector Velocity; + + structdefaultproperties + { + PortalVolume=none + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Up=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Right=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Front=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Velocity=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct native AudioClassInfo +{ + var const int NumResident; + var const int SizeResident; + var const int NumRealTime; + var const int SizeRealTime; + + structdefaultproperties + { + NumResident=0 + SizeResident=0 + NumRealTime=0 + SizeRealTime=0 + } +}; + +var const config int MaxChannels; +var const config int CommonAudioPoolSize; +var const config float LowPassFilterResonance; +var const config float MinCompressedDurationEditor; +var const config float MinCompressedDurationGame; +var const config string ChirpInSoundNodeWaveName; +var const SoundNodeWave ChirpInSoundNodeWave; +var const config string ChirpOutSoundNodeWaveName; +var const SoundNodeWave ChirpOutSoundNodeWave; +var native const Pointer CommonAudioPool; +var native const int CommonAudioPoolFreeBytes; +var const export editinline transient array AudioComponents; +var const export editinline transient array AudioComponentsToStop; +var native const array Sources; +var native const array FreeSources; +var native const map{VOID,VOID} WaveInstanceSourceMap; +var native const bool bGameWasTicking; +var transient bool bSoundSpawningEnabled; +var native const array Listeners; +var native const QWord CurrentTick; +var() map{VOID,VOID} SoundClasses; +var map{VOID,VOID} SourceSoundClasses; +var map{VOID,VOID} CurrentSoundClasses; +var map{VOID,VOID} DestinationSoundClasses; +var native const map{VOID,VOID} SoundModes; +var native const Pointer Effects; +var native const name BaseSoundModeName; +var native const SoundMode CurrentMode; +var native const Double SoundModeStartTime; +var native const Double SoundModeFadeInStartTime; +var native const Double SoundModeFadeInEndTime; +var native const Double SoundModeEndTime; +var native const int ListenerVolumeIndex; +var native const InteriorSettings ListenerInteriorSettings; +var native const Double InteriorStartTime; +var native const Double InteriorEndTime; +var native const Double ExteriorEndTime; +var native const Double InteriorLPFEndTime; +var native const Double ExteriorLPFEndTime; +var native const float InteriorVolumeInterp; +var native const float InteriorLPFInterp; +var native const float ExteriorVolumeInterp; +var native const float ExteriorLPFInterp; +var const export editinline AudioComponent TestAudioComponent; +var native const Pointer TextToSpeech; +var native const AudioDevice.EDebugState DebugState; +var transient float TransientMasterVolume; +var transient float LastUpdateTime; +var Class DefaultAudioComponentClass; +var globalconfig string DefaultAudioComponentClassName; +var init config string DefaultAudioDevice; + +// Export UAudioDevice::execListAudioDevices(FFrame&, void* const) +native function ListAudioDevices(init out array InstalledDevices); + +// Export UAudioDevice::execChangeAudioDevice(FFrame&, void* const) +native function ChangeAudioDevice(string NewAudioDevice); + +// Export UAudioDevice::execSetSoundMode(FFrame&, void* const) +native final function bool SetSoundMode(name NewMode); + +// Export UAudioDevice::execFindSoundClass(FFrame&, void* const) +native final function SoundClass FindSoundClass(name SoundClassName); + +defaultproperties +{ + TransientMasterVolume=1.0000000 + DefaultAudioComponentClassName="TgGame.TgAudioComponent" +} \ No newline at end of file diff --git a/exported/Engine/Classes/AutoLadder.uc b/exported/Engine/Classes/AutoLadder.uc new file mode 100755 index 00000000..32375b07 --- /dev/null +++ b/exported/Engine/Classes/AutoLadder.uc @@ -0,0 +1,23 @@ +class AutoLadder extends Ladder + native + notplaceable + hidecategories(Navigation,Lighting,LightColor,Force); + +defaultproperties +{ + // Reference: CylinderComponent'Engine.Default__AutoLadder.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Ladder.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + bCollideWhenPlacing=false + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/AutoNavMeshPathObstacleUnregister.uc b/exported/Engine/Classes/AutoNavMeshPathObstacleUnregister.uc new file mode 100755 index 00000000..41ec2fe5 --- /dev/null +++ b/exported/Engine/Classes/AutoNavMeshPathObstacleUnregister.uc @@ -0,0 +1,4 @@ +class AutoNavMeshPathObstacleUnregister extends Object + native(AI); + +var native Interface_NavMeshPathObstacle PathObstacleRef; diff --git a/exported/Engine/Classes/AutoTestManager.uc b/exported/Engine/Classes/AutoTestManager.uc new file mode 100755 index 00000000..144ad44d --- /dev/null +++ b/exported/Engine/Classes/AutoTestManager.uc @@ -0,0 +1,743 @@ +class AutoTestManager extends Info + native + config(Game) + notplaceable + hidecategories(Navigation,Movement,Collision); + +var bool bAutomatedPerfTesting; +var bool bAutoContinueToNextRound; +var bool bUsingAutomatedTestingMapList; +var bool bAutomatedTestingWithOpen; +var globalconfig bool bExitOnCyclesComplete; +var bool bCheckingForFragmentation; +var bool bCheckingForMemLeaks; +var bool bIsDoingASimplePerfRun; +var bool bDoingASentinelRun; +var bool bSentinelRunInProgress; +var transient bool bSentinelStreamingLevelStillLoading; +var int AutomatedPerfRemainingTime; +var int AutomatedTestingMapIndex; +var globalconfig array AutomatedMapTestingList; +var globalconfig int NumAutomatedMapTestingCycles; +var int NumberOfMatchesPlayed; +var int NumMapListCyclesDone; +var string AutomatedTestingExecCommandToRunAtStartMatch; +var string AutomatedTestingExecCommandToRunAtStartMatchOnPC; +var string AutomatedMapTestingTransitionMap; +var string SentinelTaskDescription; +var string SentinelTaskParameter; +var string SentinelTagDesc; +var transient PlayerController SentinelPC; +var transient array SentinelTravelArray; +var transient int SentinelNavigationIdx; +var transient int SentinelIdx; +var transient int NumRotationsIncrement; +var transient int TravelPointsIncrement; +var config int NumMinutesPerMap; +var int TotalNumMinutesToRun; +var float ProfilingInterval; +var config array CommandsToRunAtEachTravelTheWorldNode; +var transient string CommandStringToExec; + +event PostBeginPlay() +{ + super(Actor).PostBeginPlay(); + SetTimer(1.0000000, true); + //return; +} + +event Timer() +{ + // End:0x63 + if((bAutomatedPerfTesting && AutomatedPerfRemainingTime > 0) && !bAutoContinueToNextRound) + { + AutomatedPerfRemainingTime--; + // End:0x63 + if(AutomatedPerfRemainingTime <= 0) + { + ConsoleCommand("EXIT"); + } + } + //return; +} + +function InitializeOptions(string Options) +{ + local string InOpt; + + AutomatedPerfRemainingTime = 60 * WorldInfo.Game.TimeLimit; + bAutomatedPerfTesting = (WorldInfo.Game.ParseOption(Options, "AutomatedPerfTesting") ~= "1") || WorldInfo.Game.ParseOption(Options, "gAPT") ~= "1"; + bCheckingForFragmentation = (WorldInfo.Game.ParseOption(Options, "CheckingForFragmentation") ~= "1") || WorldInfo.Game.ParseOption(Options, "gCFF") ~= "1"; + bCheckingForMemLeaks = (WorldInfo.Game.ParseOption(Options, "CheckingForMemLeaks") ~= "1") || WorldInfo.Game.ParseOption(Options, "gCFML") ~= "1"; + bIsDoingASimplePerfRun = WorldInfo.Game.ParseOption(Options, "SimplePerfRun") ~= "1"; + bDoingASentinelRun = (WorldInfo.Game.ParseOption(Options, "DoingASentinelRun") ~= "1") || WorldInfo.Game.ParseOption(Options, "gDASR") ~= "1"; + SentinelTaskDescription = WorldInfo.Game.ParseOption(Options, "SentinelTaskDescription"); + // End:0x41C + if(SentinelTaskDescription == "") + { + SentinelTaskDescription = WorldInfo.Game.ParseOption(Options, "gSTD"); + } + SentinelTaskParameter = WorldInfo.Game.ParseOption(Options, "SentinelTaskParameter"); + // End:0x4D7 + if(SentinelTaskParameter == "") + { + SentinelTaskParameter = WorldInfo.Game.ParseOption(Options, "gSTP"); + } + SentinelTagDesc = WorldInfo.Game.ParseOption(Options, "SentinelTagDesc"); + // End:0x58D + if(SentinelTagDesc == "") + { + SentinelTagDesc = WorldInfo.Game.ParseOption(Options, "gSTDD"); + } + InOpt = WorldInfo.Game.ParseOption(Options, "AutoContinueToNextRound"); + // End:0x613 + if(InOpt != "") + { + bAutoContinueToNextRound = bool(InOpt); + } + InOpt = WorldInfo.Game.ParseOption(Options, "TotalNumMinutesToRun"); + // End:0x695 + if(InOpt != "") + { + TotalNumMinutesToRun = int(InOpt); + } + ProfilingInterval = 3.0000000; + InOpt = WorldInfo.Game.ParseOption(Options, "ProfilingInterval"); + // End:0x723 + if(InOpt != "") + { + ProfilingInterval = float(InOpt); + } + InOpt = WorldInfo.Game.ParseOption(Options, "bUsingAutomatedTestingMapList"); + // End:0x7AF + if(InOpt != "") + { + bUsingAutomatedTestingMapList = bool(InOpt); + } + // End:0x7D8 + if(bUsingAutomatedTestingMapList) + { + // End:0x7D8 + if(AutomatedMapTestingList.Length == 0) + { + bUsingAutomatedTestingMapList = false; + } + } + InOpt = WorldInfo.Game.ParseOption(Options, "bAutomatedTestingWithOpen"); + // End:0x860 + if(InOpt != "") + { + bAutomatedTestingWithOpen = bool(InOpt); + } + AutomatedTestingExecCommandToRunAtStartMatch = WorldInfo.Game.ParseOption(Options, "AutomatedTestingExecCommandToRunAtStartMatch"); + AutomatedTestingExecCommandToRunAtStartMatchOnPC = WorldInfo.Game.ParseOption(Options, "AutomatedTestingExecCommandToRunAtStartMatchOnPC"); + AutomatedMapTestingTransitionMap = WorldInfo.Game.ParseOption(Options, "AutomatedMapTestingTransitionMap"); + InOpt = WorldInfo.Game.ParseOption(Options, "AutomatedTestingMapIndex"); + // End:0xA3D + if(InOpt != "") + { + AutomatedTestingMapIndex = int(InOpt); + } + // End:0xB52 + if(bAutomatedTestingWithOpen) + { + InOpt = WorldInfo.Game.ParseOption(Options, "NumberOfMatchesPlayed"); + // End:0xACD + if(InOpt != "") + { + NumberOfMatchesPlayed = int(InOpt); + } + InOpt = WorldInfo.Game.ParseOption(Options, "NumMapListCyclesDone"); + // End:0xB4F + if(InOpt != "") + { + NumMapListCyclesDone = int(InOpt); + } + } + else + { + AutomatedMapTestingTransitionMap = ""; + } + //return; +} + +// Export UAutoTestManager::execBeginSentinelRun(FFrame&, void* const) +native function BeginSentinelRun(const string TaskDescription, const string TaskParameter, const string TagDesc); + +// Export UAutoTestManager::execAddSentinelPerTimePeriodStats(FFrame&, void* const) +native function AddSentinelPerTimePeriodStats(const Vector InLocation, const Rotator InRotation); + +// Export UAutoTestManager::execEndSentinelRun(FFrame&, void* const) +native function EndSentinelRun(Object.EAutomatedRunResult RunResult); + +function DoTravelTheWorld() +{ + GotoState('TravelTheWorld'); + //return; +} + +// Export UAutoTestManager::execDoSentinelActionPerLoadedMap(FFrame&, void* const) +native function DoSentinelActionPerLoadedMap(); + +// Export UAutoTestManager::execHandlePerLoadedMapAudioStats(FFrame&, void* const) +native function HandlePerLoadedMapAudioStats(); + +// Export UAutoTestManager::execGetTravelLocations(FFrame&, void* const) +native function GetTravelLocations(name LevelName, PlayerController PC, out array TravelPoints); + +// Export UAutoTestManager::execDoSentinel_MemoryAtSpecificLocation(FFrame&, void* const) +native function DoSentinel_MemoryAtSpecificLocation(const Vector InLocation, const Rotator InRotation); + +// Export UAutoTestManager::execDoSentinel_PerfAtSpecificLocation(FFrame&, void* const) +native function DoSentinel_PerfAtSpecificLocation(const out Vector InLocation, const out Rotator InRotation); + +// Export UAutoTestManager::execDoSentinel_ViewDependentMemoryAtSpecificLocation(FFrame&, void* const) +native function DoSentinel_ViewDependentMemoryAtSpecificLocation(const out Vector InLocation, const out Rotator InRotation); + +function DoTimeBasedSentinelStatGathering() +{ + local PlayerController PC; + local Vector ViewLocation; + local Rotator ViewRotation; + + // End:0x23 + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + // End:0x23 + break; + } + PC.GetPlayerViewPoint(ViewLocation, ViewRotation); + // End:0xF7 + if((SentinelTaskDescription != "FlyThrough") && SentinelTaskDescription != "FlyThroughSplitScreen") + { + // End:0xF7 + if(PC.Pawn != none) + { + ViewLocation = PC.Pawn.Location; + } + } + AddSentinelPerTimePeriodStats(ViewLocation, ViewRotation); + //return; +} + +function EndTimeBasedSentinelStatGatheringAndExit() +{ + ConsoleCommand("exit"); + //return; +} + +// Export UAutoTestManager::execDoMemoryTracking(FFrame&, void* const) +native function DoMemoryTracking(); + +event StartAutomatedMapTestTimer() +{ + SetTimer(5.0000000, true, 'StartAutomatedMapTestTimerWorker'); + //return; +} + +function StartAutomatedMapTestTimerWorker() +{ + local int LevelIdx; + + // End:0xB2 + if(WorldInfo != none) + { + LevelIdx = 0; + J0x1A: + + // End:0x9B [Loop If] + if(LevelIdx < WorldInfo.StreamingLevels.Length) + { + // End:0x8D + if(WorldInfo.StreamingLevels[LevelIdx].bHasLoadRequestPending == true) + { + return; + } + ++LevelIdx; + // [Loop Continue] + goto J0x1A; + } + // End:0xB2 + if(bCheckingForMemLeaks) + { + DoMemoryTracking(); + } + } + ClearTimer('StartAutomatedMapTestTimerWorker'); + SetTimer(15.0000000, false, 'CloseAutomatedMapTestTimer'); + //return; +} + +function CloseAutomatedMapTestTimer() +{ + // End:0x57 + if(Len(AutomatedMapTestingTransitionMap) > 0) + { + // End:0x54 + if(AutomatedTestingMapIndex < 0) + { + WorldInfo.Game.RestartGame(); + } + } + else + { + WorldInfo.Game.RestartGame(); + } + //return; +} + +function IncrementAutomatedTestingMapIndex() +{ + // End:0x3D + if(bUsingAutomatedTestingMapList == true) + { + // End:0x23 + if(bAutomatedTestingWithOpen == true) + { + } + else + { + // End:0x3D + if(AutomatedTestingMapIndex >= 0) + { + AutomatedTestingMapIndex++; + } + } + } + //return; +} + +function IncrementNumberOfMatchesPlayed() +{ + NumberOfMatchesPlayed++; + //return; +} + +function string GetNextAutomatedTestingMap() +{ + local string MapName; + local PlayerController PC; + local bool bResetMapIndex; + + // End:0x2E7 + if(bUsingAutomatedTestingMapList) + { + // End:0x62 + if((AutomatedTestingMapIndex >= 0) && Len(AutomatedMapTestingTransitionMap) > 0) + { + AutomatedTestingMapIndex++; + AutomatedTestingMapIndex *= float(-1); + MapName = AutomatedMapTestingTransitionMap; + } + else + { + // End:0x85 + if(Len(AutomatedMapTestingTransitionMap) > 0) + { + AutomatedTestingMapIndex *= float(-1); + } + // End:0xBF + if(AutomatedTestingMapIndex >= AutomatedMapTestingList.Length) + { + AutomatedTestingMapIndex = 0; + NumMapListCyclesDone++; + bResetMapIndex = true; + } + MapName = AutomatedMapTestingList[AutomatedTestingMapIndex]; + } + // End:0x182 + if(bAutomatedTestingWithOpen == true) + { + // End:0x17F + if((NumMapListCyclesDone >= NumAutomatedMapTestingCycles) && NumAutomatedMapTestingCycles != 0) + { + // End:0x158 + if(bCheckingForMemLeaks) + { + ConsoleCommand("DEFERRED_STOPMEMTRACKING_AND_DUMP"); + } + // End:0x17F + if(bExitOnCyclesComplete) + { + ConsoleCommand("EXIT"); + } + } + } + else + { + // End:0x2DC + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x20B + if(bResetMapIndex) + { + PC.PlayerReplicationInfo.AutomatedTestingData.NumMapListCyclesDone++; + } + // End:0x2DB + if((PC.PlayerReplicationInfo.AutomatedTestingData.NumMapListCyclesDone >= NumAutomatedMapTestingCycles) && NumAutomatedMapTestingCycles != 0) + { + // End:0x2B4 + if(bCheckingForMemLeaks) + { + ConsoleCommand("DEFERRED_STOPMEMTRACKING_AND_DUMP"); + } + // End:0x2DB + if(bExitOnCyclesComplete) + { + ConsoleCommand("EXIT"); + } + } + } + } + return MapName; + } + return ""; + //return ReturnValue; +} + +function StartMatch() +{ + local PlayerController PC; + + // End:0x1A + if(bAutomatedTestingWithOpen) + { + IncrementNumberOfMatchesPlayed(); + } + else + { + // End:0x71 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + PC.IncrementNumberOfMatchesPlayed(); + // End:0x71 + break; + } + } + IncrementAutomatedTestingMapIndex(); + // End:0xAB + if(bCheckingForFragmentation) + { + ConsoleCommand("MemFragCheck"); + } + // End:0xD8 + if(AutomatedTestingExecCommandToRunAtStartMatch != "") + { + ConsoleCommand(AutomatedTestingExecCommandToRunAtStartMatch); + } + // End:0x11A + if(AutomatedTestingExecCommandToRunAtStartMatchOnPC != "") + { + PC.ConsoleCommand(AutomatedTestingExecCommandToRunAtStartMatchOnPC); + } + //return; +} + +function bool CheckForSentinelRun() +{ + local float TimeWeGetInSeconds; + + // End:0xF0 + if(bDoingASentinelRun && !bSentinelRunInProgress) + { + // End:0x75 + if(SentinelTaskDescription ~= "TravelTheWorld") + { + WorldInfo.Game.DoTravelTheWorld(); + return true; + } + else + { + BeginSentinelRun(SentinelTaskDescription, SentinelTaskParameter, SentinelTagDesc); + SetTimer(ProfilingInterval, true, 'DoTimeBasedSentinelStatGathering'); + } + // End:0xF0 + if(TotalNumMinutesToRun > 0) + { + TimeWeGetInSeconds = float(TotalNumMinutesToRun * 60); + SetTimer(TimeWeGetInSeconds, false, 'EndTimeBasedSentinelStatGatheringAndExit'); + } + } + return false; + //return ReturnValue; +} + +state TravelTheWorld +{ + ignores PrintOutTravelWorldTimes; + + function BeginState(name PreviousStateName) + { + local PlayerController PC; + + super(Object).BeginState(PreviousStateName); + // End:0x68 + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + SentinelPC = PC; + SentinelPC.Sentinel_SetupForGamebasedTravelTheWorld(); + // End:0x68 + break; + } + SentinelPC.bIsUsingStreamingVolumes = false; + BeginSentinelRun(SentinelTaskDescription, SentinelTaskParameter, SentinelTagDesc); + //return; + } + + function float CalcTravelTheWorldTime(const int NumTravelLocations, const int NumRotations) + { + local float TotalTimeInSeconds, PerTravelLocTime; + + TotalTimeInSeconds += (float(WorldInfo.StreamingLevels.Length) * 2.0000000); + TotalTimeInSeconds += 10.0000000; + TotalTimeInSeconds += (float(WorldInfo.StreamingLevels.Length) * 10.0000000); + TotalTimeInSeconds += 10.0000000; + TotalTimeInSeconds += 10.0000000; + PerTravelLocTime = (((((0.5000000 + 4.0000000) + 1.0000000) + 0.5000000) + 1.0000000) + (float(NumRotations) * 1.5000000)) + (float(NumRotations) * 1.5000000); + TotalTimeInSeconds += (PerTravelLocTime * float(NumTravelLocations)); + return TotalTimeInSeconds; + //return ReturnValue; + } + + function SetIncrementsForLoops(const float NumTravelLocations) + { + local float TimeWeGetInSeconds; + + TimeWeGetInSeconds = float(NumMinutesPerMap * 60); + // End:0x7A + if((CalcTravelTheWorldTime(int(NumTravelLocations), 8)) < TimeWeGetInSeconds) + { + TravelPointsIncrement = 1; + NumRotationsIncrement = 1; + PrintOutTravelWorldTimes(int(CalcTravelTheWorldTime(int(NumTravelLocations), 8))); + } + else + { + // End:0xDC + if((CalcTravelTheWorldTime(int(NumTravelLocations), 4)) < TimeWeGetInSeconds) + { + TravelPointsIncrement = 1; + NumRotationsIncrement = 2; + PrintOutTravelWorldTimes(int(CalcTravelTheWorldTime(int(NumTravelLocations), 4))); + } + else + { + TravelPointsIncrement = int((CalcTravelTheWorldTime(int(NumTravelLocations), 4)) / TimeWeGetInSeconds); + NumRotationsIncrement = 2; + PrintOutTravelWorldTimes(int(CalcTravelTheWorldTime(int(NumTravelLocations / float(TravelPointsIncrement)), 4))); + } + } + //return; + } +Begin: + + SentinelPC.Sentinel_PreAcquireTravelTheWorldPoints(); + SentinelIdx = 0; + J0x2A: + + // End:0xC4 [Loop If] + if(SentinelIdx < WorldInfo.StreamingLevels.Length) + { + SentinelPC.ClientUpdateLevelStreamingStatus(WorldInfo.StreamingLevels[SentinelIdx].PackageName, false, false, true); + ++SentinelIdx; + // [Loop Continue] + goto J0x2A; + } + Sleep(10.0000000); + WorldInfo.ForceGarbageCollection(true); + SentinelIdx = 0; + J0xF7: + + // End:0x36C [Loop If] + if(SentinelIdx < WorldInfo.StreamingLevels.Length) + { + SentinelPC.ClientUpdateLevelStreamingStatus(WorldInfo.StreamingLevels[SentinelIdx].PackageName, true, true, true); + Sleep(7.0000000); + GetTravelLocations(WorldInfo.StreamingLevels[SentinelIdx].PackageName, SentinelPC, SentinelTravelArray); + DoSentinelActionPerLoadedMap(); + SentinelPC.ConsoleCommand("FractureAllMeshesToMaximizeMemoryUsage"); + SentinelPC.ConsoleCommand("stat memory"); + Sleep(0.5000000); + DoSentinel_MemoryAtSpecificLocation(vect(0.0000000, 0.0000000, 0.0000000), rot(0, 0, 0)); + SentinelPC.ConsoleCommand("stat memory"); + SentinelPC.ClientUpdateLevelStreamingStatus(WorldInfo.StreamingLevels[SentinelIdx].PackageName, false, false, true); + Sleep(3.0000000); + WorldInfo.ForceGarbageCollection(true); + ++SentinelIdx; + // [Loop Continue] + goto J0xF7; + } + // End:0x505 + if(WorldInfo.StreamingLevels.Length == 0) + { + GetTravelLocations(WorldInfo.StreamingLevels[SentinelIdx].PackageName, SentinelPC, SentinelTravelArray); + DoSentinelActionPerLoadedMap(); + SentinelPC.ConsoleCommand("FractureAllMeshesToMaximizeMemoryUsage"); + SentinelPC.ConsoleCommand("stat memory"); + Sleep(0.5000000); + DoSentinel_MemoryAtSpecificLocation(vect(0.0000000, 0.0000000, 0.0000000), rot(0, 0, 0)); + SentinelPC.ConsoleCommand("stat memory"); + Sleep(3.0000000); + WorldInfo.ForceGarbageCollection(true); + } + SetIncrementsForLoops(float(SentinelTravelArray.Length)); + SentinelIdx = 0; + J0x526: + + // End:0x5F7 [Loop If] + if(SentinelIdx < WorldInfo.StreamingLevels.Length) + { + // End:0x5E9 + if(LevelStreamingAlwaysLoaded(WorldInfo.StreamingLevels[SentinelIdx]) != none) + { + SentinelPC.ClientUpdateLevelStreamingStatus(WorldInfo.StreamingLevels[SentinelIdx].PackageName, true, true, true); + } + ++SentinelIdx; + // [Loop Continue] + goto J0x526; + } + SentinelPC.bIsUsingStreamingVolumes = true; + Sleep(10.0000000); + SentinelPC.Sentinel_PostAcquireTravelTheWorldPoints(); + Sleep(10.0000000); + SentinelTravelArray.AddItem(SentinelTravelArray[0]); + SentinelNavigationIdx = 0; + J0x66A: + + // End:0xB61 [Loop If] + if(SentinelNavigationIdx < SentinelTravelArray.Length) + { + SentinelPC.SetLocation(SentinelTravelArray[SentinelNavigationIdx]); + SentinelPC.SetRotation(rot(0, 0, 0)); + Sleep(0.5000000); + J0x6DA: + + bSentinelStreamingLevelStillLoading = false; + SentinelIdx = 0; + J0x6F1: + + // End:0x787 [Loop If] + if(SentinelIdx < WorldInfo.StreamingLevels.Length) + { + // End:0x779 + if(WorldInfo.StreamingLevels[SentinelIdx].bHasLoadRequestPending == true) + { + bSentinelStreamingLevelStillLoading = true; + Sleep(1.0000000); + // [Explicit Break] + goto J0x787; + } + ++SentinelIdx; + // [Loop Continue] + goto J0x6F1; + } + J0x787: + + // End:0x6DA + if(!(bSentinelStreamingLevelStillLoading == false)) + goto J0x6DA; + WorldInfo.ForceGarbageCollection(true); + Sleep(1.0000000); + // End:0x7F0 + if(SentinelNavigationIdx == 0) + { + ConsoleCommand("MemLeakCheck"); + } + SentinelPC.ConsoleCommand("stat memory"); + Sleep(0.5000000); + DoSentinel_MemoryAtSpecificLocation(SentinelPC.Location, SentinelPC.Rotation); + SentinelPC.ConsoleCommand("stat memory"); + SentinelPC.ConsoleCommand("stat scenerendering"); + SentinelPC.ConsoleCommand("stat streaming"); + Sleep(1.0000000); + SentinelIdx = 0; + J0x934: + + // End:0x9E3 [Loop If] + if(SentinelIdx < 8) + { + SentinelPC.SetRotation(rot(0, 1, 0) * float(8192 * SentinelIdx)); + Sleep(1.5000000); + DoSentinel_ViewDependentMemoryAtSpecificLocation(SentinelPC.Location, SentinelPC.Rotation); + SentinelIdx += NumRotationsIncrement; + // [Loop Continue] + goto J0x934; + } + SentinelPC.ConsoleCommand("stat scenerendering"); + SentinelPC.ConsoleCommand("stat streaming"); + SentinelIdx = 0; + J0xA65: + + // End:0xB14 [Loop If] + if(SentinelIdx < 8) + { + SentinelPC.SetRotation(rot(0, 1, 0) * float(8192 * SentinelIdx)); + Sleep(1.5000000); + DoSentinel_PerfAtSpecificLocation(SentinelPC.Location, SentinelPC.Rotation); + SentinelIdx += NumRotationsIncrement; + // [Loop Continue] + goto J0xA65; + } + // End:0xB49 + foreach CommandsToRunAtEachTravelTheWorldNode(CommandStringToExec) + { + ConsoleCommand(CommandStringToExec); + } + SentinelNavigationIdx += TravelPointsIncrement; + // [Loop Continue] + goto J0x66A; + } + ConsoleCommand("MemLeakCheck"); + ConsoleCommand("exit"); + stop; +} + +state SentinelHandleCauseEventCommand +{ J0x00: + bSentinelStreamingLevelStillLoading = false; + SentinelIdx = 0; + J0x17: + + // End:0xAD [Loop If] + if(SentinelIdx < WorldInfo.StreamingLevels.Length) + { + // End:0x9F + if(WorldInfo.StreamingLevels[SentinelIdx].bHasLoadRequestPending == true) + { + bSentinelStreamingLevelStillLoading = true; + Sleep(1.0000000); + // [Explicit Break] + goto J0xAD; + } + ++SentinelIdx; + // [Loop Continue] + goto J0x17; + } + J0xAD: + + // End:0x00 + if(!(bSentinelStreamingLevelStillLoading == false)) + goto J0x00; + // End:0x193 + if(WorldInfo.Game.CauseEventCommand != "") + { + // End:0x192 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', SentinelPC) + { + SentinelPC.ConsoleCommand("ce " $ WorldInfo.Game.CauseEventCommand); + // End:0x192 + break; + } + } + // End:0x1E7 + if((SentinelTaskDescription == "FlyThrough") || SentinelTaskDescription == "FlyThroughSplitScreen") + { + SetTimer(0.5000000, true, 'DoTimeBasedSentinelStatGathering'); + } + stop; +} + +defaultproperties +{ + NumMinutesPerMap=50 +} \ No newline at end of file diff --git a/exported/Engine/Classes/BlockingVolume.uc b/exported/Engine/Classes/BlockingVolume.uc new file mode 100755 index 00000000..6f037dd6 --- /dev/null +++ b/exported/Engine/Classes/BlockingVolume.uc @@ -0,0 +1,58 @@ +class BlockingVolume extends Volume + native + placeable + hidecategories(Navigation,Object,Movement,Display); + +var() bool bBlockCamera; + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x5A + if(Action.InputLinks[0].bHasImpulse) + { + CollisionComponent.SetBlockRigidBody(true); + } + else + { + // End:0xB4 + if(Action.InputLinks[1].bHasImpulse) + { + CollisionComponent.SetBlockRigidBody(false); + } + else + { + // End:0x12C + if(Action.InputLinks[2].bHasImpulse) + { + CollisionComponent.SetBlockRigidBody(!CollisionComponent.BlockRigidBody); + } + } + } + super.OnToggle(Action); + //return; +} + +defaultproperties +{ + bBlockCamera=true + // Reference: BrushComponent'Engine.Default__BlockingVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + bBlockComplexCollisionTrace=true + ReplacementPrimitive=none + RBChannel=ERBCollisionChannel.RBCC_BlockingVolume + BlockActors=true + BlockZeroExtent=true + BlockRigidBody=true + bSeenByAI=true + bDisableAllRigidBody=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bWorldGeometry=true + bBlockActors=true + bProjTarget=true + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/BlurEffect.uc b/exported/Engine/Classes/BlurEffect.uc new file mode 100755 index 00000000..3ef95890 --- /dev/null +++ b/exported/Engine/Classes/BlurEffect.uc @@ -0,0 +1,10 @@ +class BlurEffect extends PostProcessEffect + native + hidecategories(Object); + +var() int BlurKernelSize; + +defaultproperties +{ + BlurKernelSize=2 +} \ No newline at end of file diff --git a/exported/Engine/Classes/BookMark.uc b/exported/Engine/Classes/BookMark.uc new file mode 100755 index 00000000..b538bb1c --- /dev/null +++ b/exported/Engine/Classes/BookMark.uc @@ -0,0 +1,7 @@ +class BookMark extends Object + native + hidecategories(Object); + +var() Vector Location; +var() Rotator Rotation; +var() array HiddenLevels; diff --git a/exported/Engine/Classes/BookMark2D.uc b/exported/Engine/Classes/BookMark2D.uc new file mode 100755 index 00000000..66b99241 --- /dev/null +++ b/exported/Engine/Classes/BookMark2D.uc @@ -0,0 +1,6 @@ +class BookMark2D extends Object + native + hidecategories(Object); + +var() float Zoom2D; +var() IntPoint Location; diff --git a/exported/Engine/Classes/BroadcastHandler.uc b/exported/Engine/Classes/BroadcastHandler.uc new file mode 100755 index 00000000..e7850f3a --- /dev/null +++ b/exported/Engine/Classes/BroadcastHandler.uc @@ -0,0 +1,122 @@ +class BroadcastHandler extends Info + config(Game) + notplaceable + hidecategories(Navigation,Movement,Collision); + +var int SentText; +var config bool bMuteSpectators; + +function UpdateSentText() +{ + SentText = 0; + //return; +} + +function bool AllowsBroadcast(Actor broadcaster, int InLen) +{ + // End:0x6B + if((bMuteSpectators && PlayerController(broadcaster) != none) && PlayerController(broadcaster).PlayerReplicationInfo.bOnlySpectator) + { + return false; + } + SentText += InLen; + return (WorldInfo.Pauser != none) || SentText < 260; + //return ReturnValue; +} + +function BroadcastText(PlayerReplicationInfo SenderPRI, PlayerController Receiver, coerce string msg, optional name Type) +{ + Receiver.TeamMessage(SenderPRI, msg, Type); + //return; +} + +function BroadcastLocalized(Actor Sender, PlayerController Receiver, Class Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject) +{ + Receiver.ReceiveLocalizedMessage(Message, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject); + //return; +} + +function Broadcast(Actor Sender, coerce string msg, optional name Type) +{ + local PlayerController P; + local PlayerReplicationInfo PRI; + + // End:0x26 + if(!AllowsBroadcast(Sender, Len(msg))) + { + return; + } + // End:0x72 + if(Pawn(Sender) != none) + { + PRI = Pawn(Sender).PlayerReplicationInfo; + } + else + { + // End:0xBB + if(Controller(Sender) != none) + { + PRI = Controller(Sender).PlayerReplicationInfo; + } + } + // End:0x11E + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', P) + { + BroadcastText(PRI, P, msg, Type); + } + //return; +} + +function BroadcastTeam(Controller Sender, coerce string msg, optional name Type) +{ + local PlayerController P; + + // End:0x26 + if(!AllowsBroadcast(Sender, Len(msg))) + { + return; + } + // End:0x109 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', P) + { + // End:0x108 + if(P.PlayerReplicationInfo.Team == Sender.PlayerReplicationInfo.Team) + { + BroadcastText(Sender.PlayerReplicationInfo, P, msg, Type); + } + } + //return; +} + +event AllowBroadcastLocalized(Actor Sender, Class Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject) +{ + local PlayerController P; + + // End:0x82 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', P) + { + BroadcastLocalized(Sender, P, Message, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject); + } + //return; +} + +event AllowBroadcastLocalizedTeam(int TeamIndex, Actor Sender, Class Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject) +{ + local PlayerController P; + + // End:0x139 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', P) + { + // End:0x138 + if(((P.PlayerReplicationInfo != none) && P.PlayerReplicationInfo.Team != none) && P.PlayerReplicationInfo.Team.TeamIndex == TeamIndex) + { + BroadcastLocalized(Sender, P, Message, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject); + } + } + //return; +} + +defaultproperties +{ + TickGroup=ETickingGroup.TG_DuringAsyncWork +} \ No newline at end of file diff --git a/exported/Engine/Classes/Brush.uc b/exported/Engine/Classes/Brush.uc new file mode 100755 index 00000000..72cf4654 --- /dev/null +++ b/exported/Engine/Classes/Brush.uc @@ -0,0 +1,56 @@ +class Brush extends Actor + native + notplaceable + hidecategories(Navigation,Object,Movement,Display); + +enum ECsgOper +{ + CSG_Active, // 0 + CSG_Add, // 1 + CSG_Subtract, // 2 + CSG_Intersect, // 3 + CSG_Deintersect, // 4 + CSG_MAX // 5 +}; + +struct native export GeomSelection +{ + var int Type; + var int Index; + var int SelectionIndex; + + structdefaultproperties + { + Type=0 + Index=0 + SelectionIndex=0 + } +}; + +var() Brush.ECsgOper CsgOper; +var() Color BrushColor; +var int PolyFlags; +var() bool bColored; +var() bool bCuttingBrush; +var bool bSolidWhenSelected; +var bool bPlaceableFromClassBrowser; +var const export Model Brush; +var const editconst export editinline BrushComponent BrushComponent; +var array SavedSelections; + +defaultproperties +{ + // Reference: BrushComponent'Engine.Default__Brush.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + begin object name="BrushComponent0" class=Engine.BrushComponent + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bStatic=true + bHidden=true + bNoDelete=true + bEdShouldSnap=true + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/BrushComponent.uc b/exported/Engine/Classes/BrushComponent.uc new file mode 100755 index 00000000..844a2b20 --- /dev/null +++ b/exported/Engine/Classes/BrushComponent.uc @@ -0,0 +1,31 @@ +class BrushComponent extends PrimitiveComponent + native + editinlinenew + collapsecategories + noexport; + +struct KCachedConvexData_Mirror +{ + var array CachedConvexElements; + + structdefaultproperties + { + CachedConvexElements=none + } +}; + +var const Model Brush; +var KAggregateGeom BrushAggGeom; +var private noimport native const transient Pointer BrushPhysDesc; +var private noimport native const transient KCachedConvexData_Mirror CachedPhysBrushData; +var private const int CachedPhysBrushDataVersion; +var() bool bBlockComplexCollisionTrace; + +defaultproperties +{ + ReplacementPrimitive=none + HiddenGame=true + bUseAsOccluder=true + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/BrushShape.uc b/exported/Engine/Classes/BrushShape.uc new file mode 100755 index 00000000..a2789c79 --- /dev/null +++ b/exported/Engine/Classes/BrushShape.uc @@ -0,0 +1,20 @@ +class BrushShape extends Brush + native + placeable + hidecategories(Navigation,Object,Movement,Display); + +defaultproperties +{ + // Reference: BrushComponent'Engine.Default__BrushShape.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Brush.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + AlwaysLoadOnClient=true + LightingChannels=(bInitialized=true,Dynamic=true) + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Camera.uc b/exported/Engine/Classes/Camera.uc new file mode 100755 index 00000000..57fc1001 --- /dev/null +++ b/exported/Engine/Classes/Camera.uc @@ -0,0 +1,716 @@ +class Camera extends Actor + transient + native(Camera) + notplaceable + hidecategories(Navigation); + +const MAX_ACTIVE_CAMERA_ANIMS = 8; + +enum EViewTargetBlendFunction +{ + VTBlend_Linear, // 0 + VTBlend_Cubic, // 1 + VTBlend_EaseIn, // 2 + VTBlend_EaseOut, // 3 + VTBlend_EaseInOut, // 4 + VTBlend_MAX // 5 +}; + +enum ECameraAnimPlaySpace +{ + CAPS_CameraLocal, // 0 + CAPS_World, // 1 + CAPS_UserDefined, // 2 + CAPS_MAX // 3 +}; + +struct native TCameraCache +{ + var float TimeStamp; + var TPOV POV; + + structdefaultproperties + { + TimeStamp=0.0000000 + POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000)) + } +}; + +struct native TViewTarget +{ + var() Actor Target; + var() Controller Controller; + var() TPOV POV; + var() float AspectRatio; + var() PlayerReplicationInfo PRI; + + structdefaultproperties + { + Target=none + Controller=none + POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000)) + AspectRatio=0.0000000 + PRI=none + } +}; + +struct native ViewTargetTransitionParams +{ + var() float BlendTime; + var() Camera.EViewTargetBlendFunction BlendFunction; + var() float BlendExp; + var() bool bLockOutgoing; + + structdefaultproperties + { + BlendTime=0.0000000 + BlendFunction=EViewTargetBlendFunction.VTBlend_Cubic + BlendExp=2.0000000 + bLockOutgoing=false + } +}; + +var PlayerController PCOwner; +var name CameraStyle; +var float DefaultFOV; +var bool bLockedFOV; +var bool bConstrainAspectRatio; +var bool bEnableFading; +var bool bFadeAudio; +var transient bool bForceDisableTemporalAA; +var bool bEnableColorScaling; +var bool bEnableColorScaleInterp; +var bool bUseClientSideCameraUpdates; +var bool bDebugClientSideCamera; +var bool bShouldSendClientSideCameraUpdate; +var float LockedFOV; +var float ConstrainedAspectRatio; +var float DefaultAspectRatio; +var float OffAxisYawAngle; +var float OffAxisPitchAngle; +var Color FadeColor; +var float FadeAmount; +var float CamOverridePostProcessAlpha; +var PostProcessSettings CamPostProcessSettings; +var RenderingPerformanceOverrides RenderingOverrides; +var Vector ColorScale; +var Vector DesiredColorScale; +var Vector OriginalColorScale; +var float ColorScaleInterpDuration; +var float ColorScaleInterpStartTime; +var TCameraCache CameraCache; +var TCameraCache LastFrameCameraCache; +var TViewTarget ViewTarget; +var TViewTarget PendingViewTarget; +var float BlendTimeToGo; +var ViewTargetTransitionParams BlendParams; +var array ModifierList; +var float FreeCamDistance; +var Vector FreeCamOffset; +var Vector2D FadeAlpha; +var float FadeTime; +var float FadeTimeRemaining; +var protected transient array CameraLensEffects; +var() editinline transient CameraModifier_CameraShake CameraShakeCamMod; +var() protected Class CameraShakeCamModClass; +var protected CameraAnimInst AnimInstPool[8]; +var protected array ActiveAnims; +var protected array FreeAnims; +var protected transient DynamicCameraActor AnimCameraActor; + +protected function CameraModifier CreateCameraModifier(Class ModifierClass) +{ + local CameraModifier NewMod; + + NewMod = new (Outer) ModifierClass; + NewMod.Init(); + NewMod.AddCameraModifier(self); + return NewMod; + //return ReturnValue; +} + +function PostBeginPlay() +{ + local int Idx; + + super.PostBeginPlay(); + // End:0x50 + if((CameraShakeCamMod == none) && CameraShakeCamModClass != none) + { + CameraShakeCamMod = CameraModifier_CameraShake(CreateCameraModifier(CameraShakeCamModClass)); + } + Idx = 0; + J0x5B: + + // End:0xC2 [Loop If] + if(Idx < 8) + { + AnimInstPool[Idx] = new (self) Class'Engine.CameraAnimInst'; + FreeAnims[Idx] = AnimInstPool[Idx]; + ++Idx; + // [Loop Continue] + goto J0x5B; + } + AnimCameraActor = Spawn(Class'Engine.DynamicCameraActor', self,,,,, true); + //return; +} + +event Destroyed() +{ + AnimCameraActor.Destroy(); + super.Destroyed(); + //return; +} + +// Export UCamera::execApplyCameraModifiers(FFrame&, void* const) +native function ApplyCameraModifiers(float DeltaTime, out TPOV OutPOV); + +event InitializeFor(PlayerController PC) +{ + CameraCache.POV.FOV = DefaultFOV; + PCOwner = PC; + SetViewTarget(PC.ViewTarget); + SetDesiredColorScale(WorldInfo.DefaultColorScale, 5.0000000); + UpdateCamera(0.0000000); + //return; +} + +function float GetFOVAngle() +{ + // End:0x17 + if(bLockedFOV) + { + return LockedFOV; + } + return CameraCache.POV.FOV; + //return ReturnValue; +} + +function SetFOV(float NewFOV) +{ + // End:0x33 + if((NewFOV < float(1)) || NewFOV > float(170)) + { + bLockedFOV = false; + return; + } + bLockedFOV = true; + LockedFOV = NewFOV; + //return; +} + +// Export UCamera::execGetCameraViewPoint(FFrame&, void* const) +native final function GetCameraViewPoint(out Vector OutCamLoc, out Rotator OutCamRot); + +final function Rotator GetCameraRotation() +{ + return CameraCache.POV.Rotation; + //return ReturnValue; +} + +simulated function SetDesiredColorScale(Vector NewColorScale, float InterpTime) +{ + // End:0x81 + if(!bEnableColorScaling) + { + bEnableColorScaling = true; + ColorScale.X = 1.0000000; + ColorScale.Y = 1.0000000; + ColorScale.Z = 1.0000000; + } + // End:0x105 + if(NewColorScale != ColorScale) + { + OriginalColorScale = ColorScale; + DesiredColorScale = NewColorScale; + ColorScaleInterpStartTime = WorldInfo.TimeSeconds; + ColorScaleInterpDuration = InterpTime; + bEnableColorScaleInterp = true; + } + //return; +} + +simulated event UpdateCamera(float DeltaTime) +{ + // End:0x17F + if((PCOwner.IsLocalPlayerController() || !bUseClientSideCameraUpdates) || bDebugClientSideCamera) + { + DoUpdateCamera(DeltaTime); + // End:0x17F + if((int(WorldInfo.NetMode) == int(NM_Client)) && bShouldSendClientSideCameraUpdate) + { + PCOwner.ServerUpdateCamera(CameraCache.POV.Location, (CameraCache.POV.Rotation.Pitch & 65535) + ((CameraCache.POV.Rotation.Yaw & 65535) << 16)); + bShouldSendClientSideCameraUpdate = false; + } + } + //return; +} + +simulated function DoUpdateCamera(float DeltaTime) +{ + local TPOV NewPOV; + local float DurationPct, BlendPct; + + // End:0xA5 + if(bEnableColorScaleInterp) + { + BlendPct = FClamp((WorldInfo.TimeSeconds - ColorScaleInterpStartTime) / ColorScaleInterpDuration, 0.0000000, 1.0000000); + ColorScale = VLerp(OriginalColorScale, DesiredColorScale, BlendPct); + // End:0xA5 + if(BlendPct == 1.0000000) + { + bEnableColorScaleInterp = false; + } + } + bConstrainAspectRatio = false; + CamOverridePostProcessAlpha = 0.0000000; + // End:0x135 + if((PendingViewTarget.Target == none) || !BlendParams.bLockOutgoing) + { + CheckViewTarget(ViewTarget); + UpdateViewTarget(ViewTarget, DeltaTime); + } + NewPOV = ViewTarget.POV; + ConstrainedAspectRatio = ViewTarget.AspectRatio; + // End:0x4A5 + if(PendingViewTarget.Target != none) + { + BlendTimeToGo -= DeltaTime; + bConstrainAspectRatio = false; + CheckViewTarget(PendingViewTarget); + UpdateViewTarget(PendingViewTarget, DeltaTime); + // End:0x3EE + if(BlendTimeToGo > float(0)) + { + DurationPct = (BlendParams.BlendTime - BlendTimeToGo) / BlendParams.BlendTime; + switch(BlendParams.BlendFunction) + { + // End:0x29F + case 0: + BlendPct = Lerp(0.0000000, 1.0000000, DurationPct); + // End:0x3BC + break; + // End:0x2D8 + case 1: + BlendPct = FCubicInterp(0.0000000, 0.0000000, 1.0000000, 0.0000000, DurationPct); + // End:0x3BC + break; + // End:0x323 + case 2: + BlendPct = FInterpEaseIn(0.0000000, 1.0000000, DurationPct, BlendParams.BlendExp); + // End:0x3BC + break; + // End:0x36E + case 3: + BlendPct = FInterpEaseOut(0.0000000, 1.0000000, DurationPct, BlendParams.BlendExp); + // End:0x3BC + break; + // End:0x3B9 + case 4: + BlendPct = FInterpEaseInOut(0.0000000, 1.0000000, DurationPct, BlendParams.BlendExp); + // End:0x3BC + break; + // End:0xFFFF + default: + break; + } + NewPOV = BlendViewTargets(ViewTarget, PendingViewTarget, BlendPct); + } + else + { + ViewTarget = PendingViewTarget; + PendingViewTarget.Target = none; + PendingViewTarget.Controller = none; + BlendTimeToGo = 0.0000000; + NewPOV = PendingViewTarget.POV; + } + // End:0x4A5 + if(bConstrainAspectRatio) + { + ConstrainedAspectRatio = PendingViewTarget.AspectRatio; + } + } + FillCameraCache(NewPOV); + // End:0x5C5 + if(bEnableFading && FadeTimeRemaining > 0.0000000) + { + FadeTimeRemaining = FMax(FadeTimeRemaining - DeltaTime, 0.0000000); + // End:0x591 + if(FadeTime > 0.0000000) + { + FadeAmount = FadeAlpha.X + ((1.0000000 - (FadeTimeRemaining / FadeTime)) * (FadeAlpha.Y - FadeAlpha.X)); + } + // End:0x5C5 + if(bFadeAudio) + { + ApplyAudioFade(); + // End:0x5C5 + if(FadeAmount == float(0)) + { + bFadeAudio = false; + } + } + } + //return; +} + +// Export UCamera::execApplyAudioFade(FFrame&, void* const) +native function ApplyAudioFade(); + +final function TPOV BlendViewTargets(const out TViewTarget A, const out TViewTarget B, float Alpha) +{ + local TPOV POV; + + POV.Location = VLerp(A.POV.Location, B.POV.Location, Alpha); + POV.FOV = Lerp(A.POV.FOV, B.POV.FOV, Alpha); + POV.Rotation = RLerp(A.POV.Rotation, B.POV.Rotation, Alpha, true); + return POV; + //return ReturnValue; +} + +// Export UCamera::execGetViewLocalToTarget(FFrame&, void* const) +native function GetViewLocalToTarget(const Actor InViewTarget, out Vector LocalViewLocation, out Quat LocalViewRotation); + +function FillCameraCache(const out TPOV NewPOV) +{ + // End:0x52 + if(CameraCache.TimeStamp != WorldInfo.TimeSeconds) + { + LastFrameCameraCache = CameraCache; + } + CameraCache.TimeStamp = WorldInfo.TimeSeconds; + CameraCache.POV = NewPOV; + //return; +} + +// Export UCamera::execCheckViewTarget(FFrame&, void* const) +native function CheckViewTarget(out TViewTarget VT); + +function UpdateViewTarget(out TViewTarget OutVT, float DeltaTime) +{ + local Vector Loc, pos, HitLocation, HitNormal; + local Rotator Rot; + local Actor HitActor; + local CameraActor CamActor; + local bool bDoNotApplyModifiers; + local TPOV OrigPOV; + local Pawn TPawn; + + // End:0x66 + if(((PendingViewTarget.Target != none) && OutVT == ViewTarget) && BlendParams.bLockOutgoing) + { + return; + } + OrigPOV = OutVT.POV; + OutVT.POV.FOV = DefaultFOV; + CamActor = CameraActor(OutVT.Target); + // End:0x20E + if(CamActor != none) + { + CamActor.GetCameraView(DeltaTime, OutVT.POV); + bConstrainAspectRatio = bConstrainAspectRatio || CamActor.bConstrainAspectRatio; + OutVT.AspectRatio = CamActor.AspectRatio; + CamOverridePostProcessAlpha = CamActor.CamOverridePostProcessAlpha; + CamPostProcessSettings = CamActor.CamOverridePostProcess; + } + else + { + TPawn = Pawn(OutVT.Target); + // End:0x7E9 + if((TPawn == none) || !TPawn.CalcCamera(DeltaTime, OutVT.POV.Location, OutVT.POV.Rotation, OutVT.POV.FOV)) + { + bDoNotApplyModifiers = true; + switch(CameraStyle) + { + // End:0x35C + case 'Fixed': + OutVT.POV = OrigPOV; + // End:0x7E9 + break; + // End:0x368 + case 'ThirdPerson': + // End:0x374 + case 'FreeCam': + // End:0x645 + case 'FreeCam_Default': + Loc = OutVT.Target.Location; + Rot = OutVT.Target.Rotation; + // End:0x4D2 + if((TPawn != none) && TPawn.Mesh != none) + { + Loc += ((TPawn.Mesh.Translation - TPawn.default.Mesh.Translation) >> OutVT.Target.Rotation); + } + // End:0x52A + if((CameraStyle == 'FreeCam') || CameraStyle == 'FreeCam_Default') + { + Rot = PCOwner.Rotation; + } + Loc += (FreeCamOffset >> Rot); + pos = Loc - (Vector(Rot) * FreeCamDistance); + HitActor = Trace(HitLocation, HitNormal, pos, Loc, false, vect(12.0000000, 12.0000000, 12.0000000)); + OutVT.POV.Location = ((HitActor == none) ? pos : HitLocation); + OutVT.POV.Rotation = Rot; + // End:0x7E9 + break; + // End:0x651 + case 'FirstPerson': + // End:0xFFFF + default: + OutVT.Target.GetActorEyesViewPoint(OutVT.POV.Location, OutVT.POV.Rotation); + // End:0x7E6 + if((TPawn != none) && TPawn.Mesh != none) + { + OutVT.POV.Location += ((TPawn.Mesh.Translation - TPawn.default.Mesh.Translation) >> OutVT.Target.Rotation); + } + // End:0x7E9 + break; + break; + } + } + } + // End:0x827 + if(!bDoNotApplyModifiers) + { + ApplyCameraModifiers(DeltaTime, OutVT.POV); + } + //return; +} + +// Export UCamera::execSetViewTarget(FFrame&, void* const) +native final function SetViewTarget(Actor NewViewTarget, optional ViewTargetTransitionParams TransitionParams); + +function ProcessViewRotation(float DeltaTime, out Rotator OutViewRotation, out Rotator OutDeltaRot) +{ + local int ModifierIdx; + + ModifierIdx = 0; + J0x0B: + + // End:0xB0 [Loop If] + if(ModifierIdx < ModifierList.Length) + { + // End:0xA2 + if(ModifierList[ModifierIdx] != none) + { + // End:0xA2 + if(ModifierList[ModifierIdx].ProcessViewRotation(ViewTarget.Target, DeltaTime, OutViewRotation, OutDeltaRot)) + { + // [Explicit Break] + goto J0xB0; + } + } + ModifierIdx++; + // [Loop Continue] + goto J0x0B; + } + J0xB0: + + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + local Vector EyesLoc; + local Rotator EyesRot; + local Canvas Canvas; + + Canvas = HUD.Canvas; + Canvas.SetDrawColor(255, 255, 255); + Canvas.DrawText(((" Camera Style:" $ string(CameraStyle)) @ "main ViewTarget:") $ string(ViewTarget.Target)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText(((((" CamLoc:" $ string(CameraCache.POV.Location)) @ "CamRot:") $ string(CameraCache.POV.Rotation)) @ "FOV:") $ string(CameraCache.POV.FOV)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText(" AspectRatio:" $ string(ConstrainedAspectRatio)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + // End:0x3A6 + if(ViewTarget.Target != none) + { + ViewTarget.Target.GetActorEyesViewPoint(EyesLoc, EyesRot); + Canvas.DrawText(((" EyesLoc:" $ string(EyesLoc)) @ "EyesRot:") $ string(EyesRot)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + //return; +} + +function EmitterCameraLensEffectBase FindCameraLensEffect(Class LensEffectEmitterClass) +{ + local EmitterCameraLensEffectBase LensEffect; + + // End:0xF8 + foreach CameraLensEffects(LensEffect) + { + // End:0xF7 + if(!LensEffect.bDeleteMe && ((LensEffect.Class == LensEffectEmitterClass) || LensEffect.EmittersToTreatAsSame.Find(LensEffectEmitterClass) != -1) || LensEffectEmitterClass.default.EmittersToTreatAsSame.Find(LensEffect.Class) != -1) + { + return LensEffect; + } + } + return none; + //return ReturnValue; +} + +function AddCameraLensEffect(Class LensEffectEmitterClass) +{ + local Vector CamLoc; + local Rotator CamRot; + local EmitterCameraLensEffectBase LensEffect; + + // End:0x16A + if(LensEffectEmitterClass != none) + { + // End:0x7E + if(!LensEffectEmitterClass.default.bAllowMultipleInstances) + { + LensEffect = FindCameraLensEffect(LensEffectEmitterClass); + // End:0x7E + if(LensEffect != none) + { + LensEffect.NotifyRetriggered(); + } + } + // End:0x16A + if(LensEffect == none) + { + LensEffect = Spawn(LensEffectEmitterClass, PCOwner.GetViewTarget()); + // End:0x16A + if(LensEffect != none) + { + GetCameraViewPoint(CamLoc, CamRot); + LensEffect.UpdateLocation(CamLoc, CamRot, GetFOVAngle()); + LensEffect.RegisterCamera(self); + CameraLensEffects.AddItem(LensEffect); + } + } + } + //return; +} + +function RemoveCameraLensEffect(EmitterCameraLensEffectBase Emitter) +{ + CameraLensEffects.RemoveItem(Emitter); + //return; +} + +function ClearCameraLensEffects() +{ + local EmitterCameraLensEffectBase LensEffect; + + // End:0x30 + foreach CameraLensEffects(LensEffect) + { + LensEffect.Destroy(); + } + CameraLensEffects.Length = 0; + //return; +} + +function PlayCameraShake(CameraShake Shake, float Scale, optional Camera.ECameraAnimPlaySpace PlaySpace = 0, optional Rotator UserPlaySpaceRot) +{ + // End:0x59 + if(Shake != none) + { + CameraShakeCamMod.AddCameraShake(Shake, Scale, PlaySpace, UserPlaySpaceRot); + } + //return; +} + +function StopCameraShake(CameraShake Shake) +{ + // End:0x37 + if(Shake != none) + { + CameraShakeCamMod.RemoveCameraShake(Shake); + } + //return; +} + +static function float CalcRadialShakeScale(Camera Cam, Vector Epicenter, float InnerRadius, float OuterRadius, float Falloff) +{ + local Vector POVLoc; + local float DistPct; + + POVLoc = Cam.CameraCache.POV.Location; + // End:0xE4 + if(InnerRadius < OuterRadius) + { + DistPct = (VSize(Epicenter - POVLoc) - InnerRadius) / (OuterRadius - InnerRadius); + DistPct = 1.0000000 - FClamp(DistPct, 0.0000000, 1.0000000); + return DistPct ** Falloff; + } + else + { + return ((VSize(Epicenter - POVLoc) < InnerRadius) ? 1.0000000 : 0.0000000); + } + //return ReturnValue; +} + +static function PlayWorldCameraShake(CameraShake Shake, Actor ShakeInstigator, Vector Epicenter, float InnerRadius, float OuterRadius, float Falloff, bool bTryForceFeedback, optional bool bOrientShakeTowardsEpicenter) +{ + local PlayerController PC; + local float ShakeScale; + local Rotator CamRot; + local Vector CamLoc; + + // End:0x1CC + if(ShakeInstigator != none) + { + // End:0x1CB + foreach ShakeInstigator.LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + // End:0x1CA + if(PC.PlayerCamera != none) + { + ShakeScale = CalcRadialShakeScale(PC.PlayerCamera, Epicenter, InnerRadius, OuterRadius, Falloff); + // End:0x18D + if(bOrientShakeTowardsEpicenter && PC.Pawn != none) + { + PC.PlayerCamera.GetCameraViewPoint(CamLoc, CamRot); + PC.ClientPlayCameraShake(Shake, ShakeScale, bTryForceFeedback, 2, Rotator(Epicenter - CamLoc)); + // End:0x1CA + continue; + } + PC.ClientPlayCameraShake(Shake, ShakeScale, bTryForceFeedback); + } + } + } + //return; +} + +function ClearAllCameraShakes() +{ + CameraShakeCamMod.RemoveAllCameraShakes(); + //return; +} + +// Export UCamera::execPlayCameraAnim(FFrame&, void* const) +native simulated function CameraAnimInst PlayCameraAnim(CameraAnim Anim, optional float Rate = 1.0000000, optional float Scale = 1.0000000, optional float BlendInTime, optional float BlendOutTime, optional bool bLoop, optional bool bRandomStartTime, optional float Duration, optional bool bSingleInstance); + +// Export UCamera::execStopAllCameraAnims(FFrame&, void* const) +native simulated function StopAllCameraAnims(optional bool bImmediate); + +// Export UCamera::execStopAllCameraAnimsByType(FFrame&, void* const) +native simulated function StopAllCameraAnimsByType(CameraAnim Anim, optional bool bImmediate); + +// Export UCamera::execStopCameraAnim(FFrame&, void* const) +native simulated function StopCameraAnim(CameraAnimInst AnimInst, optional bool bImmediate); + +defaultproperties +{ + DefaultFOV=100.0000000 + bUseClientSideCameraUpdates=true + DefaultAspectRatio=1.3333300 + CamPostProcessSettings=(bOverride_EnableBloom=true,bOverride_EnableDOF=true,bOverride_EnableMotionBlur=true,bOverride_EnableSceneEffect=true,bOverride_AllowAmbientOcclusion=true,bOverride_OverrideRimShaderColor=true,bOverride_Bloom_Scale=true,bOverride_Bloom_Threshold=true,bOverride_Bloom_Tint=true,bOverride_Bloom_ScreenBlendThreshold=true,bOverride_Bloom_InterpolationDuration=true,bOverride_DOF_FalloffExponent=true,bOverride_DOF_BlurKernelSize=true,bOverride_DOF_BlurBloomKernelSize=true,bOverride_DOF_MaxNearBlurAmount=true,bOverride_DOF_MinBlurAmount=false,bOverride_DOF_MaxFarBlurAmount=true,bOverride_DOF_FocusType=true,bOverride_DOF_FocusInnerRadius=true,bOverride_DOF_FocusDistance=true,bOverride_DOF_FocusPosition=true,bOverride_DOF_InterpolationDuration=true,bOverride_DOF_BokehTexture=false,bOverride_MotionBlur_MaxVelocity=false,bOverride_MotionBlur_Amount=false,bOverride_MotionBlur_FullMotionBlur=false,bOverride_MotionBlur_CameraRotationThreshold=false,bOverride_MotionBlur_CameraTranslationThreshold=false,bOverride_MotionBlur_InterpolationDuration=false,bOverride_Scene_Desaturation=true,bOverride_Scene_Colorize=false,bOverride_Scene_TonemapperScale=false,bOverride_Scene_ImageGrainScale=false,bOverride_Scene_HighLights=true,bOverride_Scene_MidTones=true,bOverride_Scene_Shadows=true,bOverride_Scene_InterpolationDuration=true,bOverride_Scene_ColorGradingLUT=false,bOverride_RimShader_Color=true,bOverride_RimShader_InterpolationDuration=true,bOverride_MobileColorGrading=false,bEnableBloom=true,bEnableDOF=false,bEnableMotionBlur=true,bEnableSceneEffect=true,bAllowAmbientOcclusion=true,bOverrideRimShaderColor=false,Bloom_Scale=1.0000000,Bloom_Threshold=1.0000000,Bloom_Tint=(R=255,G=255,B=255,A=0),Bloom_ScreenBlendThreshold=10.0000000,Bloom_InterpolationDuration=1.0000000,DOF_BlurBloomKernelSize=16.0000000,DOF_FalloffExponent=4.0000000,DOF_BlurKernelSize=16.0000000,DOF_MaxNearBlurAmount=1.0000000,DOF_MinBlurAmount=0.0000000,DOF_MaxFarBlurAmount=1.0000000,DOF_FocusType=EFocusType.FOCUS_Distance,DOF_FocusInnerRadius=2000.0000000,DOF_FocusDistance=0.0000000,DOF_FocusPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000),DOF_InterpolationDuration=1.0000000,DOF_BokehTexture=none,MotionBlur_MaxVelocity=1.0000000,MotionBlur_Amount=0.5000000,MotionBlur_FullMotionBlur=true,MotionBlur_CameraRotationThreshold=45.0000000,MotionBlur_CameraTranslationThreshold=10000.0000000,MotionBlur_InterpolationDuration=1.0000000,Scene_Desaturation=0.0000000,Scene_Colorize=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_TonemapperScale=1.0000000,Scene_ImageGrainScale=0.0000000,Scene_HighLights=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_MidTones=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_Shadows=(X=0.0000000,Y=0.0000000,Z=0.0000000),Scene_InterpolationDuration=1.0000000,RimShader_Color=(R=0.4704400,G=0.5859730,B=0.8277260,A=1.0000000),RimShader_InterpolationDuration=1.0000000,ColorGrading_LookupTable=none,ColorGradingLUT=(LUTTextures=none,LUTWeights=none),MobileColorGrading=(TransitionTime=1.0000000,Blend=0.0000000,Desaturation=0.0000000,HighLights=(R=0.7000000,G=0.7000000,B=0.7000000,A=1.0000000),MidTones=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000),Shadows=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000)),MobilePostProcess=(bOverride_Mobile_BlurAmount=false,bOverride_Mobile_TransitionTime=false,bOverride_Mobile_Bloom_Scale=false,bOverride_Mobile_Bloom_Threshold=false,bOverride_Mobile_Bloom_Tint=false,bOverride_Mobile_DOF_Distance=false,bOverride_Mobile_DOF_MinRange=false,bOverride_Mobile_DOF_MaxRange=false,bOverride_Mobile_DOF_NearBlurFactor=false,bOverride_Mobile_DOF_FarBlurFactor=false,Mobile_BlurAmount=16.0000000,Mobile_TransitionTime=1.0000000,Mobile_Bloom_Scale=6.0000000,Mobile_Bloom_Threshold=0.5000000,Mobile_Bloom_Tint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000),Mobile_DOF_Distance=1500.0000000,Mobile_DOF_MinRange=600.0000000,Mobile_DOF_MaxRange=1200.0000000,Mobile_DOF_NearBlurFactor=1.0000000,Mobile_DOF_FarBlurFactor=1.0000000),Death_Enable=false,Death_DesatAlpha=0.0000000,Hit_Enable=false,Hit_FadeAlpha=0.0000000,ColorBlind_Enable=false,ColorBlind_Mode=0) + RenderingOverrides=(bAllowAmbientOcclusion=true,bAllowDominantWholeSceneDynamicShadows=true,bAllowMotionBlurSkinning=true,bAllowTemporalAA=true,bAllowLightShafts=true) + CameraCache=(TimeStamp=0.0000000,POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000))) + LastFrameCameraCache=(TimeStamp=0.0000000,POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000))) + ViewTarget=(Target=none,Controller=none,POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000)),AspectRatio=0.0000000,PRI=none) + PendingViewTarget=(Target=none,Controller=none,POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000)),AspectRatio=0.0000000,PRI=none) + BlendParams=(BlendTime=0.0000000,BlendFunction=EViewTargetBlendFunction.VTBlend_Cubic,BlendExp=2.0000000,bLockOutgoing=false) + FreeCamDistance=256.0000000 + CameraShakeCamModClass=Class'Engine.CameraModifier_CameraShake' + bHidden=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/CameraActor.uc b/exported/Engine/Classes/CameraActor.uc new file mode 100755 index 00000000..c20cf6ac --- /dev/null +++ b/exported/Engine/Classes/CameraActor.uc @@ -0,0 +1,58 @@ +class CameraActor extends Actor + native(Camera) + placeable + hidecategories(Navigation) + classgroup(Common); + +var() bool bConstrainAspectRatio; +var deprecated bool bCamOverridePostProcess; +var() interp float AspectRatio; +var() interp float FOVAngle; +var() interp float CamOverridePostProcessAlpha; +var() interp PostProcessSettings CamOverridePostProcess; +var export editinline DrawFrustumComponent DrawFrustum; +var export editinline StaticMeshComponent MeshComp; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + AspectRatio, FOVAngle; +} + +simulated function GetCameraView(float DeltaTime, out TPOV OutPOV) +{ + GetActorEyesViewPoint(OutPOV.Location, OutPOV.Rotation); + OutPOV.FOV = FOVAngle; + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + local float XL; + local Canvas Canvas; + + Canvas = HUD.Canvas; + super.DisplayDebug(HUD, out_YL, out_YPos); + Canvas.StrLen("TEST", XL, out_YL); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText("FOV:" $ string(FOVAngle), false); + //return; +} + +defaultproperties +{ + bConstrainAspectRatio=true + AspectRatio=1.7777800 + FOVAngle=90.0000000 + CamOverridePostProcess=(bOverride_EnableBloom=true,bOverride_EnableDOF=true,bOverride_EnableMotionBlur=true,bOverride_EnableSceneEffect=true,bOverride_AllowAmbientOcclusion=true,bOverride_OverrideRimShaderColor=true,bOverride_Bloom_Scale=true,bOverride_Bloom_Threshold=true,bOverride_Bloom_Tint=true,bOverride_Bloom_ScreenBlendThreshold=true,bOverride_Bloom_InterpolationDuration=true,bOverride_DOF_FalloffExponent=true,bOverride_DOF_BlurKernelSize=true,bOverride_DOF_BlurBloomKernelSize=true,bOverride_DOF_MaxNearBlurAmount=true,bOverride_DOF_MinBlurAmount=false,bOverride_DOF_MaxFarBlurAmount=true,bOverride_DOF_FocusType=true,bOverride_DOF_FocusInnerRadius=true,bOverride_DOF_FocusDistance=true,bOverride_DOF_FocusPosition=true,bOverride_DOF_InterpolationDuration=true,bOverride_DOF_BokehTexture=false,bOverride_MotionBlur_MaxVelocity=false,bOverride_MotionBlur_Amount=false,bOverride_MotionBlur_FullMotionBlur=false,bOverride_MotionBlur_CameraRotationThreshold=false,bOverride_MotionBlur_CameraTranslationThreshold=false,bOverride_MotionBlur_InterpolationDuration=false,bOverride_Scene_Desaturation=true,bOverride_Scene_Colorize=false,bOverride_Scene_TonemapperScale=false,bOverride_Scene_ImageGrainScale=false,bOverride_Scene_HighLights=true,bOverride_Scene_MidTones=true,bOverride_Scene_Shadows=true,bOverride_Scene_InterpolationDuration=true,bOverride_Scene_ColorGradingLUT=false,bOverride_RimShader_Color=true,bOverride_RimShader_InterpolationDuration=true,bOverride_MobileColorGrading=false,bEnableBloom=true,bEnableDOF=false,bEnableMotionBlur=true,bEnableSceneEffect=true,bAllowAmbientOcclusion=true,bOverrideRimShaderColor=false,Bloom_Scale=1.0000000,Bloom_Threshold=1.0000000,Bloom_Tint=(R=255,G=255,B=255,A=0),Bloom_ScreenBlendThreshold=10.0000000,Bloom_InterpolationDuration=1.0000000,DOF_BlurBloomKernelSize=16.0000000,DOF_FalloffExponent=4.0000000,DOF_BlurKernelSize=16.0000000,DOF_MaxNearBlurAmount=1.0000000,DOF_MinBlurAmount=0.0000000,DOF_MaxFarBlurAmount=1.0000000,DOF_FocusType=EFocusType.FOCUS_Distance,DOF_FocusInnerRadius=2000.0000000,DOF_FocusDistance=0.0000000,DOF_FocusPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000),DOF_InterpolationDuration=1.0000000,DOF_BokehTexture=none,MotionBlur_MaxVelocity=1.0000000,MotionBlur_Amount=0.5000000,MotionBlur_FullMotionBlur=true,MotionBlur_CameraRotationThreshold=45.0000000,MotionBlur_CameraTranslationThreshold=10000.0000000,MotionBlur_InterpolationDuration=1.0000000,Scene_Desaturation=0.0000000,Scene_Colorize=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_TonemapperScale=1.0000000,Scene_ImageGrainScale=0.0000000,Scene_HighLights=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_MidTones=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_Shadows=(X=0.0000000,Y=0.0000000,Z=0.0000000),Scene_InterpolationDuration=1.0000000,RimShader_Color=(R=0.4704400,G=0.5859730,B=0.8277260,A=1.0000000),RimShader_InterpolationDuration=1.0000000,ColorGrading_LookupTable=none,ColorGradingLUT=(LUTTextures=none,LUTWeights=none),MobileColorGrading=(TransitionTime=1.0000000,Blend=0.0000000,Desaturation=0.0000000,HighLights=(R=0.7000000,G=0.7000000,B=0.7000000,A=1.0000000),MidTones=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000),Shadows=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000)),MobilePostProcess=(bOverride_Mobile_BlurAmount=false,bOverride_Mobile_TransitionTime=false,bOverride_Mobile_Bloom_Scale=false,bOverride_Mobile_Bloom_Threshold=false,bOverride_Mobile_Bloom_Tint=false,bOverride_Mobile_DOF_Distance=false,bOverride_Mobile_DOF_MinRange=false,bOverride_Mobile_DOF_MaxRange=false,bOverride_Mobile_DOF_NearBlurFactor=false,bOverride_Mobile_DOF_FarBlurFactor=false,Mobile_BlurAmount=16.0000000,Mobile_TransitionTime=1.0000000,Mobile_Bloom_Scale=6.0000000,Mobile_Bloom_Threshold=0.5000000,Mobile_Bloom_Tint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000),Mobile_DOF_Distance=1500.0000000,Mobile_DOF_MinRange=600.0000000,Mobile_DOF_MaxRange=1200.0000000,Mobile_DOF_NearBlurFactor=1.0000000,Mobile_DOF_FarBlurFactor=1.0000000),Death_Enable=false,Death_DesatAlpha=0.0000000,Hit_Enable=false,Hit_FadeAlpha=0.0000000,ColorBlind_Enable=false,ColorBlind_Mode=0) + Components[0]=none + Components[1]=none + Physics=EPhysics.PHYS_Interpolating + TickGroup=ETickingGroup.TG_DuringAsyncWorkThreaded + bNoDelete=true + bServerTickIsDisabled=true + bEdShouldSnap=true + NetUpdateFrequency=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/CameraAnim.uc b/exported/Engine/Classes/CameraAnim.uc new file mode 100755 index 00000000..11715e7c --- /dev/null +++ b/exported/Engine/Classes/CameraAnim.uc @@ -0,0 +1,17 @@ +class CameraAnim extends Object + native(Camera); + +var InterpGroupCamera CameraInterpGroup; +var const float AnimLength; +var const Box BoundingBox; +var const PostProcessSettings BasePPSettings; +var const float BasePPSettingsAlpha; +var const float BaseFOV; + +defaultproperties +{ + AnimLength=3.0000000 + BasePPSettings=(bOverride_EnableBloom=false,bOverride_EnableDOF=false,bOverride_EnableMotionBlur=false,bOverride_EnableSceneEffect=false,bOverride_AllowAmbientOcclusion=false,bOverride_OverrideRimShaderColor=false,bOverride_Bloom_Scale=false,bOverride_Bloom_Threshold=false,bOverride_Bloom_Tint=false,bOverride_Bloom_ScreenBlendThreshold=false,bOverride_Bloom_InterpolationDuration=false,bOverride_DOF_FalloffExponent=false,bOverride_DOF_BlurKernelSize=false,bOverride_DOF_BlurBloomKernelSize=false,bOverride_DOF_MaxNearBlurAmount=false,bOverride_DOF_MinBlurAmount=false,bOverride_DOF_MaxFarBlurAmount=false,bOverride_DOF_FocusType=false,bOverride_DOF_FocusInnerRadius=false,bOverride_DOF_FocusDistance=false,bOverride_DOF_FocusPosition=false,bOverride_DOF_InterpolationDuration=false,bOverride_DOF_BokehTexture=false,bOverride_MotionBlur_MaxVelocity=false,bOverride_MotionBlur_Amount=false,bOverride_MotionBlur_FullMotionBlur=false,bOverride_MotionBlur_CameraRotationThreshold=false,bOverride_MotionBlur_CameraTranslationThreshold=false,bOverride_MotionBlur_InterpolationDuration=false,bOverride_Scene_Desaturation=false,bOverride_Scene_Colorize=false,bOverride_Scene_TonemapperScale=false,bOverride_Scene_ImageGrainScale=false,bOverride_Scene_HighLights=false,bOverride_Scene_MidTones=false,bOverride_Scene_Shadows=false,bOverride_Scene_InterpolationDuration=false,bOverride_Scene_ColorGradingLUT=false,bOverride_RimShader_Color=false,bOverride_RimShader_InterpolationDuration=false,bOverride_MobileColorGrading=false,bEnableBloom=true,bEnableDOF=false,bEnableMotionBlur=true,bEnableSceneEffect=true,bAllowAmbientOcclusion=true,bOverrideRimShaderColor=false,Bloom_Scale=1.0000000,Bloom_Threshold=1.0000000,Bloom_Tint=(R=255,G=255,B=255,A=0),Bloom_ScreenBlendThreshold=10.0000000,Bloom_InterpolationDuration=1.0000000,DOF_BlurBloomKernelSize=16.0000000,DOF_FalloffExponent=4.0000000,DOF_BlurKernelSize=16.0000000,DOF_MaxNearBlurAmount=1.0000000,DOF_MinBlurAmount=0.0000000,DOF_MaxFarBlurAmount=1.0000000,DOF_FocusType=EFocusType.FOCUS_Distance,DOF_FocusInnerRadius=2000.0000000,DOF_FocusDistance=0.0000000,DOF_FocusPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000),DOF_InterpolationDuration=1.0000000,DOF_BokehTexture=none,MotionBlur_MaxVelocity=1.0000000,MotionBlur_Amount=0.5000000,MotionBlur_FullMotionBlur=true,MotionBlur_CameraRotationThreshold=45.0000000,MotionBlur_CameraTranslationThreshold=10000.0000000,MotionBlur_InterpolationDuration=1.0000000,Scene_Desaturation=0.0000000,Scene_Colorize=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_TonemapperScale=1.0000000,Scene_ImageGrainScale=0.0000000,Scene_HighLights=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_MidTones=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_Shadows=(X=0.0000000,Y=0.0000000,Z=0.0000000),Scene_InterpolationDuration=1.0000000,RimShader_Color=(R=0.4704400,G=0.5859730,B=0.8277260,A=1.0000000),RimShader_InterpolationDuration=1.0000000,ColorGrading_LookupTable=none,ColorGradingLUT=(LUTTextures=none,LUTWeights=none),MobileColorGrading=(TransitionTime=1.0000000,Blend=0.0000000,Desaturation=0.0000000,HighLights=(R=0.7000000,G=0.7000000,B=0.7000000,A=1.0000000),MidTones=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000),Shadows=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000)),MobilePostProcess=(bOverride_Mobile_BlurAmount=false,bOverride_Mobile_TransitionTime=false,bOverride_Mobile_Bloom_Scale=false,bOverride_Mobile_Bloom_Threshold=false,bOverride_Mobile_Bloom_Tint=false,bOverride_Mobile_DOF_Distance=false,bOverride_Mobile_DOF_MinRange=false,bOverride_Mobile_DOF_MaxRange=false,bOverride_Mobile_DOF_NearBlurFactor=false,bOverride_Mobile_DOF_FarBlurFactor=false,Mobile_BlurAmount=16.0000000,Mobile_TransitionTime=1.0000000,Mobile_Bloom_Scale=6.0000000,Mobile_Bloom_Threshold=0.5000000,Mobile_Bloom_Tint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000),Mobile_DOF_Distance=1500.0000000,Mobile_DOF_MinRange=600.0000000,Mobile_DOF_MaxRange=1200.0000000,Mobile_DOF_NearBlurFactor=1.0000000,Mobile_DOF_FarBlurFactor=1.0000000),Death_Enable=false,Death_DesatAlpha=0.0000000,Hit_Enable=false,Hit_FadeAlpha=0.0000000,ColorBlind_Enable=false,ColorBlind_Mode=0) + BasePPSettingsAlpha=1.0000000 + BaseFOV=90.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/CameraAnimInst.uc b/exported/Engine/Classes/CameraAnimInst.uc new file mode 100755 index 00000000..bdaeae2f --- /dev/null +++ b/exported/Engine/Classes/CameraAnimInst.uc @@ -0,0 +1,59 @@ +class CameraAnimInst extends Object + native(Camera); + +var CameraAnim CamAnim; +var protected export editinline InterpGroupInst InterpGroupInst; +var protected transient float CurTime; +var protected transient bool bLooping; +var transient bool bFinished; +var transient bool bAutoReleaseWhenFinished; +var protected transient bool bBlendingIn; +var protected transient bool bBlendingOut; +var protected float BlendInTime; +var protected float BlendOutTime; +var protected transient float CurBlendInTime; +var protected transient float CurBlendOutTime; +var protected float PlayRate; +var float BasePlayScale; +var float TransientScaleModifier; +var float CurrentBlendWeight; +var protected transient float RemainingTime; +var transient InterpTrackMove MoveTrack; +var transient InterpTrackInstMove MoveInst; +var protected transient AnimNodeSequence SourceAnimNode; +var Camera.ECameraAnimPlaySpace PlaySpace; +var transient Matrix UserPlaySpaceMatrix; +var transient PostProcessSettings LastPPSettings; +var transient float LastPPSettingsAlpha; +var transient Vector LastCameraLoc; + +// Export UCameraAnimInst::execPlay(FFrame&, void* const) +native final function Play(CameraAnim Anim, Actor CamActor, float InRate, float InScale, float InBlendInTime, float InBlendOutTime, bool bInLoop, bool bRandomStartTime, optional float Duration); + +// Export UCameraAnimInst::execUpdate(FFrame&, void* const) +native final function Update(float NewRate, float NewScale, float NewBlendInTime, float NewBlendOutTime, optional float NewDuration); + +// Export UCameraAnimInst::execAdvanceAnim(FFrame&, void* const) +native final function AdvanceAnim(float DeltaTime, bool bJump); + +// Export UCameraAnimInst::execStop(FFrame&, void* const) +native final function Stop(optional bool bImmediate); + +// Export UCameraAnimInst::execApplyTransientScaling(FFrame&, void* const) +native final function ApplyTransientScaling(float Scalar); + +// Export UCameraAnimInst::execSetPlaySpace(FFrame&, void* const) +native final function SetPlaySpace(Camera.ECameraAnimPlaySpace NewSpace, optional Rotator UserPlaySpace); + +defaultproperties +{ + // Reference: InterpGroupInst'Engine.Default__CameraAnimInst.InterpGroupInst0' + begin object name="InterpGroupInst0" class=Engine.InterpGroupInst + end object + InterpGroupInst=InterpGroupInst0 + bFinished=true + bAutoReleaseWhenFinished=true + PlayRate=1.0000000 + TransientScaleModifier=1.0000000 + LastPPSettings=(bOverride_EnableBloom=true,bOverride_EnableDOF=true,bOverride_EnableMotionBlur=true,bOverride_EnableSceneEffect=true,bOverride_AllowAmbientOcclusion=true,bOverride_OverrideRimShaderColor=true,bOverride_Bloom_Scale=true,bOverride_Bloom_Threshold=true,bOverride_Bloom_Tint=true,bOverride_Bloom_ScreenBlendThreshold=true,bOverride_Bloom_InterpolationDuration=true,bOverride_DOF_FalloffExponent=true,bOverride_DOF_BlurKernelSize=true,bOverride_DOF_BlurBloomKernelSize=true,bOverride_DOF_MaxNearBlurAmount=true,bOverride_DOF_MinBlurAmount=false,bOverride_DOF_MaxFarBlurAmount=true,bOverride_DOF_FocusType=true,bOverride_DOF_FocusInnerRadius=true,bOverride_DOF_FocusDistance=true,bOverride_DOF_FocusPosition=true,bOverride_DOF_InterpolationDuration=true,bOverride_DOF_BokehTexture=false,bOverride_MotionBlur_MaxVelocity=false,bOverride_MotionBlur_Amount=false,bOverride_MotionBlur_FullMotionBlur=false,bOverride_MotionBlur_CameraRotationThreshold=false,bOverride_MotionBlur_CameraTranslationThreshold=false,bOverride_MotionBlur_InterpolationDuration=false,bOverride_Scene_Desaturation=true,bOverride_Scene_Colorize=false,bOverride_Scene_TonemapperScale=false,bOverride_Scene_ImageGrainScale=false,bOverride_Scene_HighLights=true,bOverride_Scene_MidTones=true,bOverride_Scene_Shadows=true,bOverride_Scene_InterpolationDuration=true,bOverride_Scene_ColorGradingLUT=false,bOverride_RimShader_Color=true,bOverride_RimShader_InterpolationDuration=true,bOverride_MobileColorGrading=false,bEnableBloom=true,bEnableDOF=false,bEnableMotionBlur=true,bEnableSceneEffect=true,bAllowAmbientOcclusion=true,bOverrideRimShaderColor=false,Bloom_Scale=1.0000000,Bloom_Threshold=1.0000000,Bloom_Tint=(R=255,G=255,B=255,A=0),Bloom_ScreenBlendThreshold=10.0000000,Bloom_InterpolationDuration=1.0000000,DOF_BlurBloomKernelSize=16.0000000,DOF_FalloffExponent=4.0000000,DOF_BlurKernelSize=16.0000000,DOF_MaxNearBlurAmount=1.0000000,DOF_MinBlurAmount=0.0000000,DOF_MaxFarBlurAmount=1.0000000,DOF_FocusType=EFocusType.FOCUS_Distance,DOF_FocusInnerRadius=2000.0000000,DOF_FocusDistance=0.0000000,DOF_FocusPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000),DOF_InterpolationDuration=1.0000000,DOF_BokehTexture=none,MotionBlur_MaxVelocity=1.0000000,MotionBlur_Amount=0.5000000,MotionBlur_FullMotionBlur=true,MotionBlur_CameraRotationThreshold=45.0000000,MotionBlur_CameraTranslationThreshold=10000.0000000,MotionBlur_InterpolationDuration=1.0000000,Scene_Desaturation=0.0000000,Scene_Colorize=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_TonemapperScale=1.0000000,Scene_ImageGrainScale=0.0000000,Scene_HighLights=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_MidTones=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_Shadows=(X=0.0000000,Y=0.0000000,Z=0.0000000),Scene_InterpolationDuration=1.0000000,RimShader_Color=(R=0.4704400,G=0.5859730,B=0.8277260,A=1.0000000),RimShader_InterpolationDuration=1.0000000,ColorGrading_LookupTable=none,ColorGradingLUT=(LUTTextures=none,LUTWeights=none),MobileColorGrading=(TransitionTime=1.0000000,Blend=0.0000000,Desaturation=0.0000000,HighLights=(R=0.7000000,G=0.7000000,B=0.7000000,A=1.0000000),MidTones=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000),Shadows=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000)),MobilePostProcess=(bOverride_Mobile_BlurAmount=false,bOverride_Mobile_TransitionTime=false,bOverride_Mobile_Bloom_Scale=false,bOverride_Mobile_Bloom_Threshold=false,bOverride_Mobile_Bloom_Tint=false,bOverride_Mobile_DOF_Distance=false,bOverride_Mobile_DOF_MinRange=false,bOverride_Mobile_DOF_MaxRange=false,bOverride_Mobile_DOF_NearBlurFactor=false,bOverride_Mobile_DOF_FarBlurFactor=false,Mobile_BlurAmount=16.0000000,Mobile_TransitionTime=1.0000000,Mobile_Bloom_Scale=6.0000000,Mobile_Bloom_Threshold=0.5000000,Mobile_Bloom_Tint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000),Mobile_DOF_Distance=1500.0000000,Mobile_DOF_MinRange=600.0000000,Mobile_DOF_MaxRange=1200.0000000,Mobile_DOF_NearBlurFactor=1.0000000,Mobile_DOF_FarBlurFactor=1.0000000),Death_Enable=false,Death_DesatAlpha=0.0000000,Hit_Enable=false,Hit_FadeAlpha=0.0000000,ColorBlind_Enable=false,ColorBlind_Mode=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/CameraConeComponent.uc b/exported/Engine/Classes/CameraConeComponent.uc new file mode 100755 index 00000000..742cb519 --- /dev/null +++ b/exported/Engine/Classes/CameraConeComponent.uc @@ -0,0 +1,9 @@ +class CameraConeComponent extends PrimitiveComponent + native + noexport; + +defaultproperties +{ + ReplacementPrimitive=none + AbsoluteScale=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/CameraModifier.uc b/exported/Engine/Classes/CameraModifier.uc new file mode 100755 index 00000000..493532db --- /dev/null +++ b/exported/Engine/Classes/CameraModifier.uc @@ -0,0 +1,178 @@ +class CameraModifier extends Object + native(Camera); + +var protected bool bDisabled; +var bool bPendingDisable; +var protected bool bExclusive; +var(Debug) bool bDebug; +var Camera CameraOwner; +var protected byte Priority; +var protected float AlphaInTime; +var protected float AlphaOutTime; +var protected transient float Alpha; +var protected transient float TargetAlpha; + +function Init() +{ + //return; +} + +// Export UCameraModifier::execModifyCamera(FFrame&, void* const) +native function bool ModifyCamera(Camera Camera, float DeltaTime, out TPOV OutPOV); + +// Export UCameraModifier::execIsDisabled(FFrame&, void* const) +native function bool IsDisabled(); + +function bool AddCameraModifier(Camera Camera) +{ + local int BestIdx, ModifierIdx; + local CameraModifier Modifier; + + ModifierIdx = 0; + J0x0B: + + // End:0x76 [Loop If] + if(ModifierIdx < Camera.ModifierList.Length) + { + // End:0x68 + if(Camera.ModifierList[ModifierIdx] == self) + { + return false; + } + ModifierIdx++; + // [Loop Continue] + goto J0x0B; + } + ModifierIdx = 0; + J0x81: + + // End:0x146 [Loop If] + if(ModifierIdx < Camera.ModifierList.Length) + { + // End:0x138 + if(Camera.ModifierList[ModifierIdx].Class == Class) + { + Camera.ModifierList[ModifierIdx] = self; + CameraOwner = Camera; + return true; + } + ModifierIdx++; + // [Loop Continue] + goto J0x81; + } + BestIdx = 0; + ModifierIdx = 0; + J0x15C: + + // End:0x25A [Loop If] + if(ModifierIdx < Camera.ModifierList.Length) + { + Modifier = Camera.ModifierList[ModifierIdx]; + // End:0x1CD + if(Modifier == none) + { + } + else + { + // End:0x241 + if(int(Priority) <= int(Modifier.Priority)) + { + // End:0x23E + if(bExclusive && int(Priority) == int(Modifier.Priority)) + { + return false; + } + // [Explicit Break] + goto J0x25A; + } + BestIdx++; + } + ModifierIdx++; + // [Loop Continue] + goto J0x15C; + } + J0x25A: + + Camera.ModifierList.Insert(BestIdx, 1); + Camera.ModifierList[BestIdx] = self; + CameraOwner = Camera; + return true; + //return ReturnValue; +} + +function bool RemoveCameraModifier(Camera Camera) +{ + local int ModifierIdx; + + ModifierIdx = 0; + J0x0B: + + // End:0xA0 [Loop If] + if(ModifierIdx < Camera.ModifierList.Length) + { + // End:0x92 + if(Camera.ModifierList[ModifierIdx] == self) + { + Camera.ModifierList.Remove(ModifierIdx, 1); + return true; + } + ModifierIdx++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +event DisableModifier(optional bool bImmediate) +{ + // End:0x29 + if(bImmediate) + { + bDisabled = true; + bPendingDisable = false; + } + else + { + // End:0x44 + if(!bDisabled) + { + bPendingDisable = true; + } + } + //return; +} + +function EnableModifier() +{ + bDisabled = false; + bPendingDisable = false; + //return; +} + +function ToggleModifier() +{ + // End:0x1A + if(bDisabled) + { + EnableModifier(); + } + else + { + DisableModifier(); + } + //return; +} + +simulated function bool ProcessViewRotation(Actor ViewTarget, float DeltaTime, out Rotator out_ViewRotation, out Rotator out_DeltaRot) +{ + //return ReturnValue; +} + +// Export UCameraModifier::execUpdateAlpha(FFrame&, void* const) +native function UpdateAlpha(Camera Camera, float DeltaTime); + +defaultproperties +{ + Priority=127 +} \ No newline at end of file diff --git a/exported/Engine/Classes/CameraModifier_CameraShake.uc b/exported/Engine/Classes/CameraModifier_CameraShake.uc new file mode 100755 index 00000000..6c60927e --- /dev/null +++ b/exported/Engine/Classes/CameraModifier_CameraShake.uc @@ -0,0 +1,261 @@ +class CameraModifier_CameraShake extends CameraModifier + native(Camera); + +struct native CameraShakeInstance +{ + var CameraShake SourceShake; + var name SourceShakeName; + var float OscillatorTimeRemaining; + var bool bBlendingIn; + var float CurrentBlendInTime; + var bool bBlendingOut; + var float CurrentBlendOutTime; + var Vector LocSinOffset; + var Vector RotSinOffset; + var float FOVSinOffset; + var Vector2D HUDSinOffset; + var float Scale; + var CameraAnimInst AnimInst; + var Camera.ECameraAnimPlaySpace PlaySpace; + var Matrix UserPlaySpaceMatrix; + + structdefaultproperties + { + SourceShake=none + SourceShakeName="None" + OscillatorTimeRemaining=0.0000000 + bBlendingIn=false + CurrentBlendInTime=0.0000000 + bBlendingOut=false + CurrentBlendOutTime=0.0000000 + LocSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000) + RotSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000) + FOVSinOffset=0.0000000 + HUDSinOffset=(X=0.0000000,Y=0.0000000) + Scale=0.0000000 + AnimInst=none + PlaySpace=ECameraAnimPlaySpace.CAPS_CameraLocal + UserPlaySpaceMatrix=(XPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000),YPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000),ZPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000),WPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000)) + } +}; + +var array ActiveShakes; +var() protected const float SplitScreenShakeScale; + +protected static function float InitializeOffset(const out FOscillator Param) +{ + switch(Param.InitialOffset) + { + // End:0x3B + case 0: + return (FRand() * float(2)) * 3.1415930; + // End:0x46 + case 1: + return 0.0000000; + // End:0xFFFF + default: + return 0.0000000; + break; + } + //return ReturnValue; +} + +protected function ReinitShake(int ActiveShakeIdx, float Scale) +{ + local CameraShake SourceShake; + local float Duration; + local bool bRandomStart, bLoop; + + // End:0x36 + if(Class'Engine.Engine'.static.IsSplitScreen()) + { + Scale *= SplitScreenShakeScale; + } + ActiveShakes[ActiveShakeIdx].Scale = Scale; + SourceShake = ActiveShakes[ActiveShakeIdx].SourceShake; + // End:0x279 + if(SourceShake.OscillationDuration != 0.0000000) + { + ActiveShakes[ActiveShakeIdx].OscillatorTimeRemaining = SourceShake.OscillationDuration; + // End:0x279 + if(ActiveShakes[ActiveShakeIdx].bBlendingOut) + { + ActiveShakes[ActiveShakeIdx].bBlendingOut = false; + ActiveShakes[ActiveShakeIdx].CurrentBlendOutTime = 0.0000000; + ActiveShakes[ActiveShakeIdx].bBlendingIn = true; + ActiveShakes[ActiveShakeIdx].CurrentBlendInTime = ActiveShakes[ActiveShakeIdx].SourceShake.OscillationBlendInTime * (1.0000000 - (ActiveShakes[ActiveShakeIdx].CurrentBlendOutTime / ActiveShakes[ActiveShakeIdx].SourceShake.OscillationBlendOutTime)); + } + } + // End:0x3E4 + if(SourceShake.Anim != none) + { + // End:0x2FF + if(SourceShake.bRandomAnimSegment) + { + bLoop = true; + bRandomStart = true; + Duration = SourceShake.RandomAnimSegmentDuration; + } + ActiveShakes[ActiveShakeIdx].AnimInst = CameraOwner.PlayCameraAnim(SourceShake.Anim, SourceShake.AnimPlayRate, Scale, SourceShake.AnimBlendInTime, SourceShake.AnimBlendOutTime, bLoop, bRandomStart, Duration, true); + } + //return; +} + +protected function CameraShakeInstance InitializeShake(CameraShake NewShake, float Scale, Camera.ECameraAnimPlaySpace PlaySpace, optional Rotator UserPlaySpaceRot) +{ + local CameraShakeInstance Inst; + local float Duration; + local bool bRandomStart, bLoop; + + Inst.SourceShakeName = NewShake.Name; + Inst.SourceShake = new (self) NewShake.Class; + Inst.SourceShake.OscillationDuration = NewShake.OscillationDuration; + Inst.SourceShake.OscillationBlendInTime = NewShake.OscillationBlendInTime; + Inst.SourceShake.OscillationBlendOutTime = NewShake.OscillationBlendOutTime; + Inst.SourceShake.RotOscillation = NewShake.RotOscillation; + Inst.SourceShake.LocOscillation = NewShake.LocOscillation; + Inst.SourceShake.FOVOscillation = NewShake.FOVOscillation; + Inst.SourceShake.Anim = NewShake.Anim; + Inst.SourceShake.AnimPlayRate = NewShake.AnimPlayRate; + Inst.SourceShake.AnimBlendInTime = NewShake.AnimBlendInTime; + Inst.SourceShake.AnimBlendOutTime = NewShake.AnimBlendOutTime; + Inst.SourceShake.bRandomAnimSegment = NewShake.bRandomAnimSegment; + Inst.SourceShake.RandomAnimSegmentDuration = NewShake.RandomAnimSegmentDuration; + Inst.SourceShake.bDoHUDShake = NewShake.bDoHUDShake; + Inst.SourceShake.HUDOscillation = NewShake.HUDOscillation; + Inst.Scale = Scale; + // End:0x53C + if(Class'Engine.Engine'.static.IsSplitScreen()) + { + Scale *= SplitScreenShakeScale; + } + // End:0x9A5 + if(NewShake.OscillationDuration != 0.0000000) + { + Inst.RotSinOffset.X = InitializeOffset(NewShake.RotOscillation.Pitch); + Inst.RotSinOffset.Y = InitializeOffset(NewShake.RotOscillation.Yaw); + Inst.RotSinOffset.Z = InitializeOffset(NewShake.RotOscillation.Roll); + Inst.LocSinOffset.X = InitializeOffset(NewShake.LocOscillation.X); + Inst.LocSinOffset.Y = InitializeOffset(NewShake.LocOscillation.Y); + Inst.LocSinOffset.Z = InitializeOffset(NewShake.LocOscillation.Z); + Inst.HUDSinOffset.X = InitializeOffset(NewShake.HUDOscillation.X); + Inst.HUDSinOffset.Y = InitializeOffset(NewShake.HUDOscillation.Y); + Inst.FOVSinOffset = InitializeOffset(NewShake.FOVOscillation); + Inst.OscillatorTimeRemaining = NewShake.OscillationDuration; + // End:0x9A5 + if(NewShake.OscillationBlendInTime > 0.0000000) + { + Inst.bBlendingIn = true; + Inst.CurrentBlendInTime = 0.0000000; + } + } + // End:0xBB3 + if(NewShake.Anim != none) + { + // End:0xA2B + if(NewShake.bRandomAnimSegment) + { + bLoop = true; + bRandomStart = true; + Duration = NewShake.RandomAnimSegmentDuration; + } + // End:0xBB3 + if(Scale > 0.0000000) + { + Inst.AnimInst = CameraOwner.PlayCameraAnim(NewShake.Anim, NewShake.AnimPlayRate, Scale, NewShake.AnimBlendInTime, NewShake.AnimBlendOutTime, bLoop, bRandomStart, Duration, NewShake.bSingleInstance); + // End:0xBB3 + if((int(PlaySpace) != int(0)) && Inst.AnimInst != none) + { + Inst.AnimInst.SetPlaySpace(PlaySpace, UserPlaySpaceRot); + } + } + } + Inst.PlaySpace = PlaySpace; + // End:0xC30 + if(int(Inst.PlaySpace) == int(2)) + { + Inst.UserPlaySpaceMatrix = MakeRotationMatrix(UserPlaySpaceRot); + } + return Inst; + //return ReturnValue; +} + +function AddCameraShake(CameraShake NewShake, float Scale, optional Camera.ECameraAnimPlaySpace PlaySpace = 0, optional Rotator UserPlaySpaceRot) +{ + local int ShakeIdx, NumShakes; + + // End:0xFD + if(NewShake != none) + { + // End:0xA7 + if(NewShake.bSingleInstance) + { + ShakeIdx = ActiveShakes.Find('SourceShakeName', NewShake.Name); + // End:0xA7 + if(ShakeIdx != -1) + { + ReinitShake(ShakeIdx, Scale); + return; + } + } + NumShakes = ActiveShakes.Length; + ActiveShakes[NumShakes] = InitializeShake(NewShake, Scale, PlaySpace, UserPlaySpaceRot); + } + //return; +} + +function RemoveCameraShake(CameraShake Shake) +{ + local int Idx; + local CameraAnimInst AnimInst; + + Idx = ActiveShakes.Find('SourceShakeName', Shake.Name); + // End:0x11F + if(Idx != -1) + { + AnimInst = ActiveShakes[Idx].AnimInst; + // End:0x10A + if((AnimInst != none) && !AnimInst.bFinished) + { + CameraOwner.StopCameraAnim(AnimInst, ((Shake.AnimBlendOutTime > 0.0000000) ? false : true)); + } + ActiveShakes.Remove(Idx, 1); + } + //return; +} + +function RemoveAllCameraShakes() +{ + local int Idx; + local CameraAnimInst AnimInst; + + Idx = 0; + J0x0B: + + // End:0xBF [Loop If] + if(Idx < ActiveShakes.Length) + { + AnimInst = ActiveShakes[Idx].AnimInst; + // End:0xB1 + if((AnimInst != none) && !AnimInst.bFinished) + { + CameraOwner.StopCameraAnim(AnimInst, true); + } + ++Idx; + // [Loop Continue] + goto J0x0B; + } + ActiveShakes.Length = 0; + //return; +} + +// Export UCameraModifier_CameraShake::execUpdateCameraShake(FFrame&, void* const) +native function UpdateCameraShake(float DeltaTime, out CameraShakeInstance Shake, out TPOV OutPOV); + +// Export UCameraModifier_CameraShake::execModifyCamera(FFrame&, void* const) +native function bool ModifyCamera(Camera Camera, float DeltaTime, out TPOV OutPOV); + +defaultproperties +{ + SplitScreenShakeScale=0.5000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/CameraShake.uc b/exported/Engine/Classes/CameraShake.uc new file mode 100755 index 00000000..9206e4ee --- /dev/null +++ b/exported/Engine/Classes/CameraShake.uc @@ -0,0 +1,124 @@ +class CameraShake extends Object + native(Camera) + editinlinenew; + +enum EInitialOscillatorOffset +{ + EOO_OffsetRandom, // 0 + EOO_OffsetZero, // 1 + EOO_MAX // 2 +}; + +struct native FOscillator +{ + var() float Amplitude; + var() float Frequency; + var() CameraShake.EInitialOscillatorOffset InitialOffset; + + structdefaultproperties + { + Amplitude=0.0000000 + Frequency=0.0000000 + InitialOffset=EInitialOscillatorOffset.EOO_OffsetRandom + } +}; + +struct native ROscillator +{ + var() FOscillator Pitch; + var() FOscillator Yaw; + var() FOscillator Roll; + + structdefaultproperties + { + Pitch=(Amplitude=0.0000000,Frequency=0.0000000,InitialOffset=EInitialOscillatorOffset.EOO_OffsetRandom) + Yaw=(Amplitude=0.0000000,Frequency=0.0000000,InitialOffset=EInitialOscillatorOffset.EOO_OffsetRandom) + Roll=(Amplitude=0.0000000,Frequency=0.0000000,InitialOffset=EInitialOscillatorOffset.EOO_OffsetRandom) + } +}; + +struct native VOscillator +{ + var() FOscillator X; + var() FOscillator Y; + var() FOscillator Z; + + structdefaultproperties + { + X=(Amplitude=0.0000000,Frequency=0.0000000,InitialOffset=EInitialOscillatorOffset.EOO_OffsetRandom) + Y=(Amplitude=0.0000000,Frequency=0.0000000,InitialOffset=EInitialOscillatorOffset.EOO_OffsetRandom) + Z=(Amplitude=0.0000000,Frequency=0.0000000,InitialOffset=EInitialOscillatorOffset.EOO_OffsetRandom) + } +}; + +struct native V2DOscillator +{ + var() FOscillator X; + var() FOscillator Y; + + structdefaultproperties + { + X=(Amplitude=0.0000000,Frequency=0.0000000,InitialOffset=EInitialOscillatorOffset.EOO_OffsetRandom) + Y=(Amplitude=0.0000000,Frequency=0.0000000,InitialOffset=EInitialOscillatorOffset.EOO_OffsetRandom) + } +}; + +var() bool bSingleInstance; +var(AnimShake) bool bRandomAnimSegment; +var(HUD) bool bDoHUDShake; +var(Oscillation) float OscillationDuration; +var(Oscillation) float OscillationBlendInTime; +var(Oscillation) float OscillationBlendOutTime; +var(Oscillation) ROscillator RotOscillation; +var(Oscillation) VOscillator LocOscillation; +var(Oscillation) FOscillator FOVOscillation; +var(AnimShake) CameraAnim Anim; +var(AnimShake) float AnimPlayRate; +var(AnimShake) float AnimScale; +var(AnimShake) float AnimBlendInTime; +var(AnimShake) float AnimBlendOutTime; +var(AnimShake) float RandomAnimSegmentDuration; +var(HUD) V2DOscillator HUDOscillation; + +simulated function float GetRotOscillationMagnitude() +{ + local Vector V; + + V.X = RotOscillation.Pitch.Amplitude; + V.Y = RotOscillation.Yaw.Amplitude; + V.Z = RotOscillation.Roll.Amplitude; + return VSize(V); + //return ReturnValue; +} + +simulated function float GetLocOscillationMagnitude() +{ + local Vector V; + + V.X = LocOscillation.X.Amplitude; + V.Y = LocOscillation.Y.Amplitude; + V.Z = LocOscillation.Z.Amplitude; + return VSize(V); + //return ReturnValue; +} + +simulated function float GetHUDOscillationMagnitude() +{ + local Vector V; + + V.X = HUDOscillation.X.Amplitude; + V.Y = HUDOscillation.Y.Amplitude; + V.Z = 0.0000000; + return VSize(V); + //return ReturnValue; +} + +defaultproperties +{ + OscillationBlendInTime=0.1000000 + OscillationBlendOutTime=0.2000000 + AnimPlayRate=1.0000000 + AnimScale=1.0000000 + AnimBlendInTime=0.2000000 + AnimBlendOutTime=0.2000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Canvas.uc b/exported/Engine/Classes/Canvas.uc new file mode 100755 index 00000000..374d8dbb --- /dev/null +++ b/exported/Engine/Classes/Canvas.uc @@ -0,0 +1,467 @@ +class Canvas extends Object + transient + native; + +enum EDisplayPlane +{ + DISPLAYPLANE_RENDER, // 0 + DISPLAYPLANE_HUD, // 1 + DISPLAYPLANE_INTERMEDIATE_HUD, // 2 + DISPLAYPLANE_MAX // 3 +}; + +enum ECanvasBlendMode +{ + BLEND_CANVAS_Opaque, // 0 + BLEND_CANVAS_Masked, // 1 + BLEND_CANVAS_Translucent, // 2 + BLEND_CANVAS_Additive, // 3 + BLEND_CANVAS_Modulate, // 4 + BLEND_CANVAS_ModulateAndAdd, // 5 + BLEND_CANVAS_SoftMasked, // 6 + BLEND_CANVAS_AlphaComposite, // 7 + BLEND_CANVAS_DitheredTranslucent,// 8 + BLEND_CANVAS_AlphaOnly, // 9 + BLEND_CANVAS_MAX // 10 +}; + +struct native CanvasIcon +{ + var() Texture Texture; + var() float U; + var() float V; + var() float UL; + var() float VL; + + structdefaultproperties + { + Texture=none + U=0.0000000 + V=0.0000000 + UL=0.0000000 + VL=0.0000000 + } +}; + +struct native DepthFieldGlowInfo +{ + var bool bEnableGlow; + var LinearColor GlowColor; + var Vector2D GlowOuterRadius; + var Vector2D GlowInnerRadius; + + structdefaultproperties + { + bEnableGlow=false + GlowColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + GlowOuterRadius=(X=0.0000000,Y=0.0000000) + GlowInnerRadius=(X=0.0000000,Y=0.0000000) + } +}; + +struct native MobileDistanceFieldParams +{ + var float Gamma; + var float AlphaRefVal; + var float SmoothWidth; + var bool EnableShadow; + var Vector2D ShadowDirection; + var LinearColor ShadowColor; + var float ShadowSmoothWidth; + var native DepthFieldGlowInfo GlowInfo; + var int BlendMode; + + structdefaultproperties + { + Gamma=0.0000000 + AlphaRefVal=0.0000000 + SmoothWidth=0.0000000 + EnableShadow=false + ShadowDirection=(X=0.0000000,Y=0.0000000) + ShadowColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + ShadowSmoothWidth=0.0000000 + BlendMode=0 + } +}; + +struct native FontRenderInfo +{ + var bool bClipText; + var bool bEnableShadow; + var DepthFieldGlowInfo GlowInfo; + + structdefaultproperties + { + bClipText=false + bEnableShadow=false + GlowInfo=(bEnableGlow=false,GlowColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000),GlowOuterRadius=(X=0.0000000,Y=0.0000000),GlowInnerRadius=(X=0.0000000,Y=0.0000000)) + } +}; + +struct native CanvasUVTri +{ + var() Vector2D V0_Pos; + var() Vector2D V0_UV; + var() Vector2D V1_Pos; + var() Vector2D V1_UV; + var() Vector2D V2_Pos; + var() Vector2D V2_UV; + + structdefaultproperties + { + V0_Pos=(X=0.0000000,Y=0.0000000) + V0_UV=(X=0.0000000,Y=0.0000000) + V1_Pos=(X=0.0000000,Y=0.0000000) + V1_UV=(X=0.0000000,Y=0.0000000) + V2_Pos=(X=0.0000000,Y=0.0000000) + V2_UV=(X=0.0000000,Y=0.0000000) + } +}; + +struct native transient TextSizingParameters +{ + var init float DrawX; + var init float DrawY; + var init float DrawXL; + var init float DrawYL; + var init Vector2D Scaling; + var init Font DrawFont; + var init Vector2D SpacingAdjust; + var init float ViewportHeight; + + structdefaultproperties + { + DrawX=0.0000000 + DrawY=0.0000000 + DrawXL=0.0000000 + DrawYL=0.0000000 + Scaling=(X=0.0000000,Y=0.0000000) + DrawFont=none + SpacingAdjust=(X=0.0000000,Y=0.0000000) + ViewportHeight=0.0000000 + } +}; + +struct native transient WrappedStringElement +{ + var init string Value; + var init Vector2D LineExtent; + + structdefaultproperties + { + Value="" + LineExtent=(X=0.0000000,Y=0.0000000) + } +}; + +var Font Font; +var float OrgX; +var float OrgY; +var float ClipX; +var float ClipY; +var const float CurX; +var const float CurY; +var const float CurZ; +var float CurYL; +var Color DrawColor; +var bool bCenter; +var bool bNoSmooth; +var const int SizeX; +var const int SizeY; +var native const Pointer Canvas; +var native const Pointer SceneView; +var Plane ColorModulate; +var Texture2D DefaultTexture; + +// Export UCanvas::execDrawTile(FFrame&, void* const) +native final function DrawTile(Texture Tex, float XL, float YL, float U, float V, float UL, float VL, optional LinearColor LColor, optional bool ClipTile, optional EngineTypes.EBlendMode Blend, optional Canvas.EDisplayPlane DisplayPlane); + +// Export UCanvas::execPreOptimizeDrawTiles(FFrame&, void* const) +native final function PreOptimizeDrawTiles(int Num, Texture Tex, optional EngineTypes.EBlendMode Blend); + +// Export UCanvas::execDrawMaterialTile(FFrame&, void* const) +native final function DrawMaterialTile(MaterialInterface Mat, float XL, float YL, optional float U, optional float V, optional float UL, optional float VL, optional bool bClipTile); + +// Export UCanvas::execDrawRotatedTile(FFrame&, void* const) +native final function DrawRotatedTile(Texture Tex, Rotator Rotation, float XL, float YL, float U, float V, float UL, float VL, optional float AnchorX = 0.5000000, optional float AnchorY = 0.5000000, optional Canvas.EDisplayPlane DisplayPlane = 0); + +// Export UCanvas::execDrawRotatedMaterialTile(FFrame&, void* const) +native final function DrawRotatedMaterialTile(MaterialInterface Mat, Rotator Rotation, float XL, float YL, optional float U = 0.0000000, optional float V = 0.0000000, optional float UL = 0.0000000, optional float VL = 0.0000000, optional float AnchorX = 0.5000000, optional float AnchorY = 0.5000000, optional Canvas.EDisplayPlane DisplayPlane = 0); + +// Export UCanvas::execDrawTimer(FFrame&, void* const) +native final function DrawTimer(Texture Tex, float StartTime, float TotalTime, float XL, float YL, float U, float V, float UL, float VL, optional LinearColor LColor, optional EngineTypes.EBlendMode Blend); + +// Export UCanvas::execDrawTileStretched(FFrame&, void* const) +native final function DrawTileStretched(Texture Tex, float XL, float YL, float U, float V, float UL, float VL, optional LinearColor LColor, optional bool bStretchHorizontally, optional bool bStretchVertically, optional float ScalingFactor, optional Canvas.EDisplayPlane DisplayPlane); + +// Export UCanvas::execDrawTris(FFrame&, void* const) +native final function DrawTris(Texture Tex, array Triangles, Color InColor); + +static final function FontRenderInfo CreateFontRenderInfo(optional bool bClipText, optional bool bEnableShadow, optional LinearColor GlowColor, optional Vector2D GlowOuterRadius, optional Vector2D GlowInnerRadius) +{ + local FontRenderInfo Result; + + Result.bClipText = bClipText; + Result.bEnableShadow = bEnableShadow; + Result.GlowInfo.bEnableGlow = GlowColor.A != 0.0000000; + // End:0x14E + if(Result.GlowInfo.bEnableGlow) + { + Result.GlowInfo.GlowOuterRadius = GlowOuterRadius; + Result.GlowInfo.GlowInnerRadius = GlowInnerRadius; + } + return Result; + //return ReturnValue; +} + +// Export UCanvas::execStrLen(FFrame&, void* const) +native final function StrLen(coerce string String, out float XL, out float YL); + +// Export UCanvas::execTextSize(FFrame&, void* const) +native final function TextSize(coerce string String, out float XL, out float YL, optional float XScale = 1.0000000, optional float YScale = 1.0000000); + +// Export UCanvas::execDrawText(FFrame&, void* const) +native final function DrawText(coerce string Text, optional bool CR = true, optional float XScale = 1.0000000, optional float YScale = 1.0000000, const optional out FontRenderInfo RenderInfo, optional Canvas.EDisplayPlane DisplayPlane = 0); + +// Export UCanvas::execProject(FFrame&, void* const) +native final function Vector Project(Vector Location); + +// Export UCanvas::execDeProject(FFrame&, void* const) +native final function DeProject(Vector2D ScreenPos, out Vector WorldOrigin, out Vector WorldDirection); + +// Export UCanvas::execPushTranslationMatrix(FFrame&, void* const) +native final function PushTranslationMatrix(Vector TranslationVector); + +// Export UCanvas::execPopTransform(FFrame&, void* const) +native final function PopTransform(); + +event Reset(optional bool bKeepOrigin) +{ + Font = GetDefaultCanvasFont(); + // End:0x4A + if(!bKeepOrigin) + { + OrgX = default.OrgX; + OrgY = default.OrgY; + } + SetPos(default.CurX, default.CurY); + DrawColor = default.DrawColor; + CurYL = default.CurYL; + bCenter = false; + bNoSmooth = false; + //return; +} + +function Font GetDefaultCanvasFont() +{ + return Class'Engine.Engine'.static.GetSmallFont(); + //return ReturnValue; +} + +// Export UCanvas::execSetPos(FFrame&, void* const) +native final function SetPos(float PosX, float PosY, optional float PosZ = 0.0000000); + +final function SetOrigin(float X, float Y) +{ + OrgX = X; + OrgY = Y; + //return; +} + +final function SetClip(float X, float Y) +{ + ClipX = X; + ClipY = Y; + //return; +} + +// Export UCanvas::execPushMaskRegion(FFrame&, void* const) +native final function PushMaskRegion(float X, float Y, float XL, float YL); + +// Export UCanvas::execPopMaskRegion(FFrame&, void* const) +native final function PopMaskRegion(); + +final function DrawTexture(Texture Tex, float Scale, optional Canvas.EDisplayPlane DisplayPlane = 0) +{ + local LinearColor TempColor; + + // End:0x1E1 + if(Tex != none) + { + TempColor.R = float(DrawColor.R) / 255.0000000; + TempColor.G = float(DrawColor.G) / 255.0000000; + TempColor.B = float(DrawColor.B) / 255.0000000; + TempColor.A = float(DrawColor.A) / 255.0000000; + DrawTile(Tex, Tex.GetSurfaceWidth() * Scale, Tex.GetSurfaceHeight() * Scale, 0.0000000, 0.0000000, Tex.GetSurfaceWidth(), Tex.GetSurfaceHeight(), TempColor, false, 2, DisplayPlane); + } + //return; +} + +// Export UCanvas::execDrawBlendedTile(FFrame&, void* const) +native final function DrawBlendedTile(Texture Tex, float XL, float YL, float U, float V, float UL, float VL, Canvas.ECanvasBlendMode Blend, optional Canvas.EDisplayPlane DisplayPlane = 0); + +final function CanvasIcon MakeIcon(Texture Texture, optional float U, optional float V, optional float UL, optional float VL) +{ + local CanvasIcon Icon; + + // End:0x139 + if(Texture != none) + { + Icon.Texture = Texture; + Icon.U = U; + Icon.V = V; + Icon.UL = ((UL != 0.0000000) ? UL : Texture.GetSurfaceWidth()); + Icon.VL = ((VL != 0.0000000) ? VL : Texture.GetSurfaceHeight()); + } + return Icon; + //return ReturnValue; +} + +final function DrawScaledIcon(CanvasIcon Icon, float X, float Y, Vector Scale, optional Canvas.EDisplayPlane DisplayPlane = 0) +{ + local LinearColor TempColor; + + // End:0x3B3 + if(Icon.Texture != none) + { + // End:0x81 + if(VSize(Scale) <= 0.0000000) + { + Scale.X = 1.0000000; + Scale.Y = 1.0000000; + } + // End:0xF6 + if(Icon.UL == 0.0000000) + { + Icon.UL = Icon.Texture.GetSurfaceWidth(); + } + // End:0x16B + if(Icon.VL == 0.0000000) + { + Icon.VL = Icon.Texture.GetSurfaceHeight(); + } + SetPos(CurX, CurY); + TempColor.R = float(DrawColor.R) / 255.0000000; + TempColor.G = float(DrawColor.G) / 255.0000000; + TempColor.B = float(DrawColor.B) / 255.0000000; + TempColor.A = float(DrawColor.A) / 255.0000000; + DrawTile(Icon.Texture, Abs(Icon.UL) * Scale.X, Abs(Icon.VL) * Scale.Y, Icon.U, Icon.V, Icon.UL, Icon.VL, TempColor, false, 2, DisplayPlane); + } + //return; +} + +final function DrawIcon(CanvasIcon Icon, float X, float Y, optional float Scale, optional Canvas.EDisplayPlane DisplayPlane = 0) +{ + local LinearColor TempColor; + + // End:0x357 + if(Icon.Texture != none) + { + // End:0x4B + if(Scale <= 0.0000000) + { + Scale = 1.0000000; + } + // End:0xC0 + if(Icon.UL == 0.0000000) + { + Icon.UL = Icon.Texture.GetSurfaceWidth(); + } + // End:0x135 + if(Icon.VL == 0.0000000) + { + Icon.VL = Icon.Texture.GetSurfaceHeight(); + } + SetPos(X, Y); + TempColor.R = float(DrawColor.R) / 255.0000000; + TempColor.G = float(DrawColor.G) / 255.0000000; + TempColor.B = float(DrawColor.B) / 255.0000000; + TempColor.A = float(DrawColor.A) / 255.0000000; + DrawTile(Icon.Texture, Abs(Icon.UL) * Scale, Abs(Icon.VL) * Scale, Icon.U, Icon.V, Icon.UL, Icon.VL, TempColor, false, 2, DisplayPlane); + } + //return; +} + +final function DrawRect(float RectX, float RectY, optional Texture Tex = DefaultTexture, optional Canvas.EDisplayPlane DisplayPlane = 0) +{ + local LinearColor TempColor; + + TempColor.R = float(DrawColor.R) / 255.0000000; + TempColor.G = float(DrawColor.G) / 255.0000000; + TempColor.B = float(DrawColor.B) / 255.0000000; + TempColor.A = float(DrawColor.A) / 255.0000000; + DrawTile(Tex, RectX, RectY, 0.0000000, 0.0000000, Tex.GetSurfaceWidth(), Tex.GetSurfaceHeight(), TempColor, false, 2, DisplayPlane); + //return; +} + +final simulated function DrawBox(float Width, float Height) +{ + local int X, Y; + + X = int(CurX); + Y = int(CurY); + SetPos(float(X), float(Y)); + DrawRect(2.0000000, Height); + SetPos((float(X) + Width) - float(2), float(Y)); + DrawRect(2.0000000, Height); + SetPos(float(X + 2), float(Y)); + DrawRect(Width - float(4), 2.0000000); + SetPos(float(X + 2), (float(Y) + Height) - float(2)); + DrawRect(Width - float(4), 2.0000000); + SetPos(float(X), float(Y)); + //return; +} + +// Export UCanvas::execSetDrawColor(FFrame&, void* const) +native final function SetDrawColor(byte R, byte G, byte B, optional byte A = 255); + +final function SetDrawColorStruct(Color C) +{ + SetDrawColor(C.R, C.G, C.B, C.A); + //return; +} + +// Export UCanvas::execDraw2DLine(FFrame&, void* const) +native final function Draw2DLine(float X1, float Y1, float X2, float Y2, Color LineColor); + +// Export UCanvas::execDrawTextureLine(FFrame&, void* const) +native final function DrawTextureLine(Vector StartPoint, Vector EndPoint, float Perc, float Width, Color LineColor, Texture LineTexture, float U, float V, float UL, float VL); + +// Export UCanvas::execDrawTextureDoubleLine(FFrame&, void* const) +native final function DrawTextureDoubleLine(Vector StartPoint, Vector EndPoint, float Perc, float Spacing, float Width, Color LineColor, Color AltLineColor, Texture Tex, float U, float V, float UL, float VL); + +function DrawDebugGraph(coerce string Title, float ValueX, float ValueY, float UL_X, float UL_Y, float W, float H, Vector2D RangeX, Vector2D RangeY) +{ + local int X, Y; + + SetDrawColor(255, 255, 255, 255); + SetPos(UL_X, UL_Y); + DrawBox(W, H); + SetDrawColor(255, 255, 0, 255); + X = int((UL_X + (GetRangePctByValue(RangeX, ValueX) * W)) - float(8 / 2)); + Y = int((UL_Y + (GetRangePctByValue(RangeY, ValueY) * H)) - float(8 / 2)); + SetPos(float(X), float(Y)); + DrawRect(8.0000000, 8.0000000); + SetDrawColor(128, 128, 0, 128); + Draw2DLine(UL_X, float(Y), UL_X + W, float(Y), DrawColor); + Draw2DLine(float(X), UL_Y, float(X), UL_Y + H, DrawColor); + SetDrawColor(255, 255, 0, 255); + SetPos(float(X), (UL_Y + H) + float(16)); + DrawText(string(ValueX)); + SetPos((UL_X + W) + float(8), float(Y)); + DrawText(string(ValueY)); + // End:0x2B3 + if(Title != "") + { + SetPos(UL_X, UL_Y - float(16)); + DrawText(Title); + } + //return; +} + +defaultproperties +{ + DrawColor=(R=127,G=127,B=127,A=255) + ColorModulate=(W=1.0000000,X=1.0000000,Y=1.0000000,Z=1.0000000) + DefaultTexture=Texture2D'EngineResources.WhiteSquareTexture' +} \ No newline at end of file diff --git a/exported/Engine/Classes/CeilingReachSpec.uc b/exported/Engine/Classes/CeilingReachSpec.uc new file mode 100755 index 00000000..e41d6a1a --- /dev/null +++ b/exported/Engine/Classes/CeilingReachSpec.uc @@ -0,0 +1,2 @@ +class CeilingReachSpec extends ReachSpec + native; diff --git a/exported/Engine/Classes/CheatManager.uc b/exported/Engine/Classes/CheatManager.uc new file mode 100755 index 00000000..7f7e5e26 --- /dev/null +++ b/exported/Engine/Classes/CheatManager.uc @@ -0,0 +1,1293 @@ +class CheatManager extends Object within PlayerController + native; + +var const localized string ViewingFrom; +var const localized string OwnCamera; + +exec function FXPlay(Class aClass, string FXAnimPath) +{ + local Pawn P, ClosestPawn; + local float ThisDistance, ClosestPawnDistance; + local string FxAnimGroup, FxAnimName; + local int dotPos; + + // End:0x2A2 + if(int(Outer.WorldInfo.NetMode) == int(NM_Standalone)) + { + ClosestPawn = none; + ClosestPawnDistance = 10000000.0000000; + // End:0x1BA + foreach Outer.DynamicActors(Class'Engine.Pawn', P) + { + // End:0x1B9 + if(ClassIsChildOf(P.Class, aClass) && P != PlayerController(Outer.Owner).Pawn) + { + ThisDistance = VSize(P.Location - PlayerController(Outer.Owner).Pawn.Location); + // End:0x1B9 + if(ThisDistance < ClosestPawnDistance) + { + ClosestPawn = P; + ClosestPawnDistance = ThisDistance; + } + } + } + // End:0x2A2 + if(ClosestPawn.Mesh != none) + { + dotPos = InStr(FXAnimPath, "."); + // End:0x2A2 + if(dotPos != -1) + { + FxAnimGroup = Left(FXAnimPath, dotPos); + FxAnimName = Right(FXAnimPath, (Len(FXAnimPath) - dotPos) - 1); + ClosestPawn.Mesh.PlayFaceFXAnim(none, FxAnimName, FxAnimGroup, none, none); + } + } + } + //return; +} + +exec function FXStop(Class aClass) +{ + local Pawn P, ClosestPawn; + local float ThisDistance, ClosestPawnDistance; + + // End:0x213 + if(int(Outer.WorldInfo.NetMode) == int(NM_Standalone)) + { + ClosestPawn = none; + ClosestPawnDistance = 10000000.0000000; + // End:0x1BA + foreach Outer.DynamicActors(Class'Engine.Pawn', P) + { + // End:0x1B9 + if(ClassIsChildOf(P.Class, aClass) && P != PlayerController(Outer.Owner).Pawn) + { + ThisDistance = VSize(P.Location - PlayerController(Outer.Owner).Pawn.Location); + // End:0x1B9 + if(ThisDistance < ClosestPawnDistance) + { + ClosestPawn = P; + ClosestPawnDistance = ThisDistance; + } + } + } + // End:0x213 + if(ClosestPawn.Mesh != none) + { + ClosestPawn.Mesh.StopFaceFXAnim(); + } + } + //return; +} + +exec function DebugAI(coerce optional name Category) +{ + //return; +} + +exec function EditAIByTrace() +{ + local Vector CamLoc; + local Rotator CamRot; + local Vector HitLocation, HitNormal; + local Pawn HitPawn; + local Controller C; + + Outer.GetPlayerViewPoint(CamLoc, CamRot); + HitPawn = Pawn(Outer.Trace(HitLocation, HitNormal, CamLoc + (Vector(CamRot) * float(10000)), CamLoc, true, vect(10.0000000, 10.0000000, 10.0000000))); + // End:0x1BA + if(HitPawn != none) + { + C = HitPawn.Controller; + // End:0x14F + if((C == none) && HitPawn.DrivenVehicle != none) + { + C = HitPawn.DrivenVehicle.Controller; + } + // End:0x1BA + if(C != none) + { + Outer.ConsoleCommand("EDITACTOR NAME=" $ string(C.Name), true); + } + } + //return; +} + +exec function DebugPause() +{ + Outer.WorldInfo.Game.DebugPause(); + //return; +} + +exec function ListDynamicActors() +{ + //return; +} + +exec function FreezeFrame(float Delay) +{ + Outer.WorldInfo.Game.SetPause(Outer, Outer.CanUnpause); + Outer.WorldInfo.PauseDelay = Outer.WorldInfo.TimeSeconds + Delay; + //return; +} + +exec function WriteToLog(string Param) +{ + //return; +} + +exec function KillViewedActor() +{ + // End:0x12E + if(Outer.ViewTarget != none) + { + // End:0xE0 + if((Pawn(Outer.ViewTarget) != none) && Pawn(Outer.ViewTarget).Controller != none) + { + Pawn(Outer.ViewTarget).Controller.Destroy(); + } + Outer.ViewTarget.Destroy(); + Outer.SetViewTarget(none); + } + //return; +} + +exec function Teleport() +{ + local Actor HitActor; + local Vector HitNormal, HitLocation, ViewLocation; + local Rotator ViewRotation; + + Outer.GetPlayerViewPoint(ViewLocation, ViewRotation); + HitActor = Outer.Trace(HitLocation, HitNormal, ViewLocation + (float(1000000) * Vector(ViewRotation)), ViewLocation, true); + // End:0xBB + if(HitActor != none) + { + HitLocation += (HitNormal * 4.0000000); + } + Outer.ViewTarget.SetLocation(HitLocation); + //return; +} + +exec function ChangeSize(float F) +{ + Outer.Pawn.CylinderComponent.SetCylinderSize(Outer.Pawn.default.CylinderComponent.CollisionRadius * F, Outer.Pawn.default.CylinderComponent.CollisionHeight * F); + Outer.Pawn.SetDrawScale(F); + Outer.Pawn.SetLocation(Outer.Pawn.Location); + //return; +} + +exec function EndPath() +{ + //return; +} + +exec function Amphibious() +{ + Outer.Pawn.UnderWaterTime = 999999.0000000; + //return; +} + +exec function Fly() +{ + // End:0xD9 + if((Outer.Pawn != none) && Outer.Pawn.CheatFly()) + { + Outer.ClientMessage("You feel much lighter"); + Outer.bCheatFlying = true; + Outer.GotoState('PlayerFlying'); + } + //return; +} + +exec function Walk() +{ + Outer.bCheatFlying = false; + // End:0x9E + if((Outer.Pawn != none) && Outer.Pawn.CheatWalk()) + { + Outer.Restart(false); + } + //return; +} + +exec function Ghost() +{ + // End:0xA4 + if((Outer.Pawn != none) && Outer.Pawn.CheatGhost()) + { + Outer.bCheatFlying = true; + Outer.GotoState('PlayerFlying'); + } + else + { + Outer.bCollideWorld = false; + } + Outer.ClientMessage("You feel ethereal"); + //return; +} + +exec function AllAmmo() +{ + //return; +} + +exec function God() +{ + // End:0x74 + if(Outer.bGodMode) + { + Outer.bGodMode = false; + Outer.ClientMessage("God mode off"); + return; + } + Outer.bGodMode = true; + Outer.ClientMessage("God Mode on"); + //return; +} + +exec function Slomo(float T) +{ + Outer.WorldInfo.Game.SetGameSpeed(T); + //return; +} + +exec function SetJumpZ(float F) +{ + Outer.Pawn.JumpZ = F; + //return; +} + +exec function SetGravity(float F) +{ + Outer.WorldInfo.WorldGravityZ = F; + //return; +} + +exec function SetSpeed(float F) +{ + Outer.Pawn.GroundSpeed = Outer.Pawn.default.GroundSpeed * F; + Outer.Pawn.WaterSpeed = Outer.Pawn.default.WaterSpeed * F; + //return; +} + +exec function KillAll(Class aClass) +{ + local Actor A; + + // End:0x36 + if(ClassIsChildOf(aClass, Class'Engine.Pawn')) + { + KillAllPawns(Class(aClass)); + return; + } + // End:0xAA + foreach Outer.DynamicActors(Class'Engine.Actor', A) + { + // End:0xA9 + if(ClassIsChildOf(A.Class, aClass)) + { + A.Destroy(); + } + } + //return; +} + +function KillAllPawns(Class aClass) +{ + local Pawn P; + + // End:0xEB + foreach Outer.DynamicActors(Class'Engine.Pawn', P) + { + // End:0xEA + if(ClassIsChildOf(P.Class, aClass) && !P.IsPlayerPawn()) + { + // End:0xD2 + if(P.Controller != none) + { + P.Controller.Destroy(); + } + P.Destroy(); + } + } + //return; +} + +exec function KillPawns() +{ + KillAllPawns(Class'Engine.Pawn'); + //return; +} + +exec function Avatar(name ClassName) +{ + local Pawn P, TargetPawn, FirstPawn, OldPawn; + local bool bPickNextPawn; + + // End:0xD2 + foreach Outer.DynamicActors(Class'Engine.Pawn', P) + { + // End:0x69 + if(P == Outer.Pawn) + { + bPickNextPawn = true; + // End:0xD1 + continue; + } + // End:0xD1 + if(P.IsA(ClassName)) + { + // End:0xAE + if(FirstPawn == none) + { + FirstPawn = P; + } + // End:0xD1 + if(bPickNextPawn) + { + TargetPawn = P; + // End:0xD2 + break; + } + } + } + // End:0xF5 + if(TargetPawn == none) + { + TargetPawn = FirstPawn; + } + // End:0x1FF + if(TargetPawn != none) + { + TargetPawn.DetachFromController(true); + // End:0x1A5 + if(Outer.Pawn != none) + { + OldPawn = Outer.Pawn; + Outer.Pawn.DetachFromController(); + } + Outer.Possess(TargetPawn, false); + // End:0x1FC + if(OldPawn != none) + { + OldPawn.SpawnDefaultController(); + } + } + //return; +} + +exec function Summon(string ClassName) +{ + local Class NewClass; + local Vector SpawnLoc; + + NewClass = Class(DynamicLoadObject(ClassName, Class'Core.Class')); + // End:0x13E + if(NewClass != none) + { + // End:0xA3 + if(Outer.Pawn != none) + { + SpawnLoc = Outer.Pawn.Location; + } + else + { + SpawnLoc = Outer.Location; + } + Outer.Spawn(NewClass,,, (SpawnLoc + (float(72) * Vector(Outer.Rotation))) + (vect(0.0000000, 0.0000000, 1.0000000) * float(15))); + } + //return; +} + +exec function Weapon GiveWeapon(string WeaponClassStr) +{ + local Weapon Weap; + local Class WeaponClass; + + WeaponClass = Class(DynamicLoadObject(WeaponClassStr, Class'Core.Class')); + Weap = Weapon(Outer.Pawn.FindInventoryType(WeaponClass)); + // End:0x9A + if(Weap != none) + { + return Weap; + } + return Weapon(Outer.Pawn.CreateInventory(WeaponClass)); + //return ReturnValue; +} + +exec function PlayersOnly() +{ + // End:0xDF + if(Outer.WorldInfo.bPlayersOnly || Outer.WorldInfo.bPlayersOnlyPending) + { + Outer.WorldInfo.bPlayersOnly = false; + Outer.WorldInfo.bPlayersOnlyPending = false; + } + else + { + Outer.WorldInfo.bPlayersOnlyPending = !Outer.WorldInfo.bPlayersOnlyPending; + } + //return; +} + +exec function SuspendAI() +{ + Outer.WorldInfo.bSuspendAI = !Outer.WorldInfo.bSuspendAI; + //return; +} + +exec function DestroyFractures(optional float Radius) +{ + local FracturedStaticMeshActor FracActor; + + // End:0x23 + if(Radius == 0.0000000) + { + Radius = 256.0000000; + } + // End:0x11A + foreach Outer.CollidingActors(Class'Engine.FracturedStaticMeshActor', FracActor, Radius, Outer.Pawn.Location, true) + { + // End:0x119 + if(int(FracActor.Physics) == int(0)) + { + FracActor.BreakOffPartsInRadius(Outer.Pawn.Location, Radius, 500.0000000, true); + } + } + //return; +} + +exec function FractureAllMeshes() +{ + local FracturedStaticMeshActor FracActor; + + // End:0x4E + foreach Outer.AllActors(Class'Engine.FracturedStaticMeshActor', FracActor) + { + FracActor.HideOneFragment(); + } + //return; +} + +exec function FractureAllMeshesToMaximizeMemoryUsage() +{ + local FracturedStaticMeshActor FracActor; + + // End:0x4E + foreach Outer.AllActors(Class'Engine.FracturedStaticMeshActor', FracActor) + { + FracActor.HideFragmentsToMaximizeMemoryUsage(); + } + //return; +} + +exec function RememberSpot() +{ + // End:0x7A + if(Outer.Pawn != none) + { + Outer.SetDestinationPosition(Outer.Pawn.Location); + } + else + { + Outer.SetDestinationPosition(Outer.Location); + } + //return; +} + +exec function ViewSelf(optional bool bQuiet) +{ + Outer.ResetCameraMode(); + // End:0x85 + if(Outer.Pawn != none) + { + Outer.SetViewTarget(Outer.Pawn); + } + else + { + Outer.SetViewTarget(Outer); + } + // End:0xEF + if(!bQuiet) + { + Outer.ClientMessage(OwnCamera, 'Event'); + } + Outer.FixFOV(); + //return; +} + +exec function ViewPlayer(string S) +{ + local Controller P; + + // End:0xB2 + foreach Outer.WorldInfo.AllControllers(Class'Engine.Controller', P) + { + // End:0xB1 + if(P.bIsPlayer && P.PlayerReplicationInfo.PlayerName ~= S) + { + // End:0xB2 + break; + } + } + // End:0x17C + if(P.Pawn != none) + { + Outer.ClientMessage(ViewingFrom @ P.PlayerReplicationInfo.PlayerName, 'Event'); + Outer.SetViewTarget(P.Pawn); + } + //return; +} + +exec function ViewActor(name actorName) +{ + local Actor A; + + // End:0xAF + foreach Outer.AllActors(Class'Engine.Actor', A) + { + // End:0xAE + if(A.Name == actorName) + { + Outer.SetViewTarget(A); + Outer.SetCameraMode('ThirdPerson'); + return; + } + } + //return; +} + +exec function ViewBot() +{ + local Actor first; + local bool bFound; + local AIController C; + + // End:0x122 + foreach Outer.WorldInfo.AllControllers(Class'Engine.AIController', C) + { + // End:0x121 + if((C.Pawn != none) && C.PlayerReplicationInfo != none) + { + // End:0xD4 + if(bFound || first == none) + { + first = C; + // End:0xD4 + if(bFound) + { + // End:0x122 + break; + } + } + // End:0x121 + if(C.PlayerReplicationInfo == Outer.RealViewTarget) + { + bFound = true; + } + } + } + // End:0x1A5 + if(first != none) + { + Outer.SetViewTarget(first); + Outer.SetCameraMode('ThirdPerson'); + Outer.FixFOV(); + } + else + { + ViewSelf(true); + } + //return; +} + +exec function ViewClass(Class aClass) +{ + local Actor Other, first; + local bool bFound; + + first = none; + // End:0xB3 + foreach Outer.AllActors(aClass, Other) + { + // End:0x7A + if(bFound || first == none) + { + first = Other; + // End:0x7A + if(bFound) + { + // End:0xB3 + break; + } + } + // End:0xB2 + if(Other == Outer.ViewTarget) + { + bFound = true; + } + } + // End:0x1BB + if(first != none) + { + // End:0x131 + if(Pawn(first) != none) + { + Outer.ClientMessage(ViewingFrom @ first.GetHumanReadableName(), 'Event'); + } + else + { + Outer.ClientMessage(ViewingFrom @ string(first), 'Event'); + } + Outer.SetViewTarget(first); + Outer.FixFOV(); + } + else + { + ViewSelf(false); + } + //return; +} + +exec function Loaded() +{ + // End:0x40 + if(int(Outer.WorldInfo.NetMode) != int(NM_Standalone)) + { + return; + } + AllWeapons(); + AllAmmo(); + //return; +} + +exec function AllWeapons() +{ + //return; +} + +function SetLevelStreamingStatus(name PackageName, bool bShouldBeLoaded, bool bShouldBeVisible) +{ + local PlayerController PC; + local int I; + + // End:0xA2 + if(PackageName != 'All') + { + // End:0x9E + foreach Outer.WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + PC.ClientUpdateLevelStreamingStatus(PackageName, bShouldBeLoaded, bShouldBeVisible, false); + } + } + else + { + // End:0x1CD + foreach Outer.WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + I = 0; + J0xF6: + + // End:0x1CC [Loop If] + if(I < Outer.WorldInfo.StreamingLevels.Length) + { + PC.ClientUpdateLevelStreamingStatus(Outer.WorldInfo.StreamingLevels[I].PackageName, bShouldBeLoaded, bShouldBeVisible, false); + I++; + // [Loop Continue] + goto J0xF6; + } + } + } + //return; +} + +exec function StreamLevelIn(name PackageName) +{ + SetLevelStreamingStatus(PackageName, true, true); + //return; +} + +exec function OnlyLoadLevel(name PackageName) +{ + SetLevelStreamingStatus(PackageName, true, false); + //return; +} + +exec function StreamLevelOut(name PackageName) +{ + SetLevelStreamingStatus(PackageName, false, false); + //return; +} + +exec function TestLevel() +{ + local Actor A, Found; + local bool bFoundErrors; + + // End:0x99 + foreach Outer.AllActors(Class'Engine.Actor', A) + { + bFoundErrors = bFoundErrors || A.CheckForErrors(); + // End:0x98 + if(bFoundErrors && Found == none) + { + Found = A; + } + } + // End:0xAC + if(bFoundErrors) + { + // DebugMode: 0 + assert(false); + } + //return; +} + +exec function SetOnlineDebugLevel(int DebugLevel) +{ + // End:0x61 + if(Outer.OnlineSub != none) + { + Outer.OnlineSub.SetDebugSpewLevel(DebugLevel); + } + //return; +} + +exec function TestNavMeshPath(optional bool bDrawPath = true) +{ + local Actor HitActor; + local Vector HitLoc, HitNorm, Start, End; + local Rotator Rot; + + // End:0x5E + if(Outer.NavigationHandle == none) + { + Outer.NavigationHandle = new (Outer) Class'Engine.NavigationHandle'; + } + Outer.GetPlayerViewPoint(Start, Rot); + End = Start + (Vector(Rot) * float(10000)); + HitActor = Outer.Trace(HitLoc, HitNorm, End, Start, false); + // End:0x3FF + if(HitActor != none) + { + Class'Engine.NavMeshPath_Toward'.static.TowardPoint(Outer.NavigationHandle, HitLoc); + Class'Engine.NavMeshGoal_At'.static.AtLocation(Outer.NavigationHandle, HitLoc); + Outer.NavigationHandle.bDebugConstraintsAndGoalEvals = true; + Outer.NavigationHandle.bUltraVerbosePathDebugging = true; + // End:0x2FF + if(Outer.NavigationHandle.FindPath()) + { + Outer.DrawDebugLine(HitLoc, Start, 0, 255, 0, true); + Outer.DrawDebugCoordinateSystem(HitLoc, rot(0, 0, 0), 25.0000000, true); + // End:0x2FC + if(bDrawPath) + { + Outer.NavigationHandle.DrawPathCache(,, true); + } + } + else + { + Outer.DrawDebugLine(HitLoc, Start, 255, 0, 0, true); + Outer.DrawDebugCoordinateSystem(HitLoc, rot(0, 0, 0), 25.0000000, true); + Outer.DrawDebugBox(Outer.Pawn.Location, Outer.Pawn.GetCollisionExtent(), 255, 0, 0, true); + } + } + //return; +} + +exec function TestPylonConnectivity() +{ + local Pylon Py; + + // End:0x4E + foreach Outer.AllActors(Class'Engine.Pylon', Py) + { + Py.VerifyTopLevelConnections(); + } + //return; +} + +exec function VerbosePathDebug() +{ + local Vector HitLoc, HitNorm, Start, End; + local Rotator Rot; + local Pawn P; + + Outer.GetPlayerViewPoint(Start, Rot); + End = Start + (Vector(Rot) * float(10000)); + // End:0x1E2 + foreach Outer.TraceActors(Class'Engine.Pawn', P, HitLoc, HitNorm, End, Start, vect(1.0000000, 1.0000000, 1.0000000)) + { + Outer.Pawn.MessagePlayer("Verbosepathdebug trace hit" @ string(P)); + // End:0x1E1 + if((P != none) && P.Controller != none) + { + P.Controller.NavigationHandle.bUltraVerbosePathDebugging = !P.Controller.NavigationHandle.bUltraVerbosePathDebugging; + } + } + //return; +} + +function InitCheatManager() +{ + //return; +} + +// Export UCheatManager::execLogPlaySoundCalls(FFrame&, void* const) +native exec function LogPlaySoundCalls(bool bShouldLog); + +// Export UCheatManager::execLogParticleActivateSystemCalls(FFrame&, void* const) +native exec function LogParticleActivateSystemCalls(bool bShouldLog); + +// Export UCheatManager::execVerifyNavMeshObjects(FFrame&, void* const) +native exec function VerifyNavMeshObjects(); + +// Export UCheatManager::execDrawUnsupportingEdges(FFrame&, void* const) +native exec function DrawUnsupportingEdges(coerce string PawnClassName); + +exec function NavMeshVerification(optional float interval = 0.5000000) +{ + // End:0x4E + if(interval < float(0)) + { + Outer.ClearTimer('VerifyNavMeshObjects', Outer); + } + else + { + Outer.SetTimer(interval, true, 'VerifyNavMeshObjects', Outer); + } + //return; +} + +// Export UCheatManager::execPrintAllPathObjectEdges(FFrame&, void* const) +native exec function PrintAllPathObjectEdges(); + +// Export UCheatManager::execPrintNavMeshObstacles(FFrame&, void* const) +native exec function PrintNavMeshObstacles(); + +// Export UCheatManager::execVerifyNavMeshCoverRefs(FFrame&, void* const) +native exec function VerifyNavMeshCoverRefs(); + +// Export UCheatManager::execSuppressAILog(FFrame&, void* const) +native exec function SuppressAILog(); + +// Export UCheatManager::execUnsuppressAILog(FFrame&, void* const) +native exec function UnsuppressAILog(); + +exec function ToggleAILogging() +{ + local Engine Eng; + + Eng = Class'Engine.Engine'.static.GetEngine(); + // End:0x123 + if(Outer.Pawn != none) + { + // End:0xCA + if(Eng.bDisableAILogging) + { + Outer.Pawn.MessagePlayer("OK! AI logging is now ON"); + UnsuppressAILog(); + } + else + { + Outer.Pawn.MessagePlayer("OK! AI logging is now OFF"); + SuppressAILog(); + } + } + Eng.bDisableAILogging = !Eng.bDisableAILogging; + //return; +} + +exec function DebugIniLocPatcher() +{ + // End:0xA8 + if((Outer.OnlineSub != none) && Outer.OnlineSub.Patcher != none) + { + Outer.OnlineSub.Patcher.DownloadFiles(); + } + //return; +} + +exec function DebugDownloadTitleFile(string Filename, optional bool bFromCache) +{ + // End:0x22C + if(Outer.OnlineSub != none) + { + // End:0x130 + if(bFromCache) + { + // End:0x12D + if(NotEqual_InterfaceInterface(Outer.OnlineSub.TitleFileCacheInterface, OnlineTitleFileCacheInterface(none))) + { + Outer.OnlineSub.TitleFileCacheInterface.AddLoadTitleFileCompleteDelegate(OnLoadComplete); + Outer.OnlineSub.TitleFileCacheInterface.LoadTitleFile(Filename); + } + } + else + { + // End:0x22C + if(NotEqual_InterfaceInterface(Outer.OnlineSub.TitleFileInterface, OnlineTitleFileInterface(none))) + { + Outer.OnlineSub.TitleFileInterface.AddReadTitleFileCompleteDelegate(OnDownloadComplete); + Outer.OnlineSub.TitleFileInterface.ReadTitleFile(Filename); + } + } + } + //return; +} + +function OnDownloadComplete(bool bWasSuccessful, string Filename) +{ + Outer.OnlineSub.TitleFileInterface.ClearReadTitleFileCompleteDelegate(OnDownloadComplete); + // End:0x7B + if(bWasSuccessful) + { + DebugSaveTitleFile(Filename); + } + //return; +} + +function OnLoadComplete(bool bWasSuccessful, string Filename) +{ + Outer.OnlineSub.TitleFileCacheInterface.ClearLoadTitleFileCompleteDelegate(OnLoadComplete); + DebugDownloadTitleFile(Filename, false); + //return; +} + +exec function DebugSaveTitleFile(string Filename) +{ + local array FileContents; + + // End:0x1E5 + if(Outer.OnlineSub != none) + { + // End:0xD3 + if(NotEqual_InterfaceInterface(Outer.OnlineSub.TitleFileInterface, OnlineTitleFileInterface(none))) + { + // End:0xD0 + if(Outer.OnlineSub.TitleFileInterface.GetTitleFileContents(Filename, FileContents)) + { + } + } + // End:0x1E5 + if(NotEqual_InterfaceInterface(Outer.OnlineSub.TitleFileCacheInterface, OnlineTitleFileCacheInterface(none))) + { + Outer.OnlineSub.TitleFileCacheInterface.AddSaveTitleFileCompleteDelegate(OnSaveComplete); + Outer.OnlineSub.TitleFileCacheInterface.SaveTitleFile(Filename, "TestName.ini", FileContents); + } + } + //return; +} + +function OnSaveComplete(bool bWasSuccessful, string Filename) +{ + Outer.OnlineSub.TitleFileCacheInterface.ClearSaveTitleFileCompleteDelegate(OnSaveComplete); + //return; +} + +exec function DebugDeleteTitleFiles() +{ + // End:0xC6 + if(Outer.OnlineSub != none) + { + // End:0xC6 + if(NotEqual_InterfaceInterface(Outer.OnlineSub.TitleFileCacheInterface, OnlineTitleFileCacheInterface(none))) + { + // End:0xC3 + if(Outer.OnlineSub.TitleFileCacheInterface.DeleteTitleFiles(0.0000000)) + { + } + } + } + //return; +} + +exec function DebugEmsDownload() +{ + // End:0xA8 + if((Outer.OnlineSub != none) && Outer.OnlineSub.Patcher != none) + { + Outer.OnlineSub.Patcher.DownloadFiles(); + } + //return; +} + +// Export UCheatManager::execDumpCoverStats(FFrame&, void* const) +native exec function DumpCoverStats(); + +exec function DrawLocation(Vector Loc) +{ + Outer.DrawDebugCoordinateSystem(Loc, rot(0, 0, 0), 50.0000000, true); + //return; +} + +exec function DrawLocationXYZ(float X, float Y, float Z) +{ + local Vector DrawSpot; + + DrawSpot.X = X; + DrawSpot.Y = Y; + DrawSpot.Z = Z; + Outer.DrawDebugCoordinateSystem(DrawSpot, rot(0, 0, 0), 150.0000000, true); + //return; +} + +exec function DebugNotification(string MessageBody, int SecondsFromNow) +{ + local AppNotificationsBase AppNotification; + local NotificationInfo NotificationInfo; + local NotificationMessageInfo MessageInfo; + + AppNotification = Class'Engine.PlatformInterfaceBase'.static.GetAppNotificationsInterface(); + // End:0x1D3 + if(AppNotification != none) + { + NotificationInfo.BadgeNumber = 1; + NotificationInfo.MessageBody = MessageBody; + MessageInfo.Key = "test key 1"; + MessageInfo.Value = "test val 1"; + NotificationInfo.MessageInfo.AddItem(MessageInfo); + MessageInfo.Key = "test key 2"; + MessageInfo.Value = "test val 2"; + NotificationInfo.MessageInfo.AddItem(MessageInfo); + AppNotification.__OnReceivedLocalNotification__Delegate = OnReceivedLocalNotificationDebug; + AppNotification.ScheduleLocalNotification(NotificationInfo, SecondsFromNow); + } + //return; +} + +private final function OnReceivedLocalNotificationDebug(const out NotificationInfo Notification, bool bWasAppActive) +{ + Class'Engine.PlatformInterfaceBase'.static.GetAppNotificationsInterface().DebugLogNotification(Notification); + //return; +} + +exec function DebugQueryUserFiles(string UserId) +{ + // End:0x11E + if((Outer.OnlineSub != none) && NotEqual_InterfaceInterface(Outer.OnlineSub.UserCloudInterface, UserCloudFileInterface(none))) + { + Outer.OnlineSub.UserCloudInterface.AddEnumerateUserFileCompleteDelegate(OnEnumerateUserFilesComplete); + Outer.OnlineSub.UserCloudInterface.EnumerateUserFiles(UserId); + } + //return; +} + +private final function OnEnumerateUserFilesComplete(bool bWasSuccessful, string UserId) +{ + Outer.OnlineSub.UserCloudInterface.ClearEnumerateUserFileCompleteDelegate(OnEnumerateUserFilesComplete); + Outer.ConsoleCommand("obj dump" @ string(Outer.OnlineSub.UserCloudInterface.Name)); + //return; +} + +exec function DebugWriteUserFile(string UserId, string Filename) +{ + local int Idx; + local array FileContents; + + // End:0x17B + if((Outer.OnlineSub != none) && NotEqual_InterfaceInterface(Outer.OnlineSub.UserCloudInterface, UserCloudFileInterface(none))) + { + Idx = 0; + J0x7B: + + // End:0xBB [Loop If] + if(Idx < 1000) + { + FileContents[Idx] = byte(Idx); + Idx++; + // [Loop Continue] + goto J0x7B; + } + Outer.OnlineSub.UserCloudInterface.AddWriteUserFileCompleteDelegate(OnWriteUserFileComplete); + Outer.OnlineSub.UserCloudInterface.WriteUserFile(UserId, Filename, FileContents); + } + //return; +} + +private final function OnWriteUserFileComplete(bool bWasSuccessful, string UserId, string Filename) +{ + Outer.OnlineSub.UserCloudInterface.ClearWriteUserFileCompleteDelegate(OnWriteUserFileComplete); + Outer.ConsoleCommand("obj dump" @ string(Outer.OnlineSub.UserCloudInterface.Name)); + //return; +} + +exec function DebugReadUserFile(string UserId, string Filename) +{ + // End:0x127 + if((Outer.OnlineSub != none) && NotEqual_InterfaceInterface(Outer.OnlineSub.UserCloudInterface, UserCloudFileInterface(none))) + { + Outer.OnlineSub.UserCloudInterface.AddReadUserFileCompleteDelegate(OnReadUserFileComplete); + Outer.OnlineSub.UserCloudInterface.ReadUserFile(UserId, Filename); + } + //return; +} + +private final function OnReadUserFileComplete(bool bWasSuccessful, string UserId, string Filename) +{ + local array FileContents; + + Outer.OnlineSub.UserCloudInterface.ClearReadUserFileCompleteDelegate(OnReadUserFileComplete); + Outer.OnlineSub.UserCloudInterface.GetFileContents(UserId, Filename, FileContents); + Outer.ConsoleCommand("obj dump" @ string(Outer.OnlineSub.UserCloudInterface.Name)); + //return; +} + +exec function DebugDeleteUserFile(string UserId, string Filename) +{ + // End:0x129 + if((Outer.OnlineSub != none) && NotEqual_InterfaceInterface(Outer.OnlineSub.UserCloudInterface, UserCloudFileInterface(none))) + { + Outer.OnlineSub.UserCloudInterface.AddDeleteUserFileCompleteDelegate(OnDeleteUserFileComplete); + Outer.OnlineSub.UserCloudInterface.DeleteUserFile(UserId, Filename, true, true); + } + //return; +} + +private final function OnDeleteUserFileComplete(bool bWasSuccessful, string UserId, string Filename) +{ + Outer.OnlineSub.UserCloudInterface.ClearDeleteUserFileCompleteDelegate(OnDeleteUserFileComplete); + Outer.ConsoleCommand("obj dump" @ string(Outer.OnlineSub.UserCloudInterface.Name)); + //return; +} + +exec function TestHttp(string Verb, string Payload, string URL, optional bool bSendParallelRequest) +{ + local HttpRequestInterface R; + + R = Class'Engine.HttpFactory'.static.CreateRequest(); + R.__OnProcessRequestComplete__Delegate = OnRequestComplete; + R.SetURL(URL); + // End:0xBE + if(Len(Verb) > 0) + { + R.SetVerb(Verb); + } + // End:0xFA + if(Len(Payload) > 0) + { + R.SetContentAsString(Payload); + } + // End:0x121 + if(!R.ProcessRequest()) + { + } + // End:0x200 + if(bSendParallelRequest) + { + // End:0x200 + if(!Class'Engine.HttpFactory'.static.CreateRequest().SetURL("http://www.epicgames.com").SetVerb("GET").SetHeader("Test", "Value").SetProcessRequestCompleteDelegate(OnRequestComplete).ProcessRequest()) + { + } + } + //return; +} + +function OnRequestComplete(HttpRequestInterface OriginalRequest, HttpResponseInterface Response, bool bDidSucceed) +{ + local array Headers; + local string Header, Payload; + local int PayloadIndex; + + // End:0xD3 + if(Response != none) + { + Headers = Response.GetHeaders(); + // End:0x50 + foreach Headers(Header) + { + } + Payload = Response.GetContentAsString(); + // End:0xD3 + if(Len(Payload) > 1024) + { + PayloadIndex = 0; + J0x9A: + + // End:0xD0 [Loop If] + if(PayloadIndex < Len(Payload)) + { + PayloadIndex = PayloadIndex + 1024; + // [Loop Continue] + goto J0x9A; + } + } + } + //return; +} + +exec function SendAnalyticsEvent(string EventName, optional string AttributeName, optional string AttributeValue) +{ + local AnalyticEventsBase Analytics; + + Analytics = Class'Engine.PlatformInterfaceBase'.static.GetAnalyticEventsInterface(); + // End:0x7A + if(Len(AttributeName) > 0) + { + Analytics.LogStringEventParam(EventName, AttributeName, AttributeValue, false); + } + else + { + Analytics.LogStringEvent(EventName, false); + } + //return; +} + +exec function SendAnalyticsUserAttributeEvent(string AttributeName, string AttributeValue) +{ + Class'Engine.PlatformInterfaceBase'.static.GetAnalyticEventsInterface().LogUserAttributeUpdate(AttributeName, AttributeValue); + //return; +} + +exec function SendAnalyticsItemPurchaseEvent(string ItemId, string Currency, int PerItemCost, int ItemQuantity) +{ + Class'Engine.PlatformInterfaceBase'.static.GetAnalyticEventsInterface().LogItemPurchaseEvent(ItemId, Currency, PerItemCost, ItemQuantity); + //return; +} + +exec function SendAnalyticsCurrencyPurchaseEvent(string GameCurrencyType, int GameCurrencyAmount, string RealCurrencyType, float RealMoneyCost, string PaymentProvider) +{ + Class'Engine.PlatformInterfaceBase'.static.GetAnalyticEventsInterface().LogCurrencyPurchaseEvent(GameCurrencyType, GameCurrencyAmount, RealCurrencyType, RealMoneyCost, PaymentProvider); + //return; +} + +exec function SendAnalyticsCurrencyGivenEvent(string GameCurrencyType, int GameCurrencyAmount) +{ + Class'Engine.PlatformInterfaceBase'.static.GetAnalyticEventsInterface().LogCurrencyGivenEvent(GameCurrencyType, GameCurrencyAmount); + //return; +} + +exec function SendAnalyticsCachedEvents() +{ + Class'Engine.PlatformInterfaceBase'.static.GetAnalyticEventsInterface().SendCachedEvents(); + //return; +} + +exec function SetAnalyticsUserId(string UserId) +{ + Class'Engine.PlatformInterfaceBase'.static.GetAnalyticEventsInterface().SetUserId(UserId); + //return; +} + +// Export UCheatManager::execGetAnalyticsUserId(FFrame&, void* const) +native exec function GetAnalyticsUserId(); + +exec function AnalyticsStartSession() +{ + Class'Engine.PlatformInterfaceBase'.static.GetAnalyticEventsInterface().StartSession(); + //return; +} + +exec function AnalyticsEndSession() +{ + Class'Engine.PlatformInterfaceBase'.static.GetAnalyticEventsInterface().EndSession(); + //return; +} + +defaultproperties +{ + ViewingFrom="Now viewing from" + OwnCamera="Now viewing from own camera" +} \ No newline at end of file diff --git a/exported/Engine/Classes/ClipPadEntry.uc b/exported/Engine/Classes/ClipPadEntry.uc new file mode 100755 index 00000000..377397ad --- /dev/null +++ b/exported/Engine/Classes/ClipPadEntry.uc @@ -0,0 +1,11 @@ +class ClipPadEntry extends Object + native + hidecategories(Object); + +var() string Title; +var() string Text; + +defaultproperties +{ + Title="Untitled" +} \ No newline at end of file diff --git a/exported/Engine/Classes/CloudSaveSystem.uc b/exported/Engine/Classes/CloudSaveSystem.uc new file mode 100755 index 00000000..aaac8a65 --- /dev/null +++ b/exported/Engine/Classes/CloudSaveSystem.uc @@ -0,0 +1,690 @@ +class CloudSaveSystem extends Object + native; + +const NUM_SAVE_SLOTS_KEY = "NumSaveSlots"; +const DATA_STORE_ID_KEY = "DataStoreID"; +const SAVE_DATA_BLOB_NAME_KEY = "DataBlobName"; +const SAVE_SYSTEM_VERSION_KEY = "CloudSaveSystemVersion"; +const COMMON_DATA_SAVE_SLOT_INDEX = -1; +const GET_SAVE_SLOT_ERROR = -2; +const GET_SAVE_SLOT_INVALID = -1; + +enum SaveDataVersionSupport +{ + SaveDataVersionSupportLessThenEqual,// 0 + SaveDataVersionSupportEqual, // 1 + SaveDataVersionSupportAny, // 2 + SaveDataVersionSupport_MAX // 3 +}; + +enum SaveSlotOperationEnum +{ + SSO_SET, // 0 + SSO_GET, // 1 + SSO_DELETE, // 2 + SSO_MAX // 3 +}; + +struct native GetSaveDataCallbackStruct +{ + var int SlotIndex; + var delegate Callback; + + structdefaultproperties + { + SlotIndex=0 + Callback=None + } +}; + +struct native SetSaveDataCallbackStruct +{ + var int SlotIndex; + var delegate Callback; + + structdefaultproperties + { + SlotIndex=0 + Callback=None + } +}; + +struct native SaveSlotOperation +{ + var int SlotIndex; + var CloudSaveSystem.SaveSlotOperationEnum SlotOperation; + + structdefaultproperties + { + SlotIndex=0 + SlotOperation=SaveSlotOperationEnum.SSO_SET + } +}; + +var private transient CloudSaveSystemKVSInterface KeyValueStore; +var private transient CloudSaveSystemDataBlobStoreInterface DataBlobStore; +var private transient array OnGetSaveDataCallbacks; +var private transient array OnSetSaveDataCallbacks; +var private transient delegate DeleteSaveDataCallback; +var private transient int ActiveSlotForDelete; +var private transient array ActiveSaveSlotOperations; +//var delegate __OnGetSaveDataCallback__Delegate; +//var delegate __SaveSystemCallback__Delegate; + +delegate OnGetSaveDataCallback(bool bWasSuccessful, int SaveSlot, out array DataBlob, string Error) +{ + //return; +} + +delegate SaveSystemCallback(bool bWasSuccessful, int SaveSlot, string Error) +{ + //return; +} + +final function bool GetNumberOfSaveSlots(out int NumSaveSlots) +{ + local PlatformInterfaceDelegateResult KVRes; + local bool RValue; + + RValue = false; + // End:0xF1 + if(NotEqual_InterfaceInterface(KeyValueStore, CloudSaveSystemKVSInterface(none)) && NotEqual_InterfaceInterface(DataBlobStore, CloudSaveSystemDataBlobStoreInterface(none))) + { + KeyValueStore.ReadKeyValue(-1, "NumSaveSlots", 1, KVRes); + // End:0xF1 + if(KVRes.bSuccessful) + { + RValue = true; + NumSaveSlots = KVRes.Data.IntValue; + } + } + return RValue; + //return ReturnValue; +} + +private final function int DoesSaveSlotKeyValueDataAlreadyExist(string DataStoreID, string DataBlobName) +{ + local int SaveSlotScan, NumSaveSlots; + local string CompareDataStoreID, CompareDataBlobName; + local int RValue; + + RValue = -1; + // End:0x11C + if((NotEqual_InterfaceInterface(KeyValueStore, CloudSaveSystemKVSInterface(none)) && NotEqual_InterfaceInterface(DataBlobStore, CloudSaveSystemDataBlobStoreInterface(none))) && GetNumberOfSaveSlots(NumSaveSlots)) + { + SaveSlotScan = 0; + J0x74: + + // End:0x119 [Loop If] + if(SaveSlotScan < NumSaveSlots) + { + // End:0xFC + if(GetDataStoreIDAndBlobNameForSaveSlot(SaveSlotScan, CompareDataStoreID, CompareDataBlobName)) + { + // End:0xF9 + if((DataStoreID == CompareDataStoreID) && DataBlobName == CompareDataBlobName) + { + RValue = SaveSlotScan; + // [Explicit Break] + goto J0x119; + } + } + else + { + RValue = -2; + } + ++SaveSlotScan; + // [Loop Continue] + goto J0x74; + } + J0x119: + + } + else + { + RValue = -2; + } + return RValue; + //return ReturnValue; +} + +private final function bool WriteNumSaveSlots(int NumSaveSlots) +{ + local PlatformInterfaceData KVSet; + + KVSet.IntValue = NumSaveSlots; + KVSet.Type = 1; + // End:0x86 + if(KeyValueStore.WriteKeyValue(-1, "NumSaveSlots", KVSet)) + { + return true; + } + return false; + //return ReturnValue; +} + +final function bool IsOperationActiveForSlot(int SlotIndex) +{ + local int Index; + + Index = ActiveSaveSlotOperations.Find('SlotIndex', SlotIndex); + // End:0x41 + if(Index == -1) + { + return false; + } + else + { + return true; + } + //return ReturnValue; +} + +final function bool IsDeleteOperationActive() +{ + // End:0x18 + if(ActiveSlotForDelete == -1) + { + return false; + } + else + { + return true; + } + //return ReturnValue; +} + +final function bool AreAnySlotOperationsActive() +{ + // End:0x15 + if(ActiveSaveSlotOperations.Length > 0) + { + return true; + } + else + { + return false; + } + //return ReturnValue; +} + +// Export UCloudSaveSystem::execSerializeObject(FFrame&, void* const) +native final function SerializeObject(Object ObjectToSerialize, out array Data, int DataVersion); + +// Export UCloudSaveSystem::execDeserializeObject(FFrame&, void* const) +native final function Object DeserializeObject(Class ObjectClass, out array Data, CloudSaveSystem.SaveDataVersionSupport VersionSupport, int DataVersion); + +final function Init(CloudSaveSystemKVSInterface InKeyValueStore, CloudSaveSystemDataBlobStoreInterface InDataBlobStore, int VersionNumber) +{ + local PlatformInterfaceDelegateResult SaveSystemVersionNumber; + local PlatformInterfaceData SaveSystemVersionNumberSet; + + KeyValueStore = InKeyValueStore; + DataBlobStore = InDataBlobStore; + GetKeyValue(-1, "CloudSaveSystemVersion", 1, SaveSystemVersionNumber); + // End:0x139 + if(!SaveSystemVersionNumber.bSuccessful || SaveSystemVersionNumber.Data.IntValue != VersionNumber) + { + SaveSystemVersionNumberSet.IntValue = VersionNumber; + SaveSystemVersionNumberSet.Type = 1; + SetKeyValue(-1, "CloudSaveSystemVersion", SaveSystemVersionNumberSet); + WriteNumSaveSlots(0); + } + //return; +} + +final function GetSaveData(int SaveSlot, delegate OnGetSaveDataCallback) +{ + local string DataStoreID; + local GetSaveDataCallbackStruct CallbackStruct; + local SaveSlotOperation SlotOperation; + local array EmptyBuffer; + local string BlobName; + local bool ErrorOccured; + local string Error; + + ErrorOccured = true; + // End:0x6D + if(EqualEqual_InterfaceInterface(KeyValueStore, CloudSaveSystemKVSInterface(none))) + { + Error = "GetSaveData::KeyValueStore instance cannot be None"; + } + else + { + // End:0xCE + if(EqualEqual_InterfaceInterface(DataBlobStore, CloudSaveSystemDataBlobStoreInterface(none))) + { + Error = "GetSaveData::DataBlobStore instance cannot be None"; + } + else + { + // End:0x146 + if(OnGetSaveDataCallbacks.Find('SlotIndex', SaveSlot) != -1) + { + Error = "GetSaveData::OnGetSaveDataCallback already present for save slot"; + } + else + { + // End:0x1BD + if(ActiveSaveSlotOperations.Find('SlotIndex', SaveSlot) != -1) + { + Error = "GetSaveData::Save System operation already active for save slot"; + } + else + { + // End:0x210 + if(IsDeleteOperationActive()) + { + Error = "GetSaveData::Delete Operation active cannot GetSaveData"; + } + else + { + // End:0x28D + if(!GetDataStoreIDAndBlobNameForSaveSlot(SaveSlot, DataStoreID, BlobName)) + { + Error = "GetSaveData::Failed to get store id and data blob name for save slot"; + } + else + { + CallbackStruct.SlotIndex = SaveSlot; + CallbackStruct.Callback = OnGetSaveDataCallback; + OnGetSaveDataCallbacks.AddItem(CallbackStruct); + SlotOperation.SlotIndex = SaveSlot; + SlotOperation.SlotOperation = 1; + ActiveSaveSlotOperations.AddItem(SlotOperation); + DataBlobStore.GetDataBlob(DataStoreID, BlobName, OnGetSaveDataComplete); + ErrorOccured = false; + } + } + } + } + } + } + // End:0x3E6 + if(ErrorOccured && OnGetSaveDataCallback != none) + { + OnGetSaveDataCallback(false, SaveSlot, EmptyBuffer, Error); + } + //return; +} + +private final function OnGetSaveDataComplete(bool bWasSuccessful, string StorageID, string BlobName, out array DataBlob, string Error) +{ + local int SaveSlotIndex, Index; + local delegate LocalCallback; + + SaveSlotIndex = DoesSaveSlotKeyValueDataAlreadyExist(StorageID, BlobName); + // End:0x2BD + if(SaveSlotIndex >= 0) + { + Index = ActiveSaveSlotOperations.Find('SlotIndex', SaveSlotIndex); + // End:0x163 + if(Index != -1) + { + // End:0x14B + if(int(ActiveSaveSlotOperations[Index].SlotOperation) != int(1)) + { + bWasSuccessful = false; + Error = "CloudSaveSystem in corrupt stat GetSaveData request finished but active slot operation should have been" @ string(ActiveSaveSlotOperations[Index].SlotOperation); + } + ActiveSaveSlotOperations.Remove(Index, 1); + } + else + { + bWasSuccessful = false; + Error = "CloudSaveSystem in corrupt state GetData request finished but was not correctly internally tracked."; + } + Index = OnGetSaveDataCallbacks.Find('SlotIndex', SaveSlotIndex); + // End:0x2BA + if(Index != -1) + { + LocalCallback = OnGetSaveDataCallbacks[Index].Callback; + OnGetSaveDataCallback(bWasSuccessful, SaveSlotIndex, DataBlob, "Unknown Error loading data blob from Cloud"); + OnGetSaveDataCallbacks.Remove(Index, 1); + } + } + //return; +} + +final function SetSaveData(int SaveSlot, delegate InSetSaveDataCallback, const out array SaveDataBlob) +{ + local SetSaveDataCallbackStruct CallbackStruct; + local SaveSlotOperation SlotOperation; + local string DataStoreID, BlobName; + local bool ErrorOccured; + local string Error; + + ErrorOccured = true; + // End:0x6D + if(EqualEqual_InterfaceInterface(KeyValueStore, CloudSaveSystemKVSInterface(none))) + { + Error = "SetSaveData::KeyValueStore instance cannot be None"; + } + else + { + // End:0xCE + if(EqualEqual_InterfaceInterface(DataBlobStore, CloudSaveSystemDataBlobStoreInterface(none))) + { + Error = "SetSaveData::DataBlobStore instance cannot be None"; + } + else + { + // End:0x146 + if(OnSetSaveDataCallbacks.Find('SlotIndex', SaveSlot) != -1) + { + Error = "SetSaveData::OnSetSaveDataCallback already present for save slot"; + } + else + { + // End:0x1BD + if(ActiveSaveSlotOperations.Find('SlotIndex', SaveSlot) != -1) + { + Error = "SetSaveData::Save System operation already active for save slot"; + } + else + { + // End:0x210 + if(IsDeleteOperationActive()) + { + Error = "SetSaveData::Delete Operation active cannot SetSaveData"; + } + else + { + // End:0x28D + if(!GetDataStoreIDAndBlobNameForSaveSlot(SaveSlot, DataStoreID, BlobName)) + { + Error = "SetSaveData::Failed to get store id and data blob name for save slot"; + } + else + { + CallbackStruct.SlotIndex = SaveSlot; + CallbackStruct.Callback = InSetSaveDataCallback; + OnSetSaveDataCallbacks.AddItem(CallbackStruct); + SlotOperation.SlotIndex = SaveSlot; + SlotOperation.SlotOperation = 0; + ActiveSaveSlotOperations.AddItem(SlotOperation); + ErrorOccured = false; + DataBlobStore.SetDataBlob(DataStoreID, BlobName, SaveDataBlob, OnSetSaveDataComplete); + } + } + } + } + } + } + // End:0x3E6 + if(ErrorOccured && InSetSaveDataCallback != none) + { + SaveSystemCallback(false, SaveSlot, Error); + } + //return; +} + +private final function OnSetSaveDataComplete(bool bWasSucessfull, string StorageID, string BlobName, string Error) +{ + local int SaveSlotIndex, Index; + local delegate LocalCallback; + + SaveSlotIndex = DoesSaveSlotKeyValueDataAlreadyExist(StorageID, BlobName); + // End:0x28F + if(SaveSlotIndex >= 0) + { + Index = ActiveSaveSlotOperations.Find('SlotIndex', SaveSlotIndex); + // End:0x160 + if(Index != -1) + { + // End:0x148 + if(int(ActiveSaveSlotOperations[Index].SlotOperation) != int(0)) + { + Error = "CloudSaveSystem in corrupt stat Set Data request finished but active slot operation should have been" @ string(ActiveSaveSlotOperations[Index].SlotOperation); + bWasSucessfull = false; + } + ActiveSaveSlotOperations.Remove(Index, 1); + } + else + { + bWasSucessfull = false; + Error = "CloudSaveSystem in corrupt state Set Data request finished but was not correctly internally tracked."; + } + Index = OnSetSaveDataCallbacks.Find('SlotIndex', SaveSlotIndex); + // End:0x28C + if(Index != -1) + { + LocalCallback = OnSetSaveDataCallbacks[Index].Callback; + SaveSystemCallback(bWasSucessfull, SaveSlotIndex, Error); + OnSetSaveDataCallbacks.Remove(Index, 1); + } + } + //return; +} + +final function bool DeleteSaveData(int SaveSlot, delegate InDeleteSaveDataCallback) +{ + local string DataStoreID, BlobName; + local SaveSlotOperation SlotOperation; + local bool RValue; + + RValue = false; + // End:0x185 + if((((NotEqual_InterfaceInterface(KeyValueStore, CloudSaveSystemKVSInterface(none)) && NotEqual_InterfaceInterface(DataBlobStore, CloudSaveSystemDataBlobStoreInterface(none))) && DeleteSaveDataCallback == none) && !AreAnySlotOperationsActive()) && !IsDeleteOperationActive()) + { + // End:0x185 + if(GetDataStoreIDAndBlobNameForSaveSlot(SaveSlot, DataStoreID, BlobName)) + { + RValue = DataBlobStore.DeleteDataBlob(DataStoreID, BlobName, OnDeleteSaveDataComplete); + // End:0x185 + if(RValue) + { + DeleteSaveDataCallback = InDeleteSaveDataCallback; + ActiveSlotForDelete = SaveSlot; + SlotOperation.SlotIndex = SaveSlot; + SlotOperation.SlotOperation = 2; + ActiveSaveSlotOperations.AddItem(SlotOperation); + } + } + } + return RValue; + //return ReturnValue; +} + +final function OnDeleteSaveDataComplete(bool bWasSucessfull, string StorageID, string BlobName, string Error) +{ + local delegate Callback; + local int Scan, Index, SlotDeleted, NumSaveSlots; + local string DataStoreID, DataBlobName; + + // End:0x2B2 + if(bWasSucessfull) + { + // End:0x9B + if(!GetNumberOfSaveSlots(NumSaveSlots)) + { + bWasSucessfull = false; + Error = "Could not retrieve number of save slots during slot deletion. Save system in corrupt state."; + } + else + { + Scan = ActiveSlotForDelete + 1; + J0xB1: + + // End:0x23C [Loop If] + if((Scan < NumSaveSlots) && bWasSucessfull) + { + // End:0x17D + if(!GetDataStoreIDAndBlobNameForSaveSlot(Scan, DataStoreID, DataBlobName)) + { + bWasSucessfull = false; + Error = "Error retrieving DataStoreID and DataBlobName during slot deletion. Save system in corrupt state."; + } + else + { + // End:0x22E + if(!InternalSetSaveSlotKeyValues(Scan - 1, DataStoreID, DataBlobName)) + { + bWasSucessfull = false; + Error = "Error migrating DataStoreID and DataBlobName to new slot during slot deletion. Save system in corrupt state."; + } + } + ++Scan; + // [Loop Continue] + goto J0xB1; + } + // End:0x2B2 + if(bWasSucessfull) + { + NumSaveSlots--; + // End:0x2B2 + if(!WriteNumSaveSlots(NumSaveSlots)) + { + bWasSucessfull = false; + Error = "Error writing number of save slot to Cloud KVS"; + } + } + } + } + SlotDeleted = ActiveSlotForDelete; + ActiveSlotForDelete = -1; + Index = ActiveSaveSlotOperations.Find('SlotIndex', SlotDeleted); + // End:0x359 + if(Index != -1) + { + // End:0x341 + if(int(ActiveSaveSlotOperations[Index].SlotOperation) != int(2)) + { + } + ActiveSaveSlotOperations.Remove(Index, 1); + } + // End:0x3C5 + if(DeleteSaveDataCallback != none) + { + Callback = DeleteSaveDataCallback; + DeleteSaveDataCallback = None; + SaveSystemCallback(bWasSucessfull, SlotDeleted, Error); + } + //return; +} + +final function bool SetSaveSlotKeyValues(string DataStoreID, string SaveDataBlobName, out int SaveSlot) +{ + local bool RValue; + local int NumSaveSlots; + local bool IncSlotCount; + + RValue = false; + IncSlotCount = false; + // End:0x153 + if((NotEqual_InterfaceInterface(KeyValueStore, CloudSaveSystemKVSInterface(none)) && NotEqual_InterfaceInterface(DataBlobStore, CloudSaveSystemDataBlobStoreInterface(none))) && GetNumberOfSaveSlots(NumSaveSlots)) + { + SaveSlot = DoesSaveSlotKeyValueDataAlreadyExist(DataStoreID, SaveDataBlobName); + // End:0xB0 + if(SaveSlot == -2) + { + return false; + } + else + { + // End:0xE2 + if(SaveSlot == -1) + { + SaveSlot = NumSaveSlots; + IncSlotCount = true; + } + } + // End:0x153 + if(InternalSetSaveSlotKeyValues(SaveSlot, DataStoreID, SaveDataBlobName)) + { + // End:0x147 + if(IncSlotCount) + { + NumSaveSlots++; + // End:0x144 + if(WriteNumSaveSlots(NumSaveSlots)) + { + RValue = true; + } + } + else + { + RValue = true; + } + } + } + return RValue; + //return ReturnValue; +} + +private final function bool InternalSetSaveSlotKeyValues(int SaveSlot, string DataStoreID, string SaveDataBlobName) +{ + local PlatformInterfaceData KVSet; + local bool RValue; + + RValue = false; + KVSet.StringValue = DataStoreID; + KVSet.Type = 3; + // End:0x127 + if(KeyValueStore.WriteKeyValue(SaveSlot, "DataStoreID", KVSet)) + { + KVSet.StringValue = SaveDataBlobName; + KVSet.Type = 3; + // End:0x127 + if(KeyValueStore.WriteKeyValue(SaveSlot, "DataBlobName", KVSet)) + { + RValue = true; + } + } + return RValue; + //return ReturnValue; +} + +final function bool SetKeyValue(int SaveSlot, string KeyName, const out PlatformInterfaceData Value) +{ + // End:0x22 + if(EqualEqual_InterfaceInterface(KeyValueStore, CloudSaveSystemKVSInterface(none))) + { + return false; + } + return KeyValueStore.WriteKeyValue(SaveSlot, KeyName, Value); + //return ReturnValue; +} + +private final function bool GetDataStoreIDAndBlobNameForSaveSlot(int SaveSlot, out string DataStoreID, out string DataBlobName) +{ + local PlatformInterfaceDelegateResult KVRes; + local bool RValue; + + RValue = false; + // End:0x18F + if(NotEqual_InterfaceInterface(KeyValueStore, CloudSaveSystemKVSInterface(none)) || NotEqual_InterfaceInterface(DataBlobStore, CloudSaveSystemDataBlobStoreInterface(none))) + { + KeyValueStore.ReadKeyValue(SaveSlot, "DataStoreID", 3, KVRes); + // End:0x18F + if(KVRes.bSuccessful) + { + DataStoreID = KVRes.Data.StringValue; + KeyValueStore.ReadKeyValue(SaveSlot, "DataBlobName", 3, KVRes); + // End:0x18F + if(KVRes.bSuccessful) + { + DataBlobName = KVRes.Data.StringValue; + RValue = true; + } + } + } + return RValue; + //return ReturnValue; +} + +final function bool GetKeyValue(int SaveSlot, string KeyName, PlatformInterfaceBase.EPlatformInterfaceDataType Type, out PlatformInterfaceDelegateResult Value) +{ + // End:0x22 + if(EqualEqual_InterfaceInterface(KeyValueStore, CloudSaveSystemKVSInterface(none))) + { + return false; + } + return KeyValueStore.ReadKeyValue(SaveSlot, KeyName, Type, Value); + //return ReturnValue; +} + +defaultproperties +{ + ActiveSlotForDelete=-1 +} \ No newline at end of file diff --git a/exported/Engine/Classes/CloudSaveSystemDataBlobStoreInterface.uc b/exported/Engine/Classes/CloudSaveSystemDataBlobStoreInterface.uc new file mode 100755 index 00000000..8eeaaf20 --- /dev/null +++ b/exported/Engine/Classes/CloudSaveSystemDataBlobStoreInterface.uc @@ -0,0 +1,32 @@ +interface CloudSaveSystemDataBlobStoreInterface extends Interface + abstract; + +delegate GetDataBlobCallbackDelegate(bool bWasSuccessful, string StorageID, string BlobName, const out array DataBlob, string Error) +{ + //return; +} + +function GetDataBlob(string StorageID, string BlobName, delegate OnGetDataBlobComplete) +{ + //return; +} + +delegate SetDataBlobCallbackDelegate(bool bWasSucessfull, string StorageID, string BlobName, string Error) +{ + //return; +} + +function SetDataBlob(string StorageID, string BlobName, const out array DataBlob, delegate InSetDataBlobCallback) +{ + //return; +} + +private final delegate DeleteDataBlobCallbackDelegate(bool bWasSucessfull, string StorageID, string BlobName, string Error) +{ + //return; +} + +function bool DeleteDataBlob(string StorageID, string BlobName, delegate InDeleteDataBlobCallback) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/CloudSaveSystemKVSInterface.uc b/exported/Engine/Classes/CloudSaveSystemKVSInterface.uc new file mode 100755 index 00000000..740ffdbb --- /dev/null +++ b/exported/Engine/Classes/CloudSaveSystemKVSInterface.uc @@ -0,0 +1,12 @@ +interface CloudSaveSystemKVSInterface extends Interface + abstract; + +function bool ReadKeyValue(int SaveSlotIndex, string KeyName, PlatformInterfaceBase.EPlatformInterfaceDataType Type, out PlatformInterfaceDelegateResult Value) +{ + //return ReturnValue; +} + +function bool WriteKeyValue(int SaveSlotIndex, string KeyName, const out PlatformInterfaceData Value) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/CloudStorageBase.uc b/exported/Engine/Classes/CloudStorageBase.uc new file mode 100755 index 00000000..0c1e7403 --- /dev/null +++ b/exported/Engine/Classes/CloudStorageBase.uc @@ -0,0 +1,87 @@ +class CloudStorageBase extends PlatformInterfaceBase + transient + native(PlatformInterface); + +enum ECloudStorageDelegate +{ + CSD_KeyValueReadComplete, // 0 + CSD_KeyValueWriteComplete, // 1 + CSD_ValueChanged, // 2 + CSD_DocumentQueryComplete, // 3 + CSD_DocumentReadComplete, // 4 + CSD_DocumentWriteComplete, // 5 + CSD_DocumentConflictDetected, // 6 + CSD_MAX // 7 +}; + +var array LocalCloudFiles; +var bool bSuppressDelegateCalls; + +// Export UCloudStorageBase::execInit(FFrame&, void* const) +native event Init(); + +// Export UCloudStorageBase::execIsUsingLocalStorage(FFrame&, void* const) +native function bool IsUsingLocalStorage(); + +// Export UCloudStorageBase::execReadKeyValue(FFrame&, void* const) +native event bool ReadKeyValue(string KeyName, PlatformInterfaceBase.EPlatformInterfaceDataType Type, out PlatformInterfaceDelegateResult Value); + +// Export UCloudStorageBase::execReadKeyValueFromLocalStore(FFrame&, void* const) +native event bool ReadKeyValueFromLocalStore(string KeyName, PlatformInterfaceBase.EPlatformInterfaceDataType Type, out PlatformInterfaceDelegateResult Value); + +// Export UCloudStorageBase::execWriteKeyValue(FFrame&, void* const) +native event bool WriteKeyValue(string KeyName, const out PlatformInterfaceData Value); + +// Export UCloudStorageBase::execQueryForCloudDocuments(FFrame&, void* const) +native event bool QueryForCloudDocuments(); + +// Export UCloudStorageBase::execGetNumCloudDocuments(FFrame&, void* const) +native event int GetNumCloudDocuments(optional bool bIsForConflict); + +// Export UCloudStorageBase::execGetCloudDocumentName(FFrame&, void* const) +native event string GetCloudDocumentName(int Index); + +// Export UCloudStorageBase::execCreateCloudDocument(FFrame&, void* const) +native event int CreateCloudDocument(string Filename); + +// Export UCloudStorageBase::execDeleteAllCloudDocuments(FFrame&, void* const) +native event DeleteAllCloudDocuments(); + +// Export UCloudStorageBase::execReadCloudDocument(FFrame&, void* const) +native event bool ReadCloudDocument(int Index, optional bool bIsForConflict); + +// Export UCloudStorageBase::execParseDocumentAsString(FFrame&, void* const) +native event string ParseDocumentAsString(int Index, optional bool bIsForConflict); + +// Export UCloudStorageBase::execParseDocumentAsBytes(FFrame&, void* const) +native event ParseDocumentAsBytes(int Index, out array ByteData, optional bool bIsForConflict); + +// Export UCloudStorageBase::execParseDocumentAsObject(FFrame&, void* const) +native event Object ParseDocumentAsObject(int Index, Class ObjectClass, int ExpectedVersion, optional bool bIsForConflict); + +// Export UCloudStorageBase::execWriteCloudDocument(FFrame&, void* const) +native event bool WriteCloudDocument(int Index); + +// Export UCloudStorageBase::execSaveDocumentWithString(FFrame&, void* const) +native event bool SaveDocumentWithString(int Index, string StringData); + +// Export UCloudStorageBase::execSaveDocumentWithBytes(FFrame&, void* const) +native event bool SaveDocumentWithBytes(int Index, array ByteData); + +// Export UCloudStorageBase::execSaveDocumentWithObject(FFrame&, void* const) +native event bool SaveDocumentWithObject(int Index, Object ObjectData, int SaveVersion); + +// Export UCloudStorageBase::execIsStillWritingFiles(FFrame&, void* const) +native event bool IsStillWritingFiles(); + +// Export UCloudStorageBase::execWaitForWritesToFinish(FFrame&, void* const) +native event bool WaitForWritesToFinish(optional float MaxTimeSeconds); + +// Export UCloudStorageBase::execResolveConflictWithNewestDocument(FFrame&, void* const) +native event bool ResolveConflictWithNewestDocument(); + +// Export UCloudStorageBase::execResolveConflictWithVersionIndex(FFrame&, void* const) +native event bool ResolveConflictWithVersionIndex(int Index); + +// Export UCloudStorageBase::execUpgradeLocalStorageToCloud(FFrame&, void* const) +native event bool UpgradeLocalStorageToCloud(CloudStorageUpgradeHelper UpgradeHelper, optional bool bForceSearchAgain); diff --git a/exported/Engine/Classes/CloudStorageBaseCloudSaveSystemKVS.uc b/exported/Engine/Classes/CloudStorageBaseCloudSaveSystemKVS.uc new file mode 100755 index 00000000..b5827e94 --- /dev/null +++ b/exported/Engine/Classes/CloudStorageBaseCloudSaveSystemKVS.uc @@ -0,0 +1,44 @@ +class CloudStorageBaseCloudSaveSystemKVS extends Object + implements(CloudSaveSystemKVSInterface); + +var private transient CloudStorageBase CloudStorage; + +final function Init(CloudStorageBase InCloudStorage) +{ + CloudStorage = InCloudStorage; + //return; +} + +function bool ReadKeyValue(int SaveSlotIndex, string KeyName, PlatformInterfaceBase.EPlatformInterfaceDataType Type, out PlatformInterfaceDelegateResult Value) +{ + local string SaveSlotKeyName; + + // End:0x11 + if(CloudStorage == none) + { + return false; + } + SaveSlotKeyName = GenerateKeyNameForSaveSlot(SaveSlotIndex, KeyName); + return CloudStorage.ReadKeyValue(SaveSlotKeyName, Type, Value); + //return ReturnValue; +} + +function bool WriteKeyValue(int SaveSlotIndex, string KeyName, const out PlatformInterfaceData Value) +{ + local string SaveSlotKeyName; + + // End:0x11 + if(CloudStorage == none) + { + return false; + } + SaveSlotKeyName = GenerateKeyNameForSaveSlot(SaveSlotIndex, KeyName); + return CloudStorage.WriteKeyValue(SaveSlotKeyName, Value); + //return ReturnValue; +} + +private final function string GenerateKeyNameForSaveSlot(int SaveSlotIndex, string KeyName) +{ + return string(SaveSlotIndex) $ KeyName; + //return ReturnValue; +} diff --git a/exported/Engine/Classes/CloudStorageUpgradeHelper.uc b/exported/Engine/Classes/CloudStorageUpgradeHelper.uc new file mode 100755 index 00000000..82d3dba5 --- /dev/null +++ b/exported/Engine/Classes/CloudStorageUpgradeHelper.uc @@ -0,0 +1,18 @@ +interface CloudStorageUpgradeHelper extends Interface + abstract + native(PlatformInterface); + +event HandleLocalDocument(out string DocName, out int bShouldMoveToCloud, out int bShouldDeleteLocalFile) +{ + //return; +} + +event HandleLocalKeyValue(out string CloudKeyName, out PlatformInterfaceData CloudValue, out int bShouldMoveToCloud, out int bShouldDeleteLocalKey) +{ + //return; +} + +event GetCloudUpgradeKeys(out array CloudKeys) +{ + //return; +} diff --git a/exported/Engine/Classes/CodecMovie.uc b/exported/Engine/Classes/CodecMovie.uc new file mode 100755 index 00000000..45431c80 --- /dev/null +++ b/exported/Engine/Classes/CodecMovie.uc @@ -0,0 +1,6 @@ +class CodecMovie extends Object + abstract + transient + native; + +var const transient float PlaybackDuration; diff --git a/exported/Engine/Classes/CodecMovieFallback.uc b/exported/Engine/Classes/CodecMovieFallback.uc new file mode 100755 index 00000000..0333f8c8 --- /dev/null +++ b/exported/Engine/Classes/CodecMovieFallback.uc @@ -0,0 +1,5 @@ +class CodecMovieFallback extends CodecMovie + transient + native; + +var const transient float CurrentTime; diff --git a/exported/Engine/Classes/ColorScaleVolume.uc b/exported/Engine/Classes/ColorScaleVolume.uc new file mode 100755 index 00000000..7d49d66c --- /dev/null +++ b/exported/Engine/Classes/ColorScaleVolume.uc @@ -0,0 +1,93 @@ +class ColorScaleVolume extends Volume + placeable + hidecategories(Navigation,Object,Movement,Display,Collision,Brush,Attachment,Volume); + +var() Vector ColorScale; +var() float InterpTime; + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local Pawn P; + local PlayerController PC; + + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + P = Pawn(Other); + // End:0x105 + if(P != none) + { + PC = PlayerController(P.Controller); + // End:0x105 + if((PC != none) && PC.PlayerCamera != none) + { + PC.PlayerCamera.SetDesiredColorScale(ColorScale, InterpTime); + } + } + //return; +} + +event UnTouch(Actor Other) +{ + local Pawn P; + local PlayerController PC; + local Vector DesiredColorScale; + local float DesiredInterpTime; + local int Idx; + local ColorScaleVolume CSV; + + super(Actor).UnTouch(Other); + P = Pawn(Other); + // End:0x23A + if(P != none) + { + PC = PlayerController(P.Controller); + // End:0x23A + if((PC != none) && PC.PlayerCamera != none) + { + DesiredColorScale = WorldInfo.DefaultColorScale; + DesiredInterpTime = 1.0000000; + // End:0x1F4 + if(P.Touching.Length > 0) + { + Idx = P.Touching.Length; + J0x129: + + // End:0x1F4 [Loop If] + if(Idx >= 0) + { + CSV = ColorScaleVolume(P.Touching[Idx]); + // End:0x1E6 + if((CSV != none) && CSV != self) + { + DesiredColorScale = CSV.ColorScale; + DesiredInterpTime = CSV.InterpTime; + // [Explicit Break] + goto J0x1F4; + } + --Idx; + // [Loop Continue] + goto J0x129; + } + } + J0x1F4: + + PC.PlayerCamera.SetDesiredColorScale(DesiredColorScale, DesiredInterpTime); + } + } + //return; +} + +defaultproperties +{ + ColorScale=(X=1.0000000,Y=1.0000000,Z=1.0000000) + InterpTime=1.0000000 + // Reference: BrushComponent'Engine.Default__ColorScaleVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Console.uc b/exported/Engine/Classes/Console.uc new file mode 100755 index 00000000..42c3e0ce --- /dev/null +++ b/exported/Engine/Classes/Console.uc @@ -0,0 +1,1390 @@ +class Console extends Interaction within GameViewportClient + transient + native(UserInterface) + config(Input) + hidecategories(Object,UIRoot); + +const MaxHistory = 16; + +struct native AutoCompleteCommand +{ + var string Command; + var string Desc; + + structdefaultproperties + { + Command="" + Desc="" + } +}; + +struct native AutoCompleteNode +{ + var int IndexChar; + var init array AutoCompleteListIndices; + var init array ChildNodes; + + structdefaultproperties + { + IndexChar=0 + AutoCompleteListIndices=none + ChildNodes=none + } +}; + +var LocalPlayer ConsoleTargetPlayer; +var Texture2D DefaultTexture_Black; +var Texture2D DefaultTexture_White; +var globalconfig name ConsoleKey; +var globalconfig name TypeKey; +var globalconfig int MaxScrollbackSize; +var array Scrollback; +var int SBHead; +var int SBPos; +var config int HistoryTop; +var config int HistoryBot; +var config int HistoryCur; +var config string History[16]; +var transient bool bNavigatingHistory; +var transient bool bCaptureKeyInput; +var bool bCtrl; +var config bool bEnableUI; +var transient bool bAutoCompleteLocked; +var config bool bRequireCtrlToNavigateAutoComplete; +var transient bool bIsRuntimeAutoCompleteUpToDate; +var string TypedStr; +var int TypedStrPos; +var config array ManualAutoCompleteList; +var transient array AutoCompleteList; +var transient int AutoCompleteIndex; +var native transient AutoCompleteNode AutoCompleteTree; +var transient array AutoCompleteIndices; + +function Initialized() +{ + super.Initialized(); + //return; +} + +function SetInputText(string Text) +{ + TypedStr = Text; + //return; +} + +function SetCursorPos(int Position) +{ + TypedStrPos = Position; + //return; +} + +function PurgeCommandFromHistory(string Command) +{ + local int HistoryIdx, Idx, NextIdx; + + // End:0x132 + if((HistoryTop >= 0) && HistoryTop < 16) + { + HistoryIdx = 0; + J0x2C: + + // End:0x132 [Loop If] + if(HistoryIdx < 16) + { + // End:0x124 + if(History[HistoryIdx] ~= Command) + { + Idx = HistoryIdx; + NextIdx = (HistoryIdx + 1) % 16; + J0x8A: + + // End:0xF8 [Loop If] + if(Idx != HistoryTop) + { + History[Idx] = History[NextIdx]; + Idx = NextIdx; + NextIdx = (NextIdx + 1) % 16; + // [Loop Continue] + goto J0x8A; + } + HistoryTop = ((HistoryTop == 0) ? 16 - 1 : HistoryTop - 1); + } + ++HistoryIdx; + // [Loop Continue] + goto J0x2C; + } + } + //return; +} + +function ConsoleCommand(string Command) +{ + // End:0xE3 + if(((HistoryTop == 0) ? !History[16 - 1] ~= Command : !History[HistoryTop - 1] ~= Command)) + { + PurgeCommandFromHistory(Command); + History[HistoryTop] = Command; + HistoryTop = (HistoryTop + 1) % 16; + // End:0xE3 + if((HistoryBot == -1) || HistoryBot == HistoryTop) + { + HistoryBot = (HistoryBot + 1) % 16; + } + } + HistoryCur = HistoryTop; + SaveConfig(); + OutputText(("\n>>>" @ Command) @ "<<<"); + // End:0x174 + if(ConsoleTargetPlayer != none) + { + ConsoleTargetPlayer.Actor.ConsoleCommand(Command); + } + else + { + // End:0x276 + if((Outer.Outer.GamePlayers.Length > 0) && Outer.Outer.GamePlayers[0].Actor != none) + { + Outer.Outer.GamePlayers[0].Actor.ConsoleCommand(Command); + } + else + { + Outer.ConsoleCommand(Command); + } + } + //return; +} + +function ClearOutput() +{ + SBHead = 0; + Scrollback.Remove(0, Scrollback.Length); + //return; +} + +function OutputTextLine(coerce string Text) +{ + // End:0x3E + if(Scrollback.Length > MaxScrollbackSize) + { + Scrollback.Remove(0, 1); + SBHead = MaxScrollbackSize - 1; + } + else + { + SBHead++; + } + Scrollback.Length = Scrollback.Length + 1; + Scrollback[SBHead] = Text; + //return; +} + +event OutputText(coerce string Text) +{ + local string RemainingText; + local int StringLength, LineLength; + + RemainingText = Text; + StringLength = Len(Text); + J0x28: + + // End:0xD2 [Loop If] + if(StringLength > 0) + { + LineLength = InStr(RemainingText, "\n"); + // End:0x78 + if(LineLength == -1) + { + LineLength = StringLength; + } + OutputTextLine(Left(RemainingText, LineLength)); + RemainingText = Mid(RemainingText, LineLength + 1); + StringLength -= (LineLength + 1); + // [Loop Continue] + goto J0x28; + } + //return; +} + +function StartTyping(coerce string Text) +{ + GotoState('Typing'); + SetInputText(Text); + SetCursorPos(Len(Text)); + //return; +} + +function PostRender_Console(Canvas Canvas) +{ + //return; +} + +function bool InputKey(int ControllerId, name Key, Object.EInputEvent Event, optional float AmountDepressed = 1.0000000, optional bool bGamepad = false) +{ + // End:0x97 + if(int(Event) == int(0)) + { + bCaptureKeyInput = false; + // End:0x64 + if(Key == ConsoleKey) + { + GotoState('Open'); + bCaptureKeyInput = true; + return true; + } + else + { + // End:0x97 + if(Key == TypeKey) + { + GotoState('Typing'); + bCaptureKeyInput = true; + return true; + } + } + } + return bCaptureKeyInput; + //return ReturnValue; +} + +function bool InputChar(int ControllerId, string Unicode) +{ + return bCaptureKeyInput; + //return ReturnValue; +} + +function FlushPlayerInput() +{ + local PlayerController PC; + + // End:0x3A + if(ConsoleTargetPlayer != none) + { + PC = ConsoleTargetPlayer.Actor; + } + else + { + // End:0x11A + if((Outer.Outer.GamePlayers.Length > 0) && Outer.Outer.GamePlayers[0].Actor != none) + { + PC = Outer.Outer.GamePlayers[0].Actor; + } + } + // End:0x183 + if((PC != none) && PC.PlayerInput != none) + { + PC.PlayerInput.ResetInput(); + } + //return; +} + +function bool ProcessControlKey(name Key, Object.EInputEvent Event) +{ + // End:0x78 + if((Key == 'LeftControl') || Key == 'RightControl') + { + // End:0x53 + if(int(Event) == int(1)) + { + bCtrl = false; + } + else + { + // End:0x73 + if(int(Event) == int(0)) + { + bCtrl = true; + } + } + return true; + } + else + { + // End:0x2DD + if(((bCtrl && int(Event) == int(0)) && Outer.Outer.GamePlayers.Length > 0) && Outer.Outer.GamePlayers[0].Actor != none) + { + // End:0x1AF + if(Key == 'V') + { + AppendInputText(Outer.Outer.GamePlayers[0].Actor.PasteFromClipboard()); + return true; + } + else + { + // End:0x234 + if(Key == 'C') + { + Outer.Outer.GamePlayers[0].Actor.CopyToClipboard(TypedStr); + return true; + } + else + { + // End:0x2DD + if(Key == 'X') + { + // End:0x2DB + if(TypedStr != "") + { + Outer.Outer.GamePlayers[0].Actor.CopyToClipboard(TypedStr); + SetInputText(""); + SetCursorPos(0); + } + return true; + } + } + } + } + } + return false; + //return ReturnValue; +} + +function AppendInputText(string Text) +{ + local int Character; + + J0x00: + // End:0xCC [Loop If] + if(Len(Text) > 0) + { + Character = Asc(Left(Text, 1)); + Text = Mid(Text, 1); + // End:0xC9 + if((Character >= 32) && Character < 256) + { + SetInputText((Left(TypedStr, TypedStrPos) $ Chr(Character)) $ Right(TypedStr, Len(TypedStr) - TypedStrPos)); + SetCursorPos(TypedStrPos + 1); + } + // [Loop Continue] + goto J0x00; + } + UpdateCompleteIndices(); + //return; +} + +// Export UConsole::execBuildRuntimeAutoCompleteList(FFrame&, void* const) +native final function BuildRuntimeAutoCompleteList(optional bool bForce); + +// Export UConsole::execUpdateCompleteIndices(FFrame&, void* const) +native function UpdateCompleteIndices(); + +state Typing +{ + function bool InputChar(int ControllerId, string Unicode) + { + // End:0x0F + if(bCaptureKeyInput) + { + return true; + } + AppendInputText(Unicode); + return true; + //return ReturnValue; + } + + function bool InputKey(int ControllerId, name Key, Object.EInputEvent Event, optional float AmountDepressed = 1.0000000, optional bool bGamepad = false) + { + local string Temp; + local int NewPos, SpacePos, PeriodPos; + + // End:0x2E + if(int(Event) == int(0)) + { + bCaptureKeyInput = false; + } + // End:0x52 + if(ProcessControlKey(Key, Event)) + { + return true; + } + else + { + // End:0x64 + if(bGamepad) + { + return false; + } + else + { + // End:0xE3 + if((Key == 'Escape') && int(Event) == int(1)) + { + // End:0xD0 + if(TypedStr != "") + { + SetInputText(""); + SetCursorPos(0); + HistoryCur = HistoryTop; + return true; + } + else + { + GotoState('None'); + } + return true; + } + else + { + // End:0x12F + if((Key == ConsoleKey) && int(Event) == int(0)) + { + GotoState('Open'); + bCaptureKeyInput = true; + return true; + } + else + { + // End:0x1FA + if((Key == TypeKey) && int(Event) == int(0)) + { + // End:0x1DB + if((AutoCompleteIndices.Length > 0) && !bAutoCompleteLocked) + { + TypedStr = AutoCompleteList[AutoCompleteIndices[AutoCompleteIndex]].Command; + SetCursorPos(Len(TypedStr)); + bAutoCompleteLocked = true; + } + else + { + GotoState('None'); + bCaptureKeyInput = true; + } + return true; + } + else + { + // End:0x2AE + if((Key == 'Enter') && int(Event) == int(1)) + { + // End:0x29B + if(TypedStr != "") + { + Temp = TypedStr; + SetInputText(""); + SetCursorPos(0); + ConsoleCommand(Temp); + OutputText(""); + GotoState('None'); + UpdateCompleteIndices(); + } + else + { + GotoState('None'); + } + return true; + } + else + { + // End:0x2EE + if(global.InputKey(ControllerId, Key, Event, AmountDepressed, bGamepad)) + { + return true; + } + else + { + // End:0x373 + if((int(Event) != int(0)) && int(Event) != int(2)) + { + // End:0x36E + if(!bGamepad) + { + return ((Key != 'LeftMouseButton') && Key != 'MiddleMouseButton') && Key != 'RightMouseButton'; + } + return false; + } + else + { + // End:0x4CF + if(Key == 'Up') + { + // End:0x413 + if(!bNavigatingHistory && (bRequireCtrlToNavigateAutoComplete && bCtrl) || (!bRequireCtrlToNavigateAutoComplete && !bCtrl) && AutoCompleteIndices.Length > 1) + { + // End:0x410 + if(++AutoCompleteIndex == AutoCompleteIndices.Length) + { + AutoCompleteIndex = 0; + } + } + else + { + // End:0x4CA + if(HistoryBot >= 0) + { + // End:0x44F + if(HistoryCur == HistoryBot) + { + HistoryCur = HistoryTop; + } + else + { + HistoryCur--; + // End:0x478 + if(HistoryCur < 0) + { + HistoryCur = 16 - 1; + } + } + SetInputText(History[HistoryCur]); + SetCursorPos(Len(History[HistoryCur])); + UpdateCompleteIndices(); + bNavigatingHistory = true; + } + } + return true; + } + else + { + // End:0x629 + if(Key == 'Down') + { + // End:0x57E + if(!bNavigatingHistory && (bRequireCtrlToNavigateAutoComplete && bCtrl) || (!bRequireCtrlToNavigateAutoComplete && !bCtrl) && AutoCompleteIndices.Length > 1) + { + // End:0x56F + if(--AutoCompleteIndex < 0) + { + AutoCompleteIndex = AutoCompleteIndices.Length - 1; + } + bAutoCompleteLocked = false; + } + else + { + // End:0x626 + if(HistoryBot >= 0) + { + // End:0x5BA + if(HistoryCur == HistoryTop) + { + HistoryCur = HistoryBot; + } + else + { + HistoryCur = (HistoryCur + 1) % 16; + } + SetInputText(History[HistoryCur]); + SetCursorPos(Len(History[HistoryCur])); + UpdateCompleteIndices(); + bNavigatingHistory = true; + } + } + } + else + { + // End:0x6BA + if(Key == 'BackSpace') + { + // End:0x6B5 + if(TypedStrPos > 0) + { + SetInputText(Left(TypedStr, TypedStrPos - 1) $ Right(TypedStr, Len(TypedStr) - TypedStrPos)); + SetCursorPos(TypedStrPos - 1); + bAutoCompleteLocked = false; + } + return true; + } + else + { + // End:0x733 + if(Key == 'Delete') + { + // End:0x72E + if(TypedStrPos < Len(TypedStr)) + { + SetInputText(Left(TypedStr, TypedStrPos) $ Right(TypedStr, (Len(TypedStr) - TypedStrPos) - 1)); + } + return true; + } + else + { + // End:0x7CC + if(Key == 'Left') + { + // End:0x7AE + if(bCtrl) + { + NewPos = Max(InStr(TypedStr, ".", true, false, TypedStrPos), InStr(TypedStr, " ", true, false, TypedStrPos)); + SetCursorPos(Max(0, NewPos)); + } + else + { + SetCursorPos(Max(0, TypedStrPos - 1)); + } + return true; + } + else + { + // End:0x90C + if(Key == 'Right') + { + // End:0x8E4 + if(bCtrl) + { + SpacePos = InStr(TypedStr, " ", false, false, TypedStrPos + 1); + PeriodPos = InStr(TypedStr, ".", false, false, TypedStrPos + 1); + NewPos = ((SpacePos < 0) ? PeriodPos : ((PeriodPos < 0) ? SpacePos : Min(SpacePos, PeriodPos))); + // End:0x8B6 + if(NewPos == -1) + { + NewPos = Len(TypedStr); + } + SetCursorPos(Min(Len(TypedStr), Max(TypedStrPos, NewPos))); + } + else + { + SetCursorPos(Min(Len(TypedStr), TypedStrPos + 1)); + } + return true; + } + else + { + // End:0x933 + if(Key == 'Home') + { + SetCursorPos(0); + return true; + } + else + { + // End:0x961 + if(Key == 'End') + { + SetCursorPos(Len(TypedStr)); + return true; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return true; + //return ReturnValue; + } + + event PostRender_Console(Canvas Canvas) + { + local float Y, XL, YL, info_xl, info_yl, ClipX, + ClipY, LeftPos; + + local string OutStr; + local int MatchIdx, Idx, StartIdx; + + global.PostRender_Console(Canvas); + Canvas.Font = Class'Engine.Engine'.static.GetSmallFont(); + OutStr = "(>" @ TypedStr; + Canvas.StrLen(OutStr, XL, YL); + ClipX = Canvas.ClipX; + ClipY = Canvas.ClipY; + LeftPos = 0.0000000; + // End:0x153 + if(Class'Engine.WorldInfo'.static.IsConsoleBuild()) + { + ClipX -= float(32); + ClipY -= float(32); + LeftPos = 32.0000000; + } + Canvas.SetPos(LeftPos, (ClipY - float(6)) - YL); + Canvas.DrawTile(DefaultTexture_Black, ClipX, YL + float(6), 0.0000000, 0.0000000, 32.0000000, 32.0000000); + Canvas.SetPos(LeftPos, (ClipY - float(6)) - YL); + Canvas.SetDrawColor(0, 255, 0); + Canvas.DrawTile(DefaultTexture_White, ClipX, 2.0000000, 0.0000000, 0.0000000, 32.0000000, 32.0000000); + Canvas.SetPos(LeftPos, (ClipY - float(3)) - YL); + Canvas.bCenter = false; + Canvas.DrawText(OutStr, false); + // End:0x969 + if(AutoCompleteIndices.Length > 0) + { + Idx = AutoCompleteIndices[AutoCompleteIndex]; + Canvas.SetPos(LeftPos + XL, (ClipY - float(3)) - YL); + Canvas.SetDrawColor(87, 148, 87); + Canvas.DrawText(Right(AutoCompleteList[Idx].Command, Len(AutoCompleteList[Idx].Command) - Len(TypedStr)), false); + Canvas.StrLen("(>", XL, YL); + StartIdx = AutoCompleteIndex - 5; + // End:0x4D5 + if(StartIdx < 0) + { + StartIdx = Max(0, AutoCompleteIndices.Length + StartIdx); + } + Idx = StartIdx; + Y = (ClipY - float(6)) - (YL * float(2)); + MatchIdx = 0; + J0x51D: + + // End:0x7A6 [Loop If] + if(MatchIdx < 10) + { + OutStr = AutoCompleteList[AutoCompleteIndices[Idx]].Desc; + Canvas.StrLen(OutStr, info_xl, info_yl); + Y -= (info_yl - YL); + Canvas.SetPos(LeftPos + XL, Y); + Canvas.SetDrawColor(0, 0, 0); + Canvas.DrawTile(DefaultTexture_White, info_xl, info_yl, 0.0000000, 0.0000000, 32.0000000, 32.0000000); + Canvas.SetPos(LeftPos + XL, Y); + // End:0x6F2 + if(Idx == AutoCompleteIndex) + { + Canvas.SetDrawColor(0, 255, 0); + } + else + { + Canvas.SetDrawColor(0, 150, 0); + } + Canvas.DrawText(OutStr, false); + // End:0x76A + if(++Idx >= AutoCompleteIndices.Length) + { + Idx = 0; + } + Y -= YL; + // End:0x798 + if(Idx == StartIdx) + { + // [Explicit Break] + goto J0x7A6; + } + MatchIdx++; + // [Loop Continue] + goto J0x51D; + } + J0x7A6: + + // End:0x969 + if(AutoCompleteIndices.Length >= 10) + { + OutStr = ("[" $ string((AutoCompleteIndices.Length - 10) + 1)) @ "more matches]"; + Canvas.StrLen(OutStr, info_xl, info_yl); + Canvas.SetPos(LeftPos + XL, Y); + Canvas.SetDrawColor(0, 0, 0); + Canvas.DrawTile(DefaultTexture_White, info_xl, info_yl, 0.0000000, 0.0000000, 32.0000000, 32.0000000); + Canvas.SetPos(LeftPos + XL, Y); + Canvas.SetDrawColor(0, 255, 0); + Canvas.DrawText(OutStr, false); + } + } + OutStr = "(>" @ Left(TypedStr, TypedStrPos); + Canvas.StrLen(OutStr, XL, YL); + Canvas.SetPos(LeftPos + XL, (ClipY - float(1)) - YL); + Canvas.DrawText("_"); + //return; + } + + event BeginState(name PreviousStateName) + { + // End:0x21 + if(PreviousStateName == 'None') + { + FlushPlayerInput(); + } + bCaptureKeyInput = true; + HistoryCur = HistoryTop; + //return; + } + + event EndState(name NextStateName) + { + bAutoCompleteLocked = false; + //return; + } + stop; +} + +state Open +{ + ignores EndState; + + function bool InputChar(int ControllerId, string Unicode) + { + // End:0x0F + if(bCaptureKeyInput) + { + return true; + } + AppendInputText(Unicode); + return true; + //return ReturnValue; + } + + function KeyboardInputComplete(bool bWasSuccessful) + { + local string Temp; + local byte bWasCancelled; + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + TypedStr = OnlineSub.PlayerInterface.GetKeyboardInputResults(bWasCancelled); + // End:0xE8 + if(TypedStr != "") + { + Temp = TypedStr; + SetInputText(""); + SetCursorPos(0); + // End:0xCB + if(Temp ~= "cls") + { + ClearOutput(); + } + else + { + ConsoleCommand(Temp); + } + UpdateCompleteIndices(); + } + GotoState('None'); + //return; + } + + function bool InputKey(int ControllerId, name Key, Object.EInputEvent Event, optional float AmountDepressed = 1.0000000, optional bool bGamepad = false) + { + local string Temp; + + // End:0x2E + if(int(Event) == int(0)) + { + bCaptureKeyInput = false; + } + // End:0x52 + if(ProcessControlKey(Key, Event)) + { + return true; + } + else + { + // End:0x64 + if(bGamepad) + { + return false; + } + else + { + // End:0xE1 + if((Key == 'Escape') && int(Event) == int(1)) + { + // End:0xD0 + if(TypedStr != "") + { + SetInputText(""); + SetCursorPos(0); + HistoryCur = HistoryTop; + return true; + } + else + { + GotoState('None'); + } + } + else + { + // End:0x12D + if((Key == ConsoleKey) && int(Event) == int(0)) + { + GotoState('None'); + bCaptureKeyInput = true; + return true; + } + else + { + // End:0x1F0 + if((Key == TypeKey) && int(Event) == int(0)) + { + // End:0x1D1 + if((AutoCompleteIndices.Length > 0) && !bAutoCompleteLocked) + { + TypedStr = AutoCompleteList[AutoCompleteIndices[0]].Command; + SetCursorPos(Len(TypedStr)); + bAutoCompleteLocked = true; + } + else + { + GotoState('None'); + bCaptureKeyInput = true; + } + return true; + } + else + { + // End:0x299 + if((Key == 'Enter') && int(Event) == int(1)) + { + // End:0x294 + if(TypedStr != "") + { + Temp = TypedStr; + SetInputText(""); + SetCursorPos(0); + // End:0x277 + if(Temp ~= "cls") + { + ClearOutput(); + } + else + { + ConsoleCommand(Temp); + } + UpdateCompleteIndices(); + } + return true; + } + else + { + // End:0x2D9 + if(global.InputKey(ControllerId, Key, Event, AmountDepressed, bGamepad)) + { + return true; + } + else + { + // End:0x35E + if((int(Event) != int(0)) && int(Event) != int(2)) + { + // End:0x359 + if(!bGamepad) + { + return ((Key != 'LeftMouseButton') && Key != 'MiddleMouseButton') && Key != 'RightMouseButton'; + } + return false; + } + else + { + // End:0x482 + if(Key == 'Up') + { + // End:0x428 + if(!bCtrl) + { + // End:0x425 + if(HistoryBot >= 0) + { + // End:0x3C0 + if(HistoryCur == HistoryBot) + { + HistoryCur = HistoryTop; + } + else + { + HistoryCur--; + // End:0x3E9 + if(HistoryCur < 0) + { + HistoryCur = 16 - 1; + } + } + SetInputText(History[HistoryCur]); + SetCursorPos(Len(History[HistoryCur])); + } + } + else + { + // End:0x47D + if(SBPos < (Scrollback.Length - 1)) + { + SBPos++; + // End:0x47D + if(SBPos >= Scrollback.Length) + { + SBPos = Scrollback.Length - 1; + } + } + } + return true; + } + else + { + // End:0x576 + if(Key == 'Down') + { + // End:0x53D + if(!bCtrl) + { + // End:0x53A + if(HistoryBot >= 0) + { + // End:0x4E4 + if(HistoryCur == HistoryTop) + { + HistoryCur = HistoryBot; + } + else + { + HistoryCur = (HistoryCur + 1) % 16; + } + SetInputText(History[HistoryCur]); + SetCursorPos(Len(History[HistoryCur])); + } + } + else + { + // End:0x571 + if(SBPos > 0) + { + SBPos--; + // End:0x571 + if(SBPos < 0) + { + SBPos = 0; + } + } + } + return true; + } + else + { + // End:0x607 + if(Key == 'BackSpace') + { + // End:0x602 + if(TypedStrPos > 0) + { + SetInputText(Left(TypedStr, TypedStrPos - 1) $ Right(TypedStr, Len(TypedStr) - TypedStrPos)); + SetCursorPos(TypedStrPos - 1); + bAutoCompleteLocked = false; + } + return true; + } + else + { + // End:0x680 + if(Key == 'Delete') + { + // End:0x67B + if(TypedStrPos < Len(TypedStr)) + { + SetInputText(Left(TypedStr, TypedStrPos) $ Right(TypedStr, (Len(TypedStr) - TypedStrPos) - 1)); + } + return true; + } + else + { + // End:0x6B5 + if(Key == 'Left') + { + SetCursorPos(Max(0, TypedStrPos - 1)); + return true; + } + else + { + // End:0x6F4 + if(Key == 'Right') + { + SetCursorPos(Min(Len(TypedStr), TypedStrPos + 1)); + return true; + } + else + { + // End:0x728 + if(bCtrl && Key == 'Home') + { + SBPos = 0; + } + else + { + // End:0x74F + if(Key == 'Home') + { + SetCursorPos(0); + return true; + } + else + { + // End:0x78F + if(bCtrl && Key == 'End') + { + SBPos = Scrollback.Length - 1; + } + else + { + // End:0x7C0 + if(Key == 'End') + { + SetCursorPos(Len(TypedStr)); + return true; + } + else + { + // End:0x867 + if((Key == 'PageUp') || Key == 'MouseScrollUp') + { + // End:0x862 + if(SBPos < (Scrollback.Length - 1)) + { + // End:0x828 + if(bCtrl) + { + SBPos += 5; + } + else + { + SBPos++; + } + // End:0x862 + if(SBPos >= Scrollback.Length) + { + SBPos = Scrollback.Length - 1; + } + } + return true; + } + else + { + // End:0x8EA + if((Key == 'PageDown') || Key == 'MouseScrollDown') + { + // End:0x8E8 + if(SBPos > 0) + { + // End:0x8C3 + if(bCtrl) + { + SBPos -= 5; + } + else + { + SBPos--; + } + // End:0x8E8 + if(SBPos < 0) + { + SBPos = 0; + } + } + return true; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return true; + //return ReturnValue; + } + + event PostRender_Console(Canvas Canvas) + { + local float Height, XL, YL, Y, ScrollLineXL, ScrollLineYL, + info_xl, info_yl; + + local string OutStr; + local int Idx, MatchIdx; + + Canvas.Font = Class'Engine.Engine'.static.GetSmallFont(); + Height = Canvas.ClipY * 0.7500000; + Canvas.SetDrawColor(255, 255, 255, 255); + Canvas.SetPos(0.0000000, 0.0000000); + Canvas.DrawTile(DefaultTexture_Black, Canvas.ClipX, Height, 0.0000000, 0.0000000, 32.0000000, 32.0000000); + OutStr = "(>" @ TypedStr; + Canvas.StrLen(OutStr, XL, YL); + Canvas.SetPos(0.0000000, (Height - float(12)) - YL); + Canvas.SetDrawColor(0, 255, 0); + Canvas.DrawTile(DefaultTexture_White, Canvas.ClipX, 2.0000000, 0.0000000, 0.0000000, 32.0000000, 32.0000000); + Canvas.SetPos(0.0000000, Height); + Canvas.DrawTile(DefaultTexture_White, Canvas.ClipX, 2.0000000, 0.0000000, 0.0000000, 32.0000000, 32.0000000); + Canvas.SetPos(0.0000000, (Height - float(5)) - YL); + Canvas.bCenter = false; + Canvas.DrawText(OutStr, false); + // End:0x6E7 + if(AutoCompleteIndices.Length > 0) + { + Idx = AutoCompleteIndices[0]; + Canvas.SetPos(0.0000000 + XL, (Height - float(5)) - YL); + Canvas.SetDrawColor(87, 148, 87); + Canvas.DrawText(Right(AutoCompleteList[Idx].Command, Len(AutoCompleteList[Idx].Command) - Len(TypedStr)), false); + Canvas.StrLen("(>", XL, YL); + Y = Height + float(5); + MatchIdx = 0; + J0x4CD: + + // End:0x6E7 [Loop If] + if((MatchIdx < AutoCompleteIndices.Length) && MatchIdx < 10) + { + Idx = AutoCompleteIndices[MatchIdx]; + Canvas.SetPos(0.0000000 + XL, Y); + Canvas.StrLen(AutoCompleteList[Idx].Desc, info_xl, info_yl); + Canvas.SetDrawColor(0, 0, 0); + Canvas.DrawTile(DefaultTexture_White, info_xl, info_yl, 0.0000000, 0.0000000, 32.0000000, 32.0000000); + Canvas.SetPos(0.0000000 + XL, Y); + Canvas.SetDrawColor(0, 255, 0); + Canvas.DrawText(AutoCompleteList[Idx].Desc, false); + Y += info_yl; + MatchIdx++; + // [Loop Continue] + goto J0x4CD; + } + } + OutStr = "(>" @ Left(TypedStr, TypedStrPos); + Canvas.StrLen(OutStr, XL, YL); + Canvas.SetPos(XL, (Height - float(3)) - YL); + Canvas.DrawText("_"); + Idx = SBHead - SBPos; + Y = (Height - float(16)) - (YL * float(2)); + // End:0x809 + if(Scrollback.Length == 0) + { + return; + } + Canvas.SetDrawColor(255, 255, 255, 255); + J0x830: + + // End:0x9BD [Loop If] + if((Y > YL) && Idx >= 0) + { + Canvas.SetPos(0.0000000, Y); + Canvas.StrLen(Scrollback[Idx], ScrollLineXL, ScrollLineYL); + // End:0x964 + if(ScrollLineYL > YL) + { + Y -= (ScrollLineYL - YL); + Canvas.SetPos(Canvas.CurX, Y, Canvas.CurZ); + } + Canvas.DrawText(Scrollback[Idx], false); + Idx--; + Y -= YL; + // [Loop Continue] + goto J0x830; + } + //return; + } + + event BeginState(name PreviousStateName) + { + bCaptureKeyInput = true; + HistoryCur = HistoryTop; + SBPos = 0; + bCtrl = false; + // End:0x57 + if(PreviousStateName == 'None') + { + FlushPlayerInput(); + } + //return; + } + stop; +} + +defaultproperties +{ + DefaultTexture_Black=Texture2D'EngineResources.Black' + DefaultTexture_White=Texture2D'EngineResources.WhiteSquareTexture' + ConsoleKey="Tilde" + TypeKey="LeftBracket" + MaxScrollbackSize=1024 + HistoryBot=-1 + ManualAutoCompleteList[0]=(Command="Exit",Desc="Exit (Exits the game)") + ManualAutoCompleteList[1]=(Command="DebugCreatePlayer 1",Desc="") + ManualAutoCompleteList[2]=(Command="FreezeAt",Desc="Locks the player view and rendering time.") + ManualAutoCompleteList[3]=(Command="SSSwapControllers",Desc="") + ManualAutoCompleteList[4]=(Command="Open",Desc="Open (Opens the specified map)") + ManualAutoCompleteList[5]=(Command="DisplayAll",Desc="DisplayAll (Display property values for instances of classname)") + ManualAutoCompleteList[6]=(Command="DisplayAllState",Desc="DisplayAllState (Display state names for all instances of classname)") + ManualAutoCompleteList[7]=(Command="DisplayClear",Desc="DisplayClear (Clears previous DisplayAll entries)") + ManualAutoCompleteList[8]=(Command="DisplayProperty",Desc="DisplayProperty (Display the current value of a property on your TgPawn)") + ManualAutoCompleteList[9]=(Command="FlushPersistentDebugLines",Desc="FlushPersistentDebugLines (Clears persistent debug line cache)") + ManualAutoCompleteList[10]=(Command="GetAll ",Desc="GetAll (Log property values of all instances of classname)") + ManualAutoCompleteList[11]=(Command="GetAllState",Desc="GetAllState (Log state names for all instances of classname)") + ManualAutoCompleteList[12]=(Command="Obj List ",Desc="Obj List ") + ManualAutoCompleteList[13]=(Command="Obj ListContentRefs",Desc="Obj ListContentRefs ") + ManualAutoCompleteList[14]=(Command="Obj Classes",Desc="Obj Classes (Shows all classes)") + ManualAutoCompleteList[15]=(Command="Obj Refs",Desc="Name= Class= Lists referencers of the specified object") + ManualAutoCompleteList[16]=(Command="EditActor",Desc="EditActor or or TRACE") + ManualAutoCompleteList[17]=(Command="EditDefault",Desc="EditDefault ") + ManualAutoCompleteList[18]=(Command="EditObject",Desc="EditObject or or ") + ManualAutoCompleteList[19]=(Command="ReloadCfg ",Desc="ReloadCfg (Reloads config variables for the specified object/class)") + ManualAutoCompleteList[20]=(Command="ReloadLoc ",Desc="ReloadLoc (Reloads localized variables for the specified object/class)") + ManualAutoCompleteList[21]=(Command="Set ",Desc="Set (Sets property to value on objectname)") + ManualAutoCompleteList[22]=(Command="Show BOUNDS",Desc="Show BOUNDS (Displays bounding boxes for all visible objects)") + ManualAutoCompleteList[23]=(Command="Show BSP",Desc="Show BSP (Toggles BSP rendering)") + ManualAutoCompleteList[24]=(Command="Show COLLISION",Desc="Show COLLISION (Toggles collision rendering)") + ManualAutoCompleteList[25]=(Command="Show COVER",Desc="Show COVER (Toggles cover rendering)") + ManualAutoCompleteList[26]=(Command="Show DECALS",Desc="Show DECALS (Toggles decal rendering)") + ManualAutoCompleteList[27]=(Command="Show FOG",Desc="Show FOG (Toggles fog rendering)") + ManualAutoCompleteList[28]=(Command="Show LEVELCOLORATION",Desc="Show LEVELCOLORATION (Toggles per-level coloration)") + ManualAutoCompleteList[29]=(Command="Show PATHS",Desc="Show PATHS (Toggles path rendering)") + ManualAutoCompleteList[30]=(Command="Show POSTPROCESS",Desc="Show POSTPROCESS (Toggles post process rendering)") + ManualAutoCompleteList[31]=(Command="Show SKELMESHES",Desc="Show SKELMESHES (Toggles skeletal mesh rendering)") + ManualAutoCompleteList[32]=(Command="Show TERRAIN",Desc="Show TERRAIN (Toggles terrain rendering)") + ManualAutoCompleteList[33]=(Command="Show VOLUMES",Desc="Show VOLUMES (Toggles volume rendering)") + ManualAutoCompleteList[34]=(Command="Show SPLINES",Desc="Show SPLINES (Toggles spline rendering)") + ManualAutoCompleteList[35]=(Command="ShowSet",Desc="Sets a show flag to enable it") + ManualAutoCompleteList[36]=(Command="ShowClear",Desc="Clears a show flag to disable it") + ManualAutoCompleteList[37]=(Command="Stat FPS",Desc="Stat FPS (Shows FPS counter)") + ManualAutoCompleteList[38]=(Command="Stat UNIT",Desc="Stat UNIT (Shows hardware unit framerate)") + ManualAutoCompleteList[39]=(Command="Stat LEVELS",Desc="Stat LEVELS (Displays level streaming info)") + ManualAutoCompleteList[40]=(Command="Stat GAME",Desc="Stat GAME (Displays game performance stats)") + ManualAutoCompleteList[41]=(Command="Stat MEMORY",Desc="Stat MEMORY (Displays memory stats)") + ManualAutoCompleteList[42]=(Command="Stat XBOXMEMORY",Desc="Stat XBOXMEMORY (Displays Xbox memory stats while playing on PC)") + ManualAutoCompleteList[43]=(Command="Stat PHYSICS",Desc="Stat PHYSICS (Displays physics performance stats)") + ManualAutoCompleteList[44]=(Command="Stat STREAMING",Desc="Stat STREAMING (Displays basic texture streaming stats)") + ManualAutoCompleteList[45]=(Command="Stat STREAMINGDETAILS",Desc="Stat STREAMINGDETAILS (Displays detailed texture streaming stats)") + ManualAutoCompleteList[46]=(Command="Stat COLLISION",Desc="Stat COLLISION") + ManualAutoCompleteList[47]=(Command="Stat PARTICLES",Desc="Stat PARTICLES") + ManualAutoCompleteList[48]=(Command="Stat SCRIPT",Desc="Stat SCRIPT") + ManualAutoCompleteList[49]=(Command="Stat AUDIO",Desc="Stat AUDIO") + ManualAutoCompleteList[50]=(Command="Stat ANIM",Desc="Stat ANIM") + ManualAutoCompleteList[51]=(Command="Stat NET",Desc="Stat NET") + ManualAutoCompleteList[52]=(Command="Stat LIST",Desc="Stat LIST Groups/Sets/Group (List groups of stats, saved sets, or specific stats within a specified group)") + ManualAutoCompleteList[53]=(Command="Stat splitscreen",Desc="") + ManualAutoCompleteList[54]=(Command="ListTextures",Desc="ListTextures (Lists all loaded textures and their current memory footprint)") + ManualAutoCompleteList[55]=(Command="ListUncachedStaticLightingInteractions",Desc="ListUncachedStaticLightingInteractions (Lists all uncached static lighting interactions, which causes Lighting needs to be rebuilt messages)") + ManualAutoCompleteList[56]=(Command="RestartLevel",Desc="RestartLevel (restarts the level)") + ManualAutoCompleteList[57]=(Command="ListSounds",Desc="ListSounds (Lists all the loaded sounds and their memory footprint)") + ManualAutoCompleteList[58]=(Command="ListWaves",Desc="ListWaves (List the WaveInstances and whether they have a source)") + ManualAutoCompleteList[59]=(Command="ListSoundClasses",Desc="ListSoundClasses (Lists a summary of loaded sound collated by class)") + ManualAutoCompleteList[60]=(Command="ListSoundModes",Desc="ListSoundModes (Lists loaded sound modes)") + ManualAutoCompleteList[61]=(Command="ListAudioComponents",Desc="ListAudioComponents (Dumps a detailed list of all AudioComponent objects)") + ManualAutoCompleteList[62]=(Command="ListSoundDurations",Desc="ListSoundDurations") + ManualAutoCompleteList[63]=(Command="PlaySoundCue",Desc="PlaySoundCue (Lists a summary of loaded sound collated by class)") + ManualAutoCompleteList[64]=(Command="PlaySoundWave",Desc="PlaySoundWave") + ManualAutoCompleteList[65]=(Command="SetSoundMode",Desc="SetSoundMode ") + ManualAutoCompleteList[66]=(Command="DisableLowPassFilter",Desc="DisableLowPassFilter") + ManualAutoCompleteList[67]=(Command="DisableEQFilter",Desc="DisableEQFilter") + ManualAutoCompleteList[68]=(Command="IsolateDryAudio",Desc="IsolateDryAudio") + ManualAutoCompleteList[69]=(Command="IsolateReverb",Desc="IsolateReverb") + ManualAutoCompleteList[70]=(Command="ResetSoundState",Desc="ResetSoundState (Resets volumes to default and removes test filters)") + ManualAutoCompleteList[71]=(Command="ModifySoundClass",Desc="ModifySoundClass Vol=") + ManualAutoCompleteList[72]=(Command="DisableAllScreenMessages",Desc="Disables all on-screen warnings/messages") + ManualAutoCompleteList[73]=(Command="EnableAllScreenMessages",Desc="Enables all on-screen warnings/messages") + ManualAutoCompleteList[74]=(Command="ToggleAllScreenMessages",Desc="Toggles display state of all on-screen warnings/messages") + ManualAutoCompleteList[75]=(Command="CaptureMode",Desc="Toggles display state of all on-screen warnings/messages") + ManualAutoCompleteList[76]=(Command="ShowDebug NET",Desc="") + ManualAutoCompleteList[77]=(Command="ShowDebug PHYSICS",Desc="") + ManualAutoCompleteList[78]=(Command="ShowDebug COLLISION",Desc="") + ManualAutoCompleteList[79]=(Command="ShowDebug AI",Desc="") + ManualAutoCompleteList[80]=(Command="ShowDebug CAMERA",Desc="") + ManualAutoCompleteList[81]=(Command="ShowDebug WEAPON",Desc="") + ManualAutoCompleteList[82]=(Command="ShowDebug ANIMATION",Desc="") + ManualAutoCompleteList[83]=(Command="ShowDebug INPUT",Desc="") + ManualAutoCompleteList[84]=(Command="ShowDebug CONTROLLERINPUT",Desc="") + ManualAutoCompleteList[85]=(Command="memleakcheck",Desc="") + ManualAutoCompleteList[86]=(Command="togglehdwarning",Desc="") + ManualAutoCompleteList[87]=(Command="Stat SOUNDWAVES",Desc="Stat SOUNDWAVES (Shows active SoundWaves)") + ManualAutoCompleteList[88]=(Command="Stat SOUNDCUES",Desc="Stat SOUNDCUES (Shows active SoundCues)") + ManualAutoCompleteList[89]=(Command="Stat SOUNDS",Desc="Stat SOUNDS <-debug> (Shows active SoundCues and SoundWaves)") + ManualAutoCompleteList[90]=(Command="STARTMOVIECAPTURE",Desc="STARTMOVIECAPTURE") + ManualAutoCompleteList[91]=(Command="STOPMOVIECAPTURE",Desc="STOPMOVIECAPTURE") + ManualAutoCompleteList[92]=(Command="DoMemLeakChecking 30",Desc="Sets a timer to do a MemLeakCheck every N seconds") + ManualAutoCompleteList[93]=(Command="StopMemLeakChecking",Desc="Stops the periodic MemLeakCheck that was started via DoMemLeakChecking") + ManualAutoCompleteList[94]=(Command="TOGGLEHAVOKVISUALDEBUG",Desc="Enables havok visual debugger") + OnReceivedNativeInputKey=InputKey + OnReceivedNativeInputChar=InputChar +} \ No newline at end of file diff --git a/exported/Engine/Classes/Controller.uc b/exported/Engine/Classes/Controller.uc new file mode 100755 index 00000000..0ad34ca9 --- /dev/null +++ b/exported/Engine/Classes/Controller.uc @@ -0,0 +1,1197 @@ +class Controller extends Actor + abstract + native(Controller) + nativereplication + notplaceable + hidecategories(Navigation) + implements(Interface_NavigationHandle); + +const LATENT_MOVETOWARD = 503; + +enum EStunType +{ + STUN_TYPE_NONE, // 0 + STUN_TYPE_PREMATCH, // 1 + STUN_TYPE_NOPOSTURE, // 2 + STUN_TYPE_MOUNT, // 3 + STUN_TYPE_STASIS, // 4 + STUN_TYPE_DISORIENT, // 5 + STUN_TYPE_NORMAL, // 6 + STUN_TYPE_TAUNT, // 7 + STUN_TYPE_MESMERIZED, // 8 + STUN_TYPE_FEARED, // 9 + STUN_TYPE_PANICKED, // 10 + STUN_TYPE_MAX // 11 +}; + +struct native VisiblePortalInfo +{ + var Actor Source; + var Actor Destination; + + structdefaultproperties + { + Source=none + Destination=none + } +}; + +var private native const noexport Pointer VfTable_IInterface_NavigationHandle; +var repnotify editinline Pawn Pawn; +var repnotify editinline PlayerReplicationInfo PlayerReplicationInfo; +var const int PlayerNum; +var private const Controller NextController; +var bool bIsPlayer; +var bool bGodMode; +var bool bSoaking; +var bool bSlowerZAcquire; +var bool bNotifyPostLanded; +var bool bNotifyApex; +var bool bOverrideSearchStart; +var bool bAdvancedTactics; +var bool bCanDoSpecial; +var bool bAdjusting; +var bool bPreparingMove; +var bool bForceStrafe; +var const bool bLOSflag; +var bool bSkipExtraLOSChecks; +var bool bNotifyFallingHitWall; +var bool bEarlyOutOfSighTestsForSameType; +var bool bPreciseDestination; +var bool bSeeFriendly; +var bool bUsingPathLanes; +var input byte bFire; +var input byte bAltFire; +var Controller.EStunType m_eCurrentStunType; +var float MinHitWall; +var Class NavigationHandleClass; +var editinline NavigationHandle NavigationHandle; +var Vector OverrideSearchStart; +var float MoveTimer; +var Actor MoveTarget; +var BasedPosition DestinationPosition; +var BasedPosition FocalPosition; +var Actor Focus; +var Actor GoalList[4]; +var BasedPosition AdjustPosition; +var NavigationPoint StartSpot; +var array RouteCache; +var ReachSpec CurrentPath; +var ReachSpec NextRoutePath; +var Vector CurrentPathDir; +var Actor RouteGoal; +var float RouteDist; +var float LastRouteFind; +var InterpActor PendingMover; +var Actor FailedMoveTarget; +var int MoveFailureCount; +var float GroundPitchTime; +var Pawn ShotTarget; +var const Actor LastFailedReach; +var const float FailedReachTime; +var const Vector FailedReachLocation; +var float SightCounter; +var float SightCounterInterval; +var float InUseNodeCostMultiplier; +var int HighJumpNodeCostModifier; +var float MaxMoveTowardPawnTargetTime; +var Pawn Enemy; +var array VisiblePortals; +var float LaneOffset; +var const Rotator OldBasedRotation; +var Vector NavMeshPath_SearchExtent_Modifier; +var float NavMeshPath_SearchHierachicalMinDistance; + +replication +{ + // Pos:0x000 + if(bNetDirty && int(Role) == int(ROLE_Authority)) + Pawn, PlayerReplicationInfo; +} + +// Export UController::execIsLocalPlayerController(FFrame&, void* const) +native function bool IsLocalPlayerController(); + +// Export UController::execIsLocalController(FFrame&, void* const) +native function bool IsLocalController(); + +// Export UController::execRouteCache_Empty(FFrame&, void* const) +native function RouteCache_Empty(); + +// Export UController::execRouteCache_AddItem(FFrame&, void* const) +native function RouteCache_AddItem(NavigationPoint Nav); + +// Export UController::execRouteCache_InsertItem(FFrame&, void* const) +native function RouteCache_InsertItem(NavigationPoint Nav, optional int Idx = 0); + +// Export UController::execRouteCache_RemoveItem(FFrame&, void* const) +native function RouteCache_RemoveItem(NavigationPoint Nav); + +// Export UController::execRouteCache_RemoveIndex(FFrame&, void* const) +native function RouteCache_RemoveIndex(int InIndex, optional int Count = 1); + +// Export UController::execSetFocalPoint(FFrame&, void* const) +native final function SetFocalPoint(Vector FP, optional bool bOffsetFromBase); + +// Export UController::execGetFocalPoint(FFrame&, void* const) +native final function Vector GetFocalPoint(); + +// Export UController::execSetDestinationPosition(FFrame&, void* const) +native final function SetDestinationPosition(Vector Dest, optional bool bOffsetFromBase); + +// Export UController::execGetDestinationPosition(FFrame&, void* const) +native final function Vector GetDestinationPosition(); + +// Export UController::execSetAdjustLocation(FFrame&, void* const) +native final function SetAdjustLocation(Vector NewLoc, bool bAdjust, optional bool bOffsetFromBase); + +// Export UController::execGetAdjustLocation(FFrame&, void* const) +native final function Vector GetAdjustLocation(); + +event NotifyPathChanged() +{ + //return; +} + +simulated event BeginAnimControl(InterpGroup InInterpGroup) +{ + Pawn.BeginAnimControl(InInterpGroup); + //return; +} + +simulated event SetAnimPosition(name SlotName, int ChannelIndex, name InAnimSeqName, float InPosition, bool bFireNotifies, bool bLooping, bool bEnableRootMotion) +{ + Pawn.SetAnimPosition(SlotName, ChannelIndex, InAnimSeqName, InPosition, bFireNotifies, bLooping, bEnableRootMotion); + //return; +} + +simulated event FinishAnimControl(InterpGroup InInterpGroup) +{ + Pawn.FinishAnimControl(InInterpGroup); + //return; +} + +event bool PlayActorFaceFXAnim(FaceFXAnimSet AnimSet, string GroupName, string SeqName, SoundCue SoundCueToPlay, AkEvent AkEventToPlay) +{ + return Pawn.PlayActorFaceFXAnim(AnimSet, GroupName, SeqName, SoundCueToPlay, AkEventToPlay); + //return ReturnValue; +} + +event StopActorFaceFXAnim() +{ + Pawn.StopActorFaceFXAnim(); + //return; +} + +event SetMorphWeight(name MorphNodeName, float MorphWeight) +{ + Pawn.SetMorphWeight(MorphNodeName, MorphWeight); + //return; +} + +event SetSkelControlScale(name SkelControlName, float Scale) +{ + Pawn.SetSkelControlScale(SkelControlName, Scale); + //return; +} + +event PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x65 + if(!bDeleteMe && int(WorldInfo.NetMode) != int(NM_Client)) + { + // End:0x5B + if(bIsPlayer) + { + InitPlayerReplicationInfo(); + } + InitNavigationHandle(); + } + SightCounter = SightCounterInterval * FRand(); + //return; +} + +function Reset() +{ + super.Reset(); + Enemy = none; + StartSpot = none; + bAdjusting = false; + bPreparingMove = false; + MoveTimer = -1.0000000; + MoveTarget = none; + CurrentPath = none; + RouteGoal = none; + //return; +} + +reliable client simulated function ClientSetLocation(Vector NewLocation, Rotator NewRotation) +{ + SetRotation(NewRotation); + // End:0x1A8 + if(Pawn != none) + { + // End:0x148 + if((Rotation.Pitch > Pawn.MaxPitchLimit) && Rotation.Pitch < (65536 - Pawn.MaxPitchLimit)) + { + // End:0x106 + if(Rotation.Pitch < 32768) + { + NewRotation.Pitch = Pawn.MaxPitchLimit; + } + else + { + NewRotation.Pitch = 65536 - Pawn.MaxPitchLimit; + } + } + NewRotation.Roll = 0; + Pawn.SetRotation(NewRotation); + Pawn.SetLocation(NewLocation); + } + //return; +} + +reliable client simulated function ClientSetRotation(Rotator NewRotation, optional bool bResetCamera) +{ + SetRotation(NewRotation); + // End:0x79 + if(Pawn != none) + { + NewRotation.Pitch = 0; + NewRotation.Roll = 0; + Pawn.SetRotation(NewRotation); + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x49 + if(VarName == 'PlayerReplicationInfo') + { + // End:0x46 + if(PlayerReplicationInfo != none) + { + PlayerReplicationInfo.ClientInitialize(self); + } + } + else + { + super.ReplicatedEvent(VarName); + } + //return; +} + +function OnPossess(SeqAct_Possess inAction) +{ + local Pawn OldPawn; + local Vehicle V; + + V = Vehicle(Pawn); + // End:0x6F + if(inAction.bTryToLeaveVehicle && V != none) + { + V.DriverLeave(true); + } + // End:0x1A0 + if(inAction.PawnToPossess != none) + { + V = Vehicle(inAction.PawnToPossess); + // End:0x10F + if((Pawn != none) && V != none) + { + V.TryToDrive(Pawn); + } + else + { + OldPawn = Pawn; + UnPossess(); + Possess(inAction.PawnToPossess, false); + // End:0x1A0 + if(inAction.bKillOldPawn && OldPawn != none) + { + OldPawn.Destroy(); + } + } + } + //return; +} + +event Possess(Pawn inPawn, bool bVehicleTransition) +{ + // End:0x58 + if(inPawn.Controller != none) + { + inPawn.Controller.UnPossess(); + } + inPawn.PossessedBy(self, bVehicleTransition); + Pawn = inPawn; + SetFocalPoint(Pawn.Location + (float(512) * Vector(Pawn.Rotation)), true); + Restart(bVehicleTransition); + // End:0x12C + if(Pawn.Weapon == none) + { + ClientSwitchToBestWeapon(); + } + //return; +} + +event UnPossess() +{ + // End:0x39 + if(Pawn != none) + { + Pawn.UnPossessed(); + Pawn = none; + } + //return; +} + +function PawnDied(Pawn inPawn) +{ + local int Idx; + + // End:0x19 + if(inPawn != Pawn) + { + return; + } + TriggerEventClass(Class'Engine.SeqEvent_Death', self); + Idx = 0; + J0x3B: + + // End:0xA4 [Loop If] + if(Idx < LatentActions.Length) + { + // End:0x96 + if(LatentActions[Idx] != none) + { + LatentActions[Idx].AbortFor(self); + } + Idx++; + // [Loop Continue] + goto J0x3B; + } + LatentActions.Length = 0; + // End:0xFF + if(Pawn != none) + { + SetLocation(Pawn.Location); + Pawn.UnPossessed(); + } + Pawn = none; + // End:0x137 + if(bIsPlayer) + { + // End:0x134 + if(!GamePlayEndedState()) + { + GotoState('Dead'); + } + } + else + { + Destroy(); + } + //return; +} + +function bool GamePlayEndedState() +{ + return false; + //return ReturnValue; +} + +event NotifyPostLanded() +{ + //return; +} + +event Destroyed() +{ + // End:0x114 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x7C + if(bIsPlayer && WorldInfo.Game != none) + { + WorldInfo.Game.Logout(self); + } + // End:0x114 + if(PlayerReplicationInfo != none) + { + // End:0x10A + if(!PlayerReplicationInfo.bOnlySpectator && PlayerReplicationInfo.Team != none) + { + PlayerReplicationInfo.Team.RemoveFromTeam(self); + } + CleanupPRI(); + } + } + super.Destroyed(); + //return; +} + +function CleanupPRI() +{ + PlayerReplicationInfo.Destroy(); + PlayerReplicationInfo = none; + //return; +} + +function Restart(bool bVehicleTransition) +{ + Pawn.Restart(); + // End:0x39 + if(!bVehicleTransition) + { + Enemy = none; + } + // End:0xA3 + if((bVehicleTransition == false) && Pawn.InvManager != none) + { + Pawn.InvManager.UpdateController(); + } + //return; +} + +// Export UController::execBeyondFogDistance(FFrame&, void* const) +native final function bool BeyondFogDistance(Vector ViewPoint, Vector OtherPoint); + +function EnemyJustTeleported() +{ + LineOfSightTo(Enemy); + //return; +} + +function NotifyTakeHit(Controller InstigatedBy, Vector HitLocation, int Damage, Class DamageType, Vector Momentum) +{ + //return; +} + +function InitPlayerReplicationInfo() +{ + PlayerReplicationInfo = Spawn(WorldInfo.Game.PlayerReplicationInfoClass, self,, vect(0.0000000, 0.0000000, 0.0000000), rot(0, 0, 0)); + // End:0xC7 + if(PlayerReplicationInfo.PlayerName == "") + { + PlayerReplicationInfo.PlayerName = Class'Engine.GameInfo'.default.DefaultPlayerName; + } + PlayerReplicationInfo.SetBotRankId(((Pawn != none) ? Pawn.BotRankId : BotRankId)); + //return; +} + +event CopyPropertiesTo(Controller C) +{ + //return; +} + +// Export UController::execGetTeamNum(FFrame&, void* const) +native simulated function byte GetTeamNum(); + +reliable server function ServerRestartPlayer() +{ + // End:0x44 + if((int(WorldInfo.NetMode) != int(NM_Client)) && Pawn != none) + { + ServerGivePawn(); + } + //return; +} + +function ServerGivePawn() +{ + //return; +} + +function SetCharacter(string inCharacter) +{ + //return; +} + +function GameHasEnded(optional Actor EndGameFocus, optional bool bIsWinner) +{ + GotoState('RoundEnded'); + //return; +} + +function NotifyKilled(Controller Killer, Controller Killed, Pawn KilledPawn, Class damageTyp) +{ + // End:0x43 + if(Pawn != none) + { + Pawn.TriggerEventClass(Class'Engine.SeqEvent_SeeDeath', KilledPawn); + } + // End:0x65 + if(Enemy == KilledPawn) + { + Enemy = none; + } + //return; +} + +function NotifyProjLanded(Projectile Proj) +{ + // End:0x54 + if((Proj != none) && Pawn != none) + { + Pawn.TriggerEventClass(Class'Engine.SeqEvent_ProjectileLanded', Proj); + } + //return; +} + +function WarnProjExplode(Projectile Proj) +{ + //return; +} + +event float RatePickup(Actor PickupHolder, Class inPickup) +{ + //return ReturnValue; +} + +function bool FireWeaponAt(Actor inActor) +{ + //return ReturnValue; +} + +event StopFiring() +{ + bFire = 0; + // End:0x3A + if(Pawn != none) + { + Pawn.StopFiring(); + } + //return; +} + +function RoundHasEnded(optional Actor EndRoundFocus) +{ + GotoState('RoundEnded'); + //return; +} + +function HandlePickup(Inventory Inv) +{ + //return; +} + +function Rotator GetAdjustedAimFor(Weapon W, Vector StartFireLoc) +{ + // End:0x39 + if(Pawn != none) + { + return Pawn.GetBaseAimRotation(W); + } + return Rotation; + //return ReturnValue; +} + +function InstantWarnTarget(Actor InTarget, Weapon FiredWeapon, Vector FireDir) +{ + local Pawn P; + + P = Pawn(InTarget); + // End:0x9C + if((P != none) && P.Controller != none) + { + P.Controller.ReceiveWarning(Pawn, -1.0000000, FireDir); + } + //return; +} + +function ReceiveWarning(Pawn shooter, float projSpeed, Vector FireDir) +{ + //return; +} + +function ReceiveProjectileWarning(Projectile Proj) +{ + //return; +} + +exec function SwitchToBestWeapon(optional bool bForceNewWeapon) +{ + // End:0x38 + if((Pawn == none) || Pawn.InvManager == none) + { + return; + } + Pawn.InvManager.SwitchToBestWeapon(bForceNewWeapon); + //return; +} + +reliable client simulated function ClientSwitchToBestWeapon(optional bool bForceNewWeapon) +{ + SwitchToBestWeapon(bForceNewWeapon); + //return; +} + +function NotifyChangedWeapon(Weapon PrevWeapon, Weapon NewWeapon) +{ + //return; +} + +// Export UController::execLineOfSightTo(FFrame&, void* const) +native(514) final function bool LineOfSightTo(Actor Other, optional Vector chkLocation, optional bool bTryAlternateTargetLoc); + +// Export UController::execCanSee(FFrame&, void* const) +native(533) final function bool CanSee(Pawn Other); + +// Export UController::execCanSeeByPoints(FFrame&, void* const) +native(537) final function bool CanSeeByPoints(Vector ViewLocation, Vector TestLocation, Rotator ViewRotation); + +// Export UController::execPickTarget(FFrame&, void* const) +native(531) final function Pawn PickTarget(Class TargetClass, out float bestAim, out float bestDist, Vector FireDir, Vector projStart, float MaxRange); + +event HearNoise(float Loudness, Actor NoiseMaker, optional name NoiseType) +{ + //return; +} + +event SeePlayer(Pawn Seen) +{ + //return; +} + +event SeeMonster(Pawn Seen) +{ + //return; +} + +event EnemyNotVisible() +{ + //return; +} + +// Export UController::execMoveTo(FFrame&, void* const) +native(500) final latent function MoveTo(Vector NewDestination, optional Actor ViewFocus, optional float DestinationOffset, optional bool bShouldWalk = ((Pawn != none) ? Pawn.bIsWalking : false)); + +// Export UController::execMoveToDirectNonPathPos(FFrame&, void* const) +native final latent function MoveToDirectNonPathPos(Vector NewDestination, optional Actor ViewFocus, optional float DestinationOffset, optional bool bShouldWalk = ((Pawn != none) ? Pawn.bIsWalking : false)); + +// Export UController::execMoveToward(FFrame&, void* const) +native(502) final latent function MoveToward(Actor NewTarget, optional Actor ViewFocus, optional float DestinationOffset, optional bool bUseStrafing, optional bool bShouldWalk = ((Pawn != none) ? Pawn.bIsWalking : false)); + +event SetupSpecialPathAbilities() +{ + //return; +} + +// Export UController::execFinishRotation(FFrame&, void* const) +native(508) final latent function FinishRotation(); + +// Export UController::execFindPathTo(FFrame&, void* const) +native(518) final function Actor FindPathTo(Vector aPoint, optional int MaxPathLength, optional bool bReturnPartial); + +// Export UController::execFindPathToward(FFrame&, void* const) +native(517) final function Actor FindPathToward(Actor anActor, optional bool bWeightDetours, optional int MaxPathLength, optional bool bReturnPartial); + +// Export UController::execFindPathTowardNearest(FFrame&, void* const) +native final function Actor FindPathTowardNearest(Class GoalClass, optional bool bWeightDetours, optional int MaxPathLength, optional bool bReturnPartial); + +// Export UController::execFindRandomDest(FFrame&, void* const) +native(525) final function NavigationPoint FindRandomDest(); + +// Export UController::execFindPathToIntercept(FFrame&, void* const) +native final function Actor FindPathToIntercept(Pawn P, Actor InRouteGoal, optional bool bWeightDetours, optional int MaxPathLength, optional bool bReturnPartial); + +// Export UController::execPointReachable(FFrame&, void* const) +native(521) final function bool PointReachable(Vector aPoint); + +// Export UController::execActorReachable(FFrame&, void* const) +native(520) final function bool ActorReachable(Actor anActor); + +event MoveUnreachable(Vector AttemptedDest, Actor AttemptedTarget) +{ + //return; +} + +// Export UController::execPickWallAdjust(FFrame&, void* const) +native(526) final function bool PickWallAdjust(Vector HitNormal); + +// Export UController::execWaitForLanding(FFrame&, void* const) +native(527) final latent function WaitForLanding(optional float waitDuration); + +event LongFall() +{ + //return; +} + +// Export UController::execEndClimbLadder(FFrame&, void* const) +native function EndClimbLadder(); + +event MayFall(bool bFloor, Vector FloorNormal) +{ + //return; +} + +event bool AllowDetourTo(NavigationPoint N) +{ + return true; + //return ReturnValue; +} + +function WaitForMover(InterpActor M) +{ + PendingMover = M; + M.bMonitorMover = true; + bPreparingMove = true; + Pawn.Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + //return; +} + +event bool MoverFinished() +{ + // End:0x90 + if(((Pawn == none) || PendingMover.MyMarker == none) || PendingMover.MyMarker.ProceedWithMove(Pawn)) + { + PendingMover = none; + bPreparingMove = false; + return true; + } + return false; + //return ReturnValue; +} + +function UnderLift(LiftCenter Lift) +{ + //return; +} + +event bool HandlePathObstruction(Actor BlockedBy) +{ + //return ReturnValue; +} + +// Export UController::execGetPlayerViewPoint(FFrame&, void* const) +native function GetPlayerViewPoint(out Vector out_Location, out Rotator out_Rotation); + +simulated event GetActorEyesViewPoint(out Vector out_Location, out Rotator out_Rotation) +{ + // End:0x43 + if(Pawn != none) + { + Pawn.GetActorEyesViewPoint(out_Location, out_Rotation); + } + else + { + out_Location = Location; + out_Rotation = Rotation; + } + //return; +} + +simulated function bool IsAimingAt(Actor ATarget, float Epsilon) +{ + local Vector Loc; + local Rotator Rot; + + GetPlayerViewPoint(Loc, Rot); + return (Normal(ATarget.Location - Loc) Dot Vector(Rot)) >= Epsilon; + //return ReturnValue; +} + +simulated function bool LandingShake() +{ + return false; + //return ReturnValue; +} + +event NotifyPhysicsVolumeChange(PhysicsVolume NewVolume) +{ + //return; +} + +event bool NotifyHeadVolumeChange(PhysicsVolume NewVolume) +{ + //return ReturnValue; +} + +event bool NotifyLanded(Vector HitNormal, Actor FloorActor) +{ + //return ReturnValue; +} + +event bool NotifyHitWall(Vector HitNormal, Actor Wall) +{ + //return ReturnValue; +} + +event NotifyFallingHitWall(Vector HitNormal, Actor Wall) +{ + //return; +} + +event bool NotifyBump(Actor Other, Vector HitNormal) +{ + //return ReturnValue; +} + +event NotifyJumpApex() +{ + //return; +} + +event NotifyMissedJump() +{ + //return; +} + +event ReachedPreciseDestination() +{ + //return; +} + +// Export UController::execInLatentExecution(FFrame&, void* const) +native final function bool InLatentExecution(int LatentActionNumber); + +// Export UController::execStopLatentExecution(FFrame&, void* const) +native final function StopLatentExecution(); + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + local Canvas Canvas; + + Canvas = HUD.Canvas; + // End:0x12A + if(Pawn == none) + { + // End:0x87 + if(PlayerReplicationInfo == none) + { + Canvas.DrawText("NO PLAYERREPLICATIONINFO", false); + } + else + { + PlayerReplicationInfo.DisplayDebug(HUD, out_YL, out_YPos); + } + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + super.DisplayDebug(HUD, out_YL, out_YPos); + return; + } + Canvas.SetDrawColor(255, 0, 0); + Canvas.DrawText((("CONTROLLER " $ (GetItemName(string(self)))) $ " Pawn ") $ (GetItemName(string(Pawn)))); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText(" bPreciseDestination:" @ string(bPreciseDestination)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + // End:0x3A9 + if(HUD.ShouldDisplayDebug('AI')) + { + // End:0x320 + if(Enemy != none) + { + Canvas.DrawText(((" STATE: " $ string(GetStateName())) $ " Enemy ") $ Enemy.GetHumanReadableName(), false); + } + else + { + Canvas.DrawText((" STATE: " $ string(GetStateName())) $ " NO Enemy ", false); + } + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + //return; +} + +simulated function string GetHumanReadableName() +{ + // End:0x31 + if(PlayerReplicationInfo != none) + { + return PlayerReplicationInfo.PlayerName; + } + else + { + return GetItemName(string(self)); + } + //return ReturnValue; +} + +function bool IsDead() +{ + //return ReturnValue; +} + +simulated function OnTeleport(SeqAct_Teleport Action) +{ + // End:0x5C + if(Action != none) + { + // End:0x49 + if(Pawn != none) + { + Pawn.OnTeleport(Action); + } + else + { + super.OnTeleport(Action); + } + } + //return; +} + +function OnAttachToActor(SeqAct_AttachToActor Action) +{ + // End:0x3A + if(Pawn != none) + { + Pawn.OnAttachToActor(Action); + } + else + { + super.OnAttachToActor(Action); + } + //return; +} + +function OnToggleGodMode(SeqAct_ToggleGodMode inAction) +{ + // End:0x46 + if(inAction.InputLinks[0].bHasImpulse) + { + bGodMode = true; + } + else + { + // End:0x8C + if(inAction.InputLinks[1].bHasImpulse) + { + bGodMode = false; + } + else + { + bGodMode = !bGodMode; + } + } + //return; +} + +simulated function OnSetPhysics(SeqAct_SetPhysics Action) +{ + // End:0x3A + if(Pawn != none) + { + Pawn.OnSetPhysics(Action); + } + else + { + super.OnSetPhysics(Action); + } + //return; +} + +simulated function OnSetVelocity(SeqAct_SetVelocity Action) +{ + // End:0x3A + if(Pawn != none) + { + Pawn.OnSetVelocity(Action); + } + else + { + super.OnSetVelocity(Action); + } + //return; +} + +simulated function NotifyCoverDisabled(CoverLink Link, int SlotIdx, optional bool bAdjacentIdx) +{ + //return; +} + +simulated event NotifyCoverAdjusted() +{ + //return; +} + +simulated function bool NotifyCoverClaimViolation(Controller NewClaim, CoverLink Link, int SlotIdx) +{ + //return ReturnValue; +} + +simulated function OnModifyHealth(SeqAct_ModifyHealth Action) +{ + // End:0x37 + if(Pawn != none) + { + Pawn.OnModifyHealth(Action); + } + //return; +} + +function NotifyAddInventory(Inventory NewItem) +{ + //return; +} + +simulated function OnToggleHidden(SeqAct_ToggleHidden Action) +{ + // End:0x37 + if(Pawn != none) + { + Pawn.OnToggleHidden(Action); + } + //return; +} + +// Export UController::execIsSpectating(FFrame&, void* const) +native function bool IsSpectating(); + +event bool IsInCombat(optional bool bForceCheck) +{ + //return ReturnValue; +} + +event CurrentLevelUnloaded() +{ + //return; +} + +function SendMessage(PlayerReplicationInfo Recipient, name MessageType, float Wait, optional Class DamageType) +{ + //return; +} + +function ReadyForLift() +{ + //return; +} + +simulated function Stun(bool bStunController, optional Controller.EStunType eType = 0) +{ + //return; +} + +simulated function InitNavigationHandle() +{ + // End:0x27 + if(NavigationHandleClass != none) + { + NavigationHandle = new (self) NavigationHandleClass; + } + //return; +} + +simulated event InterpolationStarted(SeqAct_Interp InterpAction, InterpGroupInst GroupInst) +{ + // End:0x40 + if(Pawn != none) + { + Pawn.InterpolationStarted(InterpAction, GroupInst); + } + super.InterpolationStarted(InterpAction, GroupInst); + //return; +} + +simulated event InterpolationFinished(SeqAct_Interp InterpAction) +{ + // End:0x37 + if(Pawn != none) + { + Pawn.InterpolationFinished(InterpAction); + } + super.InterpolationFinished(InterpAction); + //return; +} + +event bool GeneratePathToActor(Actor Goal, optional float WithinDistance, optional bool bAllowPartialPath) +{ + //return ReturnValue; +} + +event bool GeneratePathToLocation(Vector Goal, optional float WithinDistance, optional bool bAllowPartialPath) +{ + //return ReturnValue; +} + +state Dead +{ + ignores KilledBy, HearNoise, SeePlayer; + + function bool IsDead() + { + return true; + //return ReturnValue; + } + + function PawnDied(Pawn P) + { + // End:0x33 + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + ScriptTrace(); + } + //return; + } + + reliable server function ServerRestartPlayer() + { + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + return; + } + // End:0x44 + if(Pawn != none) + { + UnPossess(); + } + WorldInfo.Game.RestartPlayer(self); + //return; + } + stop; +} + +state RoundEnded +{ + ignores ReceiveWarning, TakeDamage, Falling, NotifyHeadVolumeChange, NotifyPhysicsVolumeChange, HitWall, + NotifyBump, KilledBy, HearNoise, SeePlayer; + + function bool GamePlayEndedState() + { + return true; + //return ReturnValue; + } + + event BeginState(name PreviousStateName) + { + // End:0x71 + if(Pawn != none) + { + Pawn.TurnOff(); + StopFiring(); + // End:0x71 + if(!bIsPlayer) + { + Pawn.UnPossessed(); + Pawn = none; + } + } + // End:0x83 + if(!bIsPlayer) + { + Destroy(); + } + //return; + } + stop; +} + +defaultproperties +{ + bSlowerZAcquire=true + MinHitWall=-1.0000000 + NavigationHandleClass=Class'Engine.NavigationHandle' + SightCounterInterval=0.2000000 + MaxMoveTowardPawnTargetTime=1.2000000 + bHidden=true + bOnlyRelevantToOwner=true + bHiddenEd=true + bReplicateBotRankId=true + RotationRate=(Pitch=30000,Yaw=30000,Roll=2048) +} \ No newline at end of file diff --git a/exported/Engine/Classes/CoverGroup.uc b/exported/Engine/Classes/CoverGroup.uc new file mode 100755 index 00000000..817d8d6d --- /dev/null +++ b/exported/Engine/Classes/CoverGroup.uc @@ -0,0 +1,55 @@ +class CoverGroup extends Info + native + placeable + hidecategories(Navigation,Movement,Collision) + classgroup(Cover); + +enum ECoverGroupFillAction +{ + CGFA_Overwrite, // 0 + CGFA_Add, // 1 + CGFA_Remove, // 2 + CGFA_Clear, // 3 + CGFA_Cylinder, // 4 + CGFA_MAX // 5 +}; + +var() array CoverLinkRefs; +var() float AutoSelectRadius; +var() float AutoSelectHeight; + +// Export UCoverGroup::execEnableGroup(FFrame&, void* const) +native function EnableGroup(); + +// Export UCoverGroup::execDisableGroup(FFrame&, void* const) +native function DisableGroup(); + +// Export UCoverGroup::execToggleGroup(FFrame&, void* const) +native function ToggleGroup(); + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x41 + if(Action.InputLinks[0].bHasImpulse) + { + EnableGroup(); + } + // End:0x82 + if(Action.InputLinks[1].bHasImpulse) + { + DisableGroup(); + } + // End:0xC4 + if(Action.InputLinks[2].bHasImpulse) + { + ToggleGroup(); + } + //return; +} + +defaultproperties +{ + Components[0]=none + Components[1]=none + bStatic=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/CoverGroupRenderingComponent.uc b/exported/Engine/Classes/CoverGroupRenderingComponent.uc new file mode 100755 index 00000000..163d6389 --- /dev/null +++ b/exported/Engine/Classes/CoverGroupRenderingComponent.uc @@ -0,0 +1,8 @@ +class CoverGroupRenderingComponent extends PrimitiveComponent + native(AI); + +defaultproperties +{ + ReplacementPrimitive=none + HiddenGame=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/CoverLink.uc b/exported/Engine/Classes/CoverLink.uc new file mode 100755 index 00000000..32cd93d2 --- /dev/null +++ b/exported/Engine/Classes/CoverLink.uc @@ -0,0 +1,887 @@ +class CoverLink extends NavigationPoint + native + config(Game) + placeable + hidecategories(Navigation,Lighting,LightColor,Force) + classgroup(Cover); + +const COVERLINK_ExposureDot = 0.4f; +const COVERLINK_EdgeCheckDot = 0.25f; +const COVERLINK_EdgeExposureDot = 0.85f; +const COVERLINK_DangerDist = 1536.f; + +enum ECoverAction +{ + CA_Default, // 0 + CA_BlindLeft, // 1 + CA_BlindRight, // 2 + CA_LeanLeft, // 3 + CA_LeanRight, // 4 + CA_PopUp, // 5 + CA_BlindUp, // 6 + CA_PeekLeft, // 7 + CA_PeekRight, // 8 + CA_PeekUp, // 9 + CA_MAX // 10 +}; + +enum ECoverDirection +{ + CD_Default, // 0 + CD_Left, // 1 + CD_Right, // 2 + CD_Up, // 3 + CD_MAX // 4 +}; + +enum ECoverType +{ + CT_None, // 0 + CT_Standing, // 1 + CT_MidLevel, // 2 + CT_MAX // 3 +}; + +enum ECoverLocationDescription +{ + CoverDesc_None, // 0 + CoverDesc_InWindow, // 1 + CoverDesc_InDoorway, // 2 + CoverDesc_BehindCar, // 3 + CoverDesc_BehindTruck, // 4 + CoverDesc_OnTruck, // 5 + CoverDesc_BehindBarrier, // 6 + CoverDesc_BehindColumn, // 7 + CoverDesc_BehindCrate, // 8 + CoverDesc_BehindWall, // 9 + CoverDesc_BehindStatue, // 10 + CoverDesc_BehindSandbags, // 11 + CoverDesc_MAX // 12 +}; + +enum EFireLinkID +{ + FLI_FireLink, // 0 + FLI_RejectedFireLink, // 1 + FLI_MAX // 2 +}; + +struct native atomicwhencooked immutablewhencooked CoverReference extends ActorReference +{ + var() int SlotIdx; +}; + +struct native atomicwhencooked immutablewhencooked CoverInfo +{ + var() editconst CoverLink Link; + var() editconst int SlotIdx; + + structdefaultproperties + { + Link=none + SlotIdx=0 + } +}; + +struct native atomicwhencooked immutablewhencooked CovPosInfo +{ + var CoverLink Link; + var int LtSlotIdx; + var int RtSlotIdx; + var float LtToRtPct; + var Vector Location; + var Vector Normal; + var Vector Tangent; + + structdefaultproperties + { + Link=none + LtSlotIdx=-1 + RtSlotIdx=-1 + LtToRtPct=0.0000000 + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Normal=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Tangent=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct native atomicwhencooked immutablewhencooked FireLinkItem +{ + var CoverLink.ECoverType SrcType; + var CoverLink.ECoverAction SrcAction; + var CoverLink.ECoverType DestType; + var CoverLink.ECoverAction DestAction; + + structdefaultproperties + { + SrcType=ECoverType.CT_None + SrcAction=ECoverAction.CA_Default + DestType=ECoverType.CT_None + DestAction=ECoverAction.CA_Default + } +}; + +struct native atomicwhencooked immutablewhencooked FireLink +{ + var array Interactions; + var private const int PackedProperties_CoverPairRefAndDynamicInfo; + var private bool bFallbackLink; + var private bool bDynamicIndexInited; + + structdefaultproperties + { + Interactions=none + PackedProperties_CoverPairRefAndDynamicInfo=0 + bFallbackLink=false + bDynamicIndexInited=false + } +}; + +struct native atomicwhencooked immutablewhencooked DynamicLinkInfo +{ + var Vector LastTargetLocation; + var Vector LastSrcLocation; + + structdefaultproperties + { + LastTargetLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + LastSrcLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct native atomicwhencooked immutablewhencooked ExposedLink +{ + var() const editconst CoverReference TargetActor; + var() byte ExposedScale; + + structdefaultproperties + { + TargetActor=(0=/* ERROR: System.Exception */,ExposedScale=0) + ExposedScale=0 + } +}; + +struct native atomicwhencooked immutablewhencooked SlotMoveRef +{ + var() PolyReference Poly; + var() BasedPosition Dest; + var() int Direction; + + structdefaultproperties + { + Poly=(0=/* ERROR: System.Exception */,Dest=(Base=none,Position=(X=0.0000000,Y=0.0000000,Z=0.0000000),CachedBaseLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000),CachedBaseRotation=(Pitch=0,Yaw=0,Roll=0),CachedTransPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000)),Direction=0) + Dest=(Base=none,Position=(X=0.0000000,Y=0.0000000,Z=0.0000000),CachedBaseLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000),CachedBaseRotation=(Pitch=0,Yaw=0,Roll=0),CachedTransPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000)) + Direction=0 + } +}; + +struct native atomicwhencooked immutablewhencooked CoverSlot +{ + var Pawn SlotOwner; + var transient float SlotValidAfterTime; + var() CoverLink.ECoverType ForceCoverType; + var(Auto) editconst CoverLink.ECoverType CoverType; + var() CoverLink.ECoverLocationDescription LocationDescription; + var Vector LocationOffset; + var Rotator RotationOffset; + var array Actions; + var() editconst array FireLinks; + var() editconst transient array RejectedFireLinks; + var private array ExposedCoverPackedProperties; + var private int TurnTargetPackedProperties; + var array SlipRefs; + var(Auto) editconst array OverlapClaimsList; + var(Auto) bool bLeanLeft; + var(Auto) bool bLeanRight; + var(Auto) bool bForceCanPopUp; + var(Auto) editconst bool bCanPopUp; + var(Auto) editconst bool bCanMantle; + var(Auto) editconst bool bCanClimbUp; + var(Auto) bool bForceCanCoverSlip_Left; + var(Auto) bool bForceCanCoverSlip_Right; + var(Auto) editconst bool bCanCoverSlip_Left; + var(Auto) editconst bool bCanCoverSlip_Right; + var(Auto) editconst bool bCanSwatTurn_Left; + var(Auto) editconst bool bCanSwatTurn_Right; + var() bool bEnabled; + var() bool bAllowPopup; + var() bool bAllowMantle; + var() bool bAllowCoverSlip; + var() bool bAllowClimbUp; + var() bool bAllowSwatTurn; + var() bool bForceNoGroundAdjust; + var() bool bPlayerOnly; + var() bool bPreferLeanOverPopup; + var transient bool bDestructible; + var transient bool bSelected; + var() editconst transient bool bFailedToFindSurface; + + structdefaultproperties + { + SlotOwner=none + SlotValidAfterTime=0.0000000 + ForceCoverType=ECoverType.CT_None + CoverType=ECoverType.CT_None + LocationDescription=ECoverLocationDescription.CoverDesc_None + LocationOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000) + RotationOffset=(Pitch=0,Yaw=0,Roll=0) + Actions=none + FireLinks=none + RejectedFireLinks=none + ExposedCoverPackedProperties=none + TurnTargetPackedProperties=-1 + SlipRefs=none + OverlapClaimsList=none + bLeanLeft=false + bLeanRight=false + bForceCanPopUp=false + bCanPopUp=false + bCanMantle=true + bCanClimbUp=false + bForceCanCoverSlip_Left=false + bForceCanCoverSlip_Right=false + bCanCoverSlip_Left=true + bCanCoverSlip_Right=true + bCanSwatTurn_Left=true + bCanSwatTurn_Right=true + bEnabled=true + bAllowPopup=true + bAllowMantle=true + bAllowCoverSlip=true + bAllowClimbUp=false + bAllowSwatTurn=true + bForceNoGroundAdjust=false + bPlayerOnly=false + bPreferLeanOverPopup=false + bDestructible=false + bSelected=false + bFailedToFindSurface=false + } +}; + +var globalconfig bool GLOBAL_bUseSlotMarkers; +var() bool bDisabled; +var() bool bClaimAllSlots; +var() bool bAutoSort; +var() bool bAutoAdjust; +var() bool bCircular; +var() bool bLooped; +var() bool bPlayerOnly; +var bool bDynamicCover; +var() bool bFractureOnTouch; +var(Debug) bool bDebug_FireLinks; +var(Debug) bool bDebug_ExposedLinks; +var(Debug) bool bDebug_CoverGen; +var() bool bDoAutoSlotDensityFixup; +var float LeanTraceDist; +var() editinline array Slots; +var array DynamicLinkInfos; +var array Claims; +var() float InvalidateDistance; +var() float MaxFireLinkDist; +var const Vector CircularOrigin; +var const float CircularRadius; +var const float AlignDist; +var const float AutoCoverSlotInterval; +var const float StandHeight; +var const float MidHeight; +var const Vector StandingLeanOffset; +var const Vector CrouchLeanOffset; +var const Vector PopupOffset; +var const float SlipDist; +var const float TurnDist; +var() float DangerScale; +var const CoverLink NextCoverLink; +var() const CoverLink.ECoverLocationDescription LocationDescription; + +// Export UCoverLink::execGetFireLinkTargetCoverInfo(FFrame&, void* const) +native simulated function bool GetFireLinkTargetCoverInfo(int SlotIdx, int FireLinkIdx, out CoverInfo out_Info, optional CoverLink.EFireLinkID ArrayID); + +// Export UCoverLink::execPackFireLinkInteractionInfo(FFrame&, void* const) +native static simulated function byte PackFireLinkInteractionInfo(CoverLink.ECoverType SrcType, CoverLink.ECoverAction SrcAction, CoverLink.ECoverType DestType, CoverLink.ECoverAction DestAction); + +// Export UCoverLink::execUnPackFireLinkInteractionInfo(FFrame&, void* const) +native static simulated function UnPackFireLinkInteractionInfo(const byte PackedByte, out CoverLink.ECoverType SrcType, out CoverLink.ECoverAction SrcAction, out CoverLink.ECoverType DestType, out CoverLink.ECoverAction DestAction); + +// Export UCoverLink::execGetSlotLocation(FFrame&, void* const) +native final simulated function Vector GetSlotLocation(int SlotIdx, optional bool bForceUseOffset); + +// Export UCoverLink::execGetSlotRotation(FFrame&, void* const) +native final simulated function Rotator GetSlotRotation(int SlotIdx, optional bool bForceUseOffset); + +// Export UCoverLink::execGetSlotViewPoint(FFrame&, void* const) +native final simulated function Vector GetSlotViewPoint(int SlotIdx, optional CoverLink.ECoverType Type, optional CoverLink.ECoverAction Action); + +// Export UCoverLink::execIsExposedTo(FFrame&, void* const) +native final simulated function bool IsExposedTo(int SlotIdx, CoverInfo ChkSlot, out float out_ExposedScale); + +final simulated event SetInvalidUntil(int SlotIdx, float TimeToBecomeValid) +{ + Slots[SlotIdx].SlotValidAfterTime = TimeToBecomeValid; + NotifySlotOwnerCoverDisabled(SlotIdx); + //return; +} + +final simulated event bool Claim(Pawn NewClaim, int SlotIdx) +{ + local int Idx; + local bool bResult, bDoClaim; + local PlayerController PC; + local Pawn PreviousOwner; + + // End:0x11 + if(SlotIdx < 0) + { + return false; + } + bDoClaim = true; + // End:0x11C + if(Slots[SlotIdx].SlotOwner != none) + { + bResult = Slots[SlotIdx].SlotOwner == NewClaim; + bDoClaim = false; + // End:0x11C + if(!bResult) + { + PC = PlayerController(NewClaim.Controller); + // End:0x11C + if(PC != none) + { + PreviousOwner = Slots[SlotIdx].SlotOwner; + bDoClaim = true; + } + } + } + // End:0x2DB + if(bDoClaim) + { + // End:0x1F0 + if(bClaimAllSlots) + { + Idx = 0; + J0x141: + + // End:0x1ED [Loop If] + if(Idx < Slots.Length) + { + // End:0x1DF + if(Slots[Idx].SlotOwner == none) + { + Claims[Claims.Length] = NewClaim; + Slots[Idx].SlotOwner = NewClaim; + bResult = true; + } + Idx++; + // [Loop Continue] + goto J0x141; + } + } + else + { + Claims[Claims.Length] = NewClaim; + Slots[SlotIdx].SlotOwner = NewClaim; + bResult = true; + } + // End:0x2DB + if((PreviousOwner != none) && PreviousOwner.Controller != none) + { + PreviousOwner.Controller.NotifyCoverClaimViolation(NewClaim.Controller, self, SlotIdx); + } + } + return bResult; + //return ReturnValue; +} + +final simulated event bool UnClaim(Pawn OldClaim, int SlotIdx, bool bUnclaimAll) +{ + local int Idx, NumReleased; + local bool bResult; + + // End:0x22 + if(!bUnclaimAll && SlotIdx < 0) + { + return false; + } + // End:0xD6 + if(bUnclaimAll) + { + Idx = 0; + J0x3A: + + // End:0xD3 [Loop If] + if(Idx < Slots.Length) + { + // End:0xC5 + if(Slots[Idx].SlotOwner == OldClaim) + { + Slots[Idx].SlotOwner = none; + NumReleased++; + bResult = true; + } + Idx++; + // [Loop Continue] + goto J0x3A; + } + } + else + { + // End:0x15A + if(!bClaimAllSlots && Slots[SlotIdx].SlotOwner == OldClaim) + { + Slots[SlotIdx].SlotOwner = none; + NumReleased++; + bResult = true; + } + } + J0x15A: + + // End:0x1BE [Loop If] + if(NumReleased > 0) + { + Idx = Claims.Find(OldClaim); + // End:0x19B + if(Idx < 0) + { + // [Explicit Break] + goto J0x1BE; + } + Claims.Remove(Idx, 1); + NumReleased--; + // [Loop Continue] + goto J0x15A; + } + J0x1BE: + + return bResult; + //return ReturnValue; +} + +// Export UCoverLink::execIsValidClaim(FFrame&, void* const) +native final function bool IsValidClaim(Pawn ChkClaim, int SlotIdx, optional bool bSkipTeamCheck, optional bool bSkipOverlapCheck); + +// Export UCoverLink::execIsValidClaimBetween(FFrame&, void* const) +native final function bool IsValidClaimBetween(Pawn ChkClaim, int StartSlotIdx, int EndSlotIdx, optional bool bSkipTeamCheck, optional bool bSkipOverlapCheck); + +final simulated function bool IsStationarySlot(int SlotIdx) +{ + return !bCircular && IsEdgeSlot(SlotIdx, false); + //return ReturnValue; +} + +// Export UCoverLink::execFindSlots(FFrame&, void* const) +native final simulated function bool FindSlots(Vector CheckLocation, float MaxDistance, out int LeftSlotIdx, out int RightSlotIdx); + +// Export UCoverLink::execIsEdgeSlot(FFrame&, void* const) +native final simulated function bool IsEdgeSlot(int SlotIdx, optional bool bIgnoreLeans); + +// Export UCoverLink::execIsLeftEdgeSlot(FFrame&, void* const) +native final simulated function bool IsLeftEdgeSlot(int SlotIdx, bool bIgnoreLeans); + +// Export UCoverLink::execIsRightEdgeSlot(FFrame&, void* const) +native final simulated function bool IsRightEdgeSlot(int SlotIdx, bool bIgnoreLeans); + +// Export UCoverLink::execGetSlotIdxToLeft(FFrame&, void* const) +native final simulated function int GetSlotIdxToLeft(int SlotIdx, optional int Cnt = 1); + +// Export UCoverLink::execGetSlotIdxToRight(FFrame&, void* const) +native final simulated function int GetSlotIdxToRight(int SlotIdx, optional int Cnt = 1); + +final simulated function bool AllowRightTransition(int SlotIdx) +{ + local int NextSlotIdx; + + NextSlotIdx = GetSlotIdxToRight(SlotIdx); + // End:0x55 + if(NextSlotIdx >= 0) + { + return Slots[NextSlotIdx].bEnabled; + } + return false; + //return ReturnValue; +} + +final simulated function bool AllowLeftTransition(int SlotIdx) +{ + local int NextSlotIdx; + + NextSlotIdx = GetSlotIdxToLeft(SlotIdx); + // End:0x55 + if(NextSlotIdx >= 0) + { + return Slots[NextSlotIdx].bEnabled; + } + return false; + //return ReturnValue; +} + +// Export UCoverLink::execGetFireLinkTo(FFrame&, void* const) +native function bool GetFireLinkTo(int SlotIdx, CoverInfo ChkCover, CoverLink.ECoverAction ChkAction, CoverLink.ECoverType ChkType, out int out_FireLinkIdx, out array out_Items); + +// Export UCoverLink::execHasFireLinkTo(FFrame&, void* const) +native function bool HasFireLinkTo(int SlotIdx, CoverInfo ChkCover, optional bool bAllowFallbackLinks); + +// Export UCoverLink::execGetSlotActions(FFrame&, void* const) +native final function GetSlotActions(int SlotIdx, out array Actions); + +simulated event SetDisabled(bool bNewDisabled) +{ + local int SlotIdx; + local CoverReplicator CoverReplicator; + + bDisabled = bNewDisabled; + // End:0x67 + if(bDisabled) + { + SlotIdx = 0; + J0x2D: + + // End:0x67 [Loop If] + if(SlotIdx < Slots.Length) + { + NotifySlotOwnerCoverDisabled(SlotIdx); + SlotIdx++; + // [Loop Continue] + goto J0x2D; + } + } + // End:0xE8 + if(int(Role) == int(ROLE_Authority)) + { + CoverReplicator = WorldInfo.Game.GetCoverReplicator(); + // End:0xE8 + if(CoverReplicator != none) + { + CoverReplicator.NotifyLinkDisabledStateChange(self); + } + } + //return; +} + +simulated event SetSlotEnabled(int SlotIdx, bool bEnable) +{ + Slots[SlotIdx].bEnabled = bEnable; + // End:0x55 + if(!bEnable) + { + NotifySlotOwnerCoverDisabled(SlotIdx); + } + //return; +} + +simulated function NotifySlotOwnerCoverDisabled(int SlotIdx, optional bool bAIOnly) +{ + local int LeftIdx, RightIdx; + + // End:0x129 + if(((Slots[SlotIdx].SlotOwner != none) && Slots[SlotIdx].SlotOwner.Controller != none) && !bAIOnly || PlayerController(Slots[SlotIdx].SlotOwner.Controller) == none) + { + Slots[SlotIdx].SlotOwner.Controller.NotifyCoverDisabled(self, SlotIdx, false); + } + LeftIdx = GetSlotIdxToLeft(SlotIdx); + // End:0x280 + if((((LeftIdx >= 0) && Slots[LeftIdx].SlotOwner != none) && Slots[LeftIdx].SlotOwner.Controller != none) && !bAIOnly || PlayerController(Slots[LeftIdx].SlotOwner.Controller) == none) + { + Slots[LeftIdx].SlotOwner.Controller.NotifyCoverDisabled(self, SlotIdx, true); + } + RightIdx = GetSlotIdxToRight(SlotIdx); + // End:0x3D7 + if((((RightIdx >= 0) && Slots[RightIdx].SlotOwner != none) && Slots[RightIdx].SlotOwner.Controller != none) && !bAIOnly || PlayerController(Slots[RightIdx].SlotOwner.Controller) == none) + { + Slots[RightIdx].SlotOwner.Controller.NotifyCoverDisabled(self, SlotIdx, true); + } + //return; +} + +simulated event SetSlotPlayerOnly(int SlotIdx, bool bInPlayerOnly) +{ + Slots[SlotIdx].bPlayerOnly = bInPlayerOnly; + // End:0x70 + if(Slots[SlotIdx].bPlayerOnly) + { + NotifySlotOwnerCoverDisabled(SlotIdx, true); + } + //return; +} + +function OnModifyCover(SeqAct_ModifyCover Action) +{ + local array SlotIndices; + local int Idx, SlotIdx; + local CoverReplicator CoverReplicator; + + // End:0x50 + if(Action.Slots.Length > 0) + { + SlotIndices = Action.Slots; + } + else + { + Idx = 0; + J0x5B: + + // End:0x9F [Loop If] + if(Idx < Slots.Length) + { + SlotIndices[SlotIndices.Length] = Idx; + Idx++; + // [Loop Continue] + goto J0x5B; + } + } + Idx = 0; + J0xAA: + + // End:0x473 [Loop If] + if(Idx < SlotIndices.Length) + { + SlotIdx = SlotIndices[Idx]; + // End:0x465 + if((SlotIdx >= 0) && SlotIdx < Slots.Length) + { + // End:0x156 + if(Action.InputLinks[0].bHasImpulse) + { + SetSlotEnabled(SlotIdx, true); + } + else + { + // End:0x1A4 + if(Action.InputLinks[1].bHasImpulse) + { + SetSlotEnabled(SlotIdx, false); + } + else + { + // End:0x2B8 + if(Action.InputLinks[2].bHasImpulse) + { + // End:0x2B5 + if((AutoAdjustSlot(SlotIdx, false) && Slots[SlotIdx].SlotOwner != none) && Slots[SlotIdx].SlotOwner.Controller != none) + { + Slots[SlotIdx].SlotOwner.Controller.NotifyCoverAdjusted(); + } + } + else + { + // End:0x465 + if(Action.InputLinks[3].bHasImpulse) + { + // End:0x41E + if(int(Action.ManualCoverType) != int(0)) + { + Slots[SlotIdx].CoverType = Action.ManualCoverType; + // End:0x41E + if((Slots[SlotIdx].SlotOwner != none) && Slots[SlotIdx].SlotOwner.Controller != none) + { + Slots[SlotIdx].SlotOwner.Controller.NotifyCoverAdjusted(); + } + } + Slots[SlotIdx].bPlayerOnly = Action.bManualAdjustPlayersOnly; + } + } + } + } + } + Idx++; + // [Loop Continue] + goto J0xAA; + } + CoverReplicator = WorldInfo.Game.GetCoverReplicator(); + // End:0x669 + if(CoverReplicator != none) + { + // End:0x523 + if(Action.InputLinks[0].bHasImpulse) + { + CoverReplicator.NotifyEnabledSlots(self, SlotIndices); + } + else + { + // End:0x586 + if(Action.InputLinks[1].bHasImpulse) + { + CoverReplicator.NotifyDisabledSlots(self, SlotIndices); + } + else + { + // End:0x5EA + if(Action.InputLinks[2].bHasImpulse) + { + CoverReplicator.NotifyAutoAdjustSlots(self, SlotIndices); + } + else + { + // End:0x669 + if(Action.InputLinks[3].bHasImpulse) + { + CoverReplicator.NotifySetManualCoverTypeForSlots(self, SlotIndices, Action.ManualCoverType); + } + } + } + } + } + //return; +} + +// Export UCoverLink::execAutoAdjustSlot(FFrame&, void* const) +native final function bool AutoAdjustSlot(int SlotIdx, bool bOnlyCheckLeans); + +// Export UCoverLink::execIsEnabled(FFrame&, void* const) +native final function bool IsEnabled(); + +function OnToggle(SeqAct_Toggle inAction) +{ + local CoverReplicator CoverReplicator; + local int SlotIdx; + + super.OnToggle(inAction); + // End:0x59 + if(inAction.InputLinks[0].bHasImpulse) + { + bDisabled = false; + } + else + { + // End:0x9F + if(inAction.InputLinks[1].bHasImpulse) + { + bDisabled = true; + } + else + { + bDisabled = !bDisabled; + } + } + SlotIdx = 0; + J0xC1: + + // End:0x106 [Loop If] + if(SlotIdx < Slots.Length) + { + SetSlotEnabled(SlotIdx, !bDisabled); + ++SlotIdx; + // [Loop Continue] + goto J0xC1; + } + CoverReplicator = WorldInfo.Game.GetCoverReplicator(); + // End:0x173 + if(CoverReplicator != none) + { + CoverReplicator.NotifyLinkDisabledStateChange(self); + } + //return; +} + +function CreateCheckpointRecord(out CheckpointRecord Record) +{ + super.CreateCheckpointRecord(Record); + Record.bDisabled = bDisabled; + //return; +} + +function ApplyCheckpointRecord(const out CheckpointRecord Record) +{ + local CoverReplicator CoverReplicator; + + super.ApplyCheckpointRecord(Record); + bDisabled = Record.bDisabled; + CoverReplicator = WorldInfo.Game.GetCoverReplicator(); + // End:0xA8 + if(CoverReplicator != none) + { + CoverReplicator.NotifyLinkDisabledStateChange(self); + } + //return; +} + +simulated event ShutDown() +{ + super.ShutDown(); + bDisabled = true; + //return; +} + +// Export UCoverLink::execGetSwatTurnTarget(FFrame&, void* const) +native simulated function bool GetSwatTurnTarget(int SlotIdx, int Direction, out CoverInfo out_Info); + +simulated function BreakFracturedMeshes(Vector Origin, float Radius, float RBStrength, Class DamageType) +{ + local FracturedStaticMeshActor FracActor; + local byte bWantPhysChunksAndParticles; + + // End:0x11 + if(!bFractureOnTouch) + { + return; + } + // End:0x11C + foreach CollidingActors(Class'Engine.FracturedStaticMeshActor', FracActor, Radius, Origin, true) + { + // End:0x11B + if((int(FracActor.Physics) == int(0)) && FracActor.IsFracturedByDamageType(DamageType)) + { + // End:0x11B + if(FracActor.FractureEffectIsRelevant(false, Instigator, bWantPhysChunksAndParticles)) + { + FracActor.BreakOffPartsInRadius(Origin, Radius, RBStrength, ((int(bWantPhysChunksAndParticles) == int(1)) ? true : false)); + } + } + } + //return; +} + +// Export UCoverLink::execAddCoverSlot(FFrame&, void* const) +native final function int AddCoverSlot(Vector SlotLocation, Rotator SlotRotation, optional int SlotIdx = -1, optional bool bForceSlotUpdate, optional Scout Scout); + +final simulated event string GetDebugString(int SlotIdx) +{ + return (("L:" $ GetRightMost(string(self))) @ "S:") $ string(SlotIdx); + //return ReturnValue; +} + +// Export UCoverLink::execGetLocationDescription(FFrame&, void* const) +native final simulated function CoverLink.ECoverLocationDescription GetLocationDescription(int SlotIdx); + +simulated event string GetDebugAbbrev() +{ + return "CL"; + //return ReturnValue; +} + +defaultproperties +{ + bAutoSort=true + bAutoAdjust=true + LeanTraceDist=64.0000000 + Slots[0]=() + InvalidateDistance=64.0000000 + MaxFireLinkDist=2048.0000000 + AlignDist=36.0000000 + AutoCoverSlotInterval=175.0000000 + StandHeight=160.0000000 + MidHeight=70.0000000 + StandingLeanOffset=(X=0.0000000,Y=78.0000000,Z=69.0000000) + CrouchLeanOffset=(X=0.0000000,Y=70.0000000,Z=19.0000000) + PopupOffset=(X=0.0000000,Y=0.0000000,Z=70.0000000) + SlipDist=60.0000000 + TurnDist=512.0000000 + DangerScale=2.0000000 + bSpecialMove=true + bDestinationOnly=true + bBuildLongPaths=false + // Reference: CylinderComponent'Engine.Default__CoverLink.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + CollisionHeight=58.0000000 + CollisionRadius=48.0000000 + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=CollisionCylinder + Components[3]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/CoverMeshComponent.uc b/exported/Engine/Classes/CoverMeshComponent.uc new file mode 100755 index 00000000..743490aa --- /dev/null +++ b/exported/Engine/Classes/CoverMeshComponent.uc @@ -0,0 +1,70 @@ +class CoverMeshComponent extends StaticMeshComponent + native(AI) + editinlinenew + hidecategories(Object); + +struct native CoverMeshes +{ + var StaticMesh Base; + var StaticMesh LeanLeft; + var StaticMesh LeanRight; + var StaticMesh LeanLeftPref; + var StaticMesh LeanRightPref; + var StaticMesh Climb; + var StaticMesh Mantle; + var StaticMesh SlipLeft; + var StaticMesh SlipRight; + var StaticMesh SwatLeft; + var StaticMesh SwatRight; + var StaticMesh PopUp; + var StaticMesh PlayerOnly; + + structdefaultproperties + { + Base=none + LeanLeft=none + LeanRight=none + LeanLeftPref=none + LeanRightPref=none + Climb=none + Mantle=none + SlipLeft=none + SlipRight=none + SwatLeft=none + SwatRight=none + PopUp=none + PlayerOnly=none + } +}; + +var array Meshes; +var Vector LocationOffset; +var StaticMesh AutoAdjustOn; +var StaticMesh AutoAdjustOff; +var StaticMesh Disabled; +var editoronly transient bool bShowWhenNotSelected; + +defaultproperties +{ + Meshes[0]=(Base=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy__BASE_TALL',LeanLeft=none,LeanRight=none,LeanLeftPref=none,LeanRightPref=none,Climb=none,Mantle=none,SlipLeft=none,SlipRight=none,SwatLeft=none,SwatRight=none,PopUp=none,PlayerOnly=none) + Meshes[1]=(Base=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy__BASE_TALL',LeanLeft=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_LeanLeftS',LeanRight=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_LeanRightS',LeanLeftPref=none,LeanRightPref=none,Climb=none,Mantle=none,SlipLeft=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_CoverSlipLeft',SlipRight=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_CoverSlipRight',SwatLeft=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_SwatLeft',SwatRight=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_SwatRight',PopUp=none,PlayerOnly=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_PlayerOnlyS') + Meshes[2]=(Base=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy__BASE_SHORT',LeanLeft=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_LeanLeftM',LeanRight=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_LeanRightM',LeanLeftPref=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_LeanLeftMPref',LeanRightPref=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_LeanRightMPref',Climb=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_Climb',Mantle=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_Mantle',SlipLeft=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_CoverSlipLeft',SlipRight=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_CoverSlipRight',SwatLeft=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_SwatLeft',SwatRight=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_SwatRight',PopUp=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_PopUp',PlayerOnly=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_PlayerOnlyM') + LocationOffset=(X=0.0000000,Y=0.0000000,Z=-60.0000000) + AutoAdjustOn=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_AutoAdjust' + AutoAdjustOff=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_AutoAdjustOff' + Disabled=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy_Enabled' + StaticMesh=StaticMesh'NodeBuddies.3D_Icons.NodeBuddy__BASE_TALL' + ReplacementPrimitive=none + HiddenGame=true + bAcceptsStaticDecals=false + bAcceptsDynamicDecals=false + CastShadow=false + bAcceptsLights=false + CollideActors=false + BlockActors=false + BlockZeroExtent=false + BlockNonZeroExtent=false + BlockRigidBody=false + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/CoverReplicator.uc b/exported/Engine/Classes/CoverReplicator.uc new file mode 100755 index 00000000..bb6a04e8 --- /dev/null +++ b/exported/Engine/Classes/CoverReplicator.uc @@ -0,0 +1,946 @@ +class CoverReplicator extends ReplicationInfo + notplaceable + hidecategories(Navigation,Movement,Collision); + +struct ManualCoverTypeInfo +{ + var byte SlotIndex; + var CoverLink.ECoverType ManualCoverType; + + structdefaultproperties + { + SlotIndex=0 + ManualCoverType=ECoverType.CT_None + } +}; + +struct CoverReplicationInfo +{ + var CoverLink Link; + var array SlotsEnabled; + var array SlotsDisabled; + var array SlotsAdjusted; + var array SlotsCoverTypeChanged; + + structdefaultproperties + { + Link=none + SlotsEnabled=none + SlotsDisabled=none + SlotsAdjusted=none + SlotsCoverTypeChanged=none + } +}; + +var array CoverReplicationData; + +function PurgeOldEntries() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x74 [Loop If] + if(I < CoverReplicationData.Length) + { + // End:0x66 + if(CoverReplicationData[I].Link == none) + { + CoverReplicationData.Remove(I--, 1); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function ReplicateInitialCoverInfo() +{ + local CoverReplicator CoverReplicatorBase; + + CoverReplicatorBase = WorldInfo.Game.GetCoverReplicator(); + CoverReplicatorBase.PurgeOldEntries(); + CoverReplicationData = CoverReplicatorBase.CoverReplicationData; + // End:0xC4 + if(PlayerController(Owner) != none) + { + ClientSetOwner(PlayerController(Owner)); + ServerSendInitialCoverReplicationInfo(0); + } + //return; +} + +reliable client simulated function ClientSetOwner(PlayerController PC) +{ + SetOwner(PC); + //return; +} + +reliable server function ServerSendInitialCoverReplicationInfo(int Index) +{ + local byte SlotsArrayIndex, NumSlotsEnabled, NumSlotsDisabled, NumSlotsAdjusted, NumCoverTypesChanged, SlotsEnabled[8], + SlotsDisabled[8], SlotsAdjusted[8]; + + local ManualCoverTypeInfo SlotsCoverTypeChanged[8]; + local int I; + local bool bDone; + + J0x00: + // End:0x5E [Loop If] + if((Index < CoverReplicationData.Length) && CoverReplicationData[Index].Link == none) + { + CoverReplicationData.Remove(Index, 1); + // [Loop Continue] + goto J0x00; + } + // End:0x711 + if(Index < CoverReplicationData.Length) + { + SlotsArrayIndex = 0; + J0x82: + + NumSlotsEnabled = byte(Clamp(CoverReplicationData[Index].SlotsEnabled.Length - int(SlotsArrayIndex), 0, 8)); + NumSlotsDisabled = byte(Clamp(CoverReplicationData[Index].SlotsDisabled.Length - int(SlotsArrayIndex), 0, 8)); + NumSlotsAdjusted = byte(Clamp(CoverReplicationData[Index].SlotsAdjusted.Length - int(SlotsArrayIndex), 0, 8)); + NumCoverTypesChanged = byte(Clamp(CoverReplicationData[Index].SlotsCoverTypeChanged.Length - int(SlotsArrayIndex), 0, 8)); + // End:0x1EC + if(int(NumSlotsEnabled) == int(0)) + { + I = 0; + J0x1B5: + + // End:0x1E9 [Loop If] + if(I < 8) + { + SlotsEnabled[I] = 0; + I++; + // [Loop Continue] + goto J0x1B5; + } + } + else + { + I = 0; + J0x1F7: + + // End:0x26F [Loop If] + if(I < int(NumSlotsEnabled)) + { + SlotsEnabled[I] = CoverReplicationData[Index].SlotsEnabled[int(SlotsArrayIndex) + I]; + I++; + // [Loop Continue] + goto J0x1F7; + } + } + // End:0x2C5 + if(int(NumSlotsDisabled) == int(0)) + { + I = 0; + J0x28E: + + // End:0x2C2 [Loop If] + if(I < 8) + { + SlotsDisabled[I] = 0; + I++; + // [Loop Continue] + goto J0x28E; + } + } + else + { + I = 0; + J0x2D0: + + // End:0x348 [Loop If] + if(I < int(NumSlotsDisabled)) + { + SlotsDisabled[I] = CoverReplicationData[Index].SlotsDisabled[int(SlotsArrayIndex) + I]; + I++; + // [Loop Continue] + goto J0x2D0; + } + } + // End:0x39E + if(int(NumSlotsAdjusted) == int(0)) + { + I = 0; + J0x367: + + // End:0x39B [Loop If] + if(I < 8) + { + SlotsAdjusted[I] = 0; + I++; + // [Loop Continue] + goto J0x367; + } + } + else + { + I = 0; + J0x3A9: + + // End:0x421 [Loop If] + if(I < int(NumSlotsAdjusted)) + { + SlotsAdjusted[I] = CoverReplicationData[Index].SlotsAdjusted[int(SlotsArrayIndex) + I]; + I++; + // [Loop Continue] + goto J0x3A9; + } + } + // End:0x4B3 + if(int(NumCoverTypesChanged) == int(0)) + { + I = 0; + J0x440: + + // End:0x4B0 [Loop If] + if(I < 8) + { + SlotsCoverTypeChanged[I].SlotIndex = 0; + SlotsCoverTypeChanged[I].ManualCoverType = 0; + I++; + // [Loop Continue] + goto J0x440; + } + } + else + { + I = 0; + J0x4BE: + + // End:0x536 [Loop If] + if(I < int(NumCoverTypesChanged)) + { + SlotsCoverTypeChanged[I] = CoverReplicationData[Index].SlotsCoverTypeChanged[int(SlotsArrayIndex) + I]; + I++; + // [Loop Continue] + goto J0x4BE; + } + } + bDone = ((((CoverReplicationData[Index].SlotsEnabled.Length - int(SlotsArrayIndex)) <= 8) && (CoverReplicationData[Index].SlotsDisabled.Length - int(SlotsArrayIndex)) <= 8) && (CoverReplicationData[Index].SlotsAdjusted.Length - int(SlotsArrayIndex)) <= 8) && (CoverReplicationData[Index].SlotsCoverTypeChanged.Length - int(SlotsArrayIndex)) <= 8; + ClientReceiveInitialCoverReplicationInfo(Index, CoverReplicationData[Index].Link, CoverReplicationData[Index].Link.bDisabled, NumSlotsEnabled, SlotsEnabled, NumSlotsDisabled, SlotsDisabled, NumSlotsAdjusted, SlotsAdjusted, NumCoverTypesChanged, SlotsCoverTypeChanged, bDone); + SlotsArrayIndex += 8; + // End:0x82 + if(!(bDone)) + goto J0x82; + } + //return; +} + +reliable client simulated function ClientReceiveInitialCoverReplicationInfo(int Index, CoverLink Link, bool bLinkDisabled, byte NumSlotsEnabled, byte SlotsEnabled[8], byte NumSlotsDisabled, byte SlotsDisabled[8], byte NumSlotsAdjusted, byte SlotsAdjusted[8], byte NumCoverTypesChanged, ManualCoverTypeInfo SlotsCoverTypeChanged[8], bool bDone) +{ + local int I; + + // End:0x32 + if(Link == none) + { + // End:0x2F + if(bDone) + { + ServerSendInitialCoverReplicationInfo(Index); + } + } + else + { + Link.bDisabled = bLinkDisabled; + I = 0; + J0x67: + + // End:0xC3 [Loop If] + if(I < int(NumSlotsEnabled)) + { + Link.SetSlotEnabled(int(SlotsEnabled[I]), true); + I++; + // [Loop Continue] + goto J0x67; + } + I = 0; + J0xCE: + + // End:0x12A [Loop If] + if(I < int(NumSlotsDisabled)) + { + Link.SetSlotEnabled(int(SlotsDisabled[I]), false); + I++; + // [Loop Continue] + goto J0xCE; + } + I = 0; + J0x135: + + // End:0x2B9 [Loop If] + if(I < int(NumSlotsAdjusted)) + { + // End:0x2AB + if((Link.AutoAdjustSlot(int(SlotsAdjusted[I]), false) && Link.Slots[int(SlotsAdjusted[I])].SlotOwner != none) && Link.Slots[int(SlotsAdjusted[I])].SlotOwner.Controller != none) + { + Link.Slots[int(SlotsAdjusted[I])].SlotOwner.Controller.NotifyCoverAdjusted(); + } + I++; + // [Loop Continue] + goto J0x135; + } + I = 0; + J0x2C4: + + // End:0x4C8 [Loop If] + if(I < int(NumCoverTypesChanged)) + { + Link.Slots[int(SlotsCoverTypeChanged[I].SlotIndex)].CoverType = SlotsCoverTypeChanged[I].ManualCoverType; + // End:0x4BA + if((Link.Slots[int(SlotsCoverTypeChanged[I].SlotIndex)].SlotOwner != none) && Link.Slots[int(SlotsCoverTypeChanged[I].SlotIndex)].SlotOwner.Controller != none) + { + Link.Slots[int(SlotsCoverTypeChanged[I].SlotIndex)].SlotOwner.Controller.NotifyCoverAdjusted(); + } + I++; + // [Loop Continue] + goto J0x2C4; + } + // End:0x4EB + if(bDone) + { + ServerSendInitialCoverReplicationInfo(Index + 1); + } + } + //return; +} + +function NotifyEnabledSlots(CoverLink Link, const out array SlotIndices) +{ + local int Index, SlotIndex, I; + local PlayerController PC; + + Index = CoverReplicationData.Find('Link', Link); + // End:0x112 + if(Index == -1) + { + Index = CoverReplicationData.Length; + CoverReplicationData.Length = CoverReplicationData.Length + 1; + CoverReplicationData[Index].Link = Link; + I = 0; + J0xA3: + + // End:0x10F [Loop If] + if(I < SlotIndices.Length) + { + CoverReplicationData[Index].SlotsEnabled[I] = byte(SlotIndices[I]); + I++; + // [Loop Continue] + goto J0xA3; + } + } + else + { + I = 0; + J0x11D: + + // End:0x291 [Loop If] + if(I < SlotIndices.Length) + { + SlotIndex = CoverReplicationData[Index].SlotsEnabled.Find(byte(SlotIndices[I])); + // End:0x1F5 + if(SlotIndex == -1) + { + CoverReplicationData[Index].SlotsEnabled[CoverReplicationData[Index].SlotsEnabled.Length] = byte(SlotIndices[I]); + } + SlotIndex = CoverReplicationData[Index].SlotsDisabled.Find(byte(SlotIndices[I])); + // End:0x283 + if(SlotIndex != -1) + { + CoverReplicationData[Index].SlotsDisabled.Remove(SlotIndex, 1); + } + I++; + // [Loop Continue] + goto J0x11D; + } + } + // End:0x38D + if(WorldInfo.Game.GetCoverReplicator() == self) + { + // End:0x38C + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x345 + if(PC.MyCoverReplicator == none) + { + PC.SpawnCoverReplicator(); + // End:0x38B + continue; + } + PC.MyCoverReplicator.NotifyEnabledSlots(Link, SlotIndices); + } + } + // End:0x3B8 + if(PlayerController(Owner) != none) + { + ServerSendEnabledSlots(Index); + } + //return; +} + +reliable server function ServerSendEnabledSlots(int Index) +{ + local int SlotsArrayIndex; + local byte NumSlotsEnabled, SlotsEnabled[8]; + local int I; + local bool bDone; + + // End:0x1AB + if(CoverReplicationData[Index].Link != none) + { + SlotsArrayIndex = 0; + J0x37: + + NumSlotsEnabled = byte(Clamp(CoverReplicationData[Index].SlotsEnabled.Length - SlotsArrayIndex, 0, 8)); + I = 0; + J0x85: + + // End:0xFB [Loop If] + if(I < int(NumSlotsEnabled)) + { + SlotsEnabled[I] = CoverReplicationData[Index].SlotsEnabled[SlotsArrayIndex + I]; + I++; + // [Loop Continue] + goto J0x85; + } + bDone = (CoverReplicationData[Index].SlotsEnabled.Length - SlotsArrayIndex) <= 8; + ClientReceiveEnabledSlots(Index, CoverReplicationData[Index].Link, NumSlotsEnabled, SlotsEnabled, bDone); + SlotsArrayIndex += 8; + // End:0x37 + if(!(bDone)) + goto J0x37; + } + //return; +} + +reliable client simulated function ClientReceiveEnabledSlots(int Index, CoverLink Link, byte NumSlotsEnabled, byte SlotsEnabled[8], bool bDone) +{ + local int I; + + // End:0x32 + if(Link == none) + { + // End:0x2F + if(bDone) + { + ServerSendEnabledSlots(Index); + } + } + else + { + I = 0; + J0x3D: + + // End:0x99 [Loop If] + if(I < int(NumSlotsEnabled)) + { + Link.SetSlotEnabled(int(SlotsEnabled[I]), true); + I++; + // [Loop Continue] + goto J0x3D; + } + } + //return; +} + +function NotifyDisabledSlots(CoverLink Link, const out array SlotIndices) +{ + local int Index, SlotIndex, I; + local PlayerController PC; + + Index = CoverReplicationData.Find('Link', Link); + // End:0x112 + if(Index == -1) + { + Index = CoverReplicationData.Length; + CoverReplicationData.Length = CoverReplicationData.Length + 1; + CoverReplicationData[Index].Link = Link; + I = 0; + J0xA3: + + // End:0x10F [Loop If] + if(I < SlotIndices.Length) + { + CoverReplicationData[Index].SlotsDisabled[I] = byte(SlotIndices[I]); + I++; + // [Loop Continue] + goto J0xA3; + } + } + else + { + I = 0; + J0x11D: + + // End:0x291 [Loop If] + if(I < SlotIndices.Length) + { + SlotIndex = CoverReplicationData[Index].SlotsDisabled.Find(byte(SlotIndices[I])); + // End:0x1F5 + if(SlotIndex == -1) + { + CoverReplicationData[Index].SlotsDisabled[CoverReplicationData[Index].SlotsDisabled.Length] = byte(SlotIndices[I]); + } + SlotIndex = CoverReplicationData[Index].SlotsEnabled.Find(byte(SlotIndices[I])); + // End:0x283 + if(SlotIndex != -1) + { + CoverReplicationData[Index].SlotsEnabled.Remove(SlotIndex, 1); + } + I++; + // [Loop Continue] + goto J0x11D; + } + } + // End:0x38D + if(WorldInfo.Game.GetCoverReplicator() == self) + { + // End:0x38C + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x345 + if(PC.MyCoverReplicator == none) + { + PC.SpawnCoverReplicator(); + // End:0x38B + continue; + } + PC.MyCoverReplicator.NotifyDisabledSlots(Link, SlotIndices); + } + } + // End:0x3B8 + if(PlayerController(Owner) != none) + { + ServerSendDisabledSlots(Index); + } + //return; +} + +reliable server function ServerSendDisabledSlots(int Index) +{ + local int SlotsArrayIndex; + local byte NumSlotsDisabled, SlotsDisabled[8]; + local int I; + local bool bDone; + + // End:0x1AB + if(CoverReplicationData[Index].Link != none) + { + SlotsArrayIndex = 0; + J0x37: + + NumSlotsDisabled = byte(Clamp(CoverReplicationData[Index].SlotsDisabled.Length - SlotsArrayIndex, 0, 8)); + I = 0; + J0x85: + + // End:0xFB [Loop If] + if(I < int(NumSlotsDisabled)) + { + SlotsDisabled[I] = CoverReplicationData[Index].SlotsDisabled[SlotsArrayIndex + I]; + I++; + // [Loop Continue] + goto J0x85; + } + bDone = (CoverReplicationData[Index].SlotsDisabled.Length - SlotsArrayIndex) <= 8; + ClientReceiveDisabledSlots(Index, CoverReplicationData[Index].Link, NumSlotsDisabled, SlotsDisabled, bDone); + SlotsArrayIndex += 8; + // End:0x37 + if(!(bDone)) + goto J0x37; + } + //return; +} + +reliable client simulated function ClientReceiveDisabledSlots(int Index, CoverLink Link, byte NumSlotsDisabled, byte SlotsDisabled[8], bool bDone) +{ + local int I; + + // End:0x32 + if(Link == none) + { + // End:0x2F + if(bDone) + { + ServerSendDisabledSlots(Index); + } + } + else + { + I = 0; + J0x3D: + + // End:0x99 [Loop If] + if(I < int(NumSlotsDisabled)) + { + Link.SetSlotEnabled(int(SlotsDisabled[I]), false); + I++; + // [Loop Continue] + goto J0x3D; + } + } + //return; +} + +function NotifyAutoAdjustSlots(CoverLink Link, const out array SlotIndices) +{ + local int Index, SlotIndex, I; + local PlayerController PC; + + Index = CoverReplicationData.Find('Link', Link); + // End:0x112 + if(Index == -1) + { + Index = CoverReplicationData.Length; + CoverReplicationData.Length = CoverReplicationData.Length + 1; + CoverReplicationData[Index].Link = Link; + I = 0; + J0xA3: + + // End:0x10F [Loop If] + if(I < SlotIndices.Length) + { + CoverReplicationData[Index].SlotsAdjusted[I] = byte(SlotIndices[I]); + I++; + // [Loop Continue] + goto J0xA3; + } + } + else + { + I = 0; + J0x11D: + + // End:0x29A [Loop If] + if(I < SlotIndices.Length) + { + SlotIndex = CoverReplicationData[Index].SlotsAdjusted.Find(byte(SlotIndices[I])); + // End:0x1F5 + if(SlotIndex == -1) + { + CoverReplicationData[Index].SlotsAdjusted[CoverReplicationData[Index].SlotsAdjusted.Length] = byte(SlotIndices[I]); + } + SlotIndex = CoverReplicationData[Index].SlotsCoverTypeChanged.Find('SlotIndex', byte(SlotIndices[I])); + // End:0x28C + if(SlotIndex != -1) + { + CoverReplicationData[Index].SlotsCoverTypeChanged.Remove(SlotIndex, 1); + } + I++; + // [Loop Continue] + goto J0x11D; + } + } + // End:0x396 + if(WorldInfo.Game.GetCoverReplicator() == self) + { + // End:0x395 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x34E + if(PC.MyCoverReplicator == none) + { + PC.SpawnCoverReplicator(); + // End:0x394 + continue; + } + PC.MyCoverReplicator.NotifyAutoAdjustSlots(Link, SlotIndices); + } + } + // End:0x3C1 + if(PlayerController(Owner) != none) + { + ServerSendAdjustedSlots(Index); + } + //return; +} + +reliable server function ServerSendAdjustedSlots(int Index) +{ + local int SlotsArrayIndex; + local byte NumSlotsAdjusted, SlotsAdjusted[8]; + local int I; + local bool bDone; + + // End:0x1AB + if(CoverReplicationData[Index].Link != none) + { + SlotsArrayIndex = 0; + J0x37: + + NumSlotsAdjusted = byte(Clamp(CoverReplicationData[Index].SlotsAdjusted.Length - SlotsArrayIndex, 0, 8)); + I = 0; + J0x85: + + // End:0xFB [Loop If] + if(I < int(NumSlotsAdjusted)) + { + SlotsAdjusted[I] = CoverReplicationData[Index].SlotsAdjusted[SlotsArrayIndex + I]; + I++; + // [Loop Continue] + goto J0x85; + } + bDone = (CoverReplicationData[Index].SlotsAdjusted.Length - SlotsArrayIndex) <= 8; + ClientReceiveAdjustedSlots(Index, CoverReplicationData[Index].Link, NumSlotsAdjusted, SlotsAdjusted, bDone); + SlotsArrayIndex += 8; + // End:0x37 + if(!(bDone)) + goto J0x37; + } + //return; +} + +reliable client simulated function ClientReceiveAdjustedSlots(int Index, CoverLink Link, byte NumSlotsAdjusted, byte SlotsAdjusted[8], bool bDone) +{ + local int I; + + // End:0x32 + if(Link == none) + { + // End:0x2F + if(bDone) + { + ServerSendAdjustedSlots(Index); + } + } + else + { + I = 0; + J0x3D: + + // End:0x1C1 [Loop If] + if(I < int(NumSlotsAdjusted)) + { + // End:0x1B3 + if((Link.AutoAdjustSlot(int(SlotsAdjusted[I]), true) && Link.Slots[int(SlotsAdjusted[I])].SlotOwner != none) && Link.Slots[int(SlotsAdjusted[I])].SlotOwner.Controller != none) + { + Link.Slots[int(SlotsAdjusted[I])].SlotOwner.Controller.NotifyCoverAdjusted(); + } + I++; + // [Loop Continue] + goto J0x3D; + } + } + //return; +} + +function NotifySetManualCoverTypeForSlots(CoverLink Link, const out array SlotIndices, CoverLink.ECoverType NewCoverType) +{ + local int Index, SlotIndex, I; + local PlayerController PC; + + Index = CoverReplicationData.Find('Link', Link); + // End:0x1A4 + if(Index == -1) + { + Index = CoverReplicationData.Length; + CoverReplicationData.Length = CoverReplicationData.Length + 1; + CoverReplicationData[Index].Link = Link; + CoverReplicationData[Index].SlotsCoverTypeChanged.Length = SlotIndices.Length; + I = 0; + J0xD5: + + // End:0x1A1 [Loop If] + if(I < SlotIndices.Length) + { + CoverReplicationData[Index].SlotsCoverTypeChanged[I].SlotIndex = byte(SlotIndices[I]); + CoverReplicationData[Index].SlotsCoverTypeChanged[I].ManualCoverType = NewCoverType; + I++; + // [Loop Continue] + goto J0xD5; + } + } + else + { + I = 0; + J0x1AF: + + // End:0x3F1 [Loop If] + if(I < SlotIndices.Length) + { + SlotIndex = CoverReplicationData[Index].SlotsCoverTypeChanged.Find('SlotIndex', byte(SlotIndices[I])); + // End:0x308 + if(SlotIndex == -1) + { + SlotIndex = CoverReplicationData[Index].SlotsCoverTypeChanged.Length; + CoverReplicationData[Index].SlotsCoverTypeChanged.Length = CoverReplicationData[Index].SlotsCoverTypeChanged.Length + 1; + CoverReplicationData[Index].SlotsCoverTypeChanged[SlotIndex].SlotIndex = byte(SlotIndices[I]); + } + CoverReplicationData[Index].SlotsCoverTypeChanged[SlotIndex].ManualCoverType = NewCoverType; + SlotIndex = CoverReplicationData[Index].SlotsAdjusted.Find(byte(SlotIndices[I])); + // End:0x3E3 + if(SlotIndex != -1) + { + CoverReplicationData[Index].SlotsAdjusted.Remove(SlotIndex, 1); + } + I++; + // [Loop Continue] + goto J0x1AF; + } + } + // End:0x4F6 + if(WorldInfo.Game.GetCoverReplicator() == self) + { + // End:0x4F5 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x4A5 + if(PC.MyCoverReplicator == none) + { + PC.SpawnCoverReplicator(); + // End:0x4F4 + continue; + } + PC.MyCoverReplicator.NotifySetManualCoverTypeForSlots(Link, SlotIndices, NewCoverType); + } + } + // End:0x521 + if(PlayerController(Owner) != none) + { + ServerSendManualCoverTypeSlots(Index); + } + //return; +} + +reliable server function ServerSendManualCoverTypeSlots(int Index) +{ + local int SlotsArrayIndex; + local byte NumCoverTypesChanged; + local ManualCoverTypeInfo SlotsCoverTypeChanged[8]; + local int I; + local bool bDone; + + // End:0x1AB + if(CoverReplicationData[Index].Link != none) + { + SlotsArrayIndex = 0; + J0x37: + + NumCoverTypesChanged = byte(Clamp(CoverReplicationData[Index].SlotsCoverTypeChanged.Length - SlotsArrayIndex, 0, 8)); + I = 0; + J0x85: + + // End:0xFB [Loop If] + if(I < int(NumCoverTypesChanged)) + { + SlotsCoverTypeChanged[I] = CoverReplicationData[Index].SlotsCoverTypeChanged[SlotsArrayIndex + I]; + I++; + // [Loop Continue] + goto J0x85; + } + bDone = (CoverReplicationData[Index].SlotsCoverTypeChanged.Length - SlotsArrayIndex) <= 8; + ClientReceiveManualCoverTypeSlots(Index, CoverReplicationData[Index].Link, NumCoverTypesChanged, SlotsCoverTypeChanged, bDone); + SlotsArrayIndex += 8; + // End:0x37 + if(!(bDone)) + goto J0x37; + } + //return; +} + +reliable client simulated function ClientReceiveManualCoverTypeSlots(int Index, CoverLink Link, byte NumCoverTypesChanged, ManualCoverTypeInfo SlotsCoverTypeChanged[8], bool bDone) +{ + local int I; + + // End:0x32 + if(Link == none) + { + // End:0x2F + if(bDone) + { + ServerSendManualCoverTypeSlots(Index); + } + } + else + { + I = 0; + J0x3D: + + // End:0x241 [Loop If] + if(I < int(NumCoverTypesChanged)) + { + Link.Slots[int(SlotsCoverTypeChanged[I].SlotIndex)].CoverType = SlotsCoverTypeChanged[I].ManualCoverType; + // End:0x233 + if((Link.Slots[int(SlotsCoverTypeChanged[I].SlotIndex)].SlotOwner != none) && Link.Slots[int(SlotsCoverTypeChanged[I].SlotIndex)].SlotOwner.Controller != none) + { + Link.Slots[int(SlotsCoverTypeChanged[I].SlotIndex)].SlotOwner.Controller.NotifyCoverAdjusted(); + } + I++; + // [Loop Continue] + goto J0x3D; + } + } + //return; +} + +function NotifyLinkDisabledStateChange(CoverLink Link) +{ + local int Index; + local PlayerController PC; + + Index = CoverReplicationData.Find('Link', Link); + // End:0x98 + if(Index == -1) + { + Index = CoverReplicationData.Length; + CoverReplicationData.Length = CoverReplicationData.Length + 1; + CoverReplicationData[Index].Link = Link; + } + // End:0x18B + if(WorldInfo.Game.GetCoverReplicator() == self) + { + // End:0x18A + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x14C + if(PC.MyCoverReplicator == none) + { + PC.SpawnCoverReplicator(); + // End:0x189 + continue; + } + PC.MyCoverReplicator.NotifyLinkDisabledStateChange(Link); + } + } + // End:0x1B6 + if(PlayerController(Owner) != none) + { + ServerSendLinkDisabledState(Index); + } + //return; +} + +reliable server function ServerSendLinkDisabledState(int Index) +{ + // End:0xA1 + if(CoverReplicationData[Index].Link != none) + { + ClientReceiveLinkDisabledState(Index, CoverReplicationData[Index].Link, CoverReplicationData[Index].Link.bDisabled); + } + //return; +} + +reliable client simulated function ClientReceiveLinkDisabledState(int Index, CoverLink Link, bool bLinkDisabled) +{ + // End:0x25 + if(Link == none) + { + ServerSendLinkDisabledState(Index); + } + else + { + Link.bDisabled = bLinkDisabled; + } + //return; +} + +defaultproperties +{ + bOnlyRelevantToOwner=true + bAlwaysRelevant=false + NetUpdateFrequency=0.1000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/CoverSlipReachSpec.uc b/exported/Engine/Classes/CoverSlipReachSpec.uc new file mode 100755 index 00000000..8f4855ce --- /dev/null +++ b/exported/Engine/Classes/CoverSlipReachSpec.uc @@ -0,0 +1,9 @@ +class CoverSlipReachSpec extends ForcedReachSpec + native; + +var() editconst byte SpecDirection; + +defaultproperties +{ + bSkipPrune=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/CrowdAgentBase.uc b/exported/Engine/Classes/CrowdAgentBase.uc new file mode 100755 index 00000000..050f777d --- /dev/null +++ b/exported/Engine/Classes/CrowdAgentBase.uc @@ -0,0 +1,14 @@ +class CrowdAgentBase extends Actor + abstract + native(AI) + notplaceable + hidecategories(Navigation) + classgroup(Crowd) + implements(Interface_NavigationHandle); + +var private native const noexport Pointer VfTable_IInterface_NavigationHandle; + +event NotifyPathChanged() +{ + //return; +} diff --git a/exported/Engine/Classes/CrowdPopulationManagerBase.uc b/exported/Engine/Classes/CrowdPopulationManagerBase.uc new file mode 100755 index 00000000..2612d9d3 --- /dev/null +++ b/exported/Engine/Classes/CrowdPopulationManagerBase.uc @@ -0,0 +1,5 @@ +class CrowdPopulationManagerBase extends Actor + abstract + native(AI) + notplaceable + hidecategories(Navigation); diff --git a/exported/Engine/Classes/CullDistanceVolume.uc b/exported/Engine/Classes/CullDistanceVolume.uc new file mode 100755 index 00000000..bbb907f2 --- /dev/null +++ b/exported/Engine/Classes/CullDistanceVolume.uc @@ -0,0 +1,40 @@ +class CullDistanceVolume extends Volume + native + placeable + hidecategories(Navigation,Object,Movement,Display,Advanced,Attachment,Collision,Volume); + +struct native CullDistanceSizePair +{ + var() float Size; + var() float CullDistance; + + structdefaultproperties + { + Size=0.0000000 + CullDistance=0.0000000 + } +}; + +var() array CullDistances; +var() bool bEnabled; + +defaultproperties +{ + CullDistances[0]=(Size=0.0000000,CullDistance=0.0000000) + CullDistances[1]=(Size=10000.0000000,CullDistance=0.0000000) + bEnabled=true + // Reference: BrushComponent'Engine.Default__CullDistanceVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + CollideActors=false + BlockNonZeroExtent=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bCollideActors=false + CollisionComponent=BrushComponent0 + SupportedEvents=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/CurveEdPresetCurve.uc b/exported/Engine/Classes/CurveEdPresetCurve.uc new file mode 100755 index 00000000..91158a4b --- /dev/null +++ b/exported/Engine/Classes/CurveEdPresetCurve.uc @@ -0,0 +1,27 @@ +class CurveEdPresetCurve extends Object + native + editinlinenew + hidecategories(Object); + +struct native PresetGeneratedPoint +{ + var float KeyIn; + var float KeyOut; + var bool TangentsValid; + var float TangentIn; + var float TangentOut; + var Object.EInterpCurveMode IntepMode; + + structdefaultproperties + { + KeyIn=0.0000000 + KeyOut=0.0000000 + TangentsValid=false + TangentIn=0.0000000 + TangentOut=0.0000000 + IntepMode=EInterpCurveMode.CIM_Linear + } +}; + +var() const localized string CurveName; +var array Points; diff --git a/exported/Engine/Classes/CustomPropertyItemHandler.uc b/exported/Engine/Classes/CustomPropertyItemHandler.uc new file mode 100755 index 00000000..0a3e509e --- /dev/null +++ b/exported/Engine/Classes/CustomPropertyItemHandler.uc @@ -0,0 +1,3 @@ +interface CustomPropertyItemHandler extends Interface + abstract + native; diff --git a/exported/Engine/Classes/CylinderComponent.uc b/exported/Engine/Classes/CylinderComponent.uc new file mode 100755 index 00000000..f5121a7a --- /dev/null +++ b/exported/Engine/Classes/CylinderComponent.uc @@ -0,0 +1,29 @@ +class CylinderComponent extends PrimitiveComponent + native + editinlinenew + collapsecategories + noexport; + +var() const export float CollisionHeight; +var() const export float CollisionRadius; +var() const Color CylinderColor; +var const bool bDrawBoundingBox; +var const bool bDrawNonColliding; +var const bool bAlwaysRenderIfSelected; + +// Export UCylinderComponent::execSetCylinderSize(FFrame&, void* const) +native final function SetCylinderSize(float NewRadius, float NewHeight); + +defaultproperties +{ + CollisionHeight=22.0000000 + CollisionRadius=22.0000000 + CylinderColor=(R=223,G=149,B=157,A=255) + bDrawBoundingBox=true + ReplacementPrimitive=none + HiddenGame=true + bAcceptsDynamicDecals=false + bCastDynamicShadow=false + BlockZeroExtent=true + BlockNonZeroExtent=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DOFAndBloomEffect.uc b/exported/Engine/Classes/DOFAndBloomEffect.uc new file mode 100755 index 00000000..8c90885b --- /dev/null +++ b/exported/Engine/Classes/DOFAndBloomEffect.uc @@ -0,0 +1,40 @@ +class DOFAndBloomEffect extends DOFEffect + native + hidecategories(Object); + +enum EDOFType +{ + DOFType_SimpleDOF, // 0 + DOFType_ReferenceDOF, // 1 + DOFType_BokehDOF, // 2 + DOFType_MAX // 3 +}; + +enum EDOFQuality +{ + DOFQuality_Low, // 0 + DOFQuality_Medium, // 1 + DOFQuality_High, // 2 + DOFQuality_MAX // 3 +}; + +var(Bloom) float BloomScale; +var(Bloom) float BloomThreshold; +var(Bloom) Color BloomTint; +var(Bloom) float BloomScreenBlendThreshold; +var deprecated float SceneMultiplier; +var(Bloom) float BlurBloomKernelSize; +var deprecated bool bEnableReferenceDOF; +var(DepthOfField) DOFAndBloomEffect.EDOFType DepthOfFieldType; +var(DepthOfField) DOFAndBloomEffect.EDOFQuality DepthOfFieldQuality; +var(DepthOfField) Texture2D BokehTexture; + +defaultproperties +{ + BloomScale=1.0000000 + BloomThreshold=1.0000000 + BloomTint=(R=255,G=255,B=255,A=0) + BloomScreenBlendThreshold=10.0000000 + BlurBloomKernelSize=16.0000000 + BlurKernelSize=16.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/DOFBloomMotionBlurEffect.uc b/exported/Engine/Classes/DOFBloomMotionBlurEffect.uc new file mode 100755 index 00000000..98c0a6d7 --- /dev/null +++ b/exported/Engine/Classes/DOFBloomMotionBlurEffect.uc @@ -0,0 +1,19 @@ +class DOFBloomMotionBlurEffect extends DOFAndBloomEffect + native + hidecategories(Object); + +var(MotionBlur) float MaxVelocity; +var(MotionBlur) float MotionBlurAmount; +var(MotionBlur) bool FullMotionBlur; +var(MotionBlur) float CameraRotationThreshold; +var(MotionBlur) float CameraTranslationThreshold; + +defaultproperties +{ + MaxVelocity=1.0000000 + MotionBlurAmount=0.5000000 + FullMotionBlur=true + CameraRotationThreshold=90.0000000 + CameraTranslationThreshold=10000.0000000 + bShowInEditor=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/DOFEffect.uc b/exported/Engine/Classes/DOFEffect.uc new file mode 100755 index 00000000..2e9680c9 --- /dev/null +++ b/exported/Engine/Classes/DOFEffect.uc @@ -0,0 +1,31 @@ +class DOFEffect extends PostProcessEffect + abstract + native + hidecategories(Object); + +enum EFocusType +{ + FOCUS_Distance, // 0 + FOCUS_Position, // 1 + FOCUS_MAX // 2 +}; + +var(DepthOfField) float FalloffExponent; +var(DepthOfField) float BlurKernelSize; +var(DepthOfField,BlurAmount) float MaxNearBlurAmount; +var(DepthOfField,BlurAmount) float MinBlurAmount; +var(DepthOfField,BlurAmount) float MaxFarBlurAmount; +var(DepthOfField) DOFEffect.EFocusType FocusType; +var(DepthOfField) float FocusInnerRadius; +var(DepthOfField) float FocusDistance; +var(DepthOfField) Vector FocusPosition; + +defaultproperties +{ + FalloffExponent=2.0000000 + BlurKernelSize=2.0000000 + MaxNearBlurAmount=1.0000000 + MaxFarBlurAmount=1.0000000 + FocusInnerRadius=400.0000000 + FocusDistance=800.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/DamageType.uc b/exported/Engine/Classes/DamageType.uc new file mode 100755 index 00000000..aae38406 --- /dev/null +++ b/exported/Engine/Classes/DamageType.uc @@ -0,0 +1,34 @@ +class DamageType extends Object + abstract + native; + +var() bool bArmorStops; +var bool bCausedByWorld; +var bool bExtraMomentumZ; +var() bool bCausesFracture; +var(RigidBody) bool bRadialDamageVelChange; +var(RigidBody) float KDamageImpulse; +var(RigidBody) float KDeathVel; +var(RigidBody) float KDeathUpKick; +var(RigidBody) float RadialDamageImpulse; +var float VehicleDamageScaling; +var float VehicleMomentumScaling; +var ForceFeedbackWaveform DamagedFFWaveform; +var ForceFeedbackWaveform KilledFFWaveform; +var float FracturedMeshDamage; + +static function float VehicleDamageScalingFor(Vehicle V) +{ + return default.VehicleDamageScaling; + //return ReturnValue; +} + +defaultproperties +{ + bArmorStops=true + bExtraMomentumZ=true + KDamageImpulse=800.0000000 + VehicleDamageScaling=1.0000000 + VehicleMomentumScaling=1.0000000 + FracturedMeshDamage=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/DataStoreClient.uc b/exported/Engine/Classes/DataStoreClient.uc new file mode 100755 index 00000000..e66e0a7a --- /dev/null +++ b/exported/Engine/Classes/DataStoreClient.uc @@ -0,0 +1,154 @@ +class DataStoreClient extends UIRoot + native(UserInterface) + config(Engine) + hidecategories(Object,UIRoot); + +struct native transient PlayerDataStoreGroup +{ + var init const transient LocalPlayer PlayerOwner; + var init const transient array DataStores; + + structdefaultproperties + { + PlayerOwner=none + DataStores=none + } +}; + +var config array GlobalDataStoreClasses; +var const array GlobalDataStores; +var config array PlayerDataStoreClassNames; +var private const array< Class > PlayerDataStoreClasses; +var const array PlayerDataStores; + +// Export UDataStoreClient::execFindDataStore(FFrame&, void* const) +native final function UIDataStore FindDataStore(name DataStoreTag, optional LocalPlayer PlayerOwner); + +// Export UDataStoreClient::execCreateDataStore(FFrame&, void* const) +native final function UIDataStore CreateDataStore(Class DataStoreClass); + +// Export UDataStoreClient::execRegisterDataStore(FFrame&, void* const) +native final function bool RegisterDataStore(UIDataStore DataStore, optional LocalPlayer PlayerOwner); + +// Export UDataStoreClient::execUnregisterDataStore(FFrame&, void* const) +native final function bool UnregisterDataStore(UIDataStore DataStore); + +// Export UDataStoreClient::execFindPlayerDataStoreIndex(FFrame&, void* const) +native final function int FindPlayerDataStoreIndex(LocalPlayer PlayerOwner); + +final function GetPlayerDataStoreClasses(out array< Class > out_DataStoreClasses) +{ + out_DataStoreClasses = PlayerDataStoreClasses; + //return; +} + +final function Class FindDataStoreClass(Class RequiredMetaClass) +{ + local int I; + local Class Result; + + I = 0; + J0x0B: + + // End:0xA8 [Loop If] + if(I < GlobalDataStores.Length) + { + // End:0x9A + if(GlobalDataStores[I].IsA(RequiredMetaClass.Name)) + { + Result = GlobalDataStores[I].Class; + // [Explicit Break] + goto J0xA8; + } + I++; + // [Loop Continue] + goto J0x0B; + } + J0xA8: + + // End:0x12A + if(Result == none) + { + I = 0; + J0xC2: + + // End:0x12A [Loop If] + if(I < PlayerDataStoreClasses.Length) + { + // End:0x11C + if(ClassIsChildOf(PlayerDataStoreClasses[I], RequiredMetaClass)) + { + Result = PlayerDataStoreClasses[I]; + // [Explicit Break] + goto J0x12A; + } + I++; + // [Loop Continue] + goto J0xC2; + } + } + J0x12A: + + return Result; + //return ReturnValue; +} + +final event NotifyGameSessionEnded() +{ + local int I, DataStoreIndex; + local array DataStoreArray; + + DataStoreArray = GlobalDataStores; + DataStoreIndex = 0; + J0x1E: + + // End:0x8D [Loop If] + if(DataStoreIndex < DataStoreArray.Length) + { + // End:0x7F + if(DataStoreArray[DataStoreIndex].NotifyGameSessionEnded()) + { + UnregisterDataStore(DataStoreArray[DataStoreIndex]); + } + DataStoreIndex++; + // [Loop Continue] + goto J0x1E; + } + I = PlayerDataStores.Length - 1; + J0xA4: + + // End:0x168 [Loop If] + if(I >= 0) + { + DataStoreArray = PlayerDataStores[I].DataStores; + DataStoreIndex = 0; + J0xEE: + + // End:0x15A [Loop If] + if(DataStoreIndex < DataStoreArray.Length) + { + DataStoreArray[DataStoreIndex].NotifyGameSessionEnded(); + UnregisterDataStore(DataStoreArray[DataStoreIndex]); + DataStoreIndex++; + // [Loop Continue] + goto J0xEE; + } + I--; + // [Loop Continue] + goto J0xA4; + } + //return; +} + +final function DebugDumpDataStoreInfo(bool bVerbose) +{ + //return; +} + +defaultproperties +{ + GlobalDataStoreClasses[0]="Engine.UIDataStore_GameResource" + GlobalDataStoreClasses[1]="Engine.UIDataStore_Fonts" + GlobalDataStoreClasses[2]="Engine.UIDataStore_Registry" + GlobalDataStoreClasses[3]="Engine.UIDataStore_InputAlias" +} \ No newline at end of file diff --git a/exported/Engine/Classes/DecalActor.uc b/exported/Engine/Classes/DecalActor.uc new file mode 100755 index 00000000..0f5fef5e --- /dev/null +++ b/exported/Engine/Classes/DecalActor.uc @@ -0,0 +1,19 @@ +class DecalActor extends DecalActorBase + native(Decal) + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DecalComponent'Engine.Default__DecalActor.NewDecalComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'NewDecalComponent' + // Archetype: DecalComponent'Engine.Default__DecalActorBase.NewDecalComponent' + begin object name="NewDecalComponent" + ReplacementPrimitive=none + end object + Decal=NewDecalComponent + Components[0]=NewDecalComponent + Components[1]=none + Components[2]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/DecalActorBase.uc b/exported/Engine/Classes/DecalActorBase.uc new file mode 100755 index 00000000..f69928eb --- /dev/null +++ b/exported/Engine/Classes/DecalActorBase.uc @@ -0,0 +1,29 @@ +class DecalActorBase extends Actor + abstract + native(Decal) + notplaceable + hidecategories(Navigation) + classgroup(Decals) + implements(EditorLinkSelectionInterface); + +var private native const noexport Pointer VfTable_IEditorLinkSelectionInterface; +var() const editconst export editinline DecalComponent Decal; + +defaultproperties +{ + // Reference: DecalComponent'Engine.Default__DecalActorBase.NewDecalComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'NewDecalComponent' + begin object name="NewDecalComponent" class=Engine.DecalComponent + bStaticDecal=true + DecalTransform=EDecalTransform.DecalTransform_OwnerAbsolute + ReplacementPrimitive=none + end object + Decal=NewDecalComponent + Components[0]=NewDecalComponent + Components[1]=none + Components[2]=none + TickGroup=ETickingGroup.TG_DuringAsyncWork + bStatic=true + bMovable=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/DecalActorMovable.uc b/exported/Engine/Classes/DecalActorMovable.uc new file mode 100755 index 00000000..e8918a54 --- /dev/null +++ b/exported/Engine/Classes/DecalActorMovable.uc @@ -0,0 +1,24 @@ +class DecalActorMovable extends DecalActorBase + native(Decal) + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DecalComponent'Engine.Default__DecalActorMovable.NewDecalComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'NewDecalComponent' + // Archetype: DecalComponent'Engine.Default__DecalActorBase.NewDecalComponent' + begin object name="NewDecalComponent" + bMovableDecal=true + ReplacementPrimitive=none + end object + Decal=NewDecalComponent + Components[0]=NewDecalComponent + Components[1]=none + Components[2]=none + bStatic=false + bNoDelete=true + bHardAttach=true + bMovable=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DecalComponent.uc b/exported/Engine/Classes/DecalComponent.uc new file mode 100755 index 00000000..4c3529da --- /dev/null +++ b/exported/Engine/Classes/DecalComponent.uc @@ -0,0 +1,129 @@ +class DecalComponent extends PrimitiveComponent + native(Decal) + editinlinenew + hidecategories(Collision,Object,Physics,PrimitiveComponent); + +enum EDecalTransform +{ + DecalTransform_OwnerAbsolute, // 0 + DecalTransform_OwnerRelative, // 1 + DecalTransform_SpawnRelative, // 2 + DecalTransform_MAX // 3 +}; + +enum EFilterMode +{ + FM_None, // 0 + FM_Ignore, // 1 + FM_Affect, // 2 + FM_MAX // 3 +}; + +struct native DecalReceiver +{ + var const export editinline PrimitiveComponent Component; + var native const Pointer RenderData; + + structdefaultproperties + { + Component=none + } +}; + +var(Decal) private const MaterialInterface DecalMaterial; +var(Decal) float Width; +var(Decal) float Height; +var(Decal) float TileX; +var(Decal) float TileY; +var(Decal) float OffsetX; +var(Decal) float OffsetY; +var(Decal) float DecalRotation; +var float FieldOfView; +var(Decal) float NearPlane; +var(Decal) float FarPlane; +var transient Vector Location; +var transient Rotator Orientation; +var Vector HitLocation; +var Vector HitNormal; +var Vector HitTangent; +var Vector HitBinormal; +var(Decal) bool bNoClip; +var const bool bStaticDecal; +var(GlobalAgenda) bool m_bIsGameplayDecal; +var(DecalFilter) bool bProjectOnBackfaces; +var(DecalFilter) bool bProjectOnHidden; +var(DecalFilter) bool bProjectOnBSP; +var(DecalFilter) bool bProjectOnStaticMeshes; +var(DecalFilter) bool bProjectOnSkeletalMeshes; +var(DecalFilter) bool bProjectOnTerrain; +var bool bFlipBackfaceDirection; +var bool bMovableDecal; +var private transient bool bHasBeenAttached; +var() bool bDecalMaterialSetAtRunTime; +var export editinline transient PrimitiveComponent HitComponent; +var transient name HitBone; +var transient int HitNodeIndex; +var transient int HitLevelIndex; +var transient int FracturedStaticMeshComponentIndex; +var private const transient array HitNodeIndices; +var private noimport duplicatetransient const array DecalReceivers; +var private noimport duplicatetransient native const transient array StaticReceivers; +var duplicatetransient native const transient Pointer ReleaseResourcesFence; +var private transient array Planes; +var(DecalRender) float DepthBias; +var(DecalRender) float SlopeScaleDepthBias; +var(DecalRender) float OrbisDepthBias; +var(DecalRender) float OrbisSlopeScaleDepthBias; +var(DecalRender) int SortOrder; +var(DecalRender) float BackfaceAngle; +var(DecalRender) Vector2D BlendRange; +var(DecalRender) const float StreamingDistanceMultiplier; +var const DecalComponent.EDecalTransform DecalTransform; +var(DecalFilter) DecalComponent.EFilterMode FilterMode; +var(DecalFilter) array Filter; +var(DecalFilter) export editinline array ReceiverImages; +var(DecalRender) Vector ParentRelativeLocation; +var(DecalRender) Rotator ParentRelativeOrientation; +var private const transient Matrix ParentRelLocRotMatrix; + +// Export UDecalComponent::execResetToDefaults(FFrame&, void* const) +native final function ResetToDefaults(); + +// Export UDecalComponent::execSetDecalMaterial(FFrame&, void* const) +native final function SetDecalMaterial(MaterialInterface NewDecalMaterial); + +// Export UDecalComponent::execGetDecalMaterial(FFrame&, void* const) +native final function MaterialInterface GetDecalMaterial(); + +// Export UDecalComponent::execIsWaitingForResetToDefaultsToComplete(FFrame&, void* const) +native final function bool IsWaitingForResetToDefaultsToComplete(); + +// Export UDecalComponent::execSetParentRelativeLocation(FFrame&, void* const) +native final function SetParentRelativeLocation(Vector relLoc); + +defaultproperties +{ + Width=200.0000000 + Height=200.0000000 + TileX=1.0000000 + TileY=1.0000000 + FieldOfView=80.0000000 + FarPlane=300.0000000 + bProjectOnBSP=true + bProjectOnStaticMeshes=true + bProjectOnSkeletalMeshes=true + bProjectOnTerrain=true + HitNodeIndex=-1 + HitLevelIndex=-1 + DepthBias=-0.0000600 + OrbisDepthBias=-1.6000000 + OrbisSlopeScaleDepthBias=50.0000000 + BackfaceAngle=0.0010000 + BlendRange=(X=89.5000000,Y=180.0000000) + StreamingDistanceMultiplier=1.0000000 + DecalTransform=EDecalTransform.DecalTransform_SpawnRelative + ReplacementPrimitive=none + bAcceptsDynamicDecals=false + bCastDynamicShadow=false + bAcceptsDynamicLights=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/DecalManager.uc b/exported/Engine/Classes/DecalManager.uc new file mode 100755 index 00000000..ece690d2 --- /dev/null +++ b/exported/Engine/Classes/DecalManager.uc @@ -0,0 +1,171 @@ +class DecalManager extends Actor + native(Decal) + config(Game) + notplaceable + hidecategories(Navigation); + +struct native ActiveDecalInfo +{ + var export editinline DecalComponent Decal; + var float LifetimeRemaining; + + structdefaultproperties + { + Decal=none + LifetimeRemaining=0.0000000 + } +}; + +var protected export editinline DecalComponent DecalTemplate; +var export editinline array PoolDecals; +var globalconfig float DecalLifeSpan; +var float DecalDepthBias; +var float OrbisDecalDepthBias; +var Vector2D DecalBlendRange; +var array ActiveDecals; + +// Export UDecalManager::execAreDynamicDecalsEnabled(FFrame&, void* const) +native static final function bool AreDynamicDecalsEnabled(); + +// Export UDecalManager::execGetMaxActiveDecals(FFrame&, void* const) +native static final function int GetMaxActiveDecals(); + +event DecalFinished(DecalComponent Decal) +{ + // End:0x4C + if(Decal != none) + { + Decal.ResetToDefaults(); + PoolDecals[PoolDecals.Length] = Decal; + } + //return; +} + +function bool CanSpawnDecals() +{ + return AreDynamicDecalsEnabled(); + //return ReturnValue; +} + +static final function SetDecalParameters(DecalComponent TheDecal, MaterialInterface DecalMaterial, Vector DecalLocation, Rotator DecalOrientation, float Width, float Height, float Thickness, bool bNoClip, float DecalRotation, PrimitiveComponent HitComponent, bool bProjectOnTerrain, bool bProjectOnSkeletalMeshes, name HitBone, int HitNodeIndex, int HitLevelIndex, int InFracturedStaticMeshComponentIndex, float DepthBias, float OrbisDepthBias, Vector2D BlendRange) +{ + TheDecal.Location = DecalLocation; + TheDecal.Orientation = DecalOrientation; + TheDecal.DecalRotation = DecalRotation; + TheDecal.Width = Width; + TheDecal.Height = Height; + TheDecal.FarPlane = Thickness * 0.5000000; + TheDecal.NearPlane = -TheDecal.FarPlane; + TheDecal.bNoClip = bNoClip; + TheDecal.HitComponent = HitComponent; + TheDecal.HitBone = HitBone; + TheDecal.HitNodeIndex = HitNodeIndex; + TheDecal.HitLevelIndex = HitLevelIndex; + TheDecal.SetDecalMaterial(DecalMaterial); + TheDecal.bProjectOnTerrain = bProjectOnTerrain; + TheDecal.bProjectOnSkeletalMeshes = bProjectOnSkeletalMeshes; + TheDecal.FracturedStaticMeshComponentIndex = InFracturedStaticMeshComponentIndex; + TheDecal.DepthBias = DepthBias; + TheDecal.OrbisDepthBias = OrbisDepthBias; + TheDecal.BlendRange = BlendRange; + //return; +} + +protected function DecalComponent GetPooledComponent() +{ + local int I; + local editinline DecalComponent Result; + local int MaxActiveDecals; + + J0x00: + // End:0xC8 [Loop If] + if(PoolDecals.Length > 0) + { + I = PoolDecals.Length - 1; + Result = PoolDecals[I]; + PoolDecals.Remove(I, 1); + // End:0xBA + if(((Result != none) && !Result.IsPendingKill()) && !Result.IsWaitingForResetToDefaultsToComplete()) + { + // [Explicit Break] + goto J0xC8; + } + else + { + Result = none; + } + // [Loop Continue] + goto J0x00; + } + J0xC8: + + // End:0x19D + if(Result == none) + { + MaxActiveDecals = GetMaxActiveDecals(); + // End:0x168 + if((MaxActiveDecals > 0) && ActiveDecals.Length >= MaxActiveDecals) + { + Result = ActiveDecals[0].Decal; + Result.ResetToDefaults(); + ActiveDecals.Remove(0, 1); + } + Result = new (self) DecalTemplate.Class (DecalTemplate); + } + return Result; + //return ReturnValue; +} + +function DecalComponent SpawnDecal(bool bUsePool, MaterialInterface DecalMaterial, Vector DecalLocation, Rotator DecalOrientation, float Width, float Height, float Thickness, bool bNoClip, optional float DecalRotation = -1.0000000, optional PrimitiveComponent HitComponent, optional bool bProjectOnTerrain = true, optional bool bProjectOnSkeletalMeshes, optional name HitBone, optional int HitNodeIndex = -1, optional int HitLevelIndex = -1, optional float InDecalLifeSpan = DecalLifeSpan, optional int InFracturedStaticMeshComponentIndex = -1, optional float InDepthBias = DecalDepthBias, optional float InOrbisDepthBias = OrbisDecalDepthBias, optional Vector2D InBlendRange = DecalBlendRange) +{ + local editinline DecalComponent Result; + local ActiveDecalInfo DecalInfo; + + // End:0x71 + if(!CanSpawnDecals()) + { + return none; + } + // End:0x95 + if(bUsePool) + { + Result = GetPooledComponent(); + } + else + { + Result = new (self) Class'Engine.DecalComponent'; + } + // End:0xD1 + if(DecalRotation < float(0)) + { + DecalRotation = FRand() * 360.0000000; + } + SetDecalParameters(Result, DecalMaterial, DecalLocation, DecalOrientation, Width, Height, Thickness, bNoClip, DecalRotation, HitComponent, bProjectOnTerrain, bProjectOnSkeletalMeshes, HitBone, HitNodeIndex, HitLevelIndex, -1, InDepthBias, InOrbisDepthBias, InBlendRange); + AttachComponent(Result); + // End:0x207 + if(bUsePool) + { + DecalInfo.Decal = Result; + DecalInfo.LifetimeRemaining = InDecalLifeSpan; + ActiveDecals.AddItem(DecalInfo); + } + return Result; + //return ReturnValue; +} + +defaultproperties +{ + // Reference: DecalComponent'Engine.Default__DecalManager.BaseDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BaseDecal' + begin object name="BaseDecal" class=Engine.DecalComponent + ReplacementPrimitive=none + bIgnoreOwnerHidden=true + end object + DecalTemplate=BaseDecal + DecalLifeSpan=30.0000000 + DecalDepthBias=-0.0000600 + OrbisDecalDepthBias=-1.6000000 + DecalBlendRange=(X=89.5000000,Y=180.0000000) + TickGroup=ETickingGroup.TG_DuringAsyncWork +} \ No newline at end of file diff --git a/exported/Engine/Classes/DecalMaterial.uc b/exported/Engine/Classes/DecalMaterial.uc new file mode 100755 index 00000000..707a6249 --- /dev/null +++ b/exported/Engine/Classes/DecalMaterial.uc @@ -0,0 +1,12 @@ +class DecalMaterial extends Material + native(Decal) + hidecategories(Object); + +defaultproperties +{ + bUsedWithSkeletalMesh=true + bUsedWithFracturedMeshes=true + bUsedWithFluidSurfaces=true + bUsedWithDecals=true + bUsedWithMorphTargets=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DefaultPhysicsVolume.uc b/exported/Engine/Classes/DefaultPhysicsVolume.uc new file mode 100755 index 00000000..55f1d558 --- /dev/null +++ b/exported/Engine/Classes/DefaultPhysicsVolume.uc @@ -0,0 +1,29 @@ +class DefaultPhysicsVolume extends PhysicsVolume + transient + native + notplaceable + hidecategories(Navigation,Object,Movement,Display); + +event Destroyed() +{ + // DebugMode: 0 + assert(false); + //return; +} + +defaultproperties +{ + // Reference: BrushComponent'Engine.Default__DefaultPhysicsVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__PhysicsVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + TickGroup=ETickingGroup.TG_DuringAsyncWork + bStatic=false + bNoDelete=false + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/DirectionalLight.uc b/exported/Engine/Classes/DirectionalLight.uc new file mode 100755 index 00000000..6e42b5e4 --- /dev/null +++ b/exported/Engine/Classes/DirectionalLight.uc @@ -0,0 +1,21 @@ +class DirectionalLight extends Light + native(Light) + placeable + hidecategories(Navigation) + classgroup(Lights,DirectionalLights); + +defaultproperties +{ + // Reference: DirectionalLightComponent'Engine.Default__DirectionalLight.DirectionalLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DirectionalLightComponent0' + begin object name="DirectionalLightComponent0" class=Engine.DirectionalLightComponent + UseDirectLightMap=true + LightAffectsClassification=ELightAffectsClassification.LAC_DYNAMIC_AND_STATIC_AFFECTING + end object + LightComponent=DirectionalLightComponent0 + Components[0]=none + Components[1]=DirectionalLightComponent0 + Components[2]=none + Rotation=(Pitch=-16384,Yaw=0,Roll=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/DirectionalLightComponent.uc b/exported/Engine/Classes/DirectionalLightComponent.uc new file mode 100755 index 00000000..dbc64f93 --- /dev/null +++ b/exported/Engine/Classes/DirectionalLightComponent.uc @@ -0,0 +1,30 @@ +class DirectionalLightComponent extends LightComponent + native(Light) + editinlinenew + hidecategories(Object); + +var(AdvancedLighting) float TraceDistance; +var(CascadedShadowMaps) interp float WholeSceneDynamicShadowRadius; +var(CascadedShadowMaps) const int NumWholeSceneDynamicShadowCascades; +var(CascadedShadowMaps) const float CascadeDistributionExponent; +var(Lightmass) LightmassDirectionalLightSettings LightmassSettings; + +function OnUpdatePropertyLightColor() +{ + UpdateColorAndBrightness(); + //return; +} + +function OnUpdatePropertyBrightness() +{ + UpdateColorAndBrightness(); + //return; +} + +defaultproperties +{ + TraceDistance=100000.0000000 + NumWholeSceneDynamicShadowCascades=1 + CascadeDistributionExponent=4.0000000 + LightmassSettings=(LightSourceAngle=3.0000000,IndirectLightingScale=1.0000000,IndirectLightingSaturation=1.0000000,ShadowExponent=2.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/DirectionalLightToggleable.uc b/exported/Engine/Classes/DirectionalLightToggleable.uc new file mode 100755 index 00000000..e752ed25 --- /dev/null +++ b/exported/Engine/Classes/DirectionalLightToggleable.uc @@ -0,0 +1,24 @@ +class DirectionalLightToggleable extends DirectionalLight + native(Light) + placeable + hidecategories(Navigation) + classgroup(Lights,DirectionalLights); + +defaultproperties +{ + // Reference: DirectionalLightComponent'Engine.Default__DirectionalLightToggleable.DirectionalLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DirectionalLightComponent0' + // Archetype: DirectionalLightComponent'Engine.Default__DirectionalLight.DirectionalLightComponent0' + begin object name="DirectionalLightComponent0" + LightmassSettings=(IndirectLightingScale=0.0000000) + UseDirectLightMap=false + end object + LightComponent=DirectionalLightComponent0 + Components[0]=none + Components[1]=DirectionalLightComponent0 + Components[2]=none + TickGroup=ETickingGroup.TG_DuringAsyncWork + bStatic=false + bHardAttach=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DistributionFloatConstant.uc b/exported/Engine/Classes/DistributionFloatConstant.uc new file mode 100755 index 00000000..1f48a773 --- /dev/null +++ b/exported/Engine/Classes/DistributionFloatConstant.uc @@ -0,0 +1,7 @@ +class DistributionFloatConstant extends DistributionFloat + native + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() float Constant; diff --git a/exported/Engine/Classes/DistributionFloatConstantCurve.uc b/exported/Engine/Classes/DistributionFloatConstantCurve.uc new file mode 100755 index 00000000..5686d3ed --- /dev/null +++ b/exported/Engine/Classes/DistributionFloatConstantCurve.uc @@ -0,0 +1,7 @@ +class DistributionFloatConstantCurve extends DistributionFloat + native + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() InterpCurveFloat ConstantCurve; diff --git a/exported/Engine/Classes/DistributionFloatParameterBase.uc b/exported/Engine/Classes/DistributionFloatParameterBase.uc new file mode 100755 index 00000000..db9d6081 --- /dev/null +++ b/exported/Engine/Classes/DistributionFloatParameterBase.uc @@ -0,0 +1,27 @@ +class DistributionFloatParameterBase extends DistributionFloatConstant + abstract + native + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +enum DistributionParamMode +{ + DPM_Normal, // 0 + DPM_Abs, // 1 + DPM_Direct, // 2 + DPM_MAX // 3 +}; + +var() name ParameterName; +var() float MinInput; +var() float MaxInput; +var() float MinOutput; +var() float MaxOutput; +var() DistributionFloatParameterBase.DistributionParamMode ParamMode; + +defaultproperties +{ + MaxInput=1.0000000 + MaxOutput=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/DistributionFloatParticleParameter.uc b/exported/Engine/Classes/DistributionFloatParticleParameter.uc new file mode 100755 index 00000000..bbe4d698 --- /dev/null +++ b/exported/Engine/Classes/DistributionFloatParticleParameter.uc @@ -0,0 +1,5 @@ +class DistributionFloatParticleParameter extends DistributionFloatParameterBase + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object,Object); diff --git a/exported/Engine/Classes/DistributionFloatSoundParameter.uc b/exported/Engine/Classes/DistributionFloatSoundParameter.uc new file mode 100755 index 00000000..d92a292e --- /dev/null +++ b/exported/Engine/Classes/DistributionFloatSoundParameter.uc @@ -0,0 +1,5 @@ +class DistributionFloatSoundParameter extends DistributionFloatParameterBase + native(Sound) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object,Object); diff --git a/exported/Engine/Classes/DistributionFloatUniform.uc b/exported/Engine/Classes/DistributionFloatUniform.uc new file mode 100755 index 00000000..34889b29 --- /dev/null +++ b/exported/Engine/Classes/DistributionFloatUniform.uc @@ -0,0 +1,8 @@ +class DistributionFloatUniform extends DistributionFloat + native + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() float Min; +var() float Max; diff --git a/exported/Engine/Classes/DistributionFloatUniformCurve.uc b/exported/Engine/Classes/DistributionFloatUniformCurve.uc new file mode 100755 index 00000000..db005bb6 --- /dev/null +++ b/exported/Engine/Classes/DistributionFloatUniformCurve.uc @@ -0,0 +1,7 @@ +class DistributionFloatUniformCurve extends DistributionFloat + native + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() InterpCurveVector2D ConstantCurve; diff --git a/exported/Engine/Classes/DistributionFloatUniformRange.uc b/exported/Engine/Classes/DistributionFloatUniformRange.uc new file mode 100755 index 00000000..2158f28d --- /dev/null +++ b/exported/Engine/Classes/DistributionFloatUniformRange.uc @@ -0,0 +1,16 @@ +class DistributionFloatUniformRange extends DistributionFloat + native + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() float MaxHigh; +var() float MaxLow; +var() float MinHigh; +var() float MinLow; +var() bool bMirrorMaxMin; + +defaultproperties +{ + bCanBeBaked=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/DistributionVectorConstant.uc b/exported/Engine/Classes/DistributionVectorConstant.uc new file mode 100755 index 00000000..a6b53114 --- /dev/null +++ b/exported/Engine/Classes/DistributionVectorConstant.uc @@ -0,0 +1,9 @@ +class DistributionVectorConstant extends DistributionVector + native + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() Vector Constant; +var bool bLockAxes; +var() DistributionVector.EDistributionVectorLockFlags LockedAxes; diff --git a/exported/Engine/Classes/DistributionVectorConstantCurve.uc b/exported/Engine/Classes/DistributionVectorConstantCurve.uc new file mode 100755 index 00000000..e97c92b3 --- /dev/null +++ b/exported/Engine/Classes/DistributionVectorConstantCurve.uc @@ -0,0 +1,9 @@ +class DistributionVectorConstantCurve extends DistributionVector + native + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() InterpCurveVector ConstantCurve; +var bool bLockAxes; +var() DistributionVector.EDistributionVectorLockFlags LockedAxes; diff --git a/exported/Engine/Classes/DistributionVectorParameterBase.uc b/exported/Engine/Classes/DistributionVectorParameterBase.uc new file mode 100755 index 00000000..f3863d21 --- /dev/null +++ b/exported/Engine/Classes/DistributionVectorParameterBase.uc @@ -0,0 +1,19 @@ +class DistributionVectorParameterBase extends DistributionVectorConstant + abstract + native + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +var() name ParameterName; +var() Vector MinInput; +var() Vector MaxInput; +var() Vector MinOutput; +var() Vector MaxOutput; +var() export DistributionFloatParameterBase.DistributionParamMode ParamModes[3]; + +defaultproperties +{ + MaxInput=(X=1.0000000,Y=1.0000000,Z=1.0000000) + MaxOutput=(X=1.0000000,Y=1.0000000,Z=1.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/DistributionVectorParticleParameter.uc b/exported/Engine/Classes/DistributionVectorParticleParameter.uc new file mode 100755 index 00000000..92d0f82a --- /dev/null +++ b/exported/Engine/Classes/DistributionVectorParticleParameter.uc @@ -0,0 +1,5 @@ +class DistributionVectorParticleParameter extends DistributionVectorParameterBase + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object,Object); diff --git a/exported/Engine/Classes/DistributionVectorUniform.uc b/exported/Engine/Classes/DistributionVectorUniform.uc new file mode 100755 index 00000000..f118d211 --- /dev/null +++ b/exported/Engine/Classes/DistributionVectorUniform.uc @@ -0,0 +1,19 @@ +class DistributionVectorUniform extends DistributionVector + native + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() Vector Max; +var() Vector Min; +var bool bLockAxes; +var() bool bUseExtremes; +var() DistributionVector.EDistributionVectorLockFlags LockedAxes; +var() DistributionVector.EDistributionVectorMirrorFlags MirrorFlags[3]; + +defaultproperties +{ + MirrorFlags[0]=EDistributionVectorMirrorFlags.EDVMF_Different + MirrorFlags[1]=EDistributionVectorMirrorFlags.EDVMF_Different + MirrorFlags[2]=EDistributionVectorMirrorFlags.EDVMF_Different +} \ No newline at end of file diff --git a/exported/Engine/Classes/DistributionVectorUniformCurve.uc b/exported/Engine/Classes/DistributionVectorUniformCurve.uc new file mode 100755 index 00000000..523c8eda --- /dev/null +++ b/exported/Engine/Classes/DistributionVectorUniformCurve.uc @@ -0,0 +1,19 @@ +class DistributionVectorUniformCurve extends DistributionVector + native + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() InterpCurveTwoVectors ConstantCurve; +var bool bLockAxes1; +var bool bLockAxes2; +var() bool bUseExtremes; +var() DistributionVector.EDistributionVectorLockFlags LockedAxes[2]; +var() DistributionVector.EDistributionVectorMirrorFlags MirrorFlags[3]; + +defaultproperties +{ + MirrorFlags[0]=EDistributionVectorMirrorFlags.EDVMF_Different + MirrorFlags[1]=EDistributionVectorMirrorFlags.EDVMF_Different + MirrorFlags[2]=EDistributionVectorMirrorFlags.EDVMF_Different +} \ No newline at end of file diff --git a/exported/Engine/Classes/DistributionVectorUniformRange.uc b/exported/Engine/Classes/DistributionVectorUniformRange.uc new file mode 100755 index 00000000..18a54ac1 --- /dev/null +++ b/exported/Engine/Classes/DistributionVectorUniformRange.uc @@ -0,0 +1,15 @@ +class DistributionVectorUniformRange extends DistributionVector + native + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() Vector MaxHigh; +var() Vector MaxLow; +var() Vector MinHigh; +var() Vector MinLow; + +defaultproperties +{ + bCanBeBaked=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/DmgType_Crushed.uc b/exported/Engine/Classes/DmgType_Crushed.uc new file mode 100755 index 00000000..61448e82 --- /dev/null +++ b/exported/Engine/Classes/DmgType_Crushed.uc @@ -0,0 +1 @@ +class DmgType_Crushed extends DamageType; diff --git a/exported/Engine/Classes/DmgType_Fell.uc b/exported/Engine/Classes/DmgType_Fell.uc new file mode 100755 index 00000000..a9e906f4 --- /dev/null +++ b/exported/Engine/Classes/DmgType_Fell.uc @@ -0,0 +1,7 @@ +class DmgType_Fell extends DamageType + abstract; + +defaultproperties +{ + bCausedByWorld=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DmgType_Suicided.uc b/exported/Engine/Classes/DmgType_Suicided.uc new file mode 100755 index 00000000..a16804ef --- /dev/null +++ b/exported/Engine/Classes/DmgType_Suicided.uc @@ -0,0 +1,7 @@ +class DmgType_Suicided extends KillZDamageType + abstract; + +defaultproperties +{ + bArmorStops=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/DmgType_Telefragged.uc b/exported/Engine/Classes/DmgType_Telefragged.uc new file mode 100755 index 00000000..01f9c0be --- /dev/null +++ b/exported/Engine/Classes/DmgType_Telefragged.uc @@ -0,0 +1,6 @@ +class DmgType_Telefragged extends DamageType; + +defaultproperties +{ + bArmorStops=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/DominantDirectionalLight.uc b/exported/Engine/Classes/DominantDirectionalLight.uc new file mode 100755 index 00000000..0e1ef001 --- /dev/null +++ b/exported/Engine/Classes/DominantDirectionalLight.uc @@ -0,0 +1,23 @@ +class DominantDirectionalLight extends DirectionalLight + native(Light) + placeable + hidecategories(Navigation) + classgroup(Lights,DirectionalLights); + +defaultproperties +{ + // Reference: DominantDirectionalLightComponent'Engine.Default__DominantDirectionalLight.DominantDirectionalLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DominantDirectionalLightComponent0' + begin object name="DominantDirectionalLightComponent0" class=Engine.DominantDirectionalLightComponent + LightmassSettings=(LightSourceAngle=0.2000000) + bAllowPreShadow=true + LightAffectsClassification=ELightAffectsClassification.LAC_DYNAMIC_AND_STATIC_AFFECTING + end object + LightComponent=DominantDirectionalLightComponent0 + Components[0]=none + Components[1]=none + Components[2]=DominantDirectionalLightComponent0 + bStatic=false + bHardAttach=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DominantDirectionalLightComponent.uc b/exported/Engine/Classes/DominantDirectionalLightComponent.uc new file mode 100755 index 00000000..cf3a9ec8 --- /dev/null +++ b/exported/Engine/Classes/DominantDirectionalLightComponent.uc @@ -0,0 +1,12 @@ +class DominantDirectionalLightComponent extends DirectionalLightComponent + native(Light) + editinlinenew + hidecategories(Object,Object); + +var private const DominantShadowInfo DominantLightShadowInfo; +var private native const Array_Mirror DominantLightShadowMap; + +defaultproperties +{ + LightShadowMode=ELightShadowMode.LightShadow_Normal +} \ No newline at end of file diff --git a/exported/Engine/Classes/DominantDirectionalLightMovable.uc b/exported/Engine/Classes/DominantDirectionalLightMovable.uc new file mode 100755 index 00000000..8f9dc10d --- /dev/null +++ b/exported/Engine/Classes/DominantDirectionalLightMovable.uc @@ -0,0 +1,22 @@ +class DominantDirectionalLightMovable extends DominantDirectionalLight + native(Light) + placeable + hidecategories(Navigation) + classgroup(Lights,DirectionalLights); + +defaultproperties +{ + // Reference: DominantDirectionalLightComponent'Engine.Default__DominantDirectionalLightMovable.DominantDirectionalLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DominantDirectionalLightComponent0' + // Archetype: DominantDirectionalLightComponent'Engine.Default__DominantDirectionalLight.DominantDirectionalLightComponent0' + begin object name="DominantDirectionalLightComponent0" + WholeSceneDynamicShadowRadius=2000.0000000 + end object + LightComponent=DominantDirectionalLightComponent0 + Components[0]=none + Components[1]=none + Components[2]=DominantDirectionalLightComponent0 + Physics=EPhysics.PHYS_Interpolating + bMovable=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DominantPointLight.uc b/exported/Engine/Classes/DominantPointLight.uc new file mode 100755 index 00000000..489c6b22 --- /dev/null +++ b/exported/Engine/Classes/DominantPointLight.uc @@ -0,0 +1,23 @@ +class DominantPointLight extends PointLight + native(Light) + placeable + hidecategories(Navigation) + classgroup(Lights,PointLights); + +defaultproperties +{ + // Reference: DominantPointLightComponent'Engine.Default__DominantPointLight.DominantPointLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DominantPointLightComponent0' + begin object name="DominantPointLightComponent0" class=Engine.DominantPointLightComponent + bAllowPreShadow=true + LightAffectsClassification=ELightAffectsClassification.LAC_DYNAMIC_AND_STATIC_AFFECTING + end object + LightComponent=DominantPointLightComponent0 + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=DominantPointLightComponent0 + bStatic=false + bHardAttach=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DominantPointLightComponent.uc b/exported/Engine/Classes/DominantPointLightComponent.uc new file mode 100755 index 00000000..2ea9a441 --- /dev/null +++ b/exported/Engine/Classes/DominantPointLightComponent.uc @@ -0,0 +1,9 @@ +class DominantPointLightComponent extends PointLightComponent + native(Light) + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + LightShadowMode=ELightShadowMode.LightShadow_Normal +} \ No newline at end of file diff --git a/exported/Engine/Classes/DominantSpotLight.uc b/exported/Engine/Classes/DominantSpotLight.uc new file mode 100755 index 00000000..5d601466 --- /dev/null +++ b/exported/Engine/Classes/DominantSpotLight.uc @@ -0,0 +1,26 @@ +class DominantSpotLight extends SpotLight + native(Light) + placeable + hidecategories(Navigation) + classgroup(Lights,SpotLights); + +defaultproperties +{ + // Reference: DominantSpotLightComponent'Engine.Default__DominantSpotLight.DominantSpotLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DominantSpotLightComponent0' + begin object name="DominantSpotLightComponent0" class=Engine.DominantSpotLightComponent + bAllowPreShadow=true + LightAffectsClassification=ELightAffectsClassification.LAC_DYNAMIC_AND_STATIC_AFFECTING + end object + LightComponent=DominantSpotLightComponent0 + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=none + Components[4]=none + Components[5]=none + Components[6]=DominantSpotLightComponent0 + bStatic=false + bHardAttach=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DominantSpotLightComponent.uc b/exported/Engine/Classes/DominantSpotLightComponent.uc new file mode 100755 index 00000000..1fac9ef4 --- /dev/null +++ b/exported/Engine/Classes/DominantSpotLightComponent.uc @@ -0,0 +1,12 @@ +class DominantSpotLightComponent extends SpotLightComponent + native(Light) + editinlinenew + hidecategories(Object,Object,Object); + +var private const DominantShadowInfo DominantLightShadowInfo; +var private native const Array_Mirror DominantLightShadowMap; + +defaultproperties +{ + LightShadowMode=ELightShadowMode.LightShadow_Normal +} \ No newline at end of file diff --git a/exported/Engine/Classes/DoorMarker.uc b/exported/Engine/Classes/DoorMarker.uc new file mode 100755 index 00000000..4a24bc7e --- /dev/null +++ b/exported/Engine/Classes/DoorMarker.uc @@ -0,0 +1,201 @@ +class DoorMarker extends NavigationPoint + native + placeable + hidecategories(Navigation,Lighting,LightColor,Force); + +enum EDoorType +{ + DOOR_Shoot, // 0 + DOOR_Touch, // 1 + DOOR_MAX // 2 +}; + +var() InterpActor MyDoor; +var() DoorMarker.EDoorType DoorType; +var() Actor DoorTrigger; +var() bool bWaitUntilCompletelyOpened; +var() bool bInitiallyClosed; +var() bool bBlockedWhenClosed; +var bool bDoorOpen; +var const transient bool bTempDisabledCollision; + +event PostBeginPlay() +{ + bBlocked = bInitiallyClosed && bBlockedWhenClosed; + bDoorOpen = !bInitiallyClosed; + super(Actor).PostBeginPlay(); + //return; +} + +function MoverOpened() +{ + bBlocked = !bInitiallyClosed && bBlockedWhenClosed; + bDoorOpen = bInitiallyClosed; + WorldInfo.Game.NotifyNavigationChanged(self); + //return; +} + +function MoverClosed() +{ + bBlocked = bInitiallyClosed && bBlockedWhenClosed; + bDoorOpen = !bInitiallyClosed; + WorldInfo.Game.NotifyNavigationChanged(self); + //return; +} + +event Actor SpecialHandling(Pawn Other) +{ + local Actor TouchActor; + + // End:0x6A + if((bDoorOpen || MyDoor == none) || bInitiallyClosed == (bDoorOpen || VSizeSq(MyDoor.Velocity) > 1.0000000)) + { + return self; + } + else + { + // End:0xFB + if(int(DoorType) == int(1)) + { + // End:0x9A + if(DoorTrigger == none) + { + return MyDoor; + } + else + { + TouchActor = DoorTrigger.SpecialHandling(Other); + // End:0xEE + if(TouchActor == none) + { + TouchActor = DoorTrigger; + } + return TouchActor; + } + } + else + { + return self; + } + } + //return ReturnValue; +} + +function bool ProceedWithMove(Pawn Other) +{ + // End:0x8B + if((int(DoorType) == int(0)) && Other.Controller.Focus == MyDoor) + { + Other.Controller.StopFiring(); + } + // End:0xB0 + if(bDoorOpen || int(DoorType) != int(0)) + { + return true; + } + Other.Controller.Focus = ((DoorTrigger != none) ? DoorTrigger : MyDoor); + // End:0x1AF + if(!Other.Controller.FireWeaponAt(Other.Controller.Focus)) + { + Other.Controller.MoveTimer = 0.2500000; + } + else + { + // End:0x1F9 + if(bWaitUntilCompletelyOpened) + { + Other.Controller.WaitForMover(MyDoor); + } + } + return false; + //return ReturnValue; +} + +event bool SuggestMovePreparation(Pawn Other) +{ + // End:0x23 + if(bDoorOpen || MyDoor == none) + { + return false; + } + else + { + // End:0x8F + if(VSizeSq(MyDoor.Velocity) > 1.0000000) + { + Other.Controller.WaitForMover(MyDoor); + return true; + } + else + { + // End:0x264 + if(int(DoorType) == int(0)) + { + Other.Controller.Focus = ((DoorTrigger != none) ? DoorTrigger : MyDoor); + // End:0x1DA + if(!Other.Controller.FireWeaponAt(Other.Controller.Focus)) + { + Other.Controller.MoveTimer = 0.2500000; + Other.Controller.bPreparingMove = true; + return true; + } + else + { + // End:0x25F + if(bWaitUntilCompletelyOpened) + { + Other.Controller.WaitForMover(MyDoor); + Other.Controller.bPreparingMove = true; + return true; + } + else + { + return false; + } + } + } + else + { + // End:0x418 + if(((int(DoorType) == int(1)) && DoorTrigger != none) && Other.Controller.ActorReachable(DoorTrigger)) + { + // End:0x36C + if(Other.Controller.Focus == Other.Controller.MoveTarget) + { + Other.Controller.Focus = DoorTrigger; + } + Other.Controller.MoveTarget = DoorTrigger; + Other.Controller.CurrentPath = none; + Other.Controller.NextRoutePath = none; + return false; + } + else + { + return false; + } + } + } + } + //return ReturnValue; +} + +defaultproperties +{ + bInitiallyClosed=true + bSpecialMove=true + ExtraCost=100 + // Reference: CylinderComponent'Engine.Default__DoorMarker.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/DownloadableContentEnumerator.uc b/exported/Engine/Classes/DownloadableContentEnumerator.uc new file mode 100755 index 00000000..7009155a --- /dev/null +++ b/exported/Engine/Classes/DownloadableContentEnumerator.uc @@ -0,0 +1,65 @@ +class DownloadableContentEnumerator extends Object + native(GameEngine); + +var protectedwrite array DLCBundles; +var string DLCRootDir; +var protected array< delegate > FindDLCDelegates; +//var delegate __OnFindDLCComplete__Delegate; + +// Export UDownloadableContentEnumerator::execFindDLC(FFrame&, void* const) +native function FindDLC(); + +delegate OnFindDLCComplete() +{ + //return; +} + +function AddFindDLCDelegate(delegate InDelegate) +{ + // End:0x36 + if(FindDLCDelegates.Find(InDelegate) == -1) + { + FindDLCDelegates.AddItem(InDelegate); + } + //return; +} + +function ClearFindDLCDelegate(delegate InDelegate) +{ + local int RemoveIndex; + + RemoveIndex = FindDLCDelegates.Find(InDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + FindDLCDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UDownloadableContentEnumerator::execDeleteDLC(FFrame&, void* const) +native function DeleteDLC(string DLCName); + +function InstallAllDLC() +{ + local DownloadableContentManager DLCManager; + + DLCManager = Class'Engine.GameEngine'.static.GetDLCManager(); + // End:0x60 + if(DLCManager != none) + { + DLCManager.InstallDLCs(DLCBundles); + } + //return; +} + +// Export UDownloadableContentEnumerator::execInstallDLC(FFrame&, void* const) +native function InstallDLC(string DLCName); + +// Export UDownloadableContentEnumerator::execTriggerFindDLCDelegates(FFrame&, void* const) +native function TriggerFindDLCDelegates(); + +defaultproperties +{ + DLCRootDir="../../DLC/" +} \ No newline at end of file diff --git a/exported/Engine/Classes/DownloadableContentManager.uc b/exported/Engine/Classes/DownloadableContentManager.uc new file mode 100755 index 00000000..05622777 --- /dev/null +++ b/exported/Engine/Classes/DownloadableContentManager.uc @@ -0,0 +1,134 @@ +class DownloadableContentManager extends Object + native(GameEngine); + +var private native const noexport Pointer VfTable_FTickableObject; +var native const transient array DLCConfigCacheChanges; +var const transient array InstalledDLC; +var native const transient Map_Mirror NonPackageFilePathMap; +var native const transient array< Class > ClassesToReload; +var native const transient array ObjectsToReload; +var const transient array QueuedFullyLoadPackageInis; +var const transient GameEngine GameEngine; +var transient bool bWantsToRefreshDLC; +var transient bool bGameDidAuthorizedDLCRefresh; +//var delegate __OnRefreshComplete__Delegate; + +// Export UDownloadableContentManager::execInstallDLC(FFrame&, void* const) +native function bool InstallDLC(const out OnlineContent DLCBundle); + +// Export UDownloadableContentManager::execInstallDLCs(FFrame&, void* const) +native function InstallDLCs(const out array DLCBundles); + +// Export UDownloadableContentManager::execClearDLC(FFrame&, void* const) +native function ClearDLC(); + +// Export UDownloadableContentManager::execGetDLCNonPackageFilePath(FFrame&, void* const) +native function bool GetDLCNonPackageFilePath(name NonPackageFileName, out string Path); + +// Export UDownloadableContentManager::execAddSectionToObjectList(FFrame&, void* const) +native function AddSectionToObjectList(string Section); + +// Export UDownloadableContentManager::execMarkPerObjectConfigPendingKill(FFrame&, void* const) +native function MarkPerObjectConfigPendingKill(string Section); + +// Export UDownloadableContentManager::execUpdateObjectLists(FFrame&, void* const) +native function UpdateObjectLists(); + +// Export UDownloadableContentManager::execInstallPackages(FFrame&, void* const) +protected native function InstallPackages(const out OnlineContent DLCBundle); + +// Export UDownloadableContentManager::execInstallNonPackageFiles(FFrame&, void* const) +protected native function InstallNonPackageFiles(const out OnlineContent DLCBundle); + +event Init() +{ + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x1AA + if(OnlineSub != none) + { + // End:0xB3 + if(NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + OnlineSub.PlayerInterface.AddLoginChangeDelegate(OnLoginChange); + } + // End:0x12E + if(NotEqual_InterfaceInterface(OnlineSub.SystemInterface, OnlineSystemInterface(none))) + { + OnlineSub.SystemInterface.AddStorageDeviceChangeDelegate(OnStorageDeviceChange); + } + // End:0x1AA + if(NotEqual_InterfaceInterface(OnlineSub.ContentInterface, OnlineContentInterface(none))) + { + OnlineSub.ContentInterface.AddContentChangeDelegate(OnContentChange); + } + } + bWantsToRefreshDLC = false; + bGameDidAuthorizedDLCRefresh = false; + //return; +} + +function OnLoginChange(byte LocalUserNum) +{ + bWantsToRefreshDLC = true; + //return; +} + +function OnStorageDeviceChange() +{ + bWantsToRefreshDLC = true; + //return; +} + +function OnContentChange() +{ + bWantsToRefreshDLC = true; + //return; +} + +event AuthorizeDLCRefresh() +{ + bGameDidAuthorizedDLCRefresh = true; + //return; +} + +event RefreshDLC() +{ + local DownloadableContentEnumerator DLCEnum; + + ClearDLC(); + DLCEnum = Class'Engine.GameEngine'.static.GetDLCEnumerator(); + // End:0x91 + if(DLCEnum != none) + { + DLCEnum.AddFindDLCDelegate(RefreshDLCEnumComplete); + DLCEnum.FindDLC(); + } + bWantsToRefreshDLC = false; + bGameDidAuthorizedDLCRefresh = false; + //return; +} + +function RefreshDLCEnumComplete() +{ + local DownloadableContentEnumerator DLCEnum; + + DLCEnum = Class'Engine.GameEngine'.static.GetDLCEnumerator(); + // End:0x87 + if(DLCEnum != none) + { + DLCEnum.ClearFindDLCDelegate(RefreshDLCEnumComplete); + DLCEnum.InstallAllDLC(); + } + OnRefreshComplete(); + //return; +} + +// Export UDownloadableContentManager::execAddPackagesToFullyLoad(FFrame&, void* const) +native function AddPackagesToFullyLoad(string Filename); + +delegate OnRefreshComplete() +{ + //return; +} diff --git a/exported/Engine/Classes/DrawBoxComponent.uc b/exported/Engine/Classes/DrawBoxComponent.uc new file mode 100755 index 00000000..005525f3 --- /dev/null +++ b/exported/Engine/Classes/DrawBoxComponent.uc @@ -0,0 +1,22 @@ +class DrawBoxComponent extends PrimitiveComponent + native + editinlinenew + collapsecategories + noexport + hidecategories(Object); + +var() Color BoxColor; +var() Material BoxMaterial; +var() Vector BoxExtent; +var() bool bDrawWireBox; +var() bool bDrawLitBox; +var() bool bDrawOnlyIfSelected; + +defaultproperties +{ + BoxColor=(R=255,G=0,B=0,A=255) + BoxExtent=(X=200.0000000,Y=200.0000000,Z=200.0000000) + bDrawWireBox=true + ReplacementPrimitive=none + HiddenGame=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DrawCapsuleComponent.uc b/exported/Engine/Classes/DrawCapsuleComponent.uc new file mode 100755 index 00000000..5e38fabb --- /dev/null +++ b/exported/Engine/Classes/DrawCapsuleComponent.uc @@ -0,0 +1,24 @@ +class DrawCapsuleComponent extends PrimitiveComponent + native + editinlinenew + collapsecategories + noexport + hidecategories(Object); + +var() Color CapsuleColor; +var() Material CapsuleMaterial; +var() float CapsuleHeight; +var() float CapsuleRadius; +var() bool bDrawWireCapsule; +var() bool bDrawLitCapsule; +var() bool bDrawOnlyIfSelected; + +defaultproperties +{ + CapsuleColor=(R=255,G=0,B=0,A=255) + CapsuleHeight=200.0000000 + CapsuleRadius=200.0000000 + bDrawWireCapsule=true + ReplacementPrimitive=none + HiddenGame=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DrawConeComponent.uc b/exported/Engine/Classes/DrawConeComponent.uc new file mode 100755 index 00000000..2c2fb0d7 --- /dev/null +++ b/exported/Engine/Classes/DrawConeComponent.uc @@ -0,0 +1,20 @@ +class DrawConeComponent extends PrimitiveComponent + native + editinlinenew + collapsecategories + hidecategories(Object); + +var() Color ConeColor; +var() float ConeRadius; +var() float ConeAngle; +var() int ConeSides; + +defaultproperties +{ + ConeColor=(R=150,G=200,B=255,A=255) + ConeRadius=100.0000000 + ConeAngle=44.0000000 + ConeSides=16 + ReplacementPrimitive=none + HiddenGame=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DrawCylinderComponent.uc b/exported/Engine/Classes/DrawCylinderComponent.uc new file mode 100755 index 00000000..aa112e03 --- /dev/null +++ b/exported/Engine/Classes/DrawCylinderComponent.uc @@ -0,0 +1,29 @@ +class DrawCylinderComponent extends PrimitiveComponent + native + editinlinenew + collapsecategories + noexport + hidecategories(Object); + +var() Color CylinderColor; +var() Material CylinderMaterial; +var() float CylinderRadius; +var() float CylinderTopRadius; +var() float CylinderHeight; +var() float CylinderHeightOffset; +var() int CylinderSides; +var() bool bDrawWireCylinder; +var() bool bDrawLitCylinder; +var() bool bDrawOnlyIfSelected; + +defaultproperties +{ + CylinderColor=(R=255,G=0,B=0,A=255) + CylinderRadius=100.0000000 + CylinderTopRadius=100.0000000 + CylinderHeight=100.0000000 + CylinderSides=16 + bDrawWireCylinder=true + ReplacementPrimitive=none + HiddenGame=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DrawFrustumComponent.uc b/exported/Engine/Classes/DrawFrustumComponent.uc new file mode 100755 index 00000000..75a1c23c --- /dev/null +++ b/exported/Engine/Classes/DrawFrustumComponent.uc @@ -0,0 +1,24 @@ +class DrawFrustumComponent extends PrimitiveComponent + native + editinlinenew + collapsecategories + noexport + hidecategories(Object); + +var() Color FrustumColor; +var() float FrustumAngle; +var() float FrustumAspectRatio; +var() float FrustumStartDist; +var() float FrustumEndDist; +var() Texture Texture; + +defaultproperties +{ + FrustumColor=(R=255,G=0,B=255,A=255) + FrustumAngle=90.0000000 + FrustumAspectRatio=1.3333300 + FrustumStartDist=100.0000000 + FrustumEndDist=1000.0000000 + ReplacementPrimitive=none + HiddenGame=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DrawLightConeComponent.uc b/exported/Engine/Classes/DrawLightConeComponent.uc new file mode 100755 index 00000000..96b6901b --- /dev/null +++ b/exported/Engine/Classes/DrawLightConeComponent.uc @@ -0,0 +1,13 @@ +class DrawLightConeComponent extends DrawConeComponent + native(Light) + editinlinenew + collapsecategories + hidecategories(Object,Physics,Collision,PrimitiveComponent,Rendering); + +defaultproperties +{ + ReplacementPrimitive=none + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false + AbsoluteScale=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DrawLightRadiusComponent.uc b/exported/Engine/Classes/DrawLightRadiusComponent.uc new file mode 100755 index 00000000..05966365 --- /dev/null +++ b/exported/Engine/Classes/DrawLightRadiusComponent.uc @@ -0,0 +1,16 @@ +class DrawLightRadiusComponent extends DrawSphereComponent + native(Light) + editinlinenew + collapsecategories + noexport + hidecategories(Object,Physics,Collision,PrimitiveComponent,Rendering); + +defaultproperties +{ + SphereColor=(R=173,G=239,B=231,A=255) + SphereSides=32 + ReplacementPrimitive=none + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false + AbsoluteScale=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DrawPylonRadiusComponent.uc b/exported/Engine/Classes/DrawPylonRadiusComponent.uc new file mode 100755 index 00000000..4ce3c598 --- /dev/null +++ b/exported/Engine/Classes/DrawPylonRadiusComponent.uc @@ -0,0 +1,15 @@ +class DrawPylonRadiusComponent extends DrawSphereComponent + native + editinlinenew + collapsecategories + hidecategories(Object,Physics,Collision,PrimitiveComponent,Rendering); + +defaultproperties +{ + SphereColor=(R=173,G=239,B=231,A=255) + SphereSides=32 + ReplacementPrimitive=none + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false + AbsoluteScale=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DrawQuadComponent.uc b/exported/Engine/Classes/DrawQuadComponent.uc new file mode 100755 index 00000000..c0471d6b --- /dev/null +++ b/exported/Engine/Classes/DrawQuadComponent.uc @@ -0,0 +1,18 @@ +class DrawQuadComponent extends PrimitiveComponent + native + editinlinenew + collapsecategories + noexport + hidecategories(Object); + +var() Texture Texture; +var() float Width; +var() float Height; + +defaultproperties +{ + Width=100.0000000 + Height=100.0000000 + ReplacementPrimitive=none + HiddenGame=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DrawSoundRadiusComponent.uc b/exported/Engine/Classes/DrawSoundRadiusComponent.uc new file mode 100755 index 00000000..03118d70 --- /dev/null +++ b/exported/Engine/Classes/DrawSoundRadiusComponent.uc @@ -0,0 +1,16 @@ +class DrawSoundRadiusComponent extends DrawSphereComponent + native + editinlinenew + collapsecategories + noexport + hidecategories(Object,Physics,Collision,PrimitiveComponent,Rendering); + +defaultproperties +{ + SphereColor=(R=173,G=239,B=231,A=255) + SphereSides=32 + ReplacementPrimitive=none + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false + AbsoluteScale=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DrawSphereComponent.uc b/exported/Engine/Classes/DrawSphereComponent.uc new file mode 100755 index 00000000..3e96710c --- /dev/null +++ b/exported/Engine/Classes/DrawSphereComponent.uc @@ -0,0 +1,24 @@ +class DrawSphereComponent extends PrimitiveComponent + native + editinlinenew + collapsecategories + noexport + hidecategories(Object); + +var() Color SphereColor; +var() Material SphereMaterial; +var() float SphereRadius; +var() int SphereSides; +var() bool bDrawWireSphere; +var() bool bDrawLitSphere; +var() bool bDrawOnlyIfSelected; + +defaultproperties +{ + SphereColor=(R=255,G=0,B=0,A=255) + SphereRadius=100.0000000 + SphereSides=16 + bDrawWireSphere=true + ReplacementPrimitive=none + HiddenGame=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/DroppedPickup.uc b/exported/Engine/Classes/DroppedPickup.uc new file mode 100755 index 00000000..44cba2ed --- /dev/null +++ b/exported/Engine/Classes/DroppedPickup.uc @@ -0,0 +1,262 @@ +class DroppedPickup extends Actor + native + notplaceable + hidecategories(Navigation); + +var Inventory Inventory; +var repnotify Class InventoryClass; +var NavigationPoint PickupCache; +var repnotify bool bFadeOut; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + InventoryClass, bFadeOut; +} + +// Export UDroppedPickup::execAddToNavigation(FFrame&, void* const) +native final function AddToNavigation(); + +// Export UDroppedPickup::execRemoveFromNavigation(FFrame&, void* const) +native final function RemoveFromNavigation(); + +event Destroyed() +{ + // End:0x27 + if(Inventory != none) + { + Inventory.Destroy(); + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x6A + if(VarName == 'InventoryClass') + { + SetPickupMesh(InventoryClass.default.DroppedPickupMesh); + SetPickupParticles(InventoryClass.default.DroppedPickupParticles); + } + else + { + // End:0x92 + if(VarName == 'bFadeOut') + { + GotoState('FadeOut'); + } + else + { + super.ReplicatedEvent(VarName); + } + } + //return; +} + +function Reset() +{ + Destroy(); + //return; +} + +simulated event SetPickupMesh(PrimitiveComponent PickupMesh) +{ + local editinline ActorComponent Comp; + + // End:0x82 + if((PickupMesh != none) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + Comp = new (self) PickupMesh.Class (PickupMesh); + AttachComponent(Comp); + } + //return; +} + +simulated event SetPickupParticles(ParticleSystemComponent PickupParticles) +{ + local editinline ParticleSystemComponent Comp; + + // End:0xA3 + if((PickupParticles != none) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + Comp = new (self) PickupParticles.Class (PickupParticles); + AttachComponent(Comp); + Comp.SetActive(true); + } + //return; +} + +event EncroachedBy(Actor Other) +{ + Destroy(); + //return; +} + +function float DetourWeight(Pawn Other, float PathWeight) +{ + return Inventory.DetourWeight(Other, PathWeight); + //return ReturnValue; +} + +event Landed(Vector HitNormal, Actor FloorActor) +{ + bForceNetUpdate = true; + bNetDirty = true; + NetUpdateFrequency = 3.0000000; + AddToNavigation(); + //return; +} + +function GiveTo(Pawn P) +{ + // End:0x6A + if(Inventory != none) + { + Inventory.AnnouncePickup(P); + Inventory.super(DroppedPickup).GiveTo(P); + Inventory = none; + } + PickedUpBy(P); + //return; +} + +function PickedUpBy(Pawn P) +{ + Destroy(); + //return; +} + +function RecheckValidTouch() +{ + //return; +} + +auto state Pickup +{ + function bool ValidTouch(Pawn Other) + { + // End:0x83 + if(((Other == none) || !Other.bCanPickupInventory) || (Other.DrivenVehicle == none) && Other.Controller == none) + { + return false; + } + // End:0xD8 + if(((int(Physics) == int(2)) && Other == Instigator) && Velocity.Z > float(0)) + { + return false; + } + // End:0x11E + if(!FastTrace(Other.Location, Location)) + { + SetTimer(0.5000000, false, 'RecheckValidTouch'); + return false; + } + // End:0x17F + if(WorldInfo.Game.PickupQuery(Other, Inventory.Class, self)) + { + return true; + } + return false; + //return ReturnValue; + } + + function RecheckValidTouch() + { + CheckTouching(); + //return; + } + + event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) + { + local Pawn P; + + P = Pawn(Other); + // End:0x56 + if((P != none) && ValidTouch(P)) + { + GiveTo(P); + } + //return; + } + + event Timer() + { + GotoState('FadeOut'); + //return; + } + + function CheckTouching() + { + local Pawn P; + + // End:0x43 + foreach TouchingActors(Class'Engine.Pawn', P) + { + Touch(P, none, Location, vect(0.0000000, 0.0000000, 1.0000000)); + } + //return; + } + + event BeginState(name PreviousStateName) + { + AddToNavigation(); + // End:0x31 + if(LifeSpan > 0.0000000) + { + SetTimer(LifeSpan - float(1), false); + } + //return; + } + + event EndState(name NextStateName) + { + RemoveFromNavigation(); + //return; + } +Begin: + + CheckTouching(); + stop; +} + +state FadeOut extends Pickup +{ + simulated event BeginState(name PreviousStateName) + { + bFadeOut = true; + RotationRate.Yaw = 60000; + SetPhysics(5); + LifeSpan = 1.0000000; + //return; + } + stop; +} + +defaultproperties +{ + Components[0]=none + // Reference: CylinderComponent'Engine.Default__DroppedPickup.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=20.0000000 + CollisionRadius=30.0000000 + ReplacementPrimitive=none + CollideActors=true + end object + Components[1]=CollisionCylinder + RemoteRole=ENetRole.ROLE_SimulatedProxy + bIgnoreRigidBodyPawns=true + bOrientOnSlope=true + bUpdateSimulatedPosition=true + bOnlyDirtyReplication=true + bShouldBaseAtStartup=true + bCollideActors=true + bCollideWorld=true + NetUpdateFrequency=8.0000000 + NetPriority=1.4000000 + LifeSpan=16.0000000 + CollisionComponent=CollisionCylinder + RotationRate=(Pitch=0,Yaw=5000,Roll=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/DynamicAnchor.uc b/exported/Engine/Classes/DynamicAnchor.uc new file mode 100755 index 00000000..e7bb1b0e --- /dev/null +++ b/exported/Engine/Classes/DynamicAnchor.uc @@ -0,0 +1,27 @@ +class DynamicAnchor extends NavigationPoint + native + notplaceable + hidecategories(Navigation,Lighting,LightColor,Force); + +var Controller CurrentUser; + +defaultproperties +{ + // Reference: CylinderComponent'Engine.Default__DynamicAnchor.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + bStatic=false + bNoDelete=false + bCollideWhenPlacing=false + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/DynamicBlockingVolume.uc b/exported/Engine/Classes/DynamicBlockingVolume.uc new file mode 100755 index 00000000..de86cc80 --- /dev/null +++ b/exported/Engine/Classes/DynamicBlockingVolume.uc @@ -0,0 +1,122 @@ +class DynamicBlockingVolume extends BlockingVolume + native + placeable + hidecategories(Navigation,Object,Display); + +struct CheckpointRecord +{ + var Vector Location; + var Rotator Rotation; + var bool bCollideActors; + var bool bBlockActors; + var bool bNeedsReplication; + + structdefaultproperties + { + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Rotation=(Pitch=0,Yaw=0,Roll=0) + bCollideActors=false + bBlockActors=false + bNeedsReplication=false + } +}; + +var() bool bEnabled; +var() bool bHandleNavMeshRegistrationInGame; +var bool bHasRegisteredObstacle; + +// Export UDynamicBlockingVolume::execRegisterObstacle(FFrame&, void* const) +native final function RegisterObstacle(); + +// Export UDynamicBlockingVolume::execUnRegisterObstacle(FFrame&, void* const) +native final function UnRegisterObstacle(); + +simulated event PostBeginPlay() +{ + super(Volume).PostBeginPlay(); + SetCollision(bEnabled, bBlockActors); + //return; +} + +function CreateCheckpointRecord(out CheckpointRecord Record) +{ + Record.Location = Location; + Record.Rotation = Rotation; + Record.bCollideActors = bCollideActors; + Record.bBlockActors = bBlockActors; + Record.bNeedsReplication = int(RemoteRole) != int(ROLE_None); + //return; +} + +function ApplyCheckpointRecord(const out CheckpointRecord Record) +{ + // End:0x4D + if(!bHardAttach) + { + SetLocation(Record.Location); + SetRotation(Record.Rotation); + } + CollisionComponent.SetActorCollision(true, true); + CollisionComponent.SetTraceBlocking(false, true); + CollisionComponent.SetBlockRigidBody(Record.bCollideActors); + SetCollision(Record.bCollideActors, Record.bBlockActors); + // End:0x134 + if(Record.bNeedsReplication) + { + ForceNetRelevant(); + } + //return; +} + +simulated event CollisionChanged() +{ + super(Volume).CollisionChanged(); + // End:0xA0 + if((int(Role) == int(ROLE_Authority)) && bHandleNavMeshRegistrationInGame) + { + // End:0x69 + if(bHasRegisteredObstacle && !bCollideActors || !bBlockActors) + { + UnRegisterObstacle(); + } + else + { + // End:0xA0 + if((!bHasRegisteredObstacle && bCollideActors) && bBlockActors) + { + RegisterObstacle(); + } + } + } + //return; +} + +function OnChangeCollision(SeqAct_ChangeCollision Action) +{ + super(Actor).OnChangeCollision(Action); + CollisionChanged(); + //return; +} + +defaultproperties +{ + bEnabled=true + bHandleNavMeshRegistrationInGame=true + BrushColor=(R=255,G=255,B=100,A=255) + // Reference: BrushComponent'Engine.Default__DynamicBlockingVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__BlockingVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + Physics=EPhysics.PHYS_Interpolating + bStatic=false + bWorldGeometry=false + bAlwaysRelevant=true + bOnlyDirtyReplication=true + m_bSupportsRelativeLocationBase=true + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/DynamicCameraActor.uc b/exported/Engine/Classes/DynamicCameraActor.uc new file mode 100755 index 00000000..df699337 --- /dev/null +++ b/exported/Engine/Classes/DynamicCameraActor.uc @@ -0,0 +1,9 @@ +class DynamicCameraActor extends CameraActor + native(Camera) + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + bNoDelete=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/DynamicLightEnvironmentComponent.uc b/exported/Engine/Classes/DynamicLightEnvironmentComponent.uc new file mode 100755 index 00000000..f76e0e60 --- /dev/null +++ b/exported/Engine/Classes/DynamicLightEnvironmentComponent.uc @@ -0,0 +1,77 @@ +class DynamicLightEnvironmentComponent extends LightEnvironmentComponent + native(Light); + +enum EDynamicLightEnvironmentBoundsMethod +{ + DLEB_OwnerComponents, // 0 + DLEB_ManualOverride, // 1 + DLEB_ActiveComponents, // 2 + DLEB_MAX // 3 +}; + +var private native const transient Pointer State; +var() float InvisibleUpdateTime; +var() float MinTimeBetweenFullUpdates; +var float VelocityUpdateTimeScale; +var float ShadowInterpolationSpeed; +var() int NumVolumeVisibilitySamples; +var() float LightingBoundsScale; +var LinearColor AmbientShadowColor; +var Vector AmbientShadowSourceDirection; +var LinearColor AmbientGlow; +var float LightDistance; +var float ShadowDistance; +var() bool bCastShadows; +var bool bCompositeShadowsFromDynamicLights; +var bool bForceCompositeAllLights; +var bool bAffectedBySmallDynamicLights; +var() bool bUseBooleanEnvironmentShadowing; +var bool bShadowFromEnvironment; +var() bool bDynamic; +var bool bSynthesizeDirectionalLight; +var() bool bSynthesizeSHLight; +var() bool bRequiresNonLatentUpdates; +var bool bTraceFromClosestBoundsPoint; +var() bool bIsCharacterLightEnvironment; +var bool bOverrideOwnerLightingChannels; +var bool bAlwaysInfluencedByDominantDirectionalLight; +var float ModShadowFadeoutTime; +var float ModShadowFadeoutExponent; +var LinearColor MaxModulatedShadowColor; +var float DominantShadowTransitionStartDistance; +var float DominantShadowTransitionEndDistance; +var float MinShadowAngle; +var DynamicLightEnvironmentComponent.EDynamicLightEnvironmentBoundsMethod BoundsMethod; +var BoxSphereBounds OverriddenBounds; +var LightingChannelContainer OverriddenLightingChannels; +var const export editinline array OverriddenLightComponents; + +// Export UDynamicLightEnvironmentComponent::execResetEnvironment(FFrame&, void* const) +native final function ResetEnvironment(); + +defaultproperties +{ + InvisibleUpdateTime=5.0000000 + MinTimeBetweenFullUpdates=1.0000000 + VelocityUpdateTimeScale=0.0000010 + ShadowInterpolationSpeed=0.0040000 + NumVolumeVisibilitySamples=1 + LightingBoundsScale=1.0000000 + AmbientShadowColor=(R=0.0010000,G=0.0010000,B=0.0010000,A=1.0000000) + AmbientShadowSourceDirection=(X=0.0100000,Y=0.0000000,Z=0.9900000) + AmbientGlow=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + LightDistance=10.0000000 + ShadowDistance=5.0000000 + bCastShadows=true + bCompositeShadowsFromDynamicLights=true + bAffectedBySmallDynamicLights=true + bUseBooleanEnvironmentShadowing=true + bShadowFromEnvironment=true + bDynamic=true + bSynthesizeDirectionalLight=true + ModShadowFadeoutExponent=3.0000000 + MaxModulatedShadowColor=(R=0.5000000,G=0.5000000,B=0.5000000,A=1.0000000) + DominantShadowTransitionStartDistance=100.0000000 + DominantShadowTransitionEndDistance=10.0000000 + MinShadowAngle=25.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/DynamicPhysicsVolume.uc b/exported/Engine/Classes/DynamicPhysicsVolume.uc new file mode 100755 index 00000000..4ee7f99d --- /dev/null +++ b/exported/Engine/Classes/DynamicPhysicsVolume.uc @@ -0,0 +1,31 @@ +class DynamicPhysicsVolume extends PhysicsVolume + placeable + hidecategories(Navigation,Object,Display); + +var() bool bEnabled; + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + SetCollision(bEnabled, bBlockActors); + //return; +} + +defaultproperties +{ + bEnabled=true + BrushColor=(R=100,G=255,B=255,A=255) + bColored=true + // Reference: BrushComponent'Engine.Default__DynamicPhysicsVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__PhysicsVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + Physics=EPhysics.PHYS_Interpolating + bStatic=false + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/DynamicPylon.uc b/exported/Engine/Classes/DynamicPylon.uc new file mode 100755 index 00000000..36966f58 --- /dev/null +++ b/exported/Engine/Classes/DynamicPylon.uc @@ -0,0 +1,55 @@ +class DynamicPylon extends Pylon + native + placeable + hidecategories(Navigation,Lighting,LightColor,Force,Lighting,LightColor,Force); + +var bool bMoving; + +function PostBeginPlay() +{ + super.PostBeginPlay(); + RebuildDynamicEdges(); + //return; +} + +// Export UDynamicPylon::execRebuildDynamicEdges(FFrame&, void* const) +native function RebuildDynamicEdges(); + +// Export UDynamicPylon::execFlushDynamicEdges(FFrame&, void* const) +native function FlushDynamicEdges(); + +event StartedMoving() +{ + bMoving = true; + FlushDynamicEdges(); + //return; +} + +event StoppedMoving() +{ + bMoving = false; + RebuildDynamicEdges(); + //return; +} + +defaultproperties +{ + // Reference: CylinderComponent'Engine.Default__DynamicPylon.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Pylon.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + Components[5]=none + Components[6]=none + Components[7]=none + bStatic=false + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/DynamicSMActor.uc b/exported/Engine/Classes/DynamicSMActor.uc new file mode 100755 index 00000000..ed74c446 --- /dev/null +++ b/exported/Engine/Classes/DynamicSMActor.uc @@ -0,0 +1,323 @@ +class DynamicSMActor extends Actor + abstract + native + notplaceable + hidecategories(Navigation); + +var() const editconst export editinline StaticMeshComponent StaticMeshComponent; +var() const editconst export editinline DynamicLightEnvironmentComponent LightEnvironment; +var repnotify transient StaticMesh ReplicatedMesh; +var repnotify MaterialInterface ReplicatedMaterial0; +var repnotify MaterialInterface ReplicatedMaterial1; +var repnotify bool bForceStaticDecals; +var() bool bPawnCanBaseOn; +var() bool bSafeBaseIfAsleep; +var() bool bHandleNavMeshRegistrationInGame; +var bool bHasRegisteredObstacle; +var repnotify Vector ReplicatedMeshTranslation; +var repnotify Rotator ReplicatedMeshRotation; +var repnotify Vector ReplicatedMeshScale3D; + +replication +{ + // Pos:0x000 + if(bNetDirty) + ReplicatedMaterial0, ReplicatedMaterial1, + ReplicatedMesh, ReplicatedMeshRotation, + ReplicatedMeshScale3D, ReplicatedMeshTranslation, + bForceStaticDecals; +} + +// Export UDynamicSMActor::execRegisterObstacle(FFrame&, void* const) +native final function RegisterObstacle(); + +// Export UDynamicSMActor::execUnRegisterObstacle(FFrame&, void* const) +native final function UnRegisterObstacle(); + +event PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x6B + if(StaticMeshComponent != none) + { + ReplicatedMesh = StaticMeshComponent.StaticMesh; + bForceStaticDecals = StaticMeshComponent.bForceStaticDecals; + } + // End:0xB1 + if(((bHandleNavMeshRegistrationInGame && !bHasRegisteredObstacle) && bCollideActors) && bBlockActors) + { + RegisterObstacle(); + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0xB0 + if(VarName == 'ReplicatedMesh') + { + // End:0xAD + if(ReplicatedMesh != StaticMeshComponent.StaticMesh) + { + LightEnvironment.bCastShadows = false; + LightEnvironment.SetEnabled(true); + StaticMeshComponent.SetStaticMesh(ReplicatedMesh); + } + } + else + { + // End:0xF3 + if(VarName == 'ReplicatedMaterial0') + { + StaticMeshComponent.SetMaterial(0, ReplicatedMaterial0); + } + else + { + // End:0x136 + if(VarName == 'ReplicatedMaterial1') + { + StaticMeshComponent.SetMaterial(1, ReplicatedMaterial1); + } + else + { + // End:0x178 + if(VarName == 'ReplicatedMeshTranslation') + { + StaticMeshComponent.SetTranslation(ReplicatedMeshTranslation); + } + else + { + // End:0x1BA + if(VarName == 'ReplicatedMeshRotation') + { + StaticMeshComponent.SetRotation(ReplicatedMeshRotation); + } + else + { + // End:0x203 + if(VarName == 'ReplicatedMeshScale3D') + { + StaticMeshComponent.SetScale3D(ReplicatedMeshScale3D / 100.0000000); + } + else + { + // End:0x246 + if(VarName == 'bForceStaticDecals') + { + StaticMeshComponent.SetForceStaticDecals(bForceStaticDecals); + } + else + { + super.ReplicatedEvent(VarName); + } + } + } + } + } + } + } + //return; +} + +function OnSetMesh(SeqAct_SetMesh Action) +{ + local bool bForce; + + // End:0x292 + if(int(Action.MeshType) == int(0)) + { + bForce = (Action.bIsAllowedToMove == StaticMeshComponent.bForceStaticDecals) || Action.bAllowDecalsToReattach; + // End:0x292 + if((Action.NewStaticMesh != none) && (Action.NewStaticMesh != StaticMeshComponent.StaticMesh) || bForce) + { + LightEnvironment.bCastShadows = false; + LightEnvironment.SetEnabled(true); + bForceStaticDecals = !Action.bIsAllowedToMove; + StaticMeshComponent.SetForceStaticDecals(bForceStaticDecals); + StaticMeshComponent.bAllowDecalAutomaticReAttach = Action.bAllowDecalsToReattach; + StaticMeshComponent.SetStaticMesh(Action.NewStaticMesh, Action.bAllowDecalsToReattach); + StaticMeshComponent.bAllowDecalAutomaticReAttach = true; + ReplicatedMesh = Action.NewStaticMesh; + ForceNetRelevant(); + } + } + //return; +} + +function OnSetMaterial(SeqAct_SetMaterial Action) +{ + StaticMeshComponent.SetMaterial(Action.MaterialIndex, Action.NewMaterial); + // End:0xB4 + if(Action.MaterialIndex == 0) + { + ReplicatedMaterial0 = Action.NewMaterial; + ForceNetRelevant(); + } + else + { + // End:0x10A + if(Action.MaterialIndex == 1) + { + ReplicatedMaterial1 = Action.NewMaterial; + ForceNetRelevant(); + } + } + //return; +} + +function SetStaticMesh(StaticMesh NewMesh, optional Vector NewTranslation, optional Rotator NewRotation, optional Vector NewScale3D) +{ + StaticMeshComponent.SetStaticMesh(NewMesh); + StaticMeshComponent.SetTranslation(NewTranslation); + StaticMeshComponent.SetRotation(NewRotation); + // End:0xCF + if(!IsZero(NewScale3D)) + { + StaticMeshComponent.SetScale3D(NewScale3D); + ReplicatedMeshScale3D = NewScale3D * 100.0000000; + } + ReplicatedMesh = NewMesh; + ReplicatedMeshTranslation = NewTranslation; + ReplicatedMeshRotation = NewRotation; + ForceNetRelevant(); + //return; +} + +simulated function bool CanBasePawn(Pawn P) +{ + // End:0x56 + if(bPawnCanBaseOn || (bSafeBaseIfAsleep && StaticMeshComponent != none) && !StaticMeshComponent.RigidBodyIsAwake()) + { + return true; + } + return false; + //return ReturnValue; +} + +event Attach(Actor Other) +{ + local Pawn P; + + super.Attach(Other); + // End:0x50 + if(bSafeBaseIfAsleep) + { + P = Pawn(Other); + // End:0x50 + if(P != none) + { + SetPhysics(0); + } + } + //return; +} + +event Detach(Actor Other) +{ + local int Idx; + local Pawn P, Test; + local bool bResetPhysics; + + super.Detach(Other); + P = Pawn(Other); + // End:0xEA + if(P != none) + { + bResetPhysics = true; + Idx = 0; + J0x55: + + // End:0xD8 [Loop If] + if(Idx < Attached.Length) + { + Test = Pawn(Attached[Idx]); + // End:0xCA + if((Test != none) && Test != P) + { + bResetPhysics = false; + // [Explicit Break] + goto J0xD8; + } + Idx++; + // [Loop Continue] + goto J0x55; + } + J0xD8: + + // End:0xEA + if(bResetPhysics) + { + SetPhysics(10); + } + } + //return; +} + +final simulated function SetLightEnvironmentToNotBeDynamic() +{ + // End:0x30 + if(LightEnvironment != none) + { + LightEnvironment.bDynamic = false; + } + //return; +} + +event CollisionChanged() +{ + super.CollisionChanged(); + // End:0x8A + if(bHandleNavMeshRegistrationInGame) + { + // End:0x53 + if(bHasRegisteredObstacle && !bCollideActors || !bBlockActors) + { + UnRegisterObstacle(); + } + else + { + // End:0x8A + if((!bHasRegisteredObstacle && bCollideActors) && bBlockActors) + { + RegisterObstacle(); + } + } + } + //return; +} + +function OnChangeCollision(SeqAct_ChangeCollision Action) +{ + super.OnChangeCollision(Action); + CollisionChanged(); + //return; +} + +defaultproperties +{ + // Reference: StaticMeshComponent'Engine.Default__DynamicSMActor.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + begin object name="StaticMeshComponent0" class=Engine.StaticMeshComponent + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__DynamicSMActor.MyLightEnvironment' + BlockRigidBody=false + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__DynamicSMActor.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + begin object name="MyLightEnvironment" class=Engine.DynamicLightEnvironmentComponent + end object + LightEnvironment=MyLightEnvironment + bPawnCanBaseOn=true + bHandleNavMeshRegistrationInGame=true + Components[0]=MyLightEnvironment + Components[1]=StaticMeshComponent0 + RemoteRole=ENetRole.ROLE_SimulatedProxy + bShadowParented=true + bGameRelevant=true + bEdShouldSnap=true + bPathColliding=true + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/DynamicSMActor_Spawnable.uc b/exported/Engine/Classes/DynamicSMActor_Spawnable.uc new file mode 100755 index 00000000..7ee19c6c --- /dev/null +++ b/exported/Engine/Classes/DynamicSMActor_Spawnable.uc @@ -0,0 +1,28 @@ +class DynamicSMActor_Spawnable extends DynamicSMActor + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: StaticMeshComponent'Engine.Default__DynamicSMActor_Spawnable.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__DynamicSMActor.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__DynamicSMActor_Spawnable.MyLightEnvironment' + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__DynamicSMActor_Spawnable.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__DynamicSMActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + Components[1]=StaticMeshComponent0 + bCollideActors=true + bBlockActors=true + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/DynamicTriggerVolume.uc b/exported/Engine/Classes/DynamicTriggerVolume.uc new file mode 100755 index 00000000..4b037e7c --- /dev/null +++ b/exported/Engine/Classes/DynamicTriggerVolume.uc @@ -0,0 +1,31 @@ +class DynamicTriggerVolume extends TriggerVolume + placeable + hidecategories(Navigation,Object,Display); + +var() bool bEnabled; + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + SetCollision(bEnabled, bBlockActors); + //return; +} + +defaultproperties +{ + bEnabled=true + BrushColor=(R=100,G=255,B=255,A=255) + // Reference: BrushComponent'Engine.Default__DynamicTriggerVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__TriggerVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bStatic=false + bAlwaysRelevant=true + bOnlyDirtyReplication=true + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/EdCoordSystem.uc b/exported/Engine/Classes/EdCoordSystem.uc new file mode 100755 index 00000000..4cf9b30a --- /dev/null +++ b/exported/Engine/Classes/EdCoordSystem.uc @@ -0,0 +1,13 @@ +class EdCoordSystem extends Object + native + editinlinenew + hidecategories(Object); + +var() Matrix M; +var() string Desc; + +defaultproperties +{ + M=(XPlane=(W=0.0000000,X=1.0000000,Y=0.0000000,Z=0.0000000),YPlane=(W=0.0000000,X=0.0000000,Y=1.0000000,Z=0.0000000),ZPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=1.0000000),WPlane=(W=1.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000)) + Desc="Coord System" +} \ No newline at end of file diff --git a/exported/Engine/Classes/EditorLinkSelectionInterface.uc b/exported/Engine/Classes/EditorLinkSelectionInterface.uc new file mode 100755 index 00000000..3f0e3467 --- /dev/null +++ b/exported/Engine/Classes/EditorLinkSelectionInterface.uc @@ -0,0 +1,3 @@ +interface EditorLinkSelectionInterface extends Interface + abstract + native; diff --git a/exported/Engine/Classes/Emitter.uc b/exported/Engine/Classes/Emitter.uc new file mode 100755 index 00000000..496c4634 --- /dev/null +++ b/exported/Engine/Classes/Emitter.uc @@ -0,0 +1,311 @@ +class Emitter extends Actor + native + placeable + hidecategories(Navigation); + +struct CheckpointRecord +{ + var bool bIsActive; + + structdefaultproperties + { + bIsActive=false + } +}; + +var() const editconst export editinline ParticleSystemComponent ParticleSystemComponent; +var() const editconst export editinline DynamicLightEnvironmentComponent LightEnvironment; +var bool bDestroyOnSystemFinish; +var() bool bPostUpdateTickGroup; +var repnotify bool bCurrentlyActive; + +replication +{ + // Pos:0x000 + if(bNoDelete) + bCurrentlyActive; +} + +// Export UEmitter::execSetTemplate(FFrame&, void* const) +native event SetTemplate(ParticleSystem NewTemplate, optional bool bDestroyOnFinish); + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x67 + if((int(WorldInfo.NetMode) == int(NM_DedicatedServer)) && (int(RemoteRole) == int(ROLE_None)) || bNetTemporary) + { + LifeSpan = 0.2000000; + } + // End:0xD0 + if(ParticleSystemComponent != none) + { + ParticleSystemComponent.__OnSystemFinished__Delegate = OnParticleSystemFinished; + bCurrentlyActive = ParticleSystemComponent.bAutoActivate; + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x44 + if(VarName == 'bCurrentlyActive') + { + ParticleSystemComponent.SetActive(bCurrentlyActive); + } + else + { + super.ReplicatedEvent(VarName); + } + //return; +} + +simulated function OnParticleSystemFinished(ParticleSystemComponent FinishedComponent) +{ + // End:0x1C + if(bDestroyOnSystemFinish) + { + LifeSpan = 0.0001000; + } + bCurrentlyActive = false; + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x66 + if(Action.InputLinks[0].bHasImpulse) + { + ParticleSystemComponent.ActivateSystem(); + bCurrentlyActive = true; + } + else + { + // End:0xCB + if(Action.InputLinks[1].bHasImpulse) + { + ParticleSystemComponent.DeactivateSystem(); + bCurrentlyActive = false; + } + else + { + // End:0x190 + if(Action.InputLinks[2].bHasImpulse) + { + // End:0x165 + if(ParticleSystemComponent.bSuppressSpawning || !bCurrentlyActive) + { + ParticleSystemComponent.ActivateSystem(); + bCurrentlyActive = true; + } + else + { + ParticleSystemComponent.DeactivateSystem(); + bCurrentlyActive = false; + } + } + } + } + ParticleSystemComponent.LastRenderTime = WorldInfo.TimeSeconds; + ForceNetRelevant(); + // End:0x214 + if(int(RemoteRole) != int(ROLE_None)) + { + SetForcedInitialReplicatedProperty(BoolProperty'Engine.Emitter.bCurrentlyActive', bCurrentlyActive == default.bCurrentlyActive); + } + // End:0x22B + if(bSupportNetIrrelevant) + { + ForceNetIrrelevant(); + } + //return; +} + +simulated function Activate() +{ + // End:0x2F + if(ParticleSystemComponent != none) + { + ParticleSystemComponent.ActivateSystem(); + } + bCurrentlyActive = true; + //return; +} + +simulated function Deactivate() +{ + // End:0x2E + if(ParticleSystemComponent != none) + { + ParticleSystemComponent.DeactivateSystem(); + } + bCurrentlyActive = false; + //return; +} + +function OnParticleEventGenerator(SeqAct_ParticleEventGenerator Action) +{ + //return; +} + +simulated function ShutDown() +{ + super.ShutDown(); + bCurrentlyActive = false; + //return; +} + +simulated function SetFloatParameter(name ParameterName, float Param) +{ + // End:0x43 + if(ParticleSystemComponent != none) + { + ParticleSystemComponent.super(Emitter).SetFloatParameter(ParameterName, Param); + } + //return; +} + +simulated function SetVectorParameter(name ParameterName, Vector Param) +{ + // End:0x43 + if(ParticleSystemComponent != none) + { + ParticleSystemComponent.super(Emitter).SetVectorParameter(ParameterName, Param); + } + //return; +} + +simulated function SetColorParameter(name ParameterName, Color Param) +{ + // End:0x43 + if(ParticleSystemComponent != none) + { + ParticleSystemComponent.super(Emitter).SetColorParameter(ParameterName, Param); + } + //return; +} + +simulated function SetExtColorParameter(name ParameterName, byte Red, byte Green, byte Blue, byte Alpha) +{ + local Color C; + + // End:0xDB + if(ParticleSystemComponent != none) + { + C.R = Red; + C.G = Green; + C.B = Blue; + C.A = Alpha; + ParticleSystemComponent.SetColorParameter(ParameterName, C); + } + //return; +} + +simulated function SetActorParameter(name ParameterName, Actor Param) +{ + // End:0x43 + if(ParticleSystemComponent != none) + { + ParticleSystemComponent.super(Emitter).SetActorParameter(ParameterName, Param); + } + //return; +} + +simulated function OnSetParticleSysParam(SeqAct_SetParticleSysParam Action) +{ + local int Idx, ParamIdx; + + // End:0x267 + if((ParticleSystemComponent != none) && Action.InstanceParameters.Length > 0) + { + Idx = 0; + J0x41: + + // End:0x267 [Loop If] + if(Idx < Action.InstanceParameters.Length) + { + // End:0x259 + if(int(Action.InstanceParameters[Idx].ParamType) != int(0)) + { + ParamIdx = ParticleSystemComponent.InstanceParameters.Find('Name', Action.InstanceParameters[Idx].Name); + // End:0x18C + if(ParamIdx == -1) + { + ParamIdx = ParticleSystemComponent.InstanceParameters.Length; + ParticleSystemComponent.InstanceParameters.Length = ParamIdx + 1; + } + ParticleSystemComponent.InstanceParameters[ParamIdx] = Action.InstanceParameters[Idx]; + // End:0x259 + if(Action.bOverrideScalar) + { + ParticleSystemComponent.InstanceParameters[ParamIdx].Scalar = Action.ScalarValue; + } + } + Idx++; + // [Loop Continue] + goto J0x41; + } + } + //return; +} + +function bool ShouldSaveForCheckpoint() +{ + return bNoDelete && int(RemoteRole) != int(ROLE_None); + //return ReturnValue; +} + +function CreateCheckpointRecord(out CheckpointRecord Record) +{ + Record.bIsActive = bCurrentlyActive; + //return; +} + +function ApplyCheckpointRecord(const out CheckpointRecord Record) +{ + bCurrentlyActive = Record.bIsActive; + // End:0x58 + if(bCurrentlyActive) + { + ParticleSystemComponent.ActivateSystem(); + } + else + { + ParticleSystemComponent.DeactivateSystem(); + } + ForceNetRelevant(); + //return; +} + +simulated function HideSelf() +{ + //return; +} + +defaultproperties +{ + // Reference: ParticleSystemComponent'Engine.Default__Emitter.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" class=Engine.ParticleSystemComponent + ReplacementPrimitive=none + TickGroup=ETickingGroup.TG_DuringAsyncWorkThreaded + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=none + Components[1]=ParticleSystemComponent0 + Components[2]=none + TickGroup=ETickingGroup.TG_DuringAsyncWorkThreaded + bNoDelete=true + bServerTickIsDisabled=true + bHardAttach=true + bGameRelevant=true + bEdShouldSnap=true + SupportedEvents[0]=Class'Engine.SeqEvent_Touch' + SupportedEvents[1]=Class'Engine.SeqEvent_Destroyed' + SupportedEvents[2]=Class'Engine.SeqEvent_TakeDamage' + SupportedEvents[3]=Class'Engine.SeqEvent_HitWall' + SupportedEvents[4]=Class'Engine.SeqEvent_AnimNotify' + SupportedEvents[5]=Class'Engine.SeqEvent_MobileTouch' + SupportedEvents[6]=Class'Engine.SeqEvent_ParticleEvent' +} \ No newline at end of file diff --git a/exported/Engine/Classes/EmitterCameraLensEffectBase.uc b/exported/Engine/Classes/EmitterCameraLensEffectBase.uc new file mode 100755 index 00000000..0931c019 --- /dev/null +++ b/exported/Engine/Classes/EmitterCameraLensEffectBase.uc @@ -0,0 +1,93 @@ +class EmitterCameraLensEffectBase extends Emitter + abstract + native(Particle) + placeable + hidecategories(Navigation); + +var protected ParticleSystem PS_CameraEffect; +var protected ParticleSystem PS_CameraEffectNonExtremeContent; +var float BaseFOV; +var() protected const float DistFromCamera; +var() protectedwrite const bool bAllowMultipleInstances; +var array< Class > EmittersToTreatAsSame; +var protected transient Camera BaseCamera; + +function Destroyed() +{ + // End:0x2F + if(BaseCamera != none) + { + BaseCamera.RemoveCameraLensEffect(self); + } + super(Actor).Destroyed(); + //return; +} + +function RegisterCamera(Camera C) +{ + BaseCamera = C; + //return; +} + +function NotifyRetriggered() +{ + //return; +} + +simulated function PostBeginPlay() +{ + ParticleSystemComponent.SetDepthPriorityGroup(4); + super.PostBeginPlay(); + ActivateLensEffect(); + //return; +} + +simulated function ActivateLensEffect() +{ + local ParticleSystem PSToActuallySpawn; + + // End:0xB5 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x76 + if(WorldInfo.GRI.ShouldShowGore()) + { + PSToActuallySpawn = PS_CameraEffect; + } + else + { + PSToActuallySpawn = PS_CameraEffectNonExtremeContent; + } + // End:0xB5 + if(PSToActuallySpawn != none) + { + SetTemplate(PS_CameraEffect, bDestroyOnSystemFinish); + } + } + //return; +} + +// Export UEmitterCameraLensEffectBase::execUpdateLocation(FFrame&, void* const) +native simulated function UpdateLocation(const out Vector CamLoc, const out Rotator CamRot, float CamFOVDeg); + +defaultproperties +{ + BaseFOV=80.0000000 + DistFromCamera=90.0000000 + // Reference: ParticleSystemComponent'Engine.Default__EmitterCameraLensEffectBase.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'Engine.Default__Emitter.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + SecondsBeforeInactive=0.0000000 + ReplacementPrimitive=none + bOnlyOwnerSee=true + end object + ParticleSystemComponent=ParticleSystemComponent0 + bDestroyOnSystemFinish=true + Components[0]=ParticleSystemComponent0 + TickGroup=ETickingGroup.TG_PostAsyncWork + bNoDelete=false + bNetInitialRotation=true + LifeSpan=10.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/EmitterPool.uc b/exported/Engine/Classes/EmitterPool.uc new file mode 100755 index 00000000..8c15aee5 --- /dev/null +++ b/exported/Engine/Classes/EmitterPool.uc @@ -0,0 +1,89 @@ +class EmitterPool extends Actor + transient + native + config(Game) + notplaceable + hidecategories(Navigation); + +struct native EmitterBaseInfo +{ + var export editinline ParticleSystemComponent PSC; + var Actor Base; + var Vector RelativeLocation; + var Rotator RelativeRotation; + var bool bInheritBaseScale; + + structdefaultproperties + { + PSC=none + Base=none + RelativeLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + RelativeRotation=(Pitch=0,Yaw=0,Roll=0) + bInheritBaseScale=false + } +}; + +var protected export editinline ParticleSystemComponent PSCTemplate; +var const export editinline transient array PoolComponents; +var export editinline transient array ActiveComponents; +var int MaxActiveEffects; +var globalconfig bool bLogPoolOverflow; +var globalconfig bool bLogPoolOverflowList; +var transient array RelativePSCs; +var float SMC_MIC_ReductionTime; +var transient float SMC_MIC_CurrentReductionTime; +var int IdealStaticMeshComponents; +var int IdealMaterialInstanceConstants; +var private const export editinline transient array FreeSMComponents; +var private const transient array FreeMatInstConsts; + +// Export UEmitterPool::execOnParticleSystemFinished(FFrame&, void* const) +native function OnParticleSystemFinished(ParticleSystemComponent PSC); + +// Export UEmitterPool::execClearPoolComponents(FFrame&, void* const) +native final function ClearPoolComponents(optional bool bClearActive = false); + +// Export UEmitterPool::execReturnToPool(FFrame&, void* const) +protected native final function ReturnToPool(ParticleSystemComponent PSC); + +// Export UEmitterPool::execFreeStaticMeshComponents(FFrame&, void* const) +protected native final function FreeStaticMeshComponents(ParticleSystemComponent PSC); + +// Export UEmitterPool::execGetFreeStaticMeshComponent(FFrame&, void* const) +protected native final function StaticMeshComponent GetFreeStaticMeshComponent(optional bool bCreateNewObject = true); + +// Export UEmitterPool::execFreeMaterialInstanceConstants(FFrame&, void* const) +protected native final function FreeMaterialInstanceConstants(StaticMeshComponent SMC); + +// Export UEmitterPool::execGetFreeMatInstConsts(FFrame&, void* const) +protected native final function MaterialInstanceConstant GetFreeMatInstConsts(optional bool bCreateNewObject = true); + +// Export UEmitterPool::execGetPooledComponent(FFrame&, void* const) +protected native final function ParticleSystemComponent GetPooledComponent(ParticleSystem EmitterTemplate, bool bAutoActivate); + +// Export UEmitterPool::execSpawnEmitter(FFrame&, void* const) +native function ParticleSystemComponent SpawnEmitter(ParticleSystem EmitterTemplate, Vector SpawnLocation, optional Rotator SpawnRotation, optional Actor AttachToActor, optional Actor InInstigator, optional int MaxDLEPooledReuses, optional bool bInheritScaleFromBase, optional ParticleChannelContainer PSysChannels); + +// Export UEmitterPool::execSpawnEmitterMeshAttachment(FFrame&, void* const) +native function ParticleSystemComponent SpawnEmitterMeshAttachment(ParticleSystem EmitterTemplate, SkeletalMeshComponent Mesh, name AttachPointName, optional bool bAttachToSocket, optional Vector RelativeLoc, optional Rotator RelativeRot, optional ParticleChannelContainer PSysChannels); + +// Export UEmitterPool::execSpawnEmitterCustomLifetime(FFrame&, void* const) +native function ParticleSystemComponent SpawnEmitterCustomLifetime(ParticleSystem EmitterTemplate, optional bool bSkipAutoActivate); + +defaultproperties +{ + // Reference: ParticleSystemComponent'Engine.Default__EmitterPool.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" class=Engine.ParticleSystemComponent + SecondsBeforeInactive=0.0000000 + ReplacementPrimitive=none + AbsoluteTranslation=true + AbsoluteRotation=true + end object + PSCTemplate=ParticleSystemComponent0 + bLogPoolOverflow=true + SMC_MIC_ReductionTime=2.5000000 + IdealStaticMeshComponents=250 + IdealMaterialInstanceConstants=250 +} \ No newline at end of file diff --git a/exported/Engine/Classes/EmitterSpawnable.uc b/exported/Engine/Classes/EmitterSpawnable.uc new file mode 100755 index 00000000..51d43a7d --- /dev/null +++ b/exported/Engine/Classes/EmitterSpawnable.uc @@ -0,0 +1,58 @@ +class EmitterSpawnable extends Emitter + notplaceable + hidecategories(Navigation); + +var repnotify ParticleSystem ParticleTemplate; + +replication +{ + // Pos:0x000 + if(bNetInitial) + ParticleTemplate; +} + +simulated event SetTemplate(ParticleSystem NewTemplate, optional bool bDestroyOnFinish) +{ + super.SetTemplate(NewTemplate, bDestroyOnFinish); + ParticleTemplate = NewTemplate; + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x78 + if(VarName == 'ParticleTemplate') + { + SetTemplate(ParticleTemplate, bDestroyOnSystemFinish); + ParticleSystemComponent.ActivateSystem(); + // End:0x75 + if((ParticleTemplate == none) && bDestroyOnSystemFinish) + { + Destroy(); + } + } + else + { + super.ReplicatedEvent(VarName); + } + //return; +} + +defaultproperties +{ + // Reference: ParticleSystemComponent'Engine.Default__EmitterSpawnable.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'Engine.Default__Emitter.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + SecondsBeforeInactive=0.0000000 + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + bDestroyOnSystemFinish=true + Components[0]=none + Components[1]=ParticleSystemComponent0 + Components[2]=none + bNoDelete=false + bNetTemporary=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/Engine.UPKG b/exported/Engine/Classes/Engine.UPKG new file mode 100755 index 00000000..1a07be93 --- /dev/null +++ b/exported/Engine/Classes/Engine.UPKG @@ -0,0 +1,4 @@ +[Flags] +AllowDownload=False +ClientOptional=False +ServerSideOnly=False diff --git a/exported/Engine/Classes/Engine.uc b/exported/Engine/Classes/Engine.uc new file mode 100755 index 00000000..46a1c47f --- /dev/null +++ b/exported/Engine/Classes/Engine.uc @@ -0,0 +1,557 @@ +class Engine extends Subsystem + abstract + transient + native(GameEngine) + config(Engine); + +enum ETransitionType +{ + TT_None, // 0 + TT_Paused, // 1 + TT_Loading, // 2 + TT_Saving, // 3 + TT_Connecting, // 4 + TT_Precaching, // 5 + TT_MAX // 6 +}; + +struct native StatColorMapEntry +{ + var globalconfig float In; + var globalconfig Color Out; + + structdefaultproperties + { + In=0.0000000 + Out=(R=0,G=0,B=0,A=0) + } +}; + +struct native StatColorMapping +{ + var globalconfig string StatName; + var globalconfig array ColorMap; + var globalconfig bool DisableBlend; + + structdefaultproperties + { + StatName="" + ColorMap=none + DisableBlend=false + } +}; + +struct native DropNoteInfo +{ + var Vector Location; + var Rotator Rotation; + var string Comment; + + structdefaultproperties + { + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Rotation=(Pitch=0,Yaw=0,Roll=0) + Comment="" + } +}; + +var private Font TinyFont; +var globalconfig string TinyFontName; +var private Font SmallFont; +var globalconfig string SmallFontName; +var private Font MediumFont; +var globalconfig string MediumFontName; +var private Font LargeFont; +var globalconfig string LargeFontName; +var private Font SubtitleFont; +var globalconfig string SubtitleFontName; +var private array AdditionalFonts; +var globalconfig array AdditionalFontNames; +var Class ConsoleClass; +var globalconfig string ConsoleClassName; +var Class GameViewportClientClass; +var globalconfig string GameViewportClientClassName; +var Class DataStoreClientClass; +var globalconfig string DataStoreClientClassName; +var Class LocalPlayerClass; +var config string LocalPlayerClassName; +var Material DefaultMaterial; +var globalconfig string DefaultMaterialName; +var Material DefaultDecalMaterial; +var globalconfig string DefaultDecalMaterialName; +var Texture DefaultTexture; +var globalconfig string DefaultTextureName; +var Material WireframeMaterial; +var globalconfig string WireframeMaterialName; +var Material EmissiveTexturedMaterial; +var globalconfig string EmissiveTexturedMaterialName; +var Material GeomMaterial; +var globalconfig string GeomMaterialName; +var Material DefaultFogVolumeMaterial; +var globalconfig string DefaultFogVolumeMaterialName; +var Material TickMaterial; +var globalconfig string TickMaterialName; +var Material CrossMaterial; +var globalconfig string CrossMaterialName; +var Material LevelColorationLitMaterial; +var globalconfig string LevelColorationLitMaterialName; +var Material LevelColorationUnlitMaterial; +var globalconfig string LevelColorationUnlitMaterialName; +var Material LightingTexelDensityMaterial; +var globalconfig string LightingTexelDensityName; +var Material ShadedLevelColorationLitMaterial; +var globalconfig string ShadedLevelColorationLitMaterialName; +var Material ShadedLevelColorationUnlitMaterial; +var globalconfig string ShadedLevelColorationUnlitMaterialName; +var Material RemoveSurfaceMaterial; +var globalconfig string RemoveSurfaceMaterialName; +var Material VertexColorMaterial; +var globalconfig string VertexColorMaterialName; +var Material VertexColorViewModeMaterial_ColorOnly; +var globalconfig string VertexColorViewModeMaterialName_ColorOnly; +var Material VertexColorViewModeMaterial_AlphaAsColor; +var globalconfig string VertexColorViewModeMaterialName_AlphaAsColor; +var Material VertexColorViewModeMaterial_RedOnly; +var globalconfig string VertexColorViewModeMaterialName_RedOnly; +var Material VertexColorViewModeMaterial_GreenOnly; +var globalconfig string VertexColorViewModeMaterialName_GreenOnly; +var Material VertexColorViewModeMaterial_BlueOnly; +var globalconfig string VertexColorViewModeMaterialName_BlueOnly; +var Material HeatmapMaterial; +var globalconfig string HeatmapMaterialName; +var Material BoneWeightMaterial; +var globalconfig string BoneWeightMaterialName; +var Material TangentColorMaterial; +var globalconfig string TangentColorMaterialName; +var Material MobileEmulationMasterMaterial; +var globalconfig string MobileEmulationMasterMaterialName; +var Material ProcBuildingSimpleMaterial; +var globalconfig string ProcBuildingSimpleMaterialName; +var StaticMesh BuildingQuadStaticMesh; +var globalconfig string BuildingQuadStaticMeshName; +var globalconfig float ProcBuildingLODColorTexelsPerWorldUnit; +var globalconfig float ProcBuildingLODLightingTexelsPerWorldUnit; +var globalconfig int MaxProcBuildingLODColorTextureSize; +var globalconfig int MaxProcBuildingLODLightingTextureSize; +var globalconfig bool UseProcBuildingLODTextureCropping; +var globalconfig bool ForcePowerOfTwoProcBuildingLODTextures; +var globalconfig bool bCombineSimilarMappings; +var globalconfig bool bRenderLightMapDensityGrayscale; +var bool bScreenshotRequested; +var transient bool bUseSound; +var(Settings) config bool bUseBackgroundLevelStreaming; +var(Settings) config bool bSubtitlesEnabled; +var(Settings) config bool bSubtitlesForcedOff; +var config bool bSmoothFrameRate; +var config bool bCheckForMultiplePawnsSpawnedInAFrame; +var globalconfig bool bShouldGenerateSimpleLightmaps; +var(Settings) config bool bForceStaticTerrain; +var config bool bForceCPUSkinning; +var config bool bUsePostProcessEffects; +var config bool bOnScreenKismetWarnings; +var config bool bEnableKismetLogging; +var config bool bAllowMatureLanguage; +var globalconfig bool bDisablePhysXHardwareSupport; +var config bool bPauseOnLossOfFocus; +var globalconfig bool bCheckParticleRenderSize; +var const globalconfig bool bEnableColorClear; +var transient bool bAreConstraintsDirty; +var transient bool bHasPendingGlobalReattach; +var globalconfig bool bEnableOnScreenDebugMessages; +var transient bool bEnableOnScreenDebugMessagesDisplay; +var globalconfig bool bSuppressMapWarnings; +var globalconfig bool bCookSeparateSharedMPGameContent; +var globalconfig bool bUseRecastNavMesh; +var bool bDisableAILogging; +var globalconfig bool bUseNormalMapsForSimpleLightMaps; +var transient bool bStartWithMatineeCapture; +var transient bool bCompressMatineeCapture; +var transient bool bLockReadOnlyLevels; +var globalconfig float MaxRMSDForCombiningMappings; +var globalconfig int ImageReflectionTextureSize; +var globalconfig LinearColor LightingOnlyBrightness; +var globalconfig array LightComplexityColors; +var globalconfig array ShaderComplexityColors; +var globalconfig float MaxPixelShaderAdditiveComplexityCount; +var globalconfig float MinTextureDensity; +var globalconfig float IdealTextureDensity; +var globalconfig float MaxTextureDensity; +var globalconfig float MinLightMapDensity; +var globalconfig float IdealLightMapDensity; +var globalconfig float MaxLightMapDensity; +var globalconfig float RenderLightMapDensityGrayscaleScale; +var globalconfig float RenderLightMapDensityColorScale; +var globalconfig LinearColor LightMapDensityVertexMappedColor; +var globalconfig LinearColor LightMapDensitySelectedColor; +var globalconfig array StatColorMappings; +var Material EditorBrushMaterial; +var globalconfig string EditorBrushMaterialName; +var PhysicalMaterial DefaultPhysMaterial; +var globalconfig string DefaultPhysMaterialName; +var PhysicalMaterial LandscapeHolePhysMaterial; +var globalconfig string LandscapeHolePhysMaterialName; +var ApexDestructibleDamageParameters ApexDamageParams; +var globalconfig string ApexDamageParamsName; +var Material TerrainErrorMaterial; +var globalconfig string TerrainErrorMaterialName; +var globalconfig int TerrainMaterialMaxTextureCount; +var globalconfig int TerrainTessellationCheckCount; +var globalconfig float TerrainTessellationCheckDistance; +var Class OnlineSubsystemClass; +var globalconfig string DefaultOnlineSubsystemName; +var private PostProcessChain DefaultPostProcess; +var private config string DefaultPostProcessName; +var PostProcessChain ThumbnailSkeletalMeshPostProcess; +var config string ThumbnailSkeletalMeshPostProcessName; +var PostProcessChain ThumbnailParticleSystemPostProcess; +var config string ThumbnailParticleSystemPostProcessName; +var PostProcessChain ThumbnailMaterialPostProcess; +var config string ThumbnailMaterialPostProcessName; +var PostProcessChain DefaultUIScenePostProcess; +var config string DefaultUIScenePostProcessName; +var Material DefaultUICaretMaterial; +var globalconfig string DefaultUICaretMaterialName; +var Material SceneCaptureReflectActorMaterial; +var globalconfig string SceneCaptureReflectActorMaterialName; +var Material SceneCaptureCubeActorMaterial; +var globalconfig string SceneCaptureCubeActorMaterialName; +var Texture2D ScreenDoorNoiseTexture; +var globalconfig string ScreenDoorNoiseTextureName; +var Texture2D ImageGrainNoiseTexture; +var globalconfig string ImageGrainNoiseTextureName; +var Texture2D RandomAngleTexture; +var globalconfig string RandomAngleTextureName; +var Texture2D RandomNormalTexture; +var globalconfig string RandomNormalTextureName; +var Texture2D RandomMirrorDiscTexture; +var globalconfig string RandomMirrorDiscTextureName; +var Texture WeightMapPlaceholderTexture; +var globalconfig string WeightMapPlaceholderTextureName; +var Texture2D LightMapDensityTexture; +var globalconfig string LightMapDensityTextureName; +var Texture2D LightMapDensityNormal; +var globalconfig string LightMapDensityNormalName; +var SoundNodeWave DefaultSound; +var globalconfig string DefaultSoundName; +var(Settings) config float TimeBetweenPurgingPendingKillObjects; +var(Settings) config float MaxTimeBetweenPurgingPendingKillObjects; +var(Settings) config int GarbageCollectionDelayMinimumMemoryMB; +var const Client Client; +var init array GamePlayers; +var const GameViewportClient GameViewport; +var init array DeferredCommands; +var int TickCycles; +var int GameCycles; +var int ClientCycles; +var config float MaxSmoothedFrameRate; +var config float MinSmoothedFrameRate; +var config int NumPawnsAllowedToBeSpawnedInAFrame; +var native Pointer RemoteControlExec; +var native Pointer MobileMaterialEmulator; +var(Colors) Color C_WorldBox; +var(Colors) Color C_BrushWire; +var(Colors) Color C_AddWire; +var(Colors) Color C_SubtractWire; +var(Colors) Color C_SemiSolidWire; +var(Colors) Color C_NonSolidWire; +var(Colors) Color C_WireBackground; +var(Colors) Color C_ScaleBoxHi; +var(Colors) Color C_VolumeCollision; +var(Colors) Color C_BSPCollision; +var(Colors) Color C_OrthoBackground; +var(Colors) Color C_Volume; +var(Colors) Color C_BrushShape; +var(Settings) float StreamingDistanceFactor; +var const config string ScoutClassName; +var Engine.ETransitionType TransitionType; +var string TransitionDescription; +var string TransitionGameType; +var config float MeshLODRange; +var config float CameraRotationThreshold; +var config float CameraTranslationThreshold; +var config float PrimitiveProbablyVisibleTime; +var config float PercentUnoccludedRequeries; +var config float MaxOcclusionPixelsFraction; +var config int MaxFluidNumVerts; +var config float FluidSimulationTimeLimit; +var config int MaxParticleResize; +var config int MaxParticleResizeWarn; +var config int MaxParticleVertexMemory; +var transient int MaxParticleSpriteCount; +var transient int MaxParticleSubUVCount; +var config int BeginUPTryCount; +var transient array PendingDroppedNotes; +var globalconfig string DynamicCoverMeshComponentName; +var globalconfig float NetClientTicksPerSecond; +var globalconfig float MaxTrackedOcclusionIncrement; +var globalconfig float TrackedOcclusionStepSize; +var globalconfig LinearColor DefaultSelectedMaterialColor; +var globalconfig LinearColor DefaultHoveredMaterialColor; +var transient LinearColor SelectedMaterialColor; +var transient LinearColor UnselectedMaterialColor; +var globalconfig array IgnoreSimulatedFuncWarnings; +var private transient int ScreenSaverInhibitorSemaphore; +var private transient Pointer ScreenSaverInhibitor; +var TranslationContext GlobalTranslationContext; +var const transient Double LoadingMovieStartTime; +var transient string MatineeCaptureName; +var transient string MatineePackageCaptureName; +var transient string VisibleLevelsForMatineeCapture; +var transient int MatineeCaptureFPS; +var transient int MatineeCaptureType; +var NetDriver PeerNetDriver; + +// Export UEngine::execIsEditor(FFrame&, void* const) +native static final function bool IsEditor(); + +// Export UEngine::execIsGame(FFrame&, void* const) +native static final function bool IsGame(); + +// Export UEngine::execGetCurrentWorldInfo(FFrame&, void* const) +native static final function WorldInfo GetCurrentWorldInfo(); + +// Export UEngine::execGetBuildDate(FFrame&, void* const) +native static final function string GetBuildDate(); + +// Export UEngine::execGetDeviceUUID(FFrame&, void* const) +native static final function string GetDeviceUUID(); + +// Export UEngine::execGetOSVersion(FFrame&, void* const) +native static final function float GetOSVersion(); + +// Export UEngine::execGetDevicePushNotificationToken(FFrame&, void* const) +native static final function string GetDevicePushNotificationToken(); + +// Export UEngine::execBuildBugSubmissionString(FFrame&, void* const) +native static final function string BuildBugSubmissionString(string BugField, string BugFieldData); + +// Export UEngine::execHasNetworkConnection(FFrame&, void* const) +native static final function bool HasNetworkConnection(); + +// Export UEngine::execCreatePeerNetDriver(FFrame&, void* const) +native static final function CreatePeerNetDriver(); + +// Export UEngine::execCleanUpPeerNetDriver(FFrame&, void* const) +native static final function CleanUpPeerNetDriver(); + +// Export UEngine::execResetPeerNetDriver(FFrame&, void* const) +native static final function ResetPeerNetDriver(); + +// Export UEngine::execGetTinyFont(FFrame&, void* const) +native static final function Font GetTinyFont(); + +// Export UEngine::execGetSmallFont(FFrame&, void* const) +native static final function Font GetSmallFont(); + +// Export UEngine::execGetMediumFont(FFrame&, void* const) +native static final function Font GetMediumFont(); + +// Export UEngine::execGetLargeFont(FFrame&, void* const) +native static final function Font GetLargeFont(); + +// Export UEngine::execGetSubtitleFont(FFrame&, void* const) +native static final function Font GetSubtitleFont(); + +// Export UEngine::execGetAdditionalFont(FFrame&, void* const) +native static final function Font GetAdditionalFont(int AdditionalFontIndex); + +// Export UEngine::execIsSplitScreen(FFrame&, void* const) +native static final function bool IsSplitScreen(); + +// Export UEngine::execIsStereoscopic3D(FFrame&, void* const) +native static final function bool IsStereoscopic3D(); + +// Export UEngine::execIsUsingES2Renderer(FFrame&, void* const) +native static final function bool IsUsingES2Renderer(); + +// Export UEngine::execGetAudioDevice(FFrame&, void* const) +native static final function AudioDevice GetAudioDevice(); + +// Export UEngine::execGetLastMovieName(FFrame&, void* const) +native static final function string GetLastMovieName(); + +// Export UEngine::execPlayLoadMapMovie(FFrame&, void* const) +native static final function bool PlayLoadMapMovie(); + +// Export UEngine::execPlayLoadMapMovieByMapName(FFrame&, void* const) +native static final function bool PlayLoadMapMovieByMapName(string MovieName); + +// Export UEngine::execStopMovie(FFrame&, void* const) +native static final function StopMovie(bool bDelayStopUntilGameHasRendered); + +// Export UEngine::execRemoveAllOverlays(FFrame&, void* const) +native static final function RemoveAllOverlays(); + +// Export UEngine::execAddOverlay(FFrame&, void* const) +native static final function AddOverlay(Font Font, string Text, float X, float Y, float ScaleX, float ScaleY, bool bIsCentered); + +// Export UEngine::execAddOverlayWrapped(FFrame&, void* const) +native static final function AddOverlayWrapped(Font Font, string Text, float X, float Y, float ScaleX, float ScaleY, float WrapWidth); + +// Export UEngine::execIsRealDStereoEnabled(FFrame&, void* const) +native static final function bool IsRealDStereoEnabled(); + +// Export UEngine::execGetEngine(FFrame&, void* const) +native static final function Engine GetEngine(); + +// Export UEngine::execGetDefaultPostProcessChain(FFrame&, void* const) +native static final function PostProcessChain GetDefaultPostProcessChain(); + +// Export UEngine::execGetWorldPostProcessChain(FFrame&, void* const) +native static final function PostProcessChain GetWorldPostProcessChain(); + +// Export UEngine::execAddTextureStreamingSlaveLoc(FFrame&, void* const) +native final function AddTextureStreamingSlaveLoc(Vector InLoc, float BoostFactor, bool bOverrideLocation, float OverrideDuration); + +// Export UEngine::execBasicSaveObject(FFrame&, void* const) +native static final function bool BasicSaveObject(Object Obj, string PathName, bool bIsSaveGame, int Version, optional bool bEncrypt = false); + +// Export UEngine::execBasicLoadObject(FFrame&, void* const) +native static final function bool BasicLoadObject(Object Obj, string PathName, bool bIsSaveGame, int Version); + +// Export UEngine::execLaunchURL(FFrame&, void* const) +native static final function LaunchURL(string URL); + +// Export UEngine::execGetSystemSettingBool(FFrame&, void* const) +native final function bool GetSystemSettingBool(string SettingName); + +// Export UEngine::execGetSystemSettingInt(FFrame&, void* const) +native final function int GetSystemSettingInt(string SettingName); + +// Export UEngine::execGetSystemSettingFloat(FFrame&, void* const) +native final function float GetSystemSettingFloat(string SettingName); + +defaultproperties +{ + TinyFontName="EngineFonts.TinyFont" + SmallFontName="EngineFonts.SmallFont" + MediumFontName="EngineFonts.SmallFont" + LargeFontName="EngineFonts.SmallFont" + SubtitleFontName="EngineFonts.SmallFont" + ConsoleClassName="Engine.Console" + GameViewportClientClassName="TgClient.TgGameViewportClient" + DataStoreClientClassName="Engine.DataStoreClient" + LocalPlayerClassName="Engine.LocalPlayer" + DefaultMaterialName="EngineMaterials.DefaultMaterial" + DefaultDecalMaterialName="EngineMaterials.DefaultDecalMaterial" + DefaultTextureName="EngineMaterials.DefaultDiffuse" + WireframeMaterialName="EngineDebugMaterials.WireframeMaterial" + EmissiveTexturedMaterialName="EngineMaterials.EmissiveTexturedMaterial" + GeomMaterialName="EngineDebugMaterials.GeomMaterial" + DefaultFogVolumeMaterialName="EngineMaterials.FogVolumeMaterial" + TickMaterialName="EditorMaterials.Tick_Mat" + CrossMaterialName="EditorMaterials.Cross_Mat" + LevelColorationLitMaterialName="EngineDebugMaterials.LevelColorationLitMaterial" + LevelColorationUnlitMaterialName="EngineDebugMaterials.LevelColorationUnlitMaterial" + LightingTexelDensityName="EngineDebugMaterials.MAT_LevelColorationLitLightmapUVs" + ShadedLevelColorationLitMaterialName="EngineDebugMaterials.ShadedLevelColorationLitMaterial" + ShadedLevelColorationUnlitMaterialName="EngineDebugMaterials.ShadedLevelColorationUnlitMaterial" + RemoveSurfaceMaterialName="EngineMaterials.RemoveSurfaceMaterial" + VertexColorMaterialName="EngineDebugMaterials.VertexColorMaterial" + VertexColorViewModeMaterialName_ColorOnly="EngineDebugMaterials.VertexColorViewMode_ColorOnly" + VertexColorViewModeMaterialName_AlphaAsColor="EngineDebugMaterials.VertexColorViewMode_AlphaAsColor" + VertexColorViewModeMaterialName_RedOnly="EngineDebugMaterials.VertexColorViewMode_RedOnly" + VertexColorViewModeMaterialName_GreenOnly="EngineDebugMaterials.VertexColorViewMode_GreenOnly" + VertexColorViewModeMaterialName_BlueOnly="EngineDebugMaterials.VertexColorViewMode_BlueOnly" + HeatmapMaterialName="EngineDebugMaterials.HeatmapMaterial" + BoneWeightMaterialName="EngineDebugMaterials.BoneWeightMaterial" + TangentColorMaterialName="EngineDebugMaterials.TangentColorMaterial" + MobileEmulationMasterMaterialName="MobileEngineMaterials.MobileMasterMaterial" + ProcBuildingSimpleMaterialName="EngineBuildings.ProcBuildingSimpleMaterial" + BuildingQuadStaticMeshName="EngineBuildings.BuildingQuadMesh" + ProcBuildingLODColorTexelsPerWorldUnit=0.0750000 + ProcBuildingLODLightingTexelsPerWorldUnit=0.0150000 + MaxProcBuildingLODColorTextureSize=1024 + MaxProcBuildingLODLightingTextureSize=256 + UseProcBuildingLODTextureCropping=true + ForcePowerOfTwoProcBuildingLODTextures=true + bUseSound=true + bUseBackgroundLevelStreaming=true + bSubtitlesEnabled=true + bSmoothFrameRate=true + bDisablePhysXHardwareSupport=true + bCheckParticleRenderSize=true + bSuppressMapWarnings=true + bUseRecastNavMesh=true + bUseNormalMapsForSimpleLightMaps=true + MaxRMSDForCombiningMappings=6.0000000 + ImageReflectionTextureSize=1024 + LightingOnlyBrightness=(R=0.3000000,G=0.3000000,B=0.3000000,A=1.0000000) + LightComplexityColors=/* ERROR: System.ArgumentOutOfRangeException */ + ShaderComplexityColors=/* ERROR: System.ArgumentOutOfRangeException */ + MaxPixelShaderAdditiveComplexityCount=900.0000000 + IdealTextureDensity=13.0000000 + MaxTextureDensity=55.0000000 + IdealLightMapDensity=0.0500000 + MaxLightMapDensity=0.2000000 + RenderLightMapDensityGrayscaleScale=1.0000000 + RenderLightMapDensityColorScale=1.0000000 + LightMapDensityVertexMappedColor=(R=0.6500000,G=0.6500000,B=0.2500000,A=1.0000000) + LightMapDensitySelectedColor=(R=1.0000000,G=0.2000000,B=1.0000000,A=1.0000000) + StatColorMappings[0]=(StatName="AverageFPS",ColorMap=((In=15.0000000,Out=(R=255,G=0,B=0,A=0)),(In=30.0000000,Out=(R=255,G=255,B=0,A=0)),(In=45.0000000,Out=(R=0,G=255,B=0,A=0))),DisableBlend=false) + StatColorMappings[1]=(StatName="Frametime",ColorMap=((In=1.0000000,Out=(R=0,G=255,B=0,A=0)),(In=25.0000000,Out=(R=0,G=255,B=0,A=0)),(In=29.0000000,Out=(R=255,G=255,B=0,A=0)),(In=33.0000000,Out=(R=255,G=0,B=0,A=0))),DisableBlend=false) + StatColorMappings[2]=(StatName="Streaming fudge factor",ColorMap=((In=0.0000000,Out=(R=0,G=255,B=0,A=0)),(In=1.0000000,Out=(R=0,G=255,B=0,A=0)),(In=2.5000000,Out=(R=255,G=255,B=0,A=0)),(In=5.0000000,Out=(R=255,G=0,B=0,A=0)),(In=10.0000000,Out=(R=255,G=0,B=0,A=0))),DisableBlend=false) + EditorBrushMaterialName="EngineMaterials.EditorBrushMaterial" + DefaultPhysMaterialName="EngineMaterials.DefaultPhysicalMaterial" + LandscapeHolePhysMaterialName="EngineMaterials.LandscapeHolePhysicalMaterial" + TerrainErrorMaterialName="EngineDebugMaterials.MaterialError_Mat" + TerrainMaterialMaxTextureCount=16 + TerrainTessellationCheckCount=6 + TerrainTessellationCheckDistance=4096.0000000 + DefaultPostProcessName="TgPostProcess.PostProcess.PP_Hit" + ThumbnailSkeletalMeshPostProcessName="EngineMaterials.DefaultThumbnailPostProcess" + ThumbnailParticleSystemPostProcessName="EngineMaterials.DefaultThumbnailPostProcess" + ThumbnailMaterialPostProcessName="EngineMaterials.DefaultThumbnailPostProcess" + DefaultUIScenePostProcessName="EngineMaterials.DefaultUIPostProcess" + DefaultUICaretMaterialName="EngineMaterials.BlinkingCaret" + SceneCaptureReflectActorMaterialName="EngineMaterials.ScreenMaterial" + SceneCaptureCubeActorMaterialName="EngineMaterials.CubeMaterial" + ScreenDoorNoiseTextureName="EngineMaterials.Good64x64TilingNoiseHighFreq" + ImageGrainNoiseTextureName="EngineMaterials.Good64x64TilingNoiseHighFreq" + RandomAngleTextureName="EngineMaterials.RandomAngles" + RandomNormalTextureName="EngineMaterials.RandomNormal2" + RandomMirrorDiscTextureName="EngineMaterials.RandomMirrorDisc" + WeightMapPlaceholderTextureName="EngineMaterials.WeightMapPlaceholderTexture" + LightMapDensityTextureName="EngineMaterials.DefaultWhiteGrid" + LightMapDensityNormalName="EngineMaterials.DefaultNormal" + DefaultSoundName="EngineSounds.WhiteNoise" + TimeBetweenPurgingPendingKillObjects=30.0000000 + MaxTimeBetweenPurgingPendingKillObjects=1000.0000000 + GarbageCollectionDelayMinimumMemoryMB=512 + MaxSmoothedFrameRate=62.0000000 + MinSmoothedFrameRate=22.0000000 + NumPawnsAllowedToBeSpawnedInAFrame=2 + C_WorldBox=(R=0,G=0,B=40,A=255) + C_BrushWire=(R=192,G=0,B=0,A=255) + C_AddWire=(R=127,G=127,B=255,A=255) + C_SubtractWire=(R=255,G=192,B=63,A=255) + C_SemiSolidWire=(R=127,G=255,B=0,A=255) + C_NonSolidWire=(R=63,G=192,B=32,A=255) + C_WireBackground=(R=0,G=0,B=0,A=255) + C_ScaleBoxHi=(R=223,G=149,B=157,A=255) + C_VolumeCollision=(R=149,G=223,B=157,A=255) + C_BSPCollision=(R=149,G=157,B=223,A=255) + C_OrthoBackground=(R=163,G=163,B=163,A=255) + C_Volume=(R=255,G=196,B=255,A=255) + C_BrushShape=(R=128,G=255,B=128,A=255) + ScoutClassName="TgGame.TgAIScout" + CameraRotationThreshold=45.0000000 + CameraTranslationThreshold=10000.0000000 + PrimitiveProbablyVisibleTime=8.0000000 + PercentUnoccludedRequeries=0.1250000 + MaxOcclusionPixelsFraction=0.1000000 + MaxFluidNumVerts=1048576 + FluidSimulationTimeLimit=30.0000000 + MaxParticleResize=1024 + MaxParticleResizeWarn=10240 + MaxParticleVertexMemory=131972 + BeginUPTryCount=200000 + NetClientTicksPerSecond=200.0000000 + MaxTrackedOcclusionIncrement=0.1000000 + TrackedOcclusionStepSize=0.1000000 + DefaultSelectedMaterialColor=(R=0.0400000,G=0.0200000,B=0.2400000,A=1.0000000) + DefaultHoveredMaterialColor=(R=0.0200000,G=0.0200000,B=0.0200000,A=1.0000000) + SelectedMaterialColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + UnselectedMaterialColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + IgnoreSimulatedFuncWarnings[0]="Tick" +} \ No newline at end of file diff --git a/exported/Engine/Classes/EngineBaseTypes.uc b/exported/Engine/Classes/EngineBaseTypes.uc new file mode 100755 index 00000000..ef9b52ab --- /dev/null +++ b/exported/Engine/Classes/EngineBaseTypes.uc @@ -0,0 +1,21 @@ +class EngineBaseTypes extends Object + abstract + native(Base); + +struct native RenderingPerformanceOverrides +{ + var() bool bAllowAmbientOcclusion; + var() bool bAllowDominantWholeSceneDynamicShadows; + var() bool bAllowMotionBlurSkinning; + var() bool bAllowTemporalAA; + var() bool bAllowLightShafts; + + structdefaultproperties + { + bAllowAmbientOcclusion=true + bAllowDominantWholeSceneDynamicShadows=true + bAllowMotionBlurSkinning=true + bAllowTemporalAA=true + bAllowLightShafts=true + } +}; diff --git a/exported/Engine/Classes/EngineTypes.uc b/exported/Engine/Classes/EngineTypes.uc new file mode 100755 index 00000000..a341f5fb --- /dev/null +++ b/exported/Engine/Classes/EngineTypes.uc @@ -0,0 +1,406 @@ +class EngineTypes extends Object + abstract + native; + +enum EPathFindingError +{ + PATHERROR_STARTPOLYNOTFOUND, // 0 + PATHERROR_GOALPOLYNOTFOUND, // 1 + PATHERROR_ANCHORPYLONNOTFOUND, // 2 + PATHERROR_NOPATHFOUND, // 3 + PATHERROR_COMPUTEVALIDFINALDEST_FAIL,// 4 + PATHERROR_GETNEXTMOVELOCATION_FAIL,// 5 + PATHERROR_MOVETIMEOUT, // 6 + PATHERROR_MAX // 7 +}; + +enum EBlendMode +{ + BLEND_Opaque, // 0 + BLEND_Masked, // 1 + BLEND_Translucent, // 2 + BLEND_Additive, // 3 + BLEND_Modulate, // 4 + BLEND_ModulateAndAdd, // 5 + BLEND_SoftMasked, // 6 + BLEND_AlphaComposite, // 7 + BLEND_DitheredTranslucent, // 8 + BLEND_MAX // 9 +}; + +enum EMaterialLightingModel +{ + MLM_Phong, // 0 + MLM_NonDirectional, // 1 + MLM_Unlit, // 2 + MLM_SHPRT, // 3 + MLM_Custom, // 4 + MLM_Anisotropic, // 5 + MLM_MAX // 6 +}; + +enum EMaterialTessellationMode +{ + MTM_NoTessellation, // 0 + MTM_FlatTessellation, // 1 + MTM_PNTriangles, // 2 + MTM_MAX // 3 +}; + +enum EMobileValueSource +{ + MVS_Constant, // 0 + MVS_VertexColorRed, // 1 + MVS_VertexColorGreen, // 2 + MVS_VertexColorBlue, // 3 + MVS_VertexColorAlpha, // 4 + MVS_BaseTextureRed, // 5 + MVS_BaseTextureGreen, // 6 + MVS_BaseTextureBlue, // 7 + MVS_BaseTextureAlpha, // 8 + MVS_MaskTextureRed, // 9 + MVS_MaskTextureGreen, // 10 + MVS_MaskTextureBlue, // 11 + MVS_MaskTextureAlpha, // 12 + MVS_NormalTextureAlpha, // 13 + MVS_EmissiveTextureRed, // 14 + MVS_EmissiveTextureGreen, // 15 + MVS_EmissiveTextureBlue, // 16 + MVS_EmissiveTextureAlpha, // 17 + MVS_MAX // 18 +}; + +enum EMobileTextureBlendFactorSource +{ + MTBFS_VertexColor, // 0 + MTBFS_MaskTexture, // 1 + MTBFS_MAX // 2 +}; + +enum EMobileTexCoordsSource +{ + MTCS_TexCoords0, // 0 + MTCS_TexCoords1, // 1 + MTCS_TexCoords2, // 2 + MTCS_TexCoords3, // 3 + MTCS_MAX // 4 +}; + +enum EMobileAlphaValueSource +{ + MAVS_DiffuseTextureAlpha, // 0 + MAVS_MaskTextureRed, // 1 + MAVS_MaskTextureGreen, // 2 + MAVS_MaskTextureBlue, // 3 + MAVS_MAX // 4 +}; + +enum EMobileColorMultiplySource +{ + MCMS_None, // 0 + MCMS_BaseTextureRed, // 1 + MCMS_BaseTextureGreen, // 2 + MCMS_BaseTextureBlue, // 3 + MCMS_BaseTextureAlpha, // 4 + MCMS_MaskTextureRed, // 5 + MCMS_MaskTextureGreen, // 6 + MCMS_MaskTextureBlue, // 7 + MCMS_MaskTextureAlpha, // 8 + MCMS_MAX // 9 +}; + +enum EMobileEmissiveColorSource +{ + MECS_EmissiveTexture, // 0 + MECS_BaseTexture, // 1 + MECS_Constant, // 2 + MECS_MAX // 3 +}; + +enum EMobileEnvironmentBlendMode +{ + MEBM_Add, // 0 + MEBM_Lerp, // 1 + MEBM_MAX // 2 +}; + +enum EMobileSpecularMask +{ + MSM_Constant, // 0 + MSM_Luminance, // 1 + MSM_DiffuseRed, // 2 + MSM_DiffuseGreen, // 3 + MSM_DiffuseBlue, // 4 + MSM_DiffuseAlpha, // 5 + MSM_MaskTextureRGB, // 6 + MSM_MaskTextureRed, // 7 + MSM_MaskTextureGreen, // 8 + MSM_MaskTextureBlue, // 9 + MSM_MaskTextureAlpha, // 10 + MSM_MAX // 11 +}; + +enum EMobileAmbientOcclusionSource +{ + MAOS_Disabled, // 0 + MAOS_VertexColorRed, // 1 + MAOS_VertexColorGreen, // 2 + MAOS_VertexColorBlue, // 3 + MAOS_VertexColorAlpha, // 4 + MAOS_MAX // 5 +}; + +enum ELightingBuildQuality +{ + Quality_Preview, // 0 + Quality_Medium, // 1 + Quality_High, // 2 + Quality_Production, // 3 + Quality_NoGlobalIllumination, // 4 + Quality_MAX // 5 +}; + +struct native SubtitleCue +{ + var() const localized string Text; + var() const localized float Time; + var() int m_nMsgId; + + structdefaultproperties + { + Text="" + Time=0.0000000 + m_nMsgId=0 + } +}; + +struct native LocalizedSubtitle +{ + var string LanguageExt; + var array Subtitles; + var bool bMature; + var bool bManualWordWrap; + var bool bSingleLine; + + structdefaultproperties + { + LanguageExt="" + Subtitles=none + bMature=false + bManualWordWrap=false + bSingleLine=false + } +}; + +struct LightMapRef +{ + var private native const Pointer Reference; +}; + +struct native DominantShadowInfo +{ + var Matrix WorldToLight; + var Matrix LightToWorld; + var Box LightSpaceImportanceBounds; + var int ShadowMapSizeX; + var int ShadowMapSizeY; + + structdefaultproperties + { + WorldToLight=(XPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000),YPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000),ZPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000),WPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000)) + LightToWorld=(XPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000),YPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000),ZPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000),WPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000)) + LightSpaceImportanceBounds=(Min=(X=0.0000000,Y=0.0000000,Z=0.0000000),Max=(X=0.0000000,Y=0.0000000,Z=0.0000000),IsValid=0) + ShadowMapSizeX=0 + ShadowMapSizeY=0 + } +}; + +struct native LightmassLightSettings +{ + var(General) float IndirectLightingScale; + var(General) float IndirectLightingSaturation; + var(General) float ShadowExponent; + + structdefaultproperties + { + IndirectLightingScale=1.0000000 + IndirectLightingSaturation=1.0000000 + ShadowExponent=2.0000000 + } +}; + +struct native LightmassPointLightSettings extends LightmassLightSettings +{ + var(Point) float LightSourceRadius; + + structdefaultproperties + { + LightSourceRadius=100.0000000 + IndirectLightingScale=0.0000000 + IndirectLightingSaturation=0.0000000 + ShadowExponent=0.0000000 + } +}; + +struct native LightmassDirectionalLightSettings extends LightmassLightSettings +{ + var(Directional) float LightSourceAngle; + + structdefaultproperties + { + LightSourceAngle=3.0000000 + IndirectLightingScale=0.0000000 + IndirectLightingSaturation=0.0000000 + ShadowExponent=0.0000000 + } +}; + +struct LightmassPrimitiveSettings +{ + var() bool bUseTwoSidedLighting; + var() bool bShadowIndirectOnly; + var() bool bUseEmissiveForStaticLighting; + var() float EmissiveLightFalloffExponent; + var() float EmissiveLightExplicitInfluenceRadius; + var() float EmissiveBoost; + var() float DiffuseBoost; + var float SpecularBoost; + var() float FullyOccludedSamplesFraction; + + structdefaultproperties + { + bUseTwoSidedLighting=false + bShadowIndirectOnly=false + bUseEmissiveForStaticLighting=false + EmissiveLightFalloffExponent=2.0000000 + EmissiveLightExplicitInfluenceRadius=0.0000000 + EmissiveBoost=1.0000000 + DiffuseBoost=1.0000000 + SpecularBoost=1.0000000 + FullyOccludedSamplesFraction=1.0000000 + } +}; + +struct native LightmassDebugOptions +{ + var() bool bDebugMode; + var() bool bStatsEnabled; + var() bool bGatherBSPSurfacesAcrossComponents; + var() float CoplanarTolerance; + var() bool bUseDeterministicLighting; + var() bool bUseImmediateImport; + var() bool bImmediateProcessMappings; + var() bool bSortMappings; + var() bool bDumpBinaryFiles; + var() bool bDebugMaterials; + var() bool bPadMappings; + var() bool bDebugPaddings; + var() bool bOnlyCalcDebugTexelMappings; + var() bool bUseRandomColors; + var() bool bColorBordersGreen; + var() bool bColorByExecutionTime; + var() float ExecutionTimeDivisor; + var bool bInitialized; + + structdefaultproperties + { + bDebugMode=false + bStatsEnabled=false + bGatherBSPSurfacesAcrossComponents=true + CoplanarTolerance=0.0010000 + bUseDeterministicLighting=true + bUseImmediateImport=true + bImmediateProcessMappings=true + bSortMappings=true + bDumpBinaryFiles=false + bDebugMaterials=false + bPadMappings=true + bDebugPaddings=false + bOnlyCalcDebugTexelMappings=false + bUseRandomColors=false + bColorBordersGreen=false + bColorByExecutionTime=false + ExecutionTimeDivisor=15.0000000 + bInitialized=false + } +}; + +struct native SwarmDebugOptions +{ + var() bool bDistributionEnabled; + var() bool bForceContentExport; + var bool bInitialized; + + structdefaultproperties + { + bDistributionEnabled=true + bForceContentExport=false + bInitialized=false + } +}; + +struct native RootMotionCurve +{ + var() name AnimName; + var() InterpCurveVector Curve; + var() float MaxCurveTime; + + structdefaultproperties + { + AnimName="None" + Curve=(Points=none,InterpMethod=EInterpMethodType.IMT_UseFixedTangentEvalAndNewAutoTangents) + MaxCurveTime=0.0000000 + } +}; + +struct native PrimitiveMaterialRef +{ + var export editinline PrimitiveComponent Primitive; + var int MaterialIndex; + + structdefaultproperties + { + Primitive=none + MaterialIndex=0 + } +}; + +struct native PostProcessMaterialRef +{ + var MaterialEffect Effect; + + structdefaultproperties + { + Effect=none + } +}; + +struct native MaterialReferenceList +{ + var() MaterialInterface TargetMaterial; + var edithide array AffectedMaterialRefs; + var edithide array AffectedPPChainMaterialRefs; + + structdefaultproperties + { + TargetMaterial=none + AffectedMaterialRefs=none + AffectedPPChainMaterialRefs=none + } +}; + +struct native VelocityObstacleStat +{ + var Vector Position; + var Vector Velocity; + var float Radius; + var int Priority; + + structdefaultproperties + { + Position=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Velocity=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Radius=0.0000000 + Priority=0 + } +}; diff --git a/exported/Engine/Classes/EnvironmentVolume.uc b/exported/Engine/Classes/EnvironmentVolume.uc new file mode 100755 index 00000000..36da3672 --- /dev/null +++ b/exported/Engine/Classes/EnvironmentVolume.uc @@ -0,0 +1,26 @@ +class EnvironmentVolume extends Volume + native(AI) + placeable + hidecategories(Navigation,Object,Movement,Display) + implements(Interface_NavMeshPathObstacle,Interface_NavMeshPathObject); + +var private native const noexport Pointer VfTable_IInterface_NavMeshPathObstacle; +var private native const noexport Pointer VfTable_IInterface_NavMeshPathObject; +var const transient bool bSplitNavMesh; + +// Export UEnvironmentVolume::execSetSplitNavMesh(FFrame&, void* const) +native final function SetSplitNavMesh(bool bNewValue); + +defaultproperties +{ + // Reference: BrushComponent'Engine.Default__EnvironmentVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ExponentialHeightFog.uc b/exported/Engine/Classes/ExponentialHeightFog.uc new file mode 100755 index 00000000..07993106 --- /dev/null +++ b/exported/Engine/Classes/ExponentialHeightFog.uc @@ -0,0 +1,85 @@ +class ExponentialHeightFog extends Info + placeable + hidecategories(Navigation,Collision) + classgroup(Fog); + +var() const editconst export editinline ExponentialHeightFogComponent Component; +var repnotify bool bEnabled; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + bEnabled; +} + +simulated event PostBeginPlay() +{ + super(Actor).PostBeginPlay(); + bEnabled = Component.bEnabled; + // End:0x8D + if(WorldInfo.GRI != none) + { + WorldInfo.GRI.OnFogAdded(self); + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x43 + if(VarName == 'bEnabled') + { + Component.SetEnabled(bEnabled); + } + else + { + super(Actor).ReplicatedEvent(VarName); + } + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x5A + if(Action.InputLinks[0].bHasImpulse) + { + Component.SetEnabled(true); + } + else + { + // End:0xB4 + if(Action.InputLinks[1].bHasImpulse) + { + Component.SetEnabled(false); + } + else + { + // End:0x12C + if(Action.InputLinks[2].bHasImpulse) + { + Component.SetEnabled(!Component.bEnabled); + } + } + } + bEnabled = Component.bEnabled; + ForceNetRelevant(); + SetForcedInitialReplicatedProperty(BoolProperty'Engine.ExponentialHeightFog.bEnabled', bEnabled == default.bEnabled); + //return; +} + +defaultproperties +{ + // Reference: ExponentialHeightFogComponent'Engine.Default__ExponentialHeightFog.HeightFogComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'HeightFogComponent0' + begin object name="HeightFogComponent0" class=Engine.ExponentialHeightFogComponent + end object + Component=HeightFogComponent0 + Components[0]=none + Components[1]=HeightFogComponent0 + DrawScale=5.0000000 + TickGroup=ETickingGroup.TG_DuringAsyncWork + bNoDelete=true + bServerTickIsDisabled=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ExponentialHeightFogComponent.uc b/exported/Engine/Classes/ExponentialHeightFogComponent.uc new file mode 100755 index 00000000..026e3367 --- /dev/null +++ b/exported/Engine/Classes/ExponentialHeightFogComponent.uc @@ -0,0 +1,36 @@ +class ExponentialHeightFogComponent extends ActorComponent + native(FogVolume) + editinlinenew + collapsecategories + hidecategories(Object); + +var() const bool bEnabled; +var() interp const bool bUseActorDirectionForLightDirection; +var const float FogHeight; +var() interp float FogDensity; +var() interp const float FogHeightFalloff; +var() interp const float FogMaxOpacity; +var() interp float StartDistance; +var() interp const float LightTerminatorAngle; +var() interp const float OppositeLightBrightness; +var() interp Color OppositeLightColor; +var() interp const float LightInscatteringBrightness; +var() interp const Color LightInscatteringColor; +var Vector DominantDirectionalLightDirection; + +// Export UExponentialHeightFogComponent::execSetEnabled(FFrame&, void* const) +native final function SetEnabled(bool bSetEnabled); + +defaultproperties +{ + bEnabled=true + FogDensity=0.0200000 + FogHeightFalloff=0.2000000 + FogMaxOpacity=1.0000000 + LightTerminatorAngle=45.0000000 + OppositeLightBrightness=0.2000000 + OppositeLightColor=(R=177,G=208,B=255,A=0) + LightInscatteringBrightness=1.0000000 + LightInscatteringColor=(R=245,G=212,B=41,A=0) + DominantDirectionalLightDirection=(X=0.0000000,Y=0.0000000,Z=1.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/FaceFXAnimSet.uc b/exported/Engine/Classes/FaceFXAnimSet.uc new file mode 100755 index 00000000..e5851015 --- /dev/null +++ b/exported/Engine/Classes/FaceFXAnimSet.uc @@ -0,0 +1,8 @@ +class FaceFXAnimSet extends Object + native + hidecategories(Object); + +var native const Pointer InternalFaceFXAnimSet; +var native const array RawFaceFXAnimSetBytes; +var native const array RawFaceFXMiniSessionBytes; +var int NumLoadErrors; diff --git a/exported/Engine/Classes/FaceFXAsset.uc b/exported/Engine/Classes/FaceFXAsset.uc new file mode 100755 index 00000000..4c31bf31 --- /dev/null +++ b/exported/Engine/Classes/FaceFXAsset.uc @@ -0,0 +1,15 @@ +class FaceFXAsset extends Object + native + hidecategories(Object); + +var native const Pointer FaceFXActor; +var native const array RawFaceFXActorBytes; +var native const array RawFaceFXSessionBytes; +var transient array MountedFaceFXAnimSets; +var int NumLoadErrors; + +// Export UFaceFXAsset::execMountFaceFXAnimSet(FFrame&, void* const) +native final function MountFaceFXAnimSet(FaceFXAnimSet AnimSet); + +// Export UFaceFXAsset::execUnmountFaceFXAnimSet(FFrame&, void* const) +native final function UnmountFaceFXAnimSet(FaceFXAnimSet AnimSet); diff --git a/exported/Engine/Classes/FacebookIntegration.uc b/exported/Engine/Classes/FacebookIntegration.uc new file mode 100755 index 00000000..3aa19be6 --- /dev/null +++ b/exported/Engine/Classes/FacebookIntegration.uc @@ -0,0 +1,50 @@ +class FacebookIntegration extends PlatformInterfaceBase + transient + native(PlatformInterface) + config(Engine); + +enum EFacebookIntegrationDelegate +{ + FID_AuthorizationComplete, // 0 + FID_FacebookRequestComplete, // 1 + FID_DialogComplete, // 2 + FID_FriendsListComplete, // 3 + FID_MAX // 4 +}; + +struct native FacebookFriend +{ + var string Name; + var string Id; + + structdefaultproperties + { + Name="" + Id="" + } +}; + +var config string AppID; +var config array Permissions; +var string UserName; +var string UserId; +var string AccessToken; +var array FriendsList; + +// Export UFacebookIntegration::execInit(FFrame&, void* const) +native event bool Init(); + +// Export UFacebookIntegration::execAuthorize(FFrame&, void* const) +native event bool Authorize(); + +// Export UFacebookIntegration::execIsAuthorized(FFrame&, void* const) +native event bool IsAuthorized(); + +// Export UFacebookIntegration::execFacebookRequest(FFrame&, void* const) +native event FacebookRequest(string GraphRequest); + +// Export UFacebookIntegration::execFacebookDialog(FFrame&, void* const) +native event FacebookDialog(string Action, array ParamKeysAndValues); + +// Export UFacebookIntegration::execDisconnect(FFrame&, void* const) +native event Disconnect(); diff --git a/exported/Engine/Classes/FailedConnect.uc b/exported/Engine/Classes/FailedConnect.uc new file mode 100755 index 00000000..e31d8bf6 --- /dev/null +++ b/exported/Engine/Classes/FailedConnect.uc @@ -0,0 +1,42 @@ +class FailedConnect extends LocalMessage + abstract; + +var const localized string FailMessage[4]; + +static function int GetFailSwitch(string FailString) +{ + // End:0x18 + if(FailString ~= "NEEDPW") + { + return 0; + } + // End:0x31 + if(FailString ~= "WRONGPW") + { + return 1; + } + // End:0x4F + if(FailString ~= "GAMESTARTED") + { + return 2; + } + return 3; + //return ReturnValue; +} + +static function string GetString(optional int Switch, optional bool bPRI1HUD, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject) +{ + return default.FailMessage[Clamp(Switch, 0, 3)]; + //return ReturnValue; +} + +defaultproperties +{ + FailMessage[0]="FAILED TO JOIN GAME. NEED PASSWORD." + FailMessage[1]="FAILED TO JOIN GAME. WRONG PASSWORD." + FailMessage[2]="FAILED TO JOIN GAME. GAME HAS STARTED." + FailMessage[3]="FAILED TO JOIN GAME." + bIsUnique=true + DrawColor=(R=255,G=0,B=128,A=255) + FontSize=1 +} \ No newline at end of file diff --git a/exported/Engine/Classes/FileLog.uc b/exported/Engine/Classes/FileLog.uc new file mode 100755 index 00000000..9656c57e --- /dev/null +++ b/exported/Engine/Classes/FileLog.uc @@ -0,0 +1,16 @@ +class FileLog extends FileWriter + native + notplaceable + hidecategories(Navigation,Movement,Collision); + +function OpenLog(coerce string LogFilename, optional string extension, optional bool bUnique) +{ + OpenFile(LogFilename, 0, extension, bUnique); + //return; +} + +function CloseLog() +{ + CloseFile(); + //return; +} diff --git a/exported/Engine/Classes/FileWriter.uc b/exported/Engine/Classes/FileWriter.uc new file mode 100755 index 00000000..d7ee039d --- /dev/null +++ b/exported/Engine/Classes/FileWriter.uc @@ -0,0 +1,41 @@ +class FileWriter extends Info + native + notplaceable + hidecategories(Navigation,Movement,Collision); + +enum FWFileType +{ + FWFT_Log, // 0 + FWFT_Stats, // 1 + FWFT_HTML, // 2 + FWFT_User, // 3 + FWFT_Debug, // 4 + FWFT_MAX // 5 +}; + +var native const Pointer ArchivePtr; +var const string Filename; +var const FileWriter.FWFileType FileType; +var bool bFlushEachWrite; +var bool bWantsAsyncWrites; + +// Export UFileWriter::execOpenFile(FFrame&, void* const) +native final function bool OpenFile(coerce string InFilename, optional FileWriter.FWFileType InFileType, optional string InExtension, optional bool bUnique, optional bool bIncludeTimeStamp); + +// Export UFileWriter::execCloseFile(FFrame&, void* const) +native final function CloseFile(); + +// Export UFileWriter::execLogf(FFrame&, void* const) +native final function Logf(coerce string logString); + +event Destroyed() +{ + CloseFile(); + //return; +} + +defaultproperties +{ + bFlushEachWrite=true + bTickIsDisabled=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/FloorToCeilingReachSpec.uc b/exported/Engine/Classes/FloorToCeilingReachSpec.uc new file mode 100755 index 00000000..c6ac7bac --- /dev/null +++ b/exported/Engine/Classes/FloorToCeilingReachSpec.uc @@ -0,0 +1,7 @@ +class FloorToCeilingReachSpec extends ForcedReachSpec + native; + +defaultproperties +{ + bSkipPrune=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/FluidInfluenceActor.uc b/exported/Engine/Classes/FluidInfluenceActor.uc new file mode 100755 index 00000000..4e7e8bd8 --- /dev/null +++ b/exported/Engine/Classes/FluidInfluenceActor.uc @@ -0,0 +1,89 @@ +class FluidInfluenceActor extends Actor + native(Fluid) + placeable + hidecategories(Navigation) + classgroup(Fluid); + +var private export editinline ArrowComponent FlowDirection; +var private export editinline SpriteComponent Sprite; +var() const editconst export editinline FluidInfluenceComponent InfluenceComponent; +var repnotify bool bActive; +var repnotify bool bToggled; + +replication +{ + // Pos:0x000 + if(bNetDirty) + bActive, bToggled; +} + +simulated function OnToggle(SeqAct_Toggle inAction) +{ + // End:0x5B + if(inAction.InputLinks[0].bHasImpulse) + { + InfluenceComponent.bActive = true; + } + else + { + // End:0xB6 + if(inAction.InputLinks[1].bHasImpulse) + { + InfluenceComponent.bActive = false; + } + else + { + // End:0x150 + if(inAction.InputLinks[2].bHasImpulse) + { + InfluenceComponent.bActive = !InfluenceComponent.bActive; + InfluenceComponent.bIsToggleTriggered = true; + } + } + } + bActive = InfluenceComponent.bActive; + bToggled = InfluenceComponent.bIsToggleTriggered; + bForceNetUpdate = true; + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x44 + if(VarName == 'bActive') + { + InfluenceComponent.bActive = bActive; + } + else + { + // End:0x88 + if(VarName == 'bToggled') + { + InfluenceComponent.bIsToggleTriggered = bToggled; + } + else + { + super.ReplicatedEvent(VarName); + } + } + //return; +} + +defaultproperties +{ + // Reference: FluidInfluenceComponent'Engine.Default__FluidInfluenceActor.NewInfluenceComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'NewInfluenceComponent' + begin object name="NewInfluenceComponent" class=Engine.FluidInfluenceComponent + ReplacementPrimitive=none + end object + InfluenceComponent=NewInfluenceComponent + Components[0]=none + Components[1]=none + Components[2]=NewInfluenceComponent + RemoteRole=ENetRole.ROLE_SimulatedProxy + bNoDelete=true + bAlwaysRelevant=true + bOnlyDirtyReplication=true + NetUpdateFrequency=0.1000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/FluidInfluenceComponent.uc b/exported/Engine/Classes/FluidInfluenceComponent.uc new file mode 100755 index 00000000..758151a4 --- /dev/null +++ b/exported/Engine/Classes/FluidInfluenceComponent.uc @@ -0,0 +1,67 @@ +class FluidInfluenceComponent extends PrimitiveComponent + native(Fluid) + editinlinenew + hidecategories(Object,Collision,Lighting,Physics,PrimitiveComponent,Rendering) + autoexpandcategories(FluidInfluenceComponent); + +enum EInfluenceType +{ + Fluid_Flow, // 0 + Fluid_Raindrops, // 1 + Fluid_Wave, // 2 + Fluid_Sphere, // 3 + Fluid_MAX // 4 +}; + +var() bool bActive; +var(FluidRaindrops) interp bool RaindropFillEntireFluid; +var transient bool bIsToggleTriggered; +var() FluidSurfaceActor FluidActor; +var() FluidInfluenceComponent.EInfluenceType InfluenceType; +var() float MaxDistance; +var(FluidWave) interp float WaveStrength; +var(FluidWave) interp float WaveFrequency; +var(FluidWave) interp float WavePhase; +var(FluidWave) interp float WaveRadius; +var(FluidRaindrops) interp float RaindropAreaRadius; +var(FluidRaindrops) interp float RaindropRadius; +var(FluidRaindrops) interp float RaindropStrength; +var(FluidRaindrops) interp float RaindropRate; +var(FluidFlow) interp float FlowSpeed; +var(FluidFlow) interp int FlowNumRipples; +var(FluidFlow) interp float FlowSideMotionRadius; +var(FluidFlow) interp float FlowWaveRadius; +var(FluidFlow) interp float FlowStrength; +var(FluidFlow) interp float FlowFrequency; +var(FluidSphere) interp float SphereOuterRadius; +var(FluidSphere) interp float SphereInnerRadius; +var(FluidSphere) interp float SphereStrength; +var private native transient float CurrentAngle; +var private native transient float CurrentTimer; +var private native transient FluidSurfaceActor CurrentFluidActor; + +defaultproperties +{ + bActive=true + RaindropFillEntireFluid=true + InfluenceType=EInfluenceType.Fluid_Wave + MaxDistance=1000.0000000 + WaveStrength=40.0000000 + WaveFrequency=1.0000000 + WaveRadius=50.0000000 + RaindropAreaRadius=300.0000000 + RaindropRadius=10.0000000 + RaindropStrength=5.0000000 + RaindropRate=20.0000000 + FlowSpeed=100.0000000 + FlowNumRipples=10 + FlowSideMotionRadius=30.0000000 + FlowWaveRadius=50.0000000 + FlowStrength=20.0000000 + FlowFrequency=4.0000000 + SphereOuterRadius=100.0000000 + SphereInnerRadius=50.0000000 + SphereStrength=-40.0000000 + ReplacementPrimitive=none + bTickInEditor=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/FluidSurfaceActor.uc b/exported/Engine/Classes/FluidSurfaceActor.uc new file mode 100755 index 00000000..8f6f59e9 --- /dev/null +++ b/exported/Engine/Classes/FluidSurfaceActor.uc @@ -0,0 +1,39 @@ +class FluidSurfaceActor extends Actor + native(Fluid) + placeable + hidecategories(Navigation) + classgroup(Fluid) + autoexpandcategories(FluidSurfaceActor,FluidSurfaceComponent); + +var() const editconst export editinline FluidSurfaceComponent FluidComponent; +var() ParticleSystem ProjectileEntryEffect; + +simulated event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + super.TakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + FluidComponent.ApplyForce(HitLocation, FluidComponent.ForceImpact, FluidComponent.TestRippleRadius, true); + //return; +} + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + super.Touch(Other, OtherComp, HitLocation, HitNormal); + Other.ApplyFluidSurfaceImpact(self, HitLocation); + //return; +} + +defaultproperties +{ + // Reference: FluidSurfaceComponent'Engine.Default__FluidSurfaceActor.NewFluidComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'NewFluidComponent' + begin object name="NewFluidComponent" class=Engine.FluidSurfaceComponent + ReplacementPrimitive=none + end object + FluidComponent=NewFluidComponent + Components[0]=NewFluidComponent + bNoDelete=true + bMovable=false + bCollideActors=true + bProjTarget=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/FluidSurfaceActorMovable.uc b/exported/Engine/Classes/FluidSurfaceActorMovable.uc new file mode 100755 index 00000000..5bd915da --- /dev/null +++ b/exported/Engine/Classes/FluidSurfaceActorMovable.uc @@ -0,0 +1,20 @@ +class FluidSurfaceActorMovable extends FluidSurfaceActor + native(Fluid) + placeable + hidecategories(Navigation) + autoexpandcategories(FluidSurfaceActor,FluidSurfaceComponent); + +defaultproperties +{ + // Reference: FluidSurfaceComponent'Engine.Default__FluidSurfaceActorMovable.NewFluidComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'NewFluidComponent' + // Archetype: FluidSurfaceComponent'Engine.Default__FluidSurfaceActor.NewFluidComponent' + begin object name="NewFluidComponent" + ReplacementPrimitive=none + end object + FluidComponent=NewFluidComponent + Components[0]=NewFluidComponent + Physics=EPhysics.PHYS_Interpolating + bMovable=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/FluidSurfaceComponent.uc b/exported/Engine/Classes/FluidSurfaceComponent.uc new file mode 100755 index 00000000..cd4c5a2a --- /dev/null +++ b/exported/Engine/Classes/FluidSurfaceComponent.uc @@ -0,0 +1,113 @@ +class FluidSurfaceComponent extends PrimitiveComponent + native(Fluid) + editinlinenew + hidecategories(Object) + autoexpandcategories(FluidSurfaceComponent,Fluid,FluidDetail); + +var() MaterialInterface FluidMaterial; +var(Lighting) int LightMapResolution; +var(Lightmass) LightmassPrimitiveSettings LightmassSettings; +var(Fluid) bool EnableSimulation; +var(Fluid) bool EnableDetail; +var(FluidDetail) bool bTiling; +var(FluidDebug) transient bool bPause; +var(FluidDebug) transient bool bShowSimulationNormals; +var(FluidDebug) bool bShowSimulationPosition; +var(FluidDebug) bool bShowDetailNormals; +var(FluidDebug) bool bShowDetailPosition; +var(FluidDebug) transient bool bShowFluidSimulation; +var(FluidDebug) transient bool bShowFluidDetail; +var(FluidDebug) bool bTestRipple; +var(FluidDebug) bool bTestRippleCenterOnDetail; +var(Fluid) int SimulationQuadsX; +var(Fluid) int SimulationQuadsY; +var(Fluid) float GridSpacing; +var(Fluid) float GridSpacingLowRes; +var(Fluid) Actor TargetSimulation; +var(Fluid) float GPUTessellationFactor; +var(Fluid) float FluidDamping; +var(Fluid) float FluidTravelSpeed; +var(Fluid) float FluidHeightScale; +var(Fluid) float FluidUpdateRate; +var(Fluid) float ForceImpact; +var(Fluid) float ForceContinuous; +var(Fluid) float LightingContrast; +var(Fluid) Actor TargetDetail; +var(Fluid) float DeactivationDistance; +var(FluidDetail) int DetailResolution; +var(FluidDetail) float DetailSize; +var(FluidDetail) float DetailDamping; +var(FluidDetail) float DetailTravelSpeed; +var(FluidDetail) float DetailTransfer; +var(FluidDetail) float DetailHeightScale; +var(FluidDetail) float DetailUpdateRate; +var(FluidDebug) float NormalLength; +var(FluidDebug) float TestRippleSpeed; +var(FluidDebug) float TestRippleFrequency; +var(FluidDebug) float TestRippleRadius; +var private float FluidWidth; +var private float FluidHeight; +var private native transient float TestRippleTime; +var private native transient float TestRippleAngle; +var private native transient float DeactivationTimer; +var private native transient float ViewDistance; +var private native transient Vector SimulationPosition; +var private native transient Vector DetailPosition; +var const array ClampMap; +var private const array ShadowMaps; +var private native const LightMapRef LightMap; +var private native const transient Pointer FluidSimulation; + +// Export UFluidSurfaceComponent::execApplyForce(FFrame&, void* const) +native final function ApplyForce(Vector WorldPos, float Strength, float Radius, optional bool bImpulse); + +// Export UFluidSurfaceComponent::execSetDetailPosition(FFrame&, void* const) +native final function SetDetailPosition(Vector WorldPos); + +// Export UFluidSurfaceComponent::execSetSimulationPosition(FFrame&, void* const) +native final function SetSimulationPosition(Vector WorldPos); + +defaultproperties +{ + LightMapResolution=128 + LightmassSettings=(bUseTwoSidedLighting=false,bShadowIndirectOnly=false,bUseEmissiveForStaticLighting=false,EmissiveLightFalloffExponent=2.0000000,EmissiveLightExplicitInfluenceRadius=0.0000000,EmissiveBoost=1.0000000,DiffuseBoost=1.0000000,SpecularBoost=1.0000000,FullyOccludedSamplesFraction=1.0000000) + EnableSimulation=true + EnableDetail=true + bShowFluidSimulation=true + bShowFluidDetail=true + SimulationQuadsX=200 + SimulationQuadsY=200 + GridSpacing=10.0000000 + GridSpacingLowRes=800.0000000 + GPUTessellationFactor=1.0000000 + FluidDamping=1.0000000 + FluidTravelSpeed=1.0000000 + FluidHeightScale=1.0000000 + FluidUpdateRate=30.0000000 + ForceImpact=-3.0000000 + ForceContinuous=-200.0000000 + LightingContrast=1.0000000 + DeactivationDistance=3000.0000000 + DetailResolution=256 + DetailSize=500.0000000 + DetailDamping=1.0000000 + DetailTravelSpeed=1.0000000 + DetailTransfer=0.5000000 + DetailHeightScale=1.0000000 + DetailUpdateRate=30.0000000 + NormalLength=10.0000000 + TestRippleSpeed=1.0000000 + TestRippleFrequency=1.0000000 + TestRippleRadius=30.0000000 + FluidWidth=2000.0000000 + FluidHeight=2000.0000000 + ReplacementPrimitive=none + bIgnoreNearPlaneIntersection=true + bForceDirectLightMap=true + bAcceptsLights=true + bUsePrecomputedShadows=true + CollideActors=true + BlockZeroExtent=true + BlockNonZeroExtent=true + bTickInEditor=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/FogVolumeConeDensityComponent.uc b/exported/Engine/Classes/FogVolumeConeDensityComponent.uc new file mode 100755 index 00000000..e17420e3 --- /dev/null +++ b/exported/Engine/Classes/FogVolumeConeDensityComponent.uc @@ -0,0 +1,20 @@ +class FogVolumeConeDensityComponent extends FogVolumeDensityComponent + native(FogVolume) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() interp float MaxDensity; +var() interp Vector ConeVertex; +var() interp float ConeRadius; +var() interp Vector ConeAxis; +var() interp float ConeMaxAngle; +var const export editinline DrawLightConeComponent PreviewCone; + +defaultproperties +{ + MaxDensity=0.0020000 + ConeRadius=600.0000000 + ConeAxis=(X=0.0000000,Y=0.0000000,Z=-1.0000000) + ConeMaxAngle=30.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/FogVolumeConeDensityInfo.uc b/exported/Engine/Classes/FogVolumeConeDensityInfo.uc new file mode 100755 index 00000000..f9d85452 --- /dev/null +++ b/exported/Engine/Classes/FogVolumeConeDensityInfo.uc @@ -0,0 +1,28 @@ +class FogVolumeConeDensityInfo extends FogVolumeDensityInfo + abstract + native(FogVolume) + notplaceable + hidecategories(Navigation,Collision) + autoexpandcategories(FogVolumeDensityInfo); + +defaultproperties +{ + // Reference: FogVolumeConeDensityComponent'Engine.Default__FogVolumeConeDensityInfo.FogVolumeComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FogVolumeComponent0' + begin object name="FogVolumeComponent0" class=Engine.FogVolumeConeDensityComponent + end object + DensityComponent=FogVolumeComponent0 + // Reference: StaticMeshComponent'Engine.Default__FogVolumeConeDensityInfo.AutomaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AutomaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__FogVolumeDensityInfo.AutomaticMeshComponent0' + begin object name="AutomaticMeshComponent0" + ReplacementPrimitive=none + end object + AutomaticMeshComponent=AutomaticMeshComponent0 + Components[0]=none + Components[1]=AutomaticMeshComponent0 + Components[2]=none + Components[3]=FogVolumeComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/FogVolumeConstantDensityComponent.uc b/exported/Engine/Classes/FogVolumeConstantDensityComponent.uc new file mode 100755 index 00000000..5af7a1d1 --- /dev/null +++ b/exported/Engine/Classes/FogVolumeConstantDensityComponent.uc @@ -0,0 +1,12 @@ +class FogVolumeConstantDensityComponent extends FogVolumeDensityComponent + native(FogVolume) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() interp float Density; + +defaultproperties +{ + Density=0.0005000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/FogVolumeConstantDensityInfo.uc b/exported/Engine/Classes/FogVolumeConstantDensityInfo.uc new file mode 100755 index 00000000..1e34f18d --- /dev/null +++ b/exported/Engine/Classes/FogVolumeConstantDensityInfo.uc @@ -0,0 +1,26 @@ +class FogVolumeConstantDensityInfo extends FogVolumeDensityInfo + native(FogVolume) + placeable + hidecategories(Navigation,Collision) + autoexpandcategories(FogVolumeDensityInfo); + +defaultproperties +{ + // Reference: FogVolumeConstantDensityComponent'Engine.Default__FogVolumeConstantDensityInfo.FogVolumeComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FogVolumeComponent0' + begin object name="FogVolumeComponent0" class=Engine.FogVolumeConstantDensityComponent + end object + DensityComponent=FogVolumeComponent0 + // Reference: StaticMeshComponent'Engine.Default__FogVolumeConstantDensityInfo.AutomaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AutomaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__FogVolumeDensityInfo.AutomaticMeshComponent0' + begin object name="AutomaticMeshComponent0" + ReplacementPrimitive=none + end object + AutomaticMeshComponent=AutomaticMeshComponent0 + Components[0]=none + Components[1]=AutomaticMeshComponent0 + Components[2]=FogVolumeComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/FogVolumeDensityComponent.uc b/exported/Engine/Classes/FogVolumeDensityComponent.uc new file mode 100755 index 00000000..b2c149c3 --- /dev/null +++ b/exported/Engine/Classes/FogVolumeDensityComponent.uc @@ -0,0 +1,34 @@ +class FogVolumeDensityComponent extends ActorComponent + abstract + native(FogVolume) + editinlinenew + hidecategories(Object); + +var() MaterialInterface FogMaterial; +var MaterialInterface DefaultFogVolumeMaterial; +var() const bool bEnabled; +var() bool bAffectsTranslucency; +var() bool bOnlyAffectsTranslucency; +var() bool bUseViewOriginOverride; +var() interp LinearColor SimpleLightColor; +var() interp LinearColor ApproxFogLightColor; +var() interp float StartDistance; +var() float MaxDistance; +var() array FogVolumeActors; +var() Vector ViewOriginOverride; + +// Export UFogVolumeDensityComponent::execSetEnabled(FFrame&, void* const) +native final function SetEnabled(bool bSetEnabled); + +// Export UFogVolumeDensityComponent::execSetViewOriginOverride(FFrame&, void* const) +native final function SetViewOriginOverride(Vector InViewOriginOverride, bool bInUsePositionOverride); + +defaultproperties +{ + DefaultFogVolumeMaterial=Material'EngineMaterials.FogVolumeMaterial' + bEnabled=true + bAffectsTranslucency=true + SimpleLightColor=(R=0.5000000,G=0.5000000,B=0.7000000,A=1.0000000) + ApproxFogLightColor=(R=0.5000000,G=0.5000000,B=0.7000000,A=1.0000000) + MaxDistance=65535.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/FogVolumeDensityInfo.uc b/exported/Engine/Classes/FogVolumeDensityInfo.uc new file mode 100755 index 00000000..e7fd48a6 --- /dev/null +++ b/exported/Engine/Classes/FogVolumeDensityInfo.uc @@ -0,0 +1,129 @@ +class FogVolumeDensityInfo extends Info + abstract + native(FogVolume) + notplaceable + hidecategories(Navigation,Collision) + classgroup(Fog) + autoexpandcategories(FogVolumeDensityInfo); + +struct CheckpointRecord +{ + var bool bEnabled; + + structdefaultproperties + { + bEnabled=false + } +}; + +var() export editinline FogVolumeDensityComponent DensityComponent; +var() export editinline StaticMeshComponent AutomaticMeshComponent; +var repnotify bool bEnabled; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + bEnabled; +} + +event PostBeginPlay() +{ + super(Actor).PostBeginPlay(); + // End:0x43 + if(DensityComponent != none) + { + bEnabled = DensityComponent.bEnabled; + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x43 + if(VarName == 'bEnabled') + { + DensityComponent.SetEnabled(bEnabled); + } + else + { + super(Actor).ReplicatedEvent(VarName); + } + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x5A + if(Action.InputLinks[0].bHasImpulse) + { + DensityComponent.SetEnabled(true); + } + else + { + // End:0xB4 + if(Action.InputLinks[1].bHasImpulse) + { + DensityComponent.SetEnabled(false); + } + else + { + // End:0x12C + if(Action.InputLinks[2].bHasImpulse) + { + DensityComponent.SetEnabled(!DensityComponent.bEnabled); + } + } + } + bEnabled = DensityComponent.bEnabled; + ForceNetRelevant(); + SetForcedInitialReplicatedProperty(BoolProperty'Engine.FogVolumeDensityInfo.bEnabled', bEnabled == default.bEnabled); + //return; +} + +function bool ShouldSaveForCheckpoint() +{ + return int(RemoteRole) != int(ROLE_None); + //return ReturnValue; +} + +function CreateCheckpointRecord(out CheckpointRecord Record) +{ + Record.bEnabled = bEnabled; + //return; +} + +function ApplyCheckpointRecord(const out CheckpointRecord Record) +{ + bEnabled = Record.bEnabled; + DensityComponent.SetEnabled(bEnabled); + ForceNetRelevant(); + SetForcedInitialReplicatedProperty(BoolProperty'Engine.FogVolumeDensityInfo.bEnabled', bEnabled == default.bEnabled); + //return; +} + +defaultproperties +{ + // Reference: StaticMeshComponent'Engine.Default__FogVolumeDensityInfo.AutomaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AutomaticMeshComponent0' + begin object name="AutomaticMeshComponent0" class=Engine.StaticMeshComponent + StaticMesh=StaticMesh'EngineMeshes.Cube' + WireframeColor=(R=100,G=100,B=200,A=255) + ReplacementPrimitive=none + bIgnoreOwnerHidden=true + bUseAsOccluder=false + bSelectable=false + bAcceptsStaticDecals=false + bAcceptsDynamicDecals=false + CastShadow=false + bCastDynamicShadow=false + bAcceptsLights=false + bAcceptsDynamicLights=false + BlockRigidBody=false + end object + AutomaticMeshComponent=AutomaticMeshComponent0 + Components[0]=none + Components[1]=AutomaticMeshComponent0 + bNoDelete=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/FogVolumeLinearHalfspaceDensityComponent.uc b/exported/Engine/Classes/FogVolumeLinearHalfspaceDensityComponent.uc new file mode 100755 index 00000000..6fca8da9 --- /dev/null +++ b/exported/Engine/Classes/FogVolumeLinearHalfspaceDensityComponent.uc @@ -0,0 +1,14 @@ +class FogVolumeLinearHalfspaceDensityComponent extends FogVolumeDensityComponent + native(FogVolume) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() interp float PlaneDistanceFactor; +var() interp Plane HalfspacePlane; + +defaultproperties +{ + PlaneDistanceFactor=0.1000000 + HalfspacePlane=(W=-300.0000000,X=0.0000000,Y=0.0000000,Z=1.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/FogVolumeLinearHalfspaceDensityInfo.uc b/exported/Engine/Classes/FogVolumeLinearHalfspaceDensityInfo.uc new file mode 100755 index 00000000..9c89a561 --- /dev/null +++ b/exported/Engine/Classes/FogVolumeLinearHalfspaceDensityInfo.uc @@ -0,0 +1,26 @@ +class FogVolumeLinearHalfspaceDensityInfo extends FogVolumeDensityInfo + native(FogVolume) + placeable + hidecategories(Navigation,Collision) + autoexpandcategories(FogVolumeDensityInfo); + +defaultproperties +{ + // Reference: FogVolumeLinearHalfspaceDensityComponent'Engine.Default__FogVolumeLinearHalfspaceDensityInfo.FogVolumeComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FogVolumeComponent0' + begin object name="FogVolumeComponent0" class=Engine.FogVolumeLinearHalfspaceDensityComponent + end object + DensityComponent=FogVolumeComponent0 + // Reference: StaticMeshComponent'Engine.Default__FogVolumeLinearHalfspaceDensityInfo.AutomaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AutomaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__FogVolumeDensityInfo.AutomaticMeshComponent0' + begin object name="AutomaticMeshComponent0" + ReplacementPrimitive=none + end object + AutomaticMeshComponent=AutomaticMeshComponent0 + Components[0]=none + Components[1]=AutomaticMeshComponent0 + Components[2]=FogVolumeComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/FogVolumeSphericalDensityComponent.uc b/exported/Engine/Classes/FogVolumeSphericalDensityComponent.uc new file mode 100755 index 00000000..645b01c3 --- /dev/null +++ b/exported/Engine/Classes/FogVolumeSphericalDensityComponent.uc @@ -0,0 +1,16 @@ +class FogVolumeSphericalDensityComponent extends FogVolumeDensityComponent + native(FogVolume) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() interp float MaxDensity; +var Vector SphereCenter; +var float SphereRadius; +var const export editinline DrawLightRadiusComponent PreviewSphereRadius; + +defaultproperties +{ + MaxDensity=0.0020000 + SphereRadius=600.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/FogVolumeSphericalDensityInfo.uc b/exported/Engine/Classes/FogVolumeSphericalDensityInfo.uc new file mode 100755 index 00000000..2de2a71d --- /dev/null +++ b/exported/Engine/Classes/FogVolumeSphericalDensityInfo.uc @@ -0,0 +1,29 @@ +class FogVolumeSphericalDensityInfo extends FogVolumeDensityInfo + native(FogVolume) + placeable + hidecategories(Navigation,Collision) + autoexpandcategories(FogVolumeDensityInfo); + +defaultproperties +{ + // Reference: FogVolumeSphericalDensityComponent'Engine.Default__FogVolumeSphericalDensityInfo.FogVolumeComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FogVolumeComponent0' + begin object name="FogVolumeComponent0" class=Engine.FogVolumeSphericalDensityComponent + end object + DensityComponent=FogVolumeComponent0 + // Reference: StaticMeshComponent'Engine.Default__FogVolumeSphericalDensityInfo.AutomaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AutomaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__FogVolumeDensityInfo.AutomaticMeshComponent0' + begin object name="AutomaticMeshComponent0" + StaticMesh=StaticMesh'EngineMeshes.Sphere' + ReplacementPrimitive=none + CollideActors=false + end object + AutomaticMeshComponent=AutomaticMeshComponent0 + Components[0]=none + Components[1]=AutomaticMeshComponent0 + Components[2]=none + Components[3]=FogVolumeComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Font.uc b/exported/Engine/Classes/Font.uc new file mode 100755 index 00000000..592413d7 --- /dev/null +++ b/exported/Engine/Classes/Font.uc @@ -0,0 +1,60 @@ +class Font extends Object + native + hidecategories(Object); + +const NULLCHARACTER = 127; + +struct native atomic immutable FontCharacter +{ + var() int StartU; + var() int StartV; + var() int USize; + var() int VSize; + var() byte TextureIndex; + var() int VerticalOffset; + + structdefaultproperties + { + StartU=0 + StartV=0 + USize=0 + VSize=0 + TextureIndex=0 + VerticalOffset=0 + } +}; + +var() editinline array Characters; +var array Textures; +var private native const map{VOID,VOID} CharRemap; +var int IsRemapped; +var() float EmScale; +var() float Ascent; +var() float Descent; +var() float Leading; +var() int Kerning; +var() FontImportOptionsData ImportOptions; +var transient int NumCharacters; +var transient array MaxCharHeight; +var() const float ScalingFactor; + +// Export UFont::execGetResolutionPageIndex(FFrame&, void* const) +native function int GetResolutionPageIndex(float HeightTest); + +// Export UFont::execGetScalingFactor(FFrame&, void* const) +native function float GetScalingFactor(float HeightTest); + +// Export UFont::execGetAuthoredViewportHeight(FFrame&, void* const) +native final function float GetAuthoredViewportHeight(float ViewportHeight); + +// Export UFont::execGetMaxCharHeight(FFrame&, void* const) +native function float GetMaxCharHeight(); + +// Export UFont::execGetStringHeightAndWidth(FFrame&, void* const) +native function GetStringHeightAndWidth(const out string InString, out int Height, out int Width); + +defaultproperties +{ + ImportOptions=(FontName="Arial",Height=16.0000000,bEnableAntialiasing=true,bEnableBold=false,bEnableItalic=false,bEnableUnderline=false,bAlphaOnly=false,CharacterSet=EFontImportCharacterSet.FontICS_Default,Chars="",UnicodeRange="",CharsFilePath="",CharsFileWildcard="",bCreatePrintableOnly=false,bIncludeASCIIRange=true,ForegroundColor=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000),bEnableDropShadow=false,TexturePageWidth=256,TexturePageMaxHeight=256,XPadding=1,YPadding=1,ExtendBoxTop=0,ExtendBoxBottom=0,ExtendBoxRight=0,ExtendBoxLeft=0,bEnableLegacyMode=false,Kerning=0,bUseDistanceFieldAlpha=false,DistanceFieldScaleFactor=16,DistanceFieldScanRadiusScale=1.0000000) + ScalingFactor=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/FontImportOptions.uc b/exported/Engine/Classes/FontImportOptions.uc new file mode 100755 index 00000000..01df1d11 --- /dev/null +++ b/exported/Engine/Classes/FontImportOptions.uc @@ -0,0 +1,85 @@ +class FontImportOptions extends Object + transient + native + hidecategories(Object); + +enum EFontImportCharacterSet +{ + FontICS_Default, // 0 + FontICS_Ansi, // 1 + FontICS_Symbol, // 2 + FontICS_MAX // 3 +}; + +struct native FontImportOptionsData +{ + var() string FontName; + var() float Height; + var() bool bEnableAntialiasing; + var() bool bEnableBold; + var() bool bEnableItalic; + var() bool bEnableUnderline; + var() bool bAlphaOnly; + var() FontImportOptions.EFontImportCharacterSet CharacterSet; + var() string Chars; + var() string UnicodeRange; + var() string CharsFilePath; + var() string CharsFileWildcard; + var() bool bCreatePrintableOnly; + var() bool bIncludeASCIIRange; + var() LinearColor ForegroundColor; + var() bool bEnableDropShadow; + var() int TexturePageWidth; + var() int TexturePageMaxHeight; + var() int XPadding; + var() int YPadding; + var() int ExtendBoxTop; + var() int ExtendBoxBottom; + var() int ExtendBoxRight; + var() int ExtendBoxLeft; + var() bool bEnableLegacyMode; + var() int Kerning; + var() bool bUseDistanceFieldAlpha; + var() int DistanceFieldScaleFactor; + var() float DistanceFieldScanRadiusScale; + + structdefaultproperties + { + FontName="Arial" + Height=16.0000000 + bEnableAntialiasing=true + bEnableBold=false + bEnableItalic=false + bEnableUnderline=false + bAlphaOnly=false + CharacterSet=EFontImportCharacterSet.FontICS_Default + Chars="" + UnicodeRange="" + CharsFilePath="" + CharsFileWildcard="" + bCreatePrintableOnly=false + bIncludeASCIIRange=true + ForegroundColor=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000) + bEnableDropShadow=false + TexturePageWidth=256 + TexturePageMaxHeight=256 + XPadding=1 + YPadding=1 + ExtendBoxTop=0 + ExtendBoxBottom=0 + ExtendBoxRight=0 + ExtendBoxLeft=0 + bEnableLegacyMode=false + Kerning=0 + bUseDistanceFieldAlpha=false + DistanceFieldScaleFactor=16 + DistanceFieldScanRadiusScale=1.0000000 + } +}; + +var() FontImportOptionsData Data; + +defaultproperties +{ + Data=(FontName="Arial",Height=16.0000000,bEnableAntialiasing=true,bEnableBold=false,bEnableItalic=false,bEnableUnderline=false,bAlphaOnly=false,CharacterSet=EFontImportCharacterSet.FontICS_Default,Chars="",UnicodeRange="",CharsFilePath="",CharsFileWildcard="",bCreatePrintableOnly=false,bIncludeASCIIRange=true,ForegroundColor=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000),bEnableDropShadow=false,TexturePageWidth=256,TexturePageMaxHeight=256,XPadding=1,YPadding=1,ExtendBoxTop=0,ExtendBoxBottom=0,ExtendBoxRight=0,ExtendBoxLeft=0,bEnableLegacyMode=false,Kerning=0,bUseDistanceFieldAlpha=false,DistanceFieldScaleFactor=16,DistanceFieldScanRadiusScale=1.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/ForceFeedbackManager.uc b/exported/Engine/Classes/ForceFeedbackManager.uc new file mode 100755 index 00000000..73fa6cab --- /dev/null +++ b/exported/Engine/Classes/ForceFeedbackManager.uc @@ -0,0 +1,50 @@ +class ForceFeedbackManager extends Object within PlayerController + abstract + transient + native; + +const FORCEFEEDBACK_MIN = 0.f; +const FORCEFEEDBACK_MAX = 100.f; + +struct native ForceFeedbackPlayingInfo +{ + var ForceFeedbackWaveform WaveForm; + var Actor Instigator; + var int CurrentSample; + var float ElapsedTime; + var float ScaleDuration; + var float ScaleMagnitude; + + structdefaultproperties + { + WaveForm=none + Instigator=none + CurrentSample=0 + ElapsedTime=0.0000000 + ScaleDuration=0.0000000 + ScaleMagnitude=0.0000000 + } +}; + +var bool bAllowsForceFeedback; +var bool bIsPaused; +var float ScaleAllWaveformsBy; +var array PlayingWaveforms; + +// Export UForceFeedbackManager::execPlayForceFeedbackWaveform(FFrame&, void* const) +native function PlayForceFeedbackWaveform(ForceFeedbackWaveform WaveForm, optional Actor WaveInstigator, optional float fScaleMagnitude = 1.0000000, optional float fScaleRate = 1.0000000, optional bool bForcePlay); + +// Export UForceFeedbackManager::execStopForceFeedbackWaveform(FFrame&, void* const) +native function StopForceFeedbackWaveform(optional ForceFeedbackWaveform WaveForm); + +simulated function PauseWaveform(optional bool bPause) +{ + bIsPaused = bPause; + //return; +} + +defaultproperties +{ + bAllowsForceFeedback=true + ScaleAllWaveformsBy=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ForceFeedbackWaveform.uc b/exported/Engine/Classes/ForceFeedbackWaveform.uc new file mode 100755 index 00000000..15684b21 --- /dev/null +++ b/exported/Engine/Classes/ForceFeedbackWaveform.uc @@ -0,0 +1,46 @@ +class ForceFeedbackWaveform extends Object + native + editinlinenew; + +enum EWaveformFunction +{ + WF_Constant, // 0 + WF_LinearIncreasing, // 1 + WF_LinearDecreasing, // 2 + WF_Sin0to90, // 3 + WF_Sin90to180, // 4 + WF_Sin0to180, // 5 + WF_Noise, // 6 + WF_MAX // 7 +}; + +struct native WaveformSample +{ + var() byte LeftAmplitude; + var() byte RightAmplitude; + var() byte LeftTriggerAmplitude; + var() byte RightTriggerAmplitude; + var() ForceFeedbackWaveform.EWaveformFunction LeftFunction; + var() ForceFeedbackWaveform.EWaveformFunction RightFunction; + var() ForceFeedbackWaveform.EWaveformFunction LeftTriggerFunction; + var() ForceFeedbackWaveform.EWaveformFunction RightTriggerFunction; + var() float Duration; + + structdefaultproperties + { + LeftAmplitude=0 + RightAmplitude=0 + LeftTriggerAmplitude=0 + RightTriggerAmplitude=0 + LeftFunction=EWaveformFunction.WF_Constant + RightFunction=EWaveformFunction.WF_Constant + LeftTriggerFunction=EWaveformFunction.WF_Constant + RightTriggerFunction=EWaveformFunction.WF_Constant + Duration=0.0000000 + } +}; + +var() bool bIsLooping; +var() array Samples; +var() float WaveformFalloffStartDistance; +var() float MaxWaveformDistance; diff --git a/exported/Engine/Classes/ForceFieldShape.uc b/exported/Engine/Classes/ForceFieldShape.uc new file mode 100755 index 00000000..15d287e9 --- /dev/null +++ b/exported/Engine/Classes/ForceFieldShape.uc @@ -0,0 +1,29 @@ +class ForceFieldShape extends Object + abstract + native(ForceField) + editinlinenew; + +event FillBySphere(float Radius) +{ + //return; +} + +event FillByBox(Vector Dimension) +{ + //return; +} + +event FillByCapsule(float Height, float Radius) +{ + //return; +} + +event FillByCylinder(float BottomRadius, float TopRadius, float Height, float HeightOffset) +{ + //return; +} + +event PrimitiveComponent GetDrawComponent() +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/ForceFieldShapeBox.uc b/exported/Engine/Classes/ForceFieldShapeBox.uc new file mode 100755 index 00000000..518fb61d --- /dev/null +++ b/exported/Engine/Classes/ForceFieldShapeBox.uc @@ -0,0 +1,58 @@ +class ForceFieldShapeBox extends ForceFieldShape + native(ForceField) + editinlinenew; + +var export editinline DrawBoxComponent Shape; + +event Vector GetRadii() +{ + return Shape.BoxExtent; + //return ReturnValue; +} + +event FillBySphere(float Radius) +{ + Shape.BoxExtent.X = Radius; + Shape.BoxExtent.Y = Radius; + Shape.BoxExtent.Z = Radius; + //return; +} + +event FillByBox(Vector Extent) +{ + Shape.BoxExtent = Extent; + //return; +} + +event FillByCapsule(float Height, float Radius) +{ + Shape.BoxExtent.X = Radius; + Shape.BoxExtent.Y = Radius; + Shape.BoxExtent.Z = Radius + (Height / float(2)); + //return; +} + +event FillByCylinder(float BottomRadius, float TopRadius, float Height, float HeightOffset) +{ + Shape.BoxExtent.X = FMax(BottomRadius, TopRadius); + Shape.BoxExtent.Y = Shape.BoxExtent.X; + Shape.BoxExtent.Z = (Height / float(2)) + Abs(HeightOffset); + //return; +} + +event PrimitiveComponent GetDrawComponent() +{ + return Shape; + //return ReturnValue; +} + +defaultproperties +{ + // Reference: DrawBoxComponent'Engine.Default__ForceFieldShapeBox.DrawBox0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawBox0' + begin object name="DrawBox0" class=Engine.DrawBoxComponent + ReplacementPrimitive=none + end object + Shape=DrawBox0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ForceFieldShapeCapsule.uc b/exported/Engine/Classes/ForceFieldShapeCapsule.uc new file mode 100755 index 00000000..251ecdb0 --- /dev/null +++ b/exported/Engine/Classes/ForceFieldShapeCapsule.uc @@ -0,0 +1,63 @@ +class ForceFieldShapeCapsule extends ForceFieldShape + native(ForceField) + editinlinenew; + +var export editinline DrawCapsuleComponent Shape; + +event float GetHeight() +{ + return Shape.CapsuleHeight; + //return ReturnValue; +} + +event float GetRadius() +{ + return Shape.CapsuleRadius; + //return ReturnValue; +} + +event FillBySphere(float Radius) +{ + Shape.CapsuleRadius = Radius; + Shape.CapsuleHeight = 0.0000000; + //return; +} + +event FillByBox(Vector Extent) +{ + Shape.CapsuleRadius = Sqrt((Extent.X * Extent.X) + (Extent.Y * Extent.Y)); + Shape.CapsuleHeight = Extent.Z * float(2); + //return; +} + +event FillByCapsule(float Height, float Radius) +{ + Shape.CapsuleHeight = Height; + Shape.CapsuleRadius = Radius; + //return; +} + +event FillByCylinder(float BottomRadius, float TopRadius, float Height, float HeightOffset) +{ + Shape.CapsuleRadius = FMax(BottomRadius, TopRadius); + Shape.CapsuleHeight = Height; + //return; +} + +event PrimitiveComponent GetDrawComponent() +{ + return Shape; + //return ReturnValue; +} + +defaultproperties +{ + // Reference: DrawCapsuleComponent'Engine.Default__ForceFieldShapeCapsule.DrawCapsule0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawCapsule0' + begin object name="DrawCapsule0" class=Engine.DrawCapsuleComponent + ReplacementPrimitive=none + Rotation=(Pitch=0,Yaw=0,Roll=16384) + end object + Shape=DrawCapsule0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ForceFieldShapeSphere.uc b/exported/Engine/Classes/ForceFieldShapeSphere.uc new file mode 100755 index 00000000..5623e689 --- /dev/null +++ b/exported/Engine/Classes/ForceFieldShapeSphere.uc @@ -0,0 +1,59 @@ +class ForceFieldShapeSphere extends ForceFieldShape + native(ForceField) + editinlinenew; + +var export editinline DrawSphereComponent Shape; + +event float GetRadius() +{ + return Shape.SphereRadius; + //return ReturnValue; +} + +event FillBySphere(float Radius) +{ + Shape.SphereRadius = Radius; + //return; +} + +event FillByBox(Vector Extent) +{ + Shape.SphereRadius = VSize(Extent); + //return; +} + +event FillByCapsule(float Height, float Radius) +{ + Shape.SphereRadius = (Height / float(2)) + Radius; + //return; +} + +event FillByCylinder(float BottomRadius, float TopRadius, float Height, float HeightOffset) +{ + local float topDistance, bottomDistance, centerBelowTop, centerAboveBottom; + + centerBelowTop = (Height / float(2)) + HeightOffset; + centerAboveBottom = (Height / float(2)) - HeightOffset; + topDistance = Sqrt((TopRadius * TopRadius) + (centerBelowTop * centerBelowTop)); + bottomDistance = Sqrt((BottomRadius * BottomRadius) + (centerAboveBottom * centerAboveBottom)); + Shape.SphereRadius = FMax(topDistance, bottomDistance); + //return; +} + +event PrimitiveComponent GetDrawComponent() +{ + return Shape; + //return ReturnValue; +} + +defaultproperties +{ + // Reference: DrawSphereComponent'Engine.Default__ForceFieldShapeSphere.DrawSphere0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawSphere0' + begin object name="DrawSphere0" class=Engine.DrawSphereComponent + SphereRadius=200.0000000 + ReplacementPrimitive=none + end object + Shape=DrawSphere0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ForcedLoopSoundNode.uc b/exported/Engine/Classes/ForcedLoopSoundNode.uc new file mode 100755 index 00000000..1bbed986 --- /dev/null +++ b/exported/Engine/Classes/ForcedLoopSoundNode.uc @@ -0,0 +1,4 @@ +class ForcedLoopSoundNode extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object); diff --git a/exported/Engine/Classes/ForcedReachSpec.uc b/exported/Engine/Classes/ForcedReachSpec.uc new file mode 100755 index 00000000..b4523c1e --- /dev/null +++ b/exported/Engine/Classes/ForcedReachSpec.uc @@ -0,0 +1,2 @@ +class ForcedReachSpec extends ReachSpec + native; diff --git a/exported/Engine/Classes/FractureManager.uc b/exported/Engine/Classes/FractureManager.uc new file mode 100755 index 00000000..078cab32 --- /dev/null +++ b/exported/Engine/Classes/FractureManager.uc @@ -0,0 +1,136 @@ +class FractureManager extends Actor + native(Mesh) + notplaceable + hidecategories(Navigation); + +const FSM_DEFAULTRECYCLETIME = 0.2; + +var int FSMPartPoolSize; +var() bool bEnableAntiVibration; +var() bool bEnableSpawnChunkEffectForRadialDamage; +var() float DestroyVibrationLevel; +var() float DestroyMinAngVel; +var() float ExplosionVelScale; +var array PartPool; +var array FreeParts; +var transient array ActorsWithDeferredPartsToSpawn; + +simulated event SpawnChunkDestroyEffect(ParticleSystem Effect, Box ChunkBox, Vector ChunkDir, float Scale) +{ + local Vector ChunkMiddle; + local editinline ParticleSystemComponent EffectComp; + + ChunkMiddle = 0.5000000 * (ChunkBox.Min + ChunkBox.Max); + EffectComp = WorldInfo.MyEmitterPool.SpawnEmitter(Effect, ChunkMiddle, Rotator(ChunkDir)); + EffectComp.SetScale(Scale); + //return; +} + +// Export UFractureManager::execGetNumFSMPartsScale(FFrame&, void* const) +native function float GetNumFSMPartsScale(); + +// Export UFractureManager::execGetFSMDirectSpawnChanceScale(FFrame&, void* const) +native function float GetFSMDirectSpawnChanceScale(); + +// Export UFractureManager::execGetFSMRadialSpawnChanceScale(FFrame&, void* const) +native function float GetFSMRadialSpawnChanceScale(); + +// Export UFractureManager::execGetFSMFractureCullDistanceScale(FFrame&, void* const) +native function float GetFSMFractureCullDistanceScale(); + +simulated event PreBeginPlay() +{ + super.PreBeginPlay(); + CreateFSMParts(); + //return; +} + +simulated event Destroyed() +{ + super.Destroyed(); + CleanUpFSMParts(); + //return; +} + +final simulated function CleanUpFSMParts() +{ + local int Idx; + + Idx = 0; + J0x0B: + + // End:0x68 [Loop If] + if(Idx < PartPool.Length) + { + PartPool[Idx].Destroy(); + PartPool[Idx] = none; + Idx++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +// Export UFractureManager::execCreateFSMParts(FFrame&, void* const) +native function CreateFSMParts(); + +// Export UFractureManager::execResetPoolVisibility(FFrame&, void* const) +native simulated function ResetPoolVisibility(); + +// Export UFractureManager::execGetFSMPart(FFrame&, void* const) +native function FracturedStaticMeshPart GetFSMPart(FracturedStaticMeshActor Parent, Vector SpawnLocation, Rotator SpawnRotation); + +simulated event FracturedStaticMeshPart SpawnPartActor(FracturedStaticMeshActor Parent, Vector SpawnLocation, Rotator SpawnRotation) +{ + local FracturedStaticMeshPart NewPart; + + NewPart = GetFSMPart(Parent, SpawnLocation, SpawnRotation); + // End:0x66 + if(NewPart != none) + { + NewPart.SetTimer(10.0000000, false, 'TryToCleanUp'); + } + return NewPart; + //return ReturnValue; +} + +simulated event ReturnPartActor(FracturedStaticMeshPart Part) +{ + FreeParts.AddItem(Part.PartPoolIndex); + //return; +} + +simulated function Tick(float DeltaTime) +{ + local int CurActorIndex; + + // End:0x8D + if(ActorsWithDeferredPartsToSpawn.Length > 0) + { + CurActorIndex = 0; + J0x1B: + + // End:0x8D [Loop If] + if(CurActorIndex < ActorsWithDeferredPartsToSpawn.Length) + { + // End:0x7F + if(ActorsWithDeferredPartsToSpawn[CurActorIndex].SpawnDeferredParts()) + { + ActorsWithDeferredPartsToSpawn.Remove(CurActorIndex, 1); + --CurActorIndex; + } + ++CurActorIndex; + // [Loop Continue] + goto J0x1B; + } + } + //return; +} + +defaultproperties +{ + FSMPartPoolSize=50 + DestroyVibrationLevel=3.0000000 + DestroyMinAngVel=2.5000000 + ExplosionVelScale=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/FractureMaterial.uc b/exported/Engine/Classes/FractureMaterial.uc new file mode 100755 index 00000000..60d8e4bf --- /dev/null +++ b/exported/Engine/Classes/FractureMaterial.uc @@ -0,0 +1,7 @@ +class FractureMaterial extends Object + native(Physics) + collapsecategories + hidecategories(Object); + +var() ParticleSystem FractureEffect; +var() SoundCue FractureSound; diff --git a/exported/Engine/Classes/FracturedBaseComponent.uc b/exported/Engine/Classes/FracturedBaseComponent.uc new file mode 100755 index 00000000..1f041d88 --- /dev/null +++ b/exported/Engine/Classes/FracturedBaseComponent.uc @@ -0,0 +1,39 @@ +class FracturedBaseComponent extends StaticMeshComponent + abstract + native(Mesh) + editinlinenew + hidecategories(Object); + +var protected native const transient Pointer ComponentBaseResources; +var protected native const transient RenderCommandFence_Mirror ReleaseResourcesFence; +var protected const transient array VisibleFragments; +var protected transient bool bVisibilityHasChanged; +var protected const transient bool bVisibilityReset; +var protected const bool bInitialVisibilityValue; +var protected const bool bUseDynamicIndexBuffer; +var protected const bool bUseDynamicIBWithHiddenFragments; +var private const int NumResourceIndices; +var protected const transient int bResetStaticMesh; + +// Export UFracturedBaseComponent::execSetStaticMesh(FFrame&, void* const) +native simulated function bool SetStaticMesh(StaticMesh NewMesh, optional bool bForce); + +// Export UFracturedBaseComponent::execGetVisibleFragments(FFrame&, void* const) +native simulated function array GetVisibleFragments(); + +// Export UFracturedBaseComponent::execIsFragmentVisible(FFrame&, void* const) +native simulated function bool IsFragmentVisible(int FragmentIndex); + +// Export UFracturedBaseComponent::execGetNumFragments(FFrame&, void* const) +native function int GetNumFragments(); + +// Export UFracturedBaseComponent::execGetNumVisibleFragments(FFrame&, void* const) +native function int GetNumVisibleFragments(); + +defaultproperties +{ + bInitialVisibilityValue=true + bUseDynamicIndexBuffer=true + ReplacementPrimitive=none + bAcceptsStaticDecals=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/FracturedSMActorSpawnable.uc b/exported/Engine/Classes/FracturedSMActorSpawnable.uc new file mode 100755 index 00000000..199891ed --- /dev/null +++ b/exported/Engine/Classes/FracturedSMActorSpawnable.uc @@ -0,0 +1,37 @@ +class FracturedSMActorSpawnable extends FracturedStaticMeshActor + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: FracturedStaticMeshComponent'Engine.Default__FracturedSMActorSpawnable.FracturedStaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FracturedStaticMeshComponent0' + // Archetype: FracturedStaticMeshComponent'Engine.Default__FracturedStaticMeshActor.FracturedStaticMeshComponent0' + begin object name="FracturedStaticMeshComponent0" + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__FracturedSMActorSpawnable.LightEnvironment0' + bForceDirectLightMap=false + end object + FracturedStaticMeshComponent=FracturedStaticMeshComponent0 + // Reference: FracturedSkinnedMeshComponent'Engine.Default__FracturedSMActorSpawnable.FracturedSkinnedComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FracturedSkinnedComponent0' + // Archetype: FracturedSkinnedMeshComponent'Engine.Default__FracturedStaticMeshActor.FracturedSkinnedComponent0' + begin object name="FracturedSkinnedComponent0" + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__FracturedSMActorSpawnable.LightEnvironment0' + end object + SkinnedComponent=FracturedSkinnedComponent0 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__FracturedSMActorSpawnable.LightEnvironment0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'LightEnvironment0' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__FracturedStaticMeshActor.LightEnvironment0' + begin object name="LightEnvironment0" + end object + Components[0]=LightEnvironment0 + Components[1]=FracturedSkinnedComponent0 + Components[2]=FracturedStaticMeshComponent0 + bNoDelete=false + CollisionComponent=FracturedStaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/FracturedSkinnedMeshComponent.uc b/exported/Engine/Classes/FracturedSkinnedMeshComponent.uc new file mode 100755 index 00000000..1a00171e --- /dev/null +++ b/exported/Engine/Classes/FracturedSkinnedMeshComponent.uc @@ -0,0 +1,26 @@ +class FracturedSkinnedMeshComponent extends FracturedBaseComponent + native(Mesh) + editinlinenew + hidecategories(Object); + +var protected native const transient Pointer ComponentSkinResources; +var protected const transient array FragmentTransforms; +var protected const export editinline transient array DependentComponents; +var protected const transient bool bBecameVisible; +var protected const transient bool bFragmentTransformsChanged; + +defaultproperties +{ + bInitialVisibilityValue=false + ReplacementPrimitive=none + bAllowCullDistanceVolume=false + bAllowApproximateOcclusion=true + bAcceptsDynamicDecals=false + CastShadow=false + bCastDynamicShadow=false + CollideActors=false + BlockActors=false + BlockZeroExtent=false + BlockNonZeroExtent=false + BlockRigidBody=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/FracturedStaticMeshActor.uc b/exported/Engine/Classes/FracturedStaticMeshActor.uc new file mode 100755 index 00000000..d686f667 --- /dev/null +++ b/exported/Engine/Classes/FracturedStaticMeshActor.uc @@ -0,0 +1,606 @@ +class FracturedStaticMeshActor extends Actor + native(Mesh) + placeable + hidecategories(Navigation) + classgroup(StaticMeshes); + +struct native DeferredPartToSpawn +{ + var int ChunkIndex; + var Vector InitialVel; + var Vector InitialAngVel; + var float RelativeScale; + var bool bExplosion; + + structdefaultproperties + { + ChunkIndex=0 + InitialVel=(X=0.0000000,Y=0.0000000,Z=0.0000000) + InitialAngVel=(X=0.0000000,Y=0.0000000,Z=0.0000000) + RelativeScale=0.0000000 + bExplosion=false + } +}; + +struct CheckpointRecord +{ + var bool bIsShutdown; + var array FragmentVis; + + structdefaultproperties + { + bIsShutdown=false + FragmentVis=none + } +}; + +var() int MaxPartsToSpawnAtOnce; +var() const editconst export editinline FracturedStaticMeshComponent FracturedStaticMeshComponent; +var const export editinline FracturedSkinnedMeshComponent SkinnedComponent; +var array ChunkHealth; +var transient bool bHasShownMissingSoundWarning; +var() bool bBreakChunksOnActorTouch; +var() bool bShouldSaveForCheckpoint; +var() array< Class > FracturedByDamageType; +var() float ChunkHealthScale; +var() array OverrideFragmentDestroyEffects; +var() float FractureCullMinDistance; +var() float FractureCullMaxDistance; +var transient array DeferredPartsToSpawn; +var PhysEffectInfo PartImpactEffect; +var SoundCue ExplosionFractureSound; +var SoundCue SingleChunkFractureSound; +var transient MaterialInterface MI_LoseChunkPreviousMaterial; + +// Export UFracturedStaticMeshActor::execSpawnPart(FFrame&, void* const) +native final simulated function FracturedStaticMeshPart SpawnPart(int ChunkIndex, Vector InitialVel, Vector InitialAngVel, float RelativeScale, bool bExplosion); + +// Export UFracturedStaticMeshActor::execSpawnPartMulti(FFrame&, void* const) +native final simulated function FracturedStaticMeshPart SpawnPartMulti(array ChunkIndices, Vector InitialVel, Vector InitialAngVel, float RelativeScale, bool bExplosion); + +simulated event PostBeginPlay() +{ + local PhysicalMaterial PhysMat; + + super.PostBeginPlay(); + ResetHealth(); + // End:0x2E + if(!bBreakChunksOnActorTouch) + { + SetTickIsDisabled(true); + } + PhysMat = FracturedStaticMeshComponent.GetFracturedMeshPhysMaterial(); + PartImpactEffect = PhysMat.FindPhysEffectInfo(0); + PhysMat.FindFractureSounds(ExplosionFractureSound, SingleChunkFractureSound); + ResetVisibility(); + //return; +} + +// Export UFracturedStaticMeshActor::execResetHealth(FFrame&, void* const) +native final simulated function ResetHealth(); + +function bool ShouldSaveForCheckpoint() +{ + return bShouldSaveForCheckpoint; + //return ReturnValue; +} + +function CreateCheckpointRecord(out CheckpointRecord Record) +{ + // End:0x45 + if((int(Physics) == int(0)) && bHidden) + { + Record.bIsShutdown = true; + } + else + { + Record.FragmentVis = FracturedStaticMeshComponent.GetVisibleFragments(); + } + //return; +} + +function ApplyCheckpointRecord(const out CheckpointRecord Record) +{ + // End:0x2D + if(Record.bIsShutdown) + { + ShutDown(); + } + else + { + FracturedStaticMeshComponent.SetVisibleFragments(Record.FragmentVis); + } + //return; +} + +// Export UFracturedStaticMeshActor::execBreakOffIsolatedIslands(FFrame&, void* const) +native simulated event BreakOffIsolatedIslands(out array FragmentVis, array IgnoreFrags, Vector ChunkDir, array DisableCollWithPart, bool bWantPhysChunks); + +// Export UFracturedStaticMeshActor::execSpawnDeferredParts(FFrame&, void* const) +native simulated event bool SpawnDeferredParts(); + +simulated function bool IsFracturedByDamageType(Class dmgType) +{ + local int I; + + // End:0x12 + if(FracturedByDamageType.Length == 0) + { + return true; + } + I = 0; + J0x1D: + + // End:0x66 [Loop If] + if(I < FracturedByDamageType.Length) + { + // End:0x58 + if(dmgType == FracturedByDamageType[I]) + { + return true; + } + I++; + // [Loop Continue] + goto J0x1D; + } + return false; + //return ReturnValue; +} + +simulated function bool FractureEffectIsRelevant(bool bForceDedicated, Pawn EffectInstigator, out byte bWantPhysChunksAndParticles) +{ + local bool bResult; + local PlayerController P; + local float FinalMinDistance, FinalCullDistance, DistSq; + local Vector CameraLoc; + local Rotator CameraRot; + + bResult = true; + bWantPhysChunksAndParticles = 1; + // End:0x2C + if(EffectInstigator == none) + { + return true; + } + else + { + // End:0x60 + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return bForceDedicated; + } + // End:0x130 + if((int(WorldInfo.NetMode) == int(NM_ListenServer)) && WorldInfo.Game.NumPlayers > 1) + { + // End:0xD3 + if(bForceDedicated) + { + return true; + } + // End:0x12D + if(((EffectInstigator != none) && EffectInstigator.IsHumanControlled()) && EffectInstigator.IsLocallyControlled()) + { + return true; + } + } + else + { + // End:0x166 + if((EffectInstigator != none) && EffectInstigator.IsHumanControlled()) + { + return true; + } + } + FinalMinDistance = FractureCullMinDistance * WorldInfo.MyFractureManager.GetFSMFractureCullDistanceScale(); + FinalCullDistance = FractureCullMaxDistance * WorldInfo.MyFractureManager.GetFSMFractureCullDistanceScale(); + DistSq = 10000000000.0000000; + // End:0x283 + foreach LocalPlayerControllers(Class'Engine.PlayerController', P) + { + P.GetPlayerViewPoint(CameraLoc, CameraRot); + DistSq = FMin(DistSq, VSizeSq(Location - CameraLoc)); + } + // End:0x2B5 + if(DistSq > (FinalCullDistance * FinalCullDistance)) + { + bResult = false; + } + else + { + // End:0x2D9 + if(DistSq < (FinalMinDistance * FinalMinDistance)) + { + return true; + } + } + // End:0x32F + if(bResult) + { + // End:0x31E + if((WorldInfo.TimeSeconds - LastRenderTime) < 0.5000000) + { + return true; + } + else + { + bWantPhysChunksAndParticles = 0; + return true; + } + } + else + { + bWantPhysChunksAndParticles = 0; + return false; + } + } + //return ReturnValue; +} + +// Export UFracturedStaticMeshActor::execRemoveDecals(FFrame&, void* const) +protected native final simulated function RemoveDecals(int IndexToRemoveDecalsFrom); + +simulated event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + local array FragmentVis; + local Vector ChunkDir, MomentumDir; + local FracturedStaticMesh FracMesh; + local FracturedStaticMeshPart FracPart; + local array NoCollParts; + local int TotalVisible; + local array IgnoreFrags; + local Box ChunkBox; + local ParticleSystem EffectPSys; + local float PhysChance, PartScale; + local byte bWantPhysChunksAndParticles; + local Pawn InstigatorPawn; + local WorldFractureSettings FractureSettings; + local Vector NewHitLocation, HitNormal; + + super.TakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + // End:0x9C + if(((DamageType != none) && !DamageType.default.bCausesFracture) || !IsFracturedByDamageType(DamageType)) + { + return; + } + // End:0x14C + if(HitInfo.HitComponent == none) + { + // End:0xF7 + if(Momentum == vect(0.0000000, 0.0000000, 0.0000000)) + { + Momentum = Location - HitLocation; + } + TraceComponent(NewHitLocation, HitNormal, FracturedStaticMeshComponent, HitLocation + (float(100) * Normal(Momentum)), HitLocation,, HitInfo, true); + } + // End:0x212 + if(((HitInfo.Item == FracturedStaticMeshComponent.GetCoreFragmentIndex()) || !FracturedStaticMeshComponent.IsFragmentVisible(HitInfo.Item)) || !FracturedStaticMeshComponent.IsFragmentDestroyable(HitInfo.Item)) + { + return; + } + // End:0x24C + if(EventInstigator != none) + { + InstigatorPawn = EventInstigator.Pawn; + } + else + { + // End:0x283 + if(DamageCauser != none) + { + InstigatorPawn = DamageCauser.Instigator; + } + } + // End:0x2A7 + if(!FractureEffectIsRelevant(false, InstigatorPawn, bWantPhysChunksAndParticles)) + { + return; + } + // End:0x2EA + if(RB_LineImpulseActor(DamageCauser) != none) + { + ChunkHealth[HitInfo.Item] = 0; + } + else + { + // End:0x364 + if(DamageType != none) + { + ChunkHealth[HitInfo.Item] -= int(WorldInfo.FracturedMeshWeaponDamage * DamageType.default.FracturedMeshDamage); + } + else + { + ChunkHealth[HitInfo.Item] -= int(WorldInfo.FracturedMeshWeaponDamage); + } + } + // End:0xBC8 + if(ChunkHealth[HitInfo.Item] <= 0) + { + FracMesh = FracturedStaticMesh(FracturedStaticMeshComponent.StaticMesh); + FractureSettings = WorldInfo.GetWorldFractureSettings(); + FragmentVis = FracturedStaticMeshComponent.GetVisibleFragments(); + TotalVisible = FracturedStaticMeshComponent.GetNumVisibleFragments(); + // End:0x4A9 + if(int(Physics) == int(10)) + { + // End:0x4A9 + if(TotalVisible == 1) + { + return; + } + } + // End:0x4CB + if(TotalVisible == FragmentVis.Length) + { + SetLoseChunkReplacementMaterial(); + } + FragmentVis[HitInfo.Item] = 0; + ChunkDir = FracturedStaticMeshComponent.GetFragmentAverageExteriorNormal(HitInfo.Item); + MomentumDir = Normal(Momentum); + // End:0x597 + if((VSize(ChunkDir) < 0.0100000) || (MomentumDir Dot ChunkDir) > -0.2000000) + { + ChunkDir += MomentumDir; + } + ChunkDir.Z = float(Max(int(ChunkDir.Z), 0)); + ChunkDir.Z /= FracMesh.ChunkLinHorizontalScale; + ChunkDir = Normal(ChunkDir); + // End:0xA68 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + PhysChance = ((FractureSettings.bEnableChanceOfPhysicsChunkOverride) ? FractureSettings.ChanceOfPhysicsChunkOverride : FracMesh.ChanceOfPhysicsChunk); + PhysChance *= WorldInfo.MyFractureManager.GetFSMDirectSpawnChanceScale(); + // End:0x8CB + if((((int(bWantPhysChunksAndParticles) == int(1)) && FracMesh.bSpawnPhysicsChunks) && FRand() < PhysChance) && !FracturedStaticMeshComponent.IsNoPhysFragment(HitInfo.Item)) + { + PartScale = FracMesh.NormalPhysicsChunkScaleMin + (FRand() * (FracMesh.NormalPhysicsChunkScaleMax - FracMesh.NormalPhysicsChunkScaleMin)); + FracPart = SpawnPart(HitInfo.Item, (ChunkDir * FracMesh.ChunkLinVel) + Velocity, VRand() * FracMesh.ChunkAngVel, PartScale, false); + // End:0x8CB + if(FracPart != none) + { + FracPart.FracturedStaticMeshComponent.DisableRBCollisionWithSMC(FracturedStaticMeshComponent, true); + } + } + // End:0xA68 + if(int(bWantPhysChunksAndParticles) == int(1)) + { + // End:0x912 + if(OverrideFragmentDestroyEffects.Length > 0) + { + EffectPSys = OverrideFragmentDestroyEffects[Rand(OverrideFragmentDestroyEffects.Length)]; + } + else + { + // End:0x981 + if(FracMesh.FragmentDestroyEffects.Length > 0) + { + EffectPSys = FracMesh.FragmentDestroyEffects[Rand(FracMesh.FragmentDestroyEffects.Length)]; + } + } + // End:0xA68 + if((EffectPSys != none) && WorldInfo.MyFractureManager != none) + { + ChunkBox = FracturedStaticMeshComponent.GetFragmentBox(HitInfo.Item); + WorldInfo.MyFractureManager.SpawnChunkDestroyEffect(EffectPSys, ChunkBox, ChunkDir, FracMesh.FragmentDestroyEffectScale); + } + } + } + // End:0xB6D + if((FracMesh.bAlwaysBreakOffIsolatedIslands || FracturedStaticMeshComponent.GetCoreFragmentIndex() == -1) && !FracMesh.bFixIsolatedChunks) + { + IgnoreFrags[0] = HitInfo.Item; + // End:0xB27 + if(FracPart != none) + { + NoCollParts[0] = FracPart; + } + BreakOffIsolatedIslands(FragmentVis, IgnoreFrags, ChunkDir, NoCollParts, ((int(bWantPhysChunksAndParticles) == int(1)) ? true : false)); + } + FracturedStaticMeshComponent.SetVisibleFragments(FragmentVis); + // End:0xBC8 + if(int(Physics) == int(10)) + { + FracturedStaticMeshComponent.RecreatePhysState(); + } + } + //return; +} + +simulated event Explode() +{ + local array FragmentVis; + local int I; + local Vector SpawnDir; + local FracturedStaticMesh FracMesh; + local FracturedStaticMeshPart FracPart; + local float PartScale; + + FracMesh = FracturedStaticMesh(FracturedStaticMeshComponent.StaticMesh); + FragmentVis = FracturedStaticMeshComponent.GetVisibleFragments(); + I = 0; + J0x65: + + // End:0x25D [Loop If] + if(I < FragmentVis.Length) + { + // End:0x24F + if((int(FragmentVis[I]) != int(0)) && I != FracturedStaticMeshComponent.GetCoreFragmentIndex()) + { + SpawnDir = FracturedStaticMeshComponent.GetFragmentAverageExteriorNormal(I); + PartScale = FracMesh.ExplosionPhysicsChunkScaleMin + (FRand() * (FracMesh.ExplosionPhysicsChunkScaleMax - FracMesh.ExplosionPhysicsChunkScaleMin)); + FracPart = SpawnPart(I, ((0.5000000 * SpawnDir) * FracMesh.ChunkLinVel) + Velocity, (0.5000000 * VRand()) * FracMesh.ChunkAngVel, PartScale, true); + // End:0x239 + if(FracPart != none) + { + FracPart.FracturedStaticMeshComponent.SetRBCollidesWithChannel(14, false); + } + FragmentVis[I] = 0; + } + I++; + // [Loop Continue] + goto J0x65; + } + FracturedStaticMeshComponent.SetVisibleFragments(FragmentVis); + //return; +} + +// Export UFracturedStaticMeshActor::execBreakOffPartsInRadius(FFrame&, void* const) +native simulated event BreakOffPartsInRadius(Vector Origin, float Radius, float RBStrength, bool bWantPhysChunksAndParticles); + +// Export UFracturedStaticMeshActor::execResetVisibility(FFrame&, void* const) +native simulated event ResetVisibility(); + +simulated event HideOneFragment() +{ + local array FragmentVis; + local int I; + + FragmentVis = FracturedStaticMeshComponent.GetVisibleFragments(); + I = 0; + J0x34: + + // End:0xE7 [Loop If] + if(I < FragmentVis.Length) + { + // End:0xD9 + if((int(FragmentVis[I]) != int(0)) && I != FracturedStaticMeshComponent.GetCoreFragmentIndex()) + { + FragmentVis[I] = 0; + FracturedStaticMeshComponent.SetVisibleFragments(FragmentVis); + return; + } + I++; + // [Loop Continue] + goto J0x34; + } + //return; +} + +simulated event HideFragmentsToMaximizeMemoryUsage() +{ + local array FragmentVis; + local int I, Incr; + + Incr = 4; + FragmentVis = FracturedStaticMeshComponent.GetVisibleFragments(); + I = 0; + J0x40: + + // End:0xD2 [Loop If] + if(I < FragmentVis.Length) + { + // End:0xBB + if((int(FragmentVis[I]) != int(0)) && I != FracturedStaticMeshComponent.GetCoreFragmentIndex()) + { + FragmentVis[I] = 0; + } + I += Incr; + // [Loop Continue] + goto J0x40; + } + FracturedStaticMeshComponent.SetVisibleFragments(FragmentVis); + //return; +} + +simulated event SetLoseChunkReplacementMaterial() +{ + local MaterialInterface LoseChunkOutsideMat; + local FracturedStaticMesh FracMesh; + + // End:0x11 + if(MI_LoseChunkPreviousMaterial != none) + { + return; + } + FracMesh = FracturedStaticMesh(FracturedStaticMeshComponent.StaticMesh); + // End:0x91 + if(FracturedStaticMeshComponent.LoseChunkOutsideMaterialOverride != none) + { + LoseChunkOutsideMat = FracturedStaticMeshComponent.LoseChunkOutsideMaterialOverride; + } + else + { + LoseChunkOutsideMat = FracMesh.LoseChunkOutsideMaterial; + } + // End:0x16B + if(LoseChunkOutsideMat != none) + { + MI_LoseChunkPreviousMaterial = FracturedStaticMeshComponent.GetMaterial(FracMesh.OutsideMaterialIndex).GetMaterial(); + FracturedStaticMeshComponent.SetMaterial(FracMesh.OutsideMaterialIndex, LoseChunkOutsideMat); + } + //return; +} + +simulated function NotifyHitByExplosion(Controller InstigatorController, float DamageAmount, Class dmgType) +{ + local int Idx; + local SeqEvent_TakeDamage dmgEvent; + + Idx = 0; + J0x0B: + + // End:0xA3 [Loop If] + if(Idx < GeneratedEvents.Length) + { + dmgEvent = SeqEvent_TakeDamage(GeneratedEvents[Idx]); + // End:0x95 + if(dmgEvent != none) + { + dmgEvent.HandleDamage(self, InstigatorController, dmgType, int(DamageAmount)); + } + Idx++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +defaultproperties +{ + MaxPartsToSpawnAtOnce=6 + // Reference: FracturedStaticMeshComponent'Engine.Default__FracturedStaticMeshActor.FracturedStaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FracturedStaticMeshComponent0' + begin object name="FracturedStaticMeshComponent0" class=Engine.FracturedStaticMeshComponent + bUseDynamicIBWithHiddenFragments=true + WireframeColor=(R=0,G=128,B=255,A=255) + ReplacementPrimitive=none + bAllowApproximateOcclusion=true + bForceDirectLightMap=true + end object + FracturedStaticMeshComponent=FracturedStaticMeshComponent0 + // Reference: FracturedSkinnedMeshComponent'Engine.Default__FracturedStaticMeshActor.FracturedSkinnedComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FracturedSkinnedComponent0' + begin object name="FracturedSkinnedComponent0" class=Engine.FracturedSkinnedMeshComponent + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__FracturedStaticMeshActor.LightEnvironment0' + bDisableAllRigidBody=true + end object + SkinnedComponent=FracturedSkinnedComponent0 + ChunkHealthScale=1.0000000 + FractureCullMinDistance=512.0000000 + FractureCullMaxDistance=4096.0000000 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__FracturedStaticMeshActor.LightEnvironment0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'LightEnvironment0' + begin object name="LightEnvironment0" class=Engine.DynamicLightEnvironmentComponent + bDynamic=false + bEnabled=false + bForceNonCompositeDynamicLights=true + end object + Components[0]=LightEnvironment0 + Components[1]=FracturedSkinnedComponent0 + Components[2]=FracturedStaticMeshComponent0 + bNoDelete=true + bWorldGeometry=true + bRouteBeginPlayEvenIfStatic=false + bGameRelevant=true + bMovable=false + bCanBeDamaged=true + bCollideActors=true + bBlockActors=true + bProjTarget=true + bEdShouldSnap=true + bPathColliding=true + CollisionComponent=FracturedStaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/FracturedStaticMeshActor_Spawnable.uc b/exported/Engine/Classes/FracturedStaticMeshActor_Spawnable.uc new file mode 100755 index 00000000..040c0f6c --- /dev/null +++ b/exported/Engine/Classes/FracturedStaticMeshActor_Spawnable.uc @@ -0,0 +1,35 @@ +class FracturedStaticMeshActor_Spawnable extends FracturedStaticMeshActor + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: FracturedStaticMeshComponent'Engine.Default__FracturedStaticMeshActor_Spawnable.FracturedStaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FracturedStaticMeshComponent0' + // Archetype: FracturedStaticMeshComponent'Engine.Default__FracturedStaticMeshActor.FracturedStaticMeshComponent0' + begin object name="FracturedStaticMeshComponent0" + ReplacementPrimitive=none + end object + FracturedStaticMeshComponent=FracturedStaticMeshComponent0 + // Reference: FracturedSkinnedMeshComponent'Engine.Default__FracturedStaticMeshActor_Spawnable.FracturedSkinnedComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FracturedSkinnedComponent0' + // Archetype: FracturedSkinnedMeshComponent'Engine.Default__FracturedStaticMeshActor.FracturedSkinnedComponent0' + begin object name="FracturedSkinnedComponent0" + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__FracturedStaticMeshActor_Spawnable.LightEnvironment0' + end object + SkinnedComponent=FracturedSkinnedComponent0 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__FracturedStaticMeshActor_Spawnable.LightEnvironment0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'LightEnvironment0' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__FracturedStaticMeshActor.LightEnvironment0' + begin object name="LightEnvironment0" + end object + Components[0]=LightEnvironment0 + Components[1]=FracturedSkinnedComponent0 + Components[2]=FracturedStaticMeshComponent0 + bNoDelete=false + CollisionComponent=FracturedStaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/FracturedStaticMeshComponent.uc b/exported/Engine/Classes/FracturedStaticMeshComponent.uc new file mode 100755 index 00000000..e5789ca0 --- /dev/null +++ b/exported/Engine/Classes/FracturedStaticMeshComponent.uc @@ -0,0 +1,68 @@ +class FracturedStaticMeshComponent extends FracturedBaseComponent + native(Mesh) + editinlinenew + hidecategories(Object); + +struct native FragmentGroup +{ + var array FragmentIndices; + var bool bGroupIsRooted; + + structdefaultproperties + { + FragmentIndices=none + bGroupIsRooted=false + } +}; + +var protected const transient array FragmentNeighborsVisible; +var protected const Box VisibleBox; +var protected const bool bUseSkinnedRendering; +var bool bUseVisibleVertsForBounds; +var() bool bTopFragmentsRootNonDestroyable; +var() bool bBottomFragmentsRootNonDestroyable; +var() float TopBottomFragmentDistThreshold; +var() MaterialInterface LoseChunkOutsideMaterialOverride; +var float FragmentBoundsMaxZ; +var float FragmentBoundsMinZ; +var export editinline transient FracturedSkinnedMeshComponent SkinnedComponent; + +// Export UFracturedStaticMeshComponent::execSetVisibleFragments(FFrame&, void* const) +native final function SetVisibleFragments(array VisibilityFactors); + +// Export UFracturedStaticMeshComponent::execIsFragmentDestroyable(FFrame&, void* const) +native final function bool IsFragmentDestroyable(int FragmentIndex); + +// Export UFracturedStaticMeshComponent::execIsRootFragment(FFrame&, void* const) +native final function bool IsRootFragment(int FragmentIndex); + +// Export UFracturedStaticMeshComponent::execIsNoPhysFragment(FFrame&, void* const) +native final function bool IsNoPhysFragment(int FragmentIndex); + +// Export UFracturedStaticMeshComponent::execGetFragmentBox(FFrame&, void* const) +native final function Box GetFragmentBox(int FragmentIndex); + +// Export UFracturedStaticMeshComponent::execGetFragmentAverageExteriorNormal(FFrame&, void* const) +native final function Vector GetFragmentAverageExteriorNormal(int FragmentIndex); + +// Export UFracturedStaticMeshComponent::execGetCoreFragmentIndex(FFrame&, void* const) +native final function int GetCoreFragmentIndex(); + +// Export UFracturedStaticMeshComponent::execGetFragmentGroups(FFrame&, void* const) +native final function array GetFragmentGroups(array IgnoreFragments, float MinConnectionArea); + +// Export UFracturedStaticMeshComponent::execGetBoundaryHiddenFragments(FFrame&, void* const) +native final function array GetBoundaryHiddenFragments(array AdditionalVisibleFragments); + +// Export UFracturedStaticMeshComponent::execRecreatePhysState(FFrame&, void* const) +native final function RecreatePhysState(); + +// Export UFracturedStaticMeshComponent::execGetFracturedMeshPhysMaterial(FFrame&, void* const) +native final function PhysicalMaterial GetFracturedMeshPhysMaterial(); + +defaultproperties +{ + TopBottomFragmentDistThreshold=0.1000000 + ReplacementPrimitive=none + bUsePrecomputedShadows=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/FracturedStaticMeshPart.uc b/exported/Engine/Classes/FracturedStaticMeshPart.uc new file mode 100755 index 00000000..e364dc5d --- /dev/null +++ b/exported/Engine/Classes/FracturedStaticMeshPart.uc @@ -0,0 +1,113 @@ +class FracturedStaticMeshPart extends FracturedStaticMeshActor + native(Mesh) + notplaceable + hidecategories(Navigation); + +var float DestroyPartRadiusFactor; +var transient FracturedStaticMeshActor BaseFracturedMeshActor; +var bool bHasBeenRecycled; +var bool bChangeRBChannelWhenAsleep; +var bool bCompositeThatExplodesOnImpact; +var float LastSpawnTime; +var int PartPoolIndex; +var float FracPartGravScale; +var PrimitiveComponent.ERBCollisionChannel AsleepRBChannel; +var Vector OldVelocity; +var float CurrentVibrationLevel; +var float LastImpactSoundTime; + +// Export UFracturedStaticMeshPart::execInitialize(FFrame&, void* const) +native simulated function Initialize(); + +// Export UFracturedStaticMeshPart::execRecyclePart(FFrame&, void* const) +native simulated function RecyclePart(bool bAddToFreePool); + +simulated event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + super.TakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + FracturedStaticMeshComponent.AddImpulse(Normal(Momentum) * DamageType.default.KDamageImpulse, HitLocation); + //return; +} + +simulated function TryToCleanUp() +{ + // End:0x7C + if((BaseFracturedMeshActor == none) || (WorldInfo.TimeSeconds - BaseFracturedMeshActor.SkinnedComponent.LastRenderTime) > 1.0000000) + { + RecyclePart(true); + } + else + { + SetTimer(2.0000000, false, 'TryToCleanUp'); + } + //return; +} + +simulated event FellOutOfWorld(Class dmgType) +{ + RecyclePart(true); + //return; +} + +simulated event Explode() +{ + // End:0x24 + if(!bHasBeenRecycled) + { + super.Explode(); + RecyclePart(true); + } + //return; +} + +simulated event BreakOffPartsInRadius(Vector Origin, float Radius, float RBStrength, bool bWantPhysChunksAndParticles) +{ + // End:0x3C + if(bCompositeThatExplodesOnImpact) + { + super.BreakOffPartsInRadius(Origin, Radius, RBStrength, bWantPhysChunksAndParticles); + } + //return; +} + +defaultproperties +{ + DestroyPartRadiusFactor=10.0000000 + FracPartGravScale=2.0000000 + AsleepRBChannel=ERBCollisionChannel.RBCC_GameplayPhysics + // Reference: FracturedStaticMeshComponent'Engine.Default__FracturedStaticMeshPart.FracturedStaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FracturedStaticMeshComponent0' + // Archetype: FracturedStaticMeshComponent'Engine.Default__FracturedStaticMeshActor.FracturedStaticMeshComponent0' + begin object name="FracturedStaticMeshComponent0" + bUseSkinnedRendering=true + bUseVisibleVertsForBounds=true + bInitialVisibilityValue=false + bUseDynamicIndexBuffer=false + bUseDynamicIBWithHiddenFragments=false + ReplacementPrimitive=none + RBChannel=ERBCollisionChannel.RBCC_FracturedMeshPart + bAcceptsDynamicDecals=false + bForceDirectLightMap=false + bCastDynamicShadow=false + bUsePrecomputedShadows=false + BlockZeroExtent=false + BlockNonZeroExtent=false + bSkipRBGeomCreation=true + RBCollideWithChannels=(Default=true,GameplayPhysics=true,EffectPhysics=true,FracturedMeshPart=true) + end object + FracturedStaticMeshComponent=FracturedStaticMeshComponent0 + SkinnedComponent=none + Components[0]=FracturedStaticMeshComponent0 + Physics=EPhysics.PHYS_RigidBody + TickGroup=ETickingGroup.TG_PostAsyncWork + bNoDelete=false + bWorldGeometry=false + bNetInitialRotation=true + bMovable=true + bBlockActors=false + bNoEncroachCheck=true + bPathColliding=false + LifeSpan=15.0000000 + CollisionComponent=FracturedStaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/GameEngine.uc b/exported/Engine/Classes/GameEngine.uc new file mode 100755 index 00000000..21b95f0c --- /dev/null +++ b/exported/Engine/Classes/GameEngine.uc @@ -0,0 +1,163 @@ +class GameEngine extends Engine + transient + native(GameEngine) + config(Engine); + +enum EFullyLoadPackageType +{ + FULLYLOAD_Map, // 0 + FULLYLOAD_Game_PreLoadClass, // 1 + FULLYLOAD_Game_PostLoadClass, // 2 + FULLYLOAD_Always, // 3 + FULLYLOAD_Mutator, // 4 + FULLYLOAD_MAX // 5 +}; + +struct native transient URL +{ + var init string Protocol; + var init string Host; + var init int Port; + var init string Map; + var init array Op; + var init string Portal; + var init string SecureAddress; + var init int Valid; + + structdefaultproperties + { + Protocol="" + Host="" + Port=0 + Map="" + Op=none + Portal="" + SecureAddress="" + Valid=0 + } +}; + +struct native LevelStreamingStatus +{ + var name PackageName; + var bool bShouldBeLoaded; + var bool bShouldBeVisible; + + structdefaultproperties + { + PackageName="None" + bShouldBeLoaded=false + bShouldBeVisible=false + } +}; + +struct native FullyLoadedPackagesInfo +{ + var GameEngine.EFullyLoadPackageType FullyLoadType; + var string Tag; + var array PackagesToLoad; + var array LoadedObjects; + + structdefaultproperties + { + FullyLoadType=EFullyLoadPackageType.FULLYLOAD_Map + Tag="" + PackagesToLoad=none + LoadedObjects=none + } +}; + +struct native NamedNetDriver +{ + var name NetDriverName; + var native const Pointer NetDriver; + + structdefaultproperties + { + NetDriverName="None" + } +}; + +struct native AnimTag +{ + var string Tag; + var array Contains; + + structdefaultproperties + { + Tag="" + Contains=none + } +}; + +var PendingLevel GPendingLevel; +var config string PendingLevelPlayerControllerClassName; +var URL LastURL; +var URL LastRemoteURL; +var config array ServerActors; +var string TravelURL; +var byte TravelType; +var const transient bool bWorldWasLoadedThisTick; +var const transient bool bWorldWasLoadedLastTick; +var const transient bool bCheckForMovieCapture; +var const transient bool bTriggerPostLoadMap; +var const transient bool bStartedLoadMapMovie; +var const bool bShouldCommitPendingMapChange; +var config bool bClearAnimSetLinkupCachesOnLoadMap; +var config bool bEnableSecondaryDisplay; +var config bool bEnableSecondaryViewport; +var const transient OnlineSubsystem OnlineSubsystem; +var const transient GamePadLightbarSubsystem GamePadLightbarSubsystem; +var const transient DownloadableContentEnumerator DLCEnumerator; +var config string DownloadableContentEnumeratorClassName; +var const transient DownloadableContentManager DLCManager; +var config string DownloadableContentManagerClassName; +var const array LevelsToLoadForPendingMapChange; +var const array LoadedLevelsForPendingMapChange; +var const string PendingMapChangeFailureDescription; +var config float MaxDeltaTime; +var config string SecondaryViewportClientClassName; +var init array SecondaryViewportClients; +var init array SecondaryViewportFrames; +var const array PendingLevelStreamingStatusUpdates; +var const array ObjectReferencers; +var array PackagesToFullyLoad; +var const transient array NamedNetDrivers; +var config array AnimTags; + +// Export UGameEngine::execCreateNamedNetDriver(FFrame&, void* const) +native final function bool CreateNamedNetDriver(name NetDriverName); + +// Export UGameEngine::execDestroyNamedNetDriver(FFrame&, void* const) +native final function DestroyNamedNetDriver(name NetDriverName); + +// Export UGameEngine::execGetOnlineSubsystem(FFrame&, void* const) +native static final function OnlineSubsystem GetOnlineSubsystem(); + +// Export UGameEngine::execGetDLCEnumerator(FFrame&, void* const) +native static final function DownloadableContentEnumerator GetDLCEnumerator(); + +// Export UGameEngine::execGetDLCManager(FFrame&, void* const) +native static final function DownloadableContentManager GetDLCManager(); + +// Export UGameEngine::execHasSecondaryScreenActive(FFrame&, void* const) +native static final function bool HasSecondaryScreenActive(); + +// Export UGameEngine::execEncodeURLString(FFrame&, void* const) +native static final function EncodeURLString(out string Str); + +// Export UGameEngine::execDecodeURLString(FFrame&, void* const) +native static final function DecodeURLString(out string Str); + +defaultproperties +{ + LastURL=(Protocol="",Host="",Port=0,Map="",Op=none,Portal="",SecureAddress="",Valid=1) + LastRemoteURL=(Protocol="",Host="",Port=0,Map="",Op=none,Portal="",SecureAddress="",Valid=1) + bClearAnimSetLinkupCachesOnLoadMap=true + LocalPlayerClassName="TgGame.TgLocalPlayer" + bUsePostProcessEffects=true + bOnScreenKismetWarnings=true + MaxSmoothedFrameRate=150.0000000 + ScoutClassName="Engine.Scout" + CameraTranslationThreshold=1600.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/GameInfo.uc b/exported/Engine/Classes/GameInfo.uc new file mode 100755 index 00000000..d7e406b4 --- /dev/null +++ b/exported/Engine/Classes/GameInfo.uc @@ -0,0 +1,3417 @@ +class GameInfo extends Info + native + config(Game) + notplaceable + hidecategories(Navigation,Movement,Collision); + +enum PIEPawnMeshTypes +{ + PIEMESH_UseMeshID, // 0 + PIEMESH_MAX // 1 +}; + +enum EStandbyType +{ + STDBY_Rx, // 0 + STDBY_Tx, // 1 + STDBY_BadPing, // 2 + STDBY_MAX // 3 +}; + +struct native GameClassShortName +{ + var string ShortName; + var string GameClassName; + + structdefaultproperties + { + ShortName="" + GameClassName="" + } +}; + +struct native GameTypePrefix +{ + var string Prefix; + var bool bUsesCommonPackage; + var string GameType; + var array AdditionalGameTypes; + var array ForcedObjects; + + structdefaultproperties + { + Prefix="" + bUsesCommonPackage=false + GameType="" + AdditionalGameTypes=none + ForcedObjects=none + } +}; + +var bool bRestartLevel; +var bool bPauseable; +var bool bTeamGame; +var bool bGameEnded; +var bool bOverTime; +var bool bDelayedStart; +var bool bWaitingToStartMatch; +var globalconfig bool bChangeLevels; +var bool bAlreadyChanged; +var globalconfig bool bAdminCanPause; +var bool bGameRestarted; +var bool bLevelChange; +var globalconfig bool bKickLiveIdlers; +var bool bUsingArbitration; +var bool bHasArbitratedHandshakeBegun; +var bool bNeedsEndGameHandshake; +var bool bIsEndGameHandshakeComplete; +var bool bHasEndGameHandshakeBegun; +var bool bFixedPlayerStart; +var bool bDoFearCostFallOff; +var bool bUseSeamlessTravel; +var bool bHasNetworkError; +var const bool bRequiresPushToTalk; +var config bool bIsStandbyCheckingEnabled; +var bool bIsStandbyCheckingOn; +var bool bHasStandbyCheatTriggered; +var string CauseEventCommand; +var string BugLocString; +var string BugRotString; +var array PendingArbitrationPCs; +var array ArbitrationPCs; +var globalconfig float ArbitrationHandshakeTimeout; +var globalconfig float GameDifficulty; +var globalconfig int GoreLevel; +var float GameSpeed; +var Class DefaultPawnClass; +var Class HUDType; +var Class SecondaryHUDType; +var globalconfig int MaxSpectators; +var int MaxSpectatorsAllowed; +var int NumSpectators; +var globalconfig int MaxPlayers; +var int MaxPlayersAllowed; +var int NumPlayers; +var int NumBots; +var int NumTravellingPlayers; +var int CurrentID; +var const localized string DefaultPlayerName; +var const localized string GameName; +var float FearCostFallOff; +var config int GoalScore; +var config int MaxLives; +var config int TimeLimit; +var Class DeathMessageClass; +var Class GameMessageClass; +var Mutator BaseMutator; +var Class AccessControlClass; +var AccessControl AccessControl; +var Class BroadcastHandlerClass; +var BroadcastHandler BroadcastHandler; +var Class AutoTestManagerClass; +var AutoTestManager MyAutoTestManager; +var Class PlayerControllerClass; +var Class PlayerReplicationInfoClass; +var() Class GameReplicationInfoClass; +var GameReplicationInfo GameReplicationInfo; +var CrowdPopulationManagerBase PopulationManager; +var Class PopulationManagerClass; +var config float MaxIdleTime; +var globalconfig float MaxTimeMargin; +var globalconfig float TimeMarginSlack; +var globalconfig float MinTimeMargin; +var array InactivePRIArray; +var array< delegate > Pausers; +var OnlineSubsystem OnlineSub; +var OnlineGameInterface GameInterface; +var Class OnlineStatsWriteClass; +var int LeaderboardId; +var int ArbitratedLeaderboardId; +var protected CoverReplicator CoverReplicatorBase; +var const Class OnlineGameSettingsClass; +var string ServerOptions; +var int AdjustedNetSpeed; +var float LastNetSpeedUpdateTime; +var globalconfig int TotalNetBandwidth; +var globalconfig int MinDynamicBandwidth; +var globalconfig int MaxDynamicBandwidth; +var config float StandbyRxCheatTime; +var config float StandbyTxCheatTime; +var config int BadPingThreshold; +var config float PercentMissingForRxStandby; +var config float PercentMissingForTxStandby; +var config float PercentForBadPing; +var config float JoinInProgressStandbyWaitTime; +var Material StreamingPauseIcon; +var() protected const config array GameInfoClassAliases; +var config string DefaultGameType; +var config array DefaultMapPrefixes; +var config array CustomMapPrefixes; +var config int AnimTreePoolSize; +//var delegate __CanUnpause__Delegate; + +// Export UGameInfo::execGetSupportedGameTypes(FFrame&, void* const) +native function bool GetSupportedGameTypes(const out string InFilename, out GameTypePrefix OutGameType, optional bool bCheckExt = false); + +// Export UGameInfo::execGetMapCommonPackageName(FFrame&, void* const) +native function bool GetMapCommonPackageName(const out string InFilename, out string OutCommonPackageName); + +event PreBeginPlay() +{ + AdjustedNetSpeed = MaxDynamicBandwidth; + SetGameSpeed(GameSpeed); + GameReplicationInfo = Spawn(GameReplicationInfoClass); + WorldInfo.GRI = GameReplicationInfo; + InitGameReplicationInfo(); + InitCrowdPopulationManager(); + //return; +} + +function CoverReplicator GetCoverReplicator() +{ + // End:0x5D + if((CoverReplicatorBase == none) && int(WorldInfo.NetMode) != int(NM_Standalone)) + { + CoverReplicatorBase = Spawn(Class'Engine.CoverReplicator'); + } + return CoverReplicatorBase; + //return ReturnValue; +} + +event PostBeginPlay() +{ + // End:0x2B + if(MaxIdleTime > float(0)) + { + MaxIdleTime = FMax(MaxIdleTime, 20.0000000); + } + // End:0x5E + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + UpdateGameSettings(); + } + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + local Canvas Canvas; + + Canvas = HUD.Canvas; + Canvas.SetDrawColor(255, 255, 255); + Canvas.DrawText("Game:" $ GameName); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + // End:0x139 + if(WorldInfo.PopulationManager != none) + { + WorldInfo.PopulationManager.DisplayDebug(HUD, out_YL, out_YPos); + } + //return; +} + +function Reset() +{ + super(Actor).Reset(); + bGameEnded = false; + bOverTime = false; + InitGameReplicationInfo(); + //return; +} + +function bool ShouldReset(Actor ActorToReset) +{ + return true; + //return ReturnValue; +} + +function ResetLevel() +{ + local Controller C; + local Actor A; + local Sequence GameSeq; + local array AllSeqEvents; + local array ActivateIndices; + local int I; + + // End:0x94 + foreach WorldInfo.AllControllers(Class'Engine.Controller', C) + { + // End:0x74 + if(PlayerController(C) != none) + { + PlayerController(C).ClientReset(); + } + C.Reset(); + } + // End:0x11C + foreach AllActors(Class'Engine.Actor', A) + { + // End:0x11B + if(((A != self) && !A.IsA('Controller')) && ShouldReset(A)) + { + A.Reset(); + } + } + Reset(); + GameSeq = WorldInfo.GetGameSequence(); + // End:0x236 + if(GameSeq != none) + { + GameSeq.Reset(); + GameSeq.FindSeqObjectsByClass(Class'Engine.SeqEvent_LevelLoaded', true, AllSeqEvents); + ActivateIndices[0] = 2; + I = 0; + J0x1C9: + + // End:0x236 [Loop If] + if(I < AllSeqEvents.Length) + { + SeqEvent_LevelLoaded(AllSeqEvents[I]).CheckActivate(WorldInfo, none, false, ActivateIndices); + I++; + // [Loop Continue] + goto J0x1C9; + } + } + //return; +} + +event Timer() +{ + // End:0x2E + if(BroadcastHandler != none) + { + BroadcastHandler.UpdateSentText(); + } + // End:0x45 + if(bDoFearCostFallOff) + { + DoNavFearCostFallOff(); + } + //return; +} + +// Export UGameInfo::execShouldStartInCinematicMode(FFrame&, void* const) +native final function bool ShouldStartInCinematicMode(out int OutHidePlayer, out int OutHideHud, out int OutDisableMovement, out int OutDisableTurning, out int OutDisableInput); + +// Export UGameInfo::execDoNavFearCostFallOff(FFrame&, void* const) +native final function DoNavFearCostFallOff(); + +function NotifyNavigationChanged(NavigationPoint N) +{ + //return; +} + +event GameEnding() +{ + // End:0x2E + if(AccessControl != none) + { + AccessControl.NotifyGameEnding(); + } + ClearOnlineDelegates(); + EndLogging("serverquit"); + //return; +} + +event KickIdler(PlayerController PC) +{ + AccessControl.KickPlayer(PC, AccessControl.IdleKickReason); + //return; +} + +event ForceKickPlayer(PlayerController PC, string KickReason) +{ + AccessControl.ForceKickPlayer(PC, KickReason); + //return; +} + +function InitGameReplicationInfo() +{ + GameReplicationInfo.GameClass = Class; + GameReplicationInfo.ReceivedGameClass(); + //return; +} + +// Export UGameInfo::execGetNetworkNumber(FFrame&, void* const) +native function string GetNetworkNumber(); + +function int GetNumPlayers() +{ + return NumPlayers + NumTravellingPlayers; + //return ReturnValue; +} + +delegate bool CanUnpause() +{ + return true; + //return ReturnValue; +} + +event bool SetPause(PlayerController PC, optional delegate CanUnpauseDelegate = CanUnpause) +{ + local int FoundIndex; + + // End:0x109 + if(AllowPausing(PC)) + { + FoundIndex = Pausers.Find(CanUnpauseDelegate); + // End:0xA6 + if(FoundIndex == -1) + { + FoundIndex = Pausers.Length; + Pausers.Length = FoundIndex + 1; + Pausers[FoundIndex] = CanUnpauseDelegate; + } + // End:0x107 + if(WorldInfo.Pauser == none) + { + WorldInfo.Pauser = PC.PlayerReplicationInfo; + } + return true; + } + return false; + //return ReturnValue; +} + +event ClearPause() +{ + local int Index; + local delegate CanUnpauseCriteriaMet; + + // End:0x2E + if(!AllowPausing() && Pausers.Length > 0) + { + Pausers.Length = 0; + } + Index = 0; + J0x39: + + // End:0xA9 [Loop If] + if(Index < Pausers.Length) + { + CanUnpauseCriteriaMet = Pausers[Index]; + // End:0x9B + if(CanUnpause()) + { + Pausers.Remove(Index--, 1); + } + Index++; + // [Loop Continue] + goto J0x39; + } + // End:0xD9 + if(Pausers.Length == 0) + { + WorldInfo.Pauser = none; + } + //return; +} + +// Export UGameInfo::execForceClearUnpauseDelegates(FFrame&, void* const) +native final function ForceClearUnpauseDelegates(Actor PauseActor); + +function DebugPause() +{ + local int Index; + local delegate CanUnpauseCriteriaMet; + + Index = 0; + J0x0B: + + // End:0x67 [Loop If] + if(Index < Pausers.Length) + { + CanUnpauseCriteriaMet = Pausers[Index]; + // End:0x59 + if(CanUnpause()) + { + } + Index++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function SetGameSpeed(float T) +{ + GameSpeed = FMax(T, 0.0000100); + WorldInfo.TimeDilation = GameSpeed; + SetTimer(WorldInfo.TimeDilation, true); + //return; +} + +static function bool GrabOption(out string Options, out string Result) +{ + // End:0xD1 + if(Left(Options, 1) == "?") + { + Result = Mid(Options, 1); + // End:0x68 + if(InStr(Result, "?") >= 0) + { + Result = Left(Result, InStr(Result, "?")); + } + Options = Mid(Options, 1); + // End:0xC0 + if(InStr(Options, "?") >= 0) + { + Options = Mid(Options, InStr(Options, "?")); + } + else + { + Options = ""; + } + return true; + } + else + { + return false; + } + //return ReturnValue; +} + +static function GetKeyValue(string Pair, out string Key, out string Value) +{ + // End:0x6A + if(InStr(Pair, "=") >= 0) + { + Key = Left(Pair, InStr(Pair, "=")); + Value = Mid(Pair, InStr(Pair, "=") + 1); + } + else + { + Key = Pair; + Value = ""; + } + //return; +} + +static function string ParseOption(string Options, string InKey) +{ + local string Pair, Key, Value; + + J0x00: + // End:0x68 [Loop If] + if(GrabOption(Options, Pair)) + { + GetKeyValue(Pair, Key, Value); + // End:0x65 + if(Key ~= InKey) + { + return Value; + } + // [Loop Continue] + goto J0x00; + } + return ""; + //return ReturnValue; +} + +static function bool HasOption(string Options, string InKey) +{ + local string Pair, Key, Value; + + J0x00: + // End:0x60 [Loop If] + if(GrabOption(Options, Pair)) + { + GetKeyValue(Pair, Key, Value); + // End:0x5D + if(Key ~= InKey) + { + return true; + } + // [Loop Continue] + goto J0x00; + } + return false; + //return ReturnValue; +} + +static function int GetIntOption(string Options, string ParseString, int CurrentValue) +{ + local string InOpt; + + InOpt = ParseOption(Options, ParseString); + // End:0x42 + if(InOpt != "") + { + return int(InOpt); + } + return CurrentValue; + //return ReturnValue; +} + +static event string GetDefaultGameClassPath(string MapName, string Options, string Portal) +{ + return PathName(default.Class); + //return ReturnValue; +} + +static event Class SetGameType(string MapName, string Options, string Portal) +{ + return default.Class; + //return ReturnValue; +} + +event InitGame(string Options, out string ErrorMessage) +{ + local string InOpt, LeftOpt; + local int pos; + local Class ACClass; + local AccessControl CurAC; + local OnlineGameSettings GameSettings; + + MaxPlayers = Clamp(GetIntOption(Options, "MaxPlayers", MaxPlayers), 0, MaxPlayersAllowed); + MaxSpectators = Clamp(GetIntOption(Options, "MaxSpectators", MaxSpectators), 0, MaxSpectatorsAllowed); + GameDifficulty = FMax(0.0000000, float(GetIntOption(Options, "Difficulty", int(GameDifficulty)))); + InOpt = ParseOption(Options, "GameSpeed"); + // End:0x109 + if(InOpt != "") + { + SetGameSpeed(float(InOpt)); + } + TimeLimit = Max(0, GetIntOption(Options, "TimeLimit", TimeLimit)); + BroadcastHandler = Spawn(BroadcastHandlerClass); + InOpt = ParseOption(Options, "AccessControl"); + // End:0x1CC + if(InOpt != "") + { + ACClass = Class(DynamicLoadObject(InOpt, Class'Core.Class')); + } + // End:0x1EE + if(ACClass == none) + { + ACClass = AccessControlClass; + } + LeftOpt = ParseOption(Options, "AdminName"); + InOpt = ParseOption(Options, "AdminPassword"); + // End:0x364 + if((int(WorldInfo.NetMode) == int(NM_ListenServer)) || int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + // End:0x2E9 + if(WorldInfo.IsInSeamlessTravel()) + { + // End:0x2E8 + foreach DynamicActors(Class'Engine.AccessControl', CurAC) + { + AccessControl = CurAC; + // End:0x2E8 + break; + } + } + // End:0x31B + if(AccessControl == none) + { + AccessControl = Spawn(ACClass); + } + // End:0x364 + if((AccessControl != none) && InOpt != "") + { + AccessControl.SetAdminPassword(InOpt); + } + } + InOpt = ParseOption(Options, "Mutator"); + // End:0x459 + if(InOpt != "") + { + J0x39A: + + // End:0x459 [Loop If] + if(InOpt != "") + { + pos = InStr(InOpt, ","); + // End:0x423 + if(pos > 0) + { + LeftOpt = Left(InOpt, pos); + InOpt = Right(InOpt, (Len(InOpt) - pos) - 1); + } + else + { + LeftOpt = InOpt; + InOpt = ""; + } + AddMutator(LeftOpt, true); + // [Loop Continue] + goto J0x39A; + } + } + InOpt = ParseOption(Options, "GamePassword"); + // End:0x4CD + if((InOpt != "") && AccessControl != none) + { + AccessControl.SetGamePassword(InOpt); + } + bFixedPlayerStart = (ParseOption(Options, "FixedPlayerStart")) ~= "1"; + CauseEventCommand = ParseOption(Options, "causeevent"); + // End:0x5AB + if((ParseOption(Options, "AutoTests")) ~= "1") + { + // End:0x583 + if(MyAutoTestManager == none) + { + MyAutoTestManager = Spawn(AutoTestManagerClass); + } + MyAutoTestManager.InitializeOptions(Options); + } + BugLocString = ParseOption(Options, "BugLoc"); + BugRotString = ParseOption(Options, "BugRot"); + // End:0x635 + if(BaseMutator != none) + { + BaseMutator.InitMutator(Options, ErrorMessage); + } + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x736 + if(OnlineSub != none) + { + GameInterface = OnlineSub.GameInterface; + // End:0x736 + if(NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none))) + { + GameSettings = GameInterface.GetGameSettings(PlayerReplicationInfoClass.default.SessionName); + // End:0x736 + if(GameSettings != none) + { + bUsingArbitration = GameSettings.bUsesArbitration; + } + } + } + // End:0x7C5 + if(((WorldInfo.IsConsoleBuild(0) == false) && int(WorldInfo.NetMode) != int(NM_Standalone)) && GameSettings == none) + { + ServerOptions = Options; + // End:0x7C5 + if(!ProcessServerLogin()) + { + RegisterServer(); + } + } + //return; +} + +event NotifyPendingConnectionLost() +{ + //return; +} + +function AddMutator(string mutname, optional bool bUserAdded) +{ + local Class mutClass; + local Mutator mut; + local int I; + + // End:0x1B + if(!AllowMutator(mutname)) + { + return; + } + mutClass = Class(DynamicLoadObject(mutname, Class'Core.Class')); + // End:0x5C + if(mutClass == none) + { + return; + } + // End:0x17B + if((mutClass.default.GroupNames.Length > 0) && BaseMutator != none) + { + mut = BaseMutator; + J0xA5: + + // End:0x17B [Loop If] + if(mut != none) + { + I = 0; + J0xBF: + + // End:0x150 [Loop If] + if(I < mut.GroupNames.Length) + { + // End:0x142 + if(mutClass.default.GroupNames.Find(mut.GroupNames[I]) != -1) + { + return; + } + I++; + // [Loop Continue] + goto J0xBF; + } + mut = mut.NextMutator; + // [Loop Continue] + goto J0xA5; + } + } + mut = BaseMutator; + J0x18E: + + // End:0x1F6 [Loop If] + if(mut != none) + { + // End:0x1CB + if(mut.Class == mutClass) + { + return; + } + mut = mut.NextMutator; + // [Loop Continue] + goto J0x18E; + } + mut = Spawn(mutClass); + // End:0x22A + if(mut == none) + { + return; + } + mut.bUserAdded = bUserAdded; + // End:0x279 + if(BaseMutator == none) + { + BaseMutator = mut; + } + else + { + BaseMutator.AddMutator(mut); + } + //return; +} + +function RemoveMutator(Mutator MutatorToRemove) +{ + local Mutator M; + + // End:0x42 + if(BaseMutator == MutatorToRemove) + { + BaseMutator = MutatorToRemove.NextMutator; + } + else + { + // End:0x10A + if(BaseMutator != none) + { + M = BaseMutator; + J0x64: + + // End:0x10A [Loop If] + if(M != none) + { + // End:0xDF + if(M.NextMutator == MutatorToRemove) + { + M.NextMutator = MutatorToRemove.NextMutator; + // [Explicit Break] + goto J0x10A; + } + M = M.NextMutator; + // [Loop Continue] + goto J0x64; + } + } + } + J0x10A: + + //return; +} + +function ProcessServerTravel(string URL, optional bool bAbsolute) +{ + local PlayerController LocalPlayer; + local bool bSeamless; + local string NextMap, EncodedPlayerName; + local Guid NextMapGuid; + local int OptionStart; + + bLevelChange = true; + EndLogging("mapchange"); + bSeamless = bUseSeamlessTravel && WorldInfo.TimeSeconds < 172800.0000000; + // End:0xB3 + if(InStr(Caps(URL), "?RESTART") != -1) + { + NextMap = string(WorldInfo.GetPackageName()); + } + else + { + OptionStart = InStr(URL, "?"); + // End:0xF7 + if(OptionStart == -1) + { + NextMap = URL; + } + else + { + NextMap = Left(URL, OptionStart); + } + } + NextMapGuid = GetPackageGuid(name(NextMap)); + LocalPlayer = ProcessClientTravel(URL, NextMapGuid, bSeamless, bAbsolute); + WorldInfo.NextURL = URL; + // End:0x303 + if((int(WorldInfo.NetMode) == int(NM_ListenServer)) && LocalPlayer != none) + { + EncodedPlayerName = LocalPlayer.GetDefaultURL("Name"); + Class'Engine.GameEngine'.static.EncodeURLString(EncodedPlayerName); + WorldInfo.NextURL $= ((((((("?Team=" $ LocalPlayer.GetDefaultURL("Team")) $ "?Name=") $ EncodedPlayerName) $ "?Class=") $ LocalPlayer.GetDefaultURL("Class")) $ "?Character=") $ LocalPlayer.GetDefaultURL("Character")); + } + // End:0x33B + if(AccessControl != none) + { + AccessControl.NotifyServerTravel(bSeamless); + } + ClearOnlineDelegates(); + // End:0x3BE + if(bSeamless) + { + WorldInfo.SeamlessTravel(WorldInfo.NextURL, bAbsolute); + WorldInfo.NextURL = ""; + } + else + { + // End:0x436 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && int(WorldInfo.NetMode) != int(NM_ListenServer)) + { + WorldInfo.NextSwitchCountdown = 0.0000000; + } + } + //return; +} + +function PlayerController ProcessClientTravel(out string URL, Guid NextMapGuid, bool bSeamless, bool bAbsolute) +{ + local PlayerController P, LP; + + // End:0xFA + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', P) + { + // End:0xA1 + if(NetConnection(P.Player) != none) + { + P.ClientTravel(URL, 2, bSeamless, NextMapGuid); + // End:0xF9 + continue; + } + LP = P; + P.PreClientTravel(URL, ((bAbsolute) ? 0 : 2), bSeamless); + } + return LP; + //return ReturnValue; +} + +function bool RequiresPassword() +{ + return (AccessControl != none) && AccessControl.RequiresPassword(); + //return ReturnValue; +} + +event PreLogin(string Options, string Address, const UniqueNetId UniqueId, bool bSupportsAuth, out string ErrorMessage) +{ + local bool bSpectator, bPerfTesting; + + // End:0xA7 + if(((int(WorldInfo.NetMode) != int(NM_Standalone)) && bUsingArbitration) && bHasArbitratedHandshakeBegun) + { + ErrorMessage = PathName(WorldInfo.Game.GameMessageClass) $ ".ArbitrationMessage"; + return; + } + // End:0x113 + if((AccessControl != none) && AccessControl.IsIDBanned(UniqueId)) + { + ErrorMessage = "Engine.AccessControl.SessionBanned"; + return; + } + bPerfTesting = (ParseOption(Options, "AutomatedPerfTesting")) ~= "1"; + bSpectator = (bPerfTesting || (ParseOption(Options, "SpectatorOnly")) ~= "1") || (ParseOption(Options, "CauseEvent")) ~= "FlyThrough"; + // End:0x225 + if(AccessControl != none) + { + AccessControl.PreLogin(Options, Address, UniqueId, bSupportsAuth, ErrorMessage, bSpectator); + } + //return; +} + +// Export UGameInfo::execPauseLogin(FFrame&, void* const) +native static final function Player PauseLogin(); + +// Export UGameInfo::execResumeLogin(FFrame&, void* const) +native static final function ResumeLogin(Player InPlayer); + +// Export UGameInfo::execRejectLogin(FFrame&, void* const) +native static final function RejectLogin(Player InPlayer, string Error); + +function bool AtCapacity(bool bSpectator) +{ + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + return false; + } + // End:0x8C + if(bSpectator) + { + return (NumSpectators >= MaxSpectators) && (int(WorldInfo.NetMode) != int(NM_ListenServer)) || NumPlayers > 0; + } + else + { + return (MaxPlayers > 0) && (GetNumPlayers()) >= MaxPlayers; + } + //return ReturnValue; +} + +// Export UGameInfo::execGetNextPlayerID(FFrame&, void* const) +native final function int GetNextPlayerID(); + +function PlayerController SpawnPlayerController(Vector SpawnLocation, Rotator SpawnRotation) +{ + return Spawn(PlayerControllerClass,,, SpawnLocation, SpawnRotation); + //return ReturnValue; +} + +event PlayerController Login(string Portal, string Options, const UniqueNetId UniqueId, out string ErrorMessage, const optional UniqueNetId ConsoleUniqueId) +{ + local NavigationPoint StartSpot; + local PlayerController NewPlayer; + local string InName, inCharacter, InPassword; + local byte InTeam; + local bool bSpectator, bAdmin, bPerfTesting, bSimplePerfRun; + local Rotator SpawnRotation; + local UniqueNetId ZeroId; + + bAdmin = false; + // End:0x89 + if(bUsingArbitration && bHasArbitratedHandshakeBegun) + { + ErrorMessage = PathName(WorldInfo.Game.GameMessageClass) $ ".ArbitrationMessage"; + return none; + } + // End:0xC9 + if(BaseMutator != none) + { + BaseMutator.ModifyLogin(Portal, Options); + } + bPerfTesting = (ParseOption(Options, "AutomatedPerfTesting")) ~= "1"; + bSimplePerfRun = (ParseOption(Options, "SimplePerfRun")) ~= "1"; + bSpectator = (bPerfTesting && !bSimplePerfRun) || (ParseOption(Options, "SpectatorOnly")) ~= "1"; + InName = ParseOption(Options, "Name"); + Class'Engine.GameEngine'.static.DecodeURLString(InName); + InName = Left(InName, 20); + InTeam = byte(GetIntOption(Options, "Team", 255)); + InPassword = ParseOption(Options, "Password"); + // End:0x278 + if(AccessControl != none) + { + bAdmin = AccessControl.ParseAdminOptions(Options); + } + // End:0x2FD + if(!bAdmin && AtCapacity(bSpectator)) + { + ErrorMessage = PathName(WorldInfo.Game.GameMessageClass) $ ".MaxedOutMessage"; + return none; + } + // End:0x3BD + if((WorldInfo.Game.AccessControl != none) && WorldInfo.Game.AccessControl.IsIDBanned(UniqueId)) + { + ErrorMessage = "Engine.AccessControl.SessionBanned"; + return none; + } + // End:0x3E6 + if(bAdmin && AtCapacity(false)) + { + bSpectator = true; + } + InTeam = PickTeam(InTeam, none); + StartSpot = FindPlayerStart(none, InTeam, Portal); + // End:0x49A + if(StartSpot == none) + { + ErrorMessage = PathName(WorldInfo.Game.GameMessageClass) $ ".FailedPlaceMessage"; + return none; + } + SpawnRotation.Yaw = StartSpot.Rotation.Yaw; + NewPlayer = SpawnPlayerController(StartSpot.Location, SpawnRotation); + // End:0x592 + if(NewPlayer == none) + { + ErrorMessage = PathName(WorldInfo.Game.GameMessageClass) $ ".FailedSpawnMessage"; + return none; + } + NewPlayer.StartSpot = StartSpot; + NewPlayer.PlayerReplicationInfo.PlayerID = GetNextPlayerID(); + // End:0x6B0 + if((AccessControl == none) || !AccessControl.IsPendingAuth(UniqueId)) + { + NewPlayer.PlayerReplicationInfo.SetUniqueId(UniqueId); + NewPlayer.PlayerReplicationInfo.ConsoleUniqueId = ConsoleUniqueId; + } + // End:0x7BE + if(((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) && UniqueId != ZeroId) + { + WorldInfo.Game.OnlineSub.GameInterface.RegisterPlayer(PlayerReplicationInfoClass.default.SessionName, UniqueId, HasOption(Options, "bIsFromInvite")); + } + RecalculateSkillRating(); + // End:0x822 + if(InName == "") + { + InName = DefaultPlayerName $ string(NewPlayer.PlayerReplicationInfo.PlayerID); + } + ChangeName(NewPlayer, InName, false); + inCharacter = ParseOption(Options, "Character"); + NewPlayer.SetCharacter(inCharacter); + // End:0x9CA + if((bSpectator || NewPlayer.PlayerReplicationInfo.bOnlySpectator) || !ChangeTeam(NewPlayer, int(InTeam), false)) + { + NewPlayer.GotoState('Spectating'); + NewPlayer.PlayerReplicationInfo.bOnlySpectator = true; + NewPlayer.PlayerReplicationInfo.bIsSpectator = true; + NewPlayer.PlayerReplicationInfo.bOutOfLives = true; + return NewPlayer; + } + // End:0xA37 + if((AccessControl != none) && AccessControl.AdminLogin(NewPlayer, InPassword)) + { + AccessControl.AdminEntered(NewPlayer); + } + // End:0xA71 + if(bDelayedStart) + { + NewPlayer.GotoState('PlayerWaiting'); + return NewPlayer; + } + return NewPlayer; + //return ReturnValue; +} + +function StartMatch() +{ + local Actor A; + + // End:0x2E + if(MyAutoTestManager != none) + { + MyAutoTestManager.StartMatch(); + } + // End:0x67 + foreach AllActors(Class'Engine.Actor', A) + { + A.MatchStarting(); + } + StartHumans(); + StartBots(); + bWaitingToStartMatch = false; + StartOnlineGame(); + WorldInfo.NotifyMatchStarted(); + //return; +} + +function StartOnlineGame() +{ + local PlayerController PC; + + // End:0x10B + if(NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none))) + { + // End:0x98 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x97 + if(!PC.IsLocalPlayerController()) + { + PC.ClientStartOnlineGame(); + } + } + GameInterface.AddStartOnlineGameCompleteDelegate(OnStartOnlineGameComplete); + GameInterface.StartOnlineGame(PlayerReplicationInfoClass.default.SessionName); + } + else + { + GameReplicationInfo.StartMatch(); + } + //return; +} + +function OnStartOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + local PlayerController PC; + local string StatGuid; + + GameInterface.ClearStartOnlineGameCompleteDelegate(OnStartOnlineGameComplete); + // End:0x147 + if(bWasSuccessful && NotEqual_InterfaceInterface(OnlineSub.StatsInterface, OnlineStatsInterface(none))) + { + StatGuid = OnlineSub.StatsInterface.GetHostStatGuid(); + // End:0x147 + if(StatGuid != "") + { + // End:0x146 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x145 + if(PC.IsLocalPlayerController() == false) + { + PC.ClientRegisterHostStatGuid(StatGuid); + } + } + } + } + GameReplicationInfo.StartMatch(); + //return; +} + +function StartHumans() +{ + local PlayerController P; + + // End:0xA1 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', P) + { + // End:0xA0 + if(P.Pawn == none) + { + // End:0x6B + if(bGameEnded) + { + return; + // End:0xA0 + continue; + } + // End:0xA0 + if(P.CanRestartPlayer()) + { + RestartPlayer(P); + } + } + } + //return; +} + +function StartBots() +{ + local Controller P; + + // End:0xE8 + foreach WorldInfo.AllControllers(Class'Engine.Controller', P) + { + // End:0xE7 + if(P.bIsPlayer && !P.IsA('PlayerController')) + { + // End:0xBC + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + RestartPlayer(P); + // End:0xE7 + continue; + } + P.GotoState('Dead', 'MPStart'); + } + } + //return; +} + +function RestartPlayer(Controller NewPlayer) +{ + local NavigationPoint StartSpot; + local int TeamNum, Idx; + local array Events; + local SeqEvent_PlayerSpawned SpawnedEvent; + local LocalPlayer LP; + local PlayerController PC; + + // End:0x65 + if((bRestartLevel && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && int(WorldInfo.NetMode) != int(NM_ListenServer)) + { + return; + } + TeamNum = (((NewPlayer.PlayerReplicationInfo == none) || NewPlayer.PlayerReplicationInfo.Team == none) ? 255 : NewPlayer.PlayerReplicationInfo.Team.TeamIndex); + StartSpot = FindPlayerStart(NewPlayer, byte(TeamNum)); + // End:0x1A3 + if(StartSpot == none) + { + // End:0x1A1 + if(NewPlayer.StartSpot != none) + { + StartSpot = NewPlayer.StartSpot; + } + else + { + return; + } + } + // End:0x202 + if(NewPlayer.Pawn == none) + { + NewPlayer.Pawn = SpawnDefaultPawnFor(NewPlayer, StartSpot); + } + // End:0x29E + if(NewPlayer.Pawn == none) + { + NewPlayer.GotoState('Dead'); + // End:0x29B + if(PlayerController(NewPlayer) != none) + { + PlayerController(NewPlayer).ClientGotoState('Dead', 'Begin'); + } + } + else + { + NewPlayer.Pawn.SetAnchor(StartSpot); + // End:0x340 + if(PlayerController(NewPlayer) != none) + { + PlayerController(NewPlayer).TimeMargin = -0.1000000; + StartSpot.AnchoredPawn = none; + } + NewPlayer.Pawn.LastStartSpot = PlayerStart(StartSpot); + NewPlayer.Pawn.LastStartTime = WorldInfo.TimeSeconds; + NewPlayer.Possess(NewPlayer.Pawn, false); + NewPlayer.Pawn.PlayTeleportEffect(true, true); + NewPlayer.ClientSetRotation(NewPlayer.Pawn.Rotation, true); + // End:0x4EB + if(!WorldInfo.bNoDefaultInventoryForPlayer) + { + AddDefaultInventory(NewPlayer.Pawn); + } + SetPlayerDefaults(NewPlayer.Pawn); + // End:0x666 + if(WorldInfo.GetGameSequence() != none) + { + WorldInfo.GetGameSequence().FindSeqObjectsByClass(Class'Engine.SeqEvent_PlayerSpawned', true, Events); + Idx = 0; + J0x58B: + + // End:0x666 [Loop If] + if(Idx < Events.Length) + { + SpawnedEvent = SeqEvent_PlayerSpawned(Events[Idx]); + // End:0x658 + if((SpawnedEvent != none) && SpawnedEvent.CheckActivate(NewPlayer, NewPlayer)) + { + SpawnedEvent.SpawnPoint = StartSpot; + SpawnedEvent.PopulateLinkedVariableValues(); + } + Idx++; + // [Loop Continue] + goto J0x58B; + } + } + } + PC = PlayerController(NewPlayer); + // End:0x7A1 + if(PC != none) + { + LP = LocalPlayer(PC.Player); + // End:0x7A1 + if(LP != none) + { + LP.RemoveAllPostProcessingChains(); + LP.InsertPostProcessingChain(LP.Outer.GetWorldPostProcessChain(), -1, true); + // End:0x7A1 + if(PC.myHUD != none) + { + PC.myHUD.NotifyBindPostProcessEffects(); + } + } + } + //return; +} + +function Pawn SpawnDefaultPawnFor(Controller NewPlayer, NavigationPoint StartSpot) +{ + local Class DefaultPlayerClass; + local Rotator StartRotation; + local Pawn ResultPawn; + + DefaultPlayerClass = GetDefaultPlayerClass(NewPlayer); + StartRotation.Yaw = StartSpot.Rotation.Yaw; + ResultPawn = Spawn(DefaultPlayerClass,,, StartSpot.Location, StartRotation); + // End:0xC2 + if(ResultPawn == none) + { + } + return ResultPawn; + //return ReturnValue; +} + +function Class GetDefaultPlayerClass(Controller C) +{ + return DefaultPawnClass; + //return ReturnValue; +} + +function ReplicateStreamingStatus(PlayerController PC) +{ + local int LevelIndex; + local LevelStreaming TheLevel; + + // End:0x336 + if((LocalPlayer(PC.Player) == none) && ChildConnection(PC.Player) == none) + { + // End:0xE6 + if(WorldInfo.CommittedPersistentLevelName != 'None') + { + PC.ClientPrepareMapChange(WorldInfo.CommittedPersistentLevelName, true, true); + PC.ClientCommitMapChange(); + } + // End:0x24B + if(WorldInfo.StreamingLevels.Length > 0) + { + LevelIndex = 0; + J0x116: + + // End:0x22C [Loop If] + if(LevelIndex < WorldInfo.StreamingLevels.Length) + { + TheLevel = WorldInfo.StreamingLevels[LevelIndex]; + // End:0x21E + if(TheLevel != none) + { + PC.ClientUpdateLevelStreamingStatus(TheLevel.PackageName, TheLevel.bShouldBeLoaded, TheLevel.bShouldBeVisible, TheLevel.bShouldBlockOnLoad); + } + LevelIndex++; + // [Loop Continue] + goto J0x116; + } + PC.ClientFlushLevelStreaming(); + } + // End:0x336 + if(WorldInfo.PreparingLevelNames.Length > 0) + { + LevelIndex = 0; + J0x27B: + + // End:0x336 [Loop If] + if(LevelIndex < WorldInfo.PreparingLevelNames.Length) + { + PC.ClientPrepareMapChange(WorldInfo.PreparingLevelNames[LevelIndex], LevelIndex == 0, LevelIndex == (WorldInfo.PreparingLevelNames.Length - 1)); + LevelIndex++; + // [Loop Continue] + goto J0x27B; + } + } + } + //return; +} + +function GenericPlayerInitialization(Controller C) +{ + local PlayerController PC; + + PC = PlayerController(C); + // End:0xF8 + if(PC != none) + { + UpdateBestNextHosts(); + UpdateGameplayMuteList(PC); + PC.ClientSetHUD(HUDType); + PC.ClientSetSecondaryHUD(SecondaryHUDType); + ReplicateStreamingStatus(PC); + // End:0xD9 + if(CoverReplicatorBase != none) + { + PC.SpawnCoverReplicator(); + } + PC.ClientSetOnlineStatus(); + } + // End:0x12F + if(BaseMutator != none) + { + BaseMutator.NotifyLogin(C); + } + //return; +} + +function int BestNextHostSort(PlayerController A, PlayerController B) +{ + local int Result; + + // End:0x11C + if(((A.ConnectedPeers.Length == B.ConnectedPeers.Length) && A.PlayerReplicationInfo != none) && B.PlayerReplicationInfo != none) + { + Result = FCeil(float(B.PlayerReplicationInfo.StartTime)) - FCeil(float(A.PlayerReplicationInfo.StartTime)); + } + else + { + Result = A.ConnectedPeers.Length - B.ConnectedPeers.Length; + } + return Result; + //return ReturnValue; +} + +function UpdateBestNextHosts() +{ + local PlayerController PC; + local array SortedPCList; + local UniqueNetId SortedPlayerIdList[10], ZeroId; + local int Idx, NumEntries; + + // End:0x103 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x102 + if(((!PC.IsLocalPlayerController() && PC.PlayerReplicationInfo != none) && PC.PlayerReplicationInfo.UniqueId != ZeroId) && PC.IsPrimaryPlayer()) + { + SortedPCList.AddItem(PC); + } + } + SortedPCList.Sort(BestNextHostSort); + NumEntries = Min(SortedPCList.Length, 10); + Idx = 0; + J0x145: + + // End:0x1BB [Loop If] + if(Idx < NumEntries) + { + SortedPlayerIdList[Idx] = SortedPCList[Idx].PlayerReplicationInfo.UniqueId; + Idx++; + // [Loop Continue] + goto J0x145; + } + // End:0x247 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x246 + if(!PC.IsLocalPlayerController()) + { + PC.ClientUpdateBestNextHosts(SortedPlayerIdList, byte(NumEntries)); + } + } + //return; +} + +event PostLogin(PlayerController NewPlayer) +{ + local string Address, StatGuid; + local int pos, I; + local Sequence GameSeq; + local array AllInterpActions; + local int HidePlayer, HideHUD, DisableMovement, DisableTurning, DisableInput; + + // End:0x45 + if(NewPlayer.PlayerReplicationInfo.bOnlySpectator) + { + NumSpectators++; + } + else + { + // End:0x99 + if(WorldInfo.IsInSeamlessTravel() || NewPlayer.HasClientLoadedCurrentWorld()) + { + NumPlayers++; + } + else + { + NumTravellingPlayers++; + } + } + UpdateGameSettingsCounts(); + Address = NewPlayer.GetPlayerNetworkAddress(); + pos = InStr(Address, ":"); + NewPlayer.PlayerReplicationInfo.SavedNetworkAddress = ((pos > 0) ? Left(Address, pos) : Address); + FindInactivePRI(NewPlayer); + // End:0x1C4 + if(!bDelayedStart) + { + bRestartLevel = false; + // End:0x19C + if(bWaitingToStartMatch) + { + StartMatch(); + } + else + { + RestartPlayer(NewPlayer); + } + bRestartLevel = default.bRestartLevel; + } + // End:0x24F + if(NewPlayer.Pawn != none) + { + NewPlayer.Pawn.ClientSetRotation(NewPlayer.Pawn.Rotation); + } + NewPlayer.ClientCapBandwidth(NewPlayer.Player.CurrentNetSpeed); + UpdateNetSpeeds(); + GenericPlayerInitialization(NewPlayer); + // End:0x39F + if((GameReplicationInfo.bMatchHasBegun && OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.StatsInterface, OnlineStatsInterface(none))) + { + StatGuid = OnlineSub.StatsInterface.GetHostStatGuid(); + // End:0x39F + if(StatGuid != "") + { + NewPlayer.ClientRegisterHostStatGuid(StatGuid); + } + } + // End:0x3CE + if(bRequiresPushToTalk) + { + NewPlayer.ClientStopNetworkedVoice(); + } + else + { + NewPlayer.ClientStartNetworkedVoice(); + } + // End:0x44D + if(NewPlayer.PlayerReplicationInfo.bOnlySpectator) + { + NewPlayer.ClientGotoState('Spectating'); + } + GameSeq = WorldInfo.GetGameSequence(); + // End:0x523 + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'Engine.SeqAct_Interp', true, AllInterpActions); + I = 0; + J0x4C2: + + // End:0x523 [Loop If] + if(I < AllInterpActions.Length) + { + SeqAct_Interp(AllInterpActions[I]).AddPlayerToDirectorTracks(NewPlayer); + I++; + // [Loop Continue] + goto J0x4C2; + } + } + // End:0x5B9 + if(ShouldStartInCinematicMode(HidePlayer, HideHUD, DisableMovement, DisableTurning, DisableInput)) + { + NewPlayer.SetCinematicMode(true, HidePlayer == 1, HideHUD == 1, DisableMovement == 1, DisableTurning == 1, DisableInput == 1); + } + // End:0x5F0 + if(AccessControl != none) + { + AccessControl.PostLogin(NewPlayer); + } + //return; +} + +function UpdateNetSpeeds() +{ + local int NewNetSpeed; + local PlayerController PC; + local OnlineGameSettings GameSettings; + + // End:0x68 + if(NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none))) + { + GameSettings = GameInterface.GetGameSettings(PlayerReplicationInfoClass.default.SessionName); + } + // End:0xF3 + if(((int(WorldInfo.NetMode) == int(NM_DedicatedServer)) || int(WorldInfo.NetMode) == int(NM_Standalone)) || (GameSettings != none) && GameSettings.bIsLanMatch) + { + return; + } + // End:0x13B + if((WorldInfo.TimeSeconds - LastNetSpeedUpdateTime) < 1.0000000) + { + SetTimer(1.0000000, false, 'UpdateNetSpeeds'); + return; + } + LastNetSpeedUpdateTime = WorldInfo.TimeSeconds; + NewNetSpeed = CalculatedNetSpeed(); + // End:0x1FF + if(AdjustedNetSpeed != NewNetSpeed) + { + AdjustedNetSpeed = NewNetSpeed; + // End:0x1FE + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + PC.SetNetSpeed(AdjustedNetSpeed); + } + } + //return; +} + +function int CalculatedNetSpeed() +{ + return Clamp(TotalNetBandwidth / Max(NumPlayers, 1), MinDynamicBandwidth, MaxDynamicBandwidth); + //return ReturnValue; +} + +event PreExit() +{ + // End:0x2E + if(AccessControl != none) + { + AccessControl.NotifyExit(); + } + ClearOnlineDelegates(); + //return; +} + +function Logout(Controller Exiting) +{ + local PlayerController PC; + local int PCIndex; + + PC = PlayerController(Exiting); + // End:0x20A + if(PC != none) + { + // End:0xA1 + if((AccessControl != none) && AccessControl.AdminLogout(PlayerController(Exiting))) + { + AccessControl.AdminExited(PlayerController(Exiting)); + } + // End:0x10C + if((PC.PlayerReplicationInfo != none) && PC.PlayerReplicationInfo.bOnlySpectator) + { + NumSpectators--; + } + else + { + // End:0x160 + if(WorldInfo.IsInSeamlessTravel() || PC.HasClientLoadedCurrentWorld()) + { + NumPlayers--; + } + else + { + NumTravellingPlayers--; + } + UpdateGameSettingsCounts(); + } + // End:0x1A2 + if((bUsingArbitration && bHasArbitratedHandshakeBegun) && !bHasEndGameHandshakeBegun) + { + } + UnregisterPlayer(PC); + // End:0x20A + if(bUsingArbitration) + { + PCIndex = ArbitrationPCs.Find(PC); + // End:0x20A + if(PCIndex != -1) + { + ArbitrationPCs.Remove(PCIndex, 1); + } + } + } + // End:0x241 + if(BaseMutator != none) + { + BaseMutator.NotifyLogout(Exiting); + } + // End:0x25A + if(PC != none) + { + UpdateNetSpeeds(); + } + //return; +} + +function UnregisterPlayer(PlayerController PC) +{ + local UniqueNetId ZeroId; + + // End:0x1AD + if((((((int(WorldInfo.NetMode) != int(NM_Standalone)) && NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none))) && PC != none) && PC.PlayerReplicationInfo != none) && PC.PlayerReplicationInfo.UniqueId != ZeroId) && GameInterface.GetGameSettings(PC.PlayerReplicationInfo.SessionName) != none) + { + GameInterface.UnregisterPlayer(PC.PlayerReplicationInfo.SessionName, PC.PlayerReplicationInfo.UniqueId); + } + //return; +} + +event AcceptInventory(Pawn PlayerPawn) +{ + //return; +} + +event AddDefaultInventory(Pawn P) +{ + P.AddDefaultInventory(); + // End:0x43 + if(P.InvManager == none) + { + } + //return; +} + +function Mutate(string MutateString, PlayerController Sender) +{ + // End:0x40 + if(BaseMutator != none) + { + BaseMutator.Mutate(MutateString, Sender); + } + //return; +} + +function SetPlayerDefaults(Pawn PlayerPawn) +{ + PlayerPawn.AirControl = PlayerPawn.default.AirControl; + PlayerPawn.GroundSpeed = PlayerPawn.default.GroundSpeed; + PlayerPawn.WaterSpeed = PlayerPawn.default.WaterSpeed; + PlayerPawn.AirSpeed = PlayerPawn.default.AirSpeed; + PlayerPawn.Acceleration = PlayerPawn.default.Acceleration; + PlayerPawn.AccelRate = PlayerPawn.default.AccelRate; + PlayerPawn.JumpZ = PlayerPawn.default.JumpZ; + // End:0x1E2 + if(BaseMutator != none) + { + BaseMutator.ModifyPlayer(PlayerPawn); + } + PlayerPawn.PhysicsVolume.ModifyPlayer(PlayerPawn); + //return; +} + +function NotifyKilled(Controller Killer, Controller Killed, Pawn KilledPawn, Class DamageType) +{ + local Controller C; + + // End:0x78 + foreach WorldInfo.AllControllers(Class'Engine.Controller', C) + { + C.NotifyKilled(Killer, Killed, KilledPawn, DamageType); + } + //return; +} + +function Killed(Controller Killer, Controller KilledPlayer, Pawn KilledPawn, Class DamageType) +{ + // End:0x11F + if((KilledPlayer != none) && KilledPlayer.bIsPlayer) + { + KilledPlayer.PlayerReplicationInfo.IncrementDeaths(); + KilledPlayer.PlayerReplicationInfo.SetNetUpdateTime(FMin(KilledPlayer.PlayerReplicationInfo.NetUpdateTime, WorldInfo.RealTimeSeconds + (0.3000000 * FRand()))); + BroadcastDeathMessage(Killer, KilledPlayer, DamageType); + } + // End:0x14A + if(KilledPlayer != none) + { + ScoreKill(Killer, KilledPlayer); + } + DiscardInventory(KilledPawn, Killer); + NotifyKilled(Killer, KilledPlayer, KilledPawn, DamageType); + //return; +} + +function bool PreventDeath(Pawn KilledPawn, Controller Killer, Class DamageType, Vector HitLocation) +{ + // End:0x11 + if(BaseMutator == none) + { + return false; + } + return BaseMutator.PreventDeath(KilledPawn, Killer, DamageType, HitLocation); + //return ReturnValue; +} + +function BroadcastDeathMessage(Controller Killer, Controller Other, Class DamageType) +{ + // End:0x68 + if((Killer == Other) || Killer == none) + { + BroadcastLocalized(self, DeathMessageClass, 1, none, Other.PlayerReplicationInfo, DamageType); + } + else + { + BroadcastLocalized(self, DeathMessageClass, 0, Killer.PlayerReplicationInfo, Other.PlayerReplicationInfo, DamageType); + } + //return; +} + +function Kick(string S) +{ + // End:0x37 + if(AccessControl != none) + { + AccessControl.Kick(S); + } + //return; +} + +function KickBan(string S) +{ + // End:0x37 + if(AccessControl != none) + { + AccessControl.KickBan(S); + } + //return; +} + +function bool CanSpectate(PlayerController Viewer, PlayerReplicationInfo ViewTarget) +{ + return true; + //return ReturnValue; +} + +function ReduceDamage(out int Damage, Pawn injured, Controller InstigatedBy, Vector HitLocation, out Vector Momentum, Class DamageType, Actor DamageCauser) +{ + local int OriginalDamage; + + OriginalDamage = Damage; + // End:0x7B + if(injured.PhysicsVolume.bNeutralZone || injured.InGodMode()) + { + Damage = 0; + return; + } + // End:0xF1 + if(BaseMutator != none) + { + BaseMutator.NetDamage(OriginalDamage, Damage, injured, InstigatedBy, HitLocation, Momentum, DamageType, DamageCauser); + } + //return; +} + +function bool CheckRelevance(Actor Other) +{ + // End:0x11 + if(BaseMutator == none) + { + return true; + } + return BaseMutator.CheckRelevance(Other); + //return ReturnValue; +} + +function bool ShouldRespawn(PickupFactory Other) +{ + return int(WorldInfo.NetMode) != int(NM_Standalone); + //return ReturnValue; +} + +function bool PickupQuery(Pawn Other, Class ItemClass, Actor Pickup) +{ + local byte bAllowPickup; + + // End:0x63 + if((BaseMutator != none) && BaseMutator.OverridePickupQuery(Other, ItemClass, Pickup, bAllowPickup)) + { + return bool(bAllowPickup); + } + // End:0x8C + if(Other.InvManager == none) + { + return false; + } + else + { + return Other.InvManager.HandlePickupQuery(ItemClass, Pickup); + } + //return ReturnValue; +} + +function DiscardInventory(Pawn Other, optional Controller Killer) +{ + // End:0x59 + if(Other.InvManager != none) + { + Other.InvManager.DiscardInventory(); + } + //return; +} + +function ChangeName(Controller Other, coerce string S, bool bNameChange) +{ + // End:0x12 + if(S == "") + { + return; + } + Other.PlayerReplicationInfo.SetPlayerName(S); + //return; +} + +function bool ChangeTeam(Controller Other, int N, bool bNewTeam) +{ + return true; + //return ReturnValue; +} + +function byte PickTeam(byte Current, Controller C) +{ + return Current; + //return ReturnValue; +} + +function SendPlayer(PlayerController aPlayer, string URL) +{ + aPlayer.ClientTravel(URL, 2); + //return; +} + +function string GetNextMap() +{ + //return ReturnValue; +} + +function bool GetTravelType() +{ + return false; + //return ReturnValue; +} + +function RestartGame() +{ + local string NextMap, TransitionMapCmdLine, URLString; + local int URLMapLen, MapNameLen; + + // End:0x26 + if(bUsingArbitration) + { + // End:0x24 + if(bIsEndGameHandshakeComplete) + { + NotifyArbitratedMatchEnd(); + } + return; + } + // End:0x5B + if((BaseMutator != none) && BaseMutator.HandleRestartGame()) + { + return; + } + // End:0x6A + if(bGameRestarted) + { + return; + } + bGameRestarted = true; + // End:0x3CF + if(bChangeLevels && !bAlreadyChanged) + { + bAlreadyChanged = true; + // End:0xFF + if((MyAutoTestManager != none) && MyAutoTestManager.bUsingAutomatedTestingMapList) + { + NextMap = MyAutoTestManager.GetNextAutomatedTestingMap(); + } + else + { + NextMap = GetNextMap(); + } + // End:0x3CF + if(NextMap != "") + { + // End:0x18E + if((MyAutoTestManager == none) || !MyAutoTestManager.bUsingAutomatedTestingMapList) + { + WorldInfo.ServerTravel(NextMap, GetTravelType()); + } + else + { + // End:0x2DB + if(!MyAutoTestManager.bAutomatedTestingWithOpen) + { + URLString = WorldInfo.GetLocalURL(); + URLMapLen = Len(URLString); + MapNameLen = InStr(URLString, "?"); + // End:0x247 + if(MapNameLen != -1) + { + URLString = Right(URLString, URLMapLen - MapNameLen); + } + TransitionMapCmdLine = ((NextMap $ URLString) $ "?AutomatedTestingMapIndex=") $ string(MyAutoTestManager.AutomatedTestingMapIndex); + WorldInfo.ServerTravel(TransitionMapCmdLine, GetTravelType()); + } + else + { + TransitionMapCmdLine = (((("?AutomatedTestingMapIndex=" $ string(MyAutoTestManager.AutomatedTestingMapIndex)) $ "?NumberOfMatchesPlayed=") $ string(MyAutoTestManager.NumberOfMatchesPlayed)) $ "?NumMapListCyclesDone=") $ string(MyAutoTestManager.NumMapListCyclesDone); + ConsoleCommand(("open " $ NextMap) $ TransitionMapCmdLine); + } + } + return; + } + } + WorldInfo.ServerTravel("?Restart", GetTravelType()); + //return; +} + +event Broadcast(Actor Sender, coerce string msg, optional name Type) +{ + // End:0x4A + if(BroadcastHandler != none) + { + BroadcastHandler.Broadcast(Sender, msg, Type); + } + //return; +} + +function BroadcastTeam(Controller Sender, coerce string msg, optional name Type) +{ + // End:0x4A + if(BroadcastHandler != none) + { + BroadcastHandler.BroadcastTeam(Sender, msg, Type); + } + //return; +} + +event BroadcastLocalized(Actor Sender, Class Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject) +{ + // End:0x68 + if(BroadcastHandler != none) + { + BroadcastHandler.AllowBroadcastLocalized(Sender, Message, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject); + } + //return; +} + +event BroadcastLocalizedTeam(int TeamIndex, Actor Sender, Class Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject) +{ + // End:0x71 + if(BroadcastHandler != none) + { + BroadcastHandler.AllowBroadcastLocalizedTeam(TeamIndex, Sender, Message, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject); + } + //return; +} + +function bool CheckModifiedEndGame(PlayerReplicationInfo Winner, string Reason) +{ + return (BaseMutator != none) && !BaseMutator.CheckEndGame(Winner, Reason); + //return ReturnValue; +} + +function bool CheckEndGame(PlayerReplicationInfo Winner, string Reason) +{ + local Controller P; + + // End:0x21 + if(CheckModifiedEndGame(Winner, Reason)) + { + return false; + } + // End:0x77 + foreach WorldInfo.AllControllers(Class'Engine.Controller', P) + { + P.GameHasEnded(); + } + return true; + //return ReturnValue; +} + +function WriteOnlineStats() +{ + local PlayerController PC; + local OnlineGameSettings CurrentSettings; + + // End:0x1A0 + if(NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none))) + { + CurrentSettings = GameInterface.GetGameSettings(PlayerReplicationInfoClass.default.SessionName); + // End:0x1A0 + if((CurrentSettings != none) && CurrentSettings.bUsesStats) + { + // End:0x11E + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x11D + if(PC.IsLocalPlayerController() == false) + { + PC.ClientWriteLeaderboardStats(OnlineStatsWriteClass); + } + } + // End:0x19F + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x19E + if(PC.IsLocalPlayerController()) + { + PC.ClientWriteLeaderboardStats(OnlineStatsWriteClass); + } + } + } + } + //return; +} + +function WriteOnlinePlayerScores() +{ + local PlayerController PC; + + // End:0x6E + if(bUsingArbitration) + { + // End:0x6A + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + PC.ClientWriteOnlinePlayerScores(ArbitratedLeaderboardId); + } + } + else + { + // End:0xF0 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0xEF + if(PC.IsLocalPlayerController()) + { + PC.ClientWriteOnlinePlayerScores(LeaderboardId); + // End:0xF0 + break; + } + } + } + //return; +} + +function EndGame(PlayerReplicationInfo Winner, string Reason) +{ + // End:0x2F + if(!CheckEndGame(Winner, Reason)) + { + bOverTime = true; + return; + } + SetTimer(1.5000000, false, 'PerformEndGameHandling'); + bGameEnded = true; + EndLogging(Reason); + //return; +} + +function PerformEndGameHandling() +{ + // End:0x6D + if(NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none))) + { + WriteOnlineStats(); + WriteOnlinePlayerScores(); + EndOnlineGame(); + // End:0x6D + if(bUsingArbitration) + { + PendingArbitrationPCs.Length = 0; + ArbitrationPCs.Length = 0; + NotifyArbitratedMatchEnd(); + } + } + //return; +} + +function EndOnlineGame() +{ + local PlayerController PC; + + GameReplicationInfo.EndGame(); + // End:0xF6 + if(NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none))) + { + // End:0xB7 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0xB6 + if(!PC.IsLocalPlayerController()) + { + PC.ClientEndOnlineGame(); + } + } + GameInterface.EndOnlineGame(PlayerReplicationInfoClass.default.SessionName); + } + //return; +} + +function GameEventsPoll() +{ + //return; +} + +function EndLogging(string Reason) +{ + //return; +} + +function bool ShouldSpawnAtStartSpot(Controller Player) +{ + return (((int(WorldInfo.NetMode) == int(NM_Standalone)) && Player != none) && Player.StartSpot != none) && bWaitingToStartMatch || (Player.PlayerReplicationInfo != none) && Player.PlayerReplicationInfo.bWaitingPlayer; + //return ReturnValue; +} + +function NavigationPoint FindPlayerStart(Controller Player, optional byte InTeam, optional string IncomingName) +{ + local NavigationPoint N, BestStart; + local Teleporter Tel; + + // End:0x6E + if(BaseMutator != none) + { + N = BaseMutator.FindPlayerStart(Player, InTeam, IncomingName); + // End:0x6E + if(N != none) + { + return N; + } + } + // End:0xED + if(IncomingName != "") + { + // End:0xEC + foreach WorldInfo.AllNavigationPoints(Class'Engine.Teleporter', Tel) + { + // End:0xEB + if(string(Tel.Tag) ~= IncomingName) + { + return Tel; + } + } + } + // End:0x1A0 + if((ShouldSpawnAtStartSpot(Player)) && (PlayerStart(Player.StartSpot) == none) || (RatePlayerStart(PlayerStart(Player.StartSpot), InTeam, Player)) >= 0.0000000) + { + return Player.StartSpot; + } + BestStart = ChoosePlayerStart(Player, InTeam); + // End:0x217 + if((BestStart == none) && Player == none) + { + // End:0x216 + foreach AllActors(Class'Engine.NavigationPoint', N) + { + BestStart = N; + // End:0x216 + break; + } + } + return BestStart; + //return ReturnValue; +} + +function PlayerStart ChoosePlayerStart(Controller Player, optional byte InTeam) +{ + local PlayerStart P, BestStart; + local float BestRating, NewRating; + local byte Team; + + Team = ((((Player != none) && Player.PlayerReplicationInfo != none) && Player.PlayerReplicationInfo.Team != none) ? byte(Player.PlayerReplicationInfo.Team.TeamIndex) : InTeam); + // End:0x171 + foreach WorldInfo.AllNavigationPoints(Class'Engine.PlayerStart', P) + { + NewRating = RatePlayerStart(P, Team, Player); + // End:0x170 + if(NewRating > BestRating) + { + BestRating = NewRating; + BestStart = P; + } + } + return BestStart; + //return ReturnValue; +} + +function float RatePlayerStart(PlayerStart P, byte Team, Controller Player) +{ + local float Rating; + + // End:0x2D + if(!P.bEnabled) + { + return 5.0000000; + } + else + { + Rating = 10.0000000; + // End:0x6E + if(P.bPrimaryStart) + { + Rating += 10.0000000; + } + // End:0xAC + if(P.TeamIndex == int(Team)) + { + Rating += 15.0000000; + } + return Rating; + } + //return ReturnValue; +} + +function AddObjectiveScore(PlayerReplicationInfo Scorer, int Score) +{ + // End:0x3A + if(Scorer != none) + { + Scorer.Score += float(Score); + } + // End:0x7A + if(BaseMutator != none) + { + BaseMutator.ScoreObjective(Scorer, Score); + } + //return; +} + +function ScoreObjective(PlayerReplicationInfo Scorer, int Score) +{ + AddObjectiveScore(Scorer, Score); + CheckScore(Scorer); + //return; +} + +function bool CheckScore(PlayerReplicationInfo Scorer) +{ + return true; + //return ReturnValue; +} + +function ScoreKill(Controller Killer, Controller Other) +{ + // End:0xCE + if((Killer == Other) || Killer == none) + { + // End:0xCB + if((Other != none) && Other.PlayerReplicationInfo != none) + { + Other.PlayerReplicationInfo.Score -= float(1); + Other.PlayerReplicationInfo.bForceNetUpdate = true; + } + } + else + { + // End:0x195 + if(Killer.PlayerReplicationInfo != none) + { + Killer.PlayerReplicationInfo.Score += float(1); + Killer.PlayerReplicationInfo.bForceNetUpdate = true; + Killer.PlayerReplicationInfo.Kills++; + } + } + ModifyScoreKill(Killer, Other); + // End:0x1F9 + if((Killer != none) || MaxLives > 0) + { + CheckScore(Killer.PlayerReplicationInfo); + } + //return; +} + +function ModifyScoreKill(Controller Killer, Controller Other) +{ + // End:0x40 + if(BaseMutator != none) + { + BaseMutator.ScoreKill(Killer, Other); + } + //return; +} + +function DriverEnteredVehicle(Vehicle V, Pawn P) +{ + // End:0x40 + if(BaseMutator != none) + { + BaseMutator.DriverEnteredVehicle(V, P); + } + //return; +} + +function bool CanLeaveVehicle(Vehicle V, Pawn P) +{ + // End:0x11 + if(BaseMutator == none) + { + return true; + } + return BaseMutator.CanLeaveVehicle(V, P); + //return ReturnValue; +} + +function DriverLeftVehicle(Vehicle V, Pawn P) +{ + // End:0x40 + if(BaseMutator != none) + { + BaseMutator.DriverLeftVehicle(V, P); + } + //return; +} + +function bool PlayerCanRestartGame(PlayerController aPlayer) +{ + return true; + //return ReturnValue; +} + +function bool PlayerCanRestart(PlayerController aPlayer) +{ + return true; + //return ReturnValue; +} + +static function bool AllowMutator(string MutatorClassName) +{ + return !Class'Engine.WorldInfo'.static.IsDemoBuild(); + //return ReturnValue; +} + +function bool AllowCheats(PlayerController P) +{ + return int(WorldInfo.NetMode) == int(NM_Standalone); + //return ReturnValue; +} + +function bool AllowPausing(optional PlayerController PC) +{ + return (bPauseable || int(WorldInfo.NetMode) == int(NM_Standalone)) || bAdminCanPause && AccessControl.IsAdmin(PC); + //return ReturnValue; +} + +event PreCommitMapChange(string PreviousMapName, string NextMapName) +{ + //return; +} + +event PostCommitMapChange() +{ + //return; +} + +function AddInactivePRI(PlayerReplicationInfo PRI, PlayerController PC) +{ + local int I; + local PlayerReplicationInfo NewPRI, CurrentPRI; + local bool bIsConsole; + + // End:0x2B7 + if(!PRI.bFromPreviousLevel && !PRI.bOnlySpectator) + { + NewPRI = PRI.Duplicate(); + WorldInfo.GRI.RemovePRI(NewPRI); + NewPRI.RemoteRole = ROLE_None; + NewPRI.LifeSpan = 300.0000000; + bIsConsole = WorldInfo.IsConsoleBuild(); + I = 0; + J0x12B: + + // End:0x26E [Loop If] + if(I < InactivePRIArray.Length) + { + CurrentPRI = InactivePRIArray[I]; + // End:0x260 + if((((CurrentPRI == none) || CurrentPRI.bDeleteMe) || !bIsConsole && CurrentPRI.SavedNetworkAddress == NewPRI.SavedNetworkAddress) || bIsConsole && CurrentPRI.UniqueId == NewPRI.UniqueId) + { + InactivePRIArray.Remove(I, 1); + I--; + } + I++; + // [Loop Continue] + goto J0x12B; + } + InactivePRIArray[InactivePRIArray.Length] = NewPRI; + // End:0x2B7 + if(InactivePRIArray.Length > 16) + { + InactivePRIArray.Remove(0, InactivePRIArray.Length - 16); + } + } + PRI.Destroy(); + RecalculateSkillRating(); + //return; +} + +function bool FindInactivePRI(PlayerController PC) +{ + local string NewNetworkAddress, NewName; + local int I; + local PlayerReplicationInfo OldPRI, CurrentPRI; + local bool bIsConsole; + + // End:0x39 + if(PC.PlayerReplicationInfo.bOnlySpectator) + { + return false; + } + bIsConsole = WorldInfo.IsConsoleBuild(); + NewNetworkAddress = PC.PlayerReplicationInfo.SavedNetworkAddress; + NewName = PC.PlayerReplicationInfo.PlayerName; + I = 0; + J0xE9: + + // End:0x40E [Loop If] + if(I < InactivePRIArray.Length) + { + CurrentPRI = InactivePRIArray[I]; + // End:0x174 + if((CurrentPRI == none) || CurrentPRI.bDeleteMe) + { + InactivePRIArray.Remove(I, 1); + I--; + } + else + { + // End:0x400 + if((bIsConsole && CurrentPRI.UniqueId == PC.PlayerReplicationInfo.UniqueId) || (!bIsConsole && CurrentPRI.SavedNetworkAddress ~= NewNetworkAddress) && CurrentPRI.PlayerName ~= NewName) + { + OldPRI = PC.PlayerReplicationInfo; + PC.PlayerReplicationInfo = CurrentPRI; + PC.PlayerReplicationInfo.SetOwner(PC); + PC.PlayerReplicationInfo.RemoteRole = ROLE_SimulatedProxy; + PC.PlayerReplicationInfo.LifeSpan = 0.0000000; + OverridePRI(PC, OldPRI); + WorldInfo.GRI.AddPRI(PC.PlayerReplicationInfo); + InactivePRIArray.Remove(I, 1); + OldPRI.bIsInactive = true; + OldPRI.Destroy(); + return true; + } + } + I++; + // [Loop Continue] + goto J0xE9; + } + return false; + //return ReturnValue; +} + +function OverridePRI(PlayerController PC, PlayerReplicationInfo OldPRI) +{ + PC.PlayerReplicationInfo.OverrideWith(OldPRI); + //return; +} + +event GetSeamlessTravelActorList(bool bToEntry, out array ActorList) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x157 [Loop If] + if(I < WorldInfo.GRI.PRIArray.Length) + { + WorldInfo.GRI.PRIArray[I].bFromPreviousLevel = true; + WorldInfo.GRI.PRIArray[I].bForceNetUpdate = true; + ActorList[ActorList.Length] = WorldInfo.GRI.PRIArray[I]; + I++; + // [Loop Continue] + goto J0x0B; + } + // End:0x1C4 + if(bToEntry) + { + ActorList[ActorList.Length] = WorldInfo.GRI; + // End:0x1C4 + if(BroadcastHandler != none) + { + ActorList[ActorList.Length] = BroadcastHandler; + } + } + // End:0x205 + if(BaseMutator != none) + { + BaseMutator.GetSeamlessTravelActorList(bToEntry, ActorList); + } + // End:0x232 + if(MyAutoTestManager != none) + { + ActorList[ActorList.Length] = MyAutoTestManager; + } + // End:0x25F + if(AccessControl != none) + { + ActorList[ActorList.Length] = AccessControl; + } + //return; +} + +// Export UGameInfo::execSwapPlayerControllers(FFrame&, void* const) +native final function SwapPlayerControllers(PlayerController OldPC, PlayerController NewPC); + +event PostSeamlessTravel() +{ + local Controller C; + + // End:0x107 + foreach WorldInfo.AllControllers(Class'Engine.Controller', C) + { + // End:0x106 + if(C.bIsPlayer) + { + // End:0x84 + if(PlayerController(C) == none) + { + HandleSeamlessTravelPlayer(C); + // End:0x106 + continue; + } + // End:0xC8 + if(!C.PlayerReplicationInfo.bOnlySpectator) + { + NumTravellingPlayers++; + } + // End:0x106 + if(PlayerController(C).HasClientLoadedCurrentWorld()) + { + HandleSeamlessTravelPlayer(C); + } + } + } + // End:0x14C + if((bWaitingToStartMatch && !bDelayedStart) && (NumPlayers + NumBots) > 0) + { + StartMatch(); + } + // End:0x17F + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + UpdateGameSettings(); + } + //return; +} + +function UpdateGameSettings() +{ + //return; +} + +event HandleSeamlessTravelPlayer(out Controller C) +{ + local Rotator StartRotation; + local NavigationPoint StartSpot; + local PlayerController PC, NewPC; + local PlayerReplicationInfo OldPRI; + + PC = PlayerController(C); + // End:0x1C8 + if((PC != none) && PC.Class != PlayerControllerClass) + { + // End:0x1AD + if(PC.Player != none) + { + NewPC = SpawnPlayerController(PC.Location, PC.Rotation); + // End:0xF9 + if(NewPC == none) + { + PC.Destroy(); + return; + } + else + { + PC.CleanUpAudioComponents(); + PC.SeamlessTravelTo(NewPC); + NewPC.SeamlessTravelFrom(PC); + SwapPlayerControllers(PC, NewPC); + PC = NewPC; + C = NewPC; + } + } + else + { + PC.Destroy(); + } + } + else + { + C.PlayerReplicationInfo.Reset(); + OldPRI = C.PlayerReplicationInfo; + C.InitPlayerReplicationInfo(); + OldPRI.SeamlessTravelTo(C.PlayerReplicationInfo); + OldPRI.Destroy(); + } + // End:0x359 + if(!bTeamGame && C.PlayerReplicationInfo.Team != none) + { + C.PlayerReplicationInfo.Team.Destroy(); + C.PlayerReplicationInfo.Team = none; + } + StartSpot = FindPlayerStart(C, C.GetTeamNum()); + // End:0x3A8 + if(StartSpot == none) + { + } + else + { + StartRotation.Yaw = StartSpot.Rotation.Yaw; + C.SetLocation(StartSpot.Location); + C.SetRotation(StartRotation); + } + C.StartSpot = StartSpot; + // End:0x5E5 + if(PC != none) + { + PC.CleanUpAudioComponents(); + PC.ClientInitializeDataStores(); + SetSeamlessTravelViewTarget(PC); + // End:0x5A9 + if(PC.PlayerReplicationInfo.bOnlySpectator) + { + PC.GotoState('Spectating'); + PC.PlayerReplicationInfo.bIsSpectator = true; + PC.PlayerReplicationInfo.bOutOfLives = true; + NumSpectators++; + } + else + { + NumPlayers++; + NumTravellingPlayers--; + PC.GotoState('PlayerWaiting'); + } + } + else + { + NumBots++; + C.GotoState('RoundEnded'); + } + GenericPlayerInitialization(C); + //return; +} + +function SetSeamlessTravelViewTarget(PlayerController PC) +{ + PC.SetViewTarget(PC); + //return; +} + +function UpdateGameSettingsCounts() +{ + local OnlineGameSettings GameSettings; + + // End:0x128 + if(NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none))) + { + GameSettings = GameInterface.GetGameSettings(PlayerReplicationInfoClass.default.SessionName); + // End:0x128 + if((GameSettings != none) && GameSettings.bIsLanMatch) + { + GameSettings.NumOpenPublicConnections = GameSettings.NumPublicConnections - (GetNumPlayers()); + // End:0x128 + if(GameSettings.NumOpenPublicConnections < 0) + { + GameSettings.NumOpenPublicConnections = 0; + } + } + } + //return; +} + +function ProcessClientRegistrationCompletion(PlayerController PC, bool bWasSuccessful) +{ + //return; +} + +function StartArbitrationRegistration() +{ + //return; +} + +function StartArbitratedMatch() +{ + //return; +} + +function RegisterServerForArbitration() +{ + //return; +} + +function ArbitrationRegistrationComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function bool MatchIsInProgress() +{ + return true; + //return ReturnValue; +} + +function NotifyArbitratedMatchEnd() +{ + local PlayerController PC; + + // End:0x79 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x78 + if(PC.IsLocalPlayerController() == false) + { + PC.ClientArbitratedMatchEnded(); + } + } + // End:0xF0 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0xEF + if(PC.IsLocalPlayerController()) + { + PC.ClientArbitratedMatchEnded(); + } + } + //return; +} + +function UpdateGameplayMuteList(PlayerController PC) +{ + PC.bHasVoiceHandshakeCompleted = true; + PC.ClientVoiceHandshakeComplete(); + //return; +} + +function RecalculateSkillRating() +{ + local int Index; + local array Players; + local UniqueNetId ZeroId; + + // End:0x1C7 + if(((int(WorldInfo.NetMode) != int(NM_Standalone)) && OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + Index = 0; + J0x7C: + + // End:0x15B [Loop If] + if(Index < GameReplicationInfo.PRIArray.Length) + { + // End:0x14D + if(ZeroId != GameReplicationInfo.PRIArray[Index].UniqueId) + { + Players[Players.Length] = GameReplicationInfo.PRIArray[Index].UniqueId; + } + Index++; + // [Loop Continue] + goto J0x7C; + } + // End:0x1C7 + if(Players.Length > 0) + { + OnlineSub.GameInterface.RecalculateSkillRating(PlayerReplicationInfoClass.default.SessionName, Players); + } + } + //return; +} + +event MatineeCancelled() +{ + //return; +} + +function bool ProcessServerLogin() +{ + // End:0x11B + if(OnlineSub != none) + { + // End:0x11B + if(NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + OnlineSub.PlayerInterface.AddLoginChangeDelegate(OnLoginChange); + OnlineSub.PlayerInterface.AddLoginFailedDelegate(0, OnLoginFailed); + // End:0x119 + if(OnlineSub.PlayerInterface.AutoLogin() == false) + { + ClearAutoLoginDelegates(); + return false; + } + return true; + } + } + return false; + //return ReturnValue; +} + +function ClearAutoLoginDelegates() +{ + // End:0xC3 + if(NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + OnlineSub.PlayerInterface.ClearLoginChangeDelegate(OnLoginChange); + OnlineSub.PlayerInterface.ClearLoginFailedDelegate(0, OnLoginFailed); + } + //return; +} + +function OnLoginFailed(byte LocalUserNum, OnlineSubsystem.EOnlineServerConnectionStatus ErrorCode) +{ + ClearAutoLoginDelegates(); + //return; +} + +function OnLoginChange(byte LocalUserNum) +{ + ClearAutoLoginDelegates(); + RegisterServer(); + //return; +} + +function RegisterServer() +{ + local OnlineGameSettings GameSettings; + + // End:0x233 + if(((OnlineGameSettingsClass != none) && OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + GameSettings = new OnlineGameSettingsClass; + GameSettings.UpdateFromURL(ServerOptions, self); + // End:0x141 + if(((AccessControl != none) && (int(WorldInfo.NetMode) == int(NM_DedicatedServer)) || int(WorldInfo.NetMode) == int(NM_ListenServer)) && GameSettings.bIsLanMatch) + { + AccessControl.ClearAuthDelegates(false); + } + OnlineSub.GameInterface.AddCreateOnlineGameCompleteDelegate(OnServerCreateComplete); + // End:0x230 + if(!OnlineSub.GameInterface.CreateOnlineGame(0, PlayerReplicationInfoClass.default.SessionName, GameSettings)) + { + OnlineSub.GameInterface.ClearCreateOnlineGameCompleteDelegate(OnServerCreateComplete); + } + } + //return; +} + +function OnServerCreateComplete(name SessionName, bool bWasSuccessful) +{ + local OnlineGameSettings GameSettings; + + GameInterface.ClearCreateOnlineGameCompleteDelegate(OnServerCreateComplete); + // End:0x181 + if(bWasSuccessful == false) + { + GameSettings = GameInterface.GetGameSettings(PlayerReplicationInfoClass.default.SessionName); + // End:0x17E + if((GameSettings != none) && GameSettings.bIsLanMatch == false) + { + GameSettings.bIsLanMatch = true; + GameInterface.AddCreateOnlineGameCompleteDelegate(OnServerCreateComplete); + // End:0x17B + if(!GameInterface.CreateOnlineGame(0, SessionName, GameSettings)) + { + GameInterface.ClearCreateOnlineGameCompleteDelegate(OnServerCreateComplete); + } + } + } + else + { + // End:0x248 + if(((OnlineSub.Class.Name == 'OnlineSubsystemSteamworks') && AccessControl != none) && EqualEqual_InterfaceInterface(AccessControl.CachedAuthInt, OnlineAuthInterface(none))) + { + AccessControl.InitAuthHooks(); + AccessControl.OnAuthReady(); + } + UpdateGameSettings(); + } + //return; +} + +function TellClientsToReturnToPartyHost() +{ + local PlayerController PC; + local OnlineGameSettings GameSettings; + local UniqueNetId RequestingPlayerId; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x2BF + if(OnlineSub != none) + { + GameInterface = OnlineSub.GameInterface; + // End:0x2BF + if(NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none))) + { + GameSettings = GameInterface.GetGameSettings(PlayerReplicationInfoClass.default.SessionName); + // End:0x102 + if(GameSettings != none) + { + RequestingPlayerId = GameSettings.OwningPlayerId; + } + else + { + // End:0x1AA + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + // End:0x1A9 + if(PC.IsPrimaryPlayer() && PC.PlayerReplicationInfo != none) + { + RequestingPlayerId = PC.PlayerReplicationInfo.UniqueId; + // End:0x1AA + break; + } + } + } + // End:0x250 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x24F + if(!PC.IsLocalPlayerController() && PC.IsPrimaryPlayer()) + { + PC.ClientReturnToParty(RequestingPlayerId); + } + } + // End:0x2BE + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + // End:0x2BD + if(PC.IsPrimaryPlayer()) + { + PC.ClientReturnToParty(RequestingPlayerId); + // End:0x2BE + break; + } + } + } + } + //return; +} + +function TellClientsPartyHostIsLeaving(UniqueNetId PartyHostPlayerId) +{ + local PlayerController PC; + + // End:0x7F + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x7E + if(PC.IsPrimaryPlayer()) + { + PC.ClientNotifyPartyHostLeaving(PartyHostPlayerId); + } + } + //return; +} + +function TellClientsToTravelToSession(name SessionName, Class SearchClass, byte PlatformSpecificInfo[80]) +{ + local PlayerController PC; + + // End:0xB7 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0xB6 + if(!PC.IsLocalPlayerController() && PC.IsPrimaryPlayer()) + { + PC.ClientTravelToSession(SessionName, SearchClass, PlatformSpecificInfo); + } + } + //return; +} + +exec function DoTravelTheWorld() +{ + // End:0x3C + if(MyAutoTestManager != none) + { + GotoState('TravelTheWorld'); + MyAutoTestManager.DoTravelTheWorld(); + } + //return; +} + +// Export UGameInfo::execSetBandwidthLimit(FFrame&, void* const) +native exec function SetBandwidthLimit(float AsyncIOBandwidthLimit); + +function bool IsAutomatedPerfTesting() +{ + return (MyAutoTestManager != none) && MyAutoTestManager.bAutomatedPerfTesting; + //return ReturnValue; +} + +function bool IsCheckingForFragmentation() +{ + return (MyAutoTestManager != none) && MyAutoTestManager.bCheckingForFragmentation; + //return ReturnValue; +} + +function bool IsCheckingForMemLeaks() +{ + return (MyAutoTestManager != none) && MyAutoTestManager.bCheckingForMemLeaks; + //return ReturnValue; +} + +function bool IsDoingASentinelRun() +{ + return (MyAutoTestManager != none) && MyAutoTestManager.bDoingASentinelRun; + //return ReturnValue; +} + +function bool ShouldAutoContinueToNextRound() +{ + return (MyAutoTestManager != none) && MyAutoTestManager.bAutoContinueToNextRound; + //return ReturnValue; +} + +function bool CheckForSentinelRun() +{ + return (MyAutoTestManager != none) && MyAutoTestManager.CheckForSentinelRun(); + //return ReturnValue; +} + +function bool StartSentinelRun(optional PlayerController PC = none) +{ + // End:0x8E + if(MyAutoTestManager != none) + { + // End:0x4B + if(PC != none) + { + MyAutoTestManager.SentinelPC = PC; + } + // End:0x6F + if(MyAutoTestManager.CheckForSentinelRun()) + { + return true; + } + MyAutoTestManager.StartMatch(); + } + return false; + //return ReturnValue; +} + +function bool EndSentinelRun() +{ + // End:0x4F + if((MyAutoTestManager != none) && MyAutoTestManager.bDoingASentinelRun) + { + ConsoleCommand("exit"); + return true; + } + return false; + //return ReturnValue; +} + +simulated exec function BeginBVT(coerce optional string TagDesc) +{ + // End:0x33 + if(MyAutoTestManager == none) + { + MyAutoTestManager = Spawn(AutoTestManagerClass); + } + MyAutoTestManager.BeginSentinelRun("BVT", "", TagDesc); + MyAutoTestManager.SetTimer(3.0000000, true, 'DoTimeBasedSentinelStatGathering'); + //return; +} + +simulated exec function InvokeStartSentinelRun() +{ + StartSentinelRun(); + //return; +} + +simulated exec function InvokeEndSentinelRun() +{ + EndSentinelRun(); + //return; +} + +// Export UGameInfo::execEnableStandbyCheatDetection(FFrame&, void* const) +native function EnableStandbyCheatDetection(bool bIsEnabled); + +event StandbyCheatDetected(GameInfo.EStandbyType StandbyType) +{ + //return; +} + +function OnDestroyOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + // End:0x19 + if(!ProcessServerLogin()) + { + RegisterServer(); + } + GameInterface.ClearDestroyOnlineGameCompleteDelegate(OnDestroyOnlineGameComplete); + //return; +} + +event OnEngineHasLoaded() +{ + //return; +} + +function InitCrowdPopulationManager() +{ + // End:0x32 + if(PopulationManagerClass != none) + { + PopulationManager = Spawn(PopulationManagerClass); + } + //return; +} + +function ClearOnlineDelegates() +{ + //return; +} + +auto state PendingMatch +{ + function bool MatchIsInProgress() + { + return false; + //return ReturnValue; + } + + function StartMatch() + { + // End:0x1A + if(bUsingArbitration) + { + StartArbitrationRegistration(); + } + else + { + global.StartMatch(); + } + //return; + } + + function StartArbitrationRegistration() + { + local PlayerController PC; + local UniqueNetId HostId; + local OnlineGameSettings GameSettings; + + // End:0x18E + if(!bHasArbitratedHandshakeBegun) + { + bHasArbitratedHandshakeBegun = true; + GameSettings = GameInterface.GetGameSettings(PlayerReplicationInfoClass.default.SessionName); + HostId = GameSettings.OwningPlayerId; + PendingArbitrationPCs.Length = 0; + // End:0x176 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x157 + if(!PC.IsLocalPlayerController()) + { + PC.ClientSetHostUniqueId(HostId); + PC.ClientRegisterForArbitration(); + PendingArbitrationPCs[PendingArbitrationPCs.Length] = PC; + // End:0x175 + continue; + } + ArbitrationPCs[ArbitrationPCs.Length] = PC; + } + SetTimer(ArbitrationHandshakeTimeout, false, 'ArbitrationTimeout'); + } + //return; + } + + function RegisterServerForArbitration() + { + // End:0x92 + if(NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none))) + { + GameInterface.AddArbitrationRegistrationCompleteDelegate(ArbitrationRegistrationComplete); + GameInterface.RegisterForArbitration(PlayerReplicationInfoClass.default.SessionName); + } + else + { + ArbitrationRegistrationComplete(PlayerReplicationInfoClass.default.SessionName, true); + } + //return; + } + + function ArbitrationRegistrationComplete(name SessionName, bool bWasSuccessful) + { + GameInterface.ClearArbitrationRegistrationCompleteDelegate(ArbitrationRegistrationComplete); + // End:0x4B + if(bWasSuccessful) + { + StartArbitratedMatch(); + } + else + { + ConsoleCommand("Disconnect"); + } + //return; + } + + function ArbitrationTimeout() + { + local int Index; + + Index = 0; + J0x0B: + + // End:0x81 [Loop If] + if(Index < PendingArbitrationPCs.Length) + { + AccessControl.KickPlayer(PendingArbitrationPCs[Index], GameMessageClass.default.MaxedOutMessage); + Index++; + // [Loop Continue] + goto J0x0B; + } + PendingArbitrationPCs.Length = 0; + RegisterServerForArbitration(); + //return; + } + + function StartArbitratedMatch() + { + bNeedsEndGameHandshake = true; + global.StartMatch(); + //return; + } + + function ProcessClientRegistrationCompletion(PlayerController PC, bool bWasSuccessful) + { + local int FoundIndex; + + FoundIndex = PendingArbitrationPCs.Find(PC); + // End:0xBC + if(FoundIndex != -1) + { + PendingArbitrationPCs.Remove(FoundIndex, 1); + // End:0x76 + if(bWasSuccessful) + { + ArbitrationPCs[ArbitrationPCs.Length] = PC; + } + else + { + AccessControl.KickPlayer(PC, GameMessageClass.default.MaxedOutMessage); + } + } + // End:0xE9 + if(PendingArbitrationPCs.Length == 0) + { + SetTimer(0.0000000, false, 'ArbitrationTimeout'); + RegisterServerForArbitration(); + } + //return; + } + + event EndState(name NextStateName) + { + SetTimer(0.0000000, false, 'ArbitrationTimeout'); + // End:0x64 + if(NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none))) + { + GameInterface.ClearArbitrationRegistrationCompleteDelegate(ArbitrationRegistrationComplete); + } + //return; + } + stop; +} + +state TravelTheWorld +{ stop; +} + +defaultproperties +{ + bRestartLevel=true + bPauseable=true + bDelayedStart=true + bChangeLevels=true + bKickLiveIdlers=true + GameDifficulty=4.0000000 + GameSpeed=1.0000000 + HUDType=Class'Engine.HUD' + MaxSpectators=2 + MaxSpectatorsAllowed=32 + MaxPlayers=32 + MaxPlayersAllowed=32 + CurrentID=1 + DefaultPlayerName="Player" + GameName="Game" + FearCostFallOff=0.9500000 + DeathMessageClass=Class'Engine.LocalMessage' + GameMessageClass=Class'Engine.GameMessage' + AutoTestManagerClass=Class'Engine.AutoTestManager' + PlayerControllerClass=Class'Engine.PlayerController' + PlayerReplicationInfoClass=Class'Engine.PlayerReplicationInfo' + GameReplicationInfoClass=Class'Engine.GameReplicationInfo' + MaxIdleTime=120.0000000 + TimeMarginSlack=1.3500000 + LeaderboardId=-131072 + ArbitratedLeaderboardId=-65536 + TotalNetBandwidth=32000 + MinDynamicBandwidth=4000 + MaxDynamicBandwidth=7000 + StreamingPauseIcon=Material'EngineResources.M_StreamingPause' + GameInfoClassAliases[0]=(ShortName="Testing",GameClassName="TgGame.TgGame_Battle") + GameInfoClassAliases[1]=(ShortName="Chaos",GameClassName="TgGame.TgGame_Paladins") + GameInfoClassAliases[2]=(ShortName="Siege",GameClassName="TgGame.TgGame_PaladinsExtended") + GameInfoClassAliases[3]=(ShortName="Joust",GameClassName="TgGame.TgGame_ChaosJoust") + GameInfoClassAliases[4]=(ShortName="TDM",GameClassName="TgGame.TgGame_Paladins_TeamDeathmatch") + GameInfoClassAliases[5]=(ShortName="ShootingRange",GameClassName="TgGame.TgGame_Paladins_ShootingRange") + Components=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/GameMessage.uc b/exported/Engine/Classes/GameMessage.uc new file mode 100755 index 00000000..46251c3b --- /dev/null +++ b/exported/Engine/Classes/GameMessage.uc @@ -0,0 +1,178 @@ +class GameMessage extends LocalMessage; + +var const localized string SwitchLevelMessage; +var const localized string LeftMessage; +var const localized string FailedTeamMessage; +var const localized string FailedPlaceMessage; +var const localized string FailedSpawnMessage; +var const localized string EnteredMessage; +var const localized string MaxedOutMessage; +var const localized string ArbitrationMessage; +var const localized string OvertimeMessage; +var const localized string GlobalNameChange; +var const localized string NewTeamMessage; +var const localized string NewTeamMessageTrailer; +var const localized string NoNameChange; +var const localized string VoteStarted; +var const localized string VotePassed; +var const localized string MustHaveStats; +var const localized string CantBeSpectator; +var const localized string CantBePlayer; +var const localized string BecameSpectator; +var const localized string NewPlayerMessage; +var const localized string KickWarning; +var const localized string NewSpecMessage; +var const localized string SpecEnteredMessage; + +static function string GetString(optional int Switch, optional bool bPRI1HUD, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject) +{ + switch(Switch) + { + // End:0x29 + case 0: + return default.OvertimeMessage; + // End:0x2FA + break; + // End:0x73 + case 1: + // End:0x46 + if(RelatedPRI_1 == none) + { + return default.NewPlayerMessage; + } + return RelatedPRI_1.PlayerName $ default.EnteredMessage; + // End:0x2FA + break; + // End:0xD7 + case 2: + // End:0x8A + if(RelatedPRI_1 == none) + { + return ""; + } + return (RelatedPRI_1.OldName @ default.GlobalNameChange) @ RelatedPRI_1.PlayerName; + // End:0x2FA + break; + // End:0x162 + case 3: + // End:0xEE + if(RelatedPRI_1 == none) + { + return ""; + } + // End:0x100 + if(OptionalObject == none) + { + return ""; + } + return ((RelatedPRI_1.PlayerName @ default.NewTeamMessage) @ TeamInfo(OptionalObject).GetHumanReadableName()) $ default.NewTeamMessageTrailer; + // End:0x2FA + break; + // End:0x1A6 + case 4: + // End:0x179 + if(RelatedPRI_1 == none) + { + return ""; + } + return RelatedPRI_1.PlayerName $ default.LeftMessage; + // End:0x2FA + break; + // End:0x1B8 + case 5: + return default.SwitchLevelMessage; + // End:0x2FA + break; + // End:0x1CA + case 6: + return default.FailedTeamMessage; + // End:0x2FA + break; + // End:0x1DC + case 7: + return default.MaxedOutMessage; + // End:0x2FA + break; + // End:0x1EE + case 8: + return default.NoNameChange; + // End:0x2FA + break; + // End:0x220 + case 9: + return RelatedPRI_1.PlayerName @ default.VoteStarted; + // End:0x2FA + break; + // End:0x232 + case 10: + return default.VotePassed; + // End:0x2FA + break; + // End:0x244 + case 11: + return default.MustHaveStats; + // End:0x2FA + break; + // End:0x256 + case 12: + return default.CantBeSpectator; + // End:0x2FA + break; + // End:0x268 + case 13: + return default.CantBePlayer; + // End:0x2FA + break; + // End:0x29A + case 14: + return RelatedPRI_1.PlayerName @ default.BecameSpectator; + // End:0x2FA + break; + // End:0x2AC + case 15: + return default.KickWarning; + // End:0x2FA + break; + // End:0x2F7 + case 16: + // End:0x2CA + if(RelatedPRI_1 == none) + { + return default.NewSpecMessage; + } + return RelatedPRI_1.PlayerName $ default.SpecEnteredMessage; + // End:0x2FA + break; + // End:0xFFFF + default: + break; + } + return ""; + //return ReturnValue; +} + +defaultproperties +{ + SwitchLevelMessage="Switching Levels" + LeftMessage=" left the game." + FailedTeamMessage="Could not find team for player" + FailedPlaceMessage="Could not find a starting spot" + FailedSpawnMessage="Could not spawn player" + EnteredMessage=" entered the game." + MaxedOutMessage="Server is already at capacity." + ArbitrationMessage="The session has already started." + OvertimeMessage="Score tied at the end of regulation. Sudden Death Overtime!!!" + GlobalNameChange="changed name to" + NewTeamMessage="is now on" + NoNameChange="Name is already in use." + VoteStarted="started a vote." + VotePassed="Vote passed." + MustHaveStats="Must have stats enabled to join this server." + CantBeSpectator="Sorry, you cannot become a spectator at this time." + CantBePlayer="Sorry, you cannot become an active player at this time." + BecameSpectator="became a spectator." + NewPlayerMessage="A new player entered the game." + KickWarning="You are about to be kicked for idling!" + NewSpecMessage="A spectator entered the game/" + SpecEnteredMessage=" joined as a spectator." +} \ No newline at end of file diff --git a/exported/Engine/Classes/GamePadLightbarSubsystem.uc b/exported/Engine/Classes/GamePadLightbarSubsystem.uc new file mode 100755 index 00000000..47cce405 --- /dev/null +++ b/exported/Engine/Classes/GamePadLightbarSubsystem.uc @@ -0,0 +1,96 @@ +class GamePadLightbarSubsystem extends Object + native + config(LightBar); + +enum LightBarState +{ + ELBS_Standby, // 0 + ELBS_Lerping, // 1 + ELBS_Pulsing, // 2 + ELBS_MAX // 3 +}; + +struct native ColorDefinition +{ + var init string Id; + var byte R; + var byte G; + var byte B; + + structdefaultproperties + { + Id="" + R=0 + G=0 + B=0 + } +}; + +struct native LerpToInstruction +{ + var init string Id; + var float Time; + var init string LerpToId; + + structdefaultproperties + { + Id="" + Time=0.0000000 + LerpToId="" + } +}; + +struct native SetAndLerpInstruction extends LerpToInstruction +{ + var init string LerpFromId; +}; + +struct native PulseInstruction extends SetAndLerpInstruction +{ +}; + +var GamePadLightbarSubsystem.LightBarState CurrentLightBarState; +var LinearColor CurrentColor; +var LinearColor OriginalColor; +var LinearColor TargetColor; +var float LerpTimeRemaining; +var float TotalLerpTime; +var() const config Color DefaultColor; +var() const editinline config array ColorDefinitions; +var() const editinline config array LerpToInstructions; +var() const editinline config array SetAndLerpInstructions; +var const editinline config array PulseInstructions; + +// Export UGamePadLightbarSubsystem::execSetPadColor(FFrame&, void* const) +native static function SetPadColor(Color NewPadColor); + +// Export UGamePadLightbarSubsystem::execSetPadColorFromDef(FFrame&, void* const) +native static function SetPadColorFromDef(string TheColorId); + +// Export UGamePadLightbarSubsystem::execBeginLerp(FFrame&, void* const) +native static function BeginLerp(Color NewLerpColor, float LerpTime); + +// Export UGamePadLightbarSubsystem::execBeginLerpFromDef(FFrame&, void* const) +native static function BeginLerpFromDef(string InstructionId); + +// Export UGamePadLightbarSubsystem::execSetPadColorAndLerp(FFrame&, void* const) +native static function SetPadColorAndLerp(float LerpTime, Color NewPadColor, optional Color NewTargetColor = default.DefaultColor); + +// Export UGamePadLightbarSubsystem::execSetPadColorAndLerpFromDef(FFrame&, void* const) +native static function SetPadColorAndLerpFromDef(string InstructionId); + +// Export UGamePadLightbarSubsystem::execSetPulsing(FFrame&, void* const) +native static function SetPulsing(float LerpTime, Color Target1, optional Color Target2 = default.DefaultColor); + +// Export UGamePadLightbarSubsystem::execSetPulsingFromDef(FFrame&, void* const) +native static function SetPulsingFromDef(string InstructionId); + +// Export UGamePadLightbarSubsystem::execResetState(FFrame&, void* const) +native static function ResetState(); + +defaultproperties +{ + CurrentColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + OriginalColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + TargetColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/GameReplicationInfo.uc b/exported/Engine/Classes/GameReplicationInfo.uc new file mode 100755 index 00000000..1438763a --- /dev/null +++ b/exported/Engine/Classes/GameReplicationInfo.uc @@ -0,0 +1,281 @@ +class GameReplicationInfo extends ReplicationInfo + native(ReplicationInfo) + nativereplication + config(Game) + notplaceable + hidecategories(Navigation,Movement,Collision); + +var repnotify Class GameClass; +var bool bStopCountDown; +var repnotify bool bMatchHasBegun; +var repnotify bool bMatchIsOver; +var int RemainingTime; +var int ElapsedTime; +var int RemainingMinute; +var int GoalScore; +var int TimeLimit; +var array Teams; +var() globalconfig string ServerName; +var Actor Winner; +var array PRIArray; +var array InactivePRIArray; + +replication +{ + // Pos:0x000 + if(bNetDirty) + Winner, bMatchHasBegun, + bMatchIsOver, bStopCountDown; + + // Pos:0x00A + if(!bNetInitial && bNetDirty) + RemainingMinute; + + // Pos:0x025 + if(bNetInitial) + ElapsedTime, GameClass, + GoalScore, RemainingTime, + ServerName, TimeLimit; +} + +simulated event PostBeginPlay() +{ + local PlayerReplicationInfo PRI; + local TeamInfo TI; + + // End:0x35 + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + ServerName = ""; + } + SetTimer(WorldInfo.TimeDilation, true); + WorldInfo.GRI = self; + // End:0xA6 + foreach DynamicActors(Class'Engine.PlayerReplicationInfo', PRI) + { + AddPRI(PRI); + } + // End:0x116 + foreach DynamicActors(Class'Engine.TeamInfo', TI) + { + // End:0x115 + if(TI.TeamIndex >= 0) + { + SetTeam(TI.TeamIndex, TI); + } + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x49 + if(VarName == 'bMatchHasBegun') + { + // End:0x46 + if(bMatchHasBegun) + { + WorldInfo.NotifyMatchStarted(); + } + } + else + { + // End:0x7A + if(VarName == 'bMatchIsOver') + { + // End:0x77 + if(bMatchIsOver) + { + EndGame(); + } + } + else + { + // End:0x9E + if(VarName == 'GameClass') + { + ReceivedGameClass(); + } + else + { + super(Actor).ReplicatedEvent(VarName); + } + } + } + //return; +} + +simulated function ReceivedGameClass() +{ + local PlayerController PC; + + // End:0x48 + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + PC.ReceivedGameClass(GameClass); + } + //return; +} + +function Reset() +{ + super(Actor).Reset(); + Winner = none; + //return; +} + +simulated event Timer() +{ + // End:0x68 + if((WorldInfo.Game == none) || WorldInfo.Game.MatchIsInProgress()) + { + ElapsedTime++; + } + // End:0xBE + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + // End:0xBE + if(RemainingMinute != 0) + { + RemainingTime = RemainingMinute; + RemainingMinute = 0; + } + } + // End:0x138 + if((RemainingTime > 0) && !bStopCountDown) + { + RemainingTime--; + // End:0x138 + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + // End:0x138 + if((RemainingTime % 60) == 0) + { + RemainingMinute = RemainingTime; + } + } + } + SetTimer(WorldInfo.TimeDilation, true); + //return; +} + +// Export UGameReplicationInfo::execOnSameTeam(FFrame&, void* const) +native simulated function bool OnSameTeam(Actor A, Actor B); + +// Export UGameReplicationInfo::execCheckIsEnemy(FFrame&, void* const) +native simulated function bool CheckIsEnemy(const Actor A, const Actor B); + +simulated function AddPRI(PlayerReplicationInfo PRI) +{ + local int I; + + // End:0x99 + if(!PRI.bIsInactive) + { + I = 0; + J0x2F: + + // End:0x78 [Loop If] + if(I < PRIArray.Length) + { + // End:0x6A + if(PRIArray[I] == PRI) + { + return; + } + I++; + // [Loop Continue] + goto J0x2F; + } + PRIArray[PRIArray.Length] = PRI; + } + else + { + // End:0xD7 + if(InactivePRIArray.Find(PRI) == -1) + { + InactivePRIArray[InactivePRIArray.Length] = PRI; + } + } + //return; +} + +simulated function RemovePRI(PlayerReplicationInfo PRI) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x69 [Loop If] + if(I < PRIArray.Length) + { + // End:0x5B + if(PRIArray[I] == PRI) + { + PRIArray.Remove(I, 1); + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated function SetTeam(int Index, TeamInfo TI) +{ + // End:0x2C + if(Index >= 0) + { + Teams[Index] = TI; + } + //return; +} + +simulated function StartMatch() +{ + bMatchHasBegun = true; + //return; +} + +simulated function EndGame() +{ + bMatchIsOver = true; + //return; +} + +simulated function bool IsMultiplayerGame() +{ + return int(WorldInfo.NetMode) != int(NM_Standalone); + //return ReturnValue; +} + +simulated function bool IsCoopMultiplayerGame() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldShowGore() +{ + return true; + //return ReturnValue; +} + +simulated event float GetMissionTime() +{ + //return ReturnValue; +} + +simulated function OnFogAdded(ExponentialHeightFog Fog) +{ + //return; +} + +defaultproperties +{ + bStopCountDown=true + TickGroup=ETickingGroup.TG_DuringAsyncWork + s_bThrottleNetRelevancy=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/GameUISceneClient.uc b/exported/Engine/Classes/GameUISceneClient.uc new file mode 100755 index 00000000..f633747a --- /dev/null +++ b/exported/Engine/Classes/GameUISceneClient.uc @@ -0,0 +1,127 @@ +class GameUISceneClient extends UISceneClient within UIInteraction + transient + native(UIPrivate) + config(UI) + hidecategories(Object,UIRoot); + +var const transient float LatestDeltaTime; +var const transient Double DoubleClickStartTime; +var const transient IntPoint DoubleClickStartPosition; +var native const transient Map_Mirror InitialPressedKeys; +var const transient bool bUpdateInputProcessingStatus; +var transient bool bUpdateSceneViewportSizes; +var config bool bEnableDebugInput; +var config bool bRenderDebugInfo; +var const config bool bCaptureUnprocessedInput; +var const transient array NavAliases; +var const transient array AxisInputKeys; + +// Export UGameUISceneClient::execTgFlushPlayerInput(FFrame&, void* const) +native final function TgFlushPlayerInput(); + +// Export UGameUISceneClient::execGetCurrentNetMode(FFrame&, void* const) +native static final function WorldInfo.ENetMode GetCurrentNetMode(); + +// Export UGameUISceneClient::execRequestInputProcessingUpdate(FFrame&, void* const) +native final function RequestInputProcessingUpdate(); + +// Export UGameUISceneClient::execCanUnpauseInternalUI(FFrame&, void* const) +native final function bool CanUnpauseInternalUI(); + +event PauseGame(bool bDesiredPauseState, optional int PlayerIndex = 0) +{ + local PlayerController PlayerOwner; + + // End:0x170 + if(Outer.Outer.Outer.GamePlayers.Length > 0) + { + PlayerIndex = Clamp(PlayerIndex, 0, Outer.Outer.Outer.GamePlayers.Length - 1); + PlayerOwner = Outer.Outer.Outer.GamePlayers[PlayerIndex].Actor; + // End:0x170 + if(PlayerOwner != none) + { + PlayerOwner.SetPause(bDesiredPauseState, CanUnpauseInternalUI); + } + } + //return; +} + +function NotifyClientTravel(PlayerController TravellingPlayer, string TravelURL, Actor.ETravelType TravelType, bool bIsSeamlessTravel) +{ + //return; +} + +function NotifyGameSessionEnded() +{ + //return; +} + +function NotifyPlayerAdded(int PlayerIndex, LocalPlayer AddedPlayer) +{ + // End:0x19 + if(IsUIActive(2)) + { + RequestInputProcessingUpdate(); + } + //return; +} + +function NotifyPlayerRemoved(int PlayerIndex, LocalPlayer RemovedPlayer) +{ + // End:0x19 + if(IsUIActive(2)) + { + RequestInputProcessingUpdate(); + } + //return; +} + +function int FindLocalPlayerIndex(Player P) +{ + local Engine Engine; + local int I; + + Engine = Class'Engine.Engine'.static.GetEngine(); + I = 0; + J0x34: + + // End:0xAF [Loop If] + if(I < Engine.GamePlayers.Length) + { + // End:0xA1 + if(Engine.GamePlayers[I] == P) + { + return I; + } + I++; + // [Loop Continue] + goto J0x34; + } + return 0; + //return ReturnValue; +} + +defaultproperties +{ + bEnableDebugInput=true + NavAliases[0]="UIKEY_NavFocusUp" + NavAliases[1]="UIKEY_NavFocusDown" + NavAliases[2]="UIKEY_NavFocusLeft" + NavAliases[3]="UIKEY_NavFocusRight" + AxisInputKeys[0]="KEY_Gamepad_LeftStick_Up" + AxisInputKeys[1]="KEY_Gamepad_LeftStick_Down" + AxisInputKeys[2]="KEY_Gamepad_LeftStick_Right" + AxisInputKeys[3]="KEY_Gamepad_LeftStick_Left" + AxisInputKeys[4]="KEY_Gamepad_RightStick_Up" + AxisInputKeys[5]="KEY_Gamepad_RightStick_Down" + AxisInputKeys[6]="KEY_Gamepad_RightStick_Right" + AxisInputKeys[7]="KEY_Gamepad_RightStick_Left" + AxisInputKeys[8]="KEY_SIXAXIS_AccelX" + AxisInputKeys[9]="KEY_SIXAXIS_AccelY" + AxisInputKeys[10]="KEY_SIXAXIS_AccelZ" + AxisInputKeys[11]="KEY_SIXAXIS_Gyro" + AxisInputKeys[12]="KEY_XboxTypeS_LeftX" + AxisInputKeys[13]="KEY_XboxTypeS_LeftY" + AxisInputKeys[14]="KEY_XboxTypeS_RightX" + AxisInputKeys[15]="KEY_XboxTypeS_RightY" +} \ No newline at end of file diff --git a/exported/Engine/Classes/GameViewportClient.uc b/exported/Engine/Classes/GameViewportClient.uc new file mode 100755 index 00000000..3b51595f --- /dev/null +++ b/exported/Engine/Classes/GameViewportClient.uc @@ -0,0 +1,1296 @@ +class GameViewportClient extends ScriptViewportClient within Engine + transient + native + config(Engine); + +enum ESplitScreenType +{ + eSST_NONE, // 0 + eSST_2P_HORIZONTAL, // 1 + eSST_2P_VERTICAL, // 2 + eSST_3P_FAVOR_TOP, // 3 + eSST_3P_FAVOR_BOTTOM, // 4 + eSST_4P, // 5 + eSST_MAX // 6 +}; + +enum ESafeZoneType +{ + eSZ_TOP, // 0 + eSZ_BOTTOM, // 1 + eSZ_LEFT, // 2 + eSZ_RIGHT, // 3 + eSZ_MAX // 4 +}; + +enum ESetMode +{ + SetMode_Toggle, // 0 + SetMode_Enable, // 1 + SetMode_Disable, // 2 + SetMode_MAX // 3 +}; + +enum EDebugDisplayType +{ + DDT_FIELD, // 0 + DDT_STATE, // 1 + DDT_PROPERTY, // 2 + DDT_MAX // 3 +}; + +struct native ShowFlags_Mirror +{ + var native const QWord flags0; + var native const QWord flags1; +}; + +struct ExportShowFlags_Mirror extends ShowFlags_Mirror +{ +}; + +struct native TitleSafeZoneArea +{ + var float MaxPercentX; + var float MaxPercentY; + var float RecommendedPercentX; + var float RecommendedPercentY; + + structdefaultproperties + { + MaxPercentX=0.0000000 + MaxPercentY=0.0000000 + RecommendedPercentX=0.0000000 + RecommendedPercentY=0.0000000 + } +}; + +struct native PerPlayerSplitscreenData +{ + var float SizeX; + var float SizeY; + var float OriginX; + var float OriginY; + + structdefaultproperties + { + SizeX=0.0000000 + SizeY=0.0000000 + OriginX=0.0000000 + OriginY=0.0000000 + } +}; + +struct native SplitscreenData +{ + var array PlayerData; + + structdefaultproperties + { + PlayerData=none + } +}; + +struct native DebugDisplayProperty +{ + var Object Obj; + var name PropertyName; + var string PropertyString; + var GameViewportClient.EDebugDisplayType eDisplayType; + + structdefaultproperties + { + Obj=none + PropertyName="None" + PropertyString="" + eDisplayType=EDebugDisplayType.DDT_FIELD + } +}; + +var private native const noexport Pointer VfTable_FExec; +var const Pointer Viewport; +var const Pointer ViewportFrame; +var init protected array GlobalInteractions; +var Class UIControllerClass; +var UIInteraction UIController; +var Console ViewportConsole; +var const ExportShowFlags_Mirror ShowFlags; +var const localized string LoadingMessage; +var const localized string SavingMessage; +var const localized string ConnectingMessage; +var const localized string PausedMessage; +var const localized string PrecachingMessage; +var bool bShowTitleSafeZone; +var transient bool bDisplayHardwareMouseCursor; +var transient bool bOverrideDiffuseAndSpecular; +var transient bool bIsPlayInEditorViewport; +var transient bool bShowSystemMouseCursor; +var bool bDisableWorldRendering; +var bool bCapturedWorldRendering; +var config bool bDebugNoGFxUI; +var TitleSafeZoneArea TitleSafeZone; +var array SplitscreenInfo; +var protected GameViewportClient.ESplitScreenType DesiredSplitscreenType; +var protected GameViewportClient.ESplitScreenType ActiveSplitscreenType; +var const GameViewportClient.ESplitScreenType Default2PSplitType; +var const GameViewportClient.ESplitScreenType Default3PSplitType; +var string ProgressMessage[2]; +var float ProgressTimeOut; +var float ProgressFadeTime; +var array DebugProperties; +var native const Pointer ScaleformInteraction; +var Pointer PreviousFrameViewFamily; +//var delegate __HandleInputKey__Delegate; +//var delegate __HandleInputAxis__Delegate; +//var delegate __HandleInputChar__Delegate; + +delegate bool HandleInputKey(int ControllerId, name Key, Object.EInputEvent EventType, float AmountDepressed, optional bool bGamepad) +{ + //return ReturnValue; +} + +delegate bool HandleInputAxis(int ControllerId, name Key, float Delta, float DeltaTime, bool bGamepad) +{ + //return ReturnValue; +} + +delegate bool HandleInputChar(int ControllerId, string Unicode) +{ + //return ReturnValue; +} + +// Export UGameViewportClient::execConsoleCommand(FFrame&, void* const) +native function string ConsoleCommand(string Command); + +// Export UGameViewportClient::execGetViewportSize(FFrame&, void* const) +native final function GetViewportSize(out Vector2D out_ViewportSize); + +// Export UGameViewportClient::execIsFullScreenViewport(FFrame&, void* const) +native final function bool IsFullScreenViewport(); + +// Export UGameViewportClient::execGetMousePosition(FFrame&, void* const) +native final function Vector2D GetMousePosition(); + +// Export UGameViewportClient::execShouldForceFullscreenViewport(FFrame&, void* const) +native final function bool ShouldForceFullscreenViewport(); + +// Export UGameViewportClient::execGetNumCustomInteractions(FFrame&, void* const) +native function int GetNumCustomInteractions(); + +// Export UGameViewportClient::execGetCustomInteractionClass(FFrame&, void* const) +native function Class GetCustomInteractionClass(int InIndex); + +// Export UGameViewportClient::execSetCustomInteractionObject(FFrame&, void* const) +native function SetCustomInteractionObject(Interaction InInteraction); + +// Export UGameViewportClient::execNotifySplitscreenLayoutChanged(FFrame&, void* const) +native function NotifySplitscreenLayoutChanged(); + +// Export UGameViewportClient::execForceUpdateMouseCursor(FFrame&, void* const) +native function ForceUpdateMouseCursor(bool bSetCursor); + +// Export UGameViewportClient::execSetMouse(FFrame&, void* const) +native function SetMouse(int X, int Y); + +event LocalPlayer CreatePlayer(int ControllerId, out string OutError, bool bSpawnActor) +{ + local LocalPlayer NewPlayer; + local int InsertIndex; + + // DebugMode: 0 + assert(Outer.LocalPlayerClass != none); + NewPlayer = new (Outer) Outer.LocalPlayerClass; + NewPlayer.InitPostProcessingChain(); + NewPlayer.ViewportClient = self; + NewPlayer.ControllerId = ControllerId; + InsertIndex = AddLocalPlayer(NewPlayer); + // End:0x1AE + if(bSpawnActor && InsertIndex != -1) + { + // End:0x18F + if(int(Outer.GetCurrentWorldInfo().NetMode) != int(NM_Client)) + { + // End:0x18C + if(!NewPlayer.SpawnPlayActor("", OutError)) + { + RemoveLocalPlayer(NewPlayer); + NewPlayer = none; + } + } + else + { + NewPlayer.SendSplitJoin(); + } + } + // End:0x1C1 + if(OutError != "") + { + } + else + { + // End:0x201 + if((NewPlayer != none) && InsertIndex != -1) + { + NotifyPlayerAdded(InsertIndex, NewPlayer); + } + } + return NewPlayer; + //return ReturnValue; +} + +event bool RemovePlayer(LocalPlayer ExPlayer) +{ + local int OldIndex, I; + local array IDMappings; + + // End:0x1DF + if(int(ExPlayer.Actor.Role) == int(ROLE_Authority)) + { + ExPlayer.ViewportClient = none; + // End:0xAF + if(ExPlayer.Actor != none) + { + ExPlayer.Actor.Destroy(); + } + OldIndex = RemoveLocalPlayer(ExPlayer); + // End:0xFB + if(OldIndex != -1) + { + NotifyPlayerRemoved(OldIndex, ExPlayer); + } + // End:0x1B7 + if(OldIndex != Outer.GamePlayers.Length) + { + I = 0; + J0x133: + + // End:0x1B7 [Loop If] + if(I < Outer.GamePlayers.Length) + { + // End:0x190 + if(I < OldIndex) + { + IDMappings.AddItem(I); + } + else + { + IDMappings.AddItem(I + 1); + } + I++; + // [Loop Continue] + goto J0x133; + } + } + // End:0x1DA + if(IDMappings.Length > 0) + { + FixupOwnerReferences(IDMappings); + } + return true; + } + else + { + return false; + } + //return ReturnValue; +} + +final event LocalPlayer FindPlayerByControllerId(int ControllerId) +{ + local int PlayerIndex; + + PlayerIndex = 0; + J0x0B: + + // End:0xBA [Loop If] + if(PlayerIndex < Outer.GamePlayers.Length) + { + // End:0xAC + if(Outer.GamePlayers[PlayerIndex].ControllerId == ControllerId) + { + return Outer.GamePlayers[PlayerIndex]; + } + PlayerIndex++; + // [Loop Continue] + goto J0x0B; + } + return none; + //return ReturnValue; +} + +// Export UGameViewportClient::execIsConsoleEnabled(FFrame&, void* const) +native function bool IsConsoleEnabled(); + +event bool Init(out string OutError) +{ + local PlayerManagerInteraction PlayerInteraction; + local int NumCustomInteractions; + local Class CustomInteractionClass; + local UIInteraction CustomInteraction; + local int Idx; + + // DebugMode: 0 + assert(Outer.ConsoleClass != none); + ActiveSplitscreenType = DesiredSplitscreenType; + // End:0x106 + if(IsConsoleEnabled()) + { + // DebugMode: 0 + assert(Outer.ConsoleClass != none); + ViewportConsole = new (self) Outer.ConsoleClass; + // End:0x106 + if((InsertInteraction(ViewportConsole)) == -1) + { + OutError = "Failed to add interaction to GlobalInteractions array:" @ string(ViewportConsole); + return false; + } + } + NumCustomInteractions = GetNumCustomInteractions(); + Idx = 0; + J0x125: + + // End:0x201 [Loop If] + if(Idx < NumCustomInteractions) + { + CustomInteractionClass = GetCustomInteractionClass(Idx); + CustomInteraction = new (self) CustomInteractionClass; + // End:0x1E0 + if((InsertInteraction(CustomInteraction)) == -1) + { + OutError = "Failed to add interaction to GlobalInteractions array:" @ string(CustomInteraction); + return false; + } + SetCustomInteractionObject(CustomInteraction); + Idx++; + // [Loop Continue] + goto J0x125; + } + // DebugMode: 0 + assert(UIControllerClass != none); + UIController = new (self) UIControllerClass; + // End:0x298 + if((InsertInteraction(UIController)) == -1) + { + OutError = "Failed to add interaction to GlobalInteractions array:" @ string(UIController); + return false; + } + PlayerInteraction = new (self) Class'Engine.PlayerManagerInteraction'; + // End:0x31F + if((InsertInteraction(PlayerInteraction)) == -1) + { + OutError = "Failed to add interaction to GlobalInteractions array:" @ string(PlayerInteraction); + return false; + } + // End:0x338 + if(bDebugNoGFxUI) + { + DebugSetUISystemEnabled(true, false); + } + return CreateInitialPlayer(OutError); + //return ReturnValue; +} + +function bool CreateInitialPlayer(out string OutError) +{ + local int ControllerId; + local bool bFoundInitialGamepad, bResult; + + ControllerId = 0; + J0x0B: + + // End:0x8F [Loop If] + if(ControllerId < 24) + { + // End:0x81 + if(UIController.IsLoggedIn(ControllerId)) + { + bFoundInitialGamepad = true; + bResult = (CreatePlayer(ControllerId, OutError, false)) != none; + // [Explicit Break] + goto J0x8F; + } + ControllerId++; + // [Loop Continue] + goto J0x0B; + } + J0x8F: + + // End:0x13D + if(!bFoundInitialGamepad || !bResult) + { + ControllerId = 0; + J0xBA: + + // End:0x13D [Loop If] + if(ControllerId < 24) + { + // End:0x12F + if(UIController.IsGamepadConnected(ControllerId)) + { + bFoundInitialGamepad = true; + bResult = (CreatePlayer(ControllerId, OutError, false)) != none; + // [Explicit Break] + goto J0x13D; + } + ControllerId++; + // [Loop Continue] + goto J0xBA; + } + } + J0x13D: + + // End:0x180 + if(!bFoundInitialGamepad || !bResult) + { + bResult = (CreatePlayer(0, OutError, false)) != none; + } + return bResult; + //return ReturnValue; +} + +event int InsertInteraction(Interaction NewInteraction, optional int InIndex = -1) +{ + local int Result; + + Result = -1; + // End:0xF9 + if(NewInteraction != none) + { + // End:0x4E + if(InIndex == -1) + { + InIndex = GlobalInteractions.Length; + } + // End:0xF9 + if(InIndex >= 0) + { + Result = Clamp(InIndex, 0, GlobalInteractions.Length); + GlobalInteractions.Insert(Result, 1); + GlobalInteractions[Result] = NewInteraction; + NewInteraction.Init(); + NewInteraction.OnInitialize(); + } + } + return Result; + //return ReturnValue; +} + +event GameSessionEnded() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x5A [Loop If] + if(I < GlobalInteractions.Length) + { + GlobalInteractions[I].NotifyGameSessionEnded(); + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function SetSplitscreenConfiguration(GameViewportClient.ESplitScreenType SplitType) +{ + DesiredSplitscreenType = SplitType; + //return; +} + +function GameViewportClient.ESplitScreenType GetSplitscreenConfiguration() +{ + return ActiveSplitscreenType; + //return ReturnValue; +} + +function UpdateActiveSplitscreenType() +{ + local GameViewportClient.ESplitScreenType SplitType; + + SplitType = DesiredSplitscreenType; + switch(Outer.GamePlayers.Length) + { + // End:0x40 + case 0: + // End:0x53 + case 1: + SplitType = 0; + // End:0xEF + break; + // End:0x98 + case 2: + // End:0x95 + if((int(SplitType) != int(1)) && int(SplitType) != int(2)) + { + SplitType = Default2PSplitType; + } + // End:0xEF + break; + // End:0xDD + case 3: + // End:0xDA + if((int(SplitType) != int(3)) && int(SplitType) != int(4)) + { + SplitType = Default3PSplitType; + } + // End:0xEF + break; + // End:0xFFFF + default: + SplitType = 5; + // End:0xEF + break; + break; + } + ActiveSplitscreenType = SplitType; + //return; +} + +event LayoutPlayers() +{ + local int Idx; + local GameViewportClient.ESplitScreenType SplitType, PreviousSplitType; + + PreviousSplitType = GetSplitscreenConfiguration(); + UpdateActiveSplitscreenType(); + SplitType = GetSplitscreenConfiguration(); + Idx = 0; + J0x3D: + + // End:0x47E [Loop If] + if(Idx < Outer.GamePlayers.Length) + { + // End:0x318 + if((int(SplitType) < SplitscreenInfo.Length) && Idx < SplitscreenInfo[int(SplitType)].PlayerData.Length) + { + Outer.GamePlayers[Idx].Size.X = SplitscreenInfo[int(SplitType)].PlayerData[Idx].SizeX; + Outer.GamePlayers[Idx].Size.Y = SplitscreenInfo[int(SplitType)].PlayerData[Idx].SizeY; + Outer.GamePlayers[Idx].Origin.X = SplitscreenInfo[int(SplitType)].PlayerData[Idx].OriginX; + Outer.GamePlayers[Idx].Origin.Y = SplitscreenInfo[int(SplitType)].PlayerData[Idx].OriginY; + } + else + { + Outer.GamePlayers[Idx].Size.X = 0.0000000; + Outer.GamePlayers[Idx].Size.Y = 0.0000000; + Outer.GamePlayers[Idx].Origin.X = 0.0000000; + Outer.GamePlayers[Idx].Origin.Y = 0.0000000; + } + Idx++; + // [Loop Continue] + goto J0x3D; + } + // End:0x4A3 + if(int(PreviousSplitType) != int(SplitType)) + { + NotifySplitscreenLayoutChanged(); + } + //return; +} + +event GetSubtitleRegion(out Vector2D MinPos, out Vector2D MaxPos) +{ + MaxPos.X = 1.0000000; + MaxPos.Y = ((Outer.GamePlayers.Length == 1) ? 0.9000000 : 0.5000000); + //return; +} + +final function int ConvertLocalPlayerToGamePlayerIndex(LocalPlayer LPlayer) +{ + return Outer.GamePlayers.Find(LPlayer); + //return ReturnValue; +} + +final function bool HasTopSafeZone(int LocalPlayerIndex) +{ + switch(GetSplitscreenConfiguration()) + { + // End:0x19 + case 0: + // End:0x20 + case 2: + return true; + // End:0x25 + case 1: + // End:0x3E + case 3: + return ((LocalPlayerIndex == 0) ? true : false); + // End:0x43 + case 4: + // End:0x5D + case 5: + return ((LocalPlayerIndex < 2) ? true : false); + // End:0xFFFF + default: + return false; + break; + } + //return ReturnValue; +} + +final function bool HasBottomSafeZone(int LocalPlayerIndex) +{ + switch(GetSplitscreenConfiguration()) + { + // End:0x19 + case 0: + // End:0x20 + case 2: + return true; + // End:0x25 + case 1: + // End:0x3E + case 3: + return ((LocalPlayerIndex == 0) ? false : true); + // End:0x43 + case 4: + // End:0x5C + case 5: + return ((LocalPlayerIndex > 1) ? true : false); + // End:0xFFFF + default: + return false; + break; + } + //return ReturnValue; +} + +final function bool HasLeftSafeZone(int LocalPlayerIndex) +{ + switch(GetSplitscreenConfiguration()) + { + // End:0x19 + case 0: + // End:0x20 + case 1: + return true; + // End:0x39 + case 2: + return ((LocalPlayerIndex == 0) ? true : false); + // End:0x53 + case 3: + return ((LocalPlayerIndex < 2) ? true : false); + // End:0x58 + case 4: + // End:0x83 + case 5: + return (((LocalPlayerIndex == 0) || LocalPlayerIndex == 2) ? true : false); + // End:0xFFFF + default: + return false; + break; + } + //return ReturnValue; +} + +final function bool HasRightSafeZone(int LocalPlayerIndex) +{ + switch(GetSplitscreenConfiguration()) + { + // End:0x19 + case 0: + // End:0x20 + case 1: + return true; + // End:0x25 + case 2: + // End:0x3E + case 4: + return ((LocalPlayerIndex > 0) ? true : false); + // End:0x57 + case 3: + return ((LocalPlayerIndex == 1) ? false : true); + // End:0x82 + case 5: + return (((LocalPlayerIndex == 0) || LocalPlayerIndex == 2) ? false : true); + // End:0xFFFF + default: + return false; + break; + } + //return ReturnValue; +} + +final function GetPixelSizeOfScreen(out float out_Width, out float out_Height, Canvas Canvas, int LocalPlayerIndex) +{ + switch(GetSplitscreenConfiguration()) + { + // End:0x6B + case 0: + out_Width = Canvas.ClipX; + out_Height = Canvas.ClipY; + return; + // End:0xC8 + case 1: + out_Width = Canvas.ClipX; + out_Height = Canvas.ClipY * float(2); + return; + // End:0x125 + case 2: + out_Width = Canvas.ClipX * float(2); + out_Height = Canvas.ClipY; + return; + // End:0x1C2 + case 3: + // End:0x164 + if(LocalPlayerIndex == 0) + { + out_Width = Canvas.ClipX; + } + else + { + out_Width = Canvas.ClipX * float(2); + } + out_Height = Canvas.ClipY * float(2); + return; + // End:0x260 + case 4: + // End:0x202 + if(LocalPlayerIndex == 2) + { + out_Width = Canvas.ClipX; + } + else + { + out_Width = Canvas.ClipX * float(2); + } + out_Height = Canvas.ClipY * float(2); + return; + // End:0x2C3 + case 5: + out_Width = Canvas.ClipX * float(2); + out_Height = Canvas.ClipY * float(2); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +final function CalculateSafeZoneValues(out float out_Horizontal, out float out_Vertical, Canvas Canvas, int LocalPlayerIndex, bool bUseMaxPercent) +{ + local float ScreenWidth, ScreenHeight, XSafeZoneToUse, YSafeZoneToUse; + + XSafeZoneToUse = ((bUseMaxPercent) ? TitleSafeZone.MaxPercentX : TitleSafeZone.RecommendedPercentX); + YSafeZoneToUse = ((bUseMaxPercent) ? TitleSafeZone.MaxPercentY : TitleSafeZone.RecommendedPercentY); + GetPixelSizeOfScreen(ScreenWidth, ScreenHeight, Canvas, LocalPlayerIndex); + out_Horizontal = (ScreenWidth * (float(1) - XSafeZoneToUse)) / 2.0000000; + out_Vertical = (ScreenHeight * (float(1) - YSafeZoneToUse)) / 2.0000000; + //return; +} + +final function bool CalculateDeadZoneForAllSides(LocalPlayer LPlayer, Canvas Canvas, out float fTopSafeZone, out float fBottomSafeZone, out float fLeftSafeZone, out float fRightSafeZone, optional bool bUseMaxPercent) +{ + local bool bHasTopSafeZone, bHasBottomSafeZone, bHasRightSafeZone, bHasLeftSafeZone; + local int LocalPlayerIndex; + local float HorizSafeZoneValue, VertSafeZoneValue; + + // End:0x1F4 + if(LPlayer != none) + { + LocalPlayerIndex = ConvertLocalPlayerToGamePlayerIndex(LPlayer); + // End:0x1F4 + if(LocalPlayerIndex != -1) + { + bHasTopSafeZone = HasTopSafeZone(LocalPlayerIndex); + bHasBottomSafeZone = HasBottomSafeZone(LocalPlayerIndex); + bHasLeftSafeZone = HasLeftSafeZone(LocalPlayerIndex); + bHasRightSafeZone = HasRightSafeZone(LocalPlayerIndex); + // End:0x1F4 + if(((bHasTopSafeZone || bHasBottomSafeZone) || bHasLeftSafeZone) || bHasRightSafeZone) + { + CalculateSafeZoneValues(HorizSafeZoneValue, VertSafeZoneValue, Canvas, LocalPlayerIndex, bUseMaxPercent); + // End:0x14D + if(bHasTopSafeZone) + { + fTopSafeZone = VertSafeZoneValue; + } + else + { + fTopSafeZone = 0.0000000; + } + // End:0x17F + if(bHasBottomSafeZone) + { + fBottomSafeZone = VertSafeZoneValue; + } + else + { + fBottomSafeZone = 0.0000000; + } + // End:0x1B1 + if(bHasLeftSafeZone) + { + fLeftSafeZone = HorizSafeZoneValue; + } + else + { + fLeftSafeZone = 0.0000000; + } + // End:0x1E3 + if(bHasRightSafeZone) + { + fRightSafeZone = HorizSafeZoneValue; + } + else + { + fRightSafeZone = 0.0000000; + } + return true; + } + } + } + return false; + //return ReturnValue; +} + +event Tick(float DeltaTime) +{ + //return; +} + +function DrawTitleSafeArea(Canvas Canvas) +{ + Canvas.SetDrawColor(255, 0, 0, 255); + Canvas.SetPos((Canvas.ClipX * (float(1) - TitleSafeZone.MaxPercentX)) / 2.0000000, (Canvas.ClipY * (float(1) - TitleSafeZone.MaxPercentY)) / 2.0000000); + Canvas.DrawBox(Canvas.ClipX * TitleSafeZone.MaxPercentX, Canvas.ClipY * TitleSafeZone.MaxPercentY); + Canvas.SetDrawColor(255, 255, 0, 255); + Canvas.SetPos((Canvas.ClipX * (float(1) - TitleSafeZone.RecommendedPercentX)) / 2.0000000, (Canvas.ClipY * (float(1) - TitleSafeZone.RecommendedPercentY)) / 2.0000000); + Canvas.DrawBox(Canvas.ClipX * TitleSafeZone.RecommendedPercentX, Canvas.ClipY * TitleSafeZone.RecommendedPercentY); + //return; +} + +event PostRender(Canvas Canvas) +{ + // End:0x20 + if(bShowTitleSafeZone) + { + DrawTitleSafeArea(Canvas); + } + // End:0x57 + if(ViewportConsole != none) + { + ViewportConsole.PostRender_Console(Canvas); + } + DrawTransition(Canvas); + //return; +} + +function DisplayProgressMessage(Canvas Canvas) +{ + local int I, LineCount; + local float FontDX, FontDY, X, Y; + local byte Alpha; + local float TimeLeft; + + TimeLeft = ProgressTimeOut - Class'Engine.Engine'.static.GetCurrentWorldInfo().TimeSeconds; + Alpha = ((TimeLeft >= ProgressFadeTime) ? 255 : byte((float(255) * TimeLeft) / ProgressFadeTime)); + LineCount = 0; + I = 0; + J0xA0: + + // End:0xE3 [Loop If] + if(I < 2) + { + // End:0xD5 + if(ProgressMessage[I] != "") + { + LineCount++; + } + I++; + // [Loop Continue] + goto J0xA0; + } + Canvas.Font = Class'Engine.Engine'.static.GetMediumFont(); + Canvas.TextSize("A", FontDX, FontDY); + X = 0.5000000 * float(Canvas.SizeX); + Y = 0.5000000 * float(Canvas.SizeY); + Y -= (FontDY * (float(LineCount) / 2.0000000)); + Canvas.DrawColor.R = 255; + Canvas.DrawColor.G = 255; + Canvas.DrawColor.B = 255; + I = 0; + J0x288: + + // End:0x3D0 [Loop If] + if(I < 2) + { + // End:0x3C2 + if(ProgressMessage[I] != "") + { + Canvas.DrawColor.A = Alpha; + Canvas.TextSize(ProgressMessage[I], FontDX, FontDY); + Canvas.SetPos(X - (FontDX / 2.0000000), Y); + Canvas.DrawText(ProgressMessage[I]); + Y += FontDY; + } + I++; + // [Loop Continue] + goto J0x288; + } + //return; +} + +function DrawTransition(Canvas Canvas) +{ + switch(Outer.TransitionType) + { + // End:0x4C + case 2: + DrawTransitionMessage(Canvas, LoadingMessage); + // End:0xDF + break; + // End:0x70 + case 3: + DrawTransitionMessage(Canvas, SavingMessage); + // End:0xDF + break; + // End:0x94 + case 4: + DrawTransitionMessage(Canvas, ConnectingMessage); + // End:0xDF + break; + // End:0xB8 + case 5: + DrawTransitionMessage(Canvas, PrecachingMessage); + // End:0xDF + break; + // End:0xDC + case 1: + DrawTransitionMessage(Canvas, PausedMessage); + // End:0xDF + break; + // End:0xFFFF + default: + break; + } + //return; +} + +function DrawTransitionMessage(Canvas Canvas, string Message) +{ + local float XL, YL; + + Canvas.Font = Class'Engine.Engine'.static.GetLargeFont(); + Canvas.bCenter = false; + Canvas.StrLen(Message, XL, YL); + Canvas.SetPos((0.5000000 * (Canvas.ClipX - XL)) + float(1), ((0.6600000 * Canvas.ClipY) - (YL * 0.5000000)) + float(1)); + Canvas.SetDrawColor(0, 0, 0); + Canvas.DrawText(Message, false); + Canvas.SetPos(0.5000000 * (Canvas.ClipX - XL), (0.6600000 * Canvas.ClipY) - (YL * 0.5000000)); + Canvas.SetDrawColor(0, 0, 255); + Canvas.DrawText(Message, false); + //return; +} + +final function NotifyPlayerAdded(int PlayerIndex, LocalPlayer AddedPlayer) +{ + local int InteractionIndex; + + LayoutPlayers(); + InteractionIndex = 0; + J0x15: + + // End:0x8F [Loop If] + if(InteractionIndex < GlobalInteractions.Length) + { + // End:0x81 + if(GlobalInteractions[InteractionIndex] != none) + { + GlobalInteractions[InteractionIndex].NotifyPlayerAdded(PlayerIndex, AddedPlayer); + } + InteractionIndex++; + // [Loop Continue] + goto J0x15; + } + //return; +} + +final function NotifyPlayerRemoved(int PlayerIndex, LocalPlayer RemovedPlayer) +{ + local int InteractionIndex; + + LayoutPlayers(); + InteractionIndex = GlobalInteractions.Length - 1; + J0x21: + + // End:0x92 [Loop If] + if(InteractionIndex >= 0) + { + // End:0x84 + if(GlobalInteractions[InteractionIndex] != none) + { + GlobalInteractions[InteractionIndex].NotifyPlayerRemoved(PlayerIndex, RemovedPlayer); + } + InteractionIndex--; + // [Loop Continue] + goto J0x21; + } + //return; +} + +private final function int AddLocalPlayer(LocalPlayer NewPlayer) +{ + local int InsertIndex; + + InsertIndex = -1; + // End:0x79 + if(NewPlayer != none) + { + InsertIndex = Outer.GamePlayers.Length; + Outer.GamePlayers[InsertIndex] = NewPlayer; + } + return InsertIndex; + //return ReturnValue; +} + +private final function int RemoveLocalPlayer(LocalPlayer ExistingPlayer) +{ + local int Index; + + Index = Outer.GamePlayers.Find(ExistingPlayer); + // End:0x72 + if(Index != -1) + { + Outer.GamePlayers.Remove(Index, 1); + } + return Index; + //return ReturnValue; +} + +event SetProgressMessage(PlayerController.EProgressMessageType MessageType, string Message, optional string Title, optional bool bIgnoreFutureNetworkMessages) +{ + local WorldInfo WI; + + WI = Class'Engine.Engine'.static.GetCurrentWorldInfo(); + // End:0x4C + if(int(MessageType) == int(0)) + { + ClearProgressMessages(); + } + else + { + // End:0x18C + if((int(MessageType) == int(4)) || int(MessageType) == int(7)) + { + // End:0xD7 + if(((WI != none) && int(WI.NetMode) == int(NM_Client)) && WI.BeginHostMigration()) + { + } + else + { + // End:0x189 + if((Outer.GamePlayers[0].Actor == none) || !Outer.GamePlayers[0].Actor.bIgnoreNetworkMessages) + { + NotifyConnectionError(MessageType, Message, Title); + } + } + } + else + { + // End:0x215 + if(int(MessageType) == int(6)) + { + Outer.GamePlayers[0].Actor.bIgnoreNetworkMessages = false; + NotifyConnectionError(MessageType, Message, Title); + } + else + { + // End:0x252 + if(Title != "") + { + ProgressMessage[0] = Title; + ProgressMessage[1] = Message; + } + else + { + ProgressMessage[1] = ""; + ProgressMessage[0] = Message; + } + } + } + } + // End:0x358 + if((Outer.GamePlayers[0].Actor != none) && !Outer.GamePlayers[0].Actor.bIgnoreNetworkMessages) + { + Outer.GamePlayers[0].Actor.bIgnoreNetworkMessages = bIgnoreFutureNetworkMessages; + } + //return; +} + +function NotifyConnectionError(PlayerController.EProgressMessageType MessageType, optional string Message = Localize("Errors", "ConnectionFailed", "Engine"), optional string Title = Localize("Errors", "ConnectionFailed_Title", "Engine")) +{ + local WorldInfo WI; + + WI = Class'Engine.Engine'.static.GetCurrentWorldInfo(); + // End:0x134 + if(int(WI.NetMode) != int(NM_Standalone)) + { + // End:0x112 + if(WI.Game != none) + { + WI.Game.bHasNetworkError = true; + } + ConsoleCommand("start ?failed"); + } + //return; +} + +exec event SetProgressTime(float T) +{ + ProgressTimeOut = T + Class'Engine.Engine'.static.GetCurrentWorldInfo().TimeSeconds; + //return; +} + +exec function ClearProgressMessages() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x3F [Loop If] + if(I < 2) + { + ProgressMessage[I] = ""; + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +// Export UGameViewportClient::execGetPlayerOwner(FFrame&, void* const) +native final function LocalPlayer GetPlayerOwner(int PlayerIndex); + +// Export UGameViewportClient::execFixupOwnerReferences(FFrame&, void* const) +native final function FixupOwnerReferences(array IDMappings); + +function OnPrimaryPlayerSwitch(LocalPlayer OldPrimaryPlayer, LocalPlayer NewPrimaryPlayer) +{ + //return; +} + +function BecomePrimaryPlayer(int PlayerIndex) +{ + local array OtherPlayers; + local LocalPlayer PlayerOwner, NextPlayer, OriginalPrimaryPlayer; + local int NumPlayersRemoved, I, Count; + local array IDMappings; + + // End:0x3E9 + if(((UIController != none) && PlayerIndex > 0) && PlayerIndex < UIController.GetPlayerCount()) + { + OriginalPrimaryPlayer = GetPlayerOwner(0); + PlayerOwner = GetPlayerOwner(PlayerIndex); + // End:0x92 + if(PlayerOwner == none) + { + return; + } + // End:0x350 + if(PlayerOwner != none) + { + NextPlayer = OriginalPrimaryPlayer; + NumPlayersRemoved = 0; + J0xBF: + + // End:0x195 [Loop If] + if((NextPlayer != none) && NextPlayer != PlayerOwner) + { + UIController.NotifyPlayerRemoved(0, NextPlayer); + UIController.Outer.Outer.GamePlayers.Remove(0, 1); + OtherPlayers.AddItem(NextPlayer); + NextPlayer = GetPlayerOwner(0); + NumPlayersRemoved++; + // [Loop Continue] + goto J0xBF; + } + I = 0; + J0x1A0: + + // End:0x226 [Loop If] + if(I < UIController.Outer.Outer.GamePlayers.Length) + { + IDMappings.AddItem(I + NumPlayersRemoved); + I++; + // [Loop Continue] + goto J0x1A0; + } + Count = 0; + J0x231: + + // End:0x350 [Loop If] + if(OtherPlayers.Length > 0) + { + NextPlayer = OtherPlayers[0]; + UIController.Outer.Outer.GamePlayers.AddItem(NextPlayer); + UIController.NotifyPlayerAdded(UIController.Outer.Outer.GamePlayers.Length - 1, NextPlayer); + OtherPlayers.Remove(0, 1); + IDMappings.AddItem(Count); + Count++; + // [Loop Continue] + goto J0x231; + } + } + NextPlayer = GetPlayerOwner(0); + // End:0x3E9 + if(OriginalPrimaryPlayer != NextPlayer) + { + LayoutPlayers(); + FixupOwnerReferences(IDMappings); + NextPlayer.Actor.ReloadProfileSettings(); + OnPrimaryPlayerSwitch(OriginalPrimaryPlayer, NextPlayer); + } + } + //return; +} + +// Export UGameViewportClient::execEnableScaleform(FFrame&, void* const) +native final function EnableScaleform(); + +// Export UGameViewportClient::execDisableScaleform(FFrame&, void* const) +native final function DisableScaleform(); + +// Export UGameViewportClient::execIsScaleformEnabled(FFrame&, void* const) +native final function bool IsScaleformEnabled(); + +// Export UGameViewportClient::execDebugSetUISystemEnabled(FFrame&, void* const) +native function DebugSetUISystemEnabled(bool bOldUISystemActive, bool bGFxUISystemActive); + +simulated event SetHardwareMouseCursorVisibility(bool bIsVisible) +{ + local Vector2D ViewportSize; + + // End:0x31 + if(bIsVisible && !bDisplayHardwareMouseCursor) + { + GetViewportSize(ViewportSize); + } + bDisplayHardwareMouseCursor = bIsVisible; + ForceUpdateMouseCursor(true); + //return; +} + +defaultproperties +{ + UIControllerClass=Class'Engine.UIInteraction' + LoadingMessage="LOADING" + SavingMessage="SAVING" + ConnectingMessage="CONNECTING" + PausedMessage="PAUSED" + PrecachingMessage="PRECACHING" + TitleSafeZone=(MaxPercentX=1.0000000,MaxPercentY=1.0000000,RecommendedPercentX=1.0000000,RecommendedPercentY=1.0000000) + SplitscreenInfo[0]=(PlayerData=((SizeX=1.0000000,SizeY=1.0000000,OriginX=0.0000000,OriginY=0.0000000))) + SplitscreenInfo[1]=(PlayerData=((SizeX=1.0000000,SizeY=0.5000000,OriginX=0.0000000,OriginY=0.0000000),(SizeX=1.0000000,SizeY=0.5000000,OriginX=0.0000000,OriginY=0.5000000))) + SplitscreenInfo[2]=(PlayerData=((SizeX=0.5000000,SizeY=1.0000000,OriginX=0.0000000,OriginY=0.0000000),(SizeX=0.5000000,SizeY=1.0000000,OriginX=0.5000000,OriginY=0.0000000))) + SplitscreenInfo[3]=(PlayerData=((SizeX=1.0000000,SizeY=0.5000000,OriginX=0.0000000,OriginY=0.0000000),(SizeX=0.5000000,SizeY=0.5000000,OriginX=0.0000000,OriginY=0.5000000),(SizeX=0.5000000,SizeY=0.5000000,OriginX=0.5000000,OriginY=0.5000000))) + SplitscreenInfo[4]=(PlayerData=((SizeX=0.5000000,SizeY=0.5000000,OriginX=0.0000000,OriginY=0.0000000),(SizeX=0.5000000,SizeY=0.5000000,OriginX=0.5000000,OriginY=0.0000000),(SizeX=1.0000000,SizeY=0.5000000,OriginX=0.0000000,OriginY=0.5000000))) + SplitscreenInfo[5]=(PlayerData=((SizeX=0.5000000,SizeY=0.5000000,OriginX=0.0000000,OriginY=0.0000000),(SizeX=0.5000000,SizeY=0.5000000,OriginX=0.5000000,OriginY=0.0000000),(SizeX=0.5000000,SizeY=0.5000000,OriginX=0.0000000,OriginY=0.5000000),(SizeX=0.5000000,SizeY=0.5000000,OriginX=0.5000000,OriginY=0.5000000))) + Default2PSplitType=ESplitScreenType.eSST_2P_HORIZONTAL + Default3PSplitType=ESplitScreenType.eSST_3P_FAVOR_TOP + ProgressTimeOut=8.0000000 + ProgressFadeTime=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/GameplayEvents.uc b/exported/Engine/Classes/GameplayEvents.uc new file mode 100755 index 00000000..a4fb0fcf --- /dev/null +++ b/exported/Engine/Classes/GameplayEvents.uc @@ -0,0 +1,263 @@ +class GameplayEvents extends Object + abstract + native; + +const HeaderFlags_NoEventStrings = 1; + +enum EGameStatGroups +{ + GSG_EngineStats, // 0 + GSG_Game, // 1 + GSG_Team, // 2 + GSG_Player, // 3 + GSG_Weapon, // 4 + GSG_Damage, // 5 + GSG_Projectile, // 6 + GSG_Pawn, // 7 + GSG_GameSpecific, // 8 + GSG_Aggregate, // 9 + GSG_MAX // 10 +}; + +struct native GameStatGroup +{ + var GameplayEvents.EGameStatGroups Group; + var int Level; + + structdefaultproperties + { + Group=EGameStatGroups.GSG_EngineStats + Level=0 + } +}; + +struct native GameplayEventsHeader +{ + var const int EngineVersion; + var const int StatsWriterVersion; + var const int StreamOffset; + var const int AggregateOffset; + var const int FooterOffset; + var const int TotalStreamSize; + var const int FileSize; + var string FilterClass; + var int Flags; + + structdefaultproperties + { + EngineVersion=0 + StatsWriterVersion=0 + StreamOffset=0 + AggregateOffset=0 + FooterOffset=0 + TotalStreamSize=0 + FileSize=0 + FilterClass="" + Flags=0 + } +}; + +struct native GameSessionInformation +{ + var int AppTitleID; + var int PlatformType; + var string Language; + var const string GameplaySessionTimestamp; + var const float GameplaySessionStartTime; + var const float GameplaySessionEndTime; + var const bool bGameplaySessionInProgress; + var const string GameplaySessionID; + var const string GameClassName; + var const string MapName; + var const string MapURL; + var const int SessionInstance; + var const int GameTypeId; + var const UniqueNetId OwningNetId; + var int PlaylistId; + + structdefaultproperties + { + AppTitleID=0 + PlatformType=0 + Language="" + GameplaySessionTimestamp="" + GameplaySessionStartTime=0.0000000 + GameplaySessionEndTime=0.0000000 + bGameplaySessionInProgress=false + GameplaySessionID="" + GameClassName="" + MapName="" + MapURL="" + SessionInstance=0 + GameTypeId=0 + OwningNetId=(Uid=()) + PlaylistId=0 + } +}; + +struct native TeamInformation +{ + var int TeamIndex; + var string TeamName; + var Color TeamColor; + var int MaxSize; + + structdefaultproperties + { + TeamIndex=0 + TeamName="" + TeamColor=(R=0,G=0,B=0,A=0) + MaxSize=0 + } +}; + +struct native PlayerInformation +{ + var name ControllerName; + var string PlayerName; + var UniqueNetId UniqueId; + var bool bIsBot; + var int BotId; + var string BotName; + var int Taskforce; + + structdefaultproperties + { + ControllerName="None" + PlayerName="" + UniqueId=(Uid=()) + bIsBot=false + BotId=0 + BotName="" + Taskforce=0 + } +}; + +struct native GameplayEventMetaData +{ + var const int EventID; + var const name EventName; + var const GameStatGroup StatGroup; + var const int EventDataType; + + structdefaultproperties + { + EventID=0 + EventName="None" + StatGroup=(Group=EGameStatGroups.GSG_EngineStats,Level=0) + EventDataType=0 + } +}; + +struct native WeaponClassEventData +{ + var name WeaponClassName; + + structdefaultproperties + { + WeaponClassName="None" + } +}; + +struct native DamageClassEventData +{ + var name DamageClassName; + + structdefaultproperties + { + DamageClassName="None" + } +}; + +struct native ProjectileClassEventData +{ + var name ProjectileClassName; + + structdefaultproperties + { + ProjectileClassName="None" + } +}; + +struct native PawnClassEventData +{ + var name PawnClassName; + + structdefaultproperties + { + PawnClassName="None" + } +}; + +var native const Pointer Archive; +var private const string StatsFileName; +var GameplayEventsHeader Header; +var GameSessionInformation CurrentSessionInfo; +var const array PlayerList; +var const array TeamList; +var array SupportedEvents; +var array WeaponClassArray; +var array DamageClassArray; +var array ProjectileClassArray; +var array PawnClassArray; +var array ActorArray; +var array SoundCueArray; + +function bool OpenStatsFile(string Filename) +{ + //return ReturnValue; +} + +function CloseStatsFile() +{ + //return; +} + +event string GetFilename() +{ + return StatsFileName; + //return ReturnValue; +} + +defaultproperties +{ + SupportedEvents[0]=(EventID=-1,EventName="Unknown",StatGroup=(Group=EGameStatGroups.GSG_EngineStats,Level=999),EventDataType=1) + SupportedEvents[1]=(EventID=0,EventName="Match Started",StatGroup=(Group=EGameStatGroups.GSG_Game,Level=1),EventDataType=1) + SupportedEvents[2]=(EventID=1,EventName="Match Ended",StatGroup=(Group=EGameStatGroups.GSG_Game,Level=1),EventDataType=1) + SupportedEvents[3]=(EventID=2,EventName="Round Started",StatGroup=(Group=EGameStatGroups.GSG_Game,Level=1),EventDataType=1) + SupportedEvents[4]=(EventID=3,EventName="Round Ended",StatGroup=(Group=EGameStatGroups.GSG_Game,Level=1),EventDataType=1) + SupportedEvents[5]=(EventID=6,EventName="Game Class",StatGroup=(Group=EGameStatGroups.GSG_Game,Level=1),EventDataType=0) + SupportedEvents[6]=(EventID=7,EventName="Game Options",StatGroup=(Group=EGameStatGroups.GSG_Game,Level=1),EventDataType=0) + SupportedEvents[7]=(EventID=8,EventName="Map Name",StatGroup=(Group=EGameStatGroups.GSG_Game,Level=1),EventDataType=0) + SupportedEvents[8]=(EventID=50,EventName="Team Created",StatGroup=(Group=EGameStatGroups.GSG_Team,Level=1),EventDataType=2) + SupportedEvents[9]=(EventID=51,EventName="Team Score",StatGroup=(Group=EGameStatGroups.GSG_Team,Level=1),EventDataType=2) + SupportedEvents[10]=(EventID=4,EventName="Match Won",StatGroup=(Group=EGameStatGroups.GSG_Team,Level=1),EventDataType=2) + SupportedEvents[11]=(EventID=5,EventName="Round Won",StatGroup=(Group=EGameStatGroups.GSG_Team,Level=1),EventDataType=2) + SupportedEvents[12]=(EventID=52,EventName="Round Stalemate",StatGroup=(Group=EGameStatGroups.GSG_Team,Level=1),EventDataType=2) + SupportedEvents[13]=(EventID=100,EventName="Player Login",StatGroup=(Group=EGameStatGroups.GSG_Player,Level=1),EventDataType=7) + SupportedEvents[14]=(EventID=101,EventName="Player Logout",StatGroup=(Group=EGameStatGroups.GSG_Player,Level=1),EventDataType=7) + SupportedEvents[15]=(EventID=104,EventName="Player Killed",StatGroup=(Group=EGameStatGroups.GSG_Player,Level=1),EventDataType=9) + SupportedEvents[16]=(EventID=108,EventName="Player Death",StatGroup=(Group=EGameStatGroups.GSG_Player,Level=1),EventDataType=9) + SupportedEvents[17]=(EventID=106,EventName="Player Team Change",StatGroup=(Group=EGameStatGroups.GSG_Player,Level=1),EventDataType=3) + SupportedEvents[18]=(EventID=102,EventName="Player Spawn",StatGroup=(Group=EGameStatGroups.GSG_Player,Level=1),EventDataType=6) + SupportedEvents[19]=(EventID=105,EventName="Player Locations",StatGroup=(Group=EGameStatGroups.GSG_Player,Level=10),EventDataType=8) + SupportedEvents[20]=(EventID=107,EventName="Kill Streak",StatGroup=(Group=EGameStatGroups.GSG_Player,Level=1),EventDataType=3) + SupportedEvents[21]=(EventID=103,EventName="Player Match Won",StatGroup=(Group=EGameStatGroups.GSG_Player,Level=1),EventDataType=3) + SupportedEvents[22]=(EventID=109,EventName="Player Round Won",StatGroup=(Group=EGameStatGroups.GSG_Player,Level=1),EventDataType=3) + SupportedEvents[23]=(EventID=110,EventName="Player Round Stalemate",StatGroup=(Group=EGameStatGroups.GSG_Player,Level=1),EventDataType=3) + SupportedEvents[24]=(EventID=150,EventName="Weapon Damage",StatGroup=(Group=EGameStatGroups.GSG_Weapon,Level=10),EventDataType=12) + SupportedEvents[25]=(EventID=151,EventName="Melee Damage",StatGroup=(Group=EGameStatGroups.GSG_Weapon,Level=10),EventDataType=12) + SupportedEvents[26]=(EventID=152,EventName="Weapon Fired",StatGroup=(Group=EGameStatGroups.GSG_Weapon,Level=10),EventDataType=11) + SupportedEvents[27]=(EventID=200,EventName="Normal Kill",StatGroup=(Group=EGameStatGroups.GSG_Weapon,Level=1),EventDataType=9) + SupportedEvents[28]=(EventID=35,EventName="Memory Usage",StatGroup=(Group=EGameStatGroups.GSG_EngineStats,Level=10),EventDataType=1) + SupportedEvents[29]=(EventID=37,EventName="Network Usage IN",StatGroup=(Group=EGameStatGroups.GSG_EngineStats,Level=10),EventDataType=1) + SupportedEvents[30]=(EventID=38,EventName="Network Usage OUT",StatGroup=(Group=EGameStatGroups.GSG_EngineStats,Level=10),EventDataType=1) + SupportedEvents[31]=(EventID=39,EventName="Ping",StatGroup=(Group=EGameStatGroups.GSG_EngineStats,Level=10),EventDataType=1) + SupportedEvents[32]=(EventID=36,EventName="Frame Rate",StatGroup=(Group=EGameStatGroups.GSG_EngineStats,Level=10),EventDataType=1) + SupportedEvents[33]=(EventID=41,EventName="Game thread time",StatGroup=(Group=EGameStatGroups.GSG_EngineStats,Level=10),EventDataType=18) + SupportedEvents[34]=(EventID=40,EventName="Render thread time",StatGroup=(Group=EGameStatGroups.GSG_EngineStats,Level=10),EventDataType=18) + SupportedEvents[35]=(EventID=42,EventName="GPU render time",StatGroup=(Group=EGameStatGroups.GSG_EngineStats,Level=10),EventDataType=18) + SupportedEvents[36]=(EventID=43,EventName="Total frame time",StatGroup=(Group=EGameStatGroups.GSG_EngineStats,Level=10),EventDataType=18) + SupportedEvents[37]=(EventID=302,EventName="AI Path Failure",StatGroup=(Group=EGameStatGroups.GSG_Game,Level=10),EventDataType=14) + SupportedEvents[38]=(EventID=305,EventName="AI Firelink",StatGroup=(Group=EGameStatGroups.GSG_Game,Level=10),EventDataType=14) +} \ No newline at end of file diff --git a/exported/Engine/Classes/GameplayEventsHandler.uc b/exported/Engine/Classes/GameplayEventsHandler.uc new file mode 100755 index 00000000..e74c12ff --- /dev/null +++ b/exported/Engine/Classes/GameplayEventsHandler.uc @@ -0,0 +1,65 @@ +class GameplayEventsHandler extends Object + abstract + native + config(GameStats); + +var config array EventIDFilter; +var config array GroupFilter; +var private transient GameplayEventsReader Reader; + +function SetReader(GameplayEventsReader NewReader) +{ + Reader = NewReader; + //return; +} + +// Export UGameplayEventsHandler::execPreProcessStream(FFrame&, void* const) +native event PreProcessStream(); + +event PostProcessStream() +{ + //return; +} + +event ResolveGroupFilters() +{ + local int EventIdx, FilterIdx; + + EventIdx = 0; + J0x0B: + + // End:0x185 [Loop If] + if(EventIdx < Reader.SupportedEvents.Length) + { + FilterIdx = GroupFilter.Find('Group', Reader.SupportedEvents[EventIdx].StatGroup.Group); + // End:0x177 + if(FilterIdx != -1) + { + // End:0x177 + if(Reader.SupportedEvents[EventIdx].StatGroup.Level > GroupFilter[FilterIdx].Level) + { + AddFilter(Reader.SupportedEvents[EventIdx].EventID); + } + } + EventIdx++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function AddFilter(int EventID) +{ + // End:0x36 + if(EventIDFilter.Find(EventID) == -1) + { + EventIDFilter.AddItem(EventID); + } + //return; +} + +function RemoveFilter(int EventID) +{ + EventIDFilter.RemoveItem(EventID); + //return; +} diff --git a/exported/Engine/Classes/GameplayEventsReader.uc b/exported/Engine/Classes/GameplayEventsReader.uc new file mode 100755 index 00000000..bf5e285d --- /dev/null +++ b/exported/Engine/Classes/GameplayEventsReader.uc @@ -0,0 +1,72 @@ +class GameplayEventsReader extends GameplayEvents + native; + +var transient array RegisteredHandlers; + +// Export UGameplayEventsReader::execOpenStatsFile(FFrame&, void* const) +native function bool OpenStatsFile(string Filename); + +// Export UGameplayEventsReader::execCloseStatsFile(FFrame&, void* const) +native function CloseStatsFile(); + +// Export UGameplayEventsReader::execSerializeHeader(FFrame&, void* const) +protected native function bool SerializeHeader(); + +event RegisterHandler(GameplayEventsHandler NewHandler) +{ + local int AddIndex; + + // End:0x89 + if(RegisteredHandlers.Find(NewHandler) == -1) + { + AddIndex = RegisteredHandlers.Length; + RegisteredHandlers.Length = RegisteredHandlers.Length + 1; + RegisteredHandlers[AddIndex] = NewHandler; + NewHandler.SetReader(self); + } + //return; +} + +event UnregisterHandler(GameplayEventsHandler ExistingHandler) +{ + local int RemoveIndex; + + RemoveIndex = RegisteredHandlers.Find(ExistingHandler); + // End:0x68 + if(RemoveIndex != -1) + { + RegisteredHandlers.Remove(RemoveIndex, 1); + ExistingHandler.SetReader(none); + } + //return; +} + +// Export UGameplayEventsReader::execProcessStreamStart(FFrame&, void* const) +private native final function ProcessStreamStart(); + +// Export UGameplayEventsReader::execProcessStream(FFrame&, void* const) +native function ProcessStream(); + +// Export UGameplayEventsReader::execProcessStreamEnd(FFrame&, void* const) +private native final function ProcessStreamEnd(); + +// Export UGameplayEventsReader::execGetSessionID(FFrame&, void* const) +native function string GetSessionID(); + +// Export UGameplayEventsReader::execGetTitleID(FFrame&, void* const) +native function int GetTitleID(); + +// Export UGameplayEventsReader::execGetPlatform(FFrame&, void* const) +native function int GetPlatform(); + +// Export UGameplayEventsReader::execGetSessionTimestamp(FFrame&, void* const) +native function string GetSessionTimestamp(); + +// Export UGameplayEventsReader::execGetSessionStart(FFrame&, void* const) +native function float GetSessionStart(); + +// Export UGameplayEventsReader::execGetSessionEnd(FFrame&, void* const) +native function float GetSessionEnd(); + +// Export UGameplayEventsReader::execGetSessionDuration(FFrame&, void* const) +native function float GetSessionDuration(); diff --git a/exported/Engine/Classes/GameplayEventsUploadAnalytics.uc b/exported/Engine/Classes/GameplayEventsUploadAnalytics.uc new file mode 100755 index 00000000..3e32316a --- /dev/null +++ b/exported/Engine/Classes/GameplayEventsUploadAnalytics.uc @@ -0,0 +1,80 @@ +class GameplayEventsUploadAnalytics extends GameplayEventsWriterBase + native; + +// Export UGameplayEventsUploadAnalytics::execStartLogging(FFrame&, void* const) +native function StartLogging(optional float HeartbeatDelta); + +// Export UGameplayEventsUploadAnalytics::execResetLogging(FFrame&, void* const) +native function ResetLogging(optional float HeartbeatDelta); + +// Export UGameplayEventsUploadAnalytics::execEndLogging(FFrame&, void* const) +native function EndLogging(); + +// Export UGameplayEventsUploadAnalytics::execLogGameIntEvent(FFrame&, void* const) +native function LogGameIntEvent(int EventID, int Value); + +// Export UGameplayEventsUploadAnalytics::execLogGameStringEvent(FFrame&, void* const) +native function LogGameStringEvent(int EventID, string Value); + +// Export UGameplayEventsUploadAnalytics::execLogGameFloatEvent(FFrame&, void* const) +native function LogGameFloatEvent(int EventID, float Value); + +// Export UGameplayEventsUploadAnalytics::execLogGamePositionEvent(FFrame&, void* const) +native function LogGamePositionEvent(int EventID, const out Vector Position, float Value); + +// Export UGameplayEventsUploadAnalytics::execLogTeamIntEvent(FFrame&, void* const) +native function LogTeamIntEvent(int EventID, TeamInfo Team, int Value); + +// Export UGameplayEventsUploadAnalytics::execLogTeamFloatEvent(FFrame&, void* const) +native function LogTeamFloatEvent(int EventID, TeamInfo Team, float Value); + +// Export UGameplayEventsUploadAnalytics::execLogTeamStringEvent(FFrame&, void* const) +native function LogTeamStringEvent(int EventID, TeamInfo Team, string Value); + +// Export UGameplayEventsUploadAnalytics::execLogPlayerIntEvent(FFrame&, void* const) +native function LogPlayerIntEvent(int EventID, Controller Player, int Value); + +// Export UGameplayEventsUploadAnalytics::execLogPlayerFloatEvent(FFrame&, void* const) +native function LogPlayerFloatEvent(int EventID, Controller Player, float Value); + +// Export UGameplayEventsUploadAnalytics::execLogPlayerStringEvent(FFrame&, void* const) +native function LogPlayerStringEvent(int EventID, Controller Player, string EventString); + +// Export UGameplayEventsUploadAnalytics::execLogPlayerSpawnEvent(FFrame&, void* const) +native function LogPlayerSpawnEvent(int EventID, Controller Player, Class PawnClass, int TeamID); + +// Export UGameplayEventsUploadAnalytics::execLogPlayerLoginChange(FFrame&, void* const) +native function LogPlayerLoginChange(int EventID, Controller Player, string PlayerName, UniqueNetId PlayerID, bool bSplitScreen); + +// Export UGameplayEventsUploadAnalytics::execLogAllPlayerPositionsEvent(FFrame&, void* const) +native function LogAllPlayerPositionsEvent(int EventID); + +// Export UGameplayEventsUploadAnalytics::execLogPlayerKillDeath(FFrame&, void* const) +native function LogPlayerKillDeath(int EventID, int KillType, Controller Killer, Class dmgType, Controller Dead); + +// Export UGameplayEventsUploadAnalytics::execLogPlayerPlayerEvent(FFrame&, void* const) +native function LogPlayerPlayerEvent(int EventID, Controller Player, Controller Target); + +// Export UGameplayEventsUploadAnalytics::execLogWeaponIntEvent(FFrame&, void* const) +native function LogWeaponIntEvent(int EventID, Controller Player, Class WeaponClass, int Value); + +// Export UGameplayEventsUploadAnalytics::execLogDamageEvent(FFrame&, void* const) +native function LogDamageEvent(int EventID, Controller Player, Class dmgType, Controller Target, int Amount); + +// Export UGameplayEventsUploadAnalytics::execLogProjectileIntEvent(FFrame&, void* const) +native function LogProjectileIntEvent(int EventID, Controller Player, Class Proj, int Value); + +function GenericParamListStatEntry GetGenericParamListEntry() +{ + //return ReturnValue; +} + +function RecordAIPathFail(Controller AI, coerce string Reason, Vector Dest) +{ + //return; +} + +function int RecordCoverLinkFireLinks(CoverLink Link, Controller Player) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/GameplayEventsWriter.uc b/exported/Engine/Classes/GameplayEventsWriter.uc new file mode 100755 index 00000000..eae8e010 --- /dev/null +++ b/exported/Engine/Classes/GameplayEventsWriter.uc @@ -0,0 +1,97 @@ +class GameplayEventsWriter extends GameplayEventsWriterBase + native; + +// Export UGameplayEventsWriter::execResolvePlayerIndex(FFrame&, void* const) +native function int ResolvePlayerIndex(Controller Player); + +// Export UGameplayEventsWriter::execOpenStatsFile(FFrame&, void* const) +native function bool OpenStatsFile(string Filename); + +// Export UGameplayEventsWriter::execCloseStatsFile(FFrame&, void* const) +native function CloseStatsFile(); + +// Export UGameplayEventsWriter::execSerializeHeader(FFrame&, void* const) +protected native function bool SerializeHeader(); + +// Export UGameplayEventsWriter::execSerializeFooter(FFrame&, void* const) +protected native function bool SerializeFooter(); + +// Export UGameplayEventsWriter::execStartLogging(FFrame&, void* const) +native function StartLogging(optional float HeartbeatDelta); + +// Export UGameplayEventsWriter::execResetLogging(FFrame&, void* const) +native function ResetLogging(optional float HeartbeatDelta); + +// Export UGameplayEventsWriter::execEndLogging(FFrame&, void* const) +native function EndLogging(); + +// Export UGameplayEventsWriter::execLogGameIntEvent(FFrame&, void* const) +native function LogGameIntEvent(int EventID, int Value); + +// Export UGameplayEventsWriter::execLogGameStringEvent(FFrame&, void* const) +native function LogGameStringEvent(int EventID, string Value); + +// Export UGameplayEventsWriter::execLogGameFloatEvent(FFrame&, void* const) +native function LogGameFloatEvent(int EventID, float Value); + +// Export UGameplayEventsWriter::execLogGamePositionEvent(FFrame&, void* const) +native function LogGamePositionEvent(int EventID, const out Vector Position, float Value); + +// Export UGameplayEventsWriter::execLogTeamIntEvent(FFrame&, void* const) +native function LogTeamIntEvent(int EventID, TeamInfo Team, int Value); + +// Export UGameplayEventsWriter::execLogTeamFloatEvent(FFrame&, void* const) +native function LogTeamFloatEvent(int EventID, TeamInfo Team, float Value); + +// Export UGameplayEventsWriter::execLogTeamStringEvent(FFrame&, void* const) +native function LogTeamStringEvent(int EventID, TeamInfo Team, string Value); + +// Export UGameplayEventsWriter::execLogPlayerIntEvent(FFrame&, void* const) +native function LogPlayerIntEvent(int EventID, Controller Player, int Value); + +// Export UGameplayEventsWriter::execLogPlayerFloatEvent(FFrame&, void* const) +native function LogPlayerFloatEvent(int EventID, Controller Player, float Value); + +// Export UGameplayEventsWriter::execLogPlayerStringEvent(FFrame&, void* const) +native function LogPlayerStringEvent(int EventID, Controller Player, string EventString); + +// Export UGameplayEventsWriter::execLogPlayerSpawnEvent(FFrame&, void* const) +native function LogPlayerSpawnEvent(int EventID, Controller Player, Class PawnClass, int TeamID); + +// Export UGameplayEventsWriter::execLogPlayerLoginChange(FFrame&, void* const) +native function LogPlayerLoginChange(int EventID, Controller Player, string PlayerName, UniqueNetId PlayerID, bool bSplitScreen); + +// Export UGameplayEventsWriter::execLogAllPlayerPositionsEvent(FFrame&, void* const) +native function LogAllPlayerPositionsEvent(int EventID); + +// Export UGameplayEventsWriter::execLogPlayerKillDeath(FFrame&, void* const) +native function LogPlayerKillDeath(int EventID, int KillType, Controller Killer, Class dmgType, Controller Dead); + +// Export UGameplayEventsWriter::execLogPlayerPlayerEvent(FFrame&, void* const) +native function LogPlayerPlayerEvent(int EventID, Controller Player, Controller Target); + +// Export UGameplayEventsWriter::execLogWeaponIntEvent(FFrame&, void* const) +native function LogWeaponIntEvent(int EventID, Controller Player, Class WeaponClass, int Value); + +// Export UGameplayEventsWriter::execLogDamageEvent(FFrame&, void* const) +native function LogDamageEvent(int EventID, Controller Player, Class dmgType, Controller Target, int Amount); + +// Export UGameplayEventsWriter::execLogProjectileIntEvent(FFrame&, void* const) +native function LogProjectileIntEvent(int EventID, Controller Player, Class Proj, int Value); + +// Export UGameplayEventsWriter::execLogSystemPollEvents(FFrame&, void* const) +native function LogSystemPollEvents(); + +// Export UGameplayEventsWriter::execGetGenericParamListEntry(FFrame&, void* const) +native function GenericParamListStatEntry GetGenericParamListEntry(); + +function RecordAIPathFail(Controller AI, coerce string Reason, Vector Dest) +{ + //return; +} + +function int RecordCoverLinkFireLinks(CoverLink Link, Controller Player) +{ + return 0; + //return ReturnValue; +} diff --git a/exported/Engine/Classes/GameplayEventsWriterBase.uc b/exported/Engine/Classes/GameplayEventsWriterBase.uc new file mode 100755 index 00000000..f2f83b5b --- /dev/null +++ b/exported/Engine/Classes/GameplayEventsWriterBase.uc @@ -0,0 +1,228 @@ +class GameplayEventsWriterBase extends GameplayEvents + native; + +const GAMEEVENT_MATCH_STARTED = 0; +const GAMEEVENT_MATCH_ENDED = 1; +const GAMEEVENT_ROUND_STARTED = 2; +const GAMEEVENT_ROUND_ENDED = 3; +const GAMEEVENT_GAME_CLASS = 6; +const GAMEEVENT_GAME_OPTION_URL = 7; +const GAMEEVENT_GAME_MAPNAME = 8; +const GAMEEVENT_MEMORYUSAGE_POLL = 35; +const GAMEEVENT_FRAMERATE_POLL = 36; +const GAMEEVENT_NETWORKUSAGEIN_POLL = 37; +const GAMEEVENT_NETWORKUSAGEOUT_POLL = 38; +const GAMEEVENT_PING_POLL = 39; +const GAMEEVENT_RENDERTHREAD_POLL = 40; +const GAMEEVENT_GAMETHREAD_POLL = 41; +const GAMEEVENT_GPUFRAMETIME_POLL = 42; +const GAMEEVENT_FRAMETIME_POLL = 43; +const GAMEEVENT_TEAM_CREATED = 50; +const GAMEEVENT_TEAM_GAME_SCORE = 51; +const GAMEEVENT_TEAM_MATCH_WON = 4; +const GAMEEVENT_TEAM_ROUND_WON = 5; +const GAMEEVENT_TEAM_ROUND_STALEMATE = 52; +const GAMEEVENT_PLAYER_LOGIN = 100; +const GAMEEVENT_PLAYER_LOGOUT = 101; +const GAMEEVENT_PLAYER_SPAWN = 102; +const GAMEEVENT_PLAYER_MATCH_WON = 103; +const GAMEEVENT_PLAYER_KILL = 104; +const GAMEEVENT_PLAYER_LOCATION_POLL = 105; +const GAMEEVENT_PLAYER_TEAMCHANGE = 106; +const GAMEEVENT_PLAYER_KILL_STREAK = 107; +const GAMEEVENT_PLAYER_DEATH = 108; +const GAMEEVENT_PLAYER_ROUND_WON = 109; +const GAMEEVENT_PLAYER_ROUND_STALEMATE = 110; +const GAMEEVENT_WEAPON_DAMAGE = 150; +const GAMEEVENT_WEAPON_DAMAGE_MELEE = 151; +const GAMEEVENT_WEAPON_FIRED = 152; +const GAMEEVENT_PLAYER_KILL_NORMAL = 200; +const GAMEEVENT_GENERIC_PARAM_LIST_START = 300; +const GAMEEVENT_GENERIC_PARAM_LIST_END = 400; +const GAMEEVENT_GAME_SPECIFIC = 1000; +const GAMEEVENT_MAX_EVENTID = 0x0000FFFF; + +var const GameInfo Game; + +function bool IsSessionInProgress() +{ + return CurrentSessionInfo.bGameplaySessionInProgress; + //return ReturnValue; +} + +event StartPolling(float HearbeatDelta) +{ + local WorldInfo WI; + + WI = Class'Engine.WorldInfo'.static.GetWorldInfo(); + // End:0x9F + if((WI != none) && WI.Game != none) + { + WI.Game.SetTimer(HearbeatDelta, true, 'Poll', self); + } + //return; +} + +event StopPolling() +{ + local WorldInfo WI; + + WI = Class'Engine.WorldInfo'.static.GetWorldInfo(); + // End:0x9C + if((WI != none) && WI.Game != none) + { + WI.Game.ClearTimer('Poll', self); + } + //return; +} + +function Poll() +{ + local WorldInfo WI; + + WI = Class'Engine.WorldInfo'.static.GetWorldInfo(); + // End:0xF6 + if(WI.Pauser == none) + { + // End:0xEC + if((WI.Game != none) && !WI.Game.bWaitingToStartMatch) + { + LogAllPlayerPositionsEvent(105); + WI.Game.GameEventsPoll(); + } + LogSystemPollEvents(); + } + //return; +} + +event int GetGameTypeId() +{ + return 0; + //return ReturnValue; +} + +event int GetPlaylistId() +{ + return -1; + //return ReturnValue; +} + +function StartLogging(optional float HeartbeatDelta) +{ + //return; +} + +function ResetLogging(optional float HeartbeatDelta) +{ + //return; +} + +function EndLogging() +{ + //return; +} + +function LogGameIntEvent(int EventID, int Value) +{ + //return; +} + +function LogGameStringEvent(int EventID, string Value) +{ + //return; +} + +function LogGameFloatEvent(int EventID, float Value) +{ + //return; +} + +function LogGamePositionEvent(int EventID, const out Vector Position, float Value) +{ + //return; +} + +function LogTeamIntEvent(int EventID, TeamInfo Team, int Value) +{ + //return; +} + +function LogTeamFloatEvent(int EventID, TeamInfo Team, float Value) +{ + //return; +} + +function LogTeamStringEvent(int EventID, TeamInfo Team, string Value) +{ + //return; +} + +function LogPlayerIntEvent(int EventID, Controller Player, int Value) +{ + //return; +} + +function LogPlayerFloatEvent(int EventID, Controller Player, float Value) +{ + //return; +} + +function LogPlayerStringEvent(int EventID, Controller Player, string EventString) +{ + //return; +} + +function LogPlayerSpawnEvent(int EventID, Controller Player, Class PawnClass, int TeamID) +{ + //return; +} + +function LogPlayerLoginChange(int EventID, Controller Player, string PlayerName, UniqueNetId PlayerID, bool bSplitScreen) +{ + //return; +} + +function LogAllPlayerPositionsEvent(int EventID) +{ + //return; +} + +function LogPlayerKillDeath(int EventID, int KillType, Controller Killer, Class dmgType, Controller Dead) +{ + //return; +} + +function LogPlayerPlayerEvent(int EventID, Controller Player, Controller Target) +{ + //return; +} + +function LogWeaponIntEvent(int EventID, Controller Player, Class WeaponClass, int Value) +{ + //return; +} + +function LogDamageEvent(int EventID, Controller Player, Class dmgType, Controller Target, int Amount) +{ + //return; +} + +function LogProjectileIntEvent(int EventID, Controller Player, Class Proj, int Value) +{ + //return; +} + +function LogSystemPollEvents() +{ + //return; +} + +function RecordAIPathFail(Controller AI, coerce string Reason, Vector Dest) +{ + //return; +} + +function int RecordCoverLinkFireLinks(CoverLink Link, Controller Player) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/GeneratedMeshAreaLight.uc b/exported/Engine/Classes/GeneratedMeshAreaLight.uc new file mode 100755 index 00000000..346c4631 --- /dev/null +++ b/exported/Engine/Classes/GeneratedMeshAreaLight.uc @@ -0,0 +1,25 @@ +class GeneratedMeshAreaLight extends SpotLight + native(Light) + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: SpotLightComponent'Engine.Default__GeneratedMeshAreaLight.SpotLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SpotLightComponent0' + // Archetype: SpotLightComponent'Engine.Default__SpotLight.SpotLightComponent0' + begin object name="SpotLightComponent0" + CastStaticShadows=false + LightingChannels=(BSP=false,Static=false) + end object + LightComponent=SpotLightComponent0 + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=none + Components[4]=none + Components[5]=SpotLightComponent0 + Components[6]=none + bEditable=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/GenericParamListStatEntry.uc b/exported/Engine/Classes/GenericParamListStatEntry.uc new file mode 100755 index 00000000..64e862ea --- /dev/null +++ b/exported/Engine/Classes/GenericParamListStatEntry.uc @@ -0,0 +1,32 @@ +class GenericParamListStatEntry extends Object + native; + +var native transient Pointer StatEvent; +var protected transient GameplayEventsWriter Writer; + +// Export UGenericParamListStatEntry::execAddFloat(FFrame&, void* const) +native function AddFloat(name ParamName, float Value); + +// Export UGenericParamListStatEntry::execAddInt(FFrame&, void* const) +native function AddInt(name ParamName, int Value); + +// Export UGenericParamListStatEntry::execAddVector(FFrame&, void* const) +native function AddVector(name ParamName, Vector Value); + +// Export UGenericParamListStatEntry::execAddString(FFrame&, void* const) +native function AddString(name ParamName, coerce string Value); + +// Export UGenericParamListStatEntry::execGetFloat(FFrame&, void* const) +native function bool GetFloat(name ParamName, out float out_Float); + +// Export UGenericParamListStatEntry::execGetInt(FFrame&, void* const) +native function bool GetInt(name ParamName, out int out_int); + +// Export UGenericParamListStatEntry::execGetVector(FFrame&, void* const) +native function bool GetVector(name ParamName, out Vector out_vector); + +// Export UGenericParamListStatEntry::execGetString(FFrame&, void* const) +native function bool GetString(name ParamName, out string out_string); + +// Export UGenericParamListStatEntry::execCommitToDisk(FFrame&, void* const) +native function CommitToDisk(); diff --git a/exported/Engine/Classes/Goal_AtActor.uc b/exported/Engine/Classes/Goal_AtActor.uc new file mode 100755 index 00000000..ed164c68 --- /dev/null +++ b/exported/Engine/Classes/Goal_AtActor.uc @@ -0,0 +1,90 @@ +class Goal_AtActor extends PathGoalEvaluator + native(AI); + +var Actor GoalActor; +var float GoalDist; +var bool bKeepPartial; + +static function bool AtActor(Pawn P, Actor Goal, optional float Dist, optional bool bReturnPartial) +{ + local Goal_AtActor Eval; + local Pawn GoalPawn; + local Controller GoalController; + local float AnchorDist; + + // End:0x32D + if(P != none) + { + GoalPawn = Pawn(Goal); + GoalController = Controller(Goal); + // End:0xB2 + if(GoalController != none) + { + // End:0xA7 + if(GoalController.Pawn != none) + { + GoalPawn = GoalController.Pawn; + } + else + { + Goal = none; + } + } + // End:0x1AE + if(GoalPawn != none) + { + // End:0x150 + if(GoalPawn.ValidAnchor() && GoalPawn.Anchor.IsUsableAnchorFor(P)) + { + Goal = GoalPawn.Anchor; + } + else + { + Goal = P.GetBestAnchor(GoalPawn, GoalPawn.Location, false, false, AnchorDist); + } + } + else + { + // End:0x230 + if(NavigationPoint(Goal) == none) + { + Goal = P.GetBestAnchor(Goal, Goal.Location, false, false, AnchorDist); + // End:0x230 + if(Goal == none) + { + } + } + } + // End:0x32D + if(Goal != none) + { + Eval = Goal_AtActor(P.CreatePathGoalEvaluator(default.Class)); + // End:0x32D + if(Eval != none) + { + Eval.GoalActor = Goal; + Eval.GoalDist = Dist; + Eval.bKeepPartial = bReturnPartial; + P.AddGoalEvaluator(Eval); + return true; + } + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + GoalActor = none; + GoalDist = default.GoalDist; + bKeepPartial = default.bKeepPartial; + super.Recycle(); + //return; +} + +defaultproperties +{ + MaxPathVisits=1024 + CacheIdx=0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Goal_Null.uc b/exported/Engine/Classes/Goal_Null.uc new file mode 100755 index 00000000..62bd4e2d --- /dev/null +++ b/exported/Engine/Classes/Goal_Null.uc @@ -0,0 +1,38 @@ +class Goal_Null extends PathGoalEvaluator + native(AI); + +static function bool GoUntilBust(Pawn P, optional int InMaxPathVisits = -1) +{ + local Goal_Null Eval; + + // End:0xC3 + if(P != none) + { + Eval = Goal_Null(P.CreatePathGoalEvaluator(default.Class)); + // End:0xC3 + if(Eval != none) + { + // End:0x99 + if(InMaxPathVisits > 0) + { + Eval.MaxPathVisits = InMaxPathVisits; + } + P.AddGoalEvaluator(Eval); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + MaxPathVisits = default.MaxPathVisits; + //return; +} + +defaultproperties +{ + CacheIdx=5 +} \ No newline at end of file diff --git a/exported/Engine/Classes/GravityVolume.uc b/exported/Engine/Classes/GravityVolume.uc new file mode 100755 index 00000000..86d76993 --- /dev/null +++ b/exported/Engine/Classes/GravityVolume.uc @@ -0,0 +1,21 @@ +class GravityVolume extends PhysicsVolume + native + placeable + hidecategories(Navigation,Object,Movement,Display); + +var() float GravityZ; + +defaultproperties +{ + GravityZ=-520.0000000 + // Reference: BrushComponent'Engine.Default__GravityVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__PhysicsVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/HUD.uc b/exported/Engine/Classes/HUD.uc new file mode 100755 index 00000000..0885d8a0 --- /dev/null +++ b/exported/Engine/Classes/HUD.uc @@ -0,0 +1,1067 @@ +class HUD extends Actor + transient + native + config(Game) + notplaceable + hidecategories(Navigation); + +struct native ConsoleMessage +{ + var string Text; + var Color TextColor; + var float MessageLife; + var PlayerReplicationInfo PRI; + + structdefaultproperties + { + Text="" + TextColor=(R=0,G=0,B=0,A=0) + MessageLife=0.0000000 + PRI=none + } +}; + +struct native HudLocalizedMessage +{ + var Class Message; + var string StringMessage; + var int Switch; + var float EndOfLife; + var float Lifetime; + var float PosY; + var Color DrawColor; + var int FontSize; + var Font StringFont; + var float DX; + var float DY; + var bool Drawn; + var int Count; + var Object OptionalObject; + + structdefaultproperties + { + Message=none + StringMessage="" + Switch=0 + EndOfLife=0.0000000 + Lifetime=0.0000000 + PosY=0.0000000 + DrawColor=(R=0,G=0,B=0,A=0) + FontSize=0 + StringFont=none + DX=0.0000000 + DY=0.0000000 + Drawn=false + Count=0 + OptionalObject=none + } +}; + +struct native KismetDrawTextInfo +{ + var() string MessageText; + var string AppendedText; + var() Font MessageFont; + var() Vector2D MessageFontScale; + var() Vector2D MessageOffset; + var() Color MessageColor; + var float MessageEndTime; + + structdefaultproperties + { + MessageText="" + AppendedText="" + MessageFont=none + MessageFontScale=(X=0.0000000,Y=0.0000000) + MessageOffset=(X=0.0000000,Y=0.0000000) + MessageColor=(R=0,G=0,B=0,A=0) + MessageEndTime=0.0000000 + } +}; + +var const Color WhiteColor; +var const Color GreenColor; +var const Color RedColor; +var PlayerController PlayerOwner; +var transient bool bLostFocusPaused; +var config bool bShowHUD; +var bool bShowScores; +var bool bShowDebugInfo; +var() bool bShowBadConnectionAlert; +var config bool bShowDirectorInfoDebug; +var config bool bShowDirectorInfoHUD; +var globalconfig bool bMessageBeep; +var bool bRenderFullScreen; +var bool bScaleCanvasForCinematicMode; +var bool bShowOverlays; +var globalconfig float HudCanvasScale; +var array PostRenderedActors; +var array ConsoleMessages; +var const Color ConsoleColor; +var config int ConsoleMessageCount; +var globalconfig int ConsoleFontSize; +var globalconfig int MessageFontOffset; +var int MaxHUDAreaMessageCount; +var() transient HudLocalizedMessage LocalMessages[8]; +var() float ConsoleMessagePosX; +var() float ConsoleMessagePosY; +var Canvas Canvas; +var transient float LastHUDRenderTime; +var transient float RenderDelta; +var transient float SizeX; +var transient float SizeY; +var transient float CenterX; +var transient float CenterY; +var transient float RatioX; +var transient float RatioY; +var globalconfig array DebugDisplay; +var array KismetTextInfo; + +// Export UHUD::execDraw3DLine(FFrame&, void* const) +native final function Draw3DLine(Vector Start, Vector End, Color LineColor); + +// Export UHUD::execDraw2DLine(FFrame&, void* const) +native final function Draw2DLine(int X1, int Y1, int X2, int Y2, Color LineColor); + +event PostBeginPlay() +{ + super.PostBeginPlay(); + PlayerOwner = PlayerController(Owner); + // End:0x55 + if(PlayerOwner != none) + { + PlayerOwner.myHUD = self; + } + NotifyBindPostProcessEffects(); + //return; +} + +// Export UHUD::execDrawActorOverlays(FFrame&, void* const) +native function DrawActorOverlays(Vector ViewPoint, Rotator ViewRotation); + +function RemovePostRenderedActor(Actor A) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x69 [Loop If] + if(I < PostRenderedActors.Length) + { + // End:0x5B + if(PostRenderedActors[I] == A) + { + PostRenderedActors[I] = none; + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function AddPostRenderedActor(Actor A) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x54 [Loop If] + if(I < PostRenderedActors.Length) + { + // End:0x46 + if(PostRenderedActors[I] == A) + { + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x5F: + + // End:0xBD [Loop If] + if(I < PostRenderedActors.Length) + { + // End:0xAF + if(PostRenderedActors[I] == none) + { + PostRenderedActors[I] = A; + return; + } + I++; + // [Loop Continue] + goto J0x5F; + } + PostRenderedActors[PostRenderedActors.Length] = A; + //return; +} + +exec function ToggleHUD() +{ + bShowHUD = !bShowHUD; + //return; +} + +exec function ShowHUD() +{ + ToggleHUD(); + //return; +} + +exec function ShowScores() +{ + SetShowScores(!bShowScores); + //return; +} + +exec function SetShowScores(bool bNewValue) +{ + bShowScores = bNewValue; + //return; +} + +function bool ShouldDisplayDebug(name DebugType) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x54 [Loop If] + if(I < DebugDisplay.Length) + { + // End:0x46 + if(DebugDisplay[I] == DebugType) + { + return true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +exec function ToggleDirectorInfoHUD() +{ + bShowDirectorInfoHUD = !bShowDirectorInfoHUD; + //return; +} + +exec function ToggleDirectorInfoDebug() +{ + bShowDirectorInfoDebug = !bShowDirectorInfoDebug; + //return; +} + +function ShowDebugInfo(out float out_YL, out float out_YPos) +{ + PlayerOwner.ViewTarget.DisplayDebug(self, out_YL, out_YPos); + // End:0xA4 + if(ShouldDisplayDebug('Game')) + { + WorldInfo.Game.DisplayDebug(self, out_YL, out_YPos); + } + // End:0x11A + if((ShouldDisplayDebug('AI')) && Pawn(PlayerOwner.ViewTarget) != none) + { + DrawRoute(Pawn(PlayerOwner.ViewTarget)); + } + //return; +} + +function DrawRoute(Pawn Target) +{ + local int I; + local Controller C; + local Vector Start, RealStart, Dest; + local bool bPath; + local Actor FirstRouteCache; + local Pylon FoundPylon; + + C = Target.Controller; + // End:0x39 + if(C == none) + { + return; + } + // End:0xB2 + if(C.CurrentPath != none) + { + Start = C.CurrentPath.Start.Location; + } + else + { + Start = Target.Location; + } + RealStart = Start; + // End:0x1A6 + if(C.bAdjusting) + { + Draw3DLine(C.Pawn.Location, C.GetAdjustLocation(), MakeColor(255, 0, 255, 255)); + Start = C.GetAdjustLocation(); + } + Dest = C.GetDestinationPosition(); + // End:0x207 + foreach WorldInfo.AllNavigationPoints(Class'Engine.Pylon', FoundPylon) + { + // End:0x207 + break; + } + // End:0x444 + if(FoundPylon != none) + { + // End:0x270 + if(C.NavigationHandle == none) + { + C.NavigationHandle = new (C) Class'Engine.NavigationHandle'; + } + Class'Engine.NavMeshPath_Toward'.static.TowardPoint(C.NavigationHandle, Dest); + Class'Engine.NavMeshGoal_At'.static.AtLocation(C.NavigationHandle, Dest); + C.NavigationHandle.bVisualPathDebugging = true; + // End:0x3CE + if(C.NavigationHandle.FindPath()) + { + DrawDebugCoordinateSystem(Dest, rot(0, 0, 0), 25.0000000, true); + C.NavigationHandle.DrawPathCache(,, true); + } + else + { + DrawDebugCoordinateSystem(Dest, rot(0, 0, 0), 25.0000000, true); + DrawDebugBox(Target.Location, Target.GetCollisionExtent(), 255, 0, 0, true); + } + return; + } + // End:0x493 + if(C.RouteCache.Length > 0) + { + FirstRouteCache = C.RouteCache[0]; + } + // End:0x762 + if((C == PlayerOwner) || (C.MoveTarget == FirstRouteCache) && C.MoveTarget != none) + { + // End:0x5D3 + if((C == PlayerOwner) && Dest != vect(0.0000000, 0.0000000, 0.0000000)) + { + // End:0x5B0 + if(C.PointReachable(Dest)) + { + Draw3DLine(C.Pawn.Location, Dest, MakeColor(255, 255, 255, 255)); + return; + } + C.FindPathTo(Dest); + } + // End:0x75F + if(C.RouteCache.Length > 0) + { + I = 0; + J0x603: + + // End:0x724 [Loop If] + if(I < C.RouteCache.Length) + { + // End:0x661 + if(C.RouteCache[I] == none) + { + // [Explicit Break] + goto J0x724; + } + bPath = true; + Draw3DLine(Start, C.RouteCache[I].Location, MakeColor(0, 255, 0, 255)); + Start = C.RouteCache[I].Location; + I++; + // [Loop Continue] + goto J0x603; + } + J0x724: + + // End:0x75F + if(bPath) + { + Draw3DLine(RealStart, Dest, MakeColor(255, 255, 255, 255)); + } + } + } + else + { + // End:0x7C0 + if(Target.Velocity != vect(0.0000000, 0.0000000, 0.0000000)) + { + Draw3DLine(RealStart, Dest, MakeColor(255, 255, 255, 255)); + } + } + // End:0x7D9 + if(C == PlayerOwner) + { + return; + } + Draw3DLine(Target.Location + (Target.BaseEyeHeight * vect(0.0000000, 0.0000000, 1.0000000)), C.GetFocalPoint(), MakeColor(255, 0, 0, 255)); + //return; +} + +function PreCalcValues() +{ + SizeX = float(Canvas.SizeX); + SizeY = float(Canvas.SizeY); + CenterX = SizeX * 0.5000000; + CenterY = SizeY * 0.5000000; + RatioX = SizeX / 1024.0000000; + RatioY = SizeY / 768.0000000; + //return; +} + +event PostRender() +{ + local float XL, YL, YPos; + + RenderDelta = WorldInfo.TimeSeconds - LastHUDRenderTime; + // End:0x9B + if((SizeX != float(Canvas.SizeX)) || SizeY != float(Canvas.SizeY)) + { + PreCalcValues(); + } + // End:0xDB + if(PlayerOwner != none) + { + PlayerOwner.DrawDebugTextList(Canvas, RenderDelta); + } + // End:0x1B0 + if(bShowDebugInfo) + { + Canvas.Font = Class'Engine.Engine'.static.GetTinyFont(); + Canvas.DrawColor = ConsoleColor; + Canvas.StrLen("X", XL, YL); + YPos = 0.0000000; + ShowDebugInfo(YL, YPos); + } + else + { + // End:0x1F4 + if(bShowHUD) + { + // End:0x1F4 + if(!bShowScores) + { + DrawHUD(); + DisplayConsoleMessages(); + DisplayLocalMessages(); + DisplayKismetMessages(); + } + } + } + // End:0x20B + if(bShowBadConnectionAlert) + { + DisplayBadConnectionAlert(); + } + LastHUDRenderTime = WorldInfo.TimeSeconds; + //return; +} + +function DrawHUD() +{ + local Vector ViewPoint; + local Rotator ViewRotation; + + // End:0x95 + if(bShowOverlays && PlayerOwner != none) + { + Canvas.Font = GetFontSizeIndex(0); + PlayerOwner.GetPlayerViewPoint(ViewPoint, ViewRotation); + DrawActorOverlays(ViewPoint, ViewRotation); + } + PlayerOwner.DrawHUD(self); + //return; +} + +function DisplayBadConnectionAlert() +{ + //return; +} + +function ClearMessage(out HudLocalizedMessage M) +{ + M.Message = none; + M.StringFont = none; + //return; +} + +function Message(PlayerReplicationInfo PRI, coerce string msg, name MsgType, optional float Lifetime) +{ + local string ThePlayerName; + + // End:0x2D + if(bMessageBeep) + { + PlayerOwner.PlayBeepSound(); + } + // End:0xBC + if((MsgType == 'Say') || MsgType == 'TeamSay') + { + ThePlayerName = ((PRI != none) ? PRI.PlayerName : ""); + msg = (ThePlayerName $ ": ") $ msg; + } + AddConsoleMessage(msg, Class'Engine.LocalMessage', PRI, Lifetime); + //return; +} + +function DisplayConsoleMessages() +{ + local int Idx, XPos, YPos; + local float XL, YL; + + // End:0x12 + if(ConsoleMessages.Length == 0) + { + return; + } + Idx = 0; + J0x1D: + + // End:0xD2 [Loop If] + if(Idx < ConsoleMessages.Length) + { + // End:0xC4 + if((ConsoleMessages[Idx].Text == "") || ConsoleMessages[Idx].MessageLife < WorldInfo.TimeSeconds) + { + ConsoleMessages.Remove(Idx--, 1); + } + Idx++; + // [Loop Continue] + goto J0x1D; + } + XPos = int(((ConsoleMessagePosX * HudCanvasScale) * float(Canvas.SizeX)) + (((1.0000000 - HudCanvasScale) / 2.0000000) * float(Canvas.SizeX))); + YPos = int(((ConsoleMessagePosY * HudCanvasScale) * float(Canvas.SizeY)) + (((1.0000000 - HudCanvasScale) / 2.0000000) * float(Canvas.SizeY))); + Canvas.Font = Class'Engine.Engine'.static.GetSmallFont(); + Canvas.DrawColor = ConsoleColor; + Canvas.TextSize("A", XL, YL); + YPos -= int(YL * float(ConsoleMessages.Length)); + YPos -= int(YL); + Idx = 0; + J0x2AD: + + // End:0x45B [Loop If] + if(Idx < ConsoleMessages.Length) + { + // End:0x2F5 + if(ConsoleMessages[Idx].Text == "") + { + } + else + { + // End:0x31B + if((ShouldShowConsoleMessage(ConsoleMessages[Idx])) == false) + { + } + else + { + Canvas.StrLen(ConsoleMessages[Idx].Text, XL, YL); + Canvas.SetPos(float(XPos), float(YPos)); + Canvas.DrawColor = ConsoleMessages[Idx].TextColor; + Canvas.DrawText(ConsoleMessages[Idx].Text, false); + YPos += int(YL); + } + } + Idx++; + // [Loop Continue] + goto J0x2AD; + } + //return; +} + +function bool ShouldShowConsoleMessage(const ConsoleMessage InConsoleMessage) +{ + return true; + //return ReturnValue; +} + +function AddConsoleMessage(string M, Class InMessageClass, PlayerReplicationInfo PRI, optional float Lifetime) +{ + local int Idx, MsgIdx; + + MsgIdx = -1; + // End:0x60 + if(bMessageBeep && InMessageClass.default.bBeep) + { + PlayerOwner.PlayBeepSound(); + } + // End:0x8F + if(ConsoleMessages.Length < ConsoleMessageCount) + { + MsgIdx = ConsoleMessages.Length; + } + else + { + Idx = 0; + J0x9A: + + // End:0x115 [Loop If] + if((Idx < ConsoleMessages.Length) && MsgIdx == -1) + { + // End:0x107 + if(ConsoleMessages[Idx].Text == "") + { + MsgIdx = Idx; + } + Idx++; + // [Loop Continue] + goto J0x9A; + } + } + // End:0x1B4 + if((MsgIdx == ConsoleMessageCount) || MsgIdx == -1) + { + Idx = 0; + J0x14C: + + // End:0x19E [Loop If] + if(Idx < (ConsoleMessageCount - 1)) + { + ConsoleMessages[Idx] = ConsoleMessages[Idx + 1]; + Idx++; + // [Loop Continue] + goto J0x14C; + } + MsgIdx = ConsoleMessageCount - 1; + } + // End:0x1E3 + if(MsgIdx >= ConsoleMessages.Length) + { + ConsoleMessages.Length = MsgIdx + 1; + } + ConsoleMessages[MsgIdx].Text = M; + // End:0x279 + if(Lifetime != 0.0000000) + { + ConsoleMessages[MsgIdx].MessageLife = WorldInfo.TimeSeconds + Lifetime; + } + else + { + ConsoleMessages[MsgIdx].MessageLife = WorldInfo.TimeSeconds + InMessageClass.default.Lifetime; + } + ConsoleMessages[MsgIdx].TextColor = InMessageClass.static.GetConsoleColor(PRI); + ConsoleMessages[MsgIdx].PRI = PRI; + //return; +} + +function LocalizedMessage(Class InMessageClass, PlayerReplicationInfo RelatedPRI_1, PlayerReplicationInfo RelatedPRI_2, string CriticalString, int Switch, float Position, float Lifetime, int FontSize, Color DrawColor, optional Object OptionalObject) +{ + local int I, LocalMessagesArrayCount, MessageCount; + + // End:0x24 + if((InMessageClass == none) || CriticalString == "") + { + return; + } + // End:0x74 + if(bMessageBeep && InMessageClass.default.bBeep) + { + PlayerOwner.PlayBeepSound(); + } + // End:0xC0 + if(!InMessageClass.default.bIsSpecial) + { + AddConsoleMessage(CriticalString, InMessageClass, RelatedPRI_1); + return; + } + LocalMessagesArrayCount = 8; + I = LocalMessagesArrayCount; + // End:0x226 + if(InMessageClass.default.bIsUnique) + { + I = 0; + J0x10C: + + // End:0x223 [Loop If] + if(I < LocalMessagesArrayCount) + { + // End:0x215 + if(LocalMessages[I].Message == InMessageClass) + { + // End:0x212 + if(InMessageClass.default.bCountInstances && LocalMessages[I].StringMessage ~= CriticalString) + { + MessageCount = ((LocalMessages[I].Count == 0) ? 2 : LocalMessages[I].Count + 1); + } + // [Explicit Break] + goto J0x223; + } + I++; + // [Loop Continue] + goto J0x10C; + } + J0x223: + + } + else + { + // End:0x331 + if(InMessageClass.default.bIsPartiallyUnique) + { + I = 0; + J0x253: + + // End:0x331 [Loop If] + if(I < LocalMessagesArrayCount) + { + // End:0x323 + if((LocalMessages[I].Message == InMessageClass) && InMessageClass.static.PartiallyDuplicates(Switch, LocalMessages[I].Switch, OptionalObject, LocalMessages[I].OptionalObject)) + { + // [Explicit Break] + goto J0x331; + } + I++; + // [Loop Continue] + goto J0x253; + } + } + } + J0x331: + + // End:0x3A7 + if(I == LocalMessagesArrayCount) + { + I = 0; + J0x353: + + // End:0x3A7 [Loop If] + if(I < LocalMessagesArrayCount) + { + // End:0x399 + if(LocalMessages[I].Message == none) + { + // [Explicit Break] + goto J0x3A7; + } + I++; + // [Loop Continue] + goto J0x353; + } + } + J0x3A7: + + // End:0x41B + if(I == LocalMessagesArrayCount) + { + I = 0; + J0x3C9: + + // End:0x41B [Loop If] + if(I < (LocalMessagesArrayCount - 1)) + { + LocalMessages[I] = LocalMessages[I + 1]; + I++; + // [Loop Continue] + goto J0x3C9; + } + } + ClearMessage(LocalMessages[I]); + AddLocalizedMessage(I, InMessageClass, CriticalString, Switch, Position, Lifetime, FontSize, DrawColor, MessageCount, OptionalObject); + //return; +} + +function AddLocalizedMessage(int Index, Class InMessageClass, string CriticalString, int Switch, float Position, float Lifetime, int FontSize, Color DrawColor, optional int MessageCount, optional Object OptionalObject) +{ + LocalMessages[Index].Message = InMessageClass; + LocalMessages[Index].Switch = Switch; + LocalMessages[Index].EndOfLife = Lifetime + WorldInfo.TimeSeconds; + LocalMessages[Index].StringMessage = CriticalString; + LocalMessages[Index].Lifetime = Lifetime; + LocalMessages[Index].PosY = Position; + LocalMessages[Index].DrawColor = DrawColor; + LocalMessages[Index].FontSize = FontSize; + LocalMessages[Index].Count = MessageCount; + LocalMessages[Index].OptionalObject = OptionalObject; + //return; +} + +function GetScreenCoords(float PosY, out float ScreenX, out float ScreenY, out HudLocalizedMessage InMessage) +{ + ScreenX = 0.5000000 * Canvas.ClipX; + ScreenY = ((PosY * HudCanvasScale) * Canvas.ClipY) + (((1.0000000 - HudCanvasScale) * 0.5000000) * Canvas.ClipY); + ScreenX -= (InMessage.DX * 0.5000000); + ScreenY -= (InMessage.DY * 0.5000000); + //return; +} + +function DrawMessage(int I, float PosY, out float DX, out float DY) +{ + local float FadeValue, ScreenX, ScreenY; + + FadeValue = FMin(1.0000000, LocalMessages[I].EndOfLife - WorldInfo.TimeSeconds); + Canvas.DrawColor = LocalMessages[I].DrawColor; + Canvas.DrawColor.A = byte(FadeValue * float(Canvas.DrawColor.A)); + Canvas.Font = LocalMessages[I].StringFont; + GetScreenCoords(PosY, ScreenX, ScreenY, LocalMessages[I]); + DX = LocalMessages[I].DX / Canvas.ClipX; + DY = LocalMessages[I].DY / Canvas.ClipY; + DrawMessageText(LocalMessages[I], ScreenX, ScreenY); + LocalMessages[I].Drawn = true; + //return; +} + +function DrawMessageText(HudLocalizedMessage LocalMessage, float ScreenX, float ScreenY) +{ + local FontRenderInfo FontInfo; + + Canvas.SetPos(ScreenX, ScreenY); + FontInfo.bClipText = true; + Canvas.DrawText(LocalMessage.StringMessage, false,,, FontInfo); + //return; +} + +function DisplayLocalMessages() +{ + local float PosY, DY, DX; + local int I, J, LocalMessagesArrayCount, AreaMessageCount; + local float FadeValue; + local int FontSize; + + // End:0x26 + if(LocalMessages[0].Message == none) + { + return; + } + Canvas.Reset(true); + LocalMessagesArrayCount = 8; + I = 0; + J0x5D: + + // End:0x428 [Loop If] + if(I < LocalMessagesArrayCount) + { + // End:0xA3 + if(LocalMessages[I].Message == none) + { + // [Explicit Break] + goto J0x428; + } + LocalMessages[I].Drawn = false; + // End:0x327 + if(LocalMessages[I].StringFont == none) + { + FontSize = LocalMessages[I].FontSize + MessageFontOffset; + LocalMessages[I].StringFont = GetFontSizeIndex(FontSize); + Canvas.Font = LocalMessages[I].StringFont; + Canvas.TextSize(LocalMessages[I].StringMessage, DX, DY); + LocalMessages[I].DX = DX; + LocalMessages[I].DY = DY; + // End:0x327 + if(LocalMessages[I].StringFont == none) + { + J = I; + J0x2AA: + + // End:0x2FC [Loop If] + if(J < (LocalMessagesArrayCount - 1)) + { + LocalMessages[J] = LocalMessages[J + 1]; + J++; + // [Loop Continue] + goto J0x2AA; + } + ClearMessage(LocalMessages[J]); + I--; + // [Explicit Continue] + goto J0x41A; + } + } + FadeValue = LocalMessages[I].EndOfLife - WorldInfo.TimeSeconds; + // End:0x41A + if(FadeValue <= 0.0000000) + { + J = I; + J0x39D: + + // End:0x3EF [Loop If] + if(J < (LocalMessagesArrayCount - 1)) + { + LocalMessages[J] = LocalMessages[J + 1]; + J++; + // [Loop Continue] + goto J0x39D; + } + ClearMessage(LocalMessages[J]); + I--; + } + J0x41A: + + I++; + // [Loop Continue] + goto J0x5D; + } + J0x428: + + I = 0; + J0x433: + + // End:0x650 [Loop If] + if(I < LocalMessagesArrayCount) + { + // End:0x479 + if(LocalMessages[I].Message == none) + { + // [Explicit Break] + goto J0x650; + } + // End:0x4A6 + if(LocalMessages[I].Drawn) + { + } + else + { + PosY = LocalMessages[I].PosY; + AreaMessageCount = 0; + J = I; + J0x4F4: + + // End:0x5E6 [Loop If] + if(J < LocalMessagesArrayCount) + { + // End:0x58B + if(LocalMessages[J].Drawn || LocalMessages[I].PosY != LocalMessages[J].PosY) + { + } + else + { + DrawMessage(J, PosY, DX, DY); + PosY += DY; + AreaMessageCount++; + } + J++; + // [Loop Continue] + goto J0x4F4; + } + // End:0x642 + if(AreaMessageCount > MaxHUDAreaMessageCount) + { + LocalMessages[I].EndOfLife = WorldInfo.TimeSeconds; + } + } + I++; + // [Loop Continue] + goto J0x433; + } + J0x650: + + //return; +} + +function DisplayKismetMessages() +{ + local int KismetTextIdx; + + KismetTextIdx = 0; + J0x0B: + + // End:0x1B3 [Loop If] + if(KismetTextIdx < KismetTextInfo.Length) + { + // End:0xB4 + if((KismetTextInfo[KismetTextIdx].MessageEndTime > float(0)) && KismetTextInfo[KismetTextIdx].MessageEndTime <= WorldInfo.TimeSeconds) + { + KismetTextInfo.Remove(KismetTextIdx, 1); + } + else + { + DrawText(KismetTextInfo[KismetTextIdx].MessageText $ KismetTextInfo[KismetTextIdx].AppendedText, KismetTextInfo[KismetTextIdx].MessageOffset, KismetTextInfo[KismetTextIdx].MessageFont, KismetTextInfo[KismetTextIdx].MessageFontScale, KismetTextInfo[KismetTextIdx].MessageColor); + ++KismetTextIdx; + } + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function DrawText(string Text, Vector2D Position, Font TextFont, Vector2D FontScale, Color TextColor, const optional out FontRenderInfo RenderInfo) +{ + local float XL, YL; + + Canvas.Font = TextFont; + Canvas.TextSize(Text, XL, YL); + Canvas.SetPos(((Canvas.ClipX / float(2)) - (XL / float(2))) + Position.X, ((Canvas.ClipY / float(3)) - (YL / float(2))) + Position.Y); + Canvas.SetDrawColor(TextColor.R, TextColor.G, TextColor.B, TextColor.A); + Canvas.super(HUD).DrawText(Text, false, FontScale.X, FontScale.Y, RenderInfo); + //return; +} + +static function Font GetFontSizeIndex(int FontSize) +{ + // End:0x32 + if(FontSize == 0) + { + return Class'Engine.Engine'.static.GetTinyFont(); + } + else + { + // End:0x64 + if(FontSize == 1) + { + return Class'Engine.Engine'.static.GetSmallFont(); + } + else + { + // End:0x97 + if(FontSize == 2) + { + return Class'Engine.Engine'.static.GetMediumFont(); + } + else + { + return Class'Engine.Engine'.static.GetLargeFont(); + } + } + } + //return ReturnValue; +} + +function PlayerOwnerDied() +{ + //return; +} + +function NotifyBindPostProcessEffects() +{ + //return; +} + +event OnLostFocusPause(bool bEnable) +{ + // End:0x1B + if(bLostFocusPaused == bEnable) + { + return; + } + // End:0x83 + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + bLostFocusPaused = bEnable; + PlayerOwner.SetPause(bEnable); + } + //return; +} + +defaultproperties +{ + WhiteColor=(R=255,G=255,B=255,A=255) + GreenColor=(R=0,G=255,B=0,A=255) + RedColor=(R=255,G=0,B=0,A=255) + bShowHUD=true + bMessageBeep=true + bScaleCanvasForCinematicMode=true + HudCanvasScale=0.9500000 + ConsoleColor=(R=153,G=216,B=253,A=255) + ConsoleMessageCount=4 + ConsoleFontSize=5 + MaxHUDAreaMessageCount=3 + ConsoleMessagePosY=0.8000000 + DebugDisplay[0]="AI" + TickGroup=ETickingGroup.TG_DuringAsyncWork + bHidden=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/HavokCustomTraversalAnnotation.uc b/exported/Engine/Classes/HavokCustomTraversalAnnotation.uc new file mode 100755 index 00000000..50b145cd --- /dev/null +++ b/exported/Engine/Classes/HavokCustomTraversalAnnotation.uc @@ -0,0 +1,39 @@ +class HavokCustomTraversalAnnotation extends Actor + native(Havok) + placeable + hidecategories(Navigation); + +enum EHavokTraversalType +{ + TRAVERSALTYPE_DROP_DOWN, // 0 + TRAVERSALTYPE_CLIMB, // 1 + TRAVERSALTYPE_JUMP, // 2 + TRAVERSALTYPE_VAULT, // 3 + TRAVERSALTYPE_DUCK_UNDER, // 4 + TRAVERSALTYPE_PORTAL, // 5 + TRAVERSALTYPE_MAX // 6 +}; + +var() Actor m_Target; +var() HavokCustomTraversalAnnotation.EHavokTraversalType TraversalType; +var() float EdgeCost; +var(NavigationEdge) Rotator SourceEdgeRotation; +var(NavigationEdge) Vector SourceEdgeTranslation; +var(NavigationEdge) float fEdgeWidth; +var(NavigationEdge) bool bForceParallelEdges; +var HavokCustomTraversalAnnotation m_Source; + +// Export UHavokCustomTraversalAnnotation::execGetSourceEdge(FFrame&, void* const) +native final function GetSourceEdge(out Vector EdgeStart, out Vector EdgeEnd); + +// Export UHavokCustomTraversalAnnotation::execGetDestinationEdge(FFrame&, void* const) +native final function GetDestinationEdge(out Vector EdgeStart, out Vector EdgeEnd); + +defaultproperties +{ + EdgeCost=1.0000000 + fEdgeWidth=50.0000000 + bForceParallelEdges=true + Components[0]=none + Components[1]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/HavokCustomTraversalRenderingComponent.uc b/exported/Engine/Classes/HavokCustomTraversalRenderingComponent.uc new file mode 100755 index 00000000..e6d64cf2 --- /dev/null +++ b/exported/Engine/Classes/HavokCustomTraversalRenderingComponent.uc @@ -0,0 +1,9 @@ +class HavokCustomTraversalRenderingComponent extends PrimitiveComponent + native(Havok) + editinlinenew + hidecategories(Object); + +defaultproperties +{ + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/HavokMaterialPainter.uc b/exported/Engine/Classes/HavokMaterialPainter.uc new file mode 100755 index 00000000..07a0bc01 --- /dev/null +++ b/exported/Engine/Classes/HavokMaterialPainter.uc @@ -0,0 +1,19 @@ +class HavokMaterialPainter extends Volume + native(Havok) + placeable + hidecategories(Navigation,Object,Movement,Display); + +defaultproperties +{ + // Reference: BrushComponent'Engine.Default__HavokMaterialPainter.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionType=ECollisionType.COLLIDE_NoCollision + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/HavokNavMeshActor.uc b/exported/Engine/Classes/HavokNavMeshActor.uc new file mode 100755 index 00000000..3433850e --- /dev/null +++ b/exported/Engine/Classes/HavokNavMeshActor.uc @@ -0,0 +1,137 @@ +class HavokNavMeshActor extends Actor + native(Havok) + placeable + hidecategories(Navigation,Display,Attachment,Collision,Physics,Advanced,Debug,Object,Relevancy,Mobile); + +enum EHavokVersion +{ + HAVOK_2012_2, // 0 + HAVOK_2013_3, // 1 + HAVOK_2014_2, // 2 + HAVOK_2016_1, // 3 + HAVOK_MAX // 4 +}; + +struct native NavMeshLayerInfo +{ + var name Desc; + var float Radius; + var float Height; + var float CrouchHeight; + var byte PathColor; + + structdefaultproperties + { + Desc="None" + Radius=0.0000000 + Height=0.0000000 + CrouchHeight=0.0000000 + PathColor=0 + } +}; + +struct native UserEdgeData +{ + var Vector StartA; + var Vector EndA; + var Vector StartB; + var Vector EndB; + var byte TraversalType; + var float EdgeCost; + + structdefaultproperties + { + StartA=(X=0.0000000,Y=0.0000000,Z=0.0000000) + EndA=(X=0.0000000,Y=0.0000000,Z=0.0000000) + StartB=(X=0.0000000,Y=0.0000000,Z=0.0000000) + EndB=(X=0.0000000,Y=0.0000000,Z=0.0000000) + TraversalType=0 + EdgeCost=0.0000000 + } +}; + +var transient bool bNavMeshLoaded; +var(DebugDraw) bool DrawTraversalAnalysis; +var(DebugDraw) bool DrawNavMeshEdges; +var(DebugDraw) bool DrawNavMeshUserEdges; +var(DebugDraw) bool DrawNavMeshFaces; +var(DebugDraw) bool DrawCluster; +var(DebugDraw) bool DrawFaceToClusterLines; +var(GenerationBasic) bool FixupOverlappingTriangles; +var(GenerationBasic) bool IncludeUserEdgesInClusters; +var(GenerationBasic) bool ShrinkNavMeshByCharacterWidth; +var(Simplification) bool UseSimplification; +var(RegionPruning) bool PreserveVerticalBorderRegions; +var(RegionPruning) bool BorderPreservationTolerance; +var(TraversalAnalsysisDropDowns) bool bAnalyzeDropDowns; +var(TraversalAnalsysisJumps) bool bAnalyzeJumps; +var const export editinline transient SpriteComponent EditorSprite; +var export editinline HavokNavigationRenderingComponent RenderingComponent; +var native const UntypedBulkData_Mirror NavMeshData; +var native Pointer HavokWorld; +var HavokNavMeshGrid HavokGrid; +var() editconst HavokNavMeshActor.EHavokVersion Version; +var(DebugDraw) Vector DrawClusterOffset; +var(GenerationBasic) Vector SingleCarverAABBMin; +var(GenerationBasic) Vector SingleCarverAABBMax; +var(Simplification) float MaxBorderDistanceError; +var(Simplification) float MaxPartitionHeightError; +var(RegionPruning) float MinRegionArea; +var(RegionPruning) float MinDistanceToSeed; +var(Character) float MaxWalkableSlope; +var(Character) float EntityHalfHeight; +var(Character) float StartingHeightOffset; +var(Character) float MaxStepHeight; +var(Character) float MaxPolyHeight; +var(Character) float HeightMergeThreshold; +var(Character) float MinRadius; +var(Character) float MaxRadius; +var(TraversalAnalsysisDropDowns) float MaxDropHeight; +var(TraversalAnalsysisDropDowns) float MaxUnderhang; +var(TraversalAnalsysisDropDowns) float DropDownCost; +var(TraversalAnalsysisJumps) float MaxJumpHeight; +var(TraversalAnalsysisJumps) float StandardJumpHeight; +var(TraversalAnalsysisJumps) float StandardJumpDistance; +var(TraversalAnalsysisJumps) float JumpCost; + +// Export UHavokNavMeshActor::execInitializeNavMesh(FFrame&, void* const) +native function InitializeNavMesh(); + +// Export UHavokNavMeshActor::execCleanupNavMesh(FFrame&, void* const) +native function CleanupNavMesh(); + +defaultproperties +{ + DrawTraversalAnalysis=true + DrawNavMeshEdges=true + DrawNavMeshUserEdges=true + DrawNavMeshFaces=true + ShrinkNavMeshByCharacterWidth=true + UseSimplification=true + bAnalyzeDropDowns=true + Version=EHavokVersion.HAVOK_2014_2 + DrawClusterOffset=(X=0.0000000,Y=0.0000000,Z=64.0000000) + MaxBorderDistanceError=2.0000000 + MaxPartitionHeightError=16.0000000 + MinRegionArea=200000.0000000 + MinDistanceToSeed=0.5000000 + MaxWalkableSlope=0.8000000 + EntityHalfHeight=17.5000000 + StartingHeightOffset=65.0000000 + MaxStepHeight=20.0000000 + MaxPolyHeight=120.0000000 + MinRadius=35.0000000 + MaxRadius=55.0000000 + MaxDropHeight=4000.0000000 + MaxUnderhang=10.0000000 + DropDownCost=1.0000000 + MaxJumpHeight=100.0000000 + StandardJumpHeight=80.0000000 + StandardJumpDistance=160.0000000 + JumpCost=2.0000000 + Components[0]=none + Components[1]=none + bStatic=true + bNoDelete=true + bMovable=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/HavokNavMeshGrid.uc b/exported/Engine/Classes/HavokNavMeshGrid.uc new file mode 100755 index 00000000..40f7aa90 --- /dev/null +++ b/exported/Engine/Classes/HavokNavMeshGrid.uc @@ -0,0 +1,21 @@ +class HavokNavMeshGrid extends Object + native(Havok); + +var Matrix WorldToScreen; +var Matrix ScreenToWorld; +var float TexelDistance; +var int GridSize; +var native const UntypedBulkData_Mirror SerializedGridData; +var transient array MemoryGridData; + +// Export UHavokNavMeshGrid::execInitGrid(FFrame&, void* const) +native function InitGrid(); + +// Export UHavokNavMeshGrid::execTexelToWorld(FFrame&, void* const) +native function Vector TexelToWorld(const out Vector2D InPos); + +// Export UHavokNavMeshGrid::execWorldToTexel(FFrame&, void* const) +native function Vector2D WorldToTexel(const out Vector InPos); + +// Export UHavokNavMeshGrid::execWorldToTangent(FFrame&, void* const) +native function Vector2D WorldToTangent(const out Vector InPos); diff --git a/exported/Engine/Classes/HavokNavigationHandle.uc b/exported/Engine/Classes/HavokNavigationHandle.uc new file mode 100755 index 00000000..8970ba27 --- /dev/null +++ b/exported/Engine/Classes/HavokNavigationHandle.uc @@ -0,0 +1,79 @@ +class HavokNavigationHandle extends NavigationHandle within Actor + native(Havok); + +enum EHavokNavigationMeshType +{ + HavokNavMesh_Pristine, // 0 + HavokNavMesh_Obstacle, // 1 + HavokNavMesh_Taskforce1, // 2 + HavokNavMesh_Taskforce2, // 3 + HavokNavMesh_MAX // 4 +}; + +enum EHavokEdgeType +{ + EDGETYPE_REGULAR, // 0 + EDGETYPE_TRAVERSAL_DROPDOWN, // 1 + EDGETYPE_TRAVERSAL_JUMP, // 2 + EDGETYPE_MAX // 3 +}; + +struct native CachedPathItem +{ + var int CachedKey; + var Vector Location; + var HavokNavigationHandle.EHavokEdgeType EdgeType; + var bool bTerminatedPath; + + structdefaultproperties + { + CachedKey=0 + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + EdgeType=EHavokEdgeType.EDGETYPE_REGULAR + bTerminatedPath=false + } +}; + +var init array PathPoints; +var transient HavokNavigationHandle.EHavokNavigationMeshType PathingNavMeshType; +var transient HavokNavigationHandle.EHavokEdgeType CurrEdgeType; +var transient float LastClearPathTime; +var transient float ClearPathTime; + +// Export UHavokNavigationHandle::execGetNextMoveLocation(FFrame&, void* const) +native function bool GetNextMoveLocation(out Vector out_MoveDest, float ArrivalDistance); + +// Export UHavokNavigationHandle::execFindPath(FFrame&, void* const) +native function bool FindPath(optional out Actor out_DestActor, optional out int out_DestItem); + +// Export UHavokNavigationHandle::execSuggestMovePreparation(FFrame&, void* const) +native function bool SuggestMovePreparation(out Vector MovePt, Controller C); + +// Export UHavokNavigationHandle::execPointReachable(FFrame&, void* const) +native function bool PointReachable(Vector Point, optional Vector OverrideStartPoint, optional bool bAllowHitsInEndCollisionBox = true); + +// Export UHavokNavigationHandle::execActorReachable(FFrame&, void* const) +native function bool ActorReachable(Actor GoalActor); + +// Export UHavokNavigationHandle::execLineCheck(FFrame&, void* const) +native function bool LineCheck(Vector Start, Vector Direction, Vector Extent, optional out Vector out_HitLocation, optional out Vector out_HitNormal); + +// Export UHavokNavigationHandle::execGetPackedKeyForPosition(FFrame&, void* const) +native function int GetPackedKeyForPosition(out Vector pos, const out Vector PrevPos, int PreviousKey); + +// Export UHavokNavigationHandle::execClearCurrentEdge(FFrame&, void* const) +native function ClearCurrentEdge(); + +// Export UHavokNavigationHandle::execGetCurrentEdgeType(FFrame&, void* const) +native function Pylon.ENavMeshEdgeType GetCurrentEdgeType(); + +// Export UHavokNavigationHandle::execCopyMovePointsFromPathCache(FFrame&, void* const) +native function CopyMovePointsFromPathCache(Vector FinalDest, out array MovePoints); + +// Export UHavokNavigationHandle::execPathCache_RemoveIndex(FFrame&, void* const) +native function bool PathCache_RemoveIndex(int Index, optional int Count = 1); + +defaultproperties +{ + ClearPathTime=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/HavokNavigationRenderingComponent.uc b/exported/Engine/Classes/HavokNavigationRenderingComponent.uc new file mode 100755 index 00000000..5f14ec0b --- /dev/null +++ b/exported/Engine/Classes/HavokNavigationRenderingComponent.uc @@ -0,0 +1,22 @@ +class HavokNavigationRenderingComponent extends PrimitiveComponent + native(Havok) + hidecategories(Object); + +var editoronly transient bool bDrawEdges; + +defaultproperties +{ + ReplacementPrimitive=none + HiddenGame=true + bAcceptsDynamicDecals=false + bCastDynamicShadow=false + bCastStaticShadow=false + bAcceptsDynamicDominantLightShadows=false + bAcceptsDynamicLights=false + bUseOnePassLightingOnTranslucency=true + CanBlockCamera=false + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false + bAllowShadowFade=false + TranslucencySortPriority=-2 +} \ No newline at end of file diff --git a/exported/Engine/Classes/HavokTraversalAnnotationPortal.uc b/exported/Engine/Classes/HavokTraversalAnnotationPortal.uc new file mode 100755 index 00000000..a24a2830 --- /dev/null +++ b/exported/Engine/Classes/HavokTraversalAnnotationPortal.uc @@ -0,0 +1,12 @@ +class HavokTraversalAnnotationPortal extends HavokCustomTraversalAnnotation + native(Havok) + placeable + hidecategories(Navigation); + +// Export UHavokTraversalAnnotationPortal::execIsValidPortal(FFrame&, void* const) +native final function bool IsValidPortal(); + +defaultproperties +{ + TraversalType=EHavokTraversalType.TRAVERSALTYPE_PORTAL +} \ No newline at end of file diff --git a/exported/Engine/Classes/HeadTrackingComponent.uc b/exported/Engine/Classes/HeadTrackingComponent.uc new file mode 100755 index 00000000..0d3ae575 --- /dev/null +++ b/exported/Engine/Classes/HeadTrackingComponent.uc @@ -0,0 +1,49 @@ +class HeadTrackingComponent extends ActorComponent + native(Anim); + +struct native ActorToLookAt +{ + var Actor Actor; + var float Rating; + var float EnteredTime; + var float LastKnownDistance; + var float StartTimeBeingLookedAt; + var bool CurrentlyBeingLookedAt; + + structdefaultproperties + { + Actor=none + Rating=0.0000000 + EnteredTime=0.0000000 + LastKnownDistance=0.0000000 + StartTimeBeingLookedAt=0.0000000 + CurrentlyBeingLookedAt=false + } +}; + +var() array TrackControllerName; +var() float LookAtActorRadius; +var() bool bDisableBeyondLimit; +var() float MaxLookAtTime; +var() float MinLookAtTime; +var() float MaxInterestTime; +var(Target) array< Class > ActorClassesToLookAt; +var(Target) array TargetBoneNames; +var private native const transient map{VOID,VOID} CurrentActorMap; +var export editinline SkeletalMeshComponent SkeletalMeshComp; +var private transient array TrackControls; +var private transient Vector RootMeshLocation; +var private transient Rotator RootMeshRotation; + +defaultproperties +{ + TrackControllerName[0]="HeadLook" + TrackControllerName[1]="LeftEyeLook" + TrackControllerName[2]="RightEyeLook" + LookAtActorRadius=500.0000000 + MaxLookAtTime=5.0000000 + MinLookAtTime=3.0000000 + MaxInterestTime=7.0000000 + TargetBoneNames[0]="b_MF_Head" + TargetBoneNames[1]="b_MF_Neck" +} \ No newline at end of file diff --git a/exported/Engine/Classes/HeightFog.uc b/exported/Engine/Classes/HeightFog.uc new file mode 100755 index 00000000..87291afb --- /dev/null +++ b/exported/Engine/Classes/HeightFog.uc @@ -0,0 +1,79 @@ +class HeightFog extends Info + placeable + hidecategories(Navigation,Collision) + classgroup(Fog); + +var() const editconst export editinline HeightFogComponent Component; +var repnotify bool bEnabled; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + bEnabled; +} + +event PostBeginPlay() +{ + super(Actor).PostBeginPlay(); + bEnabled = Component.bEnabled; + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x43 + if(VarName == 'bEnabled') + { + Component.SetEnabled(bEnabled); + } + else + { + super(Actor).ReplicatedEvent(VarName); + } + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x5A + if(Action.InputLinks[0].bHasImpulse) + { + Component.SetEnabled(true); + } + else + { + // End:0xB4 + if(Action.InputLinks[1].bHasImpulse) + { + Component.SetEnabled(false); + } + else + { + // End:0x12C + if(Action.InputLinks[2].bHasImpulse) + { + Component.SetEnabled(!Component.bEnabled); + } + } + } + bEnabled = Component.bEnabled; + ForceNetRelevant(); + SetForcedInitialReplicatedProperty(BoolProperty'Engine.HeightFog.bEnabled', bEnabled == default.bEnabled); + //return; +} + +defaultproperties +{ + // Reference: HeightFogComponent'Engine.Default__HeightFog.HeightFogComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'HeightFogComponent0' + begin object name="HeightFogComponent0" class=Engine.HeightFogComponent + end object + Component=HeightFogComponent0 + Components[0]=none + Components[1]=HeightFogComponent0 + DrawScale=5.0000000 + TickGroup=ETickingGroup.TG_DuringAsyncWork + bNoDelete=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/HeightFogComponent.uc b/exported/Engine/Classes/HeightFogComponent.uc new file mode 100755 index 00000000..e94c53cb --- /dev/null +++ b/exported/Engine/Classes/HeightFogComponent.uc @@ -0,0 +1,25 @@ +class HeightFogComponent extends ActorComponent + native + editinlinenew + collapsecategories + hidecategories(Object); + +var() const bool bEnabled; +var const float Height; +var() interp const float Density; +var() interp const float LightBrightness; +var() interp const Color LightColor; +var() interp const float ExtinctionDistance; +var() interp const float StartDistance; + +// Export UHeightFogComponent::execSetEnabled(FFrame&, void* const) +native final function SetEnabled(bool bSetEnabled); + +defaultproperties +{ + bEnabled=true + Density=0.0000500 + LightBrightness=0.1000000 + LightColor=(R=255,G=255,B=255,A=0) + ExtinctionDistance=100000000.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/HttpBaseInterface.uc b/exported/Engine/Classes/HttpBaseInterface.uc new file mode 100755 index 00000000..55d35eac --- /dev/null +++ b/exported/Engine/Classes/HttpBaseInterface.uc @@ -0,0 +1,24 @@ +class HttpBaseInterface extends Object + abstract + native; + +// Export UHttpBaseInterface::execGetHeader(FFrame&, void* const) +native function string GetHeader(string HeaderName); + +// Export UHttpBaseInterface::execGetHeaders(FFrame&, void* const) +native function array GetHeaders(); + +// Export UHttpBaseInterface::execGetURLParameter(FFrame&, void* const) +native function string GetURLParameter(string ParameterName); + +// Export UHttpBaseInterface::execGetContentType(FFrame&, void* const) +native function string GetContentType(); + +// Export UHttpBaseInterface::execGetContentLength(FFrame&, void* const) +native function int GetContentLength(); + +// Export UHttpBaseInterface::execGetURL(FFrame&, void* const) +native function string GetURL(); + +// Export UHttpBaseInterface::execGetContent(FFrame&, void* const) +native function GetContent(out array Content); diff --git a/exported/Engine/Classes/HttpFactory.uc b/exported/Engine/Classes/HttpFactory.uc new file mode 100755 index 00000000..3f26c28a --- /dev/null +++ b/exported/Engine/Classes/HttpFactory.uc @@ -0,0 +1,20 @@ +class HttpFactory extends Object + config(Engine); + +var config string HttpRequestClassName; + +static function HttpRequestInterface CreateRequest() +{ + local Class HttpRequestClass; + local Object HttpReq; + + HttpRequestClass = Class(DynamicLoadObject(default.HttpRequestClassName, Class'Core.Class')); + HttpReq = new HttpRequestClass; + return HttpRequestInterface(HttpReq); + //return ReturnValue; +} + +defaultproperties +{ + HttpRequestClassName="WinDrv.HttpRequestWindows" +} \ No newline at end of file diff --git a/exported/Engine/Classes/HttpRequestInterface.uc b/exported/Engine/Classes/HttpRequestInterface.uc new file mode 100755 index 00000000..a2554207 --- /dev/null +++ b/exported/Engine/Classes/HttpRequestInterface.uc @@ -0,0 +1,38 @@ +class HttpRequestInterface extends HttpBaseInterface + abstract + native; + +//var delegate __OnProcessRequestComplete__Delegate; + +// Export UHttpRequestInterface::execGetVerb(FFrame&, void* const) +native function string GetVerb(); + +// Export UHttpRequestInterface::execSetVerb(FFrame&, void* const) +native function HttpRequestInterface SetVerb(string Verb); + +// Export UHttpRequestInterface::execSetURL(FFrame&, void* const) +native function HttpRequestInterface SetURL(string URL); + +// Export UHttpRequestInterface::execSetContent(FFrame&, void* const) +native function HttpRequestInterface SetContent(const out array ContentPayload); + +// Export UHttpRequestInterface::execSetContentAsString(FFrame&, void* const) +native function HttpRequestInterface SetContentAsString(string ContentString); + +// Export UHttpRequestInterface::execSetHeader(FFrame&, void* const) +native function HttpRequestInterface SetHeader(string HeaderName, string HeaderValue); + +// Export UHttpRequestInterface::execProcessRequest(FFrame&, void* const) +native function bool ProcessRequest(); + +delegate OnProcessRequestComplete(HttpRequestInterface OriginalRequest, HttpResponseInterface InHttpResponse, bool bDidSucceed) +{ + //return; +} + +function HttpRequestInterface SetProcessRequestCompleteDelegate(delegate ProcessRequestCompleteDelegate) +{ + __OnProcessRequestComplete__Delegate = ProcessRequestCompleteDelegate; + return self; + //return ReturnValue; +} diff --git a/exported/Engine/Classes/HttpResponseInterface.uc b/exported/Engine/Classes/HttpResponseInterface.uc new file mode 100755 index 00000000..7d7621da --- /dev/null +++ b/exported/Engine/Classes/HttpResponseInterface.uc @@ -0,0 +1,9 @@ +class HttpResponseInterface extends HttpBaseInterface + abstract + native; + +// Export UHttpResponseInterface::execGetResponseCode(FFrame&, void* const) +native function int GetResponseCode(); + +// Export UHttpResponseInterface::execGetContentAsString(FFrame&, void* const) +native function string GetContentAsString(); diff --git a/exported/Engine/Classes/ImageBasedReflectionComponent.uc b/exported/Engine/Classes/ImageBasedReflectionComponent.uc new file mode 100755 index 00000000..f9597fa2 --- /dev/null +++ b/exported/Engine/Classes/ImageBasedReflectionComponent.uc @@ -0,0 +1,41 @@ +class ImageBasedReflectionComponent extends StaticMeshComponent + native(Mesh) + editinlinenew + hidecategories(Object,StaticMeshComponent); + +var() bool bEnabled; +var() bool bTwoSided; +var() Texture2D ReflectionTexture; +var() interp LinearColor ReflectionColor; + +// Export UImageBasedReflectionComponent::execSetEnabled(FFrame&, void* const) +native final function SetEnabled(bool bSetEnabled); + +// Export UImageBasedReflectionComponent::execUpdateImageReflectionParameters(FFrame&, void* const) +native final function UpdateImageReflectionParameters(); + +function OnUpdatePropertyReflectionColor() +{ + UpdateImageReflectionParameters(); + //return; +} + +defaultproperties +{ + bEnabled=true + ReflectionTexture=none + ReflectionColor=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000) + WireframeColor=(R=100,G=100,B=200,A=255) + Materials[0]=none + ReplacementPrimitive=none + HiddenGame=true + bUseAsOccluder=false + bAcceptsStaticDecals=false + bAcceptsDynamicDecals=false + CastShadow=false + bCastDynamicShadow=false + bAcceptsLights=false + bAcceptsDynamicLights=false + CollideActors=false + BlockRigidBody=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/ImageReflection.uc b/exported/Engine/Classes/ImageReflection.uc new file mode 100755 index 00000000..d7579c17 --- /dev/null +++ b/exported/Engine/Classes/ImageReflection.uc @@ -0,0 +1,83 @@ +class ImageReflection extends Actor + native(Mesh) + placeable + hidecategories(Navigation) + autoexpandcategories(ImageReflection,ImageBasedReflectionComponent); + +var repnotify bool bEnabled; +var export editinline deprecated ImageReflectionComponent ReflectionComponent; +var() export editinline ImageBasedReflectionComponent ImageReflectionComponent; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + bEnabled; +} + +event PostBeginPlay() +{ + super.PostBeginPlay(); + bEnabled = ImageReflectionComponent.bEnabled; + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x43 + if(VarName == 'bEnabled') + { + ImageReflectionComponent.SetEnabled(bEnabled); + } + else + { + super.ReplicatedEvent(VarName); + } + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x5A + if(Action.InputLinks[0].bHasImpulse) + { + ImageReflectionComponent.SetEnabled(true); + } + else + { + // End:0xB4 + if(Action.InputLinks[1].bHasImpulse) + { + ImageReflectionComponent.SetEnabled(false); + } + else + { + // End:0x12C + if(Action.InputLinks[2].bHasImpulse) + { + ImageReflectionComponent.SetEnabled(!ImageReflectionComponent.bEnabled); + } + } + } + bEnabled = ImageReflectionComponent.bEnabled; + ForceNetRelevant(); + SetForcedInitialReplicatedProperty(BoolProperty'Engine.ImageReflection.bEnabled', bEnabled == default.bEnabled); + //return; +} + +defaultproperties +{ + bEnabled=true + // Reference: ImageBasedReflectionComponent'Engine.Default__ImageReflection.ReflectionComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ReflectionComponent0' + begin object name="ReflectionComponent0" class=Engine.ImageBasedReflectionComponent + ReplacementPrimitive=none + end object + ImageReflectionComponent=ReflectionComponent0 + Components[0]=ReflectionComponent0 + bNoDelete=true + bSkipActorPropertyReplication=true + bOnlyDirtyReplication=true + NetUpdateFrequency=10.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ImageReflectionComponent.uc b/exported/Engine/Classes/ImageReflectionComponent.uc new file mode 100755 index 00000000..2cc80ead --- /dev/null +++ b/exported/Engine/Classes/ImageReflectionComponent.uc @@ -0,0 +1,6 @@ +class ImageReflectionComponent extends ActorComponent + native(Mesh) + editinlinenew + hidecategories(Object); + +var() Texture2D ReflectionTexture; diff --git a/exported/Engine/Classes/ImageReflectionSceneCapture.uc b/exported/Engine/Classes/ImageReflectionSceneCapture.uc new file mode 100755 index 00000000..976aa1af --- /dev/null +++ b/exported/Engine/Classes/ImageReflectionSceneCapture.uc @@ -0,0 +1,23 @@ +class ImageReflectionSceneCapture extends ImageReflection + native(Mesh) + placeable + hidecategories(Navigation) + autoexpandcategories(ImageReflection,ImageBasedReflectionComponent,ImageReflectionSceneCapture); + +var() float DepthRange; +var() float ColorRange; + +defaultproperties +{ + DepthRange=200.0000000 + ColorRange=4.0000000 + // Reference: ImageBasedReflectionComponent'Engine.Default__ImageReflectionSceneCapture.ReflectionComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ReflectionComponent0' + // Archetype: ImageBasedReflectionComponent'Engine.Default__ImageReflection.ReflectionComponent0' + begin object name="ReflectionComponent0" + ReplacementPrimitive=none + end object + ImageReflectionComponent=ReflectionComponent0 + Components[0]=ReflectionComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ImageReflectionShadowPlane.uc b/exported/Engine/Classes/ImageReflectionShadowPlane.uc new file mode 100755 index 00000000..eeb42b52 --- /dev/null +++ b/exported/Engine/Classes/ImageReflectionShadowPlane.uc @@ -0,0 +1,83 @@ +class ImageReflectionShadowPlane extends Actor + native(Mesh) + placeable + hidecategories(Navigation); + +var repnotify bool bEnabled; +var() export editinline ImageReflectionShadowPlaneComponent ReflectionShadowComponent; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + bEnabled; +} + +event PostBeginPlay() +{ + super.PostBeginPlay(); + bEnabled = ReflectionShadowComponent.bEnabled; + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x43 + if(VarName == 'bEnabled') + { + ReflectionShadowComponent.SetEnabled(bEnabled); + } + else + { + super.ReplicatedEvent(VarName); + } + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x5A + if(Action.InputLinks[0].bHasImpulse) + { + ReflectionShadowComponent.SetEnabled(true); + } + else + { + // End:0xB4 + if(Action.InputLinks[1].bHasImpulse) + { + ReflectionShadowComponent.SetEnabled(false); + } + else + { + // End:0x12C + if(Action.InputLinks[2].bHasImpulse) + { + ReflectionShadowComponent.SetEnabled(!ReflectionShadowComponent.bEnabled); + } + } + } + bEnabled = ReflectionShadowComponent.bEnabled; + ForceNetRelevant(); + SetForcedInitialReplicatedProperty(BoolProperty'Engine.ImageReflectionShadowPlane.bEnabled', bEnabled == default.bEnabled); + //return; +} + +defaultproperties +{ + bEnabled=true + // Reference: ImageReflectionShadowPlaneComponent'Engine.Default__ImageReflectionShadowPlane.ReflectionComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ReflectionComponent0' + begin object name="ReflectionComponent0" class=Engine.ImageReflectionShadowPlaneComponent + ReplacementPrimitive=none + end object + ReflectionShadowComponent=ReflectionComponent0 + Components[0]=ReflectionComponent0 + Components[1]=none + Physics=EPhysics.PHYS_Interpolating + bNoDelete=true + bSkipActorPropertyReplication=true + bOnlyDirtyReplication=true + NetUpdateFrequency=10.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ImageReflectionShadowPlaneComponent.uc b/exported/Engine/Classes/ImageReflectionShadowPlaneComponent.uc new file mode 100755 index 00000000..a9a3371d --- /dev/null +++ b/exported/Engine/Classes/ImageReflectionShadowPlaneComponent.uc @@ -0,0 +1,20 @@ +class ImageReflectionShadowPlaneComponent extends PrimitiveComponent + native(Mesh) + editinlinenew; + +var() bool bEnabled; +var Plane ReflectionPlane; + +// Export UImageReflectionShadowPlaneComponent::execSetEnabled(FFrame&, void* const) +native final function SetEnabled(bool bSetEnabled); + +defaultproperties +{ + bEnabled=true + ReflectionPlane=(W=86.0000000,X=0.0000000,Y=0.0000000,Z=1.0000000) + ReplacementPrimitive=none + HiddenGame=true + bAcceptsDynamicDecals=false + bCastDynamicShadow=false + bAcceptsDynamicLights=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/InAppMessageBase.uc b/exported/Engine/Classes/InAppMessageBase.uc new file mode 100755 index 00000000..6f782d57 --- /dev/null +++ b/exported/Engine/Classes/InAppMessageBase.uc @@ -0,0 +1,19 @@ +class InAppMessageBase extends PlatformInterfaceBase + transient + native(PlatformInterface); + +enum EInAppMessageInterfaceDelegate +{ + IAMD_InAppSMSUIComplete, // 0 + IAMD_InAppEmailComplete, // 1 + IAMD_MAX // 2 +}; + +// Export UInAppMessageBase::execInit(FFrame&, void* const) +native event Init(); + +// Export UInAppMessageBase::execShowInAppSMSUI(FFrame&, void* const) +native event bool ShowInAppSMSUI(optional string InitialMessage); + +// Export UInAppMessageBase::execShowInAppEmailUI(FFrame&, void* const) +native event bool ShowInAppEmailUI(optional string InitialSubject, optional string InitialMessage); diff --git a/exported/Engine/Classes/InGameAdManager.uc b/exported/Engine/Classes/InGameAdManager.uc new file mode 100755 index 00000000..bf93cf64 --- /dev/null +++ b/exported/Engine/Classes/InGameAdManager.uc @@ -0,0 +1,35 @@ +class InGameAdManager extends PlatformInterfaceBase + transient + native(PlatformInterface); + +enum EAdManagerDelegate +{ + AMD_ClickedBanner, // 0 + AMD_UserClosedAd, // 1 + AMD_MAX // 2 +}; + +var bool bShouldPauseWhileAdOpen; + +// Export UInGameAdManager::execInit(FFrame&, void* const) +native event Init(); + +// Export UInGameAdManager::execShowBanner(FFrame&, void* const) +native function ShowBanner(bool bShowBottomOfScreen); + +// Export UInGameAdManager::execHideBanner(FFrame&, void* const) +native function HideBanner(); + +// Export UInGameAdManager::execForceCloseAd(FFrame&, void* const) +native function ForceCloseAd(); + +function SetPauseWhileAdOpen(bool bShouldPause) +{ + bShouldPauseWhileAdOpen = bShouldPause; + //return; +} + +defaultproperties +{ + bShouldPauseWhileAdOpen=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/Info.uc b/exported/Engine/Classes/Info.uc new file mode 100755 index 00000000..399c74e6 --- /dev/null +++ b/exported/Engine/Classes/Info.uc @@ -0,0 +1,80 @@ +class Info extends Actor + abstract + native + notplaceable + hidecategories(Navigation,Movement,Collision); + +struct native export transient KeyValuePair +{ + var() init string Key; + var() init string Value; + + structdefaultproperties + { + Key="" + Value="" + } +}; + +struct native export transient PlayerResponseLine +{ + var() init int PlayerNum; + var() init int PlayerID; + var() init string PlayerName; + var() init int Ping; + var() init int Score; + var() init int StatsID; + var() init array PlayerInfo; + + structdefaultproperties + { + PlayerNum=0 + PlayerID=0 + PlayerName="" + Ping=0 + Score=0 + StatsID=0 + PlayerInfo=none + } +}; + +struct native export transient ServerResponseLine +{ + var() init int ServerID; + var() init string IP; + var() init int Port; + var() init int QueryPort; + var() init string ServerName; + var() init string MapName; + var() init string GameType; + var() init int CurrentPlayers; + var() init int MaxPlayers; + var() init int Ping; + var() init array ServerInfo; + var() init array PlayerInfo; + + structdefaultproperties + { + ServerID=0 + IP="" + Port=0 + QueryPort=0 + ServerName="" + MapName="" + GameType="" + CurrentPlayers=0 + MaxPlayers=0 + Ping=0 + ServerInfo=none + PlayerInfo=none + } +}; + +defaultproperties +{ + Components[0]=none + bHidden=true + bSkipActorPropertyReplication=true + bOnlyDirtyReplication=true + NetUpdateFrequency=10.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/IniLocPatcher.uc b/exported/Engine/Classes/IniLocPatcher.uc new file mode 100755 index 00000000..68519f2e --- /dev/null +++ b/exported/Engine/Classes/IniLocPatcher.uc @@ -0,0 +1,457 @@ +class IniLocPatcher extends Object + native + config(Engine); + +struct native IniLocFileEntry +{ + var string Filename; + var string DLName; + var string HashCode; + var bool bIsUnicode; + var OnlineSubsystem.EOnlineEnumerationReadState ReadState; + + structdefaultproperties + { + Filename="" + DLName="" + HashCode="" + bIsUnicode=false + ReadState=EOnlineEnumerationReadState.OERS_NotStarted + } +}; + +var config array Files; +var config bool bRequestEmsFileList; +var config int MaxCachedFileAge; +var transient OnlineTitleFileInterface TitleFileInterface; +var transient OnlineTitleFileCacheInterface TitleFileCacheInterface; +var array< delegate > ReadTitleFileCompleteDelegates; +//var delegate __OnReadTitleFileComplete__Delegate; +//var delegate __OnAllTitleFilesCompleted__Delegate; + +delegate OnReadTitleFileComplete(bool bWasSuccessful, string Filename) +{ + //return; +} + +delegate OnAllTitleFilesCompleted() +{ + //return; +} + +function Init() +{ + local OnlineSubsystem OnlineSub; + local int Index; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x1B8 + if(OnlineSub != none) + { + TitleFileInterface = OnlineSub.TitleFileInterface; + // End:0xB4 + if(NotEqual_InterfaceInterface(TitleFileInterface, OnlineTitleFileInterface(none))) + { + TitleFileInterface.AddReadTitleFileCompleteDelegate(OnDownloadFileComplete); + } + else + { + Index = 0; + J0xBF: + + // End:0x10E [Loop If] + if(Index < Files.Length) + { + Files[Index].ReadState = 3; + Index++; + // [Loop Continue] + goto J0xBF; + } + } + TitleFileCacheInterface = OnlineSub.TitleFileCacheInterface; + // End:0x1B8 + if(NotEqual_InterfaceInterface(TitleFileCacheInterface, OnlineTitleFileCacheInterface(none))) + { + TitleFileCacheInterface.AddLoadTitleFileCompleteDelegate(OnFileCacheLoadComplete); + TitleFileCacheInterface.AddSaveTitleFileCompleteDelegate(OnFileCacheSaveComplete); + } + } + //return; +} + +function DownloadFiles() +{ + local int FileIdx; + + // End:0xBD + if(bRequestEmsFileList) + { + // End:0x69 + if((MaxCachedFileAge > 0) && NotEqual_InterfaceInterface(TitleFileCacheInterface, OnlineTitleFileCacheInterface(none))) + { + TitleFileCacheInterface.DeleteTitleFiles(float(MaxCachedFileAge)); + } + TitleFileInterface.AddRequestTitleFileListCompleteDelegate(OnRequestTitleFileListComplete); + TitleFileInterface.RequestTitleFileList(); + } + else + { + FileIdx = 0; + J0xC8: + + // End:0x13B [Loop If] + if(FileIdx < Files.Length) + { + Files[FileIdx].DLName = Files[FileIdx].Filename; + FileIdx++; + // [Loop Continue] + goto J0xC8; + } + StartLoadingFiles(); + } + //return; +} + +function OnRequestTitleFileListComplete(bool bWasSuccessful, array FilePaths) +{ + //return; +} + +function StartLoadingFiles() +{ + local int Index; + + // End:0x1BF + if(bRequestEmsFileList) + { + // End:0x1BC + if(NotEqual_InterfaceInterface(TitleFileCacheInterface, OnlineTitleFileCacheInterface(none))) + { + Index = 0; + J0x38: + + // End:0x1BC [Loop If] + if(Index < Files.Length) + { + // End:0x1AE + if(int(Files[Index].ReadState) == int(0)) + { + Files[Index].ReadState = 1; + // End:0x1AE + if(!TitleFileCacheInterface.LoadTitleFile(Files[Index].DLName)) + { + // End:0x185 + if((int(Files[Index].ReadState) != int(2)) && int(Files[Index].ReadState) != int(3)) + { + Files[Index].ReadState = 1; + } + else + { + Files[Index].ReadState = 3; + } + } + } + Index++; + // [Loop Continue] + goto J0x38; + } + } + } + else + { + // End:0x337 + if(NotEqual_InterfaceInterface(TitleFileInterface, OnlineTitleFileInterface(none))) + { + Index = 0; + J0x1EA: + + // End:0x337 [Loop If] + if(Index < Files.Length) + { + // End:0x329 + if(int(Files[Index].ReadState) == int(0)) + { + Files[Index].Filename = UpdateLocFileName(Files[Index].Filename); + // End:0x300 + if(TitleFileInterface.ReadTitleFile(Files[Index].DLName)) + { + Files[Index].ReadState = 1; + } + else + { + Files[Index].ReadState = 3; + } + } + Index++; + // [Loop Continue] + goto J0x1EA; + } + } + } + //return; +} + +function OnDownloadFileComplete(bool bWasSuccessful, string Filename) +{ + local bool bSuccessLoad; + local int Index; + local array FileData; + + Index = 0; + J0x0B: + + // End:0x276 [Loop If] + if(Index < Files.Length) + { + // End:0x268 + if(Files[Index].DLName == Filename) + { + // End:0x23C + if(bWasSuccessful) + { + // End:0x210 + if(TitleFileInterface.GetTitleFileContents(Filename, FileData) && FileData.Length > 0) + { + bSuccessLoad = true; + Files[Index].ReadState = 2; + // End:0x184 + if(bRequestEmsFileList && NotEqual_InterfaceInterface(TitleFileCacheInterface, OnlineTitleFileCacheInterface(none))) + { + TitleFileCacheInterface.SaveTitleFile(Files[Index].DLName, Files[Index].Filename, FileData); + } + TitleFileInterface.ClearDownloadedFile(Filename); + ProcessIniLocFile(Files[Index].Filename, Files[Index].bIsUnicode, FileData); + } + else + { + Files[Index].ReadState = 3; + } + } + else + { + Files[Index].ReadState = 3; + } + // [Explicit Break] + goto J0x276; + } + Index++; + // [Loop Continue] + goto J0x0B; + } + J0x276: + + TriggerDownloadCompleteDelegates(bSuccessLoad, Filename); + //return; +} + +function OnFileCacheLoadComplete(bool bWasSuccessful, string Filename) +{ + local int Index; + local array FileData; + local bool bRequiresDownload; + + bRequiresDownload = true; + Index = 0; + J0x17: + + // End:0x218 [Loop If] + if(Index < Files.Length) + { + // End:0x20A + if(Files[Index].DLName == Filename) + { + // End:0x207 + if(bWasSuccessful) + { + // End:0x207 + if(TitleFileCacheInterface.GetTitleFileHash(Filename) == Files[Index].HashCode) + { + // End:0x204 + if(TitleFileCacheInterface.GetTitleFileContents(Filename, FileData) && FileData.Length > 0) + { + Files[Index].ReadState = 2; + bRequiresDownload = false; + // End:0x204 + if(InStr(Files[Index].Filename, ".bin", false, true) == -1) + { + ProcessIniLocFile(Files[Index].Filename, Files[Index].bIsUnicode, FileData); + TitleFileCacheInterface.ClearCachedFile(Filename); + } + } + } + } + // [Explicit Break] + goto J0x218; + } + Index++; + // [Loop Continue] + goto J0x17; + } + J0x218: + + // End:0x2F5 + if(bRequiresDownload) + { + TitleFileCacheInterface.DeleteTitleFile(Filename); + // End:0x2C9 + if(NotEqual_InterfaceInterface(TitleFileInterface, OnlineTitleFileInterface(none)) && TitleFileInterface.ReadTitleFile(Filename)) + { + Files[Index].ReadState = 1; + } + else + { + Files[Index].ReadState = 3; + } + } + else + { + TriggerDownloadCompleteDelegates(true, Filename); + } + //return; +} + +function OnFileCacheSaveComplete(bool bWasSuccessful, string Filename) +{ + local string LogicalName; + + LogicalName = TitleFileCacheInterface.GetTitleFileLogicalName(Filename); + // End:0x7A + if(InStr(LogicalName, ".bin", false, true) == -1) + { + TitleFileCacheInterface.ClearCachedFile(Filename); + } + //return; +} + +function TriggerDownloadCompleteDelegates(bool bSuccess, string Filename) +{ + local int Index; + local delegate OnReadTitleFileComplete; + + Index = 0; + J0x0B: + + // End:0x8D [Loop If] + if(Index < ReadTitleFileCompleteDelegates.Length) + { + // End:0x7F + if(ReadTitleFileCompleteDelegates[Index] != none) + { + OnReadTitleFileComplete = ReadTitleFileCompleteDelegates[Index]; + OnReadTitleFileComplete(bSuccess, Filename); + } + Index++; + // [Loop Continue] + goto J0x0B; + } + CheckForAllFilesComplete(); + //return; +} + +function CheckForAllFilesComplete() +{ + local int Index; + local bool bAllFilesComplete; + + bAllFilesComplete = true; + Index = 0; + J0x17: + + // End:0xAD [Loop If] + if(Index < Files.Length) + { + // End:0x9F + if((int(Files[Index].ReadState) == int(0)) || int(Files[Index].ReadState) == int(1)) + { + bAllFilesComplete = false; + } + Index++; + // [Loop Continue] + goto J0x17; + } + // End:0xCD + if(bAllFilesComplete) + { + OnAllTitleFilesCompleted(); + } + //return; +} + +// Export UIniLocPatcher::execProcessIniLocFile(FFrame&, void* const) +native function ProcessIniLocFile(string Filename, bool bIsUnicode, const out array FileData); + +function AddFileToDownload(string Filename) +{ + local int FileIndex; + + FileIndex = Files.Find('Filename', Filename); + // End:0x12D + if(FileIndex == -1) + { + FileIndex = Files.Length; + Files.Length = FileIndex + 1; + Files[FileIndex].Filename = Filename; + Files[FileIndex].DLName = Filename; + Files[FileIndex].bIsUnicode = (InStr(Filename, ".ini",, true) == -1) && InStr(Filename, ".int",, true) == -1; + } + else + { + Files[FileIndex].ReadState = 0; + } + DownloadFiles(); + //return; +} + +function AddReadFileDelegate(delegate ReadTitleFileCompleteDelegate) +{ + // End:0x47 + if(ReadTitleFileCompleteDelegate != none && ReadTitleFileCompleteDelegates.Find(ReadTitleFileCompleteDelegate) == -1) + { + ReadTitleFileCompleteDelegates.AddItem(ReadTitleFileCompleteDelegate); + } + //return; +} + +function ClearReadFileDelegate(delegate ReadTitleFileCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = ReadTitleFileCompleteDelegates.Find(ReadTitleFileCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + ReadTitleFileCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +function ClearCachedFiles() +{ + local int Index; + + Index = 0; + J0x0B: + + // End:0x5A [Loop If] + if(Index < Files.Length) + { + Files[Index].ReadState = 0; + Index++; + // [Loop Continue] + goto J0x0B; + } + // End:0x9A + if(NotEqual_InterfaceInterface(TitleFileInterface, OnlineTitleFileInterface(none))) + { + TitleFileInterface.ClearDownloadedFiles(); + } + // End:0xDA + if(NotEqual_InterfaceInterface(TitleFileCacheInterface, OnlineTitleFileCacheInterface(none))) + { + TitleFileCacheInterface.ClearCachedFiles(); + } + //return; +} + +// Export UIniLocPatcher::execUpdateLocFileName(FFrame&, void* const) +native function string UpdateLocFileName(string Filename); diff --git a/exported/Engine/Classes/Input.uc b/exported/Engine/Classes/Input.uc new file mode 100755 index 00000000..0e83bebf --- /dev/null +++ b/exported/Engine/Classes/Input.uc @@ -0,0 +1,117 @@ +class Input extends Interaction + transient + native(UserInterface) + config(Input) + hidecategories(Object,UIRoot); + +struct native KeyBind +{ + var config name Name; + var init config string Command; + var config bool Control; + var config bool Shift; + var config bool Alt; + var config bool bIgnoreCtrl; + var config bool bIgnoreShift; + var config bool bIgnoreAlt; + var config bool LeftShoulder; + var config bool LeftTrigger; + var config bool RightShoulder; + var config bool RightTrigger; + var config bool LeftThumbStick; + var config bool RightThumbStick; + var config bool bIgnorePadModifier; + + structdefaultproperties + { + Name="None" + Command="" + Control=false + Shift=false + Alt=false + bIgnoreCtrl=false + bIgnoreShift=false + bIgnoreAlt=false + LeftShoulder=false + LeftTrigger=false + RightShoulder=false + RightTrigger=false + LeftThumbStick=false + RightThumbStick=false + bIgnorePadModifier=false + } +}; + +struct native TouchTracker +{ + var int Handle; + var int TouchpadIndex; + var Vector2D Location; + var Object.EInputEvent EventType; + var bool bTrapInput; + + structdefaultproperties + { + Handle=0 + TouchpadIndex=0 + Location=(X=0.0000000,Y=0.0000000) + EventType=EInputEvent.IE_Pressed + bTrapInput=false + } +}; + +var config array Bindings; +var protectedwrite array PressedKeys; +var const int CurrentControllerId; +var const Object.EInputEvent CurrentEvent; +var const float CurrentDelta; +var const float CurrentDeltaTime; +var native const map{VOID,VOID} NameToPtr; +var init native const array AxisArray; +var const array CachedInputEvents; +var const array CachedAnalogInputEvents; +var const array CachedTouchInputEvents; +var const array CurrentTouches; + +// Export UInput::execResetInput(FFrame&, void* const) +native function ResetInput(); + +// Export UInput::execGetBind(FFrame&, void* const) +native function string GetBind(const out name Key, const optional out KeyBind ModifierKeyBind); + +// Export UInput::execGetKeybindWithCurrentModifiers(FFrame&, void* const) +native function KeyBind GetKeybindWithCurrentModifiers(const out name Key); + +exec function SetBind(const out name BindName, string Command) +{ + local KeyBind NewBind; + local int BindIndex; + + // End:0x4F + if((Left(Command, 1) == "\"") && Right(Command, 1) == "\"") + { + Command = Mid(Command, 1, Len(Command) - 2); + } + BindIndex = Bindings.Length - 1; + J0x66: + + // End:0xEC [Loop If] + if(BindIndex >= 0) + { + // End:0xDE + if(Bindings[BindIndex].Name == BindName) + { + Bindings[BindIndex].Command = Command; + SaveConfig(); + return; + } + BindIndex--; + // [Loop Continue] + goto J0x66; + } + NewBind.Name = BindName; + NewBind.Command = Command; + Bindings[Bindings.Length] = NewBind; + SaveConfig(); + //return; +} diff --git a/exported/Engine/Classes/InstancedFoliageActor.uc b/exported/Engine/Classes/InstancedFoliageActor.uc new file mode 100755 index 00000000..90871009 --- /dev/null +++ b/exported/Engine/Classes/InstancedFoliageActor.uc @@ -0,0 +1,15 @@ +class InstancedFoliageActor extends Actor + native(Foliage) + notplaceable + hidecategories(Navigation,Object); + +var native const Map_Mirror FoliageMeshes; +var const transient StaticMesh SelectedMesh; +var const export editinline transient array InstancedStaticMeshComponents; + +defaultproperties +{ + bStatic=true + bCollideActors=true + bBlockActors=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/InstancedFoliageSettings.uc b/exported/Engine/Classes/InstancedFoliageSettings.uc new file mode 100755 index 00000000..d08e8d2a --- /dev/null +++ b/exported/Engine/Classes/InstancedFoliageSettings.uc @@ -0,0 +1,106 @@ +class InstancedFoliageSettings extends Object + native(Foliage) + editinlinenew + hidecategories(Object); + +enum FoliageCullOption +{ + FOLIAGECULL_Cull, // 0 + FOLIAGECULL_ScaleZ, // 1 + FOLIAGECULL_ScaleXYZ, // 2 + FOLIAGECULL_TranslateZ, // 3 + FOLIAGECULL_MAX // 4 +}; + +var(Painting) float Density; +var(Painting) float Radius; +var(Painting) float ScaleMinX; +var(Painting) float ScaleMinY; +var(Painting) float ScaleMinZ; +var(Painting) float ScaleMaxX; +var(Painting) float ScaleMaxY; +var(Painting) float ScaleMaxZ; +var(Painting) bool LockScaleX; +var(Painting) bool LockScaleY; +var(Painting) bool LockScaleZ; +var(Painting) bool AlignToNormal; +var(Painting) bool RandomYaw; +var(Painting) bool UniformScale; +var bool ReapplyDensity; +var bool ReapplyRadius; +var bool ReapplyAlignToNormal; +var bool ReapplyRandomYaw; +var bool ReapplyScaleX; +var bool ReapplyScaleY; +var bool ReapplyScaleZ; +var bool ReapplyRandomPitchAngle; +var bool ReapplyGroundSlope; +var bool ReapplyHeight; +var bool ReapplyLandscapeLayer; +var bool ReapplyZOffset; +var(Lighting) bool CastShadow; +var(Lighting) bool bCastDynamicShadow; +var(Lighting) bool bCastStaticShadow; +var(Lighting) bool bSelfShadowOnly; +var(Lighting) bool bNoModSelfShadow; +var(Lighting) bool bAcceptsDynamicDominantLightShadows; +var(Lighting) bool bCastHiddenShadow; +var(Lighting) bool bCastShadowAsTwoSided; +var(Lighting) const bool bAcceptsLights; +var(Lighting) const bool bAcceptsDynamicLights; +var(Lighting) const bool bUseOnePassLightingOnTranslucency; +var(Lighting) const bool bUsePrecomputedShadows; +var(Collision) bool bCollideActors; +var(Collision) bool bBlockActors; +var(Collision) bool bBlockNonZeroExtent; +var(Collision) bool bBlockZeroExtent; +var bool IsSelected; +var bool ShowNothing; +var bool ShowPaintSettings; +var bool ShowInstanceSettings; +var(Painting) float AlignMaxAngle; +var(Painting) float RandomPitchAngle; +var(Painting) float GroundSlope; +var(Painting) float HeightMin; +var(Painting) float HeightMax; +var(Painting) name LandscapeLayer; +var(Painting) float ZOffsetMin; +var(Painting) float ZOffsetMax; +var(Clustering) int MaxInstancesPerCluster; +var(Clustering) float MaxClusterRadius; +var float ReapplyDensityAmount; +var(Culling) int StartCullDistance; +var(Culling) int EndCullDistance; +var(Culling) InstancedFoliageSettings.FoliageCullOption CullOption; +var(Culling) Scene.EDetailMode DetailMode; +var(Lighting) const int TranslucencySortPriority; +var int DisplayOrder; + +defaultproperties +{ + Density=100.0000000 + ScaleMinX=1.0000000 + ScaleMinY=1.0000000 + ScaleMinZ=1.0000000 + ScaleMaxX=1.0000000 + ScaleMaxY=1.0000000 + ScaleMaxZ=1.0000000 + AlignToNormal=true + RandomYaw=true + UniformScale=true + CastShadow=true + bCastDynamicShadow=true + bCastStaticShadow=true + bAcceptsDynamicDominantLightShadows=true + bAcceptsLights=true + bAcceptsDynamicLights=true + bUsePrecomputedShadows=true + ShowPaintSettings=true + GroundSlope=45.0000000 + HeightMin=-262144.0000000 + HeightMax=262144.0000000 + MaxInstancesPerCluster=100 + MaxClusterRadius=10000.0000000 + ReapplyDensityAmount=1.0000000 + DetailMode=EDetailMode.DM_Medium +} \ No newline at end of file diff --git a/exported/Engine/Classes/InstancedStaticMeshComponent.uc b/exported/Engine/Classes/InstancedStaticMeshComponent.uc new file mode 100755 index 00000000..112c39cd --- /dev/null +++ b/exported/Engine/Classes/InstancedStaticMeshComponent.uc @@ -0,0 +1,50 @@ +class InstancedStaticMeshComponent extends StaticMeshComponent + native(Mesh) + editinlinenew + hidecategories(Object); + +struct native atomicwhencooked immutablewhencooked InstancedStaticMeshInstanceData +{ + var Matrix Transform; + var Vector2D LightmapUVBias; + var Vector2D ShadowmapUVBias; + + structdefaultproperties + { + Transform=(XPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000),YPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000),ZPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000),WPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000)) + LightmapUVBias=(X=0.0000000,Y=0.0000000) + ShadowmapUVBias=(X=0.0000000,Y=0.0000000) + } +}; + +struct native InstancedStaticMeshMappingInfo +{ + var native Pointer Mapping; + var native Pointer LightMap; + var Texture2D LightmapTexture; + var ShadowMap2D ShadowmapTexture; + + structdefaultproperties + { + LightmapTexture=none + ShadowmapTexture=none + } +}; + +var deprecated array PerInstanceData; +var native array PerInstanceSMData; +var transient int NumPendingLightmaps; +var int ComponentJoinKey; +var transient array CachedMappings; +var() int InstancingRandomSeed; +var(Culling) int InstanceStartCullDistance; +var(Culling) int InstanceEndCullDistance; +var bool bDontResolveInstancedLightmaps; + +defaultproperties +{ + ReplacementPrimitive=none + DetailMode=EDetailMode.DM_Medium + bUseAsOccluder=false + bSupportedOnMobile=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/Interaction.uc b/exported/Engine/Classes/Interaction.uc new file mode 100755 index 00000000..5e8f7f4b --- /dev/null +++ b/exported/Engine/Classes/Interaction.uc @@ -0,0 +1,78 @@ +class Interaction extends UIRoot + transient + native(UserInterface) + config(Engine) + hidecategories(Object,UIRoot); + +enum ETouchType +{ + Touch_Began, // 0 + Touch_Moved, // 1 + Touch_Stationary, // 2 + Touch_Ended, // 3 + Touch_Cancelled, // 4 + Touch_MAX // 5 +}; + +//var delegate __OnReceivedNativeInputKey__Delegate; +//var delegate __OnReceivedNativeInputAxis__Delegate; +//var delegate __OnReceivedNativeInputChar__Delegate; +//var delegate __OnInitialize__Delegate; + +delegate bool OnReceivedNativeInputKey(int ControllerId, name Key, Object.EInputEvent EventType, optional float AmountDepressed = 1.0000000, optional bool bGamepad) +{ + //return ReturnValue; +} + +delegate bool OnReceivedNativeInputAxis(int ControllerId, name Key, float Delta, float DeltaTime, optional bool bGamepad) +{ + //return ReturnValue; +} + +delegate bool OnReceivedNativeInputChar(int ControllerId, string Unicode) +{ + //return ReturnValue; +} + +event Tick(float DeltaTime) +{ + //return; +} + +event PostRender(Canvas Canvas) +{ + //return; +} + +// Export UInteraction::execInit(FFrame&, void* const) +native final function Init(); + +delegate OnInitialize() +{ + //return; +} + +function Initialized() +{ + //return; +} + +function NotifyGameSessionEnded() +{ + //return; +} + +function NotifyPlayerAdded(int PlayerIndex, LocalPlayer AddedPlayer) +{ + //return; +} + +function NotifyPlayerRemoved(int PlayerIndex, LocalPlayer RemovedPlayer) +{ + //return; +} + +defaultproperties +{ + OnInitialize=Initialized +} \ No newline at end of file diff --git a/exported/Engine/Classes/InteractiveFoliageActor.uc b/exported/Engine/Classes/InteractiveFoliageActor.uc new file mode 100755 index 00000000..8ae4bdd1 --- /dev/null +++ b/exported/Engine/Classes/InteractiveFoliageActor.uc @@ -0,0 +1,80 @@ +class InteractiveFoliageActor extends StaticMeshActor + native(Foliage) + placeable + hidecategories(Navigation); + +var private export editinline CylinderComponent CylinderComponent; +var private transient Vector TouchingActorEntryPosition; +var private transient Vector FoliageVelocity; +var private transient Vector FoliageForce; +var private transient Vector FoliagePosition; +var(FoliagePhysics) float FoliageDamageImpulseScale; +var(FoliagePhysics) float FoliageTouchImpulseScale; +var(FoliagePhysics) float FoliageStiffness; +var(FoliagePhysics) float FoliageStiffnessQuadratic; +var(FoliagePhysics) float FoliageDamping; +var(FoliagePhysics) float MaxDamageImpulse; +var(FoliagePhysics) float MaxTouchImpulse; +var(FoliagePhysics) float MaxForce; +var float Mass; + +// Export UInteractiveFoliageActor::execTakeDamage(FFrame&, void* const) +native simulated event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser); + +// Export UInteractiveFoliageActor::execTouch(FFrame&, void* const) +native simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal); + +defaultproperties +{ + // Reference: CylinderComponent'Engine.Default__InteractiveFoliageActor.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=200.0000000 + CollisionRadius=60.0000000 + ReplacementPrimitive=none + CollideActors=true + BlockZeroExtent=false + end object + CylinderComponent=CollisionCylinder + FoliageDamageImpulseScale=20.0000000 + FoliageTouchImpulseScale=10.0000000 + FoliageStiffness=10.0000000 + FoliageStiffnessQuadratic=0.3000000 + FoliageDamping=2.0000000 + MaxDamageImpulse=100000.0000000 + MaxTouchImpulse=1000.0000000 + MaxForce=100000.0000000 + Mass=1.0000000 + // Reference: InteractiveFoliageComponent'Engine.Default__InteractiveFoliageActor.FoliageMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FoliageMeshComponent0' + begin object name="FoliageMeshComponent0" class=Engine.InteractiveFoliageComponent + ReplacementPrimitive=none + bAllowApproximateOcclusion=true + bAcceptsStaticDecals=false + bAcceptsDynamicDecals=false + bForceDirectLightMap=true + bUsePrecomputedShadows=true + end object + StaticMeshComponent=FoliageMeshComponent0 + // Reference: TgSilhouetteComponent'Engine.Default__InteractiveFoliageActor.MySilhouette' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__StaticMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=StaticMeshComponent'Engine.Default__InteractiveFoliageActor.StaticMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + Components[0]=MySilhouette + Components[1]=FoliageMeshComponent0 + Components[2]=CollisionCylinder + TickGroup=ETickingGroup.TG_DuringAsyncWork + bStatic=false + bNoDelete=true + bWorldGeometry=false + bBlockActors=false + bProjTarget=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/InteractiveFoliageComponent.uc b/exported/Engine/Classes/InteractiveFoliageComponent.uc new file mode 100755 index 00000000..475b5554 --- /dev/null +++ b/exported/Engine/Classes/InteractiveFoliageComponent.uc @@ -0,0 +1,11 @@ +class InteractiveFoliageComponent extends StaticMeshComponent + native(Foliage) + editinlinenew + hidecategories(Object,Object); + +var protected duplicatetransient native const Pointer FoliageSceneProxy; + +defaultproperties +{ + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/Interface_ActorPathConstraints.uc b/exported/Engine/Classes/Interface_ActorPathConstraints.uc new file mode 100755 index 00000000..2c65df79 --- /dev/null +++ b/exported/Engine/Classes/Interface_ActorPathConstraints.uc @@ -0,0 +1,6 @@ +interface Interface_ActorPathConstraints extends Interface + abstract + native(AI); + +// Export UInterface_ActorPathConstraints::execSolveConstraints(FFrame&, void* const) +native function SolveConstraints(const Vector InitialPosition, const float MaxDistance, out Vector OutDesiredPosition); diff --git a/exported/Engine/Classes/Interface_NavMeshPathObject.uc b/exported/Engine/Classes/Interface_NavMeshPathObject.uc new file mode 100755 index 00000000..200f9ab4 --- /dev/null +++ b/exported/Engine/Classes/Interface_NavMeshPathObject.uc @@ -0,0 +1,3 @@ +interface Interface_NavMeshPathObject extends Interface + abstract + native(AI); diff --git a/exported/Engine/Classes/Interface_NavMeshPathObstacle.uc b/exported/Engine/Classes/Interface_NavMeshPathObstacle.uc new file mode 100755 index 00000000..17e6e45b --- /dev/null +++ b/exported/Engine/Classes/Interface_NavMeshPathObstacle.uc @@ -0,0 +1,12 @@ +interface Interface_NavMeshPathObstacle extends Interface + abstract + native(AI); + +enum EEdgeHandlingStatus +{ + EHS_AddedBothDirs, // 0 + EHS_Added0to1, // 1 + EHS_Added1to0, // 2 + EHS_AddedNone, // 3 + EHS_MAX // 4 +}; diff --git a/exported/Engine/Classes/Interface_NavMeshPathSwitch.uc b/exported/Engine/Classes/Interface_NavMeshPathSwitch.uc new file mode 100755 index 00000000..8697256f --- /dev/null +++ b/exported/Engine/Classes/Interface_NavMeshPathSwitch.uc @@ -0,0 +1,8 @@ +class Interface_NavMeshPathSwitch extends Interface_NavMeshPathObject + abstract + native(AI); + +event bool AIActivateSwitch(AIController AI) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/Interface_NavigationHandle.uc b/exported/Engine/Classes/Interface_NavigationHandle.uc new file mode 100755 index 00000000..51b205ea --- /dev/null +++ b/exported/Engine/Classes/Interface_NavigationHandle.uc @@ -0,0 +1,8 @@ +interface Interface_NavigationHandle extends Interface + abstract + native; + +event NotifyPathChanged() +{ + //return; +} diff --git a/exported/Engine/Classes/Interface_PylonGeometryProvider.uc b/exported/Engine/Classes/Interface_PylonGeometryProvider.uc new file mode 100755 index 00000000..5754000c --- /dev/null +++ b/exported/Engine/Classes/Interface_PylonGeometryProvider.uc @@ -0,0 +1,3 @@ +interface Interface_PylonGeometryProvider extends Interface + abstract + native(AI); diff --git a/exported/Engine/Classes/Interface_RVO.uc b/exported/Engine/Classes/Interface_RVO.uc new file mode 100755 index 00000000..4c6f7300 --- /dev/null +++ b/exported/Engine/Classes/Interface_RVO.uc @@ -0,0 +1,3 @@ +interface Interface_RVO extends Interface + abstract + native(AI); diff --git a/exported/Engine/Classes/Interface_Speaker.uc b/exported/Engine/Classes/Interface_Speaker.uc new file mode 100755 index 00000000..a87ce789 --- /dev/null +++ b/exported/Engine/Classes/Interface_Speaker.uc @@ -0,0 +1,8 @@ +interface Interface_Speaker extends Interface + abstract + native; + +simulated event Speak(SoundCue Cue) +{ + //return; +} diff --git a/exported/Engine/Classes/InterpActor.uc b/exported/Engine/Classes/InterpActor.uc new file mode 100755 index 00000000..fd0e886b --- /dev/null +++ b/exported/Engine/Classes/InterpActor.uc @@ -0,0 +1,549 @@ +class InterpActor extends DynamicSMActor + native + placeable + hidecategories(Navigation) + classgroup(Common); + +struct CheckpointRecord +{ + var Vector Location; + var Rotator Rotation; + var Actor.ECollisionType CollisionType; + var bool bHidden; + var bool bIsShutdown; + var bool bNeedsPositionReplication; + + structdefaultproperties + { + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Rotation=(Pitch=0,Yaw=0,Roll=0) + CollisionType=ECollisionType.COLLIDE_CustomDefault + bHidden=false + bIsShutdown=false + bNeedsPositionReplication=false + } +}; + +var bool bShouldSaveForCheckpoint; +var bool bMonitorMover; +var bool bMonitorZVelocity; +var() bool bDestroyProjectilesOnEncroach; +var() bool bContinueOnEncroachPhysicsObject; +var() bool bStopOnEncroach; +var() bool bShouldShadowParentAllAttachedActors; +var bool bIsLift; +var NavigationPoint MyMarker; +var float MaxZVelocity; +var float StayOpenTime; +var() SoundCue OpenSound; +var() SoundCue OpeningAmbientSound; +var() SoundCue OpenedSound; +var() SoundCue CloseSound; +var() SoundCue ClosingAmbientSound; +var() SoundCue ClosedSound; +var export editinline AudioComponent AmbientSoundComponent; + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x33 + if(bShouldShadowParentAllAttachedActors) + { + SetShadowParentOnAllAttachedComponents(StaticMeshComponent, LightEnvironment); + } + // End:0x7E + if((OpeningAmbientSound != none) || ClosingAmbientSound != none) + { + AmbientSoundComponent = new (self) Class'Engine.AudioComponent'; + AttachComponent(AmbientSoundComponent); + } + // End:0xD2 + if((Base != none) && bHardAttach || (BaseSkelComponent != none) && BaseBoneName != 'None') + { + bShouldSaveForCheckpoint = false; + } + //return; +} + +event bool EncroachingOn(Actor Other) +{ + local int I; + local SeqEvent_Mover MoverEvent; + local Pawn P; + local Vector Height, HitLocation, HitNormal; + local bool bLandingPawn; + + // End:0x3A + if(bContinueOnEncroachPhysicsObject && int(Other.Physics) == int(10)) + { + return false; + } + // End:0x76 + if(Other.bDestroyedByInterpActor) + { + Other.Destroy(); + return false; + } + // End:0x4F2 + if((Other.Base == self) || (Normal(Velocity) Dot Normal(Other.Location - Location)) >= 0.0000000) + { + P = Pawn(Other); + // End:0x3C3 + if(P != none) + { + // End:0x2BA + if((int(P.Physics) == int(2)) && Velocity.Z > 0.0000000) + { + Height = P.GetCollisionHeight() * vect(0.0000000, 0.0000000, 1.0000000); + // End:0x2B7 + if(TraceComponent(HitLocation, HitNormal, StaticMeshComponent, P.Location - Height, P.Location + Height, P.GetCollisionExtent())) + { + // End:0x2AB + if(P.Location.Z < Location.Z) + { + P.SetLocation(HitLocation + Height); + } + bLandingPawn = true; + } + } + else + { + // End:0x3C0 + if((((P.Base != self) && P.Controller != none) && P.Controller.PendingMover != none) && P.Controller.PendingMover == self) + { + P.Controller.UnderLift(LiftCenter(MyMarker)); + } + } + } + else + { + // End:0x44A + if(bDestroyProjectilesOnEncroach && Other.IsA('Projectile')) + { + Projectile(Other).Explode(Other.Location, -Normal(Velocity)); + return false; + } + } + // End:0x4F2 + if(!bLandingPawn) + { + I = 0; + J0x464: + + // End:0x4E7 [Loop If] + if(I < GeneratedEvents.Length) + { + MoverEvent = SeqEvent_Mover(GeneratedEvents[I]); + // End:0x4D9 + if(MoverEvent != none) + { + MoverEvent.NotifyEncroachingOn(Other); + } + I++; + // [Loop Continue] + goto J0x464; + } + return bStopOnEncroach; + } + } + return false; + //return ReturnValue; +} + +event RanInto(Actor Other) +{ + local int I; + local SeqEvent_Mover MoverEvent; + + // End:0x88 + if(bDestroyProjectilesOnEncroach && Other.IsA('Projectile')) + { + Projectile(Other).Explode(Other.Location, -Normal(Velocity)); + } + else + { + // End:0xC5 + if(Other.bDestroyedByInterpActor) + { + Other.Destroy(); + } + else + { + // End:0xD7 + if(bIsLift) + { + return; + } + else + { + I = 0; + J0xE2: + + // End:0x165 [Loop If] + if(I < GeneratedEvents.Length) + { + MoverEvent = SeqEvent_Mover(GeneratedEvents[I]); + // End:0x157 + if(MoverEvent != none) + { + MoverEvent.NotifyEncroachingOn(Other); + } + I++; + // [Loop Continue] + goto J0xE2; + } + } + } + } + //return; +} + +event Attach(Actor Other) +{ + local int I; + local SeqEvent_Mover MoverEvent; + + // End:0xA7 + if(!IsTimerActive('FinishedOpen')) + { + I = 0; + J0x24: + + // End:0xA7 [Loop If] + if(I < GeneratedEvents.Length) + { + MoverEvent = SeqEvent_Mover(GeneratedEvents[I]); + // End:0x99 + if(MoverEvent != none) + { + MoverEvent.NotifyAttached(Other); + } + I++; + // [Loop Continue] + goto J0x24; + } + } + //return; +} + +event Detach(Actor Other) +{ + local int I; + local SeqEvent_Mover MoverEvent; + + I = 0; + J0x0B: + + // End:0x8E [Loop If] + if(I < GeneratedEvents.Length) + { + MoverEvent = SeqEvent_Mover(GeneratedEvents[I]); + // End:0x80 + if(MoverEvent != none) + { + MoverEvent.NotifyDetached(Other); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function Restart() +{ + local Actor A; + + // End:0x2C + foreach BasedActors(Class'Engine.Actor', A) + { + Attach(A); + } + //return; +} + +function FinishedOpen() +{ + local int I; + local SeqEvent_Mover MoverEvent; + + I = 0; + J0x0B: + + // End:0x85 [Loop If] + if(I < GeneratedEvents.Length) + { + MoverEvent = SeqEvent_Mover(GeneratedEvents[I]); + // End:0x77 + if(MoverEvent != none) + { + MoverEvent.NotifyFinishedOpen(); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated function PlayMovingSound(bool bClosing) +{ + local SoundCue SoundToPlay, AmbientToPlay; + + // End:0x36 + if(bClosing) + { + SoundToPlay = CloseSound; + AmbientToPlay = OpeningAmbientSound; + } + else + { + SoundToPlay = OpenSound; + AmbientToPlay = ClosingAmbientSound; + } + // End:0x83 + if(SoundToPlay != none) + { + PlaySound(SoundToPlay, true); + } + // End:0xF9 + if(AmbientToPlay != none) + { + AmbientSoundComponent.Stop(); + AmbientSoundComponent.SoundCue = AmbientToPlay; + AmbientSoundComponent.Play(); + } + //return; +} + +simulated event InterpolationStarted(SeqAct_Interp InterpAction, InterpGroupInst GroupInst) +{ + ClearTimer('Restart'); + ClearTimer('FinishedOpen'); + PlayMovingSound(InterpAction.bReversePlayback); + bShouldSaveForCheckpoint = true; + //return; +} + +simulated event InterpolationFinished(SeqAct_Interp InterpAction) +{ + local DoorMarker DoorNav; + local Controller C; + local SoundCue StoppedSound; + + // End:0x2F + if(AmbientSoundComponent != none) + { + AmbientSoundComponent.Stop(); + } + StoppedSound = ((InterpAction.bReversePlayback) ? ClosedSound : OpenedSound); + // End:0x96 + if(StoppedSound != none) + { + PlaySound(StoppedSound, true); + } + DoorNav = DoorMarker(MyMarker); + // End:0x12C + if(InterpAction.bReversePlayback) + { + // End:0xFB + if(Attached.Length > 0) + { + SetTimer(StayOpenTime, false, 'Restart'); + } + // End:0x129 + if(DoorNav != none) + { + DoorNav.MoverClosed(); + } + } + else + { + SetTimer(StayOpenTime, false, 'FinishedOpen'); + // End:0x171 + if(DoorNav != none) + { + DoorNav.MoverOpened(); + } + } + // End:0x1F7 + if(bMonitorMover) + { + // End:0x1F6 + foreach WorldInfo.AllControllers(Class'Engine.Controller', C) + { + // End:0x1F5 + if(C.PendingMover == self) + { + C.MoverFinished(); + } + } + } + // End:0x25F + if(InterpAction.bNoResetOnRewind && InterpAction.bRewindOnPlay) + { + ForceNetRelevant(); + bUpdateSimulatedPosition = true; + bReplicateMovement = true; + } + //return; +} + +simulated event InterpolationChanged(SeqAct_Interp InterpAction) +{ + PlayMovingSound(InterpAction.bReversePlayback); + //return; +} + +simulated function ShutDown() +{ + super(Actor).ShutDown(); + bShouldSaveForCheckpoint = true; + //return; +} + +function bool ShouldSaveForCheckpoint() +{ + return bShouldSaveForCheckpoint || int(RemoteRole) == int(ROLE_SimulatedProxy); + //return ReturnValue; +} + +function CreateCheckpointRecord(out CheckpointRecord Record) +{ + Record.Location = Location; + Record.Rotation = Rotation; + Record.bHidden = bHidden; + Record.CollisionType = ReplicatedCollisionType; + Record.bNeedsPositionReplication = (int(RemoteRole) == int(ROLE_SimulatedProxy)) && bUpdateSimulatedPosition; + Record.bIsShutdown = (int(Physics) == int(0)) && bHidden; + //return; +} + +function ApplyCheckpointRecord(const out CheckpointRecord Record) +{ + local Actor OldBase; + local editinline SkeletalMeshComponent OldBaseComp; + local name OldBaseBoneName; + local array OldAttached; + local array OldLocations; + local int I; + + // End:0x2D + if(Record.bIsShutdown) + { + ShutDown(); + } + else + { + OldAttached = Attached; + J0x40: + + // End:0x101 [Loop If] + if(I < OldAttached.Length) + { + // End:0xE9 + if((OldAttached[I] != none) && OldAttached[I].bJustTeleported) + { + OldLocations[I] = OldAttached[I].Location; + I++; + } + else + { + OldAttached.Remove(I, 1); + } + // [Loop Continue] + goto J0x40; + } + OldBase = Base; + OldBaseComp = BaseSkelComponent; + OldBaseBoneName = BaseBoneName; + SetLocation(Record.Location); + SetRotation(Record.Rotation); + SetBase(OldBase,, OldBaseComp, OldBaseBoneName); + I = 0; + J0x1A2: + + // End:0x23C [Loop If] + if(I < OldAttached.Length) + { + // End:0x22E + if(OldAttached[I] != none) + { + OldAttached[I].SetLocation(OldLocations[I]); + OldAttached[I].SetBase(self); + } + I++; + // [Loop Continue] + goto J0x1A2; + } + // End:0x29A + if(int(Record.CollisionType) != int(ReplicatedCollisionType)) + { + SetCollisionType(Record.CollisionType); + ForceNetRelevant(); + } + // End:0x320 + if(Record.bHidden != bHidden) + { + SetHidden(Record.bHidden); + SetForcedInitialReplicatedProperty(BoolProperty'Engine.Actor.bHidden', bHidden == default.bHidden); + ForceNetRelevant(); + } + // End:0x362 + if(Record.bNeedsPositionReplication) + { + bUpdateSimulatedPosition = true; + bReplicateMovement = true; + ForceNetRelevant(); + } + } + bShouldSaveForCheckpoint = true; + //return; +} + +defaultproperties +{ + bShouldSaveForCheckpoint=true + bDestroyProjectilesOnEncroach=true + bContinueOnEncroachPhysicsObject=true + bStopOnEncroach=true + bShouldShadowParentAllAttachedActors=true + // Reference: StaticMeshComponent'Engine.Default__InterpActor.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__DynamicSMActor.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + WireframeColor=(R=255,G=0,B=255,A=255) + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__InterpActor.MyLightEnvironment' + bSeenByAI=true + RBCollideWithChannels=(Default=true,BlockingVolume=true) + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__InterpActor.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__DynamicSMActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + Components[1]=StaticMeshComponent0 + Physics=EPhysics.PHYS_Interpolating + RemoteRole=ENetRole.ROLE_None + bNoDelete=true + bAlwaysRelevant=true + bOnlyDirtyReplication=true + bBlocksTeleport=true + m_bSupportsRelativeLocationBase=true + NetUpdateFrequency=1.0000000 + NetPriority=2.7000000 + CollisionComponent=StaticMeshComponent0 + SupportedEvents[0]=Class'Engine.SeqEvent_Touch' + SupportedEvents[1]=Class'Engine.SeqEvent_Destroyed' + SupportedEvents[2]=Class'Engine.SeqEvent_TakeDamage' + SupportedEvents[3]=Class'Engine.SeqEvent_HitWall' + SupportedEvents[4]=Class'Engine.SeqEvent_AnimNotify' + SupportedEvents[5]=Class'Engine.SeqEvent_MobileTouch' + SupportedEvents[6]=Class'Engine.SeqEvent_Mover' +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpActor_ForCinematic.uc b/exported/Engine/Classes/InterpActor_ForCinematic.uc new file mode 100755 index 00000000..15cdddaa --- /dev/null +++ b/exported/Engine/Classes/InterpActor_ForCinematic.uc @@ -0,0 +1,26 @@ +class InterpActor_ForCinematic extends InterpActor + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: StaticMeshComponent'Engine.Default__InterpActor_ForCinematic.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__InterpActor.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__InterpActor_ForCinematic.MyLightEnvironment' + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__InterpActor_ForCinematic.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__InterpActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + Components[1]=StaticMeshComponent0 + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpCurveEdSetup.uc b/exported/Engine/Classes/InterpCurveEdSetup.uc new file mode 100755 index 00000000..00bfeb21 --- /dev/null +++ b/exported/Engine/Classes/InterpCurveEdSetup.uc @@ -0,0 +1,56 @@ +class InterpCurveEdSetup extends Object + native; + +struct native CurveEdEntry +{ + var Object CurveObject; + var Color CurveColor; + var string CurveName; + var int bHideCurve; + var int bColorCurve; + var int bFloatingPointColorCurve; + var int bClamp; + var float ClampLow; + var float ClampHigh; + + structdefaultproperties + { + CurveObject=none + CurveColor=(R=0,G=0,B=0,A=0) + CurveName="" + bHideCurve=0 + bColorCurve=0 + bFloatingPointColorCurve=0 + bClamp=0 + ClampLow=0.0000000 + ClampHigh=0.0000000 + } +}; + +struct native CurveEdTab +{ + var string TabName; + var array Curves; + var float ViewStartInput; + var float ViewEndInput; + var float ViewStartOutput; + var float ViewEndOutput; + + structdefaultproperties + { + TabName="" + Curves=none + ViewStartInput=0.0000000 + ViewEndInput=0.0000000 + ViewStartOutput=0.0000000 + ViewEndOutput=0.0000000 + } +}; + +var array Tabs; +var int ActiveTab; + +defaultproperties +{ + Tabs[0]=(TabName="Default",Curves=none,ViewStartInput=0.0000000,ViewEndInput=1.0000000,ViewStartOutput=-1.0000000,ViewEndOutput=1.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpData.uc b/exported/Engine/Classes/InterpData.uc new file mode 100755 index 00000000..33655df6 --- /dev/null +++ b/exported/Engine/Classes/InterpData.uc @@ -0,0 +1,36 @@ +class InterpData extends SequenceVariable + native(Sequence) + hidecategories(Object); + +struct native AnimSetBakeAndPruneStatus +{ + var() editconst string AnimSetName; + var() editconst bool bReferencedButUnused; + var() bool bSkipBakeAndPrune; + var() bool bSkipCooking; + + structdefaultproperties + { + AnimSetName="" + bReferencedButUnused=false + bSkipBakeAndPrune=false + bSkipCooking=false + } +}; + +var float InterpLength; +var float PathBuildTime; +var export array InterpGroups; +var export InterpCurveEdSetup CurveEdSetup; +var float EdSectionStart; +var float EdSectionEnd; +var() bool bShouldBakeAndPrune; +var() editfixedsize array BakeAndPruneStatus; +var transient InterpGroupDirector CachedDirectorGroup; + +defaultproperties +{ + InterpLength=5.0000000 + EdSectionEnd=1.0000000 + ObjName="Matinee Data" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpFilter.uc b/exported/Engine/Classes/InterpFilter.uc new file mode 100755 index 00000000..e1e0f8d1 --- /dev/null +++ b/exported/Engine/Classes/InterpFilter.uc @@ -0,0 +1,4 @@ +class InterpFilter extends Object + native(Interpolation); + +var string Caption; diff --git a/exported/Engine/Classes/InterpFilter_Classes.uc b/exported/Engine/Classes/InterpFilter_Classes.uc new file mode 100755 index 00000000..6fc00905 --- /dev/null +++ b/exported/Engine/Classes/InterpFilter_Classes.uc @@ -0,0 +1,2 @@ +class InterpFilter_Classes extends InterpFilter + native(Interpolation); diff --git a/exported/Engine/Classes/InterpFilter_Custom.uc b/exported/Engine/Classes/InterpFilter_Custom.uc new file mode 100755 index 00000000..5c804338 --- /dev/null +++ b/exported/Engine/Classes/InterpFilter_Custom.uc @@ -0,0 +1,2 @@ +class InterpFilter_Custom extends InterpFilter + native(Interpolation); diff --git a/exported/Engine/Classes/InterpGroup.uc b/exported/Engine/Classes/InterpGroup.uc new file mode 100755 index 00000000..3994835c --- /dev/null +++ b/exported/Engine/Classes/InterpGroup.uc @@ -0,0 +1,38 @@ +class InterpGroup extends Object + native(Interpolation) + collapsecategories + hidecategories(Object); + +struct InterpEdSelKey +{ + var InterpGroup Group; + var InterpTrack Track; + var int KeyIndex; + var float UnsnappedPosition; + + structdefaultproperties + { + Group=none + Track=none + KeyIndex=0 + UnsnappedPosition=0.0000000 + } +}; + +var private native const noexport Pointer VfTable_FInterpEdInputInterface; +var export array InterpTracks; +var name GroupName; +var() Color GroupColor; +var() array GroupAnimSets; +var bool bCollapsed; +var transient bool bVisible; +var bool bIsFolder; +var bool bIsParented; +var transient bool bIsSelected; + +defaultproperties +{ + GroupName="InterpGroup" + GroupColor=(R=100,G=80,B=200,A=255) + bVisible=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpGroupAI.uc b/exported/Engine/Classes/InterpGroupAI.uc new file mode 100755 index 00000000..0cd9fa53 --- /dev/null +++ b/exported/Engine/Classes/InterpGroupAI.uc @@ -0,0 +1,17 @@ +class InterpGroupAI extends InterpGroup + native(Interpolation) + collapsecategories + hidecategories(Object,Object); + +var() name StageMarkGroup; +var() bool SnapToRootBoneLocationWhenFinished; +var() bool bNoEncroachmentCheck; +var() bool bDisableWorldCollision; +var() bool bIgnoreLegacyHeightAdjust; +var editoronly transient bool bRecreatePreviewPawn; +var editoronly transient bool bRefreshStageMarkGroup; + +defaultproperties +{ + GroupName="AIGroup" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpGroupCamera.uc b/exported/Engine/Classes/InterpGroupCamera.uc new file mode 100755 index 00000000..6da6fddd --- /dev/null +++ b/exported/Engine/Classes/InterpGroupCamera.uc @@ -0,0 +1,32 @@ +class InterpGroupCamera extends InterpGroup + native(Interpolation) + collapsecategories + hidecategories(Object,Object); + +struct native CameraPreviewInfo +{ + var() Class PawnClass; + var() array PreviewAnimSets; + var() name AnimSeqName; + var editconst Vector Location; + var editconst Rotator Rotation; + var transient Pawn PawnInst; + + structdefaultproperties + { + PawnClass=none + PreviewAnimSets=none + AnimSeqName="None" + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Rotation=(Pitch=0,Yaw=0,Roll=0) + PawnInst=none + } +}; + +var transient CameraAnim CameraAnimInst; +var() float CompressTolerance; + +defaultproperties +{ + CompressTolerance=5.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpGroupDirector.uc b/exported/Engine/Classes/InterpGroupDirector.uc new file mode 100755 index 00000000..f916d3e6 --- /dev/null +++ b/exported/Engine/Classes/InterpGroupDirector.uc @@ -0,0 +1,9 @@ +class InterpGroupDirector extends InterpGroup + native(Interpolation) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + GroupName="DirGroup" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpGroupInst.uc b/exported/Engine/Classes/InterpGroupInst.uc new file mode 100755 index 00000000..87019580 --- /dev/null +++ b/exported/Engine/Classes/InterpGroupInst.uc @@ -0,0 +1,7 @@ +class InterpGroupInst extends Object + native(Interpolation); + +var InterpGroup Group; +var Actor GroupActor; +var array TrackInst; +var private native transient Pointer CachedCamOverridePostProcess; diff --git a/exported/Engine/Classes/InterpGroupInstAI.uc b/exported/Engine/Classes/InterpGroupInstAI.uc new file mode 100755 index 00000000..f58f9128 --- /dev/null +++ b/exported/Engine/Classes/InterpGroupInstAI.uc @@ -0,0 +1,9 @@ +class InterpGroupInstAI extends InterpGroupInst + native(Interpolation); + +var transient InterpGroupAI AIGroup; +var Actor.EPhysics SavedPhysics; +var bool bSavedNoEncroachCheck; +var bool bSavedCollideActors; +var bool bSavedBlockActors; +var transient Actor StageMarkActor; diff --git a/exported/Engine/Classes/InterpGroupInstCamera.uc b/exported/Engine/Classes/InterpGroupInstCamera.uc new file mode 100755 index 00000000..0c267552 --- /dev/null +++ b/exported/Engine/Classes/InterpGroupInstCamera.uc @@ -0,0 +1,2 @@ +class InterpGroupInstCamera extends InterpGroupInst + native(Interpolation); diff --git a/exported/Engine/Classes/InterpGroupInstDirector.uc b/exported/Engine/Classes/InterpGroupInstDirector.uc new file mode 100755 index 00000000..2d7eaab1 --- /dev/null +++ b/exported/Engine/Classes/InterpGroupInstDirector.uc @@ -0,0 +1,2 @@ +class InterpGroupInstDirector extends InterpGroupInst + native(Interpolation); diff --git a/exported/Engine/Classes/InterpTrack.uc b/exported/Engine/Classes/InterpTrack.uc new file mode 100755 index 00000000..7bd4cb48 --- /dev/null +++ b/exported/Engine/Classes/InterpTrack.uc @@ -0,0 +1,67 @@ +class InterpTrack extends Object + abstract + native + collapsecategories + noexport + hidecategories(Object); + +enum ETrackActiveCondition +{ + ETAC_Always, // 0 + ETAC_GoreEnabled, // 1 + ETAC_GoreDisabled, // 2 + ETAC_MAX // 3 +}; + +struct native SupportedSubTrackInfo +{ + var Class SupportedClass; + var string SubTrackName; + var int GroupIndex; + + structdefaultproperties + { + SupportedClass=none + SubTrackName="" + GroupIndex=0 + } +}; + +struct native SubTrackGroup +{ + var string GroupName; + var array TrackIndices; + var bool bIsCollapsed; + var transient bool bIsSelected; + + structdefaultproperties + { + GroupName="" + TrackIndices=none + bIsCollapsed=false + bIsSelected=false + } +}; + +var private native const noexport Pointer VfTable_FInterpEdInputInterface; +var private native noexport Pointer CurveEdVTable; +var array SubTracks; +var Class TrackInstClass; +var() InterpTrack.ETrackActiveCondition ActiveCondition; +var string TrackTitle; +var bool bOnePerGroup; +var bool bDirGroupOnly; +var bool bDisableTrack; +var bool bIsAnimControlTrack; +var bool bSubTrackOnly; +var transient bool bVisible; +var transient bool bIsSelected; +var transient bool bIsRecording; +var bool bIsCollapsed; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInst' + TrackTitle="Track" + bVisible=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackAnimControl.uc b/exported/Engine/Classes/InterpTrackAnimControl.uc new file mode 100755 index 00000000..9b7763ef --- /dev/null +++ b/exported/Engine/Classes/InterpTrackAnimControl.uc @@ -0,0 +1,39 @@ +class InterpTrackAnimControl extends InterpTrackFloatBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +struct native AnimControlTrackKey +{ + var float StartTime; + var name AnimSeqName; + var float AnimStartOffset; + var float AnimEndOffset; + var float AnimPlayRate; + var bool bLooping; + var bool bReverse; + + structdefaultproperties + { + StartTime=0.0000000 + AnimSeqName="None" + AnimStartOffset=0.0000000 + AnimEndOffset=0.0000000 + AnimPlayRate=0.0000000 + bLooping=false + bReverse=false + } +}; + +var array AnimSets; +var() name SlotName; +var array AnimSeqs; +var() bool bEnableRootMotion; +var() bool bSkipAnimNotifiers; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstAnimControl' + TrackTitle="Anim" + bIsAnimControlTrack=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackAudioMaster.uc b/exported/Engine/Classes/InterpTrackAudioMaster.uc new file mode 100755 index 00000000..5d6f2dc1 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackAudioMaster.uc @@ -0,0 +1,12 @@ +class InterpTrackAudioMaster extends InterpTrackVectorBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstAudioMaster' + TrackTitle="Audio Master" + bOnePerGroup=true + bDirGroupOnly=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackBoolProp.uc b/exported/Engine/Classes/InterpTrackBoolProp.uc new file mode 100755 index 00000000..055aa521 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackBoolProp.uc @@ -0,0 +1,25 @@ +class InterpTrackBoolProp extends InterpTrack + native(Interpolation) + collapsecategories + hidecategories(Object); + +struct native BoolTrackKey +{ + var float Time; + var() bool Value; + + structdefaultproperties + { + Time=0.0000000 + Value=false + } +}; + +var array BoolTrack; +var() editconst name PropertyName; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstBoolProp' + TrackTitle="Bool Property" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackColorProp.uc b/exported/Engine/Classes/InterpTrackColorProp.uc new file mode 100755 index 00000000..d1c6a490 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackColorProp.uc @@ -0,0 +1,12 @@ +class InterpTrackColorProp extends InterpTrackVectorBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +var() editconst name PropertyName; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstColorProp' + TrackTitle="Color Property" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackColorScale.uc b/exported/Engine/Classes/InterpTrackColorScale.uc new file mode 100755 index 00000000..5b5fe289 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackColorScale.uc @@ -0,0 +1,12 @@ +class InterpTrackColorScale extends InterpTrackVectorBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstColorScale' + TrackTitle="Color Scale" + bOnePerGroup=true + bDirGroupOnly=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackDirector.uc b/exported/Engine/Classes/InterpTrackDirector.uc new file mode 100755 index 00000000..178ad185 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackDirector.uc @@ -0,0 +1,35 @@ +class InterpTrackDirector extends InterpTrack + native(Interpolation) + collapsecategories + hidecategories(Object); + +struct native DirectorTrackCut +{ + var float Time; + var float TransitionTime; + var() name TargetCamGroup; + var int ShotNumber; + + structdefaultproperties + { + Time=0.0000000 + TransitionTime=0.0000000 + TargetCamGroup="None" + ShotNumber=0 + } +}; + +var array CutTrack; +var() bool bSimulateCameraCutsOnClients; +var() float fIntroFadeTime; +var() float fOutroFadeTime; + +defaultproperties +{ + bSimulateCameraCutsOnClients=true + fIntroFadeTime=0.5000000 + TrackInstClass=Class'Engine.InterpTrackInstDirector' + TrackTitle="Director" + bOnePerGroup=true + bDirGroupOnly=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackEvent.uc b/exported/Engine/Classes/InterpTrackEvent.uc new file mode 100755 index 00000000..fefbef72 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackEvent.uc @@ -0,0 +1,29 @@ +class InterpTrackEvent extends InterpTrack + native(Interpolation) + collapsecategories + hidecategories(Object); + +struct native EventTrackKey +{ + var float Time; + var() name EventName; + + structdefaultproperties + { + Time=0.0000000 + EventName="None" + } +}; + +var array EventTrack; +var() bool bFireEventsWhenForwards; +var() bool bFireEventsWhenBackwards; +var() bool bFireEventsWhenJumpingForwards; + +defaultproperties +{ + bFireEventsWhenForwards=true + bFireEventsWhenBackwards=true + TrackInstClass=Class'Engine.InterpTrackInstEvent' + TrackTitle="Event" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackFaceFX.uc b/exported/Engine/Classes/InterpTrackFaceFX.uc new file mode 100755 index 00000000..87d4b782 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackFaceFX.uc @@ -0,0 +1,42 @@ +class InterpTrackFaceFX extends InterpTrack + native(Interpolation) + collapsecategories + hidecategories(Object); + +struct native FaceFXTrackKey +{ + var float StartTime; + var string FaceFXGroupName; + var string FaceFXSeqName; + + structdefaultproperties + { + StartTime=0.0000000 + FaceFXGroupName="" + FaceFXSeqName="" + } +}; + +struct native FaceFXSoundCueKey +{ + var private const SoundCue FaceFXSoundCue; + var private const AkEvent FaceFXAkEvent; + + structdefaultproperties + { + FaceFXSoundCue=none + FaceFXAkEvent=none + } +}; + +var() array FaceFXAnimSets; +var array FaceFXSeqs; +var transient FaceFXAsset CachedActorFXAsset; +var private const array FaceFXSoundCueKeys; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstFaceFX' + TrackTitle="FaceFX" + bOnePerGroup=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackFade.uc b/exported/Engine/Classes/InterpTrackFade.uc new file mode 100755 index 00000000..32824c9f --- /dev/null +++ b/exported/Engine/Classes/InterpTrackFade.uc @@ -0,0 +1,14 @@ +class InterpTrackFade extends InterpTrackFloatBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +var() bool bPersistFade; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstFade' + TrackTitle="Fade" + bOnePerGroup=true + bDirGroupOnly=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackFloatBase.uc b/exported/Engine/Classes/InterpTrackFloatBase.uc new file mode 100755 index 00000000..3728b5b3 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackFloatBase.uc @@ -0,0 +1,13 @@ +class InterpTrackFloatBase extends InterpTrack + abstract + native(Interpolation) + collapsecategories + hidecategories(Object); + +var InterpCurveFloat FloatTrack; +var() float CurveTension; + +defaultproperties +{ + TrackTitle="Generic Float Track" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackFloatMaterialParam.uc b/exported/Engine/Classes/InterpTrackFloatMaterialParam.uc new file mode 100755 index 00000000..b54dc8c9 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackFloatMaterialParam.uc @@ -0,0 +1,15 @@ +class InterpTrackFloatMaterialParam extends InterpTrackFloatBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +var() const array Materials; +var const deprecated MaterialInterface Material; +var() name ParamName; +var transient bool bNeedsMaterialRefsUpdate; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstFloatMaterialParam' + TrackTitle="Float Material Param" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackFloatParticleParam.uc b/exported/Engine/Classes/InterpTrackFloatParticleParam.uc new file mode 100755 index 00000000..a54c30f4 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackFloatParticleParam.uc @@ -0,0 +1,12 @@ +class InterpTrackFloatParticleParam extends InterpTrackFloatBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +var() name ParamName; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstFloatParticleParam' + TrackTitle="Float Particle Param" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackFloatProp.uc b/exported/Engine/Classes/InterpTrackFloatProp.uc new file mode 100755 index 00000000..2afffc14 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackFloatProp.uc @@ -0,0 +1,12 @@ +class InterpTrackFloatProp extends InterpTrackFloatBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +var() editconst name PropertyName; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstFloatProp' + TrackTitle="Float Property" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackHeadTracking.uc b/exported/Engine/Classes/InterpTrackHeadTracking.uc new file mode 100755 index 00000000..0f432242 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackHeadTracking.uc @@ -0,0 +1,50 @@ +class InterpTrackHeadTracking extends InterpTrack + native(Interpolation) + collapsecategories + hidecategories(Object); + +enum EHeadTrackingAction +{ + EHTA_DisableHeadTracking, // 0 + EHTA_EnableHeadTracking, // 1 + EHTA_MAX // 2 +}; + +struct native HeadTrackingKey +{ + var float Time; + var() InterpTrackHeadTracking.EHeadTrackingAction Action; + + structdefaultproperties + { + Time=0.0000000 + Action=EHeadTrackingAction.EHTA_DisableHeadTracking + } +}; + +var array HeadTrackingTrack; +var() array TrackControllerName; +var() float LookAtActorRadius; +var() bool bDisableBeyondLimit; +var(Target) bool bLookAtPawns; +var() float MaxLookAtTime; +var() float MinLookAtTime; +var() float MaxInterestTime; +var(Target) array< Class > ActorClassesToLookAt; +var(Target) array TargetBoneNames; + +defaultproperties +{ + TrackControllerName[0]="HeadLook" + TrackControllerName[1]="LeftEyeLook" + TrackControllerName[2]="RightEyeLook" + LookAtActorRadius=500.0000000 + bLookAtPawns=true + MaxLookAtTime=5.0000000 + MinLookAtTime=3.0000000 + MaxInterestTime=7.0000000 + TargetBoneNames[0]="b_MF_Head" + TargetBoneNames[1]="b_MF_Neck" + TrackInstClass=Class'Engine.InterpTrackInstHeadTracking' + TrackTitle="HeadTracking" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackInst.uc b/exported/Engine/Classes/InterpTrackInst.uc new file mode 100755 index 00000000..a77b19ad --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInst.uc @@ -0,0 +1,2 @@ +class InterpTrackInst extends Object + native(Interpolation); diff --git a/exported/Engine/Classes/InterpTrackInstAnimControl.uc b/exported/Engine/Classes/InterpTrackInstAnimControl.uc new file mode 100755 index 00000000..bd3728ed --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstAnimControl.uc @@ -0,0 +1,4 @@ +class InterpTrackInstAnimControl extends InterpTrackInst + native(Interpolation); + +var transient float LastUpdatePosition; diff --git a/exported/Engine/Classes/InterpTrackInstAudioMaster.uc b/exported/Engine/Classes/InterpTrackInstAudioMaster.uc new file mode 100755 index 00000000..5154210e --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstAudioMaster.uc @@ -0,0 +1,2 @@ +class InterpTrackInstAudioMaster extends InterpTrackInst + native(Interpolation); diff --git a/exported/Engine/Classes/InterpTrackInstBoolProp.uc b/exported/Engine/Classes/InterpTrackInstBoolProp.uc new file mode 100755 index 00000000..f335c799 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstBoolProp.uc @@ -0,0 +1,6 @@ +class InterpTrackInstBoolProp extends InterpTrackInstProperty + native(Interpolation); + +var Pointer BoolProp; +var int BitMask; +var bool ResetBool; diff --git a/exported/Engine/Classes/InterpTrackInstColorProp.uc b/exported/Engine/Classes/InterpTrackInstColorProp.uc new file mode 100755 index 00000000..3b4d3567 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstColorProp.uc @@ -0,0 +1,5 @@ +class InterpTrackInstColorProp extends InterpTrackInstProperty + native(Interpolation); + +var Pointer ColorProp; +var Color ResetColor; diff --git a/exported/Engine/Classes/InterpTrackInstColorScale.uc b/exported/Engine/Classes/InterpTrackInstColorScale.uc new file mode 100755 index 00000000..d0f22603 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstColorScale.uc @@ -0,0 +1,2 @@ +class InterpTrackInstColorScale extends InterpTrackInst + native(Interpolation); diff --git a/exported/Engine/Classes/InterpTrackInstDirector.uc b/exported/Engine/Classes/InterpTrackInstDirector.uc new file mode 100755 index 00000000..ac1b84e8 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstDirector.uc @@ -0,0 +1,10 @@ +class InterpTrackInstDirector extends InterpTrackInst + native(Interpolation); + +var Actor OldViewTarget; +var RenderingPerformanceOverrides OldRenderingOverrides; + +defaultproperties +{ + OldRenderingOverrides=(bAllowAmbientOcclusion=true,bAllowDominantWholeSceneDynamicShadows=true,bAllowMotionBlurSkinning=true,bAllowTemporalAA=true,bAllowLightShafts=true) +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackInstEvent.uc b/exported/Engine/Classes/InterpTrackInstEvent.uc new file mode 100755 index 00000000..49c51e6a --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstEvent.uc @@ -0,0 +1,4 @@ +class InterpTrackInstEvent extends InterpTrackInst + native(Interpolation); + +var float LastUpdatePosition; diff --git a/exported/Engine/Classes/InterpTrackInstFaceFX.uc b/exported/Engine/Classes/InterpTrackInstFaceFX.uc new file mode 100755 index 00000000..92322d9b --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstFaceFX.uc @@ -0,0 +1,5 @@ +class InterpTrackInstFaceFX extends InterpTrackInst + native(Interpolation); + +var transient bool bFirstUpdate; +var float LastUpdatePosition; diff --git a/exported/Engine/Classes/InterpTrackInstFade.uc b/exported/Engine/Classes/InterpTrackInstFade.uc new file mode 100755 index 00000000..712f96d5 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstFade.uc @@ -0,0 +1,2 @@ +class InterpTrackInstFade extends InterpTrackInst + native(Interpolation); diff --git a/exported/Engine/Classes/InterpTrackInstFloatMaterialParam.uc b/exported/Engine/Classes/InterpTrackInstFloatMaterialParam.uc new file mode 100755 index 00000000..b13dc76d --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstFloatMaterialParam.uc @@ -0,0 +1,17 @@ +class InterpTrackInstFloatMaterialParam extends InterpTrackInst + native(Interpolation); + +struct native FloatMaterialParamMICData +{ + var const array MICs; + var const array MICResetFloats; + + structdefaultproperties + { + MICs=none + MICResetFloats=none + } +}; + +var array MICInfos; +var InterpTrackFloatMaterialParam InstancedTrack; diff --git a/exported/Engine/Classes/InterpTrackInstFloatParticleParam.uc b/exported/Engine/Classes/InterpTrackInstFloatParticleParam.uc new file mode 100755 index 00000000..06ad1872 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstFloatParticleParam.uc @@ -0,0 +1,4 @@ +class InterpTrackInstFloatParticleParam extends InterpTrackInst + native(Interpolation); + +var float ResetFloat; diff --git a/exported/Engine/Classes/InterpTrackInstFloatProp.uc b/exported/Engine/Classes/InterpTrackInstFloatProp.uc new file mode 100755 index 00000000..7e28720b --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstFloatProp.uc @@ -0,0 +1,6 @@ +class InterpTrackInstFloatProp extends InterpTrackInstProperty + native(Interpolation); + +var Pointer FloatProp; +var float ResetFloat; +var Pointer DistributionProp; diff --git a/exported/Engine/Classes/InterpTrackInstHeadTracking.uc b/exported/Engine/Classes/InterpTrackInstHeadTracking.uc new file mode 100755 index 00000000..51b0dc24 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstHeadTracking.uc @@ -0,0 +1,8 @@ +class InterpTrackInstHeadTracking extends InterpTrackInst + native(Interpolation); + +var() InterpTrackHeadTracking.EHeadTrackingAction Action; +var native const transient map{VOID,VOID} CurrentActorMap; +var export editinline transient SkeletalMeshComponent Mesh; +var transient array TrackControls; +var float LastUpdatePosition; diff --git a/exported/Engine/Classes/InterpTrackInstLinearColorProp.uc b/exported/Engine/Classes/InterpTrackInstLinearColorProp.uc new file mode 100755 index 00000000..9e581d20 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstLinearColorProp.uc @@ -0,0 +1,10 @@ +class InterpTrackInstLinearColorProp extends InterpTrackInstProperty + native(Interpolation); + +var Pointer ColorProp; +var LinearColor ResetColor; + +defaultproperties +{ + ResetColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackInstMorphWeight.uc b/exported/Engine/Classes/InterpTrackInstMorphWeight.uc new file mode 100755 index 00000000..216aca50 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstMorphWeight.uc @@ -0,0 +1,2 @@ +class InterpTrackInstMorphWeight extends InterpTrackInst + native(Interpolation); diff --git a/exported/Engine/Classes/InterpTrackInstMove.uc b/exported/Engine/Classes/InterpTrackInstMove.uc new file mode 100755 index 00000000..a9980b50 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstMove.uc @@ -0,0 +1,7 @@ +class InterpTrackInstMove extends InterpTrackInst + native(Interpolation); + +var Vector ResetLocation; +var Rotator ResetRotation; +var Matrix InitialTM; +var Quat InitialQuat; diff --git a/exported/Engine/Classes/InterpTrackInstNotify.uc b/exported/Engine/Classes/InterpTrackInstNotify.uc new file mode 100755 index 00000000..358e1a47 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstNotify.uc @@ -0,0 +1,4 @@ +class InterpTrackInstNotify extends InterpTrackInst + native(Interpolation); + +var float LastUpdatePosition; diff --git a/exported/Engine/Classes/InterpTrackInstParticleReplay.uc b/exported/Engine/Classes/InterpTrackInstParticleReplay.uc new file mode 100755 index 00000000..848f3ef5 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstParticleReplay.uc @@ -0,0 +1,4 @@ +class InterpTrackInstParticleReplay extends InterpTrackInst + native(Interpolation); + +var float LastUpdatePosition; diff --git a/exported/Engine/Classes/InterpTrackInstProperty.uc b/exported/Engine/Classes/InterpTrackInstProperty.uc new file mode 100755 index 00000000..b032c229 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstProperty.uc @@ -0,0 +1,5 @@ +class InterpTrackInstProperty extends InterpTrackInst + native(Interpolation); + +var Function PropertyUpdateCallback; +var Object PropertyOuterObjectInst; diff --git a/exported/Engine/Classes/InterpTrackInstSkelControlScale.uc b/exported/Engine/Classes/InterpTrackInstSkelControlScale.uc new file mode 100755 index 00000000..61b9a0c6 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstSkelControlScale.uc @@ -0,0 +1,2 @@ +class InterpTrackInstSkelControlScale extends InterpTrackInst + native(Interpolation); diff --git a/exported/Engine/Classes/InterpTrackInstSkelControlStrength.uc b/exported/Engine/Classes/InterpTrackInstSkelControlStrength.uc new file mode 100755 index 00000000..86ca16a8 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstSkelControlStrength.uc @@ -0,0 +1,4 @@ +class InterpTrackInstSkelControlStrength extends InterpTrackInst + native(Interpolation); + +var transient bool bSavedControlledByAnimMetaData; diff --git a/exported/Engine/Classes/InterpTrackInstSlomo.uc b/exported/Engine/Classes/InterpTrackInstSlomo.uc new file mode 100755 index 00000000..905c936c --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstSlomo.uc @@ -0,0 +1,4 @@ +class InterpTrackInstSlomo extends InterpTrackInst + native(Interpolation); + +var float OldTimeDilation; diff --git a/exported/Engine/Classes/InterpTrackInstSound.uc b/exported/Engine/Classes/InterpTrackInstSound.uc new file mode 100755 index 00000000..0f1b3659 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstSound.uc @@ -0,0 +1,5 @@ +class InterpTrackInstSound extends InterpTrackInst + native(Interpolation); + +var float LastUpdatePosition; +var export editinline transient AudioComponent PlayAudioComp; diff --git a/exported/Engine/Classes/InterpTrackInstToggle.uc b/exported/Engine/Classes/InterpTrackInstToggle.uc new file mode 100755 index 00000000..c8d9aab7 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstToggle.uc @@ -0,0 +1,6 @@ +class InterpTrackInstToggle extends InterpTrackInst + native(Interpolation); + +var() InterpTrackToggle.ETrackToggleAction Action; +var float LastUpdatePosition; +var bool bSavedActiveState; diff --git a/exported/Engine/Classes/InterpTrackInstVectorMaterialParam.uc b/exported/Engine/Classes/InterpTrackInstVectorMaterialParam.uc new file mode 100755 index 00000000..4f21ad89 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstVectorMaterialParam.uc @@ -0,0 +1,17 @@ +class InterpTrackInstVectorMaterialParam extends InterpTrackInst + native(Interpolation); + +struct native VectorMaterialParamMICData +{ + var const array MICs; + var const array MICResetVectors; + + structdefaultproperties + { + MICs=none + MICResetVectors=none + } +}; + +var array MICInfos; +var InterpTrackVectorMaterialParam InstancedTrack; diff --git a/exported/Engine/Classes/InterpTrackInstVectorProp.uc b/exported/Engine/Classes/InterpTrackInstVectorProp.uc new file mode 100755 index 00000000..4a0219f3 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstVectorProp.uc @@ -0,0 +1,5 @@ +class InterpTrackInstVectorProp extends InterpTrackInstProperty + native(Interpolation); + +var Pointer VectorProp; +var Vector ResetVector; diff --git a/exported/Engine/Classes/InterpTrackInstVisibility.uc b/exported/Engine/Classes/InterpTrackInstVisibility.uc new file mode 100755 index 00000000..6bdce555 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackInstVisibility.uc @@ -0,0 +1,5 @@ +class InterpTrackInstVisibility extends InterpTrackInst + native(Interpolation); + +var() InterpTrackVisibility.EVisibilityTrackAction Action; +var float LastUpdatePosition; diff --git a/exported/Engine/Classes/InterpTrackLinearColorBase.uc b/exported/Engine/Classes/InterpTrackLinearColorBase.uc new file mode 100755 index 00000000..3e92f9b6 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackLinearColorBase.uc @@ -0,0 +1,13 @@ +class InterpTrackLinearColorBase extends InterpTrack + abstract + native(Interpolation) + collapsecategories + hidecategories(Object); + +var InterpCurveLinearColor LinearColorTrack; +var() float CurveTension; + +defaultproperties +{ + TrackTitle="Generic LinearColor Track" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackLinearColorProp.uc b/exported/Engine/Classes/InterpTrackLinearColorProp.uc new file mode 100755 index 00000000..fdc8a30d --- /dev/null +++ b/exported/Engine/Classes/InterpTrackLinearColorProp.uc @@ -0,0 +1,12 @@ +class InterpTrackLinearColorProp extends InterpTrackLinearColorBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +var() editconst name PropertyName; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstLinearColorProp' + TrackTitle="LinearColor Property" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackMorphWeight.uc b/exported/Engine/Classes/InterpTrackMorphWeight.uc new file mode 100755 index 00000000..2eb432c2 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackMorphWeight.uc @@ -0,0 +1,13 @@ +class InterpTrackMorphWeight extends InterpTrackFloatBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +var() name MorphNodeName; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstMorphWeight' + TrackTitle="Morph Weight" + bIsAnimControlTrack=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackMove.uc b/exported/Engine/Classes/InterpTrackMove.uc new file mode 100755 index 00000000..d1e721ed --- /dev/null +++ b/exported/Engine/Classes/InterpTrackMove.uc @@ -0,0 +1,65 @@ +class InterpTrackMove extends InterpTrack + native(Interpolation) + collapsecategories + hidecategories(Object); + +enum EInterpTrackMoveFrame +{ + IMF_World, // 0 + IMF_RelativeToInitial, // 1 + IMF_MAX // 2 +}; + +enum EInterpTrackMoveRotMode +{ + IMR_Keyframed, // 0 + IMR_LookAtGroup, // 1 + IMR_Ignore, // 2 + IMR_MAX // 3 +}; + +struct native InterpLookupPoint +{ + var name GroupName; + var float Time; + + structdefaultproperties + { + GroupName="None" + Time=0.0000000 + } +}; + +struct native InterpLookupTrack +{ + var array Points; + + structdefaultproperties + { + Points=none + } +}; + +var InterpCurveVector PosTrack; +var InterpCurveVector EulerTrack; +var InterpLookupTrack LookupTrack; +var() name LookAtGroupName; +var() float LinCurveTension; +var() float AngCurveTension; +var() bool bUseQuatInterpolation; +var() bool bShowArrowAtKeys; +var() bool bDisableMovement; +var() bool bShowTranslationOnCurveEd; +var() bool bShowRotationOnCurveEd; +var() bool bHide3DTrack; +var() bool bUseRawActorTMforRelativeToInitial; +var() editconst InterpTrackMove.EInterpTrackMoveFrame MoveFrame; +var() InterpTrackMove.EInterpTrackMoveRotMode RotMode; + +defaultproperties +{ + bShowTranslationOnCurveEd=true + TrackInstClass=Class'Engine.InterpTrackInstMove' + TrackTitle="Movement" + bOnePerGroup=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackMoveAxis.uc b/exported/Engine/Classes/InterpTrackMoveAxis.uc new file mode 100755 index 00000000..9a8b0e64 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackMoveAxis.uc @@ -0,0 +1,24 @@ +class InterpTrackMoveAxis extends InterpTrackFloatBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +enum EInterpMoveAxis +{ + AXIS_TranslationX, // 0 + AXIS_TranslationY, // 1 + AXIS_TranslationZ, // 2 + AXIS_RotationX, // 3 + AXIS_RotationY, // 4 + AXIS_RotationZ, // 5 + AXIS_MAX // 6 +}; + +var InterpTrackMoveAxis.EInterpMoveAxis MoveAxis; +var InterpLookupTrack LookupTrack; + +defaultproperties +{ + TrackTitle="Move Axis Track" + bSubTrackOnly=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackNotify.uc b/exported/Engine/Classes/InterpTrackNotify.uc new file mode 100755 index 00000000..ebb12a19 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackNotify.uc @@ -0,0 +1,28 @@ +class InterpTrackNotify extends InterpTrack + native(Interpolation) + collapsecategories + hidecategories(Object); + +struct native NotifyTrackKey +{ + var float Time; + var AnimNotify Notify; + + structdefaultproperties + { + Time=0.0000000 + Notify=none + } +}; + +var AnimNodeSequence Node; +var name ParentNodeName; +var AnimSequence OuterSequence; +var AnimSet OuterSet; +var array NotifyTrack; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstNotify' + TrackTitle="Notify" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackParticleReplay.uc b/exported/Engine/Classes/InterpTrackParticleReplay.uc new file mode 100755 index 00000000..f810440f --- /dev/null +++ b/exported/Engine/Classes/InterpTrackParticleReplay.uc @@ -0,0 +1,27 @@ +class InterpTrackParticleReplay extends InterpTrack + native(Interpolation) + collapsecategories + hidecategories(Object); + +struct native ParticleReplayTrackKey +{ + var float Time; + var() float Duration; + var() int ClipIDNumber; + + structdefaultproperties + { + Time=0.0000000 + Duration=0.0000000 + ClipIDNumber=0 + } +}; + +var editinline array TrackKeys; +var editoronly const transient bool bIsCapturingReplay; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstParticleReplay' + TrackTitle="Particle Replay" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackSkelControlScale.uc b/exported/Engine/Classes/InterpTrackSkelControlScale.uc new file mode 100755 index 00000000..ffdb21f2 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackSkelControlScale.uc @@ -0,0 +1,13 @@ +class InterpTrackSkelControlScale extends InterpTrackFloatBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +var() name SkelControlName; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstSkelControlScale' + TrackTitle="SkelControl Scale" + bIsAnimControlTrack=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackSkelControlStrength.uc b/exported/Engine/Classes/InterpTrackSkelControlStrength.uc new file mode 100755 index 00000000..7353dd21 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackSkelControlStrength.uc @@ -0,0 +1,13 @@ +class InterpTrackSkelControlStrength extends InterpTrackFloatBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +var() name SkelControlName; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstSkelControlStrength' + TrackTitle="SkelControl Strength" + bIsAnimControlTrack=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackSlomo.uc b/exported/Engine/Classes/InterpTrackSlomo.uc new file mode 100755 index 00000000..d7650d66 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackSlomo.uc @@ -0,0 +1,12 @@ +class InterpTrackSlomo extends InterpTrackFloatBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstSlomo' + TrackTitle="Slomo" + bOnePerGroup=true + bDirGroupOnly=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackSound.uc b/exported/Engine/Classes/InterpTrackSound.uc new file mode 100755 index 00000000..5bb90cc4 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackSound.uc @@ -0,0 +1,32 @@ +class InterpTrackSound extends InterpTrackVectorBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +struct native SoundTrackKey +{ + var float Time; + var float Volume; + var float Pitch; + var() SoundCue Sound; + + structdefaultproperties + { + Time=0.0000000 + Volume=1.0000000 + Pitch=1.0000000 + Sound=none + } +}; + +var array Sounds; +var() bool bPlayOnReverse; +var() bool bContinueSoundOnMatineeEnd; +var() bool bSuppressSubtitles; +var() bool bTreatAsDialogue; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstSound' + TrackTitle="Sound" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackToggle.uc b/exported/Engine/Classes/InterpTrackToggle.uc new file mode 100755 index 00000000..5a8a5277 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackToggle.uc @@ -0,0 +1,42 @@ +class InterpTrackToggle extends InterpTrack + native(Interpolation) + collapsecategories + hidecategories(Object); + +enum ETrackToggleAction +{ + ETTA_Off, // 0 + ETTA_On, // 1 + ETTA_Toggle, // 2 + ETTA_Trigger, // 3 + ETTA_MAX // 4 +}; + +struct native ToggleTrackKey +{ + var float Time; + var() InterpTrackToggle.ETrackToggleAction ToggleAction; + + structdefaultproperties + { + Time=0.0000000 + ToggleAction=ETrackToggleAction.ETTA_Off + } +}; + +var array ToggleTrack; +var() bool bActivateSystemEachUpdate; +var() bool bActivateWithJustAttachedFlag; +var() bool bFireEventsWhenForwards; +var() bool bFireEventsWhenBackwards; +var() bool bFireEventsWhenJumpingForwards; + +defaultproperties +{ + bActivateWithJustAttachedFlag=true + bFireEventsWhenForwards=true + bFireEventsWhenBackwards=true + bFireEventsWhenJumpingForwards=true + TrackInstClass=Class'Engine.InterpTrackInstToggle' + TrackTitle="Toggle" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackVectorBase.uc b/exported/Engine/Classes/InterpTrackVectorBase.uc new file mode 100755 index 00000000..d7e2b93a --- /dev/null +++ b/exported/Engine/Classes/InterpTrackVectorBase.uc @@ -0,0 +1,13 @@ +class InterpTrackVectorBase extends InterpTrack + abstract + native(Interpolation) + collapsecategories + hidecategories(Object); + +var InterpCurveVector VectorTrack; +var() float CurveTension; + +defaultproperties +{ + TrackTitle="Generic Vector Track" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackVectorMaterialParam.uc b/exported/Engine/Classes/InterpTrackVectorMaterialParam.uc new file mode 100755 index 00000000..de51cd89 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackVectorMaterialParam.uc @@ -0,0 +1,15 @@ +class InterpTrackVectorMaterialParam extends InterpTrackVectorBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +var() const array Materials; +var const deprecated MaterialInterface Material; +var() name ParamName; +var transient bool bNeedsMaterialRefsUpdate; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstVectorMaterialParam' + TrackTitle="Vector Material Param" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackVectorProp.uc b/exported/Engine/Classes/InterpTrackVectorProp.uc new file mode 100755 index 00000000..2e92edc7 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackVectorProp.uc @@ -0,0 +1,12 @@ +class InterpTrackVectorProp extends InterpTrackVectorBase + native(Interpolation) + collapsecategories + hidecategories(Object); + +var() editconst name PropertyName; + +defaultproperties +{ + TrackInstClass=Class'Engine.InterpTrackInstVectorProp' + TrackTitle="Vector Property" +} \ No newline at end of file diff --git a/exported/Engine/Classes/InterpTrackVisibility.uc b/exported/Engine/Classes/InterpTrackVisibility.uc new file mode 100755 index 00000000..9e28ff49 --- /dev/null +++ b/exported/Engine/Classes/InterpTrackVisibility.uc @@ -0,0 +1,48 @@ +class InterpTrackVisibility extends InterpTrack + native(Interpolation) + collapsecategories + hidecategories(Object); + +enum EVisibilityTrackAction +{ + EVTA_Hide, // 0 + EVTA_Show, // 1 + EVTA_Toggle, // 2 + EVTA_MAX // 3 +}; + +enum EVisibilityTrackCondition +{ + EVTC_Always, // 0 + EVTC_GoreEnabled, // 1 + EVTC_GoreDisabled, // 2 + EVTC_MAX // 3 +}; + +struct native VisibilityTrackKey +{ + var float Time; + var() InterpTrackVisibility.EVisibilityTrackAction Action; + var InterpTrackVisibility.EVisibilityTrackCondition ActiveCondition; + + structdefaultproperties + { + Time=0.0000000 + Action=EVisibilityTrackAction.EVTA_Hide + ActiveCondition=EVisibilityTrackCondition.EVTC_Always + } +}; + +var array VisibilityTrack; +var() bool bFireEventsWhenForwards; +var() bool bFireEventsWhenBackwards; +var() bool bFireEventsWhenJumpingForwards; + +defaultproperties +{ + bFireEventsWhenForwards=true + bFireEventsWhenBackwards=true + bFireEventsWhenJumpingForwards=true + TrackInstClass=Class'Engine.InterpTrackInstVisibility' + TrackTitle="Visibility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/Inventory.uc b/exported/Engine/Classes/Inventory.uc new file mode 100755 index 00000000..6b61ddd2 --- /dev/null +++ b/exported/Engine/Classes/Inventory.uc @@ -0,0 +1,181 @@ +class Inventory extends Actor + abstract + native + nativereplication + notplaceable + hidecategories(Navigation); + +var Inventory Inventory; +var InventoryManager InvManager; +var const localized string ItemName; +var bool bDropOnDeath; +var bool bDelayedSpawn; +var bool bPredictRespawns; +var() float RespawnTime; +var float MaxDesireability; +var() const localized string PickupMessage; +var() SoundCue PickupSound; +var() string PickupForce; +var Class DroppedPickupClass; +var export editinline PrimitiveComponent DroppedPickupMesh; +var export editinline PrimitiveComponent PickupFactoryMesh; +var export editinline ParticleSystemComponent DroppedPickupParticles; + +replication +{ + // Pos:0x000 + if(((int(Role) == int(ROLE_Authority)) && bNetDirty) && bNetOwner) + InvManager, Inventory; +} + +simulated function string GetHumanReadableName() +{ + return default.ItemName; + //return ReturnValue; +} + +event Destroyed() +{ + // End:0x85 + if((Pawn(Owner) != none) && Pawn(Owner).InvManager != none) + { + Pawn(Owner).InvManager.RemoveFromInventory(self); + } + //return; +} + +static function float BotDesireability(Actor PickupHolder, Pawn P, Controller C) +{ + local Inventory AlreadyHas; + local float desire; + + desire = default.MaxDesireability; + // End:0x6D + if(default.RespawnTime < float(10)) + { + AlreadyHas = P.FindInventoryType(default.Class); + // End:0x6D + if(AlreadyHas != none) + { + return -1.0000000; + } + } + return desire; + //return ReturnValue; +} + +static function float DetourWeight(Pawn Other, float PathWeight) +{ + return 0.0000000; + //return ReturnValue; +} + +final function GiveTo(Pawn Other) +{ + // End:0x6B + if((Other != none) && Other.InvManager != none) + { + Other.InvManager.AddInventory(self); + } + //return; +} + +function AnnouncePickup(Pawn Other) +{ + Other.HandlePickup(self); + // End:0x5C + if(PickupSound != none) + { + Other.PlaySound(PickupSound); + } + //return; +} + +function GivenTo(Pawn thisPawn, optional bool bDoNotActivate) +{ + Instigator = thisPawn; + ClientGivenTo(thisPawn, bDoNotActivate); + //return; +} + +reliable client simulated function ClientGivenTo(Pawn NewOwner, bool bDoNotActivate) +{ + SetOwner(NewOwner); + Instigator = NewOwner; + // End:0x89 + if((NewOwner != none) && NewOwner.Controller != none) + { + NewOwner.Controller.NotifyAddInventory(self); + } + //return; +} + +function ItemRemovedFromInvManager() +{ + //return; +} + +function bool DenyPickupQuery(Class ItemClass, Actor Pickup) +{ + // End:0x19 + if(ItemClass == Class) + { + return true; + } + return false; + //return ReturnValue; +} + +function DropFrom(Vector StartLocation, Vector StartVelocity) +{ + local DroppedPickup P; + + // End:0x6A + if((Instigator != none) && Instigator.InvManager != none) + { + Instigator.InvManager.RemoveFromInventory(self); + } + // End:0x8F + if((DroppedPickupClass == none) || DroppedPickupMesh == none) + { + Destroy(); + return; + } + P = Spawn(DroppedPickupClass,,, StartLocation); + // End:0xCE + if(P == none) + { + Destroy(); + return; + } + P.SetPhysics(2); + P.Inventory = self; + P.InventoryClass = Class; + P.Velocity = StartVelocity; + P.Instigator = Instigator; + P.SetPickupMesh(DroppedPickupMesh); + P.SetPickupParticles(DroppedPickupParticles); + Instigator = none; + GotoState('None'); + //return; +} + +static function string GetLocalString(optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2) +{ + return default.PickupMessage; + //return ReturnValue; +} + +defaultproperties +{ + MaxDesireability=0.1000000 + PickupMessage="Snagged an item." + DroppedPickupClass=Class'Engine.DroppedPickup' + Components[0]=none + RemoteRole=ENetRole.ROLE_SimulatedProxy + bHidden=true + bOnlyRelevantToOwner=true + bReplicateMovement=false + bOnlyDirtyReplication=true + NetPriority=1.4000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/InventoryManager.uc b/exported/Engine/Classes/InventoryManager.uc new file mode 100755 index 00000000..91936ee9 --- /dev/null +++ b/exported/Engine/Classes/InventoryManager.uc @@ -0,0 +1,529 @@ +class InventoryManager extends Actor + native + notplaceable + hidecategories(Navigation); + +var Inventory InventoryChain; +var Weapon PendingWeapon; +var Weapon LastAttemptedSwitchToWeapon; +var bool bMustHoldWeapon; +var private array PendingFire; + +replication +{ + // Pos:0x000 + if((((!bSkipActorPropertyReplication || bNetInitial) && int(Role) == int(ROLE_Authority)) && bNetDirty) && bNetOwner) + InventoryChain; +} + +event PostBeginPlay() +{ + super.PostBeginPlay(); + Instigator = Pawn(Owner); + //return; +} + +simulated function int GetPendingFireLength(Weapon InWeapon) +{ + return PendingFire.Length; + //return ReturnValue; +} + +simulated function SetPendingFire(Weapon InWeapon, int InFiringMode) +{ + // End:0x2D + if(InFiringMode < PendingFire.Length) + { + PendingFire[InFiringMode] = 1; + } + //return; +} + +simulated function ClearPendingFire(Weapon InWeapon, int InFiringMode) +{ + // End:0x2D + if(InFiringMode < PendingFire.Length) + { + PendingFire[InFiringMode] = 0; + } + //return; +} + +final simulated function bool IsPendingFire(Weapon InWeapon, int InFiringMode) +{ + return bool(PendingFire[InFiringMode]); + //return ReturnValue; +} + +simulated function ClearAllPendingFire(Weapon InWeapon) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x46 [Loop If] + if(I < PendingFire.Length) + { + PendingFire[I] = 0; + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +// Export UInventoryManager::execInventoryActors(FFrame&, void* const) +native final iterator function InventoryActors(Class BaseClass, out Inventory Inv); + +function SetupFor(Pawn P) +{ + Instigator = P; + SetOwner(P); + //return; +} + +event Destroyed() +{ + //return; +} + +function bool HandlePickupQuery(Class ItemClass, Actor Pickup) +{ + local Inventory Inv; + + // End:0x11 + if(InventoryChain == none) + { + return true; + } + // End:0x68 + foreach InventoryActors(Class'Engine.Inventory', Inv) + { + // End:0x67 + if(Inv.DenyPickupQuery(ItemClass, Pickup)) + { + return false; + } + } + return true; + //return ReturnValue; +} + +simulated event Inventory FindInventoryType(Class DesiredClass, optional bool bAllowSubclass) +{ + local Inventory Inv; + + // End:0x67 + foreach InventoryActors(DesiredClass, Inv) + { + // End:0x66 + if(bAllowSubclass || Inv.Class == DesiredClass) + { + return Inv; + } + } + return none; + //return ReturnValue; +} + +simulated function Inventory CreateInventory(Class NewInventoryItemClass, optional bool bDoNotActivate) +{ + local Inventory Inv; + + // End:0x92 + if(NewInventoryItemClass != none) + { + Inv = Spawn(NewInventoryItemClass, Owner); + // End:0x92 + if(Inv != none) + { + // End:0x8F + if(!AddInventory(Inv, bDoNotActivate)) + { + Inv.Destroy(); + Inv = none; + } + } + } + return Inv; + //return ReturnValue; +} + +simulated function bool AddInventory(Inventory NewItem, optional bool bDoNotActivate) +{ + local Inventory Item, LastItem; + + // End:0x1CD + if((NewItem != none) && !NewItem.bDeleteMe) + { + // End:0x5B + if(InventoryChain == none) + { + InventoryChain = NewItem; + } + else + { + Item = InventoryChain; + J0x6E: + + // End:0xD4 [Loop If] + if(Item != none) + { + // End:0x96 + if(Item == NewItem) + { + return false; + } + LastItem = Item; + Item = Item.Inventory; + // [Loop Continue] + goto J0x6E; + } + LastItem.Inventory = NewItem; + } + NewItem.SetOwner(Instigator); + NewItem.Instigator = Instigator; + NewItem.InvManager = self; + NewItem.GivenTo(Instigator, bDoNotActivate); + Instigator.TriggerEventClass(Class'Engine.SeqEvent_GetInventory', NewItem); + return true; + } + return false; + //return ReturnValue; +} + +simulated event RemoveFromInventory(Inventory ItemToRemove) +{ + local Inventory Item; + local bool bFound; + + // End:0x282 + if(ItemToRemove != none) + { + // End:0x5D + if(InventoryChain == ItemToRemove) + { + bFound = true; + InventoryChain = ItemToRemove.Inventory; + } + else + { + Item = InventoryChain; + J0x70: + + // End:0x122 [Loop If] + if(Item != none) + { + // End:0xF7 + if(Item.Inventory == ItemToRemove) + { + bFound = true; + Item.Inventory = ItemToRemove.Inventory; + // [Explicit Break] + goto J0x122; + } + Item = Item.Inventory; + // [Loop Continue] + goto J0x70; + } + } + J0x122: + + // End:0x168 + if(bFound) + { + ItemToRemove.SetOwner(none); + ItemToRemove.Inventory = none; + } + // End:0x1B4 + if(ItemToRemove == Instigator.Weapon) + { + Instigator.Weapon = none; + } + // End:0x282 + if((Instigator.Health > 0) && Instigator.Weapon == none) + { + // End:0x229 + if((PendingWeapon != none) && PendingWeapon != ItemToRemove) + { + } + else + { + // End:0x282 + if(Instigator.Controller != none) + { + Instigator.Controller.ClientSwitchToBestWeapon(true); + } + } + } + } + //return; +} + +simulated event DiscardInventory() +{ + local Inventory Inv; + local Vector TossVelocity; + local bool bBelowKillZ; + + bBelowKillZ = (Instigator == none) || Instigator.Location.Z < WorldInfo.KillZ; + // End:0x1AB + foreach InventoryActors(Class'Engine.Inventory', Inv) + { + // End:0x192 + if(Inv.bDropOnDeath && !bBelowKillZ) + { + TossVelocity = Vector(Instigator.GetViewRotation()); + TossVelocity = ((TossVelocity * ((Instigator.Velocity Dot TossVelocity) + 500.0000000)) + (250.0000000 * VRand())) + vect(0.0000000, 0.0000000, 250.0000000); + Inv.DropFrom(Instigator.Location, TossVelocity); + // End:0x1AA + continue; + } + Inv.Destroy(); + } + Instigator.Weapon = none; + //return; +} + +function OwnerDied() +{ + Destroy(); + // End:0x47 + if(Instigator.InvManager == self) + { + Instigator.InvManager = none; + } + //return; +} + +simulated function DrawHUD(HUD H) +{ + //return; +} + +simulated function float GetWeaponRatingFor(Weapon W) +{ + local float Rating; + + // End:0x2A + if(!W.HasAnyAmmo()) + { + return -1.0000000; + } + // End:0x118 + if(!Instigator.IsHumanControlled()) + { + Rating = W.GetAIRating(); + // End:0x115 + if(((W == Instigator.Weapon) && Instigator.Controller != none) && Instigator.Controller.Enemy != none) + { + Rating += 0.2100000; + } + } + else + { + Rating = 1.0000000; + } + return Rating; + //return ReturnValue; +} + +simulated function Weapon GetBestWeapon(optional bool bForceADifferentWeapon) +{ + local Weapon W, BestWeapon; + local float Rating, BestRating; + + // End:0xF9 + foreach InventoryActors(Class'Engine.Weapon', W) + { + // End:0xF8 + if(W.HasAnyAmmo()) + { + // End:0x81 + if(bForceADifferentWeapon && W == Instigator.Weapon) + { + continue; + } + Rating = W.GetWeaponRating(); + // End:0xF8 + if((BestWeapon == none) || Rating > BestRating) + { + BestWeapon = W; + BestRating = Rating; + } + } + } + return BestWeapon; + //return ReturnValue; +} + +simulated function SwitchToBestWeapon(optional bool bForceADifferentWeapon) +{ + //return; +} + +simulated function PrevWeapon() +{ + //return; +} + +simulated function NextWeapon() +{ + //return; +} + +private final simulated function InternalSetCurrentWeapon(Weapon DesiredWeapon) +{ + local Weapon PrevWeapon; + + PrevWeapon = Instigator.Weapon; + // End:0xCB + if(((PrevWeapon != none) && DesiredWeapon == PrevWeapon) && !PrevWeapon.IsInState('WeaponPuttingDown')) + { + // End:0xCB + if(!DesiredWeapon.IsInState('Inactive') && !DesiredWeapon.IsInState('PendingClientWeaponSet')) + { + return; + } + } + SetPendingWeapon(DesiredWeapon); + // End:0x177 + if((((PrevWeapon != none) && PrevWeapon != DesiredWeapon) && !PrevWeapon.bDeleteMe) && !PrevWeapon.IsInState('Inactive')) + { + PrevWeapon.TryPutDown(); + } + else + { + ChangedWeapon(); + } + //return; +} + +simulated function SetPendingWeapon(Weapon DesiredWeapon) +{ + PendingWeapon = DesiredWeapon; + //return; +} + +simulated function bool CancelWeaponChange() +{ + // End:0x46 + if((PendingWeapon == none) && bMustHoldWeapon) + { + PendingWeapon = Instigator.Weapon; + } + return false; + //return ReturnValue; +} + +simulated function ClearPendingWeapon() +{ + // End:0x3D + if(PendingWeapon != none) + { + PendingWeapon.GotoState('Inactive'); + PendingWeapon = none; + } + //return; +} + +simulated function ChangedWeapon() +{ + local Weapon OldWeapon; + + OldWeapon = Instigator.Weapon; + // End:0x87 + if((PendingWeapon == none) && bMustHoldWeapon) + { + // End:0x87 + if(OldWeapon != none) + { + OldWeapon.Activate(); + PendingWeapon = OldWeapon; + } + } + Instigator.Weapon = PendingWeapon; + Instigator.PlayWeaponSwitch(OldWeapon, PendingWeapon); + // End:0x18B + if(PendingWeapon != none) + { + PendingWeapon.Instigator = Instigator; + // End:0x161 + if(WorldInfo.Game != none) + { + Instigator.MakeNoise(0.1000000, 'ChangedWeapon'); + } + PendingWeapon.Activate(); + PendingWeapon = none; + } + // End:0x20A + if(Instigator.Controller != none) + { + Instigator.Controller.NotifyChangedWeapon(OldWeapon, Instigator.Weapon); + } + //return; +} + +simulated function ClientWeaponSet(Weapon NewWeapon, bool bOptionalSet, optional bool bDoNotActivate) +{ + local Weapon OldWeapon; + + // End:0x28F + if(!bDoNotActivate) + { + OldWeapon = Instigator.Weapon; + // End:0x94 + if(((OldWeapon == none) || OldWeapon.bDeleteMe) || OldWeapon.IsInState('Inactive')) + { + return; + } + // End:0xD5 + if(OldWeapon == NewWeapon) + { + // End:0xD3 + if(NewWeapon.IsInState('PendingClientWeaponSet')) + { + } + return; + } + // End:0x180 + if(bOptionalSet) + { + // End:0x180 + if(OldWeapon.DenyClientWeaponSet() || Instigator.IsHumanControlled() && PlayerController(Instigator.Controller).bNeverSwitchOnPickup) + { + LastAttemptedSwitchToWeapon = NewWeapon; + return; + } + } + // End:0x28F + if(((PendingWeapon == none) || !PendingWeapon.HasAnyAmmo()) || PendingWeapon.GetWeaponRating() < NewWeapon.GetWeaponRating()) + { + // End:0x28F + if(!Instigator.Weapon.HasAnyAmmo() || Instigator.Weapon.GetWeaponRating() < NewWeapon.GetWeaponRating()) + { + return; + } + } + } + NewWeapon.GotoState('Inactive'); + //return; +} + +simulated function UpdateController() +{ + //return; +} + +defaultproperties +{ + RemoteRole=ENetRole.ROLE_SimulatedProxy + TickGroup=ETickingGroup.TG_DuringAsyncWork + bHidden=true + bOnlyRelevantToOwner=true + bReplicateInstigator=true + bReplicateMovement=false + bOnlyDirtyReplication=true + NetPriority=1.4000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/JsonObject.uc b/exported/Engine/Classes/JsonObject.uc new file mode 100755 index 00000000..4a5d722f --- /dev/null +++ b/exported/Engine/Classes/JsonObject.uc @@ -0,0 +1,73 @@ +class JsonObject extends Object + native; + +var native Map_Mirror ValueMap; +var native Map_Mirror ObjectMap; +var native array ValueArray; +var native array ObjectArray; + +// Export UJsonObject::execGetObject(FFrame&, void* const) +native function JsonObject GetObject(const string Key); + +// Export UJsonObject::execGetStringValue(FFrame&, void* const) +native function string GetStringValue(const string Key); + +// Export UJsonObject::execHasKey(FFrame&, void* const) +native function bool HasKey(const string Key); + +function int GetIntValue(const string Key) +{ + local string Value; + + Value = Mid(GetStringValue(Key), 2); + return int(Value); + //return ReturnValue; +} + +function float GetFloatValue(const string Key) +{ + local string Value; + + Value = Mid(GetStringValue(Key), 2); + return float(Value); + //return ReturnValue; +} + +function bool GetBoolValue(const string Key) +{ + local string Value; + + Value = Mid(GetStringValue(Key), 2); + return bool(Value); + //return ReturnValue; +} + +// Export UJsonObject::execSetObject(FFrame&, void* const) +native function SetObject(const string Key, JsonObject Object); + +// Export UJsonObject::execSetStringValue(FFrame&, void* const) +native function SetStringValue(const string Key, const string Value); + +function SetIntValue(const string Key, int Value) +{ + SetStringValue(Key, "\\#" $ string(Value)); + //return; +} + +function SetFloatValue(const string Key, float Value) +{ + SetStringValue(Key, "\\#" $ string(Value)); + //return; +} + +function SetBoolValue(const string Key, bool Value) +{ + SetStringValue(Key, "\\#" $ ((Value) ? "true" : "false")); + //return; +} + +// Export UJsonObject::execEncodeJson(FFrame&, void* const) +native static function string EncodeJson(JsonObject Root); + +// Export UJsonObject::execDecodeJson(FFrame&, void* const) +native static function JsonObject DecodeJson(const string Str); diff --git a/exported/Engine/Classes/KActor.uc b/exported/Engine/Classes/KActor.uc new file mode 100755 index 00000000..6b0ea9aa --- /dev/null +++ b/exported/Engine/Classes/KActor.uc @@ -0,0 +1,428 @@ +class KActor extends DynamicSMActor + native(Physics) + nativereplication + placeable + classgroup(Physics); + +var() bool bDamageAppliesImpulse; +var() repnotify bool bWakeOnLevelStart; +var bool bCurrentSlide; +var bool bSlideActive; +var(StayUprightSpring) bool bEnableStayUprightSpring; +var() bool bLimitMaxPhysicsVelocity; +var transient bool bNeedsRBStateReplication; +var bool bDisableClientSidePawnInteractions; +var(Paladins) bool TgApplyHitImpulse; +var(Paladins) bool TgApplyTouchImpulse; +var export editinline ParticleSystemComponent ImpactEffectComponent; +var export editinline AudioComponent ImpactSoundComponent; +var export editinline AudioComponent ImpactSoundComponent2; +var float LastImpactTime; +var PhysEffectInfo ImpactEffectInfo; +var export editinline ParticleSystemComponent SlideEffectComponent; +var export editinline AudioComponent SlideSoundComponent; +var float LastSlideTime; +var PhysEffectInfo SlideEffectInfo; +var(StayUprightSpring) float StayUprightTorqueFactor; +var(StayUprightSpring) float StayUprightMaxTorque; +var() float MaxPhysicsVelocity; +var native const RigidBodyState RBState; +var native const float AngErrorAccumulator; +var repnotify Vector ReplicatedDrawScale3D; +var transient Vector InitialLocation; +var transient Rotator InitialRotation; +var(Paladins) float TgTouchMagnitude; +var(Paladins) AkBaseSoundObject TgTouchSound; + +replication +{ + // Pos:0x000 + if(bNeedsRBStateReplication && int(Role) == int(ROLE_Authority)) + RBState; + + // Pos:0x020 + if(bNetInitial && int(Role) == int(ROLE_Authority)) + ReplicatedDrawScale3D, bWakeOnLevelStart; +} + +// Export UKActor::execGetKActorPhysMaterial(FFrame&, void* const) +native final function PhysicalMaterial GetKActorPhysMaterial(); + +// Export UKActor::execResolveRBState(FFrame&, void* const) +native final function ResolveRBState(); + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x4B + if(bWakeOnLevelStart && StaticMeshComponent != none) + { + StaticMeshComponent.WakeRigidBody(); + } + else + { + bNeedsRBStateReplication = !bNoDelete; + } + ReplicatedDrawScale3D = DrawScale3D * 1000.0000000; + // End:0xB9 + if((StaticMeshComponent != none) && StaticMeshComponent.bNotifyRigidBodyCollision) + { + SetPhysicalCollisionProperties(); + } + InitialLocation = Location; + InitialRotation = Rotation; + // End:0x135 + if((bDisableClientSidePawnInteractions && int(Role) != int(ROLE_Authority)) && StaticMeshComponent != none) + { + StaticMeshComponent.SetRBCollidesWithChannel(2, false); + } + //return; +} + +simulated event FellOutOfWorld(Class dmgType) +{ + ShutDown(); + super(Actor).FellOutOfWorld(dmgType); + //return; +} + +simulated event Destroyed() +{ + // End:0x82 + if(ImpactEffectInfo.Sound != none) + { + // End:0x52 + if(ImpactSoundComponent != none) + { + ImpactSoundComponent.bAutoDestroy = true; + } + // End:0x82 + if(ImpactSoundComponent2 != none) + { + ImpactSoundComponent2.bAutoDestroy = true; + } + } + // End:0xC5 + if(SlideEffectInfo.Sound != none) + { + SlideSoundComponent.bAutoDestroy = true; + } + super(Actor).Destroyed(); + //return; +} + +simulated function SetPhysicalCollisionProperties() +{ + local PhysicalMaterial PhysMat; + + PhysMat = GetKActorPhysMaterial(); + ImpactEffectInfo = PhysMat.FindPhysEffectInfo(0); + SlideEffectInfo = PhysMat.FindPhysEffectInfo(1); + // End:0x100 + if(ImpactEffectInfo.Effect != none) + { + ImpactEffectComponent = new (self) Class'Engine.ParticleSystemComponent'; + ImpactEffectComponent.bAutoActivate = false; + ImpactEffectComponent.SetTemplate(ImpactEffectInfo.Effect); + } + // End:0x1C8 + if(ImpactEffectInfo.Sound != none) + { + ImpactSoundComponent = new (self) Class'Engine.AudioComponent'; + ImpactSoundComponent.SoundCue = ImpactEffectInfo.Sound; + ImpactSoundComponent2 = new (self) Class'Engine.AudioComponent'; + ImpactSoundComponent2.SoundCue = ImpactEffectInfo.Sound; + } + // End:0x25E + if(SlideEffectInfo.Effect != none) + { + SlideEffectComponent = new (self) Class'Engine.ParticleSystemComponent'; + SlideEffectComponent.bAutoActivate = false; + SlideEffectComponent.SetTemplate(SlideEffectInfo.Effect); + } + // End:0x2D3 + if(SlideEffectInfo.Sound != none) + { + SlideSoundComponent = new (self) Class'Engine.AudioComponent'; + SlideSoundComponent.SoundCue = SlideEffectInfo.Sound; + } + //return; +} + +simulated event SpawnedByKismet() +{ + // End:0x2C + if(StaticMeshComponent.bNotifyRigidBodyCollision) + { + SetPhysicalCollisionProperties(); + } + InitialLocation = Location; + InitialRotation = Rotation; + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + local Vector NewDrawScale3D; + + // End:0x47 + if(VarName == 'bWakeOnLevelStart') + { + // End:0x44 + if(bWakeOnLevelStart) + { + StaticMeshComponent.WakeRigidBody(); + } + } + else + { + // End:0x8E + if(VarName == 'ReplicatedDrawScale3D') + { + NewDrawScale3D = ReplicatedDrawScale3D / 1000.0000000; + SetDrawScale3D(NewDrawScale3D); + } + else + { + super.ReplicatedEvent(VarName); + } + } + //return; +} + +event ApplyImpulse(Vector ImpulseDir, float ImpulseMag, Vector HitLocation, optional TraceHitInfo HitInfo, optional Class DamageType) +{ + local Vector AppliedImpulse; + + AppliedImpulse = Normal(ImpulseDir) * ImpulseMag; + // End:0xA8 + if(HitInfo.HitComponent != none) + { + HitInfo.HitComponent.AddImpulse(AppliedImpulse, HitLocation, HitInfo.BoneName); + } + else + { + CollisionComponent.AddImpulse(AppliedImpulse, HitLocation); + } + //return; +} + +event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + super(Actor).TakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + // End:0xF4 + if((bDamageAppliesImpulse && !TgApplyHitImpulse) && DamageType.default.KDamageImpulse > float(0)) + { + // End:0xA8 + if(VSize(Momentum) < 0.0010000) + { + return; + } + ApplyImpulse(Momentum, DamageType.default.KDamageImpulse, HitLocation, HitInfo, DamageType); + } + //return; +} + +simulated function TakeRadiusDamage(Controller InstigatedBy, float BaseDamage, float DamageRadius, Class DamageType, float Momentum, Vector HurtOrigin, bool bFullDamage, Actor DamageCauser, optional float DamageFalloffExponent = 1.0000000) +{ + local int Idx; + local SeqEvent_TakeDamage DmgEvt; + + Idx = 0; + J0x14: + + // End:0xAC [Loop If] + if(Idx < GeneratedEvents.Length) + { + DmgEvt = SeqEvent_TakeDamage(GeneratedEvents[Idx]); + // End:0x9E + if(DmgEvt != none) + { + DmgEvt.HandleDamage(self, InstigatedBy, DamageType, int(BaseDamage)); + } + Idx++; + // [Loop Continue] + goto J0x14; + } + // End:0x178 + if(((bDamageAppliesImpulse && !TgApplyHitImpulse) && DamageType.default.RadialDamageImpulse > float(0)) && int(Role) == int(ROLE_Authority)) + { + CollisionComponent.AddRadialImpulse(HurtOrigin, DamageRadius, DamageType.default.RadialDamageImpulse, 1, DamageType.default.bRadialDamageVelChange); + } + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x57 + if(Action.InputLinks[0].bHasImpulse) + { + StaticMeshComponent.WakeRigidBody(); + } + //return; +} + +simulated function OnTeleport(SeqAct_Teleport inAction) +{ + local array objVars; + local int Idx; + local Actor destActor; + + inAction.GetObjectVars(objVars, "Destination"); + Idx = 0; + J0x40: + + // End:0x9D [Loop If] + if((Idx < objVars.Length) && destActor == none) + { + destActor = Actor(objVars[Idx]); + Idx++; + // [Loop Continue] + goto J0x40; + } + // End:0x134 + if(destActor != none) + { + StaticMeshComponent.SetRBPosition(destActor.Location); + StaticMeshComponent.SetRBRotation(destActor.Rotation); + PlayTeleportEffect(false, true); + } + //return; +} + +simulated function Reset() +{ + StaticMeshComponent.SetRBLinearVelocity(vect(0.0000000, 0.0000000, 0.0000000)); + StaticMeshComponent.SetRBAngularVelocity(vect(0.0000000, 0.0000000, 0.0000000)); + StaticMeshComponent.SetRBPosition(InitialLocation); + StaticMeshComponent.SetRBRotation(InitialRotation); + // End:0xDE + if(!bWakeOnLevelStart) + { + StaticMeshComponent.PutRigidBodyToSleep(); + } + else + { + StaticMeshComponent.WakeRigidBody(); + } + ResolveRBState(); + bForceNetUpdate = true; + super(Actor).Reset(); + //return; +} + +simulated function OnWeaponHit(ImpactInfo Impact, optional float ImpulseScale = 800.0000000) +{ + // End:0xBF + if(int(Role) == int(ROLE_Authority)) + { + // End:0xBF + if((CollisionComponent != none) && TgApplyHitImpulse) + { + CollisionComponent.AddImpulse(Normal(Impact.HitLocation - Impact.StartTrace) * ImpulseScale, Impact.HitLocation); + } + } + //return; +} + +simulated function ClientWeaponHitEffects(Vector ImpactLocation, Vector ImpactNormal) +{ + //return; +} + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local Pawn OtherPawn; + + // End:0xA2 + if(int(Role) == int(ROLE_Authority)) + { + OtherPawn = Pawn(Other); + // End:0xA2 + if(((OtherPawn != none) && CollisionComponent != none) && TgApplyTouchImpulse) + { + CollisionComponent.AddImpulse(Normal(Location - HitLocation) * TgTouchMagnitude); + } + } + //return; +} + +simulated function ClientTouchEffects() +{ + // End:0x7F + if(TgTouchSound != none) + { + // End:0x46 + if(AkEvent(TgTouchSound) != none) + { + PostAkEvent(AkEvent(TgTouchSound)); + } + else + { + // End:0x7F + if(SoundCue(TgTouchSound) != none) + { + PlaySound(SoundCue(TgTouchSound)); + } + } + } + //return; +} + +defaultproperties +{ + bNeedsRBStateReplication=true + bDisableClientSidePawnInteractions=true + TgApplyHitImpulse=true + TgApplyTouchImpulse=true + StayUprightTorqueFactor=1000.0000000 + StayUprightMaxTorque=1500.0000000 + MaxPhysicsVelocity=350.0000000 + ReplicatedDrawScale3D=(X=1000.0000000,Y=1000.0000000,Z=1000.0000000) + TgTouchMagnitude=2400.0000000 + // Reference: StaticMeshComponent'Engine.Default__KActor.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__DynamicSMActor.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + WireframeColor=(R=0,G=255,B=128,A=255) + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__KActor.MyLightEnvironment' + RBChannel=ERBCollisionChannel.RBCC_GameplayPhysics + BlockRigidBody=true + bBlockFootPlacement=false + RBCollideWithChannels=(Default=true,GameplayPhysics=true,EffectPhysics=true,BlockingVolume=true) + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__KActor.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__DynamicSMActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + bPawnCanBaseOn=false + bSafeBaseIfAsleep=true + Components[0]=MyLightEnvironment + Components[1]=StaticMeshComponent0 + Physics=EPhysics.PHYS_RigidBody + TickGroup=ETickingGroup.TG_PostAsyncWork + bNoDelete=true + bAlwaysRelevant=true + bUpdateSimulatedPosition=true + bNetInitialRotation=true + bReplicateRigidBodyLocation=true + bBlocksNavigation=true + bCollideActors=true + bProjTarget=true + bBlocksTeleport=true + bNoEncroachCheck=true + CollisionComponent=StaticMeshComponent0 + SupportedEvents[0]=Class'Engine.SeqEvent_Touch' + SupportedEvents[1]=Class'Engine.SeqEvent_Destroyed' + SupportedEvents[2]=Class'Engine.SeqEvent_TakeDamage' + SupportedEvents[3]=Class'Engine.SeqEvent_HitWall' + SupportedEvents[4]=Class'Engine.SeqEvent_AnimNotify' + SupportedEvents[5]=Class'Engine.SeqEvent_MobileTouch' + SupportedEvents[6]=Class'Engine.SeqEvent_RigidBodyCollision' +} \ No newline at end of file diff --git a/exported/Engine/Classes/KActorFromStatic.uc b/exported/Engine/Classes/KActorFromStatic.uc new file mode 100755 index 00000000..dc7c59f6 --- /dev/null +++ b/exported/Engine/Classes/KActorFromStatic.uc @@ -0,0 +1,147 @@ +class KActorFromStatic extends KActor + transient + native(Physics) + notplaceable; + +var Actor MyStaticMeshActor; +var float MaxImpulseSpeed; + +// Export UKActorFromStatic::execDisablePrecomputedLighting(FFrame&, void* const) +native final function DisablePrecomputedLighting(); + +event OnSleepRBPhysics() +{ + BecomeStatic(); + //return; +} + +event OnWakeRBPhysics() +{ + ClearTimer('BecomeStatic'); + //return; +} + +function BecomeStatic() +{ + // End:0x6E + if(!WorldInfo.bDropDetail && (WorldInfo.TimeSeconds - LastRenderTime) < 0.1500000) + { + SetTimer(1.0000000, false, 'BecomeStatic'); + return; + } + // End:0x93 + if(StaticMeshComponent.RigidBodyIsAwake()) + { + return; + } + MakeStatic(); + Destroy(); + //return; +} + +// Export UKActorFromStatic::execMakeStatic(FFrame&, void* const) +native static function MakeStatic(); + +// Export UKActorFromStatic::execMakeDynamic(FFrame&, void* const) +native static function KActorFromStatic MakeDynamic(StaticMeshComponent MovableMesh); + +event ApplyImpulse(Vector ImpulseDir, float ImpulseMag, Vector HitLocation, optional TraceHitInfo HitInfo, optional Class DamageType) +{ + local float BodyMass; + + BodyMass = StaticMeshComponent.BodyInstance.GetBodyMass(); + // End:0xDB + if((BodyMass > 0.0000000) && (DamageType == none) || !DamageType.default.bRadialDamageVelChange) + { + // End:0xB2 + if(BodyMass < 1.0000000) + { + BodyMass = Sqrt(BodyMass); + } + ImpulseMag = FMin(ImpulseMag / BodyMass, MaxImpulseSpeed); + } + CollisionComponent.AddImpulse(Normal(ImpulseDir) * ImpulseMag, HitLocation,, true); + //return; +} + +function ReceiveImpulse(Pawn Other, Vector HitLocation, Vector HitNormal) +{ + local Vector HitDir; + local float ImpulseMag; + + HitDir = Location - HitLocation; + HitDir.Z = FMax(HitDir.Z, 0.0000000); + HitDir = Normal(HitDir); + ImpulseMag = FMax(0.5000000 * Other.GroundSpeed, (Other.Velocity - Velocity) Dot HitDir); + ApplyImpulse(HitDir, ImpulseMag, Location); + //return; +} + +event Bump(Actor Other, PrimitiveComponent OtherComp, Vector HitNormal) +{ + ReceiveImpulse(Pawn(Other), Other.Location, HitNormal); + //return; +} + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + // End:0x46 + if(Pawn(Other) != none) + { + ReceiveImpulse(Pawn(Other), HitLocation, HitNormal); + } + //return; +} + +simulated function TakeRadiusDamage(Controller InstigatedBy, float BaseDamage, float DamageRadius, Class DamageType, float Momentum, Vector HurtOrigin, bool bFullDamage, Actor DamageCauser, optional float DamageFalloffExponent = 1.0000000) +{ + local int Idx; + local SeqEvent_TakeDamage DmgEvt; + + Idx = 0; + J0x14: + + // End:0xAC [Loop If] + if(Idx < GeneratedEvents.Length) + { + DmgEvt = SeqEvent_TakeDamage(GeneratedEvents[Idx]); + // End:0x9E + if(DmgEvt != none) + { + DmgEvt.HandleDamage(self, InstigatedBy, DamageType, int(BaseDamage)); + } + Idx++; + // [Loop Continue] + goto J0x14; + } + // End:0x146 + if((bDamageAppliesImpulse && DamageType.default.RadialDamageImpulse > float(0)) && int(Role) == int(ROLE_Authority)) + { + ApplyImpulse(Location - HurtOrigin, DamageType.default.RadialDamageImpulse, Location,, DamageType); + } + //return; +} + +auto state Initializing +{ + event Tick(float DeltaTime) + { + DisablePrecomputedLighting(); + GotoState('None'); + //return; + } + stop; +} + +defaultproperties +{ + MaxImpulseSpeed=900.0000000 + StaticMeshComponent=none + LightEnvironment=none + Components=none + RemoteRole=ENetRole.ROLE_None + bNoDelete=false + bCanStepUpOn=false + bCallRigidBodyWakeEvents=true + CollisionComponent=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/KActorSpawnable.uc b/exported/Engine/Classes/KActorSpawnable.uc new file mode 100755 index 00000000..57cc5b07 --- /dev/null +++ b/exported/Engine/Classes/KActorSpawnable.uc @@ -0,0 +1,71 @@ +class KActorSpawnable extends KActor + native(Physics) + notplaceable; + +var bool bRecycleScaleToZero; +var protected bool bScalingToZero; + +simulated function Initialize() +{ + bScalingToZero = false; + SetDrawScale(default.DrawScale); + ClearTimer('Recycle'); + SetHidden(false); + StaticMeshComponent.SetHidden(false); + SetTickIsDisabled(false); + SetPhysics(10); + SetCollision(true, false); + //return; +} + +simulated function Recycle() +{ + // End:0x1F + if(bRecycleScaleToZero == true) + { + bScalingToZero = true; + } + else + { + RecycleInternal(); + } + //return; +} + +simulated event RecycleInternal() +{ + SetHidden(true); + StaticMeshComponent.SetHidden(true); + SetPhysics(0); + SetCollision(false, false); + ClearTimer('Recycle'); + SetTickIsDisabled(true); + //return; +} + +// Export UKActorSpawnable::execResetComponents(FFrame&, void* const) +native final function ResetComponents(); + +defaultproperties +{ + // Reference: StaticMeshComponent'Engine.Default__KActorSpawnable.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__KActor.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__KActorSpawnable.MyLightEnvironment' + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__KActorSpawnable.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__KActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + Components[1]=StaticMeshComponent0 + bNoDelete=false + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/KAsset.uc b/exported/Engine/Classes/KAsset.uc new file mode 100755 index 00000000..4d060552 --- /dev/null +++ b/exported/Engine/Classes/KAsset.uc @@ -0,0 +1,179 @@ +class KAsset extends Actor + native(Physics) + nativereplication + placeable + hidecategories(Navigation) + classgroup(Physics); + +var() const editconst export editinline SkeletalMeshComponent SkeletalMeshComponent; +var() bool bDamageAppliesImpulse; +var() bool bWakeOnLevelStart; +var() bool bBlockPawns; +var repnotify transient SkeletalMesh ReplicatedMesh; +var repnotify transient PhysicsAsset ReplicatedPhysAsset; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + ReplicatedMesh, ReplicatedPhysAsset; +} + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x37 + if(bWakeOnLevelStart) + { + SkeletalMeshComponent.WakeRigidBody(); + } + ReplicatedMesh = SkeletalMeshComponent.SkeletalMesh; + ReplicatedPhysAsset = SkeletalMeshComponent.PhysicsAsset; + //return; +} + +final function SetMeshAndPhysAsset(SkeletalMesh NewMesh, PhysicsAsset NewPhysAsset) +{ + SkeletalMeshComponent.SetSkeletalMesh(NewMesh); + ReplicatedMesh = NewMesh; + SkeletalMeshComponent.SetPhysicsAsset(NewPhysAsset); + ReplicatedPhysAsset = NewPhysAsset; + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x44 + if(VarName == 'ReplicatedMesh') + { + SkeletalMeshComponent.SetSkeletalMesh(ReplicatedMesh); + } + else + { + // End:0x84 + if(VarName == 'ReplicatedPhysAsset') + { + SkeletalMeshComponent.SetPhysicsAsset(ReplicatedPhysAsset); + } + } + //return; +} + +simulated event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + local Vector ApplyImpulse; + + super.TakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + // End:0x17F + if(bDamageAppliesImpulse && DamageType.default.KDamageImpulse > float(0)) + { + // End:0x97 + if(VSize(Momentum) < 0.0010000) + { + return; + } + CheckHitInfo(HitInfo, SkeletalMeshComponent, Normal(Momentum), HitLocation); + ApplyImpulse = Normal(Momentum) * DamageType.default.KDamageImpulse; + // End:0x17F + if(HitInfo.HitComponent != none) + { + HitInfo.HitComponent.AddImpulse(ApplyImpulse, HitLocation, HitInfo.BoneName); + } + } + //return; +} + +simulated function TakeRadiusDamage(Controller InstigatedBy, float BaseDamage, float DamageRadius, Class DamageType, float Momentum, Vector HurtOrigin, bool bFullDamage, Actor DamageCauser, optional float DamageFalloffExponent = 1.0000000) +{ + // End:0xC4 + if((bDamageAppliesImpulse && DamageType.default.RadialDamageImpulse > float(0)) && int(Role) == int(ROLE_Authority)) + { + CollisionComponent.AddRadialImpulse(HurtOrigin, DamageRadius, DamageType.default.RadialDamageImpulse, 1, DamageType.default.bRadialDamageVelChange); + } + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x57 + if(Action.InputLinks[0].bHasImpulse) + { + SkeletalMeshComponent.WakeRigidBody(); + } + //return; +} + +simulated function OnTeleport(SeqAct_Teleport inAction) +{ + local Actor destActor; + + destActor = Actor(SeqVar_Object(inAction.VariableLinks[1].LinkedVariables[0]).GetObjectValue()); + // End:0xB7 + if(destActor != none) + { + SkeletalMeshComponent.SetRBPosition(destActor.Location); + } + else + { + inAction.ScriptLog((("No Destination for" @ string(inAction)) @ "on") @ string(self)); + } + //return; +} + +function DoKismetAttachment(Actor Attachment, SeqAct_AttachToActor Action) +{ + Attachment.SetBase(self,, SkeletalMeshComponent, Action.BoneName); + //return; +} + +defaultproperties +{ + // Reference: SkeletalMeshComponent'Engine.Default__KAsset.KAssetSkelMeshComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'KAssetSkelMeshComponent' + begin object name="KAssetSkelMeshComponent" class=Engine.SkeletalMeshComponent + PhysicsWeight=1.0000000 + bSkipAllUpdateWhenPhysicsAsleep=true + bHasPhysicsAssetInstance=true + bUpdateKinematicBonesFromAnimation=false + bUseTickOptimization=false + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__KAsset.MyLightEnvironment' + RBChannel=ERBCollisionChannel.RBCC_GameplayPhysics + CollideActors=true + BlockActors=true + BlockZeroExtent=true + BlockRigidBody=true + bBlockFootPlacement=false + RBCollideWithChannels=(Default=true,GameplayPhysics=true,EffectPhysics=true,BlockingVolume=true) + end object + SkeletalMeshComponent=KAssetSkelMeshComponent + bDamageAppliesImpulse=true + // Reference: DynamicLightEnvironmentComponent'Engine.Default__KAsset.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + begin object name="MyLightEnvironment" class=Engine.DynamicLightEnvironmentComponent + end object + Components[0]=MyLightEnvironment + Components[1]=KAssetSkelMeshComponent + Physics=EPhysics.PHYS_RigidBody + RemoteRole=ENetRole.ROLE_SimulatedProxy + TickGroup=ETickingGroup.TG_PostAsyncWork + bNoDelete=true + bAlwaysRelevant=true + bUpdateSimulatedPosition=true + bNetInitialRotation=true + bCollideActors=true + bBlockActors=true + bProjTarget=true + bEdShouldSnap=true + CollisionComponent=KAssetSkelMeshComponent + SupportedEvents[0]=Class'Engine.SeqEvent_Touch' + SupportedEvents[1]=Class'Engine.SeqEvent_Destroyed' + SupportedEvents[2]=Class'Engine.SeqEvent_TakeDamage' + SupportedEvents[3]=Class'Engine.SeqEvent_HitWall' + SupportedEvents[4]=Class'Engine.SeqEvent_AnimNotify' + SupportedEvents[5]=Class'Engine.SeqEvent_MobileTouch' + SupportedEvents[6]=Class'Engine.SeqEvent_ConstraintBroken' + SupportedEvents[7]=Class'Engine.SeqEvent_RigidBodyCollision' +} \ No newline at end of file diff --git a/exported/Engine/Classes/KAssetSpawnable.uc b/exported/Engine/Classes/KAssetSpawnable.uc new file mode 100755 index 00000000..9bf382b2 --- /dev/null +++ b/exported/Engine/Classes/KAssetSpawnable.uc @@ -0,0 +1,27 @@ +class KAssetSpawnable extends KAsset + native(Physics) + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: SkeletalMeshComponent'Engine.Default__KAssetSpawnable.KAssetSkelMeshComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'KAssetSkelMeshComponent' + // Archetype: SkeletalMeshComponent'Engine.Default__KAsset.KAssetSkelMeshComponent' + begin object name="KAssetSkelMeshComponent" + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__KAssetSpawnable.MyLightEnvironment' + end object + SkeletalMeshComponent=KAssetSkelMeshComponent + // Reference: DynamicLightEnvironmentComponent'Engine.Default__KAssetSpawnable.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__KAsset.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + Components[0]=MyLightEnvironment + Components[1]=KAssetSkelMeshComponent + bNoDelete=false + CollisionComponent=KAssetSkelMeshComponent +} \ No newline at end of file diff --git a/exported/Engine/Classes/KMeshProps.uc b/exported/Engine/Classes/KMeshProps.uc new file mode 100755 index 00000000..27cc89b1 --- /dev/null +++ b/exported/Engine/Classes/KMeshProps.uc @@ -0,0 +1,101 @@ +class KMeshProps extends Object + native + noexport; + +struct KSphereElem +{ + var() editconst Matrix TM; + var() editconst float Radius; + var() bool bNoRBCollision; + var() bool bPerPolyShape; + + structdefaultproperties + { + TM=(XPlane=(W=0.0000000,X=1.0000000,Y=0.0000000,Z=0.0000000),YPlane=(W=0.0000000,X=0.0000000,Y=1.0000000,Z=0.0000000),ZPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=1.0000000),WPlane=(W=1.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000)) + Radius=1.0000000 + bNoRBCollision=false + bPerPolyShape=false + } +}; + +struct KBoxElem +{ + var() editconst Matrix TM; + var() editconst float X; + var() editconst float Y; + var() editconst float Z; + var() bool bNoRBCollision; + var() bool bPerPolyShape; + + structdefaultproperties + { + TM=(XPlane=(W=0.0000000,X=1.0000000,Y=0.0000000,Z=0.0000000),YPlane=(W=0.0000000,X=0.0000000,Y=1.0000000,Z=0.0000000),ZPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=1.0000000),WPlane=(W=1.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000)) + X=1.0000000 + Y=1.0000000 + Z=1.0000000 + bNoRBCollision=false + bPerPolyShape=false + } +}; + +struct KSphylElem +{ + var() editconst Matrix TM; + var() editconst float Radius; + var() editconst float Length; + var() bool bNoRBCollision; + var() bool bPerPolyShape; + + structdefaultproperties + { + TM=(XPlane=(W=0.0000000,X=1.0000000,Y=0.0000000,Z=0.0000000),YPlane=(W=0.0000000,X=0.0000000,Y=1.0000000,Z=0.0000000),ZPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=1.0000000),WPlane=(W=1.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000)) + Radius=1.0000000 + Length=1.0000000 + bNoRBCollision=false + bPerPolyShape=false + } +}; + +struct KConvexElem +{ + var array VertexData; + var array PermutedVertexData; + var array FaceTriData; + var array EdgeDirections; + var array FaceNormalDirections; + var array FacePlaneData; + var Box ElemBox; + + structdefaultproperties + { + VertexData=none + PermutedVertexData=none + FaceTriData=none + EdgeDirections=none + FaceNormalDirections=none + FacePlaneData=none + ElemBox=(Min=(X=0.0000000,Y=0.0000000,Z=0.0000000),Max=(X=0.0000000,Y=0.0000000,Z=0.0000000),IsValid=0) + } +}; + +struct KAggregateGeom +{ + var() editfixedsize array SphereElems; + var() editfixedsize array BoxElems; + var() editfixedsize array SphylElems; + var() editfixedsize array ConvexElems; + var noimport nontransactional native Pointer RenderInfo; + var() bool bSkipCloseAndParallelChecks; + + structdefaultproperties + { + SphereElems=none + BoxElems=none + SphylElems=none + ConvexElems=none + bSkipCloseAndParallelChecks=false + } +}; + +var() Vector COMNudge; +var() KAggregateGeom AggGeom; diff --git a/exported/Engine/Classes/Keypoint.uc b/exported/Engine/Classes/Keypoint.uc new file mode 100755 index 00000000..fb625d49 --- /dev/null +++ b/exported/Engine/Classes/Keypoint.uc @@ -0,0 +1,14 @@ +class Keypoint extends Actor + abstract + native + placeable + hidecategories(Navigation); + +var() export editinline SpriteComponent SpriteComp; + +defaultproperties +{ + Components[0]=none + bStatic=true + bHidden=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/KillZDamageType.uc b/exported/Engine/Classes/KillZDamageType.uc new file mode 100755 index 00000000..ae44b30f --- /dev/null +++ b/exported/Engine/Classes/KillZDamageType.uc @@ -0,0 +1,8 @@ +class KillZDamageType extends DamageType + abstract + native; + +defaultproperties +{ + bCausedByWorld=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/KismetBookMark.uc b/exported/Engine/Classes/KismetBookMark.uc new file mode 100755 index 00000000..af09ce18 --- /dev/null +++ b/exported/Engine/Classes/KismetBookMark.uc @@ -0,0 +1,5 @@ +class KismetBookMark extends BookMark2D + native + hidecategories(Object,Object); + +var string BookMarkSequencePathName; diff --git a/exported/Engine/Classes/Ladder.uc b/exported/Engine/Classes/Ladder.uc new file mode 100755 index 00000000..ebcf5311 --- /dev/null +++ b/exported/Engine/Classes/Ladder.uc @@ -0,0 +1,46 @@ +class Ladder extends NavigationPoint + native + placeable + hidecategories(Navigation,Lighting,LightColor,Force); + +var LadderVolume MyLadder; +var Ladder LadderList; + +event bool SuggestMovePreparation(Pawn Other) +{ + // End:0x11 + if(MyLadder == none) + { + return false; + } + // End:0x68 + if(!MyLadder.InUse(Other)) + { + MyLadder.PendingClimber = Other; + return false; + } + Other.Controller.bPreparingMove = true; + Other.Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + return true; + //return ReturnValue; +} + +defaultproperties +{ + bSpecialMove=true + bNotBased=true + // Reference: CylinderComponent'Engine.Default__Ladder.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/LadderReachSpec.uc b/exported/Engine/Classes/LadderReachSpec.uc new file mode 100755 index 00000000..580f082d --- /dev/null +++ b/exported/Engine/Classes/LadderReachSpec.uc @@ -0,0 +1,7 @@ +class LadderReachSpec extends ReachSpec + native; + +defaultproperties +{ + bCanCutCorners=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/LadderVolume.uc b/exported/Engine/Classes/LadderVolume.uc new file mode 100755 index 00000000..a04d5636 --- /dev/null +++ b/exported/Engine/Classes/LadderVolume.uc @@ -0,0 +1,151 @@ +class LadderVolume extends PhysicsVolume + native + placeable + hidecategories(Navigation,Object,Movement,Display); + +var() Rotator WallDir; +var() bool m_bBotOnly; +var() bool bNoPhysicalLadder; +var() bool bAutoPath; +var() bool bAllowLadderStrafing; +var Vector LookDir; +var Vector ClimbDir; +var const Ladder LadderList; +var Pawn PendingClimber; +var export editinline ArrowComponent WallDirArrow; +var export editinline ArrowComponent m_WallDirArrow; + +simulated event PostBeginPlay() +{ + local Ladder L, M; + local Vector Dir; + + super.PostBeginPlay(); + LookDir = Vector(WallDir); + // End:0x1EF + if(!bAutoPath && LookDir.Z != float(0)) + { + ClimbDir = vect(0.0000000, 0.0000000, 1.0000000); + L = LadderList; + J0x7E: + + // End:0x1A8 [Loop If] + if(L != none) + { + M = LadderList; + J0xA0: + + // End:0x17D [Loop If] + if(M != none) + { + // End:0x152 + if(M != L) + { + Dir = Normal(M.Location - L.Location); + // End:0x13E + if((Dir Dot ClimbDir) < float(0)) + { + Dir *= float(-1); + } + ClimbDir += Dir; + } + M = M.LadderList; + // [Loop Continue] + goto J0xA0; + } + L = L.LadderList; + // [Loop Continue] + goto J0x7E; + } + ClimbDir = Normal(ClimbDir); + // End:0x1EF + if((ClimbDir Dot vect(0.0000000, 0.0000000, 1.0000000)) < float(0)) + { + ClimbDir *= float(-1); + } + } + //return; +} + +function bool InUse(Pawn Ignored) +{ + return false; + //return ReturnValue; +} + +simulated event PawnEnteredVolume(Pawn P) +{ + super.PawnEnteredVolume(P); + // End:0x39 + if(!P.CanGrabLadder()) + { + return; + } + //return; +} + +simulated event PawnLeavingVolume(Pawn P) +{ + local Controller C; + + // End:0x26 + if(P.OnLadder != self) + { + return; + } + super.PawnLeavingVolume(P); + P.OnLadder = none; + P.EndClimbLadder(self); + // End:0x9B + if(P == PendingClimber) + { + PendingClimber = none; + } + return; + // End:0x1CC + if(!InUse(P)) + { + // End:0x1CB + foreach WorldInfo.AllControllers(Class'Engine.Controller', C) + { + // End:0x1CA + if((C.bPreparingMove && Ladder(C.MoveTarget) != none) && Ladder(C.MoveTarget).MyLadder == self) + { + C.bPreparingMove = false; + PendingClimber = C.Pawn; + return; + } + } + } + //return; +} + +simulated event PhysicsChangedFor(Actor Other) +{ + // End:0xC3 + if(((((int(Other.Physics) == int(2)) || int(Other.Physics) == int(9)) || Other.bDeleteMe) || Pawn(Other) == none) || Pawn(Other).Controller == none) + { + return; + } + Spawn(Class'Engine.PotentialClimbWatcher', Other); + //return; +} + +defaultproperties +{ + bAutoPath=true + bAllowLadderStrafing=true + ClimbDir=(X=0.0000000,Y=0.0000000,Z=1.0000000) + // Reference: BrushComponent'Engine.Default__LadderVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__PhysicsVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + Components[1]=none + RemoteRole=ENetRole.ROLE_SimulatedProxy + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Landscape.uc b/exported/Engine/Classes/Landscape.uc new file mode 100755 index 00000000..bb86baed --- /dev/null +++ b/exported/Engine/Classes/Landscape.uc @@ -0,0 +1,40 @@ +class Landscape extends LandscapeProxy + native(Terrain) + notplaceable + hidecategories(Navigation,Attachment,Physics,Debug,LandscapeProxy); + +enum ELandscapeSetupErrors +{ + LSE_None, // 0 + LSE_NoLandscapeInfo, // 1 + LSE_CollsionXY, // 2 + LSE_NoLayerInfo, // 3 + LSE_MAX // 4 +}; + +struct native LandscapeLayerInfo +{ + var() name LayerName; + var() float Hardness; + var bool bNoWeightBlend; + var() PhysicalMaterial PhysMaterial; + var editoronly transient bool bSelected; + + structdefaultproperties + { + LayerName="None" + Hardness=0.0000000 + bNoWeightBlend=false + PhysMaterial=none + bSelected=false + } +}; + +var deprecated array LayerNames; +var deprecated array LayerInfos; + +defaultproperties +{ + bIsProxy=false + bLockLocation=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/LandscapeComponent.uc b/exported/Engine/Classes/LandscapeComponent.uc new file mode 100755 index 00000000..afaa403d --- /dev/null +++ b/exported/Engine/Classes/LandscapeComponent.uc @@ -0,0 +1,83 @@ +class LandscapeComponent extends PrimitiveComponent + native(Terrain) + hidecategories(Display,Attachment,Physics,Debug,Lighting,Collision,Movement,Rendering,PrimitiveComponent,Object); + +struct native WeightmapLayerAllocationInfo +{ + var name LayerName; + var byte WeightmapTextureIndex; + var byte WeightmapTextureChannel; + + structdefaultproperties + { + LayerName="None" + WeightmapTextureIndex=0 + WeightmapTextureChannel=0 + } +}; + +var() const editconst int SectionBaseX; +var() const editconst int SectionBaseY; +var const int ComponentSizeQuads; +var const int SubsectionSizeQuads; +var const int NumSubsections; +var() MaterialInterface OverrideMaterial; +var MaterialInstanceConstant MaterialInstance; +var private const array WeightmapLayerAllocations; +var private const array WeightmapTextures; +var native IndirectArray_Mirror WeightmapData; +var Vector4 WeightmapScaleBias; +var float WeightmapSubsectionOffset; +var Vector4 HeightmapScaleBias; +var private const Texture2D HeightmapTexture; +var const BoxSphereBounds CachedBoxSphereBounds; +var const Box CachedLocalBox; +var private const array ShadowMaps; +var const array IrrelevantLights; +var private native const LightMapRef LightMap; +var private native Pointer EditToolRenderData; +var int CollisionMipLevel; +var private native Pointer PlatformData; +var native const int PlatformDataSize; +var editoronly transient bool bNeedPostUndo; +var(LOD) int ForcedLOD; +var byte NeighborLOD[8]; +var byte NeighborLODBias[8]; +var(LOD) int LODBias; + +defaultproperties +{ + WeightmapScaleBias=(X=0.0000000,Y=0.0000000,Z=0.0000000,W=1.0000000) + HeightmapScaleBias=(X=0.0000000,Y=0.0000000,Z=0.0000000,W=1.0000000) + ForcedLOD=-1 + NeighborLOD[0]=255 + NeighborLOD[1]=255 + NeighborLOD[2]=255 + NeighborLOD[3]=255 + NeighborLOD[4]=255 + NeighborLOD[5]=255 + NeighborLOD[6]=255 + NeighborLOD[7]=255 + NeighborLODBias[0]=128 + NeighborLODBias[1]=128 + NeighborLODBias[2]=128 + NeighborLODBias[3]=128 + NeighborLODBias[4]=128 + NeighborLODBias[5]=128 + NeighborLODBias[6]=128 + NeighborLODBias[7]=128 + ReplacementPrimitive=none + bAllowCullDistanceVolume=false + bUseAsOccluder=true + bAcceptsStaticDecals=true + CastShadow=true + bForceDirectLightMap=true + bAcceptsLights=true + bUsePrecomputedShadows=true + CollideActors=true + BlockActors=true + BlockZeroExtent=true + BlockNonZeroExtent=true + BlockRigidBody=true + LightingChannels=(bInitialized=true,Static=true) +} \ No newline at end of file diff --git a/exported/Engine/Classes/LandscapeGizmoActiveActor.uc b/exported/Engine/Classes/LandscapeGizmoActiveActor.uc new file mode 100755 index 00000000..1e3b1679 --- /dev/null +++ b/exported/Engine/Classes/LandscapeGizmoActiveActor.uc @@ -0,0 +1,23 @@ +class LandscapeGizmoActiveActor extends LandscapeGizmoActor + native(Terrain) + notplaceable + hidecategories(Navigation); + +enum ELandscapeGizmoType +{ + LGT_None, // 0 + LGT_Height, // 1 + LGT_Weight, // 2 + LGT_MAX // 3 +}; + +struct native GizmoSelectData +{ +}; + +var private native const map{VOID,VOID} SelectedData; + +defaultproperties +{ + bEditable=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/LandscapeGizmoActor.uc b/exported/Engine/Classes/LandscapeGizmoActor.uc new file mode 100755 index 00000000..15c2cc4d --- /dev/null +++ b/exported/Engine/Classes/LandscapeGizmoActor.uc @@ -0,0 +1,13 @@ +class LandscapeGizmoActor extends Actor + native(Terrain) + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + Components[0]=none + TickGroup=ETickingGroup.TG_DuringAsyncWork + bStatic=true + bMovable=false + bEditable=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/LandscapeGizmoRenderComponent.uc b/exported/Engine/Classes/LandscapeGizmoRenderComponent.uc new file mode 100755 index 00000000..f7e04ecf --- /dev/null +++ b/exported/Engine/Classes/LandscapeGizmoRenderComponent.uc @@ -0,0 +1,12 @@ +class LandscapeGizmoRenderComponent extends PrimitiveComponent + native(Terrain) + hidecategories(Object); + +defaultproperties +{ + ReplacementPrimitive=none + HiddenGame=true + bSelectable=false + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/LandscapeHeightfieldCollisionComponent.uc b/exported/Engine/Classes/LandscapeHeightfieldCollisionComponent.uc new file mode 100755 index 00000000..e29b8458 --- /dev/null +++ b/exported/Engine/Classes/LandscapeHeightfieldCollisionComponent.uc @@ -0,0 +1,35 @@ +class LandscapeHeightfieldCollisionComponent extends PrimitiveComponent + native(Terrain); + +var native const UntypedBulkData_Mirror CollisionHeightData; +var const array ComponentLayers; +var native const UntypedBulkData_Mirror DominantLayerData; +var const int SectionBaseX; +var const int SectionBaseY; +var int CollisionSizeQuads; +var float CollisionScale; +var const array CollisionQuadFlags; +var const array PhysicalMaterials; +var native const Pointer RBHeightfield; +var const bool bHasKDOPData; +var bool bIncludeHoles; +var editoronly transient bool bHeightFieldDataHasHole; +var native const Pointer kDOPTree; +var init native const array kDOPCollisionVerts; +var const BoxSphereBounds CachedBoxSphereBounds; + +defaultproperties +{ + ReplacementPrimitive=none + bAllowCullDistanceVolume=false + bUseAsOccluder=true + bAcceptsDynamicDecals=false + CastShadow=true + bAcceptsLights=true + bUsePrecomputedShadows=true + CollideActors=true + BlockActors=true + BlockZeroExtent=true + BlockNonZeroExtent=true + BlockRigidBody=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/LandscapeInfo.uc b/exported/Engine/Classes/LandscapeInfo.uc new file mode 100755 index 00000000..f7d5fabd --- /dev/null +++ b/exported/Engine/Classes/LandscapeInfo.uc @@ -0,0 +1,20 @@ +class LandscapeInfo extends Object + native(Terrain); + +struct native LandscapeAddCollision +{ +}; + +var const Guid LandscapeGuid; +var native const map{VOID,VOID} LayerInfoMap; +var native const Pointer DataInterface; +var native const map{VOID,VOID} XYtoComponentMap; +var native const map{VOID,VOID} XYtoCollisionComponentMap; +var const LandscapeProxy LandscapeProxy; +var native const map{VOID,VOID} XYtoAddCollisionMap; +var private native const transient Set_Mirror Proxies; +var private native const Set_Mirror SelectedComponents; +var private native const Set_Mirror SelectedCollisionComponents; +var private native const Set_Mirror SelectedRegionComponents; +var private native const map{VOID,VOID} SelectedRegion; +var editoronly transient bool bIsValid; diff --git a/exported/Engine/Classes/LandscapeLayerInfoObject.uc b/exported/Engine/Classes/LandscapeLayerInfoObject.uc new file mode 100755 index 00000000..021873c1 --- /dev/null +++ b/exported/Engine/Classes/LandscapeLayerInfoObject.uc @@ -0,0 +1,12 @@ +class LandscapeLayerInfoObject extends Object + native(Terrain); + +var() name LayerName; +var() PhysicalMaterial PhysMaterial; +var() float Hardness; +var bool bNoWeightBlend; + +defaultproperties +{ + Hardness=0.5000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/LandscapeMaterialInstanceConstant.uc b/exported/Engine/Classes/LandscapeMaterialInstanceConstant.uc new file mode 100755 index 00000000..3e82d872 --- /dev/null +++ b/exported/Engine/Classes/LandscapeMaterialInstanceConstant.uc @@ -0,0 +1,13 @@ +class LandscapeMaterialInstanceConstant extends MaterialInstanceConstant + native(Material) + collapsecategories + hidecategories(Object); + +var bool bIsLayerThumbnail; +var int DataWeightmapIndex; +var int DataWeightmapSize; + +defaultproperties +{ + DataWeightmapIndex=-1 +} \ No newline at end of file diff --git a/exported/Engine/Classes/LandscapeProxy.uc b/exported/Engine/Classes/LandscapeProxy.uc new file mode 100755 index 00000000..9df996a5 --- /dev/null +++ b/exported/Engine/Classes/LandscapeProxy.uc @@ -0,0 +1,73 @@ +class LandscapeProxy extends Info + native(Terrain) + notplaceable + hidecategories(Navigation,Movement,Collision,Display,Attachment,Physics,Debug,Lighting,LOD); + +struct native LandscapeWeightmapUsage +{ + var export editinline LandscapeComponent ChannelUsage[4]; + + structdefaultproperties + { + ChannelUsage[0]=none + ChannelUsage[1]=none + ChannelUsage[2]=none + ChannelUsage[3]=none + } +}; + +struct native LandscapeLayerStruct +{ + var LandscapeLayerInfoObject LayerInfoObj; + var editoronly transient bool bSelected; + + structdefaultproperties + { + LayerInfoObj=none + bSelected=false + } +}; + +var const Guid LandscapeGuid; +var(LOD) int MaxLODLevel; +var(Landscape) PhysicalMaterial DefaultPhysMaterial; +var(Landscape) const float StreamingDistanceMultiplier; +var(Landscape) MaterialInterface LandscapeMaterial; +var(LOD) float LODDistanceFactor; +var const export editinline array LandscapeComponents; +var const export editinline array CollisionComponents; +var native const map{VOID,VOID} MaterialInstanceConstantMap; +var native const map{VOID,VOID} WeightmapUsageMap; +var(Lighting) float StaticLightingResolution; +var() transient Landscape LandscapeActor; +var const bool bIsProxy; +var editoronly transient bool bIsSetup; +var editoronly transient bool bResetup; +var editoronly transient bool bIsMovingToLevel; +var(Lightmass) LightmassPrimitiveSettings LightmassSettings; +var(LOD) int CollisionMipLevel; +var(LOD) int MobileLODBias; +var array LayerInfoObjs; +var const int ComponentSizeQuads; +var const int SubsectionSizeQuads; +var const int NumSubsections; + +defaultproperties +{ + MaxLODLevel=-1 + StreamingDistanceMultiplier=1.0000000 + LODDistanceFactor=1.0000000 + StaticLightingResolution=1.0000000 + bIsProxy=true + LightmassSettings=(bUseTwoSidedLighting=false,bShadowIndirectOnly=false,bUseEmissiveForStaticLighting=false,EmissiveLightFalloffExponent=2.0000000,EmissiveLightExplicitInfluenceRadius=0.0000000,EmissiveBoost=1.0000000,DiffuseBoost=1.0000000,SpecularBoost=1.0000000,FullyOccludedSamplesFraction=1.0000000) + DrawScale3D=(X=128.0000000,Y=128.0000000,Z=256.0000000) + bStatic=true + bHidden=false + bNoDelete=true + bWorldGeometry=true + bMovable=false + bCollideActors=true + bBlockActors=true + bEdShouldSnap=true + bLockLocation=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/LensFlare.uc b/exported/Engine/Classes/LensFlare.uc new file mode 100755 index 00000000..9239aabe --- /dev/null +++ b/exported/Engine/Classes/LensFlare.uc @@ -0,0 +1,155 @@ +class LensFlare extends Object + native(LensFlare) + hidecategories(Object); + +struct native transient LensFlareElementCurvePair +{ + var init string CurveName; + var init Object CurveObject; + + structdefaultproperties + { + CurveName="" + CurveObject=none + } +}; + +struct native LensFlareElement +{ + var() name ElementName; + var() float RayDistance; + var() bool bIsEnabled; + var() bool bUseSourceDistance; + var() bool bNormalizeRadialDistance; + var() bool bModulateColorBySource; + var() Vector Size; + var(Material) array LFMaterials; + var(Material) RawDistributionFloat LFMaterialIndex; + var(Scaling) RawDistributionFloat Scaling; + var(Scaling) RawDistributionVector AxisScaling; + var(Rotation) RawDistributionFloat Rotation; + var(Rotation) bool bOrientTowardsSource; + var(Color) RawDistributionVector Color; + var(Color) RawDistributionFloat Alpha; + var(Offset) RawDistributionVector Offset; + var(Scaling) RawDistributionVector DistMap_Scale; + var(Scaling) RawDistributionVector DistMap_Color; + var(Scaling) RawDistributionFloat DistMap_Alpha; + + structdefaultproperties + { + ElementName="None" + RayDistance=0.0000000 + bIsEnabled=false + bUseSourceDistance=false + bNormalizeRadialDistance=false + bModulateColorBySource=false + Size=(X=0.0000000,Y=0.0000000,Z=0.0000000) + LFMaterials=none + LFMaterialIndex=(Distribution=none,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Scaling=(Distribution=none,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + AxisScaling=(Distribution=none,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Rotation=(Distribution=none,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bOrientTowardsSource=false + Color=(Distribution=none,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Alpha=(Distribution=none,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Offset=(Distribution=none,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + DistMap_Scale=(Distribution=none,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + DistMap_Color=(Distribution=none,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + DistMap_Alpha=(Distribution=none,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + } +}; + +var export editinline LensFlareElement SourceElement; +var(Source) StaticMesh SourceMesh; +var const Scene.ESceneDepthPriorityGroup SourceDPG; +var(Reflections) const Scene.ESceneDepthPriorityGroup ReflectionsDPG; +var export editinline array Reflections; +var(Visibility) float OuterCone; +var(Visibility) float InnerCone; +var(Visibility) float ConeFudgeFactor; +var(Visibility) float Radius; +var(Visibility) bool bUseTrueConeCalculation; +var(Bounds) bool bUseFixedRelativeBoundingBox; +var(Debug) bool bRenderDebugLines; +var bool ThumbnailImageOutOfDate; +var(Visibility) float MinStrength; +var(Occlusion) RawDistributionFloat ScreenPercentageMap; +var(Bounds) Box FixedRelativeBoundingBox; +var export InterpCurveEdSetup CurveEdSetup; +var transient int ReflectionCount; +var Rotator ThumbnailAngle; +var float ThumbnailDistance; +var Texture2D ThumbnailImage; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__LensFlare.DistributionLFMaterialIndex' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLFMaterialIndex' + begin object name="DistributionLFMaterialIndex" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__LensFlare.DistributionScaling' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionScaling' + begin object name="DistributionScaling" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + // Reference: DistributionVectorConstant'Engine.Default__LensFlare.DistributionAxisScaling' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAxisScaling' + begin object name="DistributionAxisScaling" class=Engine.DistributionVectorConstant + Constant=(X=1.0000000,Y=1.0000000,Z=0.0000000) + end object + // Reference: DistributionFloatConstant'Engine.Default__LensFlare.DistributionRotation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionRotation' + begin object name="DistributionRotation" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionVectorConstant'Engine.Default__LensFlare.DistributionColor' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionColor' + begin object name="DistributionColor" class=Engine.DistributionVectorConstant + Constant=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + // Reference: DistributionFloatConstant'Engine.Default__LensFlare.DistributionAlpha' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAlpha' + begin object name="DistributionAlpha" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + // Reference: DistributionVectorConstant'Engine.Default__LensFlare.DistributionOffset' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionOffset' + begin object name="DistributionOffset" class=Engine.DistributionVectorConstant + end object + // Reference: DistributionVectorConstant'Engine.Default__LensFlare.DistributionDistMap_Scale' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDistMap_Scale' + begin object name="DistributionDistMap_Scale" class=Engine.DistributionVectorConstant + Constant=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + // Reference: DistributionVectorConstant'Engine.Default__LensFlare.DistributionDistMap_Color' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDistMap_Color' + begin object name="DistributionDistMap_Color" class=Engine.DistributionVectorConstant + Constant=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + // Reference: DistributionFloatConstant'Engine.Default__LensFlare.DistributionDistMap_Alpha' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDistMap_Alpha' + begin object name="DistributionDistMap_Alpha" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + // Reference: DistributionFloatConstantCurve'Engine.Default__LensFlare.DistributionScreenPercentageMap' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionScreenPercentageMap' + begin object name="DistributionScreenPercentageMap" class=Engine.DistributionFloatConstantCurve + ConstantCurve=(Points=((InVal=0.0000000,OutVal=0.0000000,ArriveTangent=0.0000000,LeaveTangent=0.0000000,InterpMode=EInterpCurveMode.CIM_Linear),(InVal=1.0000000,OutVal=1.0000000,ArriveTangent=0.0000000,LeaveTangent=0.0000000,InterpMode=EInterpCurveMode.CIM_Linear))) + end object + SourceElement=(ElementName="Source",RayDistance=0.0000000,bIsEnabled=true,bUseSourceDistance=false,bNormalizeRadialDistance=false,bModulateColorBySource=false,Size=(X=75.0000000,Y=75.0000000,Z=75.0000000),LFMaterials=none,LFMaterialIndex=(Distribution=Distribution=DistributionLFMaterialIndex,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000),Scaling=(Distribution=Distribution=DistributionScaling,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000),AxisScaling=(Distribution=Distribution=DistributionAxisScaling,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,1.0000000,1.0000000,1.0000000,0.0000000,1.0000000,1.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000),Rotation=(Distribution=Distribution=DistributionRotation,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000),bOrientTowardsSource=false,Color=(Distribution=Distribution=DistributionColor,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000),Alpha=(Distribution=Distribution=DistributionAlpha,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000),Offset=(Distribution=Distribution=DistributionOffset,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000),DistMap_Scale=(Distribution=Distribution=DistributionDistMap_Scale,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000),DistMap_Color=(Distribution=Distribution=DistributionDistMap_Color,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000),DistMap_Alpha=(Distribution=Distribution=DistributionDistMap_Alpha,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000)) + SourceDPG=ESceneDepthPriorityGroup.SDPG_World + ReflectionsDPG=ESceneDepthPriorityGroup.SDPG_Foreground + ConeFudgeFactor=0.5000000 + ScreenPercentageMap=(Distribution=Distribution=DistributionScreenPercentageMap,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,1.0000000,0.0000000,1.0000000),LookupTableTimeScale=1.0000000,LookupTableStartTime=0.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/LensFlareComponent.uc b/exported/Engine/Classes/LensFlareComponent.uc new file mode 100755 index 00000000..f9aaa10e --- /dev/null +++ b/exported/Engine/Classes/LensFlareComponent.uc @@ -0,0 +1,78 @@ +class LensFlareComponent extends PrimitiveComponent + native(LensFlare) + editinlinenew + hidecategories(Object,Physics,Collision); + +struct LensFlareElementInstance +{ +}; + +struct native LensFlareElementMaterials +{ + var() array ElementMaterials; + + structdefaultproperties + { + ElementMaterials=none + } +}; + +var() const LensFlare Template; +var const export editinline DrawLightConeComponent PreviewInnerCone; +var const export editinline DrawLightConeComponent PreviewOuterCone; +var const export editinline DrawLightRadiusComponent PreviewRadius; +var() bool bAutoActivate; +var transient bool bIsActive; +var transient bool bHasTranslucency; +var transient bool bHasUnlitTranslucency; +var transient bool bHasUnlitDistortion; +var transient bool bUsesSceneColor; +var transient bool bHasSeparateTranslucency; +var transient bool bUseTrueConeCalculation; +var bool bVisibleForMobile; +var transient float OuterCone; +var transient float InnerCone; +var transient float ConeFudgeFactor; +var transient float Radius; +var transient float MinStrength; +var(Rendering) LinearColor SourceColor; +var transient array Materials; +var native const Pointer ReleaseResourcesFence; +var transient float NextTraceTime; + +// Export ULensFlareComponent::execSetTemplate(FFrame&, void* const) +native final function SetTemplate(LensFlare NewTemplate, optional bool bForceSet = false); + +// Export ULensFlareComponent::execSetSourceColor(FFrame&, void* const) +native function SetSourceColor(LinearColor InSourceColor); + +// Export ULensFlareComponent::execSetIsActive(FFrame&, void* const) +native function SetIsActive(bool bInIsActive); + +// Export ULensFlareComponent::execGetMaterial(FFrame&, void* const) +native function MaterialInterface GetMaterial(int ElementIndex); + +// Export ULensFlareComponent::execSetMaterial(FFrame&, void* const) +native function SetMaterial(int ElementIndex, MaterialInterface Material); + +function MaterialInstanceConstant CreateAndSetMaterialInstanceConstant(int ElementIndex) +{ + local MaterialInstanceConstant Instance; + + Instance = new (self) Class'Engine.MaterialInstanceConstant'; + Instance.SetParent(GetMaterial(ElementIndex)); + SetMaterial(ElementIndex, Instance); + return Instance; + //return ReturnValue; +} + +defaultproperties +{ + bAutoActivate=true + SourceColor=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000) + ReplacementPrimitive=none + bFirstFrameOcclusion=true + bIgnoreNearPlaneIntersection=true + bTickInEditor=true + TickGroup=ETickingGroup.TG_PostAsyncWork +} \ No newline at end of file diff --git a/exported/Engine/Classes/LensFlareSource.uc b/exported/Engine/Classes/LensFlareSource.uc new file mode 100755 index 00000000..404ab2a2 --- /dev/null +++ b/exported/Engine/Classes/LensFlareSource.uc @@ -0,0 +1,121 @@ +class LensFlareSource extends Actor + native(LensFlare) + placeable + hidecategories(Navigation); + +var() const editconst export editinline LensFlareComponent LensFlareComp; +var repnotify bool bCurrentlyActive; + +replication +{ + // Pos:0x000 + if(bNoDelete) + bCurrentlyActive; +} + +// Export ULensFlareSource::execSetTemplate(FFrame&, void* const) +native final function SetTemplate(LensFlare NewTemplate); + +simulated event PostBeginPlay() +{ + bCurrentlyActive = LensFlareComp.bIsActive; + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x66 + if(Action.InputLinks[0].bHasImpulse) + { + LensFlareComp.SetIsActive(true); + bCurrentlyActive = true; + } + else + { + // End:0xCC + if(Action.InputLinks[1].bHasImpulse) + { + LensFlareComp.SetIsActive(false); + bCurrentlyActive = false; + } + else + { + // End:0x16E + if(Action.InputLinks[2].bHasImpulse) + { + // End:0x142 + if(!bCurrentlyActive) + { + LensFlareComp.SetIsActive(true); + bCurrentlyActive = true; + } + else + { + LensFlareComp.SetIsActive(false); + bCurrentlyActive = false; + } + } + } + } + LensFlareComp.LastRenderTime = WorldInfo.TimeSeconds; + ForceNetRelevant(); + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x7D + if(VarName == 'bCurrentlyActive') + { + LensFlareComp.SetIsActive(bCurrentlyActive); + LensFlareComp.LastRenderTime = WorldInfo.TimeSeconds; + } + //return; +} + +simulated function SetFloatParameter(name ParameterName, float Param) +{ + //return; +} + +simulated function SetVectorParameter(name ParameterName, Vector Param) +{ + //return; +} + +simulated function SetColorParameter(name ParameterName, LinearColor Param) +{ + //return; +} + +simulated function SetExtColorParameter(name ParameterName, float Red, float Green, float Blue, float Alpha) +{ + //return; +} + +simulated function SetActorParameter(name ParameterName, Actor Param) +{ + //return; +} + +defaultproperties +{ + // Reference: LensFlareComponent'Engine.Default__LensFlareSource.LensFlareComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'LensFlareComponent0' + begin object name="LensFlareComponent0" class=Engine.LensFlareComponent + ReplacementPrimitive=none + end object + LensFlareComp=LensFlareComponent0 + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=none + Components[4]=LensFlareComponent0 + Components[5]=none + TickGroup=ETickingGroup.TG_DuringAsyncWork + bNoDelete=true + bHardAttach=true + bGameRelevant=true + bEdShouldSnap=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/LevelGridVolume.uc b/exported/Engine/Classes/LevelGridVolume.uc new file mode 100755 index 00000000..9d883747 --- /dev/null +++ b/exported/Engine/Classes/LevelGridVolume.uc @@ -0,0 +1,59 @@ +class LevelGridVolume extends Volume + native + placeable + hidecategories(Navigation,Object,Movement,Display,Advanced,Attachment,Collision,Volume,Physics,Location) + autoexpandcategories(LevelGridVolume); + +enum LevelGridCellShape +{ + LGCS_Box, // 0 + LGCS_Hex, // 1 + LGCS_MAX // 2 +}; + +struct native LevelGridCellCoordinate +{ + var int X; + var int Y; + var int Z; + + structdefaultproperties + { + X=0 + Y=0 + Z=0 + } +}; + +var() const string LevelGridVolumeName; +var() const LevelGridVolume.LevelGridCellShape CellShape; +var() const int Subdivisions[3]; +var() const float LoadingDistance; +var() const float KeepLoadedRange; +var const transient KConvexElem CellConvexElem; + +defaultproperties +{ + Subdivisions[0]=1 + Subdivisions[1]=1 + Subdivisions[2]=1 + LoadingDistance=20480.0000000 + KeepLoadedRange=2048.0000000 + BrushColor=(R=80,G=80,B=80,A=255) + bColored=true + // Reference: BrushComponent'Engine.Default__LevelGridVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + CollideActors=false + BlockNonZeroExtent=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + Components[1]=none + bCollideActors=false + CollisionComponent=BrushComponent0 + SupportedEvents=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/LevelGridVolumeRenderingComponent.uc b/exported/Engine/Classes/LevelGridVolumeRenderingComponent.uc new file mode 100755 index 00000000..643190dc --- /dev/null +++ b/exported/Engine/Classes/LevelGridVolumeRenderingComponent.uc @@ -0,0 +1,12 @@ +class LevelGridVolumeRenderingComponent extends PrimitiveComponent + native + editinlinenew + hidecategories(Object); + +defaultproperties +{ + ReplacementPrimitive=none + HiddenGame=true + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/LevelStreaming.uc b/exported/Engine/Classes/LevelStreaming.uc new file mode 100755 index 00000000..e43d8a89 --- /dev/null +++ b/exported/Engine/Classes/LevelStreaming.uc @@ -0,0 +1,36 @@ +class LevelStreaming extends Object + abstract + native + editinlinenew; + +var() const editconst name PackageName; +var const transient Level LoadedLevel; +var() const Vector Offset; +var() const Matrix LevelTransform; +var const Vector OldOffset; +var const transient bool bIsVisible; +var const transient bool bHasLoadRequestPending; +var const transient bool bHasUnloadRequestPending; +var() editoronly const bool bShouldBeVisibleInEditor; +var const bool bBoundingBoxVisible; +var() const bool bLocked; +var() const bool bIsFullyStatic; +var const transient bool bShouldBeLoaded; +var const transient bool bShouldBeVisible; +var transient bool bShouldBlockOnLoad; +var() bool bDrawOnLevelStatusMap; +var const transient bool bIsRequestingUnloadAndRemoval; +var() bool bClientSideLevel; +var() const Color DrawColor; +var() const editconst array EditorStreamingVolumes; +var() float MinTimeBetweenVolumeUnloadRequests; +var const transient float LastVolumeUnloadRequestTime; +var() const editconst LevelGridVolume EditorGridVolume; +var() const editconst int GridPosition[3]; + +defaultproperties +{ + bDrawOnLevelStatusMap=true + DrawColor=(R=255,G=255,B=255,A=255) + MinTimeBetweenVolumeUnloadRequests=2.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/LevelStreamingAlwaysLoaded.uc b/exported/Engine/Classes/LevelStreamingAlwaysLoaded.uc new file mode 100755 index 00000000..3532eaea --- /dev/null +++ b/exported/Engine/Classes/LevelStreamingAlwaysLoaded.uc @@ -0,0 +1,5 @@ +class LevelStreamingAlwaysLoaded extends LevelStreaming + native + editinlinenew; + +var() bool bIsProceduralBuildingLODLevel; diff --git a/exported/Engine/Classes/LevelStreamingDistance.uc b/exported/Engine/Classes/LevelStreamingDistance.uc new file mode 100755 index 00000000..32848d19 --- /dev/null +++ b/exported/Engine/Classes/LevelStreamingDistance.uc @@ -0,0 +1,6 @@ +class LevelStreamingDistance extends LevelStreaming + native + editinlinenew; + +var() Vector Origin; +var() float MaxDistance; diff --git a/exported/Engine/Classes/LevelStreamingKismet.uc b/exported/Engine/Classes/LevelStreamingKismet.uc new file mode 100755 index 00000000..1c954262 --- /dev/null +++ b/exported/Engine/Classes/LevelStreamingKismet.uc @@ -0,0 +1,3 @@ +class LevelStreamingKismet extends LevelStreaming + native + editinlinenew; diff --git a/exported/Engine/Classes/LevelStreamingPersistent.uc b/exported/Engine/Classes/LevelStreamingPersistent.uc new file mode 100755 index 00000000..5822281b --- /dev/null +++ b/exported/Engine/Classes/LevelStreamingPersistent.uc @@ -0,0 +1,4 @@ +class LevelStreamingPersistent extends LevelStreaming + transient + native + editinlinenew; diff --git a/exported/Engine/Classes/LevelStreamingVolume.uc b/exported/Engine/Classes/LevelStreamingVolume.uc new file mode 100755 index 00000000..444866d1 --- /dev/null +++ b/exported/Engine/Classes/LevelStreamingVolume.uc @@ -0,0 +1,92 @@ +class LevelStreamingVolume extends Volume + native + placeable + hidecategories(Navigation,Object,Movement,Display,Advanced,Attachment,Collision,Volume); + +enum EStreamingVolumeUsage +{ + SVB_Loading, // 0 + SVB_LoadingAndVisibility, // 1 + SVB_VisibilityBlockingOnLoad, // 2 + SVB_BlockingOnLoad, // 3 + SVB_LoadingNotVisible, // 4 + SVB_MAX // 5 +}; + +struct CheckpointRecord +{ + var bool bDisabled; + + structdefaultproperties + { + bDisabled=false + } +}; + +var() noimport const editconst array StreamingLevels; +var() bool bEditorPreVisOnly; +var() bool bDisabled; +var() bool bTestDistanceToVolume; +var() LevelStreamingVolume.EStreamingVolumeUsage StreamingUsage; +var deprecated LevelStreamingVolume.EStreamingVolumeUsage Usage; +var() float TestVolumeDistance; + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x46 + if(Action.InputLinks[0].bHasImpulse) + { + bDisabled = false; + } + else + { + // End:0x8C + if(Action.InputLinks[1].bHasImpulse) + { + bDisabled = true; + } + else + { + // End:0xDB + if(Action.InputLinks[2].bHasImpulse) + { + bDisabled = !bDisabled; + } + } + } + //return; +} + +function CreateCheckpointRecord(out CheckpointRecord Record) +{ + Record.bDisabled = bDisabled; + //return; +} + +function ApplyCheckpointRecord(const out CheckpointRecord Record) +{ + bDisabled = Record.bDisabled; + //return; +} + +defaultproperties +{ + StreamingUsage=EStreamingVolumeUsage.SVB_LoadingAndVisibility + BrushColor=(R=255,G=165,B=0,A=255) + bColored=true + // Reference: BrushComponent'Engine.Default__LevelStreamingVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + CollideActors=false + BlockNonZeroExtent=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bCollideActors=false + bForceAllowKismetModification=true + CollisionComponent=BrushComponent0 + SupportedEvents[0]=Class'Engine.SeqEvent_Touch' +} \ No newline at end of file diff --git a/exported/Engine/Classes/LiftCenter.uc b/exported/Engine/Classes/LiftCenter.uc new file mode 100755 index 00000000..2090bd15 --- /dev/null +++ b/exported/Engine/Classes/LiftCenter.uc @@ -0,0 +1,119 @@ +class LiftCenter extends NavigationPoint + native + placeable + hidecategories(Navigation,Lighting,LightColor,Force); + +var InterpActor MyLift; +var float MaxDist2D; +var Vector LiftOffset; +var bool bJumpLift; +var float CollisionHeight; +var() Trigger LiftTrigger; + +event PostBeginPlay() +{ + super(Actor).PostBeginPlay(); + // End:0x86 + if((Base == MyLift) && MyLift != none) + { + LiftOffset = Location - MyLift.Location; + MyLift.bIsLift = true; + } + //return; +} + +event Actor SpecialHandling(Pawn Other) +{ + // End:0x49 + if(((MyLift == none) || LiftTrigger == none) || LiftTrigger.bRecentlyTriggered) + { + return self; + } + else + { + return LiftTrigger; + } + //return ReturnValue; +} + +event bool SuggestMovePreparation(Pawn Other) +{ + // End:0x2E + if(Other.Base == MyLift) + { + return false; + } + // End:0xB9 + if((Base != MyLift) || Location != (MyLift.Location + LiftOffset)) + { + SetLocation(MyLift.Location + LiftOffset); + SetBase(MyLift); + } + // End:0x138 + if(!IsZero(MyLift.Velocity) || !ProceedWithMove(Other)) + { + Other.Controller.WaitForMover(MyLift); + return true; + } + return false; + //return ReturnValue; +} + +function bool ProceedWithMove(Pawn Other) +{ + // End:0x29 + if(Other.Controller == none) + { + return false; + } + else + { + // End:0xEF + if((LiftExit(Other.Controller.MoveTarget) != none) && Other.ReachedDestination(self)) + { + return LiftExit(Other.Controller.MoveTarget).CanBeReachedFromLiftBy(Other); + } + else + { + // End:0x2DB + if((((Location.Z - CollisionHeight) < (((Other.Location.Z - Other.GetCollisionHeight()) + Other.MaxStepHeight) + 2.0000000)) && (Location.Z - CollisionHeight) > ((Other.Location.Z - Other.GetCollisionHeight()) - float(1200))) && (VSize2D(Location - Other.Location) < MaxDist2D) || (IsZero(MyLift.Velocity) && Other.ValidAnchor()) && LiftExit(Other.Anchor) != none) + { + return true; + } + } + } + // End:0x360 + if(((LiftTrigger != none) && !LiftTrigger.bRecentlyTriggered) && IsZero(MyLift.Velocity)) + { + Other.SetMoveTarget(LiftTrigger); + return true; + } + return false; + //return ReturnValue; +} + +defaultproperties +{ + MaxDist2D=400.0000000 + CollisionHeight=50.0000000 + bNeverUseStrafing=true + bForceNoStrafing=true + bSpecialMove=true + bNoAutoConnect=true + ExtraCost=400 + // Reference: CylinderComponent'Engine.Default__LiftCenter.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + bStatic=false + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/LiftExit.uc b/exported/Engine/Classes/LiftExit.uc new file mode 100755 index 00000000..8543e54a --- /dev/null +++ b/exported/Engine/Classes/LiftExit.uc @@ -0,0 +1,97 @@ +class LiftExit extends NavigationPoint + native + placeable + hidecategories(Navigation,Lighting,LightColor,Force); + +var() LiftCenter MyLiftCenter; +var() bool bExitOnly; + +function bool CanBeReachedFromLiftBy(Pawn Other) +{ + return (Location.Z < (Other.Location.Z + Other.GetCollisionHeight())) && Other.LineOfSightTo(self); + //return ReturnValue; +} + +function WaitForLift(Pawn Other) +{ + // End:0xAF + if(MyLiftCenter != none) + { + Other.SetDesiredRotation(Rotator(Location - Other.Location)); + Other.Controller.WaitForMover(MyLiftCenter.MyLift); + } + //return; +} + +event bool SuggestMovePreparation(Pawn Other) +{ + local Controller C; + + // End:0x37 + if((MyLiftCenter == none) || Other.Controller == none) + { + return false; + } + // End:0x10E + if(int(Other.Physics) == int(4)) + { + // End:0x10C + if(Other.AirSpeed > float(0)) + { + Other.Controller.MoveTimer = 2.0000000 + (VSize(Location - Other.Location) / Other.AirSpeed); + } + return false; + } + // End:0x1AC + if((Other.Base == MyLiftCenter.Base) || Other.ReachedDestination(MyLiftCenter)) + { + // End:0x194 + if(CanBeReachedFromLiftBy(Other)) + { + return false; + } + WaitForLift(Other); + return true; + } + else + { + // End:0x33C + if(MyLiftCenter != none) + { + // End:0x307 + foreach WorldInfo.AllControllers(Class'Engine.Controller', C) + { + // End:0x306 + if((((C.Pawn != none) && C.PendingMover == MyLiftCenter.MyLift) && WorldInfo.GRI.OnSameTeam(C, Other.Controller)) && C.Pawn.ReachedDestination(self)) + { + WaitForLift(Other); + return true; + } + } + Other.Controller.ReadyForLift(); + } + } + return false; + //return ReturnValue; +} + +defaultproperties +{ + bNeverUseStrafing=true + bForceNoStrafing=true + bSpecialMove=true + // Reference: CylinderComponent'Engine.Default__LiftExit.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/Light.uc b/exported/Engine/Classes/Light.uc new file mode 100755 index 00000000..46b4008a --- /dev/null +++ b/exported/Engine/Classes/Light.uc @@ -0,0 +1,72 @@ +class Light extends Actor + native(Light) + notplaceable + hidecategories(Navigation) + classgroup(Lights); + +var() const editconst export editinline LightComponent LightComponent; +var repnotify bool bEnabled; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + bEnabled; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x43 + if(VarName == 'bEnabled') + { + LightComponent.SetEnabled(bEnabled); + } + else + { + super.ReplicatedEvent(VarName); + } + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x198 + if(!bStatic) + { + // End:0x69 + if(Action.InputLinks[0].bHasImpulse) + { + LightComponent.SetEnabled(true); + } + else + { + // End:0xC3 + if(Action.InputLinks[1].bHasImpulse) + { + LightComponent.SetEnabled(false); + } + else + { + // End:0x13B + if(Action.InputLinks[2].bHasImpulse) + { + LightComponent.SetEnabled(!LightComponent.bEnabled); + } + } + } + bEnabled = LightComponent.bEnabled; + ForceNetRelevant(); + SetForcedInitialReplicatedProperty(BoolProperty'Engine.Light.bEnabled', bEnabled == default.bEnabled); + } + //return; +} + +defaultproperties +{ + Components[0]=none + bStatic=true + bHidden=true + bNoDelete=true + bRouteBeginPlayEvenIfStatic=false + bMovable=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/LightComponent.uc b/exported/Engine/Classes/LightComponent.uc new file mode 100755 index 00000000..56e327ee --- /dev/null +++ b/exported/Engine/Classes/LightComponent.uc @@ -0,0 +1,227 @@ +class LightComponent extends ActorComponent + abstract + native(Light) + noexport; + +enum ELightAffectsClassification +{ + LAC_USER_SELECTED, // 0 + LAC_DYNAMIC_AFFECTING, // 1 + LAC_STATIC_AFFECTING, // 2 + LAC_DYNAMIC_AND_STATIC_AFFECTING,// 3 + LAC_MAX // 4 +}; + +enum ELightShadowMode +{ + LightShadow_Normal, // 0 + LightShadow_Modulate, // 1 + LightShadow_ModulateBetter, // 2 + LightShadow_MAX // 3 +}; + +enum EShadowProjectionTechnique +{ + ShadowProjTech_Default, // 0 + ShadowProjTech_PCF, // 1 + ShadowProjTech_VSM, // 2 + ShadowProjTech_BPCF_Low, // 3 + ShadowProjTech_BPCF_Medium, // 4 + ShadowProjTech_BPCF_High, // 5 + ShadowProjTech_MAX // 6 +}; + +enum EShadowFilterQuality +{ + SFQ_Low, // 0 + SFQ_Medium, // 1 + SFQ_High, // 2 + SFQ_MAX // 3 +}; + +struct LightingChannelContainer +{ + var bool bInitialized; + var() bool BSP; + var() bool Static; + var() bool Dynamic; + var() bool CompositeDynamic; + var() bool Skybox; + var() bool Unnamed_1; + var() bool Unnamed_2; + var() bool Unnamed_3; + var() bool Unnamed_4; + var() bool Unnamed_5; + var() bool Unnamed_6; + var() bool Cinematic_1; + var() bool Cinematic_2; + var() bool Cinematic_3; + var() bool Cinematic_4; + var() bool Cinematic_5; + var() bool Cinematic_6; + var() bool Cinematic_7; + var() bool Cinematic_8; + var() bool Cinematic_9; + var() bool Cinematic_10; + var() bool Gameplay_1; + var() bool Gameplay_2; + var() bool Gameplay_3; + var() bool Gameplay_4; + var() bool Crowd; + + structdefaultproperties + { + bInitialized=false + BSP=false + Static=false + Dynamic=false + CompositeDynamic=false + Skybox=false + Unnamed_1=false + Unnamed_2=false + Unnamed_3=false + Unnamed_4=false + Unnamed_5=false + Unnamed_6=false + Cinematic_1=false + Cinematic_2=false + Cinematic_3=false + Cinematic_4=false + Cinematic_5=false + Cinematic_6=false + Cinematic_7=false + Cinematic_8=false + Cinematic_9=false + Cinematic_10=false + Gameplay_1=false + Gameplay_2=false + Gameplay_3=false + Gameplay_4=false + Crowd=false + } +}; + +var private noimport native const transient Pointer SceneInfo; +var native const transient Matrix WorldToLight; +var native const transient Matrix LightToWorld; +var duplicatetransient const Guid LightGuid; +var duplicatetransient const Guid LightmapGuid; +var() interp const float Brightness; +var() interp const Color LightColor; +var() const export editinline LightFunction Function; +var() const bool bEnabled; +var() const bool CastShadows; +var() const bool CastStaticShadows; +var() bool CastDynamicShadows; +var() bool bCastCompositeShadow; +var() bool bAffectCompositeShadowDirection; +var() bool bNonModulatedSelfShadowing; +var() interp bool bSelfShadowOnly; +var bool bAllowPreShadow; +var const bool bForceDynamicLight; +var const bool UseDirectLightMap; +var const bool bHasLightEverBeenBuiltIntoLightMap; +var const bool bCanAffectDynamicPrimitivesOutsideDynamicChannel; +var(LightShafts) bool bRenderLightShafts; +var(ImageReflection) bool bUseImageReflectionSpecular; +var protected const bool bPrecomputedLightingIsValid; +var protected const bool bExplicitlyAssignedLight; +var() bool bAllowCompositingIntoDLE; +var const export editinline LightEnvironmentComponent LightEnvironment; +var() const LightingChannelContainer LightingChannels; +var() const editconst LightComponent.ELightAffectsClassification LightAffectsClassification; +var() LightComponent.ELightShadowMode LightShadowMode; +var() LinearColor ModShadowColor; +var float ModShadowFadeoutTime; +var float ModShadowFadeoutExponent; +var duplicatetransient native const int LightListIndex; +var LightComponent.EShadowProjectionTechnique ShadowProjectionTechnique; +var() LightComponent.EShadowFilterQuality ShadowFilterQuality; +var() int MinShadowResolution; +var() int MaxShadowResolution; +var() int ShadowFadeResolution; +var(LightShafts) float OcclusionDepthRange; +var(LightShafts) interp float BloomScale; +var(LightShafts) float BloomThreshold; +var(LightShafts) float BloomScreenBlendThreshold; +var(LightShafts) interp Color BloomTint; +var(LightShafts) float RadialBlurPercent; +var(LightShafts) interp float OcclusionMaskDarkness; +var(ImageReflection) float ReflectionSpecularBrightness; +var() const Scene.EDetailMode DetailMode; + +// Export ULightComponent::execSetEnabled(FFrame&, void* const) +native final function SetEnabled(bool bSetEnabled); + +// Export ULightComponent::execSetLightProperties(FFrame&, void* const) +native final function SetLightProperties(optional float NewBrightness = Brightness, optional Color NewLightColor = LightColor, optional LightFunction NewLightFunction = Function); + +// Export ULightComponent::execGetOrigin(FFrame&, void* const) +native final function Vector GetOrigin(); + +// Export ULightComponent::execGetDirection(FFrame&, void* const) +native final function Vector GetDirection(); + +// Export ULightComponent::execUpdateColorAndBrightness(FFrame&, void* const) +native final function UpdateColorAndBrightness(); + +// Export ULightComponent::execUpdateLightShaftParameters(FFrame&, void* const) +native final function UpdateLightShaftParameters(); + +// Export ULightComponent::execSetDetailMode(FFrame&, void* const) +native final function SetDetailMode(Scene.EDetailMode NewDetailMode); + +function OnUpdatePropertyBloomScale() +{ + UpdateLightShaftParameters(); + //return; +} + +function OnUpdatePropertyBloomTint() +{ + UpdateLightShaftParameters(); + //return; +} + +function OnUpdatePropertyOcclusionMaskDarkness() +{ + UpdateLightShaftParameters(); + //return; +} + +function OnUpdatePropertyBrightness() +{ + UpdateColorAndBrightness(); + //return; +} + +function OnUpdatePropertyLightColor() +{ + UpdateColorAndBrightness(); + //return; +} + +defaultproperties +{ + Brightness=1.0000000 + LightColor=(R=255,G=255,B=255,A=0) + bEnabled=true + CastShadows=true + CastStaticShadows=true + CastDynamicShadows=true + bCastCompositeShadow=true + bAffectCompositeShadowDirection=true + bPrecomputedLightingIsValid=true + bAllowCompositingIntoDLE=true + LightingChannels=(bInitialized=true,BSP=true,Static=true,Dynamic=true,CompositeDynamic=true,Skybox=false,Unnamed_1=false,Unnamed_2=false,Unnamed_3=false,Unnamed_4=false,Unnamed_5=false,Unnamed_6=false,Cinematic_1=false,Cinematic_2=false,Cinematic_3=false,Cinematic_4=false,Cinematic_5=false,Cinematic_6=false,Cinematic_7=false,Cinematic_8=false,Cinematic_9=false,Cinematic_10=false,Gameplay_1=false,Gameplay_2=false,Gameplay_3=false,Gameplay_4=false,Crowd=false) + LightShadowMode=ELightShadowMode.LightShadow_Modulate + ModShadowColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + ModShadowFadeoutExponent=3.0000000 + OcclusionDepthRange=20000.0000000 + BloomScale=2.0000000 + BloomScreenBlendThreshold=1.0000000 + BloomTint=(R=255,G=255,B=255,A=0) + RadialBlurPercent=100.0000000 + OcclusionMaskDarkness=0.3000000 + ReflectionSpecularBrightness=0.2000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/LightEnvironmentComponent.uc b/exported/Engine/Classes/LightEnvironmentComponent.uc new file mode 100755 index 00000000..dc88fab7 --- /dev/null +++ b/exported/Engine/Classes/LightEnvironmentComponent.uc @@ -0,0 +1,24 @@ +class LightEnvironmentComponent extends ActorComponent + native(Light); + +var() protected const bool bEnabled; +var bool bForceNonCompositeDynamicLights; +var bool bAllowDynamicShadowsOnTranslucency; +var protected const transient bool bAllowPreShadow; +var protected const transient bool bTranslucencyShadowed; +var protected const transient float DominantShadowFactor; +var protected const export editinline transient LightComponent AffectingDominantLight; +var protected const export editinline transient array AffectedComponents; + +// Export ULightEnvironmentComponent::execSetEnabled(FFrame&, void* const) +native final function SetEnabled(bool bNewEnabled); + +// Export ULightEnvironmentComponent::execIsEnabled(FFrame&, void* const) +native final function bool IsEnabled(); + +defaultproperties +{ + bEnabled=true + bAllowPreShadow=true + DominantShadowFactor=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/LightFunction.uc b/exported/Engine/Classes/LightFunction.uc new file mode 100755 index 00000000..3933576d --- /dev/null +++ b/exported/Engine/Classes/LightFunction.uc @@ -0,0 +1,15 @@ +class LightFunction extends Object + native(Light) + editinlinenew + collapsecategories + hidecategories(Object); + +var() const MaterialInterface SourceMaterial; +var() Vector Scale; +var() float DisabledBrightness; + +defaultproperties +{ + Scale=(X=1024.0000000,Y=1024.0000000,Z=1024.0000000) + DisabledBrightness=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/LightmappedSurfaceCollection.uc b/exported/Engine/Classes/LightmappedSurfaceCollection.uc new file mode 100755 index 00000000..12718573 --- /dev/null +++ b/exported/Engine/Classes/LightmappedSurfaceCollection.uc @@ -0,0 +1,7 @@ +class LightmappedSurfaceCollection extends Object + native + editinlinenew + hidecategories(Object); + +var() Model SourceModel; +var() array Surfaces; diff --git a/exported/Engine/Classes/LightmassCharacterIndirectDetailVolume.uc b/exported/Engine/Classes/LightmassCharacterIndirectDetailVolume.uc new file mode 100755 index 00000000..274efe37 --- /dev/null +++ b/exported/Engine/Classes/LightmassCharacterIndirectDetailVolume.uc @@ -0,0 +1,24 @@ +class LightmassCharacterIndirectDetailVolume extends Volume + native + placeable + hidecategories(Navigation,Object,Movement,Display,Collision,Brush,Attachment,Physics,Volume); + +defaultproperties +{ + BrushColor=(R=155,G=185,B=25,A=255) + bColored=true + // Reference: BrushComponent'Engine.Default__LightmassCharacterIndirectDetailVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + RBChannel=ERBCollisionChannel.RBCC_Nothing + CollideActors=false + BlockNonZeroExtent=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bCollideActors=false + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/LightmassImportanceVolume.uc b/exported/Engine/Classes/LightmassImportanceVolume.uc new file mode 100755 index 00000000..b0721f97 --- /dev/null +++ b/exported/Engine/Classes/LightmassImportanceVolume.uc @@ -0,0 +1,24 @@ +class LightmassImportanceVolume extends Volume + native + placeable + hidecategories(Navigation,Object,Movement,Display,Collision,Brush,Attachment,Physics,Volume); + +defaultproperties +{ + BrushColor=(R=255,G=255,B=25,A=255) + bColored=true + // Reference: BrushComponent'Engine.Default__LightmassImportanceVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + RBChannel=ERBCollisionChannel.RBCC_Nothing + CollideActors=false + BlockNonZeroExtent=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bCollideActors=false + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/LightmassLevelSettings.uc b/exported/Engine/Classes/LightmassLevelSettings.uc new file mode 100755 index 00000000..4e4e176d --- /dev/null +++ b/exported/Engine/Classes/LightmassLevelSettings.uc @@ -0,0 +1,31 @@ +class LightmassLevelSettings extends Object + native + hidecategories(Object); + +var(General) int NumIndirectLightingBounces; +var(General) Color EnvironmentColor; +var(General) float EnvironmentIntensity; +var(General) float EmissiveBoost; +var(General) float DiffuseBoost; +var float SpecularBoost; +var(Occlusion) bool bUseAmbientOcclusion; +var(Occlusion) bool bVisualizeAmbientOcclusion; +var(Occlusion) float DirectIlluminationOcclusionFraction; +var(Occlusion) float IndirectIlluminationOcclusionFraction; +var(Occlusion) float OcclusionExponent; +var(Occlusion) float FullyOccludedSamplesFraction; +var(Occlusion) float MaxOcclusionDistance; + +defaultproperties +{ + NumIndirectLightingBounces=3 + EnvironmentIntensity=1.0000000 + EmissiveBoost=1.0000000 + DiffuseBoost=5.0000000 + SpecularBoost=1.0000000 + DirectIlluminationOcclusionFraction=0.5000000 + IndirectIlluminationOcclusionFraction=1.0000000 + OcclusionExponent=1.0000000 + FullyOccludedSamplesFraction=1.0000000 + MaxOcclusionDistance=200.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/LightmassPrimitiveSettingsObject.uc b/exported/Engine/Classes/LightmassPrimitiveSettingsObject.uc new file mode 100755 index 00000000..d5f3fa1e --- /dev/null +++ b/exported/Engine/Classes/LightmassPrimitiveSettingsObject.uc @@ -0,0 +1,11 @@ +class LightmassPrimitiveSettingsObject extends Object + native + editinlinenew + hidecategories(Object); + +var(Lightmass) LightmassPrimitiveSettings LightmassSettings; + +defaultproperties +{ + LightmassSettings=(bUseTwoSidedLighting=false,bShadowIndirectOnly=false,bUseEmissiveForStaticLighting=false,EmissiveLightFalloffExponent=2.0000000,EmissiveLightExplicitInfluenceRadius=0.0000000,EmissiveBoost=1.0000000,DiffuseBoost=1.0000000,SpecularBoost=1.0000000,FullyOccludedSamplesFraction=1.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/LineBatchComponent.uc b/exported/Engine/Classes/LineBatchComponent.uc new file mode 100755 index 00000000..a8faa5d5 --- /dev/null +++ b/exported/Engine/Classes/LineBatchComponent.uc @@ -0,0 +1,14 @@ +class LineBatchComponent extends PrimitiveComponent + native + noexport; + +var native const noexport Pointer FPrimitiveDrawInterfaceVfTable; +var native const noexport Pointer FPrimitiveDrawInterfaceView; +var native const transient array BatchedLines; +var native const transient array BatchedPoints; +var native const transient float DefaultLifeTime; + +defaultproperties +{ + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/LocalMessage.uc b/exported/Engine/Classes/LocalMessage.uc new file mode 100755 index 00000000..a23750a2 --- /dev/null +++ b/exported/Engine/Classes/LocalMessage.uc @@ -0,0 +1,97 @@ +class LocalMessage extends Object + abstract; + +var bool bIsSpecial; +var bool bIsUnique; +var bool bIsPartiallyUnique; +var bool bIsConsoleMessage; +var bool bBeep; +var bool bCountInstances; +var float Lifetime; +var Color DrawColor; +var float PosY; +var int FontSize; + +static function ClientReceive(PlayerController P, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject) +{ + local string MessageString; + + MessageString = GetString(Switch, RelatedPRI_1 == P.PlayerReplicationInfo, RelatedPRI_1, RelatedPRI_2, OptionalObject); + // End:0x2B1 + if(MessageString != "") + { + // End:0x1B8 + if(P.myHUD != none) + { + P.myHUD.LocalizedMessage(default.Class, RelatedPRI_1, RelatedPRI_2, MessageString, Switch, GetPos(Switch, P.myHUD), GetLifeTime(Switch), GetFontSize(Switch, RelatedPRI_1, RelatedPRI_2, P.PlayerReplicationInfo), GetColor(Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject), OptionalObject); + } + // End:0x2B1 + if(((IsConsoleMessage(Switch)) && LocalPlayer(P.Player) != none) && LocalPlayer(P.Player).ViewportClient != none) + { + LocalPlayer(P.Player).ViewportClient.ViewportConsole.OutputText(MessageString); + } + } + //return; +} + +static function string GetString(optional int Switch, optional bool bPRI1HUD, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject) +{ + // End:0x61 + if(Class(OptionalObject) != none) + { + return Class(OptionalObject).static.GetLocalString(Switch, RelatedPRI_1, RelatedPRI_2); + } + return ""; + //return ReturnValue; +} + +static function Color GetConsoleColor(PlayerReplicationInfo RelatedPRI_1) +{ + return default.DrawColor; + //return ReturnValue; +} + +static function Color GetColor(optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject) +{ + return default.DrawColor; + //return ReturnValue; +} + +static function float GetPos(int Switch, HUD myHUD) +{ + return default.PosY; + //return ReturnValue; +} + +static function int GetFontSize(int Switch, PlayerReplicationInfo RelatedPRI1, PlayerReplicationInfo RelatedPRI2, PlayerReplicationInfo LocalPlayer) +{ + return default.FontSize; + //return ReturnValue; +} + +static function float GetLifeTime(int Switch) +{ + return default.Lifetime; + //return ReturnValue; +} + +static function bool IsConsoleMessage(int Switch) +{ + return default.bIsConsoleMessage; + //return ReturnValue; +} + +static function bool PartiallyDuplicates(int Switch1, int Switch2, Object OptionalObject1, Object OptionalObject2) +{ + return Switch1 == Switch2; + //return ReturnValue; +} + +defaultproperties +{ + bIsSpecial=true + bIsConsoleMessage=true + Lifetime=3.0000000 + DrawColor=(R=255,G=255,B=255,A=255) + PosY=0.8300000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/LocalPlayer.uc b/exported/Engine/Classes/LocalPlayer.uc new file mode 100755 index 00000000..df78ca59 --- /dev/null +++ b/exported/Engine/Classes/LocalPlayer.uc @@ -0,0 +1,439 @@ +class LocalPlayer extends Player within Engine + transient + native + config(Engine); + +struct SynchronizedActorVisibilityHistory +{ + var Pointer State; + var Pointer CriticalSection; + + structdefaultproperties + { + State=() + CriticalSection=() + } +}; + +struct native CurrentPostProcessVolumeInfo +{ + var PostProcessSettings LastSettings; + var PostProcessVolume LastVolumeUsed; + var float BlendStartTime; + var float LastBlendTime; + + structdefaultproperties + { + LastSettings=(bOverride_EnableBloom=true,bOverride_EnableDOF=true,bOverride_EnableMotionBlur=true,bOverride_EnableSceneEffect=true,bOverride_AllowAmbientOcclusion=true,bOverride_OverrideRimShaderColor=true,bOverride_Bloom_Scale=true,bOverride_Bloom_Threshold=true,bOverride_Bloom_Tint=true,bOverride_Bloom_ScreenBlendThreshold=true,bOverride_Bloom_InterpolationDuration=true,bOverride_DOF_FalloffExponent=true,bOverride_DOF_BlurKernelSize=true,bOverride_DOF_BlurBloomKernelSize=true,bOverride_DOF_MaxNearBlurAmount=true,bOverride_DOF_MinBlurAmount=false,bOverride_DOF_MaxFarBlurAmount=true,bOverride_DOF_FocusType=true,bOverride_DOF_FocusInnerRadius=true,bOverride_DOF_FocusDistance=true,bOverride_DOF_FocusPosition=true,bOverride_DOF_InterpolationDuration=true,bOverride_DOF_BokehTexture=false,bOverride_MotionBlur_MaxVelocity=false,bOverride_MotionBlur_Amount=false,bOverride_MotionBlur_FullMotionBlur=false,bOverride_MotionBlur_CameraRotationThreshold=false,bOverride_MotionBlur_CameraTranslationThreshold=false,bOverride_MotionBlur_InterpolationDuration=false,bOverride_Scene_Desaturation=true,bOverride_Scene_Colorize=false,bOverride_Scene_TonemapperScale=false,bOverride_Scene_ImageGrainScale=false,bOverride_Scene_HighLights=true,bOverride_Scene_MidTones=true,bOverride_Scene_Shadows=true,bOverride_Scene_InterpolationDuration=true,bOverride_Scene_ColorGradingLUT=false,bOverride_RimShader_Color=true,bOverride_RimShader_InterpolationDuration=true,bOverride_MobileColorGrading=false,bEnableBloom=true,bEnableDOF=false,bEnableMotionBlur=true,bEnableSceneEffect=true,bAllowAmbientOcclusion=true,bOverrideRimShaderColor=false,Bloom_Scale=1.0000000,Bloom_Threshold=1.0000000,Bloom_Tint=(R=255,G=255,B=255,A=0),Bloom_ScreenBlendThreshold=10.0000000,Bloom_InterpolationDuration=1.0000000,DOF_BlurBloomKernelSize=16.0000000,DOF_FalloffExponent=4.0000000,DOF_BlurKernelSize=16.0000000,DOF_MaxNearBlurAmount=1.0000000,DOF_MinBlurAmount=0.0000000,DOF_MaxFarBlurAmount=1.0000000,DOF_FocusType=EFocusType.FOCUS_Distance,DOF_FocusInnerRadius=2000.0000000,DOF_FocusDistance=0.0000000,DOF_FocusPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000),DOF_InterpolationDuration=1.0000000,DOF_BokehTexture=none,MotionBlur_MaxVelocity=1.0000000,MotionBlur_Amount=0.5000000,MotionBlur_FullMotionBlur=true,MotionBlur_CameraRotationThreshold=45.0000000,MotionBlur_CameraTranslationThreshold=10000.0000000,MotionBlur_InterpolationDuration=1.0000000,Scene_Desaturation=0.0000000,Scene_Colorize=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_TonemapperScale=1.0000000,Scene_ImageGrainScale=0.0000000,Scene_HighLights=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_MidTones=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_Shadows=(X=0.0000000,Y=0.0000000,Z=0.0000000),Scene_InterpolationDuration=1.0000000,RimShader_Color=(R=0.4704400,G=0.5859730,B=0.8277260,A=1.0000000),RimShader_InterpolationDuration=1.0000000,ColorGrading_LookupTable=none,ColorGradingLUT=(LUTTextures=none,LUTWeights=none),MobileColorGrading=(TransitionTime=1.0000000,Blend=0.0000000,Desaturation=0.0000000,HighLights=(R=0.7000000,G=0.7000000,B=0.7000000,A=1.0000000),MidTones=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000),Shadows=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000)),MobilePostProcess=(bOverride_Mobile_BlurAmount=false,bOverride_Mobile_TransitionTime=false,bOverride_Mobile_Bloom_Scale=false,bOverride_Mobile_Bloom_Threshold=false,bOverride_Mobile_Bloom_Tint=false,bOverride_Mobile_DOF_Distance=false,bOverride_Mobile_DOF_MinRange=false,bOverride_Mobile_DOF_MaxRange=false,bOverride_Mobile_DOF_NearBlurFactor=false,bOverride_Mobile_DOF_FarBlurFactor=false,Mobile_BlurAmount=16.0000000,Mobile_TransitionTime=1.0000000,Mobile_Bloom_Scale=6.0000000,Mobile_Bloom_Threshold=0.5000000,Mobile_Bloom_Tint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000),Mobile_DOF_Distance=1500.0000000,Mobile_DOF_MinRange=600.0000000,Mobile_DOF_MaxRange=1200.0000000,Mobile_DOF_NearBlurFactor=1.0000000,Mobile_DOF_FarBlurFactor=1.0000000),Death_Enable=false,Death_DesatAlpha=0.0000000,Hit_Enable=false,Hit_FadeAlpha=0.0000000,ColorBlind_Enable=false,ColorBlind_Mode=0) + LastVolumeUsed=none + BlendStartTime=0.0000000 + LastBlendTime=0.0000000 + } +}; + +struct native PostProcessSettingsOverride +{ + var PostProcessSettings Settings; + var bool bBlendingIn; + var bool bBlendingOut; + var float CurrentBlendInTime; + var float CurrentBlendOutTime; + var float BlendInDuration; + var float BlendOutDuration; + var float BlendStartTime; + var InterpCurveFloat TimeAlphaCurve; + + structdefaultproperties + { + Settings=(bOverride_EnableBloom=true,bOverride_EnableDOF=true,bOverride_EnableMotionBlur=true,bOverride_EnableSceneEffect=true,bOverride_AllowAmbientOcclusion=true,bOverride_OverrideRimShaderColor=true,bOverride_Bloom_Scale=true,bOverride_Bloom_Threshold=true,bOverride_Bloom_Tint=true,bOverride_Bloom_ScreenBlendThreshold=true,bOverride_Bloom_InterpolationDuration=true,bOverride_DOF_FalloffExponent=true,bOverride_DOF_BlurKernelSize=true,bOverride_DOF_BlurBloomKernelSize=true,bOverride_DOF_MaxNearBlurAmount=true,bOverride_DOF_MinBlurAmount=false,bOverride_DOF_MaxFarBlurAmount=true,bOverride_DOF_FocusType=true,bOverride_DOF_FocusInnerRadius=true,bOverride_DOF_FocusDistance=true,bOverride_DOF_FocusPosition=true,bOverride_DOF_InterpolationDuration=true,bOverride_DOF_BokehTexture=false,bOverride_MotionBlur_MaxVelocity=false,bOverride_MotionBlur_Amount=false,bOverride_MotionBlur_FullMotionBlur=false,bOverride_MotionBlur_CameraRotationThreshold=false,bOverride_MotionBlur_CameraTranslationThreshold=false,bOverride_MotionBlur_InterpolationDuration=false,bOverride_Scene_Desaturation=true,bOverride_Scene_Colorize=false,bOverride_Scene_TonemapperScale=false,bOverride_Scene_ImageGrainScale=false,bOverride_Scene_HighLights=true,bOverride_Scene_MidTones=true,bOverride_Scene_Shadows=true,bOverride_Scene_InterpolationDuration=true,bOverride_Scene_ColorGradingLUT=false,bOverride_RimShader_Color=true,bOverride_RimShader_InterpolationDuration=true,bOverride_MobileColorGrading=false,bEnableBloom=true,bEnableDOF=false,bEnableMotionBlur=true,bEnableSceneEffect=true,bAllowAmbientOcclusion=true,bOverrideRimShaderColor=false,Bloom_Scale=1.0000000,Bloom_Threshold=1.0000000,Bloom_Tint=(R=255,G=255,B=255,A=0),Bloom_ScreenBlendThreshold=10.0000000,Bloom_InterpolationDuration=1.0000000,DOF_BlurBloomKernelSize=16.0000000,DOF_FalloffExponent=4.0000000,DOF_BlurKernelSize=16.0000000,DOF_MaxNearBlurAmount=1.0000000,DOF_MinBlurAmount=0.0000000,DOF_MaxFarBlurAmount=1.0000000,DOF_FocusType=EFocusType.FOCUS_Distance,DOF_FocusInnerRadius=2000.0000000,DOF_FocusDistance=0.0000000,DOF_FocusPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000),DOF_InterpolationDuration=1.0000000,DOF_BokehTexture=none,MotionBlur_MaxVelocity=1.0000000,MotionBlur_Amount=0.5000000,MotionBlur_FullMotionBlur=true,MotionBlur_CameraRotationThreshold=45.0000000,MotionBlur_CameraTranslationThreshold=10000.0000000,MotionBlur_InterpolationDuration=1.0000000,Scene_Desaturation=0.0000000,Scene_Colorize=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_TonemapperScale=1.0000000,Scene_ImageGrainScale=0.0000000,Scene_HighLights=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_MidTones=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_Shadows=(X=0.0000000,Y=0.0000000,Z=0.0000000),Scene_InterpolationDuration=1.0000000,RimShader_Color=(R=0.4704400,G=0.5859730,B=0.8277260,A=1.0000000),RimShader_InterpolationDuration=1.0000000,ColorGrading_LookupTable=none,ColorGradingLUT=(LUTTextures=none,LUTWeights=none),MobileColorGrading=(TransitionTime=1.0000000,Blend=0.0000000,Desaturation=0.0000000,HighLights=(R=0.7000000,G=0.7000000,B=0.7000000,A=1.0000000),MidTones=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000),Shadows=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000)),MobilePostProcess=(bOverride_Mobile_BlurAmount=false,bOverride_Mobile_TransitionTime=false,bOverride_Mobile_Bloom_Scale=false,bOverride_Mobile_Bloom_Threshold=false,bOverride_Mobile_Bloom_Tint=false,bOverride_Mobile_DOF_Distance=false,bOverride_Mobile_DOF_MinRange=false,bOverride_Mobile_DOF_MaxRange=false,bOverride_Mobile_DOF_NearBlurFactor=false,bOverride_Mobile_DOF_FarBlurFactor=false,Mobile_BlurAmount=16.0000000,Mobile_TransitionTime=1.0000000,Mobile_Bloom_Scale=6.0000000,Mobile_Bloom_Threshold=0.5000000,Mobile_Bloom_Tint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000),Mobile_DOF_Distance=1500.0000000,Mobile_DOF_MinRange=600.0000000,Mobile_DOF_MaxRange=1200.0000000,Mobile_DOF_NearBlurFactor=1.0000000,Mobile_DOF_FarBlurFactor=1.0000000),Death_Enable=false,Death_DesatAlpha=0.0000000,Hit_Enable=false,Hit_FadeAlpha=0.0000000,ColorBlind_Enable=false,ColorBlind_Mode=0) + bBlendingIn=false + bBlendingOut=false + CurrentBlendInTime=0.0000000 + CurrentBlendOutTime=0.0000000 + BlendInDuration=0.0000000 + BlendOutDuration=0.0000000 + BlendStartTime=0.0000000 + TimeAlphaCurve=(Points=none,InterpMethod=EInterpMethodType.IMT_UseFixedTangentEvalAndNewAutoTangents) + } +}; + +var private native const noexport Pointer VfTable_FObserverInterface; +var int ControllerId; +var GameViewportClient ViewportClient; +var Vector2D Origin; +var Vector2D Size; +var const transient PostProcessChain PlayerPostProcess; +var const transient array PlayerPostProcessChains; +var transient bool bForceDefaultPostProcessChain; +var bool bWantToResetToMapDefaultPP; +var const editconst transient bool bSentSplitJoin; +var bool bPendingServerAuth; +var private native const Pointer ViewState; +var private native const Pointer ViewState2; +var private native const transient SynchronizedActorVisibilityHistory ActorVisibilityHistory; +var transient Vector LastViewLocation; +var noimport const transient CurrentPostProcessVolumeInfo CurrentPPInfo; +var noimport const transient CurrentPostProcessVolumeInfo LevelPPInfo; +var protected transient array ActivePPOverrides; +var config Object.EAspectRatioAxisConstraint AspectRatioAxisConstraint; +var string LastMap; +var TranslationContext TagContext; +var OnlineAuthInterface CachedAuthInt; +var float ServerAuthTimestamp; +var int ServerAuthTimeout; +var int ServerAuthRetryCount; +var int MaxServerAuthRetryCount; +var UniqueNetId ServerAuthUID; + +// Export ULocalPlayer::execSpawnPlayActor(FFrame&, void* const) +native final function bool SpawnPlayActor(string URL, out string OutError); + +// Export ULocalPlayer::execSendSplitJoin(FFrame&, void* const) +native final function SendSplitJoin(); + +// Export ULocalPlayer::execGetActorVisibility(FFrame&, void* const) +native final function bool GetActorVisibility(Actor TestActor); + +// Export ULocalPlayer::execOverridePostProcessSettings(FFrame&, void* const) +native simulated function OverridePostProcessSettings(PostProcessSettings OverrideSettings, optional float BlendInTime); + +// Export ULocalPlayer::execOverridePostProcessSettingsCurve(FFrame&, void* const) +native simulated function OverridePostProcessSettingsCurve(PostProcessSettings OverrideSettings, const out InterpCurveFloat Curve); + +// Export ULocalPlayer::execClearPostProcessSettingsOverride(FFrame&, void* const) +native simulated function ClearPostProcessSettingsOverride(optional float BlendOutTime); + +final function SetControllerId(int NewControllerId) +{ + local LocalPlayer OtherPlayer; + local int CurrentControllerId; + + // End:0x111 + if(ControllerId != NewControllerId) + { + // End:0x45 + if(Actor != none) + { + Actor.PreControllerIdChange(); + } + CurrentControllerId = ControllerId; + ControllerId = -1; + OtherPlayer = ViewportClient.FindPlayerByControllerId(NewControllerId); + // End:0xD0 + if(OtherPlayer != none) + { + OtherPlayer.super(LocalPlayer).SetControllerId(CurrentControllerId); + } + ControllerId = NewControllerId; + // End:0x111 + if(Actor != none) + { + Actor.PostControllerIdChange(); + } + } + //return; +} + +// Export ULocalPlayer::execGetTranslationContext(FFrame&, void* const) +native final function TranslationContext GetTranslationContext(); + +// Export ULocalPlayer::execInitPostProcessingChain(FFrame&, void* const) +native function InitPostProcessingChain(); + +// Export ULocalPlayer::execInsertPostProcessingChain(FFrame&, void* const) +native function bool InsertPostProcessingChain(PostProcessChain InChain, int InIndex, bool bInClone); + +// Export ULocalPlayer::execRemovePostProcessingChain(FFrame&, void* const) +native function bool RemovePostProcessingChain(int InIndex); + +// Export ULocalPlayer::execRemoveAllPostProcessingChains(FFrame&, void* const) +native function bool RemoveAllPostProcessingChains(); + +// Export ULocalPlayer::execGetPostProcessChain(FFrame&, void* const) +native function PostProcessChain GetPostProcessChain(int InIndex); + +// Export ULocalPlayer::execTouchPlayerPostProcessChain(FFrame&, void* const) +native function TouchPlayerPostProcessChain(); + +// Export ULocalPlayer::execDeProject(FFrame&, void* const) +native final function DeProject(Vector2D RelativeScreenPos, out Vector WorldOrigin, out Vector WorldDirection); + +// Export ULocalPlayer::execProject(FFrame&, void* const) +native final function Vector2D Project(Vector WorldLoc); + +// Export ULocalPlayer::execFastDeProject(FFrame&, void* const) +native final function FastDeProject(Vector2D RelativeScreenPos, out Vector WorldOrigin, out Vector WorldDirection); + +// Export ULocalPlayer::execFastProject(FFrame&, void* const) +native final function Vector2D FastProject(Vector WorldLoc); + +final event UniqueNetId GetUniqueNetId() +{ + local UniqueNetId Result; + local GameEngine TheEngine; + + TheEngine = GameEngine(Outer); + // End:0xFB + if(((TheEngine != none) && TheEngine.OnlineSubsystem != none) && NotEqual_InterfaceInterface(TheEngine.OnlineSubsystem.PlayerInterface, OnlinePlayerInterface(none))) + { + TheEngine.OnlineSubsystem.PlayerInterface.GetUniquePlayerId(byte(ControllerId), Result); + } + return Result; + //return ReturnValue; +} + +event string GetNickname() +{ + local GameEngine TheEngine; + + TheEngine = GameEngine(Outer); + // End:0xF6 + if(((TheEngine != none) && TheEngine.OnlineSubsystem != none) && NotEqual_InterfaceInterface(TheEngine.OnlineSubsystem.PlayerInterface, OnlinePlayerInterface(none))) + { + return TheEngine.OnlineSubsystem.PlayerInterface.GetPlayerNickname(byte(ControllerId)); + } + else + { + return ""; + } + //return ReturnValue; +} + +event NotifyServerConnectionOpen() +{ + local WorldInfo WI; + + // End:0x1F7 + if(Outer.GamePlayers[0] == self) + { + CachedAuthInt = Class'Engine.GameEngine'.static.GetOnlineSubsystem().AuthInterface; + // End:0x179 + if(NotEqual_InterfaceInterface(CachedAuthInt, OnlineAuthInterface(none))) + { + CachedAuthInt.AddClientAuthRequestDelegate(ProcessClientAuthRequest); + CachedAuthInt.AddServerAuthResponseDelegate(ProcessServerAuthResponse); + CachedAuthInt.AddServerAuthCompleteDelegate(OnServerAuthComplete); + CachedAuthInt.AddClientAuthEndSessionRequestDelegate(ProcessClientAuthEndSessionRequest); + CachedAuthInt.AddServerConnectionCloseDelegate(OnServerConnectionClose); + } + bPendingServerAuth = true; + WI = Class'Engine.WorldInfo'.static.GetWorldInfo(); + // End:0x1E8 + if(WI != none) + { + ServerAuthTimestamp = WI.RealTimeSeconds; + } + else + { + ServerAuthTimestamp = 10.0000000; + } + } + //return; +} + +function ProcessClientAuthRequest(UniqueNetId ServerUID, IpAddr ServerIP, int ServerPort, bool bSecure) +{ + local UniqueNetId NullId; + local int AuthTicketUID; + + // End:0xA0 + if(ServerUID != NullId) + { + // End:0xA0 + if(CachedAuthInt.CreateClientAuthSession(ServerUID, ServerIP, ServerPort, bSecure, AuthTicketUID)) + { + // End:0x9D + if(!CachedAuthInt.SendClientAuthResponse(AuthTicketUID)) + { + } + } + } + //return; +} + +function ProcessClientAuthEndSessionRequest(Player ServerConnection) +{ + local LocalAuthSession CurClientSession; + local AuthSession CurServerSession; + + // End:0xAC + if(CachedAuthInt.FindLocalClientAuthSession(ServerConnection, CurClientSession)) + { + CachedAuthInt.EndLocalClientAuthSession(CurClientSession.EndPointUID, CurClientSession.EndPointIP, CurClientSession.EndPointPort); + } + // End:0x13C + if(CachedAuthInt.FindServerAuthSession(ServerConnection, CurServerSession)) + { + CachedAuthInt.EndRemoteServerAuthSession(CurServerSession.EndPointUID, CurServerSession.EndPointIP); + } + //return; +} + +function ProcessServerAuthResponse(UniqueNetId ServerUID, IpAddr ServerIP, int AuthTicketUID) +{ + local WorldInfo WI; + + // End:0xD2 + if(CachedAuthInt.VerifyServerAuthSession(ServerUID, ServerIP, AuthTicketUID)) + { + bPendingServerAuth = true; + ServerAuthUID = ServerUID; + WI = Class'Engine.WorldInfo'.static.GetWorldInfo(); + // End:0xC0 + if(WI != none) + { + ServerAuthTimestamp = WI.RealTimeSeconds; + } + else + { + ServerAuthTimestamp = 10.0000000; + } + } + //return; +} + +function OnServerAuthComplete(bool bSuccess, UniqueNetId ServerUID, Player ServerConnection, string ExtraInfo) +{ + // End:0x1C + if(bSuccess) + { + bPendingServerAuth = false; + } + else + { + ServerAuthTimedOut(); + } + //return; +} + +event ServerAuthTimedOut() +{ + local WorldInfo WI; + local AuthSession CurServerSession; + + // End:0x19B + if(NotEqual_InterfaceInterface(CachedAuthInt, OnlineAuthInterface(none))) + { + // End:0x191 + if(ServerAuthRetryCount < MaxServerAuthRetryCount) + { + // End:0xF0 + foreach CachedAuthInt.AllServerAuthSessions(CurServerSession) + { + // End:0xEF + if(CurServerSession.EndPointUID == ServerAuthUID) + { + CachedAuthInt.EndRemoteServerAuthSession(CurServerSession.EndPointUID, CurServerSession.EndPointIP); + // End:0xF0 + break; + } + } + CachedAuthInt.SendServerAuthRetryRequest(); + ServerAuthRetryCount++; + WI = Class'Engine.WorldInfo'.static.GetWorldInfo(); + // End:0x17F + if(WI != none) + { + ServerAuthTimestamp = WI.RealTimeSeconds; + } + else + { + ServerAuthTimestamp = 10.0000000; + } + } + else + { + ServerAuthFailure(); + } + } + //return; +} + +function ServerAuthFailure() +{ + //return; +} + +function OnServerConnectionClose(Player ServerConnection) +{ + StaticOnServerConnectionClose(ServerConnection); + //return; +} + +static final function StaticOnServerConnectionClose(Player ServerConnection) +{ + local OnlineAuthInterface CurAuthInt; + local LocalAuthSession CurClientSession; + local AuthSession CurServerSession; + + CurAuthInt = Class'Engine.GameEngine'.static.GetOnlineSubsystem().AuthInterface; + // End:0x19A + if(NotEqual_InterfaceInterface(CurAuthInt, OnlineAuthInterface(none))) + { + // End:0x10A + if(CurAuthInt.FindLocalClientAuthSession(ServerConnection, CurClientSession)) + { + CurAuthInt.EndLocalClientAuthSession(CurClientSession.EndPointUID, CurClientSession.EndPointIP, CurClientSession.EndPointPort); + } + // End:0x19A + if(CurAuthInt.FindServerAuthSession(ServerConnection, CurServerSession)) + { + CurAuthInt.EndRemoteServerAuthSession(CurServerSession.EndPointUID, CurServerSession.EndPointIP); + } + } + //return; +} + +event ViewportClosed() +{ + Cleanup(true); + //return; +} + +event NotifyServerConnectionClose() +{ + Cleanup(); + //return; +} + +event Exit() +{ + Cleanup(true); + //return; +} + +function Cleanup(optional bool bExit) +{ + // End:0x1A0 + if(Outer.GamePlayers[0] == self) + { + // End:0x189 + if(NotEqual_InterfaceInterface(CachedAuthInt, OnlineAuthInterface(none))) + { + CachedAuthInt.ClearClientAuthRequestDelegate(ProcessClientAuthRequest); + CachedAuthInt.ClearServerAuthResponseDelegate(ProcessServerAuthResponse); + CachedAuthInt.ClearServerAuthCompleteDelegate(OnServerAuthComplete); + CachedAuthInt.ClearClientAuthEndSessionRequestDelegate(ProcessClientAuthEndSessionRequest); + CachedAuthInt.ClearServerConnectionCloseDelegate(OnServerConnectionClose); + // End:0x189 + if(bExit) + { + CachedAuthInt.EndAllLocalClientAuthSessions(); + CachedAuthInt.EndAllRemoteServerAuthSessions(); + } + } + CachedAuthInt = none; + bPendingServerAuth = false; + } + //return; +} + +defaultproperties +{ + bWantToResetToMapDefaultPP=true + CurrentPPInfo=(LastSettings=(bOverride_EnableBloom=true,bOverride_EnableDOF=true,bOverride_EnableMotionBlur=true,bOverride_EnableSceneEffect=true,bOverride_AllowAmbientOcclusion=true,bOverride_OverrideRimShaderColor=true,bOverride_Bloom_Scale=true,bOverride_Bloom_Threshold=true,bOverride_Bloom_Tint=true,bOverride_Bloom_ScreenBlendThreshold=true,bOverride_Bloom_InterpolationDuration=true,bOverride_DOF_FalloffExponent=true,bOverride_DOF_BlurKernelSize=true,bOverride_DOF_BlurBloomKernelSize=true,bOverride_DOF_MaxNearBlurAmount=true,bOverride_DOF_MinBlurAmount=false,bOverride_DOF_MaxFarBlurAmount=true,bOverride_DOF_FocusType=true,bOverride_DOF_FocusInnerRadius=true,bOverride_DOF_FocusDistance=true,bOverride_DOF_FocusPosition=true,bOverride_DOF_InterpolationDuration=true,bOverride_DOF_BokehTexture=false,bOverride_MotionBlur_MaxVelocity=false,bOverride_MotionBlur_Amount=false,bOverride_MotionBlur_FullMotionBlur=false,bOverride_MotionBlur_CameraRotationThreshold=false,bOverride_MotionBlur_CameraTranslationThreshold=false,bOverride_MotionBlur_InterpolationDuration=false,bOverride_Scene_Desaturation=true,bOverride_Scene_Colorize=false,bOverride_Scene_TonemapperScale=false,bOverride_Scene_ImageGrainScale=false,bOverride_Scene_HighLights=true,bOverride_Scene_MidTones=true,bOverride_Scene_Shadows=true,bOverride_Scene_InterpolationDuration=true,bOverride_Scene_ColorGradingLUT=false,bOverride_RimShader_Color=true,bOverride_RimShader_InterpolationDuration=true,bOverride_MobileColorGrading=false,bEnableBloom=true,bEnableDOF=false,bEnableMotionBlur=true,bEnableSceneEffect=true,bAllowAmbientOcclusion=true,bOverrideRimShaderColor=false,Bloom_Scale=1.0000000,Bloom_Threshold=1.0000000,Bloom_Tint=(R=255,G=255,B=255,A=0),Bloom_ScreenBlendThreshold=10.0000000,Bloom_InterpolationDuration=1.0000000,DOF_BlurBloomKernelSize=16.0000000,DOF_FalloffExponent=4.0000000,DOF_BlurKernelSize=16.0000000,DOF_MaxNearBlurAmount=1.0000000,DOF_MinBlurAmount=0.0000000,DOF_MaxFarBlurAmount=1.0000000,DOF_FocusType=EFocusType.FOCUS_Distance,DOF_FocusInnerRadius=2000.0000000,DOF_FocusDistance=0.0000000,DOF_FocusPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000),DOF_InterpolationDuration=1.0000000,DOF_BokehTexture=none,MotionBlur_MaxVelocity=1.0000000,MotionBlur_Amount=0.5000000,MotionBlur_FullMotionBlur=true,MotionBlur_CameraRotationThreshold=45.0000000,MotionBlur_CameraTranslationThreshold=10000.0000000,MotionBlur_InterpolationDuration=1.0000000,Scene_Desaturation=0.0000000,Scene_Colorize=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_TonemapperScale=1.0000000,Scene_ImageGrainScale=0.0000000,Scene_HighLights=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_MidTones=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_Shadows=(X=0.0000000,Y=0.0000000,Z=0.0000000),Scene_InterpolationDuration=1.0000000,RimShader_Color=(R=0.4704400,G=0.5859730,B=0.8277260,A=1.0000000),RimShader_InterpolationDuration=1.0000000,ColorGrading_LookupTable=none,ColorGradingLUT=(LUTTextures=none,LUTWeights=none),MobileColorGrading=(TransitionTime=1.0000000,Blend=0.0000000,Desaturation=0.0000000,HighLights=(R=0.7000000,G=0.7000000,B=0.7000000,A=1.0000000),MidTones=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000),Shadows=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000)),MobilePostProcess=(bOverride_Mobile_BlurAmount=false,bOverride_Mobile_TransitionTime=false,bOverride_Mobile_Bloom_Scale=false,bOverride_Mobile_Bloom_Threshold=false,bOverride_Mobile_Bloom_Tint=false,bOverride_Mobile_DOF_Distance=false,bOverride_Mobile_DOF_MinRange=false,bOverride_Mobile_DOF_MaxRange=false,bOverride_Mobile_DOF_NearBlurFactor=false,bOverride_Mobile_DOF_FarBlurFactor=false,Mobile_BlurAmount=16.0000000,Mobile_TransitionTime=1.0000000,Mobile_Bloom_Scale=6.0000000,Mobile_Bloom_Threshold=0.5000000,Mobile_Bloom_Tint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000),Mobile_DOF_Distance=1500.0000000,Mobile_DOF_MinRange=600.0000000,Mobile_DOF_MaxRange=1200.0000000,Mobile_DOF_NearBlurFactor=1.0000000,Mobile_DOF_FarBlurFactor=1.0000000),Death_Enable=false,Death_DesatAlpha=0.0000000,Hit_Enable=false,Hit_FadeAlpha=0.0000000,ColorBlind_Enable=false,ColorBlind_Mode=0),LastVolumeUsed=none,BlendStartTime=0.0000000,LastBlendTime=0.0000000) + LevelPPInfo=(LastSettings=(bOverride_EnableBloom=true,bOverride_EnableDOF=true,bOverride_EnableMotionBlur=true,bOverride_EnableSceneEffect=true,bOverride_AllowAmbientOcclusion=true,bOverride_OverrideRimShaderColor=true,bOverride_Bloom_Scale=true,bOverride_Bloom_Threshold=true,bOverride_Bloom_Tint=true,bOverride_Bloom_ScreenBlendThreshold=true,bOverride_Bloom_InterpolationDuration=true,bOverride_DOF_FalloffExponent=true,bOverride_DOF_BlurKernelSize=true,bOverride_DOF_BlurBloomKernelSize=true,bOverride_DOF_MaxNearBlurAmount=true,bOverride_DOF_MinBlurAmount=false,bOverride_DOF_MaxFarBlurAmount=true,bOverride_DOF_FocusType=true,bOverride_DOF_FocusInnerRadius=true,bOverride_DOF_FocusDistance=true,bOverride_DOF_FocusPosition=true,bOverride_DOF_InterpolationDuration=true,bOverride_DOF_BokehTexture=false,bOverride_MotionBlur_MaxVelocity=false,bOverride_MotionBlur_Amount=false,bOverride_MotionBlur_FullMotionBlur=false,bOverride_MotionBlur_CameraRotationThreshold=false,bOverride_MotionBlur_CameraTranslationThreshold=false,bOverride_MotionBlur_InterpolationDuration=false,bOverride_Scene_Desaturation=true,bOverride_Scene_Colorize=false,bOverride_Scene_TonemapperScale=false,bOverride_Scene_ImageGrainScale=false,bOverride_Scene_HighLights=true,bOverride_Scene_MidTones=true,bOverride_Scene_Shadows=true,bOverride_Scene_InterpolationDuration=true,bOverride_Scene_ColorGradingLUT=false,bOverride_RimShader_Color=true,bOverride_RimShader_InterpolationDuration=true,bOverride_MobileColorGrading=false,bEnableBloom=true,bEnableDOF=false,bEnableMotionBlur=true,bEnableSceneEffect=true,bAllowAmbientOcclusion=true,bOverrideRimShaderColor=false,Bloom_Scale=1.0000000,Bloom_Threshold=1.0000000,Bloom_Tint=(R=255,G=255,B=255,A=0),Bloom_ScreenBlendThreshold=10.0000000,Bloom_InterpolationDuration=1.0000000,DOF_BlurBloomKernelSize=16.0000000,DOF_FalloffExponent=4.0000000,DOF_BlurKernelSize=16.0000000,DOF_MaxNearBlurAmount=1.0000000,DOF_MinBlurAmount=0.0000000,DOF_MaxFarBlurAmount=1.0000000,DOF_FocusType=EFocusType.FOCUS_Distance,DOF_FocusInnerRadius=2000.0000000,DOF_FocusDistance=0.0000000,DOF_FocusPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000),DOF_InterpolationDuration=1.0000000,DOF_BokehTexture=none,MotionBlur_MaxVelocity=1.0000000,MotionBlur_Amount=0.5000000,MotionBlur_FullMotionBlur=true,MotionBlur_CameraRotationThreshold=45.0000000,MotionBlur_CameraTranslationThreshold=10000.0000000,MotionBlur_InterpolationDuration=1.0000000,Scene_Desaturation=0.0000000,Scene_Colorize=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_TonemapperScale=1.0000000,Scene_ImageGrainScale=0.0000000,Scene_HighLights=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_MidTones=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_Shadows=(X=0.0000000,Y=0.0000000,Z=0.0000000),Scene_InterpolationDuration=1.0000000,RimShader_Color=(R=0.4704400,G=0.5859730,B=0.8277260,A=1.0000000),RimShader_InterpolationDuration=1.0000000,ColorGrading_LookupTable=none,ColorGradingLUT=(LUTTextures=none,LUTWeights=none),MobileColorGrading=(TransitionTime=1.0000000,Blend=0.0000000,Desaturation=0.0000000,HighLights=(R=0.7000000,G=0.7000000,B=0.7000000,A=1.0000000),MidTones=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000),Shadows=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000)),MobilePostProcess=(bOverride_Mobile_BlurAmount=false,bOverride_Mobile_TransitionTime=false,bOverride_Mobile_Bloom_Scale=false,bOverride_Mobile_Bloom_Threshold=false,bOverride_Mobile_Bloom_Tint=false,bOverride_Mobile_DOF_Distance=false,bOverride_Mobile_DOF_MinRange=false,bOverride_Mobile_DOF_MaxRange=false,bOverride_Mobile_DOF_NearBlurFactor=false,bOverride_Mobile_DOF_FarBlurFactor=false,Mobile_BlurAmount=16.0000000,Mobile_TransitionTime=1.0000000,Mobile_Bloom_Scale=6.0000000,Mobile_Bloom_Threshold=0.5000000,Mobile_Bloom_Tint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000),Mobile_DOF_Distance=1500.0000000,Mobile_DOF_MinRange=600.0000000,Mobile_DOF_MaxRange=1200.0000000,Mobile_DOF_NearBlurFactor=1.0000000,Mobile_DOF_FarBlurFactor=1.0000000),Death_Enable=false,Death_DesatAlpha=0.0000000,Hit_Enable=false,Hit_FadeAlpha=0.0000000,ColorBlind_Enable=false,ColorBlind_Mode=0),LastVolumeUsed=none,BlendStartTime=0.0000000,LastBlendTime=0.0000000) + AspectRatioAxisConstraint=EAspectRatioAxisConstraint.AspectRatio_MaintainXFOV + ServerAuthTimeout=10 + MaxServerAuthRetryCount=3 +} \ No newline at end of file diff --git a/exported/Engine/Classes/MantleReachSpec.uc b/exported/Engine/Classes/MantleReachSpec.uc new file mode 100755 index 00000000..e7a7fdd4 --- /dev/null +++ b/exported/Engine/Classes/MantleReachSpec.uc @@ -0,0 +1,9 @@ +class MantleReachSpec extends ForcedReachSpec + native; + +var() bool bClimbUp; + +defaultproperties +{ + bSkipPrune=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/MapInfo.uc b/exported/Engine/Classes/MapInfo.uc new file mode 100755 index 00000000..ba676975 --- /dev/null +++ b/exported/Engine/Classes/MapInfo.uc @@ -0,0 +1,4 @@ +class MapInfo extends Object + abstract + native + editinlinenew; diff --git a/exported/Engine/Classes/MassiveLODOverrideVolume.uc b/exported/Engine/Classes/MassiveLODOverrideVolume.uc new file mode 100755 index 00000000..fd2c16f9 --- /dev/null +++ b/exported/Engine/Classes/MassiveLODOverrideVolume.uc @@ -0,0 +1,24 @@ +class MassiveLODOverrideVolume extends Volume + native + placeable + hidecategories(Navigation,Object,Movement,Display,Collision,Brush,Attachment,Physics,Volume); + +defaultproperties +{ + BrushColor=(R=120,G=80,B=80,A=255) + bColored=true + // Reference: BrushComponent'Engine.Default__MassiveLODOverrideVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + RBChannel=ERBCollisionChannel.RBCC_Nothing + CollideActors=false + BlockNonZeroExtent=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bCollideActors=false + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Material.uc b/exported/Engine/Classes/Material.uc new file mode 100755 index 00000000..5b19e058 --- /dev/null +++ b/exported/Engine/Classes/Material.uc @@ -0,0 +1,183 @@ +class Material extends MaterialInterface + native(Material) + hidecategories(Object); + +struct MaterialInput +{ + var MaterialExpression Expression; + var int OutputIndex; + var string InputName; + var int Mask; + var int MaskR; + var int MaskG; + var int MaskB; + var int MaskA; + var int GCC64_Padding; + + structdefaultproperties + { + Expression=none + OutputIndex=0 + InputName="" + Mask=0 + MaskR=0 + MaskG=0 + MaskB=0 + MaskA=0 + GCC64_Padding=0 + } +}; + +struct ColorMaterialInput extends MaterialInput +{ + var bool UseConstant; + var Color Constant; +}; + +struct ScalarMaterialInput extends MaterialInput +{ + var bool UseConstant; + var float Constant; +}; + +struct VectorMaterialInput extends MaterialInput +{ + var bool UseConstant; + var Vector Constant; +}; + +struct Vector2MaterialInput extends MaterialInput +{ + var bool UseConstant; + var float ConstantX; + var float ConstantY; +}; + +struct native MaterialFunctionInfo +{ + var Guid StateId; + var MaterialFunction Function; + + structdefaultproperties + { + StateId=(A=0,B=0,C=0,D=0) + Function=none + } +}; + +var(PhysicalMaterial) PhysicalMaterial PhysMaterial; +var Class PhysicalMaterial; +var(PhysicalMaterial) Texture2D PhysMaterialMask; +var(PhysicalMaterial) int PhysMaterialMaskUVChannel; +var(PhysicalMaterial) PhysicalMaterial BlackPhysicalMaterial; +var(PhysicalMaterial) PhysicalMaterial WhitePhysicalMaterial; +var ColorMaterialInput DiffuseColor; +var ScalarMaterialInput DiffusePower; +var ColorMaterialInput SpecularColor; +var ScalarMaterialInput SpecularPower; +var VectorMaterialInput Normal; +var ColorMaterialInput EmissiveColor; +var ScalarMaterialInput Opacity; +var ScalarMaterialInput OpacityMask; +var() float OpacityMaskClipValue; +var(Misc) float ShadowDepthBias; +var Vector2MaterialInput Distortion; +var() EngineTypes.EBlendMode BlendMode; +var() EngineTypes.EMaterialLightingModel LightingModel; +var(D3D11) const EngineTypes.EMaterialTessellationMode D3D11TessellationMode; +var ColorMaterialInput CustomLighting; +var ColorMaterialInput CustomSkylightDiffuse; +var VectorMaterialInput AnisotropicDirection; +var ScalarMaterialInput TwoSidedLightingMask; +var ColorMaterialInput TwoSidedLightingColor; +var VectorMaterialInput WorldPositionOffset; +var VectorMaterialInput WorldDisplacement; +var ScalarMaterialInput TessellationMultiplier; +var ColorMaterialInput SubsurfaceInscatteringColor; +var ColorMaterialInput SubsurfaceAbsorptionColor; +var ScalarMaterialInput SubsurfaceScatteringRadius; +var(D3D11) bool EnableSubsurfaceScattering; +var(Misc) bool EnableSeparateTranslucency; +var(D3D11) bool bEnableMaskedAntialiasing; +var() bool TwoSided; +var(Translucency) bool TwoSidedSeparatePass; +var(Translucency) bool bDisableDepthTest; +var(Translucency) bool bSceneTextureRenderBehindTranslucency; +var(Translucency) bool bAllowFog; +var(Translucency) bool bTranslucencyReceiveDominantShadowsFromStatic; +var(Translucency) bool bTranslucencyInheritDominantShadowsFromOpaque; +var(Translucency) bool bAllowTranslucencyDoF; +var(Translucency) bool bUseOneLayerDistortion; +var(Translucency) bool bUseLitTranslucencyDepthPass; +var(Translucency) bool bUseLitTranslucencyPostRenderDepthPass; +var(Translucency) bool bCastLitTranslucencyShadowAsMasked; +var(MutuallyExclusiveUsage) const bool bUsedAsLightFunction; +var(MutuallyExclusiveUsage) const bool bUsedWithFogVolumes; +var duplicatetransient const bool bUsedAsSpecialEngineMaterial; +var(Usage) const bool bUsedWithSkeletalMesh; +var(Usage) const bool bUsedWithTerrain; +var(Usage) const bool bUsedWithLandscape; +var(Usage) const bool bUsedWithMobileLandscape; +var(Usage) const bool bUsedWithFracturedMeshes; +var const bool bUsedWithParticleSystem; +var(Usage) const bool bUsedWithParticleSprites; +var(Usage) const bool bUsedWithBeamTrails; +var(Usage) const bool bUsedWithParticleSubUV; +var(Usage) const bool bUsedWithSpeedTree; +var(Usage) const bool bUsedWithStaticLighting; +var(Usage) const bool bUsedWithLensFlare; +var(Usage) const bool bUsedWithGammaCorrection; +var(Usage) const bool bUsedWithInstancedMeshParticles; +var(Usage) const bool bUsedWithFluidSurfaces; +var(MutuallyExclusiveUsage) const bool bUsedWithDecals; +var(Usage) const bool bUsedWithMaterialEffect; +var(Usage) const bool bUsedWithMorphTargets; +var(Usage) const bool bUsedWithRadialBlur; +var(Usage) const bool bUsedWithInstancedMeshes; +var(Usage) const bool bUsedWithSplineMeshes; +var(Usage) const bool bUsedWithAPEXMeshes; +var(Usage) const bool bUsedWithScreenDoorFade; +var(D3D11) const bool bEnableCrackFreeDisplacement; +var(D3D11) const bool bTessellationFrustumCulling; +var(D3D11) const bool bTessellationBackfaceCulling; +var(D3D11) bool bUseImageBasedReflections; +var(Misc) bool Wireframe; +var(Misc) bool bPerPixelCameraVector; +var(Misc) bool bAllowLightmapSpecular; +var(Misc) bool bOverrideLowQualitySpecular; +var(Misc) const bool bCleanupUnusedTextures; +var deprecated bool bIsFallbackMaterial; +var private bool bUsesDistortion; +var private bool bIsMasked; +var private duplicatetransient transient bool bIsPreviewMaterial; +var(D3D11) float ImageReflectionNormalDampening; +var duplicatetransient const ShaderCache CookedShaderCache; +var duplicatetransient native const Pointer MaterialResources[3]; +var duplicatetransient native const Pointer DefaultMaterialInstances[3]; +var int EditorX; +var int EditorY; +var int EditorPitch; +var int EditorYaw; +var array Expressions; +var array MaterialFunctionInfos; +var native map{VOID,VOID} EditorParameters; +var private const deprecated array ReferencedTextures; + +defaultproperties +{ + PhysMaterialMaskUVChannel=-1 + DiffuseColor=(UseConstant=false,Constant=(R=128,G=128,B=128,A=0),Expression=none,OutputIndex=0,InputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0,GCC64_Padding=0) + DiffusePower=(UseConstant=false,Constant=1.0000000,Expression=none,OutputIndex=0,InputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0,GCC64_Padding=0) + SpecularColor=(UseConstant=false,Constant=(R=128,G=128,B=128,A=0),Expression=none,OutputIndex=0,InputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0,GCC64_Padding=0) + SpecularPower=(UseConstant=false,Constant=15.0000000,Expression=none,OutputIndex=0,InputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0,GCC64_Padding=0) + Opacity=(UseConstant=false,Constant=1.0000000,Expression=none,OutputIndex=0,InputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0,GCC64_Padding=0) + OpacityMask=(UseConstant=false,Constant=1.0000000,Expression=none,OutputIndex=0,InputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0,GCC64_Padding=0) + OpacityMaskClipValue=0.3333000 + TwoSidedLightingColor=(UseConstant=false,Constant=(R=255,G=255,B=255,A=0),Expression=none,OutputIndex=0,InputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0,GCC64_Padding=0) + SubsurfaceInscatteringColor=(UseConstant=false,Constant=(R=255,G=255,B=255,A=0),Expression=none,OutputIndex=0,InputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0,GCC64_Padding=0) + SubsurfaceAbsorptionColor=(UseConstant=false,Constant=(R=230,G=200,B=200,A=0),Expression=none,OutputIndex=0,InputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0,GCC64_Padding=0) + bAllowFog=true + bUsedWithStaticLighting=true + bAllowLightmapSpecular=true + ImageReflectionNormalDampening=5.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialEffect.uc b/exported/Engine/Classes/MaterialEffect.uc new file mode 100755 index 00000000..182b6241 --- /dev/null +++ b/exported/Engine/Classes/MaterialEffect.uc @@ -0,0 +1,5 @@ +class MaterialEffect extends PostProcessEffect + native + hidecategories(Object); + +var() MaterialInterface Material; diff --git a/exported/Engine/Classes/MaterialExpression.uc b/exported/Engine/Classes/MaterialExpression.uc new file mode 100755 index 00000000..5d669a90 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpression.uc @@ -0,0 +1,74 @@ +class MaterialExpression extends Object + abstract + native(Material) + hidecategories(Object); + +struct ExpressionInput +{ + var MaterialExpression Expression; + var int OutputIndex; + var string InputName; + var int Mask; + var int MaskR; + var int MaskG; + var int MaskB; + var int MaskA; + var int GCC64_Padding; + + structdefaultproperties + { + Expression=none + OutputIndex=0 + InputName="" + Mask=0 + MaskR=0 + MaskG=0 + MaskB=0 + MaskA=0 + GCC64_Padding=0 + } +}; + +struct ExpressionOutput +{ + var string OutputName; + var int Mask; + var int MaskR; + var int MaskG; + var int MaskB; + var int MaskA; + + structdefaultproperties + { + OutputName="" + Mask=0 + MaskR=0 + MaskG=0 + MaskB=0 + MaskA=0 + } +}; + +var deprecated int EditorX; +var deprecated int EditorY; +var bool bRealtimePreview; +var transient bool bNeedToUpdatePreview; +var bool bIsParameterExpression; +var bool bShowOutputNameOnPin; +var bool bHidePreviewWindow; +var bool bShowInputs; +var bool bShowOutputs; +var bool bUsedByStaticParameterSet; +var const Material Material; +var const MaterialFunction Function; +var() string Desc; +var Color BorderColor; +var array MenuCategories; +var array Outputs; + +defaultproperties +{ + bShowInputs=true + bShowOutputs=true + Outputs[0]=(OutputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionAbs.uc b/exported/Engine/Classes/MaterialExpressionAbs.uc new file mode 100755 index 00000000..2cf410a5 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionAbs.uc @@ -0,0 +1,11 @@ +class MaterialExpressionAbs extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Input; + +defaultproperties +{ + MenuCategories[0]="Math" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionActorWorldPosition.uc b/exported/Engine/Classes/MaterialExpressionActorWorldPosition.uc new file mode 100755 index 00000000..36476e52 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionActorWorldPosition.uc @@ -0,0 +1,10 @@ +class MaterialExpressionActorWorldPosition extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Vectors" + MenuCategories[1]="Coordinates" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionAdd.uc b/exported/Engine/Classes/MaterialExpressionAdd.uc new file mode 100755 index 00000000..7b1b812f --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionAdd.uc @@ -0,0 +1,11 @@ +class MaterialExpressionAdd extends MaterialExpression + native(Material) + hidecategories(Object); + +var ExpressionInput A; +var ExpressionInput B; + +defaultproperties +{ + MenuCategories[0]="Math" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionAntialiasedTextureMask.uc b/exported/Engine/Classes/MaterialExpressionAntialiasedTextureMask.uc new file mode 100755 index 00000000..06dd66ea --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionAntialiasedTextureMask.uc @@ -0,0 +1,29 @@ +class MaterialExpressionAntialiasedTextureMask extends MaterialExpressionTextureSampleParameter2D + native(Material) + collapsecategories + hidecategories(Object,Object,Object,Object); + +enum ETextureColorChannel +{ + TCC_Red, // 0 + TCC_Green, // 1 + TCC_Blue, // 2 + TCC_Alpha, // 3 + TCC_MAX // 4 +}; + +var() float Threshold; +var() MaterialExpressionAntialiasedTextureMask.ETextureColorChannel Channel; + +defaultproperties +{ + Threshold=0.5000000 + Channel=ETextureColorChannel.TCC_Alpha + MenuCategories[0]="HighLevel" + MenuCategories[1]="Parameters" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) + Outputs[1]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) + Outputs[2]=(OutputName="",Mask=1,MaskR=0,MaskG=1,MaskB=0,MaskA=0) + Outputs[3]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=1,MaskA=0) + Outputs[4]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=0,MaskA=1) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionAppendVector.uc b/exported/Engine/Classes/MaterialExpressionAppendVector.uc new file mode 100755 index 00000000..6b48875c --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionAppendVector.uc @@ -0,0 +1,13 @@ +class MaterialExpressionAppendVector extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput A; +var ExpressionInput B; + +defaultproperties +{ + MenuCategories[0]="Utility" + MenuCategories[1]="VectorOps" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionBumpOffset.uc b/exported/Engine/Classes/MaterialExpressionBumpOffset.uc new file mode 100755 index 00000000..d55a4281 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionBumpOffset.uc @@ -0,0 +1,17 @@ +class MaterialExpressionBumpOffset extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Coordinate; +var ExpressionInput Height; +var ExpressionInput HeightRatioInput; +var() float HeightRatio; +var() float ReferencePlane; + +defaultproperties +{ + HeightRatio=0.0500000 + ReferencePlane=0.5000000 + MenuCategories[0]="Utility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionCameraVector.uc b/exported/Engine/Classes/MaterialExpressionCameraVector.uc new file mode 100755 index 00000000..b59d2d3f --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionCameraVector.uc @@ -0,0 +1,9 @@ +class MaterialExpressionCameraVector extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Vectors" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionCameraWorldPosition.uc b/exported/Engine/Classes/MaterialExpressionCameraWorldPosition.uc new file mode 100755 index 00000000..415da27e --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionCameraWorldPosition.uc @@ -0,0 +1,11 @@ +class MaterialExpressionCameraWorldPosition extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Vectors" + MenuCategories[1]="Coordinates" + MenuCategories[2]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionCeil.uc b/exported/Engine/Classes/MaterialExpressionCeil.uc new file mode 100755 index 00000000..e17e13ca --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionCeil.uc @@ -0,0 +1,11 @@ +class MaterialExpressionCeil extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Input; + +defaultproperties +{ + MenuCategories[0]="Math" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionClamp.uc b/exported/Engine/Classes/MaterialExpressionClamp.uc new file mode 100755 index 00000000..f5f894fe --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionClamp.uc @@ -0,0 +1,12 @@ +class MaterialExpressionClamp extends MaterialExpression + native(Material) + hidecategories(Object); + +var ExpressionInput Input; +var ExpressionInput Min; +var ExpressionInput Max; + +defaultproperties +{ + MenuCategories[0]="Utility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionComment.uc b/exported/Engine/Classes/MaterialExpressionComment.uc new file mode 100755 index 00000000..fc365e8c --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionComment.uc @@ -0,0 +1,14 @@ +class MaterialExpressionComment extends MaterialExpression + native(Material) + hidecategories(Object); + +var int PosX; +var int PosY; +var int SizeX; +var int SizeY; +var() string Text; + +defaultproperties +{ + MenuCategories[0]="Utility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionComponentMask.uc b/exported/Engine/Classes/MaterialExpressionComponentMask.uc new file mode 100755 index 00000000..c15a279f --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionComponentMask.uc @@ -0,0 +1,15 @@ +class MaterialExpressionComponentMask extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Input; +var() bool R; +var() bool G; +var() bool B; +var() bool A; + +defaultproperties +{ + MenuCategories[0]="Utility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionConstant.uc b/exported/Engine/Classes/MaterialExpressionConstant.uc new file mode 100755 index 00000000..f74a0c82 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionConstant.uc @@ -0,0 +1,11 @@ +class MaterialExpressionConstant extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() float R; + +defaultproperties +{ + MenuCategories[0]="Constants" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionConstant2Vector.uc b/exported/Engine/Classes/MaterialExpressionConstant2Vector.uc new file mode 100755 index 00000000..e7ab13bc --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionConstant2Vector.uc @@ -0,0 +1,13 @@ +class MaterialExpressionConstant2Vector extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() float R; +var() float G; + +defaultproperties +{ + MenuCategories[0]="Constants" + MenuCategories[1]="Vectors" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionConstant3Vector.uc b/exported/Engine/Classes/MaterialExpressionConstant3Vector.uc new file mode 100755 index 00000000..62d6e9ec --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionConstant3Vector.uc @@ -0,0 +1,14 @@ +class MaterialExpressionConstant3Vector extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() float R; +var() float G; +var() float B; + +defaultproperties +{ + MenuCategories[0]="Constants" + MenuCategories[1]="Vectors" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionConstant4Vector.uc b/exported/Engine/Classes/MaterialExpressionConstant4Vector.uc new file mode 100755 index 00000000..94dfd49c --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionConstant4Vector.uc @@ -0,0 +1,15 @@ +class MaterialExpressionConstant4Vector extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() float R; +var() float G; +var() float B; +var() float A; + +defaultproperties +{ + MenuCategories[0]="Constants" + MenuCategories[1]="Vectors" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionConstantBiasScale.uc b/exported/Engine/Classes/MaterialExpressionConstantBiasScale.uc new file mode 100755 index 00000000..d20bd90f --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionConstantBiasScale.uc @@ -0,0 +1,14 @@ +class MaterialExpressionConstantBiasScale extends MaterialExpression + native(Material) + hidecategories(Object); + +var ExpressionInput Input; +var() float Bias; +var() float Scale; + +defaultproperties +{ + Bias=1.0000000 + Scale=0.5000000 + MenuCategories[0]="Utility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionConstantClamp.uc b/exported/Engine/Classes/MaterialExpressionConstantClamp.uc new file mode 100755 index 00000000..19a8ce4f --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionConstantClamp.uc @@ -0,0 +1,14 @@ +class MaterialExpressionConstantClamp extends MaterialExpression + native(Material) + hidecategories(Object); + +var ExpressionInput Input; +var() float Min; +var() float Max; + +defaultproperties +{ + Max=1.0000000 + MenuCategories[0]="Utility" + MenuCategories[1]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionCosine.uc b/exported/Engine/Classes/MaterialExpressionCosine.uc new file mode 100755 index 00000000..a593bc00 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionCosine.uc @@ -0,0 +1,13 @@ +class MaterialExpressionCosine extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Input; +var() float Period; + +defaultproperties +{ + Period=1.0000000 + MenuCategories[0]="Math" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionCrossProduct.uc b/exported/Engine/Classes/MaterialExpressionCrossProduct.uc new file mode 100755 index 00000000..00cbe4e0 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionCrossProduct.uc @@ -0,0 +1,12 @@ +class MaterialExpressionCrossProduct extends MaterialExpression + native(Material) + hidecategories(Object); + +var ExpressionInput A; +var ExpressionInput B; + +defaultproperties +{ + MenuCategories[0]="Math" + MenuCategories[1]="VectorOps" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionCustom.uc b/exported/Engine/Classes/MaterialExpressionCustom.uc new file mode 100755 index 00000000..472ce3e8 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionCustom.uc @@ -0,0 +1,38 @@ +class MaterialExpressionCustom extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +enum ECustomMaterialOutputType +{ + CMOT_Float1, // 0 + CMOT_Float2, // 1 + CMOT_Float3, // 2 + CMOT_Float4, // 3 + CMOT_MAX // 4 +}; + +struct native CustomInput +{ + var() string InputName; + var edithide ExpressionInput Input; + + structdefaultproperties + { + InputName="" + Input=(Expression=none,OutputIndex=0,InputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0,GCC64_Padding=0) + } +}; + +var() edittextbox string Code; +var() MaterialExpressionCustom.ECustomMaterialOutputType OutputType; +var() string Description; +var() array Inputs; + +defaultproperties +{ + OutputType=ECustomMaterialOutputType.CMOT_Float3 + Description="Custom" + Inputs[0]=(InputName="",Input=(Expression=none,OutputIndex=0,InputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0,GCC64_Padding=0)) + MenuCategories[0]="Custom" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionCustomTexture.uc b/exported/Engine/Classes/MaterialExpressionCustomTexture.uc new file mode 100755 index 00000000..2c9291d4 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionCustomTexture.uc @@ -0,0 +1,11 @@ +class MaterialExpressionCustomTexture extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() Texture Texture; + +defaultproperties +{ + MenuCategories[0]="Custom" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionDepthBiasBlend.uc b/exported/Engine/Classes/MaterialExpressionDepthBiasBlend.uc new file mode 100755 index 00000000..34aa8cdf --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionDepthBiasBlend.uc @@ -0,0 +1,14 @@ +class MaterialExpressionDepthBiasBlend extends MaterialExpressionTextureSample + native(Material) + collapsecategories + hidecategories(Object,Object,Object); + +var() bool bNormalize; +var() float BiasScale; +var ExpressionInput Bias; + +defaultproperties +{ + BiasScale=1.0000000 + MenuCategories[0]="Obsolete" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionDepthBiasedAlpha.uc b/exported/Engine/Classes/MaterialExpressionDepthBiasedAlpha.uc new file mode 100755 index 00000000..1c24584c --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionDepthBiasedAlpha.uc @@ -0,0 +1,15 @@ +class MaterialExpressionDepthBiasedAlpha extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() bool bNormalize; +var() float BiasScale; +var ExpressionInput Alpha; +var ExpressionInput Bias; + +defaultproperties +{ + BiasScale=1.0000000 + MenuCategories[0]="Depth" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionDepthBiasedBlend.uc b/exported/Engine/Classes/MaterialExpressionDepthBiasedBlend.uc new file mode 100755 index 00000000..c0898a3e --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionDepthBiasedBlend.uc @@ -0,0 +1,21 @@ +class MaterialExpressionDepthBiasedBlend extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() bool bNormalize; +var() float BiasScale; +var ExpressionInput RGB; +var ExpressionInput Alpha; +var ExpressionInput Bias; + +defaultproperties +{ + BiasScale=1.0000000 + MenuCategories[0]="Obsolete" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=0) + Outputs[1]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) + Outputs[2]=(OutputName="",Mask=1,MaskR=0,MaskG=1,MaskB=0,MaskA=0) + Outputs[3]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=1,MaskA=0) + Outputs[4]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=0,MaskA=1) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionDepthOfFieldFunction.uc b/exported/Engine/Classes/MaterialExpressionDepthOfFieldFunction.uc new file mode 100755 index 00000000..3af0d2e1 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionDepthOfFieldFunction.uc @@ -0,0 +1,19 @@ +class MaterialExpressionDepthOfFieldFunction extends MaterialExpression + native(Material) + hidecategories(Object); + +enum EDepthOfFieldFunctionValue +{ + TDOF_NearAndFarMask, // 0 + TDOF_NearMask, // 1 + TDOF_FarMask, // 2 + TDOF_MAX // 3 +}; + +var() MaterialExpressionDepthOfFieldFunction.EDepthOfFieldFunctionValue FunctionValue; +var ExpressionInput Depth; + +defaultproperties +{ + MenuCategories[0]="Utility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionDeriveNormalZ.uc b/exported/Engine/Classes/MaterialExpressionDeriveNormalZ.uc new file mode 100755 index 00000000..df45f70d --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionDeriveNormalZ.uc @@ -0,0 +1,11 @@ +class MaterialExpressionDeriveNormalZ extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput InXY; + +defaultproperties +{ + MenuCategories[0]="VectorOps" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionDesaturation.uc b/exported/Engine/Classes/MaterialExpressionDesaturation.uc new file mode 100755 index 00000000..b67d4107 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionDesaturation.uc @@ -0,0 +1,15 @@ +class MaterialExpressionDesaturation extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Input; +var ExpressionInput Percent; +var() LinearColor LuminanceFactors; + +defaultproperties +{ + LuminanceFactors=(R=0.3000000,G=0.5900000,B=0.1100000,A=0.0000000) + MenuCategories[0]="Color" + MenuCategories[1]="Utility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionDestColor.uc b/exported/Engine/Classes/MaterialExpressionDestColor.uc new file mode 100755 index 00000000..fcd18ece --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionDestColor.uc @@ -0,0 +1,15 @@ +class MaterialExpressionDestColor extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Destination" + MenuCategories[1]="Color" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=0) + Outputs[1]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) + Outputs[2]=(OutputName="",Mask=1,MaskR=0,MaskG=1,MaskB=0,MaskA=0) + Outputs[3]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=1,MaskA=0) + Outputs[4]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=0,MaskA=1) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionDestDepth.uc b/exported/Engine/Classes/MaterialExpressionDestDepth.uc new file mode 100755 index 00000000..00c71924 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionDestDepth.uc @@ -0,0 +1,13 @@ +class MaterialExpressionDestDepth extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() bool bNormalize; + +defaultproperties +{ + MenuCategories[0]="Destination" + MenuCategories[1]="Depth" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionDistance.uc b/exported/Engine/Classes/MaterialExpressionDistance.uc new file mode 100755 index 00000000..a82ab2ed --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionDistance.uc @@ -0,0 +1,11 @@ +class MaterialExpressionDistance extends MaterialExpression + native(Material) + hidecategories(Object); + +var ExpressionInput A; +var ExpressionInput B; + +defaultproperties +{ + MenuCategories[0]="HighLevel" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionDivide.uc b/exported/Engine/Classes/MaterialExpressionDivide.uc new file mode 100755 index 00000000..5920253e --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionDivide.uc @@ -0,0 +1,11 @@ +class MaterialExpressionDivide extends MaterialExpression + native(Material) + hidecategories(Object); + +var ExpressionInput A; +var ExpressionInput B; + +defaultproperties +{ + MenuCategories[0]="Math" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionDotProduct.uc b/exported/Engine/Classes/MaterialExpressionDotProduct.uc new file mode 100755 index 00000000..f4ff11a8 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionDotProduct.uc @@ -0,0 +1,12 @@ +class MaterialExpressionDotProduct extends MaterialExpression + native(Material) + hidecategories(Object); + +var ExpressionInput A; +var ExpressionInput B; + +defaultproperties +{ + MenuCategories[0]="Math" + MenuCategories[1]="VectorOps" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionDynamicParameter.uc b/exported/Engine/Classes/MaterialExpressionDynamicParameter.uc new file mode 100755 index 00000000..e15d7bde --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionDynamicParameter.uc @@ -0,0 +1,22 @@ +class MaterialExpressionDynamicParameter extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() editfixedsize array ParamNames; + +defaultproperties +{ + ParamNames[0]="Param1" + ParamNames[1]="Param2" + ParamNames[2]="Param3" + ParamNames[3]="Param4" + bShowOutputNameOnPin=true + bHidePreviewWindow=true + MenuCategories[0]="Particles" + MenuCategories[1]="Parameters" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) + Outputs[1]=(OutputName="",Mask=1,MaskR=0,MaskG=1,MaskB=0,MaskA=0) + Outputs[2]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=1,MaskA=0) + Outputs[3]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=0,MaskA=1) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionFlipBookSample.uc b/exported/Engine/Classes/MaterialExpressionFlipBookSample.uc new file mode 100755 index 00000000..e3e4debe --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionFlipBookSample.uc @@ -0,0 +1,4 @@ +class MaterialExpressionFlipBookSample extends MaterialExpressionTextureSample + native(Material) + collapsecategories + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/MaterialExpressionFloor.uc b/exported/Engine/Classes/MaterialExpressionFloor.uc new file mode 100755 index 00000000..2827cc39 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionFloor.uc @@ -0,0 +1,11 @@ +class MaterialExpressionFloor extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Input; + +defaultproperties +{ + MenuCategories[0]="Math" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionFluidNormal.uc b/exported/Engine/Classes/MaterialExpressionFluidNormal.uc new file mode 100755 index 00000000..b21a869f --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionFluidNormal.uc @@ -0,0 +1,11 @@ +class MaterialExpressionFluidNormal extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Coordinates; + +defaultproperties +{ + MenuCategories[0]="Texture" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionFmod.uc b/exported/Engine/Classes/MaterialExpressionFmod.uc new file mode 100755 index 00000000..fc1c7d03 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionFmod.uc @@ -0,0 +1,12 @@ +class MaterialExpressionFmod extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput A; +var ExpressionInput B; + +defaultproperties +{ + MenuCategories[0]="Math" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionFoliageImpulseDirection.uc b/exported/Engine/Classes/MaterialExpressionFoliageImpulseDirection.uc new file mode 100755 index 00000000..7317b593 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionFoliageImpulseDirection.uc @@ -0,0 +1,11 @@ +class MaterialExpressionFoliageImpulseDirection extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Vectors" + MenuCategories[1]="Coordinates" + MenuCategories[2]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionFoliageNormalizedRotationAxisAndAngle.uc b/exported/Engine/Classes/MaterialExpressionFoliageNormalizedRotationAxisAndAngle.uc new file mode 100755 index 00000000..1f8c46c2 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionFoliageNormalizedRotationAxisAndAngle.uc @@ -0,0 +1,11 @@ +class MaterialExpressionFoliageNormalizedRotationAxisAndAngle extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Vectors" + MenuCategories[1]="Coordinates" + MenuCategories[2]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionFontSample.uc b/exported/Engine/Classes/MaterialExpressionFontSample.uc new file mode 100755 index 00000000..8f602190 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionFontSample.uc @@ -0,0 +1,18 @@ +class MaterialExpressionFontSample extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() Font Font; +var() int FontTexturePage; + +defaultproperties +{ + MenuCategories[0]="Font" + MenuCategories[1]="Texture" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=0) + Outputs[1]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) + Outputs[2]=(OutputName="",Mask=1,MaskR=0,MaskG=1,MaskB=0,MaskA=0) + Outputs[3]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=1,MaskA=0) + Outputs[4]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=0,MaskA=1) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionFontSampleParameter.uc b/exported/Engine/Classes/MaterialExpressionFontSampleParameter.uc new file mode 100755 index 00000000..21378f80 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionFontSampleParameter.uc @@ -0,0 +1,15 @@ +class MaterialExpressionFontSampleParameter extends MaterialExpressionFontSample + native(Material) + collapsecategories + hidecategories(Object,Object,Object); + +var() name ParameterName; +var const Guid ExpressionGUID; +var() name Group; + +defaultproperties +{ + bIsParameterExpression=true + MenuCategories[0]="Font" + MenuCategories[1]="Parameters" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionFrac.uc b/exported/Engine/Classes/MaterialExpressionFrac.uc new file mode 100755 index 00000000..aaa6cd71 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionFrac.uc @@ -0,0 +1,11 @@ +class MaterialExpressionFrac extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Input; + +defaultproperties +{ + MenuCategories[0]="Math" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionFresnel.uc b/exported/Engine/Classes/MaterialExpressionFresnel.uc new file mode 100755 index 00000000..c571043f --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionFresnel.uc @@ -0,0 +1,13 @@ +class MaterialExpressionFresnel extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() float Exponent; +var ExpressionInput Normal; + +defaultproperties +{ + Exponent=3.0000000 + MenuCategories[0]="VectorOps" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionFunctionInput.uc b/exported/Engine/Classes/MaterialExpressionFunctionInput.uc new file mode 100755 index 00000000..08b432ea --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionFunctionInput.uc @@ -0,0 +1,35 @@ +class MaterialExpressionFunctionInput extends MaterialExpression + native(Material) + hidecategories(Object,Object); + +enum EFunctionInputType +{ + FunctionInput_Scalar, // 0 + FunctionInput_Vector2, // 1 + FunctionInput_Vector3, // 2 + FunctionInput_Vector4, // 3 + FunctionInput_Texture2D, // 4 + FunctionInput_TextureCube, // 5 + FunctionInput_StaticBool, // 6 + FunctionInput_MAX // 7 +}; + +var ExpressionInput Preview; +var() string InputName; +var() string Description; +var const Guid Id; +var() MaterialExpressionFunctionInput.EFunctionInputType InputType; +var() Vector4 PreviewValue; +var() bool bUsePreviewValueAsDefault; +var transient bool bCompilingFunctionPreview; +var() int SortPriority; + +defaultproperties +{ + InputName="In" + InputType=EFunctionInputType.FunctionInput_Vector3 + PreviewValue=(X=0.0000000,Y=0.0000000,Z=0.0000000,W=1.0000000) + bCompilingFunctionPreview=true + BorderColor=(R=185,G=255,B=172,A=0) + MenuCategories[0]="Functions" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionFunctionOutput.uc b/exported/Engine/Classes/MaterialExpressionFunctionOutput.uc new file mode 100755 index 00000000..c327990a --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionFunctionOutput.uc @@ -0,0 +1,18 @@ +class MaterialExpressionFunctionOutput extends MaterialExpression + native(Material) + hidecategories(Object,Object); + +var() string OutputName; +var() string Description; +var() int SortPriority; +var ExpressionInput A; +var bool bLastPreviewed; +var const Guid Id; + +defaultproperties +{ + OutputName="Result" + bShowOutputs=false + BorderColor=(R=255,G=155,B=0,A=0) + MenuCategories[0]="Functions" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionIf.uc b/exported/Engine/Classes/MaterialExpressionIf.uc new file mode 100755 index 00000000..1307a5b4 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionIf.uc @@ -0,0 +1,15 @@ +class MaterialExpressionIf extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput A; +var ExpressionInput B; +var ExpressionInput AGreaterThanB; +var ExpressionInput AEqualsB; +var ExpressionInput ALessThanB; + +defaultproperties +{ + MenuCategories[0]="Utility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionLandscapeLayerBlend.uc b/exported/Engine/Classes/MaterialExpressionLandscapeLayerBlend.uc new file mode 100755 index 00000000..a2226771 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionLandscapeLayerBlend.uc @@ -0,0 +1,41 @@ +class MaterialExpressionLandscapeLayerBlend extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +enum ELandscapeLayerBlendType +{ + LB_AlphaBlend, // 0 + LB_HeightBlend, // 1 + LB_MAX // 2 +}; + +struct native LayerBlendInput +{ + var() name LayerName; + var() MaterialExpressionLandscapeLayerBlend.ELandscapeLayerBlendType BlendType; + var edithide ExpressionInput LayerInput; + var edithide ExpressionInput HeightInput; + var() float PreviewWeight; + var native const transient Pointer InstanceOverride; + + structdefaultproperties + { + LayerName="None" + BlendType=ELandscapeLayerBlendType.LB_AlphaBlend + LayerInput=(Expression=none,OutputIndex=0,InputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0,GCC64_Padding=0) + HeightInput=(Expression=none,OutputIndex=0,InputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0,GCC64_Padding=0) + PreviewWeight=0.0000000 + } +}; + +var() array Layers; +var const Guid ExpressionGUID; + +defaultproperties +{ + bIsParameterExpression=true + bUsedByStaticParameterSet=true + MenuCategories[0]="Terrain" + MenuCategories[1]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionLensFlareIntensity.uc b/exported/Engine/Classes/MaterialExpressionLensFlareIntensity.uc new file mode 100755 index 00000000..7efa95d8 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionLensFlareIntensity.uc @@ -0,0 +1,9 @@ +class MaterialExpressionLensFlareIntensity extends MaterialExpression + native(Material) + hidecategories(Object); + +defaultproperties +{ + MenuCategories[0]="LensFlare" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionLensFlareOcclusion.uc b/exported/Engine/Classes/MaterialExpressionLensFlareOcclusion.uc new file mode 100755 index 00000000..d1f7ef14 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionLensFlareOcclusion.uc @@ -0,0 +1,9 @@ +class MaterialExpressionLensFlareOcclusion extends MaterialExpression + native(Material) + hidecategories(Object); + +defaultproperties +{ + MenuCategories[0]="Obsolete" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionLensFlareRadialDistance.uc b/exported/Engine/Classes/MaterialExpressionLensFlareRadialDistance.uc new file mode 100755 index 00000000..35f8af9c --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionLensFlareRadialDistance.uc @@ -0,0 +1,9 @@ +class MaterialExpressionLensFlareRadialDistance extends MaterialExpression + native(Material) + hidecategories(Object); + +defaultproperties +{ + MenuCategories[0]="LensFlare" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionLensFlareRayDistance.uc b/exported/Engine/Classes/MaterialExpressionLensFlareRayDistance.uc new file mode 100755 index 00000000..42d2bfcd --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionLensFlareRayDistance.uc @@ -0,0 +1,9 @@ +class MaterialExpressionLensFlareRayDistance extends MaterialExpression + native(Material) + hidecategories(Object); + +defaultproperties +{ + MenuCategories[0]="LensFlare" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionLensFlareSourceDistance.uc b/exported/Engine/Classes/MaterialExpressionLensFlareSourceDistance.uc new file mode 100755 index 00000000..6d1a8311 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionLensFlareSourceDistance.uc @@ -0,0 +1,9 @@ +class MaterialExpressionLensFlareSourceDistance extends MaterialExpression + native(Material) + hidecategories(Object); + +defaultproperties +{ + MenuCategories[0]="LensFlare" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionLightVector.uc b/exported/Engine/Classes/MaterialExpressionLightVector.uc new file mode 100755 index 00000000..3b854c26 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionLightVector.uc @@ -0,0 +1,9 @@ +class MaterialExpressionLightVector extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Vectors" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionLightmapUVs.uc b/exported/Engine/Classes/MaterialExpressionLightmapUVs.uc new file mode 100755 index 00000000..df3475bc --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionLightmapUVs.uc @@ -0,0 +1,12 @@ +class MaterialExpressionLightmapUVs extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + bShowOutputNameOnPin=true + bHidePreviewWindow=true + MenuCategories[0]="Coordinates" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=1,MaskB=0,MaskA=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionLightmassReplace.uc b/exported/Engine/Classes/MaterialExpressionLightmassReplace.uc new file mode 100755 index 00000000..0765d29b --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionLightmassReplace.uc @@ -0,0 +1,11 @@ +class MaterialExpressionLightmassReplace extends MaterialExpression + native(Material) + hidecategories(Object); + +var ExpressionInput Realtime; +var ExpressionInput Lightmass; + +defaultproperties +{ + MenuCategories[0]="Utility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionLinearInterpolate.uc b/exported/Engine/Classes/MaterialExpressionLinearInterpolate.uc new file mode 100755 index 00000000..2d7c4641 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionLinearInterpolate.uc @@ -0,0 +1,13 @@ +class MaterialExpressionLinearInterpolate extends MaterialExpression + native(Material) + hidecategories(Object); + +var ExpressionInput A; +var ExpressionInput B; +var ExpressionInput Alpha; + +defaultproperties +{ + MenuCategories[0]="Math" + MenuCategories[1]="Utility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionMaterialFunctionCall.uc b/exported/Engine/Classes/MaterialExpressionMaterialFunctionCall.uc new file mode 100755 index 00000000..c08234bc --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionMaterialFunctionCall.uc @@ -0,0 +1,43 @@ +class MaterialExpressionMaterialFunctionCall extends MaterialExpression + native(Material) + hidecategories(Object,Object); + +struct native FunctionExpressionInput +{ + var transient MaterialExpressionFunctionInput ExpressionInput; + var Guid ExpressionInputId; + var ExpressionInput Input; + + structdefaultproperties + { + ExpressionInput=none + ExpressionInputId=(A=0,B=0,C=0,D=0) + Input=(Expression=none,OutputIndex=0,InputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0,GCC64_Padding=0) + } +}; + +struct native FunctionExpressionOutput +{ + var transient MaterialExpressionFunctionOutput ExpressionOutput; + var Guid ExpressionOutputId; + var ExpressionOutput Output; + + structdefaultproperties + { + ExpressionOutput=none + ExpressionOutputId=(A=0,B=0,C=0,D=0) + Output=(OutputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0) + } +}; + +var() MaterialFunction MaterialFunction; +var array FunctionInputs; +var array FunctionOutputs; + +defaultproperties +{ + bShowOutputNameOnPin=true + bHidePreviewWindow=true + BorderColor=(R=0,G=116,B=255,A=0) + MenuCategories[0]="Functions" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionMeshEmitterDynamicParameter.uc b/exported/Engine/Classes/MaterialExpressionMeshEmitterDynamicParameter.uc new file mode 100755 index 00000000..22859f3f --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionMeshEmitterDynamicParameter.uc @@ -0,0 +1,11 @@ +class MaterialExpressionMeshEmitterDynamicParameter extends MaterialExpressionDynamicParameter + native(Material) + collapsecategories + hidecategories(Object,Object,Object); + +defaultproperties +{ + MenuCategories[0]="Particles" + MenuCategories[1]="Parameters" + MenuCategories[2]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionMeshEmitterVertexColor.uc b/exported/Engine/Classes/MaterialExpressionMeshEmitterVertexColor.uc new file mode 100755 index 00000000..e82ab1a4 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionMeshEmitterVertexColor.uc @@ -0,0 +1,16 @@ +class MaterialExpressionMeshEmitterVertexColor extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Particles" + MenuCategories[1]="Constants" + MenuCategories[2]="WorldPosOffset" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=0) + Outputs[1]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) + Outputs[2]=(OutputName="",Mask=1,MaskR=0,MaskG=1,MaskB=0,MaskA=0) + Outputs[3]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=1,MaskA=0) + Outputs[4]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=0,MaskA=1) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionMeshSubUV.uc b/exported/Engine/Classes/MaterialExpressionMeshSubUV.uc new file mode 100755 index 00000000..e17f5251 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionMeshSubUV.uc @@ -0,0 +1,10 @@ +class MaterialExpressionMeshSubUV extends MaterialExpressionTextureSample + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Texture" + MenuCategories[1]="Particles" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionMeshSubUVBlend.uc b/exported/Engine/Classes/MaterialExpressionMeshSubUVBlend.uc new file mode 100755 index 00000000..e5db7799 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionMeshSubUVBlend.uc @@ -0,0 +1,4 @@ +class MaterialExpressionMeshSubUVBlend extends MaterialExpressionMeshSubUV + native(Material) + collapsecategories + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/MaterialExpressionMultiply.uc b/exported/Engine/Classes/MaterialExpressionMultiply.uc new file mode 100755 index 00000000..999906c0 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionMultiply.uc @@ -0,0 +1,11 @@ +class MaterialExpressionMultiply extends MaterialExpression + native(Material) + hidecategories(Object); + +var ExpressionInput A; +var ExpressionInput B; + +defaultproperties +{ + MenuCategories[0]="Math" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionNormalize.uc b/exported/Engine/Classes/MaterialExpressionNormalize.uc new file mode 100755 index 00000000..5da74ffd --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionNormalize.uc @@ -0,0 +1,11 @@ +class MaterialExpressionNormalize extends MaterialExpression + native(Material) + hidecategories(Object); + +var ExpressionInput VectorInput; + +defaultproperties +{ + MenuCategories[0]="Math" + MenuCategories[1]="VectorOps" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionObjectOrientation.uc b/exported/Engine/Classes/MaterialExpressionObjectOrientation.uc new file mode 100755 index 00000000..66f30246 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionObjectOrientation.uc @@ -0,0 +1,11 @@ +class MaterialExpressionObjectOrientation extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Vectors" + MenuCategories[1]="Coordinates" + MenuCategories[2]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionObjectRadius.uc b/exported/Engine/Classes/MaterialExpressionObjectRadius.uc new file mode 100755 index 00000000..6e9792d8 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionObjectRadius.uc @@ -0,0 +1,10 @@ +class MaterialExpressionObjectRadius extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Coordinates" + MenuCategories[1]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionObjectWorldPosition.uc b/exported/Engine/Classes/MaterialExpressionObjectWorldPosition.uc new file mode 100755 index 00000000..c6f2dcf1 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionObjectWorldPosition.uc @@ -0,0 +1,11 @@ +class MaterialExpressionObjectWorldPosition extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Vectors" + MenuCategories[1]="Coordinates" + MenuCategories[2]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionOcclusionPercentage.uc b/exported/Engine/Classes/MaterialExpressionOcclusionPercentage.uc new file mode 100755 index 00000000..df8ed3d8 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionOcclusionPercentage.uc @@ -0,0 +1,10 @@ +class MaterialExpressionOcclusionPercentage extends MaterialExpression + native(Material) + hidecategories(Object); + +defaultproperties +{ + MenuCategories[0]="LensFlare" + MenuCategories[1]="Particles" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionOneMinus.uc b/exported/Engine/Classes/MaterialExpressionOneMinus.uc new file mode 100755 index 00000000..4aabafbd --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionOneMinus.uc @@ -0,0 +1,11 @@ +class MaterialExpressionOneMinus extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Input; + +defaultproperties +{ + MenuCategories[0]="Math" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionPanner.uc b/exported/Engine/Classes/MaterialExpressionPanner.uc new file mode 100755 index 00000000..f16397cc --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionPanner.uc @@ -0,0 +1,15 @@ +class MaterialExpressionPanner extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Coordinate; +var ExpressionInput Time; +var() float SpeedX; +var() float SpeedY; + +defaultproperties +{ + MenuCategories[0]="Coordinates" + MenuCategories[1]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionParameter.uc b/exported/Engine/Classes/MaterialExpressionParameter.uc new file mode 100755 index 00000000..d9e45360 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionParameter.uc @@ -0,0 +1,14 @@ +class MaterialExpressionParameter extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() name ParameterName; +var const Guid ExpressionGUID; +var() name Group; + +defaultproperties +{ + bIsParameterExpression=true + MenuCategories[0]="Parameters" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionParticleMacroUV.uc b/exported/Engine/Classes/MaterialExpressionParticleMacroUV.uc new file mode 100755 index 00000000..d964cc99 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionParticleMacroUV.uc @@ -0,0 +1,10 @@ +class MaterialExpressionParticleMacroUV extends MaterialExpression + native(Material) + hidecategories(Object); + +var() bool bUseViewSpace; + +defaultproperties +{ + MenuCategories[0]="Particles" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionParticleSubUV.uc b/exported/Engine/Classes/MaterialExpressionParticleSubUV.uc new file mode 100755 index 00000000..4dd53dd2 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionParticleSubUV.uc @@ -0,0 +1,10 @@ +class MaterialExpressionParticleSubUV extends MaterialExpressionTextureSample + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Texture" + MenuCategories[1]="Particles" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionPerInstanceRandom.uc b/exported/Engine/Classes/MaterialExpressionPerInstanceRandom.uc new file mode 100755 index 00000000..e249a3e5 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionPerInstanceRandom.uc @@ -0,0 +1,9 @@ +class MaterialExpressionPerInstanceRandom extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Utility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionPixelDepth.uc b/exported/Engine/Classes/MaterialExpressionPixelDepth.uc new file mode 100755 index 00000000..fdbc69d4 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionPixelDepth.uc @@ -0,0 +1,12 @@ +class MaterialExpressionPixelDepth extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() bool bNormalize; + +defaultproperties +{ + MenuCategories[0]="Depth" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionPower.uc b/exported/Engine/Classes/MaterialExpressionPower.uc new file mode 100755 index 00000000..ee775e4e --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionPower.uc @@ -0,0 +1,12 @@ +class MaterialExpressionPower extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Base; +var ExpressionInput Exponent; + +defaultproperties +{ + MenuCategories[0]="Math" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionQualitySwitch.uc b/exported/Engine/Classes/MaterialExpressionQualitySwitch.uc new file mode 100755 index 00000000..5e06f89a --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionQualitySwitch.uc @@ -0,0 +1,13 @@ +class MaterialExpressionQualitySwitch extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput High; +var ExpressionInput Medium; +var ExpressionInput Low; + +defaultproperties +{ + MenuCategories[0]="Utility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionReflectionVector.uc b/exported/Engine/Classes/MaterialExpressionReflectionVector.uc new file mode 100755 index 00000000..2c683404 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionReflectionVector.uc @@ -0,0 +1,9 @@ +class MaterialExpressionReflectionVector extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Vectors" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionRotateAboutAxis.uc b/exported/Engine/Classes/MaterialExpressionRotateAboutAxis.uc new file mode 100755 index 00000000..2a8761a2 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionRotateAboutAxis.uc @@ -0,0 +1,13 @@ +class MaterialExpressionRotateAboutAxis extends MaterialExpression + native(Material) + hidecategories(Object); + +var ExpressionInput NormalizedRotationAxisAndAngle; +var ExpressionInput PositionOnAxis; +var ExpressionInput Position; + +defaultproperties +{ + MenuCategories[0]="Math" + MenuCategories[1]="Utility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionRotator.uc b/exported/Engine/Classes/MaterialExpressionRotator.uc new file mode 100755 index 00000000..0cd30c51 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionRotator.uc @@ -0,0 +1,19 @@ +class MaterialExpressionRotator extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Coordinate; +var ExpressionInput Time; +var() float CenterX; +var() float CenterY; +var() float Speed; + +defaultproperties +{ + CenterX=0.5000000 + CenterY=0.5000000 + Speed=0.2500000 + MenuCategories[0]="Coordinates" + MenuCategories[1]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionScalarParameter.uc b/exported/Engine/Classes/MaterialExpressionScalarParameter.uc new file mode 100755 index 00000000..d6d5ac9c --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionScalarParameter.uc @@ -0,0 +1,12 @@ +class MaterialExpressionScalarParameter extends MaterialExpressionParameter + native(Material) + collapsecategories + hidecategories(Object,Object,Object); + +var() float DefaultValue; + +defaultproperties +{ + MenuCategories[0]="Parameters" + MenuCategories[1]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionSceneDepth.uc b/exported/Engine/Classes/MaterialExpressionSceneDepth.uc new file mode 100755 index 00000000..80693173 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionSceneDepth.uc @@ -0,0 +1,13 @@ +class MaterialExpressionSceneDepth extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Coordinates; +var() bool bNormalize; + +defaultproperties +{ + MenuCategories[0]="Depth" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionSceneTexture.uc b/exported/Engine/Classes/MaterialExpressionSceneTexture.uc new file mode 100755 index 00000000..c971eb30 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionSceneTexture.uc @@ -0,0 +1,24 @@ +class MaterialExpressionSceneTexture extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +enum ESceneTextureType +{ + SceneTex_Lighting, // 0 + SceneTex_MAX // 1 +}; + +var ExpressionInput Coordinates; +var() MaterialExpressionSceneTexture.ESceneTextureType SceneTextureType; +var() bool ScreenAlign; + +defaultproperties +{ + MenuCategories[0]="Texture" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=0) + Outputs[1]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) + Outputs[2]=(OutputName="",Mask=1,MaskR=0,MaskG=1,MaskB=0,MaskA=0) + Outputs[3]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=1,MaskA=0) + Outputs[4]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=0,MaskA=1) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionScreenPosition.uc b/exported/Engine/Classes/MaterialExpressionScreenPosition.uc new file mode 100755 index 00000000..a7a1ca83 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionScreenPosition.uc @@ -0,0 +1,11 @@ +class MaterialExpressionScreenPosition extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() bool ScreenAlign; + +defaultproperties +{ + MenuCategories[0]="Coordinates" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionScreenSize.uc b/exported/Engine/Classes/MaterialExpressionScreenSize.uc new file mode 100755 index 00000000..ab92af09 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionScreenSize.uc @@ -0,0 +1,11 @@ +class MaterialExpressionScreenSize extends MaterialExpression + native(Material) + hidecategories(Object); + +defaultproperties +{ + MenuCategories[0]="Vectors" + Outputs[0]=(OutputName="X/Y",Mask=1,MaskR=1,MaskG=1,MaskB=0,MaskA=0) + Outputs[1]=(OutputName="X",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) + Outputs[2]=(OutputName="Y",Mask=1,MaskR=0,MaskG=1,MaskB=0,MaskA=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionSine.uc b/exported/Engine/Classes/MaterialExpressionSine.uc new file mode 100755 index 00000000..c2f929a9 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionSine.uc @@ -0,0 +1,13 @@ +class MaterialExpressionSine extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Input; +var() float Period; + +defaultproperties +{ + Period=1.0000000 + MenuCategories[0]="Math" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionSphereMask.uc b/exported/Engine/Classes/MaterialExpressionSphereMask.uc new file mode 100755 index 00000000..d3c7ebf9 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionSphereMask.uc @@ -0,0 +1,17 @@ +class MaterialExpressionSphereMask extends MaterialExpression + native(Material) + hidecategories(Object); + +var ExpressionInput A; +var ExpressionInput B; +var ExpressionInput Radius; +var ExpressionInput Hardness; +var() float AttenuationRadius; +var() float HardnessPercent; + +defaultproperties +{ + AttenuationRadius=256.0000000 + HardnessPercent=100.0000000 + MenuCategories[0]="HighLevel" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionSquareRoot.uc b/exported/Engine/Classes/MaterialExpressionSquareRoot.uc new file mode 100755 index 00000000..b8c5c126 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionSquareRoot.uc @@ -0,0 +1,11 @@ +class MaterialExpressionSquareRoot extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var ExpressionInput Input; + +defaultproperties +{ + MenuCategories[0]="Math" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionStaticBool.uc b/exported/Engine/Classes/MaterialExpressionStaticBool.uc new file mode 100755 index 00000000..0b05025e --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionStaticBool.uc @@ -0,0 +1,11 @@ +class MaterialExpressionStaticBool extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() bool Value; + +defaultproperties +{ + MenuCategories[0]="FunctionUtility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionStaticBoolParameter.uc b/exported/Engine/Classes/MaterialExpressionStaticBoolParameter.uc new file mode 100755 index 00000000..c320ddab --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionStaticBoolParameter.uc @@ -0,0 +1,13 @@ +class MaterialExpressionStaticBoolParameter extends MaterialExpressionParameter + native(Material) + collapsecategories + hidecategories(Object,Object,Object); + +var() bool DefaultValue; +var() bool ExtendedCaptionDisplay; +var native const transient Pointer InstanceOverride; + +defaultproperties +{ + bUsedByStaticParameterSet=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionStaticComponentMaskParameter.uc b/exported/Engine/Classes/MaterialExpressionStaticComponentMaskParameter.uc new file mode 100755 index 00000000..975c0c7a --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionStaticComponentMaskParameter.uc @@ -0,0 +1,16 @@ +class MaterialExpressionStaticComponentMaskParameter extends MaterialExpressionParameter + native(Material) + collapsecategories + hidecategories(Object,Object,Object); + +var ExpressionInput Input; +var() bool DefaultR; +var() bool DefaultG; +var() bool DefaultB; +var() bool DefaultA; +var native const transient Pointer InstanceOverride; + +defaultproperties +{ + bUsedByStaticParameterSet=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionStaticSwitch.uc b/exported/Engine/Classes/MaterialExpressionStaticSwitch.uc new file mode 100755 index 00000000..e1b85bf7 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionStaticSwitch.uc @@ -0,0 +1,16 @@ +class MaterialExpressionStaticSwitch extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() bool DefaultValue; +var() bool ExtendedCaptionDisplay; +var ExpressionInput A; +var ExpressionInput B; +var ExpressionInput Value; + +defaultproperties +{ + MenuCategories[0]="FunctionUtility" + MenuCategories[1]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionStaticSwitchParameter.uc b/exported/Engine/Classes/MaterialExpressionStaticSwitchParameter.uc new file mode 100755 index 00000000..5da17e89 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionStaticSwitchParameter.uc @@ -0,0 +1,13 @@ +class MaterialExpressionStaticSwitchParameter extends MaterialExpressionStaticBoolParameter + native(Material) + collapsecategories + hidecategories(Object,Object,Object,Object); + +var ExpressionInput A; +var ExpressionInput B; + +defaultproperties +{ + MenuCategories[0]="Parameters" + MenuCategories[1]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionSubtract.uc b/exported/Engine/Classes/MaterialExpressionSubtract.uc new file mode 100755 index 00000000..ccbf316a --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionSubtract.uc @@ -0,0 +1,11 @@ +class MaterialExpressionSubtract extends MaterialExpression + native(Material) + hidecategories(Object); + +var ExpressionInput A; +var ExpressionInput B; + +defaultproperties +{ + MenuCategories[0]="Math" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTerrainLayerCoords.uc b/exported/Engine/Classes/MaterialExpressionTerrainLayerCoords.uc new file mode 100755 index 00000000..6049e6b3 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTerrainLayerCoords.uc @@ -0,0 +1,25 @@ +class MaterialExpressionTerrainLayerCoords extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +enum ETerrainCoordMappingType +{ + TCMT_Auto, // 0 + TCMT_XY, // 1 + TCMT_XZ, // 2 + TCMT_YZ, // 3 + TCMT_MAX // 4 +}; + +var() MaterialExpressionTerrainLayerCoords.ETerrainCoordMappingType MappingType; +var() float MappingScale; +var() float MappingRotation; +var() float MappingPanU; +var() float MappingPanV; + +defaultproperties +{ + MenuCategories[0]="Terrain" + MenuCategories[1]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTerrainLayerSwitch.uc b/exported/Engine/Classes/MaterialExpressionTerrainLayerSwitch.uc new file mode 100755 index 00000000..df72ebe3 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTerrainLayerSwitch.uc @@ -0,0 +1,20 @@ +class MaterialExpressionTerrainLayerSwitch extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var native const transient Pointer InstanceOverride; +var ExpressionInput LayerUsed; +var ExpressionInput LayerNotUsed; +var() name ParameterName; +var() bool PreviewUsed; +var const Guid ExpressionGUID; + +defaultproperties +{ + PreviewUsed=true + bIsParameterExpression=true + bUsedByStaticParameterSet=true + MenuCategories[0]="Terrain" + MenuCategories[1]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTerrainLayerWeight.uc b/exported/Engine/Classes/MaterialExpressionTerrainLayerWeight.uc new file mode 100755 index 00000000..290e8167 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTerrainLayerWeight.uc @@ -0,0 +1,19 @@ +class MaterialExpressionTerrainLayerWeight extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var native const transient Pointer InstanceOverride; +var ExpressionInput Base; +var ExpressionInput Layer; +var() name ParameterName; +var() float PreviewWeight; +var const Guid ExpressionGUID; + +defaultproperties +{ + bIsParameterExpression=true + bUsedByStaticParameterSet=true + MenuCategories[0]="Terrain" + MenuCategories[1]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTexelSize.uc b/exported/Engine/Classes/MaterialExpressionTexelSize.uc new file mode 100755 index 00000000..f91386aa --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTexelSize.uc @@ -0,0 +1,11 @@ +class MaterialExpressionTexelSize extends MaterialExpression + native(Material) + hidecategories(Object); + +defaultproperties +{ + MenuCategories[0]="Vectors" + Outputs[0]=(OutputName="X/Y",Mask=1,MaskR=1,MaskG=1,MaskB=0,MaskA=0) + Outputs[1]=(OutputName="X",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) + Outputs[2]=(OutputName="Y",Mask=1,MaskR=0,MaskG=1,MaskB=0,MaskA=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTextureCoordinate.uc b/exported/Engine/Classes/MaterialExpressionTextureCoordinate.uc new file mode 100755 index 00000000..395336b8 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTextureCoordinate.uc @@ -0,0 +1,18 @@ +class MaterialExpressionTextureCoordinate extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() int CoordinateIndex; +var() float UTiling; +var() float VTiling; +var() bool UnMirrorU; +var() bool UnMirrorV; + +defaultproperties +{ + UTiling=1.0000000 + VTiling=1.0000000 + MenuCategories[0]="Coordinates" + MenuCategories[1]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTextureObject.uc b/exported/Engine/Classes/MaterialExpressionTextureObject.uc new file mode 100755 index 00000000..0dd20e67 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTextureObject.uc @@ -0,0 +1,13 @@ +class MaterialExpressionTextureObject extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() Texture Texture; + +defaultproperties +{ + Texture=Texture2D'EngineResources.DefaultTexture' + MenuCategories[0]="Texture" + MenuCategories[1]="FunctionUtility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTextureObjectParameter.uc b/exported/Engine/Classes/MaterialExpressionTextureObjectParameter.uc new file mode 100755 index 00000000..182abed1 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTextureObjectParameter.uc @@ -0,0 +1,12 @@ +class MaterialExpressionTextureObjectParameter extends MaterialExpressionTextureSampleParameter + native(Material) + collapsecategories + hidecategories(Object,Object,Object,Object); + +defaultproperties +{ + Texture=Texture2D'EngineResources.DefaultTexture' + MenuCategories[0]="Texture" + MenuCategories[1]="Parameters" + Outputs[0]=(OutputName="",Mask=0,MaskR=0,MaskG=0,MaskB=0,MaskA=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTextureSample.uc b/exported/Engine/Classes/MaterialExpressionTextureSample.uc new file mode 100755 index 00000000..aed70be7 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTextureSample.uc @@ -0,0 +1,18 @@ +class MaterialExpressionTextureSample extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() Texture Texture; +var ExpressionInput Coordinates; +var ExpressionInput TextureObject; + +defaultproperties +{ + MenuCategories[0]="Texture" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=0) + Outputs[1]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) + Outputs[2]=(OutputName="",Mask=1,MaskR=0,MaskG=1,MaskB=0,MaskA=0) + Outputs[3]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=1,MaskA=0) + Outputs[4]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=0,MaskA=1) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTextureSampleParameter.uc b/exported/Engine/Classes/MaterialExpressionTextureSampleParameter.uc new file mode 100755 index 00000000..b6d6e371 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTextureSampleParameter.uc @@ -0,0 +1,15 @@ +class MaterialExpressionTextureSampleParameter extends MaterialExpressionTextureSample + abstract + native(Material) + collapsecategories + hidecategories(Object,Object,Object); + +var() name ParameterName; +var const Guid ExpressionGUID; +var() name Group; + +defaultproperties +{ + bIsParameterExpression=true + MenuCategories[0]="Obsolete" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTextureSampleParameter2D.uc b/exported/Engine/Classes/MaterialExpressionTextureSampleParameter2D.uc new file mode 100755 index 00000000..53ffec62 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTextureSampleParameter2D.uc @@ -0,0 +1,11 @@ +class MaterialExpressionTextureSampleParameter2D extends MaterialExpressionTextureSampleParameter + native(Material) + collapsecategories + hidecategories(Object,Object,Object,Object); + +defaultproperties +{ + Texture=Texture2D'EngineResources.DefaultTexture' + MenuCategories[0]="Texture" + MenuCategories[1]="Parameters" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTextureSampleParameterCube.uc b/exported/Engine/Classes/MaterialExpressionTextureSampleParameterCube.uc new file mode 100755 index 00000000..2a57ad96 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTextureSampleParameterCube.uc @@ -0,0 +1,11 @@ +class MaterialExpressionTextureSampleParameterCube extends MaterialExpressionTextureSampleParameter + native(Material) + collapsecategories + hidecategories(Object,Object,Object,Object); + +defaultproperties +{ + Texture=TextureCube'EngineResources.DefaultTextureCube' + MenuCategories[0]="Texture" + MenuCategories[1]="Parameters" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTextureSampleParameterFlipbook.uc b/exported/Engine/Classes/MaterialExpressionTextureSampleParameterFlipbook.uc new file mode 100755 index 00000000..b8da2ac2 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTextureSampleParameterFlipbook.uc @@ -0,0 +1,4 @@ +class MaterialExpressionTextureSampleParameterFlipbook extends MaterialExpressionTextureSampleParameter2D + native(Material) + collapsecategories + hidecategories(Object,Object,Object,Object,Object); diff --git a/exported/Engine/Classes/MaterialExpressionTextureSampleParameterMeshSubUV.uc b/exported/Engine/Classes/MaterialExpressionTextureSampleParameterMeshSubUV.uc new file mode 100755 index 00000000..cd8630df --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTextureSampleParameterMeshSubUV.uc @@ -0,0 +1,11 @@ +class MaterialExpressionTextureSampleParameterMeshSubUV extends MaterialExpressionTextureSampleParameter2D + native(Material) + collapsecategories + hidecategories(Object,Object,Object,Object,Object); + +defaultproperties +{ + MenuCategories[0]="Texture" + MenuCategories[1]="Parameters" + MenuCategories[2]="Particles" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTextureSampleParameterMeshSubUVBlend.uc b/exported/Engine/Classes/MaterialExpressionTextureSampleParameterMeshSubUVBlend.uc new file mode 100755 index 00000000..874330e9 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTextureSampleParameterMeshSubUVBlend.uc @@ -0,0 +1,4 @@ +class MaterialExpressionTextureSampleParameterMeshSubUVBlend extends MaterialExpressionTextureSampleParameterMeshSubUV + native(Material) + collapsecategories + hidecategories(Object,Object,Object,Object,Object,Object); diff --git a/exported/Engine/Classes/MaterialExpressionTextureSampleParameterMovie.uc b/exported/Engine/Classes/MaterialExpressionTextureSampleParameterMovie.uc new file mode 100755 index 00000000..e226a6aa --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTextureSampleParameterMovie.uc @@ -0,0 +1,10 @@ +class MaterialExpressionTextureSampleParameterMovie extends MaterialExpressionTextureSampleParameter + native(Material) + collapsecategories + hidecategories(Object,Object,Object,Object); + +defaultproperties +{ + MenuCategories[0]="Texture" + MenuCategories[1]="Parameters" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTextureSampleParameterNormal.uc b/exported/Engine/Classes/MaterialExpressionTextureSampleParameterNormal.uc new file mode 100755 index 00000000..5db067bb --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTextureSampleParameterNormal.uc @@ -0,0 +1,14 @@ +class MaterialExpressionTextureSampleParameterNormal extends MaterialExpressionTextureSampleParameter + native(Material) + collapsecategories + hidecategories(Object,Object,Object,Object); + +var native const transient Pointer InstanceOverride; + +defaultproperties +{ + Texture=Texture2D'EngineMaterials.DefaultNormal' + bUsedByStaticParameterSet=true + MenuCategories[0]="Texture" + MenuCategories[1]="Parameters" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTextureSampleParameterSubUV.uc b/exported/Engine/Classes/MaterialExpressionTextureSampleParameterSubUV.uc new file mode 100755 index 00000000..d875b745 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTextureSampleParameterSubUV.uc @@ -0,0 +1,11 @@ +class MaterialExpressionTextureSampleParameterSubUV extends MaterialExpressionTextureSampleParameter2D + native(Material) + collapsecategories + hidecategories(Object,Object,Object,Object,Object); + +defaultproperties +{ + MenuCategories[0]="Texture" + MenuCategories[1]="Parameters" + MenuCategories[2]="Particles" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTime.uc b/exported/Engine/Classes/MaterialExpressionTime.uc new file mode 100755 index 00000000..0d4e8cea --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTime.uc @@ -0,0 +1,12 @@ +class MaterialExpressionTime extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +var() bool bIgnorePause; + +defaultproperties +{ + MenuCategories[0]="Utility" + MenuCategories[1]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTransform.uc b/exported/Engine/Classes/MaterialExpressionTransform.uc new file mode 100755 index 00000000..ebd563a9 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTransform.uc @@ -0,0 +1,32 @@ +class MaterialExpressionTransform extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +enum EMaterialVectorCoordTransformSource +{ + TRANSFORMSOURCE_World, // 0 + TRANSFORMSOURCE_Local, // 1 + TRANSFORMSOURCE_Tangent, // 2 + TRANSFORMSOURCE_View, // 3 + TRANSFORMSOURCE_MAX // 4 +}; + +enum EMaterialVectorCoordTransform +{ + TRANSFORM_World, // 0 + TRANSFORM_View, // 1 + TRANSFORM_Local, // 2 + TRANSFORM_Tangent, // 3 + TRANSFORM_MAX // 4 +}; + +var ExpressionInput Input; +var() const MaterialExpressionTransform.EMaterialVectorCoordTransformSource TransformSourceType; +var() const MaterialExpressionTransform.EMaterialVectorCoordTransform TransformType; + +defaultproperties +{ + TransformSourceType=EMaterialVectorCoordTransformSource.TRANSFORMSOURCE_Tangent + MenuCategories[0]="VectorOps" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTransformPosition.uc b/exported/Engine/Classes/MaterialExpressionTransformPosition.uc new file mode 100755 index 00000000..212a9f81 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTransformPosition.uc @@ -0,0 +1,27 @@ +class MaterialExpressionTransformPosition extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +enum EMaterialPositionTransformSource +{ + TRANSFORMPOSSOURCE_Local, // 0 + TRANSFORMPOSSOURCE_PostProjection,// 1 + TRANSFORMPOSSOURCE_MAX // 2 +}; + +enum EMaterialPositionTransform +{ + TRANSFORMPOS_World, // 0 + TRANSFORMPOS_MAX // 1 +}; + +var ExpressionInput Input; +var() const MaterialExpressionTransformPosition.EMaterialPositionTransformSource TransformSourceType; +var() const MaterialExpressionTransformPosition.EMaterialPositionTransform TransformType; + +defaultproperties +{ + TransformSourceType=EMaterialPositionTransformSource.TRANSFORMPOSSOURCE_PostProjection + MenuCategories[0]="VectorOps" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionTwoSidedSign.uc b/exported/Engine/Classes/MaterialExpressionTwoSidedSign.uc new file mode 100755 index 00000000..684a1866 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionTwoSidedSign.uc @@ -0,0 +1,9 @@ +class MaterialExpressionTwoSidedSign extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Constants" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionVectorParameter.uc b/exported/Engine/Classes/MaterialExpressionVectorParameter.uc new file mode 100755 index 00000000..228da047 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionVectorParameter.uc @@ -0,0 +1,18 @@ +class MaterialExpressionVectorParameter extends MaterialExpressionParameter + native(Material) + collapsecategories + hidecategories(Object,Object,Object); + +var() LinearColor DefaultValue; + +defaultproperties +{ + DefaultValue=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + MenuCategories[0]="Parameters" + MenuCategories[1]="WorldPosOffset" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=0) + Outputs[1]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) + Outputs[2]=(OutputName="",Mask=1,MaskR=0,MaskG=1,MaskB=0,MaskA=0) + Outputs[3]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=1,MaskA=0) + Outputs[4]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=0,MaskA=1) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionVertexColor.uc b/exported/Engine/Classes/MaterialExpressionVertexColor.uc new file mode 100755 index 00000000..060b26a4 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionVertexColor.uc @@ -0,0 +1,16 @@ +class MaterialExpressionVertexColor extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Particles" + MenuCategories[1]="Constants" + MenuCategories[2]="WorldPosOffset" + Outputs[0]=(OutputName="",Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=0) + Outputs[1]=(OutputName="",Mask=1,MaskR=1,MaskG=0,MaskB=0,MaskA=0) + Outputs[2]=(OutputName="",Mask=1,MaskR=0,MaskG=1,MaskB=0,MaskA=0) + Outputs[3]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=1,MaskA=0) + Outputs[4]=(OutputName="",Mask=1,MaskR=0,MaskG=0,MaskB=0,MaskA=1) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionWindDirectionAndSpeed.uc b/exported/Engine/Classes/MaterialExpressionWindDirectionAndSpeed.uc new file mode 100755 index 00000000..bb5180d8 --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionWindDirectionAndSpeed.uc @@ -0,0 +1,11 @@ +class MaterialExpressionWindDirectionAndSpeed extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Vectors" + MenuCategories[1]="Coordinates" + MenuCategories[2]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionWorldNormal.uc b/exported/Engine/Classes/MaterialExpressionWorldNormal.uc new file mode 100755 index 00000000..91810a6e --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionWorldNormal.uc @@ -0,0 +1,11 @@ +class MaterialExpressionWorldNormal extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Vectors" + MenuCategories[1]="Coordinates" + MenuCategories[2]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialExpressionWorldPosition.uc b/exported/Engine/Classes/MaterialExpressionWorldPosition.uc new file mode 100755 index 00000000..29923eaf --- /dev/null +++ b/exported/Engine/Classes/MaterialExpressionWorldPosition.uc @@ -0,0 +1,10 @@ +class MaterialExpressionWorldPosition extends MaterialExpression + native(Material) + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + MenuCategories[0]="Coordinates" + MenuCategories[1]="WorldPosOffset" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialFunction.uc b/exported/Engine/Classes/MaterialFunction.uc new file mode 100755 index 00000000..0372fc1d --- /dev/null +++ b/exported/Engine/Classes/MaterialFunction.uc @@ -0,0 +1,15 @@ +class MaterialFunction extends Object + native(Material) + hidecategories(Object); + +var duplicatetransient Guid StateId; +var() string Description; +var() bool bExposeToLibrary; +var private const transient bool bReentrantFlag; +var() array LibraryCategories; +var array FunctionExpressions; + +defaultproperties +{ + LibraryCategories[0]="Misc" +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialInstance.uc b/exported/Engine/Classes/MaterialInstance.uc new file mode 100755 index 00000000..0da2eeff --- /dev/null +++ b/exported/Engine/Classes/MaterialInstance.uc @@ -0,0 +1,53 @@ +class MaterialInstance extends MaterialInterface + abstract + native(Material); + +var() PhysicalMaterial PhysMaterial; +var() const MaterialInterface Parent; +var(PhysicalMaterialMask) Texture2D PhysMaterialMask; +var(PhysicalMaterialMask) int PhysMaterialMaskUVChannel; +var(PhysicalMaterialMask) PhysicalMaterial BlackPhysicalMaterial; +var(PhysicalMaterialMask) PhysicalMaterial WhitePhysicalMaterial; +var bool bHasStaticPermutationResource; +var native transient bool bStaticPermutationDirty; +var private native const bool ReentrantFlag; +var private const transient bool bNeedsMaterialFlattening; +var() const bool bCleanupUnusedTextures; +var duplicatetransient const ShaderCache CookedShaderCache; +var duplicatetransient native const Pointer StaticParameters[3]; +var duplicatetransient native const Pointer StaticPermutationResources[3]; +var duplicatetransient native const Pointer Resources[3]; +var private const deprecated array ReferencedTextures; +var private const Guid ParentLightingGuid; + +// Export UMaterialInstance::execSetParent(FFrame&, void* const) +native function SetParent(MaterialInterface NewParent); + +// Export UMaterialInstance::execSetVectorParameterValue(FFrame&, void* const) +native function SetVectorParameterValue(name ParameterName, const out LinearColor Value); + +// Export UMaterialInstance::execSetScalarParameterValue(FFrame&, void* const) +native function SetScalarParameterValue(name ParameterName, float Value); + +// Export UMaterialInstance::execSetScalarCurveParameterValue(FFrame&, void* const) +native function SetScalarCurveParameterValue(name ParameterName, const out InterpCurveFloat Value); + +// Export UMaterialInstance::execSetTextureParameterValue(FFrame&, void* const) +native function SetTextureParameterValue(name ParameterName, Texture Value); + +// Export UMaterialInstance::execGetTextureParameterValue(FFrame&, void* const) +native function bool GetTextureParameterValue(name ParameterName, out Texture Value); + +// Export UMaterialInstance::execSetFontParameterValue(FFrame&, void* const) +native function SetFontParameterValue(name ParameterName, Font FontValue, int FontPage); + +// Export UMaterialInstance::execClearParameterValues(FFrame&, void* const) +native function ClearParameterValues(); + +// Export UMaterialInstance::execIsInMapOrTransientPackage(FFrame&, void* const) +native function bool IsInMapOrTransientPackage(); + +defaultproperties +{ + PhysMaterialMaskUVChannel=-1 +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialInstanceActor.uc b/exported/Engine/Classes/MaterialInstanceActor.uc new file mode 100755 index 00000000..1f2413e6 --- /dev/null +++ b/exported/Engine/Classes/MaterialInstanceActor.uc @@ -0,0 +1,14 @@ +class MaterialInstanceActor extends Actor + native + placeable + hidecategories(Navigation,Movement,Advanced,Collision,Display,Actor,Attachment); + +var() MaterialInstanceConstant MatInst; + +defaultproperties +{ + Components[0]=none + TickGroup=ETickingGroup.TG_DuringAsyncWorkThreaded + bNoDelete=true + bServerTickIsDisabled=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialInstanceConstant.uc b/exported/Engine/Classes/MaterialInstanceConstant.uc new file mode 100755 index 00000000..e5e69754 --- /dev/null +++ b/exported/Engine/Classes/MaterialInstanceConstant.uc @@ -0,0 +1,94 @@ +class MaterialInstanceConstant extends MaterialInstance + native(Material) + collapsecategories + hidecategories(Object); + +struct native FontParameterValue +{ + var() name ParameterName; + var() Font FontValue; + var() int FontPage; + var Guid ExpressionGUID; + + structdefaultproperties + { + ParameterName="None" + FontValue=none + FontPage=0 + ExpressionGUID=(A=0,B=0,C=0,D=0) + } +}; + +struct native ScalarParameterValue +{ + var() name ParameterName; + var() float ParameterValue; + var Guid ExpressionGUID; + + structdefaultproperties + { + ParameterName="None" + ParameterValue=0.0000000 + ExpressionGUID=(A=0,B=0,C=0,D=0) + } +}; + +struct native TextureParameterValue +{ + var() name ParameterName; + var() Texture ParameterValue; + var Guid ExpressionGUID; + + structdefaultproperties + { + ParameterName="None" + ParameterValue=none + ExpressionGUID=(A=0,B=0,C=0,D=0) + } +}; + +struct native VectorParameterValue +{ + var() name ParameterName; + var() LinearColor ParameterValue; + var Guid ExpressionGUID; + + structdefaultproperties + { + ParameterName="None" + ParameterValue=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + ExpressionGUID=(A=0,B=0,C=0,D=0) + } +}; + +var() const array FontParameterValues; +var() const array ScalarParameterValues; +var() const array TextureParameterValues; +var() const array VectorParameterValues; + +// Export UMaterialInstanceConstant::execSetParent(FFrame&, void* const) +native function SetParent(MaterialInterface NewParent); + +// Export UMaterialInstanceConstant::execSetScalarParameterValue(FFrame&, void* const) +native function SetScalarParameterValue(name ParameterName, float Value); + +// Export UMaterialInstanceConstant::execSetTextureParameterValue(FFrame&, void* const) +native function SetTextureParameterValue(name ParameterName, Texture Value); + +// Export UMaterialInstanceConstant::execSetVectorParameterValue(FFrame&, void* const) +native function SetVectorParameterValue(name ParameterName, const out LinearColor Value); + +// Export UMaterialInstanceConstant::execSetFontParameterValue(FFrame&, void* const) +native function SetFontParameterValue(name ParameterName, Font FontValue, int FontPage); + +// Export UMaterialInstanceConstant::execGetMobileScalarParameterValue(FFrame&, void* const) +native function bool GetMobileScalarParameterValue(name ParameterName, out float OutValue); + +// Export UMaterialInstanceConstant::execGetMobileTextureParameterValue(FFrame&, void* const) +native function bool GetMobileTextureParameterValue(name ParameterName, out Texture OutValue); + +// Export UMaterialInstanceConstant::execGetMobileVectorParameterValue(FFrame&, void* const) +native function bool GetMobileVectorParameterValue(name ParameterName, out LinearColor OutValue); + +// Export UMaterialInstanceConstant::execClearParameterValues(FFrame&, void* const) +native function ClearParameterValues(); diff --git a/exported/Engine/Classes/MaterialInstanceTimeVarying.uc b/exported/Engine/Classes/MaterialInstanceTimeVarying.uc new file mode 100755 index 00000000..67d42011 --- /dev/null +++ b/exported/Engine/Classes/MaterialInstanceTimeVarying.uc @@ -0,0 +1,142 @@ +class MaterialInstanceTimeVarying extends MaterialInstance + native(Material); + +struct native ParameterValueOverTime +{ + var Guid ExpressionGUID; + var float StartTime; + var() name ParameterName; + var() bool bLoop; + var() bool bAutoActivate; + var() float CycleTime; + var() bool bNormalizeTime; + var() float OffsetTime; + var() bool bOffsetFromEnd; + + structdefaultproperties + { + ExpressionGUID=(A=0,B=0,C=0,D=0) + StartTime=-1.0000000 + ParameterName="None" + bLoop=false + bAutoActivate=false + CycleTime=1.0000000 + bNormalizeTime=false + OffsetTime=0.0000000 + bOffsetFromEnd=false + } +}; + +struct native FontParameterValueOverTime extends ParameterValueOverTime +{ + var() Font FontValue; + var() int FontPage; + + structdefaultproperties + { + StartTime=0.0000000 + CycleTime=0.0000000 + } +}; + +struct native ScalarParameterValueOverTime extends ParameterValueOverTime +{ + var() float ParameterValue; + var() InterpCurveFloat ParameterValueCurve; + + structdefaultproperties + { + StartTime=0.0000000 + CycleTime=0.0000000 + } +}; + +struct native TextureParameterValueOverTime extends ParameterValueOverTime +{ + var() Texture ParameterValue; + + structdefaultproperties + { + StartTime=0.0000000 + CycleTime=0.0000000 + } +}; + +struct native VectorParameterValueOverTime extends ParameterValueOverTime +{ + var() LinearColor ParameterValue; + var() InterpCurveVector ParameterValueCurve; + + structdefaultproperties + { + ParameterValue=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + StartTime=0.0000000 + CycleTime=0.0000000 + } +}; + +struct native LinearColorParameterValueOverTime extends ParameterValueOverTime +{ + var() LinearColor ParameterValue; + var() InterpCurveLinearColor ParameterValueCurve; + + structdefaultproperties + { + ParameterValue=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + StartTime=0.0000000 + CycleTime=0.0000000 + } +}; + +var() bool bAutoActivateAll; +var transient float Duration; +var() array FontParameterValues; +var() array ScalarParameterValues; +var() array TextureParameterValues; +var() array VectorParameterValues; +var() array LinearColorParameterValues; + +// Export UMaterialInstanceTimeVarying::execSetParent(FFrame&, void* const) +native function SetParent(MaterialInterface NewParent); + +// Export UMaterialInstanceTimeVarying::execSetScalarParameterValue(FFrame&, void* const) +native function SetScalarParameterValue(name ParameterName, float Value); + +// Export UMaterialInstanceTimeVarying::execSetScalarCurveParameterValue(FFrame&, void* const) +native function SetScalarCurveParameterValue(name ParameterName, const out InterpCurveFloat Value); + +// Export UMaterialInstanceTimeVarying::execSetScalarStartTime(FFrame&, void* const) +native function SetScalarStartTime(name ParameterName, float Value); + +// Export UMaterialInstanceTimeVarying::execSetDuration(FFrame&, void* const) +native function SetDuration(float Value); + +// Export UMaterialInstanceTimeVarying::execSetTextureParameterValue(FFrame&, void* const) +native function SetTextureParameterValue(name ParameterName, Texture Value); + +// Export UMaterialInstanceTimeVarying::execSetVectorParameterValue(FFrame&, void* const) +native function SetVectorParameterValue(name ParameterName, const out LinearColor Value); + +// Export UMaterialInstanceTimeVarying::execSetVectorCurveParameterValue(FFrame&, void* const) +native function SetVectorCurveParameterValue(name ParameterName, const out InterpCurveVector Value); + +// Export UMaterialInstanceTimeVarying::execSetLinearColorParameterValue(FFrame&, void* const) +native function SetLinearColorParameterValue(name ParameterName, const out LinearColor Value); + +// Export UMaterialInstanceTimeVarying::execSetLinearColorCurveParameterValue(FFrame&, void* const) +native function SetLinearColorCurveParameterValue(name ParameterName, const out InterpCurveLinearColor Value); + +// Export UMaterialInstanceTimeVarying::execSetVectorStartTime(FFrame&, void* const) +native function SetVectorStartTime(name ParameterName, float Value); + +// Export UMaterialInstanceTimeVarying::execSetFontParameterValue(FFrame&, void* const) +native function SetFontParameterValue(name ParameterName, Font FontValue, int FontPage); + +// Export UMaterialInstanceTimeVarying::execClearParameterValues(FFrame&, void* const) +native function ClearParameterValues(); + +// Export UMaterialInstanceTimeVarying::execGetMaxDurationFromAllParameters(FFrame&, void* const) +native function float GetMaxDurationFromAllParameters(); + +// Export UMaterialInstanceTimeVarying::execCheckForVectorParameterConflicts(FFrame&, void* const) +native function bool CheckForVectorParameterConflicts(name ParameterName); diff --git a/exported/Engine/Classes/MaterialInstanceTimeVaryingActor.uc b/exported/Engine/Classes/MaterialInstanceTimeVaryingActor.uc new file mode 100755 index 00000000..e1d7cfa1 --- /dev/null +++ b/exported/Engine/Classes/MaterialInstanceTimeVaryingActor.uc @@ -0,0 +1,12 @@ +class MaterialInstanceTimeVaryingActor extends Actor + placeable + hidecategories(Navigation,Movement,Advanced,Collision,Display,Actor,Attachment); + +var() MaterialInstanceTimeVarying MatInst; + +defaultproperties +{ + Components[0]=none + TickGroup=ETickingGroup.TG_DuringAsyncWork + bNoDelete=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/MaterialInterface.uc b/exported/Engine/Classes/MaterialInterface.uc new file mode 100755 index 00000000..1a366b97 --- /dev/null +++ b/exported/Engine/Classes/MaterialInterface.uc @@ -0,0 +1,266 @@ +class MaterialInterface extends Surface + abstract + native(Material) + forcescriptorder(true); + +enum EMaterialUsage +{ + MATUSAGE_SkeletalMesh, // 0 + MATUSAGE_FracturedMeshes, // 1 + MATUSAGE_ParticleSprites, // 2 + MATUSAGE_BeamTrails, // 3 + MATUSAGE_ParticleSubUV, // 4 + MATUSAGE_SpeedTree, // 5 + MATUSAGE_StaticLighting, // 6 + MATUSAGE_GammaCorrection, // 7 + MATUSAGE_LensFlare, // 8 + MATUSAGE_InstancedMeshParticles,// 9 + MATUSAGE_FluidSurface, // 10 + MATUSAGE_Decals, // 11 + MATUSAGE_MaterialEffect, // 12 + MATUSAGE_MorphTargets, // 13 + MATUSAGE_FogVolumes, // 14 + MATUSAGE_RadialBlur, // 15 + MATUSAGE_InstancedMeshes, // 16 + MATUSAGE_SplineMesh, // 17 + MATUSAGE_ScreenDoorFade, // 18 + MATUSAGE_APEXMesh, // 19 + MATUSAGE_Terrain, // 20 + MATUSAGE_Landscape, // 21 + MATUSAGE_MobileLandscape, // 22 + MATUSAGE_MAX // 23 +}; + +struct native LightmassMaterialInterfaceSettings +{ + var(Material) bool bCastShadowAsMasked; + var(Material) float EmissiveBoost; + var(Material) float DiffuseBoost; + var float SpecularBoost; + var(Material) float ExportResolutionScale; + var(Material) float DistanceFieldPenumbraScale; + var bool bOverrideCastShadowAsMasked; + var bool bOverrideEmissiveBoost; + var bool bOverrideDiffuseBoost; + var bool bOverrideSpecularBoost; + var bool bOverrideExportResolutionScale; + var bool bOverrideDistanceFieldPenumbraScale; + + structdefaultproperties + { + bCastShadowAsMasked=false + EmissiveBoost=1.0000000 + DiffuseBoost=1.0000000 + SpecularBoost=1.0000000 + ExportResolutionScale=1.0000000 + DistanceFieldPenumbraScale=1.0000000 + bOverrideCastShadowAsMasked=false + bOverrideEmissiveBoost=false + bOverrideDiffuseBoost=false + bOverrideSpecularBoost=false + bOverrideExportResolutionScale=false + bOverrideDistanceFieldPenumbraScale=false + } +}; + +var native const transient RenderCommandFence_Mirror ParentRefFence; +var(Lightmass) protected LightmassMaterialInterfaceSettings LightmassSettings; +var const bool bHasQualitySwitch; +var(ParticleTrimming) editoronly bool bRunTrimmingTool; +var(ParticleTrimming) editoronly bool bUseCachedCircleVerts; +var(ParticleTrimming) editoronly bool bScanRedChannel; +var(ParticleTrimming) editoronly bool bScanGreenChannel; +var(ParticleTrimming) editoronly bool bScanBlueChannel; +var(ParticleTrimming) editoronly bool bScanAlphaChannel; +var(ParticleTrimming) editoronly bool bClearData; +var(Mobile) bool bAutoFlattenMobile; +var(Mobile) bool bAutoFlattenMobileNormalTexture; +var(Mobile) bool bMobileAllowFog; +var(Mobile,Generation) bool bGenerateSubUV; +var(Mobile,Specular) bool bUseMobileSpecular; +var deprecated bool bUseMobileVertexSpecular; +var(Mobile,Specular) bool bUseMobilePixelSpecular; +var(Mobile,BumpOffset) bool bUseMobileBumpOffset; +var(Mobile,TextureBlending) bool bLockColorBlending; +var(Mobile,ColorBlending) bool bUseMobileUniformColorMultiply; +var(Mobile,ColorBlending) bool bUseMobileVertexColorMultiply; +var(Mobile,ColorBlending) bool bUseMobileDetailNormal; +var(Mobile,TextureTransform) bool bBaseTextureTransformed; +var(Mobile,TextureTransform) bool bEmissiveTextureTransformed; +var(Mobile,TextureTransform) bool bNormalTextureTransformed; +var(Mobile,TextureTransform) bool bMaskTextureTransformed; +var(Mobile,TextureTransform) bool bDetailTextureTransformed; +var(Mobile,VertexAnimation) bool bUseMobileWaveVertexMovement; +var(Mobile,Flatten) bool bMobileEnableBounceLight; +var(Mobile,Landscape) bool bUseMobileLandscapeMonochromeLayerBlending; +var(ParticleTrimming) array TrimmedVertices; +var(Mobile) Color FlattenBackgroundColor; +var(Mobile) Texture MobileBaseTexture; +var duplicatetransient deprecated Texture FlattenedTexture; +var(Mobile) EngineTypes.EMobileTexCoordsSource MobileBaseTextureTexCoordsSource; +var(Mobile) EngineTypes.EMobileAmbientOcclusionSource MobileAmbientOcclusionSource; +var(Mobile,Specular) EngineTypes.EMobileSpecularMask MobileSpecularMask; +var(Mobile,Emissive) EngineTypes.EMobileEmissiveColorSource MobileEmissiveColorSource; +var(Mobile,Emissive) EngineTypes.EMobileValueSource MobileEmissiveMaskSource; +var(Mobile,Environment) EngineTypes.EMobileValueSource MobileEnvironmentMaskSource; +var(Mobile,Environment) EngineTypes.EMobileEnvironmentBlendMode MobileEnvironmentBlendMode; +var(Mobile,RimLighting) EngineTypes.EMobileValueSource MobileRimLightingMaskSource; +var(Mobile,Masking) EngineTypes.EMobileTexCoordsSource MobileMaskTextureTexCoordsSource; +var(Mobile,Masking) EngineTypes.EMobileAlphaValueSource MobileAlphaValueSource; +var(Mobile,TextureBlending) EngineTypes.EMobileTexCoordsSource MobileDetailTextureTexCoordsSource; +var(Mobile,TextureBlending) EngineTypes.EMobileTextureBlendFactorSource MobileTextureBlendFactorSource; +var(Mobile,ColorBlending) EngineTypes.EMobileColorMultiplySource MobileColorMultiplySource; +var(Mobile) Texture MobileNormalTexture; +var(Mobile,Generation) float SubUVFrameRate; +var(Mobile,Generation) int SubUVFrameCountAlongAxes; +var(Mobile,Generation) float SubUVFrameSize; +var(Mobile,Specular) LinearColor MobileSpecularColor; +var(Mobile,Specular) float MobileSpecularPower; +var(Mobile,Emissive) Texture MobileEmissiveTexture; +var(Mobile,Emissive) LinearColor MobileEmissiveColor; +var(Mobile,Environment) Texture MobileEnvironmentTexture; +var(Mobile,Environment) float MobileEnvironmentAmount; +var(Mobile,Environment) LinearColor MobileEnvironmentColor; +var(Mobile,Environment) float MobileEnvironmentFresnelAmount; +var(Mobile,Environment) float MobileEnvironmentFresnelExponent; +var(Mobile,RimLighting) float MobileRimLightingStrength; +var(Mobile,RimLighting) float MobileRimLightingExponent; +var(Mobile,RimLighting) LinearColor MobileRimLightingColor; +var(Mobile,BumpOffset) float MobileBumpOffsetReferencePlane; +var(Mobile,BumpOffset) float MobileBumpOffsetHeightRatio; +var(Mobile,Masking) Texture MobileMaskTexture; +var(Mobile,Masking) float MobileOpacityMultiplier; +var(Mobile,TextureBlending) Texture MobileDetailTexture; +var(Mobile,TextureBlending) Texture MobileDetailTexture2; +var(Mobile,TextureBlending) Texture MobileDetailTexture3; +var deprecated LinearColor DefaultUniformColor; +var(Mobile,ColorBlending) LinearColor MobileDefaultUniformColor; +var deprecated float TransformCenterX; +var(Mobile,TextureTransform) float MobileTransformCenterX; +var deprecated float TransformCenterY; +var(Mobile,TextureTransform) float MobileTransformCenterY; +var deprecated float PannerSpeedX; +var(Mobile,TextureTransform) float MobilePannerSpeedX; +var deprecated float PannerSpeedY; +var(Mobile,TextureTransform) float MobilePannerSpeedY; +var deprecated float RotateSpeed; +var(Mobile,TextureTransform) float MobileRotateSpeed; +var deprecated float FixedScaleX; +var(Mobile,TextureTransform) float MobileFixedScaleX; +var deprecated float FixedScaleY; +var(Mobile,TextureTransform) float MobileFixedScaleY; +var deprecated float SineScaleX; +var(Mobile,TextureTransform) float MobileSineScaleX; +var deprecated float SineScaleY; +var(Mobile,TextureTransform) float MobileSineScaleY; +var deprecated float SineScaleFrequencyMultipler; +var(Mobile,TextureTransform) float MobileSineScaleFrequencyMultipler; +var deprecated float FixedOffsetX; +var(Mobile,TextureTransform) float MobileFixedOffsetX; +var deprecated float FixedOffsetY; +var(Mobile,TextureTransform) float MobileFixedOffsetY; +var(Mobile,VertexAnimation) float MobileTangentVertexFrequencyMultiplier; +var(Mobile,VertexAnimation) float MobileVerticalFrequencyMultiplier; +var(Mobile,VertexAnimation) float MobileMaxVertexMovementAmplitude; +var(Mobile,VertexAnimation) float MobileSwayFrequencyMultiplier; +var(Mobile,VertexAnimation) float MobileSwayMaxAngle; +var(Mobile,Flatten) Vector MobileDirectionalLightDirection; +var(Mobile,Flatten) float MobileDirectionalLightBrightness; +var(Mobile,Flatten) Color MobileDirectionalLightColor; +var(Mobile,Flatten) Vector MobileBounceLightDirection; +var(Mobile,Flatten) float MobileBounceLightBrightness; +var(Mobile,Flatten) Color MobileBounceLightColor; +var(Mobile,Flatten) float MobileSkyLightBrightness; +var(Mobile,Flatten) Color MobileSkyLightColor; +var(Mobile,Landscape) name MobileLandscapeLayerNames[4]; +var(Mobile,Landscape) Color MobileLandscapeMonochomeLayerColors[4]; + +// Export UMaterialInterface::execGetMaterial(FFrame&, void* const) +native final function Material GetMaterial(); + +// Export UMaterialInterface::execGetPhysicalMaterial(FFrame&, void* const) +native final function PhysicalMaterial GetPhysicalMaterial(); + +// Export UMaterialInterface::execGetParameterDesc(FFrame&, void* const) +native function bool GetParameterDesc(name ParameterName, out string OutDesc); + +// Export UMaterialInterface::execGetFontParameterValue(FFrame&, void* const) +native function bool GetFontParameterValue(name ParameterName, out Font OutFontValue, out int OutFontPage); + +// Export UMaterialInterface::execGetScalarParameterValue(FFrame&, void* const) +native function bool GetScalarParameterValue(name ParameterName, out float OutValue); + +// Export UMaterialInterface::execGetScalarCurveParameterValue(FFrame&, void* const) +native function bool GetScalarCurveParameterValue(name ParameterName, out InterpCurveFloat OutValue); + +// Export UMaterialInterface::execGetTextureParameterValue(FFrame&, void* const) +native function bool GetTextureParameterValue(name ParameterName, out Texture OutValue); + +// Export UMaterialInterface::execGetVectorParameterValue(FFrame&, void* const) +native function bool GetVectorParameterValue(name ParameterName, out LinearColor OutValue); + +// Export UMaterialInterface::execGetVectorCurveParameterValue(FFrame&, void* const) +native function bool GetVectorCurveParameterValue(name ParameterName, out InterpCurveVector OutValue); + +// Export UMaterialInterface::execGetLinearColorParameterValue(FFrame&, void* const) +native function bool GetLinearColorParameterValue(name ParameterName, out LinearColor OutValue); + +// Export UMaterialInterface::execGetLinearColorCurveParameterValue(FFrame&, void* const) +native function bool GetLinearColorCurveParameterValue(name ParameterName, out InterpCurveLinearColor OutValue); + +// Export UMaterialInterface::execGetGroupName(FFrame&, void* const) +native function bool GetGroupName(name ParameterName, out name GroupName); + +// Export UMaterialInterface::execGetMobileScalarParameterValue(FFrame&, void* const) +native function bool GetMobileScalarParameterValue(name ParameterName, out float OutValue); + +// Export UMaterialInterface::execGetMobileTextureParameterValue(FFrame&, void* const) +native function bool GetMobileTextureParameterValue(name ParameterName, out Texture OutValue); + +// Export UMaterialInterface::execGetMobileVectorParameterValue(FFrame&, void* const) +native function bool GetMobileVectorParameterValue(name ParameterName, out LinearColor OutValue); + +// Export UMaterialInterface::execSetForceMipLevelsToBeResident(FFrame&, void* const) +native function SetForceMipLevelsToBeResident(bool OverrideForceMiplevelsToBeResident, bool bForceMiplevelsToBeResidentValue, float ForceDuration, optional int CinematicTextureGroups = 0); + +defaultproperties +{ + LightmassSettings=(bCastShadowAsMasked=false,EmissiveBoost=1.0000000,DiffuseBoost=1.0000000,SpecularBoost=1.0000000,ExportResolutionScale=1.0000000,DistanceFieldPenumbraScale=1.0000000,bOverrideCastShadowAsMasked=false,bOverrideEmissiveBoost=false,bOverrideDiffuseBoost=false,bOverrideSpecularBoost=false,bOverrideExportResolutionScale=false,bOverrideDistanceFieldPenumbraScale=false) + bMobileAllowFog=true + FlattenBackgroundColor=(R=0,G=0,B=0,A=255) + MobileDetailTextureTexCoordsSource=EMobileTexCoordsSource.MTCS_TexCoords1 + MobileSpecularColor=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000) + MobileSpecularPower=16.0000000 + MobileEmissiveColor=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000) + MobileEnvironmentAmount=1.0000000 + MobileEnvironmentColor=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000) + MobileEnvironmentFresnelExponent=1.0000000 + MobileRimLightingExponent=2.0000000 + MobileRimLightingColor=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000) + MobileBumpOffsetReferencePlane=0.5000000 + MobileBumpOffsetHeightRatio=0.0500000 + MobileOpacityMultiplier=1.0000000 + MobileDefaultUniformColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + MobileTransformCenterX=0.5000000 + MobileTransformCenterY=0.5000000 + MobileFixedScaleX=1.0000000 + MobileFixedScaleY=1.0000000 + MobileSineScaleFrequencyMultipler=1.0000000 + MobileTangentVertexFrequencyMultiplier=0.1250000 + MobileVerticalFrequencyMultiplier=0.1000000 + MobileMaxVertexMovementAmplitude=5.0000000 + MobileSwayFrequencyMultiplier=0.0700000 + MobileSwayMaxAngle=2.0000000 + MobileDirectionalLightDirection=(X=0.0000000,Y=-45.0000000,Z=45.0000000) + MobileDirectionalLightBrightness=2.0000000 + MobileDirectionalLightColor=(R=255,G=255,B=255,A=0) + MobileBounceLightDirection=(X=0.0000000,Y=45.0000000,Z=-27.5000000) + MobileBounceLightBrightness=0.2500000 + MobileBounceLightColor=(R=255,G=255,B=255,A=0) + MobileSkyLightBrightness=0.2500000 + MobileSkyLightColor=(R=255,G=255,B=255,A=0) + MobileLandscapeMonochomeLayerColors[0]=(R=255,G=255,B=255,A=0) + MobileLandscapeMonochomeLayerColors[1]=(R=255,G=255,B=255,A=0) + MobileLandscapeMonochomeLayerColors[2]=(R=255,G=255,B=255,A=0) + MobileLandscapeMonochomeLayerColors[3]=(R=255,G=255,B=255,A=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MatineeActor.uc b/exported/Engine/Classes/MatineeActor.uc new file mode 100755 index 00000000..a2cd8607 --- /dev/null +++ b/exported/Engine/Classes/MatineeActor.uc @@ -0,0 +1,135 @@ +class MatineeActor extends Actor + native + nativereplication + notplaceable + hidecategories(Navigation); + +const MAX_AIGROUP_NUMBER = 10; + +var const SeqAct_Interp InterpAction; +var bool bIsPlaying; +var bool bReversePlayback; +var bool bPaused; +var transient bool AllAIGroupsInitialized; +var float PlayRate; +var float Position; +var name AIGroupNames[10]; +var Pawn AIGroupPawns[10]; +var transient int AIGroupInitStage[10]; +var float ClientSidePositionErrorTolerance; + +replication +{ + // Pos:0x000 + if(bNetInitial && int(Role) == int(ROLE_Authority)) + InterpAction; + + // Pos:0x020 + if(bNetDirty && int(Role) == int(ROLE_Authority)) + AIGroupNames, AIGroupPawns, + PlayRate, Position, + bIsPlaying, bPaused, + bReversePlayback; +} + +// Export UMatineeActor::execAddAIGroupActor(FFrame&, void* const) +native function AddAIGroupActor(InterpGroupInstAI AIGroupInst); + +event Update() +{ + local InterpGroupInstAI AIGroupInst; + local int GroupID; + + bIsPlaying = InterpAction.bIsPlaying; + bReversePlayback = InterpAction.bReversePlayback; + bPaused = InterpAction.bPaused; + PlayRate = InterpAction.PlayRate; + Position = InterpAction.Position; + bForceNetUpdate = true; + // End:0xFD + if(bIsPlaying) + { + SetTimer(1.0000000, true, 'CheckPriorityRefresh'); + } + else + { + ClearTimer('CheckPriorityRefresh'); + } + // End:0x1C3 + if(InterpAction != none) + { + GroupID = 0; + J0x12B: + + // End:0x1C3 [Loop If] + if(GroupID < InterpAction.GroupInst.Length) + { + AIGroupInst = InterpGroupInstAI(InterpAction.GroupInst[GroupID]); + // End:0x1B5 + if(AIGroupInst != none) + { + AddAIGroupActor(AIGroupInst); + } + ++GroupID; + // [Loop Continue] + goto J0x12B; + } + } + //return; +} + +function CheckPriorityRefresh() +{ + local Controller C; + local int I; + + // End:0x227 + if(InterpAction != none) + { + I = 0; + J0x1A: + + // End:0xA6 [Loop If] + if(I < InterpAction.GroupInst.Length) + { + // End:0x98 + if(InterpGroupInstDirector(InterpAction.GroupInst[I]) != none) + { + bNetDirty = true; + bForceNetUpdate = true; + return; + } + I++; + // [Loop Continue] + goto J0x1A; + } + // End:0x226 + foreach WorldInfo.AllControllers(Class'Engine.Controller', C) + { + // End:0x225 + if((C.bIsPlayer && C.Pawn != none) && (InterpAction.LatentActors.Find(C.Pawn) != -1) || (C.Pawn.Base != none) && InterpAction.LatentActors.Find(C.Pawn.Base) != -1) + { + bNetDirty = true; + bForceNetUpdate = true; + return; + } + } + } + //return; +} + +defaultproperties +{ + PlayRate=1.0000000 + Position=-1.0000000 + ClientSidePositionErrorTolerance=0.1000000 + Components[0]=none + RemoteRole=ENetRole.ROLE_SimulatedProxy + bServerTickIsDisabled=true + bAlwaysRelevant=true + bReplicateMovement=false + bSkipActorPropertyReplication=true + bOnlyDirtyReplication=true + NetUpdateFrequency=1.0000000 + NetPriority=2.7000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/MatineePawn.uc b/exported/Engine/Classes/MatineePawn.uc new file mode 100755 index 00000000..25d4408d --- /dev/null +++ b/exported/Engine/Classes/MatineePawn.uc @@ -0,0 +1,33 @@ +class MatineePawn extends Pawn + native(Pawn) + config(Game) + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: SkeletalMeshComponent'Engine.Default__MatineePawn.PawnMesh' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PawnMesh' + begin object name="PawnMesh" class=Engine.SkeletalMeshComponent + ReplacementPrimitive=none + Translation=(X=0.0000000,Y=0.0000000,Z=-72.0000000) + end object + Mesh=PawnMesh + // Reference: CylinderComponent'Engine.Default__MatineePawn.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Pawn.CollisionCylinder' + begin object name="CollisionCylinder" + CollisionHeight=72.0000000 + CollisionRadius=30.0000000 + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=CollisionCylinder + Components[2]=none + Components[3]=PawnMesh + Physics=EPhysics.PHYS_Falling + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/MeshComponent.uc b/exported/Engine/Classes/MeshComponent.uc new file mode 100755 index 00000000..94ca9b75 --- /dev/null +++ b/exported/Engine/Classes/MeshComponent.uc @@ -0,0 +1,104 @@ +class MeshComponent extends PrimitiveComponent + abstract + native(Mesh) + noexport; + +var(Rendering) const array Materials; +var int MatResGrpId; +var array SavedBodyMICs; +var array DefaultBodyMICs; +var array DyedBodyMICs; +var transient bool m_bForceHideComponent; + +// Export UMeshComponent::execGetMaterial(FFrame&, void* const) +native function MaterialInterface GetMaterial(int ElementIndex); + +// Export UMeshComponent::execSetMaterial(FFrame&, void* const) +native function SetMaterial(int ElementIndex, MaterialInterface Material); + +// Export UMeshComponent::execGetNumElements(FFrame&, void* const) +native function int GetNumElements(); + +// Export UMeshComponent::execPrestreamTextures(FFrame&, void* const) +native final function PrestreamTextures(float Seconds, bool bPrioritizeCharacterTextures, optional int CinematicTextureGroups = 0); + +function MaterialInstanceConstant CreateAndSetMaterialInstanceConstant(int ElementIndex) +{ + local MaterialInstanceConstant Instance; + + Instance = new (self) Class'Engine.MaterialInstanceConstant'; + Instance.SetParent(GetMaterial(ElementIndex)); + SetMaterial(ElementIndex, Instance); + return Instance; + //return ReturnValue; +} + +function MaterialInstanceTimeVarying CreateAndSetMaterialInstanceTimeVarying(int ElementIndex) +{ + local MaterialInstanceTimeVarying Instance; + + Instance = new (self) Class'Engine.MaterialInstanceTimeVarying'; + Instance.SetParent(GetMaterial(ElementIndex)); + SetMaterial(ElementIndex, Instance); + return Instance; + //return ReturnValue; +} + +// Export UMeshComponent::execFxAdd(FFrame&, void* const) +native function FxAdd(Object Fx); + +// Export UMeshComponent::execFxRemove(FFrame&, void* const) +native function FxRemove(Object Fx); + +// Export UMeshComponent::execFxGet(FFrame&, void* const) +native function Object FxGet(name nmGroup, int nMode, optional int nIndex, optional int nSocketIndex, optional int nEquipSlot); + +// Export UMeshComponent::execFxGetAll(FFrame&, void* const) +native function array FxGetAll(name nmGroup, int nMode, optional int nIndex, optional int nSocketIndex, optional int nEquipSlot); + +// Export UMeshComponent::execFxActivateGroup(FFrame&, void* const) +native function Object FxActivateGroup(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm); + +// Export UMeshComponent::execFxDeactivateGroup(FFrame&, void* const) +native function FxDeactivateGroup(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot); + +// Export UMeshComponent::execFxDeactivateAll(FFrame&, void* const) +native function FxDeactivateAll(optional int nEquipSlot); + +// Export UMeshComponent::execFxSpawnTracer(FFrame&, void* const) +native function FxSpawnTracer(name nmGroup, int nMode, Vector HitLocation, optional int nSocketIndex, optional int nEquipSlot); + +// Export UMeshComponent::execFxSpawnEmitter(FFrame&, void* const) +native function FxSpawnEmitter(name nmGroup, int nMode, Vector HitLocation, Vector HitNormal, optional int nSocketIndex, optional int nEquipSlot); + +// Export UMeshComponent::execFxSpawnSound(FFrame&, void* const) +native function FxSpawnSound(name nmGroup, int nMode, Vector SoundLocation, optional int nSocketIndex, optional int nEquipSlot); + +// Export UMeshComponent::execFxActivateIndependant(FFrame&, void* const) +native function Object FxActivateIndependant(name nmGroup, int nMode, Vector HitLocation, Vector HitNormal, optional int nSocketIndex, optional int nEquipSlot, optional bool bUseSocketOverride = true, optional array Params); + +// Export UMeshComponent::execSetDefaultSkin(FFrame&, void* const) +native function SetDefaultSkin(int nIndex); + +// Export UMeshComponent::execGetDefaultMaterial(FFrame&, void* const) +native function MaterialInterface GetDefaultMaterial(int nIndex); + +// Export UMeshComponent::execOnMeshSetHidden(FFrame&, void* const) +native function OnMeshSetHidden(bool bHidden); + +// Export UMeshComponent::execSwapMaterial(FFrame&, void* const) +native function SwapMaterial(MaterialInterface MI, optional bool bNoParamReaping); + +// Export UMeshComponent::execApplyDye(FFrame&, void* const) +native function ApplyDye(MaterialInterface PrimaryDyeMI, MaterialInterface SecondaryDyeMI, MaterialInterface EmissiveDyeMI); + +// Export UMeshComponent::execRecalculateFx(FFrame&, void* const) +native function RecalculateFx(); + +defaultproperties +{ + ReplacementPrimitive=none + bUseAsOccluder=true + CastShadow=true + bAcceptsLights=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/MeshComponentFactory.uc b/exported/Engine/Classes/MeshComponentFactory.uc new file mode 100755 index 00000000..3ba4a2c2 --- /dev/null +++ b/exported/Engine/Classes/MeshComponentFactory.uc @@ -0,0 +1,10 @@ +class MeshComponentFactory extends PrimitiveComponentFactory + abstract + native; + +var(Rendering) array Materials; + +defaultproperties +{ + CastShadow=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/MicroTransactionBase.uc b/exported/Engine/Classes/MicroTransactionBase.uc new file mode 100755 index 00000000..21d5326f --- /dev/null +++ b/exported/Engine/Classes/MicroTransactionBase.uc @@ -0,0 +1,56 @@ +class MicroTransactionBase extends PlatformInterfaceBase + transient + native(PlatformInterface); + +enum EMicroTransactionDelegate +{ + MTD_PurchaseQueryComplete, // 0 + MTD_PurchaseComplete, // 1 + MTD_MAX // 2 +}; + +enum EMicroTransactionResult +{ + MTR_Succeeded, // 0 + MTR_Failed, // 1 + MTR_Canceled, // 2 + MTR_RestoredFromServer, // 3 + MTR_MAX // 4 +}; + +struct native PurchaseInfo +{ + var string Identifier; + var string DisplayName; + var string DisplayDescription; + var string DisplayPrice; + var string CurrencyType; + + structdefaultproperties + { + Identifier="" + DisplayName="" + DisplayDescription="" + DisplayPrice="" + CurrencyType="" + } +}; + +var array AvailableProducts; +var string LastError; +var string LastErrorSolution; + +// Export UMicroTransactionBase::execInit(FFrame&, void* const) +native event Init(); + +// Export UMicroTransactionBase::execQueryForAvailablePurchases(FFrame&, void* const) +native event bool QueryForAvailablePurchases(); + +// Export UMicroTransactionBase::execIsAllowedToMakePurchases(FFrame&, void* const) +native event bool IsAllowedToMakePurchases(); + +// Export UMicroTransactionBase::execBeginPurchase(FFrame&, void* const) +native event bool BeginPurchase(int Index); + +// Export UMicroTransactionBase::execGetProductIndex(FFrame&, void* const) +native event int GetProductIndex(string Identifier); diff --git a/exported/Engine/Classes/ModelComponent.uc b/exported/Engine/Classes/ModelComponent.uc new file mode 100755 index 00000000..ee1ff5da --- /dev/null +++ b/exported/Engine/Classes/ModelComponent.uc @@ -0,0 +1,20 @@ +class ModelComponent extends PrimitiveComponent + native + noexport; + +var native const noexport transient Object Model; +var native const noexport transient int ZoneIndex; +var native const noexport transient int ComponentIndex; +var native const noexport transient array Nodes; +var native const noexport transient array Elements; + +defaultproperties +{ + ReplacementPrimitive=none + bUseAsOccluder=true + bAcceptsStaticDecals=true + CastShadow=true + bAcceptsLights=true + bUsePrecomputedShadows=true + LightingChannels=(bInitialized=true,BSP=true) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MorphNodeBase.uc b/exported/Engine/Classes/MorphNodeBase.uc new file mode 100755 index 00000000..9d857286 --- /dev/null +++ b/exported/Engine/Classes/MorphNodeBase.uc @@ -0,0 +1,7 @@ +class MorphNodeBase extends AnimObject + abstract + native(Anim) + hidecategories(Object,Object); + +var() name NodeName; +var bool bDrawSlider; diff --git a/exported/Engine/Classes/MorphNodeMultiPose.uc b/exported/Engine/Classes/MorphNodeMultiPose.uc new file mode 100755 index 00000000..869988e8 --- /dev/null +++ b/exported/Engine/Classes/MorphNodeMultiPose.uc @@ -0,0 +1,16 @@ +class MorphNodeMultiPose extends MorphNodeBase + native(Anim) + hidecategories(Object,Object,Object); + +var transient array Targets; +var() array MorphNames; +var() array Weights; + +// Export UMorphNodeMultiPose::execAddMorphTarget(FFrame&, void* const) +native final function bool AddMorphTarget(name MorphTargetName, optional float InWeight = 1.0000000); + +// Export UMorphNodeMultiPose::execRemoveMorphTarget(FFrame&, void* const) +native final function RemoveMorphTarget(name MorphTargetName); + +// Export UMorphNodeMultiPose::execUpdateMorphTarget(FFrame&, void* const) +native final function bool UpdateMorphTarget(MorphTarget Target, float InWeight); diff --git a/exported/Engine/Classes/MorphNodePose.uc b/exported/Engine/Classes/MorphNodePose.uc new file mode 100755 index 00000000..47515b3b --- /dev/null +++ b/exported/Engine/Classes/MorphNodePose.uc @@ -0,0 +1,15 @@ +class MorphNodePose extends MorphNodeBase + native(Anim) + hidecategories(Object,Object,Object); + +var transient MorphTarget Target; +var() name MorphName; +var() float Weight; + +// Export UMorphNodePose::execSetMorphTarget(FFrame&, void* const) +native final function SetMorphTarget(name MorphTargetName); + +defaultproperties +{ + Weight=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/MorphNodeWeight.uc b/exported/Engine/Classes/MorphNodeWeight.uc new file mode 100755 index 00000000..79835cc8 --- /dev/null +++ b/exported/Engine/Classes/MorphNodeWeight.uc @@ -0,0 +1,14 @@ +class MorphNodeWeight extends MorphNodeWeightBase + native(Anim) + hidecategories(Object,Object,Object,Object); + +var float NodeWeight; + +// Export UMorphNodeWeight::execSetNodeWeight(FFrame&, void* const) +native function SetNodeWeight(float NewWeight); + +defaultproperties +{ + NodeConns[0]=(ChildNodes=none,ConnName="In",DrawY=0) + bDrawSlider=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/MorphNodeWeightBase.uc b/exported/Engine/Classes/MorphNodeWeightBase.uc new file mode 100755 index 00000000..c1849095 --- /dev/null +++ b/exported/Engine/Classes/MorphNodeWeightBase.uc @@ -0,0 +1,20 @@ +class MorphNodeWeightBase extends MorphNodeBase + abstract + native(Anim) + hidecategories(Object,Object,Object); + +struct native MorphNodeConn +{ + var array ChildNodes; + var name ConnName; + var int DrawY; + + structdefaultproperties + { + ChildNodes=none + ConnName="None" + DrawY=0 + } +}; + +var array NodeConns; diff --git a/exported/Engine/Classes/MorphNodeWeightByBoneAngle.uc b/exported/Engine/Classes/MorphNodeWeightByBoneAngle.uc new file mode 100755 index 00000000..decc0cae --- /dev/null +++ b/exported/Engine/Classes/MorphNodeWeightByBoneAngle.uc @@ -0,0 +1,38 @@ +class MorphNodeWeightByBoneAngle extends MorphNodeWeightBase + native(Anim) + hidecategories(Object,Object,Object); + +struct native BoneAngleMorph +{ + var() float Angle; + var() float TargetWeight; + + structdefaultproperties + { + Angle=0.0000000 + TargetWeight=1.0000000 + } +}; + +var const transient float Angle; +var const transient float NodeWeight; +var(BaseBone) name BaseBoneName; +var(BaseBone) Object.EAxis BaseBoneAxis; +var(AngleBone) Object.EAxis AngleBoneAxis; +var(BaseBone) bool bInvertBaseBoneAxis; +var(AngleBone) bool bInvertAngleBoneAxis; +var(Material) bool bControlMaterialParameter; +var(AngleBone) name AngleBoneName; +var(Material) int MaterialSlotId; +var(Material) name ScalarParameterName; +var transient MaterialInstanceConstant MaterialInstanceConstant; +var() array WeightArray; + +defaultproperties +{ + BaseBoneAxis=EAxis.AXIS_X + AngleBoneAxis=EAxis.AXIS_X + WeightArray[0]=(Angle=0.0000000,TargetWeight=0.0000000) + WeightArray[1]=(Angle=180.0000000,TargetWeight=1.0000000) + NodeConns[0]=(ChildNodes=none,ConnName="In",DrawY=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MorphNodeWeightByBoneRotation.uc b/exported/Engine/Classes/MorphNodeWeightByBoneRotation.uc new file mode 100755 index 00000000..4881825a --- /dev/null +++ b/exported/Engine/Classes/MorphNodeWeightByBoneRotation.uc @@ -0,0 +1,22 @@ +class MorphNodeWeightByBoneRotation extends MorphNodeWeightBase + native(Anim) + hidecategories(Object,Object,Object); + +var const transient float Angle; +var const transient float NodeWeight; +var() name BoneName; +var() Object.EAxis BoneAxis; +var() bool bInvertBoneAxis; +var(Material) bool bControlMaterialParameter; +var() array WeightArray; +var(Material) int MaterialSlotId; +var(Material) name ScalarParameterName; +var transient MaterialInstanceConstant MaterialInstanceConstant; + +defaultproperties +{ + BoneAxis=EAxis.AXIS_Y + WeightArray[0]=(Angle=0.0000000,TargetWeight=0.0000000) + WeightArray[1]=(Angle=90.0000000,TargetWeight=1.0000000) + NodeConns[0]=(ChildNodes=none,ConnName="In",DrawY=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/MorphTarget.uc b/exported/Engine/Classes/MorphTarget.uc new file mode 100755 index 00000000..c6d1f5b6 --- /dev/null +++ b/exported/Engine/Classes/MorphTarget.uc @@ -0,0 +1,8 @@ +class MorphTarget extends Object + native(Anim) + noexport + hidecategories(Object); + +var native const array MorphLODModels; +var(Material) int MaterialSlotId; +var(Material) name ScalarParameterName; diff --git a/exported/Engine/Classes/MorphTargetSet.uc b/exported/Engine/Classes/MorphTargetSet.uc new file mode 100755 index 00000000..37fbdcdd --- /dev/null +++ b/exported/Engine/Classes/MorphTargetSet.uc @@ -0,0 +1,9 @@ +class MorphTargetSet extends Object + native(Anim); + +var array Targets; +var SkeletalMesh BaseSkelMesh; +var native const Array_Mirror RawWedgePointIndices; + +// Export UMorphTargetSet::execFindMorphTarget(FFrame&, void* const) +native final function MorphTarget FindMorphTarget(name MorphTargetName); diff --git a/exported/Engine/Classes/MorphWeightSequence.uc b/exported/Engine/Classes/MorphWeightSequence.uc new file mode 100755 index 00000000..d8c074ae --- /dev/null +++ b/exported/Engine/Classes/MorphWeightSequence.uc @@ -0,0 +1,2 @@ +class MorphWeightSequence extends Object + native(Anim); diff --git a/exported/Engine/Classes/MotionBlurEffect.uc b/exported/Engine/Classes/MotionBlurEffect.uc new file mode 100755 index 00000000..7ff99917 --- /dev/null +++ b/exported/Engine/Classes/MotionBlurEffect.uc @@ -0,0 +1,19 @@ +class MotionBlurEffect extends PostProcessEffect + native + hidecategories(Object); + +var() float MaxVelocity; +var() float MotionBlurAmount; +var() bool FullMotionBlur; +var() float CameraRotationThreshold; +var() float CameraTranslationThreshold; + +defaultproperties +{ + MaxVelocity=1.0000000 + MotionBlurAmount=0.5000000 + FullMotionBlur=true + CameraRotationThreshold=90.0000000 + CameraTranslationThreshold=10000.0000000 + bShowInEditor=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/MultiCueSplineAudioComponent.uc b/exported/Engine/Classes/MultiCueSplineAudioComponent.uc new file mode 100755 index 00000000..3d7a61ef --- /dev/null +++ b/exported/Engine/Classes/MultiCueSplineAudioComponent.uc @@ -0,0 +1,33 @@ +class MultiCueSplineAudioComponent extends SplineAudioComponent + native + editinlinenew + collapsecategories + hidecategories(Object,ActorComponent,Object,ActorComponent,Object,ActorComponent); + +struct native MultiCueSplineSoundSlot +{ + var() SoundCue SoundCue; + var() float PitchScale; + var() float VolumeScale; + var() int StartPoint; + var() int EndPoint; + var native const Double LastUpdateTime; + var native const float SourceInteriorVolume; + var native const float SourceInteriorLPF; + var native const float CurrentInteriorVolume; + var native const float CurrentInteriorLPF; + var bool bPlaying; + + structdefaultproperties + { + SoundCue=none + PitchScale=1.0000000 + VolumeScale=1.0000000 + StartPoint=-1 + EndPoint=-1 + bPlaying=false + } +}; + +var(Sounds) init array SoundSlots; +var int CurrentSlotIndex; diff --git a/exported/Engine/Classes/MultiFont.uc b/exported/Engine/Classes/MultiFont.uc new file mode 100755 index 00000000..eca98332 --- /dev/null +++ b/exported/Engine/Classes/MultiFont.uc @@ -0,0 +1,8 @@ +class MultiFont extends Font + native + hidecategories(Object); + +var() editinline array ResolutionTestTable; + +// Export UMultiFont::execGetResolutionTestTableIndex(FFrame&, void* const) +native function int GetResolutionTestTableIndex(float HeightTest); diff --git a/exported/Engine/Classes/MultiProviderAnalytics.uc b/exported/Engine/Classes/MultiProviderAnalytics.uc new file mode 100755 index 00000000..2ef09d07 --- /dev/null +++ b/exported/Engine/Classes/MultiProviderAnalytics.uc @@ -0,0 +1,80 @@ +class MultiProviderAnalytics extends AnalyticEventsBase + transient + native(PlatformInterface) + config(Engine); + +var config array AnalyticsProviderClassNames; +var transient array AnalyticsProviders; + +function Init() +{ + local string AnalyticsClassStr; + local Class AnalyticsClass; + local AnalyticEventsBase Analytics; + + // End:0xB3 + foreach AnalyticsProviderClassNames(AnalyticsClassStr) + { + AnalyticsClass = Class(DynamicLoadObject(AnalyticsClassStr, Class'Core.Class')); + // End:0xB2 + if(AnalyticsClass != none) + { + Analytics = new AnalyticsClass; + // End:0xB2 + if(Analytics != none) + { + Analytics.Init(); + AnalyticsProviders.AddItem(Analytics); + } + } + } + //return; +} + +// Export UMultiProviderAnalytics::execSetUserId(FFrame&, void* const) +native event SetUserId(string NewUserId); + +// Export UMultiProviderAnalytics::execStartSession(FFrame&, void* const) +native event StartSession(); + +// Export UMultiProviderAnalytics::execEndSession(FFrame&, void* const) +native event EndSession(); + +// Export UMultiProviderAnalytics::execLogStringEvent(FFrame&, void* const) +native event LogStringEvent(string EventName, bool bTimed); + +// Export UMultiProviderAnalytics::execEndStringEvent(FFrame&, void* const) +native event EndStringEvent(string EventName); + +// Export UMultiProviderAnalytics::execLogStringEventParam(FFrame&, void* const) +native event LogStringEventParam(string EventName, string ParamName, string ParamValue, bool bTimed); + +// Export UMultiProviderAnalytics::execEndStringEventParam(FFrame&, void* const) +native event EndStringEventParam(string EventName, string ParamName, string ParamValue); + +// Export UMultiProviderAnalytics::execLogStringEventParamArray(FFrame&, void* const) +native event LogStringEventParamArray(string EventName, array ParamArray, bool bTimed); + +// Export UMultiProviderAnalytics::execEndStringEventParamArray(FFrame&, void* const) +native event EndStringEventParamArray(string EventName, array ParamArray); + +// Export UMultiProviderAnalytics::execLogErrorMessage(FFrame&, void* const) +native event LogErrorMessage(string ErrorName, string ErrorMessage); + +// Export UMultiProviderAnalytics::execLogUserAttributeUpdate(FFrame&, void* const) +native event LogUserAttributeUpdate(string AttributeName, string AttributeValue); + +// Export UMultiProviderAnalytics::execLogUserAttributeUpdateArray(FFrame&, void* const) +native event LogUserAttributeUpdateArray(array AttributeArray); + +// Export UMultiProviderAnalytics::execLogItemPurchaseEvent(FFrame&, void* const) +native event LogItemPurchaseEvent(string ItemId, string Currency, int PerItemCost, int ItemQuantity); + +// Export UMultiProviderAnalytics::execLogCurrencyPurchaseEvent(FFrame&, void* const) +native event LogCurrencyPurchaseEvent(string GameCurrencyType, int GameCurrencyAmount, string RealCurrencyType, float RealMoneyCost, string PaymentProvider); + +// Export UMultiProviderAnalytics::execLogCurrencyGivenEvent(FFrame&, void* const) +native event LogCurrencyGivenEvent(string GameCurrencyType, int GameCurrencyAmount); + +// Export UMultiProviderAnalytics::execSendCachedEvents(FFrame&, void* const) +native event SendCachedEvents(); diff --git a/exported/Engine/Classes/MusicTrackDataStructures.uc b/exported/Engine/Classes/MusicTrackDataStructures.uc new file mode 100755 index 00000000..0c45601f --- /dev/null +++ b/exported/Engine/Classes/MusicTrackDataStructures.uc @@ -0,0 +1,26 @@ +class MusicTrackDataStructures extends Object + native; + +struct native MusicTrackStruct +{ + var() SoundCue TheSoundCue; + var() bool bAutoPlay; + var() bool bPersistentAcrossLevels; + var() float FadeInTime; + var() float FadeInVolumeLevel; + var() float FadeOutTime; + var() float FadeOutVolumeLevel; + var(Mobile) string MP3Filename; + + structdefaultproperties + { + TheSoundCue=none + bAutoPlay=false + bPersistentAcrossLevels=false + FadeInTime=5.0000000 + FadeInVolumeLevel=1.0000000 + FadeOutTime=5.0000000 + FadeOutVolumeLevel=0.0000000 + MP3Filename="" + } +}; diff --git a/exported/Engine/Classes/Mutator.uc b/exported/Engine/Classes/Mutator.uc new file mode 100755 index 00000000..6ec5660a --- /dev/null +++ b/exported/Engine/Classes/Mutator.uc @@ -0,0 +1,265 @@ +class Mutator extends Info + abstract + native + notplaceable + hidecategories(Navigation,Movement,Collision); + +var Mutator NextMutator; +var() array GroupNames; +var bool bUserAdded; + +event PreBeginPlay() +{ + // End:0x12 + if(!MutatorIsAllowed()) + { + Destroy(); + } + //return; +} + +function bool MutatorIsAllowed() +{ + return !WorldInfo.IsDemoBuild(); + //return ReturnValue; +} + +event Destroyed() +{ + WorldInfo.Game.RemoveMutator(self); + super(Actor).Destroyed(); + //return; +} + +function Mutate(string MutateString, PlayerController Sender) +{ + // End:0x40 + if(NextMutator != none) + { + NextMutator.Mutate(MutateString, Sender); + } + //return; +} + +function ModifyLogin(out string Portal, out string Options) +{ + // End:0x40 + if(NextMutator != none) + { + NextMutator.ModifyLogin(Portal, Options); + } + //return; +} + +function ModifyPlayer(Pawn Other) +{ + // End:0x37 + if(NextMutator != none) + { + NextMutator.ModifyPlayer(Other); + } + //return; +} + +function AddMutator(Mutator M) +{ + // End:0x25 + if(NextMutator == none) + { + NextMutator = M; + } + else + { + NextMutator.AddMutator(M); + } + //return; +} + +function bool AlwaysKeep(Actor Other) +{ + // End:0x38 + if(NextMutator != none) + { + return NextMutator.AlwaysKeep(Other); + } + return false; + //return ReturnValue; +} + +function bool IsRelevant(Actor Other) +{ + local bool bResult; + + bResult = CheckReplacement(Other); + // End:0x6F + if(bResult && NextMutator != none) + { + bResult = NextMutator.IsRelevant(Other); + } + return bResult; + //return ReturnValue; +} + +function bool CheckRelevance(Actor Other) +{ + local bool bResult; + + // End:0x18 + if(AlwaysKeep(Other)) + { + return true; + } + bResult = IsRelevant(Other); + return bResult; + //return ReturnValue; +} + +function bool CheckReplacement(Actor Other) +{ + return true; + //return ReturnValue; +} + +function NotifyLogout(Controller Exiting) +{ + // End:0x37 + if(NextMutator != none) + { + NextMutator.NotifyLogout(Exiting); + } + //return; +} + +function NotifyLogin(Controller NewPlayer) +{ + // End:0x37 + if(NextMutator != none) + { + NextMutator.NotifyLogin(NewPlayer); + } + //return; +} + +function DriverEnteredVehicle(Vehicle V, Pawn P) +{ + // End:0x40 + if(NextMutator != none) + { + NextMutator.DriverEnteredVehicle(V, P); + } + //return; +} + +function bool CanLeaveVehicle(Vehicle V, Pawn P) +{ + // End:0x41 + if(NextMutator != none) + { + return NextMutator.CanLeaveVehicle(V, P); + } + return true; + //return ReturnValue; +} + +function DriverLeftVehicle(Vehicle V, Pawn P) +{ + // End:0x40 + if(NextMutator != none) + { + NextMutator.DriverLeftVehicle(V, P); + } + //return; +} + +function InitMutator(string Options, out string ErrorMessage) +{ + // End:0x40 + if(NextMutator != none) + { + NextMutator.InitMutator(Options, ErrorMessage); + } + //return; +} + +function GetSeamlessTravelActorList(bool bToEntry, out array ActorList) +{ + // End:0x23 + if(bToEntry) + { + ActorList[ActorList.Length] = self; + } + // End:0x64 + if(NextMutator != none) + { + NextMutator.GetSeamlessTravelActorList(bToEntry, ActorList); + } + //return; +} + +function NavigationPoint FindPlayerStart(Controller Player, optional byte InTeam, optional string IncomingName) +{ + // End:0x4F + if(NextMutator != none) + { + return NextMutator.FindPlayerStart(Player, InTeam, IncomingName); + } + else + { + return none; + } + //return ReturnValue; +} + +function bool HandleRestartGame() +{ + return (NextMutator != none) && NextMutator.HandleRestartGame(); + //return ReturnValue; +} + +function bool CheckEndGame(PlayerReplicationInfo Winner, string Reason) +{ + return (NextMutator == none) || NextMutator.CheckEndGame(Winner, Reason); + //return ReturnValue; +} + +function bool OverridePickupQuery(Pawn Other, Class ItemClass, Actor Pickup, out byte bAllowPickup) +{ + return (NextMutator != none) && NextMutator.OverridePickupQuery(Other, ItemClass, Pickup, bAllowPickup); + //return ReturnValue; +} + +function bool PreventDeath(Pawn Killed, Controller Killer, Class DamageType, Vector HitLocation) +{ + return (NextMutator != none) && NextMutator.PreventDeath(Killed, Killer, DamageType, HitLocation); + //return ReturnValue; +} + +function ScoreObjective(PlayerReplicationInfo Scorer, int Score) +{ + // End:0x40 + if(NextMutator != none) + { + NextMutator.ScoreObjective(Scorer, Score); + } + //return; +} + +function ScoreKill(Controller Killer, Controller Killed) +{ + // End:0x40 + if(NextMutator != none) + { + NextMutator.ScoreKill(Killer, Killed); + } + //return; +} + +function NetDamage(int OriginalDamage, out int Damage, Pawn injured, Controller InstigatedBy, Vector HitLocation, out Vector Momentum, Class DamageType, Actor DamageCauser) +{ + // End:0x76 + if(NextMutator != none) + { + NextMutator.NetDamage(OriginalDamage, Damage, injured, InstigatedBy, HitLocation, Momentum, DamageType, DamageCauser); + } + //return; +} diff --git a/exported/Engine/Classes/NavMeshBoundsVolume.uc b/exported/Engine/Classes/NavMeshBoundsVolume.uc new file mode 100755 index 00000000..86b8350f --- /dev/null +++ b/exported/Engine/Classes/NavMeshBoundsVolume.uc @@ -0,0 +1,20 @@ +class NavMeshBoundsVolume extends Volume + placeable + hidecategories(Navigation,Object,Movement,Display); + +defaultproperties +{ + BrushColor=(R=74,G=74,B=74,A=255) + bColored=true + // Reference: BrushComponent'Engine.Default__NavMeshBoundsVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bCollideActors=false + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NavMeshGoalFilter_MinPathDistance.uc b/exported/Engine/Classes/NavMeshGoalFilter_MinPathDistance.uc new file mode 100755 index 00000000..0a1c0a91 --- /dev/null +++ b/exported/Engine/Classes/NavMeshGoalFilter_MinPathDistance.uc @@ -0,0 +1,24 @@ +class NavMeshGoalFilter_MinPathDistance extends NavMeshGoal_Filter + native(AI); + +var protected transient int MinDistancePathShouldBe; + +static function bool MustBeLongerPathThan(NavMeshGoal_GenericFilterContainer FilterContainer, int InMinDistancePathShouldBe) +{ + local NavMeshGoalFilter_MinPathDistance Eval; + + // End:0xAE + if(FilterContainer != none) + { + Eval = NavMeshGoalFilter_MinPathDistance(FilterContainer.GetFilterOfType(default.Class)); + // End:0xAE + if(Eval != none) + { + Eval.MinDistancePathShouldBe = InMinDistancePathShouldBe; + FilterContainer.GoalFilters.AddItem(Eval); + return true; + } + } + return false; + //return ReturnValue; +} diff --git a/exported/Engine/Classes/NavMeshGoalFilter_NotNearOtherAI.uc b/exported/Engine/Classes/NavMeshGoalFilter_NotNearOtherAI.uc new file mode 100755 index 00000000..b6c64ca2 --- /dev/null +++ b/exported/Engine/Classes/NavMeshGoalFilter_NotNearOtherAI.uc @@ -0,0 +1,24 @@ +class NavMeshGoalFilter_NotNearOtherAI extends NavMeshGoal_Filter + native(AI); + +var transient float DistanceToCheck; + +static function bool NotNearOtherAI(NavMeshGoal_GenericFilterContainer FilterContainer, const float InDistanceToCheck) +{ + local NavMeshGoalFilter_NotNearOtherAI Eval; + + // End:0xAE + if(FilterContainer != none) + { + Eval = NavMeshGoalFilter_NotNearOtherAI(FilterContainer.GetFilterOfType(default.Class)); + // End:0xAE + if(Eval != none) + { + Eval.DistanceToCheck = InDistanceToCheck; + FilterContainer.GoalFilters.AddItem(Eval); + return true; + } + } + return false; + //return ReturnValue; +} diff --git a/exported/Engine/Classes/NavMeshGoalFilter_OutOfViewFrom.uc b/exported/Engine/Classes/NavMeshGoalFilter_OutOfViewFrom.uc new file mode 100755 index 00000000..1f6d8c4e --- /dev/null +++ b/exported/Engine/Classes/NavMeshGoalFilter_OutOfViewFrom.uc @@ -0,0 +1,25 @@ +class NavMeshGoalFilter_OutOfViewFrom extends NavMeshGoal_Filter + native(AI); + +var private native transient Pointer GoalPoly; +var transient Vector OutOfViewLocation; + +static function bool MustBeHiddenFromThisPoint(NavMeshGoal_GenericFilterContainer FilterContainer, Vector InOutOfViewLocation) +{ + local NavMeshGoalFilter_OutOfViewFrom Eval; + + // End:0xAE + if(FilterContainer != none) + { + Eval = NavMeshGoalFilter_OutOfViewFrom(FilterContainer.GetFilterOfType(default.Class)); + // End:0xAE + if(Eval != none) + { + Eval.OutOfViewLocation = InOutOfViewLocation; + FilterContainer.GoalFilters.AddItem(Eval); + return true; + } + } + return false; + //return ReturnValue; +} diff --git a/exported/Engine/Classes/NavMeshGoalFilter_OutSideOfDotProductWedge.uc b/exported/Engine/Classes/NavMeshGoalFilter_OutSideOfDotProductWedge.uc new file mode 100755 index 00000000..9f45c0ed --- /dev/null +++ b/exported/Engine/Classes/NavMeshGoalFilter_OutSideOfDotProductWedge.uc @@ -0,0 +1,28 @@ +class NavMeshGoalFilter_OutSideOfDotProductWedge extends NavMeshGoal_Filter + native(AI); + +var transient Vector Location; +var transient Vector Rotation; +var transient float Epsilon; + +static function bool OutsideOfDotProductWedge(NavMeshGoal_GenericFilterContainer FilterContainer, Vector InLocation, Rotator InRotation, float InEpsilon) +{ + local NavMeshGoalFilter_OutSideOfDotProductWedge Eval; + + // End:0x100 + if(FilterContainer != none) + { + Eval = NavMeshGoalFilter_OutSideOfDotProductWedge(FilterContainer.GetFilterOfType(default.Class)); + // End:0x100 + if(Eval != none) + { + Eval.Location = InLocation; + Eval.Rotation = Vector(InRotation); + Eval.Epsilon = InEpsilon; + FilterContainer.GoalFilters.AddItem(Eval); + return true; + } + } + return false; + //return ReturnValue; +} diff --git a/exported/Engine/Classes/NavMeshGoalFilter_PolyEncompassesAI.uc b/exported/Engine/Classes/NavMeshGoalFilter_PolyEncompassesAI.uc new file mode 100755 index 00000000..14020575 --- /dev/null +++ b/exported/Engine/Classes/NavMeshGoalFilter_PolyEncompassesAI.uc @@ -0,0 +1,24 @@ +class NavMeshGoalFilter_PolyEncompassesAI extends NavMeshGoal_Filter + native(AI); + +var transient Vector OverrideExtentToCheck; + +static function bool MakeSureAIFits(NavMeshGoal_GenericFilterContainer FilterContainer, const optional Vector InOverrideExtentToCheck) +{ + local NavMeshGoalFilter_PolyEncompassesAI Eval; + + // End:0xAF + if(FilterContainer != none) + { + Eval = NavMeshGoalFilter_PolyEncompassesAI(FilterContainer.GetFilterOfType(default.Class)); + // End:0xAF + if(Eval != none) + { + Eval.OverrideExtentToCheck = InOverrideExtentToCheck; + FilterContainer.GoalFilters.AddItem(Eval); + return true; + } + } + return false; + //return ReturnValue; +} diff --git a/exported/Engine/Classes/NavMeshGoal_At.uc b/exported/Engine/Classes/NavMeshGoal_At.uc new file mode 100755 index 00000000..807d062f --- /dev/null +++ b/exported/Engine/Classes/NavMeshGoal_At.uc @@ -0,0 +1,83 @@ +class NavMeshGoal_At extends NavMeshPathGoalEvaluator + native(AI); + +var Vector Goal; +var float GoalDist; +var bool bKeepPartial; +var bool bWeightPartialByDist; +var bool bGoalInSamePolyAsAnchor; +var float PartialDistSq; +var private native Pointer GoalPoly; +var private native Pointer PartialGoal; + +// Export UNavMeshGoal_At::execRecycleNative(FFrame&, void* const) +native function RecycleNative(); + +static function bool AtActor(NavigationHandle NavHandle, Actor GoalActor, optional float Dist, optional bool bReturnPartial, optional bool bInWeightPartialByDist) +{ + local Controller GoalController, MyController; + local Vector TargetLoc; + + // End:0x127 + if(NavHandle != none) + { + GoalController = Controller(GoalActor); + // End:0x65 + if(GoalController != none) + { + GoalActor = GoalController.Pawn; + } + // End:0x127 + if(GoalActor != none) + { + MyController = Controller(NavHandle.Outer); + NavHandle.PopulatePathfindingParamCache(); + TargetLoc = GoalActor.GetDestination(MyController); + return AtLocation(NavHandle, TargetLoc, Dist, bReturnPartial); + } + } + return false; + //return ReturnValue; +} + +static function bool AtLocation(NavigationHandle NavHandle, Vector GoalLocation, optional float Dist, optional bool bReturnPartial, optional bool bInWeightPartialByDist) +{ + local NavMeshGoal_At Eval; + + // End:0x12A + if(NavHandle != none) + { + Eval = NavMeshGoal_At(NavHandle.CreatePathGoalEvaluator(default.Class)); + // End:0x12A + if(Eval != none) + { + Eval.Goal = GoalLocation; + Eval.GoalDist = Dist; + Eval.bKeepPartial = bReturnPartial; + Eval.bWeightPartialByDist = bInWeightPartialByDist; + NavHandle.AddGoalEvaluator(Eval); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + Goal = vect(0.0000000, 0.0000000, 0.0000000); + GoalDist = default.GoalDist; + bKeepPartial = default.bKeepPartial; + bWeightPartialByDist = default.bWeightPartialByDist; + PartialDistSq = default.PartialDistSq; + RecycleNative(); + super.Recycle(); + //return; +} + +defaultproperties +{ + PartialDistSq=1000000000000.0000000 + bDoPartialAStar=true + MaxOpenListSize=2048 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NavMeshGoal_ClosestActorInList.uc b/exported/Engine/Classes/NavMeshGoal_ClosestActorInList.uc new file mode 100755 index 00000000..54a41669 --- /dev/null +++ b/exported/Engine/Classes/NavMeshGoal_ClosestActorInList.uc @@ -0,0 +1,33 @@ +class NavMeshGoal_ClosestActorInList extends NavMeshPathGoalEvaluator + native(AI); + +var array GoalList; +var private native const transient MultiMap_Mirror PolyToGoalActorMap; +var native Pointer CachedAnchorPoly; + +static function NavMeshGoal_ClosestActorInList ClosestActorInList(NavigationHandle NavHandle, const out array InGoalList) +{ + local NavMeshGoal_ClosestActorInList Eval; + + Eval = NavMeshGoal_ClosestActorInList(NavHandle.CreatePathGoalEvaluator(default.Class)); + Eval.GoalList = InGoalList; + NavHandle.AddGoalEvaluator(Eval); + return Eval; + //return ReturnValue; +} + +event Recycle() +{ + super.Recycle(); + GoalList.Length = 0; + RecycleInternal(); + //return; +} + +// Export UNavMeshGoal_ClosestActorInList::execRecycleInternal(FFrame&, void* const) +native function RecycleInternal(); + +defaultproperties +{ + MaxPathVisits=3000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NavMeshGoal_Filter.uc b/exported/Engine/Classes/NavMeshGoal_Filter.uc new file mode 100755 index 00000000..c92f0e51 --- /dev/null +++ b/exported/Engine/Classes/NavMeshGoal_Filter.uc @@ -0,0 +1,13 @@ +class NavMeshGoal_Filter extends Object + abstract + native(AI); + +var bool bShowDebug; +var transient int NumNodesThrownOut; +var transient int NumNodesProcessed; + +event string GetDumpString() +{ + return string(self); + //return ReturnValue; +} diff --git a/exported/Engine/Classes/NavMeshGoal_GenericFilterContainer.uc b/exported/Engine/Classes/NavMeshGoal_GenericFilterContainer.uc new file mode 100755 index 00000000..2fdf89bc --- /dev/null +++ b/exported/Engine/Classes/NavMeshGoal_GenericFilterContainer.uc @@ -0,0 +1,82 @@ +class NavMeshGoal_GenericFilterContainer extends NavMeshPathGoalEvaluator + native(AI); + +var export editinline transient array GoalFilters; +var private native transient Pointer SuccessfulGoal; +var protected transient NavigationHandle MyNavigationHandle; +var transient array SeedLocations; + +static function NavMeshGoal_GenericFilterContainer CreateAndAddFilterToNavHandle(NavigationHandle NavHandle, optional int InMaxPathVisits = -1) +{ + local NavMeshGoal_GenericFilterContainer Eval; + + // End:0x163 + if(NavHandle != none) + { + Eval = NavMeshGoal_GenericFilterContainer(NavHandle.CreatePathGoalEvaluator(default.Class)); + // End:0x163 + if(Eval != none) + { + // End:0x99 + if(InMaxPathVisits > 0) + { + Eval.MaxPathVisits = InMaxPathVisits; + } + Eval.MyNavigationHandle = NavHandle; + Eval.SeedLocations[Eval.SeedLocations.Length] = NavHandle.CachedPathParams.SearchStart; + NavHandle.AddGoalEvaluator(Eval); + return Eval; + } + } + return none; + //return ReturnValue; +} + +static function NavMeshGoal_GenericFilterContainer CreateAndAddFilterToNavHandleFromSeedList(NavigationHandle NavHandle, out array InSearchSeeds, optional int InMaxPathVisits = -1) +{ + local NavMeshGoal_GenericFilterContainer Eval; + + // End:0x11B + if(NavHandle != none) + { + Eval = NavMeshGoal_GenericFilterContainer(NavHandle.CreatePathGoalEvaluator(default.Class)); + // End:0x11B + if(Eval != none) + { + // End:0x99 + if(InMaxPathVisits > 0) + { + Eval.MaxPathVisits = InMaxPathVisits; + } + Eval.MyNavigationHandle = NavHandle; + Eval.SeedLocations = InSearchSeeds; + NavHandle.AddGoalEvaluator(Eval); + return Eval; + } + } + return none; + //return ReturnValue; +} + +function NavMeshGoal_Filter GetFilterOfType(Class Filter_Class) +{ + return new (self) Filter_Class; + //return ReturnValue; +} + +// Export UNavMeshGoal_GenericFilterContainer::execGetGoalPoint(FFrame&, void* const) +native function Vector GetGoalPoint(); + +function Recycle() +{ + super.Recycle(); + GoalFilters.Length = 0; + MaxPathVisits = default.MaxPathVisits; + MyNavigationHandle = none; + //return; +} + +defaultproperties +{ + MaxPathVisits=2048 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NavMeshGoal_Null.uc b/exported/Engine/Classes/NavMeshGoal_Null.uc new file mode 100755 index 00000000..87404868 --- /dev/null +++ b/exported/Engine/Classes/NavMeshGoal_Null.uc @@ -0,0 +1,44 @@ +class NavMeshGoal_Null extends NavMeshPathGoalEvaluator + native(AI); + +var private native Pointer PartialGoal; + +static function bool GoUntilBust(NavigationHandle NavHandle, optional int InMaxPathVisits = -1) +{ + local NavMeshGoal_Null Eval; + + // End:0xC3 + if(NavHandle != none) + { + Eval = NavMeshGoal_Null(NavHandle.CreatePathGoalEvaluator(default.Class)); + // End:0xC3 + if(Eval != none) + { + // End:0x99 + if(InMaxPathVisits > 0) + { + Eval.MaxPathVisits = InMaxPathVisits; + } + NavHandle.AddGoalEvaluator(Eval); + return true; + } + } + return false; + //return ReturnValue; +} + +// Export UNavMeshGoal_Null::execRecycleNative(FFrame&, void* const) +native function RecycleNative(); + +function Recycle() +{ + super.Recycle(); + MaxPathVisits = default.MaxPathVisits; + RecycleNative(); + //return; +} + +defaultproperties +{ + MaxPathVisits=2048 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NavMeshGoal_PolyEncompassesAI.uc b/exported/Engine/Classes/NavMeshGoal_PolyEncompassesAI.uc new file mode 100755 index 00000000..f2ff08d5 --- /dev/null +++ b/exported/Engine/Classes/NavMeshGoal_PolyEncompassesAI.uc @@ -0,0 +1,35 @@ +class NavMeshGoal_PolyEncompassesAI extends NavMeshPathGoalEvaluator + native(AI); + +var transient Vector OverrideExtentToCheck; + +static function bool MakeSureAIFits(NavigationHandle NavHandle, const optional Vector InOverrideExtentToCheck) +{ + local NavMeshGoal_PolyEncompassesAI Eval; + + // End:0xAC + if(NavHandle != none) + { + Eval = NavMeshGoal_PolyEncompassesAI(NavHandle.CreatePathGoalEvaluator(default.Class)); + // End:0xAC + if(Eval != none) + { + Eval.OverrideExtentToCheck = InOverrideExtentToCheck; + NavHandle.AddGoalEvaluator(Eval); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + //return; +} + +defaultproperties +{ + MaxPathVisits=64 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NavMeshGoal_Random.uc b/exported/Engine/Classes/NavMeshGoal_Random.uc new file mode 100755 index 00000000..dbfc967b --- /dev/null +++ b/exported/Engine/Classes/NavMeshGoal_Random.uc @@ -0,0 +1,49 @@ +class NavMeshGoal_Random extends NavMeshPathGoalEvaluator + native(AI); + +var int MinDist; +var float BestRating; +var private native Pointer PartialGoal; + +static function bool FindRandom(NavigationHandle NavHandle, optional int InMinDist = -1, optional int InMaxPathVisits = -1) +{ + local NavMeshGoal_Random Eval; + + // End:0xE8 + if(NavHandle != none) + { + Eval = NavMeshGoal_Random(NavHandle.CreatePathGoalEvaluator(default.Class)); + // End:0x93 + if(InMaxPathVisits > 0) + { + Eval.MaxPathVisits = InMaxPathVisits; + } + Eval.MinDist = InMinDist; + NavHandle.AddGoalEvaluator(Eval); + return true; + } + else + { + return false; + } + //return ReturnValue; +} + +// Export UNavMeshGoal_Random::execRecycleNative(FFrame&, void* const) +native function RecycleNative(); + +function Recycle() +{ + super.Recycle(); + MaxPathVisits = default.MaxPathVisits; + BestRating = default.BestRating; + MinDist = default.MinDist; + RecycleNative(); + //return; +} + +defaultproperties +{ + MinDist=-1 + BestRating=-1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NavMeshGoal_WithinDistanceEnvelope.uc b/exported/Engine/Classes/NavMeshGoal_WithinDistanceEnvelope.uc new file mode 100755 index 00000000..05e320d2 --- /dev/null +++ b/exported/Engine/Classes/NavMeshGoal_WithinDistanceEnvelope.uc @@ -0,0 +1,40 @@ +class NavMeshGoal_WithinDistanceEnvelope extends NavMeshPathGoalEvaluator + native(AI); + +var() float MaxDistance; +var() float MinDistance; +var() float MinTraversalDist; +var() Vector EnvelopeTestPoint; + +static function bool GoalWithinEnvelopeToLoc(NavigationHandle NavHandle, Vector InEnvelopeTestPoint, float InMaxDistance, float InMinDistance, optional float InMinTraversalDist) +{ + local NavMeshGoal_WithinDistanceEnvelope Eval; + + // End:0x124 + if(NavHandle != none) + { + Eval = NavMeshGoal_WithinDistanceEnvelope(NavHandle.CreatePathGoalEvaluator(default.Class)); + // End:0x124 + if(Eval != none) + { + Eval.EnvelopeTestPoint = InEnvelopeTestPoint; + Eval.MaxDistance = InMaxDistance; + Eval.MinDistance = InMinDistance; + Eval.MinTraversalDist = InMinTraversalDist; + NavHandle.AddGoalEvaluator(Eval); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + MaxDistance = default.MaxDistance; + MinDistance = default.MinDistance; + MinTraversalDist = default.MinTraversalDist; + EnvelopeTestPoint = default.EnvelopeTestPoint; + //return; +} diff --git a/exported/Engine/Classes/NavMeshObstacle.uc b/exported/Engine/Classes/NavMeshObstacle.uc new file mode 100755 index 00000000..75ee7dc4 --- /dev/null +++ b/exported/Engine/Classes/NavMeshObstacle.uc @@ -0,0 +1,124 @@ +class NavMeshObstacle extends Actor + native(AI) + placeable + hidecategories(Navigation) + implements(Interface_NavMeshPathObstacle); + +struct CheckpointRecord +{ + var bool bEnabled; + + structdefaultproperties + { + bEnabled=false + } +}; + +var private native const noexport Pointer VfTable_IInterface_NavMeshPathObstacle; +var() bool bEnabled; +var() bool bPreserveInternalGeo; + +event bool GetObstacleBoudingShape(out array Shape) +{ + local float Scale; + local Vector Offset; + + Scale = 200.0000000 * DrawScale; + Offset.X = Scale * DrawScale3D.X; + Offset.Y = Scale * DrawScale3D.Y; + Shape.AddItem(Location + (Offset >> Rotation)); + Offset.X = -Scale * DrawScale3D.X; + Offset.Y = Scale * DrawScale3D.Y; + Shape.AddItem(Location + (Offset >> Rotation)); + Offset.X = -Scale * DrawScale3D.X; + Offset.Y = -Scale * DrawScale3D.Y; + Shape.AddItem(Location + (Offset >> Rotation)); + Offset.X = Scale * DrawScale3D.X; + Offset.Y = -Scale * DrawScale3D.Y; + Shape.AddItem(Location + (Offset >> Rotation)); + return true; + //return ReturnValue; +} + +// Export UNavMeshObstacle::execRegisterObstacle(FFrame&, void* const) +native function RegisterObstacle(); + +// Export UNavMeshObstacle::execUnRegisterObstacle(FFrame&, void* const) +native function UnRegisterObstacle(); + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x21 + if(bEnabled) + { + RegisterObstacle(); + } + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x46 + if(Action.InputLinks[0].bHasImpulse) + { + bEnabled = true; + } + else + { + // End:0x8C + if(Action.InputLinks[1].bHasImpulse) + { + bEnabled = false; + } + else + { + // End:0xDB + if(Action.InputLinks[2].bHasImpulse) + { + bEnabled = !bEnabled; + } + } + } + SetEnabled(bEnabled); + //return; +} + +function SetEnabled(bool bInEnabled) +{ + // End:0x1A + if(bInEnabled) + { + RegisterObstacle(); + } + else + { + UnRegisterObstacle(); + } + //return; +} + +function CreateCheckpointRecord(out CheckpointRecord Record) +{ + Record.bEnabled = bEnabled; + //return; +} + +function ApplyCheckpointRecord(const out CheckpointRecord Record) +{ + SetEnabled(Record.bEnabled); + //return; +} + +defaultproperties +{ + Components[0]=none + // Reference: DrawBoxComponent'Engine.Default__NavMeshObstacle.DrawBox0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawBox0' + begin object name="DrawBox0" class=Engine.DrawBoxComponent + BoxColor=(R=64,G=70,B=255,A=255) + ReplacementPrimitive=none + end object + Components[1]=DrawBox0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NavMeshPathConstraint.uc b/exported/Engine/Classes/NavMeshPathConstraint.uc new file mode 100755 index 00000000..4abd4fc2 --- /dev/null +++ b/exported/Engine/Classes/NavMeshPathConstraint.uc @@ -0,0 +1,24 @@ +class NavMeshPathConstraint extends Object + native(AI); + +var NavMeshPathConstraint NextConstraint; +var int NumNodesProcessed; +var int NumThrownOutNodes; +var float AddedDirectCost; +var float AddedHeuristicCost; + +event Recycle() +{ + NextConstraint = none; + NumThrownOutNodes = 0; + AddedDirectCost = 0.0000000; + AddedHeuristicCost = 0.0000000; + NumNodesProcessed = 0; + //return; +} + +event string GetDumpString() +{ + return string(self); + //return ReturnValue; +} diff --git a/exported/Engine/Classes/NavMeshPathGoalEvaluator.uc b/exported/Engine/Classes/NavMeshPathGoalEvaluator.uc new file mode 100755 index 00000000..2d869211 --- /dev/null +++ b/exported/Engine/Classes/NavMeshPathGoalEvaluator.uc @@ -0,0 +1,41 @@ +class NavMeshPathGoalEvaluator extends Object + native(AI); + +struct native BiasedGoalActor +{ + var Actor Goal; + var int ExtraCost; + + structdefaultproperties + { + Goal=none + ExtraCost=0 + } +}; + +var protected transient NavMeshPathGoalEvaluator NextEvaluator; +var protected int MaxPathVisits; +var bool bAlwaysCallEvaluateGoal; +var bool bDoPartialAStar; +var transient int NumNodesThrownOut; +var transient int NumNodesProcessed; +var int MaxOpenListSize; + +event Recycle() +{ + NumNodesThrownOut = 0; + NumNodesProcessed = 0; + NextEvaluator = none; + //return; +} + +event string GetDumpString() +{ + return string(self); + //return ReturnValue; +} + +defaultproperties +{ + MaxPathVisits=1024 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NavMeshPath_AlongLine.uc b/exported/Engine/Classes/NavMeshPath_AlongLine.uc new file mode 100755 index 00000000..74b550fe --- /dev/null +++ b/exported/Engine/Classes/NavMeshPath_AlongLine.uc @@ -0,0 +1,31 @@ +class NavMeshPath_AlongLine extends NavMeshPathConstraint + native(AI); + +var Vector Direction; + +static function bool AlongLine(NavigationHandle NavHandle, Vector Dir) +{ + local NavMeshPath_AlongLine Con; + + // End:0xBE + if((NavHandle != none) && !IsZero(Dir)) + { + Con = NavMeshPath_AlongLine(NavHandle.CreatePathConstraint(default.Class)); + // End:0xBE + if(Con != none) + { + Con.Direction = Dir; + NavHandle.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + Direction = vect(0.0000000, 0.0000000, 0.0000000); + //return; +} diff --git a/exported/Engine/Classes/NavMeshPath_EnforceTwoWayEdges.uc b/exported/Engine/Classes/NavMeshPath_EnforceTwoWayEdges.uc new file mode 100755 index 00000000..0340e599 --- /dev/null +++ b/exported/Engine/Classes/NavMeshPath_EnforceTwoWayEdges.uc @@ -0,0 +1,21 @@ +class NavMeshPath_EnforceTwoWayEdges extends NavMeshPathConstraint + native(AI); + +static function bool EnforceTwoWayEdges(NavigationHandle NavHandle) +{ + local NavMeshPath_EnforceTwoWayEdges Con; + + // End:0x83 + if(NavHandle != none) + { + Con = NavMeshPath_EnforceTwoWayEdges(NavHandle.CreatePathConstraint(default.Class)); + // End:0x83 + if(Con != none) + { + NavHandle.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} diff --git a/exported/Engine/Classes/NavMeshPath_MinDistBetweenSpecsOfType.uc b/exported/Engine/Classes/NavMeshPath_MinDistBetweenSpecsOfType.uc new file mode 100755 index 00000000..d71d4fc2 --- /dev/null +++ b/exported/Engine/Classes/NavMeshPath_MinDistBetweenSpecsOfType.uc @@ -0,0 +1,45 @@ +class NavMeshPath_MinDistBetweenSpecsOfType extends NavMeshPathConstraint + native(AI); + +var float MinDistBetweenEdgeTypes; +var Vector InitLocation; +var Pylon.ENavMeshEdgeType EdgeType; +var float Penalty; + +static function bool EnforceMinDist(NavigationHandle NavHandle, float InMinDist, Pylon.ENavMeshEdgeType InEdgeType, optional Vector LastLocation, optional float InPenalty) +{ + local NavMeshPath_MinDistBetweenSpecsOfType Con; + + // End:0x13A + if((NavHandle != none) && InMinDist > 0.0000000) + { + Con = NavMeshPath_MinDistBetweenSpecsOfType(NavHandle.CreatePathConstraint(default.Class)); + // End:0x13A + if(Con != none) + { + Con.MinDistBetweenEdgeTypes = InMinDist; + Con.InitLocation = LastLocation; + Con.EdgeType = InEdgeType; + Con.Penalty = InPenalty; + NavHandle.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + MinDistBetweenEdgeTypes = default.MinDistBetweenEdgeTypes; + EdgeType = 0; + InitLocation = vect(0.0000000, 0.0000000, 0.0000000); + Penalty = default.Penalty; + //return; +} + +defaultproperties +{ + Penalty=10000.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NavMeshPath_SameCoverLink.uc b/exported/Engine/Classes/NavMeshPath_SameCoverLink.uc new file mode 100755 index 00000000..4f3f349d --- /dev/null +++ b/exported/Engine/Classes/NavMeshPath_SameCoverLink.uc @@ -0,0 +1,21 @@ +class NavMeshPath_SameCoverLink extends NavMeshPathConstraint + native(AI); + +var CoverLink TestLink; + +static final function SameCoverLink(NavigationHandle NavHandle, CoverLink InLink) +{ + local NavMeshPath_SameCoverLink NewConstraint; + + NewConstraint = NavMeshPath_SameCoverLink(NavHandle.CreatePathConstraint(default.Class)); + NewConstraint.TestLink = InLink; + NavHandle.AddPathConstraint(NewConstraint); + //return; +} + +function Recycle() +{ + super.Recycle(); + TestLink = none; + //return; +} diff --git a/exported/Engine/Classes/NavMeshPath_Toward.uc b/exported/Engine/Classes/NavMeshPath_Toward.uc new file mode 100755 index 00000000..4b5a607e --- /dev/null +++ b/exported/Engine/Classes/NavMeshPath_Toward.uc @@ -0,0 +1,61 @@ +class NavMeshPath_Toward extends NavMeshPathConstraint + native(AI); + +var bool bBiasAgainstHighLevelPath; +var float OutOfHighLevelPathBias; +var Actor GoalActor; +var Vector GoalPoint; + +static function bool TowardGoal(NavigationHandle NavHandle, Actor Goal) +{ + local NavMeshPath_Toward Con; + + // End:0xBC + if((NavHandle != none) && Goal != none) + { + Con = NavMeshPath_Toward(NavHandle.CreatePathConstraint(default.Class)); + // End:0xBC + if(Con != none) + { + Con.GoalActor = Goal; + NavHandle.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} + +static function bool TowardPoint(NavigationHandle NavHandle, Vector Point) +{ + local NavMeshPath_Toward Con; + + // End:0xC8 + if((NavHandle != none) && Point != vect(0.0000000, 0.0000000, 0.0000000)) + { + Con = NavMeshPath_Toward(NavHandle.CreatePathConstraint(default.Class)); + // End:0xC8 + if(Con != none) + { + Con.GoalPoint = Point; + NavHandle.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + GoalActor = none; + GoalPoint = default.GoalPoint; + //return; +} + +defaultproperties +{ + bBiasAgainstHighLevelPath=true + OutOfHighLevelPathBias=5000.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NavMeshPath_WithinDistanceEnvelope.uc b/exported/Engine/Classes/NavMeshPath_WithinDistanceEnvelope.uc new file mode 100755 index 00000000..51a084be --- /dev/null +++ b/exported/Engine/Classes/NavMeshPath_WithinDistanceEnvelope.uc @@ -0,0 +1,56 @@ +class NavMeshPath_WithinDistanceEnvelope extends NavMeshPathConstraint + native(AI); + +var() float MaxDistance; +var() float MinDistance; +var() bool bSoft; +var() bool bOnlyThrowOutNodesThatLeaveEnvelope; +var() float SoftStartPenalty; +var() Vector EnvelopeTestPoint; + +static function bool StayWithinEnvelopeToLoc(NavigationHandle NavHandle, Vector InEnvelopeTestPoint, float InMaxDistance, float InMinDistance, optional bool bInSoft = true, optional float InSoftStartPenalty = -1.0000000, optional bool bOnlyTossOutSpecsThatLeave) +{ + local NavMeshPath_WithinDistanceEnvelope Con; + + // End:0x199 + if(NavHandle != none) + { + Con = NavMeshPath_WithinDistanceEnvelope(NavHandle.CreatePathConstraint(default.Class)); + // End:0x199 + if(Con != none) + { + Con.EnvelopeTestPoint = InEnvelopeTestPoint; + Con.bSoft = bInSoft; + Con.MaxDistance = InMaxDistance; + Con.MinDistance = InMinDistance; + Con.bOnlyThrowOutNodesThatLeaveEnvelope = bOnlyTossOutSpecsThatLeave; + // End:0x16F + if(InSoftStartPenalty > -1.0000000) + { + Con.SoftStartPenalty = InSoftStartPenalty; + } + NavHandle.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + MaxDistance = default.MaxDistance; + MinDistance = default.MinDistance; + bSoft = default.bSoft; + SoftStartPenalty = default.SoftStartPenalty; + EnvelopeTestPoint = default.EnvelopeTestPoint; + bOnlyThrowOutNodesThatLeaveEnvelope = default.bOnlyThrowOutNodesThatLeaveEnvelope; + //return; +} + +defaultproperties +{ + bSoft=true + SoftStartPenalty=320.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NavMeshPath_WithinTraversalDist.uc b/exported/Engine/Classes/NavMeshPath_WithinTraversalDist.uc new file mode 100755 index 00000000..352dfa75 --- /dev/null +++ b/exported/Engine/Classes/NavMeshPath_WithinTraversalDist.uc @@ -0,0 +1,42 @@ +class NavMeshPath_WithinTraversalDist extends NavMeshPathConstraint + native(AI); + +var() float MaxTraversalDist; +var() bool bSoft; +var() float SoftStartPenalty; + +static function bool DontExceedMaxDist(NavigationHandle NavHandle, float InMaxTraversalDist, optional bool bInSoft = true) +{ + local NavMeshPath_WithinTraversalDist Con; + + // End:0xEF + if((NavHandle != none) && InMaxTraversalDist > 0.0000000) + { + Con = NavMeshPath_WithinTraversalDist(NavHandle.CreatePathConstraint(default.Class)); + // End:0xEF + if(Con != none) + { + Con.MaxTraversalDist = InMaxTraversalDist; + Con.bSoft = bInSoft; + NavHandle.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + MaxTraversalDist = default.MaxTraversalDist; + bSoft = default.bSoft; + SoftStartPenalty = default.SoftStartPenalty; + //return; +} + +defaultproperties +{ + bSoft=true + SoftStartPenalty=320.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NavMeshRenderingComponent.uc b/exported/Engine/Classes/NavMeshRenderingComponent.uc new file mode 100755 index 00000000..959f340b --- /dev/null +++ b/exported/Engine/Classes/NavMeshRenderingComponent.uc @@ -0,0 +1,13 @@ +class NavMeshRenderingComponent extends PrimitiveComponent + native(AI) + editinlinenew + hidecategories(Object); + +defaultproperties +{ + ReplacementPrimitive=none + HiddenGame=true + bSelectable=false + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/NavigationHandle.uc b/exported/Engine/Classes/NavigationHandle.uc new file mode 100755 index 00000000..410d46fe --- /dev/null +++ b/exported/Engine/Classes/NavigationHandle.uc @@ -0,0 +1,239 @@ +class NavigationHandle extends Object within Actor + native(AI); + +const LINECHECK_GRANULARITY = 768.f; +const NUM_PATHFINDING_PARAMS = 9; +const NumBreadCrumbs = 10; + +struct native PolySegmentSpan +{ + var native Pointer Poly; + var Vector P1; + var Vector P2; + + structdefaultproperties + { + P1=(X=0.0000000,Y=0.0000000,Z=0.0000000) + P2=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct EdgePointer +{ + var native const Pointer Dummy; +}; + +struct native PathStore +{ + var native array EdgeList; +}; + +struct native NavMeshPathParams +{ + var native Pointer Interface; + var bool bCanMantle; + var bool bNeedsMantleValidityTest; + var bool bAbleToSearch; + var Vector SearchExtent; + var float SearchLaneMultiplier; + var Vector SearchStart; + var float MaxDropHeight; + var float MinWalkableZ; + var float MaxHoverDistance; + var float MaxPathLength; + + structdefaultproperties + { + bCanMantle=false + bNeedsMantleValidityTest=false + bAbleToSearch=false + SearchExtent=(X=0.0000000,Y=0.0000000,Z=0.0000000) + SearchLaneMultiplier=0.0000000 + SearchStart=(X=0.0000000,Y=0.0000000,Z=0.0000000) + MaxDropHeight=0.0000000 + MinWalkableZ=0.0000000 + MaxHoverDistance=0.0000000 + MaxPathLength=0.0000000 + } +}; + +var Pylon AnchorPylon; +var native Pointer AnchorPoly; +var PathStore PathCache; +var native transient Pointer BestUnfinishedPathPoint; +var native const Pointer CurrentEdge; +var native const Pointer SubGoal_DestPoly; +var BasedPosition FinalDestination; +var Actor FinalDestinationActor; +var bool bSkipRouteCacheUpdates; +var bool bUseORforEvaluateGoal; +var(PathDebug) bool bDebugConstraintsAndGoalEvals; +var(PathDebug) bool bUltraVerbosePathDebugging; +var(PathDebug) bool bVisualPathDebugging; +var() bool bDebug_Breadcrumbs; +var NavMeshPathConstraint PathConstraintList; +var NavMeshPathGoalEvaluator PathGoalList; +var NavMeshPathParams CachedPathParams; +var(PathDebug) EngineTypes.EPathFindingError LastPathError; +var(PathDebug) float LastPathFailTime; +var Vector Breadcrumbs[10]; +var int BreadCrumbMostRecentIdx; +var float BreadCrumbDistanceInterval; +var float m_fLastPathLength; + +// Export UNavigationHandle::execCopyPathStoreToPathCache(FFrame&, void* const) +native function CopyPathStoreToPathCache(const out PathStore InStore); + +// Export UNavigationHandle::execUpdateBreadCrumbs(FFrame&, void* const) +native function UpdateBreadCrumbs(Vector InLocation); + +// Export UNavigationHandle::execGetNextBreadCrumb(FFrame&, void* const) +native function bool GetNextBreadCrumb(out Vector out_BreadCrumbLoc); + +// Export UNavigationHandle::execClearConstraints(FFrame&, void* const) +native function ClearConstraints(); + +// Export UNavigationHandle::execAddPathConstraint(FFrame&, void* const) +native function AddPathConstraint(NavMeshPathConstraint Constraint); + +// Export UNavigationHandle::execAddGoalEvaluator(FFrame&, void* const) +native function AddGoalEvaluator(NavMeshPathGoalEvaluator Evaluator); + +// Export UNavigationHandle::execBuildFromPylonAToPylonB(FFrame&, void* const) +native function Pylon BuildFromPylonAToPylonB(Pylon A, Pylon B); + +// Export UNavigationHandle::execDoesPylonAHaveAPathToPylonB(FFrame&, void* const) +native function bool DoesPylonAHaveAPathToPylonB(Pylon A, Pylon B); + +function NavMeshPathConstraint CreatePathConstraint(Class ConstraintClass) +{ + return Outer.WorldInfo.GetNavMeshPathConstraintFromCache(ConstraintClass, self); + //return ReturnValue; +} + +function NavMeshPathGoalEvaluator CreatePathGoalEvaluator(Class GoalEvalClass) +{ + return Outer.WorldInfo.GetNavMeshPathGoalEvaluatorFromCache(GoalEvalClass, self); + //return ReturnValue; +} + +function int GetPathCacheLength() +{ + return PathCache.EdgeList.Length; + //return ReturnValue; +} + +// Export UNavigationHandle::execPathCache_Empty(FFrame&, void* const) +native function bool PathCache_Empty(); + +// Export UNavigationHandle::execPathCache_GetGoalPoint(FFrame&, void* const) +native function Vector PathCache_GetGoalPoint(); + +// Export UNavigationHandle::execPathCache_RemoveIndex(FFrame&, void* const) +native function bool PathCache_RemoveIndex(int InIdx, optional int Count = 1); + +// Export UNavigationHandle::execGetBestUnfinishedPathPoint(FFrame&, void* const) +native function Vector GetBestUnfinishedPathPoint(); + +// Export UNavigationHandle::execFindPylon(FFrame&, void* const) +native function bool FindPylon(); + +// Export UNavigationHandle::execGetPylonFromPos(FFrame&, void* const) +native static function Pylon GetPylonFromPos(Vector Position); + +// Export UNavigationHandle::execGetNextMoveLocation(FFrame&, void* const) +native function bool GetNextMoveLocation(out Vector out_MoveDest, float ArrivalDistance); + +// Export UNavigationHandle::execSetFinalDestination(FFrame&, void* const) +native function bool SetFinalDestination(Vector FinalDest, optional Actor FinalActor); + +// Export UNavigationHandle::execComputeValidFinalDestination(FFrame&, void* const) +native function bool ComputeValidFinalDestination(out Vector out_ComputedPosition); + +// Export UNavigationHandle::execFindPath(FFrame&, void* const) +native function bool FindPath(optional out Actor out_DestActor, optional out int out_DestItem); + +// Export UNavigationHandle::execSuggestMovePreparation(FFrame&, void* const) +native function bool SuggestMovePreparation(out Vector MovePt, Controller C); + +// Export UNavigationHandle::execObstacleLineCheck(FFrame&, void* const) +native static final function bool ObstacleLineCheck(Vector Start, Vector End, Vector Extent, optional out Vector out_HitLoc, optional out Vector out_HitNorm); + +// Export UNavigationHandle::execObstaclePointCheck(FFrame&, void* const) +native static final function bool ObstaclePointCheck(Vector Pt, Vector Extent); + +// Export UNavigationHandle::execLineCheck(FFrame&, void* const) +native function bool LineCheck(Vector Start, Vector End, Vector Extent, optional out Vector out_HitLocation, optional out Vector out_HitNormal); + +// Export UNavigationHandle::execPointCheck(FFrame&, void* const) +native function bool PointCheck(Vector Pt, Vector Extent); + +// Export UNavigationHandle::execPointReachable(FFrame&, void* const) +native function bool PointReachable(Vector Point, optional Vector OverrideStartPoint, optional bool bAllowHitsInEndCollisionBox = true); + +// Export UNavigationHandle::execActorReachable(FFrame&, void* const) +native function bool ActorReachable(Actor A); + +// Export UNavigationHandle::execDrawPathCache(FFrame&, void* const) +native function DrawPathCache(optional Vector DrawOffset, optional bool bPersistent, optional Color DrawColor); + +// Export UNavigationHandle::execPrintPathCacheDebugText(FFrame&, void* const) +native function PrintPathCacheDebugText(); + +// Export UNavigationHandle::execGetCurrentEdgeDebugText(FFrame&, void* const) +native function string GetCurrentEdgeDebugText(); + +// Export UNavigationHandle::execClearCurrentEdge(FFrame&, void* const) +native function ClearCurrentEdge(); + +// Export UNavigationHandle::execGetCurrentEdgeType(FFrame&, void* const) +native function Pylon.ENavMeshEdgeType GetCurrentEdgeType(); + +// Export UNavigationHandle::execGetAllPolyCentersWithinBounds(FFrame&, void* const) +native static function GetAllPolyCentersWithinBounds(Vector pos, Vector Extent, out array out_PolyCtrs); + +// Export UNavigationHandle::execGetValidPositionsForBox(FFrame&, void* const) +native static function GetValidPositionsForBox(Vector pos, float Radius, Vector Extent, bool bMustBeReachableFromStartPos, out array out_ValidPositions, optional int MaxPositions = -1, optional float MinRadius, optional Vector ValidBoxAroundStartPos = vect(0.0000000, 0.0000000, 0.0000000)); + +// Export UNavigationHandle::execLimitPathCacheDistance(FFrame&, void* const) +native function LimitPathCacheDistance(float MaxDist); + +// Export UNavigationHandle::execIsAnchorInescapable(FFrame&, void* const) +native function bool IsAnchorInescapable(); + +// Export UNavigationHandle::execGetFirstMoveLocation(FFrame&, void* const) +native function Vector GetFirstMoveLocation(); + +// Export UNavigationHandle::execCalculatePathDistance(FFrame&, void* const) +native function float CalculatePathDistance(optional Vector FinalDest); + +// Export UNavigationHandle::execCopyMovePointsFromPathCache(FFrame&, void* const) +native function CopyMovePointsFromPathCache(Vector FinalDest, out array out_MovePoints); + +// Export UNavigationHandle::execMoveToDesiredHeightAboveMesh(FFrame&, void* const) +native static function Vector MoveToDesiredHeightAboveMesh(Vector Point, float Height); + +// Export UNavigationHandle::execPopulatePathfindingParamCache(FFrame&, void* const) +native final function bool PopulatePathfindingParamCache(); + +// Export UNavigationHandle::execGetAllCoverSlotsInRadius(FFrame&, void* const) +native static final function bool GetAllCoverSlotsInRadius(Vector FromLoc, float Radius, out array out_CoverList); + +// Export UNavigationHandle::execGetValidatedAnchorPosition(FFrame&, void* const) +native final function bool GetValidatedAnchorPosition(out Vector out_NewAnchorLoc, optional Vector OverrideStartLoc); + +// Export UNavigationHandle::execGetPackedKeyForPosition(FFrame&, void* const) +native function int GetPackedKeyForPosition(out Vector pos, const out Vector PrevPos, int PreviousKey); + +// Export UNavigationHandle::execStaticGetValidatedAnchorPosition(FFrame&, void* const) +native static final function bool StaticGetValidatedAnchorPosition(out Vector out_NewAnchorLoc, Vector StartCheckBaseLocation, Vector Extent); + +function DrawBreadCrumbs(optional bool bPersistent = false) +{ + //return; +} + +defaultproperties +{ + BreadCrumbDistanceInterval=75.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NavigationPoint.uc b/exported/Engine/Classes/NavigationPoint.uc new file mode 100755 index 00000000..3da3a9a1 --- /dev/null +++ b/exported/Engine/Classes/NavigationPoint.uc @@ -0,0 +1,310 @@ +class NavigationPoint extends Actor + native + notplaceable + hidecategories(Navigation,Lighting,LightColor,Force) + classgroup(Navigation); + +const INFINITE_PATH_COST = 10000000; + +struct native NavigationOctreeObject +{ + var Box BoundingBox; + var Vector BoxCenter; + var native const transient Pointer OctreeNode; + var const noexport Object Owner; + var const noexport byte OwnerType; + + structdefaultproperties + { + BoundingBox=(Min=(X=0.0000000,Y=0.0000000,Z=0.0000000),Max=(X=0.0000000,Y=0.0000000,Z=0.0000000),IsValid=0) + BoxCenter=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Owner=none + OwnerType=0 + } +}; + +struct native DebugNavCost +{ + var string Desc; + var int Cost; + + structdefaultproperties + { + Desc="" + Cost=0 + } +}; + +struct CheckpointRecord +{ + var bool bDisabled; + var bool bBlocked; + + structdefaultproperties + { + bDisabled=false + bBlocked=false + } +}; + +var transient bool bEndPoint; +var transient bool bTransientEndPoint; +var transient bool bHideEditorPaths; +var transient bool bCanReach; +var() bool bBlocked; +var() bool bOneWayPath; +var bool bNeverUseStrafing; +var bool bAlwaysUseStrafing; +var const bool bForceNoStrafing; +var const bool bAutoBuilt; +var bool bSpecialMove; +var bool bNoAutoConnect; +var const bool bNotBased; +var const bool bPathsChanged; +var() bool bDestinationOnly; +var bool bSourceOnly; +var bool bSpecialForced; +var bool bMustBeReachable; +var bool bBlockable; +var bool bFlyingPreferred; +var bool bMayCausePain; +var transient bool bAlreadyVisited; +var() bool bVehicleDestination; +var() bool bMakeSourceOnly; +var bool bMustTouchToReach; +var bool bCanWalkOnToReach; +var bool bBuildLongPaths; +var(VehicleUsage) bool bBlockedForVehicles; +var(VehicleUsage) bool bPreferredVehiclePath; +var const bool bHasCrossLevelPaths; +var transient bool bShouldSaveForCheckpoint; +var native const transient NavigationOctreeObject NavOctreeObject; +var() duplicatetransient const editconst array PathList; +var() const editconst array Volumes; +var int visitedWeight; +var const int bestPathWeight; +var private const NavigationPoint nextNavigationPoint; +var const NavigationPoint nextOrdered; +var const NavigationPoint prevOrdered; +var const NavigationPoint previousPath; +var int Cost; +var() int ExtraCost; +var transient int TransientCost; +var transient int FearCost; +var transient array CostArray; +var DroppedPickup InventoryCache; +var float InventoryDist; +var const float LastDetourWeight; +var export editinline CylinderComponent CylinderComponent; +var() const editconst Cylinder MaxPathSize; +var() duplicatetransient const editconst Guid NavGuid; +var const export editinline transient SpriteComponent GoodSprite; +var const export editinline transient SpriteComponent BadSprite; +var() const editconst int NetworkID; +var transient Pawn AnchoredPawn; +var transient float LastAnchoredPawnTime; + +// Export UNavigationPoint::execGetBoundingCylinder(FFrame&, void* const) +native function GetBoundingCylinder(out float CollisionRadius, out float CollisionHeight); + +// Export UNavigationPoint::execGetReachSpecTo(FFrame&, void* const) +native final function ReachSpec GetReachSpecTo(NavigationPoint Nav, optional Class SpecClass); + +// Export UNavigationPoint::execIsUsableAnchorFor(FFrame&, void* const) +native function bool IsUsableAnchorFor(Pawn P); + +// Export UNavigationPoint::execCanTeleport(FFrame&, void* const) +native function bool CanTeleport(Actor A); + +event int SpecialCost(Pawn Seeker, ReachSpec Path) +{ + //return ReturnValue; +} + +event bool Accept(Actor Incoming, Actor Source) +{ + local bool bResult; + + bResult = Incoming.SetLocation(Location); + // End:0x86 + if(bResult) + { + Incoming.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + Incoming.SetRotation(Rotation); + } + Incoming.PlayTeleportEffect(true, false); + return bResult; + //return ReturnValue; +} + +event float DetourWeight(Pawn Other, float PathWeight) +{ + //return ReturnValue; +} + +event bool SuggestMovePreparation(Pawn Other) +{ + return Other.SpecialMoveTo(Other.Anchor, self, Other.Controller.MoveTarget); + //return ReturnValue; +} + +function bool ProceedWithMove(Pawn Other) +{ + return true; + //return ReturnValue; +} + +static final function NavigationPoint GetNearestNavToActor(Actor ChkActor, optional Class RequiredClass, optional array ExcludeList, optional float MinDist) +{ + local NavigationPoint Nav, BestNav; + local float Dist, bestDist; + + // End:0x16B + if(ChkActor != none) + { + // End:0x16A + foreach ChkActor.WorldInfo.AllNavigationPoints(Class'Engine.NavigationPoint', Nav) + { + // End:0x169 + if(((RequiredClass == none) || Nav.Class == RequiredClass) && ExcludeList.Find(Nav) == -1) + { + Dist = VSize(Nav.Location - ChkActor.Location); + // End:0x169 + if(Dist > MinDist) + { + // End:0x169 + if((BestNav == none) || Dist < bestDist) + { + BestNav = Nav; + bestDist = Dist; + } + } + } + } + } + return BestNav; + //return ReturnValue; +} + +static final function NavigationPoint GetNearestNavToPoint(Actor ChkActor, Vector ChkPoint, optional Class RequiredClass, optional array ExcludeList) +{ + local NavigationPoint Nav, BestNav; + local float Dist, bestDist; + + // End:0x13E + if(ChkActor != none) + { + // End:0x13D + foreach ChkActor.WorldInfo.AllNavigationPoints(Class'Engine.NavigationPoint', Nav) + { + // End:0x13C + if(((RequiredClass == none) || Nav.Class == RequiredClass) && ExcludeList.Find(Nav) == -1) + { + Dist = VSize(Nav.Location - ChkPoint); + // End:0x13C + if((BestNav == none) || Dist < bestDist) + { + BestNav = Nav; + bestDist = Dist; + } + } + } + } + return BestNav; + //return ReturnValue; +} + +// Export UNavigationPoint::execGetAllNavInRadius(FFrame&, void* const) +native static final function bool GetAllNavInRadius(Actor ChkActor, Vector ChkPoint, float Radius, out array out_NavList, optional bool bSkipBlocked, optional int inNetworkID = -1, optional Cylinder MinSize); + +// Export UNavigationPoint::execIsOnDifferentNetwork(FFrame&, void* const) +native final function bool IsOnDifferentNetwork(NavigationPoint Nav); + +function OnToggle(SeqAct_Toggle inAction) +{ + // End:0x46 + if(inAction.InputLinks[0].bHasImpulse) + { + bBlocked = false; + } + else + { + // End:0x8C + if(inAction.InputLinks[1].bHasImpulse) + { + bBlocked = true; + } + else + { + // End:0xDB + if(inAction.InputLinks[2].bHasImpulse) + { + bBlocked = !bBlocked; + } + } + } + WorldInfo.Game.NotifyNavigationChanged(self); + bShouldSaveForCheckpoint = true; + //return; +} + +simulated event ShutDown() +{ + super.ShutDown(); + bBlocked = true; + WorldInfo.Game.NotifyNavigationChanged(self); + bShouldSaveForCheckpoint = true; + //return; +} + +function bool ShouldSaveForCheckpoint() +{ + return bShouldSaveForCheckpoint; + //return ReturnValue; +} + +function CreateCheckpointRecord(out CheckpointRecord Record) +{ + Record.bBlocked = bBlocked; + //return; +} + +function ApplyCheckpointRecord(const out CheckpointRecord Record) +{ + bBlocked = Record.bBlocked; + bShouldSaveForCheckpoint = true; + //return; +} + +simulated event string GetDebugAbbrev() +{ + return "NP?"; + //return ReturnValue; +} + +defaultproperties +{ + bMayCausePain=true + bMustTouchToReach=true + bBuildLongPaths=true + // Reference: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=50.0000000 + CollisionRadius=50.0000000 + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + NetworkID=-1 + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + bStatic=true + bNoDelete=true + bCollideWhenPlacing=true + bForceAllowKismetModification=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/None.uc b/exported/Engine/Classes/None.uc new file mode 100755 index 00000000..8e720fe8 --- /dev/null +++ b/exported/Engine/Classes/None.uc @@ -0,0 +1 @@ +class None; diff --git a/exported/Engine/Classes/Note.uc b/exported/Engine/Classes/Note.uc new file mode 100755 index 00000000..87002b54 --- /dev/null +++ b/exported/Engine/Classes/Note.uc @@ -0,0 +1,15 @@ +class Note extends Actor + native + placeable + hidecategories(Navigation); + +defaultproperties +{ + Components[0]=none + Components[1]=none + bStatic=true + bHidden=true + bNoDelete=true + bRouteBeginPlayEvenIfStatic=false + bMovable=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxCylindricalForceField.uc b/exported/Engine/Classes/NxCylindricalForceField.uc new file mode 100755 index 00000000..b0caa803 --- /dev/null +++ b/exported/Engine/Classes/NxCylindricalForceField.uc @@ -0,0 +1,22 @@ +class NxCylindricalForceField extends NxForceField + abstract + native(ForceField) + notplaceable + hidecategories(Navigation); + +var() interp float RadialStrength; +var() interp float RotationalStrength; +var() interp float LiftStrength; +var() interp float ForceRadius; +var() interp float ForceTopRadius; +var() interp float LiftFalloffHeight; +var() interp float EscapeVelocity; +var() interp float ForceHeight; +var() interp float HeightOffset; +var() bool UseSpecialRadialForce; +var native const transient Pointer Kernel; + +defaultproperties +{ + ForceRadius=200.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxCylindricalForceFieldCapsule.uc b/exported/Engine/Classes/NxCylindricalForceFieldCapsule.uc new file mode 100755 index 00000000..1c27b399 --- /dev/null +++ b/exported/Engine/Classes/NxCylindricalForceFieldCapsule.uc @@ -0,0 +1,23 @@ +class NxCylindricalForceFieldCapsule extends NxCylindricalForceField + native(ForceField) + placeable + hidecategories(Navigation); + +var() export editinline DrawCapsuleComponent RenderComponent; + +// Export UNxCylindricalForceFieldCapsule::execDoInitRBPhys(FFrame&, void* const) +native function DoInitRBPhys(); + +defaultproperties +{ + // Reference: DrawCapsuleComponent'Engine.Default__NxCylindricalForceFieldCapsule.DrawCapsule0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawCapsule0' + begin object name="DrawCapsule0" class=Engine.DrawCapsuleComponent + ReplacementPrimitive=none + end object + RenderComponent=DrawCapsule0 + ForceHeight=200.0000000 + Components[0]=DrawCapsule0 + Components[1]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxForceField.uc b/exported/Engine/Classes/NxForceField.uc new file mode 100755 index 00000000..a13e3ef8 --- /dev/null +++ b/exported/Engine/Classes/NxForceField.uc @@ -0,0 +1,66 @@ +class NxForceField extends Actor + abstract + native(ForceField) + notplaceable + hidecategories(Navigation) + classgroup(Physics); + +var() int ExcludeChannel; +var() bool bForceActive; +var() const RBCollisionChannelContainer CollideWithChannels; +var() const PrimitiveComponent.ERBCollisionChannel RBChannel; +var native const transient Pointer ForceField; +var native const transient array ConvexMeshes; +var native const transient array ExclusionShapes; +var native const transient array ExclusionShapePoses; +var native const transient Pointer U2NRotation; +var native const int SceneIndex; + +replication +{ + // Pos:0x000 + if(bNetDirty) + bForceActive; +} + +// Export UNxForceField::execDoInitRBPhys(FFrame&, void* const) +native function DoInitRBPhys(); + +simulated function OnToggle(SeqAct_Toggle inAction) +{ + // End:0x46 + if(inAction.InputLinks[0].bHasImpulse) + { + bForceActive = true; + } + else + { + // End:0x8C + if(inAction.InputLinks[1].bHasImpulse) + { + bForceActive = false; + } + else + { + // End:0xDB + if(inAction.InputLinks[2].bHasImpulse) + { + bForceActive = !bForceActive; + } + } + } + SetForcedInitialReplicatedProperty(BoolProperty'Engine.RB_RadialForceActor.bForceActive', bForceActive == default.bForceActive); + //return; +} + +defaultproperties +{ + bForceActive=true + CollideWithChannels=(Default=true,Nothing=false,Pawn=true,Vehicle=true,Water=true,GameplayPhysics=true,EffectPhysics=true,Untitled1=true,Untitled2=true,Untitled3=true,Untitled4=false,Cloth=true,FluidDrain=true,SoftBody=true,FracturedMeshPart=false,BlockingVolume=false,DeadPawn=false,Clothing=false,ClothingCollision=false) + RBChannel=ERBCollisionChannel.RBCC_Nothing + RemoteRole=ENetRole.ROLE_SimulatedProxy + bNoDelete=true + bAlwaysRelevant=true + bOnlyDirtyReplication=true + NetUpdateFrequency=0.1000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxForceFieldComponent.uc b/exported/Engine/Classes/NxForceFieldComponent.uc new file mode 100755 index 00000000..23056e67 --- /dev/null +++ b/exported/Engine/Classes/NxForceFieldComponent.uc @@ -0,0 +1,35 @@ +class NxForceFieldComponent extends PrimitiveComponent + abstract + native(ForceField) + editinlinenew + collapsecategories + hidecategories(Collision,Lighting,Physics,Rendering,Object); + +var() export editinline ForceFieldShape Shape; +var export editinline ActorComponent DrawComponent; +var() int ExcludeChannel; +var() bool bForceActive; +var() bool bDestroyWhenInactive; +var() const RBCollisionChannelContainer CollideWithChannels; +var() float Duration; +var native const transient Pointer ForceField; +var native const transient array ConvexMeshes; +var native const transient array ExclusionShapes; +var native const transient array ExclusionShapePoses; +var native const int SceneIndex; +var float ElapsedTime; +var export editinline PrimitiveComponent RenderComponent; +var native Pointer RBPhysScene; + +// Export UNxForceFieldComponent::execDoInitRBPhys(FFrame&, void* const) +native function DoInitRBPhys(); + +defaultproperties +{ + bForceActive=true + bDestroyWhenInactive=true + CollideWithChannels=(Default=true,Nothing=false,Pawn=true,Vehicle=true,Water=true,GameplayPhysics=true,EffectPhysics=true,Untitled1=true,Untitled2=true,Untitled3=true,Untitled4=false,Cloth=true,FluidDrain=true,SoftBody=false,FracturedMeshPart=false,BlockingVolume=false,DeadPawn=false,Clothing=false,ClothingCollision=false) + ReplacementPrimitive=none + RBChannel=ERBCollisionChannel.RBCC_Nothing + TickGroup=ETickingGroup.TG_PreAsyncWork +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxForceFieldCylindricalComponent.uc b/exported/Engine/Classes/NxForceFieldCylindricalComponent.uc new file mode 100755 index 00000000..20890a8a --- /dev/null +++ b/exported/Engine/Classes/NxForceFieldCylindricalComponent.uc @@ -0,0 +1,38 @@ +class NxForceFieldCylindricalComponent extends NxForceFieldComponent + native(ForceField) + editinlinenew + collapsecategories + hidecategories(Collision,Lighting,Physics,Rendering,Object); + +var() interp float RadialStrength; +var() interp float RotationalStrength; +var() interp float LiftStrength; +var() interp float ForceRadius; +var() interp float ForceTopRadius; +var() interp float LiftFalloffHeight; +var() interp float EscapeVelocity; +var() interp float ForceHeight; +var() interp float HeightOffset; +var() bool UseSpecialRadialForce; +var native const transient Pointer Kernel; + +defaultproperties +{ + LiftStrength=10.0000000 + ForceRadius=200.0000000 + ForceTopRadius=200.0000000 + ForceHeight=200.0000000 + // Reference: ForceFieldShapeCapsule'Engine.Default__NxForceFieldCylindricalComponent.Shape0' + begin object name="Shape0" class=Engine.ForceFieldShapeCapsule + // Reference: DrawCapsuleComponent'Engine.Default__NxForceFieldCylindricalComponent.Shape0.DrawCapsule0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawCapsule0' + // Archetype: DrawCapsuleComponent'Engine.Default__ForceFieldShapeCapsule.DrawCapsule0' + begin object name="DrawCapsule0" + ReplacementPrimitive=none + end object + Shape=DrawCapsule0 + end object + Shape=Shape0 + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxForceFieldGeneric.uc b/exported/Engine/Classes/NxForceFieldGeneric.uc new file mode 100755 index 00000000..65765688 --- /dev/null +++ b/exported/Engine/Classes/NxForceFieldGeneric.uc @@ -0,0 +1,46 @@ +class NxForceFieldGeneric extends NxForceField + native(ForceField) + placeable + hidecategories(Navigation); + +enum FFG_ForceFieldCoordinates +{ + FFG_CARTESIAN, // 0 + FFG_SPHERICAL, // 1 + FFG_CYLINDRICAL, // 2 + FFG_TOROIDAL, // 3 + FFG_MAX // 4 +}; + +var() editinline ForceFieldShape Shape; +var export editinline ActorComponent DrawComponent; +var() float RoughExtentX; +var() float RoughExtentY; +var() float RoughExtentZ; +var() NxForceFieldGeneric.FFG_ForceFieldCoordinates Coordinates; +var() Vector Constant; +var() Vector PositionMultiplierX; +var() Vector PositionMultiplierY; +var() Vector PositionMultiplierZ; +var() Vector PositionTarget; +var() Vector VelocityMultiplierX; +var() Vector VelocityMultiplierY; +var() Vector VelocityMultiplierZ; +var() Vector VelocityTarget; +var() Vector Noise; +var() Vector FalloffLinear; +var() Vector FalloffQuadratic; +var() float TorusRadius; +var native const transient Pointer LinearKernel; + +// Export UNxForceFieldGeneric::execDoInitRBPhys(FFrame&, void* const) +native function DoInitRBPhys(); + +defaultproperties +{ + RoughExtentX=200.0000000 + RoughExtentY=200.0000000 + RoughExtentZ=200.0000000 + TorusRadius=1.0000000 + Components[0]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxForceFieldGenericComponent.uc b/exported/Engine/Classes/NxForceFieldGenericComponent.uc new file mode 100755 index 00000000..0d03684b --- /dev/null +++ b/exported/Engine/Classes/NxForceFieldGenericComponent.uc @@ -0,0 +1,45 @@ +class NxForceFieldGenericComponent extends NxForceFieldComponent + native(ForceField) + editinlinenew + collapsecategories + hidecategories(Collision,Lighting,Physics,Rendering,Object); + +var() float RoughExtentX; +var() float RoughExtentY; +var() float RoughExtentZ; +var() NxForceFieldGeneric.FFG_ForceFieldCoordinates Coordinates; +var() Vector Constant; +var() Vector PositionMultiplierX; +var() Vector PositionMultiplierY; +var() Vector PositionMultiplierZ; +var() Vector PositionTarget; +var() Vector VelocityMultiplierX; +var() Vector VelocityMultiplierY; +var() Vector VelocityMultiplierZ; +var() Vector VelocityTarget; +var() Vector Noise; +var() Vector FalloffLinear; +var() Vector FalloffQuadratic; +var() float TorusRadius; +var native const transient Pointer Kernel; + +defaultproperties +{ + RoughExtentX=200.0000000 + RoughExtentY=200.0000000 + RoughExtentZ=200.0000000 + TorusRadius=1.0000000 + // Reference: ForceFieldShapeBox'Engine.Default__NxForceFieldGenericComponent.Shape0' + begin object name="Shape0" class=Engine.ForceFieldShapeBox + // Reference: DrawBoxComponent'Engine.Default__NxForceFieldGenericComponent.Shape0.DrawBox0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawBox0' + // Archetype: DrawBoxComponent'Engine.Default__ForceFieldShapeBox.DrawBox0' + begin object name="DrawBox0" + ReplacementPrimitive=none + end object + Shape=DrawBox0 + end object + Shape=Shape0 + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxForceFieldRadial.uc b/exported/Engine/Classes/NxForceFieldRadial.uc new file mode 100755 index 00000000..38bac0dd --- /dev/null +++ b/exported/Engine/Classes/NxForceFieldRadial.uc @@ -0,0 +1,21 @@ +class NxForceFieldRadial extends NxForceField + native(ForceField) + placeable + hidecategories(Navigation); + +var() editinline ForceFieldShape Shape; +var export editinline ActorComponent DrawComponent; +var() interp float ForceStrength; +var() interp float ForceRadius; +var() interp float SelfRotationStrength; +var() export PrimitiveComponent.ERadialImpulseFalloff ForceFalloff; +var native const transient Pointer Kernel; + +// Export UNxForceFieldRadial::execDoInitRBPhys(FFrame&, void* const) +native function DoInitRBPhys(); + +defaultproperties +{ + ForceRadius=200.0000000 + Components[0]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxForceFieldRadialComponent.uc b/exported/Engine/Classes/NxForceFieldRadialComponent.uc new file mode 100755 index 00000000..a159c17c --- /dev/null +++ b/exported/Engine/Classes/NxForceFieldRadialComponent.uc @@ -0,0 +1,31 @@ +class NxForceFieldRadialComponent extends NxForceFieldComponent + native(ForceField) + editinlinenew + collapsecategories + hidecategories(Collision,Lighting,Physics,Rendering,Object); + +var() interp float ForceStrength; +var() interp float ForceRadius; +var() interp float SelfRotationStrength; +var() export PrimitiveComponent.ERadialImpulseFalloff ForceFalloff; +var native const transient Pointer Kernel; + +defaultproperties +{ + ForceStrength=200.0000000 + ForceRadius=200.0000000 + SelfRotationStrength=200.0000000 + // Reference: ForceFieldShapeSphere'Engine.Default__NxForceFieldRadialComponent.Shape0' + begin object name="Shape0" class=Engine.ForceFieldShapeSphere + // Reference: DrawSphereComponent'Engine.Default__NxForceFieldRadialComponent.Shape0.DrawSphere0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawSphere0' + // Archetype: DrawSphereComponent'Engine.Default__ForceFieldShapeSphere.DrawSphere0' + begin object name="DrawSphere0" + ReplacementPrimitive=none + end object + Shape=DrawSphere0 + end object + Shape=Shape0 + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxForceFieldSpawnable.uc b/exported/Engine/Classes/NxForceFieldSpawnable.uc new file mode 100755 index 00000000..e768dbca --- /dev/null +++ b/exported/Engine/Classes/NxForceFieldSpawnable.uc @@ -0,0 +1,40 @@ +class NxForceFieldSpawnable extends Actor + native(ForceField) + notplaceable + hidecategories(Navigation); + +var() export editinline NxForceFieldComponent ForceFieldComponent; + +simulated function OnToggle(SeqAct_Toggle inAction) +{ + // End:0x5B + if(inAction.InputLinks[0].bHasImpulse) + { + ForceFieldComponent.bForceActive = true; + } + else + { + // End:0xB6 + if(inAction.InputLinks[1].bHasImpulse) + { + ForceFieldComponent.bForceActive = false; + } + else + { + // End:0x12F + if(inAction.InputLinks[2].bHasImpulse) + { + ForceFieldComponent.bForceActive = !ForceFieldComponent.bForceActive; + } + } + } + //return; +} + +defaultproperties +{ + RemoteRole=ENetRole.ROLE_SimulatedProxy + bAlwaysRelevant=true + bOnlyDirtyReplication=true + NetUpdateFrequency=0.1000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxForceFieldTornado.uc b/exported/Engine/Classes/NxForceFieldTornado.uc new file mode 100755 index 00000000..40f8ce9d --- /dev/null +++ b/exported/Engine/Classes/NxForceFieldTornado.uc @@ -0,0 +1,30 @@ +class NxForceFieldTornado extends NxForceField + native(ForceField) + placeable + hidecategories(Navigation); + +var() editinline ForceFieldShape Shape; +var export editinline ActorComponent DrawComponent; +var() interp float RadialStrength; +var() interp float RotationalStrength; +var() interp float LiftStrength; +var() interp float ForceRadius; +var() interp float ForceTopRadius; +var() interp float LiftFalloffHeight; +var() interp float EscapeVelocity; +var() interp float ForceHeight; +var() interp float HeightOffset; +var() bool BSpecialRadialForceMode; +var() interp float SelfRotationStrength; +var native const transient Pointer Kernel; + +// Export UNxForceFieldTornado::execDoInitRBPhys(FFrame&, void* const) +native function DoInitRBPhys(); + +defaultproperties +{ + ForceRadius=200.0000000 + ForceTopRadius=200.0000000 + ForceHeight=200.0000000 + Components[0]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxForceFieldTornadoComponent.uc b/exported/Engine/Classes/NxForceFieldTornadoComponent.uc new file mode 100755 index 00000000..0b90f171 --- /dev/null +++ b/exported/Engine/Classes/NxForceFieldTornadoComponent.uc @@ -0,0 +1,39 @@ +class NxForceFieldTornadoComponent extends NxForceFieldComponent + native(ForceField) + editinlinenew + collapsecategories + hidecategories(Collision,Lighting,Physics,Rendering,Object); + +var() interp float RadialStrength; +var() interp float RotationalStrength; +var() interp float LiftStrength; +var() interp float ForceRadius; +var() interp float ForceTopRadius; +var() interp float LiftFalloffHeight; +var() interp float EscapeVelocity; +var() interp float ForceHeight; +var() interp float HeightOffset; +var() bool BSpecialRadialForceMode; +var() interp float SelfRotationStrength; +var native const transient Pointer Kernel; + +defaultproperties +{ + LiftStrength=10.0000000 + ForceRadius=200.0000000 + ForceTopRadius=200.0000000 + ForceHeight=200.0000000 + // Reference: ForceFieldShapeCapsule'Engine.Default__NxForceFieldTornadoComponent.Shape0' + begin object name="Shape0" class=Engine.ForceFieldShapeCapsule + // Reference: DrawCapsuleComponent'Engine.Default__NxForceFieldTornadoComponent.Shape0.DrawCapsule0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawCapsule0' + // Archetype: DrawCapsuleComponent'Engine.Default__ForceFieldShapeCapsule.DrawCapsule0' + begin object name="DrawCapsule0" + ReplacementPrimitive=none + end object + Shape=DrawCapsule0 + end object + Shape=Shape0 + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxGenericForceField.uc b/exported/Engine/Classes/NxGenericForceField.uc new file mode 100755 index 00000000..e6af8706 --- /dev/null +++ b/exported/Engine/Classes/NxGenericForceField.uc @@ -0,0 +1,26 @@ +class NxGenericForceField extends NxForceField + abstract + native(ForceField) + notplaceable + hidecategories(Navigation); + +var() NxForceFieldGeneric.FFG_ForceFieldCoordinates Coordinates; +var() Vector Constant; +var() Vector PositionMultiplierX; +var() Vector PositionMultiplierY; +var() Vector PositionMultiplierZ; +var() Vector PositionTarget; +var() Vector VelocityMultiplierX; +var() Vector VelocityMultiplierY; +var() Vector VelocityMultiplierZ; +var() Vector VelocityTarget; +var() Vector Noise; +var() Vector FalloffLinear; +var() Vector FalloffQuadratic; +var() float TorusRadius; +var native const transient Pointer LinearKernel; + +defaultproperties +{ + TorusRadius=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxGenericForceFieldBox.uc b/exported/Engine/Classes/NxGenericForceFieldBox.uc new file mode 100755 index 00000000..5c592470 --- /dev/null +++ b/exported/Engine/Classes/NxGenericForceFieldBox.uc @@ -0,0 +1,25 @@ +class NxGenericForceFieldBox extends NxGenericForceField + native(ForceField) + placeable + hidecategories(Navigation); + +var export editinline DrawBoxComponent RenderComponent; +var() interp Vector BoxExtent; + +// Export UNxGenericForceFieldBox::execDoInitRBPhys(FFrame&, void* const) +native function DoInitRBPhys(); + +defaultproperties +{ + // Reference: DrawBoxComponent'Engine.Default__NxGenericForceFieldBox.DrawBox0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawBox0' + begin object name="DrawBox0" class=Engine.DrawBoxComponent + BoxColor=(R=64,G=70,B=255,A=255) + ReplacementPrimitive=none + end object + RenderComponent=DrawBox0 + BoxExtent=(X=200.0000000,Y=200.0000000,Z=200.0000000) + Components[0]=DrawBox0 + Components[1]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxGenericForceFieldBrush.uc b/exported/Engine/Classes/NxGenericForceFieldBrush.uc new file mode 100755 index 00000000..756eae87 --- /dev/null +++ b/exported/Engine/Classes/NxGenericForceFieldBrush.uc @@ -0,0 +1,77 @@ +class NxGenericForceFieldBrush extends Volume + native(ForceField) + placeable + hidecategories(Navigation,Object,Movement,Display); + +enum FFB_ForceFieldCoordinates +{ + FFB_CARTESIAN, // 0 + FFB_SPHERICAL, // 1 + FFB_CYLINDRICAL, // 2 + FFB_TOROIDAL, // 3 + FFB_MAX // 4 +}; + +var() int ExcludeChannel; +var() RBCollisionChannelContainer CollideWithChannels; +var() const PrimitiveComponent.ERBCollisionChannel RBChannel; +var() NxGenericForceFieldBrush.FFB_ForceFieldCoordinates Coordinates; +var() Vector Constant; +var() Vector PositionMultiplierX; +var() Vector PositionMultiplierY; +var() Vector PositionMultiplierZ; +var() Vector PositionTarget; +var() Vector VelocityMultiplierX; +var() Vector VelocityMultiplierY; +var() Vector VelocityMultiplierZ; +var() Vector VelocityTarget; +var() Vector Noise; +var() Vector FalloffLinear; +var() Vector FalloffQuadratic; +var() float TorusRadius; +var native const transient Pointer ForceField; +var native const transient array ConvexMeshes; +var native const transient array ExclusionShapes; +var native const transient array ExclusionShapePoses; +var native const transient Pointer LinearKernel; + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x43 + if(BrushComponent != none) + { + bProjTarget = BrushComponent.BlockZeroExtent; + } + //return; +} + +simulated function bool StopsProjectile(Projectile P) +{ + return false; + //return ReturnValue; +} + +defaultproperties +{ + ExcludeChannel=1 + CollideWithChannels=(Default=true,Nothing=false,Pawn=true,Vehicle=true,Water=true,GameplayPhysics=true,EffectPhysics=true,Untitled1=true,Untitled2=true,Untitled3=true,Untitled4=false,Cloth=true,FluidDrain=true,SoftBody=true,FracturedMeshPart=false,BlockingVolume=false,DeadPawn=false,Clothing=false,ClothingCollision=false) + RBChannel=ERBCollisionChannel.RBCC_Untitled1 + TorusRadius=1.0000000 + BrushColor=(R=100,G=255,B=100,A=255) + bColored=true + // Reference: BrushComponent'Engine.Default__NxGenericForceFieldBrush.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + bDisableAllRigidBody=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bStatic=false + bProjTarget=true + CollisionComponent=BrushComponent0 + SupportedEvents=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxGenericForceFieldCapsule.uc b/exported/Engine/Classes/NxGenericForceFieldCapsule.uc new file mode 100755 index 00000000..7458462d --- /dev/null +++ b/exported/Engine/Classes/NxGenericForceFieldCapsule.uc @@ -0,0 +1,24 @@ +class NxGenericForceFieldCapsule extends NxGenericForceField + native(ForceField) + placeable + hidecategories(Navigation); + +var export editinline DrawCapsuleComponent RenderComponent; +var() float CapsuleHeight; +var() float CapsuleRadius; + +defaultproperties +{ + // Reference: DrawCapsuleComponent'Engine.Default__NxGenericForceFieldCapsule.DrawCapsule0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawCapsule0' + begin object name="DrawCapsule0" class=Engine.DrawCapsuleComponent + CapsuleColor=(R=64,G=70,B=255,A=255) + ReplacementPrimitive=none + end object + RenderComponent=DrawCapsule0 + CapsuleHeight=200.0000000 + CapsuleRadius=200.0000000 + Components[0]=DrawCapsule0 + Components[1]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxRadialCustomForceField.uc b/exported/Engine/Classes/NxRadialCustomForceField.uc new file mode 100755 index 00000000..328c6377 --- /dev/null +++ b/exported/Engine/Classes/NxRadialCustomForceField.uc @@ -0,0 +1,21 @@ +class NxRadialCustomForceField extends NxRadialForceField + native(ForceField) + placeable + hidecategories(Navigation); + +var() interp float SelfRotationStrength; +var native const transient Pointer Kernel; + +defaultproperties +{ + // Reference: DrawSphereComponent'Engine.Default__NxRadialCustomForceField.DrawSphere0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawSphere0' + // Archetype: DrawSphereComponent'Engine.Default__NxRadialForceField.DrawSphere0' + begin object name="DrawSphere0" + ReplacementPrimitive=none + end object + RenderComponent=DrawSphere0 + Components[0]=DrawSphere0 + Components[1]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxRadialForceField.uc b/exported/Engine/Classes/NxRadialForceField.uc new file mode 100755 index 00000000..90a2576b --- /dev/null +++ b/exported/Engine/Classes/NxRadialForceField.uc @@ -0,0 +1,27 @@ +class NxRadialForceField extends NxForceField + native(ForceField) + placeable + hidecategories(Navigation); + +var export editinline DrawSphereComponent RenderComponent; +var() interp float ForceStrength; +var() interp float ForceRadius; +var() export PrimitiveComponent.ERadialImpulseFalloff ForceFalloff; +var native const transient Pointer LinearKernel; + +defaultproperties +{ + // Reference: DrawSphereComponent'Engine.Default__NxRadialForceField.DrawSphere0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawSphere0' + begin object name="DrawSphere0" class=Engine.DrawSphereComponent + SphereColor=(R=64,G=70,B=255,A=255) + SphereRadius=200.0000000 + ReplacementPrimitive=none + end object + RenderComponent=DrawSphere0 + ForceStrength=10.0000000 + ForceRadius=200.0000000 + Components[0]=DrawSphere0 + Components[1]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxTornadoAngularForceField.uc b/exported/Engine/Classes/NxTornadoAngularForceField.uc new file mode 100755 index 00000000..2b745d89 --- /dev/null +++ b/exported/Engine/Classes/NxTornadoAngularForceField.uc @@ -0,0 +1,23 @@ +class NxTornadoAngularForceField extends NxForceField + abstract + native(ForceField) + notplaceable + hidecategories(Navigation); + +var() interp float RadialStrength; +var() interp float RotationalStrength; +var() interp float LiftStrength; +var() interp float ForceRadius; +var() interp float ForceTopRadius; +var() interp float LiftFalloffHeight; +var() interp float EscapeVelocity; +var() interp float ForceHeight; +var() interp float HeightOffset; +var() bool BSpecialRadialForceMode; +var() interp float SelfRotationStrength; +var native const transient Pointer Kernel; + +defaultproperties +{ + ForceRadius=200.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxTornadoAngularForceFieldCapsule.uc b/exported/Engine/Classes/NxTornadoAngularForceFieldCapsule.uc new file mode 100755 index 00000000..460a909b --- /dev/null +++ b/exported/Engine/Classes/NxTornadoAngularForceFieldCapsule.uc @@ -0,0 +1,20 @@ +class NxTornadoAngularForceFieldCapsule extends NxTornadoAngularForceField + native(ForceField) + placeable + hidecategories(Navigation); + +var() export editinline DrawCapsuleComponent RenderComponent; + +defaultproperties +{ + // Reference: DrawCapsuleComponent'Engine.Default__NxTornadoAngularForceFieldCapsule.DrawCapsule0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawCapsule0' + begin object name="DrawCapsule0" class=Engine.DrawCapsuleComponent + ReplacementPrimitive=none + end object + RenderComponent=DrawCapsule0 + ForceHeight=200.0000000 + Components[0]=DrawCapsule0 + Components[1]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxTornadoForceField.uc b/exported/Engine/Classes/NxTornadoForceField.uc new file mode 100755 index 00000000..6132a399 --- /dev/null +++ b/exported/Engine/Classes/NxTornadoForceField.uc @@ -0,0 +1,22 @@ +class NxTornadoForceField extends NxForceField + abstract + native(ForceField) + notplaceable + hidecategories(Navigation); + +var() interp float RadialStrength; +var() interp float RotationalStrength; +var() interp float LiftStrength; +var() interp float ForceRadius; +var() interp float ForceTopRadius; +var() interp float LiftFalloffHeight; +var() interp float EscapeVelocity; +var() interp float ForceHeight; +var() interp float HeightOffset; +var() bool BSpecialRadialForceMode; +var native const transient Pointer Kernel; + +defaultproperties +{ + ForceRadius=200.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/NxTornadoForceFieldCapsule.uc b/exported/Engine/Classes/NxTornadoForceFieldCapsule.uc new file mode 100755 index 00000000..dbd7a14e --- /dev/null +++ b/exported/Engine/Classes/NxTornadoForceFieldCapsule.uc @@ -0,0 +1,20 @@ +class NxTornadoForceFieldCapsule extends NxTornadoForceField + native(ForceField) + placeable + hidecategories(Navigation); + +var() export editinline DrawCapsuleComponent RenderComponent; + +defaultproperties +{ + // Reference: DrawCapsuleComponent'Engine.Default__NxTornadoForceFieldCapsule.DrawCapsule0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawCapsule0' + begin object name="DrawCapsule0" class=Engine.DrawCapsuleComponent + ReplacementPrimitive=none + end object + RenderComponent=DrawCapsule0 + ForceHeight=200.0000000 + Components[0]=DrawCapsule0 + Components[1]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/ObjectReferencer.uc b/exported/Engine/Classes/ObjectReferencer.uc new file mode 100755 index 00000000..e6642b45 --- /dev/null +++ b/exported/Engine/Classes/ObjectReferencer.uc @@ -0,0 +1,4 @@ +class ObjectReferencer extends Object + native; + +var() array ReferencedObjects; diff --git a/exported/Engine/Classes/OnlineAccountInterface.uc b/exported/Engine/Classes/OnlineAccountInterface.uc new file mode 100755 index 00000000..bc3eb42a --- /dev/null +++ b/exported/Engine/Classes/OnlineAccountInterface.uc @@ -0,0 +1,42 @@ +interface OnlineAccountInterface extends Interface + abstract; + +function bool CreateOnlineAccount(string UserName, string Password, string EmailAddress, optional string ProductKey) +{ + //return ReturnValue; +} + +delegate OnCreateOnlineAccountCompleted(OnlineSubsystem.EOnlineAccountCreateStatus ErrorStatus) +{ + //return; +} + +function AddCreateOnlineAccountCompletedDelegate(delegate AccountCreateDelegate) +{ + //return; +} + +function ClearCreateOnlineAccountCompletedDelegate(delegate AccountCreateDelegate) +{ + //return; +} + +function bool CreateLocalAccount(string UserName, optional string Password) +{ + //return ReturnValue; +} + +function bool RenameLocalAccount(string NewUserName, string OldUserName, optional string Password) +{ + //return ReturnValue; +} + +function bool DeleteLocalAccount(string UserName, optional string Password) +{ + //return ReturnValue; +} + +function bool GetLocalAccountNames(out array Accounts) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/OnlineAuthInterface.uc b/exported/Engine/Classes/OnlineAuthInterface.uc new file mode 100755 index 00000000..34401026 --- /dev/null +++ b/exported/Engine/Classes/OnlineAuthInterface.uc @@ -0,0 +1,339 @@ +interface OnlineAuthInterface extends Interface + abstract + native; + +enum EAuthStatus +{ + AUS_NotStarted, // 0 + AUS_Pending, // 1 + AUS_Authenticated, // 2 + AUS_Failed, // 3 + AUS_MAX // 4 +}; + +struct native BaseAuthSession +{ + var const IpAddr EndPointIP; + var const int EndPointPort; + var const UniqueNetId EndPointUID; + + structdefaultproperties + { + EndPointIP=(AddrA=0,AddrB=0,AddrC=0,AddrD=0,Port=0) + EndPointPort=0 + EndPointUID=(Uid=()) + } +}; + +struct native LocalAuthSession extends BaseAuthSession +{ + var const int SessionUID; +}; + +struct native AuthSession extends BaseAuthSession +{ + var const OnlineAuthInterface.EAuthStatus AuthStatus; + var const int AuthTicketUID; +}; + +function bool IsReady() +{ + //return ReturnValue; +} + +delegate OnAuthReady() +{ + //return; +} + +function AddAuthReadyDelegate(delegate AuthReadyDelegate) +{ + //return; +} + +function ClearAuthReadyDelegate(delegate AuthReadyDelegate) +{ + //return; +} + +delegate OnClientAuthRequest(UniqueNetId ServerUID, IpAddr ServerIP, int ServerPort, bool bSecure) +{ + //return; +} + +function AddClientAuthRequestDelegate(delegate ClientAuthRequestDelegate) +{ + //return; +} + +function ClearClientAuthRequestDelegate(delegate ClientAuthRequestDelegate) +{ + //return; +} + +delegate OnServerAuthRequest(Player ClientConnection, UniqueNetId ClientUID, IpAddr ClientIP, int ClientPort) +{ + //return; +} + +function AddServerAuthRequestDelegate(delegate ServerAuthRequestDelegate) +{ + //return; +} + +function ClearServerAuthRequestDelegate(delegate ServerAuthRequestDelegate) +{ + //return; +} + +delegate OnClientAuthResponse(UniqueNetId ClientUID, IpAddr ClientIP, int AuthTicketUID) +{ + //return; +} + +function AddClientAuthResponseDelegate(delegate ClientAuthResponseDelegate) +{ + //return; +} + +function ClearClientAuthResponseDelegate(delegate ClientAuthResponseDelegate) +{ + //return; +} + +delegate OnServerAuthResponse(UniqueNetId ServerUID, IpAddr ServerIP, int AuthTicketUID) +{ + //return; +} + +function AddServerAuthResponseDelegate(delegate ServerAuthResponseDelegate) +{ + //return; +} + +function ClearServerAuthResponseDelegate(delegate ServerAuthResponseDelegate) +{ + //return; +} + +delegate OnClientAuthComplete(bool bSuccess, UniqueNetId ClientUID, Player ClientConnection, string ExtraInfo) +{ + //return; +} + +function AddClientAuthCompleteDelegate(delegate ClientAuthCompleteDelegate) +{ + //return; +} + +function ClearClientAuthCompleteDelegate(delegate ClientAuthCompleteDelegate) +{ + //return; +} + +delegate OnServerAuthComplete(bool bSuccess, UniqueNetId ServerUID, Player ServerConnection, string ExtraInfo) +{ + //return; +} + +function AddServerAuthCompleteDelegate(delegate ServerAuthCompleteDelegate) +{ + //return; +} + +function ClearServerAuthCompleteDelegate(delegate ServerAuthCompleteDelegate) +{ + //return; +} + +delegate OnClientAuthEndSessionRequest(Player ServerConnection) +{ + //return; +} + +function AddClientAuthEndSessionRequestDelegate(delegate ClientAuthEndSessionRequestDelegate) +{ + //return; +} + +function ClearClientAuthEndSessionRequestDelegate(delegate ClientAuthEndSessionRequestDelegate) +{ + //return; +} + +delegate OnServerAuthRetryRequest(Player ClientConnection) +{ + //return; +} + +function AddServerAuthRetryRequestDelegate(delegate ServerAuthRetryRequestDelegate) +{ + //return; +} + +function ClearServerAuthRetryRequestDelegate(delegate ServerAuthRetryRequestDelegate) +{ + //return; +} + +delegate OnClientConnectionClose(Player ClientConnection) +{ + //return; +} + +function AddClientConnectionCloseDelegate(delegate ClientConnectionCloseDelegate) +{ + //return; +} + +function ClearClientConnectionCloseDelegate(delegate ClientConnectionCloseDelegate) +{ + //return; +} + +delegate OnServerConnectionClose(Player ServerConnection) +{ + //return; +} + +function AddServerConnectionCloseDelegate(delegate ServerConnectionCloseDelegate) +{ + //return; +} + +function ClearServerConnectionCloseDelegate(delegate ServerConnectionCloseDelegate) +{ + //return; +} + +function bool SendClientAuthRequest(Player ClientConnection, UniqueNetId ClientUID) +{ + //return ReturnValue; +} + +function bool SendServerAuthRequest(UniqueNetId ServerUID) +{ + //return ReturnValue; +} + +function bool SendClientAuthResponse(int AuthTicketUID) +{ + //return ReturnValue; +} + +function bool SendServerAuthResponse(Player ClientConnection, int AuthTicketUID) +{ + //return ReturnValue; +} + +function bool SendClientAuthEndSessionRequest(Player ClientConnection) +{ + //return ReturnValue; +} + +function bool SendServerAuthRetryRequest() +{ + //return ReturnValue; +} + +function bool CreateClientAuthSession(UniqueNetId ServerUID, IpAddr ServerIP, int ServerPort, bool bSecure, out int OutAuthTicketUID) +{ + //return ReturnValue; +} + +function bool VerifyClientAuthSession(UniqueNetId ClientUID, IpAddr ClientIP, int ClientPort, int AuthTicketUID) +{ + //return ReturnValue; +} + +function EndLocalClientAuthSession(UniqueNetId ServerUID, IpAddr ServerIP, int ServerPort) +{ + //return; +} + +function EndRemoteClientAuthSession(UniqueNetId ClientUID, IpAddr ClientIP) +{ + //return; +} + +function EndAllLocalClientAuthSessions() +{ + //return; +} + +function EndAllRemoteClientAuthSessions() +{ + //return; +} + +function bool CreateServerAuthSession(UniqueNetId ClientUID, IpAddr ClientIP, int ClientPort, out int OutAuthTicketUID) +{ + //return ReturnValue; +} + +function bool VerifyServerAuthSession(UniqueNetId ServerUID, IpAddr ServerIP, int AuthTicketUID) +{ + //return ReturnValue; +} + +function EndLocalServerAuthSession(UniqueNetId ClientUID, IpAddr ClientIP) +{ + //return; +} + +function EndRemoteServerAuthSession(UniqueNetId ServerUID, IpAddr ServerIP) +{ + //return; +} + +function EndAllLocalServerAuthSessions() +{ + //return; +} + +function EndAllRemoteServerAuthSessions() +{ + //return; +} + +// Export UOnlineAuthInterface::execAllClientAuthSessions(FFrame&, void* const) +native iterator function AllClientAuthSessions(out AuthSession OutSessionInfo); + +// Export UOnlineAuthInterface::execAllLocalClientAuthSessions(FFrame&, void* const) +native iterator function AllLocalClientAuthSessions(out LocalAuthSession OutSessionInfo); + +// Export UOnlineAuthInterface::execAllServerAuthSessions(FFrame&, void* const) +native iterator function AllServerAuthSessions(out AuthSession OutSessionInfo); + +// Export UOnlineAuthInterface::execAllLocalServerAuthSessions(FFrame&, void* const) +native iterator function AllLocalServerAuthSessions(out LocalAuthSession OutSessionInfo); + +function bool FindClientAuthSession(Player ClientConnection, out AuthSession OutSessionInfo) +{ + //return ReturnValue; +} + +function bool FindLocalClientAuthSession(Player ServerConnection, out LocalAuthSession OutSessionInfo) +{ + //return ReturnValue; +} + +function bool FindServerAuthSession(Player ServerConnection, out AuthSession OutSessionInfo) +{ + //return ReturnValue; +} + +function bool FindLocalServerAuthSession(Player ClientConnection, out LocalAuthSession OutSessionInfo) +{ + //return ReturnValue; +} + +function bool GetServerUniqueId(out UniqueNetId OutServerUID) +{ + //return ReturnValue; +} + +function bool GetServerAddr(out IpAddr OutServerIP, out int OutServerPort) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/OnlineChatInterface.uc b/exported/Engine/Classes/OnlineChatInterface.uc new file mode 100755 index 00000000..6fb5e707 --- /dev/null +++ b/exported/Engine/Classes/OnlineChatInterface.uc @@ -0,0 +1,27 @@ +interface OnlineChatInterface extends Interface + abstract; + +delegate OnChatMessage(int Channel, string Sender, string Message) +{ + //return; +} + +function AddChatMessageDelegate(delegate ChatDelegate) +{ + //return; +} + +function ClearChatMessageDelegate(delegate ChatDelegate) +{ + //return; +} + +function SendChatMessage(int Channel, string Message) +{ + //return; +} + +function NotifyTeamChange(QWord PlayerUID, byte TeamID) +{ + //return; +} diff --git a/exported/Engine/Classes/OnlineCommunityContentInterface.uc b/exported/Engine/Classes/OnlineCommunityContentInterface.uc new file mode 100755 index 00000000..1234eefe --- /dev/null +++ b/exported/Engine/Classes/OnlineCommunityContentInterface.uc @@ -0,0 +1,127 @@ +interface OnlineCommunityContentInterface extends Interface + abstract; + +function bool Init() +{ + //return ReturnValue; +} + +function Exit() +{ + //return; +} + +function bool ReadContentList(byte PlayerNum, UniqueNetId NetId, optional string Path = "", optional int StartAt = 0, optional int NumToRead = 0) +{ + //return ReturnValue; +} + +delegate OnReadContentListComplete(bool bWasSuccessful, array ContentFiles) +{ + //return; +} + +function AddReadContentListCompleteDelegate(delegate ReadContentListCompleteDelegate) +{ + //return; +} + +function ClearReadContentListCompleteDelegate(delegate ReadContentListCompleteDelegate) +{ + //return; +} + +function bool GetContentList(byte PlayerNum, out array ContentFiles) +{ + //return ReturnValue; +} + +function bool ReadFriendsContentList(byte PlayerNum, const out array Friends, optional int StartAt = 0, optional int NumToRead = -1) +{ + //return ReturnValue; +} + +delegate OnReadFriendsContentListComplete(bool bWasSuccessful) +{ + //return; +} + +function AddReadFriendsContentListCompleteDelegate(delegate ReadFriendsContentListCompleteDelegate) +{ + //return; +} + +function ClearReadFriendsContentListCompleteDelegate(delegate ReadFriendsContentListCompleteDelegate) +{ + //return; +} + +function bool GetFriendsContentList(byte PlayerNum, const out OnlineFriend Friend, out array ContentFiles) +{ + //return ReturnValue; +} + +function bool UploadContent(byte PlayerNum, const out array Payload, const out CommunityContentMetadata MetaData) +{ + //return ReturnValue; +} + +delegate OnUploadContentComplete(bool bWasSuccessful, CommunityContentFile UploadedFile) +{ + //return; +} + +function AddUploadContentCompleteDelegate(delegate UploadContentCompleteDelegate) +{ + //return; +} + +function ClearUploadContentCompleteDelegate(delegate UploadContentCompleteDelegate) +{ + //return; +} + +function bool DownloadContent(byte PlayerNum, const out CommunityContentFile FileToDownload) +{ + //return ReturnValue; +} + +delegate OnDownloadContentComplete(bool bWasSuccessful, CommunityContentFile FileDownloaded, array Payload) +{ + //return; +} + +function AddDownloadContentCompleteDelegate(delegate DownloadContentCompleteDelegate) +{ + //return; +} + +function ClearDownloadContentCompleteDelegate(delegate DownloadContentCompleteDelegate) +{ + //return; +} + +function bool DeleteContent(byte PlayerNum, const out CommunityContentMetadata MetaData) +{ + //return ReturnValue; +} + +delegate OnDeleteContentComplete(bool bWasSuccessful) +{ + //return; +} + +function AddDeleteContentCompleteDelegate(delegate DeleteContentCompleteDelegate) +{ + //return; +} + +function ClearDeleteContentCompleteDelegate(delegate DeleteContentCompleteDelegate) +{ + //return; +} + +function RateContent(byte PlayerNum, const out CommunityContentFile FileToRate, int NewRating) +{ + //return; +} diff --git a/exported/Engine/Classes/OnlineContentInterface.uc b/exported/Engine/Classes/OnlineContentInterface.uc new file mode 100755 index 00000000..be0ec49b --- /dev/null +++ b/exported/Engine/Classes/OnlineContentInterface.uc @@ -0,0 +1,202 @@ +interface OnlineContentInterface extends Interface + abstract; + +delegate OnContentChange() +{ + //return; +} + +function AddContentChangeDelegate(delegate ContentDelegate, optional byte LocalUserNum = 255) +{ + //return; +} + +function ClearContentChangeDelegate(delegate ContentDelegate, optional byte LocalUserNum = 255) +{ + //return; +} + +delegate OnReadDownloadableContentComplete(bool bWasSuccessful) +{ + //return; +} + +function AddReadDownloadableContentComplete(byte LocalUserNum, delegate ReadDLCCompleteDelegate) +{ + //return; +} + +function ClearReadDownloadableContentComplete(byte LocalUserNum, delegate ReadDLCCompleteDelegate) +{ + //return; +} + +function bool ReadDownloadableContentList(byte LocalUserNum) +{ + //return ReturnValue; +} + +function ClearDownloadableContentList(byte LocalUserNum) +{ + //return; +} + +function OnlineSubsystem.EOnlineEnumerationReadState GetDownloadableContentList(byte LocalUserNum, out array ContentList) +{ + //return ReturnValue; +} + +function bool ReadCrossTitleDownloadableContentList(byte LocalUserNum, optional int TitleId = 0) +{ + //return ReturnValue; +} + +function ClearCrossTitleDownloadableContentList(byte LocalUserNum) +{ + //return; +} + +function OnlineSubsystem.EOnlineEnumerationReadState GetCrossTitleDownloadableContentList(byte LocalUserNum, out array ContentList) +{ + //return ReturnValue; +} + +delegate OnReadCrossTitleDownloadableContentComplete(bool bWasSuccessful) +{ + //return; +} + +function AddReadCrossTitleDownloadableContentCompleteDelegate(byte LocalUserNum, delegate ReadCrossTitleDLCCompleteDelegate) +{ + //return; +} + +function ClearReadCrossTitleDownloadableContentCompleteDelegate(byte LocalUserNum, delegate ReadCrossTitleDLCCompleteDelegate) +{ + //return; +} + +function bool ReadCrossTitleSaveGameData(byte LocalUserNum, int DeviceID, int TitleId, string FriendlyName, string Filename, string SaveFileName) +{ + //return ReturnValue; +} + +function bool GetCrossTitleSaveGameData(byte LocalUserNum, int DeviceID, int TitleId, string FriendlyName, string Filename, string SaveFileName, out byte bIsValid, out array SaveGameData) +{ + //return ReturnValue; +} + +delegate OnReadCrossTitleSaveGameDataComplete(bool bWasSuccessful, byte LocalUserNum, int DeviceID, int TitleId, string FriendlyName, string Filename, string SaveFileName) +{ + //return; +} + +function AddReadCrossTitleSaveGameDataComplete(byte LocalUserNum, delegate ReadSaveGameDataCompleteDelegate) +{ + //return; +} + +function ClearReadCrossTitleSaveGameDataComplete(byte LocalUserNum, delegate ReadSaveGameDataCompleteDelegate) +{ + //return; +} + +function bool ClearCrossTitleSaveGames(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool QueryAvailableDownloads(byte LocalUserNum, optional int CategoryMask = -1) +{ + //return ReturnValue; +} + +delegate OnQueryAvailableDownloadsComplete(bool bWasSuccessful) +{ + //return; +} + +function AddQueryAvailableDownloadsComplete(byte LocalUserNum, delegate QueryDownloadsDelegate) +{ + //return; +} + +function ClearQueryAvailableDownloadsComplete(byte LocalUserNum, delegate QueryDownloadsDelegate) +{ + //return; +} + +function GetAvailableDownloadCounts(byte LocalUserNum, out int NewDownloads, out int TotalDownloads) +{ + //return; +} + +function bool ReadSaveGameData(byte LocalUserNum, string SaveFileName) +{ + //return ReturnValue; +} + +function bool GetSaveGameData(byte LocalUserNum, string SaveFileName, out byte bIsValid, out array SaveGameData) +{ + //return ReturnValue; +} + +delegate OnReadSaveGameDataComplete(bool bWasSuccessful, byte LocalUserNum, string SaveFileName) +{ + //return; +} + +function AddReadSaveGameDataCompleteDelegate(byte LocalUserNum, delegate ReadSaveGameDataCompleteDelegate) +{ + //return; +} + +function ClearReadSaveGameDataCompleteDelegate(byte LocalUserNum, delegate ReadSaveGameDataCompleteDelegate) +{ + //return; +} + +function bool WriteSaveGameData(byte LocalUserNum, string SaveFileName, const out array SaveGameData, optional string Title, optional string SubTitle, optional string Description) +{ + //return ReturnValue; +} + +delegate OnWriteSaveGameDataComplete(bool bWasSuccessful, byte LocalUserNum, string SaveFileName) +{ + //return; +} + +function AddWriteSaveGameDataCompleteDelegate(byte LocalUserNum, delegate WriteSaveGameDataCompleteDelegate) +{ + //return; +} + +function ClearWriteSaveGameDataCompleteDelegate(byte LocalUserNum, delegate WriteSaveGameDataCompleteDelegate) +{ + //return; +} + +function bool DeleteSaveGameData(byte LocalUserNum, string SaveFileName) +{ + //return ReturnValue; +} + +delegate OnDeleteSaveGameDataComplete(bool bWasSuccessful, byte LocalUserNum, string SaveFileName) +{ + //return; +} + +function AddDeleteSaveGameDataCompleteDelegate(byte LocalUserNum, delegate DeleteSaveGameDataCompleteDelegate) +{ + //return; +} + +function ClearDeleteSaveGameDataCompleteDelegate(byte LocalUserNum, delegate DeleteSaveGameDataCompleteDelegate) +{ + //return; +} + +function bool ClearCachedSaveGames(byte LocalUserNum) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/OnlineEventTracker.uc b/exported/Engine/Classes/OnlineEventTracker.uc new file mode 100755 index 00000000..01d3a601 --- /dev/null +++ b/exported/Engine/Classes/OnlineEventTracker.uc @@ -0,0 +1,18 @@ +class OnlineEventTracker extends Object + abstract + native; + +event Init() +{ + //return; +} + +event ShutDown() +{ + //return; +} + +event bool RaiseEvent(const string EventName, const array EventParams) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/OnlineEventsInterface.uc b/exported/Engine/Classes/OnlineEventsInterface.uc new file mode 100755 index 00000000..7ce950af --- /dev/null +++ b/exported/Engine/Classes/OnlineEventsInterface.uc @@ -0,0 +1,17 @@ +interface OnlineEventsInterface extends Interface + abstract; + +function bool UploadPlayerData(UniqueNetId UniqueId, string PlayerNick, OnlineProfileSettings ProfileSettings, OnlinePlayerStorage PlayerStorage) +{ + //return ReturnValue; +} + +function bool UploadGameplayEventsData(UniqueNetId UniqueId, const out array Payload) +{ + //return ReturnValue; +} + +function bool UpdatePlaylistPopulation(int PlaylistId, int NumPlayers) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/OnlineGameDVRInterface.uc b/exported/Engine/Classes/OnlineGameDVRInterface.uc new file mode 100755 index 00000000..396ce976 --- /dev/null +++ b/exported/Engine/Classes/OnlineGameDVRInterface.uc @@ -0,0 +1,72 @@ +interface OnlineGameDVRInterface extends Interface + abstract; + +function EnableRecording() +{ + //return; +} + +function DisableRecording() +{ + //return; +} + +function bool ReadRecordedClips(byte LocalUserNum) +{ + //return ReturnValue; +} + +delegate OnReadRecordedClipsComplete(bool bWasSuccessful, byte LocalUserNum) +{ + //return; +} + +function ClearCachedRecordedClips(byte LocalUserNum) +{ + //return; +} + +function AddReadRecordedClipsCompleteDelegate(byte LocalUserNum, delegate ReadRecordedClipsCompleteDelegate) +{ + //return; +} + +function ClearReadRecordedClipsCompleteDelegate(byte LocalUserNum, delegate ReadRecordedClipsCompleteDelegate) +{ + //return; +} + +function bool BeginRecordingEvent(byte LocalUserNum, string EventName) +{ + //return ReturnValue; +} + +delegate OnRecordEventComplete(bool bWasSuccessful, byte LocalUserNum, string EventName) +{ + //return; +} + +function AddRecordEventCompleteDelegate(byte LocalUserNum, delegate RecordEventCompleteDelegate) +{ + //return; +} + +function ClearRecordEventCompleteDelegate(byte LocalUserNum, delegate RecordEventCompleteDelegate) +{ + //return; +} + +function bool EndRecordingEvent(byte LocalUserNum, string EventName) +{ + //return ReturnValue; +} + +function bool RecordPreviousTimespan(byte LocalUserNum, string EventName, float Duration) +{ + //return ReturnValue; +} + +function bool CancelRecordingEvent(byte LocalUserNum, string EventName) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/OnlineGameDownloadInterface.uc b/exported/Engine/Classes/OnlineGameDownloadInterface.uc new file mode 100755 index 00000000..b7b4a263 --- /dev/null +++ b/exported/Engine/Classes/OnlineGameDownloadInterface.uc @@ -0,0 +1,90 @@ +interface OnlineGameDownloadInterface extends Interface + abstract; + +enum EDownloadSpeed +{ + EDLS_Pause, // 0 + EDLS_Slow, // 1 + EDLS_Fast, // 2 + EDLS_MAX // 3 +}; + +function bool IsGameComplete() +{ + //return ReturnValue; +} + +function bool IsChunkComplete(const int InChunkIndex, const bool bRequireFastAccess) +{ + //return ReturnValue; +} + +function bool AreChunksComplete(const array ChunkIndices, const bool bRequireFastAccess) +{ + //return ReturnValue; +} + +function bool DoesGameNeedRefresh() +{ + //return ReturnValue; +} + +function RefreshGame() +{ + //return; +} + +function float GetChunkETA(const int InChunkIndex) +{ + //return ReturnValue; +} + +function float GetChunksETA(const array ChunkIndices) +{ + //return ReturnValue; +} + +function float GetChunkProgress(const int InChunkIndex) +{ + //return ReturnValue; +} + +function float GetChunksProgress(const array ChunkIndices) +{ + //return ReturnValue; +} + +function float GetOverallProgress() +{ + //return ReturnValue; +} + +function array GetTodoList() +{ + //return ReturnValue; +} + +function SetChunksHighPriority(const array ChunkIndices) +{ + //return; +} + +function SetDownloadSpeed(const OnlineGameDownloadInterface.EDownloadSpeed InSpeed) +{ + //return; +} + +delegate OnChunkComplete(const int ChunkIndex) +{ + //return; +} + +function AddOnChunkCompleteDelegate(delegate InDelegate) +{ + //return; +} + +function ClearOnChunkCompleteDelegate(delegate InDelegate) +{ + //return; +} diff --git a/exported/Engine/Classes/OnlineGameInterface.uc b/exported/Engine/Classes/OnlineGameInterface.uc new file mode 100755 index 00000000..bd41ed10 --- /dev/null +++ b/exported/Engine/Classes/OnlineGameInterface.uc @@ -0,0 +1,782 @@ +interface OnlineGameInterface extends Interface + abstract; + +function bool CreateOnlineGame(byte HostingPlayerNum, name SessionName, OnlineGameSettings NewGameSettings) +{ + //return ReturnValue; +} + +delegate OnCreateOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddCreateOnlineGameCompleteDelegate(delegate CreateOnlineGameCompleteDelegate) +{ + //return; +} + +function ClearCreateOnlineGameCompleteDelegate(delegate CreateOnlineGameCompleteDelegate) +{ + //return; +} + +function bool UpdateOnlineGame(name SessionName, OnlineGameSettings UpdatedGameSettings, optional bool bShouldRefreshOnlineData = false) +{ + //return ReturnValue; +} + +delegate OnUpdateOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddUpdateOnlineGameCompleteDelegate(delegate UpdateOnlineGameCompleteDelegate) +{ + //return; +} + +function ClearUpdateOnlineGameCompleteDelegate(delegate UpdateOnlineGameCompleteDelegate) +{ + //return; +} + +function OnlineGameSettings GetGameSettings(name SessionName) +{ + //return ReturnValue; +} + +function bool DestroyOnlineGame(name SessionName) +{ + //return ReturnValue; +} + +delegate OnDestroyOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddDestroyOnlineGameCompleteDelegate(delegate DestroyOnlineGameCompleteDelegate) +{ + //return; +} + +function ClearDestroyOnlineGameCompleteDelegate(delegate DestroyOnlineGameCompleteDelegate) +{ + //return; +} + +function bool FindOnlineGames(byte SearchingPlayerNum, OnlineGameSearch SearchSettings) +{ + //return ReturnValue; +} + +delegate OnFindOnlineGamesComplete(bool bWasSuccessful) +{ + //return; +} + +function AddFindOnlineGamesCompleteDelegate(delegate FindOnlineGamesCompleteDelegate) +{ + //return; +} + +function ClearFindOnlineGamesCompleteDelegate(delegate FindOnlineGamesCompleteDelegate) +{ + //return; +} + +function bool CancelFindOnlineGames() +{ + //return ReturnValue; +} + +delegate OnCancelFindOnlineGamesComplete(bool bWasSuccessful) +{ + //return; +} + +function AddCancelFindOnlineGamesCompleteDelegate(delegate CancelFindOnlineGamesCompleteDelegate) +{ + //return; +} + +function ClearCancelFindOnlineGamesCompleteDelegate(delegate CancelFindOnlineGamesCompleteDelegate) +{ + //return; +} + +delegate OnQosStatusChanged(int NumComplete, int NumTotal) +{ + //return; +} + +function AddQosStatusChangedDelegate(delegate QosStatusChangedDelegate) +{ + //return; +} + +function ClearQosStatusChangedDelegate(delegate QosStatusChangedDelegate) +{ + //return; +} + +function bool ReadPlatformSpecificSessionInfo(const out OnlineGameSearchResult DesiredGame, out byte PlatformSpecificInfo[80]) +{ + //return ReturnValue; +} + +function bool ReadPlatformSpecificSessionInfoBySessionName(name SessionName, out byte PlatformSpecificInfo[80]) +{ + //return ReturnValue; +} + +function bool BindPlatformSpecificSessionToSearch(byte SearchingPlayerNum, OnlineGameSearch SearchSettings, byte PlatformSpecificInfo[80]) +{ + //return ReturnValue; +} + +function OnlineGameSearch GetGameSearch() +{ + //return ReturnValue; +} + +function bool FreeSearchResults(optional OnlineGameSearch Search) +{ + //return ReturnValue; +} + +function bool QueryNonAdvertisedData(int StartAt, int NumberToQuery) +{ + //return ReturnValue; +} + +function bool JoinOnlineGame(byte PlayerNum, name SessionName, const out OnlineGameSearchResult DesiredGame) +{ + //return ReturnValue; +} + +function bool JoinOnlineGameBySessionHandle(byte PlayerNum, name SessionName, const string InSessionGuid) +{ + //return ReturnValue; +} + +function OnMapChangePending() +{ + //return; +} + +function OnMapChangeComplete() +{ + //return; +} + +function bool JoinOnlineGameByMatchingParams(QWord RoomId, out OnlineGameSettings JoinedGameSettings) +{ + //return ReturnValue; +} + +function bool IsJoinOperationInProgress() +{ + //return ReturnValue; +} + +function bool SetRankedReadyStatus(bool bReady) +{ + //return ReturnValue; +} + +function bool IsCurrentRoomOwner() +{ + //return ReturnValue; +} + +delegate OnJoinOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddJoinOnlineGameCompleteDelegate(delegate JoinOnlineGameCompleteDelegate) +{ + //return; +} + +function ClearJoinOnlineGameCompleteDelegate(delegate JoinOnlineGameCompleteDelegate) +{ + //return; +} + +function bool CreateOnlineGameWithParty(byte ScoutingPlayerNum, name SessionName, OnlineGameSettings NewGameSettings) +{ + //return ReturnValue; +} + +delegate OnCreateOnlineGameWithPartyComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddCreateOnlineGameWithPartyCompleteDelegate(delegate CreateOnlineGameWithPartyCompleteDelegate) +{ + //return; +} + +function ClearCreateOnlineGameWithPartyCompleteDelegate(delegate CreateOnlineGameWithPartyCompleteDelegate) +{ + //return; +} + +function bool MatchmakeOnlineGameWithParty(byte ScoutingPlayerNum, name SessionName, OnlineGameSettings NewGameSettings) +{ + //return ReturnValue; +} + +delegate OnMatchmakeOnlineGameWithPartyComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddMatchmakeOnlineGameWithPartyCompleteDelegate(delegate MatchmakeOnlineGameWithPartyCompleteDelegate) +{ + //return; +} + +function ClearMatchmakeOnlineGameWithPartyCompleteDelegate(delegate MatchmakeOnlineGameWithPartyCompleteDelegate) +{ + //return; +} + +function bool IsHostOfSession(name SessionName) +{ + //return ReturnValue; +} + +function bool InitiatedSessionSearch(name SessionName) +{ + //return ReturnValue; +} + +function bool CreateOnlineSessionWithTemplate(byte ScoutingPlayerNum, name SessionName, OnlineGameSettings NewGameSettings, string TemplateName, string SessionKeyword) +{ + //return ReturnValue; +} + +function bool AddSessionMemberByString(byte ScoutingPlayerNum, name SessionName, string Member) +{ + //return ReturnValue; +} + +function bool AddSessionMember(byte ScoutingPlayerNum, name SessionName, UniqueNetId Member) +{ + //return ReturnValue; +} + +function bool AddSessionMembers(byte ScoutingPlayerNum, name SessionName, array Members) +{ + //return ReturnValue; +} + +delegate OnAddSessionMemberComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddAddSessionMemberCompleteDelegate(delegate AddSessionMemberCompleteDelegate) +{ + //return; +} + +function ClearAddSessionMemberCompleteDelegate(delegate AddSessionMemberCompleteDelegate) +{ + //return; +} + +delegate OnMultiplayerSessionChange(name SessionName, SessionUpdateInfo SessionChanges) +{ + //return; +} + +function AddMultiplayerSessionChangeDelegate(delegate MultiplayerSessionChangeDelegate) +{ + //return; +} + +function ClearMultiplayerSessionChangeDelegate(delegate MultiplayerSessionChangeDelegate) +{ + //return; +} + +function bool SetCustomSessionProperty(name SessionName, string PropertyName, string PropertyValue) +{ + //return ReturnValue; +} + +function bool DeleteCustomSessionProperty(name SessionName, string PropertyName) +{ + //return ReturnValue; +} + +function bool SetCustomMemberProperty(name SessionName, string PropertyName, string PropertyValue) +{ + //return ReturnValue; +} + +function bool DeleteCustomMemberProperty(name SessionName, string PropertyName) +{ + //return ReturnValue; +} + +function bool UpdateSessionProperties(byte ScoutingUserNum, name SessionName) +{ + //return ReturnValue; +} + +delegate OnUpdateSessionPropertiesComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddUpdateSessionPropertiesCompleteDelegate(delegate UpdateSessionPropertiesCompleteDelegate) +{ + //return; +} + +function ClearUpdateSessionPropertiesCompleteDelegate(delegate UpdateSessionPropertiesCompleteDelegate) +{ + //return; +} + +delegate OnGameSessionReady(name SessionName) +{ + //return; +} + +function AddGameSessionReadyDelegate(delegate GameSessionReadyDelegate) +{ + //return; +} + +function ClearGameSessionReadyDelegate(delegate GameSessionReadyDelegate) +{ + //return; +} + +function AcceptPendingGameSession(name SessionName) +{ + //return; +} + +delegate OnAcceptPendingGameSessionComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddAcceptPendingGameSessionCompleteDelegate(delegate AcceptPendingGameSessionCompleteDelegate) +{ + //return; +} + +function ClearAcceptPendingGameSessionCompleteDelegate(delegate AcceptPendingGameSessionCompleteDelegate) +{ + //return; +} + +delegate OnGamePlayersChanged(name SessionName, array Players) +{ + //return; +} + +function AddGamePlayersChangedDelegate(delegate GamePlayersChangedDelegate) +{ + //return; +} + +function ClearGamePlayersChangedDelegate(delegate GamePlayersChangedDelegate) +{ + //return; +} + +delegate OnMatchStatusChanged(name SessionName, byte Status) +{ + //return; +} + +function AddMatchStatusChangedDelegate(delegate MatchStatusChangedDelegate) +{ + //return; +} + +function ClearMatchStatusChangedDelegate(delegate MatchStatusChangedDelegate) +{ + //return; +} + +function bool LeaveOnlineSession(byte LocalPlayerNum, name SessionName, optional bool bClearSessionIfHost = false) +{ + //return ReturnValue; +} + +function LeaveAllOnlineSessions(optional bool bClearSessionIfHost = false) +{ + //return; +} + +function bool QuerySessionsForUser(byte LocalPlayerNum) +{ + //return ReturnValue; +} + +function bool QuerySessionsByKeyword(byte LocalPlayerNum, string Keyword, OnlineGameSearch SearchSettings) +{ + //return ReturnValue; +} + +delegate OnQuerySessionsForUserComplete(byte LocalPlayerNum, bool bWasSuccessful) +{ + //return; +} + +function AddQuerySessionsForUserCompleteDelegate(delegate QuerySessionsForUserCompleteDelegate) +{ + //return; +} + +function ClearQuerySessionsForUserCompleteDelegate(delegate QuerySessionsForUserCompleteDelegate) +{ + //return; +} + +function bool GetResolvedConnectString(name SessionName, out string ConnectInfo) +{ + //return ReturnValue; +} + +function bool RegisterPlayer(name SessionName, UniqueNetId PlayerID, bool bWasInvited) +{ + //return ReturnValue; +} + +function bool RegisterPlayers(name SessionName, const out array Players) +{ + //return ReturnValue; +} + +delegate OnRegisterPlayerComplete(name SessionName, UniqueNetId PlayerID, bool bWasSuccessful) +{ + //return; +} + +function AddRegisterPlayerCompleteDelegate(delegate RegisterPlayerCompleteDelegate) +{ + //return; +} + +function ClearRegisterPlayerCompleteDelegate(delegate RegisterPlayerCompleteDelegate) +{ + //return; +} + +function bool UnregisterPlayer(name SessionName, UniqueNetId PlayerID) +{ + //return ReturnValue; +} + +function bool UnregisterPlayers(name SessionName, const out array Players) +{ + //return ReturnValue; +} + +delegate OnUnregisterPlayerComplete(name SessionName, UniqueNetId PlayerID, bool bWasSuccessful) +{ + //return; +} + +function AddUnregisterPlayerCompleteDelegate(delegate UnregisterPlayerCompleteDelegate) +{ + //return; +} + +function ClearUnregisterPlayerCompleteDelegate(delegate UnregisterPlayerCompleteDelegate) +{ + //return; +} + +function bool StartOnlineGame(name SessionName) +{ + //return ReturnValue; +} + +delegate OnStartOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddStartOnlineGameCompleteDelegate(delegate StartOnlineGameCompleteDelegate) +{ + //return; +} + +function ClearStartOnlineGameCompleteDelegate(delegate StartOnlineGameCompleteDelegate) +{ + //return; +} + +function bool EndOnlineGame(name SessionName) +{ + //return ReturnValue; +} + +delegate OnEndOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddEndOnlineGameCompleteDelegate(delegate EndOnlineGameCompleteDelegate) +{ + //return; +} + +function ClearEndOnlineGameCompleteDelegate(delegate EndOnlineGameCompleteDelegate) +{ + //return; +} + +function bool RegisterForArbitration(name SessionName) +{ + //return ReturnValue; +} + +delegate OnArbitrationRegistrationComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddArbitrationRegistrationCompleteDelegate(delegate ArbitrationRegistrationCompleteDelegate) +{ + //return; +} + +function ClearArbitrationRegistrationCompleteDelegate(delegate ArbitrationRegistrationCompleteDelegate) +{ + //return; +} + +function array GetArbitratedPlayers(name SessionName) +{ + //return ReturnValue; +} + +delegate OnGameInviteAccepted(const out OnlineGameSearchResult InviteResult) +{ + //return; +} + +function AddGameInviteAcceptedDelegate(byte LocalUserNum, delegate GameInviteAcceptedDelegate) +{ + //return; +} + +function ClearGameInviteAcceptedDelegate(byte LocalUserNum, delegate GameInviteAcceptedDelegate) +{ + //return; +} + +function bool AcceptGameInvite(byte LocalUserNum, name SessionName) +{ + //return ReturnValue; +} + +function bool RecalculateSkillRating(name SessionName, const out array Players) +{ + //return ReturnValue; +} + +delegate OnRecalculateSkillRatingComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddRecalculateSkillRatingCompleteDelegate(delegate RecalculateSkillRatingCompleteDelegate) +{ + //return; +} + +function ClearRecalculateSkillRatingCompleteDelegate(delegate RecalculateSkillRatingGameCompleteDelegate) +{ + //return; +} + +function bool MigrateOnlineGame(byte HostingPlayerNum, name SessionName) +{ + //return ReturnValue; +} + +delegate OnMigrateOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddMigrateOnlineGameCompleteDelegate(delegate MigrateOnlineGameCompleteDelegate) +{ + //return; +} + +function ClearMigrateOnlineGameCompleteDelegate(delegate MigrateOnlineGameCompleteDelegate) +{ + //return; +} + +function bool JoinMigratedOnlineGame(byte PlayerNum, name SessionName, const out OnlineGameSearchResult DesiredGame) +{ + //return ReturnValue; +} + +delegate OnJoinMigratedOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddJoinMigratedOnlineGameCompleteDelegate(delegate JoinMigratedOnlineGameCompleteDelegate) +{ + //return; +} + +function ClearJoinMigratedOnlineGameCompleteDelegate(delegate JoinMigratedOnlineGameCompleteDelegate) +{ + //return; +} + +function bool GetNumberOfCurrentPlayers() +{ + //return ReturnValue; +} + +delegate OnRetrievedGameSettingsForIP(bool bSuccessful, const out OnlineGameSearchResult ConnectResult) +{ + //return; +} + +function AddOnRetrieveGameSettingsForIPDelegate(delegate NewRetrieveIPDelegate) +{ + //return; +} + +function ClearOnRetrieveGameSettingsForIPDelegate(delegate RetrieveIPDelegate) +{ + //return; +} + +function RetrieveGameSettingsForIP(string IPAddress) +{ + //return; +} + +function bool SendPlayerList(const array Players) +{ + //return ReturnValue; +} + +function int GetNumberOfCurrentPlayersCached() +{ + //return ReturnValue; +} + +delegate OnGetNumberOfCurrentPlayersComplete(int TotalPlayers) +{ + //return; +} + +function AddGetNumberOfCurrentPlayersCompleteDelegate(delegate GetNumberOfCurrentPlayersCompleteDelegate) +{ + //return; +} + +function ClearGetNumberOfCurrentPlayersCompleteDelegate(delegate GetNumberOfCurrentPlayersCompleteDelegate) +{ + //return; +} + +function string GetRoomId() +{ + //return ReturnValue; +} + +delegate OnGetRoomIdFromTitleService(QWord RoomId) +{ + //return; +} + +function GetRoomIdFromTitleService(QWord DataId) +{ + //return; +} + +function GetRoomIdFromSessionId(string SessionId) +{ + //return; +} + +function AddGetRoomIdFromTitleServiceDelegate(delegate InDelegate) +{ + //return; +} + +function ClearGetRoomIdFromTitleServiceDelegate(delegate InDelegate) +{ + //return; +} + +function bool IsAllowedToNetworkHost() +{ + //return ReturnValue; +} + +function RunBandwidthTest() +{ + //return; +} + +function bool GetCurrentSessionMemberInfoAsync(byte LocalUserNum, name SessionName) +{ + //return ReturnValue; +} + +function bool GetCurrentSessionMemberInfo(name SessionName, out array OutMemberInfo) +{ + //return ReturnValue; +} + +delegate OnGetSessionMemberInfoComplete(array OutMemberInfo, bool bWasSuccessful) +{ + //return; +} + +function AddGetSessionMemberInfoCompleteDelegate(delegate GetSessionMemberInfoCompleteDelegate) +{ + //return; +} + +function ClearGetSessionMemberInfoCompleteDelegate(delegate GetSessionMemberInfoCompleteDelegate) +{ + //return; +} + +function bool GetUserConnectionInfoAsync(array UserNames) +{ + //return ReturnValue; +} + +delegate OnGetUserConnectionInfoComplete(array OutMemberInfo, bool bWasSuccessful) +{ + //return; +} + +function AddGetUserConnectionInfoCompleteDelegate(delegate GetGetUserConnectionInfoCompleteDelegate) +{ + //return; +} + +function ClearGetUserConnectionInfoCompleteDelegate(delegate GetGetUserConnectionInfoCompleteDelegate) +{ + //return; +} diff --git a/exported/Engine/Classes/OnlineGameSearch.uc b/exported/Engine/Classes/OnlineGameSearch.uc new file mode 100755 index 00000000..b574416c --- /dev/null +++ b/exported/Engine/Classes/OnlineGameSearch.uc @@ -0,0 +1,161 @@ +class OnlineGameSearch extends Settings + native; + +enum EOnlineGameSearchEntryType +{ + OGSET_Property, // 0 + OGSET_LocalizedSetting, // 1 + OGSET_ObjectProperty, // 2 + OGSET_MAX // 3 +}; + +enum EOnlineGameSearchComparisonType +{ + OGSCT_Equals, // 0 + OGSCT_NotEquals, // 1 + OGSCT_GreaterThan, // 2 + OGSCT_GreaterThanEquals, // 3 + OGSCT_LessThan, // 4 + OGSCT_LessThanEquals, // 5 + OGSCT_MAX // 6 +}; + +enum EOnlineGameSearchSortType +{ + OGSSO_Ascending, // 0 + OGSSO_Descending, // 1 + OGSSO_MAX // 2 +}; + +struct native OnlineGameSearchResult +{ + var const OnlineGameSettings GameSettings; + var native const Pointer PlatformData; + + structdefaultproperties + { + GameSettings=none + } +}; + +struct native OverrideSkill +{ + var int LeaderboardId; + var array Players; + var array Mus; + var array Sigmas; + + structdefaultproperties + { + LeaderboardId=0 + Players=none + Mus=none + Sigmas=none + } +}; + +struct native NamedObjectProperty +{ + var name ObjectPropertyName; + var string ObjectPropertyValue; + + structdefaultproperties + { + ObjectPropertyName="None" + ObjectPropertyValue="" + } +}; + +struct native OnlineGameSearchParameter +{ + var int EntryId; + var name ObjectPropertyName; + var OnlineGameSearch.EOnlineGameSearchEntryType EntryType; + var OnlineGameSearch.EOnlineGameSearchComparisonType ComparisonType; + + structdefaultproperties + { + EntryId=0 + ObjectPropertyName="None" + EntryType=EOnlineGameSearchEntryType.OGSET_Property + ComparisonType=EOnlineGameSearchComparisonType.OGSCT_Equals + } +}; + +struct native OnlineGameSearchSortClause +{ + var int EntryId; + var name ObjectPropertyName; + var OnlineGameSearch.EOnlineGameSearchEntryType EntryType; + var OnlineGameSearch.EOnlineGameSearchSortType SortType; + + structdefaultproperties + { + EntryId=0 + ObjectPropertyName="None" + EntryType=EOnlineGameSearchEntryType.OGSET_Property + SortType=EOnlineGameSearchSortType.OGSSO_Ascending + } +}; + +struct native OnlineGameSearchORClause +{ + var array OrParams; + + structdefaultproperties + { + OrParams=none + } +}; + +struct native OnlineGameSearchQuery +{ + var array OrClauses; + var array SortClauses; + + structdefaultproperties + { + OrClauses=none + SortClauses=none + } +}; + +var int MaxSearchResults; +var LocalizedStringSetting Query; +var databinding bool bIsLanQuery; +var databinding bool bUsesArbitration; +var const bool bIsSearchInProgress; +var Class GameSettingsClass; +var const array Results; +var OverrideSkill ManualSkillOverride; +var array NamedProperties; +var OnlineGameSearchQuery FilterQuery; +var string AdditionalSearchCriteria; +var int PingBucketSize; +var int NumPingProbes; +var int MaxPingBytes; + +function SetSkillOverride(int LeaderboardId, const out array Players) +{ + ManualSkillOverride.LeaderboardId = LeaderboardId; + ManualSkillOverride.Players = Players; + ManualSkillOverride.Mus.Length = 0; + ManualSkillOverride.Sigmas.Length = 0; + //return; +} + +// Export UOnlineGameSearch::execSortSearchResults(FFrame&, void* const) +native event SortSearchResults(); + +// Export UOnlineGameSearch::execSetNamedProperty(FFrame&, void* const) +native event bool SetNamedProperty(name PropertyName, string Value); + +// Export UOnlineGameSearch::execGetNamedProperty(FFrame&, void* const) +native event bool GetNamedProperty(name PropertyName, out string Value); + +defaultproperties +{ + MaxSearchResults=25 + GameSettingsClass=Class'Engine.OnlineGameSettings' + PingBucketSize=50 +} \ No newline at end of file diff --git a/exported/Engine/Classes/OnlineGameSettings.uc b/exported/Engine/Classes/OnlineGameSettings.uc new file mode 100755 index 00000000..9fc09ea5 --- /dev/null +++ b/exported/Engine/Classes/OnlineGameSettings.uc @@ -0,0 +1,46 @@ +class OnlineGameSettings extends Settings + native; + +var databinding int NumPublicConnections; +var databinding int NumPrivateConnections; +var databinding int NumOpenPublicConnections; +var databinding int NumOpenPrivateConnections; +var const QWord ServerNonce; +var string ServiceConfigId; +var string SessionTemplateName; +var string MatchHopperName; +var string SessionGuid; +var string SessionHandle; +var array ReservedMembers; +var databinding bool bShouldAdvertise; +var databinding bool bIsLanMatch; +var databinding bool bUsesStats; +var databinding bool bAllowJoinInProgress; +var bool bPublic; +var databinding bool bAllowInvites; +var databinding bool bUsesPresence; +var databinding bool bAllowJoinViaPresence; +var databinding bool bAllowJoinViaPresenceFriendsOnly; +var databinding bool bUsesArbitration; +var databinding bool bAntiCheatProtected; +var const bool bWasFromInvite; +var databinding bool bIsDedicated; +var const bool bHasSkillUpdateInProgress; +var const bool bShouldShrinkArbitratedSessions; +var databinding string OwningPlayerName; +var UniqueNetId OwningPlayerId; +var databinding int PingInMs; +var databinding float MatchQuality; +var databinding const OnlineSubsystem.EOnlineGameState GameState; +var const int BuildUniqueId; + +defaultproperties +{ + bShouldAdvertise=true + bUsesStats=true + bAllowJoinInProgress=true + bAllowInvites=true + bUsesPresence=true + bAllowJoinViaPresence=true + bShouldShrinkArbitratedSessions=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/OnlineMarketplaceInterface.uc b/exported/Engine/Classes/OnlineMarketplaceInterface.uc new file mode 100755 index 00000000..6d4332ba --- /dev/null +++ b/exported/Engine/Classes/OnlineMarketplaceInterface.uc @@ -0,0 +1,142 @@ +interface OnlineMarketplaceInterface extends Interface + abstract; + +function bool ReadAvailableProducts(byte LocalUserNum, string ParentId, optional OnlineSubsystem.EMediaItemType ParentMediaType = 1, optional OnlineSubsystem.EMediaItemType ChildMediaType = 1, optional OnlineSubsystem.ECatalogSortOrder SortOrder = 0) +{ + //return ReturnValue; +} + +delegate OnReadAvailableProductsComplete(OnlineSubsystem.EMediaItemType MediaType) +{ + //return; +} + +function AddReadAvailableProductsCompleteDelegate(byte LocalUserNum, delegate ReadAvailableProductsCompleteDelegate) +{ + //return; +} + +function ClearReadAvailableProductsCompleteDelegate(byte LocalUserNum, delegate ReadAvailableProductsCompleteDelegate) +{ + //return; +} + +function OnlineSubsystem.EOnlineEnumerationReadState GetAvailableProducts(byte LocalUserNum, OnlineSubsystem.EMediaItemType MediaType, out array AvailableProducts) +{ + //return ReturnValue; +} + +function ResetAvailableProducts(byte LocalUserNum, OnlineSubsystem.EMediaItemType MediaType) +{ + //return; +} + +function bool ReadAdditionalDetailsForProducts(byte LocalUserNum, OnlineSubsystem.EMediaItemType MediaType) +{ + //return ReturnValue; +} + +delegate OnReadAdditionalProductDetailsComplete(OnlineSubsystem.EMediaItemType MediaType) +{ + //return; +} + +function AddReadAdditionalProductDetailsCompleteDelegate(byte LocalUserNum, delegate ReadAdditionalProductDetailsCompleteDelegate) +{ + //return; +} + +function ClearReadAdditionalProductDetailsCompleteDelegate(byte LocalUserNum, delegate ReadAdditionalProductDetailsCompleteDelegate) +{ + //return; +} + +delegate OnReadDetailsForProductIdList(out array ProductList) +{ + //return; +} + +function bool ReadDetailsForProductIdList(byte LocalUserNum, array ProductIds) +{ + //return ReturnValue; +} + +function AddReadDetailsForProductIdListCompleteDelegate(byte LocalUserNum, delegate InDelegate) +{ + //return; +} + +function ClearReadDetailsForProductIdListCompleteDelegate(byte LocalUserNum, delegate InDelegate) +{ + //return; +} + +function bool ReadInventoryItems(byte LocalUserNum) +{ + //return ReturnValue; +} + +delegate OnReadInventoryItemsComplete() +{ + //return; +} + +function AddReadInventoryItemsCompleteDelegate(byte LocalUserNum, delegate ReadInventoryItemsCompleteDelegate) +{ + //return; +} + +function ClearReadInventoryItemsCompleteDelegate(byte LocalUserNum, delegate ReadInventoryItemsCompleteDelegate) +{ + //return; +} + +function OnlineSubsystem.EOnlineEnumerationReadState GetInventoryItems(byte LocalUserNum, out array InventoryItems) +{ + //return ReturnValue; +} + +function ResetInventoryItems(byte LocalUserNum) +{ + //return; +} + +function bool ConsumeInventoryItem(byte LocalUserNum, string ProductID, int Quantity, string TransactionId) +{ + //return ReturnValue; +} + +delegate OnConsumeInventoryItemComplete(string ProductID, bool bDidSucceed, int NewQuantity) +{ + //return; +} + +function AddConsumeInventoryItemCompleteDelegate(byte LocalUserNum, delegate ConsumeInventoryItemCompleteDelegate) +{ + //return; +} + +function ClearConsumeInventoryItemCompleteDelegate(byte LocalUserNum, delegate ConsumeInventoryItemCompleteDelegate) +{ + //return; +} + +delegate OnMarketplaceItemPurchased() +{ + //return; +} + +function AddMarketplaceItemPurchasedDelegate(delegate InDelegate) +{ + //return; +} + +function ClearMarketplaceItemPurchasedDelegate(delegate InDelegate) +{ + //return; +} + +function SetMarketplaceVisibility(bool Visible) +{ + //return; +} diff --git a/exported/Engine/Classes/OnlineMatchmakingStats.uc b/exported/Engine/Classes/OnlineMatchmakingStats.uc new file mode 100755 index 00000000..cf235a56 --- /dev/null +++ b/exported/Engine/Classes/OnlineMatchmakingStats.uc @@ -0,0 +1,20 @@ +class OnlineMatchmakingStats extends Object + native; + +struct native MMStats_Timer +{ + var bool bInProgress; + var Double MSecs; + + structdefaultproperties + { + bInProgress=false + MSecs=() + } +}; + +// Export UOnlineMatchmakingStats::execStartTimer(FFrame&, void* const) +native function StartTimer(out MMStats_Timer Timer); + +// Export UOnlineMatchmakingStats::execStopTimer(FFrame&, void* const) +native function StopTimer(out MMStats_Timer Timer); diff --git a/exported/Engine/Classes/OnlineNewsInterface.uc b/exported/Engine/Classes/OnlineNewsInterface.uc new file mode 100755 index 00000000..2016a1f1 --- /dev/null +++ b/exported/Engine/Classes/OnlineNewsInterface.uc @@ -0,0 +1,27 @@ +interface OnlineNewsInterface extends Interface + abstract; + +function bool ReadNews(byte LocalUserNum, OnlineSubsystem.EOnlineNewsType NewsType) +{ + //return ReturnValue; +} + +delegate OnReadNewsCompleted(bool bWasSuccessful, OnlineSubsystem.EOnlineNewsType NewsType) +{ + //return; +} + +function AddReadNewsCompletedDelegate(delegate ReadNewsDelegate) +{ + //return; +} + +function ClearReadNewsCompletedDelegate(delegate ReadNewsDelegate) +{ + //return; +} + +function string GetNews(byte LocalUserNum, OnlineSubsystem.EOnlineNewsType NewsType) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/OnlinePartyChatInterface.uc b/exported/Engine/Classes/OnlinePartyChatInterface.uc new file mode 100755 index 00000000..bb6a67b1 --- /dev/null +++ b/exported/Engine/Classes/OnlinePartyChatInterface.uc @@ -0,0 +1,107 @@ +interface OnlinePartyChatInterface extends Interface + abstract; + +function bool SendPartyGameInvites(byte LocalUserNum) +{ + //return ReturnValue; +} + +delegate OnSendPartyGameInvitesComplete(bool bWasSuccessful) +{ + //return; +} + +function AddSendPartyGameInvitesCompleteDelegate(byte LocalUserNum, delegate SendPartyGameInvitesCompleteDelegate) +{ + //return; +} + +function ClearSendPartyGameInvitesCompleteDelegate(byte LocalUserNum, delegate SendPartyGameInvitesCompleteDelegate) +{ + //return; +} + +function bool GetPartyMembersInformation(out array PartyMembers) +{ + //return ReturnValue; +} + +function bool GetPartyMemberInformation(UniqueNetId MemberId, out OnlinePartyMember PartyMember) +{ + //return ReturnValue; +} + +delegate OnPartyMemberListChanged(bool bJoinedOrLeft, string PlayerName, UniqueNetId PlayerID) +{ + //return; +} + +function AddPartyMemberListChangedDelegate(byte LocalUserNum, delegate PartyMemberListChangedDelegate) +{ + //return; +} + +function ClearPartyMemberListChangedDelegate(byte LocalUserNum, delegate PartyMemberListChangedDelegate) +{ + //return; +} + +delegate OnReservedPartyMemberListChanged(bool bJoinedOrLeft, string PlayerName, UniqueNetId PlayerID) +{ + //return; +} + +function AddReservedPartyMemberListChangedDelegate(byte LocalUserNum, delegate ReservedPartyMemberListChangedDelegate) +{ + //return; +} + +function ClearReservedPartyMemberListChangedDelegate(byte LocalUserNum, delegate ReservedPartyMemberListChangedDelegate) +{ + //return; +} + +delegate OnPartyMembersInfoChanged(string PlayerName, UniqueNetId PlayerID, int CustomData1, int CustomData2, int CustomData3, int CustomData4) +{ + //return; +} + +function AddPartyMembersInfoChangedDelegate(byte LocalUserNum, delegate PartyMembersInfoChangedDelegate) +{ + //return; +} + +function ClearPartyMembersInfoChangedDelegate(byte LocalUserNum, delegate PartyMembersInfoChangedDelegate) +{ + //return; +} + +function bool SetPartyMemberCustomData(byte LocalUserNum, int Data1, int Data2, int Data3, int Data4) +{ + //return ReturnValue; +} + +function int GetPartyBandwidth() +{ + //return ReturnValue; +} + +function bool ShowPartyUI(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool ShowVoiceChannelUI(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool ShowCommunitySessionsUI(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool IsInPartyChat(byte LocalUserNum) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/OnlinePlayerInterface.uc b/exported/Engine/Classes/OnlinePlayerInterface.uc new file mode 100755 index 00000000..567fee05 --- /dev/null +++ b/exported/Engine/Classes/OnlinePlayerInterface.uc @@ -0,0 +1,742 @@ +interface OnlinePlayerInterface extends Interface + abstract; + +delegate OnLoginChange(byte LocalUserNum) +{ + //return; +} + +delegate OnLoginCancelled() +{ + //return; +} + +delegate OnCurrentUserChanged(byte CurrentUserLocalNum, string CurrentUser, string LoggedInUser) +{ + //return; +} + +delegate OnTokenAndSignatureRetrieved(byte LocalUserNum, string URL, string Token, string Signature) +{ + //return; +} + +function GetTokenAndSignatureForURL(byte LocalUserNum, string URL) +{ + //return; +} + +function AddURLTokenRetrievedDelegate(byte LocalUserNum, delegate tsrDelegate) +{ + //return; +} + +function ClearURLTokenRetrievedDelegate(byte LocalUserNum, delegate tsrDelegate) +{ + //return; +} + +delegate OnUserAccountInfoRetrieved(bool bSuccessful, UserAccountInfo AccountInfo) +{ + //return; +} + +function bool GetUserAccountInfo(byte LocalUserNum) +{ + //return ReturnValue; +} + +function AddGetUserAccountInfoDelegate(delegate InDelegate) +{ + //return; +} + +function ClearGetUserAccountInfoDelegate(delegate InDelegate) +{ + //return; +} + +delegate OnMutingChange() +{ + //return; +} + +delegate OnFriendsChange() +{ + //return; +} + +delegate OnAccountPickerComplete(bool bForceLogin) +{ + //return; +} + +function AddAccountPickerCompleteDelegate(delegate InDelegate) +{ + //return; +} + +function RemoveAccountPickerCompleteDelegate(delegate InDelegate) +{ + //return; +} + +function bool ShowLoginUI(byte LocalUserNum, optional bool bForceLogin, optional bool bShowOnlineOnly = false) +{ + //return ReturnValue; +} + +function bool Login(byte LocalUserNum, string LoginName, string Password, optional bool bWantsLocalOnly) +{ + //return ReturnValue; +} + +function bool AutoLogin() +{ + //return ReturnValue; +} + +delegate OnLoginFailed(byte LocalUserNum, OnlineSubsystem.EOnlineServerConnectionStatus ErrorCode) +{ + //return; +} + +function AddLoginFailedDelegate(byte LocalUserNum, delegate LoginDelegate) +{ + //return; +} + +function ClearLoginFailedDelegate(byte LocalUserNum, delegate LoginDelegate) +{ + //return; +} + +function bool Logout(byte LocalUserNum) +{ + //return ReturnValue; +} + +delegate OnLogoutCompleted(bool bWasSuccessful) +{ + //return; +} + +function AddLogoutCompletedDelegate(byte LocalUserNum, delegate LogoutDelegate) +{ + //return; +} + +function ClearLogoutCompletedDelegate(byte LocalUserNum, delegate LogoutDelegate) +{ + //return; +} + +delegate OnSystemUserControllerPairingChanged(int NewLocalUserNum, int PreviousLocalUserNum) +{ + //return; +} + +function AddSystemUserContrllerPairingChangedDelegate(delegate PairingChangeDelegate) +{ + //return; +} + +function ClearSystemUserContrllerPairingChangedDelegate(delegate PairingChangeDelegate) +{ + //return; +} + +function bool PairUserAndControllerAtIndex(byte PlayerIndex, byte ControllerIndex, int PairIndex) +{ + //return ReturnValue; +} + +function CacheLoggedInGamepad() +{ + //return; +} + +function OnlineSubsystem.ELoginStatus GetLoginStatus(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool GetUniquePlayerId(byte LocalUserNum, out UniqueNetId PlayerID) +{ + //return ReturnValue; +} + +function bool GetControllerIdFromNetId(UniqueNetId PlayerID, out int ControllerId) +{ + //return ReturnValue; +} + +function string GetPlayerNickname(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool IsGuestLogin(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool IsLocalLogin(byte LocalUserNum) +{ + //return ReturnValue; +} + +delegate OnPrivilegeLevelChecked(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevel, bool bDiffersFromHint) +{ + //return; +} + +function AddPrivilegeLevelCheckedDelegate(delegate PrivilegeDelegate) +{ + //return; +} + +function ClearPrivilegeLevelCheckedDelegate(delegate PrivilegeDelegate) +{ + //return; +} + +delegate OnPrivilegeCheckedForUsers(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, array Results) +{ + //return; +} + +function AddPrivilegeCheckedForUsersDelegate(delegate PrivilegeDelegate) +{ + //return; +} + +function ClearPrivilegeCheckedForUsersDelegate(delegate PrivilegeDelegate) +{ + //return; +} + +function bool CanPlayOnline(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanCommunicateText(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanCommunicateVideo(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanCommunicateVoice(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanCommunicateVoiceWithUsers(byte LocalUserNum, array Users) +{ + //return ReturnValue; +} + +function bool CanShareUserCreatedContent(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanPurchaseContent(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanViewPlayerProfiles(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanShowPresenceInformation(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanRecordDVRClips(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanUseCloudStorage(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanAccessPremiumContent(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanAccessPremiumVideoContent(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanBrowseInternet(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanShareWithSocialNetwork(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanShareKinectContent(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanUploadFitnessData(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool IsFriend(byte LocalUserNum, UniqueNetId PlayerID) +{ + //return ReturnValue; +} + +function bool AreAnyFriends(byte LocalUserNum, out array Query) +{ + //return ReturnValue; +} + +function bool IsMuted(byte LocalUserNum, UniqueNetId PlayerID) +{ + //return ReturnValue; +} + +function bool ShowFriendsUI(byte LocalUserNum) +{ + //return ReturnValue; +} + +function AddLoginChangeDelegate(delegate LoginDelegate) +{ + //return; +} + +function ClearLoginChangeDelegate(delegate LoginDelegate) +{ + //return; +} + +delegate OnLoginStatusChange(OnlineSubsystem.ELoginStatus NewStatus, UniqueNetId NewId) +{ + //return; +} + +function AddLoginStatusChangeDelegate(delegate LoginStatusDelegate, byte LocalUserNum) +{ + //return; +} + +function ClearLoginStatusChangeDelegate(delegate LoginStatusDelegate, byte LocalUserNum) +{ + //return; +} + +function AddLoginCancelledDelegate(delegate CancelledDelegate) +{ + //return; +} + +function ClearLoginCancelledDelegate(delegate CancelledDelegate) +{ + //return; +} + +function AddCurrentUserChangedDelegate(delegate CurrentUserDelegate) +{ + //return; +} + +function ClearCurrentUserChangedDelegate(delegate CurrentUserDelegate) +{ + //return; +} + +function AddMutingChangeDelegate(delegate MutingDelegate) +{ + //return; +} + +function ClearMutingChangeDelegate(delegate MutingDelegate) +{ + //return; +} + +function AddFriendsChangeDelegate(byte LocalUserNum, delegate FriendsDelegate) +{ + //return; +} + +function ClearFriendsChangeDelegate(byte LocalUserNum, delegate FriendsDelegate) +{ + //return; +} + +function bool ReadProfileSettings(byte LocalUserNum, OnlineProfileSettings ProfileSettings) +{ + //return ReturnValue; +} + +delegate OnReadProfileSettingsComplete(byte LocalUserNum, bool bWasSuccessful) +{ + //return; +} + +function AddReadProfileSettingsCompleteDelegate(byte LocalUserNum, delegate ReadProfileSettingsCompleteDelegate) +{ + //return; +} + +function ClearReadProfileSettingsCompleteDelegate(byte LocalUserNum, delegate ReadProfileSettingsCompleteDelegate) +{ + //return; +} + +function OnlineProfileSettings GetProfileSettings(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool WriteProfileSettings(byte LocalUserNum, OnlineProfileSettings ProfileSettings) +{ + //return ReturnValue; +} + +delegate OnWriteProfileSettingsComplete(byte LocalUserNum, bool bWasSuccessful) +{ + //return; +} + +function AddWriteProfileSettingsCompleteDelegate(byte LocalUserNum, delegate WriteProfileSettingsCompleteDelegate) +{ + //return; +} + +function ClearWriteProfileSettingsCompleteDelegate(byte LocalUserNum, delegate WriteProfileSettingsCompleteDelegate) +{ + //return; +} + +function bool ReadPlayerStorage(byte LocalUserNum, OnlinePlayerStorage PlayerStorage, optional int DeviceID = -1) +{ + //return ReturnValue; +} + +delegate OnReadPlayerStorageComplete(byte LocalUserNum, bool bWasSuccessful) +{ + //return; +} + +function AddReadPlayerStorageCompleteDelegate(byte LocalUserNum, delegate ReadPlayerStorageCompleteDelegate) +{ + //return; +} + +function ClearReadPlayerStorageCompleteDelegate(byte LocalUserNum, delegate ReadPlayerStorageCompleteDelegate) +{ + //return; +} + +function bool ReadPlayerStorageForNetId(byte LocalUserNum, UniqueNetId NetId, OnlinePlayerStorage PlayerStorage) +{ + //return ReturnValue; +} + +delegate OnReadPlayerStorageForNetIdComplete(UniqueNetId NetId, bool bWasSuccessful) +{ + //return; +} + +function AddReadPlayerStorageForNetIdCompleteDelegate(UniqueNetId NetId, delegate ReadPlayerStorageForNetIdCompleteDelegate) +{ + //return; +} + +function ClearReadPlayerStorageForNetIdCompleteDelegate(UniqueNetId NetId, delegate ReadPlayerStorageForNetIdCompleteDelegate) +{ + //return; +} + +function OnlinePlayerStorage GetPlayerStorage(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool WritePlayerStorage(byte LocalUserNum, OnlinePlayerStorage PlayerStorage, optional int DeviceID = -1) +{ + //return ReturnValue; +} + +delegate OnWritePlayerStorageComplete(byte LocalUserNum, bool bWasSuccessful) +{ + //return; +} + +function AddWritePlayerStorageCompleteDelegate(byte LocalUserNum, delegate WritePlayerStorageCompleteDelegate) +{ + //return; +} + +function ClearWritePlayerStorageCompleteDelegate(byte LocalUserNum, delegate WritePlayerStorageCompleteDelegate) +{ + //return; +} + +function bool ReadFriendsList(byte LocalUserNum, optional int Count, optional int StartingAt) +{ + //return ReturnValue; +} + +delegate OnReadFriendsComplete(bool bWasSuccessful) +{ + //return; +} + +function AddReadFriendsCompleteDelegate(byte LocalUserNum, delegate ReadFriendsCompleteDelegate) +{ + //return; +} + +function ClearReadFriendsCompleteDelegate(byte LocalUserNum, delegate ReadFriendsCompleteDelegate) +{ + //return; +} + +function OnlineSubsystem.EOnlineEnumerationReadState GetFriendsList(byte LocalUserNum, out array Friends, optional int Count, optional int StartingAt) +{ + //return ReturnValue; +} + +function SetOnlineStatus(byte LocalUserNum, string StatusString, optional bool PlayerActive = true) +{ + //return; +} + +function bool ShowKeyboardUI(byte LocalUserNum, string TitleText, string DescriptionText, optional bool bIsPassword = false, optional bool bShouldValidate = true, optional string DefaultText, optional int MaxResultLength = 256) +{ + //return ReturnValue; +} + +function bool HideKeyboardUI(byte LocalUserNum) +{ + //return ReturnValue; +} + +delegate OnKeyboardInputComplete(bool bWasSuccessful) +{ + //return; +} + +function AddKeyboardInputDoneDelegate(delegate InputDelegate) +{ + //return; +} + +function ClearKeyboardInputDoneDelegate(delegate InputDelegate) +{ + //return; +} + +function string GetKeyboardInputResults(out byte bWasCanceled) +{ + //return ReturnValue; +} + +function bool AddFriend(byte LocalUserNum, UniqueNetId NewFriend, optional string Message) +{ + //return ReturnValue; +} + +function bool AddFriendByName(byte LocalUserNum, string FriendName, optional string Message) +{ + //return ReturnValue; +} + +delegate OnAddFriendByNameComplete(bool bWasSuccessful) +{ + //return; +} + +function AddAddFriendByNameCompleteDelegate(byte LocalUserNum, delegate FriendDelegate) +{ + //return; +} + +function ClearAddFriendByNameCompleteDelegate(byte LocalUserNum, delegate FriendDelegate) +{ + //return; +} + +function bool AcceptFriendInvite(byte LocalUserNum, UniqueNetId RequestingPlayer) +{ + //return ReturnValue; +} + +function bool DenyFriendInvite(byte LocalUserNum, UniqueNetId RequestingPlayer) +{ + //return ReturnValue; +} + +function bool RemoveFriend(byte LocalUserNum, UniqueNetId FormerFriend) +{ + //return ReturnValue; +} + +delegate OnFriendInviteReceived(byte LocalUserNum, UniqueNetId RequestingPlayer, string RequestingNick, string Message) +{ + //return; +} + +function AddFriendInviteReceivedDelegate(byte LocalUserNum, delegate InviteDelegate) +{ + //return; +} + +function ClearFriendInviteReceivedDelegate(byte LocalUserNum, delegate InviteDelegate) +{ + //return; +} + +function bool SendMessageToFriend(byte LocalUserNum, UniqueNetId Friend, string Message) +{ + //return ReturnValue; +} + +function bool SendGameInviteToFriend(byte LocalUserNum, name SessionName, UniqueNetId Friend, optional string Text) +{ + //return ReturnValue; +} + +function bool SendGameInviteToFriends(byte LocalUserNum, name SessionName, array Friends, optional string Text) +{ + //return ReturnValue; +} + +delegate OnReceivedGameInvite(byte LocalUserNum, string InviterName) +{ + //return; +} + +function AddReceivedGameInviteDelegate(byte LocalUserNum, delegate ReceivedGameInviteDelegate) +{ + //return; +} + +function ClearReceivedGameInviteDelegate(byte LocalUserNum, delegate ReceivedGameInviteDelegate) +{ + //return; +} + +function CheckForGameInviteOnLaunch() +{ + //return; +} + +function bool JoinFriendGame(byte LocalUserNum, UniqueNetId Friend) +{ + //return ReturnValue; +} + +delegate OnJoinFriendGameComplete(bool bWasSuccessful) +{ + //return; +} + +function AddJoinFriendGameCompleteDelegate(delegate JoinFriendGameCompleteDelegate) +{ + //return; +} + +function ClearJoinFriendGameCompleteDelegate(delegate JoinFriendGameCompleteDelegate) +{ + //return; +} + +function GetFriendMessages(byte LocalUserNum, out array FriendMessages) +{ + //return; +} + +delegate OnFriendMessageReceived(byte LocalUserNum, UniqueNetId SendingPlayer, string SendingNick, string Message) +{ + //return; +} + +function AddFriendMessageReceivedDelegate(byte LocalUserNum, delegate MessageDelegate) +{ + //return; +} + +function ClearFriendMessageReceivedDelegate(byte LocalUserNum, delegate MessageDelegate) +{ + //return; +} + +function bool DeleteMessage(byte LocalUserNum, int MessageIndex) +{ + //return ReturnValue; +} + +function bool UnlockAchievement(byte LocalUserNum, int AchievementId, optional float PercentComplete = 100.0000000) +{ + //return ReturnValue; +} + +delegate OnUnlockAchievementComplete(bool bWasSuccessful) +{ + //return; +} + +function AddUnlockAchievementCompleteDelegate(byte LocalUserNum, delegate UnlockAchievementCompleteDelegate) +{ + //return; +} + +function ClearUnlockAchievementCompleteDelegate(byte LocalUserNum, delegate UnlockAchievementCompleteDelegate) +{ + //return; +} + +function bool ReadAchievements(byte LocalUserNum, optional int TitleId = 0, optional bool bShouldReadText = true, optional bool bShouldReadImages = false) +{ + //return ReturnValue; +} + +delegate OnReadAchievementsComplete(int TitleId) +{ + //return; +} + +function AddReadAchievementsCompleteDelegate(byte LocalUserNum, delegate ReadAchievementsCompleteDelegate) +{ + //return; +} + +function ClearReadAchievementsCompleteDelegate(byte LocalUserNum, delegate ReadAchievementsCompleteDelegate) +{ + //return; +} + +function OnlineSubsystem.EOnlineEnumerationReadState GetAchievements(byte LocalUserNum, out array Achievements, optional int TitleId = 0) +{ + //return ReturnValue; +} + +function ClearAchievements(byte LocalUserNum, optional int TitleId = 0) +{ + //return; +} diff --git a/exported/Engine/Classes/OnlinePlayerInterfaceEx.uc b/exported/Engine/Classes/OnlinePlayerInterfaceEx.uc new file mode 100755 index 00000000..64262802 --- /dev/null +++ b/exported/Engine/Classes/OnlinePlayerInterfaceEx.uc @@ -0,0 +1,377 @@ +interface OnlinePlayerInterfaceEx extends Interface + abstract; + +function bool ShowFeedbackUI(byte LocalUserNum, UniqueNetId PlayerID) +{ + //return ReturnValue; +} + +function bool ShowHelpUI(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool ShowHelpForErrorUI(string ContextId, string ErrorString) +{ + //return ReturnValue; +} + +delegate OnShowHelpComplete(bool bWasSuccessful) +{ + //return; +} + +function AddShowHelpCompleteDelegate(delegate HelpDelegate) +{ + //return; +} + +function ClearShowHelpCompleteDelegate(delegate HelpDelegate) +{ + //return; +} + +function bool ShowVideo(string URL) +{ + //return ReturnValue; +} + +delegate OnShowGamerCardComplete(bool bWasSuccessful) +{ + //return; +} + +function AddShowGamerCardCompleteDelegate(delegate GamerCardDelegate) +{ + //return; +} + +function ClearShowGamerCardCompleteDelegate(delegate GamerCardDelegate) +{ + //return; +} + +function bool ShowGamerCardUI(byte LocalUserNum, UniqueNetId PlayerID) +{ + //return ReturnValue; +} + +function bool ShowGamerCardUIByUsername(byte LocalUserNum, string UserName) +{ + //return ReturnValue; +} + +delegate OnShowComposeMessageUIComplete(bool bWasSuccessful) +{ + //return; +} + +function AddShowComposeMessageUICompleteDelegate(delegate MessageDelegate) +{ + //return; +} + +function ClearShowComposeMessageUICompleteDelegate(delegate MessageDelegate) +{ + //return; +} + +function bool ShowComposeMessageUI(byte LocalUserNum, optional array People, optional string Text) +{ + //return ReturnValue; +} + +function bool ShowMessagesUI(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool ShowAchievementsUI(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool ShowInviteUI(byte LocalUserNum, optional string InviteText) +{ + //return ReturnValue; +} + +function bool ShowPeoplePickerUI(byte LocalUserNum, array People, int MaxSelectable, optional string Text) +{ + //return ReturnValue; +} + +delegate OnPeoplePickerComplete(bool bWasSuccessful, array PeoplePicked) +{ + //return; +} + +function AddPeoplePickerCompleteDelegate(byte LocalUserNum, delegate InDelegate) +{ + //return; +} + +function ClearPeoplePickerCompleteDelegate(byte LocalUserNum, delegate InDelegate) +{ + //return; +} + +function bool ShowDataSendingUI(byte LocalUserNum, string Message, string DataName, string DataDescription, array Data, int MaxSelectableUsers) +{ + //return ReturnValue; +} + +delegate OnAcceptReceivedData(string Data) +{ + //return; +} + +function AddAcceptReceivedDataDelegate(byte LocalUserNum, delegate InDelegate) +{ + //return; +} + +function ClearAcceptReceivedDataDelegate(byte LocalUserNum, delegate InDelegate) +{ + //return; +} + +function bool ShowProductDetailsUI(byte LocalUserNum, optional string ParentProductId) +{ + //return ReturnValue; +} + +function bool ShowContentMarketplaceUI(byte LocalUserNum, int ParentProductType, int RequestedProductTypes, optional string ParentProductId) +{ + //return ReturnValue; +} + +function bool ShowContentPurchaseUI(byte LocalUserNum, string Offer) +{ + //return ReturnValue; +} + +function bool ShowContentRedeemCodeUI(byte LocalUserNum, string Offer) +{ + //return ReturnValue; +} + +function CloseCurrentContentUI() +{ + //return; +} + +function bool ShowMembershipMarketplaceUI(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool ShowDeviceSelectionUI(byte LocalUserNum, int SizeNeeded, optional bool bManageStorage) +{ + //return ReturnValue; +} + +delegate OnDeviceSelectionComplete(bool bWasSuccessful) +{ + //return; +} + +function AddDeviceSelectionDoneDelegate(byte LocalUserNum, delegate DeviceDelegate) +{ + //return; +} + +function ClearDeviceSelectionDoneDelegate(byte LocalUserNum, delegate DeviceDelegate) +{ + //return; +} + +function int GetDeviceSelectionResults(byte LocalUserNum, out string DeviceName) +{ + //return ReturnValue; +} + +function bool IsDeviceValid(int DeviceID, optional int SizeNeeded) +{ + //return ReturnValue; +} + +function bool UnlockGamerPicture(byte LocalUserNum, int PictureId) +{ + //return ReturnValue; +} + +delegate OnProfileDataChanged() +{ + //return; +} + +function AddProfileDataChangedDelegate(byte LocalUserNum, delegate ProfileDataChangedDelegate) +{ + //return; +} + +function ClearProfileDataChangedDelegate(byte LocalUserNum, delegate ProfileDataChangedDelegate) +{ + //return; +} + +function bool ShowFriendsInviteUI(byte LocalUserNum, UniqueNetId PlayerID) +{ + //return ReturnValue; +} + +function bool ShowPlayersUI(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool ShowCustomPlayersUI(byte LocalUserNum, const out array Players, string Title, string Description) +{ + //return ReturnValue; +} + +function bool UnlockAvatarAward(byte LocalUserNum, int AvatarItemId) +{ + //return ReturnValue; +} + +function bool ReadCrossTitleProfileSettings(byte LocalUserNum, int TitleId, OnlineProfileSettings ProfileSettings) +{ + //return ReturnValue; +} + +delegate OnReadCrossTitleProfileSettingsComplete(byte LocalUserNum, int TitleId, bool bWasSuccessful) +{ + //return; +} + +function AddReadCrossTitleProfileSettingsCompleteDelegate(byte LocalUserNum, delegate ReadProfileSettingsCompleteDelegate) +{ + //return; +} + +function ClearReadCrossTitleProfileSettingsCompleteDelegate(byte LocalUserNum, delegate ReadProfileSettingsCompleteDelegate) +{ + //return; +} + +function OnlineProfileSettings GetCrossTitleProfileSettings(byte LocalUserNum, int TitleId) +{ + //return ReturnValue; +} + +function ClearCrossTitleProfileSettings(byte LocalUserNum, int TitleId) +{ + //return; +} + +function bool ShowCustomMessageUI(byte LocalUserNum, const out array Recipients, string MessageTitle, string NonEditableMessage, optional string EditableMessage) +{ + //return ReturnValue; +} + +function bool ShowSystemErrorUI(int ErrorCode, string ErrorContext) +{ + //return ReturnValue; +} + +function bool ShowCustomErrorUI(int ErrorCode, string ErrorContext, string DialogTitle, string DialogContent) +{ + //return ReturnValue; +} + +function bool GetPlayerNicknameForPlayerId(UniqueNetId InPlayerId, out string OutPlayerNickname) +{ + //return ReturnValue; +} + +function bool GetPlayerIDForPlayerNickname(string InPlayerNickname, out UniqueNetId OutPlayerId) +{ + //return ReturnValue; +} + +function bool ReadOnlineProfilesForPlayers(array PlayerIDs) +{ + //return ReturnValue; +} + +delegate OnReadOnlineProfilesComplete(bool bWasSuccessful, array PlayerIDs, array OnlineProfiles) +{ + //return; +} + +function AddReadOnlineProfilesCompleteDelegate(delegate ReadOnlineProfileDelegate) +{ + //return; +} + +function ClearReadOnlineProfilesCompleteDelegate(delegate ReadOnlineProfileDelegate) +{ + //return; +} + +delegate OnRegisterLocalTalkerComplete(byte LocalUserNum, bool bWasSuccessful) +{ + //return; +} + +function AddRegisterLocalTalkerCompleteDelegate(delegate RegisterLocalTalkerCompleteDelegate) +{ + //return; +} + +function ClearRegisterLocalTalkerCompleteDelegate(delegate RegisterLocalTalkerCompleteDelegate) +{ + //return; +} + +delegate OnUnregisterLocalTalkerComplete(byte LocalUserNum, bool bWasSuccessful) +{ + //return; +} + +function AddUnregisterLocalTalkerCompleteDelegate(delegate UnregisterLocalTalkerCompleteDelegate) +{ + //return; +} + +function ClearUnregisterLocalTalkerCompleteDelegate(delegate UnregisterLocalTalkerCompleteDelegate) +{ + //return; +} + +delegate OnUnregisterRemoteTalkerComplete(UniqueNetId RemoteNetId, bool bWasSuccessful) +{ + //return; +} + +function AddUnregisterRemoteTalkerCompleteDelegate(delegate UnregisterRemoteTalkerCompleteDelegate) +{ + //return; +} + +function ClearUnregisterRemoteTalkerCompleteDelegate(delegate UnregisterRemoteTalkerCompleteDelegate) +{ + //return; +} + +delegate OnRemoteTalkerStatusChange(UniqueNetId RemoteNetId, bool bIsTalking) +{ + //return; +} + +function AddPlayerTalkingDelegate(delegate RemoteTalkerStatusChangeDelegate) +{ + //return; +} + +function ClearPlayerTalkingDelegate(delegate RemoteTalkerStatusChangeDelegate) +{ + //return; +} + +function bool SendReputationFeedback(byte SenderLocalUserNum, UniqueNetId ReputeeNetId, OnlineSubsystem.EReputationFeedbackType FeedbackType, string ReportText) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/OnlinePlayerStorage.uc b/exported/Engine/Classes/OnlinePlayerStorage.uc new file mode 100755 index 00000000..55c65761 --- /dev/null +++ b/exported/Engine/Classes/OnlinePlayerStorage.uc @@ -0,0 +1,142 @@ +class OnlinePlayerStorage extends Object + native; + +enum EOnlineProfilePropertyOwner +{ + OPPO_None, // 0 + OPPO_OnlineService, // 1 + OPPO_Game, // 2 + OPPO_MAX // 3 +}; + +enum EOnlinePlayerStorageAsyncState +{ + OPAS_NotStarted, // 0 + OPAS_Read, // 1 + OPAS_Write, // 2 + OPAS_Finished, // 3 + OPAS_MAX // 4 +}; + +struct native OnlineProfileSetting +{ + var OnlinePlayerStorage.EOnlineProfilePropertyOwner Owner; + var SettingsProperty ProfileSetting; + + structdefaultproperties + { + Owner=EOnlineProfilePropertyOwner.OPPO_None + ProfileSetting=(PropertyId=0,Data=(Type=ESettingsDataType.SDT_Empty,Value1=0),AdvertisementType=EOnlineDataAdvertisementType.ODAT_DontAdvertise) + } +}; + +var const int VersionNumber; +var const int VersionSettingsId; +var const int SaveCountSettingId; +var array ProfileSettings; +var array ProfileMappings; +var const OnlinePlayerStorage.EOnlinePlayerStorageAsyncState AsyncState; +var int DeviceID; + +// Export UOnlinePlayerStorage::execGetProfileSettingId(FFrame&, void* const) +native function bool GetProfileSettingId(name ProfileSettingName, out int ProfileSettingId); + +// Export UOnlinePlayerStorage::execGetProfileSettingName(FFrame&, void* const) +native function name GetProfileSettingName(int ProfileSettingId); + +// Export UOnlinePlayerStorage::execGetProfileSettingColumnHeader(FFrame&, void* const) +native function string GetProfileSettingColumnHeader(int ProfileSettingId); + +// Export UOnlinePlayerStorage::execFindProfileSettingIndex(FFrame&, void* const) +native final function int FindProfileSettingIndex(int ProfileSettingId); + +// Export UOnlinePlayerStorage::execFindProfileMappingIndex(FFrame&, void* const) +native final function int FindProfileMappingIndex(int ProfileSettingId); + +// Export UOnlinePlayerStorage::execFindProfileMappingIndexByName(FFrame&, void* const) +native final function int FindProfileMappingIndexByName(name ProfileSettingName); + +// Export UOnlinePlayerStorage::execFindDefaultProfileMappingIndexByName(FFrame&, void* const) +native static final function int FindDefaultProfileMappingIndexByName(name ProfileSettingName); + +// Export UOnlinePlayerStorage::execIsProfileSettingIdMapped(FFrame&, void* const) +native function bool IsProfileSettingIdMapped(int ProfileSettingId); + +// Export UOnlinePlayerStorage::execGetProfileSettingValue(FFrame&, void* const) +native function bool GetProfileSettingValue(int ProfileSettingId, out string Value, optional int ValueMapID = -1); + +// Export UOnlinePlayerStorage::execGetProfileSettingValueName(FFrame&, void* const) +native function name GetProfileSettingValueName(int ProfileSettingId); + +// Export UOnlinePlayerStorage::execGetProfileSettingValues(FFrame&, void* const) +native function bool GetProfileSettingValues(int ProfileSettingId, out array Values); + +// Export UOnlinePlayerStorage::execGetProfileSettingValueByName(FFrame&, void* const) +native function bool GetProfileSettingValueByName(name ProfileSettingName, out string Value); + +// Export UOnlinePlayerStorage::execSetProfileSettingValueByName(FFrame&, void* const) +native function bool SetProfileSettingValueByName(name ProfileSettingName, const out string NewValue); + +// Export UOnlinePlayerStorage::execSetProfileSettingValue(FFrame&, void* const) +native function bool SetProfileSettingValue(int ProfileSettingId, const out string NewValue); + +// Export UOnlinePlayerStorage::execGetProfileSettingValueId(FFrame&, void* const) +native function bool GetProfileSettingValueId(int ProfileSettingId, out int ValueId, optional out int ListIndex); + +// Export UOnlinePlayerStorage::execGetProfileSettingValueFromListIndex(FFrame&, void* const) +native function bool GetProfileSettingValueFromListIndex(int ProfileSettingId, int ListIndex, out int Value); + +// Export UOnlinePlayerStorage::execGetProfileSettingValueInt(FFrame&, void* const) +native function bool GetProfileSettingValueInt(int ProfileSettingId, out int Value); + +// Export UOnlinePlayerStorage::execGetProfileSettingValueFloat(FFrame&, void* const) +native function bool GetProfileSettingValueFloat(int ProfileSettingId, out float Value); + +// Export UOnlinePlayerStorage::execSetProfileSettingValueId(FFrame&, void* const) +native function bool SetProfileSettingValueId(int ProfileSettingId, int Value); + +// Export UOnlinePlayerStorage::execSetProfileSettingValueInt(FFrame&, void* const) +native function bool SetProfileSettingValueInt(int ProfileSettingId, int Value); + +// Export UOnlinePlayerStorage::execSetProfileSettingValueFloat(FFrame&, void* const) +native function bool SetProfileSettingValueFloat(int ProfileSettingId, float Value); + +// Export UOnlinePlayerStorage::execGetProfileSettingMappingType(FFrame&, void* const) +native function bool GetProfileSettingMappingType(int ProfileId, out Settings.EPropertyValueMappingType OutType); + +// Export UOnlinePlayerStorage::execGetProfileSettingMappingIds(FFrame&, void* const) +native static function bool GetProfileSettingMappingIds(int ProfileId, out array Ids); + +// Export UOnlinePlayerStorage::execGetProfileSettingRange(FFrame&, void* const) +native function bool GetProfileSettingRange(int ProfileId, out float OutMinValue, out float OutMaxValue, out float RangeIncrement, out byte bFormatAsInt); + +// Export UOnlinePlayerStorage::execSetRangedProfileSettingValue(FFrame&, void* const) +native function bool SetRangedProfileSettingValue(int ProfileId, float NewValue); + +// Export UOnlinePlayerStorage::execGetRangedProfileSettingValue(FFrame&, void* const) +native function bool GetRangedProfileSettingValue(int ProfileId, out float OutValue); + +// Export UOnlinePlayerStorage::execAddSettingInt(FFrame&, void* const) +native function AddSettingInt(int SettingId); + +// Export UOnlinePlayerStorage::execAddSettingFloat(FFrame&, void* const) +native function AddSettingFloat(int SettingId); + +// Export UOnlinePlayerStorage::execSetToDefaults(FFrame&, void* const) +native event SetToDefaults(); + +// Export UOnlinePlayerStorage::execAppendVersionToSettings(FFrame&, void* const) +native function AppendVersionToSettings(); + +// Export UOnlinePlayerStorage::execGetVersionNumber(FFrame&, void* const) +native function int GetVersionNumber(); + +// Export UOnlinePlayerStorage::execSetDefaultVersionNumber(FFrame&, void* const) +native function SetDefaultVersionNumber(); + +defaultproperties +{ + VersionNumber=-1 + SaveCountSettingId=1 + DeviceID=-1 +} \ No newline at end of file diff --git a/exported/Engine/Classes/OnlinePlaylistGameTypeProvider.uc b/exported/Engine/Classes/OnlinePlaylistGameTypeProvider.uc new file mode 100755 index 00000000..38173e75 --- /dev/null +++ b/exported/Engine/Classes/OnlinePlaylistGameTypeProvider.uc @@ -0,0 +1,10 @@ +class OnlinePlaylistGameTypeProvider extends UIResourceDataProvider + transient + config(Playlist) + perobjectconfig + hidecategories(Object,UIRoot); + +var config name PlaylistGameTypeName; +var const config localized string DisplayName; +var const config localized string Description; +var config int GameTypeId; diff --git a/exported/Engine/Classes/OnlineProfileSettings.uc b/exported/Engine/Classes/OnlineProfileSettings.uc new file mode 100755 index 00000000..5324f900 --- /dev/null +++ b/exported/Engine/Classes/OnlineProfileSettings.uc @@ -0,0 +1,204 @@ +class OnlineProfileSettings extends OnlinePlayerStorage + native; + +enum EProfileSettingID +{ + PSI_Unknown, // 0 + PSI_ControllerVibration, // 1 + PSI_YInversion, // 2 + PSI_GamerCred, // 3 + PSI_GamerRep, // 4 + PSI_VoiceMuted, // 5 + PSI_VoiceThruSpeakers, // 6 + PSI_VoiceVolume, // 7 + PSI_GamerPictureKey, // 8 + PSI_GamerMotto, // 9 + PSI_GamerTitlesPlayed, // 10 + PSI_GamerAchievementsEarned, // 11 + PSI_GameDifficulty, // 12 + PSI_ControllerSensitivity, // 13 + PSI_PreferredColor1, // 14 + PSI_PreferredColor2, // 15 + PSI_AutoAim, // 16 + PSI_AutoCenter, // 17 + PSI_MovementControl, // 18 + PSI_RaceTransmission, // 19 + PSI_RaceCameraLocation, // 20 + PSI_RaceBrakeControl, // 21 + PSI_RaceAcceleratorControl, // 22 + PSI_GameCredEarned, // 23 + PSI_GameAchievementsEarned, // 24 + PSI_EndLiveIds, // 25 + PSI_ProfileVersionNum, // 26 + PSI_ProfileSaveCount, // 27 + PSI_MAX // 28 +}; + +enum EProfileDifficultyOptions +{ + PDO_Normal, // 0 + PDO_Easy, // 1 + PDO_Hard, // 2 + PDO_MAX // 3 +}; + +enum EProfileControllerSensitivityOptions +{ + PCSO_Medium, // 0 + PCSO_Low, // 1 + PCSO_High, // 2 + PCSO_MAX // 3 +}; + +enum EProfilePreferredColorOptions +{ + PPCO_None, // 0 + PPCO_Black, // 1 + PPCO_White, // 2 + PPCO_Yellow, // 3 + PPCO_Orange, // 4 + PPCO_Pink, // 5 + PPCO_Red, // 6 + PPCO_Purple, // 7 + PPCO_Blue, // 8 + PPCO_Green, // 9 + PPCO_Brown, // 10 + PPCO_Silver, // 11 + PPCO_MAX // 12 +}; + +enum EProfileAutoAimOptions +{ + PAAO_Off, // 0 + PAAO_On, // 1 + PAAO_MAX // 2 +}; + +enum EProfileAutoCenterOptions +{ + PACO_Off, // 0 + PACO_On, // 1 + PACO_MAX // 2 +}; + +enum EProfileMovementControlOptions +{ + PMCO_L_Thumbstick, // 0 + PMCO_R_Thumbstick, // 1 + PMCO_MAX // 2 +}; + +enum EProfileRaceTransmissionOptions +{ + PRTO_Auto, // 0 + PRTO_Manual, // 1 + PRTO_MAX // 2 +}; + +enum EProfileRaceCameraLocationOptions +{ + PRCLO_Behind, // 0 + PRCLO_Front, // 1 + PRCLO_Inside, // 2 + PRCLO_MAX // 3 +}; + +enum EProfileRaceBrakeControlOptions +{ + PRBCO_Trigger, // 0 + PRBCO_Button, // 1 + PRBCO_MAX // 2 +}; + +enum EProfileRaceAcceleratorControlOptions +{ + PRACO_Trigger, // 0 + PRACO_Button, // 1 + PRACO_MAX // 2 +}; + +enum EProfileYInversionOptions +{ + PYIO_Off, // 0 + PYIO_On, // 1 + PYIO_MAX // 2 +}; + +enum EProfileXInversionOptions +{ + PXIO_Off, // 0 + PXIO_On, // 1 + PXIO_MAX // 2 +}; + +enum EProfileOmniDirEvadeOptions +{ + PODI_Off, // 0 + PODI_On, // 1 + PODI_MAX // 2 +}; + +enum EProfileControllerVibrationToggleOptions +{ + PCVTO_Off, // 0 + PCVTO_IgnoreThis, // 1 + PCVTO_IgnoreThis2, // 2 + PCVTO_On, // 3 + PCVTO_MAX // 4 +}; + +enum EProfileVoiceThruSpeakersOptions +{ + PVTSO_Off, // 0 + PVTSO_On, // 1 + PVTSO_Both, // 2 + PVTSO_MAX // 3 +}; + +var array ProfileSettingIds; +var array DefaultSettings; +var const array OwnerMappings; + +// Export UOnlineProfileSettings::execGetProfileSettingDefaultId(FFrame&, void* const) +native function bool GetProfileSettingDefaultId(int ProfileSettingId, out int DefaultId, out int ListIndex); + +// Export UOnlineProfileSettings::execGetProfileSettingDefaultInt(FFrame&, void* const) +native function bool GetProfileSettingDefaultInt(int ProfileSettingId, out int DefaultInt); + +// Export UOnlineProfileSettings::execGetProfileSettingDefaultFloat(FFrame&, void* const) +native function bool GetProfileSettingDefaultFloat(int ProfileSettingId, out float DefaultFloat); + +// Export UOnlineProfileSettings::execSetToDefaults(FFrame&, void* const) +native event SetToDefaults(); + +// Export UOnlineProfileSettings::execAppendVersionToReadIds(FFrame&, void* const) +native function AppendVersionToReadIds(); + +event ModifyAvailableProfileSettings() +{ + //return; +} + +defaultproperties +{ + OwnerMappings[0]=(Id=0,Name="None") + OwnerMappings[1]=(Id=1,Name="Online Service Setting") + OwnerMappings[2]=(Id=2,Name="Game Setting") + VersionSettingsId=26 + ProfileMappings[0]=(Id=1,Name="Controller Vibration",ColumnHeaderText="",MappingType=EPropertyValueMappingType.PVMT_IdMapped,ValueMappings=/* ERROR: System.Exception */,Id=3,Name="Off") + ProfileMappings[1]=(Id=0,Name="On") + ProfileMappings[2]=(PredefinedValues=none,MinVal=0.0000000,MaxVal=0.0000000,RangeIncrement=0.0000000) + ProfileMappings[3]=(Id=2,Name="Invert Y",ColumnHeaderText="",MappingType=EPropertyValueMappingType.PVMT_IdMapped,ValueMappings=/* ERROR: System.Exception */,Id=0,Name="Off") + ProfileMappings[4]=(Id=1,Name="On") + ProfileMappings[5]=(PredefinedValues=none,MinVal=0.0000000,MaxVal=0.0000000,RangeIncrement=0.0000000) + ProfileMappings[6]=(Id=5,Name="Mute Voice",ColumnHeaderText="",MappingType=EPropertyValueMappingType.PVMT_IdMapped,ValueMappings=/* ERROR: System.Exception */,Id=0,Name="No") + ProfileMappings[7]=(Id=1,Name="Yes") + ProfileMappings[8]=(PredefinedValues=none,MinVal=0.0000000,MaxVal=0.0000000,RangeIncrement=0.0000000) + ProfileMappings[9]=(Id=6,Name="Voice Via Speakers",ColumnHeaderText="",MappingType=EPropertyValueMappingType.PVMT_IdMapped,ValueMappings=/* ERROR: System.Exception */,Id=0,Name="Off") + ProfileMappings[10]=(Id=1,Name="On") + ProfileMappings[11]=(Id=2,Name="Both") + ProfileMappings[12]=(PredefinedValues=none,MinVal=0.0000000,MaxVal=0.0000000,RangeIncrement=0.0000000) + ProfileMappings[13]=(Id=7,Name="Voice Volume",ColumnHeaderText="",MappingType=EPropertyValueMappingType.PVMT_RawValue,ValueMappings=none,PredefinedValues=none,MinVal=0.0000000,MaxVal=0.0000000,RangeIncrement=0.0000000) + ProfileMappings[14]=(Id=12,Name="Difficulty Level",ColumnHeaderText="",MappingType=EPropertyValueMappingType.PVMT_IdMapped,ValueMappings=/* ERROR: System.Exception */,Id=0,Name="Normal") + ProfileMappings[15]=(Id=1,Name="Easy") +} \ No newline at end of file diff --git a/exported/Engine/Classes/OnlineRecentPlayersList.uc b/exported/Engine/Classes/OnlineRecentPlayersList.uc new file mode 100755 index 00000000..e5e130fc --- /dev/null +++ b/exported/Engine/Classes/OnlineRecentPlayersList.uc @@ -0,0 +1,281 @@ +class OnlineRecentPlayersList extends Object + config(Engine); + +struct RecentParty +{ + var UniqueNetId PartyLeader; + var array PartyMembers; + + structdefaultproperties + { + PartyLeader=(Uid=()) + PartyMembers=none + } +}; + +struct CurrentPlayerMet +{ + var int TeamNum; + var int Skill; + var UniqueNetId NetId; + + structdefaultproperties + { + TeamNum=0 + Skill=0 + NetId=(Uid=()) + } +}; + +var array RecentPlayers; +var array RecentParties; +var RecentParty LastParty; +var config int MaxRecentPlayers; +var config int MaxRecentParties; +var int RecentPlayersAddIndex; +var int RecentPartiesAddIndex; +var private array CurrentPlayers; + +function AddPlayerToRecentPlayers(UniqueNetId NewPlayer) +{ + local int FindIndex; + + FindIndex = RecentPlayers.Find('Uid', NewPlayer.Uid); + // End:0xCB + if(FindIndex == -1) + { + // End:0x71 + if(RecentPlayersAddIndex >= MaxRecentPlayers) + { + RecentPlayersAddIndex = 0; + } + // End:0xA3 + if((RecentPlayersAddIndex + 1) >= RecentPlayers.Length) + { + RecentPlayers.Length = RecentPlayersAddIndex + 1; + } + RecentPlayers[RecentPlayersAddIndex] = NewPlayer; + RecentPlayersAddIndex++; + } + //return; +} + +function ClearRecentPlayers() +{ + RecentPlayersAddIndex = 0; + RecentPlayers.Length = 0; + //return; +} + +function AddPartyToRecentParties(UniqueNetId PartyLeader, const out array PartyMembers) +{ + local int FindIndex; + + FindIndex = RecentParties.Find('PartyLeader', PartyLeader); + // End:0xFB + if(FindIndex == -1) + { + // End:0x5E + if(RecentPartiesAddIndex >= MaxRecentParties) + { + RecentPartiesAddIndex = 0; + } + // End:0x90 + if((RecentPartiesAddIndex + 1) >= RecentParties.Length) + { + RecentParties.Length = RecentPartiesAddIndex + 1; + } + RecentParties[RecentPartiesAddIndex].PartyLeader = PartyLeader; + RecentParties[RecentPartiesAddIndex].PartyMembers = PartyMembers; + RecentPartiesAddIndex++; + } + //return; +} + +function ClearRecentParties() +{ + RecentPartiesAddIndex = 0; + RecentParties.Length = 0; + //return; +} + +function GetPlayersFromRecentParties(out array Players) +{ + local int PartyIndex, MemberIndex, AddMemberAt; + + Players.Length = 0; + AddMemberAt = 0; + PartyIndex = 0; + J0x22: + + // End:0xF1 [Loop If] + if(PartyIndex < RecentParties.Length) + { + MemberIndex = 0; + J0x45: + + // End:0xE3 [Loop If] + if(MemberIndex < RecentParties[PartyIndex].PartyMembers.Length) + { + Players.Length = AddMemberAt + 1; + Players[AddMemberAt] = RecentParties[PartyIndex].PartyMembers[MemberIndex]; + MemberIndex++; + // [Loop Continue] + goto J0x45; + } + PartyIndex++; + // [Loop Continue] + goto J0x22; + } + //return; +} + +function GetPlayersFromCurrentPlayers(out array Players) +{ + local int PlayerIndex; + + Players.Length = 0; + PlayerIndex = 0; + J0x17: + + // End:0x70 [Loop If] + if(PlayerIndex < CurrentPlayers.Length) + { + Players.AddItem(CurrentPlayers[PlayerIndex].NetId); + PlayerIndex++; + // [Loop Continue] + goto J0x17; + } + //return; +} + +function int GetSkillForCurrentPlayer(UniqueNetId Player) +{ + local int PlayerIndex; + + PlayerIndex = 0; + J0x0B: + + // End:0x93 [Loop If] + if(PlayerIndex < CurrentPlayers.Length) + { + // End:0x85 + if(CurrentPlayers[PlayerIndex].NetId == Player) + { + return CurrentPlayers[PlayerIndex].Skill; + } + PlayerIndex++; + // [Loop Continue] + goto J0x0B; + } + return 0; + //return ReturnValue; +} + +function int GetTeamForCurrentPlayer(UniqueNetId Player) +{ + local int PlayerIndex; + + PlayerIndex = 0; + J0x0B: + + // End:0x93 [Loop If] + if(PlayerIndex < CurrentPlayers.Length) + { + // End:0x85 + if(CurrentPlayers[PlayerIndex].NetId == Player) + { + return CurrentPlayers[PlayerIndex].TeamNum; + } + PlayerIndex++; + // [Loop Continue] + goto J0x0B; + } + return 255; + //return ReturnValue; +} + +function SetLastParty(UniqueNetId PartyLeader, const out array PartyMembers) +{ + LastParty.PartyLeader = PartyLeader; + LastParty.PartyMembers = PartyMembers; + //return; +} + +function bool ShowRecentPlayerList(byte LocalUserNum, string Title, string Description) +{ + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xC9 + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterfaceEx, OnlinePlayerInterfaceEx(none))) + { + return OnlineSub.PlayerInterfaceEx.ShowCustomPlayersUI(LocalUserNum, RecentPlayers, Title, Description); + } + return false; + //return ReturnValue; +} + +function bool ShowRecentPartiesPlayerList(byte LocalUserNum, string Title, string Description) +{ + local OnlineSubsystem OnlineSub; + local array Players; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xDC + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterfaceEx, OnlinePlayerInterfaceEx(none))) + { + GetPlayersFromRecentParties(Players); + return OnlineSub.PlayerInterfaceEx.ShowCustomPlayersUI(LocalUserNum, Players, Title, Description); + } + return false; + //return ReturnValue; +} + +function bool ShowLastPartyPlayerList(byte LocalUserNum, string Title, string Description) +{ + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xDC + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterfaceEx, OnlinePlayerInterfaceEx(none))) + { + return OnlineSub.PlayerInterfaceEx.ShowCustomPlayersUI(LocalUserNum, LastParty.PartyMembers, Title, Description); + } + return false; + //return ReturnValue; +} + +function bool ShowCurrentPlayersList(byte LocalUserNum, string Title, string Description) +{ + local OnlineSubsystem OnlineSub; + local array Players; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xDC + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterfaceEx, OnlinePlayerInterfaceEx(none))) + { + GetPlayersFromCurrentPlayers(Players); + return OnlineSub.PlayerInterfaceEx.ShowCustomPlayersUI(LocalUserNum, Players, Title, Description); + } + return false; + //return ReturnValue; +} + +function SetCurrentPlayersList(const array Players) +{ + CurrentPlayers = Players; + //return; +} + +function int GetCurrentPlayersListCount() +{ + return CurrentPlayers.Length; + //return ReturnValue; +} + +defaultproperties +{ + MaxRecentPlayers=100 + MaxRecentParties=5 +} \ No newline at end of file diff --git a/exported/Engine/Classes/OnlineSocialInterface.uc b/exported/Engine/Classes/OnlineSocialInterface.uc new file mode 100755 index 00000000..38329187 --- /dev/null +++ b/exported/Engine/Classes/OnlineSocialInterface.uc @@ -0,0 +1,62 @@ +interface OnlineSocialInterface extends Interface + abstract; + +function bool QuerySocialPostPrivileges() +{ + //return ReturnValue; +} + +delegate OnQuerySocialPostPrivilegesCompleted(bool bWasSuccessful, SocialPostPrivileges PostPrivileges) +{ + //return; +} + +function AddQuerySocialPostPrivilegesCompleted(delegate PostPrivilegesDelegate) +{ + //return; +} + +function ClearQuerySocialPostPrivilegesCompleted(delegate PostPrivilegesDelegate) +{ + //return; +} + +function bool PostImage(byte LocalUserNum, const out SocialPostImageInfo PostImageInfo, const array FullImage) +{ + //return ReturnValue; +} + +delegate OnPostImageCompleted(byte LocalUserNum, bool bWasSuccessful) +{ + //return; +} + +function AddPostImageCompleted(byte LocalUserNum, delegate PostImageDelegate) +{ + //return; +} + +function ClearPostImageCompleted(byte LocalUserNum, delegate PostImageDelegate) +{ + //return; +} + +function bool PostLink(byte LocalUserNum, const out SocialPostLinkInfo PostLinkInfo) +{ + //return ReturnValue; +} + +delegate OnPostLinkCompleted(byte LocalUserNum, bool bWasSuccessful) +{ + //return; +} + +function AddPostLinkCompleted(byte LocalUserNum, delegate PostLinkDelegate) +{ + //return; +} + +function ClearPostLinkCompleted(byte LocalUserNum, delegate PostLinkDelegate) +{ + //return; +} diff --git a/exported/Engine/Classes/OnlineStats.uc b/exported/Engine/Classes/OnlineStats.uc new file mode 100755 index 00000000..7db56db7 --- /dev/null +++ b/exported/Engine/Classes/OnlineStats.uc @@ -0,0 +1,50 @@ +class OnlineStats extends Object + abstract + native; + +struct native OnlineStatsRow +{ + var const UniqueNetId PlayerID; + var const SettingsData Rank; + var const string NickName; + var array StatValues; + + structdefaultproperties + { + PlayerID=(Uid=()) + Rank=(Type=ESettingsDataType.SDT_Empty,Value1=0) + NickName="" + StatValues=none + } +}; + +struct native ColumnMetaData +{ + var string ColumnName; + var string StatName; + + structdefaultproperties + { + ColumnName="" + StatName="" + } +}; + +var const int TotalRowsInView; +var array Rows; +var array ColumnData; + +// Export UOnlineStats::execGetIntStatValueForPlayer(FFrame&, void* const) +native function bool GetIntStatValueForPlayer(UniqueNetId PlayerID, const string StatName, out int StatValue); + +// Export UOnlineStats::execGetFloatStatValueForPlayer(FFrame&, void* const) +native function bool GetFloatStatValueForPlayer(UniqueNetId PlayerID, const string StatName, out float StatValue); + +// Export UOnlineStats::execGetStatValueForPlayerAsString(FFrame&, void* const) +native function bool GetStatValueForPlayerAsString(UniqueNetId PlayerID, const string StatName, out string StatValue); + +// Export UOnlineStats::execIsStatZero(FFrame&, void* const) +native function bool IsStatZero(UniqueNetId PlayerID, const string StatName); + +// Export UOnlineStats::execGetRankForPlayer(FFrame&, void* const) +native function int GetRankForPlayer(UniqueNetId PlayerID); diff --git a/exported/Engine/Classes/OnlineStatsInterface.uc b/exported/Engine/Classes/OnlineStatsInterface.uc new file mode 100755 index 00000000..71d5d5e7 --- /dev/null +++ b/exported/Engine/Classes/OnlineStatsInterface.uc @@ -0,0 +1,152 @@ +interface OnlineStatsInterface extends Interface + abstract; + +function bool ReadOnlineStatsForPlayer(byte LocalUserNum, OnlineStatsRead StatsRead) +{ + //return ReturnValue; +} + +function bool ReadOnlineStats(byte LocalUserNum, const out array Players, OnlineStatsRead StatsRead) +{ + //return ReturnValue; +} + +function bool ReadOnlineStatForFriends(byte LocalUserNum, OnlineStatsRead StatsRead, optional bool FavoriteFriendsOnly = false, optional int NumToRead = 100) +{ + //return ReturnValue; +} + +function bool ReadOnlineStatsByRank(byte LocalUserNum, OnlineStatsRead StatsRead, optional int StartIndex = 1, optional int NumToRead = 100) +{ + //return ReturnValue; +} + +function bool ReadOnlineStatsByRankAroundPlayer(byte LocalUserNum, OnlineStatsRead StatsRead, optional int NumRows = 10) +{ + //return ReturnValue; +} + +delegate OnReadOnlineStatsComplete(bool bWasSuccessful) +{ + //return; +} + +function AddReadOnlineStatsCompleteDelegate(delegate ReadOnlineStatsCompleteDelegate) +{ + //return; +} + +function ClearReadOnlineStatsCompleteDelegate(delegate ReadOnlineStatsCompleteDelegate) +{ + //return; +} + +function FreeStats(OnlineStatsRead StatsRead) +{ + //return; +} + +function bool WriteOnlineStats(name SessionName, UniqueNetId Player, OnlineStatsWrite StatsWrite) +{ + //return ReturnValue; +} + +function bool FlushOnlineStats(name SessionName) +{ + //return ReturnValue; +} + +delegate OnFlushOnlineStatsComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddFlushOnlineStatsCompleteDelegate(delegate FlushOnlineStatsCompleteDelegate) +{ + //return; +} + +function ClearFlushOnlineStatsCompleteDelegate(delegate FlushOnlineStatsCompleteDelegate) +{ + //return; +} + +function bool WriteOnlinePlayerScores(name SessionName, int LeaderboardId, const out array PlayerScores) +{ + //return ReturnValue; +} + +function string GetHostStatGuid() +{ + //return ReturnValue; +} + +function bool RegisterHostStatGuid(const out string HostStatGuid) +{ + //return ReturnValue; +} + +delegate OnRegisterHostStatGuidComplete(bool bWasSuccessful) +{ + //return; +} + +function AddRegisterHostStatGuidCompleteDelegate(delegate RegisterHostStatGuidCompleteDelegate) +{ + //return; +} + +function ClearRegisterHostStatGuidCompleteDelegateDelegate(delegate RegisterHostStatGuidCompleteDelegate) +{ + //return; +} + +function string GetClientStatGuid() +{ + //return ReturnValue; +} + +function bool RegisterStatGuid(UniqueNetId PlayerID, const out string ClientStatGuid) +{ + //return ReturnValue; +} + +function CalcAggregateSkill(array Mus, array Sigmas, out Double OutAggregateMu, out Double OutAggregateSigma) +{ + //return; +} + +delegate OnStatisticChanged(UniqueNetId PlayerNetId, name StatName, string NewStatValue) +{ + //return; +} + +function SubscribeToStatisticEvent(byte LocalUserNum, UniqueNetId PlayerNetId, name StatName, delegate EventDelegate) +{ + //return; +} + +function UnsubscribeToStatisticEvent(byte LocalUserNum, UniqueNetId PlayerNetId, name StatName) +{ + //return; +} + +function bool SendPlayerSessionStart(byte LocalUserNum, string MultiplayerCorrelationId, int GameplayModeId, int DifficultyLevelId) +{ + //return ReturnValue; +} + +function bool SendPlayerSessionEnd(byte LocalUserNum, string MultiplayerCorrelationId, int GameplayModeId, int DifficultyLevelId, int ExitStatusId) +{ + //return ReturnValue; +} + +function bool SendPlayerSessionPause(byte LocalUserNum, string MultiplayerCorrelationId) +{ + //return ReturnValue; +} + +function bool SendPlayerSessionResume(byte LocalUserNum, string MultiplayerCorrelationId, int GameplayModeId, int DifficultyLevelId) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/OnlineStatsRead.uc b/exported/Engine/Classes/OnlineStatsRead.uc new file mode 100755 index 00000000..8421ba78 --- /dev/null +++ b/exported/Engine/Classes/OnlineStatsRead.uc @@ -0,0 +1,10 @@ +class OnlineStatsRead extends OnlineStats + abstract + native; + +var string LeaderboardName; + +event OnReadComplete() +{ + //return; +} diff --git a/exported/Engine/Classes/OnlineStatsWrite.uc b/exported/Engine/Classes/OnlineStatsWrite.uc new file mode 100755 index 00000000..cf973ad5 --- /dev/null +++ b/exported/Engine/Classes/OnlineStatsWrite.uc @@ -0,0 +1,12 @@ +class OnlineStatsWrite extends OnlineStats + abstract + native; + +// Export UOnlineStatsWrite::execSetFloatStat(FFrame&, void* const) +native function SetFloatStat(const string StatName, float Value); + +// Export UOnlineStatsWrite::execSetIntStat(FFrame&, void* const) +native function SetIntStat(const string StatName, int Value); + +// Export UOnlineStatsWrite::execSetStringStat(FFrame&, void* const) +native function SetStringStat(const string StatName, const out string Value); diff --git a/exported/Engine/Classes/OnlineSubsystem.uc b/exported/Engine/Classes/OnlineSubsystem.uc new file mode 100755 index 00000000..e66890ef --- /dev/null +++ b/exported/Engine/Classes/OnlineSubsystem.uc @@ -0,0 +1,1380 @@ +class OnlineSubsystem extends Object + abstract + native + config(Engine); + +const PIT_Game = 0x0001; +const PIT_App = 0x0002; +const PIT_Consumable = 0x0004; +const PIT_Durable = 0x0008; +const PIT_GameDemo = 0x0010; +const PIT_All = 0x001F; + +enum ELoginStatus +{ + LS_NotLoggedIn, // 0 + LS_UsingLocalProfile, // 1 + LS_LoggedIn, // 2 + LS_MAX // 3 +}; + +enum EFeaturePrivilege +{ + FP_OnlinePlay, // 0 + FP_CommunicationText, // 1 + FP_CommunicationVideo, // 2 + FP_CommunicationVoice, // 3 + FP_ShareUserCreatedContent, // 4 + FP_PurchaseContent, // 5 + FP_ViewPlayerProfile, // 6 + FP_ShowPresenceInformation, // 7 + FP_RecordDVRClips, // 8 + FP_CloudStorage, // 9 + FP_PremiumContent, // 10 + FP_PremiumVideoContent, // 11 + FP_BrowseInternet, // 12 + FP_SocialNetworkSharing, // 13 + FP_KinectSharing, // 14 + FP_FitnessUpload, // 15 + FP_MAX // 16 +}; + +enum EFeaturePrivilegeLevel +{ + FPL_Disabled, // 0 + FPL_EnabledFriendsOnly, // 1 + FPL_Enabled, // 2 + FPL_MAX // 3 +}; + +enum EReputationFeedbackType +{ + RFBT_CommunicationsAbusiveVoice,// 0 + RFBT_CommunicationsInappropriateVideo,// 1 + RFBT_FairPlayCheater, // 2 + RFBT_FairPlayKicked, // 3 + RFBT_FairPlayKillsTeammates, // 4 + RFBT_FairPlayQuitter, // 5 + RFBT_FairPlayTampering, // 6 + RFBT_InappropriateUserGeneratedContent,// 7 + RFBT_PositiveHelpfulPlayer, // 8 + RFBT_PositiveHighQualityUserGeneratedContent,// 9 + RFBT_PositiveSkilledPlayer, // 10 + RFBT_MAX // 11 +}; + +enum ENetworkNotificationPosition +{ + NNP_TopLeft, // 0 + NNP_TopCenter, // 1 + NNP_TopRight, // 2 + NNP_CenterLeft, // 3 + NNP_Center, // 4 + NNP_CenterRight, // 5 + NNP_BottomLeft, // 6 + NNP_BottomCenter, // 7 + NNP_BottomRight, // 8 + NNP_MAX // 9 +}; + +enum EOnlineGameState +{ + OGS_NoSession, // 0 + OGS_Pending, // 1 + OGS_Starting, // 2 + OGS_InProgress, // 3 + OGS_Ending, // 4 + OGS_Ended, // 5 + OGS_MAX // 6 +}; + +enum EOnlineEnumerationReadState +{ + OERS_NotStarted, // 0 + OERS_InProgress, // 1 + OERS_Done, // 2 + OERS_Failed, // 3 + OERS_MAX // 4 +}; + +enum EOnlineAccountTier +{ + OAT_Unknown, // 0 + OAT_NewUser, // 1 + OAT_Silver, // 2 + OAT_Gold, // 3 + OAT_FamilyGold, // 4 + OAT_MAX // 5 +}; + +enum EOnlineFriendState +{ + OFS_Offline, // 0 + OFS_Online, // 1 + OFS_Away, // 2 + OFS_Busy, // 3 + OFS_MAX // 4 +}; + +enum EOnlineCreateGameSessionFlag +{ + OCGSF_New, // 0 + OCGSF_ReSubmit, // 1 + OCGSF_MAX // 2 +}; + +enum EOnlineContentType +{ + OCT_Downloaded, // 0 + OCT_SaveGame, // 1 + OCT_MAX // 2 +}; + +enum EOnlineServerConnectionStatus +{ + OSCS_NotConnected, // 0 + OSCS_Connected, // 1 + OSCS_ConnectionDropped, // 2 + OSCS_NoNetworkConnection, // 3 + OSCS_ServiceUnavailable, // 4 + OSCS_UpdateRequired, // 5 + OSCS_ServersTooBusy, // 6 + OSCS_DuplicateLoginDetected, // 7 + OSCS_InvalidUser, // 8 + OSCS_Banned, // 9 + OSCS_TooYoung, // 10 + OSCS_PSNUnavailable, // 11 + OSCS_MAX // 12 +}; + +enum ENATType +{ + NAT_Unknown, // 0 + NAT_Open, // 1 + NAT_Moderate, // 2 + NAT_Strict, // 3 + NAT_MAX // 4 +}; + +enum ELanBeaconState +{ + LANB_NotUsingLanBeacon, // 0 + LANB_Hosting, // 1 + LANB_Searching, // 2 + LANB_MAX // 3 +}; + +enum EOnlineAccountCreateStatus +{ + OACS_CreateSuccessful, // 0 + OACS_UnknownError, // 1 + OACS_InvalidUserName, // 2 + OACS_InvalidPassword, // 3 + OACS_InvalidUniqueUserName, // 4 + OACS_UniqueUserNameInUse, // 5 + OACS_ServiceUnavailable, // 6 + OACS_MAX // 7 +}; + +enum EOnlineFileType +{ + OFT_Unknown, // 0 + OFT_Binary, // 1 + OFT_Json, // 2 + OFT_MAX // 3 +}; + +enum EAchievementRewardType +{ + ART_Unknown, // 0 + ART_Gamerscore, // 1 + ART_InApp, // 2 + ART_Art, // 3 + ART_MAX // 4 +}; + +enum EAchievementMediaAssetType +{ + AMAT_Unknown, // 0 + AMAT_Icon, // 1 + AMAT_Art, // 2 + AMAT_MAX // 3 +}; + +enum EAchievementUnlockType +{ + AUT_Unknown, // 0 + AUT_All, // 1 + AUT_Persistent, // 2 + AUT_Challenge, // 3 + AUT_MAX // 4 +}; + +enum EAchievementParticipationType +{ + EAPT_Unknown, // 0 + EAPT_Individual, // 1 + EAPT_Group, // 2 + EAPT_MAX // 3 +}; + +enum EAchievementProgressState +{ + APS_Unknown, // 0 + APS_Achieved, // 1 + APS_NotStarted, // 2 + APS_InProgress, // 3 + APS_MAX // 4 +}; + +enum ECatalogSortOrder +{ + CSO_FreeAndPaidCountDaily, // 0 + CSO_PaidCountAllTime, // 1 + CSO_PaidCountDail, // 2 + CSO_DigitalReleaseDate, // 3 + CSO_ReleaseDate, // 4 + CSO_UserRatings, // 5 + CSO_MAX // 6 +}; + +enum EMediaItemType +{ + MIT_Unknown, // 0 + MIT_Game, // 1 + MIT_Application, // 2 + MIT_GameContent, // 3 + MIT_GameConsumable, // 4 + MIT_Subscription, // 5 + MIT_MAX // 6 +}; + +enum EInventoryItemState +{ + IIS_Unknown, // 0 + IIS_All, // 1 + IIS_Enabled, // 2 + IIS_Suspended, // 3 + IIS_Expired, // 4 + IIS_Canceled, // 5 + IIS_MAX // 6 +}; + +enum EOnlineNewsType +{ + ONT_Unknown, // 0 + ONT_GameNews, // 1 + ONT_ContentAnnouncements, // 2 + ONT_Misc, // 3 + ONT_MAX // 4 +}; + +enum ESessionMemberStatus +{ + DSMS_Reserved, // 0 + DSMS_Inactive, // 1 + DSMS_Ready, // 2 + DSMS_Active, // 3 + DSMS_MAX // 4 +}; + +struct native UniqueNetId +{ + var QWord Uid; + + structdefaultproperties + { + Uid=() + } +}; + +struct native FriendsQuery +{ + var UniqueNetId UniqueId; + var bool bIsFriend; + + structdefaultproperties + { + UniqueId=(Uid=()) + bIsFriend=false + } +}; + +struct native OnlineProfile +{ + var string UserId; + var OnlineSubsystem.EOnlineAccountTier AccountTier; + var int Gamerscore; + var string ApplicationDisplayName; + var string GameDisplayName; + var string ApplicationDisplayPictureResizeURL; + var string GameDisplayPictureResizeURL; + + structdefaultproperties + { + UserId="" + AccountTier=EOnlineAccountTier.OAT_Unknown + Gamerscore=0 + ApplicationDisplayName="" + GameDisplayName="" + ApplicationDisplayPictureResizeURL="" + GameDisplayPictureResizeURL="" + } +}; + +struct native OnlineFriend +{ + var const UniqueNetId UniqueId; + var const QWord SessionId; + var const string NickName; + var const string PresenceInfo; + var const string AdditionalPresenceInfo; + var const OnlineSubsystem.EOnlineFriendState FriendState; + var const bool bIsOnline; + var const bool bIsPlaying; + var const bool bIsPlayingThisGame; + var const bool bIsPlayingPartnerGame; + var const bool bIsJoinable; + var const bool bHasVoiceSupport; + var bool bHaveInvited; + var const bool bHasInvitedYou; + + structdefaultproperties + { + UniqueId=(Uid=()) + SessionId=() + NickName="" + PresenceInfo="" + AdditionalPresenceInfo="" + FriendState=EOnlineFriendState.OFS_Offline + bIsOnline=false + bIsPlaying=false + bIsPlayingThisGame=false + bIsPlayingPartnerGame=false + bIsJoinable=false + bHasVoiceSupport=false + bHaveInvited=false + bHasInvitedYou=false + } +}; + +struct native OnlineContent +{ + var OnlineSubsystem.EOnlineContentType ContentType; + var byte UserIndex; + var bool bIsCorrupt; + var int DeviceID; + var int LicenseMask; + var string FriendlyName; + var string Filename; + var string ContentPath; + var array ContentPackages; + var array ContentFiles; + + structdefaultproperties + { + ContentType=EOnlineContentType.OCT_Downloaded + UserIndex=0 + bIsCorrupt=false + DeviceID=0 + LicenseMask=0 + FriendlyName="" + Filename="" + ContentPath="" + ContentPackages=none + ContentFiles=none + } +}; + +struct native OnlineCrossTitleContent extends OnlineContent +{ + var int TitleId; +}; + +struct native OnlineRegistrant +{ + var const UniqueNetId PlayerNetId; + + structdefaultproperties + { + PlayerNetId=(Uid=()) + } +}; + +struct native OnlineArbitrationRegistrant extends OnlineRegistrant +{ + var const QWord MachineId; + var const int Trustworthiness; +}; + +struct SpeechRecognizedWord +{ + var int WordId; + var string WordText; + var float Confidence; + + structdefaultproperties + { + WordId=0 + WordText="" + Confidence=0.0000000 + } +}; + +struct native OnlinePlayerScore +{ + var UniqueNetId PlayerID; + var int TeamID; + var int Score; + + structdefaultproperties + { + PlayerID=(Uid=()) + TeamID=0 + Score=0 + } +}; + +struct native LocalTalker +{ + var bool bHasVoice; + var bool bHasNetworkedVoice; + var bool bIsRecognizingSpeech; + var bool bWasTalking; + var bool bIsTalking; + var bool bIsRegistered; + var float TimeSinceLastPacket; + + structdefaultproperties + { + bHasVoice=false + bHasNetworkedVoice=false + bIsRecognizingSpeech=false + bWasTalking=false + bIsTalking=false + bIsRegistered=false + TimeSinceLastPacket=0.0000000 + } +}; + +struct native RemoteTalker +{ + var UniqueNetId TalkerId; + var float LastNotificationTime; + var bool bWasTalking; + var bool bIsTalking; + var bool bIsRegistered; + var float TimeSinceLastPacket; + var float TimeSinceJoining; + + structdefaultproperties + { + TalkerId=(Uid=()) + LastNotificationTime=0.0000000 + bWasTalking=false + bIsTalking=false + bIsRegistered=false + TimeSinceLastPacket=0.0000000 + TimeSinceJoining=0.0000000 + } +}; + +struct native OnlineFriendMessage +{ + var UniqueNetId SendingPlayerId; + var string SendingPlayerNick; + var bool bIsFriendInvite; + var bool bIsGameInvite; + var bool bWasAccepted; + var bool bWasDenied; + var string Message; + + structdefaultproperties + { + SendingPlayerId=(Uid=()) + SendingPlayerNick="" + bIsFriendInvite=false + bIsGameInvite=false + bWasAccepted=false + bWasDenied=false + Message="" + } +}; + +struct native NamedInterface +{ + var name InterfaceName; + var Object InterfaceObject; + + structdefaultproperties + { + InterfaceName="None" + InterfaceObject=none + } +}; + +struct native NamedInterfaceDef +{ + var name InterfaceName; + var string InterfaceClassName; + + structdefaultproperties + { + InterfaceName="None" + InterfaceClassName="" + } +}; + +struct native EmsFile +{ + var string Hash; + var string DLName; + var string Filename; + var int FileSize; + + structdefaultproperties + { + Hash="" + DLName="" + Filename="" + FileSize=0 + } +}; + +struct native TitleFile +{ + var string Filename; + var OnlineSubsystem.EOnlineEnumerationReadState AsyncState; + var array Data; + + structdefaultproperties + { + Filename="" + AsyncState=EOnlineEnumerationReadState.OERS_NotStarted + Data=none + } +}; + +struct native CommunityContentFile +{ + var int ContentId; + var string RemoteContentPath; + var OnlineSubsystem.EOnlineFileType ContentType; + var int FileSize; + var UniqueNetId Owner; + var int DownloadCount; + var float AverageRating; + var int RatingCount; + var int LastRatingGiven; + var string LocalFilePath; + + structdefaultproperties + { + ContentId=0 + RemoteContentPath="" + ContentType=EOnlineFileType.OFT_Unknown + FileSize=0 + Owner=(Uid=()) + DownloadCount=0 + AverageRating=0.0000000 + RatingCount=0 + LastRatingGiven=0 + LocalFilePath="" + } +}; + +struct native CommunityContentMetadata +{ + var OnlineSubsystem.EOnlineFileType ContentType; + var string RemotePath; + var string DisplayName; + + structdefaultproperties + { + ContentType=EOnlineFileType.OFT_Unknown + RemotePath="" + DisplayName="" + } +}; + +struct native UserAccountInfo +{ + var string DateOfBirth; + var string Email; + var string FirstName; + var string LastName; + var string Gamertag; + + structdefaultproperties + { + DateOfBirth="" + Email="" + FirstName="" + LastName="" + Gamertag="" + } +}; + +struct native NamedSession +{ + var name SessionName; + var native const transient Pointer SessionInfo; + var OnlineGameSettings GameSettings; + var array Registrants; + var array ArbitrationRegistrants; + + structdefaultproperties + { + SessionName="None" + GameSettings=none + Registrants=none + ArbitrationRegistrants=none + } +}; + +struct native AchievementReward +{ + var const string RewardName; + var const string Description; + var const string Data; + var const OnlineSubsystem.EAchievementRewardType RewardType; + + structdefaultproperties + { + RewardName="" + Description="" + Data="" + RewardType=EAchievementRewardType.ART_Unknown + } +}; + +struct native AchievementMediaAsset +{ + var const string AssetName; + var const OnlineSubsystem.EAchievementMediaAssetType AssetType; + var const string AssetURL; + + structdefaultproperties + { + AssetName="" + AssetType=EAchievementMediaAssetType.AMAT_Unknown + AssetURL="" + } +}; + +struct native AchievementTitleAssociation +{ + var const string LocalizedTitleName; + var const int TitleId; + + structdefaultproperties + { + LocalizedTitleName="" + TitleId=0 + } +}; + +struct native AchievementDetails +{ + var const int Id; + var const string StringId; + var const string AchievementName; + var const string Description; + var const string HowTo; + var Surface Image; + var const byte MonthEarned; + var const byte DayEarned; + var const byte YearEarned; + var const byte DayOfWeekEarned; + var const int GamerPoints; + var const bool bIsSecret; + var const bool bWasAchievedOnline; + var const bool bWasAchievedOffline; + var const OnlineSubsystem.EAchievementUnlockType UnlockType; + var const QWord ChallengeWindowBegin; + var const QWord ChallengeWindowEnd; + var const string DeepLink; + var const QWord EstimatedUnlockTime; + var const bool bIsRevoked; + var const OnlineSubsystem.EAchievementParticipationType ParticipationType; + var const array PlatformsAvailableOn; + var const OnlineSubsystem.EAchievementProgressState ProgressState; + var const array Rewards; + var const array MediaAssets; + var const string ProductID; + var const string ServiceConfigurationID; + var const array TitleAssociations; + + structdefaultproperties + { + Id=0 + StringId="" + AchievementName="" + Description="" + HowTo="" + Image=none + MonthEarned=0 + DayEarned=0 + YearEarned=0 + DayOfWeekEarned=0 + GamerPoints=0 + bIsSecret=false + bWasAchievedOnline=false + bWasAchievedOffline=false + UnlockType=EAchievementUnlockType.AUT_Unknown + ChallengeWindowBegin=() + ChallengeWindowEnd=() + DeepLink="" + EstimatedUnlockTime=() + bIsRevoked=false + ParticipationType=EAchievementParticipationType.EAPT_Unknown + PlatformsAvailableOn=none + ProgressState=EAchievementProgressState.APS_Unknown + Rewards=none + MediaAssets=none + ProductID="" + ServiceConfigurationID="" + TitleAssociations=none + } +}; + +struct native MarketplaceProductAvailability +{ + var const array AcceptablePaymentInstrumentTypes; + var const string Description; + var const string Title; + var const int ConsumableQuantity; + var const string ContentId; + var const string CurrencyCode; + var const string DisplayListPrice; + var const string DisplayPrice; + var const string DistributionType; + var const bool bIsPurchasable; + var const float ListPrice; + var const string OfferId; + var const float Price; + var const string PromotionalText; + var const string SignedOffer; + + structdefaultproperties + { + AcceptablePaymentInstrumentTypes=none + Description="" + Title="" + ConsumableQuantity=0 + ContentId="" + CurrencyCode="" + DisplayListPrice="" + DisplayPrice="" + DistributionType="" + bIsPurchasable=false + ListPrice=0.0000000 + OfferId="" + Price=0.0000000 + PromotionalText="" + SignedOffer="" + } +}; + +struct native MarketplaceProductImage +{ + var const string Id; + var const int Height; + var const int Width; + var const string Purpose; + var const array Purposes; + var const string ResizeURL; + + structdefaultproperties + { + Id="" + Height=0 + Width=0 + Purpose="" + Purposes=none + ResizeURL="" + } +}; + +struct native MarketplaceProductDetails +{ + var const string StandardId; + var const OnlineSubsystem.EMediaItemType MediaItemType; + var const string ProductName; + var const string ProductID; + var const QWord ReleaseDate; + var const string SandboxId; + var const int TitleId; + var const bool bIsBundle; + var const bool bIsPartOfAnyBundle; + var const string ReducedName; + var const array Images; + var OnlineSubsystem.EOnlineEnumerationReadState DetailsReadState; + var const array Availabilities; + var const string ProductDescription; + + structdefaultproperties + { + StandardId="" + MediaItemType=EMediaItemType.MIT_Unknown + ProductName="" + ProductID="" + ReleaseDate=() + SandboxId="" + TitleId=0 + bIsBundle=false + bIsPartOfAnyBundle=false + ReducedName="" + Images=none + DetailsReadState=EOnlineEnumerationReadState.OERS_NotStarted + Availabilities=none + ProductDescription="" + } +}; + +struct native MarketplaceInventoryItem +{ + var const string ProductID; + var const OnlineSubsystem.EMediaItemType MediaItemType; + var const OnlineSubsystem.EInventoryItemState ItemState; + var const int ConsumableBalance; + var const int TitleId; + var const array ContainerIds; + var const QWord StartDate; + var const QWord EndDate; + var const QWord RightsObtainedDate; + var const string URL; + var const string ConsumableUrl; + + structdefaultproperties + { + ProductID="" + MediaItemType=EMediaItemType.MIT_Unknown + ItemState=EInventoryItemState.IIS_Unknown + ConsumableBalance=0 + TitleId=0 + ContainerIds=none + StartDate=() + EndDate=() + RightsObtainedDate=() + URL="" + ConsumableUrl="" + } +}; + +struct native SessionMemberInfo +{ + var UniqueNetId PlayerNetId; + var OnlineSubsystem.ESessionMemberStatus MemberStatus; + var init string SecureAddress; + var init string NickName; + var bool Muted; + + structdefaultproperties + { + PlayerNetId=(Uid=()) + MemberStatus=ESessionMemberStatus.DSMS_Reserved + SecureAddress="" + NickName="" + Muted=false + } +}; + +struct native PermissionsResult +{ + var SessionMemberInfo User; + var bool bHasPermission; + + structdefaultproperties + { + User=(PlayerNetId=(Uid=()),MemberStatus=ESessionMemberStatus.DSMS_Reserved,SecureAddress="",NickName="",Muted=false) + bHasPermission=false + } +}; + +struct native OnlinePartyMember +{ + var const UniqueNetId UniqueId; + var const string NickName; + var const byte LocalUserNum; + var const OnlineSubsystem.ENATType NatType; + var const int TitleId; + var const bool bIsLocal; + var const bool bIsInPartyVoice; + var const bool bIsTalking; + var const bool bIsInGameSession; + var const bool bIsPlayingThisGame; + var const QWord SessionId; + var const int Data1; + var const int Data2; + var const int Data3; + var const int Data4; + + structdefaultproperties + { + UniqueId=(Uid=()) + NickName="" + LocalUserNum=0 + NatType=ENATType.NAT_Unknown + TitleId=0 + bIsLocal=false + bIsInPartyVoice=false + bIsTalking=false + bIsInGameSession=false + bIsPlayingThisGame=false + SessionId=() + Data1=0 + Data2=0 + Data3=0 + Data4=0 + } +}; + +struct native SocialPostPrivileges +{ + var const bool bCanPostImage; + var const bool bCanPostLink; + + structdefaultproperties + { + bCanPostImage=false + bCanPostLink=false + } +}; + +struct native SocialPostImageFlags +{ + var bool bIsUserGeneratedImage; + var bool bIsGameGeneratedImage; + var bool bIsAchievementImage; + var bool bIsMediaImage; + + structdefaultproperties + { + bIsUserGeneratedImage=false + bIsGameGeneratedImage=false + bIsAchievementImage=false + bIsMediaImage=false + } +}; + +struct native SocialPostImageInfo +{ + var SocialPostImageFlags Flags; + var string MessageText; + var string TitleText; + var string PictureCaption; + var string PictureDescription; + + structdefaultproperties + { + Flags=(bIsUserGeneratedImage=false,bIsGameGeneratedImage=false,bIsAchievementImage=false,bIsMediaImage=false) + MessageText="" + TitleText="" + PictureCaption="" + PictureDescription="" + } +}; + +struct native SocialPostLinkInfo extends SocialPostImageInfo +{ + var string TitleURL; + var string PictureURL; +}; + +struct native SessionUpdateInfo +{ + var const array MembersJoined; + var const array MembersLeft; + var const bool bHostDeviceTokenChanged; + var const bool bInitializationStateChanged; + var const bool bMatchmakingStatusChanged; + var const bool bMemberJoinedOrLeft; + var const bool bMemberStatusChanged; + var const bool bSessionJoinabilityChanged; + var const bool bCustomPropertyChange; + var const bool bMemberCustomPropertyChange; + + structdefaultproperties + { + MembersJoined=none + MembersLeft=none + bHostDeviceTokenChanged=false + bInitializationStateChanged=false + bMatchmakingStatusChanged=false + bMemberJoinedOrLeft=false + bMemberStatusChanged=false + bSessionJoinabilityChanged=false + bCustomPropertyChange=false + bMemberCustomPropertyChange=false + } +}; + +var private native const noexport Pointer VfTable_FTickableObject; +var OnlineAccountInterface AccountInterface; +var OnlinePlayerInterface PlayerInterface; +var OnlinePlayerInterfaceEx PlayerInterfaceEx; +var OnlineMarketplaceInterface MarketplaceInterface; +var OnlineSystemInterface SystemInterface; +var OnlineGameInterface GameInterface; +var OnlineContentInterface ContentInterface; +var OnlineVoiceInterface VoiceInterface; +var OnlineStatsInterface StatsInterface; +var OnlineNewsInterface NewsInterface; +var OnlinePartyChatInterface PartyChatInterface; +var OnlineTitleFileInterface TitleFileInterface; +var OnlineTitleFileCacheInterface TitleFileCacheInterface; +var UserCloudFileInterface UserCloudInterface; +var SharedCloudFileInterface SharedCloudInterface; +var OnlineSocialInterface SocialInterface; +var OnlineChatInterface ChatInterface; +var OnlineAuthInterface AuthInterface; +var OnlineGameDVRInterface GameDVRInterface; +var OnlineCommunityContentInterface CommunityContentInterface; +var native UniqueNetId LoggedInPlayerNetId; +var private array NamedInterfaces; +var config array NamedInterfaceDefs; +var protected const array Sessions; +var array PartyMemberList; +var array GameMemberList; +var bool bCameFromAutoLogin; +var config bool bUseBuildIdOverride; +var config int BuildIdOverride; +var config string IniLocPatcherClassName; +var transient IniLocPatcher Patcher; +var config float AsyncMinCompletionTime; +var const config string DefaultSessionTemplateName; +var const config string PartySessionTemplateName; + +// Export UOnlineSubsystem::execInit(FFrame&, void* const) +native event bool Init(); + +event bool PostInit() +{ + local Class IniLocPatcherClass; + + // End:0x8B + if(IniLocPatcherClassName != "") + { + IniLocPatcherClass = Class(DynamicLoadObject(IniLocPatcherClassName, Class'Core.Class')); + Patcher = new IniLocPatcherClass; + // End:0x89 + if(Patcher != none) + { + Patcher.Init(); + } + else + { + return false; + } + } + return true; + //return ReturnValue; +} + +// Export UOnlineSubsystem::execExit(FFrame&, void* const) +native event Exit(); + +event bool SetAccountInterface(Object NewInterface) +{ + AccountInterface = OnlineAccountInterface(NewInterface); + return NotEqual_InterfaceInterface(AccountInterface, OnlineAccountInterface(none)); + //return ReturnValue; +} + +event bool SetPlayerInterface(Object NewInterface) +{ + PlayerInterface = OnlinePlayerInterface(NewInterface); + return NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none)); + //return ReturnValue; +} + +event bool SetPlayerInterfaceEx(Object NewInterface) +{ + PlayerInterfaceEx = OnlinePlayerInterfaceEx(NewInterface); + return NotEqual_InterfaceInterface(PlayerInterfaceEx, OnlinePlayerInterfaceEx(none)); + //return ReturnValue; +} + +event bool SetMarketplaceInterface(Object NewInterface) +{ + MarketplaceInterface = OnlineMarketplaceInterface(NewInterface); + return NotEqual_InterfaceInterface(MarketplaceInterface, OnlineMarketplaceInterface(none)); + //return ReturnValue; +} + +event bool SetSystemInterface(Object NewInterface) +{ + SystemInterface = OnlineSystemInterface(NewInterface); + return NotEqual_InterfaceInterface(SystemInterface, OnlineSystemInterface(none)); + //return ReturnValue; +} + +event bool SetGameInterface(Object NewInterface) +{ + GameInterface = OnlineGameInterface(NewInterface); + return NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none)); + //return ReturnValue; +} + +event bool SetContentInterface(Object NewInterface) +{ + ContentInterface = OnlineContentInterface(NewInterface); + return NotEqual_InterfaceInterface(ContentInterface, OnlineContentInterface(none)); + //return ReturnValue; +} + +event bool SetVoiceInterface(Object NewInterface) +{ + VoiceInterface = OnlineVoiceInterface(NewInterface); + return NotEqual_InterfaceInterface(VoiceInterface, OnlineVoiceInterface(none)); + //return ReturnValue; +} + +event bool SetStatsInterface(Object NewInterface) +{ + StatsInterface = OnlineStatsInterface(NewInterface); + return NotEqual_InterfaceInterface(StatsInterface, OnlineStatsInterface(none)); + //return ReturnValue; +} + +event bool SetNewsInterface(Object NewInterface) +{ + NewsInterface = OnlineNewsInterface(NewInterface); + return NotEqual_InterfaceInterface(NewsInterface, OnlineNewsInterface(none)); + //return ReturnValue; +} + +event bool SetPartyChatInterface(Object NewInterface) +{ + PartyChatInterface = OnlinePartyChatInterface(NewInterface); + return NotEqual_InterfaceInterface(PartyChatInterface, OnlinePartyChatInterface(none)); + //return ReturnValue; +} + +event bool SetTitleFileInterface(Object NewInterface) +{ + TitleFileInterface = OnlineTitleFileInterface(NewInterface); + return NotEqual_InterfaceInterface(TitleFileInterface, OnlineTitleFileInterface(none)); + //return ReturnValue; +} + +event bool SetGameChatInterface(Object NewInterface) +{ + ChatInterface = OnlineChatInterface(NewInterface); + return NotEqual_InterfaceInterface(ChatInterface, OnlineChatInterface(none)); + //return ReturnValue; +} + +event bool SetTitleFileCacheInterface(Object NewInterface) +{ + TitleFileCacheInterface = OnlineTitleFileCacheInterface(NewInterface); + return NotEqual_InterfaceInterface(TitleFileCacheInterface, OnlineTitleFileCacheInterface(none)); + //return ReturnValue; +} + +event bool SetSocialInterface(Object InSocialInterface) +{ + SocialInterface = OnlineSocialInterface(InSocialInterface); + return NotEqual_InterfaceInterface(SocialInterface, OnlineSocialInterface(none)); + //return ReturnValue; +} + +event bool SetAuthInterface(Object InAuthInterface) +{ + AuthInterface = OnlineAuthInterface(InAuthInterface); + return NotEqual_InterfaceInterface(AuthInterface, OnlineAuthInterface(none)); + //return ReturnValue; +} + +event bool SetUserCloudInterface(Object InCloudInterface) +{ + UserCloudInterface = UserCloudFileInterface(InCloudInterface); + return NotEqual_InterfaceInterface(UserCloudInterface, UserCloudFileInterface(none)); + //return ReturnValue; +} + +event bool SetSharedCloudInterface(Object InCloudInterface) +{ + SharedCloudInterface = SharedCloudFileInterface(InCloudInterface); + return NotEqual_InterfaceInterface(SharedCloudInterface, SharedCloudFileInterface(none)); + //return ReturnValue; +} + +event bool SetGameDVRInterface(Object InGameDVRInterface) +{ + GameDVRInterface = OnlineGameDVRInterface(InGameDVRInterface); + return NotEqual_InterfaceInterface(GameDVRInterface, OnlineGameDVRInterface(none)); + //return ReturnValue; +} + +event bool SetCommunityContentInterface(Object InCommunityContentInterface) +{ + CommunityContentInterface = OnlineCommunityContentInterface(InCommunityContentInterface); + return NotEqual_InterfaceInterface(CommunityContentInterface, OnlineCommunityContentInterface(none)); + //return ReturnValue; +} + +event SetNamedInterface(name InterfaceName, Object NewInterface) +{ + local int InterfaceIndex; + + InterfaceIndex = NamedInterfaces.Find('InterfaceName', InterfaceName); + // End:0x98 + if(InterfaceIndex == -1) + { + InterfaceIndex = NamedInterfaces.Length; + NamedInterfaces.Length = NamedInterfaces.Length + 1; + NamedInterfaces[InterfaceIndex].InterfaceName = InterfaceName; + } + NamedInterfaces[InterfaceIndex].InterfaceObject = NewInterface; + //return; +} + +event Object GetNamedInterface(name InterfaceName) +{ + local int InterfaceIndex; + + InterfaceIndex = NamedInterfaces.Find('InterfaceName', InterfaceName); + // End:0x63 + if(InterfaceIndex != -1) + { + return NamedInterfaces[InterfaceIndex].InterfaceObject; + } + return none; + //return ReturnValue; +} + +// Export UOnlineSubsystem::execRaiseEvent(FFrame&, void* const) +native event bool RaiseEvent(const string EventName, const array EventParams); + +// Export UOnlineSubsystem::execUniqueNetIdToString(FFrame&, void* const) +native static final function string UniqueNetIdToString(const out UniqueNetId IdToConvert, optional bool Hex = true); + +// Export UOnlineSubsystem::execStringToUniqueNetId(FFrame&, void* const) +native static final function bool StringToUniqueNetId(string UniqueNetIdString, out UniqueNetId out_UniqueId); + +event UniqueNetId GetPlayerUniqueNetIdFromIndex(int UserIndex) +{ + local UniqueNetId ReturnVal, NullId; + + // End:0x6E + if(EqualEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none)) || !PlayerInterface.GetUniquePlayerId(byte(UserIndex), ReturnVal)) + { + ReturnVal = NullId; + } + return ReturnVal; + //return ReturnValue; +} + +event OnlineSubsystem.ELoginStatus GetLoginStatus(byte UserIndex) +{ + local OnlineSubsystem.ELoginStatus ReturnVal; + + ReturnVal = 0; + // End:0x5F + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + ReturnVal = PlayerInterface.GetLoginStatus(UserIndex); + } + return ReturnVal; + //return ReturnValue; +} + +event bool PreLogin() +{ + return true; + //return ReturnValue; +} + +// Export UOnlineSubsystem::execGetBuildUniqueId(FFrame&, void* const) +native function int GetBuildUniqueId(); + +// Export UOnlineSubsystem::execGetNumSupportedLogins(FFrame&, void* const) +native static final function int GetNumSupportedLogins(); + +function bool IsInSession(name SessionName) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x67 [Loop If] + if(I < Sessions.Length) + { + // End:0x59 + if(Sessions[I].SessionName == SessionName) + { + return true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +static function DumpGameSettings(const OnlineGameSettings GameSettings) +{ + //return; +} + +function DumpSessionState() +{ + local int Index, PlayerIndex; + local UniqueNetId NetId, ZeroId; + + NetId = ZeroId; + ZeroId = NetId; + Index = 0; + J0x31: + + // End:0x1BD [Loop If] + if(Index < Sessions.Length) + { + DumpGameSettings(Sessions[Index].GameSettings); + PlayerIndex = 0; + J0x84: + + // End:0x114 [Loop If] + if(PlayerIndex < Sessions[Index].Registrants.Length) + { + NetId = Sessions[Index].Registrants[PlayerIndex].PlayerNetId; + PlayerIndex++; + // [Loop Continue] + goto J0x84; + } + PlayerIndex = 0; + J0x11F: + + // End:0x1AF [Loop If] + if(PlayerIndex < Sessions[Index].ArbitrationRegistrants.Length) + { + NetId = Sessions[Index].ArbitrationRegistrants[PlayerIndex].PlayerNetId; + PlayerIndex++; + // [Loop Continue] + goto J0x11F; + } + Index++; + // [Loop Continue] + goto J0x31; + } + //return; +} + +function DumpVoiceRegistration() +{ + //return; +} + +function SetDebugSpewLevel(int DebugSpewLevel) +{ + //return; +} + +defaultproperties +{ + NamedInterfaceDefs[0]=(InterfaceName="RecentPlayersList",InterfaceClassName="Engine.OnlineRecentPlayersList") +} \ No newline at end of file diff --git a/exported/Engine/Classes/OnlineSuppliedUIInterface.uc b/exported/Engine/Classes/OnlineSuppliedUIInterface.uc new file mode 100755 index 00000000..2d7b31a1 --- /dev/null +++ b/exported/Engine/Classes/OnlineSuppliedUIInterface.uc @@ -0,0 +1,27 @@ +interface OnlineSuppliedUIInterface extends Interface + abstract; + +delegate OnShowOnlineStatsUIComplete() +{ + //return; +} + +function bool ShowOnlineStatsUI(const out array Players, OnlineStatsRead StatsRead) +{ + //return ReturnValue; +} + +function AddShowOnlineStatsUICompleteDelegate(delegate ShowOnlineStatsUICompleteDelegate) +{ + //return; +} + +function ClearShowOnlineStatsUICompleteDelegate(delegate ShowOnlineStatsUICompleteDelegate) +{ + //return; +} + +function bool ShowMatchmakingUI(byte SearchingPlayerNum, OnlineGameSearch SearchSettings, OnlineGameSettings GameSettings) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/OnlineSystemInterface.uc b/exported/Engine/Classes/OnlineSystemInterface.uc new file mode 100755 index 00000000..eebc3a0e --- /dev/null +++ b/exported/Engine/Classes/OnlineSystemInterface.uc @@ -0,0 +1,112 @@ +interface OnlineSystemInterface extends Interface + abstract; + +function bool HasLinkConnection() +{ + //return ReturnValue; +} + +delegate OnLinkStatusChange(bool bIsConnected) +{ + //return; +} + +function AddLinkStatusChangeDelegate(delegate LinkStatusDelegate) +{ + //return; +} + +function ClearLinkStatusChangeDelegate(delegate LinkStatusDelegate) +{ + //return; +} + +delegate OnExternalUIChange(bool bIsOpening) +{ + //return; +} + +function AddExternalUIChangeDelegate(delegate ExternalUIDelegate) +{ + //return; +} + +function ClearExternalUIChangeDelegate(delegate ExternalUIDelegate) +{ + //return; +} + +function OnlineSubsystem.ENetworkNotificationPosition GetNetworkNotificationPosition() +{ + //return ReturnValue; +} + +function SetNetworkNotificationPosition(OnlineSubsystem.ENetworkNotificationPosition NewPos) +{ + //return; +} + +delegate OnControllerChange(int ControllerId, bool bIsConnected, bool bPauseGame) +{ + //return; +} + +function AddControllerChangeDelegate(delegate ControllerChangeDelegate) +{ + //return; +} + +function ClearControllerChangeDelegate(delegate ControllerChangeDelegate) +{ + //return; +} + +function bool IsControllerConnected(int ControllerId) +{ + //return ReturnValue; +} + +function OnlineSubsystem.EOnlineServerConnectionStatus GetCurrentConnectionStatus() +{ + //return ReturnValue; +} + +delegate OnConnectionStatusChange(OnlineSubsystem.EOnlineServerConnectionStatus ConnectionStatus) +{ + //return; +} + +function AddConnectionStatusChangeDelegate(delegate ConnectionStatusDelegate) +{ + //return; +} + +function ClearConnectionStatusChangeDelegate(delegate ConnectionStatusDelegate) +{ + //return; +} + +function OnlineSubsystem.ENATType GetNATType() +{ + //return ReturnValue; +} + +delegate OnStorageDeviceChange() +{ + //return; +} + +function AddStorageDeviceChangeDelegate(delegate StorageDeviceChangeDelegate) +{ + //return; +} + +function ClearStorageDeviceChangeDelegate(delegate StorageDeviceChangeDelegate) +{ + //return; +} + +function int GetLocale() +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/OnlineTitleFileCacheInterface.uc b/exported/Engine/Classes/OnlineTitleFileCacheInterface.uc new file mode 100755 index 00000000..8e361c23 --- /dev/null +++ b/exported/Engine/Classes/OnlineTitleFileCacheInterface.uc @@ -0,0 +1,82 @@ +interface OnlineTitleFileCacheInterface extends Interface + abstract; + +function bool LoadTitleFile(string Filename) +{ + //return ReturnValue; +} + +delegate OnLoadTitleFileComplete(bool bWasSuccessful, string Filename) +{ + //return; +} + +function AddLoadTitleFileCompleteDelegate(delegate LoadCompleteDelegate) +{ + //return; +} + +function ClearLoadTitleFileCompleteDelegate(delegate LoadCompleteDelegate) +{ + //return; +} + +function bool SaveTitleFile(string Filename, string LogicalName, array FileContents) +{ + //return ReturnValue; +} + +delegate OnSaveTitleFileComplete(bool bWasSuccessful, string Filename) +{ + //return; +} + +function AddSaveTitleFileCompleteDelegate(delegate SaveCompleteDelegate) +{ + //return; +} + +function ClearSaveTitleFileCompleteDelegate(delegate SaveCompleteDelegate) +{ + //return; +} + +function bool GetTitleFileContents(string Filename, out array FileContents) +{ + //return ReturnValue; +} + +function OnlineSubsystem.EOnlineEnumerationReadState GetTitleFileState(string Filename) +{ + //return ReturnValue; +} + +function string GetTitleFileHash(string Filename) +{ + //return ReturnValue; +} + +function string GetTitleFileLogicalName(string Filename) +{ + //return ReturnValue; +} + +function bool ClearCachedFiles() +{ + //return ReturnValue; +} + +function bool ClearCachedFile(string Filename) +{ + //return ReturnValue; +} + +function bool DeleteTitleFiles(float MaxAgeSeconds) +{ + //return ReturnValue; +} + +function bool DeleteTitleFile(string Filename) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/OnlineTitleFileInterface.uc b/exported/Engine/Classes/OnlineTitleFileInterface.uc new file mode 100755 index 00000000..7b6f8568 --- /dev/null +++ b/exported/Engine/Classes/OnlineTitleFileInterface.uc @@ -0,0 +1,62 @@ +interface OnlineTitleFileInterface extends Interface + abstract; + +delegate OnReadTitleFileComplete(bool bWasSuccessful, string Filename) +{ + //return; +} + +function bool ReadTitleFile(string FileToRead, optional OnlineSubsystem.EOnlineFileType FileType = 1) +{ + //return ReturnValue; +} + +function AddReadTitleFileCompleteDelegate(delegate ReadTitleFileCompleteDelegate) +{ + //return; +} + +function ClearReadTitleFileCompleteDelegate(delegate ReadTitleFileCompleteDelegate) +{ + //return; +} + +function bool GetTitleFileContents(string Filename, out array FileContents) +{ + //return ReturnValue; +} + +function OnlineSubsystem.EOnlineEnumerationReadState GetTitleFileState(string Filename) +{ + //return ReturnValue; +} + +function bool ClearDownloadedFiles() +{ + //return ReturnValue; +} + +function bool ClearDownloadedFile(string Filename) +{ + //return ReturnValue; +} + +function bool RequestTitleFileList() +{ + //return ReturnValue; +} + +delegate OnRequestTitleFileListComplete(bool bWasSuccessful, array FilePaths) +{ + //return; +} + +function AddRequestTitleFileListCompleteDelegate(delegate RequestTitleFileListDelegate) +{ + //return; +} + +function ClearRequestTitleFileListCompleteDelegate(delegate RequestTitleFileListDelegate) +{ + //return; +} diff --git a/exported/Engine/Classes/OnlineVoiceInterface.uc b/exported/Engine/Classes/OnlineVoiceInterface.uc new file mode 100755 index 00000000..24e7efbb --- /dev/null +++ b/exported/Engine/Classes/OnlineVoiceInterface.uc @@ -0,0 +1,137 @@ +interface OnlineVoiceInterface extends Interface + abstract; + +function bool RegisterLocalTalker(byte LocalUserNum, optional byte ChannelIndex) +{ + //return ReturnValue; +} + +function bool UnregisterLocalTalker(byte LocalUserNum, optional byte ChannelIndex) +{ + //return ReturnValue; +} + +function bool RegisterRemoteTalker(UniqueNetId PlayerID) +{ + //return ReturnValue; +} + +function bool UnregisterRemoteTalker(UniqueNetId PlayerID) +{ + //return ReturnValue; +} + +function bool IsLocalPlayerTalking(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool IsRemotePlayerTalking(UniqueNetId PlayerID) +{ + //return ReturnValue; +} + +function bool IsHeadsetPresent(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool SetRemoteTalkerPriority(byte LocalUserNum, UniqueNetId PlayerID, int Priority) +{ + //return ReturnValue; +} + +function bool UpdatePlayerMuteSetting(bool PlayerMuteSetting) +{ + //return ReturnValue; +} + +function bool MuteRemoteTalker(byte LocalUserNum, UniqueNetId PlayerID, optional bool bIsSystemWide) +{ + //return ReturnValue; +} + +function bool UnmuteRemoteTalker(byte LocalUserNum, UniqueNetId PlayerID, optional bool bIsSystemWide) +{ + //return ReturnValue; +} + +function bool IsTalkerMuted(UniqueNetId ConsoleId) +{ + //return ReturnValue; +} + +delegate OnPlayerTalkingStateChange(UniqueNetId Player, bool bIsTalking) +{ + //return; +} + +function AddPlayerTalkingDelegate(delegate TalkerDelegate) +{ + //return; +} + +function ClearPlayerTalkingDelegate(delegate TalkerDelegate) +{ + //return; +} + +function StartNetworkedVoice(byte LocalUserNum) +{ + //return; +} + +function StopNetworkedVoice(byte LocalUserNum) +{ + //return; +} + +function bool StartSpeechRecognition(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool StopSpeechRecognition(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool GetRecognitionResults(byte LocalUserNum, out array Words) +{ + //return ReturnValue; +} + +delegate OnRecognitionComplete() +{ + //return; +} + +function AddRecognitionCompleteDelegate(byte LocalUserNum, delegate RecognitionDelegate) +{ + //return; +} + +function ClearRecognitionCompleteDelegate(byte LocalUserNum, delegate RecognitionDelegate) +{ + //return; +} + +function bool SelectVocabulary(byte LocalUserNum, int VocabularyId) +{ + //return ReturnValue; +} + +function bool SetSpeechRecognitionObject(byte LocalUserNum, SpeechRecognition SpeechRecogObj) +{ + //return ReturnValue; +} + +function bool MuteAll(byte LocalUserNum, bool bAllowFriends) +{ + //return ReturnValue; +} + +function bool UnmuteAll(byte LocalUserNum) +{ + //return ReturnValue; +} diff --git a/exported/Engine/Classes/PBRuleNodeAlternate.uc b/exported/Engine/Classes/PBRuleNodeAlternate.uc new file mode 100755 index 00000000..2cf18d85 --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeAlternate.uc @@ -0,0 +1,18 @@ +class PBRuleNodeAlternate extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() ProcBuildingRuleset.EProcBuildingAxis RepeatAxis; +var() float ASize; +var() float BMaxSize; +var() bool bInvertPatternOrder; +var() bool bEqualSizeAB; + +defaultproperties +{ + ASize=512.0000000 + NextRules[0]=(NextRule=none,LinkName="A") + NextRules[1]=(NextRule=none,LinkName="B") +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeBase.uc b/exported/Engine/Classes/PBRuleNodeBase.uc new file mode 100755 index 00000000..80ed0bc1 --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeBase.uc @@ -0,0 +1,24 @@ +class PBRuleNodeBase extends Object + abstract + native(ProcBuilding) + editinlinenew + hidecategories(Object); + +struct native PBRuleLink +{ + var() export editinline PBRuleNodeBase NextRule; + var() name LinkName; + + structdefaultproperties + { + NextRule=none + LinkName="None" + } +}; + +var editfixedsize array NextRules; + +defaultproperties +{ + NextRules[0]=(NextRule=none,LinkName="Next") +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeComment.uc b/exported/Engine/Classes/PBRuleNodeComment.uc new file mode 100755 index 00000000..c9bee6e2 --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeComment.uc @@ -0,0 +1,23 @@ +class PBRuleNodeComment extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() int SizeX; +var() int SizeY; +var() int BorderWidth; +var() Color BorderColor; +var() bool bFilled; +var() Color FillColor; + +defaultproperties +{ + SizeX=128 + SizeY=64 + BorderWidth=1 + BorderColor=(R=0,G=0,B=0,A=255) + bFilled=true + FillColor=(R=255,G=255,B=255,A=16) + NextRules=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeCorner.uc b/exported/Engine/Classes/PBRuleNodeCorner.uc new file mode 100755 index 00000000..1040ad8e --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeCorner.uc @@ -0,0 +1,37 @@ +class PBRuleNodeCorner extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +struct native RBCornerAngleInfo +{ + var() float Angle; + var() float CornerSize; + + structdefaultproperties + { + Angle=0.0000000 + CornerSize=0.0000000 + } +}; + +var() float CornerSize; +var() array Angles; +var() float FlatThreshold; +var() bool bNoMeshForConcaveCorners; +var() bool bUseAdjacentRulesetForRightGap; +var() ProcBuilding.EPBCornerType CornerType; +var() float CornerShapeOffset; +var() int RoundTesselation; +var() float RoundCurvature; + +defaultproperties +{ + CornerSize=256.0000000 + Angles[0]=(Angle=90.0000000,CornerSize=0.0000000) + Angles[1]=(Angle=-90.0000000,CornerSize=0.0000000) + FlatThreshold=5.0000000 + RoundTesselation=4 + RoundCurvature=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeCycle.uc b/exported/Engine/Classes/PBRuleNodeCycle.uc new file mode 100755 index 00000000..cfe2b7c6 --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeCycle.uc @@ -0,0 +1,20 @@ +class PBRuleNodeCycle extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() ProcBuildingRuleset.EProcBuildingAxis RepeatAxis; +var() float RepeatSize; +var() int CycleSize; +var() bool bFixRepeatSize; + +defaultproperties +{ + RepeatAxis=EProcBuildingAxis.EPBAxis_Z + RepeatSize=512.0000000 + CycleSize=2 + NextRules[0]=(NextRule=none,LinkName="Remainder") + NextRules[1]=(NextRule=none,LinkName="Step 0") + NextRules[2]=(NextRule=none,LinkName="Step 1") +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeEdgeAngle.uc b/exported/Engine/Classes/PBRuleNodeEdgeAngle.uc new file mode 100755 index 00000000..790bba9c --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeEdgeAngle.uc @@ -0,0 +1,33 @@ +class PBRuleNodeEdgeAngle extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +enum EProcBuildingEdge +{ + EPBE_Top, // 0 + EPBE_Bottom, // 1 + EPBE_Left, // 2 + EPBE_Right, // 3 + EPBE_MAX // 4 +}; + +struct native RBEdgeAngleInfo +{ + var() float Angle; + + structdefaultproperties + { + Angle=0.0000000 + } +}; + +var() PBRuleNodeEdgeAngle.EProcBuildingEdge Edge; +var() array Angles; + +defaultproperties +{ + Edge=EProcBuildingEdge.EPBE_Left + NextRules=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeEdgeMesh.uc b/exported/Engine/Classes/PBRuleNodeEdgeMesh.uc new file mode 100755 index 00000000..bb58752a --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeEdgeMesh.uc @@ -0,0 +1,15 @@ +class PBRuleNodeEdgeMesh extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() float FlatThreshold; +var() float MainXPullIn; + +defaultproperties +{ + FlatThreshold=5.0000000 + NextRules[0]=(NextRule=none,LinkName="Main") + NextRules[1]=(NextRule=none,LinkName="Edge") +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeExtractTopBottom.uc b/exported/Engine/Classes/PBRuleNodeExtractTopBottom.uc new file mode 100755 index 00000000..de9640da --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeExtractTopBottom.uc @@ -0,0 +1,21 @@ +class PBRuleNodeExtractTopBottom extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() float ExtractTopZ; +var() float ExtractNotTopZ; +var() float ExtractBottomZ; +var() float ExtractNotBottomZ; + +defaultproperties +{ + ExtractTopZ=512.0000000 + ExtractBottomZ=512.0000000 + NextRules[0]=(NextRule=none,LinkName="Top") + NextRules[1]=(NextRule=none,LinkName="Not Top") + NextRules[2]=(NextRule=none,LinkName="Mid") + NextRules[3]=(NextRule=none,LinkName="Bottom") + NextRules[4]=(NextRule=none,LinkName="Not Bottom") +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeLODQuad.uc b/exported/Engine/Classes/PBRuleNodeLODQuad.uc new file mode 100755 index 00000000..9be83e40 --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeLODQuad.uc @@ -0,0 +1,12 @@ +class PBRuleNodeLODQuad extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() float MassiveLODDistanceScale; + +defaultproperties +{ + MassiveLODDistanceScale=0.7000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeMesh.uc b/exported/Engine/Classes/PBRuleNodeMesh.uc new file mode 100755 index 00000000..f8e0393d --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeMesh.uc @@ -0,0 +1,60 @@ +class PBRuleNodeMesh extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +struct native BuildingMatOverrides +{ + var() array MaterialOptions; + + structdefaultproperties + { + MaterialOptions=none + } +}; + +struct native BuildingMeshInfo +{ + var() StaticMesh Mesh; + var() float DimX; + var() float DimZ; + var() float Chance; + var() export editinline DistributionVector Translation; + var() export editinline DistributionVector Rotation; + var() bool bMeshScaleTranslation; + var() bool bOverrideMeshLightMapRes; + var() int OverriddenMeshLightMapRes; + var array MaterialOverrides; + var() array SectionOverrides; + + structdefaultproperties + { + Mesh=none + DimX=512.0000000 + DimZ=512.0000000 + Chance=1.0000000 + Translation=none + Rotation=none + bMeshScaleTranslation=false + bOverrideMeshLightMapRes=false + OverriddenMeshLightMapRes=32 + MaterialOverrides=none + SectionOverrides=none + } +}; + +var() array BuildingMeshes; +var() BuildingMeshInfo PartialOccludedBuildingMesh; +var() bool bDoOcclusionTest; +var() bool bBlockAll; + +// Export UPBRuleNodeMesh::execPickRandomBuildingMesh(FFrame&, void* const) +native function int PickRandomBuildingMesh(); + +defaultproperties +{ + PartialOccludedBuildingMesh=(Mesh=none,DimX=512.0000000,DimZ=512.0000000,Chance=1.0000000,Translation=none,Rotation=none,bMeshScaleTranslation=false,bOverrideMeshLightMapRes=false,OverriddenMeshLightMapRes=32,MaterialOverrides=none,SectionOverrides=none) + bDoOcclusionTest=true + NextRules=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeOcclusion.uc b/exported/Engine/Classes/PBRuleNodeOcclusion.uc new file mode 100755 index 00000000..401f052b --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeOcclusion.uc @@ -0,0 +1,12 @@ +class PBRuleNodeOcclusion extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + NextRules[0]=(NextRule=none,LinkName="Clear") + NextRules[1]=(NextRule=none,LinkName="Partial") + NextRules[2]=(NextRule=none,LinkName="bLocked") +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeQuad.uc b/exported/Engine/Classes/PBRuleNodeQuad.uc new file mode 100755 index 00000000..b9e9b043 --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeQuad.uc @@ -0,0 +1,20 @@ +class PBRuleNodeQuad extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() MaterialInterface Material; +var() float RepeatMaxSizeX; +var() float RepeatMaxSizeZ; +var() int QuadLightmapRes; +var() float YOffset; +var() bool bDisableMaterialRepeat; + +defaultproperties +{ + RepeatMaxSizeX=512.0000000 + RepeatMaxSizeZ=512.0000000 + QuadLightmapRes=32 + NextRules=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeRandom.uc b/exported/Engine/Classes/PBRuleNodeRandom.uc new file mode 100755 index 00000000..a149aac3 --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeRandom.uc @@ -0,0 +1,18 @@ +class PBRuleNodeRandom extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() int NumOutputs; +var() int MinNumExecuted; +var() int MaxNumExecuted; + +defaultproperties +{ + NumOutputs=2 + MinNumExecuted=1 + MaxNumExecuted=1 + NextRules[0]=(NextRule=none,LinkName="0") + NextRules[1]=(NextRule=none,LinkName="1") +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeRepeat.uc b/exported/Engine/Classes/PBRuleNodeRepeat.uc new file mode 100755 index 00000000..0f4d2815 --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeRepeat.uc @@ -0,0 +1,14 @@ +class PBRuleNodeRepeat extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() ProcBuildingRuleset.EProcBuildingAxis RepeatAxis; +var() float RepeatMaxSize; + +defaultproperties +{ + RepeatAxis=EProcBuildingAxis.EPBAxis_Z + RepeatMaxSize=512.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeSize.uc b/exported/Engine/Classes/PBRuleNodeSize.uc new file mode 100755 index 00000000..89ab5319 --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeSize.uc @@ -0,0 +1,16 @@ +class PBRuleNodeSize extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() ProcBuildingRuleset.EProcBuildingAxis SizeAxis; +var() float DecisionSize; +var() bool bUseTopLevelScopeSize; + +defaultproperties +{ + DecisionSize=512.0000000 + NextRules[0]=(NextRule=none,LinkName="Less") + NextRules[1]=(NextRule=none,LinkName="Greater/Equal") +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeSplit.uc b/exported/Engine/Classes/PBRuleNodeSplit.uc new file mode 100755 index 00000000..992e770e --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeSplit.uc @@ -0,0 +1,31 @@ +class PBRuleNodeSplit extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +struct native RBSplitInfo +{ + var() bool bFixSize; + var() float FixedSize; + var() float ExpandRatio; + var() name SplitName; + + structdefaultproperties + { + bFixSize=false + FixedSize=512.0000000 + ExpandRatio=1.0000000 + SplitName="None" + } +}; + +var() ProcBuildingRuleset.EProcBuildingAxis SplitAxis; +var() array SplitSetup; + +defaultproperties +{ + SplitAxis=EProcBuildingAxis.EPBAxis_Z + NextRules[0]=(NextRule=none,LinkName="Next") + NextRules[1]=(NextRule=none,LinkName="0") +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeSubRuleset.uc b/exported/Engine/Classes/PBRuleNodeSubRuleset.uc new file mode 100755 index 00000000..be6a6997 --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeSubRuleset.uc @@ -0,0 +1,12 @@ +class PBRuleNodeSubRuleset extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() ProcBuildingRuleset SubRuleset; + +defaultproperties +{ + NextRules=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeTransform.uc b/exported/Engine/Classes/PBRuleNodeTransform.uc new file mode 100755 index 00000000..7266d4ba --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeTransform.uc @@ -0,0 +1,9 @@ +class PBRuleNodeTransform extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() export editinline DistributionVector Translation; +var() export editinline DistributionVector Rotation; +var() export editinline DistributionVector Scale; diff --git a/exported/Engine/Classes/PBRuleNodeVariation.uc b/exported/Engine/Classes/PBRuleNodeVariation.uc new file mode 100755 index 00000000..1a5760b3 --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeVariation.uc @@ -0,0 +1,12 @@ +class PBRuleNodeVariation extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() bool bVariationOfScopeOnLeft; + +defaultproperties +{ + NextRules[0]=(NextRule=none,LinkName="Default") +} \ No newline at end of file diff --git a/exported/Engine/Classes/PBRuleNodeWindowWall.uc b/exported/Engine/Classes/PBRuleNodeWindowWall.uc new file mode 100755 index 00000000..58a06579 --- /dev/null +++ b/exported/Engine/Classes/PBRuleNodeWindowWall.uc @@ -0,0 +1,25 @@ +class PBRuleNodeWindowWall extends PBRuleNodeBase + native(ProcBuilding) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var() float CellMaxSizeX; +var() float CellMaxSizeZ; +var() float WindowSizeX; +var() float WindowSizeZ; +var() float WindowPosX; +var() float WindowPosZ; +var() bool bScaleWindowWithCell; +var() float YOffset; +var() MaterialInterface Material; + +defaultproperties +{ + CellMaxSizeX=512.0000000 + CellMaxSizeZ=512.0000000 + WindowSizeX=128.0000000 + WindowSizeZ=232.0000000 + WindowPosX=0.5000000 + WindowPosZ=0.5000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleEmitter.uc b/exported/Engine/Classes/ParticleEmitter.uc new file mode 100755 index 00000000..7659a86e --- /dev/null +++ b/exported/Engine/Classes/ParticleEmitter.uc @@ -0,0 +1,70 @@ +class ParticleEmitter extends Object + abstract + native(Particle) + editinlinenew + hidecategories(Object); + +enum EParticleBurstMethod +{ + EPBM_Instant, // 0 + EPBM_Interpolated, // 1 + EPBM_MAX // 2 +}; + +enum EParticleSubUVInterpMethod +{ + PSUVIM_None, // 0 + PSUVIM_Linear, // 1 + PSUVIM_Linear_Blend, // 2 + PSUVIM_Random, // 3 + PSUVIM_Random_Blend, // 4 + PSUVIM_MAX // 5 +}; + +enum EEmitterRenderMode +{ + ERM_Normal, // 0 + ERM_Point, // 1 + ERM_Cross, // 2 + ERM_None, // 3 + ERM_MAX // 4 +}; + +struct native ParticleBurst +{ + var() int Count; + var() int CountLow; + var() float Time; + + structdefaultproperties + { + Count=0 + CountLow=-1 + Time=0.0000000 + } +}; + +var(Particle) name EmitterName; +var() editconst int m_nActivationMask; +var() ParticleChannelContainer m_ParticleChannels; +var transient int SubUVDataOffset; +var(Cascade) ParticleEmitter.EEmitterRenderMode EmitterRenderMode; +var export editinline array LODLevels; +var bool ConvertedModules; +var(Cascade) editoronly bool bCollapsed; +var transient bool bIsSoloing; +var bool bCookedOut; +var int PeakActiveParticles; +var(Particle) int InitialAllocationCount; +var(Particle) float MediumDetailSpawnRateScale; + +// Export UParticleEmitter::execGetMaxLifespan(FFrame&, void* const) +native function float GetMaxLifespan(float InComponentDelay); + +defaultproperties +{ + EmitterName="Particle Emitter" + m_ParticleChannels=(bInitialized=false,Default=true,Friendly=false,Enemy=false,LocalOwner=false,Channel5=false,Channel6=false,Channel7=false,Channel8=false,VerticalTargeter=false,Filter2=false,NotLocalOwner=false,CustomFilter1=false,CustomFilter2=false,CustomFilter3=false,CustomFilter4=false,CustomFilter5=false,CustomFilter6=false,CustomFilter7=false) + ConvertedModules=true + MediumDetailSpawnRateScale=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleEventManager.uc b/exported/Engine/Classes/ParticleEventManager.uc new file mode 100755 index 00000000..4b6be48a --- /dev/null +++ b/exported/Engine/Classes/ParticleEventManager.uc @@ -0,0 +1,10 @@ +class ParticleEventManager extends Actor + abstract + native(Particle) + notplaceable + hidecategories(Navigation); + +event HandleParticleModuleEventSendToGame(ParticleModuleEventSendToGame InEvent, const out Vector InCollideDirection, const out Vector InHitLocation, const out Vector InHitNormal, const out name InBoneName) +{ + //return; +} diff --git a/exported/Engine/Classes/ParticleLODLevel.uc b/exported/Engine/Classes/ParticleLODLevel.uc new file mode 100755 index 00000000..774ccbd1 --- /dev/null +++ b/exported/Engine/Classes/ParticleLODLevel.uc @@ -0,0 +1,26 @@ +class ParticleLODLevel extends Object + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object); + +var const int Level; +var bool bEnabled; +var bool ConvertedModules; +var export editinline ParticleModuleRequired RequiredModule; +var export editinline array Modules; +var export ParticleModule TypeDataModule; +var export ParticleModuleSpawn SpawnModule; +var export ParticleModuleEventGenerator EventGenerator; +var native array SpawningModules; +var native array SpawnModules; +var native array UpdateModules; +var native array OrbitModules; +var native array EventReceiverModules; +var int PeakActiveParticles; + +defaultproperties +{ + bEnabled=true + ConvertedModules=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleLightEnvironmentComponent.uc b/exported/Engine/Classes/ParticleLightEnvironmentComponent.uc new file mode 100755 index 00000000..1de85c80 --- /dev/null +++ b/exported/Engine/Classes/ParticleLightEnvironmentComponent.uc @@ -0,0 +1,20 @@ +class ParticleLightEnvironmentComponent extends DynamicLightEnvironmentComponent + native(Light); + +var protected const transient int ReferenceCount; +var const transient int NumPooledReuses; +var const transient Actor SharedInstigator; +var const transient ParticleSystem SharedParticleSystem; +var bool bAllowDLESharing; + +defaultproperties +{ + ReferenceCount=1 + NumPooledReuses=1 + bAllowDLESharing=true + InvisibleUpdateTime=10.0000000 + MinTimeBetweenFullUpdates=3.0000000 + bForceCompositeAllLights=true + bAffectedBySmallDynamicLights=false + BoundsMethod=EDynamicLightEnvironmentBoundsMethod.DLEB_ActiveComponents +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModule.uc b/exported/Engine/Classes/ParticleModule.uc new file mode 100755 index 00000000..b6fdab9e --- /dev/null +++ b/exported/Engine/Classes/ParticleModule.uc @@ -0,0 +1,74 @@ +class ParticleModule extends Object + abstract + native(Particle) + editinlinenew + hidecategories(Object); + +enum EModuleType +{ + EPMT_General, // 0 + EPMT_TypeData, // 1 + EPMT_Beam, // 2 + EPMT_Trail, // 3 + EPMT_Spawn, // 4 + EPMT_Required, // 5 + EPMT_Event, // 6 + EPMT_MAX // 7 +}; + +enum EParticleSourceSelectionMethod +{ + EPSSM_Random, // 0 + EPSSM_Sequential, // 1 + EPSSM_MAX // 2 +}; + +struct native transient ParticleCurvePair +{ + var init string CurveName; + var init Object CurveObject; + + structdefaultproperties + { + CurveName="" + CurveObject=none + } +}; + +struct native ParticleRandomSeedInfo +{ + var() name ParameterName; + var() bool bGetSeedFromInstance; + var() bool bInstanceSeedIsIndex; + var() bool bResetSeedOnEmitterLooping; + var() array RandomSeeds; + + structdefaultproperties + { + ParameterName="None" + bGetSeedFromInstance=false + bInstanceSeedIsIndex=false + bResetSeedOnEmitterLooping=true + RandomSeeds=none + } +}; + +var bool bSpawnModule; +var bool bUpdateModule; +var bool bFinalUpdateModule; +var bool bCurvesAsColor; +var(Cascade) bool b3DDrawMode; +var bool bSupported3DDrawMode; +var bool bEnabled; +var bool bEditable; +var bool LODDuplicate; +var bool bSupportsRandomSeed; +var bool bRequiresLoopingNotification; +var const byte LODValidity; + +defaultproperties +{ + bEnabled=true + bEditable=true + LODDuplicate=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleAcceleration.uc b/exported/Engine/Classes/ParticleModuleAcceleration.uc new file mode 100755 index 00000000..e7939c9e --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleAcceleration.uc @@ -0,0 +1,19 @@ +class ParticleModuleAcceleration extends ParticleModuleAccelerationBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Acceleration) RawDistributionVector Acceleration; +var(Acceleration) bool bApplyOwnerScale; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleAcceleration.DistributionAcceleration' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAcceleration' + begin object name="DistributionAcceleration" class=Engine.DistributionVectorUniform + end object + Acceleration=(Distribution=Distribution=DistributionAcceleration,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleAccelerationBase.uc b/exported/Engine/Classes/ParticleModuleAccelerationBase.uc new file mode 100755 index 00000000..4bef65de --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleAccelerationBase.uc @@ -0,0 +1,7 @@ +class ParticleModuleAccelerationBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); + +var(Acceleration) bool bAlwaysInWorldSpace; diff --git a/exported/Engine/Classes/ParticleModuleAccelerationOverLifetime.uc b/exported/Engine/Classes/ParticleModuleAccelerationOverLifetime.uc new file mode 100755 index 00000000..c1876b4b --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleAccelerationOverLifetime.uc @@ -0,0 +1,17 @@ +class ParticleModuleAccelerationOverLifetime extends ParticleModuleAccelerationBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Acceleration) RawDistributionVector AccelOverLife; + +defaultproperties +{ + // Reference: DistributionVectorConstantCurve'Engine.Default__ParticleModuleAccelerationOverLifetime.DistributionAccelOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAccelOverLife' + begin object name="DistributionAccelOverLife" class=Engine.DistributionVectorConstantCurve + end object + AccelOverLife=(Distribution=Distribution=DistributionAccelOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleAttractorBase.uc b/exported/Engine/Classes/ParticleModuleAttractorBase.uc new file mode 100755 index 00000000..73f29066 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleAttractorBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleAttractorBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleAttractorBoneSocket.uc b/exported/Engine/Classes/ParticleModuleAttractorBoneSocket.uc new file mode 100755 index 00000000..9baee1a0 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleAttractorBoneSocket.uc @@ -0,0 +1,96 @@ +class ParticleModuleAttractorBoneSocket extends ParticleModuleAttractorBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum EBoneSocketAttractorFalloffType +{ + BSFOFF_Constant, // 0 + BSFOFF_Linear, // 1 + BSFOFF_Exponent, // 2 + BSFOFF_MAX // 3 +}; + +enum ELocationBoneSocketDestination +{ + BONESOCKETDEST_Bones, // 0 + BONESOCKETDEST_Sockets, // 1 + BONESOCKETDEST_MAX // 2 +}; + +enum ELocationBoneSocketDestSelectionMethod +{ + BONESOCKETDESTSEL_Sequential, // 0 + BONESOCKETDESTSEL_Random, // 1 + BONESOCKETDESTSEL_RandomExhaustive,// 2 + BONESOCKETDESTSEL_BlendAll, // 3 + BONESOCKETDESTSEL_MAX // 4 +}; + +struct native AttractLocationBoneSocketInfo +{ + var() name BoneSocketName; + var() Vector Offset; + + structdefaultproperties + { + BoneSocketName="None" + Offset=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +var() ParticleModuleAttractorBoneSocket.EBoneSocketAttractorFalloffType FalloffType; +var(BoneSocket) ParticleModuleAttractorBoneSocket.ELocationBoneSocketDestination DestinationType; +var(BoneSocket) ParticleModuleAttractorBoneSocket.ELocationBoneSocketDestSelectionMethod SelectionMethod; +var() bool bParticleLifeRelative; +var(BoneSocket) bool bAttractAlongLengthOfBone; +var() interp RawDistributionFloat FalloffExponent; +var() interp RawDistributionFloat Range; +var() interp RawDistributionFloat Strength; +var() interp RawDistributionFloat CollisionRadius; +var() interp RawDistributionFloat DragCoefficient; +var() interp RawDistributionFloat DragRadius; +var(BoneSocket) Vector UniversalOffset; +var(BoneSocket) array SourceLocations; +var(BoneSocket) name SkelMeshActorParamName; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorBoneSocket.DistributionFalloffExponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionFalloffExponent' + begin object name="DistributionFalloffExponent" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorBoneSocket.DistributionRange' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionRange' + begin object name="DistributionRange" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorBoneSocket.DistributionStrength' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStrength' + begin object name="DistributionStrength" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorBoneSocket.DistributionDragCoefficient' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDragCoefficient' + begin object name="DistributionDragCoefficient" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorBoneSocket.DistributionDragRadius' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDragRadius' + begin object name="DistributionDragRadius" class=Engine.DistributionFloatConstant + end object + DestinationType=ELocationBoneSocketDestination.BONESOCKETDEST_Sockets + FalloffExponent=(Distribution=Distribution=DistributionFalloffExponent,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Range=(Distribution=Distribution=DistributionRange,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Strength=(Distribution=Distribution=DistributionStrength,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + DragCoefficient=(Distribution=Distribution=DistributionDragCoefficient,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + DragRadius=(Distribution=Distribution=DistributionDragRadius,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + SkelMeshActorParamName="BoneSocketActor" + bSpawnModule=true + bUpdateModule=true + bFinalUpdateModule=true + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleAttractorLine.uc b/exported/Engine/Classes/ParticleModuleAttractorLine.uc new file mode 100755 index 00000000..a8923b12 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleAttractorLine.uc @@ -0,0 +1,27 @@ +class ParticleModuleAttractorLine extends ParticleModuleAttractorBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Attractor) Vector EndPoint0; +var(Attractor) Vector EndPoint1; +var(Attractor) RawDistributionFloat Range; +var(Attractor) RawDistributionFloat Strength; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorLine.DistributionRange' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionRange' + begin object name="DistributionRange" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorLine.DistributionStrength' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStrength' + begin object name="DistributionStrength" class=Engine.DistributionFloatConstant + end object + Range=(Distribution=Distribution=DistributionRange,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Strength=(Distribution=Distribution=DistributionStrength,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bUpdateModule=true + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleAttractorParticle.uc b/exported/Engine/Classes/ParticleModuleAttractorParticle.uc new file mode 100755 index 00000000..27f5eb51 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleAttractorParticle.uc @@ -0,0 +1,40 @@ +class ParticleModuleAttractorParticle extends ParticleModuleAttractorBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum EAttractorParticleSelectionMethod +{ + EAPSM_Random, // 0 + EAPSM_Sequential, // 1 + EAPSM_MAX // 2 +}; + +var(Attractor) noclear export name EmitterName; +var(Attractor) RawDistributionFloat Range; +var(Attractor) bool bStrengthByDistance; +var(Attractor) bool bAffectBaseVelocity; +var(Attractor) bool bRenewSource; +var(Attractor) bool bInheritSourceVel; +var(Attractor) RawDistributionFloat Strength; +var(Location) ParticleModuleAttractorParticle.EAttractorParticleSelectionMethod SelectionMethod; +var int LastSelIndex; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorParticle.DistributionRange' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionRange' + begin object name="DistributionRange" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorParticle.DistributionStrength' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStrength' + begin object name="DistributionStrength" class=Engine.DistributionFloatConstant + end object + Range=(Distribution=Distribution=DistributionRange,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bStrengthByDistance=true + Strength=(Distribution=Distribution=DistributionStrength,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleAttractorPoint.uc b/exported/Engine/Classes/ParticleModuleAttractorPoint.uc new file mode 100755 index 00000000..32560a3e --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleAttractorPoint.uc @@ -0,0 +1,37 @@ +class ParticleModuleAttractorPoint extends ParticleModuleAttractorBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Attractor) RawDistributionVector Position; +var(Attractor) RawDistributionFloat Range; +var(Attractor) RawDistributionFloat Strength; +var(Attractor) bool StrengthByDistance; +var(Attractor) bool bAffectBaseVelocity; +var(Attractor) bool bOverrideVelocity; +var(Attractor) bool bUseWorldSpacePosition; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleAttractorPoint.DistributionPosition' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPosition' + begin object name="DistributionPosition" class=Engine.DistributionVectorConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorPoint.DistributionRange' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionRange' + begin object name="DistributionRange" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorPoint.DistributionStrength' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStrength' + begin object name="DistributionStrength" class=Engine.DistributionFloatConstant + end object + Position=(Distribution=Distribution=DistributionPosition,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Range=(Distribution=Distribution=DistributionRange,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Strength=(Distribution=Distribution=DistributionStrength,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StrengthByDistance=true + bUpdateModule=true + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleAttractorSkelVertSurface.uc b/exported/Engine/Classes/ParticleModuleAttractorSkelVertSurface.uc new file mode 100755 index 00000000..722f7144 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleAttractorSkelVertSurface.uc @@ -0,0 +1,77 @@ +class ParticleModuleAttractorSkelVertSurface extends ParticleModuleAttractorBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum EVertSurfaceAttractorFalloffType +{ + VSFOFF_Constant, // 0 + VSFOFF_Linear, // 1 + VSFOFF_Exponent, // 2 + VSFOFF_MAX // 3 +}; + +enum EAttractorSkelVertSurfaceDestination +{ + VERTSURFACEDEST_Vert, // 0 + VERTSURFACEDEST_Surface, // 1 + VERTSURFACEDEST_MAX // 2 +}; + +var() ParticleModuleAttractorSkelVertSurface.EVertSurfaceAttractorFalloffType FalloffType; +var(VertSurface) ParticleModuleAttractorSkelVertSurface.EAttractorSkelVertSurfaceDestination DestinationType; +var() bool bParticleLifeRelative; +var(VertSurface) bool bEnforceNormalCheck; +var() interp RawDistributionFloat FalloffExponent; +var() interp RawDistributionFloat Range; +var() interp RawDistributionFloat Strength; +var() interp RawDistributionFloat CollisionRadius; +var() interp RawDistributionFloat DragCoefficient; +var() interp RawDistributionFloat DragRadius; +var(VertSurface) Vector UniversalOffset; +var(VertSurface) name SkelMeshActorParamName; +var(VertSurface) array ValidAssociatedBones; +var(VertSurface) Vector NormalToCompare; +var(VertSurface) float NormalCheckToleranceDegrees; +var float NormalCheckTolerance; +var(VertSurface) array ValidMaterialIndices; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorSkelVertSurface.DistributionFalloffExponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionFalloffExponent' + begin object name="DistributionFalloffExponent" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorSkelVertSurface.DistributionRange' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionRange' + begin object name="DistributionRange" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorSkelVertSurface.DistributionStrength' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStrength' + begin object name="DistributionStrength" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorSkelVertSurface.DistributionDragCoefficient' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDragCoefficient' + begin object name="DistributionDragCoefficient" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleAttractorSkelVertSurface.DistributionDragRadius' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDragRadius' + begin object name="DistributionDragRadius" class=Engine.DistributionFloatConstant + end object + FalloffExponent=(Distribution=Distribution=DistributionFalloffExponent,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Range=(Distribution=Distribution=DistributionRange,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Strength=(Distribution=Distribution=DistributionStrength,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + DragCoefficient=(Distribution=Distribution=DistributionDragCoefficient,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + DragRadius=(Distribution=Distribution=DistributionDragRadius,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + SkelMeshActorParamName="VertSurfaceActor" + bSpawnModule=true + bUpdateModule=true + bFinalUpdateModule=true + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleBeamBase.uc b/exported/Engine/Classes/ParticleModuleBeamBase.uc new file mode 100755 index 00000000..304a3b1c --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleBeamBase.uc @@ -0,0 +1,25 @@ +class ParticleModuleBeamBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); + +enum Beam2SourceTargetMethod +{ + PEB2STM_Default, // 0 + PEB2STM_UserSet, // 1 + PEB2STM_Emitter, // 2 + PEB2STM_Particle, // 3 + PEB2STM_Actor, // 4 + PEB2STM_PawnMeshSocket, // 5 + PEB2STM_MAX // 6 +}; + +enum Beam2SourceTargetTangentMethod +{ + PEB2STTM_Direct, // 0 + PEB2STTM_UserSet, // 1 + PEB2STTM_Distribution, // 2 + PEB2STTM_Emitter, // 3 + PEB2STTM_MAX // 4 +}; diff --git a/exported/Engine/Classes/ParticleModuleBeamModifier.uc b/exported/Engine/Classes/ParticleModuleBeamModifier.uc new file mode 100755 index 00000000..3a228d43 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleBeamModifier.uc @@ -0,0 +1,56 @@ +class ParticleModuleBeamModifier extends ParticleModuleBeamBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum BeamModifierType +{ + PEB2MT_Source, // 0 + PEB2MT_Target, // 1 + PEB2MT_MAX // 2 +}; + +struct native BeamModifierOptions +{ + var() bool bModify; + var() bool bScale; + var() bool bLock; + + structdefaultproperties + { + bModify=false + bScale=false + bLock=false + } +}; + +var(Modifier) ParticleModuleBeamModifier.BeamModifierType ModifierType; +var(Position) BeamModifierOptions PositionOptions; +var(Position) RawDistributionVector Position; +var(Tangent) BeamModifierOptions TangentOptions; +var(Tangent) RawDistributionVector Tangent; +var(Tangent) bool bAbsoluteTangent; +var(Strength) BeamModifierOptions StrengthOptions; +var(Strength) RawDistributionFloat Strength; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleBeamModifier.DistributionPosition' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPosition' + begin object name="DistributionPosition" class=Engine.DistributionVectorConstant + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleBeamModifier.DistributionTangent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionTangent' + begin object name="DistributionTangent" class=Engine.DistributionVectorConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleBeamModifier.DistributionStrength' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStrength' + begin object name="DistributionStrength" class=Engine.DistributionFloatConstant + end object + Position=(Distribution=Distribution=DistributionPosition,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Tangent=(Distribution=Distribution=DistributionTangent,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Strength=(Distribution=Distribution=DistributionStrength,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleBeamNoise.uc b/exported/Engine/Classes/ParticleModuleBeamNoise.uc new file mode 100755 index 00000000..722b1f26 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleBeamNoise.uc @@ -0,0 +1,66 @@ +class ParticleModuleBeamNoise extends ParticleModuleBeamBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(LowFreq) bool bLowFreq_Enabled; +var(LowFreq) bool bNRScaleEmitterTime; +var(LowFreq) bool bSmooth; +var const bool bNoiseLock; +var(LowFreq) bool bOscillate; +var(LowFreq) bool bUseNoiseTangents; +var(LowFreq) bool bTargetNoise; +var(LowFreq) bool bApplyNoiseScale; +var(LowFreq) int Frequency; +var(LowFreq) int Frequency_LowRange; +var(LowFreq) RawDistributionVector NoiseRange; +var(LowFreq) RawDistributionFloat NoiseRangeScale; +var(LowFreq) RawDistributionVector NoiseSpeed; +var(LowFreq) float NoiseLockRadius; +var(LowFreq) float NoiseLockTime; +var(LowFreq) float NoiseTension; +var(LowFreq) RawDistributionFloat NoiseTangentStrength; +var(LowFreq) int NoiseTessellation; +var(LowFreq) float FrequencyDistance; +var(LowFreq) RawDistributionFloat NoiseScale; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleBeamNoise.DistributionNoiseRange' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionNoiseRange' + begin object name="DistributionNoiseRange" class=Engine.DistributionVectorConstant + Constant=(X=50.0000000,Y=50.0000000,Z=50.0000000) + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleBeamNoise.DistributionNoiseRangeScale' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionNoiseRangeScale' + begin object name="DistributionNoiseRangeScale" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleBeamNoise.DistributionNoiseSpeed' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionNoiseSpeed' + begin object name="DistributionNoiseSpeed" class=Engine.DistributionVectorConstant + Constant=(X=50.0000000,Y=50.0000000,Z=50.0000000) + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleBeamNoise.DistributionNoiseTangentStrength' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionNoiseTangentStrength' + begin object name="DistributionNoiseTangentStrength" class=Engine.DistributionFloatConstant + Constant=250.0000000 + end object + // Reference: DistributionFloatConstantCurve'Engine.Default__ParticleModuleBeamNoise.DistributionNoiseScale' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionNoiseScale' + begin object name="DistributionNoiseScale" class=Engine.DistributionFloatConstantCurve + end object + NoiseRange=(Distribution=Distribution=DistributionNoiseRange,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(50.0000000,50.0000000,50.0000000,50.0000000,50.0000000,50.0000000,50.0000000,50.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + NoiseRangeScale=(Distribution=Distribution=DistributionNoiseRangeScale,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + NoiseSpeed=(Distribution=Distribution=DistributionNoiseSpeed,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(50.0000000,50.0000000,50.0000000,50.0000000,50.0000000,50.0000000,50.0000000,50.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + NoiseLockRadius=1.0000000 + NoiseTension=0.5000000 + NoiseTangentStrength=(Distribution=Distribution=DistributionNoiseTangentStrength,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(250.0000000,250.0000000,250.0000000,250.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + NoiseTessellation=1 + NoiseScale=(Distribution=Distribution=DistributionNoiseScale,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleBeamSource.uc b/exported/Engine/Classes/ParticleModuleBeamSource.uc new file mode 100755 index 00000000..484486fe --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleBeamSource.uc @@ -0,0 +1,41 @@ +class ParticleModuleBeamSource extends ParticleModuleBeamBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Source) ParticleModuleBeamBase.Beam2SourceTargetMethod SourceMethod; +var(Source) ParticleModuleBeamBase.Beam2SourceTargetTangentMethod SourceTangentMethod; +var(Source) name SourceName; +var(Source) name SourceSocketName; +var(Source) bool bSourceAbsolute; +var(Source) bool bLockSource; +var(Source) bool bLockSourceTangent; +var(Source) bool bLockSourceStength; +var(Source) RawDistributionVector Source; +var(Source) RawDistributionVector SourceTangent; +var(Source) RawDistributionFloat SourceStrength; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleBeamSource.DistributionSource' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionSource' + begin object name="DistributionSource" class=Engine.DistributionVectorConstant + Constant=(X=50.0000000,Y=50.0000000,Z=50.0000000) + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleBeamSource.DistributionSourceTangent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionSourceTangent' + begin object name="DistributionSourceTangent" class=Engine.DistributionVectorConstant + Constant=(X=1.0000000,Y=0.0000000,Z=0.0000000) + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleBeamSource.DistributionSourceStrength' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionSourceStrength' + begin object name="DistributionSourceStrength" class=Engine.DistributionFloatConstant + Constant=25.0000000 + end object + Source=(Distribution=Distribution=DistributionSource,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(50.0000000,50.0000000,50.0000000,50.0000000,50.0000000,50.0000000,50.0000000,50.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + SourceTangent=(Distribution=Distribution=DistributionSourceTangent,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,1.0000000,1.0000000,0.0000000,0.0000000,1.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + SourceStrength=(Distribution=Distribution=DistributionSourceStrength,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(25.0000000,25.0000000,25.0000000,25.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleBeamTarget.uc b/exported/Engine/Classes/ParticleModuleBeamTarget.uc new file mode 100755 index 00000000..09fb5d63 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleBeamTarget.uc @@ -0,0 +1,43 @@ +class ParticleModuleBeamTarget extends ParticleModuleBeamBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Target) ParticleModuleBeamBase.Beam2SourceTargetMethod TargetMethod; +var(Target) ParticleModuleBeamBase.Beam2SourceTargetTangentMethod TargetTangentMethod; +var(Target) name TargetName; +var(Target) name TargetSocketName; +var(Target) RawDistributionVector Target; +var(Target) bool bTargetAbsolute; +var(Target) bool bLockTarget; +var(Target) bool bLockTargetTangent; +var(Target) bool bLockTargetStength; +var(Target) RawDistributionVector TargetTangent; +var(Target) RawDistributionFloat TargetStrength; +var(Target) float LockRadius; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleBeamTarget.DistributionTarget' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionTarget' + begin object name="DistributionTarget" class=Engine.DistributionVectorConstant + Constant=(X=50.0000000,Y=50.0000000,Z=50.0000000) + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleBeamTarget.DistributionTargetTangent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionTargetTangent' + begin object name="DistributionTargetTangent" class=Engine.DistributionVectorConstant + Constant=(X=1.0000000,Y=0.0000000,Z=0.0000000) + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleBeamTarget.DistributionTargetStrength' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionTargetStrength' + begin object name="DistributionTargetStrength" class=Engine.DistributionFloatConstant + Constant=25.0000000 + end object + Target=(Distribution=Distribution=DistributionTarget,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(50.0000000,50.0000000,50.0000000,50.0000000,50.0000000,50.0000000,50.0000000,50.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + TargetTangent=(Distribution=Distribution=DistributionTargetTangent,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,1.0000000,1.0000000,0.0000000,0.0000000,1.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + TargetStrength=(Distribution=Distribution=DistributionTargetStrength,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(25.0000000,25.0000000,25.0000000,25.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + LockRadius=10.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleCameraBase.uc b/exported/Engine/Classes/ParticleModuleCameraBase.uc new file mode 100755 index 00000000..31da5215 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleCameraBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleCameraBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleCameraOffset.uc b/exported/Engine/Classes/ParticleModuleCameraOffset.uc new file mode 100755 index 00000000..2df5b613 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleCameraOffset.uc @@ -0,0 +1,29 @@ +class ParticleModuleCameraOffset extends ParticleModuleCameraBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum EParticleCameraOffsetUpdateMethod +{ + EPCOUM_DirectSet, // 0 + EPCOUM_Additive, // 1 + EPCOUM_Scalar, // 2 + EPCOUM_MAX // 3 +}; + +var(Camera) RawDistributionFloat CameraOffset; +var(Camera) bool bSpawnTimeOnly; +var(Camera) ParticleModuleCameraOffset.EParticleCameraOffsetUpdateMethod UpdateMethod; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleCameraOffset.DistributionCameraOffset' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionCameraOffset' + begin object name="DistributionCameraOffset" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + CameraOffset=(Distribution=Distribution=DistributionCameraOffset,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleCollision.uc b/exported/Engine/Classes/ParticleModuleCollision.uc new file mode 100755 index 00000000..38aba0ea --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleCollision.uc @@ -0,0 +1,89 @@ +class ParticleModuleCollision extends ParticleModuleCollisionBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum ParticleAttractorActionType +{ + PAAT_None, // 0 + PAAT_Destroy, // 1 + PAAT_Freeze, // 2 + PAAT_Event, // 3 + PAAT_MAX // 4 +}; + +struct native ParticleAttractorCollisionAction +{ + var() ParticleModuleCollision.ParticleAttractorActionType Type; + var() string EventName; + + structdefaultproperties + { + Type=ParticleAttractorActionType.PAAT_None + EventName="" + } +}; + +var(Collision) RawDistributionVector DampingFactor; +var(Collision) RawDistributionVector DampingFactorRotation; +var(Collision) RawDistributionFloat MaxCollisions; +var(Collision) ParticleModuleCollisionBase.EParticleCollisionComplete CollisionCompletionOption; +var(Collision) bool bApplyPhysics; +var(Collision) bool bPawnsDoNotDecrementCount; +var(Collision) bool bOnlyVerticalNormalsDecrementCount; +var(Performance) bool bDropDetail; +var(Performance) bool bCollideOnlyIfVisible; +var(Attractors) bool bCollideWithWorld; +var(Attractors) bool bCollideWithWorldAttractors; +var(Collision) RawDistributionFloat ParticleMass; +var(Collision) float DirScalar; +var(Collision) float VerticalFudgeFactor; +var(Collision) RawDistributionFloat DelayAmount; +var(Performance) float MaxCollisionDistance; +var(Attractors) array ParticleAttractorCollisionActions; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleCollision.DistributionDampingFactor' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDampingFactor' + begin object name="DistributionDampingFactor" class=Engine.DistributionVectorUniform + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleCollision.DistributionDampingFactorRotation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDampingFactorRotation' + begin object name="DistributionDampingFactorRotation" class=Engine.DistributionVectorConstant + Constant=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleCollision.DistributionMaxCollisions' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionMaxCollisions' + begin object name="DistributionMaxCollisions" class=Engine.DistributionFloatUniform + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleCollision.DistributionParticleMass' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionParticleMass' + begin object name="DistributionParticleMass" class=Engine.DistributionFloatConstant + Constant=0.1000000 + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleCollision.DistributionDelayAmount' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDelayAmount' + begin object name="DistributionDelayAmount" class=Engine.DistributionFloatConstant + end object + DampingFactor=(Distribution=Distribution=DistributionDampingFactor,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + DampingFactorRotation=(Distribution=Distribution=DistributionDampingFactorRotation,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + MaxCollisions=(Distribution=Distribution=DistributionMaxCollisions,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bPawnsDoNotDecrementCount=true + bDropDetail=true + bCollideOnlyIfVisible=true + bCollideWithWorld=true + ParticleMass=(Distribution=Distribution=DistributionParticleMass,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.1000000,0.1000000,0.1000000,0.1000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + DirScalar=3.5000000 + VerticalFudgeFactor=0.1000000 + DelayAmount=(Distribution=Distribution=DistributionDelayAmount,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + MaxCollisionDistance=1000.0000000 + bSpawnModule=true + bUpdateModule=true + LODDuplicate=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleCollisionActor.uc b/exported/Engine/Classes/ParticleModuleCollisionActor.uc new file mode 100755 index 00000000..2d8aa798 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleCollisionActor.uc @@ -0,0 +1,46 @@ +class ParticleModuleCollisionActor extends ParticleModuleCollision + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object); + +var(Actors) array ActorsToCollideWith; +var(Actors) bool bCheckPawnCollisions; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleCollisionActor.DistributionDampingFactor' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDampingFactor' + // Archetype: DistributionVectorUniform'Engine.Default__ParticleModuleCollision.DistributionDampingFactor' + begin object name="DistributionDampingFactor" + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleCollisionActor.DistributionDampingFactorRotation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDampingFactorRotation' + // Archetype: DistributionVectorConstant'Engine.Default__ParticleModuleCollision.DistributionDampingFactorRotation' + begin object name="DistributionDampingFactorRotation" + end object + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleCollisionActor.DistributionMaxCollisions' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionMaxCollisions' + // Archetype: DistributionFloatUniform'Engine.Default__ParticleModuleCollision.DistributionMaxCollisions' + begin object name="DistributionMaxCollisions" + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleCollisionActor.DistributionParticleMass' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionParticleMass' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleCollision.DistributionParticleMass' + begin object name="DistributionParticleMass" + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleCollisionActor.DistributionDelayAmount' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDelayAmount' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleCollision.DistributionDelayAmount' + begin object name="DistributionDelayAmount" + end object + DampingFactor=(Distribution=Distribution=DistributionDampingFactor) + DampingFactorRotation=(Distribution=Distribution=DistributionDampingFactorRotation) + MaxCollisions=(Distribution=Distribution=DistributionMaxCollisions) + ParticleMass=(Distribution=Distribution=DistributionParticleMass) + DelayAmount=(Distribution=Distribution=DistributionDelayAmount) +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleCollisionBase.uc b/exported/Engine/Classes/ParticleModuleCollisionBase.uc new file mode 100755 index 00000000..898a7cca --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleCollisionBase.uc @@ -0,0 +1,16 @@ +class ParticleModuleCollisionBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); + +enum EParticleCollisionComplete +{ + EPCC_Kill, // 0 + EPCC_Freeze, // 1 + EPCC_HaltCollisions, // 2 + EPCC_FreezeTranslation, // 3 + EPCC_FreezeRotation, // 4 + EPCC_FreezeMovement, // 5 + EPCC_MAX // 6 +}; diff --git a/exported/Engine/Classes/ParticleModuleColor.uc b/exported/Engine/Classes/ParticleModuleColor.uc new file mode 100755 index 00000000..7d9c0dd3 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleColor.uc @@ -0,0 +1,28 @@ +class ParticleModuleColor extends ParticleModuleColorBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Color) RawDistributionVector StartColor; +var(Color) RawDistributionFloat StartAlpha; +var(Color) bool bClampAlpha; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleColor.DistributionStartColor' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartColor' + begin object name="DistributionStartColor" class=Engine.DistributionVectorConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleColor.DistributionStartAlpha' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartAlpha' + begin object name="DistributionStartAlpha" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + StartColor=(Distribution=Distribution=DistributionStartColor,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartAlpha=(Distribution=Distribution=DistributionStartAlpha,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bClampAlpha=true + bSpawnModule=true + bCurvesAsColor=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleColorBase.uc b/exported/Engine/Classes/ParticleModuleColorBase.uc new file mode 100755 index 00000000..f5f1e5e3 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleColorBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleColorBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleColorByParameter.uc b/exported/Engine/Classes/ParticleModuleColorByParameter.uc new file mode 100755 index 00000000..60cc3af2 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleColorByParameter.uc @@ -0,0 +1,13 @@ +class ParticleModuleColorByParameter extends ParticleModuleColorBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Color) name ColorParam; +var(Color) Color DefaultColor; + +defaultproperties +{ + DefaultColor=(R=255,G=255,B=255,A=255) + bSpawnModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleColorOverLife.uc b/exported/Engine/Classes/ParticleModuleColorOverLife.uc new file mode 100755 index 00000000..7f437147 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleColorOverLife.uc @@ -0,0 +1,29 @@ +class ParticleModuleColorOverLife extends ParticleModuleColorBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Color) RawDistributionVector ColorOverLife; +var(Color) RawDistributionFloat AlphaOverLife; +var(Color) bool bClampAlpha; + +defaultproperties +{ + // Reference: DistributionVectorConstantCurve'Engine.Default__ParticleModuleColorOverLife.DistributionColorOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionColorOverLife' + begin object name="DistributionColorOverLife" class=Engine.DistributionVectorConstantCurve + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleColorOverLife.DistributionAlphaOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAlphaOverLife' + begin object name="DistributionAlphaOverLife" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + ColorOverLife=(Distribution=Distribution=DistributionColorOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + AlphaOverLife=(Distribution=Distribution=DistributionAlphaOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bClampAlpha=true + bSpawnModule=true + bUpdateModule=true + bCurvesAsColor=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleColorScaleOverDensity.uc b/exported/Engine/Classes/ParticleModuleColorScaleOverDensity.uc new file mode 100755 index 00000000..3bdd824a --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleColorScaleOverDensity.uc @@ -0,0 +1,25 @@ +class ParticleModuleColorScaleOverDensity extends ParticleModuleColorBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Color) RawDistributionVector ColorScaleOverDensity; +var(Color) RawDistributionFloat AlphaScaleOverDensity; + +defaultproperties +{ + // Reference: DistributionVectorConstantCurve'Engine.Default__ParticleModuleColorScaleOverDensity.DistributionColorScaleOverDensity' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionColorScaleOverDensity' + begin object name="DistributionColorScaleOverDensity" class=Engine.DistributionVectorConstantCurve + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleColorScaleOverDensity.DistributionAlphaScaleOverDensity' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAlphaScaleOverDensity' + begin object name="DistributionAlphaScaleOverDensity" class=Engine.DistributionFloatConstant + end object + ColorScaleOverDensity=(Distribution=Distribution=DistributionColorScaleOverDensity,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + AlphaScaleOverDensity=(Distribution=Distribution=DistributionAlphaScaleOverDensity,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleColorScaleOverLife.uc b/exported/Engine/Classes/ParticleModuleColorScaleOverLife.uc new file mode 100755 index 00000000..9ff3c4b7 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleColorScaleOverLife.uc @@ -0,0 +1,28 @@ +class ParticleModuleColorScaleOverLife extends ParticleModuleColorBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Color) RawDistributionVector ColorScaleOverLife; +var(Color) RawDistributionFloat AlphaScaleOverLife; +var(Color) bool bEmitterTime; + +defaultproperties +{ + // Reference: DistributionVectorConstantCurve'Engine.Default__ParticleModuleColorScaleOverLife.DistributionColorScaleOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionColorScaleOverLife' + begin object name="DistributionColorScaleOverLife" class=Engine.DistributionVectorConstantCurve + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleColorScaleOverLife.DistributionAlphaScaleOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAlphaScaleOverLife' + begin object name="DistributionAlphaScaleOverLife" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + ColorScaleOverLife=(Distribution=Distribution=DistributionColorScaleOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + AlphaScaleOverLife=(Distribution=Distribution=DistributionAlphaScaleOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true + bCurvesAsColor=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleColor_Seeded.uc b/exported/Engine/Classes/ParticleModuleColor_Seeded.uc new file mode 100755 index 00000000..ad1ad314 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleColor_Seeded.uc @@ -0,0 +1,27 @@ +class ParticleModuleColor_Seeded extends ParticleModuleColor + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object); + +var(RandomSeed) ParticleRandomSeedInfo RandomSeedInfo; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleColor_Seeded.DistributionStartColor' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartColor' + // Archetype: DistributionVectorConstant'Engine.Default__ParticleModuleColor.DistributionStartColor' + begin object name="DistributionStartColor" + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleColor_Seeded.DistributionStartAlpha' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartAlpha' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleColor.DistributionStartAlpha' + begin object name="DistributionStartAlpha" + end object + RandomSeedInfo=(ParameterName="None",bGetSeedFromInstance=false,bInstanceSeedIsIndex=false,bResetSeedOnEmitterLooping=true,RandomSeeds=none) + StartColor=(Distribution=Distribution=DistributionStartColor) + StartAlpha=(Distribution=Distribution=DistributionStartAlpha) + bSupportsRandomSeed=true + bRequiresLoopingNotification=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleEventBase.uc b/exported/Engine/Classes/ParticleModuleEventBase.uc new file mode 100755 index 00000000..c64b6257 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleEventBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleEventBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleEventGenerator.uc b/exported/Engine/Classes/ParticleModuleEventGenerator.uc new file mode 100755 index 00000000..d816c548 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleEventGenerator.uc @@ -0,0 +1,38 @@ +class ParticleModuleEventGenerator extends ParticleModuleEventBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +struct native ParticleEvent_GenerateInfo +{ + var() ParticleSystemComponent.EParticleEventType Type; + var() int Frequency; + var() int LowFreq; + var() int ParticleFrequency; + var() bool FirstTimeOnly; + var() bool LastTimeOnly; + var() bool UseReflectedImpactVector; + var() name CustomName; + var() editinline array ParticleModuleEventsToSendToGame; + + structdefaultproperties + { + Type=EParticleEventType.EPET_Any + Frequency=0 + LowFreq=-1 + ParticleFrequency=0 + FirstTimeOnly=false + LastTimeOnly=false + UseReflectedImpactVector=false + CustomName="None" + ParticleModuleEventsToSendToGame=none + } +}; + +var(Events) noclear export array Events; + +defaultproperties +{ + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleEventReceiverBase.uc b/exported/Engine/Classes/ParticleModuleEventReceiverBase.uc new file mode 100755 index 00000000..24e683cd --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleEventReceiverBase.uc @@ -0,0 +1,8 @@ +class ParticleModuleEventReceiverBase extends ParticleModuleEventBase + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Source) ParticleSystemComponent.EParticleEventType EventGeneratorType; +var(Source) name EventName; diff --git a/exported/Engine/Classes/ParticleModuleEventReceiverKillParticles.uc b/exported/Engine/Classes/ParticleModuleEventReceiverKillParticles.uc new file mode 100755 index 00000000..e9e14c93 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleEventReceiverKillParticles.uc @@ -0,0 +1,12 @@ +class ParticleModuleEventReceiverKillParticles extends ParticleModuleEventReceiverBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object); + +var() bool bStopSpawning; + +defaultproperties +{ + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleEventReceiverSpawn.uc b/exported/Engine/Classes/ParticleModuleEventReceiverSpawn.uc new file mode 100755 index 00000000..df3774be --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleEventReceiverSpawn.uc @@ -0,0 +1,29 @@ +class ParticleModuleEventReceiverSpawn extends ParticleModuleEventReceiverBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object); + +var(Spawn) RawDistributionFloat SpawnCount; +var(Spawn) bool bUseParticleTime; +var(Location) bool bUsePSysLocation; +var(Velocity) bool bInheritVelocity; +var(Velocity) RawDistributionVector InheritVelocityScale; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleEventReceiverSpawn.RequiredDistributionSpawnCount' + // TemplateOwnerClass: none + // TemplateOwnerName: 'RequiredDistributionSpawnCount' + begin object name="RequiredDistributionSpawnCount" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleEventReceiverSpawn.RequiredDistributionInheritVelocityScale' + // TemplateOwnerClass: none + // TemplateOwnerName: 'RequiredDistributionInheritVelocityScale' + begin object name="RequiredDistributionInheritVelocityScale" class=Engine.DistributionVectorConstant + Constant=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + SpawnCount=(Distribution=Distribution=RequiredDistributionSpawnCount,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + InheritVelocityScale=(Distribution=Distribution=RequiredDistributionInheritVelocityScale,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleEventSendToGame.uc b/exported/Engine/Classes/ParticleModuleEventSendToGame.uc new file mode 100755 index 00000000..7761b6ef --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleEventSendToGame.uc @@ -0,0 +1,10 @@ +class ParticleModuleEventSendToGame extends Object + abstract + native(Particle) + editinlinenew + hidecategories(Object); + +function DoEvent(const out Vector InCollideDirection, const out Vector InHitLocation, const out Vector InHitNormal, const out name InBoneName) +{ + //return; +} diff --git a/exported/Engine/Classes/ParticleModuleKillBase.uc b/exported/Engine/Classes/ParticleModuleKillBase.uc new file mode 100755 index 00000000..690d9a7f --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleKillBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleKillBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleKillBox.uc b/exported/Engine/Classes/ParticleModuleKillBox.uc new file mode 100755 index 00000000..77f37b49 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleKillBox.uc @@ -0,0 +1,29 @@ +class ParticleModuleKillBox extends ParticleModuleKillBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Kill) RawDistributionVector LowerLeftCorner; +var(Kill) RawDistributionVector UpperRightCorner; +var(Kill) bool bAbsolute; +var(Kill) bool bKillInside; +var(Kill) bool bAxisAlignedAndFixedSize; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleKillBox.DistributionLowerLeftCorner' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLowerLeftCorner' + begin object name="DistributionLowerLeftCorner" class=Engine.DistributionVectorConstant + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleKillBox.DistributionUpperRightCorner' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionUpperRightCorner' + begin object name="DistributionUpperRightCorner" class=Engine.DistributionVectorConstant + end object + LowerLeftCorner=(Distribution=Distribution=DistributionLowerLeftCorner,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + UpperRightCorner=(Distribution=Distribution=DistributionUpperRightCorner,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bAxisAlignedAndFixedSize=true + bUpdateModule=true + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleKillHeight.uc b/exported/Engine/Classes/ParticleModuleKillHeight.uc new file mode 100755 index 00000000..23f835d2 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleKillHeight.uc @@ -0,0 +1,21 @@ +class ParticleModuleKillHeight extends ParticleModuleKillBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Kill) RawDistributionFloat Height; +var(Kill) bool bAbsolute; +var(Kill) bool bFloor; +var(Kill) bool bApplyPSysScale; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleKillHeight.DistributionHeight' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionHeight' + begin object name="DistributionHeight" class=Engine.DistributionFloatConstant + end object + Height=(Distribution=Distribution=DistributionHeight,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bUpdateModule=true + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLifetime.uc b/exported/Engine/Classes/ParticleModuleLifetime.uc new file mode 100755 index 00000000..3f4612ab --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLifetime.uc @@ -0,0 +1,17 @@ +class ParticleModuleLifetime extends ParticleModuleLifetimeBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Lifetime) RawDistributionFloat Lifetime; + +defaultproperties +{ + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleLifetime.DistributionLifetime' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLifetime' + begin object name="DistributionLifetime" class=Engine.DistributionFloatUniform + end object + Lifetime=(Distribution=Distribution=DistributionLifetime,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLifetimeBase.uc b/exported/Engine/Classes/ParticleModuleLifetimeBase.uc new file mode 100755 index 00000000..cb504567 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLifetimeBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleLifetimeBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleLifetime_Seeded.uc b/exported/Engine/Classes/ParticleModuleLifetime_Seeded.uc new file mode 100755 index 00000000..3aab0fc8 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLifetime_Seeded.uc @@ -0,0 +1,20 @@ +class ParticleModuleLifetime_Seeded extends ParticleModuleLifetime + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object); + +var(RandomSeed) ParticleRandomSeedInfo RandomSeedInfo; + +defaultproperties +{ + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleLifetime_Seeded.DistributionLifetime' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLifetime' + // Archetype: DistributionFloatUniform'Engine.Default__ParticleModuleLifetime.DistributionLifetime' + begin object name="DistributionLifetime" + end object + RandomSeedInfo=(ParameterName="None",bGetSeedFromInstance=false,bInstanceSeedIsIndex=false,bResetSeedOnEmitterLooping=true,RandomSeeds=none) + Lifetime=(Distribution=Distribution=DistributionLifetime) + bSupportsRandomSeed=true + bRequiresLoopingNotification=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLocation.uc b/exported/Engine/Classes/ParticleModuleLocation.uc new file mode 100755 index 00000000..688d3961 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocation.uc @@ -0,0 +1,20 @@ +class ParticleModuleLocation extends ParticleModuleLocationBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Location) RawDistributionVector StartLocation; +var(Location) float DistributeOverNPoints; +var(Location) float DistributeThreshold; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleLocation.DistributionStartLocation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartLocation' + begin object name="DistributionStartLocation" class=Engine.DistributionVectorUniform + end object + StartLocation=(Distribution=Distribution=DistributionStartLocation,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLocationBase.uc b/exported/Engine/Classes/ParticleModuleLocationBase.uc new file mode 100755 index 00000000..3879b51c --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocationBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleLocationBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleLocationBoneSocket.uc b/exported/Engine/Classes/ParticleModuleLocationBoneSocket.uc new file mode 100755 index 00000000..37c685ba --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocationBoneSocket.uc @@ -0,0 +1,52 @@ +class ParticleModuleLocationBoneSocket extends ParticleModuleLocationBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum ELocationBoneSocketSource +{ + BONESOCKETSOURCE_Bones, // 0 + BONESOCKETSOURCE_Sockets, // 1 + BONESOCKETSOURCE_MAX // 2 +}; + +enum ELocationBoneSocketSelectionMethod +{ + BONESOCKETSEL_Sequential, // 0 + BONESOCKETSEL_Random, // 1 + BONESOCKETSEL_RandomExhaustive, // 2 + BONESOCKETSEL_MAX // 3 +}; + +struct native LocationBoneSocketInfo +{ + var() name BoneSocketName; + var() Vector Offset; + + structdefaultproperties + { + BoneSocketName="None" + Offset=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +var(BoneSocket) ParticleModuleLocationBoneSocket.ELocationBoneSocketSource SourceType; +var(BoneSocket) ParticleModuleLocationBoneSocket.ELocationBoneSocketSelectionMethod SelectionMethod; +var(BoneSocket) Vector UniversalOffset; +var(BoneSocket) array SourceLocations; +var(BoneSocket) bool bUpdatePositionEachFrame; +var(BoneSocket) bool bOrientMeshEmitters; +var(BoneSocket) bool bInheritVelocityAtSpawn; +var(BoneSocket) name SkelMeshActorParamName; +var float LastUpdateTime; + +defaultproperties +{ + SourceType=ELocationBoneSocketSource.BONESOCKETSOURCE_Sockets + bOrientMeshEmitters=true + SkelMeshActorParamName="BoneSocketActor" + bSpawnModule=true + bUpdateModule=true + bFinalUpdateModule=true + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLocationDirect.uc b/exported/Engine/Classes/ParticleModuleLocationDirect.uc new file mode 100755 index 00000000..b52cff2b --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocationDirect.uc @@ -0,0 +1,40 @@ +class ParticleModuleLocationDirect extends ParticleModuleLocationBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Location) RawDistributionVector Location; +var(Location) RawDistributionVector LocationOffset; +var(Location) RawDistributionVector ScaleFactor; +var(Location) RawDistributionVector Direction; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleLocationDirect.DistributionLocation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLocation' + begin object name="DistributionLocation" class=Engine.DistributionVectorUniform + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleLocationDirect.DistributionLocationOffset' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLocationOffset' + begin object name="DistributionLocationOffset" class=Engine.DistributionVectorConstant + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleLocationDirect.DistributionScaleFactor' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionScaleFactor' + begin object name="DistributionScaleFactor" class=Engine.DistributionVectorConstant + Constant=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleLocationDirect.DistributionDirection' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDirection' + begin object name="DistributionDirection" class=Engine.DistributionVectorUniform + end object + Location=(Distribution=Distribution=DistributionLocation,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + LocationOffset=(Distribution=Distribution=DistributionLocationOffset,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + ScaleFactor=(Distribution=Distribution=DistributionScaleFactor,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Direction=(Distribution=Distribution=DistributionDirection,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLocationEmitter.uc b/exported/Engine/Classes/ParticleModuleLocationEmitter.uc new file mode 100755 index 00000000..9709c378 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocationEmitter.uc @@ -0,0 +1,25 @@ +class ParticleModuleLocationEmitter extends ParticleModuleLocationBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum ELocationEmitterSelectionMethod +{ + ELESM_Random, // 0 + ELESM_Sequential, // 1 + ELESM_MAX // 2 +}; + +var(Location) noclear export name EmitterName; +var(Location) ParticleModuleLocationEmitter.ELocationEmitterSelectionMethod SelectionMethod; +var(Location) bool InheritSourceVelocity; +var(Location) bool bInheritSourceRotation; +var(Location) float InheritSourceVelocityScale; +var(Location) float InheritSourceRotationScale; + +defaultproperties +{ + InheritSourceVelocityScale=1.0000000 + InheritSourceRotationScale=1.0000000 + bSpawnModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLocationEmitterDirect.uc b/exported/Engine/Classes/ParticleModuleLocationEmitterDirect.uc new file mode 100755 index 00000000..7b9f6395 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocationEmitterDirect.uc @@ -0,0 +1,12 @@ +class ParticleModuleLocationEmitterDirect extends ParticleModuleLocationBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Location) noclear export name EmitterName; + +defaultproperties +{ + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLocationPrimitiveBase.uc b/exported/Engine/Classes/ParticleModuleLocationPrimitiveBase.uc new file mode 100755 index 00000000..a7296988 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocationPrimitiveBase.uc @@ -0,0 +1,39 @@ +class ParticleModuleLocationPrimitiveBase extends ParticleModuleLocationBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Location) bool Positive_X; +var(Location) bool Positive_Y; +var(Location) bool Positive_Z; +var(Location) bool Negative_X; +var(Location) bool Negative_Y; +var(Location) bool Negative_Z; +var(Location) bool SurfaceOnly; +var(Location) bool Velocity; +var(Location) RawDistributionFloat VelocityScale; +var(Location) RawDistributionVector StartLocation; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveBase.DistributionVelocityScale' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionVelocityScale' + begin object name="DistributionVelocityScale" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleLocationPrimitiveBase.DistributionStartLocation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartLocation' + begin object name="DistributionStartLocation" class=Engine.DistributionVectorConstant + end object + Positive_X=true + Positive_Y=true + Positive_Z=true + Negative_X=true + Negative_Y=true + Negative_Z=true + VelocityScale=(Distribution=Distribution=DistributionVelocityScale,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartLocation=(Distribution=Distribution=DistributionStartLocation,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLocationPrimitiveCylinder.uc b/exported/Engine/Classes/ParticleModuleLocationPrimitiveCylinder.uc new file mode 100755 index 00000000..205bfa90 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocationPrimitiveCylinder.uc @@ -0,0 +1,53 @@ +class ParticleModuleLocationPrimitiveCylinder extends ParticleModuleLocationPrimitiveBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object); + +enum CylinderHeightAxis +{ + PMLPC_HEIGHTAXIS_X, // 0 + PMLPC_HEIGHTAXIS_Y, // 1 + PMLPC_HEIGHTAXIS_Z, // 2 + PMLPC_HEIGHTAXIS_MAX // 3 +}; + +var(Location) bool RadialVelocity; +var(Location) private bool bAdjustForWorldSpace; +var(Location) RawDistributionFloat StartRadius; +var(Location) RawDistributionFloat StartHeight; +var(Location) ParticleModuleLocationPrimitiveCylinder.CylinderHeightAxis HeightAxis; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveCylinder.DistributionStartRadius' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRadius' + begin object name="DistributionStartRadius" class=Engine.DistributionFloatConstant + Constant=50.0000000 + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveCylinder.DistributionStartHeight' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartHeight' + begin object name="DistributionStartHeight" class=Engine.DistributionFloatConstant + Constant=50.0000000 + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveCylinder.DistributionVelocityScale' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionVelocityScale' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveBase.DistributionVelocityScale' + begin object name="DistributionVelocityScale" + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleLocationPrimitiveCylinder.DistributionStartLocation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartLocation' + // Archetype: DistributionVectorConstant'Engine.Default__ParticleModuleLocationPrimitiveBase.DistributionStartLocation' + begin object name="DistributionStartLocation" + end object + RadialVelocity=true + StartRadius=(Distribution=Distribution=DistributionStartRadius,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(50.0000000,50.0000000,50.0000000,50.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartHeight=(Distribution=Distribution=DistributionStartHeight,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(50.0000000,50.0000000,50.0000000,50.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + HeightAxis=CylinderHeightAxis.PMLPC_HEIGHTAXIS_Z + VelocityScale=(Distribution=Distribution=DistributionVelocityScale) + StartLocation=(Distribution=Distribution=DistributionStartLocation) + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLocationPrimitiveCylinder_Seeded.uc b/exported/Engine/Classes/ParticleModuleLocationPrimitiveCylinder_Seeded.uc new file mode 100755 index 00000000..95343602 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocationPrimitiveCylinder_Seeded.uc @@ -0,0 +1,41 @@ +class ParticleModuleLocationPrimitiveCylinder_Seeded extends ParticleModuleLocationPrimitiveCylinder + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object,Object); + +var(RandomSeed) ParticleRandomSeedInfo RandomSeedInfo; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveCylinder_Seeded.DistributionStartRadius' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRadius' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveCylinder.DistributionStartRadius' + begin object name="DistributionStartRadius" + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveCylinder_Seeded.DistributionStartHeight' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartHeight' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveCylinder.DistributionStartHeight' + begin object name="DistributionStartHeight" + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveCylinder_Seeded.DistributionVelocityScale' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionVelocityScale' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveCylinder.DistributionVelocityScale' + begin object name="DistributionVelocityScale" + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleLocationPrimitiveCylinder_Seeded.DistributionStartLocation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartLocation' + // Archetype: DistributionVectorConstant'Engine.Default__ParticleModuleLocationPrimitiveCylinder.DistributionStartLocation' + begin object name="DistributionStartLocation" + end object + RandomSeedInfo=(ParameterName="None",bGetSeedFromInstance=false,bInstanceSeedIsIndex=false,bResetSeedOnEmitterLooping=true,RandomSeeds=none) + StartRadius=(Distribution=Distribution=DistributionStartRadius) + StartHeight=(Distribution=Distribution=DistributionStartHeight) + VelocityScale=(Distribution=Distribution=DistributionVelocityScale) + StartLocation=(Distribution=Distribution=DistributionStartLocation) + bSupportsRandomSeed=true + bRequiresLoopingNotification=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLocationPrimitiveSphere.uc b/exported/Engine/Classes/ParticleModuleLocationPrimitiveSphere.uc new file mode 100755 index 00000000..f6e49abc --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocationPrimitiveSphere.uc @@ -0,0 +1,32 @@ +class ParticleModuleLocationPrimitiveSphere extends ParticleModuleLocationPrimitiveBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object); + +var(Location) RawDistributionFloat StartRadius; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveSphere.DistributionStartRadius' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRadius' + begin object name="DistributionStartRadius" class=Engine.DistributionFloatConstant + Constant=50.0000000 + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveSphere.DistributionVelocityScale' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionVelocityScale' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveBase.DistributionVelocityScale' + begin object name="DistributionVelocityScale" + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleLocationPrimitiveSphere.DistributionStartLocation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartLocation' + // Archetype: DistributionVectorConstant'Engine.Default__ParticleModuleLocationPrimitiveBase.DistributionStartLocation' + begin object name="DistributionStartLocation" + end object + StartRadius=(Distribution=Distribution=DistributionStartRadius,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(50.0000000,50.0000000,50.0000000,50.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + VelocityScale=(Distribution=Distribution=DistributionVelocityScale) + StartLocation=(Distribution=Distribution=DistributionStartLocation) + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLocationPrimitiveSphere_Seeded.uc b/exported/Engine/Classes/ParticleModuleLocationPrimitiveSphere_Seeded.uc new file mode 100755 index 00000000..b2538a97 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocationPrimitiveSphere_Seeded.uc @@ -0,0 +1,34 @@ +class ParticleModuleLocationPrimitiveSphere_Seeded extends ParticleModuleLocationPrimitiveSphere + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object,Object); + +var(RandomSeed) ParticleRandomSeedInfo RandomSeedInfo; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveSphere_Seeded.DistributionStartRadius' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRadius' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveSphere.DistributionStartRadius' + begin object name="DistributionStartRadius" + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveSphere_Seeded.DistributionVelocityScale' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionVelocityScale' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleLocationPrimitiveSphere.DistributionVelocityScale' + begin object name="DistributionVelocityScale" + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleLocationPrimitiveSphere_Seeded.DistributionStartLocation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartLocation' + // Archetype: DistributionVectorConstant'Engine.Default__ParticleModuleLocationPrimitiveSphere.DistributionStartLocation' + begin object name="DistributionStartLocation" + end object + RandomSeedInfo=(ParameterName="None",bGetSeedFromInstance=false,bInstanceSeedIsIndex=false,bResetSeedOnEmitterLooping=true,RandomSeeds=none) + StartRadius=(Distribution=Distribution=DistributionStartRadius) + VelocityScale=(Distribution=Distribution=DistributionVelocityScale) + StartLocation=(Distribution=Distribution=DistributionStartLocation) + bSupportsRandomSeed=true + bRequiresLoopingNotification=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLocationSkelVertSurface.uc b/exported/Engine/Classes/ParticleModuleLocationSkelVertSurface.uc new file mode 100755 index 00000000..554c57be --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocationSkelVertSurface.uc @@ -0,0 +1,33 @@ +class ParticleModuleLocationSkelVertSurface extends ParticleModuleLocationBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum ELocationSkelVertSurfaceSource +{ + VERTSURFACESOURCE_Vert, // 0 + VERTSURFACESOURCE_Surface, // 1 + VERTSURFACESOURCE_MAX // 2 +}; + +var(VertSurface) ParticleModuleLocationSkelVertSurface.ELocationSkelVertSurfaceSource SourceType; +var(VertSurface) Vector UniversalOffset; +var(VertSurface) bool bUpdatePositionEachFrame; +var(VertSurface) bool bOrientMeshEmitters; +var(VertSurface) bool bEnforceNormalCheck; +var(VertSurface) name SkelMeshActorParamName; +var(VertSurface) array ValidAssociatedBones; +var(VertSurface) Vector NormalToCompare; +var(VertSurface) float NormalCheckToleranceDegrees; +var float NormalCheckTolerance; +var(VertSurface) array ValidMaterialIndices; + +defaultproperties +{ + bOrientMeshEmitters=true + SkelMeshActorParamName="VertSurfaceActor" + bSpawnModule=true + bUpdateModule=true + bFinalUpdateModule=true + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLocationStaticVertSurface.uc b/exported/Engine/Classes/ParticleModuleLocationStaticVertSurface.uc new file mode 100755 index 00000000..cff753ce --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocationStaticVertSurface.uc @@ -0,0 +1,32 @@ +class ParticleModuleLocationStaticVertSurface extends ParticleModuleLocationBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum ELocationStaticVertSurfaceSource +{ + VERTSTATICSURFACESOURCE_Vert, // 0 + VERTSTATICSURFACESOURCE_Surface,// 1 + VERTSTATICSURFACESOURCE_MAX // 2 +}; + +var(VertSurface) ParticleModuleLocationStaticVertSurface.ELocationStaticVertSurfaceSource SourceType; +var(VertSurface) Vector UniversalOffset; +var(VertSurface) bool bUpdatePositionEachFrame; +var(VertSurface) bool bOrientMeshEmitters; +var(VertSurface) bool bEnforceNormalCheck; +var(VertSurface) name StaticMeshActorParamName; +var(VertSurface) Vector NormalToCompare; +var(VertSurface) float NormalCheckToleranceDegrees; +var float NormalCheckTolerance; +var(VertSurface) array ValidMaterialIndices; + +defaultproperties +{ + bOrientMeshEmitters=true + StaticMeshActorParamName="VertSurfaceActor" + bSpawnModule=true + bUpdateModule=true + bFinalUpdateModule=true + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLocationWorldOffset.uc b/exported/Engine/Classes/ParticleModuleLocationWorldOffset.uc new file mode 100755 index 00000000..af791210 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocationWorldOffset.uc @@ -0,0 +1,15 @@ +class ParticleModuleLocationWorldOffset extends ParticleModuleLocation + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleLocationWorldOffset.DistributionStartLocation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartLocation' + // Archetype: DistributionVectorUniform'Engine.Default__ParticleModuleLocation.DistributionStartLocation' + begin object name="DistributionStartLocation" + end object + StartLocation=(Distribution=Distribution=DistributionStartLocation) +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLocationWorldOffset_Seeded.uc b/exported/Engine/Classes/ParticleModuleLocationWorldOffset_Seeded.uc new file mode 100755 index 00000000..9a86945e --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocationWorldOffset_Seeded.uc @@ -0,0 +1,20 @@ +class ParticleModuleLocationWorldOffset_Seeded extends ParticleModuleLocationWorldOffset + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(RandomSeed) ParticleRandomSeedInfo RandomSeedInfo; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleLocationWorldOffset_Seeded.DistributionStartLocation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartLocation' + // Archetype: DistributionVectorUniform'Engine.Default__ParticleModuleLocationWorldOffset.DistributionStartLocation' + begin object name="DistributionStartLocation" + end object + RandomSeedInfo=(ParameterName="None",bGetSeedFromInstance=false,bInstanceSeedIsIndex=false,bResetSeedOnEmitterLooping=true,RandomSeeds=none) + StartLocation=(Distribution=Distribution=DistributionStartLocation) + bSupportsRandomSeed=true + bRequiresLoopingNotification=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleLocation_Seeded.uc b/exported/Engine/Classes/ParticleModuleLocation_Seeded.uc new file mode 100755 index 00000000..2cdbf1ba --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleLocation_Seeded.uc @@ -0,0 +1,20 @@ +class ParticleModuleLocation_Seeded extends ParticleModuleLocation + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object); + +var(RandomSeed) ParticleRandomSeedInfo RandomSeedInfo; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleLocation_Seeded.DistributionStartLocation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartLocation' + // Archetype: DistributionVectorUniform'Engine.Default__ParticleModuleLocation.DistributionStartLocation' + begin object name="DistributionStartLocation" + end object + RandomSeedInfo=(ParameterName="None",bGetSeedFromInstance=false,bInstanceSeedIsIndex=false,bResetSeedOnEmitterLooping=true,RandomSeeds=none) + StartLocation=(Distribution=Distribution=DistributionStartLocation) + bSupportsRandomSeed=true + bRequiresLoopingNotification=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleMaterialBase.uc b/exported/Engine/Classes/ParticleModuleMaterialBase.uc new file mode 100755 index 00000000..3c28e026 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleMaterialBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleMaterialBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleMaterialByParameter.uc b/exported/Engine/Classes/ParticleModuleMaterialByParameter.uc new file mode 100755 index 00000000..a50b1d25 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleMaterialByParameter.uc @@ -0,0 +1,12 @@ +class ParticleModuleMaterialByParameter extends ParticleModuleMaterialBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var() array MaterialParameters; +var() editfixedsize array DefaultMaterials; + +defaultproperties +{ + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleMeshMaterial.uc b/exported/Engine/Classes/ParticleModuleMeshMaterial.uc new file mode 100755 index 00000000..09c3a863 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleMeshMaterial.uc @@ -0,0 +1,12 @@ +class ParticleModuleMeshMaterial extends ParticleModuleMaterialBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(MeshMaterials) array MeshMaterials; + +defaultproperties +{ + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleMeshRotation.uc b/exported/Engine/Classes/ParticleModuleMeshRotation.uc new file mode 100755 index 00000000..c4a4563b --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleMeshRotation.uc @@ -0,0 +1,19 @@ +class ParticleModuleMeshRotation extends ParticleModuleRotationBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Rotation) RawDistributionVector StartRotation; +var(Rotation) bool bInheritParent; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleMeshRotation.DistributionStartRotation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRotation' + begin object name="DistributionStartRotation" class=Engine.DistributionVectorUniform + Max=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + StartRotation=(Distribution=Distribution=DistributionStartRotation,Type=0,Op=2,LookupTableNumElements=2,LookupTableChunkSize=6,LookupTable=(0.0000000,1.0000000,0.0000000,0.0000000,0.0000000,1.0000000,1.0000000,1.0000000,0.0000000,0.0000000,0.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleMeshRotationRate.uc b/exported/Engine/Classes/ParticleModuleMeshRotationRate.uc new file mode 100755 index 00000000..a31ccf36 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleMeshRotationRate.uc @@ -0,0 +1,19 @@ +class ParticleModuleMeshRotationRate extends ParticleModuleRotationRateBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Rotation) RawDistributionVector StartRotationRate; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleMeshRotationRate.DistributionStartRotationRate' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRotationRate' + begin object name="DistributionStartRotationRate" class=Engine.DistributionVectorUniform + Max=(X=360.0000000,Y=360.0000000,Z=360.0000000) + end object + StartRotationRate=(Distribution=Distribution=DistributionStartRotationRate,Type=0,Op=2,LookupTableNumElements=2,LookupTableChunkSize=6,LookupTable=(0.0000000,360.0000000,0.0000000,0.0000000,0.0000000,360.0000000,360.0000000,360.0000000,0.0000000,0.0000000,0.0000000,360.0000000,360.0000000,360.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleMeshRotationRateMultiplyLife.uc b/exported/Engine/Classes/ParticleModuleMeshRotationRateMultiplyLife.uc new file mode 100755 index 00000000..424635c7 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleMeshRotationRateMultiplyLife.uc @@ -0,0 +1,18 @@ +class ParticleModuleMeshRotationRateMultiplyLife extends ParticleModuleRotationRateBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Rotation) RawDistributionVector LifeMultiplier; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleMeshRotationRateMultiplyLife.DistributionLifeMultiplier' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLifeMultiplier' + begin object name="DistributionLifeMultiplier" class=Engine.DistributionVectorConstant + end object + LifeMultiplier=(Distribution=Distribution=DistributionLifeMultiplier,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleMeshRotationRateOverLife.uc b/exported/Engine/Classes/ParticleModuleMeshRotationRateOverLife.uc new file mode 100755 index 00000000..7fd08a5a --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleMeshRotationRateOverLife.uc @@ -0,0 +1,19 @@ +class ParticleModuleMeshRotationRateOverLife extends ParticleModuleRotationRateBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Rotation) RawDistributionVector RotRate; +var(Rotation) bool bScaleRotRate; + +defaultproperties +{ + // Reference: DistributionVectorConstantCurve'Engine.Default__ParticleModuleMeshRotationRateOverLife.DistributionRotRate' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionRotRate' + begin object name="DistributionRotRate" class=Engine.DistributionVectorConstantCurve + end object + RotRate=(Distribution=Distribution=DistributionRotRate,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleMeshRotationRate_Seeded.uc b/exported/Engine/Classes/ParticleModuleMeshRotationRate_Seeded.uc new file mode 100755 index 00000000..6dddbbe8 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleMeshRotationRate_Seeded.uc @@ -0,0 +1,20 @@ +class ParticleModuleMeshRotationRate_Seeded extends ParticleModuleMeshRotationRate + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object); + +var(RandomSeed) ParticleRandomSeedInfo RandomSeedInfo; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleMeshRotationRate_Seeded.DistributionStartRotationRate' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRotationRate' + // Archetype: DistributionVectorUniform'Engine.Default__ParticleModuleMeshRotationRate.DistributionStartRotationRate' + begin object name="DistributionStartRotationRate" + end object + RandomSeedInfo=(ParameterName="None",bGetSeedFromInstance=false,bInstanceSeedIsIndex=false,bResetSeedOnEmitterLooping=true,RandomSeeds=none) + StartRotationRate=(Distribution=Distribution=DistributionStartRotationRate) + bSupportsRandomSeed=true + bRequiresLoopingNotification=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleMeshRotation_Seeded.uc b/exported/Engine/Classes/ParticleModuleMeshRotation_Seeded.uc new file mode 100755 index 00000000..eb3c6734 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleMeshRotation_Seeded.uc @@ -0,0 +1,20 @@ +class ParticleModuleMeshRotation_Seeded extends ParticleModuleMeshRotation + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object); + +var(RandomSeed) ParticleRandomSeedInfo RandomSeedInfo; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleMeshRotation_Seeded.DistributionStartRotation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRotation' + // Archetype: DistributionVectorUniform'Engine.Default__ParticleModuleMeshRotation.DistributionStartRotation' + begin object name="DistributionStartRotation" + end object + RandomSeedInfo=(ParameterName="None",bGetSeedFromInstance=false,bInstanceSeedIsIndex=false,bResetSeedOnEmitterLooping=true,RandomSeeds=none) + StartRotation=(Distribution=Distribution=DistributionStartRotation) + bSupportsRandomSeed=true + bRequiresLoopingNotification=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleOrbit.uc b/exported/Engine/Classes/ParticleModuleOrbit.uc new file mode 100755 index 00000000..f670a11f --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleOrbit.uc @@ -0,0 +1,65 @@ +class ParticleModuleOrbit extends ParticleModuleOrbitBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Orbit); + +enum EOrbitChainMode +{ + EOChainMode_Add, // 0 + EOChainMode_Scale, // 1 + EOChainMode_Link, // 2 + EOChainMode_MAX // 3 +}; + +struct native OrbitOptions +{ + var() bool bProcessDuringSpawn; + var() bool bProcessDuringUpdate; + var() bool bUseEmitterTime; + + structdefaultproperties + { + bProcessDuringSpawn=true + bProcessDuringUpdate=false + bUseEmitterTime=false + } +}; + +var(Chaining) ParticleModuleOrbit.EOrbitChainMode ChainMode; +var(Offset) RawDistributionVector OffsetAmount; +var(Offset) OrbitOptions OffsetOptions; +var(Rotation) RawDistributionVector RotationAmount; +var(Rotation) OrbitOptions RotationOptions; +var(RotationRate) RawDistributionVector RotationRateAmount; +var(RotationRate) OrbitOptions RotationRateOptions; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleOrbit.DistributionOffsetAmount' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionOffsetAmount' + begin object name="DistributionOffsetAmount" class=Engine.DistributionVectorUniform + Max=(X=0.0000000,Y=50.0000000,Z=0.0000000) + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleOrbit.DistributionRotationAmount' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionRotationAmount' + begin object name="DistributionRotationAmount" class=Engine.DistributionVectorUniform + Max=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleOrbit.DistributionRotationRateAmount' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionRotationRateAmount' + begin object name="DistributionRotationRateAmount" class=Engine.DistributionVectorUniform + Max=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + ChainMode=EOrbitChainMode.EOChainMode_Link + OffsetAmount=(Distribution=Distribution=DistributionOffsetAmount,Type=0,Op=2,LookupTableNumElements=2,LookupTableChunkSize=6,LookupTable=(0.0000000,50.0000000,0.0000000,0.0000000,0.0000000,0.0000000,50.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,50.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + OffsetOptions=(bProcessDuringSpawn=true,bProcessDuringUpdate=false,bUseEmitterTime=false) + RotationAmount=(Distribution=Distribution=DistributionRotationAmount,Type=0,Op=2,LookupTableNumElements=2,LookupTableChunkSize=6,LookupTable=(0.0000000,1.0000000,0.0000000,0.0000000,0.0000000,1.0000000,1.0000000,1.0000000,0.0000000,0.0000000,0.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + RotationOptions=(bProcessDuringSpawn=true,bProcessDuringUpdate=false,bUseEmitterTime=false) + RotationRateAmount=(Distribution=Distribution=DistributionRotationRateAmount,Type=0,Op=2,LookupTableNumElements=2,LookupTableChunkSize=6,LookupTable=(0.0000000,1.0000000,0.0000000,0.0000000,0.0000000,1.0000000,1.0000000,1.0000000,0.0000000,0.0000000,0.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + RotationRateOptions=(bProcessDuringSpawn=true,bProcessDuringUpdate=false,bUseEmitterTime=false) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleOrbitBase.uc b/exported/Engine/Classes/ParticleModuleOrbitBase.uc new file mode 100755 index 00000000..2dedd6a0 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleOrbitBase.uc @@ -0,0 +1,7 @@ +class ParticleModuleOrbitBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); + +var(Orbit) bool bUseEmitterTime; diff --git a/exported/Engine/Classes/ParticleModuleOrientationAxisLock.uc b/exported/Engine/Classes/ParticleModuleOrientationAxisLock.uc new file mode 100755 index 00000000..50e794d5 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleOrientationAxisLock.uc @@ -0,0 +1,27 @@ +class ParticleModuleOrientationAxisLock extends ParticleModuleOrientationBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum EParticleAxisLock +{ + EPAL_NONE, // 0 + EPAL_X, // 1 + EPAL_Y, // 2 + EPAL_Z, // 3 + EPAL_NEGATIVE_X, // 4 + EPAL_NEGATIVE_Y, // 5 + EPAL_NEGATIVE_Z, // 6 + EPAL_ROTATE_X, // 7 + EPAL_ROTATE_Y, // 8 + EPAL_ROTATE_Z, // 9 + EPAL_MAX // 10 +}; + +var(Orientation) ParticleModuleOrientationAxisLock.EParticleAxisLock LockAxisFlags; + +defaultproperties +{ + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleOrientationBase.uc b/exported/Engine/Classes/ParticleModuleOrientationBase.uc new file mode 100755 index 00000000..15336863 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleOrientationBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleOrientationBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleParameterBase.uc b/exported/Engine/Classes/ParticleModuleParameterBase.uc new file mode 100755 index 00000000..0b13186c --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleParameterBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleParameterBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleParameterDynamic.uc b/exported/Engine/Classes/ParticleModuleParameterDynamic.uc new file mode 100755 index 00000000..83ee9863 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleParameterDynamic.uc @@ -0,0 +1,68 @@ +class ParticleModuleParameterDynamic extends ParticleModuleParameterBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum EEmitterDynamicParameterValue +{ + EDPV_UserSet, // 0 + EDPV_VelocityX, // 1 + EDPV_VelocityY, // 2 + EDPV_VelocityZ, // 3 + EDPV_VelocityMag, // 4 + EDPV_MAX // 5 +}; + +struct native EmitterDynamicParameter +{ + var() editconst name ParamName; + var() bool bUseEmitterTime; + var() bool bSpawnTimeOnly; + var() ParticleModuleParameterDynamic.EEmitterDynamicParameterValue ValueMethod; + var() bool bScaleVelocityByParamValue; + var() RawDistributionFloat ParamValue; + + structdefaultproperties + { + ParamName="None" + bUseEmitterTime=false + bSpawnTimeOnly=false + ValueMethod=EEmitterDynamicParameterValue.EDPV_UserSet + bScaleVelocityByParamValue=false + ParamValue=(Distribution=none,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + } +}; + +var() editfixedsize array DynamicParams; +var int UpdateFlags; +var bool bUsesVelocity; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleParameterDynamic.DistributionParam1' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionParam1' + begin object name="DistributionParam1" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleParameterDynamic.DistributionParam2' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionParam2' + begin object name="DistributionParam2" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleParameterDynamic.DistributionParam3' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionParam3' + begin object name="DistributionParam3" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleParameterDynamic.DistributionParam4' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionParam4' + begin object name="DistributionParam4" class=Engine.DistributionFloatConstant + end object + DynamicParams[0]=(ParamName="None",bUseEmitterTime=false,bSpawnTimeOnly=false,ValueMethod=EEmitterDynamicParameterValue.EDPV_UserSet,bScaleVelocityByParamValue=false,ParamValue=(Distribution=Distribution=DistributionParam1,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000)) + DynamicParams[1]=(ParamName="None",bUseEmitterTime=false,bSpawnTimeOnly=false,ValueMethod=EEmitterDynamicParameterValue.EDPV_UserSet,bScaleVelocityByParamValue=false,ParamValue=(Distribution=Distribution=DistributionParam2,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000)) + DynamicParams[2]=(ParamName="None",bUseEmitterTime=false,bSpawnTimeOnly=false,ValueMethod=EEmitterDynamicParameterValue.EDPV_UserSet,bScaleVelocityByParamValue=false,ParamValue=(Distribution=Distribution=DistributionParam3,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000)) + DynamicParams[3]=(ParamName="None",bUseEmitterTime=false,bSpawnTimeOnly=false,ValueMethod=EEmitterDynamicParameterValue.EDPV_UserSet,bScaleVelocityByParamValue=false,ParamValue=(Distribution=Distribution=DistributionParam4,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000)) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleParameterDynamic_Seeded.uc b/exported/Engine/Classes/ParticleModuleParameterDynamic_Seeded.uc new file mode 100755 index 00000000..414f84b9 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleParameterDynamic_Seeded.uc @@ -0,0 +1,41 @@ +class ParticleModuleParameterDynamic_Seeded extends ParticleModuleParameterDynamic + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object); + +var(RandomSeed) ParticleRandomSeedInfo RandomSeedInfo; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleParameterDynamic_Seeded.DistributionParam1' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionParam1' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleParameterDynamic.DistributionParam1' + begin object name="DistributionParam1" + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleParameterDynamic_Seeded.DistributionParam2' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionParam2' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleParameterDynamic.DistributionParam2' + begin object name="DistributionParam2" + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleParameterDynamic_Seeded.DistributionParam3' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionParam3' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleParameterDynamic.DistributionParam3' + begin object name="DistributionParam3" + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleParameterDynamic_Seeded.DistributionParam4' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionParam4' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleParameterDynamic.DistributionParam4' + begin object name="DistributionParam4" + end object + RandomSeedInfo=(ParameterName="None",bGetSeedFromInstance=false,bInstanceSeedIsIndex=false,bResetSeedOnEmitterLooping=true,RandomSeeds=none) + DynamicParams[0]=(ParamName="None",bUseEmitterTime=false,bSpawnTimeOnly=false,ValueMethod=EEmitterDynamicParameterValue.EDPV_UserSet,bScaleVelocityByParamValue=false,ParamValue=(Distribution=Distribution=DistributionParam1,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000)) + DynamicParams[1]=(ParamName="None",bUseEmitterTime=false,bSpawnTimeOnly=false,ValueMethod=EEmitterDynamicParameterValue.EDPV_UserSet,bScaleVelocityByParamValue=false,ParamValue=(Distribution=Distribution=DistributionParam2,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000)) + DynamicParams[2]=(ParamName="None",bUseEmitterTime=false,bSpawnTimeOnly=false,ValueMethod=EEmitterDynamicParameterValue.EDPV_UserSet,bScaleVelocityByParamValue=false,ParamValue=(Distribution=Distribution=DistributionParam3,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000)) + DynamicParams[3]=(ParamName="None",bUseEmitterTime=false,bSpawnTimeOnly=false,ValueMethod=EEmitterDynamicParameterValue.EDPV_UserSet,bScaleVelocityByParamValue=false,ParamValue=(Distribution=Distribution=DistributionParam4,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000)) + bSupportsRandomSeed=true + bRequiresLoopingNotification=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModulePhysicsVolumes.uc b/exported/Engine/Classes/ParticleModulePhysicsVolumes.uc new file mode 100755 index 00000000..0996dcf9 --- /dev/null +++ b/exported/Engine/Classes/ParticleModulePhysicsVolumes.uc @@ -0,0 +1,26 @@ +class ParticleModulePhysicsVolumes extends ParticleModuleWorldForcesBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum EParticleLevelInfluenceType +{ + LIT_Never, // 0 + LIT_OutsidePhysicsVolumes, // 1 + LIT_Always, // 2 + LIT_MAX // 3 +}; + +var() RawDistributionFloat GlobalInfluence; +var() ParticleModulePhysicsVolumes.EParticleLevelInfluenceType LevelInfluenceType; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModulePhysicsVolumes.DistributionInfluence' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionInfluence' + begin object name="DistributionInfluence" class=Engine.DistributionFloatConstant + end object + GlobalInfluence=(Distribution=Distribution=DistributionInfluence,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleRequired.uc b/exported/Engine/Classes/ParticleModuleRequired.uc new file mode 100755 index 00000000..1f82fbb6 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleRequired.uc @@ -0,0 +1,95 @@ +class ParticleModuleRequired extends ParticleModule + native(Particle) + editinlinenew + hidecategories(Object,Object,Cascade); + +enum EParticleSortMode +{ + PSORTMODE_None, // 0 + PSORTMODE_ViewProjDepth, // 1 + PSORTMODE_DistanceToView, // 2 + PSORTMODE_Age_OldestFirst, // 3 + PSORTMODE_Age_NewestFirst, // 4 + PSORTMODE_MAX // 5 +}; + +enum EEmitterNormalsMode +{ + ENM_CameraFacing, // 0 + ENM_Spherical, // 1 + ENM_Cylindrical, // 2 + ENM_MAX // 3 +}; + +var(Emitter) MaterialInterface Material; +var(Emitter) ParticleSpriteEmitter.EParticleScreenAlignment ScreenAlignment; +var(Emitter) ParticleModuleRequired.EParticleSortMode SortMode; +var ParticleEmitter.EParticleBurstMethod ParticleBurstMethod; +var(SubUV) ParticleEmitter.EParticleSubUVInterpMethod InterpolationMethod; +var(Normals) ParticleModuleRequired.EEmitterNormalsMode EmitterNormalsMode; +var(Emitter) bool bAllowImageFlipping; +var(Emitter) bool bSquareImageFlipping; +var(Emitter) bool bUseLocalSpace; +var(Emitter) bool bKillOnDeactivate; +var(Emitter) bool bKillOnCompleted; +var deprecated bool bRequiresSorting; +var(Emitter) bool bUseLegacyEmitterTime; +var(DistanceCulling) bool bEnableNearParticleCulling; +var(DistanceCulling) bool bEnableFarParticleCulling; +var(ParticleTrimming) bool bEnableParticleTrimming; +var(Duration) bool bEmitterDurationUseRange; +var(Duration) bool bDurationRecalcEachLoop; +var(Delay) bool bEmitterDelayUseRange; +var(Delay) bool bDelayFirstLoopOnly; +var(SubUV) bool bScaleUV; +var bool bDirectUV; +var(MacroUV) bool bOverrideSystemMacroUV; +var(Rendering) bool bUseMaxDrawCount; +var(Emitter) bool bOrbitModuleAffectsVelocityAlignment; +var(DistanceCulling) float NearCullDistance; +var(DistanceCulling) float NearFadeDistance; +var(DistanceCulling) float FarFadeDistance; +var(DistanceCulling) float FarCullDistance; +var array TrimmedVertices; +var(Duration) float EmitterDuration; +var(Duration) float EmitterDurationLow; +var(Duration) int EmitterLoops; +var RawDistributionFloat SpawnRate; +var noclear export array BurstList; +var(Delay) float EmitterDelay; +var(Delay) float EmitterDelayLow; +var(SubUV) int SubImages_Horizontal; +var(SubUV) int SubImages_Vertical; +var float RandomImageTime; +var(SubUV) int RandomImageChanges; +var(MacroUV) Vector MacroUVPosition; +var(MacroUV) float MacroUVRadius; +var(Rendering) int MaxDrawCount; +var float DownsampleThresholdScreenFraction; +var(Normals) Vector NormalsSphereCenter; +var(Normals) Vector NormalsCylinderDirection; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleRequired.RequiredDistributionSpawnRate' + // TemplateOwnerClass: none + // TemplateOwnerName: 'RequiredDistributionSpawnRate' + begin object name="RequiredDistributionSpawnRate" class=Engine.DistributionFloatConstant + end object + bUseLegacyEmitterTime=true + bEnableParticleTrimming=true + bUseMaxDrawCount=true + NearCullDistance=10.0000000 + NearFadeDistance=150.0000000 + FarFadeDistance=2000.0000000 + FarCullDistance=2100.0000000 + EmitterDuration=1.0000000 + SpawnRate=(Distribution=Distribution=RequiredDistributionSpawnRate,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + SubImages_Horizontal=1 + SubImages_Vertical=1 + MaxDrawCount=500 + NormalsSphereCenter=(X=0.0000000,Y=0.0000000,Z=100.0000000) + NormalsCylinderDirection=(X=0.0000000,Y=0.0000000,Z=1.0000000) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleRotation.uc b/exported/Engine/Classes/ParticleModuleRotation.uc new file mode 100755 index 00000000..a29218e6 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleRotation.uc @@ -0,0 +1,18 @@ +class ParticleModuleRotation extends ParticleModuleRotationBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Rotation) RawDistributionFloat StartRotation; + +defaultproperties +{ + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleRotation.DistributionStartRotation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRotation' + begin object name="DistributionStartRotation" class=Engine.DistributionFloatUniform + Max=1.0000000 + end object + StartRotation=(Distribution=Distribution=DistributionStartRotation,Type=0,Op=2,LookupTableNumElements=2,LookupTableChunkSize=2,LookupTable=(0.0000000,1.0000000,0.0000000,1.0000000,0.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleRotationBase.uc b/exported/Engine/Classes/ParticleModuleRotationBase.uc new file mode 100755 index 00000000..3573ff9c --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleRotationBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleRotationBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleRotationOverLifetime.uc b/exported/Engine/Classes/ParticleModuleRotationOverLifetime.uc new file mode 100755 index 00000000..0b70d0df --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleRotationOverLifetime.uc @@ -0,0 +1,19 @@ +class ParticleModuleRotationOverLifetime extends ParticleModuleRotationBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Rotation) RawDistributionFloat RotationOverLife; +var(Rotation) bool Scale; + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'Engine.Default__ParticleModuleRotationOverLifetime.DistributionRotOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionRotOverLife' + begin object name="DistributionRotOverLife" class=Engine.DistributionFloatConstantCurve + end object + RotationOverLife=(Distribution=Distribution=DistributionRotOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Scale=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleRotationRate.uc b/exported/Engine/Classes/ParticleModuleRotationRate.uc new file mode 100755 index 00000000..d3f31269 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleRotationRate.uc @@ -0,0 +1,17 @@ +class ParticleModuleRotationRate extends ParticleModuleRotationRateBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Rotation) RawDistributionFloat StartRotationRate; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleRotationRate.DistributionStartRotationRate' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRotationRate' + begin object name="DistributionStartRotationRate" class=Engine.DistributionFloatConstant + end object + StartRotationRate=(Distribution=Distribution=DistributionStartRotationRate,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleRotationRateBase.uc b/exported/Engine/Classes/ParticleModuleRotationRateBase.uc new file mode 100755 index 00000000..466a4ee7 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleRotationRateBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleRotationRateBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleRotationRateMultiplyLife.uc b/exported/Engine/Classes/ParticleModuleRotationRateMultiplyLife.uc new file mode 100755 index 00000000..aa3e885b --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleRotationRateMultiplyLife.uc @@ -0,0 +1,18 @@ +class ParticleModuleRotationRateMultiplyLife extends ParticleModuleRotationRateBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Rotation) RawDistributionFloat LifeMultiplier; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleRotationRateMultiplyLife.DistributionLifeMultiplier' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLifeMultiplier' + begin object name="DistributionLifeMultiplier" class=Engine.DistributionFloatConstant + end object + LifeMultiplier=(Distribution=Distribution=DistributionLifeMultiplier,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleRotationRate_Seeded.uc b/exported/Engine/Classes/ParticleModuleRotationRate_Seeded.uc new file mode 100755 index 00000000..87c02828 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleRotationRate_Seeded.uc @@ -0,0 +1,20 @@ +class ParticleModuleRotationRate_Seeded extends ParticleModuleRotationRate + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object); + +var(RandomSeed) ParticleRandomSeedInfo RandomSeedInfo; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleRotationRate_Seeded.DistributionStartRotationRate' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRotationRate' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleRotationRate.DistributionStartRotationRate' + begin object name="DistributionStartRotationRate" + end object + RandomSeedInfo=(ParameterName="None",bGetSeedFromInstance=false,bInstanceSeedIsIndex=false,bResetSeedOnEmitterLooping=true,RandomSeeds=none) + StartRotationRate=(Distribution=Distribution=DistributionStartRotationRate) + bSupportsRandomSeed=true + bRequiresLoopingNotification=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleRotation_Seeded.uc b/exported/Engine/Classes/ParticleModuleRotation_Seeded.uc new file mode 100755 index 00000000..b1335ff7 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleRotation_Seeded.uc @@ -0,0 +1,20 @@ +class ParticleModuleRotation_Seeded extends ParticleModuleRotation + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object); + +var(RandomSeed) ParticleRandomSeedInfo RandomSeedInfo; + +defaultproperties +{ + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleRotation_Seeded.DistributionStartRotation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRotation' + // Archetype: DistributionFloatUniform'Engine.Default__ParticleModuleRotation.DistributionStartRotation' + begin object name="DistributionStartRotation" + end object + RandomSeedInfo=(ParameterName="None",bGetSeedFromInstance=false,bInstanceSeedIsIndex=false,bResetSeedOnEmitterLooping=true,RandomSeeds=none) + StartRotation=(Distribution=Distribution=DistributionStartRotation) + bSupportsRandomSeed=true + bRequiresLoopingNotification=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleSize.uc b/exported/Engine/Classes/ParticleModuleSize.uc new file mode 100755 index 00000000..010109d0 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSize.uc @@ -0,0 +1,19 @@ +class ParticleModuleSize extends ParticleModuleSizeBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Size) RawDistributionVector StartSize; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleSize.DistributionStartSize' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartSize' + begin object name="DistributionStartSize" class=Engine.DistributionVectorUniform + Max=(X=1.0000000,Y=1.0000000,Z=1.0000000) + Min=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + StartSize=(Distribution=Distribution=DistributionStartSize,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleSizeBase.uc b/exported/Engine/Classes/ParticleModuleSizeBase.uc new file mode 100755 index 00000000..484cdb9e --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSizeBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleSizeBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleSizeMultiplyLife.uc b/exported/Engine/Classes/ParticleModuleSizeMultiplyLife.uc new file mode 100755 index 00000000..99231f45 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSizeMultiplyLife.uc @@ -0,0 +1,24 @@ +class ParticleModuleSizeMultiplyLife extends ParticleModuleSizeBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Size) RawDistributionVector LifeMultiplier; +var(Size) bool MultiplyX; +var(Size) bool MultiplyY; +var(Size) bool MultiplyZ; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleSizeMultiplyLife.DistributionLifeMultiplier' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLifeMultiplier' + begin object name="DistributionLifeMultiplier" class=Engine.DistributionVectorConstant + end object + LifeMultiplier=(Distribution=Distribution=DistributionLifeMultiplier,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + MultiplyX=true + MultiplyY=true + MultiplyZ=true + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleSizeMultiplyVelocity.uc b/exported/Engine/Classes/ParticleModuleSizeMultiplyVelocity.uc new file mode 100755 index 00000000..a745858c --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSizeMultiplyVelocity.uc @@ -0,0 +1,26 @@ +class ParticleModuleSizeMultiplyVelocity extends ParticleModuleSizeBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Size) RawDistributionVector VelocityMultiplier; +var(Size) bool MultiplyX; +var(Size) bool MultiplyY; +var(Size) bool MultiplyZ; +var(Size) Vector CapMaxSize; +var(Size) Vector CapMinSize; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleSizeMultiplyVelocity.DistributionVelocityMultiplier' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionVelocityMultiplier' + begin object name="DistributionVelocityMultiplier" class=Engine.DistributionVectorConstant + end object + VelocityMultiplier=(Distribution=Distribution=DistributionVelocityMultiplier,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + MultiplyX=true + MultiplyY=true + MultiplyZ=true + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleSizeScale.uc b/exported/Engine/Classes/ParticleModuleSizeScale.uc new file mode 100755 index 00000000..4e8f0104 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSizeScale.uc @@ -0,0 +1,23 @@ +class ParticleModuleSizeScale extends ParticleModuleSizeBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var() RawDistributionVector SizeScale; +var() bool EnableX; +var() bool EnableY; +var() bool EnableZ; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleSizeScale.DistributionSizeScale' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionSizeScale' + begin object name="DistributionSizeScale" class=Engine.DistributionVectorConstant + end object + SizeScale=(Distribution=Distribution=DistributionSizeScale,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + EnableX=true + EnableY=true + EnableZ=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleSizeScaleByTime.uc b/exported/Engine/Classes/ParticleModuleSizeScaleByTime.uc new file mode 100755 index 00000000..1b82f404 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSizeScaleByTime.uc @@ -0,0 +1,24 @@ +class ParticleModuleSizeScaleByTime extends ParticleModuleSizeBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var() RawDistributionVector SizeScaleByTime; +var() bool bEnableX; +var() bool bEnableY; +var() bool bEnableZ; + +defaultproperties +{ + // Reference: DistributionVectorConstantCurve'Engine.Default__ParticleModuleSizeScaleByTime.DistributionSizeScaleByTime' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionSizeScaleByTime' + begin object name="DistributionSizeScaleByTime" class=Engine.DistributionVectorConstantCurve + end object + SizeScaleByTime=(Distribution=Distribution=DistributionSizeScaleByTime,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bEnableX=true + bEnableY=true + bEnableZ=true + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleSizeScaleOverDensity.uc b/exported/Engine/Classes/ParticleModuleSizeScaleOverDensity.uc new file mode 100755 index 00000000..e5475256 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSizeScaleOverDensity.uc @@ -0,0 +1,18 @@ +class ParticleModuleSizeScaleOverDensity extends ParticleModuleSizeBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Size) RawDistributionVector SizeScaleOverDensity; + +defaultproperties +{ + // Reference: DistributionVectorConstantCurve'Engine.Default__ParticleModuleSizeScaleOverDensity.DistributionSizeScaleOverDensity' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionSizeScaleOverDensity' + begin object name="DistributionSizeScaleOverDensity" class=Engine.DistributionVectorConstantCurve + end object + SizeScaleOverDensity=(Distribution=Distribution=DistributionSizeScaleOverDensity,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleSize_Seeded.uc b/exported/Engine/Classes/ParticleModuleSize_Seeded.uc new file mode 100755 index 00000000..508f6f06 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSize_Seeded.uc @@ -0,0 +1,20 @@ +class ParticleModuleSize_Seeded extends ParticleModuleSize + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object); + +var(RandomSeed) ParticleRandomSeedInfo RandomSeedInfo; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleSize_Seeded.DistributionStartSize' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartSize' + // Archetype: DistributionVectorUniform'Engine.Default__ParticleModuleSize.DistributionStartSize' + begin object name="DistributionStartSize" + end object + RandomSeedInfo=(ParameterName="None",bGetSeedFromInstance=false,bInstanceSeedIsIndex=false,bResetSeedOnEmitterLooping=true,RandomSeeds=none) + StartSize=(Distribution=Distribution=DistributionStartSize) + bSupportsRandomSeed=true + bRequiresLoopingNotification=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleSourceMovement.uc b/exported/Engine/Classes/ParticleModuleSourceMovement.uc new file mode 100755 index 00000000..ad7a5834 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSourceMovement.uc @@ -0,0 +1,18 @@ +class ParticleModuleSourceMovement extends ParticleModuleLocationBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(SourceMovement) RawDistributionVector SourceMovementScale; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleSourceMovement.DistributionSourceMovementScale' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionSourceMovementScale' + begin object name="DistributionSourceMovementScale" class=Engine.DistributionVectorConstant + Constant=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + SourceMovementScale=(Distribution=Distribution=DistributionSourceMovementScale,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bFinalUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleSpawn.uc b/exported/Engine/Classes/ParticleModuleSpawn.uc new file mode 100755 index 00000000..453f787e --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSpawn.uc @@ -0,0 +1,28 @@ +class ParticleModuleSpawn extends ParticleModuleSpawnBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,ParticleModuleSpawnBase); + +var(Spawn) RawDistributionFloat Rate; +var(Spawn) RawDistributionFloat RateScale; +var(Burst) ParticleEmitter.EParticleBurstMethod ParticleBurstMethod; +var(Burst) noclear export array BurstList; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleSpawn.RequiredDistributionSpawnRate' + // TemplateOwnerClass: none + // TemplateOwnerName: 'RequiredDistributionSpawnRate' + begin object name="RequiredDistributionSpawnRate" class=Engine.DistributionFloatConstant + Constant=20.0000000 + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleSpawn.RequiredDistributionSpawnRateScale' + // TemplateOwnerClass: none + // TemplateOwnerName: 'RequiredDistributionSpawnRateScale' + begin object name="RequiredDistributionSpawnRateScale" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + Rate=(Distribution=Distribution=RequiredDistributionSpawnRate,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(20.0000000,20.0000000,20.0000000,20.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + RateScale=(Distribution=Distribution=RequiredDistributionSpawnRateScale,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + LODDuplicate=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleSpawnBase.uc b/exported/Engine/Classes/ParticleModuleSpawnBase.uc new file mode 100755 index 00000000..d62f4f86 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSpawnBase.uc @@ -0,0 +1,14 @@ +class ParticleModuleSpawnBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); + +var(Spawn) bool bProcessSpawnRate; +var(Burst) bool bProcessBurstList; + +defaultproperties +{ + bProcessSpawnRate=true + bProcessBurstList=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleSpawnPerUnit.uc b/exported/Engine/Classes/ParticleModuleSpawnPerUnit.uc new file mode 100755 index 00000000..9a8d544e --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSpawnPerUnit.uc @@ -0,0 +1,27 @@ +class ParticleModuleSpawnPerUnit extends ParticleModuleSpawnBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Spawn) float UnitScalar; +var(Spawn) RawDistributionFloat SpawnPerUnit; +var(Spawn) bool bIgnoreSpawnRateWhenMoving; +var(Spawn) bool bIgnoreMovementAlongX; +var(Spawn) bool bIgnoreMovementAlongY; +var(Spawn) bool bIgnoreMovementAlongZ; +var(Spawn) float MovementTolerance; +var(Spawn) float MaxFrameDistance; +var(Spawn) float MinFrameDistance; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleSpawnPerUnit.RequiredDistributionSpawnPerUnit' + // TemplateOwnerClass: none + // TemplateOwnerName: 'RequiredDistributionSpawnPerUnit' + begin object name="RequiredDistributionSpawnPerUnit" class=Engine.DistributionFloatConstant + end object + UnitScalar=50.0000000 + SpawnPerUnit=(Distribution=Distribution=RequiredDistributionSpawnPerUnit,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + MovementTolerance=0.1000000 + bSpawnModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleStoreSpawnTime.uc b/exported/Engine/Classes/ParticleModuleStoreSpawnTime.uc new file mode 100755 index 00000000..ec6c038c --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleStoreSpawnTime.uc @@ -0,0 +1,4 @@ +class ParticleModuleStoreSpawnTime extends ParticleModuleStoreSpawnTimeBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleStoreSpawnTimeBase.uc b/exported/Engine/Classes/ParticleModuleStoreSpawnTimeBase.uc new file mode 100755 index 00000000..7cc928b5 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleStoreSpawnTimeBase.uc @@ -0,0 +1,10 @@ +class ParticleModuleStoreSpawnTimeBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + bSpawnModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleSubUV.uc b/exported/Engine/Classes/ParticleModuleSubUV.uc new file mode 100755 index 00000000..6f0c0bfc --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSubUV.uc @@ -0,0 +1,19 @@ +class ParticleModuleSubUV extends ParticleModuleSubUVBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(SubUV) RawDistributionFloat SubImageIndex; +var(Realtime) bool bUseRealTime; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleSubUV.DistributionSubImage' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionSubImage' + begin object name="DistributionSubImage" class=Engine.DistributionFloatConstant + end object + SubImageIndex=(Distribution=Distribution=DistributionSubImage,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleSubUVBase.uc b/exported/Engine/Classes/ParticleModuleSubUVBase.uc new file mode 100755 index 00000000..54e84f33 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSubUVBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleSubUVBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleSubUVDirect.uc b/exported/Engine/Classes/ParticleModuleSubUVDirect.uc new file mode 100755 index 00000000..9ae059b2 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSubUVDirect.uc @@ -0,0 +1,24 @@ +class ParticleModuleSubUVDirect extends ParticleModuleSubUVBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(SubUV) RawDistributionVector SubUVPosition; +var(SubUV) RawDistributionVector SubUVSize; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleSubUVDirect.DistributionSubImagePosition' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionSubImagePosition' + begin object name="DistributionSubImagePosition" class=Engine.DistributionVectorConstant + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleSubUVDirect.DistributionSubImageSize' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionSubImageSize' + begin object name="DistributionSubImageSize" class=Engine.DistributionVectorConstant + end object + SubUVPosition=(Distribution=Distribution=DistributionSubImagePosition,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + SubUVSize=(Distribution=Distribution=DistributionSubImageSize,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleSubUVMovie.uc b/exported/Engine/Classes/ParticleModuleSubUVMovie.uc new file mode 100755 index 00000000..255391e6 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSubUVMovie.uc @@ -0,0 +1,27 @@ +class ParticleModuleSubUVMovie extends ParticleModuleSubUV + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object,SubUV); + +var(FlipBook) bool bUseEmitterTime; +var(FlipBook) RawDistributionFloat FrameRate; +var(FlipBook) int StartingFrame; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleSubUVMovie.DistributionFrameRate' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionFrameRate' + begin object name="DistributionFrameRate" class=Engine.DistributionFloatConstant + Constant=30.0000000 + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleSubUVMovie.DistributionSubImage' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionSubImage' + // Archetype: DistributionFloatConstant'Engine.Default__ParticleModuleSubUV.DistributionSubImage' + begin object name="DistributionSubImage" + end object + FrameRate=(Distribution=Distribution=DistributionFrameRate,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(30.0000000,30.0000000,30.0000000,30.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartingFrame=1 + SubImageIndex=(Distribution=Distribution=DistributionSubImage) +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleSubUVSelect.uc b/exported/Engine/Classes/ParticleModuleSubUVSelect.uc new file mode 100755 index 00000000..6b137249 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleSubUVSelect.uc @@ -0,0 +1,17 @@ +class ParticleModuleSubUVSelect extends ParticleModuleSubUVBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(SubUV) RawDistributionVector SubImageSelect; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleSubUVSelect.DistributionSubImageSelect' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionSubImageSelect' + begin object name="DistributionSubImageSelect" class=Engine.DistributionVectorConstant + end object + SubImageSelect=(Distribution=Distribution=DistributionSubImageSelect,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleTrailBase.uc b/exported/Engine/Classes/ParticleModuleTrailBase.uc new file mode 100755 index 00000000..575a14bb --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleTrailBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleTrailBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleTrailSource.uc b/exported/Engine/Classes/ParticleModuleTrailSource.uc new file mode 100755 index 00000000..3b0d7eed --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleTrailSource.uc @@ -0,0 +1,33 @@ +class ParticleModuleTrailSource extends ParticleModuleTrailBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum ETrail2SourceMethod +{ + PET2SRCM_Default, // 0 + PET2SRCM_Particle, // 1 + PET2SRCM_Actor, // 2 + PET2SRCM_MAX // 3 +}; + +var(Source) ParticleModuleTrailSource.ETrail2SourceMethod SourceMethod; +var(Source) ParticleModule.EParticleSourceSelectionMethod SelectionMethod; +var(Source) name SourceName; +var(Source) RawDistributionFloat SourceStrength; +var(Source) bool bLockSourceStength; +var(Source) bool bInheritRotation; +var(Source) int SourceOffsetCount; +var(Source) editfixedsize array SourceOffsetDefaults; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleTrailSource.DistributionSourceStrength' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionSourceStrength' + begin object name="DistributionSourceStrength" class=Engine.DistributionFloatConstant + Constant=100.0000000 + end object + SelectionMethod=EParticleSourceSelectionMethod.EPSSM_Sequential + SourceStrength=(Distribution=Distribution=DistributionSourceStrength,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(100.0000000,100.0000000,100.0000000,100.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleTrailSpawn.uc b/exported/Engine/Classes/ParticleModuleTrailSpawn.uc new file mode 100755 index 00000000..b5f01517 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleTrailSpawn.uc @@ -0,0 +1,30 @@ +class ParticleModuleTrailSpawn extends ParticleModuleTrailBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum ETrail2SpawnMethod +{ + PET2SM_Emitter, // 0 + PET2SM_Velocity, // 1 + PET2SM_Distance, // 2 + PET2SM_MAX // 3 +}; + +var(Spawn) noclear export editinline DistributionFloatParticleParameter SpawnDistanceMap; +var(Spawn) float MinSpawnVelocity; + +defaultproperties +{ + // Reference: DistributionFloatParticleParameter'Engine.Default__ParticleModuleTrailSpawn.DistributionSpawnDistanceMap' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionSpawnDistanceMap' + begin object name="DistributionSpawnDistanceMap" class=Engine.DistributionFloatParticleParameter + MinInput=10.0000000 + MaxInput=100.0000000 + MinOutput=1.0000000 + MaxOutput=5.0000000 + Constant=1.0000000 + end object + SpawnDistanceMap=DistributionSpawnDistanceMap +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleTrailTaper.uc b/exported/Engine/Classes/ParticleModuleTrailTaper.uc new file mode 100755 index 00000000..9b198665 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleTrailTaper.uc @@ -0,0 +1,27 @@ +class ParticleModuleTrailTaper extends ParticleModuleTrailBase + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +enum ETrailTaperMethod +{ + PETTM_None, // 0 + PETTM_Full, // 1 + PETTM_Partial, // 2 + PETTM_MAX // 3 +}; + +var(Taper) ParticleModuleTrailTaper.ETrailTaperMethod TaperMethod; +var(Taper) RawDistributionFloat TaperFactor; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleTrailTaper.DistributionTaperFactor' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionTaperFactor' + begin object name="DistributionTaperFactor" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + TaperFactor=(Distribution=Distribution=DistributionTaperFactor,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleTypeDataAnimTrail.uc b/exported/Engine/Classes/ParticleModuleTypeDataAnimTrail.uc new file mode 100755 index 00000000..cbe6425b --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleTypeDataAnimTrail.uc @@ -0,0 +1,28 @@ +class ParticleModuleTypeDataAnimTrail extends ParticleModuleTypeDataBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Anim) name ControlEdgeName; +var(Trail) int SheetsPerTrail; +var(Trail) bool bDeadTrailsOnDeactivate; +var(Trail) bool bClipSourceSegement; +var(Trail) bool bEnablePreviousTangentRecalculation; +var(Trail) bool bTangentRecalculationEveryFrame; +var(Rendering) bool bRenderGeometry; +var(Rendering) bool bRenderSpawnPoints; +var(Rendering) bool bRenderTangents; +var(Rendering) bool bRenderTessellation; +var(Rendering) float TilingDistance; +var(Rendering) float DistanceTessellationStepSize; +var(Rendering) float TangentTessellationScalar; + +defaultproperties +{ + SheetsPerTrail=1 + bDeadTrailsOnDeactivate=true + bClipSourceSegement=true + bEnablePreviousTangentRecalculation=true + bRenderGeometry=true + DistanceTessellationStepSize=10.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleTypeDataApex.uc b/exported/Engine/Classes/ParticleModuleTypeDataApex.uc new file mode 100755 index 00000000..f8b26127 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleTypeDataApex.uc @@ -0,0 +1,20 @@ +class ParticleModuleTypeDataApex extends ParticleModuleTypeDataBase + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +var ApexGenericAsset ApexIOFX; +var ApexGenericAsset ApexEmitter; + +defaultproperties +{ + // Reference: ApexGenericAsset'Engine.Default__ParticleModuleTypeDataApex.ApexGenericAsset0' + begin object name="ApexGenericAsset0" class=Engine.ApexGenericAsset + end object + ApexIOFX=ApexGenericAsset0 + // Reference: ApexGenericAsset'Engine.Default__ParticleModuleTypeDataApex.ApexGenericAsset1' + begin object name="ApexGenericAsset1" class=Engine.ApexGenericAsset + end object + ApexEmitter=ApexGenericAsset1 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleTypeDataBase.uc b/exported/Engine/Classes/ParticleModuleTypeDataBase.uc new file mode 100755 index 00000000..9a6f4e4a --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleTypeDataBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleTypeDataBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleModuleTypeDataBeam.uc b/exported/Engine/Classes/ParticleModuleTypeDataBeam.uc new file mode 100755 index 00000000..d2fc9530 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleTypeDataBeam.uc @@ -0,0 +1,78 @@ +class ParticleModuleTypeDataBeam extends ParticleModuleTypeDataBase + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +enum EBeamMethod +{ + PEBM_Distance, // 0 + PEBM_EndPoints, // 1 + PEBM_EndPoints_Interpolated, // 2 + PEBM_UserSet_EndPoints, // 3 + PEBM_UserSet_EndPoints_Interpolated,// 4 + PEBM_MAX // 5 +}; + +enum EBeamEndPointMethod +{ + PEBEPM_Calculated, // 0 + PEBEPM_Distribution, // 1 + PEBEPM_Distribution_Constant, // 2 + PEBEPM_MAX // 3 +}; + +var(Beam) ParticleModuleTypeDataBeam.EBeamMethod BeamMethod; +var(Beam) ParticleModuleTypeDataBeam.EBeamEndPointMethod EndPointMethod; +var(Beam) RawDistributionFloat Distance; +var(Beam) RawDistributionVector EndPoint; +var(Beam) int TessellationFactor; +var(Beam) RawDistributionFloat EmitterStrength; +var(Beam) RawDistributionFloat TargetStrength; +var(Beam) RawDistributionVector EndPointDirection; +var(Beam) int TextureTile; +var(Beam) bool RenderGeometry; +var(Beam) bool RenderDirectLine; +var(Beam) bool RenderLines; +var(Beam) bool RenderTessellation; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleTypeDataBeam.DistributionDistance' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDistance' + begin object name="DistributionDistance" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleTypeDataBeam.DistributionEndPoint' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionEndPoint' + begin object name="DistributionEndPoint" class=Engine.DistributionVectorConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleTypeDataBeam.DistributionEmitterStrength' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionEmitterStrength' + begin object name="DistributionEmitterStrength" class=Engine.DistributionFloatConstant + Constant=1000.0000000 + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleTypeDataBeam.DistributionTargetStrength' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionTargetStrength' + begin object name="DistributionTargetStrength" class=Engine.DistributionFloatConstant + Constant=1000.0000000 + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleTypeDataBeam.DistributionEndPointDirection' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionEndPointDirection' + begin object name="DistributionEndPointDirection" class=Engine.DistributionVectorConstant + Constant=(X=1.0000000,Y=0.0000000,Z=0.0000000) + end object + Distance=(Distribution=Distribution=DistributionDistance,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + EndPoint=(Distribution=Distribution=DistributionEndPoint,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + TessellationFactor=1 + EmitterStrength=(Distribution=Distribution=DistributionEmitterStrength,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1000.0000000,1000.0000000,1000.0000000,1000.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + TargetStrength=(Distribution=Distribution=DistributionTargetStrength,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1000.0000000,1000.0000000,1000.0000000,1000.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + EndPointDirection=(Distribution=Distribution=DistributionEndPointDirection,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,1.0000000,1.0000000,0.0000000,0.0000000,1.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + RenderGeometry=true + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleTypeDataBeam2.uc b/exported/Engine/Classes/ParticleModuleTypeDataBeam2.uc new file mode 100755 index 00000000..c015cdf7 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleTypeDataBeam2.uc @@ -0,0 +1,81 @@ +class ParticleModuleTypeDataBeam2 extends ParticleModuleTypeDataBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum EBeam2Method +{ + PEB2M_Distance, // 0 + PEB2M_Target, // 1 + PEB2M_Branch, // 2 + PEB2M_MAX // 3 +}; + +enum EBeamTaperMethod +{ + PEBTM_None, // 0 + PEBTM_Full, // 1 + PEBTM_Partial, // 2 + PEBTM_MAX // 3 +}; + +struct BeamTargetData +{ + var() name TargetName; + var() float TargetPercentage; + + structdefaultproperties + { + TargetName="None" + TargetPercentage=0.0000000 + } +}; + +var(Beam) ParticleModuleTypeDataBeam2.EBeam2Method BeamMethod; +var(Taper) ParticleModuleTypeDataBeam2.EBeamTaperMethod TaperMethod; +var(Beam) int TextureTile; +var(Beam) float TextureTileDistance; +var(Beam) int Sheets; +var(Beam) int MaxBeamCount; +var(Beam) float Speed; +var(Beam) int InterpolationPoints; +var(Beam) bool bAlwaysOn; +var(Rendering) bool RenderGeometry; +var(Rendering) bool RenderDirectLine; +var(Rendering) bool RenderLines; +var(Rendering) bool RenderTessellation; +var(Beam) int UpVectorStepSize; +var(Branching) name BranchParentName; +var(Distance) RawDistributionFloat Distance; +var(Taper) RawDistributionFloat TaperFactor; +var(Taper) RawDistributionFloat TaperScale; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleTypeDataBeam2.DistributionDistance' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDistance' + begin object name="DistributionDistance" class=Engine.DistributionFloatConstant + Constant=25.0000000 + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleTypeDataBeam2.DistributionTaperFactor' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionTaperFactor' + begin object name="DistributionTaperFactor" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleTypeDataBeam2.DistributionTaperScale' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionTaperScale' + begin object name="DistributionTaperScale" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + BeamMethod=EBeam2Method.PEB2M_Target + TextureTile=1 + Sheets=1 + Speed=10.0000000 + RenderGeometry=true + Distance=(Distribution=Distribution=DistributionDistance,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(25.0000000,25.0000000,25.0000000,25.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + TaperFactor=(Distribution=Distribution=DistributionTaperFactor,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + TaperScale=(Distribution=Distribution=DistributionTaperScale,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleTypeDataMesh.uc b/exported/Engine/Classes/ParticleModuleTypeDataMesh.uc new file mode 100755 index 00000000..297d249a --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleTypeDataMesh.uc @@ -0,0 +1,55 @@ +class ParticleModuleTypeDataMesh extends ParticleModuleTypeDataBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum EMeshScreenAlignment +{ + PSMA_MeshFaceCameraWithRoll, // 0 + PSMA_MeshFaceCameraWithSpin, // 1 + PSMA_MeshFaceCameraWithLockedAxis,// 2 + PSMA_MAX // 3 +}; + +enum EMeshCameraFacingUpAxis +{ + CameraFacing_NoneUP, // 0 + CameraFacing_ZUp, // 1 + CameraFacing_NegativeZUp, // 2 + CameraFacing_YUp, // 3 + CameraFacing_NegativeYUp, // 4 + CameraFacing_MAX // 5 +}; + +enum EMeshCameraFacingOptions +{ + XAxisFacing_NoUp, // 0 + XAxisFacing_ZUp, // 1 + XAxisFacing_NegativeZUp, // 2 + XAxisFacing_YUp, // 3 + XAxisFacing_NegativeYUp, // 4 + LockedAxis_ZAxisFacing, // 5 + LockedAxis_NegativeZAxisFacing, // 6 + LockedAxis_YAxisFacing, // 7 + LockedAxis_NegativeYAxisFacing, // 8 + VelocityAligned_ZAxisFacing, // 9 + VelocityAligned_NegativeZAxisFacing,// 10 + VelocityAligned_YAxisFacing, // 11 + VelocityAligned_NegativeYAxisFacing,// 12 + EMeshCameraFacingOptions_MAX // 13 +}; + +var(Mesh) StaticMesh Mesh; +var bool CastShadows; +var bool DoCollisions; +var(Mesh) bool bAllowMotionBlur; +var(Mesh) bool bOverrideMaterial; +var(CameraFacing) bool bCameraFacing; +var(CameraFacing) bool bApplyParticleRotationAsSpin; +var(Mesh) ParticleModuleTypeDataMesh.EMeshScreenAlignment MeshAlignment; +var(Orientation) ParticleModuleOrientationAxisLock.EParticleAxisLock AxisLockOption; +var deprecated ParticleModuleTypeDataMesh.EMeshCameraFacingUpAxis CameraFacingUpAxisOption; +var(CameraFacing) ParticleModuleTypeDataMesh.EMeshCameraFacingOptions CameraFacingOption; +var(Orientation) float Pitch; +var(Orientation) float Roll; +var(Orientation) float Yaw; diff --git a/exported/Engine/Classes/ParticleModuleTypeDataMeshPhysX.uc b/exported/Engine/Classes/ParticleModuleTypeDataMeshPhysX.uc new file mode 100755 index 00000000..be7a0f73 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleTypeDataMeshPhysX.uc @@ -0,0 +1,29 @@ +class ParticleModuleTypeDataMeshPhysX extends ParticleModuleTypeDataMesh + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object,Object); + +enum EPhysXMeshRotationMethod +{ + PMRM_Disabled, // 0 + PMRM_Spherical, // 1 + PMRM_Box, // 2 + PMRM_LongBox, // 3 + PMRM_FlatBox, // 4 + PMRM_Velocity, // 5 + PMRM_MAX // 6 +}; + +var(PhysXEmitter) PhysXParticleSystem PhysXParSys; +var(PhysXEmitter) ParticleModuleTypeDataMeshPhysX.EPhysXMeshRotationMethod PhysXRotationMethod; +var(PhysXEmitter) float FluidRotationCoefficient; +var(PhysXEmitter) PhysXEmitterVerticalLodProperties VerticalLod; +var(PhysXEmitter) float ZOffset; + +defaultproperties +{ + PhysXRotationMethod=EPhysXMeshRotationMethod.PMRM_Spherical + FluidRotationCoefficient=5.0000000 + VerticalLod=(WeightForFifo=1.0000000,WeightForSpawnLod=1.0000000,SpawnLodRateVsLifeBias=1.0000000,RelativeFadeoutTime=0.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleTypeDataPhysX.uc b/exported/Engine/Classes/ParticleModuleTypeDataPhysX.uc new file mode 100755 index 00000000..b075e31e --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleTypeDataPhysX.uc @@ -0,0 +1,29 @@ +class ParticleModuleTypeDataPhysX extends ParticleModuleTypeDataBase + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +struct native PhysXEmitterVerticalLodProperties +{ + var() float WeightForFifo; + var() float WeightForSpawnLod; + var() float SpawnLodRateVsLifeBias; + var() float RelativeFadeoutTime; + + structdefaultproperties + { + WeightForFifo=1.0000000 + WeightForSpawnLod=1.0000000 + SpawnLodRateVsLifeBias=1.0000000 + RelativeFadeoutTime=0.0000000 + } +}; + +var(PhysXEmitter) PhysXParticleSystem PhysXParSys; +var(PhysXEmitter) PhysXEmitterVerticalLodProperties VerticalLod; + +defaultproperties +{ + VerticalLod=(WeightForFifo=1.0000000,WeightForSpawnLod=1.0000000,SpawnLodRateVsLifeBias=1.0000000,RelativeFadeoutTime=0.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleTypeDataRibbon.uc b/exported/Engine/Classes/ParticleModuleTypeDataRibbon.uc new file mode 100755 index 00000000..516b164e --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleTypeDataRibbon.uc @@ -0,0 +1,48 @@ +class ParticleModuleTypeDataRibbon extends ParticleModuleTypeDataBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +enum ETrailsRenderAxisOption +{ + Trails_CameraUp, // 0 + Trails_SourceUp, // 1 + Trails_WorldUp, // 2 + Trails_MAX // 3 +}; + +var int MaxTessellationBetweenParticles; +var(Trail) int SheetsPerTrail; +var(Trail) int MaxTrailCount; +var(Trail) int MaxParticleInTrailCount; +var(Trail) bool bDeadTrailsOnDeactivate; +var(Trail) bool bDeadTrailsOnSourceLoss; +var(Trail) bool bClipSourceSegement; +var(Trail) bool bEnablePreviousTangentRecalculation; +var(Trail) bool bTangentRecalculationEveryFrame; +var(Trail) bool bSpawnInitialParticle; +var(Rendering) bool bRenderGeometry; +var(Rendering) bool bRenderSpawnPoints; +var(Rendering) bool bRenderTangents; +var(Rendering) bool bRenderTessellation; +var(Rendering) bool bEnableTangentDiffInterpScale; +var(Trail) ParticleModuleTypeDataRibbon.ETrailsRenderAxisOption RenderAxis; +var(Spawn) float TangentSpawningScalar; +var(Rendering) float TilingDistance; +var(Rendering) float DistanceTessellationStepSize; +var(Rendering) float TangentTessellationScalar; + +defaultproperties +{ + MaxTessellationBetweenParticles=25 + SheetsPerTrail=1 + MaxTrailCount=1 + MaxParticleInTrailCount=500 + bDeadTrailsOnDeactivate=true + bDeadTrailsOnSourceLoss=true + bClipSourceSegement=true + bEnablePreviousTangentRecalculation=true + bRenderGeometry=true + DistanceTessellationStepSize=15.0000000 + TangentTessellationScalar=5.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleTypeDataTrail.uc b/exported/Engine/Classes/ParticleModuleTypeDataTrail.uc new file mode 100755 index 00000000..984e31ff --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleTypeDataTrail.uc @@ -0,0 +1,27 @@ +class ParticleModuleTypeDataTrail extends ParticleModuleTypeDataBase + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +var(Trail) bool RenderGeometry; +var(Trail) bool RenderLines; +var(Trail) bool RenderTessellation; +var(Trail) bool Tapered; +var(Trail) bool SpawnByDistance; +var(Trail) int TessellationFactor; +var(Trail) RawDistributionFloat Tension; +var(Trail) Vector SpawnDistance; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleTypeDataTrail.DistributionTension' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionTension' + begin object name="DistributionTension" class=Engine.DistributionFloatConstant + end object + RenderGeometry=true + TessellationFactor=1 + Tension=(Distribution=Distribution=DistributionTension,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + SpawnDistance=(X=5.0000000,Y=5.0000000,Z=5.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleTypeDataTrail2.uc b/exported/Engine/Classes/ParticleModuleTypeDataTrail2.uc new file mode 100755 index 00000000..f3f72502 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleTypeDataTrail2.uc @@ -0,0 +1,29 @@ +class ParticleModuleTypeDataTrail2 extends ParticleModuleTypeDataBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Trail) int TessellationFactor; +var float TessellationFactorDistance; +var(Trail) float TessellationStrength; +var(Trail) int TextureTile; +var int Sheets; +var(Trail) int MaxTrailCount; +var(Trail) int MaxParticleInTrailCount; +var(Trail) bool bClipSourceSegement; +var(Trail) bool bClearTangents; +var(Rendering) bool RenderGeometry; +var(Rendering) bool RenderDirectLine; +var(Rendering) bool RenderLines; +var(Rendering) bool RenderTessellation; + +defaultproperties +{ + TessellationFactor=1 + TessellationStrength=25.0000000 + TextureTile=1 + Sheets=1 + MaxTrailCount=1 + bClearTangents=true + RenderGeometry=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleUberBase.uc b/exported/Engine/Classes/ParticleModuleUberBase.uc new file mode 100755 index 00000000..8d4230d7 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleUberBase.uc @@ -0,0 +1,8 @@ +class ParticleModuleUberBase extends ParticleModule + abstract + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var const array RequiredModules; diff --git a/exported/Engine/Classes/ParticleModuleUberLTISIVCL.uc b/exported/Engine/Classes/ParticleModuleUberLTISIVCL.uc new file mode 100755 index 00000000..5c40455b --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleUberLTISIVCL.uc @@ -0,0 +1,64 @@ +class ParticleModuleUberLTISIVCL extends ParticleModuleUberBase + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +var(Lifetime) noclear export RawDistributionFloat Lifetime; +var(Size) noclear export RawDistributionVector StartSize; +var(Velocity) noclear export RawDistributionVector StartVelocity; +var(Velocity) noclear export RawDistributionFloat StartVelocityRadial; +var(Color) noclear export RawDistributionVector ColorOverLife; +var(Color) noclear export RawDistributionFloat AlphaOverLife; + +defaultproperties +{ + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleUberLTISIVCL.DistributionLifetime' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLifetime' + begin object name="DistributionLifetime" class=Engine.DistributionFloatUniform + Min=1.0000000 + Max=1.0000000 + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleUberLTISIVCL.DistributionStartSize' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartSize' + begin object name="DistributionStartSize" class=Engine.DistributionVectorUniform + Max=(X=1.0000000,Y=1.0000000,Z=1.0000000) + Min=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleUberLTISIVCL.DistributionStartVelocity' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartVelocity' + begin object name="DistributionStartVelocity" class=Engine.DistributionVectorUniform + Max=(X=0.0000000,Y=0.0000000,Z=10.0000000) + end object + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleUberLTISIVCL.DistributionStartVelocityRadial' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartVelocityRadial' + begin object name="DistributionStartVelocityRadial" class=Engine.DistributionFloatUniform + end object + // Reference: DistributionVectorConstantCurve'Engine.Default__ParticleModuleUberLTISIVCL.DistributionColorOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionColorOverLife' + begin object name="DistributionColorOverLife" class=Engine.DistributionVectorConstantCurve + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleUberLTISIVCL.DistributionAlphaOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAlphaOverLife' + begin object name="DistributionAlphaOverLife" class=Engine.DistributionFloatConstant + Constant=255.9000000 + end object + Lifetime=(Distribution=Distribution=DistributionLifetime,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartSize=(Distribution=Distribution=DistributionStartSize,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartVelocity=(Distribution=Distribution=DistributionStartVelocity,Type=0,Op=2,LookupTableNumElements=2,LookupTableChunkSize=6,LookupTable=(0.0000000,10.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,10.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,10.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartVelocityRadial=(Distribution=Distribution=DistributionStartVelocityRadial,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + ColorOverLife=(Distribution=Distribution=DistributionColorOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + AlphaOverLife=(Distribution=Distribution=DistributionAlphaOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(255.9000000,255.9000000,255.9000000,255.9000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + RequiredModules[0]="ParticleModuleLifetime" + RequiredModules[1]="ParticleModuleSize" + RequiredModules[2]="ParticleModuleVelocity" + RequiredModules[3]="ParticleModuleColorOverLife" + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleUberLTISIVCLIL.uc b/exported/Engine/Classes/ParticleModuleUberLTISIVCLIL.uc new file mode 100755 index 00000000..09861273 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleUberLTISIVCLIL.uc @@ -0,0 +1,72 @@ +class ParticleModuleUberLTISIVCLIL extends ParticleModuleUberBase + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +var(Lifetime) noclear export RawDistributionFloat Lifetime; +var(Size) noclear export RawDistributionVector StartSize; +var(Velocity) noclear export RawDistributionVector StartVelocity; +var(Velocity) noclear export RawDistributionFloat StartVelocityRadial; +var(Color) noclear export RawDistributionVector ColorOverLife; +var(Color) noclear export RawDistributionFloat AlphaOverLife; +var(Location) noclear export RawDistributionVector StartLocation; + +defaultproperties +{ + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleUberLTISIVCLIL.DistributionLifetime' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLifetime' + begin object name="DistributionLifetime" class=Engine.DistributionFloatUniform + Min=1.0000000 + Max=1.0000000 + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleUberLTISIVCLIL.DistributionStartSize' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartSize' + begin object name="DistributionStartSize" class=Engine.DistributionVectorUniform + Max=(X=1.0000000,Y=1.0000000,Z=1.0000000) + Min=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleUberLTISIVCLIL.DistributionStartVelocity' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartVelocity' + begin object name="DistributionStartVelocity" class=Engine.DistributionVectorUniform + Max=(X=0.0000000,Y=0.0000000,Z=10.0000000) + end object + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleUberLTISIVCLIL.DistributionStartVelocityRadial' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartVelocityRadial' + begin object name="DistributionStartVelocityRadial" class=Engine.DistributionFloatUniform + end object + // Reference: DistributionVectorConstantCurve'Engine.Default__ParticleModuleUberLTISIVCLIL.DistributionColorOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionColorOverLife' + begin object name="DistributionColorOverLife" class=Engine.DistributionVectorConstantCurve + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleUberLTISIVCLIL.DistributionAlphaOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAlphaOverLife' + begin object name="DistributionAlphaOverLife" class=Engine.DistributionFloatConstant + Constant=255.9000000 + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleUberLTISIVCLIL.DistributionStartLocation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartLocation' + begin object name="DistributionStartLocation" class=Engine.DistributionVectorUniform + end object + Lifetime=(Distribution=Distribution=DistributionLifetime,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartSize=(Distribution=Distribution=DistributionStartSize,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartVelocity=(Distribution=Distribution=DistributionStartVelocity,Type=0,Op=2,LookupTableNumElements=2,LookupTableChunkSize=6,LookupTable=(0.0000000,10.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,10.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,10.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartVelocityRadial=(Distribution=Distribution=DistributionStartVelocityRadial,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + ColorOverLife=(Distribution=Distribution=DistributionColorOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + AlphaOverLife=(Distribution=Distribution=DistributionAlphaOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(255.9000000,255.9000000,255.9000000,255.9000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartLocation=(Distribution=Distribution=DistributionStartLocation,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + RequiredModules[0]="ParticleModuleLifetime" + RequiredModules[1]="ParticleModuleSize" + RequiredModules[2]="ParticleModuleVelocity" + RequiredModules[3]="ParticleModuleColorOverLife" + RequiredModules[4]="ParticleModuleLocation" + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleUberLTISIVCLILIRSSBLIRR.uc b/exported/Engine/Classes/ParticleModuleUberLTISIVCLILIRSSBLIRR.uc new file mode 100755 index 00000000..830aeedb --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleUberLTISIVCLILIRSSBLIRR.uc @@ -0,0 +1,104 @@ +class ParticleModuleUberLTISIVCLILIRSSBLIRR extends ParticleModuleUberBase + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +var(Lifetime) noclear export RawDistributionFloat Lifetime; +var(Size) noclear export RawDistributionVector StartSize; +var(Velocity) noclear export RawDistributionVector StartVelocity; +var(Velocity) noclear export RawDistributionFloat StartVelocityRadial; +var(Color) noclear export RawDistributionVector ColorOverLife; +var(Color) noclear export RawDistributionFloat AlphaOverLife; +var(Location) noclear export RawDistributionVector StartLocation; +var(Rotation) noclear export RawDistributionFloat StartRotation; +var(Size) noclear export RawDistributionVector SizeLifeMultiplier; +var(Size) bool SizeMultiplyX; +var(Size) bool SizeMultiplyY; +var(Size) bool SizeMultiplyZ; +var(Rotation) noclear export RawDistributionFloat StartRotationRate; + +defaultproperties +{ + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleUberLTISIVCLILIRSSBLIRR.DistributionLifetime' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLifetime' + begin object name="DistributionLifetime" class=Engine.DistributionFloatUniform + Min=1.0000000 + Max=1.0000000 + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleUberLTISIVCLILIRSSBLIRR.DistributionStartSize' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartSize' + begin object name="DistributionStartSize" class=Engine.DistributionVectorUniform + Max=(X=1.0000000,Y=1.0000000,Z=1.0000000) + Min=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleUberLTISIVCLILIRSSBLIRR.DistributionStartVelocity' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartVelocity' + begin object name="DistributionStartVelocity" class=Engine.DistributionVectorUniform + Max=(X=0.0000000,Y=0.0000000,Z=10.0000000) + end object + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleUberLTISIVCLILIRSSBLIRR.DistributionStartVelocityRadial' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartVelocityRadial' + begin object name="DistributionStartVelocityRadial" class=Engine.DistributionFloatUniform + end object + // Reference: DistributionVectorConstantCurve'Engine.Default__ParticleModuleUberLTISIVCLILIRSSBLIRR.DistributionColorOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionColorOverLife' + begin object name="DistributionColorOverLife" class=Engine.DistributionVectorConstantCurve + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleUberLTISIVCLILIRSSBLIRR.DistributionAlphaOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAlphaOverLife' + begin object name="DistributionAlphaOverLife" class=Engine.DistributionFloatConstant + Constant=255.9000000 + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleUberLTISIVCLILIRSSBLIRR.DistributionStartLocation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartLocation' + begin object name="DistributionStartLocation" class=Engine.DistributionVectorUniform + end object + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleUberLTISIVCLILIRSSBLIRR.DistributionStartRotation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRotation' + begin object name="DistributionStartRotation" class=Engine.DistributionFloatUniform + Max=1.0000000 + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleUberLTISIVCLILIRSSBLIRR.DistributionLifeMultiplier' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLifeMultiplier' + begin object name="DistributionLifeMultiplier" class=Engine.DistributionVectorConstant + Constant=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleUberLTISIVCLILIRSSBLIRR.DistributionStartRotationRate' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRotationRate' + begin object name="DistributionStartRotationRate" class=Engine.DistributionFloatConstant + end object + Lifetime=(Distribution=Distribution=DistributionLifetime,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartSize=(Distribution=Distribution=DistributionStartSize,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartVelocity=(Distribution=Distribution=DistributionStartVelocity,Type=0,Op=2,LookupTableNumElements=2,LookupTableChunkSize=6,LookupTable=(0.0000000,10.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,10.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,10.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartVelocityRadial=(Distribution=Distribution=DistributionStartVelocityRadial,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + ColorOverLife=(Distribution=Distribution=DistributionColorOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + AlphaOverLife=(Distribution=Distribution=DistributionAlphaOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(255.9000000,255.9000000,255.9000000,255.9000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartLocation=(Distribution=Distribution=DistributionStartLocation,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartRotation=(Distribution=Distribution=DistributionStartRotation,Type=0,Op=2,LookupTableNumElements=2,LookupTableChunkSize=2,LookupTable=(0.0000000,1.0000000,0.0000000,1.0000000,0.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + SizeLifeMultiplier=(Distribution=Distribution=DistributionLifeMultiplier,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + SizeMultiplyX=true + SizeMultiplyY=true + SizeMultiplyZ=true + StartRotationRate=(Distribution=Distribution=DistributionStartRotationRate,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + RequiredModules[0]="ParticleModuleLifetime" + RequiredModules[1]="ParticleModuleSize" + RequiredModules[2]="ParticleModuleVelocity" + RequiredModules[3]="ParticleModuleColorOverLife" + RequiredModules[4]="ParticleModuleLocation" + RequiredModules[5]="ParticleModuleRotation" + RequiredModules[6]="ParticleModuleSizeMultiplyLife" + RequiredModules[7]="ParticleModuleRotationRate" + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleUberRainDrops.uc b/exported/Engine/Classes/ParticleModuleUberRainDrops.uc new file mode 100755 index 00000000..3a6a7c06 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleUberRainDrops.uc @@ -0,0 +1,59 @@ +class ParticleModuleUberRainDrops extends ParticleModuleUberBase + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +var(Lifetime) float LifetimeMin; +var(Lifetime) float LifetimeMax; +var(Size) Vector StartSizeMin; +var(Size) Vector StartSizeMax; +var(Velocity) Vector StartVelocityMin; +var(Velocity) Vector StartVelocityMax; +var(Velocity) float StartVelocityRadialMin; +var(Velocity) float StartVelocityRadialMax; +var(Color) Vector ColorOverLife; +var(Color) float AlphaOverLife; +var(Location) bool bIsUsingCylinder; +var(Location) bool bPositive_X; +var(Location) bool bPositive_Y; +var(Location) bool bPositive_Z; +var(Location) bool bNegative_X; +var(Location) bool bNegative_Y; +var(Location) bool bNegative_Z; +var(Location) bool bSurfaceOnly; +var(Location) bool bVelocity; +var(Location) bool bRadialVelocity; +var(Location) float PC_VelocityScale; +var(Location) Vector PC_StartLocation; +var(Location) float PC_StartRadius; +var(Location) float PC_StartHeight; +var(Location) ParticleModuleLocationPrimitiveCylinder.CylinderHeightAxis PC_HeightAxis; +var(Location) Vector StartLocationMin; +var(Location) Vector StartLocationMax; + +defaultproperties +{ + LifetimeMin=1.0000000 + LifetimeMax=1.0000000 + StartSizeMin=(X=1.0000000,Y=1.0000000,Z=1.0000000) + StartSizeMax=(X=1.0000000,Y=1.0000000,Z=1.0000000) + StartVelocityMin=(X=1.0000000,Y=1.0000000,Z=1.0000000) + StartVelocityMax=(X=1.0000000,Y=1.0000000,Z=1.0000000) + ColorOverLife=(X=255.9000000,Y=255.9000000,Z=255.9000000) + AlphaOverLife=255.9000000 + bPositive_X=true + bPositive_Y=true + bPositive_Z=true + bNegative_X=true + bNegative_Y=true + bNegative_Z=true + bRadialVelocity=true + PC_VelocityScale=1.0000000 + PC_StartRadius=50.0000000 + PC_StartHeight=50.0000000 + PC_HeightAxis=CylinderHeightAxis.PMLPC_HEIGHTAXIS_Z + bSpawnModule=true + bUpdateModule=true + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleUberRainImpacts.uc b/exported/Engine/Classes/ParticleModuleUberRainImpacts.uc new file mode 100755 index 00000000..4b399987 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleUberRainImpacts.uc @@ -0,0 +1,117 @@ +class ParticleModuleUberRainImpacts extends ParticleModuleUberBase + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +var(Lifetime) RawDistributionFloat Lifetime; +var(Size) RawDistributionVector StartSize; +var(Rotation) RawDistributionVector StartRotation; +var(Rotation) bool bInheritParent; +var(Size) bool MultiplyX; +var(Size) bool MultiplyY; +var(Size) bool MultiplyZ; +var(Location) bool bIsUsingCylinder; +var(Location) bool bPositive_X; +var(Location) bool bPositive_Y; +var(Location) bool bPositive_Z; +var(Location) bool bNegative_X; +var(Location) bool bNegative_Y; +var(Location) bool bNegative_Z; +var(Location) bool bSurfaceOnly; +var(Location) bool bVelocity; +var(Location) bool bRadialVelocity; +var(Size) RawDistributionVector LifeMultiplier; +var(Location) RawDistributionFloat PC_VelocityScale; +var(Location) RawDistributionVector PC_StartLocation; +var(Location) RawDistributionFloat PC_StartRadius; +var(Location) RawDistributionFloat PC_StartHeight; +var(Location) ParticleModuleLocationPrimitiveCylinder.CylinderHeightAxis PC_HeightAxis; +var(Color) RawDistributionVector ColorOverLife; +var(Color) RawDistributionFloat AlphaOverLife; + +defaultproperties +{ + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleUberRainImpacts.DistributionLifetime' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLifetime' + begin object name="DistributionLifetime" class=Engine.DistributionFloatUniform + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleUberRainImpacts.DistributionStartSize' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartSize' + begin object name="DistributionStartSize" class=Engine.DistributionVectorUniform + Max=(X=1.0000000,Y=1.0000000,Z=1.0000000) + Min=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleUberRainImpacts.DistributionStartRotation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRotation' + begin object name="DistributionStartRotation" class=Engine.DistributionVectorUniform + Max=(X=360.0000000,Y=360.0000000,Z=360.0000000) + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleUberRainImpacts.DistributionLifeMultiplier' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLifeMultiplier' + begin object name="DistributionLifeMultiplier" class=Engine.DistributionVectorConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleUberRainImpacts.DistributionPC_VelocityScale' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPC_VelocityScale' + begin object name="DistributionPC_VelocityScale" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleUberRainImpacts.DistributionPC_StartLocation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPC_StartLocation' + begin object name="DistributionPC_StartLocation" class=Engine.DistributionVectorConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleUberRainImpacts.DistributionPC_StartRadius' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPC_StartRadius' + begin object name="DistributionPC_StartRadius" class=Engine.DistributionFloatConstant + Constant=50.0000000 + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleUberRainImpacts.DistributionPC_StartHeight' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPC_StartHeight' + begin object name="DistributionPC_StartHeight" class=Engine.DistributionFloatConstant + Constant=50.0000000 + end object + // Reference: DistributionVectorConstantCurve'Engine.Default__ParticleModuleUberRainImpacts.DistributionColorOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionColorOverLife' + begin object name="DistributionColorOverLife" class=Engine.DistributionVectorConstantCurve + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleUberRainImpacts.DistributionAlphaOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAlphaOverLife' + begin object name="DistributionAlphaOverLife" class=Engine.DistributionFloatConstant + Constant=255.9000000 + end object + Lifetime=(Distribution=Distribution=DistributionLifetime,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartSize=(Distribution=Distribution=DistributionStartSize,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartRotation=(Distribution=Distribution=DistributionStartRotation,Type=0,Op=2,LookupTableNumElements=2,LookupTableChunkSize=6,LookupTable=(0.0000000,360.0000000,0.0000000,0.0000000,0.0000000,360.0000000,360.0000000,360.0000000,0.0000000,0.0000000,0.0000000,360.0000000,360.0000000,360.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + MultiplyX=true + MultiplyY=true + MultiplyZ=true + bIsUsingCylinder=true + bPositive_X=true + bPositive_Y=true + bPositive_Z=true + bNegative_X=true + bNegative_Y=true + bNegative_Z=true + bRadialVelocity=true + LifeMultiplier=(Distribution=Distribution=DistributionLifeMultiplier,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + PC_VelocityScale=(Distribution=Distribution=DistributionPC_VelocityScale,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + PC_StartLocation=(Distribution=Distribution=DistributionPC_StartLocation,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + PC_StartRadius=(Distribution=Distribution=DistributionPC_StartRadius,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(50.0000000,50.0000000,50.0000000,50.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + PC_StartHeight=(Distribution=Distribution=DistributionPC_StartHeight,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(50.0000000,50.0000000,50.0000000,50.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + PC_HeightAxis=CylinderHeightAxis.PMLPC_HEIGHTAXIS_Z + ColorOverLife=(Distribution=Distribution=DistributionColorOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + AlphaOverLife=(Distribution=Distribution=DistributionAlphaOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(255.9000000,255.9000000,255.9000000,255.9000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleUberRainSplashA.uc b/exported/Engine/Classes/ParticleModuleUberRainSplashA.uc new file mode 100755 index 00000000..fc286f12 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleUberRainSplashA.uc @@ -0,0 +1,65 @@ +class ParticleModuleUberRainSplashA extends ParticleModuleUberBase + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +var(Lifetime) RawDistributionFloat Lifetime; +var(Size) RawDistributionVector StartSize; +var(Rotation) RawDistributionVector StartRotation; +var(Rotation) bool bInheritParent; +var(Size) bool MultiplyX; +var(Size) bool MultiplyY; +var(Size) bool MultiplyZ; +var(Size) RawDistributionVector LifeMultiplier; +var(Color) RawDistributionVector ColorOverLife; +var(Color) RawDistributionFloat AlphaOverLife; + +defaultproperties +{ + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleUberRainSplashA.DistributionLifetime' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLifetime' + begin object name="DistributionLifetime" class=Engine.DistributionFloatUniform + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleUberRainSplashA.DistributionStartSize' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartSize' + begin object name="DistributionStartSize" class=Engine.DistributionVectorUniform + Max=(X=1.0000000,Y=1.0000000,Z=1.0000000) + Min=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleUberRainSplashA.DistributionStartRotation' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRotation' + begin object name="DistributionStartRotation" class=Engine.DistributionVectorUniform + Max=(X=360.0000000,Y=360.0000000,Z=360.0000000) + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleUberRainSplashA.DistributionLifeMultiplier' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLifeMultiplier' + begin object name="DistributionLifeMultiplier" class=Engine.DistributionVectorConstant + end object + // Reference: DistributionVectorConstantCurve'Engine.Default__ParticleModuleUberRainSplashA.DistributionColorOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionColorOverLife' + begin object name="DistributionColorOverLife" class=Engine.DistributionVectorConstantCurve + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleUberRainSplashA.DistributionAlphaOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAlphaOverLife' + begin object name="DistributionAlphaOverLife" class=Engine.DistributionFloatConstant + Constant=255.9000000 + end object + Lifetime=(Distribution=Distribution=DistributionLifetime,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartSize=(Distribution=Distribution=DistributionStartSize,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartRotation=(Distribution=Distribution=DistributionStartRotation,Type=0,Op=2,LookupTableNumElements=2,LookupTableChunkSize=6,LookupTable=(0.0000000,360.0000000,0.0000000,0.0000000,0.0000000,360.0000000,360.0000000,360.0000000,0.0000000,0.0000000,0.0000000,360.0000000,360.0000000,360.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + MultiplyX=true + MultiplyY=true + MultiplyZ=true + LifeMultiplier=(Distribution=Distribution=DistributionLifeMultiplier,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + ColorOverLife=(Distribution=Distribution=DistributionColorOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + AlphaOverLife=(Distribution=Distribution=DistributionAlphaOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(255.9000000,255.9000000,255.9000000,255.9000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleUberRainSplashB.uc b/exported/Engine/Classes/ParticleModuleUberRainSplashB.uc new file mode 100755 index 00000000..cfdd3300 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleUberRainSplashB.uc @@ -0,0 +1,64 @@ +class ParticleModuleUberRainSplashB extends ParticleModuleUberBase + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +var(Lifetime) RawDistributionFloat Lifetime; +var(Size) RawDistributionVector StartSize; +var(Color) RawDistributionVector ColorOverLife; +var(Color) RawDistributionFloat AlphaOverLife; +var(Size) RawDistributionVector LifeMultiplier; +var(Size) bool MultiplyX; +var(Size) bool MultiplyY; +var(Size) bool MultiplyZ; +var(Rotation) RawDistributionFloat StartRotationRate; + +defaultproperties +{ + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleUberRainSplashB.DistributionLifetime' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLifetime' + begin object name="DistributionLifetime" class=Engine.DistributionFloatUniform + end object + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleUberRainSplashB.DistributionStartSize' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartSize' + begin object name="DistributionStartSize" class=Engine.DistributionVectorUniform + Max=(X=1.0000000,Y=1.0000000,Z=1.0000000) + Min=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + // Reference: DistributionVectorConstantCurve'Engine.Default__ParticleModuleUberRainSplashB.DistributionColorOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionColorOverLife' + begin object name="DistributionColorOverLife" class=Engine.DistributionVectorConstantCurve + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleUberRainSplashB.DistributionAlphaOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAlphaOverLife' + begin object name="DistributionAlphaOverLife" class=Engine.DistributionFloatConstant + Constant=255.9000000 + end object + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleUberRainSplashB.DistributionLifeMultiplier' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionLifeMultiplier' + begin object name="DistributionLifeMultiplier" class=Engine.DistributionVectorConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleUberRainSplashB.DistributionStartRotationRate' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartRotationRate' + begin object name="DistributionStartRotationRate" class=Engine.DistributionFloatConstant + end object + Lifetime=(Distribution=Distribution=DistributionLifetime,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartSize=(Distribution=Distribution=DistributionStartSize,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + ColorOverLife=(Distribution=Distribution=DistributionColorOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + AlphaOverLife=(Distribution=Distribution=DistributionAlphaOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(255.9000000,255.9000000,255.9000000,255.9000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + LifeMultiplier=(Distribution=Distribution=DistributionLifeMultiplier,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + MultiplyX=true + MultiplyY=true + MultiplyZ=true + StartRotationRate=(Distribution=Distribution=DistributionStartRotationRate,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleVelocity.uc b/exported/Engine/Classes/ParticleModuleVelocity.uc new file mode 100755 index 00000000..24b1f6be --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleVelocity.uc @@ -0,0 +1,24 @@ +class ParticleModuleVelocity extends ParticleModuleVelocityBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Velocity) RawDistributionVector StartVelocity; +var(Velocity) RawDistributionFloat StartVelocityRadial; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleVelocity.DistributionStartVelocity' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartVelocity' + begin object name="DistributionStartVelocity" class=Engine.DistributionVectorUniform + end object + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleVelocity.DistributionStartVelocityRadial' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartVelocityRadial' + begin object name="DistributionStartVelocityRadial" class=Engine.DistributionFloatUniform + end object + StartVelocity=(Distribution=Distribution=DistributionStartVelocity,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StartVelocityRadial=(Distribution=Distribution=DistributionStartVelocityRadial,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleVelocityBase.uc b/exported/Engine/Classes/ParticleModuleVelocityBase.uc new file mode 100755 index 00000000..bc994c49 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleVelocityBase.uc @@ -0,0 +1,8 @@ +class ParticleModuleVelocityBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); + +var(Velocity) bool bInWorldSpace; +var(Velocity) bool bApplyOwnerScale; diff --git a/exported/Engine/Classes/ParticleModuleVelocityCone.uc b/exported/Engine/Classes/ParticleModuleVelocityCone.uc new file mode 100755 index 00000000..cfe14075 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleVelocityCone.uc @@ -0,0 +1,27 @@ +class ParticleModuleVelocityCone extends ParticleModuleVelocityBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Cone) RawDistributionFloat Angle; +var(Cone) RawDistributionFloat Velocity; +var(Cone) Vector Direction; + +defaultproperties +{ + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleVelocityCone.DistributionAngle' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAngle' + begin object name="DistributionAngle" class=Engine.DistributionFloatUniform + end object + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleVelocityCone.DistributionVelocity' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionVelocity' + begin object name="DistributionVelocity" class=Engine.DistributionFloatUniform + end object + Angle=(Distribution=Distribution=DistributionAngle,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Velocity=(Distribution=Distribution=DistributionVelocity,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Direction=(X=0.0000000,Y=0.0000000,Z=1.0000000) + bSpawnModule=true + bSupported3DDrawMode=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleVelocityInheritParent.uc b/exported/Engine/Classes/ParticleModuleVelocityInheritParent.uc new file mode 100755 index 00000000..72f85e51 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleVelocityInheritParent.uc @@ -0,0 +1,18 @@ +class ParticleModuleVelocityInheritParent extends ParticleModuleVelocityBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Velocity) RawDistributionVector Scale; + +defaultproperties +{ + // Reference: DistributionVectorConstant'Engine.Default__ParticleModuleVelocityInheritParent.DistributionScale' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionScale' + begin object name="DistributionScale" class=Engine.DistributionVectorConstant + Constant=(X=1.0000000,Y=1.0000000,Z=1.0000000) + end object + Scale=(Distribution=Distribution=DistributionScale,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleVelocityOverLifetime.uc b/exported/Engine/Classes/ParticleModuleVelocityOverLifetime.uc new file mode 100755 index 00000000..2ee1dcc3 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleVelocityOverLifetime.uc @@ -0,0 +1,19 @@ +class ParticleModuleVelocityOverLifetime extends ParticleModuleVelocityBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var(Velocity) RawDistributionVector VelOverLife; +var(Velocity) export bool Absolute; + +defaultproperties +{ + // Reference: DistributionVectorConstantCurve'Engine.Default__ParticleModuleVelocityOverLifetime.DistributionVelOverLife' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionVelOverLife' + begin object name="DistributionVelOverLife" class=Engine.DistributionVectorConstantCurve + end object + VelOverLife=(Distribution=Distribution=DistributionVelOverLife,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=3,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bSpawnModule=true + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleVelocity_Seeded.uc b/exported/Engine/Classes/ParticleModuleVelocity_Seeded.uc new file mode 100755 index 00000000..b605d707 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleVelocity_Seeded.uc @@ -0,0 +1,27 @@ +class ParticleModuleVelocity_Seeded extends ParticleModuleVelocity + native(Particle) + editinlinenew + hidecategories(Object,Object,Object,Object); + +var(RandomSeed) ParticleRandomSeedInfo RandomSeedInfo; + +defaultproperties +{ + // Reference: DistributionVectorUniform'Engine.Default__ParticleModuleVelocity_Seeded.DistributionStartVelocity' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartVelocity' + // Archetype: DistributionVectorUniform'Engine.Default__ParticleModuleVelocity.DistributionStartVelocity' + begin object name="DistributionStartVelocity" + end object + // Reference: DistributionFloatUniform'Engine.Default__ParticleModuleVelocity_Seeded.DistributionStartVelocityRadial' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStartVelocityRadial' + // Archetype: DistributionFloatUniform'Engine.Default__ParticleModuleVelocity.DistributionStartVelocityRadial' + begin object name="DistributionStartVelocityRadial" + end object + RandomSeedInfo=(ParameterName="None",bGetSeedFromInstance=false,bInstanceSeedIsIndex=false,bResetSeedOnEmitterLooping=true,RandomSeeds=none) + StartVelocity=(Distribution=Distribution=DistributionStartVelocity) + StartVelocityRadial=(Distribution=Distribution=DistributionStartVelocityRadial) + bSupportsRandomSeed=true + bRequiresLoopingNotification=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleWorldAttractor.uc b/exported/Engine/Classes/ParticleModuleWorldAttractor.uc new file mode 100755 index 00000000..d1b596a9 --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleWorldAttractor.uc @@ -0,0 +1,19 @@ +class ParticleModuleWorldAttractor extends ParticleModuleWorldForcesBase + native(Particle) + editinlinenew + hidecategories(Object,Object,Object); + +var() bool bParticleLifeRelative; +var() RawDistributionFloat AttractorInfluence; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__ParticleModuleWorldAttractor.DistributionInfluence' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionInfluence' + begin object name="DistributionInfluence" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + AttractorInfluence=(Distribution=Distribution=DistributionInfluence,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(1.0000000,1.0000000,1.0000000,1.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + bUpdateModule=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleModuleWorldForcesBase.uc b/exported/Engine/Classes/ParticleModuleWorldForcesBase.uc new file mode 100755 index 00000000..4d64babd --- /dev/null +++ b/exported/Engine/Classes/ParticleModuleWorldForcesBase.uc @@ -0,0 +1,5 @@ +class ParticleModuleWorldForcesBase extends ParticleModule + abstract + native(Particle) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/ParticleSpriteEmitter.uc b/exported/Engine/Classes/ParticleSpriteEmitter.uc new file mode 100755 index 00000000..d6aa737c --- /dev/null +++ b/exported/Engine/Classes/ParticleSpriteEmitter.uc @@ -0,0 +1,14 @@ +class ParticleSpriteEmitter extends ParticleEmitter + native(Particle) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +enum EParticleScreenAlignment +{ + PSA_Square, // 0 + PSA_Rectangle, // 1 + PSA_Velocity, // 2 + PSA_TypeSpecific, // 3 + PSA_MAX // 4 +}; diff --git a/exported/Engine/Classes/ParticleSystem.uc b/exported/Engine/Classes/ParticleSystem.uc new file mode 100755 index 00000000..4a4463f9 --- /dev/null +++ b/exported/Engine/Classes/ParticleSystem.uc @@ -0,0 +1,160 @@ +class ParticleSystem extends Object + native(Particle) + hidecategories(Object); + +enum EParticleSystemUpdateMode +{ + EPSUM_RealTime, // 0 + EPSUM_FixedTime, // 1 + EPSUM_MAX // 2 +}; + +enum ParticleSystemLODMethod +{ + PARTICLESYSTEMLODMETHOD_Automatic,// 0 + PARTICLESYSTEMLODMETHOD_DirectSet,// 1 + PARTICLESYSTEMLODMETHOD_ActivateAutomatic,// 2 + PARTICLESYSTEMLODMETHOD_MAX // 3 +}; + +enum EParticleSystemOcclusionBoundsMethod +{ + EPSOBM_None, // 0 + EPSOBM_ParticleBounds, // 1 + EPSOBM_CustomBounds, // 2 + EPSOBM_MAX // 3 +}; + +struct native ParticleSystemLOD +{ + var() bool bLit; + + structdefaultproperties + { + bLit=false + } +}; + +struct ParticleChannelContainer +{ + var bool bInitialized; + var(Channel) bool Default; + var(Channel) bool Friendly; + var(Channel) bool Enemy; + var(Channel) bool LocalOwner; + var bool Channel5; + var bool Channel6; + var bool Channel7; + var bool Channel8; + var(Filter) bool VerticalTargeter; + var bool Filter2; + var(Filter) bool NotLocalOwner; + var(Filter) bool CustomFilter1; + var(Filter) bool CustomFilter2; + var(Filter) bool CustomFilter3; + var(Filter) bool CustomFilter4; + var(Filter) bool CustomFilter5; + var(Filter) bool CustomFilter6; + var(Filter) bool CustomFilter7; + + structdefaultproperties + { + bInitialized=true + Default=true + Friendly=false + Enemy=false + LocalOwner=false + Channel5=false + Channel6=false + Channel7=false + Channel8=false + VerticalTargeter=false + Filter2=false + NotLocalOwner=false + CustomFilter1=false + CustomFilter2=false + CustomFilter3=false + CustomFilter4=false + CustomFilter5=false + CustomFilter6=false + CustomFilter7=false + } +}; + +struct native LODSoloTrack +{ + var transient array SoloEnableSetting; + + structdefaultproperties + { + SoloEnableSetting=none + } +}; + +var() ParticleSystem.EParticleSystemUpdateMode SystemUpdateMode; +var(LOD) ParticleSystem.ParticleSystemLODMethod LODMethod; +var(Occlusion) ParticleSystem.EParticleSystemOcclusionBoundsMethod OcclusionBoundsMethod; +var() float UpdateTime_FPS; +var float UpdateTime_Delta; +var() float WarmupTime; +var() float WarmupTickRate; +var() int TranslucencySortPriority; +var export editinline array Emitters; +var export editinline transient ParticleSystemComponent PreviewComponent; +var const deprecated bool bLit; +var() bool bOrientZAxisTowardCamera; +var bool bRegenerateLODDuplicate; +var(Bounds) bool bUseFixedRelativeBoundingBox; +var() bool m_bDeactivateOnInactive; +var() bool m_bDeactivateOnInactiveIfEmitterPool; +var bool m_bHasDisplayMasks; +var bool bShouldResetPeakCounts; +var transient bool bHasPhysics; +var(Thumbnail) bool bUseRealtimeThumbnail; +var bool ThumbnailImageOutOfDate; +var() bool bSkipSpawnCountCheck; +var(Delay) bool bUseDelayRange; +var export InterpCurveEdSetup CurveEdSetup; +var(LOD) float LODDistanceCheckTime; +var(LOD) editfixedsize array LODDistances; +var(LOD) array LODSettings; +var(Bounds) Box FixedRelativeBoundingBox; +var() float SecondsBeforeInactive; +var(Delay) float Delay; +var(Delay) float DelayLow; +var(MacroUV) Vector MacroUVPosition; +var(MacroUV) float MacroUVRadius; +var(Occlusion) Box CustomOcclusionBounds; +var transient array SoloTracking; + +// Export UParticleSystem::execGetCurrentLODMethod(FFrame&, void* const) +native function ParticleSystem.ParticleSystemLODMethod GetCurrentLODMethod(); + +// Export UParticleSystem::execGetLODLevelCount(FFrame&, void* const) +native function int GetLODLevelCount(); + +// Export UParticleSystem::execGetLODDistance(FFrame&, void* const) +native function float GetLODDistance(int LODLevelIndex); + +// Export UParticleSystem::execSetCurrentLODMethod(FFrame&, void* const) +native function SetCurrentLODMethod(ParticleSystem.ParticleSystemLODMethod InMethod); + +// Export UParticleSystem::execSetLODDistance(FFrame&, void* const) +native function bool SetLODDistance(int LODLevelIndex, float InDistance); + +// Export UParticleSystem::execGetMaxLifespan(FFrame&, void* const) +native function float GetMaxLifespan(float InComponentDelay); + +// Export UParticleSystem::execHasLocalEmitter(FFrame&, void* const) +native function bool HasLocalEmitter(); + +defaultproperties +{ + UpdateTime_FPS=60.0000000 + UpdateTime_Delta=1.0000000 + m_bDeactivateOnInactiveIfEmitterPool=true + ThumbnailImageOutOfDate=true + LODDistanceCheckTime=0.2500000 + FixedRelativeBoundingBox=(Min=(X=-1.0000000,Y=-1.0000000,Z=-1.0000000),Max=(X=1.0000000,Y=1.0000000,Z=1.0000000),IsValid=0) + MacroUVRadius=200.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleSystemComponent.uc b/exported/Engine/Classes/ParticleSystemComponent.uc new file mode 100755 index 00000000..48859414 --- /dev/null +++ b/exported/Engine/Classes/ParticleSystemComponent.uc @@ -0,0 +1,332 @@ +class ParticleSystemComponent extends PrimitiveComponent + native(Particle) + editinlinenew + hidecategories(Object,Physics,Collision); + +enum ParticleReplayState +{ + PRS_Disabled, // 0 + PRS_Capturing, // 1 + PRS_Replaying, // 2 + PRS_MAX // 3 +}; + +enum EParticleEventType +{ + EPET_Any, // 0 + EPET_Spawn, // 1 + EPET_Death, // 2 + EPET_Collision, // 3 + EPET_WorldAttractorCollision, // 4 + EPET_Kismet, // 5 + EPET_MAX // 6 +}; + +struct ParticleEmitterInstance +{ +}; + +struct native ParticleEmitterInstanceMotionBlurInfo +{ + var native const transient Map_Mirror ParticleMBInfoMap; +}; + +struct native ViewParticleEmitterInstanceMotionBlurInfo +{ + var native const transient Map_Mirror EmitterInstanceMBInfoMap; +}; + +struct native ParticleEventData +{ + var int Type; + var name EventName; + var float EmitterTime; + var Vector Location; + var Vector Direction; + var Vector Velocity; + + structdefaultproperties + { + Type=0 + EventName="None" + EmitterTime=0.0000000 + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Direction=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Velocity=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct native ParticleEventSpawnData extends ParticleEventData +{ +}; + +struct native ParticleEventDeathData extends ParticleEventData +{ + var float ParticleTime; +}; + +struct native ParticleEventCollideData extends ParticleEventData +{ + var float ParticleTime; + var Vector Normal; + var float Time; + var int Item; + var name BoneName; +}; + +struct native ParticleEventAttractorCollideData extends ParticleEventCollideData +{ +}; + +struct native ParticleEventKismetData extends ParticleEventData +{ + var bool UsePSysCompLocation; + var Vector Normal; +}; + +var() const ParticleSystem Template; +var Class LightEnvironmentClass; +var transient Actor LightEnvironmentSharedInstigator; +var transient int MaxLightEnvironmentPooledReuses; +var native const transient array EmitterInstances; +var private duplicatetransient const transient array SMComponents; +var private duplicatetransient const transient array SMMaterialInterfaces; +var private duplicatetransient const transient array SkelMeshComponents; +var native const transient array ViewMBInfoArray; +var() bool bAutoActivate; +var const transient bool bWasCompleted; +var const transient bool bHasDurationElapsed; +var const transient bool bSuppressSpawning; +var const transient bool bWasDeactivated; +var() bool bResetOnDetach; +var bool bUpdateOnDedicatedServer; +var transient bool bJustAttached; +var transient bool bIsActive; +var transient bool bHasBeenActivated; +var bool bWarmingUp; +var bool bIsCachedInPool; +var(LOD) bool bOverrideLODMethod; +var bool bSkipUpdateDynamicDataDuringTick; +var bool bSkipBoundsUpdate; +var bool bUpdateComponentInTick; +var bool bDeferredBeamUpdate; +var transient bool bForcedInActive; +var transient bool bIsWarmingUp; +var transient bool bIsViewRelevanceDirty; +var transient bool bRecacheViewRelevance; +var bool m_EmitBasedOnAnimNotify; +var transient bool bLODUpdatePending; +var transient bool bSkipSpawnCountCheck; +var transient bool m_bRealTimeTicking; +var const bool bHasSavedScale3D; +var() editinline array InstanceParameters; +var Vector OldPosition; +var Vector PartSysVelocity; +var float WarmupTime; +var float WarmupTickRate; +var private transient int LODLevel; +var() float SecondsBeforeInactive; +var private transient float TimeSinceLastForceUpdateTransform; +var float MaxTimeBeforeForceUpdateTransform; +var transient float AccumTickTime; +var(LOD) ParticleSystem.ParticleSystemLODMethod LODMethod; +var const transient ParticleSystemComponent.ParticleReplayState ReplayState; +var const transient array CachedViewRelevanceFlags; +var float m_ActiveRemainingTime; +var transient ParticleChannelContainer m_ParticleChannels; +var() const editinline array ReplayClips; +var const transient int ReplayClipIDNumber; +var const transient int ReplayFrameIndex; +var transient float AccumLODDistanceCheckTime; +var transient array SpawnEvents; +var transient array DeathEvents; +var transient array CollisionEvents; +var transient array KismetEvents; +var transient array AttractorCollisionEvents; +var native const transient Pointer ReleaseResourcesFence; +var() float CustomTimeDilation; +var transient float EmitterDelay; +var const float FOV; +var const Vector SavedScale3D; +//var delegate __OnSystemFinished__Delegate; +//var delegate __OnSystemDurationElapsed__Delegate; + +delegate OnSystemFinished(ParticleSystemComponent PSystem) +{ + //return; +} + +delegate OnSystemDurationElapsed(ParticleSystemComponent PSystem) +{ + //return; +} + +// Export UParticleSystemComponent::execSetTemplate(FFrame&, void* const) +native final function SetTemplate(ParticleSystem NewTemplate); + +// Export UParticleSystemComponent::execActivateSystem(FFrame&, void* const) +native final function ActivateSystem(optional bool bFlagAsJustAttached = false); + +// Export UParticleSystemComponent::execDeactivateSystem(FFrame&, void* const) +native final function DeactivateSystem(); + +// Export UParticleSystemComponent::execKillParticlesForced(FFrame&, void* const) +native final function KillParticlesForced(); + +// Export UParticleSystemComponent::execKillParticlesInEmitter(FFrame&, void* const) +native final function KillParticlesInEmitter(name InEmitterName); + +// Export UParticleSystemComponent::execSetSkipUpdateDynamicDataDuringTick(FFrame&, void* const) +native final function SetSkipUpdateDynamicDataDuringTick(bool bInSkipUpdateDynamicDataDuringTick); + +// Export UParticleSystemComponent::execGetSkipUpdateDynamicDataDuringTick(FFrame&, void* const) +native final function bool GetSkipUpdateDynamicDataDuringTick(); + +// Export UParticleSystemComponent::execSetSkipBoundsUpdate(FFrame&, void* const) +native final function SetSkipBoundsUpdate(bool bInSkipBoundsUpdate); + +// Export UParticleSystemComponent::execGetSkipBoundsUpdate(FFrame&, void* const) +native final function bool GetSkipBoundsUpdate(); + +// Export UParticleSystemComponent::execSetKillOnDeactivate(FFrame&, void* const) +native function SetKillOnDeactivate(int EmitterIndex, bool bKill); + +// Export UParticleSystemComponent::execSetKillOnCompleted(FFrame&, void* const) +native function SetKillOnCompleted(int EmitterIndex, bool bKill); + +// Export UParticleSystemComponent::execRewindEmitterInstance(FFrame&, void* const) +native function RewindEmitterInstance(int EmitterIndex); + +// Export UParticleSystemComponent::execRewindEmitterInstances(FFrame&, void* const) +native function RewindEmitterInstances(); + +// Export UParticleSystemComponent::execSetBeamType(FFrame&, void* const) +native function SetBeamType(int EmitterIndex, int NewMethod); + +// Export UParticleSystemComponent::execSetBeamTessellationFactor(FFrame&, void* const) +native function SetBeamTessellationFactor(int EmitterIndex, float NewFactor); + +// Export UParticleSystemComponent::execSetBeamEndPoint(FFrame&, void* const) +native function SetBeamEndPoint(int EmitterIndex, Vector NewEndPoint); + +// Export UParticleSystemComponent::execSetBeamDistance(FFrame&, void* const) +native function SetBeamDistance(int EmitterIndex, float Distance); + +// Export UParticleSystemComponent::execSetBeamSourcePoint(FFrame&, void* const) +native function SetBeamSourcePoint(int EmitterIndex, Vector NewSourcePoint, int SourceIndex); + +// Export UParticleSystemComponent::execSetBeamSourceTangent(FFrame&, void* const) +native function SetBeamSourceTangent(int EmitterIndex, Vector NewTangentPoint, int SourceIndex); + +// Export UParticleSystemComponent::execSetBeamSourceStrength(FFrame&, void* const) +native function SetBeamSourceStrength(int EmitterIndex, float NewSourceStrength, int SourceIndex); + +// Export UParticleSystemComponent::execSetBeamTargetPoint(FFrame&, void* const) +native function SetBeamTargetPoint(int EmitterIndex, Vector NewTargetPoint, int TargetIndex); + +// Export UParticleSystemComponent::execSetBeamTargetTangent(FFrame&, void* const) +native function SetBeamTargetTangent(int EmitterIndex, Vector NewTangentPoint, int TargetIndex); + +// Export UParticleSystemComponent::execSetBeamTargetStrength(FFrame&, void* const) +native function SetBeamTargetStrength(int EmitterIndex, float NewTargetStrength, int TargetIndex); + +// Export UParticleSystemComponent::execDetermineLODLevelForLocation(FFrame&, void* const) +native function int DetermineLODLevelForLocation(const out Vector EffectLocation); + +// Export UParticleSystemComponent::execDetermineDesiredLODLevel(FFrame&, void* const) +native function int DetermineDesiredLODLevel(); + +// Export UParticleSystemComponent::execGetMaxLifespan(FFrame&, void* const) +native function float GetMaxLifespan(); + +// Export UParticleSystemComponent::execSystemHasCompleted(FFrame&, void* const) +native function bool SystemHasCompleted(); + +// Export UParticleSystemComponent::execSystemHasDurationElapsed(FFrame&, void* const) +native function bool SystemHasDurationElapsed(); + +// Export UParticleSystemComponent::execSetLODLevel(FFrame&, void* const) +native final function SetLODLevel(int InLODLevel); + +// Export UParticleSystemComponent::execSetEditorLODLevel(FFrame&, void* const) +native final function SetEditorLODLevel(int InLODLevel); + +// Export UParticleSystemComponent::execGetLODLevel(FFrame&, void* const) +native final function int GetLODLevel(); + +// Export UParticleSystemComponent::execGetEditorLODLevel(FFrame&, void* const) +native final function int GetEditorLODLevel(); + +// Export UParticleSystemComponent::execSetFloatParameter(FFrame&, void* const) +native final function SetFloatParameter(name ParameterName, float Param); + +// Export UParticleSystemComponent::execSetFloatRandParameter(FFrame&, void* const) +native final function SetFloatRandParameter(name ParameterName, float Param, float ParamLow); + +// Export UParticleSystemComponent::execSetVectorParameter(FFrame&, void* const) +native final function SetVectorParameter(name ParameterName, Vector Param); + +// Export UParticleSystemComponent::execSetVectorRandParameter(FFrame&, void* const) +native final function SetVectorRandParameter(name ParameterName, const out Vector Param, const out Vector ParamLow); + +// Export UParticleSystemComponent::execSetColorParameter(FFrame&, void* const) +native final function SetColorParameter(name ParameterName, Color Param); + +// Export UParticleSystemComponent::execSetActorParameter(FFrame&, void* const) +native final function SetActorParameter(name ParameterName, Actor Param); + +// Export UParticleSystemComponent::execSetMaterialParameter(FFrame&, void* const) +native final function SetMaterialParameter(name ParameterName, MaterialInterface Param); + +// Export UParticleSystemComponent::execSetValueNameParameter(FFrame&, void* const) +native final function SetValueNameParameter(name ParameterName, name Param); + +// Export UParticleSystemComponent::execGetFloatParameter(FFrame&, void* const) +native function bool GetFloatParameter(const name InName, out float OutFloat); + +// Export UParticleSystemComponent::execGetVectorParameter(FFrame&, void* const) +native function bool GetVectorParameter(const name InName, out Vector OutVector); + +// Export UParticleSystemComponent::execGetColorParameter(FFrame&, void* const) +native function bool GetColorParameter(const name InName, out Color OutColor); + +// Export UParticleSystemComponent::execGetActorParameter(FFrame&, void* const) +native function bool GetActorParameter(const name InName, out Actor OutActor); + +// Export UParticleSystemComponent::execGetMaterialParameter(FFrame&, void* const) +native function bool GetMaterialParameter(const name InName, out MaterialInterface OutMaterial); + +// Export UParticleSystemComponent::execGetValueNameParameter(FFrame&, void* const) +native function bool GetValueNameParameter(const name ParameterName, out name Param); + +// Export UParticleSystemComponent::execClearParameter(FFrame&, void* const) +native final function ClearParameter(name ParameterName, optional PrimitiveComponent.EParticleSysParamType ParameterType); + +// Export UParticleSystemComponent::execSetActive(FFrame&, void* const) +native final function SetActive(bool bNowActive, optional bool bFlagAsJustAttached); + +// Export UParticleSystemComponent::execResetToDefaults(FFrame&, void* const) +native final function ResetToDefaults(); + +// Export UParticleSystemComponent::execSetStopSpawning(FFrame&, void* const) +native final function SetStopSpawning(int InEmitterIndex, bool bInStopSpawning); + +// Export UParticleSystemComponent::execUpdateEmitterMasks(FFrame&, void* const) +native function UpdateEmitterMasks(); + +// Export UParticleSystemComponent::execSetFOV(FFrame&, void* const) +native final function SetFOV(float NewFOV); + +defaultproperties +{ + LightEnvironmentClass=Class'Engine.ParticleLightEnvironmentComponent' + MaxLightEnvironmentPooledReuses=10 + bAutoActivate=true + bIsViewRelevanceDirty=true + SecondsBeforeInactive=1.0000000 + MaxTimeBeforeForceUpdateTransform=5.0000000 + m_ParticleChannels=(bInitialized=true,Default=true,Friendly=false,Enemy=false,LocalOwner=false,Channel5=false,Channel6=false,Channel7=false,Channel8=false,VerticalTargeter=false,Filter2=false,NotLocalOwner=false,CustomFilter1=false,CustomFilter2=false,CustomFilter3=false,CustomFilter4=false,CustomFilter5=false,CustomFilter6=false,CustomFilter7=false) + CustomTimeDilation=1.0000000 + ReplacementPrimitive=none + bTickInEditor=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ParticleSystemReplay.uc b/exported/Engine/Classes/ParticleSystemReplay.uc new file mode 100755 index 00000000..c964c828 --- /dev/null +++ b/exported/Engine/Classes/ParticleSystemReplay.uc @@ -0,0 +1,19 @@ +class ParticleSystemReplay extends Object + native(Particle) + hidecategories(Object) + autoexpandcategories(ParticleSystemReplay); + +struct native ParticleEmitterReplayFrame +{ + var native const int EmitterType; + var native const int OriginalEmitterIndex; + var native const Pointer FrameState; +}; + +struct native ParticleSystemReplayFrame +{ + var native const array Emitters; +}; + +var() native int ClipIDNumber; +var native const array Frames; diff --git a/exported/Engine/Classes/PathBlockingVolume.uc b/exported/Engine/Classes/PathBlockingVolume.uc new file mode 100755 index 00000000..84124a26 --- /dev/null +++ b/exported/Engine/Classes/PathBlockingVolume.uc @@ -0,0 +1,26 @@ +class PathBlockingVolume extends Volume + native + placeable + hidecategories(Navigation,Object,Movement,Display); + +defaultproperties +{ + // Reference: BrushComponent'Engine.Default__PathBlockingVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + BlockActors=true + BlockZeroExtent=true + BlockRigidBody=true + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bWorldGeometry=true + bCollideActors=false + bBlockActors=true + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/PathConstraint.uc b/exported/Engine/Classes/PathConstraint.uc new file mode 100755 index 00000000..2c87680f --- /dev/null +++ b/exported/Engine/Classes/PathConstraint.uc @@ -0,0 +1,22 @@ +class PathConstraint extends Object + native(AI); + +var const int CacheIdx; +var PathConstraint NextConstraint; + +event Recycle() +{ + NextConstraint = none; + //return; +} + +event string GetDumpString() +{ + return string(self); + //return ReturnValue; +} + +defaultproperties +{ + CacheIdx=-1 +} \ No newline at end of file diff --git a/exported/Engine/Classes/PathGoalEvaluator.uc b/exported/Engine/Classes/PathGoalEvaluator.uc new file mode 100755 index 00000000..ec62232a --- /dev/null +++ b/exported/Engine/Classes/PathGoalEvaluator.uc @@ -0,0 +1,26 @@ +class PathGoalEvaluator extends Object + native(AI); + +var protected PathGoalEvaluator NextEvaluator; +var protected NavigationPoint GeneratedGoal; +var protected int MaxPathVisits; +var const int CacheIdx; + +event Recycle() +{ + GeneratedGoal = none; + NextEvaluator = none; + //return; +} + +event string GetDumpString() +{ + return string(self); + //return ReturnValue; +} + +defaultproperties +{ + MaxPathVisits=2048 + CacheIdx=-1 +} \ No newline at end of file diff --git a/exported/Engine/Classes/PathNode.uc b/exported/Engine/Classes/PathNode.uc new file mode 100755 index 00000000..379a6539 --- /dev/null +++ b/exported/Engine/Classes/PathNode.uc @@ -0,0 +1,28 @@ +class PathNode extends NavigationPoint + native + placeable + hidecategories(Navigation,Lighting,LightColor,Force); + +simulated event string GetDebugAbbrev() +{ + return "PN"; + //return ReturnValue; +} + +defaultproperties +{ + // Reference: CylinderComponent'Engine.Default__PathNode.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/PathNode_Dynamic.uc b/exported/Engine/Classes/PathNode_Dynamic.uc new file mode 100755 index 00000000..3f5f0bad --- /dev/null +++ b/exported/Engine/Classes/PathNode_Dynamic.uc @@ -0,0 +1,28 @@ +class PathNode_Dynamic extends PathNode + placeable + hidecategories(Navigation,Lighting,LightColor,Force); + +simulated event string GetDebugAbbrev() +{ + return "DynPN"; + //return ReturnValue; +} + +defaultproperties +{ + // Reference: CylinderComponent'Engine.Default__PathNode_Dynamic.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__PathNode.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + bStatic=false + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/PathRenderingComponent.uc b/exported/Engine/Classes/PathRenderingComponent.uc new file mode 100755 index 00000000..667f39c6 --- /dev/null +++ b/exported/Engine/Classes/PathRenderingComponent.uc @@ -0,0 +1,12 @@ +class PathRenderingComponent extends PrimitiveComponent + native(AI) + editinlinenew + hidecategories(Object); + +defaultproperties +{ + ReplacementPrimitive=none + HiddenGame=true + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/PathTargetPoint.uc b/exported/Engine/Classes/PathTargetPoint.uc new file mode 100755 index 00000000..4c64e620 --- /dev/null +++ b/exported/Engine/Classes/PathTargetPoint.uc @@ -0,0 +1,32 @@ +class PathTargetPoint extends Keypoint + native(AI) + placeable + hidecategories(Navigation); + +// Export UPathTargetPoint::execShouldBeHiddenBySHOW_NavigationNodes(FFrame&, void* const) +native function bool ShouldBeHiddenBySHOW_NavigationNodes(); + +defaultproperties +{ + Components[0]=none + Components[1]=none + // Reference: CylinderComponent'Engine.Default__PathTargetPoint.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=73.0000000 + CollisionRadius=50.0000000 + ReplacementPrimitive=none + end object + Components[2]=CollisionCylinder + bStatic=false + bHidden=false + bNoDelete=true + CollisionComponent=CollisionCylinder + SupportedEvents[0]=Class'Engine.SeqEvent_Touch' + SupportedEvents[1]=Class'Engine.SeqEvent_Destroyed' + SupportedEvents[2]=Class'Engine.SeqEvent_TakeDamage' + SupportedEvents[3]=Class'Engine.SeqEvent_HitWall' + SupportedEvents[4]=Class'Engine.SeqEvent_AIReachedRouteActor' + SupportedEvents[5]=Class'Engine.SeqEvent_MobileTouch' +} \ No newline at end of file diff --git a/exported/Engine/Classes/Path_AlongLine.uc b/exported/Engine/Classes/Path_AlongLine.uc new file mode 100755 index 00000000..3faddd57 --- /dev/null +++ b/exported/Engine/Classes/Path_AlongLine.uc @@ -0,0 +1,36 @@ +class Path_AlongLine extends PathConstraint + native(AI); + +var Vector Direction; + +static function bool AlongLine(Pawn P, Vector Dir) +{ + local Path_AlongLine Con; + + // End:0xBE + if((P != none) && !IsZero(Dir)) + { + Con = Path_AlongLine(P.CreatePathConstraint(default.Class)); + // End:0xBE + if(Con != none) + { + Con.Direction = Dir; + P.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + Direction = vect(0.0000000, 0.0000000, 0.0000000); + //return; +} + +defaultproperties +{ + CacheIdx=0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Path_AvoidInEscapableNodes.uc b/exported/Engine/Classes/Path_AvoidInEscapableNodes.uc new file mode 100755 index 00000000..13c0e23f --- /dev/null +++ b/exported/Engine/Classes/Path_AvoidInEscapableNodes.uc @@ -0,0 +1,45 @@ +class Path_AvoidInEscapableNodes extends PathConstraint + native(AI); + +var int Radius; +var int Height; +var int MaxFallSpeed; +var int MoveFlags; + +// Export UPath_AvoidInEscapableNodes::execCachePawnReacFlags(FFrame&, void* const) +private native final function CachePawnReacFlags(Pawn P); + +static function bool DontGetStuck(Pawn P) +{ + local Path_AvoidInEscapableNodes Con; + + // End:0xAB + if(P != none) + { + Con = Path_AvoidInEscapableNodes(P.CreatePathConstraint(default.Class)); + // End:0xAB + if(Con != none) + { + Con.CachePawnReacFlags(P); + P.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + Radius = 0; + Height = 0; + MaxFallSpeed = 0; + MoveFlags = 0; + //return; +} + +defaultproperties +{ + CacheIdx=11 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Path_MinDistBetweenSpecsOfType.uc b/exported/Engine/Classes/Path_MinDistBetweenSpecsOfType.uc new file mode 100755 index 00000000..7460151a --- /dev/null +++ b/exported/Engine/Classes/Path_MinDistBetweenSpecsOfType.uc @@ -0,0 +1,42 @@ +class Path_MinDistBetweenSpecsOfType extends PathConstraint + native(AI); + +var float MinDistBetweenSpecTypes; +var Vector InitLocation; +var Class ReachSpecClass; + +static function bool EnforceMinDist(Pawn P, float InMinDist, Class InSpecClass, optional Vector LastLocation) +{ + local Path_MinDistBetweenSpecsOfType Con; + + // End:0x135 + if(((P != none) && P.bCanMantle) && InMinDist > 0.0000000) + { + Con = Path_MinDistBetweenSpecsOfType(P.CreatePathConstraint(default.Class)); + // End:0x135 + if(Con != none) + { + Con.MinDistBetweenSpecTypes = InMinDist; + Con.InitLocation = LastLocation; + Con.ReachSpecClass = InSpecClass; + P.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + MinDistBetweenSpecTypes = default.MinDistBetweenSpecTypes; + ReachSpecClass = none; + InitLocation = vect(0.0000000, 0.0000000, 0.0000000); + //return; +} + +defaultproperties +{ + CacheIdx=10 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Path_TowardGoal.uc b/exported/Engine/Classes/Path_TowardGoal.uc new file mode 100755 index 00000000..2a755867 --- /dev/null +++ b/exported/Engine/Classes/Path_TowardGoal.uc @@ -0,0 +1,36 @@ +class Path_TowardGoal extends PathConstraint + native(AI); + +var Actor GoalActor; + +static function bool TowardGoal(Pawn P, Actor Goal) +{ + local Path_TowardGoal Con; + + // End:0xBC + if((P != none) && Goal != none) + { + Con = Path_TowardGoal(P.CreatePathConstraint(default.Class)); + // End:0xBC + if(Con != none) + { + Con.GoalActor = Goal; + P.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + GoalActor = none; + //return; +} + +defaultproperties +{ + CacheIdx=1 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Path_TowardPoint.uc b/exported/Engine/Classes/Path_TowardPoint.uc new file mode 100755 index 00000000..ab2c1af2 --- /dev/null +++ b/exported/Engine/Classes/Path_TowardPoint.uc @@ -0,0 +1,36 @@ +class Path_TowardPoint extends PathConstraint + native(AI); + +var Vector GoalPoint; + +static function bool TowardPoint(Pawn P, Vector Point) +{ + local Path_TowardPoint Con; + + // End:0xC8 + if((P != none) && Point != vect(0.0000000, 0.0000000, 0.0000000)) + { + Con = Path_TowardPoint(P.CreatePathConstraint(default.Class)); + // End:0xC8 + if(Con != none) + { + Con.GoalPoint = Point; + P.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + GoalPoint = default.GoalPoint; + //return; +} + +defaultproperties +{ + CacheIdx=2 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Path_WithinDistanceEnvelope.uc b/exported/Engine/Classes/Path_WithinDistanceEnvelope.uc new file mode 100755 index 00000000..5f534f57 --- /dev/null +++ b/exported/Engine/Classes/Path_WithinDistanceEnvelope.uc @@ -0,0 +1,57 @@ +class Path_WithinDistanceEnvelope extends PathConstraint + native(AI); + +var() float MaxDistance; +var() float MinDistance; +var() bool bSoft; +var() bool bOnlyThrowOutNodesThatLeaveEnvelope; +var() float SoftStartPenalty; +var() Vector EnvelopeTestPoint; + +static function bool StayWithinEnvelopeToLoc(Pawn P, Vector InEnvelopeTestPoint, float InMaxDistance, float InMinDistance, optional bool bInSoft = true, optional float InSoftStartPenalty = -1.0000000, optional bool bOnlyTossOutSpecsThatLeave) +{ + local Path_WithinDistanceEnvelope Con; + + // End:0x199 + if(P != none) + { + Con = Path_WithinDistanceEnvelope(P.CreatePathConstraint(default.Class)); + // End:0x199 + if(Con != none) + { + Con.EnvelopeTestPoint = InEnvelopeTestPoint; + Con.bSoft = bInSoft; + Con.MaxDistance = InMaxDistance; + Con.MinDistance = InMinDistance; + Con.bOnlyThrowOutNodesThatLeaveEnvelope = bOnlyTossOutSpecsThatLeave; + // End:0x16F + if(InSoftStartPenalty > -1.0000000) + { + Con.SoftStartPenalty = InSoftStartPenalty; + } + P.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + MaxDistance = default.MaxDistance; + MinDistance = default.MinDistance; + bSoft = default.bSoft; + SoftStartPenalty = default.SoftStartPenalty; + EnvelopeTestPoint = default.EnvelopeTestPoint; + bOnlyThrowOutNodesThatLeaveEnvelope = default.bOnlyThrowOutNodesThatLeaveEnvelope; + //return; +} + +defaultproperties +{ + bSoft=true + SoftStartPenalty=320.0000000 + CacheIdx=3 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Path_WithinTraversalDist.uc b/exported/Engine/Classes/Path_WithinTraversalDist.uc new file mode 100755 index 00000000..44c247b7 --- /dev/null +++ b/exported/Engine/Classes/Path_WithinTraversalDist.uc @@ -0,0 +1,43 @@ +class Path_WithinTraversalDist extends PathConstraint + native(AI); + +var() float MaxTraversalDist; +var() bool bSoft; +var() float SoftStartPenalty; + +static function bool DontExceedMaxDist(Pawn P, float InMaxTraversalDist, optional bool bInSoft = true) +{ + local Path_WithinTraversalDist Con; + + // End:0xEF + if((P != none) && InMaxTraversalDist > 0.0000000) + { + Con = Path_WithinTraversalDist(P.CreatePathConstraint(default.Class)); + // End:0xEF + if(Con != none) + { + Con.MaxTraversalDist = InMaxTraversalDist; + Con.bSoft = bInSoft; + P.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + MaxTraversalDist = default.MaxTraversalDist; + bSoft = default.bSoft; + SoftStartPenalty = default.SoftStartPenalty; + //return; +} + +defaultproperties +{ + bSoft=true + SoftStartPenalty=320.0000000 + CacheIdx=4 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Pawn.uc b/exported/Engine/Classes/Pawn.uc new file mode 100755 index 00000000..8ff4ad80 --- /dev/null +++ b/exported/Engine/Classes/Pawn.uc @@ -0,0 +1,3143 @@ +class Pawn extends Actor + abstract + native(Pawn) + nativereplication + config(Game) + placeable + hidecategories(Navigation) + implements(Interface_Speaker); + +enum EPathSearchType +{ + PST_Default, // 0 + PST_Breadth, // 1 + PST_NewBestPathTo, // 2 + PST_Constraint, // 3 + PST_MAX // 4 +}; + +enum EFootstepTypes +{ + FOOTSTEP_Run, // 0 + FOOTSTEP_Walk, // 1 + FOOTSTEP_Scuff, // 2 + FOOTSTEP_MAX // 3 +}; + +struct native ScalarParameterInterpStruct +{ + var() name ParameterName; + var() float ParameterValue; + var() float InterpTime; + var() float WarmupTime; + + structdefaultproperties + { + ParameterName="None" + ParameterValue=0.0000000 + InterpTime=0.0000000 + WarmupTime=0.0000000 + } +}; + +var private native const noexport Pointer VfTable_IInterface_Speaker; +var const float MaxStepHeight; +var const float MaxJumpHeight; +var const float WalkableFloorZ; +var const float LedgeCheckThreshold; +var const Vector PartialLedgeMoveDir; +var repnotify editinline Controller Controller; +var const Pawn NextPawn; +var float NetRelevancyTime; +var PlayerController LastRealViewer; +var Actor LastViewer; +var bool bScriptTickSpecial; +var bool bUpAndOut; +var bool bIsWalking; +var bool bWantsToCrouch; +var const bool bIsCrouched; +var const bool bTryToUncrouch; +var() bool bCanCrouch; +var bool bCrawler; +var const bool bReducedSpeed; +var bool bJumpCapable; +var bool bCanJump; +var bool bCanWalk; +var bool bCanSwim; +var bool bCanFly; +var bool bCanClimbLadders; +var bool bCanStrafe; +var bool bAvoidLedges; +var bool bStopAtLedges; +var bool bAllowLedgeOverhang; +var const bool bPartiallyOverLedge; +var const bool bSimulateGravity; +var bool bIgnoreForces; +var bool bCanWalkOffLedges; +var bool bCanBeBaseForPawns; +var const bool bSimGravityDisabled; +var bool bDirectHitWall; +var const bool bPushesRigidBodies; +var bool bForceFloorCheck; +var bool bForceKeepAnchor; +var config bool bCanMantle; +var config bool bCanClimbUp; +var bool bCanClimbCeilings; +var config bool bCanSwatTurn; +var config bool bCanLeap; +var config bool bCanCoverSlip; +var globalconfig bool bDisplayPathErrors; +var bool bCanPickupInventory; +var bool bAmbientCreature; +var(AI) bool bLOSHearing; +var(AI) bool bMuffledHearing; +var(AI) bool bDontPossess; +var bool bRollToDesired; +var bool bStationary; +var bool bCachedRelevant; +var bool bNoWeaponFiring; +var bool bModifyReachSpecCost; +var bool bModifyNavPointDest; +var bool bPathfindsAsVehicle; +var bool bPrevBypassSimulatedClientPhysics; +var bool bRunPhysicsWithNoController; +var bool bForceMaxAccel; +var bool bLimitFallAccel; +var bool bReplicateHealthToAll; +var bool bForceRMVelocity; +var bool bForceRegularVelocity; +var bool bPlayedDeath; +var private const bool bDesiredRotationSet; +var private const bool bLockDesiredRotation; +var private const bool bUnlockWhenReached; +var() bool m_bPhysVolumesOnlyAffectDownwardVelocities; +var bool m_bIsOnNonBaseableSurface; +var bool bNeedsBaseTickedFirst; +var repnotify transient bool bUsedByMatinee; +var bool bRootMotionFromInterpCurve; +var(Debug) bool bDebugShowCameraLocation; +var() bool bFastAttachedMove; +var(Movement) Actor.EPhysics WalkingPhysics; +var Pawn.EPathSearchType PathSearchType; +var const byte RemoteViewPitch; +var repnotify byte FlashCount; +var repnotify byte FiringMode; +var Actor.EPhysics c_LastReceivedPhysics; +var int WalkingPhysicsMoveFlags; +var const float UncrouchTime; +var float CrouchHeight; +var float CrouchRadius; +var const int FullHeight; +var float NonPreferredVehiclePathMultiplier; +var PathConstraint PathConstraintList; +var PathGoalEvaluator PathGoalList; +var float DesiredSpeed; +var float MaxDesiredSpeed; +var(AI) float HearingThreshold; +var(AI) float Alertness; +var(AI) float SightRadius; +var(AI) float PeripheralVision; +var const float AvgPhysicsTime; +var float Mass; +var float Buoyancy; +var float MeleeRange; +var const NavigationPoint Anchor; +var const int AnchorItem; +var const NavigationPoint LastAnchor; +var float FindAnchorFailedTime; +var float LastValidAnchorTime; +var float DestinationOffset; +var float NextPathRadius; +var Vector SerpentineDir; +var float SerpentineDist; +var float SerpentineTime; +var float SpawnTime; +var int MaxPitchLimit; +var float GroundSpeed; +var float WaterSpeed; +var float AirSpeed; +var float LadderSpeed; +var float AccelRate; +var float JumpZ; +var float OutofWaterZ; +var float MaxOutOfWaterStepHeight; +var float AirControl; +var float WalkingPct; +var float MovementSpeedModifier; +var float CrouchedPct; +var float MaxFallSpeed; +var float AIMaxFallSpeedFactor; +var(Camera) float BaseEyeHeight; +var(Camera) float EyeHeight; +var Vector Floor; +var float SplashTime; +var transient PhysicsVolume HeadVolume; +var() repnotify int Health; +var() int HealthMax; +var float BreathTime; +var float UnderWaterTime; +var float LastPainTime; +var float KismetDeathDelayTime; +var Vector RMVelocity; +var const Vector noise1spot; +var const float noise1time; +var const Pawn noise1other; +var const float noise1loudness; +var const Vector noise2spot; +var const float noise2time; +var const Pawn noise2other; +var const float noise2loudness; +var float SoundDampening; +var float DamageScaling; +var const localized string MenuName; +var Class ControllerClass; +var repnotify editinline PlayerReplicationInfo PlayerReplicationInfo; +var LadderVolume OnLadder; +var name LandMovementState; +var name WaterMovementState; +var PlayerStart LastStartSpot; +var float LastStartTime; +var Vector TakeHitLocation; +var Class HitDamageType; +var Vector TearOffMomentum; +var() export editinline SkeletalMeshComponent Mesh; +var export editinline CylinderComponent CylinderComponent; +var() float RBPushRadius; +var() float RBPushStrength; +var repnotify Vehicle DrivenVehicle; +var float AlwaysRelevantDistanceSquared; +var() float VehicleCheckRadius; +var Controller LastHitBy; +var() float ViewPitchMin; +var() float ViewPitchMax; +var int AllowedYawError; +var(Movement) const Rotator DesiredRotation; +var Class InventoryManagerClass; +var repnotify InventoryManager InvManager; +var Weapon Weapon; +var repnotify Vector FlashLocation; +var Vector LastFiringFlashLocation; +var int ShotCount; +var export editinline PrimitiveComponent PreRagdollCollisionComponent; +var RB_BodyInstance PhysicsPushBody; +var int FailedLandingCount; +var transient array SlotNodes; +var transient array InterpGroupList; +var protected export editinline transient AudioComponent FacialAudioComp; +var protected transient MaterialInstanceConstant MIC_PawnMat; +var protected transient MaterialInstanceConstant MIC_PawnHair; +var() array ScalarParameterInterpArray; +var RootMotionCurve RootMotionInterpCurve; +var float RootMotionInterpRate; +var float RootMotionInterpCurrentTime; +var Vector RootMotionInterpCurveLastValue; +var() float m_TerrainWalkableFloorZ; +var Vector c_vLastReceivedVelocity; + +replication +{ + // Pos:0x000 + if(bNetDirty) + DrivenVehicle, FlashLocation, + HitDamageType, PlayerReplicationInfo, + TakeHitLocation, bFastAttachedMove, + bIsWalking, bSimulateGravity, + bUsedByMatinee; + + // Pos:0x00A + if(bNetDirty && bNetOwner || bReplicateHealthToAll) + Health; + + // Pos:0x032 + if(bNetDirty && bNetOwner) + AccelRate, AirControl, + AirSpeed, Controller, + GroundSpeed, InvManager, + JumpZ, WaterSpeed; + + // Pos:0x04B + if((bNetDirty && bNetOwner) && bNetInitial) + bCanSwatTurn; + + // Pos:0x073 + if(bNetDirty && !bNetOwner || bDemoRecording) + FiringMode, FlashCount, + bIsCrouched; + + // Pos:0x09D + if(bTearOff && bNetDirty) + TearOffMomentum; + + // Pos:0x0B6 + if(!bNetOwner || bDemoRecording) + RemoteViewPitch; + + // Pos:0x0D1 + if(bNetInitial && !bNetOwner) + bRootMotionFromInterpCurve; + + // Pos:0x0EC + if((bNetInitial && !bNetOwner) && bRootMotionFromInterpCurve) + RootMotionInterpCurrentTime, RootMotionInterpCurveLastValue, + RootMotionInterpRate; + + // Pos:0x116 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + HealthMax; +} + +// Export UPawn::execPickWallAdjust(FFrame&, void* const) +native final function bool PickWallAdjust(Vector WallHitNormal, Actor HitActor); + +// Export UPawn::execSetDesiredRotation(FFrame&, void* const) +native final function bool SetDesiredRotation(Rotator TargetDesiredRotation, optional bool InLockDesiredRotation = false, optional bool InUnlockWhenReached = false, optional float InterpolationTime = -1.0000000, optional bool bResetRotationRate = true); + +// Export UPawn::execLockDesiredRotation(FFrame&, void* const) +native final function LockDesiredRotation(bool Lock, optional bool InUnlockWhenReached = false); + +// Export UPawn::execResetDesiredRotation(FFrame&, void* const) +native final function ResetDesiredRotation(); + +// Export UPawn::execCheckDesiredRotation(FFrame&, void* const) +native final function CheckDesiredRotation(); + +// Export UPawn::execIsDesiredRotationInUse(FFrame&, void* const) +native final function bool IsDesiredRotationInUse(); + +// Export UPawn::execIsDesiredRotationLocked(FFrame&, void* const) +native final function bool IsDesiredRotationLocked(); + +simulated event PostInitAnimTree(SkeletalMeshComponent SkelComp) +{ + super.PostInitAnimTree(SkelComp); + // End:0x3E + if(SkelComp == Mesh) + { + ClearAnimNodes(); + CacheAnimNodes(); + } + //return; +} + +// Export UPawn::execCacheAnimNodes(FFrame&, void* const) +native simulated event CacheAnimNodes(); + +simulated function ClearAnimNodes() +{ + SlotNodes.Length = 0; + //return; +} + +// Export UPawn::execUpdateAnimSetList(FFrame&, void* const) +native final simulated function UpdateAnimSetList(); + +simulated event BuildScriptAnimSetList() +{ + //return; +} + +// Export UPawn::execAddAnimSets(FFrame&, void* const) +native final simulated function AddAnimSets(const out array CustomAnimSets); + +simulated event AnimSetListUpdated() +{ + //return; +} + +simulated event bool RestoreAnimSetsToDefault() +{ + Mesh.AnimSets = default.Mesh.AnimSets; + return true; + //return ReturnValue; +} + +simulated event BeginAnimControl(InterpGroup InInterpGroup) +{ + MAT_BeginAnimControl(InInterpGroup); + //return; +} + +// Export UPawn::execMAT_BeginAnimControl(FFrame&, void* const) +native function MAT_BeginAnimControl(InterpGroup InInterpGroup); + +simulated event FinishAnimControl(InterpGroup InInterpGroup) +{ + MAT_FinishAnimControl(InInterpGroup); + //return; +} + +// Export UPawn::execMAT_FinishAnimControl(FFrame&, void* const) +native function MAT_FinishAnimControl(InterpGroup InInterpGroup); + +simulated event SetAnimPosition(name SlotName, int ChannelIndex, name InAnimSeqName, float InPosition, bool bFireNotifies, bool bLooping, bool bEnableRootMotion) +{ + MAT_SetAnimPosition(SlotName, ChannelIndex, InAnimSeqName, InPosition, bFireNotifies, bLooping, bEnableRootMotion); + //return; +} + +// Export UPawn::execMAT_SetAnimPosition(FFrame&, void* const) +native function MAT_SetAnimPosition(name SlotName, int ChannelIndex, name InAnimSeqName, float InPosition, bool bFireNotifies, bool bLooping, bool bEnableRootMotion); + +// Export UPawn::execMAT_SetAnimWeights(FFrame&, void* const) +native function MAT_SetAnimWeights(array SlotInfos); + +// Export UPawn::execMAT_SetMorphWeight(FFrame&, void* const) +native function MAT_SetMorphWeight(name MorphNodeName, float MorphWeight); + +// Export UPawn::execMAT_SetSkelControlScale(FFrame&, void* const) +native function MAT_SetSkelControlScale(name SkelControlName, float Scale); + +// Export UPawn::execMAT_SetSkelControlStrength(FFrame&, void* const) +native function MAT_SetSkelControlStrength(name SkelControlName, float ControlStrength); + +simulated event InterpolationStarted(SeqAct_Interp InterpAction, InterpGroupInst GroupInst) +{ + super.InterpolationStarted(InterpAction, GroupInst); + //return; +} + +simulated event InterpolationFinished(SeqAct_Interp InterpAction) +{ + super.InterpolationFinished(InterpAction); + //return; +} + +simulated function BeginAIGroup() +{ + //return; +} + +simulated function FinishAIGroup() +{ + //return; +} + +event MAT_BeginAIGroup(Vector StartLoc, Rotator StartRot) +{ + SetLocation(StartLoc); + SetRotation(StartRot); + BeginAIGroup(); + bUsedByMatinee = true; + //return; +} + +event MAT_FinishAIGroup() +{ + FinishAIGroup(); + bUsedByMatinee = false; + //return; +} + +simulated event bool PlayActorFaceFXAnim(FaceFXAnimSet AnimSet, string GroupName, string SeqName, SoundCue SoundCueToPlay, AkEvent AkEventToPlay) +{ + return Mesh.PlayFaceFXAnim(AnimSet, SeqName, GroupName, SoundCueToPlay, AkEventToPlay); + //return ReturnValue; +} + +event StopActorFaceFXAnim() +{ + Mesh.StopFaceFXAnim(); + //return; +} + +simulated event AudioComponent GetFaceFXAudioComponent() +{ + return FacialAudioComp; + //return ReturnValue; +} + +simulated function bool IsActorPlayingFaceFXAnim() +{ + return (Mesh != none) && Mesh.IsPlayingFaceFXAnim(); + //return ReturnValue; +} + +simulated function bool CanActorPlayFaceFXAnim() +{ + return true; + //return ReturnValue; +} + +simulated function OnPlayFaceFXAnim(SeqAct_PlayFaceFXAnim inAction) +{ + Mesh.PlayFaceFXAnim(inAction.FaceFXAnimSetRef, inAction.FaceFXAnimName, inAction.FaceFXGroupName, inAction.SoundCueToPlay, inAction.AkEventToPlay); + //return; +} + +simulated function FaceFXAudioFinished(AudioComponent AC) +{ + //return; +} + +event FaceFXAsset GetActorFaceFXAsset() +{ + // End:0x81 + if((Mesh.SkeletalMesh != none) && !Mesh.bDisableFaceFX) + { + return Mesh.SkeletalMesh.FaceFXAsset; + } + else + { + return none; + } + //return ReturnValue; +} + +event SetMorphWeight(name MorphNodeName, float MorphWeight) +{ + MAT_SetMorphWeight(MorphNodeName, MorphWeight); + //return; +} + +event SetSkelControlScale(name SkelControlName, float Scale) +{ + MAT_SetSkelControlScale(SkelControlName, Scale); + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + super.ReplicatedEvent(VarName); + // End:0x4A + if(VarName == 'FlashCount') + { + FlashCountUpdated(Weapon, FlashCount, true); + } + else + { + // End:0x81 + if(VarName == 'FlashLocation') + { + FlashLocationUpdated(Weapon, FlashLocation, true); + } + else + { + // End:0xB8 + if(VarName == 'FiringMode') + { + FiringModeUpdated(Weapon, FiringMode, true); + } + else + { + // End:0xEB + if(VarName == 'DrivenVehicle') + { + // End:0xE8 + if(DrivenVehicle != none) + { + NotifyTeamChanged(); + } + } + else + { + // End:0x10F + if(VarName == 'PlayerReplicationInfo') + { + NotifyTeamChanged(); + } + else + { + // End:0x1F7 + if(VarName == 'Controller') + { + // End:0x1F4 + if((Controller != none) && Controller.Pawn == none) + { + Controller.Pawn = self; + // End:0x1F4 + if((PlayerController(Controller) != none) && PlayerController(Controller).ViewTarget == Controller) + { + PlayerController(Controller).SetViewTarget(self); + } + } + } + else + { + // End:0x232 + if(VarName == 'bUsedByMatinee') + { + // End:0x228 + if(bUsedByMatinee) + { + BeginAIGroup(); + } + else + { + FinishAIGroup(); + } + } + } + } + } + } + } + } + //return; +} + +// Export UPawn::execIsAliveAndWell(FFrame&, void* const) +native final simulated function bool IsAliveAndWell(); + +// Export UPawn::execAdjustDestination(FFrame&, void* const) +native final function Vector AdjustDestination(Actor GoalActor, optional Vector Dest); + +// Export UPawn::execValidAnchor(FFrame&, void* const) +native final function bool ValidAnchor(); + +// Export UPawn::execSuggestJumpVelocity(FFrame&, void* const) +native function bool SuggestJumpVelocity(out Vector JumpVelocity, Vector Destination, Vector Start, optional bool bRequireFallLanding); + +// Export UPawn::execGetFallDuration(FFrame&, void* const) +native function float GetFallDuration(); + +// Export UPawn::execIsValidEnemyTargetFor(FFrame&, void* const) +native function bool IsValidEnemyTargetFor(const PlayerReplicationInfo PRI, bool bNoPRIisEnemy); + +// Export UPawn::execIsInvisibleToAI(FFrame&, void* const) +native function bool IsInvisibleToAI(); + +// Export UPawn::execSetRemoteViewPitch(FFrame&, void* const) +native final function SetRemoteViewPitch(int NewRemoteViewPitch); + +// Export UPawn::execSetAnchor(FFrame&, void* const) +native function SetAnchor(NavigationPoint NewAnchor); + +// Export UPawn::execGetBestAnchor(FFrame&, void* const) +native function NavigationPoint GetBestAnchor(Actor TestActor, Vector TestLocation, bool bStartPoint, bool bOnlyCheckVisible, out float out_Dist); + +// Export UPawn::execReachedDestination(FFrame&, void* const) +native function bool ReachedDestination(Actor Goal); + +// Export UPawn::execReachedPoint(FFrame&, void* const) +native function bool ReachedPoint(Vector Point, Actor NewAnchor); + +// Export UPawn::execForceCrouch(FFrame&, void* const) +native function ForceCrouch(); + +// Export UPawn::execSetPushesRigidBodies(FFrame&, void* const) +native function SetPushesRigidBodies(bool NewPush); + +// Export UPawn::execReachedDesiredRotation(FFrame&, void* const) +native final function bool ReachedDesiredRotation(); + +// Export UPawn::execGetBoundingCylinder(FFrame&, void* const) +native function GetBoundingCylinder(out float CollisionRadius, out float CollisionHeight); + +// Export UPawn::execInitRagdoll(FFrame&, void* const) +native function bool InitRagdoll(); + +// Export UPawn::execTermRagdoll(FFrame&, void* const) +native function bool TermRagdoll(); + +// Export UPawn::execGetAirControl(FFrame&, void* const) +native function float GetAirControl(); + +function bool SpecialMoveTo(NavigationPoint Start, NavigationPoint End, Actor Next) +{ + //return ReturnValue; +} + +event bool SpecialMoveThruEdge(Pylon.ENavMeshEdgeType EdgeType, int Dir, Vector MoveStart, Vector MoveDest, optional Actor RelActor, optional int RelItem, optional NavigationHandle NavHandle) +{ + //return ReturnValue; +} + +simulated function SetBaseEyeheight() +{ + // End:0x25 + if(!bIsCrouched) + { + BaseEyeHeight = default.BaseEyeHeight; + } + else + { + BaseEyeHeight = FMin(0.8000000 * CrouchHeight, CrouchHeight - float(10)); + } + //return; +} + +function PlayerChangedTeam() +{ + Died(none, Class'Engine.DamageType', Location); + //return; +} + +function Reset() +{ + // End:0x44 + if((Controller == none) || Controller.bIsPlayer) + { + DetachFromController(); + Destroy(); + } + else + { + super.Reset(); + } + //return; +} + +function bool StopFiring() +{ + // End:0x2E + if(Weapon != none) + { + Weapon.StopFire(); + } + return true; + //return ReturnValue; +} + +simulated function StartFire() +{ + // End:0x0F + if(bNoWeaponFiring) + { + return; + } + // End:0x3D + if(Weapon != none) + { + Weapon.StartFire(); + } + //return; +} + +simulated function StopFire() +{ + // End:0x2E + if(Weapon != none) + { + Weapon.StopFire(); + } + //return; +} + +simulated function byte GetWeaponFiringMode(Weapon InWeapon) +{ + return FiringMode; + //return ReturnValue; +} + +simulated function SetFiringMode(Weapon InWeapon, byte InFiringMode) +{ + // End:0x57 + if(int(FiringMode) != int(InFiringMode)) + { + FiringMode = InFiringMode; + bForceNetUpdate = true; + FiringModeUpdated(InWeapon, FiringMode, false); + } + //return; +} + +simulated function FiringModeUpdated(Weapon InWeapon, byte InFiringMode, bool bViaReplication) +{ + //return; +} + +simulated function IncrementFlashCount(Weapon InWeapon, byte InFiringMode) +{ + bForceNetUpdate = true; + FlashCount++; + // End:0x38 + if(int(FlashCount) == int(0)) + { + FlashCount += 2; + } + SetFiringMode(InWeapon, InFiringMode); + FlashCountUpdated(InWeapon, FlashCount, false); + //return; +} + +simulated function FlashCountUpdated(Weapon InWeapon, byte InFlashCount, bool bViaReplication) +{ + // End:0x35 + if(int(InFlashCount) > int(0)) + { + WeaponFired(InWeapon, bViaReplication); + } + else + { + WeaponStoppedFiring(InWeapon, bViaReplication); + } + //return; +} + +simulated function ClearFlashCount(Weapon InWeapon) +{ + // End:0x49 + if(int(FlashCount) != int(0)) + { + bForceNetUpdate = true; + FlashCount = 0; + FlashCountUpdated(InWeapon, FlashCount, false); + } + //return; +} + +function ClearFlashLocation(Weapon InWeapon) +{ + // End:0x51 + if(!IsZero(FlashLocation)) + { + bForceNetUpdate = true; + FlashLocation = vect(0.0000000, 0.0000000, 0.0000000); + FlashLocationUpdated(InWeapon, FlashLocation, false); + } + //return; +} + +simulated function FlashLocationUpdated(Weapon InWeapon, Vector InFlashLocation, bool bViaReplication) +{ + // End:0x3A + if(!IsZero(InFlashLocation)) + { + WeaponFired(InWeapon, bViaReplication, InFlashLocation); + } + else + { + WeaponStoppedFiring(InWeapon, bViaReplication); + } + //return; +} + +simulated function WeaponFired(Weapon InWeapon, bool bViaReplication, optional Vector HitLocation) +{ + ShotCount++; + //return; +} + +simulated function WeaponStoppedFiring(Weapon InWeapon, bool bViaReplication) +{ + ShotCount = 0; + //return; +} + +function bool BotFire(bool bFinished) +{ + StartFire(); + return true; + //return ReturnValue; +} + +function bool CanAttack(Actor Other) +{ + return false; + //return ReturnValue; +} + +function bool TooCloseToAttack(Actor Other) +{ + return false; + //return ReturnValue; +} + +function bool FireOnRelease() +{ + return false; + //return ReturnValue; +} + +function bool HasRangedAttack() +{ + return Weapon != none; + //return ReturnValue; +} + +function bool IsFiring() +{ + // End:0x2F + if(Weapon != none) + { + return Weapon.IsFiring(); + } + return false; + //return ReturnValue; +} + +function bool NeedToTurn(Vector targ) +{ + local Vector LookDir, AimDir; + + LookDir = Vector(Rotation); + LookDir.Z = 0.0000000; + LookDir = Normal(LookDir); + AimDir = targ - Location; + AimDir.Z = 0.0000000; + AimDir = Normal(AimDir); + return (LookDir Dot AimDir) < 0.9300000; + //return ReturnValue; +} + +simulated function string GetHumanReadableName() +{ + // End:0x2E + if(PlayerReplicationInfo != none) + { + return PlayerReplicationInfo.PlayerName; + } + return MenuName; + //return ReturnValue; +} + +function PlayTeleportEffect(bool bOut, bool bSound) +{ + MakeNoise(1.0000000); + //return; +} + +simulated function NotifyTeamChanged() +{ + //return; +} + +function PossessedBy(Controller C, bool bVehicleTransition) +{ + Controller = C; + NetPriority = 3.0000000; + NetUpdateFrequency = 100.0000000; + bForceNetUpdate = true; + // End:0x89 + if(C.PlayerReplicationInfo != none) + { + PlayerReplicationInfo = C.PlayerReplicationInfo; + } + UpdateControllerOnPossess(bVehicleTransition); + SetOwner(Controller); + EyeHeight = BaseEyeHeight; + // End:0x126 + if(C.IsA('PlayerController')) + { + // End:0x114 + if(int(WorldInfo.NetMode) != int(NM_Standalone)) + { + RemoteRole = ROLE_AutonomousProxy; + } + // End:0x123 + if(Weapon != none) + { + } + } + else + { + RemoteRole = default.RemoteRole; + } + // End:0x148 + if(Weapon != none) + { + } + //return; +} + +function UpdateControllerOnPossess(bool bVehicleTransition) +{ + // End:0x30 + if(!bVehicleTransition) + { + Controller.SetRotation(Rotation); + } + //return; +} + +function UnPossessed() +{ + bForceNetUpdate = true; + // End:0x2A + if(DrivenVehicle != none) + { + NetUpdateFrequency = 5.0000000; + } + PlayerReplicationInfo = none; + SetOwner(none); + Controller = none; + //return; +} + +simulated function name GetDefaultCameraMode(PlayerController RequestedBy) +{ + // End:0x82 + if(((RequestedBy != none) && RequestedBy.PlayerCamera != none) && RequestedBy.PlayerCamera.CameraStyle == 'Fixed') + { + return 'Fixed'; + } + return 'FirstPerson'; + //return ReturnValue; +} + +function DropToGround() +{ + bCollideWorld = true; + // End:0x57 + if(Health > 0) + { + SetCollision(true, true); + SetPhysics(2); + // End:0x57 + if(IsHumanControlled()) + { + Controller.GotoState(LandMovementState); + } + } + //return; +} + +function bool CanGrabLadder() +{ + return ((bCanClimbLadders && Controller != none) && int(Physics) != int(9)) && (int(Physics) != int(2)) || Abs(Velocity.Z) <= JumpZ; + //return ReturnValue; +} + +function bool RecommendLongRangedAttack() +{ + return false; + //return ReturnValue; +} + +function float RangedAttackTime() +{ + return 0.0000000; + //return ReturnValue; +} + +event SetWalking(bool bNewIsWalking) +{ + // End:0x2E + if(bNewIsWalking != bIsWalking) + { + bIsWalking = bNewIsWalking; + } + //return; +} + +simulated function bool CanSplash() +{ + // End:0xB2 + if((((WorldInfo.TimeSeconds - SplashTime) > 0.1500000) && (int(Physics) == int(2)) || int(Physics) == int(4)) && Abs(Velocity.Z) > float(100)) + { + SplashTime = WorldInfo.TimeSeconds; + return true; + } + return false; + //return ReturnValue; +} + +function EndClimbLadder(LadderVolume OldLadder) +{ + // End:0x2E + if(Controller != none) + { + Controller.EndClimbLadder(); + } + // End:0x47 + if(int(Physics) == int(9)) + { + SetPhysics(2); + } + //return; +} + +event ClimbLadder(LadderVolume L) +{ + OnLadder = L; + SetRotation(OnLadder.WallDir); + SetPhysics(9); + // End:0x6A + if(IsHumanControlled()) + { + Controller.GotoState('PlayerClimbing'); + } + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + local string T; + local Canvas Canvas; + local AnimTree AnimTreeRootNode; + local int I; + + Canvas = HUD.Canvas; + // End:0xBA + if(PlayerReplicationInfo == none) + { + Canvas.DrawText("NO PLAYERREPLICATIONINFO", false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + else + { + PlayerReplicationInfo.DisplayDebug(HUD, out_YL, out_YPos); + } + super.DisplayDebug(HUD, out_YL, out_YPos); + Canvas.SetDrawColor(255, 255, 255); + Canvas.DrawText("Health " $ string(Health)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + // End:0x29B + if(HUD.ShouldDisplayDebug('AI')) + { + Canvas.DrawText((((("Anchor " $ string(Anchor)) $ " Serpentine Dist ") $ string(SerpentineDist)) $ " Time ") $ string(SerpentineTime)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + // End:0x60B + if(HUD.ShouldDisplayDebug('Physics')) + { + T = (((("Floor " $ string(Floor)) $ " DesiredSpeed ") $ string(DesiredSpeed)) $ " Crouched ") $ string(bIsCrouched); + // End:0x374 + if((OnLadder != none) || int(Physics) == int(9)) + { + T = (T $ " on ladder ") $ string(OnLadder); + } + Canvas.DrawText(T); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + T = "Collision Component:" @ string(CollisionComponent); + Canvas.DrawText(T); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + T = "bForceMaxAccel:" @ string(bForceMaxAccel); + Canvas.DrawText(T); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + // End:0x60B + if(Mesh != none) + { + T = (("RootMotionMode:" @ string(Mesh.RootMotionMode)) @ "RootMotionVelocity:") @ string(Mesh.RootMotionVelocity); + Canvas.DrawText(T); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + } + // End:0x6D5 + if(HUD.ShouldDisplayDebug('Camera')) + { + Canvas.DrawText((("EyeHeight " $ string(EyeHeight)) $ " BaseEyeHeight ") $ string(BaseEyeHeight)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + // End:0x7D1 + if(Controller == none) + { + Canvas.SetDrawColor(255, 0, 0); + Canvas.DrawText("NO CONTROLLER"); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + HUD.PlayerOwner.DisplayDebug(HUD, out_YL, out_YPos); + } + else + { + Controller.DisplayDebug(HUD, out_YL, out_YPos); + } + // End:0x919 + if(HUD.ShouldDisplayDebug('Weapon')) + { + // End:0x8DF + if(Weapon == none) + { + Canvas.SetDrawColor(0, 255, 0); + Canvas.DrawText("NO WEAPON"); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + else + { + Weapon.DisplayDebug(HUD, out_YL, out_YPos); + } + } + // End:0xBE8 + if(HUD.ShouldDisplayDebug('animation')) + { + // End:0xBE8 + if((Mesh != none) && Mesh.Animations != none) + { + AnimTreeRootNode = AnimTree(Mesh.Animations); + // End:0xBE8 + if(AnimTreeRootNode != none) + { + Canvas.DrawText("AnimGroups count:" @ string(AnimTreeRootNode.AnimGroups.Length)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + I = 0; + J0xA60: + + // End:0xBE8 [Loop If] + if(I < AnimTreeRootNode.AnimGroups.Length) + { + Canvas.DrawText(((((" GroupName:" @ string(AnimTreeRootNode.AnimGroups[I].GroupName)) @ "NodeCount:") @ string(AnimTreeRootNode.AnimGroups[I].SeqNodes.Length)) @ "RateScale:") @ string(AnimTreeRootNode.AnimGroups[I].RateScale)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + I++; + // [Loop Continue] + goto J0xA60; + } + } + } + } + //return; +} + +// Export UPawn::execIsHumanControlled(FFrame&, void* const) +native final simulated function bool IsHumanControlled(optional Controller PawnController); + +// Export UPawn::execIsLocallyControlled(FFrame&, void* const) +native final simulated function bool IsLocallyControlled(); + +// Export UPawn::execIsPlayerPawn(FFrame&, void* const) +native simulated function bool IsPlayerPawn(); + +simulated event bool IsFirstPerson() +{ + local PlayerController PC; + + PC = PlayerController(Controller); + return (PC != none) && PC.UsingFirstPersonCamera(); + //return ReturnValue; +} + +simulated function ProcessViewRotation(float DeltaTime, out Rotator out_ViewRotation, out Rotator out_DeltaRot) +{ + out_ViewRotation += out_DeltaRot; + out_DeltaRot = rot(0, 0, 0); + // End:0x91 + if(PlayerController(Controller) != none) + { + out_ViewRotation = PlayerController(Controller).LimitViewRotation(out_ViewRotation, ViewPitchMin, ViewPitchMax); + } + //return; +} + +simulated event GetActorEyesViewPoint(out Vector out_Location, out Rotator out_Rotation) +{ + out_Location = GetPawnViewLocation(); + out_Rotation = GetViewRotation(); + //return; +} + +// Export UPawn::execGetViewRotation(FFrame&, void* const) +native simulated event Rotator GetViewRotation(); + +// Export UPawn::execGetPawnViewLocation(FFrame&, void* const) +native simulated event Vector GetPawnViewLocation(); + +singular simulated event Rotator GetBaseAimRotation(Weapon W, optional bool bIgnoreAutoLock) +{ + return Rotation; + //return ReturnValue; +} + +simulated event bool InFreeCam() +{ + local PlayerController PC; + + PC = PlayerController(Controller); + return ((PC != none) && PC.PlayerCamera != none) && (PC.PlayerCamera.CameraStyle == 'FreeCam') || PC.PlayerCamera.CameraStyle == 'FreeCam_Default'; + //return ReturnValue; +} + +simulated function Rotator GetAdjustedAimFor(Weapon W, Vector StartFireLoc) +{ + // End:0x3A + if((Controller == none) || int(Role) < int(ROLE_Authority)) + { + return GetBaseAimRotation(W); + } + return Controller.GetAdjustedAimFor(W, StartFireLoc); + //return ReturnValue; +} + +simulated function SetViewRotation(Rotator NewRotation) +{ + // End:0x33 + if(Controller != none) + { + Controller.SetRotation(NewRotation); + } + else + { + SetRotation(NewRotation); + } + //return; +} + +function bool InGodMode() +{ + return (Controller != none) && Controller.bGodMode; + //return ReturnValue; +} + +function SetMoveTarget(Actor NewTarget) +{ + // End:0x37 + if(Controller != none) + { + Controller.MoveTarget = NewTarget; + } + //return; +} + +function bool LineOfSightTo(Actor Other) +{ + return (Controller != none) && Controller.LineOfSightTo(Other); + //return ReturnValue; +} + +function HandlePickup(Inventory Inv) +{ + MakeNoise(0.2000000); + // End:0x40 + if(Controller != none) + { + Controller.HandlePickup(Inv); + } + //return; +} + +event ClientMessage(coerce string S, optional name Type) +{ + // End:0x54 + if(PlayerController(Controller) != none) + { + PlayerController(Controller).ClientMessage(S, Type); + } + //return; +} + +simulated event FellOutOfWorld(Class dmgType) +{ + // End:0x79 + if(int(Role) == int(ROLE_Authority)) + { + Health = -1; + Died(none, dmgType, Location); + // End:0x79 + if(dmgType == none) + { + SetPhysics(0); + SetHidden(true); + LifeSpan = FMin(LifeSpan, 1.0000000); + } + } + //return; +} + +singular simulated event OutsideWorldBounds() +{ + // End:0x34 + if((int(Role) == int(ROLE_Authority)) && PlayerController(Controller) == none) + { + Destroy(); + } + else + { + // End:0x53 + if(int(Role) == int(ROLE_Authority)) + { + KilledBy(self); + } + SetPhysics(ROLE_None); + SetHidden(true); + LifeSpan = FMin(LifeSpan, 1.0000000); + } + //return; +} + +simulated function UnCrouch() +{ + // End:0x27 + if(bIsCrouched || bWantsToCrouch) + { + ShouldCrouch(false); + } + //return; +} + +function ShouldCrouch(bool bCrouch) +{ + bWantsToCrouch = bCrouch; + //return; +} + +simulated event EndCrouch(float HeightAdjust) +{ + EyeHeight -= HeightAdjust; + SetBaseEyeheight(); + //return; +} + +simulated event StartCrouch(float HeightAdjust) +{ + EyeHeight += HeightAdjust; + SetBaseEyeheight(); + //return; +} + +function HandleMomentum(Vector Momentum, Vector HitLocation, Class DamageType, optional TraceHitInfo HitInfo) +{ + AddVelocity(Momentum, HitLocation, DamageType, HitInfo); + //return; +} + +event AddVelocity(Vector NewVelocity, Vector HitLocation, Class DamageType, optional TraceHitInfo HitInfo) +{ + // End:0x2D + if(bIgnoreForces || NewVelocity == vect(0.0000000, 0.0000000, 0.0000000)) + { + return; + } + // End:0xCA + if((((int(Physics) == int(1)) || int(Physics) == int(12)) || int(Physics) == int(16)) || ((int(Physics) == int(9)) || int(Physics) == int(8)) && NewVelocity.Z > default.JumpZ) + { + SetPhysics(2); + } + // End:0x13D + if((Velocity.Z > default.JumpZ) && NewVelocity.Z > float(0)) + { + NewVelocity.Z *= 0.5000000; + } + Velocity += NewVelocity; + //return; +} + +event KilledBy(Pawn EventInstigator) +{ + local Controller Killer; + + Health = 0; + // End:0x4D + if(EventInstigator != none) + { + Killer = EventInstigator.Controller; + LastHitBy = none; + } + Died(Killer, Class'Engine.DmgType_Suicided', Location); + //return; +} + +function TakeFallingDamage() +{ + local float EffectiveSpeed; + + // End:0x13C + if(Velocity.Z < (-0.5000000 * MaxFallSpeed)) + { + // End:0x139 + if(int(Role) == int(ROLE_Authority)) + { + MakeNoise(1.0000000); + // End:0x139 + if(Velocity.Z < (float(-1) * MaxFallSpeed)) + { + EffectiveSpeed = Velocity.Z; + // End:0xC3 + if(TouchingWaterVolume()) + { + EffectiveSpeed += float(100); + } + // End:0x139 + if(EffectiveSpeed < (float(-1) * MaxFallSpeed)) + { + TakeDamage(int((float(-100) * (EffectiveSpeed + MaxFallSpeed)) / MaxFallSpeed), none, Location, vect(0.0000000, 0.0000000, 0.0000000), Class'Engine.DmgType_Fell'); + } + } + } + } + else + { + // End:0x179 + if(Velocity.Z < (-1.4000000 * JumpZ)) + { + MakeNoise(0.5000000); + } + else + { + // End:0x1B3 + if(Velocity.Z < (-0.8000000 * JumpZ)) + { + MakeNoise(0.2000000); + } + } + } + //return; +} + +function Restart() +{ + //return; +} + +simulated function ClientRestart() +{ + ZeroMovementVariables(); + SetBaseEyeheight(); + //return; +} + +function ClientSetRotation(Rotator NewRotation) +{ + // End:0x38 + if(Controller != none) + { + Controller.ClientSetRotation(NewRotation); + } + //return; +} + +final simulated event UpdatePawnRotation(Rotator NewRotation) +{ + FaceRotation(NewRotation, 0.0000000); + //return; +} + +simulated event FaceRotation(Rotator NewRotation, float DeltaTime) +{ + // End:0xA2 + if(!InFreeCam()) + { + // End:0x4E + if(int(Physics) == int(9)) + { + NewRotation = OnLadder.WallDir; + } + else + { + // End:0x96 + if((int(Physics) == int(1)) || int(Physics) == int(2)) + { + NewRotation.Pitch = 0; + } + } + SetRotation(NewRotation); + } + //return; +} + +event bool EncroachingOn(Actor Other) +{ + // End:0x48 + if(Other.bWorldGeometry || Other.bBlocksTeleport) + { + return true; + } + // End:0x99 + if(((Controller == none) || !Controller.bIsPlayer) && Pawn(Other) != none) + { + return true; + } + return false; + //return ReturnValue; +} + +event EncroachedBy(Actor Other) +{ + // End:0x45 + if((Pawn(Other) != none) && Vehicle(Other) == none) + { + gibbedBy(Other); + } + //return; +} + +function gibbedBy(Actor Other) +{ + // End:0x16 + if(int(Role) < int(ROLE_Authority)) + { + return; + } + // End:0x74 + if(Pawn(Other) != none) + { + Died(Pawn(Other).Controller, Class'Engine.DmgType_Telefragged', Location); + } + else + { + Died(none, Class'Engine.DmgType_Telefragged', Location); + } + //return; +} + +function JumpOffPawn() +{ + Velocity += ((float(100) + CylinderComponent.CollisionRadius) * VRand()); + // End:0x82 + if(VSize2D(Velocity) > FMax(500.0000000, GroundSpeed)) + { + Velocity = FMax(500.0000000, GroundSpeed) * Normal(Velocity); + } + Velocity.Z = 200.0000000 + CylinderComponent.CollisionHeight; + SetPhysics(2); + //return; +} + +event StuckOnPawn(Pawn OtherPawn) +{ + //return; +} + +singular event BaseChange() +{ + local DynamicSMActor Dyn; + + // End:0xB9 + if((Pawn(Base) != none) && (DrivenVehicle == none) || !DrivenVehicle.IsBasedOn(Base)) + { + // End:0xB9 + if(!Pawn(Base).CanBeBaseForPawn(self)) + { + Pawn(Base).CrushedBy(self); + JumpOffPawn(); + } + } + Dyn = DynamicSMActor(Base); + // End:0x12B + if(((int(Role) == int(ROLE_Authority)) && Dyn != none) && !Dyn.CanBasePawn(self)) + { + JumpOffPawn(); + } + //return; +} + +simulated function bool CanBeBaseForPawn(Pawn aPawn) +{ + return bCanBeBaseForPawns; + //return ReturnValue; +} + +function CrushedBy(Pawn OtherPawn) +{ + TakeDamage(int(((float(1) - (OtherPawn.Velocity.Z / float(400))) * OtherPawn.Mass) / Mass), OtherPawn.Controller, Location, vect(0.0000000, 0.0000000, 0.0000000), Class'Engine.DmgType_Crushed'); + //return; +} + +function DetachFromController(optional bool bDestroyController) +{ + local Controller OldController; + + // End:0x124 + if((Controller != none) && Controller.Pawn == self) + { + OldController = Controller; + Controller.PawnDied(self); + // End:0x97 + if(Controller != none) + { + Controller.UnPossess(); + } + // End:0x119 + if(((bDestroyController && OldController != none) && !OldController.bDeleteMe) && !OldController.bIsPlayer) + { + OldController.Destroy(); + } + Controller = none; + } + //return; +} + +simulated event Destroyed() +{ + DetachFromController(); + // End:0x32 + if(InvManager != none) + { + InvManager.Destroy(); + } + // End:0x5D + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + return; + } + SetAnchor(none); + Weapon = none; + ClearPathStep(); + super.Destroyed(); + //return; +} + +simulated event PreBeginPlay() +{ + // End:0x22 + if(HealthMax == 0) + { + HealthMax = default.Health; + } + super.PreBeginPlay(); + Instigator = self; + SetDesiredRotation(Rotation); + EyeHeight = BaseEyeHeight; + //return; +} + +event PostBeginPlay() +{ + super.PostBeginPlay(); + SplashTime = 0.0000000; + SpawnTime = WorldInfo.TimeSeconds; + EyeHeight = BaseEyeHeight; + // End:0xA2 + if((WorldInfo.bStartup && Health > 0) && !bDontPossess) + { + SpawnDefaultController(); + } + // End:0xE1 + if(FacialAudioComp != none) + { + FacialAudioComp.__OnAudioFinished__Delegate = FaceFXAudioFinished; + } + // End:0x16C + if(((int(Role) == int(ROLE_Authority)) && InvManager == none) && InventoryManagerClass != none) + { + InvManager = Spawn(InventoryManagerClass, self); + // End:0x14C + if(InvManager == none) + { + } + else + { + InvManager.SetupFor(self); + } + } + ClearPathStep(); + //return; +} + +function SpawnDefaultController() +{ + // End:0x11 + if(Controller != none) + { + return; + } + // End:0x43 + if(ControllerClass != none) + { + Controller = Spawn(ControllerClass); + } + // End:0x73 + if(Controller != none) + { + Controller.Possess(self, false); + } + //return; +} + +simulated event ReceivedNewEvent(SequenceEvent Evt) +{ + // End:0x37 + if(Controller != none) + { + Controller.ReceivedNewEvent(Evt); + } + super.ReceivedNewEvent(Evt); + //return; +} + +function OnAssignController(SeqAct_AssignController inAction) +{ + // End:0xEE + if(inAction.ControllerClass != none) + { + // End:0x3E + if(Controller != none) + { + DetachFromController(true); + } + Controller = Spawn(inAction.ControllerClass); + Controller.Possess(self, false); + // End:0xEB + if(Controller.IsA('AIController')) + { + ControllerClass = Class(Controller.Class); + } + } + //return; +} + +simulated function OnGiveInventory(SeqAct_GiveInventory inAction) +{ + local int Idx; + local Class InvClass; + + // End:0x41 + if(inAction.bClearExisting) + { + InvManager.DiscardInventory(); + } + // End:0x16E + if(inAction.InventoryList.Length > 0) + { + Idx = 0; + J0x71: + + // End:0x16B [Loop If] + if(Idx < inAction.InventoryList.Length) + { + InvClass = inAction.InventoryList[Idx]; + // End:0x110 + if(InvClass != none) + { + // End:0x10D + if(FindInventoryType(InvClass, false) == none) + { + CreateInventory(InvClass); + } + } + else + { + inAction.ScriptLog("WARNING: Attempting to give NULL inventory!"); + } + Idx++; + // [Loop Continue] + goto J0x71; + } + } + else + { + inAction.ScriptLog("WARNING: Give Inventory without any inventory specified!"); + } + //return; +} + +function Gasp() +{ + //return; +} + +function SetMovementPhysics() +{ + // End:0x2A + if(PhysicsVolume.bWaterVolume) + { + SetPhysics(3); + } + else + { + // End:0x43 + if(int(Physics) != int(2)) + { + SetPhysics(2); + } + } + //return; +} + +function AdjustDamage(out int InDamage, out Vector Momentum, Controller InstigatedBy, Vector HitLocation, Class DamageType, TraceHitInfo HitInfo, Actor DamageCauser) +{ + //return; +} + +event bool HealDamage(int Amount, Controller Healer, Class DamageType) +{ + // End:0x56 + if((Health > 0) && Health < HealthMax) + { + Health = Min(HealthMax, Health + Amount); + return true; + } + else + { + return false; + } + //return ReturnValue; +} + +function PruneDamagedBoneList(out array Bones) +{ + //return; +} + +event bool TakeRadiusDamageOnBones(Controller InstigatedBy, float BaseDamage, float DamageRadius, Class DamageType, float Momentum, Vector HurtOrigin, bool bFullDamage, Actor DamageCauser, array Bones) +{ + local int Idx; + local TraceHitInfo HitInfo; + local bool bResult; + local float DamageScale, Dist; + local Vector Dir, BoneLoc; + + PruneDamagedBoneList(Bones); + Idx = 0; + J0x1E: + + // End:0x1EE [Loop If] + if(Idx < Bones.Length) + { + HitInfo.BoneName = Bones[Idx]; + HitInfo.HitComponent = Mesh; + BoneLoc = Mesh.GetBoneLocation(Bones[Idx]); + Dir = BoneLoc - HurtOrigin; + Dist = VSize(Dir); + Dir = Normal(Dir); + // End:0x130 + if(bFullDamage) + { + DamageScale = 1.0000000; + } + else + { + DamageScale = 1.0000000 - (Dist / DamageRadius); + } + // End:0x1D4 + if(DamageScale > 0.0000000) + { + TakeDamage(int(DamageScale * BaseDamage), InstigatedBy, BoneLoc, (DamageScale * Momentum) * Dir, DamageType, HitInfo, DamageCauser); + } + bResult = true; + Idx++; + // [Loop Continue] + goto J0x1E; + } + return bResult; + //return ReturnValue; +} + +function NotifyTakeHit(Controller InstigatedBy, Vector HitLocation, int Damage, Class DamageType, Vector Momentum, Actor DamageCauser) +{ + // End:0x5B + if(Controller != none) + { + Controller.NotifyTakeHit(InstigatedBy, HitLocation, Damage, DamageType, Momentum); + } + //return; +} + +function Controller SetKillInstigator(Controller InstigatedBy, Class DamageType) +{ + // End:0x35 + if((InstigatedBy != none) && InstigatedBy != Controller) + { + return InstigatedBy; + } + else + { + // End:0x72 + if(DamageType.default.bCausedByWorld && LastHitBy != none) + { + return LastHitBy; + } + } + return InstigatedBy; + //return ReturnValue; +} + +event TakeDamage(int Damage, Controller InstigatedBy, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + local int actualDamage; + local PlayerController PC; + local Controller Killer; + + // End:0x29 + if((int(Role) < int(ROLE_Authority)) || Health <= 0) + { + return; + } + // End:0x5D + if(DamageType == none) + { + // End:0x4A + if(InstigatedBy == none) + { + } + DamageType = Class'Engine.DamageType'; + } + Damage = Max(Damage, 0); + // End:0xA2 + if((int(Physics) == int(0)) && DrivenVehicle == none) + { + SetMovementPhysics(); + } + // End:0x127 + if((int(Physics) == int(1)) && DamageType.default.bExtraMomentumZ) + { + Momentum.Z = FMax(Momentum.Z, 0.4000000 * VSize(Momentum)); + } + // End:0x182 + if(DrivenVehicle != none) + { + DrivenVehicle.AdjustDriverDamage(Damage, InstigatedBy, HitLocation, Momentum, DamageType); + } + actualDamage = Damage; + WorldInfo.Game.ReduceDamage(actualDamage, self, InstigatedBy, HitLocation, Momentum, DamageType, DamageCauser); + AdjustDamage(actualDamage, Momentum, InstigatedBy, HitLocation, DamageType, HitInfo, DamageCauser); + super.TakeDamage(actualDamage, InstigatedBy, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + Health -= actualDamage; + // End:0x2D4 + if(HitLocation == vect(0.0000000, 0.0000000, 0.0000000)) + { + HitLocation = Location; + } + // End:0x3B0 + if(Health <= 0) + { + PC = PlayerController(Controller); + // End:0x34F + if(PC != none) + { + PC.ClientPlayForceFeedbackWaveform(DamageType.default.KilledFFWaveform); + } + Killer = SetKillInstigator(InstigatedBy, DamageType); + TearOffMomentum = Momentum; + Died(Killer, DamageType, HitLocation); + } + else + { + NotifyTakeHit(InstigatedBy, HitLocation, Damage, DamageType, Momentum, DamageCauser); + // End:0x44B + if(DrivenVehicle != none) + { + DrivenVehicle.NotifyDriverTakeHit(InstigatedBy, HitLocation, actualDamage, DamageType, Momentum); + } + // End:0x486 + if((InstigatedBy != none) && InstigatedBy != Controller) + { + LastHitBy = InstigatedBy; + } + } + PlayHit(float(actualDamage), InstigatedBy, HitLocation, DamageType, Momentum, HitInfo); + MakeNoise(1.0000000); + //return; +} + +// Export UPawn::execGetTeamNum(FFrame&, void* const) +native simulated function byte GetTeamNum(); + +simulated function TeamInfo GetTeam() +{ + // End:0x6C + if((Controller != none) && Controller.PlayerReplicationInfo != none) + { + return Controller.PlayerReplicationInfo.Team; + } + else + { + // End:0x9D + if(PlayerReplicationInfo != none) + { + return PlayerReplicationInfo.Team; + } + else + { + // End:0x109 + if((DrivenVehicle != none) && DrivenVehicle.PlayerReplicationInfo != none) + { + return DrivenVehicle.PlayerReplicationInfo.Team; + } + else + { + return none; + } + } + } + //return ReturnValue; +} + +function ThrowWeaponOnDeath() +{ + ThrowActiveWeapon(); + //return; +} + +function bool Died(Controller Killer, Class DamageType, Vector HitLocation) +{ + local SeqAct_Latent Action; + + // End:0x22 + if(DamageType == none) + { + DamageType = Class'Engine.DamageType'; + } + // End:0x90 + if((bDeleteMe || WorldInfo.Game == none) || WorldInfo.Game.bLevelChange) + { + return false; + } + // End:0x100 + if((DamageType.default.bCausedByWorld && (Killer == none) || Killer == Controller) && LastHitBy != none) + { + Killer = LastHitBy; + } + // End:0x16B + if(WorldInfo.Game.PreventDeath(self, Killer, DamageType, HitLocation)) + { + Health = Max(Health, 1); + return false; + } + Health = Min(0, Health); + // End:0x19F + if(default.KismetDeathDelayTime > float(0)) + { + DelayTriggerDeath(); + } + else + { + TriggerEventClass(Class'Engine.SeqEvent_Death', self); + } + KismetDeathDelayTime = default.KismetDeathDelayTime + WorldInfo.TimeSeconds; + // End:0x221 + foreach LatentActions(Action) + { + Action.AbortFor(self); + } + LatentActions.Length = 0; + // End:0x290 + if(DrivenVehicle != none) + { + Velocity = DrivenVehicle.Velocity; + DrivenVehicle.DriverDied(DamageType); + } + else + { + // End:0x2C8 + if(Weapon != none) + { + Weapon.HolderDied(); + ThrowWeaponOnDeath(); + } + } + // End:0x32A + if(Controller != none) + { + WorldInfo.Game.Killed(Killer, Controller, self, DamageType); + } + else + { + WorldInfo.Game.Killed(Killer, Controller(Owner), self, DamageType); + } + DrivenVehicle = none; + // End:0x3BC + if(InvManager != none) + { + InvManager.OwnerDied(); + } + Velocity.Z *= 1.3000000; + // End:0x415 + if(IsHumanControlled()) + { + PlayerController(Controller).ForceDeathUpdate(); + } + NetUpdateFrequency = default.NetUpdateFrequency; + PlayDying(DamageType, HitLocation); + return true; + //return ReturnValue; +} + +function DelayTriggerDeath() +{ + TriggerEventClass(Class'Engine.SeqEvent_Death', self); + //return; +} + +event Falling() +{ + //return; +} + +event Landed(Vector HitNormal, Actor FloorActor) +{ + TakeFallingDamage(); + // End:0x3F + if(Health > 0) + { + PlayLanded(Velocity.Z); + } + LastHitBy = none; + //return; +} + +event TickSpecial(float DeltaTime) +{ + //return; +} + +event HeadVolumeChange(PhysicsVolume newHeadVolume) +{ + // End:0x3C + if((int(WorldInfo.NetMode) == int(NM_Client)) || Controller == none) + { + return; + } + // End:0xF8 + if((HeadVolume != none) && HeadVolume.bWaterVolume) + { + // End:0xF5 + if(!newHeadVolume.bWaterVolume) + { + // End:0xE6 + if((Controller.bIsPlayer && BreathTime > float(0)) && BreathTime < float(8)) + { + Gasp(); + } + BreathTime = -1.0000000; + } + } + else + { + // End:0x12D + if(newHeadVolume.bWaterVolume) + { + BreathTime = UnderWaterTime; + } + } + //return; +} + +function bool TouchingWaterVolume() +{ + local PhysicsVolume V; + + // End:0x3E + foreach TouchingActors(Class'Engine.PhysicsVolume', V) + { + // End:0x3D + if(V.bWaterVolume) + { + return true; + } + } + return false; + //return ReturnValue; +} + +event BreathTimer() +{ + // End:0x9A + if(HeadVolume.bWaterVolume) + { + // End:0x6F + if(((Health < 0) || int(WorldInfo.NetMode) == int(NM_Client)) || DrivenVehicle != none) + { + return; + } + TakeDrowningDamage(); + // End:0x97 + if(Health > 0) + { + BreathTime = 2.0000000; + } + } + else + { + BreathTime = 0.0000000; + } + //return; +} + +function TakeDrowningDamage() +{ + //return; +} + +function bool CheckWaterJump(out Vector WallNormal) +{ + local Actor HitActor; + local Vector HitLocation, HitNormal, Checkpoint, Start, checkNorm, Extent; + + // End:0x14C + if(AIController(Controller) != none) + { + // End:0x117 + if((Controller.InLatentExecution(Controller.503) && Controller.MoveTarget != none) && !Controller.MoveTarget.PhysicsVolume.bWaterVolume) + { + Checkpoint = Normal(Controller.MoveTarget.Location - Location); + } + else + { + Checkpoint = Acceleration; + } + Checkpoint.Z = 0.0000000; + } + // End:0x17C + if(Checkpoint == vect(0.0000000, 0.0000000, 0.0000000)) + { + Checkpoint = Vector(Rotation); + } + Checkpoint.Z = 0.0000000; + checkNorm = Normal(Checkpoint); + Checkpoint = Location + ((1.2000000 * CylinderComponent.CollisionRadius) * checkNorm); + Extent = CylinderComponent.CollisionRadius * vect(1.0000000, 1.0000000, 0.0000000); + Extent.Z = CylinderComponent.CollisionHeight; + HitActor = Trace(HitLocation, HitNormal, Checkpoint, Location, true, Extent,, 8); + // End:0x3DB + if((HitActor != none) && Pawn(HitActor) == none) + { + WallNormal = float(-1) * HitNormal; + Start = Location; + Start.Z += MaxOutOfWaterStepHeight; + Checkpoint = Start + ((3.2000000 * CylinderComponent.CollisionRadius) * WallNormal); + HitActor = Trace(HitLocation, HitNormal, Checkpoint, Start, true,,, 8); + // End:0x3DB + if((HitActor == none) || HitNormal.Z > 0.7000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +function bool DoJump(bool bUpdating, optional float JumpZSpeed) +{ + // End:0x1E2 + if(bJumpCapable && ((int(Physics) == int(1)) || int(Physics) == int(9)) || int(Physics) == int(8)) + { + // End:0x85 + if(int(Physics) == int(8)) + { + Velocity = JumpZ * Floor; + } + else + { + // End:0xBE + if(int(Physics) == int(9)) + { + Velocity.Z = 0.0000000; + } + else + { + // End:0xF4 + if(bIsWalking) + { + Velocity.Z = default.JumpZ; + } + else + { + Velocity.Z = JumpZ; + } + } + } + // End:0x1DB + if(((Base != none) && !Base.bWorldGeometry) && Base.Velocity.Z > 0.0000000) + { + Velocity.Z += Base.Velocity.Z; + } + SetPhysics(2); + return true; + } + return false; + //return ReturnValue; +} + +function PlayDyingSound() +{ + //return; +} + +function PlayHit(float Damage, Controller InstigatedBy, Vector HitLocation, Class DamageType, Vector Momentum, TraceHitInfo HitInfo) +{ + // End:0x4A + if((Damage <= float(0)) && (Controller == none) || !Controller.bGodMode) + { + return; + } + LastPainTime = WorldInfo.TimeSeconds; + //return; +} + +simulated function TurnOff() +{ + // End:0x20 + if(int(Role) == int(ROLE_Authority)) + { + RemoteRole = ROLE_SimulatedProxy; + } + // End:0xD4 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && Mesh != none) + { + Mesh.bPauseAnims = true; + // End:0xD4 + if(int(Physics) == int(10)) + { + Mesh.PhysicsWeight = 1.0000000; + Mesh.bUpdateKinematicBonesFromAnimation = false; + } + } + SetCollision(true, false); + bNoWeaponFiring = true; + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + SetPhysics(0); + bIgnoreForces = true; + // End:0x13C + if(Weapon != none) + { + Weapon.StopFire(); + } + //return; +} + +function SetDyingPhysics() +{ + // End:0x19 + if(int(Physics) != int(10)) + { + SetPhysics(2); + } + //return; +} + +simulated function PlayDying(Class DamageType, Vector HitLoc) +{ + GotoState('Dying'); + bReplicateMovement = false; + bTearOff = true; + Velocity += TearOffMomentum; + SetDyingPhysics(); + bPlayedDeath = true; + KismetDeathDelayTime = default.KismetDeathDelayTime + WorldInfo.TimeSeconds; + //return; +} + +simulated event TornOff() +{ + // End:0x2B + if(!bPlayedDeath) + { + PlayDying(HitDamageType, TakeHitLocation); + } + //return; +} + +event PlayFootStepSound(int FootDown, Pawn.EFootstepTypes FootStepType) +{ + //return; +} + +function bool CannotJumpNow() +{ + return false; + //return ReturnValue; +} + +function PlayLanded(float ImpactVel) +{ + //return; +} + +// Export UPawn::execGetVehicleBase(FFrame&, void* const) +native function Vehicle GetVehicleBase(); + +function Suicide() +{ + KilledBy(self); + //return; +} + +simulated function bool CanThrowWeapon() +{ + return false; + //return ReturnValue; +} + +simulated event StartDriving(Vehicle V) +{ + StopFiring(); + // End:0x1B + if(Health <= 0) + { + return; + } + DrivenVehicle = V; + bForceNetUpdate = true; + ShouldCrouch(false); + bIgnoreForces = true; + bCanTeleport = false; + BreathTime = 0.0000000; + V.AttachDriver(self); + //return; +} + +simulated event StopDriving(Vehicle V) +{ + // End:0xB8 + if(Mesh != none) + { + Mesh.SetCullDistance(default.Mesh.CachedMaxDrawDistance); + Mesh.SetShadowParent(none); + // End:0xB8 + if(default.Mesh != none) + { + Mesh.SetCullDistance(default.Mesh.CachedMaxDrawDistance); + } + } + bForceNetUpdate = true; + // End:0xF2 + if(V != none) + { + V.StopFiring(); + } + // End:0x108 + if(int(Physics) == int(10)) + { + return; + } + DrivenVehicle = none; + bIgnoreForces = false; + SetHardAttach(false); + bCanTeleport = true; + bCollideWorld = true; + // End:0x171 + if(V != none) + { + V.DetachDriver(self); + } + SetCollision(true, true); + // End:0x1DD + if(int(Role) == int(ROLE_Authority)) + { + // End:0x1C6 + if(PhysicsVolume.bWaterVolume && Health > 0) + { + SetPhysics(3); + } + else + { + SetPhysics(2); + } + SetBase(none); + SetHidden(false); + } + //return; +} + +function AddDefaultInventory() +{ + //return; +} + +final event Inventory CreateInventory(Class NewInvClass, optional bool bDoNotActivate) +{ + // End:0x43 + if(InvManager != none) + { + return InvManager.CreateInventory(NewInvClass, bDoNotActivate); + } + return none; + //return ReturnValue; +} + +final simulated function Inventory FindInventoryType(Class DesiredClass, optional bool bAllowSubclass) +{ + return ((InvManager != none) ? InvManager.FindInventoryType(DesiredClass, bAllowSubclass) : none); + //return ReturnValue; +} + +simulated function DrawHUD(HUD H) +{ + // End:0x37 + if(InvManager != none) + { + InvManager.DrawHUD(H); + } + //return; +} + +function ThrowActiveWeapon(optional bool bDestroyWeap) +{ + // End:0x24 + if(Weapon != none) + { + TossInventory(Weapon); + } + //return; +} + +function TossInventory(Inventory Inv, optional Vector ForceVelocity) +{ + local Vector POVLoc, TossVel; + local Rotator POVRot; + local Vector X, Y, Z; + + // End:0x32 + if(ForceVelocity != vect(0.0000000, 0.0000000, 0.0000000)) + { + TossVel = ForceVelocity; + } + else + { + GetActorEyesViewPoint(POVLoc, POVRot); + TossVel = Vector(POVRot); + TossVel = (TossVel * ((Velocity Dot TossVel) + float(500))) + vect(0.0000000, 0.0000000, 200.0000000); + } + GetAxes(Rotation, X, Y, Z); + Inv.DropFrom((Location + ((0.8000000 * CylinderComponent.CollisionRadius) * X)) - ((0.5000000 * CylinderComponent.CollisionRadius) * Y), TossVel); + //return; +} + +simulated event bool SetActiveWeapon(Weapon NewWeapon, optional bool bForceFastClear) +{ + //return ReturnValue; +} + +simulated function PlayWeaponSwitch(Weapon OldWeapon, Weapon NewWeapon) +{ + //return; +} + +function bool CheatWalk() +{ + UnderWaterTime = default.UnderWaterTime; + SetCollision(true, true); + SetPhysics(2); + bCollideWorld = true; + SetPushesRigidBodies(default.bPushesRigidBodies); + return true; + //return ReturnValue; +} + +function bool CheatGhost() +{ + UnderWaterTime = -1.0000000; + SetCollision(false, false); + bCollideWorld = false; + SetPushesRigidBodies(false); + return true; + //return ReturnValue; +} + +function bool CheatFly() +{ + UnderWaterTime = default.UnderWaterTime; + SetCollision(true, true); + bCollideWorld = true; + return true; + //return ReturnValue; +} + +simulated function float GetCollisionRadius() +{ + return ((CylinderComponent != none) ? CylinderComponent.CollisionRadius : 0.0000000); + //return ReturnValue; +} + +simulated function float GetCollisionHeight() +{ + return ((CylinderComponent != none) ? CylinderComponent.CollisionHeight : 0.0000000); + //return ReturnValue; +} + +final simulated function Vector GetCollisionExtent() +{ + local Vector Extent; + + Extent = (GetCollisionRadius()) * vect(1.0000000, 1.0000000, 0.0000000); + Extent.Z = GetCollisionHeight(); + return Extent; + //return ReturnValue; +} + +function bool IsStationary() +{ + return false; + //return ReturnValue; +} + +event SpawnedByKismet() +{ + // End:0x2E + if(Controller != none) + { + Controller.SpawnedByKismet(); + } + //return; +} + +function DoKismetAttachment(Actor Attachment, SeqAct_AttachToActor Action) +{ + local bool bOldCollideActors, bOldBlockActors, bValidBone, bValidSocket; + + // End:0xF7 + if((Mesh != none) && Action.BoneName != 'None') + { + bValidSocket = Mesh.GetSocketByName(Action.BoneName) != none; + bValidBone = Mesh.MatchRefBone(Action.BoneName) != -1; + // End:0xF7 + if(!bValidBone && !bValidSocket) + { + } + } + // End:0x448 + if(bValidBone || bValidSocket) + { + bOldCollideActors = Attachment.bCollideActors; + bOldBlockActors = Attachment.bBlockActors; + Attachment.SetCollision(false, false); + Attachment.SetHardAttach(Action.bHardAttach); + // End:0x2D8 + if(bValidBone && !bValidSocket) + { + // End:0x256 + if(Action.bUseRelativeOffset) + { + Attachment.SetLocation(Mesh.GetBoneLocation(Action.BoneName)); + } + // End:0x2D8 + if(Action.bUseRelativeRotation) + { + Attachment.SetRotation(QuatToRotator(Mesh.GetBoneQuaternion(Action.BoneName))); + } + } + Attachment.SetBase(self,, Mesh, Action.BoneName); + // End:0x399 + if(Action.bUseRelativeRotation) + { + Attachment.SetRelativeRotation(Attachment.RelativeRotation + Action.RelativeRotation); + } + // End:0x418 + if(Action.bUseRelativeOffset) + { + Attachment.SetRelativeLocation(Attachment.RelativeLocation + Action.RelativeOffset); + } + Attachment.SetCollision(bOldCollideActors, bOldBlockActors); + } + else + { + super.DoKismetAttachment(Attachment, Action); + } + //return; +} + +function float GetDamageScaling() +{ + return DamageScaling; + //return ReturnValue; +} + +function OnSetMaterial(SeqAct_SetMaterial Action) +{ + // End:0x6A + if(Mesh != none) + { + Mesh.SetMaterial(Action.MaterialIndex, Action.NewMaterial); + } + //return; +} + +simulated function OnTeleport(SeqAct_Teleport Action) +{ + local array objVars; + + Action.GetObjectVars(objVars, "Destination"); + // End:0xAB + if(!HandleTeleport(objVars, Action.bUpdateRotation, Action.bCheckOverlap,, Action.TeleportVolumes)) + { + } + //return; +} + +simulated function bool HandleTeleport(array DestList, bool bUpdateRotation, bool bCheckOverlap, optional float TeleportDistance, optional array TeleportVolumes, optional int PreferredDestIndex) +{ + local int Idx, Cnt; + local Actor destActor, tempActor, A; + local Controller C; + local bool bOccupiedDest, bColliding; + local Vector Extent; + + Extent = GetCollisionExtent(); + bOccupiedDest = false; + // End:0x2AE + if(DestList.Length > 0) + { + Idx = ((PreferredDestIndex >= 0) ? PreferredDestIndex : 0); + // End:0x86 + if(Idx >= DestList.Length) + { + Idx = 0; + PreferredDestIndex = 0; + } + Cnt = 0; + J0x91: + + tempActor = Actor(DestList[Idx]); + // End:0x241 + if(tempActor != none) + { + C = Controller(tempActor); + // End:0x13F + if((C != none) && C.Pawn != none) + { + tempActor = C.Pawn; + } + // End:0x1FA + if(bCheckOverlap) + { + bColliding = false; + // End:0x1E4 + foreach VisibleCollidingActors(Class'Engine.Actor', A, Extent.X * 2.0000000, tempActor.Location, false, Extent, true) + { + // End:0x1E3 + if(IsBlockedBy(A)) + { + bColliding = true; + // End:0x1E4 + break; + } + } + bOccupiedDest = bColliding; + } + destActor = tempActor; + // End:0x241 + if((!bCheckOverlap || !bOccupiedDest) && destActor != none) + { + // [Explicit Continue] + goto J0x2AB; + } + } + ++Idx; + // End:0x26F + if(Idx >= DestList.Length) + { + Idx = 0; + } + ++Cnt; + // End:0x91 + if(!((Idx == PreferredDestIndex) || Cnt >= DestList.Length)) + goto J0x91; + J0x2AB: + + } + // End:0x49E + if((destActor != none) && Class'Engine.SeqAct_Teleport'.static.ShouldTeleport(self, destActor.Location, TeleportDistance, TeleportVolumes)) + { + // End:0x49C + if(SetLocation(destActor.Location)) + { + // End:0x3AE + if(!IsLocallyControlled() && PlayerController(Controller) != none) + { + PlayerController(Controller).ClientSetLocation(destActor.Location, Rotation); + } + PlayTeleportEffect(false, true); + // End:0x46B + if(bUpdateRotation) + { + SetRotation(destActor.Rotation); + // End:0x46B + if(Controller != none) + { + Controller.SetRotation(destActor.Rotation); + Controller.ClientSetRotation(destActor.Rotation); + } + } + // End:0x49A + if(Controller != none) + { + Controller.OnTeleport(none); + } + return true; + } + return false; + } + // End:0x4AF + if(destActor == none) + { + return false; + } + return true; + //return ReturnValue; +} + +final event MessagePlayer(coerce string msg) +{ + //return; +} + +simulated event BecomeViewTarget(PlayerController PC) +{ + // End:0x38 + if(PhysicsVolume != none) + { + PhysicsVolume.NotifyPawnBecameViewTarget(self, PC); + } + // End:0x92 + if(!bReplicateHealthToAll && int(WorldInfo.NetMode) != int(NM_Client)) + { + PC.ForceSingleNetUpdateFor(self); + } + //return; +} + +event SoakPause() +{ + local PlayerController PC; + + // End:0x58 + foreach WorldInfo.LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + PC.SoakPause(self); + // End:0x58 + break; + } + //return; +} + +// Export UPawn::execClearConstraints(FFrame&, void* const) +native function ClearConstraints(); + +// Export UPawn::execAddPathConstraint(FFrame&, void* const) +native function AddPathConstraint(PathConstraint Constraint); + +// Export UPawn::execAddGoalEvaluator(FFrame&, void* const) +native function AddGoalEvaluator(PathGoalEvaluator Evaluator); + +function PathConstraint CreatePathConstraint(Class ConstraintClass) +{ + return new (self) ConstraintClass; + //return ReturnValue; +} + +function PathGoalEvaluator CreatePathGoalEvaluator(Class GoalEvalClass) +{ + return new (self) GoalEvalClass; + //return ReturnValue; +} + +// Export UPawn::execIncrementPathStep(FFrame&, void* const) +native function IncrementPathStep(int Cnt, Canvas C); + +// Export UPawn::execIncrementPathChild(FFrame&, void* const) +native function IncrementPathChild(int Cnt, Canvas C); + +// Export UPawn::execDrawPathStep(FFrame&, void* const) +native function DrawPathStep(Canvas C); + +// Export UPawn::execClearPathStep(FFrame&, void* const) +native function ClearPathStep(); + +simulated function ZeroMovementVariables() +{ + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + //return; +} + +simulated function SetCinematicMode(bool bInCinematicMode) +{ + //return; +} + +// Export UPawn::execSetRootMotionInterpCurrentTime(FFrame&, void* const) +native function SetRootMotionInterpCurrentTime(float inTime, optional float DeltaTime, optional bool bUpdateSkelPose); + +// Export UPawn::execSetScalarParameterInterp(FFrame&, void* const) +native final simulated function SetScalarParameterInterp(const out ScalarParameterInterpStruct ScalarParameterInterp); + +simulated event Speak(SoundCue Cue) +{ + PlaySound(Cue, true); + //return; +} + +simulated function OnSetVelocity(SeqAct_SetVelocity Action) +{ + super.OnSetVelocity(Action); + // End:0x53 + if(Action.VelocityMag == float(0)) + { + Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + } + else + { + Acceleration = Velocity / 0.2000000; + } + //return; +} + +// Export UPawn::execGetPropCurrentValueByName(FFrame&, void* const) +native function float GetPropCurrentValueByName(string propName); + +state Dying +{ + ignores Died, Landed, BaseChange, PlayNextAnimation, PlayWeaponSwitch, FellOutOfWorld, + BreathTimer, Falling, PhysicsVolumeChange, HeadVolumeChange, HitWall, + Bump; + + singular simulated event OutsideWorldBounds() + { + SetPhysics(0); + SetHidden(true); + LifeSpan = FMin(LifeSpan, 1.0000000); + //return; + } + + event Timer() + { + // End:0x0F + if(!PlayerCanSeeMe()) + { + Destroy(); + } + else + { + SetTimer(2.0000000, false); + } + //return; + } + + event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) + { + SetPhysics(2); + // End:0x66 + if((int(Physics) == int(0)) && Momentum.Z < float(0)) + { + Momentum.Z *= float(-1); + } + Velocity += ((float(3) * Momentum) / (Mass + float(200))); + // End:0xB3 + if(DamageType == none) + { + DamageType = Class'Engine.DamageType'; + } + Health -= Damage; + //return; + } + + event BeginState(name PreviousStateName) + { + local Actor A; + local array TouchEvents; + local int I; + + // End:0x4A + if(bTearOff && int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + LifeSpan = 2.0000000; + } + else + { + SetTimer(5.0000000, false); + LifeSpan = 25.0000000; + } + SetDyingPhysics(); + SetCollision(true, false); + // End:0xCB + if(Controller != none) + { + // End:0xB3 + if(Controller.bIsPlayer) + { + DetachFromController(); + } + else + { + Controller.Destroy(); + } + } + // End:0x189 + foreach TouchingActors(Class'Engine.Actor', A) + { + // End:0x188 + if(A.FindEventsOfClass(Class'Engine.SeqEvent_Touch', TouchEvents)) + { + I = 0; + J0x123: + + // End:0x17C [Loop If] + if(I < TouchEvents.Length) + { + SeqEvent_Touch(TouchEvents[I]).NotifyTouchingPawnDied(self); + I++; + // [Loop Continue] + goto J0x123; + } + TouchEvents.Length = 0; + } + } + // End:0x1C2 + foreach BasedActors(Class'Engine.Actor', A) + { + A.PawnBaseDied(); + } + //return; + } +Begin: + + Sleep(0.2000000); + PlayDyingSound(); + stop; +} + +defaultproperties +{ + MaxStepHeight=35.0000000 + MaxJumpHeight=96.0000000 + WalkableFloorZ=0.7000000 + LedgeCheckThreshold=4.0000000 + bJumpCapable=true + bCanJump=true + bCanWalk=true + bAllowLedgeOverhang=true + bSimulateGravity=true + bLOSHearing=true + bModifyNavPointDest=true + bLimitFallAccel=true + WalkingPhysics=EPhysics.PHYS_Walking + CrouchHeight=40.0000000 + CrouchRadius=34.0000000 + NonPreferredVehiclePathMultiplier=1.0000000 + DesiredSpeed=1.0000000 + MaxDesiredSpeed=1.0000000 + HearingThreshold=2800.0000000 + SightRadius=5000.0000000 + AvgPhysicsTime=0.1000000 + Mass=100.0000000 + MaxPitchLimit=3072 + GroundSpeed=600.0000000 + WaterSpeed=300.0000000 + AirSpeed=600.0000000 + LadderSpeed=200.0000000 + AccelRate=2048.0000000 + JumpZ=420.0000000 + OutofWaterZ=420.0000000 + MaxOutOfWaterStepHeight=40.0000000 + AirControl=0.0500000 + WalkingPct=0.5000000 + MovementSpeedModifier=1.0000000 + CrouchedPct=0.5000000 + MaxFallSpeed=1200.0000000 + AIMaxFallSpeedFactor=1.0000000 + BaseEyeHeight=64.0000000 + EyeHeight=54.0000000 + Health=100 + noise1time=-10.0000000 + noise2time=-10.0000000 + SoundDampening=1.0000000 + DamageScaling=1.0000000 + ControllerClass=Class'Engine.AIController' + LandMovementState="PlayerWalking" + WaterMovementState="PlayerSwimming" + // Reference: CylinderComponent'Engine.Default__Pawn.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=78.0000000 + CollisionRadius=34.0000000 + ReplacementPrimitive=none + CollideActors=true + BlockActors=true + end object + CylinderComponent=CollisionCylinder + RBPushRadius=10.0000000 + RBPushStrength=50.0000000 + VehicleCheckRadius=150.0000000 + ViewPitchMin=-16384.0000000 + ViewPitchMax=16383.0000000 + AllowedYawError=2000 + InventoryManagerClass=Class'Engine.InventoryManager' + RootMotionInterpRate=1.0000000 + Components[0]=none + Components[1]=CollisionCylinder + Components[2]=none + RemoteRole=ENetRole.ROLE_SimulatedProxy + bUpdateSimulatedPosition=true + bCanBeDamaged=true + bShouldBaseAtStartup=true + bCanTeleport=true + bCollideActors=true + bCollideWorld=true + bBlockActors=true + bProjTarget=true + bUpdateHavokPos=true + bHavokPosOnlyUseCollisionComponent=true + NetPriority=2.0000000 + CollisionComponent=CollisionCylinder + RotationRate=(Pitch=20000,Yaw=20000,Roll=20000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/PhysXParticleSystem.uc b/exported/Engine/Classes/PhysXParticleSystem.uc new file mode 100755 index 00000000..e855a6e0 --- /dev/null +++ b/exported/Engine/Classes/PhysXParticleSystem.uc @@ -0,0 +1,77 @@ +class PhysXParticleSystem extends Object + native(Particle) + hidecategories(Object); + +enum ESimulationMethod +{ + ESM_SPH, // 0 + ESM_NO_PARTICLE_INTERACTION, // 1 + ESM_MIXED_MODE, // 2 + ESM_MAX // 3 +}; + +enum EPacketSizeMultiplier +{ + EPSM_4, // 0 + EPSM_8, // 1 + EPSM_16, // 2 + EPSM_32, // 3 + EPSM_64, // 4 + EPSM_128, // 5 + EPSM_MAX // 6 +}; + +var(Buffer) int MaxParticles; +var(Buffer) int ParticleSpawnReserve; +var(Collision) const PrimitiveComponent.ERBCollisionChannel RBChannel; +var(SdkExpert) PhysXParticleSystem.ESimulationMethod SimulationMethod; +var(SdkExpert) PhysXParticleSystem.EPacketSizeMultiplier PacketSizeMultiplier; +var(Collision) const RBCollisionChannelContainer RBCollideWithChannels; +var(Collision) float CollisionDistance; +var(Collision) float RestitutionWithStaticShapes; +var(Collision) float RestitutionWithDynamicShapes; +var(Collision) float FrictionWithStaticShapes; +var(Collision) float FrictionWithDynamicShapes; +var(Collision) float StaticFrictionWithStaticShapes; +var(Collision) float StaticFrictionWithDynamicShapes; +var(Collision) bool bDynamicCollision; +var(Dynamics) bool bDisableGravity; +var(SdkExpert) bool bStaticCollision; +var(SdkExpert) bool bTwoWayCollision; +var transient bool bDestroy; +var transient bool bSyncFailed; +var transient bool bIsInGame; +var(Dynamics) float MaxMotionDistance; +var(Dynamics) float Damping; +var(Dynamics) Vector ExternalAcceleration; +var(SdkExpert) float RestParticleDistance; +var(SdkExpert) float RestDensity; +var(SdkExpert) float KernelRadiusMultiplier; +var(SdkExpert) float Stiffness; +var(SdkExpert) float Viscosity; +var(SdkExpert) float CollisionResponseCoefficient; +var native Pointer CascadeScene; +var native Pointer PSys; + +defaultproperties +{ + MaxParticles=32767 + RBChannel=ERBCollisionChannel.RBCC_EffectPhysics + SimulationMethod=ESimulationMethod.ESM_NO_PARTICLE_INTERACTION + PacketSizeMultiplier=EPacketSizeMultiplier.EPSM_16 + RBCollideWithChannels=(Default=true,Nothing=false,Pawn=false,Vehicle=false,Water=false,GameplayPhysics=true,EffectPhysics=false,Untitled1=false,Untitled2=false,Untitled3=false,Untitled4=false,Cloth=false,FluidDrain=true,SoftBody=false,FracturedMeshPart=false,BlockingVolume=false,DeadPawn=false,Clothing=false,ClothingCollision=false) + CollisionDistance=10.0000000 + RestitutionWithStaticShapes=0.5000000 + RestitutionWithDynamicShapes=0.5000000 + FrictionWithStaticShapes=0.0500000 + FrictionWithDynamicShapes=0.5000000 + bDynamicCollision=true + bStaticCollision=true + MaxMotionDistance=64.0000000 + RestParticleDistance=64.0000000 + RestDensity=1000.0000000 + KernelRadiusMultiplier=2.0000000 + Stiffness=20.0000000 + Viscosity=6.0000000 + CollisionResponseCoefficient=0.2000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/PhysicalMaterial.uc b/exported/Engine/Classes/PhysicalMaterial.uc new file mode 100755 index 00000000..3d703a60 --- /dev/null +++ b/exported/Engine/Classes/PhysicalMaterial.uc @@ -0,0 +1,102 @@ +class PhysicalMaterial extends Object + native(Physics) + collapsecategories + hidecategories(Object); + +enum EPhysEffectType +{ + EPMET_Impact, // 0 + EPMET_Slide, // 1 + EPMET_MAX // 2 +}; + +var transient int MaterialIndex; +var() float Friction; +var() float Restitution; +var() bool bForceConeFriction; +var(Advanced) bool bEnableAnisotropicFriction; +var(Advanced) Vector AnisoFrictionDir; +var(Advanced) float FrictionV; +var() float Density; +var() float AngularDamping; +var() float LinearDamping; +var() float MagneticResponse; +var() float WindResponse; +var(Impact) float ImpactThreshold; +var(Impact) float ImpactReFireDelay; +var(Impact) ParticleSystem ImpactEffect; +var(Impact) SoundCue ImpactSound; +var(Impact) AkBaseSoundObject DeviceImpactSound; +var(Slide) float SlideThreshold; +var(Slide) float SlideReFireDelay; +var(Slide) ParticleSystem SlideEffect; +var(Slide) SoundCue SlideSound; +var(Fracture) SoundCue FractureSoundExplosion; +var(Fracture) SoundCue FractureSoundSingle; +var(Footstep) name MaterialTypeName; +var(Footstep) ParticleSystem FootstepParticleSystem; +var(Parent) PhysicalMaterial Parent; +var(PhysicalProperties) export editinline PhysicalMaterialPropertyBase PhysicalMaterialProperty; + +// Export UPhysicalMaterial::execFindPhysEffectInfo(FFrame&, void* const) +native function PhysEffectInfo FindPhysEffectInfo(PhysicalMaterial.EPhysEffectType Type); + +simulated function FindFractureSounds(out SoundCue OutSoundExplosion, out SoundCue OutSoundSingle) +{ + local PhysicalMaterial TestMat; + + OutSoundExplosion = none; + OutSoundSingle = none; + TestMat = self; + J0x21: + + // End:0xEB [Loop If] + if(((OutSoundExplosion == none) || OutSoundSingle == none) && TestMat != none) + { + // End:0x89 + if(OutSoundSingle == none) + { + OutSoundSingle = TestMat.FractureSoundSingle; + } + // End:0xC0 + if(OutSoundExplosion == none) + { + OutSoundExplosion = TestMat.FractureSoundExplosion; + } + TestMat = TestMat.Parent; + // [Loop Continue] + goto J0x21; + } + return; + //return; +} + +simulated function PhysicalMaterialPropertyBase GetPhysicalMaterialProperty(Class DesiredClass) +{ + // End:0x4B + if((PhysicalMaterialProperty != none) && ClassIsChildOf(PhysicalMaterialProperty.Class, DesiredClass)) + { + return PhysicalMaterialProperty; + } + else + { + // End:0x86 + if(Parent != none) + { + return Parent.GetPhysicalMaterialProperty(DesiredClass); + } + else + { + return none; + } + } + //return ReturnValue; +} + +defaultproperties +{ + Friction=0.7000000 + Restitution=0.3000000 + Density=1.0000000 + LinearDamping=0.0100000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/PhysicalMaterialPropertyBase.uc b/exported/Engine/Classes/PhysicalMaterialPropertyBase.uc new file mode 100755 index 00000000..6c480c21 --- /dev/null +++ b/exported/Engine/Classes/PhysicalMaterialPropertyBase.uc @@ -0,0 +1,6 @@ +class PhysicalMaterialPropertyBase extends Object + abstract + native(Physics) + editinlinenew + collapsecategories + hidecategories(Object); diff --git a/exported/Engine/Classes/PhysicsAsset.uc b/exported/Engine/Classes/PhysicsAsset.uc new file mode 100755 index 00000000..1796eff4 --- /dev/null +++ b/exported/Engine/Classes/PhysicsAsset.uc @@ -0,0 +1,12 @@ +class PhysicsAsset extends Object + native(Physics) + hidecategories(Object); + +var const export editinline array BodySetup; +var native const Map_Mirror BodySetupIndexMap; +var const array BoundsBodies; +var const export editinline array ConstraintSetup; +var const export editinline PhysicsAssetInstance DefaultInstance; + +// Export UPhysicsAsset::execFindBodyIndex(FFrame&, void* const) +native final function int FindBodyIndex(name BodyName); diff --git a/exported/Engine/Classes/PhysicsAssetInstance.uc b/exported/Engine/Classes/PhysicsAssetInstance.uc new file mode 100755 index 00000000..61253e1b --- /dev/null +++ b/exported/Engine/Classes/PhysicsAssetInstance.uc @@ -0,0 +1,79 @@ +class PhysicsAssetInstance extends Object + native(Physics) + hidecategories(Object); + +var const transient Actor Owner; +var const transient int RootBodyIndex; +var const export editinline array Bodies; +var const export editinline array Constraints; +var native const Map_Mirror CollisionDisableTable; +var const float LinearSpringScale; +var const float LinearDampingScale; +var const float LinearForceLimitScale; +var const float AngularSpringScale; +var const float AngularDampingScale; +var const float AngularForceLimitScale; +var const bool bInitBodies; +var editoronly const bool m_bPreviewBreakingConstraintsOnDeath; + +// Export UPhysicsAssetInstance::execSetLinearDriveScale(FFrame&, void* const) +native final function SetLinearDriveScale(float InLinearSpringScale, float InLinearDampingScale, float InLinearForceLimitScale); + +// Export UPhysicsAssetInstance::execSetAngularDriveScale(FFrame&, void* const) +native final function SetAngularDriveScale(float InAngularSpringScale, float InAngularDampingScale, float InAngularForceLimitScale); + +// Export UPhysicsAssetInstance::execGetTotalMassBelowBone(FFrame&, void* const) +native final function float GetTotalMassBelowBone(name InBoneName, PhysicsAsset InAsset, SkeletalMesh InSkelMesh); + +// Export UPhysicsAssetInstance::execSetAllBodiesFixed(FFrame&, void* const) +native final function SetAllBodiesFixed(bool bNewFixed); + +// Export UPhysicsAssetInstance::execSetNamedBodiesFixed(FFrame&, void* const) +native final function SetNamedBodiesFixed(bool bNewFixed, array BoneNames, SkeletalMeshComponent SkelMesh, optional bool bSetOtherBodiesToComplement, optional bool bSkipFullAnimWeightBodies); + +// Export UPhysicsAssetInstance::execForceAllBodiesBelowUnfixed(FFrame&, void* const) +native final function ForceAllBodiesBelowUnfixed(const out name InBoneName, PhysicsAsset InAsset, SkeletalMeshComponent InSkelMesh, bool InbInstanceAlwaysFullAnimWeight); + +// Export UPhysicsAssetInstance::execSetAllMotorsAngularPositionDrive(FFrame&, void* const) +native final function SetAllMotorsAngularPositionDrive(bool bEnableSwingDrive, bool bEnableTwistDrive, optional SkeletalMeshComponent SkelMesh, optional bool bSkipFullAnimWeightBodies); + +// Export UPhysicsAssetInstance::execSetAllMotorsAngularVelocityDrive(FFrame&, void* const) +native final function SetAllMotorsAngularVelocityDrive(bool bEnableSwingDrive, bool bEnableTwistDrive, SkeletalMeshComponent SkelMeshComp, optional bool bSkipFullAnimWeightBodies); + +// Export UPhysicsAssetInstance::execSetAllMotorsAngularDriveParams(FFrame&, void* const) +native final function SetAllMotorsAngularDriveParams(float InSpring, float InDamping, float InForceLimit, optional SkeletalMeshComponent SkelMesh, optional bool bSkipFullAnimWeightBodies); + +// Export UPhysicsAssetInstance::execSetNamedMotorsAngularPositionDrive(FFrame&, void* const) +native final function SetNamedMotorsAngularPositionDrive(bool bEnableSwingDrive, bool bEnableTwistDrive, array BoneNames, SkeletalMeshComponent SkelMeshComp, optional bool bSetOtherBodiesToComplement); + +// Export UPhysicsAssetInstance::execSetNamedMotorsAngularVelocityDrive(FFrame&, void* const) +native final function SetNamedMotorsAngularVelocityDrive(bool bEnableSwingDrive, bool bEnableTwistDrive, array BoneNames, SkeletalMeshComponent SkelMeshComp, optional bool bSetOtherBodiesToComplement); + +// Export UPhysicsAssetInstance::execSetNamedRBBoneSprings(FFrame&, void* const) +native final function SetNamedRBBoneSprings(bool bEnable, array BoneNames, float InBoneLinearSpring, float InBoneAngularSpring, SkeletalMeshComponent SkelMeshComp); + +// Export UPhysicsAssetInstance::execSetNamedBodiesBlockRigidBody(FFrame&, void* const) +native final function SetNamedBodiesBlockRigidBody(bool bNewBlockRigidBody, array BoneNames, SkeletalMeshComponent SkelMesh); + +// Export UPhysicsAssetInstance::execSetFullAnimWeightBlockRigidBody(FFrame&, void* const) +native final function SetFullAnimWeightBlockRigidBody(bool bNewBlockRigidBody, SkeletalMeshComponent SkelMesh); + +// Export UPhysicsAssetInstance::execSetFullAnimWeightBonesFixed(FFrame&, void* const) +native final function SetFullAnimWeightBonesFixed(bool bNewFixed, SkeletalMeshComponent SkelMesh); + +// Export UPhysicsAssetInstance::execFindBodyInstance(FFrame&, void* const) +native final function RB_BodyInstance FindBodyInstance(name BodyName, PhysicsAsset InAsset); + +// Export UPhysicsAssetInstance::execFindConstraintInstance(FFrame&, void* const) +native final function RB_ConstraintInstance FindConstraintInstance(name ConName, PhysicsAsset InAsset); + +defaultproperties +{ + LinearSpringScale=1.0000000 + LinearDampingScale=1.0000000 + LinearForceLimitScale=1.0000000 + AngularSpringScale=1.0000000 + AngularDampingScale=1.0000000 + AngularForceLimitScale=1.0000000 + bInitBodies=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/PhysicsLODVerticalEmitter.uc b/exported/Engine/Classes/PhysicsLODVerticalEmitter.uc new file mode 100755 index 00000000..43af6704 --- /dev/null +++ b/exported/Engine/Classes/PhysicsLODVerticalEmitter.uc @@ -0,0 +1,5 @@ +class PhysicsLODVerticalEmitter extends Object + native(Physics) + config(Engine); + +var native config int ParticlePercentage; diff --git a/exported/Engine/Classes/PhysicsVolume.uc b/exported/Engine/Classes/PhysicsVolume.uc new file mode 100755 index 00000000..529e7370 --- /dev/null +++ b/exported/Engine/Classes/PhysicsVolume.uc @@ -0,0 +1,297 @@ +class PhysicsVolume extends Volume + native + nativereplication + placeable + hidecategories(Navigation,Object,Movement,Display); + +struct CheckpointRecord +{ + var bool bPainCausing; + var bool bActive; + + structdefaultproperties + { + bPainCausing=false + bActive=false + } +}; + +var() interp Vector ZoneVelocity; +var() bool bVelocityAffectsWalking; +var() bool bPainCausing; +var() bool bAIShouldIgnorePain; +var() bool bEntryPain; +var bool BACKUP_bPainCausing; +var() bool bDestructive; +var() bool bNoInventory; +var() bool bMoveProjectiles; +var() bool bBounceVelocity; +var() bool bNeutralZone; +var() bool bCrowdAgentsPlayDeathAnim; +var() bool bPhysicsOnContact; +var bool bWaterVolume; +var() bool m_bIsElevating; +var() bool m_bClampPawnVelocity; +var() float GroundFriction; +var() float TerminalVelocity; +var() float DamagePerSec; +var() Class DamageType; +var() int Priority; +var() float FluidFriction; +var() float PainInterval; +var() float RigidBodyDamping; +var() float MaxDampingForce; +var Info PainTimer; +var Controller DamageInstigator; +var transient PhysicsVolume NextPhysicsVolume; +var() Vector2D m_fClampedPawnVelocity; + +// Export UPhysicsVolume::execGetGravityZ(FFrame&, void* const) +native function float GetGravityZ(); + +// Export UPhysicsVolume::execGetZoneVelocityForActor(FFrame&, void* const) +native function Vector GetZoneVelocityForActor(Actor TheActor); + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + BACKUP_bPainCausing = bPainCausing; + // End:0x35 + if(int(Role) < int(ROLE_Authority)) + { + return; + } + // End:0x65 + if(bPainCausing) + { + PainTimer = Spawn(Class'Engine.VolumeTimer', self); + } + //return; +} + +function Reset() +{ + bPainCausing = BACKUP_bPainCausing; + bForceNetUpdate = true; + //return; +} + +event PhysicsChangedFor(Actor Other) +{ + //return; +} + +event ActorEnteredVolume(Actor Other) +{ + //return; +} + +event ActorLeavingVolume(Actor Other) +{ + //return; +} + +event PawnEnteredVolume(Pawn Other) +{ + //return; +} + +event PawnLeavingVolume(Pawn Other) +{ + //return; +} + +simulated function OnToggle(SeqAct_Toggle inAction) +{ + // End:0x38 + if(!bStatic || int(RemoteRole) > int(ROLE_None)) + { + super.OnToggle(inAction); + } + // End:0x87 + if(inAction.InputLinks[0].bHasImpulse) + { + bPainCausing = BACKUP_bPainCausing; + } + else + { + // End:0xCD + if(inAction.InputLinks[1].bHasImpulse) + { + bPainCausing = false; + } + else + { + // End:0x12B + if(inAction.InputLinks[2].bHasImpulse) + { + bPainCausing = !bPainCausing && BACKUP_bPainCausing; + } + } + } + //return; +} + +simulated event CollisionChanged() +{ + //return; +} + +function TimerPop(VolumeTimer T) +{ + local Actor A; + + // End:0x9D + if(T == PainTimer) + { + // End:0x28 + if(!bPainCausing) + { + return; + } + // End:0x9C + foreach TouchingActors(Class'Engine.Actor', A) + { + // End:0x9B + if(A.bCanBeDamaged && !A.bStatic) + { + CausePainTo(A); + } + } + } + //return; +} + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + // End:0x63 + if((Other == none) || Other.bStatic) + { + return; + } + // End:0xD6 + if((bNoInventory && DroppedPickup(Other) != none) && Other.Owner == none) + { + Other.LifeSpan = 1.5000000; + return; + } + // End:0x20C + if(bMoveProjectiles && ZoneVelocity != vect(0.0000000, 0.0000000, 0.0000000)) + { + // End:0x155 + if(int(Other.Physics) == int(6)) + { + Other.Velocity += ZoneVelocity; + } + else + { + // End:0x20C + if(((Other.Base == none) && Other.IsA('Emitter')) && int(Other.Physics) == int(0)) + { + Other.SetPhysics(6); + Other.Velocity += ZoneVelocity; + } + } + } + // End:0x2A1 + if(bPainCausing) + { + // End:0x25D + if(Other.bDestroyInPainVolume) + { + Other.VolumeBasedDestroy(self); + return; + } + // End:0x2A1 + if(bEntryPain && Other.bCanBeDamaged) + { + CausePainTo(Other); + } + } + //return; +} + +function CausePainTo(Actor Other) +{ + // End:0xEA + if(DamagePerSec > float(0)) + { + // End:0x60 + if(WorldInfo.bSoftKillZ && int(Other.Physics) != int(1)) + { + return; + } + // End:0x88 + if((DamageType == none) || DamageType == Class'Engine.DamageType') + { + } + Other.TakeDamage(int(DamagePerSec * PainInterval), DamageInstigator, Location, vect(0.0000000, 0.0000000, 1.0000000), DamageType,, self); + } + else + { + Other.HealDamage(int(-DamagePerSec * PainInterval), DamageInstigator, DamageType); + } + //return; +} + +function ModifyPlayer(Pawn PlayerPawn) +{ + //return; +} + +function NotifyPawnBecameViewTarget(Pawn P, PlayerController PC) +{ + //return; +} + +function OnSetDamageInstigator(SeqAct_SetDamageInstigator Action) +{ + DamageInstigator = Action.GetController(Action.DamageInstigator); + //return; +} + +function bool ShouldSaveForCheckpoint() +{ + return bPainCausing != BACKUP_bPainCausing; + //return ReturnValue; +} + +function CreateCheckpointRecord(out CheckpointRecord Record) +{ + Record.bPainCausing = bPainCausing; + //return; +} + +function ApplyCheckpointRecord(const out CheckpointRecord Record) +{ + bPainCausing = Record.bPainCausing; + //return; +} + +defaultproperties +{ + bVelocityAffectsWalking=true + bEntryPain=true + GroundFriction=8.0000000 + TerminalVelocity=4000.0000000 + DamageType=Class'Engine.DamageType' + FluidFriction=0.3000000 + PainInterval=1.0000000 + MaxDampingForce=1000000.0000000 + // Reference: BrushComponent'Engine.Default__PhysicsVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + BlockZeroExtent=true + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bAlwaysRelevant=true + bOnlyDirtyReplication=true + bForceAllowKismetModification=true + NetUpdateFrequency=0.1000000 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/PickupFactory.uc b/exported/Engine/Classes/PickupFactory.uc new file mode 100755 index 00000000..d8bf2f6b --- /dev/null +++ b/exported/Engine/Classes/PickupFactory.uc @@ -0,0 +1,509 @@ +class PickupFactory extends NavigationPoint + abstract + native + nativereplication + placeable + hidecategories(Navigation,Lighting,LightColor,Force) + classgroup(Pickups); + +var bool bOnlyReplicateHidden; +var repnotify bool bPickupHidden; +var bool bPredictRespawns; +var bool bIsSuperItem; +var bool bRespawnPaused; +var repnotify Class InventoryType; +var float RespawnEffectTime; +var float MaxDesireability; +var export editinline PrimitiveComponent PickupMesh; +var PickupFactory ReplacementFactory; +var PickupFactory OriginalFactory; + +replication +{ + // Pos:0x000 + if(bNetDirty && int(Role) == int(ROLE_Authority)) + bPickupHidden; + + // Pos:0x020 + if(bNetInitial && int(Role) == int(ROLE_Authority)) + InventoryType; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x3E + if(VarName == 'bPickupHidden') + { + // End:0x31 + if(bPickupHidden) + { + SetPickupHidden(); + } + else + { + SetPickupVisible(); + } + } + else + { + // End:0x5F + if(VarName == 'InventoryType') + { + InitializePickup(); + } + } + //return; +} + +simulated event PreBeginPlay() +{ + InitializePickup(); + super(Actor).PreBeginPlay(); + //return; +} + +simulated function InitializePickup() +{ + // End:0x11 + if(InventoryType == none) + { + return; + } + bPredictRespawns = InventoryType.default.bPredictRespawns; + MaxDesireability = InventoryType.default.MaxDesireability; + SetPickupMesh(); + bIsSuperItem = InventoryType.default.bDelayedSpawn; + //return; +} + +simulated event SetInitialState() +{ + bScriptInitialized = true; + // End:0x2C + if(InventoryType == none) + { + GotoState('Disabled'); + } + else + { + // End:0x4A + if(bIsSuperItem) + { + GotoState('WaitingForMatch'); + } + else + { + super(Actor).SetInitialState(); + } + } + //return; +} + +simulated function ShutDown() +{ + GotoState('Disabled'); + //return; +} + +simulated function SetPickupMesh() +{ + // End:0xE7 + if(InventoryType.default.PickupFactoryMesh != none) + { + // End:0x51 + if(PickupMesh != none) + { + DetachComponent(PickupMesh); + PickupMesh = none; + } + PickupMesh = new (self) InventoryType.default.PickupFactoryMesh.Class (InventoryType.default.PickupFactoryMesh); + AttachComponent(PickupMesh); + // End:0xDD + if(bPickupHidden) + { + SetPickupHidden(); + } + else + { + SetPickupVisible(); + } + } + //return; +} + +function Reset() +{ + // End:0x1E + if(bIsSuperItem) + { + GotoState('Sleeping'); + } + else + { + GotoState('Pickup'); + } + super(Actor).Reset(); + //return; +} + +function bool CheckForErrors() +{ + local Actor HitActor; + local Vector HitLocation, HitNormal; + + HitActor = Trace(HitLocation, HitNormal, Location - vect(0.0000000, 0.0000000, 10.0000000), Location, false); + // End:0x55 + if(HitActor == none) + { + return true; + } + return super(Actor).CheckForErrors(); + //return ReturnValue; +} + +function SetRespawn() +{ + // End:0x6D + if((InventoryType.default.RespawnTime != float(0)) && WorldInfo.Game.ShouldRespawn(self)) + { + StartSleeping(); + } + else + { + GotoState('Disabled'); + } + //return; +} + +function StartSleeping() +{ + GotoState('Sleeping'); + //return; +} + +event float DetourWeight(Pawn Other, float PathWeight) +{ + return ((ReplacementFactory != none) ? ReplacementFactory.DetourWeight(Other, PathWeight) : 0.0000000); + //return ReturnValue; +} + +function SpawnCopyFor(Pawn Recipient) +{ + local Inventory Inv; + + Inv = Spawn(InventoryType); + // End:0x82 + if(Inv != none) + { + Inv.GiveTo(Recipient); + Inv.AnnouncePickup(Recipient); + } + //return; +} + +function bool ReadyToPickup(float MaxWait) +{ + return false; + //return ReturnValue; +} + +function GiveTo(Pawn P) +{ + SpawnCopyFor(P); + PickedUpBy(P); + //return; +} + +function PickedUpBy(Pawn P) +{ + SetRespawn(); + TriggerEventClass(Class'Engine.SeqEvent_PickupStatusChange', P, 1); + // End:0xE1 + if((P.Controller != none) && P.Controller.MoveTarget == self) + { + P.SetAnchor(self); + P.Controller.MoveTimer = -1.0000000; + } + //return; +} + +function RecheckValidTouch() +{ + //return; +} + +function float GetRespawnTime() +{ + return InventoryType.default.RespawnTime; + //return ReturnValue; +} + +function RespawnEffect() +{ + //return; +} + +simulated function SetPickupHidden() +{ + bForceNetUpdate = true; + bPickupHidden = true; + // End:0x47 + if(PickupMesh != none) + { + PickupMesh.SetHidden(true); + } + //return; +} + +simulated function SetPickupVisible() +{ + bForceNetUpdate = true; + bPickupHidden = false; + // End:0x47 + if(PickupMesh != none) + { + PickupMesh.SetHidden(false); + } + //return; +} + +event Destroyed() +{ + // End:0x37 + if(OriginalFactory != none) + { + OriginalFactory.ReplacementFactory = ReplacementFactory; + } + // End:0x6E + if(ReplacementFactory != none) + { + ReplacementFactory.OriginalFactory = OriginalFactory; + } + //return; +} + +function bool DelayRespawn() +{ + return false; + //return ReturnValue; +} + +auto state Pickup +{ + event float DetourWeight(Pawn Other, float PathWeight) + { + return InventoryType.static.DetourWeight(Other, PathWeight); + //return ReturnValue; + } + + function bool ReadyToPickup(float MaxWait) + { + return true; + //return ReturnValue; + } + + function bool ValidTouch(Pawn Other) + { + // End:0x3A + if((Other == none) || !Other.bCanPickupInventory) + { + return false; + } + else + { + // End:0x76 + if(Other.Controller == none) + { + SetTimer(0.2000000, false, 'RecheckValidTouch'); + return false; + } + else + { + // End:0xBC + if(!FastTrace(Other.Location, Location)) + { + SetTimer(0.5000000, false, 'RecheckValidTouch'); + return false; + } + } + } + // End:0x108 + if(WorldInfo.Game.PickupQuery(Other, InventoryType, self)) + { + return true; + } + return false; + //return ReturnValue; + } + + function RecheckValidTouch() + { + CheckTouching(); + //return; + } + + event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) + { + local Pawn P; + + P = Pawn(Other); + // End:0x56 + if((P != none) && ValidTouch(P)) + { + GiveTo(P); + } + //return; + } + + function CheckTouching() + { + local Pawn P; + + // End:0x61 + foreach TouchingActors(Class'Engine.Pawn', P) + { + Touch(P, none, Location, Normal(Location - P.Location)); + } + //return; + } + + event BeginState(name PreviousStateName) + { + TriggerEventClass(Class'Engine.SeqEvent_PickupStatusChange', none, 0); + //return; + } +Begin: + + CheckTouching(); + stop; +} + +state WaitingForMatch +{ + ignores Touch; + + function MatchStarting() + { + GotoState('Sleeping'); + //return; + } + + event BeginState(name PreviousStateName) + { + SetPickupHidden(); + //return; + } + stop; +} + +state Sleeping +{ + ignores StartSleeping, Touch; + + function bool ReadyToPickup(float MaxWait) + { + return ((bPredictRespawns && !bRespawnPaused) && LatentFloat <= MaxWait) && LatentFloat > 0.0000000; + //return ReturnValue; + } + + event BeginState(name PreviousStateName) + { + SetPickupHidden(); + //return; + } + + event EndState(name NextStateName) + { + SetPickupVisible(); + //return; + } +Begin: + + bRespawnPaused = true; + J0x0C: + + // End:0x24 [Loop If] + if(DelayRespawn()) + { + Sleep(1.0000000); + // [Loop Continue] + goto J0x0C; + } + bRespawnPaused = false; + Sleep((GetRespawnTime()) - RespawnEffectTime); +Respawn: + + + RespawnEffect(); + Sleep(RespawnEffectTime); + GotoState('Pickup'); + stop; +} + +state Disabled +{ + ignores StartSleeping, Reset; + + function bool ReadyToPickup(float MaxWait) + { + return false; + //return ReturnValue; + } + + simulated event SetInitialState() + { + bScriptInitialized = true; + //return; + } + + simulated event BeginState(name PreviousStateName) + { + SetPickupHidden(); + SetCollision(false, false); + //return; + } + + simulated event EndState(name NextStateName) + { + SetPickupVisible(); + //return; + } + stop; +} + +defaultproperties +{ + bOnlyReplicateHidden=true + // Reference: CylinderComponent'Engine.Default__PickupFactory.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + CollisionHeight=80.0000000 + CollisionRadius=40.0000000 + ReplacementPrimitive=none + CollideActors=true + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + RemoteRole=ENetRole.ROLE_SimulatedProxy + TickGroup=ETickingGroup.TG_DuringAsyncWork + bStatic=false + bIgnoreEncroachers=true + bAlwaysRelevant=true + bCollideWhenPlacing=false + bCollideActors=true + NetUpdateFrequency=1.0000000 + CollisionComponent=CollisionCylinder + SupportedEvents[0]=Class'Engine.SeqEvent_Touch' + SupportedEvents[1]=Class'Engine.SeqEvent_Destroyed' + SupportedEvents[2]=Class'Engine.SeqEvent_TakeDamage' + SupportedEvents[3]=Class'Engine.SeqEvent_HitWall' + SupportedEvents[4]=Class'Engine.SeqEvent_AnimNotify' + SupportedEvents[5]=Class'Engine.SeqEvent_MobileTouch' + SupportedEvents[6]=Class'Engine.SeqEvent_PickupStatusChange' +} \ No newline at end of file diff --git a/exported/Engine/Classes/PlatformInterfaceBase.uc b/exported/Engine/Classes/PlatformInterfaceBase.uc new file mode 100755 index 00000000..032c28a6 --- /dev/null +++ b/exported/Engine/Classes/PlatformInterfaceBase.uc @@ -0,0 +1,128 @@ +class PlatformInterfaceBase extends Object + transient + native(PlatformInterface); + +enum EPlatformInterfaceDataType +{ + PIDT_None, // 0 + PIDT_Int, // 1 + PIDT_Float, // 2 + PIDT_String, // 3 + PIDT_Object, // 4 + PIDT_Custom, // 5 + PIDT_MAX // 6 +}; + +struct native PlatformInterfaceData +{ + var name DataName; + var PlatformInterfaceBase.EPlatformInterfaceDataType Type; + var int IntValue; + var float FloatValue; + var init string StringValue; + var init string StringValue2; + var Object ObjectValue; + + structdefaultproperties + { + DataName="None" + Type=EPlatformInterfaceDataType.PIDT_None + IntValue=0 + FloatValue=0.0000000 + StringValue="" + StringValue2="" + ObjectValue=none + } +}; + +struct native PlatformInterfaceDelegateResult +{ + var bool bSuccessful; + var PlatformInterfaceData Data; + + structdefaultproperties + { + bSuccessful=false + Data=(DataName="None",Type=EPlatformInterfaceDataType.PIDT_None,IntValue=0,FloatValue=0.0000000,StringValue="",StringValue2="",ObjectValue=none) + } +}; + +struct native DelegateArray +{ + var array< delegate > Delegates; + + structdefaultproperties + { + Delegates=none + } +}; + +var array AllDelegates; +//var delegate __PlatformInterfaceDelegate__Delegate; + +delegate PlatformInterfaceDelegate(const out PlatformInterfaceDelegateResult Result) +{ + //return; +} + +// Export UPlatformInterfaceBase::execCallDelegates(FFrame&, void* const) +native function CallDelegates(int DelegateType, out PlatformInterfaceDelegateResult DelegateResult); + +// Export UPlatformInterfaceBase::execGetCloudStorageInterface(FFrame&, void* const) +native static function CloudStorageBase GetCloudStorageInterface(); + +// Export UPlatformInterfaceBase::execGetLocalStorageInterface(FFrame&, void* const) +native static function CloudStorageBase GetLocalStorageInterface(); + +// Export UPlatformInterfaceBase::execGetFacebookIntegration(FFrame&, void* const) +native static function FacebookIntegration GetFacebookIntegration(); + +// Export UPlatformInterfaceBase::execGetInGameAdManager(FFrame&, void* const) +native static function InGameAdManager GetInGameAdManager(); + +// Export UPlatformInterfaceBase::execGetMicroTransactionInterface(FFrame&, void* const) +native static function MicroTransactionBase GetMicroTransactionInterface(); + +// Export UPlatformInterfaceBase::execGetAnalyticEventsInterface(FFrame&, void* const) +native static function AnalyticEventsBase GetAnalyticEventsInterface(); + +// Export UPlatformInterfaceBase::execGetTwitterIntegration(FFrame&, void* const) +native static function TwitterIntegrationBase GetTwitterIntegration(); + +// Export UPlatformInterfaceBase::execGetAppNotificationsInterface(FFrame&, void* const) +native static function AppNotificationsBase GetAppNotificationsInterface(); + +// Export UPlatformInterfaceBase::execGetInAppMessageInterface(FFrame&, void* const) +native static function InAppMessageBase GetInAppMessageInterface(); + +function AddDelegate(int DelegateType, delegate InDelegate) +{ + // End:0x32 + if(AllDelegates.Length < (DelegateType + 1)) + { + AllDelegates.Length = DelegateType + 1; + } + // End:0xA2 + if(AllDelegates[DelegateType].Delegates.Find(InDelegate) == -1) + { + AllDelegates[DelegateType].Delegates.AddItem(InDelegate); + } + //return; +} + +function ClearDelegate(int DelegateType, delegate InDelegate) +{ + local int RemoveIndex; + + // End:0x9A + if(DelegateType < AllDelegates.Length) + { + RemoveIndex = AllDelegates[DelegateType].Delegates.Find(InDelegate); + // End:0x9A + if(RemoveIndex != -1) + { + AllDelegates[DelegateType].Delegates.Remove(RemoveIndex, 1); + } + } + //return; +} diff --git a/exported/Engine/Classes/PlatformInterfaceWebResponse.uc b/exported/Engine/Classes/PlatformInterfaceWebResponse.uc new file mode 100755 index 00000000..bcc35d0a --- /dev/null +++ b/exported/Engine/Classes/PlatformInterfaceWebResponse.uc @@ -0,0 +1,19 @@ +class PlatformInterfaceWebResponse extends Object + transient + native(PlatformInterface); + +var string OriginalURL; +var int ResponseCode; +var int Tag; +var native Map_Mirror Headers; +var string StringResponse; +var array BinaryResponse; + +// Export UPlatformInterfaceWebResponse::execGetNumHeaders(FFrame&, void* const) +native function int GetNumHeaders(); + +// Export UPlatformInterfaceWebResponse::execGetHeader(FFrame&, void* const) +native function GetHeader(int HeaderIndex, out string Header, out string Value); + +// Export UPlatformInterfaceWebResponse::execGetHeaderValue(FFrame&, void* const) +native function string GetHeaderValue(string HeaderName); diff --git a/exported/Engine/Classes/Player.uc b/exported/Engine/Classes/Player.uc new file mode 100755 index 00000000..9140f63a --- /dev/null +++ b/exported/Engine/Classes/Player.uc @@ -0,0 +1,27 @@ +class Player extends Object + transient + native + config(Engine); + +var private native const noexport Pointer VfTable_FExec; +var const transient PlayerController Actor; +var const int CurrentNetSpeed; +var globalconfig int ConfiguredInternetSpeed; +var globalconfig int ConfiguredLanSpeed; +var config float PP_DesaturationMultiplier; +var config float PP_HighlightsMultiplier; +var config float PP_MidTonesMultiplier; +var config float PP_ShadowsMultiplier; + +// Export UPlayer::execSwitchController(FFrame&, void* const) +native function SwitchController(PlayerController PC); + +defaultproperties +{ + ConfiguredInternetSpeed=48000 + ConfiguredLanSpeed=50000 + PP_DesaturationMultiplier=1.0000000 + PP_HighlightsMultiplier=1.0000000 + PP_MidTonesMultiplier=1.0000000 + PP_ShadowsMultiplier=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/PlayerController.uc b/exported/Engine/Classes/PlayerController.uc new file mode 100755 index 00000000..0f03c61f --- /dev/null +++ b/exported/Engine/Classes/PlayerController.uc @@ -0,0 +1,7947 @@ +class PlayerController extends Controller + native(Controller) + nativereplication + config(Game) + notplaceable + hidecategories(Navigation); + +const MAXPOSITIONERRORSQUARED = 3.0; +const MAXNEARZEROVELOCITYSQUARED = 9.0; +const MAXVEHICLEPOSITIONERRORSQUARED = 900.0; +const CLIENTADJUSTUPDATECOST = 180.0; +const MAXCLIENTUPDATEINTERVAL = 0.25; + +enum EInputTypes +{ + IT_XAxis, // 0 + IT_YAxis, // 1 + IT_MAX // 2 +}; + +enum EInputMatchAction +{ + IMA_GreaterThan, // 0 + IMA_LessThan, // 1 + IMA_MAX // 2 +}; + +enum EProgressMessageType +{ + PMT_Clear, // 0 + PMT_Information, // 1 + PMT_AdminMessage, // 2 + PMT_DownloadProgress, // 3 + PMT_ConnectionFailure, // 4 + PMT_PeerConnectionFailure, // 5 + PMT_PeerHostMigrationFailure, // 6 + PMT_SocketFailure, // 7 + PMT_MAX // 8 +}; + +struct native ClientAdjustment +{ + var float TimeStamp; + var Actor.EPhysics newPhysics; + var Vector NewLoc; + var Vector NewVel; + var Actor NewBase; + var Vector NewFloor; + var byte bAckGoodMove; + + structdefaultproperties + { + TimeStamp=0.0000000 + newPhysics=EPhysics.PHYS_None + NewLoc=(X=0.0000000,Y=0.0000000,Z=0.0000000) + NewVel=(X=0.0000000,Y=0.0000000,Z=0.0000000) + NewBase=none + NewFloor=(X=0.0000000,Y=0.0000000,Z=0.0000000) + bAckGoodMove=0 + } +}; + +struct native ConnectedPeerInfo +{ + var UniqueNetId PlayerID; + var OnlineSubsystem.ENATType NatType; + var bool bLostConnectionToHost; + + structdefaultproperties + { + PlayerID=(Uid=()) + NatType=ENATType.NAT_Unknown + bLostConnectionToHost=false + } +}; + +struct native InputEntry +{ + var PlayerController.EInputTypes Type; + var float Value; + var float TimeDelta; + var PlayerController.EInputMatchAction Action; + + structdefaultproperties + { + Type=EInputTypes.IT_XAxis + Value=0.0000000 + TimeDelta=0.0000000 + Action=EInputMatchAction.IMA_GreaterThan + } +}; + +struct native InputMatchRequest +{ + var array Inputs; + var Actor MatchActor; + var name MatchFuncName; + var delegate MatchDelegate; + var name FailedFuncName; + var name RequestName; + var transient int MatchIdx; + var transient float LastMatchTime; + + structdefaultproperties + { + Inputs=none + MatchActor=none + MatchFuncName="None" + MatchDelegate=None + FailedFuncName="None" + RequestName="None" + MatchIdx=0 + LastMatchTime=0.0000000 + } +}; + +struct native DebugTextInfo +{ + var Actor SrcActor; + var Vector SrcActorOffset; + var Vector SrcActorDesiredOffset; + var string DebugText; + var transient float TimeRemaining; + var float Duration; + var Color TextColor; + var bool bAbsoluteLocation; + var bool bKeepAttachedToActor; + var Vector OrigActorLocation; + var Font Font; + + structdefaultproperties + { + SrcActor=none + SrcActorOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000) + SrcActorDesiredOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000) + DebugText="" + TimeRemaining=0.0000000 + Duration=0.0000000 + TextColor=(R=0,G=0,B=0,A=0) + bAbsoluteLocation=false + bKeepAttachedToActor=false + OrigActorLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Font=none + } +}; + +var const Player Player; +var(Camera) editinline Camera PlayerCamera; +var const Class CameraClass; +var bool bFrozen; +var bool bPressedJump; +var bool bDoubleJump; +var bool bUpdatePosition; +var bool bUpdating; +var globalconfig bool bNeverSwitchOnPickup; +var bool bCheatFlying; +var bool bCameraPositionLocked; +var bool bShortConnectTimeOut; +var const bool bPendingDestroy; +var bool bWasSpeedHack; +var const bool bWasSaturated; +var globalconfig bool bAimingHelp; +var transient bool bCameraCut; +var bool bClientSimulatingViewTarget; +var bool bHasVoiceHandshakeCompleted; +var bool bCanPlayOnline; +var bool bCanShareUserCreatedContent; +var bool bCanCommunicateVoice; +var bool bPrivilegesInitialized; +var bool bCinematicMode; +var bool bInteractiveMode; +var bool bCinemaDisableInputMove; +var bool bCinemaDisableInputLook; +var bool bRenderHUDFullScreen; +var bool bIgnoreNetworkMessages; +var config bool bShowKismetDrawText; +var bool bAcceptSendCorrections; +var bool bReplicateAllPawns; +var bool bIsUsingStreamingVolumes; +var bool bIsExternalUIOpen; +var bool bIsControllerConnected; +var bool bCheckSoundOcclusion; +var bool bDebugCameraAnims; +var bool bBlockCameraAnimsFromOverridingPostProcess; +var globalconfig bool bLogHearSoundOverflow; +var bool bShowMoveErrors; +var globalconfig bool bCheckRelevancyThroughPortals; +var(Debug) bool bDebugClientAdjustPosition; +var const transient bool bIsInTimelapse; +var const transient bool bIsTimelapsePlayOfTheGame; +var float MaxResponseTime; +var float WaitDelay; +var Pawn AcknowledgedPawn; +var Actor.EDoubleClickDir DoubleClickDir; +var byte bIgnoreMoveInput; +var byte bIgnoreLookInput; +var input byte bRun; +var input byte bDuck; +var duplicatetransient const byte NetPlayerIndex; +var const Actor ViewTarget; +var PlayerReplicationInfo RealViewTarget; +var transient InterpTrackInstDirector ControllingDirTrackInst; +var float FOVAngle; +var float DesiredFOV; +var float DefaultFOV; +var const float LODDistanceFactor; +var Rotator TargetViewRotation; +var float TargetEyeHeight; +var Rotator BlendedTargetViewRotation; +var HUD myHUD; +var HUD mySecondaryHUD; +var Class SavedMoveClass; +var SavedMove SavedMoves; +var SavedMove FreeMoves; +var SavedMove PendingMove; +var Vector LastAckedAccel; +var float CurrentTimeStamp; +var float LastUpdateTime; +var float ServerTimeStamp; +var float TimeMargin; +var float ClientUpdateTime; +var float MaxTimeMargin; +var float LastActiveTime; +var int ClientCap; +var deprecated float DynamicPingThreshold; +var float LastPingUpdate; +var float LastSpeedHackLog; +var ClientAdjustment PendingAdjustment; +var int GroundPitch; +var transient CheatManager CheatManager; +var Class CheatClass; +var() editinline transient PlayerInput PlayerInput; +var Class InputClass; +var const Vector FailedPathStart; +var export editinline CylinderComponent CylinderComponent; +var config string ForceFeedbackManagerClassName; +var transient ForceFeedbackManager ForceFeedbackManager; +var transient array Interactions; +var array VoiceMuteList; +var array GameplayVoiceMuteList; +var array VoicePacketFilter; +var array ConnectedPeers; +var array BestNextHostPeers; +var OnlineGameSearch MigratedSearchToJoin; +var OnlineSubsystem OnlineSub; +var OnlineVoiceInterface VoiceInterface; +var UIDataStore_OnlinePlayerData OnlinePlayerData; +var config float InteractDistance; +var name DelayedJoinSessionName; +var array InputRequests; +var float LastBroadcastTime; +var string LastBroadcastString[4]; +var array PendingMapChangeLevelNames; +var CoverReplicator MyCoverReplicator; +var private array DebugTextList; +var float SpectatorCameraSpeed; +var duplicatetransient const NetConnection PendingSwapConnection; +var float MinRespawnDelay; +var globalconfig int MaxConcurrentHearSounds; +var export editinline array HearSoundActiveComponents; +var export editinline array HearSoundPoolComponents; +var array HiddenActors; +var float m_RigidBodyMaxPositionErrorThreshold; +var float LastSpectatorStateSynchTime; +var Color CurrentUpdateDebugColor; +//var delegate __OnMissingPeersUnregistered__Delegate; +//var delegate __CanUnpause__Delegate; +//var delegate __InputMatchDelegate__Delegate; + +replication +{ + // Pos:0x000 + if(((bNetOwner && int(Role) == int(ROLE_Authority)) && ViewTarget != Pawn) && Pawn(ViewTarget) != none) + TargetEyeHeight, TargetViewRotation; +} + +// Export UPlayerController::execSetNetSpeed(FFrame&, void* const) +native final function SetNetSpeed(int NewSpeed); + +// Export UPlayerController::execGetPlayerNetworkAddress(FFrame&, void* const) +native final function string GetPlayerNetworkAddress(); + +// Export UPlayerController::execGetServerNetworkAddress(FFrame&, void* const) +native final function string GetServerNetworkAddress(); + +// Export UPlayerController::execConsoleCommand(FFrame&, void* const) +native function string ConsoleCommand(string Command, optional bool bWriteToLog = true); + +// Export UPlayerController::execClientTravel(FFrame&, void* const) +reliable client native simulated event ClientTravel(string URL, Actor.ETravelType TravelType, optional bool bSeamless = false, init optional Guid MapPackageGuid); + +// Export UPlayerController::execUpdateURL(FFrame&, void* const) +native(546) final function UpdateURL(string NewOption, string NewValue, bool bSave1Default); + +// Export UPlayerController::execGetDefaultURL(FFrame&, void* const) +native final function string GetDefaultURL(string Option); + +// Export UPlayerController::execCopyToClipboard(FFrame&, void* const) +native function CopyToClipboard(string Text); + +// Export UPlayerController::execPasteFromClipboard(FFrame&, void* const) +native function string PasteFromClipboard(); + +// Export UPlayerController::execSetAllowMatureLanguage(FFrame&, void* const) +native function SetAllowMatureLanguage(bool bAllowMatureLanguge); + +// Export UPlayerController::execSetAudioGroupVolume(FFrame&, void* const) +native exec function SetAudioGroupVolume(name GroupName, float Volume); + +// Export UPlayerController::execClientConvolve(FFrame&, void* const) +private reliable client native final simulated event ClientConvolve(string C, int H); + +// Export UPlayerController::execServerProcessConvolve(FFrame&, void* const) +private reliable server native final event ServerProcessConvolve(string C, int H); + +// Export UPlayerController::execCheckSpeedHack(FFrame&, void* const) +native final function bool CheckSpeedHack(float DeltaTime); + +// Export UPlayerController::execFindStairRotation(FFrame&, void* const) +native(524) final function int FindStairRotation(float DeltaTime); + +// Export UPlayerController::execCleanUpAudioComponents(FFrame&, void* const) +native function CleanUpAudioComponents(); + +simulated event FellOutOfWorld(Class dmgType) +{ + //return; +} + +unreliable client simulated function EnableActorHeadTracking(Actor TargetActor, name TrackControllerName[10], Class ActorClassesToLookAt[10], bool bLookAtPawns, float MinLookAtTime, float MaxLookAtTime, float MaxInterestTime, float LookAtActorRadius, name TargetBoneNames[10]) +{ + //return; +} + +unreliable client simulated function DisableActorHeadTracking(Actor TargetActor) +{ + //return; +} + +function ForceClearUnpauseDelegates() +{ + // End:0x59 + if(WorldInfo.Game != none) + { + WorldInfo.Game.super(PlayerController).ForceClearUnpauseDelegates(self); + } + //return; +} + +event CheckPrivileges() +{ + local LocalPlayer LP; + local int PlayerIdx; + local OnlineSubsystem.EFeaturePrivilegeLevel HintPrivLevel; + + LP = LocalPlayer(Player); + bPrivilegesInitialized = true; + // End:0x230 + if(((LP != none) && OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + PlayerIdx = LP.ControllerId; + // End:0xFA + if(!OnlineSub.PlayerInterface.CanPlayOnline(byte(PlayerIdx), HintPrivLevel)) + { + } + else + { + // End:0x11D + if(int(HintPrivLevel) == int(0)) + { + bCanPlayOnline = false; + } + else + { + bCanPlayOnline = true; + } + } + // End:0x17C + if(!OnlineSub.PlayerInterface.CanShareUserCreatedContent(byte(PlayerIdx), HintPrivLevel)) + { + } + else + { + // End:0x19F + if(int(HintPrivLevel) == int(0)) + { + bCanShareUserCreatedContent = false; + } + else + { + bCanShareUserCreatedContent = true; + } + } + // End:0x1FE + if(!OnlineSub.PlayerInterface.CanCommunicateVoice(byte(PlayerIdx), HintPrivLevel)) + { + } + else + { + // End:0x221 + if(int(HintPrivLevel) == int(0)) + { + bCanCommunicateVoice = false; + } + else + { + bCanCommunicateVoice = true; + } + } + } + //return; +} + +function OnPrivilegeLevelChecked(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevel, bool bDiffersFromHint) +{ + // End:0x88 + if(int(Privilege) == int(0)) + { + // End:0x37 + if(int(PrivilegeLevel) == int(0)) + { + bCanPlayOnline = false; + } + else + { + bCanPlayOnline = true; + } + // End:0x85 + if(bCanPlayOnline) + { + OnlineSub.PlayerInterface.CheckForGameInviteOnLaunch(); + } + } + else + { + // End:0xCE + if(int(Privilege) == int(4)) + { + // End:0xBF + if(int(PrivilegeLevel) == int(0)) + { + bCanShareUserCreatedContent = false; + } + else + { + bCanShareUserCreatedContent = true; + } + } + else + { + // End:0x111 + if(int(Privilege) == int(3)) + { + // End:0x105 + if(int(PrivilegeLevel) == int(0)) + { + bCanCommunicateVoice = false; + } + else + { + bCanCommunicateVoice = true; + } + } + } + } + //return; +} + +function OnExternalUIChanged(bool bIsOpening) +{ + bIsExternalUIOpen = bIsOpening; + SetPause(bIsOpening, CanUnpauseExternalUI); + //return; +} + +function bool CanUnpauseExternalUI() +{ + return ((!bIsExternalUIOpen || bPendingDelete) || bPendingDestroy) || bDeleteMe; + //return ReturnValue; +} + +function OnControllerChanged(int ControllerId, bool bIsConnected, bool bPauseGame) +{ + local LocalPlayer LP; + + LP = LocalPlayer(Player); + // End:0x11B + if((((LP != none) && LP.ControllerId == ControllerId) && WorldInfo.IsConsoleBuild()) && (WorldInfo.Game == none) || !WorldInfo.Game.IsAutomatedPerfTesting()) + { + bIsControllerConnected = bIsConnected; + SetPause(!bIsConnected, CanUnpauseControllerConnected); + } + //return; +} + +simulated event ControllerChangedPause() +{ + SetPause(true, CanUnpauseControllerConnected); + //return; +} + +simulated event ControllerChangedUnpause() +{ + SetPause(false, CanUnpauseControllerConnected); + //return; +} + +function bool CanUnpauseControllerConnected() +{ + return bIsControllerConnected; + //return ReturnValue; +} + +function CoverReplicator SpawnCoverReplicator() +{ + // End:0x81 + if(((MyCoverReplicator == none) && int(Role) == int(ROLE_Authority)) && LocalPlayer(Player) == none) + { + MyCoverReplicator = Spawn(Class'Engine.CoverReplicator', self); + MyCoverReplicator.ReplicateInitialCoverInfo(); + } + return MyCoverReplicator; + //return ReturnValue; +} + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + ResetCameraMode(); + MaxTimeMargin = Class'Engine.GameInfo'.default.MaxTimeMargin; + MaxResponseTime = default.MaxResponseTime * WorldInfo.TimeDilation; + // End:0xA2 + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + SpawnDefaultHUD(); + } + AddCheats(); + SetViewTarget(self); + LastActiveTime = WorldInfo.TimeSeconds; + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x13C + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + InitNavigationHandle(); + } + //return; +} + +simulated event ReceivedPlayer() +{ + RegisterPlayerDataStores(); + //return; +} + +final function int FindConnectedPeerIndex(UniqueNetId PeerNetId) +{ + local int PeerIdx; + + PeerIdx = 0; + J0x0B: + + // End:0x76 [Loop If] + if(PeerIdx < ConnectedPeers.Length) + { + // End:0x68 + if(PeerNetId == ConnectedPeers[PeerIdx].PlayerID) + { + return PeerIdx; + } + PeerIdx++; + // [Loop Continue] + goto J0x0B; + } + return -1; + //return ReturnValue; +} + +event AddPeer(UniqueNetId PeerNetId, OnlineSubsystem.ENATType NatType) +{ + local UniqueNetId ZeroId; + local ConnectedPeerInfo NewPeerInfo; + + // End:0xCD + if(PeerNetId != ZeroId) + { + ServerAddPeer(PeerNetId, NatType); + // End:0xCD + if(int(Role) < int(ROLE_Authority)) + { + // End:0xCD + if(FindConnectedPeerIndex(PeerNetId) == -1) + { + NewPeerInfo.PlayerID = PeerNetId; + NewPeerInfo.NatType = NatType; + ConnectedPeers.AddItem(NewPeerInfo); + } + } + } + //return; +} + +event RemovePeer(UniqueNetId PeerNetId) +{ + local UniqueNetId ZeroId; + local int PeerIdx; + + // End:0x8A + if(PeerNetId != ZeroId) + { + ServerRemovePeer(PeerNetId); + // End:0x8A + if(int(Role) < int(ROLE_Authority)) + { + PeerIdx = FindConnectedPeerIndex(PeerNetId); + // End:0x8A + if(PeerIdx != -1) + { + ConnectedPeers.Remove(PeerIdx, 1); + } + } + } + //return; +} + +reliable server function ServerAddPeer(UniqueNetId PeerNetId, OnlineSubsystem.ENATType NatType) +{ + local UniqueNetId ZeroId; + local ConnectedPeerInfo NewPeerInfo; + + // End:0x9D + if(PeerNetId != ZeroId) + { + // End:0x9D + if(FindConnectedPeerIndex(PeerNetId) == -1) + { + NewPeerInfo.PlayerID = PeerNetId; + NewPeerInfo.NatType = NatType; + ConnectedPeers.AddItem(NewPeerInfo); + } + } + //return; +} + +reliable server function ServerRemovePeer(UniqueNetId PeerNetId) +{ + local UniqueNetId ZeroId; + local int PeerIdx; + + // End:0x63 + if(PeerNetId != ZeroId) + { + PeerIdx = FindConnectedPeerIndex(PeerNetId); + // End:0x63 + if(PeerIdx != -1) + { + ConnectedPeers.Remove(PeerIdx, 1); + } + } + //return; +} + +reliable client simulated function ClientUpdateBestNextHosts(UniqueNetId SortedNextHosts[10], byte NumEntries) +{ + local int Idx; + + BestNextHostPeers.Length = Min(int(NumEntries), 10); + Idx = 0; + J0x25: + + // End:0x72 [Loop If] + if(Idx < BestNextHostPeers.Length) + { + BestNextHostPeers[Idx] = SortedNextHosts[Idx]; + Idx++; + // [Loop Continue] + goto J0x25; + } + //return; +} + +event NotifyPeerDisconnectHost(UniqueNetId PeerNetId) +{ + local int PeerIdx; + + PeerIdx = FindConnectedPeerIndex(PeerNetId); + // End:0x59 + if(PeerIdx != -1) + { + ConnectedPeers[PeerIdx].bLostConnectionToHost = true; + } + //return; +} + +function bool IsBestHostPeer(UniqueNetId PeerNetId) +{ + local int Idx, PeerIdx; + + Idx = 0; + J0x0B: + + // End:0xC2 [Loop If] + if(Idx < BestNextHostPeers.Length) + { + // End:0x4D + if(BestNextHostPeers[Idx] == PeerNetId) + { + return true; + } + PeerIdx = FindConnectedPeerIndex(BestNextHostPeers[Idx]); + // End:0xB4 + if(PeerIdx != -1) + { + // End:0xB4 + if(ConnectedPeers[PeerIdx].bLostConnectionToHost) + { + // [Explicit Break] + goto J0xC2; + } + } + Idx++; + // [Loop Continue] + goto J0x0B; + } + J0xC2: + + return false; + //return ReturnValue; +} + +event bool MigrateNewHost() +{ + local LocalPlayer LP; + + // End:0x1DF + if(IsBestHostPeer(PlayerReplicationInfo.UniqueId)) + { + LP = LocalPlayer(Player); + // End:0x1B5 + if((((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) && OnlineSub.GameInterface.GetGameSettings(PlayerReplicationInfo.SessionName) != none) && LP != none) + { + OnlineSub.GameInterface.AddMigrateOnlineGameCompleteDelegate(OnHostMigratedOnlineGame); + OnlineSub.GameInterface.MigrateOnlineGame(byte(LP.ControllerId), PlayerReplicationInfo.SessionName); + } + else + { + PeerDesignatedAsHost(PlayerReplicationInfo.SessionName); + } + return true; + } + return false; + //return ReturnValue; +} + +simulated function NotifyHostMigrationStarted() +{ + //return; +} + +function GetRegisteredPlayersInSession(name SessionName, out array OutRegisteredPlayers) +{ + //return; +} + +delegate OnMissingPeersUnregistered(name SessionName, UniqueNetId PlayerID, bool bWasSuccessful) +{ + //return; +} + +function PlayerReplicationInfo GetPRIFromNetId(UniqueNetId PlayerID) +{ + local PlayerReplicationInfo CurrentPRI; + + // End:0x80 + foreach WorldInfo.GRI.PRIArray(CurrentPRI) + { + // End:0x7F + if(CurrentPRI.UniqueId == PlayerID) + { + return CurrentPRI; + } + } + return none; + //return ReturnValue; +} + +function bool RemoveMissingPeersFromSession(name SessionName, delegate UnregisterDelegate) +{ + local array RegisteredPlayers; + local UniqueNetId ZeroId; + local int PlayerIdx; + local PlayerReplicationInfo RegisteredPRI; + + // End:0x240 + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + GetRegisteredPlayersInSession(SessionName, RegisteredPlayers); + PlayerIdx = 0; + J0x6D: + + // End:0x1A7 [Loop If] + if(PlayerIdx < RegisteredPlayers.Length) + { + RegisteredPRI = GetPRIFromNetId(RegisteredPlayers[PlayerIdx]); + // End:0x196 + if(((RegisteredPlayers[PlayerIdx] == PlayerReplicationInfo.UniqueId || RegisteredPlayers[PlayerIdx] == ZeroId) || FindConnectedPeerIndex(RegisteredPlayers[PlayerIdx]) != -1) || !(RegisteredPRI != none) && RegisteredPRI.IsPrimaryPlayer()) + { + RegisteredPlayers.Remove(PlayerIdx, 1); + PlayerIdx--; + } + else + { + // [Explicit Break] + goto J0x1A7; + } + PlayerIdx++; + // [Loop Continue] + goto J0x6D; + } + J0x1A7: + + // End:0x240 + if(RegisteredPlayers.Length > 0) + { + OnlineSub.GameInterface.AddUnregisterPlayerCompleteDelegate(UnregisterDelegate); + OnlineSub.GameInterface.UnregisterPlayer(SessionName, RegisteredPlayers[0]); + return true; + } + } + return false; + //return ReturnValue; +} + +function OnUnregisterPlayerCompleteForHostMigrate(name SessionName, UniqueNetId PlayerID, bool bWasSuccessful) +{ + OnlineSub.GameInterface.ClearUnregisterPlayerCompleteDelegate(OnUnregisterPlayerCompleteForHostMigrate); + // End:0x82 + if(!RemoveMissingPeersFromSession(SessionName, OnUnregisterPlayerCompleteForHostMigrate)) + { + PeerDesignatedAsHost(SessionName); + } + //return; +} + +function OnHostMigratedOnlineGame(name SessionName, bool bWasSuccessful) +{ + OnlineSub.GameInterface.ClearMigrateOnlineGameCompleteDelegate(OnHostMigratedOnlineGame); + // End:0x92 + if(bWasSuccessful) + { + // End:0x8F + if(!RemoveMissingPeersFromSession(SessionName, OnUnregisterPlayerCompleteForHostMigrate)) + { + PeerDesignatedAsHost(SessionName); + } + } + else + { + ClientSetProgressMessage(6, "", "", true); + } + //return; +} + +function Class GetCurrentSearchClass() +{ + return Class'Engine.OnlineGameSearch'; + //return ReturnValue; +} + +function PeerDesignatedAsHost(name SessionName) +{ + local int PeerIdx; + local byte PlatformInfo[80]; + + // End:0x184 + if((((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) && OnlineSub.GameInterface.GetGameSettings(SessionName) != none) && OnlineSub.GameInterface.ReadPlatformSpecificSessionInfoBySessionName(SessionName, PlatformInfo)) + { + PeerIdx = 0; + J0xE3: + + // End:0x181 [Loop If] + if(PeerIdx < ConnectedPeers.Length) + { + // End:0x173 + if(ConnectedPeers[PeerIdx].bLostConnectionToHost) + { + TellPeerToTravelToSession(ConnectedPeers[PeerIdx].PlayerID, SessionName, GetCurrentSearchClass(), PlatformInfo, 80); + } + PeerIdx++; + // [Loop Continue] + goto J0xE3; + } + } + else + { + PeerIdx = 0; + J0x18F: + + // End:0x20F [Loop If] + if(PeerIdx < ConnectedPeers.Length) + { + // End:0x201 + if(ConnectedPeers[PeerIdx].bLostConnectionToHost) + { + TellPeerToTravel(ConnectedPeers[PeerIdx].PlayerID); + } + PeerIdx++; + // [Loop Continue] + goto J0x18F; + } + } + PeerTravelAsHost(0.5000000, GetNewPeerHostURL()); + //return; +} + +function string GetNewPeerHostURL() +{ + return ((WorldInfo.GetMapName(true) $ "?game=") $ PathName(WorldInfo.GetGameClass())) $ "?listen"; + //return ReturnValue; +} + +// Export UPlayerController::execPeerTravelAsHost(FFrame&, void* const) +native function PeerTravelAsHost(float TravelCountdownTimer, string URL); + +// Export UPlayerController::execTellPeerToTravel(FFrame&, void* const) +native function TellPeerToTravel(UniqueNetId ToPeerNetId); + +// Export UPlayerController::execTellPeerToTravelToSession(FFrame&, void* const) +native function TellPeerToTravelToSession(UniqueNetId ToPeerNetId, name SessionName, Class SearchClass, byte PlatformSpecificInfo[80], int PlatformSpecificInfoSize); + +event PeerReceivedMigratedSession(UniqueNetId FromPeerNetId, name SessionName, Class SearchClass, byte PlatformSpecificInfo[80]) +{ + local OnlineGameSearchResult SessionToJoin; + local LocalPlayer LP; + + LP = LocalPlayer(Player); + // End:0x24C + if(((LP != none) && OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + MigratedSearchToJoin = new SearchClass; + // End:0x1DA + if(OnlineSub.GameInterface.BindPlatformSpecificSessionToSearch(byte(LP.ControllerId), MigratedSearchToJoin, PlatformSpecificInfo)) + { + SessionToJoin = MigratedSearchToJoin.Results[0]; + MigratedSearchToJoin = none; + OnlineSub.GameInterface.AddJoinMigratedOnlineGameCompleteDelegate(OnJoinMigratedGame); + OnlineSub.GameInterface.JoinMigratedOnlineGame(byte(LP.ControllerId), SessionName, SessionToJoin); + } + else + { + MigratedSearchToJoin = none; + ClientSetProgressMessage(6, "", "", true); + } + } + //return; +} + +function OnUnregisterPlayerCompleteForJoinMigrate(name SessionName, UniqueNetId PlayerID, bool bWasSuccessful) +{ + OnlineSub.GameInterface.ClearUnregisterPlayerCompleteDelegate(OnUnregisterPlayerCompleteForJoinMigrate); + // End:0x82 + if(!RemoveMissingPeersFromSession(SessionName, OnUnregisterPlayerCompleteForJoinMigrate)) + { + PeerDesignatedAsClient(SessionName); + } + //return; +} + +function PeerDesignatedAsClient(name SessionName) +{ + local string URL; + + // End:0x64 + if(OnlineSub.GameInterface.GetResolvedConnectString(SessionName, URL)) + { + ClientTravel(URL, 0); + } + else + { + ClientSetProgressMessage(6, "", "", true); + } + //return; +} + +function OnJoinMigratedGame(name SessionName, bool bWasSuccessful) +{ + OnlineSub.GameInterface.ClearJoinMigratedOnlineGameCompleteDelegate(OnJoinMigratedGame); + // End:0x8F + if(bWasSuccessful) + { + // End:0x8F + if(!RemoveMissingPeersFromSession(SessionName, OnUnregisterPlayerCompleteForJoinMigrate)) + { + PeerDesignatedAsClient(SessionName); + } + } + // End:0x105 + if(!bWasSuccessful) + { + ClientSetProgressMessage(6, "", "", true); + } + //return; +} + +event PreRender(Canvas Canvas) +{ + //return; +} + +event ResetTimeMargin() +{ + TimeMargin = -0.1000000; + MaxTimeMargin = Class'Engine.GameInfo'.default.MaxTimeMargin; + //return; +} + +reliable server function ServerShortTimeout() +{ + local Actor A; + + // End:0x287 + if(!bShortConnectTimeOut) + { + bShortConnectTimeOut = true; + ResetTimeMargin(); + // End:0xAC + if(WorldInfo.Pauser != none) + { + // End:0xA8 + foreach AllActors(Class'Engine.Actor', A) + { + // End:0xA7 + if(!A.bOnlyRelevantToOwner) + { + A.bForceNetUpdate = true; + } + } + } + else + { + // End:0x1B8 + if(WorldInfo.Game.NumPlayers < 8) + { + // End:0x1B4 + foreach AllActors(Class'Engine.Actor', A) + { + // End:0x1B3 + if((A.NetUpdateFrequency < float(1)) && !A.bOnlyRelevantToOwner) + { + A.SetNetUpdateTime(FMin(A.NetUpdateTime, WorldInfo.RealTimeSeconds + (0.2000000 * FRand()))); + } + } + } + else + { + // End:0x286 + foreach AllActors(Class'Engine.Actor', A) + { + // End:0x285 + if((A.NetUpdateFrequency < float(1)) && !A.bOnlyRelevantToOwner) + { + A.SetNetUpdateTime(FMin(A.NetUpdateTime, WorldInfo.RealTimeSeconds + (0.5000000 * FRand()))); + } + } + } + } + } + //return; +} + +function ServerGivePawn() +{ + GivePawn(Pawn); + //return; +} + +event KickWarning() +{ + ReceiveLocalizedMessage(Class'Engine.GameMessage', 15); + //return; +} + +function AddCheats() +{ + //return; +} + +exec function EnableCheats() +{ + //return; +} + +function SpawnDefaultHUD() +{ + // End:0x1A + if(LocalPlayer(Player) == none) + { + return; + } + myHUD = Spawn(Class'Engine.HUD', self); + //return; +} + +function Reset() +{ + local Vehicle DrivenVehicle; + + DrivenVehicle = Vehicle(Pawn); + // End:0x4B + if(DrivenVehicle != none) + { + DrivenVehicle.DriverLeave(true); + } + // End:0x77 + if(Pawn != none) + { + PawnDied(Pawn); + UnPossess(); + } + super.Reset(); + SetViewTarget(self); + ResetCameraMode(); + WaitDelay = WorldInfo.TimeSeconds + float(2); + FixFOV(); + // End:0x102 + if(PlayerReplicationInfo.bOnlySpectator) + { + GotoState('Spectating'); + } + else + { + GotoState('PlayerWaiting'); + } + //return; +} + +reliable client simulated function ClientReset() +{ + ResetCameraMode(); + SetViewTarget(self); + GotoState(((PlayerReplicationInfo.bOnlySpectator) ? 'Spectating' : 'PlayerWaiting')); + //return; +} + +function CleanOutSavedMoves() +{ + SavedMoves = none; + PendingMove = none; + //return; +} + +function PreControllerIdChange() +{ + local LocalPlayer LP; + + LP = LocalPlayer(Player); + // End:0x49 + if(LP != none) + { + ClientStopNetworkedVoice(); + ClearOnlineDelegates(); + UnregisterPlayerDataStores(); + } + //return; +} + +function PostControllerIdChange() +{ + local LocalPlayer LP; + local UniqueNetId PlayerID; + + LP = LocalPlayer(Player); + // End:0x183 + if(LP != none) + { + // End:0x122 + if(((int(WorldInfo.NetMode) != int(NM_Client)) && OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + OnlineSub.PlayerInterface.GetUniquePlayerId(byte(LP.ControllerId), PlayerID); + PlayerReplicationInfo.SetUniqueId(PlayerID); + } + RegisterPlayerDataStores(); + RegisterOnlineDelegates(); + ClientSetOnlineStatus(); + // End:0x183 + if(!WorldInfo.Game.bRequiresPushToTalk) + { + ClientStartNetworkedVoice(); + } + } + //return; +} + +final simulated function OnlineSubsystem GetOnlineSubsystem() +{ + // End:0x38 + if(OnlineSub == none) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + } + return OnlineSub; + //return ReturnValue; +} + +event InitInputSystem() +{ + local Class FFManagerClass; + local int I; + local Sequence GameSeq; + local array AllInterpActions; + + // End:0x65 + if(PlayerInput == none) + { + // DebugMode: 0 + assert(InputClass != none); + PlayerInput = new (self) InputClass; + // End:0x65 + if(PlayerInput != none) + { + PlayerInput.InitInputSystem(); + } + } + // End:0xA3 + if(Interactions.Find(PlayerInput) == -1) + { + Interactions[Interactions.Length] = PlayerInput; + } + // End:0x10A + if(ForceFeedbackManagerClassName != "") + { + FFManagerClass = Class(DynamicLoadObject(ForceFeedbackManagerClassName, Class'Core.Class')); + // End:0x10A + if(FFManagerClass != none) + { + ForceFeedbackManager = new (self) FFManagerClass; + } + } + RegisterOnlineDelegates(); + // End:0x1F6 + if(int(Role) < int(ROLE_Authority)) + { + GameSeq = WorldInfo.GetGameSequence(); + // End:0x1F6 + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'Engine.SeqAct_Interp', true, AllInterpActions); + I = 0; + J0x19D: + + // End:0x1F6 [Loop If] + if(I < AllInterpActions.Length) + { + SeqAct_Interp(AllInterpActions[I]).AddPlayerToDirectorTracks(self); + I++; + // [Loop Continue] + goto J0x19D; + } + } + } + SetOnlyUseControllerTiltInput(false); + SetUseTiltForwardAndBack(true); + SetControllerTiltActive(false); + //return; +} + +reliable client simulated function ClientInitializeDataStores() +{ + RegisterPlayerDataStores(); + //return; +} + +final simulated function RegisterPlayerDataStores() +{ + RegisterCustomPlayerDataStores(); + RegisterStandardPlayerDataStores(); + //return; +} + +protected simulated function RegisterCustomPlayerDataStores() +{ + local LocalPlayer LP; + local DataStoreClient DataStoreManager; + local Class PlayerDataStoreClass; + + LP = LocalPlayer(Player); + // End:0x180 + if(LP != none) + { + DataStoreManager = Class'Engine.UIInteraction'.static.GetDataStoreClient(); + // End:0x180 + if(DataStoreManager != none) + { + OnlinePlayerData = UIDataStore_OnlinePlayerData(DataStoreManager.FindDataStore('OnlinePlayerData', LP)); + // End:0x180 + if(OnlinePlayerData == none) + { + PlayerDataStoreClass = Class(DataStoreManager.FindDataStoreClass(Class'Engine.UIDataStore_OnlinePlayerData')); + // End:0x17D + if(PlayerDataStoreClass != none) + { + OnlinePlayerData = DataStoreManager.CreateDataStore(PlayerDataStoreClass); + // End:0x17A + if(OnlinePlayerData != none) + { + // End:0x177 + if(!DataStoreManager.RegisterDataStore(OnlinePlayerData, LP)) + { + } + } + } + } + } + } + //return; +} + +protected simulated function RegisterStandardPlayerDataStores() +{ + local LocalPlayer LP; + local DataStoreClient DataStoreManager; + local array< Class > PlayerDataStoreClasses; + local Class PlayerDataStoreClass; + local UIDataStore PlayerDataStore; + local int ClassIndex; + + LP = LocalPlayer(Player); + // End:0x1C1 + if(LP != none) + { + DataStoreManager = Class'Engine.UIInteraction'.static.GetDataStoreClient(); + // End:0x1C1 + if(DataStoreManager != none) + { + DataStoreManager.GetPlayerDataStoreClasses(PlayerDataStoreClasses); + ClassIndex = 0; + J0x96: + + // End:0x1C1 [Loop If] + if(ClassIndex < PlayerDataStoreClasses.Length) + { + PlayerDataStoreClass = PlayerDataStoreClasses[ClassIndex]; + // End:0x1B3 + if(PlayerDataStoreClass != none) + { + PlayerDataStore = DataStoreManager.FindDataStore(PlayerDataStoreClass.default.Tag, LP); + // End:0x1B3 + if(PlayerDataStore == none) + { + PlayerDataStore = DataStoreManager.CreateDataStore(PlayerDataStoreClass); + // End:0x1B0 + if(PlayerDataStore != none) + { + // End:0x1B0 + if(!DataStoreManager.RegisterDataStore(PlayerDataStore, LP)) + { + } + } + } + } + ClassIndex++; + // [Loop Continue] + goto J0x96; + } + } + } + //return; +} + +simulated function UnregisterPlayerDataStores() +{ + local LocalPlayer LP; + local DataStoreClient DataStoreManager; + local UIDataStore_OnlinePlayerData OnlinePlayerDataStore; + + LP = LocalPlayer(Player); + // End:0xFE + if(LP != none) + { + DataStoreManager = Class'Engine.UIInteraction'.static.GetDataStoreClient(); + // End:0xFE + if(DataStoreManager != none) + { + OnlinePlayerData = none; + OnlinePlayerDataStore = UIDataStore_OnlinePlayerData(DataStoreManager.FindDataStore('OnlinePlayerData', LP)); + // End:0xF1 + if(OnlinePlayerDataStore != none) + { + // End:0xEE + if(!DataStoreManager.UnregisterDataStore(OnlinePlayerDataStore)) + { + } + } + UnregisterStandardPlayerDataStores(); + } + } + //return; +} + +simulated function UnregisterStandardPlayerDataStores() +{ + local LocalPlayer LP; + local DataStoreClient DataStoreManager; + local array< Class > PlayerDataStoreClasses; + local Class PlayerDataStoreClass; + local UIDataStore PlayerDataStore; + local int ClassIndex; + + LP = LocalPlayer(Player); + // End:0x174 + if(LP != none) + { + DataStoreManager = Class'Engine.UIInteraction'.static.GetDataStoreClient(); + // End:0x174 + if(DataStoreManager != none) + { + DataStoreManager.GetPlayerDataStoreClasses(PlayerDataStoreClasses); + ClassIndex = 0; + J0x96: + + // End:0x174 [Loop If] + if(ClassIndex < PlayerDataStoreClasses.Length) + { + PlayerDataStoreClass = PlayerDataStoreClasses[ClassIndex]; + // End:0x166 + if(PlayerDataStoreClass != none) + { + PlayerDataStore = DataStoreManager.FindDataStore(PlayerDataStoreClass.default.Tag, LP); + // End:0x166 + if(PlayerDataStore != none) + { + // End:0x166 + if(!DataStoreManager.UnregisterDataStore(PlayerDataStore)) + { + } + } + } + ClassIndex++; + // [Loop Continue] + goto J0x96; + } + } + } + //return; +} + +simulated function ReloadProfileSettings() +{ + // End:0x69 + if((OnlinePlayerData != none) && OnlinePlayerData.ProfileProvider != none) + { + OnlinePlayerData.ProfileProvider.RefreshStorageData(); + } + //return; +} + +final function SetRumbleScale(float ScaleBy) +{ + // End:0x37 + if(ForceFeedbackManager != none) + { + ForceFeedbackManager.ScaleAllWaveformsBy = ScaleBy; + } + //return; +} + +// Export UPlayerController::execIsControllerTiltActive(FFrame&, void* const) +native simulated function bool IsControllerTiltActive(); + +// Export UPlayerController::execSetControllerTiltActive(FFrame&, void* const) +native simulated function SetControllerTiltActive(bool bActive); + +// Export UPlayerController::execSetOnlyUseControllerTiltInput(FFrame&, void* const) +native simulated function SetOnlyUseControllerTiltInput(bool bActive); + +// Export UPlayerController::execSetUseTiltForwardAndBack(FFrame&, void* const) +native simulated function SetUseTiltForwardAndBack(bool bActive); + +// Export UPlayerController::execIsKeyboardAvailable(FFrame&, void* const) +native simulated function bool IsKeyboardAvailable(); + +// Export UPlayerController::execIsMouseAvailable(FFrame&, void* const) +native simulated function bool IsMouseAvailable(); + +exec function SetTiltActive(bool bActive) +{ + SetControllerTiltActive(bActive); + //return; +} + +exec function SetMaxSmoothedFrameRate(float fRate) +{ + local Engine Eng; + + Eng = Class'Engine.Engine'.static.GetEngine(); + Eng.MaxSmoothedFrameRate = fRate; + //return; +} + +reliable client simulated function ClientGotoState(name NewState, optional name NewLabel) +{ + // End:0x56 + if(((NewLabel == 'Begin') || NewLabel == 'None') && !IsInState(NewState)) + { + GotoState(NewState); + } + else + { + GotoState(NewState, NewLabel); + } + //return; +} + +reliable server function AskForPawn() +{ + // End:0x26 + if(GamePlayEndedState()) + { + ClientGotoState(GetStateName(), 'Begin'); + } + else + { + // End:0x4B + if(Pawn != none) + { + GivePawn(Pawn); + } + else + { + bFrozen = false; + ServerRestartPlayer(); + } + } + //return; +} + +reliable client simulated event GivePawn(Pawn NewPawn) +{ + // End:0x11 + if(NewPawn == none) + { + return; + } + // End:0x94 + if((Pawn != NewPawn) || NewPawn.Controller != self) + { + Pawn = NewPawn; + NewPawn.Controller = self; + ClientRestart(Pawn); + } + //return; +} + +event Possess(Pawn aPawn, bool bVehicleTransition) +{ + local Actor A; + local int I; + local SeqEvent_Touch TouchEvent; + + // End:0x20C + if(!PlayerReplicationInfo.bOnlySpectator) + { + // End:0x7C + if(aPawn.Controller != none) + { + aPawn.Controller.UnPossess(); + } + aPawn.PossessedBy(self, bVehicleTransition); + Pawn = aPawn; + Pawn.SetTickIsDisabled(false); + ResetTimeMargin(); + Restart(bVehicleTransition); + // End:0x20B + foreach Pawn.TouchingActors(Class'Engine.Actor', A) + { + I = 0; + J0x12F: + + // End:0x20A [Loop If] + if(I < A.GeneratedEvents.Length) + { + TouchEvent = SeqEvent_Touch(A.GeneratedEvents[I]); + // End:0x1FC + if((TouchEvent != none) && TouchEvent.bPlayerOnly) + { + TouchEvent.CheckTouchActivate(A, Pawn); + } + I++; + // [Loop Continue] + goto J0x12F; + } + } + } + //return; +} + +function AcknowledgePossession(Pawn P) +{ + P = Pawn; + // End:0xBC + if(LocalPlayer(Player) != none) + { + AcknowledgedPawn = P; + // End:0xA9 + if(P != none) + { + P.SetBaseEyeheight(); + P.EyeHeight = P.BaseEyeHeight; + } + ServerAcknowledgePossession(P); + } + //return; +} + +reliable server function ServerAcknowledgePossession(Pawn P) +{ + // End:0x5D + if(P == Pawn) + { + // End:0x5A + if(P != AcknowledgedPawn) + { + // End:0x47 + if(Pawn != none) + { + ResetTimeMargin(); + } + AcknowledgedPawn = Pawn; + } + } + //return; +} + +event UnPossess() +{ + // End:0xB2 + if(Pawn != none) + { + SetLocation(Pawn.Location); + // End:0x65 + if(int(Role) == int(ROLE_Authority)) + { + Pawn.RemoteRole = ROLE_SimulatedProxy; + } + Pawn.UnPossessed(); + CleanOutSavedMoves(); + // End:0xB2 + if((GetViewTarget()) == Pawn) + { + SetViewTarget(self); + } + } + Pawn = none; + //return; +} + +function PawnDied(Pawn P) +{ + // End:0x70 + if(P == Pawn) + { + // End:0x5D + if((int(Role) == int(ROLE_Authority)) && Pawn != none) + { + Pawn.RemoteRole = ROLE_SimulatedProxy; + } + super.PawnDied(P); + } + //return; +} + +reliable client simulated function ClientSetHUD(Class newHUDType) +{ + // End:0x27 + if(myHUD != none) + { + myHUD.Destroy(); + } + myHUD = ((newHUDType != none) ? Spawn(newHUDType, self) : none); + //return; +} + +reliable client simulated function ClientSetSecondaryHUD(Class newHUDType) +{ + // End:0x27 + if(mySecondaryHUD != none) + { + mySecondaryHUD.Destroy(); + } + mySecondaryHUD = ((newHUDType != none) ? Spawn(newHUDType, self) : none); + //return; +} + +function HandlePickup(Inventory Inv) +{ + ReceiveLocalizedMessage(Inv.MessageClass,,,, Inv.Class); + //return; +} + +function CleanupPRI() +{ + WorldInfo.Game.AddInactivePRI(PlayerReplicationInfo, self); + PlayerReplicationInfo = none; + //return; +} + +reliable client simulated event ReceiveLocalizedMessage(Class Message, optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject) +{ + // End:0x55 + if((int(WorldInfo.NetMode) == int(NM_DedicatedServer)) || WorldInfo.GRI == none) + { + return; + } + Message.static.ClientReceive(self, Switch, RelatedPRI_1, RelatedPRI_2, OptionalObject); + //return; +} + +unreliable client simulated event ClientPlaySound(SoundCue ASound) +{ + ClientHearSound(ASound, self, Location, false, false); + //return; +} + +simulated function HearSoundFinished(AudioComponent AC) +{ + HearSoundActiveComponents.RemoveItem(AC); + // End:0x77 + if(!AC.IsPendingKill()) + { + AC.ResetToDefaults(); + HearSoundPoolComponents[HearSoundPoolComponents.Length] = AC; + } + //return; +} + +// Export UPlayerController::execGetPooledAudioComponent(FFrame&, void* const) +native function AudioComponent GetPooledAudioComponent(SoundCue ASound, Actor SourceActor, bool bStopWhenOwnerDestroyed, optional bool bUseLocation, optional Vector SourceLocation); + +unreliable client simulated event ClientHearSound(SoundCue ASound, Actor SourceActor, Vector SourceLocation, bool bStopWhenOwnerDestroyed, optional bool bIsOccluded) +{ + local editinline AudioComponent AC; + + // End:0xA7 + if(SourceActor == none) + { + AC = GetPooledAudioComponent(ASound, SourceActor, bStopWhenOwnerDestroyed, true, SourceLocation); + // End:0x5B + if(AC == none) + { + return; + } + AC.bUseOwnerLocation = false; + AC.Location = SourceLocation; + } + else + { + // End:0x12F + if((SourceActor == (GetViewTarget())) || SourceActor == self) + { + AC = GetPooledAudioComponent(ASound, none, bStopWhenOwnerDestroyed); + // End:0x10B + if(AC == none) + { + return; + } + AC.bAllowSpatialization = false; + } + else + { + AC = GetPooledAudioComponent(ASound, SourceActor, bStopWhenOwnerDestroyed); + // End:0x172 + if(AC == none) + { + return; + } + // End:0x1FA + if(!IsZero(SourceLocation) && SourceLocation != SourceActor.Location) + { + AC.bUseOwnerLocation = false; + AC.Location = SourceLocation; + } + } + } + // End:0x275 + if(bIsOccluded) + { + // End:0x275 + if(!AC.bWasOccluded) + { + AC.OcclusionChanged(bIsOccluded); + AC.bWasOccluded = true; + } + } + AC.Play(); + //return; +} + +// Export UPlayerController::execWwiseClientHearSound(FFrame&, void* const) +unreliable client native simulated event WwiseClientHearSound(AkEvent ASound, Actor SourceActor, Vector SourceLocation, bool bStopWhenOwnerDestroyed, optional bool bIsOccluded); + +simulated function bool IsClosestLocalPlayerToActor(Actor TheActor) +{ + local PlayerController PC; + local float MyDist; + + // End:0x11 + if(ViewTarget == none) + { + return false; + } + MyDist = VSize(ViewTarget.Location - TheActor.Location); + // End:0x118 + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + // End:0x117 + if(((PC != self) && PC.ViewTarget != none) && VSize(PC.ViewTarget.Location - TheActor.Location) < MyDist) + { + return false; + } + } + return true; + //return ReturnValue; +} + +reliable client simulated event Kismet_ClientPlaySound(SoundCue ASound, Actor SourceActor, float VolumeMultiplier, float PitchMultiplier, float FadeInTime, bool bSuppressSubtitles, bool bSuppressSpatialization) +{ + local editinline AudioComponent AC; + + // End:0x237 + if((SourceActor != none) && IsClosestLocalPlayerToActor(SourceActor)) + { + // End:0xD7 + if((ASound.FaceFXAnimName != "") && SourceActor.PlayActorFaceFXAnim(ASound.FaceFXAnimSetRef, ASound.FaceFXGroupName, ASound.FaceFXAnimName, ASound, none)) + { + } + else + { + AC = SourceActor.CreateAudioComponent(ASound, false, true); + // End:0x237 + if(AC != none) + { + AC.VolumeMultiplier = VolumeMultiplier; + AC.PitchMultiplier = PitchMultiplier; + AC.bAutoDestroy = true; + AC.SubtitlePriority = 10000.0000000; + AC.bSuppressSubtitles = bSuppressSubtitles; + AC.FadeIn(FadeInTime, 1.0000000); + // End:0x237 + if(bSuppressSpatialization) + { + AC.bAllowSpatialization = false; + } + } + } + } + //return; +} + +reliable client simulated event Kismet_ClientStopSound(SoundCue ASound, Actor SourceActor, float FadeOutTime) +{ + local editinline AudioComponent AC, CheckAC; + + // End:0x22 + if(SourceActor == none) + { + SourceActor = WorldInfo; + } + // End:0x99 + foreach SourceActor.AllOwnedComponents(Class'Engine.AudioComponent', CheckAC) + { + // End:0x98 + if(CheckAC.SoundCue == ASound) + { + AC = CheckAC; + // End:0x99 + break; + } + } + // End:0xD7 + if(AC != none) + { + AC.FadeOut(FadeOutTime, 0.0000000); + } + //return; +} + +reliable client simulated function ClientPlayActorFaceFXAnim(Actor SourceActor, FaceFXAnimSet AnimSet, string GroupName, string SeqName, SoundCue SoundCueToPlay, AkEvent AkEventToPlay) +{ + // End:0x5B + if(SourceActor != none) + { + SourceActor.PlayActorFaceFXAnim(AnimSet, GroupName, SeqName, SoundCueToPlay, AkEventToPlay); + } + //return; +} + +reliable client simulated event ClientMessage(coerce string S, optional name Type, optional float MsgLifeTime) +{ + // End:0x53 + if((int(WorldInfo.NetMode) == int(NM_DedicatedServer)) || WorldInfo.GRI == none) + { + return; + } + // End:0x7D + if(Type == 'None') + { + Type = 'Event'; + } + TeamMessage(PlayerReplicationInfo, S, Type, MsgLifeTime); + //return; +} + +private final simulated function bool CanCommunicate() +{ + return true; + //return ReturnValue; +} + +private final simulated function bool AllowTTSMessageFrom(PlayerReplicationInfo PRI) +{ + return true; + //return ReturnValue; +} + +// Export UPlayerController::execCreateTTSSoundCue(FFrame&, void* const) +private native final simulated function SoundCue CreateTTSSoundCue(string StrToSpeak, PlayerReplicationInfo PRI); + +exec function Talk() +{ + local Console PlayerConsole; + local LocalPlayer LP; + + LP = LocalPlayer(Player); + // End:0xE0 + if(((LP != none) && CanCommunicate()) && LP.ViewportClient.ViewportConsole != none) + { + PlayerConsole = LocalPlayer(Player).ViewportClient.ViewportConsole; + PlayerConsole.StartTyping("Say "); + } + //return; +} + +exec function TeamTalk() +{ + local Console PlayerConsole; + local LocalPlayer LP; + + LP = LocalPlayer(Player); + // End:0xE4 + if(((LP != none) && CanCommunicate()) && LP.ViewportClient.ViewportConsole != none) + { + PlayerConsole = LocalPlayer(Player).ViewportClient.ViewportConsole; + PlayerConsole.StartTyping("TeamSay "); + } + //return; +} + +simulated function SpeakTTS(coerce string S, optional PlayerReplicationInfo PRI) +{ + local SoundCue Cue; + local editinline AudioComponent AC; + + Cue = CreateTTSSoundCue(S, PRI); + // End:0xB9 + if(Cue != none) + { + AC = CreateAudioComponent(Cue, false, true,,, true); + AC.bAllowSpatialization = false; + AC.bAutoDestroy = true; + AC.Play(); + } + //return; +} + +reliable client simulated event TeamMessage(PlayerReplicationInfo PRI, coerce string S, name Type, optional float MsgLifeTime) +{ + local bool bIsUserCreated; + + // End:0x263 + if(CanCommunicate()) + { + // End:0xB0 + if((((Type == 'Say') || Type == 'TeamSay') && PRI != none) && AllowTTSMessageFrom(PRI)) + { + // End:0xB0 + if(!bIsUserCreated || bIsUserCreated && CanViewUserCreatedContent()) + { + SpeakTTS(S, PRI); + } + } + // End:0x102 + if(myHUD != none) + { + myHUD.Message(PRI, S, Type, MsgLifeTime); + } + // End:0x188 + if(((Type == 'Say') || Type == 'TeamSay') && PRI != none) + { + S = (PRI.PlayerName $ ": ") $ S; + bIsUserCreated = true; + } + // End:0x263 + if(Player != none) + { + // End:0x263 + if((!bIsUserCreated || bIsUserCreated && CanViewUserCreatedContent()) && LocalPlayer(Player).ViewportClient.ViewportConsole != none) + { + LocalPlayer(Player).ViewportClient.ViewportConsole.OutputText(S); + } + } + } + //return; +} + +function PlayBeepSound() +{ + //return; +} + +event RegisterOnlineDelegates() +{ + local LocalPlayer LP; + + LP = LocalPlayer(Player); + // End:0x39A + if((OnlineSub != none) && LP != none) + { + VoiceInterface = OnlineSub.VoiceInterface; + // End:0x183 + if(NotEqual_InterfaceInterface(OnlineSub.SystemInterface, OnlineSystemInterface(none))) + { + OnlineSub.SystemInterface.AddExternalUIChangeDelegate(OnExternalUIChanged); + OnlineSub.SystemInterface.AddControllerChangeDelegate(OnControllerChanged); + bIsControllerConnected = OnlineSub.SystemInterface.IsControllerConnected(LP.ControllerId); + } + // End:0x21E + if(NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + OnlineSub.GameInterface.AddGameInviteAcceptedDelegate(byte(LP.ControllerId), OnGameInviteAccepted); + } + // End:0x31F + if(NotEqual_InterfaceInterface(OnlineSub.PartyChatInterface, OnlinePartyChatInterface(none))) + { + OnlineSub.PartyChatInterface.AddPartyMemberListChangedDelegate(byte(LP.ControllerId), OnPartyMemberListChanged); + OnlineSub.PartyChatInterface.AddPartyMembersInfoChangedDelegate(byte(LP.ControllerId), OnPartyMembersInfoChanged); + } + // End:0x39A + if(NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + OnlineSub.PlayerInterface.AddPrivilegeLevelCheckedDelegate(OnPrivilegeLevelChecked); + } + } + //return; +} + +function OnPartyMemberListChanged(bool bJoinedOrLeft, string PlayerName, UniqueNetId PlayerID) +{ + //return; +} + +function OnPartyMembersInfoChanged(string PlayerName, UniqueNetId PlayerID, int CustomData1, int CustomData2, int CustomData3, int CustomData4) +{ + //return; +} + +event ClearOnlineDelegates() +{ + local LocalPlayer LP; + + LP = LocalPlayer(Player); + // End:0x337 + if((int(Role) < int(ROLE_Authority)) || LP != none) + { + // End:0x337 + if(OnlineSub != none) + { + // End:0x111 + if(NotEqual_InterfaceInterface(OnlineSub.SystemInterface, OnlineSystemInterface(none))) + { + OnlineSub.SystemInterface.ClearExternalUIChangeDelegate(OnExternalUIChanged); + OnlineSub.SystemInterface.ClearControllerChangeDelegate(OnControllerChanged); + } + // End:0x337 + if(LP != none) + { + // End:0x1BB + if(NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + OnlineSub.GameInterface.ClearGameInviteAcceptedDelegate(byte(LP.ControllerId), OnGameInviteAccepted); + } + // End:0x2BC + if(NotEqual_InterfaceInterface(OnlineSub.PartyChatInterface, OnlinePartyChatInterface(none))) + { + OnlineSub.PartyChatInterface.ClearPartyMemberListChangedDelegate(byte(LP.ControllerId), OnPartyMemberListChanged); + OnlineSub.PartyChatInterface.ClearPartyMembersInfoChangedDelegate(byte(LP.ControllerId), OnPartyMembersInfoChanged); + } + // End:0x337 + if(NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + OnlineSub.PlayerInterface.ClearPrivilegeLevelCheckedDelegate(OnPrivilegeLevelChecked); + } + } + } + } + //return; +} + +function CleanupPawn() +{ + local Vehicle DrivenVehicle; + local Pawn Driver; + + DrivenVehicle = Vehicle(Pawn); + // End:0xEC + if(DrivenVehicle != none) + { + Driver = DrivenVehicle.Driver; + DrivenVehicle.DriverLeave(true); + // End:0xE9 + if(Driver != none) + { + Driver.Health = 0; + Driver.Died(self, Class'Engine.DmgType_Suicided', Driver.Location); + } + } + else + { + // End:0x162 + if(Pawn != none) + { + Pawn.Health = 0; + Pawn.Died(self, Class'Engine.DmgType_Suicided', Pawn.Location); + } + } + //return; +} + +event Destroyed() +{ + local int EffectIdx; + local LocalPlayer LPlayer; + local MaterialEffect Effect; + local MaterialInstanceConstant MIC; + + ClientPlayForceFeedbackWaveform(none, none); + // End:0x47 + if((int(Role) < int(ROLE_Authority)) || LocalPlayer(Player) != none) + { + ClearOnlineDelegates(); + } + // End:0x60 + if(Pawn != none) + { + CleanupPawn(); + } + // End:0x92 + if(myHUD != none) + { + myHUD.Destroy(); + myHUD = none; + } + // End:0xC4 + if(PlayerCamera != none) + { + PlayerCamera.Destroy(); + PlayerCamera = none; + } + ForceClearUnpauseDelegates(); + UnregisterPlayerDataStores(); + LPlayer = LocalPlayer(Player); + // End:0x2AC + if((LPlayer != none) && LPlayer.PlayerPostProcess != none) + { + EffectIdx = 0; + J0x134: + + // End:0x2AC [Loop If] + if(EffectIdx < LPlayer.PlayerPostProcess.Effects.Length) + { + Effect = MaterialEffect(LPlayer.PlayerPostProcess.Effects[EffectIdx]); + // End:0x29E + if((Effect != none) && Effect.Material != none) + { + MIC = MaterialInstanceConstant(Effect.Material); + // End:0x29E + if((MIC != none) && MIC.Parent != none) + { + Effect.Material = MIC.Parent; + } + } + EffectIdx++; + // [Loop Continue] + goto J0x134; + } + } + super.Destroyed(); + //return; +} + +function FixFOV() +{ + FOVAngle = default.DefaultFOV; + DesiredFOV = default.DefaultFOV; + DefaultFOV = default.DefaultFOV; + //return; +} + +function SetFOV(float NewFOV) +{ + DesiredFOV = NewFOV; + FOVAngle = NewFOV; + //return; +} + +function ResetFOV() +{ + DesiredFOV = DefaultFOV; + FOVAngle = DefaultFOV; + //return; +} + +exec function FOV(float F) +{ + F = FClamp(F, 70.0000000, 100.0000000); + // End:0x58 + if(PlayerCamera != none) + { + PlayerCamera.SetFOV(F); + return; + } + // End:0xE0 + if(((F >= 80.0000000) || int(WorldInfo.NetMode) == int(NM_Standalone)) || PlayerReplicationInfo.bOnlySpectator) + { + DefaultFOV = F; + DesiredFOV = DefaultFOV; + } + //return; +} + +exec function Mutate(string MutateString) +{ + ServerMutate(MutateString); + //return; +} + +reliable server function ServerMutate(string MutateString) +{ + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + return; + } + WorldInfo.Game.Mutate(MutateString, self); + //return; +} + +function bool AllowTextMessage(string msg) +{ + local int I; + + // End:0x4F + if((int(WorldInfo.NetMode) == int(NM_Standalone)) || PlayerReplicationInfo.bAdmin) + { + return true; + } + // End:0xA9 + if((WorldInfo.Pauser == none) && (WorldInfo.TimeSeconds - LastBroadcastTime) < float(2)) + { + return false; + } + // End:0x151 + if((WorldInfo.TimeSeconds - LastBroadcastTime) < float(5)) + { + msg = Left(msg, Clamp(Len(msg) - 4, 8, 64)); + I = 0; + J0x110: + + // End:0x151 [Loop If] + if(I < 4) + { + // End:0x143 + if(LastBroadcastString[I] ~= msg) + { + return false; + } + I++; + // [Loop Continue] + goto J0x110; + } + } + I = 3; + J0x15D: + + // End:0x1A4 [Loop If] + if(I > 0) + { + LastBroadcastString[I] = LastBroadcastString[I - 1]; + I--; + // [Loop Continue] + goto J0x15D; + } + LastBroadcastTime = WorldInfo.TimeSeconds; + return true; + //return ReturnValue; +} + +exec function Say(string msg) +{ + msg = Left(msg, 128); + // End:0x40 + if(AllowTextMessage(msg)) + { + ServerSay(msg); + } + //return; +} + +unreliable server function ServerSay(string msg) +{ + local PlayerController PC; + + // End:0xBB + if(PlayerReplicationInfo.bAdmin && Left(msg, 1) == "#") + { + msg = Right(msg, Len(msg) - 1); + // End:0xB8 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + PC.ClientAdminMessage(msg); + } + return; + } + WorldInfo.Game.Broadcast(self, msg, 'Say'); + //return; +} + +reliable client simulated function ClientAdminMessage(string msg) +{ + local LocalPlayer LP; + + LP = LocalPlayer(Player); + // End:0xD9 + if(LP != none) + { + LP.ViewportClient.ClearProgressMessages(); + LP.ViewportClient.SetProgressTime(6.0000000); + LP.ViewportClient.SetProgressMessage(2, msg); + } + //return; +} + +exec function TeamSay(string msg) +{ + msg = Left(msg, 128); + // End:0x40 + if(AllowTextMessage(msg)) + { + ServerTeamSay(msg); + } + //return; +} + +unreliable server function ServerTeamSay(string msg) +{ + LastActiveTime = WorldInfo.TimeSeconds; + // End:0x8B + if(!WorldInfo.GRI.GameClass.default.bTeamGame) + { + Say(msg); + return; + } + WorldInfo.Game.BroadcastTeam(self, msg, 'TeamSay'); + //return; +} + +event PreClientTravel(string PendingURL, Actor.ETravelType TravelType, bool bIsSeamlessTravel) +{ + local UIInteraction UIController; + local GameUISceneClient GameSceneClient; + + UIController = GetUIController(); + // End:0xEF + if((UIController != none) && IsPrimaryPlayer()) + { + GameSceneClient = UIController.SceneClient; + // End:0xA5 + if(GameSceneClient != none) + { + GameSceneClient.NotifyClientTravel(self, PendingURL, TravelType, bIsSeamlessTravel); + } + // End:0xEF + if(PlayerInput != none) + { + PlayerInput.PreClientTravel(PendingURL, TravelType, bIsSeamlessTravel); + } + } + //return; +} + +exec function Camera(name NewMode) +{ + ServerCamera(NewMode); + //return; +} + +reliable server function ServerCamera(name NewMode) +{ + // End:0x2D + if(NewMode == '1st') + { + NewMode = 'FirstPerson'; + } + else + { + // End:0x57 + if(NewMode == '3rd') + { + NewMode = 'ThirdPerson'; + } + } + SetCameraMode(NewMode); + //return; +} + +reliable client simulated function ClientSetCameraMode(name NewCamMode) +{ + // End:0x37 + if(PlayerCamera != none) + { + PlayerCamera.CameraStyle = NewCamMode; + } + //return; +} + +function SetCameraMode(name NewCamMode) +{ + // End:0x73 + if(PlayerCamera != none) + { + PlayerCamera.CameraStyle = NewCamMode; + // End:0x73 + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + ClientSetCameraMode(NewCamMode); + } + } + //return; +} + +event ResetCameraMode() +{ + // End:0x3C + if(Pawn != none) + { + SetCameraMode(Pawn.GetDefaultCameraMode(self)); + } + else + { + SetCameraMode('FirstPerson'); + } + //return; +} + +reliable client simulated event ClientSetCameraFade(bool bEnableFading, optional Color FadeColor, optional Vector2D FadeAlpha, optional float FadeTime, optional bool bFadeAudio) +{ + // End:0x1E5 + if(PlayerCamera != none) + { + PlayerCamera.bEnableFading = bEnableFading; + // End:0x12C + if(PlayerCamera.bEnableFading) + { + PlayerCamera.FadeColor = FadeColor; + PlayerCamera.FadeAlpha = FadeAlpha; + PlayerCamera.FadeTime = FadeTime; + PlayerCamera.FadeTimeRemaining = FadeTime; + PlayerCamera.bFadeAudio = bFadeAudio; + } + else + { + PlayerCamera.FadeAmount = PlayerCamera.FadeAlpha.Y; + PlayerCamera.FadeColor = FadeColor; + // End:0x1E5 + if(PlayerCamera.bFadeAudio) + { + PlayerCamera.ApplyAudioFade(); + } + } + } + //return; +} + +function bool UsingFirstPersonCamera() +{ + return ((PlayerCamera == none) || PlayerCamera.CameraStyle == 'FirstPerson') && LocalPlayer(Player) != none; + //return ReturnValue; +} + +function ForceDeathUpdate() +{ + LastUpdateTime = WorldInfo.TimeSeconds - float(10); + //return; +} + +// Export UPlayerController::execDualServerMove(FFrame&, void* const) +unreliable server native function DualServerMove(float TimeStamp0, Vector InAccel0, byte PendingFlags, int View0, float TimeStamp, Vector InAccel, Vector ClientLoc, byte NewFlags, byte ClientRoll, int View); + +// Export UPlayerController::execOldServerMove(FFrame&, void* const) +unreliable server native function OldServerMove(float OldTimeStamp, byte OldAccelX, byte OldAccelY, byte OldAccelZ, byte OldMoveFlags); + +// Export UPlayerController::execGetServerMoveDeltaTime(FFrame&, void* const) +native function float GetServerMoveDeltaTime(float TimeStamp); + +// Export UPlayerController::execServerMoveHandleClientError(FFrame&, void* const) +native function ServerMoveHandleClientError(float TimeStamp, Vector Accel, Vector ClientLoc); + +// Export UPlayerController::execServerMove(FFrame&, void* const) +unreliable server native function ServerMove(float TimeStamp, Vector InAccel, Vector ClientLoc, byte MoveFlags, byte ClientRoll, int View); + +event SendClientAdjustment() +{ + // End:0xC8D + if(bAcceptSendCorrections) + { + // End:0x48 + if(AcknowledgedPawn != Pawn) + { + PendingAdjustment.TimeStamp = 0.0000000; + return; + } + // End:0xCE + if(int(PendingAdjustment.bAckGoodMove) == int(1)) + { + // End:0xA5 + if(ShouldInterpolateMovementCorrections()) + { + ClientAckGoodMove(PendingAdjustment.TimeStamp); + } + else + { + ClientAckGoodMoveNoInterp(PendingAdjustment.TimeStamp); + } + } + else + { + // End:0x82C + if((Pawn == none) || int(Pawn.Physics) != int(8)) + { + // End:0x523 + if(PendingAdjustment.NewVel == vect(0.0000000, 0.0000000, 0.0000000)) + { + // End:0x334 + if(((GetStateName() == 'PlayerWalking') && Pawn != none) && int(Pawn.Physics) == int(1)) + { + // End:0x262 + if(ShouldInterpolateMovementCorrections()) + { + VeryShortClientAdjustPosition(PendingAdjustment.TimeStamp, PendingAdjustment.NewLoc.X, PendingAdjustment.NewLoc.Y, PendingAdjustment.NewLoc.Z, PendingAdjustment.NewBase); + } + else + { + VeryShortClientAdjustPositionNoInterp(PendingAdjustment.TimeStamp, PendingAdjustment.NewLoc.X, PendingAdjustment.NewLoc.Y, PendingAdjustment.NewLoc.Z, PendingAdjustment.NewBase); + } + } + else + { + // End:0x432 + if(ShouldInterpolateMovementCorrections()) + { + ShortClientAdjustPosition(PendingAdjustment.TimeStamp, GetStateName(), PendingAdjustment.newPhysics, PendingAdjustment.NewLoc.X, PendingAdjustment.NewLoc.Y, PendingAdjustment.NewLoc.Z, PendingAdjustment.NewBase); + } + else + { + ShortClientAdjustPositionNoInterp(PendingAdjustment.TimeStamp, GetStateName(), PendingAdjustment.newPhysics, PendingAdjustment.NewLoc.X, PendingAdjustment.NewLoc.Y, PendingAdjustment.NewLoc.Z, PendingAdjustment.NewBase); + } + } + } + else + { + // End:0x6AE + if(ShouldInterpolateMovementCorrections()) + { + ClientAdjustPosition(PendingAdjustment.TimeStamp, GetStateName(), PendingAdjustment.newPhysics, PendingAdjustment.NewLoc.X, PendingAdjustment.NewLoc.Y, PendingAdjustment.NewLoc.Z, PendingAdjustment.NewVel.X, PendingAdjustment.NewVel.Y, PendingAdjustment.NewVel.Z, PendingAdjustment.NewBase); + } + else + { + ClientAdjustPositionNoInterp(PendingAdjustment.TimeStamp, GetStateName(), PendingAdjustment.newPhysics, PendingAdjustment.NewLoc.X, PendingAdjustment.NewLoc.Y, PendingAdjustment.NewLoc.Z, PendingAdjustment.NewVel.X, PendingAdjustment.NewVel.Y, PendingAdjustment.NewVel.Z, PendingAdjustment.NewBase); + } + } + } + else + { + // End:0xA44 + if(ShouldInterpolateMovementCorrections()) + { + LongClientAdjustPosition(PendingAdjustment.TimeStamp, GetStateName(), PendingAdjustment.newPhysics, PendingAdjustment.NewLoc.X, PendingAdjustment.NewLoc.Y, PendingAdjustment.NewLoc.Z, PendingAdjustment.NewVel.X, PendingAdjustment.NewVel.Y, PendingAdjustment.NewVel.Z, PendingAdjustment.NewBase, PendingAdjustment.NewFloor.X, PendingAdjustment.NewFloor.Y, PendingAdjustment.NewFloor.Z); + } + else + { + LongClientAdjustPositionNoInterp(PendingAdjustment.TimeStamp, GetStateName(), PendingAdjustment.newPhysics, PendingAdjustment.NewLoc.X, PendingAdjustment.NewLoc.Y, PendingAdjustment.NewLoc.Z, PendingAdjustment.NewVel.X, PendingAdjustment.NewVel.Y, PendingAdjustment.NewVel.Z, PendingAdjustment.NewBase, PendingAdjustment.NewFloor.X, PendingAdjustment.NewFloor.Y, PendingAdjustment.NewFloor.Z); + } + } + } + PendingAdjustment.TimeStamp = 0.0000000; + PendingAdjustment.bAckGoodMove = 0; + } + //return; +} + +function bool ShouldInterpolateMovementCorrections() +{ + return true; + //return ReturnValue; +} + +unreliable server function ServerDrive(float InForward, float InStrafe, float aUp, bool InJump, int View) +{ + local Rotator ViewRotation; + + ViewRotation.Pitch = View & 65535; + ViewRotation.Yaw = View >> 16; + ViewRotation.Roll = 0; + SetRotation(ViewRotation); + ProcessDrive(InForward, InStrafe, aUp, InJump); + //return; +} + +function ProcessDrive(float InForward, float InStrafe, float InUp, bool InJump) +{ + ClientGotoState(GetStateName(), 'Begin'); + //return; +} + +function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) +{ + // End:0x65 + if((Pawn != none) && Pawn.Acceleration != newAccel) + { + Pawn.Acceleration = newAccel; + } + //return; +} + +event MoveAutonomous(float DeltaTime, byte CompressedFlags, Vector newAccel, Rotator DeltaRot) +{ + local Actor.EDoubleClickDir DoubleClickMove; + + // End:0x35 + if((Pawn != none) && Pawn.bHardAttach) + { + return; + } + DoubleClickMove = SavedMoveClass.static.SetFlags(CompressedFlags, self); + HandleWalking(); + ProcessMove(DeltaTime, newAccel, DoubleClickMove, DeltaRot); + // End:0xD3 + if(Pawn != none) + { + Pawn.AutonomousPhysics(DeltaTime); + } + else + { + AutonomousPhysics(DeltaTime); + } + bDoubleJump = false; + //return; +} + +unreliable client simulated function VeryShortClientAdjustPosition(float TimeStamp, float NewLocX, float NewLocY, float NewLocZ, Actor NewBase) +{ + local Vector Floor; + + // End:0xE9 + if(bAcceptSendCorrections) + { + // End:0x44 + if(Pawn != none) + { + Floor = Pawn.Floor; + } + LongClientAdjustPosition(TimeStamp, 'PlayerWalking', 1, NewLocX, NewLocY, NewLocZ, 0.0000000, 0.0000000, 0.0000000, NewBase, Floor.X, Floor.Y, Floor.Z); + } + //return; +} + +unreliable client simulated function VeryShortClientAdjustPositionNoInterp(float TimeStamp, float NewLocX, float NewLocY, float NewLocZ, Actor NewBase) +{ + // End:0x44 + if(bAcceptSendCorrections) + { + VeryShortClientAdjustPosition(TimeStamp, NewLocX, NewLocY, NewLocZ, NewBase); + } + //return; +} + +unreliable client simulated function ShortClientAdjustPosition(float TimeStamp, name NewState, Actor.EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, Actor NewBase) +{ + local Vector Floor; + + // End:0xF0 + if(bAcceptSendCorrections) + { + // End:0x44 + if(Pawn != none) + { + Floor = Pawn.Floor; + } + LongClientAdjustPosition(TimeStamp, NewState, newPhysics, NewLocX, NewLocY, NewLocZ, 0.0000000, 0.0000000, 0.0000000, NewBase, Floor.X, Floor.Y, Floor.Z); + } + //return; +} + +unreliable client simulated function ShortClientAdjustPositionNoInterp(float TimeStamp, name NewState, Actor.EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, Actor NewBase) +{ + // End:0x56 + if(bAcceptSendCorrections) + { + ShortClientAdjustPosition(TimeStamp, NewState, newPhysics, NewLocX, NewLocY, NewLocZ, NewBase); + } + //return; +} + +reliable client simulated function ClientCapBandwidth(int Cap) +{ + ClientCap = Cap; + // End:0x63 + if((Player != none) && Player.CurrentNetSpeed > Cap) + { + SetNetSpeed(Cap); + } + //return; +} + +unreliable client simulated function ClientAckGoodMove(float TimeStamp) +{ + UpdatePing(TimeStamp); + CurrentTimeStamp = TimeStamp; + ClearAckedMoves(); + //return; +} + +unreliable client simulated function ClientAckGoodMoveNoInterp(float TimeStamp) +{ + ClientAckGoodMove(TimeStamp); + //return; +} + +unreliable client simulated function ClientAdjustPosition(float TimeStamp, name NewState, Actor.EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, float NewVelX, float NewVelY, float NewVelZ, Actor NewBase) +{ + local Vector Floor; + + // End:0xFC + if(bAcceptSendCorrections) + { + // End:0x44 + if(Pawn != none) + { + Floor = Pawn.Floor; + } + LongClientAdjustPosition(TimeStamp, NewState, newPhysics, NewLocX, NewLocY, NewLocZ, NewVelX, NewVelY, NewVelZ, NewBase, Floor.X, Floor.Y, Floor.Z); + } + //return; +} + +unreliable client simulated function ClientAdjustPositionNoInterp(float TimeStamp, name NewState, Actor.EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, float NewVelX, float NewVelY, float NewVelZ, Actor NewBase) +{ + // End:0x71 + if(bAcceptSendCorrections) + { + ClientAdjustPosition(TimeStamp, NewState, newPhysics, NewLocX, NewLocY, NewLocZ, NewVelX, NewVelY, NewVelZ, NewBase); + } + //return; +} + +final function UpdatePing(float TimeStamp) +{ + // End:0xC4 + if(PlayerReplicationInfo != none) + { + PlayerReplicationInfo.super(PlayerController).UpdatePing(TimeStamp); + // End:0xC4 + if((WorldInfo.TimeSeconds - LastPingUpdate) > float(4)) + { + LastPingUpdate = WorldInfo.TimeSeconds; + ServerUpdatePing(int(float(1000) * PlayerReplicationInfo.ExactPing)); + } + } + //return; +} + +function bool SkipPositionUpdateForRM() +{ + local SavedMove CurrentMove; + + // End:0x19D + if(((Pawn != none) && Pawn.default.Mesh != none) && int(Pawn.default.Mesh.RootMotionMode) == int(2)) + { + // End:0x12C + if((((int(Pawn.Physics) != int(2)) && Pawn.Mesh != none) && int(Pawn.Mesh.RootMotionMode) != int(2)) && !Pawn.bRootMotionFromInterpCurve) + { + return true; + } + CurrentMove = SavedMoves; + J0x13F: + + // End:0x19D [Loop If] + if(CurrentMove != none) + { + // End:0x172 + if(CurrentMove.bForceRMVelocity) + { + return true; + } + CurrentMove = CurrentMove.NextMove; + // [Loop Continue] + goto J0x13F; + } + } + return false; + //return ReturnValue; +} + +function HandleViewTargetOnAdjustPosition() +{ + local Actor TheViewTarget; + + TheViewTarget = GetViewTarget(); + // End:0xA3 + if((TheViewTarget != Pawn) && (TheViewTarget == self) || (Pawn(TheViewTarget) != none) && Pawn(TheViewTarget).Health <= 0) + { + ResetCameraMode(); + SetViewTarget(Pawn); + } + //return; +} + +unreliable client simulated function LongClientAdjustPositionNoInterp(float TimeStamp, name NewState, Actor.EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, float NewVelX, float NewVelY, float NewVelZ, Actor NewBase, float NewFloorX, float NewFloorY, float NewFloorZ) +{ + LongClientAdjustPosition(TimeStamp, NewState, newPhysics, NewLocX, NewLocY, NewLocZ, NewVelX, NewVelY, NewVelZ, NewBase, NewFloorX, NewFloorY, NewFloorZ); + //return; +} + +unreliable client simulated function LongClientAdjustPosition(float TimeStamp, name NewState, Actor.EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, float NewVelX, float NewVelY, float NewVelZ, Actor NewBase, float NewFloorX, float NewFloorY, float NewFloorZ) +{ + local Vector NewLocation, NewVelocity, NewFloor; + local Actor MoveActor; + local SavedMove CurrentMove; + + SavePositionForSmoothServerCorrection(); + UpdatePing(TimeStamp); + // End:0xAC + if(Pawn != none) + { + // End:0x8C + if(Pawn.bTearOff) + { + Pawn = none; + // End:0x8A + if(!GamePlayEndedState() && !IsInState('Dead')) + { + GotoState('Dead'); + } + return; + } + MoveActor = Pawn; + HandleViewTargetOnAdjustPosition(); + } + else + { + MoveActor = self; + // End:0x168 + if(GetStateName() != NewState) + { + // End:0xF0 + if(NewState == 'RoundEnded') + { + GotoState(NewState); + } + else + { + // End:0x143 + if(IsInState('Dead')) + { + // End:0x13E + if((NewState != 'PlayerWalking') && NewState != 'PlayerSwimming') + { + GotoState(NewState); + } + return; + } + else + { + // End:0x168 + if(NewState == 'Dead') + { + GotoState(NewState); + } + } + } + } + } + // End:0x181 + if(CurrentTimeStamp >= TimeStamp) + { + return; + } + CurrentTimeStamp = TimeStamp; + NewLocation.X = NewLocX; + NewLocation.Y = NewLocY; + NewLocation.Z = NewLocZ; + NewVelocity.X = NewVelX; + NewVelocity.Y = NewVelY; + NewVelocity.Z = NewVelZ; + CurrentMove = SavedMoves; + J0x28B: + + // End:0x68D [Loop If] + if(CurrentMove != none) + { + // End:0x67F + if(CurrentMove.TimeStamp <= CurrentTimeStamp) + { + SavedMoves = CurrentMove.NextMove; + CurrentMove.NextMove = FreeMoves; + FreeMoves = CurrentMove; + // End:0x64A + if(CurrentMove.TimeStamp == CurrentTimeStamp) + { + LastAckedAccel = CurrentMove.Acceleration; + FreeMoves.Clear(); + // End:0x548 + if(((NewBase != none) && NewBase.m_bSupportsRelativeLocationBase) && NewBase == CurrentMove.EndBase) + { + // End:0x545 + if(((GetStateName() == NewState) && IsInState('PlayerWalking')) && (int(MoveActor.Physics) == int(1)) || int(MoveActor.Physics) == int(2)) + { + // End:0x4BB + if(VSizeSq(CurrentMove.SavedRelativeLocation - NewLocation) < 3.0000000) + { + CurrentMove = none; + return; + } + else + { + // End:0x545 + if((((Vehicle(NewBase) != none) && VSizeSq(Velocity) < 9.0000000) && VSizeSq(NewVelocity) < 9.0000000) && VSizeSq(CurrentMove.SavedRelativeLocation - NewLocation) < 900.0000000) + { + CurrentMove = none; + return; + } + } + } + } + else + { + // End:0x63C + if(((((VSizeSq(CurrentMove.SavedLocation - NewLocation) < 3.0000000) && VSizeSq(CurrentMove.SavedVelocity - NewVelocity) < 9.0000000) && GetStateName() == NewState) && IsInState('PlayerWalking')) && (int(MoveActor.Physics) == int(1)) || int(MoveActor.Physics) == int(2)) + { + CurrentMove = none; + return; + } + } + CurrentMove = none; + } + else + { + FreeMoves.Clear(); + CurrentMove = SavedMoves; + } + } + else + { + CurrentMove = none; + } + // [Loop Continue] + goto J0x28B; + } + // End:0x7CF + if(MoveActor.bHardAttach) + { + // End:0x7CD + if((MoveActor.Base == none) || MoveActor.Base.bWorldGeometry) + { + // End:0x781 + if(NewBase != none) + { + MoveActor.SetLocation(NewLocation); + MoveActor.SetPhysics(newPhysics); + MoveActor.SetBase(NewBase); + } + // End:0x7C8 + if(MoveActor.Base == none) + { + MoveActor.SetHardAttach(false); + } + else + { + return; + } + } + else + { + return; + } + } + NewFloor.X = NewFloorX; + NewFloor.Y = NewFloorY; + NewFloor.Z = NewFloorZ; + // End:0x850 + if(SkipPositionUpdateForRM()) + { + return; + } + // End:0x8AC + if((NewBase != none) && NewBase.m_bSupportsRelativeLocationBase) + { + NewLocation += NewBase.Location; + } + MoveActor.bCanTeleport = false; + // End:0xAB7 + if(((((!MoveActor.SetLocation(NewLocation) && Pawn(MoveActor) != none) && Pawn(MoveActor).CylinderComponent.CollisionHeight > Pawn(MoveActor).CrouchHeight) && !Pawn(MoveActor).bIsCrouched) && int(newPhysics) == int(1)) && int(MoveActor.Physics) != int(10)) + { + MoveActor.SetPhysics(newPhysics); + // End:0xA69 + if(!MoveActor.SetLocation(NewLocation + (vect(0.0000000, 0.0000000, 1.0000000) * Pawn(MoveActor).MaxStepHeight))) + { + } + else + { + MoveActor.MoveSmooth(vect(0.0000000, 0.0000000, -1.0000000) * Pawn(MoveActor).MaxStepHeight); + } + } + MoveActor.bCanTeleport = true; + // End:0xB38 + if((int(MoveActor.Physics) != int(10)) && int(newPhysics) != int(10)) + { + MoveActor.SetPhysics(newPhysics); + } + // End:0xB73 + if(MoveActor != self) + { + MoveActor.SetBase(NewBase, NewFloor); + } + MoveActor.Velocity = NewVelocity; + UpdateStateFromAdjustment(NewState); + bUpdatePosition = true; + UpdateCameraForServerCorrectionSmoothing(); + SavePositionForSmoothServerCorrection(); + //return; +} + +function UpdateCameraForServerCorrectionSmoothing() +{ + //return; +} + +function SavePositionForSmoothServerCorrection() +{ + //return; +} + +function UpdateStateFromAdjustment(name NewState) +{ + // End:0x1F + if(GetStateName() != NewState) + { + GotoState(NewState); + } + //return; +} + +unreliable server function ServerUpdatePing(int NewPing) +{ + PlayerReplicationInfo.Ping = byte(Min(int(0.2500000 * float(NewPing)), 250)); + //return; +} + +function ClearAckedMoves() +{ + local SavedMove CurrentMove; + + CurrentMove = SavedMoves; + J0x13: + + // End:0x140 [Loop If] + if(CurrentMove != none) + { + // End:0x13A + if(CurrentMove.TimeStamp <= CurrentTimeStamp) + { + // End:0xA2 + if(CurrentMove.TimeStamp == CurrentTimeStamp) + { + LastAckedAccel = CurrentMove.Acceleration; + } + SavedMoves = CurrentMove.NextMove; + CurrentMove.NextMove = FreeMoves; + FreeMoves = CurrentMove; + FreeMoves.Clear(); + CurrentMove = SavedMoves; + } + else + { + // [Explicit Break] + goto J0x140; + } + // [Loop Continue] + goto J0x13; + } + J0x140: + + //return; +} + +function ClientUpdatePosition() +{ + local SavedMove CurrentMove; + local int realbRun, realbDuck; + local bool bRealJump, bRealPreciseDestination, bRealForceMaxAccel, bRealRootMotionFromInterpCurve; + local SkeletalMeshComponent.ERootMotionMode RealRootMotionMode; + + bUpdatePosition = false; + // End:0x48 + if((Pawn != none) && int(Pawn.Physics) == int(10)) + { + return; + } + realbRun = int(bRun); + realbDuck = int(bDuck); + bRealJump = bPressedJump; + bUpdating = true; + bRealPreciseDestination = bPreciseDestination; + // End:0x148 + if(Pawn != none) + { + bRealForceMaxAccel = Pawn.bForceMaxAccel; + bRealRootMotionFromInterpCurve = Pawn.bRootMotionFromInterpCurve; + RealRootMotionMode = Pawn.Mesh.RootMotionMode; + } + ClearAckedMoves(); + CurrentMove = SavedMoves; + J0x165: + + // End:0x2B1 [Loop If] + if(CurrentMove != none) + { + // End:0x1C4 + if((PendingMove == CurrentMove) && Pawn != none) + { + PendingMove.SetInitialPosition(Pawn); + } + CurrentMove.PrepMoveFor(Pawn); + MoveAutonomous(CurrentMove.Delta, CurrentMove.CompressedFlags(), CurrentMove.Acceleration, rot(0, 0, 0)); + CurrentMove.ResetMoveFor(Pawn); + CurrentMove = CurrentMove.NextMove; + // [Loop Continue] + goto J0x165; + } + bUpdating = false; + bDuck = byte(realbDuck); + bRun = byte(realbRun); + bPressedJump = bRealJump; + bPreciseDestination = bRealPreciseDestination; + // End:0x3B1 + if(Pawn != none) + { + Pawn.bForceMaxAccel = bRealForceMaxAccel; + Pawn.bRootMotionFromInterpCurve = bRealRootMotionFromInterpCurve; + Pawn.Mesh.RootMotionMode = RealRootMotionMode; + } + //return; +} + +final function SavedMove GetFreeMove() +{ + local SavedMove S, first; + local int I; + + // End:0x1BF + if(FreeMoves == none) + { + S = SavedMoves; + J0x22: + + // End:0x1AD [Loop If] + if(S != none) + { + I++; + // End:0x182 + if(I > 100) + { + first = SavedMoves; + SavedMoves = SavedMoves.NextMove; + first.Clear(); + first.NextMove = none; + J0xC6: + + // End:0x16D [Loop If] + if(SavedMoves != none) + { + S = SavedMoves; + SavedMoves = SavedMoves.NextMove; + S.Clear(); + S.NextMove = FreeMoves; + FreeMoves = S; + // [Loop Continue] + goto J0xC6; + } + PendingMove = none; + return first; + } + S = S.NextMove; + // [Loop Continue] + goto J0x22; + } + return new (self) SavedMoveClass; + } + else + { + S = FreeMoves; + FreeMoves = FreeMoves.NextMove; + S.NextMove = none; + return S; + } + //return ReturnValue; +} + +function int CompressAccel(int C) +{ + // End:0x29 + if(C >= 0) + { + C = Min(C, 127); + } + else + { + C = Min(int(Abs(float(C))), 127) + 128; + } + return C; + //return ReturnValue; +} + +function ReplicateMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) +{ + local SavedMove NewMove, OldMove, AlmostLastMove, LastMove; + local byte ClientRoll; + local float NetMoveDelta; + + // End:0x11 + if(Player == none) + { + return; + } + MaxResponseTime = default.MaxResponseTime * WorldInfo.TimeDilation; + DeltaTime = ((Pawn != none) ? Pawn.CustomTimeDilation : CustomTimeDilation) * FMin(DeltaTime, MaxResponseTime); + // End:0x19E + if(SavedMoves != none) + { + LastMove = SavedMoves; + AlmostLastMove = LastMove; + OldMove = none; + J0xDC: + + // End:0x19E [Loop If] + if(LastMove.NextMove != none) + { + // End:0x160 + if(((OldMove == none) && Pawn != none) && LastMove.IsImportantMove(LastAckedAccel)) + { + OldMove = LastMove; + } + AlmostLastMove = LastMove; + LastMove = LastMove.NextMove; + // [Loop Continue] + goto J0xDC; + } + } + NewMove = GetFreeMove(); + // End:0x1C3 + if(NewMove == none) + { + return; + } + NewMove.SetMoveFor(self, DeltaTime, newAccel, DoubleClickMove); + bDoubleJump = false; + ProcessMove(NewMove.Delta, NewMove.Acceleration, NewMove.DoubleClickMove, DeltaRot); + // End:0x574 + if((PendingMove != none) && PendingMove.CanCombineWith(NewMove, Pawn, MaxResponseTime)) + { + Pawn.SetLocation(PendingMove.GetStartLocation()); + Pawn.Velocity = PendingMove.StartVelocity; + // End:0x3B3 + if(PendingMove.StartBase != Pawn.Base) + { + Pawn.SetBase(PendingMove.StartBase); + } + Pawn.Floor = PendingMove.StartFloor; + NewMove.Delta += PendingMove.Delta; + NewMove.SetInitialPosition(Pawn); + // End:0x569 + if(LastMove == PendingMove) + { + // End:0x4CD + if(SavedMoves == PendingMove) + { + SavedMoves.NextMove = FreeMoves; + FreeMoves = SavedMoves; + SavedMoves = none; + } + else + { + PendingMove.NextMove = FreeMoves; + FreeMoves = PendingMove; + // End:0x54A + if(AlmostLastMove != none) + { + AlmostLastMove.NextMove = none; + LastMove = AlmostLastMove; + } + } + FreeMoves.Clear(); + } + PendingMove = none; + } + // End:0x5BC + if(Pawn != none) + { + Pawn.AutonomousPhysics(NewMove.Delta); + } + else + { + AutonomousPhysics(DeltaTime); + } + NewMove.PostUpdate(self); + // End:0x60D + if(SavedMoves == none) + { + SavedMoves = NewMove; + } + else + { + LastMove.NextMove = NewMove; + } + // End:0x7A5 + if(PendingMove == none) + { + // End:0x6E1 + if(((Player.CurrentNetSpeed > 10000) && WorldInfo.GRI != none) && WorldInfo.GRI.PRIArray.Length <= 10) + { + NetMoveDelta = 0.0110000; + } + else + { + NetMoveDelta = FMax(0.0222000, (2.0000000 * WorldInfo.MoveRepSize) / float(Player.CurrentNetSpeed)); + } + // End:0x7A5 + if(((WorldInfo.TimeSeconds - ClientUpdateTime) * WorldInfo.TimeDilation) < NetMoveDelta) + { + PendingMove = NewMove; + return; + } + } + ClientUpdateTime = WorldInfo.TimeSeconds; + ClientRoll = byte((Rotation.Roll >> 8) & 255); + CallServerMove(NewMove, ((Pawn == none) ? Location : Pawn.Location), ClientRoll, ((Rotation.Yaw & 65535) << 16) + (Rotation.Pitch & 65535), OldMove); + PendingMove = none; + //return; +} + +function CallServerMove(SavedMove NewMove, Vector ClientLoc, byte ClientRoll, int View, SavedMove OldMove) +{ + local Vector BuildAccel; + local byte OldAccelX, OldAccelY, OldAccelZ; + + // End:0x14B + if(OldMove != none) + { + BuildAccel = (0.0500000 * OldMove.Acceleration) + vect(0.5000000, 0.5000000, 0.5000000); + OldAccelX = byte(CompressAccel(int(BuildAccel.X))); + OldAccelY = byte(CompressAccel(int(BuildAccel.Y))); + OldAccelZ = byte(CompressAccel(int(BuildAccel.Z))); + OldServerMove(OldMove.TimeStamp, OldAccelX, OldAccelY, OldAccelZ, OldMove.CompressedFlags()); + } + // End:0x2BA + if(PendingMove != none) + { + DualServerMove(PendingMove.TimeStamp, PendingMove.Acceleration * float(10), PendingMove.CompressedFlags(), ((PendingMove.Rotation.Yaw & 65535) << 16) + (PendingMove.Rotation.Pitch & 65535), NewMove.TimeStamp, NewMove.Acceleration * float(10), ClientLoc, NewMove.CompressedFlags(), ClientRoll, View); + } + else + { + ServerMove(NewMove.TimeStamp, NewMove.Acceleration * float(10), ClientLoc, NewMove.CompressedFlags(), ClientRoll, View); + } + // End:0x394 + if((PlayerCamera != none) && PlayerCamera.bUseClientSideCameraUpdates) + { + PlayerCamera.bShouldSendClientSideCameraUpdate = true; + } + //return; +} + +unreliable server function ServerUpdateCamera(Vector CamLoc, int CamPitchAndYaw) +{ + local TPOV NewPOV; + + NewPOV.Location = CamLoc; + NewPOV.Rotation.Yaw = (CamPitchAndYaw >> 16) & 65535; + NewPOV.Rotation.Pitch = CamPitchAndYaw & 65535; + // End:0x2B5 + if(PlayerCamera.bDebugClientSideCamera) + { + DrawDebugSphere(PlayerCamera.CameraCache.POV.Location, 10.0000000, 10, 0, 255, 0); + DrawDebugSphere(NewPOV.Location, 10.0000000, 10, 255, 255, 0); + DrawDebugLine(PlayerCamera.CameraCache.POV.Location, PlayerCamera.CameraCache.POV.Location + (float(100) * Vector(PlayerCamera.CameraCache.POV.Rotation)), 0, 255, 0); + DrawDebugLine(NewPOV.Location, NewPOV.Location + (float(100) * Vector(NewPOV.Rotation)), 255, 255, 0); + } + else + { + PlayerCamera.FillCameraCache(NewPOV); + } + //return; +} + +function HandleWalking() +{ + // End:0x3F + if(Pawn != none) + { + Pawn.SetWalking(int(bRun) != int(0)); + } + //return; +} + +reliable server function ServerRestartGame() +{ + //return; +} + +exec function Speech(name Type, int Index, string Callsign) +{ + ServerSpeech(Type, Index, Callsign); + //return; +} + +reliable server function ServerSpeech(name Type, int Index, string Callsign) +{ + //return; +} + +exec function RestartLevel() +{ + // End:0x41 + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + ClientTravel("?restart", NM_ListenServer); + } + //return; +} + +exec function LocalTravel(string URL) +{ + // End:0x40 + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + ClientTravel(URL, 2); + } + //return; +} + +function PauseRumbleForAllPlayers(optional bool bShouldPauseRumble = true) +{ + local PlayerController PC; + + // End:0x63 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + PC.ClientPauseRumble(bShouldPauseRumble); + } + //return; +} + +reliable client simulated function ClientPauseRumble(bool bShouldPauseRumble) +{ + // End:0x38 + if(ForceFeedbackManager != none) + { + ForceFeedbackManager.PauseWaveform(bShouldPauseRumble); + } + //return; +} + +delegate bool CanUnpause() +{ + return WorldInfo.Pauser == PlayerReplicationInfo; + //return ReturnValue; +} + +function bool SetPause(bool bPause, optional delegate CanUnpauseDelegate = CanUnpause) +{ + local bool bResult; + + // End:0x13F + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + // End:0xBB + if(bPause) + { + bFire = 0; + bResult = WorldInfo.Game.SetPause(self, CanUnpauseDelegate); + // End:0xB8 + if(bResult) + { + PauseRumbleForAllPlayers(); + } + } + else + { + WorldInfo.Game.ClearPause(); + // End:0x13F + if(WorldInfo.Pauser == none) + { + WorldInfo.bGameplayFramePause = false; + PauseRumbleForAllPlayers(false); + } + } + } + return bResult; + //return ReturnValue; +} + +final simulated function bool IsPaused() +{ + return WorldInfo.Pauser != none; + //return ReturnValue; +} + +exec function Pause() +{ + ServerPause(); + //return; +} + +reliable server function ServerPause() +{ + // End:0x1E + if(!IsPaused()) + { + SetPause(true); + } + else + { + SetPause(false); + } + //return; +} + +event ConditionalPause(bool bDesiredPauseState) +{ + // End:0x2E + if(bDesiredPauseState != IsPaused()) + { + SetPause(bDesiredPauseState); + } + //return; +} + +reliable server function ServerUTrace() +{ + // End:0x62 + if((int(WorldInfo.NetMode) != int(NM_Standalone)) && (PlayerReplicationInfo == none) || !PlayerReplicationInfo.bAdmin) + { + return; + } + UTrace(); + //return; +} + +exec function UTrace() +{ + ConsoleCommand("hidelog"); + // End:0x3B + if(int(Role) != int(ROLE_Authority)) + { + ServerUTrace(); + } + SetUTracing(!IsUTracing()); + //return; +} + +exec function ThrowWeapon() +{ + //return; +} + +exec function PrevWeapon() +{ + //return; +} + +exec function NextWeapon() +{ + //return; +} + +exec function StartFire() +{ + // End:0x3A + if(WorldInfo.Pauser == PlayerReplicationInfo) + { + SetPause(false); + return; + } + // End:0x80 + if(((Pawn != none) && !bCinematicMode) && !WorldInfo.bPlayersOnly) + { + } + //return; +} + +exec function StopFire() +{ + // End:0x2E + if(Pawn != none) + { + Pawn.StopFire(); + } + //return; +} + +exec function StartAltFire(optional byte FireModeNum) +{ + //return; +} + +exec function StopAltFire(optional byte FireModeNum) +{ + //return; +} + +function GetTriggerUseList(float interactDistanceToCheck, float crosshairDist, float minDot, bool bUsuableOnly, out array out_useList) +{ + local int Idx; + local Vector CameraLoc; + local Rotator CameraRot; + local Trigger checkTrigger; + local SeqEvent_Used UseSeq; + + // End:0x320 + if(Pawn != none) + { + GetPlayerViewPoint(CameraLoc, CameraRot); + // End:0x31F + foreach Pawn.CollidingActors(Class'Engine.Trigger', checkTrigger, interactDistanceToCheck) + { + Idx = 0; + J0x70: + + // End:0x31E [Loop If] + if(Idx < checkTrigger.GeneratedEvents.Length) + { + UseSeq = SeqEvent_Used(checkTrigger.GeneratedEvents[Idx]); + // End:0x310 + if((((UseSeq != none) && !bUsuableOnly || checkTrigger.GeneratedEvents[Idx].CheckActivate(checkTrigger, Pawn, true)) && (Normal(checkTrigger.Location - CameraLoc) Dot Vector(CameraRot)) >= minDot) && ((UseSeq.bAimToInteract && IsAimingAt(checkTrigger, 0.9800000)) && VSize(Pawn.Location - checkTrigger.Location) <= UseSeq.InteractDistance) || !UseSeq.bAimToInteract && VSize(Pawn.Location - checkTrigger.Location) <= UseSeq.InteractDistance) + { + out_useList[out_useList.Length] = checkTrigger; + Idx = checkTrigger.GeneratedEvents.Length; + } + Idx++; + // [Loop Continue] + goto J0x70; + } + } + } + //return; +} + +exec function Use() +{ + // End:0x1E + if(int(Role) < int(ROLE_Authority)) + { + PerformedUseAction(); + } + ServerUse(); + //return; +} + +reliable server function ServerUse() +{ + PerformedUseAction(); + //return; +} + +function bool PerformedUseAction() +{ + // End:0x4E + if(WorldInfo.Pauser == PlayerReplicationInfo) + { + // End:0x4C + if(int(Role) == int(ROLE_Authority)) + { + SetPause(false); + } + return true; + } + // End:0x5F + if(Pawn == none) + { + return true; + } + // End:0x75 + if(int(Role) < int(ROLE_Authority)) + { + return false; + } + // End:0xB7 + if(Vehicle(Pawn) != none) + { + return Vehicle(Pawn).DriverLeave(false); + } + // End:0xC6 + if(FindVehicleToDrive()) + { + return true; + } + return TriggerInteracted(); + //return ReturnValue; +} + +event bool FindVehicleToDrive() +{ + local Vehicle V, Best; + local Vector ViewDir, PawnLoc2D, VLoc2D; + local float NewDot, BestDot; + + // End:0x7A + if((Vehicle(Pawn.Base) != none) && Vehicle(Pawn.Base).TryToDrive(Pawn)) + { + return true; + } + PawnLoc2D = Pawn.Location; + PawnLoc2D.Z = 0.0000000; + ViewDir = Vector(Pawn.Rotation); + // End:0x24A + foreach Pawn.OverlappingActors(Class'Engine.Vehicle', V, Pawn.VehicleCheckRadius) + { + VLoc2D = V.Location; + VLoc2D.Z = 0.0000000; + NewDot = Normal(VLoc2D - PawnLoc2D) Dot ViewDir; + // End:0x249 + if((Best == none) || NewDot > BestDot) + { + // End:0x249 + if(FastTrace(V.Location, Pawn.Location)) + { + Best = V; + BestDot = NewDot; + } + } + } + return (Best != none) && Best.TryToDrive(Pawn); + //return ReturnValue; +} + +function bool TriggerInteracted() +{ + local Actor A; + local int Idx; + local float Weight; + local bool bInserted; + local Vector CameraLoc; + local Rotator CameraRot; + local array useList; + local array sortedList; + local array weightList; + + // End:0x2F1 + if(Pawn != none) + { + GetTriggerUseList(InteractDistance, 60.0000000, 0.0000000, true, useList); + // End:0x2F1 + if(useList.Length > 0) + { + GetPlayerViewPoint(CameraLoc, CameraRot); + J0x62: + + // End:0x289 [Loop If] + if(useList.Length > 0) + { + A = useList[useList.Length - 1]; + useList.Length = useList.Length - 1; + Weight = Normal(A.Location - CameraLoc) Dot Vector(CameraRot); + Weight += (1.0000000 - (VSize(A.Location - Pawn.Location) / InteractDistance)); + bInserted = false; + Idx = 0; + J0x161: + + // End:0x229 [Loop If] + if((Idx < sortedList.Length) && !bInserted) + { + // End:0x21B + if(weightList[Idx] < Weight) + { + sortedList.Insert(Idx, 1); + weightList.Insert(Idx, 1); + sortedList[Idx] = A; + weightList[Idx] = Weight; + bInserted = true; + } + Idx++; + // [Loop Continue] + goto J0x161; + } + // End:0x286 + if(!bInserted) + { + Idx = sortedList.Length; + sortedList[Idx] = A; + weightList[Idx] = Weight; + } + // [Loop Continue] + goto J0x62; + } + Idx = 0; + J0x294: + + // End:0x2F1 [Loop If] + if(Idx < sortedList.Length) + { + // End:0x2E3 + if(sortedList[Idx].UsedBy(Pawn)) + { + return true; + } + Idx++; + // [Loop Continue] + goto J0x294; + } + } + } + return false; + //return ReturnValue; +} + +exec function Suicide() +{ + ServerSuicide(); + //return; +} + +reliable server function ServerSuicide() +{ + // End:0xA2 + if((Pawn != none) && ((WorldInfo.TimeSeconds - Pawn.LastStartTime) > float(10)) || int(WorldInfo.NetMode) == int(NM_Standalone)) + { + Pawn.Suicide(); + } + //return; +} + +exec function SetName(coerce string S) +{ + local string NewName; + local LocalPlayer LocPlayer; + + // End:0x1EA + if(S != "") + { + LocPlayer = LocalPlayer(Player); + // End:0x1AE + if(((LocPlayer != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + // End:0x1AE + if((int(OnlineSub.PlayerInterface.GetLoginStatus(byte(LocPlayer.ControllerId))) == int(2)) && OnlineSub.GameInterface.GetGameSettings('Game') != none) + { + S = OnlineSub.PlayerInterface.GetPlayerNickname(byte(LocPlayer.ControllerId)); + } + } + NewName = S; + ServerChangeName(NewName); + UpdateURL("Name", NewName, true); + SaveConfig(); + } + //return; +} + +reliable server function ServerChangeName(coerce string S) +{ + // End:0x4F + if(S != "") + { + WorldInfo.Game.ChangeName(self, S, true); + } + //return; +} + +exec function SwitchTeam() +{ + // End:0x6D + if((PlayerReplicationInfo.Team == none) || PlayerReplicationInfo.Team.TeamIndex == 1) + { + ServerChangeTeam(0); + } + else + { + ServerChangeTeam(1); + } + //return; +} + +exec function ChangeTeam(optional string TeamName) +{ + local int N; + + // End:0x23 + if(TeamName ~= "blue") + { + N = 1; + } + else + { + // End:0xB6 + if((((TeamName ~= "red") || PlayerReplicationInfo == none) || PlayerReplicationInfo.Team == none) || PlayerReplicationInfo.Team.TeamIndex > 1) + { + N = 0; + } + else + { + N = 1 - PlayerReplicationInfo.Team.TeamIndex; + } + } + ServerChangeTeam(N); + //return; +} + +reliable server function ServerChangeTeam(int N) +{ + local TeamInfo OldTeam; + + OldTeam = PlayerReplicationInfo.Team; + WorldInfo.Game.ChangeTeam(self, N, true); + // End:0xFA + if(WorldInfo.Game.bTeamGame && PlayerReplicationInfo.Team != OldTeam) + { + // End:0xFA + if(Pawn != none) + { + Pawn.PlayerChangedTeam(); + } + } + //return; +} + +exec function SwitchLevel(string URL) +{ + // End:0x7E + if((int(WorldInfo.NetMode) == int(NM_Standalone)) || int(WorldInfo.NetMode) == int(NM_ListenServer)) + { + WorldInfo.ServerTravel(URL); + } + //return; +} + +reliable client simulated event ClientSetProgressMessage(PlayerController.EProgressMessageType MessageType, string Message, optional string Title, optional bool bIgnoreFutureNetworkMessages) +{ + // End:0x7F + if(LocalPlayer(Player) != none) + { + LocalPlayer(Player).ViewportClient.SetProgressMessage(MessageType, Message, Title, bIgnoreFutureNetworkMessages); + } + //return; +} + +function Restart(bool bVehicleTransition) +{ + super.Restart(bVehicleTransition); + ServerTimeStamp = 0.0000000; + ResetTimeMargin(); + EnterStartState(); + ClientRestart(Pawn); + SetViewTarget(Pawn); + ResetCameraMode(); + //return; +} + +// Export UPlayerController::execServerNotifyLoadedWorld(FFrame&, void* const) +reliable server native final event ServerNotifyLoadedWorld(name WorldPackageName); + +event NotifyLoadedWorld(name WorldPackageName, bool bFinalDest) +{ + local PlayerStart P; + local Rotator SpawnRotation; + + SetViewTarget(self); + // End:0xBF + foreach WorldInfo.AllNavigationPoints(Class'Engine.PlayerStart', P) + { + SetLocation(P.Location); + SpawnRotation.Yaw = P.Rotation.Yaw; + SetRotation(SpawnRotation); + // End:0xBF + break; + } + //return; +} + +// Export UPlayerController::execHasClientLoadedCurrentWorld(FFrame&, void* const) +native final function bool HasClientLoadedCurrentWorld(); + +// Export UPlayerController::execForceSingleNetUpdateFor(FFrame&, void* const) +native final function ForceSingleNetUpdateFor(Actor Target); + +function EnterStartState() +{ + local name NewState; + + // End:0x11 + if(Pawn == none) + { + return; + } + // End:0xE7 + if(Pawn.PhysicsVolume.bWaterVolume) + { + // End:0xBC + if(Pawn.HeadVolume.bWaterVolume) + { + Pawn.BreathTime = Pawn.UnderWaterTime; + } + NewState = Pawn.WaterMovementState; + } + else + { + NewState = Pawn.LandMovementState; + } + // End:0x136 + if(GetStateName() == NewState) + { + BeginState(NewState); + } + else + { + GotoState(NewState); + } + //return; +} + +reliable client simulated function ClientRestart(Pawn NewPawn) +{ + ResetPlayerMovementInput(); + CleanOutSavedMoves(); + Pawn = NewPawn; + // End:0x6F + if((Pawn != none) && Pawn.bTearOff) + { + UnPossess(); + Pawn = none; + } + AcknowledgePossession(Pawn); + // End:0xA1 + if(Pawn == none) + { + GotoState('WaitingForPawn'); + return; + } + Pawn.ClientRestart(); + // End:0xFC + if(int(Role) < int(ROLE_Authority)) + { + SetViewTarget(Pawn); + ResetCameraMode(); + EnterStartState(); + } + CleanOutSavedMoves(); + //return; +} + +function GameHasEnded(optional Actor EndGameFocus, optional bool bIsWinner) +{ + SetViewTarget(EndGameFocus); + GotoState('RoundEnded'); + ClientGameEnded(EndGameFocus, bIsWinner); + //return; +} + +reliable client simulated function ClientGameEnded(Actor EndGameFocus, bool bIsWinner) +{ + SetViewTarget(EndGameFocus); + GotoState('RoundEnded'); + //return; +} + +function NotifyChangedWeapon(Weapon PreviousWeapon, Weapon NewWeapon) +{ + //return; +} + +event PlayerTick(float DeltaTime) +{ + // End:0x25 + if(!bShortConnectTimeOut) + { + bShortConnectTimeOut = true; + ServerShortTimeout(); + } + // End:0xB8 + if(Pawn != AcknowledgedPawn) + { + // End:0xA5 + if(int(Role) < int(ROLE_Authority)) + { + // End:0xA5 + if((AcknowledgedPawn != none) && AcknowledgedPawn.Controller == self) + { + AcknowledgedPawn.Controller = none; + } + } + AcknowledgePossession(Pawn); + } + PlayerInput.PlayerInput(DeltaTime); + // End:0xF7 + if(bUpdatePosition) + { + ClientUpdatePosition(); + } + PlayerMove(DeltaTime); + AdjustFOV(DeltaTime); + //return; +} + +function PlayerMove(float DeltaTime) +{ + //return; +} + +function bool AimingHelp(bool bInstantHit) +{ + return (int(WorldInfo.NetMode) == int(NM_Standalone)) && bAimingHelp; + //return ReturnValue; +} + +event CameraLookAtFinished(SeqAct_CameraLookAt Action) +{ + //return; +} + +function Rotator GetAdjustedAimFor(Weapon W, Vector StartFireLoc) +{ + //return ReturnValue; +} + +function float AimHelpDot(bool bInstantHit) +{ + // End:0x23 + if(FOVAngle < (DefaultFOV - float(8))) + { + return 0.9900000; + } + // End:0x36 + if(bInstantHit) + { + return 0.9700000; + } + return 0.9300000; + //return ReturnValue; +} + +event bool NotifyLanded(Vector HitNormal, Actor FloorActor) +{ + return bUpdating; + //return ReturnValue; +} + +function AdjustFOV(float DeltaTime) +{ + // End:0xE7 + if(FOVAngle != DesiredFOV) + { + // End:0x73 + if(FOVAngle > DesiredFOV) + { + FOVAngle = FOVAngle - FMax(7.0000000, (0.9000000 * DeltaTime) * (FOVAngle - DesiredFOV)); + } + else + { + FOVAngle = FOVAngle - FMin(-7.0000000, (0.9000000 * DeltaTime) * (FOVAngle - DesiredFOV)); + } + // End:0xE7 + if(Abs(FOVAngle - DesiredFOV) <= float(10)) + { + FOVAngle = DesiredFOV; + } + } + //return; +} + +event float GetFOVAngle() +{ + return ((PlayerCamera != none) ? PlayerCamera.GetFOVAngle() : FOVAngle); + //return ReturnValue; +} + +// Export UPlayerController::execIsLocalPlayerController(FFrame&, void* const) +native function bool IsLocalPlayerController(); + +// Export UPlayerController::execIsLocalController(FFrame&, void* const) +native function bool IsLocalController(); + +// Export UPlayerController::execSetViewTarget(FFrame&, void* const) +native function SetViewTarget(Actor NewViewTarget, optional ViewTargetTransitionParams TransitionParams); + +final function SetViewTargetWithBlend(Actor NewViewTarget, optional float BlendTime = 0.3500000, optional Camera.EViewTargetBlendFunction BlendFunc = 1, optional float BlendExp = 2.0000000, optional bool bLockOutgoing = false) +{ + local ViewTargetTransitionParams TransitionParams; + + TransitionParams.BlendTime = BlendTime; + TransitionParams.BlendFunction = BlendFunc; + TransitionParams.BlendExp = BlendExp; + TransitionParams.bLockOutgoing = bLockOutgoing; + SetViewTarget(NewViewTarget, TransitionParams); + //return; +} + +reliable client simulated event ClientSetViewTarget(Actor A, optional ViewTargetTransitionParams TransitionParams) +{ + // End:0x45 + if(!bClientSimulatingViewTarget) + { + // End:0x29 + if(A == none) + { + ServerVerifyViewTarget(); + } + SetViewTarget(A, TransitionParams); + } + //return; +} + +// Export UPlayerController::execGetViewTarget(FFrame&, void* const) +native function Actor GetViewTarget(); + +reliable server function ServerVerifyViewTarget() +{ + local Actor TheViewTarget; + + TheViewTarget = GetViewTarget(); + // End:0x25 + if(TheViewTarget == self) + { + return; + } + ClientSetViewTarget(TheViewTarget); + //return; +} + +event SpawnPlayerCamera() +{ + // End:0x67 + if(CameraClass != none) + { + PlayerCamera = Spawn(CameraClass, self); + // End:0x64 + if(PlayerCamera != none) + { + PlayerCamera.InitializeFor(self); + } + } + //return; +} + +// Export UPlayerController::execGetPlayerViewPoint(FFrame&, void* const) +native function GetPlayerViewPoint(out Vector out_Location, out Rotator out_Rotation); + +function ViewShake(float DeltaTime) +{ + //return; +} + +function UpdateRotation(float DeltaTime) +{ + local Rotator DeltaRot, NewRotation, ViewRotation; + + ViewRotation = Rotation; + // End:0x4E + if(Pawn != none) + { + Pawn.SetDesiredRotation(ViewRotation); + } + DeltaRot.Yaw = int(PlayerInput.aTurn); + DeltaRot.Pitch = int(PlayerInput.aLookUp); + ProcessViewRotation(DeltaTime, ViewRotation, DeltaRot); + SetRotation(ViewRotation); + ViewShake(DeltaTime); + NewRotation = ViewRotation; + NewRotation.Roll = Rotation.Roll; + // End:0x198 + if(Pawn != none) + { + Pawn.FaceRotation(NewRotation, DeltaTime); + } + //return; +} + +function ProcessViewRotation(float DeltaTime, out Rotator out_ViewRotation, Rotator DeltaRot) +{ + // End:0x49 + if(PlayerCamera != none) + { + PlayerCamera.ProcessViewRotation(DeltaTime, out_ViewRotation, DeltaRot); + } + // End:0x95 + if(Pawn != none) + { + Pawn.ProcessViewRotation(DeltaTime, out_ViewRotation, DeltaRot); + } + else + { + out_ViewRotation += DeltaRot; + out_ViewRotation = LimitViewRotation(out_ViewRotation, -16384.0000000, 16383.0000000); + } + //return; +} + +event Rotator LimitViewRotation(Rotator ViewRotation, float ViewPitchMin, float ViewPitchMax) +{ + ViewRotation.Pitch = ViewRotation.Pitch & 65535; + // End:0x125 + if((float(ViewRotation.Pitch) > ViewPitchMax) && float(ViewRotation.Pitch) < (float(65535) + ViewPitchMin)) + { + // End:0xF4 + if(ViewRotation.Pitch < 32768) + { + ViewRotation.Pitch = int(ViewPitchMax); + } + else + { + ViewRotation.Pitch = int(float(65535) + ViewPitchMin); + } + } + return ViewRotation; + //return ReturnValue; +} + +function CheckJumpOrDuck() +{ + // End:0x48 + if(bPressedJump && Pawn != none) + { + Pawn.DoJump(bUpdating); + } + //return; +} + +function AdjustPlayerWalkingMoveAccel(out Vector newAccel) +{ + //return; +} + +unreliable server function ServerSetSpectatorLocation(Vector NewLoc) +{ + // End:0x77 + if(WorldInfo.TimeSeconds != LastSpectatorStateSynchTime) + { + ClientGotoState(GetStateName()); + ClientSetViewTarget(GetViewTarget()); + LastSpectatorStateSynchTime = WorldInfo.TimeSeconds; + } + //return; +} + +unreliable server function ServerViewNextPlayer(optional bool bFriendlyOnly) +{ + // End:0x19 + if(IsSpectating()) + { + ViewAPlayer(1); + } + //return; +} + +unreliable server function ServerViewPrevPlayer(optional bool bFriendlyOnly) +{ + // End:0x1D + if(IsSpectating()) + { + ViewAPlayer(-1); + } + //return; +} + +function PlayerReplicationInfo GetNextViewablePlayer(int Dir) +{ + local int I, CurrentIndex, NewIndex; + local PlayerReplicationInfo PRI; + + CurrentIndex = -1; + // End:0xDA + if(RealViewTarget != none) + { + I = 0; + J0x29: + + // End:0xDA [Loop If] + if(I < WorldInfo.GRI.PRIArray.Length) + { + // End:0xCC + if(RealViewTarget == WorldInfo.GRI.PRIArray[I]) + { + CurrentIndex = I; + // [Explicit Break] + goto J0xDA; + } + I++; + // [Loop Continue] + goto J0x29; + } + } + J0xDA: + + NewIndex = CurrentIndex + Dir; + J0xF8: + + // End:0x282 [Loop If] + if((NewIndex >= 0) && NewIndex < WorldInfo.GRI.PRIArray.Length) + { + PRI = WorldInfo.GRI.PRIArray[NewIndex]; + // End:0x261 + if((((PRI != none) && Controller(PRI.Owner) != none) && Controller(PRI.Owner).Pawn != none) && WorldInfo.Game.CanSpectate(self, PRI)) + { + return PRI; + } + NewIndex = NewIndex + Dir; + // [Loop Continue] + goto J0xF8; + } + CurrentIndex = ((NewIndex < 0) ? WorldInfo.GRI.PRIArray.Length : -1); + NewIndex = CurrentIndex + Dir; + J0x2F4: + + // End:0x47E [Loop If] + if((NewIndex >= 0) && NewIndex < WorldInfo.GRI.PRIArray.Length) + { + PRI = WorldInfo.GRI.PRIArray[NewIndex]; + // End:0x45D + if((((PRI != none) && Controller(PRI.Owner) != none) && Controller(PRI.Owner).Pawn != none) && WorldInfo.Game.CanSpectate(self, PRI)) + { + return PRI; + } + NewIndex = NewIndex + Dir; + // [Loop Continue] + goto J0x2F4; + } + return none; + //return ReturnValue; +} + +function ViewAPlayer(int Dir) +{ + local PlayerReplicationInfo PRI; + + PRI = GetNextViewablePlayer(Dir); + // End:0x40 + if(PRI != none) + { + SetViewTarget(PRI); + } + //return; +} + +unreliable server function ServerViewSelf(optional ViewTargetTransitionParams TransitionParams) +{ + // End:0x40 + if(IsSpectating()) + { + ResetCameraMode(); + SetViewTarget(self, TransitionParams); + ClientSetViewTarget(self, TransitionParams); + } + //return; +} + +function bool CanRestartPlayer() +{ + return (((PlayerReplicationInfo != none) && !PlayerReplicationInfo.bOnlySpectator) && HasClientLoadedCurrentWorld()) && PendingSwapConnection == none; + //return ReturnValue; +} + +function DrawHUD(HUD H) +{ + // End:0x37 + if(Pawn != none) + { + Pawn.DrawHUD(H); + } + // End:0x6E + if(PlayerInput != none) + { + PlayerInput.DrawHUD(H); + } + //return; +} + +event AdjustHUDRenderSize(out int X, out int Y, out int SizeX, out int SizeY, const int FullScreenSizeX, const int FullScreenSizeY) +{ + // End:0x49 + if(bRenderHUDFullScreen) + { + X = 0; + Y = 0; + SizeX = FullScreenSizeX; + SizeY = FullScreenSizeY; + } + //return; +} + +function OnToggleInput(SeqAct_ToggleInput inAction) +{ + local bool bNewValue; + + // End:0x16 + if(int(Role) < int(ROLE_Authority)) + { + return; + } + // End:0xC0 + if(inAction.InputLinks[0].bHasImpulse) + { + // End:0x85 + if(inAction.bToggleMovement) + { + IgnoreMoveInput(false); + ClientIgnoreMoveInput(false); + } + // End:0xBD + if(inAction.bToggleTurning) + { + IgnoreLookInput(false); + ClientIgnoreLookInput(false); + } + } + else + { + // End:0x16A + if(inAction.InputLinks[1].bHasImpulse) + { + // End:0x12F + if(inAction.bToggleMovement) + { + IgnoreMoveInput(true); + ClientIgnoreMoveInput(true); + } + // End:0x167 + if(inAction.bToggleTurning) + { + IgnoreLookInput(true); + ClientIgnoreLookInput(true); + } + } + else + { + // End:0x264 + if(inAction.InputLinks[2].bHasImpulse) + { + // End:0x203 + if(inAction.bToggleMovement) + { + bNewValue = !IsMoveInputIgnored(); + IgnoreMoveInput(bNewValue); + ClientIgnoreMoveInput(bNewValue); + } + // End:0x264 + if(inAction.bToggleTurning) + { + bNewValue = !IsLookInputIgnored(); + IgnoreLookInput(bNewValue); + ClientIgnoreLookInput(bNewValue); + } + } + } + } + //return; +} + +reliable client simulated function ClientIgnoreMoveInput(bool bIgnore) +{ + IgnoreMoveInput(bIgnore); + //return; +} + +reliable client simulated function ClientIgnoreLookInput(bool bIgnore) +{ + IgnoreLookInput(bIgnore); + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + super.DisplayDebug(HUD, out_YL, out_YPos); + // End:0x172 + if(HUD.ShouldDisplayDebug('Camera')) + { + // End:0x9C + if(PlayerCamera != none) + { + PlayerCamera.DisplayDebug(HUD, out_YL, out_YPos); + } + else + { + HUD.Canvas.SetDrawColor(255, 0, 0); + HUD.Canvas.DrawText("NO CAMERA"); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + } + } + // End:0x2D6 + if(HUD.ShouldDisplayDebug('Input')) + { + HUD.Canvas.SetDrawColor(255, 0, 0); + HUD.Canvas.DrawText((((("Input ignoremove " $ string(bIgnoreMoveInput)) $ " ignore look ") $ string(bIgnoreLookInput)) $ " aForward ") $ string(PlayerInput.aForward)); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + } + //return; +} + +function OnDrawText(SeqAct_DrawText inAction) +{ + // End:0x80 + if(inAction.InputLinks[0].bHasImpulse) + { + ClientDrawKismetText(inAction.DrawTextInfo, inAction.DisplayTimeSeconds); + } + else + { + ClientClearKismetText(inAction.DrawTextInfo.MessageOffset); + } + //return; +} + +reliable client final simulated function ClientDrawKismetText(KismetDrawTextInfo DrawTextInfo, float DisplayTime) +{ + // End:0x11 + if(!bShowKismetDrawText) + { + return; + } + // End:0x6B + if(DisplayTime > float(0)) + { + DrawTextInfo.MessageEndTime = WorldInfo.TimeSeconds + DisplayTime; + } + else + { + DrawTextInfo.MessageEndTime = -1.0000000; + } + myHUD.KismetTextInfo.AddItem(DrawTextInfo); + //return; +} + +reliable client final simulated function ClientClearKismetText(Vector2D MessageOffset) +{ + local int RemoveIdx; + + RemoveIdx = myHUD.KismetTextInfo.Find('MessageOffset', MessageOffset); + // End:0x7B + if(RemoveIdx != -1) + { + myHUD.KismetTextInfo.Remove(RemoveIdx, 1); + } + //return; +} + +simulated function OnSetCameraTarget(SeqAct_SetCameraTarget inAction) +{ + local Actor RealCameraTarget; + + RealCameraTarget = inAction.CameraTarget; + // End:0x5F + if(RealCameraTarget == none) + { + RealCameraTarget = ((Pawn != none) ? Pawn : self); + } + else + { + // End:0xB3 + if(RealCameraTarget.IsA('Controller')) + { + RealCameraTarget = Controller(RealCameraTarget).Pawn; + } + } + SetViewTarget(RealCameraTarget, inAction.TransitionParams); + //return; +} + +simulated function OnToggleHUD(SeqAct_ToggleHUD inAction) +{ + // End:0x13E + if(myHUD != none) + { + // End:0x6A + if(inAction.InputLinks[0].bHasImpulse) + { + myHUD.bShowHUD = true; + } + else + { + // End:0xC5 + if(inAction.InputLinks[1].bHasImpulse) + { + myHUD.bShowHUD = false; + } + else + { + // End:0x13E + if(inAction.InputLinks[2].bHasImpulse) + { + myHUD.bShowHUD = !myHUD.bShowHUD; + } + } + } + } + //return; +} + +unreliable server event ServerCauseEvent(name EventName) +{ + local array AllConsoleEvents; + local SeqEvent_Console ConsoleEvt; + local Sequence GameSeq; + local int Idx; + local bool bFoundEvt; + + GameSeq = WorldInfo.GetGameSequence(); + // End:0x14F + if((GameSeq != none) && EventName != 'None') + { + GameSeq.FindSeqObjectsByClass(Class'Engine.SeqEvent_Console', true, AllConsoleEvents); + Idx = 0; + J0x8E: + + // End:0x14F [Loop If] + if(Idx < AllConsoleEvents.Length) + { + ConsoleEvt = SeqEvent_Console(AllConsoleEvents[Idx]); + // End:0x141 + if((ConsoleEvt != none) && EventName == ConsoleEvt.ConsoleEventName) + { + bFoundEvt = true; + ConsoleEvt.CheckActivate(self, Pawn); + } + Idx++; + // [Loop Continue] + goto J0x8E; + } + } + // End:0x15E + if(!bFoundEvt) + { + } + //return; +} + +exec function CauseEvent(optional name EventName) +{ + ServerCauseEvent(EventName); + //return; +} + +exec function CE(optional name EventName) +{ + ServerCauseEvent(EventName); + //return; +} + +exec function ListConsoleEvents() +{ + local array ConsoleEvents; + local SeqEvent_Console ConsoleEvt; + local Sequence GameSeq; + local int Idx; + + GameSeq = WorldInfo.GetGameSequence(); + // End:0x17A + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'Engine.SeqEvent_Console', true, ConsoleEvents); + // End:0x9B + if(ConsoleEvents.Length > 0) + { + ClientMessage("Console events:",, 15.0000000); + } + Idx = 0; + J0xA6: + + // End:0x17A [Loop If] + if(Idx < ConsoleEvents.Length) + { + ConsoleEvt = SeqEvent_Console(ConsoleEvents[Idx]); + // End:0x16C + if((ConsoleEvt != none) && ConsoleEvt.bEnabled) + { + ClientMessage(("-" @ string(ConsoleEvt.ConsoleEventName)) @ ConsoleEvt.EventDesc,, 15.0000000); + } + Idx++; + // [Loop Continue] + goto J0xA6; + } + } + //return; +} + +exec function ListCE() +{ + ListConsoleEvents(); + //return; +} + +exec function RemoteEvent(optional name EventName) +{ + ServerRemoteEvent(EventName); + //return; +} + +exec function RE(optional name EventName) +{ + ServerRemoteEvent(EventName); + //return; +} + +unreliable server function ServerRemoteEvent(name EventName) +{ + local array AllRemoteEvents; + local SeqEvent_RemoteEvent RemoteEvt; + local Sequence GameSeq; + local int Idx; + local bool bFoundEvt; + + GameSeq = WorldInfo.GetGameSequence(); + // End:0x14D + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'Engine.SeqEvent_RemoteEvent', true, AllRemoteEvents); + // End:0x14D + if(EventName != 'None') + { + Idx = 0; + J0x8C: + + // End:0x14D [Loop If] + if(Idx < AllRemoteEvents.Length) + { + RemoteEvt = SeqEvent_RemoteEvent(AllRemoteEvents[Idx]); + // End:0x13F + if((RemoteEvt != none) && EventName == RemoteEvt.EventName) + { + bFoundEvt = true; + RemoteEvt.CheckActivate(self, Pawn); + } + Idx++; + // [Loop Continue] + goto J0x8C; + } + } + } + // End:0x23B + if(!bFoundEvt) + { + ClientMessage("Remote events:",, 15.0000000); + Idx = 0; + J0x187: + + // End:0x23B [Loop If] + if(Idx < AllRemoteEvents.Length) + { + RemoteEvt = SeqEvent_RemoteEvent(AllRemoteEvents[Idx]); + // End:0x22D + if((RemoteEvt != none) && RemoteEvt.bEnabled) + { + ClientMessage("-" @ string(RemoteEvt.EventName),, 15.0000000); + } + Idx++; + // [Loop Continue] + goto J0x187; + } + } + //return; +} + +exec function ShowPlayerState() +{ + DumpStateStack(); + //return; +} + +exec function ShowGameState() +{ + // End:0x5B + if(WorldInfo.Game != none) + { + WorldInfo.Game.DumpStateStack(); + } + //return; +} + +function NotifyTakeHit(Controller InstigatedBy, Vector HitLocation, int Damage, Class DamageType, Vector Momentum) +{ + super.NotifyTakeHit(InstigatedBy, HitLocation, Damage, DamageType, Momentum); + ClientPlayForceFeedbackWaveform(DamageType.default.DamagedFFWaveform); + //return; +} + +function OnForceFeedback(SeqAct_ForceFeedback Action) +{ + // End:0x66 + if(Action.InputLinks[0].bHasImpulse) + { + ClientPlayForceFeedbackWaveform(Action.FFWaveform); + } + else + { + // End:0xC5 + if(Action.InputLinks[1].bHasImpulse) + { + ClientStopForceFeedbackWaveform(Action.FFWaveform); + } + } + //return; +} + +event PlayRumble(const AnimNotify_Rumble TheAnimNotify) +{ + // End:0x68 + if(TheAnimNotify.PredefinedWaveForm != none) + { + ClientPlayForceFeedbackWaveform(TheAnimNotify.PredefinedWaveForm.default.TheWaveForm); + } + else + { + ClientPlayForceFeedbackWaveform(TheAnimNotify.WaveForm); + } + //return; +} + +reliable client simulated event ClientPlayForceFeedbackWaveform(ForceFeedbackWaveform FFWaveform, optional Actor FFWaveformInstigator, optional float fScale = 1.0000000, optional float fScaleDuration = 1.0000000, optional bool bForcePlay) +{ + PlayForceFeedbackWaveform(FFWaveform, FFWaveformInstigator, fScale, fScaleDuration, bForcePlay); + //return; +} + +simulated event PlayForceFeedbackWaveform(ForceFeedbackWaveform FFWaveform, optional Actor FFWaveformInstigator, optional float fScale = 1.0000000, optional float fScaleDuration = 1.0000000, optional bool bForcePlay) +{ + // End:0x88 + if((((PlayerInput != none) && !PlayerInput.bUsingGamepad) && !WorldInfo.IsConsoleBuild(0)) && fScale == 0.0000000) + { + return; + } + // End:0x113 + if(((ForceFeedbackManager != none) && PlayerReplicationInfo != none) && bForcePlay || IsForceFeedbackAllowed()) + { + ForceFeedbackManager.PlayForceFeedbackWaveform(FFWaveform, FFWaveformInstigator, fScale, fScaleDuration, bForcePlay); + } + //return; +} + +reliable client final simulated event ClientStopForceFeedbackWaveform(optional ForceFeedbackWaveform FFWaveform) +{ + StopForceFeedbackWaveform(FFWaveform); + //return; +} + +simulated event StopForceFeedbackWaveform(optional ForceFeedbackWaveform FFWaveform) +{ + // End:0x38 + if(ForceFeedbackManager != none) + { + ForceFeedbackManager.StopForceFeedbackWaveform(FFWaveform); + } + //return; +} + +simulated function bool IsForceFeedbackAllowed() +{ + return (ForceFeedbackManager != none) && ForceFeedbackManager.bAllowsForceFeedback; + //return ReturnValue; +} + +function OnToggleCinematicMode(SeqAct_ToggleCinematicMode Action) +{ + local bool bNewCinematicMode; + + // End:0x16 + if(int(Role) < int(ROLE_Authority)) + { + return; + } + // End:0x5C + if(Action.InputLinks[0].bHasImpulse) + { + bNewCinematicMode = true; + } + else + { + // End:0xA2 + if(Action.InputLinks[1].bHasImpulse) + { + bNewCinematicMode = false; + } + else + { + // End:0xF1 + if(Action.InputLinks[2].bHasImpulse) + { + bNewCinematicMode = !bCinematicMode; + } + } + } + SetCinematicMode(bNewCinematicMode, Action.bHidePlayer, Action.bHideHUD, Action.bDisableMovement, Action.bDisableTurning, Action.bDisableInput); + //return; +} + +function SetCinematicMode(bool bInCinematicMode, bool bHidePlayer, bool bAffectsHUD, bool bAffectsMovement, bool bAffectsTurning, bool bAffectsButtons) +{ + local bool bAdjustMoveInput, bAdjustLookInput; + + bCinematicMode = bInCinematicMode; + // End:0x63 + if(bCinematicMode) + { + // End:0x60 + if((Pawn != none) && bHidePlayer) + { + Pawn.SetHidden(true); + } + } + else + { + // End:0x92 + if(Pawn != none) + { + Pawn.SetHidden(false); + } + } + bAdjustMoveInput = bAffectsMovement && bCinematicMode != bCinemaDisableInputMove; + bAdjustLookInput = bAffectsTurning && bCinematicMode != bCinemaDisableInputLook; + // End:0x128 + if(bAdjustMoveInput) + { + IgnoreMoveInput(bCinematicMode); + bCinemaDisableInputMove = bCinematicMode; + } + // End:0x15E + if(bAdjustLookInput) + { + IgnoreLookInput(bCinematicMode); + bCinemaDisableInputLook = bCinematicMode; + } + ClientSetCinematicMode(bCinematicMode, bAdjustMoveInput, bAdjustLookInput, bAffectsHUD); + //return; +} + +reliable client simulated function ClientSetCinematicMode(bool bInCinematicMode, bool bAffectsMovement, bool bAffectsTurning, bool bAffectsHUD) +{ + bCinematicMode = bInCinematicMode; + // End:0x5F + if((myHUD != none) && bAffectsHUD) + { + myHUD.bShowHUD = !bCinematicMode; + } + // End:0x80 + if(bAffectsMovement) + { + IgnoreMoveInput(bCinematicMode); + } + // End:0xA1 + if(bAffectsTurning) + { + IgnoreLookInput(bCinematicMode); + } + //return; +} + +function IgnoreMoveInput(bool bNewMoveInput) +{ + bIgnoreMoveInput = ((bNewMoveInput) ? 1 : 0); + //return; +} + +event bool IsMoveInputIgnored() +{ + return int(bIgnoreMoveInput) > int(0); + //return ReturnValue; +} + +function IgnoreLookInput(bool bNewLookInput) +{ + bIgnoreLookInput = ((bNewLookInput) ? 1 : 0); + //return; +} + +event bool IsLookInputIgnored() +{ + return int(bIgnoreLookInput) > int(0); + //return ReturnValue; +} + +function ResetPlayerMovementInput() +{ + bIgnoreMoveInput = default.bIgnoreMoveInput; + bIgnoreLookInput = default.bIgnoreLookInput; + //return; +} + +function OnConsoleCommand(SeqAct_ConsoleCommand inAction) +{ + local string Command; + + // End:0x85 + foreach inAction.Commands(Command) + { + // End:0x84 + if(!Left(Command, 4) ~= "set " && !Left(Command, 9) ~= "setnopec ") + { + ConsoleCommand(Command); + } + } + //return; +} + +reliable client simulated event ClientForceGarbageCollection() +{ + WorldInfo.ForceGarbageCollection(); + //return; +} + +final event LevelStreamingStatusChanged(LevelStreaming LevelObject, bool bNewShouldBeLoaded, bool bNewShouldBeVisible, bool bNewShouldBlockOnLoad) +{ + ClientUpdateLevelStreamingStatus(LevelObject.PackageName, bNewShouldBeLoaded, bNewShouldBeVisible, bNewShouldBlockOnLoad); + //return; +} + +// Export UPlayerController::execClientUpdateLevelStreamingStatus(FFrame&, void* const) +reliable client native simulated function ClientUpdateLevelStreamingStatus(name PackageName, bool bNewShouldBeLoaded, bool bNewShouldBeVisible, bool bNewShouldBlockOnLoad); + +// Export UPlayerController::execServerUpdateLevelVisibility(FFrame&, void* const) +reliable server native final event ServerUpdateLevelVisibility(name PackageName, bool bIsVisible); + +reliable client simulated event ClientPrepareMapChange(name LevelName, bool bFirst, bool bLast) +{ + local PlayerController PC; + + // End:0x38 + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + // End:0x34 + if(PC != self) + { + return; + // End:0x37 + continue; + } + // End:0x38 + break; + } + // End:0x66 + if(bFirst) + { + PendingMapChangeLevelNames.Length = 0; + ClearTimer('DelayedPrepareMapChange'); + } + PendingMapChangeLevelNames[PendingMapChangeLevelNames.Length] = LevelName; + // End:0x9B + if(bLast) + { + DelayedPrepareMapChange(); + } + //return; +} + +function DelayedPrepareMapChange() +{ + // End:0x38 + if(WorldInfo.IsPreparingMapChange()) + { + SetTimer(0.0100000, false, 'DelayedPrepareMapChange'); + } + else + { + WorldInfo.PrepareMapChange(PendingMapChangeLevelNames); + } + //return; +} + +reliable client simulated event ClientCommitMapChange() +{ + // End:0x2D + if(IsTimerActive('DelayedPrepareMapChange')) + { + SetTimer(0.0100000, false, 'ClientCommitMapChange'); + } + else + { + // End:0x53 + if(Pawn != none) + { + SetViewTarget(Pawn); + } + else + { + SetViewTarget(self); + } + WorldInfo.CommitMapChange(); + } + //return; +} + +reliable client simulated event ClientCancelPendingMapChange() +{ + WorldInfo.CancelPendingMapChange(); + //return; +} + +// Export UPlayerController::execClientFlushLevelStreaming(FFrame&, void* const) +reliable client native final simulated event ClientFlushLevelStreaming(); + +reliable client simulated event ClientSetBlockOnAsyncLoading() +{ + WorldInfo.bRequestedBlockOnAsyncLoading = true; + //return; +} + +reliable client simulated function ClientWaitForLevelsVisible(SeqAct_WaitForLevelsVisible inAction) +{ + inAction.CheckLevelsVisible(); + //return; +} + +exec function SaveClassConfig(coerce string ClassName) +{ + local Class saveClass; + + saveClass = Class(DynamicLoadObject(ClassName, Class'Core.Class')); + // End:0x5E + if(saveClass != none) + { + saveClass.static.StaticSaveConfig(); + } + //return; +} + +exec function SaveActorConfig(coerce name actorName) +{ + local Actor ChkActor; + + // End:0x6F + foreach AllActors(Class'Engine.Actor', ChkActor) + { + // End:0x6E + if((ChkActor != none) && ChkActor.Name == actorName) + { + ChkActor.SaveConfig(); + } + } + //return; +} + +final function UIInteraction GetUIController() +{ + local LocalPlayer LP; + local UIInteraction Result; + + LP = LocalPlayer(Player); + // End:0x8E + if((LP != none) && LP.ViewportClient != none) + { + Result = LP.ViewportClient.UIController; + } + return Result; + //return ReturnValue; +} + +// Export UPlayerController::execIsPlayerMuted(FFrame&, void* const) +native final function bool IsPlayerMuted(const out UniqueNetId Sender); + +event GetSeamlessTravelActorList(bool bToEntry, out array ActorList) +{ + HearSoundActiveComponents.Length = 0; + HearSoundPoolComponents.Length = 0; + // End:0x45 + if(myHUD != none) + { + ActorList[ActorList.Length] = myHUD; + } + //return; +} + +function SeamlessTravelTo(PlayerController NewPC) +{ + //return; +} + +function SeamlessTravelFrom(PlayerController OldPC) +{ + OldPC.PlayerReplicationInfo.Reset(); + OldPC.PlayerReplicationInfo.SeamlessTravelTo(PlayerReplicationInfo); + OldPC.bIsPlayer = false; + OldPC.PlayerReplicationInfo.Destroy(); + OldPC.PlayerReplicationInfo = none; + //return; +} + +reliable client simulated function ClientSetOnlineStatus() +{ + //return; +} + +// Export UPlayerController::execGetPlayerControllerFromNetId(FFrame&, void* const) +native static function PlayerController GetPlayerControllerFromNetId(UniqueNetId PlayerNetId); + +reliable client simulated function ClientVoiceHandshakeComplete() +{ + local int PeerIdx; + + bHasVoiceHandshakeCompleted = true; + PeerIdx = 0; + J0x17: + + // End:0x93 [Loop If] + if(PeerIdx < ConnectedPeers.Length) + { + ServerAddPeer(ConnectedPeers[PeerIdx].PlayerID, ConnectedPeers[PeerIdx].NatType); + PeerIdx++; + // [Loop Continue] + goto J0x17; + } + //return; +} + +reliable client simulated event ClientMutePlayer(UniqueNetId PlayerNetId) +{ + local LocalPlayer LocPlayer; + + // End:0x52 + if(VoicePacketFilter.Find('Uid', PlayerNetId.Uid) == -1) + { + VoicePacketFilter.AddItem(PlayerNetId); + } + // End:0xE7 + if(NotEqual_InterfaceInterface(VoiceInterface, OnlineVoiceInterface(none))) + { + LocPlayer = LocalPlayer(Player); + // End:0xE7 + if(LocPlayer != none) + { + VoiceInterface.MuteRemoteTalker(byte(LocPlayer.ControllerId), PlayerNetId); + } + } + //return; +} + +reliable client simulated event ClientUnmutePlayer(UniqueNetId PlayerNetId) +{ + local LocalPlayer LocPlayer; + local int RemoveIndex; + + RemoveIndex = VoicePacketFilter.Find('Uid', PlayerNetId.Uid); + // End:0x64 + if(RemoveIndex != -1) + { + VoicePacketFilter.Remove(RemoveIndex, 1); + } + // End:0xF9 + if(NotEqual_InterfaceInterface(VoiceInterface, OnlineVoiceInterface(none))) + { + LocPlayer = LocalPlayer(Player); + // End:0xF9 + if(LocPlayer != none) + { + VoiceInterface.UnmuteRemoteTalker(byte(LocPlayer.ControllerId), PlayerNetId); + } + } + //return; +} + +function GameplayMutePlayer(UniqueNetId PlayerNetId) +{ + // End:0x52 + if(GameplayVoiceMuteList.Find('Uid', PlayerNetId.Uid) == -1) + { + GameplayVoiceMuteList.AddItem(PlayerNetId); + } + // End:0xA4 + if(VoicePacketFilter.Find('Uid', PlayerNetId.Uid) == -1) + { + VoicePacketFilter.AddItem(PlayerNetId); + } + ClientMutePlayer(PlayerNetId); + //return; +} + +function GameplayUnmutePlayer(UniqueNetId PlayerNetId) +{ + local int RemoveIndex; + local PlayerController Other; + + RemoveIndex = GameplayVoiceMuteList.Find('Uid', PlayerNetId.Uid); + // End:0x64 + if(RemoveIndex != -1) + { + GameplayVoiceMuteList.Remove(RemoveIndex, 1); + } + Other = GetPlayerControllerFromNetId(PlayerNetId); + // End:0x1AB + if(Other != none) + { + // End:0x1AB + if((VoiceMuteList.Find('Uid', PlayerNetId.Uid) == -1) && Other.VoiceMuteList.Find('Uid', PlayerReplicationInfo.UniqueId.Uid) == -1) + { + RemoveIndex = VoicePacketFilter.Find('Uid', PlayerNetId.Uid); + // End:0x198 + if(RemoveIndex != -1) + { + VoicePacketFilter.Remove(RemoveIndex, 1); + } + ClientUnmutePlayer(PlayerNetId); + } + } + //return; +} + +reliable server event ServerMutePlayer(UniqueNetId PlayerNetId) +{ + local PlayerController Other; + + // End:0x52 + if(VoiceMuteList.Find('Uid', PlayerNetId.Uid) == -1) + { + VoiceMuteList.AddItem(PlayerNetId); + } + // End:0xA4 + if(VoicePacketFilter.Find('Uid', PlayerNetId.Uid) == -1) + { + VoicePacketFilter.AddItem(PlayerNetId); + } + ClientMutePlayer(PlayerNetId); + Other = GetPlayerControllerFromNetId(PlayerNetId); + // End:0x1C6 + if(Other != none) + { + // End:0x189 + if(Other.VoicePacketFilter.Find('Uid', PlayerReplicationInfo.UniqueId.Uid) == -1) + { + Other.VoicePacketFilter.AddItem(PlayerReplicationInfo.UniqueId); + } + Other.ClientMutePlayer(PlayerReplicationInfo.UniqueId); + } + //return; +} + +reliable server event ServerUnmutePlayer(UniqueNetId PlayerNetId) +{ + local PlayerController Other; + local int RemoveIndex; + + RemoveIndex = VoiceMuteList.Find('Uid', PlayerNetId.Uid); + // End:0x64 + if(RemoveIndex != -1) + { + VoiceMuteList.Remove(RemoveIndex, 1); + } + Other = GetPlayerControllerFromNetId(PlayerNetId); + // End:0x359 + if(Other != none) + { + // End:0x147 + if((GameplayVoiceMuteList.Find('Uid', PlayerNetId.Uid) == -1) && Other.VoiceMuteList.Find('Uid', PlayerReplicationInfo.UniqueId.Uid) == -1) + { + ClientUnmutePlayer(PlayerNetId); + } + // End:0x359 + if((Other.VoiceMuteList.Find('Uid', PlayerReplicationInfo.UniqueId.Uid) == -1) && Other.GameplayVoiceMuteList.Find('Uid', PlayerReplicationInfo.UniqueId.Uid) == -1) + { + RemoveIndex = VoicePacketFilter.Find('Uid', PlayerNetId.Uid); + // End:0x279 + if(RemoveIndex != -1) + { + VoicePacketFilter.Remove(RemoveIndex, 1); + } + RemoveIndex = Other.VoicePacketFilter.Find('Uid', PlayerReplicationInfo.UniqueId.Uid); + // End:0x31C + if(RemoveIndex != -1) + { + Other.VoicePacketFilter.Remove(RemoveIndex, 1); + } + Other.ClientUnmutePlayer(PlayerReplicationInfo.UniqueId); + } + } + //return; +} + +event NotifyDirectorControl(bool bNowControlling, SeqAct_Interp CurrentMatinee, float fFadeTime) +{ + // End:0x53 + if((!bNowControlling && int(WorldInfo.NetMode) == int(NM_Client)) && bClientSimulatingViewTarget) + { + ServerVerifyViewTarget(); + } + //return; +} + +// Export UPlayerController::execSetShowSubtitles(FFrame&, void* const) +native simulated exec function SetShowSubtitles(bool bValue); + +// Export UPlayerController::execIsShowingSubtitles(FFrame&, void* const) +native simulated function bool IsShowingSubtitles(); + +reliable client simulated event ClientWasKicked() +{ + //return; +} + +reliable client simulated function ClientRegisterForArbitration() +{ + // End:0xCD + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + OnlineSub.GameInterface.AddArbitrationRegistrationCompleteDelegate(OnArbitrationRegisterComplete); + OnlineSub.GameInterface.RegisterForArbitration('Game'); + } + else + { + ServerRegisteredForArbitration(true); + } + //return; +} + +function OnArbitrationRegisterComplete(name SessionName, bool bWasSuccessful) +{ + OnlineSub.GameInterface.ClearArbitrationRegistrationCompleteDelegate(OnArbitrationRegisterComplete); + ServerRegisteredForArbitration(bWasSuccessful); + //return; +} + +reliable server function ServerRegisteredForArbitration(bool bWasSuccessful) +{ + WorldInfo.Game.ProcessClientRegistrationCompletion(self, bWasSuccessful); + //return; +} + +function OnGameInviteAccepted(const out OnlineGameSearchResult InviteResult) +{ + local OnlineGameSettings GameInviteSettings; + + // End:0x35C + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + GameInviteSettings = InviteResult.GameSettings; + // End:0x352 + if(GameInviteSettings != none) + { + // End:0x345 + if(InviteHasEnoughSpace(GameInviteSettings)) + { + // End:0x338 + if(CanAllPlayersPlayOnline()) + { + // End:0x233 + if(int(WorldInfo.NetMode) != int(NM_Standalone)) + { + // End:0x1AC + if(OnlineSub.GameInterface.GetGameSettings('Game').bUsesArbitration) + { + ClientWriteOnlinePlayerScores(((WorldInfo.GRI.GameClass != none) ? WorldInfo.GRI.GameClass.default.ArbitratedLeaderboardId : 0)); + } + OnlineSub.GameInterface.AddEndOnlineGameCompleteDelegate(OnEndForInviteComplete); + OnlineSub.GameInterface.EndOnlineGame('Game'); + } + else + { + OnlineSub.GameInterface.AddJoinOnlineGameCompleteDelegate(OnInviteJoinComplete); + // End:0x335 + if(!OnlineSub.GameInterface.AcceptGameInvite(byte(LocalPlayer(Player).ControllerId), 'Game')) + { + OnlineSub.GameInterface.ClearJoinOnlineGameCompleteDelegate(OnInviteJoinComplete); + NotifyInviteFailed(); + } + } + } + else + { + NotifyNotAllPlayersCanJoinInvite(); + } + } + else + { + NotifyNotEnoughSpaceInInvite(); + } + } + else + { + NotifyInviteFailed(); + } + } + //return; +} + +function bool InviteHasEnoughSpace(OnlineGameSettings InviteSettings) +{ + local int NumLocalPlayers; + local PlayerController PC; + + // End:0x2B + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + NumLocalPlayers++; + } + return (InviteSettings.NumOpenPrivateConnections + InviteSettings.NumOpenPublicConnections) >= NumLocalPlayers; + //return ReturnValue; +} + +function bool CanAllPlayersPlayOnline() +{ + local PlayerController PC; + local LocalPlayer LocPlayer; + + // End:0xEF + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + LocPlayer = LocalPlayer(PC.Player); + // End:0xEB + if(LocPlayer != none) + { + // End:0xE8 + if((int(OnlineSub.PlayerInterface.GetLoginStatus(byte(LocPlayer.ControllerId))) != int(2)) || !PC.bCanPlayOnline) + { + return false; + } + // End:0xEE + continue; + } + return false; + } + return true; + //return ReturnValue; +} + +function ClearInviteDelegates() +{ + OnlineSub.GameInterface.ClearEndOnlineGameCompleteDelegate(OnEndForInviteComplete); + OnlineSub.GameInterface.ClearDestroyOnlineGameCompleteDelegate(OnDestroyForInviteComplete); + OnlineSub.GameInterface.ClearJoinOnlineGameCompleteDelegate(OnInviteJoinComplete); + //return; +} + +function OnEndForInviteComplete(name SessionName, bool bWasSuccessful) +{ + OnlineSub.GameInterface.AddDestroyOnlineGameCompleteDelegate(OnDestroyForInviteComplete); + OnlineSub.GameInterface.DestroyOnlineGame(SessionName); + //return; +} + +function OnDestroyForInviteComplete(name SessionName, bool bWasSuccessful) +{ + // End:0x112 + if(bWasSuccessful) + { + OnlineSub.GameInterface.AddJoinOnlineGameCompleteDelegate(OnInviteJoinComplete); + // End:0x10F + if(!OnlineSub.GameInterface.AcceptGameInvite(byte(LocalPlayer(Player).ControllerId), SessionName)) + { + OnlineSub.GameInterface.ClearJoinOnlineGameCompleteDelegate(OnInviteJoinComplete); + NotifyInviteFailed(); + } + } + else + { + NotifyInviteFailed(); + } + //return; +} + +function string ModifyClientURL(string URL) +{ + return URL; + //return ReturnValue; +} + +function OnInviteJoinComplete(name SessionName, bool bWasSuccessful) +{ + local string URL; + + // End:0xF9 + if(bWasSuccessful) + { + // End:0xF6 + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + // End:0xF6 + if(OnlineSub.GameInterface.GetResolvedConnectString(SessionName, URL)) + { + URL $= "?bIsFromInvite"; + URL = ModifyClientURL(URL); + ClientTravel(URL, 0); + } + } + } + else + { + NotifyInviteFailed(); + } + ClearInviteDelegates(); + //return; +} + +function NotifyInviteFailed() +{ + ClearInviteDelegates(); + //return; +} + +function NotifyNotAllPlayersCanJoinInvite() +{ + //return; +} + +function NotifyNotEnoughSpaceInInvite() +{ + //return; +} + +reliable client simulated function ClientArbitratedMatchEnded() +{ + ConsoleCommand("Disconnect"); + //return; +} + +reliable client simulated function ClientWriteOnlinePlayerScores(int LeaderboardId) +{ + local GameReplicationInfo GRI; + local int Index; + local array PlayerScores; + local UniqueNetId ZeroUniqueId; + local bool bIsTeamGame; + local int ScoreIndex; + + GRI = WorldInfo.GRI; + // End:0x4DD + if(((GRI != none) && OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.StatsInterface, OnlineStatsInterface(none))) + { + bIsTeamGame = ((GRI.GameClass != none) ? GRI.GameClass.default.bTeamGame : false); + Index = 0; + J0xF0: + + // End:0x478 [Loop If] + if(Index < GRI.PRIArray.Length) + { + // End:0x46A + if(GRI.PRIArray[Index].UniqueId != ZeroUniqueId) + { + // End:0x345 + if(bIsTeamGame) + { + // End:0x342 + if(GRI.PRIArray[Index].Team != none) + { + ScoreIndex = PlayerScores.Length; + PlayerScores.Length = ScoreIndex + 1; + PlayerScores[ScoreIndex].PlayerID = GRI.PRIArray[Index].UniqueId; + PlayerScores[ScoreIndex].TeamID = GRI.PRIArray[Index].Team.TeamIndex; + PlayerScores[ScoreIndex].Score = int(GRI.PRIArray[Index].Team.Score); + } + } + else + { + ScoreIndex = PlayerScores.Length; + PlayerScores.Length = ScoreIndex + 1; + PlayerScores[ScoreIndex].PlayerID = GRI.PRIArray[Index].UniqueId; + PlayerScores[ScoreIndex].TeamID = Index; + PlayerScores[ScoreIndex].Score = int(GRI.PRIArray[Index].Score); + } + } + Index++; + // [Loop Continue] + goto J0xF0; + } + OnlineSub.StatsInterface.WriteOnlinePlayerScores(PlayerReplicationInfo.SessionName, LeaderboardId, PlayerScores); + } + //return; +} + +reliable client simulated function ClientWriteLeaderboardStats(Class OnlineStatsWriteClass, optional bool bIsIncomplete = false) +{ + //return; +} + +reliable client simulated function ClientSetHostUniqueId(UniqueNetId InHostId) +{ + //return; +} + +reliable client simulated function ClientStopNetworkedVoice() +{ + local LocalPlayer LocPlayer; + + LocPlayer = LocalPlayer(Player); + // End:0xC8 + if(((LocPlayer != none) && OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.VoiceInterface, OnlineVoiceInterface(none))) + { + OnlineSub.VoiceInterface.StopNetworkedVoice(byte(LocPlayer.ControllerId)); + } + //return; +} + +reliable client simulated function ClientStartNetworkedVoice() +{ + local LocalPlayer LocPlayer; + + LocPlayer = LocalPlayer(Player); + // End:0xC8 + if(((LocPlayer != none) && OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.VoiceInterface, OnlineVoiceInterface(none))) + { + OnlineSub.VoiceInterface.StartNetworkedVoice(byte(LocPlayer.ControllerId)); + } + //return; +} + +simulated function OnDestroy(SeqAct_Destroy Action) +{ + Action.ScriptLog("Cannot use Destroy action on players"); + //return; +} + +final simulated function DrawDebugTextList(Canvas Canvas, float RenderDelta) +{ + local Vector CameraLoc, ScreenLoc, Offset, WorldTextLoc; + local Rotator CameraRot; + local int Idx; + + // End:0x5D1 + if(DebugTextList.Length > 0) + { + GetPlayerViewPoint(CameraLoc, CameraRot); + Canvas.SetDrawColor(255, 255, 255); + Idx = 0; + J0x5D: + + // End:0x5D1 [Loop If] + if(Idx < DebugTextList.Length) + { + // End:0xBB + if(DebugTextList[Idx].SrcActor == none) + { + DebugTextList.Remove(Idx--, 1); + } + else + { + // End:0x166 + if(DebugTextList[Idx].TimeRemaining != -1.0000000) + { + DebugTextList[Idx].TimeRemaining -= RenderDelta; + // End:0x166 + if(DebugTextList[Idx].TimeRemaining <= 0.0000000) + { + DebugTextList.Remove(Idx--, 1); + // [Explicit Continue] + goto J0x5C3; + } + } + // End:0x1DA + if(DebugTextList[Idx].Font != none) + { + Canvas.Font = DebugTextList[Idx].Font; + } + else + { + Canvas.Font = Class'Engine.Engine'.static.GetSmallFont(); + } + // End:0x2FA + if(DebugTextList[Idx].bAbsoluteLocation) + { + WorldTextLoc = VLerp(DebugTextList[Idx].SrcActorOffset, DebugTextList[Idx].SrcActorDesiredOffset, 1.0000000 - (DebugTextList[Idx].TimeRemaining / DebugTextList[Idx].Duration)); + } + else + { + Offset = VLerp(DebugTextList[Idx].SrcActorOffset, DebugTextList[Idx].SrcActorDesiredOffset, 1.0000000 - (DebugTextList[Idx].TimeRemaining / DebugTextList[Idx].Duration)); + // End:0x438 + if(DebugTextList[Idx].bKeepAttachedToActor) + { + WorldTextLoc = DebugTextList[Idx].SrcActor.Location + (Offset >> CameraRot); + } + else + { + WorldTextLoc = DebugTextList[Idx].OrigActorLocation + (Offset >> CameraRot); + } + } + // End:0x5C3 + if(((WorldTextLoc - CameraLoc) Dot Vector(CameraRot)) > 0.0000000) + { + ScreenLoc = Canvas.Project(WorldTextLoc); + Canvas.SetPos(ScreenLoc.X, ScreenLoc.Y); + Canvas.DrawColor = DebugTextList[Idx].TextColor; + Canvas.DrawText(DebugTextList[Idx].DebugText); + } + } + J0x5C3: + + Idx++; + // [Loop Continue] + goto J0x5D; + } + } + //return; +} + +reliable client simulated event AddDebugText(string DebugText, optional Actor SrcActor, optional float Duration = -1.0000000, optional Vector Offset, optional Vector DesiredOffset, optional Color TextColor, optional bool bSkipOverwriteCheck, optional bool bAbsoluteLocation, optional bool bKeepAttachedToActor = true, optional Font InFont) +{ + local int Idx; + + // End:0x133 + if((((int(TextColor.R) == int(0)) && int(TextColor.G) == int(0)) && int(TextColor.B) == int(0)) && int(TextColor.A) == int(0)) + { + TextColor.R = 255; + TextColor.G = 255; + TextColor.B = 255; + TextColor.A = 255; + } + // End:0x436 + if(SrcActor != none) + { + // End:0x169 + if(Len(DebugText) == 0) + { + RemoveDebugText(SrcActor); + } + else + { + // End:0x1E2 + if(!bSkipOverwriteCheck) + { + Idx = DebugTextList.Find('SrcActor', SrcActor); + // End:0x1DF + if(Idx == -1) + { + Idx = DebugTextList.Length; + DebugTextList.Length = Idx + 1; + } + } + else + { + Idx = DebugTextList.Length; + DebugTextList.Length = Idx + 1; + } + DebugTextList[Idx].SrcActor = SrcActor; + DebugTextList[Idx].SrcActorOffset = Offset; + DebugTextList[Idx].SrcActorDesiredOffset = DesiredOffset; + DebugTextList[Idx].DebugText = DebugText; + DebugTextList[Idx].TimeRemaining = Duration; + DebugTextList[Idx].Duration = Duration; + DebugTextList[Idx].TextColor = TextColor; + DebugTextList[Idx].bAbsoluteLocation = bAbsoluteLocation; + DebugTextList[Idx].bKeepAttachedToActor = bKeepAttachedToActor; + DebugTextList[Idx].OrigActorLocation = SrcActor.Location; + DebugTextList[Idx].Font = InFont; + } + } + //return; +} + +reliable client final simulated event RemoveDebugText(Actor SrcActor) +{ + local int Idx; + + Idx = DebugTextList.Find('SrcActor', SrcActor); + // End:0x51 + if(Idx != -1) + { + DebugTextList.Remove(Idx, 1); + } + //return; +} + +reliable client final simulated event RemoveAllDebugStrings() +{ + DebugTextList.Length = 0; + //return; +} + +reliable client simulated function ClientRegisterHostStatGuid(string StatGuid) +{ + // End:0xDB + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.StatsInterface, OnlineStatsInterface(none))) + { + OnlineSub.StatsInterface.AddRegisterHostStatGuidCompleteDelegate(OnRegisterHostStatGuidComplete); + // End:0xDB + if(OnlineSub.StatsInterface.RegisterHostStatGuid(StatGuid) == false) + { + OnRegisterHostStatGuidComplete(false); + } + } + //return; +} + +function OnRegisterHostStatGuidComplete(bool bWasSuccessful) +{ + local string StatGuid; + + OnlineSub.StatsInterface.ClearRegisterHostStatGuidCompleteDelegateDelegate(OnRegisterHostStatGuidComplete); + // End:0xA5 + if(bWasSuccessful) + { + StatGuid = OnlineSub.StatsInterface.GetClientStatGuid(); + ServerRegisterClientStatGuid(StatGuid); + } + //return; +} + +reliable server function ServerRegisterClientStatGuid(string StatGuid) +{ + // End:0xA2 + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.StatsInterface, OnlineStatsInterface(none))) + { + OnlineSub.StatsInterface.RegisterStatGuid(PlayerReplicationInfo.UniqueId, StatGuid); + } + //return; +} + +reliable client simulated function ClientStartOnlineGame() +{ + local OnlineGameSettings GameSettings; + + // End:0x16A + if(((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) && IsPrimaryPlayer()) + { + GameSettings = OnlineSub.GameInterface.GetGameSettings(PlayerReplicationInfo.SessionName); + // End:0x16A + if((GameSettings != none) && (int(GameSettings.GameState) == int(1)) || int(GameSettings.GameState) == int(5)) + { + OnlineSub.GameInterface.StartOnlineGame(PlayerReplicationInfo.SessionName); + } + } + //return; +} + +reliable client simulated function ClientEndOnlineGame() +{ + local OnlineGameSettings GameSettings; + + // End:0x13F + if(((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) && IsPrimaryPlayer()) + { + GameSettings = OnlineSub.GameInterface.GetGameSettings(PlayerReplicationInfo.SessionName); + // End:0x13F + if((GameSettings != none) && int(GameSettings.GameState) == int(3)) + { + OnlineSub.GameInterface.EndOnlineGame(PlayerReplicationInfo.SessionName); + } + } + //return; +} + +function bool CanViewUserCreatedContent() +{ + return bCanShareUserCreatedContent; + //return ReturnValue; +} + +function IncrementNumberOfMatchesPlayed() +{ + PlayerReplicationInfo.AutomatedTestingData.NumberOfMatchesPlayed++; + //return; +} + +event SoakPause(Pawn P) +{ + SetViewTarget(P); + SetPause(true); + myHUD.bShowDebugInfo = true; + //return; +} + +exec function PathStep(optional int Cnt) +{ + Pawn.IncrementPathStep(Max(1, Cnt), myHUD.Canvas); + //return; +} + +exec function PathChild(optional int Cnt) +{ + Pawn.IncrementPathChild(Max(1, Cnt), myHUD.Canvas); + //return; +} + +exec function PathClear() +{ + Pawn.ClearPathStep(); + //return; +} + +reliable client simulated function ClientTravelToSession(name SessionName, Class SearchClass, byte PlatformSpecificInfo[80]) +{ + local OnlineGameSearch Search; + local LocalPlayer LP; + local OnlineGameSearchResult SessionToJoin; + + LP = LocalPlayer(Player); + // End:0x1B3 + if(LP != none) + { + Search = new SearchClass; + // End:0x1B3 + if(OnlineSub.GameInterface.BindPlatformSpecificSessionToSearch(byte(LP.ControllerId), Search, PlatformSpecificInfo)) + { + SessionToJoin = Search.Results[0]; + PreJoinUpdateGameSettings(SessionName, SessionToJoin.GameSettings); + OnlineSub.GameInterface.AddJoinOnlineGameCompleteDelegate(OnJoinTravelToSessionComplete); + OnlineSub.GameInterface.JoinOnlineGame(byte(LP.ControllerId), SessionName, SessionToJoin); + } + } + //return; +} + +simulated function PreJoinUpdateGameSettings(name SessionName, OnlineGameSettings GameSettings) +{ + //return; +} + +function OnJoinTravelToSessionComplete(name SessionName, bool bWasSuccessful) +{ + local string URL; + + // End:0x6E + if(bWasSuccessful) + { + // End:0x6E + if(OnlineSub.GameInterface.GetResolvedConnectString(SessionName, URL)) + { + ClientTravel(URL, 0); + } + } + //return; +} + +reliable client simulated function ClientReturnToParty(UniqueNetId RequestingPlayerId) +{ + local string URL; + + WorldInfo.ToggleHostMigration(false); + // End:0x204 + if(IsPrimaryPlayer()) + { + // End:0x1E4 + if(((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + // End:0x1C1 + if(OnlineSub.GameInterface.GetGameSettings('Party') != none) + { + // End:0x15D + if(IsPartyLeader()) + { + URL = (((GetPartyMapName()) $ "?game=") $ (GetPartyGameTypeName())) $ "?listen"; + WorldInfo.ServerTravel(URL, true, true); + } + else + { + // End:0x1BE + if(OnlineSub.GameInterface.GetResolvedConnectString('Party', URL)) + { + ClientTravel(URL, 0); + } + } + } + else + { + ConsoleCommand("disconnect"); + } + } + else + { + ConsoleCommand("disconnect"); + } + } + //return; +} + +reliable client simulated function ClientNotifyPartyHostLeaving(UniqueNetId PartyHostPlayerId) +{ + // End:0x44 + if((PlayerReplicationInfo != none) && PlayerReplicationInfo.UniqueId != PartyHostPlayerId) + { + } + //return; +} + +reliable server function ServerNotifyPartyHostLeaving(UniqueNetId PartyHostPlayerId) +{ + // End:0x61 + if(WorldInfo.Game != none) + { + WorldInfo.Game.TellClientsPartyHostIsLeaving(PartyHostPlayerId); + } + //return; +} + +final simulated function bool IsPrimaryPlayer() +{ + local int SSIndex; + + return !IsSplitscreenPlayer(SSIndex) || SSIndex == 0; + //return ReturnValue; +} + +final simulated function bool IsSplitscreenPlayer(optional out int out_SplitscreenPlayerIndex) +{ + local bool bResult; + local LocalPlayer LP; + local NetConnection RemoteConnection; + local ChildConnection ChildRemoteConnection; + + out_SplitscreenPlayerIndex = int(NetPlayerIndex); + // End:0x1E6 + if(Player != none) + { + LP = LocalPlayer(Player); + // End:0xE3 + if(LP != none) + { + // End:0xE0 + if(LP.Outer.GamePlayers.Length > 1) + { + out_SplitscreenPlayerIndex = LP.Outer.GamePlayers.Find(LP); + bResult = true; + } + } + else + { + RemoteConnection = NetConnection(Player); + // End:0x13E + if(RemoteConnection.Children.Length > 0) + { + out_SplitscreenPlayerIndex = 0; + bResult = true; + } + else + { + ChildRemoteConnection = ChildConnection(RemoteConnection); + // End:0x1E6 + if(ChildRemoteConnection != none) + { + // End:0x1DA + if(ChildRemoteConnection.Parent != none) + { + out_SplitscreenPlayerIndex = ChildRemoteConnection.Parent.Children.Find(ChildRemoteConnection) + 1; + } + bResult = true; + } + } + } + } + return bResult; + //return ReturnValue; +} + +simulated function PlayerReplicationInfo GetSplitscreenPlayerByIndex(optional int PlayerIndex = 1) +{ + local PlayerReplicationInfo Result; + local LocalPlayer LP, SplitPlayer; + local NetConnection MasterConnection, RemoteConnection; + local ChildConnection ChildRemoteConnection; + + // End:0x413 + if(Player != none) + { + // End:0x410 + if(IsSplitscreenPlayer()) + { + LP = LocalPlayer(Player); + RemoteConnection = NetConnection(Player); + // End:0x170 + if(LP != none) + { + // End:0x16D + if((PlayerIndex >= 0) && PlayerIndex < LP.ViewportClient.Outer.GamePlayers.Length) + { + SplitPlayer = LP.ViewportClient.Outer.GamePlayers[PlayerIndex]; + Result = SplitPlayer.Actor.PlayerReplicationInfo; + } + } + else + { + // End:0x410 + if(RemoteConnection != none) + { + // End:0x1AB + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + } + else + { + ChildRemoteConnection = ChildConnection(RemoteConnection); + // End:0x308 + if(ChildRemoteConnection != none) + { + MasterConnection = ChildRemoteConnection.Parent; + // End:0x24D + if(PlayerIndex == 0) + { + Result = MasterConnection.Actor.PlayerReplicationInfo; + } + else + { + PlayerIndex--; + // End:0x305 + if((PlayerIndex >= 0) && PlayerIndex < MasterConnection.Children.Length) + { + ChildRemoteConnection = MasterConnection.Children[PlayerIndex]; + Result = ChildRemoteConnection.Actor.PlayerReplicationInfo; + } + } + } + else + { + // End:0x40D + if(RemoteConnection.Children.Length > 0) + { + // End:0x352 + if(PlayerIndex == 0) + { + Result = PlayerReplicationInfo; + } + else + { + PlayerIndex--; + // End:0x40A + if((PlayerIndex >= 0) && PlayerIndex < RemoteConnection.Children.Length) + { + ChildRemoteConnection = RemoteConnection.Children[PlayerIndex]; + Result = ChildRemoteConnection.Actor.PlayerReplicationInfo; + } + } + } + } + } + } + } + } + } + return Result; + //return ReturnValue; +} + +simulated function int GetSplitscreenPlayerCount() +{ + local LocalPlayer LP; + local NetConnection RemoteConnection; + local int Result; + + // End:0x144 + if(IsSplitscreenPlayer()) + { + // End:0x144 + if(Player != none) + { + LP = LocalPlayer(Player); + RemoteConnection = NetConnection(Player); + // End:0xBA + if(LP != none) + { + Result = LP.ViewportClient.Outer.GamePlayers.Length; + } + else + { + // End:0x141 + if(RemoteConnection != none) + { + // End:0x112 + if(ChildConnection(RemoteConnection) != none) + { + RemoteConnection = ChildConnection(RemoteConnection).Parent; + } + Result = RemoteConnection.Children.Length + 1; + } + } + } + } + return Result; + //return ReturnValue; +} + +reliable client simulated function ClientControlMovieTexture(TextureMovie MovieTexture, SeqAct_ControlMovieTexture.EMovieControlType Mode) +{ + // End:0x9D + if(MovieTexture != none) + { + switch(Mode) + { + // End:0x49 + case 0: + MovieTexture.Play(); + // End:0x9D + break; + // End:0x70 + case 1: + MovieTexture.Stop(); + // End:0x9D + break; + // End:0x97 + case 2: + MovieTexture.Pause(); + // End:0x9D + break; + // End:0xFFFF + default: + // End:0x9D + break; + break; + } + } + //return; +} + +reliable client simulated event ClientSetForceMipLevelsToBeResident(MaterialInterface Material, float ForceDuration, optional int CinematicTextureGroups) +{ + // End:0x52 + if((Material != none) && IsPrimaryPlayer()) + { + Material.SetForceMipLevelsToBeResident(false, false, ForceDuration, CinematicTextureGroups); + } + //return; +} + +reliable client simulated event ClientPrestreamTextures(Actor ForcedActor, float ForceDuration, bool bEnableStreaming, optional int CinematicTextureGroups = 0) +{ + // End:0x5E + if((ForcedActor != none) && IsPrimaryPlayer()) + { + ForcedActor.PrestreamTextures(ForceDuration, bEnableStreaming, CinematicTextureGroups); + } + //return; +} + +// Export UPlayerController::execClientAddTextureStreamingLoc(FFrame&, void* const) +reliable client native final simulated event ClientAddTextureStreamingLoc(Vector InLoc, float Duration, bool bOverrideLocation); + +simulated function bool IsPartyLeader() +{ + local OnlineGameSettings PartySettings; + + // End:0xF2 + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + PartySettings = OnlineSub.GameInterface.GetGameSettings('Party'); + // End:0xF2 + if(PartySettings != none) + { + // End:0xF2 + if(PlayerReplicationInfo != none) + { + return PartySettings.OwningPlayerId == PlayerReplicationInfo.UniqueId; + } + } + } + return (int(WorldInfo.NetMode) != int(NM_Client)) && IsPrimaryPlayer(); + //return ReturnValue; +} + +static function string GetPartyMapName() +{ + //return ReturnValue; +} + +static function string GetPartyGameTypeName() +{ + //return ReturnValue; +} + +event bool GetAchievementProgression(int AchievementId, out float CurrentValue, out float MaxValue) +{ + //return ReturnValue; +} + +simulated function OnFlyThroughHasEnded(SeqAct_FlyThroughHasEnded inAction) +{ + local PlayerController PC; + + // End:0x9C + if(WorldInfo.Game.IsDoingASentinelRun()) + { + // End:0x9B + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + PC.ConsoleCommand("quit"); + } + } + //return; +} + +function Sentinel_SetupForGamebasedTravelTheWorld() +{ + //return; +} + +function Sentinel_PreAcquireTravelTheWorldPoints() +{ + //return; +} + +function Sentinel_PostAcquireTravelTheWorldPoints() +{ + //return; +} + +delegate InputMatchDelegate() +{ + //return; +} + +protected simulated function DoForceFeedbackForScreenShake(CameraShake ShakeData, float ShakeScale) +{ + //return; +} + +unreliable client simulated function ClientPlayCameraShake(CameraShake Shake, optional float Scale = 1.0000000, optional bool bTryForceFeedback, optional Camera.ECameraAnimPlaySpace PlaySpace = 0, optional Rotator UserPlaySpaceRot) +{ + // End:0x8C + if(PlayerCamera != none) + { + PlayerCamera.PlayCameraShake(Shake, Scale, PlaySpace, UserPlaySpaceRot); + // End:0x8C + if(bTryForceFeedback) + { + DoForceFeedbackForScreenShake(Shake, Scale); + } + } + //return; +} + +unreliable client simulated function ClientStopCameraShake(CameraShake Shake) +{ + // End:0x37 + if(PlayerCamera != none) + { + PlayerCamera.StopCameraShake(Shake); + } + //return; +} + +function OnCameraShake(SeqAct_CameraShake inAction) +{ + // End:0x297 + if(inAction.InputLinks[0].bHasImpulse) + { + // End:0x1AB + if(inAction.bRadialShake) + { + // End:0x1A6 + if(inAction.LocationActor != none) + { + Class'Engine.Camera'.static.PlayWorldCameraShake(inAction.Shake, inAction.LocationActor, inAction.LocationActor.Location, inAction.RadialShake_InnerRadius, inAction.RadialShake_OuterRadius, inAction.RadialShake_Falloff, inAction.bDoControllerVibration, inAction.bOrientTowardRadialEpicenter); + } + else + { + return; + } + } + else + { + ClientPlayCameraShake(inAction.Shake, inAction.ShakeScale, inAction.bDoControllerVibration, inAction.PlaySpace, ((inAction.LocationActor == none) ? rot(0, 0, 0) : inAction.LocationActor.Rotation)); + } + } + else + { + ClientStopCameraShake(inAction.Shake); + } + //return; +} + +unreliable client simulated event ClientPlayCameraAnim(CameraAnim AnimToPlay, optional float Scale = 1.0000000, optional float Rate = 1.0000000, optional float BlendInTime, optional float BlendOutTime, optional bool bLoop, optional bool bRandomStartTime, optional Camera.ECameraAnimPlaySpace Space = 0, optional Rotator CustomPlaySpace) +{ + local CameraAnimInst AnimInst; + + // End:0xEE + if(PlayerCamera != none) + { + AnimInst = PlayerCamera.PlayCameraAnim(AnimToPlay, Rate, Scale, BlendInTime, BlendOutTime, bLoop, bRandomStartTime); + // End:0xEE + if((AnimInst != none) && int(Space) != int(0)) + { + AnimInst.SetPlaySpace(Space, CustomPlaySpace); + } + } + //return; +} + +reliable client simulated event ClientStopCameraAnim(CameraAnim AnimToStop, optional bool bImmediate) +{ + // End:0x42 + if(PlayerCamera != none) + { + PlayerCamera.StopAllCameraAnimsByType(AnimToStop, bImmediate); + } + //return; +} + +exec function DebugCameraAnims() +{ + bDebugCameraAnims = !bDebugCameraAnims; + // End:0x46 + if(bDebugCameraAnims == false) + { + WorldInfo.FlushPersistentDebugLines(); + } + //return; +} + +unreliable client simulated event ClientSpawnCameraLensEffect(Class LensEffectEmitterClass) +{ + // End:0x37 + if(PlayerCamera != none) + { + PlayerCamera.AddCameraLensEffect(LensEffectEmitterClass); + } + //return; +} + +function OnSetSoundMode(SeqAct_SetSoundMode Action) +{ + local AudioDevice Audio; + + Audio = Class'Engine.Engine'.static.GetAudioDevice(); + // End:0x112 + if(Audio != none) + { + // End:0xEA + if(Action.InputLinks[0].bHasImpulse && Action.SoundMode != none) + { + Audio.SetSoundMode(Action.SoundMode.Name); + } + else + { + Audio.SetSoundMode('Default'); + } + } + //return; +} + +// Export UPlayerController::execHasPeerConnection(FFrame&, void* const) +native function bool HasPeerConnection(const out UniqueNetId PeerNetId); + +exec function BugItGo(coerce float X, coerce float Y, coerce float Z, coerce int Pitch, coerce int Yaw, coerce int Roll) +{ + local Vector TheLocation; + local Rotator TheRotation; + + TheLocation.X = X; + TheLocation.Y = Y; + TheLocation.Z = Z; + TheRotation.Pitch = Pitch; + TheRotation.Yaw = Yaw; + TheRotation.Roll = Roll; + BugItWorker(TheLocation, TheRotation); + //return; +} + +function BugItGoString(string TheLocation, string TheRotation) +{ + BugItWorker(Vector(TheLocation), Rotator(TheRotation)); + //return; +} + +function BugItWorker(Vector TheLocation, Rotator TheRotation) +{ + // End:0x2E + if(CheatManager != none) + { + CheatManager.Ghost(); + } + ViewTarget.SetLocation(TheLocation); + Pawn.FaceRotation(TheRotation, 0.0000000); + SetRotation(TheRotation); + //return; +} + +exec event BugIt(optional string ScreenShotDescription) +{ + local Vector ViewLocation; + local Rotator ViewRotation; + local string GoString, LocString; + + ConsoleCommand("bugscreenshot " $ ScreenShotDescription); + GetPlayerViewPoint(ViewLocation, ViewRotation); + // End:0x83 + if(Pawn != none) + { + ViewLocation = Pawn.Location; + } + BugItStringCreator(ViewLocation, ViewRotation, GoString, LocString); + LogOutBugItGoToLogFile(ScreenShotDescription, GoString, LocString); + //return; +} + +exec function LogLoc() +{ + local Vector ViewLocation; + local Rotator ViewRotation; + local string GoString, LocString; + + GetPlayerViewPoint(ViewLocation, ViewRotation); + // End:0x53 + if(Pawn != none) + { + ViewLocation = Pawn.Location; + } + BugItStringCreator(ViewLocation, ViewRotation, GoString, LocString); + //return; +} + +exec event BugItAI(optional string ScreenShotDescription) +{ + local Vector ViewLocation; + local Rotator ViewRotation; + local string GoString, LocString; + + GetPlayerViewPoint(ViewLocation, ViewRotation); + // End:0x54 + if(Pawn != none) + { + ViewLocation = Pawn.Location; + } + BugItStringCreator(ViewLocation, ViewRotation, GoString, LocString); + ConsoleCommand("debugai"); + SetTimer(0.1000000, false, 'DisableDebugAI'); + LogOutBugItAIGoToLogFile(ScreenShotDescription, GoString, LocString); + //return; +} + +exec event BugItStringCreator(const out Vector ViewLocation, const out Rotator ViewRotation, out string GoString, out string LocString) +{ + GoString = (((((((((("BugItGo " $ string(ViewLocation.X)) $ " ") $ string(ViewLocation.Y)) $ " ") $ string(ViewLocation.Z)) $ " ") $ string(ViewRotation.Pitch)) $ " ") $ string(ViewRotation.Yaw)) $ " ") $ string(ViewRotation.Roll); + LocString = (("?BugLoc=" $ string(ViewLocation)) $ "?BugRot=") $ string(ViewRotation); + //return; +} + +event OnEngineInitialTick() +{ + // End:0x4C + if(WorldInfo.IsConsoleBuild(3)) + { + ConsoleCommand("mobile stoploading"); + } + //return; +} + +function DisableDebugAI() +{ + ConsoleCommand("debugai"); + //return; +} + +// Export UPlayerController::execLogOutBugItGoToLogFile(FFrame&, void* const) +private native final function LogOutBugItGoToLogFile(const string InScreenShotDesc, const string InGoString, const string InLocString); + +// Export UPlayerController::execLogOutBugItAIGoToLogFile(FFrame&, void* const) +private native final function LogOutBugItAIGoToLogFile(const string InScreenShotDesc, const string InGoString, const string InLocString); + +simulated function ReceivedGameClass(Class GameClass) +{ + // End:0x2E + if(PlayerInput != none) + { + PlayerInput.ClientInitInputSystem(); + } + //return; +} + +event bool NotifyDisconnect(string Command) +{ + return false; + //return ReturnValue; +} + +simulated event LostP2PConnection(UniqueNetId UniqueId) +{ + //return; +} + +event SetMatineeConstantCameraAnim(bool bOn, byte Type, float Rate) +{ + //return; +} + +event ControllerPreTimeLapse() +{ + //return; +} + +event ControllerPostTimeLapse() +{ + //return; +} + +state PlayerWalking +{ + ignores Bump, HearNoise, SeePlayer; + + event NotifyPhysicsVolumeChange(PhysicsVolume NewVolume) + { + // End:0x69 + if(NewVolume.bWaterVolume && Pawn.bCollideWorld) + { + GotoState(Pawn.WaterMovementState); + } + //return; + } + + function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) + { + // End:0x11 + if(Pawn == none) + { + return; + } + // End:0x60 + if(int(Role) == int(ROLE_Authority)) + { + Pawn.SetRemoteViewPitch(Rotation.Pitch); + } + Pawn.Acceleration = newAccel; + CheckJumpOrDuck(); + //return; + } + + function PlayerMove(float DeltaTime) + { + local Vector X, Y, Z, newAccel; + local Actor.EDoubleClickDir DoubleClickMove; + local Rotator OldRotation; + local bool bSaveJump; + + // End:0x20 + if(Pawn == none) + { + GotoState('Dead'); + } + else + { + GetAxes(Pawn.Rotation, X, Y, Z); + newAccel = (PlayerInput.aForward * X) + (PlayerInput.aStrafe * Y); + newAccel.Z = 0.0000000; + newAccel = Pawn.AccelRate * Normal(newAccel); + // End:0x130 + if(IsLocalPlayerController()) + { + AdjustPlayerWalkingMoveAccel(newAccel); + } + DoubleClickMove = PlayerInput.CheckForDoubleClickMove(DeltaTime / WorldInfo.TimeDilation); + OldRotation = Rotation; + UpdateRotation(DeltaTime); + bDoubleJump = false; + // End:0x200 + if(bPressedJump && Pawn.CannotJumpNow()) + { + bSaveJump = true; + bPressedJump = false; + } + else + { + bSaveJump = false; + } + // End:0x25D + if(int(Role) < int(ROLE_Authority)) + { + ReplicateMove(DeltaTime, newAccel, DoubleClickMove, OldRotation - Rotation); + } + else + { + ProcessMove(DeltaTime, newAccel, DoubleClickMove, OldRotation - Rotation); + } + bPressedJump = bSaveJump; + } + //return; + } + + event BeginState(name PreviousStateName) + { + DoubleClickDir = 0; + bPressedJump = false; + GroundPitch = 0; + // End:0x132 + if(Pawn != none) + { + Pawn.ShouldCrouch(false); + // End:0x132 + if((((int(Pawn.Physics) != int(2)) && int(Pawn.Physics) != int(10)) && int(Pawn.Physics) != int(15)) && int(Pawn.Physics) != int(13)) + { + Pawn.SetPhysics(Pawn.WalkingPhysics); + } + } + //return; + } + + event EndState(name NextStateName) + { + GroundPitch = 0; + // End:0x6E + if(Pawn != none) + { + Pawn.SetRemoteViewPitch(0); + // End:0x6E + if(int(bDuck) == int(0)) + { + Pawn.ShouldCrouch(false); + } + } + //return; + } +Begin: + + stop; +} + +state PlayerClimbing +{ + ignores Bump, HearNoise, SeePlayer; + + event NotifyPhysicsVolumeChange(PhysicsVolume NewVolume) + { + // End:0x48 + if(NewVolume.bWaterVolume) + { + GotoState(Pawn.WaterMovementState); + } + else + { + GotoState(Pawn.LandMovementState); + } + //return; + } + + function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) + { + // End:0x11 + if(Pawn == none) + { + return; + } + // End:0x60 + if(int(Role) == int(ROLE_Authority)) + { + Pawn.SetRemoteViewPitch(Rotation.Pitch); + } + Pawn.Acceleration = newAccel; + // End:0x10B + if(bPressedJump) + { + Pawn.DoJump(bUpdating); + // End:0x10B + if(int(Pawn.Physics) == int(2)) + { + GotoState(Pawn.LandMovementState); + } + } + //return; + } + + function PlayerMove(float DeltaTime) + { + local Vector X, Y, Z, newAccel; + local Rotator OldRotation, ViewRotation; + + GetAxes(Rotation, X, Y, Z); + // End:0x115 + if(Pawn.OnLadder != none) + { + newAccel = PlayerInput.aForward * Pawn.OnLadder.ClimbDir; + // End:0x112 + if(Pawn.OnLadder.bAllowLadderStrafing) + { + newAccel += (PlayerInput.aStrafe * Y); + } + } + else + { + newAccel = (PlayerInput.aForward * X) + (PlayerInput.aStrafe * Y); + } + newAccel = Pawn.AccelRate * Normal(newAccel); + ViewRotation = Rotation; + SetRotation(ViewRotation); + OldRotation = Rotation; + UpdateRotation(DeltaTime); + // End:0x237 + if(int(Role) < int(ROLE_Authority)) + { + ReplicateMove(DeltaTime, newAccel, 0, OldRotation - Rotation); + } + else + { + ProcessMove(DeltaTime, newAccel, 0, OldRotation - Rotation); + } + bPressedJump = false; + //return; + } + + event BeginState(name PreviousStateName) + { + Pawn.ShouldCrouch(false); + bPressedJump = false; + //return; + } + + event EndState(name NextStateName) + { + // End:0x4F + if(Pawn != none) + { + Pawn.SetRemoteViewPitch(0); + Pawn.ShouldCrouch(false); + } + //return; + } + stop; +} + +state PlayerDriving +{ + ignores ProcessMove, Bump, HearNoise, SeePlayer; + + function ProcessDrive(float InForward, float InStrafe, float InUp, bool InJump) + { + local Vehicle CurrentVehicle; + + CurrentVehicle = Vehicle(Pawn); + // End:0x86 + if(CurrentVehicle != none) + { + bPressedJump = InJump; + CurrentVehicle.SetInputs(InForward, -InStrafe, InUp); + CheckJumpOrDuck(); + } + //return; + } + + function PlayerMove(float DeltaTime) + { + UpdateRotation(DeltaTime); + ProcessDrive(PlayerInput.RawJoyUp, PlayerInput.RawJoyRight, PlayerInput.aUp, bPressedJump); + // End:0x14F + if(int(Role) < int(ROLE_Authority)) + { + ServerDrive(PlayerInput.RawJoyUp, PlayerInput.RawJoyRight, PlayerInput.aUp, bPressedJump, ((Rotation.Yaw & 65535) << 16) + (Rotation.Pitch & 65535)); + } + bPressedJump = false; + //return; + } + + reliable server function ServerUse() + { + local Vehicle CurrentVehicle; + + CurrentVehicle = Vehicle(Pawn); + CurrentVehicle.DriverLeave(false); + //return; + } + + event BeginState(name PreviousStateName) + { + CleanOutSavedMoves(); + //return; + } + + event EndState(name NextStateName) + { + CleanOutSavedMoves(); + //return; + } + stop; +} + +state PlayerSwimming +{ + ignores Bump, HearNoise, SeePlayer; + + event bool NotifyLanded(Vector HitNormal, Actor FloorActor) + { + // End:0x54 + if(Pawn.PhysicsVolume.bWaterVolume) + { + Pawn.SetPhysics(3); + } + else + { + GotoState(Pawn.LandMovementState); + } + return bUpdating; + //return ReturnValue; + } + + event NotifyPhysicsVolumeChange(PhysicsVolume NewVolume) + { + local Actor HitActor; + local Vector HitLocation, HitNormal, Checkpoint, X, Y, Z; + + // End:0x47 + if(!Pawn.bCollideActors) + { + GotoState(Pawn.LandMovementState); + } + // End:0x43F + if(int(Pawn.Physics) != int(10)) + { + // End:0x416 + if(!NewVolume.bWaterVolume) + { + Pawn.SetPhysics(2); + // End:0x413 + if(Pawn.Velocity.Z > float(0)) + { + GetAxes(Rotation, X, Y, Z); + Pawn.bUpAndOut = ((X Dot Pawn.Acceleration) > float(0)) && (Pawn.Acceleration.Z > float(0)) || Rotation.Pitch > 2048; + // End:0x283 + if(Pawn.bUpAndOut && Pawn.CheckWaterJump(HitNormal)) + { + Pawn.Velocity.Z = Pawn.OutofWaterZ; + GotoState(Pawn.LandMovementState); + } + else + { + // End:0x309 + if((Pawn.Velocity.Z > float(160)) || !Pawn.TouchingWaterVolume()) + { + GotoState(Pawn.LandMovementState); + } + else + { + Checkpoint = Pawn.Location; + Checkpoint.Z -= (Pawn.CylinderComponent.CollisionHeight + 6.0000000); + HitActor = Trace(HitLocation, HitNormal, Checkpoint, Pawn.Location, false); + // End:0x408 + if(HitActor != none) + { + GotoState(Pawn.LandMovementState); + } + else + { + SetTimer(0.7000000, false); + } + } + } + } + } + else + { + ClearTimer(); + Pawn.SetPhysics(3); + } + } + else + { + // End:0x486 + if(!NewVolume.bWaterVolume) + { + GotoState(Pawn.LandMovementState); + } + } + //return; + } + + function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) + { + Pawn.Acceleration = newAccel; + //return; + } + + function PlayerMove(float DeltaTime) + { + local Rotator OldRotation; + local Vector X, Y, Z, newAccel; + + // End:0x20 + if(Pawn == none) + { + GotoState('Dead'); + } + else + { + GetAxes(Rotation, X, Y, Z); + newAccel = ((PlayerInput.aForward * X) + (PlayerInput.aStrafe * Y)) + (PlayerInput.aUp * vect(0.0000000, 0.0000000, 1.0000000)); + newAccel = Pawn.AccelRate * Normal(newAccel); + OldRotation = Rotation; + UpdateRotation(DeltaTime); + // End:0x178 + if(int(Role) < int(ROLE_Authority)) + { + ReplicateMove(DeltaTime, newAccel, 0, OldRotation - Rotation); + } + else + { + ProcessMove(DeltaTime, newAccel, 0, OldRotation - Rotation); + } + bPressedJump = false; + } + //return; + } + + event Timer() + { + // End:0x72 + if(!Pawn.PhysicsVolume.bWaterVolume && int(Role) == int(ROLE_Authority)) + { + GotoState(Pawn.LandMovementState); + } + ClearTimer(); + //return; + } + + event BeginState(name PreviousStateName) + { + ClearTimer(); + // End:0x4F + if(int(Pawn.Physics) != int(10)) + { + Pawn.SetPhysics(3); + } + //return; + } +Begin: + + stop; +} + +state PlayerFlying +{ + ignores Bump, HearNoise, SeePlayer; + + function PlayerMove(float DeltaTime) + { + local Vector X, Y, Z; + + GetAxes(Rotation, X, Y, Z); + Pawn.Acceleration = ((PlayerInput.aForward * X) + (PlayerInput.aStrafe * Y)) + (PlayerInput.aUp * vect(0.0000000, 0.0000000, 1.0000000)); + Pawn.Acceleration = Pawn.AccelRate * Normal(Pawn.Acceleration); + // End:0x192 + if(bCheatFlying && Pawn.Acceleration == vect(0.0000000, 0.0000000, 0.0000000)) + { + Pawn.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + } + UpdateRotation(DeltaTime); + // End:0x1FC + if(int(Role) < int(ROLE_Authority)) + { + ReplicateMove(DeltaTime, Pawn.Acceleration, 0, rot(0, 0, 0)); + } + else + { + ProcessMove(DeltaTime, Pawn.Acceleration, 0, rot(0, 0, 0)); + } + //return; + } + + event BeginState(name PreviousStateName) + { + Pawn.SetPhysics(4); + //return; + } + stop; +} + +state BaseSpectating +{ + function bool LimitSpectatorVelocity() + { + // End:0xAF + if(Location.Z > WorldInfo.StallZ) + { + Velocity.Z = FMin(SpectatorCameraSpeed, (WorldInfo.StallZ - Location.Z) - 2.0000000); + return true; + } + else + { + // End:0x15B + if(Location.Z < WorldInfo.KillZ) + { + Velocity.Z = FMin(SpectatorCameraSpeed, (WorldInfo.KillZ - Location.Z) + 2.0000000); + return true; + } + } + return false; + //return ReturnValue; + } + + function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) + { + local float VelSize; + + Acceleration = Normal(newAccel) * SpectatorCameraSpeed; + VelSize = VSize(Velocity); + // End:0x94 + if(VelSize > float(0)) + { + Velocity = Velocity - ((Velocity - (Normal(Acceleration) * VelSize)) * FMin(DeltaTime * float(8), 1.0000000)); + } + Velocity = Velocity + (Acceleration * DeltaTime); + // End:0xF6 + if(VSize(Velocity) > SpectatorCameraSpeed) + { + Velocity = Normal(Velocity) * SpectatorCameraSpeed; + } + LimitSpectatorVelocity(); + // End:0x182 + if(VSize(Velocity) > float(0)) + { + MoveSmooth((float(1 + int(bRun)) * Velocity) * DeltaTime); + // End:0x182 + if(LimitSpectatorVelocity()) + { + MoveSmooth((Velocity.Z * vect(0.0000000, 0.0000000, 1.0000000)) * DeltaTime); + } + } + //return; + } + + function PlayerMove(float DeltaTime) + { + local Vector X, Y, Z; + + GetAxes(Rotation, X, Y, Z); + Acceleration = ((PlayerInput.aForward * X) + (PlayerInput.aStrafe * Y)) + (PlayerInput.aUp * vect(0.0000000, 0.0000000, 1.0000000)); + UpdateRotation(DeltaTime); + // End:0x108 + if(int(Role) < int(ROLE_Authority)) + { + ReplicateMove(DeltaTime, Acceleration, 0, rot(0, 0, 0)); + } + else + { + ProcessMove(DeltaTime, Acceleration, 0, rot(0, 0, 0)); + } + //return; + } + + unreliable server function ServerSetSpectatorLocation(Vector NewLoc) + { + SetLocation(NewLoc); + // End:0x75 + if((WorldInfo.TimeSeconds - LastSpectatorStateSynchTime) > 2.0000000) + { + ClientGotoState(GetStateName()); + LastSpectatorStateSynchTime = WorldInfo.TimeSeconds; + } + //return; + } + + function ReplicateMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) + { + ProcessMove(DeltaTime, newAccel, DoubleClickMove, DeltaRot); + ServerSetSpectatorLocation(Location); + // End:0x95 + if((PlayerCamera != none) && PlayerCamera.bUseClientSideCameraUpdates) + { + PlayerCamera.bShouldSendClientSideCameraUpdate = true; + } + //return; + } + + event BeginState(name PreviousStateName) + { + bCollideWorld = true; + //return; + } + + event EndState(name NextStateName) + { + bCollideWorld = false; + //return; + } + stop; +} + +state Spectating extends BaseSpectating +{ + ignores NotifyHeadVolumeChange, NotifyPhysicsVolumeChange, ThrowWeapon, Suicide, RestartLevel; + + exec function StartFire() + { + ServerViewNextPlayer(); + //return; + } + + exec function StartAltFire(optional byte FireModeNum) + { + ResetCameraMode(); + ServerViewSelf(); + //return; + } + + event BeginState(name PreviousStateName) + { + // End:0x3A + if(Pawn != none) + { + SetLocation(Pawn.Location); + UnPossess(); + } + bCollideWorld = true; + //return; + } + + event EndState(name NextStateName) + { + // End:0x52 + if(PlayerReplicationInfo != none) + { + // End:0x31 + if(PlayerReplicationInfo.bOnlySpectator) + { + } + PlayerReplicationInfo.bIsSpectator = false; + } + bCollideWorld = false; + //return; + } + stop; +} + +auto state PlayerWaiting extends BaseSpectating +{ + ignores ServerSuicide, Suicide, Jump, SwitchToBestWeapon, PrevWeapon, NextWeapon, + PhysicsVolumeChange, TakeDamage, NotifyBump, HearNoise, SeePlayer; + + reliable server function ServerChangeTeam(int N) + { + WorldInfo.Game.ChangeTeam(self, N, true); + //return; + } + + reliable server function ServerRestartPlayer() + { + // End:0x2E + if(WorldInfo.TimeSeconds < WaitDelay) + { + return; + } + // End:0x59 + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + return; + } + // End:0xB4 + if(WorldInfo.Game.bWaitingToStartMatch) + { + PlayerReplicationInfo.bReadyToPlay = true; + } + else + { + WorldInfo.Game.RestartPlayer(self); + } + //return; + } + + exec function StartFire() + { + ServerRestartPlayer(); + //return; + } + + event EndState(name NextStateName) + { + // End:0x2F + if(PlayerReplicationInfo != none) + { + PlayerReplicationInfo.SetWaitingPlayer(false); + } + bCollideWorld = false; + //return; + } + + simulated event BeginState(name PreviousStateName) + { + // End:0x2F + if(PlayerReplicationInfo != none) + { + PlayerReplicationInfo.SetWaitingPlayer(true); + } + bCollideWorld = true; + //return; + } + stop; +} + +state WaitingForPawn extends BaseSpectating +{ + ignores KilledBy, HearNoise, SeePlayer; + + exec function StartFire() + { + AskForPawn(); + //return; + } + + reliable client simulated function ClientGotoState(name NewState, optional name NewLabel) + { + // End:0x34 + if(NewState == 'RoundEnded') + { + global.ClientGotoState(NewState, NewLabel); + } + //return; + } + + unreliable client simulated function LongClientAdjustPosition(float TimeStamp, name NewState, Actor.EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, float NewVelX, float NewVelY, float NewVelZ, Actor NewBase, float NewFloorX, float NewFloorY, float NewFloorZ) + { + // End:0x25 + if(NewState == 'RoundEnded') + { + GotoState(NewState); + } + //return; + } + + event PlayerTick(float DeltaTime) + { + global.PlayerTick(DeltaTime); + // End:0x78 + if(Pawn != none) + { + Pawn.Controller = self; + Pawn.BecomeViewTarget(self); + ClientRestart(Pawn); + } + else + { + // End:0xB6 + if(!IsTimerActive() || GetTimerCount() > 1.0000000) + { + SetTimer(0.2000000, true); + AskForPawn(); + } + } + //return; + } + + function ReplicateMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) + { + ProcessMove(DeltaTime, newAccel, DoubleClickMove, DeltaRot); + //return; + } + + event Timer() + { + AskForPawn(); + //return; + } + + event BeginState(name PreviousStateName) + { + SetTimer(0.2000000, true); + AskForPawn(); + //return; + } + + event EndState(name NextStateName) + { + ResetCameraMode(); + SetTimer(0.0000000, false); + //return; + } + stop; +} + +state RoundEnded +{ + ignores LongClientAdjustPosition, Use, ThrowWeapon, ServerRestartPlayer, Suicide, TakeDamage, + Falling, NotifyPhysicsVolumeChange, NotifyHeadVolumeChange, HitWall, NotifyBump, + KilledBy, HearNoise, SeePlayer; + + event Possess(Pawn aPawn, bool bVehicleTransition) + { + global.Possess(aPawn, bVehicleTransition); + // End:0x4B + if(Pawn != none) + { + Pawn.TurnOff(); + } + //return; + } + + reliable server function ServerRestartGame() + { + // End:0x6C + if(WorldInfo.Game.PlayerCanRestartGame(self)) + { + WorldInfo.Game.ResetLevel(); + } + //return; + } + + exec function StartFire() + { + // End:0x16 + if(int(Role) < int(ROLE_Authority)) + { + return; + } + // End:0x32 + if(!bFrozen) + { + ServerRestartGame(); + } + else + { + // End:0x4E + if(!IsTimerActive()) + { + SetTimer(1.5000000, false); + } + } + //return; + } + + function PlayerMove(float DeltaTime) + { + local Vector X, Y, Z; + local Rotator DeltaRot, ViewRotation; + + GetAxes(Rotation, X, Y, Z); + ViewRotation = Rotation; + DeltaRot.Yaw = int(PlayerInput.aTurn); + DeltaRot.Pitch = int(PlayerInput.aLookUp); + ProcessViewRotation(DeltaTime, ViewRotation, DeltaRot); + SetRotation(ViewRotation); + ViewShake(DeltaTime); + // End:0x13D + if(int(Role) < int(ROLE_Authority)) + { + ReplicateMove(DeltaTime, vect(0.0000000, 0.0000000, 0.0000000), 0, rot(0, 0, 0)); + } + else + { + ProcessMove(DeltaTime, vect(0.0000000, 0.0000000, 0.0000000), 0, rot(0, 0, 0)); + } + bPressedJump = false; + //return; + } + + unreliable server function ServerMove(float TimeStamp, Vector InAccel, Vector ClientLoc, byte NewFlags, byte ClientRoll, int View) + { + global.ServerMove(TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, ((Rotation.Yaw & 65535) << 16) + (Rotation.Pitch & 65535)); + //return; + } + + function FindGoodView() + { + local Rotator GoodRotation; + + GoodRotation = Rotation; + GetViewTarget().FindGoodEndView(self, GoodRotation); + SetRotation(GoodRotation); + //return; + } + + event Timer() + { + bFrozen = false; + //return; + } + + event BeginState(name PreviousStateName) + { + local Pawn P; + + FOVAngle = DesiredFOV; + bFire = 0; + // End:0x57 + if(Pawn != none) + { + Pawn.TurnOff(); + StopFiring(); + } + // End:0x86 + if(myHUD != none) + { + myHUD.SetShowScores(true); + } + bFrozen = true; + FindGoodView(); + SetTimer(5.0000000, false); + // End:0xE0 + foreach DynamicActors(Class'Engine.Pawn', P) + { + P.TurnOff(); + } + //return; + } + + event EndState(name NextStateName) + { + // End:0x2F + if(myHUD != none) + { + myHUD.SetShowScores(false); + } + //return; + } +Begin: + + stop; +} + +state Dead +{ + ignores ThrowWeapon, PrevWeapon, NextWeapon, KilledBy, HearNoise, SeePlayer; + + simulated event ReplicatedEvent(name VarName) + { + // End:0x54 + if(((VarName == 'Pawn') && Pawn != none) && Pawn != AcknowledgedPawn) + { + ClientRestart(Pawn); + } + global.ReplicatedEvent(VarName); + //return; + } + + function bool IsDead() + { + return true; + //return ReturnValue; + } + + reliable server function ServerRestartPlayer() + { + // End:0x3C + if(!WorldInfo.Game.PlayerCanRestart(self)) + { + return; + } + super.ServerRestartPlayer(); + //return; + } + + exec function StartFire() + { + // End:0x48 + if(bFrozen) + { + // End:0x46 + if(!IsTimerActive() || GetTimerCount() > MinRespawnDelay) + { + bFrozen = false; + } + return; + } + ServerRestartPlayer(); + //return; + } + + exec function Use() + { + StartFire(); + //return; + } + + exec function Jump() + { + StartFire(); + //return; + } + + unreliable server function ServerMove(float TimeStamp, Vector Accel, Vector ClientLoc, byte NewFlags, byte ClientRoll, int View) + { + global.ServerMove(TimeStamp, Accel, ClientLoc, 0, ClientRoll, View); + //return; + } + + function PlayerMove(float DeltaTime) + { + local Vector X, Y, Z; + local Rotator DeltaRot, ViewRotation; + + // End:0x152 + if(!bFrozen) + { + // End:0x28 + if(bPressedJump) + { + bPressedJump = false; + } + GetAxes(Rotation, X, Y, Z); + ViewRotation = Rotation; + DeltaRot.Yaw = int(PlayerInput.aTurn); + DeltaRot.Pitch = int(PlayerInput.aLookUp); + ProcessViewRotation(DeltaTime, ViewRotation, DeltaRot); + SetRotation(ViewRotation); + // End:0x14F + if(int(Role) < int(ROLE_Authority)) + { + ReplicateMove(DeltaTime, vect(0.0000000, 0.0000000, 0.0000000), 0, rot(0, 0, 0)); + } + } + else + { + // End:0x18B + if(!IsTimerActive() || GetTimerCount() > MinRespawnDelay) + { + bFrozen = false; + } + } + ViewShake(DeltaTime); + //return; + } + + function FindGoodView() + { + local Vector CameraLoc; + local Rotator CameraRot, ViewRotation; + local int tries, besttry; + local float bestDist, newdist; + local int startYaw; + local Actor TheViewTarget; + + ViewRotation = Rotation; + ViewRotation.Pitch = 56000; + tries = 0; + besttry = 0; + bestDist = 0.0000000; + startYaw = ViewRotation.Yaw; + TheViewTarget = GetViewTarget(); + tries = 0; + J0x9F: + + // End:0x1A2 [Loop If] + if(tries < 16) + { + CameraLoc = TheViewTarget.Location; + SetRotation(ViewRotation); + GetPlayerViewPoint(CameraLoc, CameraRot); + newdist = VSize(CameraLoc - TheViewTarget.Location); + // End:0x171 + if(newdist > bestDist) + { + bestDist = newdist; + besttry = tries; + } + ViewRotation.Yaw += 4096; + tries++; + // [Loop Continue] + goto J0x9F; + } + ViewRotation.Yaw = startYaw + (besttry * 4096); + SetRotation(ViewRotation); + //return; + } + + event Timer() + { + // End:0x11 + if(!bFrozen) + { + return; + } + bFrozen = false; + bPressedJump = false; + //return; + } + + event BeginState(name PreviousStateName) + { + // End:0x55 + if((Pawn != none) && Pawn.Controller == self) + { + Pawn.Controller = none; + } + Pawn = none; + FOVAngle = DesiredFOV; + Enemy = none; + bFrozen = true; + bPressedJump = false; + FindGoodView(); + SetTimer(MinRespawnDelay, false); + CleanOutSavedMoves(); + //return; + } + + event EndState(name NextStateName) + { + CleanOutSavedMoves(); + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + // End:0x66 + if(!PlayerReplicationInfo.bOutOfLives) + { + ResetCameraMode(); + } + bPressedJump = false; + // End:0xA1 + if(myHUD != none) + { + myHUD.SetShowScores(false); + } + //return; + } +Begin: + + // End:0x46 + if(LocalPlayer(Player) != none) + { + // End:0x46 + if(myHUD != none) + { + myHUD.PlayerOwnerDied(); + } + } + stop; +} + +defaultproperties +{ + CameraClass=Class'Engine.Camera' + bInteractiveMode=true + bShowKismetDrawText=true + bAcceptSendCorrections=true + bIsUsingStreamingVolumes=true + bIsControllerConnected=true + bCheckRelevancyThroughPortals=true + MaxResponseTime=0.1250000 + FOVAngle=85.0000000 + DesiredFOV=85.0000000 + DefaultFOV=85.0000000 + LODDistanceFactor=1.0000000 + SavedMoveClass=Class'Engine.SavedMove' + LastSpeedHackLog=-100.0000000 + CheatClass=Class'Engine.CheatManager' + InputClass=Class'Engine.PlayerInput' + // Reference: CylinderComponent'Engine.Default__PlayerController.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + ForceFeedbackManagerClassName="WinDrv.XnaForceFeedbackManager" + InteractDistance=512.0000000 + SpectatorCameraSpeed=600.0000000 + MinRespawnDelay=1.0000000 + MaxConcurrentHearSounds=32 + bIsPlayer=true + bCanDoSpecial=true + Components[0]=CollisionCylinder + NetPriority=3.0000000 + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/PlayerInput.uc b/exported/Engine/Classes/PlayerInput.uc new file mode 100755 index 00000000..b26590dd --- /dev/null +++ b/exported/Engine/Classes/PlayerInput.uc @@ -0,0 +1,664 @@ +class PlayerInput extends Input within PlayerController + transient + native(UserInterface) + config(Input) + hidecategories(Object,UIRoot); + +var const bool bUsingGamepad; +var globalconfig bool bInvertMouse; +var globalconfig bool bInvertTurn; +var bool bWasForward; +var bool bWasBack; +var bool bWasLeft; +var bool bWasRight; +var bool bEdgeForward; +var bool bEdgeBack; +var bool bEdgeLeft; +var bool bEdgeRight; +var globalconfig bool bEnableMouseSmoothing; +var bool bEnableFOVScaling; +var transient bool bLockTurnUntilRelease; +var const name LastAxisKeyName; +var float DoubleClickTimer; +var globalconfig float DoubleClickTime; +var globalconfig float MouseSensitivity; +var globalconfig float m_fLookSensitivity; +var globalconfig float m_fLookSensitivityY; +var input float aBaseX; +var input float aBaseY; +var input float aBaseZ; +var input float aMouseX; +var input float aMouseY; +var input float aForward; +var input float aTurn; +var input float aStrafe; +var input float aUp; +var input float aLookUp; +var input float aRightAnalogTrigger; +var input float aLeftAnalogTrigger; +var input float aPS3AccelX; +var input float aPS3AccelY; +var input float aPS3AccelZ; +var input float aPS3Gyro; +var input float aWiiUPointerX; +var input float aWiiUPointerY; +var input Vector aTilt; +var input Vector aRotationRate; +var input Vector aGravity; +var input Vector aAcceleration; +var input Vector aTouch[5]; +var input Vector aBackTouch[5]; +var transient float RawJoyUp; +var transient float RawJoyRight; +var transient float RawJoyLookRight; +var transient float RawJoyLookUp; +var() config float MoveForwardSpeed; +var() config float MoveStrafeSpeed; +var() config float LookRightScale; +var() config float LookUpScale; +var input byte bStrafe; +var input byte bXAxis; +var input byte bYAxis; +var float ZeroTime[2]; +var float SmoothedMouse[2]; +var int MouseSamples; +var float MouseSamplingTotal; +var transient float AutoUnlockTurnTime; + +// Export UPlayerInput::execCancelMobileInput(FFrame&, void* const) +native function CancelMobileInput(); + +exec function bool InvertMouse() +{ + bInvertMouse = !bInvertMouse; + SaveConfig(); + return bInvertMouse; + //return ReturnValue; +} + +exec function bool InvertTurn() +{ + bInvertTurn = !bInvertTurn; + SaveConfig(); + return bInvertTurn; + //return ReturnValue; +} + +exec function SetSensitivity(float F) +{ + MouseSensitivity = F; + //return; +} + +function DrawHUD(HUD H) +{ + //return; +} + +function PreProcessInput(float DeltaTime) +{ + //return; +} + +function PostProcessInput(float DeltaTime) +{ + //return; +} + +function AdjustMouseSensitivity(float FOVScale) +{ + aMouseX *= (MouseSensitivity * FOVScale); + aMouseY *= (MouseSensitivity * FOVScale); + //return; +} + +event PlayerInput(float DeltaTime) +{ + local float FOVScale, TimeScale; + + RawJoyUp = aBaseY; + RawJoyRight = aStrafe; + RawJoyLookRight = aTurn; + RawJoyLookUp = aLookUp; + DeltaTime = Outer.WorldInfo.m_fRealDeltaSeconds; + PreProcessInput(DeltaTime); + TimeScale = 100.0000000 * DeltaTime; + aBaseY *= (TimeScale * MoveForwardSpeed); + aStrafe *= (TimeScale * MoveStrafeSpeed); + aUp *= (TimeScale * MoveStrafeSpeed); + aTurn *= (TimeScale * LookRightScale); + aLookUp *= (TimeScale * LookUpScale); + // End:0x186 + if(bUsingGamepad) + { + aTurn *= m_fLookSensitivity; + aLookUp *= m_fLookSensitivityY; + } + PostProcessInput(DeltaTime); + ProcessInputMatching(DeltaTime); + CatchDoubleClickInput(); + // End:0x1F6 + if(bEnableFOVScaling) + { + FOVScale = Outer.GetFOVAngle() * 0.0166660; + } + else + { + FOVScale = 1.0000000; + } + AdjustMouseSensitivity(FOVScale); + // End:0x285 + if(bEnableMouseSmoothing) + { + aMouseX = SmoothMouse(aMouseX, DeltaTime, bXAxis, 0); + aMouseY = SmoothMouse(aMouseY, DeltaTime, bYAxis, 1); + } + aLookUp *= FOVScale; + aTurn *= FOVScale; + // End:0x2E3 + if(int(bStrafe) > int(0)) + { + aStrafe += (aBaseX + aMouseX); + } + else + { + aTurn += (aBaseX + aMouseX); + } + aLookUp += aMouseY; + // End:0x333 + if(bInvertMouse) + { + aLookUp *= -1.0000000; + } + // End:0x350 + if(bInvertTurn) + { + aTurn *= -1.0000000; + } + aForward += aBaseY; + Outer.HandleWalking(); + // End:0x405 + if(bLockTurnUntilRelease) + { + // End:0x3F9 + if(RawJoyLookRight != float(0)) + { + aTurn = 0.0000000; + // End:0x3F6 + if(AutoUnlockTurnTime > 0.0000000) + { + AutoUnlockTurnTime -= DeltaTime; + // End:0x3F6 + if(AutoUnlockTurnTime < 0.0000000) + { + bLockTurnUntilRelease = false; + } + } + } + else + { + bLockTurnUntilRelease = false; + } + } + // End:0x454 + if(Outer.IsMoveInputIgnored()) + { + aForward = 0.0000000; + aStrafe = 0.0000000; + aUp = 0.0000000; + } + // End:0x494 + if(Outer.IsLookInputIgnored()) + { + aTurn = 0.0000000; + aLookUp = 0.0000000; + } + //return; +} + +function CatchDoubleClickInput() +{ + // End:0x11C + if(!Outer.IsMoveInputIgnored()) + { + bEdgeForward = bWasForward ^^ (aBaseY > float(0)); + bEdgeBack = bWasBack ^^ (aBaseY < float(0)); + bEdgeLeft = bWasLeft ^^ (aStrafe < float(0)); + bEdgeRight = bWasRight ^^ (aStrafe > float(0)); + bWasForward = aBaseY > float(0); + bWasBack = aBaseY < float(0); + bWasLeft = aStrafe < float(0); + bWasRight = aStrafe > float(0); + } + //return; +} + +function Actor.EDoubleClickDir CheckForDoubleClickMove(float DeltaTime) +{ + local Actor.EDoubleClickDir DoubleClickMove, OldDoubleClick; + + // End:0x38 + if(int(Outer.DoubleClickDir) == int(5)) + { + DoubleClickMove = 5; + } + else + { + DoubleClickMove = 0; + } + // End:0x49F + if(DoubleClickTime > 0.0000000) + { + // End:0x117 + if(int(Outer.DoubleClickDir) == int(5)) + { + // End:0x114 + if((Outer.Pawn != none) && int(Outer.Pawn.Physics) == int(1)) + { + DoubleClickTimer = 0.0000000; + Outer.DoubleClickDir = 6; + } + } + else + { + // End:0x35A + if(int(Outer.DoubleClickDir) != int(6)) + { + OldDoubleClick = Outer.DoubleClickDir; + Outer.DoubleClickDir = 0; + // End:0x1C9 + if(bEdgeForward && bWasForward) + { + Outer.DoubleClickDir = 3; + } + else + { + // End:0x209 + if(bEdgeBack && bWasBack) + { + Outer.DoubleClickDir = 4; + } + else + { + // End:0x249 + if(bEdgeLeft && bWasLeft) + { + Outer.DoubleClickDir = 1; + } + else + { + // End:0x286 + if(bEdgeRight && bWasRight) + { + Outer.DoubleClickDir = 2; + } + } + } + } + // End:0x2DA + if(int(Outer.DoubleClickDir) == int(0)) + { + Outer.DoubleClickDir = OldDoubleClick; + } + else + { + // End:0x332 + if(int(Outer.DoubleClickDir) != int(OldDoubleClick)) + { + DoubleClickTimer = DoubleClickTime + (0.5000000 * DeltaTime); + } + else + { + DoubleClickMove = Outer.DoubleClickDir; + } + } + } + } + // End:0x3F2 + if(int(Outer.DoubleClickDir) == int(6)) + { + DoubleClickTimer = FMin(DoubleClickTimer - DeltaTime, 0.0000000); + // End:0x3EF + if(DoubleClickTimer < -0.3500000) + { + Outer.DoubleClickDir = 0; + DoubleClickTimer = DoubleClickTime; + } + } + else + { + // End:0x49F + if((int(Outer.DoubleClickDir) != int(0)) && int(Outer.DoubleClickDir) != int(5)) + { + DoubleClickTimer -= DeltaTime; + // End:0x49F + if(DoubleClickTimer < float(0)) + { + Outer.DoubleClickDir = 0; + DoubleClickTimer = DoubleClickTime; + } + } + } + } + return DoubleClickMove; + //return ReturnValue; +} + +final function ProcessInputMatching(float DeltaTime) +{ + local float Value; + local int I, MatchIdx; + local bool bMatch; + + I = 0; + J0x0B: + + // End:0x9AE [Loop If] + if(I < Outer.InputRequests.Length) + { + // End:0x9A0 + if((Outer.InputRequests[I].MatchIdx >= 0) && Outer.InputRequests[I].MatchIdx < Outer.InputRequests[I].Inputs.Length) + { + // End:0x17D + if(Outer.InputRequests[I].MatchActor == none) + { + Outer.InputRequests[I].MatchActor = Outer; + } + MatchIdx = Outer.InputRequests[I].MatchIdx; + // End:0x45A + if(((MatchIdx != 0) && Outer.InputRequests[I].Inputs[MatchIdx].TimeDelta > 0.0000000) && (Outer.WorldInfo.TimeSeconds - Outer.InputRequests[I].LastMatchTime) >= Outer.InputRequests[I].Inputs[MatchIdx].TimeDelta) + { + Outer.InputRequests[I].LastMatchTime = 0.0000000; + Outer.InputRequests[I].MatchIdx = 0; + // End:0x457 + if(Outer.InputRequests[I].FailedFuncName != 'None') + { + Outer.InputRequests[I].MatchActor.SetTimer(0.0100000, false, Outer.InputRequests[I].FailedFuncName); + } + } + else + { + Value = 0.0000000; + switch(Outer.InputRequests[I].Inputs[MatchIdx].Type) + { + // End:0x4E6 + case 0: + Value = aStrafe; + // End:0x504 + break; + // End:0x501 + case 1: + Value = aBaseY; + // End:0x504 + break; + // End:0xFFFF + default: + break; + } + switch(Outer.InputRequests[I].Inputs[MatchIdx].Action) + { + // End:0x5DC + case 0: + bMatch = Value >= Outer.InputRequests[I].Inputs[MatchIdx].Value; + // End:0x655 + break; + // End:0x652 + case 1: + bMatch = Value <= Outer.InputRequests[I].Inputs[MatchIdx].Value; + // End:0x655 + break; + // End:0xFFFF + default: + break; + } + // End:0x9A0 + if(bMatch) + { + Outer.InputRequests[I].LastMatchTime = Outer.WorldInfo.TimeSeconds; + Outer.InputRequests[I].MatchIdx++; + // End:0x9A0 + if(Outer.InputRequests[I].MatchIdx >= Outer.InputRequests[I].Inputs.Length) + { + // End:0x84D + if(Outer.InputRequests[I].MatchDelegate != none) + { + Outer.__InputMatchDelegate__Delegate = Outer.InputRequests[I].MatchDelegate; + Outer.InputMatchDelegate(); + } + // End:0x922 + if(Outer.InputRequests[I].MatchFuncName != 'None') + { + Outer.InputRequests[I].MatchActor.SetTimer(0.0100000, false, Outer.InputRequests[I].MatchFuncName); + } + Outer.InputRequests[I].LastMatchTime = 0.0000000; + Outer.InputRequests[I].MatchIdx = 0; + } + } + } + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +exec function Jump() +{ + // End:0x7A + if(Outer.WorldInfo.Pauser == Outer.PlayerReplicationInfo) + { + Outer.SetPause(false); + } + else + { + Outer.bPressedJump = true; + } + //return; +} + +exec function SmartJump() +{ + Jump(); + //return; +} + +exec function ClearSmoothing() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x5B [Loop If] + if(I < 2) + { + ZeroTime[I] = 0.0000000; + SmoothedMouse[I] = 0.0000000; + I++; + // [Loop Continue] + goto J0x0B; + } + MouseSamplingTotal = default.MouseSamplingTotal; + MouseSamples = default.MouseSamples; + //return; +} + +function float SmoothMouse(float aMouse, float DeltaTime, out byte SampleCount, int Index) +{ + local float MouseSamplingTime; + + // End:0x1BB + if(DeltaTime < 0.2500000) + { + MouseSamplingTime = MouseSamplingTotal / float(MouseSamples); + // End:0xD5 + if(aMouse == float(0)) + { + ZeroTime[Index] += DeltaTime; + // End:0xB9 + if(ZeroTime[Index] < MouseSamplingTime) + { + aMouse = (SmoothedMouse[Index] * DeltaTime) / MouseSamplingTime; + } + else + { + SmoothedMouse[Index] = 0.0000000; + } + } + else + { + ZeroTime[Index] = 0.0000000; + // End:0x18E + if(SmoothedMouse[Index] != float(0)) + { + // End:0x16E + if(DeltaTime < (MouseSamplingTime * float(int(SampleCount) + int(1)))) + { + aMouse = (aMouse * DeltaTime) / (MouseSamplingTime * float(SampleCount)); + } + else + { + SampleCount = byte(DeltaTime / MouseSamplingTime); + } + } + SmoothedMouse[Index] = aMouse / float(SampleCount); + } + } + else + { + ClearSmoothing(); + } + SampleCount = 0; + return aMouse; + //return ReturnValue; +} + +// Export UPlayerInput::execInitInputSystem(FFrame&, void* const) +native function InitInputSystem(); + +function ClientInitInputSystem() +{ + //return; +} + +function PreClientTravel(string PendingURL, Actor.ETravelType TravelType, bool bIsSeamlessTravel) +{ + //return; +} + +defaultproperties +{ + bEnableFOVScaling=true + DoubleClickTime=0.2500000 + MouseSensitivity=50.0000000 + m_fLookSensitivity=1.0000000 + m_fLookSensitivityY=1.0000000 + MoveForwardSpeed=1200.0000000 + MoveStrafeSpeed=1200.0000000 + LookRightScale=300.0000000 + LookUpScale=-250.0000000 + MouseSamples=1 + MouseSamplingTotal=0.0083000 + Bindings[0]=(Name="Fire",Command="Button bFire | StartFire | OnRelease StopFire",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[1]=(Name="AltFire",Command="StartAltFire | OnRelease StopAltFire",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[2]=(Name="MoveForward",Command="Axis aBaseY Speed=1.0",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[3]=(Name="MoveBackward",Command="Axis aBaseY Speed=-1.0",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[4]=(Name="TurnLeft",Command="Axis aBaseX Speed=-200.0 AbsoluteAxis=100",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[5]=(Name="TurnRight",Command="Axis aBaseX Speed=+200.0 AbsoluteAxis=100",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[6]=(Name="StrafeLeft",Command="Axis aStrafe Speed=-1.0",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[7]=(Name="StrafeRight",Command="Axis aStrafe Speed=+1.0",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[8]=(Name="Jump",Command="Jump | Axis aUp Speed=+1.0 AbsoluteAxis=100",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[9]=(Name="Duck",Command="Button bDuck | Axis aUp Speed=-1.0 AbsoluteAxis=100",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[10]=(Name="Look",Command="Button bLook",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[11]=(Name="Pause",Command="Pause",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[12]=(Name="LookToggle",Command="Toggle bLook",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[13]=(Name="LookUp",Command="Axis aLookUp Speed=+25.0 AbsoluteAxis=100",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[14]=(Name="LookDown",Command="Axis aLookUp Speed=-25.0 AbsoluteAxis=100",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[15]=(Name="CenterView",Command="Button bSnapLevel",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[16]=(Name="Walking",Command="Button bRun",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[17]=(Name="Strafe",Command="Button bStrafe",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[18]=(Name="NextWeapon",Command="NextWeapon",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[19]=(Name="ViewTeam",Command="ViewClass Pawn",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[20]=(Name="TurnToNearest",Command="Button bTurnToNearest",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[21]=(Name="Turn180",Command="Button bTurn180",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[22]=(Name="W",Command="MoveForward",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[23]=(Name="S",Command="MoveBackward",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[24]=(Name="A",Command="StrafeLeft",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[25]=(Name="D",Command="StrafeRight",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[26]=(Name="F",Command="FreezeRendering",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[27]=(Name="MouseX",Command="Count bXAxis | Axis aMouseX",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[28]=(Name="MouseY",Command="Count bYAxis | Axis aMouseY",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[29]=(Name="LeftMouseButton",Command="Fire",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[30]=(Name="RightMouseButton",Command="AltFire",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[31]=(Name="LeftControl",Command="Jump",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[32]=(Name="SpaceBar",Command="Jump",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[33]=(Name="BackSpace",Command="Jump",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[34]=(Name="Escape",Command="CloseEditorViewport | onrelease ShowMenu",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[35]=(Name="E",Command="Use",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[36]=(Name="MouseScrollUp",Command="PrevWeapon",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[37]=(Name="MouseScrollDown",Command="NextWeapon",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[38]=(Name="C",Command="DoDuck",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[39]=(Name="P",Command="TogglePhysicsMode",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[40]=(Name="B",Command="ToggleSpeaking true | OnRelease ToggleSpeaking false",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[41]=(Name="T",Command="Talk",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[42]=(Name="Up",Command="MoveForward",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[43]=(Name="Down",Command="MoveBackward",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[44]=(Name="Left",Command="TurnLeft",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[45]=(Name="Right",Command="TurnRight",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[46]=(Name="LeftShift",Command="Walking",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[47]=(Name="F1",Command="ShowMouseCursor",Control=false,Shift=true,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[48]=(Name="F1",Command="viewmode wireframe",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=true,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[49]=(Name="F2",Command="viewmode unlit",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[50]=(Name="F3",Command="viewmode lit",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[51]=(Name="F4",Command="viewmode detaillighting",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[52]=(Name="F5",Command="viewmode shadercomplexity",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[53]=(Name="F7",Command="OPENKISMETDEBUGGER SEQUENCE=PAUSEKISMETDEBUGGER",Control=false,Shift=false,Alt=true,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[54]=(Name="F9",Command="shot",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[55]=(Name="Period",Command="RECOMPILESHADERS CHANGED",Control=true,Shift=true,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[56]=(Name="Delete",Command="Camera Default",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[57]=(Name="End",Command="Camera FirstPerson",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[58]=(Name="PageDown",Command="Camera ThirdPerson",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[59]=(Name="PageUp",Command="Camera Fixed",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[60]=(Name="Home",Command="Camera FixedTracking",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[61]=(Name="Insert",Command="Camera FreeCam",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[62]=(Name="XboxTypeS_X",Command="Use",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[63]=(Name="XboxTypeS_A",Command="Jump",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[64]=(Name="XboxTypeS_B",Command="ChangePosture",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[65]=(Name="XboxTypeS_Y",Command="NextWeapon",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[66]=(Name="XboxTypeS_Back",Command="",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[67]=(Name="XboxTypeS_Start",Command="|onrelease showmenu",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[68]=(Name="XboxTypeS_LeftShoulder",Command="obj list",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[69]=(Name="XboxTypeS_RightShoulder",Command="mem",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[70]=(Name="XboxTypeS_DPad_Up",Command="MoveForward",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[71]=(Name="XboxTypeS_DPad_Down",Command="MoveBackward",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[72]=(Name="XboxTypeS_DPad_Left",Command="TurnLeft",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[73]=(Name="XboxTypeS_DPad_Right",Command="TurnRight",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[74]=(Name="XboxTypeS_RightTrigger",Command="Fire",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[75]=(Name="XboxTypeS_LeftTrigger",Command="ToggleTargetingMode",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[76]=(Name="XboxTypeS_LeftX",Command="Axis aStrafe Speed=1.0 DeadZone=0.3",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[77]=(Name="XboxTypeS_LeftY",Command="Axis aBaseY Speed=1.0 DeadZone=0.3",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[78]=(Name="XboxTypeS_RightX",Command="Axis aTurn Speed=1.0 DeadZone=0.2",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[79]=(Name="XboxTypeS_RightY",Command="Axis aLookup Speed=0.8 DeadZone=0.2",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[80]=(Name="XboxTypeS_LeftTriggerAxis",Command="Axis aLeftAnalogTrigger Speed=1.0 DeadZone=0.11",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[81]=(Name="XboxTypeS_RightTriggerAxis",Command="Axis aRightAnalogTrigger Speed=1.0 DeadZone=0.11",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[82]=(Name="MOBILE_StopMatinee",Command="ce stopmatinee | OnRelease StopUseAttractModeInputConfig",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[83]=(Name="MOBILE_StartMatinee",Command="ce playmatinee | OnRelease StartUseAttractModeInputConfig",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[84]=(Name="MOBILE_NextConfig",Command="OnRelease NextMobileInputConfig",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[85]=(Name="MOBILE_CalibrateTilt",Command="CalibrateTilt",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[86]=(Name="MOBILE_ATurn",Command="Axis aTurn DeadZone=0.05",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[87]=(Name="MOBILE_ALookup",Command="Axis aLookup Speed=-1 DeadZone=0.05",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[88]=(Name="MOBILE_AStrafe",Command="Axis aStrafe DeadZone=0.15",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[89]=(Name="MOBILE_AForward",Command="Axis aBaseY DeadZone=0.15",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[90]=(Name="MOBILE_Fire",Command="StartFire | OnRelease StopFire",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[91]=(Name="MOBILE_NextWeapon",Command="NextWeapon",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[92]=(Name="MOBILE_Jump",Command="Jump",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[93]=(Name="MOBILE_ToggleFPS",Command="OnRelease stat fps",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[94]=(Name="NumPadZero",Command="MOBILE_ResetPrimitiveTracking",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[95]=(Name="NumPadOne",Command="MOBILE_IncrementTrackedPrimitive -1",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[96]=(Name="NumPadThree",Command="MOBILE_IncrementTrackedPrimitive 1",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[97]=(Name="WiiU_PointerX",Command="Axis aWiiUPointerX Speed=1.0",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[98]=(Name="WiiU_PointerY",Command="Axis aWiiUPointerY Speed=1.0",Control=false,Shift=false,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[99]=(Name="R",Command="STARTMOVIECAPTURE",Control=false,Shift=false,Alt=true,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) + Bindings[100]=(Name="R",Command="STOPMOVIECAPTURE",Control=false,Shift=true,Alt=false,bIgnoreCtrl=false,bIgnoreShift=false,bIgnoreAlt=false,LeftShoulder=false,LeftTrigger=false,RightShoulder=false,RightTrigger=false,LeftThumbStick=false,RightThumbStick=false,bIgnorePadModifier=false) +} \ No newline at end of file diff --git a/exported/Engine/Classes/PlayerManagerInteraction.uc b/exported/Engine/Classes/PlayerManagerInteraction.uc new file mode 100755 index 00000000..349c3690 --- /dev/null +++ b/exported/Engine/Classes/PlayerManagerInteraction.uc @@ -0,0 +1,5 @@ +class PlayerManagerInteraction extends Interaction within GameViewportClient + transient + native(UserInterface) + config(Engine) + hidecategories(Object,UIRoot); diff --git a/exported/Engine/Classes/PlayerReplicationInfo.uc b/exported/Engine/Classes/PlayerReplicationInfo.uc new file mode 100755 index 00000000..46449da7 --- /dev/null +++ b/exported/Engine/Classes/PlayerReplicationInfo.uc @@ -0,0 +1,627 @@ +class PlayerReplicationInfo extends ReplicationInfo + native(ReplicationInfo) + nativereplication + notplaceable + hidecategories(Navigation,Movement,Collision); + +const REMOTE_USER_SIZE = 10; + +enum EAudioDeviceCategory +{ + ADC_Communications, // 0 + ADC_Voice, // 1 + ADC_Multimedia, // 2 + ADC_MAX // 3 +}; + +enum EAudioDeviceType +{ + ADT_Capture, // 0 + ADT_Render, // 1 + ADT_MAX // 2 +}; + +enum EAudioDeviceSharing +{ + ADS_Exclusive, // 0 + ADS_Private, // 1 + ADS_Shared, // 2 + ADS_MAX // 3 +}; + +struct native AutomatedTestingDatum +{ + var int NumberOfMatchesPlayed; + var int NumMapListCyclesDone; + + structdefaultproperties + { + NumberOfMatchesPlayed=0 + NumMapListCyclesDone=0 + } +}; + +struct native PRIAudioDeviceInfo +{ + var bool Valid; + var PlayerReplicationInfo.EAudioDeviceCategory DeviceCategory; + var PlayerReplicationInfo.EAudioDeviceType DeviceType; + var init string Id; + var PlayerReplicationInfo.EAudioDeviceSharing Sharing; + + structdefaultproperties + { + Valid=false + DeviceCategory=EAudioDeviceCategory.ADC_Communications + DeviceType=EAudioDeviceType.ADT_Capture + Id="" + Sharing=EAudioDeviceSharing.ADS_Exclusive + } +}; + +var repnotify float Score; +var int Deaths; +var byte Ping; +var transient AudioDevice.ETTSSpeaker TTSSpeaker; +var repnotify byte RemoteUserDataUpdated; +var int NumLives; +var repnotify string PlayerName; +var string OldName; +var int PlayerID; +var repnotify editinline TeamInfo Team; +var bool bAdmin; +var bool bIsSpectator; +var bool bOnlySpectator; +var bool bWaitingPlayer; +var bool bReadyToPlay; +var bool bOutOfLives; +var bool bBot; +var bool bHasBeenWelcomed; +var repnotify bool bIsInactive; +var bool bFromPreviousLevel; +var transient bool bIsTargeted; +var bool RemoteUserIsGuest; +var int StartTime; +var const localized string StringSpectating; +var const localized string StringUnknown; +var int Kills; +var Class GameMessageClass; +var float ExactPing; +var string SavedNetworkAddress; +var repnotify UniqueNetId UniqueId; +var repnotify UniqueNetId ConsoleUniqueId; +var const name SessionName; +var AutomatedTestingDatum AutomatedTestingData; +var int StatConnectionCounts; +var int StatPingTotals; +var int StatPingMin; +var int StatPingMax; +var int StatPKLTotal; +var int StatPKLMin; +var int StatPKLMax; +var int StatMaxInBPS; +var int StatAvgInBPS; +var int StatMaxOutBPS; +var int StatAvgOutBPS; +var transient Texture2D Avatar; +var PRIAudioDeviceInfo RemoteUserAudioDevices[10]; +var init string RemoteUserId; + +replication +{ + // Pos:0x000 + if(bNetDirty) + ConsoleUniqueId, Deaths, + PlayerName, RemoteUserAudioDevices, + RemoteUserDataUpdated, RemoteUserId, + RemoteUserIsGuest, Score, + StartTime, Team, + UniqueId, bAdmin, + bFromPreviousLevel, bIsSpectator, + bOnlySpectator, bOutOfLives, + bReadyToPlay, bWaitingPlayer; + + // Pos:0x00A + if(bNetDirty && !bNetOwner) + Ping; + + // Pos:0x025 + if(bNetInitial) + PlayerID, bBot, + bIsInactive; +} + +// Export UPlayerReplicationInfo::execIsBot(FFrame&, void* const) +native function bool IsBot(); + +simulated event PostBeginPlay() +{ + // End:0x59 + if(WorldInfo.GRI != none) + { + WorldInfo.GRI.AddPRI(self); + } + // End:0x6F + if(int(Role) < int(ROLE_Authority)) + { + return; + } + // End:0x93 + if(AIController(Owner) != none) + { + bBot = true; + } + StartTime = WorldInfo.GRI.ElapsedTime; + //return; +} + +// Export UPlayerReplicationInfo::execClientFillRemoteUserData(FFrame&, void* const) +reliable client native simulated event ClientFillRemoteUserData(); + +reliable server function ServerFinalizeRemoteUserData(bool bGuest, string Id) +{ + RemoteUserIsGuest = bGuest; + RemoteUserId = Id; + RemoteUserDataUpdated++; + RemoteUserDataReplicated(); + //return; +} + +reliable server function ServerUpdateRemoteUserData(PRIAudioDeviceInfo Device, int Index) +{ + RemoteUserAudioDevices[Index] = Device; + //return; +} + +simulated event UpdateRemoteUserData() +{ + local int Idx; + + Idx = 0; + J0x0B: + + // End:0x4F [Loop If] + if(Idx < 10) + { + ServerUpdateRemoteUserData(RemoteUserAudioDevices[Idx], Idx); + ++Idx; + // [Loop Continue] + goto J0x0B; + } + ServerFinalizeRemoteUserData(RemoteUserIsGuest, RemoteUserId); + //return; +} + +simulated function ClientInitialize(Controller C) +{ + local Actor A; + local PlayerController PlayerOwner; + + SetOwner(C); + ClientFillRemoteUserData(); + PlayerOwner = PlayerController(C); + // End:0x92 + if(PlayerOwner != none) + { + // End:0x92 + if(Team != default.Team) + { + // End:0x91 + foreach AllActors(Class'Engine.Actor', A) + { + A.NotifyLocalPlayerTeamReceived(); + } + } + } + //return; +} + +function SetPlayerTeam(TeamInfo NewTeam) +{ + bForceNetUpdate = Team != NewTeam; + Team = NewTeam; + //return; +} + +// Export UPlayerReplicationInfo::execRemoteUserDataReplicated(FFrame&, void* const) +native function RemoteUserDataReplicated(); + +simulated event ReplicatedEvent(name VarName) +{ + local Pawn P; + local PlayerController PC; + local int WelcomeMessageNum; + local Actor A; + local UniqueNetId ZeroId; + + // End:0xFD + if(VarName == 'Team') + { + // End:0x77 + foreach DynamicActors(Class'Engine.Pawn', P) + { + // End:0x76 + if(P.PlayerReplicationInfo == self) + { + P.NotifyTeamChanged(); + // End:0x77 + break; + } + } + // End:0xF9 + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + // End:0xF8 + if(PC.PlayerReplicationInfo == self) + { + // End:0xF4 + foreach AllActors(Class'Engine.Actor', A) + { + A.NotifyLocalPlayerTeamReceived(); + } + // End:0xF9 + break; + } + } + } + else + { + // End:0x283 + if(VarName == 'PlayerName') + { + // End:0x123 + if(IsInvalidName()) + { + return; + } + // End:0x16B + if(WorldInfo.TimeSeconds < float(2)) + { + bHasBeenWelcomed = true; + OldName = PlayerName; + return; + } + // End:0x1D7 + if(bHasBeenWelcomed) + { + // End:0x1D4 + if(ShouldBroadCastWelcomeMessage()) + { + // End:0x1D3 + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + PC.ReceiveLocalizedMessage(GameMessageClass, 2, self); + } + } + } + else + { + // End:0x1F3 + if(bOnlySpectator) + { + WelcomeMessageNum = 16; + } + else + { + WelcomeMessageNum = 1; + } + bHasBeenWelcomed = true; + // End:0x26D + if(ShouldBroadCastWelcomeMessage()) + { + // End:0x26C + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + PC.ReceiveLocalizedMessage(GameMessageClass, WelcomeMessageNum, self); + } + } + } + OldName = PlayerName; + } + else + { + // End:0x2C5 + if(VarName == 'UniqueId') + { + // End:0x2C2 + if(UniqueId != ZeroId) + { + RegisterPlayerWithSession(); + } + } + else + { + // End:0x349 + if(VarName == 'bIsInactive') + { + WorldInfo.GRI.RemovePRI(self); + WorldInfo.GRI.AddPRI(self); + } + else + { + // End:0x36A + if(VarName == 'RemoteUserDataUpdated') + { + RemoteUserDataReplicated(); + } + } + } + } + } + //return; +} + +// Export UPlayerReplicationInfo::execUpdatePing(FFrame&, void* const) +native final function UpdatePing(float TimeStamp); + +simulated function bool ShouldBroadCastWelcomeMessage(optional bool bExiting) +{ + return !bIsInactive && int(WorldInfo.NetMode) != int(NM_Standalone); + //return ReturnValue; +} + +simulated event Destroyed() +{ + local PlayerController PC; + local UniqueNetId ZeroId; + + // End:0x59 + if(WorldInfo.GRI != none) + { + WorldInfo.GRI.RemovePRI(self); + } + // End:0xB5 + if(ShouldBroadCastWelcomeMessage(true)) + { + // End:0xB4 + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + PC.ReceiveLocalizedMessage(GameMessageClass, 4, self); + } + } + // End:0xDD + if(ConsoleUniqueId != ZeroId) + { + UnregisterPlayerFromSession(); + } + super(Actor).Destroyed(); + //return; +} + +function Reset() +{ + super(Actor).Reset(); + Score = 0.0000000; + Kills = 0; + Deaths = 0; + bReadyToPlay = false; + NumLives = 0; + bOutOfLives = false; + bForceNetUpdate = true; + //return; +} + +simulated function string GetHumanReadableName() +{ + return PlayerName; + //return ReturnValue; +} + +simulated function DisplayDebug(HUD HUD, out float YL, out float YPos) +{ + local float XS, YS; + + // End:0x4D + if(Team == none) + { + HUD.Canvas.SetDrawColor(255, 255, 0); + } + else + { + // End:0xAF + if(Team.TeamIndex == 0) + { + HUD.Canvas.SetDrawColor(255, 0, 0); + } + else + { + HUD.Canvas.SetDrawColor(64, 64, 255); + } + } + HUD.Canvas.SetPos(4.0000000, YPos); + HUD.Canvas.Font = Class'Engine.Engine'.static.GetSmallFont(); + HUD.Canvas.StrLen(PlayerName, XS, YS); + HUD.Canvas.DrawText(PlayerName); + HUD.Canvas.SetPos(4.0000000 + XS, YPos); + HUD.Canvas.Font = Class'Engine.Engine'.static.GetTinyFont(); + HUD.Canvas.SetDrawColor(255, 255, 0); + YPos += YS; + HUD.Canvas.SetPos(4.0000000, YPos); + // End:0x52E + if((PlayerController(Owner) != none) && PlayerController(HUD.Owner).ViewTarget != PlayerController(HUD.Owner).Pawn) + { + HUD.Canvas.SetDrawColor(128, 128, 255); + HUD.Canvas.DrawText(((((((((" bIsSpec:" @ string(bIsSpectator)) @ "OnlySpec:") $ string(bOnlySpectator)) @ "Waiting:") $ string(bWaitingPlayer)) @ "Ready:") $ string(bReadyToPlay)) @ "OutOfLives:") $ string(bOutOfLives)); + YPos += YL; + HUD.Canvas.SetPos(4.0000000, YPos); + } + //return; +} + +event SetPlayerName(string S) +{ + PlayerName = S; + // End:0x7A + if((int(WorldInfo.NetMode) == int(NM_Standalone)) || int(WorldInfo.NetMode) == int(NM_ListenServer)) + { + ReplicatedEvent('PlayerName'); + } + OldName = PlayerName; + bForceNetUpdate = true; + //return; +} + +function SetWaitingPlayer(bool B) +{ + bIsSpectator = B; + bWaitingPlayer = B; + bForceNetUpdate = true; + //return; +} + +function PlayerReplicationInfo Duplicate() +{ + local PlayerReplicationInfo NewPRI; + + NewPRI = Spawn(Class); + CopyProperties(NewPRI); + return NewPRI; + //return ReturnValue; +} + +function OverrideWith(PlayerReplicationInfo PRI) +{ + bIsSpectator = PRI.bIsSpectator; + bOnlySpectator = PRI.bOnlySpectator; + bWaitingPlayer = PRI.bWaitingPlayer; + bReadyToPlay = PRI.bReadyToPlay; + bOutOfLives = PRI.bOutOfLives || bOutOfLives; + Team = PRI.Team; + //return; +} + +function CopyProperties(PlayerReplicationInfo PRI) +{ + PRI.Score = Score; + PRI.Deaths = Deaths; + PRI.Ping = Ping; + PRI.NumLives = NumLives; + PRI.PlayerName = PlayerName; + PRI.PlayerID = PlayerID; + PRI.StartTime = StartTime; + PRI.Kills = Kills; + PRI.bOutOfLives = bOutOfLives; + PRI.SavedNetworkAddress = SavedNetworkAddress; + PRI.Team = Team; + PRI.UniqueId = UniqueId; + PRI.AutomatedTestingData = AutomatedTestingData; + //return; +} + +function IncrementDeaths(optional int Amt = 1) +{ + Deaths += Amt; + //return; +} + +function SeamlessTravelTo(PlayerReplicationInfo NewPRI) +{ + CopyProperties(NewPRI); + NewPRI.bOnlySpectator = bOnlySpectator; + //return; +} + +simulated function SetUniqueId(UniqueNetId PlayerUniqueId) +{ + UniqueId = PlayerUniqueId; + //return; +} + +// Export UPlayerReplicationInfo::execGetTeamNum(FFrame&, void* const) +native simulated function byte GetTeamNum(); + +simulated function bool IsInvalidName() +{ + local LocalPlayer LocPlayer; + local PlayerController PC; + local string ProfileName; + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x211 + if(OnlineSub != none) + { + PC = PlayerController(Owner); + // End:0x211 + if(PC != none) + { + LocPlayer = LocalPlayer(PC.Player); + // End:0x211 + if(((LocPlayer != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + // End:0x211 + if(int(OnlineSub.PlayerInterface.GetLoginStatus(byte(LocPlayer.ControllerId))) == int(2)) + { + ProfileName = OnlineSub.PlayerInterface.GetPlayerNickname(byte(LocPlayer.ControllerId)); + // End:0x211 + if(ProfileName != PlayerName) + { + PC.SetName(ProfileName); + return true; + } + } + } + } + } + return false; + //return ReturnValue; +} + +simulated function RegisterPlayerWithSession() +{ + local OnlineSubsystem Online; + local OnlineRecentPlayersList PlayersList; + local UniqueNetId ZeroId; + + Online = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x1B7 + if((((ConsoleUniqueId != ZeroId && Online != none) && NotEqual_InterfaceInterface(Online.GameInterface, OnlineGameInterface(none))) && SessionName != 'None') && Online.GameInterface.GetGameSettings(SessionName) != none) + { + Online.GameInterface.RegisterPlayer(SessionName, UniqueId, false); + // End:0x1B7 + if(!bNetOwner) + { + PlayersList = OnlineRecentPlayersList(Online.GetNamedInterface('RecentPlayersList')); + // End:0x1B7 + if(PlayersList != none) + { + PlayersList.AddPlayerToRecentPlayers(ConsoleUniqueId); + } + } + } + //return; +} + +simulated event UnregisterPlayerFromSession() +{ + local OnlineSubsystem OnlineSub; + local UniqueNetId ZeroId; + + // End:0x1D5 + if((ConsoleUniqueId != ZeroId && int(WorldInfo.NetMode) == int(NM_Client)) && SessionName != 'None') + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x1D5 + if((((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) && OnlineSub.GameInterface.GetGameSettings(SessionName) != none) && !WorldInfo.PeerHostMigration.bHostMigrationEnabled && int(WorldInfo.PeerHostMigration.HostMigrationProgress) != int(0)) + { + OnlineSub.GameInterface.UnregisterPlayer(SessionName, ConsoleUniqueId); + } + } + //return; +} + +simulated function bool IsPrimaryPlayer() +{ + return true; + //return ReturnValue; +} + +defaultproperties +{ + StringSpectating="Spectating" + StringUnknown="Unknown" + GameMessageClass=Class'Engine.GameMessage' + SessionName="Game" + TickGroup=ETickingGroup.TG_DuringAsyncWork + NetUpdateFrequency=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/PlayerStart.uc b/exported/Engine/Classes/PlayerStart.uc new file mode 100755 index 00000000..f475a2b3 --- /dev/null +++ b/exported/Engine/Classes/PlayerStart.uc @@ -0,0 +1,124 @@ +class PlayerStart extends NavigationPoint + native + placeable + hidecategories(Navigation,Lighting,LightColor,Force,Collision) + classgroup(Common); + +var() bool bEnabled; +var() bool bPrimaryStart; +var bool bBestStart; +var() int TeamIndex; +var int Score; +var int SelectionIndex; + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x46 + if(Action.InputLinks[0].bHasImpulse) + { + bEnabled = true; + } + else + { + // End:0x8C + if(Action.InputLinks[1].bHasImpulse) + { + bEnabled = false; + } + else + { + // End:0xDB + if(Action.InputLinks[2].bHasImpulse) + { + bEnabled = !bEnabled; + } + } + } + //return; +} + +simulated event PostRenderFor(PlayerController PC, Canvas Canvas, Vector CameraPosition, Vector CameraDir) +{ + local float NameXL, TextYL, YL, XL, textscale; + + local Vector ScreenLoc, ViewLoc; + local Rotator ViewRot; + local string ScreenName; + local FontRenderInfo FontInfo; + + PC.GetPlayerViewPoint(ViewLoc, ViewRot); + // End:0x5E + if((Vector(ViewRot) Dot (Location - ViewLoc)) < 0.5000000) + { + return; + } + ScreenLoc = Canvas.Project(Location); + // End:0x15E + if((((ScreenLoc.X < float(0)) || ScreenLoc.X >= Canvas.ClipX) || ScreenLoc.Y < float(0)) || ScreenLoc.Y >= Canvas.ClipY) + { + return; + } + ScreenName = (("(" $ string(SelectionIndex)) $ ")") @ string(Score); + Canvas.StrLen(ScreenName, NameXL, TextYL); + XL = FMax(XL, NameXL); + YL += TextYL; + textscale = 1.0000000; + // End:0x261 + if(bBestStart) + { + Canvas.DrawColor = Class'Engine.HUD'.default.GreenColor; + textscale = 4.0000000; + } + else + { + // End:0x2EA + if(float(Score) == 10000000.0000000) + { + Canvas.DrawColor = Class'Engine.HUD'.default.WhiteColor; + Canvas.DrawColor.B = 0; + } + else + { + // End:0x3AD + if(float(Score) == 0.0000000) + { + Canvas.DrawColor.R = 200; + Canvas.DrawColor.G = 50; + Canvas.DrawColor.B = 255; + textscale = 0.5000000; + } + else + { + Canvas.DrawColor = Class'Engine.HUD'.default.RedColor; + } + } + } + Canvas.SetPos(ScreenLoc.X - (0.5000000 * NameXL), ScreenLoc.Y - (1.7000000 * YL)); + FontInfo.bClipText = true; + Canvas.DrawText(ScreenName, true, textscale, textscale, FontInfo); + //return; +} + +defaultproperties +{ + bEnabled=true + bPrimaryStart=true + // Reference: CylinderComponent'Engine.Default__PlayerStart.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + CollisionHeight=75.0000000 + CollisionRadius=40.0000000 + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + bCollideWhenPlacing=false + bEdShouldSnap=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/PointLight.uc b/exported/Engine/Classes/PointLight.uc new file mode 100755 index 00000000..67733647 --- /dev/null +++ b/exported/Engine/Classes/PointLight.uc @@ -0,0 +1,23 @@ +class PointLight extends Light + native(Light) + placeable + hidecategories(Navigation) + classgroup(Lights,PointLights); + +defaultproperties +{ + // Reference: PointLightComponent'Engine.Default__PointLight.PointLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PointLightComponent0' + begin object name="PointLightComponent0" class=Engine.PointLightComponent + CastDynamicShadows=false + UseDirectLightMap=true + LightingChannels=(Dynamic=false) + LightAffectsClassification=ELightAffectsClassification.LAC_STATIC_AFFECTING + end object + LightComponent=PointLightComponent0 + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=PointLightComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/PointLightComponent.uc b/exported/Engine/Classes/PointLightComponent.uc new file mode 100755 index 00000000..078356cc --- /dev/null +++ b/exported/Engine/Classes/PointLightComponent.uc @@ -0,0 +1,41 @@ +class PointLightComponent extends LightComponent + native(Light) + editinlinenew + hidecategories(Object); + +var float ShadowRadiusMultiplier; +var() interp float Radius; +var() interp float FalloffExponent; +var() float ShadowFalloffExponent; +var float MinShadowFalloffRadius; +var const Matrix CachedParentToWorld; +var() const Vector Translation; +var const Plane ShadowPlane; +var const export editinline DrawLightRadiusComponent PreviewLightRadius; +var(Lightmass) LightmassPointLightSettings LightmassSettings; +var const export editinline DrawLightRadiusComponent PreviewLightSourceRadius; + +// Export UPointLightComponent::execSetTranslation(FFrame&, void* const) +native final function SetTranslation(Vector NewTranslation); + +function OnUpdatePropertyLightColor() +{ + UpdateColorAndBrightness(); + //return; +} + +function OnUpdatePropertyBrightness() +{ + UpdateColorAndBrightness(); + //return; +} + +defaultproperties +{ + ShadowRadiusMultiplier=1.1000000 + Radius=1024.0000000 + FalloffExponent=2.0000000 + ShadowFalloffExponent=2.0000000 + ShadowPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=1.0000000) + LightmassSettings=(LightSourceRadius=100.0000000,IndirectLightingScale=1.0000000,IndirectLightingSaturation=1.0000000,ShadowExponent=2.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/PointLightMovable.uc b/exported/Engine/Classes/PointLightMovable.uc new file mode 100755 index 00000000..d4c47091 --- /dev/null +++ b/exported/Engine/Classes/PointLightMovable.uc @@ -0,0 +1,28 @@ +class PointLightMovable extends PointLight + native(Light) + placeable + hidecategories(Navigation) + classgroup(Lights,PointLights); + +defaultproperties +{ + // Reference: PointLightComponent'Engine.Default__PointLightMovable.PointLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PointLightComponent0' + // Archetype: PointLightComponent'Engine.Default__PointLight.PointLightComponent0' + begin object name="PointLightComponent0" + CastDynamicShadows=true + UseDirectLightMap=false + LightingChannels=(Dynamic=true) + LightAffectsClassification=ELightAffectsClassification.LAC_DYNAMIC_AND_STATIC_AFFECTING + end object + LightComponent=PointLightComponent0 + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=PointLightComponent0 + TickGroup=ETickingGroup.TG_DuringAsyncWork + bStatic=false + bHardAttach=true + bMovable=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/PointLightToggleable.uc b/exported/Engine/Classes/PointLightToggleable.uc new file mode 100755 index 00000000..4badbb4c --- /dev/null +++ b/exported/Engine/Classes/PointLightToggleable.uc @@ -0,0 +1,55 @@ +class PointLightToggleable extends PointLight + native(Light) + placeable + hidecategories(Navigation) + classgroup(Lights,PointLights); + +struct CheckpointRecord +{ + var bool bEnabled; + + structdefaultproperties + { + bEnabled=false + } +}; + +function bool ShouldSaveForCheckpoint() +{ + return int(RemoteRole) != int(ROLE_None); + //return ReturnValue; +} + +function CreateCheckpointRecord(out CheckpointRecord Record) +{ + Record.bEnabled = bEnabled; + //return; +} + +function ApplyCheckpointRecord(const out CheckpointRecord Record) +{ + bEnabled = Record.bEnabled; + LightComponent.SetEnabled(bEnabled); + ForceNetRelevant(); + //return; +} + +defaultproperties +{ + // Reference: PointLightComponent'Engine.Default__PointLightToggleable.PointLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PointLightComponent0' + // Archetype: PointLightComponent'Engine.Default__PointLight.PointLightComponent0' + begin object name="PointLightComponent0" + LightmassSettings=(IndirectLightingScale=0.0000000) + UseDirectLightMap=false + end object + LightComponent=PointLightComponent0 + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=PointLightComponent0 + TickGroup=ETickingGroup.TG_DuringAsyncWork + bStatic=false + bHardAttach=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/Portal.uc b/exported/Engine/Classes/Portal.uc new file mode 100755 index 00000000..44796fd8 --- /dev/null +++ b/exported/Engine/Classes/Portal.uc @@ -0,0 +1,39 @@ +class Portal extends TriggerVolume + native + placeable + hidecategories(Navigation,Object,Movement,Display); + +var() Actor Destination; +var(NavigationEdge) Rotator SourceEdgeRotation; +var(NavigationEdge) Vector SourceEdgeTranslation; +var(NavigationEdge) float fEdgeWidth; +var(NavigationEdge) bool bForceParallelEdges; + +// Export UPortal::execIsValidPortal(FFrame&, void* const) +native final function bool IsValidPortal(); + +// Export UPortal::execGetSourceEdge(FFrame&, void* const) +native final function GetSourceEdge(out Vector EdgeStart, out Vector EdgeEnd); + +// Export UPortal::execGetDestinationEdge(FFrame&, void* const) +native final function GetDestinationEdge(out Vector EdgeStart, out Vector EdgeEnd); + +defaultproperties +{ + fEdgeWidth=50.0000000 + bForceParallelEdges=true + // Reference: BrushComponent'Engine.Default__Portal.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__TriggerVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + Components[1]=none + Components[2]=none + bProjTarget=false + CollisionComponent=BrushComponent0 + SupportedEvents=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/PortalMarker.uc b/exported/Engine/Classes/PortalMarker.uc new file mode 100755 index 00000000..9c8f7d48 --- /dev/null +++ b/exported/Engine/Classes/PortalMarker.uc @@ -0,0 +1,29 @@ +class PortalMarker extends NavigationPoint + native + notplaceable + hidecategories(Navigation,Lighting,LightColor,Force); + +var PortalTeleporter MyPortal; + +// Export UPortalMarker::execCanTeleport(FFrame&, void* const) +native function bool CanTeleport(Actor A); + +defaultproperties +{ + // Reference: CylinderComponent'Engine.Default__PortalMarker.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + bCollideWhenPlacing=false + bHiddenEd=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/PortalRenderingComponent.uc b/exported/Engine/Classes/PortalRenderingComponent.uc new file mode 100755 index 00000000..7ab7a298 --- /dev/null +++ b/exported/Engine/Classes/PortalRenderingComponent.uc @@ -0,0 +1,9 @@ +class PortalRenderingComponent extends PrimitiveComponent + native + editinlinenew + hidecategories(Object); + +defaultproperties +{ + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/PortalTeleporter.uc b/exported/Engine/Classes/PortalTeleporter.uc new file mode 100755 index 00000000..d910337f --- /dev/null +++ b/exported/Engine/Classes/PortalTeleporter.uc @@ -0,0 +1,63 @@ +class PortalTeleporter extends SceneCapturePortalActor + abstract + native + notplaceable + hidecategories(Navigation); + +var() PortalTeleporter SisterPortal; +var() int TextureResolutionX; +var() int TextureResolutionY; +var PortalMarker MyMarker; +var() bool bMovablePortal; +var bool bAlwaysTeleportNonPawns; +var bool bCanTeleportVehicles; + +// Export UPortalTeleporter::execTransformActor(FFrame&, void* const) +native final function bool TransformActor(Actor A); + +// Export UPortalTeleporter::execTransformVectorDir(FFrame&, void* const) +native final function Vector TransformVectorDir(Vector V); + +// Export UPortalTeleporter::execTransformHitLocation(FFrame&, void* const) +native final function Vector TransformHitLocation(Vector HitLocation); + +// Export UPortalTeleporter::execCreatePortalTexture(FFrame&, void* const) +native final function TextureRenderTarget2D CreatePortalTexture(); + +simulated function bool StopsProjectile(Projectile P) +{ + return !TransformActor(P); + //return ReturnValue; +} + +defaultproperties +{ + TextureResolutionX=256 + TextureResolutionY=256 + bAlwaysTeleportNonPawns=true + // Reference: StaticMeshComponent'Engine.Default__PortalTeleporter.StaticMeshComponent2' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent2' + // Archetype: StaticMeshComponent'Engine.Default__SceneCapturePortalActor.StaticMeshComponent2' + begin object name="StaticMeshComponent2" + ReplacementPrimitive=none + HiddenGame=false + CollideActors=true + end object + StaticMesh=StaticMeshComponent2 + // Reference: SceneCapturePortalComponent'Engine.Default__PortalTeleporter.SceneCapturePortalComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SceneCapturePortalComponent0' + // Archetype: SceneCapturePortalComponent'Engine.Default__SceneCapturePortalActor.SceneCapturePortalComponent0' + begin object name="SceneCapturePortalComponent0" + end object + SceneCapture=SceneCapturePortalComponent0 + Components[0]=SceneCapturePortalComponent0 + Components[1]=none + Components[2]=StaticMeshComponent2 + bWorldGeometry=true + bMovable=false + bCollideActors=true + bBlockActors=true + CollisionComponent=StaticMeshComponent2 +} \ No newline at end of file diff --git a/exported/Engine/Classes/PortalVolume.uc b/exported/Engine/Classes/PortalVolume.uc new file mode 100755 index 00000000..0a9940eb --- /dev/null +++ b/exported/Engine/Classes/PortalVolume.uc @@ -0,0 +1,24 @@ +class PortalVolume extends Volume + native + placeable + hidecategories(Navigation,Object,Movement,Display,Advanced,Attachment,Collision,Volume); + +var array Portals; + +defaultproperties +{ + // Reference: BrushComponent'Engine.Default__PortalVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + CollideActors=false + BlockNonZeroExtent=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bCollideActors=false + CollisionComponent=BrushComponent0 + SupportedEvents[0]=Class'Engine.SeqEvent_Touch' +} \ No newline at end of file diff --git a/exported/Engine/Classes/PostProcessChain.uc b/exported/Engine/Classes/PostProcessChain.uc new file mode 100755 index 00000000..e9cd1ade --- /dev/null +++ b/exported/Engine/Classes/PostProcessChain.uc @@ -0,0 +1,27 @@ +class PostProcessChain extends Object + native; + +var array Effects; + +final function PostProcessEffect FindPostProcessEffect(name EffectName) +{ + local int Idx; + + Idx = 0; + J0x0B: + + // End:0x96 [Loop If] + if(Idx < Effects.Length) + { + // End:0x88 + if((Effects[Idx] != none) && Effects[Idx].EffectName == EffectName) + { + return Effects[Idx]; + } + Idx++; + // [Loop Continue] + goto J0x0B; + } + return none; + //return ReturnValue; +} diff --git a/exported/Engine/Classes/PostProcessEffect.uc b/exported/Engine/Classes/PostProcessEffect.uc new file mode 100755 index 00000000..e81ee6e4 --- /dev/null +++ b/exported/Engine/Classes/PostProcessEffect.uc @@ -0,0 +1,24 @@ +class PostProcessEffect extends Object + native + hidecategories(Object); + +var() bool bShowInEditor; +var() bool bShowInGame; +var() bool bUseWorldSettings; +var() bool m_D3D11Only; +var bool bAffectsLightingOnly; +var() name EffectName; +var int NodePosY; +var int NodePosX; +var int DrawWidth; +var int DrawHeight; +var int OutDrawY; +var int InDrawY; +var() Scene.ESceneDepthPriorityGroup SceneDPG; + +defaultproperties +{ + bShowInEditor=true + bShowInGame=true + SceneDPG=ESceneDepthPriorityGroup.SDPG_PostProcess +} \ No newline at end of file diff --git a/exported/Engine/Classes/PostProcessVolume.uc b/exported/Engine/Classes/PostProcessVolume.uc new file mode 100755 index 00000000..a6191510 --- /dev/null +++ b/exported/Engine/Classes/PostProcessVolume.uc @@ -0,0 +1,336 @@ +class PostProcessVolume extends Volume + native + placeable + hidecategories(Navigation,Object,Movement,Display,Advanced,Collision,Volume,Brush,Attachment); + +struct native LUTBlender +{ + var array LUTTextures; + var array LUTWeights; + var native const transient bool bHasChanged; + + structdefaultproperties + { + LUTTextures=none + LUTWeights=none + } +}; + +struct native MobileColorGradingParams +{ + var() float TransitionTime; + var() float Blend; + var() float Desaturation; + var() LinearColor HighLights; + var() LinearColor MidTones; + var() LinearColor Shadows; + + structdefaultproperties + { + TransitionTime=1.0000000 + Blend=0.0000000 + Desaturation=0.0000000 + HighLights=(R=0.7000000,G=0.7000000,B=0.7000000,A=1.0000000) + MidTones=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + Shadows=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + } +}; + +struct native MobilePostProcessSettings +{ + var bool bOverride_Mobile_BlurAmount; + var bool bOverride_Mobile_TransitionTime; + var bool bOverride_Mobile_Bloom_Scale; + var bool bOverride_Mobile_Bloom_Threshold; + var bool bOverride_Mobile_Bloom_Tint; + var bool bOverride_Mobile_DOF_Distance; + var bool bOverride_Mobile_DOF_MinRange; + var bool bOverride_Mobile_DOF_MaxRange; + var bool bOverride_Mobile_DOF_NearBlurFactor; + var bool bOverride_Mobile_DOF_FarBlurFactor; + var() interp float Mobile_BlurAmount; + var() float Mobile_TransitionTime; + var(Bloom) interp float Mobile_Bloom_Scale; + var(Bloom) interp float Mobile_Bloom_Threshold; + var(Bloom) interp LinearColor Mobile_Bloom_Tint; + var(DOF) interp float Mobile_DOF_Distance; + var(DOF) interp float Mobile_DOF_MinRange; + var(DOF) interp float Mobile_DOF_MaxRange; + var(DOF) interp float Mobile_DOF_NearBlurFactor; + var(DOF) interp float Mobile_DOF_FarBlurFactor; + + structdefaultproperties + { + bOverride_Mobile_BlurAmount=false + bOverride_Mobile_TransitionTime=false + bOverride_Mobile_Bloom_Scale=false + bOverride_Mobile_Bloom_Threshold=false + bOverride_Mobile_Bloom_Tint=false + bOverride_Mobile_DOF_Distance=false + bOverride_Mobile_DOF_MinRange=false + bOverride_Mobile_DOF_MaxRange=false + bOverride_Mobile_DOF_NearBlurFactor=false + bOverride_Mobile_DOF_FarBlurFactor=false + Mobile_BlurAmount=16.0000000 + Mobile_TransitionTime=1.0000000 + Mobile_Bloom_Scale=6.0000000 + Mobile_Bloom_Threshold=0.5000000 + Mobile_Bloom_Tint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000) + Mobile_DOF_Distance=1500.0000000 + Mobile_DOF_MinRange=600.0000000 + Mobile_DOF_MaxRange=1200.0000000 + Mobile_DOF_NearBlurFactor=1.0000000 + Mobile_DOF_FarBlurFactor=1.0000000 + } +}; + +struct native PostProcessSettings +{ + var bool bOverride_EnableBloom; + var bool bOverride_EnableDOF; + var bool bOverride_EnableMotionBlur; + var bool bOverride_EnableSceneEffect; + var bool bOverride_AllowAmbientOcclusion; + var bool bOverride_OverrideRimShaderColor; + var bool bOverride_Bloom_Scale; + var bool bOverride_Bloom_Threshold; + var bool bOverride_Bloom_Tint; + var bool bOverride_Bloom_ScreenBlendThreshold; + var bool bOverride_Bloom_InterpolationDuration; + var bool bOverride_DOF_FalloffExponent; + var bool bOverride_DOF_BlurKernelSize; + var bool bOverride_DOF_BlurBloomKernelSize; + var bool bOverride_DOF_MaxNearBlurAmount; + var bool bOverride_DOF_MinBlurAmount; + var bool bOverride_DOF_MaxFarBlurAmount; + var bool bOverride_DOF_FocusType; + var bool bOverride_DOF_FocusInnerRadius; + var bool bOverride_DOF_FocusDistance; + var bool bOverride_DOF_FocusPosition; + var bool bOverride_DOF_InterpolationDuration; + var bool bOverride_DOF_BokehTexture; + var bool bOverride_MotionBlur_MaxVelocity; + var bool bOverride_MotionBlur_Amount; + var bool bOverride_MotionBlur_FullMotionBlur; + var bool bOverride_MotionBlur_CameraRotationThreshold; + var bool bOverride_MotionBlur_CameraTranslationThreshold; + var bool bOverride_MotionBlur_InterpolationDuration; + var bool bOverride_Scene_Desaturation; + var bool bOverride_Scene_Colorize; + var bool bOverride_Scene_TonemapperScale; + var bool bOverride_Scene_ImageGrainScale; + var bool bOverride_Scene_HighLights; + var bool bOverride_Scene_MidTones; + var bool bOverride_Scene_Shadows; + var bool bOverride_Scene_InterpolationDuration; + var bool bOverride_Scene_ColorGradingLUT; + var bool bOverride_RimShader_Color; + var bool bOverride_RimShader_InterpolationDuration; + var bool bOverride_MobileColorGrading; + var(Bloom) bool bEnableBloom; + var(DepthOfField) bool bEnableDOF; + var(MotionBlur) bool bEnableMotionBlur; + var(Scene) bool bEnableSceneEffect; + var() bool bAllowAmbientOcclusion; + var(RimShader) bool bOverrideRimShaderColor; + var(Bloom) interp float Bloom_Scale; + var(Bloom) interp float Bloom_Threshold; + var(Bloom) interp Color Bloom_Tint; + var(Bloom) interp float Bloom_ScreenBlendThreshold; + var(Bloom) float Bloom_InterpolationDuration; + var(Bloom) interp float DOF_BlurBloomKernelSize; + var(DepthOfField) interp float DOF_FalloffExponent; + var(DepthOfField) interp float DOF_BlurKernelSize; + var(DepthOfField,BlurAmount) interp float DOF_MaxNearBlurAmount; + var(DepthOfField,BlurAmount) interp float DOF_MinBlurAmount; + var(DepthOfField,BlurAmount) interp float DOF_MaxFarBlurAmount; + var(DepthOfField) DOFEffect.EFocusType DOF_FocusType; + var(DepthOfField) interp float DOF_FocusInnerRadius; + var(DepthOfField) interp float DOF_FocusDistance; + var(DepthOfField) Vector DOF_FocusPosition; + var(DepthOfField) float DOF_InterpolationDuration; + var(DepthOfField) Texture2D DOF_BokehTexture; + var(MotionBlur) interp float MotionBlur_MaxVelocity; + var(MotionBlur) interp float MotionBlur_Amount; + var(MotionBlur) bool MotionBlur_FullMotionBlur; + var(MotionBlur) interp float MotionBlur_CameraRotationThreshold; + var(MotionBlur) interp float MotionBlur_CameraTranslationThreshold; + var(MotionBlur) float MotionBlur_InterpolationDuration; + var(Scene) interp float Scene_Desaturation; + var(Scene) interp Vector Scene_Colorize; + var(Scene) interp float Scene_TonemapperScale; + var(Scene) interp float Scene_ImageGrainScale; + var(Scene) interp Vector Scene_HighLights; + var(Scene) interp Vector Scene_MidTones; + var(Scene) interp Vector Scene_Shadows; + var(Scene) float Scene_InterpolationDuration; + var(RimShader) LinearColor RimShader_Color; + var(RimShader) float RimShader_InterpolationDuration; + var(Scene) Texture ColorGrading_LookupTable; + var private const transient LUTBlender ColorGradingLUT; + var(Mobile) MobileColorGradingParams MobileColorGrading; + var(Mobile) interp MobilePostProcessSettings MobilePostProcess; + var bool Death_Enable; + var float Death_DesatAlpha; + var bool Hit_Enable; + var float Hit_FadeAlpha; + var bool ColorBlind_Enable; + var int ColorBlind_Mode; + + structdefaultproperties + { + bOverride_EnableBloom=true + bOverride_EnableDOF=true + bOverride_EnableMotionBlur=true + bOverride_EnableSceneEffect=true + bOverride_AllowAmbientOcclusion=true + bOverride_OverrideRimShaderColor=true + bOverride_Bloom_Scale=true + bOverride_Bloom_Threshold=true + bOverride_Bloom_Tint=true + bOverride_Bloom_ScreenBlendThreshold=true + bOverride_Bloom_InterpolationDuration=true + bOverride_DOF_FalloffExponent=true + bOverride_DOF_BlurKernelSize=true + bOverride_DOF_BlurBloomKernelSize=true + bOverride_DOF_MaxNearBlurAmount=true + bOverride_DOF_MinBlurAmount=false + bOverride_DOF_MaxFarBlurAmount=true + bOverride_DOF_FocusType=true + bOverride_DOF_FocusInnerRadius=true + bOverride_DOF_FocusDistance=true + bOverride_DOF_FocusPosition=true + bOverride_DOF_InterpolationDuration=true + bOverride_DOF_BokehTexture=false + bOverride_MotionBlur_MaxVelocity=false + bOverride_MotionBlur_Amount=false + bOverride_MotionBlur_FullMotionBlur=false + bOverride_MotionBlur_CameraRotationThreshold=false + bOverride_MotionBlur_CameraTranslationThreshold=false + bOverride_MotionBlur_InterpolationDuration=false + bOverride_Scene_Desaturation=true + bOverride_Scene_Colorize=false + bOverride_Scene_TonemapperScale=false + bOverride_Scene_ImageGrainScale=false + bOverride_Scene_HighLights=true + bOverride_Scene_MidTones=true + bOverride_Scene_Shadows=true + bOverride_Scene_InterpolationDuration=true + bOverride_Scene_ColorGradingLUT=false + bOverride_RimShader_Color=true + bOverride_RimShader_InterpolationDuration=true + bOverride_MobileColorGrading=false + bEnableBloom=true + bEnableDOF=false + bEnableMotionBlur=true + bEnableSceneEffect=true + bAllowAmbientOcclusion=true + bOverrideRimShaderColor=false + Bloom_Scale=1.0000000 + Bloom_Threshold=1.0000000 + Bloom_Tint=(R=255,G=255,B=255,A=0) + Bloom_ScreenBlendThreshold=10.0000000 + Bloom_InterpolationDuration=1.0000000 + DOF_BlurBloomKernelSize=16.0000000 + DOF_FalloffExponent=4.0000000 + DOF_BlurKernelSize=16.0000000 + DOF_MaxNearBlurAmount=1.0000000 + DOF_MinBlurAmount=0.0000000 + DOF_MaxFarBlurAmount=1.0000000 + DOF_FocusType=EFocusType.FOCUS_Distance + DOF_FocusInnerRadius=2000.0000000 + DOF_FocusDistance=0.0000000 + DOF_FocusPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000) + DOF_InterpolationDuration=1.0000000 + DOF_BokehTexture=none + MotionBlur_MaxVelocity=1.0000000 + MotionBlur_Amount=0.5000000 + MotionBlur_FullMotionBlur=true + MotionBlur_CameraRotationThreshold=45.0000000 + MotionBlur_CameraTranslationThreshold=10000.0000000 + MotionBlur_InterpolationDuration=1.0000000 + Scene_Desaturation=0.0000000 + Scene_Colorize=(X=1.0000000,Y=1.0000000,Z=1.0000000) + Scene_TonemapperScale=1.0000000 + Scene_ImageGrainScale=0.0000000 + Scene_HighLights=(X=1.0000000,Y=1.0000000,Z=1.0000000) + Scene_MidTones=(X=1.0000000,Y=1.0000000,Z=1.0000000) + Scene_Shadows=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Scene_InterpolationDuration=1.0000000 + RimShader_Color=(R=0.4704400,G=0.5859730,B=0.8277260,A=1.0000000) + RimShader_InterpolationDuration=1.0000000 + ColorGrading_LookupTable=none + ColorGradingLUT=(LUTTextures=none,LUTWeights=none) + MobileColorGrading=(TransitionTime=1.0000000,Blend=0.0000000,Desaturation=0.0000000,HighLights=(R=0.7000000,G=0.7000000,B=0.7000000,A=1.0000000),MidTones=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000),Shadows=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000)) + MobilePostProcess=(bOverride_Mobile_BlurAmount=false,bOverride_Mobile_TransitionTime=false,bOverride_Mobile_Bloom_Scale=false,bOverride_Mobile_Bloom_Threshold=false,bOverride_Mobile_Bloom_Tint=false,bOverride_Mobile_DOF_Distance=false,bOverride_Mobile_DOF_MinRange=false,bOverride_Mobile_DOF_MaxRange=false,bOverride_Mobile_DOF_NearBlurFactor=false,bOverride_Mobile_DOF_FarBlurFactor=false,Mobile_BlurAmount=16.0000000,Mobile_TransitionTime=1.0000000,Mobile_Bloom_Scale=6.0000000,Mobile_Bloom_Threshold=0.5000000,Mobile_Bloom_Tint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000),Mobile_DOF_Distance=1500.0000000,Mobile_DOF_MinRange=600.0000000,Mobile_DOF_MaxRange=1200.0000000,Mobile_DOF_NearBlurFactor=1.0000000,Mobile_DOF_FarBlurFactor=1.0000000) + Death_Enable=false + Death_DesatAlpha=0.0000000 + Hit_Enable=false + Hit_FadeAlpha=0.0000000 + ColorBlind_Enable=false + ColorBlind_Mode=0 + } +}; + +var() float Priority; +var() bool bOverrideWorldPostProcessChain; +var() bool bEnabled; +var() PostProcessSettings Settings; +var noimport const transient PostProcessVolume NextLowerPriorityVolume; + +replication +{ + // Pos:0x000 + if(bNetDirty) + bEnabled; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x46 + if(Action.InputLinks[0].bHasImpulse) + { + bEnabled = true; + } + else + { + // End:0x8C + if(Action.InputLinks[1].bHasImpulse) + { + bEnabled = false; + } + else + { + // End:0xDB + if(Action.InputLinks[2].bHasImpulse) + { + bEnabled = !bEnabled; + } + } + } + ForceNetRelevant(); + SetForcedInitialReplicatedProperty(BoolProperty'Engine.PostProcessVolume.bEnabled', bEnabled == default.bEnabled); + //return; +} + +defaultproperties +{ + bEnabled=true + Settings=(bOverride_EnableBloom=true,bOverride_EnableDOF=true,bOverride_EnableMotionBlur=true,bOverride_EnableSceneEffect=true,bOverride_AllowAmbientOcclusion=true,bOverride_OverrideRimShaderColor=true,bOverride_Bloom_Scale=true,bOverride_Bloom_Threshold=true,bOverride_Bloom_Tint=true,bOverride_Bloom_ScreenBlendThreshold=true,bOverride_Bloom_InterpolationDuration=true,bOverride_DOF_FalloffExponent=true,bOverride_DOF_BlurKernelSize=true,bOverride_DOF_BlurBloomKernelSize=true,bOverride_DOF_MaxNearBlurAmount=true,bOverride_DOF_MinBlurAmount=false,bOverride_DOF_MaxFarBlurAmount=true,bOverride_DOF_FocusType=true,bOverride_DOF_FocusInnerRadius=true,bOverride_DOF_FocusDistance=true,bOverride_DOF_FocusPosition=true,bOverride_DOF_InterpolationDuration=true,bOverride_DOF_BokehTexture=false,bOverride_MotionBlur_MaxVelocity=false,bOverride_MotionBlur_Amount=false,bOverride_MotionBlur_FullMotionBlur=false,bOverride_MotionBlur_CameraRotationThreshold=false,bOverride_MotionBlur_CameraTranslationThreshold=false,bOverride_MotionBlur_InterpolationDuration=false,bOverride_Scene_Desaturation=true,bOverride_Scene_Colorize=false,bOverride_Scene_TonemapperScale=false,bOverride_Scene_ImageGrainScale=false,bOverride_Scene_HighLights=true,bOverride_Scene_MidTones=true,bOverride_Scene_Shadows=true,bOverride_Scene_InterpolationDuration=true,bOverride_Scene_ColorGradingLUT=false,bOverride_RimShader_Color=true,bOverride_RimShader_InterpolationDuration=true,bOverride_MobileColorGrading=false,bEnableBloom=true,bEnableDOF=false,bEnableMotionBlur=true,bEnableSceneEffect=true,bAllowAmbientOcclusion=true,bOverrideRimShaderColor=false,Bloom_Scale=1.0000000,Bloom_Threshold=1.0000000,Bloom_Tint=(R=255,G=255,B=255,A=0),Bloom_ScreenBlendThreshold=10.0000000,Bloom_InterpolationDuration=1.0000000,DOF_BlurBloomKernelSize=16.0000000,DOF_FalloffExponent=4.0000000,DOF_BlurKernelSize=16.0000000,DOF_MaxNearBlurAmount=1.0000000,DOF_MinBlurAmount=0.0000000,DOF_MaxFarBlurAmount=1.0000000,DOF_FocusType=EFocusType.FOCUS_Distance,DOF_FocusInnerRadius=2000.0000000,DOF_FocusDistance=0.0000000,DOF_FocusPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000),DOF_InterpolationDuration=1.0000000,DOF_BokehTexture=none,MotionBlur_MaxVelocity=1.0000000,MotionBlur_Amount=0.5000000,MotionBlur_FullMotionBlur=true,MotionBlur_CameraRotationThreshold=45.0000000,MotionBlur_CameraTranslationThreshold=10000.0000000,MotionBlur_InterpolationDuration=1.0000000,Scene_Desaturation=0.0000000,Scene_Colorize=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_TonemapperScale=1.0000000,Scene_ImageGrainScale=0.0000000,Scene_HighLights=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_MidTones=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_Shadows=(X=0.0000000,Y=0.0000000,Z=0.0000000),Scene_InterpolationDuration=1.0000000,RimShader_Color=(R=0.4704400,G=0.5859730,B=0.8277260,A=1.0000000),RimShader_InterpolationDuration=1.0000000,ColorGrading_LookupTable=none,ColorGradingLUT=(LUTTextures=none,LUTWeights=none),MobileColorGrading=(TransitionTime=1.0000000,Blend=0.0000000,Desaturation=0.0000000,HighLights=(R=0.7000000,G=0.7000000,B=0.7000000,A=1.0000000),MidTones=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000),Shadows=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000)),MobilePostProcess=(bOverride_Mobile_BlurAmount=false,bOverride_Mobile_TransitionTime=false,bOverride_Mobile_Bloom_Scale=false,bOverride_Mobile_Bloom_Threshold=false,bOverride_Mobile_Bloom_Tint=false,bOverride_Mobile_DOF_Distance=false,bOverride_Mobile_DOF_MinRange=false,bOverride_Mobile_DOF_MaxRange=false,bOverride_Mobile_DOF_NearBlurFactor=false,bOverride_Mobile_DOF_FarBlurFactor=false,Mobile_BlurAmount=16.0000000,Mobile_TransitionTime=1.0000000,Mobile_Bloom_Scale=6.0000000,Mobile_Bloom_Threshold=0.5000000,Mobile_Bloom_Tint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000),Mobile_DOF_Distance=1500.0000000,Mobile_DOF_MinRange=600.0000000,Mobile_DOF_MaxRange=1200.0000000,Mobile_DOF_NearBlurFactor=1.0000000,Mobile_DOF_FarBlurFactor=1.0000000),Death_Enable=false,Death_DesatAlpha=0.0000000,Hit_Enable=false,Hit_FadeAlpha=0.0000000,ColorBlind_Enable=false,ColorBlind_Mode=0) + // Reference: BrushComponent'Engine.Default__PostProcessVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + CollideActors=false + BlockNonZeroExtent=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bStatic=false + bTickIsDisabled=true + bCollideActors=false + CollisionComponent=BrushComponent0 + SupportedEvents[0]=Class'Engine.SeqEvent_Touch' +} \ No newline at end of file diff --git a/exported/Engine/Classes/PotentialClimbWatcher.uc b/exported/Engine/Classes/PotentialClimbWatcher.uc new file mode 100755 index 00000000..c0add631 --- /dev/null +++ b/exported/Engine/Classes/PotentialClimbWatcher.uc @@ -0,0 +1,44 @@ +class PotentialClimbWatcher extends Info + native + notplaceable + hidecategories(Navigation,Movement,Collision); + +simulated event Tick(float DeltaTime) +{ + local Rotator PawnRot; + local LadderVolume L; + local bool bFound; + + // End:0x67 + if(((Owner == none) || Owner.bDeleteMe) || !Pawn(Owner).CanGrabLadder()) + { + Destroy(); + return; + } + PawnRot = Owner.Rotation; + PawnRot.Pitch = 0; + // End:0x181 + foreach Owner.TouchingActors(Class'Engine.LadderVolume', L) + { + // End:0x180 + if(L.Encompasses(Owner)) + { + // End:0x174 + if((Vector(PawnRot) Dot L.LookDir) > 0.9000000) + { + Pawn(Owner).ClimbLadder(L); + Destroy(); + return; + // End:0x180 + continue; + } + bFound = true; + } + } + // End:0x194 + if(!bFound) + { + Destroy(); + } + //return; +} diff --git a/exported/Engine/Classes/PrecomputedVisibilityOverrideVolume.uc b/exported/Engine/Classes/PrecomputedVisibilityOverrideVolume.uc new file mode 100755 index 00000000..5d1fd7aa --- /dev/null +++ b/exported/Engine/Classes/PrecomputedVisibilityOverrideVolume.uc @@ -0,0 +1,27 @@ +class PrecomputedVisibilityOverrideVolume extends Volume + native + placeable + hidecategories(Navigation,Object,Movement,Display,Collision,Brush,Attachment,Physics,Volume); + +var() array OverrideVisibleActors; +var() array OverrideInvisibleActors; + +defaultproperties +{ + BrushColor=(R=25,G=120,B=90,A=255) + bColored=true + // Reference: BrushComponent'Engine.Default__PrecomputedVisibilityOverrideVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + RBChannel=ERBCollisionChannel.RBCC_Nothing + CollideActors=false + BlockNonZeroExtent=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bCollideActors=false + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/PrecomputedVisibilityVolume.uc b/exported/Engine/Classes/PrecomputedVisibilityVolume.uc new file mode 100755 index 00000000..c078e0e5 --- /dev/null +++ b/exported/Engine/Classes/PrecomputedVisibilityVolume.uc @@ -0,0 +1,24 @@ +class PrecomputedVisibilityVolume extends Volume + native + placeable + hidecategories(Navigation,Object,Movement,Display,Collision,Brush,Attachment,Physics,Volume); + +defaultproperties +{ + BrushColor=(R=25,G=255,B=25,A=255) + bColored=true + // Reference: BrushComponent'Engine.Default__PrecomputedVisibilityVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + RBChannel=ERBCollisionChannel.RBCC_Nothing + CollideActors=false + BlockNonZeroExtent=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bCollideActors=false + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Prefab.uc b/exported/Engine/Classes/Prefab.uc new file mode 100755 index 00000000..0ad89459 --- /dev/null +++ b/exported/Engine/Classes/Prefab.uc @@ -0,0 +1,7 @@ +class Prefab extends Object + native(Prefab); + +var const int PrefabVersion; +var const array PrefabArchetypes; +var const array RemovedArchetypes; +var const PrefabSequence PrefabSequence; diff --git a/exported/Engine/Classes/PrefabInstance.uc b/exported/Engine/Classes/PrefabInstance.uc new file mode 100755 index 00000000..68c96d60 --- /dev/null +++ b/exported/Engine/Classes/PrefabInstance.uc @@ -0,0 +1,24 @@ +class PrefabInstance extends Actor + native(Prefab) + notplaceable + hidecategories(Navigation); + +var const Prefab TemplatePrefab; +var const int TemplateVersion; +var native const map{VOID,VOID} ArchetypeToInstanceMap; +var const PrefabSequence SequenceInstance; +var const int PI_PackageVersion; +var const int PI_LicenseePackageVersion; +var const array PI_Bytes; +var const array PI_CompleteObjects; +var const array PI_ReferencedObjects; +var const array PI_SavedNames; +var native const map{VOID,VOID} PI_ObjectMap; +var() editoronly const bool m_bIgnoreVersionUpdates; + +defaultproperties +{ + PI_PackageVersion=-1 + PI_LicenseePackageVersion=-1 + Components[0]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/PrefabSequence.uc b/exported/Engine/Classes/PrefabSequence.uc new file mode 100755 index 00000000..462ce90f --- /dev/null +++ b/exported/Engine/Classes/PrefabSequence.uc @@ -0,0 +1,17 @@ +class PrefabSequence extends Sequence + native(Sequence) + hidecategories(Object); + +var protected PrefabInstance OwnerPrefab; + +// Export UPrefabSequence::execSetOwnerPrefab(FFrame&, void* const) +native final function SetOwnerPrefab(PrefabInstance InOwner); + +// Export UPrefabSequence::execGetOwnerPrefab(FFrame&, void* const) +native final function PrefabInstance GetOwnerPrefab(); + +defaultproperties +{ + ObjName="PrefabSequence" + bDeletable=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/PrefabSequenceContainer.uc b/exported/Engine/Classes/PrefabSequenceContainer.uc new file mode 100755 index 00000000..b17cd3bc --- /dev/null +++ b/exported/Engine/Classes/PrefabSequenceContainer.uc @@ -0,0 +1,9 @@ +class PrefabSequenceContainer extends Sequence + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + ObjName="Prefabs" + bDeletable=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/PrimitiveComponent.uc b/exported/Engine/Classes/PrimitiveComponent.uc new file mode 100755 index 00000000..cd04ca7c --- /dev/null +++ b/exported/Engine/Classes/PrimitiveComponent.uc @@ -0,0 +1,425 @@ +class PrimitiveComponent extends ActorComponent + abstract + native(Mesh) + noexport; + +enum EParticleSysParamType +{ + PSPT_None, // 0 + PSPT_Scalar, // 1 + PSPT_ScalarRand, // 2 + PSPT_Vector, // 3 + PSPT_VectorRand, // 4 + PSPT_Color, // 5 + PSPT_Actor, // 6 + PSPT_Material, // 7 + PSPT_ValueName, // 8 + PSPT_MAX // 9 +}; + +enum ERBCollisionChannel +{ + RBCC_Default, // 0 + RBCC_Nothing, // 1 + RBCC_Pawn, // 2 + RBCC_Vehicle, // 3 + RBCC_Water, // 4 + RBCC_GameplayPhysics, // 5 + RBCC_EffectPhysics, // 6 + RBCC_Untitled1, // 7 + RBCC_Untitled2, // 8 + RBCC_Untitled3, // 9 + RBCC_Untitled4, // 10 + RBCC_Cloth, // 11 + RBCC_FluidDrain, // 12 + RBCC_SoftBody, // 13 + RBCC_FracturedMeshPart, // 14 + RBCC_BlockingVolume, // 15 + RBCC_DeadPawn, // 16 + RBCC_Clothing, // 17 + RBCC_ClothingCollision, // 18 + RBCC_MAX // 19 +}; + +enum GJKResult +{ + GJK_Intersect, // 0 + GJK_NoIntersection, // 1 + GJK_Fail, // 2 + GJK_MAX // 3 +}; + +enum ERadialImpulseFalloff +{ + RIF_Constant, // 0 + RIF_Linear, // 1 + RIF_MAX // 2 +}; + +struct MaterialViewRelevance +{ + var bool bOpaque; + var bool bTranslucent; + var bool bDistortion; + var bool bOneLayerDistortionRelevance; + var bool bLit; + var bool bUsesSceneColor; + + structdefaultproperties + { + bOpaque=false + bTranslucent=false + bDistortion=false + bOneLayerDistortionRelevance=false + bLit=false + bUsesSceneColor=false + } +}; + +struct native ParticleSysParam +{ + var() name Name; + var() PrimitiveComponent.EParticleSysParamType ParamType; + var() float Scalar; + var() float Scalar_Low; + var() Vector Vector; + var() Vector Vector_Low; + var() Color Color; + var() Actor Actor; + var() MaterialInterface Material; + var() name ValueName; + + structdefaultproperties + { + Name="None" + ParamType=EParticleSysParamType.PSPT_None + Scalar=0.0000000 + Scalar_Low=0.0000000 + Vector=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Vector_Low=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Color=(R=0,G=0,B=0,A=0) + Actor=none + Material=none + ValueName="None" + } +}; + +struct RBCollisionChannelContainer +{ + var() const bool Default; + var const bool Nothing; + var() const bool Pawn; + var() const bool Vehicle; + var() const bool Water; + var() const bool GameplayPhysics; + var() const bool EffectPhysics; + var() const bool Untitled1; + var() const bool Untitled2; + var() const bool Untitled3; + var() const bool Untitled4; + var() const bool Cloth; + var() const bool FluidDrain; + var() const bool SoftBody; + var() const bool FracturedMeshPart; + var() const bool BlockingVolume; + var() const bool DeadPawn; + var() const bool Clothing; + var() const bool ClothingCollision; + + structdefaultproperties + { + Default=false + Nothing=false + Pawn=false + Vehicle=false + Water=false + GameplayPhysics=false + EffectPhysics=false + Untitled1=false + Untitled2=false + Untitled3=false + Untitled4=false + Cloth=false + FluidDrain=false + SoftBody=false + FracturedMeshPart=false + BlockingVolume=false + DeadPawn=false + Clothing=false + ClothingCollision=false + } +}; + +var native const transient int Tag; +var native const transient int ThreadTag[5]; +var native const transient BoxSphereBounds Bounds; +var private native const transient Pointer SceneInfo; +var private native const int DetachFence; +var native const transient float LocalToWorldDeterminant; +var native const transient Matrix LocalToWorld; +var native const transient int MotionBlurInfoIndex; +var private noimport native const array DecalList; +var private const export editinline transient array DecalsToReattach; +var const export editinline PrimitiveComponent ShadowParent; +var(Rendering) crosslevelpassive export editinline PrimitiveComponent ReplacementPrimitive; +var const export editinline transient FogVolumeDensityComponent FogVolumeComponent; +var const export editinline transient LightComponent OverrideLightComponent; +var const export editinline LightEnvironmentComponent LightEnvironment; +var private const export editinline transient LightEnvironmentComponent PreviousLightEnvironment; +var(Rendering) float MinDrawDistance; +var(Rendering) float MassiveLODDistance; +var(Rendering) private const noexport float MaxDrawDistance; +var(Rendering) editconst float CachedMaxDrawDistance; +var(Rendering) float MotionBlurInstanceScale; +var private const noexport deprecated float CullDistance; +var editconst deprecated float CachedCullDistance; +var(Rendering) const Scene.ESceneDepthPriorityGroup DepthPriorityGroup; +var const Scene.ESceneDepthPriorityGroup ViewOwnerDepthPriorityGroup; +var(Rendering) const Scene.EDetailMode DetailMode; +var(Collision) const PrimitiveComponent.ERBCollisionChannel RBChannel; +var(Physics) byte RBDominanceGroup; +var byte PreviewEnvironmentShadowing; +var const bool bUseViewOwnerDepthPriorityGroup; +var(Rendering) const bool bAllowCullDistanceVolume; +var(Rendering) const bool HiddenGame; +var(Rendering) const bool HiddenEditor; +var(Rendering) const bool bOwnerNoSee; +var(Rendering) const bool bOnlyOwnerSee; +var(Rendering) const bool bIgnoreOwnerHidden; +var bool bUseAsOccluder; +var(Rendering) bool bAllowApproximateOcclusion; +var bool bFirstFrameOcclusion; +var bool bIgnoreNearPlaneIntersection; +var bool bSelectable; +var(Rendering) const bool bForceMipStreaming; +var const deprecated bool bAcceptsDecals; +var const deprecated bool bAcceptsDecalsDuringGameplay; +var(Rendering) const bool bAcceptsStaticDecals; +var(Rendering) const bool bAcceptsDynamicDecals; +var native const transient bool bIsRefreshingDecals; +var transient bool bAllowDecalAutomaticReAttach; +var bool bUsePerInstanceHitProxies; +var(Lighting) bool CastShadow; +var const bool bForceDirectLightMap; +var(Lighting) bool bCastDynamicShadow; +var(Lighting) bool bCastStaticShadow; +var(Lighting) bool bSelfShadowOnly; +var(Lighting) bool bNoModSelfShadow; +var(Lighting) bool bAcceptsDynamicDominantLightShadows; +var(Lighting) bool bCastHiddenShadow; +var(Lighting) bool bCastShadowAsTwoSided; +var(Lighting) const bool bAcceptsLights; +var(Lighting) const bool bAcceptsDynamicLights; +var(Lighting) const bool bUseOnePassLightingOnTranslucency; +var(Lighting) const bool bUsePrecomputedShadows; +var private const transient bool bHasExplicitShadowParent; +var deprecated bool bAllowAmbientOcclusion; +var(Collision) const bool CollideActors; +var const bool AlwaysCheckCollision; +var(Collision) const bool BlockActors; +var(Collision) const bool BlockZeroExtent; +var(Collision) const bool BlockNonZeroExtent; +var(Collision) const bool CanBlockCamera; +var(Collision) const bool BlockRigidBody; +var(Collision) const bool bBlockFootPlacement; +var(Collision) const bool bSeenByAI; +var(Physics) const bool bDisableAllRigidBody; +var(Physics) const bool bSkipRBGeomCreation; +var(Physics) const bool bNotifyRigidBodyCollision; +var(Physics) const bool bFluidDrain; +var(Physics) const bool bFluidTwoWay; +var(Physics) bool bIgnoreRadialImpulse; +var(Physics) bool bIgnoreRadialForce; +var(Physics) bool bIgnoreForceField; +var(Physics) const bool bUseCompartment; +var private const bool AlwaysLoadOnClient; +var private const bool AlwaysLoadOnServer; +var() bool bIgnoreHiddenActorsMembership; +var() const bool AbsoluteTranslation; +var() const bool AbsoluteRotation; +var() const bool AbsoluteScale; +var bool bAllowShadowFade; +var bool bSupportedOnMobile; +var native const transient bool bWasSNFiltered; +var native const transient array OctreeNodes; +var(Rendering) int TranslucencySortPriority; +var duplicatetransient int VisibilityId; +var(Lighting) const LightingChannelContainer LightingChannels; +var(Collision) const RBCollisionChannelContainer RBCollideWithChannels; +var(Physics) const PhysicalMaterial PhysMaterialOverride; +var duplicatetransient native const RB_BodyInstance BodyInstance; +var native const transient Matrix CachedParentToWorld; +var() const Vector Translation; +var() const Rotator Rotation; +var() const float Scale; +var() const Vector Scale3D; +var() const float BoundsScale; +var() const Vector OcclusionBoundsScale; +var() const float OcclusionSphereScale; +var float OverrideDrawDistanceScale; +var const transient float LastSubmitTime; +var transient float LastRenderTime; +var float ScriptRigidBodyCollisionThreshold; + +// Export UPrimitiveComponent::execAddImpulse(FFrame&, void* const) +native final function AddImpulse(Vector Impulse, optional Vector Position, optional name BoneName, optional bool bVelChange); + +// Export UPrimitiveComponent::execAddRadialImpulse(FFrame&, void* const) +native final function AddRadialImpulse(Vector Origin, float Radius, float Strength, PrimitiveComponent.ERadialImpulseFalloff Falloff, optional bool bVelChange); + +// Export UPrimitiveComponent::execAddForce(FFrame&, void* const) +native final function AddForce(Vector Force, optional Vector Position, optional name BoneName); + +// Export UPrimitiveComponent::execAddRadialForce(FFrame&, void* const) +native final function AddRadialForce(Vector Origin, float Radius, float Strength, PrimitiveComponent.ERadialImpulseFalloff Falloff); + +// Export UPrimitiveComponent::execAddTorque(FFrame&, void* const) +native final function AddTorque(Vector Torque, optional name BoneName); + +// Export UPrimitiveComponent::execSetRBLinearVelocity(FFrame&, void* const) +native final function SetRBLinearVelocity(Vector NewVel, optional bool bAddToCurrent); + +// Export UPrimitiveComponent::execSetRBAngularVelocity(FFrame&, void* const) +native final function SetRBAngularVelocity(Vector NewAngVel, optional bool bAddToCurrent); + +// Export UPrimitiveComponent::execRetardRBLinearVelocity(FFrame&, void* const) +native final function RetardRBLinearVelocity(Vector RetardDir, float VelScale); + +// Export UPrimitiveComponent::execSetRBPosition(FFrame&, void* const) +native final function SetRBPosition(Vector NewPos, optional name BoneName); + +// Export UPrimitiveComponent::execSetRBRotation(FFrame&, void* const) +native final function SetRBRotation(Rotator NewRot, optional name BoneName); + +// Export UPrimitiveComponent::execWakeRigidBody(FFrame&, void* const) +native final function WakeRigidBody(optional name BoneName); + +// Export UPrimitiveComponent::execPutRigidBodyToSleep(FFrame&, void* const) +native final function PutRigidBodyToSleep(optional name BoneName); + +// Export UPrimitiveComponent::execRigidBodyIsAwake(FFrame&, void* const) +native final function bool RigidBodyIsAwake(optional name BoneName); + +// Export UPrimitiveComponent::execSetBlockRigidBody(FFrame&, void* const) +native final function SetBlockRigidBody(bool bNewBlockRigidBody); + +// Export UPrimitiveComponent::execSetRBCollidesWithChannel(FFrame&, void* const) +native final function SetRBCollidesWithChannel(PrimitiveComponent.ERBCollisionChannel Channel, bool bNewCollides); + +// Export UPrimitiveComponent::execSetRBCollisionChannels(FFrame&, void* const) +native final function SetRBCollisionChannels(RBCollisionChannelContainer Channels); + +// Export UPrimitiveComponent::execSetRBChannel(FFrame&, void* const) +native final function SetRBChannel(PrimitiveComponent.ERBCollisionChannel Channel); + +// Export UPrimitiveComponent::execSetNotifyRigidBodyCollision(FFrame&, void* const) +native final function SetNotifyRigidBodyCollision(bool bNewNotifyRigidBodyCollision); + +// Export UPrimitiveComponent::execInitRBPhys(FFrame&, void* const) +native final function InitRBPhys(); + +// Export UPrimitiveComponent::execSetPhysMaterialOverride(FFrame&, void* const) +native final function SetPhysMaterialOverride(PhysicalMaterial NewPhysMaterial); + +// Export UPrimitiveComponent::execGetRootBodyInstance(FFrame&, void* const) +native final function RB_BodyInstance GetRootBodyInstance(); + +// Export UPrimitiveComponent::execSetRBDominanceGroup(FFrame&, void* const) +native final function SetRBDominanceGroup(byte InDomGroup); + +// Export UPrimitiveComponent::execShouldComponentAddToScene(FFrame&, void* const) +native final function bool ShouldComponentAddToScene(); + +// Export UPrimitiveComponent::execSetHidden(FFrame&, void* const) +native final function SetHidden(bool NewHidden); + +// Export UPrimitiveComponent::execSetOwnerNoSee(FFrame&, void* const) +native final function SetOwnerNoSee(bool bNewOwnerNoSee); + +// Export UPrimitiveComponent::execSetOnlyOwnerSee(FFrame&, void* const) +native final function SetOnlyOwnerSee(bool bNewOnlyOwnerSee); + +// Export UPrimitiveComponent::execSetIgnoreOwnerHidden(FFrame&, void* const) +native final function SetIgnoreOwnerHidden(bool bNewIgnoreOwnerHidden); + +// Export UPrimitiveComponent::execSetShadowParent(FFrame&, void* const) +native final function SetShadowParent(PrimitiveComponent NewShadowParent); + +// Export UPrimitiveComponent::execSetLightEnvironment(FFrame&, void* const) +native final function SetLightEnvironment(LightEnvironmentComponent NewLightEnvironment); + +// Export UPrimitiveComponent::execSetCullDistance(FFrame&, void* const) +native final function SetCullDistance(float NewCullDistance); + +// Export UPrimitiveComponent::execSetLightingChannels(FFrame&, void* const) +native final function SetLightingChannels(LightingChannelContainer NewLightingChannels); + +// Export UPrimitiveComponent::execSetDepthPriorityGroup(FFrame&, void* const) +native final function SetDepthPriorityGroup(Scene.ESceneDepthPriorityGroup NewDepthPriorityGroup); + +// Export UPrimitiveComponent::execSetViewOwnerDepthPriorityGroup(FFrame&, void* const) +native final function SetViewOwnerDepthPriorityGroup(bool bNewUseViewOwnerDepthPriorityGroup, Scene.ESceneDepthPriorityGroup NewViewOwnerDepthPriorityGroup); + +// Export UPrimitiveComponent::execSetTraceBlocking(FFrame&, void* const) +native final function SetTraceBlocking(bool NewBlockZeroExtent, bool NewBlockNonZeroExtent); + +// Export UPrimitiveComponent::execSetActorCollision(FFrame&, void* const) +native final function SetActorCollision(bool NewCollideActors, bool NewBlockActors, optional bool NewAlwaysCheckCollision); + +// Export UPrimitiveComponent::execSetTranslation(FFrame&, void* const) +native function SetTranslation(Vector NewTranslation); + +// Export UPrimitiveComponent::execSetRotation(FFrame&, void* const) +native function SetRotation(Rotator NewRotation); + +// Export UPrimitiveComponent::execSetScale(FFrame&, void* const) +native function SetScale(float NewScale); + +// Export UPrimitiveComponent::execSetScale3D(FFrame&, void* const) +native function SetScale3D(Vector NewScale3D); + +// Export UPrimitiveComponent::execSetAbsolute(FFrame&, void* const) +native function SetAbsolute(optional bool NewAbsoluteTranslation, optional bool NewAbsoluteRotation, optional bool NewAbsoluteScale); + +// Export UPrimitiveComponent::execGetPosition(FFrame&, void* const) +native function Vector GetPosition(); + +// Export UPrimitiveComponent::execGetRotation(FFrame&, void* const) +native function Rotator GetRotation(); + +// Export UPrimitiveComponent::execClosestPointOnComponentToPoint(FFrame&, void* const) +native final function PrimitiveComponent.GJKResult ClosestPointOnComponentToPoint(out Vector POI, out Vector Extent, out Vector OutPointA, out Vector OutPointB); + +// Export UPrimitiveComponent::execClosestPointOnComponentToComponent(FFrame&, void* const) +native function PrimitiveComponent.GJKResult ClosestPointOnComponentToComponent(out PrimitiveComponent OtherComponent, out Vector PointOnComponentA, out Vector PointOnComponentB); + +defaultproperties +{ + ReplacementPrimitive=none + MotionBlurInstanceScale=1.0000000 + DepthPriorityGroup=ESceneDepthPriorityGroup.SDPG_World + RBDominanceGroup=15 + PreviewEnvironmentShadowing=180 + bAllowCullDistanceVolume=true + bSelectable=true + bAcceptsDynamicDecals=true + bAllowDecalAutomaticReAttach=true + bCastDynamicShadow=true + bCastStaticShadow=true + bAcceptsDynamicDominantLightShadows=true + bAcceptsDynamicLights=true + CanBlockCamera=true + bBlockFootPlacement=true + AlwaysLoadOnClient=true + AlwaysLoadOnServer=true + bAllowShadowFade=true + bSupportedOnMobile=true + VisibilityId=-1 + Scale=1.0000000 + Scale3D=(X=1.0000000,Y=1.0000000,Z=1.0000000) + BoundsScale=1.0000000 + OcclusionBoundsScale=(X=1.0000000,Y=1.0000000,Z=1.0000000) + OcclusionSphereScale=1.0000000 + OverrideDrawDistanceScale=-1.0000000 + LastRenderTime=-1000.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/PrimitiveComponentFactory.uc b/exported/Engine/Classes/PrimitiveComponentFactory.uc new file mode 100755 index 00000000..834864fd --- /dev/null +++ b/exported/Engine/Classes/PrimitiveComponentFactory.uc @@ -0,0 +1,12 @@ +class PrimitiveComponentFactory extends Object + abstract + native; + +var(Collision) const bool CollideActors; +var(Collision) const bool BlockActors; +var(Collision) const bool BlockZeroExtent; +var(Collision) const bool BlockNonZeroExtent; +var(Collision) const bool BlockRigidBody; +var(Rendering) bool HiddenGame; +var(Rendering) bool HiddenEditor; +var(Rendering) bool CastShadow; diff --git a/exported/Engine/Classes/ProcBuilding.uc b/exported/Engine/Classes/ProcBuilding.uc new file mode 100755 index 00000000..2ccb1aee --- /dev/null +++ b/exported/Engine/Classes/ProcBuilding.uc @@ -0,0 +1,251 @@ +class ProcBuilding extends Volume + native(ProcBuilding) + placeable + hidecategories(Navigation,Object,Movement,Display); + +const ROOF_MINZ = 0.7; +const PROCBUILDING_VERSION = 1; + +enum EScopeEdge +{ + EPSA_Top, // 0 + EPSA_Bottom, // 1 + EPSA_Left, // 2 + EPSA_Right, // 3 + EPSA_None, // 4 + EPSA_MAX // 5 +}; + +enum EPBCornerType +{ + EPBC_Default, // 0 + EPBC_Chamfer, // 1 + EPBC_Round, // 2 + EPBC_MAX // 3 +}; + +enum EBuildingStatsBrowserColumns +{ + BSBC_Name, // 0 + BSBC_Ruleset, // 1 + BSBC_NumStaticMeshComps, // 2 + BSBC_NumInstancedStaticMeshComps,// 3 + BSBC_NumInstancedTris, // 4 + BSBC_LightmapMemBytes, // 5 + BSBC_ShadowmapMemBytes, // 6 + BSBC_LODDiffuseMemBytes, // 7 + BSBC_LODLightingMemBytes, // 8 + BSBC_MAX // 9 +}; + +struct native PBScope2D +{ + var Matrix ScopeFrame; + var float DimX; + var float DimZ; + + structdefaultproperties + { + ScopeFrame=(XPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000),YPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000),ZPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000),WPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000)) + DimX=0.0000000 + DimZ=0.0000000 + } +}; + +struct native PBScopeProcessInfo +{ + var ProcBuilding OwningBuilding; + var ProcBuildingRuleset Ruleset; + var name RulesetVariation; + var bool bGenerateLODPoly; + var bool bPartOfNonRect; + + structdefaultproperties + { + OwningBuilding=none + Ruleset=none + RulesetVariation="None" + bGenerateLODPoly=false + bPartOfNonRect=false + } +}; + +struct native PBFaceUVInfo +{ + var Vector2D Offset; + var Vector2D Size; + + structdefaultproperties + { + Offset=(X=0.0000000,Y=0.0000000) + Size=(X=0.0000000,Y=0.0000000) + } +}; + +struct native PBEdgeInfo +{ + var Vector EdgeEnd; + var Vector EdgeStart; + var int ScopeAIndex; + var ProcBuilding.EScopeEdge ScopeAEdge; + var int ScopeBIndex; + var ProcBuilding.EScopeEdge ScopeBEdge; + var float EdgeAngle; + + structdefaultproperties + { + EdgeEnd=(X=0.0000000,Y=0.0000000,Z=0.0000000) + EdgeStart=(X=0.0000000,Y=0.0000000,Z=0.0000000) + ScopeAIndex=0 + ScopeAEdge=EScopeEdge.EPSA_Top + ScopeBIndex=0 + ScopeBEdge=EScopeEdge.EPSA_Top + EdgeAngle=0.0000000 + } +}; + +struct native PBMeshCompInfo +{ + var export editinline StaticMeshComponent MeshComp; + var int TopLevelScopeIndex; + + structdefaultproperties + { + MeshComp=none + TopLevelScopeIndex=0 + } +}; + +struct native PBFracMeshCompInfo +{ + var export editinline FracturedStaticMeshComponent FracMeshComp; + var int TopLevelScopeIndex; + + structdefaultproperties + { + FracMeshComp=none + TopLevelScopeIndex=0 + } +}; + +struct native PBMaterialParam +{ + var() name ParamName; + var() LinearColor Color; + + structdefaultproperties + { + ParamName="None" + Color=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + } +}; + +struct native PBMemUsageInfo +{ + var ProcBuilding Building; + var ProcBuildingRuleset Ruleset; + var int NumStaticMeshComponent; + var int NumInstancedStaticMeshComponents; + var int NumInstancedTris; + var int LightmapMemBytes; + var int ShadowmapMemBytes; + var int LODDiffuseMemBytes; + var int LODLightingMemBytes; + + structdefaultproperties + { + Building=none + Ruleset=none + NumStaticMeshComponent=0 + NumInstancedStaticMeshComponents=0 + NumInstancedTris=0 + LightmapMemBytes=0 + ShadowmapMemBytes=0 + LODDiffuseMemBytes=0 + LODLightingMemBytes=0 + } +}; + +var() const editconst array BuildingMeshCompInfos; +var() const editconst array BuildingFracMeshCompInfos; +var() const editconst export editinline StaticMeshComponent SimpleMeshComp; +var() bool bGenerateRoofMesh; +var() bool bGenerateFloorMesh; +var() bool bApplyRulesToRoof; +var() bool bApplyRulesToFloor; +var() bool bSplitWallsAtRoofLevels; +var() bool bSplitWallsAtWallEdges; +var transient bool bQuickEdited; +var() bool bBuildingBrushCollision; +var(Debug) bool bDebugDrawEdgeInfo; +var(Debug) bool bDebugDrawScopes; +var const export editinline array LODMeshComps; +var int NumMeshedTopLevelScopes; +var float MaxFacadeZ; +var float MinFacadeZ; +var transient array OverlappingBuildings; +var() float SimpleMeshMassiveLODDistance; +var() float RenderToTexturePullBackAmount; +var() int RoofLightmapRes; +var() int NonRectWallLightmapRes; +var() name ParamSwatchName; +var() array BuildingMaterialParams; +var() duplicatetransient crosslevelpassive const editconst StaticMeshActor LowLODPersistentActor; +var export editinline transient StaticMeshComponent CurrentSimpleMeshComp; +var transient Actor CurrentSimpleMeshActor; +var const int BuildingInstanceVersion; + +// Export UProcBuilding::execClearBuildingMeshes(FFrame&, void* const) +native function ClearBuildingMeshes(); + +// Export UProcBuilding::execFindComponentsForTopLevelScope(FFrame&, void* const) +native function array FindComponentsForTopLevelScope(int TopLevelScopeIndex); + +// Export UProcBuilding::execGetBaseMostBuilding(FFrame&, void* const) +native function ProcBuilding GetBaseMostBuilding(); + +// Export UProcBuilding::execGetAllGroupedProcBuildings(FFrame&, void* const) +native function GetAllGroupedProcBuildings(out array OutSet); + +// Export UProcBuilding::execBreakFractureComponent(FFrame&, void* const) +native function BreakFractureComponent(FracturedStaticMeshComponent Comp, Vector BoxMin, Vector BoxMax); + +// Export UProcBuilding::execFindEdgeForTopLevelScope(FFrame&, void* const) +native function int FindEdgeForTopLevelScope(int TopLevelScopeIndex, ProcBuilding.EScopeEdge Edge); + +defaultproperties +{ + bGenerateRoofMesh=true + bSplitWallsAtRoofLevels=true + bSplitWallsAtWallEdges=true + bBuildingBrushCollision=true + SimpleMeshMassiveLODDistance=10000.0000000 + RenderToTexturePullBackAmount=125.0000000 + RoofLightmapRes=64 + NonRectWallLightmapRes=64 + LowLODPersistentActor=none + BrushColor=(R=222,G=255,B=135,A=255) + bColored=true + // Reference: BrushComponent'Engine.Default__ProcBuilding.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + RBChannel=ERBCollisionChannel.RBCC_BlockingVolume + BlockActors=true + BlockRigidBody=true + bDisableAllRigidBody=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bHidden=false + bWorldGeometry=true + bRouteBeginPlayEvenIfStatic=false + bGameRelevant=true + bMovable=false + bBlockActors=true + bForceOctreeSNFilter=true + bPathColliding=true + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ProcBuildingRuleset.uc b/exported/Engine/Classes/ProcBuildingRuleset.uc new file mode 100755 index 00000000..88e26886 --- /dev/null +++ b/exported/Engine/Classes/ProcBuildingRuleset.uc @@ -0,0 +1,61 @@ +class ProcBuildingRuleset extends Object + native(ProcBuilding) + hidecategories(Object); + +enum EProcBuildingAxis +{ + EPBAxis_X, // 0 + EPBAxis_Z, // 1 + EPBAxis_MAX // 2 +}; + +struct native PBVariationInfo +{ + var() name VariationName; + var() bool bMeshOnTopOfFacePoly; + + structdefaultproperties + { + VariationName="None" + bMeshOnTopOfFacePoly=false + } +}; + +struct native PBParamSwatch +{ + var() name SwatchName; + var() array Params; + + structdefaultproperties + { + SwatchName="None" + Params=none + } +}; + +var export editinline PBRuleNodeBase RootRule; +var editoronly transient bool bBeingEdited; +var(LOD) bool bEnableInteriorTexture; +var(LOD) bool bLODOnlyRoof; +var() bool bPickRandomSwatch; +var(Roof) MaterialInterface DefaultRoofMaterial; +var(Floor) MaterialInterface DefaultFloorMaterial; +var() MaterialInterface DefaultNonRectWallMaterial; +var(Roof) float RoofZOffset; +var(Roof) float NotRoofZOffset; +var(Floor) float FloorZOffset; +var(Floor) float NotFloorZOffset; +var(Roof) float RoofPolyInset; +var(Floor) float FloorPolyInset; +var(LOD) float BuildingLODSpecular; +var(Roof) float RoofEdgeScopeRaise; +var(LOD) Texture LODCubemap; +var(LOD) Texture InteriorTexture; +var() array Variations; +var() array ParamSwatches; + +defaultproperties +{ + bEnableInteriorTexture=true + BuildingLODSpecular=2.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/ProcBuilding_SimpleLODActor.uc b/exported/Engine/Classes/ProcBuilding_SimpleLODActor.uc new file mode 100755 index 00000000..50d9664c --- /dev/null +++ b/exported/Engine/Classes/ProcBuilding_SimpleLODActor.uc @@ -0,0 +1,31 @@ +class ProcBuilding_SimpleLODActor extends StaticMeshActor + native(ProcBuilding) + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: StaticMeshComponent'Engine.Default__ProcBuilding_SimpleLODActor.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__StaticMeshActor.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + ReplacementPrimitive=none + bDisableAllRigidBody=true + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: TgSilhouetteComponent'Engine.Default__ProcBuilding_SimpleLODActor.MySilhouette' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__StaticMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=StaticMeshComponent'Engine.Default__ProcBuilding_SimpleLODActor.StaticMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + Components[0]=StaticMeshComponent0 + Components[1]=MySilhouette + bCollideActors=false + bBlockActors=false + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Projectile.uc b/exported/Engine/Classes/Projectile.uc new file mode 100755 index 00000000..695ab802 --- /dev/null +++ b/exported/Engine/Classes/Projectile.uc @@ -0,0 +1,322 @@ +class Projectile extends Actor + abstract + native + notplaceable + hidecategories(Navigation); + +var() float Speed; +var() float MaxSpeed; +var bool bSwitchToZeroCollision; +var bool bBlockedByInstigator; +var bool bBegunPlay; +var bool bRotationFollowsVelocity; +var bool bIgnoreFoliageTouch; +var Actor ZeroCollider; +var export editinline PrimitiveComponent ZeroColliderComponent; +var() float Damage; +var() float DamageRadius; +var() float MomentumTransfer; +var Class MyDamageType; +var() SoundCue SpawnSound; +var() SoundCue ImpactSound; +var Controller InstigatorController; +var Actor ImpactedActor; +var float NetCullDistanceSquared; +var export editinline CylinderComponent CylinderComponent; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetInitial) + MaxSpeed, Speed; +} + +event bool EncroachingOn(Actor Other) +{ + // End:0x1A + if(Brush(Other) != none) + { + return true; + } + return false; + //return ReturnValue; +} + +event PreBeginPlay() +{ + // End:0x37 + if(Instigator != none) + { + InstigatorController = Instigator.Controller; + } + super.PreBeginPlay(); + // End:0x10C + if(((!bDeleteMe && InstigatorController != none) && InstigatorController.ShotTarget != none) && InstigatorController.ShotTarget.Controller != none) + { + InstigatorController.ShotTarget.Controller.ReceiveProjectileWarning(self); + } + //return; +} + +simulated event PostBeginPlay() +{ + bBegunPlay = true; + //return; +} + +// Export UProjectile::execInit(FFrame&, void* const) +native function Init(Vector Direction); + +// Export UProjectile::execGetTeamNum(FFrame&, void* const) +native simulated function byte GetTeamNum(); + +simulated function bool CanSplash() +{ + return bBegunPlay; + //return ReturnValue; +} + +function Reset() +{ + Destroy(); + //return; +} + +simulated function bool ProjectileHurtRadius(Vector HurtOrigin, Vector HitNormal) +{ + local Vector AltOrigin, TraceHitLocation, TraceHitNormal; + local Actor TraceHitActor; + + // End:0x0F + if(bHurtEntry) + { + return false; + } + AltOrigin = HurtOrigin; + // End:0x14F + if((ImpactedActor != none) && ImpactedActor.bWorldGeometry) + { + AltOrigin = HurtOrigin + ((2.0000000 * Class'Engine.Pawn'.default.MaxStepHeight) * HitNormal); + TraceHitActor = Trace(TraceHitLocation, TraceHitNormal, AltOrigin, HurtOrigin, false,,, 1); + // End:0x11F + if(TraceHitActor == none) + { + AltOrigin = HurtOrigin + (Class'Engine.Pawn'.default.MaxStepHeight * HitNormal); + } + else + { + AltOrigin = HurtOrigin + (0.5000000 * (TraceHitLocation - HurtOrigin)); + } + } + return HurtRadius(Damage, DamageRadius, MyDamageType, MomentumTransfer, AltOrigin); + //return ReturnValue; +} + +simulated function bool HurtRadius(float DamageAmount, float InDamageRadius, Class DamageType, float Momentum, Vector HurtOrigin, optional Actor IgnoredActor, optional Controller InstigatedByController = ((Instigator != none) ? Instigator.Controller : none), optional bool bDoFullDamage) +{ + local bool bCausedDamage, bResult; + + // End:0x45 + if(bHurtEntry) + { + return false; + } + bCausedDamage = false; + // End:0x73 + if(InstigatedByController == none) + { + InstigatedByController = InstigatorController; + } + // End:0x115 + if((ImpactedActor != none) && ImpactedActor != self) + { + ImpactedActor.TakeRadiusDamage(InstigatedByController, DamageAmount, InDamageRadius, DamageType, Momentum, HurtOrigin, true, self); + bCausedDamage = ImpactedActor.bProjTarget; + } + bResult = super.HurtRadius(DamageAmount, InDamageRadius, DamageType, Momentum, HurtOrigin, ImpactedActor, InstigatedByController, bDoFullDamage); + return bResult || bCausedDamage; + //return ReturnValue; +} + +singular simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + // End:0x35 + if((Other == none) || Other.bDeleteMe) + { + return; + } + // End:0x5E + if(bIgnoreFoliageTouch && InteractiveFoliageActor(Other) != none) + { + return; + } + // End:0x111 + if((Other.StopsProjectile(self) && (int(Role) == int(ROLE_Authority)) || bBegunPlay) && bBlockedByInstigator || Other != Instigator) + { + ImpactedActor = Other; + ProcessTouch(Other, HitLocation, HitNormal); + ImpactedActor = none; + } + //return; +} + +simulated function ProcessTouch(Actor Other, Vector HitLocation, Vector HitNormal) +{ + // End:0xC9 + if(Other != Instigator) + { + // End:0xAD + if(!Other.bStatic && DamageRadius == 0.0000000) + { + Other.TakeDamage(int(Damage), InstigatorController, Location, MomentumTransfer * Normal(Velocity), MyDamageType,, self); + } + Explode(HitLocation, HitNormal); + } + //return; +} + +singular simulated event HitWall(Vector HitNormal, Actor Wall, PrimitiveComponent WallComp) +{ + local KActorFromStatic NewKActor; + local editinline StaticMeshComponent HitStaticMesh; + + super.HitWall(HitNormal, Wall, WallComp); + // End:0xEA + if(Wall.bWorldGeometry) + { + HitStaticMesh = StaticMeshComponent(WallComp); + // End:0xEA + if((HitStaticMesh != none) && HitStaticMesh.CanBecomeDynamic()) + { + NewKActor = Class'Engine.KActorFromStatic'.static.MakeDynamic(HitStaticMesh); + // End:0xEA + if(NewKActor != none) + { + Wall = NewKActor; + } + } + } + ImpactedActor = Wall; + // End:0x191 + if(!Wall.bStatic && DamageRadius == float(0)) + { + Wall.TakeDamage(int(Damage), InstigatorController, Location, MomentumTransfer * Normal(Velocity), MyDamageType,, self); + } + Explode(Location, HitNormal); + ImpactedActor = none; + //return; +} + +simulated event EncroachedBy(Actor Other) +{ + HitWall(Normal(Location - Other.Location), Other, none); + //return; +} + +simulated event Explode(Vector HitLocation, Vector HitNormal) +{ + // End:0x5D + if((Damage > float(0)) && DamageRadius > float(0)) + { + // End:0x41 + if(int(Role) == int(ROLE_Authority)) + { + MakeNoise(1.0000000); + } + ProjectileHurtRadius(HitLocation, HitNormal); + } + Destroy(); + //return; +} + +final simulated function RandSpin(float spinRate) +{ + RotationRate.Yaw = int(((spinRate * float(2)) * FRand()) - spinRate); + RotationRate.Pitch = int(((spinRate * float(2)) * FRand()) - spinRate); + RotationRate.Roll = int(((spinRate * float(2)) * FRand()) - spinRate); + //return; +} + +function bool IsStationary() +{ + return false; + //return ReturnValue; +} + +simulated event FellOutOfWorld(Class dmgType) +{ + Explode(Location, vect(0.0000000, 0.0000000, 1.0000000)); + //return; +} + +simulated function float GetTimeToLocation(Vector TargetLoc) +{ + return VSize(TargetLoc - Location) / Speed; + //return ReturnValue; +} + +static simulated function float StaticGetTimeToLocation(Vector TargetLoc, Vector StartLoc, Controller RequestedBy) +{ + return VSize(TargetLoc - StartLoc) / default.Speed; + //return ReturnValue; +} + +static simulated function float GetRange() +{ + // End:0x1C + if(default.LifeSpan == 0.0000000) + { + return 15000.0000000; + } + else + { + return default.MaxSpeed * default.LifeSpan; + } + //return ReturnValue; +} + +simulated function ApplyFluidSurfaceImpact(FluidSurfaceActor Fluid, Vector HitLocation) +{ + super.ApplyFluidSurfaceImpact(Fluid, HitLocation); + // End:0x11A + if(CanSplash()) + { + // End:0x11A + if((((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && Instigator != none) && Instigator.IsPlayerPawn()) && Instigator.IsLocallyControlled()) + { + WorldInfo.MyEmitterPool.SpawnEmitter(Fluid.ProjectileEntryEffect, HitLocation, Rotator(vect(0.0000000, 0.0000000, 1.0000000)), self); + } + } + //return; +} + +defaultproperties +{ + Speed=2000.0000000 + MaxSpeed=2000.0000000 + bBlockedByInstigator=true + DamageRadius=220.0000000 + MyDamageType=Class'Engine.DamageType' + NetCullDistanceSquared=400000000.0000000 + // Reference: CylinderComponent'Engine.Default__Projectile.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=0.0000000 + CollisionRadius=0.0000000 + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Physics=EPhysics.PHYS_Projectile + RemoteRole=ENetRole.ROLE_SimulatedProxy + bNetTemporary=true + bReplicateInstigator=true + bGameRelevant=true + bCanBeDamaged=true + bCollideActors=true + bCollideWorld=true + NetPriority=2.5000000 + LifeSpan=14.0000000 + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/ProscribedReachSpec.uc b/exported/Engine/Classes/ProscribedReachSpec.uc new file mode 100755 index 00000000..3f69d1b9 --- /dev/null +++ b/exported/Engine/Classes/ProscribedReachSpec.uc @@ -0,0 +1,8 @@ +class ProscribedReachSpec extends ReachSpec + native; + +defaultproperties +{ + bAddToNavigationOctree=false + bCanCutCorners=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/ProxyStaticMeshComponent.uc b/exported/Engine/Classes/ProxyStaticMeshComponent.uc new file mode 100755 index 00000000..978635ec --- /dev/null +++ b/exported/Engine/Classes/ProxyStaticMeshComponent.uc @@ -0,0 +1,10 @@ +class ProxyStaticMeshComponent extends StaticMeshComponent + native(Mesh) + editinlinenew + hidecategories(Object); + +defaultproperties +{ + ReplacementPrimitive=none + bIgnoreNearPlaneIntersection=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/Pylon.uc b/exported/Engine/Classes/Pylon.uc new file mode 100755 index 00000000..2e42cc98 --- /dev/null +++ b/exported/Engine/Classes/Pylon.uc @@ -0,0 +1,254 @@ +class Pylon extends NavigationPoint + native + placeable + hidecategories(Navigation,Lighting,LightColor,Force,Lighting,LightColor,Force) + implements(EditorLinkSelectionInterface,Interface_NavigationHandle); + +enum ENavMeshEdgeType +{ + NAVEDGE_Normal, // 0 + NAVEDGE_Mantle, // 1 + NAVEDGE_Coverslip, // 2 + NAVEDGE_SwatTurn, // 3 + NAVEDGE_DropDown, // 4 + NAVEDGE_PathObject, // 5 + NAVEDGE_BackRefDummy, // 6 + NAVEDGE_Jump, // 7 + NAVEDGE_MAX // 8 +}; + +struct native atomicwhencooked immutablewhencooked PolyReference +{ + var ActorReference OwningPylon; + var private int PolyId; + var private native Pointer CachedPoly; + + structdefaultproperties + { + OwningPylon=/* ERROR: System.ArgumentException */ + PolyId=0 + } +}; + +var private native const noexport Pointer VfTable_IEditorLinkSelectionInterface; +var private native const noexport Pointer VfTable_IInterface_NavigationHandle; +var native const Pointer NavMeshPtr; +var native const Pointer ObstacleMesh; +var native const Pointer DynamicObstacleMesh; +var native const transient Pointer WorkingSetPtr; +var private native const transient Pointer PathObjectsThatAffectThisPylon; +var const transient array NextPassSeedList; +var native const OctreeElementId OctreeId; +var native const Pointer OctreeIWasAddedTo; +var const Pylon NextPylon; +var(MeshGeneration) array ExpansionVolumes; +var(MeshGeneration) float ExpansionRadius; +var const float MaxExpansionRadius; +var export editinline DrawPylonRadiusComponent PylonRadiusPreview; +var bool bImportedMesh; +var bool bUseExpansionSphereOverride; +var bool bNeedsCostCheck; +var transient bool bPylonInHighLevelPath; +var(MeshGeneration) bool bUseRecast; +var transient bool bAllowRecastGenerator; +var(Debug) bool bDrawEdgePolys; +var(Debug) bool bDrawPolyBounds; +var(Display) bool bRenderInShowPaths; +var(Display) bool bDrawWalkableSurface; +var(Display) bool bDrawObstacleSurface; +var(Display) bool bSolidObstaclesInGame; +var transient bool bBuildThisPylon; +var bool bDisabled; +var bool bForceObstacleMeshCollision; +var Vector ExpansionSphereCenter; +var export editinline NavMeshRenderingComponent RenderingComp; +var const export editinline transient SpriteComponent BrokenSprite; +var(MeshGeneration) array ImposterPylons; +var(MeshGeneration) array OnBuild_DisableCollisionForThese; +var(MeshGeneration) array OnBuild_EnableCollisionForThese; +var(MeshGeneration) float MaxPolyHeight_Optional; +var byte NavMeshGenerator; +var transient array VoxelFilterBounds; +var transient array VoxelFilterTM; +var(Debug) int DebugEdgeCount; +var transient Vector DebugPathExtent; +var transient Vector DebugPathStartLocation; + +// Export UPylon::execOnPylonStatusChange(FFrame&, void* const) +native function OnPylonStatusChange(); + +// Export UPylon::execUpdateMeshForPreExistingNavMeshObstacles(FFrame&, void* const) +native function UpdateMeshForPreExistingNavMeshObstacles(); + +// Export UPylon::execFlushDynamicEdges(FFrame&, void* const) +native function FlushDynamicEdges(); + +function Vector GetTestPathExtent() +{ + local Class ScoutClass; + local Vector Extent; + + ScoutClass = Class(DynamicLoadObject(Class'Engine.Engine'.default.ScoutClassName, Class'Core.Class')); + Extent.X = ScoutClass.default.PathSizes[0].Radius; + Extent.Y = ScoutClass.default.PathSizes[0].Radius; + Extent.Z = ScoutClass.default.PathSizes[0].Height; + return Extent; + //return ReturnValue; +} + +function VerifyTopLevelConnections() +{ + local NavigationHandle DebugHandle; + local int I, PtIdx; + local Pylon NeighborPylon; + local array pts, Dst_Pts; + local bool bFoundPath; + + DebugHandle = new (self) Class'Engine.NavigationHandle'; + DebugPathStartLocation = Location; + DebugPathExtent = GetTestPathExtent(); + DebugHandle.GetValidPositionsForBox(Location, DebugPathExtent.X * float(10), DebugPathExtent, false, pts, 5); + // End:0xE4 + if(pts.Length == 0) + { + DrawDebugLine(Location, Location + vect(0.0000000, 0.0000000, 100.0000000), 255, 255, 0, true); + return; + } + I = 0; + J0xEF: + + // End:0x3A6 [Loop If] + if(I < PathList.Length) + { + NeighborPylon = Pylon(PathList[I].End.Actor); + // End:0x398 + if(NeighborPylon != none) + { + DebugHandle.GetValidPositionsForBox(NeighborPylon.Location, DebugPathExtent.X * float(10), DebugPathExtent, false, Dst_Pts, 1); + // End:0x248 + if(Dst_Pts.Length < 1) + { + DrawDebugLine(NeighborPylon.Location, NeighborPylon.Location + vect(0.0000000, 0.0000000, 100.0000000), 255, 255, 0, true); + } + else + { + bFoundPath = false; + PtIdx = 0; + J0x25F: + + // End:0x33E [Loop If] + if(PtIdx < pts.Length) + { + DebugPathStartLocation = pts[PtIdx]; + Class'Engine.NavMeshPath_Toward'.static.TowardPoint(DebugHandle, Dst_Pts[0]); + Class'Engine.NavMeshGoal_At'.static.AtLocation(DebugHandle, Dst_Pts[0]); + // End:0x330 + if(DebugHandle.FindPath()) + { + bFoundPath = true; + // [Explicit Break] + goto J0x33E; + } + ++PtIdx; + // [Loop Continue] + goto J0x25F; + } + J0x33E: + + // End:0x398 + if(!bFoundPath) + { + DrawDebugLine(Location, Dst_Pts[0], 255, 0, 0, true); + DrawDebugCoordinateSystem(Location, rot(0, 0, 0), 15.0000000, true); + } + } + } + ++I; + // [Loop Continue] + goto J0xEF; + } + //return; +} + +event NotifyPathChanged() +{ + //return; +} + +function PostBeginPlay() +{ + super(Actor).PostBeginPlay(); + SetEnabled(!bBlocked); + //return; +} + +event SetEnabled(bool bEnabled) +{ + bDisabled = !bEnabled; + bForceObstacleMeshCollision = bDisabled; + OnPylonStatusChange(); + //return; +} + +event bool IsEnabled() +{ + return !bDisabled; + //return ReturnValue; +} + +function OnToggle(SeqAct_Toggle Action) +{ + // End:0x45 + if(Action.InputLinks[0].bHasImpulse) + { + SetEnabled(true); + } + else + { + // End:0x8A + if(Action.InputLinks[1].bHasImpulse) + { + SetEnabled(false); + } + else + { + // End:0xD8 + if(Action.InputLinks[2].bHasImpulse) + { + SetEnabled(!IsEnabled()); + } + } + } + //return; +} + +// Export UPylon::execCanReachPylon(FFrame&, void* const) +native function bool CanReachPylon(Pylon DestPylon, Controller C); + +defaultproperties +{ + ExpansionRadius=2048.0000000 + MaxExpansionRadius=7168.0000000 + bRenderInShowPaths=true + bDrawWalkableSurface=true + bDrawObstacleSurface=true + DebugEdgeCount=-1 + bDestinationOnly=true + // Reference: CylinderComponent'Engine.Default__Pylon.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + Components[5]=none + Components[6]=none + Components[7]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/PylonSeed.uc b/exported/Engine/Classes/PylonSeed.uc new file mode 100755 index 00000000..27919876 --- /dev/null +++ b/exported/Engine/Classes/PylonSeed.uc @@ -0,0 +1,23 @@ +class PylonSeed extends Actor + native(AI) + placeable + hidecategories(Navigation) + classgroup(Navigation) + implements(Interface_NavMeshPathObject); + +var private native const noexport Pointer VfTable_IInterface_NavMeshPathObject; + +defaultproperties +{ + // Reference: CylinderComponent'Engine.Default__PylonSeed.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=50.0000000 + CollisionRadius=50.0000000 + ReplacementPrimitive=none + end object + Components[0]=CollisionCylinder + Components[1]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_BSJointActor.uc b/exported/Engine/Classes/RB_BSJointActor.uc new file mode 100755 index 00000000..3cbd30e2 --- /dev/null +++ b/exported/Engine/Classes/RB_BSJointActor.uc @@ -0,0 +1,25 @@ +class RB_BSJointActor extends RB_ConstraintActor + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: RB_BSJointSetup'Engine.Default__RB_BSJointActor.MyBSJointSetup' + begin object name="MyBSJointSetup" class=Engine.RB_BSJointSetup + end object + ConstraintSetup=MyBSJointSetup + // Reference: RB_ConstraintInstance'Engine.Default__RB_BSJointActor.MyConstraintInstance' + // Archetype: RB_ConstraintInstance'Engine.Default__RB_ConstraintActor.MyConstraintInstance' + begin object name="MyConstraintInstance" + end object + ConstraintInstance=MyConstraintInstance + Components[0]=none + // Reference: RB_ConstraintDrawComponent'Engine.Default__RB_BSJointActor.MyConDrawComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyConDrawComponent' + // Archetype: RB_ConstraintDrawComponent'Engine.Default__RB_ConstraintActor.MyConDrawComponent' + begin object name="MyConDrawComponent" + ReplacementPrimitive=none + end object + Components[1]=MyConDrawComponent +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_BSJointSetup.uc b/exported/Engine/Classes/RB_BSJointSetup.uc new file mode 100755 index 00000000..6716357d --- /dev/null +++ b/exported/Engine/Classes/RB_BSJointSetup.uc @@ -0,0 +1,3 @@ +class RB_BSJointSetup extends RB_ConstraintSetup + native(Physics) + hidecategories(Object); diff --git a/exported/Engine/Classes/RB_BodyInstance.uc b/exported/Engine/Classes/RB_BodyInstance.uc new file mode 100755 index 00000000..13fc0997 --- /dev/null +++ b/exported/Engine/Classes/RB_BodyInstance.uc @@ -0,0 +1,102 @@ +class RB_BodyInstance extends Object + native(Physics) + hidecategories(Object); + +var const export editinline transient PrimitiveComponent OwnerComponent; +var const int BodyIndex; +var Vector Velocity; +var Vector PreviousVelocity; +var native const int SceneIndex; +var native const Pointer BodyData; +var native const Pointer BoneSpring; +var native const Pointer BoneSpringKinActor; +var(BoneSpring) bool bEnableBoneSpringLinear; +var(BoneSpring) bool bEnableBoneSpringAngular; +var(BoneSpring) bool bDisableOnOverextension; +var(BoneSpring) bool bNotifyOwnerOnOverextension; +var(BoneSpring) bool bTeleportOnOverextension; +var(BoneSpring) bool bUseKinActorForBoneSpring; +var(BoneSpring) bool bMakeSpringToBaseCollisionComponent; +var(Physics) const bool bOnlyCollideWithPawns; +var(Physics) const bool bEnableCollisionResponse; +var(Physics) const bool bPushBody; +var private transient bool bForceUnfixed; +var private transient bool bInstanceAlwaysFullAnimWeight; +var(BoneSpring) const float BoneLinearSpring; +var(BoneSpring) const float BoneLinearDamping; +var(BoneSpring) const float BoneAngularSpring; +var(BoneSpring) const float BoneAngularDamping; +var(BoneSpring) float OverextensionThreshold; +var() float CustomGravityFactor; +var transient float LastEffectPlayedTime; +var(Physics) float ContactReportForceThreshold; +var(Physics) float InstanceMassScale; +var(Physics) float InstanceDampingScale; +var(Physics) const PhysicalMaterial PhysMaterialOverride; + +// Export URB_BodyInstance::execGetBodyMass(FFrame&, void* const) +native final function float GetBodyMass(); + +// Export URB_BodyInstance::execSetFixed(FFrame&, void* const) +native final function SetFixed(bool bNewFixed); + +// Export URB_BodyInstance::execIsFixed(FFrame&, void* const) +native final function bool IsFixed(); + +// Export URB_BodyInstance::execIsValidBodyInstance(FFrame&, void* const) +native final function bool IsValidBodyInstance(); + +// Export URB_BodyInstance::execGetPhysicsAssetInstance(FFrame&, void* const) +native final function PhysicsAssetInstance GetPhysicsAssetInstance(); + +// Export URB_BodyInstance::execGetUnrealWorldTM(FFrame&, void* const) +native final function Matrix GetUnrealWorldTM(); + +// Export URB_BodyInstance::execGetUnrealWorldVelocity(FFrame&, void* const) +native final function Vector GetUnrealWorldVelocity(); + +// Export URB_BodyInstance::execGetUnrealWorldAngularVelocity(FFrame&, void* const) +native final function Vector GetUnrealWorldAngularVelocity(); + +// Export URB_BodyInstance::execGetUnrealWorldVelocityAtPoint(FFrame&, void* const) +native final function Vector GetUnrealWorldVelocityAtPoint(Vector Point); + +// Export URB_BodyInstance::execEnableBoneSpring(FFrame&, void* const) +native final function EnableBoneSpring(bool bInEnableLinear, bool bInEnableAngular, const out Matrix InBoneTarget); + +// Export URB_BodyInstance::execSetBoneSpringParams(FFrame&, void* const) +native final function SetBoneSpringParams(float InLinearSpring, float InLinearDamping, float InAngularSpring, float InAngularDamping); + +// Export URB_BodyInstance::execSetBoneSpringTarget(FFrame&, void* const) +native final function SetBoneSpringTarget(const out Matrix InBoneTarget, bool bTeleport); + +// Export URB_BodyInstance::execSetBlockRigidBody(FFrame&, void* const) +native final function SetBlockRigidBody(bool bNewBlockRigidBody); + +// Export URB_BodyInstance::execSetPhysMaterialOverride(FFrame&, void* const) +native final function SetPhysMaterialOverride(PhysicalMaterial NewPhysMaterial); + +// Export URB_BodyInstance::execEnableCollisionResponse(FFrame&, void* const) +native final function EnableCollisionResponse(bool bEnableResponse); + +// Export URB_BodyInstance::execSetContactReportForceThreshold(FFrame&, void* const) +native final function SetContactReportForceThreshold(float Threshold); + +// Export URB_BodyInstance::execUpdateMassProperties(FFrame&, void* const) +native final function UpdateMassProperties(RB_BodySetup Setup); + +// Export URB_BodyInstance::execUpdateDampingProperties(FFrame&, void* const) +native final function UpdateDampingProperties(); + +defaultproperties +{ + bEnableCollisionResponse=true + BoneLinearSpring=10.0000000 + BoneLinearDamping=0.1000000 + BoneAngularSpring=1.0000000 + BoneAngularDamping=0.1000000 + CustomGravityFactor=1.0000000 + ContactReportForceThreshold=-1.0000000 + InstanceMassScale=1.0000000 + InstanceDampingScale=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_BodySetup.uc b/exported/Engine/Classes/RB_BodySetup.uc new file mode 100755 index 00000000..2185ed49 --- /dev/null +++ b/exported/Engine/Classes/RB_BodySetup.uc @@ -0,0 +1,46 @@ +class RB_BodySetup extends KMeshProps + native(Physics) + hidecategories(Object); + +enum ESleepFamily +{ + SF_Normal, // 0 + SF_Sensitive, // 1 + SF_MAX // 2 +}; + +struct KCachedConvexDataElement +{ + var native array ConvexElementData; +}; + +struct KCachedConvexData +{ + var native array CachedConvexElements; +}; + +var() RB_BodySetup.ESleepFamily SleepFamily; +var() editconst name BoneName; +var() bool bFixed; +var() bool bNoCollision; +var() bool bBlockZeroExtent; +var() bool bBlockNonZeroExtent; +var() bool bNoBodyShotChecks; +var() bool bEnableContinuousCollisionDetection; +var() bool bAlwaysFullAnimWeight; +var() bool bConsiderForBounds; +var() PhysicalMaterial PhysMaterial; +var() float MassScale; +var native const array CollisionGeom; +var native const array CollisionGeomScale3D; +var() const array PreCachedPhysScale; +var native const array PreCachedPhysData; +var const int PreCachedPhysDataVersion; + +defaultproperties +{ + bBlockZeroExtent=true + bBlockNonZeroExtent=true + bConsiderForBounds=true + MassScale=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_ConstraintActor.uc b/exported/Engine/Classes/RB_ConstraintActor.uc new file mode 100755 index 00000000..81e185e3 --- /dev/null +++ b/exported/Engine/Classes/RB_ConstraintActor.uc @@ -0,0 +1,147 @@ +class RB_ConstraintActor extends RigidBodyBase + abstract + native(Physics) + placeable + hidecategories(Navigation); + +var() Actor ConstraintActor1; +var() Actor ConstraintActor2; +var() noclear export editinline RB_ConstraintSetup ConstraintSetup; +var() noclear export editinline RB_ConstraintInstance ConstraintInstance; +var() const bool bDisableCollision; +var() bool bUpdateActor1RefFrame; +var() bool bUpdateActor2RefFrame; +var(Pulley) Actor PulleyPivotActor1; +var(Pulley) Actor PulleyPivotActor2; + +// Export URB_ConstraintActor::execSetDisableCollision(FFrame&, void* const) +native final function SetDisableCollision(bool NewDisableCollision); + +// Export URB_ConstraintActor::execInitConstraint(FFrame&, void* const) +native final function InitConstraint(Actor Actor1, Actor Actor2, optional name Actor1Bone, optional name Actor2Bone, optional float BreakThreshold); + +// Export URB_ConstraintActor::execTermConstraint(FFrame&, void* const) +native final function TermConstraint(); + +simulated function OnDestroy(SeqAct_Destroy Action) +{ + TermConstraint(); + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0xAC + if(Action.InputLinks[0].bHasImpulse) + { + // End:0xA9 + if(int(Physics) != int(10)) + { + SetPhysics(10); + InitConstraint(ConstraintActor1, ConstraintActor2, ConstraintSetup.ConstraintBone1, ConstraintSetup.ConstraintBone2); + } + } + else + { + // End:0x109 + if(Action.InputLinks[1].bHasImpulse) + { + // End:0x106 + if(int(Physics) != int(0)) + { + SetPhysics(0); + TermConstraint(); + } + } + else + { + // End:0x1C5 + if(Action.InputLinks[2].bHasImpulse) + { + // End:0x167 + if(int(Physics) != int(0)) + { + SetPhysics(0); + TermConstraint(); + } + else + { + SetPhysics(10); + InitConstraint(ConstraintActor1, ConstraintActor2, ConstraintSetup.ConstraintBone1, ConstraintSetup.ConstraintBone2); + } + } + } + } + //return; +} + +simulated function OnToggleConstraintDrive(SeqAct_ToggleConstraintDrive Action) +{ + // End:0x148 + if(Action.InputLinks[0].bHasImpulse) + { + // End:0x7B + if(Action.bEnableLinearPositionDrive) + { + ConstraintInstance.SetLinearPositionDrive(true, true, true); + } + // End:0xBF + if(Action.bEnableLinearvelocityDrive) + { + ConstraintInstance.SetLinearVelocityDrive(true, true, true); + } + // End:0x102 + if(Action.bEnableAngularPositionDrive) + { + ConstraintInstance.SetAngularPositionDrive(true, true); + } + // End:0x145 + if(Action.bEnableAngularVelocityDrive) + { + ConstraintInstance.SetAngularVelocityDrive(true, true); + } + } + else + { + // End:0x205 + if(Action.InputLinks[1].bHasImpulse) + { + ConstraintInstance.SetLinearPositionDrive(false, false, false); + ConstraintInstance.SetLinearVelocityDrive(false, false, false); + ConstraintInstance.SetAngularPositionDrive(false, false); + ConstraintInstance.SetAngularVelocityDrive(false, false); + } + } + //return; +} + +defaultproperties +{ + // Reference: RB_ConstraintInstance'Engine.Default__RB_ConstraintActor.MyConstraintInstance' + begin object name="MyConstraintInstance" class=Engine.RB_ConstraintInstance + end object + ConstraintInstance=MyConstraintInstance + bUpdateActor1RefFrame=true + bUpdateActor2RefFrame=true + Components[0]=none + // Reference: RB_ConstraintDrawComponent'Engine.Default__RB_ConstraintActor.MyConDrawComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyConDrawComponent' + begin object name="MyConDrawComponent" class=Engine.RB_ConstraintDrawComponent + ReplacementPrimitive=none + end object + Components[1]=MyConDrawComponent + DrawScale=0.5000000 + Physics=EPhysics.PHYS_RigidBody + TickGroup=ETickingGroup.TG_PostAsyncWork + bHidden=true + bNoDelete=true + bEdShouldSnap=true + SupportedEvents[0]=Class'Engine.SeqEvent_Touch' + SupportedEvents[1]=Class'Engine.SeqEvent_Destroyed' + SupportedEvents[2]=Class'Engine.SeqEvent_TakeDamage' + SupportedEvents[3]=Class'Engine.SeqEvent_HitWall' + SupportedEvents[4]=Class'Engine.SeqEvent_AnimNotify' + SupportedEvents[5]=Class'Engine.SeqEvent_MobileTouch' + SupportedEvents[6]=Class'Engine.SeqEvent_ConstraintBroken' +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_ConstraintActorSpawnable.uc b/exported/Engine/Classes/RB_ConstraintActorSpawnable.uc new file mode 100755 index 00000000..a1f530ab --- /dev/null +++ b/exported/Engine/Classes/RB_ConstraintActorSpawnable.uc @@ -0,0 +1,26 @@ +class RB_ConstraintActorSpawnable extends RB_ConstraintActor + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: RB_ConstraintSetup'Engine.Default__RB_ConstraintActorSpawnable.MyConstraintSetup' + begin object name="MyConstraintSetup" class=Engine.RB_ConstraintSetup + end object + ConstraintSetup=MyConstraintSetup + // Reference: RB_ConstraintInstance'Engine.Default__RB_ConstraintActorSpawnable.MyConstraintInstance' + // Archetype: RB_ConstraintInstance'Engine.Default__RB_ConstraintActor.MyConstraintInstance' + begin object name="MyConstraintInstance" + end object + ConstraintInstance=MyConstraintInstance + Components[0]=none + // Reference: RB_ConstraintDrawComponent'Engine.Default__RB_ConstraintActorSpawnable.MyConDrawComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyConDrawComponent' + // Archetype: RB_ConstraintDrawComponent'Engine.Default__RB_ConstraintActor.MyConDrawComponent' + begin object name="MyConDrawComponent" + ReplacementPrimitive=none + end object + Components[1]=MyConDrawComponent + bNoDelete=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_ConstraintDrawComponent.uc b/exported/Engine/Classes/RB_ConstraintDrawComponent.uc new file mode 100755 index 00000000..226165d8 --- /dev/null +++ b/exported/Engine/Classes/RB_ConstraintDrawComponent.uc @@ -0,0 +1,9 @@ +class RB_ConstraintDrawComponent extends PrimitiveComponent + native(Physics); + +var() MaterialInterface LimitMaterial; + +defaultproperties +{ + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_ConstraintInstance.uc b/exported/Engine/Classes/RB_ConstraintInstance.uc new file mode 100755 index 00000000..5ff65f82 --- /dev/null +++ b/exported/Engine/Classes/RB_ConstraintInstance.uc @@ -0,0 +1,93 @@ +class RB_ConstraintInstance extends Object + native(Physics) + hidecategories(Object); + +var const transient Actor Owner; +var const export editinline transient PrimitiveComponent OwnerComponent; +var const int ConstraintIndex; +var native const int SceneIndex; +var native const bool bInHardware; +var(Linear) const bool bLinearXPositionDrive; +var(Linear) const bool bLinearXVelocityDrive; +var(Linear) const bool bLinearYPositionDrive; +var(Linear) const bool bLinearYVelocityDrive; +var(Linear) const bool bLinearZPositionDrive; +var(Linear) const bool bLinearZVelocityDrive; +var(Angular) const bool bSwingPositionDrive; +var(Angular) const bool bSwingVelocityDrive; +var(Angular) const bool bTwistPositionDrive; +var(Angular) const bool bTwistVelocityDrive; +var(Angular) const bool bAngularSlerpDrive; +var bool bTerminated; +var native const Pointer ConstraintData; +var(Linear) const Vector LinearPositionTarget; +var(Linear) const Vector LinearVelocityTarget; +var(Linear) const float LinearDriveSpring; +var(Linear) const float LinearDriveDamping; +var(Linear) const float LinearDriveForceLimit; +var(Angular) const Quat AngularPositionTarget; +var(Angular) const Vector AngularVelocityTarget; +var(Angular) const float AngularDriveSpring; +var(Angular) const float AngularDriveDamping; +var(Angular) const float AngularDriveForceLimit; +var private native const Pointer DummyKinActor; + +// Export URB_ConstraintInstance::execInitConstraint(FFrame&, void* const) +native final function InitConstraint(PrimitiveComponent PrimComp1, PrimitiveComponent PrimComp2, RB_ConstraintSetup Setup, float Scale, Actor InOwner, PrimitiveComponent InPrimComp, bool bMakeKinForBody1); + +// Export URB_ConstraintInstance::execTermConstraint(FFrame&, void* const) +native final function TermConstraint(); + +// Export URB_ConstraintInstance::execGetPhysicsAssetInstance(FFrame&, void* const) +native final function PhysicsAssetInstance GetPhysicsAssetInstance(); + +// Export URB_ConstraintInstance::execGetConstraintLocation(FFrame&, void* const) +native final function Vector GetConstraintLocation(); + +// Export URB_ConstraintInstance::execSetLinearPositionDrive(FFrame&, void* const) +native final function SetLinearPositionDrive(bool bEnableXDrive, bool bEnableYDrive, bool bEnableZDrive); + +// Export URB_ConstraintInstance::execSetLinearVelocityDrive(FFrame&, void* const) +native final function SetLinearVelocityDrive(bool bEnableXDrive, bool bEnableYDrive, bool bEnableZDrive); + +// Export URB_ConstraintInstance::execSetAngularPositionDrive(FFrame&, void* const) +native final function SetAngularPositionDrive(bool bEnableSwingDrive, bool bEnableTwistDrive); + +// Export URB_ConstraintInstance::execSetAngularVelocityDrive(FFrame&, void* const) +native final function SetAngularVelocityDrive(bool bEnableSwingDrive, bool bEnableTwistDrive); + +// Export URB_ConstraintInstance::execSetLinearPositionTarget(FFrame&, void* const) +native final function SetLinearPositionTarget(Vector InPosTarget); + +// Export URB_ConstraintInstance::execSetLinearVelocityTarget(FFrame&, void* const) +native final function SetLinearVelocityTarget(Vector InVelTarget); + +// Export URB_ConstraintInstance::execSetLinearDriveParams(FFrame&, void* const) +native final function SetLinearDriveParams(float InSpring, float InDamping, float InForceLimit); + +// Export URB_ConstraintInstance::execSetAngularPositionTarget(FFrame&, void* const) +native final function SetAngularPositionTarget(const out Quat InPosTarget); + +// Export URB_ConstraintInstance::execSetAngularVelocityTarget(FFrame&, void* const) +native final function SetAngularVelocityTarget(Vector InVelTarget); + +// Export URB_ConstraintInstance::execSetAngularDriveParams(FFrame&, void* const) +native final function SetAngularDriveParams(float InSpring, float InDamping, float InForceLimit); + +// Export URB_ConstraintInstance::execSetAngularDOFLimitScale(FFrame&, void* const) +native final function SetAngularDOFLimitScale(float InSwing1LimitScale, float InSwing2LimitScale, float InTwistLimitScale, RB_ConstraintSetup InSetup); + +// Export URB_ConstraintInstance::execSetLinearLimitSize(FFrame&, void* const) +native final function SetLinearLimitSize(float NewLimitSize); + +// Export URB_ConstraintInstance::execMoveKinActorTransform(FFrame&, void* const) +native final function MoveKinActorTransform(out Matrix NewTM); + +defaultproperties +{ + LinearDriveSpring=50.0000000 + LinearDriveDamping=1.0000000 + AngularPositionTarget=(X=0.0000000,Y=0.0000000,Z=0.0000000,W=1.0000000) + AngularDriveSpring=50.0000000 + AngularDriveDamping=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_ConstraintSetup.uc b/exported/Engine/Classes/RB_ConstraintSetup.uc new file mode 100755 index 00000000..e6e270a3 --- /dev/null +++ b/exported/Engine/Classes/RB_ConstraintSetup.uc @@ -0,0 +1,68 @@ +class RB_ConstraintSetup extends Object + native(Physics) + hidecategories(Object); + +struct native LinearDOFSetup +{ + var() byte bLimited; + var() float LimitSize; + + structdefaultproperties + { + bLimited=1 + LimitSize=0.0000000 + } +}; + +var() const name JointName; +var() name ConstraintBone1; +var() name ConstraintBone2; +var Vector Pos1; +var Vector PriAxis1; +var Vector SecAxis1; +var Vector Pos2; +var Vector PriAxis2; +var Vector SecAxis2; +var Vector PulleyPivot1; +var Vector PulleyPivot2; +var() bool bEnableProjection; +var() bool m_bBreakOnOwnersDeath; +var bool m_bDoBreak; +var(Linear) bool bLinearLimitSoft; +var(Linear) bool bLinearBreakable; +var(Angular) bool bSwingLimited; +var(Angular) bool bTwistLimited; +var(Angular) bool bSwingLimitSoft; +var(Angular) bool bTwistLimitSoft; +var(Angular) bool bAngularBreakable; +var(Pulley) bool bIsPulley; +var(Pulley) bool bMaintainMinDistance; +var(Linear) LinearDOFSetup LinearXSetup; +var(Linear) LinearDOFSetup LinearYSetup; +var(Linear) LinearDOFSetup LinearZSetup; +var(Linear) float LinearLimitStiffness; +var(Linear) float LinearLimitDamping; +var(Linear) float LinearBreakThreshold; +var(Angular) float Swing1LimitAngle; +var(Angular) float Swing2LimitAngle; +var(Angular) float TwistLimitAngle; +var(Angular) float SwingLimitStiffness; +var(Angular) float SwingLimitDamping; +var(Angular) float TwistLimitStiffness; +var(Angular) float TwistLimitDamping; +var(Angular) float AngularBreakThreshold; +var(Pulley) float PulleyRatio; + +defaultproperties +{ + PriAxis1=(X=1.0000000,Y=0.0000000,Z=0.0000000) + SecAxis1=(X=0.0000000,Y=1.0000000,Z=0.0000000) + PriAxis2=(X=1.0000000,Y=0.0000000,Z=0.0000000) + SecAxis2=(X=0.0000000,Y=1.0000000,Z=0.0000000) + LinearXSetup=(bLimited=1,LimitSize=0.0000000) + LinearYSetup=(bLimited=1,LimitSize=0.0000000) + LinearZSetup=(bLimited=1,LimitSize=0.0000000) + LinearBreakThreshold=300.0000000 + AngularBreakThreshold=500.0000000 + PulleyRatio=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_CylindricalForceActor.uc b/exported/Engine/Classes/RB_CylindricalForceActor.uc new file mode 100755 index 00000000..2d84fa4a --- /dev/null +++ b/exported/Engine/Classes/RB_CylindricalForceActor.uc @@ -0,0 +1,85 @@ +class RB_CylindricalForceActor extends RigidBodyBase + native(ForceField) + placeable + hidecategories(Navigation); + +var() export editinline DrawCylinderComponent RenderComponent; +var() interp float RadialStrength; +var() interp float RotationalStrength; +var() interp float LiftStrength; +var() interp float LiftFalloffHeight; +var() interp float EscapeVelocity; +var() interp float ForceRadius; +var() interp float ForceTopRadius; +var() interp float ForceHeight; +var() interp float HeightOffset; +var() bool bForceActive; +var() bool bForceApplyToCloth; +var() bool bForceApplyToFluid; +var() bool bForceApplyToRigidBodies; +var() bool bForceApplyToProjectiles; +var() const RBCollisionChannelContainer CollideWithChannels; + +replication +{ + // Pos:0x000 + if(bNetDirty) + bForceActive; +} + +simulated function OnToggle(SeqAct_Toggle inAction) +{ + // End:0x46 + if(inAction.InputLinks[0].bHasImpulse) + { + bForceActive = true; + } + else + { + // End:0x8C + if(inAction.InputLinks[1].bHasImpulse) + { + bForceActive = false; + } + else + { + // End:0xDB + if(inAction.InputLinks[2].bHasImpulse) + { + bForceActive = !bForceActive; + } + } + } + SetForcedInitialReplicatedProperty(BoolProperty'Engine.RB_CylindricalForceActor.bForceActive', bForceActive == default.bForceActive); + //return; +} + +defaultproperties +{ + // Reference: DrawCylinderComponent'Engine.Default__RB_CylindricalForceActor.DrawCylinder0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawCylinder0' + begin object name="DrawCylinder0" class=Engine.DrawCylinderComponent + CylinderRadius=200.0000000 + CylinderTopRadius=200.0000000 + CylinderHeight=200.0000000 + bDrawOnlyIfSelected=true + ReplacementPrimitive=none + end object + RenderComponent=DrawCylinder0 + EscapeVelocity=10000.0000000 + ForceRadius=200.0000000 + ForceTopRadius=200.0000000 + ForceHeight=200.0000000 + bForceApplyToCloth=true + bForceApplyToFluid=true + bForceApplyToRigidBodies=true + CollideWithChannels=(Default=true,Nothing=false,Pawn=true,Vehicle=true,Water=true,GameplayPhysics=true,EffectPhysics=true,Untitled1=true,Untitled2=true,Untitled3=true,Untitled4=false,Cloth=true,FluidDrain=true,SoftBody=false,FracturedMeshPart=false,BlockingVolume=false,DeadPawn=false,Clothing=false,ClothingCollision=false) + Components[0]=DrawCylinder0 + Components[1]=none + RemoteRole=ENetRole.ROLE_SimulatedProxy + bNoDelete=true + bAlwaysRelevant=true + bOnlyDirtyReplication=true + NetUpdateFrequency=0.1000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_DistanceJointSetup.uc b/exported/Engine/Classes/RB_DistanceJointSetup.uc new file mode 100755 index 00000000..776b6100 --- /dev/null +++ b/exported/Engine/Classes/RB_DistanceJointSetup.uc @@ -0,0 +1,3 @@ +class RB_DistanceJointSetup extends RB_ConstraintSetup + native(Physics) + hidecategories(Object); diff --git a/exported/Engine/Classes/RB_ForceFieldExcludeVolume.uc b/exported/Engine/Classes/RB_ForceFieldExcludeVolume.uc new file mode 100755 index 00000000..d7624d7e --- /dev/null +++ b/exported/Engine/Classes/RB_ForceFieldExcludeVolume.uc @@ -0,0 +1,24 @@ +class RB_ForceFieldExcludeVolume extends Volume + native(ForceField) + placeable + hidecategories(Navigation,Object,Movement,Display); + +var() int ForceFieldChannel; +var native const int SceneIndex; + +defaultproperties +{ + ForceFieldChannel=1 + // Reference: BrushComponent'Engine.Default__RB_ForceFieldExcludeVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + BlockNonZeroExtent=false + bDisableAllRigidBody=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_Handle.uc b/exported/Engine/Classes/RB_Handle.uc new file mode 100755 index 00000000..9bb8582a --- /dev/null +++ b/exported/Engine/Classes/RB_Handle.uc @@ -0,0 +1,54 @@ +class RB_Handle extends ActorComponent + native(Physics) + collapsecategories + hidecategories(Object); + +var export editinline PrimitiveComponent GrabbedComponent; +var name GrabbedBoneName; +var native const transient int SceneIndex; +var native const transient bool bInHardware; +var native const transient bool bRotationConstrained; +var bool bInterpolating; +var native const transient Pointer HandleData; +var native const transient Pointer KinActorData; +var() float LinearDamping; +var() float LinearStiffness; +var() Vector LinearStiffnessScale3D; +var() Vector LinearDampingScale3D; +var() float AngularDamping; +var() float AngularStiffness; +var Vector Destination; +var Vector StepSize; +var Vector Location; + +// Export URB_Handle::execGrabComponent(FFrame&, void* const) +native function GrabComponent(PrimitiveComponent Component, name InBoneName, Vector GrabLocation, bool bConstrainRotation); + +// Export URB_Handle::execReleaseComponent(FFrame&, void* const) +native function ReleaseComponent(); + +// Export URB_Handle::execSetLocation(FFrame&, void* const) +native function SetLocation(Vector NewLocation); + +// Export URB_Handle::execSetSmoothLocation(FFrame&, void* const) +native function SetSmoothLocation(Vector NewLocation, float MoveTime); + +// Export URB_Handle::execUpdateSmoothLocation(FFrame&, void* const) +native function UpdateSmoothLocation(const out Vector NewLocation); + +// Export URB_Handle::execSetOrientation(FFrame&, void* const) +native function SetOrientation(const out Quat NewOrientation); + +// Export URB_Handle::execGetOrientation(FFrame&, void* const) +native function Quat GetOrientation(); + +defaultproperties +{ + LinearDamping=100.0000000 + LinearStiffness=1300.0000000 + LinearStiffnessScale3D=(X=1.0000000,Y=1.0000000,Z=1.0000000) + LinearDampingScale3D=(X=1.0000000,Y=1.0000000,Z=1.0000000) + AngularDamping=200.0000000 + AngularStiffness=1000.0000000 + TickGroup=ETickingGroup.TG_PreAsyncWork +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_HingeActor.uc b/exported/Engine/Classes/RB_HingeActor.uc new file mode 100755 index 00000000..7c4f6b1f --- /dev/null +++ b/exported/Engine/Classes/RB_HingeActor.uc @@ -0,0 +1,26 @@ +class RB_HingeActor extends RB_ConstraintActor + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: RB_HingeSetup'Engine.Default__RB_HingeActor.MyHingeSetup' + begin object name="MyHingeSetup" class=Engine.RB_HingeSetup + end object + ConstraintSetup=MyHingeSetup + // Reference: RB_ConstraintInstance'Engine.Default__RB_HingeActor.MyConstraintInstance' + // Archetype: RB_ConstraintInstance'Engine.Default__RB_ConstraintActor.MyConstraintInstance' + begin object name="MyConstraintInstance" + end object + ConstraintInstance=MyConstraintInstance + Components[0]=none + // Reference: RB_ConstraintDrawComponent'Engine.Default__RB_HingeActor.MyConDrawComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyConDrawComponent' + // Archetype: RB_ConstraintDrawComponent'Engine.Default__RB_ConstraintActor.MyConDrawComponent' + begin object name="MyConDrawComponent" + ReplacementPrimitive=none + end object + Components[1]=MyConDrawComponent + Components[2]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_HingeSetup.uc b/exported/Engine/Classes/RB_HingeSetup.uc new file mode 100755 index 00000000..cd84fa4e --- /dev/null +++ b/exported/Engine/Classes/RB_HingeSetup.uc @@ -0,0 +1,9 @@ +class RB_HingeSetup extends RB_ConstraintSetup + native(Physics) + hidecategories(Object); + +defaultproperties +{ + bSwingLimited=true + TwistLimitAngle=45.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_LineImpulseActor.uc b/exported/Engine/Classes/RB_LineImpulseActor.uc new file mode 100755 index 00000000..0f2a9ae8 --- /dev/null +++ b/exported/Engine/Classes/RB_LineImpulseActor.uc @@ -0,0 +1,58 @@ +class RB_LineImpulseActor extends RigidBodyBase + native(Physics) + placeable + hidecategories(Navigation); + +var() interp float ImpulseStrength; +var() float ImpulseRange; +var() bool bVelChange; +var() bool bStopAtFirstHit; +var() bool bCauseFracture; +var export editinline ArrowComponent Arrow; +var repnotify byte ImpulseCount; + +replication +{ + // Pos:0x000 + if(bNetDirty) + ImpulseCount; +} + +// Export URB_LineImpulseActor::execFireLineImpulse(FFrame&, void* const) +native final function FireLineImpulse(); + +simulated function OnToggle(SeqAct_Toggle inAction) +{ + // End:0x58 + if(inAction.InputLinks[0].bHasImpulse) + { + FireLineImpulse(); + ImpulseCount++; + bForceNetUpdate = true; + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x21 + if(VarName == 'ImpulseCount') + { + FireLineImpulse(); + } + //return; +} + +defaultproperties +{ + ImpulseStrength=900.0000000 + ImpulseRange=200.0000000 + Components[0]=none + Components[1]=none + RemoteRole=ENetRole.ROLE_SimulatedProxy + bNoDelete=true + bAlwaysRelevant=true + bOnlyDirtyReplication=true + bEdShouldSnap=true + NetUpdateFrequency=0.1000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_PrismaticActor.uc b/exported/Engine/Classes/RB_PrismaticActor.uc new file mode 100755 index 00000000..e94017be --- /dev/null +++ b/exported/Engine/Classes/RB_PrismaticActor.uc @@ -0,0 +1,26 @@ +class RB_PrismaticActor extends RB_ConstraintActor + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: RB_PrismaticSetup'Engine.Default__RB_PrismaticActor.MyPrismaticSetup' + begin object name="MyPrismaticSetup" class=Engine.RB_PrismaticSetup + end object + ConstraintSetup=MyPrismaticSetup + // Reference: RB_ConstraintInstance'Engine.Default__RB_PrismaticActor.MyConstraintInstance' + // Archetype: RB_ConstraintInstance'Engine.Default__RB_ConstraintActor.MyConstraintInstance' + begin object name="MyConstraintInstance" + end object + ConstraintInstance=MyConstraintInstance + Components[0]=none + // Reference: RB_ConstraintDrawComponent'Engine.Default__RB_PrismaticActor.MyConDrawComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyConDrawComponent' + // Archetype: RB_ConstraintDrawComponent'Engine.Default__RB_ConstraintActor.MyConDrawComponent' + begin object name="MyConDrawComponent" + ReplacementPrimitive=none + end object + Components[1]=MyConDrawComponent + Components[2]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_PrismaticSetup.uc b/exported/Engine/Classes/RB_PrismaticSetup.uc new file mode 100755 index 00000000..d9ab4db8 --- /dev/null +++ b/exported/Engine/Classes/RB_PrismaticSetup.uc @@ -0,0 +1,10 @@ +class RB_PrismaticSetup extends RB_ConstraintSetup + native(Physics) + hidecategories(Object); + +defaultproperties +{ + bSwingLimited=true + bTwistLimited=true + LinearXSetup=(bLimited=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_PulleyJointActor.uc b/exported/Engine/Classes/RB_PulleyJointActor.uc new file mode 100755 index 00000000..85b20427 --- /dev/null +++ b/exported/Engine/Classes/RB_PulleyJointActor.uc @@ -0,0 +1,25 @@ +class RB_PulleyJointActor extends RB_ConstraintActor + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: RB_PulleyJointSetup'Engine.Default__RB_PulleyJointActor.MyPulleyJointSetup' + begin object name="MyPulleyJointSetup" class=Engine.RB_PulleyJointSetup + end object + ConstraintSetup=MyPulleyJointSetup + // Reference: RB_ConstraintInstance'Engine.Default__RB_PulleyJointActor.MyConstraintInstance' + // Archetype: RB_ConstraintInstance'Engine.Default__RB_ConstraintActor.MyConstraintInstance' + begin object name="MyConstraintInstance" + end object + ConstraintInstance=MyConstraintInstance + Components[0]=none + // Reference: RB_ConstraintDrawComponent'Engine.Default__RB_PulleyJointActor.MyConDrawComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyConDrawComponent' + // Archetype: RB_ConstraintDrawComponent'Engine.Default__RB_ConstraintActor.MyConDrawComponent' + begin object name="MyConDrawComponent" + ReplacementPrimitive=none + end object + Components[1]=MyConDrawComponent +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_PulleyJointSetup.uc b/exported/Engine/Classes/RB_PulleyJointSetup.uc new file mode 100755 index 00000000..e361d984 --- /dev/null +++ b/exported/Engine/Classes/RB_PulleyJointSetup.uc @@ -0,0 +1,8 @@ +class RB_PulleyJointSetup extends RB_ConstraintSetup + native(Physics) + hidecategories(Object); + +defaultproperties +{ + bIsPulley=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_RadialForceActor.uc b/exported/Engine/Classes/RB_RadialForceActor.uc new file mode 100755 index 00000000..4420b1b6 --- /dev/null +++ b/exported/Engine/Classes/RB_RadialForceActor.uc @@ -0,0 +1,86 @@ +class RB_RadialForceActor extends RigidBodyBase + native(ForceField) + placeable + hidecategories(Navigation); + +enum ERadialForceType +{ + RFT_Force, // 0 + RFT_Impulse, // 1 + RFT_MAX // 2 +}; + +var export editinline DrawSphereComponent RenderComponent; +var() interp float ForceStrength; +var() interp float ForceRadius; +var() interp float SwirlStrength; +var() interp float SpinTorque; +var() export PrimitiveComponent.ERadialImpulseFalloff ForceFalloff; +var() RB_RadialForceActor.ERadialForceType RadialForceMode; +var() bool bForceActive; +var() bool bForceApplyToCloth; +var() bool bForceApplyToFluid; +var() bool bForceApplyToRigidBodies; +var() bool bForceApplyToProjectiles; +var() const RBCollisionChannelContainer CollideWithChannels; + +replication +{ + // Pos:0x000 + if(bNetDirty) + bForceActive; +} + +simulated function OnToggle(SeqAct_Toggle inAction) +{ + // End:0x46 + if(inAction.InputLinks[0].bHasImpulse) + { + bForceActive = true; + } + else + { + // End:0x8C + if(inAction.InputLinks[1].bHasImpulse) + { + bForceActive = false; + } + else + { + // End:0xDB + if(inAction.InputLinks[2].bHasImpulse) + { + bForceActive = !bForceActive; + } + } + } + SetForcedInitialReplicatedProperty(BoolProperty'Engine.RB_RadialForceActor.bForceActive', bForceActive == default.bForceActive); + //return; +} + +defaultproperties +{ + // Reference: DrawSphereComponent'Engine.Default__RB_RadialForceActor.DrawSphere0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawSphere0' + begin object name="DrawSphere0" class=Engine.DrawSphereComponent + SphereColor=(R=64,G=70,B=255,A=255) + SphereRadius=200.0000000 + bDrawOnlyIfSelected=true + ReplacementPrimitive=none + end object + RenderComponent=DrawSphere0 + ForceStrength=10.0000000 + ForceRadius=200.0000000 + bForceApplyToCloth=true + bForceApplyToFluid=true + bForceApplyToRigidBodies=true + CollideWithChannels=(Default=true,Nothing=false,Pawn=true,Vehicle=true,Water=true,GameplayPhysics=true,EffectPhysics=true,Untitled1=true,Untitled2=true,Untitled3=true,Untitled4=true,Cloth=true,FluidDrain=true,SoftBody=false,FracturedMeshPart=false,BlockingVolume=false,DeadPawn=false,Clothing=false,ClothingCollision=false) + Components[0]=DrawSphere0 + Components[1]=none + RemoteRole=ENetRole.ROLE_SimulatedProxy + bNoDelete=true + bAlwaysRelevant=true + bOnlyDirtyReplication=true + NetUpdateFrequency=0.1000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_RadialImpulseActor.uc b/exported/Engine/Classes/RB_RadialImpulseActor.uc new file mode 100755 index 00000000..2c106763 --- /dev/null +++ b/exported/Engine/Classes/RB_RadialImpulseActor.uc @@ -0,0 +1,57 @@ +class RB_RadialImpulseActor extends RigidBodyBase + native(Physics) + placeable + hidecategories(Navigation); + +var export editinline DrawSphereComponent RenderComponent; +var() const editconst export editinline RB_RadialImpulseComponent ImpulseComponent; +var repnotify byte ImpulseCount; + +replication +{ + // Pos:0x000 + if(bNetDirty) + ImpulseCount; +} + +simulated function OnToggle(SeqAct_Toggle inAction) +{ + // End:0x76 + if(inAction.InputLinks[0].bHasImpulse) + { + ImpulseComponent.FireImpulse(Location); + ImpulseCount++; + bForceNetUpdate = true; + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x3F + if(VarName == 'ImpulseCount') + { + ImpulseComponent.FireImpulse(Location); + } + //return; +} + +defaultproperties +{ + // Reference: RB_RadialImpulseComponent'Engine.Default__RB_RadialImpulseActor.ImpulseComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ImpulseComponent0' + begin object name="ImpulseComponent0" class=Engine.RB_RadialImpulseComponent + ReplacementPrimitive=none + end object + ImpulseComponent=ImpulseComponent0 + Components[0]=none + Components[1]=ImpulseComponent0 + Components[2]=none + RemoteRole=ENetRole.ROLE_SimulatedProxy + bNoDelete=true + bAlwaysRelevant=true + bOnlyDirtyReplication=true + bEdShouldSnap=true + NetUpdateFrequency=0.1000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_RadialImpulseComponent.uc b/exported/Engine/Classes/RB_RadialImpulseComponent.uc new file mode 100755 index 00000000..d3f56043 --- /dev/null +++ b/exported/Engine/Classes/RB_RadialImpulseComponent.uc @@ -0,0 +1,21 @@ +class RB_RadialImpulseComponent extends PrimitiveComponent + native(Physics) + hidecategories(Object); + +var() PrimitiveComponent.ERadialImpulseFalloff ImpulseFalloff; +var() float ImpulseStrength; +var() float ImpulseRadius; +var() bool bVelChange; +var() bool bCauseFracture; +var export editinline DrawSphereComponent PreviewSphere; + +// Export URB_RadialImpulseComponent::execFireImpulse(FFrame&, void* const) +native function FireImpulse(Vector Origin); + +defaultproperties +{ + ImpulseStrength=900.0000000 + ImpulseRadius=200.0000000 + ReplacementPrimitive=none + TickGroup=ETickingGroup.TG_PreAsyncWork +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_SkelJointSetup.uc b/exported/Engine/Classes/RB_SkelJointSetup.uc new file mode 100755 index 00000000..393aba1a --- /dev/null +++ b/exported/Engine/Classes/RB_SkelJointSetup.uc @@ -0,0 +1,12 @@ +class RB_SkelJointSetup extends RB_ConstraintSetup + native(Physics) + hidecategories(Object); + +defaultproperties +{ + bSwingLimited=true + bTwistLimited=true + Swing1LimitAngle=45.0000000 + Swing2LimitAngle=45.0000000 + TwistLimitAngle=15.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_Spring.uc b/exported/Engine/Classes/RB_Spring.uc new file mode 100755 index 00000000..595ed848 --- /dev/null +++ b/exported/Engine/Classes/RB_Spring.uc @@ -0,0 +1,31 @@ +class RB_Spring extends ActorComponent + native(Physics); + +var const export editinline PrimitiveComponent Component1; +var const name BoneName1; +var const export editinline PrimitiveComponent Component2; +var const name BoneName2; +var native const int SceneIndex; +var native const bool bInHardware; +var() bool bEnableForceMassRatio; +var native const Pointer SpringData; +var native const float TimeSinceActivation; +var const float MinBodyMass; +var() float SpringSaturateDist; +var() float SpringMaxForce; +var() float MaxForceMassRatio; +var() InterpCurveFloat SpringMaxForceTimeScale; +var() float DampSaturateVel; +var() float DampMaxForce; + +// Export URB_Spring::execSetComponents(FFrame&, void* const) +native function SetComponents(PrimitiveComponent InComponent1, name InBoneName1, Vector Position1, PrimitiveComponent InComponent2, name InBoneName2, Vector Position2); + +// Export URB_Spring::execClear(FFrame&, void* const) +native function Clear(); + +defaultproperties +{ + SpringMaxForceTimeScale=(Points=((InVal=0.0000000,OutVal=1.0000000,ArriveTangent=0.0000000,LeaveTangent=0.0000000,InterpMode=EInterpCurveMode.CIM_Linear)),InterpMethod=EInterpMethodType.IMT_UseFixedTangentEvalAndNewAutoTangents) + TickGroup=ETickingGroup.TG_PreAsyncWork +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_StayUprightSetup.uc b/exported/Engine/Classes/RB_StayUprightSetup.uc new file mode 100755 index 00000000..1c91b0a9 --- /dev/null +++ b/exported/Engine/Classes/RB_StayUprightSetup.uc @@ -0,0 +1,13 @@ +class RB_StayUprightSetup extends RB_ConstraintSetup + native(Physics) + hidecategories(Object); + +defaultproperties +{ + bLinearLimitSoft=true + bSwingLimited=true + bSwingLimitSoft=true + LinearXSetup=(bLimited=0) + LinearYSetup=(bLimited=0) + LinearZSetup=(bLimited=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/RB_Thruster.uc b/exported/Engine/Classes/RB_Thruster.uc new file mode 100755 index 00000000..29c1f515 --- /dev/null +++ b/exported/Engine/Classes/RB_Thruster.uc @@ -0,0 +1,42 @@ +class RB_Thruster extends RigidBodyBase + native(Physics) + placeable + hidecategories(Navigation); + +var() bool bThrustEnabled; +var() interp float ThrustStrength; + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x46 + if(Action.InputLinks[0].bHasImpulse) + { + bThrustEnabled = true; + } + else + { + // End:0x8C + if(Action.InputLinks[1].bHasImpulse) + { + bThrustEnabled = false; + } + else + { + // End:0xDB + if(Action.InputLinks[2].bHasImpulse) + { + bThrustEnabled = !bThrustEnabled; + } + } + } + //return; +} + +defaultproperties +{ + ThrustStrength=100.0000000 + Components[0]=none + Components[1]=none + bHardAttach=true + bEdShouldSnap=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/RadialBlurActor.uc b/exported/Engine/Classes/RadialBlurActor.uc new file mode 100755 index 00000000..47b67390 --- /dev/null +++ b/exported/Engine/Classes/RadialBlurActor.uc @@ -0,0 +1,17 @@ +class RadialBlurActor extends Actor + placeable + hidecategories(Navigation); + +var() export editinline RadialBlurComponent RadialBlur; + +defaultproperties +{ + // Reference: RadialBlurComponent'Engine.Default__RadialBlurActor.RadialBlurComp' + // TemplateOwnerClass: none + // TemplateOwnerName: 'RadialBlurComp' + begin object name="RadialBlurComp" class=Engine.RadialBlurComponent + end object + RadialBlur=RadialBlurComp + Components[0]=RadialBlurComp + Components[1]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/RadialBlurComponent.uc b/exported/Engine/Classes/RadialBlurComponent.uc new file mode 100755 index 00000000..473ad2a5 --- /dev/null +++ b/exported/Engine/Classes/RadialBlurComponent.uc @@ -0,0 +1,61 @@ +class RadialBlurComponent extends ActorComponent + native + editinlinenew + collapsecategories + hidecategories(Object); + +var() const MaterialInterface Material; +var() const Scene.ESceneDepthPriorityGroup DepthPriorityGroup; +var() interp const float BlurScale; +var() interp const float BlurFalloffExponent; +var() interp const float BlurOpacity; +var() const float MaxCullDistance; +var() const float DistanceFalloffExponent; +var() const bool bRenderAsVelocity; +var() const bool bEnabled; +var native const transient Matrix LocalToWorld; + +// Export URadialBlurComponent::execSetMaterial(FFrame&, void* const) +native function SetMaterial(MaterialInterface InMaterial); + +// Export URadialBlurComponent::execSetBlurScale(FFrame&, void* const) +native function SetBlurScale(float InBlurScale); + +// Export URadialBlurComponent::execSetBlurFalloffExponent(FFrame&, void* const) +native function SetBlurFalloffExponent(float InBlurFalloffExponent); + +// Export URadialBlurComponent::execSetBlurOpacity(FFrame&, void* const) +native function SetBlurOpacity(float InBlurOpacity); + +// Export URadialBlurComponent::execSetEnabled(FFrame&, void* const) +native function SetEnabled(bool bInEnabled); + +function OnUpdatePropertyBlurScale() +{ + SetBlurScale(BlurScale); + //return; +} + +function OnUpdatePropertyBlurFalloffExponent() +{ + SetBlurFalloffExponent(BlurFalloffExponent); + //return; +} + +function OnUpdatePropertyBlurOpacity() +{ + SetBlurOpacity(BlurOpacity); + //return; +} + +defaultproperties +{ + DepthPriorityGroup=ESceneDepthPriorityGroup.SDPG_Foreground + BlurScale=1.0000000 + BlurFalloffExponent=1.5000000 + BlurOpacity=1.0000000 + MaxCullDistance=2000.0000000 + DistanceFalloffExponent=1.5000000 + bRenderAsVelocity=true + bEnabled=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ReachSpec.uc b/exported/Engine/Classes/ReachSpec.uc new file mode 100755 index 00000000..144af3d7 --- /dev/null +++ b/exported/Engine/Classes/ReachSpec.uc @@ -0,0 +1,45 @@ +class ReachSpec extends Object + native; + +const BLOCKEDPATHCOST = 10000000; + +var native const editconst transient Pointer NavOctreeObject; +var int Distance; +var Vector Direction; +var() const editconst NavigationPoint Start; +var() const editconst ActorReference End; +var() const editconst int CollisionRadius; +var() const editconst int CollisionHeight; +var int reachFlags; +var int MaxLandingVelocity; +var byte bPruned; +var byte PathColorIndex; +var const editconst bool bAddToNavigationOctree; +var bool bCanCutCorners; +var bool bCheckForObstructions; +var const bool bSkipPrune; +var() editconst bool bDisabled; +var const array< Class > PruneSpecList; +var Actor BlockedBy; + +// Export UReachSpec::execCostFor(FFrame&, void* const) +native final function int CostFor(Pawn P); + +// Export UReachSpec::execGetEnd(FFrame&, void* const) +native final function NavigationPoint GetEnd(); + +// Export UReachSpec::execGetDirection(FFrame&, void* const) +native final function Vector GetDirection(); + +function bool IsBlockedFor(Pawn P) +{ + return CostFor(P) >= 10000000; + //return ReturnValue; +} + +defaultproperties +{ + bAddToNavigationOctree=true + bCanCutCorners=true + bCheckForObstructions=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ReplicationInfo.uc b/exported/Engine/Classes/ReplicationInfo.uc new file mode 100755 index 00000000..7e3d8d6a --- /dev/null +++ b/exported/Engine/Classes/ReplicationInfo.uc @@ -0,0 +1,13 @@ +class ReplicationInfo extends Info + abstract + native(ReplicationInfo) + notplaceable + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + Components=none + RemoteRole=ENetRole.ROLE_SimulatedProxy + bAlwaysRelevant=true + s_bThrottleNetRelevancy=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ReverbVolume.uc b/exported/Engine/Classes/ReverbVolume.uc new file mode 100755 index 00000000..0483e19c --- /dev/null +++ b/exported/Engine/Classes/ReverbVolume.uc @@ -0,0 +1,137 @@ +class ReverbVolume extends Volume + native + placeable + dontsortcategories(ReverbVolume) + hidecategories(Navigation,Object,Movement,Display,Advanced,Attachment,Volume,Toggle); + +enum ReverbPreset +{ + REVERB_Default, // 0 + REVERB_Bathroom, // 1 + REVERB_StoneRoom, // 2 + REVERB_Auditorium, // 3 + REVERB_ConcertHall, // 4 + REVERB_Cave, // 5 + REVERB_Hallway, // 6 + REVERB_StoneCorridor, // 7 + REVERB_Alley, // 8 + REVERB_Forest, // 9 + REVERB_City, // 10 + REVERB_Mountains, // 11 + REVERB_Quarry, // 12 + REVERB_Plain, // 13 + REVERB_ParkingLot, // 14 + REVERB_SewerPipe, // 15 + REVERB_Underwater, // 16 + REVERB_SmallRoom, // 17 + REVERB_MediumRoom, // 18 + REVERB_LargeRoom, // 19 + REVERB_MediumHall, // 20 + REVERB_LargeHall, // 21 + REVERB_Plate, // 22 + REVERB_MAX // 23 +}; + +struct native ReverbSettings +{ + var() bool bApplyReverb; + var() ReverbVolume.ReverbPreset ReverbType; + var() float Volume; + var() float FadeTime; + + structdefaultproperties + { + bApplyReverb=true + ReverbType=ReverbPreset.REVERB_Default + Volume=0.5000000 + FadeTime=2.0000000 + } +}; + +struct InteriorSettings +{ + var bool bIsWorldInfo; + var() float ExteriorVolume; + var() float ExteriorTime; + var() float ExteriorLPF; + var() float ExteriorLPFTime; + var() float InteriorVolume; + var() float InteriorTime; + var() float InteriorLPF; + var() float InteriorLPFTime; + var() float InsulationDistanceMin; + var() float InsulationDistanceMax; + var() float InsulationTime; + + structdefaultproperties + { + bIsWorldInfo=false + ExteriorVolume=1.0000000 + ExteriorTime=0.5000000 + ExteriorLPF=1.0000000 + ExteriorLPFTime=0.5000000 + InteriorVolume=1.0000000 + InteriorTime=0.5000000 + InteriorLPF=1.0000000 + InteriorLPFTime=0.5000000 + InsulationDistanceMin=0.0000000 + InsulationDistanceMax=0.0000000 + InsulationTime=0.5000000 + } +}; + +var() float Priority; +var(Toggle) bool bEnabled; +var(AudioAltitude) bool m_bUseAudioAltitude; +var() ReverbSettings Settings; +var() InteriorSettings AmbientZoneSettings; +var noimport const transient ReverbVolume NextLowerPriorityVolume; +var() name AuxBusName; +var() float SendLevel; +var(AudioAltitude) float m_fAudioAltitudeCeiling; +var(AudioAltitude) float m_fAudioAltitudeFloor; + +replication +{ + // Pos:0x000 + if(bNetDirty) + bEnabled; +} + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + Other.UpdateReverbVolume(HitLocation, self); + //return; +} + +simulated event UnTouch(Actor Other) +{ + super(Actor).UnTouch(Other); + Other.UpdateReverbVolume(Other.Location); + //return; +} + +defaultproperties +{ + bEnabled=true + Settings=(bApplyReverb=true,ReverbType=ReverbPreset.REVERB_Default,Volume=0.5000000,FadeTime=2.0000000) + AmbientZoneSettings=(bIsWorldInfo=false,ExteriorVolume=1.0000000,ExteriorTime=0.5000000,ExteriorLPF=1.0000000,ExteriorLPFTime=0.5000000,InteriorVolume=1.0000000,InteriorTime=0.5000000,InteriorLPF=1.0000000,InteriorLPFTime=0.5000000,InsulationDistanceMin=0.0000000,InsulationDistanceMax=0.0000000,InsulationTime=0.5000000) + SendLevel=1.0000000 + BrushColor=(R=255,G=255,B=0,A=255) + bColored=true + // Reference: BrushComponent'Engine.Default__ReverbVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + bAcceptsLights=false + BlockZeroExtent=true + AlwaysLoadOnServer=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 + SupportedEvents[0]=Class'Engine.SeqEvent_Touch' +} \ No newline at end of file diff --git a/exported/Engine/Classes/ReverbVolumeToggleable.uc b/exported/Engine/Classes/ReverbVolumeToggleable.uc new file mode 100755 index 00000000..a4662f7d --- /dev/null +++ b/exported/Engine/Classes/ReverbVolumeToggleable.uc @@ -0,0 +1,47 @@ +class ReverbVolumeToggleable extends ReverbVolume + placeable + dontsortcategories(ReverbVolume) + hidecategories(Navigation,Object,Movement,Display,Advanced,Attachment,Volume); + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x46 + if(Action.InputLinks[0].bHasImpulse) + { + bEnabled = true; + } + else + { + // End:0x8C + if(Action.InputLinks[1].bHasImpulse) + { + bEnabled = false; + } + else + { + // End:0xDB + if(Action.InputLinks[2].bHasImpulse) + { + bEnabled = !bEnabled; + } + } + } + ForceNetRelevant(); + SetForcedInitialReplicatedProperty(BoolProperty'Engine.ReverbVolume.bEnabled', bEnabled == default.bEnabled); + //return; +} + +defaultproperties +{ + // Reference: BrushComponent'Engine.Default__ReverbVolumeToggleable.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__ReverbVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bStatic=false + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/RigidBodyBase.uc b/exported/Engine/Classes/RigidBodyBase.uc new file mode 100755 index 00000000..fbb762fc --- /dev/null +++ b/exported/Engine/Classes/RigidBodyBase.uc @@ -0,0 +1,6 @@ +class RigidBodyBase extends Actor + abstract + native + notplaceable + hidecategories(Navigation) + classgroup(Physics); diff --git a/exported/Engine/Classes/Route.uc b/exported/Engine/Classes/Route.uc new file mode 100755 index 00000000..a92910a3 --- /dev/null +++ b/exported/Engine/Classes/Route.uc @@ -0,0 +1,51 @@ +class Route extends Info + native + placeable + hidecategories(Navigation,Movement,Collision) + classgroup(Navigation) + implements(EditorLinkSelectionInterface); + +enum ERouteFillAction +{ + RFA_Overwrite, // 0 + RFA_Add, // 1 + RFA_Remove, // 2 + RFA_Clear, // 3 + RFA_MAX // 4 +}; + +enum ERouteDirection +{ + ERD_Forward, // 0 + ERD_Reverse, // 1 + ERD_MAX // 2 +}; + +enum ERouteType +{ + ERT_Linear, // 0 + ERT_Loop, // 1 + ERT_Circle, // 2 + ERT_MAX // 3 +}; + +var private native const noexport Pointer VfTable_IEditorLinkSelectionInterface; +var() Route.ERouteType RouteType; +var() array RouteList; +var() float FudgeFactor; +var() int RouteIndexOffset; + +// Export URoute::execResolveRouteIndex(FFrame&, void* const) +native final function int ResolveRouteIndex(int Idx, Route.ERouteDirection RouteDirection, out byte out_bComplete, out byte out_bReverse); + +// Export URoute::execMoveOntoRoutePath(FFrame&, void* const) +native final function int MoveOntoRoutePath(Pawn P, optional Route.ERouteDirection RouteDirection = 0, optional float DistFudgeFactor = 1.0000000); + +defaultproperties +{ + FudgeFactor=1.0000000 + Components[0]=none + Components[1]=none + Components[2]=none + bStatic=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/RouteRenderingComponent.uc b/exported/Engine/Classes/RouteRenderingComponent.uc new file mode 100755 index 00000000..ef82f44c --- /dev/null +++ b/exported/Engine/Classes/RouteRenderingComponent.uc @@ -0,0 +1,9 @@ +class RouteRenderingComponent extends PrimitiveComponent + native(AI) + editinlinenew + hidecategories(Object); + +defaultproperties +{ + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/SVehicle.uc b/exported/Engine/Classes/SVehicle.uc new file mode 100755 index 00000000..0e848979 --- /dev/null +++ b/exported/Engine/Classes/SVehicle.uc @@ -0,0 +1,663 @@ +class SVehicle extends Vehicle + abstract + native(Physics) + nativereplication + config(Game) + placeable + hidecategories(Navigation); + +struct native VehicleState +{ + var RigidBodyState RBState; + var byte ServerBrake; + var byte ServerGas; + var byte ServerSteering; + var byte ServerRise; + var bool bServerHandbrake; + var int ServerView; + + structdefaultproperties + { + RBState=(Position=(X=0.0000000,Y=0.0000000,Z=0.0000000),Quaternion=(X=0.0000000,Y=0.0000000,Z=0.0000000,W=0.0000000),LinVel=(X=0.0000000,Y=0.0000000,Z=0.0000000),AngVel=(X=0.0000000,Y=0.0000000,Z=0.0000000),bNewData=0) + ServerBrake=0 + ServerGas=0 + ServerSteering=0 + ServerRise=0 + bServerHandbrake=false + ServerView=0 + } +}; + +var() noclear const export editinline SVehicleSimBase SimObj; +var() export editinline array Wheels; +var() Vector COMOffset; +var() Vector InertiaTensorMultiplier; +var(UprightConstraint) bool bStayUpright; +var bool bUseSuspensionAxis; +var bool bUpdateWheelShapes; +var const bool bVehicleOnGround; +var const bool bVehicleOnWater; +var const bool bIsInverted; +var const bool bChassisTouchingGround; +var const bool bWasChassisTouchingGroundLastTick; +var bool bCanFlip; +var bool bFlipRight; +var bool bIsUprighting; +var bool bOutputHandbrake; +var bool bHoldingDownHandbrake; +var(UprightConstraint) float StayUprightRollResistAngle; +var(UprightConstraint) float StayUprightPitchResistAngle; +var(UprightConstraint) float StayUprightStiffness; +var(UprightConstraint) float StayUprightDamping; +var export editinline RB_StayUprightSetup StayUprightConstraintSetup; +var export editinline RB_ConstraintInstance StayUprightConstraintInstance; +var float HeavySuspensionShiftPercent; +var() float MaxSpeed; +var() float MaxAngularVelocity; +var const float TimeOffGround; +var(Uprighting) float UprightLiftStrength; +var(Uprighting) float UprightTorqueStrength; +var(Uprighting) float UprightTime; +var float UprightStartTime; +var(Sounds) const editconst export editinline AudioComponent EngineSound; +var(Sounds) const editconst export editinline AudioComponent SquealSound; +var(Sounds) SoundCue CollisionSound; +var(Sounds) SoundCue EnterVehicleSound; +var(Sounds) SoundCue ExitVehicleSound; +var(Sounds) float CollisionIntervalSecs; +var(Sounds) const float SquealThreshold; +var(Sounds) const float SquealLatThreshold; +var(Sounds) const float LatAngleVolumeMult; +var(Sounds) const float EngineStartOffsetSecs; +var(Sounds) const float EngineStopOffsetSecs; +var float LastCollisionSoundTime; +var float OutputBrake; +var float OutputGas; +var float OutputSteering; +var float OutputRise; +var float ForwardVel; +var int NumPoweredWheels; +var() Vector BaseOffset; +var() float CamDist; +var int DriverViewPitch; +var int DriverViewYaw; +var native const VehicleState VState; +var native const float AngErrorAccumulator; +var float RadialImpulseScaling; + +replication +{ + // Pos:0x000 + if(int(Physics) == int(10)) + MaxSpeed, VState; +} + +// Export USVehicle::execAddForce(FFrame&, void* const) +native function AddForce(Vector Force); + +// Export USVehicle::execAddImpulse(FFrame&, void* const) +native function AddImpulse(Vector Impulse); + +// Export USVehicle::execAddTorque(FFrame&, void* const) +native function AddTorque(Vector Torque); + +// Export USVehicle::execIsSleeping(FFrame&, void* const) +native function bool IsSleeping(); + +// Export USVehicle::execSetWheelCollision(FFrame&, void* const) +native final function SetWheelCollision(int WheelNum, bool bCollision); + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x3A + if(EngineSound != none) + { + EngineSound.bShouldRemainActiveIfDropped = true; + } + // End:0xA7 + if((CollisionSound != none) && CollisionIntervalSecs <= 0.0000000) + { + CollisionIntervalSecs = CollisionSound.GetCueDuration() / WorldInfo.TimeDilation; + } + //return; +} + +simulated event PostInitAnimTree(SkeletalMeshComponent SkelComp) +{ + local int WheelIndex; + local editinline SVehicleWheel Wheel; + + super(Pawn).PostInitAnimTree(SkelComp); + // End:0xDD + if(SkelComp == Mesh) + { + WheelIndex = 0; + J0x35: + + // End:0xDD [Loop If] + if(WheelIndex < Wheels.Length) + { + Wheel = Wheels[WheelIndex]; + Wheel.WheelControl = SkelControlWheel(Mesh.FindSkelControl(Wheel.SkelControlName)); + WheelIndex++; + // [Loop Continue] + goto J0x35; + } + } + //return; +} + +simulated event Destroyed() +{ + super.Destroyed(); + StopVehicleSounds(); + //return; +} + +simulated function TurnOff() +{ + super(Pawn).TurnOff(); + StopVehicleSounds(); + //return; +} + +simulated function StopVehicleSounds() +{ + // End:0x2F + if(EngineSound != none) + { + EngineSound.Stop(); + } + // End:0x5E + if(SquealSound != none) + { + SquealSound.Stop(); + } + //return; +} + +simulated function TakeRadiusDamage(Controller InstigatedBy, float BaseDamage, float DamageRadius, Class DamageType, float Momentum, Vector HurtOrigin, bool bFullDamage, Actor DamageCauser, optional float DamageFalloffExponent = 1.0000000) +{ + local Vector HitLocation, Dir, NewDir; + local float Dist, DamageScale; + local TraceHitInfo HitInfo; + + // End:0x1F + if(int(Role) < int(ROLE_Authority)) + { + return; + } + HitLocation = Location; + Dir = Location - HurtOrigin; + CheckHitInfo(HitInfo, Mesh, Dir, HitLocation); + NewDir = HitLocation - HurtOrigin; + Dist = VSize(NewDir); + // End:0xD0 + if(bFullDamage) + { + DamageScale = 1.0000000; + } + else + { + // End:0xEC + if(Dist > DamageRadius) + { + return; + } + else + { + DamageScale = FMax(0.0000000, 1.0000000 - (Dist / DamageRadius)); + DamageScale = DamageScale ** DamageFalloffExponent; + } + } + RadialImpulseScaling = DamageScale; + TakeDamage(int(BaseDamage * DamageScale), InstigatedBy, HitLocation, (DamageScale * Momentum) * Normal(Dir), DamageType, HitInfo, DamageCauser); + RadialImpulseScaling = 1.0000000; + // End:0x21F + if(Health > 0) + { + DriverRadiusDamage(BaseDamage, DamageRadius, InstigatedBy, DamageType, Momentum, HurtOrigin, DamageCauser); + } + //return; +} + +// Export USVehicle::execInitVehicleRagdoll(FFrame&, void* const) +native function InitVehicleRagdoll(SkeletalMesh RagdollMesh, PhysicsAsset RagdollPhysAsset, Vector ActorMove, bool bClearAnimTree); + +event AddVelocity(Vector NewVelocity, Vector HitLocation, Class DamageType, optional TraceHitInfo HitInfo) +{ + // End:0x16E + if(!IsZero(NewVelocity)) + { + NewVelocity = (((RadialImpulseScaling * MomentumMult) * DamageType.default.VehicleMomentumScaling) * DamageType.default.KDamageImpulse) * Normal(NewVelocity); + // End:0x16E + if(!bIgnoreForces && !IsZero(NewVelocity)) + { + // End:0x11E + if(Location.Z > WorldInfo.StallZ) + { + NewVelocity.Z = FMin(NewVelocity.Z, 0.0000000); + } + // End:0x13B + if(InGodMode()) + { + NewVelocity *= 0.2500000; + } + Mesh.AddImpulse(NewVelocity, HitLocation); + } + } + RadialImpulseScaling = 1.0000000; + //return; +} + +function bool Died(Controller Killer, Class DamageType, Vector HitLocation) +{ + // End:0x5C + if(super.Died(Killer, DamageType, HitLocation)) + { + bDriving = false; + AddVelocity(TearOffMomentum, HitLocation, DamageType); + return true; + } + return false; + //return ReturnValue; +} + +simulated function bool CalcCamera(float fDeltaTime, out Vector out_CamLoc, out Rotator out_CamRot, out float out_FOV) +{ + local Vector pos, HitLocation, HitNormal; + + GetActorEyesViewPoint(out_CamLoc, out_CamRot); + out_CamLoc += BaseOffset; + pos = out_CamLoc - (Vector(out_CamRot) * CamDist); + // End:0xBF + if(Trace(HitLocation, HitNormal, pos, out_CamLoc, false, vect(0.0000000, 0.0000000, 0.0000000)) != none) + { + out_CamLoc = HitLocation + (HitNormal * float(2)); + } + else + { + out_CamLoc = pos; + } + return true; + //return ReturnValue; +} + +simulated function name GetDefaultCameraMode(PlayerController RequestedBy) +{ + return 'Default'; + //return ReturnValue; +} + +function bool TryToDrive(Pawn P) +{ + // End:0x78 + if((bIsInverted && !bVehicleOnGround) && VSize(Velocity) <= 0.1000000) + { + // End:0x76 + if(bCanFlip) + { + bIsUprighting = true; + UprightStartTime = WorldInfo.TimeSeconds; + } + return false; + } + return super.TryToDrive(P); + //return ReturnValue; +} + +// Export USVehicle::execHasWheelsOnGround(FFrame&, void* const) +native simulated function bool HasWheelsOnGround(); + +simulated function StartEngineSound() +{ + // End:0x2E + if(EngineSound != none) + { + EngineSound.Play(); + } + ClearTimer('StartEngineSound'); + ClearTimer('StopEngineSound'); + //return; +} + +simulated function StartEngineSoundTimed() +{ + // End:0x41 + if(EngineStartOffsetSecs > 0.0000000) + { + ClearTimer('StopEngineSound'); + SetTimer(EngineStartOffsetSecs, false, 'StartEngineSound'); + } + else + { + StartEngineSound(); + } + //return; +} + +simulated function StopEngineSound() +{ + // End:0x2F + if(EngineSound != none) + { + EngineSound.Stop(); + } + ClearTimer('StartEngineSound'); + ClearTimer('StopEngineSound'); + //return; +} + +simulated function StopEngineSoundTimed() +{ + // End:0x41 + if(EngineStopOffsetSecs > 0.0000000) + { + ClearTimer('StartEngineSound'); + SetTimer(EngineStopOffsetSecs, false, 'StopEngineSound'); + } + else + { + StopEngineSound(); + } + //return; +} + +simulated function VehiclePlayEnterSound() +{ + // End:0x27 + if(EnterVehicleSound != none) + { + PlaySound(EnterVehicleSound); + } + StartEngineSoundTimed(); + //return; +} + +simulated function VehiclePlayExitSound() +{ + // End:0x27 + if(ExitVehicleSound != none) + { + PlaySound(ExitVehicleSound); + } + StopEngineSoundTimed(); + //return; +} + +simulated function DrivingStatusChanged() +{ + bUpdateWheelShapes = true; + // End:0x26 + if(bDriving) + { + VehiclePlayEnterSound(); + } + else + { + // End:0x3F + if(Health > 0) + { + VehiclePlayExitSound(); + } + } + //return; +} + +simulated event RigidBodyCollision(PrimitiveComponent HitComponent, PrimitiveComponent OtherComponent, const out CollisionImpactData RigidCollisionData, int ContactIndex) +{ + // End:0x88 + if((CollisionSound != none) && (WorldInfo.TimeSeconds - LastCollisionSoundTime) > CollisionIntervalSecs) + { + PlaySound(CollisionSound, true); + LastCollisionSoundTime = WorldInfo.TimeSeconds; + } + //return; +} + +simulated event SuspensionHeavyShift(float Delta) +{ + //return; +} + +function PostTeleport(Teleporter OutTeleporter) +{ + Mesh.SetRBPosition(Location); + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + local array DebugInfo; + local int I; + + super.DisplayDebug(HUD, out_YL, out_YPos); + GetSVehicleDebug(DebugInfo); + HUD.Canvas.SetDrawColor(0, 255, 0); + I = 0; + J0x7E: + + // End:0x14D [Loop If] + if(I < DebugInfo.Length) + { + HUD.Canvas.DrawText(" " @ DebugInfo[I]); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + I++; + // [Loop Continue] + goto J0x7E; + } + DisplayWheelsDebug(HUD, out_YL); + //return; +} + +simulated function DisplayWheelsDebug(HUD HUD, float YL) +{ + local int I, J; + local Vector WorldLoc, ScreenLoc, X, Y, Z, EndPoint, + ScreenEndPoint; + + local Color SaveColor; + local float LastForceValue, GraphScale, ForceValue; + local Vector ForceValueLoc; + + // End:0x11 + if(SimObj == none) + { + return; + } + GraphScale = 100.0000000; + SaveColor = HUD.Canvas.DrawColor; + I = 0; + J0x68: + + // End:0x15E6 [Loop If] + if(I < Wheels.Length) + { + GetAxes(Rotation, X, Y, Z); + WorldLoc = Location + (Wheels[I].WheelPosition >> Rotation); + ScreenLoc = HUD.Canvas.Project(WorldLoc); + // End:0x15D8 + if((((ScreenLoc.X >= float(0)) && ScreenLoc.X < HUD.Canvas.ClipX) && ScreenLoc.Y >= float(0)) && ScreenLoc.Y < HUD.Canvas.ClipY) + { + HUD.Canvas.DrawColor = MakeColor(255, 255, 0, 255); + HUD.Canvas.SetPos(ScreenLoc.X, ScreenLoc.Y); + HUD.Canvas.DrawText("Force " $ string(Wheels[I].ContactForce)); + HUD.Canvas.SetPos(ScreenLoc.X, ScreenLoc.Y - (float(1) * YL)); + HUD.Canvas.DrawText("SR " $ string(Wheels[I].LongSlipRatio)); + HUD.Canvas.SetPos(ScreenLoc.X, ScreenLoc.Y - (float(2) * YL)); + HUD.Canvas.DrawText(((("SA " $ string(Wheels[I].LatSlipAngle * 57.2957800)) $ " (") $ string(Wheels[I].LatSlipAngle)) $ ")"); + HUD.Canvas.SetPos(ScreenLoc.X, ScreenLoc.Y - (float(3) * YL)); + HUD.Canvas.DrawText("Torque " $ string(Wheels[I].MotorTorque)); + HUD.Canvas.SetPos(ScreenLoc.X, ScreenLoc.Y - (float(4) * YL)); + HUD.Canvas.DrawText("SpinVel " $ string(Wheels[I].SpinVel)); + HUD.Canvas.DrawColor = HUD.RedColor; + EndPoint = (WorldLoc + ((Wheels[I].LongImpulse * float(100)) * Wheels[I].LongDirection)) - (Wheels[I].WheelRadius * Z); + ScreenEndPoint = HUD.Canvas.Project(EndPoint); + DrawDebugLine(WorldLoc - (Wheels[I].WheelRadius * Z), EndPoint, 255, 0, 0); + HUD.Canvas.SetPos(ScreenEndPoint.X, ScreenEndPoint.Y); + HUD.Canvas.DrawText(string(Wheels[I].LongImpulse)); + HUD.Canvas.DrawColor = HUD.GreenColor; + EndPoint = (WorldLoc + ((Wheels[I].LatImpulse * float(100)) * Wheels[I].LatDirection)) - (Wheels[I].WheelRadius * Z); + ScreenEndPoint = HUD.Canvas.Project(EndPoint); + DrawDebugLine(WorldLoc - (Wheels[I].WheelRadius * Z), EndPoint, 0, 255, 0); + HUD.Canvas.SetPos(ScreenEndPoint.X, ScreenEndPoint.Y); + HUD.Canvas.DrawText(string(Wheels[I].LatImpulse)); + HUD.Canvas.SetPos(ScreenLoc.X, ScreenLoc.Y + YL); + HUD.Canvas.DrawText(string(Wheels[I].LatImpulse)); + HUD.Canvas.DrawColor = MakeColor(255, 255, 255, 255); + HUD.Draw2DLine(int(ScreenLoc.X), int(ScreenLoc.Y), int(ScreenLoc.X + GraphScale), int(ScreenLoc.Y), MakeColor(0, 0, 255, 255)); + HUD.Canvas.SetPos(ScreenLoc.X + GraphScale, ScreenLoc.Y); + HUD.Canvas.DrawText(string(3.1415930 * 0.5000000)); + HUD.Draw2DLine(int(ScreenLoc.X), int(ScreenLoc.Y), int(ScreenLoc.X), int(ScreenLoc.Y - GraphScale), MakeColor(0, 0, 255, 255)); + HUD.Canvas.SetPos(ScreenLoc.X, ScreenLoc.Y - GraphScale); + HUD.Canvas.DrawText(string(SimObj.WheelLatExtremumValue)); + LastForceValue = 0.0000000; + J = 0; + J0x102B: + + // End:0x11B7 [Loop If] + if(float(J) <= GraphScale) + { + ForceValue = HermiteEval(float(J) * ((3.1415930 * 0.5000000) / GraphScale)); + ForceValue = (ForceValue / SimObj.WheelLatExtremumValue) * GraphScale; + HUD.Draw2DLine(int(ScreenLoc.X + float(J - 1)), int(ScreenLoc.Y - LastForceValue), int(ScreenLoc.X + float(J)), int(ScreenLoc.Y - ForceValue), MakeColor(0, 255, 0, 255)); + LastForceValue = ForceValue; + J++; + // [Loop Continue] + goto J0x102B; + } + ForceValue = HermiteEval(Abs(Wheels[I].LatSlipAngle)); + ForceValueLoc.X = ScreenLoc.X + ((Abs(Wheels[I].LatSlipAngle) / (3.1415930 * 0.5000000)) * GraphScale); + ForceValueLoc.Y = ScreenLoc.Y - ((ForceValue / SimObj.WheelLatExtremumValue) * GraphScale); + HUD.Draw2DLine(int(ForceValueLoc.X - float(5)), int(ForceValueLoc.Y), int(ForceValueLoc.X + float(5)), int(ForceValueLoc.Y), MakeColor(255, 0, 0, 255)); + HUD.Draw2DLine(int(ForceValueLoc.X), int(ForceValueLoc.Y - float(5)), int(ForceValueLoc.X), int(ForceValueLoc.Y + float(5)), MakeColor(255, 0, 0, 255)); + HUD.Canvas.SetPos(ScreenLoc.X, ForceValueLoc.Y); + HUD.Canvas.DrawText(string(ForceValue)); + HUD.Canvas.SetPos(ForceValueLoc.X, ScreenLoc.Y + YL); + HUD.Canvas.DrawText(string(Wheels[I].LatSlipAngle)); + } + I++; + // [Loop Continue] + goto J0x68; + } + HUD.Canvas.DrawColor = SaveColor; + //return; +} + +simulated function float HermiteEval(float Slip) +{ + local float LatExtremumSlip, LatExtremumValue, LatAsymptoteSlip, LatAsymptoteValue, SlipSquared, SlipCubed, + C0, C1, C3; + + LatExtremumSlip = SimObj.WheelLatExtremumSlip; + LatExtremumValue = SimObj.WheelLatExtremumValue; + LatAsymptoteSlip = SimObj.WheelLatAsymptoteSlip; + LatAsymptoteValue = SimObj.WheelLatAsymptoteValue; + // End:0x186 + if(Slip < LatExtremumSlip) + { + Slip /= LatExtremumSlip; + SlipSquared = Slip * Slip; + SlipCubed = SlipSquared * Slip; + C3 = (-2.0000000 * SlipCubed) + (3.0000000 * SlipSquared); + C1 = (SlipCubed - (2.0000000 * SlipSquared)) + Slip; + return (C1 + C3) * LatExtremumValue; + } + else + { + // End:0x1AA + if(Slip > LatAsymptoteSlip) + { + return LatAsymptoteValue; + } + else + { + Slip /= (LatAsymptoteSlip - LatExtremumSlip); + Slip -= LatExtremumSlip; + SlipSquared = Slip * Slip; + SlipCubed = SlipSquared * Slip; + C3 = (-2.0000000 * SlipCubed) + (3.0000000 * SlipSquared); + C0 = ((2.0000000 * SlipCubed) - (3.0000000 * SlipSquared)) + 1.0000000; + return (C0 * LatExtremumValue) + (C3 * LatAsymptoteValue); + } + } + //return ReturnValue; +} + +simulated function GetSVehicleDebug(out array DebugInfo) +{ + DebugInfo[DebugInfo.Length] = "----Vehicle----: "; + DebugInfo[DebugInfo.Length] = ((("Speed: " $ string(VSize(Velocity))) $ " Unreal -- ") $ string(VSize(Velocity) * 0.0426125)) $ " MPH"; + // End:0xDA + if(Wheels.Length > 0) + { + DebugInfo[DebugInfo.Length] = "MotorTorque: " $ string(Wheels[0].MotorTorque); + } + DebugInfo[DebugInfo.Length] = "Throttle: " $ string(OutputGas); + DebugInfo[DebugInfo.Length] = "Brake: " $ string(OutputBrake); + //return; +} + +defaultproperties +{ + InertiaTensorMultiplier=(X=1.0000000,Y=1.0000000,Z=1.0000000) + bCanFlip=true + // Reference: RB_StayUprightSetup'Engine.Default__SVehicle.MyStayUprightSetup' + begin object name="MyStayUprightSetup" class=Engine.RB_StayUprightSetup + end object + StayUprightConstraintSetup=MyStayUprightSetup + // Reference: RB_ConstraintInstance'Engine.Default__SVehicle.MyStayUprightConstraintInstance' + begin object name="MyStayUprightConstraintInstance" class=Engine.RB_ConstraintInstance + end object + StayUprightConstraintInstance=MyStayUprightConstraintInstance + HeavySuspensionShiftPercent=0.5000000 + MaxSpeed=2500.0000000 + MaxAngularVelocity=75000.0000000 + UprightLiftStrength=225.0000000 + UprightTorqueStrength=50.0000000 + UprightTime=1.5000000 + SquealThreshold=250.0000000 + SquealLatThreshold=250.0000000 + LatAngleVolumeMult=1.0000000 + EngineStartOffsetSecs=2.0000000 + EngineStopOffsetSecs=1.0000000 + BaseOffset=(X=0.0000000,Y=0.0000000,Z=128.0000000) + CamDist=512.0000000 + RadialImpulseScaling=1.0000000 + // Reference: SkeletalMeshComponent'Engine.Default__SVehicle.SVehicleMesh' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SVehicleMesh' + begin object name="SVehicleMesh" class=Engine.SkeletalMeshComponent + bUseSingleBodyPhysics=1 + bForceDiscardRootMotion=true + ReplacementPrimitive=none + RBChannel=ERBCollisionChannel.RBCC_Vehicle + CollideActors=true + BlockActors=true + BlockZeroExtent=true + BlockNonZeroExtent=true + BlockRigidBody=true + bNotifyRigidBodyCollision=true + RBCollideWithChannels=(Default=true,Vehicle=true,GameplayPhysics=true,EffectPhysics=true,BlockingVolume=true) + ScriptRigidBodyCollisionThreshold=250.0000000 + end object + Mesh=SVehicleMesh + // Reference: CylinderComponent'Engine.Default__SVehicle.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Vehicle.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=SVehicleMesh + Physics=EPhysics.PHYS_RigidBody + TickGroup=ETickingGroup.TG_PostAsyncWork + bNetInitialRotation=true + bBlocksTeleport=true + bEdShouldSnap=true + CollisionComponent=SVehicleMesh +} \ No newline at end of file diff --git a/exported/Engine/Classes/SVehicleSimBase.uc b/exported/Engine/Classes/SVehicleSimBase.uc new file mode 100755 index 00000000..a17f18de --- /dev/null +++ b/exported/Engine/Classes/SVehicleSimBase.uc @@ -0,0 +1,32 @@ +class SVehicleSimBase extends ActorComponent + native(Physics); + +var() float WheelSuspensionStiffness; +var() float WheelSuspensionDamping; +var() float WheelSuspensionBias; +var() float WheelLongExtremumSlip; +var() float WheelLongExtremumValue; +var() float WheelLongAsymptoteSlip; +var() float WheelLongAsymptoteValue; +var() float WheelLatExtremumSlip; +var() float WheelLatExtremumValue; +var() float WheelLatAsymptoteSlip; +var() float WheelLatAsymptoteValue; +var() float WheelInertia; +var() bool bWheelSpeedOverride; +var() bool bClampedFrictionModel; +var() bool bAutoDrive; +var() float AutoDriveSteer; + +defaultproperties +{ + WheelLongExtremumSlip=0.1000000 + WheelLongExtremumValue=1.0000000 + WheelLongAsymptoteSlip=2.0000000 + WheelLongAsymptoteValue=0.6000000 + WheelLatExtremumSlip=0.3500000 + WheelLatExtremumValue=0.8500000 + WheelLatAsymptoteSlip=1.4000000 + WheelLatAsymptoteValue=0.7000000 + WheelInertia=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SVehicleSimCar.uc b/exported/Engine/Classes/SVehicleSimCar.uc new file mode 100755 index 00000000..e755f348 --- /dev/null +++ b/exported/Engine/Classes/SVehicleSimCar.uc @@ -0,0 +1,18 @@ +class SVehicleSimCar extends SVehicleSimBase + native(Physics); + +var() float ChassisTorqueScale; +var() InterpCurveFloat MaxSteerAngleCurve; +var() float SteerSpeed; +var() float ReverseThrottle; +var() float EngineBrakeFactor; +var() float MaxBrakeTorque; +var() float StopThreshold; +var bool bIsDriving; +var float ActualSteering; +var float TimeSinceThrottle; + +defaultproperties +{ + ReverseThrottle=-1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SVehicleSimTank.uc b/exported/Engine/Classes/SVehicleSimTank.uc new file mode 100755 index 00000000..a26613fa --- /dev/null +++ b/exported/Engine/Classes/SVehicleSimTank.uc @@ -0,0 +1,24 @@ +class SVehicleSimTank extends SVehicleSimCar + native(Physics); + +var float LeftTrackVel; +var float RightTrackVel; +var float LeftTrackTorque; +var float RightTrackTorque; +var() float MaxEngineTorque; +var() float EngineDamping; +var() float InsideTrackTorqueFactor; +var() float SteeringLatStiffnessFactor; +var() float TurnInPlaceThrottle; +var() float TurnMaxGripReduction; +var() float TurnGripScaleRate; +var() bool bTurnInPlaceOnSteer; + +defaultproperties +{ + MaxEngineTorque=500.0000000 + TurnMaxGripReduction=0.9700000 + TurnGripScaleRate=1.0000000 + bTurnInPlaceOnSteer=true + bWheelSpeedOverride=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SVehicleWheel.uc b/exported/Engine/Classes/SVehicleWheel.uc new file mode 100755 index 00000000..6aa73396 --- /dev/null +++ b/exported/Engine/Classes/SVehicleWheel.uc @@ -0,0 +1,69 @@ +class SVehicleWheel extends Component + native(Physics); + +enum EWheelSide +{ + SIDE_None, // 0 + SIDE_Left, // 1 + SIDE_Right, // 2 + SIDE_MAX // 3 +}; + +var() float Steer; +var() float MotorTorque; +var() float BrakeTorque; +var() float ChassisTorque; +var() bool bPoweredWheel; +var() bool bHoverWheel; +var() bool bCollidesVehicles; +var() bool bCollidesPawns; +var bool bIsSquealing; +var bool bWheelOnGround; +var() float SteerFactor; +var() name SkelControlName; +var SkelControlWheel WheelControl; +var() name BoneName; +var() Vector BoneOffset; +var() float WheelRadius; +var() float SuspensionTravel; +var() float SuspensionSpeed; +var() ParticleSystem WheelParticleSystem; +var() SVehicleWheel.EWheelSide Side; +var() float LongSlipFactor; +var() float LatSlipFactor; +var() float HandbrakeLongSlipFactor; +var() float HandbrakeLatSlipFactor; +var() float ParkedSlipFactor; +var Vector WheelPosition; +var float SpinVel; +var float LongSlipRatio; +var float LatSlipAngle; +var Vector ContactNormal; +var Vector LongDirection; +var Vector LatDirection; +var float ContactForce; +var float LongImpulse; +var float LatImpulse; +var float DesiredSuspensionPosition; +var float SuspensionPosition; +var float CurrentRotation; +var const transient Pointer WheelShape; +var const transient int WheelMaterialIndex; +var Class WheelPSCClass; +var export editinline ParticleSystemComponent WheelParticleComp; +var name SlipParticleParamName; + +defaultproperties +{ + bCollidesVehicles=true + WheelRadius=35.0000000 + SuspensionTravel=30.0000000 + SuspensionSpeed=50.0000000 + LongSlipFactor=4000.0000000 + LatSlipFactor=20000.0000000 + HandbrakeLongSlipFactor=4000.0000000 + HandbrakeLatSlipFactor=20000.0000000 + ParkedSlipFactor=20000.0000000 + WheelPSCClass=Class'Engine.ParticleSystemComponent' + SlipParticleParamName="WheelSlip" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SaveGameSummary.uc b/exported/Engine/Classes/SaveGameSummary.uc new file mode 100755 index 00000000..bc558f2e --- /dev/null +++ b/exported/Engine/Classes/SaveGameSummary.uc @@ -0,0 +1,5 @@ +class SaveGameSummary extends Object + native; + +var name BaseLevel; +var string Description; diff --git a/exported/Engine/Classes/SavedMove.uc b/exported/Engine/Classes/SavedMove.uc new file mode 100755 index 00000000..6f38fda9 --- /dev/null +++ b/exported/Engine/Classes/SavedMove.uc @@ -0,0 +1,322 @@ +class SavedMove extends Object + native; + +var SavedMove NextMove; +var float TimeStamp; +var float Delta; +var bool bRun; +var bool bDuck; +var bool bPressedJump; +var bool bDoubleJump; +var bool bPreciseDestination; +var bool bForceRMVelocity; +var bool bForceMaxAccel; +var bool bRootMotionFromInterpCurve; +var Actor.EDoubleClickDir DoubleClickMove; +var Actor.EPhysics SavedPhysics; +var SkeletalMeshComponent.ERootMotionMode RootMotionMode; +var Vector StartLocation; +var Vector StartRelativeLocation; +var Vector StartVelocity; +var Vector StartFloor; +var Vector SavedLocation; +var Vector SavedVelocity; +var Vector SavedRelativeLocation; +var Vector RMVelocity; +var Vector Acceleration; +var Rotator Rotation; +var Actor StartBase; +var Actor EndBase; +var float CustomTimeDilation; +var float AccelDotThreshold; +var float RootMotionInterpCurrentTime; +var Vector RootMotionInterpCurveLastValue; + +function Clear() +{ + TimeStamp = 0.0000000; + Delta = 0.0000000; + DoubleClickMove = 0; + Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + StartVelocity = vect(0.0000000, 0.0000000, 0.0000000); + bRun = false; + bDuck = false; + bPressedJump = false; + bDoubleJump = false; + bPreciseDestination = false; + bForceRMVelocity = false; + CustomTimeDilation = 1.0000000; + //return; +} + +function PostUpdate(PlayerController P) +{ + bDoubleJump = P.bDoubleJump || bDoubleJump; + // End:0x1E3 + if(P.Pawn != none) + { + RMVelocity = P.Pawn.RMVelocity; + SavedLocation = P.Pawn.Location; + SavedVelocity = P.Pawn.Velocity; + EndBase = P.Pawn.Base; + // End:0x1E3 + if((EndBase != none) && !EndBase.bWorldGeometry) + { + SavedRelativeLocation = P.Pawn.Location - EndBase.Location; + } + } + Rotation = P.Rotation; + //return; +} + +function bool IsImportantMove(Vector CompareAccel) +{ + local Vector AccelNorm; + + // End:0x60 + if((bPressedJump || bDoubleJump) || ((int(DoubleClickMove) != int(0)) && int(DoubleClickMove) != int(5)) && int(DoubleClickMove) != int(6)) + { + return true; + } + // End:0x6F + if(bRootMotionFromInterpCurve) + { + return true; + } + AccelNorm = Normal(Acceleration); + return (CompareAccel != AccelNorm) && (CompareAccel Dot AccelNorm) < AccelDotThreshold; + //return ReturnValue; +} + +function Vector GetStartLocation() +{ + // End:0x5F + if((StartBase != none) && !StartBase.bWorldGeometry) + { + return StartBase.Location + StartRelativeLocation; + } + return StartLocation; + //return ReturnValue; +} + +function SetInitialPosition(Pawn P) +{ + SavedPhysics = P.Physics; + StartLocation = P.Location; + StartVelocity = P.Velocity; + StartBase = P.Base; + StartFloor = P.Floor; + CustomTimeDilation = P.CustomTimeDilation; + // End:0x16D + if((StartBase != none) && !StartBase.bWorldGeometry) + { + StartRelativeLocation = P.Location - StartBase.Location; + } + bRootMotionFromInterpCurve = P.bRootMotionFromInterpCurve; + // End:0x231 + if(bRootMotionFromInterpCurve) + { + RootMotionInterpCurrentTime = P.RootMotionInterpCurrentTime; + RootMotionInterpCurveLastValue = P.RootMotionInterpCurveLastValue; + RootMotionMode = P.Mesh.RootMotionMode; + } + //return; +} + +function bool CanCombineWith(SavedMove NewMove, Pawn inPawn, float MaxDelta) +{ + // End:0x11 + if(inPawn == none) + { + return false; + } + // End:0x20 + if(bRootMotionFromInterpCurve) + { + return false; + } + // End:0x6A + if((inPawn.Base != none) && inPawn.bHardAttach) + { + return false; + } + // End:0x2F1 + if(NewMove.Acceleration == vect(0.0000000, 0.0000000, 0.0000000)) + { + return ((((((((((((((Acceleration == vect(0.0000000, 0.0000000, 0.0000000)) && StartVelocity == vect(0.0000000, 0.0000000, 0.0000000)) && NewMove.StartVelocity == vect(0.0000000, 0.0000000, 0.0000000)) && int(SavedPhysics) == int(inPawn.Physics)) && !bPressedJump) && !NewMove.bPressedJump) && bRun == NewMove.bRun) && bDuck == NewMove.bDuck) && bPreciseDestination == NewMove.bPreciseDestination) && bDoubleJump == NewMove.bDoubleJump) && (int(DoubleClickMove) == int(0)) || int(DoubleClickMove) == int(5)) && int(NewMove.DoubleClickMove) == int(DoubleClickMove)) && !bForceRMVelocity) && !NewMove.bForceRMVelocity) && CustomTimeDilation == NewMove.CustomTimeDilation; + } + else + { + return ((((((((((((((inPawn != none) && (NewMove.Delta + Delta) < MaxDelta) && int(SavedPhysics) == int(inPawn.Physics)) && !bPressedJump) && !NewMove.bPressedJump) && bRun == NewMove.bRun) && bDuck == NewMove.bDuck) && bDoubleJump == NewMove.bDoubleJump) && bPreciseDestination == NewMove.bPreciseDestination) && (int(DoubleClickMove) == int(0)) || int(DoubleClickMove) == int(5)) && int(NewMove.DoubleClickMove) == int(DoubleClickMove)) && (Normal(Acceleration) Dot Normal(NewMove.Acceleration)) > 0.9900000) && !bForceRMVelocity) && !NewMove.bForceRMVelocity) && CustomTimeDilation == NewMove.CustomTimeDilation; + } + //return ReturnValue; +} + +function SetMoveFor(PlayerController P, float DeltaTime, Vector newAccel, Actor.EDoubleClickDir InDoubleClick) +{ + Delta = DeltaTime; + // End:0x48 + if(VSize(newAccel) > float(26214)) + { + newAccel = float(26214) * Normal(newAccel); + } + // End:0x94 + if(P.Pawn != none) + { + SetInitialPosition(P.Pawn); + } + Acceleration = newAccel; + DoubleClickMove = InDoubleClick; + bRun = int(P.bRun) > int(0); + bDuck = int(P.bDuck) > int(0); + bPressedJump = P.bPressedJump; + bDoubleJump = P.bDoubleJump; + bPreciseDestination = P.bPreciseDestination; + bForceRMVelocity = P.bPreciseDestination || (((P.Pawn != none) && P.Pawn.Mesh != none) && !P.Pawn.bRootMotionFromInterpCurve) && (int(P.Pawn.Mesh.RootMotionMode) == int(3)) || int(P.Pawn.Mesh.RootMotionMode) == int(1); + bForceMaxAccel = (P.Pawn != none) && P.Pawn.bForceMaxAccel; + TimeStamp = P.WorldInfo.TimeSeconds; + //return; +} + +function PrepMoveFor(Pawn P) +{ + // End:0x146 + if(P != none) + { + P.bForceRMVelocity = bForceRMVelocity; + P.bForceMaxAccel = bForceMaxAccel; + P.bRootMotionFromInterpCurve = bRootMotionFromInterpCurve; + // End:0x146 + if(P.bRootMotionFromInterpCurve) + { + P.Mesh.RootMotionMode = RootMotionMode; + P.RootMotionInterpCurveLastValue = RootMotionInterpCurveLastValue; + P.SetRootMotionInterpCurrentTime(RootMotionInterpCurrentTime, Delta, true); + } + } + //return; +} + +function ResetMoveFor(Pawn P) +{ + // End:0x125 + if(P != none) + { + SavedLocation = P.Location; + SavedVelocity = P.Velocity; + EndBase = P.Base; + // End:0x104 + if((EndBase != none) && !EndBase.bWorldGeometry) + { + SavedRelativeLocation = P.Location - EndBase.Location; + } + P.bForceRMVelocity = false; + } + //return; +} + +function byte CompressedFlags() +{ + local byte Result; + + Result = DoubleClickMove; + // End:0x2D + if(bRun) + { + Result += 8; + } + // End:0x47 + if(bDuck) + { + Result += 16; + } + // End:0x61 + if(bPressedJump) + { + Result += 32; + } + // End:0x7B + if(bDoubleJump) + { + Result += 64; + } + // End:0x95 + if(bPreciseDestination) + { + Result += 128; + } + return Result; + //return ReturnValue; +} + +static function Actor.EDoubleClickDir SetFlags(byte Flags, PlayerController PC) +{ + // End:0x3B + if((int(Flags) & int(8)) != 0) + { + PC.bRun = 1; + } + else + { + PC.bRun = 0; + } + // End:0x97 + if((int(Flags) & int(16)) != 0) + { + PC.bDuck = 1; + } + else + { + PC.bDuck = 0; + } + PC.bPreciseDestination = (int(Flags) & int(128)) != 0; + PC.bDoubleJump = (int(Flags) & int(64)) != 0; + PC.bPressedJump = (int(Flags) & int(32)) != 0; + switch(int(Flags) & int(7)) + { + // End:0x179 + case 0: + return 0; + // End:0x1A7 + break; + // End:0x183 + case 1: + return 1; + // End:0x1A7 + break; + // End:0x18E + case 2: + return 2; + // End:0x1A7 + break; + // End:0x199 + case 3: + return 3; + // End:0x1A7 + break; + // End:0x1A4 + case 4: + return 4; + // End:0x1A7 + break; + // End:0xFFFF + default: + break; + } + return 0; + //return ReturnValue; +} + +function string GetDebugString() +{ + local string Str; + + Str = (((((((((((((((((((((((((((((string(self) @ "Delta:'") $ string(Delta)) $ "'") @ "SavedPhysics:'") $ string(SavedPhysics)) $ "'") @ "StartLocation:'") $ string(StartLocation)) $ "'") @ "StartVelocity:'") $ string(StartVelocity)) $ "'") @ "SavedLocation:'") $ string(SavedLocation)) $ "'") @ "SavedVelocity:'") $ string(SavedVelocity)) $ "'") @ "RMVelocity:'") $ string(RMVelocity)) $ "'") @ "Acceleration:'") $ string(Acceleration)) $ "'") @ "bRootMotionFromInterpCurve:'") $ string(bRootMotionFromInterpCurve)) $ "'") @ "RootMotionInterpCurrentTime:'") $ string(RootMotionInterpCurrentTime)) $ "'"; + return Str; + //return ReturnValue; +} + +defaultproperties +{ + AccelDotThreshold=0.9000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Scene.uc b/exported/Engine/Classes/Scene.uc new file mode 100755 index 00000000..44ba49b3 --- /dev/null +++ b/exported/Engine/Classes/Scene.uc @@ -0,0 +1,24 @@ +class Scene extends Object + native(Scene); + +const SDPG_NumBits = 3; + +enum ESceneDepthPriorityGroup +{ + SDPG_UnrealEdBackground, // 0 + SDPG_EmissiveSkybox, // 1 + SDPG_World, // 2 + SDPG_Middleground, // 3 + SDPG_Foreground, // 4 + SDPG_UnrealEdForeground, // 5 + SDPG_PostProcess, // 6 + SDPG_MAX // 7 +}; + +enum EDetailMode +{ + DM_Low, // 0 + DM_Medium, // 1 + DM_High, // 2 + DM_MAX // 3 +}; diff --git a/exported/Engine/Classes/SceneCapture2DActor.uc b/exported/Engine/Classes/SceneCapture2DActor.uc new file mode 100755 index 00000000..d751b7ab --- /dev/null +++ b/exported/Engine/Classes/SceneCapture2DActor.uc @@ -0,0 +1,27 @@ +class SceneCapture2DActor extends SceneCaptureActor + native + placeable + hidecategories(Navigation); + +var const export editinline DrawFrustumComponent DrawFrustum; + +defaultproperties +{ + // Reference: DrawFrustumComponent'Engine.Default__SceneCapture2DActor.DrawFrust0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawFrust0' + begin object name="DrawFrust0" class=Engine.DrawFrustumComponent + FrustumColor=(R=255,G=255,B=255,A=255) + ReplacementPrimitive=none + end object + DrawFrustum=DrawFrust0 + // Reference: SceneCapture2DComponent'Engine.Default__SceneCapture2DActor.SceneCapture2DComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SceneCapture2DComponent0' + begin object name="SceneCapture2DComponent0" class=Engine.SceneCapture2DComponent + end object + SceneCapture=SceneCapture2DComponent0 + Components[0]=SceneCapture2DComponent0 + Components[1]=none + Components[2]=DrawFrust0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SceneCapture2DComponent.uc b/exported/Engine/Classes/SceneCapture2DComponent.uc new file mode 100755 index 00000000..7200234f --- /dev/null +++ b/exported/Engine/Classes/SceneCapture2DComponent.uc @@ -0,0 +1,31 @@ +class SceneCapture2DComponent extends SceneCaptureComponent + native + hidecategories(Object); + +var(Capture) const TextureRenderTarget2D TextureTarget; +var(Capture) const float FieldOfView; +var(Capture) const float NearPlane; +var(Capture) const float FarPlane; +var bool bUpdateMatrices; +var const transient Matrix ViewMatrix; +var const transient Matrix ProjMatrix; +var const transient Matrix ViewMatrix_RT; +var const transient Matrix ProjMatrix_RT; + +// Export USceneCapture2DComponent::execSetCaptureParameters(FFrame&, void* const) +native final function SetCaptureParameters(optional TextureRenderTarget2D NewTextureTarget = TextureTarget, optional float NewFOV = FieldOfView, optional float NewNearPlane = NearPlane, optional float NewFarPlane = FarPlane); + +// Export USceneCapture2DComponent::execSetView(FFrame&, void* const) +native final function SetView(Vector NewLocation, Rotator NewRotation); + +defaultproperties +{ + FieldOfView=80.0000000 + NearPlane=20.0000000 + FarPlane=500.0000000 + bUpdateMatrices=true + ViewMatrix=(XPlane=(W=0.0000000,X=1.0000000,Y=0.0000000,Z=0.0000000),YPlane=(W=0.0000000,X=0.0000000,Y=1.0000000,Z=0.0000000),ZPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=1.0000000),WPlane=(W=1.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000)) + ProjMatrix=(XPlane=(W=0.0000000,X=1.0000000,Y=0.0000000,Z=0.0000000),YPlane=(W=0.0000000,X=0.0000000,Y=1.0000000,Z=0.0000000),ZPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=1.0000000),WPlane=(W=1.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000)) + ViewMatrix_RT=(XPlane=(W=0.0000000,X=1.0000000,Y=0.0000000,Z=0.0000000),YPlane=(W=0.0000000,X=0.0000000,Y=1.0000000,Z=0.0000000),ZPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=1.0000000),WPlane=(W=1.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000)) + ProjMatrix_RT=(XPlane=(W=0.0000000,X=1.0000000,Y=0.0000000,Z=0.0000000),YPlane=(W=0.0000000,X=0.0000000,Y=1.0000000,Z=0.0000000),ZPlane=(W=0.0000000,X=0.0000000,Y=0.0000000,Z=1.0000000),WPlane=(W=1.0000000,X=0.0000000,Y=0.0000000,Z=0.0000000)) +} \ No newline at end of file diff --git a/exported/Engine/Classes/SceneCapture2DHitMaskComponent.uc b/exported/Engine/Classes/SceneCapture2DHitMaskComponent.uc new file mode 100755 index 00000000..1d072eaf --- /dev/null +++ b/exported/Engine/Classes/SceneCapture2DHitMaskComponent.uc @@ -0,0 +1,32 @@ +class SceneCapture2DHitMaskComponent extends SceneCaptureComponent + native + hidecategories(Object); + +var const transient TextureRenderTarget2D TextureTarget; +var const export editinline transient SkeletalMeshComponent SkeletalMeshComp; +var int MaterialIndex; +var int ForceLOD; +var int HitMaskCullDistance; +var float FadingStartTimeSinceHit; +var float FadingPercentage; +var float FadingDurationTime; +var float FadingIntervalTime; + +// Export USceneCapture2DHitMaskComponent::execSetCaptureTargetTexture(FFrame&, void* const) +native final function SetCaptureTargetTexture(const TextureRenderTarget2D InTextureTarget); + +// Export USceneCapture2DHitMaskComponent::execSetCaptureParameters(FFrame&, void* const) +native final function SetCaptureParameters(const Vector InMaskPosition, const float InMaskRadius, const Vector InStartupPosition, const bool bOnlyWhenFacing); + +// Export USceneCapture2DHitMaskComponent::execSetFadingStartTimeSinceHit(FFrame&, void* const) +native final function SetFadingStartTimeSinceHit(const float InFadingStartTimeSinceHit); + +defaultproperties +{ + ForceLOD=-1 + HitMaskCullDistance=100 + FadingStartTimeSinceHit=10.0000000 + FadingPercentage=0.9900000 + FadingDurationTime=50.0000000 + FadingIntervalTime=3.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SceneCaptureActor.uc b/exported/Engine/Classes/SceneCaptureActor.uc new file mode 100755 index 00000000..c3f58c48 --- /dev/null +++ b/exported/Engine/Classes/SceneCaptureActor.uc @@ -0,0 +1,48 @@ +class SceneCaptureActor extends Actor + abstract + native + notplaceable + hidecategories(Navigation); + +var() const export editinline SceneCaptureComponent SceneCapture; + +simulated function OnToggle(SeqAct_Toggle Action) +{ + local bool bEnable; + + // End:0x11 + if(SceneCapture == none) + { + return; + } + // End:0x57 + if(Action.InputLinks[0].bHasImpulse) + { + bEnable = true; + } + else + { + // End:0x9D + if(Action.InputLinks[1].bHasImpulse) + { + bEnable = false; + } + else + { + // End:0x101 + if(Action.InputLinks[2].bHasImpulse) + { + bEnable = !SceneCapture.bEnabled; + } + } + } + SceneCapture.SetEnabled(bEnable); + //return; +} + +defaultproperties +{ + Components[0]=none + RemoteRole=ENetRole.ROLE_SimulatedProxy + bNoDelete=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SceneCaptureComponent.uc b/exported/Engine/Classes/SceneCaptureComponent.uc new file mode 100755 index 00000000..51a5f426 --- /dev/null +++ b/exported/Engine/Classes/SceneCaptureComponent.uc @@ -0,0 +1,47 @@ +class SceneCaptureComponent extends ActorComponent + abstract + native + hidecategories(Object); + +enum ESceneCaptureViewMode +{ + SceneCapView_Lit, // 0 + SceneCapView_Unlit, // 1 + SceneCapView_LitNoShadows, // 2 + SceneCapView_Wire, // 3 + SceneCapView_MAX // 4 +}; + +var(Capture) bool bEnabled; +var(Capture) bool bEnablePostProcess; +var(Capture) bool bEnableFog; +var(Capture) bool bUseMainScenePostProcessSettings; +var(Capture) bool bSkipUpdateIfTextureUsersOccluded; +var(Capture) bool bSkipUpdateIfOwnerOccluded; +var(Capture) bool bSkipRenderingDepthPrepass; +var(Capture) Color ClearColor; +var(Capture) SceneCaptureComponent.ESceneCaptureViewMode ViewMode; +var(Capture) int SceneLOD; +var(Capture) const float FrameRate; +var(Capture) PostProcessChain PostProcess; +var(Capture) float MaxUpdateDist; +var(Capture) float MaxViewDistanceOverride; +var(Capture) float MaxStreamingUpdateDist; +var private native const transient Pointer CaptureInfo; +var private native const transient Pointer ViewState; +var noimport duplicatetransient native const transient array PostProcessProxies; + +// Export USceneCaptureComponent::execSetFrameRate(FFrame&, void* const) +native final function SetFrameRate(float NewFrameRate); + +// Export USceneCaptureComponent::execSetEnabled(FFrame&, void* const) +native final simulated function SetEnabled(bool bEnable); + +defaultproperties +{ + bEnabled=true + bSkipRenderingDepthPrepass=true + ClearColor=(R=0,G=0,B=0,A=255) + ViewMode=ESceneCaptureViewMode.SceneCapView_LitNoShadows + FrameRate=30.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SceneCaptureCubeMapActor.uc b/exported/Engine/Classes/SceneCaptureCubeMapActor.uc new file mode 100755 index 00000000..3555bf48 --- /dev/null +++ b/exported/Engine/Classes/SceneCaptureCubeMapActor.uc @@ -0,0 +1,31 @@ +class SceneCaptureCubeMapActor extends SceneCaptureActor + native + placeable + hidecategories(Navigation); + +var const export editinline StaticMeshComponent StaticMesh; +var transient MaterialInstanceConstant CubeMaterialInst; + +defaultproperties +{ + // Reference: StaticMeshComponent'Engine.Default__SceneCaptureCubeMapActor.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + begin object name="StaticMeshComponent0" class=Engine.StaticMeshComponent + ReplacementPrimitive=none + HiddenGame=true + CastShadow=false + bAcceptsLights=false + CollideActors=false + Scale3D=(X=0.6000000,Y=0.6000000,Z=0.6000000) + end object + StaticMesh=StaticMeshComponent0 + // Reference: SceneCaptureCubeMapComponent'Engine.Default__SceneCaptureCubeMapActor.SceneCaptureCubeMapComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SceneCaptureCubeMapComponent0' + begin object name="SceneCaptureCubeMapComponent0" class=Engine.SceneCaptureCubeMapComponent + end object + SceneCapture=SceneCaptureCubeMapComponent0 + Components[0]=SceneCaptureCubeMapComponent0 + Components[1]=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SceneCaptureCubeMapComponent.uc b/exported/Engine/Classes/SceneCaptureCubeMapComponent.uc new file mode 100755 index 00000000..ff3a8da8 --- /dev/null +++ b/exported/Engine/Classes/SceneCaptureCubeMapComponent.uc @@ -0,0 +1,14 @@ +class SceneCaptureCubeMapComponent extends SceneCaptureComponent + native + hidecategories(Object); + +var(Capture) TextureRenderTargetCube TextureTarget; +var(Capture) float NearPlane; +var(Capture) float FarPlane; +var private native const transient Vector WorldLocation; + +defaultproperties +{ + NearPlane=20.0000000 + FarPlane=500.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SceneCapturePortalActor.uc b/exported/Engine/Classes/SceneCapturePortalActor.uc new file mode 100755 index 00000000..4d0b1561 --- /dev/null +++ b/exported/Engine/Classes/SceneCapturePortalActor.uc @@ -0,0 +1,30 @@ +class SceneCapturePortalActor extends SceneCaptureReflectActor + native + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: StaticMeshComponent'Engine.Default__SceneCapturePortalActor.StaticMeshComponent2' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent2' + begin object name="StaticMeshComponent2" class=Engine.StaticMeshComponent + ReplacementPrimitive=none + HiddenGame=true + CastShadow=false + CollideActors=false + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false + end object + StaticMesh=StaticMeshComponent2 + // Reference: SceneCapturePortalComponent'Engine.Default__SceneCapturePortalActor.SceneCapturePortalComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SceneCapturePortalComponent0' + begin object name="SceneCapturePortalComponent0" class=Engine.SceneCapturePortalComponent + end object + SceneCapture=SceneCapturePortalComponent0 + Components[0]=SceneCapturePortalComponent0 + Components[1]=none + Components[2]=StaticMeshComponent2 + Rotation=(Pitch=0,Yaw=0,Roll=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/SceneCapturePortalComponent.uc b/exported/Engine/Classes/SceneCapturePortalComponent.uc new file mode 100755 index 00000000..1f44e43a --- /dev/null +++ b/exported/Engine/Classes/SceneCapturePortalComponent.uc @@ -0,0 +1,17 @@ +class SceneCapturePortalComponent extends SceneCaptureComponent + native + hidecategories(Object); + +var(Capture) const TextureRenderTarget2D TextureTarget; +var(Capture) const float ScaleFOV; +var(Capture) const Actor ViewDestination; + +// Export USceneCapturePortalComponent::execSetCaptureParameters(FFrame&, void* const) +native final function SetCaptureParameters(optional TextureRenderTarget2D NewTextureTarget = TextureTarget, optional float NewScaleFOV = ScaleFOV, optional Actor NewViewDest = ViewDestination); + +defaultproperties +{ + ScaleFOV=1.0000000 + bSkipUpdateIfOwnerOccluded=true + FrameRate=1000.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SceneCaptureReflectActor.uc b/exported/Engine/Classes/SceneCaptureReflectActor.uc new file mode 100755 index 00000000..69df700a --- /dev/null +++ b/exported/Engine/Classes/SceneCaptureReflectActor.uc @@ -0,0 +1,34 @@ +class SceneCaptureReflectActor extends SceneCaptureActor + native + placeable + hidecategories(Navigation); + +var() const export editinline StaticMeshComponent StaticMesh; +var transient MaterialInstanceConstant ReflectMaterialInst; + +defaultproperties +{ + // Reference: StaticMeshComponent'Engine.Default__SceneCaptureReflectActor.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + begin object name="StaticMeshComponent0" class=Engine.StaticMeshComponent + ReplacementPrimitive=none + HiddenGame=true + CastShadow=false + bAcceptsLights=false + CollideActors=false + Scale3D=(X=4.0000000,Y=4.0000000,Z=4.0000000) + end object + StaticMesh=StaticMeshComponent0 + // Reference: SceneCaptureReflectComponent'Engine.Default__SceneCaptureReflectActor.SceneCaptureReflectComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SceneCaptureReflectComponent0' + begin object name="SceneCaptureReflectComponent0" class=Engine.SceneCaptureReflectComponent + bSkipUpdateIfTextureUsersOccluded=true + end object + SceneCapture=SceneCaptureReflectComponent0 + Components[0]=none + Components[1]=SceneCaptureReflectComponent0 + Components[2]=StaticMeshComponent0 + Rotation=(Pitch=16384,Yaw=0,Roll=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/SceneCaptureReflectComponent.uc b/exported/Engine/Classes/SceneCaptureReflectComponent.uc new file mode 100755 index 00000000..a4f1c831 --- /dev/null +++ b/exported/Engine/Classes/SceneCaptureReflectComponent.uc @@ -0,0 +1,13 @@ +class SceneCaptureReflectComponent extends SceneCaptureComponent + native + hidecategories(Object); + +var(Capture) TextureRenderTarget2D TextureTarget; +var(Capture) float ScaleFOV; +var(Capture) array ActorsToReflect; + +defaultproperties +{ + ScaleFOV=1.0000000 + FrameRate=1000.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Scout.uc b/exported/Engine/Classes/Scout.uc new file mode 100755 index 00000000..215c3953 --- /dev/null +++ b/exported/Engine/Classes/Scout.uc @@ -0,0 +1,129 @@ +class Scout extends Pawn + transient + native(Pawn) + config(Game) + notplaceable + hidecategories(Navigation); + +struct native PathSizeInfo +{ + var name Desc; + var float Radius; + var float Height; + var float CrouchHeight; + var byte PathColor; + + structdefaultproperties + { + Desc="None" + Radius=0.0000000 + Height=0.0000000 + CrouchHeight=0.0000000 + PathColor=0 + } +}; + +var array PathSizes; +var float TestJumpZ; +var float TestGroundSpeed; +var float TestMaxFallSpeed; +var float TestFallSpeed; +var const float MaxLandingVelocity; +var int MinNumPlayerStarts; +var Class DefaultReachSpecClass; +var array EdgePathColors; +var float NavMeshGen_StepSize; +var float NavMeshGen_EntityHalfHeight; +var float NavMeshGen_StartingHeightOffset; +var float NavMeshGen_MaxDropHeight; +var float NavMeshGen_MaxStepHeight; +var float NavMeshGen_VertZDeltaSnapThresh; +var float NavMeshGen_MinPolyArea; +var float NavMeshGen_BorderBackfill_CheckDist; +var float NavMeshGen_MinMergeDotAreaThreshold; +var float NavMeshGen_MinMergeDotSmallArea; +var float NavMeshGen_MinMergeDotLargeArea; +var float NavMeshGen_MaxPolyHeight; +var float NavMeshGen_HeightMergeThreshold; +var float NavMeshGen_EdgeMaxDelta; +var float NavMeshGen_MaxGroundCheckSize; +var float NavMeshGen_MinEdgeLength; +var float NavMeshGen_MinRadius; +var float NavMeshGen_MaxRadius; +var float StandardJumpHeight; +var float StandardJumpDistance; +var float NavMeshGen_RecastCellSize; +var float NavMeshGen_RecastCellHeight; +var float NavMeshGen_RecastErodeRadius; +var bool NavMeshGen_ExpansionDoObstacleMeshSimplification; +var() bool bHightlightOneWayReachSpecs; +var float MinMantleFallDist; +var float MaxMantleFallDist; +var float MinMantleLateralDist; +var float MaxMantleLateralDist; +var float MaxMantleFallTime; + +simulated event PreBeginPlay() +{ + // End:0x13 + if(bCollideActors) + { + SetCollision(false, false); + } + //return; +} + +defaultproperties +{ + PathSizes[0]=(Desc="Human",Radius=48.0000000,Height=80.0000000,CrouchHeight=0.0000000,PathColor=0) + PathSizes[1]=(Desc="Common",Radius=72.0000000,Height=100.0000000,CrouchHeight=0.0000000,PathColor=0) + PathSizes[2]=(Desc="Max",Radius=120.0000000,Height=120.0000000,CrouchHeight=0.0000000,PathColor=0) + PathSizes[3]=(Desc="Vehicle",Radius=260.0000000,Height=120.0000000,CrouchHeight=0.0000000,PathColor=0) + TestJumpZ=420.0000000 + TestGroundSpeed=600.0000000 + TestMaxFallSpeed=2500.0000000 + TestFallSpeed=1200.0000000 + MinNumPlayerStarts=1 + DefaultReachSpecClass=Class'Engine.ReachSpec' + EdgePathColors=/* ERROR: System.ArgumentOutOfRangeException */ + NavMeshGen_StepSize=30.0000000 + NavMeshGen_EntityHalfHeight=72.0000000 + NavMeshGen_StartingHeightOffset=65.0000000 + NavMeshGen_MaxDropHeight=60.0000000 + NavMeshGen_MaxStepHeight=35.0000000 + NavMeshGen_VertZDeltaSnapThresh=20.0000000 + NavMeshGen_MinPolyArea=25.0000000 + NavMeshGen_BorderBackfill_CheckDist=70.0000000 + NavMeshGen_MinMergeDotAreaThreshold=2.0000000 + NavMeshGen_MinMergeDotLargeArea=0.9500000 + NavMeshGen_MaxPolyHeight=160.0000000 + NavMeshGen_HeightMergeThreshold=10.0000000 + NavMeshGen_EdgeMaxDelta=2.0000000 + NavMeshGen_MaxGroundCheckSize=30.0000000 + NavMeshGen_MinEdgeLength=7.0000000 + NavMeshGen_MinRadius=48.0000000 + NavMeshGen_MaxRadius=260.0000000 + StandardJumpHeight=2.0000000 + StandardJumpDistance=60.0000000 + NavMeshGen_RecastCellSize=25.0000000 + NavMeshGen_RecastCellHeight=10.0000000 + NavMeshGen_RecastErodeRadius=25.0000000 + NavMeshGen_ExpansionDoObstacleMeshSimplification=true + AccelRate=1.0000000 + // Reference: CylinderComponent'Engine.Default__Scout.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Pawn.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + RemoteRole=ENetRole.ROLE_None + bCollideActors=false + bCollideWorld=false + bBlockActors=false + bProjTarget=false + bPathColliding=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/ScriptViewportClient.uc b/exported/Engine/Classes/ScriptViewportClient.uc new file mode 100755 index 00000000..b2588daa --- /dev/null +++ b/exported/Engine/Classes/ScriptViewportClient.uc @@ -0,0 +1,5 @@ +class ScriptViewportClient extends Object + transient + native; + +var private native const noexport Pointer VfTable_FViewportClient; diff --git a/exported/Engine/Classes/ScriptedTexture.uc b/exported/Engine/Classes/ScriptedTexture.uc new file mode 100755 index 00000000..69f20488 --- /dev/null +++ b/exported/Engine/Classes/ScriptedTexture.uc @@ -0,0 +1,20 @@ +class ScriptedTexture extends TextureRenderTarget2D + native(Texture) + hidecategories(Object,Texture); + +var transient bool bNeedsUpdate; +var transient bool bSkipNextClear; +//var delegate __Render__Delegate; + +delegate Render(Canvas C) +{ + //return; +} + +defaultproperties +{ + bNeedsUpdate=true + AddressX=TextureAddress.TA_Clamp + AddressY=TextureAddress.TA_Clamp + bNeedsTwoCopies=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_AIAbortMoveToActor.uc b/exported/Engine/Classes/SeqAct_AIAbortMoveToActor.uc new file mode 100755 index 00000000..068453d4 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_AIAbortMoveToActor.uc @@ -0,0 +1,7 @@ +class SeqAct_AIAbortMoveToActor extends SequenceAction + hidecategories(Object); + +defaultproperties +{ + ObjName="Abort Move" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_AIMoveToActor.uc b/exported/Engine/Classes/SeqAct_AIMoveToActor.uc new file mode 100755 index 00000000..e57566b3 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_AIMoveToActor.uc @@ -0,0 +1,61 @@ +class SeqAct_AIMoveToActor extends SeqAct_Latent + native(Sequence) + hidecategories(Object); + +var() bool bInterruptable; +var() bool bPickClosest; +var() array Destination; +var() float MovementSpeedModifier; +var() Actor LookAt; +var transient int LastDestinationChoice; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 2; + //return ReturnValue; +} + +function Actor PickDestination(Actor Requestor) +{ + local float Dist, bestDist; + local Actor Dest, BestDest; + + // End:0xCB + if(bPickClosest) + { + // End:0xBD + foreach Destination(Dest) + { + Dist = VSize(Dest.Location - Requestor.Location); + // End:0xBC + if((BestDest == none) || Dist < bestDist) + { + BestDest = Dest; + bestDist = Dist; + } + } + return BestDest; + } + else + { + // End:0xFF + if((LastDestinationChoice < 0) || LastDestinationChoice >= Destination.Length) + { + LastDestinationChoice = 0; + } + return Destination[LastDestinationChoice++]; + } + //return ReturnValue; +} + +defaultproperties +{ + MovementSpeedModifier=1.0000000 + OutputLinks[0]=(Links=none,LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Aborted",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Out",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Destination",LinkVar="None",PropertyName="Destination",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Look At",LinkVar="None",PropertyName="LookAt",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Move To Actor" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_AccessObjectList.uc b/exported/Engine/Classes/SeqAct_AccessObjectList.uc new file mode 100755 index 00000000..7a584647 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_AccessObjectList.uc @@ -0,0 +1,18 @@ +class SeqAct_AccessObjectList extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var() editconst Object OutputObject; +var() int ObjectIndex; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Random",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="First",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Last",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[3]=(LinkDesc="At Index",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_ObjectList',LinkedVariables=none,LinkDesc="Object List",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Index",LinkVar="None",PropertyName="ObjectIndex",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Output Object",LinkVar="None",PropertyName="OutputObject",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Access ObjectList" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ActivateRemoteEvent.uc b/exported/Engine/Classes/SeqAct_ActivateRemoteEvent.uc new file mode 100755 index 00000000..ec50b6bf --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ActivateRemoteEvent.uc @@ -0,0 +1,20 @@ +class SeqAct_ActivateRemoteEvent extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() Actor Instigator; +var() name EventName; +var transient bool bStatusIsOk; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 2; + //return ReturnValue; +} + +defaultproperties +{ + EventName="DefaultEvent" + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="Instigator",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Activate Remote Event" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ActorFactory.uc b/exported/Engine/Classes/SeqAct_ActorFactory.uc new file mode 100755 index 00000000..69ccb4f2 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ActorFactory.uc @@ -0,0 +1,52 @@ +class SeqAct_ActorFactory extends SeqAct_Latent + native(Sequence) + hidecategories(Object); + +enum EPointSelection +{ + PS_Normal, // 0 + PS_Random, // 1 + PS_Reverse, // 2 + PS_MAX // 3 +}; + +var() bool bEnabled; +var bool bIsSpawning; +var() bool bCheckSpawnCollision; +var() export editinline ActorFactory Factory; +var() SeqAct_ActorFactory.EPointSelection PointSelection; +var() array SpawnPoints; +var() array SpawnLocations; +var() array SpawnOrientations; +var() int SpawnCount; +var() float SpawnDelay; +var int LastSpawnIdx; +var int CurrentSpawnIdx; +var int SpawnedCount; +var float RemainingDelay; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 0; + //return ReturnValue; +} + +defaultproperties +{ + bEnabled=true + bCheckSpawnCollision=true + SpawnCount=1 + SpawnDelay=0.5000000 + LastSpawnIdx=-1 + CurrentSpawnIdx=-1 + InputLinks[0]=(LinkDesc="Spawn Actor",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Enable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Disable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[3]=(LinkDesc="Toggle",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Spawn Point",LinkVar="None",PropertyName="SpawnPoints",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Spawned",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Spawn Count",LinkVar="None",PropertyName="SpawnCount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Spawn Location",LinkVar="None",PropertyName="SpawnLocations",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[4]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Spawn Direction",LinkVar="None",PropertyName="SpawnOrientations",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Actor Factory" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ActorFactoryEx.uc b/exported/Engine/Classes/SeqAct_ActorFactoryEx.uc new file mode 100755 index 00000000..ab056153 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ActorFactoryEx.uc @@ -0,0 +1,13 @@ +class SeqAct_ActorFactoryEx extends SeqAct_ActorFactory + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Aborted",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Spawned 1",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Spawn Point",LinkVar="None",PropertyName="SpawnPoints",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Spawned 1",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Actor Factory Ex" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_AddFloat.uc b/exported/Engine/Classes/SeqAct_AddFloat.uc new file mode 100755 index 00000000..eaae8c29 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_AddFloat.uc @@ -0,0 +1,17 @@ +class SeqAct_AddFloat extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var() float ValueA; +var() float ValueB; +var float FloatResult; +var int IntResult; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="A",LinkVar="None",PropertyName="ValueA",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="B",LinkVar="None",PropertyName="ValueB",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="FloatResult",LinkVar="None",PropertyName="FloatResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="IntResult",LinkVar="None",PropertyName="IntResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Add Float" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_AddInt.uc b/exported/Engine/Classes/SeqAct_AddInt.uc new file mode 100755 index 00000000..b0fa9c3e --- /dev/null +++ b/exported/Engine/Classes/SeqAct_AddInt.uc @@ -0,0 +1,17 @@ +class SeqAct_AddInt extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var() int ValueA; +var() int ValueB; +var float FloatResult; +var int IntResult; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="A",LinkVar="None",PropertyName="ValueA",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="B",LinkVar="None",PropertyName="ValueB",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="IntResult",LinkVar="None",PropertyName="IntResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="FloatResult",LinkVar="None",PropertyName="FloatResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Add Int" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_AddRemoveFaceFXAnimSet.uc b/exported/Engine/Classes/SeqAct_AddRemoveFaceFXAnimSet.uc new file mode 100755 index 00000000..ca773523 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_AddRemoveFaceFXAnimSet.uc @@ -0,0 +1,11 @@ +class SeqAct_AddRemoveFaceFXAnimSet extends SequenceAction + hidecategories(Object); + +var deprecated array FaceFXAnimSets; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Add FaceFXAnimSets",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Remove FaceFXAnimSets",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Add Remove FaceFXAnimSet" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_AndGate.uc b/exported/Engine/Classes/SeqAct_AndGate.uc new file mode 100755 index 00000000..3c6a8d29 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_AndGate.uc @@ -0,0 +1,15 @@ +class SeqAct_AndGate extends SequenceAction + native(Sequence) + hidecategories(Object); + +var transient bool bOpen; +var transient array LinkedOutputFiredStatus; +var native transient array LinkedOutputs; + +defaultproperties +{ + bOpen=true + bAutoActivateOutputLinks=false + VariableLinks=none + ObjName="AND Gate" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ApplySoundNode.uc b/exported/Engine/Classes/SeqAct_ApplySoundNode.uc new file mode 100755 index 00000000..67a22c43 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ApplySoundNode.uc @@ -0,0 +1,11 @@ +class SeqAct_ApplySoundNode extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() SoundCue PlaySound; +var() editinline SoundNode ApplyNode; + +defaultproperties +{ + ObjName="Apply Sound Node" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_AssignController.uc b/exported/Engine/Classes/SeqAct_AssignController.uc new file mode 100755 index 00000000..c14d837f --- /dev/null +++ b/exported/Engine/Classes/SeqAct_AssignController.uc @@ -0,0 +1,9 @@ +class SeqAct_AssignController extends SequenceAction + hidecategories(Object); + +var() Class ControllerClass; + +defaultproperties +{ + ObjName="Assign Controller" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_AttachToActor.uc b/exported/Engine/Classes/SeqAct_AttachToActor.uc new file mode 100755 index 00000000..e95dda6b --- /dev/null +++ b/exported/Engine/Classes/SeqAct_AttachToActor.uc @@ -0,0 +1,24 @@ +class SeqAct_AttachToActor extends SequenceAction + hidecategories(Object); + +var() bool bDetach; +var() bool bHardAttach; +var() bool bUseRelativeOffset; +var() bool bUseRelativeRotation; +var() name BoneName; +var() Vector RelativeOffset; +var() Rotator RelativeRotation; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + bHardAttach=true + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Attachment",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Attach to Actor" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_AttachToEvent.uc b/exported/Engine/Classes/SeqAct_AttachToEvent.uc new file mode 100755 index 00000000..e6f0305d --- /dev/null +++ b/exported/Engine/Classes/SeqAct_AttachToEvent.uc @@ -0,0 +1,12 @@ +class SeqAct_AttachToEvent extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() bool bPreferController; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Attachee",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + EventLinks[0]=(ExpectedType=Class'Engine.SequenceEvent',LinkedEvents=none,LinkDesc="Event",DrawX=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Attach To Event" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_CameraFade.uc b/exported/Engine/Classes/SeqAct_CameraFade.uc new file mode 100755 index 00000000..a537a919 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_CameraFade.uc @@ -0,0 +1,31 @@ +class SeqAct_CameraFade extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() Color FadeColor; +var deprecated Vector2D FadeAlpha; +var() float FadeOpacity; +var() float FadeTime; +var() bool bPersistFade; +var() bool bFadeAudio; +var float FadeTimeRemaining; +var transient array CachedPCs; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + FadeOpacity=1.0000000 + FadeTime=1.0000000 + bPersistFade=true + bLatentExecution=true + bAutoActivateOutputLinks=false + OutputLinks[0]=(Links=none,LinkDesc="Out",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=true,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Fade" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_CameraLookAt.uc b/exported/Engine/Classes/SeqAct_CameraLookAt.uc new file mode 100755 index 00000000..1a9c0924 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_CameraLookAt.uc @@ -0,0 +1,47 @@ +class SeqAct_CameraLookAt extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() bool bAffectCamera; +var() bool bAlwaysFocus; +var deprecated bool bAdjustCamera; +var() bool bTurnInPlace; +var() bool bIgnoreTrace; +var() bool bAffectHead; +var() bool bRotatePlayerWithCamera; +var() bool bToggleGodMode; +var() bool bLeaveCameraRotation; +var() bool bDisableInput; +var bool bUsedTimer; +var() bool bCheckLineOfSight; +var() Vector2D InterpSpeedRange; +var() Vector2D InFocusFOV; +var() name FocusBoneName; +var() string TextDisplay; +var() float TotalTime; +var() float CameraFOV; +var transient float RemainingTime; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 3; + //return ReturnValue; +} + +defaultproperties +{ + bAffectCamera=true + bTurnInPlace=true + bDisableInput=true + InterpSpeedRange=(X=3.0000000,Y=3.0000000) + InFocusFOV=(X=1.0000000,Y=1.0000000) + CameraFOV=-1.0000000 + bLatentExecution=true + OutputLinks[0]=(Links=none,LinkDesc="Out",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Succeeded",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Failed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Focus",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Look At" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_CameraShake.uc b/exported/Engine/Classes/SeqAct_CameraShake.uc new file mode 100755 index 00000000..d4c8300a --- /dev/null +++ b/exported/Engine/Classes/SeqAct_CameraShake.uc @@ -0,0 +1,40 @@ +class SeqAct_CameraShake extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() protectedwrite export editinline CameraShake Shake; +var() protectedwrite float ShakeScale; +var() protectedwrite bool bDoControllerVibration; +var() protectedwrite bool bRadialShake; +var() protectedwrite bool bOrientTowardRadialEpicenter; +var() protectedwrite float RadialShake_InnerRadius; +var() protectedwrite float RadialShake_OuterRadius; +var() protectedwrite float RadialShake_Falloff; +var() protectedwrite Camera.ECameraAnimPlaySpace PlaySpace; +var Actor LocationActor; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + // Reference: CameraShake'Engine.Default__SeqAct_CameraShake.Shake0' + begin object name="Shake0" class=Engine.CameraShake + OscillationDuration=1.0000000 + RotOscillation=(Pitch=(Amplitude=150.0000000,Frequency=40.0000000),Yaw=(Amplitude=75.0000000,Frequency=30.0000000),Roll=(Amplitude=150.0000000,Frequency=60.0000000)) + end object + Shake=Shake0 + ShakeScale=1.0000000 + bDoControllerVibration=true + RadialShake_InnerRadius=128.0000000 + RadialShake_OuterRadius=512.0000000 + RadialShake_Falloff=2.0000000 + InputLinks[0]=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Location",LinkVar="None",PropertyName="LocationActor",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Camera Shake" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_CastToFloat.uc b/exported/Engine/Classes/SeqAct_CastToFloat.uc new file mode 100755 index 00000000..77714005 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_CastToFloat.uc @@ -0,0 +1,13 @@ +class SeqAct_CastToFloat extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var int Value; +var float FloatResult; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Int",LinkVar="None",PropertyName="Value",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Result",LinkVar="None",PropertyName="FloatResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Cast To Float" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_CastToInt.uc b/exported/Engine/Classes/SeqAct_CastToInt.uc new file mode 100755 index 00000000..de20ca25 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_CastToInt.uc @@ -0,0 +1,14 @@ +class SeqAct_CastToInt extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var() bool bTruncate; +var float Value; +var int IntResult; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Int",LinkVar="None",PropertyName="Value",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Result",LinkVar="None",PropertyName="IntResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Cast To Int" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ChangeCollision.uc b/exported/Engine/Classes/SeqAct_ChangeCollision.uc new file mode 100755 index 00000000..550b080d --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ChangeCollision.uc @@ -0,0 +1,19 @@ +class SeqAct_ChangeCollision extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() const editconst bool bCollideActors; +var() const editconst bool bBlockActors; +var() const editconst bool bIgnoreEncroachers; +var() Actor.ECollisionType CollisionType; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 4; + //return ReturnValue; +} + +defaultproperties +{ + ObjName="Change Collision" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_CommitMapChange.uc b/exported/Engine/Classes/SeqAct_CommitMapChange.uc new file mode 100755 index 00000000..0d762bbc --- /dev/null +++ b/exported/Engine/Classes/SeqAct_CommitMapChange.uc @@ -0,0 +1,10 @@ +class SeqAct_CommitMapChange extends SequenceAction + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Commit",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks=none + ObjName="Commit Map Change" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ConcatenateStrings.uc b/exported/Engine/Classes/SeqAct_ConcatenateStrings.uc new file mode 100755 index 00000000..6fd645ed --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ConcatenateStrings.uc @@ -0,0 +1,22 @@ +class SeqAct_ConcatenateStrings extends SequenceAction + hidecategories(Object); + +var() string StrA; +var() string StrB; +var() bool ConcatenateWithSpace; +var string StrResult; + +event Activated() +{ + StrResult = ((ConcatenateWithSpace) ? StrA @ StrB : StrA $ StrB); + ActivateOutputLink(0); + //return; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="First String",LinkVar="None",PropertyName="StrA",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="Second String",LinkVar="None",PropertyName="StrB",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="Result",LinkVar="None",PropertyName="StrResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Concatenate Strings" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ConsoleCommand.uc b/exported/Engine/Classes/SeqAct_ConsoleCommand.uc new file mode 100755 index 00000000..d42ea2fb --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ConsoleCommand.uc @@ -0,0 +1,27 @@ +class SeqAct_ConsoleCommand extends SequenceAction + hidecategories(Object); + +var string Command; +var() array Commands; + +function VersionUpdated(int OldVersion, int NewVersion) +{ + // End:0x4B + if((OldVersion < 2) && (Commands.Length == 0) || Commands[0] == "") + { + Commands[0] = Command; + } + //return; +} + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + Commands[0]="" + ObjName="Console Command" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ControlMovieTexture.uc b/exported/Engine/Classes/SeqAct_ControlMovieTexture.uc new file mode 100755 index 00000000..e695dea7 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ControlMovieTexture.uc @@ -0,0 +1,64 @@ +class SeqAct_ControlMovieTexture extends SequenceAction + hidecategories(Object); + +enum EMovieControlType +{ + MCT_Play, // 0 + MCT_Stop, // 1 + MCT_Pause, // 2 + MCT_MAX // 3 +}; + +var() TextureMovie MovieTexture; + +event Activated() +{ + local PlayerController PC; + local SeqAct_ControlMovieTexture.EMovieControlType Mode; + + // End:0x1B7 + if(MovieTexture != none) + { + // End:0x40 + if(InputLinks[0].bHasImpulse) + { + Mode = 0; + } + else + { + // End:0x71 + if(InputLinks[1].bHasImpulse) + { + Mode = 1; + } + else + { + // End:0xA0 + if(InputLinks[2].bHasImpulse) + { + Mode = 2; + } + } + } + // End:0x1B6 + foreach GetWorldInfo().AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x1B5 + if(((LocalPlayer(PC.Player) != none) && PC.IsPrimaryPlayer()) || (NetConnection(PC.Player) != none) && ChildConnection(PC.Player) == none) + { + PC.ClientControlMovieTexture(MovieTexture, Mode); + } + } + } + //return; +} + +defaultproperties +{ + bCallHandler=false + InputLinks[0]=(LinkDesc="Play",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Pause",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks=none + ObjName="Control Movie Texture" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ConvertToString.uc b/exported/Engine/Classes/SeqAct_ConvertToString.uc new file mode 100755 index 00000000..08b040d4 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ConvertToString.uc @@ -0,0 +1,23 @@ +class SeqAct_ConvertToString extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() bool bIncludeVarComment; +var() string VarSeparator; +var() int NumberOfInputs; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + bIncludeVarComment=true + VarSeparator=", " + NumberOfInputs=1 + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Inputs",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=true,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="Output",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Convert To String" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_Delay.uc b/exported/Engine/Classes/SeqAct_Delay.uc new file mode 100755 index 00000000..b74d403d --- /dev/null +++ b/exported/Engine/Classes/SeqAct_Delay.uc @@ -0,0 +1,30 @@ +class SeqAct_Delay extends SeqAct_Latent + native(Sequence) + hidecategories(Object); + +var const bool bDelayActive; +var() bool bStartWillRestart; +var const float DefaultDuration; +var() float Duration; +var const float LastUpdateTime; +var const float RemainingTime; + +function Reset() +{ + ResetDelayActive(); + //return; +} + +// Export USeqAct_Delay::execResetDelayActive(FFrame&, void* const) +native function ResetDelayActive(); + +defaultproperties +{ + DefaultDuration=1.0000000 + Duration=1.0000000 + InputLinks[0]=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Pause",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Duration",LinkVar="None",PropertyName="Duration",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Delay" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_DelaySwitch.uc b/exported/Engine/Classes/SeqAct_DelaySwitch.uc new file mode 100755 index 00000000..ea594065 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_DelaySwitch.uc @@ -0,0 +1,18 @@ +class SeqAct_DelaySwitch extends SeqAct_Latent + native(Sequence) + hidecategories(Object); + +var() int LinkCount; +var transient int CurrentIdx; +var transient float SwitchDelay; +var transient float NextLinkTime; + +defaultproperties +{ + LinkCount=1 + OutputLinks[0]=(Links=none,LinkDesc="Link 1",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Aborted",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Delay",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Active Link",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Delayed" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_Destroy.uc b/exported/Engine/Classes/SeqAct_Destroy.uc new file mode 100755 index 00000000..1cbe46c5 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_Destroy.uc @@ -0,0 +1,10 @@ +class SeqAct_Destroy extends SequenceAction + hidecategories(Object); + +var() bool bDestroyBasedActors; +var() array< Class > IgnoreBasedClasses; + +defaultproperties +{ + ObjName="Destroy" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_DivideFloat.uc b/exported/Engine/Classes/SeqAct_DivideFloat.uc new file mode 100755 index 00000000..dc7e5024 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_DivideFloat.uc @@ -0,0 +1,17 @@ +class SeqAct_DivideFloat extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var() float ValueA; +var() float ValueB; +var float FloatResult; +var int IntResult; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="A",LinkVar="None",PropertyName="ValueA",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="B",LinkVar="None",PropertyName="ValueB",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="FloatResult",LinkVar="None",PropertyName="FloatResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="IntResult",LinkVar="None",PropertyName="IntResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Divide Float" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_DivideInt.uc b/exported/Engine/Classes/SeqAct_DivideInt.uc new file mode 100755 index 00000000..bb6df4cc --- /dev/null +++ b/exported/Engine/Classes/SeqAct_DivideInt.uc @@ -0,0 +1,17 @@ +class SeqAct_DivideInt extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var() int ValueA; +var() int ValueB; +var float FloatResult; +var int IntResult; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="A",LinkVar="None",PropertyName="ValueA",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="B",LinkVar="None",PropertyName="ValueB",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="IntResult",LinkVar="None",PropertyName="IntResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="FloatResult",LinkVar="None",PropertyName="FloatResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Divide Int" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_DrawText.uc b/exported/Engine/Classes/SeqAct_DrawText.uc new file mode 100755 index 00000000..039e029f --- /dev/null +++ b/exported/Engine/Classes/SeqAct_DrawText.uc @@ -0,0 +1,26 @@ +class SeqAct_DrawText extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() float DisplayTimeSeconds; +var() bool bDisplayOnObject; +var() KismetDrawTextInfo DrawTextInfo; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 2; + //return ReturnValue; +} + +defaultproperties +{ + DisplayTimeSeconds=-1.0000000 + DrawTextInfo=(MessageText="",AppendedText="",MessageFont=none,MessageFontScale=(X=1.0000000,Y=1.0000000),MessageOffset=(X=0.0000000,Y=0.0000000),MessageColor=(R=255,G=255,B=255,A=255),MessageEndTime=-1.0000000) + bLatentExecution=true + bAutoActivateOutputLinks=false + InputLinks[0]=(LinkDesc="Show",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Hide",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="String",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=true,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Draw Text" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_FeatureTest.uc b/exported/Engine/Classes/SeqAct_FeatureTest.uc new file mode 100755 index 00000000..5fc35145 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_FeatureTest.uc @@ -0,0 +1,16 @@ +class SeqAct_FeatureTest extends SeqAct_Log + native(Sequence) + hidecategories(Object); + +var() string FreezeAtParameters; +var() float ScreenShotDelay; +var() string ScreenShotName; +var float RemainingScreenShotDelay; + +defaultproperties +{ + ScreenShotDelay=1.0000000 + bLatentExecution=true + bAutoActivateOutputLinks=false + ObjName="Feature Test" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_FinishSequence.uc b/exported/Engine/Classes/SeqAct_FinishSequence.uc new file mode 100755 index 00000000..d94ed149 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_FinishSequence.uc @@ -0,0 +1,13 @@ +class SeqAct_FinishSequence extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() string OutputLabel; + +defaultproperties +{ + OutputLabel="Out" + OutputLinks=none + VariableLinks=none + ObjName="Finish Sequence" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_FlyThroughHasEnded.uc b/exported/Engine/Classes/SeqAct_FlyThroughHasEnded.uc new file mode 100755 index 00000000..33d63056 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_FlyThroughHasEnded.uc @@ -0,0 +1,7 @@ +class SeqAct_FlyThroughHasEnded extends SequenceAction + hidecategories(Object); + +defaultproperties +{ + ObjName="FlyThroughHasEnded" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ForceFeedback.uc b/exported/Engine/Classes/SeqAct_ForceFeedback.uc new file mode 100755 index 00000000..33a3ecd2 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ForceFeedback.uc @@ -0,0 +1,12 @@ +class SeqAct_ForceFeedback extends SequenceAction + hidecategories(Object); + +var() editinline ForceFeedbackWaveform FFWaveform; +var() Class PredefinedWaveForm; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Force Feedback" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ForceGarbageCollection.uc b/exported/Engine/Classes/SeqAct_ForceGarbageCollection.uc new file mode 100755 index 00000000..0505a809 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ForceGarbageCollection.uc @@ -0,0 +1,10 @@ +class SeqAct_ForceGarbageCollection extends SeqAct_Latent + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="Force Garbage Collection" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_Gate.uc b/exported/Engine/Classes/SeqAct_Gate.uc new file mode 100755 index 00000000..df248778 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_Gate.uc @@ -0,0 +1,20 @@ +class SeqAct_Gate extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() bool bOpen; +var() int AutoCloseCount; +var int CurrentCloseCount; + +defaultproperties +{ + bOpen=true + bAutoActivateOutputLinks=false + InputLinks[0]=(LinkDesc="In",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Open",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Close",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[3]=(LinkDesc="Toggle",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks=none + ObjName="Gate" + bSuppressAutoComment=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_GetDistance.uc b/exported/Engine/Classes/SeqAct_GetDistance.uc new file mode 100755 index 00000000..ceba801d --- /dev/null +++ b/exported/Engine/Classes/SeqAct_GetDistance.uc @@ -0,0 +1,13 @@ +class SeqAct_GetDistance extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() editconst float Distance; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="A",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="B",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Distance",LinkVar="None",PropertyName="Distance",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Get Distance" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_GetLocationAndRotation.uc b/exported/Engine/Classes/SeqAct_GetLocationAndRotation.uc new file mode 100755 index 00000000..84f7a44e --- /dev/null +++ b/exported/Engine/Classes/SeqAct_GetLocationAndRotation.uc @@ -0,0 +1,23 @@ +class SeqAct_GetLocationAndRotation extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() editconst Vector Location; +var() editconst Vector RotationVector; +var() editconst Vector Rotation; +var() name SocketOrBoneName; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 2; + //return ReturnValue; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Location",LinkVar="None",PropertyName="Location",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Rotation Vector",LinkVar="None",PropertyName="RotationVector",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Rotation",LinkVar="None",PropertyName="Rotation",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Get Location and Rotation" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_GetProperty.uc b/exported/Engine/Classes/SeqAct_GetProperty.uc new file mode 100755 index 00000000..667d3120 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_GetProperty.uc @@ -0,0 +1,16 @@ +class SeqAct_GetProperty extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() name PropertyName; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Object",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Int",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Float",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[4]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="String",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[5]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Bool",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Get Property" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_GetVectorComponents.uc b/exported/Engine/Classes/SeqAct_GetVectorComponents.uc new file mode 100755 index 00000000..2d71eb39 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_GetVectorComponents.uc @@ -0,0 +1,17 @@ +class SeqAct_GetVectorComponents extends SequenceAction + native(Sequence) + hidecategories(Object); + +var Vector InVector; +var float X; +var float Y; +var float Z; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Input Vector",LinkVar="None",PropertyName="InVector",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="X",LinkVar="None",PropertyName="X",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Y",LinkVar="None",PropertyName="Y",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Z",LinkVar="None",PropertyName="Z",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Get Vector Components" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_GetVelocity.uc b/exported/Engine/Classes/SeqAct_GetVelocity.uc new file mode 100755 index 00000000..ec015b95 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_GetVelocity.uc @@ -0,0 +1,20 @@ +class SeqAct_GetVelocity extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() editconst float VelocityMag; +var() editconst Vector VelocityVect; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Velocity Mag",LinkVar="None",PropertyName="VelocityMag",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Velocity Vect",LinkVar="None",PropertyName="VelocityVect",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Get Velocity" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_GiveInventory.uc b/exported/Engine/Classes/SeqAct_GiveInventory.uc new file mode 100755 index 00000000..ea78caa6 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_GiveInventory.uc @@ -0,0 +1,11 @@ +class SeqAct_GiveInventory extends SequenceAction + hidecategories(Object); + +var() array< Class > InventoryList; +var() bool bClearExisting; +var() bool bForceReplace; + +defaultproperties +{ + ObjName="Give Inventory" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_HeadTrackingControl.uc b/exported/Engine/Classes/SeqAct_HeadTrackingControl.uc new file mode 100755 index 00000000..98947a8e --- /dev/null +++ b/exported/Engine/Classes/SeqAct_HeadTrackingControl.uc @@ -0,0 +1,162 @@ +class SeqAct_HeadTrackingControl extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() array TrackControllerName; +var() float LookAtActorRadius; +var() bool bDisableBeyondLimit; +var(Target) bool bLookAtPawns; +var() float MaxLookAtTime; +var() float MinLookAtTime; +var() float MaxInterestTime; +var(Target) array< Class > ActorClassesToLookAt; +var(Target) array TargetBoneNames; +var() array LookAtTargets; +var private native const transient map{VOID,VOID} ActorToComponentMap; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +event Activated() +{ + local PlayerController PC; + local int I, NumOfMember; + local Class ActorClassesToLookAtParam[10]; + local name TargetBoneNamesParam[10], TrackControllerNameParam[10]; + local Actor TriggerActor, LocalActor; + + I = 0; + J0x0B: + + // End:0x68 [Loop If] + if((I < Targets.Length) && TriggerActor == none) + { + TriggerActor = Actor(Targets[I]); + ++I; + // [Loop Continue] + goto J0x0B; + } + // End:0x79 + if(TriggerActor == none) + { + return; + } + // End:0x332 + if(InputLinks[0].bHasImpulse) + { + NumOfMember = Min(TrackControllerName.Length, 10); + I = 0; + J0xBE: + + // End:0x10A [Loop If] + if(I < NumOfMember) + { + TrackControllerNameParam[I] = TrackControllerName[I]; + ++I; + // [Loop Continue] + goto J0xBE; + } + NumOfMember = Min(ActorClassesToLookAt.Length, 10); + I = 0; + J0x12D: + + // End:0x179 [Loop If] + if(I < NumOfMember) + { + ActorClassesToLookAtParam[I] = ActorClassesToLookAt[I]; + ++I; + // [Loop Continue] + goto J0x12D; + } + NumOfMember = Min(TargetBoneNames.Length, 10); + I = 0; + J0x19C: + + // End:0x1E8 [Loop If] + if(I < NumOfMember) + { + TargetBoneNamesParam[I] = TargetBoneNames[I]; + ++I; + // [Loop Continue] + goto J0x19C; + } + // End:0x32E + foreach TriggerActor.WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x32D + if(PC.IsLocalPlayerController() == false) + { + I = 0; + J0x261: + + // End:0x32D [Loop If] + if(I < Targets.Length) + { + LocalActor = Actor(Targets[I]); + // End:0x31F + if(LocalActor != none) + { + PC.EnableActorHeadTracking(LocalActor, TrackControllerNameParam, ActorClassesToLookAtParam, bLookAtPawns, MinLookAtTime, MaxLookAtTime, MaxInterestTime, LookAtActorRadius, TargetBoneNamesParam); + } + ++I; + // [Loop Continue] + goto J0x261; + } + } + } + } + else + { + // End:0x42F + foreach TriggerActor.WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x42E + if(PC.IsLocalPlayerController() == false) + { + I = 0; + J0x3AB: + + // End:0x42E [Loop If] + if(I < Targets.Length) + { + LocalActor = Actor(Targets[I]); + // End:0x420 + if(LocalActor != none) + { + PC.DisableActorHeadTracking(LocalActor); + } + ++I; + // [Loop Continue] + goto J0x3AB; + } + } + } + } + super(SequenceOp).Activated(); + //return; +} + +defaultproperties +{ + TrackControllerName[0]="HeadLook" + TrackControllerName[1]="LeftEyeLook" + TrackControllerName[2]="RightEyeLook" + LookAtActorRadius=500.0000000 + bDisableBeyondLimit=true + bLookAtPawns=true + MaxLookAtTime=5.0000000 + MinLookAtTime=3.0000000 + MaxInterestTime=7.0000000 + TargetBoneNames[0]="b_MF_Head" + TargetBoneNames[1]="b_MF_Neck" + bCallHandler=false + bAutoActivateOutputLinks=false + InputLinks[0]=(LinkDesc="Enable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Disable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Enabled",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Disabled",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="HeadTracking Control" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_Interp.uc b/exported/Engine/Classes/SeqAct_Interp.uc new file mode 100755 index 00000000..172dec91 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_Interp.uc @@ -0,0 +1,103 @@ +class SeqAct_Interp extends SeqAct_Latent + native(Sequence) + config(Engine) + hidecategories(Object); + +struct native export SavedTransform +{ + var Vector Location; + var Rotator Rotation; + + structdefaultproperties + { + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Rotation=(Pitch=0,Yaw=0,Roll=0) + } +}; + +struct native CameraCutInfo +{ + var Vector Location; + var float TimeStamp; + + structdefaultproperties + { + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + TimeStamp=0.0000000 + } +}; + +var private noimport native const transient map{VOID,VOID} SavedActorTransforms; +var private noimport native const transient map{VOID,VOID} SavedActorVisibilities; +var() float PlayRate; +var float Position; +var() float ForceStartPosition; +var bool bIsPlaying; +var bool bPaused; +var transient bool bIsBeingEdited; +var() bool bLooping; +var() bool bRewindOnPlay; +var() bool bNoResetOnRewind; +var() bool bRewindIfAlreadyPlaying; +var bool bReversePlayback; +var() bool bInterpForPathBuilding; +var() bool bForceStartPos; +var() bool bDisableRadioFilter; +var() bool bClientSideOnly; +var() bool bSkipUpdateIfNotVisible; +var() bool bIsSkippable; +var transient bool bShouldShowGore; +var() array LinkedCover; +var export InterpData InterpData; +var array GroupInst; +var const Class ReplicatedActorClass; +var const transient MatineeActor ReplicatedActor; +var() int PreferredSplitScreenNum; +var transient array CameraCuts; +var float TerminationTime; +var() globalconfig RenderingPerformanceOverrides RenderingOverrides; +var(ConstantCameraAnim) byte ConstantCameraAnim; +var(ConstantCameraAnim) float ConstantCameraAnimRate; + +// Export USeqAct_Interp::execSetPosition(FFrame&, void* const) +native final function SetPosition(float NewPosition, optional bool bJump = false); + +// Export USeqAct_Interp::execStop(FFrame&, void* const) +native final function Stop(); + +// Export USeqAct_Interp::execAddPlayerToDirectorTracks(FFrame&, void* const) +native final function AddPlayerToDirectorTracks(PlayerController PC); + +function Reset() +{ + SetPosition(0.0000000, false); + // End:0x3F + if(bActive) + { + InputLinks[2].bHasImpulse = true; + } + //return; +} + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + PlayRate=1.0000000 + ReplicatedActorClass=Class'Engine.MatineeActor' + RenderingOverrides=(bAllowAmbientOcclusion=false,bAllowDominantWholeSceneDynamicShadows=false,bAllowMotionBlurSkinning=false,bAllowTemporalAA=true,bAllowLightShafts=true) + ConstantCameraAnimRate=4.0000000 + InputLinks[0]=(LinkDesc="Play",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Reverse",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[3]=(LinkDesc="Pause",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[4]=(LinkDesc="Change Dir",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Completed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Reversed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.InterpData',LinkedVariables=none,LinkDesc="Data",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Matinee" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_IsInObjectList.uc b/exported/Engine/Classes/SeqAct_IsInObjectList.uc new file mode 100755 index 00000000..f57c5598 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_IsInObjectList.uc @@ -0,0 +1,17 @@ +class SeqAct_IsInObjectList extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() bool bCheckForAllObjects; +var private transient bool bObjectFound; + +defaultproperties +{ + bCheckForAllObjects=true + InputLinks[0]=(LinkDesc="Test if in List",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="In List",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Not in List",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Object(s)ToTest",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_ObjectList',LinkedVariables=none,LinkDesc="ObjectListVar",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="IsIn ObjectList" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_Latent.uc b/exported/Engine/Classes/SeqAct_Latent.uc new file mode 100755 index 00000000..7c3a709b --- /dev/null +++ b/exported/Engine/Classes/SeqAct_Latent.uc @@ -0,0 +1,24 @@ +class SeqAct_Latent extends SequenceAction + abstract + native(Sequence) + hidecategories(Object); + +var array LatentActors; +var bool bAborted; +var float LatentActivationTime; + +// Export USeqAct_Latent::execAbortFor(FFrame&, void* const) +native function AbortFor(Actor latentActor); + +event bool Update(float DeltaTime) +{ + //return ReturnValue; +} + +defaultproperties +{ + bLatentExecution=true + OutputLinks[0]=(Links=none,LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Aborted",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Undefined Latent" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_LevelStreaming.uc b/exported/Engine/Classes/SeqAct_LevelStreaming.uc new file mode 100755 index 00000000..ed0ff2c9 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_LevelStreaming.uc @@ -0,0 +1,13 @@ +class SeqAct_LevelStreaming extends SeqAct_LevelStreamingBase + native(Sequence) + hidecategories(Object); + +var const LevelStreaming Level; +var() const name LevelName; +var transient bool bStatusIsOk; + +defaultproperties +{ + ObjName="Stream Level" + bSuppressAutoComment=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_LevelStreamingBase.uc b/exported/Engine/Classes/SeqAct_LevelStreamingBase.uc new file mode 100755 index 00000000..0e88131f --- /dev/null +++ b/exported/Engine/Classes/SeqAct_LevelStreamingBase.uc @@ -0,0 +1,16 @@ +class SeqAct_LevelStreamingBase extends SeqAct_Latent + abstract + native(Sequence) + hidecategories(Object); + +var() bool bMakeVisibleAfterLoad; +var() bool bShouldBlockOnLoad; + +defaultproperties +{ + bMakeVisibleAfterLoad=true + InputLinks[0]=(LinkDesc="Load",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Unload",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_LevelVisibility.uc b/exported/Engine/Classes/SeqAct_LevelVisibility.uc new file mode 100755 index 00000000..ce832b86 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_LevelVisibility.uc @@ -0,0 +1,16 @@ +class SeqAct_LevelVisibility extends SeqAct_Latent + native(Sequence) + hidecategories(Object); + +var() LevelStreaming Level; +var() name LevelName; +var transient bool bStatusIsOk; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Make Visible",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Hide",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="Change Level Visibility" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_Log.uc b/exported/Engine/Classes/SeqAct_Log.uc new file mode 100755 index 00000000..51ebd4bd --- /dev/null +++ b/exported/Engine/Classes/SeqAct_Log.uc @@ -0,0 +1,30 @@ +class SeqAct_Log extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() bool bOutputToScreen; +var() bool bIncludeObjComment; +var() float TargetDuration; +var() Vector TargetOffset; +var string LogMessage; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 2; + //return ReturnValue; +} + +defaultproperties +{ + bOutputToScreen=true + bIncludeObjComment=true + TargetDuration=-1.0000000 + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="String",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=true,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Float",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=true,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Bool",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=true,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Object",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=true,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[4]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Int",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=true,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[5]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[6]=(ExpectedType=Class'Engine.SeqVar_ObjectList',LinkedVariables=none,LinkDesc="Obj List",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=true,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Log" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_MITV_Activate.uc b/exported/Engine/Classes/SeqAct_MITV_Activate.uc new file mode 100755 index 00000000..c91d024b --- /dev/null +++ b/exported/Engine/Classes/SeqAct_MITV_Activate.uc @@ -0,0 +1,39 @@ +class SeqAct_MITV_Activate extends SequenceAction + hidecategories(Object); + +var() float DurationOfMITV; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +event Activated() +{ + local SeqVar_Object ObjVar; + local MaterialInstanceTimeVaryingActor MITVA; + + // End:0xC8 + foreach LinkedVariables(Class'Engine.SeqVar_Object', ObjVar, "MITV") + { + MITVA = MaterialInstanceTimeVaryingActor(ObjVar.GetObjectValue()); + // End:0xC7 + if(MITVA != none) + { + // End:0xC7 + if(MITVA.MatInst != none) + { + MITVA.MatInst.SetDuration(DurationOfMITV); + } + } + } + //return; +} + +defaultproperties +{ + bCallHandler=false + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="MITV",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="MITV Activate" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ModifyCover.uc b/exported/Engine/Classes/SeqAct_ModifyCover.uc new file mode 100755 index 00000000..3d5ec88c --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ModifyCover.uc @@ -0,0 +1,16 @@ +class SeqAct_ModifyCover extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() array Slots; +var() CoverLink.ECoverType ManualCoverType; +var() bool bManualAdjustPlayersOnly; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Enable Slots",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Disable Slots",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Auto Adjust",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[3]=(LinkDesc="Manual Adjust",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Modify Cover" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ModifyHealth.uc b/exported/Engine/Classes/SeqAct_ModifyHealth.uc new file mode 100755 index 00000000..c2e6ef8c --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ModifyHealth.uc @@ -0,0 +1,27 @@ +class SeqAct_ModifyHealth extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() Class DamageType; +var() float Momentum; +var() float Amount; +var() float Radius; +var() bool bHeal; +var() bool bRadial; +var() bool bFalloff; +var Actor Instigator; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + Momentum=500.0000000 + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Amount",LinkVar="None",PropertyName="Amount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="Instigator",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Modify Health" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ModifyObjectList.uc b/exported/Engine/Classes/SeqAct_ModifyObjectList.uc new file mode 100755 index 00000000..85972cf3 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ModifyObjectList.uc @@ -0,0 +1,16 @@ +class SeqAct_ModifyObjectList extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var() editconst int ListEntriesCount; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Add To List",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Remove From List",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Empty List",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="ObjectRef",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_ObjectList',LinkedVariables=none,LinkDesc="ObjectListVar",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="ListEntriesCount",LinkVar="None",PropertyName="ListEntriesCount",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Modify ObjectList" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_MultiLevelStreaming.uc b/exported/Engine/Classes/SeqAct_MultiLevelStreaming.uc new file mode 100755 index 00000000..44d335c8 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_MultiLevelStreaming.uc @@ -0,0 +1,24 @@ +class SeqAct_MultiLevelStreaming extends SeqAct_LevelStreamingBase + native(Sequence) + hidecategories(Object); + +struct native LevelStreamingNameCombo +{ + var const LevelStreaming Level; + var() const name LevelName; + + structdefaultproperties + { + Level=none + LevelName="None" + } +}; + +var() array Levels; +var() bool bUnloadAllOtherLevels; +var transient bool bStatusIsOk; + +defaultproperties +{ + ObjName="Stream Levels" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_MultiplyFloat.uc b/exported/Engine/Classes/SeqAct_MultiplyFloat.uc new file mode 100755 index 00000000..5201057c --- /dev/null +++ b/exported/Engine/Classes/SeqAct_MultiplyFloat.uc @@ -0,0 +1,17 @@ +class SeqAct_MultiplyFloat extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var() float ValueA; +var() float ValueB; +var float FloatResult; +var int IntResult; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="A",LinkVar="None",PropertyName="ValueA",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="B",LinkVar="None",PropertyName="ValueB",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="FloatResult",LinkVar="None",PropertyName="FloatResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="IntResult",LinkVar="None",PropertyName="IntResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Multiply Float" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_MultiplyInt.uc b/exported/Engine/Classes/SeqAct_MultiplyInt.uc new file mode 100755 index 00000000..92f78b1e --- /dev/null +++ b/exported/Engine/Classes/SeqAct_MultiplyInt.uc @@ -0,0 +1,17 @@ +class SeqAct_MultiplyInt extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var() int ValueA; +var() int ValueB; +var float FloatResult; +var int IntResult; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="A",LinkVar="None",PropertyName="ValueA",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="B",LinkVar="None",PropertyName="ValueB",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="IntResult",LinkVar="None",PropertyName="IntResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="FloatResult",LinkVar="None",PropertyName="FloatResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Multiply Int" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ParticleEventGenerator.uc b/exported/Engine/Classes/SeqAct_ParticleEventGenerator.uc new file mode 100755 index 00000000..a65ce153 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ParticleEventGenerator.uc @@ -0,0 +1,36 @@ +class SeqAct_ParticleEventGenerator extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() bool bEnabled; +var() bool bUseEmitterLocation; +var Actor Instigator; +var array EventNames; +var float EventTime; +var Vector EventLocation; +var Vector EventDirection; +var Vector EventVelocity; +var Vector EventNormal; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 0; + //return ReturnValue; +} + +defaultproperties +{ + bEnabled=true + InputLinks[0]=(LinkDesc="Trigger Event",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Enable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Disable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[3]=(LinkDesc="Toggle",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="EventNames",LinkVar="None",PropertyName="EventNames",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="EventTime",LinkVar="None",PropertyName="EventTime",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Location",LinkVar="None",PropertyName="EventLocation",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[4]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Direction",LinkVar="None",PropertyName="EventDirection",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[5]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Velocity",LinkVar="None",PropertyName="EventVelocity",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[6]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Normal",LinkVar="None",PropertyName="EventNormal",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="ParticleEvent Generator" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_PlayCameraAnim.uc b/exported/Engine/Classes/SeqAct_PlayCameraAnim.uc new file mode 100755 index 00000000..e8eb5409 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_PlayCameraAnim.uc @@ -0,0 +1,30 @@ +class SeqAct_PlayCameraAnim extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() CameraAnim CameraAnim; +var() bool bLoop; +var() bool bRandomStartTime; +var() float BlendInTime; +var() float BlendOutTime; +var() float Rate; +var() float IntensityScale; +var() Camera.ECameraAnimPlaySpace PlaySpace; +var() Actor UserDefinedSpaceActor; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + BlendInTime=0.2000000 + BlendOutTime=0.2000000 + Rate=1.0000000 + IntensityScale=1.0000000 + InputLinks[0]=(LinkDesc="Play",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Play CameraAnim" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_PlayFaceFXAnim.uc b/exported/Engine/Classes/SeqAct_PlayFaceFXAnim.uc new file mode 100755 index 00000000..fb41cc0a --- /dev/null +++ b/exported/Engine/Classes/SeqAct_PlayFaceFXAnim.uc @@ -0,0 +1,15 @@ +class SeqAct_PlayFaceFXAnim extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() FaceFXAnimSet FaceFXAnimSetRef; +var() string FaceFXGroupName; +var() string FaceFXAnimName; +var() SoundCue SoundCueToPlay; +var() AkEvent AkEventToPlay; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Play",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Play FaceFX Anim" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_PlayMusicTrack.uc b/exported/Engine/Classes/SeqAct_PlayMusicTrack.uc new file mode 100755 index 00000000..73a26805 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_PlayMusicTrack.uc @@ -0,0 +1,12 @@ +class SeqAct_PlayMusicTrack extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() MusicTrackStruct MusicTrack; + +defaultproperties +{ + MusicTrack=(TheSoundCue=none,bAutoPlay=false,bPersistentAcrossLevels=false,FadeInTime=5.0000000,FadeInVolumeLevel=1.0000000,FadeOutTime=5.0000000,FadeOutVolumeLevel=0.0000000,MP3Filename="") + VariableLinks=none + ObjName="Play Music Track" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_PlaySound.uc b/exported/Engine/Classes/SeqAct_PlaySound.uc new file mode 100755 index 00000000..e83f162a --- /dev/null +++ b/exported/Engine/Classes/SeqAct_PlaySound.uc @@ -0,0 +1,34 @@ +class SeqAct_PlaySound extends SeqAct_Latent + native(Sequence) + hidecategories(Object); + +var() SoundCue PlaySound; +var() float ExtraDelay; +var transient bool bDelayReached; +var() bool bSuppressSubtitles; +var transient bool bStopped; +var transient float SoundDuration; +var() float FadeInTime; +var() float FadeOutTime; +var() float VolumeMultiplier; +var() float PitchMultiplier; +var() float BeforeEndTime; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + VolumeMultiplier=1.0000000 + PitchMultiplier=1.0000000 + InputLinks[0]=(LinkDesc="Play",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Out",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Stopped",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="BeforeEnd",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Play Sound" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_Possess.uc b/exported/Engine/Classes/SeqAct_Possess.uc new file mode 100755 index 00000000..80d336f4 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_Possess.uc @@ -0,0 +1,15 @@ +class SeqAct_Possess extends SequenceAction + native(Sequence) + hidecategories(Object); + +var transient Pawn PawnToPossess; +var() bool bKillOldPawn; +var() bool bTryToLeaveVehicle; + +defaultproperties +{ + bTryToLeaveVehicle=true + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Pawn Target",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Possess Pawn" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_PrepareMapChange.uc b/exported/Engine/Classes/SeqAct_PrepareMapChange.uc new file mode 100755 index 00000000..67071ae0 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_PrepareMapChange.uc @@ -0,0 +1,16 @@ +class SeqAct_PrepareMapChange extends SeqAct_Latent + native(Sequence) + hidecategories(Object); + +var() name MainLevelName; +var() array InitiallyLoadedSecondaryLevelNames; +var() bool bIsHighPriority; +var transient bool bStatusIsOk; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="PrepareLoad",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="Prepare Map Change" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ProjectileFactory.uc b/exported/Engine/Classes/SeqAct_ProjectileFactory.uc new file mode 100755 index 00000000..db778119 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ProjectileFactory.uc @@ -0,0 +1,23 @@ +class SeqAct_ProjectileFactory extends SeqAct_ActorFactory + native(Sequence) + hidecategories(Object); + +var(MuzzleFlash) ParticleSystem PSTemplate; +var(MuzzleFlash) name SocketName; +var(MuzzleFlash) name BoneName; + +static event int GetObjClassVersion() +{ + return super.GetObjClassVersion() + 0; + //return ReturnValue; +} + +defaultproperties +{ + SpawnDelay=0.0000000 + InputLinks[0]=(LinkDesc="Spawn Projectile",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Enable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Disable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[3]=(LinkDesc="Toggle",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Projectile Factory" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_RandomSwitch.uc b/exported/Engine/Classes/SeqAct_RandomSwitch.uc new file mode 100755 index 00000000..17157271 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_RandomSwitch.uc @@ -0,0 +1,19 @@ +class SeqAct_RandomSwitch extends SeqAct_Switch + native(Sequence) + hidecategories(Object); + +var array AutoDisabledIndices; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + InputLinks[0]=(LinkDesc="In",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Reset",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Active Link",LinkVar="None",PropertyName="Indices",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Random" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_RangeSwitch.uc b/exported/Engine/Classes/SeqAct_RangeSwitch.uc new file mode 100755 index 00000000..0cf1d889 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_RangeSwitch.uc @@ -0,0 +1,24 @@ +class SeqAct_RangeSwitch extends SequenceAction + native(Sequence) + hidecategories(Object); + +struct native SwitchRange +{ + var() int Min; + var() int Max; + + structdefaultproperties + { + Min=0 + Max=0 + } +}; + +var() editinline array Ranges; + +defaultproperties +{ + OutputLinks=none + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Index",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Ranged" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetActiveAnimChild.uc b/exported/Engine/Classes/SeqAct_SetActiveAnimChild.uc new file mode 100755 index 00000000..2a78f28a --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetActiveAnimChild.uc @@ -0,0 +1,14 @@ +class SeqAct_SetActiveAnimChild extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() name NodeName; +var() int ChildIndex; +var() float BlendTime; + +defaultproperties +{ + BlendTime=0.2500000 + InputLinks[0]=(LinkDesc="Activate",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set Active Anim Child" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetApexClothingParam.uc b/exported/Engine/Classes/SeqAct_SetApexClothingParam.uc new file mode 100755 index 00000000..ee42a908 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetApexClothingParam.uc @@ -0,0 +1,10 @@ +class SeqAct_SetApexClothingParam extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() bool bEnableApexClothingSimulation; + +defaultproperties +{ + ObjName="Set Apex Clothing Parameter" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetBlockRigidBody.uc b/exported/Engine/Classes/SeqAct_SetBlockRigidBody.uc new file mode 100755 index 00000000..cc96b794 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetBlockRigidBody.uc @@ -0,0 +1,10 @@ +class SeqAct_SetBlockRigidBody extends SequenceAction + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Turn On",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Turn Off",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set BlockRigidBody" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetBool.uc b/exported/Engine/Classes/SeqAct_SetBool.uc new file mode 100755 index 00000000..c1cbe541 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetBool.uc @@ -0,0 +1,12 @@ +class SeqAct_SetBool extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var() bool DefaultValue; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Value",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Bool" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetCameraTarget.uc b/exported/Engine/Classes/SeqAct_SetCameraTarget.uc new file mode 100755 index 00000000..ba7577c5 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetCameraTarget.uc @@ -0,0 +1,20 @@ +class SeqAct_SetCameraTarget extends SequenceAction + native(Sequence) + hidecategories(Object); + +var transient Actor CameraTarget; +var() const ViewTargetTransitionParams TransitionParams; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + TransitionParams=(BlendTime=0.0000000,BlendFunction=EViewTargetBlendFunction.VTBlend_Cubic,BlendExp=2.0000000,bLockOutgoing=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Cam Target",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set Camera Target" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetDOFParams.uc b/exported/Engine/Classes/SeqAct_SetDOFParams.uc new file mode 100755 index 00000000..4bc3c734 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetDOFParams.uc @@ -0,0 +1,36 @@ +class SeqAct_SetDOFParams extends SeqAct_Latent + native(Sequence) + hidecategories(Object); + +var() float FalloffExponent; +var() float BlurKernelSize; +var(BlurAmount) float MaxNearBlurAmount; +var(BlurAmount) float MinBlurAmount; +var(BlurAmount) float MaxFarBlurAmount; +var() float FocusInnerRadius; +var() float FocusDistance; +var() Vector FocusPosition; +var() float InterpolateSeconds; +var float InterpolateElapsed; +var float OldFalloffExponent; +var float OldBlurKernelSize; +var float OldMaxNearBlurAmount; +var float OldMinBlurAmount; +var float OldMaxFarBlurAmount; +var float OldFocusInnerRadius; +var float OldFocusDistance; +var Vector OldFocusPosition; + +defaultproperties +{ + FalloffExponent=4.0000000 + BlurKernelSize=5.0000000 + MaxNearBlurAmount=1.0000000 + MaxFarBlurAmount=1.0000000 + FocusInnerRadius=600.0000000 + FocusDistance=600.0000000 + InterpolateSeconds=2.0000000 + InputLinks[0]=(LinkDesc="Enable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Disable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Depth Of Field" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetDamageInstigator.uc b/exported/Engine/Classes/SeqAct_SetDamageInstigator.uc new file mode 100755 index 00000000..a2c84d81 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetDamageInstigator.uc @@ -0,0 +1,11 @@ +class SeqAct_SetDamageInstigator extends SequenceAction + hidecategories(Object); + +var Actor DamageInstigator; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Damage Instigator",LinkVar="None",PropertyName="DamageInstigator",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set Damage Instigator" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetFloat.uc b/exported/Engine/Classes/SeqAct_SetFloat.uc new file mode 100755 index 00000000..e2af0261 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetFloat.uc @@ -0,0 +1,19 @@ +class SeqAct_SetFloat extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var float Target; +var() array Value; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Value",LinkVar="None",PropertyName="Value",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Target",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Float" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetInt.uc b/exported/Engine/Classes/SeqAct_SetInt.uc new file mode 100755 index 00000000..ec6eeaa7 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetInt.uc @@ -0,0 +1,19 @@ +class SeqAct_SetInt extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var int Target; +var() array Value; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Value",LinkVar="None",PropertyName="Value",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Target",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Int" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetLocation.uc b/exported/Engine/Classes/SeqAct_SetLocation.uc new file mode 100755 index 00000000..e23446b2 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetLocation.uc @@ -0,0 +1,25 @@ +class SeqAct_SetLocation extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var() bool bSetLocation; +var() bool bSetRotation; +var() Vector LocationValue; +var() Rotator RotationValue; +var Object Target; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 2; + //return ReturnValue; +} + +defaultproperties +{ + bSetLocation=true + bSetRotation=true + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Location",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Rotation",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Target",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set Actor Location" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetMatInstScalarParam.uc b/exported/Engine/Classes/SeqAct_SetMatInstScalarParam.uc new file mode 100755 index 00000000..f40260a6 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetMatInstScalarParam.uc @@ -0,0 +1,13 @@ +class SeqAct_SetMatInstScalarParam extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() MaterialInstanceConstant MatInst; +var() name ParamName; +var() float ScalarValue; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="ScalarValue",LinkVar="None",PropertyName="ScalarValue",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set ScalarParam" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetMatInstTexParam.uc b/exported/Engine/Classes/SeqAct_SetMatInstTexParam.uc new file mode 100755 index 00000000..3c3fefd4 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetMatInstTexParam.uc @@ -0,0 +1,12 @@ +class SeqAct_SetMatInstTexParam extends SequenceAction + hidecategories(Object); + +var() MaterialInstanceConstant MatInst; +var() Texture NewTexture; +var() name ParamName; + +defaultproperties +{ + VariableLinks=none + ObjName="Set TextureParam" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetMatInstVectorParam.uc b/exported/Engine/Classes/SeqAct_SetMatInstVectorParam.uc new file mode 100755 index 00000000..b4babbfc --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetMatInstVectorParam.uc @@ -0,0 +1,19 @@ +class SeqAct_SetMatInstVectorParam extends SequenceAction + hidecategories(Object); + +var() MaterialInstanceConstant MatInst; +var() name ParamName; +var() LinearColor VectorValue; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 2; + //return ReturnValue; +} + +defaultproperties +{ + VectorValue=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="VectorValue",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set VectorParam" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetMaterial.uc b/exported/Engine/Classes/SeqAct_SetMaterial.uc new file mode 100755 index 00000000..9bce8268 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetMaterial.uc @@ -0,0 +1,12 @@ +class SeqAct_SetMaterial extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() MaterialInterface NewMaterial; +var() int MaterialIndex; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=true,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set Material" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetMesh.uc b/exported/Engine/Classes/SeqAct_SetMesh.uc new file mode 100755 index 00000000..790e5500 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetMesh.uc @@ -0,0 +1,21 @@ +class SeqAct_SetMesh extends SequenceAction + native(Sequence) + hidecategories(Object); + +enum EMeshType +{ + MeshType_StaticMesh, // 0 + MeshType_SkeletalMesh, // 1 + MeshType_MAX // 2 +}; + +var() SkeletalMesh NewSkeletalMesh; +var() StaticMesh NewStaticMesh; +var() SeqAct_SetMesh.EMeshType MeshType; +var() bool bIsAllowedToMove; +var() bool bAllowDecalsToReattach; + +defaultproperties +{ + ObjName="Set Mesh" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetMotionBlurParams.uc b/exported/Engine/Classes/SeqAct_SetMotionBlurParams.uc new file mode 100755 index 00000000..75f4747d --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetMotionBlurParams.uc @@ -0,0 +1,17 @@ +class SeqAct_SetMotionBlurParams extends SeqAct_Latent + native(Sequence) + hidecategories(Object); + +var() float MotionBlurAmount; +var() float InterpolateSeconds; +var float InterpolateElapsed; +var float OldMotionBlurAmount; + +defaultproperties +{ + MotionBlurAmount=0.1000000 + InterpolateSeconds=2.0000000 + InputLinks[0]=(LinkDesc="Enable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Disable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Motion Blur" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetObject.uc b/exported/Engine/Classes/SeqAct_SetObject.uc new file mode 100755 index 00000000..39109611 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetObject.uc @@ -0,0 +1,19 @@ +class SeqAct_SetObject extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var() Object DefaultValue; +var Object Value; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Value",LinkVar="None",PropertyName="Value",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Object" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetParticleSysParam.uc b/exported/Engine/Classes/SeqAct_SetParticleSysParam.uc new file mode 100755 index 00000000..a3175e73 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetParticleSysParam.uc @@ -0,0 +1,14 @@ +class SeqAct_SetParticleSysParam extends SequenceAction + hidecategories(Object); + +var() export editinline array InstanceParameters; +var() bool bOverrideScalar; +var() float ScalarValue; + +defaultproperties +{ + bOverrideScalar=true + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Scalar Value",LinkVar="None",PropertyName="ScalarValue",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set Particle Param" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetPhysics.uc b/exported/Engine/Classes/SeqAct_SetPhysics.uc new file mode 100755 index 00000000..b0178e13 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetPhysics.uc @@ -0,0 +1,11 @@ +class SeqAct_SetPhysics extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() Actor.EPhysics newPhysics; + +defaultproperties +{ + ObjName="Set Physics" + bSuppressAutoComment=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetRigidBodyIgnoreVehicles.uc b/exported/Engine/Classes/SeqAct_SetRigidBodyIgnoreVehicles.uc new file mode 100755 index 00000000..b18c9422 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetRigidBodyIgnoreVehicles.uc @@ -0,0 +1,10 @@ +class SeqAct_SetRigidBodyIgnoreVehicles extends SequenceAction + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Turn On",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Turn Off",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set RigidBodyIgnoreVehicles" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetSequenceVariable.uc b/exported/Engine/Classes/SeqAct_SetSequenceVariable.uc new file mode 100755 index 00000000..bff6a865 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetSequenceVariable.uc @@ -0,0 +1,9 @@ +class SeqAct_SetSequenceVariable extends SequenceAction + abstract + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + ObjName="Set Variable" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetSkelControlTarget.uc b/exported/Engine/Classes/SeqAct_SetSkelControlTarget.uc new file mode 100755 index 00000000..ca994635 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetSkelControlTarget.uc @@ -0,0 +1,12 @@ +class SeqAct_SetSkelControlTarget extends SequenceAction + hidecategories(Object); + +var() name SkelControlName; +var() array TargetActors; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="SkelMesh",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="TargetActor",LinkVar="None",PropertyName="TargetActors",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set SkelControl Target" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetSoundMode.uc b/exported/Engine/Classes/SeqAct_SetSoundMode.uc new file mode 100755 index 00000000..ed2e7714 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetSoundMode.uc @@ -0,0 +1,33 @@ +class SeqAct_SetSoundMode extends SequenceAction + hidecategories(Object); + +var() SoundMode SoundMode; +var() bool bTopPriority; + +event Activated() +{ + local PlayerController PC; + + PC = GetWorldInfo().GetALocalPlayerController(); + // End:0x59 + if(PC != none) + { + PC.OnSetSoundMode(self); + } + //return; +} + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 3; + //return ReturnValue; +} + +defaultproperties +{ + bCallHandler=false + InputLinks[0]=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks=none + ObjName="Set Sound Mode" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetString.uc b/exported/Engine/Classes/SeqAct_SetString.uc new file mode 100755 index 00000000..29d76f9c --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetString.uc @@ -0,0 +1,19 @@ +class SeqAct_SetString extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var string Target; +var() string Value; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 0; + //return ReturnValue; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="Value",LinkVar="None",PropertyName="Value",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Target",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="String" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetVector.uc b/exported/Engine/Classes/SeqAct_SetVector.uc new file mode 100755 index 00000000..225d5fd0 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetVector.uc @@ -0,0 +1,37 @@ +class SeqAct_SetVector extends SeqAct_SetSequenceVariable + hidecategories(Object); + +var() Vector DefaultValue; + +event Activated() +{ + local bool bIgnoreDefault; + local SeqVar_Vector VectVar; + local Vector Value; + + // End:0x5C + foreach LinkedVariables(Class'Engine.SeqVar_Vector', VectVar, "Value") + { + bIgnoreDefault = true; + Value += VectVar.VectValue; + } + // End:0x7F + if(!bIgnoreDefault) + { + Value = DefaultValue; + } + // End:0xCF + foreach LinkedVariables(Class'Engine.SeqVar_Vector', VectVar, "Target") + { + VectVar.VectValue = Value; + } + //return; +} + +defaultproperties +{ + bCallHandler=false + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Value",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Vector" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetVectorComponents.uc b/exported/Engine/Classes/SeqAct_SetVectorComponents.uc new file mode 100755 index 00000000..7a540f92 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetVectorComponents.uc @@ -0,0 +1,17 @@ +class SeqAct_SetVectorComponents extends SequenceAction + native(Sequence) + hidecategories(Object); + +var Vector OutVector; +var float X; +var float Y; +var float Z; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Output Vector",LinkVar="None",PropertyName="OutVector",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="X",LinkVar="None",PropertyName="X",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Y",LinkVar="None",PropertyName="Y",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Z",LinkVar="None",PropertyName="Z",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set Vector Components" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetVelocity.uc b/exported/Engine/Classes/SeqAct_SetVelocity.uc new file mode 100755 index 00000000..95da60ff --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetVelocity.uc @@ -0,0 +1,20 @@ +class SeqAct_SetVelocity extends SequenceAction + hidecategories(Object); + +var() Vector VelocityDir; +var() float VelocityMag; +var() bool bVelocityRelativeToActorRotation; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 0; + //return ReturnValue; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Velocity Dir",LinkVar="None",PropertyName="VelocityDir",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Velocity Mag",LinkVar="None",PropertyName="VelocityMag",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set Velocity" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SetWorldAttractorParam.uc b/exported/Engine/Classes/SeqAct_SetWorldAttractorParam.uc new file mode 100755 index 00000000..68f69fca --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SetWorldAttractorParam.uc @@ -0,0 +1,39 @@ +class SeqAct_SetWorldAttractorParam extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() array Attractor; +var bool bEnabledField; +var bool bFalloffTypeField; +var bool bFalloffExponentField; +var bool bRangeField; +var bool bStrengthField; +var() bool bEnabled; +var() WorldAttractor.EWorldAttractorFalloffType FalloffType; +var() RawDistributionFloat FalloffExponent; +var() RawDistributionFloat Range; +var() RawDistributionFloat Strength; + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__SeqAct_SetWorldAttractorParam.DistributionFalloffExponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionFalloffExponent' + begin object name="DistributionFalloffExponent" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__SeqAct_SetWorldAttractorParam.DistributionRange' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionRange' + begin object name="DistributionRange" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__SeqAct_SetWorldAttractorParam.DistributionStrength' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStrength' + begin object name="DistributionStrength" class=Engine.DistributionFloatConstant + end object + bEnabled=true + FalloffExponent=(Distribution=Distribution=DistributionFalloffExponent,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Range=(Distribution=Distribution=DistributionRange,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Strength=(Distribution=Distribution=DistributionStrength,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + ObjName="Set World Attractor Param" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_StreamInTextures.uc b/exported/Engine/Classes/SeqAct_StreamInTextures.uc new file mode 100755 index 00000000..b43e9cd1 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_StreamInTextures.uc @@ -0,0 +1,35 @@ +class SeqAct_StreamInTextures extends SeqAct_Latent + native(Sequence) + hidecategories(Object); + +var deprecated bool bLocationBased; +var const bool bStreamingActive; +var const bool bHasTriggeredAllLoaded; +var() float Seconds; +var() float StreamingDistanceMultiplier; +var const int NumWantingResourcesID; +var const float StopTimestamp; +var() array LocationActors; +var() array ForceMaterials; +var(CinematicMipLevels) const TextureGroupContainer CinematicTextureGroups; +var private native const transient int SelectedCinematicTextureGroups; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 2; + //return ReturnValue; +} + +defaultproperties +{ + Seconds=15.0000000 + StreamingDistanceMultiplier=1.0000000 + InputLinks[0]=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Out",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Aborted",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="All Loaded",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Actor",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Location",LinkVar="None",PropertyName="LocationActors",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Stream In Textures" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SubtractFloat.uc b/exported/Engine/Classes/SeqAct_SubtractFloat.uc new file mode 100755 index 00000000..38e4ca63 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SubtractFloat.uc @@ -0,0 +1,17 @@ +class SeqAct_SubtractFloat extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var() float ValueA; +var() float ValueB; +var float FloatResult; +var int IntResult; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="A",LinkVar="None",PropertyName="ValueA",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="B",LinkVar="None",PropertyName="ValueB",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="FloatResult",LinkVar="None",PropertyName="FloatResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="IntResult",LinkVar="None",PropertyName="IntResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Subtract Float" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_SubtractInt.uc b/exported/Engine/Classes/SeqAct_SubtractInt.uc new file mode 100755 index 00000000..1d8073f5 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_SubtractInt.uc @@ -0,0 +1,17 @@ +class SeqAct_SubtractInt extends SeqAct_SetSequenceVariable + native(Sequence) + hidecategories(Object); + +var() int ValueA; +var() int ValueB; +var float FloatResult; +var int IntResult; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="A",LinkVar="None",PropertyName="ValueA",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="B",LinkVar="None",PropertyName="ValueB",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="IntResult",LinkVar="None",PropertyName="IntResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="FloatResult",LinkVar="None",PropertyName="FloatResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Subtract Int" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_Switch.uc b/exported/Engine/Classes/SeqAct_Switch.uc new file mode 100755 index 00000000..c9b45edd --- /dev/null +++ b/exported/Engine/Classes/SeqAct_Switch.uc @@ -0,0 +1,19 @@ +class SeqAct_Switch extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() int LinkCount; +var() int IncrementAmount; +var() bool bLooping; +var() bool bAutoDisableLinks; +var() array Indices; + +defaultproperties +{ + LinkCount=1 + IncrementAmount=1 + Indices[0]=1 + OutputLinks[0]=(Links=none,LinkDesc="Link 1",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Index",LinkVar="None",PropertyName="Indices",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Switch" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_Teleport.uc b/exported/Engine/Classes/SeqAct_Teleport.uc new file mode 100755 index 00000000..981c08c7 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_Teleport.uc @@ -0,0 +1,59 @@ +class SeqAct_Teleport extends SequenceAction + hidecategories(Object); + +var() bool bUpdateRotation; +var() bool bCheckOverlap; +var() bool bResetVelocity; +var() float TeleportDistance; +var() array TeleportVolumes; + +static final function bool ShouldTeleport(Actor TestActor, Vector TeleportLocation, optional float TeleportDist, optional array Volumes) +{ + local int VolumeIdx; + + // End:0x60 + if((TeleportDist > 0.0000000) && VSizeSq(TestActor.Location - TeleportLocation) < (TeleportDist * TeleportDist)) + { + return false; + } + else + { + // End:0xF3 + if(Volumes.Length > 0) + { + VolumeIdx = 0; + J0x7B: + + // End:0xF3 [Loop If] + if(VolumeIdx < Volumes.Length) + { + // End:0xE5 + if((Volumes[VolumeIdx] != none) && Volumes[VolumeIdx].Encompasses(TestActor)) + { + return false; + } + ++VolumeIdx; + // [Loop Continue] + goto J0x7B; + } + } + } + return true; + //return ReturnValue; +} + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + bUpdateRotation=true + TeleportDistance=-1.0000000 + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Destination",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Teleport Volumes",LinkVar="None",PropertyName="TeleportVolumes",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=true,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Teleport" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_Timer.uc b/exported/Engine/Classes/SeqAct_Timer.uc new file mode 100755 index 00000000..d56f0c95 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_Timer.uc @@ -0,0 +1,15 @@ +class SeqAct_Timer extends SequenceAction + native(Sequence) + hidecategories(Object); + +var transient float ActivationTime; +var() float Time; + +defaultproperties +{ + bLatentExecution=true + InputLinks[0]=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Time",LinkVar="None",PropertyName="Time",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Timer" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_Toggle.uc b/exported/Engine/Classes/SeqAct_Toggle.uc new file mode 100755 index 00000000..7e45edc9 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_Toggle.uc @@ -0,0 +1,14 @@ +class SeqAct_Toggle extends SequenceAction + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Turn On",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Turn Off",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Toggle",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=true,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Bool",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + EventLinks[0]=(ExpectedType=Class'Engine.SequenceEvent',LinkedEvents=none,LinkDesc="Event",DrawX=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Toggle" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ToggleAffectedByHitEffects.uc b/exported/Engine/Classes/SeqAct_ToggleAffectedByHitEffects.uc new file mode 100755 index 00000000..16506959 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ToggleAffectedByHitEffects.uc @@ -0,0 +1,10 @@ +class SeqAct_ToggleAffectedByHitEffects extends SequenceAction + hidecategories(Object); + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Enable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Disable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Toggle",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Toggle AffectedByHitEffects" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ToggleCinematicMode.uc b/exported/Engine/Classes/SeqAct_ToggleCinematicMode.uc new file mode 100755 index 00000000..c8269f91 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ToggleCinematicMode.uc @@ -0,0 +1,45 @@ +class SeqAct_ToggleCinematicMode extends SequenceAction + hidecategories(Object); + +var() bool bDisableMovement; +var() bool bDisableTurning; +var() bool bHidePlayer; +var() bool bDisableInput; +var() bool bHideHUD; +var() bool bDeadBodies; +var() bool bDroppedPickups; + +event Activated() +{ + local Actor A; + + // End:0x115 + if(!InputLinks[1].bHasImpulse && bDeadBodies || bDroppedPickups) + { + // End:0x114 + foreach GetWorldInfo().DynamicActors(Class'Engine.Actor', A) + { + // End:0x113 + if(((bDeadBodies && A.IsA('GamePawn')) && A.bTearOff) || bDroppedPickups && A.IsA('DroppedPickup')) + { + A.Destroy(); + } + } + } + //return; +} + +defaultproperties +{ + bDisableMovement=true + bDisableTurning=true + bHidePlayer=true + bDisableInput=true + bHideHUD=true + bDeadBodies=true + bDroppedPickups=true + InputLinks[0]=(LinkDesc="Enable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Disable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Toggle",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Toggle Cinematic Mode" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ToggleConstraintDrive.uc b/exported/Engine/Classes/SeqAct_ToggleConstraintDrive.uc new file mode 100755 index 00000000..cf06b1bc --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ToggleConstraintDrive.uc @@ -0,0 +1,14 @@ +class SeqAct_ToggleConstraintDrive extends SequenceAction + hidecategories(Object); + +var() bool bEnableAngularPositionDrive; +var() bool bEnableAngularVelocityDrive; +var() bool bEnableLinearPositionDrive; +var() bool bEnableLinearvelocityDrive; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Enable Drive",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Disable All Drive",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Toggle Constraint Drive" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ToggleGodMode.uc b/exported/Engine/Classes/SeqAct_ToggleGodMode.uc new file mode 100755 index 00000000..69bb0c16 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ToggleGodMode.uc @@ -0,0 +1,10 @@ +class SeqAct_ToggleGodMode extends SequenceAction + hidecategories(Object); + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Enable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Disable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Toggle",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Toggle God Mode" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ToggleHUD.uc b/exported/Engine/Classes/SeqAct_ToggleHUD.uc new file mode 100755 index 00000000..d61670c5 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ToggleHUD.uc @@ -0,0 +1,16 @@ +class SeqAct_ToggleHUD extends SequenceAction + hidecategories(Object); + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 2; + //return ReturnValue; +} + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Show",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Hide",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Toggle",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Toggle HUD" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ToggleHidden.uc b/exported/Engine/Classes/SeqAct_ToggleHidden.uc new file mode 100755 index 00000000..934c5e19 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ToggleHidden.uc @@ -0,0 +1,13 @@ +class SeqAct_ToggleHidden extends SeqAct_Toggle + hidecategories(Object); + +var() bool bToggleBasedActors; +var() array< Class > IgnoreBasedClasses; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Hide",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="UnHide",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Toggle",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Toggle Hidden" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_ToggleInput.uc b/exported/Engine/Classes/SeqAct_ToggleInput.uc new file mode 100755 index 00000000..482dd8dc --- /dev/null +++ b/exported/Engine/Classes/SeqAct_ToggleInput.uc @@ -0,0 +1,13 @@ +class SeqAct_ToggleInput extends SeqAct_Toggle + hidecategories(Object); + +var() bool bToggleMovement; +var() bool bToggleTurning; + +defaultproperties +{ + bToggleMovement=true + bToggleTurning=true + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=true,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Toggle Input" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_Trace.uc b/exported/Engine/Classes/SeqAct_Trace.uc new file mode 100755 index 00000000..12cd14e6 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_Trace.uc @@ -0,0 +1,31 @@ +class SeqAct_Trace extends SequenceAction + native(Sequence) + hidecategories(Object); + +var() bool bTraceActors; +var() bool bTraceWorld; +var() Vector TraceExtent; +var() Vector StartOffset; +var() Vector EndOffset; +var() editconst Object HitObject; +var() editconst float Distance; +var() editconst Vector HitLocation; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + bTraceWorld=true + OutputLinks[0]=(Links=none,LinkDesc="Not Obstructed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Obstructed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Start",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="End",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="HitObject",LinkVar="None",PropertyName="HitObject",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Distance",LinkVar="None",PropertyName="Distance",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[4]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="HitLoc",LinkVar="None",PropertyName="HitLocation",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Trace" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_UpdatePhysBonesFromAnim.uc b/exported/Engine/Classes/SeqAct_UpdatePhysBonesFromAnim.uc new file mode 100755 index 00000000..971d05da --- /dev/null +++ b/exported/Engine/Classes/SeqAct_UpdatePhysBonesFromAnim.uc @@ -0,0 +1,16 @@ +class SeqAct_UpdatePhysBonesFromAnim extends SequenceAction + hidecategories(Object); + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Update",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Disable Physics",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Enable Physics",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Force Phys Bones To Anim Pose" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqAct_WaitForLevelsVisible.uc b/exported/Engine/Classes/SeqAct_WaitForLevelsVisible.uc new file mode 100755 index 00000000..921cf983 --- /dev/null +++ b/exported/Engine/Classes/SeqAct_WaitForLevelsVisible.uc @@ -0,0 +1,34 @@ +class SeqAct_WaitForLevelsVisible extends SeqAct_Latent + native(Sequence) + hidecategories(Object); + +var() array LevelNames; +var() bool bShouldBlockOnLoad; + +// Export USeqAct_WaitForLevelsVisible::execCheckLevelsVisible(FFrame&, void* const) +native final function bool CheckLevelsVisible(); + +event Activated() +{ + local PlayerController PC; + + // End:0xB2 + foreach GetWorldInfo().AllControllers(Class'Engine.PlayerController', PC) + { + // End:0xB1 + if((NetConnection(PC.Player) != none) && ChildConnection(PC.Player) == none) + { + PC.ClientWaitForLevelsVisible(self); + } + } + //return; +} + +defaultproperties +{ + bShouldBlockOnLoad=true + InputLinks[0]=(LinkDesc="Wait",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="Wait for Levels to be visible" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_CompareBool.uc b/exported/Engine/Classes/SeqCond_CompareBool.uc new file mode 100755 index 00000000..c382294f --- /dev/null +++ b/exported/Engine/Classes/SeqCond_CompareBool.uc @@ -0,0 +1,20 @@ +class SeqCond_CompareBool extends SequenceCondition + native(Sequence) + hidecategories(Object); + +var bool bResult; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Bool",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Result",LinkVar="None",PropertyName="bResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Compare Bool" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_CompareFloat.uc b/exported/Engine/Classes/SeqCond_CompareFloat.uc new file mode 100755 index 00000000..72c73a86 --- /dev/null +++ b/exported/Engine/Classes/SeqCond_CompareFloat.uc @@ -0,0 +1,18 @@ +class SeqCond_CompareFloat extends SequenceCondition + native(Sequence) + hidecategories(Object); + +var() float ValueA; +var() float ValueB; + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="A <= B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="A > B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="A == B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="A < B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[4]=(Links=none,LinkDesc="A >= B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="A",LinkVar="None",PropertyName="ValueA",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="B",LinkVar="None",PropertyName="ValueB",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Compare Float" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_CompareInt.uc b/exported/Engine/Classes/SeqCond_CompareInt.uc new file mode 100755 index 00000000..2ac673f9 --- /dev/null +++ b/exported/Engine/Classes/SeqCond_CompareInt.uc @@ -0,0 +1,18 @@ +class SeqCond_CompareInt extends SequenceCondition + native(Sequence) + hidecategories(Object); + +var() int ValueA; +var() int ValueB; + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="A <= B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="A > B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="A == B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="A < B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[4]=(Links=none,LinkDesc="A >= B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="A",LinkVar="None",PropertyName="ValueA",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="B",LinkVar="None",PropertyName="ValueB",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Compare Int" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_CompareObject.uc b/exported/Engine/Classes/SeqCond_CompareObject.uc new file mode 100755 index 00000000..7ef8860b --- /dev/null +++ b/exported/Engine/Classes/SeqCond_CompareObject.uc @@ -0,0 +1,12 @@ +class SeqCond_CompareObject extends SequenceCondition + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="A == B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="A != B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="A",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="B",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Compare Objects" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_GetServerType.uc b/exported/Engine/Classes/SeqCond_GetServerType.uc new file mode 100755 index 00000000..dbaaff6a --- /dev/null +++ b/exported/Engine/Classes/SeqCond_GetServerType.uc @@ -0,0 +1,18 @@ +class SeqCond_GetServerType extends SequenceCondition + native(Sequence) + hidecategories(Object); + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="Standalone",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Dedicated Server",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Listen Server",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Client",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Server Type" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_Increment.uc b/exported/Engine/Classes/SeqCond_Increment.uc new file mode 100755 index 00000000..502777ff --- /dev/null +++ b/exported/Engine/Classes/SeqCond_Increment.uc @@ -0,0 +1,20 @@ +class SeqCond_Increment extends SequenceCondition + native(Sequence) + hidecategories(Object); + +var() int IncrementAmount; +var() int ValueA; +var() int ValueB; + +defaultproperties +{ + IncrementAmount=1 + OutputLinks[0]=(Links=none,LinkDesc="A <= B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="A > B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="A == B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="A < B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[4]=(Links=none,LinkDesc="A >= B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="A",LinkVar="None",PropertyName="ValueA",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="B",LinkVar="None",PropertyName="ValueB",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Int Counter" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_IncrementFloat.uc b/exported/Engine/Classes/SeqCond_IncrementFloat.uc new file mode 100755 index 00000000..595c8a38 --- /dev/null +++ b/exported/Engine/Classes/SeqCond_IncrementFloat.uc @@ -0,0 +1,20 @@ +class SeqCond_IncrementFloat extends SequenceCondition + native(Sequence) + hidecategories(Object); + +var() float IncrementAmount; +var() float ValueA; +var() float ValueB; + +defaultproperties +{ + IncrementAmount=1.0000000 + OutputLinks[0]=(Links=none,LinkDesc="A <= B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="A > B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="A == B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="A < B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[4]=(Links=none,LinkDesc="A >= B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="A",LinkVar="None",PropertyName="ValueA",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="B",LinkVar="None",PropertyName="ValueB",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Float Counter" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_IsAlive.uc b/exported/Engine/Classes/SeqCond_IsAlive.uc new file mode 100755 index 00000000..be52b3d3 --- /dev/null +++ b/exported/Engine/Classes/SeqCond_IsAlive.uc @@ -0,0 +1,11 @@ +class SeqCond_IsAlive extends SequenceCondition + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Players",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Is Alive" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_IsBenchmarking.uc b/exported/Engine/Classes/SeqCond_IsBenchmarking.uc new file mode 100755 index 00000000..603549ad --- /dev/null +++ b/exported/Engine/Classes/SeqCond_IsBenchmarking.uc @@ -0,0 +1,16 @@ +class SeqCond_IsBenchmarking extends SequenceCondition + native(Sequence) + hidecategories(Object); + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 0; + //return ReturnValue; +} + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="Yes",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="No",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Is Benchmarking?" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_IsConsole.uc b/exported/Engine/Classes/SeqCond_IsConsole.uc new file mode 100755 index 00000000..507a8f5f --- /dev/null +++ b/exported/Engine/Classes/SeqCond_IsConsole.uc @@ -0,0 +1,10 @@ +class SeqCond_IsConsole extends SequenceCondition + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Is Console" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_IsInCombat.uc b/exported/Engine/Classes/SeqCond_IsInCombat.uc new file mode 100755 index 00000000..465e0549 --- /dev/null +++ b/exported/Engine/Classes/SeqCond_IsInCombat.uc @@ -0,0 +1,11 @@ +class SeqCond_IsInCombat extends SequenceCondition + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Players",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="In Combat" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_IsLoggedIn.uc b/exported/Engine/Classes/SeqCond_IsLoggedIn.uc new file mode 100755 index 00000000..b734d912 --- /dev/null +++ b/exported/Engine/Classes/SeqCond_IsLoggedIn.uc @@ -0,0 +1,48 @@ +class SeqCond_IsLoggedIn extends SequenceCondition + native(Sequence) + hidecategories(Object); + +var() int NumNeededLoggedIn; + +event bool CheckLogins() +{ + local int LoggedInCount, Count; + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInt; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xF1 + if(OnlineSub != none) + { + PlayerInt = OnlineSub.PlayerInterface; + // End:0xF1 + if(NotEqual_InterfaceInterface(PlayerInt, OnlinePlayerInterface(none))) + { + Count = 0; + J0x8B: + + // End:0xF1 [Loop If] + if(Count < NumNeededLoggedIn) + { + // End:0xE3 + if(int(PlayerInt.GetLoginStatus(byte(Count))) >= int(1)) + { + LoggedInCount++; + } + Count++; + // [Loop Continue] + goto J0x8B; + } + } + } + return LoggedInCount >= NumNeededLoggedIn; + //return ReturnValue; +} + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="NeededLoggedIn",LinkVar="None",PropertyName="NumNeededLoggedIn",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Is Logged In" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_IsPIE.uc b/exported/Engine/Classes/SeqCond_IsPIE.uc new file mode 100755 index 00000000..07e3d0c5 --- /dev/null +++ b/exported/Engine/Classes/SeqCond_IsPIE.uc @@ -0,0 +1,16 @@ +class SeqCond_IsPIE extends SequenceCondition + native(Sequence) + hidecategories(Object); + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 0; + //return ReturnValue; +} + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="Yes",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="No",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Is PIE?" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_IsSameTeam.uc b/exported/Engine/Classes/SeqCond_IsSameTeam.uc new file mode 100755 index 00000000..60e8c772 --- /dev/null +++ b/exported/Engine/Classes/SeqCond_IsSameTeam.uc @@ -0,0 +1,11 @@ +class SeqCond_IsSameTeam extends SequenceCondition + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Players",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Same Team" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_MatureLanguage.uc b/exported/Engine/Classes/SeqCond_MatureLanguage.uc new file mode 100755 index 00000000..aa5eddc3 --- /dev/null +++ b/exported/Engine/Classes/SeqCond_MatureLanguage.uc @@ -0,0 +1,10 @@ +class SeqCond_MatureLanguage extends SequenceCondition + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="Allowed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Disallowed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Mature Language Allowed" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_ShowGore.uc b/exported/Engine/Classes/SeqCond_ShowGore.uc new file mode 100755 index 00000000..7fd9d512 --- /dev/null +++ b/exported/Engine/Classes/SeqCond_ShowGore.uc @@ -0,0 +1,10 @@ +class SeqCond_ShowGore extends SequenceCondition + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="Allowed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Disallowed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Show Gore" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_SwitchBase.uc b/exported/Engine/Classes/SeqCond_SwitchBase.uc new file mode 100755 index 00000000..b022fa95 --- /dev/null +++ b/exported/Engine/Classes/SeqCond_SwitchBase.uc @@ -0,0 +1,30 @@ +class SeqCond_SwitchBase extends SequenceCondition + abstract + native(Sequence) + hidecategories(Object); + +event VerifyDefaultCaseValue() +{ + //return; +} + +event bool IsFallThruEnabled(int ValueIndex) +{ + return false; + //return ReturnValue; +} + +event InsertValueEntry(int InsertIndex) +{ + //return; +} + +event RemoveValueEntry(int RemoveIndex) +{ + //return; +} + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="Default",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_SwitchClass.uc b/exported/Engine/Classes/SeqCond_SwitchClass.uc new file mode 100755 index 00000000..dc4540ee --- /dev/null +++ b/exported/Engine/Classes/SeqCond_SwitchClass.uc @@ -0,0 +1,56 @@ +class SeqCond_SwitchClass extends SeqCond_SwitchBase + native(Sequence) + hidecategories(Object); + +struct native SwitchClassInfo +{ + var() name ClassName; + var() byte bFallThru; + + structdefaultproperties + { + ClassName="None" + bFallThru=0 + } +}; + +var() array ClassArray; + +event VerifyDefaultCaseValue() +{ + super.VerifyDefaultCaseValue(); + ClassArray.Length = OutputLinks.Length; + ClassArray[ClassArray.Length - 1].ClassName = 'Default'; + ClassArray[ClassArray.Length - 1].bFallThru = 0; + //return; +} + +event bool IsFallThruEnabled(int ValueIndex) +{ + return ((ValueIndex >= 0) && ValueIndex < ClassArray.Length) && int(ClassArray[ValueIndex].bFallThru) != int(0); + //return ReturnValue; +} + +event InsertValueEntry(int InsertIndex) +{ + InsertIndex = Clamp(InsertIndex, 0, ClassArray.Length); + ClassArray.Insert(InsertIndex, 1); + //return; +} + +event RemoveValueEntry(int RemoveIndex) +{ + // End:0x3E + if((RemoveIndex >= 0) && RemoveIndex < ClassArray.Length) + { + ClassArray.Remove(RemoveIndex, 1); + } + //return; +} + +defaultproperties +{ + ClassArray[0]=(ClassName="Default",bFallThru=0) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Object",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Switch Class" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_SwitchObject.uc b/exported/Engine/Classes/SeqCond_SwitchObject.uc new file mode 100755 index 00000000..41433fda --- /dev/null +++ b/exported/Engine/Classes/SeqCond_SwitchObject.uc @@ -0,0 +1,72 @@ +class SeqCond_SwitchObject extends SeqCond_SwitchBase + native(Sequence) + hidecategories(Object); + +struct native SwitchObjectCase +{ + var() Object ObjectValue; + var() bool bFallThru; + var() bool bDefaultValue; + + structdefaultproperties + { + ObjectValue=none + bFallThru=false + bDefaultValue=false + } +}; + +var() array SupportedValues; + +event VerifyDefaultCaseValue() +{ + local int I; + + super.VerifyDefaultCaseValue(); + SupportedValues.Length = OutputLinks.Length; + I = 0; + J0x2A: + + // End:0x7C [Loop If] + if(I < (SupportedValues.Length - 1)) + { + SupportedValues[I].bDefaultValue = false; + I++; + // [Loop Continue] + goto J0x2A; + } + SupportedValues[SupportedValues.Length - 1].ObjectValue = none; + SupportedValues[SupportedValues.Length - 1].bFallThru = false; + SupportedValues[SupportedValues.Length - 1].bDefaultValue = true; + //return; +} + +event bool IsFallThruEnabled(int ValueIndex) +{ + return ((ValueIndex >= 0) && ValueIndex < SupportedValues.Length) && SupportedValues[ValueIndex].bFallThru; + //return ReturnValue; +} + +event InsertValueEntry(int InsertIndex) +{ + InsertIndex = Clamp(InsertIndex, 0, SupportedValues.Length); + SupportedValues.Insert(InsertIndex, 1); + //return; +} + +event RemoveValueEntry(int RemoveIndex) +{ + // End:0x3E + if((RemoveIndex >= 0) && RemoveIndex < SupportedValues.Length) + { + SupportedValues.Remove(RemoveIndex, 1); + } + //return; +} + +defaultproperties +{ + SupportedValues[0]=(ObjectValue=none,bFallThru=false,bDefaultValue=true) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Object",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Switch Object" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqCond_SwitchPlatform.uc b/exported/Engine/Classes/SeqCond_SwitchPlatform.uc new file mode 100755 index 00000000..6a6de277 --- /dev/null +++ b/exported/Engine/Classes/SeqCond_SwitchPlatform.uc @@ -0,0 +1,24 @@ +class SeqCond_SwitchPlatform extends SequenceCondition + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="Default",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Desktop",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Console (non-mobile)",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Mobile",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[4]=(Links=none,LinkDesc="Windows",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[5]=(Links=none,LinkDesc="Xbox360",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[6]=(Links=none,LinkDesc="PS3",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[7]=(Links=none,LinkDesc="iPhone",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[8]=(Links=none,LinkDesc="Tegra2",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[9]=(Links=none,LinkDesc="Linux",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[10]=(Links=none,LinkDesc="MacOS",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[11]=(Links=none,LinkDesc="NGP",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[12]=(Links=none,LinkDesc="WiiU",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[13]=(Links=none,LinkDesc="Flash",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[14]=(Links=none,LinkDesc="Xbox One",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[15]=(Links=none,LinkDesc="PS4",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Platform" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_AIReachedRouteActor.uc b/exported/Engine/Classes/SeqEvent_AIReachedRouteActor.uc new file mode 100755 index 00000000..b536caad --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_AIReachedRouteActor.uc @@ -0,0 +1,8 @@ +class SeqEvent_AIReachedRouteActor extends SequenceEvent + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Reached Route Actor" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_AISeeEnemy.uc b/exported/Engine/Classes/SeqEvent_AISeeEnemy.uc new file mode 100755 index 00000000..1e0b2ffa --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_AISeeEnemy.uc @@ -0,0 +1,10 @@ +class SeqEvent_AISeeEnemy extends SequenceEvent + native(Sequence) + hidecategories(Object); + +var() float MaxSightDistance; + +defaultproperties +{ + ObjName="See Enemy" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_AnalogInput.uc b/exported/Engine/Classes/SeqEvent_AnalogInput.uc new file mode 100755 index 00000000..08d4775f --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_AnalogInput.uc @@ -0,0 +1,20 @@ +class SeqEvent_AnalogInput extends SequenceEvent + native(Sequence) + hidecategories(Object); + +var() bool bTrapInput; +var() int AllowedPlayerIndex; +var() array InputNames; + +defaultproperties +{ + bTrapInput=true + AllowedPlayerIndex=-1 + MaxTriggerCount=0 + OutputLinks[0]=(Links=none,LinkDesc="Output",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="Input Name",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Float Value",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Vector Value",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Analog Input" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_AnimNotify.uc b/exported/Engine/Classes/SeqEvent_AnimNotify.uc new file mode 100755 index 00000000..35f2437d --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_AnimNotify.uc @@ -0,0 +1,13 @@ +class SeqEvent_AnimNotify extends SequenceEvent + native(Sequence) + hidecategories(Object); + +var() name NotifyName; + +defaultproperties +{ + bPlayerOnly=false + bAutoActivateOutputLinks=true + VariableLinks=none + ObjName="Anim Notify" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_Console.uc b/exported/Engine/Classes/SeqEvent_Console.uc new file mode 100755 index 00000000..d8b6c952 --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_Console.uc @@ -0,0 +1,14 @@ +class SeqEvent_Console extends SequenceEvent + native(Sequence) + hidecategories(Object); + +var() name ConsoleEventName; +var() string EventDesc; + +defaultproperties +{ + ConsoleEventName="Default" + EventDesc="No description" + MaxTriggerCount=0 + ObjName="Console Event" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_ConstraintBroken.uc b/exported/Engine/Classes/SeqEvent_ConstraintBroken.uc new file mode 100755 index 00000000..092338b6 --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_ConstraintBroken.uc @@ -0,0 +1,9 @@ +class SeqEvent_ConstraintBroken extends SequenceEvent + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Constraint Broken" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_Death.uc b/exported/Engine/Classes/SeqEvent_Death.uc new file mode 100755 index 00000000..2bb5da35 --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_Death.uc @@ -0,0 +1,8 @@ +class SeqEvent_Death extends SequenceEvent + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Death" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_Destroyed.uc b/exported/Engine/Classes/SeqEvent_Destroyed.uc new file mode 100755 index 00000000..8f1919f9 --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_Destroyed.uc @@ -0,0 +1,8 @@ +class SeqEvent_Destroyed extends SequenceEvent + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + ObjName="Destroyed" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_GetInventory.uc b/exported/Engine/Classes/SeqEvent_GetInventory.uc new file mode 100755 index 00000000..b0c1781b --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_GetInventory.uc @@ -0,0 +1,10 @@ +class SeqEvent_GetInventory extends SequenceEvent + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Inventory",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Get Inventory" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_HitWall.uc b/exported/Engine/Classes/SeqEvent_HitWall.uc new file mode 100755 index 00000000..96185076 --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_HitWall.uc @@ -0,0 +1,10 @@ +class SeqEvent_HitWall extends SequenceEvent + hidecategories(Object); + +defaultproperties +{ + ReTriggerDelay=0.1000000 + bPlayerOnly=false + bAutoActivateOutputLinks=true + ObjName="Hit Wall" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_Input.uc b/exported/Engine/Classes/SeqEvent_Input.uc new file mode 100755 index 00000000..6ccc2d20 --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_Input.uc @@ -0,0 +1,21 @@ +class SeqEvent_Input extends SequenceEvent + native(Sequence) + hidecategories(Object); + +var() bool bTrapInput; +var() int AllowedPlayerIndex; +var() array InputNames; + +defaultproperties +{ + bTrapInput=true + AllowedPlayerIndex=-1 + MaxTriggerCount=0 + ReTriggerDelay=0.0100000 + OutputLinks[0]=(Links=none,LinkDesc="Pressed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Repeated",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Released",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="Input Name",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Key/Button Pressed" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_LOS.uc b/exported/Engine/Classes/SeqEvent_LOS.uc new file mode 100755 index 00000000..78ff113b --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_LOS.uc @@ -0,0 +1,22 @@ +class SeqEvent_LOS extends SequenceEvent + hidecategories(Object); + +var() float ScreenCenterDistance; +var() float TriggerDistance; +var() bool bCheckForObstructions; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + ScreenCenterDistance=50.0000000 + TriggerDistance=2048.0000000 + bCheckForObstructions=true + OutputLinks[0]=(Links=none,LinkDesc="Look",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Stop Look",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Line Of Sight" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_LevelBeginning.uc b/exported/Engine/Classes/SeqEvent_LevelBeginning.uc new file mode 100755 index 00000000..145f2fe1 --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_LevelBeginning.uc @@ -0,0 +1,10 @@ +class SeqEvent_LevelBeginning extends SequenceEvent + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + VariableLinks=none + ObjName="Level Beginning" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_LevelLoaded.uc b/exported/Engine/Classes/SeqEvent_LevelLoaded.uc new file mode 100755 index 00000000..7defefc3 --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_LevelLoaded.uc @@ -0,0 +1,19 @@ +class SeqEvent_LevelLoaded extends SequenceEvent + native(Sequence) + hidecategories(Object); + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 2; + //return ReturnValue; +} + +defaultproperties +{ + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Loaded and Visible",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Beginning of Level",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Level Reset",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="Level Loaded" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_LevelStartup.uc b/exported/Engine/Classes/SeqEvent_LevelStartup.uc new file mode 100755 index 00000000..4be58c6e --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_LevelStartup.uc @@ -0,0 +1,10 @@ +class SeqEvent_LevelStartup extends SequenceEvent + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + VariableLinks=none + ObjName="Level Startup" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_MobileTouch.uc b/exported/Engine/Classes/SeqEvent_MobileTouch.uc new file mode 100755 index 00000000..17cb3b0e --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_MobileTouch.uc @@ -0,0 +1,10 @@ +class SeqEvent_MobileTouch extends SequenceEvent + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + ReTriggerDelay=0.2000000 + OutputLinks[0]=(Links=none,LinkDesc="Tap",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="MobileInput Touch Actor" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_Mover.uc b/exported/Engine/Classes/SeqEvent_Mover.uc new file mode 100755 index 00000000..cf6e8609 --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_Mover.uc @@ -0,0 +1,98 @@ +class SeqEvent_Mover extends SequenceEvent + native(Sequence) + hidecategories(Object,SequenceEvent); + +var() float StayOpenTime; + +event RegisterEvent() +{ + local InterpActor Mover; + + Mover = InterpActor(Originator); + // End:0x53 + if(Mover != none) + { + Mover.StayOpenTime = StayOpenTime; + } + //return; +} + +function NotifyEncroachingOn(Actor Hit) +{ + local SeqVar_Object ObjVar; + local array ActivateIndices; + + ActivateIndices[0] = 3; + // End:0x8C + if(CheckActivate(Originator, Instigator, false, ActivateIndices, true)) + { + // End:0x8B + foreach LinkedVariables(Class'Engine.SeqVar_Object', ObjVar, "Actor Hit") + { + ObjVar.SetObjectValue(Hit); + } + } + //return; +} + +function NotifyAttached(Actor Other) +{ + local array ActivateIndices; + + // End:0x72 + if((Pawn(Other) != none) && IsZero(Originator.Velocity)) + { + ActivateIndices[0] = 0; + CheckActivate(Originator, Other, false, ActivateIndices); + } + //return; +} + +function NotifyDetached(Actor Other) +{ + local Pawn P; + local array ActivateIndices; + + // End:0x12 + if(Originator == none) + { + } + else + { + // End:0x90 + if(Pawn(Other) != none) + { + // End:0x5B + foreach Originator.BasedActors(Class'Engine.Pawn', P) + { + return; + } + ActivateIndices[0] = 1; + CheckActivate(Originator, Instigator, false, ActivateIndices); + } + } + //return; +} + +function NotifyFinishedOpen() +{ + local array ActivateIndices; + + ActivateIndices[0] = 2; + CheckActivate(Originator, Instigator, false, ActivateIndices); + //return; +} + +defaultproperties +{ + StayOpenTime=1.5000000 + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Pawn Attached",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Pawn Detached",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Open Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Hit Actor",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Actor Hit",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Mover" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_ParticleEvent.uc b/exported/Engine/Classes/SeqEvent_ParticleEvent.uc new file mode 100755 index 00000000..0fb07d17 --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_ParticleEvent.uc @@ -0,0 +1,41 @@ +class SeqEvent_ParticleEvent extends SequenceEvent + native(Sequence) + hidecategories(Object); + +enum EParticleEventOutputType +{ + ePARTICLEOUT_Spawn, // 0 + ePARTICLEOUT_Death, // 1 + ePARTICLEOUT_Collision, // 2 + ePARTICLEOUT_AttractorCollision,// 3 + ePARTICLEOUT_Kismet, // 4 + ePARTICLEOUT_MAX // 5 +}; + +var SeqEvent_ParticleEvent.EParticleEventOutputType EventType; +var Vector EventPosition; +var float EventEmitterTime; +var Vector EventVelocity; +var float EventParticleTime; +var Vector EventNormal; +var() bool UseRelfectedImpactVector; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 0; + //return ReturnValue; +} + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Type",LinkVar="None",PropertyName="EventType",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Pos",LinkVar="None",PropertyName="EventPosition",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="ETime",LinkVar="None",PropertyName="EventEmitterTime",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[4]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Vel",LinkVar="None",PropertyName="EventVelocity",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[5]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="PTime",LinkVar="None",PropertyName="EventParticleTime",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[6]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Normal",LinkVar="None",PropertyName="EventNormal",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="ParticleEvent" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_PickupStatusChange.uc b/exported/Engine/Classes/SeqEvent_PickupStatusChange.uc new file mode 100755 index 00000000..e9a307a6 --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_PickupStatusChange.uc @@ -0,0 +1,11 @@ +class SeqEvent_PickupStatusChange extends SequenceEvent + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Available",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Taken",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Pickup Status Change" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_PlayerSpawned.uc b/exported/Engine/Classes/SeqEvent_PlayerSpawned.uc new file mode 100755 index 00000000..34e5c6db --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_PlayerSpawned.uc @@ -0,0 +1,11 @@ +class SeqEvent_PlayerSpawned extends SequenceEvent + hidecategories(Object); + +var Object SpawnPoint; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Spawn Point",LinkVar="None",PropertyName="SpawnPoint",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Player Spawned" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_ProjectileLanded.uc b/exported/Engine/Classes/SeqEvent_ProjectileLanded.uc new file mode 100755 index 00000000..99a96a03 --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_ProjectileLanded.uc @@ -0,0 +1,14 @@ +class SeqEvent_ProjectileLanded extends SequenceEvent + native(Sequence) + hidecategories(Object); + +var() float MaxDistance; + +defaultproperties +{ + bPlayerOnly=false + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Projectile",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Shooter",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Witness",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Projectile Landed" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_RemoteEvent.uc b/exported/Engine/Classes/SeqEvent_RemoteEvent.uc new file mode 100755 index 00000000..249045dd --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_RemoteEvent.uc @@ -0,0 +1,20 @@ +class SeqEvent_RemoteEvent extends SequenceEvent + native(Sequence) + hidecategories(Object); + +var() name EventName; +var transient bool bStatusIsOk; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + EventName="DefaultEvent" + MaxTriggerCount=0 + bPlayerOnly=false + ObjName="Remote Event" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_RigidBodyCollision.uc b/exported/Engine/Classes/SeqEvent_RigidBodyCollision.uc new file mode 100755 index 00000000..3f68fe4a --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_RigidBodyCollision.uc @@ -0,0 +1,14 @@ +class SeqEvent_RigidBodyCollision extends SequenceEvent + native(Sequence) + hidecategories(Object); + +var() float MinCollisionVelocity; + +defaultproperties +{ + bPlayerOnly=false + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="ImpactVelocity",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="ImpactLocation",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Rigid Body Collision" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_SeeDeath.uc b/exported/Engine/Classes/SeqEvent_SeeDeath.uc new file mode 100755 index 00000000..537f3f7c --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_SeeDeath.uc @@ -0,0 +1,12 @@ +class SeqEvent_SeeDeath extends SequenceEvent + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Victim",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Killer",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Witness",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="See Death" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_SequenceActivated.uc b/exported/Engine/Classes/SeqEvent_SequenceActivated.uc new file mode 100755 index 00000000..d438aaf9 --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_SequenceActivated.uc @@ -0,0 +1,13 @@ +class SeqEvent_SequenceActivated extends SequenceEvent + native(Sequence) + hidecategories(Object); + +var() string InputLabel; + +defaultproperties +{ + InputLabel="In" + MaxTriggerCount=0 + bPlayerOnly=false + ObjName="Sequence Activated" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_TakeDamage.uc b/exported/Engine/Classes/SeqEvent_TakeDamage.uc new file mode 100755 index 00000000..f61ca90c --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_TakeDamage.uc @@ -0,0 +1,144 @@ +class SeqEvent_TakeDamage extends SequenceEvent + native(Sequence) + hidecategories(Object); + +var() float MinDamageAmount; +var() float DamageThreshold; +var() array< Class > DamageTypes; +var() array< Class > IgnoreDamageTypes; +var float CurrentDamage; +var() bool bResetDamageOnToggle; + +final function bool IsValidDamageType(Class inDamageType) +{ + local int Idx; + local bool bValidDamageType; + + // End:0x8F + if(DamageTypes.Length > 0) + { + bValidDamageType = false; + Idx = 0; + J0x27: + + // End:0x7E [Loop If] + if(Idx < DamageTypes.Length) + { + // End:0x70 + if(ClassIsChildOf(inDamageType, DamageTypes[Idx])) + { + bValidDamageType = true; + // [Explicit Break] + goto J0x7E; + } + Idx++; + // [Loop Continue] + goto J0x27; + } + J0x7E: + + // End:0x8F + if(!bValidDamageType) + { + return false; + } + } + // End:0xF4 + if(IgnoreDamageTypes.Length > 0) + { + Idx = 0; + J0xAA: + + // End:0xF4 [Loop If] + if(Idx < IgnoreDamageTypes.Length) + { + // End:0xE6 + if(ClassIsChildOf(inDamageType, IgnoreDamageTypes[Idx])) + { + return false; + } + Idx++; + // [Loop Continue] + goto J0xAA; + } + } + return true; + //return ReturnValue; +} + +function HandleDamage(Actor InOriginator, Actor InInstigator, Class inDamageType, int inAmount) +{ + local SeqVar_Float FloatVar; + local bool bAlreadyActivatedThisTick; + + PublishLinkedVariableValues(); + // End:0x1FD + if(((((InOriginator != none) && bEnabled) && float(inAmount) >= MinDamageAmount) && IsValidDamageType(inDamageType)) && !bPlayerOnly || (InInstigator != none) && InInstigator.IsPlayerOwned()) + { + CurrentDamage += float(inAmount); + // End:0x1FD + if(CurrentDamage >= DamageThreshold) + { + bAlreadyActivatedThisTick = bActive && ActivationTime ~= GetWorldInfo().TimeSeconds; + // End:0x1FD + if(CheckActivate(InOriginator, InInstigator, false)) + { + // End:0x1C3 + foreach LinkedVariables(Class'Engine.SeqVar_Float', FloatVar, "Damage Taken") + { + // End:0x19A + if(bAlreadyActivatedThisTick) + { + FloatVar.FloatValue += CurrentDamage; + // End:0x1C2 + continue; + } + FloatVar.FloatValue = CurrentDamage; + } + // End:0x1E9 + if(DamageThreshold <= 0.0000000) + { + CurrentDamage = 0.0000000; + } + else + { + CurrentDamage -= DamageThreshold; + } + } + } + } + //return; +} + +function Reset() +{ + super.Reset(); + CurrentDamage = 0.0000000; + //return; +} + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 2; + //return ReturnValue; +} + +event Toggled() +{ + // End:0x1C + if(bResetDamageOnToggle) + { + CurrentDamage = 0.0000000; + } + super.Toggled(); + //return; +} + +defaultproperties +{ + DamageThreshold=100.0000000 + bResetDamageOnToggle=true + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Damage Taken",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Take Damage" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_Touch.uc b/exported/Engine/Classes/SeqEvent_Touch.uc new file mode 100755 index 00000000..7bd8655b --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_Touch.uc @@ -0,0 +1,73 @@ +class SeqEvent_Touch extends SequenceEvent + native(Sequence) + hidecategories(Object); + +var(TouchTypes) array< Class > ClassProximityTypes; +var(TouchTypes) array< Class > IgnoredClassProximityTypes; +var() bool bForceOverlapping; +var() bool bUseInstigator; +var() bool bAllowDeadPawns; +var array TouchedList; + +// Export USeqEvent_Touch::execCheckTouchActivate(FFrame&, void* const) +native final function bool CheckTouchActivate(Actor InOriginator, Actor InInstigator, optional bool bTest); + +// Export USeqEvent_Touch::execCheckUnTouchActivate(FFrame&, void* const) +native final function bool CheckUnTouchActivate(Actor InOriginator, Actor InInstigator, optional bool bTest); + +event Toggled() +{ + local int Idx; + + // End:0xA1 + if(bEnabled) + { + // End:0x9E + if(Originator != none) + { + Idx = 0; + J0x27: + + // End:0x9E [Loop If] + if(Idx < Originator.Touching.Length) + { + CheckTouchActivate(Originator, Originator.Touching[Idx]); + Idx++; + // [Loop Continue] + goto J0x27; + } + } + } + else + { + TouchedList.Length = 0; + } + //return; +} + +function NotifyTouchingPawnDied(Pawn P) +{ + // End:0x2C + if(!bAllowDeadPawns) + { + CheckUnTouchActivate(Originator, P); + } + //return; +} + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + ClassProximityTypes[0]=Class'Engine.Pawn' + bForceOverlapping=true + ReTriggerDelay=0.1000000 + OutputLinks[0]=(Links=none,LinkDesc="Touched",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="UnTouched",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Empty",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Touch" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_TouchInput.uc b/exported/Engine/Classes/SeqEvent_TouchInput.uc new file mode 100755 index 00000000..ba15fe7f --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_TouchInput.uc @@ -0,0 +1,24 @@ +class SeqEvent_TouchInput extends SequenceEvent + native(Sequence) + hidecategories(Object); + +var() bool bTrapInput; +var() int AllowedPlayerIndex; +var() int AllowedTouchIndex; +var() int AllowedTouchpadIndex; + +defaultproperties +{ + bTrapInput=true + AllowedPlayerIndex=-1 + MaxTriggerCount=0 + OutputLinks[0]=(Links=none,LinkDesc="Pressed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Repeated",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Released",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Touch X",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Touch Y",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Touch Index",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[4]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Touchpad Index",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Touch Input" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqEvent_Used.uc b/exported/Engine/Classes/SeqEvent_Used.uc new file mode 100755 index 00000000..67d95f35 --- /dev/null +++ b/exported/Engine/Classes/SeqEvent_Used.uc @@ -0,0 +1,22 @@ +class SeqEvent_Used extends SequenceEvent + native(Sequence) + hidecategories(Object); + +var() bool bAimToInteract; +var() float InteractDistance; +var() string InteractText; +var() Texture2D InteractIcon; +var(TouchTypes) array< Class > ClassProximityTypes; +var(TouchTypes) array< Class > IgnoredClassProximityTypes; + +defaultproperties +{ + bAimToInteract=true + InteractDistance=128.0000000 + InteractText="Use" + OutputLinks[0]=(Links=none,LinkDesc="Used",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Unused",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Distance",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Used" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_Bool.uc b/exported/Engine/Classes/SeqVar_Bool.uc new file mode 100755 index 00000000..65493791 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_Bool.uc @@ -0,0 +1,10 @@ +class SeqVar_Bool extends SequenceVariable + native(Sequence) + hidecategories(Object); + +var() int bValue; + +defaultproperties +{ + ObjName="Bool" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_Byte.uc b/exported/Engine/Classes/SeqVar_Byte.uc new file mode 100755 index 00000000..1e7c48b3 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_Byte.uc @@ -0,0 +1,7 @@ +class SeqVar_Byte extends SequenceVariable + hidecategories(Object); + +defaultproperties +{ + ObjName="Byte" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_Character.uc b/exported/Engine/Classes/SeqVar_Character.uc new file mode 100755 index 00000000..1c631df9 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_Character.uc @@ -0,0 +1,6 @@ +class SeqVar_Character extends SeqVar_Object + abstract + native(Sequence) + hidecategories(Object); + +var Class PawnClass; diff --git a/exported/Engine/Classes/SeqVar_External.uc b/exported/Engine/Classes/SeqVar_External.uc new file mode 100755 index 00000000..a86a6ca4 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_External.uc @@ -0,0 +1,12 @@ +class SeqVar_External extends SequenceVariable within Sequence + native(Sequence) + hidecategories(Object); + +var() Class ExpectedType; +var() string VariableLabel; + +defaultproperties +{ + VariableLabel="Default Var" + ObjName="External Variable" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_Float.uc b/exported/Engine/Classes/SeqVar_Float.uc new file mode 100755 index 00000000..ad334d5d --- /dev/null +++ b/exported/Engine/Classes/SeqVar_Float.uc @@ -0,0 +1,10 @@ +class SeqVar_Float extends SequenceVariable + native(Sequence) + hidecategories(Object); + +var() float FloatValue; + +defaultproperties +{ + ObjName="Float" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_Group.uc b/exported/Engine/Classes/SeqVar_Group.uc new file mode 100755 index 00000000..9376dcf9 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_Group.uc @@ -0,0 +1,12 @@ +class SeqVar_Group extends SeqVar_Object + native(Sequence) + hidecategories(Object); + +var() name GroupName; +var transient bool bCachedList; +var transient array Actors; + +defaultproperties +{ + ObjName="Group" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_Int.uc b/exported/Engine/Classes/SeqVar_Int.uc new file mode 100755 index 00000000..19d50f56 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_Int.uc @@ -0,0 +1,10 @@ +class SeqVar_Int extends SequenceVariable + native(Sequence) + hidecategories(Object); + +var() int IntValue; + +defaultproperties +{ + ObjName="Int" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_Name.uc b/exported/Engine/Classes/SeqVar_Name.uc new file mode 100755 index 00000000..ac501da1 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_Name.uc @@ -0,0 +1,7 @@ +class SeqVar_Name extends SequenceVariable + hidecategories(Object); + +defaultproperties +{ + ObjName="Name" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_Named.uc b/exported/Engine/Classes/SeqVar_Named.uc new file mode 100755 index 00000000..0eb82080 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_Named.uc @@ -0,0 +1,12 @@ +class SeqVar_Named extends SequenceVariable + native(Sequence) + hidecategories(Object,SequenceVariable); + +var() Class ExpectedType; +var() name FindVarName; +var transient bool bStatusIsOk; + +defaultproperties +{ + ObjName="Named Variable" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_Object.uc b/exported/Engine/Classes/SeqVar_Object.uc new file mode 100755 index 00000000..f6b580e0 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_Object.uc @@ -0,0 +1,25 @@ +class SeqVar_Object extends SequenceVariable + native(Sequence) + hidecategories(Object); + +var() protected Object ObjValue; +var transient Vector ActorLocation; +var const array< Class > SupportedClasses; + +function Object GetObjectValue() +{ + return ObjValue; + //return ReturnValue; +} + +function SetObjectValue(Object NewValue) +{ + ObjValue = NewValue; + //return; +} + +defaultproperties +{ + SupportedClasses[0]=Class'Core.Object' + ObjName="Object" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_ObjectList.uc b/exported/Engine/Classes/SeqVar_ObjectList.uc new file mode 100755 index 00000000..ae7b6126 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_ObjectList.uc @@ -0,0 +1,22 @@ +class SeqVar_ObjectList extends SeqVar_Object + native(Sequence) + hidecategories(Object); + +var() array ObjList; + +function Object GetObjectValue() +{ + return ((ObjList.Length > 0) ? ObjList[0] : none); + //return ReturnValue; +} + +function SetObjectValue(Object NewValue) +{ + ObjList[0] = NewValue; + //return; +} + +defaultproperties +{ + ObjName="Object List" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_ObjectVolume.uc b/exported/Engine/Classes/SeqVar_ObjectVolume.uc new file mode 100755 index 00000000..54e5d120 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_ObjectVolume.uc @@ -0,0 +1,16 @@ +class SeqVar_ObjectVolume extends SeqVar_Object + native(Sequence) + hidecategories(Object); + +var float LastUpdateTime; +var array ContainedObjects; +var() array< Class > ExcludeClassList; +var() bool bCollidingOnly; + +defaultproperties +{ + ExcludeClassList[0]=Class'Engine.Trigger' + ExcludeClassList[1]=Class'Engine.Volume' + bCollidingOnly=true + ObjName="Object Volume" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_Player.uc b/exported/Engine/Classes/SeqVar_Player.uc new file mode 100755 index 00000000..49e98a83 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_Player.uc @@ -0,0 +1,40 @@ +class SeqVar_Player extends SeqVar_Object + native(Sequence) + hidecategories(Object); + +var transient array Players; +var() bool bAllPlayers; +var() int PlayerIdx; + +// Export USeqVar_Player::execUpdatePlayersList(FFrame&, void* const) +native final function UpdatePlayersList(); + +function Object GetObjectValue() +{ + local Controller C; + + UpdatePlayersList(); + // End:0x99 + if(Players.Length > 0) + { + // End:0x73 + if((bAllPlayers || PlayerIdx < 0) || PlayerIdx >= Players.Length) + { + C = Controller(Players[0]); + } + else + { + C = Controller(Players[PlayerIdx]); + } + } + return (((C != none) && C.Pawn != none) ? C.Pawn : C); + //return ReturnValue; +} + +defaultproperties +{ + bAllPlayers=true + SupportedClasses[0]=Class'Engine.Controller' + SupportedClasses[1]=Class'Engine.Pawn' + ObjName="Player" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_RandomFloat.uc b/exported/Engine/Classes/SeqVar_RandomFloat.uc new file mode 100755 index 00000000..9ce760c5 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_RandomFloat.uc @@ -0,0 +1,12 @@ +class SeqVar_RandomFloat extends SeqVar_Float + native(Sequence) + hidecategories(Object); + +var() float Min; +var() float Max; + +defaultproperties +{ + Max=1.0000000 + ObjName="Random Float" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_RandomInt.uc b/exported/Engine/Classes/SeqVar_RandomInt.uc new file mode 100755 index 00000000..4c5fa0f1 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_RandomInt.uc @@ -0,0 +1,12 @@ +class SeqVar_RandomInt extends SeqVar_Int + native(Sequence) + hidecategories(Object); + +var() int Min; +var() int Max; + +defaultproperties +{ + Max=100 + ObjName="Random Int" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_String.uc b/exported/Engine/Classes/SeqVar_String.uc new file mode 100755 index 00000000..fee95146 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_String.uc @@ -0,0 +1,10 @@ +class SeqVar_String extends SequenceVariable + native(Sequence) + hidecategories(Object); + +var() string StrValue; + +defaultproperties +{ + ObjName="String" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_Union.uc b/exported/Engine/Classes/SeqVar_Union.uc new file mode 100755 index 00000000..f7bd4fbb --- /dev/null +++ b/exported/Engine/Classes/SeqVar_Union.uc @@ -0,0 +1,7 @@ +class SeqVar_Union extends SequenceVariable + hidecategories(Object); + +defaultproperties +{ + ObjName="Union" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SeqVar_Vector.uc b/exported/Engine/Classes/SeqVar_Vector.uc new file mode 100755 index 00000000..967dfe73 --- /dev/null +++ b/exported/Engine/Classes/SeqVar_Vector.uc @@ -0,0 +1,10 @@ +class SeqVar_Vector extends SequenceVariable + native(Sequence) + hidecategories(Object); + +var() Vector VectValue; + +defaultproperties +{ + ObjName="Vector" +} \ No newline at end of file diff --git a/exported/Engine/Classes/Sequence.uc b/exported/Engine/Classes/Sequence.uc new file mode 100755 index 00000000..478c8c4e --- /dev/null +++ b/exported/Engine/Classes/Sequence.uc @@ -0,0 +1,92 @@ +class Sequence extends SequenceOp + native(Sequence) + hidecategories(Object); + +struct native ActivateOp +{ + var SequenceOp ActivatorOp; + var SequenceOp Op; + var int InputIdx; + var float RemainingDelay; + + structdefaultproperties + { + ActivatorOp=none + Op=none + InputIdx=0 + RemainingDelay=0.0000000 + } +}; + +struct native QueuedActivationInfo +{ + var SequenceEvent ActivatedEvent; + var Actor InOriginator; + var Actor InInstigator; + var array ActivateIndices; + var bool bPushTop; + + structdefaultproperties + { + ActivatedEvent=none + InOriginator=none + InInstigator=none + ActivateIndices=none + bPushTop=false + } +}; + +var const Pointer LogFile; +var const export array SequenceObjects; +var const array ActiveSequenceOps; +var const transient array NestedSequences; +var const array UnregisteredEvents; +var const array DelayedActivatedOps; +var const array DelayedLatentOps; +var() private bool bEnabled; +var array QueuedActivations; +var int DefaultViewX; +var int DefaultViewY; +var float DefaultViewZoom; + +// Export USequence::execFindSeqObjectsByClass(FFrame&, void* const) +native final function FindSeqObjectsByClass(Class DesiredClass, bool bRecursive, out array OutputObjects); + +// Export USequence::execFindSeqObjectsByName(FFrame&, void* const) +native final function FindSeqObjectsByName(string SeqObjName, bool bCheckComment, out array OutputObjects, optional bool bRecursive = true, optional bool bUseFullLevelName = false); + +function Reset() +{ + local int I; + local SequenceOp Op; + + I = 0; + J0x0B: + + // End:0x85 [Loop If] + if(I < SequenceObjects.Length) + { + Op = SequenceOp(SequenceObjects[I]); + // End:0x77 + if(Op != none) + { + Op.Reset(); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +// Export USequence::execSetEnabled(FFrame&, void* const) +native final function SetEnabled(bool bInEnabled); + +defaultproperties +{ + bEnabled=true + DefaultViewZoom=1.0000000 + InputLinks=none + OutputLinks=none + ObjName="Sequence" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SequenceAction.uc b/exported/Engine/Classes/SequenceAction.uc new file mode 100755 index 00000000..92f36a2e --- /dev/null +++ b/exported/Engine/Classes/SequenceAction.uc @@ -0,0 +1,15 @@ +class SequenceAction extends SequenceOp + abstract + native(Sequence) + hidecategories(Object); + +var name HandlerName; +var bool bCallHandler; +var() array Targets; + +defaultproperties +{ + bCallHandler=true + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Unknown Action" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SequenceCondition.uc b/exported/Engine/Classes/SequenceCondition.uc new file mode 100755 index 00000000..cff6955c --- /dev/null +++ b/exported/Engine/Classes/SequenceCondition.uc @@ -0,0 +1,10 @@ +class SequenceCondition extends SequenceOp + abstract + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + bAutoActivateOutputLinks=false + ObjName="Undefined Condition" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SequenceEvent.uc b/exported/Engine/Classes/SequenceEvent.uc new file mode 100755 index 00000000..81da36ca --- /dev/null +++ b/exported/Engine/Classes/SequenceEvent.uc @@ -0,0 +1,51 @@ +class SequenceEvent extends SequenceOp + abstract + native(Sequence) + hidecategories(Object); + +var array DuplicateEvts; +var Actor Originator; +var Actor Instigator; +var float ActivationTime; +var int TriggerCount; +var() int MaxTriggerCount; +var() float ReTriggerDelay; +var() bool bEnabled; +var() bool bPlayerOnly; +var transient bool bRegistered; +var() const bool bClientSideOnly; +var() const bool bServerAndClientSide; +var() bool bHumanOnly; +var() byte Priority; +var int MaxWidth; + +event RegisterEvent() +{ + //return; +} + +// Export USequenceEvent::execCheckActivate(FFrame&, void* const) +native final function bool CheckActivate(Actor InOriginator, Actor InInstigator, optional bool bTest, const optional out array ActivateIndices, optional bool bPushTop); + +function Reset() +{ + ActivationTime = 0.0000000; + TriggerCount = 0; + Instigator = none; + //return; +} + +event Toggled() +{ + //return; +} + +defaultproperties +{ + MaxTriggerCount=1 + bEnabled=true + bPlayerOnly=true + bAutoActivateOutputLinks=false + InputLinks=none + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) +} \ No newline at end of file diff --git a/exported/Engine/Classes/SequenceFrame.uc b/exported/Engine/Classes/SequenceFrame.uc new file mode 100755 index 00000000..5aa209ee --- /dev/null +++ b/exported/Engine/Classes/SequenceFrame.uc @@ -0,0 +1,25 @@ +class SequenceFrame extends SequenceObject + native(Sequence) + hidecategories(Object); + +var() int SizeX; +var() int SizeY; +var() int BorderWidth; +var() bool bDrawBox; +var() bool bFilled; +var() bool bTileFill; +var() Color BorderColor; +var() Color FillColor; + +defaultproperties +{ + SizeX=128 + SizeY=64 + BorderWidth=1 + bFilled=true + BorderColor=(R=0,G=0,B=0,A=255) + FillColor=(R=255,G=255,B=255,A=16) + ObjName="Sequence Comment" + ObjComment="Comment" + bDrawFirst=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SequenceFrameWrapped.uc b/exported/Engine/Classes/SequenceFrameWrapped.uc new file mode 100755 index 00000000..b335671a --- /dev/null +++ b/exported/Engine/Classes/SequenceFrameWrapped.uc @@ -0,0 +1,9 @@ +class SequenceFrameWrapped extends SequenceFrame + native(Sequence) + hidecategories(Object); + +defaultproperties +{ + bDrawBox=true + ObjName="Sequence Comment Wrapped" +} \ No newline at end of file diff --git a/exported/Engine/Classes/SequenceObject.uc b/exported/Engine/Classes/SequenceObject.uc new file mode 100755 index 00000000..154297bc --- /dev/null +++ b/exported/Engine/Classes/SequenceObject.uc @@ -0,0 +1,54 @@ +class SequenceObject extends Object + abstract + native(Sequence) + forcescriptorder(true) + hidecategories(Object); + +var const int ObjInstanceVersion; +var noimport const Sequence ParentSequence; +var string ObjName; +var() string ObjComment; +var bool bDeletable; +var bool bDrawFirst; +var bool bDrawLast; +var() bool bOutputObjCommentToScreen; +var() bool bSuppressAutoComment; +var int DrawWidth; +var int DrawHeight; + +// Export USequenceObject::execScriptLog(FFrame&, void* const) +native final function ScriptLog(string LogText, optional bool bWarning = true); + +// Export USequenceObject::execGetWorldInfo(FFrame&, void* const) +native final function WorldInfo GetWorldInfo(); + +event bool IsValidLevelSequenceObject() +{ + return true; + //return ReturnValue; +} + +event bool IsPastingIntoLevelSequenceAllowed() +{ + return IsValidLevelSequenceObject(); + //return ReturnValue; +} + +event bool ShouldClearNameOnPasting() +{ + return true; + //return ReturnValue; +} + +static event int GetObjClassVersion() +{ + return 1; + //return ReturnValue; +} + +defaultproperties +{ + ObjName="Undefined" + bDeletable=true + bSuppressAutoComment=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SequenceOp.uc b/exported/Engine/Classes/SequenceOp.uc new file mode 100755 index 00000000..4c14073a --- /dev/null +++ b/exported/Engine/Classes/SequenceOp.uc @@ -0,0 +1,273 @@ +class SequenceOp extends SequenceObject + abstract + native(Sequence) + hidecategories(Object); + +struct native SeqOpInputLink +{ + var string LinkDesc; + var bool bHasImpulse; + var int QueuedActivations; + var bool bDisabled; + var bool bDisabledPIE; + var SequenceOp LinkedOp; + var int DrawY; + var bool bHidden; + var float ActivateDelay; + var editoronly transient bool bMoving; + var bool bClampedMax; + var bool bClampedMin; + + structdefaultproperties + { + LinkDesc="" + bHasImpulse=false + QueuedActivations=0 + bDisabled=false + bDisabledPIE=false + LinkedOp=none + DrawY=0 + bHidden=false + ActivateDelay=0.0000000 + bMoving=false + bClampedMax=false + bClampedMin=false + } +}; + +struct native SeqOpOutputInputLink +{ + var SequenceOp LinkedOp; + var int InputLinkIdx; + + structdefaultproperties + { + LinkedOp=none + InputLinkIdx=0 + } +}; + +struct native SeqOpOutputLink +{ + var array Links; + var string LinkDesc; + var bool bHasImpulse; + var bool bDisabled; + var bool bDisabledPIE; + var SequenceOp LinkedOp; + var float ActivateDelay; + var int DrawY; + var bool bHidden; + var editoronly transient bool bMoving; + var bool bClampedMax; + var bool bClampedMin; + var noimport nontransactional editoronly transient bool bIsActivated; + + structdefaultproperties + { + Links=none + LinkDesc="" + bHasImpulse=false + bDisabled=false + bDisabledPIE=false + LinkedOp=none + ActivateDelay=0.0000000 + DrawY=0 + bHidden=false + bMoving=false + bClampedMax=false + bClampedMin=false + bIsActivated=false + } +}; + +struct native SeqVarLink +{ + var Class ExpectedType; + var array LinkedVariables; + var string LinkDesc; + var name LinkVar; + var name PropertyName; + var bool bWriteable; + var bool bSequenceNeverReadsOnlyWritesToThisVar; + var bool bModifiesLinkedObject; + var bool bHidden; + var int MinVars; + var int MaxVars; + var int DrawX; + var const transient Property CachedProperty; + var bool bAllowAnyType; + var editoronly transient bool bMoving; + var bool bClampedMax; + var bool bClampedMin; + + structdefaultproperties + { + ExpectedType=Class'Engine.SequenceVariable' + LinkedVariables=none + LinkDesc="" + LinkVar="None" + PropertyName="None" + bWriteable=false + bSequenceNeverReadsOnlyWritesToThisVar=false + bModifiesLinkedObject=false + bHidden=false + MinVars=1 + MaxVars=255 + DrawX=0 + CachedProperty=none + bAllowAnyType=false + bMoving=false + bClampedMax=false + bClampedMin=false + } +}; + +struct native SeqEventLink +{ + var Class ExpectedType; + var array LinkedEvents; + var string LinkDesc; + var int DrawX; + var bool bHidden; + var editoronly transient bool bMoving; + var bool bClampedMax; + var bool bClampedMin; + + structdefaultproperties + { + ExpectedType=Class'Engine.SequenceEvent' + LinkedEvents=none + LinkDesc="" + DrawX=0 + bHidden=false + bMoving=false + bClampedMax=false + bClampedMin=false + } +}; + +var noimport nontransactional duplicatetransient editoronly transient bool bIsActivated; +var noimport nontransactional duplicatetransient editoronly transient bool bIsCurrentDebuggerOp; +var bool bActive; +var const bool bLatentExecution; +var bool bAutoActivateOutputLinks; +var editoronly transient bool bHaveMovingVarConnector; +var editoronly transient bool bHaveMovingInputConnector; +var editoronly transient bool bHaveMovingOutputConnector; +var editoronly transient bool bPendingVarConnectorRecalc; +var editoronly transient bool bPendingInputConnectorRecalc; +var editoronly transient bool bPendingOutputConnectorRecalc; +var bool bIsBreakpointSet; +var noimport nontransactional duplicatetransient editoronly transient bool bIsHiddenBreakpointSet; +var array InputLinks; +var array OutputLinks; +var array VariableLinks; +var array EventLinks; +var noimport transient int PlayerIndex; +var noimport transient byte GamepadID; +var transient int ActivateCount; +var protected duplicatetransient const transient int SearchTag; + +// Export USequenceOp::execHasLinkedOps(FFrame&, void* const) +native final function bool HasLinkedOps(optional bool bConsiderInputLinks); + +// Export USequenceOp::execGetLinkedObjects(FFrame&, void* const) +native final function GetLinkedObjects(out array out_Objects, optional Class ObjectType, optional bool bRecurse); + +// Export USequenceOp::execGetObjectVars(FFrame&, void* const) +native final function GetObjectVars(out array objVars, optional string inDesc); + +// Export USequenceOp::execGetInterpDataVars(FFrame&, void* const) +native final function GetInterpDataVars(out array outIData, optional string inDesc); + +// Export USequenceOp::execGetBoolVars(FFrame&, void* const) +native final function GetBoolVars(out array boolVars, optional string inDesc); + +// Export USequenceOp::execLinkedVariables(FFrame&, void* const) +native final iterator function LinkedVariables(Class VarClass, out SequenceVariable OutVariable, optional string inDesc); + +// Export USequenceOp::execActivateOutputLink(FFrame&, void* const) +native final function bool ActivateOutputLink(int OutputIdx); + +// Export USequenceOp::execActivateNamedOutputLink(FFrame&, void* const) +native final function bool ActivateNamedOutputLink(string LinkDesc); + +event Activated() +{ + //return; +} + +event Deactivated() +{ + //return; +} + +event VersionUpdated(int OldVersion, int NewVersion) +{ + //return; +} + +// Export USequenceOp::execPopulateLinkedVariableValues(FFrame&, void* const) +native final function PopulateLinkedVariableValues(); + +// Export USequenceOp::execPublishLinkedVariableValues(FFrame&, void* const) +native final function PublishLinkedVariableValues(); + +function Reset() +{ + //return; +} + +function Pawn GetPawn(Actor TheActor) +{ + local Pawn P; + local Controller C; + + P = Pawn(TheActor); + // End:0x38 + if(P != none) + { + return P; + } + else + { + C = Controller(TheActor); + return ((C != none) ? C.Pawn : none); + } + //return ReturnValue; +} + +function Controller GetController(Actor TheActor) +{ + local Pawn P; + local Controller C; + + C = Controller(TheActor); + // End:0x38 + if(C != none) + { + return C; + } + else + { + P = Pawn(TheActor); + return ((P != none) ? P.Controller : none); + } + //return ReturnValue; +} + +// Export USequenceOp::execForceActivateInput(FFrame&, void* const) +native final function ForceActivateInput(int InputIdx); + +// Export USequenceOp::execForceActivateOutput(FFrame&, void* const) +native final function ForceActivateOutput(int OutputIdx); + +defaultproperties +{ + bAutoActivateOutputLinks=true + InputLinks[0]=(LinkDesc="In",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Out",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + PlayerIndex=-1 + GamepadID=255 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SequenceVariable.uc b/exported/Engine/Classes/SequenceVariable.uc new file mode 100755 index 00000000..a1a85ad3 --- /dev/null +++ b/exported/Engine/Classes/SequenceVariable.uc @@ -0,0 +1,12 @@ +class SequenceVariable extends SequenceObject + abstract + native(Sequence) + hidecategories(Object); + +var() name VarName; + +defaultproperties +{ + ObjName="Undefined Variable" + bDrawLast=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/Settings.uc b/exported/Engine/Classes/Settings.uc new file mode 100755 index 00000000..89537e78 --- /dev/null +++ b/exported/Engine/Classes/Settings.uc @@ -0,0 +1,309 @@ +class Settings extends Object + abstract + native; + +enum EOnlineDataAdvertisementType +{ + ODAT_DontAdvertise, // 0 + ODAT_OnlineService, // 1 + ODAT_QoS, // 2 + ODAT_OnlineServiceAndQoS, // 3 + ODAT_MAX // 4 +}; + +enum ESettingsDataType +{ + SDT_Empty, // 0 + SDT_Int32, // 1 + SDT_Int64, // 2 + SDT_Double, // 3 + SDT_String, // 4 + SDT_Float, // 5 + SDT_Blob, // 6 + SDT_DateTime, // 7 + SDT_UInt32, // 8 + SDT_UInt64, // 9 + SDT_MAX // 10 +}; + +enum EPropertyValueMappingType +{ + PVMT_RawValue, // 0 + PVMT_PredefinedValues, // 1 + PVMT_Ranged, // 2 + PVMT_IdMapped, // 3 + PVMT_MAX // 4 +}; + +struct native LocalizedStringSetting +{ + var int Id; + var int ValueIndex; + var Settings.EOnlineDataAdvertisementType AdvertisementType; + + structdefaultproperties + { + Id=0 + ValueIndex=0 + AdvertisementType=EOnlineDataAdvertisementType.ODAT_DontAdvertise + } +}; + +struct native SettingsData +{ + var const Settings.ESettingsDataType Type; + var const int Value1; + var native const transient Pointer Value2; + + structdefaultproperties + { + Type=ESettingsDataType.SDT_Empty + Value1=0 + } +}; + +struct native SettingsProperty +{ + var int PropertyId; + var SettingsData Data; + var Settings.EOnlineDataAdvertisementType AdvertisementType; + + structdefaultproperties + { + PropertyId=0 + Data=(Type=ESettingsDataType.SDT_Empty,Value1=0) + AdvertisementType=EOnlineDataAdvertisementType.ODAT_DontAdvertise + } +}; + +struct native StringIdToStringMapping +{ + var const int Id; + var const localized name Name; + var const bool bIsWildcard; + + structdefaultproperties + { + Id=0 + Name="None" + bIsWildcard=false + } +}; + +struct native LocalizedStringSettingMetaData +{ + var const int Id; + var const name Name; + var const localized string ColumnHeaderText; + var const array ValueMappings; + + structdefaultproperties + { + Id=0 + Name="None" + ColumnHeaderText="" + ValueMappings=none + } +}; + +struct native IdToStringMapping +{ + var const int Id; + var const localized name Name; + + structdefaultproperties + { + Id=0 + Name="None" + } +}; + +struct native SettingsPropertyPropertyMetaData +{ + var const int Id; + var const name Name; + var const localized string ColumnHeaderText; + var const Settings.EPropertyValueMappingType MappingType; + var const array ValueMappings; + var const array PredefinedValues; + var const float MinVal; + var const float MaxVal; + var const float RangeIncrement; + + structdefaultproperties + { + Id=0 + Name="None" + ColumnHeaderText="" + MappingType=EPropertyValueMappingType.PVMT_RawValue + ValueMappings=none + PredefinedValues=none + MinVal=0.0000000 + MaxVal=0.0000000 + RangeIncrement=0.0000000 + } +}; + +var array LocalizedSettings; +var array Properties; +var array LocalizedSettingsMappings; +var array PropertyMappings; + +// Export USettings::execSetSettingsDataFloat(FFrame&, void* const) +native static function SetSettingsDataFloat(out SettingsData Data, float InFloat); + +// Export USettings::execSetSettingsDataInt(FFrame&, void* const) +native static function SetSettingsDataInt(out SettingsData Data, int InInt); + +// Export USettings::execSetSettingsDataDateTime(FFrame&, void* const) +native static function SetSettingsDataDateTime(out SettingsData Data, int InInt1, int InInt2); + +// Export USettings::execSetSettingsDataBlob(FFrame&, void* const) +native static function SetSettingsDataBlob(out SettingsData Data, out array InBlob); + +// Export USettings::execSetSettingsData(FFrame&, void* const) +native static function SetSettingsData(out SettingsData Data, out SettingsData Data2Copy); + +// Export USettings::execEmptySettingsData(FFrame&, void* const) +native static function EmptySettingsData(out SettingsData Data); + +// Export USettings::execGetSettingsDataFloat(FFrame&, void* const) +native static function float GetSettingsDataFloat(out SettingsData Data); + +// Export USettings::execGetSettingsDataInt(FFrame&, void* const) +native static function int GetSettingsDataInt(out SettingsData Data); + +// Export USettings::execGetSettingsDataBlob(FFrame&, void* const) +native static function GetSettingsDataBlob(out SettingsData Data, out array OutBlob); + +// Export USettings::execGetSettingsDataDateTime(FFrame&, void* const) +native static function GetSettingsDataDateTime(out SettingsData Data, out int OutInt1, out int OutInt2); + +// Export USettings::execSetStringSettingValue(FFrame&, void* const) +native function SetStringSettingValue(int StringSettingId, int ValueIndex, optional bool bShouldAutoAdd); + +// Export USettings::execGetStringSettingValue(FFrame&, void* const) +native function bool GetStringSettingValue(int StringSettingId, out int ValueIndex); + +// Export USettings::execIncrementStringSettingValue(FFrame&, void* const) +native function bool IncrementStringSettingValue(int StringSettingId, int Direction, bool bShouldWrap); + +// Export USettings::execGetStringSettingValueNames(FFrame&, void* const) +native function bool GetStringSettingValueNames(int StringSettingId, out array Values); + +// Export USettings::execSetStringSettingValueByName(FFrame&, void* const) +native function SetStringSettingValueByName(name StringSettingName, int ValueIndex, bool bShouldAutoAdd); + +// Export USettings::execGetStringSettingValueByName(FFrame&, void* const) +native function bool GetStringSettingValueByName(name StringSettingName, out int ValueIndex); + +// Export USettings::execGetStringSettingId(FFrame&, void* const) +native function bool GetStringSettingId(name StringSettingName, out int StringSettingId); + +// Export USettings::execGetStringSettingName(FFrame&, void* const) +native function name GetStringSettingName(int StringSettingId); + +// Export USettings::execGetStringSettingColumnHeader(FFrame&, void* const) +native function string GetStringSettingColumnHeader(int StringSettingId); + +// Export USettings::execIsWildcardStringSetting(FFrame&, void* const) +native function bool IsWildcardStringSetting(int StringSettingId); + +// Export USettings::execGetStringSettingValueName(FFrame&, void* const) +native function name GetStringSettingValueName(int StringSettingId, int ValueIndex); + +// Export USettings::execGetStringSettingValueNameByName(FFrame&, void* const) +native function name GetStringSettingValueNameByName(name StringSettingName); + +// Export USettings::execSetStringSettingValueFromStringByName(FFrame&, void* const) +native function bool SetStringSettingValueFromStringByName(name StringSettingName, const out string NewValue); + +// Export USettings::execGetPropertyId(FFrame&, void* const) +native function bool GetPropertyId(name PropertyName, out int PropertyId); + +// Export USettings::execGetPropertyName(FFrame&, void* const) +native function name GetPropertyName(int PropertyId); + +// Export USettings::execGetPropertyColumnHeader(FFrame&, void* const) +native function string GetPropertyColumnHeader(int PropertyId); + +// Export USettings::execGetPropertyAsString(FFrame&, void* const) +native function string GetPropertyAsString(int PropertyId); + +// Export USettings::execGetPropertyAsStringByName(FFrame&, void* const) +native function string GetPropertyAsStringByName(name PropertyName); + +// Export USettings::execSetPropertyFromStringByName(FFrame&, void* const) +native function bool SetPropertyFromStringByName(name PropertyName, const out string NewValue); + +// Export USettings::execSetFloatProperty(FFrame&, void* const) +native function SetFloatProperty(int PropertyId, float Value); + +// Export USettings::execGetFloatProperty(FFrame&, void* const) +native function bool GetFloatProperty(int PropertyId, out float Value); + +// Export USettings::execSetIntProperty(FFrame&, void* const) +native function SetIntProperty(int PropertyId, int Value); + +// Export USettings::execGetIntProperty(FFrame&, void* const) +native function bool GetIntProperty(int PropertyId, out int Value); + +// Export USettings::execSetStringProperty(FFrame&, void* const) +native function SetStringProperty(int PropertyId, string Value); + +// Export USettings::execGetStringProperty(FFrame&, void* const) +native function bool GetStringProperty(int PropertyId, out string Value); + +// Export USettings::execSetPropertyValueId(FFrame&, void* const) +native function bool SetPropertyValueId(int PropertyId, int ValueId); + +// Export USettings::execGetPropertyValueId(FFrame&, void* const) +native function bool GetPropertyValueId(int PropertyId, out int ValueId); + +// Export USettings::execGetPropertyType(FFrame&, void* const) +native function Settings.ESettingsDataType GetPropertyType(int PropertyId); + +// Export USettings::execUpdateStringSettings(FFrame&, void* const) +native function UpdateStringSettings(const out array Settings, optional bool bShouldAddIfMissing = true); + +// Export USettings::execUpdateProperties(FFrame&, void* const) +native function UpdateProperties(const out array Props, optional bool bShouldAddIfMissing = true); + +// Export USettings::execHasProperty(FFrame&, void* const) +native function bool HasProperty(int PropertyId); + +// Export USettings::execHasStringSetting(FFrame&, void* const) +native function bool HasStringSetting(int SettingId); + +// Export USettings::execGetPropertyMappingType(FFrame&, void* const) +native function bool GetPropertyMappingType(int PropertyId, out Settings.EPropertyValueMappingType OutType); + +// Export USettings::execGetPropertyRange(FFrame&, void* const) +native function bool GetPropertyRange(int PropertyId, out float OutMinValue, out float OutMaxValue, out float RangeIncrement, out byte bFormatAsInt); + +// Export USettings::execSetRangedPropertyValue(FFrame&, void* const) +native function bool SetRangedPropertyValue(int PropertyId, float NewValue); + +// Export USettings::execGetRangedPropertyValue(FFrame&, void* const) +native function bool GetRangedPropertyValue(int PropertyId, out float OutValue); + +// Export USettings::execGetQoSAdvertisedProperties(FFrame&, void* const) +native function GetQoSAdvertisedProperties(out array QoSProps); + +// Export USettings::execGetQoSAdvertisedStringSettings(FFrame&, void* const) +native function GetQoSAdvertisedStringSettings(out array QoSSettings); + +// Export USettings::execAppendDataBindingsToURL(FFrame&, void* const) +native function AppendDataBindingsToURL(out string URL); + +// Export USettings::execAppendPropertiesToURL(FFrame&, void* const) +native function AppendPropertiesToURL(out string URL); + +// Export USettings::execAppendContextsToURL(FFrame&, void* const) +native function AppendContextsToURL(out string URL); + +// Export USettings::execBuildURL(FFrame&, void* const) +native function BuildURL(out string URL); + +// Export USettings::execUpdateFromURL(FFrame&, void* const) +native function UpdateFromURL(const out string URL, GameInfo Game); diff --git a/exported/Engine/Classes/ShadowMap2D.uc b/exported/Engine/Classes/ShadowMap2D.uc new file mode 100755 index 00000000..8f23e29e --- /dev/null +++ b/exported/Engine/Classes/ShadowMap2D.uc @@ -0,0 +1,16 @@ +class ShadowMap2D extends Object + native + noexport; + +var private const ShadowMapTexture2D Texture; +var private const Vector2D CoordinateScale; +var private const Vector2D CoordinateBias; +var private const Guid LightGuid; +var private const bool bIsShadowFactorTexture; +var private export editinline transient InstancedStaticMeshComponent Component; +var private transient int InstanceIndex; + +defaultproperties +{ + bIsShadowFactorTexture=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ShadowMapTexture2D.uc b/exported/Engine/Classes/ShadowMapTexture2D.uc new file mode 100755 index 00000000..61ab8f68 --- /dev/null +++ b/exported/Engine/Classes/ShadowMapTexture2D.uc @@ -0,0 +1,11 @@ +class ShadowMapTexture2D extends Texture2D + native + noexport + hidecategories(Object,Object); + +var int ShadowmapFlags; + +defaultproperties +{ + LODGroup=TextureGroup.TEXTUREGROUP_Shadowmap +} \ No newline at end of file diff --git a/exported/Engine/Classes/SharedCloudFileInterface.uc b/exported/Engine/Classes/SharedCloudFileInterface.uc new file mode 100755 index 00000000..9ccecebe --- /dev/null +++ b/exported/Engine/Classes/SharedCloudFileInterface.uc @@ -0,0 +1,57 @@ +interface SharedCloudFileInterface extends Interface + abstract; + +function bool GetSharedFileContents(string SharedHandle, out array FileContents) +{ + //return ReturnValue; +} + +function bool ClearSharedFiles() +{ + //return ReturnValue; +} + +function bool ClearSharedFile(string SharedHandle) +{ + //return ReturnValue; +} + +delegate OnReadSharedFileComplete(bool bWasSuccessful, string SharedHandle) +{ + //return; +} + +function bool ReadSharedFile(string SharedHandle) +{ + //return ReturnValue; +} + +function AddReadSharedFileCompleteDelegate(delegate ReadSharedFileCompleteDelegate) +{ + //return; +} + +function ClearReadSharedFileCompleteDelegate(delegate ReadSharedFileCompleteDelegate) +{ + //return; +} + +delegate OnWriteSharedFileComplete(bool bWasSuccessful, string UserId, string Filename, string SharedHandle) +{ + //return; +} + +function bool WriteSharedFile(string UserId, string Filename, const out array Contents) +{ + //return ReturnValue; +} + +function AddWriteSharedFileCompleteDelegate(delegate WriteSharedFileCompleteDelegate) +{ + //return; +} + +function ClearWriteSharedFileCompleteDelegate(delegate WriteSharedFileCompleteDelegate) +{ + //return; +} diff --git a/exported/Engine/Classes/SimpleSplineAudioComponent.uc b/exported/Engine/Classes/SimpleSplineAudioComponent.uc new file mode 100755 index 00000000..9950abb8 --- /dev/null +++ b/exported/Engine/Classes/SimpleSplineAudioComponent.uc @@ -0,0 +1,62 @@ +class SimpleSplineAudioComponent extends SplineAudioComponent + native + editinlinenew + collapsecategories + hidecategories(Object,ActorComponent,Object,ActorComponent,Object,ActorComponent); + +struct native SplineSoundSlot +{ + var() SoundNodeWave Wave; + var() float PitchScale; + var() float VolumeScale; + var() int StartPoint; + var() int EndPoint; + var() float Weight; + var native const Double LastUpdateTime; + var native const float SourceInteriorVolume; + var native const float SourceInteriorLPF; + var native const float CurrentInteriorVolume; + var native const float CurrentInteriorLPF; + + structdefaultproperties + { + Wave=none + PitchScale=1.0000000 + VolumeScale=1.0000000 + StartPoint=-1 + EndPoint=-1 + Weight=1.0000000 + } +}; + +var(LowPassFilter) bool bAttenuateWithLPF; +var(LowPassFilter) float LPFRadiusMin; +var(LowPassFilter) float LPFRadiusMax; +var(Attenuation) float dBAttenuationAtMax; +var(Attenuation) float FlattenAttenuationRadius; +var(Attenuation) SoundNodeAttenuation.SoundDistanceModel DistanceAlgorithm; +var(Attenuation) float RadiusMin; +var(Attenuation) float RadiusMax; +var(Sounds) init array SoundSlots; +var SoundNode NotifyBufferFinishedHook; + +defaultproperties +{ + LPFRadiusMin=3000.0000000 + LPFRadiusMax=6000.0000000 + dBAttenuationAtMax=-60.0000000 + FlattenAttenuationRadius=800.0000000 + RadiusMin=200.0000000 + RadiusMax=1200.0000000 + // Reference: ForcedLoopSoundNode'Engine.Default__SimpleSplineAudioComponent.ForcedLoopSoundNode0' + begin object name="ForcedLoopSoundNode0" class=Engine.ForcedLoopSoundNode + end object + NotifyBufferFinishedHook=ForcedLoopSoundNode0 + // Reference: SoundCue'Engine.Default__SimpleSplineAudioComponent.SoundCue0' + begin object name="SoundCue0" class=Engine.SoundCue + SoundClass="Ambient" + FirstNode=ForcedLoopSoundNode'Engine.Default__SimpleSplineAudioComponent.ForcedLoopSoundNode0' + Duration=10000.0000000 + end object + SoundCue=SoundCue0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SimpleSplineNonLoopAudioComponent.uc b/exported/Engine/Classes/SimpleSplineNonLoopAudioComponent.uc new file mode 100755 index 00000000..a2354205 --- /dev/null +++ b/exported/Engine/Classes/SimpleSplineNonLoopAudioComponent.uc @@ -0,0 +1,37 @@ +class SimpleSplineNonLoopAudioComponent extends SimpleSplineAudioComponent + native + editinlinenew + collapsecategories + hidecategories(Object,ActorComponent,Object,ActorComponent,Object,ActorComponent,Object,ActorComponent); + +var(Randomized) float DelayMin; +var(Randomized) float DelayMax; +var(Randomized) float PitchMin; +var(Randomized) float PitchMax; +var(Randomized) float VolumeMin; +var(Randomized) float VolumeMax; +var int CurrentSlotIndex; +var float UsedVolumeModulation; +var float UsedPitchModulation; +var float NextSoundTime; + +defaultproperties +{ + PitchMin=1.0000000 + PitchMax=1.0000000 + VolumeMin=1.0000000 + VolumeMax=1.0000000 + CurrentSlotIndex=-1 + UsedVolumeModulation=1.0000000 + UsedPitchModulation=1.0000000 + // Reference: ForcedLoopSoundNode'Engine.Default__SimpleSplineNonLoopAudioComponent.ForcedLoopSoundNode0' + // Archetype: ForcedLoopSoundNode'Engine.Default__SimpleSplineAudioComponent.ForcedLoopSoundNode0' + begin object name="ForcedLoopSoundNode0" + end object + NotifyBufferFinishedHook=ForcedLoopSoundNode0 + // Reference: SoundCue'Engine.Default__SimpleSplineNonLoopAudioComponent.SoundCue0' + // Archetype: SoundCue'Engine.Default__SimpleSplineAudioComponent.SoundCue0' + begin object name="SoundCue0" + end object + SoundCue=SoundCue0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkelControlBase.uc b/exported/Engine/Classes/SkelControlBase.uc new file mode 100755 index 00000000..0dc7bcd0 --- /dev/null +++ b/exported/Engine/Classes/SkelControlBase.uc @@ -0,0 +1,69 @@ +class SkelControlBase extends AnimObject + abstract + native(Anim) + hidecategories(Object,Object); + +enum EBoneControlSpace +{ + BCS_WorldSpace, // 0 + BCS_ActorSpace, // 1 + BCS_ComponentSpace, // 2 + BCS_ParentBoneSpace, // 3 + BCS_BoneSpace, // 4 + BCS_OtherBoneSpace, // 5 + BCS_BaseMeshSpace, // 6 + BCS_MAX // 7 +}; + +var(Controller) name ControlName; +var(Controller) float ControlStrength; +var(Controller) float BlendInTime; +var(Controller) float BlendOutTime; +var(Controller) Object.AlphaBlendType BlendType; +var(Controller) bool bPostPhysicsController; +var(Controller) bool bSetStrengthFromAnimNode; +var(Controller) bool bInvertStrengthFromAnimNode; +var transient bool bInitializedCachedNodeList; +var(Controller) bool bControlledByAnimMetada; +var(Controller) bool bInvertMetadataWeight; +var(Controller) bool bPropagateSetActive; +var(Performance) bool bIgnoreWhenNotRendered; +var bool bShouldTickInScript; +var bool bShouldTickOwner; +var() editconst deprecated bool bEnableEaseInOut; +var float StrengthTarget; +var transient float BlendTimeToGo; +var(Controller) array StrengthAnimNodeNameList; +var transient array CachedNodeList; +var const transient float AnimMetadataWeight; +var const transient int AnimMetaDataUpdateTag; +var(Controller) float BoneScale; +var transient int ControlTickTag; +var(Performance) int IgnoreAtOrAboveLOD; +var SkelControlBase NextControl; +var deprecated int ControlPosX; +var deprecated int ControlPosY; + +// Export USkelControlBase::execSetSkelControlActive(FFrame&, void* const) +native final function SetSkelControlActive(bool bInActive); + +// Export USkelControlBase::execSetSkelControlStrength(FFrame&, void* const) +native final function SetSkelControlStrength(float NewStrength, float InBlendTime); + +event TickSkelControl(float DeltaTime, SkeletalMeshComponent SkelComp) +{ + //return; +} + +// Export USkelControlBase::execGetControlMetadataWeight(FFrame&, void* const) +native final function float GetControlMetadataWeight(); + +defaultproperties +{ + ControlStrength=1.0000000 + BlendInTime=0.2000000 + BlendOutTime=0.2000000 + StrengthTarget=1.0000000 + BoneScale=1.0000000 + IgnoreAtOrAboveLOD=1000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkelControlFootPlacement.uc b/exported/Engine/Classes/SkelControlFootPlacement.uc new file mode 100755 index 00000000..1f918430 --- /dev/null +++ b/exported/Engine/Classes/SkelControlFootPlacement.uc @@ -0,0 +1,24 @@ +class SkelControlFootPlacement extends SkelControlLimb + native(Anim) + hidecategories(Object,Object,Effector); + +var(FootPlacement) float FootOffset; +var(FootPlacement) Object.EAxis FootUpAxis; +var(FootPlacement) Rotator FootRotOffset; +var(FootPlacement) bool bInvertFootUpAxis; +var(FootPlacement) bool bOrientFootToGround; +var(FootPlacement) bool bOnlyEnableForUpAdjustment; +var(FootPlacement) bool m_bManuallyOverrideEffectorLocation; +var bool m_bUseCachedFootOffset; +var(FootPlacement) float MaxUpAdjustment; +var(FootPlacement) float MaxDownAdjustment; +var(FootPlacement) float MaxFootOrientAdjust; +var Vector m_vCachedFootOffset; + +defaultproperties +{ + FootUpAxis=EAxis.AXIS_X + bOrientFootToGround=true + MaxUpAdjustment=50.0000000 + MaxFootOrientAdjust=45.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkelControlHandlebars.uc b/exported/Engine/Classes/SkelControlHandlebars.uc new file mode 100755 index 00000000..c493ca45 --- /dev/null +++ b/exported/Engine/Classes/SkelControlHandlebars.uc @@ -0,0 +1,20 @@ +class SkelControlHandlebars extends SkelControlSingleBone + native(Anim) + hidecategories(Object,Object,Translation,Rotation); + +var(Handlebars) Object.EAxis WheelRollAxis; +var(Handlebars) Object.EAxis HandlebarRotateAxis; +var(Handlebars) name WheelBoneName; +var(Handlebars) bool bInvertRotation; +var int SteerWheelBoneIndex; + +defaultproperties +{ + WheelRollAxis=EAxis.AXIS_Y + HandlebarRotateAxis=EAxis.AXIS_Z + SteerWheelBoneIndex=-1 + bApplyRotation=true + BoneTranslationSpace=EBoneControlSpace.BCS_BoneSpace + BoneRotationSpace=EBoneControlSpace.BCS_BoneSpace + bIgnoreWhenNotRendered=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkelControlLimb.uc b/exported/Engine/Classes/SkelControlLimb.uc new file mode 100755 index 00000000..25ffa317 --- /dev/null +++ b/exported/Engine/Classes/SkelControlLimb.uc @@ -0,0 +1,32 @@ +class SkelControlLimb extends SkelControlBase + native(Anim) + hidecategories(Object,Object); + +var(Effector) Vector EffectorLocation; +var(Effector) SkelControlBase.EBoneControlSpace EffectorLocationSpace; +var(Joint) SkelControlBase.EBoneControlSpace JointTargetLocationSpace; +var(Joint) SkelControlBase.EBoneControlSpace JointOffsetSpace; +var(Limb) Object.EAxis BoneAxis; +var(Limb) Object.EAxis JointAxis; +var(Effector) name EffectorSpaceBoneName; +var(Joint) Vector JointTargetLocation; +var(Joint) name JointTargetSpaceBoneName; +var(Joint) Vector JointOffset; +var(Joint) name JointOffsetBoneName; +var(Limb) bool bInvertBoneAxis; +var(Limb) bool bInvertJointAxis; +var(Limb) bool bRotateJoint; +var(Limb) bool bMaintainEffectorRelRot; +var(Limb) bool bTakeRotationFromEffectorSpace; +var() bool bAllowStretching; +var() editoronly transient bool m_bSnapEffectorToBoneLocation; +var() Vector2D StretchLimits; +var() name StretchRollBoneName; + +defaultproperties +{ + BoneAxis=EAxis.AXIS_X + JointAxis=EAxis.AXIS_Y + StretchLimits=(X=0.7100000,Y=1.2000000) + bIgnoreWhenNotRendered=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkelControlLookAt.uc b/exported/Engine/Classes/SkelControlLookAt.uc new file mode 100755 index 00000000..a2463c97 --- /dev/null +++ b/exported/Engine/Classes/SkelControlLookAt.uc @@ -0,0 +1,75 @@ +class SkelControlLookAt extends SkelControlBase + native(Anim) + hidecategories(Object,Object); + +var(LookAt) Vector TargetLocation; +var(LookAt) SkelControlBase.EBoneControlSpace TargetLocationSpace; +var(LookAt) Object.EAxis LookAtAxis; +var(LookAt) Object.EAxis UpAxis; +var(Limit) SkelControlBase.EBoneControlSpace AllowRotationSpace; +var(LookAt) name TargetSpaceBoneName; +var(LookAt) bool bInvertLookAtAxis; +var(LookAt) bool bDefineUpAxis; +var(LookAt) bool bInvertUpAxis; +var(Limit) bool bEnableLimit; +var(Limit) bool bLimitBasedOnRefPose; +var(Limit) bool bDisableBeyondLimit; +var(Limit) bool bNotifyBeyondLimit; +var(Limit) bool bShowLimit; +var(Limit) bool bAllowRotationX; +var(Limit) bool bAllowRotationY; +var(Limit) bool bAllowRotationZ; +var(LookAt) float TargetLocationInterpSpeed; +var Vector DesiredTargetLocation; +var protected const transient Vector ActorSpaceLookAtTarget; +var(Limit) float MaxAngle; +var(Limit) float OuterMaxAngle; +var(Limit) float DeadZoneAngle; +var(Limit) Vector2D RotationAngleRangeX; +var(Limit) Vector2D RotationAngleRangeY; +var(Limit) Vector2D RotationAngleRangeZ; +var(Limit) name AllowRotationOtherBoneName; +var const transient float LookAtAlpha; +var const transient float LookAtAlphaTarget; +var const transient float LookAtAlphaBlendTimeToGo; +var const transient Vector LimitLookDir; +var const transient Vector BaseLookDir; +var const transient Vector BaseBonePos; +var const transient float LastCalcTime; +var const transient int ControlBoneIndex; + +// Export USkelControlLookAt::execSetTargetLocation(FFrame&, void* const) +native final function SetTargetLocation(Vector NewTargetLocation); + +// Export USkelControlLookAt::execInterpolateTargetLocation(FFrame&, void* const) +native final function InterpolateTargetLocation(float DeltaTime); + +// Export USkelControlLookAt::execSetLookAtAlpha(FFrame&, void* const) +native final function SetLookAtAlpha(float DesiredAlpha, float DesiredBlendTime); + +// Export USkelControlLookAt::execCanLookAtPoint(FFrame&, void* const) +native final function bool CanLookAtPoint(Vector PointLoc, optional bool bDrawDebugInfo, optional bool bDebugUsePersistentLines, optional bool bDebugFlushLinesFirst); + +defaultproperties +{ + LookAtAxis=EAxis.AXIS_X + UpAxis=EAxis.AXIS_Z + AllowRotationSpace=EBoneControlSpace.BCS_BoneSpace + bLimitBasedOnRefPose=true + bShowLimit=true + bAllowRotationX=true + bAllowRotationY=true + bAllowRotationZ=true + TargetLocationInterpSpeed=10.0000000 + ActorSpaceLookAtTarget=(X=256.0000000,Y=0.0000000,Z=0.0000000) + OuterMaxAngle=90.0000000 + RotationAngleRangeX=(X=-90.0000000,Y=90.0000000) + RotationAngleRangeY=(X=-90.0000000,Y=90.0000000) + RotationAngleRangeZ=(X=-90.0000000,Y=90.0000000) + LookAtAlpha=1.0000000 + LookAtAlphaTarget=1.0000000 + ControlBoneIndex=-1 + BlendInTime=0.3300000 + BlendOutTime=0.3300000 + bIgnoreWhenNotRendered=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkelControlSingleBone.uc b/exported/Engine/Classes/SkelControlSingleBone.uc new file mode 100755 index 00000000..6761ca92 --- /dev/null +++ b/exported/Engine/Classes/SkelControlSingleBone.uc @@ -0,0 +1,15 @@ +class SkelControlSingleBone extends SkelControlBase + native(Anim) + hidecategories(Object,Object); + +var(Adjustments) bool bApplyTranslation; +var(Adjustments) bool bApplyRotation; +var(Translation) bool bAddTranslation; +var(Rotation) bool bAddRotation; +var(Rotation) bool bRemoveMeshRotation; +var(Translation) Vector BoneTranslation; +var(Translation) SkelControlBase.EBoneControlSpace BoneTranslationSpace; +var(Rotation) SkelControlBase.EBoneControlSpace BoneRotationSpace; +var(Translation) name TranslationSpaceBoneName; +var(Rotation) Rotator BoneRotation; +var(Rotation) name RotationSpaceBoneName; diff --git a/exported/Engine/Classes/SkelControlSpline.uc b/exported/Engine/Classes/SkelControlSpline.uc new file mode 100755 index 00000000..10d22792 --- /dev/null +++ b/exported/Engine/Classes/SkelControlSpline.uc @@ -0,0 +1,26 @@ +class SkelControlSpline extends SkelControlBase + native(Anim) + hidecategories(Object,Object); + +enum ESplineControlRotMode +{ + SCR_NoChange, // 0 + SCR_AlongSpline, // 1 + SCR_Interpolate, // 2 + SCR_MAX // 3 +}; + +var(Spline) int SplineLength; +var(Spline) Object.EAxis SplineBoneAxis; +var(Spline) SkelControlSpline.ESplineControlRotMode BoneRotMode; +var(Spline) bool bInvertSplineBoneAxis; +var(Spline) float EndSplineTension; +var(Spline) float StartSplineTension; + +defaultproperties +{ + SplineLength=2 + SplineBoneAxis=EAxis.AXIS_X + EndSplineTension=10.0000000 + StartSplineTension=10.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkelControlTrail.uc b/exported/Engine/Classes/SkelControlTrail.uc new file mode 100755 index 00000000..370cdf91 --- /dev/null +++ b/exported/Engine/Classes/SkelControlTrail.uc @@ -0,0 +1,23 @@ +class SkelControlTrail extends SkelControlBase + native(Anim) + hidecategories(Object,Object); + +var(Trail) int ChainLength; +var(Trail) Object.EAxis ChainBoneAxis; +var(Trail) bool bInvertChainBoneAxis; +var(Trail) bool bLimitStretch; +var(Trail) bool bActorSpaceFakeVel; +var bool bHadValidStrength; +var(Trail) float TrailRelaxation; +var(Trail) float StretchLimit; +var(Trail) Vector FakeVelocity; +var float ThisTimstep; +var transient array TrailBoneLocations; +var transient Matrix OldLocalToWorld; + +defaultproperties +{ + ChainLength=2 + ChainBoneAxis=EAxis.AXIS_X + TrailRelaxation=10.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkelControlWheel.uc b/exported/Engine/Classes/SkelControlWheel.uc new file mode 100755 index 00000000..406538d2 --- /dev/null +++ b/exported/Engine/Classes/SkelControlWheel.uc @@ -0,0 +1,26 @@ +class SkelControlWheel extends SkelControlSingleBone + native(Anim) + hidecategories(Object,Object,Translation,Rotation); + +var(Wheel) transient float WheelDisplacement; +var(Wheel) float WheelMaxRenderDisplacement; +var(Wheel) transient float WheelRoll; +var(Wheel) Object.EAxis WheelRollAxis; +var(Wheel) Object.EAxis WheelSteeringAxis; +var(Wheel) transient float WheelSteering; +var(Wheel) bool bInvertWheelRoll; +var(Wheel) bool bInvertWheelSteering; + +defaultproperties +{ + WheelMaxRenderDisplacement=50.0000000 + WheelRollAxis=EAxis.AXIS_X + WheelSteeringAxis=EAxis.AXIS_Z + bApplyTranslation=true + bApplyRotation=true + bAddTranslation=true + bAddRotation=true + BoneTranslationSpace=EBoneControlSpace.BCS_BoneSpace + BoneRotationSpace=EBoneControlSpace.BCS_BoneSpace + bIgnoreWhenNotRendered=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkelControl_CCD_IK.uc b/exported/Engine/Classes/SkelControl_CCD_IK.uc new file mode 100755 index 00000000..14c5a684 --- /dev/null +++ b/exported/Engine/Classes/SkelControl_CCD_IK.uc @@ -0,0 +1,24 @@ +class SkelControl_CCD_IK extends SkelControlBase + native(Anim) + hidecategories(Object,Object); + +var(Effector) Vector EffectorLocation; +var(Effector) SkelControlBase.EBoneControlSpace EffectorLocationSpace; +var(Effector) name EffectorSpaceBoneName; +var(Effector) Vector EffectorTranslationFromBone; +var(CCD) int NumBones; +var(CCD) int MaxPerBoneIterations; +var const int IterationsCount; +var(CCD) float Precision; +var(CCD) bool bStartFromTail; +var(CCD) bool bNoTurnOptimization; +var(CCD) const array AngleConstraint; +var(CCD) float MaxAngleSteps; + +defaultproperties +{ + NumBones=2 + MaxPerBoneIterations=3 + Precision=0.1000000 + MaxAngleSteps=0.4000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkelControl_Multiply.uc b/exported/Engine/Classes/SkelControl_Multiply.uc new file mode 100755 index 00000000..e3510470 --- /dev/null +++ b/exported/Engine/Classes/SkelControl_Multiply.uc @@ -0,0 +1,11 @@ +class SkelControl_Multiply extends SkelControlBase + native(Anim) + hidecategories(Object,Object); + +var() float Multiplier; + +defaultproperties +{ + Multiplier=1.0000000 + bIgnoreWhenNotRendered=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkelControl_TwistBone.uc b/exported/Engine/Classes/SkelControl_TwistBone.uc new file mode 100755 index 00000000..1408bcb7 --- /dev/null +++ b/exported/Engine/Classes/SkelControl_TwistBone.uc @@ -0,0 +1,12 @@ +class SkelControl_TwistBone extends SkelControlBase + native(Anim) + hidecategories(Object,Object); + +var() name SourceBoneName; +var() float TwistAngleScale; + +defaultproperties +{ + TwistAngleScale=-0.5000000 + bIgnoreWhenNotRendered=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkeletalMesh.uc b/exported/Engine/Classes/SkeletalMesh.uc new file mode 100755 index 00000000..0cb5b564 --- /dev/null +++ b/exported/Engine/Classes/SkeletalMesh.uc @@ -0,0 +1,424 @@ +class SkeletalMesh extends Object + native(SkeletalMesh) + noexport + hidecategories(Object); + +enum BoneBreakOption +{ + BONEBREAK_SoftPreferred, // 0 + BONEBREAK_AutoDetect, // 1 + BONEBREAK_RigidPreferred, // 2 + BONEBREAK_MAX // 3 +}; + +enum TriangleSortOption +{ + TRISORT_None, // 0 + TRISORT_CenterRadialDistance, // 1 + TRISORT_Random, // 2 + TRISORT_MergeContiguous, // 3 + TRISORT_Custom, // 4 + TRISORT_CustomLeftRight, // 5 + TRISORT_MAX // 6 +}; + +enum ClothMovementScaleGen +{ + ECMDM_DistToFixedVert, // 0 + ECMDM_VertexBoneWeight, // 1 + ECMDM_Empty, // 2 + ECMDM_MAX // 3 +}; + +enum TriangleSortAxis +{ + TSA_X_Axis, // 0 + TSA_Y_Axis, // 1 + TSA_Z_Axis, // 2 + TSA_MAX // 3 +}; + +enum SkeletalMeshOptimizationImportance +{ + SMOI_Off, // 0 + SMOI_Lowest, // 1 + SMOI_Low, // 2 + SMOI_Normal, // 3 + SMOI_High, // 4 + SMOI_Highest, // 5 + SMOI_MAX // 6 +}; + +enum SkeletalMeshOptimizationType +{ + SMOT_NumOfTriangles, // 0 + SMOT_MaxDeviation, // 1 + SMOT_MAX // 2 +}; + +enum SkeletalMeshOptimizationNormalMode +{ + SMONM_Recalculate, // 0 + SMONM_RecalculateSoft, // 1 + SMONM_RecalculateHard, // 2 + SMONM_MAX // 3 +}; + +enum ClothBoneType +{ + CLOTHBONE_Fixed, // 0 + CLOTHBONE_BreakableAttachment, // 1 + CLOTHBONE_TearLine, // 2 + CLOTHBONE_MAX // 3 +}; + +enum SoftBodyBoneType +{ + SOFTBODYBONE_Fixed, // 0 + SOFTBODYBONE_BreakableAttachment,// 1 + SOFTBODYBONE_TwoWayAttachment, // 2 + SOFTBODYBONE_MAX // 3 +}; + +struct native ApexClothingLodInfo +{ + var() editfixedsize array ClothingSectionInfo; + + structdefaultproperties + { + ClothingSectionInfo=none + } +}; + +struct native ApexClothingAssetInfo +{ + var() editfixedsize array ClothingLodInfo; + var name ClothingAssetName; + + structdefaultproperties + { + ClothingLodInfo=none + ClothingAssetName="None" + } +}; + +struct native BoneMirrorInfo +{ + var() int SourceIndex; + var() Object.EAxis BoneFlipAxis; + + structdefaultproperties + { + SourceIndex=0 + BoneFlipAxis=EAxis.AXIS_NONE + } +}; + +struct native BoneMirrorExport +{ + var() name BoneName; + var() name SourceBoneName; + var() Object.EAxis BoneFlipAxis; + + structdefaultproperties + { + BoneName="None" + SourceBoneName="None" + BoneFlipAxis=EAxis.AXIS_NONE + } +}; + +struct TriangleSortSettings +{ + var() SkeletalMesh.TriangleSortOption TriangleSorting; + var() SkeletalMesh.TriangleSortAxis CustomLeftRightAxis; + var() name CustomLeftRightBoneName; + + structdefaultproperties + { + TriangleSorting=TriangleSortOption.TRISORT_None + CustomLeftRightAxis=TriangleSortAxis.TSA_X_Axis + CustomLeftRightBoneName="None" + } +}; + +struct native BoneToRemove +{ + var() name BoneName; + var() byte BoneId; + + structdefaultproperties + { + BoneName="None" + BoneId=0 + } +}; + +struct native SkeletalMeshLODInfo +{ + var() float DisplayFactor; + var() float LODHysteresis; + var() editfixedsize array LODMaterialMap; + var() editfixedsize array bEnableShadowCasting; + var deprecated array TriangleSorting; + var() editfixedsize array TriangleSortSettings; + var() bool bDisableCompressions; + var bool bHasBeenSimplified; + var() array BonesToRemove; + + structdefaultproperties + { + DisplayFactor=0.0000000 + LODHysteresis=0.0000000 + LODMaterialMap=none + bEnableShadowCasting=none + TriangleSortSettings=none + bDisableCompressions=false + bHasBeenSimplified=false + BonesToRemove=none + } +}; + +struct native SkeletalMeshOptimizationSettings +{ + var float MaxDeviationPercentage; + var SkeletalMesh.SkeletalMeshOptimizationImportance SilhouetteImportance; + var SkeletalMesh.SkeletalMeshOptimizationImportance TextureImportance; + var SkeletalMesh.SkeletalMeshOptimizationImportance ShadingImportance; + var SkeletalMesh.SkeletalMeshOptimizationImportance SkinningImportance; + var deprecated SkeletalMesh.SkeletalMeshOptimizationNormalMode NormalMode; + var float BoneReductionRatio; + var int MaxBonesPerVertex; + var SkeletalMesh.SkeletalMeshOptimizationType ReductionMethod; + var float NumOfTrianglesPercentage; + var float WeldingThreshold; + var bool bRecalcNormals; + var float NormalsThreshold; + + structdefaultproperties + { + MaxDeviationPercentage=0.0000000 + SilhouetteImportance=SkeletalMeshOptimizationImportance.SMOI_Off + TextureImportance=SkeletalMeshOptimizationImportance.SMOI_Off + ShadingImportance=SkeletalMeshOptimizationImportance.SMOI_Off + SkinningImportance=SkeletalMeshOptimizationImportance.SMOI_Off + BoneReductionRatio=0.0000000 + MaxBonesPerVertex=0 + ReductionMethod=SkeletalMeshOptimizationType.SMOT_NumOfTriangles + NumOfTrianglesPercentage=0.0000000 + WeldingThreshold=0.0000000 + bRecalcNormals=false + NormalsThreshold=0.0000000 + } +}; + +struct native ClothSpecialBoneInfo +{ + var() name BoneName; + var() SkeletalMesh.ClothBoneType BoneType; + var const array AttachedVertexIndices; + + structdefaultproperties + { + BoneName="None" + BoneType=ClothBoneType.CLOTHBONE_Fixed + AttachedVertexIndices=none + } +}; + +struct native SoftBodyTetraLink +{ + var int Index; + var Vector Bary; + + structdefaultproperties + { + Index=0 + Bary=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct native SoftBodySpecialBoneInfo +{ + var() name BoneName; + var() SkeletalMesh.SoftBodyBoneType BoneType; + var const array AttachedVertexIndices; + + structdefaultproperties + { + BoneName="None" + BoneType=SoftBodyBoneType.SOFTBODYBONE_Fixed + AttachedVertexIndices=none + } +}; + +var() native const BoxSphereBounds Bounds; +var() const Vector LodCheckSphereOrigin; +var() const float LodCheckSphereRadius; +var() native const array Materials; +var() editfixedsize array ClothingAssets; +var() editfixedsize array ClothingLodMap; +var() native const Vector Origin; +var() native const Rotator RotOrigin; +var native const array RefSkeleton; +var native const int SkeletalDepth; +var native const map{VOID,VOID} NameIndexMap; +var private native const IndirectArray_Mirror LODModels; +var private native const Pointer SourceData; +var native const array RefBasesInvMatrix; +var() editfixedsize array SkelMirrorTable; +var() Object.EAxis SkelMirrorAxis; +var() Object.EAxis SkelMirrorFlipAxis; +var array Sockets; +var() native const editconst array BoneBreakNames; +var() native const array BoneBreakOptions; +var() editfixedsize array LODInfo; +var array OptimizationSettings; +var() array PerPolyCollisionBones; +var() array AddToParentPerPolyCollisionBone; +var private native const array PerPolyBoneKDOPs; +var() private const bool bStripkDOP; +var() bool bPerPolyUseSoftWeighting; +var() bool bUseSimpleLineCollision; +var() bool bUseSimpleBoxCollision; +var() const bool bForceCPUSkinning; +var() const bool bUseFullPrecisionUVs; +var bool bHasBeenSimplified; +var() FaceFXAsset FaceFXAsset; +var() int LODBiasPC; +var() int LODBiasPS3; +var() int LODBiasXbox360; +var() int LODBiasOrbis; +var native const transient array ClothMesh; +var native const transient array ClothMeshScale; +var const array ClothToGraphicsVertMap; +var const array ClothMovementScale; +var(Cloth) SkeletalMesh.ClothMovementScaleGen ClothMovementScaleGenMode; +var(Cloth) float ClothToAnimMeshMaxDist; +var(Cloth) bool bLimitClothToAnimMesh; +var const array ClothWeldingMap; +var const int ClothWeldingDomain; +var const array ClothWeldedIndices; +var(ClothAdvanced) const bool bForceNoWelding; +var const int NumFreeClothVerts; +var const array ClothIndexBuffer; +var(Cloth) const array ClothBones; +var(Cloth) const int ClothHierarchyLevels; +var(Cloth) const bool bEnableClothBendConstraints; +var(Cloth) const bool bEnableClothDamping; +var(Cloth) const bool bUseClothCOMDamping; +var(Cloth) const float ClothStretchStiffness; +var(Cloth) const float ClothBendStiffness; +var(Cloth) const float ClothDensity; +var(Cloth) const float ClothThickness; +var(Cloth) const float ClothDamping; +var(Cloth) const int ClothIterations; +var(Cloth) const int ClothHierarchicalIterations; +var(Cloth) const float ClothFriction; +var(ClothAdvanced) const float ClothRelativeGridSpacing; +var(ClothAdvanced) const float ClothPressure; +var(ClothAdvanced) const float ClothCollisionResponseCoefficient; +var(ClothAdvanced) const float ClothAttachmentResponseCoefficient; +var(ClothAdvanced) const float ClothAttachmentTearFactor; +var(ClothAdvanced) const float ClothSleepLinearVelocity; +var(Cloth) const float HardStretchLimitFactor; +var(Cloth) const bool bHardStretchLimit; +var(ClothAdvanced) const bool bEnableClothOrthoBendConstraints; +var(ClothAdvanced) const bool bEnableClothSelfCollision; +var(ClothAdvanced) const bool bEnableClothPressure; +var(ClothAdvanced) const bool bEnableClothTwoWayCollision; +var(ClothAdvanced) const array ClothSpecialBones; +var(Cloth) const bool bEnableClothLineChecks; +var(ClothAdvanced) const bool bClothMetal; +var(ClothAdvanced) const float ClothMetalImpulseThreshold; +var(ClothAdvanced) const float ClothMetalPenetrationDepth; +var(ClothAdvanced) const float ClothMetalMaxDeformationDistance; +var(Cloth) const bool bEnableClothTearing; +var(Cloth) const float ClothTearFactor; +var(Cloth) const int ClothTearReserve; +var(Cloth) bool bEnableValidBounds; +var(Cloth) Vector ValidBoundsMin; +var(Cloth) Vector ValidBoundsMax; +var native const Map_Mirror ClothTornTriMap; +var const array SoftBodySurfaceToGraphicsVertMap; +var const array SoftBodySurfaceIndices; +var const array SoftBodyTetraVertsUnscaled; +var const array SoftBodyTetraIndices; +var const array SoftBodyTetraLinks; +var native const transient array CachedSoftBodyMeshes; +var native const transient array CachedSoftBodyMeshScales; +var(SoftBody) const array SoftBodyBones; +var(SoftBody) const array SoftBodySpecialBones; +var(SoftBody) const float SoftBodyVolumeStiffness; +var(SoftBody) const float SoftBodyStretchingStiffness; +var(SoftBody) const float SoftBodyDensity; +var(SoftBody) const float SoftBodyParticleRadius; +var(SoftBody) const float SoftBodyDamping; +var(SoftBody) const int SoftBodySolverIterations; +var(SoftBody) const float SoftBodyFriction; +var(SoftBody) const float SoftBodyRelativeGridSpacing; +var(SoftBody) const float SoftBodySleepLinearVelocity; +var(SoftBody) const bool bEnableSoftBodySelfCollision; +var(SoftBody) const float SoftBodyAttachmentResponse; +var(SoftBody) const float SoftBodyCollisionResponse; +var(SoftBody) const float SoftBodyDetailLevel; +var(SoftBody) const int SoftBodySubdivisionLevel; +var(SoftBody) const bool bSoftBodyIsoSurface; +var(SoftBody) const bool bEnableSoftBodyDamping; +var(SoftBody) const bool bUseSoftBodyCOMDamping; +var(SoftBody) const float SoftBodyAttachmentThreshold; +var(SoftBody) const bool bEnableSoftBodyTwoWayCollision; +var(SoftBody) const float SoftBodyAttachmentTearFactor; +var(SoftBody) const bool bEnableSoftBodyLineChecks; +var bool bHasVertexColors; +var native const array GraphicsIndexIsCloth; +var native const array CachedStreamingTextureFactors; +var() const float StreamingDistanceMultiplier; +var native const transient int ReleaseResourcesFence; +var const transient QWord SkelMeshRUID; +var(ApexClothing) const bool bUseClothingAssetMaterial; + +defaultproperties +{ + LodCheckSphereRadius=-1.0000000 + SkelMirrorAxis=EAxis.AXIS_X + SkelMirrorFlipAxis=EAxis.AXIS_Z + bUseSimpleLineCollision=true + bUseSimpleBoxCollision=true + ClothStretchStiffness=1.0000000 + ClothBendStiffness=1.0000000 + ClothDensity=1.0000000 + ClothThickness=0.5000000 + ClothDamping=0.5000000 + ClothIterations=5 + ClothHierarchicalIterations=2 + ClothFriction=0.5000000 + ClothRelativeGridSpacing=1.0000000 + ClothPressure=1.0000000 + ClothCollisionResponseCoefficient=0.2000000 + ClothAttachmentResponseCoefficient=0.2000000 + ClothAttachmentTearFactor=1.5000000 + ClothSleepLinearVelocity=-1.0000000 + HardStretchLimitFactor=1.1000000 + ClothMetalImpulseThreshold=10.0000000 + ClothTearFactor=3.5000000 + ClothTearReserve=128 + SoftBodyVolumeStiffness=1.0000000 + SoftBodyStretchingStiffness=1.0000000 + SoftBodyDensity=1.0000000 + SoftBodyParticleRadius=0.1000000 + SoftBodyDamping=0.5000000 + SoftBodySolverIterations=5 + SoftBodyFriction=0.5000000 + SoftBodyRelativeGridSpacing=1.0000000 + SoftBodySleepLinearVelocity=-1.0000000 + SoftBodyAttachmentResponse=0.2000000 + SoftBodyCollisionResponse=0.2000000 + SoftBodyDetailLevel=0.5000000 + SoftBodySubdivisionLevel=4 + bSoftBodyIsoSurface=true + SoftBodyAttachmentThreshold=0.5000000 + bEnableSoftBodyTwoWayCollision=true + SoftBodyAttachmentTearFactor=1.5000000 + StreamingDistanceMultiplier=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkeletalMeshActor.uc b/exported/Engine/Classes/SkeletalMeshActor.uc new file mode 100755 index 00000000..66a4f09e --- /dev/null +++ b/exported/Engine/Classes/SkeletalMeshActor.uc @@ -0,0 +1,661 @@ +class SkeletalMeshActor extends Actor + native(Anim) + placeable + hidecategories(Navigation) + classgroup(SkeletalMeshes); + +struct CheckpointRecord +{ + var bool bReplicated; + var bool bHidden; + var bool bSavedPosition; + var Vector Location; + var Rotator Rotation; + + structdefaultproperties + { + bReplicated=false + bHidden=false + bSavedPosition=false + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Rotation=(Pitch=0,Yaw=0,Roll=0) + } +}; + +struct native SkelMeshActorControlTarget +{ + var() name ControlName; + var() Actor TargetActor; + + structdefaultproperties + { + ControlName="None" + TargetActor=none + } +}; + +var() bool bDamageAppliesImpulse; +var() bool bShouldDoAnimNotifies; +var() bool bForceSaveInCheckpoint; +var deprecated bool bCollideActors_OldValue; +var() bool bShouldShadowParentAllAttachedActors; +var() export editinline SkeletalMeshComponent SkeletalMeshComponent; +var() const editconst export editinline LightEnvironmentComponent LightEnvironment; +var() export editinline TgSilhouetteComponent Silhouette; +var export editinline AudioComponent FacialAudioComp; +var repnotify transient SkeletalMesh ReplicatedMesh; +var repnotify MaterialInterface ReplicatedMaterial0; +var repnotify MaterialInterface ReplicatedMaterial1; +var() array ControlTargets; +var transient array InterpGroupList; +var private transient name SavedAnimSeqName; +var private transient float SavedCurrentTime; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + ReplicatedMaterial0, ReplicatedMaterial1, + ReplicatedMesh; +} + +simulated event PostBeginPlay() +{ + // End:0x4D + if((int(Role) == int(ROLE_Authority)) && SkeletalMeshComponent != none) + { + ReplicatedMesh = SkeletalMeshComponent.SkeletalMesh; + } + // End:0x76 + if(bShouldShadowParentAllAttachedActors) + { + SetShadowParentOnAllAttachedComponents(SkeletalMeshComponent, LightEnvironment); + } + // End:0xE9 + if((SkeletalMeshComponent != none) && SkeletalMeshComponent.PhysicsAssetInstance != none) + { + SkeletalMeshComponent.PhysicsAssetInstance.SetFullAnimWeightBonesFixed(false, SkeletalMeshComponent); + } + // End:0x116 + if(bHidden) + { + SkeletalMeshComponent.SetClothFrozen(true); + } + UpdateComponentTickGroup(); + //return; +} + +event CollisionChanged() +{ + UpdateComponentTickGroup(); + //return; +} + +// Export USkeletalMeshActor::execUpdateComponentTickGroup(FFrame&, void* const) +native function UpdateComponentTickGroup(); + +simulated event Destroyed() +{ + super.Destroyed(); + InterpGroupList.Length = 0; + UpdateAnimSetList(); + //return; +} + +// Export USkeletalMeshActor::execUpdateAnimSetList(FFrame&, void* const) +native simulated function UpdateAnimSetList(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x44 + if(VarName == 'ReplicatedMesh') + { + SkeletalMeshComponent.SetSkeletalMesh(ReplicatedMesh); + } + else + { + // End:0x87 + if(VarName == 'ReplicatedMaterial0') + { + SkeletalMeshComponent.SetMaterial(0, ReplicatedMaterial0); + } + else + { + // End:0xCA + if(VarName == 'ReplicatedMaterial1') + { + SkeletalMeshComponent.SetMaterial(1, ReplicatedMaterial1); + } + else + { + super.ReplicatedEvent(VarName); + } + } + } + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + local AnimNodeSequence SeqNode; + + SeqNode = AnimNodeSequence(SkeletalMeshComponent.Animations); + // End:0x257 + if(SeqNode != none) + { + // End:0xFF + if(Action.InputLinks[0].bHasImpulse) + { + // End:0xFC + if(!SeqNode.bPlaying) + { + SeqNode.PlayAnim(SeqNode.bLooping, SeqNode.Rate, 0.0000000); + } + } + else + { + // End:0x17A + if(Action.InputLinks[1].bHasImpulse) + { + // End:0x177 + if(SeqNode.bPlaying) + { + SeqNode.StopAnim(); + } + } + else + { + // End:0x257 + if(Action.InputLinks[2].bHasImpulse) + { + // End:0x1F6 + if(SeqNode.bPlaying) + { + SeqNode.StopAnim(); + } + else + { + SeqNode.PlayAnim(SeqNode.bLooping, SeqNode.Rate, 0.0000000); + } + } + } + } + } + //return; +} + +function OnSetMaterial(SeqAct_SetMaterial Action) +{ + SkeletalMeshComponent.SetMaterial(Action.MaterialIndex, Action.NewMaterial); + // End:0xB1 + if(Action.MaterialIndex == 0) + { + ReplicatedMaterial0 = Action.NewMaterial; + ForceNetRelevant(); + } + // End:0x107 + if(Action.MaterialIndex == 1) + { + ReplicatedMaterial1 = Action.NewMaterial; + ForceNetRelevant(); + } + //return; +} + +simulated event BeginAnimControl(InterpGroup InInterpGroup) +{ + MAT_BeginAnimControl(InInterpGroup); + //return; +} + +// Export USkeletalMeshActor::execMAT_BeginAnimControl(FFrame&, void* const) +native function MAT_BeginAnimControl(InterpGroup InInterpGroup); + +simulated event SetAnimPosition(name SlotName, int ChannelIndex, name InAnimSeqName, float InPosition, bool bFireNotifies, bool bLooping, bool bEnableRootMotion) +{ + local AnimNodeSequence SeqNode; + + SkeletalMeshComponent.LastRenderTime = WorldInfo.TimeSeconds; + SeqNode = AnimNodeSequence(SkeletalMeshComponent.Animations); + // End:0x153 + if(SeqNode != none) + { + // End:0xF7 + if((SeqNode.AnimSeqName != InAnimSeqName) || SeqNode.AnimSeq == none) + { + SeqNode.SetAnim(InAnimSeqName); + } + SeqNode.bLooping = bLooping; + SeqNode.SetPosition(InPosition, bFireNotifies); + } + //return; +} + +simulated event FinishAnimControl(InterpGroup InInterpGroup) +{ + MAT_FinishAnimControl(InInterpGroup); + //return; +} + +// Export USkeletalMeshActor::execMAT_FinishAnimControl(FFrame&, void* const) +native function MAT_FinishAnimControl(InterpGroup InInterpGroup); + +simulated event bool PlayActorFaceFXAnim(FaceFXAnimSet AnimSet, string GroupName, string SeqName, SoundCue SoundCueToPlay, AkEvent AkEventToPlay) +{ + return SkeletalMeshComponent.PlayFaceFXAnim(AnimSet, SeqName, GroupName, SoundCueToPlay, AkEventToPlay); + //return ReturnValue; +} + +simulated event StopActorFaceFXAnim() +{ + SkeletalMeshComponent.StopFaceFXAnim(); + //return; +} + +simulated event AudioComponent GetFaceFXAudioComponent() +{ + return FacialAudioComp; + //return ReturnValue; +} + +simulated function OnPlayFaceFXAnim(SeqAct_PlayFaceFXAnim inAction) +{ + local PlayerController PC; + + SkeletalMeshComponent.PlayFaceFXAnim(inAction.FaceFXAnimSetRef, inAction.FaceFXAnimName, inAction.FaceFXGroupName, inAction.SoundCueToPlay, inAction.AkEventToPlay); + // End:0x1CD + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x1CC + if(NetConnection(PC.Player) != none) + { + PC.ClientPlayActorFaceFXAnim(self, inAction.FaceFXAnimSetRef, inAction.FaceFXGroupName, inAction.FaceFXAnimName, inAction.SoundCueToPlay, inAction.AkEventToPlay); + } + } + //return; +} + +simulated event FaceFXAsset GetActorFaceFXAsset() +{ + // End:0x81 + if((SkeletalMeshComponent.SkeletalMesh != none) && !SkeletalMeshComponent.bDisableFaceFX) + { + return SkeletalMeshComponent.SkeletalMesh.FaceFXAsset; + } + else + { + return none; + } + //return ReturnValue; +} + +simulated function bool IsActorPlayingFaceFXAnim() +{ + return (SkeletalMeshComponent != none) && SkeletalMeshComponent.IsPlayingFaceFXAnim(); + //return ReturnValue; +} + +event OnSetMesh(SeqAct_SetMesh Action) +{ + // End:0xF7 + if(int(Action.MeshType) == int(1)) + { + // End:0xF7 + if((Action.NewSkeletalMesh != none) && Action.NewSkeletalMesh != SkeletalMeshComponent.SkeletalMesh) + { + SkeletalMeshComponent.SetSkeletalMesh(Action.NewSkeletalMesh); + ReplicatedMesh = Action.NewSkeletalMesh; + } + } + //return; +} + +simulated event OnUpdatePhysBonesFromAnim(SeqAct_UpdatePhysBonesFromAnim Action) +{ + // End:0x99 + if(Action.InputLinks[0].bHasImpulse) + { + SkeletalMeshComponent.ForceSkelUpdate(); + SkeletalMeshComponent.UpdateRBBonesFromSpaceBases(true, true); + SkeletalMeshComponent.ForceApexClothingTeleportAndReset(); + } + else + { + // End:0x12C + if(Action.InputLinks[1].bHasImpulse) + { + // End:0x129 + if(SkeletalMeshComponent.PhysicsAssetInstance != none) + { + SkeletalMeshComponent.PhysicsAssetInstance.SetAllBodiesFixed(true); + } + } + else + { + // End:0x1C6 + if(Action.InputLinks[2].bHasImpulse) + { + // End:0x1C6 + if(SkeletalMeshComponent.PhysicsAssetInstance != none) + { + SkeletalMeshComponent.PhysicsAssetInstance.SetFullAnimWeightBonesFixed(false, SkeletalMeshComponent); + } + } + } + } + //return; +} + +simulated event OnSetSkelControlTarget(SeqAct_SetSkelControlTarget Action) +{ + local int I; + + // End:0x55 + if((Action.SkelControlName == 'None') || Action.TargetActors.Length == 0) + { + return; + } + I = 0; + J0x60: + + // End:0x141 [Loop If] + if(I < ControlTargets.Length) + { + // End:0x133 + if(ControlTargets[I].ControlName == Action.SkelControlName) + { + ControlTargets[I].TargetActor = Actor(Action.TargetActors[Rand(Action.TargetActors.Length)]); + return; + } + I++; + // [Loop Continue] + goto J0x60; + } + ControlTargets.Length = ControlTargets.Length + 1; + ControlTargets[ControlTargets.Length - 1].ControlName = Action.SkelControlName; + ControlTargets[ControlTargets.Length - 1].TargetActor = Actor(Action.TargetActors[Rand(Action.TargetActors.Length)]); + //return; +} + +function DoKismetAttachment(Actor Attachment, SeqAct_AttachToActor Action) +{ + local bool bOldCollideActors, bOldBlockActors, bValidBone, bValidSocket; + + // End:0xF7 + if((SkeletalMeshComponent != none) && Action.BoneName != 'None') + { + bValidSocket = SkeletalMeshComponent.GetSocketByName(Action.BoneName) != none; + bValidBone = SkeletalMeshComponent.MatchRefBone(Action.BoneName) != -1; + // End:0xF7 + if(!bValidBone && !bValidSocket) + { + } + } + // End:0x448 + if(bValidBone || bValidSocket) + { + bOldCollideActors = Attachment.bCollideActors; + bOldBlockActors = Attachment.bBlockActors; + Attachment.SetCollision(false, false); + Attachment.SetHardAttach(Action.bHardAttach); + // End:0x2D8 + if(bValidBone && !bValidSocket) + { + // End:0x256 + if(Action.bUseRelativeOffset) + { + Attachment.SetLocation(SkeletalMeshComponent.GetBoneLocation(Action.BoneName)); + } + // End:0x2D8 + if(Action.bUseRelativeRotation) + { + Attachment.SetRotation(QuatToRotator(SkeletalMeshComponent.GetBoneQuaternion(Action.BoneName))); + } + } + Attachment.SetBase(self,, SkeletalMeshComponent, Action.BoneName); + // End:0x399 + if(Action.bUseRelativeRotation) + { + Attachment.SetRelativeRotation(Attachment.RelativeRotation + Action.RelativeRotation); + } + // End:0x418 + if(Action.bUseRelativeOffset) + { + Attachment.SetRelativeLocation(Attachment.RelativeLocation + Action.RelativeOffset); + } + Attachment.SetCollision(bOldCollideActors, bOldBlockActors); + } + else + { + super.DoKismetAttachment(Attachment, Action); + } + //return; +} + +event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + local Vector ApplyImpulse; + + super.TakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + // End:0x14F + if(bDamageAppliesImpulse && DamageType.default.KDamageImpulse > float(0)) + { + // End:0x97 + if(VSize(Momentum) < 0.0010000) + { + return; + } + ApplyImpulse = Normal(Momentum) * DamageType.default.KDamageImpulse; + // End:0x14F + if(HitInfo.HitComponent != none) + { + HitInfo.HitComponent.AddImpulse(ApplyImpulse, HitLocation, HitInfo.BoneName); + } + } + //return; +} + +function bool ShouldSaveForCheckpoint() +{ + return ((int(RemoteRole) != int(ROLE_None)) || bForceSaveInCheckpoint) || IsInPersistentLevel(true); + //return ReturnValue; +} + +function CreateCheckpointRecord(out CheckpointRecord Record) +{ + Record.bReplicated = int(RemoteRole) != int(ROLE_None); + Record.bHidden = bHidden; + // End:0xDF + if(bForceSaveInCheckpoint || IsInPersistentLevel(true)) + { + Record.bSavedPosition = true; + Record.Location = Location; + Record.Rotation = Rotation; + } + //return; +} + +function ApplyCheckpointRecord(const out CheckpointRecord Record) +{ + SetHidden(Record.bHidden); + // End:0x85 + if(Record.bSavedPosition) + { + SetLocation(Record.Location); + SetRotation(Record.Rotation); + } + // End:0xEC + if(Record.bReplicated) + { + ForceNetRelevant(); + // End:0xEC + if(int(RemoteRole) != int(ROLE_None)) + { + SetForcedInitialReplicatedProperty(BoolProperty'Engine.Actor.bHidden', bHidden == default.bHidden); + } + } + //return; +} + +event bool PlayParticleEffect(const AnimNotify_PlayParticleEffect AnimNotifyData) +{ + local Vector Loc; + local Rotator Rot; + local editinline ParticleSystemComponent PSC; + local bool bPlayNonExtreme; + local ParticleSystem PSys; + local ParticleChannelContainer PSysChannels; + + PSys = AnimNotifyData.GetParticleSystemToPlay(SkeletalMeshComponent); + PSysChannels = AnimNotifyData.GetParticleChannels(SkeletalMeshComponent); + // End:0x8F + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return true; + } + bPlayNonExtreme = (AnimNotifyData.bIsExtremeContent == true) && WorldInfo.GRI.ShouldShowGore() == false; + // End:0x13F + if((bShouldDoAnimNotifies == false) || bPlayNonExtreme && AnimNotifyData.PSNonExtremeContentTemplate == none) + { + return true; + } + // End:0x318 + if(AnimNotifyData.bAttach == true) + { + PSC = new (self) Class'Engine.ParticleSystemComponent'; + // End:0x1B3 + if(PSC != none) + { + PSC.m_ParticleChannels = PSysChannels; + } + PSC.SetTemplate(PSys); + // End:0x250 + if(AnimNotifyData.SocketName != 'None') + { + SkeletalMeshComponent.AttachComponentToSocket(PSC, AnimNotifyData.SocketName); + } + else + { + // End:0x2C5 + if(AnimNotifyData.BoneName != 'None') + { + SkeletalMeshComponent.AttachComponent(PSC, AnimNotifyData.BoneName); + } + } + PSC.ActivateSystem(); + PSC.__OnSystemFinished__Delegate = SkelMeshActorOnParticleSystemFinished; + } + else + { + // End:0x397 + if(AnimNotifyData.SocketName != 'None') + { + SkeletalMeshComponent.GetSocketWorldLocationAndRotation(AnimNotifyData.SocketName, Loc, Rot); + } + else + { + // End:0x460 + if(AnimNotifyData.BoneName != 'None') + { + Loc = SkeletalMeshComponent.GetBoneLocation(AnimNotifyData.BoneName); + Rot = QuatToRotator(SkeletalMeshComponent.GetBoneQuaternion(AnimNotifyData.BoneName)); + } + else + { + Loc = Location; + Rot = rot(0, 0, 1); + } + } + PSC = WorldInfo.MyEmitterPool.SpawnEmitter(PSys, Loc, Rot,,,,, PSysChannels); + } + // End:0x56B + if((PSC != none) && AnimNotifyData.BoneSocketModuleActorName != 'None') + { + PSC.SetActorParameter(AnimNotifyData.BoneSocketModuleActorName, self); + } + // End:0x5B7 + if(PSC != none) + { + PSC.CustomTimeDilation = AnimNotifyData.TimeDilationFactor; + } + return true; + //return ReturnValue; +} + +simulated function SkelMeshActorOnParticleSystemFinished(ParticleSystemComponent PSC) +{ + SkeletalMeshComponent.DetachComponent(PSC); + //return; +} + +event bool CreateForceField(const AnimNotify_ForceField AnimNotifyData) +{ + local editinline NxForceFieldComponent NewForceFieldComponent; + + NewForceFieldComponent = new (SkeletalMeshComponent) AnimNotifyData.ForceFieldComponent.Class (AnimNotifyData.ForceFieldComponent); + NewForceFieldComponent.DoInitRBPhys(); + // End:0xFB + if(AnimNotifyData.SocketName != 'None') + { + SkeletalMeshComponent.AttachComponentToSocket(NewForceFieldComponent, AnimNotifyData.SocketName); + } + else + { + // End:0x170 + if(AnimNotifyData.BoneName != 'None') + { + SkeletalMeshComponent.AttachComponent(NewForceFieldComponent, AnimNotifyData.BoneName); + } + } + return true; + //return ReturnValue; +} + +defaultproperties +{ + bShouldDoAnimNotifies=true + // Reference: SkeletalMeshComponent'Engine.Default__SkeletalMeshActor.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" class=Engine.SkeletalMeshComponent + Animations=AnimNodeSequence'Engine.Default__SkeletalMeshActor.AnimNodeSeq0' + bUpdateSkelWhenNotRendered=false + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActor.MyLightEnvironment' + RBChannel=ERBCollisionChannel.RBCC_GameplayPhysics + CollideActors=true + BlockZeroExtent=true + RBCollideWithChannels=(Default=true,GameplayPhysics=true,EffectPhysics=true,BlockingVolume=true) + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActor.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + begin object name="MyLightEnvironment" class=Engine.DynamicLightEnvironmentComponent + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'Engine.Default__SkeletalMeshActor.MySilhouette' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MySilhouette' + begin object name="MySilhouette" class=Engine.TgSilhouetteComponent + MeshComponent=SkeletalMeshComponent'Engine.Default__SkeletalMeshActor.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'Engine.Default__SkeletalMeshActor.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + begin object name="FaceAudioComponent" class=Engine.AudioComponent + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + bNoDelete=true + bServerTickIsDisabled=true + bProjTarget=true + bNoEncroachCheck=true + bEdShouldSnap=true + CollisionComponent=SkeletalMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkeletalMeshActorBasedOnExtremeContent.uc b/exported/Engine/Classes/SkeletalMeshActorBasedOnExtremeContent.uc new file mode 100755 index 00000000..f92561a9 --- /dev/null +++ b/exported/Engine/Classes/SkeletalMeshActorBasedOnExtremeContent.uc @@ -0,0 +1,108 @@ +class SkeletalMeshActorBasedOnExtremeContent extends SkeletalMeshActor + native(Anim) + placeable + hidecategories(Navigation); + +struct native SkelMaterialSetterDatum +{ + var() int MaterialIndex; + var() MaterialInterface TheMaterial; + + structdefaultproperties + { + MaterialIndex=0 + TheMaterial=none + } +}; + +var() array ExtremeContent; +var() array NonExtremeContent; + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + SetMaterialBasedOnExtremeContent(); + //return; +} + +simulated function SetMaterialBasedOnExtremeContent() +{ + local int Idx; + + // End:0xD6 + if(WorldInfo.GRI.ShouldShowGore()) + { + Idx = 0; + J0x42: + + // End:0xD3 [Loop If] + if(Idx < ExtremeContent.Length) + { + SkeletalMeshComponent.SetMaterial(ExtremeContent[Idx].MaterialIndex, ExtremeContent[Idx].TheMaterial); + ++Idx; + // [Loop Continue] + goto J0x42; + } + } + else + { + Idx = 0; + J0xE1: + + // End:0x172 [Loop If] + if(Idx < NonExtremeContent.Length) + { + SkeletalMeshComponent.SetMaterial(NonExtremeContent[Idx].MaterialIndex, NonExtremeContent[Idx].TheMaterial); + ++Idx; + // [Loop Continue] + goto J0xE1; + } + } + //return; +} + +defaultproperties +{ + // Reference: SkeletalMeshComponent'Engine.Default__SkeletalMeshActorBasedOnExtremeContent.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'Engine.Default__SkeletalMeshActor.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'Engine.Default__SkeletalMeshActorBasedOnExtremeContent.SkeletalMeshComponent0.AnimNodeSeq0' + // Archetype: AnimNodeSequence'Engine.Default__SkeletalMeshActor.AnimNodeSeq0' + begin object name="AnimNodeSeq0" + end object + Animations=AnimNodeSeq0 + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActorBasedOnExtremeContent.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActorBasedOnExtremeContent.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'Engine.Default__SkeletalMeshActorBasedOnExtremeContent.MySilhouette' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__SkeletalMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'Engine.Default__SkeletalMeshActorBasedOnExtremeContent.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'Engine.Default__SkeletalMeshActorBasedOnExtremeContent.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'Engine.Default__SkeletalMeshActor.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + CollisionComponent=SkeletalMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkeletalMeshActorMAT.uc b/exported/Engine/Classes/SkeletalMeshActorMAT.uc new file mode 100755 index 00000000..d13f95a8 --- /dev/null +++ b/exported/Engine/Classes/SkeletalMeshActorMAT.uc @@ -0,0 +1,120 @@ +class SkeletalMeshActorMAT extends SkeletalMeshCinematicActor + native(Anim) + placeable + hidecategories(Navigation); + +var transient array SlotNodes; + +// Export USkeletalMeshActorMAT::execMAT_SetAnimWeights(FFrame&, void* const) +native function MAT_SetAnimWeights(array SlotInfos); + +// Export USkeletalMeshActorMAT::execMAT_SetMorphWeight(FFrame&, void* const) +native function MAT_SetMorphWeight(name MorphNodeName, float MorphWeight); + +// Export USkeletalMeshActorMAT::execMAT_SetSkelControlScale(FFrame&, void* const) +native function MAT_SetSkelControlScale(name SkelControlName, float Scale); + +// Export USkeletalMeshActorMAT::execMAT_SetSkelControlStrength(FFrame&, void* const) +native function MAT_SetSkelControlStrength(name SkelControlName, float ControlStrength); + +simulated event Destroyed() +{ + ClearAnimNodes(); + super(SkeletalMeshActor).Destroyed(); + //return; +} + +simulated event PostInitAnimTree(SkeletalMeshComponent SkelComp) +{ + super(Actor).PostInitAnimTree(SkelComp); + ClearAnimNodes(); + CacheAnimNodes(); + //return; +} + +simulated function CacheAnimNodes() +{ + local AnimNodeSlot SlotNode; + + // End:0x53 + foreach SkeletalMeshComponent.AllAnimNodes(Class'Engine.AnimNodeSlot', SlotNode) + { + SlotNodes[SlotNodes.Length] = SlotNode; + } + //return; +} + +simulated function ClearAnimNodes() +{ + SlotNodes.Length = 0; + //return; +} + +simulated event SetAnimPosition(name SlotName, int ChannelIndex, name InAnimSeqName, float InPosition, bool bFireNotifies, bool bLooping, bool bEnableRootMotion) +{ + MAT_SetAnimPosition(SlotName, ChannelIndex, InAnimSeqName, InPosition, bFireNotifies, bLooping, bEnableRootMotion); + //return; +} + +// Export USkeletalMeshActorMAT::execMAT_SetAnimPosition(FFrame&, void* const) +native function MAT_SetAnimPosition(name SlotName, int ChannelIndex, name InAnimSeqName, float InPosition, bool bFireNotifies, bool bLooping, bool bEnableRootMotion); + +simulated event FinishAnimControl(InterpGroup InInterpGroup) +{ + MAT_FinishAnimControl(InInterpGroup); + //return; +} + +simulated event SetMorphWeight(name MorphNodeName, float MorphWeight) +{ + MAT_SetMorphWeight(MorphNodeName, MorphWeight); + //return; +} + +simulated event SetSkelControlScale(name SkelControlName, float Scale) +{ + MAT_SetSkelControlScale(SkelControlName, Scale); + //return; +} + +defaultproperties +{ + // Reference: SkeletalMeshComponent'Engine.Default__SkeletalMeshActorMAT.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'Engine.Default__SkeletalMeshCinematicActor.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + Animations=none + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActorMAT.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActorMAT.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshCinematicActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'Engine.Default__SkeletalMeshActorMAT.MySilhouette' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__SkeletalMeshCinematicActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'Engine.Default__SkeletalMeshActorMAT.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'Engine.Default__SkeletalMeshActorMAT.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'Engine.Default__SkeletalMeshCinematicActor.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + CollisionComponent=SkeletalMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkeletalMeshActorMATSpawnable.uc b/exported/Engine/Classes/SkeletalMeshActorMATSpawnable.uc new file mode 100755 index 00000000..837bbd30 --- /dev/null +++ b/exported/Engine/Classes/SkeletalMeshActorMATSpawnable.uc @@ -0,0 +1,45 @@ +class SkeletalMeshActorMATSpawnable extends SkeletalMeshActorMAT + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: SkeletalMeshComponent'Engine.Default__SkeletalMeshActorMATSpawnable.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'Engine.Default__SkeletalMeshActorMAT.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActorMATSpawnable.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActorMATSpawnable.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActorMAT.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'Engine.Default__SkeletalMeshActorMATSpawnable.MySilhouette' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__SkeletalMeshActorMAT.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'Engine.Default__SkeletalMeshActorMATSpawnable.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'Engine.Default__SkeletalMeshActorMATSpawnable.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'Engine.Default__SkeletalMeshActorMAT.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + bNoDelete=false + CollisionComponent=SkeletalMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkeletalMeshActorMATWalkable.uc b/exported/Engine/Classes/SkeletalMeshActorMATWalkable.uc new file mode 100755 index 00000000..f258579f --- /dev/null +++ b/exported/Engine/Classes/SkeletalMeshActorMATWalkable.uc @@ -0,0 +1,59 @@ +class SkeletalMeshActorMATWalkable extends SkeletalMeshActorMAT + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: SkeletalMeshComponent'Engine.Default__SkeletalMeshActorMATWalkable.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'Engine.Default__SkeletalMeshActorMAT.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActorMATWalkable.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActorMATWalkable.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActorMAT.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'Engine.Default__SkeletalMeshActorMATWalkable.MySilhouette' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__SkeletalMeshActorMAT.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'Engine.Default__SkeletalMeshActorMATWalkable.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'Engine.Default__SkeletalMeshActorMATWalkable.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'Engine.Default__SkeletalMeshActorMAT.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + // Reference: CylinderComponent'Engine.Default__SkeletalMeshActorMATWalkable.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=78.0000000 + CollisionRadius=34.0000000 + ReplacementPrimitive=none + CollideActors=true + BlockActors=true + end object + Components[4]=CollisionCylinder + Physics=EPhysics.PHYS_Walking + bCollideActors=true + bCollideWorld=true + bBlockActors=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkeletalMeshActorSpawnable.uc b/exported/Engine/Classes/SkeletalMeshActorSpawnable.uc new file mode 100755 index 00000000..7a1b0bf5 --- /dev/null +++ b/exported/Engine/Classes/SkeletalMeshActorSpawnable.uc @@ -0,0 +1,51 @@ +class SkeletalMeshActorSpawnable extends SkeletalMeshActor + native(Anim) + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: SkeletalMeshComponent'Engine.Default__SkeletalMeshActorSpawnable.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'Engine.Default__SkeletalMeshActor.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'Engine.Default__SkeletalMeshActorSpawnable.SkeletalMeshComponent0.AnimNodeSeq0_1' + // Archetype: AnimNodeSequence'Engine.Default__SkeletalMeshActor.AnimNodeSeq0' + begin object name="AnimNodeSeq0_1" + end object + Animations=AnimNodeSeq0_1 + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActorSpawnable.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActorSpawnable.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'Engine.Default__SkeletalMeshActorSpawnable.MySilhouette' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__SkeletalMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'Engine.Default__SkeletalMeshActorSpawnable.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'Engine.Default__SkeletalMeshActorSpawnable.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'Engine.Default__SkeletalMeshActor.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + bNoDelete=false + CollisionComponent=SkeletalMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkeletalMeshCinematicActor.uc b/exported/Engine/Classes/SkeletalMeshCinematicActor.uc new file mode 100755 index 00000000..9503d90a --- /dev/null +++ b/exported/Engine/Classes/SkeletalMeshCinematicActor.uc @@ -0,0 +1,59 @@ +class SkeletalMeshCinematicActor extends SkeletalMeshActor + native(Anim) + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: SkeletalMeshComponent'Engine.Default__SkeletalMeshCinematicActor.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'Engine.Default__SkeletalMeshActor.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'Engine.Default__SkeletalMeshCinematicActor.SkeletalMeshComponent0.AnimNodeSeq0' + // Archetype: AnimNodeSequence'Engine.Default__SkeletalMeshActor.AnimNodeSeq0' + begin object name="AnimNodeSeq0" + end object + Animations=AnimNodeSeq0 + bUpdateSkelWhenNotRendered=true + bPerBoneMotionBlur=true + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshCinematicActor.MyLightEnvironment' + bAcceptsStaticDecals=true + bAcceptsDynamicDecals=true + bUseOnePassLightingOnTranslucency=true + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshCinematicActor.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + bUseBooleanEnvironmentShadowing=false + bSynthesizeSHLight=true + bIsCharacterLightEnvironment=true + bAllowDynamicShadowsOnTranslucency=true + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'Engine.Default__SkeletalMeshCinematicActor.MySilhouette' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__SkeletalMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'Engine.Default__SkeletalMeshCinematicActor.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'Engine.Default__SkeletalMeshCinematicActor.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'Engine.Default__SkeletalMeshActor.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + CollisionComponent=SkeletalMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkeletalMeshComponent.uc b/exported/Engine/Classes/SkeletalMeshComponent.uc new file mode 100755 index 00000000..c141a5db --- /dev/null +++ b/exported/Engine/Classes/SkeletalMeshComponent.uc @@ -0,0 +1,1067 @@ +class SkeletalMeshComponent extends MeshComponent + native(SkeletalMesh) + editinlinenew + noexport + hidecategories(Object); + +enum EMaxDistanceScaleMode +{ + MDSM_Multiply, // 0 + MDSM_Substract, // 1 + MDSM_MAX // 2 +}; + +enum EInstanceWeightUsage +{ + IWU_PartialSwap, // 0 + IWU_FullSwap, // 1 + IWU_MAX // 2 +}; + +enum ERootMotionMode +{ + RMM_Translate, // 0 + RMM_Velocity, // 1 + RMM_Ignore, // 2 + RMM_Accel, // 3 + RMM_Relative, // 4 + RMM_MAX // 5 +}; + +enum ERootMotionRotationMode +{ + RMRM_Ignore, // 0 + RMRM_RotateActor, // 1 + RMRM_MAX // 2 +}; + +enum EAnimRotationOnly +{ + EARO_AnimSet, // 0 + EARO_ForceEnabled, // 1 + EARO_ForceDisabled, // 2 + EARO_MAX // 3 +}; + +enum EFaceFXBlendMode +{ + FXBM_Overwrite, // 0 + FXBM_Additive, // 1 + FXBM_MAX // 2 +}; + +enum EFaceFXRegOp +{ + FXRO_Add, // 0 + FXRO_Multiply, // 1 + FXRO_Replace, // 2 + FXRO_MAX // 3 +}; + +enum EBoneVisibilityStatus +{ + BVS_HiddenByParent, // 0 + BVS_Visible, // 1 + BVS_ExplicitlyHidden, // 2 + BVS_MAX // 3 +}; + +enum EPhysBodyOp +{ + PBO_None, // 0 + PBO_Term, // 1 + PBO_Disable, // 2 + PBO_MAX // 3 +}; + +struct ActiveMorph +{ + var MorphTarget Target; + var float Weight; + + structdefaultproperties + { + Target=none + Weight=0.0000000 + } +}; + +struct Attachment +{ + var() export editinline ActorComponent Component; + var() name BoneName; + var() Vector RelativeLocation; + var() Rotator RelativeRotation; + var() Vector RelativeScale; + + structdefaultproperties + { + Component=none + BoneName="None" + RelativeLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + RelativeRotation=(Pitch=0,Yaw=0,Roll=0) + RelativeScale=(X=1.0000000,Y=1.0000000,Z=1.0000000) + } +}; + +struct BonePair +{ + var name Bones[2]; + + structdefaultproperties + { + Bones[0]="None" + Bones[1]="None" + } +}; + +struct SkelMeshComponentLODInfo +{ + var const array HiddenMaterials; + var const bool bNeedsInstanceWeightUpdate; + var const bool bAlwaysUseInstanceWeights; + var const transient SkeletalMeshComponent.EInstanceWeightUsage InstanceWeightUsage; + var const transient int InstanceWeightIdx; + + structdefaultproperties + { + HiddenMaterials=none + bNeedsInstanceWeightUpdate=false + bAlwaysUseInstanceWeights=false + InstanceWeightUsage=EInstanceWeightUsage.IWU_PartialSwap + InstanceWeightIdx=0 + } +}; + +var() SkeletalMesh SkeletalMesh; +var export editinline SkeletalMeshComponent AttachedToSkelComponent; +var() const AnimTree AnimTreeTemplate; +var() const export editinline AnimNode Animations; +var const transient array AnimTickArray; +var const transient array AnimAlwaysTickArray; +var const transient array AnimTickRelevancyArray; +var const transient array AnimTickWeightsArray; +var const transient array SkelControlTickArray; +var() const PhysicsAsset PhysicsAsset; +var const export editinline transient PhysicsAssetInstance PhysicsAssetInstance; +var native const transient Pointer ApexClothing; +var() interp float PhysicsWeight; +var() float GlobalAnimRateScale; +var() float StreamingDistanceMultiplier; +var native const transient Pointer MeshObject; +var() Color WireframeColor; +var native const transient array SpaceBases; +var native const transient array m_AnimBases; +var native const transient array LocalAtoms; +var native const transient array CachedLocalAtoms; +var native const transient array CachedSpaceBases; +var const int LowUpdateFrameRate; +var native const transient array RequiredBones; +var native const transient array ComposeOrderedRequiredBones; +var() const export editinline SkeletalMeshComponent ParentAnimComponent; +var native const transient array ParentBoneMap; +var() array AnimSets; +var native const transient array TemporarySavedAnimSets; +var() array MorphSets; +var transient array ActiveMorphs; +var transient array ActiveCurveMorphs; +var native const map{VOID,VOID} MorphTargetIndexMap; +var duplicatetransient const array Attachments; +var const transient array SkelControlIndex; +var const transient array PostPhysSkelControlIndex; +var() int ForcedLodModel; +var() int MinLodModel; +var int PredictedLODLevel; +var int OldPredictedLODLevel; +var() float AnimationLODDistanceFactor; +var() int AnimationLODFrameRate; +var const float MaxDistanceFactor; +var int bForceWireframe; +var int bForceRefpose; +var int bOldForceRefPose; +var() bool bNoSkeletonUpdate; +var int bDisplayBones; +var int bShowPrePhysBones; +var int bHideSkin; +var int bForceRawOffset; +var int bIgnoreControllers; +var int bTransformFromAnimParent; +var const transient int TickTag; +var const transient int InitTag; +var const transient int CachedAtomsTag; +var const int bUseSingleBodyPhysics; +var transient int bRequiredBonesUpToDate; +var float MinDistFactorForKinematicUpdate; +var transient int FramesPhysicsAsleep; +var const transient int SkipRateForTickAnimNodesAndGetBoneAtoms; +var const transient bool bSkipTickAnimNodes; +var const transient bool bSkipGetBoneAtoms; +var const transient bool bInterpolateBoneAtoms; +var const transient bool bHasValidBodies; +var bool bSkipAllUpdateWhenPhysicsAsleep; +var() bool bComponentUseFixedSkelBounds; +var() bool bUseBoundsFromParentAnimComponent; +var() bool bConsiderAllBodiesForBounds; +var() bool bUpdateSkelWhenNotRendered; +var bool bIgnoreControllersWhenNotRendered; +var bool bTickAnimNodesWhenNotRendered; +var const bool bNotUpdatingKinematicDueToDistance; +var() bool bForceDiscardRootMotion; +var() bool bNotifyRootMotionProcessed; +var bool bRootMotionModeChangeNotify; +var bool bRootMotionExtractedNotify; +var transient bool bProcessingRootMotion; +var() bool bDisableFaceFXMaterialInstanceCreation; +var() bool bDisableFaceFX; +var const transient bool bAnimTreeInitialised; +var private transient bool bForceMeshObjectUpdate; +var() const bool bHasPhysicsAssetInstance; +var() bool bUpdateKinematicBonesFromAnimation; +var() bool bUpdateJointsFromAnimation; +var const bool bSkelCompFixed; +var const bool bHasHadPhysicsBlendedIn; +var() bool bForceUpdateAttachmentsInTick; +var transient bool bEnableFullAnimWeightBodies; +var() bool bPerBoneVolumeEffects; +var() bool bPerBoneMotionBlur; +var() bool bSyncActorLocationToRootRigidBody; +var const bool bUseRawData; +var bool bDisableWarningWhenAnimNotFound; +var bool bOverrideAttachmentOwnerVisibility; +var bool bOverrideAttachmentDepthPriorityGroup; +var const transient bool bNeedsToDeleteHitMask; +var bool bPauseAnims; +var bool bChartDistanceFactor; +var bool bEnableLineCheckWithBounds; +var transient bool bCanHighlightSelectedSections; +var() bool bUpdateMorphWhenParentAnimComponentExists; +var Vector LineCheckBoundsScale; +var(Cloth) const bool bEnableClothSimulation; +var(Cloth) const bool bDisableClothCollision; +var(Cloth) const bool bClothFrozen; +var(Cloth) bool bAutoFreezeClothWhenNotRendered; +var(Cloth) bool bClothAwakeOnStartup; +var(Cloth) bool bClothBaseVelClamp; +var(Cloth) bool bClothBaseVelInterp; +var(Cloth) bool bAttachClothVertsToBaseBody; +var(Cloth) bool bIsClothOnStaticObject; +var bool bUpdatedFixedClothVerts; +var(Cloth) bool bClothPositionalDampening; +var(Cloth) bool bClothWindRelativeToOwner; +var transient bool bRecentlyRendered; +var bool bCacheAnimSequenceNodes; +var const transient bool bNeedsInstanceWeightUpdate; +var const transient bool bAlwaysUseInstanceWeights; +var const transient bool bUpdateComposeSkeletonPasses; +var native const transient bool bValidTemporarySavedAnimSets; +var const transient int bHasDeferredPoseUpdate; +var transient int c_nOverrideSkinId; +var transient int c_nOverrideSkinLevel; +var native const transient array InstanceVertexWeightBones; +var const transient array LODInfo; +var const Vector FrozenLocalToWorldPos; +var const Rotator FrozenLocalToWorldRot; +var(Cloth) const Vector ClothExternalForce; +var(Cloth) Vector ClothWind; +var(Cloth) Vector ClothBaseVelClampRange; +var(Cloth) float ClothBlendWeight; +var float ClothDynamicBlendWeight; +var(Cloth) float ClothBlendMinDistanceFactor; +var(Cloth) float ClothBlendMaxDistanceFactor; +var(Cloth) Vector MinPosDampRange; +var(Cloth) Vector MaxPosDampRange; +var(Cloth) Vector MinPosDampScale; +var(Cloth) Vector MaxPosDampScale; +var native const transient Pointer ClothSim; +var native const transient int SceneIndex; +var const array ClothMeshPosData; +var const array ClothMeshNormalData; +var const array ClothMeshIndexData; +var int NumClothMeshVerts; +var int NumClothMeshIndices; +var const array ClothMeshParentData; +var int NumClothMeshParentIndices; +var native const transient array ClothMeshWeldedPosData; +var native const transient array ClothMeshWeldedNormalData; +var native const transient array ClothMeshWeldedIndexData; +var int ClothDirtyBufferFlag; +var(Cloth) const PrimitiveComponent.ERBCollisionChannel ClothRBChannel; +var(Cloth) const RBCollisionChannelContainer ClothRBCollideWithChannels; +var(Cloth) const float ClothForceScale; +var(Cloth) float ClothImpulseScale; +var(Cloth) const float ClothAttachmentTearFactor; +var(Cloth) const bool bClothUseCompartment; +var(Cloth) const float MinDistanceForClothReset; +var const transient Vector LastClothLocation; +var(ApexClothing) const PrimitiveComponent.ERBCollisionChannel ApexClothingRBChannel; +var(ApexClothing) const RBCollisionChannelContainer ApexClothingRBCollideWithChannels; +var(ApexClothing) const PrimitiveComponent.ERBCollisionChannel ApexClothingCollisionRBChannel; +var(ApexClothing) bool bAutoFreezeApexClothingWhenNotRendered; +var(ApexClothing) bool bLocalSpaceWind; +var(ApexClothing) interp Vector WindVelocity; +var(ApexClothing) interp float WindVelocityBlendTime; +var const transient bool bSkipInitClothing; +var native const transient Pointer SoftBodySim; +var native const transient int SoftBodySceneIndex; +var(SoftBody) const bool bEnableSoftBodySimulation; +var const array SoftBodyTetraPosData; +var const array SoftBodyTetraIndexData; +var int NumSoftBodyTetraVerts; +var int NumSoftBodyTetraIndices; +var(SoftBody) float SoftBodyImpulseScale; +var(SoftBody) const bool bSoftBodyFrozen; +var(SoftBody) bool bAutoFreezeSoftBodyWhenNotRendered; +var(SoftBody) bool bSoftBodyAwakeOnStartup; +var(SoftBody) const bool bSoftBodyUseCompartment; +var(SoftBody) const PrimitiveComponent.ERBCollisionChannel SoftBodyRBChannel; +var(SoftBody) const RBCollisionChannelContainer SoftBodyRBCollideWithChannels; +var native const transient Pointer SoftBodyASVPlane; +var Material LimitMaterial; +var transient BoneAtom RootMotionDelta; +var transient Vector RootMotionVelocity; +var const transient Vector RootBoneTranslation; +var Vector RootMotionAccelScale; +var() SkeletalMeshComponent.ERootMotionMode RootMotionMode; +var const SkeletalMeshComponent.ERootMotionMode PreviousRMM; +var SkeletalMeshComponent.ERootMotionMode PendingRMM; +var SkeletalMeshComponent.ERootMotionMode OldPendingRMM; +var const int bRMMOneFrameDelay; +var() SkeletalMeshComponent.ERootMotionRotationMode RootMotionRotationMode; +var() SkeletalMeshComponent.EAnimRotationOnly AnimRotationOnly; +var() SkeletalMeshComponent.EFaceFXBlendMode FaceFXBlendMode; +var native transient Pointer FaceFXActorInstance; +var export editinline AudioComponent CachedFaceFXAudioComp; +var const transient array BoneVisibilityStates; +var AkEvent CachedFaceFxAkEvent; +var const transient BoneAtom LocalToWorldBoneAtom; +var transient float ProgressiveDrawingFraction; +var transient byte CustomSortAlternateIndexMode; +var transient array MorphTargetsQueried; +var(Optimization) const bool bUseTickOptimization; +var const int TickCount; +var const transient int LastDropRate; +var const transient float LastDropRateChange; +var const transient float AccumulatedDroppedDeltaTime; +var const transient float ComponentDroppedDeltaTime; +var() const float FOV; + +// Export USkeletalMeshComponent::execSetFOV(FFrame&, void* const) +native final function SetFOV(float NewFOV); + +// Export USkeletalMeshComponent::execGetFOV(FFrame&, void* const) +native final function float GetFOV(); + +// Export USkeletalMeshComponent::execAttachComponent(FFrame&, void* const) +native final function AttachComponent(ActorComponent Component, name BoneName, optional Vector RelativeLocation, optional Rotator RelativeRotation, optional Vector RelativeScale); + +// Export USkeletalMeshComponent::execDetachComponent(FFrame&, void* const) +native final function DetachComponent(ActorComponent Component); + +// Export USkeletalMeshComponent::execAttachComponentToSocket(FFrame&, void* const) +native final function AttachComponentToSocket(ActorComponent Component, name SocketName); + +// Export USkeletalMeshComponent::execGetSocketWorldLocationAndRotation(FFrame&, void* const) +native final function bool GetSocketWorldLocationAndRotation(name InSocketName, out Vector OutLocation, optional out Rotator OutRotation, optional int Space); + +// Export USkeletalMeshComponent::execGetSocketByName(FFrame&, void* const) +native final function SkeletalMeshSocket GetSocketByName(name InSocketName); + +// Export USkeletalMeshComponent::execGetSocketBoneName(FFrame&, void* const) +native final function name GetSocketBoneName(name InSocketName); + +// Export USkeletalMeshComponent::execFindComponentAttachedToBone(FFrame&, void* const) +native final function ActorComponent FindComponentAttachedToBone(name InBoneName); + +// Export USkeletalMeshComponent::execIsComponentAttached(FFrame&, void* const) +native final function bool IsComponentAttached(ActorComponent Component, optional name BoneName); + +// Export USkeletalMeshComponent::execAttachedComponents(FFrame&, void* const) +native final iterator function AttachedComponents(Class BaseClass, out ActorComponent OutComponent); + +// Export USkeletalMeshComponent::execGetTransformMatrix(FFrame&, void* const) +native final function Matrix GetTransformMatrix(); + +// Export USkeletalMeshComponent::execSetSkeletalMesh(FFrame&, void* const) +native final simulated function SetSkeletalMesh(SkeletalMesh NewMesh, optional bool bKeepSpaceBases, optional bool bTgCallInitAnimTree = true); + +// Export USkeletalMeshComponent::execSetPhysicsAsset(FFrame&, void* const) +native final simulated function SetPhysicsAsset(PhysicsAsset NewPhysicsAsset, optional bool bForceReInit); + +// Export USkeletalMeshComponent::execSetForceRefPose(FFrame&, void* const) +native final simulated function SetForceRefPose(bool bNewForceRefPose); + +// Export USkeletalMeshComponent::execSetEnableClothSimulation(FFrame&, void* const) +native final simulated function SetEnableClothSimulation(bool bInEnable); + +// Export USkeletalMeshComponent::execSetClothFrozen(FFrame&, void* const) +native final simulated function SetClothFrozen(bool bNewFrozen); + +// Export USkeletalMeshComponent::execSetEnableClothingSimulation(FFrame&, void* const) +native final simulated function SetEnableClothingSimulation(bool bInEnable); + +// Export USkeletalMeshComponent::execUpdateClothParams(FFrame&, void* const) +native final simulated function UpdateClothParams(); + +// Export USkeletalMeshComponent::execSetClothExternalForce(FFrame&, void* const) +native final simulated function SetClothExternalForce(Vector InForce); + +// Export USkeletalMeshComponent::execSetAttachClothVertsToBaseBody(FFrame&, void* const) +native final simulated function SetAttachClothVertsToBaseBody(bool bAttachVerts); + +// Export USkeletalMeshComponent::execResetClothVertsToRefPose(FFrame&, void* const) +native final simulated function ResetClothVertsToRefPose(); + +// Export USkeletalMeshComponent::execForceApexClothingTeleportAndReset(FFrame&, void* const) +native final simulated function ForceApexClothingTeleportAndReset(); + +// Export USkeletalMeshComponent::execForceApexClothingTeleport(FFrame&, void* const) +native final simulated function ForceApexClothingTeleport(); + +// Export USkeletalMeshComponent::execGetClothAttachmentResponseCoefficient(FFrame&, void* const) +native final simulated function float GetClothAttachmentResponseCoefficient(); + +// Export USkeletalMeshComponent::execGetClothAttachmentTearFactor(FFrame&, void* const) +native final simulated function float GetClothAttachmentTearFactor(); + +// Export USkeletalMeshComponent::execGetClothBendingStiffness(FFrame&, void* const) +native final simulated function float GetClothBendingStiffness(); + +// Export USkeletalMeshComponent::execGetClothCollisionResponseCoefficient(FFrame&, void* const) +native final simulated function float GetClothCollisionResponseCoefficient(); + +// Export USkeletalMeshComponent::execGetClothDampingCoefficient(FFrame&, void* const) +native final simulated function float GetClothDampingCoefficient(); + +// Export USkeletalMeshComponent::execGetClothFlags(FFrame&, void* const) +native final simulated function int GetClothFlags(); + +// Export USkeletalMeshComponent::execGetClothFriction(FFrame&, void* const) +native final simulated function float GetClothFriction(); + +// Export USkeletalMeshComponent::execGetClothPressure(FFrame&, void* const) +native final simulated function float GetClothPressure(); + +// Export USkeletalMeshComponent::execGetClothSleepLinearVelocity(FFrame&, void* const) +native final simulated function float GetClothSleepLinearVelocity(); + +// Export USkeletalMeshComponent::execGetClothSolverIterations(FFrame&, void* const) +native final simulated function int GetClothSolverIterations(); + +// Export USkeletalMeshComponent::execGetClothStretchingStiffness(FFrame&, void* const) +native final simulated function float GetClothStretchingStiffness(); + +// Export USkeletalMeshComponent::execGetClothTearFactor(FFrame&, void* const) +native final simulated function float GetClothTearFactor(); + +// Export USkeletalMeshComponent::execGetClothThickness(FFrame&, void* const) +native final simulated function float GetClothThickness(); + +// Export USkeletalMeshComponent::execSetClothAttachmentResponseCoefficient(FFrame&, void* const) +native final simulated function SetClothAttachmentResponseCoefficient(float ClothAttachmentResponseCoefficient); + +// Export USkeletalMeshComponent::execSetClothAttachmentTearFactor(FFrame&, void* const) +native final simulated function SetClothAttachmentTearFactor(float ClothAttachTearFactor); + +// Export USkeletalMeshComponent::execSetClothBendingStiffness(FFrame&, void* const) +native final simulated function SetClothBendingStiffness(float ClothBendingStiffness); + +// Export USkeletalMeshComponent::execSetClothCollisionResponseCoefficient(FFrame&, void* const) +native final simulated function SetClothCollisionResponseCoefficient(float ClothCollisionResponseCoefficient); + +// Export USkeletalMeshComponent::execSetClothDampingCoefficient(FFrame&, void* const) +native final simulated function SetClothDampingCoefficient(float ClothDampingCoefficient); + +// Export USkeletalMeshComponent::execSetClothFlags(FFrame&, void* const) +native final simulated function SetClothFlags(int ClothFlags); + +// Export USkeletalMeshComponent::execSetClothFriction(FFrame&, void* const) +native final simulated function SetClothFriction(float ClothFriction); + +// Export USkeletalMeshComponent::execSetClothPressure(FFrame&, void* const) +native final simulated function SetClothPressure(float ClothPressure); + +// Export USkeletalMeshComponent::execSetClothSleepLinearVelocity(FFrame&, void* const) +native final simulated function SetClothSleepLinearVelocity(float ClothSleepLinearVelocity); + +// Export USkeletalMeshComponent::execSetClothSolverIterations(FFrame&, void* const) +native final simulated function SetClothSolverIterations(int ClothSolverIterations); + +// Export USkeletalMeshComponent::execSetClothStretchingStiffness(FFrame&, void* const) +native final simulated function SetClothStretchingStiffness(float ClothStretchingStiffness); + +// Export USkeletalMeshComponent::execSetClothTearFactor(FFrame&, void* const) +native final simulated function SetClothTearFactor(float ClothTearFactor); + +// Export USkeletalMeshComponent::execSetClothThickness(FFrame&, void* const) +native final simulated function SetClothThickness(float ClothThickness); + +// Export USkeletalMeshComponent::execSetClothSleep(FFrame&, void* const) +native final simulated function SetClothSleep(bool IfClothSleep); + +// Export USkeletalMeshComponent::execSetClothPosition(FFrame&, void* const) +native final simulated function SetClothPosition(Vector ClothOffSet); + +// Export USkeletalMeshComponent::execSetClothVelocity(FFrame&, void* const) +native final simulated function SetClothVelocity(Vector VelocityOffSet); + +// Export USkeletalMeshComponent::execAttachClothToCollidingShapes(FFrame&, void* const) +native final simulated function AttachClothToCollidingShapes(bool AttatchTwoWay, bool AttachTearable); + +// Export USkeletalMeshComponent::execEnableClothValidBounds(FFrame&, void* const) +native final simulated function EnableClothValidBounds(bool IfEnableClothValidBounds); + +// Export USkeletalMeshComponent::execSetClothValidBounds(FFrame&, void* const) +native final simulated function SetClothValidBounds(Vector ClothValidBoundsMin, Vector ClothValidBoundsMax); + +// Export USkeletalMeshComponent::execUpdateSoftBodyParams(FFrame&, void* const) +native final simulated function UpdateSoftBodyParams(); + +// Export USkeletalMeshComponent::execSetSoftBodyFrozen(FFrame&, void* const) +native final simulated function SetSoftBodyFrozen(bool bNewFrozen); + +// Export USkeletalMeshComponent::execWakeSoftBody(FFrame&, void* const) +native final simulated function WakeSoftBody(); + +// Export USkeletalMeshComponent::execFindAnimSequence(FFrame&, void* const) +native final function AnimSequence FindAnimSequence(name AnimSeqName); + +// Export USkeletalMeshComponent::execSaveAnimSets(FFrame&, void* const) +native final function SaveAnimSets(); + +// Export USkeletalMeshComponent::execRestoreSavedAnimSets(FFrame&, void* const) +native final function RestoreSavedAnimSets(); + +final function float GetAnimRateByDuration(name AnimSeqName, float Duration) +{ + local AnimSequence AnimSeq; + + AnimSeq = FindAnimSequence(AnimSeqName); + // End:0x5C + if((AnimSeq == none) || AnimSeq.RateScale <= 0.0000000) + { + return 1.0000000; + } + return AnimSeq.SequenceLength / (Duration * AnimSeq.RateScale); + //return ReturnValue; +} + +final function float GetAnimLength(name AnimSeqName) +{ + local AnimSequence AnimSeq; + + AnimSeq = FindAnimSequence(AnimSeqName); + // End:0x5C + if((AnimSeq == none) || AnimSeq.RateScale <= 0.0000000) + { + return 0.0000000; + } + return AnimSeq.SequenceLength / AnimSeq.RateScale; + //return ReturnValue; +} + +// Export USkeletalMeshComponent::execFindMorphTarget(FFrame&, void* const) +native final function MorphTarget FindMorphTarget(name MorphTargetName); + +// Export USkeletalMeshComponent::execFindAnimNode(FFrame&, void* const) +native final function AnimNode FindAnimNode(name InNodeName); + +// Export USkeletalMeshComponent::execAllAnimNodes(FFrame&, void* const) +native final iterator function AllAnimNodes(Class BaseClass, out AnimNode Node); + +// Export USkeletalMeshComponent::execFindSkelControl(FFrame&, void* const) +native final function SkelControlBase FindSkelControl(name InControlName); + +// Export USkeletalMeshComponent::execFindMorphNode(FFrame&, void* const) +native final function MorphNodeBase FindMorphNode(name InNodeName); + +// Export USkeletalMeshComponent::execGetBoneQuaternion(FFrame&, void* const) +native final function Quat GetBoneQuaternion(name BoneName, optional int Space); + +// Export USkeletalMeshComponent::execGetBoneLocation(FFrame&, void* const) +native final function Vector GetBoneLocation(name BoneName, optional int Space); + +// Export USkeletalMeshComponent::execMatchRefBone(FFrame&, void* const) +native final function int MatchRefBone(name BoneName); + +// Export USkeletalMeshComponent::execGetBoneName(FFrame&, void* const) +native final function name GetBoneName(int BoneIndex); + +// Export USkeletalMeshComponent::execGetBoneMatrix(FFrame&, void* const) +native final function Matrix GetBoneMatrix(int BoneIndex); + +// Export USkeletalMeshComponent::execGetParentBone(FFrame&, void* const) +native final function name GetParentBone(name BoneName); + +// Export USkeletalMeshComponent::execGetBoneNames(FFrame&, void* const) +native final function GetBoneNames(out array BoneNames); + +// Export USkeletalMeshComponent::execBoneIsChildOf(FFrame&, void* const) +native final function bool BoneIsChildOf(name BoneName, name ParentBoneName); + +// Export USkeletalMeshComponent::execGetRefPosePosition(FFrame&, void* const) +native final function Vector GetRefPosePosition(int BoneIndex); + +// Export USkeletalMeshComponent::execGetBoneAxis(FFrame&, void* const) +native final function Vector GetBoneAxis(name BoneName, Object.EAxis Axis); + +// Export USkeletalMeshComponent::execTransformToBoneSpace(FFrame&, void* const) +native final function TransformToBoneSpace(name BoneName, Vector InPosition, Rotator InRotation, out Vector OutPosition, out Rotator OutRotation); + +// Export USkeletalMeshComponent::execTransformFromBoneSpace(FFrame&, void* const) +native final function TransformFromBoneSpace(name BoneName, Vector InPosition, Rotator InRotation, out Vector OutPosition, out Rotator OutRotation); + +// Export USkeletalMeshComponent::execFindClosestBone(FFrame&, void* const) +native final function name FindClosestBone(Vector TestLocation, optional out Vector BoneLocation, optional float IgnoreScale); + +// Export USkeletalMeshComponent::execGetClosestCollidingBoneLocation(FFrame&, void* const) +native final function Vector GetClosestCollidingBoneLocation(Vector TestLocation, bool bCheckZeroExtent, bool bCheckNonZeroExtent); + +// Export USkeletalMeshComponent::execSetAnimTreeTemplate(FFrame&, void* const) +native final function SetAnimTreeTemplate(AnimTree NewTemplate); + +// Export USkeletalMeshComponent::execSetParentAnimComponent(FFrame&, void* const) +native final function SetParentAnimComponent(SkeletalMeshComponent NewParentAnimComp); + +// Export USkeletalMeshComponent::execUpdateParentBoneMap(FFrame&, void* const) +native final function UpdateParentBoneMap(); + +// Export USkeletalMeshComponent::execInitSkelControls(FFrame&, void* const) +native final function InitSkelControls(); + +// Export USkeletalMeshComponent::execInitMorphTargets(FFrame&, void* const) +native final function InitMorphTargets(); + +// Export USkeletalMeshComponent::execFindConstraintIndex(FFrame&, void* const) +native final function int FindConstraintIndex(name ConstraintName); + +// Export USkeletalMeshComponent::execFindConstraintBoneName(FFrame&, void* const) +native final function name FindConstraintBoneName(int ConstraintIndex); + +// Export USkeletalMeshComponent::execFindBodyInstanceNamed(FFrame&, void* const) +native final function RB_BodyInstance FindBodyInstanceNamed(name BoneName); + +// Export USkeletalMeshComponent::execSetHasPhysicsAssetInstance(FFrame&, void* const) +native final function SetHasPhysicsAssetInstance(bool bHasInstance, optional bool bUseCurrentPosition); + +// Export USkeletalMeshComponent::execUpdateRBBonesFromSpaceBases(FFrame&, void* const) +native final function UpdateRBBonesFromSpaceBases(bool bMoveUnfixedBodies, bool bTeleport); + +// Export USkeletalMeshComponent::execForceSkelUpdate(FFrame&, void* const) +native final function ForceSkelUpdate(); + +// Export USkeletalMeshComponent::execUpdateAnimations(FFrame&, void* const) +native final function UpdateAnimations(); + +// Export USkeletalMeshComponent::execGetBonesWithinRadius(FFrame&, void* const) +native final function bool GetBonesWithinRadius(Vector Origin, float Radius, int TraceFlags, out array out_Bones); + +// Export USkeletalMeshComponent::execAddInstanceVertexWeightBoneParented(FFrame&, void* const) +native final function AddInstanceVertexWeightBoneParented(name BoneName, optional bool bPairWithParent = true); + +// Export USkeletalMeshComponent::execRemoveInstanceVertexWeightBoneParented(FFrame&, void* const) +native final function RemoveInstanceVertexWeightBoneParented(name BoneName); + +// Export USkeletalMeshComponent::execFindInstanceVertexweightBonePair(FFrame&, void* const) +native final function int FindInstanceVertexweightBonePair(BonePair Bones); + +// Export USkeletalMeshComponent::execUpdateInstanceVertexWeightBones(FFrame&, void* const) +native final function UpdateInstanceVertexWeightBones(array BonePairs); + +// Export USkeletalMeshComponent::execToggleInstanceVertexWeights(FFrame&, void* const) +native final function ToggleInstanceVertexWeights(bool bEnable, int LODIdx); + +// Export USkeletalMeshComponent::execPlayFaceFXAnim(FFrame&, void* const) +native final function bool PlayFaceFXAnim(FaceFXAnimSet FaceFXAnimSetRef, string AnimName, string GroupName, SoundCue SoundCueToPlay, AkEvent AkEventToPlay); + +// Export USkeletalMeshComponent::execStopFaceFXAnim(FFrame&, void* const) +native final function StopFaceFXAnim(); + +// Export USkeletalMeshComponent::execIsPlayingFaceFXAnim(FFrame&, void* const) +native final function bool IsPlayingFaceFXAnim(); + +// Export USkeletalMeshComponent::execDeclareFaceFXRegister(FFrame&, void* const) +native final function DeclareFaceFXRegister(string RegName); + +// Export USkeletalMeshComponent::execGetFaceFXRegister(FFrame&, void* const) +native final function float GetFaceFXRegister(string RegName); + +// Export USkeletalMeshComponent::execSetFaceFXRegister(FFrame&, void* const) +native final function SetFaceFXRegister(string RegName, float RegVal, SkeletalMeshComponent.EFaceFXRegOp RegOp, optional float InterpDuration); + +// Export USkeletalMeshComponent::execSetFaceFXRegisterEx(FFrame&, void* const) +native final function SetFaceFXRegisterEx(string RegName, SkeletalMeshComponent.EFaceFXRegOp RegOp, float FirstValue, float FirstInterpDuration, float NextValue, float NextInterpDuration); + +// Export USkeletalMeshComponent::execHideBone(FFrame&, void* const) +native final function HideBone(int BoneIndex, SkeletalMeshComponent.EPhysBodyOp PhysBodyOption); + +// Export USkeletalMeshComponent::execUnHideBone(FFrame&, void* const) +native final function UnHideBone(int BoneIndex); + +// Export USkeletalMeshComponent::execIsBoneHidden(FFrame&, void* const) +native final function bool IsBoneHidden(int BoneIndex); + +// Export USkeletalMeshComponent::execHideBoneByName(FFrame&, void* const) +native final function HideBoneByName(name BoneName, SkeletalMeshComponent.EPhysBodyOp PhysBodyOption); + +// Export USkeletalMeshComponent::execUnHideBoneByName(FFrame&, void* const) +native final function UnHideBoneByName(name BoneName); + +// Export USkeletalMeshComponent::execUpdateMeshForBrokenConstraints(FFrame&, void* const) +native final simulated function UpdateMeshForBrokenConstraints(); + +// Export USkeletalMeshComponent::execShowMaterialSection(FFrame&, void* const) +native final simulated function ShowMaterialSection(int MaterialID, bool bShow, int LODIndex); + +function PlayAnim(name AnimName, optional float Duration, optional bool bLoop, optional bool bRestartIfAlreadyPlaying = true, optional float StartTime = 0.0000000, optional bool bPlayBackwards = false) +{ + local AnimNodeSequence AnimNode; + local float DesiredRate; + + AnimNode = AnimNodeSequence(Animations); + // End:0xB4 + if((AnimNode == none) && Animations.IsA('AnimTree')) + { + AnimNode = AnimNodeSequence(AnimTree(Animations).Children[0].Anim); + } + // End:0xC6 + if(AnimNode == none) + { + } + else + { + // End:0x2B7 + if((AnimNode.AnimSeq != none) && AnimNode.AnimSeq.SequenceName == AnimName) + { + DesiredRate = ((Duration > 0.0000000) ? AnimNode.AnimSeq.SequenceLength / (Duration * AnimNode.AnimSeq.RateScale) : 1.0000000); + DesiredRate = ((bPlayBackwards) ? -DesiredRate : DesiredRate); + // End:0x262 + if(bRestartIfAlreadyPlaying || !AnimNode.bPlaying) + { + AnimNode.PlayAnim(bLoop, DesiredRate, StartTime); + } + else + { + AnimNode.Rate = DesiredRate; + AnimNode.bLooping = bLoop; + } + } + else + { + AnimNode.SetAnim(AnimName); + // End:0x402 + if(AnimNode.AnimSeq != none) + { + DesiredRate = ((Duration > 0.0000000) ? AnimNode.AnimSeq.SequenceLength / (Duration * AnimNode.AnimSeq.RateScale) : 1.0000000); + DesiredRate = ((bPlayBackwards) ? -DesiredRate : DesiredRate); + AnimNode.PlayAnim(bLoop, DesiredRate, StartTime); + } + } + } + //return; +} + +function StopAnim() +{ + local AnimNodeSequence AnimNode; + + AnimNode = AnimNodeSequence(Animations); + // End:0x9F + if((AnimNode == none) && Animations.IsA('AnimTree')) + { + AnimNode = AnimNodeSequence(AnimTree(Animations).Children[0].Anim); + } + // End:0xB1 + if(AnimNode == none) + { + } + else + { + AnimNode.StopAnim(); + } + //return; +} + +event bool CreateForceField(const AnimNotify_ForceField AnimNotifyData) +{ + local editinline NxForceFieldComponent NewForceFieldComponent; + + NewForceFieldComponent = new (self) AnimNotifyData.ForceFieldComponent.Class (AnimNotifyData.ForceFieldComponent); + NewForceFieldComponent.DoInitRBPhys(); + // End:0xDE + if(AnimNotifyData.SocketName != 'None') + { + AttachComponentToSocket(NewForceFieldComponent, AnimNotifyData.SocketName); + } + else + { + // End:0x13E + if(AnimNotifyData.BoneName != 'None') + { + AttachComponent(NewForceFieldComponent, AnimNotifyData.BoneName); + } + } + return true; + //return ReturnValue; +} + +function ParticleSystemComponent GetPSCForPlayParticleEffect(const AnimNotify_PlayParticleEffect AnimNotifyData) +{ + return new (self) Class'Engine.ParticleSystemComponent'; + //return ReturnValue; +} + +event bool PlayParticleEffect(const AnimNotify_PlayParticleEffect AnimNotifyData) +{ + local Vector Loc; + local Rotator Rot; + local WorldInfo WI; + local editinline ParticleSystemComponent PSC; + local bool bPlayNonExtreme; + local ParticleSystem PSys; + local ParticleChannelContainer PSysChannels; + + PSys = AnimNotifyData.GetParticleSystemToPlay(self); + PSysChannels = AnimNotifyData.GetParticleChannels(self); + WI = Class'Engine.WorldInfo'.static.GetWorldInfo(); + // End:0xA8 + if(int(WI.NetMode) == int(NM_DedicatedServer)) + { + return true; + } + // End:0xB9 + if(PSys == none) + { + return false; + } + bPlayNonExtreme = (AnimNotifyData.bIsExtremeContent && Class'Engine.Engine'.static.IsGame()) && !WI.GRI.ShouldShowGore(); + // End:0x177 + if(bPlayNonExtreme && AnimNotifyData.PSNonExtremeContentTemplate == none) + { + return false; + } + // End:0x350 + if(AnimNotifyData.bAttach) + { + PSC = GetPSCForPlayParticleEffect(AnimNotifyData); + PSC.SetFOV(FOV); + PSC.SetTemplate(PSys); + // End:0x23D + if(PSC != none) + { + PSC.m_ParticleChannels = PSysChannels; + } + // End:0x29D + if(AnimNotifyData.SocketName != 'None') + { + AttachComponentToSocket(PSC, AnimNotifyData.SocketName); + } + else + { + // End:0x2FD + if(AnimNotifyData.BoneName != 'None') + { + AttachComponent(PSC, AnimNotifyData.BoneName); + } + } + PSC.ActivateSystem(true); + PSC.__OnSystemFinished__Delegate = SkelMeshCompOnParticleSystemFinished; + } + else + { + // End:0x3BA + if(AnimNotifyData.SocketName != 'None') + { + GetSocketWorldLocationAndRotation(AnimNotifyData.SocketName, Loc, Rot); + } + else + { + // End:0x433 + if(AnimNotifyData.BoneName != 'None') + { + Loc = GetBoneLocation(AnimNotifyData.BoneName); + Rot = rot(0, 0, 1); + } + else + { + Loc = GetPosition(); + Rot = rot(0, 0, 1); + } + } + // End:0x542 + if(((Owner != none) && Owner.WorldInfo != none) && Owner.WorldInfo.MyEmitterPool != none) + { + Owner.WorldInfo.MyEmitterPool.SpawnEmitter(PSys, Loc, Rot,,,,, PSysChannels); + } + else + { + // End:0x6CD + if(Class'Engine.Engine'.static.IsGame()) + { + PSC = GetPSCForPlayParticleEffect(AnimNotifyData); + PSC.SetFOV(FOV); + PSC.SetTemplate(PSys); + // End:0x608 + if(PSC != none) + { + PSC.m_ParticleChannels = PSysChannels; + } + PSC.SetAbsolute(true, true, true); + PSC.SetTranslation(Loc); + PSC.SetRotation(Rot); + PSC.ActivateSystem(true); + PSC.__OnSystemFinished__Delegate = SkelMeshCompOnParticleSystemFinished; + } + else + { + // End:0x918 + if(Class'Engine.Engine'.static.IsEditor()) + { + PSC = GetPSCForPlayParticleEffect(AnimNotifyData); + PSC.SetFOV(FOV); + PSC.SetTemplate(PSys); + // End:0x793 + if(PSC != none) + { + PSC.m_ParticleChannels = PSysChannels; + } + PSC.SetAbsolute(true, true, true); + PSC.SetTranslation(Loc); + PSC.SetRotation(Rot); + // End:0x865 + if(AnimNotifyData.SocketName != 'None') + { + AttachComponentToSocket(PSC, AnimNotifyData.SocketName); + } + else + { + // End:0x8C5 + if(AnimNotifyData.BoneName != 'None') + { + AttachComponent(PSC, AnimNotifyData.BoneName); + } + } + PSC.ActivateSystem(true); + PSC.__OnSystemFinished__Delegate = SkelMeshCompOnParticleSystemFinished; + } + else + { + return false; + } + } + } + } + // End:0x9AE + if(((PSC != none) && AnimNotifyData.BoneSocketModuleActorName != 'None') && Owner != none) + { + PSC.SetActorParameter(AnimNotifyData.BoneSocketModuleActorName, Owner); + } + // End:0x9FA + if(PSC != none) + { + PSC.CustomTimeDilation = AnimNotifyData.TimeDilationFactor; + } + return true; + //return ReturnValue; +} + +simulated function SkelMeshCompOnParticleSystemFinished(ParticleSystemComponent PSC) +{ + DetachComponent(PSC); + //return; +} + +final simulated function BreakConstraint(Vector Impulse, Vector HitLocation, name InBoneName, optional bool bVelChange) +{ + local int ConstraintIndex, LODIdx; + local RB_ConstraintInstance Constraint; + local RB_ConstraintSetup ConstraintSetup; + local RB_BodyInstance Body; + + ConstraintIndex = FindConstraintIndex(InBoneName); + // End:0x33 + if(ConstraintIndex == -1) + { + return; + } + Constraint = PhysicsAssetInstance.Constraints[ConstraintIndex]; + // End:0x89 + if(Constraint.bTerminated) + { + return; + } + LODIdx = 0; + J0x94: + + // End:0xFF [Loop If] + if(LODIdx < LODInfo.Length) + { + // End:0xF1 + if(int(LODInfo[LODIdx].InstanceWeightUsage) == int(0)) + { + ToggleInstanceVertexWeights(true, LODIdx); + } + LODIdx++; + // [Loop Continue] + goto J0x94; + } + AddInstanceVertexWeightBoneParented(InBoneName); + ConstraintSetup = PhysicsAsset.ConstraintSetup[Constraint.ConstraintIndex]; + Body = FindBodyInstanceNamed(ConstraintSetup.JointName); + // End:0x1DF + if((Body != none) && Body.IsFixed()) + { + Body.SetFixed(false); + } + Constraint.TermConstraint(); + UpdateMeshForBrokenConstraints(); + AddImpulse(Impulse, HitLocation, InBoneName, bVelChange); + //return; +} + +// Export USkeletalMeshComponent::execGetPosition(FFrame&, void* const) +native function Vector GetPosition(); + +// Export USkeletalMeshComponent::execGetRotation(FFrame&, void* const) +native function Rotator GetRotation(); + +// Export USkeletalMeshComponent::execSetMaterial(FFrame&, void* const) +native function SetMaterial(int ElementIndex, MaterialInterface Material); + +defaultproperties +{ + GlobalAnimRateScale=1.0000000 + StreamingDistanceMultiplier=1.0000000 + WireframeColor=(R=221,G=221,B=28,A=255) + LowUpdateFrameRate=2 + AnimationLODFrameRate=2 + bTransformFromAnimParent=1 + bUpdateSkelWhenNotRendered=true + bTickAnimNodesWhenNotRendered=true + bUpdateKinematicBonesFromAnimation=true + bSyncActorLocationToRootRigidBody=true + LineCheckBoundsScale=(X=1.0000000,Y=1.0000000,Z=1.0000000) + bAutoFreezeClothWhenNotRendered=true + bCacheAnimSequenceNodes=true + ClothBlendWeight=1.0000000 + ClothBlendMinDistanceFactor=-1.0000000 + ClothRBChannel=ERBCollisionChannel.RBCC_Cloth + ClothImpulseScale=1.0000000 + ClothAttachmentTearFactor=-1.0000000 + MinDistanceForClothReset=256.0000000 + ApexClothingRBChannel=ERBCollisionChannel.RBCC_Clothing + ApexClothingRBCollideWithChannels=(Default=true,Nothing=false,Pawn=false,Vehicle=false,Water=false,GameplayPhysics=true,EffectPhysics=true,Untitled1=false,Untitled2=false,Untitled3=false,Untitled4=false,Cloth=false,FluidDrain=false,SoftBody=false,FracturedMeshPart=false,BlockingVolume=true,DeadPawn=false,Clothing=false,ClothingCollision=true) + ApexClothingCollisionRBChannel=ERBCollisionChannel.RBCC_ClothingCollision + bAutoFreezeApexClothingWhenNotRendered=true + SoftBodyImpulseScale=1.0000000 + bSoftBodyUseCompartment=true + SoftBodyRBChannel=ERBCollisionChannel.RBCC_SoftBody + RootMotionAccelScale=(X=1.0000000,Y=1.0000000,Z=1.0000000) + RootMotionMode=ERootMotionMode.RMM_Ignore + PreviousRMM=ERootMotionMode.RMM_Ignore + FaceFXBlendMode=EFaceFXBlendMode.FXBM_Additive + ProgressiveDrawingFraction=1.0000000 + bUseTickOptimization=true + ReplacementPrimitive=none + bAcceptsDynamicDecals=false + TickGroup=ETickingGroup.TG_PreAsyncWork +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkeletalMeshSocket.uc b/exported/Engine/Classes/SkeletalMeshSocket.uc new file mode 100755 index 00000000..84b721a2 --- /dev/null +++ b/exported/Engine/Classes/SkeletalMeshSocket.uc @@ -0,0 +1,15 @@ +class SkeletalMeshSocket extends Object + native(SkeletalMesh) + hidecategories(Object,Actor); + +var() editconst name SocketName; +var() editconst name BoneName; +var() Vector RelativeLocation; +var() Rotator RelativeRotation; +var() Vector RelativeScale; +var() const editconst export editinline transient SkeletalMeshComponent PreviewSkelComp; + +defaultproperties +{ + RelativeScale=(X=1.0000000,Y=1.0000000,Z=1.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkyLight.uc b/exported/Engine/Classes/SkyLight.uc new file mode 100755 index 00000000..09546f16 --- /dev/null +++ b/exported/Engine/Classes/SkyLight.uc @@ -0,0 +1,19 @@ +class SkyLight extends Light + native(Light) + placeable + hidecategories(Navigation) + classgroup(Lights,SkyLights); + +defaultproperties +{ + // Reference: SkyLightComponent'Engine.Default__SkyLight.SkyLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkyLightComponent0' + begin object name="SkyLightComponent0" class=Engine.SkyLightComponent + UseDirectLightMap=true + bCanAffectDynamicPrimitivesOutsideDynamicChannel=true + end object + LightComponent=SkyLightComponent0 + Components[0]=none + Components[1]=SkyLightComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkyLightComponent.uc b/exported/Engine/Classes/SkyLightComponent.uc new file mode 100755 index 00000000..4b0768e8 --- /dev/null +++ b/exported/Engine/Classes/SkyLightComponent.uc @@ -0,0 +1,13 @@ +class SkyLightComponent extends LightComponent + native(Light) + editinlinenew + hidecategories(Object); + +var() const float LowerBrightness; +var() const Color LowerColor; + +defaultproperties +{ + LowerColor=(R=255,G=255,B=255,A=0) + CastShadows=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/SkyLightToggleable.uc b/exported/Engine/Classes/SkyLightToggleable.uc new file mode 100755 index 00000000..36864416 --- /dev/null +++ b/exported/Engine/Classes/SkyLightToggleable.uc @@ -0,0 +1,21 @@ +class SkyLightToggleable extends SkyLight + native(Light) + placeable + hidecategories(Navigation) + classgroup(Lights,SkyLights); + +defaultproperties +{ + // Reference: SkyLightComponent'Engine.Default__SkyLightToggleable.SkyLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkyLightComponent0' + // Archetype: SkyLightComponent'Engine.Default__SkyLight.SkyLightComponent0' + begin object name="SkyLightComponent0" + end object + LightComponent=SkyLightComponent0 + Components[0]=none + Components[1]=SkyLightComponent0 + TickGroup=ETickingGroup.TG_DuringAsyncWork + bStatic=false + bHardAttach=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SlotToSlotReachSpec.uc b/exported/Engine/Classes/SlotToSlotReachSpec.uc new file mode 100755 index 00000000..3c1f88e4 --- /dev/null +++ b/exported/Engine/Classes/SlotToSlotReachSpec.uc @@ -0,0 +1,9 @@ +class SlotToSlotReachSpec extends ForcedReachSpec + native; + +var() editconst byte SpecDirection; + +defaultproperties +{ + PruneSpecList[0]=Class'Engine.ReachSpec' +} \ No newline at end of file diff --git a/exported/Engine/Classes/SoundClass.uc b/exported/Engine/Classes/SoundClass.uc new file mode 100755 index 00000000..3df70eef --- /dev/null +++ b/exported/Engine/Classes/SoundClass.uc @@ -0,0 +1,64 @@ +class SoundClass extends Object + native(AudioDevice) + dontsortcategories(SoundClass) + hidecategories(Object); + +struct native export SoundClassEditorData +{ + var native const int NodePosX; + var native const int NodePosY; +}; + +struct native SoundClassProperties +{ + var() float Volume; + var() float Pitch; + var() float StereoBleed; + var() float LFEBleed; + var() float VoiceCenterChannelVolume; + var() float RadioFilterVolume; + var() float RadioFilterVolumeThreshold; + var() bool bApplyEffects; + var() bool bAlwaysPlay; + var() bool bIsUISound; + var() bool bIsMusic; + var() bool bReverb; + var() bool bCenterChannelOnly; + var() bool bApplyAmbientVolumes; + var() bool bApplyInsulationVolumes; + var() name m_nmSoundMode; + var() float m_fNonLocalPriorityBoost; + var() float m_fLocalPriorityBoost; + + structdefaultproperties + { + Volume=1.0000000 + Pitch=1.0000000 + StereoBleed=0.2500000 + LFEBleed=0.5000000 + VoiceCenterChannelVolume=0.0000000 + RadioFilterVolume=0.0000000 + RadioFilterVolumeThreshold=0.0000000 + bApplyEffects=false + bAlwaysPlay=false + bIsUISound=false + bIsMusic=false + bReverb=true + bCenterChannelOnly=false + bApplyAmbientVolumes=false + bApplyInsulationVolumes=false + m_nmSoundMode="None" + m_fNonLocalPriorityBoost=0.0000000 + m_fLocalPriorityBoost=0.0000000 + } +}; + +var() SoundClassProperties Properties; +var() array ChildClassNames; +var bool bIsChild; +var native const map{VOID,VOID} EditorData; + +defaultproperties +{ + Properties=(Volume=1.0000000,Pitch=1.0000000,StereoBleed=0.2500000,LFEBleed=0.5000000,VoiceCenterChannelVolume=0.0000000,RadioFilterVolume=0.0000000,RadioFilterVolumeThreshold=0.0000000,bApplyEffects=false,bAlwaysPlay=false,bIsUISound=false,bIsMusic=false,bReverb=true,bCenterChannelOnly=false,bApplyAmbientVolumes=false,bApplyInsulationVolumes=false,m_nmSoundMode="None",m_fNonLocalPriorityBoost=0.0000000,m_fLocalPriorityBoost=0.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/SoundCue.uc b/exported/Engine/Classes/SoundCue.uc new file mode 100755 index 00000000..50de3294 --- /dev/null +++ b/exported/Engine/Classes/SoundCue.uc @@ -0,0 +1,42 @@ +class SoundCue extends AkBaseSoundObject + native + hidecategories(Object); + +struct native export SoundNodeEditorData +{ + var native const int NodePosX; + var native const int NodePosY; +}; + +var() name SoundClass; +var AudioDevice.ESoundClassName SoundClassName; +var() bool bDebug; +var(Fade) bool m_bFadeOutWhenStopped; +var SoundNode FirstNode; +var native const map{VOID,VOID} EditorData; +var transient float MaxAudibleDistance; +var() float VolumeMultiplier; +var() float PitchMultiplier; +var float Duration; +var() FaceFXAnimSet FaceFXAnimSetRef; +var() string FaceFXGroupName; +var() string FaceFXAnimName; +var() int MaxConcurrentPlayCount; +var duplicatetransient const transient int CurrentPlayCount; +var deprecated name SoundGroup; +var(Fade) float m_fFadeOutTime; +var(Fade) float m_fFadeToPct; +var(Fade) float m_fFadePitchToPct; +var() SoundCue m_StereoSoundCue; + +// Export USoundCue::execGetCueDuration(FFrame&, void* const) +native final function float GetCueDuration(); + +defaultproperties +{ + VolumeMultiplier=0.7500000 + PitchMultiplier=1.0000000 + MaxConcurrentPlayCount=16 + m_fFadeOutTime=0.4000000 + m_fFadePitchToPct=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SoundMode.uc b/exported/Engine/Classes/SoundMode.uc new file mode 100755 index 00000000..48a649fb --- /dev/null +++ b/exported/Engine/Classes/SoundMode.uc @@ -0,0 +1,63 @@ +class SoundMode extends Object + native(AudioDevice) + dontsortcategories(SoundMode) + hidecategories(Object); + +struct native AudioEQEffect +{ + var native transient Double RootTime; + var(HighPass) float HFFrequency; + var(HighPass) float HFGain; + var(BandPass) float MFCutoffFrequency; + var(BandPass) float MFBandwidth; + var(BandPass) float MFGain; + var(LowPass) float LFFrequency; + var(LowPass) float LFGain; + + structdefaultproperties + { + HFFrequency=0.0000000 + HFGain=0.0000000 + MFCutoffFrequency=0.0000000 + MFBandwidth=0.0000000 + MFGain=0.0000000 + LFFrequency=0.0000000 + LFGain=0.0000000 + } +}; + +struct native SoundClassAdjuster +{ + var() transient AudioDevice.ESoundClassName SoundClassName; + var() editconst name SoundClass; + var() float VolumeAdjuster; + var() float PitchAdjuster; + var() bool bApplyToChildren; + var() float VoiceCenterChannelVolumeAdjuster; + + structdefaultproperties + { + SoundClassName=ESoundClassName.Master + SoundClass="Master" + VolumeAdjuster=1.0000000 + PitchAdjuster=1.0000000 + bApplyToChildren=false + VoiceCenterChannelVolumeAdjuster=1.0000000 + } +}; + +var(EQ) bool bApplyEQ; +var(EQ) AudioEQEffect EQSettings; +var(SoundClasses) array SoundClassEffects; +var() float InitialDelay; +var() float FadeInTime; +var() float Duration; +var() float FadeOutTime; + +defaultproperties +{ + EQSettings=(HFFrequency=2000.0000000,HFGain=1.0000000,MFCutoffFrequency=1000.0000000,MFBandwidth=1.0000000,MFGain=1.0000000,LFFrequency=600.0000000,LFGain=1.0000000) + FadeInTime=0.2000000 + Duration=-1.0000000 + FadeOutTime=0.2000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SoundNode.uc b/exported/Engine/Classes/SoundNode.uc new file mode 100755 index 00000000..42484d47 --- /dev/null +++ b/exported/Engine/Classes/SoundNode.uc @@ -0,0 +1,8 @@ +class SoundNode extends Object + abstract + native(Sound) + editinlinenew + hidecategories(Object); + +var native const int NodeUpdateHint; +var array ChildNodes; diff --git a/exported/Engine/Classes/SoundNodeAmbient.uc b/exported/Engine/Classes/SoundNodeAmbient.uc new file mode 100755 index 00000000..51ba2788 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeAmbient.uc @@ -0,0 +1,52 @@ +class SoundNodeAmbient extends SoundNode + native(Sound) + editinlinenew + dontsortcategories(Attenuation,LowPassFilter,Modulation,Sounds,Spatialization) + hidecategories(Object,Object) + autoexpandcategories(Attenuation,LowPassFilter,Modulation,Sounds,Spatialization); + +struct native AmbientSoundSlot +{ + var() SoundNodeWave Wave; + var() float PitchScale; + var() float VolumeScale; + var() float Weight; + + structdefaultproperties + { + Wave=none + PitchScale=1.0000000 + VolumeScale=1.0000000 + Weight=1.0000000 + } +}; + +var(Attenuation) bool bAttenuate; +var(Attenuation) bool bSpatialize; +var(LowPassFilter) bool bAttenuateWithLPF; +var(Attenuation) float dBAttenuationAtMax; +var(Attenuation) SoundNodeAttenuation.SoundDistanceModel DistanceModel; +var(Attenuation) float RadiusMin; +var(Attenuation) float RadiusMax; +var(LowPassFilter) float LPFRadiusMin; +var(LowPassFilter) float LPFRadiusMax; +var(Modulation) float PitchMin; +var(Modulation) float PitchMax; +var(Modulation) float VolumeMin; +var(Modulation) float VolumeMax; +var(Sounds) array SoundSlots; + +defaultproperties +{ + bAttenuate=true + bSpatialize=true + dBAttenuationAtMax=-60.0000000 + RadiusMin=2000.0000000 + RadiusMax=5000.0000000 + LPFRadiusMin=3500.0000000 + LPFRadiusMax=7000.0000000 + PitchMin=1.0000000 + PitchMax=1.0000000 + VolumeMin=0.7000000 + VolumeMax=0.7000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SoundNodeAmbientNonLoop.uc b/exported/Engine/Classes/SoundNodeAmbientNonLoop.uc new file mode 100755 index 00000000..986036e0 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeAmbientNonLoop.uc @@ -0,0 +1,10 @@ +class SoundNodeAmbientNonLoop extends SoundNodeAmbient + native(Sound) + editinlinenew + dontsortcategories(Attenuation,LowPassFilter,Modulation,Sounds,Spatialization,Delay) + hidecategories(Object,Object,Object) + autoexpandcategories(Attenuation,LowPassFilter,Modulation,Sounds,Spatialization,Delay); + +var(Delay) float DelayMin; +var(Delay) float DelayMax; +var deprecated RawDistributionFloat DelayTime; diff --git a/exported/Engine/Classes/SoundNodeAmbientNonLoopToggle.uc b/exported/Engine/Classes/SoundNodeAmbientNonLoopToggle.uc new file mode 100755 index 00000000..3abca695 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeAmbientNonLoopToggle.uc @@ -0,0 +1,6 @@ +class SoundNodeAmbientNonLoopToggle extends SoundNodeAmbientNonLoop + native(Sound) + editinlinenew + dontsortcategories(Attenuation,LowPassFilter,Modulation,Sounds,Spatialization,Delay) + hidecategories(Object,Object,Object,Object) + autoexpandcategories(Attenuation,LowPassFilter,Modulation,Sounds,Spatialization,Delay); diff --git a/exported/Engine/Classes/SoundNodeAttenuation.uc b/exported/Engine/Classes/SoundNodeAttenuation.uc new file mode 100755 index 00000000..05411602 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeAttenuation.uc @@ -0,0 +1,47 @@ +class SoundNodeAttenuation extends SoundNode + native(Sound) + editinlinenew + dontsortcategories(Attenuation,LowPassFilter) + hidecategories(Object,Object); + +enum SoundDistanceModel +{ + ATTENUATION_Linear, // 0 + ATTENUATION_Logarithmic, // 1 + ATTENUATION_Inverse, // 2 + ATTENUATION_LogReverse, // 3 + ATTENUATION_NaturalSound, // 4 + ATTENUATION_MAX // 5 +}; + +enum ESoundDistanceCalc +{ + SOUNDDISTANCE_Normal, // 0 + SOUNDDISTANCE_InfiniteXYPlane, // 1 + SOUNDDISTANCE_InfiniteXZPlane, // 2 + SOUNDDISTANCE_InfiniteYZPlane, // 3 + SOUNDDISTANCE_MAX // 4 +}; + +var(Attenuation) bool bAttenuate; +var(Attenuation) bool bSpatialize; +var(LowPassFilter) bool bAttenuateWithLPF; +var(Attenuation) float dBAttenuationAtMax; +var(Attenuation) float OmniRadius; +var(Attenuation) SoundNodeAttenuation.SoundDistanceModel DistanceAlgorithm; +var(Attenuation) SoundNodeAttenuation.ESoundDistanceCalc DistanceType; +var(Attenuation) float RadiusMin; +var(Attenuation) float RadiusMax; +var(LowPassFilter) float LPFRadiusMin; +var(LowPassFilter) float LPFRadiusMax; + +defaultproperties +{ + bAttenuate=true + bSpatialize=true + dBAttenuationAtMax=-60.0000000 + RadiusMin=400.0000000 + RadiusMax=4000.0000000 + LPFRadiusMin=3000.0000000 + LPFRadiusMax=6000.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SoundNodeAttenuationAndGain.uc b/exported/Engine/Classes/SoundNodeAttenuationAndGain.uc new file mode 100755 index 00000000..6b0df7e4 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeAttenuationAndGain.uc @@ -0,0 +1,36 @@ +class SoundNodeAttenuationAndGain extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object,Object); + +var(AttenuationAndGain) bool bAttenuate; +var(AttenuationAndGain) bool bSpatialize; +var(LowPassFilter) bool bAttenuateWithLPF; +var(AttenuationAndGain) float dBAttenuationAtMax; +var(AttenuationAndGain) float OmniRadius; +var(AttenuationAndGain) SoundNodeAttenuation.SoundDistanceModel GainDistanceAlgorithm; +var(AttenuationAndGain) SoundNodeAttenuation.SoundDistanceModel AttenuateDistanceAlgorithm; +var(AttenuationAndGain) SoundNodeAttenuation.ESoundDistanceCalc DistanceType; +var(AttenuationAndGain) float MinimalVolume; +var(AttenuationAndGain) float RadiusMin; +var(AttenuationAndGain) float RadiusPeak; +var(AttenuationAndGain) float RadiusMax; +var(LowPassFilter) float LPFMinimal; +var(LowPassFilter) float LPFRadiusMin; +var(LowPassFilter) float LPFRadiusPeak; +var(LowPassFilter) float LPFRadiusMax; + +defaultproperties +{ + bAttenuate=true + bSpatialize=true + dBAttenuationAtMax=-60.0000000 + MinimalVolume=0.7500000 + RadiusMin=400.0000000 + RadiusPeak=2000.0000000 + RadiusMax=4000.0000000 + LPFMinimal=0.7500000 + LPFRadiusMin=400.0000000 + LPFRadiusPeak=2000.0000000 + LPFRadiusMax=4000.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SoundNodeConcatenator.uc b/exported/Engine/Classes/SoundNodeConcatenator.uc new file mode 100755 index 00000000..8cf43b9c --- /dev/null +++ b/exported/Engine/Classes/SoundNodeConcatenator.uc @@ -0,0 +1,6 @@ +class SoundNodeConcatenator extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object,Object); + +var() editfixedsize export array InputVolume; diff --git a/exported/Engine/Classes/SoundNodeConcatenatorRadio.uc b/exported/Engine/Classes/SoundNodeConcatenatorRadio.uc new file mode 100755 index 00000000..98b82ab3 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeConcatenatorRadio.uc @@ -0,0 +1,4 @@ +class SoundNodeConcatenatorRadio extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/SoundNodeDelay.uc b/exported/Engine/Classes/SoundNodeDelay.uc new file mode 100755 index 00000000..0b16cf7b --- /dev/null +++ b/exported/Engine/Classes/SoundNodeDelay.uc @@ -0,0 +1,8 @@ +class SoundNodeDelay extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object,Object); + +var(Delay) float DelayMin; +var(Delay) float DelayMax; +var deprecated RawDistributionFloat DelayDuration; diff --git a/exported/Engine/Classes/SoundNodeDistanceCrossFade.uc b/exported/Engine/Classes/SoundNodeDistanceCrossFade.uc new file mode 100755 index 00000000..6b15dd02 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeDistanceCrossFade.uc @@ -0,0 +1,26 @@ +class SoundNodeDistanceCrossFade extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object,Object); + +struct native DistanceDatum +{ + var() float FadeInDistanceStart; + var() float FadeInDistanceEnd; + var() float FadeOutDistanceStart; + var() float FadeOutDistanceEnd; + var() float Volume; + var deprecated RawDistributionFloat FadeInDistance; + var deprecated RawDistributionFloat FadeOutDistance; + + structdefaultproperties + { + FadeInDistanceStart=0.0000000 + FadeInDistanceEnd=0.0000000 + FadeOutDistanceStart=0.0000000 + FadeOutDistanceEnd=0.0000000 + Volume=1.0000000 + } +}; + +var() editfixedsize export array CrossFadeInput; diff --git a/exported/Engine/Classes/SoundNodeDoppler.uc b/exported/Engine/Classes/SoundNodeDoppler.uc new file mode 100755 index 00000000..0a4285eb --- /dev/null +++ b/exported/Engine/Classes/SoundNodeDoppler.uc @@ -0,0 +1,11 @@ +class SoundNodeDoppler extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object,Object); + +var(Doppler) float DopplerIntensity; + +defaultproperties +{ + DopplerIntensity=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SoundNodeEnveloper.uc b/exported/Engine/Classes/SoundNodeEnveloper.uc new file mode 100755 index 00000000..9c0fadf0 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeEnveloper.uc @@ -0,0 +1,31 @@ +class SoundNodeEnveloper extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object,Object); + +var(Looping) float LoopStart; +var(Looping) float LoopEnd; +var(Looping) float DurationAfterLoop; +var(Looping) int LoopCount; +var(Looping) bool bLoopIndefinitely; +var(Looping) bool bLoop; +var(Envelope) export editinline DistributionFloatConstantCurve VolumeInterpCurve; +var(Envelope) export editinline DistributionFloatConstantCurve PitchInterpCurve; + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'Engine.Default__SoundNodeEnveloper.VolumeInterpCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'VolumeInterpCurve' + begin object name="VolumeInterpCurve" class=Engine.DistributionFloatConstantCurve + ConstantCurve=(Points=((InVal=0.0000000,OutVal=1.0000000,ArriveTangent=0.0000000,LeaveTangent=0.0000000,InterpMode=EInterpCurveMode.CIM_Linear))) + end object + VolumeInterpCurve=VolumeInterpCurve + // Reference: DistributionFloatConstantCurve'Engine.Default__SoundNodeEnveloper.PitchInterpCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PitchInterpCurve' + begin object name="PitchInterpCurve" class=Engine.DistributionFloatConstantCurve + ConstantCurve=(Points=((InVal=0.0000000,OutVal=1.0000000,ArriveTangent=0.0000000,LeaveTangent=0.0000000,InterpMode=EInterpCurveMode.CIM_Linear))) + end object + PitchInterpCurve=PitchInterpCurve +} \ No newline at end of file diff --git a/exported/Engine/Classes/SoundNodeLooping.uc b/exported/Engine/Classes/SoundNodeLooping.uc new file mode 100755 index 00000000..3d745cd1 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeLooping.uc @@ -0,0 +1,16 @@ +class SoundNodeLooping extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object,Object); + +var(Looping) bool bLoopIndefinitely; +var(Looping) float LoopCountMin; +var(Looping) float LoopCountMax; +var deprecated RawDistributionFloat LoopCount; + +defaultproperties +{ + bLoopIndefinitely=true + LoopCountMin=1000000.0000000 + LoopCountMax=1000000.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SoundNodeMature.uc b/exported/Engine/Classes/SoundNodeMature.uc new file mode 100755 index 00000000..9d308141 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeMature.uc @@ -0,0 +1,4 @@ +class SoundNodeMature extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object,Object); diff --git a/exported/Engine/Classes/SoundNodeMixer.uc b/exported/Engine/Classes/SoundNodeMixer.uc new file mode 100755 index 00000000..1f789f48 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeMixer.uc @@ -0,0 +1,6 @@ +class SoundNodeMixer extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object,Object); + +var() editfixedsize export array InputVolume; diff --git a/exported/Engine/Classes/SoundNodeModulator.uc b/exported/Engine/Classes/SoundNodeModulator.uc new file mode 100755 index 00000000..675436d7 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeModulator.uc @@ -0,0 +1,19 @@ +class SoundNodeModulator extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object,Object); + +var(Modulation) float PitchMin; +var(Modulation) float PitchMax; +var(Modulation) float VolumeMin; +var(Modulation) float VolumeMax; +var deprecated RawDistributionFloat PitchModulation; +var deprecated RawDistributionFloat VolumeModulation; + +defaultproperties +{ + PitchMin=0.9500000 + PitchMax=1.0500000 + VolumeMin=0.9500000 + VolumeMax=1.0500000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SoundNodeModulatorContinuous.uc b/exported/Engine/Classes/SoundNodeModulatorContinuous.uc new file mode 100755 index 00000000..dea17cf3 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeModulatorContinuous.uc @@ -0,0 +1,27 @@ +class SoundNodeModulatorContinuous extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object,Object); + +var() RawDistributionFloat PitchModulation; +var() RawDistributionFloat VolumeModulation; + +defaultproperties +{ + // Reference: DistributionFloatUniform'Engine.Default__SoundNodeModulatorContinuous.DistributionPitch' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPitch' + begin object name="DistributionPitch" class=Engine.DistributionFloatUniform + Min=0.9500000 + Max=1.0500000 + end object + // Reference: DistributionFloatUniform'Engine.Default__SoundNodeModulatorContinuous.DistributionVolume' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionVolume' + begin object name="DistributionVolume" class=Engine.DistributionFloatUniform + Min=0.9500000 + Max=1.0500000 + end object + PitchModulation=(Distribution=Distribution=DistributionPitch,Type=0,Op=2,LookupTableNumElements=2,LookupTableChunkSize=2,LookupTable=(0.9500000,1.0500000,0.9500000,1.0500000,0.9500000,1.0500000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + VolumeModulation=(Distribution=Distribution=DistributionVolume,Type=0,Op=2,LookupTableNumElements=2,LookupTableChunkSize=2,LookupTable=(0.9500000,1.0500000,0.9500000,1.0500000,0.9500000,1.0500000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/SoundNodeOscillator.uc b/exported/Engine/Classes/SoundNodeOscillator.uc new file mode 100755 index 00000000..39de7806 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeOscillator.uc @@ -0,0 +1,19 @@ +class SoundNodeOscillator extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object,Object); + +var(Oscillator) bool bModulateVolume; +var(Oscillator) bool bModulatePitch; +var(Oscillator) float AmplitudeMin; +var(Oscillator) float AmplitudeMax; +var(Oscillator) float FrequencyMin; +var(Oscillator) float FrequencyMax; +var(Oscillator) float OffsetMin; +var(Oscillator) float OffsetMax; +var(Oscillator) float CenterMin; +var(Oscillator) float CenterMax; +var deprecated RawDistributionFloat Amplitude; +var deprecated RawDistributionFloat Frequency; +var deprecated RawDistributionFloat Offset; +var deprecated RawDistributionFloat Center; diff --git a/exported/Engine/Classes/SoundNodeRandom.uc b/exported/Engine/Classes/SoundNodeRandom.uc new file mode 100755 index 00000000..3e1109c9 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeRandom.uc @@ -0,0 +1,15 @@ +class SoundNodeRandom extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object,Object); + +var() editfixedsize array Weights; +var() int PreselectAtLevelLoad; +var() bool bRandomizeWithoutReplacement; +var transient array HasBeenUsed; +var transient int NumRandomUsed; + +defaultproperties +{ + bRandomizeWithoutReplacement=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SoundNodeWave.uc b/exported/Engine/Classes/SoundNodeWave.uc new file mode 100755 index 00000000..970526e1 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeWave.uc @@ -0,0 +1,67 @@ +class SoundNodeWave extends SoundNode + native(Sound) + perobjectconfig + editinlinenew + hidecategories(Object,Object); + +enum EDecompressionType +{ + DTYPE_Setup, // 0 + DTYPE_Invalid, // 1 + DTYPE_Preview, // 2 + DTYPE_Native, // 3 + DTYPE_RealTime, // 4 + DTYPE_Procedural, // 5 + DTYPE_Xenon, // 6 + DTYPE_Dingo, // 7 + DTYPE_MAX // 8 +}; + +var(Compression) int CompressionQuality; +var(Compression) bool bForceRealTimeDecompression; +var(Compression) bool bLoopingSound; +var const transient bool bDynamicResource; +var(TTS) bool bUseTTS; +var transient bool bProcedural; +var(Subtitles) const localized bool bMature; +var(Subtitles) const localized bool bManualWordWrap; +var(Subtitles) const localized bool bSingleLine; +var(TTS) AudioDevice.ETTSSpeaker TTSSpeaker; +var const transient SoundNodeWave.EDecompressionType DecompressionType; +var() const Scene.EDetailMode MobileDetailMode; +var(TTS) const localized string SpokenText; +var(Info) const editconst float Volume; +var(Info) const editconst float Pitch; +var(Info) const editconst float Duration; +var(Info) const editconst int NumChannels; +var(Info) const editconst int SampleRate; +var native const UntypedBulkData_Mirror RawData; +var native const Pointer VorbisDecompressor; +var native const Pointer RawPCMData; +var const int RawPCMDataSize; +var native const UntypedBulkData_Mirror CompressedPCData; +var native const UntypedBulkData_Mirror CompressedXbox360Data; +var native const UntypedBulkData_Mirror CompressedDingoData; +var native const UntypedBulkData_Mirror CompressedPS3Data; +var native const UntypedBulkData_Mirror CompressedWiiUData; +var native const UntypedBulkData_Mirror CompressedIPhoneData; +var native const UntypedBulkData_Mirror CompressedFlashData; +var native const UntypedBulkData_Mirror CompressedOrbisData; +var const transient int ResourceID; +var const transient int ResourceSize; +var native const Pointer ResourceData; +var(Subtitles) const localized array Subtitles; +var array LocalizedSubtitles; + +event GeneratePCMData(out array Buffer, int SamplesNeeded) +{ + //return; +} + +defaultproperties +{ + CompressionQuality=40 + bLoopingSound=true + Volume=0.7500000 + Pitch=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SoundNodeWaveParam.uc b/exported/Engine/Classes/SoundNodeWaveParam.uc new file mode 100755 index 00000000..f367b84f --- /dev/null +++ b/exported/Engine/Classes/SoundNodeWaveParam.uc @@ -0,0 +1,6 @@ +class SoundNodeWaveParam extends SoundNode + native(Sound) + editinlinenew + hidecategories(Object,Object); + +var() name WaveParameterName; diff --git a/exported/Engine/Classes/SoundNodeWaveStreaming.uc b/exported/Engine/Classes/SoundNodeWaveStreaming.uc new file mode 100755 index 00000000..38496116 --- /dev/null +++ b/exported/Engine/Classes/SoundNodeWaveStreaming.uc @@ -0,0 +1,29 @@ +class SoundNodeWaveStreaming extends SoundNodeWave + native(Sound) + perobjectconfig + editinlinenew + hidecategories(Object,Object); + +var private array QueuedAudio; +var const float InactiveDuration; + +// Export USoundNodeWaveStreaming::execQueueAudio(FFrame&, void* const) +native event QueueAudio(array Data); + +// Export USoundNodeWaveStreaming::execQueueSilence(FFrame&, void* const) +native event QueueSilence(float Seconds); + +// Export USoundNodeWaveStreaming::execResetAudio(FFrame&, void* const) +native event ResetAudio(); + +// Export USoundNodeWaveStreaming::execAvailableAudioBytes(FFrame&, void* const) +native event int AvailableAudioBytes(); + +// Export USoundNodeWaveStreaming::execGeneratePCMData(FFrame&, void* const) +native event GeneratePCMData(out array Buffer, int SamplesNeeded); + +defaultproperties +{ + bLoopingSound=false + bProcedural=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SpeechRecognition.uc b/exported/Engine/Classes/SpeechRecognition.uc new file mode 100755 index 00000000..afe41f2a --- /dev/null +++ b/exported/Engine/Classes/SpeechRecognition.uc @@ -0,0 +1,67 @@ +class SpeechRecognition extends Object + native + collapsecategories + hidecategories(Object); + +struct native RecognisableWord +{ + var() int Id; + var() string ReferenceWord; + var() string PhoneticWord; + + structdefaultproperties + { + Id=0 + ReferenceWord="" + PhoneticWord="" + } +}; + +struct native RecogVocabulary +{ + var() array WhoDictionary; + var() array WhatDictionary; + var() array WhereDictionary; + var string VocabName; + var array VocabData; + var array WorkingVocabData; + + structdefaultproperties + { + WhoDictionary=none + WhatDictionary=none + WhereDictionary=none + VocabName="" + VocabData=none + WorkingVocabData=none + } +}; + +struct native RecogUserData +{ + var int ActiveVocabularies; + var array UserData; + + structdefaultproperties + { + ActiveVocabularies=0 + UserData=none + } +}; + +var() string Language; +var() float ConfidenceThreshhold; +var() array Vocabularies; +var array VoiceData; +var array WorkingVoiceData; +var array UserData; +var RecogUserData InstanceData[4]; +var duplicatetransient transient bool bDirty; +var duplicatetransient transient bool bInitialised; +var duplicatetransient native const Pointer FnxVoiceData; + +defaultproperties +{ + Language="INT" + ConfidenceThreshhold=50.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SpeedTree.uc b/exported/Engine/Classes/SpeedTree.uc new file mode 100755 index 00000000..8989e17e --- /dev/null +++ b/exported/Engine/Classes/SpeedTree.uc @@ -0,0 +1,27 @@ +class SpeedTree extends Object + native(SpeedTree); + +var private const bool bLegacySpeedTree; +var duplicatetransient native const Pointer SRH; +var(Lighting) float LeafStaticShadowOpacity; +var(Material) MaterialInterface Branch1Material; +var(Material) MaterialInterface Branch2Material; +var(Material) MaterialInterface FrondMaterial; +var(Material) MaterialInterface LeafCardMaterial; +var(Material) MaterialInterface LeafMeshMaterial; +var(Material) MaterialInterface BillboardMaterial; +var(Material) MaterialInterface Branch1MaterialNoScreenDoor; +var(Material) MaterialInterface Branch2MaterialNoScreenDoor; +var(Material) MaterialInterface FrondMaterialNoScreenDoor; +var(Material) MaterialInterface LeafCardMaterialNoScreenDoor; +var(Material) MaterialInterface LeafMeshMaterialNoScreenDoor; +var(Material) MaterialInterface BillboardMaterialNoScreenDoor; +var(Wind) float WindStrength; +var(Wind) Vector WindDirection; + +defaultproperties +{ + LeafStaticShadowOpacity=0.5000000 + WindStrength=0.2000000 + WindDirection=(X=1.0000000,Y=0.0000000,Z=0.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/SpeedTreeActor.uc b/exported/Engine/Classes/SpeedTreeActor.uc new file mode 100755 index 00000000..a523b695 --- /dev/null +++ b/exported/Engine/Classes/SpeedTreeActor.uc @@ -0,0 +1,27 @@ +class SpeedTreeActor extends Actor + native(SpeedTree) + placeable + hidecategories(Navigation); + +var() const editconst export editinline SpeedTreeComponent SpeedTreeComponent; + +defaultproperties +{ + // Reference: SpeedTreeComponent'Engine.Default__SpeedTreeActor.SpeedTreeComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SpeedTreeComponent0' + begin object name="SpeedTreeComponent0" class=Engine.SpeedTreeComponent + ReplacementPrimitive=none + bAllowApproximateOcclusion=true + bForceDirectLightMap=true + end object + SpeedTreeComponent=SpeedTreeComponent0 + Components[0]=SpeedTreeComponent0 + bStatic=true + bNoDelete=true + bWorldGeometry=true + bMovable=false + bCollideActors=true + bBlockActors=true + CollisionComponent=SpeedTreeComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SpeedTreeActorFactory.uc b/exported/Engine/Classes/SpeedTreeActorFactory.uc new file mode 100755 index 00000000..b9daf8ed --- /dev/null +++ b/exported/Engine/Classes/SpeedTreeActorFactory.uc @@ -0,0 +1,14 @@ +class SpeedTreeActorFactory extends ActorFactory + native(SpeedTree) + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +var() SpeedTree SpeedTree; + +defaultproperties +{ + MenuName="Add SpeedTree" + NewActorClass=Class'Engine.SpeedTreeActor' +} \ No newline at end of file diff --git a/exported/Engine/Classes/SpeedTreeComponent.uc b/exported/Engine/Classes/SpeedTreeComponent.uc new file mode 100755 index 00000000..b9eb85c5 --- /dev/null +++ b/exported/Engine/Classes/SpeedTreeComponent.uc @@ -0,0 +1,100 @@ +class SpeedTreeComponent extends PrimitiveComponent + native(SpeedTree) + editinlinenew + hidecategories(Object) + autoexpandcategories(Collision,Rendering,Lighting); + +enum ESpeedTreeMeshType +{ + STMT_MinMinusOne, // 0 + STMT_Branches1, // 1 + STMT_Branches2, // 2 + STMT_Fronds, // 3 + STMT_LeafCards, // 4 + STMT_LeafMeshes, // 5 + STMT_Billboards, // 6 + STMT_Max // 7 +}; + +struct native SpeedTreeStaticLight +{ + var private const Guid Guid; + var private const ShadowMap1D BranchShadowMap; + var private const ShadowMap1D FrondShadowMap; + var private const ShadowMap1D LeafMeshShadowMap; + var private const ShadowMap1D LeafCardShadowMap; + var private const ShadowMap1D BillboardShadowMap; + + structdefaultproperties + { + Guid=(A=0,B=0,C=0,D=0) + BranchShadowMap=none + FrondShadowMap=none + LeafMeshShadowMap=none + LeafCardShadowMap=none + BillboardShadowMap=none + } +}; + +var(SpeedTree) const SpeedTree SpeedTree; +var(SpeedTree) bool bUseLeafCards; +var(SpeedTree) bool bUseLeafMeshes; +var(SpeedTree) bool bUseBranches; +var(SpeedTree) bool bUseFronds; +var(SpeedTree) bool bUseBillboards; +var(SpeedTree) float Lod3DStart; +var(SpeedTree) float Lod3DEnd; +var(SpeedTree) float LodBillboardStart; +var(SpeedTree) float LodBillboardEnd; +var(SpeedTree) float LodLevelOverride; +var(SpeedTree) MaterialInterface Branch1Material; +var(SpeedTree) MaterialInterface Branch2Material; +var(SpeedTree) MaterialInterface FrondMaterial; +var(SpeedTree) MaterialInterface LeafCardMaterial; +var(SpeedTree) MaterialInterface LeafMeshMaterial; +var(SpeedTree) MaterialInterface BillboardMaterial; +var(SpeedTree) MaterialInterface Branch1MaterialNoScreenDoor; +var(SpeedTree) MaterialInterface Branch2MaterialNoScreenDoor; +var(SpeedTree) MaterialInterface FrondMaterialNoScreenDoor; +var(SpeedTree) MaterialInterface LeafCardMaterialNoScreenDoor; +var(SpeedTree) MaterialInterface LeafMeshMaterialNoScreenDoor; +var(SpeedTree) MaterialInterface BillboardMaterialNoScreenDoor; +var private const array StaticLights; +var private native const LightMapRef BranchLightMap; +var private native const LightMapRef FrondLightMap; +var private native const LightMapRef LeafMeshLightMap; +var private native const LightMapRef LeafCardLightMap; +var private native const LightMapRef BillboardLightMap; +var private native const Matrix RotationOnlyMatrix; +var(Lightmass) LightmassPrimitiveSettings LightmassSettings; + +// Export USpeedTreeComponent::execGetMaterial(FFrame&, void* const) +native function MaterialInterface GetMaterial(SpeedTreeComponent.ESpeedTreeMeshType MeshType); + +// Export USpeedTreeComponent::execSetMaterial(FFrame&, void* const) +native function SetMaterial(SpeedTreeComponent.ESpeedTreeMeshType MeshType, MaterialInterface Material); + +defaultproperties +{ + bUseLeafCards=true + bUseLeafMeshes=true + bUseBranches=true + bUseFronds=true + bUseBillboards=true + Lod3DStart=500.0000000 + Lod3DEnd=3000.0000000 + LodBillboardStart=3500.0000000 + LodBillboardEnd=3850.0000000 + LodLevelOverride=-1.0000000 + LightmassSettings=(bUseTwoSidedLighting=false,bShadowIndirectOnly=false,bUseEmissiveForStaticLighting=false,EmissiveLightFalloffExponent=2.0000000,EmissiveLightExplicitInfluenceRadius=0.0000000,EmissiveBoost=1.0000000,DiffuseBoost=1.0000000,SpecularBoost=1.0000000,FullyOccludedSamplesFraction=1.0000000) + ReplacementPrimitive=none + bUseAsOccluder=true + CastShadow=true + bAcceptsLights=true + bUsePrecomputedShadows=true + CollideActors=true + BlockActors=true + BlockZeroExtent=true + BlockNonZeroExtent=true + BlockRigidBody=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SpeedTreeComponentFactory.uc b/exported/Engine/Classes/SpeedTreeComponentFactory.uc new file mode 100755 index 00000000..7d4134b0 --- /dev/null +++ b/exported/Engine/Classes/SpeedTreeComponentFactory.uc @@ -0,0 +1,23 @@ +class SpeedTreeComponentFactory extends PrimitiveComponentFactory + native(SpeedTree) + editinlinenew + collapsecategories + hidecategories(Object); + +var() export editinline SpeedTreeComponent SpeedTreeComponent; + +defaultproperties +{ + // Reference: SpeedTreeComponent'Engine.Default__SpeedTreeComponentFactory.SpeedTreeComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SpeedTreeComponent0' + begin object name="SpeedTreeComponent0" class=Engine.SpeedTreeComponent + ReplacementPrimitive=none + end object + SpeedTreeComponent=SpeedTreeComponent0 + CollideActors=true + BlockActors=true + BlockZeroExtent=true + BlockNonZeroExtent=true + BlockRigidBody=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SphericalHarmonicLightComponent.uc b/exported/Engine/Classes/SphericalHarmonicLightComponent.uc new file mode 100755 index 00000000..25350651 --- /dev/null +++ b/exported/Engine/Classes/SphericalHarmonicLightComponent.uc @@ -0,0 +1,12 @@ +class SphericalHarmonicLightComponent extends LightComponent + native(Light) + editinlinenew + hidecategories(Object); + +var() SHVectorRGB WorldSpaceIncidentLighting; +var bool bRenderBeforeModShadows; + +defaultproperties +{ + CastShadows=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/SplineActor.uc b/exported/Engine/Classes/SplineActor.uc new file mode 100755 index 00000000..4a15b8e2 --- /dev/null +++ b/exported/Engine/Classes/SplineActor.uc @@ -0,0 +1,108 @@ +class SplineActor extends Actor + native(Spline) + placeable + hidecategories(Navigation); + +struct native SplineConnection +{ + var() export editinline SplineComponent SplineComponent; + var() SplineActor ConnectTo; + + structdefaultproperties + { + SplineComponent=none + ConnectTo=none + } +}; + +var array Connections; +var() interp Vector SplineActorTangent; +var() Color SplineColor; +var() bool bDisableDestination; +var transient bool bAlreadyVisited; +var array LinksFrom; +var transient SplineActor nextOrdered; +var transient SplineActor prevOrdered; +var transient SplineActor previousPath; +var transient int bestPathWeight; +var transient int visitedWeight; +var() editinline InterpCurveFloat SplineVelocityOverTime; + +// Export USplineActor::execGetWorldSpaceTangent(FFrame&, void* const) +native function Vector GetWorldSpaceTangent(); + +// Export USplineActor::execUpdateSplineComponents(FFrame&, void* const) +native function UpdateSplineComponents(); + +// Export USplineActor::execUpdateConnectedSplineComponents(FFrame&, void* const) +native function UpdateConnectedSplineComponents(bool bFinish); + +// Export USplineActor::execAddConnectionTo(FFrame&, void* const) +native function AddConnectionTo(SplineActor NextActor); + +// Export USplineActor::execIsConnectedTo(FFrame&, void* const) +native function bool IsConnectedTo(SplineActor NextActor, bool bCheckForDisableDestination); + +// Export USplineActor::execFindSplineComponentTo(FFrame&, void* const) +native function SplineComponent FindSplineComponentTo(SplineActor NextActor); + +// Export USplineActor::execFindTargetForComponent(FFrame&, void* const) +native function SplineActor FindTargetForComponent(SplineComponent SplineComp); + +// Export USplineActor::execBreakConnectionTo(FFrame&, void* const) +native function BreakConnectionTo(SplineActor NextActor); + +// Export USplineActor::execBreakAllConnections(FFrame&, void* const) +native function BreakAllConnections(); + +// Export USplineActor::execBreakAllConnectionsFrom(FFrame&, void* const) +native function BreakAllConnectionsFrom(); + +// Export USplineActor::execGetRandomConnection(FFrame&, void* const) +native function SplineActor GetRandomConnection(optional bool bUseLinksFrom); + +// Export USplineActor::execGetBestConnectionInDirection(FFrame&, void* const) +native function SplineActor GetBestConnectionInDirection(Vector DesiredDir, optional bool bUseLinksFrom); + +// Export USplineActor::execFindSplinePathTo(FFrame&, void* const) +native function bool FindSplinePathTo(SplineActor Goal, out array OutRoute); + +// Export USplineActor::execGetAllConnectedSplineActors(FFrame&, void* const) +native function GetAllConnectedSplineActors(out array OutSet); + +function OnToggle(SeqAct_Toggle inAction) +{ + // End:0x46 + if(inAction.InputLinks[0].bHasImpulse) + { + bDisableDestination = false; + } + else + { + // End:0x8C + if(inAction.InputLinks[1].bHasImpulse) + { + bDisableDestination = true; + } + else + { + bDisableDestination = !bDisableDestination; + } + } + UpdateConnectedSplineComponents(true); + //return; +} + +simulated function OnToggleHidden(SeqAct_ToggleHidden Action) +{ + super.OnToggleHidden(Action); + UpdateConnectedSplineComponents(true); + //return; +} + +defaultproperties +{ + SplineActorTangent=(X=300.0000000,Y=0.0000000,Z=0.0000000) + SplineColor=(R=255,G=0,B=255,A=255) + Components[0]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/SplineAudioComponent.uc b/exported/Engine/Classes/SplineAudioComponent.uc new file mode 100755 index 00000000..81313ee9 --- /dev/null +++ b/exported/Engine/Classes/SplineAudioComponent.uc @@ -0,0 +1,28 @@ +class SplineAudioComponent extends AudioComponent + native + editinlinenew + collapsecategories + hidecategories(Object,ActorComponent,Object,ActorComponent); + +struct InterpPointOnSpline +{ + var() Vector Position; + var() float InVal; + var() float Length; + + structdefaultproperties + { + Position=(X=0.0000000,Y=0.0000000,Z=0.0000000) + InVal=0.0000000 + Length=0.0000000 + } +}; + +var() float ListenerScopeRadius; +var int ClosestPointOnSplineIndex; +var init array Points; + +defaultproperties +{ + ListenerScopeRadius=1200.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SplineComponent.uc b/exported/Engine/Classes/SplineComponent.uc new file mode 100755 index 00000000..e84c0cab --- /dev/null +++ b/exported/Engine/Classes/SplineComponent.uc @@ -0,0 +1,33 @@ +class SplineComponent extends PrimitiveComponent + native(Spline); + +var() InterpCurveVector SplineInfo; +var() editconst float SplineCurviness; +var() Color SplineColor; +var() float SplineDrawRes; +var() float SplineArrowSize; +var() bool bSplineDisabled; +var() InterpCurveFloat SplineReparamTable; + +// Export USplineComponent::execUpdateSplineCurviness(FFrame&, void* const) +native function UpdateSplineCurviness(); + +// Export USplineComponent::execUpdateSplineReparamTable(FFrame&, void* const) +native function UpdateSplineReparamTable(); + +// Export USplineComponent::execGetSplineLength(FFrame&, void* const) +native function float GetSplineLength(); + +// Export USplineComponent::execGetLocationAtDistanceAlongSpline(FFrame&, void* const) +native function Vector GetLocationAtDistanceAlongSpline(float Distance); + +// Export USplineComponent::execGetTangentAtDistanceAlongSpline(FFrame&, void* const) +native function Vector GetTangentAtDistanceAlongSpline(float Distance); + +defaultproperties +{ + SplineColor=(R=255,G=0,B=255,A=255) + SplineDrawRes=0.1000000 + SplineArrowSize=60.0000000 + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/SplineComponentSimplified.uc b/exported/Engine/Classes/SplineComponentSimplified.uc new file mode 100755 index 00000000..4a25eb80 --- /dev/null +++ b/exported/Engine/Classes/SplineComponentSimplified.uc @@ -0,0 +1,7 @@ +class SplineComponentSimplified extends SplineComponent + hidecategories(Rendering,Collision,Physics,Lighting,Object); + +defaultproperties +{ + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/SplineLoftActor.uc b/exported/Engine/Classes/SplineLoftActor.uc new file mode 100755 index 00000000..d6514a89 --- /dev/null +++ b/exported/Engine/Classes/SplineLoftActor.uc @@ -0,0 +1,39 @@ +class SplineLoftActor extends SplineActor + native(Spline) + placeable + hidecategories(Navigation); + +var() interp float ScaleX; +var() interp float ScaleY; +var export editinline array SplineMeshComps; +var() const StaticMesh DeformMesh; +var() const array DeformMeshMaterials; +var() interp float Roll; +var() Vector WorldXDir; +var() Vector2D Offset; +var() bool bSmoothInterpRollAndScale; +var() bool bAcceptsLights; +var() const editconst export editinline DynamicLightEnvironmentComponent MeshLightEnvironment; +var() float MeshMaxDrawDistance; + +// Export USplineLoftActor::execClearLoftMesh(FFrame&, void* const) +native function ClearLoftMesh(); + +// Export USplineLoftActor::execUpdateSplineParams(FFrame&, void* const) +native function UpdateSplineParams(); + +defaultproperties +{ + ScaleX=1.0000000 + ScaleY=1.0000000 + WorldXDir=(X=1.0000000,Y=0.0000000,Z=0.0000000) + bSmoothInterpRollAndScale=true + bAcceptsLights=true + bStatic=true + bWorldGeometry=true + bGameRelevant=true + bMovable=false + bCollideActors=true + bBlockActors=true + bEdShouldSnap=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SplineLoftActorMovable.uc b/exported/Engine/Classes/SplineLoftActorMovable.uc new file mode 100755 index 00000000..a10a9fa3 --- /dev/null +++ b/exported/Engine/Classes/SplineLoftActorMovable.uc @@ -0,0 +1,20 @@ +class SplineLoftActorMovable extends SplineLoftActor + native(Spline) + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'Engine.Default__SplineLoftActorMovable.MyMeshLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyMeshLightEnvironment' + begin object name="MyMeshLightEnvironment" class=Engine.DynamicLightEnvironmentComponent + end object + MeshLightEnvironment=MyMeshLightEnvironment + Components[0]=none + Components[1]=MyMeshLightEnvironment + Physics=EPhysics.PHYS_Interpolating + bStatic=false + bNoDelete=true + bMovable=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SplineMeshComponent.uc b/exported/Engine/Classes/SplineMeshComponent.uc new file mode 100755 index 00000000..c4d6f33f --- /dev/null +++ b/exported/Engine/Classes/SplineMeshComponent.uc @@ -0,0 +1,44 @@ +class SplineMeshComponent extends StaticMeshComponent + native(Mesh) + editinlinenew + hidecategories(Object); + +struct native SplineMeshParams +{ + var Vector StartPos; + var Vector StartTangent; + var Vector2D StartScale; + var float StartRoll; + var Vector2D StartOffset; + var Vector EndPos; + var Vector EndTangent; + var Vector2D EndScale; + var float EndRoll; + var Vector2D EndOffset; + + structdefaultproperties + { + StartPos=(X=0.0000000,Y=0.0000000,Z=0.0000000) + StartTangent=(X=0.0000000,Y=0.0000000,Z=0.0000000) + StartScale=(X=0.0000000,Y=0.0000000) + StartRoll=0.0000000 + StartOffset=(X=0.0000000,Y=0.0000000) + EndPos=(X=0.0000000,Y=0.0000000,Z=0.0000000) + EndTangent=(X=0.0000000,Y=0.0000000,Z=0.0000000) + EndScale=(X=0.0000000,Y=0.0000000) + EndRoll=0.0000000 + EndOffset=(X=0.0000000,Y=0.0000000) + } +}; + +var SplineMeshParams SplineParams; +var Vector SplineXDir; +var bool bSmoothInterpRollScale; + +defaultproperties +{ + SplineXDir=(X=1.0000000,Y=0.0000000,Z=0.0000000) + ReplacementPrimitive=none + bUseAsOccluder=false + bUsePrecomputedShadows=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SpotLight.uc b/exported/Engine/Classes/SpotLight.uc new file mode 100755 index 00000000..74380769 --- /dev/null +++ b/exported/Engine/Classes/SpotLight.uc @@ -0,0 +1,27 @@ +class SpotLight extends Light + native(Light) + placeable + hidecategories(Navigation) + classgroup(Lights,SpotLights); + +defaultproperties +{ + // Reference: SpotLightComponent'Engine.Default__SpotLight.SpotLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SpotLightComponent0' + begin object name="SpotLightComponent0" class=Engine.SpotLightComponent + CastDynamicShadows=false + UseDirectLightMap=true + LightingChannels=(Dynamic=false) + LightAffectsClassification=ELightAffectsClassification.LAC_STATIC_AFFECTING + end object + LightComponent=SpotLightComponent0 + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=none + Components[4]=none + Components[5]=SpotLightComponent0 + Components[6]=none + Rotation=(Pitch=-16384,Yaw=0,Roll=0) +} \ No newline at end of file diff --git a/exported/Engine/Classes/SpotLightComponent.uc b/exported/Engine/Classes/SpotLightComponent.uc new file mode 100755 index 00000000..0e87d76d --- /dev/null +++ b/exported/Engine/Classes/SpotLightComponent.uc @@ -0,0 +1,20 @@ +class SpotLightComponent extends PointLightComponent + native(Light) + editinlinenew + hidecategories(Object,Object); + +var() float InnerConeAngle; +var() float OuterConeAngle; +var(LightShafts) float LightShaftConeAngle; +var const export editinline DrawLightConeComponent PreviewInnerCone; +var const export editinline DrawLightConeComponent PreviewOuterCone; +var() const Rotator Rotation; + +// Export USpotLightComponent::execSetRotation(FFrame&, void* const) +native final function SetRotation(Rotator NewRotation); + +defaultproperties +{ + OuterConeAngle=44.0000000 + LightShaftConeAngle=89.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/SpotLightMovable.uc b/exported/Engine/Classes/SpotLightMovable.uc new file mode 100755 index 00000000..b5b03760 --- /dev/null +++ b/exported/Engine/Classes/SpotLightMovable.uc @@ -0,0 +1,31 @@ +class SpotLightMovable extends SpotLight + native(Light) + placeable + hidecategories(Navigation) + classgroup(Lights,SpotLights); + +defaultproperties +{ + // Reference: SpotLightComponent'Engine.Default__SpotLightMovable.SpotLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SpotLightComponent0' + // Archetype: SpotLightComponent'Engine.Default__SpotLight.SpotLightComponent0' + begin object name="SpotLightComponent0" + CastDynamicShadows=true + UseDirectLightMap=false + LightingChannels=(Dynamic=true) + LightAffectsClassification=ELightAffectsClassification.LAC_DYNAMIC_AND_STATIC_AFFECTING + end object + LightComponent=SpotLightComponent0 + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=none + Components[4]=none + Components[5]=SpotLightComponent0 + Components[6]=none + TickGroup=ETickingGroup.TG_DuringAsyncWork + bStatic=false + bHardAttach=true + bMovable=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SpotLightToggleable.uc b/exported/Engine/Classes/SpotLightToggleable.uc new file mode 100755 index 00000000..1c11c554 --- /dev/null +++ b/exported/Engine/Classes/SpotLightToggleable.uc @@ -0,0 +1,58 @@ +class SpotLightToggleable extends SpotLight + native(Light) + placeable + hidecategories(Navigation) + classgroup(Lights,SpotLights); + +struct CheckpointRecord +{ + var bool bEnabled; + + structdefaultproperties + { + bEnabled=false + } +}; + +function bool ShouldSaveForCheckpoint() +{ + return int(RemoteRole) != int(ROLE_None); + //return ReturnValue; +} + +function CreateCheckpointRecord(out CheckpointRecord Record) +{ + Record.bEnabled = bEnabled; + //return; +} + +function ApplyCheckpointRecord(const out CheckpointRecord Record) +{ + bEnabled = Record.bEnabled; + LightComponent.SetEnabled(bEnabled); + ForceNetRelevant(); + //return; +} + +defaultproperties +{ + // Reference: SpotLightComponent'Engine.Default__SpotLightToggleable.SpotLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SpotLightComponent0' + // Archetype: SpotLightComponent'Engine.Default__SpotLight.SpotLightComponent0' + begin object name="SpotLightComponent0" + LightmassSettings=(IndirectLightingScale=0.0000000) + UseDirectLightMap=false + end object + LightComponent=SpotLightComponent0 + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=none + Components[4]=none + Components[5]=SpotLightComponent0 + Components[6]=none + TickGroup=ETickingGroup.TG_DuringAsyncWork + bStatic=false + bHardAttach=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/SpriteComponent.uc b/exported/Engine/Classes/SpriteComponent.uc new file mode 100755 index 00000000..ef986e1b --- /dev/null +++ b/exported/Engine/Classes/SpriteComponent.uc @@ -0,0 +1,28 @@ +class SpriteComponent extends PrimitiveComponent + native + editinlinenew + collapsecategories + hidecategories(Object); + +var() Texture2D Sprite; +var() bool bIsScreenSizeScaled; +var() float ScreenSize; +var() float U; +var() float UL; +var() float V; +var() float VL; + +// Export USpriteComponent::execSetSprite(FFrame&, void* const) +native simulated function SetSprite(Texture2D NewSprite); + +// Export USpriteComponent::execSetUV(FFrame&, void* const) +native simulated function SetUV(int NewU, int NewUL, int NewV, int NewVL); + +// Export USpriteComponent::execSetSpriteAndUV(FFrame&, void* const) +native simulated function SetSpriteAndUV(Texture2D NewSprite, int NewU, int NewUL, int NewV, int NewVL); + +defaultproperties +{ + ScreenSize=0.1000000 + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/StaticLightCollectionActor.uc b/exported/Engine/Classes/StaticLightCollectionActor.uc new file mode 100755 index 00000000..a81ed358 --- /dev/null +++ b/exported/Engine/Classes/StaticLightCollectionActor.uc @@ -0,0 +1,14 @@ +class StaticLightCollectionActor extends Light + native(Light) + config(Engine) + placeable + hidecategories(Navigation); + +var const export editinline array LightComponents; +var config int MaxLightComponents; + +defaultproperties +{ + MaxLightComponents=100 + Components=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/StaticMeshActor.uc b/exported/Engine/Classes/StaticMeshActor.uc new file mode 100755 index 00000000..b60a167c --- /dev/null +++ b/exported/Engine/Classes/StaticMeshActor.uc @@ -0,0 +1,57 @@ +class StaticMeshActor extends StaticMeshActorBase + native + placeable + hidecategories(Navigation); + +struct native VertexColorPhysicalMaterialMapping +{ + var() PhysicalMaterial PhysMat; + var() Color MappingColor; + + structdefaultproperties + { + PhysMat=none + MappingColor=(R=0,G=0,B=0,A=0) + } +}; + +var() const editconst export editinline StaticMeshComponent StaticMeshComponent; +var() bool bRenderElementsViaProxy; +var() editoronly bool bDisableAutoBaseOnProcBuilding; +var private bool bProxy; +var private bool bHiddenByProxy; +var private bool OldCastShadow; +var private bool OldAcceptsLights; +var(NavMesh) bool bCuttingMesh; +var() export editinline TgSilhouetteComponent Silhouette; +var(PaladinsPhysicalMaterials) array VertexColorPhysicalMaterialMappings; + +event PreBeginPlay() +{ + //return; +} + +defaultproperties +{ + // Reference: StaticMeshComponent'Engine.Default__StaticMeshActor.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + begin object name="StaticMeshComponent0" class=Engine.StaticMeshComponent + ReplacementPrimitive=none + bAllowApproximateOcclusion=true + bForceDirectLightMap=true + bUsePrecomputedShadows=true + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: TgSilhouetteComponent'Engine.Default__StaticMeshActor.MySilhouette' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MySilhouette' + begin object name="MySilhouette" class=Engine.TgSilhouetteComponent + MeshComponent=StaticMeshComponent'Engine.Default__StaticMeshActor.StaticMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + Components[0]=StaticMeshComponent0 + Components[1]=MySilhouette + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/StaticMeshActorBase.uc b/exported/Engine/Classes/StaticMeshActorBase.uc new file mode 100755 index 00000000..7225ce65 --- /dev/null +++ b/exported/Engine/Classes/StaticMeshActorBase.uc @@ -0,0 +1,18 @@ +class StaticMeshActorBase extends Actor + abstract + native + notplaceable + hidecategories(Navigation) + classgroup(StaticMeshes); + +defaultproperties +{ + bStatic=true + bWorldGeometry=true + bRouteBeginPlayEvenIfStatic=false + bGameRelevant=true + bMovable=false + bCollideActors=true + bBlockActors=true + bEdShouldSnap=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/StaticMeshActorBasedOnExtremeContent.uc b/exported/Engine/Classes/StaticMeshActorBasedOnExtremeContent.uc new file mode 100755 index 00000000..7019052c --- /dev/null +++ b/exported/Engine/Classes/StaticMeshActorBasedOnExtremeContent.uc @@ -0,0 +1,87 @@ +class StaticMeshActorBasedOnExtremeContent extends Actor + native + placeable + hidecategories(Navigation) + classgroup(StaticMeshes); + +struct native SMMaterialSetterDatum +{ + var() int MaterialIndex; + var() MaterialInterface TheMaterial; + + structdefaultproperties + { + MaterialIndex=0 + TheMaterial=none + } +}; + +var() const editconst export editinline StaticMeshComponent StaticMeshComponent; +var() array ExtremeContent; +var() array NonExtremeContent; + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + SetMaterialBasedOnExtremeContent(); + //return; +} + +simulated function SetMaterialBasedOnExtremeContent() +{ + local int Idx; + + // End:0xD6 + if(WorldInfo.GRI.ShouldShowGore()) + { + Idx = 0; + J0x42: + + // End:0xD3 [Loop If] + if(Idx < ExtremeContent.Length) + { + StaticMeshComponent.SetMaterial(ExtremeContent[Idx].MaterialIndex, ExtremeContent[Idx].TheMaterial); + ++Idx; + // [Loop Continue] + goto J0x42; + } + } + else + { + Idx = 0; + J0xE1: + + // End:0x172 [Loop If] + if(Idx < NonExtremeContent.Length) + { + StaticMeshComponent.SetMaterial(NonExtremeContent[Idx].MaterialIndex, NonExtremeContent[Idx].TheMaterial); + ++Idx; + // [Loop Continue] + goto J0xE1; + } + } + //return; +} + +defaultproperties +{ + // Reference: StaticMeshComponent'Engine.Default__StaticMeshActorBasedOnExtremeContent.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + begin object name="StaticMeshComponent0" class=Engine.StaticMeshComponent + ReplacementPrimitive=none + bAllowApproximateOcclusion=true + bForceDirectLightMap=true + bUsePrecomputedShadows=true + end object + StaticMeshComponent=StaticMeshComponent0 + Components[0]=StaticMeshComponent0 + bStatic=true + bWorldGeometry=true + bGameRelevant=true + bMovable=false + bCollideActors=true + bBlockActors=true + bEdShouldSnap=true + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/StaticMeshCollectionActor.uc b/exported/Engine/Classes/StaticMeshCollectionActor.uc new file mode 100755 index 00000000..60f1a04a --- /dev/null +++ b/exported/Engine/Classes/StaticMeshCollectionActor.uc @@ -0,0 +1,13 @@ +class StaticMeshCollectionActor extends StaticMeshActorBase + native + config(Engine) + placeable + hidecategories(Navigation); + +var const export editinline array StaticMeshComponents; +var config int MaxStaticMeshComponents; + +defaultproperties +{ + MaxStaticMeshComponents=100 +} \ No newline at end of file diff --git a/exported/Engine/Classes/StaticMeshComponent.uc b/exported/Engine/Classes/StaticMeshComponent.uc new file mode 100755 index 00000000..6f81e5bb --- /dev/null +++ b/exported/Engine/Classes/StaticMeshComponent.uc @@ -0,0 +1,96 @@ +class StaticMeshComponent extends MeshComponent + native(Mesh) + editinlinenew + noexport + hidecategories(Object); + +enum ELightmapModificationFunction +{ + MLMF_Modulate, // 0 + MLMF_ModulateAlpha, // 1 + MLMF_MAX // 2 +}; + +struct PaintedVertex +{ + var Vector Position; + var PackedNormal Normal; + var Color Color; + + structdefaultproperties + { + Position=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Normal=/* ERROR: System.ArgumentException */ + Color=(R=0,G=0,B=0,A=0) + } +}; + +struct StaticMeshComponentLODInfo +{ + var private const array ShadowMaps; + var private const array ShadowVertexBuffers; + var private native const Pointer LightMap; + var private native const Pointer OverrideVertexColors; + var private const array PaintedVertices; + + structdefaultproperties + { + ShadowMaps=none + ShadowVertexBuffers=none + PaintedVertices=none + } +}; + +var() int ForcedLodModel; +var int PreviousLODLevel; +var() const StaticMesh StaticMesh; +var() Color WireframeColor; +var() bool bIgnoreInstanceForTextureStreaming; +var const deprecated bool bOverrideLightMapResolution; +var() const bool bOverrideLightMapRes; +var const deprecated int OverriddenLightMapResolution; +var() const int OverriddenLightMapRes; +var() float OverriddenLODMaxRange; +var() float StreamingDistanceMultiplier; +var const int SubDivisionStepSize; +var const bool bUseSubDivisions; +var const transient bool bForceStaticDecals; +var transient bool bCanHighlightSelectedSections; +var(MobileSettings) bool bUseSimpleLightmapModifications; +var(MobileSettings) StaticMeshComponent.ELightmapModificationFunction SimpleLightmapModificationFunction; +var(Physics) bool bNeverBecomeDynamic; +var const array IrrelevantLights; +var private serializetext native const array LODData; +var private const int VertexPositionVersionNumber; +var private const int ForcedElementIndex; +var(Lightmass) LightmassPrimitiveSettings LightmassSettings; + +// Export UStaticMeshComponent::execSetStaticMesh(FFrame&, void* const) +native simulated function bool SetStaticMesh(StaticMesh NewMesh, optional bool bForce); + +// Export UStaticMeshComponent::execDisableRBCollisionWithSMC(FFrame&, void* const) +native simulated function DisableRBCollisionWithSMC(PrimitiveComponent OtherSMC, bool bDisabled); + +// Export UStaticMeshComponent::execSetForceStaticDecals(FFrame&, void* const) +native final function SetForceStaticDecals(bool bInForceStaticDecals); + +// Export UStaticMeshComponent::execCanBecomeDynamic(FFrame&, void* const) +native function bool CanBecomeDynamic(); + +defaultproperties +{ + WireframeColor=(R=0,G=255,B=255,A=255) + OverriddenLightMapRes=64 + StreamingDistanceMultiplier=1.0000000 + SubDivisionStepSize=32 + ForcedElementIndex=-1 + LightmassSettings=(bUseTwoSidedLighting=false,bShadowIndirectOnly=false,bUseEmissiveForStaticLighting=false,EmissiveLightFalloffExponent=2.0000000,EmissiveLightExplicitInfluenceRadius=0.0000000,EmissiveBoost=1.0000000,DiffuseBoost=1.0000000,SpecularBoost=1.0000000,FullyOccludedSamplesFraction=1.0000000) + ReplacementPrimitive=none + bAcceptsStaticDecals=true + CollideActors=true + BlockActors=true + BlockZeroExtent=true + BlockNonZeroExtent=true + BlockRigidBody=true + TickGroup=ETickingGroup.TG_PreAsyncWork +} \ No newline at end of file diff --git a/exported/Engine/Classes/StaticMeshComponentFactory.uc b/exported/Engine/Classes/StaticMeshComponentFactory.uc new file mode 100755 index 00000000..b2f51b0b --- /dev/null +++ b/exported/Engine/Classes/StaticMeshComponentFactory.uc @@ -0,0 +1,16 @@ +class StaticMeshComponentFactory extends MeshComponentFactory + native + editinlinenew + collapsecategories + hidecategories(Object); + +var() StaticMesh StaticMesh; + +defaultproperties +{ + CollideActors=true + BlockActors=true + BlockZeroExtent=true + BlockNonZeroExtent=true + BlockRigidBody=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/StringsTag.uc b/exported/Engine/Classes/StringsTag.uc new file mode 100755 index 00000000..216b3fd7 --- /dev/null +++ b/exported/Engine/Classes/StringsTag.uc @@ -0,0 +1,10 @@ +class StringsTag extends TranslatorTag + native; + +// Export UStringsTag::execTranslate(FFrame&, void* const) +native function string Translate(string InArgument); + +defaultproperties +{ + Tag="Strings" +} \ No newline at end of file diff --git a/exported/Engine/Classes/Surface.uc b/exported/Engine/Classes/Surface.uc new file mode 100755 index 00000000..ec59ccfd --- /dev/null +++ b/exported/Engine/Classes/Surface.uc @@ -0,0 +1,9 @@ +class Surface extends Object + abstract + native; + +// Export USurface::execGetSurfaceWidth(FFrame&, void* const) +native final function float GetSurfaceWidth(); + +// Export USurface::execGetSurfaceHeight(FFrame&, void* const) +native final function float GetSurfaceHeight(); diff --git a/exported/Engine/Classes/SwatTurnReachSpec.uc b/exported/Engine/Classes/SwatTurnReachSpec.uc new file mode 100755 index 00000000..79d0d38e --- /dev/null +++ b/exported/Engine/Classes/SwatTurnReachSpec.uc @@ -0,0 +1,9 @@ +class SwatTurnReachSpec extends ForcedReachSpec + native; + +var() editconst byte SpecDirection; + +defaultproperties +{ + PruneSpecList[0]=Class'Engine.ReachSpec' +} \ No newline at end of file diff --git a/exported/Engine/Classes/TargetPoint.uc b/exported/Engine/Classes/TargetPoint.uc new file mode 100755 index 00000000..c223c267 --- /dev/null +++ b/exported/Engine/Classes/TargetPoint.uc @@ -0,0 +1,14 @@ +class TargetPoint extends Keypoint + native + placeable + hidecategories(Navigation); + +var transient int SpawnRefCount; + +defaultproperties +{ + Components[0]=none + Components[1]=none + bStatic=false + bNoDelete=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/TeamInfo.uc b/exported/Engine/Classes/TeamInfo.uc new file mode 100755 index 00000000..646fc008 --- /dev/null +++ b/exported/Engine/Classes/TeamInfo.uc @@ -0,0 +1,111 @@ +class TeamInfo extends ReplicationInfo + native(ReplicationInfo) + nativereplication + notplaceable + hidecategories(Navigation,Movement,Collision); + +var const localized string TeamName; +var int Size; +var float Score; +var repnotify int TeamIndex; +var Color TeamColor; + +replication +{ + // Pos:0x000 + if(bNetDirty && int(Role) == int(ROLE_Authority)) + Score; + + // Pos:0x020 + if(bNetInitial && int(Role) == int(ROLE_Authority)) + TeamIndex, TeamName; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x7C + if(VarName == 'TeamIndex') + { + // End:0x79 + if(WorldInfo.GRI != none) + { + WorldInfo.GRI.SetTeam(TeamIndex, self); + } + } + else + { + super(Actor).ReplicatedEvent(VarName); + } + //return; +} + +simulated event Destroyed() +{ + local TeamInfo OtherTeam; + + super(Actor).Destroyed(); + // End:0xCF + if(WorldInfo.GRI != none) + { + // End:0xCE + foreach DynamicActors(Class'Engine.TeamInfo', OtherTeam) + { + // End:0xCD + if((OtherTeam != self) && OtherTeam.TeamIndex == TeamIndex) + { + WorldInfo.GRI.SetTeam(TeamIndex, OtherTeam); + // End:0xCE + break; + } + } + } + //return; +} + +function bool AddToTeam(Controller Other) +{ + // End:0x11 + if(Other == none) + { + return false; + } + // End:0x41 + if(Other.PlayerReplicationInfo == none) + { + ScriptTrace(); + return false; + } + Size++; + Other.PlayerReplicationInfo.SetPlayerTeam(self); + return true; + //return ReturnValue; +} + +function RemoveFromTeam(Controller Other) +{ + Size--; + // End:0x75 + if((Other != none) && Other.PlayerReplicationInfo != none) + { + Other.PlayerReplicationInfo.SetPlayerTeam(none); + } + //return; +} + +simulated function string GetHumanReadableName() +{ + return TeamName; + //return ReturnValue; +} + +// Export UTeamInfo::execGetTeamNum(FFrame&, void* const) +native simulated function byte GetTeamNum(); + +defaultproperties +{ + TeamName="Team" + TeamIndex=-1 + TeamColor=(R=255,G=64,B=64,A=255) + TickGroup=ETickingGroup.TG_DuringAsyncWork + NetUpdateFrequency=2.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/TeleportReachSpec.uc b/exported/Engine/Classes/TeleportReachSpec.uc new file mode 100755 index 00000000..05dabbb9 --- /dev/null +++ b/exported/Engine/Classes/TeleportReachSpec.uc @@ -0,0 +1,9 @@ +class TeleportReachSpec extends ReachSpec + native; + +defaultproperties +{ + Distance=100 + bAddToNavigationOctree=false + bCheckForObstructions=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/Teleporter.uc b/exported/Engine/Classes/Teleporter.uc new file mode 100755 index 00000000..61c28489 --- /dev/null +++ b/exported/Engine/Classes/Teleporter.uc @@ -0,0 +1,266 @@ +class Teleporter extends NavigationPoint + native + placeable + hidecategories(Navigation,Lighting,LightColor,Force); + +var() string URL; +var() name ProductRequired; +var() bool bChangesVelocity; +var() bool bChangesYaw; +var() bool bReversesX; +var() bool bReversesY; +var() bool bReversesZ; +var() bool bEnabled; +var() bool bCanTeleportVehicles; +var() Vector TargetVelocity; +var float LastFired; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + URL, bEnabled; + + // Pos:0x011 + if(bNetInitial && int(Role) == int(ROLE_Authority)) + TargetVelocity, bChangesVelocity, + bChangesYaw, bReversesX, + bReversesY, bReversesZ; +} + +// Export UTeleporter::execCanTeleport(FFrame&, void* const) +native function bool CanTeleport(Actor A); + +event PostBeginPlay() +{ + // End:0x16 + if(URL ~= "") + { + SetCollision(false, false); + } + super(Actor).PostBeginPlay(); + //return; +} + +simulated event bool Accept(Actor Incoming, Actor Source) +{ + local Rotator NewRot, oldRot; + local float Mag; + local Vector oldDir; + local Controller C; + + // End:0x11 + if(Incoming == none) + { + return false; + } + Disable('Touch'); + NewRot = Incoming.Rotation; + // End:0x14A + if(bChangesYaw) + { + oldRot = Incoming.Rotation; + NewRot.Yaw = Rotation.Yaw; + // End:0x14A + if(Source != none) + { + NewRot.Yaw += ((32768 + Incoming.Rotation.Yaw) - Source.Rotation.Yaw); + } + } + // End:0x428 + if(Pawn(Incoming) != none) + { + // End:0x1F7 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x1F6 + foreach WorldInfo.AllControllers(Class'Engine.Controller', C) + { + // End:0x1F5 + if(C.Enemy == Incoming) + { + C.EnemyJustTeleported(); + } + } + } + // End:0x228 + if(!Pawn(Incoming).SetLocation(Location)) + { + return false; + } + // End:0x343 + if((int(Role) == int(ROLE_Authority)) || (WorldInfo.TimeSeconds - LastFired) > 0.5000000) + { + NewRot.Roll = 0; + Pawn(Incoming).SetRotation(NewRot); + Pawn(Incoming).SetViewRotation(NewRot); + Pawn(Incoming).ClientSetRotation(NewRot); + LastFired = WorldInfo.TimeSeconds; + } + // End:0x404 + if(Pawn(Incoming).Controller != none) + { + Pawn(Incoming).Controller.MoveTimer = -1.0000000; + Pawn(Incoming).SetAnchor(self); + Pawn(Incoming).SetMoveTarget(self); + } + Incoming.PlayTeleportEffect(false, true); + } + else + { + // End:0x45B + if(!Incoming.SetLocation(Location)) + { + Enable('Touch'); + return false; + } + // End:0x489 + if(bChangesYaw) + { + Incoming.SetRotation(NewRot); + } + } + Enable('Touch'); + // End:0x4CC + if(bChangesVelocity) + { + Incoming.Velocity = TargetVelocity; + } + else + { + // End:0x5E8 + if(bChangesYaw) + { + // End:0x520 + if(int(Incoming.Physics) == int(1)) + { + oldRot.Pitch = 0; + } + oldDir = Vector(oldRot); + Mag = Incoming.Velocity Dot oldDir; + Incoming.Velocity = (Incoming.Velocity - (Mag * oldDir)) + (Mag * Vector(Incoming.Rotation)); + } + // End:0x62D + if(bReversesX) + { + Incoming.Velocity.X *= -1.0000000; + } + // End:0x672 + if(bReversesY) + { + Incoming.Velocity.Y *= -1.0000000; + } + // End:0x6B7 + if(bReversesZ) + { + Incoming.Velocity.Z *= -1.0000000; + } + } + Incoming.PostTeleport(self); + return true; + //return ReturnValue; +} + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + // End:0x22 + if(!bEnabled || Other == none) + { + return; + } + // End:0xA7 + if((CanTeleport(Other)) && !Other.PreTeleport(self)) + { + PendingTouch = Other.PendingTouch; + Other.PendingTouch = self; + } + //return; +} + +simulated event PostTouch(Actor Other) +{ + local Teleporter D, Dest[16]; + local int I; + + // End:0xFC + if((InStr(URL, "/") >= 0) || InStr(URL, "#") >= 0) + { + // End:0xF9 + if(((int(Role) == int(ROLE_Authority)) && Pawn(Other) != none) && Pawn(Other).IsHumanControlled()) + { + WorldInfo.Game.SendPlayer(PlayerController(Pawn(Other).Controller), URL); + } + } + else + { + // End:0x190 + foreach AllActors(Class'Engine.Teleporter', D) + { + // End:0x18F + if((string(D.Tag) ~= URL) && D != self) + { + Dest[I] = D; + I++; + // End:0x18F + if(I > 16) + { + // End:0x190 + break; + } + } + } + I = Rand(I); + // End:0x236 + if(Dest[I] != none) + { + // End:0x203 + if(Other.IsA('Pawn')) + { + Other.PlayTeleportEffect(true, true); + } + Dest[I].Accept(Other, self); + } + } + //return; +} + +event Actor SpecialHandling(Pawn Other) +{ + // End:0x116 + if(((bEnabled && Other.Controller.RouteCache.Length > 1) && Teleporter(Other.Controller.RouteCache[1]) != none) && string(Other.Controller.RouteCache[1].Tag) ~= URL) + { + // End:0x114 + if(IsOverlapping(Other)) + { + PostTouch(Other); + } + return self; + } + return none; + //return ReturnValue; +} + +defaultproperties +{ + bChangesYaw=true + bEnabled=true + // Reference: CylinderComponent'Engine.Default__Teleporter.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + CollisionHeight=80.0000000 + CollisionRadius=40.0000000 + ReplacementPrimitive=none + CollideActors=true + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + RemoteRole=ENetRole.ROLE_SimulatedProxy + bCollideActors=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/Terrain.uc b/exported/Engine/Classes/Terrain.uc new file mode 100755 index 00000000..b0d5c3ca --- /dev/null +++ b/exported/Engine/Classes/Terrain.uc @@ -0,0 +1,233 @@ +class Terrain extends Info + native(Terrain) + placeable + hidecategories(Navigation); + +struct TerrainHeight +{ +}; + +struct TerrainInfoData +{ +}; + +struct TerrainWeightedMaterial +{ +}; + +struct TerrainLayer +{ + var() string Name; + var() TerrainLayerSetup Setup; + var int AlphaMapIndex; + var() bool Highlighted; + var() bool WireframeHighlighted; + var() bool Hidden; + var() Color HighlightColor; + var() Color WireframeColor; + var int MinX; + var int MinY; + var int MaxX; + var int MaxY; + + structdefaultproperties + { + Name="" + Setup=none + AlphaMapIndex=-1 + Highlighted=false + WireframeHighlighted=false + Hidden=false + HighlightColor=(R=255,G=255,B=255,A=0) + WireframeColor=(R=0,G=0,B=0,A=0) + MinX=0 + MinY=0 + MaxX=0 + MaxY=0 + } +}; + +struct AlphaMap +{ +}; + +struct TerrainDecorationInstance +{ + var export editinline PrimitiveComponent Component; + var float X; + var float Y; + var float Scale; + var int Yaw; + + structdefaultproperties + { + Component=none + X=0.0000000 + Y=0.0000000 + Scale=0.0000000 + Yaw=0 + } +}; + +struct TerrainDecoration +{ + var() editinline PrimitiveComponentFactory Factory; + var() float MinScale; + var() float MaxScale; + var() float Density; + var() float SlopeRotationBlend; + var() int RandSeed; + var array Instances; + + structdefaultproperties + { + Factory=none + MinScale=1.0000000 + MaxScale=1.0000000 + Density=0.0100000 + SlopeRotationBlend=0.0000000 + RandSeed=0 + Instances=none + } +}; + +struct TerrainDecoLayer +{ + var() string Name; + var() array Decorations; + var int AlphaMapIndex; + + structdefaultproperties + { + Name="" + Decorations=none + AlphaMapIndex=-1 + } +}; + +struct TerrainMaterialResource +{ +}; + +struct native CachedTerrainMaterialArray +{ + var native const array CachedMaterials; +}; + +struct SelectedTerrainVertex +{ + var int X; + var int Y; + var int Weight; + + structdefaultproperties + { + X=0 + Y=0 + Weight=0 + } +}; + +var private native const array Heights; +var private native const array InfoData; +var() const array Layers; +var() int NormalMapLayer; +var() const array DecoLayers; +var native const array AlphaMaps; +var nontransactional const export editinline array TerrainComponents; +var const int NumSectionsX; +var const int NumSectionsY; +var private native const array WeightedMaterials; +var private native const array WeightedTextureMaps; +var() int MaxTesselationLevel; +var() int MinTessellationLevel; +var() float TesselationDistanceScale; +var() float TessellationCheckDistance; +var(Collision) int CollisionTesselationLevel; +var native const CachedTerrainMaterialArray CachedTerrainMaterials[2]; +var const int NumVerticesX; +var const int NumVerticesY; +var() int NumPatchesX; +var() int NumPatchesY; +var() int MaxComponentSize; +var(Lighting) int StaticLightingResolution; +var(Lighting) bool bIsOverridingLightResolution; +var(Lighting) bool bBilinearFilterLightmapGeneration; +var(Lighting) bool bCastShadow; +var(Lighting) const bool bForceDirectLightMap; +var(Lighting) const bool bCastDynamicShadow; +var(Lighting) bool bEnableSpecular; +var(Collision) const bool bBlockRigidBody; +var(Collision) const bool bAllowRigidBodyUnderneath; +var(Lighting) const bool bAcceptsDynamicLights; +var() bool bMorphingEnabled; +var() bool bMorphingGradientsEnabled; +var bool bLocked; +var bool bHeightmapLocked; +var bool bShowingCollision; +var() bool bUseWorldOriginTextureUVs; +var() bool bShowWireframe; +var(Physics) const PhysicalMaterial TerrainPhysMaterialOverride; +var(Lighting) const LightingChannelContainer LightingChannels; +var(Lightmass) LightmassPrimitiveSettings LightmassSettings; +var native const Pointer ReleaseResourcesFence; +var() transient int EditorTessellationLevel; +var transient array SelectedVertices; +var() Color WireframeColor; + +// Export UTerrain::execCalcLayerBounds(FFrame&, void* const) +native final function CalcLayerBounds(); + +simulated event PostBeginPlay() +{ + local int I; + + CalcLayerBounds(); + I = 0; + J0x15: + + // End:0xA3 [Loop If] + if(I < Layers.Length) + { + // End:0x95 + if(Layers[I].Setup != none) + { + Layers[I].Setup.PostBeginPlay(); + } + I++; + // [Loop Continue] + goto J0x15; + } + //return; +} + +defaultproperties +{ + NormalMapLayer=-1 + MaxTesselationLevel=4 + MinTessellationLevel=1 + TesselationDistanceScale=1.0000000 + TessellationCheckDistance=-1.0000000 + CollisionTesselationLevel=1 + NumPatchesX=1 + NumPatchesY=1 + MaxComponentSize=16 + StaticLightingResolution=4 + bBilinearFilterLightmapGeneration=true + bCastShadow=true + bForceDirectLightMap=true + bCastDynamicShadow=true + bBlockRigidBody=true + bAcceptsDynamicLights=true + LightingChannels=(bInitialized=true,BSP=false,Static=true,Dynamic=false,CompositeDynamic=false,Skybox=false,Unnamed_1=false,Unnamed_2=false,Unnamed_3=false,Unnamed_4=false,Unnamed_5=false,Unnamed_6=false,Cinematic_1=false,Cinematic_2=false,Cinematic_3=false,Cinematic_4=false,Cinematic_5=false,Cinematic_6=false,Cinematic_7=false,Cinematic_8=false,Cinematic_9=false,Cinematic_10=false,Gameplay_1=false,Gameplay_2=false,Gameplay_3=false,Gameplay_4=false,Crowd=false) + LightmassSettings=(bUseTwoSidedLighting=false,bShadowIndirectOnly=false,bUseEmissiveForStaticLighting=false,EmissiveLightFalloffExponent=2.0000000,EmissiveLightExplicitInfluenceRadius=0.0000000,EmissiveBoost=1.0000000,DiffuseBoost=1.0000000,SpecularBoost=1.0000000,FullyOccludedSamplesFraction=1.0000000) + WireframeColor=(R=0,G=255,B=255,A=0) + DrawScale3D=(X=256.0000000,Y=256.0000000,Z=256.0000000) + bStatic=true + bHidden=false + bNoDelete=true + bWorldGeometry=true + bCollideActors=true + bBlockActors=true + bEdShouldSnap=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/TerrainComponent.uc b/exported/Engine/Classes/TerrainComponent.uc new file mode 100755 index 00000000..983377f6 --- /dev/null +++ b/exported/Engine/Classes/TerrainComponent.uc @@ -0,0 +1,67 @@ +class TerrainComponent extends PrimitiveComponent + native(Terrain); + +struct TerrainPatchBounds +{ + var float MinHeight; + var float MaxHeight; + var float MaxDisplacement; + + structdefaultproperties + { + MinHeight=0.0000000 + MaxHeight=0.0000000 + MaxDisplacement=0.0000000 + } +}; + +struct TerrainMaterialMask +{ + var QWord BitMask; + var int NumBits; + + structdefaultproperties + { + BitMask=() + NumBits=0 + } +}; + +struct TerrainBVTree +{ + var private native const array Nodes; +}; + +var private const array ShadowMaps; +var const array IrrelevantLights; +var native const transient Pointer TerrainObject; +var const int SectionBaseX; +var const int SectionBaseY; +var const int SectionSizeX; +var const int SectionSizeY; +var const int TrueSectionSizeX; +var const int TrueSectionSizeY; +var private native const LightMapRef LightMap; +var private native const transient array PatchBounds; +var private native const transient array BatchMaterials; +var private native const transient int FullBatch; +var private native const transient TerrainBVTree BVTree; +var private native const transient array CollisionVertices; +var native const Pointer RBHeightfield; +var private const bool bDisplayCollisionLevel; + +defaultproperties +{ + ReplacementPrimitive=none + bAllowCullDistanceVolume=false + bUseAsOccluder=true + bAcceptsStaticDecals=true + CastShadow=true + bAcceptsLights=true + bUsePrecomputedShadows=true + CollideActors=true + BlockActors=true + BlockZeroExtent=true + BlockNonZeroExtent=true + BlockRigidBody=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/TerrainLayerSetup.uc b/exported/Engine/Classes/TerrainLayerSetup.uc new file mode 100755 index 00000000..8248dca1 --- /dev/null +++ b/exported/Engine/Classes/TerrainLayerSetup.uc @@ -0,0 +1,53 @@ +class TerrainLayerSetup extends Object + native(Terrain) + collapsecategories + hidecategories(Object); + +struct FilterLimit +{ + var() bool Enabled; + var() float Base; + var() float NoiseScale; + var() float NoiseAmount; + + structdefaultproperties + { + Enabled=false + Base=0.0000000 + NoiseScale=0.0000000 + NoiseAmount=0.0000000 + } +}; + +struct TerrainFilteredMaterial +{ + var() bool UseNoise; + var() float NoiseScale; + var() float NoisePercent; + var() FilterLimit MinHeight; + var() FilterLimit MaxHeight; + var() FilterLimit MinSlope; + var() FilterLimit MaxSlope; + var() float Alpha; + var() TerrainMaterial Material; + + structdefaultproperties + { + UseNoise=false + NoiseScale=0.0000000 + NoisePercent=0.0000000 + MinHeight=(Enabled=false,Base=0.0000000,NoiseScale=0.0000000,NoiseAmount=0.0000000) + MaxHeight=(Enabled=false,Base=0.0000000,NoiseScale=0.0000000,NoiseAmount=0.0000000) + MinSlope=(Enabled=false,Base=0.0000000,NoiseScale=0.0000000,NoiseAmount=0.0000000) + MaxSlope=(Enabled=false,Base=0.0000000,NoiseScale=0.0000000,NoiseAmount=0.0000000) + Alpha=1.0000000 + Material=none + } +}; + +var() const array Materials; + +simulated function PostBeginPlay() +{ + //return; +} diff --git a/exported/Engine/Classes/TerrainMaterial.uc b/exported/Engine/Classes/TerrainMaterial.uc new file mode 100755 index 00000000..6e032c8d --- /dev/null +++ b/exported/Engine/Classes/TerrainMaterial.uc @@ -0,0 +1,28 @@ +class TerrainMaterial extends Object + native(Terrain) + hidecategories(Object); + +enum ETerrainMappingType +{ + TMT_Auto, // 0 + TMT_XY, // 1 + TMT_XZ, // 2 + TMT_YZ, // 3 + TMT_MAX // 4 +}; + +var Matrix LocalToMapping; +var(Material) TerrainMaterial.ETerrainMappingType MappingType; +var(Material) float MappingScale; +var(Material) float MappingRotation; +var(Material) float MappingPanU; +var(Material) float MappingPanV; +var(Material) MaterialInterface Material; +var(Displacement) Texture2D DisplacementMap; +var(Displacement) float DisplacementScale; + +defaultproperties +{ + MappingScale=4.0000000 + DisplacementScale=0.2500000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/TerrainWeightMapTexture.uc b/exported/Engine/Classes/TerrainWeightMapTexture.uc new file mode 100755 index 00000000..9a84b1be --- /dev/null +++ b/exported/Engine/Classes/TerrainWeightMapTexture.uc @@ -0,0 +1,10 @@ +class TerrainWeightMapTexture extends Texture2D + native(Terrain) + hidecategories(Object,Object); + +struct TerrainWeightedMaterial +{ +}; + +var const Terrain ParentTerrain; +var private native const array WeightedMaterials; diff --git a/exported/Engine/Classes/TestSplittingVolume.uc b/exported/Engine/Classes/TestSplittingVolume.uc new file mode 100755 index 00000000..9c31581f --- /dev/null +++ b/exported/Engine/Classes/TestSplittingVolume.uc @@ -0,0 +1,21 @@ +class TestSplittingVolume extends Volume + native(AI) + placeable + hidecategories(Navigation,Object,Movement,Display) + implements(Interface_NavMeshPathObject); + +var private native const noexport Pointer VfTable_IInterface_NavMeshPathObject; + +defaultproperties +{ + // Reference: BrushComponent'Engine.Default__TestSplittingVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Texture.uc b/exported/Engine/Classes/Texture.uc new file mode 100755 index 00000000..a30998b2 --- /dev/null +++ b/exported/Engine/Classes/Texture.uc @@ -0,0 +1,265 @@ +class Texture extends Surface + abstract + native(Texture); + +enum TextureCompressionSettings +{ + TC_Default, // 0 + TC_Normalmap, // 1 + TC_Displacementmap, // 2 + TC_NormalmapAlpha, // 3 + TC_Grayscale, // 4 + TC_HighDynamicRange, // 5 + TC_OneBitAlpha, // 6 + TC_NormalmapUncompressed, // 7 + TC_NormalmapBC5, // 8 + TC_OneBitMonochrome, // 9 + TC_SimpleLightmapModification, // 10 + TC_VectorDisplacementmap, // 11 + TC_MAX // 12 +}; + +enum EPixelFormat +{ + PF_Unknown, // 0 + PF_A32B32G32R32F, // 1 + PF_A8R8G8B8, // 2 + PF_G8, // 3 + PF_G16, // 4 + PF_DXT1, // 5 + PF_DXT3, // 6 + PF_DXT5, // 7 + PF_UYVY, // 8 + PF_FloatRGB, // 9 + PF_FloatRGBA, // 10 + PF_DepthStencil, // 11 + PF_ShadowDepth, // 12 + PF_FilteredShadowDepth, // 13 + PF_R32F, // 14 + PF_G16R16, // 15 + PF_G16R16F, // 16 + PF_G16R16F_FILTER, // 17 + PF_G32R32F, // 18 + PF_A2B10G10R10, // 19 + PF_A16B16G16R16, // 20 + PF_D24, // 21 + PF_R16F, // 22 + PF_R16F_FILTER, // 23 + PF_BC5, // 24 + PF_V8U8, // 25 + PF_A1, // 26 + PF_FloatR11G11B10, // 27 + PF_A4R4G4B4, // 28 + PF_G8R8, // 29 + EPixelFormat_MAX // 30 +}; + +enum TextureFilter +{ + TF_Nearest, // 0 + TF_Linear, // 1 + TF_MAX // 2 +}; + +enum TextureAddress +{ + TA_Wrap, // 0 + TA_Clamp, // 1 + TA_Mirror, // 2 + TA_MAX // 3 +}; + +enum TextureGroup +{ + TEXTUREGROUP_World, // 0 + TEXTUREGROUP_WorldNormalMap, // 1 + TEXTUREGROUP_WorldSpecular, // 2 + TEXTUREGROUP_Character, // 3 + TEXTUREGROUP_CharacterNormalMap,// 4 + TEXTUREGROUP_CharacterSpecular, // 5 + TEXTUREGROUP_Weapon, // 6 + TEXTUREGROUP_WeaponNormalMap, // 7 + TEXTUREGROUP_WeaponSpecular, // 8 + TEXTUREGROUP_Vehicle, // 9 + TEXTUREGROUP_VehicleNormalMap, // 10 + TEXTUREGROUP_VehicleSpecular, // 11 + TEXTUREGROUP_Cinematic, // 12 + TEXTUREGROUP_Effects, // 13 + TEXTUREGROUP_EffectsNotFiltered,// 14 + TEXTUREGROUP_Skybox, // 15 + TEXTUREGROUP_UI, // 16 + TEXTUREGROUP_Lightmap, // 17 + TEXTUREGROUP_RenderTarget, // 18 + TEXTUREGROUP_MobileFlattened, // 19 + TEXTUREGROUP_ProcBuilding_Face, // 20 + TEXTUREGROUP_ProcBuilding_LightMap,// 21 + TEXTUREGROUP_Shadowmap, // 22 + TEXTUREGROUP_ColorLookupTable, // 23 + TEXTUREGROUP_Terrain_Heightmap, // 24 + TEXTUREGROUP_Terrain_Weightmap, // 25 + TEXTUREGROUP_ImageBasedReflection,// 26 + TEXTUREGROUP_Bokeh, // 27 + TEXTUREGROUP_NPC, // 28 + TEXTUREGROUP_NPCNormalMap, // 29 + TEXTUREGROUP_NPCSpecular, // 30 + TEXTUREGROUP_WorldDetail, // 31 + TEXTUREGROUP_MAX // 32 +}; + +enum TextureMipGenSettings +{ + TMGS_FromTextureGroup, // 0 + TMGS_SimpleAverage, // 1 + TMGS_Sharpen0, // 2 + TMGS_Sharpen1, // 3 + TMGS_Sharpen2, // 4 + TMGS_Sharpen3, // 5 + TMGS_Sharpen4, // 6 + TMGS_Sharpen5, // 7 + TMGS_Sharpen6, // 8 + TMGS_Sharpen7, // 9 + TMGS_Sharpen8, // 10 + TMGS_Sharpen9, // 11 + TMGS_Sharpen10, // 12 + TMGS_NoMipmaps, // 13 + TMGS_LeaveExistingMips, // 14 + TMGS_Blur1, // 15 + TMGS_Blur2, // 16 + TMGS_Blur3, // 17 + TMGS_Blur4, // 18 + TMGS_Blur5, // 19 + TMGS_MAX // 20 +}; + +enum ETextureMipCount +{ + TMC_ResidentMips, // 0 + TMC_AllMips, // 1 + TMC_AllMipsBiased, // 2 + TMC_MAX // 3 +}; + +struct native TextureGroupContainer +{ + var() const bool TEXTUREGROUP_World; + var() const bool TEXTUREGROUP_WorldNormalMap; + var() const bool TEXTUREGROUP_WorldSpecular; + var() const bool TEXTUREGROUP_Character; + var() const bool TEXTUREGROUP_CharacterNormalMap; + var() const bool TEXTUREGROUP_CharacterSpecular; + var() const bool TEXTUREGROUP_Weapon; + var() const bool TEXTUREGROUP_WeaponNormalMap; + var() const bool TEXTUREGROUP_WeaponSpecular; + var() const bool TEXTUREGROUP_Vehicle; + var() const bool TEXTUREGROUP_VehicleNormalMap; + var() const bool TEXTUREGROUP_VehicleSpecular; + var() const bool TEXTUREGROUP_Cinematic; + var() const bool TEXTUREGROUP_Effects; + var() const bool TEXTUREGROUP_EffectsNotFiltered; + var() const bool TEXTUREGROUP_Skybox; + var() const bool TEXTUREGROUP_UI; + var() const bool TEXTUREGROUP_Lightmap; + var() const bool TEXTUREGROUP_RenderTarget; + var() const bool TEXTUREGROUP_MobileFlattened; + var() const bool TEXTUREGROUP_ProcBuilding_Face; + var() const bool TEXTUREGROUP_ProcBuilding_LightMap; + var() const bool TEXTUREGROUP_Shadowmap; + var() const bool TEXTUREGROUP_ColorLookupTable; + var() const bool TEXTUREGROUP_Terrain_Heightmap; + var() const bool TEXTUREGROUP_Terrain_Weightmap; + var() const bool TEXTUREGROUP_ImageBasedReflection; + var() const bool TEXTUREGROUP_Bokeh; + var() const bool TEXTUREGROUP_NPC; + var() const bool TEXTUREGROUP_NPCNormalMap; + var() const bool TEXTUREGROUP_NPCSpecular; + var() const bool TEXTUREGROUP_WorldDetail; + + structdefaultproperties + { + TEXTUREGROUP_World=false + TEXTUREGROUP_WorldNormalMap=false + TEXTUREGROUP_WorldSpecular=false + TEXTUREGROUP_Character=false + TEXTUREGROUP_CharacterNormalMap=false + TEXTUREGROUP_CharacterSpecular=false + TEXTUREGROUP_Weapon=false + TEXTUREGROUP_WeaponNormalMap=false + TEXTUREGROUP_WeaponSpecular=false + TEXTUREGROUP_Vehicle=false + TEXTUREGROUP_VehicleNormalMap=false + TEXTUREGROUP_VehicleSpecular=false + TEXTUREGROUP_Cinematic=false + TEXTUREGROUP_Effects=false + TEXTUREGROUP_EffectsNotFiltered=false + TEXTUREGROUP_Skybox=false + TEXTUREGROUP_UI=false + TEXTUREGROUP_Lightmap=false + TEXTUREGROUP_RenderTarget=false + TEXTUREGROUP_MobileFlattened=false + TEXTUREGROUP_ProcBuilding_Face=false + TEXTUREGROUP_ProcBuilding_LightMap=false + TEXTUREGROUP_Shadowmap=false + TEXTUREGROUP_ColorLookupTable=false + TEXTUREGROUP_Terrain_Heightmap=false + TEXTUREGROUP_Terrain_Weightmap=false + TEXTUREGROUP_ImageBasedReflection=false + TEXTUREGROUP_Bokeh=false + TEXTUREGROUP_NPC=false + TEXTUREGROUP_NPCNormalMap=false + TEXTUREGROUP_NPCSpecular=false + TEXTUREGROUP_WorldDetail=false + } +}; + +var() bool SRGB; +var bool RGBE; +var bool bIsSourceArtUncompressed; +var() bool CompressionNoAlpha; +var bool CompressionNone; +var deprecated bool CompressionNoMipmaps; +var() bool CompressionFullDynamicRange; +var() bool DeferCompression; +var() bool NeverStream; +var() bool bDitherMipMapAlpha; +var() bool bPreserveBorderR; +var() bool bPreserveBorderG; +var() bool bPreserveBorderB; +var() bool bPreserveBorderA; +var const bool bNoTiling; +var(Mobile) bool bForcePVRTC4; +var private const transient bool bAsyncResourceReleaseHasBeenStarted; +var private const transient bool bUseCinematicMipLevels; +var() float UnpackMin[4]; +var() float UnpackMax[4]; +var native const UntypedBulkData_Mirror SourceArt; +var() Texture.TextureCompressionSettings CompressionSettings; +var() Texture.TextureFilter Filter; +var() Texture.TextureGroup LODGroup; +var private transient Texture.TextureGroup CachedLODGroup; +var() Texture.TextureMipGenSettings MipGenSettings; +var() int LODBias; +var transient int CachedCombinedLODBias; +var() int NumCinematicMipLevels; +var native const Pointer Resource; +var() float AdjustBrightness; +var() float AdjustBrightnessCurve; +var() float AdjustVibrance; +var() float AdjustSaturation; +var() float AdjustRGBCurve; +var() float AdjustHue; +var const int InternalFormatLODBias; +var int RequiredCreationFlags; + +defaultproperties +{ + SRGB=true + UnpackMax[0]=1.0000000 + UnpackMax[1]=1.0000000 + UnpackMax[2]=1.0000000 + UnpackMax[3]=1.0000000 + Filter=TextureFilter.TF_Linear + AdjustBrightness=1.0000000 + AdjustBrightnessCurve=1.0000000 + AdjustSaturation=1.0000000 + AdjustRGBCurve=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Texture2D.uc b/exported/Engine/Classes/Texture2D.uc new file mode 100755 index 00000000..730c5d5c --- /dev/null +++ b/exported/Engine/Classes/Texture2D.uc @@ -0,0 +1,65 @@ +class Texture2D extends Texture + native(Texture) + hidecategories(Object); + +struct native Texture2DMipMap +{ + var native UntypedBulkData_Mirror Data; + var native int SizeX; + var native int SizeY; + var native name FileNameOverride; +}; + +struct TextureLinkedListMirror +{ + var native const Pointer Element; + var native const Pointer Next; + var native const Pointer PrevLink; +}; + +var native const IndirectArray_Mirror Mips; +var native const IndirectArray_Mirror CachedPVRTCMips; +var native const IndirectArray_Mirror CachedATITCMips; +var native const IndirectArray_Mirror CachedETCMips; +var native const int CachedFlashMipsMaxResolution; +var native const UntypedBulkData_Mirror CachedFlashMips; +var const int SizeX; +var const int SizeY; +var const int OriginalSizeX; +var const int OriginalSizeY; +var const Texture.EPixelFormat Format; +var() Texture.TextureAddress AddressX; +var() Texture.TextureAddress AddressY; +var() const bool bIsEditorOnly; +var const transient bool bIsStreamable; +var const transient bool bHasCancelationPending; +var const transient bool bHasBeenLoadedFromPersistentArchive; +var transient bool bForceMiplevelsToBeResident; +var() const bool bGlobalForceMipLevelsToBeResident; +var() const bool bIsCompositingSource; +var bool bHasBeenPaintedInEditor; +var private transient float ForceMipLevelsToBeResidentTimestamp; +var name TextureFileCacheName; +var native const Guid TextureFileCacheGuid; +var const transient int RequestedMips; +var const transient int ResidentMips; +var() int MipsToRemoveOnCompress; +var native const transient ThreadSafeCounter PendingMipChangeRequestStatus; +var private array SystemMemoryData; +var private noimport duplicatetransient native const TextureLinkedListMirror StreamableTexturesLink; +var private duplicatetransient const transient int StreamingIndex; +var const int MipTailBaseIdx; +var private native const transient Pointer ResourceMem; +var private const int FirstResourceMemMip; +var private native const transient float Timer; + +// Export UTexture2D::execSetForceMipLevelsToBeResident(FFrame&, void* const) +native final function SetForceMipLevelsToBeResident(float Seconds, optional int CinematicTextureGroups = 0); + +// Export UTexture2D::execCreate(FFrame&, void* const) +native static final function Texture2D Create(int InSizeX, int InSizeY, optional Texture.EPixelFormat InFormat = 2); + +defaultproperties +{ + StreamingIndex=-1 +} \ No newline at end of file diff --git a/exported/Engine/Classes/Texture2DComposite.uc b/exported/Engine/Classes/Texture2DComposite.uc new file mode 100755 index 00000000..4564935b --- /dev/null +++ b/exported/Engine/Classes/Texture2DComposite.uc @@ -0,0 +1,44 @@ +class Texture2DComposite extends Texture + native(Texture) + hidecategories(Object); + +struct native SourceTexture2DRegion +{ + var int OffsetX; + var int OffsetY; + var int SizeX; + var int SizeY; + var int DestOffsetX; + var int DestOffsetY; + var Texture2D Texture2D; + + structdefaultproperties + { + OffsetX=0 + OffsetY=0 + SizeX=0 + SizeY=0 + DestOffsetX=0 + DestOffsetY=0 + Texture2D=none + } +}; + +var array SourceRegions; +var int MaxTextureSize; +var int DestSizeX; +var int DestSizeY; + +// Export UTexture2DComposite::execSourceTexturesFullyStreamedIn(FFrame&, void* const) +native final function bool SourceTexturesFullyStreamedIn(); + +// Export UTexture2DComposite::execUpdateCompositeTexture(FFrame&, void* const) +native final function UpdateCompositeTexture(int NumMipsToGenerate); + +// Export UTexture2DComposite::execResetSourceRegions(FFrame&, void* const) +native final function ResetSourceRegions(); + +defaultproperties +{ + NeverStream=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/Texture2DDynamic.uc b/exported/Engine/Classes/Texture2DDynamic.uc new file mode 100755 index 00000000..f5c50b49 --- /dev/null +++ b/exported/Engine/Classes/Texture2DDynamic.uc @@ -0,0 +1,29 @@ +class Texture2DDynamic extends Texture + native(Texture) + hidecategories(Object); + +var native transient int SizeX; +var native transient int SizeY; +var native transient Texture.EPixelFormat Format; +var native transient int NumMips; +var native transient bool bIsResolveTarget; + +// Export UTexture2DDynamic::execInit(FFrame&, void* const) +native final function Init(int InSizeX, int InSizeY, optional Texture.EPixelFormat InFormat = 2, optional bool InIsResolveTarget = false); + +// Export UTexture2DDynamic::execUpdateMip(FFrame&, void* const) +native function UpdateMip(int MipIdx, const out array MipData); + +// Export UTexture2DDynamic::execUpdateMipFromJPEG(FFrame&, void* const) +native function UpdateMipFromJPEG(int MipIdx, const out array MipData); + +// Export UTexture2DDynamic::execUpdateMipFromPNG(FFrame&, void* const) +native function UpdateMipFromPNG(int MipIdx, const out array MipData); + +// Export UTexture2DDynamic::execCreate(FFrame&, void* const) +native static final function Texture2DDynamic Create(int InSizeX, int InSizeY, optional Texture.EPixelFormat InFormat = 2, optional bool InIsResolveTarget = false); + +defaultproperties +{ + NeverStream=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/TextureCube.uc b/exported/Engine/Classes/TextureCube.uc new file mode 100755 index 00000000..69888be1 --- /dev/null +++ b/exported/Engine/Classes/TextureCube.uc @@ -0,0 +1,15 @@ +class TextureCube extends Texture + native(Texture) + hidecategories(Object); + +var const transient int SizeX; +var const transient int SizeY; +var const transient Texture.EPixelFormat Format; +var const transient int NumMips; +var const transient bool bIsCubemapValid; +var() const Texture2D FacePosX; +var() const Texture2D FaceNegX; +var() const Texture2D FacePosY; +var() const Texture2D FaceNegY; +var() const Texture2D FacePosZ; +var() const Texture2D FaceNegZ; diff --git a/exported/Engine/Classes/TextureFlipBook.uc b/exported/Engine/Classes/TextureFlipBook.uc new file mode 100755 index 00000000..27a2c4c0 --- /dev/null +++ b/exported/Engine/Classes/TextureFlipBook.uc @@ -0,0 +1,62 @@ +class TextureFlipBook extends Texture2D + native(Texture) + forcescriptorder(true) + hidecategories(Object,Object); + +enum TextureFlipBookMethod +{ + TFBM_UL_ROW, // 0 + TFBM_UL_COL, // 1 + TFBM_UR_ROW, // 2 + TFBM_UR_COL, // 3 + TFBM_LL_ROW, // 4 + TFBM_LL_COL, // 5 + TFBM_LR_ROW, // 6 + TFBM_LR_COL, // 7 + TFBM_RANDOM, // 8 + TFBM_MAX // 9 +}; + +var private native const noexport Pointer VfTable_FTickableObject; +var const transient float TimeIntoMovie; +var const transient float TimeSinceLastFrame; +var const transient float HorizontalScale; +var const transient float VerticalScale; +var const bool bPaused; +var const bool bStopped; +var(FlipBook) bool bLooping; +var(FlipBook) bool bAutoPlay; +var(FlipBook) int HorizontalImages; +var(FlipBook) int VerticalImages; +var(FlipBook) TextureFlipBook.TextureFlipBookMethod FBMethod; +var(FlipBook) float FrameRate; +var private float FrameTime; +var const transient int CurrentRow; +var const transient int CurrentColumn; +var const transient float RenderOffsetU; +var const transient float RenderOffsetV; +var native const Pointer ReleaseResourcesFence; + +// Export UTextureFlipBook::execPlay(FFrame&, void* const) +native function Play(); + +// Export UTextureFlipBook::execPause(FFrame&, void* const) +native function Pause(); + +// Export UTextureFlipBook::execStop(FFrame&, void* const) +native function Stop(); + +// Export UTextureFlipBook::execSetCurrentFrame(FFrame&, void* const) +native function SetCurrentFrame(int Row, int Col); + +defaultproperties +{ + bLooping=true + bAutoPlay=true + HorizontalImages=1 + VerticalImages=1 + FrameRate=4.0000000 + FrameTime=0.2500000 + AddressX=TextureAddress.TA_Clamp + AddressY=TextureAddress.TA_Clamp +} \ No newline at end of file diff --git a/exported/Engine/Classes/TextureMovie.uc b/exported/Engine/Classes/TextureMovie.uc new file mode 100755 index 00000000..2d11250f --- /dev/null +++ b/exported/Engine/Classes/TextureMovie.uc @@ -0,0 +1,44 @@ +class TextureMovie extends Texture + native(Texture) + hidecategories(Object); + +enum EMovieStreamSource +{ + MovieStream_File, // 0 + MovieStream_Memory, // 1 + MovieStream_MAX // 2 +}; + +var const int SizeX; +var const int SizeY; +var const Texture.EPixelFormat Format; +var() Texture.TextureAddress AddressX; +var() Texture.TextureAddress AddressY; +var() TextureMovie.EMovieStreamSource MovieStreamSource; +var const Class DecoderClass; +var const transient CodecMovie Decoder; +var const transient bool Paused; +var const transient bool Stopped; +var() bool Looping; +var() bool ResetOnLastFrame; +var() bool AutoPlay; +var native const UntypedBulkData_Mirror Data; +var native const transient Pointer ReleaseCodecFence; + +// Export UTextureMovie::execPlay(FFrame&, void* const) +native function Play(); + +// Export UTextureMovie::execPause(FFrame&, void* const) +native function Pause(); + +// Export UTextureMovie::execStop(FFrame&, void* const) +native function Stop(); + +defaultproperties +{ + MovieStreamSource=EMovieStreamSource.MovieStream_Memory + DecoderClass=Class'Engine.CodecMovieFallback' + Looping=true + AutoPlay=true + NeverStream=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/TextureRenderTarget.uc b/exported/Engine/Classes/TextureRenderTarget.uc new file mode 100755 index 00000000..f943cdf3 --- /dev/null +++ b/exported/Engine/Classes/TextureRenderTarget.uc @@ -0,0 +1,16 @@ +class TextureRenderTarget extends Texture + abstract + native(Texture); + +var transient bool bUpdateImmediate; +var() bool bNeedsTwoCopies; +var() bool bRenderOnce; +var() float TargetGamma; + +defaultproperties +{ + bNeedsTwoCopies=true + CompressionNone=true + NeverStream=true + LODGroup=TextureGroup.TEXTUREGROUP_RenderTarget +} \ No newline at end of file diff --git a/exported/Engine/Classes/TextureRenderTarget2D.uc b/exported/Engine/Classes/TextureRenderTarget2D.uc new file mode 100755 index 00000000..13de9528 --- /dev/null +++ b/exported/Engine/Classes/TextureRenderTarget2D.uc @@ -0,0 +1,20 @@ +class TextureRenderTarget2D extends TextureRenderTarget + native(Texture) + hidecategories(Object,Texture); + +var() const int SizeX; +var() const int SizeY; +var const Texture.EPixelFormat Format; +var() Texture.TextureAddress AddressX; +var() Texture.TextureAddress AddressY; +var private const LinearColor ClearColor; +var() const transient bool bForceLinearGamma; + +// Export UTextureRenderTarget2D::execCreate(FFrame&, void* const) +native static final function TextureRenderTarget2D Create(int InSizeX, int InSizeY, optional Texture.EPixelFormat InFormat = 2, optional LinearColor InClearColor, optional bool bOnlyRenderOnce); + +defaultproperties +{ + Format=EPixelFormat.PF_A8R8G8B8 + ClearColor=(R=0.0000000,G=1.0000000,B=0.0000000,A=1.0000000) +} \ No newline at end of file diff --git a/exported/Engine/Classes/TextureRenderTargetCube.uc b/exported/Engine/Classes/TextureRenderTargetCube.uc new file mode 100755 index 00000000..effae24c --- /dev/null +++ b/exported/Engine/Classes/TextureRenderTargetCube.uc @@ -0,0 +1,11 @@ +class TextureRenderTargetCube extends TextureRenderTarget + native(Texture) + hidecategories(Object,Texture); + +var() int SizeX; +var const Texture.EPixelFormat Format; + +defaultproperties +{ + Format=EPixelFormat.PF_A8R8G8B8 +} \ No newline at end of file diff --git a/exported/Engine/Classes/TgAnimTreeComment.uc b/exported/Engine/Classes/TgAnimTreeComment.uc new file mode 100755 index 00000000..18047a72 --- /dev/null +++ b/exported/Engine/Classes/TgAnimTreeComment.uc @@ -0,0 +1,5 @@ +class TgAnimTreeComment extends AnimObject + native(Anim) + hidecategories(Object); + +var() editoronly bool m_bDrawBox; diff --git a/exported/Engine/Classes/TgSilhouetteComponent.uc b/exported/Engine/Classes/TgSilhouetteComponent.uc new file mode 100755 index 00000000..07c7cd9d --- /dev/null +++ b/exported/Engine/Classes/TgSilhouetteComponent.uc @@ -0,0 +1,44 @@ +class TgSilhouetteComponent extends PrimitiveComponent + native + hidecategories(Object); + +var() bool bEnabled; +var bool bUseFadeOutAlpha; +var() bool bNegativeSilhouette; +var bool bUseThicknessMultiplier; +var() LinearColor SilhouetteColor; +var() float NearThickness; +var() float FarThickness; +var() float NearDistance; +var() float FarDistance; +var export editinline MeshComponent MeshComponent; +var float NearDistanceSq; +var float FarDistanceSq; +var() float FadeOutTime; +var float RemainingFadeOutTime; +var() int PrimitiveSceneInfoId; +var float ThicknessMultiplier; +var native const Pointer ReleaseResourcesFence; + +// Export UTgSilhouetteComponent::execSetEnabled(FFrame&, void* const) +native function SetEnabled(bool bInEnabled); + +// Export UTgSilhouetteComponent::execSetNegative(FFrame&, void* const) +native function SetNegative(bool bNegative); + +// Export UTgSilhouetteComponent::execSetDistance(FFrame&, void* const) +native function SetDistance(float InNearDistance, float InFarDistance); + +defaultproperties +{ + bUseFadeOutAlpha=true + SilhouetteColor=(R=0.8100000,G=0.0500000,B=0.0500000,A=1.0000000) + NearThickness=0.1000000 + FarThickness=0.2000000 + NearDistance=240.0000000 + FarDistance=1600.0000000 + FadeOutTime=0.3500000 + PrimitiveSceneInfoId=-1 + ReplacementPrimitive=none + DepthPriorityGroup=ESceneDepthPriorityGroup.SDPG_Middleground +} \ No newline at end of file diff --git a/exported/Engine/Classes/TranslationContext.uc b/exported/Engine/Classes/TranslationContext.uc new file mode 100755 index 00000000..534ef77d --- /dev/null +++ b/exported/Engine/Classes/TranslationContext.uc @@ -0,0 +1,7 @@ +class TranslationContext extends Object + native; + +var array TranslatorTags; + +// Export UTranslationContext::execRegisterTranslatorTag(FFrame&, void* const) +native function bool RegisterTranslatorTag(TranslatorTag InTagHandler); diff --git a/exported/Engine/Classes/TranslatorTag.uc b/exported/Engine/Classes/TranslatorTag.uc new file mode 100755 index 00000000..200549e7 --- /dev/null +++ b/exported/Engine/Classes/TranslatorTag.uc @@ -0,0 +1,7 @@ +class TranslatorTag extends Object + native; + +var name Tag; + +// Export UTranslatorTag::execTranslate(FFrame&, void* const) +native function string Translate(string InArgument); diff --git a/exported/Engine/Classes/Trigger.uc b/exported/Engine/Classes/Trigger.uc new file mode 100755 index 00000000..0d6f6f5e --- /dev/null +++ b/exported/Engine/Classes/Trigger.uc @@ -0,0 +1,118 @@ +class Trigger extends Actor + native + placeable + hidecategories(Navigation) + classgroup(Common); + +struct CheckpointRecord +{ + var bool bCollideActors; + + structdefaultproperties + { + bCollideActors=false + } +}; + +var() const editconst export editinline CylinderComponent CylinderComponent; +var bool bRecentlyTriggered; +var() float AITriggerDelay; + +simulated event PostBeginPlay() +{ + local editinline SpriteComponent ASpriteComp; + + // End:0x33 + foreach ComponentList(Class'Engine.SpriteComponent', ASpriteComp) + { + DetachComponent(ASpriteComp); + } + super.PostBeginPlay(); + //return; +} + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + // End:0x22 + if(FindEventsOfClass(Class'Engine.SeqEvent_Touch')) + { + NotifyTriggered(); + } + //return; +} + +function NotifyTriggered() +{ + bRecentlyTriggered = true; + SetTimer(AITriggerDelay, false, 'UnTrigger'); + //return; +} + +function UnTrigger() +{ + bRecentlyTriggered = false; + //return; +} + +simulated function bool StopsProjectile(Projectile P) +{ + return bBlockActors; + //return ReturnValue; +} + +function bool ShouldSaveForCheckpoint() +{ + return bStatic || bNoDelete; + //return ReturnValue; +} + +function CreateCheckpointRecord(out CheckpointRecord Record) +{ + Record.bCollideActors = bCollideActors; + //return; +} + +function ApplyCheckpointRecord(const out CheckpointRecord Record) +{ + SetCollision(Record.bCollideActors, bBlockActors, bIgnoreEncroachers); + ForceNetRelevant(); + //return; +} + +defaultproperties +{ + // Reference: CylinderComponent'Engine.Default__Trigger.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=40.0000000 + CollisionRadius=40.0000000 + bAlwaysRenderIfSelected=true + ReplacementPrimitive=none + CollideActors=true + end object + CylinderComponent=CollisionCylinder + AITriggerDelay=2.0000000 + // Reference: SpriteComponent'Engine.Default__Trigger.Sprite' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Sprite' + begin object name="Sprite" class=Engine.SpriteComponent + ReplacementPrimitive=none + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false + end object + Components[0]=Sprite + Components[1]=CollisionCylinder + CollisionType=ECollisionType.COLLIDE_TouchAllButWeapons + bHidden=true + bNoDelete=true + bCollideActors=true + CollisionComponent=CollisionCylinder + SupportedEvents[0]=Class'Engine.SeqEvent_Touch' + SupportedEvents[1]=Class'Engine.SeqEvent_Destroyed' + SupportedEvents[2]=Class'Engine.SeqEvent_TakeDamage' + SupportedEvents[3]=Class'Engine.SeqEvent_HitWall' + SupportedEvents[4]=Class'Engine.SeqEvent_AnimNotify' + SupportedEvents[5]=Class'Engine.SeqEvent_MobileTouch' + SupportedEvents[6]=Class'Engine.SeqEvent_Used' +} \ No newline at end of file diff --git a/exported/Engine/Classes/TriggerStreamingLevel.uc b/exported/Engine/Classes/TriggerStreamingLevel.uc new file mode 100755 index 00000000..6a485fed --- /dev/null +++ b/exported/Engine/Classes/TriggerStreamingLevel.uc @@ -0,0 +1,68 @@ +class TriggerStreamingLevel extends Trigger + placeable + hidecategories(Navigation); + +struct LevelStreamingData +{ + var() bool bShouldBeLoaded; + var() bool bShouldBeVisible; + var() bool bShouldBlockOnLoad; + var() LevelStreaming Level; + + structdefaultproperties + { + bShouldBeLoaded=false + bShouldBeVisible=false + bShouldBlockOnLoad=false + Level=none + } +}; + +var() editinline array Levels; + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local PlayerController PlayerCon; + local int Index; + + super.Touch(Other, OtherComp, HitLocation, HitNormal); + Index = 0; + J0x39: + + // End:0x1B3 [Loop If] + if(Index < Levels.Length) + { + // End:0x1A4 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PlayerCon) + { + Levels[Index].Level.bShouldBlockOnLoad = Levels[Index].bShouldBlockOnLoad; + PlayerCon.LevelStreamingStatusChanged(Levels[Index].Level, Levels[Index].bShouldBeLoaded, Levels[Index].bShouldBeVisible, Levels[Index].bShouldBlockOnLoad); + } + Index++; + // [Loop Continue] + goto J0x39; + } + //return; +} + +defaultproperties +{ + // Reference: CylinderComponent'Engine.Default__TriggerStreamingLevel.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Trigger.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + // Reference: SpriteComponent'Engine.Default__TriggerStreamingLevel.Sprite' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Sprite' + // Archetype: SpriteComponent'Engine.Default__Trigger.Sprite' + begin object name="Sprite" + ReplacementPrimitive=none + end object + Components[0]=Sprite + Components[1]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/TriggerVolume.uc b/exported/Engine/Classes/TriggerVolume.uc new file mode 100755 index 00000000..71ff1fec --- /dev/null +++ b/exported/Engine/Classes/TriggerVolume.uc @@ -0,0 +1,40 @@ +class TriggerVolume extends Volume + native + placeable + hidecategories(Navigation,Object,Movement,Display); + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x43 + if(BrushComponent != none) + { + bProjTarget = BrushComponent.BlockZeroExtent; + } + //return; +} + +simulated function bool StopsProjectile(Projectile P) +{ + return false; + //return ReturnValue; +} + +defaultproperties +{ + BrushColor=(R=100,G=255,B=100,A=255) + bColored=true + // Reference: BrushComponent'Engine.Default__TriggerVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bProjTarget=true + CollisionComponent=BrushComponent0 + SupportedEvents[0]=Class'Engine.SeqEvent_Touch' + SupportedEvents[1]=Class'Engine.SeqEvent_TakeDamage' +} \ No newline at end of file diff --git a/exported/Engine/Classes/Trigger_Dynamic.uc b/exported/Engine/Classes/Trigger_Dynamic.uc new file mode 100755 index 00000000..b92ea1da --- /dev/null +++ b/exported/Engine/Classes/Trigger_Dynamic.uc @@ -0,0 +1,25 @@ +class Trigger_Dynamic extends Trigger + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: CylinderComponent'Engine.Default__Trigger_Dynamic.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Trigger.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + // Reference: SpriteComponent'Engine.Default__Trigger_Dynamic.Sprite' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Sprite' + // Archetype: SpriteComponent'Engine.Default__Trigger.Sprite' + begin object name="Sprite" + ReplacementPrimitive=none + end object + Components[0]=Sprite + Components[1]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/Trigger_LOS.uc b/exported/Engine/Classes/Trigger_LOS.uc new file mode 100755 index 00000000..b5cd1344 --- /dev/null +++ b/exported/Engine/Classes/Trigger_LOS.uc @@ -0,0 +1,90 @@ +class Trigger_LOS extends Trigger + placeable + hidecategories(Navigation); + +var array PCsWithLOS; + +simulated event Tick(float DeltaTime) +{ + local array losEvents; + local SeqEvent_LOS Evt; + local PlayerController Player; + local int Idx; + local Vector CameraLoc; + local Rotator CameraRot; + local float cameraDist; + local array ActivateIndices; + + // End:0x379 + if(FindEventsOfClass(Class'Engine.SeqEvent_LOS', losEvents)) + { + // End:0x378 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', Player) + { + // End:0x377 + if(Player.Pawn != none) + { + Player.GetPlayerViewPoint(CameraLoc, CameraRot); + cameraDist = PointDistToLine(Location, Vector(CameraRot), CameraLoc); + Idx = 0; + J0xE6: + + // End:0x377 [Loop If] + if(Idx < losEvents.Length) + { + Evt = SeqEvent_LOS(losEvents[Idx]); + // End:0x2D0 + if((((cameraDist <= Evt.ScreenCenterDistance) && VSize(Player.Pawn.Location - Location) <= Evt.TriggerDistance) && (Normal(Location - CameraLoc) Dot Vector(CameraRot)) > 0.0000000) && !Evt.bCheckForObstructions || Player.LineOfSightTo(self, CameraLoc)) + { + ActivateIndices[0] = 0; + // End:0x2CD + if((PCsWithLOS.Find(Player) == -1) && losEvents[Idx].CheckActivate(self, Player.Pawn, false, ActivateIndices)) + { + PCsWithLOS.AddItem(Player); + } + } + else + { + // End:0x369 + if(PCsWithLOS.Find(Player) != -1) + { + ActivateIndices[0] = 1; + // End:0x369 + if(losEvents[Idx].CheckActivate(self, Player.Pawn, false, ActivateIndices)) + { + PCsWithLOS.RemoveItem(Player); + } + } + } + Idx++; + // [Loop Continue] + goto J0xE6; + } + } + } + } + //return; +} + +defaultproperties +{ + // Reference: CylinderComponent'Engine.Default__Trigger_LOS.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Trigger.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + // Reference: SpriteComponent'Engine.Default__Trigger_LOS.Sprite' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Sprite' + // Archetype: SpriteComponent'Engine.Default__Trigger.Sprite' + begin object name="Sprite" + ReplacementPrimitive=none + end object + Components[0]=Sprite + Components[1]=CollisionCylinder + CollisionComponent=CollisionCylinder + SupportedEvents[0]=Class'Engine.SeqEvent_LOS' +} \ No newline at end of file diff --git a/exported/Engine/Classes/Trigger_PawnsOnly.uc b/exported/Engine/Classes/Trigger_PawnsOnly.uc new file mode 100755 index 00000000..e5a4b043 --- /dev/null +++ b/exported/Engine/Classes/Trigger_PawnsOnly.uc @@ -0,0 +1,26 @@ +class Trigger_PawnsOnly extends Trigger + native + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: CylinderComponent'Engine.Default__Trigger_PawnsOnly.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Trigger.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + // Reference: SpriteComponent'Engine.Default__Trigger_PawnsOnly.Sprite' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Sprite' + // Archetype: SpriteComponent'Engine.Default__Trigger.Sprite' + begin object name="Sprite" + ReplacementPrimitive=none + end object + Components[0]=Sprite + Components[1]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/TriggeredPath.uc b/exported/Engine/Classes/TriggeredPath.uc new file mode 100755 index 00000000..ed5f8105 --- /dev/null +++ b/exported/Engine/Classes/TriggeredPath.uc @@ -0,0 +1,109 @@ +class TriggeredPath extends NavigationPoint + placeable + hidecategories(Navigation,Lighting,LightColor,Force); + +var() bool bOpen; +var() Actor MyTrigger; + +function OnToggle(SeqAct_Toggle inAction) +{ + // End:0x46 + if(inAction.InputLinks[0].bHasImpulse) + { + bOpen = true; + } + else + { + // End:0x8C + if(inAction.InputLinks[1].bHasImpulse) + { + bOpen = false; + } + else + { + // End:0xDB + if(inAction.InputLinks[2].bHasImpulse) + { + bOpen = !bOpen; + } + } + } + WorldInfo.Game.NotifyNavigationChanged(self); + //return; +} + +event Actor SpecialHandling(Pawn Other) +{ + local Actor TouchActor; + + // End:0x23 + if(bOpen || MyTrigger == none) + { + return self; + } + else + { + TouchActor = MyTrigger.SpecialHandling(Other); + // End:0x77 + if(TouchActor == none) + { + TouchActor = MyTrigger; + } + return TouchActor; + } + //return ReturnValue; +} + +event bool SuggestMovePreparation(Pawn Other) +{ + // End:0x12 + if(bOpen) + { + return false; + } + else + { + // End:0x1B0 + if((MyTrigger != none) && Other.Controller.ActorReachable(MyTrigger)) + { + // End:0x104 + if(Other.Controller.Focus == Other.Controller.MoveTarget) + { + Other.Controller.Focus = MyTrigger; + } + Other.Controller.MoveTarget = MyTrigger; + Other.Controller.CurrentPath = none; + Other.Controller.NextRoutePath = none; + return false; + } + else + { + Other.Controller.MoveTimer = 1.0000000; + Other.Controller.bPreparingMove = true; + Other.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + Other.Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + return true; + } + } + //return ReturnValue; +} + +defaultproperties +{ + bSpecialMove=true + ExtraCost=100 + // Reference: CylinderComponent'Engine.Default__TriggeredPath.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/TwitterIntegrationBase.uc b/exported/Engine/Classes/TwitterIntegrationBase.uc new file mode 100755 index 00000000..a86d438e --- /dev/null +++ b/exported/Engine/Classes/TwitterIntegrationBase.uc @@ -0,0 +1,43 @@ +class TwitterIntegrationBase extends PlatformInterfaceBase + transient + native(PlatformInterface); + +enum ETwitterRequestMethod +{ + TRM_Get, // 0 + TRM_Post, // 1 + TRM_Delete, // 2 + TRM_MAX // 3 +}; + +enum ETwitterIntegrationDelegate +{ + TID_AuthorizeComplete, // 0 + TID_TweetUIComplete, // 1 + TID_RequestComplete, // 2 + TID_MAX // 3 +}; + +// Export UTwitterIntegrationBase::execInit(FFrame&, void* const) +native event Init(); + +// Export UTwitterIntegrationBase::execCanShowTweetUI(FFrame&, void* const) +native event bool CanShowTweetUI(); + +// Export UTwitterIntegrationBase::execShowTweetUI(FFrame&, void* const) +native event bool ShowTweetUI(optional string InitialMessage, optional string URL, optional string Picture); + +// Export UTwitterIntegrationBase::execAuthorizeAccounts(FFrame&, void* const) +native event bool AuthorizeAccounts(); + +// Export UTwitterIntegrationBase::execGetNumAccounts(FFrame&, void* const) +native event int GetNumAccounts(); + +// Export UTwitterIntegrationBase::execGetAccountName(FFrame&, void* const) +native event string GetAccountName(int AccountIndex); + +// Export UTwitterIntegrationBase::execGetAccountId(FFrame&, void* const) +native event string GetAccountId(int AccountIndex); + +// Export UTwitterIntegrationBase::execTwitterRequest(FFrame&, void* const) +native event bool TwitterRequest(string URL, array ParamKeysAndValues, TwitterIntegrationBase.ETwitterRequestMethod RequestMethod, int AccountIndex); diff --git a/exported/Engine/Classes/UICharacterSummary.uc b/exported/Engine/Classes/UICharacterSummary.uc new file mode 100755 index 00000000..99a5c38e --- /dev/null +++ b/exported/Engine/Classes/UICharacterSummary.uc @@ -0,0 +1,10 @@ +class UICharacterSummary extends UIResourceDataProvider + transient + config(Game) + perobjectconfig + hidecategories(Object,UIRoot); + +var config string ClassPathName; +var const config localized string CharacterName; +var const config localized string CharacterBio; +var config bool bIsDisabled; diff --git a/exported/Engine/Classes/UIDataProvider.uc b/exported/Engine/Classes/UIDataProvider.uc new file mode 100755 index 00000000..9ed236a5 --- /dev/null +++ b/exported/Engine/Classes/UIDataProvider.uc @@ -0,0 +1,6 @@ +class UIDataProvider extends UIRoot + abstract + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); diff --git a/exported/Engine/Classes/UIDataProvider_MenuItem.uc b/exported/Engine/Classes/UIDataProvider_MenuItem.uc new file mode 100755 index 00000000..3fc73007 --- /dev/null +++ b/exported/Engine/Classes/UIDataProvider_MenuItem.uc @@ -0,0 +1,42 @@ +class UIDataProvider_MenuItem extends UIResourceDataProvider + transient + native(UIPrivate) + config(UI) + perobjectconfig + hidecategories(Object,UIRoot); + +enum EMenuOptionType +{ + MENUOT_ComboReadOnly, // 0 + MENUOT_ComboNumeric, // 1 + MENUOT_CheckBox, // 2 + MENUOT_Slider, // 3 + MENUOT_Spinner, // 4 + MENUOT_EditBox, // 5 + MENUOT_CollectionCheckBox, // 6 + MENUOT_CollapsingList, // 7 + MENUOT_MAX // 8 +}; + +var config UIDataProvider_MenuItem.EMenuOptionType OptionType; +var config array OptionSet; +var config string DataStoreMarkup; +var config string DescriptionMarkup; +var config name RequiredGameMode; +var const config localized string FriendlyName; +var string CustomFriendlyName; +var const config localized string Description; +var config bool bEditableCombo; +var config bool bNumericCombo; +var config bool bKeyboardOrMouseOption; +var config bool bOnlineOnly; +var config bool bOfflineOnly; +var() bool bSearchAllInis; +var config bool bRemoveOn360; +var config bool bRemoveOnPC; +var config bool bRemoveOnPS3; +var config bool bRemoveOnDingo; +var config int EditBoxMaxLength; +var config UIRangeData RangeData; +var config array SchemaCellFields; +var const string IniName; diff --git a/exported/Engine/Classes/UIDataProvider_OnlineFriendMessages.uc b/exported/Engine/Classes/UIDataProvider_OnlineFriendMessages.uc new file mode 100755 index 00000000..a9b6d503 --- /dev/null +++ b/exported/Engine/Classes/UIDataProvider_OnlineFriendMessages.uc @@ -0,0 +1,122 @@ +class UIDataProvider_OnlineFriendMessages extends UIDataProvider_OnlinePlayerDataBase + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +var array Messages; +var const localized string SendingPlayerNameCol; +var const localized string bIsFriendInviteCol; +var const localized string bWasAcceptedCol; +var const localized string bWasDeniedCol; +var const localized string MessageCol; +var string LastInviteFrom; + +event OnRegister(LocalPlayer InPlayer) +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + super.OnRegister(InPlayer); + // End:0x195 + if(PlayerControllerId != -1) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x195 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0x195 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + PlayerInterface.AddLoginChangeDelegate(OnLoginChange); + PlayerInterface.AddFriendMessageReceivedDelegate(byte(PlayerControllerId), OnFriendMessageReceived); + PlayerInterface.AddFriendInviteReceivedDelegate(byte(PlayerControllerId), OnFriendInviteReceived); + PlayerInterface.AddReceivedGameInviteDelegate(byte(PlayerControllerId), OnGameInviteReceived); + ReadMessages(); + } + } + } + //return; +} + +event OnUnregister() +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x165 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0x165 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + PlayerInterface.ClearLoginChangeDelegate(OnLoginChange); + PlayerInterface.ClearFriendMessageReceivedDelegate(byte(PlayerControllerId), OnFriendMessageReceived); + PlayerInterface.ClearFriendInviteReceivedDelegate(byte(PlayerControllerId), OnFriendInviteReceived); + PlayerInterface.ClearReceivedGameInviteDelegate(byte(PlayerControllerId), OnGameInviteReceived); + } + } + super.OnUnregister(); + //return; +} + +function ReadMessages() +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + Messages.Length = 0; + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xF8 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0xF8 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none)) && int(PlayerInterface.GetLoginStatus(byte(PlayerControllerId))) > int(0)) + { + PlayerInterface.GetFriendMessages(byte(PlayerControllerId), Messages); + } + } + //return; +} + +function OnFriendInviteReceived(byte LocalUserNum, UniqueNetId RequestingPlayer, string RequestingNick, string Message) +{ + ReadMessages(); + //return; +} + +function OnFriendMessageReceived(byte LocalUserNum, UniqueNetId SendingPlayer, string SendingNick, string Message) +{ + ReadMessages(); + //return; +} + +function OnLoginChange(byte LocalUserNum) +{ + // End:0x23 + if(int(LocalUserNum) == PlayerControllerId) + { + ReadMessages(); + } + //return; +} + +function OnGameInviteReceived(byte LocalUserNum, string InviterName) +{ + LastInviteFrom = InviterName; + ReadMessages(); + //return; +} + +defaultproperties +{ + SendingPlayerNameCol="Sender's Name" + bIsFriendInviteCol="Friend Invitation" + bWasAcceptedCol="Friend Was Accepted" + bWasDeniedCol="Friend Was Denied" + MessageCol="Message" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataProvider_OnlineFriends.uc b/exported/Engine/Classes/UIDataProvider_OnlineFriends.uc new file mode 100755 index 00000000..3fdc61ab --- /dev/null +++ b/exported/Engine/Classes/UIDataProvider_OnlineFriends.uc @@ -0,0 +1,153 @@ +class UIDataProvider_OnlineFriends extends UIDataProvider_OnlinePlayerDataBase + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +var array FriendsList; +var const localized string NickNameCol; +var const localized string PresenceInfoCol; +var const localized string FriendStateCol; +var const localized string bIsOnlineCol; +var const localized string bIsPlayingCol; +var const localized string bIsPlayingThisGameCol; +var const localized string bIsJoinableCol; +var const localized string bHasVoiceSupportCol; +var const localized string bHaveInvitedCol; +var const localized string bHasInvitedYouCol; +var const localized string OfflineText; +var const localized string OnlineText; +var const localized string AwayText; +var const localized string BusyText; + +event OnRegister(LocalPlayer InPlayer) +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + super.OnRegister(InPlayer); + // End:0x1A8 + if(PlayerControllerId != -1) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x1A8 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0x1A8 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + PlayerInterface.AddLoginChangeDelegate(OnLoginChange); + PlayerInterface.AddReadFriendsCompleteDelegate(byte(PlayerControllerId), OnFriendsReadComplete); + // End:0x1A8 + if((int(PlayerInterface.GetLoginStatus(byte(PlayerControllerId))) > int(0)) && !PlayerInterface.IsGuestLogin(byte(PlayerControllerId))) + { + PlayerInterface.ReadFriendsList(byte(PlayerControllerId)); + } + } + } + } + //return; +} + +event OnUnregister() +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xED + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0xED + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + PlayerInterface.ClearReadFriendsCompleteDelegate(byte(PlayerControllerId), OnFriendsReadComplete); + PlayerInterface.ClearLoginChangeDelegate(OnLoginChange); + } + } + super.OnUnregister(); + //return; +} + +function OnFriendsReadComplete(bool bWasSuccessful) +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + // End:0xC9 + if(bWasSuccessful == true) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xC6 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0xC6 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + PlayerInterface.GetFriendsList(byte(PlayerControllerId), FriendsList); + } + } + } + //return; +} + +function OnLoginChange(byte LocalUserNum) +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + FriendsList.Length = 0; + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x123 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0x123 + if((NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none)) && int(PlayerInterface.GetLoginStatus(byte(PlayerControllerId))) > int(0)) && !PlayerInterface.IsGuestLogin(byte(PlayerControllerId))) + { + PlayerInterface.ReadFriendsList(byte(PlayerControllerId)); + } + } + //return; +} + +event RefreshFriendsList() +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + // End:0x12A + if(PlayerControllerId != -1) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x12A + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0x12A + if((NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none)) && int(PlayerInterface.GetLoginStatus(byte(PlayerControllerId))) > int(0)) && !PlayerInterface.IsGuestLogin(byte(PlayerControllerId))) + { + PlayerInterface.ReadFriendsList(byte(PlayerControllerId)); + } + } + } + //return; +} + +defaultproperties +{ + NickNameCol="Name" + PresenceInfoCol="Online Status" + bIsOnlineCol="Is Online" + bIsPlayingCol="Is Playing" + bIsPlayingThisGameCol="Is Playing This Game" + bIsJoinableCol="Is Joinable" + bHasVoiceSupportCol="Has Voice Support" + OfflineText="Offline" + OnlineText="Online" + AwayText="Away" + BusyText="Busy" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataProvider_OnlinePartyChatList.uc b/exported/Engine/Classes/UIDataProvider_OnlinePartyChatList.uc new file mode 100755 index 00000000..2ca68cc5 --- /dev/null +++ b/exported/Engine/Classes/UIDataProvider_OnlinePartyChatList.uc @@ -0,0 +1,105 @@ +class UIDataProvider_OnlinePartyChatList extends UIDataProvider_OnlinePlayerDataBase + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +var array PartyMembersList; +var const localized array NatTypes; +var const localized string NickNameCol; +var const localized string NatTypeCol; +var const localized string IsLocalCol; +var const localized string IsInPartyVoiceCol; +var const localized string IsTalkingCol; +var const localized string IsInGameSessionCol; +var const localized string IsPlayingThisGameCol; + +event OnRegister(LocalPlayer InPlayer) +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + super.OnRegister(InPlayer); + // End:0xD7 + if(PlayerControllerId != -1) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xD7 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0xD7 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + PlayerInterface.AddLoginChangeDelegate(OnLoginChange); + } + } + } + //return; +} + +event OnUnregister() +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xB1 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0xB1 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + PlayerInterface.ClearLoginChangeDelegate(OnLoginChange); + } + } + super.OnUnregister(); + //return; +} + +function OnLoginChange(byte LocalUserNum) +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + PartyMembersList.Length = 0; + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xC4 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0xC4 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none)) && int(PlayerInterface.GetLoginStatus(byte(PlayerControllerId))) > int(0)) + { + } + } + //return; +} + +event RefreshMembersList() +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + // End:0x93 + if(PlayerControllerId != -1) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x93 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0x93 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + } + } + } + //return; +} + +defaultproperties +{ + NatTypes[0]="Unknown" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataProvider_OnlinePlayerDataBase.uc b/exported/Engine/Classes/UIDataProvider_OnlinePlayerDataBase.uc new file mode 100755 index 00000000..cc183bbf --- /dev/null +++ b/exported/Engine/Classes/UIDataProvider_OnlinePlayerDataBase.uc @@ -0,0 +1,29 @@ +class UIDataProvider_OnlinePlayerDataBase extends UIDataProvider + abstract + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +var int PlayerControllerId; + +event OnRegister(LocalPlayer InPlayer) +{ + // End:0x37 + if(InPlayer != none) + { + PlayerControllerId = InPlayer.ControllerId; + } + //return; +} + +event OnUnregister() +{ + PlayerControllerId = -1; + //return; +} + +defaultproperties +{ + PlayerControllerId=-1 +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataProvider_OnlinePlayerStorage.uc b/exported/Engine/Classes/UIDataProvider_OnlinePlayerStorage.uc new file mode 100755 index 00000000..ad0333fd --- /dev/null +++ b/exported/Engine/Classes/UIDataProvider_OnlinePlayerStorage.uc @@ -0,0 +1,294 @@ +class UIDataProvider_OnlinePlayerStorage extends UIDataProvider_OnlinePlayerDataBase + transient + native(UIPrivate) + config(Game) + hidecategories(Object,UIRoot); + +struct native PlayerStorageArrayProvider +{ + var int PlayerStorageId; + var UIDataProvider_OnlinePlayerStorageArray Provider; + + structdefaultproperties + { + PlayerStorageId=0 + Provider=none + } +}; + +var OnlinePlayerStorage Profile; +var const name ProviderName; +var bool bWasErrorLastRead; +var bool bIsExternalUIOpen; +var bool bNeedsDeferredRefresh; +var array PlayerStorageArrayProviders; +var config int DeviceStorageSizeNeeded; + +function bool ReadData(OnlinePlayerInterface PlayerInterface, byte LocalUserNum, int DeviceID, OnlinePlayerStorage PlayerStorage) +{ + return PlayerInterface.ReadPlayerStorage(LocalUserNum, PlayerStorage, DeviceID); + //return ReturnValue; +} + +function bool WriteData(OnlinePlayerInterface PlayerInterface, byte LocalUserNum, int DeviceID, OnlinePlayerStorage PlayerStorage) +{ + return PlayerInterface.WritePlayerStorage(LocalUserNum, PlayerStorage, DeviceID); + //return ReturnValue; +} + +function bool GetData(OnlinePlayerInterface PlayerInterface, byte LocalUserNum) +{ + local OnlinePlayerStorage CachedStorage; + + CachedStorage = PlayerInterface.GetPlayerStorage(LocalUserNum); + // End:0x8A + if(CachedStorage != none) + { + Profile = CachedStorage; + PlayerInterface.ReadPlayerStorage(LocalUserNum, Profile); + return true; + } + return false; + //return ReturnValue; +} + +function AddReadCompleteDelegate(OnlinePlayerInterface PlayerInterface, byte LocalUserNum) +{ + PlayerInterface.AddReadPlayerStorageCompleteDelegate(LocalUserNum, OnReadStorageComplete); + //return; +} + +function ClearReadCompleteDelegate(OnlinePlayerInterface PlayerInterface, byte LocalUserNum) +{ + PlayerInterface.ClearReadPlayerStorageCompleteDelegate(LocalUserNum, OnReadStorageComplete); + //return; +} + +event OnRegister(LocalPlayer InPlayer) +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + super.OnRegister(InPlayer); + // End:0x1DE + if(PlayerControllerId != -1) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x11D + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0x11D + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + PlayerInterface.AddLoginChangeDelegate(OnLoginChange); + AddReadCompleteDelegate(PlayerInterface, byte(PlayerControllerId)); + GetData(PlayerInterface, byte(PlayerControllerId)); + RefreshStorageData(); + } + } + // End:0x1DE + if(NotEqual_InterfaceInterface(OnlineSub.SystemInterface, OnlineSystemInterface(none))) + { + OnlineSub.SystemInterface.AddStorageDeviceChangeDelegate(OnStorageDeviceChange); + OnlineSub.SystemInterface.AddExternalUIChangeDelegate(OnExternalUIChange); + } + } + //return; +} + +event OnUnregister() +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x190 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0xCF + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + PlayerInterface.ClearLoginChangeDelegate(OnLoginChange); + ClearReadCompleteDelegate(PlayerInterface, byte(PlayerControllerId)); + } + // End:0x190 + if(NotEqual_InterfaceInterface(OnlineSub.SystemInterface, OnlineSystemInterface(none))) + { + OnlineSub.SystemInterface.ClearStorageDeviceChangeDelegate(OnStorageDeviceChange); + OnlineSub.SystemInterface.ClearExternalUIChangeDelegate(OnExternalUIChange); + } + } + super.OnUnregister(); + //return; +} + +function OnReadStorageComplete(byte LocalUserNum, bool bWasSuccessful) +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + // End:0x108 + if(bWasSuccessful == true) + { + // End:0x22 + if(!bWasErrorLastRead) + { + } + else + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x105 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0x105 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + bWasErrorLastRead = false; + // End:0x105 + if((ReadData(PlayerInterface, byte(PlayerControllerId), Profile.DeviceID, Profile)) == false) + { + bWasErrorLastRead = true; + } + } + } + } + } + else + { + bWasErrorLastRead = true; + } + //return; +} + +function OnLoginChange(byte LocalUserNum) +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + local OnlineSubsystem.ELoginStatus LoginStatus; + local UniqueNetId NetId; + + // End:0x13F + if(int(LocalUserNum) == PlayerControllerId) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x135 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0x135 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + LoginStatus = PlayerInterface.GetLoginStatus(byte(PlayerControllerId)); + PlayerInterface.GetUniquePlayerId(byte(PlayerControllerId), NetId); + // End:0x135 + if(int(LoginStatus) == int(0)) + { + Profile.SetToDefaults(); + } + } + } + RefreshStorageData(); + } + //return; +} + +function RefreshStorageData() +{ + local OnlineSubsystem OnlineSub; + local bool bFoundCachedData; + + // End:0x181 + if(!bIsExternalUIOpen) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x17E + if(((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterfaceEx, OnlinePlayerInterfaceEx(none))) + { + bFoundCachedData = GetData(OnlineSub.PlayerInterface, byte(PlayerControllerId)); + // End:0x17E + if(!bFoundCachedData || bFoundCachedData && !OnlineSub.PlayerInterfaceEx.IsDeviceValid(Profile.DeviceID, DeviceStorageSizeNeeded)) + { + ShowDeviceSelection(); + } + } + } + else + { + bNeedsDeferredRefresh = true; + } + //return; +} + +function ShowDeviceSelection() +{ + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x141 + if(((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterfaceEx, OnlinePlayerInterfaceEx(none))) + { + OnlineSub.PlayerInterfaceEx.AddDeviceSelectionDoneDelegate(byte(PlayerControllerId), OnDeviceSelectionComplete); + OnlineSub.PlayerInterfaceEx.ShowDeviceSelectionUI(byte(PlayerControllerId), DeviceStorageSizeNeeded); + } + //return; +} + +function OnDeviceSelectionComplete(bool bWasSuccessful) +{ + local OnlineSubsystem OnlineSub; + local string Ignored; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + OnlineSub.PlayerInterfaceEx.ClearDeviceSelectionDoneDelegate(byte(PlayerControllerId), OnDeviceSelectionComplete); + // End:0x152 + if(bWasSuccessful) + { + Profile.DeviceID = OnlineSub.PlayerInterfaceEx.GetDeviceSelectionResults(byte(PlayerControllerId), Ignored); + // End:0x14F + if((ReadData(OnlineSub.PlayerInterface, byte(PlayerControllerId), Profile.DeviceID, Profile)) == false) + { + } + } + else + { + Profile.DeviceID = -1; + } + //return; +} + +function OnStorageDeviceChange() +{ + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xFE + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.SystemInterface, OnlineSystemInterface(none))) + { + // End:0xFE + if(!OnlineSub.PlayerInterfaceEx.IsDeviceValid(Profile.DeviceID, DeviceStorageSizeNeeded)) + { + Profile.DeviceID = -1; + RefreshStorageData(); + } + } + //return; +} + +function OnExternalUIChange(bool bIsOpening) +{ + bIsExternalUIOpen = bIsOpening; + // End:0x3D + if(!bIsOpening && bNeedsDeferredRefresh) + { + RefreshStorageData(); + } + //return; +} + +defaultproperties +{ + ProviderName="PlayerStorageData" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataProvider_OnlinePlayerStorageArray.uc b/exported/Engine/Classes/UIDataProvider_OnlinePlayerStorageArray.uc new file mode 100755 index 00000000..484d6951 --- /dev/null +++ b/exported/Engine/Classes/UIDataProvider_OnlinePlayerStorageArray.uc @@ -0,0 +1,10 @@ +class UIDataProvider_OnlinePlayerStorageArray extends UIDataProvider + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +var OnlinePlayerStorage PlayerStorage; +var int PlayerStorageId; +var const string ColumnHeaderText; +var array Values; diff --git a/exported/Engine/Classes/UIDataProvider_OnlineProfileSettings.uc b/exported/Engine/Classes/UIDataProvider_OnlineProfileSettings.uc new file mode 100755 index 00000000..3cabd825 --- /dev/null +++ b/exported/Engine/Classes/UIDataProvider_OnlineProfileSettings.uc @@ -0,0 +1,76 @@ +class UIDataProvider_OnlineProfileSettings extends UIDataProvider_OnlinePlayerStorage + transient + native(UIPrivate) + config(Game) + hidecategories(Object,UIRoot); + +function bool ReadData(OnlinePlayerInterface PlayerInterface, byte LocalUserNum, int DeviceID, OnlinePlayerStorage PlayerStorage) +{ + return PlayerInterface.ReadProfileSettings(LocalUserNum, OnlineProfileSettings(PlayerStorage)); + //return ReturnValue; +} + +function bool WriteData(OnlinePlayerInterface PlayerInterface, byte LocalUserNum, int DeviceID, OnlinePlayerStorage PlayerStorage) +{ + return PlayerInterface.WriteProfileSettings(LocalUserNum, OnlineProfileSettings(PlayerStorage)); + //return ReturnValue; +} + +function bool GetData(OnlinePlayerInterface PlayerInterface, byte LocalUserNum) +{ + local OnlineProfileSettings CachedProfile; + + CachedProfile = PlayerInterface.GetProfileSettings(LocalUserNum); + // End:0x91 + if(CachedProfile != none) + { + Profile = CachedProfile; + return PlayerInterface.ReadProfileSettings(LocalUserNum, OnlineProfileSettings(Profile)); + } + return false; + //return ReturnValue; +} + +function AddReadCompleteDelegate(OnlinePlayerInterface PlayerInterface, byte LocalUserNum) +{ + PlayerInterface.AddReadProfileSettingsCompleteDelegate(LocalUserNum, OnReadStorageComplete); + //return; +} + +function ClearReadCompleteDelegate(OnlinePlayerInterface PlayerInterface, byte LocalUserNum) +{ + PlayerInterface.ClearReadProfileSettingsCompleteDelegate(LocalUserNum, OnReadStorageComplete); + //return; +} + +function RefreshStorageData() +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xCA + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0xCA + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + // End:0xCA + if(!ReadData(PlayerInterface, byte(PlayerControllerId), Profile.DeviceID, Profile)) + { + } + } + } + //return; +} + +function OnStorageDeviceChange() +{ + //return; +} + +defaultproperties +{ + ProviderName="ProfileData" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataProvider_PlayerAchievements.uc b/exported/Engine/Classes/UIDataProvider_PlayerAchievements.uc new file mode 100755 index 00000000..065d4bed --- /dev/null +++ b/exported/Engine/Classes/UIDataProvider_PlayerAchievements.uc @@ -0,0 +1,147 @@ +class UIDataProvider_PlayerAchievements extends UIDataProvider_OnlinePlayerDataBase + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +var transient array Achievements; + +// Export UUIDataProvider_PlayerAchievements::execGetTotalGamerScore(FFrame&, void* const) +native final function int GetTotalGamerScore(); + +// Export UUIDataProvider_PlayerAchievements::execGetMaxTotalGamerScore(FFrame&, void* const) +native final function int GetMaxTotalGamerScore(); + +function PopulateAchievementIcons() +{ + //return; +} + +function string GetAchievementIconPathName(int AchievementId, optional bool bReturnLockedIcon) +{ + //return ReturnValue; +} + +function GetAchievementDetails(const int AchievementId, out AchievementDetails OutAchievementDetails) +{ + local int Index; + + Index = Achievements.Find('Id', AchievementId); + // End:0x59 + if(Index != -1) + { + OutAchievementDetails = Achievements[Index]; + } + //return; +} + +function OnPlayerAchievementsChanged(int TitleId) +{ + local OnlineSubsystem OnlineSub; + local OnlineSubsystem.EOnlineEnumerationReadState Result; + + // End:0x10D + if(PlayerControllerId != -1) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x10D + if(((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) && TitleId == 0) + { + Result = OnlineSub.PlayerInterface.GetAchievements(byte(PlayerControllerId), Achievements, TitleId); + // End:0x10D + if(int(Result) == int(2)) + { + PopulateAchievementIcons(); + } + } + } + //return; +} + +function OnPlayerAchievementUnlocked(bool bWasSuccessful) +{ + // End:0x17 + if(bWasSuccessful) + { + UpdateAchievements(); + } + //return; +} + +event OnRegister(LocalPlayer InPlayer) +{ + local OnlineSubsystem OnlineSub; + + super.OnRegister(InPlayer); + // End:0x185 + if(PlayerControllerId != -1) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x185 + if(OnlineSub != none) + { + // End:0x185 + if(NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + OnlineSub.PlayerInterface.AddLoginChangeDelegate(OnLoginChange); + OnlineSub.PlayerInterface.AddReadAchievementsCompleteDelegate(byte(PlayerControllerId), OnPlayerAchievementsChanged); + OnlineSub.PlayerInterface.AddUnlockAchievementCompleteDelegate(byte(PlayerControllerId), OnPlayerAchievementUnlocked); + UpdateAchievements(); + } + } + } + //return; +} + +event OnUnregister() +{ + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x18A + if(OnlineSub != none) + { + // End:0xB3 + if(NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + OnlineSub.PlayerInterface.ClearLoginChangeDelegate(OnLoginChange); + } + // End:0x18A + if(NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + OnlineSub.PlayerInterface.ClearUnlockAchievementCompleteDelegate(byte(PlayerControllerId), OnPlayerAchievementUnlocked); + OnlineSub.PlayerInterface.ClearReadAchievementsCompleteDelegate(byte(PlayerControllerId), OnPlayerAchievementsChanged); + } + } + Achievements.Length = 0; + super.OnUnregister(); + //return; +} + +function OnLoginChange(byte LocalUserNum) +{ + // End:0x23 + if(int(LocalUserNum) == PlayerControllerId) + { + UpdateAchievements(); + } + //return; +} + +function UpdateAchievements() +{ + local OnlineSubsystem OnlineSub; + + // End:0x165 + if(PlayerControllerId != -1) + { + Achievements.Length = 0; + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x165 + if((((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) && int(OnlineSub.PlayerInterface.GetLoginStatus(byte(PlayerControllerId))) > int(0)) && !OnlineSub.PlayerInterface.IsGuestLogin(byte(PlayerControllerId))) + { + OnlineSub.PlayerInterface.ReadAchievements(byte(PlayerControllerId)); + } + } + //return; +} diff --git a/exported/Engine/Classes/UIDataProvider_Settings.uc b/exported/Engine/Classes/UIDataProvider_Settings.uc new file mode 100755 index 00000000..aee0ce29 --- /dev/null +++ b/exported/Engine/Classes/UIDataProvider_Settings.uc @@ -0,0 +1,8 @@ +class UIDataProvider_Settings extends UIPropertyDataProvider + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +var Settings Settings; +var bool bIsAListRow; diff --git a/exported/Engine/Classes/UIDataProvider_SettingsArray.uc b/exported/Engine/Classes/UIDataProvider_SettingsArray.uc new file mode 100755 index 00000000..d59d1102 --- /dev/null +++ b/exported/Engine/Classes/UIDataProvider_SettingsArray.uc @@ -0,0 +1,11 @@ +class UIDataProvider_SettingsArray extends UIDataProvider + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +var Settings Settings; +var int SettingsId; +var name SettingsName; +var const string ColumnHeaderText; +var array Values; diff --git a/exported/Engine/Classes/UIDataStore.uc b/exported/Engine/Classes/UIDataStore.uc new file mode 100755 index 00000000..ae98e2a7 --- /dev/null +++ b/exported/Engine/Classes/UIDataStore.uc @@ -0,0 +1,104 @@ +class UIDataStore extends UIDataProvider + abstract + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +var name Tag; +var array< delegate > RefreshSubscriberNotifies; +//var delegate __OnDataStoreValueUpdated__Delegate; + +delegate OnDataStoreValueUpdated(UIDataStore SourceDataStore, bool bValuesInvalidated, name PropertyTag, UIDataProvider SourceProvider, int ArrayIndex) +{ + //return; +} + +event Registered(LocalPlayer PlayerOwner) +{ + //return; +} + +event Unregistered(LocalPlayer PlayerOwner) +{ + //return; +} + +event SubscriberAttached(UIDataStoreSubscriber Subscriber) +{ + local int SubscriberNotifyIndex; + + // End:0xC0 + if(NotEqual_InterfaceInterface(Subscriber, UIDataStoreSubscriber(none))) + { + SubscriberNotifyIndex = RefreshSubscriberNotifies.Find(Subscriber.NotifyDataStoreValueUpdated); + // End:0xC0 + if(SubscriberNotifyIndex == -1) + { + SubscriberNotifyIndex = RefreshSubscriberNotifies.Length; + RefreshSubscriberNotifies[SubscriberNotifyIndex] = Subscriber.NotifyDataStoreValueUpdated; + } + } + //return; +} + +event SubscriberDetached(UIDataStoreSubscriber Subscriber) +{ + local int SubscriberNotifyIndex; + + // End:0x86 + if(NotEqual_InterfaceInterface(Subscriber, UIDataStoreSubscriber(none))) + { + SubscriberNotifyIndex = RefreshSubscriberNotifies.Find(Subscriber.NotifyDataStoreValueUpdated); + // End:0x86 + if(SubscriberNotifyIndex != -1) + { + RefreshSubscriberNotifies.Remove(SubscriberNotifyIndex, 1); + } + } + //return; +} + +function bool NotifyGameSessionEnded() +{ + //return ReturnValue; +} + +final event RefreshSubscribers(optional name PropertyTag, optional bool bInvalidateValues = true, optional UIDataProvider SourceProvider, optional int ArrayIndex = -1) +{ + local int Idx; + local delegate Subscriber; + local array< delegate > SubscriberArrayCopy; + + SubscriberArrayCopy.Length = RefreshSubscriberNotifies.Length; + Idx = 0; + J0x30: + + // End:0x7D [Loop If] + if(Idx < SubscriberArrayCopy.Length) + { + SubscriberArrayCopy[Idx] = RefreshSubscriberNotifies[Idx]; + Idx++; + // [Loop Continue] + goto J0x30; + } + Idx = 0; + J0x88: + + // End:0x104 [Loop If] + if(Idx < SubscriberArrayCopy.Length) + { + Subscriber = SubscriberArrayCopy[Idx]; + OnDataStoreValueUpdated(self, bInvalidateValues, PropertyTag, SourceProvider, ArrayIndex); + Idx++; + // [Loop Continue] + goto J0x88; + } + //return; +} + +final function DataStoreClient GetDataStoreClient() +{ + return Class'Engine.UIInteraction'.static.GetDataStoreClient(); + //return ReturnValue; +} diff --git a/exported/Engine/Classes/UIDataStorePublisher.uc b/exported/Engine/Classes/UIDataStorePublisher.uc new file mode 100755 index 00000000..0868bece --- /dev/null +++ b/exported/Engine/Classes/UIDataStorePublisher.uc @@ -0,0 +1,6 @@ +class UIDataStorePublisher extends UIDataStoreSubscriber + abstract + native(UIPrivate); + +// Export UUIDataStorePublisher::execSaveSubscriberValue(FFrame&, void* const) +native function bool SaveSubscriberValue(out array out_BoundDataStores, optional int BindingIndex = -1); diff --git a/exported/Engine/Classes/UIDataStoreSubscriber.uc b/exported/Engine/Classes/UIDataStoreSubscriber.uc new file mode 100755 index 00000000..71535d8d --- /dev/null +++ b/exported/Engine/Classes/UIDataStoreSubscriber.uc @@ -0,0 +1,21 @@ +interface UIDataStoreSubscriber extends Interface + abstract + native(UIPrivate); + +// Export UUIDataStoreSubscriber::execSetDataStoreBinding(FFrame&, void* const) +native function SetDataStoreBinding(string MarkupText, optional int BindingIndex = -1); + +// Export UUIDataStoreSubscriber::execGetDataStoreBinding(FFrame&, void* const) +native function string GetDataStoreBinding(optional int BindingIndex = -1); + +// Export UUIDataStoreSubscriber::execRefreshSubscriberValue(FFrame&, void* const) +native function bool RefreshSubscriberValue(optional int BindingIndex = -1); + +// Export UUIDataStoreSubscriber::execNotifyDataStoreValueUpdated(FFrame&, void* const) +native function NotifyDataStoreValueUpdated(UIDataStore SourceDataStore, bool bValuesInvalidated, name PropertyTag, UIDataProvider SourceProvider, int ArrayIndex); + +// Export UUIDataStoreSubscriber::execGetBoundDataStores(FFrame&, void* const) +native function GetBoundDataStores(out array out_BoundDataStores); + +// Export UUIDataStoreSubscriber::execClearBoundDataStores(FFrame&, void* const) +native function ClearBoundDataStores(); diff --git a/exported/Engine/Classes/UIDataStore_DynamicResource.uc b/exported/Engine/Classes/UIDataStore_DynamicResource.uc new file mode 100755 index 00000000..1fa5a479 --- /dev/null +++ b/exported/Engine/Classes/UIDataStore_DynamicResource.uc @@ -0,0 +1,114 @@ +class UIDataStore_DynamicResource extends UIDataStore + transient + native(UIPrivate) + config(Game) + hidecategories(Object,UIRoot); + +struct native DynamicResourceProviderDefinition +{ + var config name ProviderTag; + var config string ProviderClassName; + var transient Class ProviderClass; + + structdefaultproperties + { + ProviderTag="None" + ProviderClassName="" + ProviderClass=none + } +}; + +var transient UIDataProvider_OnlineProfileSettings ProfileProvider; +var transient UIDataStore_GameResource GameResourceDataStore; +var config array ResourceProviderDefinitions; +var private native const transient MultiMap_Mirror ResourceProviders; + +// Export UUIDataStore_DynamicResource::execFindProviderTypeIndex(FFrame&, void* const) +native final function int FindProviderTypeIndex(name ProviderTag); + +// Export UUIDataStore_DynamicResource::execGetResourceProviders(FFrame&, void* const) +native final function bool GetResourceProviders(name ProviderTag, out array out_Providers); + +// Export UUIDataStore_DynamicResource::execOnLoginChange(FFrame&, void* const) +native final function OnLoginChange(byte LocalUserNum); + +event Registered(LocalPlayer PlayerOwner) +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + local UIDataStore_OnlinePlayerData PlayerProfileDS; + + super.Registered(PlayerOwner); + PlayerProfileDS = UIDataStore_OnlinePlayerData(Class'Engine.UIRoot'.static.StaticResolveDataStore(Class'Engine.UIDataStore_OnlinePlayerData'.default.Tag, PlayerOwner)); + // End:0xA3 + if(PlayerProfileDS != none) + { + ProfileProvider = PlayerProfileDS.ProfileProvider; + } + GameResourceDataStore = UIDataStore_GameResource(Class'Engine.UIRoot'.static.StaticResolveDataStore(Class'Engine.UIDataStore_GameResource'.default.Tag, PlayerOwner)); + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x1AD + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0x1AD + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + PlayerInterface.AddLoginChangeDelegate(OnLoginChange); + } + } + //return; +} + +event Unregistered(LocalPlayer PlayerOwner) +{ + local int TypeIndex, ProviderIndex; + local array ProviderInstances; + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + super.Unregistered(PlayerOwner); + GameResourceDataStore = none; + TypeIndex = 0; + J0x29: + + // End:0xE5 [Loop If] + if(TypeIndex < ResourceProviderDefinitions.Length) + { + // End:0xD7 + if(GetResourceProviders(ResourceProviderDefinitions[TypeIndex].ProviderTag, ProviderInstances)) + { + ProviderIndex = 0; + J0x88: + + // End:0xD7 [Loop If] + if(ProviderIndex < ProviderInstances.Length) + { + ProviderInstances[ProviderIndex].ClearProviderReferences(); + ProviderIndex++; + // [Loop Continue] + goto J0x88; + } + } + TypeIndex++; + // [Loop Continue] + goto J0x29; + } + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x196 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0x196 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + PlayerInterface.ClearLoginChangeDelegate(OnLoginChange); + } + } + //return; +} + +defaultproperties +{ + Tag="DynamicGameResource" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataStore_Fonts.uc b/exported/Engine/Classes/UIDataStore_Fonts.uc new file mode 100755 index 00000000..b5f03de3 --- /dev/null +++ b/exported/Engine/Classes/UIDataStore_Fonts.uc @@ -0,0 +1,10 @@ +class UIDataStore_Fonts extends UIDataStore + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +defaultproperties +{ + Tag="Fonts" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataStore_GameResource.uc b/exported/Engine/Classes/UIDataStore_GameResource.uc new file mode 100755 index 00000000..b6680e52 --- /dev/null +++ b/exported/Engine/Classes/UIDataStore_GameResource.uc @@ -0,0 +1,36 @@ +class UIDataStore_GameResource extends UIDataStore + transient + native(UIPrivate) + config(Game) + hidecategories(Object,UIRoot); + +struct native GameResourceDataProvider +{ + var config name ProviderTag; + var config string ProviderClassName; + var config bool bExpandProviders; + var transient Class ProviderClass; + + structdefaultproperties + { + ProviderTag="None" + ProviderClassName="" + bExpandProviders=false + ProviderClass=none + } +}; + +var config array ElementProviderTypes; +var private native const transient MultiMap_Mirror ListElementProviders; + +// Export UUIDataStore_GameResource::execFindProviderTypeIndex(FFrame&, void* const) +native final function int FindProviderTypeIndex(name ProviderTag); + +// Export UUIDataStore_GameResource::execGetResourceProviders(FFrame&, void* const) +native final function bool GetResourceProviders(name ProviderTag, out array out_Providers); + +defaultproperties +{ + ElementProviderTypes[0]=(ProviderTag="GameTypes",ProviderClassName="Engine.UIGameInfoSummary",bExpandProviders=false,ProviderClass=none) + Tag="GameResources" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataStore_GameState.uc b/exported/Engine/Classes/UIDataStore_GameState.uc new file mode 100755 index 00000000..843a58fe --- /dev/null +++ b/exported/Engine/Classes/UIDataStore_GameState.uc @@ -0,0 +1,19 @@ +class UIDataStore_GameState extends UIDataStore + abstract + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +//var delegate __OnRefreshDataFieldValue__Delegate; + +delegate OnRefreshDataFieldValue() +{ + //return; +} + +function bool NotifyGameSessionEnded() +{ + return true; + //return ReturnValue; +} diff --git a/exported/Engine/Classes/UIDataStore_InputAlias.uc b/exported/Engine/Classes/UIDataStore_InputAlias.uc new file mode 100755 index 00000000..b6b3e733 --- /dev/null +++ b/exported/Engine/Classes/UIDataStore_InputAlias.uc @@ -0,0 +1,63 @@ +class UIDataStore_InputAlias extends UIDataStore_StringBase + transient + native(UIPrivate) + config(Input) + hidecategories(Object,UIRoot); + +struct native UIInputKeyData +{ + var config RawInputKeyEventData InputKeyData; + var config string ButtonFontMarkupString; + + structdefaultproperties + { + InputKeyData=(InputKeyName="None",ModifierKeyFlags=56) + ButtonFontMarkupString="" + } +}; + +struct native UIDataStoreInputAlias +{ + var config name AliasName; + var config UIInputKeyData PlatformInputKeys[EInputPlatformType]; + + structdefaultproperties + { + AliasName="None" + PlatformInputKeys[0]=(InputKeyData=(InputKeyName="None",ModifierKeyFlags=56),ButtonFontMarkupString="") + PlatformInputKeys[1]=(InputKeyData=(InputKeyName="None",ModifierKeyFlags=56),ButtonFontMarkupString="") + PlatformInputKeys[2]=(InputKeyData=(InputKeyName="None",ModifierKeyFlags=56),ButtonFontMarkupString="") + } +}; + +var protected config array InputAliases; +var protected native const transient map{VOID,VOID} InputAliasLookupMap; + +// Export UUIDataStore_InputAlias::execGetAliasFontMarkup(FFrame&, void* const) +native final function string GetAliasFontMarkup(name DesiredAlias, optional UIRoot.EInputPlatformType OverridePlatform = 3); + +// Export UUIDataStore_InputAlias::execGetAliasFontMarkupByIndex(FFrame&, void* const) +native final function string GetAliasFontMarkupByIndex(int AliasIndex, optional UIRoot.EInputPlatformType OverridePlatform = 3); + +// Export UUIDataStore_InputAlias::execGetAliasInputKeyName(FFrame&, void* const) +native final function name GetAliasInputKeyName(name DesiredAlias, optional UIRoot.EInputPlatformType OverridePlatform = 3); + +// Export UUIDataStore_InputAlias::execGetAliasInputKeyNameByIndex(FFrame&, void* const) +native final function name GetAliasInputKeyNameByIndex(int AliasIndex, optional UIRoot.EInputPlatformType OverridePlatform = 3); + +// Export UUIDataStore_InputAlias::execGetAliasInputKeyData(FFrame&, void* const) +native final function bool GetAliasInputKeyData(out RawInputKeyEventData out_InputKeyData, name DesiredAlias, optional UIRoot.EInputPlatformType OverridePlatform = 3); + +// Export UUIDataStore_InputAlias::execGetAliasInputKeyDataByIndex(FFrame&, void* const) +native final function bool GetAliasInputKeyDataByIndex(out RawInputKeyEventData out_InputKeyData, int AliasIndex, optional UIRoot.EInputPlatformType OverridePlatform = 3); + +// Export UUIDataStore_InputAlias::execFindInputAliasIndex(FFrame&, void* const) +native final function int FindInputAliasIndex(name DesiredAlias); + +// Export UUIDataStore_InputAlias::execHasAliasMappingForPlatform(FFrame&, void* const) +native final function bool HasAliasMappingForPlatform(name DesiredAlias, UIRoot.EInputPlatformType DesiredPlatform); + +defaultproperties +{ + Tag="ButtonCallouts" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataStore_MenuItems.uc b/exported/Engine/Classes/UIDataStore_MenuItems.uc new file mode 100755 index 00000000..aec4111a --- /dev/null +++ b/exported/Engine/Classes/UIDataStore_MenuItems.uc @@ -0,0 +1,40 @@ +class UIDataStore_MenuItems extends UIDataStore_GameResource + transient + native(UIPrivate) + config(UI) + hidecategories(Object,UIRoot); + +var const name CurrentGameSettingsTag; +var private native const transient MultiMap_Mirror OptionProviders; +var transient array DynamicProviders; + +function OnGameSettingsChanged(UIDataProvider SourceProvider, optional name PropTag) +{ + local UIDataStore_OnlineGameSettings GameSettingsDataStore; + + GameSettingsDataStore = UIDataStore_OnlineGameSettings(SourceProvider); + // End:0x5B + if((GameSettingsDataStore != none) && PropTag == 'SelectedIndex') + { + RefreshSubscribers(CurrentGameSettingsTag, true, self); + } + //return; +} + +event Registered(LocalPlayer PlayerOwner) +{ + super(UIDataStore).Registered(PlayerOwner); + //return; +} + +event Unregistered(LocalPlayer PlayerOwner) +{ + super(UIDataStore).Unregistered(PlayerOwner); + //return; +} + +defaultproperties +{ + CurrentGameSettingsTag="CurrentGameSettings" + Tag="MenuItems" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataStore_OnlineGameSearch.uc b/exported/Engine/Classes/UIDataStore_OnlineGameSearch.uc new file mode 100755 index 00000000..d9aedad8 --- /dev/null +++ b/exported/Engine/Classes/UIDataStore_OnlineGameSearch.uc @@ -0,0 +1,286 @@ +class UIDataStore_OnlineGameSearch extends UIDataStore_Remote + abstract + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +struct native GameSearchCfg +{ + var Class GameSearchClass; + var Class DefaultGameSettingsClass; + var Class SearchResultsProviderClass; + var UIDataProvider_Settings DesiredSettingsProvider; + var OnlineGameSearch Search; + var name SearchName; + + structdefaultproperties + { + GameSearchClass=none + DefaultGameSettingsClass=none + SearchResultsProviderClass=none + DesiredSettingsProvider=none + Search=none + SearchName="None" + } +}; + +var const name SearchResultsName; +var OnlineSubsystem OnlineSub; +var OnlineGameInterface GameInterface; +var const array GameSearchCfgList; +var int SelectedIndex; +var int ActiveSearchIndex; + +event Init() +{ + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xB1 + if(OnlineSub != none) + { + GameInterface = OnlineSub.GameInterface; + // End:0xB1 + if(NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none))) + { + GameInterface.AddFindOnlineGamesCompleteDelegate(OnSearchComplete); + } + } + //return; +} + +function bool InvalidateCurrentSearchResults() +{ + local OnlineGameSearch ActiveSearch; + local bool bResult; + + ActiveSearch = GetActiveGameSearch(); + // End:0x96 + if(ActiveSearch != none) + { + // End:0x96 + if(GameInterface.FreeSearchResults(ActiveSearch)) + { + RefreshSubscribers(SearchResultsName, true, GameSearchCfgList[SelectedIndex].DesiredSettingsProvider); + bResult = true; + } + } + return bResult; + //return ReturnValue; +} + +event bool SubmitGameSearch(byte ControllerIndex, optional bool bInvalidateExistingSearchResults = true) +{ + // End:0x16B + if(OnlineSub != none) + { + // End:0x168 + if(NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none))) + { + // End:0x64 + if(bInvalidateExistingSearchResults || ActiveSearchIndex == SelectedIndex) + { + InvalidateCurrentSearchResults(); + } + // End:0xCD + if((ActiveSearchIndex == -1) || !GameSearchCfgList[ActiveSearchIndex].Search.bIsSearchInProgress) + { + ActiveSearchIndex = SelectedIndex; + } + // End:0x10B + if(OverrideQuerySubmission(ControllerIndex, GameSearchCfgList[ActiveSearchIndex].Search)) + { + return true; + } + InvalidateCurrentSearchResults(); + return GameInterface.FindOnlineGames(ControllerIndex, GameSearchCfgList[ActiveSearchIndex].Search); + } + } + return false; + //return ReturnValue; +} + +protected function bool OverrideQuerySubmission(byte ControllerId, OnlineGameSearch Search) +{ + return false; + //return ReturnValue; +} + +function OnSearchComplete(bool bWasSuccessful) +{ + // End:0x4E + if(bWasSuccessful == true) + { + RefreshSubscribers(SearchResultsName, false, GameSearchCfgList[ActiveSearchIndex].DesiredSettingsProvider); + } + //return; +} + +event bool GetSearchResultFromIndex(int ListIndex, out OnlineGameSearchResult Result) +{ + // End:0xAC + if((ListIndex >= 0) && ListIndex < GameSearchCfgList[SelectedIndex].Search.Results.Length) + { + Result = GameSearchCfgList[SelectedIndex].Search.Results[ListIndex]; + return true; + } + return false; + //return ReturnValue; +} + +event bool ShowHostGamercard(byte ControllerIndex, int ListIndex) +{ + local OnlinePlayerInterfaceEx PlayerExt; + local OnlineGameSettings Game; + + // End:0x165 + if((ListIndex >= 0) && ListIndex < GameSearchCfgList[SelectedIndex].Search.Results.Length) + { + // End:0x162 + if(OnlineSub != none) + { + PlayerExt = OnlineSub.PlayerInterfaceEx; + // End:0x15F + if(NotEqual_InterfaceInterface(PlayerExt, OnlinePlayerInterfaceEx(none))) + { + Game = GameSearchCfgList[SelectedIndex].Search.Results[ListIndex].GameSettings; + return PlayerExt.ShowGamerCardUI(ControllerIndex, Game.OwningPlayerId); + } + } + } + //return ReturnValue; +} + +event OnlineGameSearch GetCurrentGameSearch() +{ + // End:0x50 + if((SelectedIndex >= 0) && SelectedIndex < GameSearchCfgList.Length) + { + return GameSearchCfgList[SelectedIndex].Search; + } + return none; + //return ReturnValue; +} + +event OnlineGameSearch GetActiveGameSearch() +{ + // End:0x50 + if((ActiveSearchIndex >= 0) && ActiveSearchIndex < GameSearchCfgList.Length) + { + return GameSearchCfgList[ActiveSearchIndex].Search; + } + return none; + //return ReturnValue; +} + +function int FindSearchConfigurationIndex(name SearchTag) +{ + local int Index; + + Index = 0; + J0x0B: + + // End:0x6F [Loop If] + if(Index < GameSearchCfgList.Length) + { + // End:0x61 + if(GameSearchCfgList[Index].SearchName == SearchTag) + { + return Index; + } + Index++; + // [Loop Continue] + goto J0x0B; + } + return -1; + //return ReturnValue; +} + +event SetCurrentByIndex(int NewIndex, optional bool bInvalidateExistingSearchResults = true) +{ + // End:0x9F + if((NewIndex >= 0) && NewIndex < GameSearchCfgList.Length) + { + SelectedIndex = NewIndex; + // End:0x9C + if(!bInvalidateExistingSearchResults || !InvalidateCurrentSearchResults()) + { + RefreshSubscribers(SearchResultsName, true, GameSearchCfgList[SelectedIndex].DesiredSettingsProvider); + } + } + //return; +} + +event SetCurrentByName(name SearchName, optional bool bInvalidateExistingSearchResults = true) +{ + local int Index; + + Index = FindSearchConfigurationIndex(SearchName); + // End:0xA6 + if(Index != -1) + { + SelectedIndex = Index; + // End:0xA3 + if(!bInvalidateExistingSearchResults || !InvalidateCurrentSearchResults()) + { + RefreshSubscribers(SearchResultsName, true, GameSearchCfgList[SelectedIndex].DesiredSettingsProvider); + } + } + //return; +} + +event MoveToNext(optional bool bInvalidateExistingSearchResults = true) +{ + SelectedIndex = Min(SelectedIndex + 1, GameSearchCfgList.Length - 1); + // End:0x85 + if(!bInvalidateExistingSearchResults || !InvalidateCurrentSearchResults()) + { + RefreshSubscribers(SearchResultsName, true, GameSearchCfgList[SelectedIndex].DesiredSettingsProvider); + } + //return; +} + +event MoveToPrevious(optional bool bInvalidateExistingSearchResults = true) +{ + SelectedIndex = Max(SelectedIndex - 1, 0); + // End:0x79 + if(!bInvalidateExistingSearchResults || !InvalidateCurrentSearchResults()) + { + RefreshSubscribers(SearchResultsName, true, GameSearchCfgList[SelectedIndex].DesiredSettingsProvider); + } + //return; +} + +function ClearAllSearchResults() +{ + local int OriginalActiveIndex, GameTypeIndex; + + OriginalActiveIndex = ActiveSearchIndex; + // End:0xC2 + if(NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none))) + { + GameTypeIndex = 0; + J0x3E: + + // End:0xC2 [Loop If] + if(GameTypeIndex < GameSearchCfgList.Length) + { + ActiveSearchIndex = GameTypeIndex; + // End:0xB4 + if(!GameInterface.FreeSearchResults(GameSearchCfgList[GameTypeIndex].Search)) + { + } + GameTypeIndex++; + // [Loop Continue] + goto J0x3E; + } + } + ActiveSearchIndex = OriginalActiveIndex; + //return; +} + +defaultproperties +{ + SearchResultsName="SearchResults" + ActiveSearchIndex=-1 + Tag="OnlineGameSearch" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataStore_OnlineGameSettings.uc b/exported/Engine/Classes/UIDataStore_OnlineGameSettings.uc new file mode 100755 index 00000000..31857a66 --- /dev/null +++ b/exported/Engine/Classes/UIDataStore_OnlineGameSettings.uc @@ -0,0 +1,136 @@ +class UIDataStore_OnlineGameSettings extends UIDataStore_Settings + abstract + transient + native(UIPrivate) + config(Game) + hidecategories(Object,UIRoot); + +struct native GameSettingsCfg +{ + var Class GameSettingsClass; + var UIDataProvider_Settings Provider; + var OnlineGameSettings GameSettings; + var name SettingsName; + + structdefaultproperties + { + GameSettingsClass=none + Provider=none + GameSettings=none + SettingsName="None" + } +}; + +var const array GameSettingsCfgList; +var const Class SettingsProviderClass; +var int SelectedIndex; + +event bool CreateGame(byte ControllerIndex) +{ + local OnlineSubsystem OnlineSub; + local OnlineGameInterface GameInterface; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xDF + if(OnlineSub != none) + { + GameInterface = OnlineSub.GameInterface; + // End:0xDC + if(NotEqual_InterfaceInterface(GameInterface, OnlineGameInterface(none))) + { + return GameInterface.CreateOnlineGame(ControllerIndex, 'Game', GameSettingsCfgList[SelectedIndex].GameSettings); + } + } + return false; + //return ReturnValue; +} + +event OnlineGameSettings GetCurrentGameSettings() +{ + return GameSettingsCfgList[SelectedIndex].GameSettings; + //return ReturnValue; +} + +event UIDataProvider_Settings GetCurrentProvider() +{ + return GameSettingsCfgList[SelectedIndex].Provider; + //return ReturnValue; +} + +event SetCurrentByIndex(int NewIndex) +{ + // End:0x56 + if((NewIndex >= 0) && NewIndex < GameSettingsCfgList.Length) + { + SelectedIndex = NewIndex; + RefreshSubscribers(,, true, GetCurrentProvider()); + } + //return; +} + +event SetCurrentByName(name SettingsName) +{ + local int Index; + + Index = 0; + J0x0B: + + // End:0x7A [Loop If] + if(Index < GameSettingsCfgList.Length) + { + // End:0x6C + if(GameSettingsCfgList[Index].SettingsName == SettingsName) + { + SetCurrentByIndex(Index); + return; + } + Index++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +event MoveToNext() +{ + local int NewIndex; + + NewIndex = Min(SelectedIndex + 1, GameSettingsCfgList.Length - 1); + // End:0x4F + if(SelectedIndex != NewIndex) + { + SetCurrentByIndex(NewIndex); + } + //return; +} + +event MoveToPrevious() +{ + local int NewIndex; + + NewIndex = Max(SelectedIndex - 1, 0); + // End:0x43 + if(SelectedIndex != NewIndex) + { + SetCurrentByIndex(NewIndex); + } + //return; +} + +event Registered(LocalPlayer PlayerOwner) +{ + super(UIDataStore).Registered(PlayerOwner); + //return; +} + +event Unregistered(LocalPlayer PlayerOwner) +{ + super(UIDataStore).Unregistered(PlayerOwner); + //return; +} + +defaultproperties +{ + SettingsProviderClass=Class'Engine.UIDataProvider_Settings' + Tag="OnlineGameSettings" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataStore_OnlinePlayerData.uc b/exported/Engine/Classes/UIDataStore_OnlinePlayerData.uc new file mode 100755 index 00000000..8568b685 --- /dev/null +++ b/exported/Engine/Classes/UIDataStore_OnlinePlayerData.uc @@ -0,0 +1,206 @@ +class UIDataStore_OnlinePlayerData extends UIDataStore_Remote + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +var UIDataProvider_OnlineFriends FriendsProvider; +var int PlayerControllerId; +var string PlayerNick; +var config string ProfileSettingsClassName; +var Class ProfileSettingsClass; +var UIDataProvider_OnlineProfileSettings ProfileProvider; +var config string ProfileProviderClassName; +var Class ProfileProviderClass; +var config string PlayerStorageClassName; +var Class PlayerStorageClass; +var UIDataProvider_OnlinePlayerStorage StorageProvider; +var config string StorageProviderClassName; +var Class StorageProviderClass; +var UIDataProvider_OnlineFriendMessages FriendMessagesProvider; +var UIDataProvider_PlayerAchievements AchievementsProvider; +var config string FriendsProviderClassName; +var Class FriendsProviderClass; +var config string FriendMessagesProviderClassName; +var Class FriendMessagesProviderClass; +var config string AchievementsProviderClassName; +var Class AchievementsProviderClass; +var config string PartyChatProviderClassName; +var Class PartyChatProviderClass; +var UIDataProvider_OnlinePartyChatList PartyChatProvider; + +event OnRegister(LocalPlayer InPlayer) +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + // End:0x1F9 + if(InPlayer != none) + { + PlayerControllerId = InPlayer.ControllerId; + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x171 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0xE8 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + PlayerInterface.AddLoginChangeDelegate(OnLoginChange); + } + // End:0x16E + if(NotEqual_InterfaceInterface(OnlineSub.PlayerInterfaceEx, OnlinePlayerInterfaceEx(none))) + { + OnlineSub.PlayerInterfaceEx.AddProfileDataChangedDelegate(byte(PlayerControllerId), OnPlayerDataChange); + } + } + else + { + // End:0x1DA + if((ProfileProvider != none) && ProfileProvider.Profile != none) + { + ProfileProvider.Profile.SetToDefaults(); + } + } + RegisterDelegates(); + OnLoginChange(byte(PlayerControllerId)); + } + //return; +} + +event OnUnregister() +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + // End:0x154 + if(PlayerControllerId != -1) + { + ClearDelegates(); + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x154 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0xCE + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + PlayerInterface.ClearLoginChangeDelegate(OnLoginChange); + } + // End:0x154 + if(NotEqual_InterfaceInterface(OnlineSub.PlayerInterfaceEx, OnlinePlayerInterfaceEx(none))) + { + OnlineSub.PlayerInterfaceEx.ClearProfileDataChangedDelegate(byte(PlayerControllerId), OnPlayerDataChange); + } + } + } + //return; +} + +function OnLoginChange(byte LocalUserNum) +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + // End:0x18B + if(int(LocalUserNum) == PlayerControllerId) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x17D + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0x109 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none)) && int(PlayerInterface.GetLoginStatus(byte(PlayerControllerId))) > int(0)) + { + PlayerNick = PlayerInterface.GetPlayerNickname(byte(PlayerControllerId)); + } + else + { + PlayerNick = ""; + ProfileProvider.Profile.SetToDefaults(); + StorageProvider.Profile.SetToDefaults(); + } + } + RefreshSubscribers(); + } + //return; +} + +function OnPlayerDataChange() +{ + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xC5 + if(OnlineSub != none) + { + // End:0xC5 + if(NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + PlayerNick = OnlineSub.PlayerInterface.GetPlayerNickname(byte(PlayerControllerId)); + RefreshSubscribers(); + } + } + //return; +} + +function RegisterDelegates() +{ + //return; +} + +function ClearDelegates() +{ + //return; +} + +event OnlineProfileSettings GetCachedPlayerProfile(int ControllerId) +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + local OnlineProfileSettings Result; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xB5 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0xB5 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + Result = PlayerInterface.GetProfileSettings(byte(ControllerId)); + } + } + return Result; + //return ReturnValue; +} + +event OnlinePlayerStorage GetCachedPlayerStorage(int ControllerId) +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + local OnlinePlayerStorage Result; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xB5 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0xB5 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + Result = PlayerInterface.GetPlayerStorage(byte(ControllerId)); + } + } + return Result; + //return ReturnValue; +} + +defaultproperties +{ + PlayerControllerId=-1 + PlayerNick="PlayerNickNameHere" + PartyChatProviderClassName="Engine.UIDataProvider_OnlinePartyChatList" + Tag="OnlinePlayerData" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataStore_OnlineStats.uc b/exported/Engine/Classes/UIDataStore_OnlineStats.uc new file mode 100755 index 00000000..e0f5ff29 --- /dev/null +++ b/exported/Engine/Classes/UIDataStore_OnlineStats.uc @@ -0,0 +1,166 @@ +class UIDataStore_OnlineStats extends UIDataStore_Remote + abstract + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +enum EStatsFetchType +{ + SFT_Player, // 0 + SFT_CenteredOnPlayer, // 1 + SFT_Friends, // 2 + SFT_TopRankings, // 3 + SFT_MAX // 4 +}; + +struct native PlayerNickMetaData +{ + var const name PlayerNickName; + var const localized string PlayerNickColumnName; + + structdefaultproperties + { + PlayerNickName="None" + PlayerNickColumnName="" + } +}; + +struct native RankMetaData +{ + var const name RankName; + var const localized string RankColumnName; + + structdefaultproperties + { + RankName="None" + RankColumnName="" + } +}; + +var array< Class > StatsReadClasses; +var const name StatsReadName; +var const PlayerNickMetaData PlayerNickData; +var const RankMetaData RankNameMetaData; +var const name TotalRowsName; +var array StatsReadObjects; +var OnlineStatsRead StatsRead; +var UIDataStore_OnlineStats.EStatsFetchType CurrentReadType; +var OnlineStatsInterface StatsInterface; +var OnlinePlayerInterface PlayerInterface; + +event Init() +{ + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xB9 + if(OnlineSub != none) + { + StatsInterface = OnlineSub.StatsInterface; + PlayerInterface = OnlineSub.PlayerInterface; + StatsInterface.AddReadOnlineStatsCompleteDelegate(OnReadComplete); + } + //return; +} + +function SetStatsReadInfo() +{ + StatsRead = StatsReadObjects[0]; + CurrentReadType = 0; + //return; +} + +event bool RefreshStats(byte ControllerIndex) +{ + SetStatsReadInfo(); + StatsInterface.FreeStats(StatsRead); + OnReadComplete(true); + switch(CurrentReadType) + { + // End:0x92 + case 0: + // End:0x90 + if(StatsInterface.ReadOnlineStatsForPlayer(ControllerIndex, StatsRead) == false) + { + return false; + } + return true; + // End:0xD5 + case 1: + // End:0xD3 + if(StatsInterface.ReadOnlineStatsByRankAroundPlayer(ControllerIndex, StatsRead, 10) == false) + { + return false; + } + return true; + // End:0x118 + case 2: + // End:0x116 + if(StatsInterface.ReadOnlineStatForFriends(ControllerIndex, StatsRead) == false) + { + return false; + } + return true; + // End:0x15B + case 3: + // End:0x159 + if(StatsInterface.ReadOnlineStatsByRank(ControllerIndex, StatsRead) == false) + { + return false; + } + return true; + // End:0xFFFF + default: + //return ReturnValue; + break; + } +} + +event bool ShowGamercard(byte ConrollerIndex, int ListIndex) +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterfaceEx PlayerExt; + local UniqueNetId PlayerID; + + // End:0x13F + if((ListIndex >= 0) && ListIndex < StatsRead.Rows.Length) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x13C + if(OnlineSub != none) + { + PlayerExt = OnlineSub.PlayerInterfaceEx; + // End:0x139 + if(NotEqual_InterfaceInterface(PlayerExt, OnlinePlayerInterfaceEx(none))) + { + PlayerID = StatsRead.Rows[ListIndex].PlayerID; + return PlayerExt.ShowGamerCardUI(ConrollerIndex, PlayerID); + } + } + } + //return ReturnValue; +} + +function OnReadComplete(bool bWasSuccessful) +{ + // End:0x20 + if(bWasSuccessful) + { + SortResultsByRank(StatsRead); + } + RefreshSubscribers(); + //return; +} + +// Export UUIDataStore_OnlineStats::execSortResultsByRank(FFrame&, void* const) +native static function SortResultsByRank(OnlineStatsRead StatsToSort); + +defaultproperties +{ + StatsReadName="StatsReadResults" + PlayerNickData=(PlayerNickName="Player Nick",PlayerNickColumnName="Player Nick") + RankNameMetaData=(RankName="Rank",RankColumnName="Rank") + TotalRowsName="TotalRows" + Tag="OnlineStats" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataStore_Registry.uc b/exported/Engine/Classes/UIDataStore_Registry.uc new file mode 100755 index 00000000..b54b2a92 --- /dev/null +++ b/exported/Engine/Classes/UIDataStore_Registry.uc @@ -0,0 +1,75 @@ +class UIDataStore_Registry extends UIDataStore + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +struct native RegistryKeyValuePair +{ + var string Key; + var string Value; + + structdefaultproperties + { + Key="" + Value="" + } +}; + +var array RegistryData; + +event bool GetData(string Key, out string out_Data) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x97 [Loop If] + if(I < RegistryData.Length) + { + // End:0x89 + if(RegistryData[I].Key == Key) + { + out_Data = RegistryData[I].Value; + return true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +event SetData(string Key, string Value) +{ + local int I; + local RegistryKeyValuePair KVP; + + I = 0; + J0x0B: + + // End:0x97 [Loop If] + if(I < RegistryData.Length) + { + // End:0x89 + if(RegistryData[I].Key == Key) + { + RegistryData[I].Value = Value; + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + KVP.Key = Key; + KVP.Value = Value; + RegistryData.AddItem(KVP); + //return; +} + +defaultproperties +{ + Tag="Registry" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataStore_Remote.uc b/exported/Engine/Classes/UIDataStore_Remote.uc new file mode 100755 index 00000000..ada7864c --- /dev/null +++ b/exported/Engine/Classes/UIDataStore_Remote.uc @@ -0,0 +1,11 @@ +class UIDataStore_Remote extends UIDataStore + abstract + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +defaultproperties +{ + Tag="RemoteData" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataStore_Settings.uc b/exported/Engine/Classes/UIDataStore_Settings.uc new file mode 100755 index 00000000..b02c7e87 --- /dev/null +++ b/exported/Engine/Classes/UIDataStore_Settings.uc @@ -0,0 +1,11 @@ +class UIDataStore_Settings extends UIDataStore + abstract + transient + native(UIPrivate) + config(Game) + hidecategories(Object,UIRoot); + +defaultproperties +{ + Tag="Settings" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataStore_StringAliasMap.uc b/exported/Engine/Classes/UIDataStore_StringAliasMap.uc new file mode 100755 index 00000000..a2dd7b43 --- /dev/null +++ b/exported/Engine/Classes/UIDataStore_StringAliasMap.uc @@ -0,0 +1,38 @@ +class UIDataStore_StringAliasMap extends UIDataStore_StringBase + transient + native(UIPrivate) + config(Game) + hidecategories(Object,UIRoot); + +struct native UIMenuInputMap +{ + var name FieldName; + var name Set; + var string MappedText; + + structdefaultproperties + { + FieldName="None" + Set="None" + MappedText="" + } +}; + +var config array MenuInputMapArray; +var private native const transient Map_Mirror MenuInputSets; +var const transient int PlayerIndex; + +// Export UUIDataStore_StringAliasMap::execGetPlayerOwner(FFrame&, void* const) +native final function LocalPlayer GetPlayerOwner(); + +// Export UUIDataStore_StringAliasMap::execFindMappingWithFieldName(FFrame&, void* const) +native final function int FindMappingWithFieldName(optional string FieldName = "", optional string SetName = ""); + +// Export UUIDataStore_StringAliasMap::execGetStringWithFieldName(FFrame&, void* const) +native function int GetStringWithFieldName(string FieldName, out string MappedString); + +defaultproperties +{ + PlayerIndex=-1 + Tag="StringAliasMap" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIDataStore_StringBase.uc b/exported/Engine/Classes/UIDataStore_StringBase.uc new file mode 100755 index 00000000..26646259 --- /dev/null +++ b/exported/Engine/Classes/UIDataStore_StringBase.uc @@ -0,0 +1,11 @@ +class UIDataStore_StringBase extends UIDataStore + abstract + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +defaultproperties +{ + Tag="StringBase" +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIGameInfoSummary.uc b/exported/Engine/Classes/UIGameInfoSummary.uc new file mode 100755 index 00000000..a595f4f1 --- /dev/null +++ b/exported/Engine/Classes/UIGameInfoSummary.uc @@ -0,0 +1,14 @@ +class UIGameInfoSummary extends UIResourceDataProvider + transient + config(Game) + perobjectconfig + hidecategories(Object,UIRoot); + +var config string ClassName; +var config string GameAcronym; +var config string MapPrefix; +var config bool bIsTeamGame; +var config bool bIsDisabled; +var config string GameSettingsClassName; +var const config localized string GameName; +var const config localized string Description; diff --git a/exported/Engine/Classes/UIInteraction.uc b/exported/Engine/Classes/UIInteraction.uc new file mode 100755 index 00000000..47f9dae6 --- /dev/null +++ b/exported/Engine/Classes/UIInteraction.uc @@ -0,0 +1,402 @@ +class UIInteraction extends Interaction within GameViewportClient + transient + native(UserInterface) + config(UI) + hidecategories(Object,UIRoot); + +struct native transient UIKeyRepeatData +{ + var init name CurrentRepeatKey; + var init Double NextRepeatTime; + + structdefaultproperties + { + CurrentRepeatKey="None" + NextRepeatTime=() + } +}; + +struct native transient UIAxisEmulationData extends UIKeyRepeatData +{ + var init bool bEnabled; +}; + +var private native const noexport Pointer VfTable_FExec; +var private native const noexport Pointer VfTable_FGlobalDataStoreClientManager; +var private native const noexport Pointer VfTable_FCallbackEventDevice; +var UIManager UIManager; +var Class UIManagerClass; +var Class SceneClientClass; +var const transient GameUISceneClient SceneClient; +var transient array SupportedDoubleClickKeys; +var private const transient DataStoreClient DataStoreManager; +var const transient bool bProcessInput; +var const config float UIJoystickDeadZone; +var const config float UIAxisMultiplier; +var const config float AxisRepeatDelay; +var const config float MouseButtonRepeatDelay; +var const config float DoubleClickTriggerSeconds; +var const config int DoubleClickPixelTolerance; +var const transient UIKeyRepeatData MouseButtonRepeatInfo; +var const config array ConfiguredAxisEmulationDefinitions; +var native const transient map{VOID,VOID} AxisEmulationDefinitions; +var transient UIAxisEmulationData AxisInputEmulation[24]; + +// Export UUIInteraction::execGetPlayerCount(FFrame&, void* const) +native static final function int GetPlayerCount(); + +// Export UUIInteraction::execGetPlayerIndex(FFrame&, void* const) +native static final function int GetPlayerIndex(int ControllerId); + +// Export UUIInteraction::execGetPlayerControllerId(FFrame&, void* const) +native static final function int GetPlayerControllerId(int PlayerIndex); + +// Export UUIInteraction::execGetDataStoreClient(FFrame&, void* const) +native static final function DataStoreClient GetDataStoreClient(); + +static final function LocalPlayer GetLocalPlayer(int PlayerIndex) +{ + local UIInteraction CurrentUIController; + local LocalPlayer Result; + + CurrentUIController = Class'Engine.UIRoot'.static.GetCurrentUIController(); + // End:0xFE + if(((CurrentUIController != none) && PlayerIndex >= 0) && PlayerIndex < CurrentUIController.Outer.Outer.GamePlayers.Length) + { + Result = CurrentUIController.Outer.Outer.GamePlayers[PlayerIndex]; + } + return Result; + //return ReturnValue; +} + +function NotifyPlayerAdded(int PlayerIndex, LocalPlayer AddedPlayer) +{ + local UIAxisEmulationData Empty; + + // End:0x64 + if((PlayerIndex >= 0) && PlayerIndex < 24) + { + Empty.CurrentRepeatKey = 'None'; + AxisInputEmulation[PlayerIndex] = Empty; + } + // End:0xA4 + if(SceneClient != none) + { + SceneClient.NotifyPlayerAdded(PlayerIndex, AddedPlayer); + } + // End:0xE4 + if(UIManager != none) + { + UIManager.NotifyPlayerAdded(PlayerIndex, AddedPlayer); + } + //return; +} + +function NotifyPlayerRemoved(int PlayerIndex, LocalPlayer RemovedPlayer) +{ + local int PlayerCount, NextPlayerIndex, I; + local UIAxisEmulationData Empty; + + // End:0x1AF + if((PlayerIndex >= 0) && PlayerIndex < 24) + { + PlayerCount = GetPlayerCount(); + I = PlayerIndex; + J0x48: + + // End:0x16C [Loop If] + if(I < PlayerCount) + { + NextPlayerIndex = I + 1; + AxisInputEmulation[I].NextRepeatTime = AxisInputEmulation[NextPlayerIndex].NextRepeatTime; + AxisInputEmulation[I].CurrentRepeatKey = AxisInputEmulation[NextPlayerIndex].CurrentRepeatKey; + AxisInputEmulation[I].bEnabled = AxisInputEmulation[NextPlayerIndex].bEnabled; + I++; + // [Loop Continue] + goto J0x48; + } + Empty.CurrentRepeatKey = 'None'; + AxisInputEmulation[PlayerCount] = Empty; + } + // End:0x1EF + if(SceneClient != none) + { + SceneClient.NotifyPlayerRemoved(PlayerIndex, RemovedPlayer); + } + // End:0x22F + if(UIManager != none) + { + UIManager.NotifyPlayerRemoved(PlayerIndex, RemovedPlayer); + } + //return; +} + +static final event OnlineSubsystem.ELoginStatus GetLoginStatus(int ControllerId) +{ + local OnlineSubsystem.ELoginStatus Result; + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface PlayerInterface; + + Result = 0; + // End:0xD4 + if(ControllerId != -1) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xD4 + if(OnlineSub != none) + { + PlayerInterface = OnlineSub.PlayerInterface; + // End:0xD4 + if(NotEqual_InterfaceInterface(PlayerInterface, OnlinePlayerInterface(none))) + { + Result = PlayerInterface.GetLoginStatus(byte(ControllerId)); + } + } + } + return Result; + //return ReturnValue; +} + +final function OnlineSubsystem.ELoginStatus GetLowestLoginStatusOfControllers() +{ + local OnlineSubsystem.ELoginStatus Result, LoginStatus; + local int PlayerIndex; + + Result = 2; + PlayerIndex = 0; + J0x17: + + // End:0xFB [Loop If] + if(PlayerIndex < Outer.Outer.GamePlayers.Length) + { + LoginStatus = GetLoginStatus(Outer.Outer.GamePlayers[PlayerIndex].ControllerId); + // End:0xED + if(int(LoginStatus) < int(Result)) + { + Result = LoginStatus; + } + PlayerIndex++; + // [Loop Continue] + goto J0x17; + } + return Result; + //return ReturnValue; +} + +static final event bool HasLinkConnection() +{ + local bool bResult; + local OnlineSubsystem OnlineSub; + local OnlineSystemInterface SystemInterface; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xAB + if(OnlineSub != none) + { + SystemInterface = OnlineSub.SystemInterface; + // End:0xAB + if(NotEqual_InterfaceInterface(SystemInterface, OnlineSystemInterface(none))) + { + bResult = SystemInterface.HasLinkConnection(); + } + } + return bResult; + //return ReturnValue; +} + +static final event bool IsLoggedIn(int ControllerId, optional bool bRequireOnlineLogin) +{ + local bool bResult; + local OnlineSubsystem.ELoginStatus LoginStatus; + + LoginStatus = GetLoginStatus(ControllerId); + bResult = (int(LoginStatus) == int(2)) || (int(LoginStatus) == int(1)) && !bRequireOnlineLogin; + return bResult; + //return ReturnValue; +} + +static final function int GetLoggedInPlayerCount(optional bool bRequireOnlineLogin) +{ + local int ControllerId, Result; + + ControllerId = 0; + J0x0C: + + // End:0x55 [Loop If] + if(ControllerId < 24) + { + // End:0x47 + if(IsLoggedIn(ControllerId, bRequireOnlineLogin)) + { + Result++; + } + ControllerId++; + // [Loop Continue] + goto J0x0C; + } + return Result; + //return ReturnValue; +} + +static final function int GetNumGuestsLoggedIn() +{ + local OnlineSubsystem OnlineSub; + local int ControllerId, GuestCount; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xE6 + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + ControllerId = 0; + J0x7A: + + // End:0xE6 [Loop If] + if(ControllerId < 24) + { + // End:0xD8 + if(OnlineSub.PlayerInterface.IsGuestLogin(byte(ControllerId))) + { + GuestCount++; + } + ControllerId++; + // [Loop Continue] + goto J0x7A; + } + } + return GuestCount; + //return ReturnValue; +} + +static final function bool IsGamepadConnected(int ControllerId) +{ + local bool bResult; + local OnlineSubsystem OnlineSub; + local OnlineSystemInterface SystemInterface; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xB4 + if(OnlineSub != none) + { + SystemInterface = OnlineSub.SystemInterface; + // End:0xB4 + if(NotEqual_InterfaceInterface(SystemInterface, OnlineSystemInterface(none))) + { + bResult = SystemInterface.IsControllerConnected(ControllerId); + } + } + return bResult; + //return ReturnValue; +} + +static final function int GetConnectedGamepadCount(optional array ControllerConnectionStatusOverrides) +{ + local int I, Result; + + I = 0; + J0x0C: + + // End:0x87 [Loop If] + if(I < 24) + { + // End:0x58 + if(I < ControllerConnectionStatusOverrides.Length) + { + // End:0x55 + if(ControllerConnectionStatusOverrides[I]) + { + Result++; + } + } + else + { + // End:0x79 + if(IsGamepadConnected(I)) + { + Result++; + } + } + I++; + // [Loop Continue] + goto J0x0C; + } + return Result; + //return ReturnValue; +} + +static final event OnlineSubsystem.ENATType GetNATType() +{ + local OnlineSubsystem OnlineSub; + local OnlineSystemInterface SystemInterface; + local OnlineSubsystem.ENATType Result; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xAA + if(OnlineSub != none) + { + SystemInterface = OnlineSub.SystemInterface; + // End:0xAA + if(NotEqual_InterfaceInterface(SystemInterface, OnlineSystemInterface(none))) + { + Result = SystemInterface.GetNATType(); + } + } + return Result; + //return ReturnValue; +} + +function NotifyGameSessionEnded() +{ + // End:0x2E + if(SceneClient != none) + { + SceneClient.NotifyGameSessionEnded(); + } + // End:0x5C + if(DataStoreManager != none) + { + DataStoreManager.super(DataStoreClient).NotifyGameSessionEnded(); + } + //return; +} + +defaultproperties +{ + UIManagerClass=Class'Engine.UIManager' + SceneClientClass=Class'Engine.GameUISceneClient' + UIJoystickDeadZone=0.8000000 + UIAxisMultiplier=1.0000000 + AxisRepeatDelay=0.2000000 + MouseButtonRepeatDelay=0.1500000 + DoubleClickTriggerSeconds=0.5000000 + DoubleClickPixelTolerance=1 + ConfiguredAxisEmulationDefinitions[0]=(AxisInputKey="MouseX",AdjacentAxisInputKey="MouseY",bEmulateButtonPress=false,InputKeyToEmulate="None",InputKeyToEmulate[1]="None") + ConfiguredAxisEmulationDefinitions[1]=(AxisInputKey="MouseY",AdjacentAxisInputKey="MouseX",bEmulateButtonPress=false,InputKeyToEmulate="None",InputKeyToEmulate[1]="None") + ConfiguredAxisEmulationDefinitions[2]=(AxisInputKey="XboxTypeS_LeftX",AdjacentAxisInputKey="XboxTypeS_LeftY",bEmulateButtonPress=true,InputKeyToEmulate="Gamepad_LeftStick_Right",InputKeyToEmulate[1]="Gamepad_LeftStick_Left") + ConfiguredAxisEmulationDefinitions[3]=(AxisInputKey="XboxTypeS_LeftY",AdjacentAxisInputKey="XboxTypeS_LeftX",bEmulateButtonPress=true,InputKeyToEmulate="Gamepad_LeftStick_Up",InputKeyToEmulate[1]="Gamepad_LeftStick_Down") + ConfiguredAxisEmulationDefinitions[4]=(AxisInputKey="XboxTypeS_RightX",AdjacentAxisInputKey="XboxTypeS_RightY",bEmulateButtonPress=true,InputKeyToEmulate="Gamepad_RightStick_Right",InputKeyToEmulate[1]="Gamepad_RightStick_Left") + ConfiguredAxisEmulationDefinitions[5]=(AxisInputKey="XboxTypeS_RightY",AdjacentAxisInputKey="XboxTypeS_RightX",bEmulateButtonPress=true,InputKeyToEmulate="Gamepad_RightStick_Down",InputKeyToEmulate[1]="Gamepad_RightStick_Up") + AxisInputEmulation[0]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[1]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[2]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[3]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[4]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[5]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[6]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[7]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[8]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[9]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[10]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[11]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[12]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[13]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[14]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[15]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[16]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[17]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[18]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[19]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[20]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[21]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[22]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) + AxisInputEmulation[23]=(bEnabled=true,CurrentRepeatKey="None",NextRepeatTime=()) +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIManager.uc b/exported/Engine/Classes/UIManager.uc new file mode 100755 index 00000000..5a1a9836 --- /dev/null +++ b/exported/Engine/Classes/UIManager.uc @@ -0,0 +1,63 @@ +class UIManager extends Object within UIInteraction + native; + +// Export UUIManager::execGetUIManager(FFrame&, void* const) +native static final function UIManager GetUIManager(); + +// Export UUIManager::execCanUnpauseInternalUI(FFrame&, void* const) +native final function bool CanUnpauseInternalUI(); + +event PauseGame(bool bDesiredPauseState, optional int PlayerIndex = 0) +{ + local PlayerController PlayerOwner; + local Engine Eng; + + Eng = Class'Engine.Engine'.static.GetEngine(); + // End:0x11B + if(Eng.GamePlayers.Length > 0) + { + PlayerIndex = Clamp(PlayerIndex, 0, Eng.GamePlayers.Length - 1); + PlayerOwner = Eng.GamePlayers[PlayerIndex].Actor; + // End:0x11B + if(PlayerOwner != none) + { + PlayerOwner.SetPause(bDesiredPauseState, CanUnpauseInternalUI); + } + } + //return; +} + +function NotifyPlayerAdded(int PlayerIndex, LocalPlayer AddedPlayer) +{ + //return; +} + +function NotifyPlayerRemoved(int PlayerIndex, LocalPlayer RemovedPlayer) +{ + //return; +} + +function int FindLocalPlayerIndex(Player P) +{ + local Engine Engine; + local int I; + + Engine = Class'Engine.Engine'.static.GetEngine(); + I = 0; + J0x34: + + // End:0xAF [Loop If] + if(I < Engine.GamePlayers.Length) + { + // End:0xA1 + if(Engine.GamePlayers[I] == P) + { + return I; + } + I++; + // [Loop Continue] + goto J0x34; + } + return 0; + //return ReturnValue; +} diff --git a/exported/Engine/Classes/UIMapSummary.uc b/exported/Engine/Classes/UIMapSummary.uc new file mode 100755 index 00000000..aefff356 --- /dev/null +++ b/exported/Engine/Classes/UIMapSummary.uc @@ -0,0 +1,10 @@ +class UIMapSummary extends UIResourceDataProvider + transient + config(Game) + perobjectconfig + hidecategories(Object,UIRoot); + +var config string MapName; +var config string ScreenshotPathName; +var const localized string DisplayName; +var const localized string Description; diff --git a/exported/Engine/Classes/UIPropertyDataProvider.uc b/exported/Engine/Classes/UIPropertyDataProvider.uc new file mode 100755 index 00000000..1609b524 --- /dev/null +++ b/exported/Engine/Classes/UIPropertyDataProvider.uc @@ -0,0 +1,22 @@ +class UIPropertyDataProvider extends UIDataProvider + abstract + transient + native(UIPrivate) + config(Engine) + hidecategories(Object,UIRoot); + +var const array< Class > ComplexPropertyTypes; +//var delegate __CanSupportComplexPropertyType__Delegate; + +delegate bool CanSupportComplexPropertyType(Property UnsupportedProperty) +{ + //return ReturnValue; +} + +defaultproperties +{ + ComplexPropertyTypes[0]=Class'Core.StructProperty' + ComplexPropertyTypes[1]=Class'Core.MapProperty' + ComplexPropertyTypes[2]=Class'Core.ArrayProperty' + ComplexPropertyTypes[3]=Class'Core.DelegateProperty' +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIResourceCombinationProvider.uc b/exported/Engine/Classes/UIResourceCombinationProvider.uc new file mode 100755 index 00000000..30de57f8 --- /dev/null +++ b/exported/Engine/Classes/UIResourceCombinationProvider.uc @@ -0,0 +1,24 @@ +class UIResourceCombinationProvider extends UIDataProvider + abstract + transient + native(UIPrivate) + config(Game) + perobjectconfig + hidecategories(Object,UIRoot); + +var transient UIResourceDataProvider StaticDataProvider; +var transient UIDataProvider_OnlineProfileSettings ProfileProvider; + +event InitializeProvider(bool bIsEditor, UIResourceDataProvider InStaticResourceProvider, UIDataProvider_OnlineProfileSettings InProfileProvider) +{ + StaticDataProvider = InStaticResourceProvider; + ProfileProvider = InProfileProvider; + //return; +} + +function ClearProviderReferences() +{ + StaticDataProvider = none; + ProfileProvider = none; + //return; +} diff --git a/exported/Engine/Classes/UIResourceDataProvider.uc b/exported/Engine/Classes/UIResourceDataProvider.uc new file mode 100755 index 00000000..21456ecb --- /dev/null +++ b/exported/Engine/Classes/UIResourceDataProvider.uc @@ -0,0 +1,21 @@ +class UIResourceDataProvider extends UIPropertyDataProvider + abstract + transient + native(UIPrivate) + config(Game) + perobjectconfig + hidecategories(Object,UIRoot); + +var config bool bSkipDuringEnumeration; + +event InitializeProvider(bool bIsEditor) +{ + //return; +} + +defaultproperties +{ + ComplexPropertyTypes[0]=Class'Core.StructProperty' + ComplexPropertyTypes[1]=Class'Core.MapProperty' + ComplexPropertyTypes[2]=Class'Core.DelegateProperty' +} \ No newline at end of file diff --git a/exported/Engine/Classes/UIRoot.uc b/exported/Engine/Classes/UIRoot.uc new file mode 100755 index 00000000..54fe218a --- /dev/null +++ b/exported/Engine/Classes/UIRoot.uc @@ -0,0 +1,208 @@ +class UIRoot extends Object + abstract + native(UserInterface) + config(Engine) + hidecategories(Object,UIRoot); + +const DEFAULT_SIZE_X = 1024; +const DEFAULT_SIZE_Y = 768; +const MAX_SUPPORTED_GAMEPADS = 24; + +enum EInputPlatformType +{ + IPT_PC, // 0 + IPT_360, // 1 + IPT_PS3, // 2 + IPT_MAX // 3 +}; + +struct native UIRangeData +{ + var(Range) float CurrentValue; + var(Range) float MinValue; + var(Range) float MaxValue; + var(Range) float NudgeValue; + var(Range) bool bIntRange; + + structdefaultproperties + { + CurrentValue=0.0000000 + MinValue=0.0000000 + MaxValue=0.0000000 + NudgeValue=0.0000000 + bIntRange=false + } +}; + +struct native TextureCoordinates +{ + var() float U; + var() float V; + var() float UL; + var() float VL; + + structdefaultproperties + { + U=0.0000000 + V=0.0000000 + UL=0.0000000 + VL=0.0000000 + } +}; + +struct native InputKeyAction +{ + var() name InputKeyName; + var() Object.EInputEvent InputKeyState; + var array TriggeredOps; + var deprecated array ActionsToExecute; + + structdefaultproperties + { + InputKeyName="None" + InputKeyState=EInputEvent.IE_Released + TriggeredOps=none + } +}; + +struct native transient InputEventParameters +{ + var init const transient int PlayerIndex; + var init const transient int ControllerId; + var init const transient name InputKeyName; + var init const transient Object.EInputEvent EventType; + var init const transient float InputDelta; + var init const transient float DeltaTime; + var init const transient bool bAltPressed; + var init const transient bool bCtrlPressed; + var init const transient bool bShiftPressed; + + structdefaultproperties + { + PlayerIndex=0 + ControllerId=0 + InputKeyName="None" + EventType=EInputEvent.IE_Pressed + InputDelta=0.0000000 + DeltaTime=0.0000000 + bAltPressed=false + bCtrlPressed=false + bShiftPressed=false + } +}; + +struct native transient SubscribedInputEventParameters extends InputEventParameters +{ + var init const transient name InputAliasName; +}; + +struct native UIAxisEmulationDefinition +{ + var name AxisInputKey; + var name AdjacentAxisInputKey; + var bool bEmulateButtonPress; + var name InputKeyToEmulate[2]; + + structdefaultproperties + { + AxisInputKey="None" + AdjacentAxisInputKey="None" + bEmulateButtonPress=false + InputKeyToEmulate[0]="None" + InputKeyToEmulate[1]="None" + } +}; + +struct native export RawInputKeyEventData +{ + var name InputKeyName; + var byte ModifierKeyFlags; + + structdefaultproperties + { + InputKeyName="None" + ModifierKeyFlags=56 + } +}; + +var config array BadCapsLocContexts; + +// Export UUIRoot::execGetInputPlatformType(FFrame&, void* const) +native static final function UIRoot.EInputPlatformType GetInputPlatformType(optional LocalPlayer OwningPlayer); + +// Export UUIRoot::execGetCurrentUIController(FFrame&, void* const) +native static final function UIInteraction GetCurrentUIController(); + +// Export UUIRoot::execGetSceneClient(FFrame&, void* const) +native static final function GameUISceneClient GetSceneClient(); + +static final function UIDataStore StaticResolveDataStore(name DataStoreTag, optional LocalPlayer InPlayerOwner) +{ + local UIDataStore Result; + local DataStoreClient DSClient; + + DSClient = Class'Engine.UIInteraction'.static.GetDataStoreClient(); + // End:0x74 + if(DSClient != none) + { + Result = DSClient.FindDataStore(DataStoreTag, InPlayerOwner); + } + return Result; + //return ReturnValue; +} + +static final function OnlineGameInterface GetOnlineGameInterface() +{ + local OnlineSubsystem OnlineSub; + local OnlineGameInterface Result; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x63 + if(OnlineSub != none) + { + Result = OnlineSub.GameInterface; + } + return Result; + //return ReturnValue; +} + +static final function OnlinePlayerInterface GetOnlinePlayerInterface() +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterface Result; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x63 + if(OnlineSub != none) + { + Result = OnlineSub.PlayerInterface; + } + return Result; + //return ReturnValue; +} + +static final function OnlinePlayerInterfaceEx GetOnlinePlayerInterfaceEx() +{ + local OnlineSubsystem OnlineSub; + local OnlinePlayerInterfaceEx PlayerIntEx; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x63 + if(OnlineSub != none) + { + PlayerIntEx = OnlineSub.PlayerInterfaceEx; + } + return PlayerIntEx; + //return ReturnValue; +} + +static final function string SafeCaps(string StringToCap) +{ + // End:0x2B + if(default.BadCapsLocContexts.Find(GetLanguage()) != -1) + { + return StringToCap; + } + return Caps(StringToCap); + //return ReturnValue; +} diff --git a/exported/Engine/Classes/UISceneClient.uc b/exported/Engine/Classes/UISceneClient.uc new file mode 100755 index 00000000..18e1305e --- /dev/null +++ b/exported/Engine/Classes/UISceneClient.uc @@ -0,0 +1,43 @@ +class UISceneClient extends UIRoot + abstract + transient + native(UserInterface) + config(Engine) + hidecategories(Object,UIRoot); + +const SCENEFILTER_None = 0x00000000; +const SCENEFILTER_IncludeTransient = 0x00000001; +const SCENEFILTER_InputProcessorOnly = 0x00000002; +const SCENEFILTER_PausersOnly = 0x00000004; +const SCENEFILTER_PrimitiveUsersOnly = 0x00000008; +const SCENEFILTER_UsesPostProcessing = 0x00000010; +const SCENEFILTER_ReceivesFocus = 0x00000020; +const SCENEFILTER_Any = 0xFFFFFFFF; + +var private native const noexport Pointer VfTable_FExec; +var native const transient Pointer RenderViewport; +var const transient IntPoint MousePosition; +var const transient DataStoreClient DataStoreManager; +var const transient Matrix CanvasToScreen; +var const transient Matrix InvCanvasToScreen; +var transient PostProcessChain UIScenePostProcess; +var transient bool bEnablePostProcess; + +// Export UUISceneClient::execIsUIActive(FFrame&, void* const) +native final function bool IsUIActive(optional int Flags = -1); + +// Export UUISceneClient::execGetCanvasToScreen(FFrame&, void* const) +native final function Matrix GetCanvasToScreen(); + +// Export UUISceneClient::execGetInverseCanvasToScreen(FFrame&, void* const) +native final function Matrix GetInverseCanvasToScreen(); + +event InitializeSceneClient() +{ + //return; +} + +defaultproperties +{ + bEnablePostProcess=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/UISoundTheme.uc b/exported/Engine/Classes/UISoundTheme.uc new file mode 100755 index 00000000..64d09fbf --- /dev/null +++ b/exported/Engine/Classes/UISoundTheme.uc @@ -0,0 +1,37 @@ +class UISoundTheme extends Object + native(UserInterface); + +struct native SoundEventMapping +{ + var() name SoundEventName; + var() SoundCue SoundToPlay; + + structdefaultproperties + { + SoundEventName="None" + SoundToPlay=none + } +}; + +var() array SoundEventBindings; + +event ProcessSoundEvent(name SoundEventName, optional PlayerController SoundOwner) +{ + local int EventIndex; + + EventIndex = SoundEventBindings.Find('SoundEventName', SoundEventName); + // End:0xFC + if(EventIndex != -1) + { + // End:0x99 + if(SoundOwner != none) + { + SoundOwner.PlaySound(SoundEventBindings[EventIndex].SoundToPlay, true, true, true); + } + else + { + Class'Engine.WorldInfo'.static.GetWorldInfo().PlaySound(SoundEventBindings[EventIndex].SoundToPlay, true, true, true); + } + } + //return; +} diff --git a/exported/Engine/Classes/UIWeaponSummary.uc b/exported/Engine/Classes/UIWeaponSummary.uc new file mode 100755 index 00000000..a44186b7 --- /dev/null +++ b/exported/Engine/Classes/UIWeaponSummary.uc @@ -0,0 +1,10 @@ +class UIWeaponSummary extends UIResourceDataProvider + transient + config(Game) + perobjectconfig + hidecategories(Object,UIRoot); + +var config string ClassPathName; +var const config localized string FriendlyName; +var const config localized string WeaponDescription; +var config bool bIsDisabled; diff --git a/exported/Engine/Classes/UberPostProcessEffect.uc b/exported/Engine/Classes/UberPostProcessEffect.uc new file mode 100755 index 00000000..d437405c --- /dev/null +++ b/exported/Engine/Classes/UberPostProcessEffect.uc @@ -0,0 +1,67 @@ +class UberPostProcessEffect extends DOFBloomMotionBlurEffect + native + hidecategories(Object); + +enum ETonemapperType +{ + Tonemapper_Off, // 0 + Tonemapper_Filmic, // 1 + Tonemapper_Customizable, // 2 + Tonemapper_MAX // 3 +}; + +enum EPostProcessAAType +{ + PostProcessAA_Off, // 0 + PostProcessAA_FXAA0, // 1 + PostProcessAA_FXAA1, // 2 + PostProcessAA_FXAA2, // 3 + PostProcessAA_FXAA3, // 4 + PostProcessAA_FXAA4, // 5 + PostProcessAA_FXAA5, // 6 + PostProcessAA_MLAA, // 7 + PostProcessAA_MAX // 8 +}; + +var(Scene) Vector SceneShadows; +var(Scene) Vector SceneHighLights; +var(Scene) Vector SceneMidTones; +var(Scene) float SceneDesaturation; +var(Scene) Vector SceneColorize; +var(Tonemapper) UberPostProcessEffect.ETonemapperType TonemapperType; +var(PostprocessAntiAliasing) UberPostProcessEffect.EPostProcessAAType PostProcessAAType; +var(Tonemapper) float TonemapperRange; +var(Tonemapper) float TonemapperToeFactor; +var(Tonemapper) float TonemapperScale; +var(MotionBlur) float MotionBlurSoftEdgeKernelSize; +var(Scene) bool bEnableImageGrain; +var(PostProcessEffect) bool bScaleEffectsWithViewSize; +var deprecated bool bEnableHDRTonemapper; +var(Scene) float SceneImageGrainScale; +var(Bloom,Shape) float BloomWeightSmall; +var(Bloom,Shape) float BloomWeightMedium; +var(Bloom,Shape) float BloomWeightLarge; +var(Bloom,Shape) float BloomSizeScaleSmall; +var(Bloom,Shape) float BloomSizeScaleMedium; +var(Bloom,Shape) float BloomSizeScaleLarge; +var(PostprocessAntiAliasing) float EdgeDetectionThreshold; +var native const transient LUTBlender PreviousLUTBlender; +var deprecated float SceneHDRTonemapperScale; + +defaultproperties +{ + SceneShadows=(X=0.0000000,Y=0.0000000,Z=-0.0030000) + SceneHighLights=(X=0.8000000,Y=0.8000000,Z=0.8000000) + SceneMidTones=(X=1.3000000,Y=1.3000000,Z=1.3000000) + SceneDesaturation=0.4000000 + SceneColorize=(X=1.0000000,Y=1.0000000,Z=1.0000000) + TonemapperRange=8.0000000 + TonemapperToeFactor=1.0000000 + TonemapperScale=1.0000000 + SceneImageGrainScale=0.0200000 + BloomWeightMedium=1.0000000 + BloomSizeScaleSmall=0.2500000 + BloomSizeScaleMedium=1.0000000 + BloomSizeScaleLarge=3.0000000 + EdgeDetectionThreshold=12.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/UserCloudFileCloudSaveSystemDataBlobStore.uc b/exported/Engine/Classes/UserCloudFileCloudSaveSystemDataBlobStore.uc new file mode 100755 index 00000000..c29bcedb --- /dev/null +++ b/exported/Engine/Classes/UserCloudFileCloudSaveSystemDataBlobStore.uc @@ -0,0 +1,213 @@ +class UserCloudFileCloudSaveSystemDataBlobStore extends Object + implements(CloudSaveSystemDataBlobStoreInterface); + +var private transient UserCloudFileInterface UserCloudFile; +var private transient delegate GetDataBlobCallback; +var private transient delegate SetDataBlobCallback; +var private transient delegate DeleteDataBlobCallback; +//var delegate __GetDataBlobCallbackDelegate__Delegate; +//var delegate __SetDataBlobCallbackDelegate__Delegate; +//var delegate __DeleteDataBlobCallbackDelegate__Delegate; + +delegate GetDataBlobCallbackDelegate(bool bWasSuccessful, string StorageID, string BlobName, out array DataBlob, string Error) +{ + //return; +} + +delegate SetDataBlobCallbackDelegate(bool bWasSucessfull, string StorageID, string BlobName, string Error) +{ + //return; +} + +private final delegate DeleteDataBlobCallbackDelegate(bool bWasSucessfull, string StorageID, string BlobName, string Error) +{ + //return; +} + +final function Init(UserCloudFileInterface InUserCloudFile) +{ + UserCloudFile = InUserCloudFile; + //return; +} + +function GetDataBlob(string StorageID, string BlobName, delegate InGetDataBlobCallback) +{ + local bool ErrorOccured; + local string Error; + local array EmptyBuffer; + + ErrorOccured = true; + // End:0x6F + if(EqualEqual_InterfaceInterface(UserCloudFile, UserCloudFileInterface(none))) + { + Error = "GetDataBlob::UserCloudFileInterface instance is null"; + } + else + { + // End:0xBE + if(GetDataBlobCallback != none) + { + Error = "GetDataBlob::GetDataBlob operation already active"; + } + else + { + // End:0x10D + if(InGetDataBlobCallback == none) + { + Error = "GetDataBlob::InGetDataBlobCallback cannot be none"; + } + else + { + UserCloudFile.AddReadUserFileCompleteDelegate(OnReadUserFileComplete); + GetDataBlobCallback = InGetDataBlobCallback; + // End:0x195 + if(UserCloudFile.ReadUserFile(StorageID, BlobName)) + { + ErrorOccured = false; + } + else + { + Error = "GetDataBlob::Unknown error starting read of user file from cloud"; + GetDataBlobCallback = None; + UserCloudFile.ClearReadUserFileCompleteDelegate(OnReadUserFileComplete); + } + } + } + } + // End:0x283 + if(ErrorOccured && InGetDataBlobCallback != none) + { + GetDataBlobCallbackDelegate(false, StorageID, BlobName, EmptyBuffer, Error); + } + //return; +} + +private final function OnReadUserFileComplete(bool bWasSuccessful, string UserId, string Filename) +{ + local delegate Callback; + local array FileContents; + local bool LocalResult; + + UserCloudFile.ClearReadUserFileCompleteDelegate(OnReadUserFileComplete); + LocalResult = bWasSuccessful; + // End:0x9F + if(bWasSuccessful) + { + // End:0x9F + if(!UserCloudFile.GetFileContents(UserId, Filename, FileContents)) + { + LocalResult = false; + } + } + // End:0x116 + if(GetDataBlobCallback != none) + { + Callback = GetDataBlobCallback; + GetDataBlobCallback = None; + GetDataBlobCallbackDelegate(LocalResult, UserId, Filename, FileContents, ""); + } + //return; +} + +function SetDataBlob(string StorageID, string BlobName, const out array DataBlob, delegate InSetDataBlobCallback) +{ + local bool ErrorOccured; + local string Error; + + ErrorOccured = true; + // End:0x6F + if(EqualEqual_InterfaceInterface(UserCloudFile, UserCloudFileInterface(none))) + { + Error = "SetDataBlob::UserCloudFileInterface instance is null"; + } + else + { + // End:0xBE + if(SetDataBlobCallback != none) + { + Error = "SetDataBlob::SetDataBlob operation already active"; + } + else + { + // End:0x10D + if(InSetDataBlobCallback == none) + { + Error = "SetDataBlob::InSetDataBlobCallback cannot be none"; + } + else + { + UserCloudFile.AddWriteUserFileCompleteDelegate(OnWriteUserFileComplete); + SetDataBlobCallback = InSetDataBlobCallback; + // End:0x19E + if(UserCloudFile.WriteUserFile(StorageID, BlobName, DataBlob)) + { + ErrorOccured = false; + } + else + { + Error = "SetDataBlob::Unknown error starting write of user file to cloud"; + SetDataBlobCallback = None; + UserCloudFile.ClearWriteUserFileCompleteDelegate(OnWriteUserFileComplete); + } + } + } + } + // End:0x282 + if(ErrorOccured && InSetDataBlobCallback != none) + { + SetDataBlobCallbackDelegate(false, StorageID, BlobName, Error); + } + //return; +} + +private final function OnWriteUserFileComplete(bool bWasSuccessful, string UserId, string Filename) +{ + local delegate Callback; + + UserCloudFile.ClearWriteUserFileCompleteDelegate(OnWriteUserFileComplete); + // End:0x9F + if(SetDataBlobCallback != none) + { + Callback = SetDataBlobCallback; + SetDataBlobCallback = None; + SetDataBlobCallbackDelegate(bWasSuccessful, UserId, Filename, ""); + } + //return; +} + +function bool DeleteDataBlob(string StorageID, string BlobName, delegate InDeleteDataBlobCallback) +{ + local bool RValue; + + RValue = false; + // End:0x11B + if(NotEqual_InterfaceInterface(UserCloudFile, UserCloudFileInterface(none)) && DeleteDataBlobCallback == none) + { + UserCloudFile.AddDeleteUserFileCompleteDelegate(OnDeleteUserFileComplete); + DeleteDataBlobCallback = InDeleteDataBlobCallback; + RValue = UserCloudFile.DeleteUserFile(StorageID, BlobName, true, true); + // End:0x11B + if(!RValue) + { + DeleteDataBlobCallback = None; + UserCloudFile.ClearDeleteUserFileCompleteDelegate(OnDeleteUserFileComplete); + } + } + return RValue; + //return ReturnValue; +} + +private final function OnDeleteUserFileComplete(bool bWasSuccessful, string UserId, string Filename) +{ + local delegate Callback; + + UserCloudFile.ClearDeleteUserFileCompleteDelegate(OnDeleteUserFileComplete); + // End:0x9F + if(DeleteDataBlobCallback != none) + { + Callback = DeleteDataBlobCallback; + DeleteDataBlobCallback = None; + DeleteDataBlobCallbackDelegate(bWasSuccessful, UserId, Filename, ""); + } + //return; +} diff --git a/exported/Engine/Classes/UserCloudFileInterface.uc b/exported/Engine/Classes/UserCloudFileInterface.uc new file mode 100755 index 00000000..f24870f8 --- /dev/null +++ b/exported/Engine/Classes/UserCloudFileInterface.uc @@ -0,0 +1,107 @@ +interface UserCloudFileInterface extends Interface + abstract; + +function bool GetFileContents(string UserId, string Filename, out array FileContents) +{ + //return ReturnValue; +} + +function bool ClearFiles(string UserId) +{ + //return ReturnValue; +} + +function bool ClearFile(string UserId, string Filename) +{ + //return ReturnValue; +} + +delegate OnEnumerateUserFilesComplete(bool bWasSuccessful, string UserId) +{ + //return; +} + +function EnumerateUserFiles(string UserId) +{ + //return; +} + +function AddEnumerateUserFileCompleteDelegate(delegate EnumerateUserFileCompleteDelegate) +{ + //return; +} + +function ClearEnumerateUserFileCompleteDelegate(delegate EnumerateUserFileCompleteDelegate) +{ + //return; +} + +function GetUserFileList(string UserId, out array UserFiles) +{ + //return; +} + +delegate OnReadUserFileComplete(bool bWasSuccessful, string UserId, string Filename) +{ + //return; +} + +function bool ReadUserFile(string UserId, string Filename) +{ + //return ReturnValue; +} + +function AddReadUserFileCompleteDelegate(delegate ReadUserFileCompleteDelegate) +{ + //return; +} + +function ClearReadUserFileCompleteDelegate(delegate ReadUserFileCompleteDelegate) +{ + //return; +} + +delegate OnWriteUserFileComplete(bool bWasSuccessful, string UserId, string Filename) +{ + //return; +} + +function bool WriteUserFile(string UserId, string Filename, const out array FileContents) +{ + //return ReturnValue; +} + +function AddWriteUserFileCompleteDelegate(delegate WriteUserFileCompleteDelegate) +{ + //return; +} + +function ClearWriteUserFileCompleteDelegate(delegate WriteUserFileCompleteDelegate) +{ + //return; +} + +delegate OnDeleteUserFileComplete(bool bWasSuccessful, string UserId, string Filename) +{ + //return; +} + +function bool DeleteUserFile(string UserId, string Filename, bool bShouldCloudDelete, bool bShouldLocallyDelete) +{ + //return ReturnValue; +} + +function AddDeleteUserFileCompleteDelegate(delegate DeleteUserFileCompleteDelegate) +{ + //return; +} + +function ClearDeleteUserFileCompleteDelegate(delegate DeleteUserFileCompleteDelegate) +{ + //return; +} + +function ClearAllDelegates() +{ + //return; +} diff --git a/exported/Engine/Classes/Vehicle.uc b/exported/Engine/Classes/Vehicle.uc new file mode 100755 index 00000000..1e4b49b9 --- /dev/null +++ b/exported/Engine/Classes/Vehicle.uc @@ -0,0 +1,869 @@ +class Vehicle extends Pawn + abstract + native(Pawn) + nativereplication + config(Game) + placeable + hidecategories(Navigation) + classgroup(Vehicles); + +var repnotify Pawn Driver; +var repnotify bool bDriving; +var bool bDriverIsVisible; +var bool bAttachDriver; +var bool bTurnInPlace; +var bool bSeparateTurretFocus; +var bool bFollowLookDir; +var bool bHasHandbrake; +var bool bScriptedRise; +var bool bDuckObstacles; +var bool bAvoidReversing; +var bool bRetryPathfindingWithDriver; +var() bool bIgnoreStallZ; +var bool bDoExtraNetRelevancyTraces; +var() array ExitPositions; +var float ExitRadius; +var Vector ExitOffset; +var() float Steering; +var() float Throttle; +var() float Rise; +var Vector TargetLocationAdjustment; +var float DriverDamageMult; +var() float MomentumMult; +var Class CrushedDamageType; +var float MinCrushSpeed; +var float ForceCrushPenetration; +var byte StuckCount; +var float ThrottleTime; +var float StuckTime; +var float OldSteering; +var float OnlySteeringStartTime; +var float OldThrottle; +var const float AIMoveCheckTime; +var float VehicleMovingTime; +var float TurnTime; + +replication +{ + // Pos:0x000 + if(bNetDirty && int(Role) == int(ROLE_Authority)) + bDriving; + + // Pos:0x020 + if((bNetDirty && (bNetOwner || Driver == none) || !Driver.bHidden) && int(Role) == int(ROLE_Authority)) + Driver; +} + +simulated function NotifyTeamChanged() +{ + // End:0x3F + if((PlayerReplicationInfo != none) && Driver != none) + { + Driver.NotifyTeamChanged(); + } + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + local string DriverText; + + super.DisplayDebug(HUD, out_YL, out_YPos); + HUD.Canvas.SetDrawColor(255, 255, 255); + HUD.Canvas.DrawText((((("Steering " $ string(Steering)) $ " throttle ") $ string(Throttle)) $ " rise ") $ string(Rise)); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + HUD.Canvas.SetDrawColor(255, 0, 0); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + // End:0x1F3 + if(Driver == none) + { + DriverText = "NO DRIVER"; + } + else + { + DriverText = (("Driver Mesh " $ string(Driver.Mesh)) $ " hidden ") $ string(Driver.bHidden); + } + HUD.Canvas.DrawText(DriverText); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + //return; +} + +function Suicide() +{ + // End:0x3A + if(Driver != none) + { + Driver.KilledBy(Driver); + } + else + { + KilledBy(self); + } + //return; +} + +// Export UVehicle::execGetMaxRiseForce(FFrame&, void* const) +native function float GetMaxRiseForce(); + +// Export UVehicle::execGetTargetLocation(FFrame&, void* const) +native simulated function Vector GetTargetLocation(optional Actor RequestedBy, optional bool bRequestAlternateLoc); + +simulated function TakeRadiusDamage(Controller InstigatedBy, float BaseDamage, float DamageRadius, Class DamageType, float Momentum, Vector HurtOrigin, bool bFullDamage, Actor DamageCauser, optional float DamageFalloffExponent = 1.0000000) +{ + // End:0xD2 + if(int(Role) == int(ROLE_Authority)) + { + super(Actor).TakeRadiusDamage(InstigatedBy, BaseDamage, DamageRadius, DamageType, Momentum, HurtOrigin, bFullDamage, DamageCauser, DamageFalloffExponent); + // End:0xD2 + if(Health > 0) + { + DriverRadiusDamage(BaseDamage, DamageRadius, InstigatedBy, DamageType, Momentum, HurtOrigin, DamageCauser); + } + } + //return; +} + +function DriverRadiusDamage(float DamageAmount, float DamageRadius, Controller EventInstigator, Class DamageType, float Momentum, Vector HitLocation, Actor DamageCauser, optional float DamageFalloffExponent = 1.0000000) +{ + // End:0xEC + if(((((EventInstigator != none) && Driver != none) && bAttachDriver) && !Driver.bCollideActors) && !Driver.bBlockActors) + { + Driver.TakeRadiusDamage(EventInstigator, DamageAmount, DamageRadius, DamageType, Momentum, HitLocation, false, DamageCauser, DamageFalloffExponent); + } + //return; +} + +function PlayerChangedTeam() +{ + // End:0x3A + if(Driver != none) + { + Driver.KilledBy(Driver); + } + else + { + super.PlayerChangedTeam(); + } + //return; +} + +simulated function SetBaseEyeheight() +{ + BaseEyeHeight = default.BaseEyeHeight; + EyeHeight = BaseEyeHeight; + //return; +} + +event PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x23 + if(!bDeleteMe) + { + AddDefaultInventory(); + } + //return; +} + +function bool CheatWalk() +{ + return false; + //return ReturnValue; +} + +function bool CheatGhost() +{ + return false; + //return ReturnValue; +} + +function bool CheatFly() +{ + return false; + //return ReturnValue; +} + +simulated event Destroyed() +{ + // End:0x19 + if(Driver != none) + { + Destroyed_HandleDriver(); + } + super.Destroyed(); + //return; +} + +simulated function Destroyed_HandleDriver() +{ + local Pawn OldDriver; + + Driver.LastRenderTime = LastRenderTime; + // End:0x95 + if(int(Role) == int(ROLE_Authority)) + { + OldDriver = Driver; + Driver = none; + OldDriver.DrivenVehicle = none; + OldDriver.Destroy(); + } + else + { + // End:0xD9 + if(Driver.DrivenVehicle == self) + { + Driver.StopDriving(self); + } + } + //return; +} + +function bool CanEnterVehicle(Pawn P) +{ + return ((((((!bDeleteMe && AnySeatAvailable()) && !bAttachDriver || !P.bIsCrouched) && P.DrivenVehicle == none) && P.Controller != none) && P.Controller.bIsPlayer) && !P.IsA('Vehicle')) && Health > 0; + //return ReturnValue; +} + +function bool AnySeatAvailable() +{ + return Driver == none; + //return ReturnValue; +} + +function bool TryToDrive(Pawn P) +{ + // End:0x1A + if(!CanEnterVehicle(P)) + { + return false; + } + return DriverEnter(P); + //return ReturnValue; +} + +function bool DriverEnter(Pawn P) +{ + local Controller C; + + C = P.Controller; + Driver = P; + Driver.StartDriving(self); + // End:0x8C + if(Driver.Health <= 0) + { + Driver = none; + return false; + } + SetDriving(true); + C.UnPossess(); + Driver.SetOwner(self); + C.Possess(self, true); + // End:0x17B + if((PlayerController(C) != none) && !C.IsChildState(C.GetStateName(), LandMovementState)) + { + PlayerController(C).GotoState(LandMovementState); + } + WorldInfo.Game.DriverEnteredVehicle(self, P); + return true; + //return ReturnValue; +} + +function PossessedBy(Controller C, bool bVehicleTransition) +{ + super.PossessedBy(C, bVehicleTransition); + EntryAnnouncement(C); + NetPriority = 3.0000000; + NetUpdateFrequency = 100.0000000; + ThrottleTime = WorldInfo.TimeSeconds; + OnlySteeringStartTime = WorldInfo.TimeSeconds; + //return; +} + +function EntryAnnouncement(Controller C) +{ + //return; +} + +simulated function AttachDriver(Pawn P) +{ + // End:0x11 + if(!bAttachDriver) + { + return; + } + P.SetCollision(false, false); + P.bCollideWorld = false; + P.SetBase(none); + P.SetHardAttach(true); + P.SetPhysics(0); + // End:0x115 + if((P.Mesh != none) && Mesh != none) + { + P.Mesh.SetShadowParent(Mesh); + } + // End:0x165 + if(!bDriverIsVisible) + { + P.SetHidden(true); + P.SetLocation(Location); + } + P.SetBase(self); + P.SetPhysics(0); + //return; +} + +simulated function DetachDriver(Pawn P) +{ + //return; +} + +event bool ContinueOnFoot() +{ + // End:0x27 + if(AIController(Controller) != none) + { + return DriverLeave(false); + } + else + { + return false; + } + //return ReturnValue; +} + +function Rotator GetExitRotation(Controller C) +{ + local Rotator Rot; + + Rot.Yaw = C.Rotation.Yaw; + return Rot; + //return ReturnValue; +} + +event bool DriverLeave(bool bForceLeave) +{ + local Controller C; + local PlayerController PC; + local Rotator ExitRotation; + + // End:0x20 + if(int(Role) < int(ROLE_Authority)) + { + ScriptTrace(); + return false; + } + // End:0x76 + if(!bForceLeave && !WorldInfo.Game.CanLeaveVehicle(self, Driver)) + { + return false; + } + // End:0x87 + if(Controller == none) + { + return false; + } + // End:0x196 + if(Driver != none) + { + Driver.SetHardAttach(false); + Driver.bCollideWorld = true; + Driver.SetCollision(true, true); + // End:0x196 + if(!PlaceExitingDriver()) + { + // End:0x172 + if(!bForceLeave) + { + Driver.SetHardAttach(true); + Driver.bCollideWorld = false; + Driver.SetCollision(false, false); + return false; + } + else + { + Driver.SetLocation(GetTargetLocation()); + } + } + } + ExitRotation = GetExitRotation(Controller); + SetDriving(false); + C = Controller; + // End:0x215 + if(C.RouteGoal == self) + { + C.RouteGoal = none; + } + // End:0x259 + if(C.MoveTarget == self) + { + C.MoveTarget = none; + } + Controller.UnPossess(); + // End:0x366 + if(Driver != none) + { + Driver.SetRotation(ExitRotation); + Driver.SetOwner(C); + C.Possess(Driver, true); + PC = PlayerController(C); + // End:0x346 + if(PC != none) + { + PC.ClientSetViewTarget(Driver); + } + Driver.StopDriving(self); + } + // End:0x388 + if(C == Controller) + { + Controller = none; + } + WorldInfo.Game.DriverLeftVehicle(self, Driver); + DriverLeft(); + return true; + //return ReturnValue; +} + +simulated function SetInputs(float InForward, float InStrafe, float InUp) +{ + Throttle = InForward; + Steering = InStrafe; + Rise = InUp; + //return; +} + +function DriverLeft() +{ + Driver = none; + SetDriving(false); + //return; +} + +function bool PlaceExitingDriver(optional Pawn ExitingDriver) +{ + local int I; + local Vector tryPlace, Extent, HitLocation, HitNormal, ZOffset; + + // End:0x23 + if(ExitingDriver == none) + { + ExitingDriver = Driver; + } + // End:0x34 + if(ExitingDriver == none) + { + return false; + } + Extent = ExitingDriver.GetCollisionRadius() * vect(1.0000000, 1.0000000, 0.0000000); + Extent.Z = ExitingDriver.GetCollisionHeight(); + ZOffset = Extent.Z * vect(0.0000000, 0.0000000, 1.0000000); + // End:0x289 + if(ExitPositions.Length > 0) + { + I = 0; + J0xF8: + + // End:0x286 [Loop If] + if(I < ExitPositions.Length) + { + // End:0x170 + if(ExitPositions[0].Z != float(0)) + { + ZOffset = vect(0.0000000, 0.0000000, 1.0000000) * ExitPositions[0].Z; + } + else + { + ZOffset = ExitingDriver.CylinderComponent.default.CollisionHeight * vect(0.0000000, 0.0000000, 2.0000000); + } + tryPlace = (Location + ((ExitPositions[I] - ZOffset) >> Rotation)) + ZOffset; + // End:0x24D + if(Trace(HitLocation, HitNormal, tryPlace, Location + ZOffset, false, Extent) != none) + { + } + else + { + // End:0x276 + if(!ExitingDriver.SetLocation(tryPlace)) + { + } + else + { + return true; + } + } + I++; + // [Loop Continue] + goto J0xF8; + } + } + else + { + return FindAutoExit(ExitingDriver); + } + return false; + //return ReturnValue; +} + +function bool FindAutoExit(Pawn ExitingDriver) +{ + local Vector FacingDir, CrossProduct; + local float PlaceDist; + + FacingDir = Vector(Rotation); + CrossProduct = Normal(FacingDir Cross vect(0.0000000, 0.0000000, 1.0000000)); + // End:0x7E + if(ExitRadius == float(0)) + { + ExitRadius = (GetCollisionRadius()) + ExitingDriver.VehicleCheckRadius; + } + PlaceDist = ExitRadius + ExitingDriver.GetCollisionRadius(); + return (((TryExitPos(ExitingDriver, ((GetTargetLocation()) + ExitOffset) + (PlaceDist * CrossProduct), false)) || TryExitPos(ExitingDriver, ((GetTargetLocation()) + ExitOffset) - (PlaceDist * CrossProduct), false)) || TryExitPos(ExitingDriver, ((GetTargetLocation()) + ExitOffset) - (PlaceDist * FacingDir), false)) || TryExitPos(ExitingDriver, ((GetTargetLocation()) + ExitOffset) + (PlaceDist * FacingDir), false); + //return ReturnValue; +} + +function bool TryExitPos(Pawn ExitingDriver, Vector ExitPos, bool bMustFindGround) +{ + local Vector Slice, HitLocation, HitNormal, StartLocation, NewActorPos; + + local Actor HitActor; + + Slice = ExitingDriver.GetCollisionRadius() * vect(1.0000000, 1.0000000, 0.0000000); + Slice.Z = 2.0000000; + StartLocation = GetTargetLocation(); + // End:0xAB + if(Trace(HitLocation, HitNormal, ExitPos, StartLocation, false, Slice) != none) + { + return false; + } + HitActor = Trace(HitLocation, HitNormal, ExitPos - (ExitingDriver.GetCollisionHeight() * vect(0.0000000, 0.0000000, 5.0000000)), ExitPos, true, Slice); + // End:0x149 + if(HitActor == none) + { + // End:0x136 + if(bMustFindGround) + { + return false; + } + HitLocation = ExitPos; + } + NewActorPos = HitLocation + ((ExitingDriver.GetCollisionHeight() + ExitingDriver.MaxStepHeight) * vect(0.0000000, 0.0000000, 1.0000000)); + // End:0x1EC + if(PointCheckComponent(Mesh, NewActorPos, ExitingDriver.GetCollisionExtent())) + { + return false; + } + return ExitingDriver.SetLocation(NewActorPos); + //return ReturnValue; +} + +function UnPossessed() +{ + NetPriority = default.NetPriority; + bForceNetUpdate = true; + NetUpdateFrequency = 8.0000000; + super.UnPossessed(); + //return; +} + +function Controller SetKillInstigator(Controller InstigatedBy, Class DamageType) +{ + return InstigatedBy; + //return ReturnValue; +} + +event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + bForceNetUpdate = true; + // End:0x7C + if(DamageType != none) + { + Damage *= DamageType.static.VehicleDamageScalingFor(self); + Momentum *= (DamageType.default.VehicleMomentumScaling * MomentumMult); + } + super.TakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + //return; +} + +function AdjustDriverDamage(out int Damage, Controller InstigatedBy, Vector HitLocation, out Vector Momentum, Class DamageType) +{ + // End:0x1B + if(InGodMode()) + { + Damage = 0; + } + else + { + Damage *= DriverDamageMult; + } + //return; +} + +function ThrowActiveWeapon(optional bool bDestroyWeap) +{ + //return; +} + +function bool Died(Controller Killer, Class DamageType, Vector HitLocation) +{ + // End:0x38 + if(super.Died(Killer, DamageType, HitLocation)) + { + SetDriving(false); + return true; + } + else + { + return false; + } + //return ReturnValue; +} + +function DriverDied(Class DamageType) +{ + local Controller C; + local PlayerReplicationInfo RealPRI; + + // End:0x11 + if(Driver == none) + { + return; + } + WorldInfo.Game.DiscardInventory(Driver); + C = Controller; + Driver.StopDriving(self); + Driver.Controller = C; + Driver.DrivenVehicle = self; + // End:0xDB + if(Controller == none) + { + return; + } + // End:0x178 + if(PlayerController(Controller) != none) + { + Controller.SetLocation(Location); + PlayerController(Controller).SetViewTarget(Driver); + PlayerController(Controller).ClientSetViewTarget(Driver); + } + Controller.UnPossess(); + // End:0x1B9 + if(Controller == C) + { + Controller = none; + } + C.Pawn = Driver; + RealPRI = Driver.PlayerReplicationInfo; + // End:0x255 + if(RealPRI == none) + { + Driver.PlayerReplicationInfo = C.PlayerReplicationInfo; + } + WorldInfo.Game.DriverLeftVehicle(self, Driver); + Driver.PlayerReplicationInfo = RealPRI; + DriverLeft(); + //return; +} + +simulated function PlayDying(Class DamageType, Vector HitLoc) +{ + //return; +} + +simulated function name GetDefaultCameraMode(PlayerController RequestedBy) +{ + // End:0x82 + if(((RequestedBy != none) && RequestedBy.PlayerCamera != none) && RequestedBy.PlayerCamera.CameraStyle == 'Fixed') + { + return 'Fixed'; + } + return 'ThirdPerson'; + //return ReturnValue; +} + +simulated function FaceRotation(Rotator NewRotation, float DeltaTime) +{ + //return; +} + +event EncroachedBy(Actor Other) +{ + //return; +} + +function Controller GetCollisionDamageInstigator() +{ + // End:0x1C + if(Controller != none) + { + return Controller; + } + else + { + return ((Instigator != none) ? Instigator.Controller : none); + } + //return ReturnValue; +} + +event bool EncroachingOn(Actor Other) +{ + local Pawn P; + local Vector PushVelocity, CheckExtent; + local bool bSlowEncroach, bDeepEncroach; + + P = Pawn(Other); + // End:0x2D + if(P == none) + { + return false; + } + bSlowEncroach = VSize(Velocity) < MinCrushSpeed; + // End:0x18F + if(bSlowEncroach) + { + CheckExtent.X = P.CylinderComponent.CollisionRadius - ForceCrushPenetration; + CheckExtent.Y = CheckExtent.X; + CheckExtent.Z = P.CylinderComponent.CollisionHeight - ForceCrushPenetration; + bDeepEncroach = PointCheckComponent(CollisionComponent, P.Location, CheckExtent); + } + // End:0x353 + if((((((Other == Instigator) && !bDeepEncroach) || Vehicle(Other) != none) || int(Other.Role) != int(ROLE_Authority)) || !Other.bCollideActors && !Other.bBlockActors) || bSlowEncroach && !bDeepEncroach) + { + // End:0x351 + if((P.Velocity Dot (Location - P.Location)) > float(0)) + { + PushVelocity = Normal(P.Location - Location) * float(200); + PushVelocity.Z = 100.0000000; + P.AddVelocity(PushVelocity, Location, CrushedDamageType); + } + return false; + } + // End:0x3F3 + if(P.Base == self) + { + RanInto(P); + // End:0x3CD + if(P.Base != none) + { + P.JumpOffPawn(); + } + // End:0x3F3 + if(P.Base == none) + { + return false; + } + } + PancakeOther(P); + return false; + //return ReturnValue; +} + +function PancakeOther(Pawn Other) +{ + Other.TakeDamage(10000, GetCollisionDamageInstigator(), Other.Location, Velocity * Other.Mass, CrushedDamageType); + //return; +} + +function CrushedBy(Pawn OtherPawn) +{ + //return; +} + +simulated event Vector GetEntryLocation() +{ + return Location; + //return ReturnValue; +} + +simulated function SetDriving(bool B) +{ + // End:0x38 + if(bDriving != B) + { + bDriving = B; + DrivingStatusChanged(); + } + //return; +} + +simulated function DrivingStatusChanged() +{ + // End:0x3C + if(!bDriving) + { + Throttle = 0.0000000; + Steering = 0.0000000; + Rise = 0.0000000; + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x24 + if(VarName == 'bDriving') + { + DrivingStatusChanged(); + } + else + { + // End:0x7D + if(VarName == 'Driver') + { + // End:0x7A + if((PlayerReplicationInfo != none) && Driver != none) + { + Driver.NotifyTeamChanged(); + } + } + else + { + super.ReplicatedEvent(VarName); + } + } + //return; +} + +function NotifyDriverTakeHit(Controller InstigatedBy, Vector HitLocation, int Damage, Class DamageType, Vector Momentum) +{ + //return; +} + +simulated function ZeroMovementVariables() +{ + super.ZeroMovementVariables(); + Steering = 0.0000000; + Rise = 0.0000000; + Throttle = 0.0000000; + //return; +} + +defaultproperties +{ + bAttachDriver=true + bRetryPathfindingWithDriver=true + bDoExtraNetRelevancyTraces=true + MomentumMult=1.0000000 + CrushedDamageType=Class'Engine.DmgType_Crushed' + MinCrushSpeed=20.0000000 + ForceCrushPenetration=10.0000000 + TurnTime=2.0000000 + bCanBeBaseForPawns=true + bDontPossess=true + bPathfindsAsVehicle=true + bReplicateHealthToAll=true + LandMovementState="PlayerDriving" + // Reference: CylinderComponent'Engine.Default__Vehicle.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Pawn.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + m_bSupportsRelativeLocationBase=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/Volume.uc b/exported/Engine/Classes/Volume.uc new file mode 100755 index 00000000..745ce601 --- /dev/null +++ b/exported/Engine/Classes/Volume.uc @@ -0,0 +1,143 @@ +class Volume extends Brush + native + nativereplication + notplaceable + hidecategories(Navigation,Object,Movement,Display); + +var Actor AssociatedActor; +var() bool bForcePawnWalk; +var() bool bProcessAllActors; +var() bool bExcludeNavmesh; +var(Collision) bool bPawnsOnly; +var(Collision) bool bLocalPawnsOnly; + +// Export UVolume::execEncompasses(FFrame&, void* const) +native function bool Encompasses(Actor Other); + +// Export UVolume::execEncompassesPoint(FFrame&, void* const) +native function bool EncompassesPoint(Vector Loc); + +event PostBeginPlay() +{ + super(Actor).PostBeginPlay(); + // End:0x34 + if(AssociatedActor != none) + { + GotoState('AssociatedTouch'); + InitialState = GetStateName(); + } + // End:0x83 + if(((int(WorldInfo.NetMode) == int(NM_DedicatedServer)) && bLocalPawnsOnly) && !bProcessAllActors) + { + SetCollision(false, false); + } + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + super(Actor).DisplayDebug(HUD, out_YL, out_YPos); + HUD.Canvas.DrawText("AssociatedActor " $ string(AssociatedActor), false); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x58 + if(Action.InputLinks[0].bHasImpulse) + { + // End:0x55 + if(!bCollideActors) + { + SetCollision(true, bBlockActors); + } + } + else + { + // End:0xAE + if(Action.InputLinks[1].bHasImpulse) + { + // End:0xAB + if(bCollideActors) + { + SetCollision(false, bBlockActors); + } + } + else + { + // End:0x100 + if(Action.InputLinks[2].bHasImpulse) + { + SetCollision(!bCollideActors, bBlockActors); + } + } + } + CollisionComponent.SetActorCollision(bCollideActors, CollisionComponent.BlockActors); + ForceNetRelevant(); + SetForcedInitialReplicatedProperty(BoolProperty'Engine.Actor.bCollideActors', bCollideActors == default.bCollideActors); + //return; +} + +simulated event CollisionChanged() +{ + CollisionComponent.SetBlockRigidBody(bCollideActors && bBlockActors); + //return; +} + +event ProcessActorSetVolume(Actor Other) +{ + //return; +} + +state AssociatedTouch +{ + event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) + { + AssociatedActor.Touch(Other, OtherComp, HitLocation, HitNormal); + //return; + } + + event UnTouch(Actor Other) + { + AssociatedActor.UnTouch(Other); + //return; + } + + event BeginState(name PreviousStateName) + { + local Actor A; + + // End:0x58 + foreach TouchingActors(Class'Engine.Actor', A) + { + Touch(A, none, A.Location, vect(0.0000000, 0.0000000, 1.0000000)); + } + //return; + } + stop; +} + +defaultproperties +{ + // Reference: BrushComponent'Engine.Default__Volume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Brush.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + bAcceptsLights=true + CollideActors=true + BlockNonZeroExtent=true + bDisableAllRigidBody=true + AlwaysLoadOnClient=true + AlwaysLoadOnServer=true + LightingChannels=(bInitialized=true,Dynamic=true) + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bSkipActorPropertyReplication=true + bCollideActors=true + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/VolumePathNode.uc b/exported/Engine/Classes/VolumePathNode.uc new file mode 100755 index 00000000..dc158334 --- /dev/null +++ b/exported/Engine/Classes/VolumePathNode.uc @@ -0,0 +1,32 @@ +class VolumePathNode extends PathNode + native + placeable + hidecategories(Navigation,Lighting,LightColor,Force); + +var() float StartingRadius; +var() float StartingHeight; + +defaultproperties +{ + StartingRadius=2000.0000000 + StartingHeight=2000.0000000 + bNoAutoConnect=true + bNotBased=true + bFlyingPreferred=true + bVehicleDestination=true + bBuildLongPaths=false + // Reference: CylinderComponent'Engine.Default__VolumePathNode.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__PathNode.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/Engine/Classes/VolumeTimer.uc b/exported/Engine/Classes/VolumeTimer.uc new file mode 100755 index 00000000..fc6c6f8f --- /dev/null +++ b/exported/Engine/Classes/VolumeTimer.uc @@ -0,0 +1,19 @@ +class VolumeTimer extends Info + notplaceable + hidecategories(Navigation,Movement,Collision); + +var PhysicsVolume V; + +event PostBeginPlay() +{ + super(Actor).PostBeginPlay(); + V = PhysicsVolume(Owner); + SetTimer(V.PainInterval, true); + //return; +} + +event Timer() +{ + V.TimerPop(self); + //return; +} diff --git a/exported/Engine/Classes/WallTransReachSpec.uc b/exported/Engine/Classes/WallTransReachSpec.uc new file mode 100755 index 00000000..e98b2246 --- /dev/null +++ b/exported/Engine/Classes/WallTransReachSpec.uc @@ -0,0 +1,7 @@ +class WallTransReachSpec extends ForcedReachSpec + native; + +defaultproperties +{ + bSkipPrune=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/WaterVolume.uc b/exported/Engine/Classes/WaterVolume.uc new file mode 100755 index 00000000..9c002eb0 --- /dev/null +++ b/exported/Engine/Classes/WaterVolume.uc @@ -0,0 +1,87 @@ +class WaterVolume extends PhysicsVolume + notplaceable + hidecategories(Navigation,Object,Movement,Display); + +var() SoundCue EntrySound; +var() Class EntryActor; +var() SoundCue ExitSound; +var() Class ExitActor; + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + super.Touch(Other, OtherComp, HitLocation, HitNormal); + // End:0x63 + if(Other.CanSplash()) + { + PlayEntrySplash(Other); + } + //return; +} + +function PlayEntrySplash(Actor Other) +{ + // End:0x7E + if(EntrySound != none) + { + Other.PlaySound(EntrySound); + // End:0x7E + if(Other.Instigator != none) + { + Other.MakeNoise(1.0000000); + } + } + // End:0xA6 + if(EntryActor != none) + { + Spawn(EntryActor); + } + //return; +} + +event UnTouch(Actor Other) +{ + // End:0x35 + if(Other.CanSplash()) + { + PlayExitSplash(Other); + } + //return; +} + +function PlayExitSplash(Actor Other) +{ + // End:0x7E + if(ExitSound != none) + { + Other.PlaySound(ExitSound); + // End:0x7E + if(Other.Instigator != none) + { + Other.MakeNoise(1.0000000); + } + } + // End:0xA6 + if(ExitActor != none) + { + Spawn(ExitActor); + } + //return; +} + +defaultproperties +{ + bWaterVolume=true + FluidFriction=2.4000000 + // Reference: BrushComponent'Engine.Default__WaterVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__PhysicsVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + RBChannel=ERBCollisionChannel.RBCC_Water + bDisableAllRigidBody=false + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/Engine/Classes/WaveFormBase.uc b/exported/Engine/Classes/WaveFormBase.uc new file mode 100755 index 00000000..6c77ca2b --- /dev/null +++ b/exported/Engine/Classes/WaveFormBase.uc @@ -0,0 +1,13 @@ +class WaveFormBase extends Object + abstract + native; + +var ForceFeedbackWaveform TheWaveForm; + +defaultproperties +{ + // Reference: ForceFeedbackWaveform'Engine.Default__WaveFormBase.ForceFeedbackWaveform' + begin object name="ForceFeedbackWaveform" class=Engine.ForceFeedbackWaveform + end object + TheWaveForm=ForceFeedbackWaveform +} \ No newline at end of file diff --git a/exported/Engine/Classes/Weapon.uc b/exported/Engine/Classes/Weapon.uc new file mode 100755 index 00000000..19a6d55a --- /dev/null +++ b/exported/Engine/Classes/Weapon.uc @@ -0,0 +1,84 @@ +class Weapon extends Inventory + abstract + native + notplaceable + hidecategories(Navigation); + +var AIController AIController; + +// Export UWeapon::execNativeIsFiring(FFrame&, void* const) +native function bool NativeIsFiring(); + +simulated event bool StartFire() +{ + //return ReturnValue; +} + +simulated function StopFire() +{ + //return; +} + +reliable server function ServerStopFire() +{ + //return; +} + +simulated event bool IsFiring() +{ + return NativeIsFiring(); + //return ReturnValue; +} + +simulated function DumpWeaponDebugToLog() +{ + //return; +} + +simulated function Activate() +{ + //return; +} + +function HolderDied() +{ + //return; +} + +simulated function bool DenyClientWeaponSet() +{ + return false; + //return ReturnValue; +} + +simulated function bool TryPutDown() +{ + return true; + //return ReturnValue; +} + +simulated function bool HasAnyAmmo() +{ + return true; + //return ReturnValue; +} + +simulated function float GetWeaponRating() +{ + return -1.0000000; + //return ReturnValue; +} + +function float GetAIRating() +{ + return 0.0000000; + //return ReturnValue; +} + +defaultproperties +{ + ItemName="Weapon" + Components=none + bReplicateInstigator=true + bOnlyDirtyReplication=false +} \ No newline at end of file diff --git a/exported/Engine/Classes/WindDirectionalSource.uc b/exported/Engine/Classes/WindDirectionalSource.uc new file mode 100755 index 00000000..9bce0e20 --- /dev/null +++ b/exported/Engine/Classes/WindDirectionalSource.uc @@ -0,0 +1,21 @@ +class WindDirectionalSource extends Info + placeable + hidecategories(Navigation,Movement,Collision) + classgroup(Wind); + +var() const editconst export editinline WindDirectionalSourceComponent Component; + +defaultproperties +{ + // Reference: WindDirectionalSourceComponent'Engine.Default__WindDirectionalSource.WindDirectionalSourceComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'WindDirectionalSourceComponent0' + begin object name="WindDirectionalSourceComponent0" class=Engine.WindDirectionalSourceComponent + end object + Component=WindDirectionalSourceComponent0 + Components[0]=none + Components[1]=WindDirectionalSourceComponent0 + Components[2]=none + bNoDelete=true + bServerTickIsDisabled=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/WindDirectionalSourceComponent.uc b/exported/Engine/Classes/WindDirectionalSourceComponent.uc new file mode 100755 index 00000000..3fd65a24 --- /dev/null +++ b/exported/Engine/Classes/WindDirectionalSourceComponent.uc @@ -0,0 +1,17 @@ +class WindDirectionalSourceComponent extends ActorComponent + native + editinlinenew + collapsecategories + hidecategories(Object); + +var private noimport native const transient Pointer SceneProxy; +var() interp float Strength; +var deprecated float Phase; +var deprecated float Frequency; +var() interp float Speed; + +defaultproperties +{ + Strength=1.0000000 + Speed=1.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/WindPointSource.uc b/exported/Engine/Classes/WindPointSource.uc new file mode 100755 index 00000000..3aba306b --- /dev/null +++ b/exported/Engine/Classes/WindPointSource.uc @@ -0,0 +1,21 @@ +class WindPointSource extends Info + native + placeable + hidecategories(Navigation,Collision) + classgroup(Wind); + +var() const editconst export editinline WindPointSourceComponent Component; + +defaultproperties +{ + // Reference: WindPointSourceComponent'Engine.Default__WindPointSource.WindPointSourceComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'WindPointSourceComponent0' + begin object name="WindPointSourceComponent0" class=Engine.WindPointSourceComponent + end object + Component=WindPointSourceComponent0 + Components[0]=none + Components[1]=none + Components[2]=WindPointSourceComponent0 + bNoDelete=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/WindPointSourceComponent.uc b/exported/Engine/Classes/WindPointSourceComponent.uc new file mode 100755 index 00000000..e4b0b560 --- /dev/null +++ b/exported/Engine/Classes/WindPointSourceComponent.uc @@ -0,0 +1,13 @@ +class WindPointSourceComponent extends WindDirectionalSourceComponent + native + editinlinenew + collapsecategories + hidecategories(Object,Object); + +var const export editinline DrawSphereComponent PreviewRadiusComponent; +var() interp float Radius; + +defaultproperties +{ + Radius=1024.0000000 +} \ No newline at end of file diff --git a/exported/Engine/Classes/WorldAttractor.uc b/exported/Engine/Classes/WorldAttractor.uc new file mode 100755 index 00000000..12021733 --- /dev/null +++ b/exported/Engine/Classes/WorldAttractor.uc @@ -0,0 +1,106 @@ +class WorldAttractor extends Actor + native(Physics) + placeable + hidecategories(Navigation,Lighting,LightColor,Force); + +enum EWorldAttractorFalloffType +{ + FOFF_Constant, // 0 + FOFF_Linear, // 1 + FOFF_Exponent, // 2 + FOFF_MAX // 3 +}; + +struct native WorldAttractorData +{ + var bool bEnabled; + var Vector Location; + var WorldAttractor.EWorldAttractorFalloffType FalloffType; + var float FalloffExponent; + var float Range; + var float Strength; + + structdefaultproperties + { + bEnabled=false + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + FalloffType=EWorldAttractorFalloffType.FOFF_Constant + FalloffExponent=0.0000000 + Range=0.0000000 + Strength=0.0000000 + } +}; + +var() bool bEnabled; +var() float LoopDuration; +var float CurrentTime; +var() WorldAttractor.EWorldAttractorFalloffType FalloffType; +var() interp MatineeRawDistributionFloat FalloffExponent; +var() interp MatineeRawDistributionFloat Range; +var() interp MatineeRawDistributionFloat Strength; +var() interp float CollisionRadius; +var() interp MatineeRawDistributionFloat DragCoefficient; +var() interp MatineeRawDistributionFloat DragRadius; + +function OnSetWorldAttractorParam(SeqAct_SetWorldAttractorParam Action) +{ + // End:0x4C + if(Action.bEnabledField) + { + bEnabled = Action.bEnabled; + } + // End:0x96 + if(Action.bFalloffTypeField) + { + FalloffType = Action.FalloffType; + } + // End:0xE0 + if(Action.bRangeField) + { + Range = Action.Range; + } + // End:0x12A + if(Action.bStrengthField) + { + Strength = Action.Strength; + } + //return; +} + +defaultproperties +{ + // Reference: DistributionFloatConstant'Engine.Default__WorldAttractor.DistributionFalloffExponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionFalloffExponent' + begin object name="DistributionFalloffExponent" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__WorldAttractor.DistributionRange' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionRange' + begin object name="DistributionRange" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + // Reference: DistributionFloatConstant'Engine.Default__WorldAttractor.DistributionStrength' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStrength' + begin object name="DistributionStrength" class=Engine.DistributionFloatConstant + end object + // Reference: DistributionFloatConstant'Engine.Default__WorldAttractor.DistributionDragCoefficient' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDragCoefficient' + begin object name="DistributionDragCoefficient" class=Engine.DistributionFloatConstant + Constant=1.0000000 + end object + // Reference: DistributionFloatConstant'Engine.Default__WorldAttractor.DistributionDragRadius' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDragRadius' + begin object name="DistributionDragRadius" class=Engine.DistributionFloatConstant + end object + bEnabled=true + FalloffExponent=(MatineeValue=0.0000000,bInMatinee=false,Distribution=Distribution=DistributionFalloffExponent,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Range=(MatineeValue=0.0000000,bInMatinee=false,Distribution=Distribution=DistributionRange,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Strength=(MatineeValue=0.0000000,bInMatinee=false,Distribution=Distribution=DistributionStrength,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + DragCoefficient=(MatineeValue=0.0000000,bInMatinee=false,Distribution=Distribution=DistributionDragCoefficient,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + DragRadius=(MatineeValue=0.0000000,bInMatinee=false,Distribution=Distribution=DistributionDragRadius,Type=0,Op=0,LookupTableNumElements=0,LookupTableChunkSize=0,LookupTable=none,LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + Components[0]=none +} \ No newline at end of file diff --git a/exported/Engine/Classes/WorldInfo.uc b/exported/Engine/Classes/WorldInfo.uc new file mode 100755 index 00000000..4d686e9e --- /dev/null +++ b/exported/Engine/Classes/WorldInfo.uc @@ -0,0 +1,926 @@ +class WorldInfo extends ZoneInfo + native(GameEngine) + nativereplication + config(Game) + notplaceable + hidecategories(Navigation,Movement,Collision,Actor,Advanced,Display,Events,Object,Attachment); + +const MAX_BOOKMARK_NUMBER = 10; +const MAX_INSTANCES_PER_CLASS = 5; + +enum ENetMode +{ + NM_Standalone, // 0 + NM_DedicatedServer, // 1 + NM_ListenServer, // 2 + NM_Client, // 3 + NM_MAX // 4 +}; + +enum EConsoleType +{ + CONSOLE_Any, // 0 + CONSOLE_Xbox360, // 1 + CONSOLE_PS3, // 2 + CONSOLE_Mobile, // 3 + CONSOLE_IPhone, // 4 + CONSOLE_Android, // 5 + CONSOLE_WiiU, // 6 + CONSOLE_Flash, // 7 + CONSOLE_Orbis, // 8 + CONSOLE_Durango, // 9 + CONSOLE_MAX // 10 +}; + +enum EVisibilityAggressiveness +{ + VIS_LeastAggressive, // 0 + VIS_ModeratelyAggressive, // 1 + VIS_MostAggressive, // 2 + VIS_Max // 3 +}; + +enum EPreferredLightmapType +{ + EPLT_Default, // 0 + EPLT_Directional, // 1 + EPLT_Simple, // 2 + EPLT_MAX // 3 +}; + +enum EHostMigrationProgress +{ + HostMigration_None, // 0 + HostMigration_FindingNewHost, // 1 + HostMigration_MigratingAsHost, // 2 + HostMigration_MigratingAsClient,// 3 + HostMigration_ClientTravel, // 4 + HostMigration_HostReadyToTravel,// 5 + HostMigration_Failed, // 6 + HostMigration_MAX // 7 +}; + +struct native NetViewer +{ + var PlayerController InViewer; + var Actor Viewer; + var Vector ViewLocation; + var Vector AlternateViewLocation; + var Vector ViewDir; + var bool bHasAlternateViewLocation; + + structdefaultproperties + { + InViewer=none + Viewer=none + ViewLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + AlternateViewLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + ViewDir=(X=0.0000000,Y=0.0000000,Z=0.0000000) + bHasAlternateViewLocation=false + } +}; + +struct native CompartmentRunList +{ + var() bool RigidBody; + var() bool Fluid; + var() bool Cloth; + var() bool SoftBody; + + structdefaultproperties + { + RigidBody=true + Fluid=true + Cloth=true + SoftBody=true + } +}; + +struct native PhysXSimulationProperties +{ + var() bool bUseHardware; + var() bool bFixedTimeStep; + var() float TimeStep; + var() int MaxSubSteps; + + structdefaultproperties + { + bUseHardware=false + bFixedTimeStep=false + TimeStep=0.0200000 + MaxSubSteps=5 + } +}; + +struct native PhysXSceneProperties +{ + var() editinline PhysXSimulationProperties PrimaryScene; + var() editinline PhysXSimulationProperties CompartmentRigidBody; + var() editinline PhysXSimulationProperties CompartmentFluid; + var() editinline PhysXSimulationProperties CompartmentCloth; + var() editinline PhysXSimulationProperties CompartmentSoftBody; + + structdefaultproperties + { + PrimaryScene=(bUseHardware=false,bFixedTimeStep=false,TimeStep=0.0200000,MaxSubSteps=5) + CompartmentRigidBody=(bUseHardware=false,bFixedTimeStep=false,TimeStep=0.0200000,MaxSubSteps=2) + CompartmentFluid=(bUseHardware=true,bFixedTimeStep=false,TimeStep=0.0200000,MaxSubSteps=1) + CompartmentCloth=(bUseHardware=true,bFixedTimeStep=true,TimeStep=0.0200000,MaxSubSteps=2) + CompartmentSoftBody=(bUseHardware=true,bFixedTimeStep=true,TimeStep=0.0200000,MaxSubSteps=2) + } +}; + +struct native ApexModuleDestructibleSettings +{ + var() int MaxChunkIslandCount; + var() int MaxShapeCount; + var int MaxRrbActorCount; + var() float MaxChunkSeparationLOD; + var() bool bOverrideMaxChunkSeparationLOD; + + structdefaultproperties + { + MaxChunkIslandCount=-1 + MaxShapeCount=-1 + MaxRrbActorCount=-1 + MaxChunkSeparationLOD=1.0000000 + bOverrideMaxChunkSeparationLOD=false + } +}; + +struct native PhysXEmitterVerticalProperties +{ + var() bool bDisableLod; + var() int ParticlesLodMin; + var() int ParticlesLodMax; + var() int PacketsPerPhysXParticleSystemMax; + var() bool bApplyCylindricalPacketCulling; + var() float SpawnLodVsFifoBias; + + structdefaultproperties + { + bDisableLod=true + ParticlesLodMin=0 + ParticlesLodMax=15000 + PacketsPerPhysXParticleSystemMax=500 + bApplyCylindricalPacketCulling=true + SpawnLodVsFifoBias=1.0000000 + } +}; + +struct native PhysXVerticalProperties +{ + var() editinline PhysXEmitterVerticalProperties Emitters; + + structdefaultproperties + { + Emitters=(bDisableLod=true,ParticlesLodMin=0,ParticlesLodMax=15000,PacketsPerPhysXParticleSystemMax=500,bApplyCylindricalPacketCulling=true,SpawnLodVsFifoBias=1.0000000) + } +}; + +struct native WorldFractureSettings +{ + var float ChanceOfPhysicsChunkOverride; + var bool bEnableChanceOfPhysicsChunkOverride; + var bool bLimitExplosionChunkSize; + var float MaxExplosionChunkSize; + var bool bLimitDamageChunkSize; + var float MaxDamageChunkSize; + var int MaxNumFacturedChunksToSpawnInAFrame; + var float FractureExplosionVelScale; + + structdefaultproperties + { + ChanceOfPhysicsChunkOverride=0.0000000 + bEnableChanceOfPhysicsChunkOverride=false + bLimitExplosionChunkSize=false + MaxExplosionChunkSize=0.0000000 + bLimitDamageChunkSize=false + MaxDamageChunkSize=0.0000000 + MaxNumFacturedChunksToSpawnInAFrame=0 + FractureExplosionVelScale=0.0000000 + } +}; + +struct native transient ScreenMessageString +{ + var init transient QWord Key; + var init transient string ScreenMessage; + var init transient Color DisplayColor; + var init transient float TimeToDisplay; + var init transient float CurrentTimeDisplayed; + + structdefaultproperties + { + Key=() + ScreenMessage="" + DisplayColor=(R=0,G=0,B=0,A=0) + TimeToDisplay=0.0000000 + CurrentTimeDisplayed=0.0000000 + } +}; + +struct native LightmassWorldInfoSettings +{ + var(General) float StaticLightingLevelScale; + var(General) int NumIndirectLightingBounces; + var(General) Color EnvironmentColor; + var(General) float EnvironmentIntensity; + var(AdvancedEnvironmentColor) bool bEnableAdvancedEnvironmentColor; + var(AdvancedEnvironmentColor) Color EnvironmentSunColor; + var(AdvancedEnvironmentColor) float EnvironmentSunIntensity; + var(AdvancedEnvironmentColor) float EnvironmentLightTerminatorAngle; + var(AdvancedEnvironmentColor) Vector EnvironmentLightDirection; + var(General) float EmissiveBoost; + var(General) float DiffuseBoost; + var float SpecularBoost; + var(General) float IndirectNormalInfluenceBoost; + var(Occlusion) bool bUseAmbientOcclusion; + var(Occlusion) bool bEnableImageReflectionShadowing; + var(Occlusion) float DirectIlluminationOcclusionFraction; + var(Occlusion) float IndirectIlluminationOcclusionFraction; + var(Occlusion) float OcclusionExponent; + var(Occlusion) float FullyOccludedSamplesFraction; + var(Occlusion) float MaxOcclusionDistance; + var(Debug) bool bVisualizeMaterialDiffuse; + var(Debug) bool bVisualizeAmbientOcclusion; + var(General) bool bCompressShadowmap; + + structdefaultproperties + { + StaticLightingLevelScale=1.0000000 + NumIndirectLightingBounces=3 + EnvironmentColor=(R=0,G=0,B=0,A=0) + EnvironmentIntensity=1.0000000 + bEnableAdvancedEnvironmentColor=false + EnvironmentSunColor=(R=0,G=0,B=0,A=0) + EnvironmentSunIntensity=1.0000000 + EnvironmentLightTerminatorAngle=90.0000000 + EnvironmentLightDirection=(X=0.0000000,Y=0.0000000,Z=0.0000000) + EmissiveBoost=1.0000000 + DiffuseBoost=5.0000000 + SpecularBoost=1.0000000 + IndirectNormalInfluenceBoost=0.3000000 + bUseAmbientOcclusion=false + bEnableImageReflectionShadowing=false + DirectIlluminationOcclusionFraction=0.5000000 + IndirectIlluminationOcclusionFraction=1.0000000 + OcclusionExponent=1.0000000 + FullyOccludedSamplesFraction=1.0000000 + MaxOcclusionDistance=200.0000000 + bVisualizeMaterialDiffuse=false + bVisualizeAmbientOcclusion=false + bCompressShadowmap=false + } +}; + +struct native NavMeshPathConstraintCacheDatum +{ + var int ListIdx; + var NavMeshPathConstraint List[5]; + + structdefaultproperties + { + ListIdx=0 + List[0]=none + List[1]=none + List[2]=none + List[3]=none + List[4]=none + } +}; + +struct native NavMeshPathGoalEvaluatorCacheDatum +{ + var int ListIdx; + var NavMeshPathGoalEvaluator List[5]; + + structdefaultproperties + { + ListIdx=0 + List[0]=none + List[1]=none + List[2]=none + List[3]=none + List[4]=none + } +}; + +struct native HostMigrationState +{ + var WorldInfo.EHostMigrationProgress HostMigrationProgress; + var float HostMigrationElapsedTime; + var float HostMigrationTravelCountdown; + var string HostMigrationTravelURL; + var bool bHostMigrationEnabled; + + structdefaultproperties + { + HostMigrationProgress=EHostMigrationProgress.HostMigration_None + HostMigrationElapsedTime=0.0000000 + HostMigrationTravelCountdown=0.0000000 + HostMigrationTravelURL="" + bHostMigrationEnabled=false + } +}; + +var(Rendering) config PostProcessSettings DefaultPostProcessSettings; +var(Rendering) PostProcessChain WorldPostProcessChain; +var(Rendering) config bool bPersistPostProcessToNextLevel; +var(Mobile) bool bFogEnabled; +var(Mobile) bool bBumpOffsetEnabled; +var(Mobile) bool bUseGammaCorrection; +var bool bMapNeedsLightingFullyRebuilt; +var bool bMapHasMultipleDominantLightsAffectingOnePrimitive; +var bool bMapHasPathingErrors; +var bool bRequestedBlockOnAsyncLoading; +var bool bBegunPlay; +var bool bPlayersOnly; +var bool bPlayersOnlyPending; +var bool bSuspendAI; +var transient bool bDropDetail; +var transient bool bAggressiveLOD; +var bool bStartup; +var bool bPathsRebuilt; +var bool bHasPathNodes; +var const transient bool bIsMenuLevel; +var editoronly const transient bool bDebugPauseExecution; +var editoronly const transient bool bDebugStepExecution; +var transient bool bUseConsoleInput; +var(Rendering) bool bMinimizeBSPSections; +var() bool bNoDefaultInventoryForPlayer; +var() bool bNoPathWarnings; +var() config bool bNoMobileMapWarnings; +var bool bHighPriorityLoading; +var bool bHighPriorityLoadingLocal; +var(ProcBuildings) bool bUseProcBuildingRulesetOverride; +var const transient bool bInteractiveMode; +var(PhysicsAdvanced) bool bSupportDoubleBufferedPhysics; +var(Physics) bool bPhysicsIgnoreDeltaTime; +var(Fracture) private config bool bEnableChanceOfPhysicsChunkOverride; +var(Fracture) private config bool bLimitExplosionChunkSize; +var(Fracture) private config bool bLimitDamageChunkSize; +var(PrecomputedVisibility) bool bPrecomputeVisibility; +var(PrecomputedVisibility) bool bPlaceCellsOnSurfaces; +var(Rendering) globalconfig bool bAllowTemporalAA; +var(Lightmass) editoronly bool bUseGlobalIllumination; +var(Lightmass) bool bForceNoPrecomputedLighting; +var bool bHaveActiveCrowd; +var config bool bAllowHostMigration; +var bool bGameplayFramePause; +var(Rendering) config float SquintModeKernelSize; +var noimport const transient PostProcessVolume HighestPriorityPostProcessVolume; +var(Audio) config ReverbSettings DefaultReverbSettings; +var(Audio) config InteriorSettings DefaultAmbientZoneSettings; +var(Mobile) float FogStart; +var(Mobile) float FogEnd; +var(Mobile) Color FogColor; +var(Mobile) float BumpEnd; +var noimport const transient ReverbVolume HighestPriorityReverbVolume; +var noimport const transient array MassiveLODOverrideVolumes; +var noimport const transient array PortalVolumes; +var noimport const transient array EnvironmentVolumes; +var() const editconst editinline array StreamingLevels; +var transient Double LastTimeUnbuiltLightingWasEncountered; +var float TimeDilation; +var float DemoPlayTimeDilation; +var transient float TimeSeconds; +var transient float RealTimeSeconds; +var transient float AudioTimeSeconds; +var const transient float DeltaSeconds; +var transient float PauseDelay; +var transient float RealTimeToUnPause; +var transient float m_fRealDeltaSeconds; +var PlayerReplicationInfo Pauser; +var Texture2D DefaultTexture; +var Texture2D WireframeTexture; +var Texture2D WhiteSquareTexture; +var Texture2D LargeVertex; +var Texture2D BSPVertex; +var array DeferredExecs; +var transient GameReplicationInfo GRI; +var WorldInfo.ENetMode NetMode; +var Actor.ETravelType NextTravelType; +var(PrecomputedVisibility) WorldInfo.EVisibilityAggressiveness VisibilityAggressiveness; +var WorldInfo.EPreferredLightmapType PreferredLightmapType; +var(Lightmass) editconst EngineTypes.ELightingBuildQuality LevelLightingQuality; +var string ComputerName; +var string EngineVersion; +var string MinNetVersion; +var GameInfo Game; +var(ZoneInfo) float StallZ; +var transient float WorldGravityZ; +var const globalconfig float DefaultGravityZ; +var(ZoneInfo) float GlobalGravityZ; +var globalconfig float RBPhysicsGravityScaling; +var(ZoneInfo) float m_fAudioAltitudeCeiling; +var(ZoneInfo) float m_fAudioAltitudeFloor; +var private const transient NavigationPoint NavigationPointList; +var private const Controller ControllerList; +var const Pawn PawnList; +var const transient CoverLink CoverList; +var private const transient Pylon PylonList; +var float MoveRepSize; +var const array ReplicationViewers; +var string NextURL; +var float NextSwitchCountdown; +var(Rendering) int PackedLightAndShadowMapTextureSize; +var(Rendering) Vector DefaultColorScale; +var(GameType) Class DefaultGameType; +var(GameType) array< Class > GameTypesSupportedOnThisMap; +var const editconst array ClientDestroyedActorContent; +var const transient array PreparingLevelNames; +var const transient name CommittedPersistentLevelName; +var ObjectReferencer PersistentMapForcedObjects; +var export editinline transient AudioComponent MusicComp; +var transient MusicTrackStruct CurrentMusicTrack; +var repnotify transient MusicTrackStruct ReplicatedMusicTrack; +var() const localized string Title; +var() string Author; +var() protected export editinline MapInfo MyMapInfo; +var globalconfig string EmitterPoolClassPath; +var transient EmitterPool MyEmitterPool; +var globalconfig string DecalManagerClassPath; +var transient DecalManager MyDecalManager; +var globalconfig string FractureManagerClassPath; +var transient FractureManager MyFractureManager; +var globalconfig string ParticleEventManagerClassPath; +var transient ParticleEventManager MyParticleEventManager; +var(ProcBuildings) ProcBuildingRuleset ProcBuildingRulesetOverride; +var const transient int SkelMeshCompTickTagCount; +var(PhysicsAdvanced) float MaxPhysicsDeltaTime; +var config int MaxPhysicsSubsteps; +var(PhysicsAdvanced) editinline PhysXSceneProperties PhysicsProperties; +var(PhysicsAdvanced) array CompartmentRunFrames; +var(PhysicsAdvanced) float DefaultSkinWidth; +var(PhysicsAdvanced) float ApexLODResourceBudget; +var(PhysicsAdvanced) float ApexDestructionLODResourceValue; +var(PhysicsAdvanced) float ApexClothingLODResourceValue; +var(PhysicsAdvanced) ApexModuleDestructibleSettings DestructibleSettings; +var PhysicsLODVerticalEmitter EmitterVertical; +var(PhysicsAdvanced) editinline PhysXVerticalProperties VerticalProperties; +var private native array WorldAttractors; +var(Fracture) private config float ChanceOfPhysicsChunkOverride; +var(Fracture) private config float MaxExplosionChunkSize; +var(Fracture) private config float MaxDamageChunkSize; +var(Fracture) private config float FractureExplosionVelScale; +var(Fracture) private int MaxNumFacturedChunksToSpawnInAFrame; +var transient int NumFacturedChunksSpawnedThisFrame; +var config float FracturedMeshWeaponDamage; +var(PrecomputedVisibility) int VisibilityCellSize; +var(LightEnvironment) float CharacterLitIndirectBrightness; +var(LightEnvironment) float CharacterLitIndirectContrastFactor; +var(LightEnvironment) float CharacterShadowedIndirectBrightness; +var(LightEnvironment) float CharacterShadowedIndirectContrastFactor; +var(LightEnvironment) float CharacterLightingContrastFactor; +var(Rendering) Texture2D ImageReflectionEnvironmentTexture; +var(Rendering) LinearColor ImageReflectionEnvironmentColor; +var(Rendering) float ImageReflectionEnvironmentRotation; +var native transient Map_Mirror ScreenMessages; +var native transient array PriorityScreenMessages; +var(Lightmass) LightmassWorldInfoSettings LightmassSettings; +var native map{VOID,VOID} NavMeshPathConstraintCache; +var native map{VOID,VOID} NavMeshPathGoalEvaluatorCache; +var CrowdPopulationManagerBase PopulationManager; +var const transient HostMigrationState PeerHostMigration; +var config float HostMigrationTimeout; +var float m_fPerfParticleScale; +var(Minimap) Texture2D m_MiniMapTexture; +var(Minimap) float m_fMiniMapSizeValue; +var(Payload) float m_fMinimumPayloadTravelTime; +var transient PhysicsVolume FirstPhysicsVolume; + +replication +{ + // Pos:0x000 + if(bNetDirty && int(Role) == int(ROLE_Authority)) + Pauser, ReplicatedMusicTrack, + TimeDilation, WorldGravityZ, + bHighPriorityLoading; +} + +// Export UWorldInfo::execReleaseCachedConstraintsAndEvaluators(FFrame&, void* const) +native function ReleaseCachedConstraintsAndEvaluators(); + +// Export UWorldInfo::execGetNavMeshPathConstraintFromCache(FFrame&, void* const) +native function NavMeshPathConstraint GetNavMeshPathConstraintFromCache(Class ConstraintClass, NavigationHandle Requestor); + +// Export UWorldInfo::execGetNavMeshPathGoalEvaluatorFromCache(FFrame&, void* const) +native function NavMeshPathGoalEvaluator GetNavMeshPathGoalEvaluatorFromCache(Class GoalEvalClass, NavigationHandle Requestor); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x2A + if(VarName == 'ReplicatedMusicTrack') + { + UpdateMusicTrack(ReplicatedMusicTrack); + } + super(Actor).ReplicatedEvent(VarName); + //return; +} + +// Export UWorldInfo::execAddOnScreenDebugMessage(FFrame&, void* const) +native final function AddOnScreenDebugMessage(int Key, float TimeToDisplay, Color DisplayColor, string DebugMessage); + +// Export UWorldInfo::execIsMenuLevel(FFrame&, void* const) +native static final function bool IsMenuLevel(optional string MapName); + +// Export UWorldInfo::execSetMusicVolume(FFrame&, void* const) +native final function SetMusicVolume(float VolumeMultiplier); + +// Export UWorldInfo::execUpdateMusicTrack(FFrame&, void* const) +native final function UpdateMusicTrack(MusicTrackStruct NewMusicTrack); + +// Export UWorldInfo::execGetGravityZ(FFrame&, void* const) +native function float GetGravityZ(); + +// Export UWorldInfo::execGetGameSequence(FFrame&, void* const) +native final simulated function Sequence GetGameSequence(); + +// Export UWorldInfo::execGetAllRootSequences(FFrame&, void* const) +native final simulated function array GetAllRootSequences(); + +// Export UWorldInfo::execSetLevelRBGravity(FFrame&, void* const) +native final function SetLevelRBGravity(Vector NewGrav); + +// Export UWorldInfo::execGetLocalURL(FFrame&, void* const) +native simulated function string GetLocalURL(); + +// Export UWorldInfo::execIsDemoBuild(FFrame&, void* const) +native static final simulated function bool IsDemoBuild(); + +// Export UWorldInfo::execIsConsoleBuild(FFrame&, void* const) +native static final simulated function bool IsConsoleBuild(optional WorldInfo.EConsoleType ConsoleType = 0); + +// Export UWorldInfo::execIsTencentBuild(FFrame&, void* const) +native static final simulated function bool IsTencentBuild(); + +// Export UWorldInfo::execIsWithGFx(FFrame&, void* const) +native static final simulated function bool IsWithGFx(); + +// Export UWorldInfo::execIsPlayInEditor(FFrame&, void* const) +native static final simulated function bool IsPlayInEditor(); + +// Export UWorldInfo::execIsPlayInPreview(FFrame&, void* const) +native static final simulated function bool IsPlayInPreview(); + +// Export UWorldInfo::execIsPlayInMobilePreview(FFrame&, void* const) +native static final simulated function bool IsPlayInMobilePreview(); + +// Export UWorldInfo::execIsOverridePlatform(FFrame&, void* const) +native static final simulated function bool IsOverridePlatform(WorldInfo.EConsoleType ConsoleType); + +// Export UWorldInfo::execForceGarbageCollection(FFrame&, void* const) +native final simulated function ForceGarbageCollection(optional bool bFullPurge); + +// Export UWorldInfo::execVerifyNavList(FFrame&, void* const) +native final simulated function VerifyNavList(); + +// Export UWorldInfo::execGetAddressURL(FFrame&, void* const) +native simulated function string GetAddressURL(); + +simulated function Class GetGameClass() +{ + // End:0x58 + if(WorldInfo.Game != none) + { + return WorldInfo.Game.Class; + } + // End:0xAC + if((GRI != none) && GRI.GameClass != none) + { + return GRI.GameClass; + } + return none; + //return ReturnValue; +} + +simulated event ServerTravel(string URL, optional bool bAbsolute, optional bool bShouldSkipGameNotify) +{ + // End:0x1B + if(InStr(URL, "%") >= 0) + { + return; + } + // End:0x66 + if(((InStr(URL, ":") >= 0) || InStr(URL, "/") >= 0) || InStr(URL, "\\") >= 0) + { + return; + } + // End:0x9B + if((Game != none) && Game.bHasNetworkError) + { + return; + } + NextTravelType = ((bAbsolute) ? 0 : 2); + // End:0x15D + if((NextURL == "") && !IsInSeamlessTravel() || bShouldSkipGameNotify) + { + NextURL = URL; + // End:0x14E + if(Game != none) + { + // End:0x14B + if(!bShouldSkipGameNotify) + { + Game.ProcessServerTravel(URL, bAbsolute); + } + } + else + { + NextSwitchCountdown = 0.0000000; + } + } + //return; +} + +function ThisIsNeverExecuted(DefaultPhysicsVolume P) +{ + P = none; + //return; +} + +simulated function PreBeginPlay() +{ + local Class PoolClass; + local Class DecalManagerClass; + local Class FractureManagerClass; + local Class ParticleEventManagerClass; + + super(Actor).PreBeginPlay(); + // End:0x26B + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && IsInPersistentLevel()) + { + // End:0xCD + if(EmitterPoolClassPath != "") + { + PoolClass = Class(DynamicLoadObject(EmitterPoolClassPath, Class'Core.Class')); + // End:0xCD + if(PoolClass != none) + { + MyEmitterPool = Spawn(PoolClass, self,, vect(0.0000000, 0.0000000, 0.0000000), rot(0, 0, 0)); + } + } + // End:0x157 + if(DecalManagerClassPath != "") + { + DecalManagerClass = Class(DynamicLoadObject(DecalManagerClassPath, Class'Core.Class')); + // End:0x157 + if(DecalManagerClass != none) + { + MyDecalManager = Spawn(DecalManagerClass, self,, vect(0.0000000, 0.0000000, 0.0000000), rot(0, 0, 0)); + } + } + // End:0x1E1 + if(FractureManagerClassPath != "") + { + FractureManagerClass = Class(DynamicLoadObject(FractureManagerClassPath, Class'Core.Class')); + // End:0x1E1 + if(FractureManagerClass != none) + { + MyFractureManager = Spawn(FractureManagerClass, self,, vect(0.0000000, 0.0000000, 0.0000000), rot(0, 0, 0)); + } + } + // End:0x26B + if(ParticleEventManagerClassPath != "") + { + ParticleEventManagerClass = Class(DynamicLoadObject(ParticleEventManagerClassPath, Class'Core.Class')); + // End:0x26B + if(ParticleEventManagerClass != none) + { + MyParticleEventManager = Spawn(ParticleEventManagerClass, self,, vect(0.0000000, 0.0000000, 0.0000000), rot(0, 0, 0)); + } + } + } + //return; +} + +simulated function PostBeginPlay() +{ + super(Actor).PostBeginPlay(); + // End:0x24 + if(IsConsoleBuild()) + { + bUseConsoleInput = true; + } + //return; +} + +function Reset() +{ + super(Actor).Reset(); + //return; +} + +// Export UWorldInfo::execAllNavigationPoints(FFrame&, void* const) +native final iterator function AllNavigationPoints(Class BaseClass, out NavigationPoint N); + +// Export UWorldInfo::execRadiusNavigationPoints(FFrame&, void* const) +native final iterator function RadiusNavigationPoints(Class BaseClass, out NavigationPoint N, Vector Point, float Radius); + +// Export UWorldInfo::execNavigationPointCheck(FFrame&, void* const) +native final function NavigationPointCheck(Vector Point, Vector Extent, optional out array Navs, optional out array Specs); + +// Export UWorldInfo::execAllControllers(FFrame&, void* const) +native final iterator function AllControllers(Class BaseClass, out Controller C); + +// Export UWorldInfo::execAllPawns(FFrame&, void* const) +native final iterator function AllPawns(Class BaseClass, out Pawn P, optional Vector TestLocation, optional float TestRadius); + +// Export UWorldInfo::execAllClientConnections(FFrame&, void* const) +native final iterator function AllClientConnections(out Player ClientConnection, out IpAddr ClientIP, out int ClientPort); + +// Export UWorldInfo::execNotifyMatchStarted(FFrame&, void* const) +native final function NotifyMatchStarted(optional bool bShouldActivateLevelStartupEvents = true, optional bool bShouldActivateLevelBeginningEvents = true, optional bool bShouldActivateLevelLoadedEvents = false); + +// Export UWorldInfo::execPrepareMapChange(FFrame&, void* const) +native final function PrepareMapChange(const out array LevelNames); + +// Export UWorldInfo::execIsPreparingMapChange(FFrame&, void* const) +native final function bool IsPreparingMapChange(); + +// Export UWorldInfo::execIsMapChangeReady(FFrame&, void* const) +native final function bool IsMapChangeReady(); + +// Export UWorldInfo::execCancelPendingMapChange(FFrame&, void* const) +native final function CancelPendingMapChange(); + +// Export UWorldInfo::execCommitMapChange(FFrame&, void* const) +native final function CommitMapChange(); + +// Export UWorldInfo::execSeamlessTravel(FFrame&, void* const) +native final function SeamlessTravel(string URL, optional bool bAbsolute, init optional Guid MapPackageGuid); + +// Export UWorldInfo::execIsInSeamlessTravel(FFrame&, void* const) +native final function bool IsInSeamlessTravel(); + +// Export UWorldInfo::execSetSeamlessTravelMidpointPause(FFrame&, void* const) +native final function SetSeamlessTravelMidpointPause(bool bNowPaused); + +// Export UWorldInfo::execGetMapInfo(FFrame&, void* const) +native final function MapInfo GetMapInfo(); + +// Export UWorldInfo::execSetMapInfo(FFrame&, void* const) +native final function SetMapInfo(MapInfo NewMapInfo); + +// Export UWorldInfo::execGetMapName(FFrame&, void* const) +native final function string GetMapName(optional bool bIncludePrefix); + +// Export UWorldInfo::execGetDetailMode(FFrame&, void* const) +native final function Scene.EDetailMode GetDetailMode(); + +// Export UWorldInfo::execIsRecordingDemo(FFrame&, void* const) +native final function bool IsRecordingDemo(); + +// Export UWorldInfo::execIsPlayingDemo(FFrame&, void* const) +native final function bool IsPlayingDemo(); + +// Export UWorldInfo::execGetDemoFrameInfo(FFrame&, void* const) +native final function GetDemoFrameInfo(optional out int CurrentFrame, optional out int TotalFrames); + +// Export UWorldInfo::execGetDemoRewindPoints(FFrame&, void* const) +native final function bool GetDemoRewindPoints(out array OutRewindPoints); + +// Export UWorldInfo::execDoMemoryTracking(FFrame&, void* const) +native final function DoMemoryTracking(); + +// Export UWorldInfo::execGetWorldFractureSettings(FFrame&, void* const) +native final function WorldFractureSettings GetWorldFractureSettings(); + +// Export UWorldInfo::execGetWorldInfo(FFrame&, void* const) +native static final function WorldInfo GetWorldInfo(); + +// Export UWorldInfo::execFindEnvironmentVolume(FFrame&, void* const) +native final function EnvironmentVolume FindEnvironmentVolume(Vector TestLocation); + +simulated event bool CanBeginHostMigration() +{ + local PlayerController PC; + + // End:0x90 + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + // End:0x8F + if(PC.IsPrimaryPlayer()) + { + // End:0x8F + if(!PC.CanAllPlayersPlayOnline() || PC.BestNextHostPeers.Length == 0) + { + return false; + } + } + } + return true; + //return ReturnValue; +} + +// Export UWorldInfo::execBeginHostMigration(FFrame&, void* const) +native function bool BeginHostMigration(); + +simulated event NotifyHostMigrationStateChanged(WorldInfo.EHostMigrationProgress NewState, WorldInfo.EHostMigrationProgress OldState) +{ + local PlayerController PC; + + // End:0x8F + if((int(OldState) == int(0)) && int(NewState) != int(0)) + { + // End:0x8E + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + // End:0x8D + if(PC.IsPrimaryPlayer()) + { + PC.NotifyHostMigrationStarted(); + // End:0x8E + break; + } + } + } + //return; +} + +// Export UWorldInfo::execToggleHostMigration(FFrame&, void* const) +native function ToggleHostMigration(bool bEnabled); + +// Export UWorldInfo::execClearObjectPools(FFrame&, void* const) +native final function ClearObjectPools(); + +// Export UWorldInfo::execIsPlayingTimelapse(FFrame&, void* const) +native final function bool IsPlayingTimelapse(); + +// Export UWorldInfo::execIsTimelapsePlayOfTheGame(FFrame&, void* const) +native final function bool IsTimelapsePlayOfTheGame(); + +// Export UWorldInfo::execIsRecordingTimelapse(FFrame&, void* const) +native final function bool IsRecordingTimelapse(); + +defaultproperties +{ + DefaultPostProcessSettings=(bOverride_EnableBloom=true,bOverride_EnableDOF=true,bOverride_EnableMotionBlur=true,bOverride_EnableSceneEffect=true,bOverride_AllowAmbientOcclusion=true,bOverride_OverrideRimShaderColor=true,bOverride_Bloom_Scale=true,bOverride_Bloom_Threshold=true,bOverride_Bloom_Tint=true,bOverride_Bloom_ScreenBlendThreshold=true,bOverride_Bloom_InterpolationDuration=true,bOverride_DOF_FalloffExponent=true,bOverride_DOF_BlurKernelSize=true,bOverride_DOF_BlurBloomKernelSize=true,bOverride_DOF_MaxNearBlurAmount=true,bOverride_DOF_MinBlurAmount=false,bOverride_DOF_MaxFarBlurAmount=true,bOverride_DOF_FocusType=true,bOverride_DOF_FocusInnerRadius=true,bOverride_DOF_FocusDistance=true,bOverride_DOF_FocusPosition=true,bOverride_DOF_InterpolationDuration=true,bOverride_DOF_BokehTexture=false,bOverride_MotionBlur_MaxVelocity=false,bOverride_MotionBlur_Amount=false,bOverride_MotionBlur_FullMotionBlur=false,bOverride_MotionBlur_CameraRotationThreshold=false,bOverride_MotionBlur_CameraTranslationThreshold=false,bOverride_MotionBlur_InterpolationDuration=false,bOverride_Scene_Desaturation=true,bOverride_Scene_Colorize=false,bOverride_Scene_TonemapperScale=false,bOverride_Scene_ImageGrainScale=false,bOverride_Scene_HighLights=true,bOverride_Scene_MidTones=true,bOverride_Scene_Shadows=true,bOverride_Scene_InterpolationDuration=true,bOverride_Scene_ColorGradingLUT=false,bOverride_RimShader_Color=true,bOverride_RimShader_InterpolationDuration=true,bOverride_MobileColorGrading=false,bEnableBloom=true,bEnableDOF=false,bEnableMotionBlur=true,bEnableSceneEffect=true,bAllowAmbientOcclusion=true,bOverrideRimShaderColor=false,Bloom_Scale=0.4000000,Bloom_Threshold=1.0000000,Bloom_Tint=(R=255,G=255,B=255,A=0),Bloom_ScreenBlendThreshold=10.0000000,Bloom_InterpolationDuration=1.0000000,DOF_BlurBloomKernelSize=16.0000000,DOF_FalloffExponent=4.0000000,DOF_BlurKernelSize=12.0000000,DOF_MaxNearBlurAmount=0.0000000,DOF_MinBlurAmount=0.0000000,DOF_MaxFarBlurAmount=1.0000000,DOF_FocusType=EFocusType.FOCUS_Distance,DOF_FocusInnerRadius=2000.0000000,DOF_FocusDistance=0.0000000,DOF_FocusPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000),DOF_InterpolationDuration=1.0000000,DOF_BokehTexture=none,MotionBlur_MaxVelocity=1.0000000,MotionBlur_Amount=0.5000000,MotionBlur_FullMotionBlur=true,MotionBlur_CameraRotationThreshold=45.0000000,MotionBlur_CameraTranslationThreshold=10000.0000000,MotionBlur_InterpolationDuration=1.0000000,Scene_Desaturation=0.0000000,Scene_Colorize=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_TonemapperScale=1.0000000,Scene_ImageGrainScale=0.0000000,Scene_HighLights=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_MidTones=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_Shadows=(X=0.0000000,Y=0.0000000,Z=0.0000000),Scene_InterpolationDuration=1.0000000,RimShader_Color=(R=0.4704400,G=0.5859730,B=0.8277260,A=1.0000000),RimShader_InterpolationDuration=1.0000000,ColorGrading_LookupTable=none,ColorGradingLUT=(LUTTextures=none,LUTWeights=none),MobileColorGrading=(TransitionTime=1.0000000,Blend=0.0000000,Desaturation=0.0000000,HighLights=(R=0.7000000,G=0.7000000,B=0.7000000,A=1.0000000),MidTones=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000),Shadows=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000)),MobilePostProcess=(bOverride_Mobile_BlurAmount=false,bOverride_Mobile_TransitionTime=false,bOverride_Mobile_Bloom_Scale=false,bOverride_Mobile_Bloom_Threshold=false,bOverride_Mobile_Bloom_Tint=false,bOverride_Mobile_DOF_Distance=false,bOverride_Mobile_DOF_MinRange=false,bOverride_Mobile_DOF_MaxRange=false,bOverride_Mobile_DOF_NearBlurFactor=false,bOverride_Mobile_DOF_FarBlurFactor=false,Mobile_BlurAmount=16.0000000,Mobile_TransitionTime=1.0000000,Mobile_Bloom_Scale=6.0000000,Mobile_Bloom_Threshold=0.5000000,Mobile_Bloom_Tint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000),Mobile_DOF_Distance=1500.0000000,Mobile_DOF_MinRange=600.0000000,Mobile_DOF_MaxRange=1200.0000000,Mobile_DOF_NearBlurFactor=1.0000000,Mobile_DOF_FarBlurFactor=1.0000000),Death_Enable=false,Death_DesatAlpha=0.0000000,Hit_Enable=false,Hit_FadeAlpha=0.0000000,ColorBlind_Enable=false,ColorBlind_Mode=0) + bPersistPostProcessToNextLevel=true + bBumpOffsetEnabled=true + bNoMobileMapWarnings=true + bPlaceCellsOnSurfaces=true + bAllowTemporalAA=true + SquintModeKernelSize=128.0000000 + DefaultReverbSettings=(bApplyReverb=true,ReverbType=ReverbPreset.REVERB_Default,Volume=0.5000000,FadeTime=2.0000000) + DefaultAmbientZoneSettings=(bIsWorldInfo=true,ExteriorVolume=1.0000000,ExteriorTime=0.5000000,ExteriorLPF=1.0000000,ExteriorLPFTime=0.5000000,InteriorVolume=1.0000000,InteriorTime=0.5000000,InteriorLPF=1.0000000,InteriorLPFTime=0.5000000,InsulationDistanceMin=0.0000000,InsulationDistanceMax=0.0000000,InsulationTime=0.5000000) + FogStart=400.0000000 + FogEnd=4000.0000000 + FogColor=(R=128,G=128,B=255,A=192) + BumpEnd=1000.0000000 + TimeDilation=1.0000000 + DemoPlayTimeDilation=1.0000000 + DefaultTexture=Texture2D'EngineResources.DefaultTexture' + WhiteSquareTexture=Texture2D'EngineResources.WhiteSquareTexture' + NextTravelType=ETravelType.TRAVEL_Relative + LevelLightingQuality=ELightingBuildQuality.None + StallZ=1000000.0000000 + DefaultGravityZ=-750.0000000 + RBPhysicsGravityScaling=2.0000000 + m_fAudioAltitudeCeiling=3000.0000000 + MoveRepSize=42.0000000 + PackedLightAndShadowMapTextureSize=1024 + DefaultColorScale=(X=1.0000000,Y=1.0000000,Z=1.0000000) + CurrentMusicTrack=(TheSoundCue=none,bAutoPlay=false,bPersistentAcrossLevels=false,FadeInTime=5.0000000,FadeInVolumeLevel=1.0000000,FadeOutTime=5.0000000,FadeOutVolumeLevel=0.0000000,MP3Filename="") + ReplicatedMusicTrack=(TheSoundCue=none,bAutoPlay=false,bPersistentAcrossLevels=false,FadeInTime=5.0000000,FadeInVolumeLevel=1.0000000,FadeOutTime=5.0000000,FadeOutVolumeLevel=0.0000000,MP3Filename="") + EmitterPoolClassPath="Engine.EmitterPool" + DecalManagerClassPath="TgGame.TgDecalManager" + FractureManagerClassPath="Engine.FractureManager" + MaxPhysicsDeltaTime=0.3333333 + MaxPhysicsSubsteps=5 + PhysicsProperties=(PrimaryScene=(bUseHardware=false,bFixedTimeStep=false,TimeStep=0.0200000,MaxSubSteps=5),CompartmentRigidBody=(bUseHardware=false,bFixedTimeStep=false,TimeStep=0.0200000,MaxSubSteps=2),CompartmentFluid=(bUseHardware=true,bFixedTimeStep=false,TimeStep=0.0200000,MaxSubSteps=1),CompartmentCloth=(bUseHardware=true,bFixedTimeStep=true,TimeStep=0.0200000,MaxSubSteps=2),CompartmentSoftBody=(bUseHardware=true,bFixedTimeStep=true,TimeStep=0.0200000,MaxSubSteps=2)) + DefaultSkinWidth=0.0250000 + ApexLODResourceBudget=-1.0000000 + ApexDestructionLODResourceValue=1000.0000000 + ApexClothingLODResourceValue=1000.0000000 + DestructibleSettings=(MaxChunkIslandCount=-1,MaxShapeCount=-1,MaxRrbActorCount=-1,MaxChunkSeparationLOD=1.0000000,bOverrideMaxChunkSeparationLOD=false) + // Reference: PhysicsLODVerticalEmitter'Engine.Default__WorldInfo.PhysicsLODVerticalEmitter0' + begin object name="PhysicsLODVerticalEmitter0" class=Engine.PhysicsLODVerticalEmitter + end object + EmitterVertical=PhysicsLODVerticalEmitter0 + VerticalProperties=(Emitters=(bDisableLod=true,ParticlesLodMin=0,ParticlesLodMax=15000,PacketsPerPhysXParticleSystemMax=500,bApplyCylindricalPacketCulling=true,SpawnLodVsFifoBias=1.0000000)) + ChanceOfPhysicsChunkOverride=1.0000000 + FractureExplosionVelScale=1.0000000 + MaxNumFacturedChunksToSpawnInAFrame=12 + FracturedMeshWeaponDamage=1.0000000 + VisibilityCellSize=200 + CharacterLitIndirectBrightness=1.0000000 + CharacterLitIndirectContrastFactor=1.0000000 + CharacterShadowedIndirectBrightness=1.0000000 + CharacterShadowedIndirectContrastFactor=1.0000000 + CharacterLightingContrastFactor=1.5000000 + ImageReflectionEnvironmentColor=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000) + LightmassSettings=(StaticLightingLevelScale=1.0000000,NumIndirectLightingBounces=3,EnvironmentColor=(R=0,G=0,B=0,A=0),EnvironmentIntensity=1.0000000,bEnableAdvancedEnvironmentColor=false,EnvironmentSunColor=(R=0,G=0,B=0,A=0),EnvironmentSunIntensity=1.0000000,EnvironmentLightTerminatorAngle=90.0000000,EnvironmentLightDirection=(X=0.0000000,Y=0.0000000,Z=0.0000000),EmissiveBoost=1.0000000,DiffuseBoost=5.0000000,SpecularBoost=1.0000000,IndirectNormalInfluenceBoost=0.3000000,bUseAmbientOcclusion=false,bEnableImageReflectionShadowing=false,DirectIlluminationOcclusionFraction=0.5000000,IndirectIlluminationOcclusionFraction=1.0000000,OcclusionExponent=1.0000000,FullyOccludedSamplesFraction=1.0000000,MaxOcclusionDistance=200.0000000,bVisualizeMaterialDiffuse=false,bVisualizeAmbientOcclusion=false,bCompressShadowmap=false) + HostMigrationTimeout=15.0000000 + m_fPerfParticleScale=1.0000000 + m_fMiniMapSizeValue=14.0000000 + m_fMinimumPayloadTravelTime=60.0000000 + Components=none + RemoteRole=ENetRole.ROLE_SimulatedProxy + bWorldGeometry=true + bAlwaysRelevant=true + bMovable=false + bBlockActors=true + bHiddenEd=true +} \ No newline at end of file diff --git a/exported/Engine/Classes/ZoneInfo.uc b/exported/Engine/Classes/ZoneInfo.uc new file mode 100755 index 00000000..787e8014 --- /dev/null +++ b/exported/Engine/Classes/ZoneInfo.uc @@ -0,0 +1,19 @@ +class ZoneInfo extends Info + native + notplaceable + hidecategories(Navigation,Movement,Collision); + +var() float KillZ; +var() float SoftKill; +var() Class KillZDamageType; +var() bool bSoftKillZ; + +defaultproperties +{ + KillZ=-262143.0000000 + SoftKill=2500.0000000 + KillZDamageType=Class'Engine.KillZDamageType' + bStatic=true + bNoDelete=true + bGameRelevant=true +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/DebugCameraController.uc b/exported/GameFramework/Classes/DebugCameraController.uc new file mode 100755 index 00000000..89cb5b17 --- /dev/null +++ b/exported/GameFramework/Classes/DebugCameraController.uc @@ -0,0 +1,231 @@ +class DebugCameraController extends GamePlayerController + native + config(Input) + hidecategories(Navigation); + +var globalconfig name PrimaryKey; +var globalconfig name SecondaryKey; +var globalconfig name UnselectKey; +var globalconfig bool bShowSelectedInfo; +var bool bDrawDebugText; +var bool bIsFrozenRendering; +var Class HUDClass; +var PlayerController OriginalControllerRef; +var Player OriginalPlayer; +var export editinline DrawFrustumComponent DrawFrustum; +var Actor SelectedActor; +var export editinline PrimitiveComponent SelectedComponent; + +// Export UDebugCameraController::execPrimarySelect(FFrame&, void* const) +native function PrimarySelect(Vector HitLoc, Vector HitNormal, TraceHitInfo HitInfo); + +// Export UDebugCameraController::execSecondarySelect(FFrame&, void* const) +native function SecondarySelect(Vector HitLoc, Vector HitNormal, TraceHitInfo HitInfo); + +// Export UDebugCameraController::execUnselect(FFrame&, void* const) +native function Unselect(); + +simulated event PostBeginPlay() +{ + super(PlayerController).PostBeginPlay(); + // End:0x31 + if(myHUD != none) + { + myHUD.Destroy(); + } + myHUD = Spawn(HUDClass, self); + //return; +} + +function OnActivate(PlayerController PC) +{ + // End:0x4B + if(DebugCameraHUD(myHUD) != none) + { + DebugCameraHUD(myHUD).bDrawDebugText = bDrawDebugText; + } + // End:0x8F + if(DrawFrustum == none) + { + DrawFrustum = new (PC.PlayerCamera) Class'Engine.DrawFrustumComponent'; + } + // End:0xEA + if(bDrawDebugText) + { + DrawFrustum.SetHidden(false); + ConsoleCommand("show camfrustums true"); + } + else + { + DrawFrustum.SetHidden(true); + ConsoleCommand("show camfrustums false"); + } + PC.SetHidden(false); + PC.PlayerCamera.SetHidden(false); + DrawFrustum.FrustumAngle = PC.PlayerCamera.CameraCache.POV.FOV; + DrawFrustum.SetAbsolute(true, true, false); + DrawFrustum.SetTranslation(PC.PlayerCamera.CameraCache.POV.Location); + DrawFrustum.SetRotation(PC.PlayerCamera.CameraCache.POV.Rotation); + PC.PlayerCamera.AttachComponent(DrawFrustum); + //return; +} + +function OnDeactivate(PlayerController PC) +{ + DrawFrustum.SetHidden(true); + PC.PlayerCamera.DetachComponent(DrawFrustum); + PC.SetHidden(true); + PC.PlayerCamera.SetHidden(true); + //return; +} + +exec function SetFreezeRendering() +{ + ConsoleCommand("FreezeRendering"); + bIsFrozenRendering = !bIsFrozenRendering; + //return; +} + +exec function MoreSpeed() +{ + bRun = 2; + //return; +} + +exec function NormalSpeed() +{ + bRun = 0; + //return; +} + +function DisableDebugCamera() +{ + // End:0xB1 + if(OriginalControllerRef != none) + { + // End:0x50 + if(bIsFrozenRendering == true) + { + ConsoleCommand("FreezeRendering"); + bIsFrozenRendering = false; + } + // End:0xB1 + if(OriginalPlayer != none) + { + OriginalPlayer.SwitchController(OriginalControllerRef); + OriginalControllerRef.InitInputSystem(); + OnDeactivate(self); + } + } + //return; +} + +function InitDebugInputSystem() +{ + OriginalControllerRef.PlayerInput.InitInputSystem(); + OriginalControllerRef.InitInputSystem(); + //return; +} + +function bool NativeInputKey(int ControllerId, name Key, Object.EInputEvent Event, optional float AmountDepressed = 1.0000000, optional bool bGamepad = false) +{ + local Vector CamLoc, ZeroVec; + local Rotator CamRot; + local TraceHitInfo HitInfo; + local Actor HitActor; + local Vector HitLoc, HitNormal; + + CamLoc = PlayerCamera.CameraCache.POV.Location; + CamRot = PlayerCamera.CameraCache.POV.Rotation; + // End:0x2C5 + if(int(Event) == int(0)) + { + // End:0xF7 + if(Key == UnselectKey) + { + Unselect(); + SelectedActor = none; + SelectedComponent = none; + return true; + } + // End:0x1DE + if(Key == PrimaryKey) + { + HitActor = Trace(HitLoc, HitNormal, ((Vector(CamRot) * float(5000)) * float(20)) + CamLoc, CamLoc, true, ZeroVec, HitInfo); + // End:0x1DC + if(HitActor != none) + { + SelectedActor = HitActor; + SelectedComponent = HitInfo.HitComponent; + PrimarySelect(HitLoc, HitNormal, HitInfo); + } + return true; + } + // End:0x2C5 + if(Key == SecondaryKey) + { + HitActor = Trace(HitLoc, HitNormal, ((Vector(CamRot) * float(5000)) * float(20)) + CamLoc, CamLoc, true, ZeroVec, HitInfo); + // End:0x2C3 + if(HitActor != none) + { + SelectedActor = HitActor; + SelectedComponent = HitInfo.HitComponent; + SecondarySelect(HitLoc, HitNormal, HitInfo); + } + return true; + } + } + return false; + //return ReturnValue; +} + +exec function ShowDebugSelectedInfo() +{ + bShowSelectedInfo = !bShowSelectedInfo; + //return; +} + +// Export UDebugCameraController::execConsoleCommand(FFrame&, void* const) +native function string ConsoleCommand(string Command, optional bool bWriteToLog = true); + +auto state PlayerWaiting +{ + function PlayerMove(float DeltaTime) + { + local float UndilatedDeltaTime; + + UndilatedDeltaTime = DeltaTime / WorldInfo.TimeDilation; + super(BaseSpectating).PlayerMove(UndilatedDeltaTime); + // End:0x92 + if(WorldInfo.Pauser != none) + { + PlayerCamera.UpdateCamera(DeltaTime); + } + //return; + } + stop; +} + +defaultproperties +{ + PrimaryKey="LeftMouseButton" + SecondaryKey="RightMouseButton" + UnselectKey="Escape" + bShowSelectedInfo=true + bDrawDebugText=true + HUDClass=Class'GameFramework.DebugCameraHUD' + InputClass=Class'GameFramework.DebugCameraInput' + // Reference: CylinderComponent'GameFramework.Default__DebugCameraController.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'GameFramework.Default__GamePlayerController.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + bHidden=false + bAlwaysTick=true + bHiddenEd=false + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/DebugCameraHUD.uc b/exported/GameFramework/Classes/DebugCameraHUD.uc new file mode 100755 index 00000000..ab99a767 --- /dev/null +++ b/exported/GameFramework/Classes/DebugCameraHUD.uc @@ -0,0 +1,152 @@ +class DebugCameraHUD extends HUD + transient + config(Game) + hidecategories(Navigation); + +var bool bDrawDebugText; + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + //return; +} + +function bool DisplayMaterials(float X, out float Y, float DY, MeshComponent MeshComp) +{ + local int MaterialIndex; + local bool bDisplayedMaterial; + local MaterialInterface Material; + + bDisplayedMaterial = false; + // End:0x157 + if(MeshComp != none) + { + MaterialIndex = 0; + J0x26: + + // End:0x157 [Loop If] + if(MaterialIndex < MeshComp.GetNumElements()) + { + Material = MeshComp.GetMaterial(MaterialIndex); + // End:0x149 + if(Material != none) + { + Y += DY; + Canvas.SetPos(X + DY, Y); + Canvas.DrawText(("Material: '" $ string(Material.Name)) $ "'"); + bDisplayedMaterial = true; + } + ++MaterialIndex; + // [Loop Continue] + goto J0x26; + } + } + return bDisplayedMaterial; + //return ReturnValue; +} + +event PostRender() +{ + local DebugCameraController DCC; + local float XL, YL, X, Y; + local string MyText; + local Vector CamLoc, ZeroVec; + local Rotator CamRot; + local TraceHitInfo HitInfo; + local Actor HitActor; + local editinline MeshComponent MeshComp; + local Vector HitLoc, HitNormal; + local bool bFoundMaterial; + + super.PostRender(); + DCC = DebugCameraController(PlayerOwner); + // End:0xA8E + if((DCC != none) && bDrawDebugText) + { + Canvas.SetDrawColor(0, 0, 255, 255); + MyText = "DebugCameraHUD"; + Canvas.Font = Class'Engine.Engine'.static.GetSmallFont(); + Canvas.StrLen(MyText, XL, YL); + X = float(Canvas.SizeX) * 0.0500000; + Y = YL; + YL += (float(2) * Y); + Canvas.SetPos(X, YL); + Canvas.DrawText(MyText, true); + Canvas.SetDrawColor(128, 128, 128, 255); + CamLoc = DCC.PlayerCamera.CameraCache.POV.Location; + CamRot = DCC.PlayerCamera.CameraCache.POV.Rotation; + YL += Y; + Canvas.SetPos(X, YL); + Canvas.DrawText((("CamLoc:" $ string(CamLoc)) @ "CamRot:") $ string(CamRot)); + HitActor = Trace(HitLoc, HitNormal, ((Vector(CamRot) * float(5000)) * float(20)) + CamLoc, CamLoc, true, ZeroVec, HitInfo); + // End:0x8C5 + if(HitActor != none) + { + YL += Y; + Canvas.SetPos(X, YL); + Canvas.DrawText((("HitLoc:" $ string(HitLoc)) @ "HitNorm:") $ string(HitNormal)); + YL += Y; + Canvas.SetPos(X, YL); + Canvas.DrawText("HitDist:" @ string(VSize(CamLoc - HitLoc))); + YL += Y; + Canvas.SetPos(X, YL); + Canvas.DrawText(("HitActor: '" $ string(HitActor.Name)) $ "'"); + YL += Y; + Canvas.SetPos(X, YL); + Canvas.DrawText(("PhysMat: '" $ string(HitInfo.PhysMaterial)) $ "'"); + bFoundMaterial = false; + // End:0x701 + if(HitInfo.Material != none) + { + YL += Y; + Canvas.SetPos(X + Y, YL); + Canvas.DrawText("Material:" $ string(HitInfo.Material.Name)); + bFoundMaterial = true; + } + else + { + // End:0x77B + if(HitInfo.HitComponent != none) + { + bFoundMaterial = DisplayMaterials(X, YL, Y, MeshComponent(HitInfo.HitComponent)); + } + else + { + // End:0x7F8 + foreach HitActor.AllOwnedComponents(Class'Engine.MeshComponent', MeshComp) + { + bFoundMaterial = bFoundMaterial || DisplayMaterials(X, YL, Y, MeshComp); + } + } + } + // End:0x88E + if(bFoundMaterial == false) + { + YL += Y; + Canvas.SetPos(X + Y, YL); + Canvas.DrawText("Material: NONE"); + } + DrawDebugLine(HitLoc, HitLoc + (HitNormal * float(30)), 255, 255, 231); + } + else + { + YL += Y; + Canvas.SetPos(X, YL); + Canvas.DrawText("Not trace hit"); + } + // End:0xA8E + if((DCC.bShowSelectedInfo == true) && DCC.SelectedActor != none) + { + YL += Y; + Canvas.SetPos(X, YL); + Canvas.DrawText(("Selected actor: '" $ string(DCC.SelectedActor.Name)) $ "'"); + DisplayMaterials(X, YL, Y, MeshComponent(DCC.SelectedComponent)); + } + } + //return; +} + +defaultproperties +{ + bHidden=false +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/DebugCameraInput.uc b/exported/GameFramework/Classes/DebugCameraInput.uc new file mode 100755 index 00000000..bafd52d9 --- /dev/null +++ b/exported/GameFramework/Classes/DebugCameraInput.uc @@ -0,0 +1,34 @@ +class DebugCameraInput extends PlayerInput within PlayerController + transient + config(Input) + hidecategories(Object,UIRoot); + +function bool InputKey(int ControllerId, name Key, Object.EInputEvent Event, optional float AmountDepressed = 1.0000000, optional bool bGamepad = false) +{ + local PlayerController PC; + local DebugCameraController DCC; + + // End:0x142 + foreach Outer.WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x141 + if(PC.bIsPlayer && PC.IsLocalPlayerController()) + { + DCC = DebugCameraController(PC); + // End:0xF2 + if((DCC != none) && DCC.OriginalControllerRef == none) + { + continue; + } + return DCC.NativeInputKey(ControllerId, Key, Event, AmountDepressed, bGamepad); + } + } + return false; + //return ReturnValue; +} + +defaultproperties +{ + Bindings=/* Array type was not detected. */ + OnReceivedNativeInputKey=InputKey +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/DynamicGameCrowdDestination.uc b/exported/GameFramework/Classes/DynamicGameCrowdDestination.uc new file mode 100755 index 00000000..59e36c0e --- /dev/null +++ b/exported/GameFramework/Classes/DynamicGameCrowdDestination.uc @@ -0,0 +1,20 @@ +class DynamicGameCrowdDestination extends GameCrowdDestination + placeable + hidecategories(Navigation,Advanced,Collision,Display,Actor,Movement,Physics); + +defaultproperties +{ + // Reference: CylinderComponent'GameFramework.Default__DynamicGameCrowdDestination.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'GameFramework.Default__GameCrowdDestination.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=none + bStatic=false + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/DynamicSpriteComponent.uc b/exported/GameFramework/Classes/DynamicSpriteComponent.uc new file mode 100755 index 00000000..a2f83a7e --- /dev/null +++ b/exported/GameFramework/Classes/DynamicSpriteComponent.uc @@ -0,0 +1,16 @@ +class DynamicSpriteComponent extends SpriteComponent + native + editinlinenew + hidecategories(Object); + +var() InterpCurveFloat AnimatedScale; +var() InterpCurveLinearColor AnimatedColor; +var() InterpCurveVector2D AnimatedPosition; +var() Vector LocationOffset; +var() int LoopCount; + +defaultproperties +{ + LoopCount=-1 + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/FrameworkGame.uc b/exported/GameFramework/Classes/FrameworkGame.uc new file mode 100755 index 00000000..95251709 --- /dev/null +++ b/exported/GameFramework/Classes/FrameworkGame.uc @@ -0,0 +1,55 @@ +class FrameworkGame extends GameInfo + native + config(Game) + hidecategories(Navigation,Movement,Collision); + +struct native RequiredMobileInputConfig +{ + var config string GroupName; + var init config array RequireZoneNames; + var config bool bIsAttractModeGroup; + + structdefaultproperties + { + GroupName="" + RequireZoneNames=none + bIsAttractModeGroup=false + } +}; + +var config array RequiredMobileInputConfigs; + +event TgStartGame(out string Reason) +{ + //return; +} + +event TgEndGame(out string Reason) +{ + //return; +} + +event TgTimer(out string sTimerCommand) +{ + //return; +} + +event TgChangeScore(int nTeam, optional int nCount = 1) +{ + //return; +} + +event TgChangeTime(int nSeconds) +{ + //return; +} + +event TgGetSpectators(out array List) +{ + //return; +} + +defaultproperties +{ + RequiredMobileInputConfigs[0]=(GroupName="DebugGroup",RequireZoneNames=("DebugStickMoveZone","DebugStickLookZone","DebugLookZone"),bIsAttractModeGroup=false) +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameAICmd_Hover_MoveToGoal.uc b/exported/GameFramework/Classes/GameAICmd_Hover_MoveToGoal.uc new file mode 100755 index 00000000..9159571c --- /dev/null +++ b/exported/GameFramework/Classes/GameAICmd_Hover_MoveToGoal.uc @@ -0,0 +1,193 @@ +class GameAICmd_Hover_MoveToGoal extends GameAICommand within GameAIController; + +var transient Actor Path; +var transient Actor Find; +var transient Actor Goal; +var float Radius; +var transient bool bWasFiring; +var float DesiredHoverHeight; +var transient float CurrentHoverHeight; +var float SubGoalReachDist; +var float GoalDistance; +var transient Vector MoveVectDest; +var transient ReachSpec CurrentSpec; + +static function bool MoveToGoal(GameAIController AI, Actor InGoal, float InGoalDistance, float InHoverHeight) +{ + local GameAICmd_Hover_MoveToGoal Cmd; + + // End:0x167 + if(((AI != none) && AI.Pawn != none) && AI.Pawn.bCanFly) + { + Cmd = new (AI) Class'GameFramework.GameAICmd_Hover_MoveToGoal'; + // End:0x167 + if(Cmd != none) + { + Cmd.GoalDistance = InGoalDistance; + Cmd.Goal = InGoal; + Cmd.DesiredHoverHeight = InHoverHeight; + Cmd.CurrentHoverHeight = InHoverHeight; + AI.PushCommand(Cmd); + return true; + } + } + return false; + //return ReturnValue; +} + +function Pushed() +{ + super.Pushed(); + GotoState('Moving'); + //return; +} + +function bool HandlePathObstruction(Actor BlockedBy) +{ + Outer.MoveTimer = -1.0000000; + GotoState('MoveDown'); + return false; + //return ReturnValue; +} + +function bool IsEnemyBasedOnInterpActor(Pawn InEnemy) +{ + return false; + //return ReturnValue; +} + +state MoveDown +{ + function Vector GetMoveDest() + { + local float Height, RadRad; + local NavigationPoint PtForHeight; + local Vector Dest, HitLocation, HitNormal; + local Actor HitActor; + + // End:0x79 + if(Outer.Pawn.Anchor != none) + { + PtForHeight = Outer.Pawn.Anchor; + } + else + { + // End:0xF0 + if((Outer.RouteCache.Length > 0) && Outer.RouteCache[0] != none) + { + PtForHeight = Outer.RouteCache[0]; + } + } + // End:0x20B + if(PtForHeight != none) + { + PtForHeight.GetBoundingCylinder(RadRad, Height); + CurrentHoverHeight = float(Max(0, int(Height - (Outer.Pawn.GetCollisionHeight() * 0.5000000)))); + Dest = PtForHeight.Location; + Dest.Z = PtForHeight.Location.Z + CurrentHoverHeight; + } + else + { + HitActor = Outer.Trace(HitLocation, HitNormal, Outer.Pawn.Location + vect(0.0000000, 0.0000000, -4096.0000000), Outer.Pawn.Location); + // End:0x336 + if(HitActor != none) + { + Dest = HitLocation; + Dest.Z += (Outer.Pawn.GetCollisionHeight() * 1.5000000); + } + else + { + Dest = Outer.Pawn.Location; + } + } + return Dest; + //return ReturnValue; + } +Begin: + + Outer.MoveTo(GetMoveDest()); + Outer.Sleep(1.0000000); + GotoState('Moving'); + stop; +} + +state Moving +{ + final function bool ReachedDest(Actor Dest) + { + local float latDistSq, VertDist; + + latDistSq = VSizeSq2D(Outer.Pawn.Location - Dest.Location); + // End:0x174 + if(latDistSq < (SubGoalReachDist * SubGoalReachDist)) + { + VertDist = Abs(Outer.Pawn.Location.Z - Dest.Location.Z); + // End:0x174 + if(VertDist < float(Max(int(SubGoalReachDist), int(CurrentHoverHeight + (Outer.Pawn.GetCollisionHeight() * float(2)))))) + { + return true; + } + } + return false; + //return ReturnValue; + } + + protected final function bool PopNextNode(out Vector Dest) + { + J0x00: + // End:0x10B [Loop If] + if((Outer.RouteCache.Length > 0) && Outer.RouteCache[0] != none) + { + // End:0x105 + if(ReachedDest(Outer.RouteCache[0])) + { + Outer.Pawn.SetAnchor(Outer.RouteCache[0]); + Outer.RouteCache_RemoveIndex(0); + CurrentHoverHeight = DesiredHoverHeight; + } + else + { + // [Explicit Break] + goto J0x10B; + } + // [Loop Continue] + goto J0x00; + } + J0x10B: + + // End:0x132 + if(Outer.RouteCache.Length < 1) + { + return false; + } + CurrentSpec = Outer.Pawn.Anchor.GetReachSpecTo(Outer.RouteCache[0]); + Dest = Outer.RouteCache[0].Location; + return true; + //return ReturnValue; + } +Begin: + + Find = Goal; + Radius = Outer.Pawn.GetCollisionRadius() + Outer.Enemy.GetCollisionRadius(); + // End:0x101 + if((IsEnemyBasedOnInterpActor(Outer.Enemy)) == true) + { + Find = Outer.Enemy.Base; + Radius = 0.0000000; + } + Radius = FMax(Radius, GoalDistance); + // End:0x1D6 + if(Outer.ActorReachable(Find)) + { + MoveVectDest = Find.Location; + MoveVectDest.Z += CurrentHoverHeight; + Outer.MoveTo(MoveVectDest, Outer.Enemy); + } + GotoState('DelaySuccess'); + stop; +} + +defaultproperties +{ + SubGoalReachDist=768.0000000 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameAICmd_Hover_MoveToGoal_Mesh.uc b/exported/GameFramework/Classes/GameAICmd_Hover_MoveToGoal_Mesh.uc new file mode 100755 index 00000000..93880b64 --- /dev/null +++ b/exported/GameFramework/Classes/GameAICmd_Hover_MoveToGoal_Mesh.uc @@ -0,0 +1,514 @@ +class GameAICmd_Hover_MoveToGoal_Mesh extends GameAICommand within GameAIController; + +var transient Actor Find; +var float Radius; +var transient bool bWasFiring; +var bool bFinalApproach; +var bool bFallbackMoveToMesh; +var float DesiredHoverHeight; +var transient float CurrentHoverHeight; +var float SubGoalReachDist; +var transient float GoalDistance; +var transient Vector IntermediatePoint; +var transient Vector LastMovePoint; +var transient int NumMovePointFails; +var int MaxMovePointFails; +var transient Vector FallbackDest; +var transient Actor MoveToActor; +var BasedPosition LastMoveTargetPathLocation; +var transient Vector InitialFinalDestination; + +static function bool HoverToGoal(GameAIController AI, Actor InGoal, float InGoalDistance, float InHoverHeight) +{ + local GameAICmd_Hover_MoveToGoal_Mesh Cmd; + + // End:0x1AE + if(((AI != none) && AI.Pawn != none) && AI.Pawn.bCanFly) + { + Cmd = new (AI) Class'GameFramework.GameAICmd_Hover_MoveToGoal_Mesh'; + // End:0x1AE + if(Cmd != none) + { + Cmd.GoalDistance = InGoalDistance; + Cmd.MoveToActor = InGoal; + Cmd.InitialFinalDestination = InGoal.GetDestination(AI); + Cmd.DesiredHoverHeight = InHoverHeight; + Cmd.CurrentHoverHeight = InHoverHeight; + AI.PushCommand(Cmd); + return true; + } + } + return false; + //return ReturnValue; +} + +static function bool HoverToPoint(GameAIController AI, Vector InPoint, float InGoalDistance, float InHoverHeight) +{ + local GameAICmd_Hover_MoveToGoal_Mesh Cmd; + + // End:0x187 + if(((AI != none) && AI.Pawn != none) && AI.Pawn.bCanFly) + { + Cmd = new (AI) Class'GameFramework.GameAICmd_Hover_MoveToGoal_Mesh'; + // End:0x187 + if(Cmd != none) + { + Cmd.GoalDistance = InGoalDistance; + Cmd.MoveToActor = none; + Cmd.InitialFinalDestination = InPoint; + Cmd.DesiredHoverHeight = InHoverHeight; + Cmd.CurrentHoverHeight = InHoverHeight; + AI.PushCommand(Cmd); + return true; + } + } + return false; + //return ReturnValue; +} + +static function bool HoverBackToMesh(GameAIController AI) +{ + local GameAICmd_Hover_MoveToGoal_Mesh Cmd; + + // End:0xE8 + if(((AI != none) && AI.Pawn != none) && AI.Pawn.bCanFly) + { + Cmd = new (AI) Class'GameFramework.GameAICmd_Hover_MoveToGoal_Mesh'; + // End:0xE8 + if(Cmd != none) + { + Cmd.bFallbackMoveToMesh = true; + AI.PushCommand(Cmd); + return true; + } + } + return false; + //return ReturnValue; +} + +function Pushed() +{ + super.Pushed(); + // End:0x27 + if(bFallbackMoveToMesh) + { + GotoState('Fallback_Breadcrumbs'); + return; + } + // End:0x7A + if(!Outer.NavigationHandle.ComputeValidFinalDestination(InitialFinalDestination)) + { + GotoState('DelayFailure'); + } + else + { + // End:0xCE + if(!Outer.NavigationHandle.SetFinalDestination(InitialFinalDestination)) + { + GotoState('DelayFailure'); + } + else + { + GotoState('Moving'); + } + } + //return; +} + +function Popped() +{ + super.Popped(); + Outer.ClearLatentAction(Class'Engine.SeqAct_AIMoveToActor', Status != 'Success'); + Outer.NavigationHandle.PathCache_Empty(); + // End:0x10C + if(Outer.Pawn != none) + { + Outer.Pawn.ZeroMovementVariables(); + Outer.Pawn.DestinationOffset = 0.0000000; + } + Outer.ReachedMoveGoal(); + //return; +} + +function Tick(float DeltaTime) +{ + super.Tick(DeltaTime); + // End:0x87 + if(ShouldUpdateBreadCrumbs()) + { + Outer.NavigationHandle.UpdateBreadCrumbs(Outer.Pawn.Location); + } + Outer.NavigationHandle.DrawBreadCrumbs(); + //return; +} + +function bool HandlePathObstruction(Actor BlockedBy) +{ + Outer.MoveTimer = -1.0000000; + GotoState('Fallback_Breadcrumbs'); + return false; + //return ReturnValue; +} + +function ReEvaluatePath() +{ + //return; +} + +function bool HasReachedGoal() +{ + // End:0x26 + if(Outer.Pawn == none) + { + return true; + } + // End:0x82 + if(bFinalApproach && MoveToActor != none) + { + return Outer.Pawn.ReachedDestination(MoveToActor); + } + // End:0x207 + if(Outer.BP2Vect(Outer.NavigationHandle.FinalDestination) != vect(0.0000000, 0.0000000, 0.0000000)) + { + // End:0x17F + if(VSize(Outer.BP2Vect(Outer.NavigationHandle.FinalDestination) - Outer.Pawn.Location) < GoalDistance) + { + return true; + } + return Outer.Pawn.ReachedPoint(Outer.BP2Vect(Outer.NavigationHandle.FinalDestination), none); + } + return false; + //return ReturnValue; +} + +function bool ShouldUpdateBreadCrumbs() +{ + return true; + //return ReturnValue; +} + +function bool IsEnemyBasedOnInterpActor(Pawn InEnemy) +{ + return false; + //return ReturnValue; +} + +event DrawDebug(HUD H, name Category) +{ + super.DrawDebug(H, Category); + // End:0x35 + if(Category != 'Pathing') + { + return; + } + Outer.DrawDebugLine(Outer.Pawn.Location, Outer.GetDestinationPosition(), 0, 0, 255); + Outer.DrawDebugLine(Outer.Pawn.Location, Outer.BP2Vect(Outer.NavigationHandle.FinalDestination), 0, 255, 0); + Outer.NavigationHandle.DrawPathCache(vect(0.0000000, 0.0000000, 15.0000000)); + //return; +} + +state DelayFailure +{ + ignores HandlePathObstruction; +Begin: + + Outer.Sleep(0.5000000); + Status = 'Failure'; + Outer.PopCommand(self); + stop; +} + +state MoveDown +{ + function Vector GetMoveDest() + { + local Vector HitLocation, HitNormal, Dest; + local Actor HitActor; + + // End:0x1BB + if(Outer.NavigationHandle.LineCheck(Outer.Pawn.Location, Outer.Pawn.Location + vect(0.0000000, 0.0000000, -4096.0000000), vect(5.0000000, 5.0000000, 5.0000000), HitLocation, HitNormal)) + { + HitActor = Outer.Trace(HitLocation, HitNormal, Outer.Pawn.Location + vect(0.0000000, 0.0000000, -4096.0000000), Outer.Pawn.Location); + // End:0x1BB + if(HitActor == none) + { + return Outer.Pawn.Location; + } + } + Dest = HitLocation; + Dest.Z += (Outer.Pawn.GetCollisionHeight() * 1.5000000); + return Dest; + //return ReturnValue; + } +Begin: + + Outer.MoveTo(GetMoveDest()); + Outer.Sleep(1.0000000); + GotoState('Moving'); + stop; +} + +state Moving +{ + final function float GetMoveDestinationOffset() + { + // End:0x1A + if(bFinalApproach) + { + return GoalDistance; + } + else + { + return SubGoalReachDist - Outer.Pawn.GetCollisionRadius(); + } + //return ReturnValue; + } +CheckMove: + + // End:0x17 + if(HasReachedGoal()) + { + goto 'ReachedGoal'; + } +Begin: + + + // End:0xAF + if(Outer.Enemy != none) + { + Radius = Outer.Pawn.GetCollisionRadius() + Outer.Enemy.GetCollisionRadius(); + } + Radius = FMax(Radius, GoalDistance); + Outer.NavigationHandle.SetFinalDestination(InitialFinalDestination); + // End:0x1F5 + if(Outer.NavigationHandle.PointReachable(Outer.BP2Vect(Outer.NavigationHandle.FinalDestination))) + { + IntermediatePoint = Outer.BP2Vect(Outer.NavigationHandle.FinalDestination); + } + else + { + // End:0x270 + if(MoveToActor != none) + { + // End:0x270 + if(!Outer.NavigationHandle.SetFinalDestination(MoveToActor.GetDestination(Outer))) + { + goto 'FailedMove'; + } + } + // End:0x2FE + if(!Outer.GeneratePathToLocation(Outer.BP2Vect(Outer.NavigationHandle.FinalDestination), GoalDistance, true)) + { + GotoState('Fallback_Breadcrumbs'); + } + // End:0x353 + if(!Outer.NavigationHandle.GetNextMoveLocation(IntermediatePoint, SubGoalReachDist)) + { + goto 'FailedMove'; + } + } + // End:0x3B3 + if(MoveToActor != none) + { + Outer.Vect2BP(LastMoveTargetPathLocation, MoveToActor.GetDestination(Outer)); + } + J0x3B3: + + // End:0x963 [Loop If] + if(true) + { + bFinalApproach = VSizeSq(IntermediatePoint - Outer.BP2Vect(Outer.NavigationHandle.FinalDestination)) < 1.0000000; + // End:0x542 + if(bFinalApproach && MoveToActor != none) + { + Outer.Vect2BP(LastMoveTargetPathLocation, MoveToActor.GetDestination(Outer)); + Outer.NavigationHandle.SetFinalDestination(MoveToActor.GetDestination(Outer)); + Outer.MoveToward(MoveToActor, Outer.Enemy, GetMoveDestinationOffset(), false); + } + else + { + // End:0x58F + if(Outer.Enemy == none) + { + Outer.SetFocalPoint(IntermediatePoint); + } + Outer.MoveTo(IntermediatePoint, Outer.Enemy, GetMoveDestinationOffset()); + } + // End:0x5F3 + if(HasReachedGoal()) + { + goto 'CheckMove'; + } + else + { + // End:0x6C0 + if((MoveToActor != none) && VSize(MoveToActor.GetDestination(Outer) - Outer.BP2Vect(LastMoveTargetPathLocation)) > 512.0000000) + { + Outer.Vect2BP(LastMoveTargetPathLocation, MoveToActor.GetDestination(Outer)); + goto 'CheckMove'; + } + else + { + // End:0x8A9 + if(!Outer.NavigationHandle.GetNextMoveLocation(IntermediatePoint, SubGoalReachDist)) + { + // End:0x87F + if(!bFinalApproach && ((MoveToActor != none) ? Outer.ActorReachable(MoveToActor) : Outer.PointReachable(Outer.BP2Vect(Outer.NavigationHandle.FinalDestination)))) + { + IntermediatePoint = ((MoveToActor != none) ? MoveToActor.GetDestination(Outer) : Outer.BP2Vect(Outer.NavigationHandle.FinalDestination)); + Outer.Sleep(RandRange(0.1000000, 0.1750000)); + } + else + { + Outer.Sleep(0.1000000); + goto 'FailedMove'; + } + } + else + { + // End:0x90D + if(VSize(IntermediatePoint - LastMovePoint) < (Outer.Pawn.GetCollisionRadius() * 0.1000000)) + { + NumMovePointFails++; + } + else + { + NumMovePointFails = 0; + } + LastMovePoint = IntermediatePoint; + // End:0x960 + if((NumMovePointFails >= MaxMovePointFails) && MaxMovePointFails >= 0) + { + goto 'FailedMove'; + } + } + } + } + // [Loop Continue] + goto J0x3B3; + } + goto 'CheckMove'; +FailedMove: + + + Outer.MoveTo(Outer.Pawn.Location); + Outer.Pawn.ZeroMovementVariables(); + GotoState('DelayFailure'); +ReachedGoal: + + + Status = 'Success'; + Outer.PopCommand(self); + stop; +} + +state Fallback_Breadcrumbs +{ + function bool ShouldUpdateBreadCrumbs() + { + return false; + //return ReturnValue; + } + + function bool HandlePathObstruction(Actor BlockedBy) + { + Outer.Pawn.SetLocation(IntermediatePoint); + Outer.MoveTimer = -1.0000000; + GotoState('Fallback_Breadcrumbs', 'Begin'); + return true; + //return ReturnValue; + } +Begin: + + // End:0xDC + if(Outer.NavigationHandle.GetNextBreadCrumb(IntermediatePoint)) + { + Outer.MoveToDirectNonPathPos(IntermediatePoint); + // End:0xB2 + if(!Outer.NavigationHandle.IsAnchorInescapable()) + { + GotoState('Moving'); + } + Outer.Sleep(0.1000000); + goto 'Begin'; + } + else + { + // End:0x12E + if(!Outer.NavigationHandle.IsAnchorInescapable()) + { + GotoState('Moving', 'Begin'); + } + else + { + GotoState('Fallback_FindNearbyMeshPoint'); + } + } + stop; +} + +state Fallback_FindNearbyMeshPoint +{ + function bool FindAPointWhereICanHoverTo(out Vector out_FallbackDest, float Inradius, optional float MinRadius = 0.0000000, optional float entityRadius = 32.0000000, optional bool bDirectOnly = true, optional int MaxPoints = -1, optional float ValidHitBoxSize) + { + local Vector Retval; + local array poses; + local Vector Extent, validhitbox; + + Extent.X = entityRadius; + Extent.Y = entityRadius; + Extent.Z = entityRadius; + validhitbox = vect(1.0000000, 1.0000000, 1.0000000) * ValidHitBoxSize; + Outer.NavigationHandle.GetValidPositionsForBox(Outer.Pawn.Location, Inradius, Extent, bDirectOnly, poses, MaxPoints, MinRadius, validhitbox); + // End:0x1CF + if(poses.Length > 0) + { + Retval = poses[Rand(poses.Length)]; + // End:0x1BA + if(VSize(Retval) == 0.0000000) + { + out_FallbackDest = vect(0.0000000, 0.0000000, 0.0000000); + return false; + } + out_FallbackDest = Retval; + return true; + } + out_FallbackDest = vect(0.0000000, 0.0000000, 0.0000000); + return false; + //return ReturnValue; + } + + function bool ShouldUpdateBreadCrumbs() + { + return false; + //return ReturnValue; + } +Begin: + + // End:0x33 + if(!FindAPointWhereICanHoverTo(FallbackDest, 2048.0000000)) + { + GotoState('MoveDown'); + } + else + { + Outer.MoveToDirectNonPathPos(FallbackDest,, SubGoalReachDist); + Outer.Sleep(0.5000000); + // End:0xA1 + if(bFallbackMoveToMesh) + { + GotoState('DelaySuccess'); + } + else + { + GotoState('Moving', 'Begin'); + } + } + stop; +} + +defaultproperties +{ + SubGoalReachDist=128.0000000 + MaxMovePointFails=5 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameAICommand.uc b/exported/GameFramework/Classes/GameAICommand.uc new file mode 100755 index 00000000..7f75ec12 --- /dev/null +++ b/exported/GameFramework/Classes/GameAICommand.uc @@ -0,0 +1,223 @@ +class GameAICommand extends AICommandBase within GameAIController + abstract + native; + +var() const editinline transient GameAICommand ChildCommand; +var() const transient name ChildStatus; +var() transient GameAIController GameAIOwner; +var() transient name Status; +var bool bAllowNewSameClassInstance; +var bool bReplaceActiveSameClassInstance; +var private transient bool bAborted; +var bool bIgnoreNotifies; +var bool bIgnoreStepAside; +var private transient bool bPendingPop; + +static function bool InitCommandUserActor(GameAIController AI, Actor UserActor) +{ + return InitCommand(AI); + //return ReturnValue; +} + +static function bool InitCommand(GameAIController AI) +{ + local GameAICommand Cmd; + + // End:0x68 + if(AI != none) + { + Cmd = new (AI) default.Class; + // End:0x68 + if(Cmd != none) + { + AI.PushCommand(Cmd); + return true; + } + } + return false; + //return ReturnValue; +} + +final event InternalPrePushed(GameAIController AI) +{ + GameAIOwner = AI; + PrePushed(AI); + //return; +} + +final event InternalPushed() +{ + GotoState('Auto'); + Pushed(); + //return; +} + +event InternalPopped() +{ + Popped(); + GameAIOwner = none; + PostPopped(); + //return; +} + +final event InternalPaused(GameAICommand NewCommand) +{ + Paused(NewCommand); + //return; +} + +final event InternalResumed(name OldCommandName) +{ + Resumed(OldCommandName); + //return; +} + +final event InternalTick(float DeltaTime) +{ + Tick(DeltaTime); + //return; +} + +// Export UGameAICommand::execShouldIgnoreNotifies(FFrame&, void* const) +native final function bool ShouldIgnoreNotifies(); + +function Tick(float DeltaTime) +{ + //return; +} + +function bool AllowTransitionTo(Class AttemptCommand) +{ + return (ChildCommand == none) || ChildCommand.AllowTransitionTo(AttemptCommand); + //return ReturnValue; +} + +function bool AllowStateTransitionTo(name StateName) +{ + return (ChildCommand == none) || ChildCommand.AllowStateTransitionTo(StateName); + //return ReturnValue; +} + +function PrePushed(GameAIController AI) +{ + //return; +} + +function PostPopped() +{ + //return; +} + +function Pushed() +{ + //return; +} + +function Popped() +{ + //return; +} + +function Paused(GameAICommand NewCommand) +{ + //return; +} + +function Resumed(name OldCommandName) +{ + //return; +} + +event string GetDumpString() +{ + return string(self); + //return ReturnValue; +} + +event DrawDebug(HUD H, name Category) +{ + //return; +} + +function GetDebugOverheadText(PlayerController PC, out array OutText) +{ + //return; +} + +event string GetDebugVerboseText() +{ + //return ReturnValue; +} + +function NotifyNeedRepath() +{ + //return; +} + +function bool MoveUnreachable(Vector AttemptedDest, Actor AttemptedTarget) +{ + //return ReturnValue; +} + +function bool HandlePathObstruction(Actor BlockedBy) +{ + // End:0x38 + if(ChildCommand != none) + { + return ChildCommand.HandlePathObstruction(BlockedBy); + } + return false; + //return ReturnValue; +} + +state DebugState +{ + function BeginState(name PreviousStateName) + { + //return; + } + + function EndState(name NextStateName) + { + //return; + } + + function PushedState() + { + //return; + } + + function PoppedState() + { + //return; + } + + function ContinuedState() + { + //return; + } + + function PausedState() + { + //return; + } + stop; +} + +state DelayFailure +{Begin: + + Outer.Sleep(0.5000000); + Status = 'Failure'; + Outer.PopCommand(self); + stop; +} + +state DelaySuccess +{Begin: + + Outer.Sleep(0.1000000); + Status = 'Success'; + Outer.PopCommand(self); + stop; +} diff --git a/exported/GameFramework/Classes/GameAIController.uc b/exported/GameFramework/Classes/GameAIController.uc new file mode 100755 index 00000000..48de7bdf --- /dev/null +++ b/exported/GameFramework/Classes/GameAIController.uc @@ -0,0 +1,166 @@ +class GameAIController extends AIController + abstract + native + config(Game) + hidecategories(Navigation); + +var() const editinline transient GameAICommand CommandList; +var transient bool bHasRunawayCommandList; +var(Debug) config bool bAILogging; +var(Debug) config bool bAILogToWindow; +var(Debug) config bool bFlushAILogEachLine; +var(Debug) config bool bMapBasedLogName; +var(Debug) config bool bAIDrawDebug; +var transient bool bAIBroken; +var transient FileLog AILogFile; +var(Debug) float DebugTextMaxLen; +var(Debug) const transient array CommandHistory; +var(Debug) config int CommandHistoryNum; +var(Debug) config array AILogFilter; +var string DemoActionString; + +replication +{ + // Pos:0x000 + if(bDemoRecording) + DemoActionString; +} + +// Export UGameAIController::execAllCommands(FFrame&, void* const) +native final iterator function AllCommands(Class BaseClass, out GameAICommand Cmd); + +// Export UGameAIController::execPushCommand(FFrame&, void* const) +native function PushCommand(GameAICommand NewCommand); + +// Export UGameAIController::execPopCommand(FFrame&, void* const) +native function PopCommand(GameAICommand ToBePoppedCommand); + +// Export UGameAIController::execAbortCommand(FFrame&, void* const) +native function bool AbortCommand(GameAICommand AbortCmd, optional Class AbortClass); + +// Export UGameAIController::execGetActiveCommand(FFrame&, void* const) +native final function GameAICommand GetActiveCommand(); + +// Export UGameAIController::execCheckCommandCount(FFrame&, void* const) +native final function CheckCommandCount(); + +// Export UGameAIController::execDumpCommandStack(FFrame&, void* const) +native final function DumpCommandStack(); + +// Export UGameAIController::execFindCommandOfClass(FFrame&, void* const) +native final function GameAICommand FindCommandOfClass(Class SearchClass); + +// Export UGameAIController::execGetAICommandInStack(FFrame&, void* const) +native function GameAICommand GetAICommandInStack(const Class InClass); + +function float GetDestinationOffset() +{ + //return ReturnValue; +} + +function ReachedMoveGoal() +{ + //return; +} + +function ReachedIntermediateMoveGoal() +{ + //return; +} + +event Destroyed() +{ + super(Controller).Destroyed(); + // End:0x31 + if(AILogFile != none) + { + AILogFile.Destroy(); + } + // End:0x54 + if(CommandList != none) + { + AbortCommand(CommandList); + } + //return; +} + +protected function RecordDemoAILog(coerce string LogText) +{ + //return; +} + +event AILog_Internal(coerce string LogText, optional name LogCategory, optional bool bForce) +{ + //return; +} + +function SetDesiredRotation(Rotator TargetDesiredRotation, optional bool InLockDesiredRotation = false, optional bool InUnlockWhenReached = false, optional float InterpolationTime = -1.0000000) +{ + // End:0x68 + if(Pawn != none) + { + Pawn.super(GameAIController).SetDesiredRotation(TargetDesiredRotation, InLockDesiredRotation, InUnlockWhenReached, InterpolationTime); + } + //return; +} + +final simulated event string GetActionString() +{ + local string ActionStr; + local GameAICommand ActiveCmd; + + // End:0x2F + if(WorldInfo.IsPlayingDemo()) + { + return DemoActionString; + } + else + { + ActiveCmd = GetActiveCommand(); + // End:0xA0 + if(ActiveCmd != none) + { + ActionStr = (string(ActiveCmd.Class) $ ":") $ string(ActiveCmd.GetStateName()); + } + else + { + ActionStr = (string(default.Class) $ ":") $ string(GetStateName()); + } + return ActionStr; + } + //return ReturnValue; +} + +state DebugState +{ + function BeginState(name PreviousStateName) + { + //return; + } + + function EndState(name NextStateName) + { + //return; + } + + function PushedState() + { + //return; + } + + function PoppedState() + { + //return; + } + + function ContinuedState() + { + //return; + } + + function PausedState() + { + //return; + } + stop; +} diff --git a/exported/GameFramework/Classes/GameCameraBase.uc b/exported/GameFramework/Classes/GameCameraBase.uc new file mode 100755 index 00000000..50c0c554 --- /dev/null +++ b/exported/GameFramework/Classes/GameCameraBase.uc @@ -0,0 +1,47 @@ +class GameCameraBase extends Object + abstract + native(Camera); + +var transient GamePlayerCamera PlayerCamera; +var transient bool bResetCameraInterpolation; + +function OnBecomeActive(GameCameraBase OldCamera) +{ + //return; +} + +function OnBecomeInActive(GameCameraBase NewCamera) +{ + //return; +} + +function ResetInterpolation() +{ + bResetCameraInterpolation = true; + //return; +} + +function UpdateCamera(Pawn P, GamePlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT) +{ + //return; +} + +function ProcessViewRotation(float DeltaTime, Actor ViewTarget, out Rotator out_ViewRotation, out Rotator out_DeltaRot) +{ + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + //return; +} + +function Init() +{ + //return; +} + +event ModifyPostProcessSettings(out PostProcessSettings PP) +{ + //return; +} diff --git a/exported/GameFramework/Classes/GameCameraBlockingVolume.uc b/exported/GameFramework/Classes/GameCameraBlockingVolume.uc new file mode 100755 index 00000000..4c908d57 --- /dev/null +++ b/exported/GameFramework/Classes/GameCameraBlockingVolume.uc @@ -0,0 +1,18 @@ +class GameCameraBlockingVolume extends BlockingVolume + native + hidecategories(Navigation,Object,Movement,Display,Collision); + +defaultproperties +{ + // Reference: BrushComponent'GameFramework.Default__GameCameraBlockingVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__BlockingVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bWorldGeometry=false + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCheatManager.uc b/exported/GameFramework/Classes/GameCheatManager.uc new file mode 100755 index 00000000..cb1f424c --- /dev/null +++ b/exported/GameFramework/Classes/GameCheatManager.uc @@ -0,0 +1,222 @@ +class GameCheatManager extends CheatManager within GamePlayerController + native + config(Game); + +var DebugCameraController DebugCameraControllerRef; +var Class DebugCameraControllerClass; +var config string DebugCameraControllerClassName; + +function PatchDebugCameraController() +{ + local Class TempCameraControllerClass; + + // End:0x62 + if(DebugCameraControllerClassName != "") + { + TempCameraControllerClass = Class(DynamicLoadObject(DebugCameraControllerClassName, Class'Core.Class')); + // End:0x62 + if(TempCameraControllerClass != none) + { + DebugCameraControllerClass = TempCameraControllerClass; + } + } + //return; +} + +exec function ToggleDebugCamera(optional bool bDrawDebugText = true) +{ + local PlayerController PC; + local DebugCameraController DCC; + + // End:0xED + foreach Outer.WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0xEC + if(PC.bIsPlayer && PC.IsLocalPlayerController()) + { + DCC = DebugCameraController(PC); + // End:0xE9 + if((DCC != none) && DCC.OriginalControllerRef == none) + { + continue; + } + // End:0xED + break; + } + } + // End:0x168 + if((DCC != none) && DCC.OriginalControllerRef != none) + { + DCC.DisableDebugCamera(); + DCC.Destroy(); + DCC = none; + } + else + { + // End:0x18B + if(PC != none) + { + EnableDebugCamera(bDrawDebugText); + } + } + //return; +} + +exec function TeleportPawnToCamera(optional bool bToggleDebugCameraOff = true) +{ + local PlayerController PC; + local DebugCameraController DCC; + local Vector ViewLocation; + local Rotator ViewRotation; + + // End:0xED + foreach Outer.WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0xEC + if(PC.bIsPlayer && PC.IsLocalPlayerController()) + { + DCC = DebugCameraController(PC); + // End:0xE9 + if((DCC != none) && DCC.OriginalControllerRef == none) + { + continue; + } + // End:0xED + break; + } + } + // End:0x23E + if((DCC != none) && DCC.OriginalControllerRef != none) + { + // End:0x223 + if(DCC.OriginalControllerRef.Pawn != none) + { + Outer.GetPlayerViewPoint(ViewLocation, ViewRotation); + DCC.OriginalControllerRef.Pawn.SetLocation(ViewLocation); + DCC.OriginalControllerRef.Pawn.SetRotation(ViewRotation); + } + // End:0x23B + if(bToggleDebugCameraOff) + { + ToggleDebugCamera(); + } + } + else + { + Outer.ClientMessage("TeleportPawnToCamera should be used in conjunction with the ToggleDebugCamera command. Failed."); + } + //return; +} + +function EnableDebugCamera(bool bEnableDebugText) +{ + local Player P; + local Vector eyeLoc; + local Rotator eyeRot; + local float CameraFOVAngle; + + P = Outer.Player; + // End:0x366 + if(((P != none) && Outer.Pawn != none) && Outer.IsLocalPlayerController()) + { + PatchDebugCameraController(); + // End:0xB2 + if(DebugCameraControllerRef != none) + { + DebugCameraControllerRef.Destroy(); + } + CameraFOVAngle = Outer.GetFOVAngle(); + DebugCameraControllerRef = Outer.Spawn(DebugCameraControllerClass); + DebugCameraControllerRef.PlayerInput = none; + DebugCameraControllerRef.OriginalPlayer = P; + DebugCameraControllerRef.OriginalControllerRef = Outer; + Outer.GetPlayerViewPoint(eyeLoc, eyeRot); + DebugCameraControllerRef.SetLocation(eyeLoc); + DebugCameraControllerRef.SetRotation(eyeRot); + DebugCameraControllerRef.bDrawDebugText = bEnableDebugText; + P.SwitchController(DebugCameraControllerRef); + DebugCameraControllerRef.OnActivate(Outer); + DebugCameraControllerRef.GetPlayerViewPoint(eyeLoc, eyeRot); + // End:0x33E + if(DebugCameraControllerRef.PlayerCamera != none) + { + DebugCameraControllerRef.PlayerCamera.SetFOV(CameraFOVAngle); + DebugCameraControllerRef.PlayerCamera.UpdateCamera(0.0000000); + } + else + { + DebugCameraControllerRef.FOVAngle = CameraFOVAngle; + } + } + //return; +} + +exec function TestHttp(string Verb, string Payload, string URL, optional bool bSendParallelRequest) +{ + local HttpRequestInterface R; + + R = Class'Engine.HttpFactory'.static.CreateRequest(); + R.__OnProcessRequestComplete__Delegate = OnRequestComplete; + R.SetURL(URL); + // End:0xBE + if(Len(Verb) > 0) + { + R.SetVerb(Verb); + } + // End:0xFA + if(Len(Payload) > 0) + { + R.SetContentAsString(Payload); + } + // End:0x121 + if(!R.ProcessRequest()) + { + } + // End:0x200 + if(bSendParallelRequest) + { + // End:0x200 + if(!Class'Engine.HttpFactory'.static.CreateRequest().SetURL("http://www.epicgames.com").SetVerb("GET").SetHeader("Test", "Value").SetProcessRequestCompleteDelegate(OnRequestComplete).ProcessRequest()) + { + } + } + //return; +} + +function OnRequestComplete(HttpRequestInterface OriginalRequest, HttpResponseInterface Response, bool bDidSucceed) +{ + local array Headers; + local string Header, Payload; + local int PayloadIndex; + + // End:0xD3 + if(Response != none) + { + Headers = Response.GetHeaders(); + // End:0x50 + foreach Headers(Header) + { + } + Payload = Response.GetContentAsString(); + // End:0xD3 + if(Len(Payload) > 1024) + { + PayloadIndex = 0; + J0x9A: + + // End:0xD0 [Loop If] + if(PayloadIndex < Len(Payload)) + { + PayloadIndex = PayloadIndex + 1024; + // [Loop Continue] + goto J0x9A; + } + } + } + //return; +} + +defaultproperties +{ + DebugCameraControllerClassName="GameFramework.DebugCameraController" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdAgent.uc b/exported/GameFramework/Classes/GameCrowdAgent.uc new file mode 100755 index 00000000..3781c95a --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdAgent.uc @@ -0,0 +1,1317 @@ +class GameCrowdAgent extends CrowdAgentBase + abstract + native + hidecategories(Navigation,Advanced,Attachment,Collision,Object) + implements(Interface_RVO); + +enum EConformType +{ + CFM_NavMesh, // 0 + CFM_BSP, // 1 + CFM_World, // 2 + CFM_None, // 3 + CFM_MAX // 4 +}; + +struct native AvoidOtherSampleItem +{ + var() int RotOffset; + var() byte NumMagSamples; + var() bool bFallbackOnly; + + structdefaultproperties + { + RotOffset=0 + NumMagSamples=0 + bFallbackOnly=false + } +}; + +struct native RecentInteraction +{ + var name InteractionTag; + var float InteractionDelay; + + structdefaultproperties + { + InteractionTag="None" + InteractionDelay=0.0000000 + } +}; + +struct native BehaviorEntry +{ + var() GameCrowdAgentBehavior BehaviorArchetype; + var() Actor LookAtActor; + var() float BehaviorFrequency; + var() bool bNeverRepeat; + var bool bHasBeenUsed; + var bool bCanBeUsed; + + structdefaultproperties + { + BehaviorArchetype=none + LookAtActor=none + BehaviorFrequency=1.0000000 + bNeverRepeat=false + bHasBeenUsed=false + bCanBeUsed=false + } +}; + +var private native const noexport Pointer VfTable_IInterface_RVO; +var GameCrowdGroup MyGroup; +var Vector PreferredVelocity; +var Vector PendingVelocity; +var GameCrowdDestination CurrentDestination; +var GameCrowdDestination BehaviorDestination; +var GameCrowdDestination PreviousDestination; +var float InterpZTranslation; +var() int Health; +var(Behavior) float DeadBodyDuration; +var const editconst export editinline DynamicLightEnvironmentComponent LightEnvironment; +var transient int ConformTraceFrameCount; +var transient array NearbyDynamics; +var bool bUniformScale; +var(Pathing) bool bCheckForObstacles; +var(Pathing) bool bUseNavMeshPathing; +var bool bWantsSeePlayerNotification; +var(Movement) bool bAllowPitching; +var bool bHitObstacle; +var bool bBadHitNormal; +var bool bSimulateThisTick; +var bool bPotentialEncounter; +var bool bIsPanicked; +var bool bWantsGroupIdle; +var() bool bPreferVisibleDestination; +var() bool bPreferVisibleDestinationOnSpawn; +var bool bHasNotifiedSpawner; +var bool bIsInSpawnPool; +var(Debug) bool bPaused; +var(Movement) GameCrowdAgent.EConformType ConformType; +var(Movement) float ConformTraceDist; +var(Movement) int ConformTraceInterval; +var int CurrentConformTraceInterval; +var float LastGroundZ; +var(Pathing) float AwareRadius; +var(Pathing) float AvoidOtherRadius; +var(Pathing) array AvoidOtherSampleList; +var(Pathing) float PENALTY_COEFF_ANGLETOGOAL; +var(Pathing) float PENALTY_COEFF_ANGLETOVEL; +var(Pathing) float PENALTY_COEFF_MAG; +var(Pathing) float MIN_PENALTY_THRESHOLD; +var(Pathing) float LastProgressTime; +var(Pathing) float LastFallbackActiveTime; +var(Pathing) float MaxPathLaneValue; +var(Pathing) float CurrentPathLaneValue; +var(Pathing) int ExtraPathCost; +var(Movement) float RotateToTargetSpeed; +var(Movement) float MaxYawRate; +var(Rendering) Vector MeshMinScale3D; +var(Rendering) Vector MeshMaxScale3D; +var float EyeZOffset; +var(LOD) float ProximityLODDist; +var(LOD) float VisibleProximityLODDist; +var Vector LastKnownGoodPosition; +var(Rendering) float GroundOffset; +var Vector IntermediatePoint; +var Vector SearchExtent; +var Class NavigationHandleClass; +var NavigationHandle NavigationHandle; +var int ObstacleCheckCount; +var float WalkableFloorZ; +var float LastPathingAttempt; +var float LastUpdateTime; +var(LOD) float NotVisibleLifeSpan; +var GameCrowdAgent MyArchetype; +var(Movement) float MaxWalkingSpeed; +var(Movement) float MaxRunningSpeed; +var float MaxSpeed; +var array RecentInteractions; +var float BeaconMaxDist; +var Vector BeaconOffset; +var const Texture2D BeaconTexture; +var const LinearColor BeaconColor; +var() SoundCue AmbientSoundCue; +var export editinline AudioComponent AmbientSoundComponent; +var GameCrowdAgentBehavior CurrentBehavior; +var float CurrentBehaviorActivationTime; +var(Behavior) array EncounterAgentBehaviors; +var(Behavior) array SeePlayerBehaviors; +var float MaxSeePlayerDistSq; +var(Behavior) float SeePlayerInterval; +var(Behavior) array SpawnBehaviors; +var(Behavior) array UneasyBehaviors; +var(Behavior) array AlertBehaviors; +var(Behavior) array PanicBehaviors; +var(Behavior) array RandomBehaviors; +var(Behavior) array TakeDamageBehaviors; +var(Behavior) float RandomBehaviorInterval; +var float ForceUpdateTime; +var float ReachThreshold; +var(Behavior) array GroupWaitingBehaviors; +var(Behavior) float DesiredGroupRadius; +var float DesiredGroupRadiusSq; +var float MaxLOSLifeDistanceSq; +var GameCrowdSpawnerInterface MySpawner; +var Vector SpawnOffset; +var float InitialLastRenderTime; +var(Debug) Color DebugAgentColor; +var(Debug) GameCrowdDestination DebugSpawnDest; + +// Export UGameCrowdAgent::execGetCollisionExtent(FFrame&, void* const) +native function Vector GetCollisionExtent(); + +simulated event FellOutOfWorld(Class dmgType) +{ + Health = -1; + LifeSpan = -0.1000000; + //return; +} + +// Export UGameCrowdAgent::execIsPanicked(FFrame&, void* const) +native function bool IsPanicked(); + +function bool PickBehaviorFrom(array BehaviorList, optional Vector BestCameraLoc = vect(0.0000000, 0.0000000, 0.0000000)) +{ + local Vector CameraLoc; + local Rotator CameraRot; + local PlayerController PC; + local float BestDistSq, NewDistSq; + local int I; + local float FreqSum, RandPick; + + // End:0xEA + if(BestCameraLoc == vect(0.0000000, 0.0000000, 0.0000000)) + { + BestDistSq = 90000000.0000000; + // End:0xE9 + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + PC.GetPlayerViewPoint(CameraLoc, CameraRot); + NewDistSq = VSizeSq(CameraLoc - Location); + // End:0xE8 + if(NewDistSq < BestDistSq) + { + BestDistSq = NewDistSq; + BestCameraLoc = CameraLoc; + } + } + } + I = 0; + J0xF5: + + // End:0x26F [Loop If] + if(I < BehaviorList.Length) + { + // End:0x13C + if(BehaviorList[I].BehaviorArchetype == none) + { + } + else + { + BehaviorList[I].bCanBeUsed = (!BehaviorList[I].bHasBeenUsed || !BehaviorList[I].bNeverRepeat) && BehaviorList[I].BehaviorArchetype.CanBeUsedBy(self, BestCameraLoc); + // End:0x261 + if(BehaviorList[I].bCanBeUsed) + { + FreqSum += BehaviorList[I].BehaviorFrequency; + } + } + I++; + // [Loop Continue] + goto J0xF5; + } + RandPick = FMax(1.0000000, FreqSum) * FRand(); + // End:0x2A6 + if(RandPick >= FreqSum) + { + return false; + } + I = 0; + J0x2B1: + + // End:0x3C6 [Loop If] + if(I < BehaviorList.Length) + { + // End:0x3B8 + if(BehaviorList[I].bCanBeUsed) + { + RandPick -= BehaviorList[I].BehaviorFrequency; + // End:0x3B8 + if(RandPick < 0.0000000) + { + ActivateBehavior(BehaviorList[I].BehaviorArchetype, BehaviorList[I].LookAtActor); + BehaviorList[I].bHasBeenUsed = true; + return true; + } + } + I++; + // [Loop Continue] + goto J0x2B1; + } + return false; + //return ReturnValue; +} + +event WaitForGroupMembers() +{ + local int I; + + PickBehaviorFrom(GroupWaitingBehaviors); + // End:0x252 + if(CurrentBehavior != none) + { + CurrentBehavior.ActionTarget = MyGroup.Members[0]; + I = 0; + J0x6D: + + // End:0x252 [Loop If] + if(I < MyGroup.Members.Length) + { + // End:0x244 + if((((MyGroup.Members[I] != none) && !MyGroup.Members[I].bDeleteMe) && VSizeSq(MyGroup.Members[I].Location - Location) > DesiredGroupRadiusSq) && (MyGroup.Members[I].Velocity Dot (Location - MyGroup.Members[I].Location)) > 0.0000000) + { + CurrentBehavior.ActionTarget = MyGroup.Members[I]; + // [Explicit Break] + goto J0x252; + } + I++; + // [Loop Continue] + goto J0x6D; + } + } + J0x252: + + //return; +} + +event SetCurrentDestination(GameCrowdDestination NewDest) +{ + // End:0xC4 + if(NewDest != CurrentDestination) + { + // End:0x4E + if(CurrentBehavior != none) + { + CurrentBehavior.ChangingDestination(NewDest); + } + CurrentDestination = NewDest; + CurrentDestination.IncrementCustomerCount(self); + ReachThreshold = ((CurrentDestination.bSoftPerimeter) ? 0.5000000 + (0.5000000 * FRand()) : 1.0000000); + } + //return; +} + +function SetMaxSpeed() +{ + MaxSpeed = ((IsPanicked()) ? MaxRunningSpeed : MaxWalkingSpeed); + //return; +} + +simulated function PostBeginPlay() +{ + local Vector AgentScale3D; + local int I; + local float MaxSeePlayerDist; + + super(Actor).PostBeginPlay(); + // End:0x19 + if(bDeleteMe) + { + return; + } + WorldInfo.bHaveActiveCrowd = true; + // End:0x77 + if(bUniformScale) + { + AgentScale3D = MeshMinScale3D + (FRand() * (MeshMaxScale3D - MeshMinScale3D)); + } + else + { + AgentScale3D.X = RandRange(MeshMinScale3D.X, MeshMaxScale3D.X); + AgentScale3D.Y = RandRange(MeshMinScale3D.Y, MeshMaxScale3D.Y); + AgentScale3D.Z = RandRange(MeshMinScale3D.Z, MeshMaxScale3D.Z); + } + SetDrawScale3D(AgentScale3D); + LastKnownGoodPosition = Location; + LastKnownGoodPosition.Z += EyeZOffset; + ForceUpdateTime = WorldInfo.TimeSeconds; + SetMaxSpeed(); + // End:0x2A3 + if(AmbientSoundCue != none) + { + AmbientSoundComponent = new (self) Class'Engine.AudioComponent'; + // End:0x2A3 + if(AmbientSoundComponent != none) + { + AttachComponent(AmbientSoundComponent); + AmbientSoundComponent.SoundCue = AmbientSoundCue; + AmbientSoundComponent.Play(); + } + } + bWantsSeePlayerNotification = SeePlayerBehaviors.Length > 0; + I = 0; + J0x2C6: + + // End:0x33C [Loop If] + if(I < SeePlayerBehaviors.Length) + { + MaxSeePlayerDist = FMax(MaxSeePlayerDist, SeePlayerBehaviors[I].BehaviorArchetype.MaxPlayerDistance); + I++; + // [Loop Continue] + goto J0x2C6; + } + MaxSeePlayerDistSq = MaxSeePlayerDist * MaxSeePlayerDist; + DesiredGroupRadiusSq = DesiredGroupRadius * DesiredGroupRadius; + // End:0x3B1 + if(RandomBehaviors.Length > 0) + { + SetTimer((0.8000000 + (0.4000000 * FRand())) * RandomBehaviorInterval, true, 'TryRandomBehavior'); + } + //return; +} + +event KillAgent() +{ + // End:0x0F + if(bIsInSpawnPool) + { + return; + } + LifeSpan = -0.1000000; + TimeSinceLastTick = 1000.0000000; + //return; +} + +function ResetPooledAgent() +{ + bIsInSpawnPool = false; + SetHidden(false); + BehaviorDestination = none; + PreviousDestination = none; + LifeSpan = 0.0000000; + Health = default.Health; + TimeSinceLastTick = 0.0000000; + LastKnownGoodPosition = Location; + LastKnownGoodPosition.Z += EyeZOffset; + ForceUpdateTime = WorldInfo.TimeSeconds; + SetMaxSpeed(); + // End:0x103 + if(RandomBehaviors.Length > 0) + { + SetTimer((0.8000000 + (0.4000000 * FRand())) * RandomBehaviorInterval, true, 'TryRandomBehavior'); + } + //return; +} + +simulated function Destroyed() +{ + super(Actor).Destroyed(); + // End:0x68 + if(NotEqual_InterfaceInterface(MySpawner, GameCrowdSpawnerInterface(none)) && !bHasNotifiedSpawner) + { + bHasNotifiedSpawner = true; + MySpawner.AgentDestroyed(self); + } + // End:0xA2 + if(CurrentDestination != none) + { + CurrentDestination.DecrementCustomerCount(self); + CurrentDestination = none; + } + // End:0xD1 + if(MyGroup != none) + { + MyGroup.RemoveMember(self); + } + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + local string T; + local Canvas Canvas; + + super(Actor).DisplayDebug(HUD, out_YL, out_YPos); + Canvas = HUD.Canvas; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.SetDrawColor(255, 0, 0); + T = GetDebugName(); + // End:0xF5 + if(bDeleteMe) + { + T = T $ " DELETED (bDeleteMe == true)"; + } + // End:0x174 + if(T != "") + { + Canvas.DrawText(T, false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + Canvas.SetDrawColor(255, 255, 255); + Canvas.DrawText((((((("Location:" @ string(Location)) @ "Rotation:") @ string(Rotation)) @ " Speed: ") $ string(VSize(Velocity))) @ "ZVel") @ string(Velocity.Z), false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText((((("Hit obestacle:" @ string(bHitObstacle)) @ "BadHitNormal:") @ string(bBadHitNormal)) @ "count") @ string(ObstacleCheckCount), false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText((((("Current conform interval:" @ string(CurrentConformTraceInterval)) @ "Base Conform Interval:") @ string(ConformTraceInterval)) @ " Last Ground Z ") @ string(LastGroundZ), false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + // End:0x48B + if(CurrentDestination == none) + { + Canvas.DrawText("NO DESTINATION", false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + else + { + // End:0x4BC + if(NavigationHandle != none) + { + NavigationHandle.DrawPathCache(); + } + T = "DESTINATION " $ string(CurrentDestination); + // End:0x56A + if(MyGroup != none) + { + T = (T $ " Group ") $ string(MyGroup); + DrawDebugLine(MyGroup.Members[0].Location, Location, 255, 128, 0, false); + } + Canvas.DrawText(T, false); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + // End:0x62B + if(IntermediatePoint == CurrentDestination.Location) + { + DrawDebugLine(IntermediatePoint, Location, 0, 128, 255, false); + } + else + { + DrawDebugLine(IntermediatePoint, Location, 0, 255, 0, false); + DrawDebugLine(CurrentDestination.Location, Location, 255, 255, 0, false); + } + } + //return; +} + +simulated function SetLighting(bool bEnableLightEnvironment, LightingChannelContainer AgentLightingChannel, bool bCastShadows) +{ + // End:0x30 + if(bEnableLightEnvironment) + { + LightEnvironment.SetEnabled(true); + } + else + { + DetachComponent(LightEnvironment); + } + //return; +} + +simulated function Vector GetAttemptedSpawnLocation(float Pct, Vector CurPos, float CurRadius, Vector DestPos, float DestRadius) +{ + local float MaxLateralOffset, LateralOffset; + local Vector LateralDir; + + MaxLateralOffset = CurRadius + (Pct * (DestRadius - CurRadius)); + LateralDir = Normal((CurPos - DestPos) Cross vect(0.0000000, 0.0000000, 1.0000000)); + LateralOffset = RandRange(-MaxLateralOffset, MaxLateralOffset); + return ((Pct * DestPos) + ((1.0000000 - Pct) * CurPos)) + (LateralOffset * LateralDir); + //return ReturnValue; +} + +simulated function InitializeAgent(Actor SpawnLoc, const out array PlayerInfo, GameCrowdAgent AgentTemplate, GameCrowdGroup NewGroup, float AgentWarmupTime, bool bWarmupPosition, bool bCheckWarmupVisibility) +{ + local bool bGroupDestination, bRealPreferVisible; + local GameCrowdDestination SpawnDest; + local float TryPct, MaxSpawnDist, DestDist, StartDist; + local Vector TryLoc; + local Actor HitActor; + local Vector HitLocation, HitNormal, NearestViewLocation, YAdjust; + local bool bVisibleTryLoc, bFoundOption; + local int CheckCnt, MaxCheckCnt, OptionIdx; + local array TryOptions; + local float SpawnDestRadius, TravelDestRadius; + local int PlayerIdx; + local float NearestViewDistSq, ViewDistSq; + local bool bVisibleOption; + + MyArchetype = AgentTemplate; + LastRenderTime = WorldInfo.TimeSeconds + (AgentWarmupTime * (0.5000000 + FRand())); + InitialLastRenderTime = LastRenderTime; + // End:0x103 + if(NewGroup != none) + { + NewGroup.AddMember(self); + // End:0x103 + if(NewGroup.Members.Length > 1) + { + bGroupDestination = true; + SetCurrentDestination(NewGroup.Members[0].CurrentDestination); + } + } + // End:0xC74 + if(!bGroupDestination) + { + SpawnDest = GameCrowdDestination(SpawnLoc); + // End:0xC74 + if(SpawnDest != none) + { + DebugSpawnDest = SpawnDest; + SetCurrentDestination(SpawnDest); + bRealPreferVisible = bPreferVisibleDestination; + bPreferVisibleDestination = bPreferVisibleDestinationOnSpawn || !SpawnDest.bWillBeVisible; + LastRenderTime = WorldInfo.TimeSeconds; + CurrentDestination.ReachedDestination(self); + bPreferVisibleDestination = bRealPreferVisible; + // End:0x21F + if(CurrentDestination == none) + { + } + // End:0xC74 + if(bWarmupPosition) + { + PlayerIdx = 0; + J0x237: + + // End:0x31E [Loop If] + if(PlayerIdx < PlayerInfo.Length) + { + ViewDistSq = VSizeSq(PlayerInfo[PlayerIdx].ViewLocation - SpawnDest.Location); + // End:0x310 + if((NearestViewDistSq == 0.0000000) || ViewDistSq < NearestViewDistSq) + { + NearestViewDistSq = ViewDistSq; + NearestViewLocation = PlayerInfo[PlayerIdx].ViewLocation; + } + PlayerIdx++; + // [Loop Continue] + goto J0x237; + } + // End:0xAB7 + if((NewGroup == none) || NewGroup.Members.Length == 1) + { + TryPct = FRand(); + MaxSpawnDist = ((NotEqual_InterfaceInterface(MySpawner, GameCrowdSpawnerInterface(none))) ? MySpawner.GetMaxSpawnDist() : 0.0000000); + // End:0x563 + if(SpawnDest.bIsBeyondSpawnDistance && NotEqual_InterfaceInterface(MySpawner, GameCrowdSpawnerInterface(none))) + { + DestDist = VSize(CurrentDestination.Location - NearestViewLocation); + // End:0x4B7 + if(CurrentDestination.bIsBeyondSpawnDistance || DestDist > MaxSpawnDist) + { + TryPct = ((DestDist < VSizeSq(SpawnDest.Location - NearestViewLocation)) ? 1.0000000 : 0.0000000); + } + else + { + StartDist = VSize(SpawnDest.Location - NearestViewLocation); + // End:0x551 + if(StartDist > DestDist) + { + TryPct = 1.0000000 - ((MaxSpawnDist - DestDist) / (StartDist - DestDist)); + TryPct *= 0.9000000; + } + else + { + TryPct = 0.0000000; + } + } + } + else + { + // End:0x5AB + if(!SpawnDest.bWillBeVisible) + { + TryPct = (0.5000000 * TryPct) + 0.5000000; + } + else + { + TryPct *= 0.9000000; + } + } + SpawnDestRadius = SpawnDest.GetDestinationRadius(); + TravelDestRadius = ((CurrentDestination != none) ? CurrentDestination.GetDestinationRadius() : SpawnDestRadius); + TryLoc = GetAttemptedSpawnLocation(TryPct, SpawnDest.Location, SpawnDestRadius, CurrentDestination.Location, TravelDestRadius); + bVisibleTryLoc = false; + // End:0x91D + if(NavigationHandle != none) + { + bFoundOption = false; + CheckCnt = 0; + MaxCheckCnt = 4; + J0x6D0: + + // End:0x906 [Loop If] + if((CheckCnt < MaxCheckCnt) && !bFoundOption) + { + TryOptions.Length = 0; + NavigationHandle.GetValidPositionsForBox(TryLoc, 128.0000000, GetCollisionExtent(), false, TryOptions, 1); + OptionIdx = 0; + J0x753: + + // End:0x86E [Loop If] + if(OptionIdx < TryOptions.Length) + { + bVisibleOption = false; + PlayerIdx = 0; + J0x782: + + // End:0x825 [Loop If] + if(PlayerIdx < PlayerInfo.Length) + { + HitActor = Trace(HitLocation, HitNormal, PlayerInfo[PlayerIdx].ViewLocation, TryOptions[OptionIdx], false); + // End:0x817 + if(HitActor == none) + { + bVisibleOption = true; + // [Explicit Break] + goto J0x825; + } + PlayerIdx++; + // [Loop Continue] + goto J0x782; + } + J0x825: + + // End:0x860 + if(!bVisibleOption) + { + bFoundOption = true; + TryLoc = TryOptions[OptionIdx]; + // [Explicit Break] + goto J0x86E; + } + OptionIdx++; + // [Loop Continue] + goto J0x753; + } + J0x86E: + + // End:0x903 + if(!bFoundOption) + { + TryPct *= 0.5000000; + TryLoc = GetAttemptedSpawnLocation(TryPct, SpawnDest.Location, SpawnDestRadius, CurrentDestination.Location, TravelDestRadius); + CheckCnt++; + } + // [Loop Continue] + goto J0x6D0; + } + bVisibleTryLoc = !bFoundOption; + } + // End:0x9FE + if(!bVisibleTryLoc) + { + SpawnOffset = TryLoc; + SetLocation(TryLoc); + // End:0x9FB + if((SpawnDest.bWillBeVisible && CurrentDestination.bIsVisible) && FRand() < 0.5000000) + { + PreviousDestination = CurrentDestination; + CurrentDestination.DecrementCustomerCount(self); + CurrentDestination = none; + BehaviorDestination = none; + SetCurrentDestination(SpawnDest); + } + } + else + { + PlayerIdx = 0; + J0xA09: + + // End:0xAB4 [Loop If] + if(PlayerIdx < PlayerInfo.Length) + { + HitActor = Trace(HitLocation, HitNormal, Location, PlayerInfo[PlayerIdx].ViewLocation, false); + // End:0xAA6 + if(HitActor == none) + { + SetLocation(SpawnDest.Location); + // [Explicit Break] + goto J0xAB4; + } + PlayerIdx++; + // [Loop Continue] + goto J0xA09; + } + } + J0xAB4: + + } + else + { + TryLoc = SpawnOffset; + TryPct = (2.0000000 * FRand()) - 1.0000000; + YAdjust = TryLoc + ((TryPct * AvoidOtherRadius) * Normal((CurrentDestination.Location - SpawnDest.Location) Cross vect(0.0000000, 0.0000000, 1.0000000))); + HitActor = Trace(HitLocation, HitNormal, YAdjust, CurrentDestination.Location, false); + // End:0xBCA + if(HitActor == none) + { + TryLoc = YAdjust; + } + HitActor = Trace(HitLocation, HitNormal, TryLoc - vect(0.0000000, 0.0000000, 250.0000000), TryLoc, false); + // End:0xC68 + if(HitActor != none) + { + TryLoc.Z = (HitLocation.Z + GroundOffset) + 5.0000000; + } + SetLocation(TryLoc); + } + } + } + } + LastKnownGoodPosition = Location; + LastKnownGoodPosition.Z += EyeZOffset; + // End:0xCC8 + if(SpawnBehaviors.Length > 0) + { + PlaySpawnBehavior(); + } + UpdateIntermediatePoint(); + InitDebugColor(); + //return; +} + +simulated function OnPlayAgentAnimation(SeqAct_PlayAgentAnimation Action) +{ + CurrentDestination.ReachedDestination(self); + //return; +} + +simulated event PlayIdleAnimation() +{ + //return; +} + +simulated event StopIdleAnimation() +{ + //return; +} + +event HandlePotentialAgentEncounter() +{ + // End:0x23 + if(CurrentBehavior == none) + { + PickBehaviorFrom(EncounterAgentBehaviors); + } + //return; +} + +function PlaySpawnBehavior() +{ + // End:0x23 + if(CurrentBehavior == none) + { + PickBehaviorFrom(SpawnBehaviors); + } + //return; +} + +event NotifySeePlayer(PlayerController PC) +{ + local bool bFoundBehavior; + local int I; + + bWantsSeePlayerNotification = false; + // End:0x11E + if(CurrentBehavior == none) + { + // End:0x11E + if(!PickBehaviorFrom(SeePlayerBehaviors, PC.Pawn.Location)) + { + I = 0; + J0x71: + + // End:0x100 [Loop If] + if(I < SeePlayerBehaviors.Length) + { + // End:0xF2 + if(!SeePlayerBehaviors[I].bNeverRepeat || !SeePlayerBehaviors[I].bHasBeenUsed) + { + bFoundBehavior = true; + // [Explicit Break] + goto J0x100; + } + I++; + // [Loop Continue] + goto J0x71; + } + J0x100: + + // End:0x11E + if(!bFoundBehavior) + { + SeePlayerInterval = 0.0000000; + } + } + } + // End:0x15A + if(SeePlayerInterval > 0.0000000) + { + SetTimer((0.8000000 + (0.4000000 * FRand())) * SeePlayerInterval, false, 'ResetSeePlayer'); + } + //return; +} + +function TryRandomBehavior() +{ + local bool bFoundBehavior; + local int I; + + // End:0x11A + if((CurrentBehavior == none) && (WorldInfo.TimeSeconds - LastRenderTime) < 0.1000000) + { + // End:0x11A + if(!PickBehaviorFrom(RandomBehaviors)) + { + I = 0; + J0x68: + + // End:0xF7 [Loop If] + if(I < RandomBehaviors.Length) + { + // End:0xE9 + if(!RandomBehaviors[I].bNeverRepeat || !RandomBehaviors[I].bHasBeenUsed) + { + bFoundBehavior = true; + // [Explicit Break] + goto J0xF7; + } + I++; + // [Loop Continue] + goto J0x68; + } + J0xF7: + + // End:0x11A + if(!bFoundBehavior) + { + ClearTimer('TryRandomBehavior'); + } + } + } + //return; +} + +function ResetSeePlayer() +{ + bWantsSeePlayerNotification = true; + //return; +} + +event ActivateBehavior(GameCrowdAgentBehavior NewBehaviorArchetype, optional Actor LookAtActor) +{ + StopBehavior(); + // End:0x1C + if(NewBehaviorArchetype == none) + { + return; + } + SetCurrentBehavior(NewBehaviorArchetype); + // End:0x66 + if(LookAtActor != none) + { + CurrentBehavior.ActionTarget = LookAtActor; + } + // End:0x95 + if(CurrentBehavior != none) + { + CurrentBehavior.InitBehavior(self); + } + //return; +} + +function ActivateInstancedBehavior(GameCrowdAgentBehavior NewBehaviorObject) +{ + StopBehavior(); + CurrentBehavior = NewBehaviorObject; + CurrentBehavior.InitBehavior(self); + //return; +} + +event HandleBehaviorEvent(GameCrowdAgentBehavior.ECrowdBehaviorEvent EventType, Actor InInstigator, bool bViralCause, bool bPropagateViralFlag) +{ + local bool bActivatedBehavior; + + switch(EventType) + { + // End:0x3A + case 1: + bActivatedBehavior = PickBehaviorFrom(SpawnBehaviors); + // End:0x175 + break; + // End:0x61 + case 2: + bActivatedBehavior = PickBehaviorFrom(RandomBehaviors); + // End:0x175 + break; + // End:0x88 + case 3: + bActivatedBehavior = PickBehaviorFrom(SeePlayerBehaviors); + // End:0x175 + break; + // End:0xAF + case 4: + bActivatedBehavior = PickBehaviorFrom(EncounterAgentBehaviors); + // End:0x175 + break; + // End:0xD6 + case 5: + bActivatedBehavior = PickBehaviorFrom(TakeDamageBehaviors); + // End:0x175 + break; + // End:0xFD + case 6: + bActivatedBehavior = PickBehaviorFrom(GroupWaitingBehaviors); + // End:0x175 + break; + // End:0x124 + case 7: + bActivatedBehavior = PickBehaviorFrom(UneasyBehaviors); + // End:0x175 + break; + // End:0x14B + case 8: + bActivatedBehavior = PickBehaviorFrom(AlertBehaviors); + // End:0x175 + break; + // End:0x172 + case 9: + bActivatedBehavior = PickBehaviorFrom(PanicBehaviors); + // End:0x175 + break; + // End:0xFFFF + default: + break; + } + // End:0x1F2 + if(bActivatedBehavior && CurrentBehavior != none) + { + // End:0x1CA + if(bPropagateViralFlag) + { + CurrentBehavior.bIsViralBehavior = bViralCause; + } + CurrentBehavior.ActivatedBy(InInstigator); + } + //return; +} + +event StopBehavior() +{ + // End:0x39 + if(CurrentBehavior != none) + { + CurrentBehavior.StopBehavior(); + CurrentBehavior = none; + } + //return; +} + +// Export UGameCrowdAgent::execSetCurrentBehavior(FFrame&, void* const) +native final function SetCurrentBehavior(GameCrowdAgentBehavior BehaviorArchetype); + +// Export UGameCrowdAgent::execIsIdle(FFrame&, void* const) +native function bool IsIdle(); + +simulated function bool CalcCamera(float fDeltaTime, out Vector out_CamLoc, out Rotator out_CamRot, out float out_FOV) +{ + local Vector HitNormal; + local float Radius; + + Radius = 20.0000000; + // End:0x8F + if(Trace(out_CamLoc, HitNormal, Location - ((Vector(out_CamRot) * Radius) * float(20)), Location, false) == none) + { + out_CamLoc = Location - ((Vector(out_CamRot) * Radius) * float(20)); + } + return false; + //return ReturnValue; +} + +event UpdateIntermediatePoint(optional Actor DestinationActor) +{ + // End:0x6F + if(DestinationActor == none) + { + // End:0x4B + if(CurrentBehavior != none) + { + DestinationActor = CurrentBehavior.GetDestinationActor(); + } + else + { + DestinationActor = CurrentDestination; + } + // End:0x6F + if(DestinationActor == none) + { + return; + } + } + // End:0xA9 + if(!bUseNavMeshPathing) + { + IntermediatePoint = DestinationActor.Location; + } + else + { + IntermediatePoint = GeneratePathToActor(DestinationActor); + // End:0x10B + if(IntermediatePoint == vect(0.0000000, 0.0000000, 0.0000000)) + { + IntermediatePoint = DestinationActor.Location; + } + } + //return; +} + +// Export UGameCrowdAgent::execPlayDeath(FFrame&, void* const) +native function PlayDeath(Vector KillMomentum); + +simulated event FireDeathEvent() +{ + TriggerEventClass(Class'Engine.SeqEvent_Death', self); + //return; +} + +function TakeDamage(int DamageAmount, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + // End:0xD3 + if(Health > 0) + { + Health -= DamageAmount; + // End:0xB0 + if(Health <= 0) + { + Health = -1; + SetCollision(false, false, false); + PlayDeath((Normal(Momentum) * DamageType.default.KDamageImpulse) + (vect(0.0000000, 0.0000000, 1.0000000) * DamageType.default.KDeathUpKick)); + } + else + { + // End:0xD3 + if(CurrentBehavior == none) + { + PickBehaviorFrom(TakeDamageBehaviors); + } + } + } + //return; +} + +event OverlappedActorEvent(Actor A) +{ + //return; +} + +event InitNavigationHandle() +{ + // End:0x27 + if(NavigationHandleClass != none) + { + NavigationHandle = new (self) NavigationHandleClass; + } + //return; +} + +event Vector GeneratePathToActor(Actor Goal, optional float WithinDistance, optional bool bAllowPartialPath) +{ + local Vector NextDest; + + LastPathingAttempt = WorldInfo.TimeSeconds; + NextDest = Goal.Location; + // End:0x6B + if(NavigationHandle == none) + { + InitNavigationHandle(); + } + // End:0x1A6 + if((NavigationHandle != none) && !NavigationHandle.ActorReachable(Goal)) + { + Class'Engine.NavMeshPath_Toward'.static.TowardGoal(NavigationHandle, Goal); + Class'Engine.NavMeshGoal_At'.static.AtActor(NavigationHandle, Goal, WithinDistance, bAllowPartialPath); + // End:0x187 + if(NavigationHandle.FindPath()) + { + NavigationHandle.GetNextMoveLocation(NextDest, SearchExtent.X); + } + NavigationHandle.ClearConstraints(); + } + return NextDest; + //return ReturnValue; +} + +// Export UGameCrowdAgent::execNativePostRenderFor(FFrame&, void* const) +native simulated function NativePostRenderFor(PlayerController PC, Canvas Canvas, Vector CameraPosition, Vector CameraDir); + +simulated event PostRenderFor(PlayerController PC, Canvas Canvas, Vector CameraPosition, Vector CameraDir) +{ + local float NameXL, TextXL, BehavXL, TextYL, YL, XL; + + local Vector ScreenLoc; + local string ScreenName, DestString, BehaviorString; + local FontRenderInfo FontInfo; + + ScreenLoc = Canvas.Project(Location + BeaconOffset); + // End:0x10B + if((((ScreenLoc.X < float(0)) || ScreenLoc.X >= Canvas.ClipX) || ScreenLoc.Y < float(0)) || ScreenLoc.Y >= Canvas.ClipY) + { + return; + } + ScreenName = "Agent" @ string(self); + // End:0x1AA + if(MyGroup != none) + { + ScreenName = (ScreenName $ " Group ") $ string(MyGroup); + DrawDebugLine(MyGroup.Members[0].Location, Location, 255, 0, 255, false); + } + ScreenName = (ScreenName @ "Last Rendered") @ string(WorldInfo.TimeSeconds - LastRenderTime); + Canvas.StrLen(ScreenName, NameXL, TextYL); + XL = FMax(XL, NameXL); + YL += TextYL; + DestString = GetDestString(); + Canvas.StrLen(DestString, TextXL, TextYL); + XL = FMax(XL, TextXL); + YL += TextYL; + BehaviorString = GetBehaviorString(); + Canvas.StrLen(BehaviorString, BehavXL, TextYL); + XL = FMax(XL, BehavXL); + YL += TextYL; + Canvas.SetPos(ScreenLoc.X - (0.7000000 * XL), ScreenLoc.Y - (1.8000000 * YL)); + Canvas.DrawTile(BeaconTexture, 1.4000000 * XL, 1.2000000 * YL, 0.0000000, 0.0000000, 31.0000000, 31.0000000, BeaconColor); + Canvas.DrawColor = Class'Engine.HUD'.default.GreenColor; + Canvas.SetPos(ScreenLoc.X - (0.5000000 * NameXL), ScreenLoc.Y - (1.7000000 * YL)); + FontInfo.bClipText = true; + Canvas.DrawText(ScreenName, true,,, FontInfo); + Canvas.SetPos(ScreenLoc.X - (0.5000000 * TextXL), (ScreenLoc.Y - (1.7000000 * YL)) + (1.1000000 * TextYL)); + FontInfo.bClipText = true; + Canvas.DrawText(DestString, true,,, FontInfo); + Canvas.SetPos(ScreenLoc.X - (0.5000000 * BehavXL), (ScreenLoc.Y - (1.7000000 * YL)) + (2.2000000 * TextYL)); + FontInfo.bClipText = true; + Canvas.DrawText(BehaviorString, true,,, FontInfo); + // End:0x763 + if(CurrentDestination != none) + { + DrawDebugLine(Location, CurrentDestination.Location, 255, 255, 0, false); + } + //return; +} + +function string GetDestString() +{ + local string DestString; + + DestString = ((CurrentDestination == none) ? "NO DESTINATION" : "" $ string(CurrentDestination)); + // End:0xC7 + if(IsIdle()) + { + DestString = (((CurrentDestination != none) && CurrentDestination.ReachedByAgent(self, Location, true)) ? "Idle at " $ DestString : "Idle en route to " $ DestString); + } + else + { + DestString = "Moving to " $ DestString; + } + return DestString; + //return ReturnValue; +} + +function string GetBehaviorString() +{ + local string BehaviorString; + + // End:0x3B + if(CurrentBehavior != none) + { + BehaviorString = CurrentBehavior.GetBehaviorString(); + } + else + { + BehaviorString = "Moving between Destinations"; + } + return BehaviorString; + //return ReturnValue; +} + +simulated function InitDebugColor() +{ + DebugAgentColor.G = byte(int(50) + Rand(205)); + //return; +} + +defaultproperties +{ + Health=100 + DeadBodyDuration=10.0000000 + // Reference: DynamicLightEnvironmentComponent'GameFramework.Default__GameCrowdAgent.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + begin object name="MyLightEnvironment" class=Engine.DynamicLightEnvironmentComponent + MinTimeBetweenFullUpdates=2.0000000 + bEnabled=false + end object + LightEnvironment=MyLightEnvironment + bUniformScale=true + bUseNavMeshPathing=true + bPreferVisibleDestinationOnSpawn=true + ConformTraceDist=35.0000000 + ConformTraceInterval=10 + CurrentConformTraceInterval=10 + AwareRadius=256.0000000 + AvoidOtherRadius=32.0000000 + AvoidOtherSampleList[0]=(RotOffset=0,NumMagSamples=10,bFallbackOnly=false) + AvoidOtherSampleList[1]=(RotOffset=2048,NumMagSamples=8,bFallbackOnly=false) + AvoidOtherSampleList[2]=(RotOffset=-2048,NumMagSamples=8,bFallbackOnly=false) + AvoidOtherSampleList[3]=(RotOffset=4096,NumMagSamples=6,bFallbackOnly=false) + AvoidOtherSampleList[4]=(RotOffset=-4096,NumMagSamples=6,bFallbackOnly=false) + AvoidOtherSampleList[5]=(RotOffset=6144,NumMagSamples=4,bFallbackOnly=false) + AvoidOtherSampleList[6]=(RotOffset=-6144,NumMagSamples=4,bFallbackOnly=false) + AvoidOtherSampleList[7]=(RotOffset=8192,NumMagSamples=4,bFallbackOnly=false) + AvoidOtherSampleList[8]=(RotOffset=-8192,NumMagSamples=4,bFallbackOnly=false) + AvoidOtherSampleList[9]=(RotOffset=12288,NumMagSamples=2,bFallbackOnly=false) + AvoidOtherSampleList[10]=(RotOffset=-12288,NumMagSamples=2,bFallbackOnly=false) + AvoidOtherSampleList[11]=(RotOffset=16384,NumMagSamples=1,bFallbackOnly=true) + AvoidOtherSampleList[12]=(RotOffset=-16384,NumMagSamples=1,bFallbackOnly=true) + AvoidOtherSampleList[13]=(RotOffset=24576,NumMagSamples=1,bFallbackOnly=true) + AvoidOtherSampleList[14]=(RotOffset=-24576,NumMagSamples=1,bFallbackOnly=true) + AvoidOtherSampleList[15]=(RotOffset=32768,NumMagSamples=1,bFallbackOnly=true) + PENALTY_COEFF_ANGLETOGOAL=2.5000000 + PENALTY_COEFF_ANGLETOVEL=1.0000000 + PENALTY_COEFF_MAG=1.0000000 + MIN_PENALTY_THRESHOLD=0.0500000 + MaxPathLaneValue=10.0000000 + ExtraPathCost=50 + RotateToTargetSpeed=30000.0000000 + MaxYawRate=40000.0000000 + MeshMinScale3D=(X=1.0000000,Y=1.0000000,Z=1.0000000) + MeshMaxScale3D=(X=1.0000000,Y=1.0000000,Z=1.0000000) + EyeZOffset=40.0000000 + ProximityLODDist=2000.0000000 + VisibleProximityLODDist=5000.0000000 + GroundOffset=86.0000000 + SearchExtent=(X=32.0000000,Y=32.0000000,Z=86.0000000) + NavigationHandleClass=Class'Engine.NavigationHandle' + WalkableFloorZ=0.7000000 + NotVisibleLifeSpan=10.0000000 + MaxWalkingSpeed=100.0000000 + MaxRunningSpeed=300.0000000 + BeaconMaxDist=1500.0000000 + BeaconOffset=(X=0.0000000,Y=0.0000000,Z=140.0000000) + BeaconTexture=Texture2D'EngineResources.WhiteSquareTexture' + BeaconColor=(R=0.5000000,G=0.5000000,B=0.5000000,A=0.5000000) + RandomBehaviorInterval=30.0000000 + ReachThreshold=1.0000000 + DesiredGroupRadius=200.0000000 + MaxLOSLifeDistanceSq=400000000.0000000 + Components[0]=MyLightEnvironment + Physics=EPhysics.PHYS_Interpolating + TickGroup=ETickingGroup.TG_DuringAsyncWork + bCollideActors=true + bProjTarget=true + bNoEncroachCheck=true + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdAgentBehavior.uc b/exported/GameFramework/Classes/GameCrowdAgentBehavior.uc new file mode 100755 index 00000000..5651e79d --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdAgentBehavior.uc @@ -0,0 +1,153 @@ +class GameCrowdAgentBehavior extends Object + abstract + native; + +enum ECrowdBehaviorEvent +{ + CBE_None, // 0 + CBE_Spawn, // 1 + CBE_Random, // 2 + CBE_SeePlayer, // 3 + CBE_EncounterAgent, // 4 + CBE_TakeDamage, // 5 + CBE_GroupWaiting, // 6 + CBE_Uneasy, // 7 + CBE_Alert, // 8 + CBE_Panic, // 9 + CBE_MAX // 10 +}; + +var GameCrowdAgentBehavior.ECrowdBehaviorEvent MyEventType; +var() GameCrowdAgentBehavior.ECrowdBehaviorEvent ViralBehaviorEvent; +var() float DurationOfBehavior; +var float TimeUntilStopBehavior; +var() bool bIdleBehavior; +var() bool bFaceActionTargetFirst; +var() bool bIsViralBehavior; +var() bool bPassOnIsViralBehaviorFlag; +var Actor ActionTarget; +var() float MaxPlayerDistance; +var() float ViralRadius; +var() float DurationBeforeBecomesViral; +var transient float TimeToBecomeViral; +var() float DurationOfViralBehaviorPropagation; +var transient float TimeToStopPropagatingViralBehavior; +var GameCrowdAgent MyAgent; +var(Debug) Color DebugBehaviorColor; + +// Export UGameCrowdAgentBehavior::execTriggerCrowdBehavior(FFrame&, void* const) +native static function GameCrowdBehaviorPoint TriggerCrowdBehavior(GameCrowdAgentBehavior.ECrowdBehaviorEvent EventType, Actor Instigator, Vector AtLocation, float InRange, float InDuration, optional Actor BaseActor, optional bool bRequireLOS); + +// Export UGameCrowdAgentBehavior::execShouldEndIdle(FFrame&, void* const) +native function bool ShouldEndIdle(); + +// Export UGameCrowdAgentBehavior::execTick(FFrame&, void* const) +native event Tick(float DeltaTime); + +function bool CanBeUsedBy(GameCrowdAgent Agent, Vector CameraLoc) +{ + // End:0x6D + if((Agent.CurrentBehavior != none) && int(Agent.CurrentBehavior.MyEventType) == int(MyEventType)) + { + return false; + } + return VSizeSq(CameraLoc - Agent.Location) < (MaxPlayerDistance * MaxPlayerDistance); + //return ReturnValue; +} + +event FinishedTargetRotation() +{ + //return; +} + +// Export UGameCrowdAgentBehavior::execHandleMovement(FFrame&, void* const) +native function bool HandleMovement(); + +function InitBehavior(GameCrowdAgent Agent) +{ + MyAgent = Agent; + // End:0x6E + if(DurationBeforeBecomesViral > 0.0000000) + { + TimeToBecomeViral = MyAgent.WorldInfo.TimeSeconds + DurationBeforeBecomesViral; + } + // End:0xC9 + if(DurationOfViralBehaviorPropagation > 0.0000000) + { + TimeToStopPropagatingViralBehavior = MyAgent.WorldInfo.TimeSeconds + DurationOfViralBehaviorPropagation; + } + // End:0xEF + if(DurationOfBehavior > 0.0000000) + { + TimeUntilStopBehavior = DurationOfBehavior; + } + //return; +} + +function StopBehavior() +{ + //return; +} + +event OnAnimEnd(AnimNodeSequence SeqNode, float PlayedTime, float ExcessTime) +{ + //return; +} + +function string GetBehaviorString() +{ + return "Behavior: " $ string(self); + //return ReturnValue; +} + +function ChangingDestination(GameCrowdDestination NewDest) +{ + //return; +} + +function Actor GetDestinationActor() +{ + return MyAgent.CurrentDestination; + //return ReturnValue; +} + +function ActivatedBy(Actor NewActionTarget) +{ + ActionTarget = NewActionTarget; + //return; +} + +function Actor GetBehaviorInstigator() +{ + return ActionTarget; + //return ReturnValue; +} + +event PropagateViralBehaviorTo(GameCrowdAgent OtherAgent) +{ + // End:0x51 + if(int(ViralBehaviorEvent) != int(0)) + { + OtherAgent.HandleBehaviorEvent(ViralBehaviorEvent, GetBehaviorInstigator(), true, bPassOnIsViralBehaviorFlag); + } + //return; +} + +function bool AllowThisDestination(GameCrowdDestination Destination) +{ + return true; + //return ReturnValue; +} + +function bool AllowBehaviorAt(GameCrowdDestination Destination) +{ + return true; + //return ReturnValue; +} + +defaultproperties +{ + bPassOnIsViralBehaviorFlag=true + MaxPlayerDistance=10000.0000000 + ViralRadius=512.0000000 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdAgentSM.uc b/exported/GameFramework/Classes/GameCrowdAgentSM.uc new file mode 100755 index 00000000..70eae7eb --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdAgentSM.uc @@ -0,0 +1,84 @@ +class GameCrowdAgentSM extends GameCrowdAgent + abstract + native + hidecategories(Navigation,Advanced,Attachment,Collision,Object); + +var(Rendering) export editinline StaticMeshComponent Mesh; +var(Rendering) MaterialInstanceConstant MeshColor; + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + MeshColor = Mesh.CreateAndSetMaterialInstanceConstant(0); + //return; +} + +simulated function InitDebugColor() +{ + super.InitDebugColor(); + ChangeDebugColor(DebugAgentColor); + //return; +} + +simulated function ChangeDebugColor(Color InC) +{ + local LinearColor C; + + C.R = float(InC.R) / 255.0000000; + C.G = float(InC.G) / 255.0000000; + C.B = float(InC.B) / 255.0000000; + MeshColor.SetVectorParameterValue('CrowdCylinderColor', C); + //return; +} + +function ActivateBehavior(GameCrowdAgentBehavior NewBehaviorArchetype, optional Actor LookAtActor) +{ + super.ActivateBehavior(NewBehaviorArchetype, LookAtActor); + // End:0x57 + if(CurrentBehavior != none) + { + ChangeDebugColor(CurrentBehavior.DebugBehaviorColor); + } + else + { + ChangeDebugColor(DebugAgentColor); + } + //return; +} + +function StopBehavior() +{ + super.StopBehavior(); + // End:0x2C + if(CurrentBehavior == none) + { + ChangeDebugColor(DebugAgentColor); + } + //return; +} + +defaultproperties +{ + // Reference: StaticMeshComponent'GameFramework.Default__GameCrowdAgentSM.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + begin object name="StaticMeshComponent0" class=Engine.StaticMeshComponent + ReplacementPrimitive=none + RBChannel=ERBCollisionChannel.RBCC_GameplayPhysics + bAcceptsDynamicDecals=false + bCastDynamicShadow=false + BlockNonZeroExtent=false + BlockRigidBody=false + RBCollideWithChannels=(Default=true,GameplayPhysics=true,EffectPhysics=true) + end object + Mesh=StaticMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'GameFramework.Default__GameCrowdAgentSM.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'GameFramework.Default__GameCrowdAgent.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + Components[1]=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdAgentSkeletal.uc b/exported/GameFramework/Classes/GameCrowdAgentSkeletal.uc new file mode 100755 index 00000000..2471ea8b --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdAgentSkeletal.uc @@ -0,0 +1,289 @@ +class GameCrowdAgentSkeletal extends GameCrowdAgent + abstract + native + hidecategories(Navigation,Advanced,Attachment,Collision,Object); + +struct native GameCrowdAttachmentInfo +{ + var() StaticMesh StaticMesh; + var() float Chance; + var() Vector Scale3D; + + structdefaultproperties + { + StaticMesh=none + Chance=1.0000000 + Scale3D=(X=1.0000000,Y=1.0000000,Z=1.0000000) + } +}; + +struct native GameCrowdAttachmentList +{ + var() name SocketName; + var() array List; + + structdefaultproperties + { + SocketName="None" + List=none + } +}; + +var(Rendering) export editinline SkeletalMeshComponent SkeletalMeshComponent; +var AnimNodeBlend SpeedBlendNode; +var AnimNodeSlot FullBodySlot; +var AnimNodeSequence ActionSeqNode; +var AnimNodeSequence WalkSeqNode; +var AnimNodeSequence RunSeqNode; +var AnimTree AgentTree; +var(Rendering) array WalkAnimNames; +var(Rendering) array RunAnimNames; +var(Rendering) array IdleAnimNames; +var(Behavior) array DeathAnimNames; +var(SpeedBlendAnim) float SpeedBlendStart; +var(SpeedBlendAnim) float SpeedBlendEnd; +var(SpeedBlendAnim) float AnimVelRate; +var(SpeedBlendAnim) float MaxSpeedBlendChangeSpeed; +var(SpeedBlendAnim) name MoveSyncGroupName; +var(Rendering) array Attachments; +var(Behavior) float MaxTargetAcquireTime; +var(Rendering) bool bUseRootMotionVelocity; +var(Rendering) bool bAllowSkeletonUpdateChangeBasedOnTickResult; +var(Tick) bool bTickWhenNotVisible; +var bool bIsPlayingIdleAnimation; +var bool bIsPlayingDeathAnimation; +var bool bIsPlayingImportantAnimation; +var bool bAnimateThisTick; +var(Tick) float NotVisibleDisableTickTime; +var(LOD) float MaxAnimationDistance; +var float MaxAnimationDistanceSq; + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x19 + if(bDeleteMe) + { + return; + } + SpeedBlendNode = AnimNodeBlend(SkeletalMeshComponent.FindAnimNode('SpeedBlendNode')); + FullBodySlot = AnimNodeSlot(SkeletalMeshComponent.FindAnimNode('ActionBlendNode')); + ActionSeqNode = AnimNodeSequence(SkeletalMeshComponent.FindAnimNode('ActionSeqNode')); + WalkSeqNode = AnimNodeSequence(SkeletalMeshComponent.FindAnimNode('WalkSeqNode')); + RunSeqNode = AnimNodeSequence(SkeletalMeshComponent.FindAnimNode('RunSeqNode')); + AgentTree = AnimTree(SkeletalMeshComponent.Animations); + // End:0x1C7 + if((WalkSeqNode != none) && WalkAnimNames.Length > 0) + { + WalkSeqNode.SetAnim(WalkAnimNames[Rand(WalkAnimNames.Length)]); + } + // End:0x21D + if((RunSeqNode != none) && RunAnimNames.Length > 0) + { + RunSeqNode.SetAnim(RunAnimNames[Rand(RunAnimNames.Length)]); + } + // End:0x24D + if(ActionSeqNode != none) + { + ActionSeqNode.bZeroRootTranslation = true; + } + // End:0x2C5 + if(bUseRootMotionVelocity) + { + SkeletalMeshComponent.RootMotionMode = 3; + WalkSeqNode.SetRootBoneAxisOption(2, 2, 2); + RunSeqNode.SetRootBoneAxisOption(2, 2, 2); + } + MaxAnimationDistanceSq = MaxAnimationDistance * MaxAnimationDistance; + //return; +} + +simulated function SetLighting(bool bEnableLightEnvironment, LightingChannelContainer AgentLightingChannel, bool bCastShadows) +{ + super.SetLighting(bEnableLightEnvironment, AgentLightingChannel, bCastShadows); + SkeletalMeshComponent.SetLightingChannels(AgentLightingChannel); + CreateAttachments(); + SkeletalMeshComponent.CastShadow = bCastShadows; + SkeletalMeshComponent.bCastDynamicShadow = bCastShadows; + SkeletalMeshComponent.ForceUpdate(false); + //return; +} + +// Export UGameCrowdAgentSkeletal::execPlayDeath(FFrame&, void* const) +native function PlayDeath(Vector KillMomentum); + +// Export UGameCrowdAgentSkeletal::execSetRootMotion(FFrame&, void* const) +native function SetRootMotion(bool bRootMotionEnabled); + +simulated function OnPlayAgentAnimation(SeqAct_PlayAgentAnimation Action) +{ + // End:0xB1 + if(Action.InputLinks[1].bHasImpulse) + { + Action.ActivateOutputLink(1); + StopBehavior(); + // End:0xAE + if(CurrentDestination.ReachedByAgent(self, Location, false)) + { + CurrentDestination.ReachedDestination(self); + } + } + else + { + Action.SetCurrentAnimationActionFor(self); + } + //return; +} + +event ClearLatentAnimation() +{ + ClearLatentAction(Class'GameFramework.SeqAct_PlayAgentAnimation', false); + //return; +} + +simulated event PlayIdleAnimation() +{ + bIsPlayingIdleAnimation = true; + FullBodySlot.PlayCustomAnim(IdleAnimNames[Rand(IdleAnimNames.Length)], 1.0000000, 0.1000000, 0.1000000, true, false); + //return; +} + +simulated event StopIdleAnimation() +{ + FullBodySlot.StopCustomAnim(0.1000000); + bIsPlayingIdleAnimation = false; + //return; +} + +event OnAnimEnd(AnimNodeSequence SeqNode, float PlayedTime, float ExcessTime) +{ + // End:0x49 + if(CurrentBehavior != none) + { + CurrentBehavior.OnAnimEnd(SeqNode, PlayedTime, ExcessTime); + } + //return; +} + +simulated function CreateAttachments() +{ + local int AttachIdx, InfoIdx, PickedInfoIdx; + local float ChanceTotal, RandVal; + local editinline StaticMeshComponent StaticMeshComp; + local bool bUseSocket, bUseBone; + + AttachIdx = 0; + J0x0B: + + // End:0x4E3 [Loop If] + if(AttachIdx < Attachments.Length) + { + // End:0x53 + if(Attachments[AttachIdx].List.Length == 0) + { + } + else + { + ChanceTotal = 0.0000000; + InfoIdx = 0; + J0x6D: + + // End:0xFE [Loop If] + if(InfoIdx < Attachments[AttachIdx].List.Length) + { + ChanceTotal += Attachments[AttachIdx].List[InfoIdx].Chance; + InfoIdx++; + // [Loop Continue] + goto J0x6D; + } + RandVal = FRand() * ChanceTotal; + ChanceTotal = 0.0000000; + InfoIdx = 0; + J0x12F: + + // End:0x1ED [Loop If] + if(InfoIdx < Attachments[AttachIdx].List.Length) + { + ChanceTotal += Attachments[AttachIdx].List[InfoIdx].Chance; + // End:0x1DF + if(ChanceTotal >= RandVal) + { + PickedInfoIdx = InfoIdx; + // [Explicit Break] + goto J0x1ED; + } + InfoIdx++; + // [Loop Continue] + goto J0x12F; + } + J0x1ED: + + // End:0x4D5 + if(Attachments[AttachIdx].List[PickedInfoIdx].StaticMesh != none) + { + bUseSocket = SkeletalMeshComponent.GetSocketByName(Attachments[AttachIdx].SocketName) != none; + bUseBone = SkeletalMeshComponent.MatchRefBone(Attachments[AttachIdx].SocketName) != -1; + // End:0x4D5 + if(bUseSocket || bUseBone) + { + StaticMeshComp = new (self) Class'Engine.StaticMeshComponent'; + StaticMeshComp.SetStaticMesh(Attachments[AttachIdx].List[PickedInfoIdx].StaticMesh); + StaticMeshComp.SetActorCollision(false, false); + StaticMeshComp.SetScale3D(Attachments[AttachIdx].List[PickedInfoIdx].Scale3D); + StaticMeshComp.SetLightEnvironment(LightEnvironment); + // End:0x481 + if(bUseSocket) + { + SkeletalMeshComponent.AttachComponentToSocket(StaticMeshComp, Attachments[AttachIdx].SocketName); + } + else + { + SkeletalMeshComponent.AttachComponent(StaticMeshComp, Attachments[AttachIdx].SocketName); + } + } + } + } + AttachIdx++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +defaultproperties +{ + // Reference: SkeletalMeshComponent'GameFramework.Default__GameCrowdAgentSkeletal.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" class=Engine.SkeletalMeshComponent + bUpdateSkelWhenNotRendered=false + bTickAnimNodesWhenNotRendered=false + bEnableLineCheckWithBounds=true + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'GameFramework.Default__GameCrowdAgentSkeletal.MyLightEnvironment' + RBChannel=ERBCollisionChannel.RBCC_GameplayPhysics + bCastDynamicShadow=false + CollideActors=true + BlockZeroExtent=true + RBCollideWithChannels=(Default=true,GameplayPhysics=true,EffectPhysics=true) + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + SpeedBlendStart=150.0000000 + SpeedBlendEnd=180.0000000 + AnimVelRate=0.0098000 + MaxSpeedBlendChangeSpeed=2.0000000 + MoveSyncGroupName="MoveGroup" + MaxTargetAcquireTime=5.0000000 + bAllowSkeletonUpdateChangeBasedOnTickResult=true + NotVisibleDisableTickTime=0.2000000 + MaxAnimationDistance=12000.0000000 + // Reference: DynamicLightEnvironmentComponent'GameFramework.Default__GameCrowdAgentSkeletal.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'GameFramework.Default__GameCrowdAgent.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdBehaviorPoint.uc b/exported/GameFramework/Classes/GameCrowdBehaviorPoint.uc new file mode 100755 index 00000000..dbe3fb8c --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdBehaviorPoint.uc @@ -0,0 +1,73 @@ +class GameCrowdBehaviorPoint extends GameCrowdInteractionPoint + native + config(Crowd) + placeable + hidecategories(Navigation,Advanced,Collision,Display,Actor,Movement,Physics); + +var config float RadiusOfBehaviorEvent; +var config float DurationOfBehaviorEvent; +var() GameCrowdAgentBehavior.ECrowdBehaviorEvent EventType; +var() bool bRequireLOS; +var Actor Initiator; + +event PostBeginPlay() +{ + super(Actor).PostBeginPlay(); + // End:0x4A + if(RadiusOfBehaviorEvent > 0.0000000) + { + CylinderComponent.SetCylinderSize(RadiusOfBehaviorEvent, 200.0000000); + } + // End:0x74 + if(DurationOfBehaviorEvent > 0.0000000) + { + SetTimer(DurationOfBehaviorEvent, false, 'DestroySelf'); + } + //return; +} + +function DestroySelf() +{ + LifeSpan = 0.0010000; + //return; +} + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local GameCrowdAgent Agent; + + Agent = GameCrowdAgent(Other); + // End:0x9E + if(Agent != none) + { + // End:0x9E + if(!bRequireLOS || FastTrace(Other.Location, Location)) + { + Agent.HandleBehaviorEvent(EventType, Initiator, false, true); + } + } + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + //return; +} + +defaultproperties +{ + // Reference: CylinderComponent'GameFramework.Default__GameCrowdBehaviorPoint.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'GameFramework.Default__GameCrowdInteractionPoint.CollisionCylinder' + begin object name="CollisionCylinder" + CollisionHeight=200.0000000 + CollisionRadius=512.0000000 + bDrawBoundingBox=true + ReplacementPrimitive=none + HiddenGame=false + CollideActors=true + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + bNoDelete=false + bCollideActors=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdBehavior_PlayAnimation.uc b/exported/GameFramework/Classes/GameCrowdBehavior_PlayAnimation.uc new file mode 100755 index 00000000..6d8f9aae --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdBehavior_PlayAnimation.uc @@ -0,0 +1,195 @@ +class GameCrowdBehavior_PlayAnimation extends GameCrowdAgentBehavior + native; + +var() array AnimationList; +var() float BlendInTime; +var() float BlendOutTime; +var() bool bUseRootMotion; +var() bool bLookAtPlayer; +var() bool bLooping; +var() bool bBlendBetweenAnims; +var Actor CustomActionTarget; +var() int LoopIndex; +var() float LoopTime; +var SeqAct_PlayAgentAnimation AnimSequence; +var int AnimationIndex; + +function InitBehavior(GameCrowdAgent Agent) +{ + local PlayerController PC, ClosestPC; + local float ClosestDist, newdist; + local GameCrowdAgentSkeletal SkAgent; + + super.InitBehavior(Agent); + // End:0x38 + if(CustomActionTarget != none) + { + ActionTarget = CustomActionTarget; + } + else + { + // End:0x181 + if(bLookAtPlayer) + { + ClosestDist = 1000000.0000000; + // End:0x149 + foreach Agent.LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + // End:0x148 + if(PC.Pawn != none) + { + newdist = VSize(PC.Pawn.Location - Agent.Location); + // End:0x148 + if(newdist < ClosestDist) + { + ClosestDist = newdist; + ClosestPC = PC; + } + } + } + // End:0x181 + if(ClosestPC != none) + { + ActionTarget = ClosestPC.Pawn; + } + } + } + SkAgent = GameCrowdAgentSkeletal(Agent); + // End:0x1AE + if(SkAgent == none) + { + return; + } + AnimationIndex = 0; + // End:0x1D2 + if(!bFaceActionTargetFirst) + { + PlayAgentAnimationNow(); + } + //return; +} + +event FinishedTargetRotation() +{ + PlayAgentAnimationNow(); + //return; +} + +// Export UGameCrowdBehavior_PlayAnimation::execSetSequenceOutput(FFrame&, void* const) +native function SetSequenceOutput(); + +event OnAnimEnd(AnimNodeSequence SeqNode, float PlayedTime, float ExcessTime) +{ + AnimationIndex++; + // End:0x30 + if(AnimationList.Length > AnimationIndex) + { + PlayAgentAnimationNow(); + } + else + { + // End:0xCF + if((AnimSequence != none) && AnimSequence.OutputLinks[0].Links.Length > 0) + { + SetSequenceOutput(); + MyAgent.ClearLatentAction(Class'GameFramework.SeqAct_PlayAgentAnimation', false); + AnimSequence.ActivateOutputLink(0); + } + MyAgent.StopBehavior(); + } + //return; +} + +function PlayAgentAnimationNow() +{ + local float CurrentBlendInTime, CurrentBlendOutTime; + local GameCrowdAgentSkeletal MySkAgent; + + MySkAgent = GameCrowdAgentSkeletal(MyAgent); + bFaceActionTargetFirst = false; + MySkAgent.SetRootMotion(bUseRootMotion); + CurrentBlendInTime = 0.0000000; + CurrentBlendOutTime = 0.0000000; + // End:0x173 + if(bLooping && AnimationIndex == LoopIndex) + { + // End:0xC6 + if(bBlendBetweenAnims || AnimationIndex == 0) + { + CurrentBlendInTime = BlendInTime; + } + MySkAgent.FullBodySlot.PlayCustomAnim(AnimationList[AnimationIndex], 1.0000000, CurrentBlendInTime, CurrentBlendOutTime, bLooping, true); + // End:0x170 + if(LoopTime > 0.0000000) + { + MySkAgent.SetTimer(LoopTime, false, 'OnAnimEnd'); + } + } + else + { + // End:0x1A9 + if(bBlendBetweenAnims) + { + CurrentBlendInTime = BlendInTime; + CurrentBlendOutTime = BlendOutTime; + } + else + { + // End:0x1CB + if(AnimationIndex == 0) + { + CurrentBlendInTime = BlendInTime; + } + } + MySkAgent.FullBodySlot.PlayCustomAnim(AnimationList[AnimationIndex], 1.0000000, CurrentBlendInTime, CurrentBlendOutTime, false, true); + MySkAgent.FullBodySlot.SetActorAnimEndNotification(true); + } + // End:0x292 + if(AnimSequence != none) + { + AnimSequence.ActivateOutputLink(2); + } + //return; +} + +function StopBehavior() +{ + GameCrowdAgentSkeletal(MyAgent).FullBodySlot.StopCustomAnim(BlendOutTime); + GameCrowdAgentSkeletal(MyAgent).SetRootMotion(false); + super.StopBehavior(); + //return; +} + +function string GetBehaviorString() +{ + local string BehaviorString; + + BehaviorString = "Behavior: " $ string(self); + // End:0x5E + if(bFaceActionTargetFirst) + { + BehaviorString = (BehaviorString @ "Turning toward ") $ string(ActionTarget); + } + else + { + // End:0xC4 + if((AnimationList.Length <= AnimationIndex) || AnimationList[AnimationIndex] == 'None') + { + BehaviorString = BehaviorString @ "MISSING ANIMATION"; + } + else + { + BehaviorString = (BehaviorString @ "Playing ") $ string(AnimationList[AnimationIndex]); + } + } + return BehaviorString; + //return ReturnValue; +} + +defaultproperties +{ + BlendInTime=0.2000000 + BlendOutTime=0.2000000 + LoopTime=-1.0000000 + bIdleBehavior=true +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdBehavior_RunFromPanic.uc b/exported/GameFramework/Classes/GameCrowdBehavior_RunFromPanic.uc new file mode 100755 index 00000000..0618b0d2 --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdBehavior_RunFromPanic.uc @@ -0,0 +1,79 @@ +class GameCrowdBehavior_RunFromPanic extends GameCrowdAgentBehavior + native; + +var transient Actor PanicFocus; + +function ActivatedBy(Actor NewActionTarget) +{ + local GameCrowdDestination TempDest, PrevDest; + + PanicFocus = NewActionTarget; + PrevDest = MyAgent.PreviousDestination; + // End:0x91 + if((MyAgent.CurrentDestination != none) && AllowThisDestination(MyAgent.CurrentDestination)) + { + return; + } + else + { + // End:0x1B7 + if((PrevDest != none) && PrevDest.AllowableDestinationFor(MyAgent)) + { + TempDest = MyAgent.CurrentDestination; + MyAgent.CurrentDestination.DecrementCustomerCount(MyAgent); + MyAgent.SetCurrentDestination(MyAgent.PreviousDestination); + MyAgent.PreviousDestination = TempDest; + MyAgent.UpdateIntermediatePoint(); + } + } + //return; +} + +function InitBehavior(GameCrowdAgent Agent) +{ + super.InitBehavior(Agent); + MyAgent.bIsPanicked = true; + MyAgent.SetMaxSpeed(); + //return; +} + +function StopBehavior() +{ + super.StopBehavior(); + MyAgent.bIsPanicked = false; + MyAgent.SetMaxSpeed(); + //return; +} + +function Actor GetBehaviorInstigator() +{ + return PanicFocus; + //return ReturnValue; +} + +function bool AllowThisDestination(GameCrowdDestination Destination) +{ + return (!Destination.bAvoidWhenPanicked && !Destination.AtCapacity()) && (Destination.bFleeDestination || PanicFocus == none) || ((Destination.Location - MyAgent.Location) Dot (MyAgent.Location - PanicFocus.Location)) > 0.0000000; + //return ReturnValue; +} + +function bool AllowBehaviorAt(GameCrowdDestination Destination) +{ + return !Destination.bSkipBehaviorIfPanicked && !Destination.bAvoidWhenPanicked; + //return ReturnValue; +} + +function string GetBehaviorString() +{ + return "Run from PANIC " @ string(PanicFocus); + //return ReturnValue; +} + +defaultproperties +{ + MyEventType=ECrowdBehaviorEvent.CBE_Panic + ViralBehaviorEvent=ECrowdBehaviorEvent.CBE_Alert + bIsViralBehavior=true + MaxPlayerDistance=20000.0000000 + DebugBehaviorColor=(R=255,G=0,B=0,A=0) +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdBehavior_WaitForGroup.uc b/exported/GameFramework/Classes/GameCrowdBehavior_WaitForGroup.uc new file mode 100755 index 00000000..eae3bfe8 --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdBehavior_WaitForGroup.uc @@ -0,0 +1,43 @@ +class GameCrowdBehavior_WaitForGroup extends GameCrowdAgentBehavior + native; + +function InitBehavior(GameCrowdAgent Agent) +{ + super.InitBehavior(Agent); + Agent.PlayIdleAnimation(); + //return; +} + +function string GetBehaviorString() +{ + local string BehaviorString; + + BehaviorString = "Behavior: " $ string(self); + // End:0x5E + if(bFaceActionTargetFirst) + { + BehaviorString = (BehaviorString @ "Turning toward ") $ string(ActionTarget); + } + else + { + BehaviorString = BehaviorString @ "Waiting For Group"; + } + return BehaviorString; + //return ReturnValue; +} + +// Export UGameCrowdBehavior_WaitForGroup::execShouldEndIdle(FFrame&, void* const) +native function bool ShouldEndIdle(); + +function StopBehavior() +{ + super.StopBehavior(); + MyAgent.StopIdleAnimation(); + //return; +} + +defaultproperties +{ + bIdleBehavior=true + bFaceActionTargetFirst=true +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdBehavior_WaitInQueue.uc b/exported/GameFramework/Classes/GameCrowdBehavior_WaitInQueue.uc new file mode 100755 index 00000000..c0556675 --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdBehavior_WaitInQueue.uc @@ -0,0 +1,65 @@ +class GameCrowdBehavior_WaitInQueue extends GameCrowdAgentBehavior + native; + +var bool bStoppingBehavior; +var GameCrowdDestinationQueuePoint QueuePosition; + +// Export UGameCrowdBehavior_WaitInQueue::execHandleMovement(FFrame&, void* const) +native function bool HandleMovement(); + +function ChangingDestination(GameCrowdDestination NewDest) +{ + // End:0x0F + if(QueuePosition == none) + { + } + MyAgent.StopBehavior(); + //return; +} + +function Actor GetDestinationActor() +{ + return QueuePosition; + //return ReturnValue; +} + +function string GetBehaviorString() +{ + // End:0x3B + if(QueuePosition != none) + { + return (string(self) $ " Waiting in line at ") $ string(QueuePosition); + } + else + { + return string(self) $ " Queue Behavior with NO QUEUEPOSITION!"; + } + //return ReturnValue; +} + +// Export UGameCrowdBehavior_WaitInQueue::execShouldEndIdle(FFrame&, void* const) +native function bool ShouldEndIdle(); + +function StopBehavior() +{ + // End:0x92 + if(!bStoppingBehavior) + { + bStoppingBehavior = true; + super.StopBehavior(); + // End:0x5C + if(QueuePosition != none) + { + QueuePosition.ClearQueue(MyAgent); + } + QueuePosition = none; + MyAgent.StopIdleAnimation(); + bStoppingBehavior = false; + } + //return; +} + +defaultproperties +{ + bIdleBehavior=true +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdDestination.uc b/exported/GameFramework/Classes/GameCrowdDestination.uc new file mode 100755 index 00000000..60aea449 --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdDestination.uc @@ -0,0 +1,767 @@ +class GameCrowdDestination extends GameCrowdInteractionPoint + native + placeable + hidecategories(Navigation,Advanced,Collision,Display,Actor,Movement,Physics) + implements(GameCrowdSpawnInterface,EditorLinkSelectionInterface); + +var private native const noexport Pointer VfTable_IEditorLinkSelectionInterface; +var() bool bKillWhenReached; +var() bool bAllowAsPreviousDestination; +var() bool bAvoidWhenPanicked; +var() bool bSkipBehaviorIfPanicked; +var() bool bFleeDestination; +var() bool bMustReachExactly; +var bool bHasRestrictions; +var(Spawning) bool bAllowsSpawning; +var(Spawning) bool bAllowCloudSpawning; +var(Spawning) bool bAllowVisibleSpawning; +var(Spawning) bool bLineSpawner; +var(Spawning) bool bSpawnAtEdge; +var() bool bSoftPerimeter; +var bool bIsVisible; +var bool bWillBeVisible; +var bool bCanSpawnHereNow; +var bool bIsBeyondSpawnDistance; +var bool bAdjacentToVisibleNode; +var bool bHasNavigationMesh; +var() duplicatetransient array NextDestinations; +var() duplicatetransient GameCrowdDestinationQueuePoint QueueHead; +var() int Capacity; +var() float Frequency; +var private int CustomerCount; +var(Restrictions) array< Class > SupportedAgentClasses; +var(Restrictions) array SupportedArchetypes; +var(Restrictions) array< Class > RestrictedAgentClasses; +var(Restrictions) array RestrictedArchetypes; +var float ExactReachTolerance; +var() name InteractionTag; +var() float InteractionDelay; +var() array ReachedBehaviors; +var GameCrowdAgent AgentEnRoute; +var float Priority; +var float LastSpawnTime; +var transient GameCrowdPopulationManager MyPopMgr; + +// Export UGameCrowdDestination::execReachedByAgent(FFrame&, void* const) +native simulated function bool ReachedByAgent(GameCrowdAgent Agent, Vector TestPosition, bool bTestExactly); + +simulated function PostBeginPlay() +{ + local int I; + local GameCrowdPopulationManager PopMgr; + + super(Actor).PostBeginPlay(); + bHasRestrictions = (((SupportedAgentClasses.Length > 0) || SupportedArchetypes.Length > 0) || RestrictedAgentClasses.Length > 0) || RestrictedArchetypes.Length > 0; + // End:0x82 + if((QueueHead != none) || bKillWhenReached) + { + bAllowsSpawning = false; + } + I = 0; + J0x8D: + + // End:0xFF [Loop If] + if(I < ReachedBehaviors.Length) + { + // End:0xF1 + if(ReachedBehaviors[I].BehaviorArchetype == none) + { + ReachedBehaviors.Remove(I, 1); + I--; + } + I++; + // [Loop Continue] + goto J0x8D; + } + PopMgr = GameCrowdPopulationManager(WorldInfo.PopulationManager); + // End:0x15F + if(PopMgr != none) + { + PopMgr.AddSpawnPoint(self); + } + //return; +} + +simulated function Destroyed() +{ + super(Actor).Destroyed(); + // End:0x39 + if(MyPopMgr != none) + { + MyPopMgr.RemoveSpawnPoint(self); + } + //return; +} + +simulated event ReachedDestination(GameCrowdAgent Agent) +{ + local int I, J; + local SeqEvent_CrowdAgentReachedDestination ReachedEvent; + local bool bEventActivated; + + // End:0x13B + if((GeneratedEvents.Length > 0) && GeneratedEvents[0] != none) + { + ReachedEvent = SeqEvent_CrowdAgentReachedDestination(GeneratedEvents[0]); + J = 0; + J0x4C: + + // End:0x104 [Loop If] + if(J < ReachedEvent.OutputLinks[0].Links.Length) + { + ReachedEvent.OutputLinks[0].Links[J].LinkedOp.bActive = false; + J++; + // [Loop Continue] + goto J0x4C; + } + bEventActivated = ReachedEvent.CheckActivate(self, Agent); + } + // End:0x19C + if(bKillWhenReached) + { + DecrementCustomerCount(Agent); + Agent.CurrentDestination = none; + Agent.KillAgent(); + return; + } + // End:0x29B + if(InteractionTag != 'None') + { + I = Agent.RecentInteractions.Add(1); + Agent.RecentInteractions[I].InteractionTag = InteractionTag; + // End:0x29B + if(InteractionDelay > 0.0000000) + { + Agent.RecentInteractions[I].InteractionDelay = WorldInfo.TimeSeconds + InteractionDelay; + } + } + // End:0x387 + if((Agent.BehaviorDestination != self) && (Agent.CurrentBehavior == none) || Agent.CurrentBehavior.AllowBehaviorAt(self)) + { + // End:0x358 + if(ReachedBehaviors.Length > 0) + { + Agent.PickBehaviorFrom(ReachedBehaviors); + } + // End:0x387 + if(ReachedEvent != none) + { + Agent.BehaviorDestination = self; + } + } + // End:0x4A1 + if(!bEventActivated && NextDestinations.Length > 0) + { + PickNewDestinationFor(Agent, false); + // End:0x4A1 + if(Agent.CurrentDestination == none) + { + // End:0x48D + if((Agent.NotVisibleLifeSpan > 0.0000000) && (WorldInfo.TimeSeconds - Agent.LastRenderTime) > Agent.NotVisibleLifeSpan) + { + Agent.KillAgent(); + } + else + { + PickNewDestinationFor(Agent, true); + } + } + } + // End:0x517 + if(Agent.MyGroup != none) + { + Agent.MyGroup.UpdateDestinations(Agent.CurrentDestination); + } + //return; +} + +simulated function PickNewDestinationFor(GameCrowdAgent Agent, bool bIgnoreRestrictions) +{ + local int I; + local float DestinationFrequencySum, DestinationPickValue; + local array DestOptions; + + DecrementCustomerCount(Agent); + Agent.CurrentDestination = none; + Agent.BehaviorDestination = none; + I = 0; + J0x5E: + + // End:0x201 [Loop If] + if(I < NextDestinations.Length) + { + // End:0x1F3 + if(((NextDestinations[I] != none) && NextDestinations[I].bHasNavigationMesh) && bIgnoreRestrictions || NextDestinations[I].AllowableDestinationFor(Agent)) + { + DestinationFrequencySum += (NextDestinations[I].Frequency * (((!bIsVisible && Agent.bPreferVisibleDestination) && NextDestinations[I].bIsVisible || NextDestinations[I].bWillBeVisible) ? 2.0000000 : 1.0000000)); + DestOptions.AddItem(NextDestinations[I]); + } + I++; + // [Loop Continue] + goto J0x5E; + } + DestinationPickValue = DestinationFrequencySum * FRand(); + DestinationFrequencySum = 0.0000000; + I = 0; + J0x232: + + // End:0x3FB [Loop If] + if(I < DestOptions.Length) + { + // End:0x3ED + if((DestOptions[I] != none) && DestOptions[I].bHasNavigationMesh) + { + DestinationFrequencySum += (DestOptions[I].Frequency * (((!bIsVisible && Agent.bPreferVisibleDestination) && DestOptions[I].bIsVisible || DestOptions[I].bWillBeVisible) ? 2.0000000 : 1.0000000)); + // End:0x3ED + if(DestinationPickValue < DestinationFrequencySum) + { + Agent.SetCurrentDestination(DestOptions[I]); + Agent.PreviousDestination = self; + Agent.UpdateIntermediatePoint(); + // [Explicit Break] + goto J0x3FB; + } + } + I++; + // [Loop Continue] + goto J0x232; + } + J0x3FB: + + Agent.PreviousDestination = self; + //return; +} + +simulated event DecrementCustomerCount(GameCrowdAgent DepartingAgent) +{ + local GameCrowdDestinationQueuePoint QP; + local bool bIsInQueue; + + // End:0x141 + if(DepartingAgent.CurrentDestination == self) + { + QP = QueueHead; + J0x37: + + // End:0xD4 [Loop If] + if(QP != none) + { + // End:0xA9 + if(QP.QueuedAgent == DepartingAgent) + { + bIsInQueue = true; + QP.ClearQueue(DepartingAgent); + // [Explicit Break] + goto J0xD4; + } + QP = QP.NextQueuePosition; + // [Loop Continue] + goto J0x37; + } + J0xD4: + + // End:0x141 + if(!bIsInQueue) + { + CustomerCount--; + // End:0x141 + if((QueueHead != none) && QueueHead.HasCustomer()) + { + QueueHead.AdvanceCustomerTo(self); + } + } + } + //return; +} + +simulated event IncrementCustomerCount(GameCrowdAgent ArrivingAgent) +{ + // End:0x1BE + if((AtCapacity()) || (QueueHead != none) && QueueHead.bPendingAdvance) + { + // End:0x1AC + if((QueueHead != none) && QueueHead.HasSpace()) + { + // End:0x180 + if((((AgentEnRoute != none) && AgentEnRoute.CurrentBehavior == none) && !ReachedByAgent(AgentEnRoute, AgentEnRoute.Location, false)) && VSizeSq(ArrivingAgent.Location - Location) < VSizeSq(AgentEnRoute.Location - Location)) + { + QueueHead.AddCustomer(AgentEnRoute, self); + AgentEnRoute = ArrivingAgent; + } + else + { + QueueHead.AddCustomer(ArrivingAgent, self); + } + } + else + { + // End:0x1BB + if(QueueHead != none) + { + } + } + } + else + { + AgentEnRoute = ArrivingAgent; + CustomerCount++; + } + //return; +} + +simulated function bool AtCapacity(optional byte CheckCnt) +{ + return (CustomerCount + int(CheckCnt)) >= Capacity; + //return ReturnValue; +} + +simulated event bool AllowableDestinationFor(GameCrowdAgent Agent) +{ + local int I; + local bool bSupported; + + // End:0x22 + if(!bHasNavigationMesh || !bIsEnabled) + { + return false; + } + // End:0x31 + if(bIsBeyondSpawnDistance) + { + return false; + } + // End:0x68 + if(!bAllowAsPreviousDestination && Agent.PreviousDestination == self) + { + return false; + } + // End:0xCA + if((Agent.CurrentBehavior != none) && !Agent.CurrentBehavior.AllowThisDestination(self)) + { + return false; + } + // End:0x17F + if((((Agent.MyGroup != none) && AtCapacity(byte(Agent.MyGroup.Members.Length - 1))) || AtCapacity()) || (QueueHead != none) && !QueueHead.HasSpace()) + { + return false; + } + // End:0x2D0 + if(InteractionTag != 'None') + { + I = Agent.RecentInteractions.Find('InteractionTag', InteractionTag); + // End:0x293 + if((I != -1) && (Agent.RecentInteractions[I].InteractionDelay == 0.0000000) || WorldInfo.TimeSeconds < Agent.RecentInteractions[I].InteractionDelay) + { + return false; + } + else + { + // End:0x2D0 + if(I != -1) + { + Agent.RecentInteractions.Remove(I, 1); + } + } + } + // End:0x4EB + if(bHasRestrictions) + { + // End:0x418 + if((SupportedAgentClasses.Length > 0) || SupportedArchetypes.Length > 0) + { + bSupported = false; + I = 0; + J0x316: + + // End:0x382 [Loop If] + if(I < SupportedAgentClasses.Length) + { + // End:0x374 + if(ClassIsChildOf(Agent.Class, SupportedAgentClasses[I])) + { + bSupported = true; + // [Explicit Break] + goto J0x382; + } + I++; + // [Loop Continue] + goto J0x316; + } + J0x382: + + // End:0x407 + if(!bSupported) + { + I = 0; + J0x39C: + + // End:0x407 [Loop If] + if(I < SupportedArchetypes.Length) + { + // End:0x3F9 + if(SupportedArchetypes[I] == Agent.MyArchetype) + { + bSupported = true; + // [Explicit Break] + goto J0x407; + } + I++; + // [Loop Continue] + goto J0x39C; + } + } + J0x407: + + // End:0x418 + if(!bSupported) + { + return false; + } + } + I = 0; + J0x423: + + // End:0x482 [Loop If] + if(I < RestrictedAgentClasses.Length) + { + // End:0x474 + if(ClassIsChildOf(Agent.Class, RestrictedAgentClasses[I])) + { + return false; + } + I++; + // [Loop Continue] + goto J0x423; + } + I = 0; + J0x48D: + + // End:0x4EB [Loop If] + if(I < RestrictedArchetypes.Length) + { + // End:0x4DD + if(RestrictedArchetypes[I] == Agent.MyArchetype) + { + return false; + } + I++; + // [Loop Continue] + goto J0x48D; + } + } + return true; + //return ReturnValue; +} + +simulated function float GetSpawnRadius() +{ + return CylinderComponent.CollisionRadius; + //return ReturnValue; +} + +simulated function GetSpawnPosition(SeqAct_GameCrowdSpawner Spawner, out Vector SpawnPos, out Rotator SpawnRot) +{ + local Vector SpawnLine; + local float RandScale; + + // End:0xBB + if(bLineSpawner) + { + RandScale = -1.0000000 + (2.0000000 * FRand()); + SpawnLine = vect(0.0000000, 1.0000000, 0.0000000) >> Rotation; + SpawnPos = Location + ((RandScale * SpawnLine) * (GetSpawnRadius())); + SpawnRot.Yaw = Rotation.Yaw; + } + else + { + SpawnRot = RotRand(false); + SpawnRot.Pitch = 0; + // End:0x131 + if(bSpawnAtEdge) + { + SpawnPos = Location + ((vect(1.0000000, 0.0000000, 0.0000000) * (GetSpawnRadius())) >> SpawnRot); + } + else + { + SpawnPos = Location + (((vect(1.0000000, 0.0000000, 0.0000000) * FRand()) * (GetSpawnRadius())) >> SpawnRot); + } + } + //return; +} + +simulated function bool AnalyzeSpawnPoint(const out array PlayerInfo, float MaxSpawnDistSq, bool bForceNavMeshPathing, NavigationHandle NavHandle) +{ + local Actor HitActor; + local Vector HitLocation, HitNormal; + local int NextIdx, PlayerIdx; + local GameCrowdDestination NextGCD; + local float DistFromView, DistFromPred; + + bIsVisible = true; + bAdjacentToVisibleNode = false; + bWillBeVisible = false; + Priority = 0.0000000; + bCanSpawnHereNow = false; + bHasNavigationMesh = true; + bIsBeyondSpawnDistance = true; + PlayerIdx = 0; + J0x62: + + // End:0x133 [Loop If] + if(PlayerIdx < PlayerInfo.Length) + { + DistFromView = VSizeSq(PlayerInfo[PlayerIdx].ViewLocation - Location); + DistFromPred = VSizeSq(PlayerInfo[PlayerIdx].PredictLocation - Location); + // End:0x125 + if(FMin(DistFromView, DistFromPred) < MaxSpawnDistSq) + { + bIsBeyondSpawnDistance = false; + // [Explicit Break] + goto J0x133; + } + PlayerIdx++; + // [Loop Continue] + goto J0x62; + } + J0x133: + + // End:0x456 + if(bIsEnabled && bAllowsSpawning) + { + // End:0x1DF + if(bForceNavMeshPathing && NavHandle.LineCheck(Location, Location - (vect(0.0000000, 0.0000000, 3.0000000) * CylinderComponent.CollisionHeight), vect(0.0000000, 0.0000000, 0.0000000))) + { + bHasNavigationMesh = false; + } + else + { + // End:0x357 + if(!bIsBeyondSpawnDistance) + { + bCanSpawnHereNow = true; + bIsVisible = false; + PlayerIdx = 0; + J0x211: + + // End:0x2A7 [Loop If] + if(PlayerIdx < PlayerInfo.Length) + { + HitActor = Trace(HitLocation, HitNormal, Location, PlayerInfo[PlayerIdx].ViewLocation, false); + // End:0x299 + if(HitActor == none) + { + bIsVisible = true; + // [Explicit Break] + goto J0x2A7; + } + PlayerIdx++; + // [Loop Continue] + goto J0x211; + } + J0x2A7: + + // End:0x357 + if(!bIsVisible) + { + PlayerIdx = 0; + J0x2C1: + + // End:0x357 [Loop If] + if(PlayerIdx < PlayerInfo.Length) + { + HitActor = Trace(HitLocation, HitNormal, Location, PlayerInfo[PlayerIdx].PredictLocation, false); + // End:0x349 + if(HitActor == none) + { + bWillBeVisible = true; + // [Explicit Break] + goto J0x357; + } + PlayerIdx++; + // [Loop Continue] + goto J0x2C1; + } + } + } + J0x357: + + // End:0x454 + if(bIsVisible) + { + NextIdx = 0; + J0x36F: + + // End:0x454 [Loop If] + if(NextIdx < NextDestinations.Length) + { + NextGCD = NextDestinations[NextIdx]; + // End:0x446 + if((((NextGCD != none) && NextGCD.bIsVisible) && NextGCD.bCanSpawnHereNow) && !NextGCD.bIsBeyondSpawnDistance) + { + bAdjacentToVisibleNode = true; + // End:0x446 + if(bIsBeyondSpawnDistance) + { + bCanSpawnHereNow = true; + } + } + NextIdx++; + // [Loop Continue] + goto J0x36F; + } + } + } + return true; + } + return false; + //return ReturnValue; +} + +simulated function PrioritizeSpawnPoint(const out array PlayerInfo, float MaxSpawnDist) +{ + local float DistToSpawn; + local int PlayerIdx; + + DistToSpawn = 999999.0000000; + PlayerIdx = 0; + J0x1A: + + // End:0x88 [Loop If] + if(PlayerIdx < PlayerInfo.Length) + { + DistToSpawn = FMin(DistToSpawn, VSize(Location - PlayerInfo[PlayerIdx].ViewLocation)); + PlayerIdx++; + // [Loop Continue] + goto J0x1A; + } + Priority = 1.0000000 - ((MaxSpawnDist - DistToSpawn) / MaxSpawnDist); + // End:0xD8 + if(bWillBeVisible) + { + Priority *= 10.0000000; + } + else + { + // End:0xF5 + if(bAdjacentToVisibleNode) + { + Priority *= 5.0000000; + } + } + Priority *= FMin(WorldInfo.TimeSeconds - LastSpawnTime, 10.0000000); + //return; +} + +function float GetDestinationRadius() +{ + return CylinderComponent.CollisionRadius; + //return ReturnValue; +} + +simulated function DrawDebug(const out array PlayerInfo, optional bool bPresistent) +{ + local int PlayerIdx; + local Vector Extent; + + Extent.X = CylinderComponent.CollisionRadius; + Extent.Y = CylinderComponent.CollisionRadius; + Extent.Z = CylinderComponent.CollisionHeight * 2.0000000; + PlayerIdx = 0; + J0xC4: + + // End:0x339 [Loop If] + if(PlayerIdx < PlayerInfo.Length) + { + // End:0x16E + if(bIsBeyondSpawnDistance) + { + DrawDebugLine(Location, PlayerInfo[PlayerIdx].ViewLocation, 255, 0, 0, bPresistent); + // End:0x16B + if(PlayerIdx == 0) + { + DrawDebugSphere(Location, 20.0000000, 20, 255, 0, 0, bPresistent); + } + } + else + { + // End:0x213 + if(!bIsEnabled || !bAllowsSpawning) + { + // End:0x1E6 + if(PlayerIdx == 0) + { + DrawDebugLine(Location, PlayerInfo[PlayerIdx].ViewLocation, 128, 0, 0, bPresistent); + } + DrawDebugSphere(Location, 20.0000000, 20, 128, 0, 0, bPresistent); + } + else + { + // End:0x2A7 + if(bIsVisible) + { + // End:0x278 + if(PlayerIdx == 0) + { + DrawDebugLine(Location, PlayerInfo[PlayerIdx].ViewLocation, 255, 0, 0, bPresistent); + } + DrawDebugBox(Location, Extent, 255, 0, 0, bPresistent); + } + else + { + // End:0x2FF + if(PlayerIdx == 0) + { + DrawDebugLine(Location, PlayerInfo[PlayerIdx].ViewLocation, 0, 255, 0, bPresistent); + } + DrawDebugBox(Location, Extent, 0, 255, 0, bPresistent); + } + } + } + PlayerIdx++; + // [Loop Continue] + goto J0xC4; + } + // End:0x36E + if(bAdjacentToVisibleNode) + { + DrawDebugStar(Location, 8.0000000, 0, 255, 0, bPresistent); + } + // End:0x3B2 + if(bWillBeVisible) + { + DrawDebugStar(Location + vect(0.0000000, 0.0000000, 8.0000000), 8.0000000, 0, 0, 255, bPresistent); + } + // End:0x3F6 + if(bCanSpawnHereNow) + { + DrawDebugStar(Location + vect(0.0000000, 0.0000000, 16.0000000), 8.0000000, 255, 255, 255, bPresistent); + } + //return; +} + +defaultproperties +{ + bSkipBehaviorIfPanicked=true + bAllowsSpawning=true + bAllowCloudSpawning=true + bSoftPerimeter=true + bHasNavigationMesh=true + Capacity=1000 + Frequency=1.0000000 + ExactReachTolerance=3.0000000 + // Reference: CylinderComponent'GameFramework.Default__GameCrowdDestination.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'GameFramework.Default__GameCrowdInteractionPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=none + bStatic=true + bForceAllowKismetModification=true + CollisionComponent=CollisionCylinder + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdDestinationQueuePoint.uc b/exported/GameFramework/Classes/GameCrowdDestinationQueuePoint.uc new file mode 100755 index 00000000..0aa7488d --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdDestinationQueuePoint.uc @@ -0,0 +1,198 @@ +class GameCrowdDestinationQueuePoint extends GameCrowdInteractionPoint + native + placeable + hidecategories(Navigation,Advanced,Collision,Display,Actor,Movement,Physics); + +var() GameCrowdDestinationQueuePoint NextQueuePosition; +var GameCrowdInteractionPoint PreviousQueuePosition; +var GameCrowdAgent QueuedAgent; +var transient GameCrowdDestination QueueDestination; +var bool bClearingQueue; +var bool bPendingAdvance; +var() float AverageReactionTime; +var Class QueueBehaviorClass; + +// Export UGameCrowdDestinationQueuePoint::execQueueReachedBy(FFrame&, void* const) +native function bool QueueReachedBy(GameCrowdAgent Agent, Vector TestPosition); + +simulated function bool HasSpace() +{ + // End:0x6E + if((QueuedAgent == none) && ((NextQueuePosition == none) || !NextQueuePosition.bPendingAdvance) || NextQueuePosition.QueuedAgent == none) + { + return true; + } + // End:0x7F + if(NextQueuePosition == none) + { + return false; + } + return NextQueuePosition.HasSpace(); + //return ReturnValue; +} + +simulated event ReachedDestination(GameCrowdAgent Agent) +{ + local GameCrowdDestinationQueuePoint QueuePoint; + + QueuePoint = Agent.CurrentDestination.QueueHead; + J0x3D: + + // End:0x2BE [Loop If] + if(QueuePoint != none) + { + // End:0x293 + if(QueuePoint.NextQueuePosition == self) + { + // End:0x97 + if(QueuePoint.QueuedAgent == none) + { + } + else + { + // End:0x293 + if(!QueuePoint.QueueReachedBy(QueuePoint.QueuedAgent, QueuePoint.QueuedAgent.Location) && VSizeSq(QueuePoint.Location - Agent.Location) < VSizeSq(QueuePoint.Location - QueuePoint.QueuedAgent.Location)) + { + QueuedAgent = QueuePoint.QueuedAgent; + QueuePoint.QueuedAgent = Agent; + GameCrowdBehavior_WaitInQueue(QueuedAgent.CurrentBehavior).QueuePosition = self; + GameCrowdBehavior_WaitInQueue(QueuePoint.QueuedAgent.CurrentBehavior).QueuePosition = QueuePoint; + return; + } + } + } + QueuePoint = QueuePoint.NextQueuePosition; + // [Loop Continue] + goto J0x3D; + } + GameCrowdBehavior_WaitInQueue(QueuedAgent.CurrentBehavior).bIdleBehavior = true; + QueuedAgent.PlayIdleAnimation(); + //return; +} + +simulated function AdvanceCustomerTo(GameCrowdInteractionPoint FrontPosition) +{ + PreviousQueuePosition = FrontPosition; + bPendingAdvance = true; + SetTimer(AverageReactionTime, false, 'ActuallyAdvance'); + //return; +} + +private final simulated function ActuallyAdvance() +{ + local GameCrowdDestinationQueuePoint FrontQueuePosition; + local GameCrowdDestination QueueFront; + local GameCrowdAgent TempAgent; + + bPendingAdvance = false; + // End:0x15D + if(QueuedAgent != none) + { + TempAgent = QueuedAgent; + bClearingQueue = true; + QueuedAgent.StopBehavior(); + bClearingQueue = false; + QueuedAgent = none; + FrontQueuePosition = GameCrowdDestinationQueuePoint(PreviousQueuePosition); + // End:0xC7 + if(FrontQueuePosition != none) + { + FrontQueuePosition.AddCustomer(TempAgent, none); + } + else + { + QueueFront = GameCrowdDestination(PreviousQueuePosition); + // End:0xF4 + if(QueueFront == none) + { + return; + } + QueueFront.IncrementCustomerCount(TempAgent); + } + // End:0x12E + if(QueuedAgent != none) + { + } + else + { + // End:0x15D + if(NextQueuePosition != none) + { + NextQueuePosition.AdvanceCustomerTo(self); + } + } + } + //return; +} + +simulated function AddCustomer(GameCrowdAgent NewCustomer, GameCrowdInteractionPoint PreviousPosition) +{ + // End:0x22 + if(PreviousPosition != none) + { + PreviousQueuePosition = PreviousPosition; + } + // End:0x100 + if(QueuedAgent == none) + { + QueuedAgent = NewCustomer; + NewCustomer.ActivateInstancedBehavior(new (NewCustomer) QueueBehaviorClass); + GameCrowdBehavior_WaitInQueue(NewCustomer.CurrentBehavior).QueuePosition = self; + GameCrowdBehavior_WaitInQueue(NewCustomer.CurrentBehavior).ActionTarget = PreviousQueuePosition; + } + else + { + // End:0x13B + if(NextQueuePosition != none) + { + NextQueuePosition.AddCustomer(NewCustomer, self); + } + } + //return; +} + +simulated function ClearQueue(GameCrowdAgent OldCustomer) +{ + // End:0x9A + if(!bClearingQueue) + { + bClearingQueue = true; + // End:0x8E + if(OldCustomer == QueuedAgent) + { + QueuedAgent.StopBehavior(); + QueuedAgent = none; + // End:0x8B + if(NextQueuePosition != none) + { + NextQueuePosition.AdvanceCustomerTo(self); + } + } + bClearingQueue = false; + } + //return; +} + +simulated function bool HasCustomer() +{ + return QueuedAgent != none; + //return ReturnValue; +} + +defaultproperties +{ + AverageReactionTime=0.7000000 + QueueBehaviorClass=Class'GameFramework.GameCrowdBehavior_WaitInQueue' + // Reference: CylinderComponent'GameFramework.Default__GameCrowdDestinationQueuePoint.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'GameFramework.Default__GameCrowdInteractionPoint.CollisionCylinder' + begin object name="CollisionCylinder" + CollisionRadius=100.0000000 + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdGroup.uc b/exported/GameFramework/Classes/GameCrowdGroup.uc new file mode 100755 index 00000000..9e837237 --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdGroup.uc @@ -0,0 +1,41 @@ +class GameCrowdGroup extends Object + native; + +var array Members; + +function AddMember(GameCrowdAgent Agent) +{ + Members[Members.Length] = Agent; + Agent.MyGroup = self; + //return; +} + +function RemoveMember(GameCrowdAgent Agent) +{ + Members.RemoveItem(Agent); + Agent.MyGroup = none; + //return; +} + +function UpdateDestinations(GameCrowdDestination NewDestination) +{ + local int I; + + I = 0; + J0x0B: + + // End:0xDE [Loop If] + if(I < Members.Length) + { + // End:0xD0 + if((Members[I] != none) && Members[I].CurrentDestination != NewDestination) + { + Members[I].SetCurrentDestination(NewDestination); + Members[I].UpdateIntermediatePoint(); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} diff --git a/exported/GameFramework/Classes/GameCrowdInfoVolume.uc b/exported/GameFramework/Classes/GameCrowdInfoVolume.uc new file mode 100755 index 00000000..36c8f34a --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdInfoVolume.uc @@ -0,0 +1,59 @@ +class GameCrowdInfoVolume extends Volume + native + hidecategories(Navigation,Object,Movement,Display); + +var() array PotentialSpawnPoints; + +simulated function Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local Pawn P; + local GameCrowdPopulationManager PopMgr; + + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + P = Pawn(Other); + // End:0xDE + if((P != none) && P.IsHumanControlled()) + { + PopMgr = GameCrowdPopulationManager(WorldInfo.PopulationManager); + // End:0xDE + if(PopMgr != none) + { + PopMgr.SetCrowdInfoVolume(self); + } + } + //return; +} + +simulated function UnTouch(Actor Other) +{ + local Pawn P; + local GameCrowdPopulationManager PopMgr; + + super(Actor).UnTouch(Other); + P = Pawn(Other); + // End:0xC3 + if((P != none) && P.IsHumanControlled()) + { + PopMgr = GameCrowdPopulationManager(WorldInfo.PopulationManager); + // End:0xC3 + if(PopMgr != none) + { + PopMgr.SetCrowdInfoVolume(none); + } + } + //return; +} + +defaultproperties +{ + // Reference: BrushComponent'GameFramework.Default__GameCrowdInfoVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdInteractionDestination.uc b/exported/GameFramework/Classes/GameCrowdInteractionDestination.uc new file mode 100755 index 00000000..2eeb86ba --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdInteractionDestination.uc @@ -0,0 +1,23 @@ +class GameCrowdInteractionDestination extends GameCrowdDestination + placeable + hidecategories(Navigation,Advanced,Collision,Display,Actor,Movement,Physics); + +defaultproperties +{ + bAvoidWhenPanicked=true + bMustReachExactly=true + bAllowsSpawning=false + Capacity=1 + // Reference: CylinderComponent'GameFramework.Default__GameCrowdInteractionDestination.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'GameFramework.Default__GameCrowdDestination.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdInteractionPoint.uc b/exported/GameFramework/Classes/GameCrowdInteractionPoint.uc new file mode 100755 index 00000000..3c96ccbd --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdInteractionPoint.uc @@ -0,0 +1,65 @@ +class GameCrowdInteractionPoint extends Actor + abstract + native + placeable + hidecategories(Navigation,Advanced,Collision,Display,Actor,Movement,Physics) + classgroup(Crowd); + +var() bool bIsEnabled; +var() export editinline CylinderComponent CylinderComponent; + +replication +{ + // Pos:0x000 + if(bNoDelete) + bIsEnabled; +} + +function OnToggle(SeqAct_Toggle Action) +{ + // End:0x46 + if(Action.InputLinks[0].bHasImpulse) + { + bIsEnabled = true; + } + else + { + // End:0x8C + if(Action.InputLinks[1].bHasImpulse) + { + bIsEnabled = false; + } + else + { + // End:0xDB + if(Action.InputLinks[2].bHasImpulse) + { + bIsEnabled = !bIsEnabled; + } + } + } + ForceNetRelevant(); + //return; +} + +defaultproperties +{ + bIsEnabled=true + // Reference: CylinderComponent'GameFramework.Default__GameCrowdInteractionPoint.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=40.0000000 + CollisionRadius=200.0000000 + CylinderColor=(R=0,G=255,B=0,A=255) + bDrawBoundingBox=false + bDrawNonColliding=true + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + TickGroup=ETickingGroup.TG_DuringAsyncWork + bNoDelete=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdPopulationManager.uc b/exported/GameFramework/Classes/GameCrowdPopulationManager.uc new file mode 100755 index 00000000..89644e09 --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdPopulationManager.uc @@ -0,0 +1,755 @@ +class GameCrowdPopulationManager extends CrowdPopulationManagerBase + native + hidecategories(Navigation) + implements(Interface_NavigationHandle); + +var private native const noexport Pointer VfTable_IInterface_NavigationHandle; +var CrowdSpawnInfoItem CloudSpawnInfo; +var array ScriptedSpawnInfo; +var GameCrowdInfoVolume ActiveCrowdInfoVolume; +var array GlobalPotentialSpawnPoints; +var float SplitScreenNumReduction; +var float PlayerPositionPredictionTime; +var float HeadVisibilityOffset; +var Class NavigationHandleClass; +var NavigationHandle NavigationHandle; +var GameCrowdAgent QueryingAgent; +var array PlayerInfo; +var float LastPlayerInfoUpdateTime; +var(Debug) bool bDebugSpawns; +var(Debug) bool bPauseCrowd; + +function PostBeginPlay() +{ + local GameCrowdDestination GCD; + + super(Actor).PostBeginPlay(); + // End:0x39 + if(!bDeleteMe) + { + WorldInfo.PopulationManager = self; + } + // End:0x60 + if(NavigationHandleClass != none) + { + NavigationHandle = new (self) NavigationHandleClass; + } + // End:0x8D + foreach AllActors(Class'GameFramework.GameCrowdDestination', GCD) + { + AddSpawnPoint(GCD); + } + //return; +} + +event NotifyPathChanged() +{ + //return; +} + +function AddSpawnPoint(GameCrowdDestination GCD) +{ + // End:0x4C + if((GCD.MyPopMgr != none) || !GCD.bAllowCloudSpawning) + { + return; + } + GCD.MyPopMgr = self; + GlobalPotentialSpawnPoints[GlobalPotentialSpawnPoints.Length] = GCD; + // End:0xDD + if(ActiveCrowdInfoVolume == none) + { + CloudSpawnInfo.PotentialSpawnPoints[CloudSpawnInfo.PotentialSpawnPoints.Length] = GCD; + } + //return; +} + +function RemoveSpawnPoint(GameCrowdDestination GCD) +{ + local int Idx, AgentIdx; + + GCD.MyPopMgr = none; + CloudSpawnInfo.PotentialSpawnPoints.RemoveItem(GCD); + CloudSpawnInfo.PrioritizedSpawnPoints.RemoveItem(GCD); + GlobalPotentialSpawnPoints.RemoveItem(GCD); + AgentIdx = 0; + J0x93: + + // End:0x14A [Loop If] + if(AgentIdx < CloudSpawnInfo.ActiveAgents.Length) + { + // End:0x13C + if(CloudSpawnInfo.ActiveAgents[AgentIdx].CurrentDestination == GCD) + { + CloudSpawnInfo.ActiveAgents[AgentIdx].Destroy(); + } + AgentIdx++; + // [Loop Continue] + goto J0x93; + } + Idx = 0; + J0x155: + + // End:0x2C1 [Loop If] + if(Idx < ScriptedSpawnInfo.Length) + { + ScriptedSpawnInfo[Idx].PotentialSpawnPoints.RemoveItem(GCD); + ScriptedSpawnInfo[Idx].PrioritizedSpawnPoints.RemoveItem(GCD); + AgentIdx = 0; + J0x1DE: + + // End:0x2B3 [Loop If] + if(AgentIdx < ScriptedSpawnInfo[Idx].ActiveAgents.Length) + { + // End:0x2A5 + if(ScriptedSpawnInfo[Idx].ActiveAgents[AgentIdx].CurrentDestination == GCD) + { + ScriptedSpawnInfo[Idx].ActiveAgents[AgentIdx].Destroy(); + } + AgentIdx++; + // [Loop Continue] + goto J0x1DE; + } + Idx++; + // [Loop Continue] + goto J0x155; + } + //return; +} + +function SetCrowdInfoVolume(GameCrowdInfoVolume Vol) +{ + // End:0xF8 + if(Vol != ActiveCrowdInfoVolume) + { + ActiveCrowdInfoVolume = Vol; + // End:0x77 + if(Vol != none) + { + CloudSpawnInfo.PotentialSpawnPoints = Vol.PotentialSpawnPoints; + } + else + { + CloudSpawnInfo.PotentialSpawnPoints = GlobalPotentialSpawnPoints; + } + CloudSpawnInfo.PrioritizedSpawnPoints.Length = 0; + CloudSpawnInfo.PrioritizationIndex = 0; + CloudSpawnInfo.PrioritizationUpdateIndex = 0; + } + //return; +} + +event int CreateSpawner(SeqAct_GameCrowdPopulationManagerToggle inAction) +{ + local int Idx; + + Idx = ScriptedSpawnInfo.Length; + ScriptedSpawnInfo.Length = Idx + 1; + ScriptedSpawnInfo[Idx].SeqSpawner = inAction; + return Idx; + //return ReturnValue; +} + +event FlushAgents(CrowdSpawnInfoItem Item) +{ + local int AgentIdx; + + AgentIdx = 0; + J0x0B: + + // End:0x79 [Loop If] + if(AgentIdx < Item.ActiveAgents.Length) + { + Item.ActiveAgents[AgentIdx].Destroy(); + AgentIdx++; + // [Loop Continue] + goto J0x0B; + } + Item.ActiveAgents.Length = 0; + //return; +} + +event FlushAllAgents() +{ + local int Idx; + + FlushAgents(CloudSpawnInfo); + Idx = 0; + J0x1E: + + // End:0x61 [Loop If] + if(Idx < ScriptedSpawnInfo.Length) + { + FlushAgents(ScriptedSpawnInfo[Idx]); + Idx++; + // [Loop Continue] + goto J0x1E; + } + //return; +} + +function AgentDestroyed(GameCrowdAgent Agent) +{ + local int SpawnerIdx, I; + + SpawnerIdx = ScriptedSpawnInfo.Find('SeqSpawner', SeqAct_GameCrowdPopulationManagerToggle(Agent.MySpawner)); + // End:0x190 + if(SpawnerIdx >= 0) + { + I = 0; + J0x63: + + // End:0x15A [Loop If] + if(I < ScriptedSpawnInfo[SpawnerIdx].AgentArchetypes.Length) + { + // End:0x14C + if(GameCrowdAgent(ScriptedSpawnInfo[SpawnerIdx].AgentArchetypes[I].AgentArchetype) == Agent.MyArchetype) + { + ScriptedSpawnInfo[SpawnerIdx].AgentArchetypes[I].CurrSpawned--; + } + I++; + // [Loop Continue] + goto J0x63; + } + ScriptedSpawnInfo[SpawnerIdx].ActiveAgents.RemoveItem(Agent); + } + else + { + // End:0x2D2 + if(NotEqual_InterfaceInterface(Agent.MySpawner, GameCrowdSpawnerInterface(none))) + { + I = 0; + J0x1D0: + + // End:0x2A9 [Loop If] + if(I < CloudSpawnInfo.AgentArchetypes.Length) + { + // End:0x29B + if(GameCrowdAgent(CloudSpawnInfo.AgentArchetypes[I].AgentArchetype) == Agent.MyArchetype) + { + CloudSpawnInfo.AgentArchetypes[I].CurrSpawned--; + } + I++; + // [Loop Continue] + goto J0x1D0; + } + CloudSpawnInfo.ActiveAgents.RemoveItem(Agent); + } + } + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + local Canvas Canvas; + local int RenderedNum, LOSNum, SimNum, ActualCount, DistanceBucket[20], I, + RVONum; + + local Actor HitActor; + local Vector HitNormal, HitLocation; + local GameCrowdAgent GCA; + local float Dist; + local array AgentList; + local int PlayerIdx, SpawnIdx; + local bool bHasLOS; + local float BucketSize; + + Canvas = HUD.Canvas; + Canvas.SetDrawColor(255, 255, 255); + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText("---- GameCrowdPopulationManager ---"); + out_YPos += out_YL; + // End:0xEA + if(!GetPlayerInfo()) + { + return; + } + // End:0x146 + foreach DynamicActors(Class'GameFramework.GameCrowdAgent', GCA) + { + // End:0x145 + if(!GCA.bDeleteMe) + { + AgentList[AgentList.Length] = GCA; + } + } + BucketSize = (2.0000000 * CloudSpawnInfo.MaxSpawnDist) / float(20); + // End:0x47E + foreach AgentList(GCA) + { + ActualCount++; + // End:0x3BA + if(GCA.Health > 0) + { + // End:0x1ED + if(GCA.bSimulateThisTick) + { + SimNum++; + } + // End:0x292 + if(((WorldInfo.TimeSeconds - GCA.LastRenderTime) < 1.0000000) && GCA.LastRenderTime != GCA.InitialLastRenderTime) + { + bHasLOS = true; + RenderedNum++; + } + else + { + bHasLOS = false; + PlayerIdx = 0; + J0x2A9: + + // End:0x354 [Loop If] + if(PlayerIdx < PlayerInfo.Length) + { + HitActor = Trace(HitLocation, HitNormal, GCA.Location, PlayerInfo[PlayerIdx].ViewLocation, false); + // End:0x346 + if(HitActor == none) + { + bHasLOS = true; + // [Explicit Break] + goto J0x354; + } + PlayerIdx++; + // [Loop Continue] + goto J0x2A9; + } + } + J0x354: + + // End:0x399 + if(bHasLOS) + { + LOSNum++; + // End:0x399 + if(GCA.bSimulateThisTick) + { + RVONum++; + } + } + GCA.bSimulateThisTick = false; + } + Dist = 999999.0000000; + PlayerIdx = 0; + J0x3D4: + + // End:0x457 [Loop If] + if(PlayerIdx < PlayerInfo.Length) + { + Dist = FMin(VSize(PlayerInfo[PlayerIdx].ViewLocation - GCA.Location), Dist); + PlayerIdx++; + // [Loop Continue] + goto J0x3D4; + } + DistanceBucket[Min(19, int(Dist / BucketSize))]++; + } + Canvas.DrawText("TotalCount: " $ string(ActualCount)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText((("Cloud:" @ string(CloudSpawnInfo.ActiveAgents.Length)) @ "Active:") @ string(CloudSpawnInfo.bSpawningActive)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + SpawnIdx = 0; + J0x5C6: + + // End:0x6E9 [Loop If] + if(SpawnIdx < ScriptedSpawnInfo.Length) + { + Canvas.DrawText(((("Scripted: " $ string(ScriptedSpawnInfo[SpawnIdx].ActiveAgents.Length)) @ string(ScriptedSpawnInfo[SpawnIdx].SeqSpawner)) @ "Active:") @ string(ScriptedSpawnInfo[SpawnIdx].bSpawningActive)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + SpawnIdx++; + // [Loop Continue] + goto J0x5C6; + } + Canvas.DrawText("Agents Rendered:" @ string(RenderedNum)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText("Agents LOS:" @ string(LOSNum)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText("Agents Simulated:" @ string(SimNum)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText("Agents RVO:" @ string(RVONum)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + Canvas.DrawText("Distance Buckets"); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + I = 0; + J0x977: + + // End:0xA52 [Loop If] + if(I < 19) + { + // End:0xA44 + if(DistanceBucket[I] > 0) + { + Canvas.DrawText(((" (<" $ string(BucketSize * float(I + 1))) $ ")") $ string(DistanceBucket[I])); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + I++; + // [Loop Continue] + goto J0x977; + } + //return; +} + +function bool IsSpawningActive() +{ + local int SpawnerIdx; + + // End:0x22 + if(CloudSpawnInfo.bSpawningActive) + { + return true; + } + SpawnerIdx = 0; + J0x2D: + + // End:0x7F [Loop If] + if(SpawnerIdx < ScriptedSpawnInfo.Length) + { + // End:0x71 + if(ScriptedSpawnInfo[SpawnerIdx].bSpawningActive) + { + return true; + } + SpawnerIdx++; + // [Loop Continue] + goto J0x2D; + } + return false; + //return ReturnValue; +} + +simulated function bool ShouldDebugDestinations() +{ + return bDebugSpawns; + //return ReturnValue; +} + +function Tick(float DeltaTime) +{ + // End:0x31 + if(!bPauseCrowd && IsSpawningActive()) + { + UpdateAllSpawners(DeltaTime); + } + //return; +} + +// Export UGameCrowdPopulationManager::execUpdateAllSpawners(FFrame&, void* const) +native function UpdateAllSpawners(float DeltaTime); + +event bool UpdateSpawner(out CrowdSpawnInfoItem Item, float DeltaTime) +{ + local GameCrowdDestination PickedSpawnPoint; + local GameCrowdAgent A; + local int NumSpawned; + + // End:0x64 + if(!Item.bSpawningActive || Item.ActiveAgents.Length >= Item.SpawnNum) + { + return false; + } + // End:0xBA + if(Item.SeqSpawner != none) + { + Item.SeqSpawner.LastSpawnedList.Length = 0; + } + Item.Remainder += (FMin(DeltaTime, 0.0500000) * Item.SpawnRate); + // End:0x302 + if(Item.Remainder > 1.0000000) + { + PrioritizeSpawnPoints(Item, DeltaTime); + J0x148: + + // End:0x302 [Loop If] + if((Item.Remainder > 1.0000000) && Item.ActiveAgents.Length < Item.SpawnNum) + { + PickedSpawnPoint = PickSpawnPoint(Item); + // End:0x2DD + if(PickedSpawnPoint != none) + { + PickedSpawnPoint.LastSpawnTime = WorldInfo.TimeSeconds; + A = SpawnAgent(Item, PickedSpawnPoint); + // End:0x2B7 + if(A != none) + { + NumSpawned++; + // End:0x2B7 + if(Item.SeqSpawner != none) + { + Item.SeqSpawner.LastSpawnedList.AddItem(A); + } + } + Item.Remainder -= 1.0000000; + } + else + { + Item.Remainder = 0.0000000; + } + // [Loop Continue] + goto J0x148; + } + } + return NumSpawned > 0; + //return ReturnValue; +} + +event GameCrowdDestination PickSpawnPoint(out CrowdSpawnInfoItem Item) +{ + local int StartingIndex, SpawnIdx; + local GameCrowdDestination Candidate; + + StartingIndex = Min(Item.PrioritizationIndex, Item.PrioritizedSpawnPoints.Length); + SpawnIdx = 0; + J0x50: + + // End:0x145 [Loop If] + if(SpawnIdx < Item.PrioritizedSpawnPoints.Length) + { + Item.PrioritizationIndex = (StartingIndex + SpawnIdx) % Item.PrioritizedSpawnPoints.Length; + Candidate = Item.PrioritizedSpawnPoints[Item.PrioritizationIndex]; + // End:0x137 + if(ValidateSpawnAt(Item, Candidate)) + { + return Candidate; + } + SpawnIdx++; + // [Loop Continue] + goto J0x50; + } + return none; + //return ReturnValue; +} + +// Export UGameCrowdPopulationManager::execGetPlayerInfo(FFrame&, void* const) +native simulated function bool GetPlayerInfo(); + +// Export UGameCrowdPopulationManager::execStaticGetPlayerInfo(FFrame&, void* const) +native static simulated function bool StaticGetPlayerInfo(out array out_PlayerInfo); + +event PrioritizeSpawnPoints(out CrowdSpawnInfoItem Item, float DeltaTime) +{ + local int UpdateNum; + + // End:0x36 + if((Item.PotentialSpawnPoints.Length == 0) || !GetPlayerInfo()) + { + return; + } + UpdateNum = Max(1, int((DeltaTime * float(Item.PotentialSpawnPoints.Length)) / Item.SpawnPrioritizationInterval)); + AnalyzeSpawnPoints(Item, Item.PrioritizationUpdateIndex, UpdateNum); + Item.PrioritizationUpdateIndex = (Item.PrioritizationUpdateIndex + UpdateNum) % Item.PotentialSpawnPoints.Length; + //return; +} + +function AnalyzeSpawnPoints(out CrowdSpawnInfoItem Item, int StartIndex, int NumToUpdate) +{ + local int UpdateIdx, Idx, NumUpdated; + local GameCrowdDestination GCD; + + // End:0x3E + if((StartIndex >= Item.PotentialSpawnPoints.Length) || !GetPlayerInfo()) + { + return; + } + NumUpdated = 0; + UpdateIdx = 0; + J0x54: + + // End:0x22E [Loop If] + if((NumUpdated < NumToUpdate) && UpdateIdx < Item.PotentialSpawnPoints.Length) + { + Idx = (StartIndex + UpdateIdx) % Item.PotentialSpawnPoints.Length; + GCD = Item.PotentialSpawnPoints[Idx]; + // End:0x141 + if(GCD == none) + { + Item.PotentialSpawnPoints.Remove(UpdateIdx--, 1); + } + else + { + Item.PrioritizedSpawnPoints.RemoveItem(GCD); + // End:0x220 + if(GCD.AnalyzeSpawnPoint(PlayerInfo, Item.MaxSpawnDistSq, Item.bForceNavMeshPathing, NavigationHandle)) + { + NumUpdated++; + // End:0x220 + if(GCD.bCanSpawnHereNow) + { + AddPrioritizedSpawnPoint(Item, GCD); + } + } + } + UpdateIdx++; + // [Loop Continue] + goto J0x54; + } + //return; +} + +function AddPrioritizedSpawnPoint(out CrowdSpawnInfoItem Item, GameCrowdDestination GCD) +{ + local int SpawnIdx, StartingIndex; + + GCD.PrioritizeSpawnPoint(PlayerInfo, Item.MaxSpawnDist); + StartingIndex = Min(Item.PrioritizationIndex, Item.PrioritizedSpawnPoints.Length); + SpawnIdx = 0; + J0x94: + + // End:0x20E [Loop If] + if(SpawnIdx < Item.PrioritizedSpawnPoints.Length) + { + Item.PrioritizationIndex = (StartingIndex + SpawnIdx) % Item.PrioritizedSpawnPoints.Length; + // End:0x200 + if(Item.PrioritizedSpawnPoints[Item.PrioritizationIndex].Priority < GCD.Priority) + { + Item.PrioritizedSpawnPoints.Insert(Item.PrioritizationIndex, 1); + Item.PrioritizedSpawnPoints[Item.PrioritizationIndex] = GCD; + return; + } + SpawnIdx++; + // [Loop Continue] + goto J0x94; + } + Item.PrioritizedSpawnPoints.Insert(StartingIndex, 1); + Item.PrioritizedSpawnPoints[StartingIndex] = GCD; + Item.PrioritizationIndex = (StartingIndex + 1) % Item.PrioritizedSpawnPoints.Length; + //return; +} + +function bool ValidateSpawnAt(out CrowdSpawnInfoItem Item, GameCrowdDestination Candidate) +{ + local Actor HitActor; + local Vector HitLocation, HitNormal; + local float DistSq, MinDistFromViewSq, DestDotView; + local int PlayerIdx; + + // End:0x71 + if((!Candidate.bIsEnabled || !Candidate.bAllowsSpawning) || Candidate.AtCapacity()) + { + return false; + } + // End:0x95 + if(Candidate.bAllowVisibleSpawning) + { + return true; + } + // End:0x2F5 + if(GetPlayerInfo()) + { + MinDistFromViewSq = 2147484000.0000000; + PlayerIdx = 0; + J0xBC: + + // End:0x2C9 [Loop If] + if(PlayerIdx < PlayerInfo.Length) + { + DistSq = VSizeSq(Candidate.Location - PlayerInfo[PlayerIdx].ViewLocation); + MinDistFromViewSq = FMin(DistSq, MinDistFromViewSq); + // End:0x2BB + if(DistSq < Item.MaxSpawnDistSq) + { + DestDotView = Normal(Candidate.Location - PlayerInfo[PlayerIdx].ViewLocation) Dot Vector(PlayerInfo[PlayerIdx].ViewRotation); + // End:0x2BB + if((DistSq < Item.MinBehindSpawnDistSq) || DestDotView > 0.7000000) + { + HitActor = Trace(HitLocation, HitNormal, Candidate.Location + (HeadVisibilityOffset * vect(0.0000000, 0.0000000, 1.0000000)), PlayerInfo[PlayerIdx].ViewLocation, false,,, 1); + // End:0x2BB + if(HitActor == none) + { + return false; + } + } + } + PlayerIdx++; + // [Loop Continue] + goto J0xBC; + } + // End:0x2F5 + if(MinDistFromViewSq < Item.MaxSpawnDistSq) + { + return true; + } + } + return false; + //return ReturnValue; +} + +// Export UGameCrowdPopulationManager::execSpawnAgentByIdx(FFrame&, void* const) +native function GameCrowdAgent SpawnAgentByIdx(int SpawnerIdx, GameCrowdDestination SpawnLoc); + +// Export UGameCrowdPopulationManager::execSpawnAgent(FFrame&, void* const) +native function GameCrowdAgent SpawnAgent(out CrowdSpawnInfoItem Item, GameCrowdDestination SpawnLoc); + +// Export UGameCrowdPopulationManager::execWarmup(FFrame&, void* const) +native function bool Warmup(out CrowdSpawnInfoItem Item, int WarmupNum); + +event GameCrowdAgent CreateNewAgent(out CrowdSpawnInfoItem Item, GameCrowdDestination SpawnLoc, GameCrowdAgent AgentTemplate, GameCrowdGroup NewGroup) +{ + local GameCrowdAgent Agent; + local Rotator SpawnRot; + local Vector SpawnPos; + local int I; + + GameCrowdSpawnInterface(SpawnLoc).GetSpawnPosition(none, SpawnPos, SpawnRot); + // End:0x4D + if(!GetPlayerInfo()) + { + return none; + } + Agent = Spawn(AgentTemplate.Class,,, SpawnPos, SpawnRot, AgentTemplate); + Agent.SetLighting(Item.bEnableCrowdLightEnvironment, Item.AgentLightingChannel, Item.bCastShadows); + // End:0x153 + if(Item.bForceObstacleChecking) + { + Agent.bCheckForObstacles = true; + } + // End:0x194 + if(Item.bForceNavMeshPathing) + { + Agent.bUseNavMeshPathing = true; + } + // End:0x1F5 + if(SpawnLoc.bWillBeVisible) + { + Agent.bPreferVisibleDestinationOnSpawn = Agent.bPreferVisibleDestination; + } + Agent.MySpawner = GameCrowdSpawnerInterface(Item.SeqSpawner); + Item.ActiveAgents[Item.ActiveAgents.Length] = Agent; + Agent.InitializeAgent(SpawnLoc, PlayerInfo, AgentTemplate, NewGroup, (Item.AgentWarmupTime * 2.0000000) * FRand(), Item.AgentWarmupTime > 0.0000000, true); + I = 0; + J0x316: + + // End:0x3EF [Loop If] + if(I < Item.AgentArchetypes.Length) + { + // End:0x3E1 + if(GameCrowdAgent(Item.AgentArchetypes[I].AgentArchetype) == Agent.MyArchetype) + { + Item.AgentArchetypes[I].CurrSpawned++; + } + I++; + // [Loop Continue] + goto J0x316; + } + return Agent; + //return ReturnValue; +} + +defaultproperties +{ + CloudSpawnInfo=(SeqSpawner=none,bSpawningActive=false,SpawnRate=0.0000000,SpawnNum=0,Remainder=0.0000000,ActiveAgents=none,AgentArchetypes=none,AgentFrequencySum=0.0000000,MaxSpawnDist=0.0000000,MaxSpawnDistSq=0.0000000,MinBehindSpawnDist=0.0000000,MinBehindSpawnDistSq=0.0000000,AgentWarmupTime=3.0000000,bForceObstacleChecking=false,bForceNavMeshPathing=false,bEnableCrowdLightEnvironment=false,bCastShadows=false,AgentLightingChannel=(bInitialized=false,BSP=false,Static=false,Dynamic=false,CompositeDynamic=false,Skybox=false,Unnamed_1=false,Unnamed_2=false,Unnamed_3=false,Unnamed_4=false,Unnamed_5=false,Unnamed_6=false,Cinematic_1=false,Cinematic_2=false,Cinematic_3=false,Cinematic_4=false,Cinematic_5=false,Cinematic_6=false,Cinematic_7=false,Cinematic_8=false,Cinematic_9=false,Cinematic_10=false,Gameplay_1=false,Gameplay_2=false,Gameplay_3=false,Gameplay_4=false,Crowd=false),NumAgentsToTickPerFrame=0,LastAgentTickedIndex=0,PotentialSpawnPoints=none,SpawnPrioritizationInterval=0.4000000,PrioritizationIndex=0,PrioritizationUpdateIndex=0,PrioritizedSpawnPoints=none,PlayerPositionPredictionTime=0.0000000) + SplitScreenNumReduction=0.5000000 + PlayerPositionPredictionTime=5.0000000 + HeadVisibilityOffset=40.0000000 + NavigationHandleClass=Class'Engine.NavigationHandle' + bHidden=true + bSkipActorPropertyReplication=true + bOnlyDirtyReplication=true + NetUpdateFrequency=10.0000000 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdReplicationActor.uc b/exported/GameFramework/Classes/GameCrowdReplicationActor.uc new file mode 100755 index 00000000..95d3a85e --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdReplicationActor.uc @@ -0,0 +1,39 @@ +class GameCrowdReplicationActor extends Actor + native + notplaceable + hidecategories(Navigation); + +var repnotify SeqAct_GameCrowdSpawner Spawner; +var repnotify bool bSpawningActive; +var repnotify int DestroyAllCount; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + DestroyAllCount, Spawner, + bSpawningActive; +} + +simulated event ReplicatedEvent(name VarName) +{ + //return; +} + +auto state ReceivingReplication +{ + ignores Tick; + stop; +} + +defaultproperties +{ + RemoteRole=ENetRole.ROLE_SimulatedProxy + TickGroup=ETickingGroup.TG_DuringAsyncWork + bAlwaysRelevant=true + bReplicateMovement=false + bSkipActorPropertyReplication=true + bOnlyDirtyReplication=true + NetUpdateFrequency=1.0000000 + NetPriority=2.7000000 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdSpawnInterface.uc b/exported/GameFramework/Classes/GameCrowdSpawnInterface.uc new file mode 100755 index 00000000..f4991ba2 --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdSpawnInterface.uc @@ -0,0 +1,7 @@ +interface GameCrowdSpawnInterface extends Interface + abstract; + +function GetSpawnPosition(SeqAct_GameCrowdSpawner Spawner, out Vector SpawnPos, out Rotator SpawnRot) +{ + //return; +} diff --git a/exported/GameFramework/Classes/GameCrowdSpawnRelativeActor.uc b/exported/GameFramework/Classes/GameCrowdSpawnRelativeActor.uc new file mode 100755 index 00000000..4dac4d0a --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdSpawnRelativeActor.uc @@ -0,0 +1,17 @@ +class GameCrowdSpawnRelativeActor extends Actor + native + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: SpriteComponent'GameFramework.Default__GameCrowdSpawnRelativeActor.Sprite' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Sprite' + begin object name="Sprite" class=Engine.SpriteComponent + ReplacementPrimitive=none + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false + end object + Components[0]=Sprite +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameCrowdSpawnerInterface.uc b/exported/GameFramework/Classes/GameCrowdSpawnerInterface.uc new file mode 100755 index 00000000..8fd2854f --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowdSpawnerInterface.uc @@ -0,0 +1,12 @@ +interface GameCrowdSpawnerInterface extends Interface + abstract; + +function AgentDestroyed(GameCrowdAgent Agent) +{ + //return; +} + +function float GetMaxSpawnDist() +{ + //return ReturnValue; +} diff --git a/exported/GameFramework/Classes/GameCrowd_ListOfAgents.uc b/exported/GameFramework/Classes/GameCrowd_ListOfAgents.uc new file mode 100755 index 00000000..4ebbd8c1 --- /dev/null +++ b/exported/GameFramework/Classes/GameCrowd_ListOfAgents.uc @@ -0,0 +1,4 @@ +class GameCrowd_ListOfAgents extends Object + hidecategories(Object); + +var() array ListOfAgents; diff --git a/exported/GameFramework/Classes/GameDestinationConnRenderingComponent.uc b/exported/GameFramework/Classes/GameDestinationConnRenderingComponent.uc new file mode 100755 index 00000000..687fc7d8 --- /dev/null +++ b/exported/GameFramework/Classes/GameDestinationConnRenderingComponent.uc @@ -0,0 +1,12 @@ +class GameDestinationConnRenderingComponent extends PrimitiveComponent + native + editinlinenew + hidecategories(Object); + +defaultproperties +{ + ReplacementPrimitive=none + HiddenGame=true + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameExplosion.uc b/exported/GameFramework/Classes/GameExplosion.uc new file mode 100755 index 00000000..dee8b576 --- /dev/null +++ b/exported/GameFramework/Classes/GameExplosion.uc @@ -0,0 +1,66 @@ +class GameExplosion extends Object + native + editinlinenew; + +var() bool bDirectionalExplosion; +var transient bool bIgnoreInstigator; +var() bool bAllowTeammateCringes; +var transient bool bFullDamageToAttachee; +var() bool bAttachExplosionEmitterToAttachee; +var() bool bPerformRadialBlurRelevanceCheck; +var() bool bCausesFracture; +var() bool bAllowPerMaterialFX; +var() bool bParticleSystemIsBeingOverriddenDontUsePhysMatVersion; +var() bool bSkipDefaultPhysMatParticleSystem; +var() bool bUseMapSpecificValues; +var() bool bUseOverlapCheck; +var() bool bOrientCameraShakeTowardsEpicenter; +var() bool bAutoControllerVibration; +var() float DirectionalExplosionAngleDeg; +var() float DamageDelay; +var() float Damage; +var() float DamageRadius; +var() float DamageFalloffExponent; +var transient Actor ActorToIgnoreForDamage; +var() Class ActorClassToIgnoreForDamage; +var() Class ActorClassToIgnoreForKnockdownsAndCringes; +var() Class MyDamageType; +var() float KnockDownRadius; +var() float KnockDownStrength; +var() float CringeRadius; +var() Vector2D CringeDuration; +var() float MomentumTransferScale; +var() ParticleSystem ParticleEmitterTemplate; +var() float ExplosionEmitterScale; +var Actor HitActor; +var Vector HitLocation; +var Vector HitNormal; +var() SoundCue ExplosionSound; +var() SoundCue ExplosionSoundHurtSomeone; +var() export editinline PointLightComponent ExploLight; +var() float ExploLightFadeOutTime; +var() export editinline RadialBlurComponent ExploRadialBlur; +var() float ExploRadialBlurFadeOutTime; +var() float ExploRadialBlurMaxBlur; +var() float FractureMeshRadius; +var() float FracturePartVel; +var() editinline CameraShake CamShake; +var() editinline CameraShake CamShake_Left; +var() editinline CameraShake CamShake_Right; +var() editinline CameraShake CamShake_Rear; +var() float CamShakeInnerRadius; +var() float CamShakeOuterRadius; +var() float CamShakeFalloff; +var() Class CameraLensEffect; +var() float CameraLensEffectRadius; + +defaultproperties +{ + bCausesFracture=true + bAutoControllerVibration=true + CringeDuration=(X=-1.0000000,Y=-1.0000000) + MomentumTransferScale=1.0000000 + ExplosionEmitterScale=1.0000000 + ExploRadialBlurMaxBlur=2.0000000 + CamShakeFalloff=2.0000000 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameExplosionActor.uc b/exported/GameFramework/Classes/GameExplosionActor.uc new file mode 100755 index 00000000..955d40c7 --- /dev/null +++ b/exported/GameFramework/Classes/GameExplosionActor.uc @@ -0,0 +1,580 @@ +class GameExplosionActor extends Actor + abstract + native + notplaceable + hidecategories(Navigation); + +var protected transient bool bHasExploded; +var() protected bool bExplodeMoreThanOnce; +var bool bTrackExplosionParticleSystemLifespan; +var bool bDrawDebug; +var protected export editinline transient PointLightComponent ExplosionLight; +var protected export editinline transient RadialBlurComponent ExplosionRadialBlur; +var protected transient float LightFadeTime; +var protected transient float LightFadeTimeRemaining; +var protected transient float LightInitialBrightness; +var protected transient float RadialBlurFadeTime; +var protected transient float RadialBlurFadeTimeRemaining; +var protected transient float RadialBlurMaxBlurAmount; +var GameExplosion ExplosionTemplate; +var protected export editinline RB_RadialImpulseComponent RadialImpulseComponent; +var Controller InstigatorController; +var Actor HitActorFromPhysMaterialTrace; +var Vector HitLocationFromPhysMaterialTrace; +var Actor Attachee; +var Controller AttacheeController; +var transient float DirectionalExplosionMinDot; +var transient Vector ExplosionDirection; + +replication +{ + // Pos:0x000 + if(bNetInitial) + ExplosionDirection; +} + +event PreBeginPlay() +{ + super.PreBeginPlay(); + // End:0x52 + if((Instigator != none) && InstigatorController == none) + { + InstigatorController = Instigator.Controller; + } + //return; +} + +protected simulated function PhysicalMaterial GetPhysicalMaterial() +{ + local PhysicalMaterial Retval; + local Vector TraceStart, TraceDest, OutHitNorm, ExploNormal; + local TraceHitInfo OutHitInfo; + + TraceStart = Location + (vect(0.0000000, 0.0000000, 1.0000000) * 256.0000000); + TraceDest = Location - (vect(0.0000000, 0.0000000, 1.0000000) * 16.0000000); + HitActorFromPhysMaterialTrace = Trace(HitLocationFromPhysMaterialTrace, OutHitNorm, TraceDest, TraceStart, true, vect(0.0000000, 0.0000000, 0.0000000), OutHitInfo, 1 | 2); + // End:0xE7 + if(FluidSurfaceActor(HitActorFromPhysMaterialTrace) != none) + { + Retval = OutHitInfo.PhysMaterial; + return Retval; + } + ExploNormal = Vector(Rotation); + TraceStart = Location + (ExploNormal * 8.0000000); + TraceDest = TraceStart - (ExploNormal * 64.0000000); + HitActorFromPhysMaterialTrace = Trace(HitLocationFromPhysMaterialTrace, OutHitNorm, TraceDest, TraceStart, true, vect(0.0000000, 0.0000000, 0.0000000), OutHitInfo, 1); + // End:0x1C4 + if(HitActorFromPhysMaterialTrace != none) + { + Retval = OutHitInfo.PhysMaterial; + } + return Retval; + //return ReturnValue; +} + +simulated function bool DoFullDamageToActor(Actor Victim) +{ + return ((Victim.bStatic || Victim.IsA('KActor')) || Victim.IsA('InterpActor')) || Victim.IsA('FracturedStaticMeshPart'); + //return ReturnValue; +} + +protected simulated function bool IsBehindExplosion(Actor A) +{ + // End:0x77 + if(ExplosionTemplate.bDirectionalExplosion && !IsZero(ExplosionDirection)) + { + return (ExplosionDirection Dot Normal(A.Location - Location)) < DirectionalExplosionMinDot; + } + return false; + //return ReturnValue; +} + +// Export UGameExplosionActor::execBoxDistanceToPoint(FFrame&, void* const) +native static final function float BoxDistanceToPoint(Vector Start, Box BBox); + +protected simulated function bool DoExplosionDamage(bool bCauseDamage, bool bCauseEffects) +{ + local Actor Victim, HitActor; + local Vector HitL, HitN, Dir, BBoxCenter; + local bool bDamageBlocked, bDoFullDamage, bCauseFractureEffects, bCausePawnEffects, bCauseDamageEffects, bHurtSomeone; + + local float ColRadius, ColHeight, CheckRadius, VictimDist; + local array VictimsList; + local Box BBox; + local Controller ModInstigator; + local GamePawn VictimPawn; + local FracturedStaticMeshActor FracActor; + local byte WantPhysChunksAndParticles; + local TraceHitInfo HitInfo; + local KActorFromStatic NewKActor; + local editinline StaticMeshComponent HitStaticMesh; + + bCauseFractureEffects = (bCauseEffects && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && ExplosionTemplate.bCausesFracture; + bCauseEffects = bCauseEffects && int(WorldInfo.NetMode) != int(NM_Client); + bHurtSomeone = false; + CheckRadius = GetEffectCheckRadius(bCauseDamage, bCauseFractureEffects, bCauseEffects); + // End:0xBEE + if(CheckRadius > 0.0000000) + { + // End:0xA3F + foreach CollidingActors(Class'Engine.Actor', Victim, CheckRadius, Location, ExplosionTemplate.bUseOverlapCheck,, HitInfo) + { + // End:0x220 + if(Victim.bWorldGeometry) + { + HitStaticMesh = StaticMeshComponent(HitInfo.HitComponent); + // End:0x220 + if((HitStaticMesh != none) && HitStaticMesh.CanBecomeDynamic()) + { + NewKActor = Class'Engine.KActorFromStatic'.static.MakeDynamic(HitStaticMesh); + // End:0x220 + if(NewKActor != none) + { + Victim = NewKActor; + } + } + } + // End:0xA3E + if(((((((Victim != self) && !Victim.bWorldGeometry || Victim.bCanBeDamaged) && NavigationPoint(Victim) == none) && Victim != ExplosionTemplate.ActorToIgnoreForDamage) && !ExplosionTemplate.bIgnoreInstigator || Victim != Instigator) && !ClassIsChildOf(Victim.Class, ExplosionTemplate.ActorClassToIgnoreForDamage)) && !IsBehindExplosion(Victim)) + { + VictimPawn = GamePawn(Victim); + Victim.GetComponentsBoundingBox(BBox); + // End:0x3EF + if(ExplosionTemplate.bUseOverlapCheck) + { + VictimDist = BoxDistanceToPoint(Location, BBox); + } + else + { + VictimDist = VSize(Location - Victim.Location); + } + // End:0x61F + if(bCauseFractureEffects && VictimPawn == none) + { + FracActor = FracturedStaticMeshActor(Victim); + // End:0x61F + if(((((FracActor != none) && VictimDist < ExplosionTemplate.FractureMeshRadius) && int(FracActor.Physics) == int(0)) && FracActor.IsFracturedByDamageType(ExplosionTemplate.MyDamageType)) && FracActor.FractureEffectIsRelevant(false, Instigator, WantPhysChunksAndParticles)) + { + FracActor.NotifyHitByExplosion(InstigatorController, ExplosionTemplate.Damage, ExplosionTemplate.MyDamageType); + FracActor.BreakOffPartsInRadius(Location, ExplosionTemplate.FractureMeshRadius, ExplosionTemplate.FracturePartVel, ((int(WantPhysChunksAndParticles) == int(1)) ? true : false)); + } + } + bCausePawnEffects = (bCauseEffects && VictimPawn != none) && !VictimPawn.InGodMode(); + bCauseDamageEffects = bCauseDamage && VictimDist < ExplosionTemplate.DamageRadius; + // End:0x6DF + if(DoFullDamageToActor(Victim)) + { + bDamageBlocked = false; + bDoFullDamage = true; + } + else + { + // End:0x7C6 + if(bCausePawnEffects || bCauseDamageEffects) + { + BBoxCenter = (BBox.Min + BBox.Max) * 0.5000000; + HitActor = Trace(HitL, HitN, BBoxCenter, Location + vect(0.0000000, 0.0000000, 20.0000000), false,,, 1); + bDamageBlocked = (HitActor != none) && HitActor != Victim; + bDoFullDamage = false; + } + } + // End:0xA3E + if(!bDamageBlocked) + { + // End:0x9E9 + if(bCauseDamageEffects) + { + ModInstigator = InstigatorController; + // End:0x8B0 + if((((AttacheeController != none) && AttacheeController.PlayerReplicationInfo != none) && VictimPawn != none) && !WorldInfo.GRI.OnSameTeam(AttacheeController, VictimPawn.Controller)) + { + ModInstigator = AttacheeController; + } + Victim.TakeRadiusDamage(ModInstigator, ExplosionTemplate.Damage, ExplosionTemplate.DamageRadius, ExplosionTemplate.MyDamageType, ExplosionTemplate.MomentumTransferScale, Location, bDoFullDamage, ((Owner != none) ? Owner : self), ExplosionTemplate.DamageFalloffExponent); + VictimsList[VictimsList.Length] = Victim; + // End:0x9E9 + if(Victim.IsA('Pawn')) + { + bHurtSomeone = true; + } + } + // End:0xA15 + if(bCausePawnEffects) + { + SpecialPawnEffectsFor(VictimPawn, VictimDist); + // End:0xA3E + continue; + } + // End:0xA3E + if(bCauseEffects) + { + SpecialCringeEffectsFor(Victim, VictimDist); + } + } + } + } + // End:0xBEE + if(ExplosionTemplate.bFullDamageToAttachee && VictimsList.Find(Attachee) == -1) + { + Victim = Attachee; + Victim.GetBoundingCylinder(ColRadius, ColHeight); + Dir = Normal(Victim.Location - Location); + Victim.TakeDamage(int(ExplosionTemplate.Damage), InstigatorController, Victim.Location - ((0.5000000 * (ColHeight + ColRadius)) * Dir), ExplosionTemplate.MomentumTransferScale * Dir, ExplosionTemplate.MyDamageType,, ((Owner != none) ? Owner : self)); + } + } + return bHurtSomeone; + //return ReturnValue; +} + +function float GetEffectCheckRadius(bool bCauseDamage, bool bCauseFractureEffects, bool bCauseEffects) +{ + local float CheckRadius; + + // End:0x35 + if(bCauseFractureEffects) + { + CheckRadius = ExplosionTemplate.FractureMeshRadius; + } + // End:0x75 + if(bCauseDamage) + { + CheckRadius = FMax(CheckRadius, ExplosionTemplate.DamageRadius); + } + // End:0xE8 + if(bCauseEffects) + { + CheckRadius = FMax(CheckRadius, ExplosionTemplate.KnockDownRadius); + CheckRadius = FMax(CheckRadius, ExplosionTemplate.CringeRadius); + } + return CheckRadius; + //return ReturnValue; +} + +protected function SpecialPawnEffectsFor(GamePawn VictimPawn, float VictimDist) +{ + //return; +} + +protected function SpecialCringeEffectsFor(Actor Victim, float VictimDist) +{ + //return; +} + +protected simulated function UpdateExplosionTemplateWithPerMaterialFX(PhysicalMaterial PhysMaterial) +{ + //return; +} + +simulated function SpawnExplosionParticleSystem(ParticleSystem Template) +{ + //return; +} + +simulated function SpawnExplosionDecal() +{ + //return; +} + +simulated function SpawnExplosionFogVolume() +{ + //return; +} + +simulated function Explode(GameExplosion NewExplosionTemplate, optional Vector Direction) +{ + local float HowLongToLive; + local PhysicalMaterial PhysMat; + local bool bHurtSomeone; + + ExplosionTemplate = NewExplosionTemplate; + // End:0x7C + if(ExplosionTemplate.bDirectionalExplosion) + { + ExplosionDirection = Normal(Direction); + DirectionalExplosionMinDot = Cos(ExplosionTemplate.DirectionalExplosionAngleDeg * 0.0174533); + } + HowLongToLive = (LifeSpan + ExplosionTemplate.DamageDelay) + 0.0100000; + // End:0x974 + if(!bHasExploded || bExplodeMoreThanOnce) + { + // End:0x12C + if(ExplosionTemplate.bAllowPerMaterialFX) + { + PhysMat = GetPhysicalMaterial(); + // End:0x12C + if(PhysMat != none) + { + UpdateExplosionTemplateWithPerMaterialFX(PhysMat); + } + } + // End:0x75A + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x206 + if(ExplosionTemplate.ParticleEmitterTemplate != none) + { + SpawnExplosionParticleSystem(ExplosionTemplate.ParticleEmitterTemplate); + // End:0x206 + if(bTrackExplosionParticleSystemLifespan == true) + { + HowLongToLive = FMax(ExplosionTemplate.ParticleEmitterTemplate.GetMaxLifespan(0.0000000) + 0.1000000, HowLongToLive); + } + } + SpawnExplosionDecal(); + // End:0x38E + if(ExplosionTemplate.ExploLight != none) + { + // End:0x256 + if(ExplosionLight != none) + { + DetachComponent(ExplosionLight); + } + ExplosionLight = new (self) Class'Engine.PointLightComponent' (ExplosionTemplate.ExploLight); + // End:0x38E + if(ExplosionLight != none) + { + AttachComponent(ExplosionLight); + ExplosionLight.SetEnabled(true); + SetTimer(ExplosionTemplate.ExploLightFadeOutTime); + LightFadeTime = ExplosionTemplate.ExploLightFadeOutTime; + LightFadeTimeRemaining = LightFadeTime; + HowLongToLive = FMax(LightFadeTime + 0.2000000, HowLongToLive); + LightInitialBrightness = ExplosionTemplate.ExploLight.Brightness; + } + } + // End:0x52E + if(ExplosionTemplate.ExploRadialBlur != none) + { + // End:0x52E + if((ExplosionTemplate.bPerformRadialBlurRelevanceCheck == false) || ImpactEffectIsRelevant(Instigator, Location + vect(0.0000000, 0.0000000, 1.0000000), false, 4000.0000000, 350.0000000, true)) + { + // End:0x435 + if(ExplosionRadialBlur != none) + { + DetachComponent(ExplosionRadialBlur); + } + ExplosionRadialBlur = new (self) Class'Engine.RadialBlurComponent' (ExplosionTemplate.ExploRadialBlur); + // End:0x52E + if(ExplosionRadialBlur != none) + { + AttachComponent(ExplosionRadialBlur); + RadialBlurFadeTime = ExplosionTemplate.ExploRadialBlurFadeOutTime; + RadialBlurFadeTimeRemaining = RadialBlurFadeTime; + RadialBlurMaxBlurAmount = ExplosionTemplate.ExploRadialBlurMaxBlur; + SetTimer(FMax(RadialBlurFadeTime, LightFadeTime)); + HowLongToLive = FMax(RadialBlurFadeTime + 0.2000000, HowLongToLive); + } + } + } + DoExplosionCameraEffects(); + // End:0x6E7 + if((ExplosionTemplate.MyDamageType != none) && ExplosionTemplate.MyDamageType.default.RadialDamageImpulse > 0.0000000) + { + RadialImpulseComponent.ImpulseRadius = FMax(ExplosionTemplate.DamageRadius, ExplosionTemplate.KnockDownRadius); + RadialImpulseComponent.ImpulseStrength = ExplosionTemplate.MyDamageType.default.RadialDamageImpulse; + RadialImpulseComponent.bVelChange = ExplosionTemplate.MyDamageType.default.bRadialDamageVelChange; + RadialImpulseComponent.ImpulseFalloff = 0; + RadialImpulseComponent.FireImpulse(Location); + } + SpawnExplosionFogVolume(); + // End:0x75A + if(FluidSurfaceActor(HitActorFromPhysMaterialTrace) != none) + { + FluidSurfaceActor(HitActorFromPhysMaterialTrace).FluidComponent.ApplyForce(HitLocationFromPhysMaterialTrace, 1024.0000000, 20.0000000, false); + } + } + bHurtSomeone = false; + // End:0x80B + if(ExplosionTemplate.Damage > 0.0000000) + { + // End:0x7F1 + if(ExplosionTemplate.DamageDelay > 0.0000000) + { + DoExplosionDamage(false, true); + SetTimer(ExplosionTemplate.DamageDelay, false, 'DelayedExplosionDamage'); + } + else + { + bHurtSomeone = DoExplosionDamage(true, true); + } + } + else + { + DoExplosionDamage(false, true); + } + // End:0x904 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x8AB + if(bHurtSomeone && ExplosionTemplate.ExplosionSoundHurtSomeone != none) + { + PlaySound(ExplosionTemplate.ExplosionSoundHurtSomeone, true, true, false, Location, true); + } + else + { + // End:0x904 + if(ExplosionTemplate.ExplosionSound != none) + { + PlaySound(ExplosionTemplate.ExplosionSound, true, true, false, Location, true); + } + } + } + // End:0x921 + if(int(Role) == int(ROLE_Authority)) + { + MakeNoise(1.0000000); + } + bHasExploded = true; + // End:0x974 + if(!bPendingDelete && !bDeleteMe) + { + LifeSpan = ((bExplodeMoreThanOnce) ? 0.0000000 : HowLongToLive); + } + } + //return; +} + +simulated function DelayedExplosionDamage() +{ + DoExplosionDamage(true, false); + //return; +} + +simulated function DrawDebug() +{ + local Color C; + local float Angle; + + // End:0x128 + if(ExplosionTemplate.bDirectionalExplosion) + { + C.R = 255; + C.G = 128; + C.B = 16; + C.A = 255; + Angle = ExplosionTemplate.DirectionalExplosionAngleDeg * 0.0174533; + DrawDebugCone(Location, ExplosionDirection, ExplosionTemplate.DamageRadius, Angle, Angle, 8, C, true); + } + else + { + DrawDebugSphere(Location, ExplosionTemplate.DamageRadius, 10, 255, 128, 16, true); + } + //return; +} + +simulated function DoExplosionCameraEffects() +{ + local CameraShake Shake; + local float ShakeScale; + local PlayerController PC; + + // End:0x256 + foreach WorldInfo.LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + // End:0x255 + if(PC.PlayerCamera != none) + { + Shake = ChooseCameraShake(Location, PC); + // End:0x255 + if(Shake != none) + { + ShakeScale = PC.PlayerCamera.CalcRadialShakeScale(PC.PlayerCamera, Location, ExplosionTemplate.CamShakeInnerRadius, ExplosionTemplate.CamShakeOuterRadius, ExplosionTemplate.CamShakeFalloff); + // End:0x203 + if(ExplosionTemplate.bOrientCameraShakeTowardsEpicenter) + { + PC.ClientPlayCameraShake(Shake, ShakeScale, ExplosionTemplate.bAutoControllerVibration, 2, Rotator(Location - PC.ViewTarget.Location)); + // End:0x255 + continue; + } + PC.ClientPlayCameraShake(Shake, ShakeScale, ExplosionTemplate.bAutoControllerVibration); + } + } + } + SpawnCameraLensEffects(); + //return; +} + +simulated function SpawnCameraLensEffects() +{ + local PlayerController PC; + + // End:0x179 + if(ExplosionTemplate.CameraLensEffect != none) + { + // End:0x178 + foreach WorldInfo.LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + // End:0x177 + if((((PC.Pawn != none) && VSize(PC.Pawn.Location - Location) < ExplosionTemplate.CameraLensEffectRadius) && PC.IsAimingAt(self, 0.1000000)) && !IsBehindExplosion(PC.Pawn)) + { + PC.ClientSpawnCameraLensEffect(ExplosionTemplate.CameraLensEffect); + } + } + } + //return; +} + +protected simulated function CameraShake ChooseCameraShake(Vector Epicenter, PlayerController PC) +{ + local Vector CamX, CamY, CamZ, ToEpicenter; + local float FwdDot, RtDot; + local CameraShake ChosenShake; + local Rotator NoPitchRot; + + // End:0x44 + if(ExplosionTemplate.bOrientCameraShakeTowardsEpicenter) + { + return ExplosionTemplate.CamShake; + } + else + { + // End:0x2C7 + if(((ExplosionTemplate.CamShake_Left != none) || ExplosionTemplate.CamShake_Right != none) || ExplosionTemplate.CamShake_Rear != none) + { + ToEpicenter = Epicenter - PC.PlayerCamera.Location; + ToEpicenter.Z = 0.0000000; + ToEpicenter = Normal(ToEpicenter); + NoPitchRot = PC.PlayerCamera.Rotation; + NoPitchRot.Pitch = 0; + GetAxes(NoPitchRot, CamX, CamY, CamZ); + FwdDot = CamX Dot ToEpicenter; + // End:0x210 + if(FwdDot > 0.7070000) + { + ChosenShake = ExplosionTemplate.CamShake; + } + else + { + // End:0x29F + if(FwdDot > -0.7070000) + { + RtDot = CamY Dot ToEpicenter; + ChosenShake = ((RtDot > 0.0000000) ? ExplosionTemplate.CamShake_Right : ExplosionTemplate.CamShake_Left); + } + else + { + ChosenShake = ExplosionTemplate.CamShake_Rear; + } + } + } + } + // End:0x2FE + if(ChosenShake == none) + { + ChosenShake = ExplosionTemplate.CamShake; + } + return ChosenShake; + //return ReturnValue; +} + +defaultproperties +{ + // Reference: RB_RadialImpulseComponent'GameFramework.Default__GameExplosionActor.ImpulseComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ImpulseComponent0' + begin object name="ImpulseComponent0" class=Engine.RB_RadialImpulseComponent + ReplacementPrimitive=none + end object + RadialImpulseComponent=ImpulseComponent0 + Components[0]=ImpulseComponent0 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameExplosionContent.uc b/exported/GameFramework/Classes/GameExplosionContent.uc new file mode 100755 index 00000000..1372b710 --- /dev/null +++ b/exported/GameFramework/Classes/GameExplosionContent.uc @@ -0,0 +1,22 @@ +class GameExplosionContent extends Object + editinlinenew; + +var() const bool bAutoControllerVibration; +var(Camera) const bool bOrientCameraShakeTowardsEpicenter; +var(Audio) const SoundCue ExplosionSound; +var(Camera) const CameraShake CamShake; +var(Camera) const CameraShake CamShake_Left; +var(Camera) const CameraShake CamShake_Right; +var(Camera) const CameraShake CamShake_Rear; +var(Camera) const float CamShakeInnerRadius; +var(Camera) const float CamShakeOuterRadius; +var(Camera) const float CamShakeFalloff; +var(Camera) const Class CameraLensEffect; +var(Camera) const float CameraLensEffectRadius; +var(Light) const export editinline PointLightComponent ExploLight; +var(Light) const float ExploLightFadeOutTime; +var(Blur) const export editinline RadialBlurComponent ExploRadialBlur; +var(Blur) const float ExploRadialBlurFadeOutTime; +var(Blur) const float ExploRadialBlurMaxBlur; +var(Particle) const ParticleSystem ParticleEmitterTemplate; +var(Fog) const FogVolumeSphericalDensityInfo FogVolumeArchetype; diff --git a/exported/GameFramework/Classes/GameFixedCamera.uc b/exported/GameFramework/Classes/GameFixedCamera.uc new file mode 100755 index 00000000..996fd86b --- /dev/null +++ b/exported/GameFramework/Classes/GameFixedCamera.uc @@ -0,0 +1,40 @@ +class GameFixedCamera extends GameCameraBase; + +var() protected const float DefaultFOV; + +simulated function UpdateCamera(Pawn P, GamePlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT) +{ + local CameraActor CamActor; + + CamActor = CameraActor(OutVT.Target); + // End:0x8F + if(CamActor != none) + { + OutVT.POV.FOV = CamActor.FOVAngle; + } + else + { + OutVT.POV.FOV = DefaultFOV; + } + // End:0x186 + if(OutVT.Target != none) + { + OutVT.POV.Location = CamActor.Location; + OutVT.POV.Rotation = CamActor.Rotation; + } + PlayerCamera.ApplyCameraModifiers(DeltaTime, OutVT.POV); + bResetCameraInterpolation = false; + //return; +} + +function OnBecomeActive(GameCameraBase OldCamera) +{ + bResetCameraInterpolation = true; + super.OnBecomeActive(OldCamera); + //return; +} + +defaultproperties +{ + DefaultFOV=80.0000000 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameFramework.UPKG b/exported/GameFramework/Classes/GameFramework.UPKG new file mode 100755 index 00000000..1a07be93 --- /dev/null +++ b/exported/GameFramework/Classes/GameFramework.UPKG @@ -0,0 +1,4 @@ +[Flags] +AllowDownload=False +ClientOptional=False +ServerSideOnly=False diff --git a/exported/GameFramework/Classes/GameKActorSpawnableEffect.uc b/exported/GameFramework/Classes/GameKActorSpawnableEffect.uc new file mode 100755 index 00000000..ec075283 --- /dev/null +++ b/exported/GameFramework/Classes/GameKActorSpawnableEffect.uc @@ -0,0 +1,67 @@ +class GameKActorSpawnableEffect extends KActor; + +simulated event PostBeginPlay() +{ + SetTimer(FMax(0.0100000, LifeSpan - 1.1000000), false, 'StartScalingDown'); + //return; +} + +simulated event FellOutOfWorld(Class dmgType) +{ + Destroy(); + //return; +} + +simulated function StartScalingDown() +{ + GotoState('ScalingDown'); + //return; +} + +simulated state ScalingDown +{ + simulated event Tick(float DeltaTime) + { + super(Actor).Tick(DeltaTime); + // End:0x39 + if(LifeSpan < 1.0000000) + { + SetDrawScale(LifeSpan); + } + //return; + } + stop; +} + +defaultproperties +{ + // Reference: StaticMeshComponent'GameFramework.Default__GameKActorSpawnableEffect.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__KActor.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'GameFramework.Default__GameKActorSpawnableEffect.MyLightEnvironment' + bAcceptsStaticDecals=false + bAcceptsDynamicDecals=false + CastShadow=false + BlockActors=false + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'GameFramework.Default__GameKActorSpawnableEffect.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__KActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + bCastShadows=false + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + Components[1]=StaticMeshComponent0 + RemoteRole=ENetRole.ROLE_None + bNoDelete=false + bBlocksNavigation=false + bCollideActors=false + LifeSpan=30.0000000 + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GamePawn.uc b/exported/GameFramework/Classes/GamePawn.uc new file mode 100755 index 00000000..0541d218 --- /dev/null +++ b/exported/GameFramework/Classes/GamePawn.uc @@ -0,0 +1,83 @@ +class GamePawn extends Pawn + abstract + native + nativereplication + config(Game) + hidecategories(Navigation); + +var transient bool bLastHitWasHeadShot; +var bool bRespondToExplosions; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + bLastHitWasHeadShot; +} + +simulated event UpdateShadowSettings(bool bInWantShadow) +{ + local bool bNewCastShadow, bNewCastDynamicShadow; + + // End:0x16F + if(Mesh != none) + { + bNewCastShadow = default.Mesh.CastShadow && bInWantShadow; + bNewCastDynamicShadow = default.Mesh.bCastDynamicShadow && bInWantShadow; + // End:0x16F + if((bNewCastShadow != Mesh.CastShadow) || bNewCastDynamicShadow != Mesh.bCastDynamicShadow) + { + Mesh.CastShadow = bNewCastShadow; + Mesh.bCastDynamicShadow = bNewCastDynamicShadow; + // End:0x165 + if(WorldInfo.bAggressiveLOD == true) + { + ReattachMesh(); + } + else + { + ReattachMeshWithoutBeingSeen(); + } + } + } + //return; +} + +simulated function ReattachMesh() +{ + ClearTimer('ReattachMeshWithoutBeingSeen'); + ReattachComponent(Mesh); + //return; +} + +simulated function ReattachMeshWithoutBeingSeen() +{ + // End:0x54 + if(LastRenderTime > (WorldInfo.TimeSeconds - 1.0000000)) + { + SetTimer(0.5000000 + (FRand() * 0.5000000), false, 'ReattachMeshWithoutBeingSeen'); + } + else + { + ReattachMesh(); + } + //return; +} + +defaultproperties +{ + // Reference: CylinderComponent'GameFramework.Default__GamePawn.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Pawn.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=CollisionCylinder + Components[2]=none + bCanBeAdheredTo=true + bCanBeFrictionedTo=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GamePlayerCamera.uc b/exported/GameFramework/Classes/GamePlayerCamera.uc new file mode 100755 index 00000000..95409ea6 --- /dev/null +++ b/exported/GameFramework/Classes/GamePlayerCamera.uc @@ -0,0 +1,244 @@ +class GamePlayerCamera extends Camera + transient + native(Camera) + hidecategories(Navigation); + +var(Camera) editinline transient GameCameraBase ThirdPersonCam; +var(Camera) protected const Class ThirdPersonCameraClass; +var(Camera) editinline transient GameCameraBase FixedCam; +var(Camera) protected const Class FixedCameraClass; +var(Camera) editinline transient GameCameraBase CurrentCamera; +var transient bool bUseForcedCamFOV; +var transient bool bInterpolateCamChanges; +var private transient bool bResetInterp; +var transient float ForcedCamFOV; +var private transient Actor LastViewTarget; +var() protected const float SplitScreenShakeScale; +var protected transient Actor LastTargetBase; +var protected transient Matrix LastTargetBaseTM; + +protected function GameCameraBase CreateCamera(Class CameraClass) +{ + local GameCameraBase NewCam; + + NewCam = new (Outer) CameraClass; + NewCam.PlayerCamera = self; + NewCam.Init(); + return NewCam; + //return ReturnValue; +} + +// Export UGamePlayerCamera::execCacheLastTargetBaseInfo(FFrame&, void* const) +protected native function CacheLastTargetBaseInfo(Actor TargetBase); + +function PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x47 + if((ThirdPersonCam == none) && ThirdPersonCameraClass != none) + { + ThirdPersonCam = CreateCamera(ThirdPersonCameraClass); + } + // End:0x84 + if((FixedCam == none) && FixedCameraClass != none) + { + FixedCam = CreateCamera(FixedCameraClass); + } + //return; +} + +function Reset() +{ + bUseForcedCamFOV = false; + //return; +} + +protected function GameCameraBase FindBestCameraType(Actor CameraTarget) +{ + local GameCameraBase BestCam; + + // End:0x58 + if(CameraStyle == 'Default') + { + // End:0x45 + if(CameraActor(CameraTarget) != none) + { + BestCam = FixedCam; + } + else + { + BestCam = ThirdPersonCam; + } + } + return BestCam; + //return ReturnValue; +} + +function bool ShouldConstrainAspectRatio() +{ + return false; + //return ReturnValue; +} + +function UpdateViewTarget(out TViewTarget OutVT, float DeltaTime) +{ + local Pawn P; + local GameCameraBase NewCamera; + local CameraActor CamActor; + + // End:0x66 + if(((PendingViewTarget.Target != none) && OutVT == ViewTarget) && BlendParams.bLockOutgoing) + { + return; + } + // End:0x8A + if(OutVT.Target == none) + { + return; + } + P = Pawn(OutVT.Target); + NewCamera = FindBestCameraType(OutVT.Target); + // End:0x181 + if(CurrentCamera != NewCamera) + { + // End:0x137 + if(CurrentCamera != none) + { + CurrentCamera.OnBecomeInActive(NewCamera); + } + // End:0x16E + if(NewCamera != none) + { + NewCamera.OnBecomeActive(CurrentCamera); + } + CurrentCamera = NewCamera; + } + // End:0x3A5 + if(CurrentCamera != none) + { + // End:0x1CD + if(bResetInterp && !bInterpolateCamChanges) + { + CurrentCamera.ResetInterpolation(); + } + CamActor = CameraActor(OutVT.Target); + // End:0x334 + if(CamActor != none) + { + CamActor.GetCameraView(DeltaTime, OutVT.POV); + // End:0x2D1 + if((CurrentCamera == FixedCam) && CamActor.bConstrainAspectRatio) + { + bConstrainAspectRatio = true; + OutVT.AspectRatio = CamActor.AspectRatio; + } + CamOverridePostProcessAlpha = CamActor.CamOverridePostProcessAlpha; + // End:0x334 + if(CamOverridePostProcessAlpha > 0.0000000) + { + CamPostProcessSettings = CamActor.CamOverridePostProcess; + } + } + CurrentCamera.UpdateCamera(P, self, DeltaTime, OutVT); + // End:0x3A2 + if(CameraStyle == 'FreeCam_Default') + { + super.UpdateViewTarget(OutVT, DeltaTime); + } + } + else + { + super.UpdateViewTarget(OutVT, DeltaTime); + } + // End:0x407 + if(bUseForcedCamFOV) + { + OutVT.POV.FOV = ForcedCamFOV; + } + OutVT.POV.FOV = AdjustFOVForViewport(OutVT.POV.FOV, P); + SetRotation(OutVT.POV.Rotation); + SetLocation(OutVT.POV.Location); + UpdateCameraLensEffects(OutVT); + CacheLastTargetBaseInfo(OutVT.Target.Base); + bResetInterp = false; + //return; +} + +simulated function UpdateCameraLensEffects(const out TViewTarget OutVT) +{ + local int Idx; + + Idx = 0; + J0x0B: + + // End:0x100 [Loop If] + if(Idx < CameraLensEffects.Length) + { + // End:0xF2 + if(CameraLensEffects[Idx] != none) + { + CameraLensEffects[Idx].UpdateLocation(OutVT.POV.Location, OutVT.POV.Rotation, OutVT.POV.FOV); + } + ++Idx; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + local Canvas Canvas; + + super.DisplayDebug(HUD, out_YL, out_YPos); + Canvas = HUD.Canvas; + Canvas.SetDrawColor(255, 255, 255); + Canvas.DrawText(((" " @ "CurrentCamera:'") $ string(CurrentCamera)) $ "'"); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + // End:0x14B + if(CurrentCamera != none) + { + CurrentCamera.DisplayDebug(HUD, out_YL, out_YPos); + } + //return; +} + +simulated function SetColorScale(Vector NewColorScale) +{ + // End:0x3B + if(bEnableColorScaling == true) + { + bEnableColorScaling = true; + ColorScale = NewColorScale; + bEnableColorScaleInterp = false; + } + //return; +} + +simulated function ResetInterpolation() +{ + bResetInterp = true; + //return; +} + +function ProcessViewRotation(float DeltaTime, out Rotator out_ViewRotation, out Rotator out_DeltaRot) +{ + // End:0x65 + if(CurrentCamera != none) + { + CurrentCamera.ProcessViewRotation(DeltaTime, ViewTarget.Target, out_ViewRotation, out_DeltaRot); + } + //return; +} + +// Export UGamePlayerCamera::execAdjustFOVForViewport(FFrame&, void* const) +protected native final function float AdjustFOVForViewport(float inHorizFOV, Pawn CameraTargetPawn); + +defaultproperties +{ + ThirdPersonCameraClass=Class'GameFramework.GameThirdPersonCamera' + FixedCameraClass=Class'GameFramework.GameFixedCamera' + CameraStyle="Default" + DefaultFOV=70.0000000 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GamePlayerController.uc b/exported/GameFramework/Classes/GamePlayerController.uc new file mode 100755 index 00000000..e5f0b47c --- /dev/null +++ b/exported/GameFramework/Classes/GamePlayerController.uc @@ -0,0 +1,284 @@ +class GamePlayerController extends PlayerController + abstract + native + config(Game) + hidecategories(Navigation); + +var bool bWarnCrowdMembers; +var(Debug) bool bDebugCrowdAwareness; +var transient bool bIsWarmupPaused; +var transient bool bEnableMouseCursor; +var float AgentAwareRadius; +var protected transient name CurrentSoundMode; + +function OnToggleMouseCursor(SeqAct_ToggleMouseCursor inAction) +{ + local GameViewportClient GVC; + + GVC = ((LocalPlayer(Player) != none) ? LocalPlayer(Player).ViewportClient : none); + // End:0xAE + if(GVC != none) + { + GVC.SetHardwareMouseCursorVisibility(inAction.InputLinks[0].bHasImpulse); + } + //return; +} + +// Export UGamePlayerController::execGetUIPlayerIndex(FFrame&, void* const) +native function int GetUIPlayerIndex(); + +exec function CrowdDebug(bool bEnabled) +{ + local GameCrowdAgent GCA; + local int I, AgentCount; + local float DebugRadius; + + myHUD.bShowOverlays = bEnabled; + I = 0; + J0x35: + + // End:0xE2 [Loop If] + if(I < myHUD.PostRenderedActors.Length) + { + GCA = GameCrowdAgent(myHUD.PostRenderedActors[I]); + // End:0xD4 + if(GCA != none) + { + myHUD.RemovePostRenderedActor(GCA); + } + I++; + // [Loop Continue] + goto J0x35; + } + // End:0x216 + if(bEnabled) + { + DebugRadius = 2000.0000000; + // End:0x163 + foreach VisibleActors(Class'GameFramework.GameCrowdAgent', GCA, DebugRadius, ((Pawn != none) ? Pawn.Location : Location)) + { + AgentCount++; + } + // End:0x193 + if(AgentCount > 100) + { + DebugRadius *= Sqrt(100.0000000 / float(AgentCount)); + } + // End:0x215 + foreach VisibleActors(Class'GameFramework.GameCrowdAgent', GCA, DebugRadius, ((Pawn != none) ? Pawn.Location : Location)) + { + myHUD.AddPostRenderedActor(GCA); + } + } + //return; +} + +event NotifyCrowdAgentRefresh() +{ + //return; +} + +event NotifyCrowdAgentInRadius(GameCrowdAgent Agent) +{ + //return; +} + +protected simulated function DoForceFeedbackForScreenShake(CameraShake ShakeData, float Scale) +{ + local int ShakeLevel; + local float RotMag, LocMag, FOVMag; + + // End:0x2C1 + if(ShakeData != none) + { + RotMag = ShakeData.GetRotOscillationMagnitude() * Scale; + // End:0x65 + if(RotMag > 40.0000000) + { + ShakeLevel = 2; + } + else + { + // End:0x83 + if(RotMag > 20.0000000) + { + ShakeLevel = 1; + } + } + // End:0x19D + if(ShakeLevel < 2) + { + LocMag = ShakeData.GetLocOscillationMagnitude() * Scale; + // End:0xE9 + if(LocMag > 10.0000000) + { + ShakeLevel = 2; + } + else + { + // End:0x107 + if(LocMag > 5.0000000) + { + ShakeLevel = 1; + } + } + FOVMag = ShakeData.FOVOscillation.Amplitude * Scale; + // End:0x19D + if(ShakeLevel < 2) + { + // End:0x17F + if(FOVMag > 5.0000000) + { + ShakeLevel = 2; + } + else + { + // End:0x19D + if(FOVMag > 2.0000000) + { + ShakeLevel = 1; + } + } + } + } + // End:0x231 + if(ShakeLevel == 2) + { + // End:0x202 + if(ShakeData.OscillationDuration <= float(1)) + { + ClientPlayForceFeedbackWaveform(Class'GameFramework.GameWaveForms'.default.CameraShakeBigShort); + } + else + { + ClientPlayForceFeedbackWaveform(Class'GameFramework.GameWaveForms'.default.CameraShakeBigLong); + } + } + else + { + // End:0x2C1 + if(ShakeLevel == 1) + { + // End:0x295 + if(ShakeData.OscillationDuration <= float(1)) + { + ClientPlayForceFeedbackWaveform(Class'GameFramework.GameWaveForms'.default.CameraShakeMediumShort); + } + else + { + ClientPlayForceFeedbackWaveform(Class'GameFramework.GameWaveForms'.default.CameraShakeMediumLong); + } + } + } + } + //return; +} + +simulated function SetSoundMode(name InSoundModeName) +{ + local AudioDevice Audio; + local bool bSet; + + Audio = Class'Engine.Engine'.static.GetAudioDevice(); + // End:0xA5 + if(Audio != none) + { + // End:0xA5 + if(CurrentSoundMode != InSoundModeName) + { + bSet = Audio.super(GamePlayerController).SetSoundMode(InSoundModeName); + // End:0xA5 + if(bSet == true) + { + CurrentSoundMode = InSoundModeName; + } + } + } + //return; +} + +// Export UGamePlayerController::execShowLoadingMovie(FFrame&, void* const) +native static final function ShowLoadingMovie(bool bShowMovie, optional bool bPauseAfterHide, optional float PauseDuration, optional float KeepPlayingDuration, optional bool bOverridePreviousDelays); + +// Export UGamePlayerController::execKeepPlayingLoadingMovie(FFrame&, void* const) +native static final function KeepPlayingLoadingMovie(); + +// Export UGamePlayerController::execClientPlayMovie(FFrame&, void* const) +reliable client native final simulated event ClientPlayMovie(string MovieName, int InStartOfRenderingMovieFrame, int InEndOfRenderingMovieFrame, bool bRestrictPausing, bool bPlayOnceFromStream, bool bOnlyBackButtonSkipsMovie); + +// Export UGamePlayerController::execClientStopMovie(FFrame&, void* const) +reliable client native final simulated event ClientStopMovie(float DelayInSeconds, bool bAllowMovieToFinish, bool bForceStopNonSkippable, bool bForceStopLoadingMovie); + +// Export UGamePlayerController::execGetCurrentMovie(FFrame&, void* const) +native final function GetCurrentMovie(out string MovieName); + +function bool CanUnpauseWarmup() +{ + return !bIsWarmupPaused; + //return ReturnValue; +} + +event WarmupPause(bool bDesiredPauseState) +{ + local Color FadeColor; + local PlayerController PC; + local string MovieName; + + bIsWarmupPaused = bDesiredPauseState; + SetPause(bDesiredPauseState, CanUnpauseWarmup); + // End:0xC7 + if(!bDesiredPauseState) + { + GetCurrentMovie(MovieName); + // End:0xC7 + if(MovieName != "") + { + // End:0xC6 + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + GamePlayerController(PC).ClientColorFade(FadeColor, 255, 0, 2.0000000); + } + } + } + //return; +} + +exec function DoMemLeakChecking(float InTimeBetweenMemLeakChecks) +{ + ConsoleCommand("TrackLowestMemory 1"); + SetTimer(InTimeBetweenMemLeakChecks, true, 'CallMemLeakCheck'); + //return; +} + +exec function StopMemLeakChecking() +{ + ClearTimer('CallMemLeakCheck'); + //return; +} + +private final function CallMemLeakCheck() +{ + ConsoleCommand("MemLeakCheck -FAST -WAITFORTEXSTREAMING"); + //return; +} + +reliable client simulated function ClientColorFade(Color FadeColor, byte FromAlpha, byte ToAlpha, float FadeTime) +{ + //return; +} + +defaultproperties +{ + AgentAwareRadius=200.0000000 + CheatClass=Class'GameFramework.GameCheatManager' + // Reference: CylinderComponent'GameFramework.Default__GamePlayerController.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__PlayerController.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameSkelCtrl_Recoil.uc b/exported/GameFramework/Classes/GameSkelCtrl_Recoil.uc new file mode 100755 index 00000000..002afd25 --- /dev/null +++ b/exported/GameFramework/Classes/GameSkelCtrl_Recoil.uc @@ -0,0 +1,79 @@ +class GameSkelCtrl_Recoil extends SkelControlBase + native(Anim) + hidecategories(Object,Object); + +enum ERecoilStart +{ + ERS_Zero, // 0 + ERS_Random, // 1 + ERS_MAX // 2 +}; + +struct native RecoilParams +{ + var() GameSkelCtrl_Recoil.ERecoilStart X; + var() GameSkelCtrl_Recoil.ERecoilStart Y; + var() GameSkelCtrl_Recoil.ERecoilStart Z; + var const transient byte Padding; + + structdefaultproperties + { + X=ERecoilStart.ERS_Zero + Y=ERecoilStart.ERS_Zero + Z=ERecoilStart.ERS_Zero + Padding=0 + } +}; + +struct native RecoilDef +{ + var transient float TimeToGo; + var() float TimeDuration; + var() Vector RotAmplitude; + var() Vector RotFrequency; + var Vector RotSinOffset; + var() RecoilParams RotParams; + var transient Rotator RotOffset; + var() Vector LocAmplitude; + var() Vector LocFrequency; + var Vector LocSinOffset; + var() RecoilParams LocParams; + var transient Vector LocOffset; + + structdefaultproperties + { + TimeToGo=0.0000000 + TimeDuration=0.3300000 + RotAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000) + RotFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000) + RotSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000) + RotParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0) + RotOffset=(Pitch=0,Yaw=0,Roll=0) + LocAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000) + LocFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000) + LocSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000) + LocParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0) + LocOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +var() bool bBoneSpaceRecoil; +var() transient bool bPlayRecoil; +var transient bool bOldPlayRecoil; +var transient bool bApplyControl; +var() bool m_bBlendIn; +var() RecoilDef Recoil; +var() Vector2D Aim; +var() float m_bBlendInRemainingTime; +var transient Vector m_BlendLoc; +var transient Rotator m_BlendRot; + +simulated event SetRecoilParam() +{ + //return; +} + +defaultproperties +{ + Recoil=(TimeToGo=0.0000000,TimeDuration=0.3300000,RotAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),RotOffset=(Pitch=0,Yaw=0,Roll=0),LocAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),LocOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000)) +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameSpecialMove.uc b/exported/GameFramework/Classes/GameSpecialMove.uc new file mode 100755 index 00000000..303fa7dc --- /dev/null +++ b/exported/GameFramework/Classes/GameSpecialMove.uc @@ -0,0 +1,132 @@ +class GameSpecialMove extends Object + abstract + native(SpecialMoves); + +var GamePawn PawnOwner; +var name Handle; +var transient float LastCanDoSpecialMoveTime; +var private bool bLastCanDoSpecialMove; +var const bool bReachPreciseDestination; +var const bool bReachedPreciseDestination; +var const bool bReachPreciseRotation; +var const bool bReachedPreciseRotation; +var bool bForcePrecisePosition; +var const Vector PreciseDestination; +var const Actor PreciseDestBase; +var const Vector PreciseDestRelOffset; +var const float PreciseRotationInterpolationTime; +var const Rotator PreciseRotation; + +function InitSpecialMove(GamePawn inPawn, name InHandle) +{ + PawnOwner = inPawn; + Handle = InHandle; + //return; +} + +function InitSpecialMoveFlags(out int out_Flags) +{ + //return; +} + +function ExtractSpecialMoveFlags(int Flags) +{ + //return; +} + +function bool CanChainMove(name NextMove) +{ + return false; + //return ReturnValue; +} + +function bool CanOverrideMoveWith(name NewMove) +{ + return false; + //return ReturnValue; +} + +function bool CanOverrideSpecialMove(name InMove) +{ + return false; + //return ReturnValue; +} + +final function bool CanDoSpecialMove(optional bool bForceCheck) +{ + // End:0xBD + if(PawnOwner != none) + { + // End:0xB2 + if(bForceCheck || PawnOwner.WorldInfo.TimeSeconds != LastCanDoSpecialMoveTime) + { + bLastCanDoSpecialMove = InternalCanDoSpecialMove(); + LastCanDoSpecialMoveTime = PawnOwner.WorldInfo.TimeSeconds; + } + return bLastCanDoSpecialMove; + } + return false; + //return ReturnValue; +} + +protected function bool InternalCanDoSpecialMove() +{ + return true; + //return ReturnValue; +} + +function SpecialMoveStarted(bool bForced, name PrevMove) +{ + //return; +} + +function SpecialMoveEnded(name PrevMove, name NextMove) +{ + //return; +} + +function Tick(float DeltaTime) +{ + //return; +} + +function SpecialMoveFlagsUpdated() +{ + //return; +} + +function bool ShouldReplicate() +{ + return true; + //return ReturnValue; +} + +// Export UGameSpecialMove::execSetReachPreciseDestination(FFrame&, void* const) +native final function SetReachPreciseDestination(Vector DestinationToReach, optional bool bCancel); + +// Export UGameSpecialMove::execSetFacePreciseRotation(FFrame&, void* const) +native final function SetFacePreciseRotation(Rotator RotationToFace, float InterpolationTime); + +event ReachedPrecisePosition() +{ + //return; +} + +// Export UGameSpecialMove::execResetFacePreciseRotation(FFrame&, void* const) +native final function ResetFacePreciseRotation(); + +function bool MessageEvent(name EventName, Object Sender) +{ + ScriptTrace(); + return false; + //return ReturnValue; +} + +// Export UGameSpecialMove::execForcePawnRotation(FFrame&, void* const) +native final function ForcePawnRotation(Pawn P, Rotator NewRotation); + +// Export UGameSpecialMove::execWorldToRelativeOffset(FFrame&, void* const) +native final function Vector WorldToRelativeOffset(Rotator InRotation, Vector WorldSpaceOffset); + +// Export UGameSpecialMove::execRelativeToWorldOffset(FFrame&, void* const) +native final function Vector RelativeToWorldOffset(Rotator InRotation, Vector RelativeSpaceOffset); diff --git a/exported/GameFramework/Classes/GameStateObject.uc b/exported/GameFramework/Classes/GameStateObject.uc new file mode 100755 index 00000000..9f781dd6 --- /dev/null +++ b/exported/GameFramework/Classes/GameStateObject.uc @@ -0,0 +1,54 @@ +class GameStateObject extends GameplayEventsHandler + native(GameStats) + config(GameStats); + +enum GameSessionType +{ + GT_SessionInvalid, // 0 + GT_SinglePlayer, // 1 + GT_Coop, // 2 + GT_Multiplayer, // 3 + GT_MAX // 4 +}; + +struct native TeamState +{ + var int TeamIndex; + var init array PlayerIndices; + + structdefaultproperties + { + TeamIndex=0 + PlayerIndices=none + } +}; + +struct native PlayerState +{ + var int PlayerIndex; + var int CurrentTeamIndex; + var float TimeSpawned; + var float TimeAliveSinceLastDeath; + + structdefaultproperties + { + PlayerIndex=0 + CurrentTeamIndex=0 + TimeSpawned=0.0000000 + TimeAliveSinceLastDeath=0.0000000 + } +}; + +var native const Array_Mirror TeamStates; +var native const Array_Mirror PlayerStates; +var GameStateObject.GameSessionType SessionType; +var bool bIsMatchStarted; +var bool bIsRoundStarted; +var int RoundNumber; +var int MaxRoundNumber; + +// Export UGameStateObject::execPreProcessStream(FFrame&, void* const) +native event PreProcessStream(); + +// Export UGameStateObject::execReset(FFrame&, void* const) +native function Reset(); diff --git a/exported/GameFramework/Classes/GameStatsAggregator.uc b/exported/GameFramework/Classes/GameStatsAggregator.uc new file mode 100755 index 00000000..29cdf9b7 --- /dev/null +++ b/exported/GameFramework/Classes/GameStatsAggregator.uc @@ -0,0 +1,186 @@ +class GameStatsAggregator extends GameplayEventsHandler + native(GameStats) + config(GameStats); + +const GAMEEVENT_AGGREGATED_DATA = 10000; +const GAMEEVENT_AGGREGATED_PLAYER_TIMEALIVE = 10001; +const GAMEEVENT_AGGREGATED_PLAYER_KILLS = 10002; +const GAMEEVENT_AGGREGATED_PLAYER_DEATHS = 10003; +const GAMEEVENT_AGGREGATED_PLAYER_MATCH_WON = 10004; +const GAMEEVENT_AGGREGATED_PLAYER_ROUND_WON = 10005; +const GAMEEVENT_AGGREGATED_DAMAGE_DEALT_NORMALKILL = 10006; +const GAMEEVENT_AGGREGATED_DAMAGE_RECEIVED_WASNORMALKILL = 10007; +const GAMEEVENT_AGGREGATED_TEAM_KILLS = 10100; +const GAMEEVENT_AGGREGATED_TEAM_DEATHS = 10101; +const GAMEEVENT_AGGREGATED_TEAM_GAME_SCORE = 10102; +const GAMEEVENT_AGGREGATED_TEAM_MATCH_WON = 10103; +const GAMEEVENT_AGGREGATED_TEAM_ROUND_WON = 10104; +const GAMEEVENT_AGGREGATED_DAMAGE_KILLS = 10200; +const GAMEEVENT_AGGREGATED_DAMAGE_DEATHS = 10201; +const GAMEEVENT_AGGREGATED_DAMAGE_DEALT_WEAPON_DAMAGE = 10202; +const GAMEEVENT_AGGREGATED_DAMAGE_DEALT_MELEE_DAMAGE = 10203; +const GAMEEVENT_AGGREGATED_DAMAGE_RECEIVED_WEAPON_DAMAGE = 10204; +const GAMEEVENT_AGGREGATED_DAMAGE_RECEIVED_MELEE_DAMAGE = 10205; +const GAMEEVENT_AGGREGATED_DAMAGE_DEALT_MELEEHITS = 10206; +const GAMEEVENT_AGGREGATED_DAMAGE_RECEIVED_WASMELEEHIT = 10207; +const GAMEEVENT_AGGREGATED_WEAPON_FIRED = 10300; +const GAMEEVENT_AGGREGATED_PAWN_SPAWN = 10400; +const GAMEEVENT_AGGREGATED_GAME_SPECIFIC = 11000; + +struct native GameEvent +{ + var init array EventCountByTimePeriod; + + structdefaultproperties + { + EventCountByTimePeriod=none + } +}; + +struct native GameEvents +{ + var private native const transient Map_Mirror Events; +}; + +struct native EventsBase +{ + var GameEvents TotalEvents; + var array EventsByClass; + + structdefaultproperties + { + TotalEvents=() + EventsByClass=none + } +}; + +struct native WeaponEvents extends EventsBase +{ +}; + +struct native ProjectileEvents extends EventsBase +{ +}; + +struct native DamageEvents extends EventsBase +{ +}; + +struct native PawnEvents extends EventsBase +{ +}; + +struct native TeamEvents +{ + var GameEvents TotalEvents; + var WeaponEvents WeaponEvents; + var DamageEvents DamageAsPlayerEvents; + var DamageEvents DamageAsTargetEvents; + var ProjectileEvents ProjectileEvents; + var PawnEvents PawnEvents; + + structdefaultproperties + { + TotalEvents=() + WeaponEvents=(TotalEvents=(),EventsByClass=none) + DamageAsPlayerEvents=(TotalEvents=(),EventsByClass=none) + DamageAsTargetEvents=(TotalEvents=(),EventsByClass=none) + ProjectileEvents=(TotalEvents=(),EventsByClass=none) + PawnEvents=(TotalEvents=(),EventsByClass=none) + } +}; + +struct native PlayerEvents +{ + var GameEvents TotalEvents; + var WeaponEvents WeaponEvents; + var DamageEvents DamageAsPlayerEvents; + var DamageEvents DamageAsTargetEvents; + var ProjectileEvents ProjectileEvents; + var PawnEvents PawnEvents; + + structdefaultproperties + { + TotalEvents=() + WeaponEvents=(TotalEvents=(),EventsByClass=none) + DamageAsPlayerEvents=(TotalEvents=(),EventsByClass=none) + DamageAsTargetEvents=(TotalEvents=(),EventsByClass=none) + ProjectileEvents=(TotalEvents=(),EventsByClass=none) + PawnEvents=(TotalEvents=(),EventsByClass=none) + } +}; + +struct native AggregateEventMapping +{ + var int EventID; + var int AggregateID; + var int TargetAggregateID; + + structdefaultproperties + { + EventID=0 + AggregateID=0 + TargetAggregateID=0 + } +}; + +var GameStateObject GameState; +var array AggregatesList; +var private native const transient Map_Mirror AggregateEventsMapping; +var array AggregateEvents; +var const array AggregatesFound; +var GameEvents AllGameEvents; +var const array AllTeamEvents; +var const array AllPlayerEvents; +var const WeaponEvents AllWeaponEvents; +var const ProjectileEvents AllProjectileEvents; +var const PawnEvents AllPawnEvents; +var const DamageEvents AllDamageEvents; + +// Export UGameStatsAggregator::execPreProcessStream(FFrame&, void* const) +native event PreProcessStream(); + +// Export UGameStatsAggregator::execPostProcessStream(FFrame&, void* const) +native event PostProcessStream(); + +// Export UGameStatsAggregator::execReset(FFrame&, void* const) +native function Reset(); + +// Export UGameStatsAggregator::execGetAggregateMappingIDs(FFrame&, void* const) +native function bool GetAggregateMappingIDs(int EventID, out int AggregateID, out int TargetAggregateID); + +defaultproperties +{ + AggregatesList[0]=(EventID=103,AggregateID=10004,TargetAggregateID=0) + AggregatesList[1]=(EventID=109,AggregateID=10005,TargetAggregateID=0) + AggregatesList[2]=(EventID=51,AggregateID=10102,TargetAggregateID=0) + AggregatesList[3]=(EventID=4,AggregateID=10103,TargetAggregateID=0) + AggregatesList[4]=(EventID=5,AggregateID=10104,TargetAggregateID=0) + AggregatesList[5]=(EventID=150,AggregateID=10202,TargetAggregateID=10204) + AggregatesList[6]=(EventID=151,AggregateID=10203,TargetAggregateID=10205) + AggregatesList[7]=(EventID=152,AggregateID=10300,TargetAggregateID=0) + AggregatesList[8]=(EventID=102,AggregateID=10400,TargetAggregateID=0) + AggregatesList[9]=(EventID=200,AggregateID=10006,TargetAggregateID=10007) + AggregateEvents[0]=(EventID=10001,EventName="Player Time Alive",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=21) + AggregateEvents[1]=(EventID=10002,EventName="Kills",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=21) + AggregateEvents[2]=(EventID=10003,EventName="Deaths",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=21) + AggregateEvents[3]=(EventID=10006,EventName="Normal Kill",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=21) + AggregateEvents[4]=(EventID=10007,EventName="Was Normal Kill",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=21) + AggregateEvents[5]=(EventID=10004,EventName="Match Won",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=21) + AggregateEvents[6]=(EventID=10005,EventName="Round Won",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=21) + AggregateEvents[7]=(EventID=10100,EventName="Kills",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=20) + AggregateEvents[8]=(EventID=10101,EventName="Deaths",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=20) + AggregateEvents[9]=(EventID=10102,EventName="Team Score",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=20) + AggregateEvents[10]=(EventID=10103,EventName="Matches Won",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=20) + AggregateEvents[11]=(EventID=10104,EventName="Rounds Won",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=20) + AggregateEvents[12]=(EventID=10200,EventName="Kills",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=23) + AggregateEvents[13]=(EventID=10201,EventName="Deaths",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=23) + AggregateEvents[14]=(EventID=10202,EventName="Weapon Damage Dealt",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=23) + AggregateEvents[15]=(EventID=10203,EventName="Melee Damage Dealt",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=23) + AggregateEvents[16]=(EventID=10204,EventName="Weapon Damage Received",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=23) + AggregateEvents[17]=(EventID=10205,EventName="Melee Damage Received",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=23) + AggregateEvents[18]=(EventID=10206,EventName="Melee Hits",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=23) + AggregateEvents[19]=(EventID=10207,EventName="Was Melee Hit",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=23) + AggregateEvents[20]=(EventID=10300,EventName="Weapon Fired",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=22) + AggregateEvents[21]=(EventID=10400,EventName="Spawns",StatGroup=(Group=EGameStatGroups.GSG_Aggregate,Level=1),EventDataType=25) +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameThirdPersonCamera.uc b/exported/GameFramework/Classes/GameThirdPersonCamera.uc new file mode 100755 index 00000000..4bf0797c --- /dev/null +++ b/exported/GameFramework/Classes/GameThirdPersonCamera.uc @@ -0,0 +1,442 @@ +class GameThirdPersonCamera extends GameCameraBase + native(Camera); + +struct native CamFocusPointParams +{ + var() Actor FocusActor; + var() name FocusBoneName; + var() Vector FocusWorldLoc; + var() float CameraFOV; + var() Vector2D InterpSpeedRange; + var() Vector2D InFocusFOV; + var() bool bAlwaysFocus; + var() bool bAdjustCamera; + var() bool bIgnoreTrace; + var() float FocusPitchOffsetDeg; + + structdefaultproperties + { + FocusActor=none + FocusBoneName="None" + FocusWorldLoc=(X=0.0000000,Y=0.0000000,Z=0.0000000) + CameraFOV=0.0000000 + InterpSpeedRange=(X=0.0000000,Y=0.0000000) + InFocusFOV=(X=0.0000000,Y=0.0000000) + bAlwaysFocus=false + bAdjustCamera=false + bIgnoreTrace=false + FocusPitchOffsetDeg=0.0000000 + } +}; + +struct native PenetrationAvoidanceFeeler +{ + var() Rotator AdjustmentRot; + var() float WorldWeight; + var() float PawnWeight; + var() Vector Extent; + var() int TraceInterval; + var transient int FramesUntilNextTrace; + + structdefaultproperties + { + AdjustmentRot=(Pitch=0,Yaw=0,Roll=0) + WorldWeight=0.0000000 + PawnWeight=0.0000000 + Extent=(X=0.0000000,Y=0.0000000,Z=0.0000000) + TraceInterval=0 + FramesUntilNextTrace=0 + } +}; + +var float WorstLocBlockedPct; +var() float WorstLocPenetrationExtentScale; +var() float PenetrationBlendOutTime; +var() float PenetrationBlendInTime; +var protected float PenetrationBlockedPct; +var() float PenetrationExtentScale; +var transient Vector LastActualOriginOffset; +var transient Vector LastActualCameraOrigin; +var transient Rotator LastActualCameraOriginRot; +var() float OriginOffsetInterpSpeed; +var transient Vector LastViewOffset; +var transient float LastCamFOV; +var transient Vector LastIdealCameraOrigin; +var transient Rotator LastIdealCameraOriginRot; +var() protected editinline GameThirdPersonCameraMode ThirdPersonCamDefault; +var() protected Class ThirdPersonCamDefaultClass; +var() editinline transient GameThirdPersonCameraMode CurrentCamMode; +var transient float LastHeightAdjustment; +var transient float LastPitchAdjustment; +var transient float LastYawAdjustment; +var transient float LeftoverPitchAdjustment; +var(Focus) float Focus_BackOffStrength; +var(Focus) float Focus_StepHeightAdjustment; +var(Focus) int Focus_MaxTries; +var(Focus) float Focus_FastAdjustKickInTime; +var protected transient float LastFocusChangeTime; +var protected transient Vector ActualFocusPointWorldLoc; +var protected transient Vector LastFocusPointLoc; +var(Focus) CamFocusPointParams FocusPoint; +var bool bFocusPointSet; +var protected transient bool bFocusPointSuccessful; +var bool bDoingACameraTurn; +var protected bool bTurnAlignTargetWhenFinished; +var() bool bDrawDebug; +var transient bool bDoingDirectLook; +var(Debug) bool bDebugChangedCameraMode; +var transient bool bDoSeamlessPivotTransition; +var protected float TurnCurTime; +var protected int TurnStartAngle; +var protected int TurnEndAngle; +var protected float TurnTotalTime; +var protected float TurnDelay; +var protected transient int LastPostCamTurnYaw; +var transient int DirectLookYaw; +var() float DirectLookInterpSpeed; +var() float WorstLocInterpSpeed; +var transient Vector LastWorstLocationLocal; +var transient Vector LastWorstLocation; +var transient Vector LastPreModifierCameraLoc; +var transient Rotator LastPreModifierCameraRot; +var() array PenetrationAvoidanceFeelers; +var protectedwrite transient Vector LastOffsetAdjustment; + +protected function GameThirdPersonCameraMode CreateCameraMode(Class ModeClass) +{ + local GameThirdPersonCameraMode NewMode; + + NewMode = new (self) ModeClass; + NewMode.ThirdPersonCam = self; + NewMode.Init(); + return NewMode; + //return ReturnValue; +} + +function Reset() +{ + bResetCameraInterpolation = true; + //return; +} + +function Init() +{ + // End:0x2C + if(ThirdPersonCamDefault == none) + { + ThirdPersonCamDefault = CreateCameraMode(ThirdPersonCamDefaultClass); + } + //return; +} + +event float GetDesiredFOV(Pawn ViewedPawn) +{ + // End:0x61 + if((bFocusPointSet && FocusPoint.CameraFOV > 0.0000000) && bFocusPointSuccessful) + { + return FocusPoint.CameraFOV; + } + return CurrentCamMode.GetDesiredFOV(ViewedPawn); + //return ReturnValue; +} + +function UpdateCamera(Pawn P, GamePlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT) +{ + // End:0x10A + if((P == none) && OutVT.Target != none) + { + OutVT.Target.GetActorEyesViewPoint(OutVT.POV.Location, OutVT.POV.Rotation); + PlayerCamera.ApplyCameraModifiers(DeltaTime, OutVT.POV); + } + else + { + // End:0x21C + if((P != none) && P.CalcCamera(DeltaTime, OutVT.POV.Location, OutVT.POV.Rotation, OutVT.POV.FOV)) + { + PlayerCamera.ApplyCameraModifiers(DeltaTime, OutVT.POV); + return; + } + else + { + UpdateCameraMode(P); + // End:0x2A0 + if(CurrentCamMode != none) + { + PlayerUpdateCamera(P, CameraActor, DeltaTime, OutVT); + CurrentCamMode.UpdatePostProcess(OutVT, DeltaTime); + } + } + } + bResetCameraInterpolation = false; + //return; +} + +// Export UGameThirdPersonCamera::execPlayerUpdateCamera(FFrame&, void* const) +protected native function PlayerUpdateCamera(Pawn P, GamePlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT); + +function BeginTurn(int StartAngle, int EndAngle, float TimeSec, optional float DelaySec, optional bool bAlignTargetWhenFinished) +{ + // End:0x61 + if(PlayerCamera.bUseClientSideCameraUpdates && !PlayerCamera.PCOwner.IsLocalPlayerController()) + { + return; + } + bDoingACameraTurn = true; + TurnTotalTime = TimeSec; + TurnDelay = DelaySec; + TurnCurTime = 0.0000000; + TurnStartAngle = StartAngle; + TurnEndAngle = EndAngle; + bTurnAlignTargetWhenFinished = bAlignTargetWhenFinished; + //return; +} + +// Export UGameThirdPersonCamera::execEndTurn(FFrame&, void* const) +native function EndTurn(); + +function AdjustTurn(int AngleOffset) +{ + TurnStartAngle += AngleOffset; + TurnEndAngle += AngleOffset; + //return; +} + +function SetFocusOnLoc(Vector FocusWorldLoc, Vector2D InterpSpeedRange, Vector2D InFocusFOV, optional float CameraFOV, optional bool bAlwaysFocus, optional bool bAdjustCamera, optional bool bIgnoreTrace, optional float FocusPitchOffsetDeg) +{ + // End:0x67 + if((((LastPitchAdjustment != float(0)) || LastYawAdjustment != float(0)) && !bAdjustCamera) && FocusPoint.bAdjustCamera) + { + ClearFocusPoint(true); + } + FocusPoint.FocusWorldLoc = FocusWorldLoc; + FocusPoint.FocusActor = none; + FocusPoint.FocusBoneName = 'None'; + FocusPoint.InterpSpeedRange = InterpSpeedRange; + FocusPoint.InFocusFOV = InFocusFOV; + FocusPoint.CameraFOV = CameraFOV; + FocusPoint.bAlwaysFocus = bAlwaysFocus; + FocusPoint.bAdjustCamera = bAdjustCamera; + FocusPoint.bIgnoreTrace = bIgnoreTrace; + FocusPoint.FocusPitchOffsetDeg = FocusPitchOffsetDeg; + bFocusPointSet = true; + LastFocusChangeTime = PlayerCamera.WorldInfo.TimeSeconds; + LastFocusPointLoc = GetActualFocusLocation(); + bFocusPointSuccessful = false; + //return; +} + +function SetFocusOnActor(Actor FocusActor, name FocusBoneName, Vector2D InterpSpeedRange, Vector2D InFocusFOV, optional float CameraFOV, optional bool bAlwaysFocus, optional bool bAdjustCamera, optional bool bIgnoreTrace, optional float FocusPitchOffsetDeg) +{ + // End:0x67 + if((((LastPitchAdjustment != float(0)) || LastYawAdjustment != float(0)) && !bAdjustCamera) && FocusPoint.bAdjustCamera) + { + ClearFocusPoint(true); + } + FocusPoint.FocusActor = FocusActor; + FocusPoint.FocusBoneName = FocusBoneName; + FocusPoint.InterpSpeedRange = InterpSpeedRange; + FocusPoint.InFocusFOV = InFocusFOV; + FocusPoint.CameraFOV = CameraFOV; + FocusPoint.bAlwaysFocus = bAlwaysFocus; + FocusPoint.bAdjustCamera = bAdjustCamera; + FocusPoint.bIgnoreTrace = bIgnoreTrace; + FocusPoint.FocusPitchOffsetDeg = FocusPitchOffsetDeg; + bFocusPointSet = true; + LastFocusChangeTime = PlayerCamera.WorldInfo.TimeSeconds; + LastFocusPointLoc = GetActualFocusLocation(); + bFocusPointSuccessful = false; + //return; +} + +function Actor GetFocusActor() +{ + return ((bFocusPointSet) ? FocusPoint.FocusActor : none); + //return ReturnValue; +} + +function ClearFocusPoint(optional bool bLeaveCameraRotation) +{ + bFocusPointSet = false; + // End:0xC3 + if(bLeaveCameraRotation && FocusPoint.bAdjustCamera) + { + LastPitchAdjustment = 0.0000000; + LastYawAdjustment = 0.0000000; + LeftoverPitchAdjustment = 0.0000000; + // End:0xC3 + if(PlayerCamera.PCOwner != none) + { + PlayerCamera.PCOwner.SetRotation(LastPreModifierCameraRot); + } + } + //return; +} + +protected event UpdateFocusPoint(Pawn P) +{ + // End:0x1B + if(bDoingACameraTurn) + { + ClearFocusPoint(); + } + else + { + // End:0x65 + if((CurrentCamMode == none) || CurrentCamMode.SetFocusPoint(P) == false) + { + ClearFocusPoint(); + } + } + // End:0x99 + if(bFocusPointSet) + { + LastFocusPointLoc = ActualFocusPointWorldLoc; + ActualFocusPointWorldLoc = GetActualFocusLocation(); + } + //return; +} + +protected function Vector GetActualFocusLocation() +{ + local Vector FocusLoc; + local editinline SkeletalMeshComponent ComponentIt; + + // End:0x161 + if(FocusPoint.FocusActor != none) + { + FocusLoc = FocusPoint.FocusActor.Location; + // End:0x15E + if(FocusPoint.FocusBoneName != 'None') + { + // End:0x15D + foreach FocusPoint.FocusActor.ComponentList(Class'Engine.SkeletalMeshComponent', ComponentIt) + { + // End:0x15C + if(ComponentIt.MatchRefBone(FocusPoint.FocusBoneName) != -1) + { + FocusLoc = ComponentIt.GetBoneLocation(FocusPoint.FocusBoneName); + // End:0x15D + break; + } + } + } + } + else + { + FocusLoc = FocusPoint.FocusWorldLoc; + } + return FocusLoc; + //return ReturnValue; +} + +function AdjustFocusPointInterpolation(Rotator Delta) +{ + // End:0x9E + if(bFocusPointSet && FocusPoint.bAdjustCamera) + { + Delta = Normalize(Delta); + LastYawAdjustment -= float(Delta.Yaw); + LastPitchAdjustment -= float(Delta.Pitch); + } + //return; +} + +function GameThirdPersonCameraMode FindBestCameraMode(Pawn P) +{ + // End:0x19 + if(P != none) + { + return ThirdPersonCamDefault; + } + return none; + //return ReturnValue; +} + +protected final function UpdateCameraMode(Pawn P) +{ + local GameThirdPersonCameraMode NewCamMode; + + NewCamMode = FindBestCameraMode(P); + // End:0xC7 + if(NewCamMode != CurrentCamMode) + { + // End:0x74 + if(CurrentCamMode != none) + { + CurrentCamMode.OnBecomeInActive(P, NewCamMode); + } + // End:0xB4 + if(NewCamMode != none) + { + NewCamMode.OnBecomeActive(P, CurrentCamMode); + } + CurrentCamMode = NewCamMode; + } + //return; +} + +function ProcessViewRotation(float DeltaTime, Actor ViewTarget, out Rotator out_ViewRotation, out Rotator out_DeltaRot) +{ + // End:0x52 + if(CurrentCamMode != none) + { + CurrentCamMode.ProcessViewRotation(DeltaTime, ViewTarget, out_ViewRotation, out_DeltaRot); + } + //return; +} + +function OnBecomeActive(GameCameraBase OldCamera) +{ + // End:0x2E + if(!PlayerCamera.bInterpolateCamChanges) + { + Reset(); + } + super.OnBecomeActive(OldCamera); + //return; +} + +event ModifyPostProcessSettings(out PostProcessSettings PP) +{ + // End:0x37 + if(CurrentCamMode != none) + { + CurrentCamMode.ModifyPostProcessSettings(PP); + } + //return; +} + +function ResetInterpolation() +{ + super.ResetInterpolation(); + LastHeightAdjustment = 0.0000000; + LastYawAdjustment = 0.0000000; + LastPitchAdjustment = 0.0000000; + LeftoverPitchAdjustment = 0.0000000; + //return; +} + +defaultproperties +{ + WorstLocPenetrationExtentScale=1.0000000 + PenetrationBlendOutTime=0.1500000 + PenetrationBlendInTime=0.1000000 + PenetrationBlockedPct=1.0000000 + PenetrationExtentScale=1.0000000 + OriginOffsetInterpSpeed=8.0000000 + ThirdPersonCamDefaultClass=Class'GameFramework.GameThirdPersonCameraMode_Default' + Focus_BackOffStrength=0.3300000 + Focus_StepHeightAdjustment=64.0000000 + Focus_MaxTries=4 + Focus_FastAdjustKickInTime=0.5000000 + DirectLookInterpSpeed=6.0000000 + WorstLocInterpSpeed=8.0000000 + PenetrationAvoidanceFeelers[0]=(AdjustmentRot=(Pitch=0,Yaw=0,Roll=0),WorldWeight=1.0000000,PawnWeight=1.0000000,Extent=(X=14.0000000,Y=14.0000000,Z=14.0000000),TraceInterval=0,FramesUntilNextTrace=0) + PenetrationAvoidanceFeelers[1]=(AdjustmentRot=(Pitch=0,Yaw=3072,Roll=0),WorldWeight=0.7500000,PawnWeight=0.7500000,Extent=(X=0.0000000,Y=0.0000000,Z=0.0000000),TraceInterval=3,FramesUntilNextTrace=0) + PenetrationAvoidanceFeelers[2]=(AdjustmentRot=(Pitch=0,Yaw=-3072,Roll=0),WorldWeight=0.7500000,PawnWeight=0.7500000,Extent=(X=0.0000000,Y=0.0000000,Z=0.0000000),TraceInterval=3,FramesUntilNextTrace=0) + PenetrationAvoidanceFeelers[3]=(AdjustmentRot=(Pitch=0,Yaw=6144,Roll=0),WorldWeight=0.5000000,PawnWeight=0.5000000,Extent=(X=0.0000000,Y=0.0000000,Z=0.0000000),TraceInterval=5,FramesUntilNextTrace=0) + PenetrationAvoidanceFeelers[4]=(AdjustmentRot=(Pitch=0,Yaw=-6144,Roll=0),WorldWeight=0.5000000,PawnWeight=0.5000000,Extent=(X=0.0000000,Y=0.0000000,Z=0.0000000),TraceInterval=5,FramesUntilNextTrace=0) + PenetrationAvoidanceFeelers[5]=(AdjustmentRot=(Pitch=3640,Yaw=0,Roll=0),WorldWeight=1.0000000,PawnWeight=1.0000000,Extent=(X=0.0000000,Y=0.0000000,Z=0.0000000),TraceInterval=4,FramesUntilNextTrace=0) + PenetrationAvoidanceFeelers[6]=(AdjustmentRot=(Pitch=-3640,Yaw=0,Roll=0),WorldWeight=0.5000000,PawnWeight=0.5000000,Extent=(X=0.0000000,Y=0.0000000,Z=0.0000000),TraceInterval=4,FramesUntilNextTrace=0) + bResetCameraInterpolation=true +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameThirdPersonCameraMode.uc b/exported/GameFramework/Classes/GameThirdPersonCameraMode.uc new file mode 100755 index 00000000..52d7f0e1 --- /dev/null +++ b/exported/GameFramework/Classes/GameThirdPersonCameraMode.uc @@ -0,0 +1,249 @@ +class GameThirdPersonCameraMode extends Object + native(Camera) + config(Camera); + +enum ECameraViewportTypes +{ + CVT_16to9_Full, // 0 + CVT_16to9_VertSplit, // 1 + CVT_16to9_HorizSplit, // 2 + CVT_4to3_Full, // 3 + CVT_4to3_HorizSplit, // 4 + CVT_4to3_VertSplit, // 5 + CVT_MAX // 6 +}; + +struct native ViewOffsetData +{ + var() Vector OffsetHigh; + var() Vector OffsetMid; + var() Vector OffsetLow; + + structdefaultproperties + { + OffsetHigh=(X=0.0000000,Y=0.0000000,Z=0.0000000) + OffsetMid=(X=0.0000000,Y=0.0000000,Z=0.0000000) + OffsetLow=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +var transient GameThirdPersonCamera ThirdPersonCam; +var() const config float FOVAngle; +var() float BlendTime; +var() protected const bool bLockedToViewTarget; +var() protected const bool bDirectLook; +var() protected const bool bFollowTarget; +var() bool bInterpLocation; +var() protected bool bUsePerAxisOriginLocInterp; +var() bool bInterpRotation; +var() bool bRotInterpSpeedConstant; +var() const bool bDoPredictiveAvoidance; +var() const bool bValidateWorstLoc; +var() bool bSkipCameraCollision; +var() protected const bool bSmoothViewOffsetPitchChanges; +var() bool bApplyDeltaViewOffset; +var(DepthOfField) protected const bool bAdjustDOF; +var protected transient bool bDOFUpdated; +var bool bNoFOVPostProcess; +var() bool bInterpViewOffsetOnlyForCamTransition; +var() protected const float FollowingInterpSpeed_Pitch; +var() protected const float FollowingInterpSpeed_Yaw; +var() protected const float FollowingInterpSpeed_Roll; +var() protected const float FollowingCameraVelThreshold; +var() protected float OriginLocInterpSpeed; +var() protected Vector PerAxisOriginLocInterpSpeed; +var() protected float OriginRotInterpSpeed; +var() protected const Vector StrafeLeftAdjustment; +var() protected const Vector StrafeRightAdjustment; +var() protected const float StrafeOffsetScalingThreshold; +var() protected const float StrafeOffsetInterpSpeedIn; +var() protected const float StrafeOffsetInterpSpeedOut; +var protected transient Vector LastStrafeOffset; +var() protected const Vector RunFwdAdjustment; +var() protected const Vector RunBackAdjustment; +var() protected const float RunOffsetScalingThreshold; +var() protected const float RunOffsetInterpSpeedIn; +var() protected const float RunOffsetInterpSpeedOut; +var protected transient Vector LastRunOffset; +var() protected Vector WorstLocOffset; +var() protected const Vector TargetRelativeCameraOriginOffset; +var() protected const ViewOffsetData ViewOffset; +var() protected const ViewOffsetData ViewOffset_ViewportAdjustments[ECameraViewportTypes]; +var(DepthOfField) protected const float DOF_FalloffExponent; +var(DepthOfField) protected const float DOF_BlurKernelSize; +var(DepthOfField) protected const float DOF_FocusInnerRadius; +var(DepthOfField) protected const float DOF_MaxNearBlurAmount; +var(DepthOfField) protected const float DOF_MaxFarBlurAmount; +var protected transient float LastDOFRadius; +var protected transient float LastDOFDistance; +var(DepthOfField) protected const float DOFDistanceInterpSpeed; +var(DepthOfField) protected const Vector DOFTraceExtent; +var(DepthOfField) protected const float DOF_RadiusFalloff; +var(DepthOfField) protected const Vector2D DOF_RadiusRange; +var(DepthOfField) protected const Vector2D DOF_RadiusDistRange; +var float ViewOffsetInterp; +var() protected float OffsetAdjustmentInterpSpeed; +var protected transient GameThirdPersonCameraMode.ECameraViewportTypes CurrentViewportType; + +function Init() +{ + //return; +} + +function OnBecomeActive(Pawn TargetPawn, GameThirdPersonCameraMode PrevMode) +{ + // End:0x30 + if(BlendTime > 0.0000000) + { + ViewOffsetInterp = 1.0000000 / BlendTime; + } + else + { + ViewOffsetInterp = 0.0000000; + } + //return; +} + +function OnBecomeInActive(Pawn TargetPawn, GameThirdPersonCameraMode NewMode) +{ + //return; +} + +event Vector AdjustViewOffset(Pawn P, Vector Offset) +{ + return Offset; + //return ReturnValue; +} + +function float GetDesiredFOV(Pawn ViewedPawn) +{ + return FOVAngle; + //return ReturnValue; +} + +simulated event Vector GetCameraWorstCaseLoc(Pawn TargetPawn, TViewTarget CurrentViewTarget) +{ + return TargetPawn.Location + (WorstLocOffset >> TargetPawn.Rotation); + //return ReturnValue; +} + +simulated function bool SetFocusPoint(Pawn ViewedPawn) +{ + return false; + //return ReturnValue; +} + +simulated function ProcessViewRotation(float DeltaTime, Actor ViewTarget, out Rotator out_ViewRotation, out Rotator out_DeltaRot) +{ + //return; +} + +protected simulated function Vector GetDOFFocusLoc(Actor TraceOwner, Vector StartTrace, Vector EndTrace) +{ + return DOFTrace(TraceOwner, StartTrace, EndTrace); + //return ReturnValue; +} + +protected simulated function Vector DOFTrace(Actor TraceOwner, Vector StartTrace, Vector EndTrace) +{ + local Vector HitLocation, HitNormal; + local Actor HitActor; + + HitActor = TraceOwner.Trace(HitLocation, HitNormal, EndTrace, StartTrace, true, DOFTraceExtent,, TraceOwner.1); + // End:0x89 + if(HitActor == none) + { + HitLocation = EndTrace; + } + // End:0x177 + if(HitActor != none) + { + // End:0x177 + if(!HitActor.bBlockActors && HitActor.IsA('Trigger') || HitActor.IsA('TriggerVolume')) + { + HitActor.bProjTarget = false; + HitLocation = DOFTrace(TraceOwner, HitLocation, EndTrace); + HitActor.bProjTarget = true; + } + } + return HitLocation; + //return ReturnValue; +} + +simulated function UpdatePostProcess(const out TViewTarget VT, float DeltaTime) +{ + local Vector FocusLoc, StartTrace, EndTrace, CamDir; + local float FocusDist, SubjectDist, Pct; + + bDOFUpdated = false; + // End:0x21B + if(bAdjustDOF) + { + CamDir = Vector(VT.POV.Rotation); + StartTrace = VT.POV.Location + (CamDir * float(10)); + EndTrace = StartTrace + (CamDir * float(50000)); + FocusLoc = GetDOFFocusLoc(VT.Target, StartTrace, EndTrace); + SubjectDist = VSize(FocusLoc - StartTrace); + // End:0x186 + if(!ThirdPersonCam.bResetCameraInterpolation) + { + FocusDist = FInterpTo(LastDOFDistance, SubjectDist, DeltaTime, DOFDistanceInterpSpeed); + } + else + { + FocusDist = SubjectDist; + } + LastDOFDistance = FocusDist; + Pct = GetRangePctByValue(DOF_RadiusDistRange, FocusDist); + LastDOFRadius = GetRangeValueByPct(DOF_RadiusRange, FClamp(Pct, 0.0000000, 1.0000000) ** DOF_RadiusFalloff); + bDOFUpdated = true; + } + //return; +} + +simulated function ModifyPostProcessSettings(out PostProcessSettings PP) +{ + // End:0x161 + if(bDOFUpdated) + { + PP.bEnableDOF = true; + PP.DOF_FalloffExponent = DOF_FalloffExponent; + PP.DOF_BlurKernelSize = DOF_BlurKernelSize; + PP.DOF_MaxNearBlurAmount = DOF_MaxNearBlurAmount; + PP.DOF_MaxFarBlurAmount = DOF_MaxFarBlurAmount; + PP.DOF_FocusType = 0; + PP.DOF_FocusInnerRadius = DOF_FocusInnerRadius; + PP.DOF_FocusDistance = LastDOFDistance; + PP.DOF_FocusInnerRadius = LastDOFRadius; + bDOFUpdated = false; + } + //return; +} + +// Export UGameThirdPersonCameraMode::execSetViewOffset(FFrame&, void* const) +native final function SetViewOffset(const out ViewOffsetData NewViewOffset); + +defaultproperties +{ + BlendTime=0.6700000 + bLockedToViewTarget=true + bInterpLocation=true + bDoPredictiveAvoidance=true + bValidateWorstLoc=true + bInterpViewOffsetOnlyForCamTransition=true + OriginLocInterpSpeed=8.0000000 + StrafeOffsetInterpSpeedIn=12.0000000 + StrafeOffsetInterpSpeedOut=20.0000000 + RunOffsetInterpSpeedIn=6.0000000 + RunOffsetInterpSpeedOut=12.0000000 + WorstLocOffset=(X=-8.0000000,Y=1.0000000,Z=90.0000000) + DOF_FalloffExponent=1.0000000 + DOF_BlurKernelSize=3.0000000 + DOF_MaxNearBlurAmount=0.6000000 + DOF_MaxFarBlurAmount=1.0000000 + DOFDistanceInterpSpeed=10.0000000 + DOF_RadiusFalloff=1.0000000 + DOF_RadiusRange=(X=2500.0000000,Y=60000.0000000) + DOF_RadiusDistRange=(X=1000.0000000,Y=50000.0000000) + OffsetAdjustmentInterpSpeed=12.0000000 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameThirdPersonCameraMode_Default.uc b/exported/GameFramework/Classes/GameThirdPersonCameraMode_Default.uc new file mode 100755 index 00000000..eefd9738 --- /dev/null +++ b/exported/GameFramework/Classes/GameThirdPersonCameraMode_Default.uc @@ -0,0 +1,27 @@ +class GameThirdPersonCameraMode_Default extends GameThirdPersonCameraMode + native(Camera) + config(Camera); + +var() protected const float WorstLocAimingZOffset; +var protected transient bool bTemporaryOriginRotInterp; +var() protected const float TemporaryOriginRotInterpSpeed; + +defaultproperties +{ + WorstLocAimingZOffset=-10.0000000 + TemporaryOriginRotInterpSpeed=12.0000000 + BlendTime=0.2500000 + bValidateWorstLoc=false + StrafeLeftAdjustment=(X=0.0000000,Y=-15.0000000,Z=0.0000000) + StrafeRightAdjustment=(X=0.0000000,Y=15.0000000,Z=0.0000000) + StrafeOffsetScalingThreshold=200.0000000 + RunFwdAdjustment=(X=20.0000000,Y=0.0000000,Z=0.0000000) + RunBackAdjustment=(X=-30.0000000,Y=0.0000000,Z=0.0000000) + RunOffsetScalingThreshold=200.0000000 + WorstLocOffset=(X=-8.0000000,Y=1.0000000,Z=95.0000000) + ViewOffset=(OffsetHigh=(X=-128.0000000,Y=56.0000000,Z=40.0000000),OffsetMid=(X=-160.0000000,Y=48.0000000,Z=16.0000000),OffsetLow=(X=-160.0000000,Y=48.0000000,Z=56.0000000)) + ViewOffset_ViewportAdjustments[1]=(OffsetHigh=(X=0.0000000,Y=-20.0000000,Z=0.0000000),OffsetMid=(X=0.0000000,Y=-20.0000000,Z=0.0000000),OffsetLow=(X=0.0000000,Y=-20.0000000,Z=0.0000000)) + ViewOffset_ViewportAdjustments[2]=(OffsetHigh=(X=0.0000000,Y=0.0000000,Z=-12.0000000),OffsetMid=(X=0.0000000,Y=0.0000000,Z=-12.0000000),OffsetLow=(X=0.0000000,Y=0.0000000,Z=-12.0000000)) + ViewOffset_ViewportAdjustments[3]=(OffsetHigh=(X=0.0000000,Y=0.0000000,Z=17.0000000),OffsetMid=(X=0.0000000,Y=0.0000000,Z=17.0000000),OffsetLow=(X=0.0000000,Y=0.0000000,Z=17.0000000)) + ViewOffset_ViewportAdjustments[4]=(OffsetHigh=(X=0.0000000,Y=0.0000000,Z=-15.0000000),OffsetMid=(X=0.0000000,Y=0.0000000,Z=-15.0000000),OffsetLow=(X=0.0000000,Y=0.0000000,Z=-15.0000000)) +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/GameTypes.uc b/exported/GameFramework/Classes/GameTypes.uc new file mode 100755 index 00000000..76e20e8b --- /dev/null +++ b/exported/GameFramework/Classes/GameTypes.uc @@ -0,0 +1,273 @@ +class GameTypes extends Object + native; + +const LOADING_MOVIE = "LoadingMovie"; + +enum EShakeParam +{ + ESP_OffsetRandom, // 0 + ESP_OffsetZero, // 1 + ESP_MAX // 2 +}; + +struct native ScreenShakeAnimStruct +{ + var CameraAnim Anim; + var bool bUseDirectionalAnimVariants; + var CameraAnim Anim_Left; + var CameraAnim Anim_Right; + var CameraAnim Anim_Rear; + var float AnimPlayRate; + var float AnimScale; + var float AnimBlendInTime; + var float AnimBlendOutTime; + var bool bRandomSegment; + var float RandomSegmentDuration; + var bool bSingleInstance; + + structdefaultproperties + { + Anim=none + bUseDirectionalAnimVariants=false + Anim_Left=none + Anim_Right=none + Anim_Rear=none + AnimPlayRate=1.0000000 + AnimScale=1.0000000 + AnimBlendInTime=0.2000000 + AnimBlendOutTime=0.2000000 + bRandomSegment=false + RandomSegmentDuration=0.0000000 + bSingleInstance=false + } +}; + +struct native ShakeParams +{ + var GameTypes.EShakeParam X; + var GameTypes.EShakeParam Y; + var GameTypes.EShakeParam Z; + var const transient byte Padding; + + structdefaultproperties + { + X=EShakeParam.ESP_OffsetRandom + Y=EShakeParam.ESP_OffsetRandom + Z=EShakeParam.ESP_OffsetRandom + Padding=0 + } +}; + +struct native ScreenShakeStruct +{ + var float TimeToGo; + var float TimeDuration; + var Vector RotAmplitude; + var Vector RotFrequency; + var Vector RotSinOffset; + var ShakeParams RotParam; + var Vector LocAmplitude; + var Vector LocFrequency; + var Vector LocSinOffset; + var ShakeParams LocParam; + var float FOVAmplitude; + var float FOVFrequency; + var float FOVSinOffset; + var GameTypes.EShakeParam FOVParam; + var name ShakeName; + var bool bOverrideTargetingDampening; + var float TargetingDampening; + + structdefaultproperties + { + TimeToGo=0.0000000 + TimeDuration=1.0000000 + RotAmplitude=(X=100.0000000,Y=100.0000000,Z=200.0000000) + RotFrequency=(X=10.0000000,Y=10.0000000,Z=25.0000000) + RotSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000) + RotParam=(X=EShakeParam.ESP_OffsetRandom,Y=EShakeParam.ESP_OffsetRandom,Z=EShakeParam.ESP_OffsetRandom,Padding=0) + LocAmplitude=(X=0.0000000,Y=3.0000000,Z=5.0000000) + LocFrequency=(X=1.0000000,Y=10.0000000,Z=20.0000000) + LocSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000) + LocParam=(X=EShakeParam.ESP_OffsetRandom,Y=EShakeParam.ESP_OffsetRandom,Z=EShakeParam.ESP_OffsetRandom,Padding=0) + FOVAmplitude=2.0000000 + FOVFrequency=5.0000000 + FOVSinOffset=0.0000000 + FOVParam=EShakeParam.ESP_OffsetRandom + ShakeName="None" + bOverrideTargetingDampening=false + TargetingDampening=0.0000000 + } +}; + +struct native TakeHitInfo +{ + var Vector HitLocation; + var Vector Momentum; + var Class DamageType; + var Pawn InstigatedBy; + var byte HitBoneIndex; + var PhysicalMaterial PhysicalMaterial; + var float Damage; + var Vector RadialDamageOrigin; + + structdefaultproperties + { + HitLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Momentum=(X=0.0000000,Y=0.0000000,Z=0.0000000) + DamageType=none + InstigatedBy=none + HitBoneIndex=0 + PhysicalMaterial=none + Damage=0.0000000 + RadialDamageOrigin=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct native GameSpecialMoveInfo +{ + var() name SpecialMoveName; + var() Class SpecialMoveClass; + var() GameSpecialMove SpecialMoveInstance; + + structdefaultproperties + { + SpecialMoveName="None" + SpecialMoveClass=none + SpecialMoveInstance=none + } +}; + +struct native SpecialMoveStruct +{ + var name SpecialMoveName; + var GamePawn InteractionPawn; + var Actor InteractionActor; + var int Flags; + + structdefaultproperties + { + SpecialMoveName="None" + InteractionPawn=none + InteractionActor=none + Flags=0 + } +}; + +struct native AICmdHistoryItem +{ + var Class CmdClass; + var float TimeStamp; + var string VerboseString; + + structdefaultproperties + { + CmdClass=none + TimeStamp=0.0000000 + VerboseString="" + } +}; + +struct native NearbyDynamicItem +{ + var() Actor Dynamic; + + structdefaultproperties + { + Dynamic=none + } +}; + +struct native CrowdSpawnerPlayerInfo +{ + var Vector ViewLocation; + var Rotator ViewRotation; + var Vector PredictLocation; + var PlayerController PC; + + structdefaultproperties + { + ViewLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + ViewRotation=(Pitch=0,Yaw=0,Roll=0) + PredictLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + PC=none + } +}; + +struct native AgentArchetypeInfo +{ + var() Object AgentArchetype; + var() float FrequencyModifier; + var() int MaxAllowed; + var transient int CurrSpawned; + var() array GroupMembers; + + structdefaultproperties + { + AgentArchetype=none + FrequencyModifier=1.0000000 + MaxAllowed=0 + CurrSpawned=0 + GroupMembers=none + } +}; + +struct native CrowdSpawnInfoItem +{ + var SeqAct_GameCrowdPopulationManagerToggle SeqSpawner; + var bool bSpawningActive; + var float SpawnRate; + var int SpawnNum; + var float Remainder; + var array ActiveAgents; + var array AgentArchetypes; + var float AgentFrequencySum; + var float MaxSpawnDist; + var float MaxSpawnDistSq; + var float MinBehindSpawnDist; + var float MinBehindSpawnDistSq; + var float AgentWarmupTime; + var bool bForceObstacleChecking; + var bool bForceNavMeshPathing; + var bool bEnableCrowdLightEnvironment; + var bool bCastShadows; + var LightingChannelContainer AgentLightingChannel; + var() int NumAgentsToTickPerFrame; + var int LastAgentTickedIndex; + var array PotentialSpawnPoints; + var float SpawnPrioritizationInterval; + var int PrioritizationIndex; + var int PrioritizationUpdateIndex; + var array PrioritizedSpawnPoints; + var float PlayerPositionPredictionTime; + + structdefaultproperties + { + SeqSpawner=none + bSpawningActive=false + SpawnRate=0.0000000 + SpawnNum=0 + Remainder=0.0000000 + ActiveAgents=none + AgentArchetypes=none + AgentFrequencySum=0.0000000 + MaxSpawnDist=0.0000000 + MaxSpawnDistSq=0.0000000 + MinBehindSpawnDist=0.0000000 + MinBehindSpawnDistSq=0.0000000 + AgentWarmupTime=3.0000000 + bForceObstacleChecking=false + bForceNavMeshPathing=false + bEnableCrowdLightEnvironment=false + bCastShadows=false + AgentLightingChannel=(bInitialized=false,BSP=false,Static=false,Dynamic=false,CompositeDynamic=false,Skybox=false,Unnamed_1=false,Unnamed_2=false,Unnamed_3=false,Unnamed_4=false,Unnamed_5=false,Unnamed_6=false,Cinematic_1=false,Cinematic_2=false,Cinematic_3=false,Cinematic_4=false,Cinematic_5=false,Cinematic_6=false,Cinematic_7=false,Cinematic_8=false,Cinematic_9=false,Cinematic_10=false,Gameplay_1=false,Gameplay_2=false,Gameplay_3=false,Gameplay_4=false,Crowd=false) + NumAgentsToTickPerFrame=0 + LastAgentTickedIndex=0 + PotentialSpawnPoints=none + SpawnPrioritizationInterval=0.4000000 + PrioritizationIndex=0 + PrioritizationUpdateIndex=0 + PrioritizedSpawnPoints=none + PlayerPositionPredictionTime=0.0000000 + } +}; diff --git a/exported/GameFramework/Classes/GameWaveForms.uc b/exported/GameFramework/Classes/GameWaveForms.uc new file mode 100755 index 00000000..7c6e1109 --- /dev/null +++ b/exported/GameFramework/Classes/GameWaveForms.uc @@ -0,0 +1,30 @@ +class GameWaveForms extends Object; + +var ForceFeedbackWaveform CameraShakeMediumShort; +var ForceFeedbackWaveform CameraShakeMediumLong; +var ForceFeedbackWaveform CameraShakeBigShort; +var ForceFeedbackWaveform CameraShakeBigLong; + +defaultproperties +{ + // Reference: ForceFeedbackWaveform'GameFramework.Default__GameWaveForms.ForceFeedbackWaveform7' + begin object name="ForceFeedbackWaveform7" class=Engine.ForceFeedbackWaveform + Samples=/* Array type was not detected. */ + end object + CameraShakeMediumShort=ForceFeedbackWaveform7 + // Reference: ForceFeedbackWaveform'GameFramework.Default__GameWaveForms.ForceFeedbackWaveform8' + begin object name="ForceFeedbackWaveform8" class=Engine.ForceFeedbackWaveform + Samples=/* Array type was not detected. */ + end object + CameraShakeMediumLong=ForceFeedbackWaveform8 + // Reference: ForceFeedbackWaveform'GameFramework.Default__GameWaveForms.ForceFeedbackWaveform9' + begin object name="ForceFeedbackWaveform9" class=Engine.ForceFeedbackWaveform + Samples=/* Array type was not detected. */ + end object + CameraShakeBigShort=ForceFeedbackWaveform9 + // Reference: ForceFeedbackWaveform'GameFramework.Default__GameWaveForms.ForceFeedbackWaveform10' + begin object name="ForceFeedbackWaveform10" class=Engine.ForceFeedbackWaveform + Samples=/* Array type was not detected. */ + end object + CameraShakeBigLong=ForceFeedbackWaveform10 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileDebugCameraController.uc b/exported/GameFramework/Classes/MobileDebugCameraController.uc new file mode 100755 index 00000000..c19c405a --- /dev/null +++ b/exported/GameFramework/Classes/MobileDebugCameraController.uc @@ -0,0 +1,149 @@ +class MobileDebugCameraController extends DebugCameraController + config(Input) + hidecategories(Navigation); + +var int OldMobileGroup; +var MobilePlayerInput MPI; + +function OnActivate(PlayerController PC) +{ + MPI = MobilePlayerInput(OriginalControllerRef.PlayerInput); + // End:0x8C + if(MPI != none) + { + OldMobileGroup = MPI.CurrentMobileGroup; + MPI.CurrentMobileGroup = -1; + } + MPI = new (self) Class'GameFramework.MobileDebugCameraInput'; + super.OnActivate(PC); + MPI.InitInputSystem(); + SetupDebugZones(); + MPI.ActivateInputGroup("DebugGroup"); + MobileDebugCameraHUD(myHUD).bDrawDebugText = bDrawDebugText; + //return; +} + +function InitDebugInputSystem() +{ + MPI.MobileInputGroups.Remove(0, MPI.MobileInputGroups.Length); + MPI.MobileInputZones.Remove(0, MPI.MobileInputZones.Length); + //return; +} + +function OnDeactivate(PlayerController PC) +{ + local MobilePlayerInput MobileInput; + + MPI.CurrentMobileGroup = -1; + super.OnDeactivate(PC); + MobileInput = MobilePlayerInput(OriginalControllerRef.PlayerInput); + MobileInput.SwapZoneOwners(); + MobileInput.CurrentMobileGroup = OldMobileGroup; + //return; +} + +event InitInputSystem() +{ + super(PlayerController).InitInputSystem(); + //return; +} + +function SetupDebugZones() +{ + local float Ratio, Spacer; + local MobileInputZone StickMoveZone, StickLookZone; + local Vector2D ViewportSize; + + MPI.InitializeInputZones(); + StickMoveZone = MPI.FindZone("DebugStickMoveZone"); + StickLookZone = MPI.FindZone("DebugStickLookZone"); + LocalPlayer(OriginalPlayer).ViewportClient.GetViewportSize(ViewportSize); + Ratio = ViewportSize.Y / ViewportSize.X; + Spacer = float(((Ratio == 0.7500000) ? 96 : 64)); + Spacer *= (ViewportSize.X / float(1024)); + // End:0x60E + if(StickMoveZone != none) + { + // End:0x293 + if(Ratio == 0.7500000) + { + StickMoveZone.SizeX = ViewportSize.X * 0.1200000; + StickMoveZone.SizeY = StickMoveZone.SizeX; + StickMoveZone.ActiveSizeX = StickMoveZone.SizeX; + StickMoveZone.ActiveSizeY = StickMoveZone.SizeY; + } + StickMoveZone.SizeX = Spacer + StickMoveZone.SizeX; + StickMoveZone.SizeY = Spacer + StickMoveZone.SizeY; + // End:0x35B + if(Ratio == 0.7500000) + { + StickMoveZone.SizeY *= 1.5000000; + } + StickMoveZone.X = 0.0000000; + StickMoveZone.Y = ViewportSize.Y - StickMoveZone.SizeY; + StickMoveZone.CurrentCenter.X = (StickMoveZone.X + StickMoveZone.SizeX) - (StickMoveZone.ActiveSizeX * 0.5000000); + // End:0x4FC + if(Ratio == 0.7500000) + { + StickMoveZone.CurrentCenter.Y = ViewportSize.Y - (StickMoveZone.SizeY * 0.3300000); + } + else + { + StickMoveZone.CurrentCenter.Y = StickMoveZone.Y + (StickMoveZone.ActiveSizeY * 0.5000000); + } + StickMoveZone.CurrentLocation = StickMoveZone.CurrentCenter; + StickMoveZone.InitialCenter = StickMoveZone.CurrentCenter; + StickMoveZone.bCenterOnEvent = true; + } + // End:0xABB + if(StickLookZone != none) + { + // End:0x729 + if(Ratio == 0.7500000) + { + StickLookZone.SizeX = ViewportSize.X * 0.1200000; + StickLookZone.SizeY = StickLookZone.SizeX; + StickLookZone.ActiveSizeX = StickLookZone.SizeX; + StickLookZone.ActiveSizeY = StickLookZone.SizeY; + } + StickLookZone.SizeX = Spacer + StickLookZone.SizeX; + StickLookZone.SizeY = Spacer + StickLookZone.SizeY; + // End:0x7F1 + if(Ratio == 0.7500000) + { + StickLookZone.SizeY *= 1.5000000; + } + StickLookZone.X = ViewportSize.X - StickLookZone.SizeX; + StickLookZone.Y = ViewportSize.Y - StickLookZone.SizeY; + StickLookZone.CurrentCenter.X = StickLookZone.X + (StickLookZone.ActiveSizeX * 0.5000000); + // End:0x9A9 + if(Ratio == 0.7500000) + { + StickLookZone.CurrentCenter.Y = ViewportSize.Y - (StickLookZone.SizeY * 0.3300000); + } + else + { + StickLookZone.CurrentCenter.Y = StickLookZone.Y + (StickLookZone.ActiveSizeY * 0.5000000); + } + StickLookZone.CurrentLocation = StickLookZone.CurrentCenter; + StickLookZone.InitialCenter = StickLookZone.CurrentCenter; + StickLookZone.bCenterOnEvent = true; + } + //return; +} + +defaultproperties +{ + HUDClass=Class'GameFramework.MobileDebugCameraHUD' + InputClass=Class'GameFramework.MobileDebugCameraInput' + // Reference: CylinderComponent'GameFramework.Default__MobileDebugCameraController.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'GameFramework.Default__DebugCameraController.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileDebugCameraHUD.uc b/exported/GameFramework/Classes/MobileDebugCameraHUD.uc new file mode 100755 index 00000000..34884758 --- /dev/null +++ b/exported/GameFramework/Classes/MobileDebugCameraHUD.uc @@ -0,0 +1,160 @@ +class MobileDebugCameraHUD extends MobileHUD + transient + config(Game) + hidecategories(Navigation); + +var bool bDrawDebugText; + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + //return; +} + +function bool DisplayMaterials(float X, out float Y, float DY, MeshComponent MeshComp) +{ + local int MaterialIndex; + local bool bDisplayedMaterial; + local MaterialInterface Material; + + bDisplayedMaterial = false; + // End:0x157 + if(MeshComp != none) + { + MaterialIndex = 0; + J0x26: + + // End:0x157 [Loop If] + if(MaterialIndex < MeshComp.GetNumElements()) + { + Material = MeshComp.GetMaterial(MaterialIndex); + // End:0x149 + if(Material != none) + { + Y += DY; + Canvas.SetPos(X + DY, Y); + Canvas.DrawText(("Material: '" $ string(Material.Name)) $ "'"); + bDisplayedMaterial = true; + } + ++MaterialIndex; + // [Loop Continue] + goto J0x26; + } + } + return bDisplayedMaterial; + //return ReturnValue; +} + +event PostRender() +{ + local MobileDebugCameraController DCC; + local float XL, YL, X, Y; + local string MyText; + local Vector CamLoc, ZeroVec; + local Rotator CamRot; + local TraceHitInfo HitInfo; + local Actor HitActor; + local editinline MeshComponent MeshComp; + local Vector HitLoc, HitNormal; + local bool bFoundMaterial, bOldForceMobileHUD; + + bOldForceMobileHUD = bForceMobileHUD; + bForceMobileHUD = true; + super.PostRender(); + DCC = MobileDebugCameraController(PlayerOwner); + // End:0xAB5 + if((DCC != none) && bDrawDebugText) + { + Canvas.SetDrawColor(0, 0, 255, 255); + MyText = "MobileDebugCameraHUD"; + Canvas.Font = Class'Engine.Engine'.static.GetSmallFont(); + Canvas.StrLen(MyText, XL, YL); + X = float(Canvas.SizeX) * 0.0500000; + Y = YL; + YL += (float(2) * Y); + Canvas.SetPos(X, YL); + Canvas.DrawText(MyText, true); + Canvas.SetDrawColor(128, 128, 128, 255); + CamLoc = DCC.PlayerCamera.CameraCache.POV.Location; + CamRot = DCC.PlayerCamera.CameraCache.POV.Rotation; + YL += Y; + Canvas.SetPos(X, YL); + Canvas.DrawText((("CamLoc:" $ string(CamLoc)) @ "CamRot:") $ string(CamRot)); + HitActor = Trace(HitLoc, HitNormal, ((Vector(CamRot) * float(5000)) * float(20)) + CamLoc, CamLoc, true, ZeroVec, HitInfo); + // End:0x8EC + if(HitActor != none) + { + YL += Y; + Canvas.SetPos(X, YL); + Canvas.DrawText((("HitLoc:" $ string(HitLoc)) @ "HitNorm:") $ string(HitNormal)); + YL += Y; + Canvas.SetPos(X, YL); + Canvas.DrawText("HitDist:" @ string(VSize(CamLoc - HitLoc))); + YL += Y; + Canvas.SetPos(X, YL); + Canvas.DrawText(("HitActor: '" $ string(HitActor.Name)) $ "'"); + YL += Y; + Canvas.SetPos(X, YL); + Canvas.DrawText(("PhysMat: '" $ string(HitInfo.PhysMaterial)) $ "'"); + bFoundMaterial = false; + // End:0x728 + if(HitInfo.Material != none) + { + YL += Y; + Canvas.SetPos(X + Y, YL); + Canvas.DrawText("Material:" $ string(HitInfo.Material.Name)); + bFoundMaterial = true; + } + else + { + // End:0x7A2 + if(HitInfo.HitComponent != none) + { + bFoundMaterial = DisplayMaterials(X, YL, Y, MeshComponent(HitInfo.HitComponent)); + } + else + { + // End:0x81F + foreach HitActor.AllOwnedComponents(Class'Engine.MeshComponent', MeshComp) + { + bFoundMaterial = bFoundMaterial || DisplayMaterials(X, YL, Y, MeshComp); + } + } + } + // End:0x8B5 + if(bFoundMaterial == false) + { + YL += Y; + Canvas.SetPos(X + Y, YL); + Canvas.DrawText("Material: NONE"); + } + DrawDebugLine(HitLoc, HitLoc + (HitNormal * float(30)), 255, 255, 231); + } + else + { + YL += Y; + Canvas.SetPos(X, YL); + Canvas.DrawText("Not trace hit"); + } + // End:0xAB5 + if((DCC.bShowSelectedInfo == true) && DCC.SelectedActor != none) + { + YL += Y; + Canvas.SetPos(X, YL); + Canvas.DrawText(("Selected actor: '" $ string(DCC.SelectedActor.Name)) $ "'"); + DisplayMaterials(X, YL, Y, MeshComponent(DCC.SelectedComponent)); + } + } + bForceMobileHUD = bOldForceMobileHUD; + //return; +} + +defaultproperties +{ + bDrawDebugText=true + JoystickBackground=Texture2D'MobileResources.T_MobileControls_texture' + JoystickBackgroundUVs=(UL=126.0000000,VL=126.0000000) + JoystickHat=Texture2D'MobileResources.T_MobileControls_texture' + JoystickHatUVs=(U=128.0000000,UL=78.0000000,VL=78.0000000) + bHidden=false +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileDebugCameraInput.uc b/exported/GameFramework/Classes/MobileDebugCameraInput.uc new file mode 100755 index 00000000..61f6fade --- /dev/null +++ b/exported/GameFramework/Classes/MobileDebugCameraInput.uc @@ -0,0 +1,33 @@ +class MobileDebugCameraInput extends MobilePlayerInput within GamePlayerController + transient + config(Game) + hidecategories(Object,UIRoot); + +function bool InputKey(int ControllerId, name Key, Object.EInputEvent Event, optional float AmountDepressed = 1.0000000, optional bool bGamepad = false) +{ + local PlayerController PC; + local MobileDebugCameraController DCC; + + // End:0x142 + foreach Outer.WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x141 + if(PC.bIsPlayer && PC.IsLocalPlayerController()) + { + DCC = MobileDebugCameraController(PC); + // End:0xF2 + if((DCC != none) && DCC.OriginalControllerRef == none) + { + continue; + } + return DCC.NativeInputKey(ControllerId, Key, Event, AmountDepressed, bGamepad); + } + } + return false; + //return ReturnValue; +} + +defaultproperties +{ + OnReceivedNativeInputKey=InputKey +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileHUD.uc b/exported/GameFramework/Classes/MobileHUD.uc new file mode 100755 index 00000000..6e0dc8e6 --- /dev/null +++ b/exported/GameFramework/Classes/MobileHUD.uc @@ -0,0 +1,578 @@ +class MobileHUD extends HUD + transient + native + config(Game) + hidecategories(Navigation); + +var config bool bShowGameHud; +var config bool bShowMobileHud; +var globalconfig bool bForceMobileHUD; +var config bool bShowMobileTilt; +var config bool bDebugTouches; +var config bool bDebugZones; +var config bool bDebugZonePresses; +var config bool bShowMotionDebug; +var Texture2D JoystickBackground; +var TextureUVs JoystickBackgroundUVs; +var Texture2D JoystickHat; +var TextureUVs JoystickHatUVs; +var Texture2D ButtonImages[2]; +var TextureUVs ButtonUVs[2]; +var Font ButtonFont; +var Color ButtonCaptionColor; +var Texture2D TrackballBackground; +var TextureUVs TrackballBackgroundUVs; +var Texture2D TrackballTouchIndicator; +var TextureUVs TrackballTouchIndicatorUVs; +var Texture2D SliderImages[4]; +var TextureUVs SliderUVs[4]; +var config float MobileTiltX; +var config float MobileTiltY; +var config float MobileTiltSize; +var array KismetRenderEvents; + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x40 + if(WorldInfo.IsConsoleBuild(3) || bForceMobileHUD) + { + } + else + { + bShowGameHud = true; + } + RefreshKismetLinks(); + //return; +} + +function PostRender() +{ + local MobilePlayerInput MPI; + + super.PostRender(); + // End:0x50 + if(Class'Engine.GameEngine'.static.HasSecondaryScreenActive() == false) + { + // End:0x46 + if(ShowMobileHud()) + { + DrawInputZoneOverlays(); + } + RenderMobileMenu(); + } + // End:0x425 + if(bShowMotionDebug) + { + MPI = MobilePlayerInput(PlayerOwner.PlayerInput); + // End:0x425 + if(MPI != none) + { + Canvas.SetDrawColor(255, 255, 255, 255); + Canvas.SetPos(0.0000000, 70.0000000); + DrawMobileDebugString(0.0000000, 90.0000000, "[Mobile Motion]"); + DrawMobileDebugString(0.0000000, 110.0000000, (((("Attitude: Pitch=" $ string(MPI.aTilt.X)) @ "Yaw=") $ string(MPI.aTilt.Y)) @ "Roll=") $ string(MPI.aTilt.Z)); + DrawMobileDebugString(0.0000000, 130.0000000, (("Rotation:" @ string(MPI.aRotationRate.X)) @ string(MPI.aRotationRate.Y)) @ string(MPI.aRotationRate.Z)); + DrawMobileDebugString(0.0000000, 150.0000000, (("Gravity:" @ string(MPI.aGravity.X)) @ string(MPI.aGravity.Y)) @ string(MPI.aGravity.Z)); + DrawMobileDebugString(0.0000000, 170.0000000, (("Accleration:" @ string(MPI.aAcceleration.X)) @ string(MPI.aAcceleration.Y)) @ string(MPI.aAcceleration.Z)); + } + } + RenderKismetHud(); + //return; +} + +function DrawMobileDebugString(float XPos, float YPos, string Str) +{ + Canvas.SetDrawColor(0, 0, 0, 255); + Canvas.SetPos(XPos, YPos); + Canvas.DrawText(Str); + Canvas.SetPos(XPos + float(1), YPos + float(1)); + Canvas.DrawColor = WhiteColor; + Canvas.DrawText(Str); + //return; +} + +function bool ShowMobileHud() +{ + return bShowMobileHud && bShowHUD; + //return ReturnValue; +} + +function RenderMobileMenu() +{ + local MobilePlayerInput MobileInput; + local float Y; + local int I; + + MobileInput = MobilePlayerInput(PlayerOwner.PlayerInput); + // End:0x42 + if(MobileInput == none) + { + return; + } + // End:0x21B + if(bDebugTouches) + { + Y = 20.0000000; + Canvas.SetDrawColor(255, 255, 255, 255); + I = 0; + J0x90: + + // End:0x21B [Loop If] + if(I < 5) + { + Canvas.SetPos(0.0000000, Y); + Canvas.DrawText((((("" $ string(I)) @ string(MobileInput.Touches[I].bInUse)) @ string(MobileInput.Touches[I].State)) @ string(MobileInput.Touches[I].Zone)) @ string(MobileInput.Touches[I].Handle)); + Y += float(10); + I++; + // [Loop Continue] + goto J0x90; + } + } + MobileInput.RenderMenus(Canvas, WorldInfo.DeltaSeconds); + //return; +} + +function DrawInputZoneOverlays() +{ + local int ZoneIndex; + local MobileInputZone Zone; + local float Fade; + local MobilePlayerInput MobileInput; + local array Zones; + + // End:0x11 + if(!bShowHUD) + { + return; + } + MobileInput = MobilePlayerInput(PlayerOwner.PlayerInput); + // End:0x53 + if(MobileInput == none) + { + return; + } + Canvas.Reset(); + Canvas.ClipX = float(Canvas.SizeX); + Canvas.ClipY = float(Canvas.SizeY); + Canvas.Font = Class'Engine.Engine'.static.GetSmallFont(); + // End:0x17A + if(MobileInput.HasZones()) + { + Zones = MobileInput.GetCurrentZones(); + } + ZoneIndex = 0; + J0x185: + + // End:0x71F [Loop If] + if(ZoneIndex < Zones.Length) + { + Zone = Zones[ZoneIndex]; + // End:0x5A1 + if(!Zone.bIsInvisible) + { + Canvas.DrawColor = Zone.RenderColor; + Canvas.DrawColor.A *= Zone.AnimatingFadeOpacity; + switch(Zone.State) + { + // End:0x2ED + case 0: + Canvas.DrawColor.A *= Zone.InactiveAlpha; + // End:0x452 + break; + // End:0x39E + case 1: + Fade = Lerp(Zone.InactiveAlpha, 1.0000000, Zone.TransitionTime / Zone.ActivateTime); + Canvas.DrawColor.A *= Fade; + // End:0x452 + break; + // End:0x44F + case 3: + Fade = Lerp(1.0000000, Zone.InactiveAlpha, Zone.TransitionTime / Zone.DeactivateTime); + Canvas.DrawColor.A *= Fade; + // End:0x452 + break; + // End:0xFFFF + default: + break; + } + // End:0x491 + if(int(Canvas.DrawColor.A) <= int(0)) + { + // [Explicit Continue] + goto J0x711; + } + // End:0x5A1 + if(!Zone.OnPreDrawZone(Zone, Canvas)) + { + switch(Zone.Type) + { + // End:0x513 + case 0: + DrawMobileZone_Button(Zone); + // End:0x567 + break; + // End:0x52E + case 1: + DrawMobileZone_Joystick(Zone); + // End:0x567 + break; + // End:0x549 + case 2: + DrawMobileZone_Trackball(Zone); + // End:0x567 + break; + // End:0x564 + case 3: + DrawMobileZone_Slider(Zone); + // End:0x567 + break; + // End:0xFFFF + default: + break; + } + Zone.OnPostDrawZone(Zone, Canvas); + } + } + // End:0x5C1 + if(bShowMobileTilt) + { + DrawMobileTilt(MobileInput); + } + // End:0x711 + if(bDebugZones || bDebugZonePresses && (int(Zone.State) == int(2)) || int(Zone.State) == int(1)) + { + Canvas.SetDrawColor(0, 255, 255, 255); + Canvas.SetPos(Zone.X, Zone.Y); + Canvas.DrawBox(Zone.SizeX, Zone.SizeY); + } + J0x711: + + ZoneIndex++; + // [Loop Continue] + goto J0x185; + } + //return; +} + +function DrawMobileZone_Button(MobileInputZone Zone) +{ + local int Pressed; + local float X, Y, U, V, UL, VL, + A; + + local Texture2D Tex; + + Pressed = int(int(Zone.State) == int(2)); + // End:0x767 + if(ButtonImages[Pressed] != none) + { + Canvas.SetPos(Zone.X, Zone.Y); + // End:0x1F3 + if((Pressed == 0) && Zone.OverrideTexture1 != none) + { + Tex = Zone.OverrideTexture1; + U = Zone.OverrideUVs1.U; + V = Zone.OverrideUVs1.V; + UL = Zone.OverrideUVs1.UL; + VL = Zone.OverrideUVs1.VL; + } + else + { + // End:0x33F + if((Pressed == 1) && Zone.OverrideTexture2 != none) + { + Tex = Zone.OverrideTexture2; + U = Zone.OverrideUVs2.U; + V = Zone.OverrideUVs2.V; + UL = Zone.OverrideUVs2.UL; + VL = Zone.OverrideUVs2.VL; + } + else + { + Tex = ButtonImages[Pressed]; + U = ButtonUVs[Pressed].U; + V = ButtonUVs[Pressed].V; + UL = ButtonUVs[Pressed].UL; + VL = ButtonUVs[Pressed].VL; + } + } + Canvas.DrawTile(Tex, Zone.ActiveSizeX, Zone.ActiveSizeY, U, V, UL, VL); + // End:0x767 + if(Zone.Caption != "") + { + // End:0x504 + if(ButtonFont != none) + { + Canvas.Font = ButtonFont; + } + Canvas.StrLen(Zone.Caption, UL, VL); + X = (Zone.X + (Zone.SizeX / float(2))) - (UL / float(2)); + Y = (Zone.Y + (Zone.SizeY / float(2))) - (VL / float(2)); + Canvas.SetPos(X + Zone.CaptionXAdjustment, Y + Zone.CaptionYAdjustment); + A = float(Canvas.DrawColor.A); + Canvas.DrawColor = ButtonCaptionColor; + Canvas.DrawColor.A = byte(A); + Canvas.DrawText(Zone.Caption); + } + } + //return; +} + +function DrawMobileZone_Joystick(MobileInputZone Zone) +{ + local int X, Y, Width, Height; + local Color LineColor; + local float ClampedX, ClampedY, Scale; + local Color TempColor; + + // End:0x34F + if((Zone.OverrideTexture1 != none) || JoystickBackground != none) + { + Width = int(Zone.ActiveSizeX); + Height = int(Zone.ActiveSizeY); + X = int(Zone.CurrentCenter.X - float(Width / 2)); + Y = int(Zone.CurrentCenter.Y - float(Height / 2)); + Canvas.SetPos(float(X), float(Y)); + // End:0x29D + if(Zone.OverrideTexture1 != none) + { + Canvas.DrawTile(Zone.OverrideTexture1, float(Width), float(Height), Zone.OverrideUVs1.U, Zone.OverrideUVs1.V, Zone.OverrideUVs1.UL, Zone.OverrideUVs1.VL); + } + else + { + Canvas.DrawTile(JoystickBackground, float(Width), float(Height), JoystickBackgroundUVs.U, JoystickBackgroundUVs.V, JoystickBackgroundUVs.UL, JoystickBackgroundUVs.VL); + } + } + // End:0xA06 + if((Zone.OverrideTexture2 != none) || JoystickHat != none) + { + ClampedX = Zone.CurrentLocation.X - Zone.CurrentCenter.X; + ClampedY = Zone.CurrentLocation.Y - Zone.CurrentCenter.Y; + Scale = 1.0000000; + // End:0x530 + if((ClampedX != float(0)) || ClampedY != float(0)) + { + Scale = float(Min(int(Zone.ActiveSizeX), int(Zone.ActiveSizeY))) / (2.0000000 * Sqrt((ClampedX * ClampedX) + (ClampedY * ClampedY))); + Scale = FMin(1.0000000, Scale); + } + ClampedX = (ClampedX * Scale) + Zone.CurrentCenter.X; + ClampedY = (ClampedY * Scale) + Zone.CurrentCenter.Y; + // End:0x75C + if(Zone.bRenderGuides) + { + TempColor = Canvas.DrawColor; + LineColor.R = 128; + LineColor.G = 128; + LineColor.B = 128; + LineColor.A = 255; + Canvas.Draw2DLine(Zone.CurrentCenter.X, Zone.CurrentCenter.Y, ClampedX, ClampedY, LineColor); + Canvas.DrawColor = TempColor; + } + Width = int(Zone.ActiveSizeX * 0.6500000); + Height = int(Zone.ActiveSizeY * 0.6500000); + Canvas.SetPos(ClampedX - float(Width / 2), ClampedY - float(Height / 2)); + // End:0x954 + if(Zone.OverrideTexture2 != none) + { + Canvas.DrawTile(Zone.OverrideTexture2, float(Width), float(Height), Zone.OverrideUVs2.U, Zone.OverrideUVs2.V, Zone.OverrideUVs2.UL, Zone.OverrideUVs2.VL); + } + else + { + Canvas.DrawTile(JoystickHat, float(Width), float(Height), JoystickHatUVs.U, JoystickHatUVs.V, JoystickHatUVs.UL, JoystickHatUVs.VL); + } + } + //return; +} + +function DrawMobileZone_Trackball(MobileInputZone Zone) +{ + local int Width, Height; + + // End:0x2D1 + if((Zone.OverrideTexture1 != none) || TrackballBackground != none) + { + Canvas.SetPos(Zone.X, Zone.Y); + // End:0x1F9 + if(Zone.OverrideTexture1 != none) + { + Canvas.DrawTile(Zone.OverrideTexture1, Zone.SizeX, Zone.SizeY, Zone.OverrideUVs1.U, Zone.OverrideUVs1.V, Zone.OverrideUVs1.UL, Zone.OverrideUVs1.VL); + } + else + { + Canvas.DrawTile(TrackballBackground, Zone.SizeX, Zone.SizeY, TrackballBackgroundUVs.U, TrackballBackgroundUVs.V, TrackballBackgroundUVs.UL, TrackballBackgroundUVs.VL); + } + } + // End:0x656 + if(((Zone.OverrideTexture2 != none) || TrackballTouchIndicator != none) && (int(Zone.State) == int(2)) || int(Zone.State) == int(1)) + { + Width = int(Zone.ActiveSizeX * 0.6500000); + Height = int(Zone.ActiveSizeY * 0.6500000); + Canvas.SetPos(Zone.CurrentLocation.X - float(Width / 2), Zone.CurrentLocation.Y - float(Height / 2)); + // End:0x5A4 + if(Zone.OverrideTexture2 != none) + { + Canvas.DrawTile(Zone.OverrideTexture2, float(Width), float(Height), Zone.OverrideUVs2.U, Zone.OverrideUVs2.V, Zone.OverrideUVs2.UL, Zone.OverrideUVs2.VL); + } + else + { + Canvas.DrawTile(TrackballTouchIndicator, float(Width), float(Height), TrackballTouchIndicatorUVs.U, TrackballTouchIndicatorUVs.V, TrackballTouchIndicatorUVs.UL, TrackballTouchIndicatorUVs.VL); + } + } + //return; +} + +function DrawMobileTilt(MobilePlayerInput MobileInput) +{ + local float X, Y, Scale, Yaw, Pitch; + + Yaw = (2.0000000 * FClamp(MobileInput.MobileYaw - MobileInput.MobileYawCenter, -0.5000000, 0.5000000)) * MobileInput.MobileYawMultiplier; + Pitch = (2.0000000 * FClamp(MobileInput.MobilePitch - MobileInput.MobilePitchCenter, -0.5000000, 0.5000000)) * MobileInput.MobilePitchMultiplier; + X = (MobileTiltX + ((Yaw * MobileTiltSize) / float(2))) - MobileTiltX; + Y = (MobileTiltY + ((Pitch * MobileTiltSize) / float(2))) - MobileTiltY; + Scale = 1.0000000; + // End:0x1FF + if((X != float(0)) || Y != float(0)) + { + Scale = MobileTiltSize / (2.0000000 * Sqrt(((X * X) * Y) * Y)); + Scale = FMin(1.0000000, Scale); + } + X = (X * Scale) + MobileTiltX; + Y = (Y * Scale) + MobileTiltY; + Canvas.DrawColor = WhiteColor; + Canvas.Draw2DLine(MobileTiltX, MobileTiltY, X, Y, Canvas.DrawColor); + //return; +} + +function DrawMobileZone_Slider(MobileInputZone Zone) +{ + local float X, Y; + local TextureUVs UVs; + local Texture2D Tex; + + // End:0x77 + if(Zone.OverrideTexture1 != none) + { + Tex = Zone.OverrideTexture1; + UVs = Zone.OverrideUVs1; + } + else + { + Tex = SliderImages[int(Zone.SlideType)]; + UVs = SliderUVs[int(Zone.SlideType)]; + } + X = ((int(Zone.SlideType) > 1) ? Zone.CurrentLocation.X - (Zone.ActiveSizeX * 0.5000000) : Zone.X); + Y = ((int(Zone.SlideType) > 1) ? Zone.Y : Zone.CurrentLocation.Y - (Zone.ActiveSizeY * 0.5000000)); + Canvas.SetPos(X, Y); + Canvas.DrawTile(Tex, Zone.ActiveSizeX, Zone.ActiveSizeY, UVs.U, UVs.V, UVs.UL, UVs.VL); + //return; +} + +function RefreshKismetLinks() +{ + local array HudEvents; + local Sequence GameSeq; + local int I; + + GameSeq = WorldInfo.GetGameSequence(); + // End:0xC1 + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'GameFramework.SeqEvent_HudRender', true, HudEvents); + I = 0; + J0x75: + + // End:0xC1 [Loop If] + if(I < HudEvents.Length) + { + AddKismetRenderEvent(SeqEvent_HudRender(HudEvents[I])); + I++; + // [Loop Continue] + goto J0x75; + } + } + //return; +} + +function AddKismetRenderEvent(SeqEvent_HudRender NewEvent) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x54 [Loop If] + if(I < KismetRenderEvents.Length) + { + // End:0x46 + if(KismetRenderEvents[I] == NewEvent) + { + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x5F: + + // End:0xBD [Loop If] + if(I < KismetRenderEvents.Length) + { + // End:0xAF + if(KismetRenderEvents[I] == none) + { + KismetRenderEvents[I] = NewEvent; + return; + } + I++; + // [Loop Continue] + goto J0x5F; + } + KismetRenderEvents.AddItem(NewEvent); + //return; +} + +function RenderKismetHud() +{ + local int I; + local array boolVars; + + I = 0; + J0x0B: + + // End:0x147 [Loop If] + if(I < KismetRenderEvents.Length) + { + boolVars.Length = 0; + KismetRenderEvents[I].GetBoolVars(boolVars, "Active"); + // End:0x139 + if(((boolVars.Length == 0) || int(boolVars[0]) != int(0)) && KismetRenderEvents[I].bIsActive) + { + // End:0x139 + if((KismetRenderEvents[I] != none) && KismetRenderEvents[I].bIsActive) + { + KismetRenderEvents[I].Render(Canvas, self); + } + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +defaultproperties +{ + bShowMobileHud=true + JoystickBackgroundUVs=(U=0.0000000,V=0.0000000,UL=64.0000000,VL=64.0000000) + JoystickHatUVs=(U=0.0000000,V=0.0000000,UL=64.0000000,VL=64.0000000) + ButtonUVs[0]=(U=0.0000000,V=0.0000000,UL=64.0000000,VL=64.0000000) + ButtonUVs[1]=(U=0.0000000,V=0.0000000,UL=64.0000000,VL=64.0000000) + TrackballBackgroundUVs=(U=0.0000000,V=0.0000000,UL=64.0000000,VL=64.0000000) + TrackballTouchIndicatorUVs=(U=0.0000000,V=0.0000000,UL=64.0000000,VL=64.0000000) + SliderUVs[0]=(U=0.0000000,V=0.0000000,UL=64.0000000,VL=64.0000000) + SliderUVs[1]=(U=0.0000000,V=0.0000000,UL=64.0000000,VL=64.0000000) + SliderUVs[2]=(U=0.0000000,V=0.0000000,UL=64.0000000,VL=64.0000000) + SliderUVs[3]=(U=0.0000000,V=0.0000000,UL=64.0000000,VL=64.0000000) +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileInputZone.uc b/exported/GameFramework/Classes/MobileInputZone.uc new file mode 100755 index 00000000..3d99bc4e --- /dev/null +++ b/exported/GameFramework/Classes/MobileInputZone.uc @@ -0,0 +1,226 @@ +class MobileInputZone extends Object + native + config(Game) + perobjectconfig + editinlinenew; + +enum EZoneType +{ + ZoneType_Button, // 0 + ZoneType_Joystick, // 1 + ZoneType_Trackball, // 2 + ZoneType_Slider, // 3 + ZoneType_SubClassed, // 4 + ZoneType_MAX // 5 +}; + +enum EZoneState +{ + ZoneState_Inactive, // 0 + ZoneState_Activating, // 1 + ZoneState_Active, // 2 + ZoneState_Deactivating, // 3 + ZoneState_MAX // 4 +}; + +enum EZoneSlideType +{ + ZoneSlide_UpDown, // 0 + ZoneSlide_LeftRight, // 1 + ZoneSlide_MAX // 2 +}; + +struct native TextureUVs +{ + var() float U; + var() float V; + var() float UL; + var() float VL; + + structdefaultproperties + { + U=0.0000000 + V=0.0000000 + UL=64.0000000 + VL=64.0000000 + } +}; + +var(Zone) config MobileInputZone.EZoneType Type; +var(Zone) byte TouchpadIndex; +var MobileInputZone.EZoneState State; +var(Options) config MobileInputZone.EZoneSlideType SlideType; +var(Zone) config string Caption; +var(Input) config name InputKey; +var(Input) config name HorizontalInputKey; +var(Input) config name TapInputKey; +var(Input) config name DoubleTapInputKey; +var(Input) config float VertMultiplier; +var(Input) config float HorizMultiplier; +var(Input) config float Acceleration; +var(Input) config float Smoothing; +var(Input) config float EscapeVelocityStrength; +var(Input) config bool bScalePawnMovement; +var(Bounds) config bool bRelativeX; +var(Bounds) config bool bRelativeY; +var(Bounds) config bool bRelativeSizeX; +var(Bounds) config bool bRelativeSizeY; +var(Bounds) config bool bActiveSizeYFromX; +var(Bounds) config bool bSizeYFromSizeX; +var(Bounds) config bool bApplyGlobalScaleToActiveSizes; +var(Bounds) config bool bCenterX; +var(Bounds) config bool bCenterY; +var(Options) config bool bIsInvisible; +var(Options) config bool bQuickDoubleTap; +var(Options) config bool bCenterOnEvent; +var(Options) config bool bSliderHasTrack; +var(Options) config bool bFloatingTiltZone; +var(Transitions) config bool bUseGentleTransitions; +var(Advanced) config bool bAllowFirstDeltaForTrackballZone; +var(Rendering) config bool bRenderGuides; +var bool bIsDoubleTapAndHold; +var(Bounds) config float X; +var(Bounds) config float Y; +var(Bounds) config float SizeX; +var(Bounds) config float SizeY; +var(Bounds) config float ActiveSizeX; +var(Bounds) config float ActiveSizeY; +var const float InitialX; +var const float InitialY; +var const float InitialSizeX; +var const float InitialSizeY; +var const float InitialActiveSizeX; +var const float InitialActiveSizeY; +var(Bounds) config float AuthoredGlobalScale; +var(Bounds) config float Border; +var(Options) config float ResetCenterAfterInactivityTime; +var(Options) config float TapDistanceConstraint; +var(Transitions) config float ActivateTime; +var(Transitions) config float DeactivateTime; +var(Rendering) config Color RenderColor; +var(Rendering) config float InactiveAlpha; +var(Rendering) config float CaptionXAdjustment; +var(Rendering) config float CaptionYAdjustment; +var(Rendering) Texture2D OverrideTexture1; +var config string OverrideTexture1Name; +var(Rendering) config TextureUVs OverrideUVs1; +var(Rendering) Texture2D OverrideTexture2; +var config string OverrideTexture2Name; +var(Rendering) config TextureUVs OverrideUVs2; +var Vector2D InitialLocation; +var Vector2D CurrentLocation; +var Vector2D CurrentCenter; +var Vector2D InitialCenter; +var Vector2D PreviousLocations[6]; +var float PreviousMoveDeltaTimes[6]; +var int PreviousLocationCount; +var float LastTouchTime; +var float TimeSinceLastTapRepeat; +var float AnimatingFadeOpacity; +var MobilePlayerInput InputOwner; +var float TransitionTime; +var Vector2D EscapeVelocity; +var array MobileSeqEventHandlers; +var Vector2D LastAxisValues; +var float TotalActiveTime; +var float LastWentActiveTime; +//var delegate __OnProcessInputDelegate__Delegate; +//var delegate __OnTapDelegate__Delegate; +//var delegate __OnDoubleTapDelegate__Delegate; +//var delegate __OnProcessSlide__Delegate; +//var delegate __OnPreDrawZone__Delegate; +//var delegate __OnPostDrawZone__Delegate; + +// Export UMobileInputZone::execActivateZone(FFrame&, void* const) +native function ActivateZone(); + +// Export UMobileInputZone::execDeactivateZone(FFrame&, void* const) +native function DeactivateZone(); + +delegate bool OnProcessInputDelegate(MobileInputZone Zone, float DeltaTime, int Handle, Interaction.ETouchType EventType, Vector2D TouchLocation) +{ + //return ReturnValue; +} + +delegate bool OnTapDelegate(MobileInputZone Zone, Interaction.ETouchType EventType, Vector2D TouchLocation) +{ + //return ReturnValue; +} + +delegate bool OnDoubleTapDelegate(MobileInputZone Zone, Interaction.ETouchType EventType, Vector2D TouchLocation) +{ + //return ReturnValue; +} + +delegate bool OnProcessSlide(MobileInputZone Zone, Interaction.ETouchType EventType, int SlideValue, Vector2D ViewportSize) +{ + //return ReturnValue; +} + +delegate bool OnPreDrawZone(MobileInputZone Zone, Canvas Canvas) +{ + //return ReturnValue; +} + +delegate OnPostDrawZone(MobileInputZone Zone, Canvas Canvas) +{ + //return; +} + +function AddKismetEventHandler(SeqEvent_MobileZoneBase NewHandler) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x54 [Loop If] + if(I < MobileSeqEventHandlers.Length) + { + // End:0x46 + if(MobileSeqEventHandlers[I] == NewHandler) + { + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x5F: + + // End:0xBD [Loop If] + if(I < MobileSeqEventHandlers.Length) + { + // End:0xAF + if(MobileSeqEventHandlers[I] == none) + { + MobileSeqEventHandlers[I] = NewHandler; + return; + } + I++; + // [Loop Continue] + goto J0x5F; + } + MobileSeqEventHandlers.AddItem(NewHandler); + //return; +} + +defaultproperties +{ + VertMultiplier=1.0000000 + HorizMultiplier=1.0000000 + bApplyGlobalScaleToActiveSizes=true + bUseGentleTransitions=true + SizeX=100.0000000 + SizeY=100.0000000 + AuthoredGlobalScale=2.0000000 + ResetCenterAfterInactivityTime=3.0000000 + TapDistanceConstraint=5.0000000 + ActivateTime=0.6000000 + DeactivateTime=0.2000000 + RenderColor=(R=255,G=255,B=255,A=255) + InactiveAlpha=0.5000000 + OverrideUVs1=(U=0.0000000,V=0.0000000,UL=64.0000000,VL=64.0000000) + OverrideUVs2=(U=0.0000000,V=0.0000000,UL=64.0000000,VL=64.0000000) +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileMenuBar.uc b/exported/GameFramework/Classes/MobileMenuBar.uc new file mode 100755 index 00000000..797fc3fa --- /dev/null +++ b/exported/GameFramework/Classes/MobileMenuBar.uc @@ -0,0 +1,218 @@ +class MobileMenuBar extends MobileMenuObject; + +var(DefaultInit) bool bIsVertical; +var bool bDirty; +var(DefaultInit) int SelectedIndex; +var int FirstItem; +var array Items; + +function InitMenuObject(MobilePlayerInput PlayerInput, MobileMenuScene Scene, int ScreenWidth, int ScreenHeight, bool bIsFirstInitialization) +{ + super.InitMenuObject(PlayerInput, Scene, ScreenWidth, ScreenHeight, bIsFirstInitialization); + UpdateItemViewports(); + //return; +} + +function AddItem(MobileMenuBarItem Item, optional int Index = -1) +{ + // End:0x3A + if(Index < 0) + { + Index = Items.Length + (Index + 1); + } + Items.InsertItem(Index, Item); + bDirty = true; + //return; +} + +function int Num() +{ + return Items.Length; + //return ReturnValue; +} + +function MobileMenuBarItem GetSelected() +{ + // End:0x3D + if((SelectedIndex >= 0) && SelectedIndex < Items.Length) + { + return Items[SelectedIndex]; + } + return none; + //return ReturnValue; +} + +event bool OnTouch(Interaction.ETouchType EventType, float TouchX, float TouchY, MobileMenuObject ObjectOver, float DeltaTime) +{ + // End:0xA9 + if(bIsVertical) + { + TouchY -= Top; + SelectedIndex = FirstItem; + J0x34: + + // End:0xA6 [Loop If] + if(SelectedIndex < (Items.Length - 1)) + { + TouchY -= float(Items[SelectedIndex].Height); + // End:0x98 + if(TouchY <= float(0)) + { + // [Explicit Break] + goto J0xA6; + } + SelectedIndex++; + // [Loop Continue] + goto J0x34; + } + J0xA6: + + } + else + { + TouchX -= Left; + SelectedIndex = 0; + J0xC8: + + // End:0x13A [Loop If] + if(SelectedIndex < (Items.Length - 1)) + { + TouchX -= float(Items[SelectedIndex].Width); + // End:0x12C + if(TouchX <= float(0)) + { + // [Explicit Break] + goto J0x13A; + } + SelectedIndex++; + // [Loop Continue] + goto J0xC8; + } + } + J0x13A: + + return true; + //return ReturnValue; +} + +function RenderObject(Canvas Canvas, float DeltaTime) +{ + local float OrgX, OrgY; + local int CurIndex; + + // End:0x17 + if(bDirty) + { + UpdateItemViewports(); + } + OrgX = Canvas.OrgX; + OrgY = Canvas.OrgY; + Canvas.SetOrigin(Left, Top); + CurIndex = 0; + J0xA3: + + // End:0xEE [Loop If] + if(CurIndex < Items.Length) + { + RenderItem(Canvas, DeltaTime, CurIndex); + CurIndex++; + // [Loop Continue] + goto J0xA3; + } + Canvas.OrgX = OrgX; + Canvas.OrgY = OrgY; + //return; +} + +function RenderItem(Canvas Canvas, float DeltaTime, int ItemIndex) +{ + Items[ItemIndex].RenderItem(self, Canvas, DeltaTime); + //return; +} + +function SetFirstItem(int first) +{ + FirstItem = first; + bDirty = true; + //return; +} + +function UpdateItemViewports() +{ + local MobileMenuBarItem Item; + local float pos; + local int CurIndex; + + pos = 0.0000000; + Width = 0.0000000; + Height = 0.0000000; + // End:0x1E6 + if(bIsVertical) + { + CurIndex = FirstItem; + J0x4D: + + // End:0xF0 [Loop If] + if(CurIndex < Items.Length) + { + Item = Items[CurIndex]; + Width = FMax(Width, float(Item.Width)); + Height += float(Item.Height); + CurIndex++; + // [Loop Continue] + goto J0x4D; + } + CurIndex = FirstItem; + J0x103: + + // End:0x1E3 [Loop If] + if(CurIndex < Items.Length) + { + Item = Items[CurIndex]; + Item.VpPos.X = 0.0000000; + Item.VpPos.Y = pos; + pos += float(Item.Height); + CurIndex++; + // [Loop Continue] + goto J0x103; + } + } + else + { + CurIndex = FirstItem; + J0x1F9: + + // End:0x29C [Loop If] + if(CurIndex < Items.Length) + { + Item = Items[CurIndex]; + Width += float(Item.Width); + Height = FMax(Height, float(Item.Height)); + CurIndex++; + // [Loop Continue] + goto J0x1F9; + } + CurIndex = FirstItem; + J0x2AF: + + // End:0x38F [Loop If] + if(CurIndex < Items.Length) + { + Item = Items[CurIndex]; + Item.VpPos.X = pos; + Item.VpPos.Y = 0.0000000; + pos += float(Item.Width); + CurIndex++; + // [Loop Continue] + goto J0x2AF; + } + } + bDirty = false; + //return; +} + +defaultproperties +{ + bIsVertical=true + bIsActive=true +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileMenuBarItem.uc b/exported/GameFramework/Classes/MobileMenuBarItem.uc new file mode 100755 index 00000000..f6d8e82d --- /dev/null +++ b/exported/GameFramework/Classes/MobileMenuBarItem.uc @@ -0,0 +1,10 @@ +class MobileMenuBarItem extends Object; + +var int Width; +var int Height; +var Vector2D VpPos; + +function RenderItem(MobileMenuBar Bar, Canvas Canvas, float DeltaTime) +{ + //return; +} diff --git a/exported/GameFramework/Classes/MobileMenuButton.uc b/exported/GameFramework/Classes/MobileMenuButton.uc new file mode 100755 index 00000000..73b25e04 --- /dev/null +++ b/exported/GameFramework/Classes/MobileMenuButton.uc @@ -0,0 +1,73 @@ +class MobileMenuButton extends MobileMenuObject; + +var Texture2D Images[2]; +var UVCoords ImagesUVs[2]; +var LinearColor ImageColor; +var string Caption; +var LinearColor CaptionColor; + +function InitMenuObject(MobilePlayerInput PlayerInput, MobileMenuScene Scene, int ScreenWidth, int ScreenHeight, bool bIsFirstInitialization) +{ + local int I; + + super.InitMenuObject(PlayerInput, Scene, ScreenWidth, ScreenHeight, bIsFirstInitialization); + I = 0; + J0x43: + + // End:0x1A2 [Loop If] + if(I < 2) + { + // End:0x194 + if(!ImagesUVs[I].bCustomCoords && Images[I] != none) + { + ImagesUVs[I].U = 0.0000000; + ImagesUVs[I].V = 0.0000000; + ImagesUVs[I].UL = float(Images[I].SizeX); + ImagesUVs[I].VL = float(Images[I].SizeY); + } + I++; + // [Loop Continue] + goto J0x43; + } + //return; +} + +function RenderObject(Canvas Canvas, float DeltaTime) +{ + local int Idx; + local LinearColor DrawColor; + + Idx = ((bIsTouched || bIsHighlighted) ? 1 : 0); + SetCanvasPos(Canvas); + DrawColor = ImageColor; + DrawColor.A *= (Opacity * OwnerScene.Opacity); + Canvas.DrawTile(Images[Idx], Width, Height, ImagesUVs[Idx].U, ImagesUVs[Idx].V, ImagesUVs[Idx].UL, ImagesUVs[Idx].VL, DrawColor); + RenderCaption(Canvas); + //return; +} + +function RenderCaption(Canvas Canvas) +{ + local float UL, VL; + + // End:0x265 + if(Caption != "") + { + Canvas.Font = OwnerScene.SceneCaptionFont; + Canvas.TextSize(Caption, UL, VL); + SetCanvasPos(Canvas, (Width / float(2)) - (UL / float(2)), (Height / float(2)) - (VL / float(2))); + Canvas.DrawColor.R = byte(CaptionColor.R * 255.0000000); + Canvas.DrawColor.G = byte(CaptionColor.G * 255.0000000); + Canvas.DrawColor.B = byte(CaptionColor.B * 255.0000000); + Canvas.DrawColor.A = byte(CaptionColor.A * 255.0000000); + Canvas.DrawText(Caption); + } + //return; +} + +defaultproperties +{ + ImageColor=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000) + CaptionColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + bIsActive=true +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileMenuElement.uc b/exported/GameFramework/Classes/MobileMenuElement.uc new file mode 100755 index 00000000..baaa8ab3 --- /dev/null +++ b/exported/GameFramework/Classes/MobileMenuElement.uc @@ -0,0 +1,23 @@ +class MobileMenuElement extends Object; + +var Vector2D VpPos; +var Vector2D VpSize; +var bool bIsVisible; +var bool bIsActive; + +function bool OnTouch(Interaction.ETouchType EventType, float TouchX, float TouchY, float DeltaTime) +{ + return false; + //return ReturnValue; +} + +function RenderElement(MobileMenuObject Owner, Canvas Canvas, float DeltaTime, float Opacity) +{ + //return; +} + +defaultproperties +{ + bIsVisible=true + bIsActive=true +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileMenuGame.uc b/exported/GameFramework/Classes/MobileMenuGame.uc new file mode 100755 index 00000000..6587e73e --- /dev/null +++ b/exported/GameFramework/Classes/MobileMenuGame.uc @@ -0,0 +1,39 @@ +class MobileMenuGame extends GameInfo + config(Game) + hidecategories(Navigation,Movement,Collision); + +var Class InitialSceneToDisplayClass; + +event PostLogin(PlayerController NewPlayer) +{ + local MobilePlayerInput MI; + + super.PostLogin(NewPlayer); + // End:0x91 + if(InitialSceneToDisplayClass != none) + { + MI = MobilePlayerInput(NewPlayer.PlayerInput); + // End:0x8E + if(MI != none) + { + MI.OpenMenuScene(InitialSceneToDisplayClass); + } + } + //return; +} + +function StartMatch() +{ + //return; +} + +function RestartPlayer(Controller NewPlayer) +{ + //return; +} + +defaultproperties +{ + HUDType=Class'GameFramework.MobileHUD' + PlayerControllerClass=Class'GameFramework.MobileMenuPlayerController' +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileMenuImage.uc b/exported/GameFramework/Classes/MobileMenuImage.uc new file mode 100755 index 00000000..68110916 --- /dev/null +++ b/exported/GameFramework/Classes/MobileMenuImage.uc @@ -0,0 +1,76 @@ +class MobileMenuImage extends MobileMenuObject + native; + +enum MenuImageDrawStyle +{ + IDS_Normal, // 0 + IDS_Stretched, // 1 + IDS_Tile, // 2 + IDS_MAX // 3 +}; + +var Texture2D Image; +var MobileMenuImage.MenuImageDrawStyle ImageDrawStyle; +var UVCoords ImageUVs; +var LinearColor ImageColor; + +function RenderObject(Canvas Canvas, float DeltaTime) +{ + local float W, H, U, V, UL, VL; + + local LinearColor DrawColor; + + SetCanvasPos(Canvas); + // End:0xD0 + if(ImageUVs.bCustomCoords) + { + U = ImageUVs.U; + V = ImageUVs.V; + UL = ImageUVs.UL; + VL = ImageUVs.VL; + } + else + { + U = 0.0000000; + V = 0.0000000; + UL = float(Image.SizeX); + VL = float(Image.SizeY); + } + switch(ImageDrawStyle) + { + // End:0x1ED + case 0: + W = ((Width > UL) ? UL : Width); + H = ((Height > VL) ? VL : Height); + UL = W; + VL = H; + // End:0x272 + break; + // End:0x21B + case 1: + W = Width; + H = Height; + // End:0x272 + break; + // End:0x26F + case 2: + W = Width; + H = Height; + UL = W; + VL = H; + // End:0x272 + break; + // End:0xFFFF + default: + break; + } + DrawColor = ImageColor; + DrawColor.A *= (Opacity * OwnerScene.Opacity); + Canvas.DrawTile(Image, W, H, U, V, UL, VL, DrawColor); + //return; +} + +defaultproperties +{ + ImageColor=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000) +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileMenuInventory.uc b/exported/GameFramework/Classes/MobileMenuInventory.uc new file mode 100755 index 00000000..937988fb --- /dev/null +++ b/exported/GameFramework/Classes/MobileMenuInventory.uc @@ -0,0 +1,415 @@ +class MobileMenuInventory extends MobileMenuObject; + +struct RenderElementInfo +{ + var bool bIsDragItem; + var int Index; + + structdefaultproperties + { + bIsDragItem=false + Index=0 + } +}; + +struct DragElementInfo +{ + var bool bIsDragging; + var int IndexFrom; + var bool bIsOver; + var int IndexOver; + var bool bCanDropInOver; + var Vector2D OrigTouch; + var Vector2D CurTouch; + var Interaction.ETouchType EventType; + + structdefaultproperties + { + bIsDragging=false + IndexFrom=0 + bIsOver=false + IndexOver=0 + bCanDropInOver=false + OrigTouch=(X=0.0000000,Y=0.0000000) + CurTouch=(X=0.0000000,Y=0.0000000) + EventType=ETouchType.Touch_Began + } +}; + +var array Slots; +var array Items; +var float SideLeewayPercent; +var RenderElementInfo CurrentElement; +var DragElementInfo Drag; +var Vector2D ScaleSize; +var bool bRenderDragItem; +//var delegate __OnUpdateItemInSlot__Delegate; +//var delegate __DoCanPutItemInSlot__Delegate; +//var delegate __OnUpdateDrag__Delegate; + +delegate OnUpdateItemInSlot(MobileMenuInventory FromInv, int SlotIndex) +{ + //return; +} + +delegate bool DoCanPutItemInSlot(MobileMenuInventory FromInv, MobileMenuElement Item, MobileMenuElement ToSlot, int ToIdx, int FromIdx) +{ + //return ReturnValue; +} + +delegate OnUpdateDrag(const out DragElementInfo Before, const out DragElementInfo After) +{ + //return; +} + +function InitMenuObject(MobilePlayerInput PlayerInput, MobileMenuScene Scene, int ScreenWidth, int ScreenHeight, bool bIsFirstInitialization) +{ + local MobileMenuElement Element; + + ScaleSize.X = Width; + ScaleSize.Y = Height; + super.InitMenuObject(PlayerInput, Scene, ScreenWidth, ScreenHeight, bIsFirstInitialization); + ScaleSize.X = Width / ScaleSize.X; + ScaleSize.Y = Height / ScaleSize.Y; + // End:0x137 + foreach Slots(Element) + { + ScaleSlot(Element); + } + // End:0x163 + foreach Items(Element) + { + ScaleSlot(Element); + } + Items.Length = Slots.Length; + //return; +} + +function int AddSlot(MobileMenuElement Slot) +{ + // End:0x53 + if(Slot != none) + { + Slots.AddItem(Slot); + // End:0x45 + if(bHasBeenInitialized) + { + ScaleSlot(Slot); + } + return Slots.Length - 1; + } + return -1; + //return ReturnValue; +} + +private final function ScaleSlot(MobileMenuElement Slot) +{ + Slot.VpPos.X *= ScaleSize.X; + Slot.VpPos.Y *= ScaleSize.Y; + Slot.VpSize.X *= ScaleSize.X; + Slot.VpSize.Y *= ScaleSize.Y; + //return; +} + +function bool CanPutItemInSlot(MobileMenuElement Item, MobileMenuElement ToSlot, int ToIdx, optional int FromIdx = -1) +{ + // End:0x44 + if(((Item == none) || FromIdx == ToIdx) || ToIdx < 0) + { + return false; + } + // End:0x8C + if(__DoCanPutItemInSlot__Delegate != none) + { + return DoCanPutItemInSlot(self, Item, ToSlot, ToIdx, FromIdx); + } + return true; + //return ReturnValue; +} + +event bool OnTouch(Interaction.ETouchType EventType, float TouchX, float TouchY, MobileMenuObject ObjectOver, float DeltaTime) +{ + local DragElementInfo OrigDrag; + + OrigDrag = Drag; + Drag.EventType = EventType; + TouchX -= Left; + TouchY -= Top; + Drag.CurTouch.X = TouchX; + Drag.CurTouch.Y = TouchY; + switch(EventType) + { + // End:0x141 + case 0: + InitDragAt(int(TouchX), int(TouchY)); + // End:0x13F + if(__OnUpdateDrag__Delegate != none) + { + OnUpdateDrag(OrigDrag, Drag); + } + return true; + // End:0x146 + case 1: + // End:0x30A + case 2: + // End:0x190 + if(!Drag.bIsDragging) + { + InitDragAt(int(TouchX), int(TouchY)); + } + else + { + Drag.IndexOver = FindSlotIndexAt(TouchX, TouchY); + Drag.bIsOver = Drag.IndexOver >= 0; + } + Drag.bCanDropInOver = Drag.bIsOver && CanPutItemInSlot(Items[Drag.IndexFrom], Slots[Drag.IndexOver], Drag.IndexOver, Drag.IndexFrom); + // End:0x308 + if(__OnUpdateDrag__Delegate != none) + { + OnUpdateDrag(OrigDrag, Drag); + } + return true; + // End:0x4FA + case 3: + // End:0x4F7 + if(Drag.bIsDragging) + { + // End:0x3C7 + if(!Drag.bIsOver) + { + Drag.IndexOver = FindSlotIndexAt(TouchX, TouchY); + Drag.bIsOver = Drag.IndexOver >= 0; + } + Drag.bCanDropInOver = Drag.bIsOver && CanPutItemInSlot(Items[Drag.IndexFrom], Slots[Drag.IndexOver], Drag.IndexOver, Drag.IndexFrom); + // End:0x4F7 + if(Drag.bCanDropInOver) + { + SwapItemsInSlots(Drag.IndexOver, Drag.IndexFrom); + } + } + // End:0x505 + break; + // End:0x502 + case 4: + // End:0x505 + break; + // End:0xFFFF + default: + break; + } + Drag.bIsDragging = false; + // End:0x558 + if(__OnUpdateDrag__Delegate != none) + { + OnUpdateDrag(OrigDrag, Drag); + } + Drag.bCanDropInOver = false; + Drag.bIsOver = false; + return true; + //return ReturnValue; +} + +function bool SwapItemsInSlots(int Slot0, int Slot1) +{ + local MobileMenuElement Element0, Element1; + + Element0 = Items[Slot0]; + Element1 = Items[Slot1]; + // End:0x134 + if((Element0 == none) || CanPutItemInSlot(Element0, Slots[Slot1], Slot1, Slot0)) + { + // End:0x134 + if((Element1 == none) || CanPutItemInSlot(Element1, Slots[Slot0], Slot0, Slot1)) + { + Items[Slot0] = Element1; + Items[Slot1] = Element0; + UpdateItemInSlot(Slot0); + UpdateItemInSlot(Slot1); + return true; + } + } + return false; + //return ReturnValue; +} + +function MobileMenuElement AddItemToSlot(MobileMenuElement Element, int ToSlot) +{ + local MobileMenuElement PrevElement; + + // End:0x8A + if(CanPutItemInSlot(Element, Slots[ToSlot], ToSlot)) + { + PrevElement = Items[ToSlot]; + Items[ToSlot] = Element; + UpdateItemInSlot(ToSlot); + return PrevElement; + } + return none; + //return ReturnValue; +} + +protected function UpdateItemInSlot(int InSlot) +{ + local MobileMenuElement Element, Slot; + + Element = Items[InSlot]; + // End:0xC3 + if(Element != none) + { + Slot = Slots[InSlot]; + Element.VpPos = Slot.VpPos; + Element.VpSize = Slot.VpSize; + } + // End:0xEF + if(__OnUpdateItemInSlot__Delegate != none) + { + OnUpdateItemInSlot(self, InSlot); + } + //return; +} + +function InitDragAt(int TouchX, int TouchY) +{ + Drag.IndexFrom = FindSlotIndexAt(float(TouchX), float(TouchY)); + Drag.bIsDragging = (Drag.IndexFrom >= 0) && Items[Drag.IndexFrom] != none; + Drag.IndexOver = Drag.IndexFrom; + Drag.bIsOver = Drag.IndexFrom >= 0; + Drag.bCanDropInOver = false; + Drag.OrigTouch.X = float(TouchX); + Drag.OrigTouch.Y = float(TouchY); + //return; +} + +function int FindSlotIndexAt(float X, float Y) +{ + local MobileMenuElement Element; + local float ExtraX, ExtraY; + local int Idx; + + Idx = -1; + // End:0x289 + foreach Slots(Element) + { + Idx++; + // End:0x288 + if(Element.bIsActive) + { + ExtraX = Element.VpSize.X * SideLeewayPercent; + ExtraY = Element.VpSize.Y * SideLeewayPercent; + // End:0x12D + if(X < (Element.VpPos.X - ExtraX)) + { + continue; + // [Explicit Continue] + goto J0x289; + } + // End:0x17B + if(Y < (Element.VpPos.Y - ExtraY)) + { + continue; + // [Explicit Continue] + goto J0x289; + } + // End:0x1FC + if(X > ((Element.VpPos.X + Element.VpSize.X) + ExtraX)) + { + continue; + // [Explicit Continue] + goto J0x289; + } + // End:0x27D + if(Y > ((Element.VpPos.Y + Element.VpSize.Y) + ExtraY)) + { + continue; + // [Explicit Continue] + goto J0x289; + } + return Idx; + } + } + J0x289: + + return -1; + //return ReturnValue; +} + +function int GetIndexOfItem(MobileMenuElement Item) +{ + return Items.Find(Item); + //return ReturnValue; +} + +function RenderObject(Canvas Canvas, float DeltaTime) +{ + local MobileMenuElement Element; + local float OrgX, OrgY; + + OrgX = Canvas.OrgX; + OrgY = Canvas.OrgY; + CurrentElement.bIsDragItem = false; + CurrentElement.Index = 0; + // End:0x1B7 + foreach Slots(Element) + { + // End:0x198 + if(Element.bIsVisible) + { + Canvas.SetOrigin(Left + Element.VpPos.X, Top + Element.VpPos.Y); + Element.RenderElement(self, Canvas, DeltaTime, Opacity); + } + CurrentElement.Index++; + } + CurrentElement.Index = 0; + J0x1D6: + + // End:0x357 [Loop If] + if(CurrentElement.Index < Items.Length) + { + Element = Items[CurrentElement.Index]; + // End:0x336 + if((Element != none) && Element.bIsVisible) + { + Canvas.SetOrigin(Left + Element.VpPos.X, Top + Element.VpPos.Y); + Element.RenderElement(self, Canvas, DeltaTime, Opacity); + } + CurrentElement.Index++; + // [Loop Continue] + goto J0x1D6; + } + Canvas.OrgX = OrgX; + Canvas.OrgY = OrgY; + // End:0x3D0 + if(bRenderDragItem) + { + RenderDragItem(Canvas, DeltaTime); + } + //return; +} + +function RenderDragItem(Canvas Canvas, float DeltaTime) +{ + local MobileMenuElement Element; + local float OrgX, OrgY; + + // End:0x216 + if(Drag.bIsDragging) + { + OrgX = Canvas.OrgX; + OrgY = Canvas.OrgY; + CurrentElement.bIsDragItem = true; + CurrentElement.Index = Drag.IndexFrom; + Element = Items[Drag.IndexFrom]; + Canvas.SetOrigin(Left + Drag.CurTouch.X, Top + Drag.CurTouch.Y); + Element.RenderElement(self, Canvas, DeltaTime, Opacity); + Canvas.OrgX = OrgX; + Canvas.OrgY = OrgY; + } + //return; +} + +defaultproperties +{ + SideLeewayPercent=0.1000000 + bRenderDragItem=true + bIsActive=true +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileMenuLabel.uc b/exported/GameFramework/Classes/MobileMenuLabel.uc new file mode 100755 index 00000000..f7fc40e0 --- /dev/null +++ b/exported/GameFramework/Classes/MobileMenuLabel.uc @@ -0,0 +1,41 @@ +class MobileMenuLabel extends MobileMenuObject; + +var string Caption; +var Font TextFont; +var Color TextColor; +var Color TouchedColor; +var float TextXScale; +var float TextYScale; +var bool bAutoSize; + +function RenderObject(Canvas Canvas, float DeltaTime) +{ + local float CX, CY, TX, TY; + + CX = Canvas.ClipX; + CY = Canvas.ClipY; + Canvas.Font = TextFont; + // End:0xFD + if(bAutoSize) + { + Canvas.TextSize(Caption, TX, TY); + Width = TX * TextXScale; + Height = TY * TextYScale; + } + Canvas.DrawColor = ((bIsTouched) ? TouchedColor : TextColor); + Canvas.DrawColor.A *= (Opacity * OwnerScene.Opacity); + SetCanvasPos(Canvas); + Canvas.ClipX = Canvas.CurX + Width; + Canvas.ClipY = Canvas.CurY + Height; + Canvas.DrawText(Caption,, TextXScale, TextYScale); + Canvas.ClipX = CX; + Canvas.ClipY = CY; + //return; +} + +defaultproperties +{ + TextXScale=1.0000000 + TextYScale=1.0000000 + bAutoSize=true +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileMenuList.uc b/exported/GameFramework/Classes/MobileMenuList.uc new file mode 100755 index 00000000..8fd7de99 --- /dev/null +++ b/exported/GameFramework/Classes/MobileMenuList.uc @@ -0,0 +1,878 @@ +class MobileMenuList extends MobileMenuObject; + +const NumInDragHistory = 4; + +struct SelectedMenuItem +{ + var int Index; + var float Offset; + var bool bEndOfList; + + structdefaultproperties + { + Index=0 + Offset=0.0000000 + bEndOfList=false + } +}; + +struct DragHistoryData +{ + var float TouchTime; + var float TouchCoord; + + structdefaultproperties + { + TouchTime=0.0000000 + TouchCoord=0.0000000 + } +}; + +struct MenuListDragInfo +{ + var bool bIsDragging; + var MobileMenuListItem TouchedItem; + var SelectedMenuItem OrigSelectedItem; + var Vector2D StartTouch; + var float TouchTime; + var float ScrollAmount; + var float AbsScrollAmount; + var DragHistoryData UpdateHistory[4]; + var int NumUpdates; + var bool bHasSelectedChanged; + + structdefaultproperties + { + bIsDragging=false + TouchedItem=none + OrigSelectedItem=(Index=0,Offset=0.0000000,bEndOfList=false) + StartTouch=(X=0.0000000,Y=0.0000000) + TouchTime=0.0000000 + ScrollAmount=0.0000000 + AbsScrollAmount=0.0000000 + UpdateHistory[0]=(TouchTime=0.0000000,TouchCoord=0.0000000) + UpdateHistory[1]=(TouchTime=0.0000000,TouchCoord=0.0000000) + UpdateHistory[2]=(TouchTime=0.0000000,TouchCoord=0.0000000) + UpdateHistory[3]=(TouchTime=0.0000000,TouchCoord=0.0000000) + NumUpdates=0 + bHasSelectedChanged=false + } +}; + +struct MenuListMovementInfo +{ + var bool bIsMoving; + var SelectedMenuItem OrigSelectedItem; + var float FullMovement; + var float TotalTime; + var float CurrentTime; + + structdefaultproperties + { + bIsMoving=false + OrigSelectedItem=(Index=0,Offset=0.0000000,bEndOfList=false) + FullMovement=0.0000000 + TotalTime=0.0000000 + CurrentTime=0.0000000 + } +}; + +var(DefaultInit) bool bIsVerticalList; +var(DefaultInit) bool bDisableScrolling; +var(DefaultInit) bool bForceSelectedToLineup; +var bool bTapToScrollToItem; +var bool bLoops; +var(DefaultInit) float SelectedOffset; +var array Items; +var SelectedMenuItem SelectedItem; +var MenuListDragInfo Drag; +var MenuListMovementInfo Movement; +var float Deacceleration; +var float EaseOutExp; +var IntPoint ScreenSize; +var int FirstVisible; +var int LastVisible; +var int NumShowEndOfList; +var float EndOfListSupression; + +function InitMenuObject(MobilePlayerInput PlayerInput, MobileMenuScene Scene, int ScreenWidth, int ScreenHeight, bool bIsFirstInitialization) +{ + ScreenSize.X = ScreenWidth; + ScreenSize.Y = ScreenHeight; + super.InitMenuObject(PlayerInput, Scene, ScreenWidth, ScreenHeight, bIsFirstInitialization); + SelectedOffset *= ((bIsVerticalList) ? Height : Width); + //return; +} + +function AddItem(MobileMenuListItem Item, optional int Index = -1) +{ + // End:0x3A + if(Index < 0) + { + Index = Items.Length + (Index + 1); + } + Items.InsertItem(Index, Item); + //return; +} + +function int Num() +{ + return Items.Length; + //return ReturnValue; +} + +function MobileMenuListItem GetSelected() +{ + local MobileMenuListItem Item; + + // End:0xC9 + if((SelectedItem.Index >= 0) && SelectedItem.Index < Items.Length) + { + Item = Items[SelectedItem.Index]; + // End:0xBF + if((Item != none) && !Item.bIsVisible) + { + Item = none; + } + return Item; + } + return none; + //return ReturnValue; +} + +function float GetAmountSelected(MobileMenuListItem Item) +{ + local MobileMenuListItem Selected; + local float Half; + + Selected = GetSelected(); + // End:0xC6 + if(Item == Selected) + { + Half = ((bIsVerticalList) ? Item.Height : Item.Width) * 0.5000000; + return FMax(0.0001000, FMin(1.0000000, 1.0000000 - (Abs(SelectedItem.Offset) / Half))); + } + return 0.0000000; + //return ReturnValue; +} + +function int GetVisibleIndexOfSelected() +{ + local MobileMenuListItem Item, Selected; + local int Index; + + Selected = GetSelected(); + Index = 0; + // End:0x86 + foreach Items(Item) + { + // End:0x58 + if(Item == Selected) + { + return Index; + } + // End:0x85 + if(Item.bIsVisible) + { + Index++; + } + } + return -1; + //return ReturnValue; +} + +function int SetSelectedToVisibleIndex(int VisibleIndex) +{ + local int Index; + + Index = 0; + J0x0B: + + // End:0xA7 [Loop If] + if(Index < Items.Length) + { + // End:0x99 + if(Items[Index].bIsVisible) + { + // End:0x8E + if(VisibleIndex <= 0) + { + SelectedItem.Index = Index; + return Index; + } + VisibleIndex--; + } + Index++; + // [Loop Continue] + goto J0x0B; + } + SelectedItem.Index = -1; + return -1; + //return ReturnValue; +} + +function int GetNumVisible() +{ + local int Index, Count; + + Index = 0; + J0x0B: + + // End:0x68 [Loop If] + if(Index < Items.Length) + { + // End:0x5A + if(Items[Index].bIsVisible) + { + Count++; + } + Index++; + // [Loop Continue] + goto J0x0B; + } + return Count; + //return ReturnValue; +} + +function bool SetSelectedItem(int ItemIndex, optional bool bForceAll = false) +{ + // End:0xDB + if((ItemIndex >= 0) && ItemIndex < Items.Length) + { + // End:0xDB + if(Items[ItemIndex].bIsVisible) + { + SelectedItem.Index = ItemIndex; + // End:0xD9 + if(bForceAll) + { + Drag.OrigSelectedItem = SelectedItem; + Movement.OrigSelectedItem = SelectedItem; + } + return true; + } + } + return false; + //return ReturnValue; +} + +event bool OnTouch(Interaction.ETouchType EventType, float TouchX, float TouchY, MobileMenuObject ObjectOver, float DeltaTime) +{ + local float Velocity, SwipeDelta, FinalScrollDist, CalcScrollDist, SwipeTime; + + local MobileMenuListItem Selected; + local int Index, Index0; + local bool bUdpateTouchItem; + + TouchX -= Left; + TouchY -= Top; + Drag.TouchTime += DeltaTime; + // End:0x318 + if(int(EventType) == int(0)) + { + Movement.bIsMoving = false; + Drag.bIsDragging = true; + Drag.OrigSelectedItem = SelectedItem; + Drag.StartTouch.X = TouchX; + Drag.StartTouch.Y = TouchY; + Drag.ScrollAmount = 0.0000000; + Drag.AbsScrollAmount = 0.0000000; + Drag.bHasSelectedChanged = false; + Drag.TouchTime = 0.0000000; + Drag.NumUpdates = 0; + Index = 0; + J0x1E7: + + // End:0x244 [Loop If] + if(Index < 4) + { + Drag.UpdateHistory[Index].TouchTime = 0.0000000; + Index++; + // [Loop Continue] + goto J0x1E7; + } + Drag.TouchedItem = GetItemClickPosition(TouchX, TouchY); + // End:0x315 + if(Drag.TouchedItem != none) + { + Drag.bIsDragging = !Drag.TouchedItem.OnTouch(EventType, TouchX, TouchY, DeltaTime); + } + } + else + { + // End:0x349 + if(!Drag.bIsDragging) + { + bUdpateTouchItem = true; + } + else + { + // End:0x8FA + if((int(EventType) == int(3)) || int(EventType) == int(4)) + { + bUdpateTouchItem = true; + Drag.bIsDragging = false; + Movement.bIsMoving = true; + Movement.CurrentTime = 0.0000000; + Movement.OrigSelectedItem = SelectedItem; + // End:0x589 + if((!Drag.bHasSelectedChanged && Drag.StartTouch.X == TouchX) && Drag.StartTouch.Y == TouchY) + { + Selected = GetSelected(); + // End:0x586 + if((Drag.TouchTime > 0.0500000) && bTapToScrollToItem) + { + // End:0x542 + if(bIsVerticalList) + { + FinalScrollDist = TouchY - (SelectedOffset + (Selected.Height / float(2))); + } + else + { + FinalScrollDist = TouchX - (SelectedOffset + (Selected.Width / float(2))); + } + } + } + else + { + // End:0x780 + if(Drag.NumUpdates >= 2) + { + Index = (Drag.NumUpdates - 1) % 4; + Index0 = (Drag.NumUpdates - Min(Drag.NumUpdates, 4)) % 4; + SwipeDelta = -Drag.UpdateHistory[Index].TouchCoord - Drag.UpdateHistory[Index0].TouchCoord; + SwipeTime = Drag.UpdateHistory[Index].TouchTime - Drag.UpdateHistory[Index0].TouchTime; + Velocity = ((SwipeTime > float(0)) ? SwipeDelta / SwipeTime : 0.0000000); + FinalScrollDist = Square(Velocity) / (2.0000000 * Deacceleration); + } + } + // End:0x79C + if(bDisableScrolling) + { + FinalScrollDist = 0.0000000; + } + // End:0x7D9 + if(SwipeDelta < float(0)) + { + CalcScrollDist = CalculateSelectedItem(SelectedItem, -FinalScrollDist, true); + } + else + { + CalcScrollDist = CalculateSelectedItem(SelectedItem, FinalScrollDist, true); + } + // End:0x86F + if(!bForceSelectedToLineup && !SelectedItem.bEndOfList) + { + // End:0x85C + if(SwipeDelta < float(0)) + { + CalcScrollDist = -FinalScrollDist; + } + else + { + CalcScrollDist = FinalScrollDist; + } + } + SelectedItem = Movement.OrigSelectedItem; + Movement.TotalTime = Sqrt(Abs(CalcScrollDist) / (2.0000000 * Deacceleration)); + Movement.FullMovement = CalcScrollDist; + } + else + { + Drag.UpdateHistory[Drag.NumUpdates % 4].TouchTime = Drag.TouchTime; + Drag.UpdateHistory[Drag.NumUpdates % 4].TouchCoord = ((bIsVerticalList) ? TouchY : TouchX); + Drag.NumUpdates++; + // End:0xA66 + if(Drag.OrigSelectedItem.Index != SelectedItem.Index) + { + Drag.bHasSelectedChanged = true; + } + Drag.ScrollAmount = ((bIsVerticalList) ? Drag.StartTouch.Y - TouchY : Drag.StartTouch.X - TouchX); + Index = (Drag.NumUpdates - 1) % 4; + Index0 = (Drag.NumUpdates - Min(Drag.NumUpdates, 4)) % 4; + SwipeDelta = Abs(Drag.UpdateHistory[Index].TouchCoord - Drag.UpdateHistory[Index0].TouchCoord); + // End:0xC3D + if(bDisableScrolling) + { + Drag.ScrollAmount = 0.0000000; + SwipeDelta = 0.0000000; + } + Drag.AbsScrollAmount += SwipeDelta; + } + } + } + // End:0xD77 + if(bUdpateTouchItem) + { + // End:0xD77 + if(Drag.TouchedItem != none) + { + // End:0xD29 + if(Drag.TouchedItem == (GetItemClickPosition(TouchX, TouchY))) + { + Drag.TouchedItem.OnTouch(EventType, TouchX, TouchY, DeltaTime); + } + else + { + Drag.TouchedItem.OnTouch(EventType, -1.0000000, -1.0000000, DeltaTime); + } + } + } + return true; + //return ReturnValue; +} + +function MobileMenuListItem GetItemClickPosition(out float MouseX, out float MouseY) +{ + local int ScrollAmount, CurIndex, ScrollSize; + local MobileMenuListItem Item; + + ScrollAmount = int(((bIsVerticalList) ? MouseY : MouseX)); + ScrollAmount -= int(SelectedOffset); + CurIndex = int(FMax(0.0000000, float(SelectedItem.Index))); + // End:0x8E + if(CurIndex >= Items.Length) + { + return none; + } + Item = Items[CurIndex]; + ScrollSize = ItemScrollSize(Item); + J0xC8: + + // End:0x191 [Loop If] + if(ScrollAmount < 0) + { + // End:0xF4 + if(CurIndex > 0) + { + CurIndex--; + } + else + { + // End:0x11B + if(bLoops) + { + CurIndex = Items.Length - 1; + } + else + { + // [Explicit Break] + goto J0x191; + } + } + Item = Items[CurIndex]; + // End:0x18E + if(Item.bIsVisible) + { + ScrollSize = ItemScrollSize(Item); + ScrollAmount += ScrollSize; + } + // [Loop Continue] + goto J0xC8; + } + J0x191: + + // End:0x262 [Loop If] + if(ScrollAmount > ScrollSize) + { + // End:0x1D1 + if(CurIndex < (Items.Length - 1)) + { + CurIndex++; + } + else + { + // End:0x1EC + if(bLoops) + { + CurIndex = 0; + } + else + { + // [Explicit Break] + goto J0x262; + } + } + Item = Items[CurIndex]; + // End:0x25F + if(Item.bIsVisible) + { + ScrollAmount -= ScrollSize; + ScrollSize = ItemScrollSize(Item); + } + // [Loop Continue] + goto J0x191; + } + J0x262: + + // End:0x2D1 + if(bIsVerticalList) + { + MouseY = float(ScrollAmount); + // End:0x2CE + if((ScrollAmount < 0) || float(ScrollAmount) > Item.Height) + { + Item = none; + } + } + else + { + MouseX = float(ScrollAmount); + // End:0x330 + if((ScrollAmount < 0) || float(ScrollAmount) > Item.Width) + { + Item = none; + } + } + return Item; + //return ReturnValue; +} + +function float CalculateSelectedItem(out SelectedMenuItem Selected, float ScrollAmount, bool bForceZeroAdjustment) +{ + local float AdjustValue, ScrollSize, Scrolled, HalfScroll; + local int CurIndex; + local MobileMenuListItem Item; + + AdjustValue = Selected.Offset; + Scrolled = AdjustValue; + ScrollAmount -= AdjustValue; + CurIndex = int(FMax(0.0000000, float(Selected.Index))); + // End:0x9C + if(CurIndex >= Items.Length) + { + return 0.0000000; + } + Item = Items[CurIndex]; + ScrollSize = float(ItemScrollSize(Item)); + Selected.bEndOfList = false; + J0xF7: + + // End:0x231 [Loop If] + if(ScrollAmount < float(0)) + { + // End:0x125 + if(CurIndex > 0) + { + CurIndex--; + } + else + { + // End:0x14C + if(bLoops) + { + CurIndex = Items.Length - 1; + } + else + { + ScrollAmount *= EndOfListSupression; + Selected.bEndOfList = true; + // [Explicit Break] + goto J0x231; + } + } + Item = Items[CurIndex]; + // End:0x22E + if(Item.bIsVisible) + { + ScrollSize = float(ItemScrollSize(Item)); + ScrollAmount += ScrollSize; + Scrolled -= ScrollSize; + Selected.Index = CurIndex; + } + // [Loop Continue] + goto J0xF7; + } + J0x231: + + HalfScroll = ScrollSize / float(2); + J0x24A: + + // End:0x3BD [Loop If] + if(ScrollAmount > HalfScroll) + { + // End:0x295 + if(CurIndex < (Items.Length - (NumShowEndOfList + 1))) + { + CurIndex++; + } + else + { + // End:0x2B0 + if(bLoops) + { + CurIndex = 0; + } + else + { + ScrollAmount -= HalfScroll; + ScrollAmount *= EndOfListSupression; + ScrollAmount += HalfScroll; + Selected.bEndOfList = true; + // [Explicit Break] + goto J0x3BD; + } + } + Item = Items[CurIndex]; + // End:0x3BA + if(Item.bIsVisible) + { + ScrollAmount -= ScrollSize; + Scrolled += ScrollSize; + Selected.Index = CurIndex; + ScrollSize = float(ItemScrollSize(Item)); + } + // [Loop Continue] + goto J0x24A; + } + J0x3BD: + + // End:0x3EF + if(bForceZeroAdjustment) + { + Selected.Offset = 0.0000000; + } + else + { + Selected.Offset = -ScrollAmount; + Scrolled -= ScrollAmount; + } + return Scrolled; + //return ReturnValue; +} + +function UpdateScroll(float DeltaTime) +{ + local float ScrollAmount; + + // End:0x6F + if(Drag.bIsDragging) + { + SelectedItem = Drag.OrigSelectedItem; + ScrollAmount = Drag.ScrollAmount; + } + else + { + // End:0x1DC + if(Movement.bIsMoving) + { + SelectedItem = Movement.OrigSelectedItem; + Movement.CurrentTime += DeltaTime; + // End:0x194 + if(Movement.CurrentTime < Movement.TotalTime) + { + ScrollAmount = FInterpEaseOut(0.0000000, Movement.FullMovement, Movement.CurrentTime / Movement.TotalTime, EaseOutExp); + } + else + { + ScrollAmount = Movement.FullMovement; + Movement.bIsMoving = false; + } + } + else + { + return; + } + } + CalculateSelectedItem(SelectedItem, ScrollAmount, false); + //return; +} + +function RenderObject(Canvas Canvas, float DeltaTime) +{ + local MobileMenuListItem Item; + local float OrgX, OrgY; + local int VpEnd, CurIndex, first, Last, SelectedIdx, NumItems, + RealIndex; + + local Vector2D VpPos, VpSize; + + NumItems = Items.Length; + // End:0x25 + if(NumItems == 0) + { + return; + } + UpdateScroll(DeltaTime); + VpSize.X = Width; + VpSize.Y = Height; + SelectedIdx = int(FMax(0.0000000, float(SelectedItem.Index))); + // End:0xD6 + if(bLoops) + { + SelectedIdx += NumItems; + } + first = SelectedIdx; + // End:0x25D + if(bIsVerticalList) + { + VpPos.X = Left; + VpPos.Y = (Top + SelectedOffset) + SelectedItem.Offset; + VpEnd = int(Top + Height); + J0x18B: + + // End:0x25A [Loop If] + if((first > 0) && VpPos.Y > Top) + { + first--; + Item = Items[first % NumItems]; + // End:0x257 + if(Item.bIsVisible) + { + VpPos.Y -= Item.Height; + } + // [Loop Continue] + goto J0x18B; + } + } + else + { + VpPos.X = (Left + SelectedOffset) + SelectedItem.Offset; + VpPos.Y = Top; + VpEnd = int(Left + Width); + J0x2F2: + + // End:0x3C1 [Loop If] + if((first > 0) && VpPos.X > Left) + { + first--; + Item = Items[first % NumItems]; + // End:0x3BE + if(Item.bIsVisible) + { + VpPos.X -= Item.Width; + } + // [Loop Continue] + goto J0x2F2; + } + } + J0x3C1: + + // End:0x42B [Loop If] + if((first + 1) < NumItems) + { + Item = Items[first]; + // End:0x41D + if(Item.bIsVisible) + { + // [Explicit Break] + goto J0x42B; + } + first++; + // [Loop Continue] + goto J0x3C1; + } + J0x42B: + + Last = first; + CurIndex = 0; + J0x449: + + // End:0x729 [Loop If] + if(CurIndex < NumItems) + { + RealIndex = ((bLoops) ? (first + CurIndex) % NumItems : first + CurIndex); + // End:0x4C6 + if(RealIndex >= NumItems) + { + // [Explicit Break] + goto J0x729; + } + Item = Items[RealIndex]; + // End:0x71B + if(Item.bIsVisible) + { + Last = first + CurIndex; + // End:0x627 + if(bIsVerticalList) + { + VpSize.Y = Item.Height; + Item.VpPos = VpPos; + Item.VpSize = VpSize; + VpPos.Y += VpSize.Y; + // End:0x624 + if(VpPos.Y >= float(VpEnd)) + { + // [Explicit Break] + goto J0x729; + } + } + else + { + VpSize.X = Item.Width; + Item.VpPos = VpPos; + Item.VpSize = VpSize; + VpPos.X += VpSize.X; + // End:0x71B + if(VpPos.X >= float(VpEnd)) + { + // [Explicit Break] + goto J0x729; + } + } + } + CurIndex++; + // [Loop Continue] + goto J0x449; + } + J0x729: + + OrgX = Canvas.OrgX; + OrgY = Canvas.OrgY; + CurIndex = first; + J0x78C: + + // End:0x8AE [Loop If] + if(CurIndex < SelectedIdx) + { + Item = Items[CurIndex % NumItems]; + // End:0x8A0 + if(Item.bIsVisible) + { + Canvas.SetOrigin(Item.VpPos.X, Item.VpPos.Y); + Item.RenderItem(self, Canvas, DeltaTime); + } + CurIndex++; + // [Loop Continue] + goto J0x78C; + } + CurIndex = Last; + J0x8C1: + + // End:0x9E3 [Loop If] + if(CurIndex >= SelectedIdx) + { + Item = Items[CurIndex % NumItems]; + // End:0x9D5 + if(Item.bIsVisible) + { + Canvas.SetOrigin(Item.VpPos.X, Item.VpPos.Y); + Item.RenderItem(self, Canvas, DeltaTime); + } + CurIndex--; + // [Loop Continue] + goto J0x8C1; + } + FirstVisible = first; + LastVisible = Last; + Canvas.OrgX = OrgX; + Canvas.OrgY = OrgY; + //return; +} + +function int ItemScrollSize(MobileMenuListItem Item) +{ + return int(((bIsVerticalList) ? Item.Height : Item.Width)); + //return ReturnValue; +} + +defaultproperties +{ + bIsVerticalList=true + bForceSelectedToLineup=true + bTapToScrollToItem=true + Deacceleration=1500.0000000 + EaseOutExp=4.0000000 + EndOfListSupression=0.4000000 + bIsActive=true +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileMenuListItem.uc b/exported/GameFramework/Classes/MobileMenuListItem.uc new file mode 100755 index 00000000..f969a541 --- /dev/null +++ b/exported/GameFramework/Classes/MobileMenuListItem.uc @@ -0,0 +1,9 @@ +class MobileMenuListItem extends MobileMenuElement; + +var float Width; +var float Height; + +function RenderItem(MobileMenuList List, Canvas Canvas, float DeltaTime) +{ + //return; +} diff --git a/exported/GameFramework/Classes/MobileMenuObject.uc b/exported/GameFramework/Classes/MobileMenuObject.uc new file mode 100755 index 00000000..395fa4d0 --- /dev/null +++ b/exported/GameFramework/Classes/MobileMenuObject.uc @@ -0,0 +1,211 @@ +class MobileMenuObject extends Object + native; + +struct native UVCoords +{ + var() bool bCustomCoords; + var() float U; + var() float V; + var() float UL; + var() float VL; + + structdefaultproperties + { + bCustomCoords=false + U=0.0000000 + V=0.0000000 + UL=0.0000000 + VL=0.0000000 + } +}; + +var transient bool bHasBeenInitialized; +var bool bRelativeLeft; +var bool bRelativeTop; +var bool bRelativeWidth; +var bool bRelativeHeight; +var bool bApplyGlobalScaleLeft; +var bool bApplyGlobalScaleTop; +var bool bApplyGlobalScaleWidth; +var bool bApplyGlobalScaleHeight; +var bool bHeightRelativeToWidth; +var bool bXOffsetIsActual; +var bool bYOffsetIsActual; +var bool bIsActive; +var bool bIsHidden; +var bool bIsTouched; +var bool bIsHighlighted; +var bool bTellSceneBeforeRendering; +var float Left; +var float Top; +var float Width; +var float Height; +var float InitialLeft; +var float InitialTop; +var float InitialWidth; +var float InitialHeight; +var(Bounds) float AuthoredGlobalScale; +var float TopLeeway; +var float BottomLeeway; +var float LeftLeeway; +var float RightLeeway; +var float XOffset; +var float YOffset; +var string Tag; +var MobilePlayerInput InputOwner; +var float Opacity; +var MobileMenuScene OwnerScene; +var string RelativeToTag; +var MobileMenuObject RelativeTo; + +event bool OnTouch(Interaction.ETouchType EventType, float TouchX, float TouchY, MobileMenuObject ObjectOver, float DeltaTime) +{ + return false; + //return ReturnValue; +} + +event GetRealPosition(out float PosX, out float PosY) +{ + // End:0x78 + if(RelativeTo == none) + { + PosX = OwnerScene.Left + Left; + PosY = OwnerScene.Top + Top; + } + else + { + RelativeTo.GetRealPosition(PosX, PosY); + PosX += Left; + PosY += Top; + } + //return; +} + +function InitMenuObject(MobilePlayerInput PlayerInput, MobileMenuScene Scene, int ScreenWidth, int ScreenHeight, bool bIsFirstInitialization) +{ + local int X, Y, W, H, oX, oY, + RelativeIdx; + + InputOwner = PlayerInput; + OwnerScene = Scene; + // End:0xFA + if(Len(RelativeToTag) > 0) + { + RelativeIdx = int(RelativeToTag); + // End:0x9A + if(string(RelativeIdx) != RelativeToTag) + { + RelativeTo = Scene.FindMenuObject(RelativeToTag); + } + else + { + RelativeIdx += Scene.MenuObjects.Find(self); + RelativeTo = Scene.MenuObjects[RelativeIdx]; + } + } + // End:0x647 + if(!bHasBeenInitialized || !bIsFirstInitialization) + { + // End:0x176 + if(bIsFirstInitialization) + { + InitialTop = Top; + InitialLeft = Left; + InitialWidth = Width; + InitialHeight = Height; + } + else + { + Top = InitialTop; + Left = InitialLeft; + Width = InitialWidth; + Height = InitialHeight; + } + X = int(((bRelativeLeft) ? Scene.Width * Left : Left)); + Y = int(((bRelativeTop) ? Scene.Height * Top : Top)); + W = int(((bRelativeWidth) ? Scene.Width * Width : Width)); + // End:0x2DB + if(bHeightRelativeToWidth) + { + H = int(float(W) * Height); + } + else + { + H = int(((bRelativeHeight) ? Scene.Height * Height : Height)); + } + // End:0x36A + if(bApplyGlobalScaleLeft) + { + X *= (Scene.GetGlobalScaleX() / AuthoredGlobalScale); + } + // End:0x3AC + if(bApplyGlobalScaleTop) + { + Y *= (Scene.GetGlobalScaleY() / AuthoredGlobalScale); + } + // End:0x3EE + if(bApplyGlobalScaleWidth) + { + W *= (Scene.GetGlobalScaleX() / AuthoredGlobalScale); + } + // End:0x430 + if(bApplyGlobalScaleHeight) + { + H *= (Scene.GetGlobalScaleY() / AuthoredGlobalScale); + } + // End:0x557 + if(RelativeTo == none) + { + // End:0x485 + if(X < 0) + { + X = int(Scene.Width + float(X)); + } + // End:0x4CB + if(Y < 0) + { + Y = int(Scene.Height + float(Y)); + } + // End:0x511 + if(W < 0) + { + W = int(Scene.Width + float(W)); + } + // End:0x557 + if(H < 0) + { + H = int(Scene.Height + float(H)); + } + } + Left = float(X); + Top = float(Y); + Width = float(W); + Height = float(H); + oX = int(((bXOffsetIsActual) ? XOffset : Width * XOffset)); + oY = int(((bYOffsetIsActual) ? YOffset : Height * YOffset)); + Left -= float(oX); + Top -= float(oY); + } + bHasBeenInitialized = true; + //return; +} + +function SetCanvasPos(Canvas Canvas, optional float OffsetX = 0.0000000, optional float OffsetY = 0.0000000) +{ + local float PosX, PosY; + + GetRealPosition(PosX, PosY); + Canvas.SetPos(PosX + OffsetX, PosY + OffsetY); + //return; +} + +function RenderObject(Canvas Canvas, float DeltaTime) +{ + //return; +} + +defaultproperties +{ + AuthoredGlobalScale=2.0000000 + Opacity=1.0000000 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileMenuObjectProxy.uc b/exported/GameFramework/Classes/MobileMenuObjectProxy.uc new file mode 100755 index 00000000..999b828b --- /dev/null +++ b/exported/GameFramework/Classes/MobileMenuObjectProxy.uc @@ -0,0 +1,35 @@ +class MobileMenuObjectProxy extends MobileMenuObject; + +//var delegate __OnTouchEvent__Delegate; +//var delegate __OnRenderObject__Delegate; + +delegate bool OnTouchEvent(MobileMenuObjectProxy Proxy, Interaction.ETouchType EventType, float TouchX, float TouchY, MobileMenuObject ObjectOver, float DeltaTime) +{ + //return ReturnValue; +} + +delegate OnRenderObject(MobileMenuObjectProxy Proxy, Canvas Canvas, float DeltaTime) +{ + //return; +} + +event bool OnTouch(Interaction.ETouchType EventType, float TouchX, float TouchY, MobileMenuObject ObjectOver, float DeltaTime) +{ + // End:0x51 + if(__OnTouchEvent__Delegate != none) + { + return OnTouchEvent(self, EventType, TouchX, TouchY, ObjectOver, DeltaTime); + } + return false; + //return ReturnValue; +} + +function RenderObject(Canvas Canvas, float DeltaTime) +{ + // End:0x35 + if(__OnRenderObject__Delegate != none) + { + OnRenderObject(self, Canvas, DeltaTime); + } + //return; +} diff --git a/exported/GameFramework/Classes/MobileMenuPlayerController.uc b/exported/GameFramework/Classes/MobileMenuPlayerController.uc new file mode 100755 index 00000000..a3034943 --- /dev/null +++ b/exported/GameFramework/Classes/MobileMenuPlayerController.uc @@ -0,0 +1,18 @@ +class MobileMenuPlayerController extends GamePlayerController + config(Game) + hidecategories(Navigation); + +defaultproperties +{ + InputClass=Class'GameFramework.MobilePlayerInput' + // Reference: CylinderComponent'GameFramework.Default__MobileMenuPlayerController.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'GameFramework.Default__GamePlayerController.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobileMenuScene.uc b/exported/GameFramework/Classes/MobileMenuScene.uc new file mode 100755 index 00000000..c88130a2 --- /dev/null +++ b/exported/GameFramework/Classes/MobileMenuScene.uc @@ -0,0 +1,201 @@ +class MobileMenuScene extends Object + native; + +var(UI) string MenuName; +var(UI) export editinline array MenuObjects; +var(UI) Font SceneCaptionFont; +var(UI) MobilePlayerInput InputOwner; +var(UI) bool bSceneDoesNotRequireInput; +var(Options) bool bRelativeLeft; +var(Options) bool bRelativeTop; +var(Options) bool bRelativeWidth; +var(Options) bool bRelativeHeight; +var(Options) bool bApplyGlobalScaleLeft; +var(Options) bool bApplyGlobalScaleTop; +var(Options) bool bApplyGlobalScaleWidth; +var(Options) bool bApplyGlobalScaleHeight; +var(UI) byte TouchpadIndex; +var(Positions) float Left; +var(Positions) float Top; +var(Positions) float Width; +var(Positions) float Height; +var float InitialLeft; +var float InitialTop; +var float InitialWidth; +var float InitialHeight; +var(Options) float AuthoredGlobalScale; +var(Options) float Opacity; +var(Sounds) SoundCue UITouchSound; +var(Sounds) SoundCue UIUnTouchSound; + +// Export UMobileMenuScene::execGetGlobalScaleX(FFrame&, void* const) +native static final function float GetGlobalScaleX(); + +// Export UMobileMenuScene::execGetGlobalScaleY(FFrame&, void* const) +native static final function float GetGlobalScaleY(); + +event InitMenuScene(MobilePlayerInput PlayerInput, int ScreenWidth, int ScreenHeight, bool bIsFirstInitialization) +{ + local int I, X, Y, W, H; + + SceneCaptionFont = GetSceneFont(); + InputOwner = PlayerInput; + // End:0x83 + if(bIsFirstInitialization) + { + InitialTop = Top; + InitialLeft = Left; + InitialWidth = Width; + InitialHeight = Height; + } + else + { + Top = InitialTop; + Left = InitialLeft; + Width = InitialWidth; + Height = InitialHeight; + } + X = int(((bRelativeLeft) ? float(ScreenWidth) * Left : Left)); + Y = int(((bRelativeTop) ? float(ScreenHeight) * Top : Top)); + W = int(((bRelativeWidth) ? float(ScreenWidth) * Width : Width)); + H = int(((bRelativeHeight) ? float(ScreenHeight) * Height : Height)); + // End:0x1E4 + if(bApplyGlobalScaleLeft) + { + X *= (GetGlobalScaleX() / AuthoredGlobalScale); + } + // End:0x211 + if(bApplyGlobalScaleTop) + { + Y *= (GetGlobalScaleY() / AuthoredGlobalScale); + } + // End:0x23E + if(bApplyGlobalScaleWidth) + { + W *= (GetGlobalScaleX() / AuthoredGlobalScale); + } + // End:0x26B + if(bApplyGlobalScaleHeight) + { + H *= (GetGlobalScaleY() / AuthoredGlobalScale); + } + Left = float(((X >= 0) ? X : X + ScreenWidth)); + Top = float(((Y >= 0) ? Y : Y + ScreenHeight)); + Width = float(((W >= 0) ? W : W + ScreenWidth)); + Height = float(((H >= 0) ? H : H + ScreenHeight)); + I = 0; + J0x35E: + + // End:0x3D3 [Loop If] + if(I < MenuObjects.Length) + { + MenuObjects[I].InitMenuObject(InputOwner, self, ScreenWidth, ScreenHeight, bIsFirstInitialization); + I++; + // [Loop Continue] + goto J0x35E; + } + //return; +} + +function Font GetSceneFont() +{ + return Class'Engine.Engine'.static.GetSmallFont(); + //return ReturnValue; +} + +function RenderScene(Canvas Canvas, float RenderDelta) +{ + local MobileMenuObject MenuObject; + + // End:0xB4 + foreach MenuObjects(MenuObject) + { + // End:0x5E + if(MenuObject.bTellSceneBeforeRendering) + { + PreRenderMenuObject(MenuObject, Canvas, RenderDelta); + } + // End:0xB3 + if(!MenuObject.bIsHidden) + { + MenuObject.RenderObject(Canvas, RenderDelta); + } + } + //return; +} + +function PreRenderMenuObject(MobileMenuObject MenuObject, Canvas Canvas, float RenderDelta) +{ + //return; +} + +event OnTouch(MobileMenuObject Sender, Interaction.ETouchType EventType, float TouchX, float TouchY) +{ + //return; +} + +event bool OnSceneTouch(Interaction.ETouchType EventType, float TouchX, float TouchY, bool bInside) +{ + return false; + //return ReturnValue; +} + +function Opened(string Mode) +{ + //return; +} + +function MadeTopMenu() +{ + //return; +} + +function bool Closing() +{ + return true; + //return ReturnValue; +} + +function Closed() +{ + CleanUpScene(); + //return; +} + +// Export UMobileMenuScene::execCleanUpScene(FFrame&, void* const) +native function CleanUpScene(); + +function MobileMenuObject FindMenuObject(string Tag) +{ + local int Idx; + + Idx = 0; + J0x0B: + + // End:0x7F [Loop If] + if(Idx < MenuObjects.Length) + { + // End:0x71 + if(Caps(MenuObjects[Idx].Tag) == Caps(Tag)) + { + return MenuObjects[Idx]; + } + Idx++; + // [Loop Continue] + goto J0x0B; + } + return none; + //return ReturnValue; +} + +function bool MobileMenuCommand(string Command) +{ + return false; + //return ReturnValue; +} + +defaultproperties +{ + AuthoredGlobalScale=2.0000000 + Opacity=1.0000000 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/MobilePlayerInput.uc b/exported/GameFramework/Classes/MobilePlayerInput.uc new file mode 100755 index 00000000..c6792538 --- /dev/null +++ b/exported/GameFramework/Classes/MobilePlayerInput.uc @@ -0,0 +1,689 @@ +class MobilePlayerInput extends PlayerInput within GamePlayerController + transient + native + config(Game) + hidecategories(Object,UIRoot); + +const NumTouchDataEntries = 5; + +enum EUIOrientation +{ + UI_Unknown, // 0 + UI_Portait, // 1 + UI_PortaitUpsideDown, // 2 + UI_LandscapeRight, // 3 + UI_LandscapeLeft, // 4 + UI_MAX // 5 +}; + +struct native TouchDataEvent +{ + var Interaction.ETouchType EventType; + var byte TouchpadIndex; + var Vector2D Location; + var Double DeviceTime; + + structdefaultproperties + { + EventType=ETouchType.Touch_Began + TouchpadIndex=0 + Location=(X=0.0000000,Y=0.0000000) + DeviceTime=() + } +}; + +struct native TouchData +{ + var int Handle; + var byte TouchpadIndex; + var Vector2D Location; + var float TotalMoveDistance; + var Double InitialDeviceTime; + var float TouchDuration; + var Double MoveEventDeviceTime; + var float MoveDeltaTime; + var bool bInUse; + var MobileInputZone Zone; + var Interaction.ETouchType State; + var array Events; + var float LastActiveTime; + + structdefaultproperties + { + Handle=0 + TouchpadIndex=0 + Location=(X=0.0000000,Y=0.0000000) + TotalMoveDistance=0.0000000 + InitialDeviceTime=() + TouchDuration=0.0000000 + MoveEventDeviceTime=() + MoveDeltaTime=0.0000000 + bInUse=false + Zone=none + State=ETouchType.Touch_Began + Events=none + LastActiveTime=0.0000000 + } +}; + +struct native MobileInputGroup +{ + var string GroupName; + var editinline array AssociatedZones; + + structdefaultproperties + { + GroupName="" + AssociatedZones=none + } +}; + +struct native MobileInputZoneClassMap +{ + var string Name; + var Class ClassType; + + structdefaultproperties + { + Name="" + ClassType=none + } +}; + +var(Input) TouchData Touches[5]; +var MobileMenuObject InteractiveObject; +var Double InteractiveObjectLastTime; +var(Input) editinline array MobileInputGroups; +var(Input) int CurrentMobileGroup; +var(Input) editinline array MobileInputZones; +var array MobileInputZoneClasses; +var(Input) float MobilePitch; +var(Input) float MobilePitchCenter; +var(Input) float MobilePitchMultiplier; +var(Input) float MobileYaw; +var(Input) float MobileYawCenter; +var(Input) float MobileYawMultiplier; +var(Input) config float MobilePitchDeadzoneSize; +var(Input) config float MobileYawDeadzoneSize; +var(Input) config float MobileDoubleTapTime; +var(Input) config float MobileMinHoldForTap; +var(Input) config float MobileTapRepeatTime; +var(Input) bool bAllowTouchesInCinematic; +var(Input) bool bDisableTouchInput; +var(Input) config bool bAbsoluteTouchLocations; +var(Input) config bool bCollapseTouchInput; +var(Debug) bool bFakeMobileTouches; +var(Debug) bool bDisableSceneRender; +var(Input) config float ZoneTimeout; +var(menus) array MobileMenuStack; +var(Debug) string NativeDebugString; +var(Current) float MobileInactiveTime; +var(Current) array MobileSeqEventHandlers; +var(Current) array MobileRawInputSeqEventHandlers; +var Vector2D MobileViewportOffset; +var Vector2D MobileViewportSize; +//var delegate __OnTouchNotHandledInMenu__Delegate; +//var delegate __OnPreviewTouch__Delegate; +//var delegate __OnInputTouch__Delegate; + +// Export UMobilePlayerInput::execProcessMobileInput(FFrame&, void* const) +native function ProcessMobileInput(float DeltaTime); + +// Export UMobilePlayerInput::execCancelMobileInput(FFrame&, void* const) +native function CancelMobileInput(); + +event PlayerInput(float DeltaTime) +{ + ProcessMobileInput(DeltaTime); + super.PlayerInput(DeltaTime); + //return; +} + +delegate OnTouchNotHandledInMenu() +{ + //return; +} + +delegate bool OnPreviewTouch(float X, float Y, int TouchpadIndex) +{ + //return ReturnValue; +} + +delegate OnInputTouch(int Handle, Interaction.ETouchType Type, Vector2D TouchLocation, float DeviceTimestamp, int TouchpadIndex) +{ + //return; +} + +// Export UMobilePlayerInput::execNativeInitializeInputSystem(FFrame&, void* const) +native function NativeInitializeInputSystem(); + +// Export UMobilePlayerInput::execNativeInitializeInputZones(FFrame&, void* const) +native function NativeInitializeInputZones(bool bIsFirstInitialize); + +// Export UMobilePlayerInput::execConditionalUpdateInputZones(FFrame&, void* const) +native function ConditionalUpdateInputZones(int NewViewportX, int NewViewportY, int NewViewportSizeX, int NewViewportSizeY); + +// Export UMobilePlayerInput::execSendInputKey(FFrame&, void* const) +native function SendInputKey(name Key, Object.EInputEvent Event, float AmountDepressed); + +// Export UMobilePlayerInput::execSendInputAxis(FFrame&, void* const) +native function SendInputAxis(name Key, float Delta, float DeltaTime); + +// Export UMobilePlayerInput::execProcessWorldTouch(FFrame&, void* const) +native function bool ProcessWorldTouch(MobileInputZone Zone, Interaction.ETouchType EventType, Vector2D TouchLocation); + +function InitInputSystem() +{ + super.InitInputSystem(); + InitTouchSystem(); + //return; +} + +function ClientInitInputSystem() +{ + super.ClientInitInputSystem(); + InitTouchSystem(); + //return; +} + +function InitTouchSystem() +{ + NativeInitializeInputSystem(); + // End:0x5C + if(bFakeMobileTouches || Outer.WorldInfo.IsConsoleBuild(3)) + { + InitializeInputZones(); + } + //return; +} + +function InitializeInputZones() +{ + local int I, J; + local MobileInputZone Zone; + local Class FrameworkGameClass; + + // End:0x12 + if(MobileInputGroups.Length > 0) + { + return; + } + FrameworkGameClass = Class(Outer.WorldInfo.GRI.GameClass); + // End:0x2AD + if(FrameworkGameClass != none) + { + MobileInputGroups.Length = FrameworkGameClass.default.RequiredMobileInputConfigs.Length; + I = 0; + J0xB1: + + // End:0x23D [Loop If] + if(I < FrameworkGameClass.default.RequiredMobileInputConfigs.Length) + { + MobileInputGroups[I].GroupName = FrameworkGameClass.default.RequiredMobileInputConfigs[I].GroupName; + J = 0; + J0x14B: + + // End:0x22F [Loop If] + if(J < FrameworkGameClass.default.RequiredMobileInputConfigs[I].RequireZoneNames.Length) + { + Zone = FindorAddZone(FrameworkGameClass.default.RequiredMobileInputConfigs[I].RequireZoneNames[J]); + MobileInputGroups[I].AssociatedZones.AddItem(Zone); + J++; + // [Loop Continue] + goto J0x14B; + } + I++; + // [Loop Continue] + goto J0xB1; + } + LocalPlayer(Outer.Player).ViewportClient.GetViewportSize(MobileViewportSize); + NativeInitializeInputZones(true); + RefreshKismetLinks(); + } + //return; +} + +function SwapZoneOwners() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x5B [Loop If] + if(I < MobileInputZones.Length) + { + MobileInputZones[I].InputOwner = self; + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +event RefreshKismetLinks() +{ + local array MobileInputSeqEvents; + local Sequence GameSeq; + local int I; + + GameSeq = Outer.WorldInfo.GetGameSequence(); + // End:0x183 + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'GameFramework.SeqEvent_MobileBase', true, MobileInputSeqEvents); + I = 0; + J0x8A: + + // End:0xE2 [Loop If] + if(I < MobileInputSeqEvents.Length) + { + SeqEvent_MobileBase(MobileInputSeqEvents[I]).RegisterEvent(); + I++; + // [Loop Continue] + goto J0x8A; + } + MobileInputSeqEvents.Length = 0; + GameSeq.FindSeqObjectsByClass(Class'GameFramework.SeqEvent_MobileRawInput', true, MobileInputSeqEvents); + I = 0; + J0x12B: + + // End:0x183 [Loop If] + if(I < MobileInputSeqEvents.Length) + { + SeqEvent_MobileRawInput(MobileInputSeqEvents[I]).RegisterEvent(); + I++; + // [Loop Continue] + goto J0x12B; + } + } + //return; +} + +function AddKismetEventHandler(SeqEvent_MobileBase NewHandler) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x54 [Loop If] + if(I < MobileSeqEventHandlers.Length) + { + // End:0x46 + if(MobileSeqEventHandlers[I] == NewHandler) + { + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x5F: + + // End:0xBD [Loop If] + if(I < MobileSeqEventHandlers.Length) + { + // End:0xAF + if(MobileSeqEventHandlers[I] == none) + { + MobileSeqEventHandlers[I] = NewHandler; + return; + } + I++; + // [Loop Continue] + goto J0x5F; + } + MobileSeqEventHandlers.AddItem(NewHandler); + //return; +} + +function AddKismetRawInputEventHandler(SeqEvent_MobileRawInput NewHandler) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x54 [Loop If] + if(I < MobileRawInputSeqEventHandlers.Length) + { + // End:0x46 + if(MobileRawInputSeqEventHandlers[I] == NewHandler) + { + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x5F: + + // End:0xBD [Loop If] + if(I < MobileRawInputSeqEventHandlers.Length) + { + // End:0xAF + if(MobileRawInputSeqEventHandlers[I] == none) + { + MobileRawInputSeqEventHandlers[I] = NewHandler; + return; + } + I++; + // [Loop Continue] + goto J0x5F; + } + MobileRawInputSeqEventHandlers.AddItem(NewHandler); + //return; +} + +function MobileInputZone FindZone(string ZoneName) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x7D [Loop If] + if(I < MobileInputZones.Length) + { + // End:0x6F + if(MobileInputZones[I].Name == name(ZoneName)) + { + return MobileInputZones[I]; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return none; + //return ReturnValue; +} + +function MobileInputZone FindorAddZone(string ZoneName) +{ + local MobileInputZone Zone; + local Class ClassType; + local int ClassIndex; + + Zone = FindZone(ZoneName); + // End:0x12D + if(Zone == none) + { + ClassType = Class'GameFramework.MobileInputZone'; + ClassIndex = 0; + J0x4A: + + // End:0xD7 [Loop If] + if(ClassIndex < MobileInputZoneClasses.Length) + { + // End:0xC9 + if(ZoneName == MobileInputZoneClasses[ClassIndex].Name) + { + ClassType = MobileInputZoneClasses[ClassIndex].ClassType; + // [Explicit Break] + goto J0xD7; + } + ClassIndex++; + // [Loop Continue] + goto J0x4A; + } + J0xD7: + + Zone = new (none, ZoneName) ClassType; + Zone.InputOwner = self; + MobileInputZones.AddItem(Zone); + } + return Zone; + //return ReturnValue; +} + +function bool HasZones() +{ + return (MobileInputGroups.Length > 0) && CurrentMobileGroup < MobileInputGroups.Length; + //return ReturnValue; +} + +function array GetCurrentZones() +{ + return MobileInputGroups[CurrentMobileGroup].AssociatedZones; + //return ReturnValue; +} + +exec function ActivateInputGroup(string GroupName) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x7A [Loop If] + if(I < MobileInputGroups.Length) + { + // End:0x6C + if(MobileInputGroups[I].GroupName == GroupName) + { + CurrentMobileGroup = I; + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +exec function SetMobileInputConfig(string GroupName) +{ + local int NewConfig; + + NewConfig = 0; + J0x0B: + + // End:0x68 [Loop If] + if(NewConfig < MobileInputGroups.Length) + { + // End:0x5A + if(MobileInputGroups[NewConfig].GroupName ~= GroupName) + { + // [Explicit Break] + goto J0x68; + } + NewConfig++; + // [Loop Continue] + goto J0x0B; + } + J0x68: + + // End:0x96 + if(NewConfig < MobileInputGroups.Length) + { + CurrentMobileGroup = NewConfig; + } + //return; +} + +event MobileMenuScene OpenMenuScene(Class SceneClass, optional string Mode) +{ + local MobileMenuScene Scene; + local Vector2D ViewportSize; + + // End:0x162 + if(SceneClass != none) + { + Scene = new (Outer) SceneClass; + // End:0x162 + if(Scene != none) + { + LocalPlayer(Outer.Player).ViewportClient.GetViewportSize(ViewportSize); + Scene.InitMenuScene(self, int(ViewportSize.X), int(ViewportSize.Y), true); + MobileMenuStack.InsertItem(0, Scene); + Scene.Opened(Mode); + Scene.MadeTopMenu(); + return Scene; + } + } + return none; + //return ReturnValue; +} + +event CloseMenuScene(MobileMenuScene SceneToClose) +{ + local int I, Idx; + local bool bClosedTopMenu; + + // End:0x131 + if(SceneToClose.Closing()) + { + Idx = -1; + I = 0; + J0x3C: + + // End:0x99 [Loop If] + if(I < MobileMenuStack.Length) + { + // End:0x8B + if(MobileMenuStack[I] == SceneToClose) + { + Idx = I; + // [Explicit Break] + goto J0x99; + } + I++; + // [Loop Continue] + goto J0x3C; + } + J0x99: + + // End:0x131 + if(Idx >= 0) + { + bClosedTopMenu = Idx == 0; + MobileMenuStack.Remove(Idx, 1); + SceneToClose.Closed(); + // End:0x131 + if(bClosedTopMenu) + { + // End:0x131 + if(MobileMenuStack.Length > 0) + { + MobileMenuStack[0].MadeTopMenu(); + } + } + } + } + //return; +} + +event CloseAllMenus() +{ + J0x00: + // End:0x34 [Loop If] + if(MobileMenuStack.Length > 0) + { + CloseMenuScene(MobileMenuStack[MobileMenuStack.Length - 1]); + // [Loop Continue] + goto J0x00; + } + //return; +} + +event RenderMenus(Canvas Canvas, float RenderDelta) +{ + local int I; + + Canvas.Reset(); + // End:0x2F + if(bDisableSceneRender) + { + return; + } + I = MobileMenuStack.Length - 1; + J0x46: + + // End:0x9E [Loop If] + if(I >= 0) + { + MobileMenuStack[I].RenderScene(Canvas, RenderDelta); + I--; + // [Loop Continue] + goto J0x46; + } + //return; +} + +function PreClientTravel(string PendingURL, Actor.ETravelType TravelType, bool bIsSeamlessTravel) +{ + local int I; + + super.PreClientTravel(PendingURL, TravelType, bIsSeamlessTravel); + I = MobileMenuStack.Length - 1; + J0x3D: + + // End:0x83 [Loop If] + if(I >= 0) + { + MobileMenuStack[I].Closed(); + I--; + // [Loop Continue] + goto J0x3D; + } + //return; +} + +exec function SceneRenderToggle() +{ + bDisableSceneRender = !bDisableSceneRender; + //return; +} + +exec function MobileMenuCommand(string MenuCommand) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x68 [Loop If] + if(I < MobileMenuStack.Length) + { + // End:0x5A + if(MobileMenuStack[I].MobileMenuCommand(MenuCommand)) + { + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +exec function MobileMenuScene OpenMobileMenu(string MenuClassName) +{ + local Class MenuClass; + + MenuClass = Class(DynamicLoadObject(MenuClassName, Class'Core.Class')); + // End:0x54 + if(MenuClass != none) + { + return OpenMenuScene(MenuClass); + } + return none; + //return ReturnValue; +} + +exec function MobileMenuScene OpenMobileMenuMode(string MenuClassName, string Mode) +{ + local Class MenuClass; + + MenuClass = Class(DynamicLoadObject(MenuClassName, Class'Core.Class')); + // End:0x5C + if(MenuClass != none) + { + return OpenMenuScene(MenuClass, Mode); + } + return none; + //return ReturnValue; +} diff --git a/exported/GameFramework/Classes/MobileSecondaryViewportClient.uc b/exported/GameFramework/Classes/MobileSecondaryViewportClient.uc new file mode 100755 index 00000000..95b0ce9c --- /dev/null +++ b/exported/GameFramework/Classes/MobileSecondaryViewportClient.uc @@ -0,0 +1,31 @@ +class MobileSecondaryViewportClient extends SecondaryViewportClient + transient + native; + +event PostRender(Canvas Canvas) +{ + local PlayerController PC; + local MobilePlayerInput MPI; + local MobileHUD MH; + + // End:0x134 + foreach Class'Engine.Engine'.static.GetCurrentWorldInfo().LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + MPI = MobilePlayerInput(PC.PlayerInput); + // End:0x133 + if(MPI != none) + { + MH = MobileHUD(PC.myHUD); + // End:0x133 + if(MH != none) + { + MH.Canvas = Canvas; + MH.DrawInputZoneOverlays(); + MH.RenderMobileMenu(); + // End:0x134 + break; + } + } + } + //return; +} diff --git a/exported/GameFramework/Classes/MobileTouchInputVolume.uc b/exported/GameFramework/Classes/MobileTouchInputVolume.uc new file mode 100755 index 00000000..8a572114 --- /dev/null +++ b/exported/GameFramework/Classes/MobileTouchInputVolume.uc @@ -0,0 +1,79 @@ +class MobileTouchInputVolume extends Volume + hidecategories(Navigation,Object,Movement,Display) + implements(TouchableElement3D); + +var bool bEnabled; + +simulated function OnToggle(SeqAct_Toggle inAction) +{ + // End:0x46 + if(inAction.InputLinks[0].bHasImpulse) + { + bEnabled = true; + } + else + { + // End:0x8C + if(inAction.InputLinks[1].bHasImpulse) + { + bEnabled = false; + } + else + { + // End:0xDB + if(inAction.InputLinks[2].bHasImpulse) + { + bEnabled = !bEnabled; + } + } + } + super.OnToggle(inAction); + //return; +} + +function HandleClick() +{ + // End:0x24 + if(bEnabled) + { + TriggerEventClass(Class'GameFramework.SeqEvent_MobileTouchInputVolume', self, 1); + } + //return; +} + +function HandleDoubleClick() +{ + // End:0x25 + if(bEnabled) + { + TriggerEventClass(Class'GameFramework.SeqEvent_MobileTouchInputVolume', self, 2); + } + //return; +} + +function HandleDragOver() +{ + // End:0x24 + if(bEnabled) + { + TriggerEventClass(Class'GameFramework.SeqEvent_MobileTouchInputVolume', self, 0); + } + //return; +} + +defaultproperties +{ + bEnabled=true + // Reference: BrushComponent'GameFramework.Default__MobileTouchInputVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bStatic=false + CollisionComponent=BrushComponent0 + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/NavMeshGoal_OutOfViewFrom.uc b/exported/GameFramework/Classes/NavMeshGoal_OutOfViewFrom.uc new file mode 100755 index 00000000..50a2f60f --- /dev/null +++ b/exported/GameFramework/Classes/NavMeshGoal_OutOfViewFrom.uc @@ -0,0 +1,36 @@ +class NavMeshGoal_OutOfViewFrom extends NavMeshPathGoalEvaluator + native; + +var private native Pointer GoalPoly; +var Vector OutOfViewLocation; +var bool bShowDebug; + +// Export UNavMeshGoal_OutOfViewFrom::execRecycleNative(FFrame&, void* const) +native function RecycleNative(); + +static function bool MustBeHiddenFromThisPoint(NavigationHandle NavHandle, Vector InOutOfViewLocation) +{ + local NavMeshGoal_OutOfViewFrom Eval; + + // End:0xAB + if(NavHandle != none) + { + Eval = NavMeshGoal_OutOfViewFrom(NavHandle.CreatePathGoalEvaluator(default.Class)); + // End:0xAB + if(Eval != none) + { + Eval.OutOfViewLocation = InOutOfViewLocation; + NavHandle.AddGoalEvaluator(Eval); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + RecycleNative(); + super.Recycle(); + //return; +} diff --git a/exported/GameFramework/Classes/NavMeshPath_BiasAgainstPolysWithinDistanceOfLocations.uc b/exported/GameFramework/Classes/NavMeshPath_BiasAgainstPolysWithinDistanceOfLocations.uc new file mode 100755 index 00000000..73d9b8dc --- /dev/null +++ b/exported/GameFramework/Classes/NavMeshPath_BiasAgainstPolysWithinDistanceOfLocations.uc @@ -0,0 +1,36 @@ +class NavMeshPath_BiasAgainstPolysWithinDistanceOfLocations extends NavMeshPathConstraint + native; + +var transient Vector Location; +var transient Vector Rotation; +var transient float DistanceToCheck; +var transient array LocationsToCheck; + +static function bool BiasAgainstPolysWithinDistanceOfLocations(NavigationHandle NavHandle, const Vector InLocation, const Rotator InRotation, const float InDistanceToCheck, const array InLocationsToCheck) +{ + local NavMeshPath_BiasAgainstPolysWithinDistanceOfLocations Con; + + // End:0x125 + if(NavHandle != none) + { + Con = NavMeshPath_BiasAgainstPolysWithinDistanceOfLocations(NavHandle.CreatePathConstraint(default.Class)); + // End:0x125 + if(Con != none) + { + Con.Location = InLocation; + Con.Rotation = Vector(InRotation); + Con.DistanceToCheck = InDistanceToCheck; + Con.LocationsToCheck = InLocationsToCheck; + NavHandle.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + //return; +} diff --git a/exported/GameFramework/Classes/PMESTG_LeaveADecalBase.uc b/exported/GameFramework/Classes/PMESTG_LeaveADecalBase.uc new file mode 100755 index 00000000..ec8c63dc --- /dev/null +++ b/exported/GameFramework/Classes/PMESTG_LeaveADecalBase.uc @@ -0,0 +1,6 @@ +class PMESTG_LeaveADecalBase extends ParticleModuleEventSendToGame + abstract + editinlinenew + hidecategories(Object,Object); + +var Class PhysicalMaterialPropertyClass; diff --git a/exported/GameFramework/Classes/PlayerCollectorGame.uc b/exported/GameFramework/Classes/PlayerCollectorGame.uc new file mode 100755 index 00000000..fae71744 --- /dev/null +++ b/exported/GameFramework/Classes/PlayerCollectorGame.uc @@ -0,0 +1,41 @@ +class PlayerCollectorGame extends GameInfo + config(Game) + hidecategories(Navigation,Movement,Collision); + +var int NumberOfClientsToWaitFor; +var string URLToLoad; + +event PlayerController Login(string Portal, string Options, const UniqueNetId UniqueId, out string ErrorMessage, const optional UniqueNetId ConsoleUniqueId) +{ + local PlayerController PC; + + PC = super.Login(Portal, Options, UniqueId, ErrorMessage); + // End:0x4B + if(PC == none) + { + return none; + } + // End:0xE7 + if(NumberOfClientsToWaitFor == 0) + { + NumberOfClientsToWaitFor = GetIntOption(Options, "NumClients", 1); + URLToLoad = ParseOption(Options, "SubMap"); + URLToLoad = (URLToLoad $ "?game=") $ (ParseOption(Options, "SubGame")); + } + else + { + NumberOfClientsToWaitFor--; + } + // End:0x12B + if(NumberOfClientsToWaitFor == 0) + { + WorldInfo.SeamlessTravel(URLToLoad, true); + } + return PC; + //return ReturnValue; +} + +event GetSeamlessTravelActorList(bool bToEntry, out array ActorList) +{ + //return; +} diff --git a/exported/GameFramework/Classes/SecondaryViewportClient.uc b/exported/GameFramework/Classes/SecondaryViewportClient.uc new file mode 100755 index 00000000..55efc3b7 --- /dev/null +++ b/exported/GameFramework/Classes/SecondaryViewportClient.uc @@ -0,0 +1,8 @@ +class SecondaryViewportClient extends ScriptViewportClient + transient + native; + +event PostRender(Canvas Canvas) +{ + //return; +} diff --git a/exported/GameFramework/Classes/SeqAct_ControlGameMovie.uc b/exported/GameFramework/Classes/SeqAct_ControlGameMovie.uc new file mode 100755 index 00000000..81043ee8 --- /dev/null +++ b/exported/GameFramework/Classes/SeqAct_ControlGameMovie.uc @@ -0,0 +1,21 @@ +class SeqAct_ControlGameMovie extends SeqAct_Latent + native + forcescriptorder(true) + hidecategories(Object); + +var(Movie) string MovieName; +var(Movie) int StartOfRenderingMovieFrame; +var(Movie) int EndOfRenderingMovieFrame; + +defaultproperties +{ + StartOfRenderingMovieFrame=-1 + EndOfRenderingMovieFrame=-1 + bAutoActivateOutputLinks=false + InputLinks[0]=(LinkDesc="Play",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Out",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Movie Completed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="MovieName",LinkVar="None",PropertyName="MovieName",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Control Game Movie" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqAct_Deproject.uc b/exported/GameFramework/Classes/SeqAct_Deproject.uc new file mode 100755 index 00000000..a3ac3bde --- /dev/null +++ b/exported/GameFramework/Classes/SeqAct_Deproject.uc @@ -0,0 +1,22 @@ +class SeqAct_Deproject extends SequenceAction + native + forcescriptorder(true) + hidecategories(Object); + +var() float ScreenX; +var() float ScreenY; +var() float TraceDistance; +var Object HitObject; +var Vector HitLocation; +var Vector HitNormal; + +defaultproperties +{ + TraceDistance=20480.0000000 + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="X",LinkVar="None",PropertyName="ScreenX",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Y",LinkVar="None",PropertyName="ScreenY",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Hit Object",LinkVar="None",PropertyName="HitObject",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Hit Location",LinkVar="None",PropertyName="HitLocation",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[4]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Hit Normal",LinkVar="None",PropertyName="HitNormal",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Deproject" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqAct_GameCrowdPopulationManagerToggle.uc b/exported/GameFramework/Classes/SeqAct_GameCrowdPopulationManagerToggle.uc new file mode 100755 index 00000000..b3ef28a6 --- /dev/null +++ b/exported/GameFramework/Classes/SeqAct_GameCrowdPopulationManagerToggle.uc @@ -0,0 +1,121 @@ +class SeqAct_GameCrowdPopulationManagerToggle extends SequenceAction + native + forcescriptorder(true) + hidecategories(Object) + implements(GameCrowdSpawnerInterface); + +var() float WarmupPopulationPct; +var() GameCrowd_ListOfAgents CrowdAgentList; +var() bool bClearOldArchetypes; +var() bool bEnableCrowdLightEnvironment; +var() bool bCastShadows; +var bool bFillPotentialSpawnPoints; +var() bool bForceObstacleChecking; +var() bool bForceNavMeshPathing; +var bool bIndividualSpawner; +var() int MaxAgents; +var() float SpawnRate; +var LightingChannelContainer AgentLightingChannel; +var() float MaxSpawnDist; +var float MinBehindSpawnDist; +var array PotentialSpawnPoints; +var float AgentWarmupTime; +var() int NumAgentsToTickPerFrame; +var array LastSpawnedList; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 5; + //return ReturnValue; +} + +event FillCrowdSpawnInfoItem(out CrowdSpawnInfoItem out_Item, GameCrowdPopulationManager PopMgr) +{ + local int I; + + // End:0x2C + if(bClearOldArchetypes) + { + out_Item.AgentArchetypes.Length = 0; + } + // End:0xE4 + if(CrowdAgentList != none) + { + I = 0; + J0x46: + + // End:0xE4 [Loop If] + if(I < CrowdAgentList.ListOfAgents.Length) + { + out_Item.AgentArchetypes[out_Item.AgentArchetypes.Length] = CrowdAgentList.ListOfAgents[I]; + I++; + // [Loop Continue] + goto J0x46; + } + } + out_Item.MaxSpawnDist = MaxSpawnDist; + out_Item.MaxSpawnDistSq = out_Item.MaxSpawnDist * out_Item.MaxSpawnDist; + out_Item.MinBehindSpawnDist = FMin(MinBehindSpawnDist, out_Item.MaxSpawnDist * 0.0625000); + out_Item.MinBehindSpawnDistSq = out_Item.MinBehindSpawnDist * out_Item.MinBehindSpawnDist; + out_Item.AgentWarmupTime = AgentWarmupTime; + out_Item.bCastShadows = bCastShadows; + out_Item.bEnableCrowdLightEnvironment = bEnableCrowdLightEnvironment; + out_Item.SpawnRate = SpawnRate; + out_Item.SpawnNum = MaxAgents; + // End:0x344 + if(Class'Engine.Engine'.static.IsSplitScreen()) + { + out_Item.SpawnNum = int(PopMgr.SplitScreenNumReduction * float(out_Item.SpawnNum)); + } + out_Item.bForceObstacleChecking = bForceObstacleChecking; + out_Item.bForceNavMeshPathing = bForceNavMeshPathing; + out_Item.NumAgentsToTickPerFrame = NumAgentsToTickPerFrame; + out_Item.LastAgentTickedIndex = -1; + // End:0x40F + if(bFillPotentialSpawnPoints) + { + out_Item.PotentialSpawnPoints = PotentialSpawnPoints; + } + //return; +} + +function float GetMaxSpawnDist() +{ + return MaxSpawnDist; + //return ReturnValue; +} + +function AgentDestroyed(GameCrowdAgent Agent) +{ + local GameCrowdPopulationManager PopMgr; + + PopMgr = GameCrowdPopulationManager(Agent.WorldInfo.PopulationManager); + // End:0x7D + if(PopMgr != none) + { + PopMgr.AgentDestroyed(Agent); + } + //return; +} + +defaultproperties +{ + bForceNavMeshPathing=true + MaxAgents=700 + SpawnRate=50.0000000 + AgentLightingChannel=(bInitialized=true,BSP=false,Static=false,Dynamic=false,CompositeDynamic=false,Skybox=false,Unnamed_1=false,Unnamed_2=false,Unnamed_3=false,Unnamed_4=false,Unnamed_5=false,Unnamed_6=false,Cinematic_1=false,Cinematic_2=false,Cinematic_3=false,Cinematic_4=false,Cinematic_5=false,Cinematic_6=false,Cinematic_7=false,Cinematic_8=false,Cinematic_9=false,Cinematic_10=false,Gameplay_1=false,Gameplay_2=false,Gameplay_3=false,Gameplay_4=false,Crowd=true) + MaxSpawnDist=10000.0000000 + MinBehindSpawnDist=5000.0000000 + AgentWarmupTime=2.0000000 + NumAgentsToTickPerFrame=10 + bCallHandler=false + bLatentExecution=true + InputLinks[0]=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Warmup",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[3]=(LinkDesc="Kill Agents",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[4]=(LinkDesc="Stop & Kill",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Spawned",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_ObjectList',LinkedVariables=none,LinkDesc="Spawned List",LinkVar="None",PropertyName="LastSpawnedList",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Population Manager Toggle" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqAct_GameCrowdSpawner.uc b/exported/GameFramework/Classes/SeqAct_GameCrowdSpawner.uc new file mode 100755 index 00000000..02b97397 --- /dev/null +++ b/exported/GameFramework/Classes/SeqAct_GameCrowdSpawner.uc @@ -0,0 +1,19 @@ +class SeqAct_GameCrowdSpawner extends SeqAct_GameCrowdPopulationManagerToggle + abstract + native + hidecategories(Object); + +static event int GetObjClassVersion() +{ + return super.GetObjClassVersion() + 5; + //return ReturnValue; +} + +defaultproperties +{ + bFillPotentialSpawnPoints=true + bIndividualSpawner=true + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_ObjectList',LinkedVariables=none,LinkDesc="Spawned List",LinkVar="None",PropertyName="LastSpawnedList",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Spawn Points",LinkVar="None",PropertyName="PotentialSpawnPoints",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Game Scripted Crowd Spawner" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqAct_MobileAddInputZones.uc b/exported/GameFramework/Classes/SeqAct_MobileAddInputZones.uc new file mode 100755 index 00000000..20824408 --- /dev/null +++ b/exported/GameFramework/Classes/SeqAct_MobileAddInputZones.uc @@ -0,0 +1,13 @@ +class SeqAct_MobileAddInputZones extends SequenceAction + native + forcescriptorder(true) + hidecategories(Object); + +var() name ZoneName; +var() editinline MobileInputZone NewZone; + +defaultproperties +{ + VariableLinks=none + ObjName="Add Input Zone" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqAct_MobileClearInputZones.uc b/exported/GameFramework/Classes/SeqAct_MobileClearInputZones.uc new file mode 100755 index 00000000..4e5d98b3 --- /dev/null +++ b/exported/GameFramework/Classes/SeqAct_MobileClearInputZones.uc @@ -0,0 +1,10 @@ +class SeqAct_MobileClearInputZones extends SequenceAction + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + VariableLinks=none + ObjName="Clear Input Zones" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqAct_MobileRemoveInputZone.uc b/exported/GameFramework/Classes/SeqAct_MobileRemoveInputZone.uc new file mode 100755 index 00000000..c4b4b433 --- /dev/null +++ b/exported/GameFramework/Classes/SeqAct_MobileRemoveInputZone.uc @@ -0,0 +1,12 @@ +class SeqAct_MobileRemoveInputZone extends SequenceAction + native + forcescriptorder(true) + hidecategories(Object); + +var() string ZoneName; + +defaultproperties +{ + VariableLinks=none + ObjName="Remove Input Zone" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqAct_MobileSaveLoadValue.uc b/exported/GameFramework/Classes/SeqAct_MobileSaveLoadValue.uc new file mode 100755 index 00000000..d0081b05 --- /dev/null +++ b/exported/GameFramework/Classes/SeqAct_MobileSaveLoadValue.uc @@ -0,0 +1,23 @@ +class SeqAct_MobileSaveLoadValue extends SequenceAction + native + forcescriptorder(true) + hidecategories(Object); + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Save",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Load",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Saved",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Loaded",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Int Vars",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Float Vars",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Bool Vars",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Vector Vars",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Save/Load Values" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqAct_ModifyProperty.uc b/exported/GameFramework/Classes/SeqAct_ModifyProperty.uc new file mode 100755 index 00000000..d573fa4e --- /dev/null +++ b/exported/GameFramework/Classes/SeqAct_ModifyProperty.uc @@ -0,0 +1,25 @@ +class SeqAct_ModifyProperty extends SequenceAction + native + forcescriptorder(true) + hidecategories(Object); + +struct native PropertyInfo +{ + var() name PropertyName; + var() bool bModifyProperty; + var() string PropertyValue; + + structdefaultproperties + { + PropertyName="None" + bModifyProperty=false + PropertyValue="" + } +}; + +var() editinline array Properties; + +defaultproperties +{ + ObjName="Modify Property" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqAct_PlayAgentAnimation.uc b/exported/GameFramework/Classes/SeqAct_PlayAgentAnimation.uc new file mode 100755 index 00000000..40dc0065 --- /dev/null +++ b/exported/GameFramework/Classes/SeqAct_PlayAgentAnimation.uc @@ -0,0 +1,69 @@ +class SeqAct_PlayAgentAnimation extends SeqAct_Latent + native + forcescriptorder(true) + hidecategories(Object); + +var() array AnimationList; +var() float BlendInTime; +var() float BlendOutTime; +var() bool bUseRootMotion; +var() bool bFaceActionTargetFirst; +var() bool bLooping; +var() bool bBlendBetweenAnims; +var() int LoopIndex; +var() float LoopTime; +var Actor ActionTarget; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +function SetCurrentAnimationActionFor(GameCrowdAgentSkeletal Agent) +{ + local GameCrowdBehavior_PlayAnimation AnimBehavior; + local int I; + + AnimBehavior = new (Agent) Class'GameFramework.GameCrowdBehavior_PlayAnimation'; + AnimBehavior.AnimSequence = self; + AnimBehavior.BlendInTime = BlendInTime; + AnimBehavior.BlendOutTime = BlendOutTime; + AnimBehavior.bUseRootMotion = bUseRootMotion; + AnimBehavior.bFaceActionTargetFirst = bFaceActionTargetFirst; + AnimBehavior.bLooping = bLooping; + AnimBehavior.LoopIndex = LoopIndex; + AnimBehavior.LoopTime = LoopTime; + AnimBehavior.bBlendBetweenAnims = bBlendBetweenAnims; + AnimBehavior.CustomActionTarget = ActionTarget; + I = 0; + J0x1BB: + + // End:0x21D [Loop If] + if(I < AnimationList.Length) + { + AnimBehavior.AnimationList[I] = AnimationList[I]; + I++; + // [Loop Continue] + goto J0x1BB; + } + Agent.ActivateInstancedBehavior(AnimBehavior); + //return; +} + +defaultproperties +{ + BlendInTime=0.2000000 + BlendOutTime=0.2000000 + LoopTime=-1.0000000 + bAutoActivateOutputLinks=false + InputLinks[0]=(LinkDesc="Play",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Finished",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Stopped",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Started",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Action Focus",LinkVar="None",PropertyName="ActionTarget",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Out Agent",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Play Agent Animation" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqAct_ToggleMouseCursor.uc b/exported/GameFramework/Classes/SeqAct_ToggleMouseCursor.uc new file mode 100755 index 00000000..f99ea72f --- /dev/null +++ b/exported/GameFramework/Classes/SeqAct_ToggleMouseCursor.uc @@ -0,0 +1,10 @@ +class SeqAct_ToggleMouseCursor extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Enable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Disable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Toggle Mouse Cursor" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqEvent_CrowdAgentReachedDestination.uc b/exported/GameFramework/Classes/SeqEvent_CrowdAgentReachedDestination.uc new file mode 100755 index 00000000..558be100 --- /dev/null +++ b/exported/GameFramework/Classes/SeqEvent_CrowdAgentReachedDestination.uc @@ -0,0 +1,13 @@ +class SeqEvent_CrowdAgentReachedDestination extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Agent Reached Destination",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Agent",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Agent Reached" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqEvent_HudRender.uc b/exported/GameFramework/Classes/SeqEvent_HudRender.uc new file mode 100755 index 00000000..d9ee3d1e --- /dev/null +++ b/exported/GameFramework/Classes/SeqEvent_HudRender.uc @@ -0,0 +1,55 @@ +class SeqEvent_HudRender extends SequenceEvent + abstract + native + forcescriptorder(true) + hidecategories(Object); + +var() array Targets; +var(HUD) bool bIsActive; +var(HUD) float AuthoredGlobalScale; + +event RegisterEvent() +{ + local int I; + local GamePlayerController GPC; + local MobileHUD TargetHud; + + I = 0; + J0x0B: + + // End:0xC9 [Loop If] + if(I < Targets.Length) + { + GPC = GamePlayerController(Targets[I]); + // End:0xBB + if(GPC != none) + { + TargetHud = MobileHUD(GPC.myHUD); + // End:0xBB + if(TargetHud != none) + { + TargetHud.AddKismetRenderEvent(self); + // [Explicit Break] + goto J0xC9; + } + } + I++; + // [Loop Continue] + goto J0x0B; + } + J0xC9: + + //return; +} + +function Render(Canvas TargetCanvas, HUD TargetHud) +{ + //return; +} + +defaultproperties +{ + AuthoredGlobalScale=2.0000000 + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Active",LinkVar="None",PropertyName="bIsActive",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqEvent_HudRenderImage.uc b/exported/GameFramework/Classes/SeqEvent_HudRenderImage.uc new file mode 100755 index 00000000..0ee00fd5 --- /dev/null +++ b/exported/GameFramework/Classes/SeqEvent_HudRenderImage.uc @@ -0,0 +1,41 @@ +class SeqEvent_HudRenderImage extends SeqEvent_HudRender + hidecategories(Object); + +var(HUD) LinearColor DisplayColor; +var(HUD) Vector DisplayLocation; +var(HUD) Texture2D DisplayTexture; +var(HUD) float XL; +var(HUD) float YL; +var(HUD) float U; +var(HUD) float V; +var(HUD) float UL; +var(HUD) float VL; + +function Render(Canvas TargetCanvas, HUD TargetHud) +{ + local float UsedX, UsedY, UsedXL, UsedYL, GlobalScaleX, GlobalScaleY; + + // End:0x305 + if(bIsActive) + { + PublishLinkedVariableValues(); + GlobalScaleX = Class'GameFramework.MobileMenuScene'.static.GetGlobalScaleX() / AuthoredGlobalScale; + GlobalScaleY = Class'GameFramework.MobileMenuScene'.static.GetGlobalScaleY() / AuthoredGlobalScale; + UsedX = ((DisplayLocation.X < 1.0000000) ? DisplayLocation.X * float(TargetCanvas.SizeX) : DisplayLocation.X * GlobalScaleX); + UsedY = ((DisplayLocation.Y < 1.0000000) ? DisplayLocation.Y * float(TargetCanvas.SizeY) : DisplayLocation.Y * GlobalScaleY); + UsedXL = ((XL <= 1.0000000) ? XL * float(TargetCanvas.SizeX) : XL * GlobalScaleX); + UsedYL = ((YL <= 1.0000000) ? YL * float(TargetCanvas.SizeX) : YL * GlobalScaleY); + TargetCanvas.SetPos(UsedX, UsedY); + TargetCanvas.DrawTile(DisplayTexture, UsedXL, UsedYL, U, V, UL, VL, DisplayColor); + } + //return; +} + +defaultproperties +{ + DisplayColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Active",LinkVar="None",PropertyName="bIsActive",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Display Location",LinkVar="None",PropertyName="DisplayLocation",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Draw Image" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqEvent_HudRenderText.uc b/exported/GameFramework/Classes/SeqEvent_HudRenderText.uc new file mode 100755 index 00000000..9973b260 --- /dev/null +++ b/exported/GameFramework/Classes/SeqEvent_HudRenderText.uc @@ -0,0 +1,74 @@ +class SeqEvent_HudRenderText extends SeqEvent_HudRender + hidecategories(Object); + +enum ETextDrawMethod +{ + DRAW_CenterText, // 0 + DRAW_WrapText, // 1 + DRAW_MAX // 2 +}; + +var(HUD) Font DisplayFont; +var(HUD) Color DisplayColor; +var(HUD) Vector DisplayLocation; +var(HUD) string DisplayText; +var(HUD) SeqEvent_HudRenderText.ETextDrawMethod TextDrawMethod; + +function Render(Canvas TargetCanvas, HUD TargetHud) +{ + local float XL, YL, UsedX, UsedY, UsedScaleX, UsedScaleY, + GlobalScaleX, GlobalScaleY; + + // End:0x39C + if(bIsActive) + { + PublishLinkedVariableValues(); + // End:0x4E + if(DisplayFont != none) + { + TargetCanvas.Font = DisplayFont; + } + GlobalScaleX = Class'GameFramework.MobileMenuScene'.static.GetGlobalScaleX() / AuthoredGlobalScale; + GlobalScaleY = Class'GameFramework.MobileMenuScene'.static.GetGlobalScaleY() / AuthoredGlobalScale; + UsedX = ((DisplayLocation.X < 1.0000000) ? DisplayLocation.X * float(TargetCanvas.SizeX) : DisplayLocation.X * GlobalScaleX); + UsedY = ((DisplayLocation.Y < 1.0000000) ? DisplayLocation.Y * float(TargetCanvas.SizeY) : DisplayLocation.Y * GlobalScaleY); + UsedScaleX = GlobalScaleX; + UsedScaleY = GlobalScaleY; + TargetCanvas.DrawColor = DisplayColor; + // End:0x2B8 + if(int(TextDrawMethod) == int(1)) + { + TargetCanvas.SetPos(UsedX, UsedY); + TargetCanvas.DrawText(DisplayText,, UsedScaleX, UsedScaleY); + } + else + { + // End:0x39C + if(int(TextDrawMethod) == int(0)) + { + TargetCanvas.TextSize(DisplayText, XL, YL); + XL *= UsedScaleX; + TargetCanvas.SetPos(UsedX - (XL / float(2)), UsedY); + TargetCanvas.DrawText(DisplayText,, UsedScaleX, UsedScaleY); + } + } + } + //return; +} + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + DisplayColor=(R=255,G=255,B=255,A=255) + TextDrawMethod=ETextDrawMethod.DRAW_WrapText + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Active",LinkVar="None",PropertyName="bIsActive",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Display Location",LinkVar="None",PropertyName="DisplayLocation",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="Display Text",LinkVar="None",PropertyName="DisplayText",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Draw Text" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqEvent_MobileBase.uc b/exported/GameFramework/Classes/SeqEvent_MobileBase.uc new file mode 100755 index 00000000..bda1e974 --- /dev/null +++ b/exported/GameFramework/Classes/SeqEvent_MobileBase.uc @@ -0,0 +1,42 @@ +class SeqEvent_MobileBase extends SequenceEvent + abstract + native + forcescriptorder(true) + hidecategories(Object); + +event RegisterEvent() +{ + local WorldInfo WI; + local GamePlayerController GPC; + local MobilePlayerInput MPI; + + WI = Class'Engine.WorldInfo'.static.GetWorldInfo(); + // End:0xC4 + if(WI != none) + { + // End:0xC3 + foreach WI.LocalPlayerControllers(Class'GameFramework.GamePlayerController', GPC) + { + MPI = MobilePlayerInput(GPC.PlayerInput); + // End:0xC2 + if(MPI != none) + { + AddToMobileInput(MPI); + // End:0xC3 + break; + } + } + } + //return; +} + +event AddToMobileInput(MobilePlayerInput MPI) +{ + MPI.AddKismetEventHandler(self); + //return; +} + +defaultproperties +{ + MaxTriggerCount=0 +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqEvent_MobileButton.uc b/exported/GameFramework/Classes/SeqEvent_MobileButton.uc new file mode 100755 index 00000000..bcd7ec86 --- /dev/null +++ b/exported/GameFramework/Classes/SeqEvent_MobileButton.uc @@ -0,0 +1,14 @@ +class SeqEvent_MobileButton extends SeqEvent_MobileZoneBase + native + hidecategories(Object); + +var bool bWasActiveLastFrame; +var() bool bSendPressedOnlyOnTouchDown; +var() bool bSendPressedOnlyOnTouchUp; + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="Input Pressed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Input Not Pressed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Mobile Button Access" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqEvent_MobileInput.uc b/exported/GameFramework/Classes/SeqEvent_MobileInput.uc new file mode 100755 index 00000000..239c76e4 --- /dev/null +++ b/exported/GameFramework/Classes/SeqEvent_MobileInput.uc @@ -0,0 +1,23 @@ +class SeqEvent_MobileInput extends SeqEvent_MobileZoneBase + native + hidecategories(Object); + +var float XAxisValue; +var float YAxisValue; +var float CenterX; +var float CenterY; +var float CurrentX; +var float CurrentY; + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="Input Active",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Input Inactive",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="X-Axis",LinkVar="None",PropertyName="XAxisValue",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Y-Axis",LinkVar="None",PropertyName="YAxisValue",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Center.X",LinkVar="None",PropertyName="CenterX",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Center.Y",LinkVar="None",PropertyName="CenterY",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[4]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Current.X",LinkVar="None",PropertyName="CurrentX",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[5]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Current.Y",LinkVar="None",PropertyName="CurrentY",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Mobile Input Access" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqEvent_MobileLook.uc b/exported/GameFramework/Classes/SeqEvent_MobileLook.uc new file mode 100755 index 00000000..19bdc973 --- /dev/null +++ b/exported/GameFramework/Classes/SeqEvent_MobileLook.uc @@ -0,0 +1,17 @@ +class SeqEvent_MobileLook extends SeqEvent_MobileZoneBase + native + hidecategories(Object); + +var float Yaw; +var float StickStrength; +var Vector RotationVector; + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="Input Active",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Input Inactive",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Yaw",LinkVar="None",PropertyName="Yaw",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Strength",LinkVar="None",PropertyName="StickStrength",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Rotation Vector",LinkVar="None",PropertyName="RotationVector",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Mobile Look" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqEvent_MobileMotion.uc b/exported/GameFramework/Classes/SeqEvent_MobileMotion.uc new file mode 100755 index 00000000..8f8a8369 --- /dev/null +++ b/exported/GameFramework/Classes/SeqEvent_MobileMotion.uc @@ -0,0 +1,28 @@ +class SeqEvent_MobileMotion extends SeqEvent_MobileBase + native + hidecategories(Object); + +var float Roll; +var float Pitch; +var float Yaw; +var float DeltaRoll; +var float DeltaPitch; +var float DeltaYaw; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="Input Active",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Pitch",LinkVar="None",PropertyName="Pitch",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Yaw",LinkVar="None",PropertyName="Yaw",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Roll",LinkVar="None",PropertyName="Roll",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Delta Pitch",LinkVar="None",PropertyName="DeltaPitch",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[4]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Delta Yaw",LinkVar="None",PropertyName="DeltaYaw",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[5]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Delta Roll",LinkVar="None",PropertyName="DeltaRoll",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Mobile Motion Access [Old]" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqEvent_MobileObjectPicker.uc b/exported/GameFramework/Classes/SeqEvent_MobileObjectPicker.uc new file mode 100755 index 00000000..41f267b3 --- /dev/null +++ b/exported/GameFramework/Classes/SeqEvent_MobileObjectPicker.uc @@ -0,0 +1,19 @@ +class SeqEvent_MobileObjectPicker extends SeqEvent_MobileRawInput + native + hidecategories(Object); + +var(Mobile) float TraceDistance; +var(Mobile) bool bCheckonTouch; +var Vector FinalTouchLocation; +var Vector FinalTouchNormal; +var Object FinalTouchObject; +var() array Targets; + +defaultproperties +{ + TraceDistance=20480.0000000 + OutputLinks[0]=(Links=none,LinkDesc="Success",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Fail",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Mobile Object Picker" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqEvent_MobileRawInput.uc b/exported/GameFramework/Classes/SeqEvent_MobileRawInput.uc new file mode 100755 index 00000000..02e1c324 --- /dev/null +++ b/exported/GameFramework/Classes/SeqEvent_MobileRawInput.uc @@ -0,0 +1,49 @@ +class SeqEvent_MobileRawInput extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +var(Mobile) int TouchIndex; +var(Mobile) int TouchpadIndex; +var float TouchLocationX; +var float TouchLocationY; +var float TimeStamp; + +event RegisterEvent() +{ + local WorldInfo WI; + local GamePlayerController GPC; + local MobilePlayerInput MPI; + + WI = Class'Engine.WorldInfo'.static.GetWorldInfo(); + // End:0xD1 + if(WI != none) + { + // End:0xD0 + foreach WI.LocalPlayerControllers(Class'GameFramework.GamePlayerController', GPC) + { + MPI = MobilePlayerInput(GPC.PlayerInput); + // End:0xCF + if(MPI != none) + { + MPI.AddKismetRawInputEventHandler(self); + // End:0xD0 + break; + } + } + } + //return; +} + +defaultproperties +{ + MaxTriggerCount=0 + OutputLinks[0]=(Links=none,LinkDesc="Touch Begin",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Touch Update",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Touch End",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Touch Cancel",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Touch Location X",LinkVar="None",PropertyName="TouchLocationX",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Touch Location Y",LinkVar="None",PropertyName="TouchLocationY",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Timestamp",LinkVar="None",PropertyName="TimeStamp",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Mobile Raw Input Access [Old]" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqEvent_MobileSwipe.uc b/exported/GameFramework/Classes/SeqEvent_MobileSwipe.uc new file mode 100755 index 00000000..ed256b3d --- /dev/null +++ b/exported/GameFramework/Classes/SeqEvent_MobileSwipe.uc @@ -0,0 +1,22 @@ +class SeqEvent_MobileSwipe extends SeqEvent_MobileRawInput + native + hidecategories(Object); + +var(swipe) float Tolerance; +var(swipe) float MinDistance; +var Vector2D InitialTouch; +var(Results) array TouchedActors; +var(Mobile) float TraceDistance; + +defaultproperties +{ + Tolerance=100.0000000 + MinDistance=5.0000000 + TraceDistance=20480.0000000 + OutputLinks[0]=(Links=none,LinkDesc="Swipe Left",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Swipe Right",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Swipe Up",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Swipe Down",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_ObjectList',LinkedVariables=none,LinkDesc="Touched Actors List",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Mobile Simple Swipes" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqEvent_MobileTouchInputVolume.uc b/exported/GameFramework/Classes/SeqEvent_MobileTouchInputVolume.uc new file mode 100755 index 00000000..c9d65f39 --- /dev/null +++ b/exported/GameFramework/Classes/SeqEvent_MobileTouchInputVolume.uc @@ -0,0 +1,12 @@ +class SeqEvent_MobileTouchInputVolume extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Touch",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Release",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Double Tap",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Touch Input Volume" +} \ No newline at end of file diff --git a/exported/GameFramework/Classes/SeqEvent_MobileZoneBase.uc b/exported/GameFramework/Classes/SeqEvent_MobileZoneBase.uc new file mode 100755 index 00000000..c3123828 --- /dev/null +++ b/exported/GameFramework/Classes/SeqEvent_MobileZoneBase.uc @@ -0,0 +1,19 @@ +class SeqEvent_MobileZoneBase extends SeqEvent_MobileBase + abstract + native + hidecategories(Object); + +var() string TargetZoneName; + +event AddToMobileInput(MobilePlayerInput MPI) +{ + local MobileInputZone Zone; + + Zone = MPI.FindZone(TargetZoneName); + // End:0x61 + if(Zone != none) + { + Zone.AddKismetEventHandler(self); + } + //return; +} diff --git a/exported/GameFramework/Classes/TouchableElement3D.uc b/exported/GameFramework/Classes/TouchableElement3D.uc new file mode 100755 index 00000000..4a970a93 --- /dev/null +++ b/exported/GameFramework/Classes/TouchableElement3D.uc @@ -0,0 +1,17 @@ +interface TouchableElement3D extends Interface + abstract; + +function HandleClick() +{ + //return; +} + +function HandleDoubleClick() +{ + //return; +} + +function HandleDragOver() +{ + //return; +} diff --git a/exported/IpDrv/Classes/ClientBeaconAddressResolver.uc b/exported/IpDrv/Classes/ClientBeaconAddressResolver.uc new file mode 100755 index 00000000..baf38e3b --- /dev/null +++ b/exported/IpDrv/Classes/ClientBeaconAddressResolver.uc @@ -0,0 +1,5 @@ +class ClientBeaconAddressResolver extends Object + native; + +var int BeaconPort; +var name BeaconName; diff --git a/exported/IpDrv/Classes/HelloWeb.uc b/exported/IpDrv/Classes/HelloWeb.uc new file mode 100755 index 00000000..1a44a83f --- /dev/null +++ b/exported/IpDrv/Classes/HelloWeb.uc @@ -0,0 +1,69 @@ +class HelloWeb extends WebApplication; + +function Init() +{ + //return; +} + +event Query(WebRequest Request, WebResponse Response) +{ + local int I; + + // End:0x7F + if((Request.UserName != "test") || Request.Password != "test") + { + Response.FailAuthentication("HelloWeb"); + return; + } + switch(Request.URI) + { + // End:0x330 + case "/form.html": + Response.SendText("
"); + Response.SendText(""); + Response.SendText("

"); + Response.SendText(""); + Response.SendText("

"); + // End:0x6AE + break; + // End:0x4E0 + case "/submit.html": + Response.SendText("Thanks for submitting the form.
"); + Response.SendText(("TestEdit was \"" $ Request.GetVariable("TestEdit")) $ "\"

"); + Response.SendText("You selected these items:
"); + I = Request.GetVariableCount("selecter") - 1; + J0x45F: + + // End:0x4DD [Loop If] + if(I >= 0) + { + Response.SendText(("\"" $ Request.GetVariableNumber("selecter", I)) $ "\"
"); + I--; + // [Loop Continue] + goto J0x45F; + } + // End:0x6AE + break; + // End:0x5E3 + case "/include.html": + Response.Subst("variable1", "This is variable 1"); + Response.Subst("variable2", "This is variable 2"); + Response.Subst("variable3", "This is variable 3"); + Response.IncludeUHTM("testinclude.html"); + // End:0x6AE + break; + // End:0xFFFF + default: + Response.SendText("Hello web! The current level is " $ WorldInfo.Title); + Response.SendText("
Click this link to go to a test form"); + // End:0x6AE + break; + break; + } + //return; +} diff --git a/exported/IpDrv/Classes/ImageServer.uc b/exported/IpDrv/Classes/ImageServer.uc new file mode 100755 index 00000000..2c5c709d --- /dev/null +++ b/exported/IpDrv/Classes/ImageServer.uc @@ -0,0 +1,52 @@ +class ImageServer extends WebApplication; + +event Query(WebRequest Request, WebResponse Response) +{ + local string Image; + + Image = Request.URI; + // End:0x8A + if(!Response.FileExists(Path $ Image)) + { + Response.HTTPError(404); + return; + } + else + { + // End:0xF0 + if((Right(Caps(Image), 4) == ".JPG") || Right(Caps(Image), 5) == ".JPEG") + { + Response.SendStandardHeaders("image/jpeg", true); + } + else + { + // End:0x138 + if(Right(Caps(Image), 4) == ".GIF") + { + Response.SendStandardHeaders("image/gif", true); + } + else + { + // End:0x180 + if(Right(Caps(Image), 4) == ".BMP") + { + Response.SendStandardHeaders("image/bmp", true); + } + else + { + // End:0x1C8 + if(Right(Caps(Image), 4) == ".PNG") + { + Response.SendStandardHeaders("image/png", true); + } + else + { + Response.SendStandardHeaders("application/octet-stream", true); + } + } + } + } + } + Response.IncludeBinaryFile(Path $ Image); + //return; +} diff --git a/exported/IpDrv/Classes/InternetLink.uc b/exported/IpDrv/Classes/InternetLink.uc new file mode 100755 index 00000000..27446631 --- /dev/null +++ b/exported/IpDrv/Classes/InternetLink.uc @@ -0,0 +1,74 @@ +class InternetLink extends Info + transient + native + hidecategories(Navigation,Movement,Collision); + +enum ELinkMode +{ + MODE_Text, // 0 + MODE_Line, // 1 + MODE_Binary, // 2 + MODE_MAX // 3 +}; + +enum ELineMode +{ + LMODE_auto, // 0 + LMODE_DOS, // 1 + LMODE_UNIX, // 2 + LMODE_MAC, // 3 + LMODE_MAX // 4 +}; + +enum EReceiveMode +{ + RMODE_Manual, // 0 + RMODE_Event, // 1 + RMODE_MAX // 2 +}; + +var InternetLink.ELinkMode LinkMode; +var InternetLink.ELineMode InLineMode; +var InternetLink.ELineMode OutLineMode; +var InternetLink.EReceiveMode ReceiveMode; +var const Pointer Socket; +var const int Port; +var const Pointer RemoteSocket; +var private native const Pointer PrivateResolveInfo; +var const int DataPending; + +// Export UInternetLink::execIsDataPending(FFrame&, void* const) +native function bool IsDataPending(); + +// Export UInternetLink::execParseURL(FFrame&, void* const) +native function bool ParseURL(coerce string URL, out string Addr, out int PortNum, out string LevelName, out string EntryName); + +// Export UInternetLink::execResolve(FFrame&, void* const) +native function Resolve(coerce string Domain); + +// Export UInternetLink::execGetLastError(FFrame&, void* const) +native function int GetLastError(); + +// Export UInternetLink::execIpAddrToString(FFrame&, void* const) +native function string IpAddrToString(IpAddr Arg); + +// Export UInternetLink::execStringToIpAddr(FFrame&, void* const) +native function bool StringToIpAddr(string Str, out IpAddr Addr); + +// Export UInternetLink::execGetLocalIP(FFrame&, void* const) +native function GetLocalIP(out IpAddr Arg); + +event Resolved(IpAddr Addr) +{ + //return; +} + +event ResolveFailed() +{ + //return; +} + +defaultproperties +{ + ReceiveMode=EReceiveMode.RMODE_Event +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/IpDrv.UPKG b/exported/IpDrv/Classes/IpDrv.UPKG new file mode 100755 index 00000000..7d148dd8 --- /dev/null +++ b/exported/IpDrv/Classes/IpDrv.UPKG @@ -0,0 +1,4 @@ +[Flags] +AllowDownload=False +ClientOptional=False +ServerSideOnly=True diff --git a/exported/IpDrv/Classes/MCPBase.uc b/exported/IpDrv/Classes/MCPBase.uc new file mode 100755 index 00000000..7d217d1c --- /dev/null +++ b/exported/IpDrv/Classes/MCPBase.uc @@ -0,0 +1,6 @@ +class MCPBase extends McpServiceBase + abstract + native + config(Engine); + +var private native const noexport Pointer VfTable_FTickableObject; diff --git a/exported/IpDrv/Classes/McpClashMobBase.uc b/exported/IpDrv/Classes/McpClashMobBase.uc new file mode 100755 index 00000000..68fd4826 --- /dev/null +++ b/exported/IpDrv/Classes/McpClashMobBase.uc @@ -0,0 +1,310 @@ +class McpClashMobBase extends McpServiceBase + abstract + config(Engine); + +enum McpChallengeFileStatus +{ + MCFS_NotStarted, // 0 + MCFS_Pending, // 1 + MCFS_Success, // 2 + MCFS_Failed, // 3 + MCFS_MAX // 4 +}; + +struct McpClashMobChallengeFile +{ + var bool should_keep_post_challenge; + var string title_id; + var string file_name; + var string dl_name; + var string hash_code; + var string Type; + var McpClashMobBase.McpChallengeFileStatus Status; + + structdefaultproperties + { + should_keep_post_challenge=false + title_id="" + file_name="" + dl_name="" + hash_code="" + Type="" + Status=McpChallengeFileStatus.MCFS_NotStarted + } +}; + +struct McpClashMobPushNotificationParams +{ + var int bah; + + structdefaultproperties + { + bah=0 + } +}; + +struct McpClashMobPushNotification +{ + var array device_tokens; + var string badge_type; + var string Sound; + var string Message; + var McpClashMobPushNotificationParams Params; + + structdefaultproperties + { + device_tokens=none + badge_type="" + Sound="" + Message="" + Params=(bah=0) + } +}; + +struct McpClashMobChallengeEvent +{ + var string unique_challenge_id; + var string Description; + var string visible_date; + var string start_date; + var string end_date; + var string completed_date; + var string purge_date; + var int repeat_after_days; + var int repeat_count; + var string challenge_type; + var int num_attempts; + var int num_successful_attempts; + var int goal_value; + var int goal_start_value; + var int goal_current_value; + var bool has_started; + var bool is_visible; + var bool has_completed; + var bool was_successful; + var array file_list; + var McpClashMobPushNotification start_notification; + var McpClashMobPushNotification end_notification; + var int facebook_likes; + var string facebook_comments; + var float facebook_like_scaler; + var float facebook_comment_scaler; + var int facebook_like_goal_progress; + var int facebook_comment_goal_progress; + var string facebook_id; + var string facebook_post_message; + var bool wants_facebook_posting; + var int twitter_retweets; + var float twitter_retweets_scaler; + var int twitter_goal_progress; + var string twitter_id; + var string twitter_message; + var bool wants_twitter_posting; + + structdefaultproperties + { + unique_challenge_id="" + Description="" + visible_date="" + start_date="" + end_date="" + completed_date="" + purge_date="" + repeat_after_days=0 + repeat_count=0 + challenge_type="" + num_attempts=0 + num_successful_attempts=0 + goal_value=0 + goal_start_value=0 + goal_current_value=0 + has_started=false + is_visible=false + has_completed=false + was_successful=false + file_list=none + start_notification=(device_tokens=none,badge_type="",Sound="",Message="",Params=(bah=0)) + end_notification=(device_tokens=none,badge_type="",Sound="",Message="",Params=(bah=0)) + facebook_likes=0 + facebook_comments="" + facebook_like_scaler=0.0000000 + facebook_comment_scaler=0.0000000 + facebook_like_goal_progress=0 + facebook_comment_goal_progress=0 + facebook_id="" + facebook_post_message="" + wants_facebook_posting=false + twitter_retweets=0 + twitter_retweets_scaler=0.0000000 + twitter_goal_progress=0 + twitter_id="" + twitter_message="" + wants_twitter_posting=false + } +}; + +struct McpClashMobChallengeUserStatus +{ + var string unique_challenge_id; + var string unique_user_id; + var int num_attempts; + var int num_successful_attempts; + var int goal_progress; + var bool did_complete; + var string last_update_time; + var int user_award_given; + var string accept_time; + var bool did_preregister; + var string facebook_like_time; + var bool enrolled_via_facebook; + var bool liked_via_facebook; + var bool commented_via_facebook; + var string twitter_retweet_time; + var bool enrolled_via_twitter; + var bool retweeted; + + structdefaultproperties + { + unique_challenge_id="" + unique_user_id="" + num_attempts=0 + num_successful_attempts=0 + goal_progress=0 + did_complete=false + last_update_time="" + user_award_given=0 + accept_time="" + did_preregister=false + facebook_like_time="" + enrolled_via_facebook=false + liked_via_facebook=false + commented_via_facebook=false + twitter_retweet_time="" + enrolled_via_twitter=false + retweeted=false + } +}; + +var config string McpClashMobClassName; +//var delegate __OnQueryChallengeListComplete__Delegate; +//var delegate __OnDownloadChallengeFileComplete__Delegate; +//var delegate __OnAcceptChallengeComplete__Delegate; +//var delegate __OnQueryChallengeUserStatusComplete__Delegate; +//var delegate __OnUpdateChallengeUserProgressComplete__Delegate; +//var delegate __OnUpdateChallengeUserRewardComplete__Delegate; + +static final function McpClashMobBase CreateInstance() +{ + local Class McpClashMobBaseClass; + local McpClashMobBase NewInstance; + + McpClashMobBaseClass = Class(DynamicLoadObject(default.McpClashMobClassName, Class'Core.Class')); + // End:0x76 + if(McpClashMobBaseClass != none) + { + NewInstance = new McpClashMobBaseClass; + NewInstance.Init(); + } + return NewInstance; + //return ReturnValue; +} + +delegate OnQueryChallengeListComplete(bool bWasSuccessful, string Error) +{ + //return; +} + +function QueryChallengeList() +{ + //return; +} + +function GetChallengeList(out array OutChallengeEvents) +{ + //return; +} + +delegate OnDownloadChallengeFileComplete(bool bWasSuccessful, string UniqueChallengeId, string DLName, string Filename, string Error) +{ + //return; +} + +function GetChallengeFileList(string UniqueChallengeId, out array OutChallengeFiles) +{ + //return; +} + +function DownloadChallengeFile(string UniqueChallengeId, string DLName) +{ + //return; +} + +function GetChallengeFileContents(string UniqueChallengeId, string DLName, out array OutFileContents) +{ + //return; +} + +function ClearCachedChallengeFile(string UniqueChallengeId, string DLName) +{ + //return; +} + +function DeleteCachedChallengeFile(string UniqueChallengeId, string DLName) +{ + //return; +} + +delegate OnAcceptChallengeComplete(bool bWasSuccessful, string UniqueChallengeId, string UniqueUserId, string Error) +{ + //return; +} + +function AcceptChallenge(string UniqueChallengeId, string UniqueUserId) +{ + //return; +} + +delegate OnQueryChallengeUserStatusComplete(bool bWasSuccessful, string UniqueChallengeId, string UniqueUserId, string Error) +{ + //return; +} + +function QueryChallengeUserStatus(string UniqueChallengeId, string UniqueUserId) +{ + //return; +} + +function QueryChallengeMultiUserStatus(string UniqueChallengeId, string UniqueUserId, const out array UserIdsToRead) +{ + //return; +} + +function GetChallengeUserStatus(string UniqueChallengeId, string UniqueUserId, out McpClashMobChallengeUserStatus OutChallengeUserStatus) +{ + //return; +} + +delegate OnUpdateChallengeUserProgressComplete(bool bWasSuccessful, string UniqueChallengeId, string UniqueUserId, string Error) +{ + //return; +} + +function UpdateChallengeUserProgress(string UniqueChallengeId, string UniqueUserId, bool bDidComplete, int GoalProgress) +{ + //return; +} + +delegate OnUpdateChallengeUserRewardComplete(bool bWasSuccessful, string UniqueChallengeId, string UniqueUserId, string Error) +{ + //return; +} + +function UpdateChallengeUserReward(string UniqueChallengeId, string UniqueUserId, int UserReward) +{ + //return; +} + +defaultproperties +{ + McpClashMobClassName="IpDrv.McpClashMobManager" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpClashMobFileDownload.uc b/exported/IpDrv/Classes/McpClashMobFileDownload.uc new file mode 100755 index 00000000..478376d1 --- /dev/null +++ b/exported/IpDrv/Classes/McpClashMobFileDownload.uc @@ -0,0 +1,16 @@ +class McpClashMobFileDownload extends OnlineTitleFileDownloadWeb + config(Engine); + +function string GetUrlForFile(string Filename) +{ + local string URL; + + URL = ((((((GetBaseURL()) $ RequestFileURL) $ "?appKey=") $ McpConfig.AppKey) $ "&appSecret=") $ McpConfig.AppSecret) $ "&dlName="; + return URL; + //return ReturnValue; +} + +defaultproperties +{ + RequestFileURL="/challengefile" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpClashMobManager.uc b/exported/IpDrv/Classes/McpClashMobManager.uc new file mode 100755 index 00000000..1c43b905 --- /dev/null +++ b/exported/IpDrv/Classes/McpClashMobManager.uc @@ -0,0 +1,1156 @@ +class McpClashMobManager extends McpClashMobBase + config(Engine); + +struct McpChallengeRequest +{ + var string UniqueChallengeId; + var HttpRequestInterface HTTPRequest; + + structdefaultproperties + { + UniqueChallengeId="" + HTTPRequest=none + } +}; + +struct McpChallengeUserRequest +{ + var string UniqueUserId; + var array ChallengeStatusRequests; + var array ChallengeAcceptRequests; + var array ChallengeUpdateProgressRequests; + var array ChallengeUpdateRewardRequests; + + structdefaultproperties + { + UniqueUserId="" + ChallengeStatusRequests=none + ChallengeAcceptRequests=none + ChallengeUpdateProgressRequests=none + ChallengeUpdateRewardRequests=none + } +}; + +var config string ChallengeListUrl; +var config string ChallengeStatusUrl; +var config string ChallengeMultiStatusUrl; +var config string AcceptChallengeUrl; +var config string UpdateChallengeProgressUrl; +var config string UpdateRewardProgressUrl; +var HttpRequestInterface HTTPRequestChallengeList; +var array ChallengeUserRequests; +var array ChallengeEvents; +var array ChallengeUserStatus; +var McpClashMobChallengeUserStatus TempChallengeUserStatus; +var array TempChallengeUserStatusArray; +var OnlineTitleFileCacheInterface FileCache; +var McpClashMobFileDownload FileDownloader; + +function Init() +{ + super(McpServiceBase).Init(); + // End:0x9C + if(EqualEqual_InterfaceInterface(FileCache, OnlineTitleFileCacheInterface(none))) + { + FileCache = OnlineTitleFileCacheInterface(new Class'IpDrv.TitleFileDownloadCache'); + // End:0x9C + if(NotEqual_InterfaceInterface(FileCache, OnlineTitleFileCacheInterface(none))) + { + FileCache.AddLoadTitleFileCompleteDelegate(OnLoadCachedFileComplete); + } + } + // End:0x121 + if(FileDownloader == none) + { + FileDownloader = new Class'IpDrv.McpClashMobFileDownload'; + FileDownloader.Init(); + // End:0x121 + if(FileDownloader != none) + { + FileDownloader.AddReadTitleFileCompleteDelegate(OnDownloadMcpFileComplete); + } + } + //return; +} + +function QueryChallengeList() +{ + local string URL, ErrorStr; + local bool bPending; + + // End:0x156 + if(HTTPRequestChallengeList == none) + { + HTTPRequestChallengeList = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x153 + if(HTTPRequestChallengeList != none) + { + URL = ((GetBaseURL()) $ ChallengeListUrl) $ (GetAppAccessURL()); + HTTPRequestChallengeList.SetURL(URL); + HTTPRequestChallengeList.SetVerb("GET"); + HTTPRequestChallengeList.__OnProcessRequestComplete__Delegate = OnQueryChallengeListHTTPRequestComplete; + // End:0x11F + if(HTTPRequestChallengeList.ProcessRequest()) + { + bPending = true; + } + else + { + ErrorStr = "failed to start request, Url=" $ URL; + } + } + } + else + { + ErrorStr = "last request is still being processed"; + } + // End:0x198 + if(Len(ErrorStr) > 0) + { + } + // End:0x1C4 + if(!bPending) + { + OnQueryChallengeListComplete(false, ErrorStr); + } + //return; +} + +private final function OnQueryChallengeListHTTPRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local string JSONStr, ErrorStr; + local bool bResult; + + HTTPRequestChallengeList = none; + // End:0x102 + if(bWasSuccessful && Response != none) + { + // End:0xAB + if(Response.GetResponseCode() == 200) + { + JSONStr = Response.GetContentAsString(); + ImportJSON("ChallengeEvents", JSONStr); + bResult = true; + } + else + { + ErrorStr = "invalid server response code, status=" $ string(Response.GetResponseCode()); + } + } + else + { + ErrorStr = "no response"; + } + // End:0x12A + if(Len(ErrorStr) > 0) + { + } + OnQueryChallengeListComplete(bResult, ErrorStr); + //return; +} + +function GetChallengeList(out array OutChallengeEvents) +{ + OutChallengeEvents = ChallengeEvents; + //return; +} + +function GetChallengeFileList(string UniqueChallengeId, out array OutChallengeFiles) +{ + local int ChallengeEventIdx; + + OutChallengeFiles.Length = 0; + ChallengeEventIdx = ChallengeEvents.Find('unique_challenge_id', UniqueChallengeId); + // End:0x7B + if(ChallengeEventIdx != -1) + { + OutChallengeFiles = ChallengeEvents[ChallengeEventIdx].file_list; + } + //return; +} + +function DownloadChallengeFile(string UniqueChallengeId, string DLName) +{ + local string ErrorStr; + local int ChallengeIdx, FileIdx; + local bool bPending; + + ChallengeIdx = ChallengeEvents.Find('unique_challenge_id', UniqueChallengeId); + // End:0x1A0 + if(ChallengeIdx != -1) + { + FileIdx = ChallengeEvents[ChallengeIdx].file_list.Find('dl_name', DLName); + // End:0x13C + if(FileIdx != -1) + { + ChallengeEvents[ChallengeIdx].file_list[FileIdx].Status = 1; + FileCache.ClearCachedFile(DLName); + FileCache.LoadTitleFile(DLName); + bPending = true; + } + else + { + ErrorStr = ((("Couldn't find file entry for" $ " UniqueChallengeId=") $ UniqueChallengeId) $ " DlName=") $ UniqueChallengeId; + } + } + else + { + ErrorStr = ("Couldn't find event entry for" $ " UniqueChallengeId=") $ UniqueChallengeId; + } + // End:0x1FC + if(Len(ErrorStr) > 0) + { + } + // End:0x23C + if(!bPending) + { + OnDownloadChallengeFileComplete(false, UniqueChallengeId, DLName, "", ErrorStr); + } + //return; +} + +private final function OnLoadCachedFileComplete(bool bWasSuccessful, string DLName) +{ + local bool bRequiresDownload; + local string FileHashCache, FileHashChallenge, Filename; + local int ChallengeIdx, FileIdx; + local array FileContents; + + ChallengeIdx = 0; + J0x0B: + + // End:0x8D [Loop If] + if(ChallengeIdx < ChallengeEvents.Length) + { + FileIdx = ChallengeEvents[ChallengeIdx].file_list.Find('dl_name', DLName); + // End:0x7F + if(FileIdx != -1) + { + // [Explicit Break] + goto J0x8D; + } + ChallengeIdx++; + // [Loop Continue] + goto J0x0B; + } + J0x8D: + + // End:0x39B + if(FileIdx != -1) + { + ChallengeEvents[ChallengeIdx].file_list[FileIdx].Status = 3; + Filename = ChallengeEvents[ChallengeIdx].file_list[FileIdx].file_name; + bRequiresDownload = true; + // End:0x2CB + if(bWasSuccessful) + { + FileHashChallenge = ChallengeEvents[ChallengeIdx].file_list[FileIdx].hash_code; + // End:0x2CB + if(Len(FileHashChallenge) > 0) + { + FileHashCache = FileCache.GetTitleFileHash(DLName); + // End:0x2CB + if((FileHashCache == FileHashChallenge) && FileCache.GetTitleFileContents(DLName, FileContents)) + { + ChallengeEvents[ChallengeIdx].file_list[FileIdx].Status = 2; + OnDownloadChallengeFileComplete(true, ChallengeEvents[ChallengeIdx].unique_challenge_id, DLName, Filename, ""); + bRequiresDownload = false; + } + } + } + // End:0x398 + if(bRequiresDownload) + { + ChallengeEvents[ChallengeIdx].file_list[FileIdx].Status = 1; + FileCache.DeleteTitleFile(DLName); + FileDownloader.ClearDownloadedFile(DLName); + FileDownloader.ReadTitleFile(DLName); + } + } + //return; +} + +function OnDownloadMcpFileComplete(bool bWasSuccessful, string DLName) +{ + local array FileContents; + local int ChallengeIdx, FileIdx; + local string Filename; + + ChallengeIdx = 0; + J0x0B: + + // End:0x8D [Loop If] + if(ChallengeIdx < ChallengeEvents.Length) + { + FileIdx = ChallengeEvents[ChallengeIdx].file_list.Find('dl_name', DLName); + // End:0x7F + if(FileIdx != -1) + { + // [Explicit Break] + goto J0x8D; + } + ChallengeIdx++; + // [Loop Continue] + goto J0x0B; + } + J0x8D: + + // End:0x307 + if(FileIdx != -1) + { + // End:0x264 + if(bWasSuccessful && FileDownloader.GetTitleFileContents(DLName, FileContents)) + { + ChallengeEvents[ChallengeIdx].file_list[FileIdx].Status = 2; + Filename = ChallengeEvents[ChallengeIdx].file_list[FileIdx].file_name; + FileCache.SaveTitleFile(DLName, ChallengeEvents[ChallengeIdx].file_list[FileIdx].file_name, FileContents); + FileDownloader.ClearDownloadedFile(DLName); + OnDownloadChallengeFileComplete(true, ChallengeEvents[ChallengeIdx].unique_challenge_id, DLName, Filename, ""); + } + else + { + ChallengeEvents[ChallengeIdx].file_list[FileIdx].Status = 3; + OnDownloadChallengeFileComplete(false, ChallengeEvents[ChallengeIdx].unique_challenge_id, DLName, Filename, "FileNotFound"); + } + } + //return; +} + +function GetChallengeFileContents(string UniqueChallengeId, string DLName, out array OutFileContents) +{ + local int ChallengeIdx, FileIdx; + + OutFileContents.Length = 0; + ChallengeIdx = ChallengeEvents.Find('unique_challenge_id', UniqueChallengeId); + // End:0x12E + if(ChallengeIdx != -1) + { + FileIdx = ChallengeEvents[ChallengeIdx].file_list.Find('dl_name', DLName); + // End:0x12B + if(FileIdx != -1) + { + // End:0x128 + if((int(ChallengeEvents[ChallengeIdx].file_list[FileIdx].Status) != int(2)) || !FileCache.GetTitleFileContents(DLName, OutFileContents)) + { + } + } + } + //return; +} + +function ClearCachedChallengeFile(string UniqueChallengeId, string DLName) +{ + local int ChallengeIdx, FileIdx; + + ChallengeIdx = ChallengeEvents.Find('unique_challenge_id', UniqueChallengeId); + // End:0x115 + if(ChallengeIdx != -1) + { + FileIdx = ChallengeEvents[ChallengeIdx].file_list.Find('dl_name', DLName); + // End:0x112 + if(FileIdx != -1) + { + // End:0x10F + if(int(ChallengeEvents[ChallengeIdx].file_list[FileIdx].Status) != int(1)) + { + FileCache.ClearCachedFile(DLName); + } + } + } + //return; +} + +function DeleteCachedChallengeFile(string UniqueChallengeId, string DLName) +{ + local int ChallengeIdx, FileIdx; + + ChallengeIdx = ChallengeEvents.Find('unique_challenge_id', UniqueChallengeId); + // End:0x115 + if(ChallengeIdx != -1) + { + FileIdx = ChallengeEvents[ChallengeIdx].file_list.Find('dl_name', DLName); + // End:0x112 + if(FileIdx != -1) + { + // End:0x10F + if(int(ChallengeEvents[ChallengeIdx].file_list[FileIdx].Status) != int(1)) + { + FileCache.DeleteTitleFile(DLName); + } + } + } + //return; +} + +function AcceptChallenge(string UniqueChallengeId, string UniqueUserId) +{ + local string URL, ErrorStr; + local int ChallengeQueryIdx, UserQueryIdx; + local bool bPending; + local HttpRequestInterface Request; + + UserQueryIdx = ChallengeUserRequests.Find('UniqueUserId', UniqueUserId); + // End:0x98 + if(UserQueryIdx == -1) + { + UserQueryIdx = ChallengeUserRequests.Length; + ChallengeUserRequests.Length = ChallengeUserRequests.Length + 1; + ChallengeUserRequests[UserQueryIdx].UniqueUserId = UniqueUserId; + } + ChallengeQueryIdx = ChallengeUserRequests[UserQueryIdx].ChallengeAcceptRequests.Find('UniqueChallengeId', UniqueChallengeId); + // End:0x1C1 + if(ChallengeQueryIdx == -1) + { + ChallengeQueryIdx = ChallengeUserRequests[UserQueryIdx].ChallengeAcceptRequests.Length; + ChallengeUserRequests[UserQueryIdx].ChallengeAcceptRequests.Length = ChallengeUserRequests[UserQueryIdx].ChallengeAcceptRequests.Length + 1; + ChallengeUserRequests[UserQueryIdx].ChallengeAcceptRequests[ChallengeQueryIdx].UniqueChallengeId = UniqueChallengeId; + } + // End:0x420 + if(ChallengeUserRequests[UserQueryIdx].ChallengeAcceptRequests[ChallengeQueryIdx].HTTPRequest == none) + { + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x41D + if(Request != none) + { + ChallengeUserRequests[UserQueryIdx].ChallengeAcceptRequests[ChallengeQueryIdx].HTTPRequest = Request; + URL = ((((((GetBaseURL()) $ AcceptChallengeUrl) $ (GetAppAccessURL())) $ "&uniqueChallengeId=") $ UniqueChallengeId) $ "&uniqueUserId=") $ UniqueUserId; + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.SetHeader("Content-Type", "multipart/form-data"); + Request.__OnProcessRequestComplete__Delegate = OnAcceptChallengeHTTPRequestComplete; + // End:0x3E9 + if(Request.ProcessRequest()) + { + bPending = true; + } + else + { + ErrorStr = "failed to start request, Url=" $ URL; + } + } + } + else + { + ErrorStr = "last request is still being processed"; + } + // End:0x462 + if(Len(ErrorStr) > 0) + { + } + // End:0x4A0 + if(!bPending) + { + OnAcceptChallengeComplete(false, UniqueChallengeId, UniqueUserId, ErrorStr); + } + //return; +} + +private final function OnAcceptChallengeHTTPRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local string UniqueChallengeId, UniqueUserId, ErrorStr; + local bool bResult; + local int UserQueryIdx, ChallengeQueryIdx; + + UserQueryIdx = 0; + J0x0B: + + // End:0x8D [Loop If] + if(UserQueryIdx < ChallengeUserRequests.Length) + { + ChallengeQueryIdx = ChallengeUserRequests[UserQueryIdx].ChallengeAcceptRequests.Find('HTTPRequest', Request); + // End:0x7F + if(ChallengeQueryIdx != -1) + { + // [Explicit Break] + goto J0x8D; + } + UserQueryIdx++; + // [Loop Continue] + goto J0x0B; + } + J0x8D: + + // End:0x23B + if((UserQueryIdx != -1) && ChallengeQueryIdx != -1) + { + ChallengeUserRequests[UserQueryIdx].ChallengeAcceptRequests[ChallengeQueryIdx].HTTPRequest = none; + UniqueUserId = ChallengeUserRequests[UserQueryIdx].UniqueUserId; + UniqueChallengeId = ChallengeUserRequests[UserQueryIdx].ChallengeAcceptRequests[ChallengeQueryIdx].UniqueChallengeId; + // End:0x221 + if(bWasSuccessful && Response != none) + { + // End:0x1CA + if(Response.GetResponseCode() == 200) + { + bResult = true; + } + else + { + ErrorStr = "invalid server response code, status=" $ string(Response.GetResponseCode()); + } + } + else + { + ErrorStr = "no response"; + } + } + else + { + ErrorStr = "couldn't find user/challenge entry for request"; + } + // End:0x286 + if(Len(ErrorStr) > 0) + { + } + OnAcceptChallengeComplete(bResult, UniqueChallengeId, UniqueUserId, ErrorStr); + //return; +} + +function QueryChallengeUserStatus(string UniqueChallengeId, string UniqueUserId) +{ + local string URL, ErrorStr; + local int ChallengeQueryIdx, UserQueryIdx; + local bool bPending; + local HttpRequestInterface Request; + + UserQueryIdx = ChallengeUserRequests.Find('UniqueUserId', UniqueUserId); + // End:0x98 + if(UserQueryIdx == -1) + { + UserQueryIdx = ChallengeUserRequests.Length; + ChallengeUserRequests.Length = ChallengeUserRequests.Length + 1; + ChallengeUserRequests[UserQueryIdx].UniqueUserId = UniqueUserId; + } + ChallengeQueryIdx = ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests.Find('UniqueChallengeId', UniqueChallengeId); + // End:0x1C1 + if(ChallengeQueryIdx == -1) + { + ChallengeQueryIdx = ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests.Length; + ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests.Length = ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests.Length + 1; + ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests[ChallengeQueryIdx].UniqueChallengeId = UniqueChallengeId; + } + // End:0x420 + if(ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests[ChallengeQueryIdx].HTTPRequest == none) + { + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x41D + if(Request != none) + { + ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests[ChallengeQueryIdx].HTTPRequest = Request; + URL = ((((((GetBaseURL()) $ ChallengeStatusUrl) $ (GetAppAccessURL())) $ "&uniqueChallengeId=") $ UniqueChallengeId) $ "&uniqueUserId=") $ UniqueUserId; + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.SetHeader("Content-Type", "multipart/form-data"); + Request.__OnProcessRequestComplete__Delegate = OnQueryChallengeStatusHTTPRequestComplete; + // End:0x3E9 + if(Request.ProcessRequest()) + { + bPending = true; + } + else + { + ErrorStr = "failed to start request, Url=" $ URL; + } + } + } + else + { + ErrorStr = "last request is still being processed"; + } + // End:0x462 + if(Len(ErrorStr) > 0) + { + } + // End:0x4A0 + if(!bPending) + { + OnQueryChallengeUserStatusComplete(false, UniqueChallengeId, UniqueUserId, ErrorStr); + } + //return; +} + +private final function OnQueryChallengeStatusHTTPRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local string JSONStr, UniqueChallengeId, UniqueUserId, ErrorStr; + local bool bResult; + local int UserQueryIdx, ChallengeQueryIdx, UserStatusIdx; + + UserQueryIdx = 0; + J0x0B: + + // End:0x8D [Loop If] + if(UserQueryIdx < ChallengeUserRequests.Length) + { + ChallengeQueryIdx = ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests.Find('HTTPRequest', Request); + // End:0x7F + if(ChallengeQueryIdx != -1) + { + // [Explicit Break] + goto J0x8D; + } + UserQueryIdx++; + // [Loop Continue] + goto J0x0B; + } + J0x8D: + + // End:0x3D4 + if((UserQueryIdx < ChallengeUserRequests.Length) && ChallengeQueryIdx != -1) + { + ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests[ChallengeQueryIdx].HTTPRequest = none; + UniqueUserId = ChallengeUserRequests[UserQueryIdx].UniqueUserId; + UniqueChallengeId = ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests[ChallengeQueryIdx].UniqueChallengeId; + // End:0x3BA + if(bWasSuccessful && Response != none) + { + // End:0x363 + if(Response.GetResponseCode() == 200) + { + JSONStr = Response.GetContentAsString(); + // End:0x344 + if(Len(JSONStr) > 0) + { + ImportJSON("TempChallengeUserStatus", JSONStr); + // End:0x335 + if(Len(TempChallengeUserStatus.unique_challenge_id) > 0) + { + UserStatusIdx = 0; + J0x255: + + // End:0x2E8 [Loop If] + if(UserStatusIdx < ChallengeUserStatus.Length) + { + // End:0x2DA + if((ChallengeUserStatus[UserStatusIdx].unique_challenge_id == UniqueChallengeId) && ChallengeUserStatus[UserStatusIdx].unique_user_id == UniqueUserId) + { + // [Explicit Break] + goto J0x2E8; + } + UserStatusIdx++; + // [Loop Continue] + goto J0x255; + } + J0x2E8: + + // End:0x318 + if(UserStatusIdx == ChallengeUserStatus.Length) + { + ChallengeUserStatus.Length = ChallengeUserStatus.Length + 1; + } + ChallengeUserStatus[UserStatusIdx] = TempChallengeUserStatus; + } + bResult = true; + } + else + { + ErrorStr = "no JSON response"; + } + } + else + { + ErrorStr = "invalid server response code, status=" $ string(Response.GetResponseCode()); + } + } + else + { + ErrorStr = "no response"; + } + } + else + { + ErrorStr = "couldn't find user/challenge entry for request"; + } + // End:0x41F + if(Len(ErrorStr) > 0) + { + } + OnQueryChallengeUserStatusComplete(bResult, UniqueChallengeId, UniqueUserId, ErrorStr); + //return; +} + +function QueryChallengeMultiUserStatus(string UniqueChallengeId, string UniqueUserId, const out array UserIdsToRead) +{ + local string URL, ErrorStr, JSONStr; + local int ChallengeQueryIdx, UserQueryIdx, UserIdIdx; + local bool bPending; + local HttpRequestInterface Request; + + UserQueryIdx = ChallengeUserRequests.Find('UniqueUserId', UniqueUserId); + // End:0x98 + if(UserQueryIdx == -1) + { + UserQueryIdx = ChallengeUserRequests.Length; + ChallengeUserRequests.Length = ChallengeUserRequests.Length + 1; + ChallengeUserRequests[UserQueryIdx].UniqueUserId = UniqueUserId; + } + ChallengeQueryIdx = ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests.Find('UniqueChallengeId', UniqueChallengeId); + // End:0x1C1 + if(ChallengeQueryIdx == -1) + { + ChallengeQueryIdx = ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests.Length; + ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests.Length = ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests.Length + 1; + ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests[ChallengeQueryIdx].UniqueChallengeId = UniqueChallengeId; + } + // End:0x505 + if(ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests[ChallengeQueryIdx].HTTPRequest == none) + { + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x502 + if(Request != none) + { + ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests[ChallengeQueryIdx].HTTPRequest = Request; + JSONStr = "[ "; + UserIdIdx = 0; + J0x2A8: + + // End:0x333 [Loop If] + if(UserIdIdx < UserIdsToRead.Length) + { + JSONStr $= (("\"" $ UserIdsToRead[UserIdIdx]) $ "\""); + // End:0x325 + if((UserIdIdx + 1) < UserIdsToRead.Length) + { + JSONStr $= ","; + } + UserIdIdx++; + // [Loop Continue] + goto J0x2A8; + } + JSONStr $= " ]"; + Request.SetContentAsString(JSONStr); + URL = ((((((GetBaseURL()) $ ChallengeMultiStatusUrl) $ (GetAppAccessURL())) $ "&uniqueChallengeId=") $ UniqueChallengeId) $ "&uniqueUserId=") $ UniqueUserId; + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.SetHeader("Content-Type", "multipart/form-data"); + Request.__OnProcessRequestComplete__Delegate = OnQueryChallengeMultiStatusHTTPRequestComplete; + // End:0x4CE + if(Request.ProcessRequest()) + { + bPending = true; + } + else + { + ErrorStr = "failed to start request, Url=" $ URL; + } + } + } + else + { + ErrorStr = "last request is still being processed"; + } + // End:0x547 + if(Len(ErrorStr) > 0) + { + } + // End:0x585 + if(!bPending) + { + OnQueryChallengeUserStatusComplete(false, UniqueChallengeId, UniqueUserId, ErrorStr); + } + //return; +} + +private final function OnQueryChallengeMultiStatusHTTPRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local string JSONStr, UniqueChallengeId, UniqueUserId, ErrorStr; + local bool bResult; + local int UserQueryIdx, ChallengeQueryIdx, UserStatusIdx, TempUserStatusIdx; + + UserQueryIdx = 0; + J0x0B: + + // End:0x8D [Loop If] + if(UserQueryIdx < ChallengeUserRequests.Length) + { + ChallengeQueryIdx = ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests.Find('HTTPRequest', Request); + // End:0x7F + if(ChallengeQueryIdx != -1) + { + // [Explicit Break] + goto J0x8D; + } + UserQueryIdx++; + // [Loop Continue] + goto J0x0B; + } + J0x8D: + + // End:0x446 + if((UserQueryIdx < ChallengeUserRequests.Length) && ChallengeQueryIdx != -1) + { + ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests[ChallengeQueryIdx].HTTPRequest = none; + UniqueUserId = ChallengeUserRequests[UserQueryIdx].UniqueUserId; + UniqueChallengeId = ChallengeUserRequests[UserQueryIdx].ChallengeStatusRequests[ChallengeQueryIdx].UniqueChallengeId; + // End:0x42C + if(bWasSuccessful && Response != none) + { + // End:0x3D5 + if(Response.GetResponseCode() == 200) + { + JSONStr = Response.GetContentAsString(); + // End:0x3B6 + if(Len(JSONStr) > 0) + { + TempChallengeUserStatusArray.Length = 0; + ImportJSON("TempChallengeUserStatusArray", JSONStr); + // End:0x3A7 + if(TempChallengeUserStatusArray.Length > 0) + { + TempUserStatusIdx = 0; + J0x252: + + // End:0x3A7 [Loop If] + if(TempUserStatusIdx < TempChallengeUserStatusArray.Length) + { + UserStatusIdx = 0; + J0x275: + + // End:0x342 [Loop If] + if(UserStatusIdx < ChallengeUserStatus.Length) + { + // End:0x334 + if((ChallengeUserStatus[UserStatusIdx].unique_challenge_id == TempChallengeUserStatusArray[TempUserStatusIdx].unique_challenge_id) && ChallengeUserStatus[UserStatusIdx].unique_user_id == TempChallengeUserStatusArray[TempUserStatusIdx].unique_user_id) + { + // [Explicit Break] + goto J0x342; + } + UserStatusIdx++; + // [Loop Continue] + goto J0x275; + } + J0x342: + + // End:0x372 + if(UserStatusIdx == ChallengeUserStatus.Length) + { + ChallengeUserStatus.Length = ChallengeUserStatus.Length + 1; + } + ChallengeUserStatus[UserStatusIdx] = TempChallengeUserStatusArray[TempUserStatusIdx]; + TempUserStatusIdx++; + // [Loop Continue] + goto J0x252; + } + } + bResult = true; + } + else + { + ErrorStr = "no JSON response"; + } + } + else + { + ErrorStr = "invalid server response code, status=" $ string(Response.GetResponseCode()); + } + } + else + { + ErrorStr = "no response"; + } + } + else + { + ErrorStr = "couldn't find user/challenge entry for request"; + } + // End:0x491 + if(Len(ErrorStr) > 0) + { + } + OnQueryChallengeUserStatusComplete(bResult, UniqueChallengeId, UniqueUserId, ErrorStr); + //return; +} + +function GetChallengeUserStatus(string UniqueChallengeId, string UniqueUserId, out McpClashMobChallengeUserStatus OutChallengeUserStatus) +{ + local int UserStatusIdx; + local McpClashMobChallengeUserStatus DefaultStatus; + + UserStatusIdx = 0; + J0x0B: + + // End:0x9E [Loop If] + if(UserStatusIdx < ChallengeUserStatus.Length) + { + // End:0x90 + if((ChallengeUserStatus[UserStatusIdx].unique_challenge_id == UniqueChallengeId) && ChallengeUserStatus[UserStatusIdx].unique_user_id == UniqueUserId) + { + // [Explicit Break] + goto J0x9E; + } + UserStatusIdx++; + // [Loop Continue] + goto J0x0B; + } + J0x9E: + + // End:0xD6 + if(UserStatusIdx < ChallengeUserStatus.Length) + { + OutChallengeUserStatus = ChallengeUserStatus[UserStatusIdx]; + } + else + { + OutChallengeUserStatus = DefaultStatus; + OutChallengeUserStatus.unique_challenge_id = UniqueChallengeId; + OutChallengeUserStatus.unique_user_id = UniqueUserId; + } + //return; +} + +function UpdateChallengeUserProgress(string UniqueChallengeId, string UniqueUserId, bool bDidComplete, int GoalProgress) +{ + local string URL, ErrorStr; + local int ChallengeQueryIdx, UserQueryIdx; + local bool bPending; + local HttpRequestInterface Request; + + UserQueryIdx = ChallengeUserRequests.Find('UniqueUserId', UniqueUserId); + // End:0x98 + if(UserQueryIdx == -1) + { + UserQueryIdx = ChallengeUserRequests.Length; + ChallengeUserRequests.Length = ChallengeUserRequests.Length + 1; + ChallengeUserRequests[UserQueryIdx].UniqueUserId = UniqueUserId; + } + ChallengeQueryIdx = ChallengeUserRequests[UserQueryIdx].ChallengeUpdateProgressRequests.Find('UniqueChallengeId', UniqueChallengeId); + // End:0x1C1 + if(ChallengeQueryIdx == -1) + { + ChallengeQueryIdx = ChallengeUserRequests[UserQueryIdx].ChallengeUpdateProgressRequests.Length; + ChallengeUserRequests[UserQueryIdx].ChallengeUpdateProgressRequests.Length = ChallengeUserRequests[UserQueryIdx].ChallengeUpdateProgressRequests.Length + 1; + ChallengeUserRequests[UserQueryIdx].ChallengeUpdateProgressRequests[ChallengeQueryIdx].UniqueChallengeId = UniqueChallengeId; + } + // End:0x45E + if(ChallengeUserRequests[UserQueryIdx].ChallengeUpdateProgressRequests[ChallengeQueryIdx].HTTPRequest == none) + { + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x45B + if(Request != none) + { + ChallengeUserRequests[UserQueryIdx].ChallengeUpdateProgressRequests[ChallengeQueryIdx].HTTPRequest = Request; + URL = ((((((((((GetBaseURL()) $ UpdateChallengeProgressUrl) $ (GetAppAccessURL())) $ "&uniqueChallengeId=") $ UniqueChallengeId) $ "&uniqueUserId=") $ UniqueUserId) $ "&didComplete=") $ string(bDidComplete)) $ "&goalProgress=") $ string(GoalProgress); + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.SetHeader("Content-Type", "multipart/form-data"); + Request.__OnProcessRequestComplete__Delegate = OnUpdateChallengeUserProgressHTTPRequestComplete; + // End:0x427 + if(Request.ProcessRequest()) + { + bPending = true; + } + else + { + ErrorStr = "failed to start request, Url=" $ URL; + } + } + } + else + { + ErrorStr = "last request is still being processed"; + } + // End:0x4A0 + if(Len(ErrorStr) > 0) + { + } + // End:0x4DE + if(!bPending) + { + OnUpdateChallengeUserProgressComplete(false, UniqueChallengeId, UniqueUserId, ErrorStr); + } + //return; +} + +private final function OnUpdateChallengeUserProgressHTTPRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local string UniqueChallengeId, UniqueUserId, ErrorStr; + local bool bResult; + local int UserQueryIdx, ChallengeQueryIdx; + + UserQueryIdx = 0; + J0x0B: + + // End:0x8D [Loop If] + if(UserQueryIdx < ChallengeUserRequests.Length) + { + ChallengeQueryIdx = ChallengeUserRequests[UserQueryIdx].ChallengeUpdateProgressRequests.Find('HTTPRequest', Request); + // End:0x7F + if(ChallengeQueryIdx != -1) + { + // [Explicit Break] + goto J0x8D; + } + UserQueryIdx++; + // [Loop Continue] + goto J0x0B; + } + J0x8D: + + // End:0x23B + if((UserQueryIdx != -1) && ChallengeQueryIdx != -1) + { + ChallengeUserRequests[UserQueryIdx].ChallengeUpdateProgressRequests[ChallengeQueryIdx].HTTPRequest = none; + UniqueUserId = ChallengeUserRequests[UserQueryIdx].UniqueUserId; + UniqueChallengeId = ChallengeUserRequests[UserQueryIdx].ChallengeUpdateProgressRequests[ChallengeQueryIdx].UniqueChallengeId; + // End:0x221 + if(bWasSuccessful && Response != none) + { + // End:0x1CA + if(Response.GetResponseCode() == 200) + { + bResult = true; + } + else + { + ErrorStr = "invalid server response code, status=" $ string(Response.GetResponseCode()); + } + } + else + { + ErrorStr = "no response"; + } + } + else + { + ErrorStr = "couldn't find user/challenge entry for request"; + } + // End:0x286 + if(Len(ErrorStr) > 0) + { + } + OnUpdateChallengeUserProgressComplete(bResult, UniqueChallengeId, UniqueUserId, ErrorStr); + //return; +} + +function UpdateChallengeUserReward(string UniqueChallengeId, string UniqueUserId, int UserReward) +{ + local string URL, ErrorStr; + local int ChallengeQueryIdx, UserQueryIdx; + local bool bPending; + local HttpRequestInterface Request; + + UserQueryIdx = ChallengeUserRequests.Find('UniqueUserId', UniqueUserId); + // End:0x98 + if(UserQueryIdx == -1) + { + UserQueryIdx = ChallengeUserRequests.Length; + ChallengeUserRequests.Length = ChallengeUserRequests.Length + 1; + ChallengeUserRequests[UserQueryIdx].UniqueUserId = UniqueUserId; + } + ChallengeQueryIdx = ChallengeUserRequests[UserQueryIdx].ChallengeUpdateRewardRequests.Find('UniqueChallengeId', UniqueChallengeId); + // End:0x1C1 + if(ChallengeQueryIdx == -1) + { + ChallengeQueryIdx = ChallengeUserRequests[UserQueryIdx].ChallengeUpdateRewardRequests.Length; + ChallengeUserRequests[UserQueryIdx].ChallengeUpdateRewardRequests.Length = ChallengeUserRequests[UserQueryIdx].ChallengeUpdateRewardRequests.Length + 1; + ChallengeUserRequests[UserQueryIdx].ChallengeUpdateRewardRequests[ChallengeQueryIdx].UniqueChallengeId = UniqueChallengeId; + } + // End:0x441 + if(ChallengeUserRequests[UserQueryIdx].ChallengeUpdateRewardRequests[ChallengeQueryIdx].HTTPRequest == none) + { + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x43E + if(Request != none) + { + ChallengeUserRequests[UserQueryIdx].ChallengeUpdateRewardRequests[ChallengeQueryIdx].HTTPRequest = Request; + URL = ((((((((GetBaseURL()) $ UpdateRewardProgressUrl) $ (GetAppAccessURL())) $ "&uniqueChallengeId=") $ UniqueChallengeId) $ "&uniqueUserId=") $ UniqueUserId) $ "&userAwardGiven=") $ string(UserReward); + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.SetHeader("Content-Type", "multipart/form-data"); + Request.__OnProcessRequestComplete__Delegate = OnUpdateChallengeUserRewardHTTPRequestComplete; + // End:0x40A + if(Request.ProcessRequest()) + { + bPending = true; + } + else + { + ErrorStr = "failed to start request, Url=" $ URL; + } + } + } + else + { + ErrorStr = "last request is still being processed"; + } + // End:0x483 + if(Len(ErrorStr) > 0) + { + } + // End:0x4C1 + if(!bPending) + { + OnUpdateChallengeUserRewardComplete(false, UniqueChallengeId, UniqueUserId, ErrorStr); + } + //return; +} + +private final function OnUpdateChallengeUserRewardHTTPRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local string UniqueChallengeId, UniqueUserId, ErrorStr; + local bool bResult; + local int UserQueryIdx, ChallengeQueryIdx; + + UserQueryIdx = 0; + J0x0B: + + // End:0x8D [Loop If] + if(UserQueryIdx < ChallengeUserRequests.Length) + { + ChallengeQueryIdx = ChallengeUserRequests[UserQueryIdx].ChallengeUpdateRewardRequests.Find('HTTPRequest', Request); + // End:0x7F + if(ChallengeQueryIdx != -1) + { + // [Explicit Break] + goto J0x8D; + } + UserQueryIdx++; + // [Loop Continue] + goto J0x0B; + } + J0x8D: + + // End:0x23B + if((UserQueryIdx != -1) && ChallengeQueryIdx != -1) + { + ChallengeUserRequests[UserQueryIdx].ChallengeUpdateRewardRequests[ChallengeQueryIdx].HTTPRequest = none; + UniqueUserId = ChallengeUserRequests[UserQueryIdx].UniqueUserId; + UniqueChallengeId = ChallengeUserRequests[UserQueryIdx].ChallengeUpdateRewardRequests[ChallengeQueryIdx].UniqueChallengeId; + // End:0x221 + if(bWasSuccessful && Response != none) + { + // End:0x1CA + if(Response.GetResponseCode() == 200) + { + bResult = true; + } + else + { + ErrorStr = "invalid server response code, status=" $ string(Response.GetResponseCode()); + } + } + else + { + ErrorStr = "no response"; + } + } + else + { + ErrorStr = "couldn't find user/challenge entry for request"; + } + // End:0x286 + if(Len(ErrorStr) > 0) + { + } + OnUpdateChallengeUserRewardComplete(bResult, UniqueChallengeId, UniqueUserId, ErrorStr); + //return; +} + +defaultproperties +{ + ChallengeListUrl="/challengelist" + ChallengeStatusUrl="/challengestatus" + ChallengeMultiStatusUrl="/challengemultiplestatus" + AcceptChallengeUrl="/acceptchallenge" + UpdateChallengeProgressUrl="/updatechallenge" + UpdateRewardProgressUrl="/updatereward" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpGroupsBase.uc b/exported/IpDrv/Classes/McpGroupsBase.uc new file mode 100755 index 00000000..dd449be5 --- /dev/null +++ b/exported/IpDrv/Classes/McpGroupsBase.uc @@ -0,0 +1,199 @@ +class McpGroupsBase extends McpServiceBase + abstract + config(Engine); + +enum EMcpGroupAcceptState +{ + MGAS_Error, // 0 + MGAS_Pending, // 1 + MGAS_Accepted, // 2 + MGAS_MAX // 3 +}; + +enum EMcpGroupAccessLevel +{ + MGAL_Owner, // 0 + MGAL_Member, // 1 + MGAL_Public, // 2 + MGAL_MAX // 3 +}; + +struct McpGroupMember +{ + var string MemberId; + var McpGroupsBase.EMcpGroupAcceptState AcceptState; + + structdefaultproperties + { + MemberId="" + AcceptState=EMcpGroupAcceptState.MGAS_Error + } +}; + +struct McpGroup +{ + var string OwnerId; + var string GroupID; + var string GroupName; + var McpGroupsBase.EMcpGroupAccessLevel AccessLevel; + var array Members; + + structdefaultproperties + { + OwnerId="" + GroupID="" + GroupName="" + AccessLevel=EMcpGroupAccessLevel.MGAL_Owner + Members=none + } +}; + +struct McpGroupList +{ + var string RequesterId; + var array Groups; + + structdefaultproperties + { + RequesterId="" + Groups=none + } +}; + +var config string McpGroupsManagerClassName; +var array GroupLists; +//var delegate __OnCreateGroupComplete__Delegate; +//var delegate __OnDeleteGroupComplete__Delegate; +//var delegate __OnQueryGroupsComplete__Delegate; +//var delegate __OnQueryGroupMembersComplete__Delegate; +//var delegate __OnAddGroupMembersComplete__Delegate; +//var delegate __OnRemoveGroupMembersComplete__Delegate; +//var delegate __OnDeleteAllGroupsComplete__Delegate; +//var delegate __OnQueryGroupInvitesComplete__Delegate; +//var delegate __OnAcceptGroupInviteComplete__Delegate; + +static final function McpGroupsBase CreateInstance() +{ + local Class McpGroupsManagerClass; + local McpGroupsBase NewInstance; + + McpGroupsManagerClass = Class(DynamicLoadObject(default.McpGroupsManagerClassName, Class'Core.Class')); + // End:0x76 + if(McpGroupsManagerClass != none) + { + NewInstance = new McpGroupsManagerClass; + NewInstance.Init(); + } + return NewInstance; + //return ReturnValue; +} + +function CreateGroup(string OwnerId, string GroupName) +{ + //return; +} + +delegate OnCreateGroupComplete(McpGroup Group, bool bWasSuccessful, string Error) +{ + //return; +} + +function DeleteGroup(string UniqueUserId, string GroupID) +{ + //return; +} + +delegate OnDeleteGroupComplete(string GroupID, bool bWasSuccessful, string Error) +{ + //return; +} + +function QueryGroups(string RequesterId) +{ + //return; +} + +delegate OnQueryGroupsComplete(string UserId, bool bWasSuccessful, string Error) +{ + //return; +} + +function GetGroupList(string UserId, out McpGroupList GroupList) +{ + //return; +} + +function QueryGroupMembers(string UniqueUserId, string GroupID) +{ + //return; +} + +delegate OnQueryGroupMembersComplete(string GroupID, bool bWasSuccessful, string Error) +{ + //return; +} + +function GetGroupMembers(string GroupID, out array GroupMembers) +{ + //return; +} + +function AddGroupMembers(string OwnerId, string GroupID, const out array MemberIds, bool bRequiresAcceptance) +{ + //return; +} + +delegate OnAddGroupMembersComplete(string GroupID, bool bWasSuccessful, string Error) +{ + //return; +} + +function RemoveGroupMembers(string OwnerId, string GroupID, const out array MemberIds) +{ + //return; +} + +delegate OnRemoveGroupMembersComplete(string GroupID, bool bWasSuccessful, string Error) +{ + //return; +} + +function DeleteAllGroups(string OwnerId) +{ + //return; +} + +delegate OnDeleteAllGroupsComplete(string RequesterId, bool bWasSuccessful, string Error) +{ + //return; +} + +function QueryGroupInvites(string UniqueUserId) +{ + //return; +} + +delegate OnQueryGroupInvitesComplete(bool bWasSuccessful, string Error) +{ + //return; +} + +function GetGroupInviteList(string UserId, out McpGroupList InviteList) +{ + //return; +} + +function AcceptGroupInvite(string UniqueUserId, string GroupID, bool bShouldAccept) +{ + //return; +} + +delegate OnAcceptGroupInviteComplete(string GroupID, bool bWasSuccessful, string Error) +{ + //return; +} + +defaultproperties +{ + McpGroupsManagerClassName="IpDrv.McpGroupsManager" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpGroupsManager.uc b/exported/IpDrv/Classes/McpGroupsManager.uc new file mode 100755 index 00000000..7a680956 --- /dev/null +++ b/exported/IpDrv/Classes/McpGroupsManager.uc @@ -0,0 +1,701 @@ +class McpGroupsManager extends McpGroupsBase + config(Engine); + +var config string CreateGroupUrl; +var config string DeleteGroupUrl; +var config string QueryGroupsUrl; +var config string QueryGroupMembersUrl; +var config string AddGroupMembersUrl; +var config string RemoveGroupMembersUrl; +var config string DeleteAllGroupsUrl; +var config string AcceptGroupInviteUrl; +var config string RejectGroupInviteUrl; +//var delegate __OnQueryGroupsRequestComplete__Delegate; +//var delegate __OnQueryGroupMembersRequestComplete__Delegate; +//var delegate __OnAddGroupMembersRequestComplete__Delegate; +//var delegate __OnAcceptGroupInviteRequestComplete__Delegate; + +function CreateGroup(string UniqueUserId, string GroupName) +{ + local string URL; + local HttpRequestInterface CreateGroupRequest; + local McpGroup FailedGroup; + + // End:0x1BC + if((Len(UniqueUserId) > 0) && Len(GroupName) > 0) + { + CreateGroupRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x17C + if(CreateGroupRequest != none) + { + URL = ((((((((GetBaseURL()) $ CreateGroupUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ UniqueUserId) $ "&groupName=") $ GroupName) $ "&accessLevel=") $ "OWNER"; + CreateGroupRequest.SetURL(URL); + CreateGroupRequest.SetVerb("POST"); + CreateGroupRequest.__OnProcessRequestComplete__Delegate = OnCreateGroupRequestComplete; + // End:0x179 + if(!CreateGroupRequest.ProcessRequest()) + { + } + } + else + { + OnCreateGroupComplete(FailedGroup, false, "HttpRequest was not be created"); + } + } + else + { + OnCreateGroupComplete(FailedGroup, false, "UserId or GroupName wasn't specified"); + } + //return; +} + +function OnCreateGroupRequestComplete(HttpRequestInterface CreateGroupRequest, HttpResponseInterface HttpResponse, bool bWasSuccessful) +{ + local int ResponseCode; + local string Content; + local McpGroup CreatedGroup; + local string JsonString; + local JsonObject ParsedJson; + + ResponseCode = 500; + // End:0x2DC + if((HttpResponse != none) && CreateGroupRequest != none) + { + ResponseCode = HttpResponse.GetResponseCode(); + bWasSuccessful = bWasSuccessful && ResponseCode == 201; + Content = HttpResponse.GetContentAsString(); + CreatedGroup.OwnerId = CreateGroupRequest.GetURLParameter("uniqueUserId"); + CreatedGroup.GroupName = CreateGroupRequest.GetURLParameter("groupName"); + JsonString = HttpResponse.GetContentAsString(); + // End:0x2DC + if((JsonString != "") && bWasSuccessful) + { + ParsedJson = Class'Engine.JsonObject'.static.DecodeJson(JsonString); + CreatedGroup.GroupID = ParsedJson.GetStringValue("group_id"); + CreatedGroup.OwnerId = ParsedJson.GetStringValue("unique_user_id"); + CreatedGroup.GroupName = ParsedJson.GetStringValue("group_name"); + CreatedGroup.AccessLevel = byte(ParsedJson.GetIntValue("access_level")); + } + } + OnCreateGroupComplete(CreatedGroup, bWasSuccessful, Content); + //return; +} + +function DeleteGroup(string UniqueUserId, string GroupID) +{ + local string URL; + local HttpRequestInterface DeleteGroupRequest; + + // End:0x1A6 + if((Len(UniqueUserId) > 0) && Len(GroupID) > 0) + { + DeleteGroupRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x162 + if(DeleteGroupRequest != none) + { + URL = ((((((GetBaseURL()) $ DeleteGroupUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ UniqueUserId) $ "&groupId=") $ GroupID; + DeleteGroupRequest.SetVerb("DELETE"); + DeleteGroupRequest.SetURL(URL); + DeleteGroupRequest.__OnProcessRequestComplete__Delegate = OnDeleteGroupRequestComplete; + // End:0x15F + if(!DeleteGroupRequest.ProcessRequest()) + { + } + } + else + { + OnDeleteGroupComplete(GroupID, false, "HttpRequest could not be completed"); + } + } + else + { + OnDeleteGroupComplete(GroupID, false, "UniqueUserId and/or GroupId was not specified"); + } + //return; +} + +function OnDeleteGroupRequestComplete(HttpRequestInterface OriginalRequest, HttpResponseInterface HttpResponse, bool bWasSuccessful) +{ + local int ResponseCode; + local string Content, GroupID; + + ResponseCode = 500; + // End:0xCB + if(HttpResponse != none) + { + ResponseCode = HttpResponse.GetResponseCode(); + GroupID = HttpResponse.GetURLParameter("GroupId"); + ResponseCode = HttpResponse.GetResponseCode(); + Content = HttpResponse.GetContentAsString(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + OnDeleteGroupComplete(GroupID, bWasSuccessful, Content); + //return; +} + +function QueryGroups(string RequesterId) +{ + local string URL; + local HttpRequestInterface QueryGroupsRequest; + + // End:0x17D + if(Len(RequesterId) > 0) + { + QueryGroupsRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x13A + if(QueryGroupsRequest != none) + { + URL = ((((GetBaseURL()) $ QueryGroupsUrl) $ (GetAppAccessURL())) $ "&memberUniqueUserId=") $ RequesterId; + QueryGroupsRequest.SetURL(URL); + QueryGroupsRequest.SetVerb("GET"); + QueryGroupsRequest.__OnProcessRequestComplete__Delegate = OnQueryGroupsRequestComplete; + // End:0x137 + if(!QueryGroupsRequest.ProcessRequest()) + { + } + } + else + { + OnQueryGroupsComplete(RequesterId, false, "Http Request could not be created"); + } + } + else + { + OnQueryGroupsComplete(RequesterId, false, "RequesterId was not specified"); + } + //return; +} + +delegate OnQueryGroupsRequestComplete(HttpRequestInterface OriginalRequest, HttpResponseInterface HttpResponse, bool bWasSuccessful) +{ + local int ResponseCode; + local string Error; + local McpGroup Group; + local string JsonString; + local JsonObject ParsedJson; + local int JsonIndex; + local string RequesterId; + + ResponseCode = 500; + // End:0x3A5 + if((HttpResponse != none) && OriginalRequest != none) + { + RequesterId = OriginalRequest.GetURLParameter("memberUniqueUserId"); + ResponseCode = HttpResponse.GetResponseCode(); + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x37C + if(bWasSuccessful) + { + JsonString = HttpResponse.GetContentAsString(); + // End:0x33B + if(JsonString != "") + { + ParsedJson = Class'Engine.JsonObject'.static.DecodeJson(JsonString); + JsonIndex = 0; + J0x13F: + + // End:0x338 [Loop If] + if(JsonIndex < ParsedJson.ObjectArray.Length) + { + Group.OwnerId = ParsedJson.ObjectArray[JsonIndex].GetStringValue("unique_user_id"); + Group.GroupID = ParsedJson.ObjectArray[JsonIndex].GetStringValue("group_id"); + Group.GroupName = ParsedJson.ObjectArray[JsonIndex].GetStringValue("group_name"); + Group.AccessLevel = byte(ParsedJson.ObjectArray[JsonIndex].GetIntValue("access_level")); + CacheGroup(RequesterId, Group); + JsonIndex++; + // [Loop Continue] + goto J0x13F; + } + } + else + { + Error = "Query did not return any content in it's response."; + } + } + else + { + Error = HttpResponse.GetContentAsString(); + } + } + OnQueryGroupsComplete(RequesterId, bWasSuccessful, Error); + //return; +} + +function GetGroupList(string UserId, out McpGroupList GroupList) +{ + local int GroupListIndex; + + // End:0x70 + if(Len(UserId) > 0) + { + GroupListIndex = GroupLists.Find('RequesterId', UserId); + // End:0x6D + if(GroupListIndex != -1) + { + GroupList = GroupLists[GroupListIndex]; + } + } + //return; +} + +function QueryGroupMembers(string UniqueUserId, string GroupID) +{ + local string URL; + local HttpRequestInterface QueryGroupMembersRequest; + + // End:0x17B + if((Len(UniqueUserId) > 0) && Len(GroupID) > 0) + { + QueryGroupMembersRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x142 + if(QueryGroupMembersRequest != none) + { + URL = ((((GetBaseURL()) $ QueryGroupMembersUrl) $ (GetAppAccessURL())) $ "&groupId=") $ GroupID; + QueryGroupMembersRequest.SetURL(URL); + QueryGroupMembersRequest.SetVerb("GET"); + QueryGroupMembersRequest.__OnProcessRequestComplete__Delegate = OnQueryGroupMembersRequestComplete; + // End:0x13F + if(!QueryGroupMembersRequest.ProcessRequest()) + { + } + } + else + { + OnQueryGroupMembersComplete(GroupID, false, "HttpRequest not created"); + } + } + else + { + OnQueryGroupMembersComplete(GroupID, false, "UserId and/or GroupId not specified"); + } + //return; +} + +delegate OnQueryGroupMembersRequestComplete(HttpRequestInterface OriginalRequest, HttpResponseInterface HttpResponse, bool bWasSuccessful) +{ + local int ResponseCode; + local string Error, JsonString; + local JsonObject ParsedJson; + local int JsonIndex; + local McpGroupsBase.EMcpGroupAcceptState AcceptState; + local string MemberId, GroupID; + + ResponseCode = 500; + // End:0x2CB + if((HttpResponse != none) && OriginalRequest != none) + { + ResponseCode = HttpResponse.GetResponseCode(); + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x2A2 + if(bWasSuccessful) + { + JsonString = HttpResponse.GetContentAsString(); + // End:0x261 + if(JsonString != "") + { + ParsedJson = Class'Engine.JsonObject'.static.DecodeJson(JsonString); + JsonIndex = 0; + J0x102: + + // End:0x25E [Loop If] + if(JsonIndex < ParsedJson.ObjectArray.Length) + { + MemberId = ParsedJson.ObjectArray[JsonIndex].GetStringValue("unique_user_id"); + GroupID = ParsedJson.ObjectArray[JsonIndex].GetStringValue("group_id"); + AcceptState = byte(ParsedJson.ObjectArray[JsonIndex].GetIntValue("status")); + CacheGroupMember(MemberId, GroupID, AcceptState); + JsonIndex++; + // [Loop Continue] + goto J0x102; + } + } + else + { + Error = "Query did not return any content in it's response."; + } + } + else + { + Error = HttpResponse.GetContentAsString(); + } + } + OnQueryGroupMembersComplete(GroupID, bWasSuccessful, Error); + //return; +} + +function GetGroupMembers(string GroupID, out array GroupMembers) +{ + local int GroupIndex; + local McpGroupList GroupList; + local McpGroup GroupTemp; + + // End:0x9C + foreach GroupLists(GroupList) + { + // End:0x9A + foreach GroupList.Groups(GroupTemp, GroupIndex) + { + // End:0x99 + if(GroupTemp.GroupID == GroupID) + { + GroupMembers = GroupTemp.Members; + } + } + } + //return; +} + +function AddGroupMembers(string UniqueUserId, string GroupID, const out array MemberIds, bool bRequiresAcceptance) +{ + local string URL; + local HttpRequestInterface AddGroupMembersRequest; + local string JsonPayload; + local int Index; + + // End:0x2CB + if((Len(UniqueUserId) > 0) && Len(GroupID) > 0) + { + AddGroupMembersRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + AddGroupMembersRequest.__OnProcessRequestComplete__Delegate = OnAddGroupMembersRequestComplete; + // End:0x28E + if(AddGroupMembersRequest != none) + { + URL = ((((((((GetBaseURL()) $ AddGroupMembersUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ UniqueUserId) $ "&groupId=") $ GroupID) $ "&requiresAcceptance=") $ ((bRequiresAcceptance) ? "true" : "false"); + // End:0x28B + if(MemberIds.Length > 0) + { + JsonPayload = "[ "; + Index = 0; + J0x14B: + + // End:0x1D6 [Loop If] + if(Index < MemberIds.Length) + { + JsonPayload $= (("\"" $ MemberIds[Index]) $ "\""); + // End:0x1C8 + if((Index + 1) < MemberIds.Length) + { + JsonPayload $= ","; + } + Index++; + // [Loop Continue] + goto J0x14B; + } + JsonPayload $= " ]"; + AddGroupMembersRequest.SetVerb("POST"); + AddGroupMembersRequest.SetContentAsString(JsonPayload); + AddGroupMembersRequest.SetURL(URL); + // End:0x288 + if(!AddGroupMembersRequest.ProcessRequest()) + { + } + } + } + else + { + OnAddGroupMembersComplete(GroupID, false, "HttpRequest was not created"); + } + } + else + { + OnAddGroupMembersComplete(GroupID, false, "UserId and/or GroupId not specified"); + } + //return; +} + +delegate OnAddGroupMembersRequestComplete(HttpRequestInterface OriginalRequest, HttpResponseInterface HttpResponse, bool bWasSuccessful) +{ + local int ResponseCode; + local string Content, GroupID; + + ResponseCode = 500; + // End:0xA2 + if(HttpResponse != none) + { + GroupID = HttpResponse.GetURLParameter("GroupId"); + ResponseCode = HttpResponse.GetResponseCode(); + Content = HttpResponse.GetContentAsString(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + OnAddGroupMembersComplete(GroupID, bWasSuccessful, Content); + //return; +} + +function RemoveGroupMembers(string UniqueUserId, string GroupID, const out array MemberIds) +{ + local string URL; + local HttpRequestInterface RemoveGroupMembersRequest; + local string JsonPayload; + local int Index; + + // End:0x27B + if((Len(UniqueUserId) > 0) && Len(GroupID) > 0) + { + RemoveGroupMembersRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x23D + if(RemoveGroupMembersRequest != none) + { + URL = ((((GetBaseURL()) $ RemoveGroupMembersUrl) $ (GetAppAccessURL())) $ "&groupId=") $ GroupID; + // End:0x23A + if(MemberIds.Length > 0) + { + JsonPayload = "[ "; + Index = 0; + J0xC8: + + // End:0x153 [Loop If] + if(Index < MemberIds.Length) + { + JsonPayload $= (("\"" $ MemberIds[Index]) $ "\""); + // End:0x145 + if((Index + 1) < MemberIds.Length) + { + JsonPayload $= ","; + } + Index++; + // [Loop Continue] + goto J0xC8; + } + JsonPayload $= " ]"; + RemoveGroupMembersRequest.SetURL(URL); + RemoveGroupMembersRequest.SetContentAsString(JsonPayload); + RemoveGroupMembersRequest.SetVerb("DELETE"); + RemoveGroupMembersRequest.__OnProcessRequestComplete__Delegate = OnRemoveGroupMembersRequestComplete; + // End:0x237 + if(!RemoveGroupMembersRequest.ProcessRequest()) + { + } + } + } + else + { + OnRemoveGroupMembersComplete(GroupID, false, "Http request was not created"); + } + } + else + { + OnRemoveGroupMembersComplete(GroupID, false, "UniqueUserId and/or GroupId was not specified"); + } + //return; +} + +function OnRemoveGroupMembersRequestComplete(HttpRequestInterface OriginalRequest, HttpResponseInterface HttpResponse, bool bWasSuccessful) +{ + local int ResponseCode; + local string Content, GroupID; + + ResponseCode = 500; + // End:0xA2 + if(HttpResponse != none) + { + GroupID = HttpResponse.GetURLParameter("GroupId"); + ResponseCode = HttpResponse.GetResponseCode(); + Content = HttpResponse.GetContentAsString(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + OnRemoveGroupMembersComplete(GroupID, bWasSuccessful, Content); + //return; +} + +function DeleteAllGroups(string UniqueUserId) +{ + local string URL; + local HttpRequestInterface DeleteGroupRequest; + + // End:0x174 + if(Len(UniqueUserId) > 0) + { + DeleteGroupRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x137 + if(DeleteGroupRequest != none) + { + DeleteGroupRequest.SetVerb("DELETE"); + URL = ((((GetBaseURL()) $ DeleteAllGroupsUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ UniqueUserId; + DeleteGroupRequest.SetURL(URL); + DeleteGroupRequest.__OnProcessRequestComplete__Delegate = OnDeleteGroupRequestComplete; + // End:0x134 + if(!DeleteGroupRequest.ProcessRequest()) + { + } + } + else + { + OnDeleteAllGroupsComplete(UniqueUserId, false, "HttpRequest was not created"); + } + } + else + { + OnDeleteAllGroupsComplete(UniqueUserId, false, "UniqueUserId was not specified"); + } + //return; +} + +function OnDeleteAllGroupsRequestComplete(HttpRequestInterface OriginalRequest, HttpResponseInterface HttpResponse, bool bWasSuccessful) +{ + local int ResponseCode; + local string Content, RequesterId; + + ResponseCode = 500; + // End:0xB8 + if((HttpResponse != none) && OriginalRequest != none) + { + RequesterId = OriginalRequest.GetURLParameter("uniqueUserId"); + ResponseCode = HttpResponse.GetResponseCode(); + Content = HttpResponse.GetContentAsString(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + OnDeleteAllGroupsComplete(RequesterId, bWasSuccessful, Content); + //return; +} + +function AcceptGroupInvite(string UniqueUserId, string GroupID, bool bShouldAccept) +{ + local string URL; + local HttpRequestInterface AcceptGroupInviteRequest; + + // End:0x1CA + if((Len(UniqueUserId) > 0) && Len(GroupID) > 0) + { + AcceptGroupInviteRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x191 + if(AcceptGroupInviteRequest != none) + { + URL = ((((((((GetBaseURL()) $ AcceptGroupInviteUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ UniqueUserId) $ "&groupId=") $ GroupID) $ "&status=") $ ((bShouldAccept) ? "accepted" : "rejected"); + AcceptGroupInviteRequest.SetVerb("POST"); + AcceptGroupInviteRequest.SetURL(URL); + AcceptGroupInviteRequest.__OnProcessRequestComplete__Delegate = OnAcceptGroupInviteRequestComplete; + // End:0x18E + if(!AcceptGroupInviteRequest.ProcessRequest()) + { + } + } + else + { + OnAcceptGroupInviteComplete(GroupID, false, "HttpRequest not created"); + } + } + else + { + OnAcceptGroupInviteComplete(GroupID, false, "UniqueUserId or GroupId was not specified"); + } + //return; +} + +delegate OnAcceptGroupInviteRequestComplete(HttpRequestInterface OriginalRequest, HttpResponseInterface HttpResponse, bool bWasSuccessful) +{ + local int ResponseCode; + local string Content, GroupID; + + ResponseCode = 500; + // End:0xA2 + if(HttpResponse != none) + { + GroupID = HttpResponse.GetURLParameter("GroupId"); + ResponseCode = HttpResponse.GetResponseCode(); + Content = HttpResponse.GetContentAsString(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + OnAcceptGroupInviteComplete(GroupID, bWasSuccessful, Content); + //return; +} + +function CacheGroup(string RequesterId, McpGroup Group) +{ + local int AddAt, GroupIndex, GroupListIndex; + local McpGroupList UserGroupList; + local bool bWasFound; + + bWasFound = false; + GroupListIndex = GroupLists.Find('RequesterId', RequesterId); + // End:0x1CC + if(GroupListIndex != -1) + { + UserGroupList = GroupLists[GroupListIndex]; + GroupIndex = 0; + J0x70: + + // End:0x11C [Loop If] + if((GroupIndex < UserGroupList.Groups.Length) && !bWasFound) + { + bWasFound = Group.GroupID == UserGroupList.Groups[GroupIndex].GroupID; + GroupIndex++; + // [Loop Continue] + goto J0x70; + } + // End:0x1C9 + if(!bWasFound) + { + AddAt = UserGroupList.Groups.Length; + UserGroupList.Groups.Length = AddAt + 1; + UserGroupList.Groups[AddAt] = Group; + GroupLists[GroupListIndex] = UserGroupList; + } + } + else + { + AddAt = GroupLists.Length; + GroupLists.Length = AddAt + 1; + GroupLists[AddAt].RequesterId = Group.OwnerId; + GroupLists[AddAt].Groups[0] = Group; + } + //return; +} + +function CacheGroupMember(string MemberId, string GroupID, McpGroupsBase.EMcpGroupAcceptState AcceptState) +{ + local int MemberIndex; + local McpGroupList GroupList; + local int GroupListIndex; + local McpGroup GroupTemp; + local int GroupIndex, AddAt; + + // End:0x2BF + if(((Len(MemberId) > 0) && Len(GroupID) > 0) && Len(string(AcceptState)) > 0) + { + // End:0x2BB + foreach GroupLists(GroupList, GroupListIndex) + { + // End:0x29C + foreach GroupList.Groups(GroupTemp, GroupIndex) + { + // End:0x29B + if(GroupTemp.GroupID == GroupID) + { + MemberIndex = GroupTemp.Members.Find('MemberId', MemberId); + // End:0x1DD + if(MemberIndex == -1) + { + AddAt = GroupTemp.Members.Length; + GroupTemp.Members.Length = AddAt + 1; + GroupTemp.Members[AddAt].MemberId = MemberId; + GroupTemp.Members[AddAt].AcceptState = AcceptState; + } + else + { + // End:0x26B + if(int(GroupTemp.Members[MemberIndex].AcceptState) != int(AcceptState)) + { + GroupTemp.Members[MemberIndex].AcceptState = AcceptState; + } + } + GroupList.Groups[GroupIndex] = GroupTemp; + } + } + GroupLists[GroupListIndex] = GroupList; + } + } + //return; +} + +defaultproperties +{ + CreateGroupUrl="/groupcreate" + DeleteGroupUrl="/groupdelete" + QueryGroupsUrl="/grouplist" + QueryGroupMembersUrl="/groupmembers" + AddGroupMembersUrl="/groupmembers" + RemoveGroupMembersUrl="/groupmembers" + DeleteAllGroupsUrl="/groupdeletebyownerid" + AcceptGroupInviteUrl="/groupinvite" + RejectGroupInviteUrl="/groupinvite" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpIdMappingBase.uc b/exported/IpDrv/Classes/McpIdMappingBase.uc new file mode 100755 index 00000000..ba726316 --- /dev/null +++ b/exported/IpDrv/Classes/McpIdMappingBase.uc @@ -0,0 +1,67 @@ +class McpIdMappingBase extends McpServiceBase + abstract + config(Engine); + +struct McpIdMapping +{ + var string McpId; + var string ExternalId; + var string ExternalType; + + structdefaultproperties + { + McpId="" + ExternalId="" + ExternalType="" + } +}; + +var config string McpIdMappingClassName; +//var delegate __OnAddMappingComplete__Delegate; +//var delegate __OnQueryMappingsComplete__Delegate; + +static final function McpIdMappingBase CreateInstance() +{ + local Class McpIdMappingBaseClass; + local McpIdMappingBase NewInstance; + + McpIdMappingBaseClass = Class(DynamicLoadObject(default.McpIdMappingClassName, Class'Core.Class')); + // End:0x76 + if(McpIdMappingBaseClass != none) + { + NewInstance = new McpIdMappingBaseClass; + NewInstance.Init(); + } + return NewInstance; + //return ReturnValue; +} + +function AddMapping(string McpId, string ExternalId, string ExternalType) +{ + //return; +} + +delegate OnAddMappingComplete(string McpId, string ExternalId, string ExternalType, bool bWasSuccessful, string Error) +{ + //return; +} + +function QueryMappings(const out array ExternalIds, string ExternalType) +{ + //return; +} + +delegate OnQueryMappingsComplete(string ExternalType, bool bWasSuccessful, string Error) +{ + //return; +} + +function GetIdMappings(string ExternalType, out array IDMappings) +{ + //return; +} + +defaultproperties +{ + McpIdMappingClassName="IpDrv.McpIdMappingManager" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpIdMappingManager.uc b/exported/IpDrv/Classes/McpIdMappingManager.uc new file mode 100755 index 00000000..52fd51f9 --- /dev/null +++ b/exported/IpDrv/Classes/McpIdMappingManager.uc @@ -0,0 +1,250 @@ +class McpIdMappingManager extends McpIdMappingBase + config(Engine); + +struct AddMappingRequest +{ + var string McpId; + var string ExternalId; + var string ExternalType; + var HttpRequestInterface Request; + + structdefaultproperties + { + McpId="" + ExternalId="" + ExternalType="" + Request=none + } +}; + +struct QueryMappingRequest +{ + var string ExternalType; + var HttpRequestInterface Request; + + structdefaultproperties + { + ExternalType="" + Request=none + } +}; + +var array AccountMappings; +var config string AddMappingUrl; +var config string QueryMappingUrl; +var array AddMappingRequests; +var array QueryMappingRequests; + +function AddMapping(string McpId, string ExternalId, string ExternalType) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt; + + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x252 + if(Request != none) + { + URL = ((((((((GetBaseURL()) $ AddMappingUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ McpId) $ "&externalAccountId=") $ ExternalId) $ "&externalAccountType=") $ ExternalType; + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.__OnProcessRequestComplete__Delegate = OnAddMappingRequestComplete; + AddAt = AddMappingRequests.Length; + AddMappingRequests.Length = AddAt + 1; + AddMappingRequests[AddAt].McpId = McpId; + AddMappingRequests[AddAt].ExternalId = ExternalId; + AddMappingRequests[AddAt].ExternalType = ExternalType; + AddMappingRequests[AddAt].Request = Request; + // End:0x252 + if(!Request.ProcessRequest()) + { + } + } + //return; +} + +function OnAddMappingRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, AddAt, ResponseCode; + + Index = AddMappingRequests.Find('Request', Request); + // End:0x28C + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x1C9 + if(bWasSuccessful) + { + AddAt = AccountMappings.Length; + AccountMappings.Length = AddAt + 1; + AccountMappings[AddAt].McpId = AddMappingRequests[Index].McpId; + AccountMappings[AddAt].ExternalId = AddMappingRequests[Index].ExternalId; + AccountMappings[AddAt].ExternalType = AddMappingRequests[Index].ExternalType; + } + OnAddMappingComplete(AddMappingRequests[Index].McpId, AddMappingRequests[Index].ExternalId, AddMappingRequests[Index].ExternalType, bWasSuccessful, Response.GetContentAsString()); + AddMappingRequests.Remove(Index, 1); + } + //return; +} + +function QueryMappings(const out array ExternalIds, string ExternalType) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt; + local string JsonPayload; + local int Index; + local bool bFirst; + + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x301 + if(Request != none) + { + URL = ((((GetBaseURL()) $ QueryMappingUrl) $ (GetAppAccessURL())) $ "&externalAccountType=") $ ExternalType; + JsonPayload = "[ "; + bFirst = true; + Index = 0; + J0xAC: + + // End:0x152 [Loop If] + if(Index < ExternalIds.Length) + { + // End:0x144 + if(Len(ExternalIds[Index]) > 0) + { + // End:0x106 + if(!bFirst) + { + JsonPayload $= ","; + } + bFirst = false; + JsonPayload $= (("\"" $ ExternalIds[Index]) $ "\""); + } + Index++; + // [Loop Continue] + goto J0xAC; + } + JsonPayload $= " ]"; + Request.SetURL(URL); + Request.SetContentAsString(JsonPayload); + Request.SetVerb("POST"); + Request.SetHeader("Content-Type", "multipart/form-data"); + Request.__OnProcessRequestComplete__Delegate = OnQueryMappingsRequestComplete; + AddAt = QueryMappingRequests.Length; + QueryMappingRequests.Length = AddAt + 1; + QueryMappingRequests[AddAt].ExternalType = ExternalType; + QueryMappingRequests[AddAt].Request = Request; + // End:0x301 + if(!Request.ProcessRequest()) + { + } + } + //return; +} + +function OnQueryMappingsRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, AddAt, ResponseCode; + local string JsonString; + local JsonObject ParsedJson; + local int JsonIndex, AccountIndex; + local bool bWasFound; + local string McpId, ExternalId, ExternalType; + + Index = QueryMappingRequests.Find('Request', Request); + // End:0x4B3 + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x43C + if(bWasSuccessful) + { + JsonString = Response.GetContentAsString(); + // End:0x43C + if(JsonString != "") + { + ParsedJson = Class'Engine.JsonObject'.static.DecodeJson(JsonString); + JsonIndex = 0; + J0x12D: + + // End:0x43C [Loop If] + if(JsonIndex < ParsedJson.ObjectArray.Length) + { + McpId = ParsedJson.ObjectArray[JsonIndex].GetStringValue("unique_user_id"); + ExternalId = ParsedJson.ObjectArray[JsonIndex].GetStringValue("external_account_id"); + ExternalType = ParsedJson.ObjectArray[JsonIndex].GetStringValue("external_account_type"); + bWasFound = false; + AccountIndex = 0; + J0x285: + + // End:0x364 [Loop If] + if((AccountIndex < AccountMappings.Length) && !bWasFound) + { + bWasFound = ((McpId == AccountMappings[AccountIndex].McpId) && ExternalId == AccountMappings[AccountIndex].ExternalId) && ExternalType == AccountMappings[AccountIndex].ExternalType; + AccountIndex++; + // [Loop Continue] + goto J0x285; + } + // End:0x42E + if(!bWasFound) + { + AddAt = AccountMappings.Length; + AccountMappings.Length = AddAt + 1; + AccountMappings[AddAt].McpId = McpId; + AccountMappings[AddAt].ExternalId = ExternalId; + AccountMappings[AddAt].ExternalType = ExternalType; + } + JsonIndex++; + // [Loop Continue] + goto J0x12D; + } + } + } + OnQueryMappingsComplete(QueryMappingRequests[Index].ExternalType, bWasSuccessful, Response.GetContentAsString()); + QueryMappingRequests.Remove(Index, 1); + } + //return; +} + +function GetIdMappings(string ExternalType, out array IDMappings) +{ + local int Index, AddAt; + + IDMappings.Length = 0; + Index = 0; + J0x17: + + // End:0xC3 [Loop If] + if(Index < AccountMappings.Length) + { + // End:0xB5 + if(AccountMappings[Index].ExternalType == ExternalType) + { + AddAt = IDMappings.Length; + IDMappings.Length = AddAt + 1; + IDMappings[AddAt] = AccountMappings[Index]; + } + Index++; + // [Loop Continue] + goto J0x17; + } + //return; +} + +defaultproperties +{ + AddMappingUrl="/useraddaccountmapping" + QueryMappingUrl="/userresolveaccountmappings" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpManagedValueManager.uc b/exported/IpDrv/Classes/McpManagedValueManager.uc new file mode 100755 index 00000000..69c8947c --- /dev/null +++ b/exported/IpDrv/Classes/McpManagedValueManager.uc @@ -0,0 +1,370 @@ +class McpManagedValueManager extends McpManagedValueManagerBase + config(Engine); + +struct SaveSlotRequestState +{ + var string McpId; + var string SaveSlot; + var HttpRequestInterface Request; + + structdefaultproperties + { + McpId="" + SaveSlot="" + Request=none + } +}; + +struct ValueRequestState extends SaveSlotRequestState +{ + var name ValueId; +}; + +var config string CreateSaveSlotUrl; +var config string ReadSaveSlotUrl; +var config string UpdateValueUrl; +var config string DeleteValueUrl; +var array SaveSlots; +var array CreateSaveSlotRequests; +var array ReadSaveSlotRequests; +var array UpdateValueRequests; +var array DeleteValueRequests; + +function CreateSaveSlot(string McpId, string SaveSlot) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt; + + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x1F7 + if(Request != none) + { + URL = ((((((GetBaseURL()) $ CreateSaveSlotUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ McpId) $ "&saveSlotId=") $ SaveSlot; + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.__OnProcessRequestComplete__Delegate = OnCreateSaveSlotRequestComplete; + AddAt = CreateSaveSlotRequests.Length; + CreateSaveSlotRequests.Length = AddAt + 1; + CreateSaveSlotRequests[AddAt].McpId = McpId; + CreateSaveSlotRequests[AddAt].SaveSlot = SaveSlot; + CreateSaveSlotRequests[AddAt].Request = Request; + // End:0x1F7 + if(!Request.ProcessRequest()) + { + } + } + //return; +} + +function OnCreateSaveSlotRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, ResponseCode; + local string ResponseString; + + Index = CreateSaveSlotRequests.Find('Request', Request); + // End:0x1DC + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x13F + if(bWasSuccessful) + { + ResponseString = Response.GetContentAsString(); + ParseValuesForSaveSlot(CreateSaveSlotRequests[Index].McpId, CreateSaveSlotRequests[Index].SaveSlot, ResponseString); + } + OnCreateSaveSlotComplete(CreateSaveSlotRequests[Index].McpId, CreateSaveSlotRequests[Index].SaveSlot, bWasSuccessful, Response.GetContentAsString()); + CreateSaveSlotRequests.Remove(Index, 1); + } + //return; +} + +function int FindSaveSlotIndex(string McpId, string SaveSlot) +{ + local int SaveSlotIndex; + + SaveSlotIndex = 0; + J0x0B: + + // End:0xA5 [Loop If] + if(SaveSlotIndex < SaveSlots.Length) + { + // End:0x97 + if((SaveSlots[SaveSlotIndex].OwningMcpId == McpId) && SaveSlots[SaveSlotIndex].SaveSlot == SaveSlot) + { + return SaveSlotIndex; + } + SaveSlotIndex++; + // [Loop Continue] + goto J0x0B; + } + return -1; + //return ReturnValue; +} + +function ParseValuesForSaveSlot(string McpId, string SaveSlot, string JsonPayload) +{ + local JsonObject ParsedJson; + local int JsonIndex, SaveSlotIndex, ManagedValueIndex; + local name ValueId; + local int Value; + + SaveSlotIndex = FindSaveSlotIndex(McpId, SaveSlot); + // End:0xC4 + if(SaveSlotIndex == -1) + { + SaveSlotIndex = SaveSlots.Length; + SaveSlots.Length = SaveSlotIndex + 1; + SaveSlots[SaveSlotIndex].OwningMcpId = McpId; + SaveSlots[SaveSlotIndex].SaveSlot = SaveSlot; + } + ParsedJson = Class'Engine.JsonObject'.static.DecodeJson(JsonPayload); + JsonIndex = 0; + J0x101: + + // End:0x337 [Loop If] + if(JsonIndex < ParsedJson.ObjectArray.Length) + { + ValueId = name(ParsedJson.ObjectArray[JsonIndex].GetStringValue("value_id")); + Value = ParsedJson.ObjectArray[JsonIndex].GetIntValue("value"); + ManagedValueIndex = SaveSlots[SaveSlotIndex].Values.Find('ValueId', ValueId); + // End:0x2DC + if(ManagedValueIndex == -1) + { + ManagedValueIndex = SaveSlots[SaveSlotIndex].Values.Length; + SaveSlots[SaveSlotIndex].Values.Length = ManagedValueIndex + 1; + SaveSlots[SaveSlotIndex].Values[ManagedValueIndex].ValueId = ValueId; + } + SaveSlots[SaveSlotIndex].Values[ManagedValueIndex].Value = Value; + JsonIndex++; + // [Loop Continue] + goto J0x101; + } + //return; +} + +function ReadSaveSlot(string McpId, string SaveSlot) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt; + + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x1F6 + if(Request != none) + { + URL = ((((((GetBaseURL()) $ ReadSaveSlotUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ McpId) $ "&saveSlotId=") $ SaveSlot; + Request.SetURL(URL); + Request.SetVerb("GET"); + Request.__OnProcessRequestComplete__Delegate = OnReadSaveSlotRequestComplete; + AddAt = ReadSaveSlotRequests.Length; + ReadSaveSlotRequests.Length = AddAt + 1; + ReadSaveSlotRequests[AddAt].McpId = McpId; + ReadSaveSlotRequests[AddAt].SaveSlot = SaveSlot; + ReadSaveSlotRequests[AddAt].Request = Request; + // End:0x1F6 + if(!Request.ProcessRequest()) + { + } + } + //return; +} + +function OnReadSaveSlotRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, ResponseCode; + local string ResponseString; + + Index = ReadSaveSlotRequests.Find('Request', Request); + // End:0x1DC + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x13F + if(bWasSuccessful) + { + ResponseString = Response.GetContentAsString(); + ParseValuesForSaveSlot(ReadSaveSlotRequests[Index].McpId, ReadSaveSlotRequests[Index].SaveSlot, ResponseString); + } + OnReadSaveSlotComplete(ReadSaveSlotRequests[Index].McpId, ReadSaveSlotRequests[Index].SaveSlot, bWasSuccessful, Response.GetContentAsString()); + ReadSaveSlotRequests.Remove(Index, 1); + } + //return; +} + +function array GetValues(string McpId, string SaveSlot) +{ + local int SaveSlotIndex; + local array EmptyArray; + + SaveSlotIndex = FindSaveSlotIndex(McpId, SaveSlot); + // End:0x60 + if(SaveSlotIndex != -1) + { + return SaveSlots[SaveSlotIndex].Values; + } + EmptyArray.Length = 0; + return EmptyArray; + //return ReturnValue; +} + +function int GetValue(string McpId, string SaveSlot, name ValueId) +{ + local int SaveSlotIndex, ValueIndex, Value; + + SaveSlotIndex = FindSaveSlotIndex(McpId, SaveSlot); + // End:0xDF + if(SaveSlotIndex != -1) + { + ValueIndex = SaveSlots[SaveSlotIndex].Values.Find('ValueId', ValueId); + // End:0xDF + if(ValueIndex != -1) + { + Value = SaveSlots[SaveSlotIndex].Values[ValueIndex].Value; + } + } + return Value; + //return ReturnValue; +} + +function UpdateValue(string McpId, string SaveSlot, name ValueId, int Value) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt; + + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x259 + if(Request != none) + { + URL = ((((((((((GetBaseURL()) $ UpdateValueUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ McpId) $ "&saveSlotId=") $ SaveSlot) $ "&valueId=") $ string(ValueId)) $ "&value=") $ string(Value); + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.__OnProcessRequestComplete__Delegate = OnUpdateValueRequestComplete; + AddAt = UpdateValueRequests.Length; + UpdateValueRequests.Length = AddAt + 1; + UpdateValueRequests[AddAt].McpId = McpId; + UpdateValueRequests[AddAt].SaveSlot = SaveSlot; + UpdateValueRequests[AddAt].ValueId = ValueId; + UpdateValueRequests[AddAt].Request = Request; + // End:0x259 + if(!Request.ProcessRequest()) + { + } + } + //return; +} + +function OnUpdateValueRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, ResponseCode; + local string ResponseString; + local int UpdatedValue; + + Index = UpdateValueRequests.Find('Request', Request); + // End:0x29B + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x149 + if(bWasSuccessful) + { + ResponseString = ("[" $ Response.GetContentAsString()) $ "]"; + ParseValuesForSaveSlot(UpdateValueRequests[Index].McpId, UpdateValueRequests[Index].SaveSlot, ResponseString); + } + UpdatedValue = GetValue(UpdateValueRequests[Index].McpId, UpdateValueRequests[Index].SaveSlot, UpdateValueRequests[Index].ValueId); + OnUpdateValueComplete(UpdateValueRequests[Index].McpId, UpdateValueRequests[Index].SaveSlot, UpdateValueRequests[Index].ValueId, UpdatedValue, bWasSuccessful, Response.GetContentAsString()); + UpdateValueRequests.Remove(Index, 1); + } + //return; +} + +function DeleteValue(string McpId, string SaveSlot, name ValueId) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt; + + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x243 + if(Request != none) + { + URL = ((((((((GetBaseURL()) $ DeleteValueUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ McpId) $ "&saveSlotId=") $ SaveSlot) $ "&valueId=") $ string(ValueId); + Request.SetURL(URL); + Request.SetVerb("DELETE"); + Request.__OnProcessRequestComplete__Delegate = OnDeleteValueRequestComplete; + AddAt = DeleteValueRequests.Length; + DeleteValueRequests.Length = AddAt + 1; + DeleteValueRequests[AddAt].McpId = McpId; + DeleteValueRequests[AddAt].SaveSlot = SaveSlot; + DeleteValueRequests[AddAt].ValueId = ValueId; + DeleteValueRequests[AddAt].Request = Request; + // End:0x243 + if(!Request.ProcessRequest()) + { + } + } + //return; +} + +function OnDeleteValueRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, ResponseCode, SaveSlotIndex, ValueIndex; + + Index = DeleteValueRequests.Find('Request', Request); + // End:0x295 + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x1D2 + if(bWasSuccessful) + { + SaveSlotIndex = FindSaveSlotIndex(DeleteValueRequests[Index].McpId, DeleteValueRequests[Index].SaveSlot); + // End:0x1D2 + if(SaveSlotIndex != -1) + { + ValueIndex = SaveSlots[SaveSlotIndex].Values.Find('ValueId', DeleteValueRequests[Index].ValueId); + // End:0x1D2 + if(ValueIndex != -1) + { + SaveSlots[SaveSlotIndex].Values.Remove(ValueIndex, 1); + } + } + } + OnDeleteValueComplete(DeleteValueRequests[Index].McpId, DeleteValueRequests[Index].SaveSlot, DeleteValueRequests[Index].ValueId, bWasSuccessful, Response.GetContentAsString()); + DeleteValueRequests.Remove(Index, 1); + } + //return; +} + +defaultproperties +{ + CreateSaveSlotUrl="/createvalues" + ReadSaveSlotUrl="/listvalues" + UpdateValueUrl="/updatevalue" + DeleteValueUrl="/deletevalue" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpManagedValueManagerBase.uc b/exported/IpDrv/Classes/McpManagedValueManagerBase.uc new file mode 100755 index 00000000..e4a154b9 --- /dev/null +++ b/exported/IpDrv/Classes/McpManagedValueManagerBase.uc @@ -0,0 +1,106 @@ +class McpManagedValueManagerBase extends McpServiceBase + abstract + config(Engine); + +struct ManagedValue +{ + var name ValueId; + var int Value; + + structdefaultproperties + { + ValueId="None" + Value=0 + } +}; + +struct ManagedValueSaveSlot +{ + var string OwningMcpId; + var string SaveSlot; + var array Values; + + structdefaultproperties + { + OwningMcpId="" + SaveSlot="" + Values=none + } +}; + +var config string McpManagedValueManagerClassName; +//var delegate __OnCreateSaveSlotComplete__Delegate; +//var delegate __OnReadSaveSlotComplete__Delegate; +//var delegate __OnUpdateValueComplete__Delegate; +//var delegate __OnDeleteValueComplete__Delegate; + +static final function McpManagedValueManagerBase CreateInstance() +{ + local Class McpManagedValueManagerBaseClass; + local McpManagedValueManagerBase NewInstance; + + McpManagedValueManagerBaseClass = Class(DynamicLoadObject(default.McpManagedValueManagerClassName, Class'Core.Class')); + // End:0x76 + if(McpManagedValueManagerBaseClass != none) + { + NewInstance = new McpManagedValueManagerBaseClass; + NewInstance.Init(); + } + return NewInstance; + //return ReturnValue; +} + +function CreateSaveSlot(string McpId, string SaveSlot) +{ + //return; +} + +delegate OnCreateSaveSlotComplete(string McpId, string SaveSlot, bool bWasSuccessful, string Error) +{ + //return; +} + +function ReadSaveSlot(string McpId, string SaveSlot) +{ + //return; +} + +delegate OnReadSaveSlotComplete(string McpId, string SaveSlot, bool bWasSuccessful, string Error) +{ + //return; +} + +function array GetValues(string McpId, string SaveSlot) +{ + //return ReturnValue; +} + +function int GetValue(string McpId, string SaveSlot, name ValueId) +{ + //return ReturnValue; +} + +function UpdateValue(string McpId, string SaveSlot, name ValueId, int Value) +{ + //return; +} + +delegate OnUpdateValueComplete(string McpId, string SaveSlot, name ValueId, int Value, bool bWasSuccessful, string Error) +{ + //return; +} + +function DeleteValue(string McpId, string SaveSlot, name ValueId) +{ + //return; +} + +delegate OnDeleteValueComplete(string McpId, string SaveSlot, name ValueId, bool bWasSuccessful, string Error) +{ + //return; +} + +defaultproperties +{ + McpManagedValueManagerClassName="IpDrv.McpManagedValueManager" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpMessageBase.uc b/exported/IpDrv/Classes/McpMessageBase.uc new file mode 100755 index 00000000..c40ef590 --- /dev/null +++ b/exported/IpDrv/Classes/McpMessageBase.uc @@ -0,0 +1,150 @@ +class McpMessageBase extends McpServiceBase + abstract + native + config(Engine); + +enum EMcpMessageCompressionType +{ + MMCT_NONE, // 0 + MMCT_LZO, // 1 + MMCT_ZLIB, // 2 + MMCT_MAX // 3 +}; + +struct native McpMessage +{ + var string MessageId; + var string TitleId; + var string ToUniqueUserId; + var string FromUniqueUserId; + var string FromFriendlyName; + var string MessageType; + var string ValidUntil; + var McpMessageBase.EMcpMessageCompressionType MessageCompressionType; + + structdefaultproperties + { + MessageId="" + TitleId="" + ToUniqueUserId="" + FromUniqueUserId="" + FromFriendlyName="" + MessageType="" + ValidUntil="" + MessageCompressionType=EMcpMessageCompressionType.MMCT_NONE + } +}; + +struct native McpMessageList +{ + var string ToUniqueUserId; + var array Messages; + + structdefaultproperties + { + ToUniqueUserId="" + Messages=none + } +}; + +struct native McpMessageContents +{ + var string MessageId; + var array MessageContents; + + structdefaultproperties + { + MessageId="" + MessageContents=none + } +}; + +var config string McpMessageManagerClassName; +var config McpMessageBase.EMcpMessageCompressionType CompressionType; +var array MessageContentsList; +var array MessageLists; +//var delegate __OnCreateMessageComplete__Delegate; +//var delegate __OnDeleteMessageComplete__Delegate; +//var delegate __OnQueryMessagesComplete__Delegate; +//var delegate __OnQueryMessageContentsComplete__Delegate; + +static final function McpMessageBase CreateInstance() +{ + local Class McpMessageBaseClass; + local McpMessageBase NewInstance; + + McpMessageBaseClass = Class(DynamicLoadObject(default.McpMessageManagerClassName, Class'Core.Class')); + // End:0x76 + if(McpMessageBaseClass != none) + { + NewInstance = new McpMessageBaseClass; + NewInstance.Init(); + } + return NewInstance; + //return ReturnValue; +} + +function CreateMessage(const out array ToUniqueUserIds, string FromUniqueUserId, string FromFriendlyName, string MessageType, string TitleId, string PushMessage, string ValidUntil, const out array MessageContents) +{ + //return; +} + +delegate OnCreateMessageComplete(McpMessage Message, bool bWasSuccessful, string Error) +{ + //return; +} + +function DeleteMessage(string MessageId) +{ + //return; +} + +delegate OnDeleteMessageComplete(string MessageId, bool bWasSuccessful, string Error) +{ + //return; +} + +function QueryMessages(string ToUniqueUserId, string TitleId) +{ + //return; +} + +delegate OnQueryMessagesComplete(string UserId, bool bWasSuccessful, string Error) +{ + //return; +} + +function GetMessageList(string ToUniqueUserId, out McpMessageList MessageList) +{ + //return; +} + +function QueryMessageContents(string MessageId) +{ + //return; +} + +delegate OnQueryMessageContentsComplete(string MessageId, bool bWasSuccessful, string Error) +{ + //return; +} + +function bool GetMessageContents(string MessageId, out array MessageContents) +{ + //return ReturnValue; +} + +function CacheMessage(McpMessage Message) +{ + //return; +} + +function bool CacheMessageContents(const out array MessageContents, string MessageId) +{ + //return ReturnValue; +} + +defaultproperties +{ + McpMessageManagerClassName="IpDrv.McpMessageManager" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpMessageManager.uc b/exported/IpDrv/Classes/McpMessageManager.uc new file mode 100755 index 00000000..446c70c1 --- /dev/null +++ b/exported/IpDrv/Classes/McpMessageManager.uc @@ -0,0 +1,495 @@ +class McpMessageManager extends McpMessageBase + native + config(Engine); + +struct native McpCompressMessageRequest +{ + var array SourceBuffer; + var array DestBuffer; + var int OutCompressedSize; + var HttpRequestInterface Request; + var native Pointer CompressionWorker; + + structdefaultproperties + { + SourceBuffer=none + DestBuffer=none + OutCompressedSize=0 + Request=none + } +}; + +struct native McpUncompressMessageRequest +{ + var string MessageId; + var array SourceBuffer; + var array DestBuffer; + var int OutUncompressedSize; + var native Pointer UncompressionWorker; + + structdefaultproperties + { + MessageId="" + SourceBuffer=none + DestBuffer=none + OutUncompressedSize=0 + } +}; + +var private native const noexport Pointer VfTable_FTickableObject; +var config string CreateMessageUrl; +var config string DeleteMessageUrl; +var config string QueryMessagesUrl; +var config string QueryMessageContentsUrl; +var config string DeleteAllMessagesUrl; +var native array CompressMessageRequests; +var native array UncompressMessageRequests; + +// Export UMcpMessageManager::execStartAsyncCompression(FFrame&, void* const) +native function bool StartAsyncCompression(McpMessageBase.EMcpMessageCompressionType MessageCompressionType, const out array MessageContent, HttpRequestInterface Request); + +// Export UMcpMessageManager::execStartAsyncUncompression(FFrame&, void* const) +native function bool StartAsyncUncompression(string MessageId, McpMessageBase.EMcpMessageCompressionType MessageCompressionType, const out array MessageContent); + +event FinishedAsyncUncompression(bool bWasSuccessful, const out array UncompressedMessageContents, string MessageId) +{ + // End:0x21 + if(!CacheMessageContents(UncompressedMessageContents, MessageId)) + { + } + OnQueryMessageContentsComplete(MessageId, bWasSuccessful, ""); + //return; +} + +function CreateMessage(const out array ToUniqueUserIds, string FromUniqueUserId, string FromFriendlyName, string MessageType, string TitleId, string PushMessage, string ValidUntil, const out array MessageContents) +{ + local string URL; + local HttpRequestInterface CreateMessageRequest; + local McpMessage Message; + local string ToUniqueUserIdsStr; + local int Idx; + + CreateMessageRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x370 + if(CreateMessageRequest != none) + { + Idx = 0; + J0x43: + + // End:0xC4 [Loop If] + if(Idx < ToUniqueUserIds.Length) + { + ToUniqueUserIdsStr $= ToUniqueUserIds[Idx]; + // End:0xB6 + if((ToUniqueUserIds.Length - Idx) > 1) + { + ToUniqueUserIdsStr $= ","; + } + Idx++; + // [Loop Continue] + goto J0x43; + } + URL = ((((((((((((((((GetBaseURL()) $ CreateMessageUrl) $ (GetAppAccessURL())) $ "&toUniqueUserIds=") $ ToUniqueUserIdsStr) $ "&fromUniqueUserId=") $ FromUniqueUserId) $ "&fromFriendlyName=") $ FromFriendlyName) $ "&messageType=") $ MessageType) $ "&pushMessage=") $ PushMessage) $ "&messageCompressionType=") $ string(CompressionType)) $ "&validUntil=") $ ValidUntil; + CreateMessageRequest.SetURL(URL); + CreateMessageRequest.SetHeader("Content-Type", "multipart/form-data"); + CreateMessageRequest.SetVerb("POST"); + CreateMessageRequest.__OnProcessRequestComplete__Delegate = OnCreateMessageRequestComplete; + // End:0x324 + if((int(CompressionType) == int(1)) || int(CompressionType) == int(2)) + { + // End:0x321 + if(!StartAsyncCompression(CompressionType, MessageContents, CreateMessageRequest)) + { + OnCreateMessageComplete(Message, false, "Failed to Start Async Compression."); + } + } + else + { + CreateMessageRequest.SetContent(MessageContents); + // End:0x370 + if(!CreateMessageRequest.ProcessRequest()) + { + } + } + } + //return; +} + +function OnCreateMessageRequestComplete(HttpRequestInterface CreateMessageRequest, HttpResponseInterface HttpResponse, bool bWasSuccessful) +{ + local int ResponseCode; + local string Content; + local McpMessage CreatedMessage; + + ResponseCode = 500; + // End:0xB8 + if((HttpResponse != none) && CreateMessageRequest != none) + { + ResponseCode = HttpResponse.GetResponseCode(); + bWasSuccessful = bWasSuccessful && ResponseCode == 201; + Content = HttpResponse.GetContentAsString(); + // End:0xB8 + if(bWasSuccessful) + { + } + } + OnCreateMessageComplete(CreatedMessage, bWasSuccessful, Content); + //return; +} + +function DeleteMessage(string MessageId) +{ + local string URL; + local HttpRequestInterface DeleteMessageRequest; + + DeleteMessageRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x120 + if(DeleteMessageRequest != none) + { + URL = ((((GetBaseURL()) $ DeleteMessageUrl) $ (GetAppAccessURL())) $ "&messageId=") $ MessageId; + DeleteMessageRequest.SetVerb("DELETE"); + DeleteMessageRequest.SetURL(URL); + DeleteMessageRequest.__OnProcessRequestComplete__Delegate = OnDeleteMessageRequestComplete; + // End:0x120 + if(!DeleteMessageRequest.ProcessRequest()) + { + } + } + //return; +} + +function OnDeleteMessageRequestComplete(HttpRequestInterface OriginalRequest, HttpResponseInterface HttpResponse, bool bWasSuccessful) +{ + local int ResponseCode; + local string Content, MessageId; + + ResponseCode = 500; + // End:0xCD + if(HttpResponse != none) + { + ResponseCode = HttpResponse.GetResponseCode(); + MessageId = HttpResponse.GetURLParameter("MessageId"); + ResponseCode = HttpResponse.GetResponseCode(); + Content = HttpResponse.GetContentAsString(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + OnDeleteMessageComplete(MessageId, bWasSuccessful, Content); + //return; +} + +function QueryMessages(string ToUniqueUserId, string TitleId) +{ + local string URL; + local HttpRequestInterface QueryMessagesRequest; + + QueryMessagesRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x138 + if(QueryMessagesRequest != none) + { + URL = ((((((GetBaseURL()) $ QueryMessagesUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ ToUniqueUserId) $ "&titleId=") $ TitleId; + QueryMessagesRequest.SetURL(URL); + QueryMessagesRequest.SetVerb("GET"); + QueryMessagesRequest.__OnProcessRequestComplete__Delegate = OnQueryMessagesRequestComplete; + // End:0x138 + if(!QueryMessagesRequest.ProcessRequest()) + { + } + } + //return; +} + +private final function OnQueryMessagesRequestComplete(HttpRequestInterface OriginalRequest, HttpResponseInterface HttpResponse, bool bWasSuccessful) +{ + local int ResponseCode; + local string Error, JsonString; + local JsonObject ParsedJson; + local int JsonIndex; + local McpMessage Message; + local string MessageCompressionTypeString; + + ResponseCode = 500; + // End:0x538 + if((HttpResponse != none) && OriginalRequest != none) + { + ResponseCode = HttpResponse.GetResponseCode(); + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x50F + if(bWasSuccessful) + { + JsonString = HttpResponse.GetContentAsString(); + // End:0x4CE + if(JsonString != "") + { + ParsedJson = Class'Engine.JsonObject'.static.DecodeJson(JsonString); + JsonIndex = 0; + J0x102: + + // End:0x4CB [Loop If] + if(JsonIndex < ParsedJson.ObjectArray.Length) + { + Message.MessageId = ParsedJson.ObjectArray[JsonIndex].GetStringValue("message_id"); + Message.ToUniqueUserId = ParsedJson.ObjectArray[JsonIndex].GetStringValue("to_unique_user_id"); + Message.FromUniqueUserId = ParsedJson.ObjectArray[JsonIndex].GetStringValue("from_unique_user_id"); + Message.FromFriendlyName = ParsedJson.ObjectArray[JsonIndex].GetStringValue("from_friendly_name"); + Message.MessageType = ParsedJson.ObjectArray[JsonIndex].GetStringValue("message_type"); + MessageCompressionTypeString = ParsedJson.ObjectArray[JsonIndex].GetStringValue("message_compression_type"); + Message.ValidUntil = ParsedJson.ObjectArray[JsonIndex].GetStringValue("valid_until"); + switch(MessageCompressionTypeString) + { + // End:0x458 + case "MMCT_LZO": + Message.MessageCompressionType = 1; + // End:0x4AA + break; + // End:0x488 + case "MMCT_ZLIB": + Message.MessageCompressionType = 2; + // End:0x4AA + break; + // End:0xFFFF + default: + Message.MessageCompressionType = 0; + break; + } + CacheMessage(Message); + JsonIndex++; + // [Loop Continue] + goto J0x102; + } + } + else + { + Error = "Query did not return any content in it's response."; + } + } + else + { + Error = HttpResponse.GetContentAsString(); + } + } + OnQueryMessagesComplete(Message.ToUniqueUserId, bWasSuccessful, Error); + //return; +} + +function GetMessageList(string ToUniqueUserId, out McpMessageList MessageList) +{ + local int MessageListIndex; + + MessageListIndex = MessageLists.Find('ToUniqueUserId', ToUniqueUserId); + // End:0x5C + if(MessageListIndex != -1) + { + MessageList = MessageLists[MessageListIndex]; + } + //return; +} + +function QueryMessageContents(string MessageId) +{ + local string URL; + local HttpRequestInterface QueryMessageContentsRequest; + + QueryMessageContentsRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x11D + if(QueryMessageContentsRequest != none) + { + URL = ((((GetBaseURL()) $ QueryMessageContentsUrl) $ (GetAppAccessURL())) $ "&messageId=") $ MessageId; + QueryMessageContentsRequest.SetURL(URL); + QueryMessageContentsRequest.SetVerb("GET"); + QueryMessageContentsRequest.__OnProcessRequestComplete__Delegate = OnQueryMessageContentsRequestComplete; + // End:0x11D + if(!QueryMessageContentsRequest.ProcessRequest()) + { + } + } + //return; +} + +private final function OnQueryMessageContentsRequestComplete(HttpRequestInterface OriginalRequest, HttpResponseInterface HttpResponse, bool bWasSuccessful) +{ + local int ResponseCode; + local array MessageContents; + local string MessageId; + local McpMessage Message; + + ResponseCode = 500; + // End:0x2C6 + if((HttpResponse != none) && OriginalRequest != none) + { + MessageId = OriginalRequest.GetURLParameter("messageId"); + ResponseCode = HttpResponse.GetResponseCode(); + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x287 + if(bWasSuccessful && Len(MessageId) > 0) + { + HttpResponse.GetContent(MessageContents); + // End:0x233 + if(MessageContents.Length > 0) + { + GetMessageById(MessageId, Message); + // End:0x1B2 + if(int(Message.MessageCompressionType) == int(0)) + { + CacheMessageContents(MessageContents, MessageId); + OnQueryMessageContentsComplete(MessageId, bWasSuccessful, HttpResponse.GetContentAsString()); + } + else + { + // End:0x230 + if(!StartAsyncUncompression(MessageId, Message.MessageCompressionType, MessageContents)) + { + OnQueryMessageContentsComplete(MessageId, false, "Could not Start AsyncDecompression"); + } + } + } + else + { + OnQueryMessageContentsComplete(MessageId, false, "Query did not return any content in it's response."); + } + } + else + { + OnQueryMessageContentsComplete(MessageId, false, HttpResponse.GetContentAsString()); + } + } + else + { + OnQueryMessageContentsComplete(MessageId, false, "There was No HttpResponse or Request"); + } + //return; +} + +function bool GetMessageContents(string MessageId, out array MessageContents) +{ + local bool bWasSuccessful; + local int MessageContentsIndex; + + MessageContentsIndex = MessageContentsList.Find('MessageId', MessageId); + // End:0x7B + if(MessageContentsIndex != -1) + { + MessageContents = MessageContentsList[MessageContentsIndex].MessageContents; + bWasSuccessful = true; + } + else + { + bWasSuccessful = false; + } + return bWasSuccessful; + //return ReturnValue; +} + +function CacheMessage(McpMessage Message) +{ + local int AddAt, MessageIndex, MessageListIndex; + local McpMessageList UserMessageList; + local bool bWasFound; + + bWasFound = false; + MessageListIndex = MessageLists.Find('ToUniqueUserId', Message.ToUniqueUserId); + // End:0x1DF + if(MessageListIndex != -1) + { + UserMessageList = MessageLists[MessageListIndex]; + MessageIndex = 0; + J0x83: + + // End:0x12F [Loop If] + if((MessageIndex < UserMessageList.Messages.Length) && !bWasFound) + { + bWasFound = Message.MessageId == UserMessageList.Messages[MessageIndex].MessageId; + MessageIndex++; + // [Loop Continue] + goto J0x83; + } + // End:0x1DC + if(!bWasFound) + { + AddAt = UserMessageList.Messages.Length; + UserMessageList.Messages.Length = AddAt + 1; + UserMessageList.Messages[AddAt] = Message; + MessageLists[MessageListIndex] = UserMessageList; + } + } + else + { + AddAt = MessageLists.Length; + MessageLists.Length = AddAt + 1; + MessageLists[AddAt].ToUniqueUserId = Message.ToUniqueUserId; + MessageLists[AddAt].Messages[0] = Message; + } + //return; +} + +function bool GetMessageById(string MessageId, out McpMessage Message) +{ + local int MessageListsSize, MessageListsItr, MessageItr; + + MessageListsSize = MessageLists.Length; + MessageListsItr = 0; + J0x1F: + + // End:0x11F [Loop If] + if(MessageListsItr < MessageListsSize) + { + MessageItr = 0; + J0x41: + + // End:0x111 [Loop If] + if(MessageItr < MessageLists[MessageListsItr].Messages.Length) + { + // End:0x103 + if(MessageLists[MessageListsItr].Messages[MessageItr].MessageId == MessageId) + { + Message = MessageLists[MessageListsItr].Messages[MessageItr]; + return true; + } + MessageItr++; + // [Loop Continue] + goto J0x41; + } + MessageListsItr++; + // [Loop Continue] + goto J0x1F; + } + return false; + //return ReturnValue; +} + +function bool CacheMessageContents(const out array MessageContents, string MessageId) +{ + local int MessageContentsIndex; + local bool bWasSuccessful; + + bWasSuccessful = false; + // End:0x145 + if((MessageContents.Length > 0) && Len(MessageId) > 0) + { + MessageContentsIndex = MessageContentsList.Find('MessageId', MessageId); + // End:0xAA + if(MessageContentsIndex != -1) + { + MessageContentsList[MessageContentsIndex].MessageContents = MessageContents; + bWasSuccessful = true; + } + else + { + MessageContentsIndex = MessageContentsList.Length; + MessageContentsList.Length = MessageContentsList.Length + 1; + MessageContentsList[MessageContentsIndex].MessageId = MessageId; + MessageContentsList[MessageContentsIndex].MessageContents = MessageContents; + bWasSuccessful = true; + } + } + return bWasSuccessful; + //return ReturnValue; +} + +defaultproperties +{ + CreateMessageUrl="/messagecreate" + DeleteMessageUrl="/messagedelete" + QueryMessagesUrl="/messagelist" + QueryMessageContentsUrl="/messagecontents" + CompressionType=EMcpMessageCompressionType.MMCT_LZO +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpServerTimeBase.uc b/exported/IpDrv/Classes/McpServerTimeBase.uc new file mode 100755 index 00000000..995778c8 --- /dev/null +++ b/exported/IpDrv/Classes/McpServerTimeBase.uc @@ -0,0 +1,42 @@ +class McpServerTimeBase extends McpServiceBase + abstract + config(Engine); + +var config string McpServerTimeClassName; +//var delegate __OnQueryServerTimeComplete__Delegate; + +static final function McpServerTimeBase CreateInstance() +{ + local Class McpServerTimeBaseClass; + local McpServerTimeBase NewInstance; + + McpServerTimeBaseClass = Class(DynamicLoadObject(default.McpServerTimeClassName, Class'Core.Class')); + // End:0x76 + if(McpServerTimeBaseClass != none) + { + NewInstance = new McpServerTimeBaseClass; + NewInstance.Init(); + } + return NewInstance; + //return ReturnValue; +} + +function QueryServerTime() +{ + //return; +} + +delegate OnQueryServerTimeComplete(bool bWasSuccessful, string DateTimeStr, string Error) +{ + //return; +} + +function string GetLastServerTime() +{ + //return ReturnValue; +} + +defaultproperties +{ + McpServerTimeClassName="IpDrv.McpServerTimeManager" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpServerTimeManager.uc b/exported/IpDrv/Classes/McpServerTimeManager.uc new file mode 100755 index 00000000..ff7b9d45 --- /dev/null +++ b/exported/IpDrv/Classes/McpServerTimeManager.uc @@ -0,0 +1,94 @@ +class McpServerTimeManager extends McpServerTimeBase + config(Engine); + +var config string TimeStampUrl; +var string LastTimeStamp; +var HttpRequestInterface HTTPRequestServerTime; + +function QueryServerTime() +{ + local string URL, ErrorStr; + local bool bPending; + + // End:0x156 + if(HTTPRequestServerTime == none) + { + HTTPRequestServerTime = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x153 + if(HTTPRequestServerTime != none) + { + URL = ((GetBaseURL()) $ TimeStampUrl) $ (GetAppAccessURL()); + HTTPRequestServerTime.SetURL(URL); + HTTPRequestServerTime.SetVerb("GET"); + HTTPRequestServerTime.__OnProcessRequestComplete__Delegate = OnQueryServerTimeHTTPRequestComplete; + // End:0x11F + if(HTTPRequestServerTime.ProcessRequest()) + { + bPending = true; + } + else + { + ErrorStr = "failed to start request, Url=" $ URL; + } + } + } + else + { + ErrorStr = "last request is still being processed"; + } + // End:0x1B5 + if(!bPending) + { + OnQueryServerTimeComplete(false, "", ErrorStr); + } + //return; +} + +private final function OnQueryServerTimeHTTPRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local string TimeStr, ResponseStr, ErrorStr; + local int Idx; + local bool bResult; + + HTTPRequestServerTime = none; + // End:0x181 + if(bWasSuccessful && Response != none) + { + // End:0x12A + if(Response.GetResponseCode() == 200) + { + ResponseStr = Response.GetContentAsString(); + Idx = InStr(ResponseStr, "Timestamp="); + // End:0x127 + if(Idx != -1) + { + TimeStr = Mid(ResponseStr, Idx); + Idx = InStr(ResponseStr, "="); + TimeStr = Mid(TimeStr, Idx); + LastTimeStamp = TimeStr; + bResult = true; + } + } + else + { + ErrorStr = "invalid server response code, status=" $ string(Response.GetResponseCode()); + } + } + else + { + ErrorStr = "no response"; + } + OnQueryServerTimeComplete(bResult, TimeStr, ErrorStr); + //return; +} + +function string GetLastServerTime() +{ + return LastTimeStamp; + //return ReturnValue; +} + +defaultproperties +{ + TimeStampUrl="/timestamp" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpServiceBase.uc b/exported/IpDrv/Classes/McpServiceBase.uc new file mode 100755 index 00000000..00505120 --- /dev/null +++ b/exported/IpDrv/Classes/McpServiceBase.uc @@ -0,0 +1,50 @@ +class McpServiceBase extends Object + native + config(Engine); + +var config string McpConfigClassName; +var McpServiceConfig McpConfig; + +event Init() +{ + local Class McpConfigClass; + + McpConfigClass = Class(DynamicLoadObject(default.McpConfigClassName, Class'Core.Class')); + // End:0x57 + if(McpConfigClass != none) + { + McpConfig = new McpConfigClass; + } + //return; +} + +function string GetBaseURL() +{ + return (McpConfig.Protocol $ "://") $ McpConfig.Domain; + //return ReturnValue; +} + +function string GetAppAccessURL() +{ + return (((("?appKey=" $ McpConfig.AppKey) $ "&appSecret=") $ McpConfig.AppSecret) $ "&titleId=") $ McpConfig.TitleId; + //return ReturnValue; +} + +function string GetUserAuthURL(string McpId) +{ + local string AuthTicket; + + AuthTicket = McpConfig.GetUserAuthTicket(McpId); + // End:0x5D + if(Len(AuthTicket) > 0) + { + return "&authTicket=" $ AuthTicket; + } + return ""; + //return ReturnValue; +} + +defaultproperties +{ + McpConfigClassName="IpDrv.McpServiceConfig" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpServiceConfig.uc b/exported/IpDrv/Classes/McpServiceConfig.uc new file mode 100755 index 00000000..2b66f728 --- /dev/null +++ b/exported/IpDrv/Classes/McpServiceConfig.uc @@ -0,0 +1,19 @@ +class McpServiceConfig extends Object + config(Engine); + +var config string Protocol; +var config string Domain; +var config string TitleId; +var string AppKey; +var string AppSecret; + +function string GetUserAuthTicket(string McpId) +{ + //return ReturnValue; +} + +defaultproperties +{ + Protocol="http" + Domain="localhost:8888" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpUserCloudFileDownload.uc b/exported/IpDrv/Classes/McpUserCloudFileDownload.uc new file mode 100755 index 00000000..e810028a --- /dev/null +++ b/exported/IpDrv/Classes/McpUserCloudFileDownload.uc @@ -0,0 +1,734 @@ +class McpUserCloudFileDownload extends McpServiceBase + native + config(Engine) + implements(UserCloudFileInterface); + +struct native McpUserCloudFileInfo extends EmsFile +{ + var string CreationDate; + var string LastUpdateDate; + var string CompressionType; +}; + +struct native McpUserCloudFilesEntry +{ + var string UserId; + var array DownloadedFiles; + var array EnumeratedFiles; + var HttpRequestInterface HTTPRequestEnumerateFiles; + + structdefaultproperties + { + UserId="" + DownloadedFiles=none + EnumeratedFiles=none + HTTPRequestEnumerateFiles=none + } +}; + +var config string EnumerateCloudFilesUrl; +var config string ReadCloudFileUrl; +var config string WriteCloudFileUrl; +var config string DeleteCloudFileUrl; +var private array UserCloudFileRequests; +var private array< delegate > EnumerateUserFilesCompleteDelegates; +var private array< delegate > ReadUserFileCompleteDelegates; +var private array< delegate > WriteUserFileCompleteDelegates; +var private array< delegate > DeleteUserFileCompleteDelegates; +//var delegate __OnEnumerateUserFilesComplete__Delegate; +//var delegate __OnReadUserFileComplete__Delegate; +//var delegate __OnWriteUserFileComplete__Delegate; +//var delegate __OnDeleteUserFileComplete__Delegate; + +function bool GetFileContents(string UserId, string Filename, out array FileContents) +{ + local bool bResult; + local int EntryIdx, FileIdx; + + EntryIdx = UserCloudFileRequests.Find('UserId', UserId); + // End:0x13E + if(EntryIdx != -1) + { + FileIdx = UserCloudFileRequests[EntryIdx].DownloadedFiles.Find('Filename', Filename); + // End:0x13E + if((FileIdx != -1) && int(UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].AsyncState) == int(2)) + { + FileContents = UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].Data; + bResult = true; + } + } + return bResult; + //return ReturnValue; +} + +function bool ClearFiles(string UserId) +{ + local bool bResult; + local int EntryIdx, FileIdx; + + EntryIdx = UserCloudFileRequests.Find('UserId', UserId); + // End:0x10F + if(EntryIdx != -1) + { + FileIdx = 0; + J0x47: + + // End:0xDA [Loop If] + if(FileIdx < UserCloudFileRequests[EntryIdx].DownloadedFiles.Length) + { + // End:0xCC + if(int(UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].AsyncState) == int(1)) + { + return false; + } + FileIdx++; + // [Loop Continue] + goto J0x47; + } + UserCloudFileRequests[EntryIdx].DownloadedFiles.Length = 0; + bResult = true; + } + return bResult; + //return ReturnValue; +} + +function bool ClearFile(string UserId, string Filename) +{ + local bool bResult; + local int EntryIdx, FileIdx; + + EntryIdx = UserCloudFileRequests.Find('UserId', UserId); + // End:0x123 + if(EntryIdx != -1) + { + FileIdx = UserCloudFileRequests[EntryIdx].DownloadedFiles.Find('Filename', Filename); + // End:0x123 + if((FileIdx != -1) && int(UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].AsyncState) != int(1)) + { + UserCloudFileRequests[EntryIdx].DownloadedFiles.Remove(FileIdx, 1); + bResult = true; + } + } + return bResult; + //return ReturnValue; +} + +function EnumerateUserFiles(string UserId) +{ + local int EntryIdx; + local string URL; + local bool bPending; + + EntryIdx = UserCloudFileRequests.Find('UserId', UserId); + // End:0x97 + if(EntryIdx == -1) + { + EntryIdx = UserCloudFileRequests.Length; + UserCloudFileRequests.Length = EntryIdx + 1; + UserCloudFileRequests[EntryIdx].UserId = UserId; + } + // End:0x29B + if(UserCloudFileRequests[EntryIdx].HTTPRequestEnumerateFiles == none) + { + UserCloudFileRequests[EntryIdx].HTTPRequestEnumerateFiles = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x298 + if(UserCloudFileRequests[EntryIdx].HTTPRequestEnumerateFiles != none) + { + URL = ((((GetBaseURL()) $ EnumerateCloudFilesUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ UserId; + UserCloudFileRequests[EntryIdx].HTTPRequestEnumerateFiles.SetURL(URL); + UserCloudFileRequests[EntryIdx].HTTPRequestEnumerateFiles.SetVerb("GET"); + UserCloudFileRequests[EntryIdx].HTTPRequestEnumerateFiles.__OnProcessRequestComplete__Delegate = OnHTTPRequestEnumerateUserFilesComplete; + UserCloudFileRequests[EntryIdx].HTTPRequestEnumerateFiles.ProcessRequest(); + bPending = true; + } + } + // End:0x2BE + if(!bPending) + { + CallEnumerateUserFileCompleteDelegates(false, UserId); + } + //return; +} + +private final function OnHTTPRequestEnumerateUserFilesComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int EntryIdx, JsonIdx; + local string JsonString, UserId; + local JsonObject ParsedJson; + local bool bResult; + + EntryIdx = UserCloudFileRequests.Find('HTTPRequestEnumerateFiles', Request); + // End:0x55B + if(EntryIdx != -1) + { + UserId = UserCloudFileRequests[EntryIdx].UserId; + // End:0x533 + if(bWasSuccessful && Response.GetResponseCode() == 200) + { + UserCloudFileRequests[EntryIdx].EnumeratedFiles.Length = 0; + JsonString = Response.GetContentAsString(); + // End:0x524 + if(JsonString != "") + { + ParsedJson = Class'Engine.JsonObject'.static.DecodeJson(JsonString); + UserCloudFileRequests[EntryIdx].EnumeratedFiles.Length = ParsedJson.ObjectArray.Length; + JsonIdx = 0; + J0x187: + + // End:0x524 [Loop If] + if(JsonIdx < ParsedJson.ObjectArray.Length) + { + UserCloudFileRequests[EntryIdx].EnumeratedFiles[JsonIdx].Filename = ParsedJson.ObjectArray[JsonIdx].GetStringValue("file_name"); + UserCloudFileRequests[EntryIdx].EnumeratedFiles[JsonIdx].FileSize = int(ParsedJson.ObjectArray[JsonIdx].GetStringValue("file_size")); + UserCloudFileRequests[EntryIdx].EnumeratedFiles[JsonIdx].DLName = ParsedJson.ObjectArray[JsonIdx].GetStringValue("file_name"); + UserCloudFileRequests[EntryIdx].EnumeratedFiles[JsonIdx].CreationDate = ParsedJson.ObjectArray[JsonIdx].GetStringValue("creation_date"); + UserCloudFileRequests[EntryIdx].EnumeratedFiles[JsonIdx].LastUpdateDate = ParsedJson.ObjectArray[JsonIdx].GetStringValue("last_update_time"); + UserCloudFileRequests[EntryIdx].EnumeratedFiles[JsonIdx].CompressionType = ParsedJson.ObjectArray[JsonIdx].GetStringValue("compression_type"); + JsonIdx++; + // [Loop Continue] + goto J0x187; + } + } + bResult = true; + } + UserCloudFileRequests[EntryIdx].HTTPRequestEnumerateFiles = none; + } + CallEnumerateUserFileCompleteDelegates(bResult, UserId); + //return; +} + +delegate OnEnumerateUserFilesComplete(bool bWasSuccessful, string UserId) +{ + //return; +} + +private final function CallEnumerateUserFileCompleteDelegates(bool bWasSuccessful, string UserId) +{ + local int Index; + local delegate CallDelegate; + + Index = 0; + J0x0B: + + // End:0x83 [Loop If] + if(Index < EnumerateUserFilesCompleteDelegates.Length) + { + CallDelegate = EnumerateUserFilesCompleteDelegates[Index]; + // End:0x75 + if(CallDelegate != none) + { + OnEnumerateUserFilesComplete(bWasSuccessful, UserId); + } + Index++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function AddEnumerateUserFileCompleteDelegate(delegate EnumerateUserFileCompleteDelegate) +{ + // End:0x36 + if(EnumerateUserFilesCompleteDelegates.Find(EnumerateUserFileCompleteDelegate) == -1) + { + EnumerateUserFilesCompleteDelegates.AddItem(EnumerateUserFileCompleteDelegate); + } + //return; +} + +function ClearEnumerateUserFileCompleteDelegate(delegate EnumerateUserFileCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = EnumerateUserFilesCompleteDelegates.Find(EnumerateUserFileCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + EnumerateUserFilesCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +function GetUserFileList(string UserId, out array UserFiles) +{ + local int EntryIdx, FileIdx; + + EntryIdx = UserCloudFileRequests.Find('UserId', UserId); + // End:0x1FD + if(EntryIdx != -1) + { + UserFiles.Length = UserCloudFileRequests[EntryIdx].EnumeratedFiles.Length; + FileIdx = 0; + J0x79: + + // End:0x1FA [Loop If] + if(FileIdx < UserCloudFileRequests[EntryIdx].EnumeratedFiles.Length) + { + UserFiles[FileIdx].DLName = UserCloudFileRequests[EntryIdx].EnumeratedFiles[FileIdx].DLName; + UserFiles[FileIdx].Filename = UserCloudFileRequests[EntryIdx].EnumeratedFiles[FileIdx].Filename; + UserFiles[FileIdx].FileSize = UserCloudFileRequests[EntryIdx].EnumeratedFiles[FileIdx].FileSize; + FileIdx++; + // [Loop Continue] + goto J0x79; + } + } + else + { + UserFiles.Length = 0; + } + //return; +} + +function bool ReadUserFile(string UserId, string Filename) +{ + local int EntryIdx, FileIdx; + local string URL; + local bool bPending; + + // End:0x58D + if((Len(UserId) > 0) && Len(Filename) > 0) + { + EntryIdx = UserCloudFileRequests.Find('UserId', UserId); + // End:0xBB + if(EntryIdx == -1) + { + EntryIdx = UserCloudFileRequests.Length; + UserCloudFileRequests.Length = EntryIdx + 1; + UserCloudFileRequests[EntryIdx].UserId = UserId; + } + FileIdx = UserCloudFileRequests[EntryIdx].DownloadedFiles.Find('Filename', Filename); + // End:0x1C6 + if(FileIdx == -1) + { + FileIdx = UserCloudFileRequests[EntryIdx].DownloadedFiles.Length; + UserCloudFileRequests[EntryIdx].DownloadedFiles.Length = FileIdx + 1; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].Filename = Filename; + } + // End:0x58A + if((int(UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].AsyncState) != int(1)) && UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest == none) + { + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].AsyncState = 1; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].Data.Length = 0; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x587 + if(UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest != none) + { + URL = ((((((GetBaseURL()) $ ReadCloudFileUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ UserId) $ "&fileName=") $ Filename; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest.SetURL(URL); + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest.SetVerb("GET"); + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest.__OnProcessRequestComplete__Delegate = OnHTTPRequestReadUserFileComplete; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest.ProcessRequest(); + bPending = true; + } + } + } + // End:0x5B9 + if(!bPending) + { + CallReadUserFileCompleteDelegates(false, UserId, Filename); + } + return bPending; + //return ReturnValue; +} + +private final function OnHTTPRequestReadUserFileComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int EntryIdx, FileIdx; + local string Filename, UserId; + local bool bResult; + local array FileContents; + + GetUserFileIndexForRequest(Request, EntryIdx, FileIdx); + // End:0x268 + if((EntryIdx != -1) && FileIdx != -1) + { + UserId = UserCloudFileRequests[EntryIdx].UserId; + Filename = UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].Filename; + // End:0x1DA + if((bWasSuccessful && Response != none) && Response.GetResponseCode() == 200) + { + Response.GetContent(FileContents); + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].Data = FileContents; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].AsyncState = 2; + bResult = true; + } + else + { + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].AsyncState = 3; + } + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest = none; + } + CallReadUserFileCompleteDelegates(bResult, UserId, Filename); + //return; +} + +delegate OnReadUserFileComplete(bool bWasSuccessful, string UserId, string Filename) +{ + //return; +} + +private final function CallReadUserFileCompleteDelegates(bool bWasSuccessful, string UserId, string Filename) +{ + local int Index; + local delegate CallDelegate; + + Index = 0; + J0x0B: + + // End:0x8C [Loop If] + if(Index < ReadUserFileCompleteDelegates.Length) + { + CallDelegate = ReadUserFileCompleteDelegates[Index]; + // End:0x7E + if(CallDelegate != none) + { + OnReadUserFileComplete(bWasSuccessful, UserId, Filename); + } + Index++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function AddReadUserFileCompleteDelegate(delegate ReadUserFileCompleteDelegate) +{ + // End:0x36 + if(ReadUserFileCompleteDelegates.Find(ReadUserFileCompleteDelegate) == -1) + { + ReadUserFileCompleteDelegates.AddItem(ReadUserFileCompleteDelegate); + } + //return; +} + +function ClearReadUserFileCompleteDelegate(delegate ReadUserFileCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = ReadUserFileCompleteDelegates.Find(ReadUserFileCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + ReadUserFileCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +function bool WriteUserFile(string UserId, string Filename, const out array FileContents) +{ + local int EntryIdx, FileIdx; + local string URL; + local bool bPending; + + // End:0x685 + if(((Len(UserId) > 0) && Len(Filename) > 0) && FileContents.Length > 0) + { + EntryIdx = UserCloudFileRequests.Find('UserId', UserId); + // End:0xCD + if(EntryIdx == -1) + { + EntryIdx = UserCloudFileRequests.Length; + UserCloudFileRequests.Length = EntryIdx + 1; + UserCloudFileRequests[EntryIdx].UserId = UserId; + } + FileIdx = UserCloudFileRequests[EntryIdx].DownloadedFiles.Find('Filename', Filename); + // End:0x1D8 + if(FileIdx == -1) + { + FileIdx = UserCloudFileRequests[EntryIdx].DownloadedFiles.Length; + UserCloudFileRequests[EntryIdx].DownloadedFiles.Length = FileIdx + 1; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].Filename = Filename; + } + // End:0x682 + if((int(UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].AsyncState) != int(1)) && UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest == none) + { + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].AsyncState = 1; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].Data = FileContents; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x67F + if(UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest != none) + { + URL = ((((((GetBaseURL()) $ WriteCloudFileUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ UserId) $ "&fileName=") $ Filename; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest.SetURL(URL); + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest.SetVerb("POST"); + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest.SetHeader("Content-Type", "multipart/form-data"); + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest.SetContent(FileContents); + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest.__OnProcessRequestComplete__Delegate = OnHTTPRequestWriteUserFileComplete; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest.ProcessRequest(); + bPending = true; + } + } + } + // End:0x6B1 + if(!bPending) + { + CallWriteUserFileCompleteDelegates(false, UserId, Filename); + } + return bPending; + //return ReturnValue; +} + +private final function GetUserFileIndexForRequest(HttpRequestInterface Request, out int UserIdx, out int FileIdx) +{ + UserIdx = 0; + J0x0B: + + // End:0x8D [Loop If] + if(UserIdx < UserCloudFileRequests.Length) + { + FileIdx = UserCloudFileRequests[UserIdx].DownloadedFiles.Find('HTTPRequest', Request); + // End:0x7F + if(FileIdx != -1) + { + // [Explicit Break] + goto J0x8D; + } + UserIdx++; + // [Loop Continue] + goto J0x0B; + } + J0x8D: + + // End:0xAF + if(FileIdx == -1) + { + UserIdx = -1; + } + //return; +} + +private final function OnHTTPRequestWriteUserFileComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int EntryIdx, FileIdx; + local string Filename, UserId; + local bool bResult; + + GetUserFileIndexForRequest(Request, EntryIdx, FileIdx); + // End:0x1F3 + if((EntryIdx != -1) && FileIdx != -1) + { + UserId = UserCloudFileRequests[EntryIdx].UserId; + Filename = UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].Filename; + // End:0x165 + if((bWasSuccessful && Response != none) && Response.GetResponseCode() == 200) + { + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].AsyncState = 2; + bResult = true; + } + else + { + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].AsyncState = 3; + } + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest = none; + } + CallWriteUserFileCompleteDelegates(bResult, UserId, Filename); + //return; +} + +delegate OnWriteUserFileComplete(bool bWasSuccessful, string UserId, string Filename) +{ + //return; +} + +private final function CallWriteUserFileCompleteDelegates(bool bWasSuccessful, string UserId, string Filename) +{ + local int Index; + local delegate CallDelegate; + + Index = 0; + J0x0B: + + // End:0x8C [Loop If] + if(Index < WriteUserFileCompleteDelegates.Length) + { + CallDelegate = WriteUserFileCompleteDelegates[Index]; + // End:0x7E + if(CallDelegate != none) + { + OnWriteUserFileComplete(bWasSuccessful, UserId, Filename); + } + Index++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function AddWriteUserFileCompleteDelegate(delegate WriteUserFileCompleteDelegate) +{ + // End:0x36 + if(WriteUserFileCompleteDelegates.Find(WriteUserFileCompleteDelegate) == -1) + { + WriteUserFileCompleteDelegates.AddItem(WriteUserFileCompleteDelegate); + } + //return; +} + +function ClearWriteUserFileCompleteDelegate(delegate WriteUserFileCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = WriteUserFileCompleteDelegates.Find(WriteUserFileCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + WriteUserFileCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +function bool DeleteUserFile(string UserId, string Filename, bool bShouldCloudDelete, bool bShouldLocallyDelete) +{ + local int EntryIdx, FileIdx; + local string URL; + local bool bPending; + + // End:0x59F + if(((Len(UserId) > 0) && Len(Filename) > 0) && bShouldCloudDelete) + { + EntryIdx = UserCloudFileRequests.Find('UserId', UserId); + // End:0xCA + if(EntryIdx == -1) + { + EntryIdx = UserCloudFileRequests.Length; + UserCloudFileRequests.Length = EntryIdx + 1; + UserCloudFileRequests[EntryIdx].UserId = UserId; + } + FileIdx = UserCloudFileRequests[EntryIdx].DownloadedFiles.Find('Filename', Filename); + // End:0x1D5 + if(FileIdx == -1) + { + FileIdx = UserCloudFileRequests[EntryIdx].DownloadedFiles.Length; + UserCloudFileRequests[EntryIdx].DownloadedFiles.Length = FileIdx + 1; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].Filename = Filename; + } + // End:0x59C + if((int(UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].AsyncState) != int(1)) && UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest == none) + { + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].AsyncState = 1; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].Data.Length = 0; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x599 + if(UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest != none) + { + URL = ((((((GetBaseURL()) $ DeleteCloudFileUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ UserId) $ "&fileName=") $ Filename; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest.SetURL(URL); + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest.SetVerb("DELETE"); + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest.__OnProcessRequestComplete__Delegate = OnHTTPRequestDeleteUserFileComplete; + UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].HTTPRequest.ProcessRequest(); + bPending = true; + } + } + } + // End:0x605 + if(!bPending) + { + // End:0x5DB + if(bShouldCloudDelete) + { + CallDeleteUserFileCompleteDelegates(false, UserId, Filename); + } + else + { + // End:0x605 + if(bShouldLocallyDelete) + { + CallDeleteUserFileCompleteDelegates(true, UserId, Filename); + } + } + } + return bPending; + //return ReturnValue; +} + +private final function OnHTTPRequestDeleteUserFileComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int EntryIdx, FileIdx; + local string Filename, UserId; + local bool bResult; + + GetUserFileIndexForRequest(Request, EntryIdx, FileIdx); + // End:0x151 + if((EntryIdx != -1) && FileIdx != -1) + { + UserId = UserCloudFileRequests[EntryIdx].UserId; + Filename = UserCloudFileRequests[EntryIdx].DownloadedFiles[FileIdx].Filename; + // End:0x11C + if((bWasSuccessful && Response != none) && Response.GetResponseCode() == 200) + { + bResult = true; + } + UserCloudFileRequests[EntryIdx].DownloadedFiles.Remove(FileIdx, 1); + } + CallDeleteUserFileCompleteDelegates(bResult, UserId, Filename); + //return; +} + +delegate OnDeleteUserFileComplete(bool bWasSuccessful, string UserId, string Filename) +{ + //return; +} + +private final function CallDeleteUserFileCompleteDelegates(bool bWasSuccessful, string UserId, string Filename) +{ + local int Index; + local delegate CallDelegate; + + Index = 0; + J0x0B: + + // End:0x8C [Loop If] + if(Index < DeleteUserFileCompleteDelegates.Length) + { + CallDelegate = DeleteUserFileCompleteDelegates[Index]; + // End:0x7E + if(CallDelegate != none) + { + OnDeleteUserFileComplete(bWasSuccessful, UserId, Filename); + } + Index++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function AddDeleteUserFileCompleteDelegate(delegate DeleteUserFileCompleteDelegate) +{ + // End:0x36 + if(DeleteUserFileCompleteDelegates.Find(DeleteUserFileCompleteDelegate) == -1) + { + DeleteUserFileCompleteDelegates.AddItem(DeleteUserFileCompleteDelegate); + } + //return; +} + +function ClearDeleteUserFileCompleteDelegate(delegate DeleteUserFileCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = DeleteUserFileCompleteDelegates.Find(DeleteUserFileCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + DeleteUserFileCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +function ClearAllDelegates() +{ + EnumerateUserFilesCompleteDelegates.Length = 0; + ReadUserFileCompleteDelegates.Length = 0; + WriteUserFileCompleteDelegates.Length = 0; + DeleteUserFileCompleteDelegates.Length = 0; + //return; +} + +defaultproperties +{ + EnumerateCloudFilesUrl="/cloudstoragelist" + ReadCloudFileUrl="/cloudstoragecontents" + WriteCloudFileUrl="/cloudstoragesave" + DeleteCloudFileUrl="/cloudstoragedelete" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpUserInventoryBase.uc b/exported/IpDrv/Classes/McpUserInventoryBase.uc new file mode 100755 index 00000000..0f0318f4 --- /dev/null +++ b/exported/IpDrv/Classes/McpUserInventoryBase.uc @@ -0,0 +1,211 @@ +class McpUserInventoryBase extends McpServiceBase + abstract + config(Engine); + +struct McpInventoryItemAttribute +{ + var string AttributeId; + var int Value; + + structdefaultproperties + { + AttributeId="" + Value=0 + } +}; + +struct McpInventoryItem +{ + var string InstanceItemId; + var string GlobalItemId; + var int Quantity; + var int QuantityIAP; + var float Scalar; + var string LastUpdateTime; + var array Attributes; + + structdefaultproperties + { + InstanceItemId="" + GlobalItemId="" + Quantity=0 + QuantityIAP=0 + Scalar=0.0000000 + LastUpdateTime="" + Attributes=none + } +}; + +struct McpInventoryItemContainer +{ + var string GlobalItemId; + var int Quantity; + + structdefaultproperties + { + GlobalItemId="" + Quantity=0 + } +}; + +struct McpInventorySaveSlot +{ + var string OwningMcpId; + var string SaveSlotId; + var array Items; + + structdefaultproperties + { + OwningMcpId="" + SaveSlotId="" + Items=none + } +}; + +var config string McpUserInventoryClassName; +//var delegate __OnCreateSaveSlotComplete__Delegate; +//var delegate __OnDeleteSaveSlotComplete__Delegate; +//var delegate __OnQuerySaveSlotListComplete__Delegate; +//var delegate __OnQueryInventoryItemsComplete__Delegate; +//var delegate __OnPurchaseItemComplete__Delegate; +//var delegate __OnSellItemComplete__Delegate; +//var delegate __OnEarnItemComplete__Delegate; +//var delegate __OnConsumeItemComplete__Delegate; +//var delegate __OnDeleteItemComplete__Delegate; +//var delegate __OnRecordIapComplete__Delegate; + +static final function McpUserInventoryBase CreateInstance() +{ + local Class McpUserInventoryBaseClass; + local McpUserInventoryBase NewInstance; + + McpUserInventoryBaseClass = Class(DynamicLoadObject(default.McpUserInventoryClassName, Class'Core.Class')); + // End:0x76 + if(McpUserInventoryBaseClass != none) + { + NewInstance = new McpUserInventoryBaseClass; + NewInstance.Init(); + } + return NewInstance; + //return ReturnValue; +} + +function CreateSaveSlot(string McpId, string SaveSlotId, optional string ParentSaveSlotId) +{ + //return; +} + +delegate OnCreateSaveSlotComplete(string McpId, string SaveSlotId, bool bWasSuccessful, string Error) +{ + //return; +} + +function DeleteSaveSlot(string McpId, string SaveSlotId) +{ + //return; +} + +delegate OnDeleteSaveSlotComplete(string McpId, string SaveSlotId, bool bWasSuccessful, string Error) +{ + //return; +} + +function QuerySaveSlotList(string McpId) +{ + //return; +} + +function array GetSaveSlotList(string McpId) +{ + //return ReturnValue; +} + +delegate OnQuerySaveSlotListComplete(string McpId, bool bWasSuccessful, string Error) +{ + //return; +} + +function QueryInventoryItems(string McpId, string SaveSlotId) +{ + //return; +} + +delegate OnQueryInventoryItemsComplete(string McpId, string SaveSlotId, bool bWasSuccessful, string Error) +{ + //return; +} + +function GetInventoryItems(string McpId, string SaveSlotId, out array OutInventoryItems) +{ + //return; +} + +function bool GetInventoryItem(string McpId, string SaveSlotId, string InstanceItemId, out McpInventoryItem OutInventoryItem) +{ + //return ReturnValue; +} + +function PurchaseItem(string McpId, string SaveSlotId, string GlobalItemId, array PurchaseItemIds, int Quantity, int StoreVersion, float Scalar) +{ + //return; +} + +delegate OnPurchaseItemComplete(string McpId, string SaveSlotId, string GlobalItemId, array UpdatedItemIds, bool bWasSuccessful, string Error) +{ + //return; +} + +function SellItem(string McpId, string SaveSlotId, string InstanceItemId, int Quantity, int StoreVersion, const optional out array ExpectedResultItems) +{ + //return; +} + +delegate OnSellItemComplete(string McpId, string SaveSlotId, string InstanceItemId, array UpdatedItemIds, bool bWasSuccessful, string Error) +{ + //return; +} + +function EarnItem(string McpId, string SaveSlotId, string GlobalItemId, int Quantity, int StoreVersion) +{ + //return; +} + +delegate OnEarnItemComplete(string McpId, string SaveSlotId, string GlobalItemId, array UpdatedItemIds, bool bWasSuccessful, string Error) +{ + //return; +} + +function ConsumeItem(string McpId, string SaveSlotId, string InstanceItemId, int Quantity, int StoreVersion) +{ + //return; +} + +delegate OnConsumeItemComplete(string McpId, string SaveSlotId, string InstanceItemId, array UpdatedItemIds, bool bWasSuccessful, string Error) +{ + //return; +} + +function DeleteItem(string McpId, string SaveSlotId, string InstanceItemId, int StoreVersion) +{ + //return; +} + +delegate OnDeleteItemComplete(string McpId, string SaveSlotId, string InstanceItemId, bool bWasSuccessful, string Error) +{ + //return; +} + +function RecordIap(string McpId, string SaveSlotId, string Receipt) +{ + //return; +} + +delegate OnRecordIapComplete(string McpId, string SaveSlotId, array UpdatedItemIds, bool bWasSuccessful, string Error) +{ + //return; +} + +defaultproperties +{ + McpUserInventoryClassName="IpDrv.McpUserInventoryManager" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpUserInventoryManager.uc b/exported/IpDrv/Classes/McpUserInventoryManager.uc new file mode 100755 index 00000000..b28f9b33 --- /dev/null +++ b/exported/IpDrv/Classes/McpUserInventoryManager.uc @@ -0,0 +1,1011 @@ +class McpUserInventoryManager extends McpUserInventoryBase + config(Engine); + +struct SaveSlotRequestState +{ + var string McpId; + var string SaveSlotId; + var HttpRequestInterface Request; + + structdefaultproperties + { + McpId="" + SaveSlotId="" + Request=none + } +}; + +struct InventoryItemRequestState extends SaveSlotRequestState +{ + var string ItemId; +}; + +var config string CreateSaveSlotUrl; +var config string DeleteSaveSlotUrl; +var config string ListSaveSlotUrl; +var config string ListItemsUrl; +var config string PurchaseItemUrl; +var config string SellItemUrl; +var config string EarnItemUrl; +var config string ConsumeItemUrl; +var config string DeleteItemUrl; +var config string IapRecordUrl; +var array SaveSlots; +var array SaveSlotRequests; +var array ListSaveSlotRequests; +var array ListItemsRequests; +var array ItemRequests; + +function CreateSaveSlot(string McpId, string SaveSlotId, optional string ParentSaveSlotId) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt, ExistingIndex; + + ExistingIndex = FindSaveSlotRequest(McpId, SaveSlotId, SaveSlotRequests); + // End:0x297 + if(ExistingIndex == -1) + { + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x294 + if(Request != none) + { + URL = (((((((GetBaseURL()) $ CreateSaveSlotUrl) $ (GetAppAccessURL())) $ (GetUserAuthURL(McpId))) $ "&uniqueUserId=") $ McpId) $ "&saveSlotId=") $ SaveSlotId; + // End:0x138 + if(Len(ParentSaveSlotId) > 0) + { + URL $= ("&parentSaveSlotId=" $ ParentSaveSlotId); + } + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.__OnProcessRequestComplete__Delegate = OnCreateSaveSlotRequestComplete; + AddAt = SaveSlotRequests.Length; + SaveSlotRequests.Length = AddAt + 1; + SaveSlotRequests[AddAt].McpId = McpId; + SaveSlotRequests[AddAt].SaveSlotId = SaveSlotId; + SaveSlotRequests[AddAt].Request = Request; + // End:0x294 + if(!Request.ProcessRequest()) + { + } + } + } + //return; +} + +function OnCreateSaveSlotRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, SaveSlotIndex, ResponseCode; + local string ResponseString; + + Index = SaveSlotRequests.Find('Request', Request); + // End:0x26D + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x1D0 + if(bWasSuccessful) + { + SaveSlotIndex = FindSaveSlotIndex(SaveSlotRequests[Index].McpId, SaveSlotRequests[Index].SaveSlotId); + // End:0x13F + if(SaveSlotIndex != -1) + { + SaveSlots.Remove(SaveSlotIndex, 1); + } + ResponseString = Response.GetContentAsString(); + ParseInventoryForSaveSlot(SaveSlotRequests[Index].McpId, SaveSlotRequests[Index].SaveSlotId, ResponseString); + } + OnCreateSaveSlotComplete(SaveSlotRequests[Index].McpId, SaveSlotRequests[Index].SaveSlotId, bWasSuccessful, Response.GetContentAsString()); + SaveSlotRequests.Remove(Index, 1); + } + //return; +} + +function DeleteSaveSlot(string McpId, string SaveSlotId) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt, ExistingIndex; + + ExistingIndex = FindSaveSlotRequest(McpId, SaveSlotId, SaveSlotRequests); + // End:0x253 + if(ExistingIndex == -1) + { + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x250 + if(Request != none) + { + URL = (((((((GetBaseURL()) $ DeleteSaveSlotUrl) $ (GetAppAccessURL())) $ (GetUserAuthURL(McpId))) $ "&uniqueUserId=") $ McpId) $ "&saveSlotId=") $ SaveSlotId; + Request.SetURL(URL); + Request.SetVerb("DELETE"); + Request.__OnProcessRequestComplete__Delegate = OnDeleteSaveSlotRequestComplete; + AddAt = SaveSlotRequests.Length; + SaveSlotRequests.Length = AddAt + 1; + SaveSlotRequests[AddAt].McpId = McpId; + SaveSlotRequests[AddAt].SaveSlotId = SaveSlotId; + SaveSlotRequests[AddAt].Request = Request; + // End:0x250 + if(!Request.ProcessRequest()) + { + } + } + } + //return; +} + +function OnDeleteSaveSlotRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, SaveSlotIndex, ResponseCode; + + Index = SaveSlotRequests.Find('Request', Request); + // End:0x1DC + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x13F + if(bWasSuccessful) + { + SaveSlotIndex = FindSaveSlotIndex(SaveSlotRequests[Index].McpId, SaveSlotRequests[Index].SaveSlotId); + // End:0x13F + if(SaveSlotIndex != -1) + { + SaveSlots.Remove(SaveSlotIndex, 1); + } + } + OnDeleteSaveSlotComplete(SaveSlotRequests[Index].McpId, SaveSlotRequests[Index].SaveSlotId, bWasSuccessful, Response.GetContentAsString()); + SaveSlotRequests.Remove(Index, 1); + } + //return; +} + +function QuerySaveSlotList(string McpId) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt, ExistingIndex; + + ExistingIndex = ListSaveSlotRequests.Find('McpId', McpId); + // End:0x1FF + if(ExistingIndex == -1) + { + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x1FC + if(Request != none) + { + URL = (((((GetBaseURL()) $ ListSaveSlotUrl) $ (GetAppAccessURL())) $ (GetUserAuthURL(McpId))) $ "&uniqueUserId=") $ McpId; + Request.SetURL(URL); + Request.SetVerb("GET"); + Request.__OnProcessRequestComplete__Delegate = OnQuerySaveSlotListRequestComplete; + AddAt = ListSaveSlotRequests.Length; + ListSaveSlotRequests.Length = AddAt + 1; + ListSaveSlotRequests[AddAt].McpId = McpId; + ListSaveSlotRequests[AddAt].Request = Request; + // End:0x1FC + if(!Request.ProcessRequest()) + { + } + } + } + //return; +} + +function OnQuerySaveSlotListRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, ResponseCode; + local string ResponseString; + + Index = ListSaveSlotRequests.Find('Request', Request); + // End:0x190 + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x119 + if(bWasSuccessful) + { + ResponseString = Response.GetContentAsString(); + ParseSaveSlotList(ListSaveSlotRequests[Index].McpId, ResponseString); + } + OnQuerySaveSlotListComplete(ListSaveSlotRequests[Index].McpId, bWasSuccessful, Response.GetContentAsString()); + ListSaveSlotRequests.Remove(Index, 1); + } + //return; +} + +function array GetSaveSlotList(string McpId) +{ + local array OutSaveSlots; + local int SaveSlotIndex; + + OutSaveSlots.Length = SaveSlots.Length; + SaveSlotIndex = 0; + J0x20: + + // End:0x80 [Loop If] + if(SaveSlotIndex < SaveSlots.Length) + { + OutSaveSlots[SaveSlotIndex] = SaveSlots[SaveSlotIndex].SaveSlotId; + SaveSlotIndex++; + // [Loop Continue] + goto J0x20; + } + return OutSaveSlots; + //return ReturnValue; +} + +function QueryInventoryItems(string McpId, string SaveSlotId) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt, ExistingIndex; + + ExistingIndex = FindSaveSlotRequest(McpId, SaveSlotId, ListItemsRequests); + // End:0x250 + if(ExistingIndex == -1) + { + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x24D + if(Request != none) + { + URL = (((((((GetBaseURL()) $ ListItemsUrl) $ (GetAppAccessURL())) $ (GetUserAuthURL(McpId))) $ "&uniqueUserId=") $ McpId) $ "&saveSlotId=") $ SaveSlotId; + Request.SetURL(URL); + Request.SetVerb("GET"); + Request.__OnProcessRequestComplete__Delegate = OnQueryInventoryItemsRequestComplete; + AddAt = ListItemsRequests.Length; + ListItemsRequests.Length = AddAt + 1; + ListItemsRequests[AddAt].McpId = McpId; + ListItemsRequests[AddAt].SaveSlotId = SaveSlotId; + ListItemsRequests[AddAt].Request = Request; + // End:0x24D + if(!Request.ProcessRequest()) + { + } + } + } + //return; +} + +function OnQueryInventoryItemsRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, SaveSlotIndex, ResponseCode; + local string ResponseString; + + Index = ListItemsRequests.Find('Request', Request); + // End:0x281 + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x1E4 + if(bWasSuccessful) + { + SaveSlotIndex = FindSaveSlotIndex(ListItemsRequests[Index].McpId, ListItemsRequests[Index].SaveSlotId); + // End:0x153 + if(SaveSlotIndex != -1) + { + SaveSlots[SaveSlotIndex].Items.Length = 0; + } + ResponseString = Response.GetContentAsString(); + ParseInventoryForSaveSlot(ListItemsRequests[Index].McpId, ListItemsRequests[Index].SaveSlotId, ResponseString); + } + OnQueryInventoryItemsComplete(ListItemsRequests[Index].McpId, ListItemsRequests[Index].SaveSlotId, bWasSuccessful, Response.GetContentAsString()); + ListItemsRequests.Remove(Index, 1); + } + //return; +} + +function GetInventoryItems(string McpId, string SaveSlotId, out array OutInventoryItems) +{ + local int SaveSlotIndex; + + OutInventoryItems.Length = 0; + SaveSlotIndex = FindSaveSlotIndex(McpId, SaveSlotId); + // End:0x78 + if(SaveSlotIndex != -1) + { + OutInventoryItems = SaveSlots[SaveSlotIndex].Items; + } + //return; +} + +function bool GetInventoryItem(string McpId, string SaveSlotId, string InstanceItemId, out McpInventoryItem OutInventoryItem) +{ + local int SaveSlotIndex, ItemIndex; + + SaveSlotIndex = FindSaveSlotIndex(McpId, SaveSlotId); + // End:0xD4 + if(SaveSlotIndex != -1) + { + ItemIndex = SaveSlots[SaveSlotIndex].Items.Find('InstanceItemId', InstanceItemId); + // End:0xD1 + if(ItemIndex != -1) + { + OutInventoryItem = SaveSlots[SaveSlotIndex].Items[ItemIndex]; + return true; + } + } + return false; + //return ReturnValue; +} + +function array ParseInventoryForSaveSlot(string McpId, string SaveSlotId, string JsonPayload) +{ + local JsonObject ParsedJson, ParsedJsonAttrs; + local int JsonIndex, SaveSlotIndex, ItemIndex, JsonAttrsIndex; + local string GlobalItemId, InstanceItemId; + local array UpdatedItemIds; + local array ObjectArray; + + SaveSlotIndex = FindSaveSlotIndex(McpId, SaveSlotId); + // End:0xC4 + if(SaveSlotIndex == -1) + { + SaveSlotIndex = SaveSlots.Length; + SaveSlots.Length = SaveSlotIndex + 1; + SaveSlots[SaveSlotIndex].OwningMcpId = McpId; + SaveSlots[SaveSlotIndex].SaveSlotId = SaveSlotId; + } + ParsedJson = Class'Engine.JsonObject'.static.DecodeJson(JsonPayload); + ObjectArray = ParsedJson.ObjectArray; + // End:0x144 + if(ObjectArray.Length == 0) + { + ObjectArray.AddItem(ParsedJson); + } + JsonIndex = 0; + J0x14F: + + // End:0x7E4 [Loop If] + if(JsonIndex < ObjectArray.Length) + { + InstanceItemId = ObjectArray[JsonIndex].GetStringValue("instance_item_id"); + GlobalItemId = ObjectArray[JsonIndex].GetStringValue("global_item_id"); + // End:0x7D6 + if(Len(InstanceItemId) > 0) + { + UpdatedItemIds.AddItem(InstanceItemId); + ItemIndex = SaveSlots[SaveSlotIndex].Items.Find('InstanceItemId', InstanceItemId); + // End:0x36E + if(ItemIndex == -1) + { + ItemIndex = SaveSlots[SaveSlotIndex].Items.Length; + SaveSlots[SaveSlotIndex].Items.Length = ItemIndex + 1; + SaveSlots[SaveSlotIndex].Items[ItemIndex].GlobalItemId = GlobalItemId; + SaveSlots[SaveSlotIndex].Items[ItemIndex].InstanceItemId = InstanceItemId; + } + SaveSlots[SaveSlotIndex].Items[ItemIndex].Quantity = ObjectArray[JsonIndex].GetIntValue("quantity"); + SaveSlots[SaveSlotIndex].Items[ItemIndex].QuantityIAP = ObjectArray[JsonIndex].GetIntValue("iap_quantity"); + SaveSlots[SaveSlotIndex].Items[ItemIndex].Scalar = ObjectArray[JsonIndex].GetFloatValue("scalar"); + SaveSlots[SaveSlotIndex].Items[ItemIndex].LastUpdateTime = ObjectArray[JsonIndex].GetStringValue("last_update_time"); + SaveSlots[SaveSlotIndex].Items[ItemIndex].Attributes.Length = 0; + ParsedJsonAttrs = ObjectArray[JsonIndex].GetObject("attributes"); + SaveSlots[SaveSlotIndex].Items[ItemIndex].Attributes.Length = ParsedJsonAttrs.ObjectArray.Length; + JsonAttrsIndex = 0; + J0x648: + + // End:0x7D6 [Loop If] + if(JsonAttrsIndex < ParsedJsonAttrs.ObjectArray.Length) + { + SaveSlots[SaveSlotIndex].Items[ItemIndex].Attributes[JsonAttrsIndex].AttributeId = ParsedJsonAttrs.ObjectArray[JsonAttrsIndex].GetStringValue("attribute_id"); + SaveSlots[SaveSlotIndex].Items[ItemIndex].Attributes[JsonAttrsIndex].Value = ParsedJsonAttrs.ObjectArray[JsonAttrsIndex].GetIntValue("value"); + JsonAttrsIndex++; + // [Loop Continue] + goto J0x648; + } + } + JsonIndex++; + // [Loop Continue] + goto J0x14F; + } + return UpdatedItemIds; + //return ReturnValue; +} + +function ParseSaveSlotList(string McpId, string JsonPayload) +{ + local JsonObject ParsedJson; + local int JsonIndex, SaveSlotIndex; + local string SaveSlotId; + + ParsedJson = Class'Engine.JsonObject'.static.DecodeJson(JsonPayload); + JsonIndex = 0; + J0x3D: + + // End:0x192 [Loop If] + if(JsonIndex < ParsedJson.ObjectArray.Length) + { + SaveSlotId = ParsedJson.ObjectArray[JsonIndex].GetStringValue("save_slot_id"); + SaveSlotIndex = FindSaveSlotIndex(McpId, SaveSlotId); + // End:0x184 + if(SaveSlotIndex == -1) + { + SaveSlotIndex = SaveSlots.Length; + SaveSlots.Length = SaveSlotIndex + 1; + SaveSlots[SaveSlotIndex].OwningMcpId = McpId; + SaveSlots[SaveSlotIndex].SaveSlotId = SaveSlotId; + } + JsonIndex++; + // [Loop Continue] + goto J0x3D; + } + //return; +} + +function int FindSaveSlotIndex(string McpId, string SaveSlotId) +{ + local int SaveSlotIndex; + + SaveSlotIndex = 0; + J0x0B: + + // End:0xA5 [Loop If] + if(SaveSlotIndex < SaveSlots.Length) + { + // End:0x97 + if((SaveSlots[SaveSlotIndex].OwningMcpId == McpId) && SaveSlots[SaveSlotIndex].SaveSlotId == SaveSlotId) + { + return SaveSlotIndex; + } + SaveSlotIndex++; + // [Loop Continue] + goto J0x0B; + } + return -1; + //return ReturnValue; +} + +function int FindSaveSlotRequest(string McpId, string SaveSlotId, const out array InSaveSlotRequests) +{ + local int Index; + + Index = 0; + J0x0B: + + // End:0xA5 [Loop If] + if(Index < InSaveSlotRequests.Length) + { + // End:0x97 + if((InSaveSlotRequests[Index].McpId == McpId) && InSaveSlotRequests[Index].SaveSlotId == SaveSlotId) + { + return Index; + } + Index++; + // [Loop Continue] + goto J0x0B; + } + return -1; + //return ReturnValue; +} + +function int FindItemRequest(string McpId, string SaveSlotId, string ItemId, const out array InItemRequests) +{ + local int Index; + + Index = 0; + J0x0B: + + // End:0xDB [Loop If] + if(Index < InItemRequests.Length) + { + // End:0xCD + if(((InItemRequests[Index].McpId == McpId) && InItemRequests[Index].SaveSlotId == SaveSlotId) && InItemRequests[Index].ItemId == ItemId) + { + return Index; + } + Index++; + // [Loop Continue] + goto J0x0B; + } + return -1; + //return ReturnValue; +} + +function PurchaseItem(string McpId, string SaveSlotId, string GlobalItemId, array PurchaseItemIds, int Quantity, int StoreVersion, float Scalar) +{ + local string URL, paymentItemsJson; + local HttpRequestInterface Request; + local int AddAt, ExistingIndex, Index; + + ExistingIndex = FindItemRequest(McpId, SaveSlotId, GlobalItemId, ItemRequests); + // End:0x3FB + if(ExistingIndex == -1) + { + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x3F8 + if(Request != none) + { + URL = (((((((((((((((GetBaseURL()) $ PurchaseItemUrl) $ (GetAppAccessURL())) $ (GetUserAuthURL(McpId))) $ "&uniqueUserId=") $ McpId) $ "&saveSlotId=") $ SaveSlotId) $ "&globalItemId=") $ GlobalItemId) $ "&quantity=") $ string(Quantity)) $ "&storeVersion=") $ string(StoreVersion)) $ "&scalar=") $ string(Scalar); + // End:0x26C + if(PurchaseItemIds.Length > 0) + { + paymentItemsJson = "[ "; + Index = 0; + J0x194: + + // End:0x21F [Loop If] + if(Index < PurchaseItemIds.Length) + { + paymentItemsJson $= (("\"" $ PurchaseItemIds[Index]) $ "\""); + // End:0x211 + if((Index + 1) < PurchaseItemIds.Length) + { + paymentItemsJson $= ","; + } + Index++; + // [Loop Continue] + goto J0x194; + } + paymentItemsJson $= " ]"; + URL $= ("&paymentItemsJson=" $ paymentItemsJson); + } + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.__OnProcessRequestComplete__Delegate = OnPurchaseItemRequestComplete; + AddAt = ItemRequests.Length; + ItemRequests.Length = AddAt + 1; + ItemRequests[AddAt].McpId = McpId; + ItemRequests[AddAt].SaveSlotId = SaveSlotId; + ItemRequests[AddAt].ItemId = GlobalItemId; + ItemRequests[AddAt].Request = Request; + // End:0x3F8 + if(!Request.ProcessRequest()) + { + } + } + } + //return; +} + +function OnPurchaseItemRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, SaveSlotIndex, UpdatedItemIdIndex, FoundItemIndex, ResponseCode; + + local string ResponseString; + local array UpdatedItemIds; + + Index = ItemRequests.Find('Request', Request); + // End:0x3E4 + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x318 + if(bWasSuccessful) + { + ResponseString = Response.GetContentAsString(); + UpdatedItemIds = ParseInventoryForSaveSlot(ItemRequests[Index].McpId, ItemRequests[Index].SaveSlotId, ResponseString); + SaveSlotIndex = FindSaveSlotIndex(ItemRequests[Index].McpId, ItemRequests[Index].SaveSlotId); + // End:0x318 + if(SaveSlotIndex != -1) + { + UpdatedItemIdIndex = 0; + J0x1C7: + + // End:0x318 [Loop If] + if(UpdatedItemIdIndex < UpdatedItemIds.Length) + { + FoundItemIndex = SaveSlots[SaveSlotIndex].Items.Find('InstanceItemId', UpdatedItemIds[UpdatedItemIdIndex]); + // End:0x30A + if(((FoundItemIndex != -1) && SaveSlots[SaveSlotIndex].Items[FoundItemIndex].Quantity == 0) && SaveSlots[SaveSlotIndex].Items[FoundItemIndex].QuantityIAP == 0) + { + SaveSlots[SaveSlotIndex].Items.Remove(FoundItemIndex, 1); + } + UpdatedItemIdIndex++; + // [Loop Continue] + goto J0x1C7; + } + } + } + OnPurchaseItemComplete(ItemRequests[Index].McpId, ItemRequests[Index].SaveSlotId, ItemRequests[Index].ItemId, UpdatedItemIds, bWasSuccessful, Response.GetContentAsString()); + ItemRequests.Remove(Index, 1); + } + //return; +} + +function SellItem(string McpId, string SaveSlotId, string InstanceItemId, int Quantity, int StoreVersion, const optional out array ExpectedResultItems) +{ + local string URL, expectedResultsItemsJson; + local HttpRequestInterface Request; + local int AddAt, ExistingIndex, Index; + + ExistingIndex = FindItemRequest(McpId, SaveSlotId, InstanceItemId, ItemRequests); + // End:0x4C0 + if(ExistingIndex == -1) + { + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x4BD + if(Request != none) + { + URL = (((((((((((((GetBaseURL()) $ SellItemUrl) $ (GetAppAccessURL())) $ (GetUserAuthURL(McpId))) $ "&uniqueUserId=") $ McpId) $ "&saveSlotId=") $ SaveSlotId) $ "&instanceItemId=") $ InstanceItemId) $ "&quantity=") $ string(Quantity)) $ "&storeVersion=") $ string(StoreVersion); + // End:0x2C7 + if(ExpectedResultItems.Length > 0) + { + expectedResultsItemsJson = "[ "; + Index = 0; + J0x17E: + + // End:0x2AE [Loop If] + if(Index < ExpectedResultItems.Length) + { + expectedResultsItemsJson $= "{"; + expectedResultsItemsJson $= ((("\"global_item_id\":" $ "\"") $ ExpectedResultItems[Index].GlobalItemId) $ "\","); + expectedResultsItemsJson $= ("\"quantity\":" $ string(ExpectedResultItems[Index].Quantity)); + expectedResultsItemsJson $= "}"; + // End:0x2A0 + if((Index + 1) < ExpectedResultItems.Length) + { + expectedResultsItemsJson $= ","; + } + Index++; + // [Loop Continue] + goto J0x17E; + } + expectedResultsItemsJson $= " ]"; + } + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.SetContentAsString(expectedResultsItemsJson); + Request.SetHeader("Content-Type", "multipart/form-data"); + Request.__OnProcessRequestComplete__Delegate = OnSellItemRequestComplete; + AddAt = ItemRequests.Length; + ItemRequests.Length = AddAt + 1; + ItemRequests[AddAt].McpId = McpId; + ItemRequests[AddAt].SaveSlotId = SaveSlotId; + ItemRequests[AddAt].ItemId = InstanceItemId; + ItemRequests[AddAt].Request = Request; + // End:0x4BD + if(!Request.ProcessRequest()) + { + } + } + } + //return; +} + +function OnSellItemRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, SaveSlotIndex, UpdatedItemIdIndex, FoundItemIndex, ResponseCode; + + local string ResponseString; + local array UpdatedItemIds; + + Index = ItemRequests.Find('Request', Request); + // End:0x3E4 + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x318 + if(bWasSuccessful) + { + ResponseString = Response.GetContentAsString(); + UpdatedItemIds = ParseInventoryForSaveSlot(ItemRequests[Index].McpId, ItemRequests[Index].SaveSlotId, ResponseString); + SaveSlotIndex = FindSaveSlotIndex(ItemRequests[Index].McpId, ItemRequests[Index].SaveSlotId); + // End:0x318 + if(SaveSlotIndex != -1) + { + UpdatedItemIdIndex = 0; + J0x1C7: + + // End:0x318 [Loop If] + if(UpdatedItemIdIndex < UpdatedItemIds.Length) + { + FoundItemIndex = SaveSlots[SaveSlotIndex].Items.Find('InstanceItemId', UpdatedItemIds[UpdatedItemIdIndex]); + // End:0x30A + if(((FoundItemIndex != -1) && SaveSlots[SaveSlotIndex].Items[FoundItemIndex].Quantity == 0) && SaveSlots[SaveSlotIndex].Items[FoundItemIndex].QuantityIAP == 0) + { + SaveSlots[SaveSlotIndex].Items.Remove(FoundItemIndex, 1); + } + UpdatedItemIdIndex++; + // [Loop Continue] + goto J0x1C7; + } + } + } + OnSellItemComplete(ItemRequests[Index].McpId, ItemRequests[Index].SaveSlotId, ItemRequests[Index].ItemId, UpdatedItemIds, bWasSuccessful, Response.GetContentAsString()); + ItemRequests.Remove(Index, 1); + } + //return; +} + +function EarnItem(string McpId, string SaveSlotId, string GlobalItemId, int Quantity, int StoreVersion) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt, ExistingIndex; + + ExistingIndex = FindItemRequest(McpId, SaveSlotId, GlobalItemId, ItemRequests); + // End:0x2E1 + if(ExistingIndex == -1) + { + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x2DE + if(Request != none) + { + URL = (((((((((((((GetBaseURL()) $ EarnItemUrl) $ (GetAppAccessURL())) $ (GetUserAuthURL(McpId))) $ "&uniqueUserId=") $ McpId) $ "&saveSlotId=") $ SaveSlotId) $ "&globalItemId=") $ GlobalItemId) $ "&quantity=") $ string(Quantity)) $ "&storeVersion=") $ string(StoreVersion); + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.__OnProcessRequestComplete__Delegate = OnEarnItemRequestComplete; + AddAt = ItemRequests.Length; + ItemRequests.Length = AddAt + 1; + ItemRequests[AddAt].McpId = McpId; + ItemRequests[AddAt].SaveSlotId = SaveSlotId; + ItemRequests[AddAt].ItemId = GlobalItemId; + ItemRequests[AddAt].Request = Request; + // End:0x2DE + if(!Request.ProcessRequest()) + { + } + } + } + //return; +} + +function OnEarnItemRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, ResponseCode; + local string ResponseString; + local array UpdatedItemIds; + + Index = ItemRequests.Find('Request', Request); + // End:0x215 + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x149 + if(bWasSuccessful) + { + ResponseString = Response.GetContentAsString(); + UpdatedItemIds = ParseInventoryForSaveSlot(ItemRequests[Index].McpId, ItemRequests[Index].SaveSlotId, ResponseString); + } + OnEarnItemComplete(ItemRequests[Index].McpId, ItemRequests[Index].SaveSlotId, ItemRequests[Index].ItemId, UpdatedItemIds, bWasSuccessful, Response.GetContentAsString()); + ItemRequests.Remove(Index, 1); + } + //return; +} + +function ConsumeItem(string McpId, string SaveSlotId, string InstanceItemId, int Quantity, int StoreVersion) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt, ExistingIndex; + + ExistingIndex = FindItemRequest(McpId, SaveSlotId, InstanceItemId, ItemRequests); + // End:0x2E3 + if(ExistingIndex == -1) + { + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x2E0 + if(Request != none) + { + URL = (((((((((((((GetBaseURL()) $ ConsumeItemUrl) $ (GetAppAccessURL())) $ (GetUserAuthURL(McpId))) $ "&uniqueUserId=") $ McpId) $ "&saveSlotId=") $ SaveSlotId) $ "&instanceItemId=") $ InstanceItemId) $ "&quantity=") $ string(Quantity)) $ "&storeVersion=") $ string(StoreVersion); + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.__OnProcessRequestComplete__Delegate = OnConsumeItemRequestComplete; + AddAt = ItemRequests.Length; + ItemRequests.Length = AddAt + 1; + ItemRequests[AddAt].McpId = McpId; + ItemRequests[AddAt].SaveSlotId = SaveSlotId; + ItemRequests[AddAt].ItemId = InstanceItemId; + ItemRequests[AddAt].Request = Request; + // End:0x2E0 + if(!Request.ProcessRequest()) + { + } + } + } + //return; +} + +function OnConsumeItemRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, ResponseCode; + local string ResponseString; + local array UpdatedItemIds; + + Index = ItemRequests.Find('Request', Request); + // End:0x215 + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x149 + if(bWasSuccessful) + { + ResponseString = Response.GetContentAsString(); + UpdatedItemIds = ParseInventoryForSaveSlot(ItemRequests[Index].McpId, ItemRequests[Index].SaveSlotId, ResponseString); + } + OnConsumeItemComplete(ItemRequests[Index].McpId, ItemRequests[Index].SaveSlotId, ItemRequests[Index].ItemId, UpdatedItemIds, bWasSuccessful, Response.GetContentAsString()); + ItemRequests.Remove(Index, 1); + } + //return; +} + +function DeleteItem(string McpId, string SaveSlotId, string InstanceItemId, int StoreVersion) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt, ExistingIndex; + + ExistingIndex = FindItemRequest(McpId, SaveSlotId, InstanceItemId, ItemRequests); + // End:0x2CA + if(ExistingIndex == -1) + { + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x2C7 + if(Request != none) + { + URL = (((((((((((GetBaseURL()) $ DeleteItemUrl) $ (GetAppAccessURL())) $ (GetUserAuthURL(McpId))) $ "&uniqueUserId=") $ McpId) $ "&saveSlotId=") $ SaveSlotId) $ "&instanceItemId=") $ InstanceItemId) $ "&storeVersion=") $ string(StoreVersion); + Request.SetURL(URL); + Request.SetVerb("DELETE"); + Request.__OnProcessRequestComplete__Delegate = OnDeleteItemRequestComplete; + AddAt = ItemRequests.Length; + ItemRequests.Length = AddAt + 1; + ItemRequests[AddAt].McpId = McpId; + ItemRequests[AddAt].SaveSlotId = SaveSlotId; + ItemRequests[AddAt].ItemId = InstanceItemId; + ItemRequests[AddAt].Request = Request; + // End:0x2C7 + if(!Request.ProcessRequest()) + { + } + } + } + //return; +} + +function OnDeleteItemRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, SaveSlotIndex, ItemIndex, ResponseCode; + + Index = ItemRequests.Find('Request', Request); + // End:0x295 + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x1D2 + if(bWasSuccessful) + { + SaveSlotIndex = FindSaveSlotIndex(ItemRequests[Index].McpId, ItemRequests[Index].SaveSlotId); + // End:0x1D2 + if(SaveSlotIndex != -1) + { + ItemIndex = SaveSlots[SaveSlotIndex].Items.Find('InstanceItemId', ItemRequests[Index].ItemId); + // End:0x1D2 + if(ItemIndex != -1) + { + SaveSlots[SaveSlotIndex].Items.Remove(ItemIndex, 1); + } + } + } + OnDeleteItemComplete(ItemRequests[Index].McpId, ItemRequests[Index].SaveSlotId, ItemRequests[Index].ItemId, bWasSuccessful, Response.GetContentAsString()); + ItemRequests.Remove(Index, 1); + } + //return; +} + +function RecordIap(string McpId, string SaveSlotId, string Receipt) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt, ExistingIndex; + + ExistingIndex = FindSaveSlotRequest(McpId, SaveSlotId, SaveSlotRequests); + // End:0x2BB + if(ExistingIndex == -1) + { + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x2B8 + if(Request != none) + { + URL = (((((((GetBaseURL()) $ IapRecordUrl) $ (GetAppAccessURL())) $ (GetUserAuthURL(McpId))) $ "&uniqueUserId=") $ McpId) $ "&saveSlotId=") $ SaveSlotId; + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.__OnProcessRequestComplete__Delegate = OnRecordIapRequestComplete; + Request.SetContentAsString(Receipt); + Request.SetHeader("Content-Type", "multipart/form-data"); + AddAt = SaveSlotRequests.Length; + SaveSlotRequests.Length = AddAt + 1; + SaveSlotRequests[AddAt].McpId = McpId; + SaveSlotRequests[AddAt].SaveSlotId = SaveSlotId; + SaveSlotRequests[AddAt].Request = Request; + // End:0x2B8 + if(!Request.ProcessRequest()) + { + } + } + } + //return; +} + +function OnRecordIapRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, ResponseCode; + local string ResponseString; + local array UpdatedItemIds; + + Index = SaveSlotRequests.Find('Request', Request); + // End:0x1EF + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x149 + if(bWasSuccessful) + { + ResponseString = Response.GetContentAsString(); + UpdatedItemIds = ParseInventoryForSaveSlot(SaveSlotRequests[Index].McpId, SaveSlotRequests[Index].SaveSlotId, ResponseString); + } + OnRecordIapComplete(SaveSlotRequests[Index].McpId, SaveSlotRequests[Index].SaveSlotId, UpdatedItemIds, bWasSuccessful, Response.GetContentAsString()); + SaveSlotRequests.Remove(Index, 1); + } + //return; +} + +defaultproperties +{ + CreateSaveSlotUrl="/createsaveslot" + DeleteSaveSlotUrl="/deletesaveslot" + ListSaveSlotUrl="/listsaveslot" + ListItemsUrl="/listitems" + PurchaseItemUrl="/purchaseitem" + SellItemUrl="/sellitem" + EarnItemUrl="/earnitem" + ConsumeItemUrl="/consumeitem" + DeleteItemUrl="/deleteitem" + IapRecordUrl="/recordiap" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpUserManager.uc b/exported/IpDrv/Classes/McpUserManager.uc new file mode 100755 index 00000000..a5ec1f91 --- /dev/null +++ b/exported/IpDrv/Classes/McpUserManager.uc @@ -0,0 +1,456 @@ +class McpUserManager extends McpUserManagerBase + config(Engine); + +struct RegisterUserRequest +{ + var string UDID; + var string McpId; + var HttpRequestInterface Request; + + structdefaultproperties + { + UDID="" + McpId="" + Request=none + } +}; + +var array UserStatuses; +var config string RegisterUserMcpUrl; +var config string RegisterUserEmailUrl; +var config string RegisterUserFacebookUrl; +var config string QueryUserUrl; +var config string QueryUsersUrl; +var config string DeleteUserUrl; +var array RegisterUserRequests; +var array QueryUsersRequests; +var array DeleteUserRequests; + +function RegisterUserGenerated(string UDID, optional string ExistingMcpAuth) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt; + + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x1A5 + if(Request != none) + { + URL = ((((GetBaseURL()) $ RegisterUserMcpUrl) $ (GetAppAccessURL())) $ "&udid=") $ UDID; + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.__OnProcessRequestComplete__Delegate = OnRegisterUserRequestComplete; + AddAt = RegisterUserRequests.Length; + RegisterUserRequests.Length = AddAt + 1; + RegisterUserRequests[AddAt].UDID = UDID; + RegisterUserRequests[AddAt].Request = Request; + // End:0x1A5 + if(!Request.ProcessRequest()) + { + } + } + //return; +} + +function OnRegisterUserRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, AddAt, ResponseCode, UserIndex; + local string McpId; + local bool bWasFound; + + Index = RegisterUserRequests.Find('Request', Request); + // End:0x2F2 + if(Index != -1) + { + ResponseCode = 500; + // End:0x83 + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x255 + if(bWasSuccessful) + { + McpId = Response.GetContentAsString(); + RegisterUserRequests[Index].McpId = McpId; + // End:0x255 + if(McpId != "") + { + UserIndex = 0; + J0x12B: + + // End:0x19E [Loop If] + if((UserIndex < UserStatuses.Length) && !bWasFound) + { + bWasFound = McpId == UserStatuses[UserIndex].McpId; + UserIndex++; + // [Loop Continue] + goto J0x12B; + } + // End:0x255 + if(!bWasFound) + { + AddAt = UserStatuses.Length; + UserStatuses.Length = AddAt + 1; + UserStatuses[AddAt].McpId = McpId; + UserStatuses[AddAt].UDID = RegisterUserRequests[Index].UDID; + } + } + } + OnRegisterUserComplete(RegisterUserRequests[Index].McpId, RegisterUserRequests[Index].UDID, bWasSuccessful, Response.GetContentAsString()); + RegisterUserRequests.Remove(Index, 1); + } + //return; +} + +function RegisterUserEmail(string Email, string PasswordHash, string UDID, optional string ExistingMcpAuth) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt; + + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x217 + if(Request != none) + { + URL = ((((((((GetBaseURL()) $ RegisterUserEmailUrl) $ (GetAppAccessURL())) $ "&email=") $ Email) $ "&passwordhash=") $ PasswordHash) $ "&udid=") $ UDID; + // End:0xEB + if(Len(ExistingMcpAuth) > 0) + { + URL $= ("&authticket=" $ ExistingMcpAuth); + } + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.__OnProcessRequestComplete__Delegate = OnRegisterUserEmailRequestComplete; + AddAt = RegisterUserRequests.Length; + RegisterUserRequests.Length = AddAt + 1; + RegisterUserRequests[AddAt].UDID = UDID; + RegisterUserRequests[AddAt].Request = Request; + // End:0x217 + if(!Request.ProcessRequest()) + { + } + } + //return; +} + +function OnRegisterUserEmailRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + OnRegisterUserRequestComplete(Request, Response, bWasSuccessful); + //return; +} + +function RegisterUserFacebook(string FacebookId, string FacebookAuthToken, string UDID, optional string ExistingMcpAuth) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt; + + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x21D + if(Request != none) + { + URL = ((((((((GetBaseURL()) $ RegisterUserEmailUrl) $ (GetAppAccessURL())) $ "&facebookid=") $ FacebookId) $ "&facebooktoken=") $ FacebookAuthToken) $ "&udid=") $ UDID; + // End:0xF1 + if(Len(ExistingMcpAuth) > 0) + { + URL $= ("&authticket=" $ ExistingMcpAuth); + } + Request.SetURL(URL); + Request.SetVerb("POST"); + Request.__OnProcessRequestComplete__Delegate = OnRegisterUserFacebookRequestComplete; + AddAt = RegisterUserRequests.Length; + RegisterUserRequests.Length = AddAt + 1; + RegisterUserRequests[AddAt].UDID = UDID; + RegisterUserRequests[AddAt].Request = Request; + // End:0x21D + if(!Request.ProcessRequest()) + { + } + } + //return; +} + +function OnRegisterUserFacebookRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + OnRegisterUserRequestComplete(Request, Response, bWasSuccessful); + //return; +} + +function QueryUser(string McpId, optional bool bShouldUpdateLastActive) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt; + + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x19F + if((Request != none) && McpId != "") + { + URL = ((((((GetBaseURL()) $ QueryUserUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ McpId) $ "&updateLastActive=") $ string(bShouldUpdateLastActive); + Request.SetURL(URL); + Request.SetVerb("GET"); + Request.__OnProcessRequestComplete__Delegate = OnQueryUserRequestComplete; + AddAt = QueryUsersRequests.Length; + QueryUsersRequests.Length = AddAt + 1; + QueryUsersRequests[AddAt] = Request; + // End:0x19F + if(!Request.ProcessRequest()) + { + } + } + //return; +} + +function OnQueryUserRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, AddAt, ResponseCode; + local string JsonString; + local JsonObject ParsedJson; + local int UserIndex; + local string McpId, UDID, CountryCode, LastActiveDate; + local bool bIsBanned, bWasFound; + local int DaysInactive; + + Index = QueryUsersRequests.Find(Request); + // End:0x49A + if(Index != -1) + { + ResponseCode = 500; + // End:0x7A + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x449 + if(bWasSuccessful) + { + JsonString = Response.GetContentAsString(); + // End:0x449 + if(JsonString != "") + { + ParsedJson = Class'Engine.JsonObject'.static.DecodeJson(JsonString); + McpId = ParsedJson.GetStringValue("unique_user_id"); + UDID = ParsedJson.GetStringValue("udid"); + CountryCode = ParsedJson.GetStringValue("country_code"); + bIsBanned = ParsedJson.GetBoolValue("is_banned"); + LastActiveDate = ParsedJson.GetStringValue("last_active_date"); + DaysInactive = ParsedJson.GetIntValue("days_inactive"); + bWasFound = false; + UserIndex = 0; + J0x277: + + // End:0x2EA [Loop If] + if((UserIndex < UserStatuses.Length) && !bWasFound) + { + bWasFound = McpId == UserStatuses[UserIndex].McpId; + UserIndex++; + // [Loop Continue] + goto J0x277; + } + // End:0x449 + if(!bWasFound) + { + AddAt = UserStatuses.Length; + UserStatuses.Length = AddAt + 1; + UserStatuses[AddAt].McpId = McpId; + UserStatuses[AddAt].UDID = UDID; + UserStatuses[AddAt].CountryCode = CountryCode; + UserStatuses[AddAt].bIsBanned = bIsBanned; + UserStatuses[AddAt].LastActiveDate = LastActiveDate; + UserStatuses[AddAt].DaysInactive = DaysInactive; + } + } + } + OnQueryUsersComplete(bWasSuccessful, Response.GetContentAsString()); + QueryUsersRequests.Remove(Index, 1); + } + //return; +} + +function QueryUsers(const out array McpIds) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt; + local string JsonPayload; + local int Index; + + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x273 + if(Request != none) + { + URL = ((GetBaseURL()) $ QueryUsersUrl) $ (GetAppAccessURL()); + JsonPayload = "[ "; + Index = 0; + J0x7C: + + // End:0x107 [Loop If] + if(Index < McpIds.Length) + { + JsonPayload $= (("\"" $ McpIds[Index]) $ "\""); + // End:0xF9 + if((Index + 1) < McpIds.Length) + { + JsonPayload $= ","; + } + Index++; + // [Loop Continue] + goto J0x7C; + } + JsonPayload $= " ]"; + Request.SetURL(URL); + Request.SetContentAsString(JsonPayload); + Request.SetVerb("POST"); + Request.SetHeader("Content-Type", "multipart/form-data"); + Request.__OnProcessRequestComplete__Delegate = OnQueryUsersRequestComplete; + AddAt = QueryUsersRequests.Length; + QueryUsersRequests.Length = AddAt + 1; + QueryUsersRequests[AddAt] = Request; + // End:0x273 + if(!Request.ProcessRequest()) + { + } + } + //return; +} + +function OnQueryUsersRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, AddAt, ResponseCode; + local string JsonString; + local JsonObject ParsedJson; + local int UserIndex, JsonIndex; + local string McpId, UDID, CountryCode, LastActiveDate; + local bool bIsBanned, bWasFound; + local int DaysInactive; + + Index = QueryUsersRequests.Find(Request); + // End:0x597 + if(Index != -1) + { + ResponseCode = 500; + // End:0x7A + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + // End:0x546 + if(bWasSuccessful) + { + JsonString = Response.GetContentAsString(); + // End:0x546 + if(JsonString != "") + { + ParsedJson = Class'Engine.JsonObject'.static.DecodeJson(JsonString); + JsonIndex = 0; + J0x124: + + // End:0x546 [Loop If] + if(JsonIndex < ParsedJson.ObjectArray.Length) + { + McpId = ParsedJson.ObjectArray[JsonIndex].GetStringValue("unique_user_id"); + UDID = ParsedJson.ObjectArray[JsonIndex].GetStringValue("udid"); + CountryCode = ParsedJson.ObjectArray[JsonIndex].GetStringValue("country_code"); + bIsBanned = ParsedJson.ObjectArray[JsonIndex].GetBoolValue("is_banned"); + LastActiveDate = ParsedJson.ObjectArray[JsonIndex].GetStringValue("last_active_date"); + DaysInactive = ParsedJson.ObjectArray[JsonIndex].GetIntValue("days_inactive"); + bWasFound = false; + UserIndex = 0; + J0x369: + + // End:0x3DC [Loop If] + if((UserIndex < UserStatuses.Length) && !bWasFound) + { + bWasFound = McpId == UserStatuses[UserIndex].McpId; + UserIndex++; + // [Loop Continue] + goto J0x369; + } + // End:0x538 + if(!bWasFound) + { + AddAt = UserStatuses.Length; + UserStatuses.Length = AddAt + 1; + UserStatuses[AddAt].McpId = McpId; + UserStatuses[AddAt].UDID = UDID; + UserStatuses[AddAt].CountryCode = CountryCode; + UserStatuses[AddAt].bIsBanned = bIsBanned; + UserStatuses[AddAt].LastActiveDate = LastActiveDate; + UserStatuses[AddAt].DaysInactive = DaysInactive; + } + JsonIndex++; + // [Loop Continue] + goto J0x124; + } + } + } + OnQueryUsersComplete(bWasSuccessful, Response.GetContentAsString()); + QueryUsersRequests.Remove(Index, 1); + } + //return; +} + +function GetUsers(out array Users) +{ + Users = UserStatuses; + //return; +} + +function DeleteUser(string McpId) +{ + local string URL; + local HttpRequestInterface Request; + local int AddAt; + + Request = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x16B + if(Request != none) + { + URL = ((((GetBaseURL()) $ DeleteUserUrl) $ (GetAppAccessURL())) $ "&uniqueUserId=") $ McpId; + Request.SetURL(URL); + Request.SetVerb("DELETE"); + Request.__OnProcessRequestComplete__Delegate = OnDeleteUserRequestComplete; + AddAt = DeleteUserRequests.Length; + DeleteUserRequests.Length = AddAt + 1; + DeleteUserRequests[AddAt] = Request; + // End:0x16B + if(!Request.ProcessRequest()) + { + } + } + //return; +} + +function OnDeleteUserRequestComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bWasSuccessful) +{ + local int Index, ResponseCode; + + Index = DeleteUserRequests.Find(Request); + // End:0xF2 + if(Index != -1) + { + ResponseCode = 500; + // End:0x7A + if(Response != none) + { + ResponseCode = Response.GetResponseCode(); + } + bWasSuccessful = bWasSuccessful && ResponseCode == 200; + OnDeleteUserComplete(bWasSuccessful, Response.GetContentAsString()); + DeleteUserRequests.Remove(Index, 1); + } + //return; +} + +defaultproperties +{ + RegisterUserMcpUrl="/registerusermcp" + RegisterUserFacebookUrl="/registeruserfacebook" + QueryUserUrl="/userstatus" + QueryUsersUrl="/usermultiplestatus" + DeleteUserUrl="/deleteuser" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/McpUserManagerBase.uc b/exported/IpDrv/Classes/McpUserManagerBase.uc new file mode 100755 index 00000000..ef1de736 --- /dev/null +++ b/exported/IpDrv/Classes/McpUserManagerBase.uc @@ -0,0 +1,104 @@ +class McpUserManagerBase extends McpServiceBase + abstract + config(Engine); + +struct McpUserStatus +{ + var string McpId; + var string UDID; + var string CountryCode; + var string LastActiveDate; + var int DaysInactive; + var bool bIsBanned; + + structdefaultproperties + { + McpId="" + UDID="" + CountryCode="" + LastActiveDate="" + DaysInactive=0 + bIsBanned=false + } +}; + +var config string McpUserManagerClassName; +//var delegate __OnRegisterUserComplete__Delegate; +//var delegate __OnQueryUsersComplete__Delegate; +//var delegate __OnDeleteUserComplete__Delegate; + +static final function McpUserManagerBase CreateInstance() +{ + local Class McpUserManagerBaseClass; + local McpUserManagerBase NewInstance; + + McpUserManagerBaseClass = Class(DynamicLoadObject(default.McpUserManagerClassName, Class'Core.Class')); + // End:0x76 + if(McpUserManagerBaseClass != none) + { + NewInstance = new McpUserManagerBaseClass; + NewInstance.Init(); + } + return NewInstance; + //return ReturnValue; +} + +function RegisterUserGenerated(string UDID, optional string ExistingMcpAuth) +{ + //return; +} + +function RegisterUserEmail(string Email, string PasswordHash, string UDID, optional string ExistingMcpAuth) +{ + //return; +} + +function RegisterUserFacebook(string FacebookId, string FacebookAuthToken, string UDID, optional string ExistingMcpAuth) +{ + //return; +} + +delegate OnRegisterUserComplete(string McpId, string UDID, bool bWasSuccessful, string Error) +{ + //return; +} + +function QueryUser(string McpId, optional bool bShouldUpdateLastActive) +{ + //return; +} + +function QueryUsers(const out array McpIds) +{ + //return; +} + +delegate OnQueryUsersComplete(bool bWasSuccessful, string Error) +{ + //return; +} + +function GetUsers(out array Users) +{ + //return; +} + +function bool GetUser(string McpId, out McpUserStatus User) +{ + //return ReturnValue; +} + +function DeleteUser(string McpId) +{ + //return; +} + +delegate OnDeleteUserComplete(bool bWasSuccessful, string Error) +{ + //return; +} + +defaultproperties +{ + McpUserManagerClassName="IpDrv.McpUserManager" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/MeshBeacon.uc b/exported/IpDrv/Classes/MeshBeacon.uc new file mode 100755 index 00000000..b7584e74 --- /dev/null +++ b/exported/IpDrv/Classes/MeshBeacon.uc @@ -0,0 +1,110 @@ +class MeshBeacon extends Object + native + config(Engine); + +enum EMeshBeaconPacketType +{ + MB_Packet_UnknownType, // 0 + MB_Packet_ClientNewConnectionRequest,// 1 + MB_Packet_ClientBeginBandwidthTest,// 2 + MB_Packet_ClientCreateNewSessionResponse,// 3 + MB_Packet_HostNewConnectionResponse,// 4 + MB_Packet_HostBandwidthTestRequest,// 5 + MB_Packet_HostCompletedBandwidthTest,// 6 + MB_Packet_HostTravelRequest, // 7 + MB_Packet_HostCreateNewSessionRequest,// 8 + MB_Packet_DummyData, // 9 + MB_Packet_Heartbeat, // 10 + MB_Packet_MAX // 11 +}; + +enum EMeshBeaconConnectionResult +{ + MB_ConnectionResult_Succeeded, // 0 + MB_ConnectionResult_Duplicate, // 1 + MB_ConnectionResult_Timeout, // 2 + MB_ConnectionResult_Error, // 3 + MB_ConnectionResult_MAX // 4 +}; + +enum EMeshBeaconBandwidthTestState +{ + MB_BandwidthTestState_NotStarted,// 0 + MB_BandwidthTestState_RequestPending,// 1 + MB_BandwidthTestState_StartPending,// 2 + MB_BandwidthTestState_InProgress,// 3 + MB_BandwidthTestState_Completed,// 4 + MB_BandwidthTestState_Incomplete,// 5 + MB_BandwidthTestState_Timeout, // 6 + MB_BandwidthTestState_Error, // 7 + MB_BandwidthTestState_MAX // 8 +}; + +enum EMeshBeaconBandwidthTestResult +{ + MB_BandwidthTestResult_Succeeded,// 0 + MB_BandwidthTestResult_Timeout, // 1 + MB_BandwidthTestResult_Error, // 2 + MB_BandwidthTestResult_MAX // 3 +}; + +enum EMeshBeaconBandwidthTestType +{ + MB_BandwidthTestType_Upstream, // 0 + MB_BandwidthTestType_Downstream,// 1 + MB_BandwidthTestType_RoundtripLatency,// 2 + MB_BandwidthTestType_MAX // 3 +}; + +struct native ConnectionBandwidthStats +{ + var int UpstreamRate; + var int DownstreamRate; + var int RoundtripLatency; + + structdefaultproperties + { + UpstreamRate=0 + DownstreamRate=0 + RoundtripLatency=0 + } +}; + +struct native PlayerMember +{ + var int TeamNum; + var int Skill; + var UniqueNetId NetId; + + structdefaultproperties + { + TeamNum=0 + Skill=0 + NetId=(Uid=()) + } +}; + +var private native const noexport Pointer VfTable_FTickableObject; +var config int MeshBeaconPort; +var native transient Pointer Socket; +var transient bool bIsInTick; +var transient bool bWantsDeferredDestroy; +var bool bShouldTick; +var config float HeartbeatTimeout; +var float ElapsedHeartbeatTime; +var name BeaconName; +var config int SocketSendBufferSize; +var config int SocketReceiveBufferSize; +var config int MaxBandwidthTestBufferSize; +var config int MinBandwidthTestBufferSize; +var config float MaxBandwidthTestSendTime; +var config float MaxBandwidthTestReceiveTime; +var config int MaxBandwidthHistoryEntries; + +// Export UMeshBeacon::execDestroyBeacon(FFrame&, void* const) +native event DestroyBeacon(); + +defaultproperties +{ + bShouldTick=true +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/MeshBeaconClient.uc b/exported/IpDrv/Classes/MeshBeaconClient.uc new file mode 100755 index 00000000..66fb2de8 --- /dev/null +++ b/exported/IpDrv/Classes/MeshBeaconClient.uc @@ -0,0 +1,108 @@ +class MeshBeaconClient extends MeshBeacon + native + config(Engine); + +enum EMeshBeaconClientState +{ + MBCS_None, // 0 + MBCS_Connecting, // 1 + MBCS_Connected, // 2 + MBCS_ConnectionFailed, // 3 + MBCS_AwaitingResponse, // 4 + MBCS_Closed, // 5 + MBCS_MAX // 6 +}; + +struct native ClientConnectionRequest +{ + var UniqueNetId PlayerNetId; + var OnlineSubsystem.ENATType NatType; + var bool bCanHostVs; + var float GoodHostRatio; + var array BandwidthHistory; + var int MinutesSinceLastTest; + + structdefaultproperties + { + PlayerNetId=(Uid=()) + NatType=ENATType.NAT_Unknown + bCanHostVs=false + GoodHostRatio=0.0000000 + BandwidthHistory=none + MinutesSinceLastTest=0 + } +}; + +struct native ClientBandwidthTestData +{ + var MeshBeacon.EMeshBeaconBandwidthTestType TestType; + var MeshBeacon.EMeshBeaconBandwidthTestState CurrentState; + var int NumBytesToSendTotal; + var int NumBytesSentTotal; + var int NumBytesSentLast; + var float ElapsedTestTime; + + structdefaultproperties + { + TestType=EMeshBeaconBandwidthTestType.MB_BandwidthTestType_Upstream + CurrentState=EMeshBeaconBandwidthTestState.MB_BandwidthTestState_NotStarted + NumBytesToSendTotal=0 + NumBytesSentTotal=0 + NumBytesSentLast=0 + ElapsedTestTime=0.0000000 + } +}; + +var const OnlineGameSearchResult HostPendingRequest; +var const ClientConnectionRequest ClientPendingRequest; +var ClientBandwidthTestData CurrentBandwidthTest; +var MeshBeaconClient.EMeshBeaconClientState ClientBeaconState; +var MeshBeacon.EMeshBeaconPacketType ClientBeaconRequestType; +var config float ConnectionRequestTimeout; +var float ConnectionRequestElapsedTime; +var config string ResolverClassName; +var Class ResolverClass; +var ClientBeaconAddressResolver Resolver; +var transient bool bUsingRegisteredAddr; +//var delegate __OnConnectionRequestResult__Delegate; +//var delegate __OnReceivedBandwidthTestRequest__Delegate; +//var delegate __OnReceivedBandwidthTestResults__Delegate; +//var delegate __OnTravelRequestReceived__Delegate; +//var delegate __OnCreateNewSessionRequestReceived__Delegate; + +// Export UMeshBeaconClient::execDestroyBeacon(FFrame&, void* const) +native event DestroyBeacon(); + +// Export UMeshBeaconClient::execRequestConnection(FFrame&, void* const) +native function bool RequestConnection(const out OnlineGameSearchResult DesiredHost, const out ClientConnectionRequest ClientRequest, bool bRegisterSecureAddress); + +// Export UMeshBeaconClient::execBeginBandwidthTest(FFrame&, void* const) +native function bool BeginBandwidthTest(MeshBeacon.EMeshBeaconBandwidthTestType TestType, int TestBufferSize); + +delegate OnConnectionRequestResult(MeshBeacon.EMeshBeaconConnectionResult ConnectionResult) +{ + //return; +} + +delegate OnReceivedBandwidthTestRequest(MeshBeacon.EMeshBeaconBandwidthTestType TestType) +{ + //return; +} + +delegate OnReceivedBandwidthTestResults(MeshBeacon.EMeshBeaconBandwidthTestType TestType, MeshBeacon.EMeshBeaconBandwidthTestResult TestResult, const out ConnectionBandwidthStats BandwidthStats) +{ + //return; +} + +delegate OnTravelRequestReceived(name SessionName, Class SearchClass, const out byte PlatformSpecificInfo[80]) +{ + //return; +} + +delegate OnCreateNewSessionRequestReceived(name SessionName, Class SearchClass, const out array Players) +{ + //return; +} + +// Export UMeshBeaconClient::execSendHostNewGameSessionResponse(FFrame&, void* const) +native function bool SendHostNewGameSessionResponse(bool bSuccess, name SessionName, Class SearchClass, const out byte PlatformSpecificInfo[80]); diff --git a/exported/IpDrv/Classes/MeshBeaconHost.uc b/exported/IpDrv/Classes/MeshBeaconHost.uc new file mode 100755 index 00000000..7b5e8d0a --- /dev/null +++ b/exported/IpDrv/Classes/MeshBeaconHost.uc @@ -0,0 +1,138 @@ +class MeshBeaconHost extends MeshBeacon + native + config(Engine); + +struct native ClientConnectionBandwidthTestData +{ + var MeshBeacon.EMeshBeaconBandwidthTestState CurrentState; + var MeshBeacon.EMeshBeaconBandwidthTestType TestType; + var int BytesTotalNeeded; + var int BytesReceived; + var Double RequestTestStartTime; + var Double TestStartTime; + var ConnectionBandwidthStats BandwidthStats; + + structdefaultproperties + { + CurrentState=EMeshBeaconBandwidthTestState.MB_BandwidthTestState_NotStarted + TestType=EMeshBeaconBandwidthTestType.MB_BandwidthTestType_Upstream + BytesTotalNeeded=0 + BytesReceived=0 + RequestTestStartTime=() + TestStartTime=() + BandwidthStats=(UpstreamRate=0,DownstreamRate=0,RoundtripLatency=0) + } +}; + +struct native ClientMeshBeaconConnection +{ + var UniqueNetId PlayerNetId; + var float ElapsedHeartbeatTime; + var native transient Pointer Socket; + var bool bConnectionAccepted; + var ClientConnectionBandwidthTestData BandwidthTest; + var OnlineSubsystem.ENATType NatType; + var bool bCanHostVs; + var float GoodHostRatio; + var array BandwidthHistory; + var int MinutesSinceLastTest; + + structdefaultproperties + { + PlayerNetId=(Uid=()) + ElapsedHeartbeatTime=0.0000000 + bConnectionAccepted=false + BandwidthTest=(CurrentState=EMeshBeaconBandwidthTestState.MB_BandwidthTestState_NotStarted,TestType=EMeshBeaconBandwidthTestType.MB_BandwidthTestType_Upstream,BytesTotalNeeded=0,BytesReceived=0,RequestTestStartTime=(),TestStartTime=(),BandwidthStats=(UpstreamRate=0,DownstreamRate=0,RoundtripLatency=0)) + NatType=ENATType.NAT_Unknown + bCanHostVs=false + GoodHostRatio=0.0000000 + BandwidthHistory=none + MinutesSinceLastTest=0 + } +}; + +var const array ClientConnections; +var private array PendingPlayerConnections; +var const UniqueNetId OwningPlayerId; +var private bool bAllowBandwidthTesting; +var config int ConnectionBacklog; +//var delegate __OnReceivedClientConnectionRequest__Delegate; +//var delegate __OnStartedBandwidthTest__Delegate; +//var delegate __OnFinishedBandwidthTest__Delegate; +//var delegate __OnAllPendingPlayersConnected__Delegate; +//var delegate __OnReceivedClientCreateNewSessionResult__Delegate; + +// Export UMeshBeaconHost::execInitHostBeacon(FFrame&, void* const) +native function bool InitHostBeacon(UniqueNetId InOwningPlayerId); + +// Export UMeshBeaconHost::execDestroyBeacon(FFrame&, void* const) +native event DestroyBeacon(); + +// Export UMeshBeaconHost::execRequestClientBandwidthTest(FFrame&, void* const) +native function bool RequestClientBandwidthTest(UniqueNetId PlayerNetId, MeshBeacon.EMeshBeaconBandwidthTestType TestType, int TestBufferSize); + +// Export UMeshBeaconHost::execHasInProgressBandwidthTest(FFrame&, void* const) +native function bool HasInProgressBandwidthTest(); + +// Export UMeshBeaconHost::execCancelInProgressBandwidthTests(FFrame&, void* const) +native function CancelInProgressBandwidthTests(); + +// Export UMeshBeaconHost::execHasPendingBandwidthTest(FFrame&, void* const) +native function bool HasPendingBandwidthTest(); + +// Export UMeshBeaconHost::execCancelPendingBandwidthTests(FFrame&, void* const) +native function CancelPendingBandwidthTests(); + +function AllowBandwidthTesting(bool bEnabled) +{ + bAllowBandwidthTesting = bEnabled; + //return; +} + +delegate OnReceivedClientConnectionRequest(const out ClientMeshBeaconConnection NewClientConnection) +{ + //return; +} + +delegate OnStartedBandwidthTest(UniqueNetId PlayerNetId, MeshBeacon.EMeshBeaconBandwidthTestType TestType) +{ + //return; +} + +delegate OnFinishedBandwidthTest(UniqueNetId PlayerNetId, MeshBeacon.EMeshBeaconBandwidthTestType TestType, MeshBeacon.EMeshBeaconBandwidthTestResult TestResult, const out ConnectionBandwidthStats BandwidthStats) +{ + //return; +} + +function SetPendingPlayerConnections(const out array Players) +{ + PendingPlayerConnections = Players; + //return; +} + +// Export UMeshBeaconHost::execGetConnectionIndexForPlayer(FFrame&, void* const) +native function int GetConnectionIndexForPlayer(UniqueNetId PlayerNetId); + +// Export UMeshBeaconHost::execAllPlayersConnected(FFrame&, void* const) +native function bool AllPlayersConnected(const out array Players); + +delegate OnAllPendingPlayersConnected() +{ + //return; +} + +// Export UMeshBeaconHost::execTellClientsToTravel(FFrame&, void* const) +native function TellClientsToTravel(name SessionName, Class SearchClass, const out byte PlatformSpecificInfo[80]); + +// Export UMeshBeaconHost::execRequestClientCreateNewSession(FFrame&, void* const) +native function bool RequestClientCreateNewSession(UniqueNetId PlayerNetId, name SessionName, Class SearchClass, const out array Players); + +delegate OnReceivedClientCreateNewSessionResult(bool bSucceeded, name SessionName, Class SearchClass, const out byte PlatformSpecificInfo[80]) +{ + //return; +} + +defaultproperties +{ + bAllowBandwidthTesting=true +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/OnlineAuthInterfaceImpl.uc b/exported/IpDrv/Classes/OnlineAuthInterfaceImpl.uc new file mode 100755 index 00000000..60e8e475 --- /dev/null +++ b/exported/IpDrv/Classes/OnlineAuthInterfaceImpl.uc @@ -0,0 +1,449 @@ +class OnlineAuthInterfaceImpl extends Object within OnlineSubsystemCommonImpl + native + implements(OnlineAuthInterface); + +var private native const noexport Pointer VfTable_IOnlineAuthInterface; +var OnlineSubsystemCommonImpl OwningSubsystem; +var const bool bAuthReady; +var native const SparseArray_Mirror ClientAuthSessions; +var native const SparseArray_Mirror ServerAuthSessions; +var native const SparseArray_Mirror PeerAuthSessions; +var native const SparseArray_Mirror LocalClientAuthSessions; +var native const SparseArray_Mirror LocalServerAuthSessions; +var native const SparseArray_Mirror LocalPeerAuthSessions; +var array< delegate > AuthReadyDelegates; +var array< delegate > ClientAuthRequestDelegates; +var array< delegate > ServerAuthRequestDelegates; +var array< delegate > ClientAuthResponseDelegates; +var array< delegate > ServerAuthResponseDelegates; +var array< delegate > ClientAuthCompleteDelegates; +var array< delegate > ServerAuthCompleteDelegates; +var array< delegate > ClientAuthEndSessionRequestDelegates; +var array< delegate > ServerAuthRetryRequestDelegates; +var array< delegate > ClientConnectionCloseDelegates; +var array< delegate > ServerConnectionCloseDelegates; +//var delegate __OnAuthReady__Delegate; +//var delegate __OnClientAuthRequest__Delegate; +//var delegate __OnServerAuthRequest__Delegate; +//var delegate __OnClientAuthResponse__Delegate; +//var delegate __OnServerAuthResponse__Delegate; +//var delegate __OnClientAuthComplete__Delegate; +//var delegate __OnServerAuthComplete__Delegate; +//var delegate __OnClientAuthEndSessionRequest__Delegate; +//var delegate __OnServerAuthRetryRequest__Delegate; +//var delegate __OnClientConnectionClose__Delegate; +//var delegate __OnServerConnectionClose__Delegate; + +function bool IsReady() +{ + return bAuthReady; + //return ReturnValue; +} + +delegate OnAuthReady() +{ + //return; +} + +function AddAuthReadyDelegate(delegate AuthReadyDelegate) +{ + // End:0x3E + if(AuthReadyDelegates.Find(AuthReadyDelegate) == -1) + { + AuthReadyDelegates[AuthReadyDelegates.Length] = AuthReadyDelegate; + } + //return; +} + +function ClearAuthReadyDelegate(delegate AuthReadyDelegate) +{ + local int I; + + I = AuthReadyDelegates.Find(AuthReadyDelegate); + // End:0x48 + if(I != -1) + { + AuthReadyDelegates.Remove(I, 1); + } + //return; +} + +delegate OnClientAuthRequest(UniqueNetId ServerUID, IpAddr ServerIP, int ServerPort, bool bSecure) +{ + //return; +} + +function AddClientAuthRequestDelegate(delegate ClientAuthRequestDelegate) +{ + // End:0x3E + if(ClientAuthRequestDelegates.Find(ClientAuthRequestDelegate) == -1) + { + ClientAuthRequestDelegates[ClientAuthRequestDelegates.Length] = ClientAuthRequestDelegate; + } + //return; +} + +function ClearClientAuthRequestDelegate(delegate ClientAuthRequestDelegate) +{ + local int I; + + I = ClientAuthRequestDelegates.Find(ClientAuthRequestDelegate); + // End:0x48 + if(I != -1) + { + ClientAuthRequestDelegates.Remove(I, 1); + } + //return; +} + +delegate OnServerAuthRequest(Player ClientConnection, UniqueNetId ClientUID, IpAddr ClientIP, int ClientPort) +{ + //return; +} + +function AddServerAuthRequestDelegate(delegate ServerAuthRequestDelegate) +{ + // End:0x3E + if(ServerAuthRequestDelegates.Find(ServerAuthRequestDelegate) == -1) + { + ServerAuthRequestDelegates[ServerAuthRequestDelegates.Length] = ServerAuthRequestDelegate; + } + //return; +} + +function ClearServerAuthRequestDelegate(delegate ServerAuthRequestDelegate) +{ + local int I; + + I = ServerAuthRequestDelegates.Find(ServerAuthRequestDelegate); + // End:0x48 + if(I != -1) + { + ServerAuthRequestDelegates.Remove(I, 1); + } + //return; +} + +delegate OnClientAuthResponse(UniqueNetId ClientUID, IpAddr ClientIP, int AuthTicketUID) +{ + //return; +} + +function AddClientAuthResponseDelegate(delegate ClientAuthResponseDelegate) +{ + // End:0x3E + if(ClientAuthResponseDelegates.Find(ClientAuthResponseDelegate) == -1) + { + ClientAuthResponseDelegates[ClientAuthResponseDelegates.Length] = ClientAuthResponseDelegate; + } + //return; +} + +function ClearClientAuthResponseDelegate(delegate ClientAuthResponseDelegate) +{ + local int I; + + I = ClientAuthResponseDelegates.Find(ClientAuthResponseDelegate); + // End:0x48 + if(I != -1) + { + ClientAuthResponseDelegates.Remove(I, 1); + } + //return; +} + +delegate OnServerAuthResponse(UniqueNetId ServerUID, IpAddr ServerIP, int AuthTicketUID) +{ + //return; +} + +function AddServerAuthResponseDelegate(delegate ServerAuthResponseDelegate) +{ + // End:0x3E + if(ServerAuthResponseDelegates.Find(ServerAuthResponseDelegate) == -1) + { + ServerAuthResponseDelegates[ServerAuthResponseDelegates.Length] = ServerAuthResponseDelegate; + } + //return; +} + +function ClearServerAuthResponseDelegate(delegate ServerAuthResponseDelegate) +{ + local int I; + + I = ServerAuthResponseDelegates.Find(ServerAuthResponseDelegate); + // End:0x48 + if(I != -1) + { + ServerAuthResponseDelegates.Remove(I, 1); + } + //return; +} + +delegate OnClientAuthComplete(bool bSuccess, UniqueNetId ClientUID, Player ClientConnection, string ExtraInfo) +{ + //return; +} + +function AddClientAuthCompleteDelegate(delegate ClientAuthCompleteDelegate) +{ + // End:0x3E + if(ClientAuthCompleteDelegates.Find(ClientAuthCompleteDelegate) == -1) + { + ClientAuthCompleteDelegates[ClientAuthCompleteDelegates.Length] = ClientAuthCompleteDelegate; + } + //return; +} + +function ClearClientAuthCompleteDelegate(delegate ClientAuthCompleteDelegate) +{ + local int I; + + I = ClientAuthCompleteDelegates.Find(ClientAuthCompleteDelegate); + // End:0x48 + if(I != -1) + { + ClientAuthCompleteDelegates.Remove(I, 1); + } + //return; +} + +delegate OnServerAuthComplete(bool bSuccess, UniqueNetId ServerUID, Player ServerConnection, string ExtraInfo) +{ + //return; +} + +function AddServerAuthCompleteDelegate(delegate ServerAuthCompleteDelegate) +{ + // End:0x3E + if(ServerAuthCompleteDelegates.Find(ServerAuthCompleteDelegate) == -1) + { + ServerAuthCompleteDelegates[ServerAuthCompleteDelegates.Length] = ServerAuthCompleteDelegate; + } + //return; +} + +function ClearServerAuthCompleteDelegate(delegate ServerAuthCompleteDelegate) +{ + local int I; + + I = ServerAuthCompleteDelegates.Find(ServerAuthCompleteDelegate); + // End:0x48 + if(I != -1) + { + ServerAuthCompleteDelegates.Remove(I, 1); + } + //return; +} + +delegate OnClientAuthEndSessionRequest(Player ServerConnection) +{ + //return; +} + +function AddClientAuthEndSessionRequestDelegate(delegate ClientAuthEndSessionRequestDelegate) +{ + // End:0x3E + if(ClientAuthEndSessionRequestDelegates.Find(ClientAuthEndSessionRequestDelegate) == -1) + { + ClientAuthEndSessionRequestDelegates[ClientAuthEndSessionRequestDelegates.Length] = ClientAuthEndSessionRequestDelegate; + } + //return; +} + +function ClearClientAuthEndSessionRequestDelegate(delegate ClientAuthEndSessionRequestDelegate) +{ + local int I; + + I = ClientAuthEndSessionRequestDelegates.Find(ClientAuthEndSessionRequestDelegate); + // End:0x48 + if(I != -1) + { + ClientAuthEndSessionRequestDelegates.Remove(I, 1); + } + //return; +} + +delegate OnServerAuthRetryRequest(Player ClientConnection) +{ + //return; +} + +function AddServerAuthRetryRequestDelegate(delegate ServerAuthRetryRequestDelegate) +{ + // End:0x3E + if(ServerAuthRetryRequestDelegates.Find(ServerAuthRetryRequestDelegate) == -1) + { + ServerAuthRetryRequestDelegates[ServerAuthRetryRequestDelegates.Length] = ServerAuthRetryRequestDelegate; + } + //return; +} + +function ClearServerAuthRetryRequestDelegate(delegate ServerAuthRetryRequestDelegate) +{ + local int I; + + I = ServerAuthRetryRequestDelegates.Find(ServerAuthRetryRequestDelegate); + // End:0x48 + if(I != -1) + { + ServerAuthRetryRequestDelegates.Remove(I, 1); + } + //return; +} + +delegate OnClientConnectionClose(Player ClientConnection) +{ + //return; +} + +function AddClientConnectionCloseDelegate(delegate ClientConnectionCloseDelegate) +{ + // End:0x3E + if(ClientConnectionCloseDelegates.Find(ClientConnectionCloseDelegate) == -1) + { + ClientConnectionCloseDelegates[ClientConnectionCloseDelegates.Length] = ClientConnectionCloseDelegate; + } + //return; +} + +function ClearClientConnectionCloseDelegate(delegate ClientConnectionCloseDelegate) +{ + local int I; + + I = ClientConnectionCloseDelegates.Find(ClientConnectionCloseDelegate); + // End:0x48 + if(I != -1) + { + ClientConnectionCloseDelegates.Remove(I, 1); + } + //return; +} + +delegate OnServerConnectionClose(Player ServerConnection) +{ + //return; +} + +function AddServerConnectionCloseDelegate(delegate ServerConnectionCloseDelegate) +{ + // End:0x3E + if(ServerConnectionCloseDelegates.Find(ServerConnectionCloseDelegate) == -1) + { + ServerConnectionCloseDelegates[ServerConnectionCloseDelegates.Length] = ServerConnectionCloseDelegate; + } + //return; +} + +function ClearServerConnectionCloseDelegate(delegate ServerConnectionCloseDelegate) +{ + local int I; + + I = ServerConnectionCloseDelegates.Find(ServerConnectionCloseDelegate); + // End:0x48 + if(I != -1) + { + ServerConnectionCloseDelegates.Remove(I, 1); + } + //return; +} + +function bool SendClientAuthRequest(Player ClientConnection, UniqueNetId ClientUID) +{ + //return ReturnValue; +} + +function bool SendServerAuthRequest(UniqueNetId ServerUID) +{ + //return ReturnValue; +} + +// Export UOnlineAuthInterfaceImpl::execSendClientAuthResponse(FFrame&, void* const) +native function bool SendClientAuthResponse(int AuthTicketUID); + +// Export UOnlineAuthInterfaceImpl::execSendServerAuthResponse(FFrame&, void* const) +native function bool SendServerAuthResponse(Player ClientConnection, int AuthTicketUID); + +// Export UOnlineAuthInterfaceImpl::execSendClientAuthEndSessionRequest(FFrame&, void* const) +native function bool SendClientAuthEndSessionRequest(Player ClientConnection); + +// Export UOnlineAuthInterfaceImpl::execSendServerAuthRetryRequest(FFrame&, void* const) +native function bool SendServerAuthRetryRequest(); + +function bool CreateClientAuthSession(UniqueNetId ServerUID, IpAddr ServerIP, int ServerPort, bool bSecure, out int OutAuthTicketUID) +{ + //return ReturnValue; +} + +function bool VerifyClientAuthSession(UniqueNetId ClientUID, IpAddr ClientIP, int ClientPort, int AuthTicketUID) +{ + //return ReturnValue; +} + +// Export UOnlineAuthInterfaceImpl::execEndLocalClientAuthSession(FFrame&, void* const) +native final function EndLocalClientAuthSession(UniqueNetId ServerUID, IpAddr ServerIP, int ServerPort); + +// Export UOnlineAuthInterfaceImpl::execEndRemoteClientAuthSession(FFrame&, void* const) +native final function EndRemoteClientAuthSession(UniqueNetId ClientUID, IpAddr ClientIP); + +// Export UOnlineAuthInterfaceImpl::execEndAllLocalClientAuthSessions(FFrame&, void* const) +native function EndAllLocalClientAuthSessions(); + +// Export UOnlineAuthInterfaceImpl::execEndAllRemoteClientAuthSessions(FFrame&, void* const) +native function EndAllRemoteClientAuthSessions(); + +function bool CreateServerAuthSession(UniqueNetId ClientUID, IpAddr ClientIP, int ClientPort, out int OutAuthTicketUID) +{ + //return ReturnValue; +} + +function bool VerifyServerAuthSession(UniqueNetId ServerUID, IpAddr ServerIP, int AuthTicketUID) +{ + //return ReturnValue; +} + +// Export UOnlineAuthInterfaceImpl::execEndLocalServerAuthSession(FFrame&, void* const) +native final function EndLocalServerAuthSession(UniqueNetId ClientUID, IpAddr ClientIP); + +// Export UOnlineAuthInterfaceImpl::execEndRemoteServerAuthSession(FFrame&, void* const) +native final function EndRemoteServerAuthSession(UniqueNetId ServerUID, IpAddr ServerIP); + +// Export UOnlineAuthInterfaceImpl::execEndAllLocalServerAuthSessions(FFrame&, void* const) +native function EndAllLocalServerAuthSessions(); + +// Export UOnlineAuthInterfaceImpl::execEndAllRemoteServerAuthSessions(FFrame&, void* const) +native function EndAllRemoteServerAuthSessions(); + +// Export UOnlineAuthInterfaceImpl::execAllClientAuthSessions(FFrame&, void* const) +native iterator function AllClientAuthSessions(out AuthSession OutSessionInfo); + +// Export UOnlineAuthInterfaceImpl::execAllLocalClientAuthSessions(FFrame&, void* const) +native iterator function AllLocalClientAuthSessions(out LocalAuthSession OutSessionInfo); + +// Export UOnlineAuthInterfaceImpl::execAllServerAuthSessions(FFrame&, void* const) +native iterator function AllServerAuthSessions(out AuthSession OutSessionInfo); + +// Export UOnlineAuthInterfaceImpl::execAllLocalServerAuthSessions(FFrame&, void* const) +native iterator function AllLocalServerAuthSessions(out LocalAuthSession OutSessionInfo); + +// Export UOnlineAuthInterfaceImpl::execFindClientAuthSession(FFrame&, void* const) +native function bool FindClientAuthSession(Player ClientConnection, out AuthSession OutSessionInfo); + +// Export UOnlineAuthInterfaceImpl::execFindLocalClientAuthSession(FFrame&, void* const) +native function bool FindLocalClientAuthSession(Player ServerConnection, out LocalAuthSession OutSessionInfo); + +// Export UOnlineAuthInterfaceImpl::execFindServerAuthSession(FFrame&, void* const) +native function bool FindServerAuthSession(Player ServerConnection, out AuthSession OutSessionInfo); + +// Export UOnlineAuthInterfaceImpl::execFindLocalServerAuthSession(FFrame&, void* const) +native function bool FindLocalServerAuthSession(Player ClientConnection, out LocalAuthSession OutSessionInfo); + +function bool GetServerUniqueId(out UniqueNetId OutServerUID) +{ + //return ReturnValue; +} + +function bool GetServerAddr(out IpAddr OutServerIP, out int OutServerPort) +{ + //return ReturnValue; +} diff --git a/exported/IpDrv/Classes/OnlineEventsInterfaceMcp.uc b/exported/IpDrv/Classes/OnlineEventsInterfaceMcp.uc new file mode 100755 index 00000000..fc3a5fe1 --- /dev/null +++ b/exported/IpDrv/Classes/OnlineEventsInterfaceMcp.uc @@ -0,0 +1,46 @@ +class OnlineEventsInterfaceMcp extends MCPBase + native + config(Engine) + implements(OnlineEventsInterface); + +enum EEventUploadType +{ + EUT_GenericStats, // 0 + EUT_ProfileData, // 1 + EUT_MatchmakingData, // 2 + EUT_PlaylistPopulation, // 3 + EUT_MAX // 4 +}; + +struct native EventUploadConfig +{ + var const OnlineEventsInterfaceMcp.EEventUploadType UploadType; + var const string UploadUrl; + var const float TimeOut; + var const bool bUseCompression; + + structdefaultproperties + { + UploadType=EEventUploadType.EUT_GenericStats + UploadUrl="" + TimeOut=0.0000000 + bUseCompression=false + } +}; + +var const config array EventUploadConfigs; +var native const array MCPEventPostObjects; +var config array DisabledUploadTypes; +var const config bool bBinaryStats; + +// Export UOnlineEventsInterfaceMcp::execUploadPlayerData(FFrame&, void* const) +native function bool UploadPlayerData(UniqueNetId UniqueId, string PlayerNick, OnlineProfileSettings ProfileSettings, OnlinePlayerStorage PlayerStorage); + +// Export UOnlineEventsInterfaceMcp::execUploadGameplayEventsData(FFrame&, void* const) +native function bool UploadGameplayEventsData(UniqueNetId UniqueId, const out array Payload); + +// Export UOnlineEventsInterfaceMcp::execUpdatePlaylistPopulation(FFrame&, void* const) +native function bool UpdatePlaylistPopulation(int PlaylistId, int NumPlayers); + +// Export UOnlineEventsInterfaceMcp::execUploadMatchmakingStats(FFrame&, void* const) +native function bool UploadMatchmakingStats(UniqueNetId UniqueId, OnlineMatchmakingStats MMStats); diff --git a/exported/IpDrv/Classes/OnlineGameInterfaceImpl.uc b/exported/IpDrv/Classes/OnlineGameInterfaceImpl.uc new file mode 100755 index 00000000..2c8bfeb1 --- /dev/null +++ b/exported/IpDrv/Classes/OnlineGameInterfaceImpl.uc @@ -0,0 +1,963 @@ +class OnlineGameInterfaceImpl extends Object within OnlineSubsystemCommonImpl + native + config(Engine) + implements(OnlineGameInterface); + +var OnlineSubsystemCommonImpl OwningSubsystem; +var const OnlineGameSettings GameSettings; +var const OnlineGameSearch GameSearch; +var array< delegate > CreateOnlineGameCompleteDelegates; +var array< delegate > UpdateOnlineGameCompleteDelegates; +var array< delegate > DestroyOnlineGameCompleteDelegates; +var array< delegate > JoinOnlineGameCompleteDelegates; +var array< delegate > MigrateOnlineGameCompleteDelegates; +var array< delegate > JoinMigratedOnlineGameCompleteDelegates; +var array< delegate > RecalculateSkillRatingCompleteDelegates; +var array< delegate > StartOnlineGameCompleteDelegates; +var array< delegate > EndOnlineGameCompleteDelegates; +var array< delegate > FindOnlineGamesCompleteDelegates; +var array< delegate > CancelFindOnlineGamesCompleteDelegates; +var const OnlineSubsystem.ELanBeaconState LanBeaconState; +var const byte LanNonce[8]; +var const config int LanAnnouncePort; +var const config int LanGameUniqueId; +var const config int LanPacketPlatformMask; +var float LanQueryTimeLeft; +var config float LanQueryTimeout; +var native const transient Pointer LanBeacon; +var private native const transient Pointer SessionInfo; +//var delegate __OnFindOnlineGamesComplete__Delegate; +//var delegate __OnCreateOnlineGameComplete__Delegate; +//var delegate __OnUpdateOnlineGameComplete__Delegate; +//var delegate __OnDestroyOnlineGameComplete__Delegate; +//var delegate __OnCancelFindOnlineGamesComplete__Delegate; +//var delegate __OnJoinOnlineGameComplete__Delegate; +//var delegate __OnCreateOnlineGameWithPartyComplete__Delegate; +//var delegate __OnMatchmakeOnlineGameWithPartyComplete__Delegate; +//var delegate __OnAddSessionMemberComplete__Delegate; +//var delegate __OnMultiplayerSessionChange__Delegate; +//var delegate __OnUpdateSessionPropertiesComplete__Delegate; +//var delegate __OnGameSessionReady__Delegate; +//var delegate __OnAcceptPendingGameSessionComplete__Delegate; +//var delegate __OnGamePlayersChanged__Delegate; +//var delegate __OnMatchStatusChanged__Delegate; +//var delegate __OnQuerySessionsForUserComplete__Delegate; +//var delegate __OnRegisterPlayerComplete__Delegate; +//var delegate __OnUnregisterPlayerComplete__Delegate; +//var delegate __OnRetrievedGameSettingsForIP__Delegate; +//var delegate __OnStartOnlineGameComplete__Delegate; +//var delegate __OnEndOnlineGameComplete__Delegate; +//var delegate __OnArbitrationRegistrationComplete__Delegate; +//var delegate __OnGameInviteAccepted__Delegate; +//var delegate __OnRecalculateSkillRatingComplete__Delegate; +//var delegate __OnMigrateOnlineGameComplete__Delegate; +//var delegate __OnJoinMigratedOnlineGameComplete__Delegate; +//var delegate __OnQosStatusChanged__Delegate; +//var delegate __OnGetNumberOfCurrentPlayersComplete__Delegate; +//var delegate __OnGetRoomIdFromTitleService__Delegate; +//var delegate __OnGetSessionMemberInfoComplete__Delegate; +//var delegate __OnGetUserConnectionInfoComplete__Delegate; + +delegate OnFindOnlineGamesComplete(bool bWasSuccessful) +{ + //return; +} + +function OnlineGameSettings GetGameSettings(name SessionName) +{ + return GameSettings; + //return ReturnValue; +} + +function OnlineGameSearch GetGameSearch() +{ + return GameSearch; + //return ReturnValue; +} + +// Export UOnlineGameInterfaceImpl::execCreateOnlineGame(FFrame&, void* const) +native function bool CreateOnlineGame(byte HostingPlayerNum, name SessionName, OnlineGameSettings NewGameSettings); + +delegate OnCreateOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddCreateOnlineGameCompleteDelegate(delegate CreateOnlineGameCompleteDelegate) +{ + // End:0x3E + if(CreateOnlineGameCompleteDelegates.Find(CreateOnlineGameCompleteDelegate) == -1) + { + CreateOnlineGameCompleteDelegates[CreateOnlineGameCompleteDelegates.Length] = CreateOnlineGameCompleteDelegate; + } + //return; +} + +function ClearCreateOnlineGameCompleteDelegate(delegate CreateOnlineGameCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = CreateOnlineGameCompleteDelegates.Find(CreateOnlineGameCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + CreateOnlineGameCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +function bool UpdateOnlineGame(name SessionName, OnlineGameSettings UpdatedGameSettings, optional bool bShouldRefreshOnlineData = false) +{ + //return ReturnValue; +} + +delegate OnUpdateOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddUpdateOnlineGameCompleteDelegate(delegate UpdateOnlineGameCompleteDelegate) +{ + // End:0x3E + if(UpdateOnlineGameCompleteDelegates.Find(UpdateOnlineGameCompleteDelegate) == -1) + { + UpdateOnlineGameCompleteDelegates[UpdateOnlineGameCompleteDelegates.Length] = UpdateOnlineGameCompleteDelegate; + } + //return; +} + +function ClearUpdateOnlineGameCompleteDelegate(delegate UpdateOnlineGameCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = UpdateOnlineGameCompleteDelegates.Find(UpdateOnlineGameCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + UpdateOnlineGameCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UOnlineGameInterfaceImpl::execDestroyOnlineGame(FFrame&, void* const) +native function bool DestroyOnlineGame(name SessionName); + +delegate OnDestroyOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddDestroyOnlineGameCompleteDelegate(delegate DestroyOnlineGameCompleteDelegate) +{ + // End:0x3E + if(DestroyOnlineGameCompleteDelegates.Find(DestroyOnlineGameCompleteDelegate) == -1) + { + DestroyOnlineGameCompleteDelegates[DestroyOnlineGameCompleteDelegates.Length] = DestroyOnlineGameCompleteDelegate; + } + //return; +} + +function ClearDestroyOnlineGameCompleteDelegate(delegate DestroyOnlineGameCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = DestroyOnlineGameCompleteDelegates.Find(DestroyOnlineGameCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + DestroyOnlineGameCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UOnlineGameInterfaceImpl::execFindOnlineGames(FFrame&, void* const) +native function bool FindOnlineGames(byte SearchingPlayerNum, OnlineGameSearch SearchSettings); + +function AddFindOnlineGamesCompleteDelegate(delegate FindOnlineGamesCompleteDelegate) +{ + // End:0x3E + if(FindOnlineGamesCompleteDelegates.Find(FindOnlineGamesCompleteDelegate) == -1) + { + FindOnlineGamesCompleteDelegates[FindOnlineGamesCompleteDelegates.Length] = FindOnlineGamesCompleteDelegate; + } + //return; +} + +function ClearFindOnlineGamesCompleteDelegate(delegate FindOnlineGamesCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = FindOnlineGamesCompleteDelegates.Find(FindOnlineGamesCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + FindOnlineGamesCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UOnlineGameInterfaceImpl::execCancelFindOnlineGames(FFrame&, void* const) +native function bool CancelFindOnlineGames(); + +delegate OnCancelFindOnlineGamesComplete(bool bWasSuccessful) +{ + //return; +} + +function AddCancelFindOnlineGamesCompleteDelegate(delegate CancelFindOnlineGamesCompleteDelegate) +{ + // End:0x3E + if(CancelFindOnlineGamesCompleteDelegates.Find(CancelFindOnlineGamesCompleteDelegate) == -1) + { + CancelFindOnlineGamesCompleteDelegates[CancelFindOnlineGamesCompleteDelegates.Length] = CancelFindOnlineGamesCompleteDelegate; + } + //return; +} + +function ClearCancelFindOnlineGamesCompleteDelegate(delegate CancelFindOnlineGamesCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = CancelFindOnlineGamesCompleteDelegates.Find(CancelFindOnlineGamesCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + CancelFindOnlineGamesCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UOnlineGameInterfaceImpl::execFreeSearchResults(FFrame&, void* const) +native function bool FreeSearchResults(OnlineGameSearch Search); + +// Export UOnlineGameInterfaceImpl::execJoinOnlineGame(FFrame&, void* const) +native function bool JoinOnlineGame(byte PlayerNum, name SessionName, const out OnlineGameSearchResult DesiredGame); + +function bool JoinOnlineGameBySessionHandle(byte PlayerNum, name SessionName, const string InSessionGuid) +{ + //return ReturnValue; +} + +// Export UOnlineGameInterfaceImpl::execOnMapChangePending(FFrame&, void* const) +native function OnMapChangePending(); + +// Export UOnlineGameInterfaceImpl::execOnMapChangeComplete(FFrame&, void* const) +native function OnMapChangeComplete(); + +function bool JoinOnlineGameByMatchingParams(QWord RoomId, out OnlineGameSettings JoinedGameSettings) +{ + //return ReturnValue; +} + +function bool IsJoinOperationInProgress() +{ + return false; + //return ReturnValue; +} + +function bool SetRankedReadyStatus(bool bReady) +{ + //return ReturnValue; +} + +function bool IsCurrentRoomOwner() +{ + return false; + //return ReturnValue; +} + +delegate OnJoinOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddJoinOnlineGameCompleteDelegate(delegate JoinOnlineGameCompleteDelegate) +{ + // End:0x3E + if(JoinOnlineGameCompleteDelegates.Find(JoinOnlineGameCompleteDelegate) == -1) + { + JoinOnlineGameCompleteDelegates[JoinOnlineGameCompleteDelegates.Length] = JoinOnlineGameCompleteDelegate; + } + //return; +} + +function ClearJoinOnlineGameCompleteDelegate(delegate JoinOnlineGameCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = JoinOnlineGameCompleteDelegates.Find(JoinOnlineGameCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + JoinOnlineGameCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +function bool CreateOnlineGameWithParty(byte ScoutingPlayerNum, name SessionName, OnlineGameSettings NewGameSettings) +{ + return false; + //return ReturnValue; +} + +delegate OnCreateOnlineGameWithPartyComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddCreateOnlineGameWithPartyCompleteDelegate(delegate CreateOnlineGameWithPartyCompleteDelegate) +{ + //return; +} + +function ClearCreateOnlineGameWithPartyCompleteDelegate(delegate CreateOnlineGameWithPartyCompleteDelegate) +{ + //return; +} + +function bool MatchmakeOnlineGameWithParty(byte ScoutingPlayerNum, name SessionName, OnlineGameSettings NewGameSettings) +{ + return false; + //return ReturnValue; +} + +delegate OnMatchmakeOnlineGameWithPartyComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddMatchmakeOnlineGameWithPartyCompleteDelegate(delegate MatchmakeOnlineGameWithPartyCompleteDelegate) +{ + //return; +} + +function ClearMatchmakeOnlineGameWithPartyCompleteDelegate(delegate MatchmakeOnlineGameWithPartyCompleteDelegate) +{ + //return; +} + +function bool IsHostOfSession(name SessionName) +{ + return false; + //return ReturnValue; +} + +function bool InitiatedSessionSearch(name SessionName) +{ + return false; + //return ReturnValue; +} + +function bool CreateOnlineSessionWithTemplate(byte ScoutingPlayerNum, name SessionName, OnlineGameSettings NewGameSettings, string TemplateName, string SessionKeyword) +{ + return false; + //return ReturnValue; +} + +function bool AddSessionMemberByString(byte ScoutingPlayerNum, name SessionName, string Member) +{ + return false; + //return ReturnValue; +} + +function bool AddSessionMember(byte ScoutingPlayerNum, name SessionName, UniqueNetId Member) +{ + return false; + //return ReturnValue; +} + +function bool AddSessionMembers(byte ScoutingPlayerNum, name SessionName, array Members) +{ + return false; + //return ReturnValue; +} + +delegate OnAddSessionMemberComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddAddSessionMemberCompleteDelegate(delegate AddSessionMemberCompleteDelegate) +{ + //return; +} + +function ClearAddSessionMemberCompleteDelegate(delegate AddSessionMemberCompleteDelegate) +{ + //return; +} + +delegate OnMultiplayerSessionChange(name SessionName, SessionUpdateInfo SessionChanges) +{ + //return; +} + +function AddMultiplayerSessionChangeDelegate(delegate MultiplayerSessionChangeDelegate) +{ + //return; +} + +function ClearMultiplayerSessionChangeDelegate(delegate MultiplayerSessionChangeDelegate) +{ + //return; +} + +function bool SetCustomSessionProperty(name SessionName, string PropertyName, string PropertyValue) +{ + //return ReturnValue; +} + +function bool DeleteCustomSessionProperty(name SessionName, string PropertyName) +{ + //return ReturnValue; +} + +function bool SetCustomMemberProperty(name SessionName, string PropertyName, string PropertyValue) +{ + //return ReturnValue; +} + +function bool DeleteCustomMemberProperty(name SessionName, string PropertyName) +{ + //return ReturnValue; +} + +function bool UpdateSessionProperties(byte ScoutingUserNum, name SessionName) +{ + //return ReturnValue; +} + +delegate OnUpdateSessionPropertiesComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddUpdateSessionPropertiesCompleteDelegate(delegate UpdateSessionPropertiesCompleteDelegate) +{ + //return; +} + +function ClearUpdateSessionPropertiesCompleteDelegate(delegate UpdateSessionPropertiesCompleteDelegate) +{ + //return; +} + +delegate OnGameSessionReady(name SessionName) +{ + //return; +} + +function AddGameSessionReadyDelegate(delegate GameSessionReadyDelegate) +{ + //return; +} + +function ClearGameSessionReadyDelegate(delegate GameSessionReadyDelegate) +{ + //return; +} + +function AcceptPendingGameSession(name SessionName) +{ + //return; +} + +delegate OnAcceptPendingGameSessionComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddAcceptPendingGameSessionCompleteDelegate(delegate AcceptPendingGameSessionCompleteDelegate) +{ + //return; +} + +function ClearAcceptPendingGameSessionCompleteDelegate(delegate AcceptPendingGameSessionCompleteDelegate) +{ + //return; +} + +delegate OnGamePlayersChanged(name SessionName, array Players) +{ + //return; +} + +function AddGamePlayersChangedDelegate(delegate GamePlayersChangedDelegate) +{ + //return; +} + +function ClearGamePlayersChangedDelegate(delegate GamePlayersChangedDelegate) +{ + //return; +} + +delegate OnMatchStatusChanged(name SessionName, byte Status) +{ + //return; +} + +function AddMatchStatusChangedDelegate(delegate MatchStatusChangedDelegate) +{ + //return; +} + +function ClearMatchStatusChangedDelegate(delegate MatchStatusChangedDelegate) +{ + //return; +} + +function bool LeaveOnlineSession(byte LocalPlayerNum, name SessionName, optional bool bClearSessionIfHost = false) +{ + return false; + //return ReturnValue; +} + +function LeaveAllOnlineSessions(optional bool bClearSessionIfHost = false) +{ + //return; +} + +function bool QuerySessionsForUser(byte LocalPlayerNum) +{ + return false; + //return ReturnValue; +} + +function bool QuerySessionsByKeyword(byte LocalPlayerNum, string Keyword, OnlineGameSearch SearchSettings) +{ + return false; + //return ReturnValue; +} + +delegate OnQuerySessionsForUserComplete(byte LocalPlayerNum, bool bWasSuccessful) +{ + //return; +} + +function AddQuerySessionsForUserCompleteDelegate(delegate QuerySessionsForUserCompleteDelegate) +{ + //return; +} + +function ClearQuerySessionsForUserCompleteDelegate(delegate QuerySessionsForUserCompleteDelegate) +{ + //return; +} + +// Export UOnlineGameInterfaceImpl::execGetResolvedConnectString(FFrame&, void* const) +native function bool GetResolvedConnectString(name SessionName, out string ConnectInfo); + +function bool RegisterPlayer(name SessionName, UniqueNetId PlayerID, bool bWasInvited) +{ + //return ReturnValue; +} + +function bool RegisterPlayers(name SessionName, const out array Players) +{ + //return ReturnValue; +} + +delegate OnRegisterPlayerComplete(name SessionName, UniqueNetId PlayerID, bool bWasSuccessful) +{ + //return; +} + +function AddRegisterPlayerCompleteDelegate(delegate RegisterPlayerCompleteDelegate) +{ + //return; +} + +function ClearRegisterPlayerCompleteDelegate(delegate RegisterPlayerCompleteDelegate) +{ + //return; +} + +function bool UnregisterPlayer(name SessionName, UniqueNetId PlayerID) +{ + //return ReturnValue; +} + +function bool UnregisterPlayers(name SessionName, const out array Players) +{ + //return ReturnValue; +} + +delegate OnUnregisterPlayerComplete(name SessionName, UniqueNetId PlayerID, bool bWasSuccessful) +{ + //return; +} + +function AddUnregisterPlayerCompleteDelegate(delegate UnregisterPlayerCompleteDelegate) +{ + //return; +} + +function ClearUnregisterPlayerCompleteDelegate(delegate UnregisterPlayerCompleteDelegate) +{ + //return; +} + +delegate OnRetrievedGameSettingsForIP(bool bSuccessful, const out OnlineGameSearchResult ConnectResult) +{ + //return; +} + +function AddOnRetrieveGameSettingsForIPDelegate(delegate NewRetrieveIPDelegate) +{ + //return; +} + +function ClearOnRetrieveGameSettingsForIPDelegate(delegate RetrieveIPDelegate) +{ + //return; +} + +function RetrieveGameSettingsForIP(string IPAddress) +{ + //return; +} + +// Export UOnlineGameInterfaceImpl::execStartOnlineGame(FFrame&, void* const) +native function bool StartOnlineGame(name SessionName); + +delegate OnStartOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddStartOnlineGameCompleteDelegate(delegate StartOnlineGameCompleteDelegate) +{ + // End:0x3E + if(StartOnlineGameCompleteDelegates.Find(StartOnlineGameCompleteDelegate) == -1) + { + StartOnlineGameCompleteDelegates[StartOnlineGameCompleteDelegates.Length] = StartOnlineGameCompleteDelegate; + } + //return; +} + +function ClearStartOnlineGameCompleteDelegate(delegate StartOnlineGameCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = StartOnlineGameCompleteDelegates.Find(StartOnlineGameCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + StartOnlineGameCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UOnlineGameInterfaceImpl::execEndOnlineGame(FFrame&, void* const) +native function bool EndOnlineGame(name SessionName); + +delegate OnEndOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddEndOnlineGameCompleteDelegate(delegate EndOnlineGameCompleteDelegate) +{ + // End:0x3E + if(EndOnlineGameCompleteDelegates.Find(EndOnlineGameCompleteDelegate) == -1) + { + EndOnlineGameCompleteDelegates[EndOnlineGameCompleteDelegates.Length] = EndOnlineGameCompleteDelegate; + } + //return; +} + +function ClearEndOnlineGameCompleteDelegate(delegate EndOnlineGameCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = EndOnlineGameCompleteDelegates.Find(EndOnlineGameCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + EndOnlineGameCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +function bool RegisterForArbitration(name SessionName) +{ + //return ReturnValue; +} + +delegate OnArbitrationRegistrationComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddArbitrationRegistrationCompleteDelegate(delegate ArbitrationRegistrationCompleteDelegate) +{ + //return; +} + +function ClearArbitrationRegistrationCompleteDelegate(delegate ArbitrationRegistrationCompleteDelegate) +{ + //return; +} + +function array GetArbitratedPlayers(name SessionName) +{ + //return ReturnValue; +} + +delegate OnGameInviteAccepted(const out OnlineGameSearchResult InviteResult) +{ + //return; +} + +function AddGameInviteAcceptedDelegate(byte LocalUserNum, delegate GameInviteAcceptedDelegate) +{ + //return; +} + +function ClearGameInviteAcceptedDelegate(byte LocalUserNum, delegate GameInviteAcceptedDelegate) +{ + //return; +} + +function bool AcceptGameInvite(byte LocalUserNum, name SessionName) +{ + //return ReturnValue; +} + +function bool RecalculateSkillRating(name SessionName, const out array Players) +{ + //return ReturnValue; +} + +delegate OnRecalculateSkillRatingComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddRecalculateSkillRatingCompleteDelegate(delegate RecalculateSkillRatingCompleteDelegate) +{ + //return; +} + +function ClearRecalculateSkillRatingCompleteDelegate(delegate RecalculateSkillRatingGameCompleteDelegate) +{ + //return; +} + +function bool MigrateOnlineGame(byte HostingPlayerNum, name SessionName) +{ + //return ReturnValue; +} + +delegate OnMigrateOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddMigrateOnlineGameCompleteDelegate(delegate MigrateOnlineGameCompleteDelegate) +{ + // End:0x36 + if(MigrateOnlineGameCompleteDelegates.Find(MigrateOnlineGameCompleteDelegate) == -1) + { + MigrateOnlineGameCompleteDelegates.AddItem(MigrateOnlineGameCompleteDelegate); + } + //return; +} + +function ClearMigrateOnlineGameCompleteDelegate(delegate MigrateOnlineGameCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = MigrateOnlineGameCompleteDelegates.Find(MigrateOnlineGameCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + MigrateOnlineGameCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +function bool JoinMigratedOnlineGame(byte PlayerNum, name SessionName, const out OnlineGameSearchResult DesiredGame) +{ + //return ReturnValue; +} + +delegate OnJoinMigratedOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + //return; +} + +function AddJoinMigratedOnlineGameCompleteDelegate(delegate JoinMigratedOnlineGameCompleteDelegate) +{ + // End:0x36 + if(JoinMigratedOnlineGameCompleteDelegates.Find(JoinMigratedOnlineGameCompleteDelegate) == -1) + { + JoinMigratedOnlineGameCompleteDelegates.AddItem(JoinMigratedOnlineGameCompleteDelegate); + } + //return; +} + +function ClearJoinMigratedOnlineGameCompleteDelegate(delegate JoinMigratedOnlineGameCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = JoinMigratedOnlineGameCompleteDelegates.Find(JoinMigratedOnlineGameCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + JoinMigratedOnlineGameCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +function bool QueryNonAdvertisedData(int StartAt, int NumberToQuery) +{ + //return ReturnValue; +} + +// Export UOnlineGameInterfaceImpl::execReadPlatformSpecificSessionInfo(FFrame&, void* const) +native function bool ReadPlatformSpecificSessionInfo(const out OnlineGameSearchResult DesiredGame, out byte PlatformSpecificInfo[80]); + +// Export UOnlineGameInterfaceImpl::execReadPlatformSpecificSessionInfoBySessionName(FFrame&, void* const) +native function bool ReadPlatformSpecificSessionInfoBySessionName(name SessionName, out byte PlatformSpecificInfo[80]); + +// Export UOnlineGameInterfaceImpl::execBindPlatformSpecificSessionToSearch(FFrame&, void* const) +native function bool BindPlatformSpecificSessionToSearch(byte SearchingPlayerNum, OnlineGameSearch SearchSettings, byte PlatformSpecificInfo[80]); + +delegate OnQosStatusChanged(int NumComplete, int NumTotal) +{ + //return; +} + +function AddQosStatusChangedDelegate(delegate QosStatusChangedDelegate) +{ + //return; +} + +function ClearQosStatusChangedDelegate(delegate QosStatusChangedDelegate) +{ + //return; +} + +function bool GetNumberOfCurrentPlayers() +{ + //return ReturnValue; +} + +function int GetNumberOfCurrentPlayersCached() +{ + //return ReturnValue; +} + +delegate OnGetNumberOfCurrentPlayersComplete(int TotalPlayers) +{ + //return; +} + +function AddGetNumberOfCurrentPlayersCompleteDelegate(delegate GetNumberOfCurrentPlayersCompleteDelegate) +{ + //return; +} + +function ClearGetNumberOfCurrentPlayersCompleteDelegate(delegate GetNumberOfCurrentPlayersCompleteDelegate) +{ + //return; +} + +function bool SendPlayerList(const array Players) +{ + //return ReturnValue; +} + +function string GetRoomId() +{ + //return ReturnValue; +} + +delegate OnGetRoomIdFromTitleService(QWord RoomId) +{ + //return; +} + +function GetRoomIdFromTitleService(QWord DataId) +{ + //return; +} + +function GetRoomIdFromSessionId(string SessionId) +{ + //return; +} + +function AddGetRoomIdFromTitleServiceDelegate(delegate InDelegate) +{ + //return; +} + +function ClearGetRoomIdFromTitleServiceDelegate(delegate InDelegate) +{ + //return; +} + +function bool IsAllowedToNetworkHost() +{ + return true; + //return ReturnValue; +} + +function RunBandwidthTest() +{ + //return; +} + +function bool GetCurrentSessionMemberInfoAsync(byte LocalUserNum, name SessionName) +{ + //return ReturnValue; +} + +function bool GetCurrentSessionMemberInfo(name SessionName, out array OutMemberInfo) +{ + //return ReturnValue; +} + +delegate OnGetSessionMemberInfoComplete(array OutMemberInfo, bool bWasSuccessful) +{ + //return; +} + +function AddGetSessionMemberInfoCompleteDelegate(delegate GetSessionMemberInfoCompleteDelegate) +{ + //return; +} + +function ClearGetSessionMemberInfoCompleteDelegate(delegate GetSessionMemberInfoCompleteDelegate) +{ + //return; +} + +function bool GetUserConnectionInfoAsync(array UserNames) +{ + //return ReturnValue; +} + +delegate OnGetUserConnectionInfoComplete(array OutMemberInfo, bool bWasSuccessful) +{ + //return; +} + +function AddGetUserConnectionInfoCompleteDelegate(delegate GetUserConnectionInfoCompleteDelegate) +{ + //return; +} + +function ClearGetUserConnectionInfoCompleteDelegate(delegate GetUserConnectionInfoCompleteDelegate) +{ + //return; +} + +defaultproperties +{ + LanAnnouncePort=14001 + LanQueryTimeout=5.0000000 +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/OnlineImageDownloaderWeb.uc b/exported/IpDrv/Classes/OnlineImageDownloaderWeb.uc new file mode 100755 index 00000000..7c76062e --- /dev/null +++ b/exported/IpDrv/Classes/OnlineImageDownloaderWeb.uc @@ -0,0 +1,323 @@ +class OnlineImageDownloaderWeb extends Object + config(Engine); + +enum EOnlineImageDownloadState +{ + PIDS_NotStarted, // 0 + PIDS_Downloading, // 1 + PIDS_Succeeded, // 2 + PIDS_Failed, // 3 + PIDS_MAX // 4 +}; + +struct OnlineImageDownload +{ + var string URL; + var HttpRequestInterface HTTPRequest; + var OnlineImageDownloaderWeb.EOnlineImageDownloadState State; + var bool bPendingRemoval; + var Texture2DDynamic Texture; + + structdefaultproperties + { + URL="" + HTTPRequest=none + State=EOnlineImageDownloadState.PIDS_NotStarted + bPendingRemoval=false + Texture=none + } +}; + +var array DownloadImages; +var config int MaxSimultaneousDownloads; +//var delegate __OnOnlineImageDownloaded__Delegate; + +delegate OnOnlineImageDownloaded(OnlineImageDownload CachedEntry) +{ + //return; +} + +function Texture GetOnlineImageTexture(string URL) +{ + local int FoundIdx; + + FoundIdx = DownloadImages.Find('URL', URL); + // End:0x96 + if((FoundIdx != -1) && int(DownloadImages[FoundIdx].State) == int(2)) + { + return DownloadImages[FoundIdx].Texture; + } + return none; + //return ReturnValue; +} + +private final function int GetOpenDownloadImagesSlot() +{ + local int FoundIdx; + + FoundIdx = DownloadImages.Find('bPendingRemoval', true); + // End:0x60 + if(FoundIdx == -1) + { + FoundIdx = DownloadImages.Length; + DownloadImages.Length = DownloadImages.Length + 1; + } + return FoundIdx; + //return ReturnValue; +} + +function RequestOnlineImages(array URLs) +{ + local string URL; + local array UrlPieces, FilePieces; + local string extension; + local array ImageData; + local int FoundIdx, Idx; + + Idx = 0; + J0x0B: + + // End:0x93 [Loop If] + if(Idx < DownloadImages.Length) + { + DownloadImages[Idx].bPendingRemoval = URLs.Find(DownloadImages[Idx].URL) == -1; + Idx++; + // [Loop Continue] + goto J0x0B; + } + // End:0x528 + foreach URLs(URL) + { + FoundIdx = DownloadImages.Find('URL', URL); + // End:0x10F + if(FoundIdx != -1) + { + OnOnlineImageDownloaded(DownloadImages[FoundIdx]); + } + else + { + ParseStringIntoArray(URL, UrlPieces, "/", true); + // End:0x3F1 + if(Class'IpDrv.OnlineImageDownloaderWebHelper'.static.LoadImageFromTempDir(UrlPieces[UrlPieces.Length - 1], ImageData)) + { + FoundIdx = GetOpenDownloadImagesSlot(); + DownloadImages[FoundIdx].URL = URL; + DownloadImages[FoundIdx].HTTPRequest = none; + DownloadImages[FoundIdx].State = 2; + DownloadImages[FoundIdx].bPendingRemoval = false; + // End:0x2A7 + if(DownloadImages[FoundIdx].Texture == none) + { + DownloadImages[FoundIdx].Texture = Class'Engine.Texture2DDynamic'.static.Create(50, 50); + } + ParseStringIntoArray(UrlPieces[UrlPieces.Length - 1], FilePieces, ".", true); + extension = FilePieces[FilePieces.Length - 1]; + // End:0x368 + if((extension ~= "jpeg") || extension ~= "jpg") + { + DownloadImages[FoundIdx].Texture.UpdateMipFromJPEG(0, ImageData); + } + else + { + // End:0x3C4 + if(extension ~= "png") + { + DownloadImages[FoundIdx].Texture.UpdateMipFromPNG(0, ImageData); + } + else + { + continue; + goto J0x528; + } + } + OnOnlineImageDownloaded(DownloadImages[FoundIdx]); + } + else + { + FoundIdx = GetOpenDownloadImagesSlot(); + DownloadImages[FoundIdx].URL = URL; + DownloadImages[FoundIdx].HTTPRequest = none; + DownloadImages[FoundIdx].State = 0; + DownloadImages[FoundIdx].bPendingRemoval = false; + // End:0x527 + if(DownloadImages[FoundIdx].Texture == none) + { + DownloadImages[FoundIdx].Texture = Class'Engine.Texture2DDynamic'.static.Create(50, 50); + } + } + } + } + J0x528: + + Idx = 0; + J0x534: + + // End:0x59B [Loop If] + if(Idx < DownloadImages.Length) + { + // End:0x58D + if(DownloadImages[Idx].bPendingRemoval) + { + DownloadImages.Remove(Idx--, 1); + } + Idx++; + // [Loop Continue] + goto J0x534; + } + DownloadNextImage(); + //return; +} + +function int GetNumPendingDownloads() +{ + local int Idx, Count; + + Idx = 0; + J0x0B: + + // End:0x6D [Loop If] + if(Idx < DownloadImages.Length) + { + // End:0x5F + if(int(DownloadImages[Idx].State) == int(1)) + { + Count++; + } + Idx++; + // [Loop Continue] + goto J0x0B; + } + return Count; + //return ReturnValue; +} + +function ClearDownloads(array URLs) +{ + local int Idx; + + Idx = 0; + J0x0B: + + // End:0x85 [Loop If] + if(Idx < DownloadImages.Length) + { + // End:0x77 + if(URLs.Find(DownloadImages[Idx].URL) != -1) + { + DownloadImages.Remove(Idx--, 1); + } + Idx++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function ClearAllDownloads() +{ + DownloadImages.Length = 0; + //return; +} + +private final function DownloadNextImage() +{ + local int Idx, PendingDownloads; + + PendingDownloads = GetNumPendingDownloads(); + Idx = 0; + J0x1F: + + // End:0x265 [Loop If] + if(Idx < DownloadImages.Length) + { + // End:0x51 + if(PendingDownloads >= MaxSimultaneousDownloads) + { + // [Explicit Break] + goto J0x265; + } + // End:0x257 + if(int(DownloadImages[Idx].State) == int(0)) + { + DownloadImages[Idx].HTTPRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x257 + if(DownloadImages[Idx].HTTPRequest != none) + { + DownloadImages[Idx].HTTPRequest.SetVerb("GET"); + DownloadImages[Idx].HTTPRequest.SetURL(DownloadImages[Idx].URL); + DownloadImages[Idx].HTTPRequest.SetProcessRequestCompleteDelegate(OnDownloadComplete); + // End:0x257 + if(DownloadImages[Idx].HTTPRequest.ProcessRequest()) + { + DownloadImages[Idx].State = 1; + PendingDownloads++; + } + } + } + Idx++; + // [Loop Continue] + goto J0x1F; + } + J0x265: + + //return; +} + +private final function OnDownloadComplete(HttpRequestInterface OriginalRequest, HttpResponseInterface Response, bool bDidSucceed) +{ + local int FoundIdx; + local array ImageData; + local array Pieces; + + FoundIdx = DownloadImages.Find('HTTPRequest', OriginalRequest); + // End:0x305 + if(FoundIdx != -1) + { + // End:0x28E + if((bDidSucceed && Response != none) && Response.GetResponseCode() == 200) + { + DownloadImages[FoundIdx].State = 2; + Response.GetContent(ImageData); + ParseStringIntoArray(OriginalRequest.GetURL(), Pieces, "/", true); + // End:0x14D + if(!Class'IpDrv.OnlineImageDownloaderWebHelper'.static.SaveImageToTempDir(Pieces[Pieces.Length - 1], ImageData)) + { + } + // End:0x1D8 + if(InStr(Response.GetHeader("Content-Type"), "jpeg", false, true) != -1) + { + DownloadImages[FoundIdx].Texture.UpdateMipFromJPEG(0, ImageData); + } + else + { + // End:0x262 + if(InStr(Response.GetHeader("Content-Type"), "png", false, true) != -1) + { + DownloadImages[FoundIdx].Texture.UpdateMipFromPNG(0, ImageData); + } + else + { + DownloadImages[FoundIdx].State = 3; + } + } + } + else + { + DownloadImages[FoundIdx].State = 3; + } + OnOnlineImageDownloaded(DownloadImages[FoundIdx]); + DownloadImages[FoundIdx].HTTPRequest = none; + } + DownloadNextImage(); + //return; +} + +function DebugDraw(Canvas Canvas) +{ + //return; +} + +defaultproperties +{ + MaxSimultaneousDownloads=8 +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/OnlineImageDownloaderWebHelper.uc b/exported/IpDrv/Classes/OnlineImageDownloaderWebHelper.uc new file mode 100755 index 00000000..114d3e5c --- /dev/null +++ b/exported/IpDrv/Classes/OnlineImageDownloaderWebHelper.uc @@ -0,0 +1,8 @@ +class OnlineImageDownloaderWebHelper extends Object + native; + +// Export UOnlineImageDownloaderWebHelper::execLoadImageFromTempDir(FFrame&, void* const) +native static function bool LoadImageFromTempDir(const string Filename, out array ImageData); + +// Export UOnlineImageDownloaderWebHelper::execSaveImageToTempDir(FFrame&, void* const) +native static function bool SaveImageToTempDir(const string Filename, const array ImageData); diff --git a/exported/IpDrv/Classes/OnlineNewsInterfaceMcp.uc b/exported/IpDrv/Classes/OnlineNewsInterfaceMcp.uc new file mode 100755 index 00000000..234e988a --- /dev/null +++ b/exported/IpDrv/Classes/OnlineNewsInterfaceMcp.uc @@ -0,0 +1,84 @@ +class OnlineNewsInterfaceMcp extends MCPBase + native + config(Engine) + implements(OnlineNewsInterface); + +struct native NewsCacheEntry +{ + var const string NewsUrl; + var OnlineSubsystem.EOnlineEnumerationReadState ReadState; + var const OnlineSubsystem.EOnlineNewsType NewsType; + var string NewsItem; + var const float TimeOut; + var const bool bIsUnicode; + var native const Pointer HttpDownloader; + + structdefaultproperties + { + NewsUrl="" + ReadState=EOnlineEnumerationReadState.OERS_NotStarted + NewsType=EOnlineNewsType.ONT_Unknown + NewsItem="" + TimeOut=0.0000000 + bIsUnicode=false + } +}; + +var config array NewsItems; +var array< delegate > ReadNewsDelegates; +var transient bool bNeedsTicking; +//var delegate __OnReadNewsCompleted__Delegate; + +// Export UOnlineNewsInterfaceMcp::execReadNews(FFrame&, void* const) +native function bool ReadNews(byte LocalUserNum, OnlineSubsystem.EOnlineNewsType NewsType); + +delegate OnReadNewsCompleted(bool bWasSuccessful, OnlineSubsystem.EOnlineNewsType NewsType) +{ + //return; +} + +function AddReadNewsCompletedDelegate(delegate ReadNewsDelegate) +{ + // End:0x3E + if(ReadNewsDelegates.Find(ReadNewsDelegate) == -1) + { + ReadNewsDelegates[ReadNewsDelegates.Length] = ReadNewsDelegate; + } + //return; +} + +function ClearReadNewsCompletedDelegate(delegate ReadGameNewsDelegate) +{ + local int RemoveIndex; + + RemoveIndex = ReadNewsDelegates.Find(ReadGameNewsDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + ReadNewsDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +function string GetNews(byte LocalUserNum, OnlineSubsystem.EOnlineNewsType NewsType) +{ + local int NewsIndex; + + NewsIndex = 0; + J0x0B: + + // End:0x90 [Loop If] + if(NewsIndex < NewsItems.Length) + { + // End:0x82 + if(int(NewsItems[NewsIndex].NewsType) == int(NewsType)) + { + return NewsItems[NewsIndex].NewsItem; + } + NewsIndex++; + // [Loop Continue] + goto J0x0B; + } + return ""; + //return ReturnValue; +} diff --git a/exported/IpDrv/Classes/OnlinePlaylistManager.uc b/exported/IpDrv/Classes/OnlinePlaylistManager.uc new file mode 100755 index 00000000..0ca10285 --- /dev/null +++ b/exported/IpDrv/Classes/OnlinePlaylistManager.uc @@ -0,0 +1,576 @@ +class OnlinePlaylistManager extends Object + native + config(Playlist); + +const PLAYER_MATCH = 0; +const RANKED_MATCH = 1; +const REC_MATCH = 2; +const PRIVATE_MATCH = 3; + +struct native ConfiguredGameSetting +{ + var int GameSettingId; + var string GameSettingsClassName; + var string URL; + var transient OnlineGameSettings GameSettings; + + structdefaultproperties + { + GameSettingId=0 + GameSettingsClassName="" + URL="" + GameSettings=none + } +}; + +struct native InventorySwap +{ + var name Original; + var string SwapTo; + + structdefaultproperties + { + Original="None" + SwapTo="" + } +}; + +struct native Playlist +{ + var array ConfiguredGames; + var int PlaylistId; + var int LoadBalanceId; + var string LocalizationString; + var array ContentIds; + var int TeamSize; + var int TeamCount; + var int MaxPartySize; + var string Name; + var string URL; + var int MatchType; + var bool bDisableDedicatedServerSearches; + var array MapCycle; + var array InventorySwaps; + + structdefaultproperties + { + ConfiguredGames=none + PlaylistId=0 + LoadBalanceId=0 + LocalizationString="" + ContentIds=none + TeamSize=0 + TeamCount=0 + MaxPartySize=0 + Name="" + URL="" + MatchType=0 + bDisableDedicatedServerSearches=false + MapCycle=none + InventorySwaps=none + } +}; + +struct native PlaylistPopulation +{ + var int PlaylistId; + var int WorldwideTotal; + var int RegionTotal; + + structdefaultproperties + { + PlaylistId=0 + WorldwideTotal=0 + RegionTotal=0 + } +}; + +var private native const noexport Pointer VfTable_FTickableObject; +var config array Playlists; +var array PlaylistFileNames; +var config array DatastoresToRefresh; +var int DownloadCount; +var int SuccessfulCount; +var config int VersionNumber; +var config array PopulationData; +var int WorldwideTotalPlayers; +var int RegionTotalPlayers; +var transient OnlineTitleFileInterface TitleFileInterface; +var string PopulationFileName; +var transient float NextPlaylistPopulationUpdateTime; +var config float PlaylistPopulationUpdateInterval; +var config int MinPlaylistIdToReport; +var transient int CurrentPlaylistId; +var config name EventsInterfaceName; +var config int DataCenterId; +var string DataCenterFileName; +var transient float LastPlaylistDownloadTime; +var config float PlaylistRefreshInterval; +//var delegate __OnReadPlaylistComplete__Delegate; +//var delegate __OnPlaylistPopulationDataUpdated__Delegate; + +delegate OnReadPlaylistComplete(bool bWasSuccessful) +{ + //return; +} + +function DownloadPlaylist() +{ + local OnlineSubsystem OnlineSub; + local int FileIndex; + + // End:0x17 + if(ShouldRefreshPlaylists()) + { + Reset(); + } + // End:0x202 + if(SuccessfulCount == 0) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x1E1 + if((OnlineSub != none) && OnlineSub.Patcher != none) + { + OnlineSub.Patcher.AddReadFileDelegate(OnReadTitleFileComplete); + DownloadCount = 0; + SuccessfulCount = 0; + // End:0xF9 + if(PlaylistFileNames.Length == 0) + { + DetermineFilesToDownload(); + } + FileIndex = 0; + J0x104: + + // End:0x171 [Loop If] + if(FileIndex < PlaylistFileNames.Length) + { + OnlineSub.Patcher.AddFileToDownload(PlaylistFileNames[FileIndex]); + FileIndex++; + // [Loop Continue] + goto J0x104; + } + // End:0x1DE + if(LastPlaylistDownloadTime == float(0)) + { + // End:0x1CB + if(int(Class'Engine.WorldInfo'.static.GetWorldInfo().NetMode) != int(NM_DedicatedServer)) + { + ReadDataCenterId(); + } + NextPlaylistPopulationUpdateTime = PlaylistPopulationUpdateInterval; + } + } + else + { + FinalizePlaylistObjects(); + OnReadPlaylistComplete(true); + } + } + else + { + OnReadPlaylistComplete(SuccessfulCount == DownloadCount); + } + //return; +} + +// Export UOnlinePlaylistManager::execDetermineFilesToDownload(FFrame&, void* const) +native function DetermineFilesToDownload(); + +// Export UOnlinePlaylistManager::execShouldRefreshPlaylists(FFrame&, void* const) +native function bool ShouldRefreshPlaylists(); + +function OnReadTitleFileComplete(bool bWasSuccessful, string Filename) +{ + local OnlineSubsystem OnlineSub; + local int FileIndex; + + FileIndex = 0; + J0x0B: + + // End:0x177 [Loop If] + if(FileIndex < PlaylistFileNames.Length) + { + // End:0x169 + if(PlaylistFileNames[FileIndex] == Filename) + { + DownloadCount++; + SuccessfulCount += int(bWasSuccessful); + // End:0x169 + if(DownloadCount == PlaylistFileNames.Length) + { + // End:0x95 + if(SuccessfulCount != DownloadCount) + { + } + FinalizePlaylistObjects(); + OnReadPlaylistComplete(SuccessfulCount == DownloadCount); + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x169 + if((OnlineSub != none) && OnlineSub.Patcher != none) + { + OnlineSub.Patcher.ClearReadFileDelegate(OnReadTitleFileComplete); + } + } + } + FileIndex++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +// Export UOnlinePlaylistManager::execFinalizePlaylistObjects(FFrame&, void* const) +native function FinalizePlaylistObjects(); + +function OnlineGameSettings GetGameSettings(int PlaylistId, int GameSettingsId) +{ + local int PlaylistIndex, GameIndex; + + PlaylistIndex = Playlists.Find('PlaylistId', PlaylistId); + // End:0x11F + if(PlaylistIndex != -1) + { + GameIndex = 0; + J0x47: + + // End:0x11F [Loop If] + if(GameIndex < Playlists[PlaylistIndex].ConfiguredGames.Length) + { + // End:0x111 + if(Playlists[PlaylistIndex].ConfiguredGames[GameIndex].GameSettingId == GameSettingsId) + { + return Playlists[PlaylistIndex].ConfiguredGames[GameIndex].GameSettings; + } + GameIndex++; + // [Loop Continue] + goto J0x47; + } + } + return none; + //return ReturnValue; +} + +function bool HasAnyGameSettings(int PlaylistId) +{ + local int PlaylistIndex, GameIndex; + + PlaylistIndex = Playlists.Find('PlaylistId', PlaylistId); + // End:0xD5 + if(PlaylistIndex != -1) + { + GameIndex = 0; + J0x47: + + // End:0xD5 [Loop If] + if(GameIndex < Playlists[PlaylistIndex].ConfiguredGames.Length) + { + // End:0xC7 + if(Playlists[PlaylistIndex].ConfiguredGames[GameIndex].GameSettings != none) + { + return true; + } + GameIndex++; + // [Loop Continue] + goto J0x47; + } + } + return false; + //return ReturnValue; +} + +function bool PlaylistSupportsDedicatedServers(int PlaylistId) +{ + local int PlaylistIndex; + + PlaylistIndex = Playlists.Find('PlaylistId', PlaylistId); + // End:0x66 + if(PlaylistIndex != -1) + { + return !Playlists[PlaylistIndex].bDisableDedicatedServerSearches; + } + return false; + //return ReturnValue; +} + +function GetTeamInfoFromPlaylist(int PlaylistId, out int TeamSize, out int TeamCount, out int MaxPartySize) +{ + local int PlaylistIndex; + + TeamSize = 0; + TeamCount = 0; + PlaylistIndex = Playlists.Find('PlaylistId', PlaylistId); + // End:0x104 + if(PlaylistIndex != -1) + { + TeamSize = Playlists[PlaylistIndex].TeamSize; + TeamCount = Playlists[PlaylistIndex].TeamCount; + MaxPartySize = Playlists[PlaylistIndex].MaxPartySize; + // End:0x104 + if(MaxPartySize == 0) + { + MaxPartySize = TeamSize; + } + } + //return; +} + +function GetLoadBalanceIdFromPlaylist(int PlaylistId, out int LoadBalanceId) +{ + local int PlaylistIndex; + + LoadBalanceId = 0; + PlaylistIndex = Playlists.Find('PlaylistId', PlaylistId); + // End:0x77 + if(PlaylistIndex != -1) + { + LoadBalanceId = Playlists[PlaylistIndex].LoadBalanceId; + } + //return; +} + +function bool IsPlaylistArbitrated(int PlaylistId) +{ + local int PlaylistIndex; + + PlaylistIndex = Playlists.Find('PlaylistId', PlaylistId); + // End:0x66 + if(PlaylistIndex != -1) + { + return Playlists[PlaylistIndex].MatchType == 1; + } + return false; + //return ReturnValue; +} + +function int GetMatchType(int PlaylistId) +{ + local int PlaylistIndex; + + PlaylistIndex = Playlists.Find('PlaylistId', PlaylistId); + // End:0x63 + if(PlaylistIndex != -1) + { + return Playlists[PlaylistIndex].MatchType; + } + return -1; + //return ReturnValue; +} + +function string GetUrlFromPlaylist(int PlaylistId) +{ + local int PlaylistIndex; + + PlaylistIndex = Playlists.Find('PlaylistId', PlaylistId); + // End:0x63 + if(PlaylistIndex != -1) + { + return Playlists[PlaylistIndex].URL; + } + return ""; + //return ReturnValue; +} + +function GetMapCycleFromPlaylist(int PlaylistId, out array MapCycle) +{ + local int PlaylistIndex; + + PlaylistIndex = Playlists.Find('PlaylistId', PlaylistId); + // End:0x99 + if(PlaylistIndex != -1) + { + // End:0x99 + if(Playlists[PlaylistIndex].MapCycle.Length > 0) + { + MapCycle = Playlists[PlaylistIndex].MapCycle; + } + } + //return; +} + +function Class GetInventorySwapFromPlaylist(int PlaylistId, Class SourceInventory) +{ + local int PlaylistIndex, SwapIndex; + + PlaylistIndex = Playlists.Find('PlaylistId', PlaylistId); + // End:0x10B + if(PlaylistIndex != -1) + { + SwapIndex = Playlists[PlaylistIndex].InventorySwaps.Find('Original', SourceInventory.Name); + // End:0x10B + if(SwapIndex != -1) + { + return Class(DynamicLoadObject(Playlists[PlaylistIndex].InventorySwaps[SwapIndex].SwapTo, Class'Core.Class')); + } + } + return SourceInventory; + //return ReturnValue; +} + +function GetContentIdsFromPlaylist(int PlaylistId, out array ContentIds) +{ + local int PlaylistIndex; + + PlaylistIndex = Playlists.Find('PlaylistId', PlaylistId); + // End:0x6C + if(PlaylistIndex != -1) + { + ContentIds = Playlists[PlaylistIndex].ContentIds; + } + //return; +} + +function Reset() +{ + local OnlineSubsystem OnlineSub; + + DownloadCount = 0; + SuccessfulCount = 0; + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xA8 + if((OnlineSub != none) && OnlineSub.Patcher != none) + { + OnlineSub.Patcher.ClearCachedFiles(); + } + //return; +} + +function ReadPlaylistPopulation() +{ + local OnlineSubsystem OnlineSub; + + // End:0x80 + if(EqualEqual_InterfaceInterface(TitleFileInterface, OnlineTitleFileInterface(none))) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x80 + if(OnlineSub != none) + { + TitleFileInterface = OnlineSub.TitleFileInterface; + } + } + // End:0x127 + if(NotEqual_InterfaceInterface(TitleFileInterface, OnlineTitleFileInterface(none))) + { + TitleFileInterface.ClearDownloadedFile(PopulationFileName); + TitleFileInterface.AddReadTitleFileCompleteDelegate(OnReadPlaylistPopulationComplete); + TitleFileInterface.ReadTitleFile(PopulationFileName); + } + //return; +} + +function OnReadPlaylistPopulationComplete(bool bWasSuccessful, string Filename) +{ + local array FileData; + + // End:0x82 + if(Filename == PopulationFileName) + { + // End:0x6F + if(bWasSuccessful) + { + // End:0x6C + if(TitleFileInterface.GetTitleFileContents(Filename, FileData)) + { + ParsePlaylistPopulationData(FileData); + } + } + OnPlaylistPopulationDataUpdated(); + } + //return; +} + +delegate OnPlaylistPopulationDataUpdated() +{ + //return; +} + +// Export UOnlinePlaylistManager::execParsePlaylistPopulationData(FFrame&, void* const) +native function ParsePlaylistPopulationData(const out array Data); + +function GetPopulationInfoFromPlaylist(int PlaylistId, out int WorldwideTotal, out int RegionTotal) +{ + local int PlaylistIndex; + + WorldwideTotal = 0; + RegionTotal = 0; + PlaylistIndex = PopulationData.Find('PlaylistId', PlaylistId); + // End:0xB2 + if(PlaylistIndex != -1) + { + WorldwideTotal = PopulationData[PlaylistIndex].WorldwideTotal; + RegionTotal = PopulationData[PlaylistIndex].RegionTotal; + } + //return; +} + +event SendPlaylistPopulationUpdate(int NumPlayers) +{ + local OnlineEventsInterface EventsInterface; + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xC5 + if(OnlineSub != none) + { + EventsInterface = OnlineEventsInterface(OnlineSub.GetNamedInterface(EventsInterfaceName)); + // End:0xC5 + if(NotEqual_InterfaceInterface(EventsInterface, OnlineEventsInterface(none))) + { + EventsInterface.UpdatePlaylistPopulation(CurrentPlaylistId, NumPlayers); + } + } + //return; +} + +function ReadDataCenterId() +{ + local OnlineSubsystem OnlineSub; + + // End:0x80 + if(EqualEqual_InterfaceInterface(TitleFileInterface, OnlineTitleFileInterface(none))) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x80 + if(OnlineSub != none) + { + TitleFileInterface = OnlineSub.TitleFileInterface; + } + } + // End:0xFE + if(NotEqual_InterfaceInterface(TitleFileInterface, OnlineTitleFileInterface(none))) + { + TitleFileInterface.AddReadTitleFileCompleteDelegate(OnReadDataCenterIdComplete); + TitleFileInterface.ReadTitleFile(DataCenterFileName); + } + //return; +} + +function OnReadDataCenterIdComplete(bool bWasSuccessful, string Filename) +{ + local array FileData; + + // End:0x6F + if(bWasSuccessful) + { + // End:0x6C + if(Filename == DataCenterFileName) + { + // End:0x6C + if(TitleFileInterface.GetTitleFileContents(Filename, FileData)) + { + ParseDataCenterId(FileData); + } + } + } + //return; +} + +// Export UOnlinePlaylistManager::execParseDataCenterId(FFrame&, void* const) +native function ParseDataCenterId(const out array Data); + +defaultproperties +{ + PopulationFileName="PlaylistPopulationData.ini" + DataCenterFileName="DataCenter.Id" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/OnlinePlaylistProvider.uc b/exported/IpDrv/Classes/OnlinePlaylistProvider.uc new file mode 100755 index 00000000..d8be0c6c --- /dev/null +++ b/exported/IpDrv/Classes/OnlinePlaylistProvider.uc @@ -0,0 +1,11 @@ +class OnlinePlaylistProvider extends UIResourceDataProvider + transient + native(UIPrivate) + config(Playlist) + perobjectconfig + hidecategories(Object,UIRoot); + +var config int PlaylistId; +var config array PlaylistGameTypeNames; +var const config localized string DisplayName; +var config int Priority; diff --git a/exported/IpDrv/Classes/OnlineSubsystemCommonImpl.uc b/exported/IpDrv/Classes/OnlineSubsystemCommonImpl.uc new file mode 100755 index 00000000..4c23ef8b --- /dev/null +++ b/exported/IpDrv/Classes/OnlineSubsystemCommonImpl.uc @@ -0,0 +1,63 @@ +class OnlineSubsystemCommonImpl extends OnlineSubsystem + abstract + native + config(Engine); + +var native const transient Pointer VoiceEngine; +var config int MaxLocalTalkers; +var config int MaxRemoteTalkers; +var config bool bIsUsingSpeechRecognition; +var OnlineGameInterfaceImpl GameInterfaceImpl; +var OnlineAuthInterfaceImpl AuthInterfaceImpl; + +event string GetPlayerNicknameFromIndex(int UserIndex) +{ + //return ReturnValue; +} + +// Export UOnlineSubsystemCommonImpl::execIsPlayerInSession(FFrame&, void* const) +native function bool IsPlayerInSession(name SessionName, UniqueNetId PlayerID); + +function GetRegisteredPlayers(name SessionName, out array OutRegisteredPlayers) +{ + local int Idx, PlayerIdx; + + OutRegisteredPlayers.Length = 0; + Idx = 0; + J0x17: + + // End:0x14B [Loop If] + if(Idx < Sessions.Length) + { + // End:0x13D + if(Sessions[Idx].SessionName == SessionName) + { + OutRegisteredPlayers.Length = Sessions[Idx].Registrants.Length; + PlayerIdx = 0; + J0xA0: + + // End:0x13A [Loop If] + if(PlayerIdx < Sessions[Idx].Registrants.Length) + { + OutRegisteredPlayers[PlayerIdx] = Sessions[Idx].Registrants[PlayerIdx].PlayerNetId; + PlayerIdx++; + // [Loop Continue] + goto J0xA0; + } + // [Explicit Break] + goto J0x14B; + } + Idx++; + // [Loop Continue] + goto J0x17; + } + J0x14B: + + //return; +} + +defaultproperties +{ + MaxLocalTalkers=1 + MaxRemoteTalkers=16 +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/OnlineTitleFileDownloadBase.uc b/exported/IpDrv/Classes/OnlineTitleFileDownloadBase.uc new file mode 100755 index 00000000..908a4fd8 --- /dev/null +++ b/exported/IpDrv/Classes/OnlineTitleFileDownloadBase.uc @@ -0,0 +1,129 @@ +class OnlineTitleFileDownloadBase extends MCPBase + native + config(Engine) + implements(OnlineTitleFileInterface); + +enum EMcpFileCompressionType +{ + MFCT_NONE, // 0 + MFCT_ZLIB, // 1 + MFCT_MAX // 2 +}; + +struct native TitleFileWeb extends TitleFile +{ + var string StringData; + var HttpRequestInterface HTTPRequest; + var OnlineTitleFileDownloadBase.EMcpFileCompressionType FileCompressionType; +}; + +struct native FileNameToURLMapping +{ + var name Filename; + var name UrlMapping; + + structdefaultproperties + { + Filename="None" + UrlMapping="None" + } +}; + +var private array< delegate > ReadTitleFileCompleteDelegates; +var array< delegate > RequestTitleFileListCompleteDelegates; +var config string BaseUrl; +var config string RequestFileListURL; +var config string RequestFileURL; +var config float TimeOut; +var config array FilesToUrls; +//var delegate __OnReadTitleFileComplete__Delegate; +//var delegate __OnRequestTitleFileListComplete__Delegate; + +delegate OnReadTitleFileComplete(bool bWasSuccessful, string Filename) +{ + //return; +} + +function bool ReadTitleFile(string FileToRead, optional OnlineSubsystem.EOnlineFileType FileType = 1) +{ + //return ReturnValue; +} + +function AddReadTitleFileCompleteDelegate(delegate ReadTitleFileCompleteDelegate) +{ + // End:0x3E + if(ReadTitleFileCompleteDelegates.Find(ReadTitleFileCompleteDelegate) == -1) + { + ReadTitleFileCompleteDelegates[ReadTitleFileCompleteDelegates.Length] = ReadTitleFileCompleteDelegate; + } + //return; +} + +function ClearReadTitleFileCompleteDelegate(delegate ReadTitleFileCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = ReadTitleFileCompleteDelegates.Find(ReadTitleFileCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + ReadTitleFileCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +function bool GetTitleFileContents(string Filename, out array FileContents) +{ + //return ReturnValue; +} + +function OnlineSubsystem.EOnlineEnumerationReadState GetTitleFileState(string Filename) +{ + //return ReturnValue; +} + +function bool ClearDownloadedFiles() +{ + //return ReturnValue; +} + +function bool ClearDownloadedFile(string Filename) +{ + //return ReturnValue; +} + +function bool RequestTitleFileList() +{ + //return ReturnValue; +} + +delegate OnRequestTitleFileListComplete(bool bWasSuccessful, array FilePaths) +{ + //return; +} + +function AddRequestTitleFileListCompleteDelegate(delegate RequestTitleFileListDelegate) +{ + // End:0x36 + if(RequestTitleFileListCompleteDelegates.Find(RequestTitleFileListDelegate) == -1) + { + RequestTitleFileListCompleteDelegates.AddItem(RequestTitleFileListDelegate); + } + //return; +} + +function ClearRequestTitleFileListCompleteDelegate(delegate RequestTitleFileListDelegate) +{ + local int RemoveIndex; + + RemoveIndex = RequestTitleFileListCompleteDelegates.Find(RequestTitleFileListDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + RequestTitleFileListCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UOnlineTitleFileDownloadBase::execGetUrlForFile(FFrame&, void* const) +native function string GetUrlForFile(string Filename); diff --git a/exported/IpDrv/Classes/OnlineTitleFileDownloadMcp.uc b/exported/IpDrv/Classes/OnlineTitleFileDownloadMcp.uc new file mode 100755 index 00000000..c581b477 --- /dev/null +++ b/exported/IpDrv/Classes/OnlineTitleFileDownloadMcp.uc @@ -0,0 +1,37 @@ +class OnlineTitleFileDownloadMcp extends OnlineTitleFileDownloadBase + native + config(Engine); + +struct native TitleFileMcp extends TitleFile +{ + var private native const Pointer HttpDownloader; +}; + +var private array TitleFiles; +var transient int DownloadCount; + +// Export UOnlineTitleFileDownloadMcp::execReadTitleFile(FFrame&, void* const) +native function bool ReadTitleFile(string FileToRead, optional OnlineSubsystem.EOnlineFileType FileType = 1); + +// Export UOnlineTitleFileDownloadMcp::execGetTitleFileContents(FFrame&, void* const) +native function bool GetTitleFileContents(string Filename, out array FileContents); + +function OnlineSubsystem.EOnlineEnumerationReadState GetTitleFileState(string Filename) +{ + local int FileIndex; + + FileIndex = TitleFiles.Find('Filename', Filename); + // End:0x63 + if(FileIndex != -1) + { + return TitleFiles[FileIndex].AsyncState; + } + return 3; + //return ReturnValue; +} + +// Export UOnlineTitleFileDownloadMcp::execClearDownloadedFiles(FFrame&, void* const) +native function bool ClearDownloadedFiles(); + +// Export UOnlineTitleFileDownloadMcp::execClearDownloadedFile(FFrame&, void* const) +native function bool ClearDownloadedFile(string Filename); diff --git a/exported/IpDrv/Classes/OnlineTitleFileDownloadWeb.uc b/exported/IpDrv/Classes/OnlineTitleFileDownloadWeb.uc new file mode 100755 index 00000000..2728ad38 --- /dev/null +++ b/exported/IpDrv/Classes/OnlineTitleFileDownloadWeb.uc @@ -0,0 +1,246 @@ +class OnlineTitleFileDownloadWeb extends OnlineTitleFileDownloadBase + native + config(Engine); + +var private array TitleFiles; + +// Export UOnlineTitleFileDownloadWeb::execUncompressTitleFileContents(FFrame&, void* const) +native function bool UncompressTitleFileContents(OnlineTitleFileDownloadBase.EMcpFileCompressionType FileCompressionType, const out array CompressedFileContents, out array UncompressedFileContents); + +function bool ReadTitleFile(string FileToRead, optional OnlineSubsystem.EOnlineFileType FileType = 1) +{ + local int FileIndex, Idx; + local string URL; + + FileIndex = -1; + Idx = 0; + J0x20: + + // End:0x9A [Loop If] + if(Idx < TitleFiles.Length) + { + // End:0x8C + if(InStr(TitleFiles[Idx].Filename, FileToRead, true, false) != -1) + { + FileIndex = Idx; + // [Explicit Break] + goto J0x9A; + } + Idx++; + // [Loop Continue] + goto J0x20; + } + J0x9A: + + // End:0x132 + if(FileIndex == -1) + { + FileIndex = TitleFiles.Length; + TitleFiles.Length = TitleFiles.Length + 1; + TitleFiles[FileIndex].Filename = FileToRead; + TitleFiles[FileIndex].AsyncState = 0; + } + // End:0x17A + if(int(TitleFiles[FileIndex].AsyncState) == int(2)) + { + TriggerDelegates(true, FileToRead); + } + else + { + // End:0x1C4 + if(int(TitleFiles[FileIndex].AsyncState) == int(3)) + { + TriggerDelegates(false, FileToRead); + return false; + } + else + { + // End:0x3C7 + if(int(TitleFiles[FileIndex].AsyncState) != int(1)) + { + TitleFiles[FileIndex].AsyncState = 1; + URL = (GetUrlForFile(FileToRead)) $ FileToRead; + TitleFiles[FileIndex].HTTPRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x3C7 + if(TitleFiles[FileIndex].HTTPRequest != none) + { + TitleFiles[FileIndex].HTTPRequest.__OnProcessRequestComplete__Delegate = OnFileDownloadComplete; + TitleFiles[FileIndex].HTTPRequest.SetVerb("GET"); + TitleFiles[FileIndex].HTTPRequest.SetURL(URL); + TitleFiles[FileIndex].HTTPRequest.ProcessRequest(); + } + } + } + } + return true; + //return ReturnValue; +} + +private final function OnFileDownloadComplete(HttpRequestInterface Request, HttpResponseInterface Response, bool bDidSucceed) +{ + local bool bSuccess; + local int FileIndex, Idx; + local string Filename; + local array BinaryData; + local string FileCompressionTypeString; + + // End:0x2ED + if(bDidSucceed) + { + FileIndex = -1; + Idx = 0; + J0x27: + + // End:0x97 [Loop If] + if(Idx < TitleFiles.Length) + { + // End:0x89 + if(TitleFiles[Idx].HTTPRequest == Request) + { + FileIndex = Idx; + // [Explicit Break] + goto J0x97; + } + Idx++; + // [Loop Continue] + goto J0x27; + } + J0x97: + + // End:0x2EA + if(FileIndex != -1) + { + Filename = TitleFiles[FileIndex].Filename; + TitleFiles[FileIndex].HTTPRequest = none; + TitleFiles[FileIndex].AsyncState = 3; + // End:0x295 + if(Response.GetResponseCode() == 200) + { + bSuccess = true; + Response.GetContent(BinaryData); + TitleFiles[FileIndex].Data = BinaryData; + FileCompressionTypeString = Response.GetHeader("Content-Encoding"); + switch(FileCompressionTypeString) + { + // End:0x23D + case "MFCT_ZLIB": + TitleFiles[FileIndex].FileCompressionType = 1; + // End:0x269 + break; + // End:0xFFFF + default: + TitleFiles[FileIndex].FileCompressionType = 0; + break; + } + TitleFiles[FileIndex].AsyncState = 2; + } + else + { + TitleFiles[FileIndex].AsyncState = 3; + TitleFiles[FileIndex].Data.Length = 0; + } + } + } + TriggerDelegates(bSuccess, Filename); + //return; +} + +// Export UOnlineTitleFileDownloadWeb::execTriggerDelegates(FFrame&, void* const) +private native final function TriggerDelegates(bool bSuccess, string FileRead); + +// Export UOnlineTitleFileDownloadWeb::execGetTitleFileContents(FFrame&, void* const) +native function bool GetTitleFileContents(string Filename, out array FileContents); + +function OnlineSubsystem.EOnlineEnumerationReadState GetTitleFileState(string Filename) +{ + local int FileIndex; + + FileIndex = TitleFiles.Find('Filename', Filename); + // End:0x63 + if(FileIndex != -1) + { + return TitleFiles[FileIndex].AsyncState; + } + return 3; + //return ReturnValue; +} + +// Export UOnlineTitleFileDownloadWeb::execClearDownloadedFiles(FFrame&, void* const) +native function bool ClearDownloadedFiles(); + +// Export UOnlineTitleFileDownloadWeb::execClearDownloadedFile(FFrame&, void* const) +native function bool ClearDownloadedFile(string Filename); + +function bool RequestTitleFileList() +{ + local HttpRequestInterface HTTPRequest; + local string URL; + local bool Success; + + Success = false; + HTTPRequest = Class'Engine.HttpFactory'.static.CreateRequest(); + // End:0x119 + if(HTTPRequest != none) + { + URL = ((GetBaseURL()) $ RequestFileListURL) $ (GetAppAccessURL()); + HTTPRequest.__OnProcessRequestComplete__Delegate = OnFileListReceived; + HTTPRequest.SetVerb("GET"); + HTTPRequest.SetURL(URL); + HTTPRequest.ProcessRequest(); + Success = true; + } + return Success; + //return ReturnValue; +} + +function OnFileListReceived(HttpRequestInterface Request, HttpResponseInterface Response, bool bDidSucceed) +{ + local int Index; + local delegate RequestTitleFileListDelegate; + local array ResponseArr; + local bool bSuccess; + + // End:0x82 + if(bDidSucceed) + { + // End:0x7F + if((Response != none) && Response.GetResponseCode() == 200) + { + ResponseArr.AddItem(Response.GetContentAsString()); + bSuccess = true; + } + } + Index = 0; + J0x8D: + + // End:0x105 [Loop If] + if(Index < RequestTitleFileListCompleteDelegates.Length) + { + RequestTitleFileListDelegate = RequestTitleFileListCompleteDelegates[Index]; + // End:0xF7 + if(RequestTitleFileListDelegate != none) + { + OnRequestTitleFileListComplete(bSuccess, ResponseArr); + } + Index++; + // [Loop Continue] + goto J0x8D; + } + //return; +} + +function string GetUrlForFile(string Filename) +{ + local string URL; + + URL = (((GetBaseURL()) $ RequestFileURL) $ (GetAppAccessURL())) $ "&dlName="; + return URL; + //return ReturnValue; +} + +defaultproperties +{ + RequestFileListURL="/listfiles" + RequestFileURL="/downloadfile" + TimeOut=10.0000000 +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/PartyBeacon.uc b/exported/IpDrv/Classes/PartyBeacon.uc new file mode 100755 index 00000000..9ac31ce6 --- /dev/null +++ b/exported/IpDrv/Classes/PartyBeacon.uc @@ -0,0 +1,89 @@ +class PartyBeacon extends Object + native + config(Engine); + +enum EReservationPacketType +{ + RPT_UnknownPacketType, // 0 + RPT_ClientReservationRequest, // 1 + RPT_ClientReservationUpdateRequest,// 2 + RPT_ClientCancellationRequest, // 3 + RPT_HostReservationResponse, // 4 + RPT_HostReservationCountUpdate, // 5 + RPT_HostTravelRequest, // 6 + RPT_HostIsReady, // 7 + RPT_HostHasCancelled, // 8 + RPT_Heartbeat, // 9 + RPT_MAX // 10 +}; + +enum EPartyReservationResult +{ + PRR_GeneralError, // 0 + PRR_PartyLimitReached, // 1 + PRR_IncorrectPlayerCount, // 2 + PRR_RequestTimedOut, // 3 + PRR_ReservationDuplicate, // 4 + PRR_ReservationNotFound, // 5 + PRR_ReservationAccepted, // 6 + PRR_ReservationDenied, // 7 + PRR_MAX // 8 +}; + +struct native PlayerReservation +{ + var UniqueNetId NetId; + var int Skill; + var int XpLevel; + var Double Mu; + var Double Sigma; + var float ElapsedSessionTime; + + structdefaultproperties + { + NetId=(Uid=()) + Skill=0 + XpLevel=0 + Mu=() + Sigma=() + ElapsedSessionTime=0.0000000 + } +}; + +struct native PartyReservation +{ + var int TeamNum; + var UniqueNetId PartyLeader; + var array PartyMembers; + + structdefaultproperties + { + TeamNum=0 + PartyLeader=(Uid=()) + PartyMembers=none + } +}; + +var private native const noexport Pointer VfTable_FTickableObject; +var config int PartyBeaconPort; +var native transient Pointer Socket; +var bool bIsInTick; +var bool bWantsDeferredDestroy; +var bool bShouldTick; +var config float HeartbeatTimeout; +var float ElapsedHeartbeatTime; +var name BeaconName; +//var delegate __OnDestroyComplete__Delegate; + +// Export UPartyBeacon::execDestroyBeacon(FFrame&, void* const) +native event DestroyBeacon(); + +delegate OnDestroyComplete() +{ + //return; +} + +defaultproperties +{ + bShouldTick=true +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/PartyBeaconClient.uc b/exported/IpDrv/Classes/PartyBeaconClient.uc new file mode 100755 index 00000000..faa1061e --- /dev/null +++ b/exported/IpDrv/Classes/PartyBeaconClient.uc @@ -0,0 +1,73 @@ +class PartyBeaconClient extends PartyBeacon + native + config(Engine); + +enum EPartyBeaconClientState +{ + PBCS_None, // 0 + PBCS_Connecting, // 1 + PBCS_Connected, // 2 + PBCS_ConnectionFailed, // 3 + PBCS_AwaitingResponse, // 4 + PBCS_Closed, // 5 + PBCS_MAX // 6 +}; + +enum EPartyBeaconClientRequest +{ + PBClientRequest_NewReservation, // 0 + PBClientRequest_UpdateReservation,// 1 + PBClientRequest_MAX // 2 +}; + +var const OnlineGameSearchResult HostPendingRequest; +var PartyReservation PendingRequest; +var PartyBeaconClient.EPartyBeaconClientState ClientBeaconState; +var PartyBeaconClient.EPartyBeaconClientRequest ClientBeaconRequestType; +var config float ReservationRequestTimeout; +var float ReservationRequestElapsedTime; +var config string ResolverClassName; +var Class ResolverClass; +var ClientBeaconAddressResolver Resolver; +//var delegate __OnReservationRequestComplete__Delegate; +//var delegate __OnReservationCountUpdated__Delegate; +//var delegate __OnTravelRequestReceived__Delegate; +//var delegate __OnHostIsReady__Delegate; +//var delegate __OnHostHasCancelled__Delegate; + +delegate OnReservationRequestComplete(PartyBeacon.EPartyReservationResult ReservationResult) +{ + //return; +} + +delegate OnReservationCountUpdated(int ReservationRemaining) +{ + //return; +} + +delegate OnTravelRequestReceived(name SessionName, Class SearchClass, byte PlatformSpecificInfo[80]) +{ + //return; +} + +delegate OnHostIsReady() +{ + //return; +} + +delegate OnHostHasCancelled() +{ + //return; +} + +// Export UPartyBeaconClient::execRequestReservation(FFrame&, void* const) +native function bool RequestReservation(const out OnlineGameSearchResult DesiredHost, UniqueNetId RequestingPartyLeader, const out array Players); + +// Export UPartyBeaconClient::execRequestReservationUpdate(FFrame&, void* const) +native function bool RequestReservationUpdate(const out OnlineGameSearchResult DesiredHost, UniqueNetId RequestingPartyLeader, const out array PlayersToAdd); + +// Export UPartyBeaconClient::execCancelReservation(FFrame&, void* const) +native function bool CancelReservation(UniqueNetId CancellingPartyLeader); + +// Export UPartyBeaconClient::execDestroyBeacon(FFrame&, void* const) +native event DestroyBeacon(); diff --git a/exported/IpDrv/Classes/PartyBeaconHost.uc b/exported/IpDrv/Classes/PartyBeaconHost.uc new file mode 100755 index 00000000..f68da4d7 --- /dev/null +++ b/exported/IpDrv/Classes/PartyBeaconHost.uc @@ -0,0 +1,265 @@ +class PartyBeaconHost extends PartyBeacon + native + config(Engine); + +enum EPartyBeaconHostState +{ + PBHS_AllowReservations, // 0 + PBHS_DenyReservations, // 1 + PBHS_MAX // 2 +}; + +struct native ClientBeaconConnection +{ + var UniqueNetId PartyLeader; + var float ElapsedHeartbeatTime; + var native transient Pointer Socket; + + structdefaultproperties + { + PartyLeader=(Uid=()) + ElapsedHeartbeatTime=0.0000000 + } +}; + +var const array Clients; +var const int NumTeams; +var const int NumPlayersPerTeam; +var const int NumReservations; +var const int NumConsumedReservations; +var const array Reservations; +var name OnlineSessionName; +var config int ConnectionBacklog; +var const int ForceTeamNum; +var const int ReservedHostTeamNum; +var bool bBestFitTeamAssignment; +var const PartyBeaconHost.EPartyBeaconHostState BeaconState; +//var delegate __OnReservationChange__Delegate; +//var delegate __OnReservationsFull__Delegate; +//var delegate __OnClientCancellationReceived__Delegate; + +// Export UPartyBeaconHost::execPauseReservationRequests(FFrame&, void* const) +native function PauseReservationRequests(bool bPause); + +// Export UPartyBeaconHost::execInitHostBeacon(FFrame&, void* const) +native function bool InitHostBeacon(int InNumTeams, int InNumPlayersPerTeam, int InNumReservations, name InSessionName, optional int InForceTeamNum = 0); + +// Export UPartyBeaconHost::execAddPartyReservationEntry(FFrame&, void* const) +native function PartyBeacon.EPartyReservationResult AddPartyReservationEntry(UniqueNetId PartyLeader, const out array PlayerMembers, int TeamNum, bool bIsHost); + +// Export UPartyBeaconHost::execUpdatePartyReservationEntry(FFrame&, void* const) +native function PartyBeacon.EPartyReservationResult UpdatePartyReservationEntry(UniqueNetId PartyLeader, const out array PlayerMembers); + +// Export UPartyBeaconHost::execGetExistingReservation(FFrame&, void* const) +native function int GetExistingReservation(const out UniqueNetId PartyLeader); + +// Export UPartyBeaconHost::execHandlePlayerLogout(FFrame&, void* const) +native function HandlePlayerLogout(UniqueNetId PlayerID, bool bMaintainParty); + +delegate OnReservationChange() +{ + //return; +} + +delegate OnReservationsFull() +{ + //return; +} + +delegate OnClientCancellationReceived(UniqueNetId PartyLeader) +{ + //return; +} + +// Export UPartyBeaconHost::execDestroyBeacon(FFrame&, void* const) +native event DestroyBeacon(); + +// Export UPartyBeaconHost::execTellClientsToTravel(FFrame&, void* const) +native function TellClientsToTravel(name SessionName, Class SearchClass, byte PlatformSpecificInfo[80]); + +// Export UPartyBeaconHost::execTellClientsHostIsReady(FFrame&, void* const) +native function TellClientsHostIsReady(); + +// Export UPartyBeaconHost::execTellClientsHostHasCancelled(FFrame&, void* const) +native function TellClientsHostHasCancelled(); + +function bool AreReservationsFull() +{ + return NumConsumedReservations == NumReservations; + //return ReturnValue; +} + +event RegisterPartyMembers() +{ + local int Index, PartyIndex; + local OnlineSubsystem OnlineSub; + local OnlineRecentPlayersList PlayersList; + local array Members; + local PlayerReservation PlayerRes; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x244 + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + PartyIndex = 0; + J0x7A: + + // End:0x244 [Loop If] + if(PartyIndex < Reservations.Length) + { + Index = 0; + J0x9D: + + // End:0x19E [Loop If] + if(Index < Reservations[PartyIndex].PartyMembers.Length) + { + PlayerRes = Reservations[PartyIndex].PartyMembers[Index]; + OnlineSub.GameInterface.RegisterPlayer(OnlineSessionName, PlayerRes.NetId, false); + Members.AddItem(PlayerRes.NetId); + Index++; + // [Loop Continue] + goto J0x9D; + } + PlayersList = OnlineRecentPlayersList(OnlineSub.GetNamedInterface('RecentPlayersList')); + // End:0x236 + if(PlayersList != none) + { + PlayersList.AddPartyToRecentParties(Reservations[PartyIndex].PartyLeader, Members); + } + PartyIndex++; + // [Loop Continue] + goto J0x7A; + } + } + //return; +} + +event UnregisterPartyMembers() +{ + local int Index, PartyIndex; + local OnlineSubsystem OnlineSub; + local PlayerReservation PlayerRes; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x182 + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + PartyIndex = 0; + J0x7A: + + // End:0x182 [Loop If] + if(PartyIndex < Reservations.Length) + { + Index = 0; + J0x9D: + + // End:0x174 [Loop If] + if(Index < Reservations[PartyIndex].PartyMembers.Length) + { + PlayerRes = Reservations[PartyIndex].PartyMembers[Index]; + OnlineSub.GameInterface.UnregisterPlayer(OnlineSessionName, PlayerRes.NetId); + Index++; + // [Loop Continue] + goto J0x9D; + } + PartyIndex++; + // [Loop Continue] + goto J0x7A; + } + } + //return; +} + +event UnregisterParty(UniqueNetId PartyLeader) +{ + local int PlayerIndex, PartyIndex; + local OnlineSubsystem OnlineSub; + local PlayerReservation PlayerRes; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x1BD + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + PartyIndex = 0; + J0x7A: + + // End:0x1BD [Loop If] + if(PartyIndex < Reservations.Length) + { + // End:0x1AF + if(Reservations[PartyIndex].PartyLeader == PartyLeader) + { + PlayerIndex = 0; + J0xD8: + + // End:0x1AF [Loop If] + if(PlayerIndex < Reservations[PartyIndex].PartyMembers.Length) + { + PlayerRes = Reservations[PartyIndex].PartyMembers[PlayerIndex]; + OnlineSub.GameInterface.UnregisterPlayer(OnlineSessionName, PlayerRes.NetId); + PlayerIndex++; + // [Loop Continue] + goto J0xD8; + } + } + PartyIndex++; + // [Loop Continue] + goto J0x7A; + } + } + //return; +} + +// Export UPartyBeaconHost::execAppendReservationSkillsToSearch(FFrame&, void* const) +native function AppendReservationSkillsToSearch(OnlineGameSearch Search); + +function GetPlayers(out array Players) +{ + local int PlayerIndex, PartyIndex; + local PlayerReservation PlayerRes; + + PartyIndex = 0; + J0x0B: + + // End:0xE2 [Loop If] + if(PartyIndex < Reservations.Length) + { + PlayerIndex = 0; + J0x2E: + + // End:0xD4 [Loop If] + if(PlayerIndex < Reservations[PartyIndex].PartyMembers.Length) + { + PlayerRes = Reservations[PartyIndex].PartyMembers[PlayerIndex]; + Players.AddItem(PlayerRes.NetId); + PlayerIndex++; + // [Loop Continue] + goto J0x2E; + } + PartyIndex++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function GetPartyLeaders(out array PartyLeaders) +{ + local int PartyIndex; + + PartyIndex = 0; + J0x0B: + + // End:0x64 [Loop If] + if(PartyIndex < Reservations.Length) + { + PartyLeaders.AddItem(Reservations[PartyIndex].PartyLeader); + PartyIndex++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +// Export UPartyBeaconHost::execGetMaxAvailableTeamSize(FFrame&, void* const) +native function int GetMaxAvailableTeamSize(); diff --git a/exported/IpDrv/Classes/TcpLink.uc b/exported/IpDrv/Classes/TcpLink.uc new file mode 100755 index 00000000..0f1c643c --- /dev/null +++ b/exported/IpDrv/Classes/TcpLink.uc @@ -0,0 +1,86 @@ +class TcpLink extends InternetLink + transient + native + hidecategories(Navigation,Movement,Collision); + +enum ELinkState +{ + STATE_Initialized, // 0 + STATE_Ready, // 1 + STATE_Listening, // 2 + STATE_Connecting, // 3 + STATE_Connected, // 4 + STATE_ListenClosePending, // 5 + STATE_ConnectClosePending, // 6 + STATE_ListenClosing, // 7 + STATE_ConnectClosing, // 8 + STATE_MAX // 9 +}; + +var TcpLink.ELinkState LinkState; +var IpAddr RemoteAddr; +var Class AcceptClass; +var const array SendFIFO; +var const string RecvBuf; + +// Export UTcpLink::execBindPort(FFrame&, void* const) +native function int BindPort(optional int PortNum, optional bool bUseNextAvailable); + +// Export UTcpLink::execListen(FFrame&, void* const) +native function bool Listen(); + +// Export UTcpLink::execOpen(FFrame&, void* const) +native function bool Open(IpAddr Addr); + +// Export UTcpLink::execClose(FFrame&, void* const) +native function bool Close(); + +// Export UTcpLink::execIsConnected(FFrame&, void* const) +native function bool IsConnected(); + +// Export UTcpLink::execSendText(FFrame&, void* const) +native function int SendText(coerce string Str); + +// Export UTcpLink::execSendBinary(FFrame&, void* const) +native function int SendBinary(int Count, byte B[255]); + +// Export UTcpLink::execReadText(FFrame&, void* const) +native function int ReadText(out string Str); + +// Export UTcpLink::execReadBinary(FFrame&, void* const) +native function int ReadBinary(int Count, out byte B[255]); + +event Accepted() +{ + //return; +} + +event Opened() +{ + //return; +} + +event Closed() +{ + //return; +} + +event ReceivedText(string Text) +{ + //return; +} + +event ReceivedLine(string Line) +{ + //return; +} + +event ReceivedBinary(int Count, byte B[255]) +{ + //return; +} + +defaultproperties +{ + bAlwaysTick=true +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/TitleFileDownloadCache.uc b/exported/IpDrv/Classes/TitleFileDownloadCache.uc new file mode 100755 index 00000000..c9fd3f97 --- /dev/null +++ b/exported/IpDrv/Classes/TitleFileDownloadCache.uc @@ -0,0 +1,112 @@ +class TitleFileDownloadCache extends MCPBase + native + config(Engine) + implements(OnlineTitleFileCacheInterface); + +enum ETitleFileFileOp +{ + TitleFile_None, // 0 + TitleFile_Save, // 1 + TitleFile_Load, // 2 + TitleFile_MAX // 3 +}; + +struct native TitleFileCacheEntry extends TitleFile +{ + var string LogicalName; + var string Hash; + var TitleFileDownloadCache.ETitleFileFileOp FileOp; + var private native const Pointer Ar; +}; + +var array TitleFiles; +var private array< delegate > LoadCompleteDelegates; +var private array< delegate > SaveCompleteDelegates; +//var delegate __OnLoadTitleFileComplete__Delegate; +//var delegate __OnSaveTitleFileComplete__Delegate; + +// Export UTitleFileDownloadCache::execLoadTitleFile(FFrame&, void* const) +native function bool LoadTitleFile(string Filename); + +delegate OnLoadTitleFileComplete(bool bWasSuccessful, string Filename) +{ + //return; +} + +function AddLoadTitleFileCompleteDelegate(delegate LoadCompleteDelegate) +{ + // End:0x3E + if(LoadCompleteDelegates.Find(LoadCompleteDelegate) == -1) + { + LoadCompleteDelegates[LoadCompleteDelegates.Length] = LoadCompleteDelegate; + } + //return; +} + +function ClearLoadTitleFileCompleteDelegate(delegate LoadCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = LoadCompleteDelegates.Find(LoadCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + LoadCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UTitleFileDownloadCache::execSaveTitleFile(FFrame&, void* const) +native function bool SaveTitleFile(string Filename, string LogicalName, array FileContents); + +delegate OnSaveTitleFileComplete(bool bWasSuccessful, string Filename) +{ + //return; +} + +function AddSaveTitleFileCompleteDelegate(delegate SaveCompleteDelegate) +{ + // End:0x3E + if(SaveCompleteDelegates.Find(SaveCompleteDelegate) == -1) + { + SaveCompleteDelegates[SaveCompleteDelegates.Length] = SaveCompleteDelegate; + } + //return; +} + +function ClearSaveTitleFileCompleteDelegate(delegate SaveCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = SaveCompleteDelegates.Find(SaveCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + SaveCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UTitleFileDownloadCache::execGetTitleFileContents(FFrame&, void* const) +native function bool GetTitleFileContents(string Filename, out array FileContents); + +// Export UTitleFileDownloadCache::execGetTitleFileState(FFrame&, void* const) +native function OnlineSubsystem.EOnlineEnumerationReadState GetTitleFileState(string Filename); + +// Export UTitleFileDownloadCache::execGetTitleFileHash(FFrame&, void* const) +native function string GetTitleFileHash(string Filename); + +// Export UTitleFileDownloadCache::execGetTitleFileLogicalName(FFrame&, void* const) +native function string GetTitleFileLogicalName(string Filename); + +// Export UTitleFileDownloadCache::execClearCachedFiles(FFrame&, void* const) +native function bool ClearCachedFiles(); + +// Export UTitleFileDownloadCache::execClearCachedFile(FFrame&, void* const) +native function bool ClearCachedFile(string Filename); + +// Export UTitleFileDownloadCache::execDeleteTitleFiles(FFrame&, void* const) +native function bool DeleteTitleFiles(float MaxAgeSeconds); + +// Export UTitleFileDownloadCache::execDeleteTitleFile(FFrame&, void* const) +native function bool DeleteTitleFile(string Filename); diff --git a/exported/IpDrv/Classes/UIDataStore_OnlinePlaylists.uc b/exported/IpDrv/Classes/UIDataStore_OnlinePlaylists.uc new file mode 100755 index 00000000..4f33d46a --- /dev/null +++ b/exported/IpDrv/Classes/UIDataStore_OnlinePlaylists.uc @@ -0,0 +1,86 @@ +class UIDataStore_OnlinePlaylists extends UIDataStore + transient + native(UIPrivate) + config(Game) + hidecategories(Object,UIRoot); + +const RANKEDPROVIDERTAG = "PlaylistsRanked"; +const UNRANKEDPROVIDERTAG = "PlaylistsUnranked"; +const RECMODEPROVIDERTAG = "PlaylistsRecMode"; +const PRIVATEPROVIDERTAG = "PlaylistsPrivate"; + +var config string ProviderClassName; +var transient Class ProviderClass; +var const array RankedDataProviders; +var const array UnrankedDataProviders; +var const array RecModeDataProviders; +var const array PrivateDataProviders; +var OnlinePlaylistManager PlaylistMan; + +event Init() +{ + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x99 + if((OnlineSub != none) && OnlineSub.Patcher != none) + { + PlaylistMan = OnlinePlaylistManager(OnlineSub.GetNamedInterface('PlaylistManager')); + } + //return; +} + +// Export UUIDataStore_OnlinePlaylists::execGetResourceProviders(FFrame&, void* const) +native final function bool GetResourceProviders(name ProviderTag, out array out_Providers); + +// Export UUIDataStore_OnlinePlaylists::execGetPlaylistProvider(FFrame&, void* const) +native final function bool GetPlaylistProvider(name ProviderTag, int ProviderIndex, out UIResourceDataProvider out_Provider); + +static function OnlinePlaylistProvider GetOnlinePlaylistProvider(name ProviderTag, int PlaylistId, optional out int ProviderIndex) +{ + local UIDataStore_OnlinePlaylists PlaylistDS; + local array Providers; + local OnlinePlaylistProvider OPP; + + ProviderIndex = -1; + PlaylistDS = UIDataStore_OnlinePlaylists(Class'Engine.UIRoot'.static.StaticResolveDataStore(Class'IpDrv.UIDataStore_OnlinePlaylists'.default.Tag)); + // End:0x12E + if(PlaylistDS != none) + { + PlaylistDS.GetResourceProviders(ProviderTag, Providers); + ProviderIndex = 0; + J0xAC: + + // End:0x12E [Loop If] + if(ProviderIndex < Providers.Length) + { + OPP = OnlinePlaylistProvider(Providers[ProviderIndex]); + // End:0x120 + if(OPP.PlaylistId == PlaylistId) + { + return OPP; + } + ProviderIndex++; + // [Loop Continue] + goto J0xAC; + } + } + return none; + //return ReturnValue; +} + +event int GetMatchTypeForPlaylistId(int PlaylistId) +{ + // End:0x38 + if(PlaylistMan != none) + { + return PlaylistMan.GetMatchType(PlaylistId); + } + return -1; + //return ReturnValue; +} + +defaultproperties +{ + Tag="OnlinePlaylists" +} \ No newline at end of file diff --git a/exported/IpDrv/Classes/WebApplication.uc b/exported/IpDrv/Classes/WebApplication.uc new file mode 100755 index 00000000..0dbac475 --- /dev/null +++ b/exported/IpDrv/Classes/WebApplication.uc @@ -0,0 +1,46 @@ +class WebApplication extends Object; + +var WorldInfo WorldInfo; +var WebServer WebServer; +var string Path; + +function Init() +{ + //return; +} + +final function Cleanup() +{ + //return; +} + +function CleanupApp() +{ + // End:0x1A + if(WorldInfo != none) + { + WorldInfo = none; + } + // End:0x34 + if(WebServer != none) + { + WebServer = none; + } + //return; +} + +function bool PreQuery(WebRequest Request, WebResponse Response) +{ + return true; + //return ReturnValue; +} + +function Query(WebRequest Request, WebResponse Response) +{ + //return; +} + +function PostQuery(WebRequest Request, WebResponse Response) +{ + //return; +} diff --git a/exported/IpDrv/Classes/WebConnection.uc b/exported/IpDrv/Classes/WebConnection.uc new file mode 100755 index 00000000..fb3cf8e0 --- /dev/null +++ b/exported/IpDrv/Classes/WebConnection.uc @@ -0,0 +1,342 @@ +class WebConnection extends TcpLink + transient + config(Web) + hidecategories(Navigation,Movement,Collision); + +var WebServer WebServer; +var string ReceivedData; +var WebRequest Request; +var WebResponse Response; +var WebApplication Application; +var bool bDelayCleanup; +var int RawBytesExpecting; +var config int MaxValueLength; +var config int MaxLineLength; +var int ConnID; + +event Accepted() +{ + WebServer = WebServer(Owner); + SetTimer(30.0000000, false); + ConnID = WebServer.ConnID++; + //return; +} + +event Closed() +{ + Destroy(); + //return; +} + +event Timer() +{ + bDelayCleanup = false; + Cleanup(); + //return; +} + +event ReceivedText(string Text) +{ + local int I; + local string S; + + ReceivedData $= Text; + // End:0x4F + if(RawBytesExpecting > 0) + { + RawBytesExpecting -= Len(Text); + CheckRawBytes(); + return; + } + // End:0x7B + if(Left(ReceivedData, 1) == Chr(10)) + { + ReceivedData = Mid(ReceivedData, 1); + } + I = InStr(ReceivedData, Chr(13)); + J0x97: + + // End:0x17E [Loop If] + if(I != -1) + { + S = Left(ReceivedData, I); + I++; + // End:0xFC + if(Mid(ReceivedData, I, 1) == Chr(10)) + { + I++; + } + ReceivedData = Mid(ReceivedData, I); + ReceivedLine(S); + // End:0x144 + if(int(LinkState) != int(4)) + { + return; + } + // End:0x15F + if(RawBytesExpecting > 0) + { + CheckRawBytes(); + return; + } + I = InStr(ReceivedData, Chr(13)); + // [Loop Continue] + goto J0x97; + } + //return; +} + +function ReceivedLine(string S) +{ + // End:0x1D + if(S == "") + { + EndOfHeaders(); + } + else + { + // End:0x4B + if(Left(S, 4) ~= "GET ") + { + ProcessGet(S); + } + else + { + // End:0x7A + if(Left(S, 5) ~= "POST ") + { + ProcessPost(S); + } + else + { + // End:0xA9 + if(Left(S, 5) ~= "HEAD ") + { + ProcessHead(S); + } + else + { + // End:0xE0 + if(Request != none) + { + Request.ProcessHeaderString(S); + } + } + } + } + } + //return; +} + +function ProcessHead(string S) +{ + //return; +} + +function ProcessGet(string S) +{ + local int I; + + // End:0x19 + if(Request == none) + { + CreateResponseObject(); + } + Request.RequestType = 0; + S = Mid(S, 4); + J0x52: + + // End:0x80 [Loop If] + if(Left(S, 1) == " ") + { + S = Mid(S, 1); + // [Loop Continue] + goto J0x52; + } + I = InStr(S, " "); + // End:0xCC + if(I != -1) + { + S = Left(S, I); + } + I = InStr(S, "?"); + // End:0x151 + if(I != -1) + { + Request.DecodeFormData(Mid(S, I + 1)); + S = Left(S, I); + } + Application = WebServer.GetApplication(S, Request.URI); + // End:0x211 + if((Application != none) && Request.URI == "") + { + Response.Redirect(S $ "/"); + Cleanup(); + } + else + { + // End:0x2B5 + if((Application == none) && WebServer.DefaultApplication != -1) + { + Response.Redirect(WebServer.ApplicationPaths[WebServer.DefaultApplication] $ "/"); + Cleanup(); + } + } + //return; +} + +function ProcessPost(string S) +{ + local int I; + + // End:0x19 + if(Request == none) + { + CreateResponseObject(); + } + Request.RequestType = 1; + S = Mid(S, 5); + J0x52: + + // End:0x80 [Loop If] + if(Left(S, 1) == " ") + { + S = Mid(S, 1); + // [Loop Continue] + goto J0x52; + } + I = InStr(S, " "); + // End:0xCC + if(I != -1) + { + S = Left(S, I); + } + I = InStr(S, "?"); + // End:0x151 + if(I != -1) + { + Request.DecodeFormData(Mid(S, I + 1)); + S = Left(S, I); + } + Application = WebServer.GetApplication(S, Request.URI); + // End:0x20E + if((Application != none) && Request.URI == "") + { + Response.Redirect(S $ "/"); + Cleanup(); + } + //return; +} + +function CreateResponseObject() +{ + local int I; + + Request = new (none) Class'IpDrv.WebRequest'; + Request.RemoteAddr = IpAddrToString(RemoteAddr); + I = InStr(Request.RemoteAddr, ":"); + // End:0xD5 + if(I > -1) + { + Request.RemoteAddr = Left(Request.RemoteAddr, I); + } + Response = new (none) Class'IpDrv.WebResponse'; + Response.Connection = self; + //return; +} + +function EndOfHeaders() +{ + // End:0x4A + if(Response == none) + { + CreateResponseObject(); + Response.HTTPError(400); + Cleanup(); + return; + } + // End:0x8A + if(Application == none) + { + Response.HTTPError(404); + Cleanup(); + return; + } + // End:0x124 + if((Request.ContentLength != 0) && int(Request.RequestType) == int(1)) + { + RawBytesExpecting = Request.ContentLength; + RawBytesExpecting -= Len(ReceivedData); + CheckRawBytes(); + } + else + { + // End:0x1BA + if(Application.PreQuery(Request, Response)) + { + Application.Query(Request, Response); + Application.PostQuery(Request, Response); + } + Cleanup(); + } + //return; +} + +function CheckRawBytes() +{ + // End:0x15B + if(RawBytesExpecting <= 0) + { + // End:0x85 + if(InStr(Locs(Request.ContentType), "application/x-www-form-urlencoded") != 0) + { + Response.HTTPError(400); + } + else + { + Request.DecodeFormData(ReceivedData); + // End:0x145 + if(Application.PreQuery(Request, Response)) + { + Application.Query(Request, Response); + Application.PostQuery(Request, Response); + } + ReceivedData = ""; + } + Cleanup(); + } + //return; +} + +function Cleanup() +{ + // End:0x0F + if(bDelayCleanup) + { + return; + } + // End:0x29 + if(Request != none) + { + Request = none; + } + // End:0x63 + if(Response != none) + { + Response.Connection = none; + Response = none; + } + // End:0x7D + if(Application != none) + { + Application = none; + } + Close(); + //return; +} + +final function bool IsHanging() +{ + return bDelayCleanup; + //return ReturnValue; +} diff --git a/exported/IpDrv/Classes/WebRequest.uc b/exported/IpDrv/Classes/WebRequest.uc new file mode 100755 index 00000000..14127992 --- /dev/null +++ b/exported/IpDrv/Classes/WebRequest.uc @@ -0,0 +1,258 @@ +class WebRequest extends Object + native; + +enum ERequestType +{ + Request_GET, // 0 + Request_POST, // 1 + Request_MAX // 2 +}; + +var string RemoteAddr; +var string URI; +var string UserName; +var string Password; +var int ContentLength; +var string ContentType; +var WebRequest.ERequestType RequestType; +var private native const Map_Mirror HeaderMap; +var private native const Map_Mirror VariableMap; + +// Export UWebRequest::execDecodeBase64(FFrame&, void* const) +native final function string DecodeBase64(string Encoded); + +// Export UWebRequest::execEncodeBase64(FFrame&, void* const) +native final function string EncodeBase64(string Decoded); + +// Export UWebRequest::execAddHeader(FFrame&, void* const) +native final function AddHeader(string HeaderName, coerce string Value); + +// Export UWebRequest::execGetHeader(FFrame&, void* const) +native final function string GetHeader(string HeaderName, optional string DefaultValue); + +// Export UWebRequest::execGetHeaders(FFrame&, void* const) +native final function GetHeaders(out array Headers); + +// Export UWebRequest::execAddVariable(FFrame&, void* const) +native final function AddVariable(string VariableName, coerce string Value); + +// Export UWebRequest::execGetVariable(FFrame&, void* const) +native final function string GetVariable(string VariableName, optional string DefaultValue); + +// Export UWebRequest::execGetVariableCount(FFrame&, void* const) +native final function int GetVariableCount(string VariableName); + +// Export UWebRequest::execGetVariableNumber(FFrame&, void* const) +native final function string GetVariableNumber(string VariableName, int Number, optional string DefaultValue); + +// Export UWebRequest::execGetVariables(FFrame&, void* const) +native final function GetVariables(out array varNames); + +// Export UWebRequest::execDump(FFrame&, void* const) +native final function Dump(); + +function ProcessHeaderString(string S) +{ + local int I; + + // End:0xBC + if(Left(S, 21) ~= "Authorization: Basic ") + { + S = DecodeBase64(Mid(S, 21)); + I = InStr(S, ":"); + // End:0xB9 + if(I != -1) + { + UserName = Left(S, I); + Password = Mid(S, I + 1); + } + } + else + { + // End:0xFE + if(Left(S, 16) ~= "Content-Length: ") + { + ContentLength = int(Mid(S, 16, 64)); + } + else + { + // End:0x138 + if(Left(S, 14) ~= "Content-Type: ") + { + ContentType = Mid(S, 14); + } + } + } + I = InStr(S, ":"); + // End:0x19D + if(I > -1) + { + AddHeader(Left(S, I), Mid(S, I + 2)); + } + //return; +} + +function DecodeFormData(string Data, optional int MaxValueLength = -1, optional int MaxLineLength = -1) +{ + local string Token[2], ch; + local int I, H1, H2, Limit, T; + + // End:0x4D + if(MaxValueLength == -1) + { + MaxValueLength = Class'IpDrv.WebConnection'.default.MaxValueLength; + } + // End:0x88 + if(MaxLineLength == -1) + { + MaxLineLength = Class'IpDrv.WebConnection'.default.MaxLineLength; + } + T = 0; + I = 0; + J0x9E: + + // End:0x33E [Loop If] + if(I < Len(Data)) + { + // End:0xEA + if((Limit > MaxValueLength) || I > MaxLineLength) + { + // [Explicit Break] + goto J0x33E; + } + ch = Mid(Data, I, 1); + switch(ch) + { + // End:0x152 + case "+": + Token[T] $= " "; + Limit++; + // End:0x330 + break; + // End:0x158 + case "&": + // End:0x1C5 + case "?": + // End:0x190 + if(Token[0] != "") + { + AddVariable(Token[0], Token[1]); + } + Token[0] = ""; + Token[1] = ""; + T = 0; + Limit = 0; + // End:0x330 + break; + // End:0x21B + case "=": + // End:0x1F3 + if(T == 0) + { + Limit = 0; + T = 1; + } + else + { + Token[1] $= "="; + Limit++; + } + // End:0x330 + break; + // End:0x2FA + case "%": + H1 = GetHexDigit(Mid(Data, ++I, 1)); + // End:0x2EC + if(H1 != -1) + { + Limit++; + H1 *= float(16); + H2 = GetHexDigit(Mid(Data, ++I, 1)); + // End:0x2EC + if(H2 != -1) + { + Token[T] $= Chr(H1 + H2); + } + } + Limit++; + // End:0x330 + break; + // End:0xFFFF + default: + Token[T] $= ch; + Limit++; + break; + } + I++; + // [Loop Continue] + goto J0x9E; + } + J0x33E: + + // End:0x370 + if(Token[0] != "") + { + AddVariable(Token[0], Token[1]); + } + //return; +} + +function int GetHexDigit(string D) +{ + switch(Caps(D)) + { + // End:0x1D + case "0": + return 0; + // End:0x25 + case "1": + return 1; + // End:0x2E + case "2": + return 2; + // End:0x37 + case "3": + return 3; + // End:0x40 + case "4": + return 4; + // End:0x49 + case "5": + return 5; + // End:0x52 + case "6": + return 6; + // End:0x5B + case "7": + return 7; + // End:0x64 + case "8": + return 8; + // End:0x6D + case "9": + return 9; + // End:0x76 + case "A": + return 10; + // End:0x7F + case "B": + return 11; + // End:0x88 + case "C": + return 12; + // End:0x91 + case "D": + return 13; + // End:0x9A + case "E": + return 14; + // End:0xA3 + case "F": + return 15; + // End:0xFFFF + default: + return -1; + break; + } + //return ReturnValue; +} diff --git a/exported/IpDrv/Classes/WebResponse.uc b/exported/IpDrv/Classes/WebResponse.uc new file mode 100755 index 00000000..d3a883c4 --- /dev/null +++ b/exported/IpDrv/Classes/WebResponse.uc @@ -0,0 +1,245 @@ +class WebResponse extends Object + native + config(Web); + +var array Headers; +var private native const Map_Mirror ReplacementMap; +var const config string IncludePath; +var const localized string CharSet; +var WebConnection Connection; +var protected bool bSentText; +var protected bool bSentResponse; + +// Export UWebResponse::execFileExists(FFrame&, void* const) +native final function bool FileExists(string Filename); + +// Export UWebResponse::execSubst(FFrame&, void* const) +native final function Subst(string Variable, coerce string Value, optional bool bClear); + +// Export UWebResponse::execClearSubst(FFrame&, void* const) +native final function ClearSubst(); + +// Export UWebResponse::execIncludeUHTM(FFrame&, void* const) +native final function bool IncludeUHTM(string Filename); + +// Export UWebResponse::execIncludeBinaryFile(FFrame&, void* const) +native final function bool IncludeBinaryFile(string Filename); + +// Export UWebResponse::execLoadParsedUHTM(FFrame&, void* const) +native final function string LoadParsedUHTM(string Filename); + +// Export UWebResponse::execGetHTTPExpiration(FFrame&, void* const) +native final function string GetHTTPExpiration(optional int OffsetSeconds); + +// Export UWebResponse::execDump(FFrame&, void* const) +native final function Dump(); + +event SendText(string Text, optional bool bNoCRLF) +{ + // End:0x28 + if(!bSentText) + { + SendStandardHeaders(); + bSentText = true; + } + // End:0x60 + if(bNoCRLF) + { + Connection.SendText(Text); + } + else + { + Connection.SendText((Text $ Chr(13)) $ Chr(10)); + } + //return; +} + +event SendBinary(int Count, byte B[255]) +{ + Connection.SendBinary(Count, B); + //return; +} + +function bool SendCachedFile(string Filename, optional string ContentType) +{ + // End:0x30 + if(!bSentText) + { + SendStandardHeaders(ContentType, true); + bSentText = true; + } + return IncludeUHTM(Filename); + //return ReturnValue; +} + +function FailAuthentication(string Realm) +{ + HTTPError(401, Realm); + //return; +} + +function HttpResponse(string Header) +{ + bSentResponse = true; + HTTPHeader(Header); + //return; +} + +function HTTPHeader(string Header) +{ + // End:0x10 + if(bSentText) + { + } + else + { + // End:0x3A + if(!bSentResponse) + { + HttpResponse("HTTP/1.1 200 Ok"); + } + // End:0x57 + if(Len(Header) == 0) + { + bSentText = true; + } + Connection.SendText((Header $ Chr(13)) $ Chr(10)); + } + //return; +} + +function AddHeader(string Header, optional bool bReplace = true) +{ + local int I, Idx; + local string Part, Entry; + + I = InStr(Header, ":"); + // End:0x59 + if(I > -1) + { + Part = Caps(Left(Header, I + 1)); + } + else + { + return; + } + // End:0x100 + foreach Headers(Entry, Idx) + { + // End:0xFF + if(InStr(Caps(Entry), Part) > -1) + { + // End:0xFC + if(bReplace) + { + // End:0xDF + if((I + 2) >= Len(Header)) + { + Headers.Remove(Idx, 1); + } + else + { + Headers[Idx] = Header; + } + } + return; + } + } + // End:0x134 + if(Len(Header) > (I + 2)) + { + Headers.AddItem(Header); + } + //return; +} + +function SendHeaders() +{ + local string hdr; + + // End:0x2B + foreach Headers(hdr) + { + HTTPHeader(hdr); + } + //return; +} + +function HTTPError(int ErrorNum, optional string Data) +{ + switch(ErrorNum) + { + // End:0x112 + case 400: + HttpResponse("HTTP/1.1 400 Bad Request"); + SendText("400 Bad Request

400 Bad Request

If you got this error from a standard web browser, please mail epicgames.com and submit a bug report."); + // End:0x2B1 + break; + // End:0x1EA + case 401: + HttpResponse("HTTP/1.1 401 Unauthorized"); + AddHeader(("WWW-authenticate: basic realm=\"" $ Data) $ "\""); + SendText("401 Unauthorized

401 Unauthorized

"); + // End:0x2B1 + break; + // End:0x2AB + case 404: + HttpResponse("HTTP/1.1 404 Not Found"); + SendText("404 File Not Found

404 File Not Found

The URL you requested was not found."); + // End:0x2B1 + break; + // End:0xFFFF + default: + // End:0x2B1 + break; + break; + } + //return; +} + +function SendStandardHeaders(optional string ContentType, optional bool bCache) +{ + // End:0x27 + if(ContentType == "") + { + ContentType = "text/html"; + } + // End:0x51 + if(!bSentResponse) + { + HttpResponse("HTTP/1.1 200 OK"); + } + AddHeader("Server: UnrealEngine IpDrv Web Server Build " $ Connection.WorldInfo.EngineVersion, false); + AddHeader("Content-Type: " $ ContentType, false); + // End:0x1A2 + if(bCache) + { + AddHeader("Cache-Control: max-age=" $ string(Connection.WebServer.ExpirationSeconds), false); + AddHeader("Expires: " $ GetHTTPExpiration(Connection.WebServer.ExpirationSeconds), false); + } + AddHeader("Connection: Close"); + SendHeaders(); + HTTPHeader(""); + //return; +} + +function Redirect(string URL) +{ + HttpResponse("HTTP/1.1 302 Document Moved"); + AddHeader("Location: " $ URL); + SendText("Document Moved"); + SendText(("

Object Moved

This document may be found here."); + //return; +} + +function bool SentText() +{ + return bSentText; + //return ReturnValue; +} + +function bool SentResponse() +{ + return bSentResponse; + //return ReturnValue; +} diff --git a/exported/IpDrv/Classes/WebServer.uc b/exported/IpDrv/Classes/WebServer.uc new file mode 100755 index 00000000..ecb5db47 --- /dev/null +++ b/exported/IpDrv/Classes/WebServer.uc @@ -0,0 +1,182 @@ +class WebServer extends TcpLink + transient + config(Web) + hidecategories(Navigation,Movement,Collision); + +var config string ServerName; +var config string Applications[10]; +var config string ApplicationPaths[10]; +var config bool bEnabled; +var config int ListenPort; +var config int MaxConnections; +var config int DefaultApplication; +var config int ExpirationSeconds; +var string ServerURL; +var WebApplication ApplicationObjects[10]; +var int ConnectionCount; +var int ConnID; + +function PostBeginPlay() +{ + local int I; + local Class ApplicationClass; + local IpAddr L; + local string S; + + // End:0x59 + if((int(WorldInfo.NetMode) == int(NM_Standalone)) || int(WorldInfo.NetMode) == int(NM_Client)) + { + Destroy(); + return; + } + // End:0x6D + if(!bEnabled) + { + Destroy(); + return; + } + super(Actor).PostBeginPlay(); + // End:0x124 + if(ServerName == "") + { + GetLocalIP(L); + S = IpAddrToString(L); + I = InStr(S, ":"); + // End:0x103 + if(I != -1) + { + S = Left(S, I); + } + ServerURL = "http://" $ S; + } + else + { + ServerURL = "http://" $ ServerName; + } + // End:0x177 + if(ListenPort != 80) + { + ServerURL = (ServerURL $ ":") $ string(ListenPort); + } + // End:0x31E + if((BindPort(ListenPort)) > 0) + { + // End:0x31B + if((Listen()) == true) + { + I = 0; + J0x1AC: + + // End:0x316 [Loop If] + if(I < 10) + { + // End:0x1D9 + if(Applications[I] == "") + { + // [Explicit Break] + goto J0x316; + } + ApplicationClass = Class(DynamicLoadObject(Applications[I], Class'Core.Class')); + // End:0x308 + if(ApplicationClass != none) + { + ApplicationObjects[I] = new (none) ApplicationClass; + ApplicationObjects[I].WorldInfo = WorldInfo; + ApplicationObjects[I].WebServer = self; + ApplicationObjects[I].Path = ApplicationPaths[I]; + ApplicationObjects[I].Init(); + } + I++; + // [Loop Continue] + goto J0x1AC; + } + J0x316: + + return; + } + } + Destroy(); + //return; +} + +event Destroyed() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x6B [Loop If] + if(I < 10) + { + // End:0x5D + if(ApplicationObjects[I] != none) + { + ApplicationObjects[I].CleanupApp(); + } + I++; + // [Loop Continue] + goto J0x0B; + } + super(Actor).Destroyed(); + //return; +} + +event GainedChild(Actor C) +{ + super(Actor).GainedChild(C); + ConnectionCount++; + // End:0x66 + if(((MaxConnections > 0) && ConnectionCount > MaxConnections) && int(LinkState) == int(2)) + { + Close(); + } + //return; +} + +event LostChild(Actor C) +{ + super(Actor).LostChild(C); + ConnectionCount--; + // End:0x55 + if((ConnectionCount <= MaxConnections) && int(LinkState) != int(2)) + { + Listen(); + } + //return; +} + +function WebApplication GetApplication(string URI, out string SubURI) +{ + local int I, L; + + SubURI = ""; + I = 0; + J0x17: + + // End:0x107 [Loop If] + if(I < 10) + { + // End:0xF9 + if(ApplicationPaths[I] != "") + { + L = Len(ApplicationPaths[I]); + // End:0xF9 + if((Left(URI, L) ~= ApplicationPaths[I]) && (Len(URI) == L) || Mid(URI, L, 1) == "/") + { + SubURI = Mid(URI, L); + return ApplicationObjects[I]; + } + } + I++; + // [Loop Continue] + goto J0x17; + } + return none; + //return ReturnValue; +} + +defaultproperties +{ + AcceptClass=Class'IpDrv.WebConnection' +} \ No newline at end of file diff --git a/exported/OnlineSubsystemMcts/Classes/MctsOnlineSettings.uc b/exported/OnlineSubsystemMcts/Classes/MctsOnlineSettings.uc new file mode 100755 index 00000000..5762f183 --- /dev/null +++ b/exported/OnlineSubsystemMcts/Classes/MctsOnlineSettings.uc @@ -0,0 +1,2 @@ +class MctsOnlineSettings extends OnlineGameSettings + native; diff --git a/exported/OnlineSubsystemMcts/Classes/OnlineGameInterfaceMcts.uc b/exported/OnlineSubsystemMcts/Classes/OnlineGameInterfaceMcts.uc new file mode 100755 index 00000000..f1c4173a --- /dev/null +++ b/exported/OnlineSubsystemMcts/Classes/OnlineGameInterfaceMcts.uc @@ -0,0 +1,142 @@ +class OnlineGameInterfaceMcts extends OnlineGameInterfaceImpl within OnlineSubsystemCommonImpl + native + config(Engine); + +enum EMctsMatchmakingType +{ + SMT_Invalid, // 0 + SMT_LAN, // 1 + SMT_Internet, // 2 + SMT_MAX // 3 +}; + +var MctsOnlineSettings MctsSettings; +var const OnlineVoiceInterfaceMcts MctsVoiceInt; +var array< delegate > GameInviteAcceptedDelegates; +var private const OnlineGameSearch InviteGameSearch; +var array< delegate > RegisterPlayerCompleteDelegates; +var array< delegate > UnregisterPlayerCompleteDelegates; +//var delegate __OnGameInviteAccepted__Delegate; +//var delegate __OnRegisterPlayerComplete__Delegate; +//var delegate __OnUnregisterPlayerComplete__Delegate; + +// Export UOnlineGameInterfaceMcts::execUpdateOnlineGame(FFrame&, void* const) +native function bool UpdateOnlineGame(name SessionName, OnlineGameSettings UpdatedGameSettings, optional bool bShouldRefreshOnlineData = false); + +function OnlineGameSettings GetGameSettings(name SessionName) +{ + local int SessionIndex; + + // End:0x21 + if(SessionName == 'Game') + { + return GameSettings; + } + SessionIndex = Outer.Sessions.Find('SessionName', SessionName); + // End:0xAE + if(SessionIndex != -1) + { + return Outer.Sessions[SessionIndex].GameSettings; + } + return none; + //return ReturnValue; +} + +function AddGameInviteAcceptedDelegate(byte LocalUserNum, delegate GameInviteAcceptedDelegate) +{ + // End:0x3E + if(GameInviteAcceptedDelegates.Find(GameInviteAcceptedDelegate) == -1) + { + GameInviteAcceptedDelegates[GameInviteAcceptedDelegates.Length] = GameInviteAcceptedDelegate; + } + //return; +} + +function ClearGameInviteAcceptedDelegate(byte LocalUserNum, delegate GameInviteAcceptedDelegate) +{ + local int RemoveIndex; + + RemoveIndex = GameInviteAcceptedDelegates.Find(GameInviteAcceptedDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + GameInviteAcceptedDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +delegate OnGameInviteAccepted(const out OnlineGameSearchResult InviteResult) +{ + //return; +} + +// Export UOnlineGameInterfaceMcts::execAcceptGameInvite(FFrame&, void* const) +native function bool AcceptGameInvite(byte LocalUserNum, name SessionName); + +// Export UOnlineGameInterfaceMcts::execRegisterPlayer(FFrame&, void* const) +native function bool RegisterPlayer(name SessionName, UniqueNetId PlayerID, bool bWasInvited); + +delegate OnRegisterPlayerComplete(name SessionName, UniqueNetId PlayerID, bool bWasSuccessful) +{ + //return; +} + +function AddRegisterPlayerCompleteDelegate(delegate RegisterPlayerCompleteDelegate) +{ + // End:0x3E + if(RegisterPlayerCompleteDelegates.Find(RegisterPlayerCompleteDelegate) == -1) + { + RegisterPlayerCompleteDelegates[RegisterPlayerCompleteDelegates.Length] = RegisterPlayerCompleteDelegate; + } + //return; +} + +function ClearRegisterPlayerCompleteDelegate(delegate RegisterPlayerCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = RegisterPlayerCompleteDelegates.Find(RegisterPlayerCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + RegisterPlayerCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UOnlineGameInterfaceMcts::execUnregisterPlayer(FFrame&, void* const) +native function bool UnregisterPlayer(name SessionName, UniqueNetId PlayerID); + +delegate OnUnregisterPlayerComplete(name SessionName, UniqueNetId PlayerID, bool bWasSuccessful) +{ + //return; +} + +function AddUnregisterPlayerCompleteDelegate(delegate UnregisterPlayerCompleteDelegate) +{ + // End:0x3E + if(UnregisterPlayerCompleteDelegates.Find(UnregisterPlayerCompleteDelegate) == -1) + { + UnregisterPlayerCompleteDelegates[UnregisterPlayerCompleteDelegates.Length] = UnregisterPlayerCompleteDelegate; + } + //return; +} + +function ClearUnregisterPlayerCompleteDelegate(delegate UnregisterPlayerCompleteDelegate) +{ + local int RemoveIndex; + + RemoveIndex = UnregisterPlayerCompleteDelegates.Find(UnregisterPlayerCompleteDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + UnregisterPlayerCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +function bool QueryNonAdvertisedData(int StartAt, int NumberToQuery) +{ + return false; + //return ReturnValue; +} diff --git a/exported/OnlineSubsystemMcts/Classes/OnlineSubsystemMcts.UPKG b/exported/OnlineSubsystemMcts/Classes/OnlineSubsystemMcts.UPKG new file mode 100755 index 00000000..1a07be93 --- /dev/null +++ b/exported/OnlineSubsystemMcts/Classes/OnlineSubsystemMcts.UPKG @@ -0,0 +1,4 @@ +[Flags] +AllowDownload=False +ClientOptional=False +ServerSideOnly=False diff --git a/exported/OnlineSubsystemMcts/Classes/OnlineSubsystemMcts.uc b/exported/OnlineSubsystemMcts/Classes/OnlineSubsystemMcts.uc new file mode 100755 index 00000000..a6325d51 --- /dev/null +++ b/exported/OnlineSubsystemMcts/Classes/OnlineSubsystemMcts.uc @@ -0,0 +1,1073 @@ +class OnlineSubsystemMcts extends OnlineSubsystemCommonImpl + native + config(Engine) + implements(OnlinePlayerInterface,OnlineSystemInterface,OnlineChatInterface); + +struct native ControllerConnectionState +{ + var const int bIsControllerConnected; + var const int bLastIsControllerConnected; + + structdefaultproperties + { + bIsControllerConnected=0 + bLastIsControllerConnected=0 + } +}; + +var const OnlineGameInterfaceMcts MctsGameInt; +var const OnlineVoiceInterfaceMcts MctsVoiceInt; +var const localized string LocalProfileName; +var const string LoggedInPlayerName; +var const string LoggedInPlayerClanTag; +var const UniqueNetId LoggedInPlayerId; +var const int LoggedInPlayerNum; +var const OnlineSubsystem.ELoginStatus LoggedInStatus; +var const byte bWasKeyboardInputCanceled; +var config OnlineSubsystem.ENetworkNotificationPosition CurrentNotificationPosition; +var config string ProfileDataDirectory; +var config string ProfileDataExtension; +var const UniqueNetId LocalTeamChatId; +var const UniqueNetId InstanceChatId; +var array< delegate > ConnectionStatusChangeDelegates; +var array< delegate > LoginChangeDelegates; +var array< delegate > LoginFailedDelegates; +var array< delegate > LogoutCompletedDelegates; +var array< delegate > LinkStatusDelegates; +var array< delegate > ChatMessageDelegates; +var const string KeyboardResultsString; +var const bool bNeedsKeyboardTicking; +var bool bLastHasConnection; +var const config bool bShouldUseMcp; +var array< delegate > KeyboardInputDelegates; +var ControllerConnectionState ControllerStates[4]; +var float ConnectionPresenceTimeInterval; +var float ConnectionPresenceElapsedTime; +//var delegate __OnLoginChange__Delegate; +//var delegate __OnLoginFailed__Delegate; +//var delegate __OnLogoutCompleted__Delegate; +//var delegate __OnLinkStatusChange__Delegate; +//var delegate __OnExternalUIChange__Delegate; +//var delegate __OnControllerChange__Delegate; +//var delegate __OnConnectionStatusChange__Delegate; +//var delegate __OnStorageDeviceChange__Delegate; +//var delegate __OnChatMessage__Delegate; +//var delegate __OnLoginStatusChange__Delegate; +//var delegate __OnLoginCancelled__Delegate; +//var delegate __OnMutingChange__Delegate; +//var delegate __OnReadProfileSettingsComplete__Delegate; +//var delegate __OnWriteProfileSettingsComplete__Delegate; +//var delegate __OnReadPlayerStorageComplete__Delegate; +//var delegate __OnReadPlayerStorageForNetIdComplete__Delegate; +//var delegate __OnWritePlayerStorageComplete__Delegate; +//var delegate __OnFriendsChange__Delegate; +//var delegate __OnReadFriendsComplete__Delegate; +//var delegate __OnKeyboardInputComplete__Delegate; +//var delegate __OnAddFriendByNameComplete__Delegate; +//var delegate __OnFriendInviteReceived__Delegate; +//var delegate __OnReceivedGameInvite__Delegate; +//var delegate __OnJoinFriendGameComplete__Delegate; +//var delegate __OnFriendMessageReceived__Delegate; +//var delegate __OnUnlockAchievementComplete__Delegate; +//var delegate __OnReadAchievementsComplete__Delegate; +//var delegate __OnAccountPickerComplete__Delegate; +//var delegate __OnCurrentUserChanged__Delegate; +//var delegate __OnPrivilegeLevelChecked__Delegate; +//var delegate __OnPrivilegeCheckedForUsers__Delegate; +//var delegate __OnSystemUserControllerPairingChanged__Delegate; +//var delegate __OnTokenAndSignatureRetrieved__Delegate; +//var delegate __OnUserAccountInfoRetrieved__Delegate; + +// Export UOnlineSubsystemMcts::execInit(FFrame&, void* const) +native event bool Init(); + +delegate OnLoginChange(byte LocalUserNum) +{ + //return; +} + +// Export UOnlineSubsystemMcts::execLogin(FFrame&, void* const) +native function bool Login(byte LocalUserNum, string LoginName, string Password, optional bool bWantsLocalOnly); + +// Export UOnlineSubsystemMcts::execRequestNewPlayer(FFrame&, void* const) +native function bool RequestNewPlayer(byte LocalUserNum, string LoginName, string Password, string DesiredPlayerName); + +// Export UOnlineSubsystemMcts::execAutoLogin(FFrame&, void* const) +native function bool AutoLogin(); + +delegate OnLoginFailed(byte LocalUserNum, OnlineSubsystem.EOnlineServerConnectionStatus ErrorCode) +{ + //return; +} + +function AddLoginFailedDelegate(byte LocalUserNum, delegate LoginFailedDelegate) +{ + // End:0x3E + if(LoginFailedDelegates.Find(LoginFailedDelegate) == -1) + { + LoginFailedDelegates[LoginFailedDelegates.Length] = LoginFailedDelegate; + } + //return; +} + +function ClearLoginFailedDelegate(byte LocalUserNum, delegate LoginFailedDelegate) +{ + local int RemoveIndex; + + RemoveIndex = LoginFailedDelegates.Find(LoginFailedDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + LoginFailedDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UOnlineSubsystemMcts::execLogout(FFrame&, void* const) +native function bool Logout(byte LocalUserNum); + +delegate OnLogoutCompleted(bool bWasSuccessful) +{ + //return; +} + +function AddLogoutCompletedDelegate(byte LocalUserNum, delegate LogoutDelegate) +{ + // End:0x3E + if(LogoutCompletedDelegates.Find(LogoutDelegate) == -1) + { + LogoutCompletedDelegates[LogoutCompletedDelegates.Length] = LogoutDelegate; + } + //return; +} + +function ClearLogoutCompletedDelegate(byte LocalUserNum, delegate LogoutDelegate) +{ + local int RemoveIndex; + + RemoveIndex = LogoutCompletedDelegates.Find(LogoutDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + LogoutCompletedDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UOnlineSubsystemMcts::execGetLoginStatus(FFrame&, void* const) +native function OnlineSubsystem.ELoginStatus GetLoginStatus(byte LocalUserNum); + +function bool IsGuestLogin(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool IsLocalLogin(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool GetUniquePlayerId(byte LocalUserNum, out UniqueNetId PlayerID) +{ + PlayerID = LoggedInPlayerId; + return true; + //return ReturnValue; +} + +function bool GetControllerIdFromNetId(UniqueNetId PlayerID, out int ControllerId) +{ + //return ReturnValue; +} + +function CacheLoggedInGamepad() +{ + //return; +} + +function string GetPlayerNickname(byte LocalUserNum) +{ + return GetPlayerMctsName(); + //return ReturnValue; +} + +// Export UOnlineSubsystemMcts::execCanPlayOnline(FFrame&, void* const) +native function bool CanPlayOnline(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = ""); + +function OnlineSubsystem.EFeaturePrivilegeLevel CanDownloadUserContent(byte LocalUserNum) +{ + local OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint; + + CanPlayOnline(LocalUserNum, PrivilegeLevelHint); + return PrivilegeLevelHint; + //return ReturnValue; +} + +function bool CanPurchaseContent(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + return true; + //return ReturnValue; +} + +function bool CanViewPlayerProfiles(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + return true; + //return ReturnValue; +} + +function bool CanShowPresenceInformation(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + return true; + //return ReturnValue; +} + +// Export UOnlineSubsystemMcts::execIsFriend(FFrame&, void* const) +native function bool IsFriend(byte LocalUserNum, UniqueNetId PlayerID); + +// Export UOnlineSubsystemMcts::execAreAnyFriends(FFrame&, void* const) +native function bool AreAnyFriends(byte LocalUserNum, out array Query); + +// Export UOnlineSubsystemMcts::execGetPlayerMctsName(FFrame&, void* const) +native function string GetPlayerMctsName(); + +function AddLoginChangeDelegate(delegate LoginDelegate) +{ + // End:0x3E + if(LoginChangeDelegates.Find(LoginDelegate) == -1) + { + LoginChangeDelegates[LoginChangeDelegates.Length] = LoginDelegate; + } + //return; +} + +function ClearLoginChangeDelegate(delegate LoginDelegate) +{ + local int RemoveIndex; + + RemoveIndex = LoginChangeDelegates.Find(LoginDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + LoginChangeDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UOnlineSubsystemMcts::execNeedEULA(FFrame&, void* const) +native function bool NeedEULA(); + +event string GetPlayerNicknameFromIndex(int UserIndex) +{ + // End:0x1A + if(UserIndex == 0) + { + return GetPlayerMctsName(); + } + return ""; + //return ReturnValue; +} + +event UniqueNetId GetPlayerUniqueNetIdFromIndex(int UserIndex) +{ + local UniqueNetId Zero; + + // End:0x19 + if(UserIndex == 0) + { + return LoggedInPlayerId; + } + return Zero; + //return ReturnValue; +} + +// Export UOnlineSubsystemMcts::execHasLinkConnection(FFrame&, void* const) +native function bool HasLinkConnection(); + +delegate OnLinkStatusChange(bool bIsConnected) +{ + //return; +} + +function AddLinkStatusChangeDelegate(delegate LinkStatusDelegate) +{ + // End:0x3E + if(LinkStatusDelegates.Find(LinkStatusDelegate) == -1) + { + LinkStatusDelegates[LinkStatusDelegates.Length] = LinkStatusDelegate; + } + //return; +} + +function ClearLinkStatusChangeDelegate(delegate LinkStatusDelegate) +{ + local int RemoveIndex; + + RemoveIndex = LinkStatusDelegates.Find(LinkStatusDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + LinkStatusDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +delegate OnExternalUIChange(bool bIsOpening) +{ + //return; +} + +function AddExternalUIChangeDelegate(delegate ExternalUIDelegate) +{ + //return; +} + +function ClearExternalUIChangeDelegate(delegate ExternalUIDelegate) +{ + //return; +} + +function OnlineSubsystem.ENetworkNotificationPosition GetNetworkNotificationPosition() +{ + return CurrentNotificationPosition; + //return ReturnValue; +} + +delegate OnControllerChange(int ControllerId, bool bIsConnected, bool bPauseGame) +{ + //return; +} + +function AddControllerChangeDelegate(delegate ControllerChangeDelegate) +{ + //return; +} + +function ClearControllerChangeDelegate(delegate ControllerChangeDelegate) +{ + //return; +} + +// Export UOnlineSubsystemMcts::execIsControllerConnected(FFrame&, void* const) +native function bool IsControllerConnected(int ControllerId); + +delegate OnConnectionStatusChange(OnlineSubsystem.EOnlineServerConnectionStatus ConnectionStatus) +{ + //return; +} + +function AddConnectionStatusChangeDelegate(delegate ConnectionStatusDelegate) +{ + // End:0x3E + if(ConnectionStatusChangeDelegates.Find(ConnectionStatusDelegate) == -1) + { + ConnectionStatusChangeDelegates[ConnectionStatusChangeDelegates.Length] = ConnectionStatusDelegate; + } + //return; +} + +function ClearConnectionStatusChangeDelegate(delegate ConnectionStatusDelegate) +{ + local int RemoveIndex; + + RemoveIndex = ConnectionStatusChangeDelegates.Find(ConnectionStatusDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + ConnectionStatusChangeDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UOnlineSubsystemMcts::execGetNATType(FFrame&, void* const) +native function OnlineSubsystem.ENATType GetNATType(); + +delegate OnStorageDeviceChange() +{ + //return; +} + +function AddStorageDeviceChangeDelegate(delegate StorageDeviceChangeDelegate) +{ + //return; +} + +function ClearStorageDeviceChangeDelegate(delegate StorageDeviceChangeDelegate) +{ + //return; +} + +delegate OnChatMessage(int Channel, string Sender, string Message) +{ + //return; +} + +function AddChatMessageDelegate(delegate ChatDelegate) +{ + // End:0x3E + if(ChatMessageDelegates.Find(ChatDelegate) == -1) + { + ChatMessageDelegates[ChatMessageDelegates.Length] = ChatDelegate; + } + //return; +} + +function ClearChatMessageDelegate(delegate ChatDelegate) +{ + local int RemoveIndex; + + RemoveIndex = ChatMessageDelegates.Find(ChatDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + ChatMessageDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UOnlineSubsystemMcts::execSendChatMessage(FFrame&, void* const) +native function SendChatMessage(int Channel, string Message); + +// Export UOnlineSubsystemMcts::execSendPrivateChatMessage(FFrame&, void* const) +native function SendPrivateChatMessage(string PlayerName, string Message); + +// Export UOnlineSubsystemMcts::execNotifyTeamChange(FFrame&, void* const) +native function NotifyTeamChange(QWord PlayerUID, byte TeamID); + +function bool IsMuted(byte LocalUserNum, UniqueNetId PlayerID) +{ + //return ReturnValue; +} + +// Export UOnlineSubsystemMcts::execCanCommunicate(FFrame&, void* const) +native function OnlineSubsystem.EFeaturePrivilegeLevel CanCommunicate(byte LocalUserNum); + +delegate OnLoginStatusChange(OnlineSubsystem.ELoginStatus NewStatus, UniqueNetId NewId) +{ + //return; +} + +function AddLoginStatusChangeDelegate(delegate LoginStatusDelegate, byte LocalUserNum) +{ + //return; +} + +function ClearLoginStatusChangeDelegate(delegate LoginStatusDelegate, byte LocalUserNum) +{ + //return; +} + +delegate OnLoginCancelled() +{ + //return; +} + +function AddLoginCancelledDelegate(delegate CancelledDelegate) +{ + //return; +} + +function ClearLoginCancelledDelegate(delegate CancelledDelegate) +{ + //return; +} + +function bool ReadProfileSettings(byte LocalUserNum, OnlineProfileSettings ProfileSettings) +{ + //return ReturnValue; +} + +function bool WriteProfileSettings(byte LocalUserNum, OnlineProfileSettings ProfileSettings) +{ + //return ReturnValue; +} + +function OnlineProfileSettings GetProfileSettings(byte LocalUserNum) +{ + //return ReturnValue; +} + +delegate OnMutingChange() +{ + //return; +} + +function AddMutingChangeDelegate(delegate MutingDelegate) +{ + //return; +} + +function ClearMutingChangeDelegate(delegate MutingDelegate) +{ + //return; +} + +delegate OnReadProfileSettingsComplete(byte LocalUserNum, bool bWasSuccessful) +{ + //return; +} + +function AddReadProfileSettingsCompleteDelegate(byte LocalUserNum, delegate ReadProfileSettingsCompleteDelegate) +{ + //return; +} + +function ClearReadProfileSettingsCompleteDelegate(byte LocalUserNum, delegate ReadProfileSettingsCompleteDelegate) +{ + //return; +} + +delegate OnWriteProfileSettingsComplete(byte LocalUserNum, bool bWasSuccessful) +{ + //return; +} + +function AddWriteProfileSettingsCompleteDelegate(byte LocalUserNum, delegate WriteProfileSettingsCompleteDelegate) +{ + //return; +} + +function ClearWriteProfileSettingsCompleteDelegate(byte LocalUserNum, delegate WriteProfileSettingsCompleteDelegate) +{ + //return; +} + +function bool ReadPlayerStorage(byte LocalUserNum, OnlinePlayerStorage PlayerStorage, optional int DeviceID = -1) +{ + //return ReturnValue; +} + +delegate OnReadPlayerStorageComplete(byte LocalUserNum, bool bWasSuccessful) +{ + //return; +} + +function AddReadPlayerStorageCompleteDelegate(byte LocalUserNum, delegate ReadPlayerStorageCompleteDelegate) +{ + //return; +} + +function ClearReadPlayerStorageCompleteDelegate(byte LocalUserNum, delegate ReadPlayerStorageCompleteDelegate) +{ + //return; +} + +function bool ReadPlayerStorageForNetId(byte LocalUserNum, UniqueNetId NetId, OnlinePlayerStorage PlayerStorage) +{ + //return ReturnValue; +} + +delegate OnReadPlayerStorageForNetIdComplete(UniqueNetId NetId, bool bWasSuccessful) +{ + //return; +} + +function AddReadPlayerStorageForNetIdCompleteDelegate(UniqueNetId NetId, delegate ReadPlayerStorageForNetIdCompleteDelegate) +{ + //return; +} + +function ClearReadPlayerStorageForNetIdCompleteDelegate(UniqueNetId NetId, delegate ReadPlayerStorageForNetIdCompleteDelegate) +{ + //return; +} + +function OnlinePlayerStorage GetPlayerStorage(byte LocalUserNum) +{ + //return ReturnValue; +} + +function bool WritePlayerStorage(byte LocalUserNum, OnlinePlayerStorage PlayerStorage, optional int DeviceID = -1) +{ + //return ReturnValue; +} + +delegate OnWritePlayerStorageComplete(byte LocalUserNum, bool bWasSuccessful) +{ + //return; +} + +function AddWritePlayerStorageCompleteDelegate(byte LocalUserNum, delegate WritePlayerStorageCompleteDelegate) +{ + //return; +} + +function ClearWritePlayerStorageCompleteDelegate(byte LocalUserNum, delegate WritePlayerStorageCompleteDelegate) +{ + //return; +} + +delegate OnFriendsChange() +{ + //return; +} + +function AddFriendsChangeDelegate(byte LocalUserNum, delegate FriendsDelegate) +{ + //return; +} + +function ClearFriendsChangeDelegate(byte LocalUserNum, delegate FriendsDelegate) +{ + //return; +} + +function bool ReadFriendsList(byte LocalUserNum, optional int Count, optional int StartingAt) +{ + //return ReturnValue; +} + +delegate OnReadFriendsComplete(bool bWasSuccessful) +{ + //return; +} + +function AddReadFriendsCompleteDelegate(byte LocalUserNum, delegate ReadFriendsCompleteDelegate) +{ + //return; +} + +function ClearReadFriendsCompleteDelegate(byte LocalUserNum, delegate ReadFriendsCompleteDelegate) +{ + //return; +} + +function OnlineSubsystem.EOnlineEnumerationReadState GetFriendsList(byte LocalUserNum, out array Friends, optional int Count, optional int StartingAt) +{ + //return ReturnValue; +} + +function SetOnlineStatus(byte LocalUserNum, string StatusString, optional bool PlayerActive = true) +{ + //return; +} + +function bool ShowKeyboardUI(byte LocalUserNum, string TitleText, string DescriptionText, optional bool bIsPassword = false, optional bool bShouldValidate = true, optional string DefaultText, optional int MaxResultLength = 256) +{ + //return ReturnValue; +} + +delegate OnKeyboardInputComplete(bool bWasSuccessful) +{ + //return; +} + +function AddKeyboardInputDoneDelegate(delegate InputDelegate) +{ + //return; +} + +function ClearKeyboardInputDoneDelegate(delegate InputDelegate) +{ + //return; +} + +function string GetKeyboardInputResults(out byte bWasCanceled) +{ + //return ReturnValue; +} + +function bool AddFriend(byte LocalUserNum, UniqueNetId NewFriend, optional string Message) +{ + //return ReturnValue; +} + +function bool AddFriendByName(byte LocalUserNum, string FriendName, optional string Message) +{ + //return ReturnValue; +} + +delegate OnAddFriendByNameComplete(bool bWasSuccessful) +{ + //return; +} + +function AddAddFriendByNameCompleteDelegate(byte LocalUserNum, delegate FriendDelegate) +{ + //return; +} + +function ClearAddFriendByNameCompleteDelegate(byte LocalUserNum, delegate FriendDelegate) +{ + //return; +} + +function bool AcceptFriendInvite(byte LocalUserNum, UniqueNetId RequestingPlayer) +{ + //return ReturnValue; +} + +function bool DenyFriendInvite(byte LocalUserNum, UniqueNetId RequestingPlayer) +{ + //return ReturnValue; +} + +function bool RemoveFriend(byte LocalUserNum, UniqueNetId FormerFriend) +{ + //return ReturnValue; +} + +delegate OnFriendInviteReceived(byte LocalUserNum, UniqueNetId RequestingPlayer, string RequestingNick, string Message) +{ + //return; +} + +function AddFriendInviteReceivedDelegate(byte LocalUserNum, delegate InviteDelegate) +{ + //return; +} + +function ClearFriendInviteReceivedDelegate(byte LocalUserNum, delegate InviteDelegate) +{ + //return; +} + +function bool SendMessageToFriend(byte LocalUserNum, UniqueNetId Friend, string Message) +{ + //return ReturnValue; +} + +function bool SendGameInviteToFriend(byte LocalUserNum, name SessionName, UniqueNetId Friend, optional string Text) +{ + //return ReturnValue; +} + +function bool SendGameInviteToFriends(byte LocalUserNum, name SessionName, array Friends, optional string Text) +{ + //return ReturnValue; +} + +delegate OnReceivedGameInvite(byte LocalUserNum, string InviterName) +{ + //return; +} + +function AddReceivedGameInviteDelegate(byte LocalUserNum, delegate ReceivedGameInviteDelegate) +{ + //return; +} + +function ClearReceivedGameInviteDelegate(byte LocalUserNum, delegate ReceivedGameInviteDelegate) +{ + //return; +} + +function CheckForGameInviteOnLaunch() +{ + //return; +} + +function bool JoinFriendGame(byte LocalUserNum, UniqueNetId Friend) +{ + //return ReturnValue; +} + +delegate OnJoinFriendGameComplete(bool bWasSuccessful) +{ + //return; +} + +function AddJoinFriendGameCompleteDelegate(delegate JoinFriendGameCompleteDelegate) +{ + //return; +} + +function ClearJoinFriendGameCompleteDelegate(delegate JoinFriendGameCompleteDelegate) +{ + //return; +} + +function GetFriendMessages(byte LocalUserNum, out array FriendMessages) +{ + //return; +} + +delegate OnFriendMessageReceived(byte LocalUserNum, UniqueNetId SendingPlayer, string SendingNick, string Message) +{ + //return; +} + +function AddFriendMessageReceivedDelegate(byte LocalUserNum, delegate MessageDelegate) +{ + //return; +} + +function ClearFriendMessageReceivedDelegate(byte LocalUserNum, delegate MessageDelegate) +{ + //return; +} + +function bool UnlockAchievement(byte LocalUserNum, int AchievementId, optional float PercentComplete = 100.0000000) +{ + //return ReturnValue; +} + +function bool ReadAchievements(byte LocalUserNum, optional int TitleId = 0, optional bool bShouldReadText = true, optional bool bShouldReadImages = false) +{ + //return ReturnValue; +} + +function OnlineSubsystem.EOnlineEnumerationReadState GetAchievements(byte LocalUserNum, out array Achievements, optional int TitleId = 0) +{ + //return ReturnValue; +} + +delegate OnUnlockAchievementComplete(bool bWasSuccessful) +{ + //return; +} + +function AddUnlockAchievementCompleteDelegate(byte LocalUserNum, delegate UnlockAchievementCompleteDelegate) +{ + //return; +} + +function ClearUnlockAchievementCompleteDelegate(byte LocalUserNum, delegate UnlockAchievementCompleteDelegate) +{ + //return; +} + +delegate OnReadAchievementsComplete(int TitleId) +{ + //return; +} + +function AddReadAchievementsCompleteDelegate(byte LocalUserNum, delegate ReadAchievementsCompleteDelegate) +{ + //return; +} + +function ClearReadAchievementsCompleteDelegate(byte LocalUserNum, delegate ReadAchievementsCompleteDelegate) +{ + //return; +} + +function bool DeleteMessage(byte LocalUserNum, int MessageIndex) +{ + //return ReturnValue; +} + +function bool ShowFriendsUI(byte LocalUserNum) +{ + //return ReturnValue; +} + +delegate OnAccountPickerComplete(bool bForceLogin) +{ + //return; +} + +function AddAccountPickerCompleteDelegate(delegate InDelegate) +{ + //return; +} + +function RemoveAccountPickerCompleteDelegate(delegate InDelegate) +{ + //return; +} + +function bool ShowLoginUI(byte LocalUserNum, optional bool bForceLogin, optional bool bShowOnlineOnly = false) +{ + //return ReturnValue; +} + +function SetNetworkNotificationPosition(OnlineSubsystem.ENetworkNotificationPosition NewPos) +{ + //return; +} + +function int GetLocale() +{ + //return ReturnValue; +} + +function ClearAchievements(byte LocalUserNum, optional int TitleId = 0) +{ + //return; +} + +function bool HideKeyboardUI(byte LocalUserNum) +{ + //return ReturnValue; +} + +delegate OnCurrentUserChanged(byte LocalUserNum, string CurrentUser, string LoggedInUser) +{ + //return; +} + +function AddCurrentUserChangedDelegate(delegate CurrentUserDelegate) +{ + //return; +} + +function ClearCurrentUserChangedDelegate(delegate CurrentUserDelegate) +{ + //return; +} + +delegate OnPrivilegeLevelChecked(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevel, bool bDiffersFromHint) +{ + //return; +} + +function AddPrivilegeLevelCheckedDelegate(delegate PrivilegeDelegate) +{ + //return; +} + +function ClearPrivilegeLevelCheckedDelegate(delegate PrivilegeDelegate) +{ + //return; +} + +delegate OnPrivilegeCheckedForUsers(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, array Results) +{ + //return; +} + +function AddPrivilegeCheckedForUsersDelegate(delegate PrivilegeDelegate) +{ + //return; +} + +function ClearPrivilegeCheckedForUsersDelegate(delegate PrivilegeDelegate) +{ + //return; +} + +function bool CanCommunicateText(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanCommunicateVideo(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanCommunicateVoice(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanCommunicateVoiceWithUsers(byte LocalUserNum, array Users) +{ + //return ReturnValue; +} + +function bool CanShareUserCreatedContent(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanRecordDVRClips(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanUseCloudStorage(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanAccessPremiumContent(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanAccessPremiumVideoContent(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanBrowseInternet(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanShareWithSocialNetwork(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanShareKinectContent(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +function bool CanUploadFitnessData(byte LocalUserNum, out OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevelHint, optional bool bAttemptToResolve = false, optional string Reason = "") +{ + //return ReturnValue; +} + +delegate OnSystemUserControllerPairingChanged(int NewLocalUserNum, int PreviousLocalUserNum) +{ + //return; +} + +function AddSystemUserContrllerPairingChangedDelegate(delegate PairingChangeDelegate) +{ + //return; +} + +function ClearSystemUserContrllerPairingChangedDelegate(delegate PairingChangeDelegate) +{ + //return; +} + +function bool PairUserAndControllerAtIndex(byte PlayerIndex, byte ControllerIndex, int PairIndex) +{ + //return ReturnValue; +} + +function OnlineSubsystem.EOnlineServerConnectionStatus GetCurrentConnectionStatus() +{ + //return ReturnValue; +} + +delegate OnTokenAndSignatureRetrieved(byte LocalUserNum, string URL, string Token, string Signature) +{ + //return; +} + +function GetTokenAndSignatureForURL(byte LocalUserNum, string URL) +{ + //return; +} + +function AddURLTokenRetrievedDelegate(byte LocalUserNum, delegate tsrDelegate) +{ + //return; +} + +function ClearURLTokenRetrievedDelegate(byte LocalUserNum, delegate tsrDelegate) +{ + //return; +} + +delegate OnUserAccountInfoRetrieved(bool bSuccessful, UserAccountInfo AccountInfo) +{ + //return; +} + +function bool GetUserAccountInfo(byte LocalUserNum) +{ + //return ReturnValue; +} + +function AddGetUserAccountInfoDelegate(delegate InDelegate) +{ + //return; +} + +function ClearGetUserAccountInfoDelegate(delegate InDelegate) +{ + //return; +} + +defaultproperties +{ + LoggedInPlayerName="Local Profile" + CurrentNotificationPosition=ENetworkNotificationPosition.NNP_BottomRight + ConnectionPresenceTimeInterval=0.5000000 +} \ No newline at end of file diff --git a/exported/OnlineSubsystemMcts/Classes/OnlineVoiceInterfaceMcts.uc b/exported/OnlineSubsystemMcts/Classes/OnlineVoiceInterfaceMcts.uc new file mode 100755 index 00000000..e21642fe --- /dev/null +++ b/exported/OnlineSubsystemMcts/Classes/OnlineVoiceInterfaceMcts.uc @@ -0,0 +1,188 @@ +class OnlineVoiceInterfaceMcts extends Object within OnlineSubsystemMcts + native + implements(OnlineVoiceInterface); + +enum EMuteType +{ + MUTE_None, // 0 + MUTE_AllButFriends, // 1 + MUTE_All, // 2 + MUTE_MAX // 3 +}; + +struct native LocalTalkerMcts +{ + var bool bHasVoice; + var bool bHasNetworkedVoice; + var bool bIsRecognizingSpeech; + var bool bWasTalking; + var bool bIsTalking; + var bool bIsRegistered; + var OnlineVoiceInterfaceMcts.EMuteType MuteType; + + structdefaultproperties + { + bHasVoice=false + bHasNetworkedVoice=false + bIsRecognizingSpeech=false + bWasTalking=false + bIsTalking=false + bIsRegistered=false + MuteType=EMuteType.MUTE_None + } +}; + +var native const transient Pointer MctsSubsystem; +var native const transient Pointer VoiceEnginePtr; +var LocalTalkerMcts CurrentLocalTalker; +var array RemoteTalkers; +var const array MuteList; +var array< delegate > SpeechRecognitionCompleteDelegates; +var array< delegate > TalkingDelegates; +//var delegate __OnPlayerTalkingStateChange__Delegate; +//var delegate __OnRecognitionComplete__Delegate; + +// Export UOnlineVoiceInterfaceMcts::execRegisterLocalTalker(FFrame&, void* const) +native function bool RegisterLocalTalker(byte LocalUserNum, optional byte ChannelIndex); + +// Export UOnlineVoiceInterfaceMcts::execUnregisterLocalTalker(FFrame&, void* const) +native function bool UnregisterLocalTalker(byte LocalUserNum, optional byte ChannelIndex); + +// Export UOnlineVoiceInterfaceMcts::execRegisterRemoteTalker(FFrame&, void* const) +native function bool RegisterRemoteTalker(UniqueNetId PlayerID); + +// Export UOnlineVoiceInterfaceMcts::execUnregisterRemoteTalker(FFrame&, void* const) +native function bool UnregisterRemoteTalker(UniqueNetId PlayerID); + +// Export UOnlineVoiceInterfaceMcts::execIsLocalPlayerTalking(FFrame&, void* const) +native function bool IsLocalPlayerTalking(byte LocalUserNum); + +// Export UOnlineVoiceInterfaceMcts::execIsRemotePlayerTalking(FFrame&, void* const) +native function bool IsRemotePlayerTalking(UniqueNetId PlayerID); + +// Export UOnlineVoiceInterfaceMcts::execIsHeadsetPresent(FFrame&, void* const) +native function bool IsHeadsetPresent(byte LocalUserNum); + +// Export UOnlineVoiceInterfaceMcts::execSetRemoteTalkerPriority(FFrame&, void* const) +native function bool SetRemoteTalkerPriority(byte LocalUserNum, UniqueNetId PlayerID, int Priority); + +function bool UpdatePlayerMuteSetting(bool PlayerMuteSetting) +{ + //return ReturnValue; +} + +// Export UOnlineVoiceInterfaceMcts::execMuteRemoteTalker(FFrame&, void* const) +native function bool MuteRemoteTalker(byte LocalUserNum, UniqueNetId PlayerID, optional bool bIsSystemWide); + +// Export UOnlineVoiceInterfaceMcts::execUnmuteRemoteTalker(FFrame&, void* const) +native function bool UnmuteRemoteTalker(byte LocalUserNum, UniqueNetId PlayerID, optional bool bIsSystemWide); + +function bool IsTalkerMuted(UniqueNetId ConsoleId) +{ + //return ReturnValue; +} + +delegate OnPlayerTalkingStateChange(UniqueNetId Player, bool bIsTalking) +{ + //return; +} + +function AddPlayerTalkingDelegate(delegate TalkerDelegate) +{ + local int AddIndex; + + // End:0x69 + if(TalkingDelegates.Find(TalkerDelegate) == -1) + { + AddIndex = TalkingDelegates.Length; + TalkingDelegates.Length = TalkingDelegates.Length + 1; + TalkingDelegates[AddIndex] = TalkerDelegate; + } + //return; +} + +function ClearPlayerTalkingDelegate(delegate TalkerDelegate) +{ + local int RemoveIndex; + + RemoveIndex = TalkingDelegates.Find(TalkerDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + TalkingDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UOnlineVoiceInterfaceMcts::execStartNetworkedVoice(FFrame&, void* const) +native function StartNetworkedVoice(byte LocalUserNum); + +// Export UOnlineVoiceInterfaceMcts::execStopNetworkedVoice(FFrame&, void* const) +native function StopNetworkedVoice(byte LocalUserNum); + +// Export UOnlineVoiceInterfaceMcts::execStartSpeechRecognition(FFrame&, void* const) +native function bool StartSpeechRecognition(byte LocalUserNum); + +// Export UOnlineVoiceInterfaceMcts::execStopSpeechRecognition(FFrame&, void* const) +native function bool StopSpeechRecognition(byte LocalUserNum); + +// Export UOnlineVoiceInterfaceMcts::execGetRecognitionResults(FFrame&, void* const) +native function bool GetRecognitionResults(byte LocalUserNum, out array Words); + +delegate OnRecognitionComplete() +{ + //return; +} + +function AddRecognitionCompleteDelegate(byte LocalUserNum, delegate RecognitionDelegate) +{ + // End:0x3E + if(SpeechRecognitionCompleteDelegates.Find(RecognitionDelegate) == -1) + { + SpeechRecognitionCompleteDelegates[SpeechRecognitionCompleteDelegates.Length] = RecognitionDelegate; + } + //return; +} + +function ClearRecognitionCompleteDelegate(byte LocalUserNum, delegate RecognitionDelegate) +{ + local int RemoveIndex; + + RemoveIndex = SpeechRecognitionCompleteDelegates.Find(RecognitionDelegate); + // End:0x48 + if(RemoveIndex != -1) + { + SpeechRecognitionCompleteDelegates.Remove(RemoveIndex, 1); + } + //return; +} + +// Export UOnlineVoiceInterfaceMcts::execSelectVocabulary(FFrame&, void* const) +native function bool SelectVocabulary(byte LocalUserNum, int VocabularyId); + +// Export UOnlineVoiceInterfaceMcts::execSetSpeechRecognitionObject(FFrame&, void* const) +native function bool SetSpeechRecognitionObject(byte LocalUserNum, SpeechRecognition SpeechRecogObj); + +function bool MuteAll(byte LocalUserNum, bool bAllowFriends) +{ + // End:0x60 + if(int(LocalUserNum) == Outer.LoggedInPlayerNum) + { + CurrentLocalTalker.MuteType = ((bAllowFriends) ? 1 : 2); + return true; + } + return false; + //return ReturnValue; +} + +function bool UnmuteAll(byte LocalUserNum) +{ + // End:0x4F + if(int(LocalUserNum) == Outer.LoggedInPlayerNum) + { + CurrentLocalTalker.MuteType = 0; + return true; + } + return false; + //return ReturnValue; +} diff --git a/exported/PlatformCommon/Classes/None.uc b/exported/PlatformCommon/Classes/None.uc new file mode 100755 index 00000000..8e720fe8 --- /dev/null +++ b/exported/PlatformCommon/Classes/None.uc @@ -0,0 +1 @@ +class None; diff --git a/exported/PlatformCommon/Classes/PComBrowserInteraction.uc b/exported/PlatformCommon/Classes/PComBrowserInteraction.uc new file mode 100755 index 00000000..416b29c9 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComBrowserInteraction.uc @@ -0,0 +1,7 @@ +class PComBrowserInteraction extends Interaction + transient + native + config(Engine) + hidecategories(Object,UIRoot); + +var private native const noexport Pointer VfTable_FCallbackEventDevice; diff --git a/exported/PlatformCommon/Classes/PComCheatManager.uc b/exported/PlatformCommon/Classes/PComCheatManager.uc new file mode 100755 index 00000000..f321c8a6 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComCheatManager.uc @@ -0,0 +1,3 @@ +class PComCheatManager extends GameCheatManager within GamePlayerController + native + config(Game); diff --git a/exported/PlatformCommon/Classes/PComGameEngine.uc b/exported/PlatformCommon/Classes/PComGameEngine.uc new file mode 100755 index 00000000..786a12b8 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComGameEngine.uc @@ -0,0 +1,83 @@ +class PComGameEngine extends GameEngine + transient + native + config(Engine); + +struct native MAR_EVENT +{ + var bool bSuccess; + var int nFunction; + var QWord qwId; + var QWord qwInfo; + var int nStmMsgId; + var int nEventFlags; + var string fsMessage; + var const Pointer pMarshal; + + structdefaultproperties + { + bSuccess=true + nFunction=0 + qwId=() + qwInfo=() + nStmMsgId=0 + nEventFlags=0 + fsMessage="" + pMarshal=() + } +}; + +var array< delegate > MarshalEventDelegates; +var native const Pointer pOutgoingMarshal; +var native const Pointer pEventMarshal; +//var delegate __OnMarshalEvent__Delegate; + +// Export UPComGameEngine::execSetFunction(FFrame&, void* const) +native function bool SetFunction(int nFunction); + +// Export UPComGameEngine::execSetFieldInt(FFrame&, void* const) +native function bool SetFieldInt(int nToken, int IntValue); + +// Export UPComGameEngine::execSetFieldFloat(FFrame&, void* const) +native function bool SetFieldFloat(int nToken, float FloatValue); + +// Export UPComGameEngine::execSetFieldString(FFrame&, void* const) +native function bool SetFieldString(int nToken, string StrValue); + +// Export UPComGameEngine::execClearMarshal(FFrame&, void* const) +native function ClearMarshal(); + +// Export UPComGameEngine::execSendMarshal(FFrame&, void* const) +native function SendMarshal(UniqueNetId qwPlayerId, bool bLowPriority); + +// Export UPComGameEngine::execSendMarshalAll(FFrame&, void* const) +native function SendMarshalAll(bool bLowPriority); + +// Export UPComGameEngine::execGetFieldInt(FFrame&, void* const) +native function bool GetFieldInt(int nToken, out int IntValue); + +// Export UPComGameEngine::execGetFieldFloat(FFrame&, void* const) +native function bool GetFieldFloat(int nToken, out float FloatValue); + +// Export UPComGameEngine::execGetFieldString(FFrame&, void* const) +native function bool GetFieldString(int nToken, out string StrValue); + +delegate OnMarshalEvent(Pointer pMarEvent) +{ + //return; +} + +// Export UPComGameEngine::execAddMarshalEventDelegate(FFrame&, void* const) +native function AddMarshalEventDelegate(delegate MarshalEventDelegate); + +// Export UPComGameEngine::execClearMarshalEventDelegate(FFrame&, void* const) +native function ClearMarshalEventDelegate(delegate MarshalEventDelegate); + +// Export UPComGameEngine::execSendCtrlRequest(FFrame&, void* const) +native function SendCtrlRequest(string fsRequest); + +// Export UPComGameEngine::execSendGameRequest(FFrame&, void* const) +native function SendGameRequest(string fsRequest); + +// Export UPComGameEngine::execHandlePlayerCommandInput(FFrame&, void* const) +native function bool HandlePlayerCommandInput(string FSCommand, optional PlayerController PC); diff --git a/exported/PlatformCommon/Classes/PComGameViewportClient.uc b/exported/PlatformCommon/Classes/PComGameViewportClient.uc new file mode 100755 index 00000000..618cd2e9 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComGameViewportClient.uc @@ -0,0 +1,60 @@ +class PComGameViewportClient extends GameViewportClient within Engine + transient + native + config(Engine); + +var transient PComOpenBroadcaster OpenBroadcaster; +var transient PComInputLightingEffect InputLightingEffect; +var config bool bUseDynamicResolutionScaler; +var native transient Pointer DynamicResolutionScaler; + +// Export UPComGameViewportClient::execInitDynamicResolutionScaler(FFrame&, void* const) +native final function InitDynamicResolutionScaler(); + +// Export UPComGameViewportClient::execGetCurrentGameSettingsVersion(FFrame&, void* const) +native function int GetCurrentGameSettingsVersion(); + +// Export UPComGameViewportClient::execHandleGameSettingsMigration(FFrame&, void* const) +native function HandleGameSettingsMigration(int OldGameSettingsVersion); + +// Export UPComGameViewportClient::execCheckGameSettingsVersion(FFrame&, void* const) +native final function CheckGameSettingsVersion(); + +exec function SetRTMPSettings(bool bAllowWebcam, bool bAllowMicrophone, bool bAllowDesktopAudio) +{ + local PComOpenBroadcasterSettings NewSettings; + + NewSettings.bAllowWebcam = bAllowWebcam; + NewSettings.bAllowMicrophone = bAllowMicrophone; + NewSettings.bAllowDesktopAudio = bAllowDesktopAudio; + OpenBroadcaster.SetStreamSettings(NewSettings); + //return; +} + +exec function StartRTMPStreaming(string InServer, string InKey) +{ + OpenBroadcaster.StartRTMPStreaming(InServer, InKey); + //return; +} + +exec function StopRTMPStreaming() +{ + OpenBroadcaster.StopStreaming(); + //return; +} + +exec function StartFacebookStreaming() +{ + OpenBroadcaster.QueueFacebookStreaming(); + //return; +} + +event bool Init(out string OutError) +{ + CheckGameSettingsVersion(); + OpenBroadcaster = new (self) Class'PlatformCommon.PComOpenBroadcaster'; + InputLightingEffect = new (self) Class'PlatformCommon.PComInputLightingEffect'; + InitDynamicResolutionScaler(); + return super.Init(OutError); + //return ReturnValue; +} diff --git a/exported/PlatformCommon/Classes/PComImageDownloader.uc b/exported/PlatformCommon/Classes/PComImageDownloader.uc new file mode 100755 index 00000000..1f17c0c7 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComImageDownloader.uc @@ -0,0 +1,47 @@ +class PComImageDownloader extends Object + native; + +const MAX_SIMULTANEOUS_DOWNLOADS = 8; +const TIME_OUT = 30.f; + +enum EPComImageDownloadState +{ + TIDS_NotStarted, // 0 + TIDS_Downloading, // 1 + TIDS_Succeeded, // 2 + TIDS_Failed, // 3 + TIDS_MAX // 4 +}; + +struct native PComImageDownload +{ + var init string URL; + var init string FilePath; + var private native const Pointer HttpDownloader; + var OnlineImageDownloaderWeb.EOnlineImageDownloadState State; + var init array Data; + var bool bPendingRemoval; + + structdefaultproperties + { + URL="" + FilePath="" + State=EOnlineImageDownloadState.PIDS_NotStarted + Data=none + bPendingRemoval=false + } +}; + +var init array DownloadImages; +//var delegate __OnPComImageDownloaded__Delegate; + +delegate OnPComImageDownloaded(PComImageDownload CachedEntry) +{ + //return; +} + +function SetPComImageDownloadedDelegate(delegate PComImageDownloadedDelegate) +{ + __OnPComImageDownloaded__Delegate = PComImageDownloadedDelegate; + //return; +} diff --git a/exported/PlatformCommon/Classes/PComInputLightingEffect.uc b/exported/PlatformCommon/Classes/PComInputLightingEffect.uc new file mode 100755 index 00000000..dce86a65 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComInputLightingEffect.uc @@ -0,0 +1,71 @@ +class PComInputLightingEffect extends Object + native + config(Game); + +struct native PComInputLightingPreset +{ + var() name PresetName; + var() InterpCurveLinearColor Curve; + var() LinearColor ColorTint; + var() int LoopCount; + var() float PlaybackRate; + var() float BlendInTime; + var() int Priority; + + structdefaultproperties + { + PresetName="None" + Curve=(Points=none,InterpMethod=EInterpMethodType.IMT_UseFixedTangentEvalAndNewAutoTangents) + ColorTint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000) + LoopCount=0 + PlaybackRate=1.0000000 + BlendInTime=0.0000000 + Priority=0 + } +}; + +struct native PComActiveInputLightingPreset +{ + var int LoopCount; + var float CurrentTime; + var float PlaybackRate; + + structdefaultproperties + { + LoopCount=0 + CurrentTime=0.0000000 + PlaybackRate=0.0000000 + } +}; + +var config bool bAllowLogitechSdk; +var transient bool bLogitechSdkInitialized; +var transient bool bLatchedSystemSettingsSdkAllowed; +var config array Presets; +var native transient Map_Mirror PresetsMap; +var transient array ActivePresets; +var transient LinearColor BlendFromColor; +var transient float BlendPercent; + +// Export UPComInputLightingEffect::execTryEnableSystem(FFrame&, void* const) +native function TryEnableSystem(); + +// Export UPComInputLightingEffect::execDisableSystem(FFrame&, void* const) +native function DisableSystem(); + +// Export UPComInputLightingEffect::execPlayPreset(FFrame&, void* const) +native function PlayPreset(name InPresetName, optional bool bUseOverrideStartTime = false, optional float OverrideStartTime = 0.0000000); + +// Export UPComInputLightingEffect::execStopPreset(FFrame&, void* const) +native function StopPreset(name InPresetName); + +// Export UPComInputLightingEffect::execSetCurrentTime(FFrame&, void* const) +native function SetCurrentTime(name InPresetName, float CurrentTime); + +// Export UPComInputLightingEffect::execIsLogitechSdkVersionValid(FFrame&, void* const) +native function bool IsLogitechSdkVersionValid(); + +defaultproperties +{ + BlendFromColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComJsonHandler.uc b/exported/PlatformCommon/Classes/PComJsonHandler.uc new file mode 100755 index 00000000..de73cec3 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComJsonHandler.uc @@ -0,0 +1,13 @@ +class PComJsonHandler extends Object + native; + +var PComImageDownloader m_pImageDownloader; +var native Pointer m_pCallbackObject; +var init string m_strUrl; +var init string m_strLocalDir; +var init string m_strJson; +var init string m_strName; +var native const Pointer m_pHttp; + +// Export UPComJsonHandler::execOnImageDownloaded(FFrame&, void* const) +native function OnImageDownloaded(PComImageDownload CachedEntry); diff --git a/exported/PlatformCommon/Classes/PComMusicTheme.uc b/exported/PlatformCommon/Classes/PComMusicTheme.uc new file mode 100755 index 00000000..de9db238 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComMusicTheme.uc @@ -0,0 +1,25 @@ +class PComMusicTheme extends Object + native(Audio) + hidecategories(Object); + +struct native MusicEvent +{ + var() name EventName; + var() MusicTrackStruct EventTrack; + var() float EventDuration; + + structdefaultproperties + { + EventName="None" + EventTrack=(TheSoundCue=none,bAutoPlay=false,bPersistentAcrossLevels=false,FadeInTime=5.0000000,FadeInVolumeLevel=1.0000000,FadeOutTime=5.0000000,FadeOutVolumeLevel=0.0000000,MP3Filename="") + EventDuration=0.0000000 + } +}; + +var() MusicTrackStruct DefaultTrack; +var() array MusicEvents; + +defaultproperties +{ + DefaultTrack=(TheSoundCue=none,bAutoPlay=false,bPersistentAcrossLevels=false,FadeInTime=5.0000000,FadeInVolumeLevel=1.0000000,FadeOutTime=5.0000000,FadeOutVolumeLevel=0.0000000,MP3Filename="") +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComMusicThemeFactory.uc b/exported/PlatformCommon/Classes/PComMusicThemeFactory.uc new file mode 100755 index 00000000..a3ad48fa --- /dev/null +++ b/exported/PlatformCommon/Classes/PComMusicThemeFactory.uc @@ -0,0 +1,11 @@ +class PComMusicThemeFactory extends Factory + transient + native(Audio); + +defaultproperties +{ + SupportedClass=Class'PlatformCommon.PComMusicTheme' + Description="Music Theme" + bCreateNew=true + bEditAfterNew=true +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComMusicThemePlayer.uc b/exported/PlatformCommon/Classes/PComMusicThemePlayer.uc new file mode 100755 index 00000000..c70afb15 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComMusicThemePlayer.uc @@ -0,0 +1,47 @@ +class PComMusicThemePlayer extends Object + native(Audio); + +var private native const noexport Pointer VfTable_FTickableObject; +var transient string MusicThemePath; +var transient PComMusicTheme MusicTheme; +var export editinline transient AudioComponent MusicComp; +var PComMusicThemeSyncActor MusicSyncActor; +var transient name LastMusicEvent; +var transient MusicTrackStruct CurrentMusicTrack; +var transient float CurrentMusicTrackStartTime; +var transient float CurrentMusicTrackDuration; + +// Export UPComMusicThemePlayer::execInit(FFrame&, void* const) +native function Init(); + +// Export UPComMusicThemePlayer::execLoadDefaultTheme(FFrame&, void* const) +native function LoadDefaultTheme(); + +// Export UPComMusicThemePlayer::execGetDefaultThemePath(FFrame&, void* const) +native function string GetDefaultThemePath(); + +// Export UPComMusicThemePlayer::execLoadTheme(FFrame&, void* const) +native function LoadTheme(const string themepath); + +// Export UPComMusicThemePlayer::execOnThemeLoaded(FFrame&, void* const) +native function OnThemeLoaded(); + +// Export UPComMusicThemePlayer::execPlayDefaultMusic(FFrame&, void* const) +native function PlayDefaultMusic(); + +// Export UPComMusicThemePlayer::execPlayMusicEvent(FFrame&, void* const) +native function PlayMusicEvent(const name EventName); + +// Export UPComMusicThemePlayer::execStopMusic(FFrame&, void* const) +native function StopMusic(); + +// Export UPComMusicThemePlayer::execUpdateMusicTrack(FFrame&, void* const) +native function UpdateMusicTrack(const MusicTrackStruct NewMusicTrack, const optional float fDuration = 0.0000000); + +// Export UPComMusicThemePlayer::execUpdateReplicatedMusicEvent(FFrame&, void* const) +native function UpdateReplicatedMusicEvent(const name EventName); + +defaultproperties +{ + CurrentMusicTrack=(TheSoundCue=none,bAutoPlay=false,bPersistentAcrossLevels=false,FadeInTime=5.0000000,FadeInVolumeLevel=1.0000000,FadeOutTime=5.0000000,FadeOutVolumeLevel=0.0000000,MP3Filename="") +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComMusicThemeSyncActor.uc b/exported/PlatformCommon/Classes/PComMusicThemeSyncActor.uc new file mode 100755 index 00000000..7ceda9bb --- /dev/null +++ b/exported/PlatformCommon/Classes/PComMusicThemeSyncActor.uc @@ -0,0 +1,42 @@ +class PComMusicThemeSyncActor extends Actor + native(Audio) + notplaceable + hidecategories(Navigation); + +var repnotify name m_ReplicatedMusicEvent; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + m_ReplicatedMusicEvent; +} + +// Export UPComMusicThemeSyncActor::execUpdateMusicEvent(FFrame&, void* const) +native function UpdateMusicEvent(name EventName); + +// Export UPComMusicThemeSyncActor::execUpdateMusicEventClient(FFrame&, void* const) +native function UpdateMusicEventClient(name EventName); + +simulated event ReplicatedEvent(name VarName) +{ + super.ReplicatedEvent(VarName); + // End:0x3D + if(VarName == 'm_ReplicatedMusicEvent') + { + UpdateMusicEventClient(m_ReplicatedMusicEvent); + } + //return; +} + +defaultproperties +{ + RemoteRole=ENetRole.ROLE_SimulatedProxy + bServerTickIsDisabled=true + bAlwaysRelevant=true + bReplicateMovement=false + bSkipActorPropertyReplication=true + bOnlyDirtyReplication=true + NetUpdateFrequency=1.0000000 + NetPriority=2.7000000 +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComOpenBroadcaster.uc b/exported/PlatformCommon/Classes/PComOpenBroadcaster.uc new file mode 100755 index 00000000..6be19ca8 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComOpenBroadcaster.uc @@ -0,0 +1,104 @@ +class PComOpenBroadcaster extends Object + native + config(Game); + +enum EPComOpenBroadcasterState +{ + POBS_Idle, // 0 + POBS_WaitingForFacebookWebBrowserLoaded,// 1 + POBS_WaitingForFacebookNewPublishFlow,// 2 + POBS_FacebookNewPublishError, // 3 + POBS_WaitingForFacebookLogin, // 4 + POBS_WaitingForFacebookPublish, // 5 + POBS_FacebookPublishFinished, // 6 + POBS_Streaming, // 7 + POBS_Quitting, // 8 + POBS_MAX // 9 +}; + +struct native PComOpenBroadcasterSettings +{ + var() bool bAllowWebcam; + var() bool bAllowMicrophone; + var() bool bAllowDesktopAudio; + + structdefaultproperties + { + bAllowWebcam=false + bAllowMicrophone=false + bAllowDesktopAudio=true + } +}; + +var private native const noexport Pointer VfTable_FCallbackEventDevice; +var config string FacebookAppId; +var config string FacebookApprovedDomain; +var config string FacebookLiveUrl; +var transient PComOpenBroadcaster.EPComOpenBroadcasterState CurrentState; +var transient PComOpenBroadcasterSettings CurrentSettings; +var transient Pointer StreamerProcessHandle; +//var delegate __PreloadWebBrowser__Delegate; +//var delegate __IsWebBrowserLoaded__Delegate; +//var delegate __OpenWebBrowser__Delegate; +//var delegate __CloseWebBrowser__Delegate; + +delegate PreloadWebBrowser() +{ + //return; +} + +delegate bool IsWebBrowserLoaded() +{ + //return ReturnValue; +} + +delegate OpenWebBrowser(string URL) +{ + //return; +} + +delegate CloseWebBrowser() +{ + //return; +} + +// Export UPComOpenBroadcaster::execIsStreaming(FFrame&, void* const) +native function bool IsStreaming(); + +// Export UPComOpenBroadcaster::execSetStreamSettings(FFrame&, void* const) +native function SetStreamSettings(const out PComOpenBroadcasterSettings InSettings); + +// Export UPComOpenBroadcaster::execQueueFacebookStreaming(FFrame&, void* const) +native function QueueFacebookStreaming(); + +// Export UPComOpenBroadcaster::execStartFacebookStreaming(FFrame&, void* const) +native function StartFacebookStreaming(); + +// Export UPComOpenBroadcaster::execStartRTMPStreaming(FFrame&, void* const) +native function StartRTMPStreaming(string InServer, string InKey); + +// Export UPComOpenBroadcaster::execStopStreaming(FFrame&, void* const) +native function StopStreaming(); + +// Export UPComOpenBroadcaster::execForceStopStreaming(FFrame&, void* const) +native function ForceStopStreaming(); + +// Export UPComOpenBroadcaster::execTick(FFrame&, void* const) +native final function Tick(); + +simulated event WebRequest DecodeFacebookRTMPUrl(string InRequest) +{ + local WebRequest WebRequest; + + WebRequest = new (self) Class'IpDrv.WebRequest'; + WebRequest.DecodeFormData(InRequest, 512, 4096); + return WebRequest; + //return ReturnValue; +} + +defaultproperties +{ + FacebookAppId="1871049266456588" + FacebookApprovedDomain="www.hirezstudios.com" + CurrentSettings=(bAllowWebcam=false,bAllowMicrophone=false,bAllowDesktopAudio=true) +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComPerformanceCaptureBase.uc b/exported/PlatformCommon/Classes/PComPerformanceCaptureBase.uc new file mode 100755 index 00000000..ed6ef359 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComPerformanceCaptureBase.uc @@ -0,0 +1,157 @@ +class PComPerformanceCaptureBase extends Object + native + config(Game); + +enum EPComPerformanceCaptureState +{ + PPCS_WaitingToStart, // 0 + PPCS_MoveToNode, // 1 + PPCS_StartBasicStats, // 2 + PPCS_StopBasicStats, // 3 + PPCS_StartCycleStats, // 4 + PPCS_StopCycleStats, // 5 + PPCS_SaveAndExit, // 6 + PPCS_LoadCharacters, // 7 + PPCS_LoadCharactersOnly, // 8 + PPCS_DestroyPawns, // 9 + PPCS_MAX // 10 +}; + +struct native PComPerformanceCaptureProfile +{ + var() name ProfileName; + var() int ScalabilityBucket; + var() int ResolutionX; + var() int ResolutionY; + var() int VsyncInterval; + var() bool bFullScreen; + + structdefaultproperties + { + ProfileName="Default" + ScalabilityBucket=5 + ResolutionX=1920 + ResolutionY=1080 + VsyncInterval=0 + bFullScreen=false + } +}; + +struct native PComPerformanceCaptureStat +{ + var name StatName; + var Double StatValue; + + structdefaultproperties + { + StatName="None" + StatValue=() + } +}; + +struct native PComPerformanceCaptureStatsPerNode +{ + var Actor Node; + var array Stats; + + structdefaultproperties + { + Node=none + Stats=none + } +}; + +struct native PComPerformanceCaptureStatsPerSkin +{ + var string CharacterName; + var string SkinName; + var string SkeletalMeshPathName; + var array Stats; + + structdefaultproperties + { + CharacterName="" + SkinName="" + SkeletalMeshPathName="" + Stats=none + } +}; + +var config array StatsToCollect; +var native transient Array_Mirror StatIds; +var transient array StatTypes; +var config float FOV; +var config array Profiles; +var config PComPerformanceCaptureProfile FallbackProfile; +var transient PComPerformanceCaptureProfile ActiveProfile; + +// Export UPComPerformanceCaptureBase::execInitializePerformanceCaptureSettings(FFrame&, void* const) +native final function InitializePerformanceCaptureSettings(); + +// Export UPComPerformanceCaptureBase::execMoveCamera(FFrame&, void* const) +native final function MoveCamera(PlayerController PlayerController, Actor Node); + +// Export UPComPerformanceCaptureBase::execEnableNonCycleStats(FFrame&, void* const) +native final function EnableNonCycleStats(); + +// Export UPComPerformanceCaptureBase::execEnableStatNotify(FFrame&, void* const) +native final function EnableStatNotify(); + +// Export UPComPerformanceCaptureBase::execGetPerformanceData(FFrame&, void* const) +native final function GetPerformanceData(out array PerfStats); + +// Export UPComPerformanceCaptureBase::execStopCycleStats(FFrame&, void* const) +native final function StopCycleStats(out array PerfStats); + +// Export UPComPerformanceCaptureBase::execGetMapNameAndTime(FFrame&, void* const) +native final function GetMapNameAndTime(out string MapNameStr, out string FormattedDate, out string FormattedTime); + +// Export UPComPerformanceCaptureBase::execGetStatsToCollect(FFrame&, void* const) +native final function GetStatsToCollect(out string FileContents); + +// Export UPComPerformanceCaptureBase::execGetPerfStats(FFrame&, void* const) +native final function GetPerfStats(const array PerfStats, out string FileContents); + +// Export UPComPerformanceCaptureBase::execCreateFileAndExit(FFrame&, void* const) +native final function CreateFileAndExit(string FileNameWithExtension, string FileContents, string SubfolderName); + +defaultproperties +{ + StatsToCollect[0]="STAT_MeshDrawCalls" + StatsToCollect[1]="STAT_StaticDrawListMeshDrawCalls" + StatsToCollect[2]="STAT_InitViewsTime" + StatsToCollect[3]="STAT_TotalSceneRenderingTime" + StatsToCollect[4]="STAT_VirtualAllocSize" + StatsToCollect[5]="STAT_StaticMeshTotalMemory" + StatsToCollect[6]="STAT_StaticMeshVertexMemory" + StatsToCollect[7]="STAT_StaticMeshIndexMemory" + StatsToCollect[8]="STAT_AnimationMemory" + StatsToCollect[9]="STAT_PixelShaderMemory" + StatsToCollect[10]="STAT_VertexShaderMemory" + StatsToCollect[11]="STAT_VertexLightingAndShadowingMemory" + StatsToCollect[12]="STAT_TextureMemory" + StatsToCollect[13]="STAT_TextureLightmapMemory" + StatsToCollect[14]="STAT_DepthDrawTime" + StatsToCollect[15]="STAT_BasePassDrawTime" + StatsToCollect[16]="STAT_TranslucencyDrawTime" + StatsToCollect[17]="STAT_ProjectedShadowDrawTime" + StatsToCollect[18]="STAT_GameEngineTick" + StatsToCollect[19]="STAT_TickTime" + StatsToCollect[20]="STAT_ParticleManagerUpdateData" + StatsToCollect[21]="STAT_UnrealScriptTime" + StatsToCollect[22]="STAT_KismetTime" + StatsToCollect[23]="STAT_RedrawViewports" + StatsToCollect[24]="STAT_AudioMemory" + StatsToCollect[25]="STAT_SkeletalMeshVertexMemory" + StatsToCollect[26]="STAT_SkeletalMeshIndexMemory" + FOV=100.0000000 + Profiles[0]=(ProfileName="Min0",ScalabilityBucket=1,ResolutionX=1366,ResolutionY=768,VsyncInterval=0,bFullScreen=false) + Profiles[1]=(ProfileName="Min1",ScalabilityBucket=1,ResolutionX=1366,ResolutionY=768,VsyncInterval=0,bFullScreen=false) + Profiles[2]=(ProfileName="Med2",ScalabilityBucket=3,ResolutionX=1600,ResolutionY=900,VsyncInterval=0,bFullScreen=false) + Profiles[3]=(ProfileName="Med3",ScalabilityBucket=3,ResolutionX=1600,ResolutionY=900,VsyncInterval=0,bFullScreen=false) + Profiles[4]=(ProfileName="Med4",ScalabilityBucket=3,ResolutionX=1600,ResolutionY=900,VsyncInterval=0,bFullScreen=false) + Profiles[5]=(ProfileName="Max5",ScalabilityBucket=5,ResolutionX=1920,ResolutionY=1080,VsyncInterval=0,bFullScreen=false) + Profiles[6]=(ProfileName="Console",ScalabilityBucket=5,ResolutionX=1920,ResolutionY=1080,VsyncInterval=0,bFullScreen=false) + FallbackProfile=(ProfileName="Default",ScalabilityBucket=5,ResolutionX=1920,ResolutionY=1080,VsyncInterval=0,bFullScreen=false) + ActiveProfile=(ProfileName="Default",ScalabilityBucket=5,ResolutionX=1920,ResolutionY=1080,VsyncInterval=0,bFullScreen=false) +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComPerformanceCaptureGame.uc b/exported/PlatformCommon/Classes/PComPerformanceCaptureGame.uc new file mode 100755 index 00000000..76b300d5 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComPerformanceCaptureGame.uc @@ -0,0 +1,43 @@ +class PComPerformanceCaptureGame extends GameInfo + native + config(Game) + hidecategories(Navigation,Movement,Collision); + +struct native PComPerformanceCaptureStatCollection +{ + var name ProfileName; + var array Stats; + + structdefaultproperties + { + ProfileName="None" + Stats=none + } +}; + +var transient PComPerformanceCaptureBase BasePerformanceCapture; +var PComPerformanceCaptureBase.EPComPerformanceCaptureState CurrentCaptureState; +var transient array NodesToCapture; +var transient array StatsPerNode; + +event PostBeginPlay() +{ + super.PostBeginPlay(); + BasePerformanceCapture.InitializePerformanceCaptureSettings(); + CollectNodes(); + //return; +} + +// Export UPComPerformanceCaptureGame::execCollectNodes(FFrame&, void* const) +native final function CollectNodes(); + +// Export UPComPerformanceCaptureGame::execDoNextAction(FFrame&, void* const) +native final function DoNextAction(); + +defaultproperties +{ + // Reference: PComPerformanceCaptureBase'PlatformCommon.Default__PComPerformanceCaptureGame.MyPerformanceBase' + begin object name="MyPerformanceBase" class=PlatformCommon.PComPerformanceCaptureBase + end object + BasePerformanceCapture=MyPerformanceBase +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComPerformanceCaptureNode.uc b/exported/PlatformCommon/Classes/PComPerformanceCaptureNode.uc new file mode 100755 index 00000000..907a1078 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComPerformanceCaptureNode.uc @@ -0,0 +1,14 @@ +class PComPerformanceCaptureNode extends Actor + native + placeable + hidecategories(Navigation); + +var(PerformanceNode) string ExecCommand; +var(PerformanceNode) float DelayBeforeCapture; + +defaultproperties +{ + DelayBeforeCapture=2.0000000 + Components[0]=none + Components[1]=none +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComPictureInPicture.uc b/exported/PlatformCommon/Classes/PComPictureInPicture.uc new file mode 100755 index 00000000..0bf60c89 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComPictureInPicture.uc @@ -0,0 +1,101 @@ +class PComPictureInPicture extends Object + native; + +const PICTURE_IN_PICTURE_BASE_WIDTH = 1920.0f; +const PICTURE_IN_PICTURE_BASE_HEIGHT = 1080.0f; + +struct native PComPipViewDesc +{ + var name ViewName; + var Vector ViewLocation; + var Rotator ViewRotation; + var Box Viewport; + var PostProcessChain PostProcessChain; + var PostProcessSettings PostProcessSettings; + var float FOV; + var Color ClearColor; + var bool bDebugRenderTranslucent; + var bool bAlwaysRender; + var Double RequestRenderTime; + var Double LastRenderedTime; + var int NumFramesSinceRender; + + structdefaultproperties + { + ViewName="None" + ViewLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + ViewRotation=(Pitch=0,Yaw=0,Roll=0) + Viewport=(Min=(X=0.0000000,Y=0.0000000,Z=0.0000000),Max=(X=0.0000000,Y=0.0000000,Z=0.0000000),IsValid=0) + PostProcessChain=none + PostProcessSettings=(bOverride_EnableBloom=true,bOverride_EnableDOF=true,bOverride_EnableMotionBlur=true,bOverride_EnableSceneEffect=true,bOverride_AllowAmbientOcclusion=true,bOverride_OverrideRimShaderColor=true,bOverride_Bloom_Scale=true,bOverride_Bloom_Threshold=true,bOverride_Bloom_Tint=true,bOverride_Bloom_ScreenBlendThreshold=true,bOverride_Bloom_InterpolationDuration=true,bOverride_DOF_FalloffExponent=true,bOverride_DOF_BlurKernelSize=true,bOverride_DOF_BlurBloomKernelSize=true,bOverride_DOF_MaxNearBlurAmount=true,bOverride_DOF_MinBlurAmount=false,bOverride_DOF_MaxFarBlurAmount=true,bOverride_DOF_FocusType=true,bOverride_DOF_FocusInnerRadius=true,bOverride_DOF_FocusDistance=true,bOverride_DOF_FocusPosition=true,bOverride_DOF_InterpolationDuration=true,bOverride_DOF_BokehTexture=false,bOverride_MotionBlur_MaxVelocity=false,bOverride_MotionBlur_Amount=false,bOverride_MotionBlur_FullMotionBlur=false,bOverride_MotionBlur_CameraRotationThreshold=false,bOverride_MotionBlur_CameraTranslationThreshold=false,bOverride_MotionBlur_InterpolationDuration=false,bOverride_Scene_Desaturation=true,bOverride_Scene_Colorize=false,bOverride_Scene_TonemapperScale=false,bOverride_Scene_ImageGrainScale=false,bOverride_Scene_HighLights=true,bOverride_Scene_MidTones=true,bOverride_Scene_Shadows=true,bOverride_Scene_InterpolationDuration=true,bOverride_Scene_ColorGradingLUT=false,bOverride_RimShader_Color=true,bOverride_RimShader_InterpolationDuration=true,bOverride_MobileColorGrading=false,bEnableBloom=true,bEnableDOF=false,bEnableMotionBlur=true,bEnableSceneEffect=true,bAllowAmbientOcclusion=true,bOverrideRimShaderColor=false,Bloom_Scale=1.0000000,Bloom_Threshold=1.0000000,Bloom_Tint=(R=255,G=255,B=255,A=0),Bloom_ScreenBlendThreshold=10.0000000,Bloom_InterpolationDuration=1.0000000,DOF_BlurBloomKernelSize=16.0000000,DOF_FalloffExponent=4.0000000,DOF_BlurKernelSize=16.0000000,DOF_MaxNearBlurAmount=1.0000000,DOF_MinBlurAmount=0.0000000,DOF_MaxFarBlurAmount=1.0000000,DOF_FocusType=EFocusType.FOCUS_Distance,DOF_FocusInnerRadius=2000.0000000,DOF_FocusDistance=0.0000000,DOF_FocusPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000),DOF_InterpolationDuration=1.0000000,DOF_BokehTexture=none,MotionBlur_MaxVelocity=1.0000000,MotionBlur_Amount=0.5000000,MotionBlur_FullMotionBlur=true,MotionBlur_CameraRotationThreshold=45.0000000,MotionBlur_CameraTranslationThreshold=10000.0000000,MotionBlur_InterpolationDuration=1.0000000,Scene_Desaturation=0.0000000,Scene_Colorize=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_TonemapperScale=1.0000000,Scene_ImageGrainScale=0.0000000,Scene_HighLights=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_MidTones=(X=1.0000000,Y=1.0000000,Z=1.0000000),Scene_Shadows=(X=0.0000000,Y=0.0000000,Z=0.0000000),Scene_InterpolationDuration=1.0000000,RimShader_Color=(R=0.4704400,G=0.5859730,B=0.8277260,A=1.0000000),RimShader_InterpolationDuration=1.0000000,ColorGrading_LookupTable=none,ColorGradingLUT=(LUTTextures=none,LUTWeights=none),MobileColorGrading=(TransitionTime=1.0000000,Blend=0.0000000,Desaturation=0.0000000,HighLights=(R=0.7000000,G=0.7000000,B=0.7000000,A=1.0000000),MidTones=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000),Shadows=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000)),MobilePostProcess=(bOverride_Mobile_BlurAmount=false,bOverride_Mobile_TransitionTime=false,bOverride_Mobile_Bloom_Scale=false,bOverride_Mobile_Bloom_Threshold=false,bOverride_Mobile_Bloom_Tint=false,bOverride_Mobile_DOF_Distance=false,bOverride_Mobile_DOF_MinRange=false,bOverride_Mobile_DOF_MaxRange=false,bOverride_Mobile_DOF_NearBlurFactor=false,bOverride_Mobile_DOF_FarBlurFactor=false,Mobile_BlurAmount=16.0000000,Mobile_TransitionTime=1.0000000,Mobile_Bloom_Scale=6.0000000,Mobile_Bloom_Threshold=0.5000000,Mobile_Bloom_Tint=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000),Mobile_DOF_Distance=1500.0000000,Mobile_DOF_MinRange=600.0000000,Mobile_DOF_MaxRange=1200.0000000,Mobile_DOF_NearBlurFactor=1.0000000,Mobile_DOF_FarBlurFactor=1.0000000),Death_Enable=false,Death_DesatAlpha=0.0000000,Hit_Enable=false,Hit_FadeAlpha=0.0000000,ColorBlind_Enable=false,ColorBlind_Mode=0) + FOV=90.0000000 + ClearColor=(R=0,G=0,B=0,A=0) + bDebugRenderTranslucent=false + bAlwaysRender=false + RequestRenderTime=() + LastRenderedTime=() + NumFramesSinceRender=0 + } +}; + +var private native const noexport Pointer VfTable_FCallbackEventDevice; +var PComPictureInPictureScene Scene; +var TextureRenderTarget2D RenderTargetToUse; +var init native array ViewDescs; +var bool bEnableDebugRendering; +var Vector2D CurrentOffset; +var Vector2D CurrentScaling; + +// Export UPComPictureInPicture::execInitializeRenderTarget(FFrame&, void* const) +native final function InitializeRenderTarget(); + +// Export UPComPictureInPicture::execTick(FFrame&, void* const) +native final function Tick(); + +// Export UPComPictureInPicture::execAddView(FFrame&, void* const) +native final function AddView(const out PComPipViewDesc InViewDesc); + +// Export UPComPictureInPicture::execRemoveView(FFrame&, void* const) +native final function RemoveView(name ViewName); + +// Export UPComPictureInPicture::execRequestRender(FFrame&, void* const) +native final function RequestRender(name ViewName); + +// Export UPComPictureInPicture::execIsViewReady(FFrame&, void* const) +native final function bool IsViewReady(name ViewName); + +// Export UPComPictureInPicture::execIsViewDescReady(FFrame&, void* const) +native final function bool IsViewDescReady(const out PComPipViewDesc ViewDesc); + +// Export UPComPictureInPicture::execDebugRender(FFrame&, void* const) +native final function DebugRender(Canvas Canvas); + +function TestPictureInPicture() +{ + local WorldInfo WorldInfo; + local PlayerController PlayerController; + local LocalPlayer LocalPlayer; + local PComPipViewDesc ViewDesc; + + WorldInfo = Class'Engine.WorldInfo'.static.GetWorldInfo(); + PlayerController = WorldInfo.GetALocalPlayerController(); + LocalPlayer = LocalPlayer(PlayerController.Player); + ViewDescs.Length = 0; + ViewDesc.PostProcessChain = LocalPlayer.PlayerPostProcess; + ViewDesc.PostProcessSettings = LocalPlayer.CurrentPPInfo.LastSettings; + PlayerController.GetPlayerViewPoint(ViewDesc.ViewLocation, ViewDesc.ViewRotation); + ViewDesc.ViewRotation.Yaw += int(float(30) * 182.0444000); + ViewDesc.Viewport.Min = vect(20.0000000, 20.0000000, 0.0000000); + ViewDesc.Viewport.Max = vect(940.0000000, 520.0000000, 0.0000000); + ViewDesc.bAlwaysRender = true; + AddView(ViewDesc); + PlayerController.GetPlayerViewPoint(ViewDesc.ViewLocation, ViewDesc.ViewRotation); + ViewDesc.ViewRotation.Yaw -= int(float(30) * 182.0444000); + ViewDesc.Viewport.Min = vect(960.0000000, 20.0000000, 0.0000000); + ViewDesc.Viewport.Max = vect(1900.0000000, 520.0000000, 0.0000000); + ViewDesc.bAlwaysRender = true; + AddView(ViewDesc); + bEnableDebugRendering = true; + Scene = none; + //return; +} diff --git a/exported/PlatformCommon/Classes/PComPictureInPictureScene.uc b/exported/PlatformCommon/Classes/PComPictureInPictureScene.uc new file mode 100755 index 00000000..7565facc --- /dev/null +++ b/exported/PlatformCommon/Classes/PComPictureInPictureScene.uc @@ -0,0 +1,61 @@ +class PComPictureInPictureScene extends Object + native; + +var() float SkyBrightness; +var() Color SkyColor; +var() float LightBrightness; +var() bool bAlwaysAllowAudioPlayback; +var() bool bForceAllUsedMipsResident; +var native transient Pointer Scene; +var export editinline array Components; +var export editinline DirectionalLightComponent DirectionalLight; +var export editinline DirectionalLightComponent DirectionalBounceLight; +var export editinline SkyLightComponent SkyLight; +var export editinline LineBatchComponent LineBatcher; + +// Export UPComPictureInPictureScene::execInitScene(FFrame&, void* const) +native function InitScene(); + +// Export UPComPictureInPictureScene::execAddComponent(FFrame&, void* const) +native function AddComponent(ActorComponent Component, const out Matrix LocalToWorld); + +// Export UPComPictureInPictureScene::execRemoveComponent(FFrame&, void* const) +native function RemoveComponent(ActorComponent Component); + +// Export UPComPictureInPictureScene::execGetLightDirection(FFrame&, void* const) +native function Rotator GetLightDirection(); + +// Export UPComPictureInPictureScene::execSetLightDirection(FFrame&, void* const) +native function SetLightDirection(const out Rotator InLightDir); + +// Export UPComPictureInPictureScene::execSetLightBrightness(FFrame&, void* const) +native function SetLightBrightness(float InLightBrightness); + +// Export UPComPictureInPictureScene::execSetLightColor(FFrame&, void* const) +native function SetLightColor(const out Color LightColor); + +// Export UPComPictureInPictureScene::execEnableDirectionalBounceLight(FFrame&, void* const) +native function EnableDirectionalBounceLight(bool bInEnableBoundLight, optional float InBounceLightBrightness = 0.0000000, optional Rotator BounceLightDir); + +// Export UPComPictureInPictureScene::execSetBounceLightDirection(FFrame&, void* const) +native function SetBounceLightDirection(const out Rotator InLightDir); + +// Export UPComPictureInPictureScene::execSetBounceLightBrightness(FFrame&, void* const) +native function SetBounceLightBrightness(float InLightBrightness); + +// Export UPComPictureInPictureScene::execSetBounceLightColor(FFrame&, void* const) +native function SetBounceLightColor(const out Color LightColor); + +// Export UPComPictureInPictureScene::execSetSkyBrightness(FFrame&, void* const) +native function SetSkyBrightness(float InSkyBrightness); + +// Export UPComPictureInPictureScene::execSetSkyColor(FFrame&, void* const) +native function SetSkyColor(const out Color InSkyColor); + +defaultproperties +{ + SkyBrightness=0.2500000 + SkyColor=(R=255,G=255,B=255,A=255) + LightBrightness=1.0000000 + bForceAllUsedMipsResident=true +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComPlayerController.uc b/exported/PlatformCommon/Classes/PComPlayerController.uc new file mode 100755 index 00000000..9895d526 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComPlayerController.uc @@ -0,0 +1,1377 @@ +class PComPlayerController extends GamePlayerController + native + config(Game) + hidecategories(Navigation); + +var UniqueNetId m_LastPendingPartyInviteId; +var bool m_bPartySessionJoinInProgress; +var bool m_bPartySessionCreateInProgress; +var bool m_bPartyDestroyInProgress; +var transient bool m_bQuittingToMainMenu; +var config int m_nMaxPartyPublicConnections; +var OnlineGameSearchResult m_PendingInviteResult; +var const name PartySessionName; +var const name GameSessionName; + +// Export UPComPlayerController::execClientAddCheats(FFrame&, void* const) +native function ClientAddCheats(); + +simulated function AddCheats() +{ + ClientAddCheats(); + //return; +} + +exec function TestVideoPlayer() +{ + Class'PlatformCommon.PComVideoPlayer'.static.TestVideoPlayer(self); + //return; +} + +// Export UPComPlayerController::execDumpConfig(FFrame&, void* const) +native exec function DumpConfig(); + +// Export UPComPlayerController::execGetConfig(FFrame&, void* const) +native exec function string GetConfig(string Key); + +// Export UPComPlayerController::execGetConfigInt(FFrame&, void* const) +native exec function int GetConfigInt(string Key); + +// Export UPComPlayerController::execGetConfigBool(FFrame&, void* const) +native exec function bool GetConfigBool(string Key); + +// Export UPComPlayerController::execSetConfig(FFrame&, void* const) +native exec function SetConfig(string Key, string Value); + +// Export UPComPlayerController::execTeamInvite(FFrame&, void* const) +native exec function TeamInvite(string fsName); + +// Export UPComPlayerController::execTeamAccept(FFrame&, void* const) +native exec function TeamAccept(bool bAccepted); + +// Export UPComPlayerController::execTeamLeave(FFrame&, void* const) +native exec function TeamLeave(); + +// Export UPComPlayerController::execTeamSetLeader(FFrame&, void* const) +native exec function TeamSetLeader(string fsLeader); + +// Export UPComPlayerController::execChallengeCreate(FFrame&, void* const) +native exec function ChallengeCreate(int nQueue, string fsName, optional string fsPassword); + +// Export UPComPlayerController::execChallengeJoin(FFrame&, void* const) +native exec function ChallengeJoin(int nQueue, string fsName, optional string fsPassword); + +// Export UPComPlayerController::execPlayerRetrievedOSSInventory(FFrame&, void* const) +native function PlayerRetrievedOSSInventory(out array Items); + +// Export UPComPlayerController::execSendPlayerDLCLicensesToServer(FFrame&, void* const) +native function SendPlayerDLCLicensesToServer(); + +// Export UPComPlayerController::execPlayerReceivedURLTokenAndSignature(FFrame&, void* const) +native function PlayerReceivedURLTokenAndSignature(byte LocalUserNum, string URL, string Token, string Signature); + +event RefreshStoreData() +{ + local byte MediaType; + + // End:0x20B + if(NotEqual_InterfaceInterface(OnlineSub.MarketplaceInterface, OnlineMarketplaceInterface(none))) + { + OnlineSub.MarketplaceInterface.AddReadAvailableProductsCompleteDelegate(byte(LocalPlayer(Player).ControllerId), OnReadAvailableProductsComplete); + OnlineSub.MarketplaceInterface.AddReadAdditionalProductDetailsCompleteDelegate(byte(LocalPlayer(Player).ControllerId), OnReadAdditionalProductDetailsComplete); + MediaType = 1; + J0x11F: + + // End:0x1A6 [Loop If] + if(int(MediaType) < 6) + { + OnlineSub.MarketplaceInterface.ResetAvailableProducts(byte(LocalPlayer(Player).ControllerId), MediaType); + MediaType++; + // [Loop Continue] + goto J0x11F; + } + OnlineSub.MarketplaceInterface.ReadAvailableProducts(byte(LocalPlayer(Player).ControllerId), "", 1, 1); + } + //return; +} + +function OnReadAvailableProductsComplete(OnlineSubsystem.EMediaItemType MediaType) +{ + // End:0x9C + if(NotEqual_InterfaceInterface(OnlineSub.MarketplaceInterface, OnlineMarketplaceInterface(none))) + { + OnlineSub.MarketplaceInterface.ReadAdditionalDetailsForProducts(byte(LocalPlayer(Player).ControllerId), MediaType); + } + //return; +} + +function OnReadAdditionalProductDetailsComplete(OnlineSubsystem.EMediaItemType MediaType) +{ + local byte NextMediaType; + + NextMediaType = MediaType; + NextMediaType++; + // End:0x1BC + if(NotEqual_InterfaceInterface(OnlineSub.MarketplaceInterface, OnlineMarketplaceInterface(none))) + { + // End:0x150 + if(int(NextMediaType) == 6) + { + OnlineSub.MarketplaceInterface.ClearReadAvailableProductsCompleteDelegate(byte(LocalPlayer(Player).ControllerId), OnReadAvailableProductsComplete); + OnlineSub.MarketplaceInterface.ClearReadAdditionalProductDetailsCompleteDelegate(byte(LocalPlayer(Player).ControllerId), OnReadAdditionalProductDetailsComplete); + OnAllMarketplaceProductDetailsRead(); + } + else + { + OnlineSub.MarketplaceInterface.ReadAvailableProducts(byte(LocalPlayer(Player).ControllerId), "", 1, NextMediaType); + } + } + //return; +} + +exec function DumpGameProducts() +{ + DumpStoreCatalog(1); + //return; +} + +exec function DumpDurables() +{ + DumpStoreCatalog(3); + //return; +} + +exec function DumpConumables() +{ + DumpStoreCatalog(4); + //return; +} + +exec function DumpStoreCatalog(OnlineSubsystem.EMediaItemType MediaType) +{ + local int I, J, K; + local array AvailableProducts; + + OnlineSub.MarketplaceInterface.GetAvailableProducts(byte(LocalPlayer(Player).ControllerId), MediaType, AvailableProducts); + I = 0; + J0x7B: + + // End:0x213 [Loop If] + if(I < AvailableProducts.Length) + { + J = 0; + J0x9E: + + // End:0x14C [Loop If] + if(J < AvailableProducts[I].Images.Length) + { + K = 0; + J0xDE: + + // End:0x13E [Loop If] + if(K < AvailableProducts[I].Images[J].Purposes.Length) + { + K++; + // [Loop Continue] + goto J0xDE; + } + J++; + // [Loop Continue] + goto J0x9E; + } + J = 0; + J0x157: + + // End:0x205 [Loop If] + if(J < AvailableProducts[I].Availabilities.Length) + { + K = 0; + J0x197: + + // End:0x1F7 [Loop If] + if(K < AvailableProducts[I].Availabilities[J].AcceptablePaymentInstrumentTypes.Length) + { + K++; + // [Loop Continue] + goto J0x197; + } + J++; + // [Loop Continue] + goto J0x157; + } + I++; + // [Loop Continue] + goto J0x7B; + } + //return; +} + +event GetOSSTokenAndSignature(string URL) +{ + OnlineSub.PlayerInterface.AddURLTokenRetrievedDelegate(byte(LocalPlayer(Player).ControllerId), PlayerReceivedURLTokenAndSignature); + OnlineSub.PlayerInterface.GetTokenAndSignatureForURL(byte(LocalPlayer(Player).ControllerId), URL); + //return; +} + +event GetMarketplaceInventory() +{ + // End:0xF1 + if(NotEqual_InterfaceInterface(OnlineSub.MarketplaceInterface, OnlineMarketplaceInterface(none))) + { + OnlineSub.MarketplaceInterface.ResetInventoryItems(byte(LocalPlayer(Player).ControllerId)); + OnlineSub.MarketplaceInterface.ReadInventoryItems(byte(LocalPlayer(Player).ControllerId)); + } + //return; +} + +function OnReadPlayerMarketplaceInventoryComplete() +{ + local array Items; + + // End:0x9C + if(NotEqual_InterfaceInterface(OnlineSub.MarketplaceInterface, OnlineMarketplaceInterface(none))) + { + OnlineSub.MarketplaceInterface.GetInventoryItems(byte(LocalPlayer(Player).ControllerId), Items); + } + PlayerRetrievedOSSInventory(Items); + //return; +} + +event OnlineSubsystem.EOnlineEnumerationReadState GetPlayerDLCLicenses(out array ContentList) +{ + return OnlineSub.ContentInterface.GetDownloadableContentList(byte(LocalPlayer(Player).ControllerId), ContentList); + //return ReturnValue; +} + +simulated function OnMarketplaceItemPurchased() +{ + GetMarketplaceInventory(); + //return; +} + +// Export UPComPlayerController::execOnLoginStatusChange(FFrame&, void* const) +native function OnLoginStatusChange(OnlineSubsystem.ELoginStatus NewStatus, UniqueNetId NewId); + +// Export UPComPlayerController::execOnConnectionStatusChange(FFrame&, void* const) +native function OnConnectionStatusChange(OnlineSubsystem.EOnlineServerConnectionStatus ConnectionStatus); + +// Export UPComPlayerController::execOnCurrentUserChanged(FFrame&, void* const) +native function OnCurrentUserChanged(byte LocalUserNum, string CurrentUser, string LoggedInUser); + +// Export UPComPlayerController::execOnRemoteTalkerStatusChange(FFrame&, void* const) +native function OnRemoteTalkerStatusChange(UniqueNetId RemoteNetId, bool bIsTalking); + +// Export UPComPlayerController::execSendSessionStart(FFrame&, void* const) +native function SendSessionStart(int GameModeId); + +// Export UPComPlayerController::execSendSessionEnd(FFrame&, void* const) +native function SendSessionEnd(); + +// Export UPComPlayerController::execIsInCustomMatch(FFrame&, void* const) +native simulated function bool IsInCustomMatch(); + +// Export UPComPlayerController::execMCTSSetSessionId(FFrame&, void* const) +native function MCTSSetSessionId(byte PlatformSpecificInfo[80]); + +// Export UPComPlayerController::execTryJoinSession(FFrame&, void* const) +native function TryJoinSession(); + +// Export UPComPlayerController::execConnectToPeers(FFrame&, void* const) +native simulated function ConnectToPeers(out array SessionListInfo); + +// Export UPComPlayerController::execAcceptPartyInvite(FFrame&, void* const) +native simulated function AcceptPartyInvite(string InviterName); + +// Export UPComPlayerController::execShowPrivilegeMessageAndDeclineInvite(FFrame&, void* const) +native simulated function ShowPrivilegeMessageAndDeclineInvite(); + +// Export UPComPlayerController::execFilterFriendListForPeoplePicker(FFrame&, void* const) +native simulated function FilterFriendListForPeoplePicker(out array FriendList, out array SessionMemberList); + +// Export UPComPlayerController::execBlockPartySceneInput(FFrame&, void* const) +native function BlockPartySceneInput(bool bBlockInput); + +// Export UPComPlayerController::execUpdateMCTSSession(FFrame&, void* const) +native simulated function UpdateMCTSSession(string SessionGuid, bool bIsHost); + +// Export UPComPlayerController::execArePartySessionInvitesAllowed(FFrame&, void* const) +native function bool ArePartySessionInvitesAllowed(); + +function bool ShouldPartySessionsBePublic() +{ + return true; + //return ReturnValue; +} + +// Export UPComPlayerController::execShowControllerDisconnectedWarning(FFrame&, void* const) +native function ShowControllerDisconnectedWarning(); + +// Export UPComPlayerController::execShowNoFriendsForPartyInviteWarning(FFrame&, void* const) +native function ShowNoFriendsForPartyInviteWarning(); + +// Export UPComPlayerController::execShowUnableToReadFriendsListWarning(FFrame&, void* const) +native function ShowUnableToReadFriendsListWarning(); + +// Export UPComPlayerController::execShowPartyFullWarning(FFrame&, void* const) +native function ShowPartyFullWarning(bool bPartySession); + +// Export UPComPlayerController::execShowPartyNoLongerAvailableWarning(FFrame&, void* const) +native function ShowPartyNoLongerAvailableWarning(); + +// Export UPComPlayerController::execShowPackageNotInstalledForPartyInviteWarning(FFrame&, void* const) +native function ShowPackageNotInstalledForPartyInviteWarning(); + +// Export UPComPlayerController::execShowCustomGameDisallowedPopup(FFrame&, void* const) +native function ShowCustomGameDisallowedPopup(); + +// Export UPComPlayerController::execTryOpenPartyUI(FFrame&, void* const) +native function TryOpenPartyUI(); + +// Export UPComPlayerController::execUpdatePartyUI(FFrame&, void* const) +native function UpdatePartyUI(); + +// Export UPComPlayerController::execLeaveMatchQueue(FFrame&, void* const) +native function LeaveMatchQueue(); + +// Export UPComPlayerController::execOnAllMarketplaceProductDetailsRead(FFrame&, void* const) +native function OnAllMarketplaceProductDetailsRead(); + +function AcknowledgePossession(Pawn P) +{ + super(PlayerController).AcknowledgePossession(P); + // End:0x9B + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + // End:0x6D + if(WorldInfo.IsConsoleBuild(9)) + { + TryJoinSession(); + } + else + { + // End:0x9B + if(WorldInfo.IsConsoleBuild(8)) + { + RestablishVoiceForReconnect(); + } + } + } + //return; +} + +simulated event QuitToMainMenu() +{ + m_bQuittingToMainMenu = true; + // End:0x27 + if((CleanupOnlineSubsystemSession(true)) == false) + { + FinishQuitToMainMenu(); + } + //return; +} + +function bool CleanupOnlineSubsystemSession(bool bWasFromMenu) +{ + // End:0x13D + if((((int(WorldInfo.NetMode) != int(NM_Standalone)) && OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) && OnlineSub.GameInterface.GetGameSettings(GameSessionName) != none) + { + OnlineSub.GameInterface.AddEndOnlineGameCompleteDelegate(OnEndOnlineGameComplete); + OnlineSub.GameInterface.EndOnlineGame(GameSessionName); + return true; + } + return false; + //return ReturnValue; +} + +function FinishQuitToMainMenu() +{ + Class'Engine.Engine'.static.StopMovie(true); + ConsoleCommand("Disconnect"); + //return; +} + +function OnEndOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + OnlineSub.GameInterface.ClearEndOnlineGameCompleteDelegate(OnEndOnlineGameComplete); + // End:0xF0 + if(m_bQuittingToMainMenu) + { + OnlineSub.GameInterface.AddDestroyOnlineGameCompleteDelegate(OnDestroyOnlineGameComplete); + // End:0xF0 + if(!OnlineSub.GameInterface.DestroyOnlineGame(GameSessionName)) + { + OnDestroyOnlineGameComplete(GameSessionName, true); + } + } + //return; +} + +function OnDestroyOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + OnlineSub.GameInterface.ClearDestroyOnlineGameCompleteDelegate(OnDestroyOnlineGameComplete); + FinishQuitToMainMenu(); + //return; +} + +exec event ChooseThisControllerForSessionScout(bool bCustomMatch, int MaxPlayers, bool bPrivate, optional out array ReservedMembers) +{ + local OnlineGameSettings NewGameSettings; + + // End:0x26B + if(!OnlineSub.IsInSession(GameSessionName)) + { + NewGameSettings = new Class'Engine.OnlineGameSettings'; + NewGameSettings.bAllowInvites = bCustomMatch; + NewGameSettings.bPublic = bCustomMatch && !bPrivate; + NewGameSettings.NumPublicConnections = MaxPlayers; + NewGameSettings.ReservedMembers = ReservedMembers; + NewGameSettings.SessionTemplateName = OnlineSub.DefaultSessionTemplateName; + NewGameSettings.OwningPlayerId = PlayerReplicationInfo.ConsoleUniqueId; + NewGameSettings.OwningPlayerName = PlayerReplicationInfo.PlayerName; + OnlineSub.GameInterface.AddCreateOnlineGameCompleteDelegate(OnCreateOnlineGameComplete); + OnlineSub.GameInterface.CreateOnlineGame(byte(LocalPlayer(Player).ControllerId), GameSessionName, NewGameSettings); + } + //return; +} + +simulated function OnCreateOnlineGameComplete(name SessionName, bool bWasSuccessful) +{ + local byte PlatformSpecificInfo[80]; + local WorldInfo.EConsoleType ConsoleType; + + OnlineSub.GameInterface.ClearCreateOnlineGameCompleteDelegate(OnCreateOnlineGameComplete); + OnlineSub.GameInterface.ReadPlatformSpecificSessionInfoBySessionName(GameSessionName, PlatformSpecificInfo); + // End:0xC0 + if(WorldInfo.IsConsoleBuild(9)) + { + ConsoleType = 9; + } + else + { + // End:0xF0 + if(WorldInfo.IsConsoleBuild(8)) + { + ConsoleType = 8; + } + } + // End:0x126 + if(bWasSuccessful && int(ConsoleType) == int(9)) + { + MCTSSetSessionId(PlatformSpecificInfo); + } + //return; +} + +reliable client simulated event ReceiveSessionInfo(byte PlatformSpecificInfo[80], WorldInfo.EConsoleType ConsoleType) +{ + local OnlineGameSearch NewGameSearch; + + NewGameSearch = new Class'Engine.OnlineGameSearch'; + // End:0x18D + if((!OnlineSub.IsInSession(GameSessionName) && WorldInfo.IsConsoleBuild(ConsoleType)) && OnlineSub.GameInterface.BindPlatformSpecificSessionToSearch(0, NewGameSearch, PlatformSpecificInfo)) + { + OnlineSub.GameInterface.AddJoinOnlineGameCompleteDelegate(OnJoinOnlineGameCompleteForReceivedSessionInfo); + OnlineSub.GameInterface.JoinOnlineGame(byte(LocalPlayer(Player).ControllerId), GameSessionName, NewGameSearch.Results[0]); + } + //return; +} + +simulated function OnJoinOnlineGameCompleteForReceivedSessionInfo(name SessionName, bool bWasSuccessful) +{ + local OnlineGameSettings GS; + + GS = OnlineSub.GameInterface.GetGameSettings(GameSessionName); + // End:0xD0 + if(GS != none) + { + GS.bAllowInvites = (GS.bPublic && int(WorldInfo.NetMode) == int(NM_Standalone)) && IsInCustomMatch(); + } + // End:0x143 + if((GS != none) && GS.bPublic) + { + OnlineSub.GameInterface.UpdateOnlineGame(GameSessionName, none); + } + OnlineSub.GameInterface.ClearJoinOnlineGameCompleteDelegate(OnJoinOnlineGameCompleteForReceivedSessionInfo); + // End:0x1A3 + if(IsReconnect()) + { + RestablishVoiceForReconnect(); + } + else + { + EstablishPeers(); + } + //return; +} + +simulated event RestablishVoiceForReconnect() +{ + // End:0xD5 + if((int(WorldInfo.NetMode) == int(NM_Client)) || int(WorldInfo.NetMode) == int(NM_Standalone)) + { + OnlineSub.VoiceInterface.RegisterLocalTalker(byte(LocalPlayer(Player).ControllerId), 0); + // End:0xD5 + if(IsReconnect()) + { + ServerReEstablishP2PConnections(); + EstablishPeers(); + } + } + //return; +} + +// Export UPComPlayerController::execIsReconnect(FFrame&, void* const) +native simulated function bool IsReconnect(); + +reliable server function ServerReEstablishP2PConnections() +{ + local PComPlayerController PC; + + // End:0x63 + foreach WorldInfo.AllControllers(Class'PlatformCommon.PComPlayerController', PC) + { + // End:0x62 + if(PC != self) + { + PC.ClientRestablishP2PConnections(); + } + } + //return; +} + +reliable client simulated function ClientRestablishP2PConnections() +{ + EstablishPeers(); + //return; +} + +event RegisterOnlineDelegates() +{ + local LocalPlayer LP; + local int I; + + LP = LocalPlayer(Player); + super(PlayerController).RegisterOnlineDelegates(); + // End:0x370 + if((OnlineSub != none) && LP != none) + { + // End:0x27B + if((NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none)) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterfaceEx, OnlinePlayerInterfaceEx(none))) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + I = 0; + J0xF4: + + // End:0x163 [Loop If] + if(I < 24) + { + OnlineSub.PlayerInterface.AddLoginStatusChangeDelegate(OnLoginStatusChange, byte(I)); + I++; + // [Loop Continue] + goto J0xF4; + } + OnlineSub.SystemInterface.AddConnectionStatusChangeDelegate(OnConnectionStatusChange); + OnlineSub.PlayerInterface.AddCurrentUserChangedDelegate(OnCurrentUserChanged); + OnlineSub.PlayerInterfaceEx.AddPlayerTalkingDelegate(OnRemoteTalkerStatusChange); + OnlineSub.GameInterface.AddMultiplayerSessionChangeDelegate(OnMultiplayerSessionChange); + } + // End:0x370 + if(NotEqual_InterfaceInterface(OnlineSub.MarketplaceInterface, OnlineMarketplaceInterface(none))) + { + OnlineSub.MarketplaceInterface.AddMarketplaceItemPurchasedDelegate(OnMarketplaceItemPurchased); + I = 0; + J0x301: + + // End:0x370 [Loop If] + if(I < 24) + { + OnlineSub.MarketplaceInterface.AddReadInventoryItemsCompleteDelegate(byte(I), OnReadPlayerMarketplaceInventoryComplete); + I++; + // [Loop Continue] + goto J0x301; + } + } + } + //return; +} + +event ClearOnlineDelegates() +{ + local LocalPlayer LP; + local int I; + + LP = LocalPlayer(Player); + super(PlayerController).ClearOnlineDelegates(); + // End:0x370 + if((OnlineSub != none) && LP != none) + { + // End:0x27B + if((NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none)) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterfaceEx, OnlinePlayerInterfaceEx(none))) && NotEqual_InterfaceInterface(OnlineSub.GameInterface, OnlineGameInterface(none))) + { + I = 0; + J0xF4: + + // End:0x163 [Loop If] + if(I < 24) + { + OnlineSub.PlayerInterface.ClearLoginStatusChangeDelegate(OnLoginStatusChange, byte(I)); + I++; + // [Loop Continue] + goto J0xF4; + } + OnlineSub.SystemInterface.ClearConnectionStatusChangeDelegate(OnConnectionStatusChange); + OnlineSub.PlayerInterface.ClearCurrentUserChangedDelegate(OnCurrentUserChanged); + OnlineSub.PlayerInterfaceEx.ClearPlayerTalkingDelegate(OnRemoteTalkerStatusChange); + OnlineSub.GameInterface.ClearMultiplayerSessionChangeDelegate(OnMultiplayerSessionChange); + } + // End:0x370 + if(NotEqual_InterfaceInterface(OnlineSub.MarketplaceInterface, OnlineMarketplaceInterface(none))) + { + OnlineSub.MarketplaceInterface.ClearMarketplaceItemPurchasedDelegate(OnMarketplaceItemPurchased); + I = 0; + J0x301: + + // End:0x370 [Loop If] + if(I < 24) + { + OnlineSub.MarketplaceInterface.ClearReadInventoryItemsCompleteDelegate(byte(I), OnReadPlayerMarketplaceInventoryComplete); + I++; + // [Loop Continue] + goto J0x301; + } + } + } + //return; +} + +function OnMultiplayerSessionChange(name SessionName, SessionUpdateInfo SessionChanges) +{ + local array JoinedMembers; + local int I; + local bool bRecreateSession; + local OnlineGameSettings GS; + + // End:0x1C0 + if(SessionName == GameSessionName) + { + OnlineSub.GameInterface.GetCurrentSessionMemberInfo(GameSessionName, JoinedMembers); + OnlineSub.PlayerInterface.AddPrivilegeCheckedForUsersDelegate(OnGetVoicePermissionsForUsersComplete); + OnlineSub.PlayerInterface.CanCommunicateVoiceWithUsers(byte(LocalPlayer(Player).ControllerId), JoinedMembers); + I = 0; + J0x116: + + // End:0x1BD [Loop If] + if(I < SessionChanges.MembersLeft.Length) + { + OnlineSub.VoiceInterface.UnregisterRemoteTalker(SessionChanges.MembersLeft[I].PlayerNetId); + I++; + // [Loop Continue] + goto J0x116; + } + } + else + { + // End:0x3B5 + if(SessionName == PartySessionName) + { + // End:0x391 + if(SessionChanges.bMemberJoinedOrLeft && SessionChanges.MembersLeft.Length > 0) + { + OnlineSub.GameInterface.GetCurrentSessionMemberInfo(PartySessionName, JoinedMembers); + I = JoinedMembers.Length - 1; + J0x27A: + + // End:0x2DD [Loop If] + if(I >= 0) + { + // End:0x2CF + if(int(JoinedMembers[I].MemberStatus) != int(3)) + { + JoinedMembers.Remove(I, 1); + } + I--; + // [Loop Continue] + goto J0x27A; + } + GS = OnlineSub.GameInterface.GetGameSettings(PartySessionName); + // End:0x391 + if((((JoinedMembers.Length <= 1) && GS != none) && IsHostOfParty()) && GS.bPublic != (ShouldPartySessionsBePublic())) + { + bRecreateSession = true; + } + } + // End:0x3AB + if(bRecreateSession) + { + DestroyPartySession(); + } + else + { + UpdatePartyUI(); + } + } + } + //return; +} + +// Export UPComPlayerController::execIsPackageInstalled(FFrame&, void* const) +native function bool IsPackageInstalled(); + +// Export UPComPlayerController::execIsInGame(FFrame&, void* const) +native function bool IsInGame(); + +// Export UPComPlayerController::execLogoutPlayer(FFrame&, void* const) +native function LogoutPlayer(); + +event PairLoggedInUserAndCurrentController() +{ + local LocalPlayer LP; + local int LoggedInPlayerIndex; + + LP = LocalPlayer(Player); + // End:0x134 + if(((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) && LP != none) + { + OnlineSub.PlayerInterface.GetControllerIdFromNetId(OnlineSub.LoggedInPlayerNetId, LoggedInPlayerIndex); + OnlineSub.PlayerInterface.PairUserAndControllerAtIndex(byte(LoggedInPlayerIndex), byte(LP.ControllerId), -1); + } + //return; +} + +event GetControllerIdFromNetId(UniqueNetId PlayerID, out int ControllerId) +{ + // End:0x8D + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + OnlineSub.PlayerInterface.GetControllerIdFromNetId(PlayerID, ControllerId); + } + //return; +} + +simulated event LostP2PConnection(UniqueNetId UniqueId) +{ + OnlineSub.VoiceInterface.UnregisterRemoteTalker(UniqueId); + SetTimer(4.0000000, false, 'EstablishPeers'); + //return; +} + +simulated exec event EstablishPeers() +{ + // End:0xAC + if(WorldInfo.IsConsoleBuild(8)) + { + OnlineSub.GameInterface.AddGetUserConnectionInfoCompleteDelegate(OnGetUserConnectionInfoComplete); + OnlineSub.GameInterface.GetUserConnectionInfoAsync(GetUserNamesForPS4P2PConnections()); + } + else + { + // End:0x17D + if(WorldInfo.IsConsoleBuild(9)) + { + OnlineSub.GameInterface.AddGetSessionMemberInfoCompleteDelegate(OnGetSessionMemberInfoComplete); + OnlineSub.GameInterface.GetCurrentSessionMemberInfoAsync(byte(LocalPlayer(Player).ControllerId), GameSessionName); + } + } + //return; +} + +// Export UPComPlayerController::execCloseConnectionsToInvalidPeers(FFrame&, void* const) +native simulated function CloseConnectionsToInvalidPeers(array SessionListInfo); + +// Export UPComPlayerController::execGetUserNamesForPS4P2PConnections(FFrame&, void* const) +native simulated function array GetUserNamesForPS4P2PConnections(); + +simulated function OnGetUserConnectionInfoComplete(array SessionListInfo, bool bWasSuccessful) +{ + OnlineSub.GameInterface.ClearGetUserConnectionInfoCompleteDelegate(OnGetUserConnectionInfoComplete); + // End:0x66 + if(bWasSuccessful) + { + ConnectToPeers(SessionListInfo); + } + CloseConnectionsToInvalidPeers(SessionListInfo); + //return; +} + +simulated function OnGetSessionMemberInfoComplete(array SessionListInfo, bool bWasSuccessful) +{ + OnlineSub.GameInterface.ClearGetSessionMemberInfoCompleteDelegate(OnGetSessionMemberInfoComplete); + // End:0x100 + if(bWasSuccessful) + { + OnlineSub.PlayerInterface.AddPrivilegeCheckedForUsersDelegate(OnGetVoicePermissionsForUsersComplete); + OnlineSub.PlayerInterface.CanCommunicateVoiceWithUsers(byte(LocalPlayer(Player).ControllerId), SessionListInfo); + } + //return; +} + +simulated function OnGetVoicePermissionsForUsersComplete(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, array Results) +{ + local array SessionListInfo; + local int I; + + OnlineSub.PlayerInterface.ClearPrivilegeCheckedForUsersDelegate(OnGetVoicePermissionsForUsersComplete); + // End:0xFE + if(int(Privilege) == int(3)) + { + I = 0; + J0x65: + + // End:0xEB [Loop If] + if(I < Results.Length) + { + // End:0xDD + if(Results[I].bHasPermission) + { + SessionListInfo.AddItem(Results[I].User); + } + ++I; + // [Loop Continue] + goto J0x65; + } + ConnectToPeers(SessionListInfo); + } + //return; +} + +event UnregisterP2PEnemiesForCustomMatch(array EnemyIds) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x79 [Loop If] + if(I < EnemyIds.Length) + { + OnlineSub.VoiceInterface.UnregisterRemoteTalker(EnemyIds[I]); + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated exec event CreatePartySession() +{ + local OnlineGameSettings NewGameSettings; + + // End:0x27 + if(!WorldInfo.IsConsoleBuild()) + { + return; + } + // End:0x21B + if(!OnlineSub.IsInSession(PartySessionName)) + { + NewGameSettings = new Class'Engine.OnlineGameSettings'; + NewGameSettings.bAllowInvites = true; + NewGameSettings.bPublic = ShouldPartySessionsBePublic(); + NewGameSettings.NumPublicConnections = m_nMaxPartyPublicConnections; + NewGameSettings.SessionTemplateName = OnlineSub.PartySessionTemplateName; + NewGameSettings.OwningPlayerId = PlayerReplicationInfo.ConsoleUniqueId; + OnlineSub.GameInterface.AddCreateOnlineGameCompleteDelegate(OnCreatePartySessionComplete); + m_bPartySessionCreateInProgress = true; + OnlineSub.GameInterface.CreateOnlineGame(byte(LocalPlayer(Player).ControllerId), PartySessionName, NewGameSettings); + } + //return; +} + +simulated function OnCreatePartySessionComplete(name SessionName, bool bSuccessful) +{ + // End:0x8B + if(SessionName == PartySessionName) + { + OnlineSub.GameInterface.ClearCreateOnlineGameCompleteDelegate(OnCreatePartySessionComplete); + m_bPartySessionCreateInProgress = false; + // End:0x8B + if(bSuccessful) + { + TogglePartySessionInvitesAllowed(true); + UpdateMCTSWithNewPartyInfo(); + } + } + //return; +} + +event InvitePlayerToPartyByName(string InPlayerName) +{ + local UniqueNetId IgnoredId; + + // End:0x9D + if(WorldInfo.IsConsoleBuild(8)) + { + OnlineSub.PlayerInterface.SendGameInviteToFriend(byte(LocalPlayer(Player).ControllerId), PartySessionName, IgnoredId, InPlayerName); + } + //return; +} + +event InvitePlayerToParty(UniqueNetId InPlayerId) +{ + OnlineSub.PlayerInterface.SendGameInviteToFriend(byte(LocalPlayer(Player).ControllerId), PartySessionName, InPlayerId); + //return; +} + +simulated exec event DestroyPartySession() +{ + m_bPartyDestroyInProgress = true; + OnlineSub.GameInterface.AddDestroyOnlineGameCompleteDelegate(OnPartySessionDestroyed); + OnlineSub.GameInterface.DestroyOnlineGame(PartySessionName); + //return; +} + +simulated function OnPartySessionDestroyed(name SessionName, bool bWasSuccessful) +{ + // End:0xB5 + if(SessionName == PartySessionName) + { + m_bPartyDestroyInProgress = false; + UpdateMCTSWithNewPartyInfo(); + OnlineSub.GameInterface.ClearDestroyOnlineGameCompleteDelegate(OnPartySessionDestroyed); + // End:0xB5 + if((myHUD != none) && !myHUD.IsInState('Disconnected')) + { + CreatePartySession(); + } + } + //return; +} + +simulated function OnGameInviteAccepted(const out OnlineGameSearchResult InviteResult) +{ + local bool bPartySession; + local name SessionName; + local OnlineGameSettings GS; + local OnlineSubsystem.EFeaturePrivilegeLevel Hint; + local int InvitedPlayerControllerId; + + // End:0x76 + if(InviteResult.GameSettings.SessionTemplateName ~= OnlineSub.PartySessionTemplateName) + { + bPartySession = true; + SessionName = PartySessionName; + } + else + { + // End:0xDD + if(InviteResult.GameSettings.SessionTemplateName ~= OnlineSub.DefaultSessionTemplateName) + { + SessionName = GameSessionName; + } + } + // End:0x1B7 + if(OnlineSub.IsInSession(SessionName)) + { + GS = OnlineSub.GameInterface.GetGameSettings(SessionName); + // End:0x1B7 + if((GS != none) && GS.SessionGuid == InviteResult.GameSettings.SessionGuid) + { + return; + } + } + // End:0x1D2 + if(!IsPackageInstalled()) + { + ShowPackageNotInstalledForPartyInviteWarning(); + return; + } + // End:0x21F + if(InviteResult.GameSettings.NumOpenPublicConnections <= 0) + { + ShowPartyFullWarning(bPartySession); + return; + } + m_PendingInviteResult = InviteResult; + // End:0x2CF + if(bPartySession) + { + m_bPartySessionJoinInProgress = true; + OnlineSub.GameInterface.AddDestroyOnlineGameCompleteDelegate(OnGameDestroyedForPartyJoin); + OnlineSub.GameInterface.DestroyOnlineGame(PartySessionName); + } + // End:0x40A + if(InviteResult.GameSettings.SessionTemplateName == "") + { + OnlineSub.PlayerInterface.GetControllerIdFromNetId(InviteResult.GameSettings.OwningPlayerId, InvitedPlayerControllerId); + OnlineSub.PlayerInterface.AddPrivilegeLevelCheckedDelegate(OnAlternatePrivilegeLevelCheckedComplete); + OnlineSub.PlayerInterface.CanPlayOnline(byte(InvitedPlayerControllerId), Hint); + } + else + { + // End:0x523 + if(!bPartySession) + { + LeaveMatchQueue(); + OnlineSub.PlayerInterface.GetControllerIdFromNetId(InviteResult.GameSettings.OwningPlayerId, InvitedPlayerControllerId); + OnlineSub.PlayerInterface.AddPrivilegeLevelCheckedDelegate(OnPrivilegeCheckForGameSessionJoin); + OnlineSub.PlayerInterface.CanPlayOnline(byte(InvitedPlayerControllerId), Hint); + } + } + //return; +} + +simulated function OnAlternatePrivilegeLevelCheckedComplete(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevel, bool bDiffersFromHint) +{ + OnlineSub.PlayerInterface.ClearPrivilegeLevelCheckedDelegate(OnAlternatePrivilegeLevelCheckedComplete); + // End:0x89 + if((int(Privilege) == int(0)) && int(PrivilegeLevel) == int(0)) + { + ShowPrivilegeMessageAndDeclineInvite(); + m_bPartySessionJoinInProgress = false; + } + else + { + ShowPartyNoLongerAvailableWarning(); + } + //return; +} + +simulated function OnGameDestroyedForPartyJoin(name SessionName, bool bWasSuccessful) +{ + local OnlineSubsystem.EFeaturePrivilegeLevel Hint; + local int InvitedPlayerControllerId; + + // End:0x167 + if(SessionName == PartySessionName) + { + UpdateMCTSWithNewPartyInfo(); + OnlineSub.GameInterface.ClearDestroyOnlineGameCompleteDelegate(OnGameDestroyedForPartyJoin); + OnlineSub.PlayerInterface.GetControllerIdFromNetId(m_PendingInviteResult.GameSettings.OwningPlayerId, InvitedPlayerControllerId); + OnlineSub.PlayerInterface.AddPrivilegeLevelCheckedDelegate(OnPrivilegeLevelCheckedCompleteForPartyJoin); + OnlineSub.PlayerInterface.CanPlayOnline(byte(InvitedPlayerControllerId), Hint); + } + //return; +} + +simulated function OnPrivilegeLevelCheckedCompleteForPartyJoin(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevel, bool bDiffersFromHint) +{ + local OnlineGameSearchResult EmptyResult; + + OnlineSub.PlayerInterface.ClearPrivilegeLevelCheckedDelegate(OnPrivilegeLevelCheckedCompleteForPartyJoin); + // End:0x89 + if((int(Privilege) == int(0)) && int(PrivilegeLevel) == int(0)) + { + ShowPrivilegeMessageAndDeclineInvite(); + m_bPartySessionJoinInProgress = false; + } + else + { + OnlineSub.PreLogin(); + OnlineSub.GameInterface.AddJoinOnlineGameCompleteDelegate(OnJoinSessionForReceivedInviteComplete); + OnlineSub.GameInterface.JoinOnlineGame(LocalUserNum, PartySessionName, m_PendingInviteResult); + m_PendingInviteResult = EmptyResult; + } + //return; +} + +simulated function OnPrivilegeCheckForGameSessionJoin(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevel, bool bDiffersFromHint) +{ + local OnlineGameSearchResult EmptyResult; + + OnlineSub.PlayerInterface.ClearPrivilegeLevelCheckedDelegate(OnPrivilegeCheckForGameSessionJoin); + // End:0x73 + if((int(Privilege) == int(0)) && int(PrivilegeLevel) == int(0)) + { + } + else + { + OnlineSub.PreLogin(); + OnlineSub.GameInterface.AddJoinOnlineGameCompleteDelegate(OnJoinSessionForReceivedInviteComplete); + OnlineSub.GameInterface.JoinOnlineGame(LocalUserNum, GameSessionName, m_PendingInviteResult); + m_PendingInviteResult = EmptyResult; + } + //return; +} + +simulated function OnJoinSessionForReceivedInviteComplete(name SessionName, bool bWasSuccessful) +{ + OnlineSub.GameInterface.ClearJoinOnlineGameCompleteDelegate(OnJoinSessionForReceivedInviteComplete); + // End:0x14F + if(bWasSuccessful) + { + m_bPartySessionJoinInProgress = false; + // End:0xE9 + if((myHUD != none) && myHUD.IsInState('Disconnected')) + { + // End:0xCD + if(SessionName == PartySessionName) + { + OnlineSub.bCameFromAutoLogin = true; + } + // End:0xE6 + if(!TryAutoLogin()) + { + TryAutoLoginDelayed(); + } + } + else + { + // End:0x121 + if(SessionName == PartySessionName) + { + UpdateMCTSWithNewPartyInfo(); + TryOpenPartyUI(); + UpdatePartyUI(); + } + else + { + // End:0x14C + if(SessionName == GameSessionName) + { + JoinCustomMatchFromInvite(); + EstablishPeers(); + } + } + } + } + else + { + m_bPartySessionJoinInProgress = false; + ShowPartyNoLongerAvailableWarning(); + } + //return; +} + +event JoinCustomMatchFromInvite() +{ + SetTimer(1.0000000, false, 'JoinCustomMatchForInviteDelay'); + //return; +} + +function JoinCustomMatchForInviteDelay() +{ + local OnlineGameSettings GS; + + GS = OnlineSub.GameInterface.GetGameSettings(GameSessionName); + // End:0x8A + if(GS != none) + { + ChallengeJoin(0, GS.SessionGuid, "Password"); + } + //return; +} + +simulated exec event bool ShowPeoplePickerUI() +{ + local byte LocalUserNum; + local array SessionMemberList; + local int OpenPartySlots; + local array FriendsList; + + FriendsList.Length = 0; + // End:0x1C2 + if(WorldInfo.IsConsoleBuild(8)) + { + OnlineSub.GameInterface.GetCurrentSessionMemberInfo(PartySessionName, SessionMemberList); + OpenPartySlots = 5 - SessionMemberList.Length; + OpenPartySlots = Clamp(OpenPartySlots, 0, 4); + OnlineSub.PlayerInterfaceEx.AddPeoplePickerCompleteDelegate(byte(LocalPlayer(Player).ControllerId), OnPeoplePickerComplete); + OnlineSub.PlayerInterfaceEx.ShowPeoplePickerUI(byte(LocalPlayer(Player).ControllerId), FriendsList, OpenPartySlots, Localize("TgGfxParty", "party_joinquestion", "GFxTranslation")); + return true; + } + // End:0x2CB + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) + { + LocalUserNum = byte(LocalPlayer(Player).ControllerId); + OnlineSub.PlayerInterface.AddReadFriendsCompleteDelegate(LocalUserNum, OnReadFriendsListComplete); + return OnlineSub.PlayerInterface.ReadFriendsList(LocalUserNum); + } + return false; + //return ReturnValue; +} + +function OnReadFriendsListComplete(bool bWasSuccessful) +{ + local array FriendsList; + local byte LocalUserNum; + local string PeoplePickerText; + local int OpenPartySlots; + local array SessionMemberList; + + LocalUserNum = byte(LocalPlayer(Player).ControllerId); + OnlineSub.PlayerInterface.ClearReadFriendsCompleteDelegate(LocalUserNum, OnReadFriendsListComplete); + // End:0xA0 + if(!bWasSuccessful) + { + ShowUnableToReadFriendsListWarning(); + return; + } + else + { + PeoplePickerText = Localize("TgGfxParty", "party_peoplepickertext", "GFxTranslation"); + OnlineSub.PlayerInterface.GetFriendsList(LocalUserNum, FriendsList); + OnlineSub.GameInterface.GetCurrentSessionMemberInfo(PartySessionName, SessionMemberList); + FilterFriendListForPeoplePicker(FriendsList, SessionMemberList); + OpenPartySlots = 5 - SessionMemberList.Length; + OpenPartySlots = Clamp(OpenPartySlots, 0, 4); + // End:0x2A3 + if(OpenPartySlots > 0) + { + // End:0x299 + if(FriendsList.Length > 0) + { + BlockPartySceneInput(true); + OnlineSub.PlayerInterfaceEx.AddPeoplePickerCompleteDelegate(LocalUserNum, OnPeoplePickerComplete); + OnlineSub.PlayerInterfaceEx.ShowPeoplePickerUI(LocalUserNum, FriendsList, OpenPartySlots, PeoplePickerText); + } + else + { + ShowNoFriendsForPartyInviteWarning(); + } + } + } + //return; +} + +function OnPeoplePickerComplete(bool bWasSuccessful, array PeoplePicked) +{ + local int I; + local UniqueNetId ZeroId; + + // End:0x148 + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterfaceEx, OnlinePlayerInterfaceEx(none))) + { + OnlineSub.PlayerInterfaceEx.ClearPeoplePickerCompleteDelegate(byte(LocalPlayer(Player).ControllerId), OnPeoplePickerComplete); + m_LastPendingPartyInviteId = ZeroId; + // End:0x148 + if(bWasSuccessful && PeoplePicked.Length > 0) + { + I = 0; + J0xF2: + + // End:0x148 [Loop If] + if(I < PeoplePicked.Length) + { + InvitePlayerToParty(PeoplePicked[I].UniqueId); + I++; + // [Loop Continue] + goto J0xF2; + } + } + } + //return; +} + +simulated event bool IsHostOfParty() +{ + return OnlineSub.GameInterface.IsHostOfSession(PartySessionName); + //return ReturnValue; +} + +simulated event UpdateMCTSWithNewPartyInfo() +{ + local OnlineGameSettings GS; + local bool bIsHost; + local string SessionGuid; + + GS = OnlineSub.GameInterface.GetGameSettings(PartySessionName); + // End:0x94 + if(GS != none) + { + SessionGuid = GS.SessionGuid; + bIsHost = IsHostOfParty(); + } + UpdateMCTSSession(SessionGuid, bIsHost); + //return; +} + +simulated event TogglePartySessionInvitesAllowed(bool bAllowed) +{ + local OnlineGameSettings GS; + local bool bInCustomQueue; + + GS = OnlineSub.GameInterface.GetGameSettings(GameSessionName); + // End:0x87 + if((GS != none) && GS.bAllowInvites) + { + bInCustomQueue = true; + } + GS = OnlineSub.GameInterface.GetGameSettings(PartySessionName); + // End:0x1A9 + if((((!bInCustomQueue && GS != none) && IsHostOfParty()) && !m_bPartySessionCreateInProgress) && GS.bAllowInvites != bAllowed) + { + GS.bAllowInvites = bAllowed; + OnlineSub.GameInterface.UpdateOnlineGame(PartySessionName, none); + } + //return; +} + +simulated event ToggleGameSessionInvitesAllowed(bool bAllowed) +{ + local OnlineGameSettings GS; + + GS = OnlineSub.GameInterface.GetGameSettings(GameSessionName); + // End:0x188 + if(((GS != none) && GS.bAllowInvites != bAllowed) && GS.bPublic || OnlineSub.GameInterface.IsHostOfSession(GameSessionName)) + { + GS.bAllowInvites = bAllowed; + // End:0x148 + if(!bAllowed) + { + GS.bPublic = false; + } + OnlineSub.GameInterface.UpdateOnlineGame(GameSessionName, none); + } + //return; +} + +simulated event SetAsNewPartyHost() +{ + local OnlineGameSettings GS; + + GS = OnlineSub.GameInterface.GetGameSettings(PartySessionName); + // End:0x10F + if((GS != none) && !m_bPartySessionCreateInProgress) + { + GS.OwningPlayerId = PlayerReplicationInfo.ConsoleUniqueId; + GS.bAllowInvites = ArePartySessionInvitesAllowed(); + OnlineSub.GameInterface.UpdateOnlineGame(PartySessionName, none); + } + //return; +} + +event TryAutoLoginDelayed() +{ + SetTimer(0.2000000, false, 'TryAutoLogin'); + //return; +} + +// Export UPComPlayerController::execTryAutoLogin(FFrame&, void* const) +native function bool TryAutoLogin(); + +reliable client simulated event ClientPlayInputLightingEffect(name InPresetName, optional bool bUseOverrideStartTime = false, optional float OverrideStartTime = 0.0000000) +{ + PlayInputLightingEffect(InPresetName, bUseOverrideStartTime, OverrideStartTime); + //return; +} + +// Export UPComPlayerController::execPlayInputLightingEffect(FFrame&, void* const) +native function PlayInputLightingEffect(name InPresetName, optional bool bUseOverrideStartTime = false, optional float OverrideStartTime = 0.0000000); + +// Export UPComPlayerController::execStopInputLightingEffect(FFrame&, void* const) +native function StopInputLightingEffect(name InPresetName); + +// Export UPComPlayerController::execSetCurrentTimeForInputLightingEffect(FFrame&, void* const) +native function SetCurrentTimeForInputLightingEffect(name InPresetName, float InCurrentTime); + +exec event PlayTestInputLightingEffect(name InPresetName) +{ + ClientPlayInputLightingEffect(InPresetName); + //return; +} + +defaultproperties +{ + PartySessionName="Party" + GameSessionName="Game" + InputClass=Class'PlatformCommon.PComPlayerInput' + // Reference: CylinderComponent'PlatformCommon.Default__PComPlayerController.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'GameFramework.Default__GamePlayerController.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComPlayerInput.uc b/exported/PlatformCommon/Classes/PComPlayerInput.uc new file mode 100755 index 00000000..9c169131 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComPlayerInput.uc @@ -0,0 +1,262 @@ +class PComPlayerInput extends PlayerInput within PlayerController + transient + native + config(Input) + hidecategories(Object,UIRoot); + +const m_nMinDisplayLookSensitivity = 1.0; +const m_nMaxDisplayLookSensitivity = 100.0; + +var bool c_bDirty; +var config bool c_bUseServerBindings; +var config bool c_bJumpEnabled; +var config string c_sCurrentProfile; +var int m_nKeybindConfigSet; +var float m_nMinLookSensitivity; +var float m_nMaxLookSensitivity; +var int m_RecCastMode; + +// Export UPComPlayerInput::execResetKeysToDefault(FFrame&, void* const) +native function ResetKeysToDefault(); + +// Export UPComPlayerInput::execGetBindExtended(FFrame&, void* const) +native function bool GetBindExtended(string Str, out KeyBind Bind, optional bool bExactMatch = false); + +// Export UPComPlayerInput::execGetBindFromCommand(FFrame&, void* const) +native function KeyBind GetBindFromCommand(string Cmd, optional int nAlternate = 0); + +// Export UPComPlayerInput::execExtendedStringToKeybind(FFrame&, void* const) +native function KeyBind ExtendedStringToKeybind(string Str, string Cmd); + +// Export UPComPlayerInput::execKeybindToExtendedString(FFrame&, void* const) +native function string KeybindToExtendedString(const out KeyBind Bind); + +// Export UPComPlayerInput::execGetBind(FFrame&, void* const) +native function string GetBind(const out name Key, const optional out KeyBind ModifierKeyBind); + +// Export UPComPlayerInput::execGetKeybindWithCurrentModifiers(FFrame&, void* const) +native function KeyBind GetKeybindWithCurrentModifiers(const out name Key); + +// Export UPComPlayerInput::execStoreMouseSettings(FFrame&, void* const) +native function StoreMouseSettings(); + +// Export UPComPlayerInput::execReadMouseSettings(FFrame&, void* const) +native function ReadMouseSettings(); + +simulated function SetDirty() +{ + c_bDirty = true; + //return; +} + +exec function SetMouseInput(bool bInvert, bool bSmooth, float fSensitivity) +{ + bInvertMouse = bInvert; + bEnableMouseSmoothing = bSmooth; + MouseSensitivity = fSensitivity; + // End:0x61 + if(MouseSensitivity <= float(0)) + { + MouseSensitivity = default.MouseSensitivity; + } + StoreMouseSettings(); + //return; +} + +exec function SetLookSensitivity(float fSensitivity, optional float fSensitivityY = 0.0000000) +{ + local float LookSensitivityIncrement; + + // End:0x2D + if(fSensitivityY <= float(0)) + { + fSensitivityY = fSensitivity; + } + // End:0x4D + if(fSensitivityY <= float(0)) + { + fSensitivityY = 1.0000000; + } + LookSensitivityIncrement = (m_nMaxLookSensitivity - m_nMinLookSensitivity) / 100.0000000; + m_fLookSensitivity = (fSensitivity * LookSensitivityIncrement) + m_nMinLookSensitivity; + m_fLookSensitivityY = (fSensitivityY * LookSensitivityIncrement) + m_nMinLookSensitivity; + StoreMouseSettings(); + //return; +} + +event float GetDisplayLookSensitivity() +{ + local float LookSensitivityIncrement; + + LookSensitivityIncrement = (m_nMaxLookSensitivity - m_nMinLookSensitivity) / 100.0000000; + return (m_fLookSensitivity - m_nMinLookSensitivity) / LookSensitivityIncrement; + //return ReturnValue; +} + +event float GetDisplayLookSensitivityY() +{ + local float LookSensitivityIncrement; + + LookSensitivityIncrement = (m_nMaxLookSensitivity - m_nMinLookSensitivity) / 100.0000000; + return (m_fLookSensitivityY - m_nMinLookSensitivity) / LookSensitivityIncrement; + //return ReturnValue; +} + +exec function SetBindExtended(const string ExtendedBinding, string Command) +{ + local KeyBind oldBinding, newBinding; + local bool bOldBinding; + + bOldBinding = GetBindExtended(ExtendedBinding, oldBinding, true); + // End:0x63 + if(bOldBinding && oldBinding.Command == Command) + { + return; + } + // End:0x86 + if(bOldBinding) + { + Bindings.RemoveItem(oldBinding); + } + newBinding = ExtendedStringToKeybind(ExtendedBinding, Command); + Bindings.AddItem(newBinding); + //return; +} + +event SetCommandBind(string Command, int nAlternate, const string ExtendedBinding) +{ + local KeyBind oldCommandBinding, oldKeyBinding, newBinding; + local int nOldIndex; + local bool bKeyWasPreviouslyBound; + + oldCommandBinding = GetBindFromCommand(Command, nAlternate); + bKeyWasPreviouslyBound = GetBindExtended(ExtendedBinding, oldKeyBinding, true); + newBinding = ExtendedStringToKeybind(ExtendedBinding, Command); + // End:0x97 + if(bKeyWasPreviouslyBound) + { + Bindings.RemoveItem(oldKeyBinding); + } + nOldIndex = Bindings.RemoveItem(oldCommandBinding); + newBinding = ExtendedStringToKeybind(ExtendedBinding, Command); + // End:0x112 + if(nOldIndex != -1) + { + Bindings.InsertItem(nOldIndex, newBinding); + } + else + { + // End:0x13A + if(nAlternate == 0) + { + Bindings.AddItem(newBinding); + } + else + { + Bindings.InsertItem(0, newBinding); + } + } + //return; +} + +exec function UnbindKey(const out name BindName) +{ + SetBind(BindName, ""); + //return; +} + +exec event UnbindCommandAll(string Command) +{ + local int BindIndex; + local array SplitCommand; + local string AxisName; + + // End:0x4F + if((Left(Command, 1) == "\"") && Right(Command, 1) == "\"") + { + Command = Mid(Command, 1, Len(Command) - 2); + } + // End:0x1BE + if(InStr(Command, "Axis ") == 0) + { + SplitCommand = SplitString(Command, " ", true); + // End:0xB1 + if(SplitCommand.Length >= 2) + { + AxisName = SplitCommand[1]; + } + BindIndex = Bindings.Length - 1; + J0xC8: + + // End:0x1BB [Loop If] + if(BindIndex >= 0) + { + // End:0x123 + if(Bindings[BindIndex].Command == Command) + { + Bindings.Remove(BindIndex, 1); + } + else + { + // End:0x1AD + if(Left(string(Bindings[BindIndex].Name), 4) != "GBA_") + { + // End:0x1AD + if(InStr(Bindings[BindIndex].Command, AxisName) != -1) + { + Bindings.Remove(BindIndex, 1); + } + } + } + BindIndex--; + // [Loop Continue] + goto J0xC8; + } + } + else + { + BindIndex = Bindings.Length - 1; + J0x1D5: + + // End:0x23B [Loop If] + if(BindIndex >= 0) + { + // End:0x22D + if(Bindings[BindIndex].Command == Command) + { + Bindings.Remove(BindIndex, 1); + } + BindIndex--; + // [Loop Continue] + goto J0x1D5; + } + } + //return; +} + +exec function UnbindCommand(string Command, optional int nAlternate = 0) +{ + local KeyBind Binding; + + Binding = GetBindFromCommand(Command, nAlternate); + UnbindKey(Binding.Name); + //return; +} + +exec function Jump() +{ + // End:0x17 + if(c_bJumpEnabled) + { + super.Jump(); + } + //return; +} + +defaultproperties +{ + c_bUseServerBindings=true + m_nKeybindConfigSet=1 + m_nMinLookSensitivity=0.1500000 + m_nMaxLookSensitivity=6.5000000 +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComPlayerProfile.uc b/exported/PlatformCommon/Classes/PComPlayerProfile.uc new file mode 100755 index 00000000..7f0735d0 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComPlayerProfile.uc @@ -0,0 +1,83 @@ +class PComPlayerProfile extends OnlinePlayerStorage + native; + +struct native PropertyPair +{ + var int PropertyId; + var int Value; + + structdefaultproperties + { + PropertyId=0 + Value=0 + } +}; + +struct native AccoladeStruct +{ + var int AccoladeId; + var int ActivityId; + var int Type; + var int Value; + + structdefaultproperties + { + AccoladeId=0 + ActivityId=0 + Type=0 + Value=0 + } +}; + +struct native BadgeStruct +{ + var int BadgeId; + var int ActivityId; + var int Icon; + var int Tier; + var int Progress; + var int MaxValue; + var int Category; + var init string Title; + var init string Description; + + structdefaultproperties + { + BadgeId=0 + ActivityId=0 + Icon=0 + Tier=0 + Progress=0 + MaxValue=0 + Category=0 + Title="" + Description="" + } +}; + +var int Rank; +var int Kills; +var int Deaths; +var int Assists; +var int XpLevel; +var int HZPoints; +var int XPPoints; +var int AssistPoints; +var int AverageScore; +var int BoostHoursRemaining; +var int InfoMask; +var int TimePlayed; +var int TotalAccolades; +var int FastestSki; +var int FlagGrabs; +var int FlagCaps; +var int GensDestroyed; +var int ObjsDestroyed; +var bool bVIP; +var bool bBoost; +var int PlayerID; +var init string PlayerName; +var array Badges; +var array TopBadges; +var array ClassTimePlayed; +var array Accolades; diff --git a/exported/PlatformCommon/Classes/PComPositionHistoryComponent.uc b/exported/PlatformCommon/Classes/PComPositionHistoryComponent.uc new file mode 100755 index 00000000..a36579f2 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComPositionHistoryComponent.uc @@ -0,0 +1,2 @@ +class PComPositionHistoryComponent extends ActorComponent + native; diff --git a/exported/PlatformCommon/Classes/PComPositionHistoryServerComponent.uc b/exported/PlatformCommon/Classes/PComPositionHistoryServerComponent.uc new file mode 100755 index 00000000..588bb903 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComPositionHistoryServerComponent.uc @@ -0,0 +1,55 @@ +class PComPositionHistoryServerComponent extends ActorComponent + native; + +const MAX_POSITION_HISTORY_FRAMES = 30; + +struct native PComPositionHistoryData +{ + var Vector Location; + var Rotator Rotation; + var Vector Velocity; + var Actor.EPhysics Physics; + var bool bWasFalling; + var bool bCollideActors; + var bool bBlockActors; + + structdefaultproperties + { + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Rotation=(Pitch=0,Yaw=0,Roll=0) + Velocity=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Physics=EPhysics.PHYS_None + bWasFalling=false + bCollideActors=false + bBlockActors=false + } +}; + +var int CurrentIndex; +var float ServerTimeStamps[30]; +var float ClientTimeStamps[30]; +var Vector Positions[30]; +var Vector Velocities[30]; +var Rotator Rotations[30]; +var byte bJustTeleported[30]; +var byte bCollideActors[30]; +var byte bBlockActors[30]; +var Actor.EPhysics Physics[30]; + +// Export UPComPositionHistoryServerComponent::execRecordData(FFrame&, void* const) +native final function RecordData(); + +// Export UPComPositionHistoryServerComponent::execGetPastData(FFrame&, void* const) +native final function PComPositionHistoryData GetPastData(float RewindTime, optional bool bUseClientTimeStamps = false); + +// Export UPComPositionHistoryServerComponent::execIsOverlapping(FFrame&, void* const) +native final function bool IsOverlapping(float RewindTime, Vector LocationToCheck, float RadiusToCheck, out PComPositionHistoryData PastDataUsed); + +// Export UPComPositionHistoryServerComponent::execIsInSphere(FFrame&, void* const) +native final function bool IsInSphere(float RewindTime, Vector LocationToCheck, float RadiusToCheck, out PComPositionHistoryData PastDataUsed); + +defaultproperties +{ + CurrentIndex=-1 + TickGroup=ETickingGroup.TG_PostUpdateWork +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComRepInfo_Game.uc b/exported/PlatformCommon/Classes/PComRepInfo_Game.uc new file mode 100755 index 00000000..ff26656d --- /dev/null +++ b/exported/PlatformCommon/Classes/PComRepInfo_Game.uc @@ -0,0 +1,35 @@ +class PComRepInfo_Game extends GameReplicationInfo + native + config(Game) + hidecategories(Navigation,Movement,Collision); + +var PComMusicThemePlayer m_MusicThemePlayer; +var Class m_MusicThemePlayerClass; +var globalconfig string m_MusicThemePlayerClassName; + +// Export UPComRepInfo_Game::execPlayMusicEvent(FFrame&, void* const) +native function PlayMusicEvent(const name EventName); + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + CreateMusicThemePlayer(); + //return; +} + +simulated function CreateMusicThemePlayer() +{ + // End:0x40 + if(Len(m_MusicThemePlayerClassName) > 0) + { + m_MusicThemePlayerClass = Class(FindObject(m_MusicThemePlayerClassName, Class'Core.Class')); + } + m_MusicThemePlayer = new (self) m_MusicThemePlayerClass; + m_MusicThemePlayer.Init(); + //return; +} + +defaultproperties +{ + m_MusicThemePlayerClass=Class'PlatformCommon.PComMusicThemePlayer' +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComSeqAct_PlayMusicEvent.uc b/exported/PlatformCommon/Classes/PComSeqAct_PlayMusicEvent.uc new file mode 100755 index 00000000..a29cc4b1 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComSeqAct_PlayMusicEvent.uc @@ -0,0 +1,12 @@ +class PComSeqAct_PlayMusicEvent extends SequenceAction + native(Audio) + forcescriptorder(true) + hidecategories(Object); + +var() name EventName; + +defaultproperties +{ + VariableLinks=none + ObjName="Play Music Event" +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComStructures.uc b/exported/PlatformCommon/Classes/PComStructures.uc new file mode 100755 index 00000000..4cec6660 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComStructures.uc @@ -0,0 +1,47 @@ +class PComStructures extends Object + native; + +enum CMTargetType +{ + CMTT_Pawn, // 0 + CMTT_Deployable, // 1 + CMTT_Destructible, // 2 + CMTT_Projectile, // 3 + CMTT_MAX // 4 +}; + +struct native CombatMessageInfo +{ + var int nMsgId; + var int nSourceId; + var PComStructures.CMTargetType eSourceType; + var int nSourceOwnerId; + var int nTargetId; + var PComStructures.CMTargetType eTargetType; + var int nAmount1; + var int nAmount2; + var int nSourceItemId; + var int nDamageTypeId; + var int nLocationId; + var int nEventIndex; + var int nLocationX; + var int nLocationY; + + structdefaultproperties + { + nMsgId=0 + nSourceId=0 + eSourceType=CMTargetType.CMTT_Pawn + nSourceOwnerId=0 + nTargetId=0 + eTargetType=CMTargetType.CMTT_Pawn + nAmount1=0 + nAmount2=0 + nSourceItemId=0 + nDamageTypeId=0 + nLocationId=0 + nEventIndex=0 + nLocationX=0 + nLocationY=0 + } +}; diff --git a/exported/PlatformCommon/Classes/PComSupportCommands.uc b/exported/PlatformCommon/Classes/PComSupportCommands.uc new file mode 100755 index 00000000..4c609dd5 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComSupportCommands.uc @@ -0,0 +1,252 @@ +class PComSupportCommands extends Object + native; + +const GC_OS_TYPE_BELOW_XP = 10300; +const GC_OS_TYPE_XP = 10301; +const GC_OS_TYPE_VISTA = 10303; +const GC_OS_TYPE_WIN7 = 10305; +const GC_OS_TYPE_WIN8 = 10307; + +enum GC_ALERT_PRIORITY +{ + GC_APT_MINIMAL, // 0 + GC_APT_NORMAL, // 1 + GC_APT_HIGH, // 2 + GC_APT_CRITICAL, // 3 + GC_APT_MAX // 4 +}; + +enum GC_CHAT_CHANNEL +{ + GC_CC_GLOBAL, // 0 + GC_CC_CLAN, // 1 + GC_CC_INSTANCE, // 2 + GC_CC_LOCAL_TEAM, // 3 + GC_CC_PARTY, // 4 + GC_CC_CITY, // 5 + GC_CC_PERSONAL, // 6 + GC_CC_PRIVATE_1, // 7 + GC_CC_EOM_LOBBY, // 8 + GC_CC_SYSTEM, // 9 + GC_CC_TRADE, // 10 + GC_CC_LFG, // 11 + GC_CC_LFG_2, // 12 + GC_CC_HELP, // 13 + GC_CC_VOIP_NEWS, // 14 + GC_CC_GM, // 15 + GC_CC_VIP, // 16 + GC_CC_LFG_3, // 17 + GC_CC_COUNT, // 18 + GC_CC_VOIP_ECHO, // 19 + GC_CC_VOIP_CONF, // 20 + GC_CC_COMBAT, // 21 + GC_CC_EMOTE, // 22 + GC_CC_INVALID, // 23 + GC_CC_LAST, // 24 + GC_CC_MAX // 25 +}; + +enum GC_STEAM_TXN_TYPES +{ + GC_STT_INVALID, // 0 + GC_STT_GETUSERINFO, // 1 + GC_STT_INIT, // 2 + GC_STT_FINALIZE, // 3 + GC_STT_DECLINE, // 4 + GC_STT_MAX // 5 +}; + +var const transient PComPlayerController PC; +var const transient WorldInfo WorldInfo; + +// Export UPComSupportCommands::execgmMatchForce(FFrame&, void* const) +native exec function gmMatchForce(optional int nQueueId = 0); + +// Export UPComSupportCommands::execgmMatchNext(FFrame&, void* const) +native exec function gmMatchNext(int nMapId); + +// Export UPComSupportCommands::execgmCommand(FFrame&, void* const) +native exec function gmCommand(string sCommand); + +// Export UPComSupportCommands::execgmC(FFrame&, void* const) +native exec function gmC(string sCommand); + +// Export UPComSupportCommands::execgmDiag(FFrame&, void* const) +native exec function gmDiag(int Code, int Route); + +// Export UPComSupportCommands::execGPerfDebugFeet(FFrame&, void* const) +native function GPerfDebugFeet(int feet); + +// Export UPComSupportCommands::execGPerfDebugSkips(FFrame&, void* const) +native function GPerfDebugSkips(int skips); + +// Export UPComSupportCommands::execGPerfDebugRelevMode(FFrame&, void* const) +native function GPerfDebugRelevMode(int Mode); + +// Export UPComSupportCommands::execGPerfServerFlags(FFrame&, void* const) +native function GPerfServerFlags(int Flags, int alternate1, int alternate2); + +// Export UPComSupportCommands::execGPerfAllRelevantLimit(FFrame&, void* const) +native function GPerfAllRelevantLimit(int feet); + +// Export UPComSupportCommands::execGPerfDebugTickRate(FFrame&, void* const) +native function GPerfDebugTickRate(int tickHz, int altTickHz); + +// Export UPComSupportCommands::execGPerfDebugPhysicsThreshold(FFrame&, void* const) +native function GPerfDebugPhysicsThreshold(float fThresh1, float fThresh2); + +// Export UPComSupportCommands::execSetLogServerTickStatsFlags(FFrame&, void* const) +native function SetLogServerTickStatsFlags(int Flags, bool bSet); + +exec function gmmf() +{ + gmMatchForce(); + //return; +} + +exec function scLog(string LogName, optional bool bEnabled = true) +{ + local string Prefix; + + // End:0x15 + if(bEnabled) + { + } + Prefix = ((bEnabled) ? "UnSuppress" : "Suppress"); + WorldInfo.Game.ConsoleCommand(Prefix @ LogName); + //return; +} + +exec function scLogMark(string Comment) +{ + //return; +} + +exec function scStartGame(optional string Reason = "Admin") +{ + local FrameworkGame Game; + + Game = FrameworkGame(WorldInfo.Game); + // End:0x73 + if(Game != none) + { + Game.TgStartGame(Reason); + } + //return; +} + +exec function scEndGame(optional string Reason = "Admin") +{ + local FrameworkGame Game; + + Game = FrameworkGame(WorldInfo.Game); + // End:0x73 + if(Game != none) + { + Game.TgEndGame(Reason); + } + //return; +} + +exec function scScore(int nTeam, optional int nCount = 1) +{ + local FrameworkGame Game; + + Game = FrameworkGame(WorldInfo.Game); + // End:0x76 + if(Game != none) + { + Game.TgChangeScore(nTeam, nCount); + } + //return; +} + +exec function scTime(int nSeconds) +{ + local FrameworkGame Game; + + Game = FrameworkGame(WorldInfo.Game); + // End:0x68 + if(Game != none) + { + Game.TgChangeTime(nSeconds); + } + //return; +} + +exec function scTimer(string sCommand) +{ + local FrameworkGame Game; + + Game = FrameworkGame(WorldInfo.Game); + // End:0x68 + if(Game != none) + { + Game.TgTimer(sCommand); + } + //return; +} + +exec function scDemoRec(string sCommand) +{ + WorldInfo.Game.ConsoleCommand("DEMOREC " @ sCommand); + //return; +} + +exec function scDemoStop() +{ + WorldInfo.Game.ConsoleCommand("DEMOSTOP"); + //return; +} + +exec function scPerfDebugFeet(int feet) +{ + GPerfDebugFeet(feet); + //return; +} + +exec function scPerfDebugSkip(int skips) +{ + GPerfDebugSkips(skips); + //return; +} + +exec function scPerfDebugRelevMode(int Mode) +{ + GPerfDebugRelevMode(Mode); + //return; +} + +exec function scPerfTickRate(int tickHz, int altTickHz) +{ + GPerfDebugTickRate(tickHz, altTickHz); + //return; +} + +exec function scPerfPhysThreshold(float thresh1, float thesh2) +{ + GPerfDebugPhysicsThreshold(thresh1, thesh2); + //return; +} + +exec function scGPerfServerFlags(int Flags, int alternate1, int alternate2) +{ + GPerfServerFlags(Flags, alternate1, alternate2); + //return; +} + +exec function scPerfAlwaysRelevantLimit(int feet) +{ + GPerfAllRelevantLimit(feet); + //return; +} + +exec function scLogTickFlags(int nFlags, optional bool bSet = true) +{ + // End:0x4B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + SetLogServerTickStatsFlags(nFlags, bSet); + } + //return; +} diff --git a/exported/PlatformCommon/Classes/PComUIManagerBase.uc b/exported/PlatformCommon/Classes/PComUIManagerBase.uc new file mode 100755 index 00000000..b3b24d29 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComUIManagerBase.uc @@ -0,0 +1,57 @@ +class PComUIManagerBase extends Object + abstract + native; + +struct native ManagerImage +{ + var init string strImageName; + var Texture2DDynamic pTexture; + + structdefaultproperties + { + strImageName="" + pTexture=none + } +}; + +var bool m_bDebugDraw; +var init array m_cachedImages; +var init string m_strJson; + +event DebugDraw(Canvas Canvas) +{ + local float PosX, PosY; + local int Idx; + + // End:0x11 + if(!m_bDebugDraw) + { + return; + } + PosX = 0.0000000; + PosY = 0.0000000; + Idx = 0; + J0x3A: + + // End:0x288 [Loop If] + if(Idx < m_cachedImages.Length) + { + Canvas.SetDrawColor(255, 255, 255, 255); + Canvas.SetPos(PosX, PosY); + Canvas.DrawTexture(m_cachedImages[Idx].pTexture, 1.0000000); + Canvas.SetDrawColor(0, 255, 0, 255); + Canvas.SetPos(PosX, PosY); + Canvas.DrawBox(float(m_cachedImages[Idx].pTexture.SizeX), float(m_cachedImages[Idx].pTexture.SizeY)); + PosY += float(m_cachedImages[Idx].pTexture.SizeY); + // End:0x27A + if(PosY > Canvas.ClipY) + { + PosY = 0.0000000; + PosX += float(50); + } + Idx++; + // [Loop Continue] + goto J0x3A; + } + //return; +} diff --git a/exported/PlatformCommon/Classes/PComUtilityFunctions.uc b/exported/PlatformCommon/Classes/PComUtilityFunctions.uc new file mode 100755 index 00000000..4c178c51 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComUtilityFunctions.uc @@ -0,0 +1,11 @@ +class PComUtilityFunctions extends Object + native; + +// Export UPComUtilityFunctions::execFakeNetSerialize(FFrame&, void* const) +native static function Vector FakeNetSerialize(const out Vector InVector); + +// Export UPComUtilityFunctions::execIsAWithStop(FFrame&, void* const) +native static function bool IsAWithStop(Object InObject, const Class SomeBase, const Class StopAtBase); + +// Export UPComUtilityFunctions::execGetGDeltaTime(FFrame&, void* const) +native static function float GetGDeltaTime(); diff --git a/exported/PlatformCommon/Classes/PComVideoPlayer.uc b/exported/PlatformCommon/Classes/PComVideoPlayer.uc new file mode 100755 index 00000000..369f27c5 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComVideoPlayer.uc @@ -0,0 +1,58 @@ +class PComVideoPlayer extends Actor + native + notplaceable + hidecategories(Navigation); + +var() string VideoURL; +var() int Width; +var() int Height; +var() bool bConstrainAspectRatio; +var() bool bDebugRender; +var transient bool bVideoFinished; +var transient bool bOnVideoFinishedIssued; +var() float ConstrainedAspectRatio; +var native transient Pointer Resource; +var transient TextureRenderTarget2D RenderTargetToUse; +//var delegate __OnVideoFinished__Delegate; + +delegate OnVideoFinished() +{ + //return; +} + +// Export UPComVideoPlayer::execNativePostRenderFor(FFrame&, void* const) +native simulated function NativePostRenderFor(PlayerController PC, Canvas Canvas, Vector CameraPosition, Vector CameraDir); + +static function TestVideoPlayer(Actor SpawningActor, optional string InURL = "http://sceerd.dl.playstation.net/sceerd/sceavplayer/streaming02.mp4") +{ + local PComVideoPlayer PComVideoPlayer; + + PComVideoPlayer = SpawningActor.Spawn(Class'PlatformCommon.PComVideoPlayer'); + PComVideoPlayer.VideoURL = InURL; + PComVideoPlayer.bDebugRender = true; + PComVideoPlayer.Width = 1280; + PComVideoPlayer.Height = 720; + PComVideoPlayer.__OnVideoFinished__Delegate = PComVideoPlayer.DestroyMe; + //return; +} + +function DestroyMe() +{ + Destroy(); + //return; +} + +defaultproperties +{ + Width=1920 + Height=1080 + bConstrainAspectRatio=true + ConstrainedAspectRatio=1.7777800 + // Reference: TextureRenderTarget2D'PlatformCommon.Default__PComVideoPlayer.MyRenderTarget' + begin object name="MyRenderTarget" class=Engine.TextureRenderTarget2D + ClearColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + bNeedsTwoCopies=false + SRGB=false + end object + RenderTargetToUse=MyRenderTarget +} \ No newline at end of file diff --git a/exported/PlatformCommon/Classes/PComVoiceInterfaceCurseConfig.uc b/exported/PlatformCommon/Classes/PComVoiceInterfaceCurseConfig.uc new file mode 100755 index 00000000..7836c758 --- /dev/null +++ b/exported/PlatformCommon/Classes/PComVoiceInterfaceCurseConfig.uc @@ -0,0 +1,17 @@ +class PComVoiceInterfaceCurseConfig extends Object + native + config(Game); + +struct native PComCursePromo +{ + var() string PromoName; + var() int ActivityId; + + structdefaultproperties + { + PromoName="" + ActivityId=0 + } +}; + +var config array Promos; diff --git a/exported/PlatformCommon/Classes/PlatformCommon.UPKG b/exported/PlatformCommon/Classes/PlatformCommon.UPKG new file mode 100755 index 00000000..29cb1564 --- /dev/null +++ b/exported/PlatformCommon/Classes/PlatformCommon.UPKG @@ -0,0 +1,4 @@ +[Flags] +AllowDownload=True +ClientOptional=False +ServerSideOnly=False diff --git a/exported/PlatformCommon/Classes/SearFiles.uc b/exported/PlatformCommon/Classes/SearFiles.uc new file mode 100755 index 00000000..3f584fd5 --- /dev/null +++ b/exported/PlatformCommon/Classes/SearFiles.uc @@ -0,0 +1,3 @@ +class SearFiles extends Commandlet + transient + native; diff --git a/exported/TgClient/Classes/DelayQueueInterface.uc b/exported/TgClient/Classes/DelayQueueInterface.uc new file mode 100755 index 00000000..a31d2d09 --- /dev/null +++ b/exported/TgClient/Classes/DelayQueueInterface.uc @@ -0,0 +1,3 @@ +interface DelayQueueInterface extends Interface + abstract + native(UIComponent); diff --git a/exported/TgClient/Classes/None.uc b/exported/TgClient/Classes/None.uc new file mode 100755 index 00000000..8e720fe8 --- /dev/null +++ b/exported/TgClient/Classes/None.uc @@ -0,0 +1 @@ +class None; diff --git a/exported/TgClient/Classes/TgBlinder.uc b/exported/TgClient/Classes/TgBlinder.uc new file mode 100755 index 00000000..7582e095 --- /dev/null +++ b/exported/TgClient/Classes/TgBlinder.uc @@ -0,0 +1,5 @@ +class TgBlinder extends Object + native(GameUI); + +// Export UTgBlinder::execDraw(FFrame&, void* const) +native function Draw(Canvas DestinationCanvas, float BlindnessFactor); diff --git a/exported/TgClient/Classes/TgBrowserManager.uc b/exported/TgClient/Classes/TgBrowserManager.uc new file mode 100755 index 00000000..50d96540 --- /dev/null +++ b/exported/TgClient/Classes/TgBrowserManager.uc @@ -0,0 +1,206 @@ +class TgBrowserManager extends Object + native; + +enum WebPageType +{ + WPT_Gold, // 0 + WPT_CreateAccount, // 1 + WPT_RecoverPassword, // 2 + WPT_RecoverUsername, // 3 + WPT_GodPack, // 4 + WPT_FacebookPromo, // 5 + WPT_TwitterPromo, // 6 + WPT_RecruitPromo, // 7 + WPT_ReferLinkup, // 8 + WPT_MAX // 9 +}; + +var string URLGold; +var string URLAlert; +var string URLStore; +var string URLBooster; +var string URLSupport; +var string URLProfile; +var string URLRedirect; +var string URLActivateKey; +var string URLCreateAccount; +var string URLRecoverPassword; +var string URLRecoverUsername; +var string URLGodPack; +var string URLRanked; +var string URLFacebookPromo; +var string URLTwitterPromo; +var string URLRecruitPromo; +var string URLPlayerStats; +var string URLTwitchSignup; +var string URLTwitchHelp; +var string URLLaunchTournament; +var UIWebBrowser m_pContainer; + +function bool IsBrowserLoaded() +{ + return m_pContainer != none; + //return ReturnValue; +} + +// Export UTgBrowserManager::execExternalOpenURL(FFrame&, void* const) +native function ExternalOpenURL(string URL, optional bool bAddLang = true); + +// Export UTgBrowserManager::execOpenURL(FFrame&, void* const) +native function OpenURL(string URL, optional bool bShowNavButtons = true); + +// Export UTgBrowserManager::execOpenVideo(FFrame&, void* const) +native function OpenVideo(string URL, optional bool bAddName = true); + +// Export UTgBrowserManager::execClose(FFrame&, void* const) +native function Close(); + +// Export UTgBrowserManager::execResizeView(FFrame&, void* const) +native function ResizeView(); + +// Export UTgBrowserManager::execSetContainer(FFrame&, void* const) +native function SetContainer(UIWebBrowser pContainer); + +event Alert() +{ + OpenURL(URLAlert); + //return; +} + +event Gold() +{ + OpenURL(URLRedirect $ URLGold); + //return; +} + +event Store() +{ + OpenURL(URLRedirect $ URLStore); + //return; +} + +event Booster() +{ + OpenURL(URLRedirect $ URLBooster); + //return; +} + +event Support() +{ + OpenURL(URLRedirect $ URLSupport); + //return; +} + +event Profile() +{ + OpenURL(URLRedirect $ URLProfile); + //return; +} + +event ActivateKey() +{ + OpenURL(URLRedirect $ URLActivateKey); + //return; +} + +event CreateAccount() +{ + OpenURL(URLRedirect $ URLCreateAccount); + //return; +} + +event RecoverPassword() +{ + OpenURL(URLRedirect $ URLRecoverPassword); + //return; +} + +event RecoverUsername() +{ + OpenURL(URLRedirect $ URLRecoverUsername); + //return; +} + +event SubmitBugReport(string sPlayerName) +{ + OpenURL("http://fs12.formsite.com/HiRez/form39/fill?1=" $ sPlayerName); + //return; +} + +event GodPack() +{ + OpenURL(URLRedirect $ URLGodPack); + //return; +} + +event RankedRules() +{ + OpenURL(URLRedirect $ URLRanked); + //return; +} + +event FacebookPromo() +{ + ExternalOpenURL(URLRedirect $ URLFacebookPromo); + //return; +} + +event TwitterPromo() +{ + ExternalOpenURL(URLRedirect $ URLTwitterPromo); + //return; +} + +event RecruitPromo() +{ + OpenURL(URLRedirect $ URLRecruitPromo); + //return; +} + +event PlayerStats(string sPlayerName) +{ + OpenURL((URLRedirect $ URLPlayerStats) $ sPlayerName); + //return; +} + +event TwitchHelp() +{ + OpenURL(URLTwitchHelp); + //return; +} + +event TwitchSignup() +{ + OpenURL(URLTwitchSignup); + //return; +} + +event LaunchTournament() +{ + ExternalOpenURL(URLRedirect $ URLLaunchTournament); + //return; +} + +defaultproperties +{ + URLGold="Gold" + URLAlert="https://www.paladins.com" + URLStore="STORE" + URLBooster="Booster" + URLSupport="Support" + URLProfile="Profile" + URLRedirect="https://www.paladins.com/ingameredirect/?dest=" + URLActivateKey="ACTIVATEKEY" + URLCreateAccount="CREATEACCOUNT" + URLRecoverPassword="RECOVERPASSWORD" + URLRecoverUsername="RECOVERUSER" + URLGodPack="GODS" + URLRanked="RANKED" + URLFacebookPromo="FACEBOOK" + URLTwitterPromo="TWITTER" + URLRecruitPromo="REFER" + URLPlayerStats="STATS&player=" + URLTwitchSignup="http://www.twitch.tv/" + URLTwitchHelp="http://www.twitch.tv/user/reset_password" + URLLaunchTournament="TOURNEY" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgChatData.uc b/exported/TgClient/Classes/TgChatData.uc new file mode 100755 index 00000000..8df3d442 --- /dev/null +++ b/exported/TgClient/Classes/TgChatData.uc @@ -0,0 +1,36 @@ +class TgChatData extends Object + native; + +var int m_nId; +var int m_nSoundId; +var int m_nChannel; +var bool m_bWarning; +var bool m_bFeedback; +var bool m_bIsVGS; +var string m_sSender; +var string m_sMessage; +var string m_sSenderColor; +var string m_sSenderClass; +var string m_sMessageColor; +var string m_ColorVGS; +var string m_ColorWarn; +var string m_sWarningToken; + +event bool CheckWarning(string Message) +{ + return ((InStr(Message, m_sWarningToken) < 0) ? false : true); + //return ReturnValue; +} + +event string TokenReplace(string Message, string Token, string sValue) +{ + return Repl(Message, Token, sValue); + //return ReturnValue; +} + +defaultproperties +{ + m_ColorVGS="#BBBBBB" + m_ColorWarn="#ff0000" + m_sWarningToken="#WARN#" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgClient.UPKG b/exported/TgClient/Classes/TgClient.UPKG new file mode 100755 index 00000000..29cb1564 --- /dev/null +++ b/exported/TgClient/Classes/TgClient.UPKG @@ -0,0 +1,4 @@ +[Flags] +AllowDownload=True +ClientOptional=False +ServerSideOnly=False diff --git a/exported/TgClient/Classes/TgClientHUD.uc b/exported/TgClient/Classes/TgClientHUD.uc new file mode 100755 index 00000000..776d94ac --- /dev/null +++ b/exported/TgClient/Classes/TgClientHUD.uc @@ -0,0 +1,166 @@ +class TgClientHUD extends TgHUD + transient + native + config(Game) + hidecategories(Navigation); + +const LOADING_SCREEN_TIP_COUNT = 5; + +enum ECaptureState +{ + ECS_None, // 0 + ECS_Chat, // 1 + ECS_VGSMenu, // 2 + ECS_Keybind, // 3 + ECS_MAX // 4 +}; + +struct native SceneInfo +{ + var int nDepth; + var init string sName; + var init string sPath; + + structdefaultproperties + { + nDepth=0 + sName="" + sPath="" + } +}; + +var byte m_eState; +var byte m_ePromptType; +var byte m_eCaptureState; +var float m_fPromptTime; +var float m_fPromptTimer; +var UIGameMoviePlayer m_pMovie; +var array m_SceneStack; +var array m_PopupStack; +var array m_ScenePreloads; +var array m_sNeededScenes; +var bool m_bShowCursor; +var bool m_bCaptureKeys; +var PComPictureInPicture m_PictureInPicture; +var init protected array m_MoviePlayers; +var init TgDevMenuMoviePlayer m_DevMenu; + +// Export UTgClientHUD::execInitialize(FFrame&, void* const) +native function Initialize(); + +// Export UTgClientHUD::execPushScene(FFrame&, void* const) +native exec function bool PushScene(string sName, optional bool bSkipPrivilegeCheck = false); + +// Export UTgClientHUD::execPopScene(FFrame&, void* const) +native exec function bool PopScene(optional int nIndex = -1); + +// Export UTgClientHUD::execClearScenes(FFrame&, void* const) +native function ClearScenes(optional byte eTargetState = 0); + +// Export UTgClientHUD::execRemoveSceneFromStack(FFrame&, void* const) +native function bool RemoveSceneFromStack(TgGfxScene pScene, optional bool bPopAll = false); + +// Export UTgClientHUD::execIsInGame(FFrame&, void* const) +native function bool IsInGame(); + +// Export UTgClientHUD::execIsLoggedIn(FFrame&, void* const) +native function bool IsLoggedIn(); + +// Export UTgClientHUD::execShowCursor(FFrame&, void* const) +native function ShowCursor(bool bShow); + +// Export UTgClientHUD::execShowHit(FFrame&, void* const) +native function ShowHit(Actor Target, float fDamageAmount, bool bIsShieldHit, const out ExtraDamageInfo ExtraInfo); + +// Export UTgClientHUD::execTryToBack(FFrame&, void* const) +native function bool TryToBack(); + +// Export UTgClientHUD::execToggleHUD(FFrame&, void* const) +native exec function ToggleHUD(); + +// Export UTgClientHUD::execResetViewCenterPoint(FFrame&, void* const) +native exec function ResetViewCenterPoint(); + +// Export UTgClientHUD::execTestDidIt(FFrame&, void* const) +native exec function TestDidIt(int nActivityId, int nCount); + +// Export UTgClientHUD::execDumpScenesToLog(FFrame&, void* const) +native exec function DumpScenesToLog(); + +// Export UTgClientHUD::execToggleDevMenu(FFrame&, void* const) +native exec function ToggleDevMenu(); + +// Export UTgClientHUD::execTogglePushToTalk(FFrame&, void* const) +native exec function TogglePushToTalk(bool bEnable); + +simulated function PostBeginPlay() +{ + super(HUD).PostBeginPlay(); + Initialize(); + //return; +} + +event Tick(float DeltaTime) +{ + DeltaTime = WorldInfo.m_fRealDeltaSeconds; + super(Actor).Tick(DeltaTime); + // End:0x72 + if(m_pMovie != none) + { + m_pMovie.Tick(DeltaTime); + } + m_PictureInPicture.super(PComPictureInPicture).Tick(); + //return; +} + +event PostRender() +{ + super(HUD).PostRender(); + m_PictureInPicture.DebugRender(Canvas); + //return; +} + +exec function TestPictureInPictureBasic() +{ + m_PictureInPicture.Scene = none; + m_PictureInPicture.TestPictureInPicture(); + //return; +} + +exec function TestPictureInPicturePortraits(string botName) +{ + local PComPictureInPictureScene Scene; + + Scene = new Class'PlatformCommon.PComPictureInPictureScene'; + Scene.InitScene(); + m_PictureInPicture.Scene = Scene; + m_PictureInPicture.ViewDescs.Length = 0; + CreateTestPortraits(Scene, botName, vect(20.0000000, 2.5000000, 80.0000000), vect(0.0000000, 2.5000000, 77.0000000), 30.0000000); + m_PictureInPicture.bEnableDebugRendering = true; + //return; +} + +// Export UTgClientHUD::execCreateTestPortraits(FFrame&, void* const) +native final function CreateTestPortraits(PComPictureInPictureScene Scene, const out string botName, Vector ViewOffset, Vector LookAtOffset, float FOV); + +exec function DebugPictureInPicture() +{ + m_PictureInPicture.bEnableDebugRendering = true; + //return; +} + +exec function TestShowCursor(bool bShow) +{ + ShowCursor(bShow); + //return; +} + +defaultproperties +{ + m_fPromptTime=1.0000000 + // Reference: PComPictureInPicture'TgClient.Default__TgClientHUD.PictureInPicture' + begin object name="PictureInPicture" class=PlatformCommon.PComPictureInPicture + end object + m_PictureInPicture=PictureInPicture + bAlwaysTick=true +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgDataChunk.uc b/exported/TgClient/Classes/TgDataChunk.uc new file mode 100755 index 00000000..d5ee210d --- /dev/null +++ b/exported/TgClient/Classes/TgDataChunk.uc @@ -0,0 +1,92 @@ +class TgDataChunk extends GFxObject within GFxMoviePlayer + native; + +struct native DataField +{ + var init string FieldName; + var ASValue Value; + var ASValue Last; + var bool bDirty; + + structdefaultproperties + { + FieldName="" + Value=(Type=ASType.AS_Undefined,B=false,N=0.0000000,I=0,S="") + Last=(Type=ASType.AS_Undefined,B=false,N=0.0000000,I=0,S="") + bDirty=false + } +}; + +var TgDataHandler m_DataHandler; +var TgDataChunk m_ParentChunk; +var init array m_DataList; +var init array m_ChildChunks; +var bool m_bIsDirty; +var bool m_bIsSubscribed; +var bool m_bClearOnMapChange; +//var delegate __usc_Subscribe_Delegate__Delegate; +//var delegate __usc_Unsubscribe_Delegate__Delegate; + +// Export UTgDataChunk::execInitializeData(FFrame&, void* const) +native function InitializeData(TgDataHandler Handler, TgDataChunk parentChunk); + +// Export UTgDataChunk::execUpdate(FFrame&, void* const) +native function Update(float DeltaTime, optional bool bSkipCallback = false); + +// Export UTgDataChunk::execDataUpdateEvent(FFrame&, void* const) +native function DataUpdateEvent(); + +// Export UTgDataChunk::execAddChild(FFrame&, void* const) +native function AddChild(TgDataChunk Child); + +// Export UTgDataChunk::execRemoveChild(FFrame&, void* const) +native function RemoveChild(TgDataChunk Child, optional bool bClearDelegates); + +// Export UTgDataChunk::execSetDelegates(FFrame&, void* const) +native function SetDelegates(); + +// Export UTgDataChunk::execClearDelegates(FFrame&, void* const) +native function ClearDelegates(); + +// Export UTgDataChunk::execAddField(FFrame&, void* const) +native function AddField(string FieldName, const out ASValue NewValue); + +// Export UTgDataChunk::execSetField(FFrame&, void* const) +native function bool SetField(string FieldName, const out ASValue NewValue, optional bool bCreateIfMissing = false); + +// Export UTgDataChunk::execGetField(FFrame&, void* const) +native function bool GetField(string FieldName, out ASValue NewValue); + +// Export UTgDataChunk::execSetDirty(FFrame&, void* const) +native function SetDirty(); + +// Export UTgDataChunk::execIsSubscribed(FFrame&, void* const) +native function bool IsSubscribed(); + +// Export UTgDataChunk::execNotifyMapChange(FFrame&, void* const) +native function NotifyMapChange(); + +// Export UTgDataChunk::execGetPlayerController(FFrame&, void* const) +native function TgPlayerController GetPlayerController(); + +delegate usc_Subscribe_Delegate() +{ + //return; +} + +delegate usc_Unsubscribe_Delegate() +{ + //return; +} + +// Export UTgDataChunk::execusc_Subscribe(FFrame&, void* const) +native function usc_Subscribe(); + +// Export UTgDataChunk::execusc_Unsubscribe(FFrame&, void* const) +native function usc_Unsubscribe(); + +defaultproperties +{ + m_bIsDirty=true + m_bClearOnMapChange=true +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgDataGroup_Game.uc b/exported/TgClient/Classes/TgDataGroup_Game.uc new file mode 100755 index 00000000..57506ce6 --- /dev/null +++ b/exported/TgClient/Classes/TgDataGroup_Game.uc @@ -0,0 +1,15 @@ +class TgDataGroup_Game extends TgDataChunk within GFxMoviePlayer + native(GameUI); + +var TgGameDC_LocalPlayer m_PlayerData; +var TgGameDC_Target m_TargetData; +var TgGameDC_PlayerVitals m_PlayerVitals; +var TgGameDC_Game m_GameData; +var TgGameDC_DeviceList m_DevicesData; +var TgGameDC_EffectList m_EffectData; + +// Export UTgDataGroup_Game::execInitializeData(FFrame&, void* const) +native function InitializeData(TgDataHandler Handler, TgDataChunk parentChunk); + +// Export UTgDataGroup_Game::execNotifyMapChange(FFrame&, void* const) +native function NotifyMapChange(); diff --git a/exported/TgClient/Classes/TgDataHandler.uc b/exported/TgClient/Classes/TgDataHandler.uc new file mode 100755 index 00000000..c41fc95d --- /dev/null +++ b/exported/TgClient/Classes/TgDataHandler.uc @@ -0,0 +1,14 @@ +class TgDataHandler extends GFxObject within GFxMoviePlayer + native; + +var UIMoviePlayer m_MP; +var array m_DataChunkList; + +// Export UTgDataHandler::execInitializeDataHandler(FFrame&, void* const) +native function InitializeDataHandler(UIMoviePlayer mp); + +// Export UTgDataHandler::execUpdate(FFrame&, void* const) +native function Update(float DeltaTime); + +// Export UTgDataHandler::execNotifyMapChange(FFrame&, void* const) +native function NotifyMapChange(); diff --git a/exported/TgClient/Classes/TgDataManager.uc b/exported/TgClient/Classes/TgDataManager.uc new file mode 100755 index 00000000..f5bfc6ab --- /dev/null +++ b/exported/TgClient/Classes/TgDataManager.uc @@ -0,0 +1,8 @@ +class TgDataManager extends Object + native; + +var TgData_EOM m_EOMData; +var TgData_Cards m_CardData; +var TgData_Notifications m_NotificationData; +var init array m_DataSets; +var init array m_Callbacks; diff --git a/exported/TgClient/Classes/TgDataObject.uc b/exported/TgClient/Classes/TgDataObject.uc new file mode 100755 index 00000000..bb913469 --- /dev/null +++ b/exported/TgClient/Classes/TgDataObject.uc @@ -0,0 +1,106 @@ +class TgDataObject extends UIData + native(UIData); + +enum UIID +{ + UIID_NONE, // 0 + UIID_XP, // 1 + UIID_LEVEL, // 2 + UIID_LEVEL_PCT, // 3 + UIID_BOT_ID, // 4 + UIID_DEVICE_ID, // 5 + UIID_NAME, // 6 + UIID_AMMO, // 7 + UIID_ICON, // 8 + UIID_STATUS, // 9 + UIID_POWER, // 10 + UIID_COOLDOWN, // 11 + UIID_ENEMY_SCORE, // 12 + UIID_ENEMY_CHARGE, // 13 + UIID_ENEMY_TASKFORCE, // 14 + UIID_FRIENDLY_SCORE, // 15 + UIID_FRIENDLY_CHARGE, // 16 + UIID_FRIENDLY_TASKFORCE, // 17 + UIID_ATTACKING_TASKFORCE, // 18 + UIID_TIMER_VALUE, // 19 + UIID_TIMER_STATE, // 20 + UIID_TIMER_TEXT, // 21 + UIID_MANA, // 22 + UIID_MANA_MAX, // 23 + UIID_MANA_PCT, // 24 + UIID_HEALTH, // 25 + UIID_HEALTH_MAX, // 26 + UIID_HEALTH_PCT, // 27 + UIID_SHIELD, // 28 + UIID_SHIELD_MAX, // 29 + UIID_SHIELD_PCT, // 30 + UIID_TIMER_ACTIVATION, // 31 + UIID_BONUS_CARDS, // 32 + UIID_COMBAT_FLAG, // 33 + UIID_COMBAT_TIME, // 34 + UIID_COMBAT_TIMER, // 35 + UIID_DISPLAY_CARDS, // 36 + UIID_PLAYER_ID, // 37 + UIID_PLAYER_NAME, // 38 + UIID_PLAYER_NOTE, // 39 + UIID_PLAYER_LEVEL, // 40 + UIID_CLAN_TAG, // 41 + UIID_CLAN_NAME, // 42 + UIID_MASTERY_LEVEL, // 43 + UIID_IS_RECENT, // 44 + UIID_IS_ONLINE, // 45 + UIID_IS_STREAMING, // 46 + UIID_IS_PARTY, // 47 + UIID_IS_MY_PARTY, // 48 + UIID_IS_FRIEND, // 49 + UIID_IS_PENDING, // 50 + UIID_IS_REQUESTED, // 51 + UIID_STATUS_ID, // 52 + UIID_STATUS_LABEL, // 53 + UIID_STATUS_MESSAGE, // 54 + UIID_QUEUE_ICON, // 55 + UIID_AVATAR_ID, // 56 + UIID_FRIENDS_TOTAL, // 57 + UIID_FRIENDS_ONLINE, // 58 + UIID_FRIENDS_PENDING, // 59 + UIID_CLAN_PENDING, // 60 + UIID_EQUIP_POINT, // 61 + UIID_MASTERY, // 62 + UIID_INVITE_MAP, // 63 + UIID_INVITE_QUEUE, // 64 + UIID_INVITE_PENDING, // 65 + UIID_PARTY_LEADER, // 66 + UIID_MAX // 67 +}; + +enum UIDeviceStatus +{ + UIDS_NONE, // 0 + UIDS_LOCKED, // 1 + UIDS_READY, // 2 + UIDS_COOLDOWN, // 3 + UIDS_FIRING, // 4 + UIDS_DEPLOYED, // 5 + UIDS_MAX // 6 +}; + +struct native UIDataValue +{ + var TgDataObject.UIID eType; + var bool bDirty; + var float fValue; + var init string sValue; + + structdefaultproperties + { + eType=UIID.UIID_NONE + bDirty=false + fValue=0.0000000 + sValue="" + } +}; + +var bool m_bDirty; +var bool m_bCallback; +var array m_Laundry; +var init native map{VOID,VOID} m_Data; diff --git a/exported/TgClient/Classes/TgData_Cards.uc b/exported/TgClient/Classes/TgData_Cards.uc new file mode 100755 index 00000000..2e804657 --- /dev/null +++ b/exported/TgClient/Classes/TgData_Cards.uc @@ -0,0 +1,59 @@ +class TgData_Cards extends TgObject + native; + +const UPGRADE_LEVEL_GOLD_CARD = 1; + +var int m_PropIndex; +var array m_Deck; +var UIGameMoviePlayer m_pMovie; + +// Export UTgData_Cards::execInitialize(FFrame&, void* const) +native function Initialize(UIGameMoviePlayer pMoviePlayer); + +event string ParseItemPower(string sValue, int nLevel) +{ + local int nIndex, nPower; + local string sPower, sPrefix; + + // End:0x1A + if(nLevel <= 0) + { + nLevel = 1; + } + nIndex = InStr(sValue, "] "); + // End:0x6C + if(nIndex > -1) + { + sValue = Mid(sValue, nIndex + 2); + } + nIndex = InStr(sValue, "{"); + // End:0xA4 + if(nIndex == -1) + { + return sValue; + } + sPrefix = Left(sValue, nIndex); + sValue = Mid(sValue, nIndex + 1); + nIndex = InStr(sValue, "}"); + // End:0x13A + if(nIndex == -1) + { + return ParseItemPower(sPrefix $ sValue, nLevel); + } + sPower = Left(sValue, nIndex); + sValue = Split(sValue, "}", true); + // End:0x1BF + if(nPower == -1) + { + return ParseItemPower((sPrefix $ sPower) $ sValue, nLevel); + } + nPower = int(sPower); + nPower *= float(nLevel); + return (sPrefix $ string(nPower)) $ sValue; + //return ReturnValue; +} + +defaultproperties +{ + m_PropIndex=1710 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgData_EOM.uc b/exported/TgClient/Classes/TgData_EOM.uc new file mode 100755 index 00000000..0e99d9c0 --- /dev/null +++ b/exported/TgClient/Classes/TgData_EOM.uc @@ -0,0 +1,72 @@ +class TgData_EOM extends TgDataObject + native(UIData); + +const TGDATA_EOM_TEAMCOUNT = 2; + +struct native AccoladeData +{ + var int nMsgId; + var int nPlace; + var int nValue; + + structdefaultproperties + { + nMsgId=0 + nPlace=0 + nValue=0 + } +}; + +struct native UIMVPDATA +{ + var int nBot; + var int nBody; + var int nHead; + var int nType; + var int nFrame; + var int nLevel; + var int nValue; + var int nWeapon; + var UIData_PlayerMatchRecord pPlayer; + + structdefaultproperties + { + nBot=0 + nBody=0 + nHead=0 + nType=0 + nFrame=0 + nLevel=0 + nValue=0 + nWeapon=0 + pPlayer=none + } +}; + +var int m_nFWOTD; +var int m_nGameId; +var int m_nQueueId; +var int m_nClassId; +var int m_nGameTime; +var int m_nXPEarned; +var float m_fXPMultiplier; +var int m_nXPBonus; +var int m_nXPAccountBoost; +var int m_nXPPartyBoost; +var int m_nXPVipBoost; +var int m_nGoldEarned; +var float m_fGoldMultiplier; +var int m_nGoldBonus; +var int m_nGoldAccolades; +var int m_nGoldAccountBoost; +var int m_nGoldPartyBoost; +var int m_nMasteryEarned; +var int m_nMasteryAccountBoost; +var int m_nMasteryPartyBoost; +var int m_nLocalTF; +var int m_nWinningTF; +var bool m_bVictory; +var string m_sMapName; +var array m_Players; +var array m_MVPs; +var array m_Accolades; diff --git a/exported/TgClient/Classes/TgData_Notifications.uc b/exported/TgClient/Classes/TgData_Notifications.uc new file mode 100755 index 00000000..739a5ba3 --- /dev/null +++ b/exported/TgClient/Classes/TgData_Notifications.uc @@ -0,0 +1,51 @@ +class TgData_Notifications extends TgDataObject + native(UIData); + +enum NotificationType +{ + NT_NONE, // 0 + NT_ACQUISITION, // 1 + NT_ACHIEVEMENT, // 2 + NT_SOCIAL, // 3 + NT_MAX // 4 +}; + +struct native Notification +{ + var init string sTitle; + var init string sDescription; + var dword dwIconIndex; + var init string sIconId; + var dword dwItemId; + var QWord qwTimeStamp; + var TgData_Notifications.NotificationType eType; + var dword dwCount; + var dword dwItemType; + var dword dwItemSubType; + var bool bNavigable; + var bool bShowDescription; + var bool bUseCardStack; + var bool bUseTreasureStack; + var bool bSeen; + + structdefaultproperties + { + sTitle="" + sDescription="" + dwIconIndex=() + sIconId="" + dwItemId=() + qwTimeStamp=() + eType=NotificationType.NT_NONE + dwCount=() + dwItemType=() + dwItemSubType=() + bNavigable=false + bShowDescription=false + bUseCardStack=false + bUseTreasureStack=false + bSeen=false + } +}; + +var array m_Notifications; diff --git a/exported/TgClient/Classes/TgDevMenuMoviePlayer.uc b/exported/TgClient/Classes/TgDevMenuMoviePlayer.uc new file mode 100755 index 00000000..27969c59 --- /dev/null +++ b/exported/TgClient/Classes/TgDevMenuMoviePlayer.uc @@ -0,0 +1,67 @@ +class TgDevMenuMoviePlayer extends UIMoviePlayer + native + config(UI); + +var GFxObject m_DevMenu; + +// Export UTgDevMenuMoviePlayer::execFillMenuCommands(FFrame&, void* const) +native function FillMenuCommands(); + +// Export UTgDevMenuMoviePlayer::execFillSubMenuCommands(FFrame&, void* const) +native function FillSubMenuCommands(string submenuname); + +// Export UTgDevMenuMoviePlayer::execAddCommand(FFrame&, void* const) +native function AddCommand(string Section, string Command, string DisplayName); + +// Export UTgDevMenuMoviePlayer::execAddSubMenu(FFrame&, void* const) +native function AddSubMenu(string Section, string submenuname, string DisplayName); + +function usc_FillCommands(string MenuName) +{ + // End:0x1D + if(MenuName == "") + { + FillMenuCommands(); + } + else + { + FillSubMenuCommands(MenuName); + } + //return; +} + +function PostInit() +{ + super.PostInit(); + GetPlayerOwner().ConsoleCommand("FlashCaptureMouse"); + bCaptureMouseInput = true; + bCaptureInput = true; + //return; +} + +event OnClose() +{ + bCaptureMouseInput = false; + bCaptureInput = false; + GetPlayerOwner().ConsoleCommand("FlashReleaseMouse"); + super.OnClose(); + //return; +} + +event bool FilterButtonInput(int ControllerId, name ButtonName, Object.EInputEvent Event) +{ + // End:0x84 + if(((ButtonName == 'XboxTypeS_B') || ButtonName == 'Escape') || ButtonName == 'XboxTypeS_BackLeft') + { + GetPlayerOwner().ConsoleCommand("ToggleDevMenu"); + return true; + } + return super(GFxMoviePlayer).FilterButtonInput(ControllerId, ButtonName, Event); + //return ReturnValue; +} + +defaultproperties +{ + MovieInfo=SwfMovie'DevMenu.DevMenu' + Priority=100 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgGFxGroup.uc b/exported/TgClient/Classes/TgGFxGroup.uc new file mode 100755 index 00000000..005c431d --- /dev/null +++ b/exported/TgClient/Classes/TgGFxGroup.uc @@ -0,0 +1,56 @@ +class TgGFxGroup extends Object + native; + +const GFXGROUP_LOC_NONE = -10000; + +struct native UIGroupObject +{ + var int nLocX; + var int nLocY; + var int nWidth; + var int nHeight; + var TgGFxGroup pGroup; + var GFxObject pObj; + var GFxObject pCursorHoverObj; + + structdefaultproperties + { + nLocX=0 + nLocY=0 + nWidth=0 + nHeight=0 + pGroup=none + pObj=none + pCursorHoverObj=none + } +}; + +var int m_nMinX; +var int m_nMinY; +var int m_nSizeX; +var int m_nSizeY; +var int m_nFocusX; +var int m_nFocusY; +var int m_nPrevFocusX; +var int m_nPrevFocusY; +var bool m_bLoopX; +var bool m_bLoopY; +var bool m_bCursorUpdateX; +var bool m_bCursorUpdateY; +var bool m_bCursorUpdateWidth; +var bool m_bCursorUpdateHeight; +var bool m_bAllowSelect; +var bool m_bAllowNavigation; +var int m_nDefaultXFocus; +var int m_nDefaultYFocus; +var TgGfxScene m_pScene; +var array m_Objects; +var GFxObject m_mcCursor; + +defaultproperties +{ + m_bCursorUpdateX=true + m_bCursorUpdateY=true + m_bAllowSelect=true + m_bAllowNavigation=true +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgGameDC_Chat.uc b/exported/TgClient/Classes/TgGameDC_Chat.uc new file mode 100755 index 00000000..e26e1771 --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_Chat.uc @@ -0,0 +1,119 @@ +class TgGameDC_Chat extends TgObject + native(GameUI); + +const PROCESS_MESSAGE_SECS = 2.0f; + +enum TG_CHAT_PRIORITY +{ + CHAT_PRIORITY_THROWAWAY, // 0 + CHAT_PRIORITY_NORMAL, // 1 + CHAT_PRIORITY_HIGH, // 2 + CHAT_PRIORITY_INTERRUPT, // 3 + CHAT_PRIORITY_MAX // 4 +}; + +struct native QueueMessage +{ + var int Id; + var TgGameDC_Chat.TG_CHAT_PRIORITY Priority; + var bool bHasPlayedSound; + var int VoicePackId; + var int VoiceBotId; + var int VoiceSkinId; + var init string VoicePackCustomSuffix; + var AkBaseSoundObject SoundObject; + + structdefaultproperties + { + Id=0 + Priority=TG_CHAT_PRIORITY.CHAT_PRIORITY_THROWAWAY + bHasPlayedSound=false + VoicePackId=0 + VoiceBotId=0 + VoiceSkinId=0 + VoicePackCustomSuffix="" + SoundObject=none + } +}; + +struct native MessageToken +{ + var int msgId; + var int MsgIdRed; + var int MsgIdBlue; + var init string Token; + + structdefaultproperties + { + msgId=0 + MsgIdRed=0 + MsgIdBlue=0 + Token="" + } +}; + +var QueueMessage c_CurrentMessage; +var array c_QueuedMessages; +var float c_fProcessTime; +var array c_DeferredMessages; +var array m_MessageTokens; +var transient float m_fLastEnemyKilledAllyMessageTime; +var float m_fMinEnemyKilledAllyMessageTime; +var transient float m_fLastAllyKilledEnemyMessageTime; +var float m_fMinAllyKilledEnemyMessageTime; + +// Export UTgGameDC_Chat::execInitializeData(FFrame&, void* const) +native function InitializeData(TgDataHandler Handler, TgDataChunk parentChunk); + +// Export UTgGameDC_Chat::execAddChatMsg(FFrame&, void* const) +native function AddChatMsg(string msg, string senderName, int nChannel, bool bIsFeedback, optional bool bIsVGS = false, optional int nMsgId = -1); + +// Export UTgGameDC_Chat::execAddLocalChatMsg(FFrame&, void* const) +native function AddLocalChatMsg(string msg, string senderName); + +// Export UTgGameDC_Chat::execAddCombatMsg(FFrame&, void* const) +native function AddCombatMsg(string msg); + +// Export UTgGameDC_Chat::execAddPopupMsg(FFrame&, void* const) +native function AddPopupMsg(string msg); + +// Export UTgGameDC_Chat::execUpdate(FFrame&, void* const) +native function Update(float DeltaTime, optional bool bSkipCallback = false); + +// Export UTgGameDC_Chat::execUpdateMessageSoundQueue(FFrame&, void* const) +native function UpdateMessageSoundQueue(); + +// Export UTgGameDC_Chat::execAddAlert(FFrame&, void* const) +native function AddAlert(string Message); + +// Export UTgGameDC_Chat::execPlayMessageSound(FFrame&, void* const) +native function PlayMessageSound(int nMsgId, optional TgGameDC_Chat.TG_CHAT_PRIORITY ePriority = 1); + +// Export UTgGameDC_Chat::execPlayVGSSound(FFrame&, void* const) +native function PlayVGSSound(int nMsgId, int nPackId, int nBotId, int nSkinId, string customSuffix, optional int nSourcePlayerId = 0); + +// Export UTgGameDC_Chat::execPlayVGSPOTG(FFrame&, void* const) +native function PlayVGSPOTG(int nPackId, int nBotId, int nSkinId, string customSuffix); + +// Export UTgGameDC_Chat::execPlayAnnouncerSound(FFrame&, void* const) +native function PlayAnnouncerSound(int nMsgId); + +// Export UTgGameDC_Chat::execSubmitDeferredMessages(FFrame&, void* const) +native function SubmitDeferredMessages(optional int nChannel = 0); + +event string TokenReplace(string Message, string Token, string sValue) +{ + return Repl(Message, Token, sValue); + //return ReturnValue; +} + +defaultproperties +{ + m_MessageTokens[0]=(msgId=112949,MsgIdRed=112954,MsgIdBlue=112953,Token="`Yourteam") + m_MessageTokens[1]=(msgId=112957,MsgIdRed=112955,MsgIdBlue=112958,Token="`Youhave") + m_MessageTokens[2]=(msgId=112950,MsgIdRed=112960,MsgIdBlue=112959,Token="`Theenemy") + m_MessageTokens[3]=(msgId=112952,MsgIdRed=112960,MsgIdBlue=112959,Token="`Your") + m_MessageTokens[4]=(msgId=0,MsgIdRed=0,MsgIdBlue=0,Token="`CT") + m_fMinEnemyKilledAllyMessageTime=5.0000000 + m_fMinAllyKilledEnemyMessageTime=5.0000000 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgGameDC_Device.uc b/exported/TgClient/Classes/TgGameDC_Device.uc new file mode 100755 index 00000000..0f48aa9b --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_Device.uc @@ -0,0 +1,55 @@ +class TgGameDC_Device extends TgDataChunk within GFxMoviePlayer + native(GameUI); + +var int m_nDeviceId; +var int m_nDeviceInstanceId; +var int m_nPointsAllocated; +var TgSynchronizedTimer m_CooldownTimer; +//var delegate __usc_get_mode_tooltip_delegate__Delegate; +//var delegate __usc_set_cast_mode_delegate__Delegate; + +// Export UTgGameDC_Device::execInitializeData(FFrame&, void* const) +native function InitializeData(TgDataHandler Handler, TgDataChunk parentChunk); + +// Export UTgGameDC_Device::execDeviceChangeEvent(FFrame&, void* const) +native function DeviceChangeEvent(TgDevice Dev, TgDevice.EDeviceChangeEvent Event); + +// Export UTgGameDC_Device::execUpdateValues(FFrame&, void* const) +native function UpdateValues(TgDevice Dev); + +// Export UTgGameDC_Device::execUpdateSelected(FFrame&, void* const) +native function UpdateSelected(bool bSelected); + +// Export UTgGameDC_Device::execUpdateCanFire(FFrame&, void* const) +native function UpdateCanFire(TgDevice Dev); + +// Export UTgGameDC_Device::execUpdateCooldown(FFrame&, void* const) +native function UpdateCooldown(TgDevice Dev); + +// Export UTgGameDC_Device::execUpdatePtsAlloc(FFrame&, void* const) +native function UpdatePtsAlloc(TgDevice Dev); + +// Export UTgGameDC_Device::execUpdateInstanceCount(FFrame&, void* const) +native function UpdateInstanceCount(TgDevice Dev); + +// Export UTgGameDC_Device::execUpdateCastMode(FFrame&, void* const) +native function UpdateCastMode(); + +// Export UTgGameDC_Device::execNotifyMapChange(FFrame&, void* const) +native function NotifyMapChange(); + +delegate usc_get_mode_tooltip_delegate() +{ + //return; +} + +// Export UTgGameDC_Device::execusc_get_mode_tooltip(FFrame&, void* const) +native function usc_get_mode_tooltip(int nRank); + +delegate usc_set_cast_mode_delegate() +{ + //return; +} + +// Export UTgGameDC_Device::execusc_set_cast_mode(FFrame&, void* const) +native function usc_set_cast_mode(int nCastMode); diff --git a/exported/TgClient/Classes/TgGameDC_DeviceList.uc b/exported/TgClient/Classes/TgGameDC_DeviceList.uc new file mode 100755 index 00000000..a02fe402 --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_DeviceList.uc @@ -0,0 +1,27 @@ +class TgGameDC_DeviceList extends TgDataChunk within GFxMoviePlayer + native(GameUI); + +const NUM_UI_DEVICES = 25; + +var TgGameDC_Device m_DeviceList[25]; + +// Export UTgGameDC_DeviceList::execInitializeData(FFrame&, void* const) +native function InitializeData(TgDataHandler Handler, TgDataChunk parentChunk); + +// Export UTgGameDC_DeviceList::execGetDeviceChunk(FFrame&, void* const) +native function TgGameDC_Device GetDeviceChunk(TgDevice Dev); + +// Export UTgGameDC_DeviceList::execDeviceChangeEvent(FFrame&, void* const) +native function DeviceChangeEvent(TgDevice Dev, TgDevice.EDeviceChangeEvent Event); + +// Export UTgGameDC_DeviceList::execUpdateDevice(FFrame&, void* const) +native function UpdateDevice(TgDevice Dev); + +// Export UTgGameDC_DeviceList::execUpdateSelected(FFrame&, void* const) +native function UpdateSelected(TgDevice Dev); + +// Export UTgGameDC_DeviceList::execUpdatePtsAlloc(FFrame&, void* const) +native function UpdatePtsAlloc(TgDevice Dev); + +// Export UTgGameDC_DeviceList::execSetEmpty(FFrame&, void* const) +native function SetEmpty(TgObject.TG_EQUIP_POINT eSlot); diff --git a/exported/TgClient/Classes/TgGameDC_Effect.uc b/exported/TgClient/Classes/TgGameDC_Effect.uc new file mode 100755 index 00000000..0b70c3c5 --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_Effect.uc @@ -0,0 +1,19 @@ +class TgGameDC_Effect extends TgDataChunk within GFxMoviePlayer + native(GameUI); + +var int m_nGroup; +var int m_nIcon; +var int m_bBuff; +var int m_bActive; +var int m_nStacks; +var float m_fTimer; +var string m_sIcon; +var string m_sName; +var string m_sDescription; +var TgSynchronizedTimer m_lifeTimer; + +// Export UTgGameDC_Effect::execInitializeData(FFrame&, void* const) +native function InitializeData(TgDataHandler Handler, TgDataChunk parentChunk); + +// Export UTgGameDC_Effect::execNotifyMapChange(FFrame&, void* const) +native function NotifyMapChange(); diff --git a/exported/TgClient/Classes/TgGameDC_EffectList.uc b/exported/TgClient/Classes/TgGameDC_EffectList.uc new file mode 100755 index 00000000..335e76d3 --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_EffectList.uc @@ -0,0 +1,12 @@ +class TgGameDC_EffectList extends TgDataChunk within GFxMoviePlayer + native(GameUI); + +const MAX_UI_EFFECTS = 16; + +var TgGameDC_Effect m_EffectList[16]; + +// Export UTgGameDC_EffectList::execInitializeData(FFrame&, void* const) +native function InitializeData(TgDataHandler Handler, TgDataChunk parentChunk); + +// Export UTgGameDC_EffectList::execUpdateEffects(FFrame&, void* const) +native function UpdateEffects(TgEffectManager effectManager, int indexChanged); diff --git a/exported/TgClient/Classes/TgGameDC_Game.uc b/exported/TgClient/Classes/TgGameDC_Game.uc new file mode 100755 index 00000000..494641fc --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_Game.uc @@ -0,0 +1,29 @@ +class TgGameDC_Game extends TgDataChunk within GFxMoviePlayer + native(GameUI); + +enum GAME_MODE_TYPE +{ + GAME_TYPE_BATTLE, // 0 + GAME_TYPE_ARENA, // 1 + GAME_TYPE_DOM, // 2 + GAME_TYPE_SIEGE, // 3 + GAME_TYPE_MAX // 4 +}; + +var TgSynchronizedTimer m_GameTimer; +var TgGameDC_Team m_FriendTeamData; +var TgGameDC_Team m_EnemyTeamData; +var TgGameDC_MapEntity m_GoldFury; +var TgGameDC_Game.GAME_MODE_TYPE currentGameType; + +// Export UTgGameDC_Game::execInitializeData(FFrame&, void* const) +native function InitializeData(TgDataHandler Handler, TgDataChunk parentChunk); + +// Export UTgGameDC_Game::execNotifyMapChange(FFrame&, void* const) +native function NotifyMapChange(); + +// Export UTgGameDC_Game::execUpdateGameClock(FFrame&, void* const) +native function UpdateGameClock(); + +// Export UTgGameDC_Game::execUpdateGameCapturePoint(FFrame&, void* const) +native function UpdateGameCapturePoint(int Index, int Taskforce); diff --git a/exported/TgClient/Classes/TgGameDC_Guardian.uc b/exported/TgClient/Classes/TgGameDC_Guardian.uc new file mode 100755 index 00000000..6638e43e --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_Guardian.uc @@ -0,0 +1,2 @@ +class TgGameDC_Guardian extends TgGameDC_MapEntity within GFxMoviePlayer + native(GameUI); diff --git a/exported/TgClient/Classes/TgGameDC_LocalPlayer.uc b/exported/TgClient/Classes/TgGameDC_LocalPlayer.uc new file mode 100755 index 00000000..e9ab12c0 --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_LocalPlayer.uc @@ -0,0 +1,16 @@ +class TgGameDC_LocalPlayer extends TgGameDC_Player within GFxMoviePlayer + native(GameUI); + +// Export UTgGameDC_LocalPlayer::execInitializeData(FFrame&, void* const) +native function InitializeData(TgDataHandler Handler, TgDataChunk parentChunk); + +// Export UTgGameDC_LocalPlayer::execSetVendorItemList(FFrame&, void* const) +native function SetVendorItemList(array nItemIds); + +// Export UTgGameDC_LocalPlayer::execUpdateSpectatorViewTarget(FFrame&, void* const) +native function UpdateSpectatorViewTarget(TgGameDC_MapEntity entity); + +defaultproperties +{ + m_bClearOnMapChange=false +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgGameDC_MapEntity.uc b/exported/TgClient/Classes/TgGameDC_MapEntity.uc new file mode 100755 index 00000000..3b85d947 --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_MapEntity.uc @@ -0,0 +1,16 @@ +class TgGameDC_MapEntity extends TgDataChunk within GFxMoviePlayer + native(GameUI); + +var int m_nPawnId; + +// Export UTgGameDC_MapEntity::execInitializeData(FFrame&, void* const) +native function InitializeData(TgDataHandler Handler, TgDataChunk parentChunk); + +// Export UTgGameDC_MapEntity::execUpdateActorMapPosition(FFrame&, void* const) +native function UpdateActorMapPosition(Actor gameActor); + +// Export UTgGameDC_MapEntity::execUpdateMapPosition(FFrame&, void* const) +native function UpdateMapPosition(Vector Location, Rotator Rotation); + +// Export UTgGameDC_MapEntity::execNotifyMapChange(FFrame&, void* const) +native function NotifyMapChange(); diff --git a/exported/TgClient/Classes/TgGameDC_Minion.uc b/exported/TgClient/Classes/TgGameDC_Minion.uc new file mode 100755 index 00000000..a2f999e7 --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_Minion.uc @@ -0,0 +1,2 @@ +class TgGameDC_Minion extends TgGameDC_Player within GFxMoviePlayer + native(GameUI); diff --git a/exported/TgClient/Classes/TgGameDC_Player.uc b/exported/TgClient/Classes/TgGameDC_Player.uc new file mode 100755 index 00000000..93e85f66 --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_Player.uc @@ -0,0 +1,38 @@ +class TgGameDC_Player extends TgGameDC_MapEntity within GFxMoviePlayer + native(GameUI); + +var int m_nStatCount; +var TgSynchronizedTimer m_ReviveTimer; +var TgSynchronizedTimer m_UltimateTimer; +var float m_PrevUltTimer; +var GFxObject m_StatsArray; +var GFxObject m_ItemStoreArray; +var GFxObject m_ActiveItemArray; +var GFxObject m_ConsumableArray; +//var delegate __USC_ForceStatsUpdate_Delegate__Delegate; + +// Export UTgGameDC_Player::execInitializeData(FFrame&, void* const) +native function InitializeData(TgDataHandler Handler, TgDataChunk parentChunk); + +// Export UTgGameDC_Player::execSetDirty(FFrame&, void* const) +native function SetDirty(); + +// Export UTgGameDC_Player::execUpdatePlayer(FFrame&, void* const) +native function UpdatePlayer(TgRepInfo_Player PRI); + +// Export UTgGameDC_Player::execUpdateStats(FFrame&, void* const) +native function UpdateStats(TgPawn changedPawn); + +// Export UTgGameDC_Player::execUpdateItemStoreItems(FFrame&, void* const) +native function UpdateItemStoreItems(TgRepInfo_Player PRI); + +// Export UTgGameDC_Player::execNotifyMapChange(FFrame&, void* const) +native function NotifyMapChange(); + +delegate USC_ForceStatsUpdate_Delegate() +{ + //return; +} + +// Export UTgGameDC_Player::execUSC_ForceStatsUpdate(FFrame&, void* const) +native function USC_ForceStatsUpdate(); diff --git a/exported/TgClient/Classes/TgGameDC_PlayerVitals.uc b/exported/TgClient/Classes/TgGameDC_PlayerVitals.uc new file mode 100755 index 00000000..5ab41b84 --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_PlayerVitals.uc @@ -0,0 +1,32 @@ +class TgGameDC_PlayerVitals extends TgGameDC_MapEntity within GFxMoviePlayer + native(GameUI); + +var float m_fHealth; +var float m_fHealthMax; +var float m_fEnergy; +var float m_fEnergyMax; +var float m_fBoost; +var float m_fBoostMax; +var float m_fMana; +var float m_fManaMax; +var float m_fHealthPct; +var float m_fEnergyPct; +var float m_fBoostPct; +var float m_fManaPct; +var float m_fXPPct; +var int m_nLevel; +var TgSynchronizedTimer m_ReviveTimer; +var TgSynchronizedTimer m_RefireTimer; +var TgSynchronizedTimer m_RecallTimer; + +// Export UTgGameDC_PlayerVitals::execInitializeData(FFrame&, void* const) +native function InitializeData(TgDataHandler Handler, TgDataChunk parentChunk); + +// Export UTgGameDC_PlayerVitals::execNotifyMapChange(FFrame&, void* const) +native function NotifyMapChange(); + +// Export UTgGameDC_PlayerVitals::execUpdateDamageDone(FFrame&, void* const) +native function UpdateDamageDone(); + +// Export UTgGameDC_PlayerVitals::execUpdateCoreStats(FFrame&, void* const) +native function UpdateCoreStats(); diff --git a/exported/TgClient/Classes/TgGameDC_RespawnLocation.uc b/exported/TgClient/Classes/TgGameDC_RespawnLocation.uc new file mode 100755 index 00000000..a18a9199 --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_RespawnLocation.uc @@ -0,0 +1,2 @@ +class TgGameDC_RespawnLocation extends TgGameDC_MapEntity within GFxMoviePlayer + native(GameUI); diff --git a/exported/TgClient/Classes/TgGameDC_Target.uc b/exported/TgClient/Classes/TgGameDC_Target.uc new file mode 100755 index 00000000..478afcac --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_Target.uc @@ -0,0 +1,8 @@ +class TgGameDC_Target extends TgDataChunk within GFxMoviePlayer + native(GameUI); + +// Export UTgGameDC_Target::execInitializeData(FFrame&, void* const) +native function InitializeData(TgDataHandler Handler, TgDataChunk parentChunk); + +// Export UTgGameDC_Target::execUpdateTarget(FFrame&, void* const) +native function bool UpdateTarget(Actor NewTarget, bool bHovered); diff --git a/exported/TgClient/Classes/TgGameDC_Team.uc b/exported/TgClient/Classes/TgGameDC_Team.uc new file mode 100755 index 00000000..fd82f2d8 --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_Team.uc @@ -0,0 +1,30 @@ +class TgGameDC_Team extends TgDataChunk within GFxMoviePlayer + native(GameUI); + +const DCTEAM_MAX_MEMBERS = 5; +const DCTEAM_MAX_TOWERS = 9; + +var int m_nTaskForce; +var TgGameDC_Player m_Members[5]; +var int m_nMaxMemberCount; +var TgGameDC_Guardian m_Guardian; +var TgGameDC_Tower m_Towers[9]; +var TgSynchronizedTimer m_SurrenderTimer; + +// Export UTgGameDC_Team::execInitializeData(FFrame&, void* const) +native function InitializeData(TgDataHandler Handler, TgDataChunk parentChunk); + +// Export UTgGameDC_Team::execNotifyMapChange(FFrame&, void* const) +native function NotifyMapChange(); + +// Export UTgGameDC_Team::execUpdateMembers(FFrame&, void* const) +native function UpdateMembers(TgRepInfo_TaskForce tfri); + +// Export UTgGameDC_Team::execUpdatePlayerStat(FFrame&, void* const) +native function UpdatePlayerStat(TgPawn changedPawn); + +// Export UTgGameDC_Team::execUpdatePlayerItemStoreItems(FFrame&, void* const) +native function bool UpdatePlayerItemStoreItems(TgRepInfo_Player PRI); + +// Export UTgGameDC_Team::execUpdatePlayerSurrender(FFrame&, void* const) +native function bool UpdatePlayerSurrender(TgRepInfo_Player PRI); diff --git a/exported/TgClient/Classes/TgGameDC_Tower.uc b/exported/TgClient/Classes/TgGameDC_Tower.uc new file mode 100755 index 00000000..2731dd9b --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_Tower.uc @@ -0,0 +1,5 @@ +class TgGameDC_Tower extends TgGameDC_MapEntity within GFxMoviePlayer + native(GameUI); + +// Export UTgGameDC_Tower::execInitializeData(FFrame&, void* const) +native function InitializeData(TgDataHandler Handler, TgDataChunk parentChunk); diff --git a/exported/TgClient/Classes/TgGameDC_Turret.uc b/exported/TgClient/Classes/TgGameDC_Turret.uc new file mode 100755 index 00000000..4087f775 --- /dev/null +++ b/exported/TgClient/Classes/TgGameDC_Turret.uc @@ -0,0 +1,2 @@ +class TgGameDC_Turret extends TgGameDC_Minion within GFxMoviePlayer + native(GameUI); diff --git a/exported/TgClient/Classes/TgGameDataHandler.uc b/exported/TgClient/Classes/TgGameDataHandler.uc new file mode 100755 index 00000000..ba8027c1 --- /dev/null +++ b/exported/TgClient/Classes/TgGameDataHandler.uc @@ -0,0 +1,7 @@ +class TgGameDataHandler extends TgDataHandler within GFxMoviePlayer + native(GameUI); + +var TgDataGroup_Game m_Game; + +// Export UTgGameDataHandler::execInitializeDataHandler(FFrame&, void* const) +native function InitializeDataHandler(UIMoviePlayer mp); diff --git a/exported/TgClient/Classes/TgGameHUD.uc b/exported/TgClient/Classes/TgGameHUD.uc new file mode 100755 index 00000000..a374bc86 --- /dev/null +++ b/exported/TgClient/Classes/TgGameHUD.uc @@ -0,0 +1,349 @@ +class TgGameHUD extends TgClientHUD + transient + native(GameUI) + config(Game) + hidecategories(Navigation); + +enum GameHudState +{ + GHS_None, // 0 + GHS_Match, // 1 + GHS_Summary, // 2 + GHS_MAX // 3 +}; + +enum TgClientVisibilityMode +{ + CVM_NORMAL, // 0 + CVM_ENEMY, // 1 + CVM_PLAYERS, // 2 + CVM_ALL, // 3 + CVM_MAX // 4 +}; + +enum HelpPromptType +{ + HPT_None, // 0 + HPT_Cards, // 1 + HPT_Mount, // 2 + HPT_MAX // 3 +}; + +var int m_nLastUpgrade; +var bool m_bGameWon; +var bool m_bGameOver; +var bool m_bHasMounted; +var bool m_bUpdateMinimapThisTick; +var float m_fFireTime; +var float m_fFireTimer; +var float m_fMMUpdateTimer; +var Actor m_LastTarget; +var TgBlinder m_Blinder; +var TgMiniMap m_MiniMap; +var TgMiniMap_Targeting m_TargetingMap; +var float m_fLastMinimapUpdateTime; +var int m_nPotGModelPose; +var int m_nPotGModelSkin; +var int m_nPotGModelHead; +var int m_nPotGModelClass; +var int m_nPotGModelDevice; +var int m_nPotGModelDeviceSkin; + +// Export UTgGameHUD::execPlayIntro(FFrame&, void* const) +native function PlayIntro(); + +// Export UTgGameHUD::execFinishIntro(FFrame&, void* const) +native function bool FinishIntro(); + +// Export UTgGameHUD::execInitOverlayMoviePlayer(FFrame&, void* const) +native function InitOverlayMoviePlayer(); + +// Export UTgGameHUD::execUpdateOverlay(FFrame&, void* const) +native function UpdateOverlay(); + +// Export UTgGameHUD::execUpdateDebugDraws(FFrame&, void* const) +native function UpdateDebugDraws(); + +// Export UTgGameHUD::execUpdateHoverTarget(FFrame&, void* const) +native function UpdateHoverTarget(); + +// Export UTgGameHUD::execUpdatePlayerStatUI(FFrame&, void* const) +native function bool UpdatePlayerStatUI(TgPawn changedPawn); + +// Export UTgGameHUD::execUpdatePlayerReady(FFrame&, void* const) +native function UpdatePlayerReady(TgRepInfo_Player PRI); + +// Export UTgGameHUD::execUpdateReleaseTimeRemaining(FFrame&, void* const) +native function UpdateReleaseTimeRemaining(float fTimeRemaining); + +// Export UTgGameHUD::execPingWorldLocation(FFrame&, void* const) +native function PingWorldLocation(Vector PingLocation, TgObject.PING_TYPE Type); + +// Export UTgGameHUD::execEndMission(FFrame&, void* const) +native function EndMission(bool bPlayerAttacker, TgObject.GAME_WIN_STATE finalWinState); + +// Export UTgGameHUD::execUpdateRoundSetupTimer(FFrame&, void* const) +native function UpdateRoundSetupTimer(float SetupTimeRemaining, float TimeStamp); + +// Export UTgGameHUD::execOnRoundSetupStarted(FFrame&, void* const) +native function OnRoundSetupStarted(); + +// Export UTgGameHUD::execOpenBurnMenu(FFrame&, void* const) +native exec function OpenBurnMenu(); + +// Export UTgGameHUD::execOpenDeckMenu(FFrame&, void* const) +native exec function OpenDeckMenu(); + +// Export UTgGameHUD::execPurchaseCard(FFrame&, void* const) +native exec function PurchaseCard(int nId); + +// Export UTgGameHUD::execToggleVGS(FFrame&, void* const) +native exec function ToggleVGS(); + +// Export UTgGameHUD::execToggleMinimap(FFrame&, void* const) +native exec function ToggleMinimap(); + +// Export UTgGameHUD::execViewScoreboard(FFrame&, void* const) +native exec function ViewScoreboard(bool bShow, optional bool bAcceptsInput = false, optional UIHudScoreboard pScoreboard); + +// Export UTgGameHUD::execToggleScoreBoard(FFrame&, void* const) +native exec function ToggleScoreBoard(optional bool bAcceptsInput = false); + +// Export UTgGameHUD::execToggleDeathRecap(FFrame&, void* const) +native exec function ToggleDeathRecap(); + +// Export UTgGameHUD::execChangePotGClassModel(FFrame&, void* const) +native exec function ChangePotGClassModel(int nIndex, int nClassId, int nSkinId, int nHeadId, int nDeviceId, int nDeviceSkinId, TgSkeletalMeshActor_Loader.LobbyAnimPose pose, optional bool bAsync = true); + +// Export UTgGameHUD::execEnablePotGCamera(FFrame&, void* const) +native exec function EnablePotGCamera(bool bEnabled); + +// Export UTgGameHUD::execChangePotGCameraTransform(FFrame&, void* const) +native exec function ChangePotGCameraTransform(float fXOffset, float fYOffset, float fZOffset, float fYawOffset, float fPitchOffset, float fRollOffset); + +// Export UTgGameHUD::execTestPrecache(FFrame&, void* const) +native exec function TestPrecache(int nBotId, int nSkinId, int nWeaponSkinId, int nHeadId, optional bool bAll = false); + +// Export UTgGameHUD::execPrecacheClass(FFrame&, void* const) +native exec function PrecacheClass(string godName, optional string skinName, optional string weaponSkinName); + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + m_MiniMap = new Class'TgClient.TgMiniMap'; + m_TargetingMap = new Class'TgClient.TgMiniMap_Targeting'; + m_Blinder = new Class'TgClient.TgBlinder'; + // End:0xD0 + if(m_MiniMap != none) + { + m_MiniMap.CreateMiniMapTexture(); + m_MiniMap.Init(TgPlayerController(Owner)); + m_MiniMap.UpdateMiniMapTexture(); + } + // End:0x159 + if(m_TargetingMap != none) + { + m_TargetingMap.CreateMiniMapTexture(); + m_TargetingMap.Init(TgPlayerController(Owner)); + m_TargetingMap.UpdateMiniMapTexture(); + ShowTargetingMap(false); + } + InitOverlayMoviePlayer(); + ResetViewCenterPoint(); + //return; +} + +event PostRender() +{ + super.PostRender(); + UpdateOverlay(); + UpdateHoverTarget(); + UpdateDebugDraws(); + DrawMiniMap(Canvas); + //return; +} + +simulated event PreDemoRewind() +{ + super(Actor).PreDemoRewind(); + // End:0x38 + if(m_MiniMap != none) + { + m_MiniMap.RemoveAllEntities(); + } + // End:0x66 + if(m_TargetingMap != none) + { + m_TargetingMap.RemoveAllEntities(); + } + //return; +} + +simulated function DrawMiniMap(Canvas theCanvas) +{ + // End:0x5B + if((m_MiniMap != none) && m_MiniMap.ShouldRender()) + { + m_MiniMap.Draw(theCanvas); + } + //return; +} + +exec function ToggleOverlay() +{ + //return; +} + +exec function UpdateMMTimer(float fNew) +{ + m_fMMUpdateTimer = fNew; + //return; +} + +function TgMiniMap GetMapByName(string MapName) +{ + // End:0x28 + if(MapName == "MapFrame_mc") + { + return m_MiniMap; + } + else + { + // End:0x54 + if(MapName == "MissionMapFrame_mc") + { + return m_TargetingMap; + } + } + return none; + //return ReturnValue; +} + +exec function PingMap(float X, float Y, string Type, string MapName) +{ + local bool bHandled; + local Vector WorldLoc, mapLoc; + local TgObject.PING_TYPE Pt; + local array repInfos; + local TgMiniMap Minimap; + + Minimap = GetMapByName(MapName); + bHandled = false; + mapLoc.X = X; + mapLoc.Y = Y; + mapLoc.Z = 0.0000000; + Pt = 0; + // End:0xC9 + if(Type == "retreat") + { + Pt = 2; + } + else + { + // End:0xEA + if(Type == "alert") + { + Pt = 4; + } + } + // End:0x25A + if((Minimap != none) && Minimap.VerifyMapLocation(X, Y)) + { + WorldLoc = Minimap.MapToWorld(mapLoc); + Minimap.GetRepInfosForLocation(mapLoc, repInfos); + // End:0x1F8 + if(TgPlayerController(Owner) != none) + { + bHandled = TgPlayerController(Owner).PingMap(WorldLoc, repInfos, Pt); + } + // End:0x25A + if(!bHandled && Minimap == m_MiniMap) + { + Minimap.PingMap(X, Y, Pt); + } + } + //return; +} + +exec function HoverMap(float X, float Y, string MapName) +{ + local TgMiniMap Minimap; + + Minimap = GetMapByName(MapName); + // End:0xB3 + if(Minimap != none) + { + // End:0x94 + if(Minimap.VerifyMapLocation(X, Y)) + { + Minimap.HoverMap(X, Y); + } + else + { + Minimap.ClearHover(); + } + } + //return; +} + +function ShowTargetingMap(bool bShow) +{ + // End:0x10 + if(bShow) + { + } + // End:0x68 + if(m_TargetingMap != none) + { + m_TargetingMap.RemoveAllEntities(); + m_TargetingMap.m_bShouldDisplayMiniMap = bShow; + } + //return; +} + +function PlayDeviceFailResponse(TgObject.EDeviceFailType failType, bool IsAbility) +{ + // End:0x11 + if(!IsAbility) + { + return; + } + PlaySoundBase(AkEvent'WW_UI_Default.UI_InGame_Alert_Ability_Cooldown_1P_Play'); + //return; +} + +defaultproperties +{ + m_nLastUpgrade=-1 + m_fFireTime=1.0000000 + m_fMMUpdateTimer=0.1000000 + m_ScenePreloads[0]=(nDepth=1,sName="UIWorldOverlay",sPath="..\\WorldOverlay\\WorldOverlay.swf") + m_ScenePreloads[1]=(nDepth=2,sName="UIHud",sPath="..\\hud\\hud.swf") + m_ScenePreloads[2]=(nDepth=5,sName="UIHudVoiceChat",sPath="..\\VoiceChat\\UIVoiceChat.swf") + m_ScenePreloads[3]=(nDepth=11,sName="UIHudVGS",sPath="..\\VGS\\VGS_Menu.swf") + m_ScenePreloads[4]=(nDepth=12,sName="UIHudMenu",sPath="..\\hud\\HudMenu.swf") + m_ScenePreloads[5]=(nDepth=13,sName="UIHudBurns",sPath="..\\hud\\HudBurns.swf") + m_ScenePreloads[6]=(nDepth=14,sName="UIHudDecks",sPath="..\\hud\\HudDecks.swf") + m_ScenePreloads[7]=(nDepth=15,sName="UIHudRecap",sPath="..\\DeathRecap\\DeathRecap.swf") + m_ScenePreloads[8]=(nDepth=16,sName="GameTip",sPath="..\\GameTip\\GameTip.swf") + m_ScenePreloads[9]=(nDepth=17,sName="UIHudOverlays",sPath="..\\hud\\HudOverlays.swf") + m_ScenePreloads[10]=(nDepth=18,sName="UIHudScoreboard",sPath="..\\Scoreboard\\Scoreboard.swf") + m_ScenePreloads[11]=(nDepth=19,sName="UIHudChampionSelect",sPath="..\\hud\\HudChampionSelect.swf") + m_ScenePreloads[12]=(nDepth=104,sName="UISkills",sPath="..\\Skills\\Skills.swf") + m_ScenePreloads[13]=(nDepth=196,sName="UISettings",sPath="..\\SettingsMenu\\SettingsMenu.swf") + m_ScenePreloads[14]=(nDepth=197,sName="UIPopup",sPath="..\\Popup\\Popup.swf") + m_ScenePreloads[15]=(nDepth=198,sName="UIAchievementPopups",sPath="..\\Popup\\AchievementPopups.swf") + m_ScenePreloads[16]=(nDepth=199,sName="UIPopupCrafting",sPath="..\\Popup\\PopupCraftingConfirm.swf") + m_ScenePreloads[17]=(nDepth=200,sName="Cursor",sPath="..\\Cursor\\Cursor.swf") + m_ScenePreloads[18]=(nDepth=200,sName="UIHudResult",sPath="..\\EndOfMatch\\EndOfMatch.swf") + m_ScenePreloads[19]=(nDepth=201,sName="UIWebBrowser",sPath="..\\WebBrowser\\WebBrowser.swf") + m_ScenePreloads[20]=(nDepth=300,sName="UIFade",sPath="..\\Transition\\UIFade.swf") + m_ScenePreloads[21]=(nDepth=400,sName="UISubtitle",sPath="..\\SubTitle\\SubTitle.swf") + // Reference: PComPictureInPicture'TgClient.Default__TgGameHUD.PictureInPicture' + // Archetype: PComPictureInPicture'TgClient.Default__TgClientHUD.PictureInPicture' + begin object name="PictureInPicture" + end object + m_PictureInPicture=PictureInPicture + bShowOverlays=true + m_bHasThreadedWork=true +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgGameLaunch.uc b/exported/TgClient/Classes/TgGameLaunch.uc new file mode 100755 index 00000000..d83fb991 --- /dev/null +++ b/exported/TgClient/Classes/TgGameLaunch.uc @@ -0,0 +1,15 @@ +class TgGameLaunch extends GameInfo + native + config(Game) + hidecategories(Navigation,Movement,Collision); + +var globalconfig string LoginName; +var globalconfig string LoginPwd; +var globalconfig bool SaveLoginName; + +defaultproperties +{ + DefaultPawnClass=Class'Engine.Pawn' + HUDType=Class'TgClient.TgLobbyHUD' + PlayerControllerClass=Class'TgGame.TgPlayerController' +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgGameSceneManager.uc b/exported/TgClient/Classes/TgGameSceneManager.uc new file mode 100755 index 00000000..e06a3ffe --- /dev/null +++ b/exported/TgClient/Classes/TgGameSceneManager.uc @@ -0,0 +1,2 @@ +class TgGameSceneManager extends TgSceneManager within GFxMoviePlayer + native(GameUI); diff --git a/exported/TgClient/Classes/TgGameViewportClient.uc b/exported/TgClient/Classes/TgGameViewportClient.uc new file mode 100755 index 00000000..d648efe2 --- /dev/null +++ b/exported/TgClient/Classes/TgGameViewportClient.uc @@ -0,0 +1,104 @@ +class TgGameViewportClient extends PComGameViewportClient within Engine + transient + native + config(Engine); + +var array m_DeferredManifests; +var bool m_dragging; +var bool m_wasMaximized; +var transient bool bReadLeftStickAxis; +var transient bool bReadRightStickAxis; +var transient float fRawLeftStickAxis; +var transient float fRawRightStickAxis; + +function DrawTransition(Canvas Canvas) +{ + //return; +} + +// Export UTgGameViewportClient::execNativeGameSessionEnded(FFrame&, void* const) +native function NativeGameSessionEnded(); + +// Export UTgGameViewportClient::execIsGfxMovieCapturingMouseInput(FFrame&, void* const) +native function bool IsGfxMovieCapturingMouseInput(); + +// Export UTgGameViewportClient::execInitTgGameViewportClient(FFrame&, void* const) +native function InitTgGameViewportClient(); + +event GameSessionEnded() +{ + local TgSpectatorController SpectatorPC; + + super(GameViewportClient).GameSessionEnded(); + NativeGameSessionEnded(); + // End:0xDC + if(Outer.GamePlayers.Length > 0) + { + SpectatorPC = TgSpectatorController(Outer.GamePlayers[0].Actor); + // End:0xDC + if((SpectatorPC != none) && int(SpectatorPC.m_CameraMode) != int(1)) + { + SpectatorPC.SetNewSpectatorMode(0); + } + } + //return; +} + +event PostRender(Canvas Canvas) +{ + local TgPlayerController PC; + local TgGameHUD HUD; + + super(GameViewportClient).PostRender(Canvas); + // End:0x189 + if(Outer.GamePlayers.Length > 0) + { + PC = TgPlayerController(Outer.GamePlayers[0].Actor); + // End:0x189 + if((PC != none) && TgGameHUD(PC.myHUD) != none) + { + HUD = TgGameHUD(PC.myHUD); + // End:0x189 + if((HUD.m_TargetingMap != none) && HUD.m_TargetingMap.ShouldRender()) + { + HUD.m_TargetingMap.Draw(Canvas); + } + } + } + //return; +} + +event GetSubtitleRegion(out Vector2D MinPos, out Vector2D MaxPos) +{ + MaxPos.X = 1.0000000; + MaxPos.Y = ((Outer.GamePlayers.Length == 1) ? 0.7400000 : 0.5000000); + //return; +} + +event LayoutPlayers() +{ + local LocalPlayer LocalPlayer; + + // End:0x111 + foreach Outer.GamePlayers(LocalPlayer) + { + // End:0x9E + if(LocalPlayer.Size.X == 0.0000000) + { + LocalPlayer.Size.X = 1.0000000; + } + // End:0x110 + if(LocalPlayer.Size.Y == 0.0000000) + { + LocalPlayer.Size.Y = 1.0000000; + } + } + //return; +} + +event bool Init(out string OutError) +{ + InitTgGameViewportClient(); + return super.Init(OutError); + //return ReturnValue; +} diff --git a/exported/TgClient/Classes/TgGfxChatModal.uc b/exported/TgClient/Classes/TgGfxChatModal.uc new file mode 100755 index 00000000..1cf6463a --- /dev/null +++ b/exported/TgClient/Classes/TgGfxChatModal.uc @@ -0,0 +1 @@ +class TgGfxChatModal extends GFxObject within GFxMoviePlayer; diff --git a/exported/TgClient/Classes/TgGfxCursor.uc b/exported/TgClient/Classes/TgGfxCursor.uc new file mode 100755 index 00000000..d9522744 --- /dev/null +++ b/exported/TgClient/Classes/TgGfxCursor.uc @@ -0,0 +1,9 @@ +class TgGfxCursor extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +var GFxObject m_mcIcon; + +defaultproperties +{ + m_Name="Cursor" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgGfxFriendManagement.uc b/exported/TgClient/Classes/TgGfxFriendManagement.uc new file mode 100755 index 00000000..228a0d01 --- /dev/null +++ b/exported/TgClient/Classes/TgGfxFriendManagement.uc @@ -0,0 +1,285 @@ +class TgGfxFriendManagement extends GFxObject within GFxMoviePlayer + native; + +enum EFriendTabs +{ + FRT_CURRENT_FRIENDS, // 0 + FRT_REQUESTS, // 1 + FRT_RECENT, // 2 + FRT_CLAN, // 3 + FRT_BLOCKED, // 4 + FRT_MAX // 5 +}; + +var UIGameMoviePlayer m_Movie; +var init string m_LastErrorString; +var init string m_SelectedPlayerName; +var init string m_InvitedPlayerName; +var TgGfxFriendManagement.EFriendTabs m_tabId; +//var delegate __USC_GetFriendsData_Delegate__Delegate; +//var delegate __USC_RemoveFriend_Delegate__Delegate; +//var delegate __USC_MessageFriend_Delegate__Delegate; +//var delegate __USC_SearchByString_Delegate__Delegate; +//var delegate __USC_GetListData_Delegate__Delegate; +//var delegate __USC_InviteFriend_Delegate__Delegate; +//var delegate __USC_CancelInvite_Delegate__Delegate; +//var delegate __USC_AcceptClanInvite_Delegate__Delegate; +//var delegate __USC_CancelClanInvite_Delegate__Delegate; +//var delegate __USC_AcceptFriendRequest_Delegate__Delegate; +//var delegate __USC_AcceptAllFriendRequests_Delegate__Delegate; +//var delegate __USC_CancelFriendRequest_Delegate__Delegate; +//var delegate __USC_CancelAllFriendRequests_Delegate__Delegate; +//var delegate __USC_ViewPlayerProfile_Delegate__Delegate; +//var delegate __USC_ViewPlayerClan_Delegate__Delegate; +//var delegate __USC_SpectatePlayer_Delegate__Delegate; +//var delegate __USC_WatchFriend_Delegate__Delegate; +//var delegate __USC_PartyInvite_Delegate__Delegate; +//var delegate __USC_PartyKick_Delegate__Delegate; +//var delegate __USC_RemoveBlocked_Delegate__Delegate; +//var delegate __USC_AddPlayerNote_Delegate__Delegate; +//var delegate __USC_InviteFriendByString_Delegate__Delegate; +//var delegate __USC_BlockByString_Delegate__Delegate; +//var delegate __USC_InviteToClan_Delegate__Delegate; +//var delegate __USC_UpdateStatusMessage_Delegate__Delegate; +//var delegate __USC_ToggleDND_Delegate__Delegate; +//var delegate __USC_Resize_Delegate__Delegate; + +delegate USC_GetFriendsData_Delegate() +{ + //return; +} + +delegate USC_RemoveFriend_Delegate(int nPlayerId) +{ + //return; +} + +delegate USC_MessageFriend_Delegate(int nPlayerId, string sPlayerName) +{ + //return; +} + +delegate USC_SearchByString_Delegate(string PlayerName) +{ + //return; +} + +delegate USC_GetListData_Delegate(int nId) +{ + //return; +} + +delegate USC_InviteFriend_Delegate(int nPlayerId) +{ + //return; +} + +delegate USC_CancelInvite_Delegate(int nPlayerId) +{ + //return; +} + +delegate USC_AcceptClanInvite_Delegate(int nClanId) +{ + //return; +} + +delegate USC_CancelClanInvite_Delegate(int nClanId) +{ + //return; +} + +delegate USC_AcceptFriendRequest_Delegate(int nPlayerId) +{ + //return; +} + +delegate USC_AcceptAllFriendRequests_Delegate() +{ + //return; +} + +delegate USC_CancelFriendRequest_Delegate(int nPlayerId) +{ + //return; +} + +delegate USC_CancelAllFriendRequests_Delegate() +{ + //return; +} + +delegate USC_ViewPlayerProfile_Delegate(string sPlayerName) +{ + //return; +} + +delegate USC_ViewPlayerClan_Delegate() +{ + //return; +} + +delegate USC_SpectatePlayer_Delegate(int nPlayerId) +{ + //return; +} + +delegate USC_WatchFriend_Delegate(int nPlayerId) +{ + //return; +} + +delegate USC_PartyInvite_Delegate(int nPlayerId) +{ + //return; +} + +delegate USC_PartyKick_Delegate(int nPlayerId) +{ + //return; +} + +delegate USC_RemoveBlocked_Delegate(int nPlayerId) +{ + //return; +} + +delegate USC_AddPlayerNote_Delegate(int nPlayerId, string sPlayerNote) +{ + //return; +} + +delegate USC_InviteFriendByString_Delegate(string sPlayerName) +{ + //return; +} + +delegate USC_BlockByString_Delegate(string sPlayerName) +{ + //return; +} + +delegate USC_InviteToClan_Delegate(string sPlayerName) +{ + //return; +} + +delegate USC_UpdateStatusMessage_Delegate(string sStatus) +{ + //return; +} + +delegate USC_ToggleDND_Delegate() +{ + //return; +} + +delegate USC_Resize_Delegate(GFxObject pObj) +{ + //return; +} + +// Export UTgGfxFriendManagement::execUSC_GetFriendsData(FFrame&, void* const) +native function USC_GetFriendsData(); + +// Export UTgGfxFriendManagement::execUSC_RemoveFriend(FFrame&, void* const) +native function USC_RemoveFriend(int nPlayerId); + +// Export UTgGfxFriendManagement::execUSC_MessageFriend(FFrame&, void* const) +native function USC_MessageFriend(int nPlayerId, string sPlayerName); + +// Export UTgGfxFriendManagement::execUSC_SearchByString(FFrame&, void* const) +native function USC_SearchByString(string PlayerName); + +// Export UTgGfxFriendManagement::execUSC_GetListData(FFrame&, void* const) +native function USC_GetListData(int nId); + +// Export UTgGfxFriendManagement::execUSC_InviteFriend(FFrame&, void* const) +native function USC_InviteFriend(int nPlayerId); + +// Export UTgGfxFriendManagement::execUSC_CancelInvite(FFrame&, void* const) +native function USC_CancelInvite(int nPlayerId); + +// Export UTgGfxFriendManagement::execUSC_AcceptClanInvite(FFrame&, void* const) +native function USC_AcceptClanInvite(int nClanId); + +// Export UTgGfxFriendManagement::execUSC_CancelClanInvite(FFrame&, void* const) +native function USC_CancelClanInvite(int nClanId); + +// Export UTgGfxFriendManagement::execUSC_AcceptFriendRequest(FFrame&, void* const) +native function USC_AcceptFriendRequest(int nPlayerId); + +// Export UTgGfxFriendManagement::execUSC_AcceptAllFriendRequests(FFrame&, void* const) +native function USC_AcceptAllFriendRequests(); + +// Export UTgGfxFriendManagement::execUSC_CancelFriendRequest(FFrame&, void* const) +native function USC_CancelFriendRequest(int nPlayerId); + +// Export UTgGfxFriendManagement::execUSC_CancelAllFriendRequests(FFrame&, void* const) +native function USC_CancelAllFriendRequests(); + +// Export UTgGfxFriendManagement::execUSC_ViewPlayerProfile(FFrame&, void* const) +native function USC_ViewPlayerProfile(string sPlayerName); + +// Export UTgGfxFriendManagement::execUSC_ViewPlayerClan(FFrame&, void* const) +native function USC_ViewPlayerClan(); + +// Export UTgGfxFriendManagement::execUSC_SpectatePlayer(FFrame&, void* const) +native function USC_SpectatePlayer(int nPlayerId); + +// Export UTgGfxFriendManagement::execUSC_WatchFriend(FFrame&, void* const) +native function USC_WatchFriend(int nPlayerId); + +// Export UTgGfxFriendManagement::execUSC_PartyInvite(FFrame&, void* const) +native function USC_PartyInvite(int nPlayerId); + +// Export UTgGfxFriendManagement::execUSC_PartyKick(FFrame&, void* const) +native function USC_PartyKick(int nPlayerId); + +// Export UTgGfxFriendManagement::execUSC_RemoveBlocked(FFrame&, void* const) +native function USC_RemoveBlocked(int nPlayerId); + +// Export UTgGfxFriendManagement::execUSC_AddPlayerNote(FFrame&, void* const) +native function USC_AddPlayerNote(int nPlayerId, string sPlayerNote); + +// Export UTgGfxFriendManagement::execUSC_InviteFriendByString(FFrame&, void* const) +native function USC_InviteFriendByString(string sPlayerName); + +// Export UTgGfxFriendManagement::execUSC_BlockByString(FFrame&, void* const) +native function USC_BlockByString(string sPlayerName); + +// Export UTgGfxFriendManagement::execUSC_InviteToClan(FFrame&, void* const) +native function USC_InviteToClan(string sPlayerName); + +// Export UTgGfxFriendManagement::execUSC_UpdateStatusMessage(FFrame&, void* const) +native function USC_UpdateStatusMessage(string sStatus); + +// Export UTgGfxFriendManagement::execUSC_ToggleDND(FFrame&, void* const) +native function USC_ToggleDND(); + +// Export UTgGfxFriendManagement::execUSC_Resize(FFrame&, void* const) +native function USC_Resize(GFxObject pObj); + +final function ASC_ErrorFeedback(string ErrMsg) +{ + ActionScriptVoid("asc_errorFeedback"); + //return; +} + +event ErrorFeedback(string ErrMsg) +{ + ASC_ErrorFeedback(ErrMsg); + //return; +} + +final function ASC_Reinit() +{ + ActionScriptVoid("reinit"); + //return; +} + +event Reinit() +{ + ASC_Reinit(); + //return; +} diff --git a/exported/TgClient/Classes/TgGfxScene.uc b/exported/TgClient/Classes/TgGfxScene.uc new file mode 100755 index 00000000..ba27fa62 --- /dev/null +++ b/exported/TgClient/Classes/TgGfxScene.uc @@ -0,0 +1,479 @@ +class TgGfxScene extends GFxObject within GFxMoviePlayer + native(GFxScene); + +const UISCENE_NATIVE_WIDTH = 1920; +const UISCENE_NATIVE_HEIGHT = 1080; +const UI_AUTHORED_WIDTH = 1920; +const UI_AUTHORED_HEIGHT = 1080; + +enum GFXOPTION +{ + GFXOPTION_NONE, // 0 + GFXOPTION_BACK, // 1 + GFXOPTION_MENU, // 2 + GFXOPTION_APPLY, // 3 + GFXOPTION_LEAVEQUEUE, // 4 + GFXOPTION_SOCIAL, // 5 + GFXOPTION_SELECT, // 6 + GFXOPTION_ADDCARD, // 7 + GFXOPTION_REMOVECARD, // 8 + GFXOPTION_FILTER, // 9 + GFXOPTION_FILTERCHAMP, // 10 + GFXOPTION_ADDREMOVE, // 11 + GFXOPTION_CHAT, // 12 + GFXOPTION_CHANGEUSER, // 13 + GFXOPTION_CHANGETAB, // 14 + GFXOPTION_JOIN, // 15 + GFXOPTION_PREVIOUS, // 16 + GFXOPTION_NEXT, // 17 + GFXOPTION_ACCEPT, // 18 + GFXOPTION_CANCEL, // 19 + GFXOPTION_PURCHASE, // 20 + GFXOPTION_HOME, // 21 + GFXOPTION_PLAYAGAIN, // 22 + GFXOPTION_CREATEGAME, // 23 + GFXOPTION_LOGOUT, // 24 + GFXOPTION_UNLOCK, // 25 + GFXOPTION_LEADERBOARD, // 26 + GFXOPTION_TRADE, // 27 + GFXOPTION_PURCHASEGEMS, // 28 + GFXOPTION_MUTEPLAYER, // 29 + GFXOPTION_UNMUTEPLAYER, // 30 + GFXOPTION_REROLL_QUEST, // 31 + GFXOPTION_CLAIM_QUEST, // 32 + GFXOPTION_CHANGEEMAIL, // 33 + GFXOPTION_DECLINE, // 34 + GFXOPTION_VIEWPROFILE, // 35 + GFXOPTION_INVITE, // 36 + GFXOPTION_REGION, // 37 + GFXOPTION_CRAFT, // 38 + GFXOPTION_DISENCHANT, // 39 + GFXOPTION_REFRESH, // 40 + GFXOPTION_PLAYERS, // 41 + GFXOPTION_MASTERYDETAILS, // 42 + GFXOPTION_HOLDSELECT, // 43 + GFXOPTION_VIEWCHAMPIONS, // 44 + GFXOPTION_VIEWSKILLS, // 45 + GFXOPTION_PURCHASE_INGAME, // 46 + GFXOPTION_HOLDPURCHASE, // 47 + GFXOPTION_CLEAR, // 48 + GFXOPTION_PREVIEW, // 49 + GFXOPTION_UNLOCK_ANNPACK, // 50 + GFXOPTION_CHANGE_AUTOBUY, // 51 + GFXOPTION_DELETELOADOUT, // 52 + GFXOPTION_TOGGLETAB, // 53 + GFXOPTION_PLAY, // 54 + GFXOPTION_INFO, // 55 + GFXOPTION_CHANGE_TEAMS, // 56 + GFXOPTION_KICK, // 57 + GFXOPTION_MAX // 58 +}; + +enum GFXEVENT +{ + GFXEVENT_CLICK, // 0 + GFXEVENT_ROLLOVER, // 1 + GFXEVENT_ROLLOUT, // 2 + GFXEVENT_MAX // 3 +}; + +enum UIBACKGROUNDTYPE +{ + UIBT_NONE, // 0 + UIBT_MAIN, // 1 + UIBT_CHAMPION, // 2 + UIBT_DECKS, // 3 + UIBT_SOCIAL, // 4 + UIBT_PROFILE, // 5 + UIBT_LINE, // 6 + UIBT_PLAIN, // 7 + UIBT_MAX // 8 +}; + +enum UISNAPPINGTYPE +{ + UISNAPPING_NONE, // 0 + UISNAPPING_TOP, // 1 + UISNAPPING_BOT, // 2 + UISNAPPING_MAX // 3 +}; + +enum UIALIGNINGTYPE +{ + UIALIGNING_NONE, // 0 + UIALIGNING_LEFT, // 1 + UIALIGNING_RIGHT, // 2 + UIALIGNING_CENTER, // 3 + UIALIGNING_MAX // 4 +}; + +enum UISCALINGTYPE +{ + UISCALING_FITWIDE, // 0 + UISCALING_FITTALL, // 1 + UISCALING_OVERSIZE, // 2 + UISCALING_NONE, // 3 + UISCALING_MAX // 4 +}; + +enum UIDISPLAYTYPE +{ + UIDISPLAY_ALWAYS, // 0 + UIDISPLAY_MOUSE, // 1 + UIDISPLAY_PCONLY, // 2 + UIDISPLAY_CONSOLE, // 3 + UIDISPLAY_GAMEPAD, // 4 + UIDISPLAY_MAX // 5 +}; + +enum GFXFUNCTIONS +{ + GFXFUNC_NONE, // 0 + GFXFUNC_RESIZE, // 1 + GFXFUNC_CLASS, // 2 + GFXFUNC_ANIMATE, // 3 + GFXFUNC_SKIN, // 4 + GFXFUNC_INFO, // 5 + GFXFUNC_SKILL, // 6 + GFXFUNC_TOOLTIP_ITEM, // 7 + GFXFUNC_TOOLTIP_CLASS, // 8 + GFXFUNC_TOOLTIP_SKILL, // 9 + GFXFUNC_PURCHASE, // 10 + GFXFUNC_PREVIEW, // 11 + GFXFUNC_STAT, // 12 + GFXFUNC_RESET, // 13 + GFXFUNC_DETAILS, // 14 + GFXFUNC_JOIN, // 15 + GFXFUNC_LEAVE, // 16 + GFXFUNC_KIT, // 17 + GFXFUNC_ARMOR, // 18 + GFXFUNC_BACK, // 19 + GFXFUNC_EXIT, // 20 + GFXFUNC_SETTINGS, // 21 + GFXFUNC_MINIMIZE, // 22 + GFXFUNC_HOME, // 23 + GFXFUNC_PLAY, // 24 + GFXFUNC_STORE, // 25 + GFXFUNC_PROFILE, // 26 + GFXFUNC_MOUNT, // 27 + GFXFUNC_SPELL, // 28 + GFXFUNC_WEAPON, // 29 + GFXFUNC_ABILITY, // 30 + GFXFUNC_ENCHANT, // 31 + GFXFUNC_LEFT, // 32 + GFXFUNC_RIGHT, // 33 + GFXFUNC_SELECT, // 34 + GFXFUNC_GENERAL, // 35 + GFXFUNC_ADD, // 36 + GFXFUNC_SUB, // 37 + GFXFUNC_ADDSPELL, // 38 + GFXFUNC_ADDWEAPON, // 39 + GFXFUNC_ADDENCHANT, // 40 + GFXFUNC_CARD, // 41 + GFXFUNC_ADDCARD, // 42 + GFXFUNC_FRIEND, // 43 + GFXFUNC_ENEMY, // 44 + GFXFUNC_SAVE, // 45 + GFXFUNC_LOGIN, // 46 + GFXFUNC_ACCEPT, // 47 + GFXFUNC_DECLINE, // 48 + GFXFUNC_SUBMIT, // 49 + GFXFUNC_CANCEL, // 50 + GFXFUNC_TRAINING, // 51 + GFXFUNC_BATTLE, // 52 + GFXFUNC_GOLD, // 53 + GFXFUNC_SILVER, // 54 + GFXFUNC_FRIENDS, // 55 + GFXFUNC_ADD_FRIEND, // 56 + GFXFUNC_INVITE, // 57 + GFXFUNC_INVITE_ACCEPT, // 58 + GFXFUNC_INVITE_DECLINE, // 59 + GFXFUNC_PARTY, // 60 + GFXFUNC_REMOVE, // 61 + GFXFUNC_SCROLL, // 62 + GFXFUNC_OPTION, // 63 + GFXFUNC_KEY, // 64 + GFXFUNC_KEYALT, // 65 + GFXFUNC_KEYBIND, // 66 + GFXFUNC_CHAT, // 67 + GFXFUNC_BOOKNONE, // 68 + GFXFUNC_BOOKSLOT, // 69 + GFXFUNC_CARDSLOT, // 70 + GFXFUNC_PREVIOUS, // 71 + GFXFUNC_NEXT, // 72 + GFXFUNC_ITEM, // 73 + GFXFUNC_SELECT_REGION, // 74 + GFXFUNC_PLAYER, // 75 + GFXFUNC_SEARCH, // 76 + GFXFUNC_RESULT, // 77 + GFXFUNC_UPGRADE, // 78 + GFXFUNC_ADDENEMY, // 79 + GFXFUNC_ADDFRIEND, // 80 + GFXFUNC_REPORTENEMY, // 81 + GFXFUNC_REPORTFRIEND, // 82 + GFXFUNC_CHANGE, // 83 + GFXFUNC_CREATE, // 84 + GFXFUNC_CREATEGAME, // 85 + GFXFUNC_HEAD, // 86 + GFXFUNC_IMPORT, // 87 + GFXFUNC_CONFIRM, // 88 + GFXFUNC_INPUT, // 89 + GFXFUNC_ROTATE, // 90 + GFXFUNC_MAP, // 91 + GFXFUNC_TEAM, // 92 + GFXFUNC_CHANGETEAM, // 93 + GFXFUNC_REGION, // 94 + GFXFUNC_SPECTATE, // 95 + GFXFUNC_DRAFT, // 96 + GFXFUNC_BOOST, // 97 + GFXFUNC_EXCLUSIVE, // 98 + GFXFUNC_EXCLUSIVE_DETAILS, // 99 + GFXFUNC_CHEST, // 100 + GFXFUNC_CHESTSCROLL, // 101 + GFXFUNC_CHESTDETAILS, // 102 + GFXFUNC_CHESTPURCHASE, // 103 + GFXFUNC_CHESTBUYBOOSTER, // 104 + GFXFUNC_CHESTTOGGLEQUANTITY, // 105 + GFXFUNC_CHESTPICKQUANTITY, // 106 + GFXFUNC_PURCHASEGEMS, // 107 + GFXFUNC_VIEWGAMEPAD, // 108 + GFXFUNC_SHOWFILTER, // 109 + GFXFUNC_CLEARFILTER, // 110 + GFXFUNC_FILTER_RARITY, // 111 + GFXFUNC_FILTER_OPTIONS, // 112 + GFXFUNC_SELECT_PREVIOUS_SORT, // 113 + GFXFUNC_SELECT_NEXT_SORT, // 114 + GFXFUNC_SHOW_QUESTS, // 115 + GFXFUNC_DISCARD_QUEST_POPUP, // 116 + GFXFUNC_DISCARD_QUEST, // 117 + GFXFUNC_REROLL_QUEST, // 118 + GFXFUNC_HOVER, // 119 + GFXFUNC_CLAIM_QUEST, // 120 + GFXFUNC_REFER, // 121 + GFXFUNC_TOGGLEMUTE, // 122 + GFXFUNC_EQUIP, // 123 + GFXFUNC_INTERACTABLE, // 124 + GFXFUNC_INTERACTABLE_SCROLL, // 125 + GFXFUNC_TALENT, // 126 + GFXFUNC_SLIDER, // 127 + GFXFUNC_TAB, // 128 + GFXFUNC_CLEAR_ALL, // 129 + GFXFUNC_CLEAR_ITEM, // 130 + GFXFUNC_CLEAR_CATEGORY, // 131 + GFXFUNC_GOTO, // 132 + GFXFUNC_EQUIPALL, // 133 + GFXFUNC_CLOSE, // 134 + GFXFUNC_MAX // 135 +}; + +enum GamepadKeys +{ + GAMEPAD_NONE, // 0 + GAMEPAD_BUTTON_A, // 1 + GAMEPAD_BUTTON_B, // 2 + GAMEPAD_BUTTON_X, // 3 + GAMEPAD_BUTTON_Y, // 4 + GAMEPAD_BUTTON_MENU, // 5 + GAMEPAD_BUTTON_LB, // 6 + GAMEPAD_BUTTON_RB, // 7 + GAMEPAD_BUTTON_LT, // 8 + GAMEPAD_BUTTON_RT, // 9 + GAMEPAD_BUTTON_BUMPERS, // 10 + GAMEPAD_BUTTON_L_STICK, // 11 + GAMEPAD_BUTTON_R_STICK, // 12 + GAMEPAD_BUTTON_DPAD_UNPRESSED, // 13 + GAMEPAD_BUTTON_DPAD_DOWN, // 14 + GAMEPAD_BUTTON_DPAD_LEFT, // 15 + GAMEPAD_BUTTON_DPAD_RIGHT, // 16 + GAMEPAD_BUTTON_DPAD_UP, // 17 + GAMEPAD_BUTTON_VIEW, // 18 + GAMEPAD_BUTTON_L_STICK_ALL_AXIS,// 19 + GAMEPAD_BUTTON_L_STICK_X_AXIS, // 20 + GAMEPAD_BUTTON_L_STICK_Y_AXIS, // 21 + GAMEPAD_BUTTON_R_STICK_ALL_AXIS,// 22 + GAMEPAD_BUTTON_R_STICK_X_AXIS, // 23 + GAMEPAD_BUTTON_R_STICK_Y_AXIS, // 24 + GAMEPAD_MAX // 25 +}; + +enum LobbyEvent +{ + LOBBY_EVENT_ENTER_QUEUE, // 0 + LOBBY_EVENT_CHAMPION_LOCKED_IN, // 1 + LOBBY_EVENT_EVERYONE_LOCKED_IN, // 2 + LOBBY_EVENT_REENTER_LOBBY, // 3 + LOBBY_EVENT_MAX // 4 +}; + +struct native UIDisplayData +{ + var byte eType; + var GFxObject pObj; + + structdefaultproperties + { + eType=0 + pObj=none + } +}; + +struct native UIITEM_CLIP +{ + var GFxObject pObj; + var GFxObject pSelected; + var GFxObject pButton; + var GFxObject pSaleBanner; + + structdefaultproperties + { + pObj=none + pSelected=none + pButton=none + pSaleBanner=none + } +}; + +var Class m_UISceneClass; +var UIScene m_UIScene; +var array m_OptionList; +var array m_DisplayData; +var array m_Blockers; +var array m_Groups; +var array m_Prompts; +var TgGfxScene.UIALIGNINGTYPE m_ePromptAlignment; +var TgGfxScene.UISCALINGTYPE m_eScalingType; +var TgGfxScene.UISNAPPINGTYPE m_eSnappingType; +var TgGfxScene.UIALIGNINGTYPE m_eAligningType; +var float m_fPromptOffsetX; +var int m_nHighlight; +var int m_nSelectCount; +var int m_nBackground; +var bool m_bBlur; +var bool m_bBlurForeground; +var bool m_bReshow; +var bool m_bHidden; +var bool m_bDisable; +var bool m_bInitData; +var bool m_bVisibleOnLoad; +var bool m_bResetFocusOnShow; +var bool m_bResetHeaderFocusOnShow; +var bool m_bResize; +var bool m_bIsPopup; +var bool m_bDead; +var bool m_bAlwaysTick; +var bool m_bAcceptsInput; +var bool m_bAllowSpectatorClickThru; +var bool m_bShowCursor; +var bool m_bCaptureKeys; +var bool m_bIsOnline; +var bool m_bPushesSceneFromSubscenes; +var bool m_bCanShake; +var bool m_bShouldShake; +var bool m_bAlwaysKeepOpen; +var bool m_bAllowMultipleOnStack; +var bool m_bAllowLeaveQueueKey; +var float m_fScaling; +var float m_fScale; +var float m_fDeltaTime; +var Vector2D m_CachedPosition; +var string m_Name; +var AkBaseSoundObject m_scShown; +var AkBaseSoundObject m_scHighlight; +var int m_nEventFunc; +var int m_nEventType; +var int m_nEventIndex; +var GFxObject m_pFocus; +var TgGameDataHandler m_pData; +var UIGameMoviePlayer m_pMovie; +var UIDataManager m_pUIData; +var GFxObject m_mcHeaderBumper[2]; +var TgGFxGroup m_grHeader; +var array m_nFocusedGroupStack; +//var delegate __DelegateEvent__Delegate; + +delegate DelegateEvent(GFxObject pObj, int nEvent) +{ + //return; +} + +// Export UTgGfxScene::execReceiveEvent(FFrame&, void* const) +native function ReceiveEvent(GFxObject pObj, int nEvent); + +final event Focus(GFxObject pObj) +{ + ActionScriptVoid("Focus"); + //return; +} + +final event Rollover(GFxObject pObj) +{ + ActionScriptVoid("Rollover"); + //return; +} + +final event Rollout(GFxObject pObj) +{ + ActionScriptVoid("Rollout"); + //return; +} + +final event Click(GFxObject pObj) +{ + ActionScriptVoid("Click"); + //return; +} + +// Export UTgGfxScene::execAnimate(FFrame&, void* const) +native function Animate(GFxObject pObj, float fTime, UIComponent.UIANIMTYPE eType, float fValue, optional float fDelay = 0.0000000, optional byte eQuad = 1, optional bool bEndCurrentAnim = true); + +// Export UTgGfxScene::execCancelAnim(FFrame&, void* const) +native function CancelAnim(GFxObject pObj); + +// Export UTgGfxScene::execEndAnim(FFrame&, void* const) +native function EndAnim(GFxObject pObj, UIComponent.UIANIMTYPE eType); + +// Export UTgGfxScene::execIsAnimating(FFrame&, void* const) +native function bool IsAnimating(GFxObject pObj); + +// Export UTgGfxScene::execIsAnimatingType(FFrame&, void* const) +native function bool IsAnimatingType(GFxObject pObj, UIComponent.UIANIMTYPE eType); + +// Export UTgGfxScene::execFadeIn(FFrame&, void* const) +native function FadeIn(GFxObject pObj, optional float fTime = 0.1000000, optional float fDelay = 0.0000000); + +// Export UTgGfxScene::execFadeOut(FFrame&, void* const) +native function FadeOut(GFxObject pObj, optional float fTime = 0.1000000, optional float fDelay = 0.0000000); + +// Export UTgGfxScene::execHighlight(FFrame&, void* const) +native function Highlight(GFxObject pObj, bool bShow, optional float fTime = 0.1000000); + +// Export UTgGfxScene::execSlamInAnim(FFrame&, void* const) +native function SlamInAnim(GFxObject pObj, optional float fDelay = 0.0000000); + +// Export UTgGfxScene::execSlamOutAnim(FFrame&, void* const) +native function SlamOutAnim(GFxObject pObj, optional float fDelay = 0.0000000); + +event HandleAnimState(int nAnimState, optional int nAnimGroup = 0) +{ + //return; +} + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene' + m_ePromptAlignment=UIALIGNINGTYPE.UIALIGNING_CENTER + m_nHighlight=-1 + m_bInitData=true + m_bResetHeaderFocusOnShow=true + m_bResize=true + m_bAcceptsInput=true + m_bAllowSpectatorClickThru=true + m_bShowCursor=true + m_bCaptureKeys=true + m_bAllowMultipleOnStack=true + m_bAllowLeaveQueueKey=true + m_fScaling=1.0000000 + m_CachedPosition=(X=-1.0000000,Y=-1.0000000) + m_scShown=AkEvent'WW_UI_Default.UI_Menu_Panel_SlideIn_Play' + m_scHighlight=AkEvent'WW_UI_Default.UI_Menu_Checkbox_Off_Play' +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgGfxTeamInvite.uc b/exported/TgClient/Classes/TgGfxTeamInvite.uc new file mode 100755 index 00000000..98111743 --- /dev/null +++ b/exported/TgClient/Classes/TgGfxTeamInvite.uc @@ -0,0 +1,24 @@ +class TgGfxTeamInvite extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIINVITE_BUTTONS = 2; +const UIINVITE_INVITESPAM_PERIOD = 2.6; +const UIINVITE_INVITECOUNTER_MAXLEN = 64; + +var int m_nQueue; +var float m_fTimerWidth; +var float m_fTimeoutTime; +var float m_fTimeoutTimer; +var GFxObject m_mcTimer; +var GFxObject m_mcSubtitle; +var GFxObject m_mcButton[2]; +var native map{VOID,VOID} m_fInviteTimestamps; + +defaultproperties +{ + m_fTimeoutTime=30.0000000 + m_UISceneClass=Class'TgClient.UIScene_SceneAsPopup' + m_bBlur=true + m_bIsPopup=true + m_Name="UITeamInvite" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgLobbyHUD.uc b/exported/TgClient/Classes/TgLobbyHUD.uc new file mode 100755 index 00000000..103d03e0 --- /dev/null +++ b/exported/TgClient/Classes/TgLobbyHUD.uc @@ -0,0 +1,264 @@ +class TgLobbyHUD extends TgClientHUD + transient + native(LobbyUI) + config(Game) + hidecategories(Navigation); + +const LOBBY_PLAYERS_PER_TEAM = 10; + +enum LobbyHudState +{ + LHS_None, // 0 + LHS_Offline, // 1 + LHS_Lobby, // 2 + LHS_Match, // 3 + LHS_Summary, // 4 + LHS_MAX // 5 +}; + +enum UIHeaderState +{ + UIHS_NONE, // 0 + UIHS_HOME, // 1 + UIHS_PLAY, // 2 + UIHS_SHOP, // 3 + UIHS_CARD, // 4 + UIHS_MAX // 5 +}; + +enum UIMapFrame +{ + UIMF_NONE, // 0 + UIMF_ENCHANTED_FOREST, // 1 + UIMF_TEMPLE_RUINS, // 2 + UIMF_OUTPOST, // 3 + UIMF_GLACIER_KEEP, // 4 + UIMF_SERPENT_TEMPLE, // 5 + UIMF_SINISTRAL, // 6 + UIMF_ARENA, // 7 + UIMF_DEATHGATE, // 8 + UIMF_DISTRICT, // 9 + UIMF_GLACIER_KEEP_V2, // 10 + UIMF_MAX // 11 +}; + +struct native LobbyTransitionPlayer +{ + var int nClassId; + var init string sPlayerName; + var init string sClassName; + + structdefaultproperties + { + nClassId=0 + sPlayerName="" + sClassName="" + } +}; + +struct native LobbyTransitionData +{ + var LobbyTransitionPlayer FriendlyTeam[10]; + var LobbyTransitionPlayer EnemyTeam[10]; + + structdefaultproperties + { + FriendlyTeam[0]=(nClassId=0,sPlayerName="",sClassName="") + FriendlyTeam[1]=(nClassId=0,sPlayerName="",sClassName="") + FriendlyTeam[2]=(nClassId=0,sPlayerName="",sClassName="") + FriendlyTeam[3]=(nClassId=0,sPlayerName="",sClassName="") + FriendlyTeam[4]=(nClassId=0,sPlayerName="",sClassName="") + FriendlyTeam[5]=(nClassId=0,sPlayerName="",sClassName="") + FriendlyTeam[6]=(nClassId=0,sPlayerName="",sClassName="") + FriendlyTeam[7]=(nClassId=0,sPlayerName="",sClassName="") + FriendlyTeam[8]=(nClassId=0,sPlayerName="",sClassName="") + FriendlyTeam[9]=(nClassId=0,sPlayerName="",sClassName="") + EnemyTeam[0]=(nClassId=0,sPlayerName="",sClassName="") + EnemyTeam[1]=(nClassId=0,sPlayerName="",sClassName="") + EnemyTeam[2]=(nClassId=0,sPlayerName="",sClassName="") + EnemyTeam[3]=(nClassId=0,sPlayerName="",sClassName="") + EnemyTeam[4]=(nClassId=0,sPlayerName="",sClassName="") + EnemyTeam[5]=(nClassId=0,sPlayerName="",sClassName="") + EnemyTeam[6]=(nClassId=0,sPlayerName="",sClassName="") + EnemyTeam[7]=(nClassId=0,sPlayerName="",sClassName="") + EnemyTeam[8]=(nClassId=0,sPlayerName="",sClassName="") + EnemyTeam[9]=(nClassId=0,sPlayerName="",sClassName="") + } +}; + +var int m_nQueue; +var int m_nQueueState; +var int m_nLobbyState; +var int m_nPlayerState; +var int m_nModelPose; +var int m_nModelSkin; +var int m_nModelHead; +var int m_nModelClass; +var int m_nModelDevice; +var int m_nModelDeviceSkin; +var bool m_bJoiningTraining; +var TgLobbyCamera c_CurrentCamera; +var array m_sAdditionalNeededScenes; +var globalconfig array m_CTAItemIds; +var globalconfig string m_PlayerCTAName; +var TgSkeletalMeshActor_Pedestal m_FrontLinePedestalMeshActor; +var TgSkeletalMeshActor_Pedestal m_FlankPedestalMeshActor; +var TgSkeletalMeshActor_Pedestal m_SupportPedestalMeshActor; +var TgSkeletalMeshActor_Pedestal m_DamagerPedestalMeshActor; + +// Export UTgLobbyHUD::execIsEulaSigned(FFrame&, void* const) +native function bool IsEulaSigned(); + +// Export UTgLobbyHUD::execHaveEOMLobbyData(FFrame&, void* const) +native function bool HaveEOMLobbyData(); + +// Export UTgLobbyHUD::execSetUpEOMLobby(FFrame&, void* const) +native function SetUpEOMLobby(); + +// Export UTgLobbyHUD::execChangeClassModel(FFrame&, void* const) +native exec function ChangeClassModel(int nClassId, int nSkinId, int nHeadId, int nDeviceId, int nDeviceSkinId, int nPedestalSkinId, TgSkeletalMeshActor_Loader.LobbyAnimPose pose, optional TgCameraModifier_LobbyCameraTransition.CameraTransType camDirection = 1, optional bool bAsync = true, optional TgObject.EModelHighlightType HighlightType = 0, optional int MVPDeviceId); + +// Export UTgLobbyHUD::execRotateModel(FFrame&, void* const) +native exec function bool RotateModel(float fValue); + +// Export UTgLobbyHUD::execChangeTeamModel(FFrame&, void* const) +native exec function ChangeTeamModel(bool bFriendly, int nIndex, int nClassId, int nSkinId, int nHeadId, int nDeviceId, int nDeviceSkinId, int nPedestalSkinId, TgSkeletalMeshActor_Loader.LobbyAnimPose pose, optional bool bAsync = true, optional TgObject.EModelHighlightType HighlightType = 0, optional int MVPDeviceId, optional int nCharacterXP = -1, optional delegate MeshUpdatedDelegate); + +// Export UTgLobbyHUD::execSwitchToCamera(FFrame&, void* const) +native exec function TgLobbyCamera SwitchToCamera(TgLobbyCamera.ELobbyCameraTag CamTag, optional TgCameraModifier_LobbyCameraTransition.CameraTransType camDirection = 1, optional bool bForce = false, optional ViewTargetTransitionParams BlendParams); + +// Export UTgLobbyHUD::execDisplayCharacter(FFrame&, void* const) +native function DisplayCharacter(); + +// Export UTgLobbyHUD::execTriggerLazyPrecache(FFrame&, void* const) +native function TriggerLazyPrecache(); + +// Export UTgLobbyHUD::execTryPushScene(FFrame&, void* const) +native function TryPushScene(string sName, optional bool bSkipPrivilegeCheck = false); + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + SetTimer(1.0000000, false, 'TriggerLazyPrecache'); + // End:0x8C + if(!WorldInfo.IsPlayInEditor()) + { + PlayerOwner.ClientSetCameraFade(true, MakeColor(0, 0, 0), vect2d(1.0000000, 1.0000000), 2.0000000); + } + //return; +} + +exec function SwitchToCards(bool bEnabled) +{ + ((bEnabled) ? SwitchToCamera(9, 0, true) : SwitchToCamera(1, 0, true)); + //return; +} + +exec function ChangeModel(int BotId, int SkinId, int HeadId, int DeviceID, int DeviceSkinId, int PedestalSkinId, optional byte pose = 0, optional TgLobbyCamera.ELobbyCameraTag CameraTag = 1, optional float BlendTime, optional Camera.EViewTargetBlendFunction BlendFunction, optional float BlendExp, optional TgObject.EModelHighlightType HighlightType, optional int MVPDeviceId) +{ + local ViewTargetTransitionParams BlendParams; + + BlendParams.BlendTime = BlendTime; + BlendParams.BlendExp = BlendExp; + BlendParams.BlendFunction = BlendFunction; + BlendParams.bLockOutgoing = true; + SwitchToCamera(CameraTag, 0, true, BlendParams); + ChangeClassModel(BotId, SkinId, HeadId, DeviceID, DeviceSkinId, PedestalSkinId, pose,,, HighlightType, MVPDeviceId); + //return; +} + +exec function PlayEmote(int nDeviceId) +{ + // End:0x4C + if(c_CurrentCamera != none) + { + c_CurrentCamera.m_ViewTarget.PlayEmote(nDeviceId); + } + //return; +} + +exec function StopEmote() +{ + // End:0x43 + if(c_CurrentCamera != none) + { + c_CurrentCamera.m_ViewTarget.StopEmote(); + } + //return; +} + +exec function PlayMVP(int nDeviceId) +{ + // End:0x4D + if(c_CurrentCamera != none) + { + c_CurrentCamera.m_ViewTarget.PlayMVP(nDeviceId, false); + } + //return; +} + +exec function StopMVP() +{ + // End:0x43 + if(c_CurrentCamera != none) + { + c_CurrentCamera.m_ViewTarget.StopMVP(); + } + //return; +} + +// Export UTgLobbyHUD::execChangePedestalModel(FFrame&, void* const) +native exec function ChangePedestalModel(TgObject.EPedestalType PedestalType, int BotId, int SkinId, int HeadId, int DeviceID, int DeviceSkinId, optional int MVPId, optional int CharacterMastery = -1); + +defaultproperties +{ + m_ScenePreloads[0]=(nDepth=0,sName="UIBackground",sPath="..\\Background\\Background.swf") + m_ScenePreloads[1]=(nDepth=9,sName="UIStoreDetail",sPath="..\\Store\\StoreDetail.swf") + m_ScenePreloads[2]=(nDepth=10,sName="UIHome",sPath="..\\Home\\Home.swf") + m_ScenePreloads[3]=(nDepth=11,sName="UIStore",sPath="..\\Store\\Store.swf") + m_ScenePreloads[4]=(nDepth=13,sName="UIPlay",sPath="..\\Play\\Play.swf") + m_ScenePreloads[5]=(nDepth=14,sName="UIChests",sPath="..\\Vault\\Chests.swf") + m_ScenePreloads[6]=(nDepth=15,sName="UIMatchLobby",sPath="..\\Lobby\\MatchLobby.swf") + m_ScenePreloads[7]=(nDepth=16,sName="UIProfile",sPath="..\\Profile\\Profile.swf") + m_ScenePreloads[8]=(nDepth=17,sName="UILeaderboard",sPath="..\\Profile\\Leaderboard.swf") + m_ScenePreloads[9]=(nDepth=18,sName="UICustomGame",sPath="..\\Play\\CustomGame.swf") + m_ScenePreloads[10]=(nDepth=19,sName="UISocial",sPath="..\\Social\\Social.swf") + m_ScenePreloads[11]=(nDepth=20,sName="UIEndOfMatchLobby",sPath="..\\Lobby\\EndOfMatchLobby.swf") + m_ScenePreloads[12]=(nDepth=21,sName="UIQuests",sPath="..\\Rewards\\Quests.swf") + m_ScenePreloads[13]=(nDepth=22,sName="UICompetitive",sPath="..\\Competitive\\Competitive.swf") + m_ScenePreloads[14]=(nDepth=110,sName="UIChampion",sPath="..\\Champion\\Champion.swf") + m_ScenePreloads[15]=(nDepth=111,sName="UIChampionSelect",sPath="..\\Champion\\ChampionSelect.swf") + m_ScenePreloads[16]=(nDepth=202,sName="UISkills",sPath="..\\Skills\\Skills.swf") + m_ScenePreloads[17]=(nDepth=206,sName="UITeamInvite",sPath="..\\TeamInvite\\TeamInvite.swf") + m_ScenePreloads[18]=(nDepth=207,sName="UIFade",sPath="..\\Transition\\UIFade.swf") + m_ScenePreloads[19]=(nDepth=209,sName="UILogin",sPath="..\\Login\\login.swf") + m_ScenePreloads[20]=(nDepth=211,sName="UISettings",sPath="..\\SettingsMenu\\SettingsMenu.swf") + m_ScenePreloads[21]=(nDepth=213,sName="UIAchievementPopups",sPath="..\\Popup\\AchievementPopups.swf") + m_ScenePreloads[22]=(nDepth=214,sName="UIPopupPartyManager",sPath="..\\Popup\\PopupPartyManager.swf") + m_ScenePreloads[23]=(nDepth=215,sName="UIAcquisition",sPath="..\\Acquisition\\Acquisition.swf") + m_ScenePreloads[24]=(nDepth=250,sName="UIFooter",sPath="..\\Footer\\Footer.swf") + m_ScenePreloads[25]=(nDepth=251,sName="UILobbyChat",sPath="..\\LobbyChat\\LobbyChat.swf") + m_ScenePreloads[26]=(nDepth=252,sName="UIProfileMini",sPath="..\\ProfileMini\\ProfileMini.swf") + m_ScenePreloads[27]=(nDepth=253,sName="UIPurchaseGems",sPath="..\\Store\\PurchaseGems.swf") + m_ScenePreloads[28]=(nDepth=254,sName="UIHeader",sPath="..\\Header\\Header.swf") + m_ScenePreloads[29]=(nDepth=300,sName="UINotificationCenter",sPath="..\\NotificationCenter\\NotificationCenter.swf") + m_ScenePreloads[30]=(nDepth=301,sName="UIAccountLinkPopup",sPath="..\\Popup\\AccountLinkPopup.swf") + m_ScenePreloads[31]=(nDepth=302,sName="UIDailyReward",sPath="..\\DailyReward\\DailyReward.swf") + m_ScenePreloads[32]=(nDepth=304,sName="UIPopup",sPath="..\\Popup\\Popup.swf") + m_ScenePreloads[33]=(nDepth=305,sName="UIFullscreenPopup",sPath="..\\Popup\\FullscreenPopup.swf") + m_ScenePreloads[34]=(nDepth=306,sName="UIInputPopup",sPath="..\\Popup\\InputPopup.swf") + m_ScenePreloads[35]=(nDepth=307,sName="UIPopupCrafting",sPath="..\\Popup\\PopupCraftingConfirm.swf") + m_ScenePreloads[36]=(nDepth=308,sName="UICompetitivePopupWelcome",sPath="..\\Competitive\\CompetitivePopupWelcome.swf") + m_ScenePreloads[37]=(nDepth=309,sName="UICompetitiveRankedDecay",sPath="..\\Competitive\\CompetitivePopupRankDecay.swf") + m_ScenePreloads[38]=(nDepth=310,sName="UICompetitiveRankChange",sPath="..\\Competitive\\CompetitivePopupRankChange.swf") + m_ScenePreloads[39]=(nDepth=311,sName="UIWebBrowser",sPath="..\\WebBrowser\\WebBrowser.swf") + m_ScenePreloads[40]=(nDepth=312,sName="UIMatchInvite",sPath="..\\MatchInvite\\MatchInvite.swf") + m_ScenePreloads[41]=(nDepth=400,sName="UISafeFrame",sPath="..\\SafeFrame\\UISafeFrame.swf") + m_bShowCursor=true + m_bCaptureKeys=true + // Reference: PComPictureInPicture'TgClient.Default__TgLobbyHUD.PictureInPicture' + // Archetype: PComPictureInPicture'TgClient.Default__TgClientHUD.PictureInPicture' + begin object name="PictureInPicture" + end object + m_PictureInPicture=PictureInPicture +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgMiniMap.uc b/exported/TgClient/Classes/TgMiniMap.uc new file mode 100755 index 00000000..bcc3393a --- /dev/null +++ b/exported/TgClient/Classes/TgMiniMap.uc @@ -0,0 +1,327 @@ +class TgMiniMap extends Object + native(GameUI); + +const TG_MAX_TOTAL_PING = 10; + +enum TgMapOrientation +{ + TMO_NORMAL, // 0 + TMO_ROTATE_180, // 1 + TMO_MAX // 2 +}; + +enum MiniMapIconLayer +{ + MMap_Layer_Enemy_Deployable, // 0 + MMap_Layer_Friendly_Deployable, // 1 + MMap_Layer_Enemy_Bot, // 2 + MMap_Layer_Friendly_Bot, // 3 + MMap_Layer_Enemy_Player, // 4 + MMap_Layer_Friendly_Player, // 5 + MMap_Layer_Neutral_Factory, // 6 + MMap_Layer_Friendly_Factory, // 7 + MMap_Layer_Enemy_Factory, // 8 + MMap_Layer_Neutral_CapturePoint,// 9 + MMap_Layer_Enemy_CapturePoint, // 10 + MMap_Layer_Friendly_CapturePoint,// 11 + MMap_Layer_Targeting, // 12 + MMap_Layer_Local_Player_Pet, // 13 + MMap_Layer_Local_Player, // 14 + MMap_Layer_MAX // 15 +}; + +enum MiniMapPortalLayer +{ + MMap_Portal_Layer_Enemy, // 0 + MMap_Portal_Layer_Friendly, // 1 + MMap_Portal_Layer_MAX // 2 +}; + +enum MinimapDisplayType +{ + MDT_Friendly, // 0 + MDT_Enemy, // 1 + MDT_FriendlyCB, // 2 + MDT_EnemyCB, // 3 + MDT_Neutral, // 4 + MDT_Pending, // 5 + MDT_MAX // 6 +}; + +struct native FogMaskData +{ + var int nSize; + var int nMapDrawLocationX; + var int nMapDrawLocationY; + var bool bLocationChanged; + var bool bVisionRangeChanged; + var native const transient BitArray_Mirror m_MaskPoints; + + structdefaultproperties + { + nSize=0 + nMapDrawLocationX=0 + nMapDrawLocationY=0 + bLocationChanged=false + bVisionRangeChanged=false + } +}; + +struct native MiniMapEntity +{ + var Vector vLocation; + var TgObject.MiniMapEntityType eType; + var int nSubType; + var int nProfileId; + var TgObject.TgMapTeam Team; + var int nVisionRange; + var bool bIsDead; + var ReplicationInfo RepInfo; + var int GenericState; + var int nIdx; + var bool bMarked; + var bool bVisibleOnMap; + var bool bValidTarget; + var bool bHovered; + var bool bFlashHighlight; + var bool bVisible; + var float fAlpha; + var float fHealthPCT; + var MaterialInstanceConstant MIC; + var bool bHasNoIcon; + var int nDrawSize; + var int nHitSize; + var Vector vRect; + var FogMaskData FogMaskData; + + structdefaultproperties + { + vLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + eType=MiniMapEntityType.MMap_LocalSpectator + nSubType=0 + nProfileId=0 + Team=TgMapTeam.MAPTEAM_1 + nVisionRange=0 + bIsDead=false + RepInfo=none + GenericState=0 + nIdx=0 + bMarked=false + bVisibleOnMap=false + bValidTarget=false + bHovered=false + bFlashHighlight=false + bVisible=false + fAlpha=0.0000000 + fHealthPCT=0.0000000 + MIC=none + bHasNoIcon=false + nDrawSize=0 + nHitSize=0 + vRect=(X=0.0000000,Y=0.0000000,Z=0.0000000) + FogMaskData=(nSize=0,nMapDrawLocationX=0,nMapDrawLocationY=0,bLocationChanged=false,bVisionRangeChanged=false) + } +}; + +struct native MiniMapPingInfo +{ + var float fServerStartTime; + var float fClientStartTime; + var TgRepInfo_Player pingedPri; + var Vector vPingedLoc; + var bool bIsPinging; + var TgObject.PING_TYPE eType; + var int nIconSize; + var MaterialInstanceConstant pingMIC; + var TgRepInfo_Player sourcePRI; + var int SourceIndex; + var Vector vSourceWorldLocation; + + structdefaultproperties + { + fServerStartTime=0.0000000 + fClientStartTime=0.0000000 + pingedPri=none + vPingedLoc=(X=0.0000000,Y=0.0000000,Z=0.0000000) + bIsPinging=false + eType=PING_TYPE.PT_NORMAL + nIconSize=0 + pingMIC=none + sourcePRI=none + SourceIndex=0 + vSourceWorldLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct native BuffMonsterMIC +{ + var MaterialInstanceConstant SpawnedMIC; + var MaterialInstanceConstant DroppedMIC; + var MaterialInstanceConstant TimerMIC; + + structdefaultproperties + { + SpawnedMIC=none + DroppedMIC=none + TimerMIC=none + } +}; + +struct native LayerIndex +{ + var init array Entries; + + structdefaultproperties + { + Entries=none + } +}; + +var int m_nMiniMapMode; +var bool m_bShouldDisplayMiniMap; +var bool m_bHasMiniMapTexture; +var bool m_bRequiresLOS; +var bool m_bUseFlashSizing; +var bool m_bSpectating; +var float m_fLastUpdateTime; +var MaterialInstanceConstant m_MiniMapBaseMIC; +var MaterialInstanceConstant m_MiniMapMIC; +var Texture2DDynamic m_DynamicMask; +var int m_nMaskSize; +var float m_fIconScale; +var Vector2D m_vMapLocation; +var int m_nMapSize; +var native const transient Pointer m_MiniMapRender; +var TgPlayerController m_OwnerPC; +var int m_nWorldMapSize; +var MaterialInstanceConstant m_MICPinging; +var MaterialInstanceConstant m_MICPingingEnemy; +var MaterialInstanceConstant m_MICRetreat; +var MaterialInstanceConstant m_MICRetreatEnemy; +var MaterialInstanceConstant m_MICAlert; +var MaterialInstanceConstant m_MICAlertEnemy; +var MaterialInstanceConstant m_MICAlertSilent; +var MaterialInstanceConstant m_MICLocalPlayer; +var MaterialInstanceConstant m_MICLocalSpectator; +var array m_TextureRefs; +var MaterialInstanceConstant m_MICPlayer[MinimapDisplayType]; +var MaterialInstanceConstant m_MICMinion[MinimapDisplayType]; +var MaterialInstanceConstant m_MICTower[MinimapDisplayType]; +var MaterialInstanceConstant m_MICTitan[MinimapDisplayType]; +var MaterialInstanceConstant m_MICPhoenix[MinimapDisplayType]; +var MaterialInstanceConstant m_MICCapturePoint[MinimapDisplayType]; +var MaterialInstanceConstant m_MICLanePusher[MinimapDisplayType]; +var MaterialInstanceConstant m_MICTowerOlympus[TgMapTeam]; +var MaterialInstanceConstant m_MICTitanOlympus[MinimapDisplayType]; +var MaterialInstanceConstant m_MICPhoenixOlympus[TgMapTeam]; +var MaterialInstanceConstant m_MICMonster; +var LinearColor m_PortalLinkColor[MinimapDisplayType]; +var BuffMonsterMIC m_MICBuffMonster[MinimapFactoryType]; +var MaterialInstanceConstant m_MICTowerDestroyed; +var MaterialInstanceConstant m_PlayerBackground[MinimapDisplayType]; +var MaterialInstanceConstant m_TowerAttackBackground[MinimapDisplayType]; +var native const map{VOID,VOID} m_IconMap; +var private native const transient BitArray_Mirror m_MaskPoints; +var TgMiniMap.TgMapOrientation m_Orientation; +var TgObject.TgMapTeam m_LocalTeam; +var TgGameHUD.TgClientVisibilityMode m_VisibilityMode; +var byte bUpdateCapturePoint[5]; +var private native const transient map{VOID,VOID} m_EntityMap; +var init array m_PortalLayeringIdx; +var init array m_LayeringIdx; +var array m_IndependentPings; + +// Export UTgMiniMap::execDraw(FFrame&, void* const) +native function Draw(Canvas theCanvas); + +// Export UTgMiniMap::execInit(FFrame&, void* const) +native function Init(TgPlayerController PC); + +// Export UTgMiniMap::execPingWorldLocation(FFrame&, void* const) +native function PingWorldLocation(Vector PingLocation, TgObject.PING_TYPE Pt); + +// Export UTgMiniMap::execShouldRender(FFrame&, void* const) +native function bool ShouldRender(); + +// Export UTgMiniMap::execPingMap(FFrame&, void* const) +native function PingMap(float X, float Y, TgObject.PING_TYPE Pt); + +// Export UTgMiniMap::execHoverMap(FFrame&, void* const) +native function HoverMap(float X, float Y); + +// Export UTgMiniMap::execClearHover(FFrame&, void* const) +native function ClearHover(); + +// Export UTgMiniMap::execMapToWorld(FFrame&, void* const) +native function Vector MapToWorld(Vector Loc); + +// Export UTgMiniMap::execWorldToMap(FFrame&, void* const) +native function Vector WorldToMap(Vector Loc); + +// Export UTgMiniMap::execGetRepInfosForLocation(FFrame&, void* const) +native function GetRepInfosForLocation(Vector mapLoc, out array repInfos); + +// Export UTgMiniMap::execVerifyMapLocation(FFrame&, void* const) +native function bool VerifyMapLocation(float X, float Y); + +// Export UTgMiniMap::execRemoveAllEntities(FFrame&, void* const) +native function RemoveAllEntities(); + +// Export UTgMiniMap::execClear(FFrame&, void* const) +native function Clear(); + +simulated function CreateMiniMapTexture() +{ + // End:0x4D + if(m_DynamicMask == none) + { + m_DynamicMask = Class'Engine.Texture2DDynamic'.static.Create(m_nMaskSize, m_nMaskSize, 2, false); + } + // End:0x9C + if(m_MiniMapMIC == none) + { + m_MiniMapMIC = new Class'Engine.MaterialInstanceConstant'; + m_MiniMapMIC.SetParent(m_MiniMapBaseMIC); + } + //return; +} + +simulated function UpdateMiniMapTexture() +{ + local Texture2D mmTexture; + + mmTexture = m_OwnerPC.WorldInfo.m_MiniMapTexture; + // End:0x8C + if(mmTexture != none) + { + // End:0x8C + if(m_MiniMapMIC != none) + { + m_MiniMapMIC.SetTextureParameterValue('MiniMapTexture', mmTexture); + } + } + m_bHasMiniMapTexture = mmTexture != none; + //return; +} + +simulated function UpdateMapSize(int newX) +{ + m_nMapSize = newX; + //return; +} + +simulated event bool CheckSpectatorState() +{ + return true; + //return ReturnValue; +} + +defaultproperties +{ + m_PortalLinkColor[0]=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + m_PortalLinkColor[1]=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + m_PortalLinkColor[2]=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + m_PortalLinkColor[3]=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + m_PortalLinkColor[4]=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + m_PortalLinkColor[5]=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgMiniMap_Targeting.uc b/exported/TgClient/Classes/TgMiniMap_Targeting.uc new file mode 100755 index 00000000..c99ee194 --- /dev/null +++ b/exported/TgClient/Classes/TgMiniMap_Targeting.uc @@ -0,0 +1,11 @@ +class TgMiniMap_Targeting extends TgMiniMap + native(GameUI); + +var MaterialInstanceConstant m_MICWardTarget[MinimapDisplayType]; + +defaultproperties +{ + m_bShouldDisplayMiniMap=true + m_nMaskSize=256 + m_fIconScale=1.5000000 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgPartyManager.uc b/exported/TgClient/Classes/TgPartyManager.uc new file mode 100755 index 00000000..d2b5ea7e --- /dev/null +++ b/exported/TgClient/Classes/TgPartyManager.uc @@ -0,0 +1,8 @@ +class TgPartyManager extends Object + native; + +var bool m_bLeader; +var bool m_bMember; +var bool m_bLeaving; +var bool m_bDisbanding; +var bool m_bWaitingForLeader; diff --git a/exported/TgClient/Classes/TgRewardCenterManager.uc b/exported/TgClient/Classes/TgRewardCenterManager.uc new file mode 100755 index 00000000..26cc4409 --- /dev/null +++ b/exported/TgClient/Classes/TgRewardCenterManager.uc @@ -0,0 +1,284 @@ +class TgRewardCenterManager extends Object + native; + +enum QuestType +{ + EQT_Daily, // 0 + EQT_Collection, // 1 + EQT_Special, // 2 + EQT_Training, // 3 + EQT_ItemQuest, // 4 + EQT_MAX // 5 +}; + +enum QuestRewardDisplayType +{ + EQRDT_None, // 0 + EQRDT_Crystals, // 1 + EQRDT_Essence, // 2 + EQRDT_Gold, // 3 + EQRDT_Chest, // 4 + EQRDT_Card, // 5 + EQRDT_Item, // 6 + EQRDT_Texture, // 7 + EQRDT_MAX // 8 +}; + +struct native GoalRewardItem +{ + var int nItemId; + var int nQuantity; + var bool bRental; + + structdefaultproperties + { + nItemId=0 + nQuantity=0 + bRental=false + } +}; + +struct native ActivityGoal +{ + var int nTargetValue; + var int nProgressValue; + var init string sDescription; + var init string sName; + var bool bClaimed; + var int nGoalId; + var init array pLootItems; + + structdefaultproperties + { + nTargetValue=0 + nProgressValue=0 + sDescription="" + sName="" + bClaimed=false + nGoalId=0 + pLootItems=none + } +}; + +struct native PlayerPartyBonus +{ + var int nPlayerCount; + var float fWorshipperBonus; + var float fXpBonus; + var float fFavorBonus; + + structdefaultproperties + { + nPlayerCount=0 + fWorshipperBonus=0.0000000 + fXpBonus=0.0000000 + fFavorBonus=0.0000000 + } +}; + +struct native SeasonTicketGameData +{ + var int nGameMatchId; + var init string sTeamName1; + var init string sTeamName2; + var init string sTeamAbbr1; + var init string sTeamAbbr2; + var init string sTeamImage1; + var init string sTeamImage2; + var init string sDesc; + var int nTeamId1; + var int nTeamId2; + var init string sExternalLink; + var int nSelectedTeam; + var int nWinningTeam; + var int nStartTime; + var int nEventId; + var int nEventType; + var int nGroupId; + var int nRoundType; + var int nRoundTypeSortOrder; + var init string sRoundName; + var int nDisplayGrouping; + var init string sDisplayGroupingName; + var int nMatchCount; + var int nTeam1Wins; + var int nTeam2Wins; + var int nTeamMatchWinCount1; + var int nTeamMatchWinCount2; + var int nTeamMatchLossCount1; + var int nTeamMatchLossCount2; + var int NSTG_StartingWeek; + var int NSTG_StartYear; + var int NSTG_StartMonth; + var int NSTG_StartDate; + var int NSTG_StartHour; + var int NSTG_StartMin; + var int NSTG_StartDayOfWeek; + var bool bFeatured; + var bool bMatchOver; + + structdefaultproperties + { + nGameMatchId=0 + sTeamName1="" + sTeamName2="" + sTeamAbbr1="" + sTeamAbbr2="" + sTeamImage1="" + sTeamImage2="" + sDesc="" + nTeamId1=0 + nTeamId2=0 + sExternalLink="" + nSelectedTeam=0 + nWinningTeam=0 + nStartTime=0 + nEventId=0 + nEventType=0 + nGroupId=0 + nRoundType=0 + nRoundTypeSortOrder=0 + sRoundName="" + nDisplayGrouping=0 + sDisplayGroupingName="" + nMatchCount=0 + nTeam1Wins=0 + nTeam2Wins=0 + nTeamMatchWinCount1=0 + nTeamMatchWinCount2=0 + nTeamMatchLossCount1=0 + nTeamMatchLossCount2=0 + NSTG_StartingWeek=0 + NSTG_StartYear=0 + NSTG_StartMonth=0 + NSTG_StartDate=0 + NSTG_StartHour=0 + NSTG_StartMin=0 + NSTG_StartDayOfWeek=0 + bFeatured=false + bMatchOver=false + } +}; + +struct native SeasonTicketTeamData +{ + var int nTeamId; + var int nEventTeamId; + var init string sName; + var int nSeedNumber; + + structdefaultproperties + { + nTeamId=0 + nEventTeamId=0 + sName="" + nSeedNumber=0 + } +}; + +struct native SeasonTicketEventData +{ + var int nEventId; + var int nStartTime; + var int nNewCount; + var init string sName; + var int nEventType; + var int nMaxPicks; + var init array m_PickedTeams; + var init array m_TeamData; + + structdefaultproperties + { + nEventId=0 + nStartTime=0 + nNewCount=0 + sName="" + nEventType=0 + nMaxPicks=0 + m_PickedTeams=none + m_TeamData=none + } +}; + +struct native QuestData +{ + var int nQuestId; + var int nActivityId; + var int nGoalId; + var int nLootTableId; + var int nReceivedTime; + var int nNameId; + var int nDescId; + var int nCompletionGoal; + var int nCurrentProgress; + var int nIconIndex; + var int nQuestType; + var int nEndTime; + var int nProgressEarned; + var int nDisplayOrder; + var bool bCanAbandon; + var bool bSkipped; + var bool bSeen; + var bool bNew; + var init array pLootItems; + + structdefaultproperties + { + nQuestId=0 + nActivityId=0 + nGoalId=0 + nLootTableId=0 + nReceivedTime=0 + nNameId=0 + nDescId=0 + nCompletionGoal=0 + nCurrentProgress=0 + nIconIndex=0 + nQuestType=0 + nEndTime=0 + nProgressEarned=0 + nDisplayOrder=0 + bCanAbandon=false + bSkipped=false + bSeen=false + bNew=false + pLootItems=none + } +}; + +var UIGameMoviePlayer m_pMovie; +var bool m_bPlayerLoggedIn; +var bool m_bRewardClaimedToday; +var bool m_bDayHasRolledOver; +var bool m_bEsportsGameLive; +var bool m_bHasQuestProgress; +var bool m_bHasQuestActivities; +var bool m_bHasQuestRewards; +var bool m_bQuestsSeenToday; +var int m_nConsecutiveRewardDays; +var int m_nLengthOfDay; +var float m_fTimeTillNextDay; +var array m_pLevelUpGoals; +var int m_nPlayerLevel; +var array m_pReturningBonus; +var int m_nPartyBonusStartTime; +var int m_nPartyBonusEndTime; +var array m_pPartyBonuses; +var array m_GameDatas; +var array m_EventData; +var float m_fNextESportsEventUpdate; +var int m_nESportsGamesStartingSoon; +var float m_fTimeTillNextWeek; +var array m_QuestList; +var array m_TrainingQuestList; +var array m_ProgressedQuestList; + +// Export UTgRewardCenterManager::execInitialize(FFrame&, void* const) +native function Initialize(UIGameMoviePlayer pMoviePlayer); + +defaultproperties +{ + m_bRewardClaimedToday=true + m_nConsecutiveRewardDays=-1 + m_nLengthOfDay=86400 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgSceneManager.uc b/exported/TgClient/Classes/TgSceneManager.uc new file mode 100755 index 00000000..db3f391d --- /dev/null +++ b/exported/TgClient/Classes/TgSceneManager.uc @@ -0,0 +1,47 @@ +class TgSceneManager extends GFxObject within GFxMoviePlayer + native; + +var GFxObject m_loadedScenes; +var private bool bMouseCaptured; + +// Export UTgSceneManager::execInitializeSceneManager(FFrame&, void* const) +native function InitializeSceneManager(); + +// Export UTgSceneManager::execKillScene(FFrame&, void* const) +native function KillScene(string SceneName); + +// Export UTgSceneManager::execLoadScene(FFrame&, void* const) +native function LoadScene(string SceneName); + +// Export UTgSceneManager::execUnloadScene(FFrame&, void* const) +native function UnloadScene(string SceneName); + +// Export UTgSceneManager::execToggleScene(FFrame&, void* const) +native function ToggleScene(string SceneName); + +// Export UTgSceneManager::execUnloadAllScenes(FFrame&, void* const) +native function UnloadAllScenes(array exclusionList); + +// Export UTgSceneManager::execListOpenScenes(FFrame&, void* const) +native function ListOpenScenes(); + +// Export UTgSceneManager::execIsSceneLoaded(FFrame&, void* const) +native function bool IsSceneLoaded(string SceneName); + +// Export UTgSceneManager::execPushMouseCapture(FFrame&, void* const) +native function PushMouseCapture(); + +// Export UTgSceneManager::execPopMouseCapture(FFrame&, void* const) +native function PopMouseCapture(); + +// Export UTgSceneManager::execPushKeyCapture(FFrame&, void* const) +native function PushKeyCapture(); + +// Export UTgSceneManager::execPopKeyCapture(FFrame&, void* const) +native function PopKeyCapture(); + +// Export UTgSceneManager::execShowCharacterCard(FFrame&, void* const) +native function ShowCharacterCard(int nClassId); + +// Export UTgSceneManager::execToggleTwitch(FFrame&, void* const) +native function ToggleTwitch(); diff --git a/exported/TgClient/Classes/TgSetting.uc b/exported/TgClient/Classes/TgSetting.uc new file mode 100755 index 00000000..4589e977 --- /dev/null +++ b/exported/TgClient/Classes/TgSetting.uc @@ -0,0 +1,144 @@ +class TgSetting extends TgObject + native(SettingsUI); + +enum SETTING_TYPE +{ + SET_RESOLUTION, // 0 + SET_ASPECTRATIO, // 1 + SET_SCREENTYPE, // 2 + SET_ANTIALIASING, // 3 + SET_VERTICALSYNC, // 4 + SET_DETAILWORLD, // 5 + SET_DETAILSHADOW, // 6 + SET_DETAILTEXTURE, // 7 + SET_DETAILPARTICLE, // 8 + SET_SHADERQUALITY, // 9 + SET_GAMMALEVEL, // 10 + SET_FOV, // 11 + SET_SAFEFRAME, // 12 + SET_HUDMINIMAP, // 13 + SET_HUDTEAMS, // 14 + SET_HUDDAMAGE, // 15 + SET_HUDCOMBATLOG, // 16 + SET_HUDAUTOLEVEL, // 17 + SET_HUDHEALTHBAR, // 18 + SET_HUDBLOOM, // 19 + SET_HUDCOLOR, // 20 + SET_HUDRETICLE, // 21 + SET_VOLUMEMASTER, // 22 + SET_VOLUMEEFFECTS, // 23 + SET_VOLUMEMUSIC, // 24 + SET_VOLUMEVOICE, // 25 + SET_VOLUMENOTIFY, // 26 + SET_MOUSEINVERT, // 27 + SET_MOUSESMOOTH, // 28 + SET_ALLOWGAMEPAD, // 29 + SET_MOUSESENSITIVITY, // 30 + SET_XAXISSENSITIVITY, // 31 + SET_YAXISSENSITIVITY, // 32 + SET_AIMACCELMODE, // 33 + SET_AIMACCELBOOST, // 34 + SET_GAMEPADINVERT, // 35 + SET_DEADZONEINNER, // 36 + SET_DEADZONEOUTER, // 37 + SET_SHOWGAMETIPS, // 38 + SET_SPECTATE, // 39 + SET_SPECTATORPLAYERICONS, // 40 + SET_SPECTATORSHOWITEMS, // 41 + SET_SPECTATORBLUETEAMSERIESSCORE,// 42 + SET_SPECTATORREDTEAMSERIESSCORE,// 43 + SET_CONTROLICONSTYLE, // 44 + SET_HAPTICFEEDBACK, // 45 + SET_HUDTEAMUI, // 46 + SET_VOLUMEVOICECHAT, // 47 + SET_VOLUMEVOICECHATMIC, // 48 + SET_ENABLEVOICECHAT, // 49 + SET_USEVOICECHATPUSHTOTALK, // 50 + SET_TOGGLEZOOM, // 51 + SET_AUDIOPANNING, // 52 + SET_SCOPESENSITIVITY, // 53 + SET_RETICLECHANGE, // 54 + SET_USEPROFANITYFILTER, // 55 + SET_MAX // 56 +}; + +enum SETTING_BINARY +{ + SEB_DISABLED, // 0 + SEB_ENABLED, // 1 + SEB_MAX // 2 +}; + +enum SETTING_SCREENTYPE +{ + SST_WINDOWED, // 0 + SST_BORDERLESS, // 1 + SST_FULLSCREEN, // 2 + SST_MAX // 3 +}; + +enum SETTING_ANTIALIASING +{ + SAA_OFF, // 0 + SAA_TWO, // 1 + SAA_FOUR, // 2 + SAA_EIGHT, // 3 + SAA_MAX // 4 +}; + +enum OPTION_DETAILLEVEL +{ + SDL_LOWEST, // 0 + SDL_LOW, // 1 + SDL_MEDIUM, // 2 + SDL_HIGH, // 3 + SDL_MAX // 4 +}; + +enum SETTING_AIMACCELMODE +{ + SAIM_DYNAMIC, // 0 + SAIM_CLASSIC, // 1 + SAIM_PRECISION, // 2 + SAIM_MAX // 3 +}; + +enum SETTING_DEADZONESIZE +{ + SDZS_MINIMUM, // 0 + SDZS_SMALL, // 1 + SDZS_MEDIUM, // 2 + SDZS_LARGE, // 3 + SDZS_MAX // 4 +}; + +enum SETTING_AUDIOPANNING +{ + SAP_SPEAKERS, // 0 + SAP_HEADPHONES, // 1 + SAP_MAX // 2 +}; + +struct native OptionData +{ + var float fValue; + var float fOther; + var init string sName; + + structdefaultproperties + { + fValue=0.0000000 + fOther=0.0000000 + sName="" + } +}; + +var float m_fDefault; +var float m_fConfigDefault; +var float m_fOriginal; +var float m_fMax; +var float m_fMin; +var float m_fTemp; +var float m_fValue; +var TgSetting.SETTING_TYPE m_eType; +var array m_Options; diff --git a/exported/TgClient/Classes/TgSettingsManager.uc b/exported/TgClient/Classes/TgSettingsManager.uc new file mode 100755 index 00000000..485f8a62 --- /dev/null +++ b/exported/TgClient/Classes/TgSettingsManager.uc @@ -0,0 +1,86 @@ +class TgSettingsManager extends TgObject + native(SettingsUI); + +struct native TgKeyCommand +{ + var bool bAllowGamepadAxis; + var int nPropId; + var init string sKeyCommand; + var init string sMirroredCommand; + var init array sDefaultKeys; + + structdefaultproperties + { + bAllowGamepadAxis=false + nPropId=0 + sKeyCommand="" + sMirroredCommand="" + sDefaultKeys=none + } +}; + +struct native TgKeyBind +{ + var native Pointer pCommand; + var bool bOverrides; + var init array sKeys; + + structdefaultproperties + { + bOverrides=false + sKeys=none + } +}; + +struct native TgSettingsSet +{ + var init array Keybinds; + var native Pointer CaseSet; + + structdefaultproperties + { + Keybinds=none + } +}; + +var int m_nSelectedChampion; +var native map{VOID,VOID} m_Sets; +var array m_Settings; +var const array m_Commands; + +// Export UTgSettingsManager::execGetKeybindExtended(FFrame&, void* const) +native exec function string GetKeybindExtended(string sCommand, int nAlt, optional int nBotId = -1); + +defaultproperties +{ + m_Commands[0]=(bAllowGamepadAxis=true,nPropId=1126,sKeyCommand="GBA_MoveForward",sMirroredCommand="",sDefaultKeys=none) + m_Commands[1]=(bAllowGamepadAxis=true,nPropId=1127,sKeyCommand="GBA_MoveBackward",sMirroredCommand="GBA_MoveForward",sDefaultKeys=none) + m_Commands[2]=(bAllowGamepadAxis=true,nPropId=1128,sKeyCommand="GBA_StrafeLeft",sMirroredCommand="GBA_StrafeRight",sDefaultKeys=none) + m_Commands[3]=(bAllowGamepadAxis=true,nPropId=1129,sKeyCommand="GBA_StrafeRight",sMirroredCommand="",sDefaultKeys=none) + m_Commands[4]=(bAllowGamepadAxis=true,nPropId=1300,sKeyCommand="GBA_TurnLeft",sMirroredCommand="GBA_TurnRight",sDefaultKeys=none) + m_Commands[5]=(bAllowGamepadAxis=true,nPropId=1301,sKeyCommand="GBA_TurnRight",sMirroredCommand="",sDefaultKeys=none) + m_Commands[6]=(bAllowGamepadAxis=true,nPropId=2010,sKeyCommand="GBA_LookUp",sMirroredCommand="",sDefaultKeys=none) + m_Commands[7]=(bAllowGamepadAxis=true,nPropId=2011,sKeyCommand="GBA_LookDown",sMirroredCommand="GBA_LookUp",sDefaultKeys=none) + m_Commands[8]=(bAllowGamepadAxis=false,nPropId=1304,sKeyCommand="GBA_AutoRun",sMirroredCommand="",sDefaultKeys=none) + m_Commands[9]=(bAllowGamepadAxis=false,nPropId=1131,sKeyCommand="GBA_Jump",sMirroredCommand="",sDefaultKeys=none) + m_Commands[10]=(bAllowGamepadAxis=false,nPropId=1137,sKeyCommand="GBA_Fire",sMirroredCommand="",sDefaultKeys=none) + m_Commands[11]=(bAllowGamepadAxis=false,nPropId=1305,sKeyCommand="GBA_CancelFire",sMirroredCommand="",sDefaultKeys=none) + m_Commands[12]=(bAllowGamepadAxis=false,nPropId=1138,sKeyCommand="GBA_Reload",sMirroredCommand="",sDefaultKeys=none) + m_Commands[13]=(bAllowGamepadAxis=false,nPropId=1306,sKeyCommand="GBA_Ability_1",sMirroredCommand="",sDefaultKeys=none) + m_Commands[14]=(bAllowGamepadAxis=false,nPropId=1307,sKeyCommand="GBA_Ability_2",sMirroredCommand="",sDefaultKeys=none) + m_Commands[15]=(bAllowGamepadAxis=false,nPropId=1308,sKeyCommand="GBA_Ability_3",sMirroredCommand="",sDefaultKeys=none) + m_Commands[16]=(bAllowGamepadAxis=false,nPropId=1965,sKeyCommand="GBA_Emote",sMirroredCommand="",sDefaultKeys=none) + m_Commands[17]=(bAllowGamepadAxis=false,nPropId=2032,sKeyCommand="GBA_Flourish",sMirroredCommand="",sDefaultKeys=none) + m_Commands[18]=(bAllowGamepadAxis=false,nPropId=2012,sKeyCommand="GBA_Spray",sMirroredCommand="",sDefaultKeys=none) + m_Commands[19]=(bAllowGamepadAxis=false,nPropId=1153,sKeyCommand="GBA_VGS",sMirroredCommand="",sDefaultKeys=none) + m_Commands[20]=(bAllowGamepadAxis=false,nPropId=1964,sKeyCommand="GBA_CommonCards",sMirroredCommand="",sDefaultKeys=none) + m_Commands[21]=(bAllowGamepadAxis=false,nPropId=1147,sKeyCommand="GBA_Scoreboard",sMirroredCommand="",sDefaultKeys=none) + m_Commands[22]=(bAllowGamepadAxis=false,nPropId=2015,sKeyCommand="GBA_ScoreBoardToggle",sMirroredCommand="",sDefaultKeys=none) + m_Commands[23]=(bAllowGamepadAxis=false,nPropId=2014,sKeyCommand="GBA_DeathRecap",sMirroredCommand="",sDefaultKeys=none) + m_Commands[24]=(bAllowGamepadAxis=false,nPropId=1323,sKeyCommand="GBA_DeathRecapToggle",sMirroredCommand="",sDefaultKeys=none) + m_Commands[25]=(bAllowGamepadAxis=false,nPropId=2016,sKeyCommand="GBA_SkillInfo",sMirroredCommand="",sDefaultKeys=none) + m_Commands[26]=(bAllowGamepadAxis=false,nPropId=2017,sKeyCommand="GBA_SkillInfoToggle",sMirroredCommand="",sDefaultKeys=none) + m_Commands[27]=(bAllowGamepadAxis=false,nPropId=2013,sKeyCommand="GBA_PerCharacterAlt",sMirroredCommand="",sDefaultKeys=none) + m_Commands[28]=(bAllowGamepadAxis=false,nPropId=2008,sKeyCommand="GBA_PushToTalk",sMirroredCommand="",sDefaultKeys=none) + m_Commands[29]=(bAllowGamepadAxis=false,nPropId=2022,sKeyCommand="GBA_UpgradeMenu",sMirroredCommand="",sDefaultKeys=none) +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgSpectatorHUD.uc b/exported/TgClient/Classes/TgSpectatorHUD.uc new file mode 100755 index 00000000..17847ba2 --- /dev/null +++ b/exported/TgClient/Classes/TgSpectatorHUD.uc @@ -0,0 +1,100 @@ +class TgSpectatorHUD extends TgGameHUD + transient + native(GameUI) + config(Game) + hidecategories(Navigation); + +var byte m_eClientVisibilityMode; +var Actor m_LastUIViewTarget; +var bool m_StatsSeeded; +var bool m_bIsBottomPanelHidden; + +// Export UTgSpectatorHUD::execUpdateSpectatorViewTarget(FFrame&, void* const) +native function UpdateSpectatorViewTarget(Actor Target); + +// Export UTgSpectatorHUD::execUpdateSpectatorViewMode(FFrame&, void* const) +native function UpdateSpectatorViewMode(byte Mode); + +// Export UTgSpectatorHUD::execEndMission(FFrame&, void* const) +native function EndMission(bool bPlayerAttacker, TgObject.GAME_WIN_STATE finalWinState); + +// Export UTgSpectatorHUD::execToggleBans(FFrame&, void* const) +native exec function ToggleBans(); + +// Export UTgSpectatorHUD::execSetSpectatorSkillsMode(FFrame&, void* const) +native exec function SetSpectatorSkillsMode(int nNum); + +// Export UTgSpectatorHUD::execSetSpectatorTeamMode(FFrame&, void* const) +native exec function SetSpectatorTeamMode(int nNum); + +// Export UTgSpectatorHUD::execSetSpectatorStatsMode(FFrame&, void* const) +native exec function SetSpectatorStatsMode(int nNum); + +exec function ToggleVisibilityMode() +{ + SetVisibilityMode(0); + //return; +} + +exec function SetVisibilityMode(byte Mode) +{ + local TgRepInfo_Player PRI; + + m_eClientVisibilityMode = Mode; + // End:0x4C + foreach DynamicActors(Class'TgGame.TgRepInfo_Player', PRI) + { + PRI.ClientUpdateItemStoreItems(); + } + UpdateSpectatorViewMode(m_eClientVisibilityMode); + //return; +} + +event Tick(float DeltaTime) +{ + local Actor ViewTarget; + + super(TgClientHUD).Tick(DeltaTime); + ViewTarget = PlayerOwner.GetViewTarget(); + // End:0x79 + if(ViewTarget != m_LastUIViewTarget) + { + UpdateSpectatorViewTarget(ViewTarget); + m_LastUIViewTarget = ViewTarget; + } + //return; +} + +// Export UTgSpectatorHUD::execToggleHUD(FFrame&, void* const) +native exec function ToggleHUD(); + +function bool ValidateSceneForSpectate(string SceneName) +{ + // End:0x5D + if(SceneName == "GodStats") + { + // End:0x52 + if(TgSpectatorController(PlayerOwner.GetViewTarget()) == none) + { + m_StatsSeeded = true; + } + return m_StatsSeeded; + } + return true; + //return ReturnValue; +} + +exec function ToggleCursor(bool bEnabled) +{ + m_pMovie.usc_toggle_cursor(bEnabled); + //return; +} + +defaultproperties +{ + // Reference: PComPictureInPicture'TgClient.Default__TgSpectatorHUD.PictureInPicture' + // Archetype: PComPictureInPicture'TgClient.Default__TgGameHUD.PictureInPicture' + begin object name="PictureInPicture" + end object + m_PictureInPicture=PictureInPicture +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgStreamManager.uc b/exported/TgClient/Classes/TgStreamManager.uc new file mode 100755 index 00000000..cecb5efd --- /dev/null +++ b/exported/TgClient/Classes/TgStreamManager.uc @@ -0,0 +1,306 @@ +class TgStreamManager extends Object + native; + +enum STREAMTYPE +{ + VST_NONE, // 0 + VST_HIREZ, // 1 + VST_TWITCH, // 2 + VST_TRAINING, // 3 + VST_COMMUNITY, // 4 + VST_NEWS, // 5 + VST_MAX // 6 +}; + +struct native GameStream +{ + var bool bLive; + var bool bFeatured; + var bool bSpecial; + var TgStreamManager.STREAMTYPE Type; + var init string Title; + var init string StreamURL; + var init string ChannelName; + var init string Description; + var init string Viewers; + + structdefaultproperties + { + bLive=false + bFeatured=false + bSpecial=false + Type=STREAMTYPE.VST_NONE + Title="" + StreamURL="" + ChannelName="" + Description="" + Viewers="" + } +}; + +var string WatchEnd; +var string m_CurrentChannel; +var int m_nNewsIndex; +var array Streams; +var bool m_hasReceivedStreams; +var bool m_hasAnySpecial; +var bool m_hasAnyFeatured; +var UIGameMoviePlayer m_Movie; +//var delegate __ViewerSort__Delegate; +//var delegate __FeaturedSort__Delegate; +//var delegate __LiveSort__Delegate; + +// Export UTgStreamManager::execLoadStreams(FFrame&, void* const) +native function LoadStreams(); + +// Export UTgStreamManager::execOpenStream(FFrame&, void* const) +native function bool OpenStream(int surfaceId, string URL, bool external, float X, float Y, float Width, float Height, float widthReal, float heightReal, optional bool joinChat = true); + +// Export UTgStreamManager::execOpenPlayerStream(FFrame&, void* const) +native function bool OpenPlayerStream(int nPlayerId, bool external, float X, float Y, float Width, float Height, float widthReal, float heightReal); + +// Export UTgStreamManager::execHasSpecialStreams(FFrame&, void* const) +native function bool HasSpecialStreams(); + +event bool ViewStreamIndex(int surfaceId, int Index, optional bool external = false, optional float X = 0.0000000, optional float Y = 0.0000000, optional float Width = 0.0000000, optional float Height = 0.0000000, optional float widthReal = 0.0000000, optional float heightReal = 0.0000000, optional bool joinChat = true) +{ + local string watch_end; + + // End:0x138 + if(IsStream(Index)) + { + // End:0x78 + if(!external) + { + watch_end = WatchEnd; + } + ResolveChannelName(Streams[Index].ChannelName); + OpenStream(surfaceId, Streams[Index].StreamURL $ watch_end, external, X, Y, Width, Height, widthReal, heightReal, joinChat); + return true; + } + return false; + //return ReturnValue; +} + +event CompleteUpdate() +{ + //return; +} + +event ResolveChannelName(string sChannel) +{ + m_CurrentChannel = Split(sChannel, "live_user_", true); + //return; +} + +delegate int ViewerSort(GameStream A, GameStream B) +{ + return ((int(A.Viewers) < int(B.Viewers)) ? -1 : 0); + //return ReturnValue; +} + +delegate int FeaturedSort(GameStream A, GameStream B) +{ + return ((!A.bFeatured && B.bFeatured) ? -1 : 0); + //return ReturnValue; +} + +delegate int LiveSort(GameStream A, GameStream B) +{ + return ((!A.bLive && B.bLive) ? -1 : 0); + //return ReturnValue; +} + +function int GetTypeCount(TgStreamManager.STREAMTYPE Type) +{ + local int I, Count; + + Count = 0; + I = 0; + J0x16: + + // End:0x7F [Loop If] + if(I < Streams.Length) + { + // End:0x71 + if(int(Streams[I].Type) == int(Type)) + { + Count++; + } + I++; + // [Loop Continue] + goto J0x16; + } + return Count; + //return ReturnValue; +} + +function int GetTypeCountWatching(TgStreamManager.STREAMTYPE Type) +{ + local int I, Count; + + Count = 0; + I = 0; + J0x16: + + // End:0xA7 [Loop If] + if(I < Streams.Length) + { + // End:0x99 + if(int(Streams[I].Type) == int(Type)) + { + Count += int(Streams[I].Viewers); + } + I++; + // [Loop Continue] + goto J0x16; + } + return Count; + //return ReturnValue; +} + +function bool IsStream(int Index) +{ + // End:0x4E + if(Index < Streams.Length) + { + return ((int(Streams[Index].Type) == int(2)) ? true : false); + } + return false; + //return ReturnValue; +} + +function string GetTitleAtIndex(int Index) +{ + // End:0x3F + if(Index < Streams.Length) + { + return Streams[Index].Title; + } + return ""; + //return ReturnValue; +} + +function string GetViewersAtIndex(int Index) +{ + // End:0x3F + if(Index < Streams.Length) + { + return Streams[Index].Viewers; + } + return "0"; + //return ReturnValue; +} + +function string GetDescriptionAtIndex(int Index) +{ + local string Desc; + + // End:0x48 + if(Index < Streams.Length) + { + Desc = Streams[Index].Description; + } + // End:0x58 + if(Desc == "") + { + } + return Desc; + //return ReturnValue; +} + +function bool IsLiveAtIndex(int Index) +{ + // End:0x40 + if(Index < Streams.Length) + { + return Streams[Index].bLive; + } + return false; + //return ReturnValue; +} + +function bool HaveFeature() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x5D [Loop If] + if(I < Streams.Length) + { + // End:0x4F + if(Streams[I].bFeatured) + { + return true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +function string GetFeatureName(optional int Count = 0) +{ + local int I; + + I = 0; + J0x10: + + // End:0xD4 [Loop If] + if(I < Streams.Length) + { + // End:0xC6 + if(Streams[I].bFeatured && int(Streams[I].Type) != int(5)) + { + // End:0xBB + if(Count <= 0) + { + return Streams[I].Title; + } + Count--; + } + I++; + // [Loop Continue] + goto J0x10; + } + return ""; + //return ReturnValue; +} + +function string GetFeatureDescription(optional int Count = 0) +{ + local int I; + + I = 0; + J0x10: + + // End:0xD4 [Loop If] + if(I < Streams.Length) + { + // End:0xC6 + if(Streams[I].bFeatured && int(Streams[I].Type) != int(5)) + { + // End:0xBB + if(Count <= 0) + { + return Streams[I].Description; + } + Count--; + } + I++; + // [Loop Continue] + goto J0x10; + } + return ""; + //return ReturnValue; +} + +defaultproperties +{ + WatchEnd="/popout" + m_nNewsIndex=-1 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgSynchronizedTimer.uc b/exported/TgClient/Classes/TgSynchronizedTimer.uc new file mode 100755 index 00000000..e3a3d7e2 --- /dev/null +++ b/exported/TgClient/Classes/TgSynchronizedTimer.uc @@ -0,0 +1,32 @@ +class TgSynchronizedTimer extends GFxObject within GFxMoviePlayer + native; + +var bool m_bPausedByGame; +var bool m_bSuppressCallback; +var bool m_bRunning; +var bool m_bPaused; +var UIMoviePlayer m_MP; +var TgTimerManager m_TimerManager; + +// Export UTgSynchronizedTimer::execStartTimer(FFrame&, void* const) +native function StartTimer(float fSeconds); + +// Export UTgSynchronizedTimer::execUpdateTimer(FFrame&, void* const) +native function UpdateTimer(float fElapsed, float fTotal, optional bool bPaused = false, optional bool bFromCallback = false); + +// Export UTgSynchronizedTimer::execExpireTimer(FFrame&, void* const) +native function ExpireTimer(optional bool bFromCallback = false); + +// Export UTgSynchronizedTimer::execEventCallback(FFrame&, void* const) +native function EventCallback(int nTimerId, TgTimerManager.TGT_EVENT eEvent); + +// Export UTgSynchronizedTimer::execIsRunning(FFrame&, void* const) +native function bool IsRunning(); + +// Export UTgSynchronizedTimer::execIsPaused(FFrame&, void* const) +native function bool IsPaused(); + +defaultproperties +{ + m_nIndex=-1 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/TgThreatModel.uc b/exported/TgClient/Classes/TgThreatModel.uc new file mode 100755 index 00000000..cbf6feeb --- /dev/null +++ b/exported/TgClient/Classes/TgThreatModel.uc @@ -0,0 +1,27 @@ +class TgThreatModel extends Object + native(ThreatModel) + config(Game); + +var array m_PawnsWithThreatLevels; +var bool m_bThreatSystemEnabled; +var bool m_bOcclusionSystemEnabled; +var bool m_bDebugThreatSystem; +var config float m_fThreatCoefficientProximity; +var config float m_fThreatCoefficientOcclusion; +var config float m_fThreatCoefficientBinnedOcclusion; +var config float m_fThreatCoefficientUlt; +var config float m_fThreatCoefficientShotAt; +var config float m_fThreatCoefficientSeenBy; +var config float m_fThreatCoefficientDamaged; +var config float m_fThreatCoefficientFocused; +var config float m_fThreatCoefficientFocusTarget; +var config float m_fThreatDecayCoefficientShotAt; +var config float m_fThreatDecayCoefficientSeenBy; +var config float m_fThreatDecayCoefficientUlt; +var string m_DebugThreatSystemChannel; + +defaultproperties +{ + m_bThreatSystemEnabled=true + m_bOcclusionSystemEnabled=true +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIAcademy.uc b/exported/TgClient/Classes/UIAcademy.uc new file mode 100755 index 00000000..15795d9f --- /dev/null +++ b/exported/TgClient/Classes/UIAcademy.uc @@ -0,0 +1,44 @@ +class UIAcademy extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIACADEMY_BUTTONS = 8; +const UIACADEMY_VIDEOTYPE = 11427; + +struct native AcademyVideoButton +{ + var string sImagePath; + var string sVideoURL; + var GFxObject pClip; + var GFxObject pImage; + var GFxObject pTitle; + var GFxObject pSubtitle; + + structdefaultproperties + { + sImagePath="" + sVideoURL="" + pClip=none + pImage=none + pTitle=none + pSubtitle=none + } +}; + +var AcademyVideoButton m_Buttons[8]; + +defaultproperties +{ + m_Buttons[0]=(sImagePath="Achievements.Achievements_I75",sVideoURL="",pClip=none,pImage=none,pTitle=none,pSubtitle=none) + m_Buttons[1]=(sImagePath="Achievements.Achievements_I75",sVideoURL="",pClip=none,pImage=none,pTitle=none,pSubtitle=none) + m_Buttons[2]=(sImagePath="Achievements.Achievements_I75",sVideoURL="",pClip=none,pImage=none,pTitle=none,pSubtitle=none) + m_Buttons[3]=(sImagePath="Achievements.Achievements_I75",sVideoURL="",pClip=none,pImage=none,pTitle=none,pSubtitle=none) + m_Buttons[4]=(sImagePath="Achievements.Achievements_I75",sVideoURL="",pClip=none,pImage=none,pTitle=none,pSubtitle=none) + m_Buttons[5]=(sImagePath="Achievements.Achievements_I75",sVideoURL="",pClip=none,pImage=none,pTitle=none,pSubtitle=none) + m_Buttons[6]=(sImagePath="Achievements.Achievements_I75",sVideoURL="",pClip=none,pImage=none,pTitle=none,pSubtitle=none) + m_Buttons[7]=(sImagePath="Achievements.Achievements_I75",sVideoURL="",pClip=none,pImage=none,pTitle=none,pSubtitle=none) + m_OptionList[0]=14 + m_OptionList[1]=4 + m_OptionList[2]=0 + m_bBlur=true + m_Name="UIAcademy" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIAccountLinkPopup.uc b/exported/TgClient/Classes/UIAccountLinkPopup.uc new file mode 100755 index 00000000..aaa6ebb7 --- /dev/null +++ b/exported/TgClient/Classes/UIAccountLinkPopup.uc @@ -0,0 +1,35 @@ +class UIAccountLinkPopup extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +var init string m_sUserEmail; + +event SetOSSRecordingEnabled(bool bEnabled) +{ + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xE9 + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.GameDVRInterface, OnlineGameDVRInterface(none))) + { + // End:0xB4 + if(bEnabled) + { + OnlineSub.GameDVRInterface.EnableRecording(); + } + else + { + OnlineSub.GameDVRInterface.DisableRecording(); + } + } + //return; +} + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_UIAccountLink' + m_OptionList[0]=245 + m_OptionList[1]=3 + m_OptionList[2]=0 + m_bIsPopup=true + m_Name="UIAccountLinkPopup" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIAchievementPopups.uc b/exported/TgClient/Classes/UIAchievementPopups.uc new file mode 100755 index 00000000..a799501d --- /dev/null +++ b/exported/TgClient/Classes/UIAchievementPopups.uc @@ -0,0 +1,68 @@ +class UIAchievementPopups extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIACHIEVEMENTPOPUPS_PROGRESS_PERCENT = 0.2; + +struct native AchievementProgressData +{ + var bool hasBeenProcessed; + var bool isCompleted; + var int ActivityId; + var int goalId; + var int goalGroupType; + var int numGoalsInGroup; + var int descMsgId; + var int activityMsgId; + var int goalMsgId; + var int activationValueId; + var int countToComplete; + var int currentCount; + var int countDelta; + var int titleMsgId; + var int IconId; + var int pointValue; + + structdefaultproperties + { + hasBeenProcessed=false + isCompleted=false + ActivityId=0 + goalId=0 + goalGroupType=0 + numGoalsInGroup=0 + descMsgId=0 + activityMsgId=0 + goalMsgId=0 + activationValueId=0 + countToComplete=0 + currentCount=0 + countDelta=0 + titleMsgId=0 + IconId=0 + pointValue=0 + } +}; + +var bool m_bNewElementsQueued; +var array m_rawProgressList; +var array m_queuedProgressList; +var GFxObject m_pPopup; +var GFxObject m_pUnlockedTF; +var GFxObject m_pPointsTF; +var GFxObject m_pNameTF; +var GFxObject m_pDescriptionTF; +var GFxObject m_pIconLoader; +var GFxObject m_pProgressBar; +var GFxObject m_pProgressBarMask; +var GFxObject m_pProgressBarTF; +var GFxObject m_pProgressBarFill; +var float m_fDisplayTimer; +var float m_fDelayTimer; + +defaultproperties +{ + m_bBlur=true + m_bVisibleOnLoad=true + m_bAlwaysTick=true + m_Name="UIAchievementPopups" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIAcquisition.uc b/exported/TgClient/Classes/UIAcquisition.uc new file mode 100755 index 00000000..72811fe9 --- /dev/null +++ b/exported/TgClient/Classes/UIAcquisition.uc @@ -0,0 +1,330 @@ +class UIAcquisition extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIACQUISITION_ITEMS = 4; +const UIACQUISITION_LINES = 6; +const UIACQUISITION_TABS = 2; +const UIACQUISITION_CURRENCIES = 3; +const UIACQUISITION_PURCHASE_OPTIONS = 2; +const UIACQUISITION_RENTAL_OPTIONS = 3; + +enum UIPURCHASE_TYPE +{ + UIPT_NONE, // 0 + UIPT_ITEM, // 1 + UIPT_CARD, // 2 + UIPT_WEAP, // 3 + UIPT_BUNDLE, // 4 + UIPT_MAX // 5 +}; + +struct native UIPurchaseScreen +{ + var GFxObject mcScreen; + var GFxObject mcWait; + var GFxObject mcTitle; + var GFxObject mcCursor; + var GFxObject mcCancel; + var GFxObject mcDivider; + var GFxObject mcSpinner; + var GFxObject mcSubtitle; + var GFxObject mcOption[3]; + var GFxObject mcButton[3]; + var GFxObject mcCurrency[3]; + var GFxObject mcCurrencyIcon[3]; + var GFxObject mcControllerCost[3]; + var GFxObject mcControllerCurrencyIcon[3]; + var GFxObject mcControllerButton[3]; + var GFxObject mcPreviousCost[3]; + var GFxObject mcPreviousCostStrikethrough[3]; + var GFxObject mcTab[2]; + var GFxObject mcTabSelected[2]; + var GFxObject mcTabHighlight[2]; + var GFxObject mcRentalDivider0; + var GFxObject mcRentalDivider1; + var GFxObject mcRentalOption[3]; + var GFxObject mcRentalButton[3]; + var GFxObject mcRentalCurrencyIcon[3]; + var GFxObject mcRentalControllerCost[3]; + var GFxObject mcRentalControllerCurrencyIcon[3]; + var GFxObject mcRentalControllerButton[3]; + var GFxObject mcRentalPreviousCost[3]; + var GFxObject mcRentalPreviousCostStrikethrough[3]; + var GFxObject mcCouponSelect; + var GFxObject mcCouponSelectArrow0; + var GFxObject mcCouponSelectArrow1; + var GFxObject mcCouponSelectIcon; + var GFxObject mcCouponSelectTF; + var GFxObject mcCouponSelectHighlight; + var UIComponent_HoldPrompt Hold; + var TgGFxGroup grScreen; + var TgGFxGroup grRentalScreen; + + structdefaultproperties + { + mcScreen=none + mcWait=none + mcTitle=none + mcCursor=none + mcCancel=none + mcDivider=none + mcSpinner=none + mcSubtitle=none + mcOption[0]=none + mcOption[1]=none + mcOption[2]=none + mcButton[0]=none + mcButton[1]=none + mcButton[2]=none + mcCurrency[0]=none + mcCurrency[1]=none + mcCurrency[2]=none + mcCurrencyIcon[0]=none + mcCurrencyIcon[1]=none + mcCurrencyIcon[2]=none + mcControllerCost[0]=none + mcControllerCost[1]=none + mcControllerCost[2]=none + mcControllerCurrencyIcon[0]=none + mcControllerCurrencyIcon[1]=none + mcControllerCurrencyIcon[2]=none + mcControllerButton[0]=none + mcControllerButton[1]=none + mcControllerButton[2]=none + mcPreviousCost[0]=none + mcPreviousCost[1]=none + mcPreviousCost[2]=none + mcPreviousCostStrikethrough[0]=none + mcPreviousCostStrikethrough[1]=none + mcPreviousCostStrikethrough[2]=none + mcTab[0]=none + mcTab[1]=none + mcTabSelected[0]=none + mcTabSelected[1]=none + mcTabHighlight[0]=none + mcTabHighlight[1]=none + mcRentalDivider0=none + mcRentalDivider1=none + mcRentalOption[0]=none + mcRentalOption[1]=none + mcRentalOption[2]=none + mcRentalButton[0]=none + mcRentalButton[1]=none + mcRentalButton[2]=none + mcRentalCurrencyIcon[0]=none + mcRentalCurrencyIcon[1]=none + mcRentalCurrencyIcon[2]=none + mcRentalControllerCost[0]=none + mcRentalControllerCost[1]=none + mcRentalControllerCost[2]=none + mcRentalControllerCurrencyIcon[0]=none + mcRentalControllerCurrencyIcon[1]=none + mcRentalControllerCurrencyIcon[2]=none + mcRentalControllerButton[0]=none + mcRentalControllerButton[1]=none + mcRentalControllerButton[2]=none + mcRentalPreviousCost[0]=none + mcRentalPreviousCost[1]=none + mcRentalPreviousCost[2]=none + mcRentalPreviousCostStrikethrough[0]=none + mcRentalPreviousCostStrikethrough[1]=none + mcRentalPreviousCostStrikethrough[2]=none + mcCouponSelect=none + mcCouponSelectArrow0=none + mcCouponSelectArrow1=none + mcCouponSelectIcon=none + mcCouponSelectTF=none + mcCouponSelectHighlight=none + Hold=none + grScreen=none + grRentalScreen=none + } +}; + +struct native UIAcquiredItem +{ + var UIInteractable_Item Card; + var GFxObject mcEquipButton; + var GFxObject mcEquippedText; + var GFxObject mcEquipPrompt; + var GFxObject mcStoreItemContainer; + var GFxObject mcItemContainer; + var GFxObject mcBoostContainer; + var GFxObject mcChestContainer; + var GFxObject mcChampionIcon; + var GFxObject mcChampionImage; + var GFxObject mcChampionTitle; + var GFxObject mcItemIcon; + var GFxObject mcCardIcon; + var GFxObject mcCurrency; + var GFxObject mcRarityFrame; + var GFxObject mcRarityText; + var GFxObject mcItemTitle; + var GFxObject mcItemAudio; + var GFxObject mcItemChampion; + var GFxObject mcItemChampionIcon; + var GFxObject mcOwnedText; + var GFxObject mcOwnedCheckmark; + + structdefaultproperties + { + Card=none + mcEquipButton=none + mcEquippedText=none + mcEquipPrompt=none + mcStoreItemContainer=none + mcItemContainer=none + mcBoostContainer=none + mcChestContainer=none + mcChampionIcon=none + mcChampionImage=none + mcChampionTitle=none + mcItemIcon=none + mcCardIcon=none + mcCurrency=none + mcRarityFrame=none + mcRarityText=none + mcItemTitle=none + mcItemAudio=none + mcItemChampion=none + mcItemChampionIcon=none + mcOwnedText=none + mcOwnedCheckmark=none + } +}; + +struct native UIAcquiredCoupon +{ + var GFxObject mcRoot; + var GFxObject mcAnimTitle; + var GFxObject mcTitle; + var GFxObject mcCouponDescrition; + var GFxObject mcCostPrev; + var GFxObject mcCostPrevIcon; + var GFxObject mcCostPrevStrikethrough; + var GFxObject mcCostCurrent; + var GFxObject mcCostCurrentIcon; + var GFxObject mcCouponExpires; + var GFxObject mcButton0; + var GFxObject mcButton1; + var GFxObject mcPrompt0; + var GFxObject mcPrompt1; + var GFxObject mcFrame; + var GFxObject mcFrameLine; + var GFxObject mcRarityFrame; + var GFxObject mcItemImageStack; + var GFxObject mcCardImageStack; + var GFxObject mcChestImageStack; + var GFxObject mcTexture; + + structdefaultproperties + { + mcRoot=none + mcAnimTitle=none + mcTitle=none + mcCouponDescrition=none + mcCostPrev=none + mcCostPrevIcon=none + mcCostPrevStrikethrough=none + mcCostCurrent=none + mcCostCurrentIcon=none + mcCouponExpires=none + mcButton0=none + mcButton1=none + mcPrompt0=none + mcPrompt1=none + mcFrame=none + mcFrameLine=none + mcRarityFrame=none + mcItemImageStack=none + mcCardImageStack=none + mcChestImageStack=none + mcTexture=none + } +}; + +struct native AcquiredItem +{ + var int eItemType; + var int nItemId; + var int nQuantity; + + structdefaultproperties + { + eItemType=0 + nItemId=0 + nQuantity=0 + } +}; + +var int m_nPurchaseBot; +var int m_nPurchaseItem; +var int m_nPurchaseType; +var int m_nPurchaseBundle; +var int m_nPurchaseVendor; +var int m_nPurchaseLootItem; +var int m_eCurrencyUsed; +var int m_nMultiItemIndex; +var int m_nCurrentItemId; +var int m_nCurrentTab; +var int m_nCurrentCoupon; +var bool m_bBoost; +var bool m_bPurchasing; +var bool m_bDisplayCard; +var bool m_bUseMultiItemDisplay; +var bool m_bAcquiredCard; +var float m_fRotation; +var float m_fAnimTimer; +var float m_fLineTimer; +var float m_fLockTimer; +var float m_fPurchaseTimer; +var GFxObject m_mcFrame; +var GFxObject m_mcFrameLine; +var GFxObject m_mcFrameGlow; +var GFxObject m_mcBlocker; +var UIComponent_AcquisitionCarousel m_Carousel; +var UIPurchaseScreen m_PurchaseScreen; +var UIPurchaseScreen m_BoostScreen; +var GFxObject m_mcAcquired; +var UIInteractable_Item m_mcAcquiredCard; +var GFxObject m_mcAcquiredGlow; +var GFxObject m_mcAcquiredItem; +var GFxObject m_mcAcquiredTitle; +var GFxObject m_mcAcquiredTitleTF; +var GFxObject m_mcAcquiredAnimTitle; +var GFxObject m_mcAcquiredAnimTitleTF; +var GFxObject m_mcAcquiredButtonOk; +var GFxObject m_mcAcquiredButtonMultiOk; +var GFxObject m_mcAcquiredButtonDismiss; +var GFxObject m_mcAcquiredPrompt; +var GFxObject m_mcAcquiredPromptDismiss; +var GFxObject m_mcAcquiredSubtitle; +var GFxObject m_mcAcquiredSubtitleTF; +var GFxObject m_mcAcquiredCountTF; +var GFxObject m_mcAcquiredButtonEquipAll; +var array m_Items; +var array m_PurchaseOptions; +var array m_PurchaseItems; +var UIAcquiredItem m_AcquiredItem; +var UIAcquiredCoupon m_AcquiredCoupon; +var AkBaseSoundObject m_scAcquireStart; +var AkBaseSoundObject m_scAcquireFinish; +var AkEvent m_akPurchaseItem; +var SoundCue m_scUnlocked; + +defaultproperties +{ + m_scAcquireStart=AkEvent'WW_UI_Default.UI_Menu_CardCraft_Buildup_Play' + m_scAcquireFinish=AkEvent'WW_UI_Default.UI_Menu_CardCraft_Finish_Play' + m_akPurchaseItem=AkEvent'WW_UI_Default.UI_Menu_Purchase_Play' + m_scUnlocked=SoundCue'AUD_UI_Chest.A_CUE_ChestOpen_Medium_Ending_Explosion_5' + m_UISceneClass=Class'TgClient.UIScene_UIAcquisition' + m_OptionList[0]=14 + m_OptionList[1]=4 + m_nBackground=1 + m_bBlur=true + m_bResetFocusOnShow=true + m_bIsPopup=true + m_bPushesSceneFromSubscenes=true + m_Name="UIAcquisition" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIBackground.uc b/exported/TgClient/Classes/UIBackground.uc new file mode 100755 index 00000000..24a06785 --- /dev/null +++ b/exported/TgClient/Classes/UIBackground.uc @@ -0,0 +1,17 @@ +class UIBackground extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIBACKGROUND_TYPES = 8; + +var byte m_eState; +var float m_fAnimationDelay; +var float m_fAnimationTimer; +var GFxObject m_mcAnimation; +var GFxObject m_mcImage[8]; + +defaultproperties +{ + m_fAnimationDelay=10.0000000 + m_bVisibleOnLoad=true + m_Name="UIBackground" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIChampion.uc b/exported/TgClient/Classes/UIChampion.uc new file mode 100755 index 00000000..795d552b --- /dev/null +++ b/exported/TgClient/Classes/UIChampion.uc @@ -0,0 +1,318 @@ +class UIChampion extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UICHAMPION_SLOTS = 8; +const UICHAMPION_ITEMS = 9; +const UICHAMPION_CARDS = 5; +const UICHAMPION_EQUIPS = 4; +const UICHAMPION_SKILLS = 5; +const UICHAMPION_ARROWS = 2; +const UICHAMPION_HEADERS = 5; +const UICHAMPION_TITLES = 4; +const UICHAMPION_CHOICES = 16; +const UICHAMPION_OPTIONS = 5; +const UICHAMPION_ITEMTABS = 6; +const UICHAMPION_LOADOUTS = 6; +const UICHAMPION_SEARCHES = 3; +const UICHAMPION_LIST_SIZE = 6; + +enum UIITEMTAB_STATE +{ + UIIT_HEADS, // 0 + UIIT_BODY, // 1 + UIIT_WEAPONS, // 2 + UIIT_EMOTES, // 3 + UIIT_VOICES, // 4 + UIIT_MVPPOSES, // 5 + UIIT_SPRAYS, // 6 + UIIT_MAX // 7 +}; + +enum UISEARCH_STATE +{ + UISS_NONE, // 0 + UISS_TYPE, // 1 + UISS_NAME, // 2 + UISS_LIST, // 3 + UISS_MAX // 4 +}; + +struct native UICustomItemData +{ + var GFxObject pButton; + var bool bUnlockable; + var bool bChest; + var bool bCollection; + + structdefaultproperties + { + pButton=none + bUnlockable=false + bChest=false + bCollection=false + } +}; + +struct native SearchListEntry +{ + var string PlayerName; + var UniqueNetId PlayerNetId; + + structdefaultproperties + { + PlayerName="" + PlayerNetId=(Uid=()) + } +}; + +var int m_nCardIndex; +var int m_nLoadoutIndex; +var int m_nTempHeadId; +var int m_nTempSkinId; +var int m_nTempEmoteId; +var int m_nTempVoiceId; +var int m_nTempWeaponId; +var int m_nTempMVPPose; +var int m_nTempSpray; +var int m_nScrollIndex; +var int m_nSearchIndex; +var int m_nCollectionIndex; +var int m_nImportIndex; +var int m_nNavigateType; +var int m_nNavigateIndex; +var bool m_bScrolling; +var bool m_bImporting; +var bool m_bHovering; +var bool m_bRotating; +var bool m_bRenaming; +var bool m_bCardSelect; +var bool m_bErrorPopup; +var bool m_bPurchasing; +var bool m_bEditLoadout; +var bool m_bPromptRename; +var bool m_bResetCollection; +var bool m_bAllImportOwned; +var bool m_bIsMasteryRewards; +var float m_fPreviousPosX; +var float m_fUltimateTimeout; +var float m_fSearchTimeout; +var float m_fSlotLockFadeIn; +var float m_fSlotLockFadeOut; +var string m_sSearchName; +var array m_nCardChoices; +var array m_nIndexMappings; +var array m_SearchList; +var UIScene_UIChampion.UICHAMPION_STATE m_eState; +var UIChampion.UIITEMTAB_STATE m_eTabState; +var UIChampion.UISEARCH_STATE m_eSearchState; +var GFxObject m_mcBack; +var GFxObject m_mcTitle; +var GFxObject m_mcSubtitle; +var GFxObject m_mcHeader; +var GFxObject m_mcHeaderFrame; +var GFxObject m_mcRotator; +var GFxObject m_mcScrollBar; +var GFxObject m_mcHeaderButton[5]; +var GFxObject m_mcHeaderButtonCTA[5]; +var GFxObject m_mcHeaderButtonLine[5]; +var GFxObject m_mcHeaderButtonGlow[5]; +var GFxObject m_mcHeaderButtonBounds[5]; +var GFxObject m_mcHeaderButtonShadow[5]; +var GFxObject m_mcHeaderButtonSelected[5]; +var GFxObject m_mcHeaderButtonHighlight[5]; +var GFxObject m_mcSkills; +var GFxObject m_mcSkill[5]; +var GFxObject m_mcSkillKey[5]; +var GFxObject m_mcSkillBase[5]; +var GFxObject m_mcSkillIcon[5]; +var GFxObject m_mcSkillTitle[5]; +var GFxObject m_mcSkillDamage[5]; +var GFxObject m_mcSkillSubtitle[5]; +var GFxObject m_mcSkillCooldown[5]; +var GFxObject m_mcSkillCooldownTF[5]; +var GFxObject m_mcError; +var GFxObject m_mcErrorTitle; +var GFxObject m_mcErrorButton; +var GFxObject m_mcErrorSubtitle; +var TgGFxGroup m_grError; +var GFxObject m_mcSearch; +var GFxObject m_mcSearchFrame; +var GFxObject m_mcSearchBlocker; +var GFxObject m_mcSearchType; +var GFxObject m_mcSearchTypeButton[3]; +var GFxObject m_mcSearchTypeClose; +var GFxObject m_mcSearchTypeTitle; +var GFxObject m_mcSearchList; +var GFxObject m_mcSearchListError; +var GFxObject m_mcSearchListTitle; +var GFxObject m_mcSearchListClose; +var GFxObject m_mcSearchListScrollBar; +var GFxObject m_mcSearchListRow[6]; +var GFxObject m_mcSearchListRowName[6]; +var GFxObject m_mcSearchListRowRank[6]; +var GFxObject m_mcSearchListRowImport[6]; +var GFxObject m_mcSearchName; +var GFxObject m_mcSearchNameDone; +var GFxObject m_mcSearchNameClose; +var GFxObject m_mcSearchNameError; +var GFxObject m_mcSearchNameInput; +var TgGFxGroup m_grSearch; +var TgGFxGroup m_grSearchName; +var TgGFxGroup m_grSearchList; +var GFxObject m_mcImport; +var GFxObject m_mcImportDone; +var GFxObject m_mcImportPage; +var GFxObject m_mcImportTitle; +var GFxObject m_mcImportClose; +var GFxObject m_mcImportError; +var GFxObject m_mcImportBumper[2]; +var GFxObject m_mcImportCard[5]; +var GFxObject m_mcImportCardInfo[5]; +var GFxObject m_mcImportCardPrice[5]; +var GFxObject m_mcImportArrow[2]; +var TgGFxGroup m_grImport; +var GFxObject m_mcRename; +var GFxObject m_mcRenameDone; +var GFxObject m_mcRenameDoneTF; +var GFxObject m_mcRenameTitle; +var GFxObject m_mcRenameInput; +var GFxObject m_mcRenameCancel; +var GFxObject m_mcRenameCancelTF; +var TgGFxGroup m_grRename; +var GFxObject m_mcCards; +var UIInteractable_Item m_mcCard[16]; +var GFxObject m_mcCardTitles[4]; +var GFxObject m_mcCardTitleIcons[4]; +var TgGFxGroup m_grCard; +var GFxObject m_mcSound; +var GFxObject m_mcCollection; +var UIComponent_Dropdown m_CollectionViewDropdown; +var UIComponent_Dropdown m_CollectionSortDropdown; +var GFxObject m_mcCollectionProgressOwned; +var GFxObject m_mcCollectionProgressTotal; +var GFxObject m_mcCollectionProgressMask; +var UIComponentPool m_CollectionPool; +var GFxObject m_mcCollectionScrollBar; +var array m_CollectionCards; +var float m_fCollectionCardWidth; +var float m_fCollectionCardHeight; +var float m_fCollectionCardXSpacing; +var float m_fCollectionCardYSpacing; +var float m_fCollectionXOffset; +var float m_fCollectionYOffset; +var UIDataItem m_CollectionDetailItem; +var GFxObject m_mcCollectionDetails; +var GFxObject m_mcCollectionDetailsTitle; +var GFxObject m_mcCollectionDetailsRarity; +var UIInteractable_Item m_CollectionDetailsCard; +var GFxObject m_mcCollectionDetailsCraftButton; +var GFxObject m_mcCollectionCraftPrompt; +var GFxObject m_mcCollectionDetailsDisenchantText; +var GFxObject m_mcCollectionDetailsDisenchantButton; +var GFxObject m_mcCollectionDisenchantPrompt; +var GFxObject m_mcCollectionDisenchantPromptCurrency; +var GFxObject m_mcCollectionDisenchantPromptText; +var TgGFxGroup m_grCollection; +var GFxObject m_mcLoadouts; +var GFxObject m_mcLoadoutImport; +var GFxObject m_mcLoadoutImportTitle; +var GFxObject m_mcLoadout[6]; +var GFxObject m_mcLoadoutTitle[6]; +var GFxObject m_mcLoadoutSubtitle[6]; +var UIInteractable_Button m_LoadoutEditButton[6]; +var UIInteractable_Button m_LoadoutDeleteButton[6]; +var TgGFxGroup m_grLoadouts; +var GFxObject m_mcEdit; +var UIComponent_AbilityPointsPool m_EditAbilityPointsPool; +var GFxObject m_mcEditTitle; +var GFxObject m_mcEditSubtitle; +var GFxObject m_mcEditPoints; +var GFxObject m_mcEditPointsTitle; +var GFxObject m_mcEditPointsProgress; +var GFxObject m_mcEditCard[5]; +var GFxObject m_mcEditInfo[5]; +var GFxObject m_mcEditSlot[5]; +var GFxObject m_mcEditPowerUp[5]; +var GFxObject m_mcEditPowerDown[5]; +var GFxObject m_mcEditSlotTitle[5]; +var GFxObject m_mcEditOption[5]; +var GFxObject m_mcEditOptionTitle[5]; +var TgGFxGroup m_grEdit; +var TgGFxGroup m_grEditButtons; +var GFxObject m_mcSlots; +var GFxObject m_mcSlot[8]; +var GFxObject m_mcSlotBack[8]; +var GFxObject m_mcSlotLock[8]; +var GFxObject m_mcSlotType[8]; +var GFxObject m_mcSlotIcon[8]; +var GFxObject m_mcSlotName[8]; +var GFxObject m_mcSlotFade[8]; +var GFxObject m_mcSlotChest[8]; +var GFxObject m_mcSlotEmpty[8]; +var GFxObject m_mcSlotFrame[8]; +var GFxObject m_mcSlotIcon_Icon[8]; +var GFxObject m_mcSlotIcon_CardIcon[8]; +var GFxObject m_mcSlotLocked[8]; +var GFxObject m_mcSlotPriceA[8]; +var GFxObject m_mcSlotPriceB[8]; +var GFxObject m_mcSlotRarity[8]; +var GFxObject m_mcSlotUnlock[8]; +var GFxObject m_mcSlotOptions[8]; +var GFxObject m_mcSlotIconFrame[8]; +var GFxObject m_mcSlotOwnership[8]; +var GFxObject m_mcSlotCTA[8]; +var TgGFxGroup m_grSlots; +var GFxObject m_mcItems; +var GFxObject m_mcItemHeader; +var GFxObject m_mcItemHeaderBack; +var GFxObject m_mcItemHeaderType; +var GFxObject m_mcItemHeaderName; +var GFxObject m_mcItemHeaderOwned; +var GFxObject m_mcItemHeaderTotal; +var GFxObject m_mcItemHeaderUnlocks; +var GFxObject m_mcItemHeaderProgress; +var GFxObject m_mcItemContainer; +var GFxObject m_mcItemScrollBar; +var GFxObject m_mcItemRentalText; +var GFxObject m_mcItemRentalTextLabel; +var GFxObject m_mcItemRentalTextDuration; +var TgGFxGroup m_grItems; +var GFxObject m_mcExclusiveBanner; +var GFxObject m_mcExclusiveLabel; +var GFxObject m_mcExclusiveDescription; +var GFxObject m_mcExclusiveIconQuests; +var array m_Items; +var array m_ItemData; +var init array m_CTACosmeticIds; +var init array m_CTACardIds; +var() int m_nItemXOffset; +var() int m_nItemYOffset; +var() int m_nItemWidth; +var() int m_nItemHeight; +var int m_nItemButtonHeight; +var int m_nItemButtonWidth; +var float m_fOriginalCollisionHeight; +var float m_fOriginalCollisionRadius; + +defaultproperties +{ + m_nNavigateType=-1 + m_fCollectionCardWidth=312.0000000 + m_fCollectionCardHeight=512.0000000 + m_fCollectionXOffset=120.0000000 + m_fCollectionYOffset=100.0000000 + m_nItemXOffset=120 + m_nItemYOffset=102 + m_nItemWidth=220 + m_nItemHeight=235 + m_nItemButtonHeight=32 + m_nItemButtonWidth=190 + m_UISceneClass=Class'TgClient.UIScene_UIChampion' + m_OptionList[0]=14 + m_OptionList[1]=4 + m_nBackground=2 + m_bBlur=true + m_bResetFocusOnShow=true + m_bResetHeaderFocusOnShow=false + m_Name="UIChampion" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIChampionSelect.uc b/exported/TgClient/Classes/UIChampionSelect.uc new file mode 100755 index 00000000..8746090d --- /dev/null +++ b/exported/TgClient/Classes/UIChampionSelect.uc @@ -0,0 +1,65 @@ +class UIChampionSelect extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UICHAMPIONSELECT_COUNT = 33; + +struct native UIChamionFoundersPackPanel +{ + var GFxObject Obj; + var GFxObject Title; + var GFxObject SubTitle; + var GFxObject BuyNow; + var GFxObject Price; + var GFxObject SaleBanner; + + structdefaultproperties + { + Obj=none + Title=none + SubTitle=none + BuyNow=none + Price=none + SaleBanner=none + } +}; + +struct native UICHAMP_CLIP +{ + var GFxObject pObj; + + structdefaultproperties + { + pObj=none + } +}; + +var GFxObject m_mcBack; +var GFxObject m_mcTitle; +var GFxObject m_mcHeader; +var GFxObject m_mcChampions; +var GFxObject m_mcChampionBack; +var GFxObject m_mcChampionTitle; +var GFxObject m_mcChampionScrollBar; +var GFxObject m_mcChampionSubtitle; +var GFxObject m_mcChampionClassIcon; +var TgGFxGroup m_grChampions; +var TgGFxGroup m_grpFounderPack; +var array m_ChampionClips; +var int m_nChampionScroll; +var float m_fChampWidth; +var float m_fChampHeight; +var string m_sCurrencyCode; +var string m_sFoundersPackTitle; +var string m_sFoundersPackSubtitle; +var UIChamionFoundersPackPanel m_FoundersPack; +var bool m_bShowFounderAdd; + +defaultproperties +{ + m_OptionList[0]=14 + m_OptionList[1]=4 + m_nBackground=1 + m_bBlur=true + m_bAllowMultipleOnStack=false + m_Name="UIChampionSelect" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIChatTab.uc b/exported/TgClient/Classes/UIChatTab.uc new file mode 100755 index 00000000..e0f33e5e --- /dev/null +++ b/exported/TgClient/Classes/UIChatTab.uc @@ -0,0 +1,76 @@ +class UIChatTab extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const CHAT_OUTPUT_COUNT = 4; + +struct native ChannelData +{ + var int nChannel; + var string sName; + + structdefaultproperties + { + nChannel=0 + sName="" + } +}; + +var int m_nScroll; +var int m_nChannel; +var int m_nIdentity; +var int m_nPrevIndex; +var int m_nLineNumber; +var int m_nOutputCount; +var bool m_bOpen; +var bool m_bCanChat; +var bool m_bCanScroll; +var bool m_bPrevInputState; +var float m_fBuffer; +var float m_fOutputWidth; +var string m_sRecipient; +var string m_sRemaining; +var string m_sLastInput; +var TgChatData m_pChatData; +var GFxObject m_mcClose; +var GFxObject m_mcMinimize; +var GFxObject m_mcOpen; +var GFxObject m_mcOpenTF; +var GFxObject m_mcOpenFrame; +var GFxObject m_mcOpenButton; +var GFxObject m_mcOpenButtonTF; +var GFxObject m_mcOpenButtonEdge; +var GFxObject m_mcOpenButtonMask; +var GFxObject m_mcBuffer; +var GFxObject m_mcButton; +var GFxObject m_mcButtonTF; +var GFxObject m_mcButtonEdge; +var GFxObject m_mcButtonMask; +var GFxObject m_mcButtonHighlight; +var GFxObject m_mcNotify; +var GFxObject m_mcScroll; +var GFxObject m_mcInput; +var GFxObject m_mcInputBtn; +var GFxObject m_mcOutput[4]; +var array m_Messages; +var array m_PrevChats; +var array m_Shortcuts; + +defaultproperties +{ + m_fOutputWidth=520.0000000 + m_Shortcuts[0]=(nChannel=0,sName="r") + m_Shortcuts[1]=(nChannel=0,sName="reply") + m_Shortcuts[2]=(nChannel=0,sName="w") + m_Shortcuts[3]=(nChannel=0,sName="whisper") + m_Shortcuts[4]=(nChannel=0,sName="c") + m_Shortcuts[5]=(nChannel=0,sName="clan") + m_Shortcuts[6]=(nChannel=0,sName="l") + m_Shortcuts[7]=(nChannel=0,sName="local") + m_Shortcuts[8]=(nChannel=0,sName="g") + m_Shortcuts[9]=(nChannel=0,sName="game") + m_Shortcuts[10]=(nChannel=0,sName="t") + m_Shortcuts[11]=(nChannel=0,sName="twitch") + m_bVisibleOnLoad=true + m_bResize=false + m_Name="ChatTab" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIChests.uc b/exported/TgClient/Classes/UIChests.uc new file mode 100755 index 00000000..42d67fad --- /dev/null +++ b/exported/TgClient/Classes/UIChests.uc @@ -0,0 +1,236 @@ +class UIChests extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UICHESTS_MAX_BUNDLES = 4; +const UICHESTS_BOOSTCHEST = 3; +const UICHESTS_SKIP_LOCKOUT = 0.25f; + +enum UIChestState +{ + UICHESTS_NONE, // 0 + UICHESTS_WAITINGFORSERVER, // 1 + UICHESTS_WAITINGFORTIMEOUT, // 2 + UICHESTS_OPENING, // 3 + UICHESTS_OPENED, // 4 + UICHESTS_GOLDCARDDELAY, // 5 + UICHESTS_GOLDCARDSHOWN, // 6 + UICHESTS_DONE, // 7 + UICHESTS_MAX // 8 +}; + +struct native UIChestData +{ + var int nItemId; + var int nVendorId; + var int nSortOrder; + var int nRolls; + var int nBoostBonusRolls; + var int nCachedOwnedChests; + var int nBundleVendorId; + var int nBundleCount; + var int nBundleItemIds[4]; + var int nBundleItemCounts[4]; + + structdefaultproperties + { + nItemId=0 + nVendorId=0 + nSortOrder=0 + nRolls=0 + nBoostBonusRolls=0 + nCachedOwnedChests=0 + nBundleVendorId=0 + nBundleCount=0 + nBundleItemIds[0]=0 + nBundleItemIds[1]=0 + nBundleItemIds[2]=0 + nBundleItemIds[3]=0 + nBundleItemCounts[0]=0 + nBundleItemCounts[1]=0 + nBundleItemCounts[2]=0 + nBundleItemCounts[3]=0 + } +}; + +struct native UIChestItem +{ + var GFxObject mcItem; + var GFxObject mcItemChampion; + var GFxObject mcItemChampionIcon; + var GFxObject mcItemIcon; + var GFxObject mcItemCardIcon; + var GFxObject mcItemGlow; + var GFxObject mcItemAudio; + var GFxObject mcItemTitle; + var GFxObject mcItemRarity; + var GFxObject mcItemRarityText; + var GFxObject mcItemCurrency; + var GFxObject mcItemSubtitle; + var GFxObject mcItemDuplicateLabel; + var GFxObject mcEquipButton; + var GFxObject mcEquippedText; + var GFxObject mcEquipPrompt; + var GFxObject mcEquipPromptButton; + var GFxObject mcInputFrame; + var UIInteractable_Item Card; + + structdefaultproperties + { + mcItem=none + mcItemChampion=none + mcItemChampionIcon=none + mcItemIcon=none + mcItemCardIcon=none + mcItemGlow=none + mcItemAudio=none + mcItemTitle=none + mcItemRarity=none + mcItemRarityText=none + mcItemCurrency=none + mcItemSubtitle=none + mcItemDuplicateLabel=none + mcEquipButton=none + mcEquippedText=none + mcEquipPrompt=none + mcEquipPromptButton=none + mcInputFrame=none + Card=none + } +}; + +var int m_nChestId; +var UIChests.UIChestState m_eState; +var float m_fStateTimer; +var bool m_bAutoLoot; +var bool m_bQueuedSkip; +var bool m_bShowingTreasureRoll; +var int m_nMissedItemId; +var int m_nMissedSecondaryItemId; +var array m_nRolledItems; +var array m_nRolledItemOverrides; +var float m_fOpeningTime; +var float m_fSprayPopupDelayTime; +var float m_fSprayPopupOpeningTime; +var float m_fSkipExitGuardTime; +var float m_fSkipExitGuardTimer; +var float m_fWaitingForServerDisplayTime; +var float m_fTimeoutTime; +var float m_fSkipLockoutTimer; +var dword m_scEpic; +var dword m_scRare; +var dword m_scLegendary; +var GFxObject m_mcChests; +var GFxObject m_mcBack; +var GFxObject m_mcCursor; +var GFxObject m_mcTitle; +var GFxObject m_mcHeader; +var GFxObject m_mcAcquired; +var GFxObject m_mcBoostIcon; +var GFxObject m_mcBoostBonusText; +var GFxObject m_mcBoosterButton; +var GFxObject m_mcBoosterButton_Title; +var GFxObject m_mcBoosterButtonConsole; +var Vector2D m_vBoostedObjectCenter; +var Vector2D m_vEquipButtonOffset; +var Vector2D m_vEquipPromptOffset; +var Vector2D m_vEquippedTextOffset; +var GFxObject m_mcSkipPrompt; +var GFxObject m_mcSkipPromptBG; +var array m_Items; +var array m_DuplicateItems; +var array m_nGoldCardIds; +var array m_nGoldSprayIds; +var TgGFxGroup m_grPopup; +var TgGFxGroup m_grItems; +var int m_nNavGroupX; +var GFxObject m_mcSprayPopup; +var GFxObject m_mcSprayPopupCardItem; +var GFxObject m_mcSprayPopupCardItemGlow; +var UIChestItem m_SprayPopupSprayItem; +var GFxObject m_mcSprayPopupButton; +var float m_fMissedCardAlpha; +var float m_fBaseCardPreDropTime; +var float m_fOverrideCardPreDropTime; +var GFxObject m_mcWaiting; +var GFxObject m_mcWaitingSpinner; +var float m_fWaitingSpinnerRotation; + +simulated event float QueueLootAnimations(array baseItems, array desiredScales, array desiredAlphas, array overrideItems, array duplicateLabelClips) +{ + local int I; + local float fFadeInDelay; + + fFadeInDelay = 0.1000000; + I = 0; + J0x1A: + + // End:0x11A [Loop If] + if(I < baseItems.Length) + { + fFadeInDelay += m_fBaseCardPreDropTime; + Animate(baseItems[I], 0.1500000, 2, desiredAlphas[I], fFadeInDelay); + Animate(baseItems[I], 0.1500000, 5, desiredScales[I], fFadeInDelay); + Animate(baseItems[I], 0.1500000, 6, desiredScales[I], fFadeInDelay); + I++; + // [Loop Continue] + goto J0x1A; + } + fFadeInDelay += 0.2500000; + I = 0; + J0x135: + + // End:0x47F [Loop If] + if(I < overrideItems.Length) + { + // End:0x2A0 + if(duplicateLabelClips[I] != none) + { + fFadeInDelay += m_fOverrideCardPreDropTime; + duplicateLabelClips[I].SetAlpha(0.0000000); + duplicateLabelClips[I].SetXScale(250.0000000); + duplicateLabelClips[I].SetYScale(250.0000000); + Animate(duplicateLabelClips[I], 0.1500000, 2, 100.0000000, fFadeInDelay); + Animate(duplicateLabelClips[I], 0.1500000, 5, 100.0000000, fFadeInDelay); + Animate(duplicateLabelClips[I], 0.1500000, 6, 100.0000000, fFadeInDelay); + } + // End:0x471 + if(overrideItems[I] != none) + { + fFadeInDelay += m_fOverrideCardPreDropTime; + Animate(overrideItems[I], 0.3300000, 2, desiredAlphas[I], fFadeInDelay); + Animate(overrideItems[I], 0.3300000, 5, desiredScales[I], fFadeInDelay); + Animate(overrideItems[I], 0.3300000, 6, desiredScales[I], fFadeInDelay); + Animate(baseItems[I], 0.2500000, 2, 0.0000000, fFadeInDelay + 0.2500000, 1, false); + Animate(baseItems[I], 0.2500000, 5, desiredScales[I] * 0.5000000, fFadeInDelay + 0.2500000, 1, false); + Animate(baseItems[I], 0.2500000, 6, desiredScales[I] * 0.5000000, fFadeInDelay + 0.2500000, 1, false); + } + I++; + // [Loop Continue] + goto J0x135; + } + FadeOut(m_mcSkipPrompt, 0.3300000, fFadeInDelay); + FadeOut(m_mcSkipPromptBG, 0.3300000, fFadeInDelay); + return fFadeInDelay; + //return ReturnValue; +} + +defaultproperties +{ + m_fOpeningTime=3.5000000 + m_fSprayPopupDelayTime=0.7500000 + m_fSprayPopupOpeningTime=1.0000000 + m_fSkipExitGuardTime=0.5000000 + m_fWaitingForServerDisplayTime=5.0000000 + m_fTimeoutTime=20.0000000 + m_vEquipButtonOffset=(X=22.5000000,Y=165.2500000) + m_vEquipPromptOffset=(X=87.0000000,Y=166.4000000) + m_vEquippedTextOffset=(X=25.1500000,Y=166.5500000) + m_fMissedCardAlpha=75.0000000 + m_fBaseCardPreDropTime=0.2500000 + m_fOverrideCardPreDropTime=0.2500000 + m_OptionList[0]=14 + m_OptionList[1]=4 + m_OptionList[2]=0 + m_bAlwaysTick=true + m_Name="UIChests" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UICompetitive.uc b/exported/TgClient/Classes/UICompetitive.uc new file mode 100755 index 00000000..bc724baa --- /dev/null +++ b/exported/TgClient/Classes/UICompetitive.uc @@ -0,0 +1,10 @@ +class UICompetitive extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_UICompetitive' + m_OptionList[0]=249 + m_nBackground=1 + m_Name="UICompetitive" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UICompetitivePopupWelcome.uc b/exported/TgClient/Classes/UICompetitivePopupWelcome.uc new file mode 100755 index 00000000..d77048eb --- /dev/null +++ b/exported/TgClient/Classes/UICompetitivePopupWelcome.uc @@ -0,0 +1,12 @@ +class UICompetitivePopupWelcome extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_UICompetitivePopupWelcome' + m_OptionList[0]=245 + m_OptionList[1]=3 + m_nBackground=1 + m_bIsPopup=true + m_Name="UICompetitivePopupWelcome" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UICompetitiveRankChange.uc b/exported/TgClient/Classes/UICompetitiveRankChange.uc new file mode 100755 index 00000000..25c81702 --- /dev/null +++ b/exported/TgClient/Classes/UICompetitiveRankChange.uc @@ -0,0 +1,11 @@ +class UICompetitiveRankChange extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_UICompetitiveRankChange' + m_OptionList[0]=245 + m_nBackground=1 + m_bIsPopup=true + m_Name="UICompetitiveRankChange" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UICompetitiveRankDecay.uc b/exported/TgClient/Classes/UICompetitiveRankDecay.uc new file mode 100755 index 00000000..8614f843 --- /dev/null +++ b/exported/TgClient/Classes/UICompetitiveRankDecay.uc @@ -0,0 +1,11 @@ +class UICompetitiveRankDecay extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_UICompetitiveRankDecay' + m_OptionList[0]=245 + m_nBackground=1 + m_bIsPopup=true + m_Name="UICompetitiveRankDecay" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent.uc b/exported/TgClient/Classes/UIComponent.uc new file mode 100755 index 00000000..e0fbf8c4 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent.uc @@ -0,0 +1,67 @@ +class UIComponent extends Object + abstract + native(UIComponent) + implements(TgCallbackInterface); + +enum UIANIMTYPE +{ + UIANIM_X, // 0 + UIANIM_Y, // 1 + UIANIM_ALPHA, // 2 + UIANIM_WIDTH, // 3 + UIANIM_HEIGHT, // 4 + UIANIM_XSCALE, // 5 + UIANIM_YSCALE, // 6 + UIANIM_VISIBLE, // 7 + UIANIM_ROTATION, // 8 + UIANIM_MAX // 9 +}; + +enum UICOMPONENTTYPE +{ + UICOMP_COMPONENT, // 0 + UICOMP_SCENE, // 1 + UICOMP_MAX // 2 +}; + +var private native const noexport Pointer VfTable_ITgCallbackInterface; +var UIComponent.UICOMPONENTTYPE m_ComponentType; +var UIComponent m_Owner; +var GFxObject m_mcRoot; +var string m_sLoadName; +var int m_nLoadIndex; +var string m_sConstructName; +var protected bool m_bConstructed; +var int m_nDeferredUpdateCallbackHandle; +var const array m_Components; +var native const MultiMap_Mirror m_ComponentMap; +var TgCallbackContainer m_CallbackContainer; + +// Export UUIComponent::execFadeIn(FFrame&, void* const) +native function FadeIn(GFxObject pObj, optional float fTime = 0.0500000, optional float fDelay = 0.0000000); + +// Export UUIComponent::execFadeOut(FFrame&, void* const) +native function FadeOut(GFxObject pObj, optional float fTime = 0.0500000, optional float fDelay = 0.0000000); + +// Export UUIComponent::execAnimate(FFrame&, void* const) +native function Animate(GFxObject pObj, float fTime, UIComponent.UIANIMTYPE eType, float fValue, optional float fDelay = 0.0000000, optional byte eQuad = 1, optional bool bEndCurrentAnim = true); + +// Export UUIComponent::execIsAnimating(FFrame&, void* const) +native function bool IsAnimating(GFxObject pObj, optional UIComponent.UIANIMTYPE eType = 9); + +// Export UUIComponent::execGetAnimationTarget(FFrame&, void* const) +native function float GetAnimationTarget(GFxObject pObj, optional UIComponent.UIANIMTYPE eType = 9); + +// Export UUIComponent::execEndAnim(FFrame&, void* const) +native function EndAnim(GFxObject pObj, optional UIComponent.UIANIMTYPE eType = 9); + +event float HandleAnimEvent(int nEventType, optional array fExtraData) +{ + return 0.0000000; + //return ReturnValue; +} + +defaultproperties +{ + m_nLoadIndex=-1 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponentPool.uc b/exported/TgClient/Classes/UIComponentPool.uc new file mode 100755 index 00000000..3992de43 --- /dev/null +++ b/exported/TgClient/Classes/UIComponentPool.uc @@ -0,0 +1,5 @@ +class UIComponentPool extends UIComponent + native(UIComponent); + +var array m_ActivePooledItems; +var array m_InactivePooledItems; diff --git a/exported/TgClient/Classes/UIComponent_AbilityPointsPool.uc b/exported/TgClient/Classes/UIComponent_AbilityPointsPool.uc new file mode 100755 index 00000000..77900029 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_AbilityPointsPool.uc @@ -0,0 +1,15 @@ +class UIComponent_AbilityPointsPool extends UIComponent + native(UIComponent); + +const NUM_ABILITYPOINTPOOL_SKILLS = 4; + +var bool m_bDirty; +var int m_nTickCallbackHandle; +var GFxObject m_mcAbilityPointsPool; +var GFxObject m_mcAbilityIcon[4]; +var GFxObject m_mcPointsFill[4]; +var GFxObject m_mcPointsText[4]; +var GFxObject m_mcTalentFocusFrame[4]; +var float m_fFillWidth; +var int m_nPoints[4]; +var UIDataItem.AbilityModifiedByDevice m_eFocusedAbility; diff --git a/exported/TgClient/Classes/UIComponent_AcquisitionCarousel.uc b/exported/TgClient/Classes/UIComponent_AcquisitionCarousel.uc new file mode 100755 index 00000000..b77841b9 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_AcquisitionCarousel.uc @@ -0,0 +1,59 @@ +class UIComponent_AcquisitionCarousel extends UIComponent_Interactable + native(UIComponent); + +struct native AcquisitionCarouselItem +{ + var GFxObject mcPurchaseItem; + var GFxObject mcPurchaseChest; + var UIInteractable_Item mcPurchaseCard; + var GFxObject mcPurchaseItemDisplay; + var GFxObject mcPurchaseItemIcon; + var GFxObject mcPurchaseItemCardIcon; + var GFxObject mcPurchaseItemCurrency; + var GFxObject mcPurchaseItemRarityFrame; + var GFxObject mcPurchaseItemRarityText; + var GFxObject mcPurchaseItemTypeIcon; + var GFxObject mcPurchaseItemTitle; + var GFxObject mcPurchaseItemSubtitle; + var GFxObject mcPurchaseItemChampion; + var GFxObject mcPurchaseItemChampionIcon; + var GFxObject mcPurchaseItemChampionLarge; + var GFxObject mcPurchaseItemChampionTitle; + var GFxObject mcPurchaseItemChampionImage; + var GFxObject mcPurchaseItemAudio; + + structdefaultproperties + { + mcPurchaseItem=none + mcPurchaseChest=none + mcPurchaseCard=none + mcPurchaseItemDisplay=none + mcPurchaseItemIcon=none + mcPurchaseItemCardIcon=none + mcPurchaseItemCurrency=none + mcPurchaseItemRarityFrame=none + mcPurchaseItemRarityText=none + mcPurchaseItemTypeIcon=none + mcPurchaseItemTitle=none + mcPurchaseItemSubtitle=none + mcPurchaseItemChampion=none + mcPurchaseItemChampionIcon=none + mcPurchaseItemChampionLarge=none + mcPurchaseItemChampionTitle=none + mcPurchaseItemChampionImage=none + mcPurchaseItemAudio=none + } +}; + +var UIInteractable_Button m_mcLeftArrow; +var UIInteractable_Button m_mcRightArrow; +var GFxObject m_mcLeftButtonPrompt; +var GFxObject m_mcRightButtonPrompt; +var array m_CarouselItems; +var array m_mcNavDots; +var int m_nIndex; +var float m_fNavDotCenter; +var init array m_ItemIdList; +var float m_fDotPlacementX; +var float m_fDotWidth; +var float m_fDotPadding; diff --git a/exported/TgClient/Classes/UIComponent_ChampionOverview.uc b/exported/TgClient/Classes/UIComponent_ChampionOverview.uc new file mode 100755 index 00000000..e38349aa --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_ChampionOverview.uc @@ -0,0 +1,62 @@ +class UIComponent_ChampionOverview extends UIComponent + native(UIComponent); + +const UICHAMPION_COLLECTS = 4; +const UICHAMPION_SKILLS = 5; + +var GFxObject m_mcRating; +var GFxObject m_mcRatingProgress; +var GFxObject m_mcRatingProgressTip; +var GFxObject m_mcRatingProgressFill; +var GFxObject m_mcRatingRankSubtitle; +var GFxObject m_mcRatingAwardTitle; +var GFxObject m_mcRatingAwardSubtitle; +var GFxObject m_mcRatingNext; +var GFxObject m_mcRatingPrev; +var GFxObject m_mcRatingNextRank; +var GFxObject m_mcUnlock; +var GFxObject m_mcOverviewStats; +var GFxObject m_mcOverviewStatsProgress; +var GFxObject m_mcOverviewStatsExpSubtitle; +var GFxObject m_mcOverviewStatsWinsSubtitle; +var GFxObject m_mcOverviewStatsNextSubtitle; +var GFxObject m_mcOverviewStatsLevelSubtitle; +var GFxObject m_mcOverviewDetailsTitle; +var GFxObject m_mcOverviewDetailsSubtitle; +var GFxObject m_mcOverviewDetailsClassIcon; +var GFxObject m_mcOverviewChampionIcon; +var GFxObject m_mcOverviewChampionFrame; +var GFxObject m_mcOverviewSkill[5]; +var GFxObject m_mcOverviewSkillIcon[5]; +var GFxObject m_mcCollectionOverview; +var GFxObject m_mcOverviewCollection[4]; +var GFxObject m_mcOverviewCollectionProgress[4]; +var GFxObject m_mcOverviewCollectionOwnedTitle[4]; +var GFxObject m_mcOverviewCollectionOwnedSubtitle[4]; +var TgGFxGroup m_grUnlock; +var GFxObject m_mcRewardCurrency; +var GFxObject m_mcRewardFinePrint; +var GFxObject m_mcRewardName; +var GFxObject m_mcRentalText; +var GFxObject m_mcRentalTextLabel; +var GFxObject m_mcRentalTextDuration; +var GFxObject m_mcUnlockPanel; +var GFxObject m_mcUnlockPanelPurchase; +var GFxObject m_mcUnlockPanelPurchasePrice0; +var GFxObject m_mcUnlockPanelPurchasePrice0Currency; +var GFxObject m_mcUnlockPanelPurchasePrice1; +var GFxObject m_mcUnlockPanelPurchasePrice1Currency; +var GFxObject m_mcUnlockPanelRent; +var GFxObject m_mcUnlockPanelRentPrice0; +var GFxObject m_mcUnlockPanelRentPrice0Currency; +var GFxObject m_mcUnlockPanelFreeRotation; +var GFxObject m_mcUnlockPanelInputPrompt; +var GFxObject m_mcUnlockPanelUnlockButton; +var UIInteractable_Button_GamepadPrompt m_pLeaderboardButton; +var UIInteractable_Button_GamepadPrompt m_pDetailsButton; +var UIInteractable_Button_ChampUnlock m_pPurchaseButton; + +defaultproperties +{ + m_sLoadName="Overview" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_ChampionRankRow.uc b/exported/TgClient/Classes/UIComponent_ChampionRankRow.uc new file mode 100755 index 00000000..393c80c7 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_ChampionRankRow.uc @@ -0,0 +1,12 @@ +class UIComponent_ChampionRankRow extends UIComponent + native(UIList); + +var GFxObject m_mcName; +var GFxObject m_mcType; +var GFxObject m_mcWins; +var GFxObject m_mcLosses; +var GFxObject m_mcRank; +var GFxObject m_mcChampionIcon; +var GFxObject m_mcMasteryTitle; +var UIComponent_ProgressBarHorizontal m_MasteryProgress; +var UIInteractable_Button m_pDetailsButton; diff --git a/exported/TgClient/Classes/UIComponent_ChampionSimple.uc b/exported/TgClient/Classes/UIComponent_ChampionSimple.uc new file mode 100755 index 00000000..f8cd76d7 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_ChampionSimple.uc @@ -0,0 +1,6 @@ +class UIComponent_ChampionSimple extends UIComponent + native(UIList); + +var GFxObject m_mcText; +var GFxObject m_mcChampionIconWrapper; +var GFxObject m_mcIconImage; diff --git a/exported/TgClient/Classes/UIComponent_CompetitiveRankChange.uc b/exported/TgClient/Classes/UIComponent_CompetitiveRankChange.uc new file mode 100755 index 00000000..4785d509 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_CompetitiveRankChange.uc @@ -0,0 +1,6 @@ +class UIComponent_CompetitiveRankChange extends UIComponent + native(UIList); + +var UIComponent_Interactable m_pButton; +var GFxObject m_mcRankIcon; +var GFxObject m_mcRankName; diff --git a/exported/TgClient/Classes/UIComponent_CompetitiveRankedDecay.uc b/exported/TgClient/Classes/UIComponent_CompetitiveRankedDecay.uc new file mode 100755 index 00000000..4e6d7de0 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_CompetitiveRankedDecay.uc @@ -0,0 +1,5 @@ +class UIComponent_CompetitiveRankedDecay extends UIComponent + native(UIList); + +var UIComponent_Interactable m_pButton; +var GFxObject m_mcRankIcon; diff --git a/exported/TgClient/Classes/UIComponent_CompetitiveWelcome.uc b/exported/TgClient/Classes/UIComponent_CompetitiveWelcome.uc new file mode 100755 index 00000000..4994f86d --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_CompetitiveWelcome.uc @@ -0,0 +1,6 @@ +class UIComponent_CompetitiveWelcome extends UIComponent + native(UIList); + +var UIComponent_List m_pRewards; +var UIComponent_Interactable m_pOkButton; +var UIComponent_Interactable m_pInfoButton; diff --git a/exported/TgClient/Classes/UIComponent_DailyRewards.uc b/exported/TgClient/Classes/UIComponent_DailyRewards.uc new file mode 100755 index 00000000..991d67a2 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_DailyRewards.uc @@ -0,0 +1,41 @@ +class UIComponent_DailyRewards extends UIComponent + native(UIComponent); + +const DAILYREWARD_DAYS = 7; + +var TgRewardCenterManager m_RewardCenter; +var TgGFxGroup m_grDailyReward; +var GFxObject m_mcBlocker; +var GFxObject m_mcTitle; +var GFxObject m_mcDescription; +var GFxObject m_mcMaxGold; +var GFxObject m_mcNextRewardTitle; +var GFxObject m_mcNextRewardText; +var UIInteractable_Button m_ClaimButton; +var UIInteractable_Button m_BoostButton; +var GFxObject m_mcDay[7]; +var GFxObject m_mcDayTitle[7]; +var GFxObject m_mcDayHighlight[7]; +var GFxObject m_mcDayReward[7]; +var GFxObject m_mcDayBackground[7]; +var GFxObject m_mcDayClaimedTF[7]; +var GFxObject m_mcBoost; +var GFxObject m_mcBoostCrystalsTF; +var GFxObject m_mcBoostGoldTF; +var GFxObject m_mcBoostBonusText; +var GFxObject m_mcBoostIcon; +var GFxObject m_mcBoostButtonConsole; +var GFxObject m_mcClaimButtonConsole; +var bool m_bBoosted; +var bool m_bWaitingForBoost; +var bool m_bHideConsolePrompts; +var int m_nBoostCrystals; +var int m_nBoostGold; +var AkBaseSoundObject m_scDailyReward; +var AkBaseSoundObject m_scDailyRewardAccept; + +defaultproperties +{ + m_scDailyReward=AkEvent'WW_UI_Default.UI_Lobby_Alert_LevelUp_CharacterMastery_Play' + m_scDailyRewardAccept=AkEvent'WW_UI_Default.UI_Menu_CardCraft_Finish_Play' +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_DemonTeleportTimer.uc b/exported/TgClient/Classes/UIComponent_DemonTeleportTimer.uc new file mode 100755 index 00000000..91378879 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_DemonTeleportTimer.uc @@ -0,0 +1,7 @@ +class UIComponent_DemonTeleportTimer extends UIComponent + native(UIComponent); + +var GFxObject m_mcTimerMask; +var TgPawn_Demon m_CachedViewedDemon; +var float m_fCurrentTimerPct; +var bool m_bVisible; diff --git a/exported/TgClient/Classes/UIComponent_Dropdown.uc b/exported/TgClient/Classes/UIComponent_Dropdown.uc new file mode 100755 index 00000000..1b859196 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Dropdown.uc @@ -0,0 +1,7 @@ +class UIComponent_Dropdown extends UIComponent + native(UIList); + +var UIComponent_GamepadKey m_pGamepadKey; +var UIComponent_List m_pList; +var UIComponent_Interactable m_pBlocker; +var UICListEntry m_Button; diff --git a/exported/TgClient/Classes/UIComponent_GamepadKey.uc b/exported/TgClient/Classes/UIComponent_GamepadKey.uc new file mode 100755 index 00000000..a5afccbe --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_GamepadKey.uc @@ -0,0 +1,4 @@ +class UIComponent_GamepadKey extends UIComponent + native(UIList); + +var TgGfxScene.GamepadKeys m_eGamepadKey; diff --git a/exported/TgClient/Classes/UIComponent_GenericTitleButtons.uc b/exported/TgClient/Classes/UIComponent_GenericTitleButtons.uc new file mode 100755 index 00000000..484d9b48 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_GenericTitleButtons.uc @@ -0,0 +1,11 @@ +class UIComponent_GenericTitleButtons extends UIComponent + native(UIComponent); + +const UICOMPONENT_GENERICTITLEBUTTONS_TITLECOUNT = 2; +const UICOMPONENT_GENERICTITLEBUTTONS_COLUMNSIZE = 4; +const UICOMPONENT_GENERICTITLEBUTTONS_BUTTONCOUNT = 8; + +var GFxObject m_mcTitle[2]; +var UIInteractable_Button m_Buttons[8]; +var int m_ButtonClickHandles[8]; +var TgGFxGroup m_grButtons; diff --git a/exported/TgClient/Classes/UIComponent_GenericTitleInputButtons.uc b/exported/TgClient/Classes/UIComponent_GenericTitleInputButtons.uc new file mode 100755 index 00000000..4acf6f0c --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_GenericTitleInputButtons.uc @@ -0,0 +1,15 @@ +class UIComponent_GenericTitleInputButtons extends UIComponent + native(UIComponent); + +const UICOMPONENT_GENERICTITLEINPUTBUTTONS_TITLECOUNT = 2; +const UICOMPONENT_GENERICTITLEINPUTBUTTONS_BUTTONCOUNT = 2; + +var GFxObject m_mcTitle[2]; +var GFxObject m_mcError; +var UIInteractable_Button m_Buttons[2]; +var int m_ButtonClickHandles[2]; +var GFxObject m_mcInputTF; +var GFxObject m_mcInputFrame; +var GFxObject m_mcInputFrameHighlight; +var TgGFxGroup m_grButtons; +var UIData_PopupInput m_pData; diff --git a/exported/TgClient/Classes/UIComponent_GoalReward.uc b/exported/TgClient/Classes/UIComponent_GoalReward.uc new file mode 100755 index 00000000..e3be43ff --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_GoalReward.uc @@ -0,0 +1,12 @@ +class UIComponent_GoalReward extends UIComponent + native(UIList); + +var GFxObject m_mcTitle; +var GFxObject m_mcItemName; +var GFxObject m_mcGoal; +var GFxObject m_mcOwned; +var GFxObject m_mcLock; +var GFxObject m_mcIconRarity; +var GFxObject m_mcIconIcon; +var GFxObject m_mcIconChestIcon; +var UIComponent_ProgressBarHorizontal m_Progress; diff --git a/exported/TgClient/Classes/UIComponent_HeaderTab.uc b/exported/TgClient/Classes/UIComponent_HeaderTab.uc new file mode 100755 index 00000000..13afd842 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_HeaderTab.uc @@ -0,0 +1,2 @@ +class UIComponent_HeaderTab extends UIComponent + native(UIList); diff --git a/exported/TgClient/Classes/UIComponent_HeaderTabs.uc b/exported/TgClient/Classes/UIComponent_HeaderTabs.uc new file mode 100755 index 00000000..3a4cbcbc --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_HeaderTabs.uc @@ -0,0 +1,4 @@ +class UIComponent_HeaderTabs extends UIComponent_List + native(UIList); + +var UIComponent_GamepadKey m_pBumpers[2]; diff --git a/exported/TgClient/Classes/UIComponent_HealthBar.uc b/exported/TgClient/Classes/UIComponent_HealthBar.uc new file mode 100755 index 00000000..3c3d6e3e --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_HealthBar.uc @@ -0,0 +1,68 @@ +class UIComponent_HealthBar extends UIComponent + native(UIComponent); + +enum EHealthTickType +{ + EHTT_Health, // 0 + EHTT_Shield, // 1 + EHTT_Shadow, // 2 + EHTT_Damage, // 3 + EHTT_MAX // 4 +}; + +enum EHealthTickColor_Player +{ + EHTCP_Invalid, // 0 + EHTCP_Blue, // 1 + EHTCP_Red, // 2 + EHTCP_Purple, // 3 + EHTCP_Orange, // 4 + EHTCP_Yellow, // 5 + EHTCP_Shadow, // 6 + EHTCP_MAX // 7 +}; + +struct native BarTickTypes +{ + var const string sMaskName; + var const string sContainerName; + var float fWidth; + var UIComponent_HealthBar.EHealthTickType eBorderTickType; + var GFxObject mcBorderTickMask; + var GFxObject mcLeftBorderTick; + var GFxObject mcRightBorderTick; + + structdefaultproperties + { + sMaskName="" + sContainerName="" + fWidth=0.0000000 + eBorderTickType=EHealthTickType.EHTT_Health + mcBorderTickMask=none + mcLeftBorderTick=none + mcRightBorderTick=none + } +}; + +var array m_mcHealthBarTicks; +var GFxObject m_mcHealthBarContainer; +var array m_BarTickTypes; +var int m_nLastUsedHealthTickColorFrame; +var float m_fDisplayedMaxHealth; +var float m_fDisplayedHealthPct; +var float m_fActualHealthPct; +var float m_fLastDisplayedHealthPct; +var float m_fDisplayedShieldPct; +var float m_fActualShieldPct; +var float m_fLastDisplayedShieldPct; +var float m_fHealthPerTick; +var float m_fBarWidth; +var float m_fTickPadding; + +defaultproperties +{ + m_BarTickTypes[0]=(sMaskName="HealthBorderTickMask",sContainerName="HealthBorderTickContainer",fWidth=0.0000000,eBorderTickType=EHealthTickType.EHTT_Health,mcBorderTickMask=none,mcLeftBorderTick=none,mcRightBorderTick=none) + m_BarTickTypes[1]=(sMaskName="ShieldBorderTickMask",sContainerName="ShieldBorderTickContainer",fWidth=0.0000000,eBorderTickType=EHealthTickType.EHTT_Shield,mcBorderTickMask=none,mcLeftBorderTick=none,mcRightBorderTick=none) + m_BarTickTypes[2]=(sMaskName="ShadowBorderTickMask",sContainerName="ShadowBorderTickContainer",fWidth=0.0000000,eBorderTickType=EHealthTickType.EHTT_Shadow,mcBorderTickMask=none,mcLeftBorderTick=none,mcRightBorderTick=none) + m_fHealthPerTick=250.0000000 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_HealthBarDamageOverlay.uc b/exported/TgClient/Classes/UIComponent_HealthBarDamageOverlay.uc new file mode 100755 index 00000000..a2991b14 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_HealthBarDamageOverlay.uc @@ -0,0 +1,36 @@ +class UIComponent_HealthBarDamageOverlay extends UIComponent + native(UIComponent); + +var UIComponent_HealthBar m_HealthbarOwner; +var bool m_bWidthDirty; +var int m_nDamageBarExtraWidth; +var int m_nLowHealthBarExtraWidth; +var GFxObject m_mcDamageOverlay; +var GFxObject m_mcLowHealthOverlay; +var float m_fOnDamageColorMaxThreshold; +var float m_fOnDamageColorMinThreshold; +var float m_fLowHealthPulseMaxThreshold; +var float m_fLowHealthPulseMinThreshold; +var float m_fLowHealthPulseInterp; +var float m_fLowHealthPulseMinInterpSpeed; +var float m_fLowHealthPulseMaxInterpSpeed; +var float m_fLowHealthInterpExp; +var float m_fOnDamageMaxAlpha; +var float m_fLowHealthMinAlpha; +var float m_fLowHealthMaxAlpha; + +defaultproperties +{ + m_bWidthDirty=true + m_nDamageBarExtraWidth=14 + m_nLowHealthBarExtraWidth=7 + m_fOnDamageColorMaxThreshold=100.0000000 + m_fLowHealthPulseMaxThreshold=0.5000000 + m_fLowHealthPulseMinThreshold=0.4000000 + m_fLowHealthPulseMinInterpSpeed=0.5000000 + m_fLowHealthPulseMaxInterpSpeed=2.0000000 + m_fLowHealthInterpExp=2.0000000 + m_fOnDamageMaxAlpha=0.3500000 + m_fLowHealthMinAlpha=0.5000000 + m_fLowHealthMaxAlpha=1.0000000 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_HealthBar_Overlay.uc b/exported/TgClient/Classes/UIComponent_HealthBar_Overlay.uc new file mode 100755 index 00000000..012c9d28 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_HealthBar_Overlay.uc @@ -0,0 +1,38 @@ +class UIComponent_HealthBar_Overlay extends UIComponent_HealthBar + native(UIComponent); + +enum EHealthTickColor_Overlay +{ + EHTCO_Invalid, // 0 + EHTCO_Blue, // 1 + EHTCO_Red, // 2 + EHTCO_Purple, // 3 + EHTCO_Orange, // 4 + EHTCO_Yellow, // 5 + EHTCO_White, // 6 + EHTCO_Green, // 7 + EHTCO_DarkYellow, // 8 + EHTCO_DarkGreen, // 9 + EHTCO_DarkBlue, // 10 + EHTCO_DarkRed, // 11 + EHTCO_DarkOrange, // 12 + EHTCO_MAX // 13 +}; + +var bool m_bFriendly; +var bool m_bInRange; +var bool m_bColorDirty; +var float m_fDisplayedDamagePct; +var float m_fDamageInterpSpeed; +var float m_fMinDamageInterpSpeed; + +defaultproperties +{ + m_fDamageInterpSpeed=4.5000000 + m_fMinDamageInterpSpeed=0.1000000 + m_BarTickTypes[0]=(sMaskName="HealthBorderTickMask",sContainerName="HealthBorderTickContainer",fWidth=0.0000000,eBorderTickType=EHealthTickType.EHTT_Health,mcBorderTickMask=none,mcLeftBorderTick=none,mcRightBorderTick=none) + m_BarTickTypes[1]=(sMaskName="ShieldBorderTickMask",sContainerName="ShieldBorderTickContainer",fWidth=0.0000000,eBorderTickType=EHealthTickType.EHTT_Shield,mcBorderTickMask=none,mcLeftBorderTick=none,mcRightBorderTick=none) + m_BarTickTypes[2]=(sMaskName="DamageBorderTickMask",sContainerName="DamageBorderTickContainer",fWidth=0.0000000,eBorderTickType=EHealthTickType.EHTT_Damage,mcBorderTickMask=none,mcLeftBorderTick=none,mcRightBorderTick=none) + m_BarTickTypes[3]=(sMaskName="ShadowBorderTickMask",sContainerName="ShadowBorderTickContainer",fWidth=0.0000000,eBorderTickType=EHealthTickType.EHTT_Shadow,mcBorderTickMask=none,mcLeftBorderTick=none,mcRightBorderTick=none) + m_fTickPadding=1.0000000 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_HealthBar_Overlay_Deployable.uc b/exported/TgClient/Classes/UIComponent_HealthBar_Overlay_Deployable.uc new file mode 100755 index 00000000..2fbabca8 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_HealthBar_Overlay_Deployable.uc @@ -0,0 +1,4 @@ +class UIComponent_HealthBar_Overlay_Deployable extends UIComponent_HealthBar_Overlay + native(UIComponent); + +var bool m_bOwned; diff --git a/exported/TgClient/Classes/UIComponent_HealthBar_Overlay_Player.uc b/exported/TgClient/Classes/UIComponent_HealthBar_Overlay_Player.uc new file mode 100755 index 00000000..98035848 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_HealthBar_Overlay_Player.uc @@ -0,0 +1,8 @@ +class UIComponent_HealthBar_Overlay_Player extends UIComponent_HealthBar_Overlay + native(UIComponent); + +var GFxObject m_mcImmortalBracketLeft; +var GFxObject m_mcImmortalBracketRight; +var GFxObject m_mcLexExecuteGuide; +var float m_fImmortal; +var bool m_bInParty; diff --git a/exported/TgClient/Classes/UIComponent_HealthBar_Player.uc b/exported/TgClient/Classes/UIComponent_HealthBar_Player.uc new file mode 100755 index 00000000..95890c48 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_HealthBar_Player.uc @@ -0,0 +1,25 @@ +class UIComponent_HealthBar_Player extends UIComponent_HealthBar + native(UIComponent); + +var GFxObject m_mcCurrentHealthText; +var GFxObject m_mcMaxHealthText; +var GFxObject m_mcHealthTip; +var GFxObject m_mcHealthColor; +var UIComponent_HealthBarDamageOverlay m_DamageOverlay; +var UIComponent_TorvaldShieldText m_TorvaldShield; +var float m_fHealInterpSpeed; +var float m_fDamageInterpSpeed; +var float m_fMinHealInterpSpeed; +var float m_fMinDamageInterpSpeed; +var int m_nLastViewTargetId; +var TgPawn m_LastViewedPawn; +var int m_nLastCurrentHealthTextValue; +var int m_nLastMaxHealthTextValue; + +defaultproperties +{ + m_fHealInterpSpeed=5.0000000 + m_fDamageInterpSpeed=5.0000000 + m_fMinHealInterpSpeed=0.1000000 + m_fMinDamageInterpSpeed=0.1000000 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_HoldPrompt.uc b/exported/TgClient/Classes/UIComponent_HoldPrompt.uc new file mode 100755 index 00000000..d55899a8 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_HoldPrompt.uc @@ -0,0 +1,22 @@ +class UIComponent_HoldPrompt extends UIComponent + native(UIComponent); + +const UICOMPONENT_HOLDPURCHASE_RADIALFRAMES = 360; + +var UIComponent_GamepadKey m_pGamepadKey; +var GFxObject m_mcRadialMask; +var GFxObject m_mcTF; +var float m_fHoldTimer; +var float m_fHoldDuration; +var float m_fFadeOutDelay; +var float m_fFadeOutDuration; +var float m_fFadeOutTimer; +var bool m_bListening; +var bool m_bHolding; +var bool m_bPrimed; + +defaultproperties +{ + m_fHoldDuration=1.0000000 + m_sLoadName="PressAndHold" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_HudScoreTDM.uc b/exported/TgClient/Classes/UIComponent_HudScoreTDM.uc new file mode 100755 index 00000000..56af3ce0 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_HudScoreTDM.uc @@ -0,0 +1,37 @@ +class UIComponent_HudScoreTDM extends UIComponent + native(UIComponent); + +var int m_nTimeRemaining; +var int m_nMaxScore; +var int m_nScoreA; +var int m_nScoreB; +var GFxObject m_mcTDMTitle; +var GFxObject m_mcTDMTime; +var GFxObject m_mcTDMSubtitle; +var GFxObject m_mcTDMScoreA; +var GFxObject m_mcTDMScoreAScore; +var GFxObject m_mcTDMScoreAScoreTextAnim; +var GFxObject m_mcTDMScoreAScoreTF; +var GFxObject m_mcTDMScoreAScoreAnim; +var GFxObject m_mcTDMScoreAProgress; +var GFxObject m_mcTDMScoreAProgressAnim; +var GFxObject m_mcTDMScoreAProgressAnimAnim; +var GFxObject m_mcTDMScoreB; +var GFxObject m_mcTDMScoreBScore; +var GFxObject m_mcTDMScoreBScoreTextAnim; +var GFxObject m_mcTDMScoreBScoreTF; +var GFxObject m_mcTDMScoreBScoreAnim; +var GFxObject m_mcTDMScoreBProgress; +var GFxObject m_mcTDMScoreBProgressAnim; +var GFxObject m_mcTDMScoreBProgressAnimAnim; +var float m_fTDMScoreATextAnchorX; +var float m_fTDMScoreBTextAnchorX; +var int m_nTaskForceAhead; +var bool m_bFriendlyTaskForceClose; +var bool m_bEnemyTaskForceClose; +var AkEvent m_MatchAlmostOverAkEvent; + +defaultproperties +{ + m_MatchAlmostOverAkEvent=AkEvent'WW_UI_Default.UI_InGame_Alert_Onslaught_MatchAlmostOver_Play' +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_HudSkillIcon.uc b/exported/TgClient/Classes/UIComponent_HudSkillIcon.uc new file mode 100755 index 00000000..a8230d4f --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_HudSkillIcon.uc @@ -0,0 +1,26 @@ +class UIComponent_HudSkillIcon extends UIComponent + native(UIComponent); + +var GFxObject m_mcSkill; +var GFxObject m_mcSkillBtn; +var GFxObject m_mcSkillKey; +var GFxObject m_mcSkillIcon; +var GFxObject m_mcSkillCDBot; +var GFxObject m_mcSkillCDTop; +var GFxObject m_mcSkillTimer; +var GFxObject m_mcSkillPulse; +var GFxObject m_mcSkillReady; +var GFxObject m_mcSkillActive; +var GFxObject m_mcSkillMouse; +var GFxObject m_mcSkillAmmo; +var GFxObject m_mcSkillShadow; +var bool m_bUsingIconOverride; +var int m_nSkillIconIndex; +var int m_nSkillId; +var int m_nSkillAmmo; +var int m_nSkillActive; +var int m_nSkillStatus; +var float m_fSkillCharge; +var float m_fSkillChargeTime; +var float m_fReadyTimer; +var string m_sSkillBind; diff --git a/exported/TgClient/Classes/UIComponent_HudSkillIcon_Ult.uc b/exported/TgClient/Classes/UIComponent_HudSkillIcon_Ult.uc new file mode 100755 index 00000000..5fff511b --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_HudSkillIcon_Ult.uc @@ -0,0 +1,13 @@ +class UIComponent_HudSkillIcon_Ult extends UIComponent_HudSkillIcon + native(UIComponent); + +var GFxObject m_mcUltimatePercent; +var GFxObject m_mcUltimateEffectBot; +var GFxObject m_mcUltimateEffectTop; +var AkBaseSoundObject m_scUltimateReady; +var float m_fPulseTimer; + +defaultproperties +{ + m_scUltimateReady=AkEvent'WW_UI_Default.UI_InGame_Alert_UltimateReady_1P_Play' +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_IconTF.uc b/exported/TgClient/Classes/UIComponent_IconTF.uc new file mode 100755 index 00000000..c5641ea5 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_IconTF.uc @@ -0,0 +1,4 @@ +class UIComponent_IconTF extends UIComponent + native(UIList); + +var GFxObject m_mcIcon; diff --git a/exported/TgClient/Classes/UIComponent_Interactable.uc b/exported/TgClient/Classes/UIComponent_Interactable.uc new file mode 100755 index 00000000..99b8bda8 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Interactable.uc @@ -0,0 +1,5 @@ +class UIComponent_Interactable extends UIComponent + native(UIComponent); + +var GFxObject m_mcInteractable; +var array m_mcRolloverObjects; diff --git a/exported/TgClient/Classes/UIComponent_Interactable_LobbyEquipSlotItem.uc b/exported/TgClient/Classes/UIComponent_Interactable_LobbyEquipSlotItem.uc new file mode 100755 index 00000000..2cfa468b --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Interactable_LobbyEquipSlotItem.uc @@ -0,0 +1,11 @@ +class UIComponent_Interactable_LobbyEquipSlotItem extends UIComponent_Interactable + native(UIList); + +var GFxObject m_mcSelected; +var GFxObject m_mcTypeIcon; +var GFxObject m_mcRarity; +var GFxObject m_mcAudio; +var GFxObject m_mcIcon; +var GFxObject m_mcCardIcon; +var bool m_bSelected; +var bool m_bHovered; diff --git a/exported/TgClient/Classes/UIComponent_Interactable_LobbySlotItem.uc b/exported/TgClient/Classes/UIComponent_Interactable_LobbySlotItem.uc new file mode 100755 index 00000000..907fa530 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Interactable_LobbySlotItem.uc @@ -0,0 +1,23 @@ +class UIComponent_Interactable_LobbySlotItem extends UIComponent_Interactable + native(UIList); + +var GFxObject m_mcText; +var GFxObject m_mcLock; +var GFxObject m_mcRarity; +var GFxObject m_mcEquipped; +var GFxObject m_mcExclusive; +var GFxObject m_mcTypeIcon; +var GFxObject m_mcCardIcon; +var GFxObject m_mcIcon; +var GFxObject m_mcAudio; +var GFxObject m_mcRented; +var GFxObject m_mcRentalDuration; +var GFxObject m_mcPrice; +var GFxObject m_mcPriceA; +var GFxObject m_mcPriceB; +var GFxObject m_mcPrevPrice; +var GFxObject m_mcPrevPriceA; +var GFxObject m_mcPrevPriceAStrike; +var GFxObject m_mcPrevPriceB; +var GFxObject m_mcPrevPriceBStrike; +var bool m_bHovered; diff --git a/exported/TgClient/Classes/UIComponent_Item.uc b/exported/TgClient/Classes/UIComponent_Item.uc new file mode 100755 index 00000000..678af191 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Item.uc @@ -0,0 +1,23 @@ +class UIComponent_Item extends UIComponent + native(UIComponent); + +var protected GFxObject m_mcName; +var protected GFxObject m_mcType; +var protected GFxObject m_mcDescription; +var protected GFxObject m_mcArtIcon; +var protected GFxObject m_mcFrame; +var protected UIDataItem m_Item; +var protected bool m_bCacheDirty; +var protected bool m_bDataDirty; +var protected bool m_bUseBaseName; +var protected string m_sDescription; +var protected string m_sType; +var protected const float m_fDescriptionCenterOffset; +var int m_nTickCallback; + +defaultproperties +{ + m_fDescriptionCenterOffset=135.0000000 + m_sLoadName="Card" + m_sConstructName="Card" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_ItemIcon.uc b/exported/TgClient/Classes/UIComponent_ItemIcon.uc new file mode 100755 index 00000000..eeee17b0 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_ItemIcon.uc @@ -0,0 +1,7 @@ +class UIComponent_ItemIcon extends UIComponent + native(UIList); + +var GFxObject m_mcRarityText; +var GFxObject m_mcRarity; +var GFxObject m_mcIcon; +var GFxObject m_mcChestIcon; diff --git a/exported/TgClient/Classes/UIComponent_ItemMini.uc b/exported/TgClient/Classes/UIComponent_ItemMini.uc new file mode 100755 index 00000000..f9e4cbae --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_ItemMini.uc @@ -0,0 +1,4 @@ +class UIComponent_ItemMini extends UIComponent + native(UIList); + +var GFxObject m_mcIcon; diff --git a/exported/TgClient/Classes/UIComponent_ItemObtainabilityBanner.uc b/exported/TgClient/Classes/UIComponent_ItemObtainabilityBanner.uc new file mode 100755 index 00000000..363f3db7 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_ItemObtainabilityBanner.uc @@ -0,0 +1,9 @@ +class UIComponent_ItemObtainabilityBanner extends UIComponent + native(UIComponent); + +var protected UIDataItem.SimplifiedItemObtainabilityValue m_eObtainability; + +defaultproperties +{ + m_sLoadName="ExclusiveBanner" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_ItemTooltip.uc b/exported/TgClient/Classes/UIComponent_ItemTooltip.uc new file mode 100755 index 00000000..4438fd01 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_ItemTooltip.uc @@ -0,0 +1,12 @@ +class UIComponent_ItemTooltip extends UIComponent + native(UIComponent); + +var protected GFxObject m_mcTitle; +var protected GFxObject m_mcSubtitle; +var protected GFxObject m_mcDescription; +var int m_nLastSetItemID; + +defaultproperties +{ + m_sLoadName="Tooltip" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_Item_Card.uc b/exported/TgClient/Classes/UIComponent_Item_Card.uc new file mode 100755 index 00000000..2441721a --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Item_Card.uc @@ -0,0 +1,8 @@ +class UIComponent_Item_Card extends UIComponent_Item + native(UIComponent); + +var protected GFxObject m_mcCooldown; +var protected GFxObject m_mcChampion; +var protected GFxObject m_mcChampionIcon; +var protected GFxObject m_mcRank; +var protected bool m_bShowChampion; diff --git a/exported/TgClient/Classes/UIComponent_LeaderboardPlayer.uc b/exported/TgClient/Classes/UIComponent_LeaderboardPlayer.uc new file mode 100755 index 00000000..f834c7c7 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_LeaderboardPlayer.uc @@ -0,0 +1,15 @@ +class UIComponent_LeaderboardPlayer extends UIComponent + native(UIList); + +var GFxObject m_mcName; +var GFxObject m_mcTitle; +var GFxObject m_mcPosition; +var GFxObject m_mcWins; +var GFxObject m_mcLosses; +var GFxObject m_mcScore; +var GFxObject m_mcRegion; +var GFxObject m_mcChampion; +var GFxObject m_mcChampionIcon; +var GFxObject m_mcChampionFrame; +var UIComponent_Interactable m_FrameButton; +var UIData pCurrentData; diff --git a/exported/TgClient/Classes/UIComponent_LeagueTierEntry.uc b/exported/TgClient/Classes/UIComponent_LeagueTierEntry.uc new file mode 100755 index 00000000..431b2ee7 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_LeagueTierEntry.uc @@ -0,0 +1,7 @@ +class UIComponent_LeagueTierEntry extends UIComponent + native(UIList); + +var GFxObject m_mcTitle; +var GFxObject m_mcSubtitle; +var GFxObject m_mcIcon; +var array m_mcLegendIcons; diff --git a/exported/TgClient/Classes/UIComponent_LevelProgress.uc b/exported/TgClient/Classes/UIComponent_LevelProgress.uc new file mode 100755 index 00000000..3cd16051 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_LevelProgress.uc @@ -0,0 +1,9 @@ +class UIComponent_LevelProgress extends UIComponent + native(UIList); + +var GFxObject m_mcLevel; +var GFxObject m_mcNextLevelXP; +var GFxObject m_mcTimePlayed; +var GFxObject m_mcWins; +var GFxObject m_mcTotalXP; +var GFxObject m_mcProgress; diff --git a/exported/TgClient/Classes/UIComponent_LexTarget.uc b/exported/TgClient/Classes/UIComponent_LexTarget.uc new file mode 100755 index 00000000..cce4b9a0 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_LexTarget.uc @@ -0,0 +1,7 @@ +class UIComponent_LexTarget extends UIComponent + native(UIComponent); + +var GFxObject m_mcFrame; +var GFxObject m_mcFrameTop; +var GFxObject m_mcFrameBottom; +var GFxObject m_mcIcon; diff --git a/exported/TgClient/Classes/UIComponent_LexVengeance.uc b/exported/TgClient/Classes/UIComponent_LexVengeance.uc new file mode 100755 index 00000000..2504dc25 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_LexVengeance.uc @@ -0,0 +1,161 @@ +class UIComponent_LexVengeance extends UIComponent + native(UIComponent); + +const EMBLEM_ALPHA_TIME = 0.17f; +const EMBLEM_SCALEDOWN_TIME = 0.17f; +const EMBLEM_SCALEUP_TIME = 0.04f; +const EMBLEM_SCALEUP_DELAY = 0.2f; +const EMBLEM_MOVE_TIME = 0.17f; +const EMBLEM_MOVE_DELAY = 0.5f; +const EMBLEM_SHIFTX_LEFT = 840.0f; +const EMBLEM_SHIFTX_RIGHT = 860.0f; +const EMBLEM_POSY = 885.0f; +const EMBLEM_ROULETTE_POSX = 960.0f; +const EMBLEM_ROULETTE_POSY = 747.20f; +const EMBLEM_ROULETTE_SCALE_START = 90.0f; +const BOUNTY_OFFSETX = 31.0f; +const KILLSTREAK_OFFSETX = 32.9f; + +var UIComponent_LexTarget m_RouletteTarget; +var UIComponent_LexTarget m_Target; +var GFxObject m_mcBounty; +var GFxObject m_mcKillstreak; +var GFxObject m_mcKillstreakText; +var TgPawn_Lex m_Lex; +var UIDataManager m_pUIData; +var UIDataChampion m_CachedTargetChampion; +var array m_EnemyPawns; +var float m_Timer; +var float m_TimePerFrame; +var bool m_bRouletteSpinning; +var int m_nRouletteIndex; +var float m_fEmblemXPos; +var AkEvent m_FlipbookSound; +var AkEvent m_LockInSound; +var AkEvent m_SwooshSound; +var AkEvent m_FrontlineComment; +var AkEvent m_DamageComment; +var AkEvent m_SupportComment; +var AkEvent m_FlankComment; + +event AnimateEmblem() +{ + EndAnim(m_Target.m_mcRoot); + EndAnim(m_RouletteTarget.m_mcRoot); + EndAnim(m_Target.m_mcFrameTop); + EndAnim(m_RouletteTarget.m_mcFrameTop); + EndAnim(m_Target.m_mcFrameBottom); + EndAnim(m_RouletteTarget.m_mcFrameBottom); + EndAnim(m_mcBounty); + EndAnim(m_mcKillstreak); + Animate(m_mcBounty, 0.1500000, 2, 0.0000000, 0.0000000, 1, false); + Animate(m_mcKillstreak, 0.1500000, 2, 0.0000000, 0.0000000, 1, false); + m_RouletteTarget.m_mcRoot.SetAlpha(0.0000000); + m_Target.m_mcRoot.SetX(960.0000000); + m_Target.m_mcRoot.SetY(747.2000000); + m_Target.m_mcRoot.SetXScale(90.0000000); + m_Target.m_mcRoot.SetYScale(90.0000000); + m_Target.m_mcRoot.SetAlpha(0.0000000); + m_Target.m_mcFrameTop.SetAlpha(0.0000000); + m_Target.m_mcFrameBottom.SetAlpha(0.0000000); + m_Target.m_mcFrameTop.SetY(-300.0000000); + m_Target.m_mcFrameBottom.SetY(250.0000000); + Animate(m_Target.m_mcRoot, 0.1000000, 5, 100.0000000, 0.0000000, 1, false); + Animate(m_Target.m_mcRoot, 0.1000000, 6, 100.0000000, 0.0000000, 1, false); + Animate(m_Target.m_mcRoot, 0.1000000, 2, 100.0000000, 0.0000000, 1, false); + Animate(m_Target.m_mcRoot, 0.0333300, 5, 110.0000000, 0.0000000, 1, false); + Animate(m_Target.m_mcRoot, 0.0333300, 6, 110.0000000, 0.0000000, 1, false); + Animate(m_Target.m_mcRoot, 0.0999900, 5, 100.0000000, 0.0000000, 1, false); + Animate(m_Target.m_mcRoot, 0.0999900, 6, 100.0000000, 0.0000000, 1, false); + Animate(m_Target.m_mcFrameTop, 0.1000000, 2, 100.0000000, 0.0000000, 1, false); + Animate(m_Target.m_mcFrameTop, 0.1000000, 1, -23.2500000, 0.0000000, 1, false); + Animate(m_Target.m_mcFrameTop, 0.0333300, 1, -15.5000000, 0.1000000, 1, false); + Animate(m_Target.m_mcFrameTop, 0.0666600, 1, -20.7500000, 0.1333000, 1, false); + Animate(m_Target.m_mcFrameTop, 0.0333300, 5, 110.0000000, 0.0666600, 1, false); + Animate(m_Target.m_mcFrameTop, 0.0999900, 5, 100.0000000, 0.1000000, 1, false); + Animate(m_Target.m_mcFrameTop, 0.0333300, 6, 105.0000000, 0.0666600, 1, false); + Animate(m_Target.m_mcFrameTop, 0.0666600, 5, 100.0000000, 0.1333000, 1, false); + Animate(m_Target.m_mcFrameBottom, 0.1000000, 2, 100.0000000, 0.0000000, 0, false); + Animate(m_Target.m_mcFrameBottom, 0.1000000, 1, 51.6500000, 0.0000000, 0, false); + Animate(m_Target.m_mcFrameBottom, 0.0333300, 1, 40.0000000, 1.0000000, byte(0.1000000), false); + Animate(m_Target.m_mcFrameBottom, 0.0666600, 1, 42.0500000, 0.1333000, 1, false); + Animate(m_Target.m_mcFrameBottom, 0.0333300, 5, 110.0000000, 0.0666600, 1, false); + Animate(m_Target.m_mcFrameBottom, 0.0999900, 5, 100.0000000, 0.1000000, 1, false); + Animate(m_Target.m_mcFrameBottom, 0.0333300, 6, 105.0000000, 0.0666600, 1, false); + Animate(m_Target.m_mcFrameBottom, 0.0666600, 5, 100.0000000, 0.1333000, 1, false); + Animate(m_Target.m_mcRoot, 0.1700000, 0, m_fEmblemXPos, 0.5000000, 1, false); + Animate(m_Target.m_mcRoot, 0.1700000, 1, 885.0000000, 0.5000000, 1, false); + Animate(m_Target.m_mcRoot, 0.1700000, 5, 42.0000000, 0.5000000, 1, false); + Animate(m_Target.m_mcRoot, 0.1700000, 6, 42.0000000, 0.5000000, 1, false); + Animate(m_mcBounty, 0.2500000, 2, 100.0000000, 0.5000000 + 0.1700000, 1, false); + Animate(m_mcBounty, 0.2500000, 0, m_fEmblemXPos + 31.0000000, 0.5000000 + 0.1700000, 1, false); + Animate(m_mcKillstreak, 0.2500000, 0, m_fEmblemXPos + 32.9000000, 0.5000000 + 0.1700000, 1, false); + //return; +} + +event AnimateEmblemAbilityActivated() +{ + EndAnim(m_Target.m_mcRoot); + EndAnim(m_RouletteTarget.m_mcRoot); + EndAnim(m_Target.m_mcFrameTop); + EndAnim(m_RouletteTarget.m_mcFrameTop); + EndAnim(m_Target.m_mcFrameBottom); + EndAnim(m_RouletteTarget.m_mcFrameBottom); + EndAnim(m_mcBounty); + EndAnim(m_mcKillstreak); + Animate(m_mcBounty, 0.1500000, 2, 0.0000000, 0.0000000, 1, false); + Animate(m_mcKillstreak, 0.1500000, 2, 0.0000000, 0.0000000, 1, false); + m_RouletteTarget.m_mcIcon.SetAlpha(75.0000000); + m_Target.m_mcIcon.SetAlpha(0.0000000); + m_Target.m_mcRoot.SetAlpha(0.0000000); + m_Target.m_mcRoot.SetX(960.0000000); + m_Target.m_mcRoot.SetY(747.2000000); + m_Target.m_mcRoot.SetXScale(100.0000000); + m_Target.m_mcRoot.SetYScale(100.0000000); + m_Target.m_mcFrameTop.SetAlpha(0.0000000); + m_Target.m_mcFrameBottom.SetAlpha(0.0000000); + m_Target.m_mcFrameTop.SetY(-300.0000000); + m_Target.m_mcFrameBottom.SetY(250.0000000); + m_RouletteTarget.m_mcRoot.SetX(960.0000000); + m_RouletteTarget.m_mcRoot.SetY(747.2000000); + m_RouletteTarget.m_mcRoot.SetXScale(90.0000000); + m_RouletteTarget.m_mcRoot.SetYScale(90.0000000); + Animate(m_RouletteTarget.m_mcRoot, 0.1000000, 5, 100.0000000, 0.0000000, 1, false); + Animate(m_RouletteTarget.m_mcRoot, 0.1000000, 6, 100.0000000, 0.0000000, 1, false); + Animate(m_RouletteTarget.m_mcRoot, 0.1000000, 2, 100.0000000, 0.0000000, 1, false); + Animate(m_RouletteTarget.m_mcRoot, 0.0333300, 5, 110.0000000, 0.0000000, 1, false); + Animate(m_RouletteTarget.m_mcRoot, 0.0333300, 6, 110.0000000, 0.0000000, 1, false); + Animate(m_RouletteTarget.m_mcRoot, 0.0999900, 5, 100.0000000, 0.0000000, 1, false); + Animate(m_RouletteTarget.m_mcRoot, 0.0999900, 6, 100.0000000, 0.0000000, 1, false); + Animate(m_Target.m_mcRoot, 0.1000000, 2, 100.0000000, 0.8500000, 1, false); + Animate(m_Target.m_mcIcon, 0.1500000, 2, 100.0000000, 0.8500000, 1, false); + Animate(m_Target.m_mcFrameTop, 0.1000000, 1, -21.9000000, 0.9000000, 1, false); + Animate(m_Target.m_mcFrameTop, 0.0333300, 1, -15.5000000, 1.0000000, 1, false); + Animate(m_Target.m_mcFrameTop, 0.0666600, 1, -20.7500000, 1.0333000, 1, false); + Animate(m_Target.m_mcFrameTop, 0.1000000, 2, 100.0000000, 0.9000000, 1, false); + Animate(m_Target.m_mcFrameTop, 0.0333300, 5, 110.0000000, 0.9666000, 1, false); + Animate(m_Target.m_mcFrameTop, 0.0999900, 5, 100.0000000, 1.0000000, 1, false); + Animate(m_Target.m_mcFrameTop, 0.0333300, 6, 105.0000000, 0.9666000, 1, false); + Animate(m_Target.m_mcFrameTop, 0.0666600, 5, 100.0000000, 1.0333000, 1, false); + Animate(m_Target.m_mcFrameBottom, 0.1000000, 1, 51.6500000, 0.9000000, 1, false); + Animate(m_Target.m_mcFrameBottom, 0.0333300, 1, 42.3000000, 1.0000000, 1, false); + Animate(m_Target.m_mcFrameBottom, 0.0666600, 1, 42.0500000, 1.0333000, 1, false); + Animate(m_Target.m_mcFrameBottom, 0.1000000, 2, 100.0000000, 0.9000000, 1, false); + Animate(m_Target.m_mcFrameBottom, 0.0333300, 5, 110.0000000, 0.9666000, 1, false); + Animate(m_Target.m_mcFrameBottom, 0.0999900, 5, 100.0000000, 1.0000000, 1, false); + Animate(m_Target.m_mcFrameBottom, 0.0333300, 6, 105.0000000, 0.9666000, 1, false); + Animate(m_Target.m_mcFrameBottom, 0.0666600, 6, 100.0000000, 1.0333000, 1, false); + Animate(m_Target.m_mcRoot, 0.1700000, 0, m_fEmblemXPos, 0.5000000 + float(1), 1, false); + Animate(m_Target.m_mcRoot, 0.1700000, 1, 885.0000000, 0.5000000 + float(1), 1, false); + Animate(m_Target.m_mcRoot, 0.1700000, 5, 42.0000000, 0.5000000 + float(1), 1, false); + Animate(m_Target.m_mcRoot, 0.1700000, 6, 42.0000000, 0.5000000 + float(1), 1, false); + Animate(m_mcBounty, 0.2500000, 2, 100.0000000, (0.5000000 + 0.1700000) + float(1), 1, false); + Animate(m_mcBounty, 0.2500000, 0, m_fEmblemXPos + 31.0000000, (0.5000000 + 0.1700000) + float(1), 1, false); + Animate(m_mcKillstreak, 0.2500000, 0, m_fEmblemXPos + 32.9000000, (0.5000000 + 0.1700000) + float(1), 1, false); + //return; +} + +defaultproperties +{ + m_TimePerFrame=0.1000000 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_List.uc b/exported/TgClient/Classes/UIComponent_List.uc new file mode 100755 index 00000000..202215e6 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_List.uc @@ -0,0 +1,24 @@ +class UIComponent_List extends UIComponent + native(UIList); + +struct native UICListEntry +{ + var UIComponent_Interactable pInteractable; + var UIComponent pDisplay; + + structdefaultproperties + { + pInteractable=none + pDisplay=none + } +}; + +var protected int m_nSelectedIndex; +var array m_ListItems; +var array m_ListData; +var protected TgGFxGroup m_grList; +var UIComponent_ScrollBar m_pScrollbarV; +var UIComponent_ScrollBar m_pScrollbarH; +var dword m_dwItemSize; +var dword m_dwDataSize; +var bool m_bExtendVertically; diff --git a/exported/TgClient/Classes/UIComponent_MasteryRewardsEntry.uc b/exported/TgClient/Classes/UIComponent_MasteryRewardsEntry.uc new file mode 100755 index 00000000..12d4fab5 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_MasteryRewardsEntry.uc @@ -0,0 +1,67 @@ +class UIComponent_MasteryRewardsEntry extends UIComponent + native(UIComponent); + +var protected GFxObject m_mcLockIcon; +var protected GFxObject m_mcLevelText; +var protected GFxObject m_mcRewardType; +var protected GFxObject m_mcRewardName; +var protected GFxObject m_mcRewardTitle; +var protected GFxObject m_mcRewardCurrency; +var protected GFxObject m_mcRewardCurrencyTF; +var protected GFxObject m_mcCardIcon; +var protected GFxObject m_mcItemIcon; +var protected GFxObject m_mcTextureIcon; +var protected GFxObject m_mcRarity; +var protected GFxObject m_mcRadiantChest; +var protected GFxObject m_mcPreviewing; +var protected UIInteractable_Button m_pFrameButton; +var protected UIInteractable_Button_ItemPrice m_pPriceButton; +var protected bool m_bPendingSelected; +var protected bool m_bSelected; +var protected bool m_bReadyToUnlock; +var protected bool m_bAchieved; +var protected UIDataItem m_pItemReward; + +event UpdateEntryColor() +{ + // End:0x169 + if(m_bSelected) + { + m_mcLevelText.SetColor(219.0000000 / 255.0000000, 242.0000000 / 255.0000000, 255.0000000 / 255.0000000); + m_mcRewardType.SetColor(219.0000000 / 255.0000000, 242.0000000 / 255.0000000, 255.0000000 / 255.0000000); + m_mcRewardTitle.SetColor(219.0000000 / 255.0000000, 242.0000000 / 255.0000000, 255.0000000 / 255.0000000); + m_mcRewardName.SetColor(126.0000000 / 255.0000000, 200.0000000 / 255.0000000, 206.0000000 / 255.0000000); + m_mcRewardCurrencyTF.SetColor(219.0000000 / 255.0000000, 242.0000000 / 255.0000000, 255.0000000 / 255.0000000); + } + else + { + // End:0x2D2 + if(m_bAchieved) + { + m_mcLevelText.SetColor(119.0000000 / 255.0000000, 170.0000000 / 255.0000000, 182.0000000 / 255.0000000); + m_mcRewardType.SetColor(71.0000000 / 255.0000000, 124.0000000 / 255.0000000, 136.0000000 / 255.0000000); + m_mcRewardTitle.SetColor(127.0000000 / 255.0000000, 192.0000000 / 255.0000000, 207.0000000 / 255.0000000); + m_mcRewardName.SetColor(71.0000000 / 255.0000000, 124.0000000 / 255.0000000, 136.0000000 / 255.0000000); + m_mcRewardCurrencyTF.SetColor(127.0000000 / 255.0000000, 192.0000000 / 255.0000000, 207.0000000 / 255.0000000); + } + else + { + m_mcLevelText.SetColor(57.0000000 / 255.0000000, 74.0000000 / 255.0000000, 84.0000000 / 255.0000000); + m_mcRewardType.SetColor(83.0000000 / 255.0000000, 116.0000000 / 255.0000000, 132.0000000 / 255.0000000); + m_mcRewardTitle.SetColor(83.0000000 / 255.0000000, 116.0000000 / 255.0000000, 132.0000000 / 255.0000000); + m_mcRewardName.SetColor(83.0000000 / 255.0000000, 116.0000000 / 255.0000000, 132.0000000 / 255.0000000); + m_mcRewardCurrencyTF.SetColor(83.0000000 / 255.0000000, 116.0000000 / 255.0000000, 132.0000000 / 255.0000000); + } + } + // End:0x48C + if(m_bReadyToUnlock && m_bAchieved) + { + m_mcRewardType.SetColor(60.0000000 / 255.0000000, 255.0000000 / 255.0000000, 7.0000000 / 255.0000000); + } + //return; +} + +defaultproperties +{ + m_sLoadName="Entry" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_MasteryRewardsPopup.uc b/exported/TgClient/Classes/UIComponent_MasteryRewardsPopup.uc new file mode 100755 index 00000000..7d2fb1fd --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_MasteryRewardsPopup.uc @@ -0,0 +1,13 @@ +class UIComponent_MasteryRewardsPopup extends UIComponent_Popup + native(UIComponent); + +var protected TgGFxGroup m_grRewardsGroup; +var protected array m_pMasteryRewardsEntries; +var array m_MasteryRewardData; +var const int m_nNumEntries; + +defaultproperties +{ + m_nNumEntries=6 + m_sLoadName="MasteryDetails" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_MatchDisplay.uc b/exported/TgClient/Classes/UIComponent_MatchDisplay.uc new file mode 100755 index 00000000..2fccb9b5 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_MatchDisplay.uc @@ -0,0 +1,18 @@ +class UIComponent_MatchDisplay extends UIComponent + native(UIComponent); + +const UICOMPONENT_MATCHDISPLAY_BUILDHEADERS_COUNT = 6; +const UICOMPONENT_MATCHDISPLAY_STATSHEADERS_COUNT = 9; +const UICOMPONENT_MATCHDISPLAY_PLAYERS_COUNT = 10; + +enum EUICMatchDisplayTabType +{ + EUICMDT_Stats, // 0 + EUICMDT_Build, // 1 + EUICMDT_MAX // 2 +}; + +var GFxObject m_mcBuildHeader; +var GFxObject m_mcStatsHeader; +var UIComponent_List m_pList; +var UIComponent_MatchDisplay.EUICMatchDisplayTabType m_eDisplayMode; diff --git a/exported/TgClient/Classes/UIComponent_MatchPlayerEntry.uc b/exported/TgClient/Classes/UIComponent_MatchPlayerEntry.uc new file mode 100755 index 00000000..81953ef8 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_MatchPlayerEntry.uc @@ -0,0 +1,30 @@ +class UIComponent_MatchPlayerEntry extends UIComponent + native(UIList); + +const UICOMPONENT_MATCHPLAYERENTRY_BUILD_STATCOUNT = 2; +const UICOMPONENT_MATCHPLAYERENTRY_DETAILS_STATCOUNT = 7; +const UICOMPONENT_MATCHPLAYERENTRY_BUILD_CARDCOUNT = 5; +const UICOMPONENT_MATCHPLAYERENTRY_BUILD_ITEMCOUNT = 4; + +var GFxObject m_mcEndCap; +var GFxObject m_mcIcon; +var GFxObject m_mcName; +var GFxObject m_mcTitle; +var GFxObject m_mcBuild; +var GFxObject m_mcBuild_Stat[2]; +var GFxObject m_mcBuild_Talent; +var GFxObject m_mcBuild_TalentIcon; +var UIComponent_ItemMini m_Cards[5]; +var UIComponent_Interactable m_CardButtons[5]; +var UIComponent_ItemMini m_Items[4]; +var UIComponent_Interactable m_ItemButtons[4]; +var GFxObject m_mcStatsDetails; +var GFxObject m_mcStatsDetails_Stat[7]; +var UIComponent_Interactable m_TalentButton; +var UIComponent_Interactable m_FrameButton; +var UIComponent_Interactable m_ReportButton; +var UIComponent_Interactable m_ImportButton; +var UIComponent_Interactable m_AddButton; +var UIComponent_ItemTooltip m_pTooltip; +var UIData_PlayerMatchRecord m_pPlayerData; +var bool m_bCanReport; diff --git a/exported/TgClient/Classes/UIComponent_OracleSoulCharges.uc b/exported/TgClient/Classes/UIComponent_OracleSoulCharges.uc new file mode 100755 index 00000000..7c4fd06c --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_OracleSoulCharges.uc @@ -0,0 +1,122 @@ +class UIComponent_OracleSoulCharges extends UIComponent + native(UIComponent); + +enum SoulChargesAnimEvent +{ + SoulChargesAE_Show, // 0 + SoulChargesAE_Hide, // 1 + SoulChargesAE_Increase, // 2 + SoulChargesAE_Decrease, // 3 + SoulChargesAE_MaxStacks, // 4 + SoulChargesAE_MAX // 5 +}; + +var TgPawn m_CurrentViewPawn; +var TgPawn m_CurrentTargetPawn; +var GFxObject m_mcText; +var GFxObject m_mcIcon; +var GFxObject m_mcAnim; +var GFxObject m_mcMaxStacks; +var bool m_bIsHiding; +var bool m_bEnabled; +var int m_nCurrentSoulCharges; + +event float HandleAnimEvent(int nEventType, optional array fExtraData) +{ + switch(nEventType) + { + // End:0x2E7 + case 0: + m_bIsHiding = false; + EndAnim(m_mcAnim); + EndAnim(m_mcIcon); + EndAnim(m_mcText); + EndAnim(m_mcMaxStacks); + m_mcText.SetXScale(80.0000000); + m_mcText.SetYScale(80.0000000); + m_mcText.SetAlpha(85.0000000); + m_mcIcon.SetXScale(80.0000000); + m_mcIcon.SetYScale(80.0000000); + m_mcIcon.SetAlpha(100.0000000); + m_mcMaxStacks.SetVisible(false); + m_mcMaxStacks.SetAlpha(0.0000000); + Animate(m_mcText, 0.2500000, 5, 115.0000000, 0.0000000, 1, false); + Animate(m_mcText, 0.2500000, 6, 115.0000000, 0.0000000, 1, false); + Animate(m_mcIcon, 0.2500000, 5, 115.0000000, 0.0000000, 1, false); + Animate(m_mcIcon, 0.2500000, 6, 115.0000000, 0.0000000, 1, false); + Animate(m_mcText, 0.1000000, 5, 100.0000000, 0.2500000, 1, false); + Animate(m_mcText, 0.1000000, 6, 100.0000000, 0.2500000, 1, false); + Animate(m_mcIcon, 0.1000000, 5, 100.0000000, 0.2500000, 1, false); + Animate(m_mcIcon, 0.1000000, 6, 100.0000000, 0.2500000, 1, false); + FadeIn(m_mcRoot, 0.2500000); + return 0.2500000; + // End:0x4D6 + case 1: + m_bIsHiding = true; + EndAnim(m_mcAnim); + EndAnim(m_mcIcon); + EndAnim(m_mcText); + EndAnim(m_mcMaxStacks); + m_mcText.SetXScale(100.0000000); + m_mcText.SetYScale(100.0000000); + m_mcIcon.SetXScale(100.0000000); + m_mcIcon.SetYScale(100.0000000); + m_mcMaxStacks.SetVisible(false); + m_mcMaxStacks.SetAlpha(0.0000000); + Animate(m_mcText, 0.2500000, 5, 150.0000000, 0.0000000, 1, false); + Animate(m_mcText, 0.2500000, 6, 150.0000000, 0.0000000, 1, false); + Animate(m_mcIcon, 0.2500000, 5, 150.0000000, 0.0000000, 1, false); + Animate(m_mcIcon, 0.2500000, 6, 150.0000000, 0.0000000, 1, false); + FadeOut(m_mcRoot, 0.2500000); + return 0.1000000; + // End:0x719 + case 2: + EndAnim(m_mcAnim); + EndAnim(m_mcText); + m_mcText.SetXScale(100.0000000); + m_mcText.SetYScale(100.0000000); + m_mcAnim.SetXScale(85.0000000); + m_mcAnim.SetYScale(85.0000000); + m_mcAnim.SetAlpha(100.0000000); + Animate(m_mcAnim, 0.4000000, 5, 250.0000000, 0.0000000, 1, false); + Animate(m_mcAnim, 0.4000000, 6, 250.0000000, 0.0000000, 1, false); + Animate(m_mcAnim, 0.2500000, 2, 0.0000000, 0.1500000, 1, false); + Animate(m_mcText, 0.2000000, 2, 100.0000000, 0.0000000, 1, false); + Animate(m_mcText, 0.0500000, 2, 85.0000000, 0.2000000, 1, false); + Animate(m_mcText, 0.2000000, 5, 130.0000000, 0.0000000, 1, false); + Animate(m_mcText, 0.2000000, 6, 130.0000000, 0.0000000, 1, false); + Animate(m_mcText, 0.0500000, 5, 100.0000000, 0.2000000, 1, false); + Animate(m_mcText, 0.0500000, 6, 100.0000000, 0.2000000, 1, false); + // End:0x959 + break; + // End:0x8CC + case 3: + EndAnim(m_mcIcon); + EndAnim(m_mcText); + m_mcText.SetAlpha(50.0000000); + Animate(m_mcText, 0.3000000, 2, 85.0000000, 0.0000000, 1, false); + Animate(m_mcText, 0.1000000, 5, 85.0000000, 0.0000000, 1, false); + Animate(m_mcText, 0.1000000, 6, 85.0000000, 0.0000000, 1, false); + Animate(m_mcText, 0.3000000, 5, 100.0000000, 0.1000000, 1, false); + Animate(m_mcText, 0.3000000, 6, 100.0000000, 0.1000000, 1, false); + Animate(m_mcIcon, 0.1000000, 5, 85.0000000, 0.0000000, 1, false); + Animate(m_mcIcon, 0.1000000, 6, 85.0000000, 0.0000000, 1, false); + Animate(m_mcIcon, 0.3000000, 5, 100.0000000, 0.1000000, 1, false); + Animate(m_mcIcon, 0.3000000, 6, 100.0000000, 0.1000000, 1, false); + // End:0x959 + break; + // End:0x956 + case 4: + EndAnim(m_mcMaxStacks); + m_mcMaxStacks.SetVisible(true); + Animate(m_mcMaxStacks, 0.1500000, 2, 100.0000000, 0.0000000, 1, false); + Animate(m_mcText, 0.1500000, 2, 100.0000000, 0.0000000, 1, false); + // End:0x959 + break; + // End:0xFFFF + default: + break; + } + return 0.0000000; + //return ReturnValue; +} diff --git a/exported/TgClient/Classes/UIComponent_OwlStealthBar.uc b/exported/TgClient/Classes/UIComponent_OwlStealthBar.uc new file mode 100755 index 00000000..1566e2a7 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_OwlStealthBar.uc @@ -0,0 +1,9 @@ +class UIComponent_OwlStealthBar extends UIComponent + native(UIComponent); + +var GFxObject m_mcThreshold; +var GFxObject m_mcStealthBarMask; +var GFxObject m_mcTrailingStealthBarMask; +var GFxObject m_mcStealthActive; +var bool m_bStealthActive; +var float m_fActivationCost; diff --git a/exported/TgClient/Classes/UIComponent_OwnershipProgress.uc b/exported/TgClient/Classes/UIComponent_OwnershipProgress.uc new file mode 100755 index 00000000..f1f01bca --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_OwnershipProgress.uc @@ -0,0 +1,7 @@ +class UIComponent_OwnershipProgress extends UIComponent + native(UIList); + +var GFxObject m_mcTitle; +var GFxObject m_mcOwnedAmt; +var GFxObject m_mcTotalAmt; +var GFxObject m_mcProgress; diff --git a/exported/TgClient/Classes/UIComponent_PlayPanel.uc b/exported/TgClient/Classes/UIComponent_PlayPanel.uc new file mode 100755 index 00000000..46149822 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_PlayPanel.uc @@ -0,0 +1,29 @@ +class UIComponent_PlayPanel extends UIComponent + native(UIList); + +var GFxObject m_mcFade; +var GFxObject m_mcIcon; +var GFxObject m_mcTitle; +var GFxObject m_mcSubtitle; +var GFxObject m_mcDelayText; +var GFxObject m_mcDelayTimeText; +var GFxObject m_mcModeCTA; +var GFxObject m_mcFWOTDIcon; +var GFxObject m_mcQuestCTA; +var GFxObject m_mcCheckbox; +var GFxObject m_mcModeTypeTF; +var GFxObject m_mcFWOTDText; +var GFxObject m_mcAchievements; +var GFxObject m_mcLock; +var GFxObject m_mcLockNew; +var GFxObject m_mcLockInfo; +var GFxObject m_mcLockInfoTF; +var GFxObject m_mcProgressMask; +var GFxObject m_mcInfoButtonIcon; +var GFxObject m_mcRankedProgress; +var GFxObject m_mcRankedProgressRankTF; +var GFxObject m_mcRankedProgressRankIcon; +var GFxObject m_mcRankedProgressProgressTF; +var UIComponent_Interactable m_pPanelButton; +var UIComponent_Interactable m_pInfoButton; +var UIComponent_GamepadKey m_pGamepadKey; diff --git a/exported/TgClient/Classes/UIComponent_Popup.uc b/exported/TgClient/Classes/UIComponent_Popup.uc new file mode 100755 index 00000000..c951d435 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Popup.uc @@ -0,0 +1,14 @@ +class UIComponent_Popup extends UIComponent_Interactable + native(UIComponent); + +var UIComponent m_pItem; +var TgGFxGroup m_grScene; +var int m_nCallbackOnBackHandle; +var bool m_bCanHidePopup; +var bool m_bFadeWithShowHide; + +defaultproperties +{ + m_bCanHidePopup=true + m_bFadeWithShowHide=true +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_PopupManager.uc b/exported/TgClient/Classes/UIComponent_PopupManager.uc new file mode 100755 index 00000000..ab091bd7 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_PopupManager.uc @@ -0,0 +1,23 @@ +class UIComponent_PopupManager extends UIComponent + native(UIComponent); + +struct native PopupInfo +{ + var UIComponent_Popup pPopup; + var UIData pPopupData; + + structdefaultproperties + { + pPopup=none + pPopupData=none + } +}; + +var init array m_PopupStack; +var int m_nCloseCurrentPopupHandle; +var bool m_bAllowPopups; + +defaultproperties +{ + m_bAllowPopups=true +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_PortraitBorder.uc b/exported/TgClient/Classes/UIComponent_PortraitBorder.uc new file mode 100755 index 00000000..ac1e716b --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_PortraitBorder.uc @@ -0,0 +1,6 @@ +class UIComponent_PortraitBorder extends UIComponent + native(UIList); + +var GFxObject m_mcFrame; +var GFxObject m_mcLock; +var GFxObject m_mcEquippedCheckmark; diff --git a/exported/TgClient/Classes/UIComponent_ProgressBarHorizontal.uc b/exported/TgClient/Classes/UIComponent_ProgressBarHorizontal.uc new file mode 100755 index 00000000..05ed4133 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_ProgressBarHorizontal.uc @@ -0,0 +1,11 @@ +class UIComponent_ProgressBarHorizontal extends UIComponent + native(UIList); + +var GFxObject m_mcBackground; +var GFxObject m_mcFill; +var GFxObject m_mcTip; + +defaultproperties +{ + m_sLoadName="ProgressBar" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_Quest.uc b/exported/TgClient/Classes/UIComponent_Quest.uc new file mode 100755 index 00000000..195a88eb --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Quest.uc @@ -0,0 +1,32 @@ +class UIComponent_Quest extends UIComponent + native(UIList); + +var int m_nIndex; +var UIQuests m_pParentQuestsScene; +var UIInteractable_Button m_pQuestPanelButton; +var UIInteractable_Button m_pQuestDiscardButton; +var GFxObject m_mcQuestPanelButton; +var GFxObject m_mcQuestReward; +var GFxObject m_mcQuestProgress; +var GFxObject m_mcQuestProgressBar; +var GFxObject m_mcQuestProgressMask; +var GFxObject m_mcQuestGlow; +var GFxObject m_mcQuestTitle; +var GFxObject m_mcQuestType; +var GFxObject m_mcQuestIconRendered; +var GFxObject m_mcQuestIcon; +var GFxObject m_mcQuestChestIcon; +var GFxObject m_mcRewardItem; +var GFxObject m_mcRewardItemIcon; +var GFxObject m_mcRewardItemImageStack; +var GFxObject m_mcRewardItemTexture; +var GFxObject m_mcQuestProgressText; +var GFxObject m_mcQuestDescription; +var GFxObject m_mcQuestRewardLabel; +var GFxObject m_mcQuestRewardAmount; +var GFxObject m_mcQuestDiscard; + +defaultproperties +{ + m_nIndex=-1 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_RankedEOMProgress.uc b/exported/TgClient/Classes/UIComponent_RankedEOMProgress.uc new file mode 100755 index 00000000..88ea938e --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_RankedEOMProgress.uc @@ -0,0 +1,9 @@ +class UIComponent_RankedEOMProgress extends UIComponent + native(UIList); + +var GFxObject m_mcNetTP; +var GFxObject m_mcCurrentTP; +var GFxObject m_mcCurrentRank; +var GFxObject m_mcRankIconPrev; +var GFxObject m_mcRankIconNext; +var UIComponent_ProgressBarHorizontal m_pProgress; diff --git a/exported/TgClient/Classes/UIComponent_RankedProgress.uc b/exported/TgClient/Classes/UIComponent_RankedProgress.uc new file mode 100755 index 00000000..fd4c03fc --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_RankedProgress.uc @@ -0,0 +1,11 @@ +class UIComponent_RankedProgress extends UIComponent + native(UIList); + +var GFxObject m_mcName; +var GFxObject m_mcRank; +var GFxObject m_mcWins; +var GFxObject m_mcLosses; +var GFxObject m_mcTier; +var GFxObject m_mcTPLabel; +var GFxObject m_mcTP; +var UIComponent_ProgressBarHorizontal m_pProgress; diff --git a/exported/TgClient/Classes/UIComponent_ScrollBar.uc b/exported/TgClient/Classes/UIComponent_ScrollBar.uc new file mode 100755 index 00000000..8f9265e0 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_ScrollBar.uc @@ -0,0 +1,16 @@ +class UIComponent_ScrollBar extends UIComponent_Interactable + native(UIComponent); + +var protected int m_nPageHeight; +var protected int m_nPageWidth; +var protected int m_nNumElements; +var protected float m_fScrollPos; +var protected int m_nNavScrollCBHandle1; +var protected int m_nNavScrollCBHandle2; +var protected TgGFxGroup m_grScroll; +var protected bool m_bScrollVertical; + +defaultproperties +{ + m_bScrollVertical=true +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_SocialPlayer.uc b/exported/TgClient/Classes/UIComponent_SocialPlayer.uc new file mode 100755 index 00000000..a1c70b91 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_SocialPlayer.uc @@ -0,0 +1,6 @@ +class UIComponent_SocialPlayer extends UIComponent + native(UIList); + +var GFxObject m_mcName; +var GFxObject m_mcStatus; +var GFxObject m_mcLevel; diff --git a/exported/TgClient/Classes/UIComponent_String.uc b/exported/TgClient/Classes/UIComponent_String.uc new file mode 100755 index 00000000..51abc54e --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_String.uc @@ -0,0 +1,4 @@ +class UIComponent_String extends UIComponent + native(UIList); + +var GFxObject m_mcText; diff --git a/exported/TgClient/Classes/UIComponent_StringWithCount.uc b/exported/TgClient/Classes/UIComponent_StringWithCount.uc new file mode 100755 index 00000000..c26309cc --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_StringWithCount.uc @@ -0,0 +1,4 @@ +class UIComponent_StringWithCount extends UIComponent_String + native(UIList); + +var GFxObject m_mcCountTf; diff --git a/exported/TgClient/Classes/UIComponent_TalentSelection.uc b/exported/TgClient/Classes/UIComponent_TalentSelection.uc new file mode 100755 index 00000000..75194ba4 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_TalentSelection.uc @@ -0,0 +1,13 @@ +class UIComponent_TalentSelection extends UIComponent + native(UIComponent); + +var TgGFxGroup m_grTalent; +var GFxObject m_mcTalentContainer; +var GFxObject m_mcEssenceQuantity; +var const float m_fCenteredCardSpacing; +var const float m_fTalentAnimSize; + +defaultproperties +{ + m_fTalentAnimSize=600.0000000 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_Targeter.uc b/exported/TgClient/Classes/UIComponent_Targeter.uc new file mode 100755 index 00000000..6c61f32e --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Targeter.uc @@ -0,0 +1,31 @@ +class UIComponent_Targeter extends UIComponent + native(UIComponent); + +var TgPawn_Character m_Target; +var TgGfxScene m_mcOwningScene; +var GFxObject m_mcParent; +var GFxObject m_mcTargeter; +var GFxObject m_mcKey; +var GFxObject m_mcPrompt; +var const string m_sKeybind; +var bool m_bTargeted; +var bool m_bVisible; +var bool m_bShowKeybind; +var bool m_bLOSCheck; +var const bool m_bCenterTargeter; +var float m_fBaseTargeterHeight; +var float m_fScaleMultiplier; +var float m_fMinScale; +var float m_fMaxScale; +var float m_fFadeTime; +var const int m_nTargeterFrame; + +defaultproperties +{ + m_bLOSCheck=true + m_fScaleMultiplier=1.0000000 + m_fMinScale=0.5000000 + m_fMaxScale=2.0000000 + m_fFadeTime=0.2000000 + m_nTargeterFrame=1 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_TargeterManager.uc b/exported/TgClient/Classes/UIComponent_TargeterManager.uc new file mode 100755 index 00000000..9b245e7e --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_TargeterManager.uc @@ -0,0 +1,7 @@ +class UIComponent_TargeterManager extends UIComponent + native(UIComponent); + +var TgGfxScene m_mcOwningScene; +var Class pTargeterClass; +var byte m_TargeterID; +var array m_Targeters; diff --git a/exported/TgClient/Classes/UIComponent_Targeter_AstralMark.uc b/exported/TgClient/Classes/UIComponent_Targeter_AstralMark.uc new file mode 100755 index 00000000..8e203f46 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Targeter_AstralMark.uc @@ -0,0 +1,9 @@ +class UIComponent_Targeter_AstralMark extends UIComponent_Targeter_BracketTargeter + native(UIComponent); + +defaultproperties +{ + m_sKeybind="GBA_Ability_2" + m_bShowKeybind=true + m_nTargeterFrame=5 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_Targeter_BracketTargeter.uc b/exported/TgClient/Classes/UIComponent_Targeter_BracketTargeter.uc new file mode 100755 index 00000000..d162a9e3 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Targeter_BracketTargeter.uc @@ -0,0 +1,11 @@ +class UIComponent_Targeter_BracketTargeter extends UIComponent_Targeter + native(UIComponent); + +var GFxObject m_mcTargeterLeft; +var GFxObject m_mcTargeterRight; +var float m_fSideTargeterAspectRatio; + +defaultproperties +{ + m_bCenterTargeter=true +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_Targeter_DimensionalLink.uc b/exported/TgClient/Classes/UIComponent_Targeter_DimensionalLink.uc new file mode 100755 index 00000000..61465cb5 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Targeter_DimensionalLink.uc @@ -0,0 +1,10 @@ +class UIComponent_Targeter_DimensionalLink extends UIComponent_Targeter_PointTargeter + native(UIComponent); + +defaultproperties +{ + m_sKeybind="GBA_Ability_3" + m_bShowKeybind=true + m_bCenterTargeter=true + m_nTargeterFrame=6 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_Targeter_Headhunter.uc b/exported/TgClient/Classes/UIComponent_Targeter_Headhunter.uc new file mode 100755 index 00000000..72d3d3d6 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Targeter_Headhunter.uc @@ -0,0 +1,5 @@ +class UIComponent_Targeter_Headhunter extends UIComponent_Targeter_PointTargeter + native(UIComponent); + +var GFxObject m_mcSpinner; +var float m_fSpinnerRotation; diff --git a/exported/TgClient/Classes/UIComponent_Targeter_HuntersMark.uc b/exported/TgClient/Classes/UIComponent_Targeter_HuntersMark.uc new file mode 100755 index 00000000..59198bce --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Targeter_HuntersMark.uc @@ -0,0 +1,9 @@ +class UIComponent_Targeter_HuntersMark extends UIComponent_Targeter_BracketTargeter + native(UIComponent); + +defaultproperties +{ + m_sKeybind="GBA_Ability_3" + m_bShowKeybind=true + m_nTargeterFrame=2 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_Targeter_PointTargeter.uc b/exported/TgClient/Classes/UIComponent_Targeter_PointTargeter.uc new file mode 100755 index 00000000..f99e478b --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Targeter_PointTargeter.uc @@ -0,0 +1,2 @@ +class UIComponent_Targeter_PointTargeter extends UIComponent_Targeter + native(UIComponent); diff --git a/exported/TgClient/Classes/UIComponent_Targeter_Protection.uc b/exported/TgClient/Classes/UIComponent_Targeter_Protection.uc new file mode 100755 index 00000000..295b5f87 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Targeter_Protection.uc @@ -0,0 +1,9 @@ +class UIComponent_Targeter_Protection extends UIComponent_Targeter_BracketTargeter + native(UIComponent); + +defaultproperties +{ + m_sKeybind="GBA_Ability_2" + m_bShowKeybind=true + m_nTargeterFrame=3 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_Targeter_RestoreSoul.uc b/exported/TgClient/Classes/UIComponent_Targeter_RestoreSoul.uc new file mode 100755 index 00000000..d7d1abf2 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Targeter_RestoreSoul.uc @@ -0,0 +1,9 @@ +class UIComponent_Targeter_RestoreSoul extends UIComponent_Targeter_PointTargeter + native(UIComponent); + +defaultproperties +{ + m_bLOSCheck=false + m_bCenterTargeter=true + m_nTargeterFrame=4 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_TeamPortraits.uc b/exported/TgClient/Classes/UIComponent_TeamPortraits.uc new file mode 100755 index 00000000..df2f265f --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_TeamPortraits.uc @@ -0,0 +1,10 @@ +class UIComponent_TeamPortraits extends UIComponent + native(UIComponent); + +var bool m_bFriendly; + +defaultproperties +{ + m_bFriendly=true + m_sLoadName="Team" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_TelepunchTarget.uc b/exported/TgClient/Classes/UIComponent_TelepunchTarget.uc new file mode 100755 index 00000000..8a2f99a4 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_TelepunchTarget.uc @@ -0,0 +1,12 @@ +class UIComponent_TelepunchTarget extends UIComponent + native(UIComponent); + +var TgPawn m_CurrentViewPawn; +var TgPawn m_CurrentTargetPawn; +var bool m_bIsHiding; +var bool m_bEnabled; + +defaultproperties +{ + m_sLoadName="DemonUlt" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_TitleTooltip.uc b/exported/TgClient/Classes/UIComponent_TitleTooltip.uc new file mode 100755 index 00000000..9f733a36 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_TitleTooltip.uc @@ -0,0 +1,12 @@ +class UIComponent_TitleTooltip extends UIComponent + native(UIComponent); + +var protected GFxObject m_mcIcon; +var protected GFxObject m_mcDescription; +var protected int m_nLastSetItemID; +var const float m_fTooltipShowDelay; + +defaultproperties +{ + m_fTooltipShowDelay=0.5000000 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_TitlesView.uc b/exported/TgClient/Classes/UIComponent_TitlesView.uc new file mode 100755 index 00000000..309c0c8b --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_TitlesView.uc @@ -0,0 +1,27 @@ +class UIComponent_TitlesView extends UIComponent + native(UIComponent); + +var protected array m_TitleEntries; +var protected TgGFxGroup m_grTitlesGroup; +var protected GFxObject m_mcTitle; +var protected GFxObject m_mcPlayerTitle; +var protected UIInteractable_Button m_pEquipButton; +var protected UIComponent_TitleTooltip m_pTooltipLeft; +var protected UIComponent_TitleTooltip m_pTooltipRight; +var protected UIComponent_ScrollBar m_pScrollbar; +var protected int m_nLastTooltipIndex; +var const int m_nNumTitlesRows; +var const int m_nNumTitlesCols; + +// Export UUIComponent_TitlesView::execFadeIn(FFrame&, void* const) +native function FadeIn(GFxObject pObj, optional float fTime = 0.0500000, optional float fDelay = 0.0000000); + +// Export UUIComponent_TitlesView::execFadeOut(FFrame&, void* const) +native function FadeOut(GFxObject pObj, optional float fTime = 0.0500000, optional float fDelay = 0.0000000); + +defaultproperties +{ + m_nNumTitlesRows=8 + m_nNumTitlesCols=2 + m_sLoadName="Titles" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_TitlesViewEntry.uc b/exported/TgClient/Classes/UIComponent_TitlesViewEntry.uc new file mode 100755 index 00000000..ab5b0208 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_TitlesViewEntry.uc @@ -0,0 +1,22 @@ +class UIComponent_TitlesViewEntry extends UIComponent_Interactable + native(UIComponent); + +var int m_nTitleId; +var protected GFxObject m_mcRarityText; +var protected GFxObject m_mcColorBlock; +var protected GFxObject m_mcFade; +var protected GFxObject m_mcTitle; +var protected GFxObject m_mcLockIcon; +var protected GFxObject m_mcSelected; +var protected GFxObject m_mcEquipped; +var protected AkBaseSoundObject m_scEquip; +var protected AkBaseSoundObject m_scUnequip; +var protected AkBaseSoundObject m_scNotOwned; + +defaultproperties +{ + m_scEquip=AkEvent'WW_UI_Default.UI_Menu_Main_OnClick_Positive_Play' + m_scUnequip=AkEvent'WW_UI_Default.UI_Menu_Main_OnClick_Negative_Play' + m_scNotOwned=AkEvent'WW_UI_Default.UI_Menu_Main_OnHover_Small_Play' + m_sLoadName="Entry" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_Toggle.uc b/exported/TgClient/Classes/UIComponent_Toggle.uc new file mode 100755 index 00000000..b8924290 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_Toggle.uc @@ -0,0 +1,5 @@ +class UIComponent_Toggle extends UIComponent_Interactable + native(UIComponent); + +var bool m_bActive; +var GFxObject m_mcActive; diff --git a/exported/TgClient/Classes/UIComponent_TorvaldShieldBar.uc b/exported/TgClient/Classes/UIComponent_TorvaldShieldBar.uc new file mode 100755 index 00000000..1df74425 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_TorvaldShieldBar.uc @@ -0,0 +1,19 @@ +class UIComponent_TorvaldShieldBar extends UIComponent + native(UIComponent); + +var GFxObject m_mcBarContainer; +var GFxObject m_mcShieldMask; +var GFxObject m_mcDamageMask; +var TgPawn_Gauntlet m_CachedViewedTorvald; +var TgPawn_Lazarus m_CachedLazarus; +var float m_fCurrentDamagePct; +var float m_fCurrentShieldPct; +var bool m_bVisible; +var float m_fDamageInterpSpeed; +var float m_fMinDamageInterpSpeed; + +defaultproperties +{ + m_fDamageInterpSpeed=4.5000000 + m_fMinDamageInterpSpeed=0.1000000 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIComponent_TorvaldShieldText.uc b/exported/TgClient/Classes/UIComponent_TorvaldShieldText.uc new file mode 100755 index 00000000..8dd961f2 --- /dev/null +++ b/exported/TgClient/Classes/UIComponent_TorvaldShieldText.uc @@ -0,0 +1,9 @@ +class UIComponent_TorvaldShieldText extends UIComponent + native(UIComponent); + +var GFxObject m_mcShieldTextContainer; +var GFxObject m_mcCurrentShieldText; +var GFxObject m_mcMaxShieldText; +var float m_fCurrentShield; +var float m_fMaxShield; +var bool m_bVisible; diff --git a/exported/TgClient/Classes/UICustomGame.uc b/exported/TgClient/Classes/UICustomGame.uc new file mode 100755 index 00000000..1bc58e61 --- /dev/null +++ b/exported/TgClient/Classes/UICustomGame.uc @@ -0,0 +1,204 @@ +class UICustomGame extends TgGfxScene within GFxMoviePlayer + native(GFxScene) + implements(DelayQueueInterface); + +const UICUSTOM_MAPS = 9; +const UICUSTOM_MODES = 3; +const UICUSTOM_GAMES = 7; +const UICUSTOM_SLOTS = 6; +const UICUSTOM_ARROWS = 2; + +enum UICustomGameState +{ + UICGS_GAME_LIST, // 0 + UICGS_CREATING_MAP, // 1 + UICGS_CREATING_SETTINGS, // 2 + UICGS_JOINING, // 3 + UICGS_LOBBY, // 4 + UICGS_GAME_STARTING, // 5 + UICGS_MAX // 6 +}; + +struct native UICustomMapQueue +{ + var int nQueueId; + var int nMapId; + var int nName; + var init string sName; + var TgObject.TG_GAME_TYPE eGameType; + + structdefaultproperties + { + nQueueId=0 + nMapId=0 + nName=0 + sName="" + eGameType=TG_GAME_TYPE.TGT_UNSET + } +}; + +struct native UICustomGameData +{ + var int nId; + var int nName; + var int nDraft; + var int nTotal; + var int nPlayers; + var int nMaxPartySizeToJoin; + var dword dwRegion; + var bool bPrivate; + var init string sName; + var init string sMap; + var init string sGameMode; + var init string sOwner; + var init string sQueueName; + var TgObject.TG_GAME_TYPE eGameType; + + structdefaultproperties + { + nId=0 + nName=0 + nDraft=0 + nTotal=0 + nPlayers=0 + nMaxPartySizeToJoin=0 + dwRegion=() + bPrivate=false + sName="" + sMap="" + sGameMode="" + sOwner="" + sQueueName="" + eGameType=TG_GAME_TYPE.TGT_UNSET + } +}; + +var private native const noexport Pointer VfTable_IDelayQueueInterface; +var int m_nMapIndex; +var int m_nTeamIndex; +var int m_nDraftIndex; +var int m_nQueueIndex; +var int m_nRegionIndex; +var int m_nScrollIndex; +var int m_nSpectateIndex; +var bool m_bValidJoin; +var bool m_bValidCreate; +var UICustomGame.UICustomGameState m_eState; +var GFxObject m_mcHeader; +var GFxObject m_mcHeaderBack; +var GFxObject m_mcHeaderTitle; +var GFxObject m_mcGames; +var GFxObject m_mcGamesCreate; +var GFxObject m_mcGamesCreateKey; +var GFxObject m_mcGamesRefresh; +var GFxObject m_mcGamesScrollBar; +var GFxObject m_mcGame[7]; +var GFxObject m_mcGameJoin[7]; +var GFxObject m_mcGameLock[7]; +var GFxObject m_mcGameName[7]; +var GFxObject m_mcGameDraft[7]; +var GFxObject m_mcGameOwner[7]; +var GFxObject m_mcGameMode[7]; +var GFxObject m_mcGameMap[7]; +var GFxObject m_mcGamePlayers[7]; +var TgGFxGroup m_grGames; +var GFxObject m_mcCreate; +var GFxObject m_mcCreateMapMode; +var GFxObject m_mcCreateSettings; +var GFxObject m_mcCreateDone; +var GFxObject m_mcCreateCancel; +var GFxObject m_mcCreateMap[9]; +var GFxObject m_mcCreateMapIcon[9]; +var GFxObject m_mcCreateMapName[9]; +var UIInteractable_Button m_mcCreateModeTab[3]; +var GFxObject m_mcCreateBumper[2]; +var GFxObject m_mcCreateScrollBar; +var GFxObject m_mcCreateSettingName; +var GFxObject m_mcCreateSettingNameHighlight; +var GFxObject m_mcCreateSettingPass; +var GFxObject m_mcCreateSettingPassHighlight; +var GFxObject m_mcCreateSettingDraft; +var GFxObject m_mcCreateSettingDraftHighlight; +var GFxObject m_mcCreateSettingDraftArrow[2]; +var GFxObject m_mcCreateSettingRegion; +var GFxObject m_mcCreateSettingRegionHighlight; +var GFxObject m_mcCreateSettingRegionArrow[2]; +var GFxObject m_mcCreateSettingSpectate; +var GFxObject m_mcCreateSettingSpectateHighlight; +var GFxObject m_mcCreateSettingSpectateArrow[2]; +var GFxObject m_mcCreateSettingTeamSize; +var GFxObject m_mcCreateSettingTeamSizeHighlight; +var GFxObject m_mcCreateSettingTeamSizeArrow[2]; +var GFxObject m_mcCreateSettingSpectatePass; +var GFxObject m_mcCreateSettingSpectatePassHighlight; +var GFxObject m_mcCreateSettingMap; +var GFxObject m_mcCreateSettingMapIcon; +var GFxObject m_mcCreateSettingMapName; +var GFxObject m_mcCreateSettingMapMode; +var TgGFxGroup m_grCreateMaps; +var TgGFxGroup m_grCreateSettings; +var GFxObject m_mcLobby; +var GFxObject m_mcLobbyName; +var GFxObject m_mcLobbyDone; +var GFxObject m_mcLobbyDraft; +var GFxObject m_mcLobbyCancel; +var GFxObject m_mcLobbyRegion; +var GFxObject m_mcLobbyMapIcon; +var GFxObject m_mcLobbyMapName; +var GFxObject m_mcLobbyMapMode; +var GFxObject m_mcLobbySpectate; +var GFxObject m_mcLobbyStarting; +var GFxObject m_mcLobbyTeamSize; +var GFxObject m_mcLobbyMapDetails; +var GFxObject m_mcLobbyRed[6]; +var GFxObject m_mcLobbyRedName[6]; +var GFxObject m_mcLobbyRedEquipableTitle[6]; +var GFxObject m_mcLobbyRedLevel[6]; +var GFxObject m_mcLobbyRedLeader[6]; +var UIInteractable_Button m_mcLobbyRedFrame[6]; +var UIInteractable_Button m_mcLobbyRedKick[6]; +var GFxObject m_mcLobbyRedSwap[6]; +var GFxObject m_mcLobbyBlue[6]; +var GFxObject m_mcLobbyBlueName[6]; +var GFxObject m_mcLobbyBlueEquipableTitle[6]; +var GFxObject m_mcLobbyBlueLevel[6]; +var GFxObject m_mcLobbyBlueLeader[6]; +var UIInteractable_Button m_mcLobbyBlueFrame[6]; +var UIInteractable_Button m_mcLobbyBlueKick[6]; +var GFxObject m_mcLobbyBlueSwap[6]; +var TgGFxGroup m_grLobby; +var GFxObject m_mcPopup; +var GFxObject m_mcPopupDone; +var GFxObject m_mcPopupTitle; +var GFxObject m_mcPopupCancel; +var GFxObject m_mcPopupSubtitle; +var GFxObject m_mcPopupInput; +var TgGFxGroup m_grPopup; +var array m_FilteredCustomMapQueues; +var array m_FilteredCustomGames; +var array m_RawCustomMapQueues; +var array m_RawCustomGames; +var int m_nCustomGamesListRegionIndex; +var UIComponent_Dropdown m_RegionDropdown; +var int m_nCurrentGameTypeIndex; +var int m_nHighlightedPlayerIndex; +var int m_nHighlightedPlayerTaskforce; +var dword m_dwPendingHighlightPlayerId; + +defaultproperties +{ + m_nCustomGamesListRegionIndex=-1 + m_UISceneClass=Class'TgClient.UIScene_UICustomGame' + m_OptionList[0]=14 + m_OptionList[1]=4 + m_OptionList[2]=0 + m_OptionList[3]=0 + m_OptionList[4]=0 + m_OptionList[5]=0 + m_OptionList[6]=0 + m_nBackground=1 + m_bBlur=true + m_bIsOnline=true + m_bAllowLeaveQueueKey=false + m_Name="UICustomGame" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIDailyReward.uc b/exported/TgClient/Classes/UIDailyReward.uc new file mode 100755 index 00000000..2d9263f7 --- /dev/null +++ b/exported/TgClient/Classes/UIDailyReward.uc @@ -0,0 +1,11 @@ +class UIDailyReward extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_UIDailyReward' + m_nBackground=1 + m_bBlur=true + m_bIsPopup=true + m_Name="UIDailyReward" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIData.uc b/exported/TgClient/Classes/UIData.uc new file mode 100755 index 00000000..ffca8fb1 --- /dev/null +++ b/exported/TgClient/Classes/UIData.uc @@ -0,0 +1,2 @@ +class UIData extends Object + native(UIData); diff --git a/exported/TgClient/Classes/UIDataChampion.uc b/exported/TgClient/Classes/UIDataChampion.uc new file mode 100755 index 00000000..d6e211f6 --- /dev/null +++ b/exported/TgClient/Classes/UIDataChampion.uc @@ -0,0 +1,80 @@ +class UIDataChampion extends UIDataItem + native(UIData); + +const ALL_CHAMPIONS = 0; +const OWNED_CHAMPIONS = -1; + +enum EArchetypes +{ + ARCHETYPE_TANK, // 0 + ARCHETYPE_DAMAGE, // 1 + ARCHETYPE_SUPPORT, // 2 + ARCHETYPE_FLANK, // 3 + ARCHETYPE_MAX // 4 +}; + +enum SimplifiedCardType +{ + SCT_Card, // 0 + SCT_BurnCard, // 1 + SCT_Talent, // 2 + SCT_MAX // 3 +}; + +struct native MasteryRewards +{ + var int nLevel; + var native Pointer pItemInfo; + var int nCurrency; + var int nCurrencyType; + var int nChests; + var bool bEntitlement; + + structdefaultproperties + { + nLevel=0 + nCurrency=0 + nCurrencyType=0 + nChests=0 + bEntitlement=false + } +}; + +var int m_nLevel; +var int m_nItemId; +var int m_nArchetype; +var int m_nItemsTotal; +var int m_nItemsOwned; +var int m_nXPProgress; +var int m_nXPRequired; +var int m_nActiveSet; +var int m_nActiveTalent; +var int m_nActiveDeck; +var int m_nActiveSkin; +var int m_nActiveHead; +var int m_nActiveEmote; +var int m_nActiveVoice; +var int m_nActiveWeapon; +var int m_nActiveSpray; +var int m_nActiveMVPPose; +var bool m_bCanUseMount; +var bool m_bIsOnRotation; +var float m_fIconOffsetX; +var float m_fIconOffsetY; +var float m_fXPPercent; +var float m_fItemsPercent; +var string m_sLore; +var string m_sDamage; +var string m_sSpecial; +var array m_Sets; +var array m_Cards; +var array m_Heads; +var array m_Skins; +var array m_Skills; +var array m_Weapons; +var array m_Emotes; +var array m_Sprays; +var array m_MVPPoses; +var array m_Voices; +var array m_Groups; +var array m_Decks; diff --git a/exported/TgClient/Classes/UIDataChampions.uc b/exported/TgClient/Classes/UIDataChampions.uc new file mode 100755 index 00000000..eddacc8e --- /dev/null +++ b/exported/TgClient/Classes/UIDataChampions.uc @@ -0,0 +1,9 @@ +class UIDataChampions extends UIDataObject + native(UIData); + +var UIDataChampion m_pActiveChampion; +var array m_Champions; +var array m_PvEChampions; +var array m_Collections; +var native map{VOID,VOID} m_PerChampionCollections; +var native map{VOID,VOID} m_ChampionIdToData; diff --git a/exported/TgClient/Classes/UIDataCommon.uc b/exported/TgClient/Classes/UIDataCommon.uc new file mode 100755 index 00000000..99322350 --- /dev/null +++ b/exported/TgClient/Classes/UIDataCommon.uc @@ -0,0 +1,28 @@ +class UIDataCommon extends UIDataObject + native(UIData); + +const DEFAULT_ANNOUNCER_PACK = 18647; + +var int m_nLevel; +var int m_nItemsTotal; +var int m_nItemsOwned; +var int m_nXPProgress; +var int m_nXPRequired; +var int m_nActiveMount; +var float m_fXPPercent; +var float m_fItemsPercent; +var array m_BurnAll; +var array m_BurnA; +var array m_BurnB; +var array m_BurnC; +var array m_BurnD; +var array m_Mounts; +var array m_EquipableTitles; +var array m_AnnouncerPacks; +var array m_Chests; +var array m_MatchBoosters; + +defaultproperties +{ + m_nActiveMount=11512 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIDataGoals.uc b/exported/TgClient/Classes/UIDataGoals.uc new file mode 100755 index 00000000..32ba66eb --- /dev/null +++ b/exported/TgClient/Classes/UIDataGoals.uc @@ -0,0 +1,7 @@ +class UIDataGoals extends UIDataObject + native(UIData); + +var array m_Ranked; +var native map{VOID,VOID} m_CurrencyStats; +var array m_GoalArray; +var native map{VOID,VOID} m_Goals; diff --git a/exported/TgClient/Classes/UIDataItem.uc b/exported/TgClient/Classes/UIDataItem.uc new file mode 100755 index 00000000..a59f8cbd --- /dev/null +++ b/exported/TgClient/Classes/UIDataItem.uc @@ -0,0 +1,92 @@ +class UIDataItem extends UIDataObject + native(UIData); + +enum ItemType +{ + CIT_Card, // 0 + CIT_Head, // 1 + CIT_Skin, // 2 + CIT_Skill, // 3 + CIT_Weapon, // 4 + CIT_Emote, // 5 + CIT_Spray, // 6 + CIT_MVPPose, // 7 + CIT_Voice, // 8 + CIT_Set, // 9 + CIT_Mount, // 10 + CIT_BurnCard, // 11 + CIT_Talent, // 12 + CIT_Title, // 13 + CIT_Collection, // 14 + CIT_AnnouncerPack, // 15 + CIT_Chest, // 16 + CIT_MatchBooster, // 17 + CIT_MAX // 18 +}; + +enum AbilityModifiedByDevice +{ + AMBD_Weapon, // 0 + AMBD_AltFire, // 1 + AMBD_Ability, // 2 + AMBD_Movement, // 3 + AMBD_MAX // 4 +}; + +enum ItemRarity +{ + IRT_Default, // 0 + IRT_Common, // 1 + IRT_Uncommon, // 2 + IRT_Rare, // 3 + IRT_Epic, // 4 + IRT_Legendary, // 5 + IRT_Ancient, // 6 + IRT_MAX // 7 +}; + +enum SimplifiedItemObtainabilityValue +{ + SIOV_Normal, // 0 + SIOV_Limited, // 1 + SIOV_Exclusive, // 2 + SIOV_Mastery, // 3 + SIOV_Quest, // 4 + SIOV_MAX // 5 +}; + +enum StoreItemsSortingType +{ + SIST_ByInGame, // 0 + SIST_ByRarityDescending, // 1 + SIST_MAX // 2 +}; + +var UIDataItem.ItemType m_eItemType; +var byte m_eRarity; +var dword m_dwPlayerInventoryId; +var dword m_dwCharInventoryId; +var int m_nBotId; +var int m_nObtainability; +var int m_nVendor; +var int m_nId; +var int m_nIcon; +var int m_nInGameCredits; +var int m_nRank; +var int m_nUpgradeLevel; +var int m_nCooldown; +var bool m_bPurchasable; +var bool m_bQuestExclusive; +var bool m_bDefault; +var init string m_sName; +var init string m_sDesc; +var init string m_sIcon; +var int m_nHintId; +var int nIndex; +var int m_nEntitlementId; +var UIDataItem m_pOwnershipItem; +var array m_SubItems; +var array m_PriceData; + +// Export UUIDataItem::execOnTeamModelUpdated(FFrame&, void* const) +native function OnTeamModelUpdated(); diff --git a/exported/TgClient/Classes/UIDataLeague.uc b/exported/TgClient/Classes/UIDataLeague.uc new file mode 100755 index 00000000..db117127 --- /dev/null +++ b/exported/TgClient/Classes/UIDataLeague.uc @@ -0,0 +1,13 @@ +class UIDataLeague extends UIData + native(UIData); + +var dword dwLeagueId; +var dword dwSeason; +var dword dwRound; +var dword dwPlayerCount; +var DateTimeWrapper dtSeasonEnd; +var DateTimeWrapper dtRoundEnd; +var init array m_TierArray; +var native map{VOID,VOID} m_Tiers; +var init array m_PlayerArray; +var native map{VOID,VOID} m_Players; diff --git a/exported/TgClient/Classes/UIDataLeagueManager.uc b/exported/TgClient/Classes/UIDataLeagueManager.uc new file mode 100755 index 00000000..35dc99f9 --- /dev/null +++ b/exported/TgClient/Classes/UIDataLeagueManager.uc @@ -0,0 +1,7 @@ +class UIDataLeagueManager extends UIDataObject + native(UIData); + +var array m_LeagueArray; +var native map{VOID,VOID} m_Leagues; +var UIData_LeagueEOM m_EOM; +var UIData_LeagueTierChange m_TierChange; diff --git a/exported/TgClient/Classes/UIDataLeaguePlayer.uc b/exported/TgClient/Classes/UIDataLeaguePlayer.uc new file mode 100755 index 00000000..fa06cccc --- /dev/null +++ b/exported/TgClient/Classes/UIDataLeaguePlayer.uc @@ -0,0 +1,19 @@ +class UIDataLeaguePlayer extends UIData + native(UIData); + +var UIDataPlayer pPlayer; +var UIDataLeague pLeague; +var UIDataLeagueTier pTier; +var UIDataLeagueTier pHighestTier; +var int nPointsEarned; +var int nPointsTrend; +var dword dwRank; +var dword dwRankPrev; +var dword dwWins; +var dword dwLosses; +var dword dwDodges; +var dword dwMatchesPlayedInTier; +var dword dwRegion; +var dword dwRecommendedTierId; +var dword dwTitleId; +var DateTimeWrapper dtLastPlayed; diff --git a/exported/TgClient/Classes/UIDataLeagueTier.uc b/exported/TgClient/Classes/UIDataLeagueTier.uc new file mode 100755 index 00000000..21502176 --- /dev/null +++ b/exported/TgClient/Classes/UIDataLeagueTier.uc @@ -0,0 +1,13 @@ +class UIDataLeagueTier extends UIData + native(UIData); + +enum UIDLT_Tag +{ + UIDLT_Decays, // 0 + UIDLT_PlatinumQueue, // 1 + UIDLT_NoDivisions, // 2 + UIDLT_MAX // 3 +}; + +var UIDataLeague pLeague; +var dword dwTierId; diff --git a/exported/TgClient/Classes/UIDataManager.uc b/exported/TgClient/Classes/UIDataManager.uc new file mode 100755 index 00000000..3cddca2d --- /dev/null +++ b/exported/TgClient/Classes/UIDataManager.uc @@ -0,0 +1,11 @@ +class UIDataManager extends UIDataObject + native(UIData); + +var UIDataCommon m_CommonData; +var UIDataChampions m_ChampionData; +var UIDataSocial m_Social; +var UIDataLeagueManager m_LeagueMgr; +var UIDataGoals m_Goals; +var UIDataQueues m_Queues; +var array m_Data; +var array m_RestrictedClasses; diff --git a/exported/TgClient/Classes/UIDataObject.uc b/exported/TgClient/Classes/UIDataObject.uc new file mode 100755 index 00000000..8c95d23d --- /dev/null +++ b/exported/TgClient/Classes/UIDataObject.uc @@ -0,0 +1,90 @@ +class UIDataObject extends UIData + native(UIData); + +const UIDATA_DECKSET = 54; +const UIDATA_CARDPROP = 1710; +const UIDATA_DECKNAME = 1783; +const UIDATA_DECKPROP = 1784; +const UIDATA_DECKSIZE = 5; +const UIDATA_ACTIVESET = 5; +const UIDATA_NUMTEMPLATEDECKS = 1; +const UIDATA_MAXCUSTOMDECKS = 5; +const UIDATA_NUMTALENTS = 3; +const UIDATA_GROUPSIZE = 4; +const UIDATA_BURNSIZE = 3; +const UIDATA_SETSIZE = 3; +const ITEM_TENCENT_FILLER = 19094; + +enum UICardDeckType +{ + UIDT_OWNED, // 0 + UIDT_LOCKED, // 1 + UIDT_INDECK, // 2 + UIDT_POINTS, // 3 + UIDT_MAX // 4 +}; + +struct native ItemGroup +{ + var int nId[4]; + var UIDataItem pItem; + + structdefaultproperties + { + nId[0]=0 + nId[1]=0 + nId[2]=0 + nId[3]=0 + pItem=none + } +}; + +struct native UIDataDeck +{ + var int nId; + var bool bTemplate; + var init string sName; + var init string sDesc; + var int nDevice[5]; + + structdefaultproperties + { + nId=0 + bTemplate=false + sName="" + sDesc="" + nDevice[0]=0 + nDevice[1]=0 + nDevice[2]=0 + nDevice[3]=0 + nDevice[4]=0 + } +}; + +struct native ProductInfo +{ + var string ProductID; + var string ProductName; + var string ProductDescription; + var string ProductImage; + var string DisplayListPrice; + var string DisplayPrice; + var float ListPrice; + var float Price; + var string CurrencyCode; + var string SignedOffer; + + structdefaultproperties + { + ProductID="" + ProductName="" + ProductDescription="" + ProductImage="" + DisplayListPrice="" + DisplayPrice="" + ListPrice=0.0000000 + Price=0.0000000 + CurrencyCode="" + SignedOffer="" + } +}; diff --git a/exported/TgClient/Classes/UIDataPlayer.uc b/exported/TgClient/Classes/UIDataPlayer.uc new file mode 100755 index 00000000..eaca390f --- /dev/null +++ b/exported/TgClient/Classes/UIDataPlayer.uc @@ -0,0 +1,30 @@ +class UIDataPlayer extends UIData + native(UIData); + +enum SOCIAL_PlayerOnlineStatus +{ + UISPOS_None, // 0 + UISPOS_Offline, // 1 + UISPOS_Away, // 2 + UISPOS_FriendInviteSent, // 3 + UISPOS_FriendInvitedYou, // 4 + UISPOS_InMatch, // 5 + UISPOS_InParty, // 6 + UISPOS_InQueue, // 7 + UISPOS_InLobby, // 8 + UISPOS_Online, // 9 + UISPOS_MAX // 10 +}; + +var init string sName; +var init string sStatusString; +var UIDataPlayer.SOCIAL_PlayerOnlineStatus eStatus; +var int nLevel; +var int nHours; +var int nMasteryLevel; +var dword dwPlayerId; +var QWord qwUserId; +var bool bIsSelf; +var bool bIsLeader; +var bool bPartyInvitePending; +var init array pLeaguePlayers; diff --git a/exported/TgClient/Classes/UIDataPrice.uc b/exported/TgClient/Classes/UIDataPrice.uc new file mode 100755 index 00000000..0042c50e --- /dev/null +++ b/exported/TgClient/Classes/UIDataPrice.uc @@ -0,0 +1,12 @@ +class UIDataPrice extends UIDataObject + native(UIData); + +var int m_nVendorId; +var int m_nLootId; +var int m_nItemId; +var int m_nPurchaseType; +var int m_nCurrencyType; +var int m_nQuantity; +var int m_nPrice; +var int m_nDiscountPrice; +var int m_nOriginalPrice; diff --git a/exported/TgClient/Classes/UIDataQueues.uc b/exported/TgClient/Classes/UIDataQueues.uc new file mode 100755 index 00000000..8be7653d --- /dev/null +++ b/exported/TgClient/Classes/UIDataQueues.uc @@ -0,0 +1,5 @@ +class UIDataQueues extends UIDataObject + native(UIData); + +var UIData_List_TitleIcon m_QueueData; +var float m_fStatusTimer; diff --git a/exported/TgClient/Classes/UIDataSocial.uc b/exported/TgClient/Classes/UIDataSocial.uc new file mode 100755 index 00000000..4cd1ea54 --- /dev/null +++ b/exported/TgClient/Classes/UIDataSocial.uc @@ -0,0 +1,36 @@ +class UIDataSocial extends UIDataObject + native(UIData); + +struct native UISocialReferrer +{ + var dword dwReferralId; + var QWord qwPortalUserId; + var init string sName; + + structdefaultproperties + { + dwReferralId=() + qwPortalUserId=() + sName="" + } +}; + +var bool m_bIsPartyCompetitiveReady; +var bool m_bCompetitiveReadyDirty; +var bool m_bSelfIsPartyLeader; +var bool m_nPartyMembersInGame; +var int m_nOnlineFriendCount; +var int m_nConnectedFriendCount; +var int m_nPendingFriendInvites; +var int m_nReferralPeriodSeconds; +var private int m_nOldActivePartySize; +var init array m_Friends; +var init array m_Party; +var init array m_Referrers; +var native map{VOID,VOID} m_Players; +var init array m_PlayerArray; + +defaultproperties +{ + m_nReferralPeriodSeconds=864000 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIData_Goal.uc b/exported/TgClient/Classes/UIData_Goal.uc new file mode 100755 index 00000000..b9110158 --- /dev/null +++ b/exported/TgClient/Classes/UIData_Goal.uc @@ -0,0 +1,7 @@ +class UIData_Goal extends UIData + native(UIData); + +var dword m_dwActivityId; +var dword m_dwGoalGroupId; +var dword m_dwGoalId; +var UIData m_pReward; diff --git a/exported/TgClient/Classes/UIData_LeaderboardPlayer.uc b/exported/TgClient/Classes/UIData_LeaderboardPlayer.uc new file mode 100755 index 00000000..2dec2975 --- /dev/null +++ b/exported/TgClient/Classes/UIData_LeaderboardPlayer.uc @@ -0,0 +1,14 @@ +class UIData_LeaderboardPlayer extends UIData + native(UIData); + +var init string sName; +var QWord qwPortalUserId; +var float fRank; +var int nLevel; +var int nWins; +var int nLosses; +var int nPerk; +var int nRegion; +var int nTitle; +var int nPosition; +var UIDataChampion pChampion; diff --git a/exported/TgClient/Classes/UIData_LeagueEOM.uc b/exported/TgClient/Classes/UIData_LeagueEOM.uc new file mode 100755 index 00000000..45368e5d --- /dev/null +++ b/exported/TgClient/Classes/UIData_LeagueEOM.uc @@ -0,0 +1,11 @@ +class UIData_LeagueEOM extends UIData + native(UIData); + +var UIDataLeague m_pLeague; +var UIDataLeagueTier m_pTier; +var int m_nPointChange; +var int m_nCurrentPoints; +var int m_nWins; +var int m_nLosses; +var int m_nMatchesPlayed; +var UIData_LeagueTierChange m_TierChange; diff --git a/exported/TgClient/Classes/UIData_LeagueTierChange.uc b/exported/TgClient/Classes/UIData_LeagueTierChange.uc new file mode 100755 index 00000000..24cfb47f --- /dev/null +++ b/exported/TgClient/Classes/UIData_LeagueTierChange.uc @@ -0,0 +1,14 @@ +class UIData_LeagueTierChange extends UIData + native(UIData); + +enum UIDLTC_PromotionType +{ + UIDLTC_Promoted, // 0 + UIDLTC_Demoted, // 1 + UIDLTC_MAX // 2 +}; + +var UIDataLeague m_League; +var UIDataLeagueTier m_PrevTier; +var UIDataLeagueTier m_NextTier; +var UIData_LeagueTierChange.UIDLTC_PromotionType m_ePromotionType; diff --git a/exported/TgClient/Classes/UIData_List.uc b/exported/TgClient/Classes/UIData_List.uc new file mode 100755 index 00000000..d6892e15 --- /dev/null +++ b/exported/TgClient/Classes/UIData_List.uc @@ -0,0 +1,4 @@ +class UIData_List extends UIData + native(UIData); + +var init array pData; diff --git a/exported/TgClient/Classes/UIData_List_TitleIcon.uc b/exported/TgClient/Classes/UIData_List_TitleIcon.uc new file mode 100755 index 00000000..b77f1f25 --- /dev/null +++ b/exported/TgClient/Classes/UIData_List_TitleIcon.uc @@ -0,0 +1,5 @@ +class UIData_List_TitleIcon extends UIData_List + native(UIData); + +var int nIcon; +var init array sTitles; diff --git a/exported/TgClient/Classes/UIData_LobbySlotItem.uc b/exported/TgClient/Classes/UIData_LobbySlotItem.uc new file mode 100755 index 00000000..50317d2e --- /dev/null +++ b/exported/TgClient/Classes/UIData_LobbySlotItem.uc @@ -0,0 +1,20 @@ +class UIData_LobbySlotItem extends UIData + native(UIData); + +enum UIChampionCustomizeState +{ + UICCS_Collections, // 0 + UICCS_HEAD, // 1 + UICCS_BODY, // 2 + UICCS_WEAPON, // 3 + UICCS_EMOTE, // 4 + UICCS_VOICE, // 5 + UICCS_MVPPOSE, // 6 + UICCS_MOUNT, // 7 + UICCS_Spray, // 8 + UICCS_MAX // 9 +}; + +var UIData_LobbySlotItem.UIChampionCustomizeState eState; +var native Pointer pItemInfo; +var bool bActive; diff --git a/exported/TgClient/Classes/UIData_MatchBoosterActivated.uc b/exported/TgClient/Classes/UIData_MatchBoosterActivated.uc new file mode 100755 index 00000000..90678c3d --- /dev/null +++ b/exported/TgClient/Classes/UIData_MatchBoosterActivated.uc @@ -0,0 +1,8 @@ +class UIData_MatchBoosterActivated extends UIData + native(UIData); + +var dword dwSourcePlayerId; +var dword dwTaskForce; +var dword eItemBoosterSubtype; +var float fMultiplier; +var UIDataItem pBoosterItem; diff --git a/exported/TgClient/Classes/UIData_MultiQueue.uc b/exported/TgClient/Classes/UIData_MultiQueue.uc new file mode 100755 index 00000000..75ef1de1 --- /dev/null +++ b/exported/TgClient/Classes/UIData_MultiQueue.uc @@ -0,0 +1,6 @@ +class UIData_MultiQueue extends UIData + native(UIData); + +var init string sName; +var init string sDesc; +var init array pQueues; diff --git a/exported/TgClient/Classes/UIData_PlayerMatchRecord.uc b/exported/TgClient/Classes/UIData_PlayerMatchRecord.uc new file mode 100755 index 00000000..4b021d24 --- /dev/null +++ b/exported/TgClient/Classes/UIData_PlayerMatchRecord.uc @@ -0,0 +1,44 @@ +class UIData_PlayerMatchRecord extends UIData + native(UIData); + +const UIDATA_PLAYERMATCHRECORD_DECKSIZE = 5; +const UIDATA_PLAYERMATCHRECORD_ITEMCOUNT = 4; + +var int nBotId; +var int nPlayerId; +var int nLevel; +var int nKills; +var int nDeaths; +var int nAssists; +var int nEarnedCredits; +var int nHealingPlayer; +var int nHealingBot; +var int nHealingTotal; +var int nSelfHealing; +var int nDmgTaken; +var int nDmgPlayer; +var int nDmgBot; +var int nDmgTotal; +var int nSoloKills; +var int nFlankKills; +var int nMultikill; +var int nKillstreak; +var int nDmgStructure; +var int nDmgMitigated; +var int nObjectiveTime; +var int nCards[5]; +var int nLegendary; +var int nPurchasedItems[4]; +var int nPurchasedItemLevels[4]; +var int nMountItemId; +var int nEmoteItemId; +var int nMVPPoseItemId; +var int nSprayItemId; +var int nTitleItemId; +var int nTaskForce; +var bool bAlly; +var bool bLocal; +var bool bReported; +var init string sPlayer; +var init string sClass; +var UniqueNetId ConsoleUniqueId; diff --git a/exported/TgClient/Classes/UIData_PopupGeneric.uc b/exported/TgClient/Classes/UIData_PopupGeneric.uc new file mode 100755 index 00000000..fda6e2b4 --- /dev/null +++ b/exported/TgClient/Classes/UIData_PopupGeneric.uc @@ -0,0 +1,13 @@ +class UIData_PopupGeneric extends UIData + native(UIData) + implements(TgCallbackInterface); + +const UIDATA_POPUPGENERIC_TITLECOUNT = 2; +const UIDATA_POPUPGENERIC_BUTTONCOUNT = 8; + +var private native const noexport Pointer VfTable_ITgCallbackInterface; +var init string sTitle[2]; +var int nInitialIndex; +var bool bUserMustClose; +var init string sButtonName[8]; +var TgCallbackContainer m_CallbackContainer; diff --git a/exported/TgClient/Classes/UIData_PopupInput.uc b/exported/TgClient/Classes/UIData_PopupInput.uc new file mode 100755 index 00000000..17f3e452 --- /dev/null +++ b/exported/TgClient/Classes/UIData_PopupInput.uc @@ -0,0 +1,12 @@ +class UIData_PopupInput extends UIData + native(UIData) + implements(TgCallbackInterface); + +const UIDATA_POPUPINPUT_TITLECOUNT = 2; +const UIDATA_POPUPINPUT_BUTTONCOUNT = 2; + +var private native const noexport Pointer VfTable_ITgCallbackInterface; +var init string sTitle[2]; +var init string sButtonName[2]; +var native Pointer pButtonValidate[2]; +var TgCallbackContainer m_CallbackContainer; diff --git a/exported/TgClient/Classes/UIData_Quest.uc b/exported/TgClient/Classes/UIData_Quest.uc new file mode 100755 index 00000000..c46a7114 --- /dev/null +++ b/exported/TgClient/Classes/UIData_Quest.uc @@ -0,0 +1,4 @@ +class UIData_Quest extends UIData + native(UIData); + +var int m_nQuestDataIndex; diff --git a/exported/TgClient/Classes/UIData_Queue.uc b/exported/TgClient/Classes/UIData_Queue.uc new file mode 100755 index 00000000..503a55ff --- /dev/null +++ b/exported/TgClient/Classes/UIData_Queue.uc @@ -0,0 +1,22 @@ +class UIData_Queue extends UIData + native(UIData); + +enum EUIDQCallToAction +{ + EUIDQCTA_None, // 0 + EUIDQCTA_NewMode, // 1 + EUIDQCTA_NewMap, // 2 + EUIDQCTA_MAX // 3 +}; + +var init array dwQueues; +var int nForcedBotId; +var UIData_Queue.EUIDQCallToAction eCTA; +var int nIcon; +var bool bSelected; +var bool bCompetitive; + +defaultproperties +{ + bSelected=true +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIData_String.uc b/exported/TgClient/Classes/UIData_String.uc new file mode 100755 index 00000000..38b9b65c --- /dev/null +++ b/exported/TgClient/Classes/UIData_String.uc @@ -0,0 +1,4 @@ +class UIData_String extends UIData + native(UIData); + +var string m_sValue; diff --git a/exported/TgClient/Classes/UIData_StringList.uc b/exported/TgClient/Classes/UIData_StringList.uc new file mode 100755 index 00000000..4282f0c7 --- /dev/null +++ b/exported/TgClient/Classes/UIData_StringList.uc @@ -0,0 +1,4 @@ +class UIData_StringList extends UIData + native(UIData); + +var init array sValues; diff --git a/exported/TgClient/Classes/UIData_StringWithCount.uc b/exported/TgClient/Classes/UIData_StringWithCount.uc new file mode 100755 index 00000000..4874f99c --- /dev/null +++ b/exported/TgClient/Classes/UIData_StringWithCount.uc @@ -0,0 +1,4 @@ +class UIData_StringWithCount extends UIData_String + native(UIData); + +var int m_nValue; diff --git a/exported/TgClient/Classes/UIData_String_Localized.uc b/exported/TgClient/Classes/UIData_String_Localized.uc new file mode 100755 index 00000000..e6e71a70 --- /dev/null +++ b/exported/TgClient/Classes/UIData_String_Localized.uc @@ -0,0 +1,5 @@ +class UIData_String_Localized extends UIData + native(UIData); + +var string m_sSection; +var string m_sKey; diff --git a/exported/TgClient/Classes/UIData_TitleQuantity.uc b/exported/TgClient/Classes/UIData_TitleQuantity.uc new file mode 100755 index 00000000..a9e80bf1 --- /dev/null +++ b/exported/TgClient/Classes/UIData_TitleQuantity.uc @@ -0,0 +1,6 @@ +class UIData_TitleQuantity extends UIData + native(UIData); + +var string m_sTitle; +var int m_nQuantity; +var int m_nTotal; diff --git a/exported/TgClient/Classes/UIEndOfMatchLobby.uc b/exported/TgClient/Classes/UIEndOfMatchLobby.uc new file mode 100755 index 00000000..b082d3b1 --- /dev/null +++ b/exported/TgClient/Classes/UIEndOfMatchLobby.uc @@ -0,0 +1,315 @@ +class UIEndOfMatchLobby extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIEOM_TABS = 4; +const UIEOM_STATS = 10; +const UIEOM_VALUES = 4; +const UIEOM_PLAYERS = 5; +const UIEOM_BUTTONS = 3; +const UIEOM_REPORTS = 4; +const UIEOM_ACCOLADES = 5; +const UIEOM_MVPCOUNT = 4; +const UIEOM_GOLDBOOSTS = 2; +const UIEOM_XPBOOSTS = 3; +const QUEST_PANEL_WIDTH = 357; +const QUEST_PANEL_GAP = 20; +const UIEOM_NUMREWARDPANELS = 2; +const UIEOM_REWARDPANEL_NUMFIELDS = 7; +const UIEOM_NUMSEGMENTS_BREAKDOWNBAR = 4; +const UIEOM_REWARDPANEL_WIDGETPADDING = 0; + +enum UIEOM_REWARDFIELDQUALITY +{ + UIRFQ_NONE, // 0 + UIRFQ_BLUE, // 1 + UIRFQ_YELLOW, // 2 + UIRFQ_GREEN, // 3 + UIRFQ_GREY, // 4 + UIRFQ_MAX // 5 +}; + +enum UIEOM_REWARDBOOSTICON +{ + UIRBI_NONE, // 0 + UIRBI_PARTYOFF, // 1 + UIRBI_PARTYON, // 2 + UIRBI_ACCOUNTOFF, // 3 + UIRBI_ACCOUNTON, // 4 + UIRBI_NETCAFE1, // 5 + UIRBI_NETCAFE2, // 6 + UIRBI_NETCAFE3, // 7 + UIRBI_FWOTD1, // 8 + UIRBI_FWOTD2, // 9 + UIRBI_FWOTD3, // 10 + UIRBI_MAX // 11 +}; + +enum UIEOM_PANELINDICES +{ + UIEOM_GOLD, // 0 + UIEOM_XP, // 1 + UIEOM_MAX // 2 +}; + +enum UIEOM_GOLDREWARDINDICES +{ + UIGLD_PERFORMANCE, // 0 + UIGLD_VICTORY, // 1 + UIGLD_FWOTD, // 2 + UIGLD_ACCOLADES, // 3 + UIGLD_TEAMBONUS, // 4 + UIGLD_ACCOUNTBOOST, // 5 + UIGLD_NETCAFEBOOST, // 6 + UIGLD_MAX // 7 +}; + +enum UIEOM_XPREWARDINDICES +{ + UIXP_PERFORMANCE, // 0 + UIXP_VICTORY, // 1 + UIXP_TEAMBONUS, // 2 + UIXP_ACCOUNTBOOST, // 3 + UIXP_NETCAFEBOOST, // 4 + UIXP_MAX // 5 +}; + +struct native RewardPanelBarSegment +{ + var GFxObject SegFrame; + var GFxObject SegTF; + var GFxObject SegBar; + + structdefaultproperties + { + SegFrame=none + SegTF=none + SegBar=none + } +}; + +struct native RewardPanelField +{ + var GFxObject FieldFrame; + var GFxObject FieldTitle; + var GFxObject FieldValue; + var GFxObject FieldIcon; + var GFxObject FieldMultiplier; + + structdefaultproperties + { + FieldFrame=none + FieldTitle=none + FieldValue=none + FieldIcon=none + FieldMultiplier=none + } +}; + +struct native RewardPanel +{ + var GFxObject PanelFrame; + var GFxObject PanelTitle; + var GFxObject PanelValueFieldFrame; + var GFxObject PanelSummary; + var GFxObject PanelBreakdownBar; + var GFxObject PanelBreakdownBarTop; + var GFxObject PanelBreakdownBarBG; + var GFxObject PanelXPIcon; + var GFxObject PanelGoldIcon; + var GFxObject PanelSummaryTF; + var array PanelValueFields; + var array PanelBarSegments; + + structdefaultproperties + { + PanelFrame=none + PanelTitle=none + PanelValueFieldFrame=none + PanelSummary=none + PanelBreakdownBar=none + PanelBreakdownBarTop=none + PanelBreakdownBarBG=none + PanelXPIcon=none + PanelGoldIcon=none + PanelSummaryTF=none + PanelValueFields=none + PanelBarSegments=none + } +}; + +var int m_nLevel; +var int m_nMastery; +var int m_nAccoladeIndex; +var int m_nWIPMapQueueIndex; +var int m_nVipBoostLevel; +var int m_nHoursUntilCapReset; +var int m_nMinutesUntilCapReset; +var bool m_bAnimBack; +var bool m_bWasAccountBoosted; +var bool m_bWasPartyBoosted; +var bool m_bReachedGoldCap; +var bool m_bJustReachedGoldCap; +var bool m_bEndedGoldTick; +var bool m_bEndedXPTick; +var bool m_bShowingQuestPanel; +var float m_fMVPDuration; +var float m_fAnimation; +var float m_fXPDuration; +var float m_fGoldDuration; +var float m_fLevelDuration; +var float m_fMasteryDuration; +var float m_fShowFeedbackDelay; +var float m_fAccoladeTimer; +var float m_fShowFeedbackTimer; +var GFxObject m_mcHeader; +var GFxObject m_mcHeaderTitle; +var GFxObject m_mcHeaderSubtitle; +var GFxObject m_mcButtonPlay; +var GFxObject m_mcButtonHome; +var TgGFxGroup m_grButtons; +var GFxObject m_mcTabButtons[4]; +var GFxObject m_mcMVPs; +var GFxObject m_mcRewards; +var GFxObject m_mcMVP[4]; +var GFxObject m_mcMVPIcon[4]; +var GFxObject m_mcMVPName[4]; +var GFxObject m_mcMVPFrame[4]; +var GFxObject m_mcMVPTitle[4]; +var GFxObject m_mcMVPSubtitle[4]; +var GFxObject m_mcMVPEquipableTitle[4]; +var GFxObject m_mcAccolade[5]; +var GFxObject m_mcAccoladeIcon[5]; +var GFxObject m_mcAccoladeTitle[5]; +var GFxObject m_mcAccoladeValue[5]; +var string m_sRewardPanelNames[2]; +var RewardPanel m_GoldRewardPanel; +var RewardPanel m_XPRewardPanel; +var GFxObject m_mcGoldMaxGold; +var UIEndOfMatchLobby.UIEOM_REWARDFIELDQUALITY m_eGoldPanelFieldQualities[7]; +var UIEndOfMatchLobby.UIEOM_REWARDBOOSTICON m_eGoldPanelFieldIcons[7]; +var UIEndOfMatchLobby.UIEOM_REWARDFIELDQUALITY m_eXPPanelFieldQualities[7]; +var UIEndOfMatchLobby.UIEOM_REWARDBOOSTICON m_eXPPanelFieldIcons[7]; +var string m_sGoldPanelFieldNames[7]; +var string m_sXPPanelFieldNames[7]; +var int m_nCurrentTab; +var float m_fTabSwitchTimestamp; +var float m_fOnFirstRewardTabTimestamp; +var int m_nGoldTotal; +var int m_nXPTotal; +var GFxObject m_mcLevel; +var GFxObject m_mcLevelUp; +var GFxObject m_mcLevelTitle; +var GFxObject m_mcLevelValue; +var GFxObject m_mcLevelFrame; +var GFxObject m_mcLevelFrameRewardLegend; +var GFxObject m_mcLevelFrameRewardLegendTitle; +var GFxObject m_mcLevelFrameRewardLegendEarned; +var GFxObject m_mcLevelFrameRewardLegendUnearned; +var GFxObject m_mcLevelReward; +var GFxObject m_mcLevelRewardTF; +var GFxObject m_mcLevelProgress; +var GFxObject m_mcLevelIncrease; +var GFxObject m_mcLevelIncreaseEarnedBoost; +var GFxObject m_mcLevelIncreaseUnearnedBoost; +var GFxObject m_mcLevelSubtitle; +var GFxObject m_mcLevelNeeded; +var GFxObject m_mcMastery; +var GFxObject m_mcMasteryUp; +var GFxObject m_mcMasteryTitle; +var GFxObject m_mcMasteryValue; +var GFxObject m_mcMasteryFrame; +var GFxObject m_mcMasteryFrameRewardLegend; +var GFxObject m_mcMasteryFrameRewardLegendTitle; +var GFxObject m_mcMasteryFrameRewardLegendEarned; +var GFxObject m_mcMasteryFrameRewardLegendUnearned; +var GFxObject m_mcMasteryRewardEquippableTitle; +var GFxObject m_mcMasteryRewardEquippableTitleTF; +var GFxObject m_mcMasteryReward; +var GFxObject m_mcMasteryRewardTF; +var GFxObject m_mcMasteryRewardIcon; +var GFxObject m_mcMasteryRewardItem; +var GFxObject m_mcMasteryProgress; +var GFxObject m_mcMasteryIncrease; +var GFxObject m_mcMasteryIncreaseEarnedBoost; +var GFxObject m_mcMasteryIncreaseUnearnedBoost; +var GFxObject m_mcMasterySubtitle; +var GFxObject m_mcMasteryNeeded; +var GFxObject m_mcReport; +var GFxObject m_mcReportClose; +var GFxObject m_mcReportInput; +var GFxObject m_mcReportTitle; +var GFxObject m_mcReportButton[4]; +var GFxObject m_mcReportBlocker; +var GFxObject m_mcReportSubtitle; +var GFxObject m_mcQuestPanels; +var GFxObject m_mcClaimQuestButton; +var GFxObject m_mcPanels[10]; +var GFxObject m_mcFlash01[10]; +var GFxObject m_mcFlash02[10]; +var GFxObject m_mcFlash03[10]; +var GFxObject m_mcQuestPanelButton[10]; +var GFxObject m_mcQuestPanelButtonTitle[10]; +var GFxObject m_mcQuestPanelButtonType[10]; +var GFxObject m_mcQuestPanelButtonProgressText[10]; +var GFxObject m_mcQuestPanelButtonQuestDescription[10]; +var GFxObject m_mcQuestPanelButtonRewardLabelTF[10]; +var GFxObject m_mcQuestPanelButtonCurrency[10]; +var GFxObject m_mcQuestPanelButtonMaxGold[10]; +var GFxObject m_mcQuestPanelButtonRewardAmountTF[10]; +var GFxObject m_mcQuestPanelButtonQuestIconRendered[10]; +var GFxObject m_mcQuestPanelButtonChestIcon[10]; +var GFxObject m_mcQuestPanelButtonRewardItem[10]; +var GFxObject m_mcQuestPanelButtonRewardItemIcon[10]; +var GFxObject m_mcQuestPanelButtonRewardItemImageStack[10]; +var GFxObject m_mcQuestPanelButtonRewardItemTexture[10]; +var TgGFxGroup m_grQuestPanels; +var int m_nQuestIndices[10]; +var SoundCue m_scTick; +var SoundCue m_scTickEnd; +var AkBaseSoundObject m_akLevelUp; +var AkBaseSoundObject m_akAccolade; +var AkBaseSoundObject m_akMasteryUp; +var int m_nPlayerToReport; + +defaultproperties +{ + m_fMVPDuration=10.0000000 + m_fXPDuration=1.0000000 + m_fGoldDuration=1.0000000 + m_fLevelDuration=2.0000000 + m_fMasteryDuration=2.0000000 + m_fShowFeedbackDelay=1.0000000 + m_sRewardPanelNames[0]="Gold" + m_sRewardPanelNames[1]="XP" + m_eGoldPanelFieldIcons[2]=UIEOM_REWARDBOOSTICON.UIRBI_FWOTD1 + m_eGoldPanelFieldIcons[4]=UIEOM_REWARDBOOSTICON.UIRBI_PARTYOFF + m_eGoldPanelFieldIcons[5]=UIEOM_REWARDBOOSTICON.UIRBI_ACCOUNTOFF + m_eGoldPanelFieldIcons[6]=UIEOM_REWARDBOOSTICON.UIRBI_NETCAFE1 + m_eXPPanelFieldIcons[2]=UIEOM_REWARDBOOSTICON.UIRBI_PARTYOFF + m_eXPPanelFieldIcons[3]=UIEOM_REWARDBOOSTICON.UIRBI_ACCOUNTOFF + m_eXPPanelFieldIcons[4]=UIEOM_REWARDBOOSTICON.UIRBI_NETCAFE1 + m_sGoldPanelFieldNames[0]="m_lsRewardPerformance" + m_sGoldPanelFieldNames[1]="m_lsRewardVictory" + m_sGoldPanelFieldNames[2]="m_lsRewardFWOTD" + m_sGoldPanelFieldNames[3]="m_lsRewardAccolades" + m_sGoldPanelFieldNames[4]="m_lsRewardTeamBonus" + m_sGoldPanelFieldNames[5]="m_lsRewardAccountBoost" + m_sGoldPanelFieldNames[6]="m_lsRewardNetCafeBonus" + m_sXPPanelFieldNames[0]="m_lsRewardPerformance" + m_sXPPanelFieldNames[1]="m_lsRewardVictory" + m_sXPPanelFieldNames[2]="m_lsRewardTeamBonus" + m_sXPPanelFieldNames[3]="m_lsRewardAccountBoost" + m_sXPPanelFieldNames[4]="m_lsRewardNetCafeBonus" + m_scTick=SoundCue'AUD_UI_Notifications.A_CUE_UI_Notification_XPTick_Loop' + m_scTickEnd=SoundCue'AUD_UI_Notifications.A_CUE_UI_Notification_XPTick_End' + m_akLevelUp=AkEvent'WW_UI_Default.UI_Lobby_Alert_LevelUp_AccountMastery_Play' + m_akAccolade=AkEvent'WW_UI_Default.UI_Menu_CardCraft_Finish_Play' + m_akMasteryUp=AkEvent'WW_UI_Default.UI_Lobby_Alert_LevelUp_CharacterMastery_Play' + m_nPlayerToReport=-1 + m_UISceneClass=Class'TgClient.UIScene_UIEndOfMatchLobby' + m_OptionList[0]=9 + m_OptionList[1]=4 + m_OptionList[2]=0 + m_bBlur=true + m_Name="UIEndOfMatchLobby" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIFade.uc b/exported/TgClient/Classes/UIFade.uc new file mode 100755 index 00000000..22799e0c --- /dev/null +++ b/exported/TgClient/Classes/UIFade.uc @@ -0,0 +1,10 @@ +class UIFade extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +var GFxObject m_mcBlocker; +var GFxObject m_mcEndOfRoundText; + +defaultproperties +{ + m_Name="UIFade" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIFooter.uc b/exported/TgClient/Classes/UIFooter.uc new file mode 100755 index 00000000..32a32b39 --- /dev/null +++ b/exported/TgClient/Classes/UIFooter.uc @@ -0,0 +1,50 @@ +class UIFooter extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIFOOTER_OPTIONS = 8; +const UIFOOTER_PLAYERS = 5; +const UIFOOTER_OPTION_WIDTH = 1000; + +struct native FooterOption +{ + var int nOption; + var GFxObject pObj; + var GFxObject pKey; + var GFxObject pKeyTF; + var GFxObject pGlow; + var GFxObject pGlowTF; + var GFxObject pTitle; + var GFxObject pTitleTF; + var GFxObject pFrame; + + structdefaultproperties + { + nOption=0 + pObj=none + pKey=none + pKeyTF=none + pGlow=none + pGlowTF=none + pTitle=none + pTitleTF=none + pFrame=none + } +}; + +var GFxObject m_mcFrame; +var GFxObject m_mcBack; +var GFxObject m_mcBackTitle; +var GFxObject m_mcSocial; +var GFxObject m_mcSocialTitle; +var GFxObject m_mcSocialCTA; +var GFxObject m_mcOptions; +var GFxObject m_mcOptionsTitle; +var GFxObject m_mcFriendsOnline; +var bool m_bOptionsEnabled; +var FooterOption m_Option[8]; + +defaultproperties +{ + m_eSnappingType=UISNAPPINGTYPE.UISNAPPING_BOT + m_Name="UIFooter" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIFullscreenPopup.uc b/exported/TgClient/Classes/UIFullscreenPopup.uc new file mode 100755 index 00000000..1812285f --- /dev/null +++ b/exported/TgClient/Classes/UIFullscreenPopup.uc @@ -0,0 +1,8 @@ +class UIFullscreenPopup extends UIPopup within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_UIPopupGenericFullscreen' + m_Name="UIFullscreenPopup" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIGameMoviePlayer.uc b/exported/TgClient/Classes/UIGameMoviePlayer.uc new file mode 100755 index 00000000..37d904eb --- /dev/null +++ b/exported/TgClient/Classes/UIGameMoviePlayer.uc @@ -0,0 +1,627 @@ +class UIGameMoviePlayer extends UIMoviePlayer + native(GameUI) + config(UI) + implements(TgCallbackInterface); + +enum EUpdateModelType +{ + UMT_All, // 0 + UMT_WeaponOnly, // 1 + UMT_MAX // 2 +}; + +var private native const noexport Pointer VfTable_ITgCallbackInterface; +var int m_nReplayId; +var int m_nResizeTicks; +var int m_nChosenQueue; +var int m_nActiveControllerId; +var int m_nClearTransitionTicks; +var bool m_bGamepad; +var bool m_bGameWon; +var bool m_bVisible; +var bool m_bTimedQueue; +var bool m_bHasNoPlayer; +var bool m_bInLoginQueue; +var bool m_bLobbyPlayback; +var bool m_bShowCardTutorialNextTick; +var bool m_bConfigManagerProcessed; +var bool m_bPlayAnnouncerSample; +var bool m_bHasAttemptedAutoReplayDemoRecording; +var float m_fQueueTimer; +var float m_fFadeKillTimer; +var float m_fLoginQueueTimer; +var float m_fTransitionTimer; +var float m_fLobbyPlaybackTime; +var float m_fLobbyNextFireTime; +var float m_fVideoCompletedTimer; +var init string m_sPass; +var init string m_sUserName; +var init string m_SpecTeamNameEnemy; +var init string m_SpecTeamNameFriendly; +var GFxObject m_mcMapFrame; +var GFxObject m_mcMapFrameLarge; +var GFxObject m_mcKeyboardFocus; +var TgGameDC_Chat m_Chat; +var UIDataManager m_UIDataManager; +var native Pointer m_ConfigManager; +var UILandingPanelManager m_LandingPanelManager; +var UINotificationCenterJsonManager m_NotificationCenterJsonManager; +var TgStreamManager m_StreamManager; +var TgRewardCenterManager m_RewardCenterManager; +var TgBrowserManager m_WebBrowser; +var UIHudSpectator m_mcSpectatorHUD; +var AlienFXManager m_AlienFX; +var array m_Scenes; +var native map{VOID,VOID} m_OnlineProfiles; +var init string m_sPendingOnlineScene; +var init string m_sDelayErrorTitle; +var init string m_sDelayErrorDesc; +var TextureRenderTarget2D m_RenderTarget; +var Texture m_BrowserTexture[4]; +var init string m_Team1Name; +var init string m_Team2Name; +var AkBaseSoundObject m_akJoinQueue; +var TgManifestGroup m_AnnouncerManifestGroup; +var int m_nAnnouncerItemId; +var AkEvent m_akEquippedAnnouncerSound; +var TgManifestGroup m_VoicePackManifestGroup; +var int m_nVoicePackItemId; +var UIData_PopupGeneric m_pQuitPromptData; +var TgCallbackContainer m_CallbackContainer; + +// Export UUIGameMoviePlayer::execOnDemoReady(FFrame&, void* const) +native function OnDemoReady(); + +// Export UUIGameMoviePlayer::execCancelPlayback(FFrame&, void* const) +native exec function CancelPlayback(); + +// Export UUIGameMoviePlayer::execEndLobbyPlayback(FFrame&, void* const) +native exec function EndLobbyPlayback(); + +// Export UUIGameMoviePlayer::execToggleSkillScreen(FFrame&, void* const) +native exec function ToggleSkillScreen(optional int nBotId = 0); + +// Export UUIGameMoviePlayer::execReplay(FFrame&, void* const) +native exec function Replay(int nInstanceId, optional string sSpectatePassword); + +// Export UUIGameMoviePlayer::execWatchReplay(FFrame&, void* const) +native exec function WatchReplay(string sInstanceId, optional string sSpectatePassword); + +// Export UUIGameMoviePlayer::execViewStatsOnline(FFrame&, void* const) +native exec function ViewStatsOnline(string sInstanceId); + +// Export UUIGameMoviePlayer::execusc_toggle_player_mute(FFrame&, void* const) +native exec function usc_toggle_player_mute(string sPlayerName); + +// Export UUIGameMoviePlayer::execusc_vgs_command(FFrame&, void* const) +native exec function usc_vgs_command(int nId, bool bSubMenu); + +// Export UUIGameMoviePlayer::execusc_resend_private_messages(FFrame&, void* const) +native exec function usc_resend_private_messages(); + +// Export UUIGameMoviePlayer::execusc_chat_close_tab(FFrame&, void* const) +native exec function usc_chat_close_tab(int nChannel, string Sender); + +// Export UUIGameMoviePlayer::execusc_enable_browser_input(FFrame&, void* const) +native exec function usc_enable_browser_input(bool bEnable); + +// Export UUIGameMoviePlayer::execusc_resize_browser(FFrame&, void* const) +native exec function bool usc_resize_browser(int surfaceId, float X, float Y, float Width, float Height, float widthReal, float heightReal); + +// Export UUIGameMoviePlayer::execSetRenderTargetEnabled(FFrame&, void* const) +native exec function bool SetRenderTargetEnabled(bool bEnabled, int surfaceId); + +// Export UUIGameMoviePlayer::execPromptToQuit(FFrame&, void* const) +native function PromptToQuit(); + +// Export UUIGameMoviePlayer::execQuitGame(FFrame&, void* const) +native function QuitGame(); + +// Export UUIGameMoviePlayer::execAttemptAutoLogin(FFrame&, void* const) +native function AttemptAutoLogin(); + +// Export UUIGameMoviePlayer::execUpdateViewportForSafeAreas(FFrame&, void* const) +native function UpdateViewportForSafeAreas(); + +// Export UUIGameMoviePlayer::execAttemptAutoReplayDemoRecording(FFrame&, void* const) +native function AttemptAutoReplayDemoRecording(); + +// Export UUIGameMoviePlayer::execOpenChatTab(FFrame&, void* const) +native function OpenChatTab(int nChannel, optional string sName, optional bool bOpenWindow); + +// Export UUIGameMoviePlayer::execCloseChatTab(FFrame&, void* const) +native function CloseChatTab(int nChannel, optional string sSender); + +// Export UUIGameMoviePlayer::execAddInitialChatMessages(FFrame&, void* const) +native function AddInitialChatMessages(); + +// Export UUIGameMoviePlayer::execCheckControllerDisconnected(FFrame&, void* const) +native function CheckControllerDisconnected(); + +// Export UUIGameMoviePlayer::execUpdateGamepadIcons(FFrame&, void* const) +native function UpdateGamepadIcons(); + +// Export UUIGameMoviePlayer::execGetPortalType(FFrame&, void* const) +native exec function int GetPortalType(); + +// Export UUIGameMoviePlayer::execBeginLogin(FFrame&, void* const) +native exec function BeginLogin(optional string User, optional string pass, optional string PlayerName); + +// Export UUIGameMoviePlayer::execSetLoginReady(FFrame&, void* const) +native exec function SetLoginReady(); + +// Export UUIGameMoviePlayer::execGetHUDTeamName(FFrame&, void* const) +native exec function string GetHUDTeamName(bool bEnemy); + +// Export UUIGameMoviePlayer::execSetSpecTeamName(FFrame&, void* const) +native exec function SetSpecTeamName(bool bEnemy, optional string TeamName); + +// Export UUIGameMoviePlayer::execShowCardTutorial(FFrame&, void* const) +native exec function ShowCardTutorial(optional bool bForce = false, optional bool bReset = false); + +// Export UUIGameMoviePlayer::execOnMarshalEvent(FFrame&, void* const) +native function OnMarshalEvent(Pointer pMarEvent); + +// Export UUIGameMoviePlayer::execOnAnnouncerLoaded(FFrame&, void* const) +native function OnAnnouncerLoaded(); + +// Export UUIGameMoviePlayer::execOnVoicePackLoaded(FFrame&, void* const) +native function OnVoicePackLoaded(); + +// Export UUIGameMoviePlayer::execInitAnnouncer(FFrame&, void* const) +native function InitAnnouncer(); + +// Export UUIGameMoviePlayer::execPostInit(FFrame&, void* const) +native function PostInit(); + +// Export UUIGameMoviePlayer::execForceDirty(FFrame&, void* const) +native exec function ForceDirty(); + +// Export UUIGameMoviePlayer::execNativeTick(FFrame&, void* const) +native function NativeTick(float DeltaTime); + +// Export UUIGameMoviePlayer::execUIFade(FFrame&, void* const) +native function UIFade(bool bFade, optional float fTime = 0.2500000, optional float fDelay = 0.0000000, optional float fFailSafeTime); + +// Export UUIGameMoviePlayer::execUIFadeEndOfRound(FFrame&, void* const) +native function UIFadeEndOfRound(bool bFade, optional float fTime = 0.2500000, optional float fDelay = 0.0000000, optional float fFailSafeTime); + +// Export UUIGameMoviePlayer::execGetGamepadValueForKeyBind(FFrame&, void* const) +native function int GetGamepadValueForKeyBind(string KeyBind); + +// Export UUIGameMoviePlayer::execGetPlayerDisplayName(FFrame&, void* const) +native function string GetPlayerDisplayName(string PlayerName, string OnlineID); + +// Export UUIGameMoviePlayer::execHasPlayerDisplayName(FFrame&, void* const) +native function bool HasPlayerDisplayName(string OnlineID); + +// Export UUIGameMoviePlayer::execOnReadOnlinePlayerDataComplete(FFrame&, void* const) +native function OnReadOnlinePlayerDataComplete(bool bWasSuccessful, array PlayerIDs, array OnlineProfiles); + +// Export UUIGameMoviePlayer::execNativeWidgetUnloaded(FFrame&, void* const) +native function bool NativeWidgetUnloaded(name WidgetName, name WidgetPath, GFxObject Widget); + +// Export UUIGameMoviePlayer::execNativeWidgetInitialized(FFrame&, void* const) +native function bool NativeWidgetInitialized(name WidgetName, name WidgetPath, GFxObject Widget); + +// Export UUIGameMoviePlayer::execShowSubtitle(FFrame&, void* const) +native function ShowSubtitle(string sValue, optional float fTime = 0.0000000); + +// Export UUIGameMoviePlayer::execSwitchSubtitleText(FFrame&, void* const) +native function SwitchSubtitleText(string sValue); + +// Export UUIGameMoviePlayer::execHideSubtitle(FFrame&, void* const) +native function HideSubtitle(); + +// Export UUIGameMoviePlayer::execGetGameData(FFrame&, void* const) +native function TgDataGroup_Game GetGameData(); + +// Export UUIGameMoviePlayer::execGetDataHandler(FFrame&, void* const) +native function TgGameDataHandler GetDataHandler(); + +// Export UUIGameMoviePlayer::execIsItemOwned(FFrame&, void* const) +native function bool IsItemOwned(int ItemId); + +// Export UUIGameMoviePlayer::execOnSuccessfulUserAccountInfoRetrieved(FFrame&, void* const) +native function OnSuccessfulUserAccountInfoRetrieved(UserAccountInfo AccountInfo); + +final event LoadScene(string sName, string sPath, int nDepth) +{ + ActionScriptVoid("LoadScene"); + //return; +} + +final event UnloadScene(string sName) +{ + ActionScriptVoid("UnloadScene"); + //return; +} + +// Export UUIGameMoviePlayer::execShowPartyRequiresPremiumAccountWarning(FFrame&, void* const) +native function ShowPartyRequiresPremiumAccountWarning(); + +// Export UUIGameMoviePlayer::execShowNoFriendsForProfileViewWarning(FFrame&, void* const) +native function ShowNoFriendsForProfileViewWarning(); + +// Export UUIGameMoviePlayer::execOnAccountPickerCancelled(FFrame&, void* const) +native function OnAccountPickerCancelled(); + +// Export UUIGameMoviePlayer::execShowErrorMessage(FFrame&, void* const) +native function bool ShowErrorMessage(string sTitle, string sError); + +// Export UUIGameMoviePlayer::execPlayerLoginError(FFrame&, void* const) +native function PlayerLoginError(int nError, string sMessage); + +event Init(optional LocalPlayer LocPlay) +{ + super.Init(LocPlay); + InitAnnouncer(); + // End:0x64 + if(m_AlienFX == none) + { + m_AlienFX = new Class'TgGame.AlienFXManager'; + m_AlienFX.Initialize(); + } + //return; +} + +function InitOSSRef() +{ + super.InitOSSRef(); + PlayerInterface.AddAccountPickerCompleteDelegate(OnAccountPickerCompleteForLogin); + PlayerInterface.AddLoginCancelledDelegate(OnAccountPickerCancelledWrapper); + //return; +} + +event OnClose() +{ + PlayerInterface.RemoveAccountPickerCompleteDelegate(OnAccountPickerCompleteForLogin); + PlayerInterface.ClearLoginCancelledDelegate(OnAccountPickerCancelledWrapper); + //return; +} + +function OnAccountPickerCancelledWrapper() +{ + OnAccountPickerCancelled(); + //return; +} + +event ShowKeyboardUI(GFxObject FocusedTextField, string TitleText, string DescriptionText, optional bool bIsPassword = false, optional bool bShouldValidate = true, optional string DefaultText, optional int MaxResultLength = 256) +{ + m_mcKeyboardFocus = FocusedTextField; + PlayerInterface.AddKeyboardInputDoneDelegate(OnKeyboardInputComplete); + PlayerInterface.ShowKeyboardUI(0, TitleText, DescriptionText, bIsPassword, bShouldValidate, DefaultText, MaxResultLength); + //return; +} + +event bool CheckControllerConnected() +{ + return OnlineSub.SystemInterface.IsControllerConnected(GetLP().ControllerId); + //return ReturnValue; +} + +function OnKeyboardInputComplete(bool bWasSuccessful) +{ + local byte bCancelled; + local string OutStr; + + OutStr = PlayerInterface.GetKeyboardInputResults(bCancelled); + PlayerInterface.ClearKeyboardInputDoneDelegate(OnKeyboardInputComplete); + // End:0xB8 + if((int(bCancelled) == int(0)) && m_mcKeyboardFocus != none) + { + m_mcKeyboardFocus.SetString("text", OutStr); + } + m_mcKeyboardFocus = none; + //return; +} + +event bool WidgetInitialized(name WidgetName, name WidgetPath, GFxObject Widget) +{ + // End:0x38 + if(WidgetName == 'SpectatorHUD_mc') + { + m_mcSpectatorHUD = UIHudSpectator(Widget); + return true; + } + else + { + // End:0x67 + if(WidgetName == 'MapFrame_mc') + { + m_mcMapFrame = Widget; + return true; + } + else + { + // End:0x96 + if(WidgetName == 'MissionMapFrame_mc') + { + m_mcMapFrameLarge = Widget; + return true; + } + else + { + // End:0xC3 + if(WidgetName == 'GAPeach') + { + AttemptAutoLogin(); + AttemptAutoReplayDemoRecording(); + return true; + } + } + } + } + // End:0xED + if(NativeWidgetInitialized(WidgetName, WidgetPath, Widget)) + { + return true; + } + return super(GFxMoviePlayer).WidgetInitialized(WidgetName, WidgetPath, Widget); + //return ReturnValue; +} + +event bool WidgetUnloaded(name WidgetName, name WidgetPath, GFxObject Widget) +{ + // End:0x27 + if(WidgetName == 'SpectatorHUD_mc') + { + m_mcSpectatorHUD = none; + return true; + } + else + { + // End:0x4B + if(WidgetName == 'MapFrame_mc') + { + m_mcMapFrame = none; + return true; + } + } + // End:0x75 + if(NativeWidgetUnloaded(WidgetName, WidgetPath, Widget)) + { + return true; + } + return super(GFxMoviePlayer).WidgetUnloaded(WidgetName, WidgetPath, Widget); + //return ReturnValue; +} + +exec function ToggleAlienFX() +{ + // End:0x27 + if(m_AlienFX == none) + { + m_AlienFX = new Class'TgGame.AlienFXManager'; + } + // End:0x6B + if(m_AlienFX.m_bLoaded) + { + m_AlienFX.Close(); + } + else + { + m_AlienFX.Initialize(); + } + //return; +} + +event bool ShowConsoleLoginUI(int ControllerId, optional bool bForceLoginAfter) +{ + PlayerLoginError(0, ""); + return PlayerInterface.ShowLoginUI(byte(ControllerId), bForceLoginAfter); + //return ReturnValue; +} + +event RegisterLocalTalker(byte LocalUserNum, optional byte ChannelIndex) +{ + VoiceInterface.RegisterLocalTalker(LocalUserNum, ChannelIndex); + //return; +} + +event UnregisterLocalTalker(byte LocalUserNum, optional byte ChannelIndex) +{ + VoiceInterface.UnregisterLocalTalker(LocalUserNum, ChannelIndex); + //return; +} + +event MutePlayer(byte LocalUserNum, UniqueNetId ConsoleId) +{ + VoiceInterface.MuteRemoteTalker(LocalUserNum, ConsoleId, false); + //return; +} + +event UnmutePlayer(byte LocalUserNum, UniqueNetId ConsoleId) +{ + VoiceInterface.UnmuteRemoteTalker(LocalUserNum, ConsoleId, false); + //return; +} + +event bool IsPlayerMuted(UniqueNetId ConsoleId) +{ + return VoiceInterface.IsTalkerMuted(ConsoleId); + //return ReturnValue; +} + +event ShowGamerCardByUserName(string UserName) +{ + local string LocalPlayerUserName; + + PlayerInterfaceEx.AddShowGamerCardCompleteDelegate(updatePlayerMute); + // End:0xDA + if(Len(UserName) == 0) + { + LocalPlayerUserName = PlayerInterface.GetPlayerNickname(byte(GetLP().ControllerId)); + PlayerInterfaceEx.ShowGamerCardUIByUsername(byte(GetLP().ControllerId), LocalPlayerUserName); + } + else + { + PlayerInterfaceEx.ShowGamerCardUIByUsername(byte(GetLP().ControllerId), UserName); + } + //return; +} + +event ShowGamercard(UniqueNetId PlayerID) +{ + PlayerInterfaceEx.AddShowGamerCardCompleteDelegate(updatePlayerMute); + PlayerInterfaceEx.ShowGamerCardUI(byte(GetLP().ControllerId), PlayerID); + //return; +} + +function updatePlayerMute(bool bWasSuccessful) +{ + //return; +} + +event CacheLoggedInGamepad() +{ + PlayerInterface.CacheLoggedInGamepad(); + //return; +} + +exec event usc_ShowContentMarketPlaceUI(int ParentProductType, int RequestedProductTypes) +{ + PlayerInterfaceEx.ShowContentMarketplaceUI(byte(GetLP().ControllerId), ParentProductType, RequestedProductTypes); + //return; +} + +exec event usc_ShowContentMarketPlaceUIForProduct(int ParentProductType, int RequestedProductTypes, string ProductID) +{ + PlayerInterfaceEx.ShowContentMarketplaceUI(byte(GetLP().ControllerId), ParentProductType, RequestedProductTypes, ProductID); + //return; +} + +exec event usc_ShowGameDetailsUI() +{ + PlayerInterfaceEx.ShowProductDetailsUI(byte(GetLP().ControllerId)); + //return; +} + +exec event usc_ShowProductDetailsUI(string ProductID) +{ + PlayerInterfaceEx.ShowProductDetailsUI(byte(GetLP().ControllerId), ProductID); + //return; +} + +exec event ShowContentPurchaseUI(string SingedOffer) +{ + PlayerInterfaceEx.ShowContentPurchaseUI(byte(GetLP().ControllerId), SingedOffer); + //return; +} + +exec event GetAccountInfo() +{ + PlayerInterface.AddGetUserAccountInfoDelegate(OnUserAccountInfoRetrieved); + PlayerInterface.GetUserAccountInfo(byte(GetLP().ControllerId)); + //return; +} + +function OnUserAccountInfoRetrieved(bool bSuccessful, UserAccountInfo AccountInfo) +{ + OnlineSub.PlayerInterface.ClearGetUserAccountInfoDelegate(OnUserAccountInfoRetrieved); + // End:0x66 + if(bSuccessful) + { + OnSuccessfulUserAccountInfoRetrieved(AccountInfo); + } + //return; +} + +event ReadOnlinePlayerData(array PlayerIDs) +{ + local OnlinePlayerInterfaceEx OPI; + + OPI = GetPlayerOwner().OnlineSub.PlayerInterfaceEx; + // End:0xB8 + if(NotEqual_InterfaceInterface(OPI, OnlinePlayerInterfaceEx(none))) + { + OPI.AddReadOnlineProfilesCompleteDelegate(OnReadOnlinePlayerData); + OPI.ReadOnlineProfilesForPlayers(PlayerIDs); + } + //return; +} + +function OnReadOnlinePlayerData(bool bWasSuccessful, array PlayerIDs, array OnlineProfiles) +{ + local OnlinePlayerInterfaceEx OPI; + + OPI = GetPlayerOwner().OnlineSub.PlayerInterfaceEx; + // End:0x8F + if(NotEqual_InterfaceInterface(OPI, OnlinePlayerInterfaceEx(none))) + { + OPI.ClearReadOnlineProfilesCompleteDelegate(OnReadOnlinePlayerData); + } + OnReadOnlinePlayerDataComplete(bWasSuccessful, PlayerIDs, OnlineProfiles); + //return; +} + +function OnAccountPickerCompleteForLogin(bool bForceLogin) +{ + // End:0x46 + if(bForceLogin) + { + BeginLogin(string(GetLP().ControllerId), "Console", ""); + } + else + { + SetLoginReady(); + } + //return; +} + +event NativeOpenURL(string URL) +{ + PlayerInterfaceEx.ShowVideo(URL); + //return; +} + +function OnPermissionForOnlineScene(byte LocalUserNum, OnlineSubsystem.EFeaturePrivilege Privilege, OnlineSubsystem.EFeaturePrivilegeLevel PrivilegeLevel, bool bDiffersFromHint) +{ + PlayerInterface.ClearPrivilegeLevelCheckedDelegate(OnPermissionForOnlineScene); + // End:0xEA + if((int(Privilege) == int(0)) && int(PrivilegeLevel) == int(2)) + { + GetHUD().PushScene(m_sPendingOnlineScene, true); + m_sPendingOnlineScene = ""; + // End:0xE7 + if((m_sDelayErrorTitle != "") || m_sDelayErrorDesc != "") + { + ShowErrorMessage(m_sDelayErrorTitle, m_sDelayErrorDesc); + m_sDelayErrorTitle = ""; + m_sDelayErrorDesc = ""; + } + } + else + { + ShowPartyRequiresPremiumAccountWarning(); + } + //return; +} + +event CheckPermissionForOnlineScene(string sScene, byte ControlledId, OnlineSubsystem.EFeaturePrivilegeLevel Hint, optional bool bAttemptToResolve = false) +{ + m_sPendingOnlineScene = sScene; + PlayerInterface.AddPrivilegeLevelCheckedDelegate(OnPermissionForOnlineScene); + PlayerInterface.CanPlayOnline(ControlledId, Hint, bAttemptToResolve); + //return; +} + +defaultproperties +{ + m_nReplayId=-1 + m_nChosenQueue=-1 + m_bVisible=true + m_akJoinQueue=AkEvent'WW_UI_Default.UI_Menu_EnterQueue_Play' + // Reference: TgManifestGroup'TgClient.Default__UIGameMoviePlayer.TgManifestGroup0' + begin object name="TgManifestGroup0" class=TgGame.TgManifestGroup + end object + m_AnnouncerManifestGroup=TgManifestGroup0 + // Reference: TgManifestGroup'TgClient.Default__UIGameMoviePlayer.TgManifestGroup1' + begin object name="TgManifestGroup1" class=TgGame.TgManifestGroup + end object + m_VoicePackManifestGroup=TgManifestGroup1 + m_DataHandlerClass=Class'TgClient.TgGameDataHandler' + MovieInfo=SwfMovie'MenuManager.MenuManager' + bCloseOnLevelChange=false + WidgetBindings=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHeader.uc b/exported/TgClient/Classes/UIHeader.uc new file mode 100755 index 00000000..047f7d52 --- /dev/null +++ b/exported/TgClient/Classes/UIHeader.uc @@ -0,0 +1,8 @@ +class UIHeader extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_eSnappingType=UISNAPPINGTYPE.UISNAPPING_TOP + m_Name="UIHeader" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHome.uc b/exported/TgClient/Classes/UIHome.uc new file mode 100755 index 00000000..48e8899a --- /dev/null +++ b/exported/TgClient/Classes/UIHome.uc @@ -0,0 +1,58 @@ +class UIHome extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHOME_JSONPANELS = 4; +const UIHOME_CAROUSEL_ASPECT_TOLERANCE = 0.1; +const QUEST_PROGRESS_START = 45; +const QUEST_PROGRESS_END = 316; + +struct native UINavButton +{ + var GFxObject pObj; + var GFxObject pHighlight; + var GFxObject pCTA; + var GFxObject pIcon; + var GFxObject pTitle; + + structdefaultproperties + { + pObj=none + pHighlight=none + pCTA=none + pIcon=none + pTitle=none + } +}; + +var bool m_bQueued; +var bool m_bDeserter; +var bool m_bLoadingImages; +var float m_fQueuedTime; +var GFxObject m_mcPanels; +var UIInteractable_NavPanel_Play m_PlayPanel; +var UIInteractable_NavPanel_Queued m_QueuedPanel; +var UIInteractable_NavPanel m_StorePanel; +var UIInteractable_NavPanel m_ChampionsPanel; +var UIInteractable_NavPanel m_ChestsPanel; +var UIInteractable_NavPanel m_ActivityCenterPanel; +var UIInteractable_NavPanel m_ProfilePanel; +var UIInteractable_NavPanel_Quests m_QuestsPanel; +var UIInteractable_NavPanel_QuestsLocked m_QuestsLockedPanel; +var UIInteractable_JsonPanel_Carousel m_CarouselPanel; +var UIInteractable_JsonPanel m_JsonPanel[4]; +var TgGFxGroup m_grHome; +var init array m_FeatureData; +var native map{VOID,VOID} m_FeatureMap; + +defaultproperties +{ + m_bLoadingImages=true + m_OptionList[0]=14 + m_OptionList[1]=4 + m_OptionList[2]=0 + m_OptionList[3]=0 + m_nBackground=1 + m_bBlur=true + m_bAlwaysTick=true + m_Name="UIHome" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHud.uc b/exported/TgClient/Classes/UIHud.uc new file mode 100755 index 00000000..2105ff2d --- /dev/null +++ b/exported/TgClient/Classes/UIHud.uc @@ -0,0 +1,26 @@ +class UIHud extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHUD_SCENE_PARTY = 0; +const UIHUD_SCENE_CHAT = 1; +const UIHUD_SCENE_PLAYER = 2; +const UIHUD_SCENE_CARDS = 3; +const UIHUD_SCENE_LEVEL = 4; +const UIHUD_SCENE_KILLINFO = 5; +const UIHUD_SCENE_NOTIFY = 6; +const UIHUD_SCENE_BUFFS = 7; +const UIHUD_SCENE_COMBATLOG = 8; +const UIHUD_SCENE_SKILLS = 9; +const UIHUD_SCENE_COUNT = 10; + +var TgGfxScene m_mcSubscenes[10]; +var GFxObject m_mcPaused; + +defaultproperties +{ + m_bVisibleOnLoad=true + m_bResize=false + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHud" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudBinoculars.uc b/exported/TgClient/Classes/UIHudBinoculars.uc new file mode 100755 index 00000000..e9345580 --- /dev/null +++ b/exported/TgClient/Classes/UIHudBinoculars.uc @@ -0,0 +1,62 @@ +class UIHudBinoculars extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHUDBINOCULARS_BARRAGES = 3; +const UIHUDBINOCULARS_RETICULEARROWS = 4; + +struct native UIBinocArrowPositions +{ + var Vector2D vInnerArrowStart; + var Vector2D vInnerArrowEnd; + var Vector2D vOuterArrowStart; + var Vector2D vOuterArrowEnd; + + structdefaultproperties + { + vInnerArrowStart=(X=0.0000000,Y=0.0000000) + vInnerArrowEnd=(X=0.0000000,Y=0.0000000) + vOuterArrowStart=(X=0.0000000,Y=0.0000000) + vOuterArrowEnd=(X=0.0000000,Y=0.0000000) + } +}; + +var bool m_bWasVisible; +var bool m_bHadTarget; +var BinocularSettings m_PrevBinocsSettings; +var Vector2D m_vInnerGuideStartPos; +var Vector2D m_vOuterGuideStartPos; +var Vector2D m_vGuideOffset; +var GFxObject m_mcHeadingGraphic; +var GFxObject m_mcHeading; +var GFxObject m_mcRange; +var GFxObject m_mcTargets; +var GFxObject m_mcInnerGuides; +var GFxObject m_mcOuterGuides; +var GFxObject m_mcGuideFrame; +var GFxObject m_mcStatus; +var GFxObject m_mcStatusTF; +var GFxObject m_mcBarrageFrame[3]; +var GFxObject m_mcBarrageMeter[3]; +var GFxObject m_mcBarrageTime[3]; +var GFxObject m_mcBarrageTimeTF[3]; +var GFxObject m_mcReticule; +var GFxObject m_mcReticuleInnerArrows[4]; +var GFxObject m_mcReticuleOuterArrows[4]; +var UIBinocArrowPositions m_ReticuleArrowPositions[4]; +var GFxObject m_mcRefire; +var GFxObject m_mcRefireMask; +var GFxObject m_mcDurationMeter; +var GFxObject m_mcDurationMeterCap; + +defaultproperties +{ + m_ReticuleArrowPositions[0]=(vInnerArrowStart=(X=4.0000000,Y=4.0000000),vInnerArrowEnd=(X=40.0000000,Y=40.0000000),vOuterArrowStart=(X=0.0000000,Y=0.0000000),vOuterArrowEnd=(X=43.0000000,Y=43.0000000)) + m_ReticuleArrowPositions[1]=(vInnerArrowStart=(X=209.0000000,Y=4.0000000),vInnerArrowEnd=(X=173.0000000,Y=40.0000000),vOuterArrowStart=(X=213.0000000,Y=0.0000000),vOuterArrowEnd=(X=170.0000000,Y=43.0000000)) + m_ReticuleArrowPositions[2]=(vInnerArrowStart=(X=209.0000000,Y=209.0000000),vInnerArrowEnd=(X=173.0000000,Y=173.0000000),vOuterArrowStart=(X=213.0000000,Y=213.0000000),vOuterArrowEnd=(X=170.0000000,Y=170.0000000)) + m_ReticuleArrowPositions[3]=(vInnerArrowStart=(X=4.0000000,Y=209.0000000),vInnerArrowEnd=(X=40.0000000,Y=173.0000000),vOuterArrowStart=(X=0.0000000,Y=213.0000000),vOuterArrowEnd=(X=43.0000000,Y=170.0000000)) + m_eScalingType=UISCALINGTYPE.UISCALING_FITTALL + m_eSnappingType=UISNAPPINGTYPE.UISNAPPING_TOP + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudBinoculars" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudBurns.uc b/exported/TgClient/Classes/UIHudBurns.uc new file mode 100755 index 00000000..447ac862 --- /dev/null +++ b/exported/TgClient/Classes/UIHudBurns.uc @@ -0,0 +1,104 @@ +class UIHudBurns extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHUDBURNS_ARROWS = 2; +const UIHUDBURNS_GROUPS = 4; +const UIHUDBURNS_OPTIONS = 5; +const UIHUDBURNS_UPGRADES = 3; +const UIHUDBURNS_DEFT_HANDS_ITEM_ID = 13235; + +struct native UIITEMRANK +{ + var int nId; + var int nRank; + + structdefaultproperties + { + nId=0 + nRank=0 + } +}; + +struct native UIITEMDATA +{ + var GFxObject Obj; + var GFxObject Icon; + var GFxObject frame; + var GFxObject Title; + var GFxObject Price; + var GFxObject Button; + var GFxObject Selected; + var GFxObject SubTitle; + + structdefaultproperties + { + Obj=none + Icon=none + frame=none + Title=none + Price=none + Button=none + Selected=none + SubTitle=none + } +}; + +struct native UIITEMGROUP +{ + var GFxObject Obj; + var GFxObject Title; + var GFxObject Items; + var GFxObject frame; + var UIITEMDATA Item[5]; + + structdefaultproperties + { + Obj=none + Title=none + Items=none + frame=none + Item[0]=(Obj=none,Icon=none,frame=none,Title=none,Price=none,Button=none,Selected=none,SubTitle=none) + Item[1]=(Obj=none,Icon=none,frame=none,Title=none,Price=none,Button=none,Selected=none,SubTitle=none) + Item[2]=(Obj=none,Icon=none,frame=none,Title=none,Price=none,Button=none,Selected=none,SubTitle=none) + Item[3]=(Obj=none,Icon=none,frame=none,Title=none,Price=none,Button=none,Selected=none,SubTitle=none) + Item[4]=(Obj=none,Icon=none,frame=none,Title=none,Price=none,Button=none,Selected=none,SubTitle=none) + } +}; + +var int m_nCredits; +var int m_nActiveItem; +var bool m_bOpenPostTimelapse; +var UIITEMRANK m_Items[4]; +var UIITEMRANK m_Temps[4]; +var GFxObject m_mcBack; +var GFxObject m_mcTitle; +var GFxObject m_mcSubtitle; +var GFxObject m_mcCredits; +var GFxObject m_mcInfo; +var GFxObject m_mcInfoFrame; +var GFxObject m_mcInfoTitle; +var GFxObject m_mcInfoSubtitle; +var GFxObject m_mcAutoBuyDialogue; +var GFxObject m_mcAutoBuyTitle; +var GFxObject m_mcAutoBuyDesc; +var GFxObject m_mcAutoBuyPrompt; +var UIITEMDATA m_mcInfoUpgrade[3]; +var GFxObject m_mcInfoUpgradeArrow[2]; +var UIInteractable_Button m_AutoBuyOffButton; +var UIITEMGROUP m_Group[4]; +var AkBaseSoundObject m_scPurchase; +var TgGFxGroup m_grItem; + +defaultproperties +{ + m_scPurchase=AkEvent'WW_UI_Default.UI_InGame_Card_Select_Play' + m_OptionList[0]=137 + m_OptionList[1]=23 + m_OptionList[2]=0 + m_ePromptAlignment=UIALIGNINGTYPE.UIALIGNING_LEFT + m_fPromptOffsetX=80.0000000 + m_bBlur=true + m_bAlwaysTick=true + m_Name="UIHudBurns" + m_scShown=AkEvent'WW_UI_Default.UI_InGame_Card_Burn_Play' +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudCards.uc b/exported/TgClient/Classes/UIHudCards.uc new file mode 100755 index 00000000..d8e57b62 --- /dev/null +++ b/exported/TgClient/Classes/UIHudCards.uc @@ -0,0 +1,65 @@ +class UIHudCards extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHUDCARD_SLOTS = 4; +const UIHUDCARD_LOADOUTSIZE = 5; + +struct native UICardDisplayEntry +{ + var GFxObject Obj; + var GFxObject Card; + var GFxObject Icon; + var GFxObject PowerLevel; + var int DeviceID; + + structdefaultproperties + { + Obj=none + Card=none + Icon=none + PowerLevel=none + DeviceID=0 + } +}; + +struct native UICardDisplayGroup +{ + var UICardDisplayEntry Items[4]; + var UICardDisplayEntry Cards[5]; + var int LastCardsPawnId; + + structdefaultproperties + { + Items[0]=(Obj=none,Card=none,Icon=none,PowerLevel=none,DeviceID=0) + Items[1]=(Obj=none,Card=none,Icon=none,PowerLevel=none,DeviceID=0) + Items[2]=(Obj=none,Card=none,Icon=none,PowerLevel=none,DeviceID=0) + Items[3]=(Obj=none,Card=none,Icon=none,PowerLevel=none,DeviceID=0) + Cards[0]=(Obj=none,Card=none,Icon=none,PowerLevel=none,DeviceID=0) + Cards[1]=(Obj=none,Card=none,Icon=none,PowerLevel=none,DeviceID=0) + Cards[2]=(Obj=none,Card=none,Icon=none,PowerLevel=none,DeviceID=0) + Cards[3]=(Obj=none,Card=none,Icon=none,PowerLevel=none,DeviceID=0) + Cards[4]=(Obj=none,Card=none,Icon=none,PowerLevel=none,DeviceID=0) + LastCardsPawnId=0 + } +}; + +var int m_nCredits; +var int m_nLoadout; +var bool m_bSpectateEnemy; +var float m_fCachedRotationY; +var GFxObject m_grScene; +var GFxObject m_mcCredits; +var GFxObject m_mcLoadout; +var GFxObject m_mcHighlight; +var UICardDisplayGroup m_CardDisplayGroup; + +defaultproperties +{ + m_nCredits=-1 + m_nLoadout=-1 + m_fCachedRotationY=-1.0000000 + m_eSnappingType=UISNAPPINGTYPE.UISNAPPING_BOT + m_bVisibleOnLoad=true + m_bCanShake=true + m_Name="UIHudCards" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudCenter.uc b/exported/TgClient/Classes/UIHudCenter.uc new file mode 100755 index 00000000..b03dd90a --- /dev/null +++ b/exported/TgClient/Classes/UIHudCenter.uc @@ -0,0 +1,347 @@ +class UIHudCenter extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIAMMOCOUNT_ICE = 10; +const UIAMMOCOUNT_CELL = 1; +const UIAMMOCOUNT_DART = 25; +const UIAMMOCOUNT_SHELL = 8; +const UIAMMOCOUNT_ROCKET = 6; +const UIAMMOCOUNT_ARROW = 20; +const UIAMMOCOUNT_LARGE = 90; +const UIAMMOCOUNT_SMALL = 20; +const UIAMMOCOUNT_FLAME = 1; +const UIAMMOCOUNT_POTION = 10; +const UIAMMOCOUNT_BULLETS = 36; +const UIRETICLES_PROJECTILES = 10; +const UIHITMARKER_TICKS = 4; +const UIDAMAGEINSTIGATOR_MAX = 5; +const UIRETICLES_DAMAGE_LIGHT = 20; +const UIRETICLES_DAMAGE_MEDIUM = 15; +const UIRETICLES_DAMAGE_HEAVY = 10; +const UIHITMARKER_ERRORTOLERANCE = 48.0; + +enum UIDamageSeverity +{ + UIDAMAGE_LIGHT, // 0 + UIDAMAGE_MEDIUM, // 1 + UIDAMAGE_HEAVY, // 2 + UIDAMAGE_MAX // 3 +}; + +enum UIAmmoType +{ + UIAMMO_BULLET, // 0 + UIAMMO_ICE, // 1 + UIAMMO_CELL, // 2 + UIAMMO_DART, // 3 + UIAMMO_ARROW, // 4 + UIAMMO_LARGE, // 5 + UIAMMO_SMALL, // 6 + UIAMMO_FLAME, // 7 + UIAMMO_POTION, // 8 + UIAMMO_SHELL, // 9 + UIAMMO_ROCKET, // 10 + UIAMMO_MAX // 11 +}; + +enum ECombatInfoType +{ + ECIT_All, // 0 + ECIT_Damage, // 1 + ECIT_Status, // 2 + ECIT_MAX // 3 +}; + +struct native MessageClip +{ + var int nIcon; + var int nType; + var int nValue; + var float fTimer; + var float fDuration; + var GFxObject pMovie; + var GFxObject pTimer; + var GFxObject pTimerBar; + + structdefaultproperties + { + nIcon=0 + nType=0 + nValue=0 + fTimer=0.0000000 + fDuration=0.0000000 + pMovie=none + pTimer=none + pTimerBar=none + } +}; + +struct native HudMarker +{ + var float fValue; + var float fTime; + var float fAngle; + var bool bActive; + var Vector vHitLoc; + var Vector vPawnLoc; + var GFxObject pObj; + var GFxObject pTop; + var GFxObject pBot; + + structdefaultproperties + { + fValue=0.0000000 + fTime=0.0000000 + fAngle=0.0000000 + bActive=false + vHitLoc=(X=0.0000000,Y=0.0000000,Z=0.0000000) + vPawnLoc=(X=0.0000000,Y=0.0000000,Z=0.0000000) + pObj=none + pTop=none + pBot=none + } +}; + +struct native HudProjectile +{ + var int nId; + var bool bIsActive; + var bool bInRange; + var Vector vProjLoc; + var float fScaleMult; + var GFxObject pObj; + var GFxObject pPointer; + var GFxObject pIconTinted; + var GFxObject pIcon; + var GFxObject pArrow; + + structdefaultproperties + { + nId=0 + bIsActive=false + bInRange=false + vProjLoc=(X=0.0000000,Y=0.0000000,Z=0.0000000) + fScaleMult=0.0000000 + pObj=none + pPointer=none + pIconTinted=none + pIcon=none + pArrow=none + } +}; + +struct native CastingInfo +{ + var int nWidth; + var bool bActive; + var float fPercent; + var GFxObject pObj; + var GFxObject pText; + var GFxObject pAnim; + + structdefaultproperties + { + nWidth=0 + bActive=false + fPercent=0.0000000 + pObj=none + pText=none + pAnim=none + } +}; + +struct native HitMarkerInfo +{ + var bool bPlayed; + var float DamageAmount; + var float fMaxDamageAmount; + var array HitActors; + var bool bIsShieldHit; + var ExtraDamageInfo ExtraInfo; + var float fAccumulatedDamage; + + structdefaultproperties + { + bPlayed=false + DamageAmount=0.0000000 + fMaxDamageAmount=0.0000000 + HitActors=none + bIsShieldHit=false + ExtraInfo=(bCritical=false,bHeadShot=false,bKillingBlow=false,bCombo=false,bLatent=false,bMarked=false,bNoInstigator=false) + fAccumulatedDamage=0.0000000 + } +}; + +struct native DamageInstance +{ + var float fDamage; + var float fTimestamp; + + structdefaultproperties + { + fDamage=0.0000000 + fTimestamp=0.0000000 + } +}; + +var int m_nReticle; +var int m_nAccuracy; +var int m_nStuckCount; +var int m_nDmgAreaIndex; +var int m_nAmmoCurrent; +var int m_nAmmoClipSize; +var int m_nReticleColor; +var bool m_bChangeReticleOverEnemy; +var bool m_bChargeAmmo; +var bool m_bReticleBloom; +var bool m_bReticleVisible; +var bool m_bReticleAccessoryVisible; +var bool m_bDisableCombatLog; +var bool m_bRecharging; +var bool m_bOnEnemy; +var bool m_bOnFriendly; +var bool m_bWasMounted; +var bool m_bCanPurchase; +var bool m_bWasReloading; +var bool m_bShowFuel; +var float m_fRechargeTime; +var float m_fRechargeTimer; +var float m_fDmgFadeTime; +var float m_fReloadTime; +var float m_fReloadTimer; +var AkBaseSoundObject m_scHitMarker[5]; +var GFxObject m_mcReticle; +var GFxObject m_mcShaLinReticleDraw; +var GFxObject m_mcShaLinImpalerReticle; +var GFxObject m_mcMaevePounceLIRecticle; +var GFxObject m_mcMaevePounceLORecticle; +var GFxObject m_mcMaevePounceRIRecticle; +var GFxObject m_mcMaevePounceRORecticle; +var GFxObject m_mcReticleType; +var GFxObject m_mcReticleAnim; +var GFxObject m_mcTargeter; +var GFxObject m_mcHitMarker; +var GFxObject m_mcHitMarkerTicks[4]; +var GFxObject m_mcAccuracy; +var GFxObject m_mcRecharge; +var GFxObject m_mcRechargeCD; +var GFxObject m_mcClip; +var GFxObject m_mcBeacon; +var GFxObject m_mcBeaconTF; +var GFxObject m_mcBeaconButton; +var GFxObject m_mcBeaconBG; +var GFxObject m_mcStuck; +var GFxObject m_mcAmmoNew; +var GFxObject m_mcAmmoNewCharge; +var GFxObject m_mcAmmoNewCurrent; +var GFxObject m_mcAmmoNewClipSize; +var GFxObject m_mcAmmoNewChargeMask; +var GFxObject m_mcColorBack[4]; +var GFxObject m_mcColorFront[4]; +var GFxObject m_mcMakoaSmash; +var GFxObject m_mcMakoaSmashObj[3]; +var Vector2D m_vMakoaSmashStart[3]; +var Vector2D m_vMakoaSmashEnd[3]; +var TgRepInfo_Player m_pTargetPRI; +var int m_eCombatInfoType; +var float m_fGlobalChatTimer; +var GFxObject m_Reward; +var GFxObject m_RewardName; +var GFxObject m_RewardAmount; +var GFxObject m_mcGlobalChat; +var GFxObject m_mcGlobalChatTF; +var GFxObject m_mcKillingBlow; +var GFxObject m_mcDamage; +var GFxObject m_Projectiles; +var HudProjectile m_ProjectilePointers[10]; +var array m_DamageMarkersLight; +var array m_DamageMarkerFreelistLight; +var array m_DamageMarkersMedium; +var array m_DamageMarkerFreelistMedium; +var array m_DamageMarkersHeavy; +var array m_DamageMarkerFreelistHeavy; +var GFxObject m_mcFuel; +var GFxObject m_mcFuelBar; +var GFxObject m_mcFuelMask; +var GFxObject m_mcReload; +var GFxObject m_mcReloadTF; +var GFxObject m_mcReloadAnim; +var UIComponent_TorvaldShieldBar m_TorvaldShieldBar; +var UIComponent_DemonTeleportTimer m_DemonTeleportTimer; +var array m_Messages; +var HitMarkerInfo m_HitMarker; +var float m_fMaxDamageTimestamp; +var float m_fDamageDealtRTPCSustainDuration; +var float m_fChampionHitTimestamp; +var float m_fChampionCountRTPCSustainDuration; +var array m_AccumulatedDamageInstances; +var float m_fDamageAccumulationWindow; +var TgGameplayCurves m_GameplayCurves; + +simulated event TriggerPounceReticleAnim(bool bPounceReady) +{ + // End:0x486 + if((((m_mcMaevePounceLIRecticle != none) && m_mcMaevePounceLIRecticle != none) && m_mcMaevePounceLORecticle != none) && m_mcMaevePounceLORecticle != none) + { + // End:0x2F6 + if(bPounceReady) + { + m_mcMaevePounceLIRecticle.SetX(-300.0000000); + m_mcMaevePounceLIRecticle.SetAlpha(0.0000000); + m_mcMaevePounceLORecticle.SetX(-200.0000000); + m_mcMaevePounceLORecticle.SetAlpha(0.0000000); + m_mcMaevePounceRIRecticle.SetX(300.0000000); + m_mcMaevePounceRIRecticle.SetAlpha(0.0000000); + m_mcMaevePounceRORecticle.SetX(200.0000000); + m_mcMaevePounceRORecticle.SetAlpha(0.0000000); + Animate(m_mcMaevePounceLIRecticle, 0.2500000, 0, m_mcMaevePounceLIRecticle.m_fOrigX); + Animate(m_mcMaevePounceLIRecticle, 0.2500000, 2, 100.0000000); + Animate(m_mcMaevePounceRIRecticle, 0.2500000, 0, m_mcMaevePounceRIRecticle.m_fOrigX); + Animate(m_mcMaevePounceRIRecticle, 0.2500000, 2, 100.0000000); + Animate(m_mcMaevePounceLORecticle, 0.1500000, 0, m_mcMaevePounceLORecticle.m_fOrigX, 0.1500000); + Animate(m_mcMaevePounceLORecticle, 0.1500000, 2, 100.0000000, 0.1500000); + Animate(m_mcMaevePounceRORecticle, 0.1500000, 0, m_mcMaevePounceRORecticle.m_fOrigX, 0.1500000); + Animate(m_mcMaevePounceRORecticle, 0.1500000, 2, 100.0000000, 0.1500000); + } + else + { + Animate(m_mcMaevePounceLIRecticle, 0.1500000, 0, m_mcMaevePounceLIRecticle.m_fOrigX * 2.0000000); + Animate(m_mcMaevePounceLIRecticle, 0.1500000, 2, 0.0000000); + Animate(m_mcMaevePounceRIRecticle, 0.1500000, 0, m_mcMaevePounceRIRecticle.m_fOrigX * 2.0000000); + Animate(m_mcMaevePounceRIRecticle, 0.1500000, 2, 0.0000000); + Animate(m_mcMaevePounceLORecticle, 0.1500000, 0, m_mcMaevePounceLIRecticle.m_fOrigX * 2.0000000); + Animate(m_mcMaevePounceLORecticle, 0.1500000, 2, 0.0000000); + Animate(m_mcMaevePounceRORecticle, 0.1500000, 0, m_mcMaevePounceRIRecticle.m_fOrigX * 2.0000000); + Animate(m_mcMaevePounceRORecticle, 0.1500000, 2, 0.0000000); + } + } + //return; +} + +defaultproperties +{ + m_bReticleVisible=true + m_bReticleAccessoryVisible=true + m_fDmgFadeTime=2.0000000 + m_scHitMarker[0]=AkEvent'WW_UI_Default.UI_HitMarker_Small_1P_Play' + m_scHitMarker[1]=AkEvent'WW_UI_Default.UI_HitMarker_DoT_1P_Play' + m_scHitMarker[2]=AkEvent'WW_UI_Default.UI_HitMarker_Shield_1P_Play' + m_scHitMarker[3]=AkEvent'WW_UI_Default.UI_HitMarker_HeadShot_Play' + m_scHitMarker[4]=AkEvent'WW_UI_Default.UI_HitMarker_Crit_Play' + m_vMakoaSmashStart[0]=(X=0.0000000,Y=-22.2000000) + m_vMakoaSmashStart[1]=(X=19.4500000,Y=11.3500000) + m_vMakoaSmashStart[2]=(X=-19.3500000,Y=11.4500000) + m_vMakoaSmashEnd[0]=(X=0.0000000,Y=-61.0000000) + m_vMakoaSmashEnd[1]=(X=53.0500000,Y=30.7500000) + m_vMakoaSmashEnd[2]=(X=-52.9500000,Y=30.8500000) + m_fDamageDealtRTPCSustainDuration=0.7500000 + m_fChampionCountRTPCSustainDuration=0.7500000 + m_fDamageAccumulationWindow=0.5000000 + m_GameplayCurves=TgGameplayCurves'GP_UI.HudCenterCurves' + m_UISceneClass=Class'TgClient.UIScene_UIHudCenter' + m_bVisibleOnLoad=true + m_bAlwaysTick=true + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudCenter" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudChampionSelect.uc b/exported/TgClient/Classes/UIHudChampionSelect.uc new file mode 100755 index 00000000..009ea010 --- /dev/null +++ b/exported/TgClient/Classes/UIHudChampionSelect.uc @@ -0,0 +1,28 @@ +class UIHudChampionSelect extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHUDCHAMPIONSELECT_COUNT = 33; + +var GFxObject m_mcBack; +var GFxObject m_mcTitle; +var GFxObject m_mcChampion[33]; +var GFxObject m_mcChampionIcon[33]; +var GFxObject m_mcChampionTitle[33]; +var GFxObject m_mcChampionSubtitle[33]; +var TgGFxGroup m_grChampions; + +event string GetBotSpawnName(string sValue) +{ + m_pMovie.GetHUD().ReplaceText(sValue, " ", ""); + m_pMovie.GetHUD().ReplaceText(sValue, "'", ""); + return sValue; + //return ReturnValue; +} + +defaultproperties +{ + m_OptionList[0]=14 + m_OptionList[1]=4 + m_bBlur=true + m_Name="UIHudChampionSelect" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudChat.uc b/exported/TgClient/Classes/UIHudChat.uc new file mode 100755 index 00000000..0f2abe7c --- /dev/null +++ b/exported/TgClient/Classes/UIHudChat.uc @@ -0,0 +1,8 @@ +class UIHudChat extends UIHudChatBox within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_bHideInput=true + m_Name="UIHudChat" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudChatBox.uc b/exported/TgClient/Classes/UIHudChatBox.uc new file mode 100755 index 00000000..fbb50dc6 --- /dev/null +++ b/exported/TgClient/Classes/UIHudChatBox.uc @@ -0,0 +1,67 @@ +class UIHudChatBox extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const CHAT_COUNT = 8; +const CHAT_VGS_CALLOUT_COUNT = 5; +const CHAT_VGS_CALLOUT_TOTAL_COUNT = 40; + +var int m_nScroll; +var int m_nLineNumber; +var bool m_bLobby; +var bool m_bFadeFrame; +var bool m_bHighlight; +var bool m_bHideInput; +var float m_fBuffer; +var float m_fOffset; +var float m_fInputPosY; +var float m_fInputWidth; +var float m_fOutputWidth; +var float m_fOutputTimer[8]; +var string m_sRemaining; +var string m_sLastInput; +var TgChatData m_pChatData; +var int m_nChannel; +var int m_nMaxWidth; +var int m_nPrevIndex; +var string m_sReplyName; +var string m_sRecipient; +var GFxObject m_Buffer; +var GFxObject m_Highlight; +var GFxObject m_Output; +var GFxObject m_OutputText[8]; +var GFxObject m_OutputVgsCallout[40]; +var GFxObject m_OutputFrame; +var GFxObject m_OutputScroll; +var GFxObject m_mcCloseBtn; +var GFxObject m_Input; +var GFxObject m_InputBtn; +var GFxObject m_InputHelp; +var GFxObject m_InputText; +var GFxObject m_InputChan; +var GFxObject m_InputFrame; +var array m_bVGSText; +var array m_Messages; +var array m_PrevChats; +var array m_Shortcuts; + +defaultproperties +{ + m_fBuffer=5.0000000 + m_fOffset=25.0000000 + m_fOutputWidth=470.0000000 + m_Shortcuts[0]=(nChannel=0,sName="r") + m_Shortcuts[1]=(nChannel=0,sName="reply") + m_Shortcuts[2]=(nChannel=0,sName="w") + m_Shortcuts[3]=(nChannel=0,sName="whisper") + m_Shortcuts[4]=(nChannel=0,sName="c") + m_Shortcuts[5]=(nChannel=0,sName="clan") + m_Shortcuts[6]=(nChannel=0,sName="l") + m_Shortcuts[7]=(nChannel=0,sName="local") + m_Shortcuts[8]=(nChannel=0,sName="g") + m_Shortcuts[9]=(nChannel=0,sName="game") + m_Shortcuts[10]=(nChannel=0,sName="t") + m_Shortcuts[11]=(nChannel=0,sName="twitch") + m_eSnappingType=UISNAPPINGTYPE.UISNAPPING_BOT + m_bVisibleOnLoad=true + m_Name="UIHudChatBox" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudCredits.uc b/exported/TgClient/Classes/UIHudCredits.uc new file mode 100755 index 00000000..3fa22660 --- /dev/null +++ b/exported/TgClient/Classes/UIHudCredits.uc @@ -0,0 +1,36 @@ +class UIHudCredits extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +struct native UIRewardInfo +{ + var float fAlpha; + var float fTimer; + var GFxObject pClip; + + structdefaultproperties + { + fAlpha=0.0000000 + fTimer=0.0000000 + pClip=none + } +}; + +var int m_nDepth; +var string m_sComboName; +var string m_sRewardName; +var AkBaseSoundObject m_scXP; +var AkBaseSoundObject m_scKill; +var array m_mcRewards; + +defaultproperties +{ + m_sComboName="ComboInfo" + m_sRewardName="RewardInfo" + m_scXP=AkEvent'WW_UI_Default.UI_InGame_Alert_Score_1P_Play' + m_scKill=AkEvent'WW_UI_Default.UI_InGame_Alert_EnemyKill_1P_Play' + m_bVisibleOnLoad=true + m_bAlwaysTick=true + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudCredits" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudDebuff.uc b/exported/TgClient/Classes/UIHudDebuff.uc new file mode 100755 index 00000000..00006026 --- /dev/null +++ b/exported/TgClient/Classes/UIHudDebuff.uc @@ -0,0 +1,19 @@ +class UIHudDebuff extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHUDBUFFS_COUNT = 3; + +var int m_nGroup[16]; +var GFxObject m_mcDebuff[3]; +var GFxObject m_mcDebuffTF[3]; +var GFxObject m_mcDebuffIcon[3]; +var GFxObject m_mcDebuffTimer[3]; +var GFxObject m_mcDebuffTimerBar[3]; + +defaultproperties +{ + m_bVisibleOnLoad=true + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudDebuff" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudDecks.uc b/exported/TgClient/Classes/UIHudDecks.uc new file mode 100755 index 00000000..3f3a3ef0 --- /dev/null +++ b/exported/TgClient/Classes/UIHudDecks.uc @@ -0,0 +1,35 @@ +class UIHudDecks extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHUDDECKS_COUNT = 6; +const UIHUDDECKS_CARDS = 5; +const UIHUDTALENTS_COUNT = 3; + +var bool m_bPresentCharacterCustomizationWhenReady; +var bool m_bPopup; +var int m_nTalent; +var int m_nLoadout; +var GFxObject m_mcPopup; +var GFxObject m_mcPopupEquip; +var GFxObject m_mcPopupTitle; +var GFxObject m_mcPopupCard[5]; +var GFxObject m_mcPopupShadow[5]; +var TgGFxGroup m_grLoadout; +var GFxObject m_mcLoadoutContainer; +var GFxObject m_mcLoadout[6]; +var GFxObject m_mcLoadoutTitle[6]; +var GFxObject m_mcBack; +var GFxObject m_mcBreadcrumbs[3]; +var GFxObject m_mcBreadcrumbLines[2]; +var GFxObject m_mcTitle; +var GFxObject m_mcSubtitle; +var AkBaseSoundObject m_akEquip; + +defaultproperties +{ + m_akEquip=AkEvent'WW_UI_Default.UI_Lobby_MatchSetUp_LockIn_Self_Play' + m_UISceneClass=Class'TgClient.UIScene_UIHudDecks' + m_OptionList[0]=249 + m_bBlur=true + m_Name="UIHudDecks" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudEnemy.uc b/exported/TgClient/Classes/UIHudEnemy.uc new file mode 100755 index 00000000..031650ce --- /dev/null +++ b/exported/TgClient/Classes/UIHudEnemy.uc @@ -0,0 +1,7 @@ +class UIHudEnemy extends UIHudTeam within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_Name="UIHudEnemy" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudKillFeed.uc b/exported/TgClient/Classes/UIHudKillFeed.uc new file mode 100755 index 00000000..c4be8320 --- /dev/null +++ b/exported/TgClient/Classes/UIHudKillFeed.uc @@ -0,0 +1,32 @@ +class UIHudKillFeed extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHUDKILLFEED_START_Y_POS = 800.0; +const UIHUDKILLFEED_ALTERNATE_Y_POS = 700.0; +const UIHUDKILLFEED_Y_SPACING = 50.0; + +struct native UIKILLFEED_DATA +{ + var GFxObject pObj; + var float fTimer; + + structdefaultproperties + { + pObj=none + fTimer=0.0000000 + } +}; + +var int m_nDepth; +var string m_sEntryName; +var array m_Entries; + +defaultproperties +{ + m_sEntryName="Entry" + m_eSnappingType=UISNAPPINGTYPE.UISNAPPING_BOT + m_bVisibleOnLoad=true + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudKillFeed" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudMenu.uc b/exported/TgClient/Classes/UIHudMenu.uc new file mode 100755 index 00000000..e3a40790 --- /dev/null +++ b/exported/TgClient/Classes/UIHudMenu.uc @@ -0,0 +1,40 @@ +class UIHudMenu extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHUDMENU_COUNT = 8; + +enum HUDMENU_OPTIONS +{ + UIHM_RETURNTOGAME, // 0 + UIHM_EDITLOADOUT, // 1 + UIHM_SETTINGS, // 2 + UIHM_SCOREBOARD, // 3 + UIHM_CHANGECHAMPION, // 4 + UIHM_RETURNTOLOBBY, // 5 + UIHM_QUITGAME, // 6 + UIHM_MAX // 7 +}; + +var bool m_bTutorialPopup; +var GFxObject m_mcFrame; +var GFxObject m_mcTitle; +var GFxObject m_mcBlocker; +var GFxObject m_mcSubtitle; +var GFxObject m_mcButton[8]; +var TgGFxGroup m_grButton; +var GFxObject m_mcTutorialPopup; +var GFxObject m_mcTutorialPopupTitle; +var GFxObject m_mcTutorialPopupAccept; +var GFxObject m_mcTutorialPopupCancel; +var GFxObject m_mcTutorialPopupBlocker; +var GFxObject m_mcTutorialPopupSubtitle; +var TgGFxGroup m_grTutorialPopup; +var array m_eOptions; + +defaultproperties +{ + m_OptionList[0]=249 + m_bBlur=true + m_bAllowSpectatorClickThru=false + m_Name="UIHudMenu" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudMinimap.uc b/exported/TgClient/Classes/UIHudMinimap.uc new file mode 100755 index 00000000..b08ab63a --- /dev/null +++ b/exported/TgClient/Classes/UIHudMinimap.uc @@ -0,0 +1,72 @@ +class UIHudMinimap extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHUD_MINIMAP_HALFSIZE = 300.0f; +const UIHUD_MINIMAP_IMAGELOADERFRAME = 11; + +struct native MinimapInfo +{ + var int nMapId; + var float fMapSize; + var float fOffsetX; + var float fOffsetY; + + structdefaultproperties + { + nMapId=0 + fMapSize=0.0000000 + fOffsetX=0.0000000 + fOffsetY=0.0000000 + } +}; + +var int m_nStaticMapIndex; +var int m_nStaticMapId; +var float m_fFogRotation; +var int m_nMapBoundsCount; +var bool m_bDynamicMapSet; +var float m_fMapSize; +var float m_fOffsetX; +var float m_fOffsetY; +var Vector m_vMapBoundsCenter; +var Vector m_vMapBoundsExtents; +var float m_fUpdateMiniMapTimer; +var GFxObject m_Map; +var GFxObject m_MinimapImageLoader; +var GFxObject m_LocalPlayer; +var GFxObject m_SiegeEngine; +var GFxObject m_SiegeBomb[2]; +var GFxObject m_CapturePoint; +var GFxObject m_EnemyGates[3]; +var GFxObject m_FriendGates[3]; +var GFxObject m_EnemyPlayer[5]; +var GFxObject m_EnemyPlayerIcon[5]; +var GFxObject m_FriendPlayer[5]; +var GFxObject m_FriendPlayerIcon[5]; +var GFxObject m_mcFog; +var GFxObject m_mcFogMask; +var GFxObject m_mcFogFrame; +var GFxObject m_mcFogSpinner; +var GFxObject m_mcFogSpinnerMask; +var GFxObject m_mcFogSpinnerAnim; +var array m_MinimapInfo; + +defaultproperties +{ + m_MinimapInfo[0]=(nMapId=0,fMapSize=9700.0000000,fOffsetX=-32.0000000,fOffsetY=4.0000000) + m_MinimapInfo[1]=(nMapId=1,fMapSize=10800.0000000,fOffsetX=105.0000000,fOffsetY=0.0000000) + m_MinimapInfo[2]=(nMapId=2,fMapSize=7000.0000000,fOffsetX=46.0000000,fOffsetY=148.0000000) + m_MinimapInfo[3]=(nMapId=3,fMapSize=9800.0000000,fOffsetX=20.0000000,fOffsetY=0.0000000) + m_MinimapInfo[4]=(nMapId=4,fMapSize=6800.0000000,fOffsetX=180.0000000,fOffsetY=-100.0000000) + m_MinimapInfo[5]=(nMapId=5,fMapSize=7300.0000000,fOffsetX=-40.0000000,fOffsetY=0.0000000) + m_MinimapInfo[6]=(nMapId=6,fMapSize=2800.0000000,fOffsetX=0.0000000,fOffsetY=0.0000000) + m_MinimapInfo[7]=(nMapId=7,fMapSize=6300.0000000,fOffsetX=160.0000000,fOffsetY=-70.0000000) + m_MinimapInfo[8]=(nMapId=8,fMapSize=5200.0000000,fOffsetX=0.0000000,fOffsetY=0.0000000) + m_MinimapInfo[9]=(nMapId=9,fMapSize=8800.0000000,fOffsetX=0.0000000,fOffsetY=0.0000000) + m_eSnappingType=UISNAPPINGTYPE.UISNAPPING_TOP + m_eAligningType=UIALIGNINGTYPE.UIALIGNING_RIGHT + m_bVisibleOnLoad=true + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudMinimap" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudNotify.uc b/exported/TgClient/Classes/UIHudNotify.uc new file mode 100755 index 00000000..360b35e1 --- /dev/null +++ b/exported/TgClient/Classes/UIHudNotify.uc @@ -0,0 +1,63 @@ +class UIHudNotify extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +struct native NotifyData +{ + var int nIcon; + var int nMsgId; + var int nSound; + var int nTaskForce; + var bool bLocal; + var bool bFriend; + var init string sSource; + var init string sTarget; + var init string sMessage; + + structdefaultproperties + { + nIcon=0 + nMsgId=0 + nSound=0 + nTaskForce=0 + bLocal=false + bFriend=false + sSource="" + sTarget="" + sMessage="" + } +}; + +var float m_fDisplayTimer; +var float m_fKillTime; +var float m_fKillTimer; +var float m_fAlertTime; +var float m_fAlertTimer; +var float m_fAccoladeTime; +var float m_fAccoladeTimer; +var NotifyData m_NewData; +var GFxObject m_mcNotify; +var GFxObject m_mcNotifyTF; +var GFxObject m_mcTeamTF; +var bool m_bRejectMessages; +var AkBaseSoundObject m_scCaptured; +var AkBaseSoundObject m_scGateDestroyed; +var AkBaseSoundObject m_scSiegeDestroyed; +var AkBaseSoundObject m_scGettingCaptured; +var array m_Kills; +var array m_Alerts; +var array m_Accolades; + +defaultproperties +{ + m_fKillTime=2.0000000 + m_fAlertTime=2.0000000 + m_fAccoladeTime=2.0000000 + m_scCaptured=AkEvent'WW_UI_Default.UI_InGame_Alert_Point_Captured_1P_Play' + m_scGateDestroyed=AkEvent'WW_UI_Default.UI_InGame_Alert_Gate_Destroyed_1P_Play' + m_scSiegeDestroyed=AkEvent'WW_UI_Default.UI_InGame_Alert_Siege_Destroyed_1P_Play' + m_scGettingCaptured=AkEvent'WW_UI_Default.UI_InGame_Alert_Point_Getting_Captured_1P_Play' + m_bVisibleOnLoad=true + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudNotify" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudOverlays.uc b/exported/TgClient/Classes/UIHudOverlays.uc new file mode 100755 index 00000000..425e120f --- /dev/null +++ b/exported/TgClient/Classes/UIHudOverlays.uc @@ -0,0 +1,11 @@ +class UIHudOverlays extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_bVisibleOnLoad=true + m_bResize=false + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudOverlays" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudPlayer.uc b/exported/TgClient/Classes/UIHudPlayer.uc new file mode 100755 index 00000000..19952a09 --- /dev/null +++ b/exported/TgClient/Classes/UIHudPlayer.uc @@ -0,0 +1,40 @@ +class UIHudPlayer extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +var int m_nStreak; +var int m_nProfile; +var bool m_bInCombat; +var bool m_bShowCombat; +var bool m_bSpectateEnemy; +var float m_fCombatTime; +var float m_fCombatPercent; +var float m_CachedRotation; +var GFxObject m_mcIcon; +var GFxObject m_grScene; +var UIComponent_HealthBar_Player m_HealthBar; +var GFxObject m_mcCombat; +var GFxObject m_mcCombatBar; +var GFxObject m_mcStreak; +var GFxObject m_mcStreakBack; +var GFxObject m_mcStreakTitle; +var GFxObject m_mcStreakSubtitle; +var GFxObject m_mcDebugText; +var init string m_sSpectatorName; +var init string m_sSpectatorTeam; +var GFxObject m_mcSpectatorGroup; +var GFxObject m_mcSpectatorNameTF; +var GFxObject m_mcSpectatorTeam; +var GFxObject m_mcSpectatorTeamAdd; +var GFxObject m_mcSpectatorBG; + +defaultproperties +{ + m_CachedRotation=-1.0000000 + m_eSnappingType=UISNAPPINGTYPE.UISNAPPING_BOT + m_bVisibleOnLoad=true + m_bAlwaysTick=true + m_bShowCursor=false + m_bCaptureKeys=false + m_bCanShake=true + m_Name="UIHudPlayer" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudRecap.uc b/exported/TgClient/Classes/UIHudRecap.uc new file mode 100755 index 00000000..fab1652e --- /dev/null +++ b/exported/TgClient/Classes/UIHudRecap.uc @@ -0,0 +1,29 @@ +class UIHudRecap extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHUDRECAP_PLAYERS = 3; + +var int m_nRespawnTime; +var bool m_bRecap; +var bool m_bRespawning; +var bool m_bHaveDeathData; +var GFxObject m_mcSkipKillcamPrompt; +var GFxObject m_mcRecap; +var GFxObject m_mcRecapMask[3]; +var GFxObject m_mcRecapPlayer[3]; +var GFxObject m_mcTopBar; +var GFxObject m_mcBotBar; +var GFxObject m_mcTopShadow; +var GFxObject m_mcBotShadow; +var GFxObject m_mcViewRecapPrompt; +var GFxObject m_mcRespawn; +var GFxObject m_mcButtonTF; +var GFxObject m_mcRespawnTF; +var GFxObject m_mcPlayer[3]; + +defaultproperties +{ + m_bVisibleOnLoad=true + m_bAlwaysTick=true + m_Name="UIHudRecap" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudResult.uc b/exported/TgClient/Classes/UIHudResult.uc new file mode 100755 index 00000000..ce15dd56 --- /dev/null +++ b/exported/TgClient/Classes/UIHudResult.uc @@ -0,0 +1,137 @@ +class UIHudResult extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +enum EPlayOfTheGameState +{ + EPOTGS_None, // 0 + EPOTGS_Setup, // 1 + EPOTGS_Intro, // 2 + EPOTGS_PlaybackRequested, // 3 + EPOTGS_PlaybackStarted, // 4 + EPOTGS_Outro, // 5 + EPOTGS_MAX // 6 +}; + +var bool m_bRoundEnd; +var bool m_bLoadingModel; +var bool m_bMapOutroFinished; +var float m_fResultDisplayTime; +var float m_fPlayOfTheGameTimer; +var float m_fHomeTimer; +var float m_fRoundTime; +var float m_fRoundTimer; +var float m_fAnimTimer; +var float m_fAsyncMeshLoadTimeout; +var float m_fIntroDuration; +var float m_fPlayOfTheGameTimeoutDuration; +var GFxObject m_mcBlocker; +var GFxObject m_mcResult; +var GFxObject m_mcResultEOR; +var GFxObject m_mcResultTitle; +var GFxObject m_mcResultTitleAnim; +var GFxObject m_mcResultDefeat; +var GFxObject m_mcResultVictory; +var GFxObject m_mcResultVictorySpectator; +var GFxObject m_mcResultPlayOfTheGameContainer; +var GFxObject m_mcResultPlayOfTheGame; +var GFxObject m_mcResultPlayOfTheGameBackground; +var GFxObject m_mcResultPlayOfTheGamePlayerNameGroup; +var GFxObject m_mcResultPlayOfTheGamePlayerName; +var GFxObject m_mcResultPlayOfTheGamePlayerNameShadow; +var GFxObject m_mcResultPlayOfTheGamePlayerTitle; +var GFxObject m_mcResultPlayOfTheGamePlayerPortrait; +var GFxObject m_mcResultPlayOfTheGamePlayerPortraitFrame; +var GFxObject m_mcResultPlayOfTheGamePlayerPortraitIcon; +var GFxObject m_mcResultPlayOfTheGamePlayerPortraitIconTexture; +var GFxObject m_mcResultPlayOfTheGameChampionNameGroup; +var GFxObject m_mcResultPlayOfTheGameChampionName; +var GFxObject m_mcResultPlayOfTheGameChampionNameTF; +var GFxObject m_mcResultPlayOfTheGameText; +var GFxObject m_mcResultPlayOfTheGameTextAs; +var int m_nBasePotGXPos; +var UIHudResult.EPlayOfTheGameState m_ePlayOfTheGameState; +var float m_fPlayOfTheGameStateTime; + +event HandleAnimState(int nAnimState, optional int nAnimGroup = 0) +{ + switch(nAnimState) + { + // End:0x6FD + case 2: + CancelAnim(m_mcResultPlayOfTheGame); + m_mcResultPlayOfTheGame.SetVisible(true); + m_mcResultPlayOfTheGame.SetAlpha(100.0000000); + m_mcResultPlayOfTheGame.SetXScale(100.0000000); + m_mcResultPlayOfTheGame.SetYScale(100.0000000); + m_mcResultPlayOfTheGame.SetX(float(m_nBasePotGXPos)); + CancelAnim(m_mcResultPlayOfTheGamePlayerPortrait); + m_mcResultPlayOfTheGamePlayerPortrait.SetXScale(175.0000000); + m_mcResultPlayOfTheGamePlayerPortrait.SetYScale(175.0000000); + m_mcResultPlayOfTheGamePlayerPortrait.SetY(250.0000000); + m_mcResultPlayOfTheGamePlayerPortrait.SetAlpha(0.0000000); + Animate(m_mcResultPlayOfTheGamePlayerPortrait, 0.3330000, 5, 98.0000000, 0.3750000, 1, false); + Animate(m_mcResultPlayOfTheGamePlayerPortrait, 0.3330000, 6, 98.0000000, 0.3750000, 1, false); + Animate(m_mcResultPlayOfTheGamePlayerPortrait, 0.0410000, 5, 100.0000000, 0.7500000, 1, false); + Animate(m_mcResultPlayOfTheGamePlayerPortrait, 0.0410000, 6, 100.0000000, 0.7500000, 1, false); + Animate(m_mcResultPlayOfTheGamePlayerPortrait, 0.2080000, 1, 150.0000000, 0.3750000, 1, false); + Animate(m_mcResultPlayOfTheGamePlayerPortrait, 0.1250000, 1, 180.0000000, 0.5830000, 1, false); + Animate(m_mcResultPlayOfTheGamePlayerPortrait, 0.0410000, 1, 175.0000000, 0.7500000, 1, false); + Animate(m_mcResultPlayOfTheGamePlayerPortrait, 0.2080000, 2, 100.0000000, 0.3750000, 1, false); + CancelAnim(m_mcResultPlayOfTheGamePlayerNameGroup); + m_mcResultPlayOfTheGamePlayerNameGroup.SetX(-650.0000000); + m_mcResultPlayOfTheGamePlayerNameGroup.SetAlpha(0.0000000); + Animate(m_mcResultPlayOfTheGamePlayerNameGroup, 0.2500000, 0, 1295.0000000, 0.0000000, 1, false); + Animate(m_mcResultPlayOfTheGamePlayerNameGroup, 0.1250000, 0, 1200.0000000, 0.2500000, 1, false); + Animate(m_mcResultPlayOfTheGamePlayerNameGroup, 0.0410000, 0, 1205.0000000, 0.3750000, 1, false); + Animate(m_mcResultPlayOfTheGamePlayerNameGroup, 0.4160000, 2, 100.0000000, 0.0000000, 1, false); + CancelAnim(m_mcResultPlayOfTheGamePlayerTitle); + m_mcResultPlayOfTheGamePlayerTitle.SetX(-450.0000000); + m_mcResultPlayOfTheGamePlayerTitle.SetAlpha(0.0000000); + Animate(m_mcResultPlayOfTheGamePlayerTitle, 0.4580000, 0, 560.0000000, 0.0000000, 1, false); + Animate(m_mcResultPlayOfTheGamePlayerTitle, 0.1250000, 0, 480.0000000, 0.4580000, 1, false); + Animate(m_mcResultPlayOfTheGamePlayerTitle, 0.4580000, 2, 77.0000000, 0.0000000, 1, false); + Animate(m_mcResultPlayOfTheGamePlayerTitle, 0.1250000, 2, 100.0000000, 0.4580000, 1, false); + CancelAnim(m_mcResultPlayOfTheGameText); + m_mcResultPlayOfTheGameText.SetAlpha(0.0000000); + Animate(m_mcResultPlayOfTheGameText, 0.4160000, 2, 82.0000000, 0.2080000, 1, false); + Animate(m_mcResultPlayOfTheGameText, 0.3330000, 2, 63.0000000, 0.6250000, 1, false); + CancelAnim(m_mcResultPlayOfTheGameChampionNameGroup); + m_mcResultPlayOfTheGameChampionNameGroup.SetX(1331.0000000); + m_mcResultPlayOfTheGameChampionNameGroup.SetAlpha(0.0000000); + Animate(m_mcResultPlayOfTheGameChampionNameGroup, 0.1250000, 0, 1050.0000000, 0.6660000, 1, false); + Animate(m_mcResultPlayOfTheGameChampionNameGroup, 0.0830000, 0, 1065.0000000, 0.7910000, 1, false); + Animate(m_mcResultPlayOfTheGameChampionNameGroup, 0.1250000, 2, 75.0000000, 0.6660000, 1, false); + Animate(m_mcResultPlayOfTheGameChampionNameGroup, 0.0830000, 2, 100.0000000, 0.7910000, 1, false); + CancelAnim(m_mcResultPlayOfTheGameBackground); + m_mcResultPlayOfTheGameBackground.SetYScale(150.0000000); + m_mcResultPlayOfTheGameBackground.SetAlpha(0.0000000); + Animate(m_mcResultPlayOfTheGameBackground, 0.1660000, 6, 98.0000000, 0.5000000, 1, false); + Animate(m_mcResultPlayOfTheGameBackground, 0.1250000, 6, 100.0000000, 0.6660000, 1, false); + Animate(m_mcResultPlayOfTheGameBackground, 0.1660000, 2, 100.0000000, 0.5000000, 1, false); + return; + // End:0x7F5 + case 4: + CancelAnim(m_mcResultPlayOfTheGame); + Animate(m_mcResultPlayOfTheGame, 0.2500000, 0, m_mcResultPlayOfTheGame.GetX() - (m_mcResultPlayOfTheGame.GetWidth() * 2.0000000), 0.0000000, 1, false); + Animate(m_mcResultPlayOfTheGame, 0.2500000, 5, 150.0000000, 0.0000000, 1, false); + Animate(m_mcResultPlayOfTheGame, 0.2500000, 6, 75.0000000, 0.0000000, 1, false); + Animate(m_mcResultPlayOfTheGame, 0.2500000, 2, 0.0000000, 0.0000000, 1, false); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +defaultproperties +{ + m_fAsyncMeshLoadTimeout=5.0000000 + m_fIntroDuration=5.0000000 + m_fPlayOfTheGameTimeoutDuration=1.5000000 + m_bAlwaysTick=true + m_bAllowSpectatorClickThru=false + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudResult" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudScore.uc b/exported/TgClient/Classes/UIHudScore.uc new file mode 100755 index 00000000..9ca3cf22 --- /dev/null +++ b/exported/TgClient/Classes/UIHudScore.uc @@ -0,0 +1,145 @@ +class UIHudScore extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +struct native PayloadStatus +{ + var GFxObject PayloadStatusCon; + var GFxObject Diamond; + var GFxObject DiamondTint; + var GFxObject DashForward; + var GFxObject DashBackward; + var float fTargetDashFAlpha; + var float fTargetDashBAlpha; + var float fTargetTintAlpha; + var int nTargetTintFrame; + var GFxObject PayloadContestedCon; + var GFxObject ContestedTF; + var GFxObject ContestedLeft; + var GFxObject ContestedRight; + var float fTargetContestedAlpha; + + structdefaultproperties + { + PayloadStatusCon=none + Diamond=none + DiamondTint=none + DashForward=none + DashBackward=none + fTargetDashFAlpha=0.0000000 + fTargetDashBAlpha=0.0000000 + fTargetTintAlpha=0.0000000 + nTargetTintFrame=0 + PayloadContestedCon=none + ContestedTF=none + ContestedLeft=none + ContestedRight=none + fTargetContestedAlpha=0.0000000 + } +}; + +var const float m_fPayloadProgressWidth; +var const float m_fPayloadProgressBuffer; +var int m_nTime; +var int m_nScoreA; +var int m_nScoreB; +var int m_nTicketsFriend; +var int m_nTicketsEnemy; +var int m_nOvertime; +var int m_nPushTime; +var int m_nSetupTime; +var int m_nCaptureA; +var int m_nCaptureB; +var int m_nCaptureTeam; +var int m_nCaptureCount; +var int m_nOvertimeState; +var int m_nTimeRemaining; +var bool m_bPushing; +var bool m_bOvertime; +var bool m_bStarting; +var bool m_bCapturing; +var bool m_bCaptureOvertime; +var bool m_bUseSubtitlePrompt; +var float m_fOvertime; +var float m_fPushTimer; +var float m_fSetupTimer; +var float m_fOvertimeDuration; +var array m_movieClips; +var GFxObject m_mcSiege; +var GFxObject m_mcSiegeTime; +var GFxObject m_mcSiegeMaxA; +var GFxObject m_mcSiegeMaxB; +var GFxObject m_mcSiegeScoreA; +var GFxObject m_mcSiegeScoreB; +var GFxObject m_mcTicketsFriend; +var GFxObject m_mcTicketsEnemy; +var GFxObject m_mcSiegeScoreFrame; +var GFxObject m_mcSiegePush; +var GFxObject m_mcSiegePushBar; +var GFxObject m_mcSiegePushTip; +var GFxObject m_mcSiegePushTime; +var GFxObject m_mcSiegePushOvertime; +var GFxObject m_mcSiegePushOvertimeBar; +var GFxObject m_mcSiegeCapture; +var GFxObject m_mcSiegeCaptureBarA; +var GFxObject m_mcSiegeCaptureBarB; +var GFxObject m_mcSiegeCaptureIcon; +var GFxObject m_mcSiegeCaptureCount; +var GFxObject m_mcSiegeCaptureScoreA; +var GFxObject m_mcSiegeCaptureScoreB; +var GFxObject m_mcSiegeCaptureOvertime; +var GFxObject m_mcSiegeCaptureOvertimeBar; +var PayloadStatus m_SiegePayloadStatus; +var GFxObject m_mcSiegePushContested; +var GFxObject m_mcSiegePushContestedTF; +var GFxObject m_mcPayload; +var GFxObject m_mcPayloadTime; +var GFxObject m_mcPayloadTitle; +var GFxObject m_mcPayloadScoreA; +var GFxObject m_mcPayloadScoreB; +var GFxObject m_mcPayloadScoreFrame; +var GFxObject m_mcPayloadPush; +var GFxObject m_mcPayloadPushBar; +var GFxObject m_mcPayloadPushTip; +var GFxObject m_mcPayloadPushTime; +var GFxObject m_mcPayloadPushMarker; +var GFxObject m_mcPayloadPushOvertime; +var GFxObject m_mcPayloadPushOvertimeBar; +var PayloadStatus m_PayloadPayloadStatus; +var GFxObject m_mcPayloadPushContested; +var GFxObject m_mcPayloadPushContestedTF; +var GFxObject m_mcActivation; +var GFxObject m_mcActivationTF; +var GFxObject m_mcActivationTitle; +var string m_szCurrentPersistentTitle; +var string m_szCurrentPersistentSubtitle; +var GFxObject m_mcPersistentTitle; +var GFxObject m_mcPersistentSubtitle; +var GFxObject m_mcPersistentSubtitlePrompt; +var GFxObject m_mcTutorialPrompt; +var GFxObject m_mcTutorialPromptBack; + +defaultproperties +{ + m_fPayloadProgressWidth=324.0000000 + m_fPayloadProgressBuffer=-162.0000000 + m_nTime=-1 + m_nScoreA=-1 + m_nScoreB=-1 + m_nOvertime=999 + m_nPushTime=999 + m_nSetupTime=-1 + m_nCaptureA=-1 + m_nCaptureB=-1 + m_nCaptureTeam=-1 + m_nCaptureCount=-1 + m_nOvertimeState=-1 + m_bStarting=true + m_fPushTimer=-1.0000000 + m_UISceneClass=Class'TgClient.UIScene_UIHudScore' + m_eSnappingType=UISNAPPINGTYPE.UISNAPPING_TOP + m_bVisibleOnLoad=true + m_bAlwaysTick=true + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudScore" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudScoreboard.uc b/exported/TgClient/Classes/UIHudScoreboard.uc new file mode 100755 index 00000000..5b476d6c --- /dev/null +++ b/exported/TgClient/Classes/UIHudScoreboard.uc @@ -0,0 +1,155 @@ +class UIHudScoreboard extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UISCOREBOARD_CARDS = 5; +const UISCOREBOARD_ITEMS = 4; +const UISCOREBOARD_STATS = 5; +const UISCOREBOARD_PLAYERS = 5; +const UISCOREBOARD_TABS = 3; + +enum ScoreboardTabs +{ + UIST_Items, // 0 + UIST_Loadouts, // 1 + UIST_Overview, // 2 + UIST_MAX // 3 +}; + +struct native ScoreInfo +{ + var int nCard[5]; + var int nItem[4]; + var int nItemLevel[4]; + var int nTalent; + var int nTalentXPos; + var int nTalentYPos; + var int nPlayerId; + var UniqueNetId ConsoleUniqueId; + var GFxObject pObj; + var GFxObject Name; + var GFxObject EquipableTitle; + var GFxObject Icon; + var GFxObject Mute; + var GFxObject Bounds; + var GFxObject Charge; + var GFxObject Killstreak; + var GFxObject Respawn; + var GFxObject Champion; + var GFxObject TalentButton; + var GFxObject TalentIcon; + var GFxObject ItemBacks; + var GFxObject Card[5]; + var GFxObject CardIcon[5]; + var GFxObject Item[4]; + var GFxObject ItemBase[4]; + var GFxObject ItemIcon[4]; + var int nItemXPos[4]; + var int nItemYPos[4]; + var UIComponent_AbilityPointsPool AbilityPoints; + var GFxObject KDA; + var GFxObject MuteVoice; + + structdefaultproperties + { + nCard[0]=0 + nCard[1]=0 + nCard[2]=0 + nCard[3]=0 + nCard[4]=0 + nItem[0]=0 + nItem[1]=0 + nItem[2]=0 + nItem[3]=0 + nItemLevel[0]=0 + nItemLevel[1]=0 + nItemLevel[2]=0 + nItemLevel[3]=0 + nTalent=0 + nTalentXPos=0 + nTalentYPos=0 + nPlayerId=0 + ConsoleUniqueId=(Uid=()) + pObj=none + Name=none + EquipableTitle=none + Icon=none + Mute=none + Bounds=none + Charge=none + Killstreak=none + Respawn=none + Champion=none + TalentButton=none + TalentIcon=none + ItemBacks=none + Card[0]=none + Card[1]=none + Card[2]=none + Card[3]=none + Card[4]=none + CardIcon[0]=none + CardIcon[1]=none + CardIcon[2]=none + CardIcon[3]=none + CardIcon[4]=none + Item[0]=none + Item[1]=none + Item[2]=none + Item[3]=none + ItemBase[0]=none + ItemBase[1]=none + ItemBase[2]=none + ItemBase[3]=none + ItemIcon[0]=none + ItemIcon[1]=none + ItemIcon[2]=none + ItemIcon[3]=none + nItemXPos[0]=0 + nItemXPos[1]=0 + nItemXPos[2]=0 + nItemXPos[3]=0 + nItemYPos[0]=0 + nItemYPos[1]=0 + nItemYPos[2]=0 + nItemYPos[3]=0 + AbilityPoints=none + KDA=none + MuteVoice=none + } +}; + +var const int m_nFirstRowIconHeight; +var const int m_nRowSpacing; +var const int m_nTalentXOffset; +var const int m_nFirstItemXOffset; +var const int m_nItemSpacing; +var int m_nBestStreak; +var ScoreInfo m_RedScore[5]; +var ScoreInfo m_BlueScore[5]; +var UIComponent_ItemTooltip m_ItemTooltip; +var GFxObject m_mcStats; +var GFxObject m_mcTitle; +var GFxObject m_mcTitles; +var GFxObject m_mcMuteVoiceGamepadPrompt; +var GFxObject m_mcViewProfilePrompt; +var GFxObject m_mcHighlight; +var GFxObject m_mcStat[5]; +var TgGFxGroup m_grPlayers; +var GFxObject m_mcTabs[3]; +var GFxObject m_mcTabKey[3]; +var GFxObject m_mcTabTitles[3]; +var UIHudScoreboard.ScoreboardTabs m_eCurrentTab; + +defaultproperties +{ + m_nFirstRowIconHeight=410 + m_nRowSpacing=70 + m_nTalentXOffset=196 + m_nFirstItemXOffset=636 + m_nItemSpacing=50 + m_OptionList[0]=249 + m_bBlur=true + m_bAlwaysTick=true + m_bCaptureKeys=false + m_Name="UIHudScoreboard" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudSkills.uc b/exported/TgClient/Classes/UIHudSkills.uc new file mode 100755 index 00000000..c2837ea0 --- /dev/null +++ b/exported/TgClient/Classes/UIHudSkills.uc @@ -0,0 +1,40 @@ +class UIHudSkills extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHUDSKILLS_BARS = 3; +const UIHUDSKILLS_CARDS = 5; + +enum UIHudSkillsSpectatorMode +{ + SkillsSpecatorMode_Skills, // 0 + SkillsSpecatorMode_Items, // 1 + SkillsSpecatorMode_Cards, // 2 + SkillsSpecatorMode_MAX // 3 +}; + +var bool m_bPrompt; +var bool m_bShownBurn; +var bool m_bPromptK; +var bool m_bShownLoadout; +var CastingInfo m_MountBar; +var CastingInfo m_CastBar[3]; +var GFxObject m_mcPrompt; +var GFxObject m_mcPromptK; +var int m_nCredits; +var GFxObject m_mcSpectatorCredits; +var GFxObject m_mcSpectatorItemsGroup; +var GFxObject m_mcSpectatorCardsGroup; +var UICardDisplayGroup m_CardDisplayGroup; +var int m_nSpectatorMode; + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_UIHudSkills' + m_eSnappingType=UISNAPPINGTYPE.UISNAPPING_BOT + m_bVisibleOnLoad=true + m_bAlwaysTick=true + m_bShowCursor=false + m_bCaptureKeys=false + m_bCanShake=true + m_Name="UIHudSkills" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudSniper.uc b/exported/TgClient/Classes/UIHudSniper.uc new file mode 100755 index 00000000..c3d8ba5d --- /dev/null +++ b/exported/TgClient/Classes/UIHudSniper.uc @@ -0,0 +1,28 @@ +class UIHudSniper extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHUDSNIPER_PINS = 4; +const UIHUDSNIPER_SIDES = 2; +const UIHUDSNIPER_CHARGES = 4; +const UIHUDSNIPER_BULLETS = 5; + +var int m_nAmmo; +var float m_fCharge; +var GFxObject m_mcPins; +var GFxObject m_mcReady; +var GFxObject m_mcFrame; +var GFxObject m_mcAmmoBelt; +var GFxObject m_mcPin[4]; +var GFxObject m_mcAmmo[5]; +var GFxObject m_mcCharge[2]; +var GFxObject m_mcChargeLeft[4]; +var GFxObject m_mcChargeRight[4]; + +defaultproperties +{ + m_eScalingType=UISCALINGTYPE.UISCALING_FITTALL + m_eSnappingType=UISNAPPINGTYPE.UISNAPPING_TOP + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudSniper" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudSpectator.uc b/exported/TgClient/Classes/UIHudSpectator.uc new file mode 100755 index 00000000..c6865ccf --- /dev/null +++ b/exported/TgClient/Classes/UIHudSpectator.uc @@ -0,0 +1,46 @@ +class UIHudSpectator extends GFxObject within GFxMoviePlayer + native; + +struct native BotLifeData +{ + var bool bAlive; + var int nSpawnTime; + var int nRespawnTime; + var array m_DeathTimes; + + structdefaultproperties + { + bAlive=false + nSpawnTime=0 + nRespawnTime=0 + m_DeathTimes=none + } +}; + +var int m_nIterations; +var int m_BannedIds[6]; +var bool m_bFindMatchDetails; +var float m_fUpdateWaitRT; +var float m_fUpdateWaitGT; +var GFxObject _global; +var BotLifeData m_BotLifeData[2]; +var UIGameMoviePlayer m_pMovie; + +// Export UUIHudSpectator::execInitialize(FFrame&, void* const) +native function Initialize(UIGameMoviePlayer pParentMovie); + +// Export UUIHudSpectator::execUpdateGraph(FFrame&, void* const) +native exec function UpdateGraph(); + +final event SendGraphData(GFxObject Obj) +{ + ActionScriptVoid("asc_SetGraphData"); + //return; +} + +defaultproperties +{ + m_bFindMatchDetails=true + m_BotLifeData[0]=(bAlive=false,nSpawnTime=10,nRespawnTime=300,m_DeathTimes=none) + m_BotLifeData[1]=(bAlive=false,nSpawnTime=600,nRespawnTime=300,m_DeathTimes=none) +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudStrix.uc b/exported/TgClient/Classes/UIHudStrix.uc new file mode 100755 index 00000000..51b73dcb --- /dev/null +++ b/exported/TgClient/Classes/UIHudStrix.uc @@ -0,0 +1,13 @@ +class UIHudStrix extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_UIHudStrix' + m_eScalingType=UISCALINGTYPE.UISCALING_FITTALL + m_eSnappingType=UISNAPPINGTYPE.UISNAPPING_TOP + m_bVisibleOnLoad=true + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudStrix" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudTarget.uc b/exported/TgClient/Classes/UIHudTarget.uc new file mode 100755 index 00000000..0c03428b --- /dev/null +++ b/exported/TgClient/Classes/UIHudTarget.uc @@ -0,0 +1,14 @@ +class UIHudTarget extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +var int m_nOwnerBotId; +var array m_TargetingManagers; + +defaultproperties +{ + m_eScalingType=UISCALINGTYPE.UISCALING_FITTALL + m_bVisibleOnLoad=true + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudTarget" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudTeam.uc b/exported/TgClient/Classes/UIHudTeam.uc new file mode 100755 index 00000000..a64e2cc8 --- /dev/null +++ b/exported/TgClient/Classes/UIHudTeam.uc @@ -0,0 +1,319 @@ +class UIHudTeam extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHUDTEAM_COUNT = 5; +const UIHUDTEAM_STATS = 10; +const UIHUDTEAM_LOADOUTSIZE = 5; +const UIHUDTEAM_ITEMSLOTS = 4; +const UIHUDTEAM_STREAK_MIN_STREAK = 5; +const UIHUDTEAM_STREAK_FADE_CEILING = 20; + +enum UIHudTeamDisplayMode +{ + TeamDisplayMode_Top, // 0 + TeamDisplayMode_SidesWithItems, // 1 + TeamDisplayMode_SidesWithCards, // 2 + TeamDisplayMode_KDA, // 3 + TeamDisplayMode_MAX // 4 +}; + +enum UIHudTeamStatsMode +{ + TeamStatsMode_Credits, // 0 + TeamStatsMode_Damage, // 1 + TeamStatsMode_Shielding, // 2 + TeamStatsMode_Healing, // 3 + TeamStatsMode_ObjectiveTime, // 4 + TeamStatsMode_MAX // 5 +}; + +enum UIHudTeamAnimGroup +{ + TeamAnimGroup_Team, // 0 + TeamAnimGroup_Stats, // 1 + TeamAnimGroup_MAX // 2 +}; + +struct native TEAMPLAYER_INFO +{ + var int nRespawn; + var bool bHealth; + var bool bRespawn; + var bool bVisible; + var float fHealth; + var float fRespawn; + var int nUlt; + var bool bSelected; + var init string sIcon; + var float fUltIconScale; + var GFxObject pObj; + var GFxObject pIcon; + var GFxObject pIconDead; + var GFxObject pHealth; + var GFxObject pHealthTip; + var GFxObject pHealthBG; + var float fHealthBarWidth; + var GFxObject pRespawn; + var GFxObject pDeadX; + var GFxObject pUlt; + var GFxObject pUltReady; + var GFxObject pSelected; + var int nStreak; + var float fStreakAnimOffset; + var GFxObject pStreak; + var GFxObject pStreakAdd1; + var GFxObject pStreakAdd2; + var GFxObject pStreakCount; + + structdefaultproperties + { + nRespawn=0 + bHealth=false + bRespawn=false + bVisible=false + fHealth=0.0000000 + fRespawn=0.0000000 + nUlt=0 + bSelected=false + sIcon="" + fUltIconScale=0.0000000 + pObj=none + pIcon=none + pIconDead=none + pHealth=none + pHealthTip=none + pHealthBG=none + fHealthBarWidth=0.0000000 + pRespawn=none + pDeadX=none + pUlt=none + pUltReady=none + pSelected=none + nStreak=0 + fStreakAnimOffset=0.0000000 + pStreak=none + pStreakAdd1=none + pStreakAdd2=none + pStreakCount=none + } +}; + +struct native TEAMPLAYER_INFO_EXTENDED extends TEAMPLAYER_INFO +{ + var bool bItemsVisible; + var bool bCardsVisible; + var UICardDisplayGroup CardDisplayGroup; + var init string sPlayerName; + var GFxObject pPlayerName; + var int nCredits; + var GFxObject pCredits; + var int nKills; + var int nDeaths; + var int nAssists; + var GFxObject pKDA; +}; + +struct native TEAMSTAT_INFO +{ + var GFxObject pObj; + var GFxObject pIcon; + var GFxObject pText; + var GFxObject pTip; + var GFxObject pBar; + var GFxObject pBackground; + var GFxObject pMask; + var init string sIcon; + var float fMaskBaseWidth; + + structdefaultproperties + { + pObj=none + pIcon=none + pText=none + pTip=none + pBar=none + pBackground=none + pMask=none + sIcon="" + fMaskBaseWidth=0.0000000 + } +}; + +var bool m_bShowPlayers; +var string m_sSpectatingText; +var GFxObject m_mcSpectating; +var GFxObject m_mcSpectatingTF; +var GFxObject m_mcPlayers; +var TEAMPLAYER_INFO m_mcPlayerRed[5]; +var TEAMPLAYER_INFO m_mcPlayerBlue[5]; +var GFxObject m_mcTeamBlueName; +var GFxObject m_mcTeamBlueScore; +var GFxObject m_mcTeamRedName; +var GFxObject m_mcTeamRedScore; +var GFxObject m_mcTeamBlueTopBG; +var GFxObject m_mcTeamRedTopBG; +var GFxObject m_mcPlayersSide; +var GFxObject m_mcPlayersSideBlueBG; +var GFxObject m_mcPlayersSideRedBG; +var TEAMPLAYER_INFO_EXTENDED m_mcPlayerSideRed[5]; +var TEAMPLAYER_INFO_EXTENDED m_mcPlayerSideBlue[5]; +var GFxObject m_mcStats; +var GFxObject m_mcStatsTitle; +var TEAMSTAT_INFO m_mcStatsEntry[10]; +var GFxObject m_mcRespawn; +var TEAMPLAYER_INFO m_mcRespawnRed[5]; +var TEAMPLAYER_INFO m_mcRespawnBlue[5]; +var int m_nSpectatorMode; +var int m_nStatsMode; +var float m_fStatsUpdateTimer; + +event HandleAnimState(int nAnimState, optional int nAnimGroup = 0) +{ + local int I, J; + local bool bVisible; + local float fAnimTime; + + fAnimTime = 0.3300000; + switch(nAnimGroup) + { + // End:0x9D0 + case 0: + TransitionTeamTop(nAnimState == 0, fAnimTime); + TransitionTeamSides(nAnimState != 0, fAnimTime); + // End:0x9CD + if(nAnimState != 0) + { + I = 0; + J0x83: + + // End:0x9CD [Loop If] + if(I < 5) + { + J = 0; + J0x9E: + + // End:0x3C2 [Loop If] + if(J < 4) + { + bVisible = (nAnimState == 1) && m_mcPlayerSideBlue[I].CardDisplayGroup.Items[J].DeviceID != 0; + Animate(m_mcPlayerSideBlue[I].CardDisplayGroup.Items[J].Obj, fAnimTime, 2, ((bVisible) ? 100.0000000 : 0.0000000)); + Animate(m_mcPlayerSideBlue[I].CardDisplayGroup.Items[J].Obj, fAnimTime, 7, ((bVisible) ? 1.0000000 : 0.0000000)); + bVisible = (nAnimState == 1) && m_mcPlayerSideRed[I].CardDisplayGroup.Items[J].DeviceID != 0; + Animate(m_mcPlayerSideRed[I].CardDisplayGroup.Items[J].Obj, fAnimTime, 2, ((bVisible) ? 100.0000000 : 0.0000000)); + Animate(m_mcPlayerSideRed[I].CardDisplayGroup.Items[J].Obj, fAnimTime, 7, ((bVisible) ? 1.0000000 : 0.0000000)); + J++; + // [Loop Continue] + goto J0x9E; + } + J = 0; + J0x3CD: + + // End:0x6F3 [Loop If] + if(J < 5) + { + bVisible = (nAnimState == 2) && m_mcPlayerSideBlue[I].CardDisplayGroup.Cards[J].DeviceID != 0; + Animate(m_mcPlayerSideBlue[I].CardDisplayGroup.Cards[J].Obj, fAnimTime, 2, ((bVisible) ? 100.0000000 : 0.0000000)); + Animate(m_mcPlayerSideBlue[I].CardDisplayGroup.Cards[J].Obj, fAnimTime, 7, ((bVisible) ? 1.0000000 : 0.0000000)); + bVisible = (nAnimState == 2) && m_mcPlayerSideRed[I].CardDisplayGroup.Cards[J].DeviceID != 0; + Animate(m_mcPlayerSideRed[I].CardDisplayGroup.Cards[J].Obj, fAnimTime, 2, ((bVisible) ? 100.0000000 : 0.0000000)); + Animate(m_mcPlayerSideRed[I].CardDisplayGroup.Cards[J].Obj, fAnimTime, 7, ((bVisible) ? 1.0000000 : 0.0000000)); + J++; + // [Loop Continue] + goto J0x3CD; + } + Animate(m_mcPlayerSideBlue[I].pCredits, fAnimTime, 2, ((nAnimState == 1) ? 100.0000000 : 0.0000000)); + Animate(m_mcPlayerSideBlue[I].pCredits, fAnimTime, 7, ((nAnimState == 1) ? 1.0000000 : 0.0000000)); + Animate(m_mcPlayerSideRed[I].pCredits, fAnimTime, 2, ((nAnimState == 1) ? 100.0000000 : 0.0000000)); + Animate(m_mcPlayerSideRed[I].pCredits, fAnimTime, 7, ((nAnimState == 1) ? 1.0000000 : 0.0000000)); + Animate(m_mcPlayerSideBlue[I].pKDA, fAnimTime, 2, ((nAnimState == 3) ? 100.0000000 : 0.0000000)); + Animate(m_mcPlayerSideBlue[I].pKDA, fAnimTime, 7, ((nAnimState == 3) ? 1.0000000 : 0.0000000)); + Animate(m_mcPlayerSideRed[I].pKDA, fAnimTime, 2, ((nAnimState == 3) ? 100.0000000 : 0.0000000)); + Animate(m_mcPlayerSideRed[I].pKDA, fAnimTime, 7, ((nAnimState == 3) ? 1.0000000 : 0.0000000)); + I++; + // [Loop Continue] + goto J0x83; + } + } + // End:0x9FD + break; + // End:0x9FA + case 1: + TransitionStats(nAnimState != -1, fAnimTime); + // End:0x9FD + break; + // End:0xFFFF + default: + break; + } + //return; +} + +event TransitionTeamTop(bool bShow, float fAnimTime) +{ + Animate(m_mcPlayers, fAnimTime, 1, m_mcPlayers.m_fOrigY - ((bShow) ? 0.0000000 : 50.0000000)); + Animate(m_mcPlayers, fAnimTime, 2, ((bShow) ? 100.0000000 : 0.0000000)); + Animate(m_mcPlayers, fAnimTime, 7, ((bShow) ? 1.0000000 : 0.0000000)); + Animate(m_mcTeamBlueName, fAnimTime, 0, m_mcTeamBlueName.m_fOrigX + ((bShow) ? 0.0000000 : 0.0000000)); + Animate(m_mcTeamBlueName, fAnimTime, 1, m_mcTeamBlueName.m_fOrigY - ((bShow) ? 0.0000000 : 90.0000000)); + Animate(m_mcTeamRedName, fAnimTime, 0, m_mcTeamRedName.m_fOrigX - ((bShow) ? 0.0000000 : 0.0000000)); + Animate(m_mcTeamRedName, fAnimTime, 1, m_mcTeamRedName.m_fOrigY - ((bShow) ? 0.0000000 : 90.0000000)); + //return; +} + +event TransitionTeamSides(bool bShow, float fAnimTime) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x323 [Loop If] + if(I < 5) + { + // End:0x198 + if(!bShow || m_mcPlayerSideRed[I].bVisible) + { + Animate(m_mcPlayerSideRed[I].pObj, fAnimTime, 0, m_mcPlayerSideRed[I].pObj.m_fOrigX + ((bShow) ? 0.0000000 : 100.0000000)); + Animate(m_mcPlayerSideRed[I].pObj, fAnimTime, 2, ((bShow) ? 100.0000000 : 0.0000000)); + Animate(m_mcPlayerSideRed[I].pObj, fAnimTime, 7, ((bShow) ? 1.0000000 : 0.0000000)); + } + // End:0x315 + if(!bShow || m_mcPlayerSideBlue[I].bVisible) + { + Animate(m_mcPlayerSideBlue[I].pObj, fAnimTime, 0, m_mcPlayerSideBlue[I].pObj.m_fOrigX - ((bShow) ? 0.0000000 : 100.0000000)); + Animate(m_mcPlayerSideBlue[I].pObj, fAnimTime, 2, ((bShow) ? 100.0000000 : 0.0000000)); + Animate(m_mcPlayerSideBlue[I].pObj, fAnimTime, 7, ((bShow) ? 1.0000000 : 0.0000000)); + } + I++; + // [Loop Continue] + goto J0x0B; + } + Animate(m_mcPlayersSideBlueBG, fAnimTime, 0, m_mcPlayersSideBlueBG.m_fOrigX - ((bShow) ? 0.0000000 : 100.0000000)); + Animate(m_mcPlayersSideBlueBG, fAnimTime, 2, ((bShow) ? 100.0000000 : 0.0000000)); + Animate(m_mcPlayersSideBlueBG, fAnimTime, 7, ((bShow) ? 1.0000000 : 0.0000000)); + Animate(m_mcPlayersSideRedBG, fAnimTime, 0, m_mcPlayersSideRedBG.m_fOrigX + ((bShow) ? 0.0000000 : 100.0000000)); + Animate(m_mcPlayersSideRedBG, fAnimTime, 2, ((bShow) ? 100.0000000 : 0.0000000)); + Animate(m_mcPlayersSideRedBG, fAnimTime, 7, ((bShow) ? 1.0000000 : 0.0000000)); + //return; +} + +event TransitionStats(bool bShow, float fAnimTime) +{ + Animate(m_mcStats, fAnimTime, 0, m_mcStats.m_fOrigX - ((bShow) ? 0.0000000 : 100.0000000)); + Animate(m_mcStats, fAnimTime, 2, ((bShow) ? 100.0000000 : 0.0000000)); + Animate(m_mcStats, fAnimTime, 7, ((bShow) ? 1.0000000 : 0.0000000)); + TransitionTeamSidesSizing(bShow, fAnimTime); + //return; +} + +// Export UUIHudTeam::execTransitionTeamSidesSizing(FFrame&, void* const) +native function TransitionTeamSidesSizing(bool bSmall, optional float fAnimTime = 0.2500000); + +defaultproperties +{ + m_eSnappingType=UISNAPPINGTYPE.UISNAPPING_TOP + m_bVisibleOnLoad=true + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudTeam" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudTip.uc b/exported/TgClient/Classes/UIHudTip.uc new file mode 100755 index 00000000..99131e65 --- /dev/null +++ b/exported/TgClient/Classes/UIHudTip.uc @@ -0,0 +1,106 @@ +class UIHudTip extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +var int m_nHudTipId; +var int m_nHudSpecialTipId; +var int m_nWorldTipId; +var float m_fPromptAnimTimer; +var GFxObject m_mcHudTip; +var GFxObject m_mcHudTipIcon; +var GFxObject m_mcHudTipName; +var GFxObject m_mcHudTipDesc; +var GFxObject m_mcHudSpecialTip; +var GFxObject m_mcHudSpecialTipText; +var GFxObject m_mcHudSpecialTipAnimA; +var GFxObject m_mcHudSpecialTipAnimB; +var GFxObject m_mcHudSpecialTipFrame; +var GFxObject m_mcHudSpecialTipPrompt; +var GFxObject m_mcWorldTip; +var GFxObject m_mcWorldTipIcon; +var GFxObject m_mcWorldTipName; +var GFxObject m_mcWorldTipDesc; + +event bool GetScreenCoordinates(Canvas pCanvas, Vector CameraLocation, Vector CameraRotation, Vector ObjectLocation, out Vector ScreenLocation) +{ + local bool bBehind; + local float fClipX, fClipY, fLimitX, fLimitY, fBase, fLineSlope, + fLineConstant; + + local Vector ScreenDirection; + + fBase = 0.0000000; + fClipX = pCanvas.ClipX; + fClipY = pCanvas.ClipY; + fLimitX = fClipX - fBase; + fLimitY = fClipY - fBase; + ScreenLocation = pCanvas.Project(ObjectLocation); + bBehind = (CameraRotation Dot (ObjectLocation - CameraLocation)) <= 0.0000000; + // End:0x1B9 + if(((((ScreenLocation.X > fBase) && ScreenLocation.X < fLimitX) && ScreenLocation.Y > float(0)) && ScreenLocation.Y < fLimitY) && !bBehind) + { + return false; + } + ScreenDirection = pCanvas.Project(CameraLocation + Normal(ObjectLocation - CameraLocation)); + // End:0x25A + if(((fClipX / 2.0000000) - ScreenDirection.X) == float(0)) + { + ScreenDirection.X -= float(1); + } + fLineSlope = ((fClipY / 2.0000000) - ScreenDirection.Y) / ((fClipX / 2.0000000) - ScreenDirection.X); + fLineConstant = ScreenDirection.Y - (fLineSlope * ScreenDirection.X); + // End:0x36B + if(ScreenDirection.Y > (fClipY / 2.0000000)) + { + ScreenLocation.Y = fLimitY; + } + else + { + ScreenLocation.Y = fBase; + } + // End:0x3F4 + if(fLineSlope != float(0)) + { + ScreenLocation.X = (ScreenLocation.Y - fLineConstant) / fLineSlope; + } + else + { + ScreenLocation.X = fClipX / 2.0000000; + } + // End:0x4C3 + if(ScreenLocation.X > fLimitX) + { + ScreenLocation.X = fLimitX; + ScreenLocation.Y = (fLineSlope * ScreenLocation.X) + fLineConstant; + } + else + { + // End:0x562 + if(ScreenLocation.X < fBase) + { + ScreenLocation.X = fBase; + ScreenLocation.Y = (fLineSlope * ScreenLocation.X) + fLineConstant; + } + } + // End:0x5F7 + if(bBehind) + { + ScreenLocation.X = fClipX - ScreenLocation.X; + ScreenLocation.Y = fClipY - ScreenLocation.Y; + } + // End:0x643 + if(ScreenLocation.Y <= fBase) + { + ScreenLocation.Y = 0.0000000; + } + return true; + //return ReturnValue; +} + +defaultproperties +{ + m_bVisibleOnLoad=true + m_bShowCursor=false + m_bCaptureKeys=false + m_bCanShake=true + m_Name="UIHudTip" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudVGS.uc b/exported/TgClient/Classes/UIHudVGS.uc new file mode 100755 index 00000000..1756c2b5 --- /dev/null +++ b/exported/TgClient/Classes/UIHudVGS.uc @@ -0,0 +1,45 @@ +class UIHudVGS extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const VGS_MAP_PC = 1; +const VGS_MAP_CONSOLE = 4; +const VGS_LIST_COUNT = 14; +const VGS_GAMEPAD_COUNT = 6; + +enum VGS_GamepadItem +{ + VGSGP_L, // 0 + VGSGP_R, // 1 + VGSGP_Y, // 2 + VGSGP_X, // 3 + VGSGP_B, // 4 + VGSGP_A, // 5 + VGSGP_MAX // 6 +}; + +var GFxObject m_Label[14]; +var GFxObject m_Keybind[14]; +var GFxObject m_ListItem[14]; +var GFxObject m_GamepadItem[6]; +var GFxObject m_FramePC; +var GFxObject m_FrameConsole; +var UIHudVGSData m_pRootPC; +var UIHudVGSData m_pRootConsole; +var UIHudVGSData m_pCurrent; +var bool m_bIsGamepadSequence; +//var delegate __usc_ForceInput_Delegate__Delegate; + +delegate usc_ForceInput_Delegate() +{ + //return; +} + +// Export UUIHudVGS::execusc_ForceInput(FFrame&, void* const) +native function usc_ForceInput(string Input); + +defaultproperties +{ + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudVGS" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudVGSData.uc b/exported/TgClient/Classes/UIHudVGSData.uc new file mode 100755 index 00000000..24f347c9 --- /dev/null +++ b/exported/TgClient/Classes/UIHudVGSData.uc @@ -0,0 +1,10 @@ +class UIHudVGSData extends Object + native(GameUI); + +var int m_nId; +var int m_nParentId; +var int m_nScopeVal; +var init string m_sLabel; +var init string m_sOutput; +var init string m_sKeybind; +var array m_Children; diff --git a/exported/TgClient/Classes/UIHudVoiceChat.uc b/exported/TgClient/Classes/UIHudVoiceChat.uc new file mode 100755 index 00000000..03ef130d --- /dev/null +++ b/exported/TgClient/Classes/UIHudVoiceChat.uc @@ -0,0 +1,29 @@ +class UIHudVoiceChat extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIVOICECHAT_TEAMPLAYERS = 5; + +var float m_fAlphaSpeaking; +var float m_fAlphaNotSpeaking; +var float m_fAlphaMuted; +var float m_fFadeTime; +var GFxObject m_mcAllyPlayers[5]; +var GFxObject m_mcAllyPlayerLabels[5]; +var GFxObject m_mcAllyPlayerSpeakIcons[5]; +var GFxObject m_mcAllyPlayerIcons[5]; +var GFxObject m_mcEnemyPlayers[5]; +var GFxObject m_mcEnemyPlayerLabels[5]; +var GFxObject m_mcEnemyPlayerSpeakIcons[5]; +var GFxObject m_mcEnemyPlayerIcons[5]; +var string m_sAllyPlayerIcons[5]; +var string m_sEnemyPlayerIcons[5]; +var UniqueNetId m_LocalPlayerNetId; + +defaultproperties +{ + m_fAlphaSpeaking=100.0000000 + m_fFadeTime=0.5000000 + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudVoiceChat" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIHudWaypoint.uc b/exported/TgClient/Classes/UIHudWaypoint.uc new file mode 100755 index 00000000..843cdfc6 --- /dev/null +++ b/exported/TgClient/Classes/UIHudWaypoint.uc @@ -0,0 +1,129 @@ +class UIHudWaypoint extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIHUDWAYPOINT_PROJECTILES = 4; + +struct native WaypointObjective +{ + var GFxObject pClip; + var GFxObject pIcon; + var GFxObject pDist; + var GFxObject pPulse; + var GFxObject pTitle; + var bool bVisible; + + structdefaultproperties + { + pClip=none + pIcon=none + pDist=none + pPulse=none + pTitle=none + bVisible=false + } +}; + +var float m_fClipSize; +var float m_fPushTimer; +var float m_fPulseDelay; +var float m_fPulseTimer; +var array m_Captures; +var WaypointObjective m_Escort; +var WaypointObjective m_Attack; +var WaypointObjective m_Defend; +var WaypointObjective m_Beacon; +var WaypointObjective m_Projectile[4]; +var WaypointObjective m_KillCamYou; +var array m_DominationObjectives; +var Vector m_SnappedWaypointOffset; + +event bool GetScreenCoordinates(Canvas pCanvas, Vector CameraLocation, Vector CameraRotation, Vector ObjectLocation, out Vector ScreenLocation) +{ + local bool bBehind; + local float fClipX, fClipY, fLimitX, fLimitY, fBase, fLineSlope, + fLineConstant; + + local Vector ScreenDirection; + + fClipX = pCanvas.ClipX; + fClipY = pCanvas.ClipY; + fBase = m_fClipSize / float(2); + fLimitX = fClipX - fBase; + fLimitY = fClipY - fBase; + ScreenLocation = pCanvas.Project(ObjectLocation); + bBehind = (CameraRotation Dot (ObjectLocation - CameraLocation)) <= 0.0000000; + // End:0x1C9 + if(((((ScreenLocation.X > fBase) && ScreenLocation.X < fLimitX) && ScreenLocation.Y > m_fClipSize) && ScreenLocation.Y < fLimitY) && !bBehind) + { + return false; + } + ScreenDirection = pCanvas.Project(CameraLocation + Normal(ObjectLocation - CameraLocation)); + // End:0x26A + if(((fClipX / 2.0000000) - ScreenDirection.X) == float(0)) + { + ScreenDirection.X -= float(1); + } + fLineSlope = ((fClipY / 2.0000000) - ScreenDirection.Y) / ((fClipX / 2.0000000) - ScreenDirection.X); + fLineConstant = ScreenDirection.Y - (fLineSlope * ScreenDirection.X); + // End:0x378 + if(ScreenDirection.Y > (fClipY / 2.0000000)) + { + ScreenLocation.Y = fLimitY; + } + // End:0x3DB + if(fLineSlope != float(0)) + { + ScreenLocation.X = (ScreenLocation.Y - fLineConstant) / fLineSlope; + } + else + { + ScreenLocation.X = fClipX / 2.0000000; + } + // End:0x4AA + if(ScreenLocation.X > fLimitX) + { + ScreenLocation.X = fLimitX; + ScreenLocation.Y = (fLineSlope * ScreenLocation.X) + fLineConstant; + } + else + { + // End:0x549 + if(ScreenLocation.X < fBase) + { + ScreenLocation.X = fBase; + ScreenLocation.Y = (fLineSlope * ScreenLocation.X) + fLineConstant; + } + } + // End:0x619 + if(bBehind) + { + // End:0x5AF + if(ScreenLocation.X < (fClipX / float(2))) + { + ScreenLocation.X = fLimitX; + } + else + { + ScreenLocation.X = fBase; + } + ScreenLocation.Y = fClipY - ScreenLocation.Y; + } + // End:0x669 + if(ScreenLocation.Y < fBase) + { + ScreenLocation.Y = fBase; + } + return true; + //return ReturnValue; +} + +defaultproperties +{ + m_fClipSize=180.0000000 + m_fPulseDelay=1.0000000 + m_eScalingType=UISCALINGTYPE.UISCALING_FITTALL + m_bVisibleOnLoad=true + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIHudWaypoint" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIInputPopup.uc b/exported/TgClient/Classes/UIInputPopup.uc new file mode 100755 index 00000000..cfc6b02e --- /dev/null +++ b/exported/TgClient/Classes/UIInputPopup.uc @@ -0,0 +1,11 @@ +class UIInputPopup extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_UIPopupInput' + m_bBlur=true + m_bIsPopup=true + m_bAllowSpectatorClickThru=false + m_Name="UIInputPopup" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIInteractable_Button.uc b/exported/TgClient/Classes/UIInteractable_Button.uc new file mode 100755 index 00000000..56d3a9d6 --- /dev/null +++ b/exported/TgClient/Classes/UIInteractable_Button.uc @@ -0,0 +1,2 @@ +class UIInteractable_Button extends UIComponent_Interactable + native(UIComponent); diff --git a/exported/TgClient/Classes/UIInteractable_Button_ChampUnlock.uc b/exported/TgClient/Classes/UIInteractable_Button_ChampUnlock.uc new file mode 100755 index 00000000..9bc49219 --- /dev/null +++ b/exported/TgClient/Classes/UIInteractable_Button_ChampUnlock.uc @@ -0,0 +1,9 @@ +class UIInteractable_Button_ChampUnlock extends UIInteractable_Button_Price + native(UIComponent); + +defaultproperties +{ + m_sPriceLoadNames[0]="Price0" + m_sPriceLoadNames[1]="Price1" + m_sPriceLoadNames[2]="Price2" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIInteractable_Button_GamepadPrompt.uc b/exported/TgClient/Classes/UIInteractable_Button_GamepadPrompt.uc new file mode 100755 index 00000000..c53aad60 --- /dev/null +++ b/exported/TgClient/Classes/UIInteractable_Button_GamepadPrompt.uc @@ -0,0 +1,5 @@ +class UIInteractable_Button_GamepadPrompt extends UIInteractable_Button + native(UIComponent); + +var protected GFxObject m_mcPrompt; +var protected int m_nOptionCBHandle; diff --git a/exported/TgClient/Classes/UIInteractable_Button_ItemPrice.uc b/exported/TgClient/Classes/UIInteractable_Button_ItemPrice.uc new file mode 100755 index 00000000..03538f13 --- /dev/null +++ b/exported/TgClient/Classes/UIInteractable_Button_ItemPrice.uc @@ -0,0 +1,2 @@ +class UIInteractable_Button_ItemPrice extends UIInteractable_Button_Price + native(UIComponent); diff --git a/exported/TgClient/Classes/UIInteractable_Button_Price.uc b/exported/TgClient/Classes/UIInteractable_Button_Price.uc new file mode 100755 index 00000000..704208fc --- /dev/null +++ b/exported/TgClient/Classes/UIInteractable_Button_Price.uc @@ -0,0 +1,15 @@ +class UIInteractable_Button_Price extends UIInteractable_Button + native(UIComponent); + +const BUTTON_PRICE_NUM_PRICES = 3; + +var protected GFxObject m_mcPrices[3]; +var protected string m_sPriceLoadNames[3]; +var private int m_nPriceIndex; + +defaultproperties +{ + m_sPriceLoadNames[0]="PriceA" + m_sPriceLoadNames[1]="PriceB" + m_sPriceLoadNames[2]="PriceC" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIInteractable_Item.uc b/exported/TgClient/Classes/UIInteractable_Item.uc new file mode 100755 index 00000000..be3eb91d --- /dev/null +++ b/exported/TgClient/Classes/UIInteractable_Item.uc @@ -0,0 +1,21 @@ +class UIInteractable_Item extends UIComponent_Interactable + native(UIComponent); + +enum DisplayOverride +{ + eDO_None, // 0 + eDO_Owned, // 1 + eDO_Unowned, // 2 + eDO_MAX // 3 +}; + +var GFxObject m_mcPrice; +var GFxObject m_mcGlow; +var GFxObject m_mcCTA; +var protected bool m_bShowChampion; + +defaultproperties +{ + m_sLoadName="Talent" + m_sConstructName="Talent" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIInteractable_JsonPanel.uc b/exported/TgClient/Classes/UIInteractable_JsonPanel.uc new file mode 100755 index 00000000..34feba2b --- /dev/null +++ b/exported/TgClient/Classes/UIInteractable_JsonPanel.uc @@ -0,0 +1,9 @@ +class UIInteractable_JsonPanel extends UIComponent_Interactable + native(UIComponent); + +var GFxObject m_mcHighlight; +var GFxObject m_mcImage; +var GFxObject m_mcTitle; +var GFxObject m_mcSubtitle; +var GFxObject m_mcLiveBanner; +var JsonFeatureData m_JsonFeatureData; diff --git a/exported/TgClient/Classes/UIInteractable_JsonPanel_Carousel.uc b/exported/TgClient/Classes/UIInteractable_JsonPanel_Carousel.uc new file mode 100755 index 00000000..becdc77b --- /dev/null +++ b/exported/TgClient/Classes/UIInteractable_JsonPanel_Carousel.uc @@ -0,0 +1,28 @@ +class UIInteractable_JsonPanel_Carousel extends UIInteractable_JsonPanel + native(UIComponent); + +var GFxObject m_mcNavControlsRoot; +var UIInteractable_Button m_mcLeftArrow; +var UIInteractable_Button m_mcRightArrow; +var GFxObject m_mcLeftButtonPrompt; +var GFxObject m_mcRightButtonPrompt; +var GFxObject m_mcImage2; +var bool m_bOnImage2; +var bool m_bPauseAutoRotation; +var int m_nIndex; +var UIInteractable_Button m_mcActivate; +var array m_NavDots; +var float m_fNavDotCenter; +var init array m_CarouselJsonFeatureData; +var float m_fDotPlacementX; +var float m_fDotWidth; +var float m_fDotPadding; +var float m_fAutoRotationTime; +var float m_fAutoRotationDelay; +var name m_GamepadLeftKey; +var name m_GamepadRightKey; + +defaultproperties +{ + m_fAutoRotationDelay=5.0000000 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIInteractable_NavPanel.uc b/exported/TgClient/Classes/UIInteractable_NavPanel.uc new file mode 100755 index 00000000..6e7d33e9 --- /dev/null +++ b/exported/TgClient/Classes/UIInteractable_NavPanel.uc @@ -0,0 +1,7 @@ +class UIInteractable_NavPanel extends UIComponent_Interactable + native(UIComponent); + +var GFxObject m_mcHighlight; +var GFxObject m_mcTitle; +var GFxObject m_mcIcon; +var GFxObject m_mcCTA; diff --git a/exported/TgClient/Classes/UIInteractable_NavPanel_Play.uc b/exported/TgClient/Classes/UIInteractable_NavPanel_Play.uc new file mode 100755 index 00000000..a079d4a1 --- /dev/null +++ b/exported/TgClient/Classes/UIInteractable_NavPanel_Play.uc @@ -0,0 +1,21 @@ +class UIInteractable_NavPanel_Play extends UIInteractable_NavPanel + native(UIComponent); + +var float m_fFlareScaleTime[4]; +var float m_fFlareAlphaTime[5]; +var float m_fFlareScaleTimer[4]; +var float m_fFlareAlphaTimer[5]; +var GFxObject m_mcFlare; + +defaultproperties +{ + m_fFlareScaleTime[0]=3.0000000 + m_fFlareScaleTime[1]=0.5000000 + m_fFlareScaleTime[2]=1.2500000 + m_fFlareScaleTime[3]=0.2083330 + m_fFlareAlphaTime[0]=3.0000000 + m_fFlareAlphaTime[1]=0.0833330 + m_fFlareAlphaTime[2]=0.4166660 + m_fFlareAlphaTime[3]=1.2500000 + m_fFlareAlphaTime[4]=0.2083330 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIInteractable_NavPanel_Quests.uc b/exported/TgClient/Classes/UIInteractable_NavPanel_Quests.uc new file mode 100755 index 00000000..93326386 --- /dev/null +++ b/exported/TgClient/Classes/UIInteractable_NavPanel_Quests.uc @@ -0,0 +1,5 @@ +class UIInteractable_NavPanel_Quests extends UIInteractable_NavPanel + native(UIComponent); + +var GFxObject m_mcTextRoot; +var GFxObject m_mcCountdownTF; diff --git a/exported/TgClient/Classes/UIInteractable_NavPanel_QuestsLocked.uc b/exported/TgClient/Classes/UIInteractable_NavPanel_QuestsLocked.uc new file mode 100755 index 00000000..f03b9328 --- /dev/null +++ b/exported/TgClient/Classes/UIInteractable_NavPanel_QuestsLocked.uc @@ -0,0 +1,4 @@ +class UIInteractable_NavPanel_QuestsLocked extends UIInteractable_NavPanel + native(UIComponent); + +var GFxObject m_mcQuestAccountLevelProgressMask; diff --git a/exported/TgClient/Classes/UIInteractable_NavPanel_Queued.uc b/exported/TgClient/Classes/UIInteractable_NavPanel_Queued.uc new file mode 100755 index 00000000..a754dc8c --- /dev/null +++ b/exported/TgClient/Classes/UIInteractable_NavPanel_Queued.uc @@ -0,0 +1,6 @@ +class UIInteractable_NavPanel_Queued extends UIInteractable_NavPanel + native(UIComponent); + +var GFxObject m_mcSubtitle; +var UIInteractable_Button_GamepadPrompt m_Cancel; +var GFxObject m_mcHighlightCancel; diff --git a/exported/TgClient/Classes/UIItemLarge.uc b/exported/TgClient/Classes/UIItemLarge.uc new file mode 100755 index 00000000..b8498cce --- /dev/null +++ b/exported/TgClient/Classes/UIItemLarge.uc @@ -0,0 +1,8 @@ +class UIItemLarge extends Object + native; + +var GFxObject m_ItemLarge; +var GFxObject m_mcItemOwnedText; +var GFxObject m_mcItemRentedText; +var GFxObject m_mcItemRentedTextLabel; +var GFxObject m_mcItemRentedTextTime; diff --git a/exported/TgClient/Classes/UILandingPanelManager.uc b/exported/TgClient/Classes/UILandingPanelManager.uc new file mode 100755 index 00000000..8407b942 --- /dev/null +++ b/exported/TgClient/Classes/UILandingPanelManager.uc @@ -0,0 +1,50 @@ +class UILandingPanelManager extends PComUIManagerBase + native; + +struct native JsonFeatureData +{ + var init string sId; + var init string sHeader; + var init string sDesc; + var init string sData; + var int nProbability; + var int nType; + var int nXpos; + var int nYpos; + var int nWidth; + var int nHeight; + var bool bIsUsed; + var bool bIsLive; + var Texture2DDynamic Texture; + + structdefaultproperties + { + sId="" + sHeader="" + sDesc="" + sData="" + nProbability=0 + nType=0 + nXpos=0 + nYpos=0 + nWidth=0 + nHeight=0 + bIsUsed=false + bIsLive=false + Texture=none + } +}; + +struct native JsonDiscountData +{ + var int nPackId; + var int nDiscountPct; + + structdefaultproperties + { + nPackId=0 + nDiscountPct=0 + } +}; + +var UIGameMoviePlayer m_pMovie; diff --git a/exported/TgClient/Classes/UILeaderboard.uc b/exported/TgClient/Classes/UILeaderboard.uc new file mode 100755 index 00000000..9b211814 --- /dev/null +++ b/exported/TgClient/Classes/UILeaderboard.uc @@ -0,0 +1,11 @@ +class UILeaderboard extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_UILeaderboard' + m_OptionList[0]=249 + m_nBackground=1 + m_bAllowMultipleOnStack=false + m_Name="UILeaderboard" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UILobbyChat.uc b/exported/TgClient/Classes/UILobbyChat.uc new file mode 100755 index 00000000..367883b7 --- /dev/null +++ b/exported/TgClient/Classes/UILobbyChat.uc @@ -0,0 +1,19 @@ +class UILobbyChat extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UILOBBYCHAT_ARROWS = 2; + +var int m_nDepth; +var int m_nPosition; +var int m_nOpenIdentity; +var string m_sLocalTabName; +var GFxObject m_mcArrow[2]; +var GFxObject m_mcArrowNotify[2]; +var array m_mcTabs; + +defaultproperties +{ + m_sLocalTabName="LocalChatTab" + m_eSnappingType=UISNAPPINGTYPE.UISNAPPING_BOT + m_Name="UILobbyChat" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UILogin.uc b/exported/TgClient/Classes/UILogin.uc new file mode 100755 index 00000000..f5de7370 --- /dev/null +++ b/exported/TgClient/Classes/UILogin.uc @@ -0,0 +1,69 @@ +class UILogin extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +enum UILoginState +{ + UILS_NONE, // 0 + UILS_INPUT, // 1 + UILS_WAITING, // 2 + UILS_LOADING, // 3 + UILS_EULA, // 4 + UILS_CREATE, // 5 + UILS_TRYCREATE, // 6 + UILS_LOGGEDIN, // 7 + UILS_MAX // 8 +}; + +var int m_nScroll; +var byte m_eState; +var bool m_bAnimLogo; +var bool m_bSaveName; +var bool m_bHaveInput; +var float m_fRotation; +var float m_fAnimTimer; +var float m_fLoginTimer; +var float m_fLoadingTimer; +var float m_fTextTimerIn; +var float m_fTextTimerOut; +var GFxObject m_mcFade; +var GFxObject m_mcLogo; +var GFxObject m_mcInput; +var GFxObject m_mcInputName; +var GFxObject m_mcInputPass; +var GFxObject m_mcInputSave; +var GFxObject m_mcInputCaps; +var GFxObject m_mcInputLogin; +var GFxObject m_mcInputMessage; +var GFxObject m_mcQueue; +var GFxObject m_mcVersion; +var GFxObject m_mcLoginMsg; +var GFxObject m_mcCreate; +var GFxObject m_mcCreateError; +var GFxObject m_mcCreateInput; +var GFxObject m_mcCreateSubmit; +var GFxObject m_mcCreateCancel; +var GFxObject m_mcLoading; +var GFxObject m_mcLoadingTF; +var GFxObject m_mcLoadingFrame; +var GFxObject m_mcLoadingAnimA; +var GFxObject m_mcLoadingAnimB; +var GFxObject m_mcEULA; +var GFxObject m_mcEULATF; +var GFxObject m_mcEULATitle; +var GFxObject m_mcEULAAccept; +var GFxObject m_mcEULADecline; +var GFxObject m_mcEULAGamepadBtns[2]; +var GFxObject m_mcConsoleLogin; +var GFxObject m_mcConsoleLoginPrompt; +var GFxObject m_mcConsoleLoginChangeUser; +var GFxObject m_mcConsoleLoginFeedback; +var array m_sEULA; + +defaultproperties +{ + m_bAnimLogo=true + m_OptionList[0]=14 + m_OptionList[1]=4 + m_bBlur=true + m_Name="UILogin" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIMatchInvite.uc b/exported/TgClient/Classes/UIMatchInvite.uc new file mode 100755 index 00000000..48dac966 --- /dev/null +++ b/exported/TgClient/Classes/UIMatchInvite.uc @@ -0,0 +1,67 @@ +class UIMatchInvite extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIMATCHINVITE_PLAYERS = 10; + +var int m_nAccepted; +var bool m_bFailed; +var bool m_bAccepted; +var float m_fTimerWidth; +var float m_fTimeoutTime; +var float m_fTimeoutTimer; +var float m_fFailedTime; +var float m_fFailedTimer; +var float m_fInviteGracePeriod; +var GFxObject m_mcStandard; +var GFxObject m_mcStandardFade; +var GFxObject m_mcStandardBacks; +var GFxObject m_mcStandardTimer; +var GFxObject m_mcStandardTimerBack; +var GFxObject m_mcStandardButton; +var GFxObject m_mcStandardBlocker; +var GFxObject m_mcStandardWaiting; +var GFxObject m_mcStandardJoining; +var GFxObject m_mcStandardSpinner; +var GFxObject m_mcStandardSubtitle; +var GFxObject m_mcStandardFailedTF; +var GFxObject m_mcStandardPrompt; +var GFxObject m_mcStandardPlayer[10]; +var GFxObject m_mcStandardFailed[10]; +var GFxObject m_mcVote; +var GFxObject m_mcVoteFade; +var GFxObject m_mcVoteTimer; +var GFxObject m_mcVoteTimerBack; +var GFxObject m_mcVoteTitle; +var GFxObject m_mcVoteButton[4]; +var GFxObject m_mcVoteBox[4]; +var GFxObject m_mcVoteBoxName[4]; +var GFxObject m_mcVoteBoxGame[4]; +var GFxObject m_mcVoteBoxShadow[4]; +var GFxObject m_mcVoteBlocker; +var GFxObject m_mcVoteWaiting; +var GFxObject m_mcVoteJoining; +var GFxObject m_mcVoteSpinner; +var GFxObject m_mcVoteSubtitle; +var GFxObject m_mcVoteFailedTF; +var GFxObject m_mcVotePlayer[10]; +var GFxObject m_mcVoteFailed[10]; +var TgGFxGroup m_grScene; +var AkBaseSoundObject m_akShown; +var AkBaseSoundObject m_akSelect; +var ForceFeedbackWaveform m_QueuePopWaveform; + +defaultproperties +{ + m_fTimeoutTime=30.0000000 + m_fFailedTime=5.0000000 + m_fInviteGracePeriod=1.0000000 + m_akShown=AkEvent'WW_UI_Default.UI_Lobby_MatchFound_Play' + m_akSelect=AkEvent'WW_UI_Default.UI_Lobby_MatchInvite_PlayerJoin_Play' + m_QueuePopWaveform=ForceFeedbackWaveform'gp_forcefeedback.QueuePopForceFeedback' + m_UISceneClass=Class'TgClient.UIScene_SceneAsPopup' + m_OptionList[0]=1 + m_nBackground=1 + m_bBlur=true + m_bIsPopup=true + m_Name="UIMatchInvite" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIMatchLobby.uc b/exported/TgClient/Classes/UIMatchLobby.uc new file mode 100755 index 00000000..7f9e428a --- /dev/null +++ b/exported/TgClient/Classes/UIMatchLobby.uc @@ -0,0 +1,421 @@ +class UIMatchLobby extends TgGfxScene within GFxMoviePlayer + native(GFxScene) + config(Game); + +const UIMATCHLOBBY_TEAMS = 2; +const UIMATCHLOBBY_PLAYERS = 5; +const UIMATCHLOBBY_MAXPICKS = 2; +const UIMATCHLOBBY_CHAMPIONS = 39; +const UIMATCHLOBBY_CHAMPION_ROWS = 3; +const UIMATCHLOBBY_ROLE_TABS = 5; +const UIMATCHLOBBY_ARCHETYPES = 4; +const UIMATCHLOBBY_ROLETYPES = 4; +const UIMATCHLOBBY_CUSTOMIZES = 8; +const UIMATCHLOBBY_SELECTIONS = 16; +const UIMATCHLOBBY_TIMERSTATE = 4; +const UIMATCHLOBBY_INDEXSTATE = 2; +const UIMATCHLOBBY_BAN_COUNT = 3; +const UIMATCHLOBBY_TEAM_TIPS = 2; + +enum UIMatchLobbyDisplayState +{ + UIMLS_Champions, // 0 + UIMLS_Choose_Champion_Me, // 1 + UIMLS_Chosen_Not_Locked, // 2 + UIMLS_LockIn, // 3 + UIMLS_Customize, // 4 + UIMLS_Banning_Me, // 5 + UIMLS_Banning_Team, // 6 + UIMLS_Banning_Enemy, // 7 + UIMLS_MAX // 8 +}; + +enum UIPLAYERMATCHSTATE +{ + UICPS_NONE, // 0 + UICPS_WAITING, // 1 + UICPS_PICKING, // 2 + UICPS_PICKED, // 3 + UICPS_MAX // 4 +}; + +enum UITRADINGSTATE +{ + UITRS_NONE, // 0 + UITRS_WAITING, // 1 + UITRS_PENDING, // 2 + UITRS_MAX // 3 +}; + +enum UICHAMPIONMATCHSTATE +{ + UICMS_NONE, // 0 + UICMS_LOCKED, // 1 + UICMS_AVAILABLE, // 2 + UICMS_CHOSEN, // 3 + UICMS_BANNED, // 4 + UICMS_MAX // 5 +}; + +struct native UICHAMPIONMATCHDATA +{ + var int nBotId; + var byte eState; + + structdefaultproperties + { + nBotId=0 + eState=0 + } +}; + +struct native UIMatchLobbyPlayerCustomize +{ + var int nBotId; + var int nSkinId; + var int nHeadId; + var int nWeaponDeviceId; + var int nWeaponSkinId; + var int nVoiceId; + var int nEmoteId; + var int nMVPPoseId; + var int nSprayId; + var int nPedestalSkinId; + + structdefaultproperties + { + nBotId=0 + nSkinId=0 + nHeadId=0 + nWeaponDeviceId=0 + nWeaponSkinId=0 + nVoiceId=0 + nEmoteId=0 + nMVPPoseId=0 + nSprayId=0 + nPedestalSkinId=0 + } +}; + +struct native UIPLAYERMATCHDATA +{ + var int nPlayerId; + var int nIndex; + var byte eState; + var bool bLocal; + var bool bRed; + var float fArrowTimer; + var float fShowTimerA; + var float fShowTimerB; + var float fPlayerTimer[4]; + + structdefaultproperties + { + nPlayerId=0 + nIndex=0 + eState=0 + bLocal=false + bRed=false + fArrowTimer=0.0000000 + fShowTimerA=0.0000000 + fShowTimerB=0.0000000 + fPlayerTimer[0]=0.0000000 + fPlayerTimer[1]=0.0000000 + fPlayerTimer[2]=0.0000000 + fPlayerTimer[3]=0.0000000 + } +}; + +struct native UIMatchLobbyChampionDisplayData +{ + var native Pointer ChampionData; + var GFxObject Champion; + var GFxObject ChampionIcon; + var GFxObject ChampionFrame; + var GFxObject ChampionRented; + var GFxObject ChampionRotation; + var GFxObject ChampionRecommended; + var GFxObject ChampionClassIcon; + + structdefaultproperties + { + Champion=none + ChampionIcon=none + ChampionFrame=none + ChampionRented=none + ChampionRotation=none + ChampionRecommended=none + ChampionClassIcon=none + } +}; + +struct native UIMatchLobbyTeam +{ + var GFxObject mcTeam; + var GFxObject mcPlayer[5]; + var GFxObject mcPlayerHighlight[5]; + var GFxObject mcPlayerGlow[5]; + var GFxObject mcPlayerName[5]; + var GFxObject mcPlayerIcon[5]; + var GFxObject mcPlayerFrame[5]; + var GFxObject mcPlayerClass[5]; + var GFxObject mcPlayerClassIcon[5]; + var GFxObject mcPlayerTitle[5]; + var GFxObject mcPlayerTrade[5]; + var GFxObject mcPlayerSelect[5]; + var GFxObject mcPlayerLocked[5]; + var GFxObject mcPlayerArrows[5]; + var GFxObject mcPlayerChampion[5]; + var GFxObject mcPlayerIconAnim[5]; + var GFxObject mcPlayerFrameAnim[5]; + var GFxObject mcPlayerChampionAnim[5]; + var GFxObject mcPlayerSpeakingIcon[5]; + var GFxObject mcPlayerMuteVoice[5]; + var TgGFxGroup grPlayers; + + structdefaultproperties + { + mcTeam=none + mcPlayer[0]=none + mcPlayer[1]=none + mcPlayer[2]=none + mcPlayer[3]=none + mcPlayer[4]=none + mcPlayerHighlight[0]=none + mcPlayerHighlight[1]=none + mcPlayerHighlight[2]=none + mcPlayerHighlight[3]=none + mcPlayerHighlight[4]=none + mcPlayerGlow[0]=none + mcPlayerGlow[1]=none + mcPlayerGlow[2]=none + mcPlayerGlow[3]=none + mcPlayerGlow[4]=none + mcPlayerName[0]=none + mcPlayerName[1]=none + mcPlayerName[2]=none + mcPlayerName[3]=none + mcPlayerName[4]=none + mcPlayerIcon[0]=none + mcPlayerIcon[1]=none + mcPlayerIcon[2]=none + mcPlayerIcon[3]=none + mcPlayerIcon[4]=none + mcPlayerFrame[0]=none + mcPlayerFrame[1]=none + mcPlayerFrame[2]=none + mcPlayerFrame[3]=none + mcPlayerFrame[4]=none + mcPlayerClass[0]=none + mcPlayerClass[1]=none + mcPlayerClass[2]=none + mcPlayerClass[3]=none + mcPlayerClass[4]=none + mcPlayerClassIcon[0]=none + mcPlayerClassIcon[1]=none + mcPlayerClassIcon[2]=none + mcPlayerClassIcon[3]=none + mcPlayerClassIcon[4]=none + mcPlayerTitle[0]=none + mcPlayerTitle[1]=none + mcPlayerTitle[2]=none + mcPlayerTitle[3]=none + mcPlayerTitle[4]=none + mcPlayerTrade[0]=none + mcPlayerTrade[1]=none + mcPlayerTrade[2]=none + mcPlayerTrade[3]=none + mcPlayerTrade[4]=none + mcPlayerSelect[0]=none + mcPlayerSelect[1]=none + mcPlayerSelect[2]=none + mcPlayerSelect[3]=none + mcPlayerSelect[4]=none + mcPlayerLocked[0]=none + mcPlayerLocked[1]=none + mcPlayerLocked[2]=none + mcPlayerLocked[3]=none + mcPlayerLocked[4]=none + mcPlayerArrows[0]=none + mcPlayerArrows[1]=none + mcPlayerArrows[2]=none + mcPlayerArrows[3]=none + mcPlayerArrows[4]=none + mcPlayerChampion[0]=none + mcPlayerChampion[1]=none + mcPlayerChampion[2]=none + mcPlayerChampion[3]=none + mcPlayerChampion[4]=none + mcPlayerIconAnim[0]=none + mcPlayerIconAnim[1]=none + mcPlayerIconAnim[2]=none + mcPlayerIconAnim[3]=none + mcPlayerIconAnim[4]=none + mcPlayerFrameAnim[0]=none + mcPlayerFrameAnim[1]=none + mcPlayerFrameAnim[2]=none + mcPlayerFrameAnim[3]=none + mcPlayerFrameAnim[4]=none + mcPlayerChampionAnim[0]=none + mcPlayerChampionAnim[1]=none + mcPlayerChampionAnim[2]=none + mcPlayerChampionAnim[3]=none + mcPlayerChampionAnim[4]=none + mcPlayerSpeakingIcon[0]=none + mcPlayerSpeakingIcon[1]=none + mcPlayerSpeakingIcon[2]=none + mcPlayerSpeakingIcon[3]=none + mcPlayerSpeakingIcon[4]=none + mcPlayerMuteVoice[0]=none + mcPlayerMuteVoice[1]=none + mcPlayerMuteVoice[2]=none + mcPlayerMuteVoice[3]=none + mcPlayerMuteVoice[4]=none + grPlayers=none + } +}; + +var UIComponent_HoldPrompt m_HoldPrompt; +var UIMatchLobby.UIMatchLobbyDisplayState m_eMatchLobbyDisplayState; +var byte m_bFriendlyArchetypeSelected[4]; +var byte m_bEnemyArchetypeSelected[4]; +var byte m_eChampionFilterState; +var UIMatchLobby.UITRADINGSTATE m_eTradingState; +var int m_nPickRed[2]; +var int m_nPickBlue[2]; +var int m_nMatchTimer; +var int m_bCanTrade[5]; +var int m_nBanSelection; +var array m_nBannedChampionsAuto; +var array m_nBannedChampionsBlue; +var array m_nBannedChampionsRed; +var bool m_bFirstPick; +var bool m_bFirstShow; +var bool m_bCustomize; +var bool m_bCustomizeHide; +var bool m_bSelection; +var bool m_bShowTeams; +var bool m_bNextTeams; +var bool m_bShowChampions; +var bool m_bChoseClass; +var float m_fPickAnimTimer; +var float m_fChampOrigScaleX; +var float m_fChampOrigScaleY; +var float m_fRedTitleTimer[4]; +var float m_fRedSubtitleTimer[4]; +var float m_fBlueTitleTimer[4]; +var float m_fBlueSubtitleTimer[4]; +var float m_fChampionsTimer[4]; +var string m_sRedPickTitle[2]; +var string m_sBluePickTitle[2]; +var string m_sRedPickSubtitle; +var string m_sBluePickSubtitle; +var array m_vPlayerData; +var array m_vChampionData; +var UIMatchLobbyPlayerCustomize m_AllyCustomize[5]; +var UIInteractable_Button m_ChampionCustomizeButton; +var UIPopup_MatchLobbyCustomizeNew m_Customize; +var GFxObject m_mcFooter; +var GFxObject m_mcHeader; +var GFxObject m_mcHeaderTime; +var GFxObject m_mcHeaderTitle; +var GFxObject m_mcHeaderTeamCompBlue[4]; +var GFxObject m_mcHeaderTeamCompBlueWarning[4]; +var GFxObject m_mcHeaderTeamCompBlueClassInactive[4]; +var GFxObject m_mcHeaderTeamCompBlueClassActive[4]; +var GFxObject m_mcHeaderTeamCompRed[4]; +var GFxObject m_mcHeaderTeamCompRedClassInactive[4]; +var GFxObject m_mcHeaderTeamCompRedClassActive[4]; +var GFxObject m_mcHeaderTeamTip[2]; +var GFxObject m_mcHeaderTeamTipTF[2]; +var GFxObject m_mcHeaderTeamTipClassIcon[2]; +var GFxObject m_mcHeaderTeamTipClassIconFlash[2]; +var int m_nTeamTipArchetypePriorities[4]; +var GFxObject m_mcPickRed; +var GFxObject m_mcPickRedTitle[2]; +var GFxObject m_mcPickRedSubtitle; +var GFxObject m_mcPickBlue; +var GFxObject m_mcPickBlueTitle[2]; +var GFxObject m_mcPickBlueSubtitle; +var GFxObject m_mcTrade; +var GFxObject m_mcTradeTitle; +var GFxObject m_mcTradeCancel; +var GFxObject m_mcTradeAccept; +var GFxObject m_mcTradeBlocker; +var GFxObject m_mcTradeWaiting; +var GFxObject m_mcTradeIconA; +var GFxObject m_mcTradeIconB; +var GFxObject m_mcTradeFrameA; +var GFxObject m_mcTradeFrameB; +var GFxObject m_mcTradePlayerA; +var GFxObject m_mcTradePlayerB; +var TgGFxGroup m_grTradePopup; +var UIMatchLobbyTeam m_Team[2]; +var UIMatchLobbyTeam m_TeamNew[2]; +var GFxObject m_mcChampionName; +var GFxObject m_mcChampionTitle; +var GFxObject m_mcChampionClassIcon; +var GFxObject m_mcLockIn; +var GFxObject m_mcBack; +var GFxObject m_mcChampions; +var GFxObject m_mcChampionsNew; +var GFxObject m_mcChampionsPickNew; +var GFxObject m_mcChampionsGroupNew; +var GFxObject m_mcChampionsPickAnimANew; +var GFxObject m_mcChampionsPickAnimBNew; +var GFxObject m_mcChampionsDimmer; +var TgGFxGroup m_grChampion; +var GFxObject m_mcTeamBlueNew; +var GFxObject m_mcTeamRedNew; +var GFxObject m_mcBanRedTF; +var GFxObject m_mcBanBlueTF; +var GFxObject m_mcRedBans[3]; +var GFxObject m_mcRedBansPortrait[3]; +var GFxObject m_mcRedBansFrame[3]; +var GFxObject m_mcRedBansIcon[3]; +var GFxObject m_mcBlueBans[3]; +var GFxObject m_mcBlueBansPortrait[3]; +var GFxObject m_mcBlueBansFrame[3]; +var GFxObject m_mcBlueBansIcon[3]; +var GFxObject m_mcMap; +var GFxObject m_mcMapName; +var GFxObject m_mcMapMode; +var GFxObject m_mcMapIcon; +var GFxObject m_mcRoleTabs[5]; +var GFxObject m_mcRoleTabsClassIcon[5]; +var GFxObject m_mcRoleTabsSelected[5]; +var GFxObject m_mcRoleTabsTF[5]; +var GFxObject m_mcRoleTabsWarning[5]; +var GFxObject m_mcRoleTabsBumper[2]; +var UIMatchLobbyChampionDisplayData m_ChampionDisplays[39]; +var int m_nArchetypePedestalSkinIds[4]; +var AkBaseSoundObject m_akSelect; +var AkBaseSoundObject m_akRollover; +var AkBaseSoundObject m_akTabChange; +var AkBaseSoundObject m_akCountdown; +var AkBaseSoundObject m_akLockInSelf; +var AkBaseSoundObject m_akLockInEnemy; +var AkBaseSoundObject m_akLockInFriend; +var int m_PreviousLobbyState; +var int m_CurrentLobbyState; +var config array m_nTencentRecommendedChampions; + +defaultproperties +{ + m_nBanSelection=-1 + m_nTeamTipArchetypePriorities[1]=2 + m_nTeamTipArchetypePriorities[2]=1 + m_nTeamTipArchetypePriorities[3]=3 + m_akSelect=AkEvent'WW_UI_Default.UI_Lobby_MatchSetUp_CharSelect_Play' + m_akRollover=AkEvent'WW_UI_Default.UI_Lobby_MatchSetUp_CheckBox_Play' + m_akTabChange=AkEvent'WW_UI_Default.UI_Lobby_MatchSetUp_Customize_SwitchTabs_Play' + m_akCountdown=AkEvent'WW_UI_Default.UI_Lobby_MatchSetUp_Countdown_Play' + m_akLockInSelf=AkEvent'WW_UI_Default.UI_Lobby_MatchSetUp_LockIn_Self_Play' + m_akLockInEnemy=AkEvent'WW_UI_Default.UI_Lobby_MatchSetUp_LockIn_EnemyTeam_Play' + m_akLockInFriend=AkEvent'WW_UI_Default.UI_Lobby_MatchSetUp_LockIn_Team_Play' + m_nTencentRecommendedChampions[0]=2249 + m_nTencentRecommendedChampions[1]=2277 + m_nTencentRecommendedChampions[2]=2071 + m_UISceneClass=Class'TgClient.UIScene_UIMatchLobby' + m_Name="UIMatchLobby" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIMenuManager.uc b/exported/TgClient/Classes/UIMenuManager.uc new file mode 100755 index 00000000..d7a0bee1 --- /dev/null +++ b/exported/TgClient/Classes/UIMenuManager.uc @@ -0,0 +1,12 @@ +class UIMenuManager extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +var UIComponent_PopupManager m_pPopupManager; + +defaultproperties +{ + m_bVisibleOnLoad=true + m_bResize=false + m_bAlwaysKeepOpen=true + m_Name="UIMenuManager" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIMoviePlayer.uc b/exported/TgClient/Classes/UIMoviePlayer.uc new file mode 100755 index 00000000..219ad35c --- /dev/null +++ b/exported/TgClient/Classes/UIMoviePlayer.uc @@ -0,0 +1,177 @@ +class UIMoviePlayer extends GFxMoviePlayer + native + config(UI); + +var int m_nLastTimerIndex; +var bool m_bInitialized; +var bool m_bInTransition; +var bool m_bResizeForSafeZones; +var GFxObject m_mcRoot; +var GFxObject m_mcGlobal; +var TgDataHandler m_DataHandler; +var TgTimerManager m_TimerManager; +var Class m_DataHandlerClass; +var native Pointer m_pTgCallbackDevice; +var native Pointer m_pKeybindLookup; +var OnlineSubsystem OnlineSub; +var OnlineGameInterface GameInterface; +var OnlineVoiceInterface VoiceInterface; +var OnlinePlayerInterface PlayerInterface; +var OnlineContentInterface ContentInterface; +var OnlinePlayerInterfaceEx PlayerInterfaceEx; +var OnlineMarketplaceInterface MarketplaceInterface; +//var delegate __DelegateOnMarshalEvent__Delegate; + +delegate DelegateOnMarshalEvent(Pointer pMarEvent) +{ + //return; +} + +// Export UUIMoviePlayer::execGetHUD(FFrame&, void* const) +native function TgClientHUD GetHUD(); + +// Export UUIMoviePlayer::execGetPlayerOwner(FFrame&, void* const) +native function TgPlayerController GetPlayerOwner(); + +// Export UUIMoviePlayer::execOnClose(FFrame&, void* const) +native event OnClose(); + +// Export UUIMoviePlayer::execPostInit(FFrame&, void* const) +native function PostInit(); + +// Export UUIMoviePlayer::execInitializeDataHandler(FFrame&, void* const) +native function InitializeDataHandler(); + +// Export UUIMoviePlayer::execNativeTick(FFrame&, void* const) +native function NativeTick(float DeltaTime); + +// Export UUIMoviePlayer::execRegisterMarshalCallback(FFrame&, void* const) +native function bool RegisterMarshalCallback(); + +// Export UUIMoviePlayer::execUnregisterMarshalCallback(FFrame&, void* const) +native function UnregisterMarshalCallback(); + +// Export UUIMoviePlayer::execOnMarshalEvent(FFrame&, void* const) +native function OnMarshalEvent(Pointer pMarEvent); + +// Export UUIMoviePlayer::execUpdateViewportForSafeAreas(FFrame&, void* const) +native function UpdateViewportForSafeAreas(); + +// Export UUIMoviePlayer::execGetTranslatedKeyBind(FFrame&, void* const) +native function string GetTranslatedKeyBind(string Command, optional int nAlternate = 0, optional bool bLocalizeKB = true, optional bool bLocalizeMouse = true, optional bool bLocalizeGamepad = true); + +// Export UUIMoviePlayer::execRegisterEngineCallbacks(FFrame&, void* const) +native function RegisterEngineCallbacks(); + +// Export UUIMoviePlayer::execUnregisterEngineCallbacks(FFrame&, void* const) +native function UnregisterEngineCallbacks(); + +// Export UUIMoviePlayer::execQuitGame(FFrame&, void* const) +native function QuitGame(); + +// Export UUIMoviePlayer::execusc_Data_Handler_Created(FFrame&, void* const) +native function usc_Data_Handler_Created(); + +// Export UUIMoviePlayer::execusc_Console_Command(FFrame&, void* const) +native function usc_Console_Command(string Cmd); + +// Export UUIMoviePlayer::execusc_toggle_cursor(FFrame&, void* const) +native function usc_toggle_cursor(bool bShow); + +// Export UUIMoviePlayer::execusc_toggle_key_capture(FFrame&, void* const) +native function usc_toggle_key_capture(bool bCapture); + +// Export UUIMoviePlayer::execShowTransitionScene(FFrame&, void* const) +native exec function ShowTransitionScene(bool bShow); + +// Export UUIMoviePlayer::execusc_TranslateMsgId(FFrame&, void* const) +native exec function string usc_TranslateMsgId(int nId); + +// Export UUIMoviePlayer::execusc_TranslateMsg(FFrame&, void* const) +native exec function string usc_TranslateMsg(string Identifier, string SectionName); + +// Export UUIMoviePlayer::execusc_IME_SetEnabled(FFrame&, void* const) +native exec function bool usc_IME_SetEnabled(bool bEnabled); + +// Export UUIMoviePlayer::execusc_IME_Exists(FFrame&, void* const) +native exec function bool usc_IME_Exists(); + +event Tick(float DeltaTime) +{ + NativeTick(DeltaTime); + //return; +} + +event Init(optional LocalPlayer LocPlay) +{ + super.Init(LocPlay); + RegisterMarshalCallback(); + InitOSSRef(); + // End:0x3F + if(bMovieIsOpen) + { + PostInit(); + } + //return; +} + +function InitOSSRef() +{ + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x128 + if(OnlineSub != none) + { + GameInterface = OnlineSub.GameInterface; + VoiceInterface = OnlineSub.VoiceInterface; + PlayerInterface = OnlineSub.PlayerInterface; + ContentInterface = OnlineSub.ContentInterface; + PlayerInterfaceEx = OnlineSub.PlayerInterfaceEx; + MarketplaceInterface = OnlineSub.MarketplaceInterface; + } + //return; +} + +exec function string usc_ClipboardPaste() +{ + local TgPlayerController pPC; + + pPC = GetPlayerOwner(); + // End:0x43 + if(pPC != none) + { + return pPC.PasteFromClipboard(); + } + return ""; + //return ReturnValue; +} + +exec function usc_ClipboardCopy(string Str) +{ + local TgPlayerController pPC; + + pPC = GetPlayerOwner(); + // End:0x4B + if(pPC != none) + { + pPC.CopyToClipboard(Str); + } + //return; +} + +event SetMarketplaceVisibility(bool Visible) +{ + // End:0x4A + if(NotEqual_InterfaceInterface(MarketplaceInterface, OnlineMarketplaceInterface(none))) + { + MarketplaceInterface.SetMarketplaceVisibility(Visible); + } + //return; +} + +defaultproperties +{ + m_nLastTimerIndex=1 + m_bResizeForSafeZones=true + m_DataHandlerClass=Class'TgClient.TgDataHandler' + bAutoPlay=true +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UINotificationCenter.uc b/exported/TgClient/Classes/UINotificationCenter.uc new file mode 100755 index 00000000..c6ebbe05 --- /dev/null +++ b/exported/TgClient/Classes/UINotificationCenter.uc @@ -0,0 +1,144 @@ +class UINotificationCenter extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const MAX_TABS = 8; +const MAX_ENTRIES = 6; +const MAX_COUPON_ENTRIES = 4; + +struct native Tab +{ + var GFxObject mcRoot; + var GFxObject mcTf; + var GFxObject mcSelected; + var GFxObject mcNewIcon; + var GFxObject mcNewCountTf; + var init string sUrl; + var int nCTACount; + + structdefaultproperties + { + mcRoot=none + mcTf=none + mcSelected=none + mcNewIcon=none + mcNewCountTf=none + sUrl="" + nCTACount=0 + } +}; + +struct native Entry +{ + var GFxObject mcRoot; + var GFxObject mcRootButton; + var GFxObject mcTitleTf; + var GFxObject mcDescTf; + var GFxObject mcTimestampTf; + var GFxObject mcCategoryTf; + var GFxObject mcClose; + var GFxObject mcButton; + var GFxObject mcNewIcon; + var GFxObject mcNewTf; + var GFxObject mcItemImageStack; + var GFxObject mcCardImageStack; + var GFxObject mcChestImageStack; + var GFxObject mcTexture; + + structdefaultproperties + { + mcRoot=none + mcRootButton=none + mcTitleTf=none + mcDescTf=none + mcTimestampTf=none + mcCategoryTf=none + mcClose=none + mcButton=none + mcNewIcon=none + mcNewTf=none + mcItemImageStack=none + mcCardImageStack=none + mcChestImageStack=none + mcTexture=none + } +}; + +struct native CouponEntry +{ + var GFxObject mcRoot; + var GFxObject mcRootButton; + var GFxObject mcTitle; + var GFxObject mcExpiration; + var GFxObject mcCostCurrent; + var GFxObject mcCostCurrentIcon; + var GFxObject mcCostPrev; + var GFxObject mcCostPrevIcon; + var GFxObject mcCostPrevStrike; + var GFxObject mcCTA; + var GFxObject mcCTAText; + var GFxObject mcButton; + var GFxObject mcItemImageStack; + var GFxObject mcCardImageStack; + var GFxObject mcChestImageStack; + var GFxObject mcTexture; + + structdefaultproperties + { + mcRoot=none + mcRootButton=none + mcTitle=none + mcExpiration=none + mcCostCurrent=none + mcCostCurrentIcon=none + mcCostPrev=none + mcCostPrevIcon=none + mcCostPrevStrike=none + mcCTA=none + mcCTAText=none + mcButton=none + mcItemImageStack=none + mcCardImageStack=none + mcChestImageStack=none + mcTexture=none + } +}; + +var array m_Tabs; +var array m_TabLabels; +var array m_Entries; +var array m_CouponEntries; +var int m_nCurrentTab; +var int m_nLastTab; +var int m_nScrollPos; +var GFxObject m_mcCloseButton; +var GFxObject m_mcClearButton; +var GFxObject m_mcRoot; +var GFxObject m_mcNotificationCenterPanel; +var GFxObject m_mcWebPanel; +var GFxObject m_mcScrollBar; +var GFxObject m_mcCouponPanel; +var GFxObject m_mcCouponTitle; +var GFxObject m_mcCouponScrollbar; +var TgData_Notifications.NotificationType m_eFilterByType; +var UIComponent_Dropdown m_FilterDropdown; +var init native array m_DropdownOptions; +var UIComponent_DailyRewards m_DailyRewards; +var TgGFxGroup m_grpTabs; +var TgGFxGroup m_grpEntries; +var TgGFxGroup m_grpCouponEntries; +var bool m_bInCouponPurchase; + +defaultproperties +{ + m_TabLabels[0]="m_lsTabNotifications" + m_TabLabels[1]="m_lsTabDailyRewards" + m_TabLabels[2]="m_lsTabCoupons" + m_nLastTab=-1 + m_UISceneClass=Class'TgClient.UIScene_UINotificationCenter' + m_OptionList[0]=14 + m_OptionList[1]=4 + m_bBlur=true + m_bIsPopup=true + m_bAllowMultipleOnStack=false + m_Name="UINotificationCenter" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UINotificationCenterJsonManager.uc b/exported/TgClient/Classes/UINotificationCenterJsonManager.uc new file mode 100755 index 00000000..ef370ce0 --- /dev/null +++ b/exported/TgClient/Classes/UINotificationCenterJsonManager.uc @@ -0,0 +1,17 @@ +class UINotificationCenterJsonManager extends PComUIManagerBase + native; + +struct native TabInfo +{ + var init string sTitle; + var init string sUrl; + + structdefaultproperties + { + sTitle="" + sUrl="" + } +}; + +var array m_WebPanelUrls; +var UIGameMoviePlayer m_pMovie; diff --git a/exported/TgClient/Classes/UIObject.uc b/exported/TgClient/Classes/UIObject.uc new file mode 100755 index 00000000..4c7fdb66 --- /dev/null +++ b/exported/TgClient/Classes/UIObject.uc @@ -0,0 +1,2 @@ +class UIObject extends GFxObject within GFxMoviePlayer + native; diff --git a/exported/TgClient/Classes/UIPlay.uc b/exported/TgClient/Classes/UIPlay.uc new file mode 100755 index 00000000..5ab9d4f2 --- /dev/null +++ b/exported/TgClient/Classes/UIPlay.uc @@ -0,0 +1,87 @@ +class UIPlay extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIPLAY_MAX_MODE_QUEUES = 10; +const UIPLAY_EXTRAS = 32; +const UIPLAY_BUTTONS = 6; +const UIPLAY_WIP_REQUIRED_LEVEL = 15; +const UIPLAY_PVE_REQUIRED_LEVEL = 15; +const QUEST_PANEL_PROGRESS_BAR_EMPTY_FRAME = 43; +const QUEST_PANEL_PROGRESS_BAR_FULL_FRAME = 315; +const UIPLAY_DEFAULT_NUM_PANELS = 6; +const UIPLAY_MAIN_PLAY_PANELS = 5; +const UIPLAY_MULTIQUEUE_PLAY_PANELS = 5; +const UIPLAY_TRAINING_PLAY_PANELS = 5; +const UIPLAY_NUM_FWOTD_ICONS = 3; +const UIPLAY_VISIBLE_REGION_ENTRIES = 6; +const UIPLAY_MAX_REGION_ENTRIES = 12; + +enum UIPLAYSTATE +{ + UIPS_NONE, // 0 + UIPS_CASUAL, // 1 + UIPS_COMPETITIVE, // 2 + UIPS_TRAINING, // 3 + UIPS_MAX // 4 +}; + +enum GameModeType +{ + GMT_SIEGE, // 0 + GMT_PAYLOAD, // 1 + GMT_WIP, // 2 + GMT_PVE, // 3 + GMT_MAX // 4 +}; + +var bool m_bPopup; +var array m_nExtras; +var int m_nWOTDCompleted; +var int m_bWOTDComplete[10]; +var GFxObject m_mcHiRezPanel; +var GFxObject m_mcBack; +var GFxObject m_mcIcon; +var GFxObject m_mcTitle; +var GFxObject m_mcHeader; +var GFxObject m_mcSubtitle; +var GFxObject m_mcPopup; +var GFxObject m_mcPopupCancel; +var GFxObject m_mcPopupCancelTitle; +var GFxObject m_mcPopupExtra[32]; +var GFxObject m_mcPopupExtraTitle[32]; +var TgGFxGroup m_grPopup; +var GFxObject m_mcCompetitive; +var GFxObject m_mcCompetitiveCancel; +var GFxObject m_mcCompetitiveCancelTitle; +var GFxObject m_mcCompetitiveTitle; +var GFxObject m_mcCompetitiveSubtitle; +var GFxObject m_mcDetails; +var GFxObject m_mcQueueButton; +var GFxObject m_mcMultiqueueDesc; +var GFxObject m_mcModesSelected; +var GFxObject m_mcMultiqueueCursor; +var GFxObject m_mcMultiqueueUpDownIndicator; +var GFxObject m_mcControllerPrompt; +var GFxObject m_mcFWOTD; +var GFxObject m_mcFWOTDGoldMaxTF; +var GFxObject m_mcFWOTDIcons[3]; +var UIComponent_Dropdown m_RegionDropdown; +var GFxObject m_DropButton; +var GFxObject m_mcInputListener; +var GFxObject m_mcWeeklyQuests; +var int m_nQuestIndices[10]; +var const int m_nNumDisplayableQuests; + +defaultproperties +{ + m_nNumDisplayableQuests=5 + m_UISceneClass=Class'TgClient.UIScene_UIPlay' + m_OptionList[0]=245 + m_OptionList[1]=3 + m_OptionList[2]=0 + m_nBackground=1 + m_bBlur=true + m_bAlwaysTick=true + m_bIsOnline=true + m_Name="UIPlay" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIPopup.uc b/exported/TgClient/Classes/UIPopup.uc new file mode 100755 index 00000000..980c2004 --- /dev/null +++ b/exported/TgClient/Classes/UIPopup.uc @@ -0,0 +1,15 @@ +class UIPopup extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_UIPopupGeneric' + m_OptionList[0]=14 + m_OptionList[1]=4 + m_nBackground=1 + m_bBlur=true + m_bIsPopup=true + m_bAlwaysTick=true + m_bAllowSpectatorClickThru=false + m_Name="UIPopup" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIPopupCrafting.uc b/exported/TgClient/Classes/UIPopupCrafting.uc new file mode 100755 index 00000000..26f7f39f --- /dev/null +++ b/exported/TgClient/Classes/UIPopupCrafting.uc @@ -0,0 +1,10 @@ +class UIPopupCrafting extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_UIPopupCrafting' + m_nBackground=1 + m_bIsPopup=true + m_Name="UIPopupCrafting" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIPopupPartyManager.uc b/exported/TgClient/Classes/UIPopupPartyManager.uc new file mode 100755 index 00000000..962927a0 --- /dev/null +++ b/exported/TgClient/Classes/UIPopupPartyManager.uc @@ -0,0 +1,12 @@ +class UIPopupPartyManager extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_UIPopupPartyManager' + m_OptionList[0]=14 + m_OptionList[1]=4 + m_OptionList[2]=0 + m_bIsPopup=true + m_Name="UIPopupPartyManager" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIPopup_MatchLobbyCustomize.uc b/exported/TgClient/Classes/UIPopup_MatchLobbyCustomize.uc new file mode 100755 index 00000000..b2be64d6 --- /dev/null +++ b/exported/TgClient/Classes/UIPopup_MatchLobbyCustomize.uc @@ -0,0 +1,22 @@ +class UIPopup_MatchLobbyCustomize extends UIComponent_Popup + native(UIComponent); + +var float m_fStateTimerOut; +var float m_fStateTimerIn; +var int m_nPendingFocus; +var GFxObject m_mcTitle; +var GFxObject m_mcSubtitle; +var GFxObject m_mcClassIcon; +var GFxObject m_mcAutoBuyPrompt; +var UIComponent_Toggle m_AutoBuyToggle; +var UIInteractable_Button m_BackButton; +var UIInteractable_Button m_PrevButton; +var UIInteractable_Button m_NextButton; +var UIComponent_List m_ItemList; +var UIData_LobbySlotItem m_pPurchase; +var UIData_LobbySlotItem.UIChampionCustomizeState m_eState; + +defaultproperties +{ + m_sLoadName="Champion" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIPopup_MatchLobbyCustomizeNew.uc b/exported/TgClient/Classes/UIPopup_MatchLobbyCustomizeNew.uc new file mode 100755 index 00000000..99b98eb2 --- /dev/null +++ b/exported/TgClient/Classes/UIPopup_MatchLobbyCustomizeNew.uc @@ -0,0 +1,26 @@ +class UIPopup_MatchLobbyCustomizeNew extends UIComponent_Popup + native(UIComponent); + +var float m_fStateTimerOut; +var float m_fStateTimerIn; +var bool m_bDimmedItemSlots; +var GFxObject m_mcChampionItemSelect; +var UIInteractable_Button m_BackButton; +var UIInteractable_Button m_CollectionsButton; +var UIInteractable_Button m_PreviousButton; +var UIInteractable_Button m_NextButton; +var GFxObject m_mcCollectionsButtonSelected; +var GFxObject m_mcNoCollectionsTF; +var TgGFxGroup m_grEquipSlots; +var UIComponent_List m_EquipSlotList; +var UIComponent_List m_ItemList; +var UIData_LobbySlotItem m_pPurchase; +var GFxObject m_mcAutoBuyPrompt; +var UIComponent_Toggle m_AutoBuyToggle; +var UIData_LobbySlotItem.UIChampionCustomizeState m_eState; +var UIData_LobbySlotItem.UIChampionCustomizeState m_eSelectedSlot; + +defaultproperties +{ + m_sLoadName="ChampionNew" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIProfile.uc b/exported/TgClient/Classes/UIProfile.uc new file mode 100755 index 00000000..47009064 --- /dev/null +++ b/exported/TgClient/Classes/UIProfile.uc @@ -0,0 +1,246 @@ +class UIProfile extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIPROFILE_AWARD_ENTRIES = 8; +const UIPROFILE_AWARD_ROWS = 4; +const UIPROFILE_AWARD_COLS = 2; +const UIPROFILE_AWARD_GOALS = 10; +const UIPROFILE_COLLECTIONS = 4; +const UIPROFILE_HEADER_COUNT = 6; +const UIPROFILE_PLAYER_COUNT = 5; +const UIPROFILE_HISTORY_DATA = 7; +const UIPROFILE_HISTORY_ROWS = 8; +const UIPROFILE_CHAMPION_DATA = 5; +const UIPROFILE_CHAMPION_ROWS = 8; +const UIPROFILE_DETAILS_COUNT = 12; +const UIPROFILE_ACCOUNTBOOSTTOOLTIP_COUNT = 4; +const UIPROFILE_ANNOUNCERPACK_SLOT_COUNT = 10; +const UIPROFILE_ANNOUNCERPACK_SLOTS_PER_ROW = 2; +const UIPROFILE_ANNOUNCERPACK_CONSOLE_PROMPT_COUNT = 2; + +enum PROFILESTATE +{ + EPS_OVERVIEW, // 0 + EPS_CHAMPIONS, // 1 + EPS_TITLES, // 2 + EPS_ANNOUNCERPACKS, // 3 + EPS_AWARDS, // 4 + EPS_HISTORY, // 5 + EPS_MAX // 6 +}; + +enum EHistoryResult +{ + EHR_WIN, // 0 + EHR_LOSS, // 1 + EHR_LEFT, // 2 + EHR_MAX // 3 +}; + +struct native UIGoalData +{ + var int nDate; + var int nGoal; + var int nValue; + var int nProgress; + var int nDisplayId; + var int nGoalProgress; + var bool bCompleted; + var init string sDate; + var init string sDesc; + var init string sTier; + var init string sTitle; + var init string sSource; + + structdefaultproperties + { + nDate=0 + nGoal=0 + nValue=0 + nProgress=0 + nDisplayId=0 + nGoalProgress=0 + bCompleted=false + sDate="" + sDesc="" + sTier="" + sTitle="" + sSource="" + } +}; + +struct native UIAwardData +{ + var int nType; + var int nActivity; + var int nGoalCount; + var int nGoalGroup; + var UIGoalData Goals[10]; + + structdefaultproperties + { + nType=0 + nActivity=0 + nGoalCount=0 + nGoalGroup=0 + Goals[0]=(nDate=0,nGoal=0,nValue=0,nProgress=0,nDisplayId=0,nGoalProgress=0,bCompleted=false,sDate="",sDesc="",sTier="",sTitle="",sSource="") + Goals[1]=(nDate=0,nGoal=0,nValue=0,nProgress=0,nDisplayId=0,nGoalProgress=0,bCompleted=false,sDate="",sDesc="",sTier="",sTitle="",sSource="") + Goals[2]=(nDate=0,nGoal=0,nValue=0,nProgress=0,nDisplayId=0,nGoalProgress=0,bCompleted=false,sDate="",sDesc="",sTier="",sTitle="",sSource="") + Goals[3]=(nDate=0,nGoal=0,nValue=0,nProgress=0,nDisplayId=0,nGoalProgress=0,bCompleted=false,sDate="",sDesc="",sTier="",sTitle="",sSource="") + Goals[4]=(nDate=0,nGoal=0,nValue=0,nProgress=0,nDisplayId=0,nGoalProgress=0,bCompleted=false,sDate="",sDesc="",sTier="",sTitle="",sSource="") + Goals[5]=(nDate=0,nGoal=0,nValue=0,nProgress=0,nDisplayId=0,nGoalProgress=0,bCompleted=false,sDate="",sDesc="",sTier="",sTitle="",sSource="") + Goals[6]=(nDate=0,nGoal=0,nValue=0,nProgress=0,nDisplayId=0,nGoalProgress=0,bCompleted=false,sDate="",sDesc="",sTier="",sTitle="",sSource="") + Goals[7]=(nDate=0,nGoal=0,nValue=0,nProgress=0,nDisplayId=0,nGoalProgress=0,bCompleted=false,sDate="",sDesc="",sTier="",sTitle="",sSource="") + Goals[8]=(nDate=0,nGoal=0,nValue=0,nProgress=0,nDisplayId=0,nGoalProgress=0,bCompleted=false,sDate="",sDesc="",sTier="",sTitle="",sSource="") + Goals[9]=(nDate=0,nGoal=0,nValue=0,nProgress=0,nDisplayId=0,nGoalProgress=0,bCompleted=false,sDate="",sDesc="",sTier="",sTitle="",sSource="") + } +}; + +struct native UIHistoryData +{ + var int nId; + var int nClass; + var init string sDate; + var init string sMode; + var init string sScore; + var UIProfile.EHistoryResult eResult; + var init string sDuration; + var DateTimeWrapper dtEvent; + + structdefaultproperties + { + nId=0 + nClass=0 + sDate="" + sMode="" + sScore="" + eResult=EHistoryResult.EHR_WIN + sDuration="" + dtEvent=(qTime=()) + } +}; + +var int m_nPlayer; +var int m_nAwardScrollIndex; +var int m_nHistoryScrollIndex; +var int m_nChampionScrollIndex; +var int m_nAwardTotal; +var int m_nAwardCurrent; +var int m_nSelectedVoicePackCurrent; +var bool m_bScrollAwards; +var bool m_bScrollHistory; +var bool m_bScrollChampions; +var bool m_bLoadedActivities; +var bool m_bAnnouncerPackGamepadAware; +var UIProfile.PROFILESTATE m_eState; +var array m_AwardData; +var array m_Matches; +var GFxObject m_mcOverview; +var GFxObject m_mcOverviewTitle; +var GFxObject m_mcOverviewPlayerEquippedTitle; +var GFxObject m_mcOverviewSubtitle; +var GFxObject m_mcOverviewRatingTitle; +var GFxObject m_mcOverviewRatingDetails; +var GFxObject m_mcOverviewRatingSubtitle; +var GFxObject m_mcOverviewBonus; +var GFxObject m_mcOverviewBonusBonusIcon; +var GFxObject m_mcOverviewBonusBonusIconIcon; +var GFxObject m_mcOverviewBonusBonusIconFrame; +var GFxObject m_mcOverviewBonusTitle; +var GFxObject m_mcOverviewBonusBoostActive; +var GFxObject m_mcOverviewBonusEntry[4]; +var TgGFxGroup m_grOverview; +var UIComponent_TitlesView m_pTitlesView; +var GFxObject m_mcAwards; +var GFxObject m_mcAwardScroll; +var GFxObject m_mcAwardTotalProgress; +var GFxObject m_mcAwardTotalProgressTip; +var GFxObject m_mcAwardTotalProgressFill; +var GFxObject m_mcAwardTotalProgressTitle; +var GFxObject m_mcAwardTotalProgressSubtitle; +var GFxObject m_mcAwardRow[8]; +var GFxObject m_mcAwardDate[8]; +var GFxObject m_mcAwardIcon[8]; +var GFxObject m_mcAwardTitle[8]; +var GFxObject m_mcAwardFrame[8]; +var GFxObject m_mcAwardPoints[8]; +var GFxObject m_mcAwardSubtitle[8]; +var GFxObject m_mcAwardHighlight[8]; +var GFxObject m_mcAwardProgressFill[8]; +var GFxObject m_mcAwardProgressText[8]; +var TgGFxGroup m_grAward; +var GFxObject m_mcHistory; +var GFxObject m_mcHistoryScroll; +var GFxObject m_mcHistoryRow[8]; +var GFxObject m_mcHistoryDate[8]; +var GFxObject m_mcHistoryName[8]; +var GFxObject m_mcHistoryType[8]; +var GFxObject m_mcHistoryIcon[8]; +var GFxObject m_mcHistoryMode[8]; +var GFxObject m_mcHistoryFrame[8]; +var GFxObject m_mcHistoryMatch[8]; +var GFxObject m_mcHistoryScore[8]; +var GFxObject m_mcHistoryResult[8]; +var GFxObject m_mcHistoryDetails[8]; +var GFxObject m_mcHistoryChampion[8]; +var GFxObject m_mcHistoryDuration[8]; +var TgGFxGroup m_grHistory; +var GFxObject m_mcChampions; +var GFxObject m_mcChampionScroll; +var GFxObject m_mcChampionRow[8]; +var GFxObject m_mcChampionName[8]; +var GFxObject m_mcChampionType[8]; +var GFxObject m_mcChampionIcon[8]; +var GFxObject m_mcChampionRank[8]; +var GFxObject m_mcChampionFrame[8]; +var GFxObject m_mcChampionScore[8]; +var GFxObject m_mcChampionDetails[8]; +var GFxObject m_mcChampionChampion[8]; +var GFxObject m_mcChampionMastery[8]; +var GFxObject m_mcChampionMasteryTip[8]; +var GFxObject m_mcChampionMasteryFill[8]; +var GFxObject m_mcChampionMasteryTitle[8]; +var GFxObject m_mcChampionRankProgress[8]; +var GFxObject m_mcChampionRankProgressTip[8]; +var GFxObject m_mcChampionRankProgressFill[8]; +var GFxObject m_mcChampionRankProgressTitle[8]; +var GFxObject m_mcChampionRankProgressSubtitle[8]; +var TgGFxGroup m_grChampion; +var GFxObject m_mcAnnouncerPacks; +var GFxObject m_mcAnnouncerPacksScroll; +var GFxObject m_mcAnnouncerPackHeader; +var GFxObject m_mcAnnouncerPackHeaderIconCon; +var GFxObject m_mcAnnouncerPackHeaderIcon; +var GFxObject m_mcAnnouncerPackHeaderLabel; +var GFxObject m_mcAnnouncerPackHeaderTitle; +var GFxObject m_mcAnnouncerPackHeaderRarityFrame; +var GFxObject m_mcAnnouncerPackSlot[10]; +var GFxObject m_mcAnnouncerPackSlotTF[10]; +var GFxObject m_mcAnnouncerPackSlotCostCrystalsCon[10]; +var GFxObject m_mcAnnouncerPackSlotCostCrystalsTF[10]; +var GFxObject m_mcAnnouncerPackSlotCostGoldCon[10]; +var GFxObject m_mcAnnouncerPackSlotCostGoldTF[10]; +var GFxObject m_mcAnnouncerPackSlotEquippedCon[10]; +var GFxObject m_mcAnnouncerPackSlotLockIcon[10]; +var GFxObject m_mcAnnouncerPackSlotAnnouncerIconCon[10]; +var GFxObject m_mcAnnouncerPackSlotAnnouncerIcon[10]; +var GFxObject m_mcAnnouncerPackSlotSelected[10]; +var GFxObject m_mcAnnouncerPackSlotFrameButton[10]; +var GFxObject m_mcAnnouncerPackSlotPlayButton[10]; +var GFxObject m_mcAnnouncerPackSlotRarityFrame[10]; +var TgGFxGroup m_grAnnouncerPacks; +var int m_nTitleToEquip; +var float m_fQueuedTitleEquipTimer; +var float m_fTitleEquipDelay; + +defaultproperties +{ + m_fTitleEquipDelay=2.0000000 + m_UISceneClass=Class'TgClient.UIScene_UIProfile' + m_OptionList[0]=14 + m_OptionList[1]=4 + m_nBackground=1 + m_bResetHeaderFocusOnShow=false + m_bAllowMultipleOnStack=false + m_Name="UIProfile" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIProfileMini.uc b/exported/TgClient/Classes/UIProfileMini.uc new file mode 100755 index 00000000..d889d1c2 --- /dev/null +++ b/exported/TgClient/Classes/UIProfileMini.uc @@ -0,0 +1,49 @@ +class UIProfileMini extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const MINIPROF_ACCOUNTBOOSTTOOLTIP_ENTRIES = 4; + +var bool m_bSearching; +var bool m_bShowMinimize; +var float m_fRotation; +var GFxObject m_mcExit; +var GFxObject m_mcSpinner; +var GFxObject m_mcMinimize; +var GFxObject m_mcSearching; +var GFxObject m_mcSearchingTitle; +var GFxObject m_mcSearchingSubtitle; +var GFxObject m_mcParty; +var GFxObject m_mcPartyCount; +var GFxObject m_mcPartyIcon; +var GFxObject m_mcPartyFrame; +var GFxObject m_mcPlayer; +var GFxObject m_mcPlayerGold; +var GFxObject m_mcPlayerName; +var GFxObject m_mcPlayerLevel; +var GFxObject m_mcPlayerCrystals; +var GFxObject m_mcPlayerDust; +var GFxObject m_mcPlayerEquipableTitle; +var GFxObject m_mcBoostAccount; +var GFxObject m_mcBoostAccountIcon; +var GFxObject m_mcBoostAccountFrame; +var GFxObject m_mcBoostAccountTooltip; +var GFxObject m_mcBoostAccountTooltipTitle; +var GFxObject m_mcBoostAccountTooltipTimer; +var GFxObject m_mcBoostAccountTooltipEntry[4]; +var GFxObject m_mcBoostParty; +var GFxObject m_mcBoostPartyIcon; +var GFxObject m_mcBoostPartyFrame; +var GFxObject m_mcBoostPartyTooltip; +var GFxObject m_mcBoostPartyTooltipTitle; +var GFxObject m_mcBoostPartyTooltipEntry0; +var GFxObject m_mcBoostPartyTooltipEntry1; +var GFxObject m_mcBoostPartyTooltipEntry2; +var GFxObject m_mcTencentNetcafeStatus; + +defaultproperties +{ + m_eSnappingType=UISNAPPINGTYPE.UISNAPPING_TOP + m_eAligningType=UIALIGNINGTYPE.UIALIGNING_RIGHT + m_bAlwaysTick=true + m_Name="UIProfileMini" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIPurchaseGems.uc b/exported/TgClient/Classes/UIPurchaseGems.uc new file mode 100755 index 00000000..30261e1d --- /dev/null +++ b/exported/TgClient/Classes/UIPurchaseGems.uc @@ -0,0 +1,110 @@ +class UIPurchaseGems extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UIPURCHASEGEMS_DURABLEPACKS = 2; +const UIPURCHASEGEMS_CONSUMABLEPACKS = 7; +const UIPURCHASEGEMS_DURABLE_DETAILS = 5; +const UI_FOUNDERS_PACK_ID = 21371; + +enum UIPG_DurablePacks +{ + UIPG_Founders, // 0 + UIPG_Realm, // 1 + UIPG_MAX // 2 +}; + +struct native UIDurablePack +{ + var GFxObject Obj; + var GFxObject Price; + var GFxObject PurchaseButton; + var GFxObject Highlight; + var GFxObject Refund; + var GFxObject SaleBanner; + + structdefaultproperties + { + Obj=none + Price=none + PurchaseButton=none + Highlight=none + Refund=none + SaleBanner=none + } +}; + +struct native UIConsumablePack +{ + var GFxObject Obj; + var GFxObject Title; + var GFxObject Icon; + var GFxObject Price; + var GFxObject PurchaseButton; + var GFxObject Highlight; + var GFxObject SaleBanner; + + structdefaultproperties + { + Obj=none + Title=none + Icon=none + Price=none + PurchaseButton=none + Highlight=none + SaleBanner=none + } +}; + +var UIDurablePack m_DurablePack[2]; +var UIConsumablePack m_ConsumablePack[7]; +var GFxObject m_mcCancelButton; +var GFxObject m_mcOverlay; +var GFxObject m_mcFrame; +var GFxObject m_mcBlocker; +var array m_AllProducts; + +event GetAvailableProducts(OnlineSubsystem.EMediaItemType MediaType, out array AvailableProducts) +{ + // End:0xB2 + if(NotEqual_InterfaceInterface(m_pMovie.MarketplaceInterface, OnlineMarketplaceInterface(none))) + { + m_pMovie.MarketplaceInterface.GetAvailableProducts(byte(m_pMovie.GetLP().ControllerId), MediaType, AvailableProducts); + } + //return; +} + +static event GetInventoryItems(out array InventoryItems) +{ + local OnlineSubsystem OnlineSub; + local PlayerController PC; + local LocalPlayer LP; + + PC = Class'Engine.WorldInfo'.static.GetWorldInfo().GetALocalPlayerController(); + // End:0x15B + if(PC != none) + { + LP = LocalPlayer(PC.Player); + // End:0x15B + if(LP != none) + { + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x15B + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.MarketplaceInterface, OnlineMarketplaceInterface(none))) + { + OnlineSub.MarketplaceInterface.GetInventoryItems(byte(LP.ControllerId), InventoryItems); + } + } + } + //return; +} + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_SceneAsPopup' + m_OptionList[0]=14 + m_OptionList[1]=4 + m_nBackground=1 + m_bBlur=true + m_bIsPopup=true + m_Name="UIPurchaseGems" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIQuestUtilities.uc b/exported/TgClient/Classes/UIQuestUtilities.uc new file mode 100755 index 00000000..3c8411e7 --- /dev/null +++ b/exported/TgClient/Classes/UIQuestUtilities.uc @@ -0,0 +1,6 @@ +class UIQuestUtilities extends Object + native(UIQuestUtilities); + +const WEEKLY_QUESTS_ACCOUNT_LEVEL = 7; +const WEEKLY_QUESTS_COUNT = 3; +const WEEKLY_QUESTS_TOTAL = 10; diff --git a/exported/TgClient/Classes/UIQuests.uc b/exported/TgClient/Classes/UIQuests.uc new file mode 100755 index 00000000..ea38c56c --- /dev/null +++ b/exported/TgClient/Classes/UIQuests.uc @@ -0,0 +1,59 @@ +class UIQuests extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const QUEST_PANEL_WIDTH = 357; +const QUEST_PANEL_GAP = 20; +const CURRENCY_GOLD = 13256; +const CURRENCY_CRYSTALS = 12687; +const QUEST_PANEL_PROGRESS_BAR_EMPTY_FRAME = 43; +const QUEST_PANEL_PROGRESS_BAR_FULL_FRAME = 315; +const VISIBLE_QUEST_PANELS = 5; + +var TgGFxGroup m_grQuestPanels; +var TgGFxGroup m_grQuestRerollPopup; +var GFxObject m_mcGoldMax; +var GFxObject m_mcHeader; +var GFxObject m_mcBack; +var GFxObject m_mcTitle; +var GFxObject m_mcBonusQuest; +var GFxObject m_mcBonusQuestProgress; +var GFxObject m_mcBonusQuestProgressMask; +var GFxObject m_mcBonusQuestProgressText; +var GFxObject m_mcBonusQuestTitle; +var GFxObject m_mcBonusQuestDescription; +var UIComponent_List m_QuestList; +var UIComponent_Quest m_QuestPanels[10]; +var GFxObject m_mcPanels; +var UIInteractable_Button m_pPrevButton; +var UIInteractable_Button m_pNextButton; +var GFxObject m_mcActiveQuests; +var GFxObject m_mcNextQuestCountdown; +var int m_nQuestToDiscard; +var GFxObject m_mcDiscardQuestPopup; +var GFxObject m_mcDiscardQuestPopupCloseButton; +var GFxObject m_mcDiscardQuestPopupTitle; +var GFxObject m_mcDiscardQuestPopupQuestIcon; +var GFxObject m_mcDiscardQuestPopupQuestTitle; +var GFxObject m_mcDiscardQuestPopupRerollText; +var GFxObject m_mcDiscardQuestPopupRerollButton; +var GFxObject m_mcDiscardQuestPopupDiscardButton; +var int m_nCurrentlyFocusedQuestPanel; +var int m_nDesiredFocusedQuestPanelButton; +var int m_nCurrentlyFocusedQuestPanelButton; +var int m_nDesiredFocusedDiscardButton; +var int m_nCurrentlyFocusedDiscardButton; +var int m_nQuestIndices[10]; + +defaultproperties +{ + m_nCurrentlyFocusedQuestPanel=-1 + m_nDesiredFocusedQuestPanelButton=-1 + m_nCurrentlyFocusedQuestPanelButton=-1 + m_nDesiredFocusedDiscardButton=-1 + m_nCurrentlyFocusedDiscardButton=-1 + m_UISceneClass=Class'TgClient.UIScene_UIQuests' + m_OptionList[0]=140 + m_OptionList[1]=23 + m_nBackground=1 + m_Name="UIQuests" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UISafeFrame.uc b/exported/TgClient/Classes/UISafeFrame.uc new file mode 100755 index 00000000..a9620256 --- /dev/null +++ b/exported/TgClient/Classes/UISafeFrame.uc @@ -0,0 +1,14 @@ +class UISafeFrame extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UISAFEFRAME_STEPCOUNT = 20; +const UISAFEFRAME_MIN = 0.9f; +const UISAFEFRAME_MAX = 1.f; + +var GFxObject m_mcAdjust; +var GFxObject m_mcAccept; + +defaultproperties +{ + m_Name="UISafeFrame" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIScene.uc b/exported/TgClient/Classes/UIScene.uc new file mode 100755 index 00000000..da418b1c --- /dev/null +++ b/exported/TgClient/Classes/UIScene.uc @@ -0,0 +1,53 @@ +class UIScene extends UIComponent + native(UIComponent); + +struct native UIAnimData +{ + var byte eType; + var byte eQuad; + var float fOrig; + var float fDelay; + var float fTarget; + var float fDuration; + var float fTimeLeft; + var GFxObject mcObject; + + structdefaultproperties + { + eType=0 + eQuad=0 + fOrig=0.0000000 + fDelay=0.0000000 + fTarget=0.0000000 + fDuration=0.0000000 + fTimeLeft=0.0000000 + mcObject=none + } +}; + +var array m_AnimObjects; +var array m_Interactables; +var bool m_bUninitializing; + +// Export UUIScene::execFadeIn(FFrame&, void* const) +native function FadeIn(GFxObject pObj, optional float fTime = 0.0500000, optional float fDelay = 0.0000000); + +// Export UUIScene::execFadeOut(FFrame&, void* const) +native function FadeOut(GFxObject pObj, optional float fTime = 0.0500000, optional float fDelay = 0.0000000); + +// Export UUIScene::execAnimate(FFrame&, void* const) +native function Animate(GFxObject pObj, float fTime, UIComponent.UIANIMTYPE eType, float fValue, optional float fDelay = 0.0000000, optional byte eQuad = 1, optional bool bEndCurrentAnim = true); + +// Export UUIScene::execIsAnimating(FFrame&, void* const) +native function bool IsAnimating(GFxObject pObj, optional UIComponent.UIANIMTYPE eType = 9); + +// Export UUIScene::execGetAnimationTarget(FFrame&, void* const) +native function float GetAnimationTarget(GFxObject pObj, optional UIComponent.UIANIMTYPE eType = 9); + +// Export UUIScene::execEndAnim(FFrame&, void* const) +native function EndAnim(GFxObject pObj, optional UIComponent.UIANIMTYPE eType = 9); + +defaultproperties +{ + m_ComponentType=UICOMPONENTTYPE.UICOMP_SCENE +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIScene_SceneAsPopup.uc b/exported/TgClient/Classes/UIScene_SceneAsPopup.uc new file mode 100755 index 00000000..dbde0bdf --- /dev/null +++ b/exported/TgClient/Classes/UIScene_SceneAsPopup.uc @@ -0,0 +1,2 @@ +class UIScene_SceneAsPopup extends UIScene + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UIAccountLink.uc b/exported/TgClient/Classes/UIScene_UIAccountLink.uc new file mode 100755 index 00000000..11286b18 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIAccountLink.uc @@ -0,0 +1,2 @@ +class UIScene_UIAccountLink extends UIScene_SceneAsPopup + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UIAcquisition.uc b/exported/TgClient/Classes/UIScene_UIAcquisition.uc new file mode 100755 index 00000000..1ab35f4c --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIAcquisition.uc @@ -0,0 +1,2 @@ +class UIScene_UIAcquisition extends UIScene + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UIChampion.uc b/exported/TgClient/Classes/UIScene_UIChampion.uc new file mode 100755 index 00000000..5b9491a9 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIChampion.uc @@ -0,0 +1,14 @@ +class UIScene_UIChampion extends UIScene + native(UIComponent); + +enum UICHAMPION_STATE +{ + UICS_OVERVIEW, // 0 + UICS_SLOTS, // 1 + UICS_COLLECTION, // 2 + UICS_LOADOUTS, // 3 + UICS_SKILLS, // 4 + UICS_ITEMS, // 5 + UICS_MASTERIES, // 6 + UICS_MAX // 7 +}; diff --git a/exported/TgClient/Classes/UIScene_UICompetitive.uc b/exported/TgClient/Classes/UIScene_UICompetitive.uc new file mode 100755 index 00000000..c2565aeb --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UICompetitive.uc @@ -0,0 +1,20 @@ +class UIScene_UICompetitive extends UIScene + native(UIComponent); + +var UIComponent_Interactable m_pBack; +var UIComponent_HeaderTabs m_pTabs; +var GFxObject m_mcTiers; +var UIComponent_List m_TierTagList; +var UIComponent_List m_TierList; +var array m_TierListData; +var array m_TierTagData; +var GFxObject m_mcOverview; +var GFxObject m_mcOverviewTitle[4]; +var GFxObject m_mcOverviewRankIcon; +var UIComponent_RankedProgress m_pOverviewProgress; +var UIComponent_Interactable m_pButtonLeaderboard; +var UIComponent_Interactable m_pButtonPlay; +var GFxObject m_mcRewards; +var UIComponent_List m_RewardsList; +var UIComponent_List m_RewardsPortraitList; +var GFxObject m_mcRewardsTitle[4]; diff --git a/exported/TgClient/Classes/UIScene_UICompetitivePopupWelcome.uc b/exported/TgClient/Classes/UIScene_UICompetitivePopupWelcome.uc new file mode 100755 index 00000000..9d19c69b --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UICompetitivePopupWelcome.uc @@ -0,0 +1,4 @@ +class UIScene_UICompetitivePopupWelcome extends UIScene_SceneAsPopup + native(UIComponent); + +var UIDataLeague pLeague; diff --git a/exported/TgClient/Classes/UIScene_UICompetitiveRankChange.uc b/exported/TgClient/Classes/UIScene_UICompetitiveRankChange.uc new file mode 100755 index 00000000..379c0c6c --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UICompetitiveRankChange.uc @@ -0,0 +1,2 @@ +class UIScene_UICompetitiveRankChange extends UIScene_SceneAsPopup + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UICompetitiveRankDecay.uc b/exported/TgClient/Classes/UIScene_UICompetitiveRankDecay.uc new file mode 100755 index 00000000..ec23fa12 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UICompetitiveRankDecay.uc @@ -0,0 +1,2 @@ +class UIScene_UICompetitiveRankDecay extends UIScene_SceneAsPopup + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UICustomGame.uc b/exported/TgClient/Classes/UIScene_UICustomGame.uc new file mode 100755 index 00000000..7428466d --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UICustomGame.uc @@ -0,0 +1,2 @@ +class UIScene_UICustomGame extends UIScene + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UIDailyReward.uc b/exported/TgClient/Classes/UIScene_UIDailyReward.uc new file mode 100755 index 00000000..d9f5dab0 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIDailyReward.uc @@ -0,0 +1,2 @@ +class UIScene_UIDailyReward extends UIScene_SceneAsPopup + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UIEndOfMatchLobby.uc b/exported/TgClient/Classes/UIScene_UIEndOfMatchLobby.uc new file mode 100755 index 00000000..502ebb9e --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIEndOfMatchLobby.uc @@ -0,0 +1,8 @@ +class UIScene_UIEndOfMatchLobby extends UIScene + native(UIComponent); + +var UIComponent_RankedEOMProgress m_RankedProgress; +var UIComponent_MatchDisplay m_MatchStats; +var TgData_EOM m_EOMData; +var int m_nLocalTF; +var int m_nPlayerCount; diff --git a/exported/TgClient/Classes/UIScene_UIHome.uc b/exported/TgClient/Classes/UIScene_UIHome.uc new file mode 100755 index 00000000..4dc9777e --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIHome.uc @@ -0,0 +1,2 @@ +class UIScene_UIHome extends UIScene + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UIHudBurns.uc b/exported/TgClient/Classes/UIScene_UIHudBurns.uc new file mode 100755 index 00000000..be53bd61 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIHudBurns.uc @@ -0,0 +1,2 @@ +class UIScene_UIHudBurns extends UIScene + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UIHudCenter.uc b/exported/TgClient/Classes/UIScene_UIHudCenter.uc new file mode 100755 index 00000000..1ae12635 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIHudCenter.uc @@ -0,0 +1,2 @@ +class UIScene_UIHudCenter extends UIScene + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UIHudDecks.uc b/exported/TgClient/Classes/UIScene_UIHudDecks.uc new file mode 100755 index 00000000..05ef258d --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIHudDecks.uc @@ -0,0 +1,8 @@ +class UIScene_UIHudDecks extends UIScene + native(UIComponent); + +var float m_fSelectedTalentX; +var float m_fSelectedTalentY; +var UIComponent_TeamPortraits m_TeamPortraitsLeft; +var UIComponent_TeamPortraits m_TeamPortraitsRight; +var float m_fUpdateTalentsDelay; diff --git a/exported/TgClient/Classes/UIScene_UIHudScore.uc b/exported/TgClient/Classes/UIScene_UIHudScore.uc new file mode 100755 index 00000000..dadca06c --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIHudScore.uc @@ -0,0 +1,2 @@ +class UIScene_UIHudScore extends UIScene + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UIHudSkills.uc b/exported/TgClient/Classes/UIScene_UIHudSkills.uc new file mode 100755 index 00000000..7ccf0244 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIHudSkills.uc @@ -0,0 +1,69 @@ +class UIScene_UIHudSkills extends UIScene + native(UIComponent); + +const UIHUDSKILLS_COUNT = 5; + +var UIComponent_HudSkillIcon m_pSkillIcon[5]; +var UIComponent_HudSkillIcon m_pAltSkillIconA; +var UIComponent_HudSkillIcon m_pAltSkillIconB; +var float m_fSkillRotation; +var GFxObject m_mcGroupA; +var GFxObject m_mcGroupB; +var UIComponent_LexVengeance m_LexVengeance; +var UIComponent_OracleSoulCharges m_OracleSoulCharges; +var int m_nSpectatorMode; + +event AnimateWeaponSwap(float fSwapTime) +{ + m_pAltSkillIconA.m_mcRoot.SetY(-90.0000000); + m_pSkillIcon[0].m_mcRoot.SetY(-77.0000000); + m_pAltSkillIconA.m_mcRoot.SetAlpha(50.0000000); + m_pSkillIcon[0].m_mcRoot.SetAlpha(100.0000000); + Animate(m_pAltSkillIconA.m_mcRoot, 0.1200000, 1, -120.0000000, 0.0200000,, true); + Animate(m_pAltSkillIconA.m_mcRoot, 0.0500000, 1, -40.0000000, 0.1700000,, false); + Animate(m_pAltSkillIconA.m_mcRoot, 0.1200000, 1, -90.0000000, 0.2200000,, false); + Animate(m_pAltSkillIconA.m_mcRoot, 0.0500000, 2, 0.0000000, 0.0200000,, true); + Animate(m_pAltSkillIconA.m_mcRoot, 0.0500000, 2, 50.0000000, 0.2200000,, false); + Animate(m_pSkillIcon[0].m_mcRoot, 0.1000000, 1, 7.0000000,,, true); + Animate(m_pSkillIcon[0].m_mcRoot, 0.0500000, 1, -157.0000000, 0.1500000,, false); + Animate(m_pSkillIcon[0].m_mcRoot, 0.1000000, 1, -67.0000000, 0.2000000,, false); + Animate(m_pSkillIcon[0].m_mcRoot, 0.0200000, 1, -77.0000000, 0.3000000,, false); + Animate(m_pSkillIcon[0].m_mcRoot, 0.0850000, 2, 0.0000000,,, true); + Animate(m_pSkillIcon[0].m_mcRoot, 0.0500000, 2, 100.0000000, 0.2000000,, false); + m_pAltSkillIconB.m_mcRoot.SetY(-90.0000000); + m_pSkillIcon[5 - 1].m_mcRoot.SetY(-77.0000000); + m_pAltSkillIconB.m_mcRoot.SetAlpha(50.0000000); + m_pSkillIcon[5 - 1].m_mcRoot.SetAlpha(100.0000000); + Animate(m_pAltSkillIconB.m_mcRoot, 0.1200000, 1, -120.0000000, 0.0200000,, true); + Animate(m_pAltSkillIconB.m_mcRoot, 0.0500000, 1, -40.0000000, 0.1700000,, false); + Animate(m_pAltSkillIconB.m_mcRoot, 0.1200000, 1, -90.0000000, 0.2200000,, false); + Animate(m_pAltSkillIconB.m_mcRoot, 0.0500000, 2, 0.0000000, 0.0200000,, true); + Animate(m_pAltSkillIconB.m_mcRoot, 0.0500000, 2, 50.0000000, 0.2200000,, false); + Animate(m_pSkillIcon[5 - 1].m_mcRoot, 0.1000000, 1, 7.0000000,,, true); + Animate(m_pSkillIcon[5 - 1].m_mcRoot, 0.0500000, 1, -157.0000000, 0.1200000,, false); + Animate(m_pSkillIcon[5 - 1].m_mcRoot, 0.1000000, 1, -67.0000000, 0.2000000,, false); + Animate(m_pSkillIcon[5 - 1].m_mcRoot, 0.0200000, 1, -77.0000000, 0.3000000,, false); + Animate(m_pSkillIcon[5 - 1].m_mcRoot, 0.0850000, 2, 0.0000000,,, true); + Animate(m_pSkillIcon[5 - 1].m_mcRoot, 0.1000000, 2, 100.0000000, 0.2000000,, false); + //return; +} + +event ApplyAltSkillOffsets() +{ + m_pAltSkillIconA.m_mcRoot.SetX(-32.0000000); + m_pAltSkillIconB.m_mcRoot.SetX(-30.0000000); + m_pAltSkillIconA.m_mcRoot.SetY(-90.0000000); + m_pAltSkillIconB.m_mcRoot.SetY(-90.0000000); + m_pAltSkillIconA.m_mcRoot.SetXScale(m_pAltSkillIconA.m_mcRoot.m_fOrigScaleX * 0.7500000); + m_pAltSkillIconB.m_mcRoot.SetXScale(m_pAltSkillIconB.m_mcRoot.m_fOrigScaleX * 0.7500000); + m_pAltSkillIconA.m_mcRoot.SetYScale(m_pAltSkillIconA.m_mcRoot.m_fOrigScaleY * 0.7500000); + m_pAltSkillIconB.m_mcRoot.SetYScale(m_pAltSkillIconB.m_mcRoot.m_fOrigScaleY * 0.7500000); + m_pAltSkillIconA.m_mcRoot.SetAlpha(70.0000000); + m_pAltSkillIconB.m_mcRoot.SetAlpha(70.0000000); + //return; +} + +defaultproperties +{ + m_fSkillRotation=25.0000000 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIScene_UIHudStrix.uc b/exported/TgClient/Classes/UIScene_UIHudStrix.uc new file mode 100755 index 00000000..bb2c06b0 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIHudStrix.uc @@ -0,0 +1,21 @@ +class UIScene_UIHudStrix extends UIScene + native(UIComponent); + +const UIHUDSTRIX_BULLETS = 5; + +var int m_nAmmo; +var GFxObject m_mcAmmo[5]; +var GFxObject m_mcScope; +var GFxObject m_mcOuterScope; +var bool m_bViewTargetOwl; +var float m_fColorTransitionAmt; +var float m_fColorTransitionPerSec; +var const LinearColor m_ColorTransitionMultiplier; +var const LinearColor m_ColorTransitionAdditive; +var int m_nScopeColorTransitionCBHandle; + +defaultproperties +{ + m_ColorTransitionMultiplier=(R=0.2000000,G=0.0000000,B=1.0000000,A=1.0000000) + m_ColorTransitionAdditive=(R=0.1500000,G=0.0000000,B=0.4000000,A=0.0000000) +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIScene_UILeaderboard.uc b/exported/TgClient/Classes/UIScene_UILeaderboard.uc new file mode 100755 index 00000000..1cbf5386 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UILeaderboard.uc @@ -0,0 +1,11 @@ +class UIScene_UILeaderboard extends UIScene + native(UIComponent); + +var bool m_bPendingLoad; +var UIDataChampion m_CurrentLeaderboard; +var UIComponent_List m_ChampionLeaderboard; +var UIComponent_List m_PlayerLeaderboard; +var UIComponent_Dropdown m_LeagueDropdown; +var UIComponent_RankedProgress m_RankedProgress; +var GFxObject m_mcHeader; +var GFxObject m_mcRankIcon; diff --git a/exported/TgClient/Classes/UIScene_UIMatchLobby.uc b/exported/TgClient/Classes/UIScene_UIMatchLobby.uc new file mode 100755 index 00000000..09088be5 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIMatchLobby.uc @@ -0,0 +1,2 @@ +class UIScene_UIMatchLobby extends UIScene + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UINotificationCenter.uc b/exported/TgClient/Classes/UIScene_UINotificationCenter.uc new file mode 100755 index 00000000..47fb0e6f --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UINotificationCenter.uc @@ -0,0 +1,2 @@ +class UIScene_UINotificationCenter extends UIScene_SceneAsPopup + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UIPlay.uc b/exported/TgClient/Classes/UIScene_UIPlay.uc new file mode 100755 index 00000000..b49661d0 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIPlay.uc @@ -0,0 +1,13 @@ +class UIScene_UIPlay extends UIScene + native(UIComponent) + implements(DelayQueueInterface); + +var private native const noexport Pointer VfTable_IDelayQueueInterface; +var GFxObject m_mcHeader; +var GFxObject m_mcHeaderIcon; +var GFxObject m_mcMultiqueueCursor; +var GFxObject m_mcMultiqueueUpDownIndicator; +var UIInteractable_Button m_JoinMultiqueueButton; +var UIComponent_List m_Panels; +var UIComponent_List m_MultiqueuePanels; +var array m_PanelStack; diff --git a/exported/TgClient/Classes/UIScene_UIPopupCrafting.uc b/exported/TgClient/Classes/UIScene_UIPopupCrafting.uc new file mode 100755 index 00000000..609258ad --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIPopupCrafting.uc @@ -0,0 +1,71 @@ +class UIScene_UIPopupCrafting extends UIScene_SceneAsPopup + native(UIComponent); + +var UIInteractable_Item m_CardContainer; +var UIInteractable_Item m_CardContainerAnim; +var GFxObject m_mcTitle; +var GFxObject m_mcRarity; +var GFxObject m_mcRemaining; +var GFxObject m_mcCardCraftText; +var GFxObject m_mcControllerPrompt; +var GFxObject m_mcControllerPromptLabel; +var GFxObject m_mcControllerPromptCurrencyTF; +var UIInteractable_Button m_AcceptButton; +var UIInteractable_Button m_CancelButton; +var UIInteractable_Button m_CloseButton; +var bool m_bWaiting; +var bool m_bPurchasing; +var GFxObject m_mcWait; +var GFxObject m_mcWaitSpinner; +var float m_fSpinnerRotation; +var float m_fAnimTimer; +var UIComponent_HoldPrompt m_HoldPrompt; +var float m_fTimeoutTime; +var float m_fTimeoutTimer; +var UIDataItem m_ItemInfo; +var int m_nPurchaseItem; +var int m_nPurchaseType; +var int m_nPurchaseVendor; +var float m_fAnimStartSoundTimer; +var float m_fAnimEndSoundTimer; +var AkBaseSoundObject m_akCraftAnimStart; +var AkBaseSoundObject m_akCraftAnimEnd; +var AkBaseSoundObject m_akDisenchantAnimStart; +var AkBaseSoundObject m_akDisenchantAnimEnd; + +event float TriggerCardCraftedAnimation() +{ + local float fDelayTime, fAnimTime, fAnimHoldTime; + + fDelayTime = 0.2500000; + fAnimTime = 0.3300000; + fAnimHoldTime = 0.5000000; + m_CardContainerAnim.m_mcRoot.SetVisible(true); + m_CardContainerAnim.m_mcRoot.SetAlpha(0.0000000); + m_CardContainerAnim.m_mcRoot.SetXScale(m_CardContainer.m_mcRoot.GetXScale() * 2.5000000); + m_CardContainerAnim.m_mcRoot.SetYScale(m_CardContainer.m_mcRoot.GetYScale() * 2.5000000); + EndAnim(m_CardContainerAnim.m_mcRoot); + FadeIn(m_CardContainerAnim.m_mcRoot, fAnimTime, fDelayTime); + Animate(m_CardContainerAnim.m_mcRoot, fAnimTime, 5, m_CardContainer.m_mcRoot.GetXScale(), fDelayTime); + Animate(m_CardContainerAnim.m_mcRoot, fAnimTime, 6, m_CardContainer.m_mcRoot.GetYScale(), fDelayTime); + FadeOut(m_CardContainer.m_mcRoot, 0.1000000, fDelayTime + (fAnimTime * 0.8000000)); + m_fAnimStartSoundTimer = fDelayTime; + m_fAnimEndSoundTimer = fDelayTime + fAnimTime; + return (fDelayTime + fAnimTime) + fAnimHoldTime; + //return ReturnValue; +} + +event float TriggerCardDisenchantedAnimation() +{ + return 0.0000000; + //return ReturnValue; +} + +defaultproperties +{ + m_fTimeoutTime=20.0000000 + m_akCraftAnimStart=AkEvent'WW_UI_Default.UI_Menu_DailyLogin_RewardClaim' + m_akDisenchantAnimStart=AkEvent'WW_UI_Default.UI_Menu_CardCraft_Buildup_Play' + m_akDisenchantAnimEnd=AkEvent'WW_UI_Default.UI_Menu_CardCraft_Finish_Play' + m_sLoadName="CraftingPopup" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIScene_UIPopupGeneric.uc b/exported/TgClient/Classes/UIScene_UIPopupGeneric.uc new file mode 100755 index 00000000..f4ffba7a --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIPopupGeneric.uc @@ -0,0 +1,4 @@ +class UIScene_UIPopupGeneric extends UIScene + native(UIComponent); + +var UIData_PopupGeneric m_pData; diff --git a/exported/TgClient/Classes/UIScene_UIPopupGenericFullscreen.uc b/exported/TgClient/Classes/UIScene_UIPopupGenericFullscreen.uc new file mode 100755 index 00000000..ea83b80e --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIPopupGenericFullscreen.uc @@ -0,0 +1,2 @@ +class UIScene_UIPopupGenericFullscreen extends UIScene_UIPopupGeneric + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UIPopupInput.uc b/exported/TgClient/Classes/UIScene_UIPopupInput.uc new file mode 100755 index 00000000..e08d66d8 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIPopupInput.uc @@ -0,0 +1,4 @@ +class UIScene_UIPopupInput extends UIScene + native(UIComponent); + +var UIData_PopupInput m_pData; diff --git a/exported/TgClient/Classes/UIScene_UIPopupPartyManager.uc b/exported/TgClient/Classes/UIScene_UIPopupPartyManager.uc new file mode 100755 index 00000000..5eaf8476 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIPopupPartyManager.uc @@ -0,0 +1,25 @@ +class UIScene_UIPopupPartyManager extends UIScene_SceneAsPopup + native(UIComponent); + +const UICOMPONENT_PARTYMANAGERLIST_TITLECOUNT = 2; +const UICOMPONENT_PARTYMANAGERLIST_MEMBERCOUNT = 6; + +enum UIPPM_State +{ + UIPPM_NONE, // 0 + UIPPM_PARTYKICK, // 1 + UIPPM_FRIENDINVITE, // 2 + UIPPM_MAX // 3 +}; + +var UIComponent_Interactable m_pCloseButton; +var UIComponent_List m_pList; +var GFxObject m_mcTitle[2]; +var UIScene_UIPopupPartyManager.UIPPM_State m_eState; +var int m_nRequiredPartySize; +var Object m_pPostPartyKickResponse; + +defaultproperties +{ + m_nRequiredPartySize=-1 +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIScene_UIProfile.uc b/exported/TgClient/Classes/UIScene_UIProfile.uc new file mode 100755 index 00000000..9adf9a56 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIProfile.uc @@ -0,0 +1,21 @@ +class UIScene_UIProfile extends UIScene + native(UIComponent); + +const UISCENE_UIPROFILE_MATCHSTATSPOPUP_TABS = 2; + +var UIComponent_Interactable m_pBack; +var UIComponent_HeaderTabs m_pTabs; +var UIComponent_Popup m_MatchStatsPopup; +var GFxObject m_mcMatchStatsTabSelected[2]; +var GFxObject m_mcOverview; +var TgGFxGroup m_grOverview; +var UIComponent_LevelProgress m_OverviewLevelProgress; +var GFxObject m_mcOverviewRankedIcon; +var GFxObject m_mcOverviewRankedSeason; +var GFxObject m_mcOverviewRankedRound; +var GFxObject m_mcOverviewRankedRoundRemaining; +var UIComponent_RankedProgress m_pOverviewRankedProgress; +var UIComponent_Interactable m_pOverviewRankedLeaderboardButton; +var UIComponent_List m_pOwnershipProgressList; +var UIComponent_Interactable m_pOverviewBoostButton; +var UIComponent_List m_ChampionList; diff --git a/exported/TgClient/Classes/UIScene_UIQuests.uc b/exported/TgClient/Classes/UIScene_UIQuests.uc new file mode 100755 index 00000000..766d8641 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIQuests.uc @@ -0,0 +1,2 @@ +class UIScene_UIQuests extends UIScene + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UISettings.uc b/exported/TgClient/Classes/UIScene_UISettings.uc new file mode 100755 index 00000000..69bdd23d --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UISettings.uc @@ -0,0 +1,2 @@ +class UIScene_UISettings extends UIScene + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UIStore.uc b/exported/TgClient/Classes/UIScene_UIStore.uc new file mode 100755 index 00000000..b78bf1ad --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIStore.uc @@ -0,0 +1,2 @@ +class UIScene_UIStore extends UIScene + native(UIComponent); diff --git a/exported/TgClient/Classes/UIScene_UIStoreDetail.uc b/exported/TgClient/Classes/UIScene_UIStoreDetail.uc new file mode 100755 index 00000000..aa3b8f65 --- /dev/null +++ b/exported/TgClient/Classes/UIScene_UIStoreDetail.uc @@ -0,0 +1,2 @@ +class UIScene_UIStoreDetail extends UIScene + native(UIComponent); diff --git a/exported/TgClient/Classes/UISettings.uc b/exported/TgClient/Classes/UISettings.uc new file mode 100755 index 00000000..847ce699 --- /dev/null +++ b/exported/TgClient/Classes/UISettings.uc @@ -0,0 +1,204 @@ +class UISettings extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const GFXSETTINGS_BUTTONS = 7; +const GFXSETTINGS_OPTIONS = 12; +const GFXSETTINGS_KEYBINDS = 12; +const GFXSETTINGS_KEYBINDS_COLUMNS = 2; + +enum UISETTINGS_CATEGORY +{ + UISC_VIDEO, // 0 + UISC_AUDIO, // 1 + UISC_HUD, // 2 + UISC_CONTROLS, // 3 + UISC_GAMEPAD, // 4 + UISC_KEYBINDS, // 5 + UISC_SPECTATOR, // 6 + UISC_MAX // 7 +}; + +enum UISETTINGS_APPLYCHANGESDIALOG +{ + UISA_DIALOG_NULL, // 0 + UISA_DIALOG_YES, // 1 + UISA_DIALOG_NO, // 2 + UISA_DIALOG_MAX // 3 +}; + +struct native KeybindOption +{ + var GFxObject Obj; + var GFxObject Base; + var GFxObject Focus; + var GFxObject Command; + var GFxObject Key[2]; + var GFxObject KeyButton[2]; + + structdefaultproperties + { + Obj=none + Base=none + Focus=none + Command=none + Key[0]=none + Key[1]=none + KeyButton[0]=none + KeyButton[1]=none + } +}; + +struct native SettingOption +{ + var GFxObject Obj; + var GFxObject Base; + var GFxObject Type; + var GFxObject TypeTF; + var GFxObject Left; + var GFxObject Right; + var GFxObject Focus; + var GFxObject Color; + var GFxObject Slider; + var GFxObject SliderTF; + var GFxObject SliderTitle; + + structdefaultproperties + { + Obj=none + Base=none + Type=none + TypeTF=none + Left=none + Right=none + Focus=none + Color=none + Slider=none + SliderTF=none + SliderTitle=none + } +}; + +var UIComponent_Dropdown m_ChampionDropdown; +var int m_eType; +var int m_nHighlightOption; +var int m_nOptionCount; +var int m_nCaptureAlt; +var int m_nScrollIndex; +var bool m_bOptionFocus; +var bool m_bKeybindFocus; +var bool m_bCaptureKeybind; +var bool m_bSettingsChanged; +var bool m_bIsInResetPrompt; +var float m_fDelayTimer; +var UISettings.UISETTINGS_APPLYCHANGESDIALOG m_eApplyChanges; +var int m_nCommandIndex; +var GFxObject m_Title; +var GFxObject m_Frame; +var GFxObject m_Reset; +var GFxObject m_mcBack; +var GFxObject m_Blocker; +var GFxObject m_mcIcon; +var GFxObject m_mcHeader; +var GFxObject m_mcHeaderGlow; +var GFxObject m_KeybindPopup; +var GFxObject m_KeybindPopupTF; +var GFxObject m_KeybindCancel; +var GFxObject m_KeybindBlocker; +var GFxObject m_ApplyChanges; +var GFxObject m_ApplyChangesYes; +var GFxObject m_ApplyChangesNo; +var GFxObject m_ApplyChangesBlocker; +var SettingOption m_Option[12]; +var KeybindOption m_Keybind[12]; +var GFxObject m_ExitButton; +var GFxObject m_AcceptButton; +var GFxObject m_mcScrollBar; +var GFxObject m_mcHeaderButton[7]; +var GFxObject m_mcHeaderButtonCTA[7]; +var GFxObject m_mcHeaderButtonLine[7]; +var GFxObject m_mcHeaderButtonGlow[7]; +var GFxObject m_mcHeaderButtonBounds[7]; +var GFxObject m_mcHeaderButtonShadow[7]; +var GFxObject m_mcHeaderButtonSelected[7]; +var GFxObject m_mcHeaderButtonHighlight[7]; +var TgGFxGroup m_grOptions; +var TgGFxGroup m_grKeybinds; +var TgGFxGroup m_grTeams; +var TgGFxGroup m_grButtons; +var TgGFxGroup m_grGamepadButtons; +var GFxObject m_mcGamepad; +var GFxObject m_mcGamepadButtons; +var GFxObject m_mcGamepadImage; +var GFxObject m_Spectator; +var GFxObject m_mcSpectatorTeamNameBlue; +var GFxObject m_mcSpectatorTeamNameRed; +var GFxObject m_mcSafeFrame; +var array m_DelayedUpdates; +var array m_VideoTypes; +var array m_HudTypes; +var array m_AudioTypes; +var array m_ControlTypes; +var array m_SpectatorTypes; + +defaultproperties +{ + m_VideoTypes[0]=0 + m_VideoTypes[1]=1 + m_VideoTypes[2]=2 + m_VideoTypes[3]=3 + m_VideoTypes[4]=4 + m_VideoTypes[5]=5 + m_VideoTypes[6]=6 + m_VideoTypes[7]=7 + m_VideoTypes[8]=8 + m_VideoTypes[9]=9 + m_VideoTypes[10]=10 + m_VideoTypes[11]=11 + m_VideoTypes[12]=12 + m_HudTypes[0]=38 + m_HudTypes[1]=15 + m_HudTypes[2]=16 + m_HudTypes[3]=18 + m_HudTypes[4]=46 + m_HudTypes[5]=17 + m_HudTypes[6]=19 + m_HudTypes[7]=54 + m_HudTypes[8]=20 + m_HudTypes[9]=21 + m_HudTypes[10]=44 + m_HudTypes[11]=51 + m_HudTypes[12]=55 + m_AudioTypes[0]=22 + m_AudioTypes[1]=23 + m_AudioTypes[2]=24 + m_AudioTypes[3]=25 + m_AudioTypes[4]=26 + m_AudioTypes[5]=52 + m_AudioTypes[6]=49 + m_AudioTypes[7]=50 + m_AudioTypes[8]=47 + m_AudioTypes[9]=48 + m_ControlTypes[0]=29 + m_ControlTypes[1]=45 + m_ControlTypes[2]=31 + m_ControlTypes[3]=32 + m_ControlTypes[4]=33 + m_ControlTypes[5]=34 + m_ControlTypes[6]=35 + m_ControlTypes[7]=36 + m_ControlTypes[8]=37 + m_ControlTypes[9]=27 + m_ControlTypes[10]=28 + m_ControlTypes[11]=30 + m_ControlTypes[12]=53 + m_SpectatorTypes[0]=40 + m_SpectatorTypes[1]=41 + m_SpectatorTypes[2]=42 + m_SpectatorTypes[3]=43 + m_UISceneClass=Class'TgClient.UIScene_UISettings' + m_OptionList[0]=14 + m_OptionList[1]=4 + m_bBlur=true + m_bAllowSpectatorClickThru=false + m_Name="UISettings" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UISkills.uc b/exported/TgClient/Classes/UISkills.uc new file mode 100755 index 00000000..5690d8d0 --- /dev/null +++ b/exported/TgClient/Classes/UISkills.uc @@ -0,0 +1,25 @@ +class UISkills extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UISKILLS_COUNT = 5; + +var GFxObject m_mcTitle; +var GFxObject m_mcSubtitle; +var GFxObject m_mcSkill[5]; +var GFxObject m_mcSkillKey[5]; +var GFxObject m_mcSkillBase[5]; +var GFxObject m_mcSkillIcon[5]; +var GFxObject m_mcSkillTitle[5]; +var GFxObject m_mcSkillDamage[5]; +var GFxObject m_mcSkillSubtitle[5]; +var GFxObject m_mcSkillCooldown[5]; +var GFxObject m_mcSkillCooldownTF[5]; + +defaultproperties +{ + m_UISceneClass=Class'TgClient.UIScene_SceneAsPopup' + m_OptionList[0]=249 + m_bBlur=true + m_bIsPopup=true + m_Name="UISkills" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UISocial.uc b/exported/TgClient/Classes/UISocial.uc new file mode 100755 index 00000000..b7cde2c0 --- /dev/null +++ b/exported/TgClient/Classes/UISocial.uc @@ -0,0 +1,209 @@ +class UISocial extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UISOCIAL_HEADER_COUNT = 5; +const UISOCIAL_REFER_LEVELS = 5; +const UISOCIAL_REFER_BUTTONS = 3; +const UISOCIAL_REFER_FRIENDS = 5; +const UISOCIAL_REFER_REWARDS = 6; +const UISOCIAL_REFER_LISTSIZE = 7; +const UISOCIAL_FRIEND_COUNT = 7; +const UISOCIAL_FRIEND_OPTIONS = 3; +const UISOCIAL_PARTY_COUNT = 5; +const UISOCIAL_PARTY_OPTIONS = 3; +const UISOCIAL_FRIEND_INVITEPARTY_INDEX = 1; +const UISOCIAL_TEAMINVITE_MAX_RECORDS = 64; +const UISOCIAL_PARTY_MININVITEWAIT = 3.0; + +enum SOCIALSTATE +{ + ESS_PARTY, // 0 + ESS_FRIENDS, // 1 + ESS_REFERRAL, // 2 + ESS_REFERREDFRIENDS, // 3 + ESS_REFERREDREWARDS, // 4 + ESS_SENDREFERREDFRIENDS, // 5 + ESS_MAX // 6 +}; + +enum SOCIAL_ReferralError +{ + UISRE_None, // 0 + UISRE_AlreadyReferred, // 1 + UISRE_AlreadyHaveAccount, // 2 + UISRE_NoRemainingReferrals, // 3 + UISRE_ReferralsDisabled, // 4 + UISRE_LevelRequirementNotMet, // 5 + UISRE_AgeRequirementNotMet, // 6 + UISRE_MAX // 7 +}; + +struct native ReferralReward +{ + var int nItem; + var int nLevel; + var int nReward; + var bool bCurrency; + var GFxObject pObj; + var GFxObject pIcon; + var GFxObject pFrame; + var GFxObject pTitle; + var GFxObject pAmount; + var GFxObject pCurrency; + var GFxObject pAddition; + + structdefaultproperties + { + nItem=0 + nLevel=0 + nReward=0 + bCurrency=false + pObj=none + pIcon=none + pFrame=none + pTitle=none + pAmount=none + pCurrency=none + pAddition=none + } +}; + +var int m_nPlayerLevel; +var int m_nMemberDetail; +var int m_nMemberScrollIndex; +var int m_nFriendDetail; +var int m_nFriendScrollIndex; +var int m_nFriendsTotal; +var int m_nFriendsPending; +var int m_nReferredFriendsScrollIndex; +var int m_nSendReferralScrollIndex; +var int m_nReferralTier2Level; +var int m_nReferralReachedTier2; +var int m_nReferralHighestLevel; +var int m_nReferralLongestPlayed; +var int m_nHoursPlayedWithReferrer; +var bool m_bRewardDataLoaded; +var bool m_bInvitationSent; +var float m_fReferralTimeRemaining; +var UISocial.SOCIALSTATE m_eState; +var GFxObject m_mcBack; +var GFxObject m_mcTitle; +var GFxObject m_mcHeader; +var GFxObject m_mcHeaderGlow; +var GFxObject m_mcHeaderButton[5]; +var GFxObject m_mcHeaderButtonCTA[5]; +var GFxObject m_mcHeaderButtonLine[5]; +var GFxObject m_mcHeaderButtonGlow[5]; +var GFxObject m_mcHeaderButtonBounds[5]; +var GFxObject m_mcHeaderButtonShadow[5]; +var GFxObject m_mcHeaderButtonSelected[5]; +var GFxObject m_mcHeaderButtonHighlight[5]; +var GFxObject m_mcReferral; +var GFxObject m_mcReferralPanel; +var GFxObject m_mcReferralLevels; +var GFxObject m_mcReferralFriends; +var GFxObject m_mcReferralRewards; +var GFxObject m_mcReferralTimeTitle; +var GFxObject m_mcReferralTimeSubtitle; +var GFxObject m_mcReferralButton[3]; +var ReferralReward m_ReferralLevels[5]; +var ReferralReward m_ReferralRewards[6]; +var ReferralReward m_ReferralFriends[5]; +var ReferralReward m_ReferredLevels[5]; +var ReferralReward m_ReferredFriends[5]; +var GFxObject m_mcReferredRewardsPopup; +var GFxObject m_mcReferredRewardsPopupPanel; +var GFxObject m_mcReferredRewardsPopupLevels; +var GFxObject m_mcReferredRewardsPopupButton; +var GFxObject m_mcReferredRewardsPopupFriends; +var GFxObject m_mcReferredRewardsPopupTimeTitle; +var GFxObject m_mcReferredRewardsPopupTimeSubtitle; +var GFxObject m_mcReferredFriendsPopup; +var GFxObject m_mcReferredFriendsPopupList; +var GFxObject m_mcReferredFriendsPopupListScrollbar; +var GFxObject m_mcReferredFriendsPopupName[7]; +var GFxObject m_mcReferredFriendsPopupEntry[7]; +var GFxObject m_mcReferredFriendsPopupLevel[7]; +var GFxObject m_mcReferredFriendsPopupHours[7]; +var GFxObject m_mcSendReferralFriendsPopup; +var GFxObject m_mcSendReferralFriendsPopupList; +var GFxObject m_mcSendReferralFriendsPopupListScrollbar; +var GFxObject m_mcSendReferralFriendsPopupEntry[7]; +var GFxObject m_mcSendReferralFriendsPopupName[7]; +var TgGFxGroup m_grParty; +var TgGFxGroup m_grPartyDetail; +var TgGFxGroup m_grFriends; +var TgGFxGroup m_grFriendDetail; +var TgGFxGroup m_grReferrals; +var TgGFxGroup m_grReferredRewards; +var TgGFxGroup m_grReferredFriends; +var TgGFxGroup m_grSendReferralFriends; +var TgGFxGroup m_grRecentPlayers; +var TgGFxGroup m_grLookingForParty; +var array m_vReferredFriends; +var GFxObject m_mcFriends; +var GFxObject m_mcFriendsAdd; +var GFxObject m_mcFriendsTitle; +var GFxObject m_mcFriendsInput; +var GFxObject m_mcFriendsSubtitle; +var GFxObject m_mcFriendScrollbar; +var GFxObject m_mcFriend[7]; +var GFxObject m_mcFriendIcon[7]; +var GFxObject m_mcFriendName[7]; +var GFxObject m_mcFriendLevel[7]; +var GFxObject m_mcFriendStatus[7]; +var GFxObject m_mcFriendSelected[7]; +var GFxObject m_mcFriendRankedIndicator[7]; +var GFxObject m_mcFriendRankedIndicatorRankIcon[7]; +var GFxObject m_mcFriendDetail; +var GFxObject m_mcFriendDetailIcon; +var GFxObject m_mcFriendDetailName; +var GFxObject m_mcFriendDetailLevel; +var GFxObject m_mcFriendDetailStatus; +var GFxObject m_mcFriendDetailButton[3]; +var GFxObject m_mcParty; +var GFxObject m_mcPartyAdd; +var GFxObject m_mcPartyInput; +var GFxObject m_mcPartyLeave; +var GFxObject m_mcPartyTitle; +var GFxObject m_mcPartyScrollbar; +var GFxObject m_mcPartyBonus; +var GFxObject m_mcPartyBonusIcon; +var GFxObject m_mcPartyBonusIconIcon; +var GFxObject m_mcPartyBonusIconFrame; +var GFxObject m_mcPartyBonusTitle; +var GFxObject m_mcPartyBonusActive; +var GFxObject m_mcPartyBonusEntry0; +var GFxObject m_mcPartyBonusEntry1; +var GFxObject m_mcPartyBonusEntry2; +var GFxObject m_mcMember[5]; +var GFxObject m_mcMemberIcon[5]; +var GFxObject m_mcMemberName[5]; +var GFxObject m_mcMemberLevel[5]; +var GFxObject m_mcMemberStatus[5]; +var GFxObject m_mcMemberSelected[5]; +var GFxObject m_mcMemberRankedIndicator[7]; +var GFxObject m_mcMemberRankedIndicatorRankIcon[7]; +var GFxObject m_mcMemberInviteButton[5]; +var GFxObject m_mcMemberInviteButtonText[5]; +var GFxObject m_mcMemberDetail; +var GFxObject m_mcMemberDetailIcon; +var GFxObject m_mcMemberDetailName; +var GFxObject m_mcMemberDetailLevel; +var GFxObject m_mcMemberDetailStatus; +var GFxObject m_mcMemberDetailButton[3]; +var native map{VOID,VOID} m_fInvitesSentTimestamps; + +defaultproperties +{ + m_nMemberDetail=-1 + m_nReferralTier2Level=15 + m_OptionList[0]=14 + m_OptionList[1]=4 + m_nBackground=4 + m_bBlur=true + m_bResetHeaderFocusOnShow=false + m_bIsOnline=true + m_bAllowMultipleOnStack=false + m_Name="UISocial" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIStore.uc b/exported/TgClient/Classes/UIStore.uc new file mode 100755 index 00000000..6afe4814 --- /dev/null +++ b/exported/TgClient/Classes/UIStore.uc @@ -0,0 +1,480 @@ +class UIStore extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UISTORE_TABS = 5; +const UISTORE_ARROWS = 2; +const UISTORE_CHESTS = 15; +const UISTORE_FEATURES = 7; +const UISTORE_INPUTCOUNT = 3; +const UISTORE_EXCLUSIVES = 10; +const UISTORE_ITEMTABS = 11; +const FILTER_POPUP_OPTION_COUNT = 4; +const FILTER_POPUP_RARITY_COUNT = 5; +const UISTORE_CHEST_BUNDLE_DROPDOWN_COUNT = 5; +const UICHESTS_MAX_BUNDLES = 4; +const UISTORE_CAROUSEL_PANEL = 1; +const UISTORE_CURRENCIES = 2; +const UISTORE_ENCHANTEDKEYS = 2; + +enum UISTORE_STATE +{ + UISTS_FEATURES, // 0 + UISTS_CHAMPIONS, // 1 + UISTS_ITEMS, // 2 + UISTS_CHESTS, // 3 + UISTS_ACCOUNT, // 4 + UISTS_MAX // 5 +}; + +enum UISTORETAB_STATE +{ + UISTT_COLLECTIONS, // 0 + UISTT_WEAPONS, // 1 + UISTT_SETS, // 2 + UISTT_HEADS, // 3 + UISTT_BODIES, // 4 + UISTT_EMOTES, // 5 + UISTT_VOICES, // 6 + UISTT_MVPPOSES, // 7 + UISTT_SPRAYS, // 8 + UISTT_MOUNTS, // 9 + UISTT_ANNOUNCERPACKS, // 10 + UISTT_MAX // 11 +}; + +enum EStoreSort +{ + SSORT_Default, // 0 + SSORT_Newest, // 1 + SSORT_Champion, // 2 + SSORT_RarityDescending, // 3 + SSORT_RarityAscending, // 4 + SSORT_Name, // 5 + SSORT_MAX // 6 +}; + +enum EChampionFilter +{ + CFILTER_All, // 0 + CFILTER_Owned, // 1 + CFILTER_Individual, // 2 + CFILTER_MAX // 3 +}; + +struct native UIStoreFoundersPackPanel +{ + var GFxObject Obj; + var GFxObject Title; + var GFxObject SubTitle; + var GFxObject BuyNow; + var GFxObject Price; + var GFxObject SaleBanner; + + structdefaultproperties + { + Obj=none + Title=none + SubTitle=none + BuyNow=none + Price=none + SaleBanner=none + } +}; + +struct native UISprayRentalData +{ + var int nSprayItemId; + var int nSprayVendorId; + var int nChestItemId; + var int nLootId; + var int nBundleVendorId; + var int nBundleCount; + var int nBundleItemIds[4]; + var int nBundleItemCounts[4]; + + structdefaultproperties + { + nSprayItemId=0 + nSprayVendorId=0 + nChestItemId=0 + nLootId=0 + nBundleVendorId=0 + nBundleCount=0 + nBundleItemIds[0]=0 + nBundleItemIds[1]=0 + nBundleItemIds[2]=0 + nBundleItemIds[3]=0 + nBundleItemCounts[0]=0 + nBundleItemCounts[1]=0 + nBundleItemCounts[2]=0 + nBundleItemCounts[3]=0 + } +}; + +struct native UIEnchantKeyPanel +{ + var GFxObject Container; + var GFxObject PanelFrame; + var GFxObject Icon; + var GFxObject RarityText; + var GFxObject Desc; + var GFxObject Price; + var GFxObject PriceTF; + var GFxObject UnavailableTF; + + structdefaultproperties + { + Container=none + PanelFrame=none + Icon=none + RarityText=none + Desc=none + Price=none + PriceTF=none + UnavailableTF=none + } +}; + +struct native StoreFilter +{ + var UIStore.EStoreSort eCurrentSorting; + var UIStore.EChampionFilter eCurrentChampionFilter; + var int nIndividuallyFilteredBotId; + var bool bAvailable; + var bool bNotOwned; + var int nRarityFilter[5]; + + structdefaultproperties + { + eCurrentSorting=EStoreSort.SSORT_Default + eCurrentChampionFilter=EChampionFilter.CFILTER_All + nIndividuallyFilteredBotId=0 + bAvailable=false + bNotOwned=false + nRarityFilter[0]=0 + nRarityFilter[1]=0 + nRarityFilter[2]=0 + nRarityFilter[3]=0 + nRarityFilter[4]=0 + } +}; + +var bool m_bResetSkins; +var bool m_bResetChampions; +var bool m_bAnimatingItems; +var bool m_bAnimatingChampions; +var bool m_bRedeemCode; +var bool m_bEnchanting; +var bool m_bNameChange; +var bool m_bIsRenting; +var bool m_bUseCardIcon; +var bool m_bHovering; +var bool m_bRotating; +var bool m_bItemTotalsCalculated; +var bool m_bFilterEnabled; +var bool m_bDropdownOpen; +var bool m_bShowFounderAdd; +var int m_nRefocusNeeded; +var int m_nItemEmoteId; +var int m_nItemHeadId; +var int m_nItemSkinId; +var int m_nItemWeapon; +var int m_nItemVoiceId; +var int m_nWeaponDeviceId; +var int m_nItemMVPPose; +var int m_nItemSpray; +var int m_nItemMount; +var int m_nAnnouncerPack; +var int m_nActiveItem; +var int m_nActiveChampion; +var int m_nChestIndex; +var int m_nChestBundleIndex; +var int m_nItemScroll; +var int m_nChampionScroll; +var float m_fWaitTimer; +var byte m_eState; +var byte m_eTabState; +var float m_fGlowTimerA1; +var float m_fGlowTimerA2; +var float m_fGlowTimerA3; +var float m_fGlowTimerB1; +var float m_fGlowTimerB2; +var float m_fGlowTimerB3; +var int m_nChestIconFrame; +var int m_nSprayIconFrame; +var int m_nChestQuantity; +var int m_nSprayIconIndex; +var int m_nSprayRarityIndex; +var dword m_dwCrystalCost; +var dword m_dwGoldCost; +var dword m_dwOriginalCrystalCost; +var string m_sSprayName; +var string m_sChestName; +var int m_nOwnedItemCount; +var int m_nTotalItemCount; +var float m_fPreviousPosX; +var int m_nExclusiveCount; +var UIDataItem m_pExclusiveItems[10]; +var array m_StoreItems; +var init array m_FeatureData; +var int m_nItemCounts[11]; +var int m_nItemTotals[11]; +var GFxObject m_mcBack; +var GFxObject m_mcTitle; +var GFxObject m_mcHeader; +var GFxObject m_mcHeaderCrystals; +var GFxObject m_mcHeaderCrystalsConsole; +var GFxObject m_mcHeaderButton[5]; +var GFxObject m_mcHeaderButtonShadow[5]; +var GFxObject m_mcHeaderButtonSelected[5]; +var GFxObject m_mcHeaderButtonHighlight[5]; +var GFxObject m_mcHeaderButtonChestsCTA; +var GFxObject m_mcFeatures; +var UIInteractable_JsonPanel_Carousel m_CarouselPanel; +var UIInteractable_JsonPanel m_JsonPanel[7]; +var TgGFxGroup m_grFeatures; +var GFxObject m_mcItems; +var GFxObject m_mcItemContainer; +var GFxObject m_mcItemScrollBar; +var GFxObject m_mcItemTab[11]; +var GFxObject m_mcItemTabCount[11]; +var GFxObject m_mcItemTabSelected[11]; +var GFxObject m_mcRotator_Item; +var GFxObject m_mcExclusiveBanner; +var GFxObject m_mcExclusiveLabel; +var GFxObject m_mcExclusiveDescription; +var GFxObject m_mcNoItemResultsText; +var GFxObject m_mcItemRentalText; +var GFxObject m_mcItemRentalTextLabel; +var GFxObject m_mcItemRentalTextDuration; +var TgGFxGroup m_grItemTabs; +var TgGFxGroup m_grItems; +var GFxObject m_mcFilterBar; +var GFxObject m_mcButtonFilter; +var GFxObject m_mcFilterText; +var GFxObject m_mcClearFilterButton; +var GFxObject m_mcChampionFilterLabel; +var UIComponent_Dropdown m_ChampionFilterDropdown; +var GFxObject m_mcFilterGamepadPrompt; +var GFxObject m_mcFilterPopup; +var GFxObject m_mcFilterPopupMainPanel; +var GFxObject m_mcFilterPopupConfirmButton; +var GFxObject m_mcFilterPopupGamepadButtonLeft; +var GFxObject m_mcFilterPopupGamepadButtonRight; +var GFxObject m_mcFilterPopupCloseButton; +var GFxObject m_mcFilterPopupTitle; +var GFxObject m_mcFilterPopupSortOption; +var GFxObject m_mcFilterPopupSortOptionText; +var GFxObject m_mcFilterPopupSortOptionHighlight; +var GFxObject m_mcFilterPopupOptionCarouselLeftArrow; +var GFxObject m_mcFilterPopupOptionCarouselRightArrow; +var GFxObject m_mcFilterPopupItemNotOwnedOption; +var GFxObject m_mcFilterPopupItemNotOwnedOptionText; +var GFxObject m_mcFilterPopupItemNotOwnedOptionToggle; +var GFxObject m_mcFilterPopupAvailableOption; +var GFxObject m_mcFilterPopupAvailableOptionText; +var GFxObject m_mcFilterPopupAvailableOptionToggle; +var GFxObject m_mcFilterPopupRarity[5]; +var GFxObject m_mcFilterPopupRarityToggle[5]; +var GFxObject m_mcFilterPopupSortByText; +var GFxObject m_mcFilterPopupFilterText; +var GFxObject m_mcFilterPopupRarityText; +var TgGFxGroup m_grFilterPopup; +var GFxObject m_mcChampions; +var UIStoreFoundersPackPanel m_FoundersPack; +var GFxObject m_mcChampionContainer; +var GFxObject m_mcChampionScrollBar; +var GFxObject m_mcRotator_Champion; +var GFxObject m_mcChampionRentalText; +var GFxObject m_mcChampionRentalTextLabel; +var GFxObject m_mcChampionRentalTextDuration; +var TgGFxGroup m_grChampions; +var TgGFxGroup m_grpFounderPack; +var GFxObject m_mcChests; +var GFxObject m_mcChest[15]; +var GFxObject m_mcChestGlowA[15]; +var GFxObject m_mcChestGlowB[15]; +var GFxObject m_mcChestArrows[2]; +var GFxObject m_mcPrevChestPrompt; +var GFxObject m_mcNextChestPrompt; +var GFxObject m_mcChestName; +var GFxObject m_mcChestTime; +var GFxObject m_mcChestPanel; +var GFxObject m_mcChestPanelCTA; +var GFxObject m_mcChestPanelEnchantButton; +var GFxObject m_mcChestPanelEnchantButtonTF; +var GFxObject m_mcChestPanelIcon; +var GFxObject m_mcChestPanelName; +var GFxObject m_mcChestPanelType; +var GFxObject m_mcChestPanelDesc; +var GFxObject m_mcChestPanelCount; +var GFxObject m_mcChestPanelPriceContainer; +var GFxObject m_mcChestPanelDetails; +var GFxObject m_mcChestPanelPurchase; +var GFxObject m_mcChestPanelCursor; +var GFxObject m_mcChestSaleBanner; +var GFxObject m_mcChestSaleText; +var GFxObject m_mcChestCouponBanner; +var GFxObject m_mcChestCouponBannerText; +var GFxObject m_mcChestCouponBannerIcon; +var GFxObject m_mcChestPanelHidden; +var GFxObject m_mcChestPanelChestIcon; +var GFxObject m_mcChestPanelSprayIcon; +var GFxObject m_mcChestPanelSprayIconGfx; +var GFxObject m_mcChestPanelSprayIconCard; +var GFxObject m_mcChestPanelSprayIconRarity; +var GFxObject m_mcChestPanelRentalLabel; +var GFxObject m_mcChestPanelRentalTime; +var TgGFxGroup m_grRentSpray; +var GFxObject m_mcRentSprayPopup; +var GFxObject m_mcRentSprayPopupBlocker; +var GFxObject m_mcRentSprayPopupWindow; +var GFxObject m_mcRentSprayPopupWindowCursor; +var GFxObject m_mcRentSprayPopupWindowWait; +var GFxObject m_mcRentSprayPopupWindowSpinner; +var GFxObject m_mcRentSprayPopupName; +var GFxObject m_mcRentSprayPopupIcon; +var GFxObject m_mcRentSprayPopupIconGfx; +var GFxObject m_mcRentSprayPopupIconCard; +var GFxObject m_mcRentSprayPopupIconRarity; +var GFxObject m_mcRentSprayPopupTime; +var GFxObject m_mcRentSprayPopupChestIcon; +var GFxObject m_mcRentSprayPopupCancel; +var GFxObject m_mcRentSprayPopupOwnedCrystals; +var GFxObject m_mcRentSprayPopupOwnedGold; +var GFxObject m_mcRentSprayPopupOwnedEssence; +var GFxObject m_mcRentSprayPopupOption0; +var GFxObject m_mcRentSprayPopupOption0TF; +var GFxObject m_mcRentSprayPopupOption0CurrentCost; +var GFxObject m_mcRentSprayPopupOption0Purchase; +var GFxObject m_mcRentSprayPopupOption0PurchaseBG; +var GFxObject m_mcRentSprayPopupOption0PurchaseTF; +var GFxObject m_mcRentSprayPopupOption0PurchaseIcon; +var GFxObject m_mcRentSprayPopupOption1; +var GFxObject m_mcRentSprayPopupOption1TF; +var GFxObject m_mcRentSprayPopupOption1CurrentCost; +var GFxObject m_mcRentSprayPopupOption1Purchase; +var GFxObject m_mcRentSprayPopupOption1PurchaseBG; +var GFxObject m_mcRentSprayPopupOption1PurchaseTF; +var GFxObject m_mcRentSprayPopupOption1PurchaseIcon; +var GFxObject m_mcRentSprayPopupChestQuantity; +var GFxObject m_mcRentSprayPopupChestName; +var GFxObject m_mcRentSprayPopupPrice; +var GFxObject m_mcChestPanelQuantityDropdownToggle; +var GFxObject m_mcChestPanelQuantityDropdownPrompt; +var GFxObject m_mcChestPanelQuantityDropdownToggle_Inner; +var GFxObject m_mcChestPanelQuantityDropdownPrompt_Inner; +var GFxObject m_mcChestPanelPurchaseQuantity; +var GFxObject m_mcChestPanelDropdown; +var GFxObject m_mcChestPanelDropdownMask; +var GFxObject m_mcChestPanelDropdownFrame; +var GFxObject m_mcChestPanelDropdownOptions[5]; +var TgGFxGroup m_grChestPanelDropdown; +var GFxObject m_mcChestDetails; +var GFxObject m_mcChestDetailName; +var GFxObject m_mcChestDetailRarity; +var GFxObject m_mcChestExclusives; +var GFxObject m_mcChestExclusivesFrame; +var GFxObject m_mcChestExclusivesTitle; +var GFxObject m_mcChestExclusivesSubtitle; +var GFxObject m_mcChestExclusiveLabel; +var GFxObject m_mcChestExclusive[10]; +var GFxObject m_mcChestExclusiveIcon[10]; +var GFxObject m_mcChestExclusiveLock[10]; +var GFxObject m_mcChestExclusiveFrame[10]; +var GFxObject m_mcChestExclusiveShadow[10]; +var GFxObject m_mcChestExclusiveHighlight[10]; +var TgGFxGroup m_grChests; +var TgGFxGroup m_grBundledChest; +var UIComponent_HoldPrompt m_uiRentHold; +var TgGFxGroup m_grEnchantChest; +var GFxObject m_mcEnchantPopup; +var GFxObject m_mcEnchantPopupBlocker; +var GFxObject m_mcEnchantPopupBG; +var GFxObject m_mcEnchantPopupTitle; +var GFxObject m_mcEnchantPopupSubtitle; +var GFxObject m_mcEnchantPopupCancelButton; +var GFxObject m_mcEnchantPopupCancelButtonTF; +var GFxObject m_mcEnchantPopupCancelButtonBG; +var UIEnchantKeyPanel m_EnchantedKeyPanels[2]; +var string m_sEnchantedKeyNames[2]; +var string m_sEnchantedKeyDescriptions[2]; +var int m_nEnchantedKeyRarity[2]; +var int m_nEnchantedKeyItemId[2]; +var int m_nEnchantedKeyIconIndex[2]; +var GFxObject m_mcAccount; +var GFxObject m_mcAccountCode; +var GFxObject m_mcAccountBoost; +var GFxObject m_mcAccountName; +var TgGFxGroup m_grAccount; +var GFxObject m_mcPopup; +var GFxObject m_mcPopupWait; +var GFxObject m_mcPopupError; +var GFxObject m_mcPopupInput; +var GFxObject m_mcPopupTitle; +var GFxObject m_mcPopupSubtitle; +var GFxObject m_mcPopupInputFrame; +var GFxObject m_mcPopupButton[3]; +var GFxObject m_mcPopupButtonTitle[3]; +var TgGFxGroup m_grPopup; +var array m_Items; +var array m_ItemLinks; +var array m_Champions; +var array m_PvEChampions; +var array m_ChampionLinks; +var native map{VOID,VOID} m_FeatureMap; +var() int m_nItemXOffset; +var() int m_nItemYOffset; +var() int m_nItemWidth; +var() int m_nItemHeight; +var int m_nItemButtonHeight; +var int m_nItemButtonWidth; +var int m_nItemsShown; +var int m_nItemsTotal; +var dword m_dwChestOpenDelay; +var dword m_dwChestNextOpenTime; +var string m_sCurrencyCode; +var string m_sFoundersPackTitle; +var string m_sFoundersPackSubtitle; +var int m_nChampionDropdownIndex; +var float m_nEmptyItemTabAlpha; +var StoreFilter m_DefaultStoreFilter; +var StoreFilter m_CurrentStoreFilter; +var StoreFilter m_InProgressStoreFilter; +var float m_fOriginalCollisionHeight; +var float m_fOriginalCollisionRadius; + +// Export UUIStore::execOnTeamModelUpdated(FFrame&, void* const) +native function OnTeamModelUpdated(); + +defaultproperties +{ + m_sEnchantedKeyNames[0]="m_lsEnchantedKey" + m_sEnchantedKeyNames[1]="m_lsLegendaryKey" + m_sEnchantedKeyDescriptions[0]="m_lsEnchantedKeyDesc" + m_sEnchantedKeyDescriptions[1]="m_lsLegendaryKeyDesc" + m_nEnchantedKeyRarity[0]=2 + m_nEnchantedKeyRarity[1]=5 + m_nItemXOffset=120 + m_nItemYOffset=143 + m_nItemWidth=220 + m_nItemHeight=235 + m_nItemButtonHeight=32 + m_nItemButtonWidth=190 + m_nEmptyItemTabAlpha=35.0000000 + m_DefaultStoreFilter=(eCurrentSorting=EStoreSort.SSORT_Default,eCurrentChampionFilter=EChampionFilter.CFILTER_All,nIndividuallyFilteredBotId=2092,bAvailable=true,bNotOwned=true,nRarityFilter=1,nRarityFilter[1]=1,nRarityFilter[2]=1,nRarityFilter[3]=1,nRarityFilter[4]=1) + m_CurrentStoreFilter=(eCurrentSorting=EStoreSort.SSORT_Default,eCurrentChampionFilter=EChampionFilter.CFILTER_All,nIndividuallyFilteredBotId=2092,bAvailable=true,bNotOwned=true,nRarityFilter=1,nRarityFilter[1]=1,nRarityFilter[2]=1,nRarityFilter[3]=1,nRarityFilter[4]=1) + m_InProgressStoreFilter=(eCurrentSorting=EStoreSort.SSORT_Default,eCurrentChampionFilter=EChampionFilter.CFILTER_All,nIndividuallyFilteredBotId=2092,bAvailable=true,bNotOwned=true,nRarityFilter=1,nRarityFilter[1]=1,nRarityFilter[2]=1,nRarityFilter[3]=1,nRarityFilter[4]=1) + m_UISceneClass=Class'TgClient.UIScene_UIStore' + m_OptionList[0]=14 + m_OptionList[1]=4 + m_OptionList[2]=0 + m_OptionList[3]=0 + m_OptionList[4]=0 + m_OptionList[5]=0 + m_bBlur=true + m_bBlurForeground=true + m_bResetHeaderFocusOnShow=false + m_bAllowMultipleOnStack=false + m_Name="UIStore" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIStoreDetail.uc b/exported/TgClient/Classes/UIStoreDetail.uc new file mode 100755 index 00000000..26e94e18 --- /dev/null +++ b/exported/TgClient/Classes/UIStoreDetail.uc @@ -0,0 +1,87 @@ +class UIStoreDetail extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +const UISTOREDETAIL_COUNT = 6; + +var int m_nItemId; +var int m_nVendorId; +var int m_nScrollIndex; +var UIDataItem m_pCollection; +var bool m_bHovering; +var bool m_bRotating; +var float m_fPreviousPosX; +var GFxObject m_mcBack; +var GFxObject m_mcIcon; +var GFxObject m_mcChest; +var GFxObject m_mcTitle; +var GFxObject m_mcHeader; +var GFxObject m_mcSubtitle; +var GFxObject m_mcScrollBar; +var GFxObject m_mcDescriptionA; +var GFxObject m_mcDescriptionB; +var GFxObject m_mcDescriptionC; +var GFxObject m_mcRotator; +var GFxObject m_mcExclusiveBanner; +var GFxObject m_mcExclusiveLabel; +var GFxObject m_mcExclusiveDescription; +var GFxObject m_mcExclusiveIconQuests; +var GFxObject m_mcSlot[6]; +var GFxObject m_mcSlotBack[6]; +var GFxObject m_mcSlotLock[6]; +var GFxObject m_mcSlotOwnedText[6]; +var GFxObject m_mcSlotOwnedCheckmark[6]; +var GFxObject m_mcSlotQuestLock[6]; +var GFxObject m_mcSlotLockProgress[6]; +var GFxObject m_mcSlotLockProgressMask[6]; +var GFxObject m_mcSlotType[6]; +var GFxObject m_mcSlotIcon[6]; +var GFxObject m_mcSlotCardIcon[6]; +var GFxObject m_mcSlotName[6]; +var GFxObject m_mcSlotFade[6]; +var GFxObject m_mcSlotChest[6]; +var GFxObject m_mcSlotFrame[6]; +var GFxObject m_mcSlotIcon_Image[6]; +var GFxObject m_mcSlotCardIcon_Image[6]; +var GFxObject m_mcSlotPriceA[6]; +var GFxObject m_mcSlotPriceB[6]; +var GFxObject m_mcSlotRarity[6]; +var GFxObject m_mcSlotUnlock[6]; +var GFxObject m_mcSlotSelected[6]; +var GFxObject m_mcSlotExclusive[6]; +var UIComponent_ItemObtainabilityBanner m_pSlotBanner[6]; +var GFxObject m_mcSlotIconFrame[6]; +var GFxObject m_mcPurchaseCollection; +var GFxObject m_mcPurchaseCollectionTitle; +var GFxObject m_mcPurchaseCollectionPrice; +var GFxObject m_mcPurchaseCollectionPriceStrikethrough; +var GFxObject m_mcPurchaseCollectionNewPrice; +var GFxObject m_mcPurchaseCollectionPriceGold; +var GFxObject m_mcPurchaseCollectionPriceGoldStrikethrough; +var GFxObject m_mcPurchaseCollectionNewPriceGold; +var GFxObject m_mcPurchaseCollectionFrame; +var GFxObject m_mcPurchaseCollectionCouponBanner; +var UIInteractable_Button m_PurchaseCollectionButton; +var TgGFxGroup m_grStoreDetail; +var array m_Items; +var array m_ChestExclusiveItems; +var int m_nPreviewHeadId; +var int m_nPreviewSkinId; +var int m_nPreviewWeapon; +var int m_nPreviewWeaponId; +var int m_nPreviewVoice; +var int m_nPreviewEmote; +var int m_nPreviewMVPPose; +var int m_nPreviewSpray; +var int m_nPreviewMount; + +// Export UUIStoreDetail::execOnTeamModelUpdated(FFrame&, void* const) +native function OnTeamModelUpdated(); + +defaultproperties +{ + m_OptionList[0]=14 + m_OptionList[1]=4 + m_OptionList[2]=0 + m_bBlur=true + m_Name="UIStoreDetail" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UISubtitle.uc b/exported/TgClient/Classes/UISubtitle.uc new file mode 100755 index 00000000..e2bed603 --- /dev/null +++ b/exported/TgClient/Classes/UISubtitle.uc @@ -0,0 +1,13 @@ +class UISubtitle extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +var float m_fTimer; +var float m_fSwitchTimer; +var string m_sNewSubtitle; +var GFxObject m_mcText; +var GFxObject m_mcFrame; + +defaultproperties +{ + m_Name="UISubtitle" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIWebBrowser.uc b/exported/TgClient/Classes/UIWebBrowser.uc new file mode 100755 index 00000000..a359c817 --- /dev/null +++ b/exported/TgClient/Classes/UIWebBrowser.uc @@ -0,0 +1,20 @@ +class UIWebBrowser extends TgGfxScene within GFxMoviePlayer + native(GFxScene); + +var bool m_bAutoClose; +var bool m_bDrawBorder; +var GFxObject m_mcFrame; +var GFxObject m_mcBrowserShape; +var GFxObject m_mcBackButton; +var GFxObject m_mcForwardButton; +var GFxObject m_mcCloseButton; + +defaultproperties +{ + m_OptionList[0]=14 + m_OptionList[1]=4 + m_eScalingType=UISCALINGTYPE.UISCALING_FITTALL + m_bBlur=true + m_bIsPopup=true + m_Name="UIWebBrowser" +} \ No newline at end of file diff --git a/exported/TgClient/Classes/UIWorldOverlay.uc b/exported/TgClient/Classes/UIWorldOverlay.uc new file mode 100755 index 00000000..1934cc34 --- /dev/null +++ b/exported/TgClient/Classes/UIWorldOverlay.uc @@ -0,0 +1,288 @@ +class UIWorldOverlay extends TgGfxScene within GFxMoviePlayer + native(GFxScene) + config(Game); + +const UIWORLDOVERLAY_MAXTICKS = 60; +const UIWORLDOVERLAY_HEALTHPERTICK = 250; + +enum EDeployableOverlayType +{ + EDOT_Targetable, // 0 + EDOT_Player, // 1 + EDOT_Deployable, // 2 + EDOT_MAX // 3 +}; + +enum EDeployableOverlayInternalState +{ + EDOIS_None, // 0 + EDOIS_Created, // 1 + EDOIS_Idle, // 2 + EDOIS_Active, // 3 + EDOIS_TimedOut, // 4 + EDOIS_Destroyed, // 5 + EDOIS_Inactive, // 6 + EDOIS_MAX // 7 +}; + +struct native OverlayData +{ + var int nId; + var bool bInit; + var float fRoll; + var float fScale; + var float fTimer; + var float fAnimX; + var float fAnimY; + var float fStartX; + var float fStartY; + var Vector vWorldLoc; + var Vector vScreenLoc; + var GFxObject pClip; + + structdefaultproperties + { + nId=0 + bInit=false + fRoll=0.0000000 + fScale=0.0000000 + fTimer=0.0000000 + fAnimX=0.0000000 + fAnimY=0.0000000 + fStartX=0.0000000 + fStartY=0.0000000 + vWorldLoc=(X=0.0000000,Y=0.0000000,Z=0.0000000) + vScreenLoc=(X=0.0000000,Y=0.0000000,Z=0.0000000) + pClip=none + } +}; + +struct native UITargetableOverlay +{ + var int nLastColorFrame; + var int nTargetId; + var bool bInit; + var bool bEnemy; + var bool bVisible; + var bool bOnEdge; + var bool bHighlight; + var bool bTraceResult; + var float fAlpha; + var float fScale; + var float fTraceTimer; + var float fHighlightTimer; + var Vector vWorldLoc; + var Vector vScreenLoc; + var string CachedName; + var GFxObject pClip; + var GFxObject pName; + var GFxObject pCarat; + var GFxObject pHealingIndicator; + var GFxObject pIcon; + var GFxObject pHealthBarParent; + var UIComponent_HealthBar_Overlay pHealthBar; + var UIWorldOverlay.EDeployableOverlayType eType; + + structdefaultproperties + { + nLastColorFrame=0 + nTargetId=0 + bInit=false + bEnemy=false + bVisible=false + bOnEdge=false + bHighlight=false + bTraceResult=false + fAlpha=0.0000000 + fScale=0.0000000 + fTraceTimer=0.0000000 + fHighlightTimer=0.0000000 + vWorldLoc=(X=0.0000000,Y=0.0000000,Z=0.0000000) + vScreenLoc=(X=0.0000000,Y=0.0000000,Z=0.0000000) + CachedName="" + pClip=none + pName=none + pCarat=none + pHealingIndicator=none + pIcon=none + pHealthBarParent=none + pHealthBar=none + eType=EDeployableOverlayType.EDOT_Targetable + } +}; + +struct native UIPlayerOverlay extends UITargetableOverlay +{ + var int nMarked; + var int nStreak; + var int nUltCharge; + var float fBarragePercent; + var GFxObject pMarked; + var GFxObject pStreak; + var GFxObject pUltimatePercent; + var GFxObject pBarrageFrame; + var GFxObject pBarrageMeter; + var GFxObject pHuntersMark; + var GFxObject pLexExecuteMark; + var GFxObject pLexTargetMark; + var GFxObject pLexVengeanceMark; + var GFxObject pLexExecuteGuide; + var GFxObject pAstroLotus; + var UIComponent_OracleSoulCharges pSoulCharges; + var UIComponent_TelepunchTarget pTelepunch; + var float fHideTimer; + var bool bInParty; + var bool bShowPlayerIcon; + var bool bShowPlayerName; +}; + +struct native UIDeployableOverlay extends UITargetableOverlay +{ + var bool bMine; + var GFxObject pIconParent; + var GFxObject pLeftArc; + var GFxObject pRightArc; + var GFxObject pTopArc; + var GFxObject pPointer; + var GFxObject pBarrageFrame; + var GFxObject pBarrageMeter; + var float fAnimTime; + var UIWorldOverlay.EDeployableOverlayInternalState eState; + var float fDamagePulseTimer; +}; + +var config bool ShowAllTeamAsParty; +var bool m_bSpectatorShowPlayerIcons; +var int m_nDepth; +var int m_nCritCount; +var int m_nLastValue; +var int m_nLastTargetId; +var int m_nDamageNumberType; +var byte m_eLastTargetType; +var float m_fDelta; +var float m_fRange; +var float m_fInterp; +var float m_fCritSpeed; +var float m_fCritBloom; +var float m_fCritTimer; +var float m_fDamageSpeed; +var float m_fDamageBloom; +var float m_fDamageTimer; +var float m_fStatusTimer; +var float m_fStatusSpeed; +var float m_fStatusBloom; +var float m_fHealingSpeed; +var float m_fHealingBloom; +var float m_fHealingTimer; +var float m_fResolutionModX; +var float m_fResolutionModY; +var array m_CritData; +var array m_DamageData; +var array m_StatusData; +var array m_HealingData; +var array m_PlayerOverlays; +var array m_DeployableOverlays; + +event bool GetScreenCoordinates(float fClipSize, Canvas pCanvas, Vector CameraLocation, Vector CameraRotation, Vector ObjectLocation, out Vector ScreenLocation) +{ + local bool bBehind; + local float fClipX, fClipY, fLimitX, fLimitY, fBase, fLineSlope, + fLineConstant; + + local Vector ScreenDirection; + + fClipX = pCanvas.ClipX; + fClipY = pCanvas.ClipY; + fBase = fClipSize / float(2); + fLimitX = fClipX - fBase; + fLimitY = fClipY - fBase; + ScreenLocation = pCanvas.Project(ObjectLocation); + bBehind = (CameraRotation Dot (ObjectLocation - CameraLocation)) <= 0.0000000; + // End:0x1C9 + if(((((ScreenLocation.X > fBase) && ScreenLocation.X < fLimitX) && ScreenLocation.Y > fClipSize) && ScreenLocation.Y < fLimitY) && !bBehind) + { + return false; + } + ScreenDirection = pCanvas.Project(CameraLocation + Normal(ObjectLocation - CameraLocation)); + // End:0x26A + if(((fClipX / 2.0000000) - ScreenDirection.X) == float(0)) + { + ScreenDirection.X -= float(1); + } + fLineSlope = ((fClipY / 2.0000000) - ScreenDirection.Y) / ((fClipX / 2.0000000) - ScreenDirection.X); + fLineConstant = ScreenDirection.Y - (fLineSlope * ScreenDirection.X); + // End:0x378 + if(ScreenDirection.Y > (fClipY / 2.0000000)) + { + ScreenLocation.Y = fLimitY; + } + // End:0x3DB + if(fLineSlope != float(0)) + { + ScreenLocation.X = (ScreenLocation.Y - fLineConstant) / fLineSlope; + } + else + { + ScreenLocation.X = fClipX / 2.0000000; + } + // End:0x4AA + if(ScreenLocation.X > fLimitX) + { + ScreenLocation.X = fLimitX; + ScreenLocation.Y = (fLineSlope * ScreenLocation.X) + fLineConstant; + } + else + { + // End:0x549 + if(ScreenLocation.X < fBase) + { + ScreenLocation.X = fBase; + ScreenLocation.Y = (fLineSlope * ScreenLocation.X) + fLineConstant; + } + } + // End:0x619 + if(bBehind) + { + // End:0x5AF + if(ScreenLocation.X < (fClipX / float(2))) + { + ScreenLocation.X = fLimitX; + } + else + { + ScreenLocation.X = fBase; + } + ScreenLocation.Y = fClipY - ScreenLocation.Y; + } + // End:0x669 + if(ScreenLocation.Y < fBase) + { + ScreenLocation.Y = fBase; + } + return true; + //return ReturnValue; +} + +defaultproperties +{ + m_fInterp=80.0000000 + m_fCritSpeed=12.0000000 + m_fCritBloom=400.0000000 + m_fCritTimer=1.0000000 + m_fDamageSpeed=12.0000000 + m_fDamageBloom=400.0000000 + m_fDamageTimer=1.0000000 + m_fStatusTimer=1.0000000 + m_fStatusSpeed=20.0000000 + m_fStatusBloom=400.0000000 + m_fHealingSpeed=12.0000000 + m_fHealingBloom=400.0000000 + m_fHealingTimer=1.0000000 + m_fResolutionModX=1.0000000 + m_fResolutionModY=1.0000000 + m_bVisibleOnLoad=true + m_bAlwaysTick=true + m_bShowCursor=false + m_bCaptureKeys=false + m_Name="UIWorldOverlay" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/AlienFXManager.uc b/exported/TgGame/Classes/AlienFXManager.uc new file mode 100755 index 00000000..4bbed492 --- /dev/null +++ b/exported/TgGame/Classes/AlienFXManager.uc @@ -0,0 +1,97 @@ +class AlienFXManager extends Object + native; + +const PALADINS_COLOR_CYAN = 0x000fff; +const PALADINS_COLOR_BLUE = 0x195766; +const PALADINS_COLOR_DARK = 0x243745; +const PALADINS_COLOR_RED = 0xbe1e2d; + +enum FXOverlay +{ + FXO_NONE, // 0 + FXO_MENU, // 1 + FXO_CHESTOPENING, // 2 + FXO_CHESTREVEAL, // 3 + FXO_UNLOCKEDCHAMP, // 4 + FXO_MATCHLOBBY, // 5 + FXO_MATCHSETUP, // 6 + FXO_GAMEPLAY, // 7 + FXO_MATCHOVERTIME, // 8 + FXO_MATCHVICTORY, // 9 + FXO_MATCHDEFEAT, // 10 + FXO_POINTVICTORY, // 11 + FXO_POINTDEFEAT, // 12 + FXO_ULT, // 13 + FXO_MAX // 14 +}; + +var bool m_bGood; +var bool m_bLoaded; +var int m_nChestRevealRarity; +var float m_fTransitionTimestamp; +var float m_fTimespan; +var float m_fFrequency; +var dword m_dwPrimaryColor; +var float m_fDecayLambda; +var float c_fUltHalflife; +var AlienFXManager.FXOverlay ePrevOverlay; +var AlienFXManager.FXOverlay eCurrOverlay; + +// Export UAlienFXManager::execInitialize(FFrame&, void* const) +native function Initialize(); + +// Export UAlienFXManager::execClose(FFrame&, void* const) +native function Close(); + +// Export UAlienFXManager::execOnChampionUnlocked(FFrame&, void* const) +native function OnChampionUnlocked(); + +// Export UAlienFXManager::execOnChestOpening(FFrame&, void* const) +native function OnChestOpening(); + +// Export UAlienFXManager::execOnMatchSoon(FFrame&, void* const) +native function OnMatchSoon(float fTimeLeft); + +// Export UAlienFXManager::execOnMatchSetup(FFrame&, void* const) +native function OnMatchSetup(float fTimeLeft); + +// Export UAlienFXManager::execOnMatchPoint(FFrame&, void* const) +native function OnMatchPoint(bool bWon); + +// Export UAlienFXManager::execOnMatchOvertime(FFrame&, void* const) +native function OnMatchOvertime(); + +// Export UAlienFXManager::execOnMatchConcluded(FFrame&, void* const) +native function OnMatchConcluded(bool bVictorious); + +// Export UAlienFXManager::execOnChestOpened(FFrame&, void* const) +native function OnChestOpened(int nRarity); + +// Export UAlienFXManager::execSetOverlay(FFrame&, void* const) +native function SetOverlay(byte Type, optional bool bAlwaysTimestamp); + +// Export UAlienFXManager::execUpdateOverlay(FFrame&, void* const) +native function UpdateOverlay(float DeltaTime); + +// Export UAlienFXManager::execStart(FFrame&, void* const) +native function Start(); + +// Export UAlienFXManager::execTick(FFrame&, void* const) +native function Tick(float DeltaTime); + +// Export UAlienFXManager::execLongMorph(FFrame&, void* const) +native function float LongMorph(float fTime, float fFrequency); + +// Export UAlienFXManager::execBreathe(FFrame&, void* const) +native function float Breathe(float fTime, float fFrequency); + +// Export UAlienFXManager::execDecay(FFrame&, void* const) +native function float Decay(float fLevel, float fLambda); + +// Export UAlienFXManager::execReset(FFrame&, void* const) +native function Reset(); + +defaultproperties +{ + c_fUltHalflife=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/Interface_AIAnnotation.uc b/exported/TgGame/Classes/Interface_AIAnnotation.uc new file mode 100755 index 00000000..a11b7a86 --- /dev/null +++ b/exported/TgGame/Classes/Interface_AIAnnotation.uc @@ -0,0 +1,6 @@ +interface Interface_AIAnnotation extends Interface + abstract + native(Navigation); + +// Export UInterface_AIAnnotation::execGetAdjustedPosition(FFrame&, void* const) +native function GetAdjustedPosition(out Vector out_Position, Pawn AnnotationOwner, Actor Target); diff --git a/exported/TgGame/Classes/None.uc b/exported/TgGame/Classes/None.uc new file mode 100755 index 00000000..8e720fe8 --- /dev/null +++ b/exported/TgGame/Classes/None.uc @@ -0,0 +1 @@ +class None; diff --git a/exported/TgGame/Classes/TgAIAnnotation.uc b/exported/TgGame/Classes/TgAIAnnotation.uc new file mode 100755 index 00000000..24469773 --- /dev/null +++ b/exported/TgGame/Classes/TgAIAnnotation.uc @@ -0,0 +1,48 @@ +class TgAIAnnotation extends TgNavigationPoint + abstract + native(Navigation) + hidecategories(Navigation,Lighting,LightColor,Force) + implements(Interface_AIAnnotation); + +const DEFAULT_RANGE = 150; + +var private native const noexport Pointer VfTable_IInterface_AIAnnotation; +var TgAIController_Behavior.EAIAnnotationType AnnotationType; +var Pawn m_pClaimedBy; + +// Export UTgAIAnnotation::execGetClaimedBy(FFrame&, void* const) +native function Pawn GetClaimedBy(); + +// Export UTgAIAnnotation::execClaim(FFrame&, void* const) +native function Claim(Pawn pClaimedBy); + +// Export UTgAIAnnotation::execInitialize(FFrame&, void* const) +native function Initialize(); + +// Export UTgAIAnnotation::execGetAdjustedPosition(FFrame&, void* const) +native function GetAdjustedPosition(out Vector out_Position, Pawn AnnotationOwner, Actor Target); + +simulated function PostBeginPlay() +{ + super(Actor).PostBeginPlay(); + Initialize(); + //return; +} + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgAIAnnotation.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgNavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction.uc b/exported/TgGame/Classes/TgAIBehaviorAction.uc new file mode 100755 index 00000000..3034ea7e --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction.uc @@ -0,0 +1,4 @@ +class TgAIBehaviorAction extends TgAIBehaviorNode + abstract + native(AI) + hidecategories(Object); diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_AssignLane.uc b/exported/TgGame/Classes/TgAIBehaviorAction_AssignLane.uc new file mode 100755 index 00000000..fd3f0799 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_AssignLane.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_AssignLane extends TgAIBehaviorAction + hidecategories(Object); + +var() int LaneIndex; + +defaultproperties +{ + TitleName="AssignLane" + NodeToken=1048613 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_CancelFiring.uc b/exported/TgGame/Classes/TgAIBehaviorAction_CancelFiring.uc new file mode 100755 index 00000000..fa111cc3 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_CancelFiring.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_CancelFiring extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="CancelFiring" + NodeToken=1048617 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_ClearCombatTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_ClearCombatTarget.uc new file mode 100755 index 00000000..6eef44b1 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_ClearCombatTarget.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_ClearCombatTarget extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="ClearCombatTarget" + NodeToken=1048591 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_ClearLaneMoveTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_ClearLaneMoveTarget.uc new file mode 100755 index 00000000..c83cb157 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_ClearLaneMoveTarget.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_ClearLaneMoveTarget extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="ClearLaneMoveTarget" + NodeToken=1048590 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_ClearLastAttacker.uc b/exported/TgGame/Classes/TgAIBehaviorAction_ClearLastAttacker.uc new file mode 100755 index 00000000..f0b88357 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_ClearLastAttacker.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_ClearLastAttacker extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="ClearLastAttacker" + NodeToken=1048603 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_ClearLookAtTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_ClearLookAtTarget.uc new file mode 100755 index 00000000..00fe596b --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_ClearLookAtTarget.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_ClearLookAtTarget extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="ClearLookAtTarget" + NodeToken=1048592 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_ClearNavigationQueue.uc b/exported/TgGame/Classes/TgAIBehaviorAction_ClearNavigationQueue.uc new file mode 100755 index 00000000..d8408908 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_ClearNavigationQueue.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_ClearNavigationQueue extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="ClearNavigationQueue" + NodeToken=1048576 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_ClearRallyPoint.uc b/exported/TgGame/Classes/TgAIBehaviorAction_ClearRallyPoint.uc new file mode 100755 index 00000000..4241b298 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_ClearRallyPoint.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_ClearRallyPoint extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="ClearRallyPoint" + NodeToken=1048616 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_ClearSpreadLocation.uc b/exported/TgGame/Classes/TgAIBehaviorAction_ClearSpreadLocation.uc new file mode 100755 index 00000000..ab9e6bbc --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_ClearSpreadLocation.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_ClearSpreadLocation extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="ClearSpreadLocation" + NodeToken=1048600 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_FollowCombatTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_FollowCombatTarget.uc new file mode 100755 index 00000000..278bf424 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_FollowCombatTarget.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_FollowCombatTarget extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceSlot; + +defaultproperties +{ + TitleName="FollowCombatTarget" + NodeToken=1048579 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_FollowLane.uc b/exported/TgGame/Classes/TgAIBehaviorAction_FollowLane.uc new file mode 100755 index 00000000..42210713 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_FollowLane.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_FollowLane extends TgAIBehaviorAction + hidecategories(Object); + +var() bool bUseReverseDirection; + +defaultproperties +{ + TitleName="FollowLane" + NodeToken=1048602 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_FollowPatrol.uc b/exported/TgGame/Classes/TgAIBehaviorAction_FollowPatrol.uc new file mode 100755 index 00000000..b5f370f9 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_FollowPatrol.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_FollowPatrol extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="FollowPatrol" + NodeToken=1048609 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_GroupUp.uc b/exported/TgGame/Classes/TgAIBehaviorAction_GroupUp.uc new file mode 100755 index 00000000..58845dbd --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_GroupUp.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorAction_GroupUp extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceSlot; +var() float MinDistance; +var() float MaxDistance; + +defaultproperties +{ + TitleName="GroupUp" + NodeToken=1048714 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_Juke.uc b/exported/TgGame/Classes/TgAIBehaviorAction_Juke.uc new file mode 100755 index 00000000..4a92b85a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_Juke.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorAction_Juke extends TgAIBehaviorAction + hidecategories(Object); + +var() float JukeDist; +var() float JukeProbability; + +defaultproperties +{ + JukeDist=1200.0000000 + JukeProbability=1.0000000 + TitleName="Juke" + NodeToken=1048606 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_Jump.uc b/exported/TgGame/Classes/TgAIBehaviorAction_Jump.uc new file mode 100755 index 00000000..72377633 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_Jump.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_Jump extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="Jump" + NodeToken=1048627 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_Leash.uc b/exported/TgGame/Classes/TgAIBehaviorAction_Leash.uc new file mode 100755 index 00000000..ba90bcba --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_Leash.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_Leash extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="Leash" + NodeToken=1048593 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_LookAtCapturePoint.uc b/exported/TgGame/Classes/TgAIBehaviorAction_LookAtCapturePoint.uc new file mode 100755 index 00000000..b859a7a3 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_LookAtCapturePoint.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_LookAtCapturePoint extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="LookAtCapturePoint" + NodeToken=1048707 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_LookAtCombatTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_LookAtCombatTarget.uc new file mode 100755 index 00000000..128fde25 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_LookAtCombatTarget.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorAction_LookAtCombatTarget extends TgAIBehaviorAction + hidecategories(Object); + +var() bool bAllowAimNose; +var() bool bHeadShot; + +defaultproperties +{ + bAllowAimNose=true + bHeadShot=true + TitleName="LookAtCombatTarget" + NodeToken=1048580 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_LookAtFortress.uc b/exported/TgGame/Classes/TgAIBehaviorAction_LookAtFortress.uc new file mode 100755 index 00000000..c8b539aa --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_LookAtFortress.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_LookAtFortress extends TgAIBehaviorAction + hidecategories(Object); + +var() bool bMustBeEnemy; + +defaultproperties +{ + TitleName="LookAtFortress" + NodeToken=1048706 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_LookAtLanepusher.uc b/exported/TgGame/Classes/TgAIBehaviorAction_LookAtLanepusher.uc new file mode 100755 index 00000000..0be025cb --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_LookAtLanepusher.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_LookAtLanepusher extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="LookAtLanepusher" + NodeToken=1048708 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_LookAtSpawnRotation.uc b/exported/TgGame/Classes/TgAIBehaviorAction_LookAtSpawnRotation.uc new file mode 100755 index 00000000..fe963fb9 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_LookAtSpawnRotation.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_LookAtSpawnRotation extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="LookAtSpawnRotation" + NodeToken=1048595 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_LookAtTargetLKL.uc b/exported/TgGame/Classes/TgAIBehaviorAction_LookAtTargetLKL.uc new file mode 100755 index 00000000..2e7e9e6e --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_LookAtTargetLKL.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_LookAtTargetLKL extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="LookAtTargetLastKnownLocation" + NodeToken=1048721 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_MoveAroundLanePusher.uc b/exported/TgGame/Classes/TgAIBehaviorAction_MoveAroundLanePusher.uc new file mode 100755 index 00000000..88e7ac36 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_MoveAroundLanePusher.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorAction_MoveAroundLanePusher extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceSlot; +var() bool bMoveClockWise; + +defaultproperties +{ + TitleName="MoveAroundLanePusher" + NodeToken=1048713 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_MoveBase.uc b/exported/TgGame/Classes/TgAIBehaviorAction_MoveBase.uc new file mode 100755 index 00000000..f3da318f --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_MoveBase.uc @@ -0,0 +1,9 @@ +class TgAIBehaviorAction_MoveBase extends TgAIBehaviorAction + abstract + hidecategories(Object); + +var() bool bSubtractPawnRadius; +var() bool bSubtractTargetPawnRadius; +var() bool bLookAtTarget; +var() bool bMustHaveLOS; +var() float MoveTolerance; diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_MoveToAssaultPosition.uc b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToAssaultPosition.uc new file mode 100755 index 00000000..5bb19dec --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToAssaultPosition.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_MoveToAssaultPosition extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +defaultproperties +{ + TitleName="MoveToAssaultPosition" + NodeToken=1048623 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_MoveToAvoidableProjectile.uc b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToAvoidableProjectile.uc new file mode 100755 index 00000000..bb378ad7 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToAvoidableProjectile.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorAction_MoveToAvoidableProjectile extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +var() bool bMustBeEnemy; +var() bool bIgnoreInsideCollision; +var() bool bMoveAway; + +defaultproperties +{ + bMoveAway=true + TitleName="MoveToAvoidableProjectile" + NodeToken=1048712 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_MoveToCapturePoint.uc b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToCapturePoint.uc new file mode 100755 index 00000000..67da9e2a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToCapturePoint.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorAction_MoveToCapturePoint extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +var() TgAIController_Behavior.ESelectionArbitrator Arbitrator; +var() bool bTeleport; + +defaultproperties +{ + bLookAtTarget=true + MoveTolerance=4.0000000 + TitleName="MoveToCapturePoint" + NodeToken=1048701 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_MoveToCover.uc b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToCover.uc new file mode 100755 index 00000000..98618209 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToCover.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorAction_MoveToCover extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +var() bool bAllowPopout; + +defaultproperties +{ + bAllowPopout=true + TitleName="MoveToCover" + NodeToken=1048624 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_MoveToDamagingDeployable.uc b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToDamagingDeployable.uc new file mode 100755 index 00000000..5c5e726f --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToDamagingDeployable.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorAction_MoveToDamagingDeployable extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +var() bool bMustBeEnemy; +var() bool bIgnoreInsideCollision; +var() bool bMoveAway; + +defaultproperties +{ + bMoveAway=true + TitleName="MoveToDamagingDeployable" + NodeToken=1048711 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_MoveToDeployable.uc b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToDeployable.uc new file mode 100755 index 00000000..3bc4abcd --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToDeployable.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorAction_MoveToDeployable extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +var() int DeployableId; +var() bool bMustBeEnemy; +var() bool bIgnoreInsideCollision; +var() bool bIgnoreTaskforce; + +defaultproperties +{ + TitleName="MoveToDeployable" + NodeToken=1048628 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_MoveToLanePusher.uc b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToLanePusher.uc new file mode 100755 index 00000000..d237be2d --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToLanePusher.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_MoveToLanePusher extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceSlot; + +defaultproperties +{ + TitleName="MoveToLanePusher" + NodeToken=1048700 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_MoveToLanePusherFront.uc b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToLanePusherFront.uc new file mode 100755 index 00000000..fcf8c238 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToLanePusherFront.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_MoveToLanePusherFront extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceSlot; + +defaultproperties +{ + TitleName="MoveToLanePusherFront" + NodeToken=1048716 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_MoveToLaneTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToLaneTarget.uc new file mode 100755 index 00000000..36ecb3af --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToLaneTarget.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_MoveToLaneTarget extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +defaultproperties +{ + TitleName="MoveToLaneTarget" + NodeToken=1048581 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_MoveToLaneVolume.uc b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToLaneVolume.uc new file mode 100755 index 00000000..1d0ba7bb --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToLaneVolume.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_MoveToLaneVolume extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +var() bool bMustBeSameLane; + +defaultproperties +{ + TitleName="MoveToLaneVolume" + NodeToken=1048605 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_MoveToRallyPoint.uc b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToRallyPoint.uc new file mode 100755 index 00000000..b353c680 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToRallyPoint.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorAction_MoveToRallyPoint extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +var() TgAIController_Behavior.ESelectionArbitrator ArbitratorOnMultipleValid; +var() bool bMustBeSameLane; + +defaultproperties +{ + ArbitratorOnMultipleValid=ESelectionArbitrator.ARBITRATE_RANDOM + TitleName="MoveToRallyPoint" + NodeToken=1048615 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_MoveToShield.uc b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToShield.uc new file mode 100755 index 00000000..645d9672 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToShield.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorAction_MoveToShield extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +var() bool bMustBeEnemy; +var() bool bIgnoreInsideCollision; + +defaultproperties +{ + TitleName="MoveToShield" + NodeToken=1048710 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_MoveToTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToTarget.uc new file mode 100755 index 00000000..4c972fb2 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_MoveToTarget.uc @@ -0,0 +1,7 @@ +class TgAIBehaviorAction_MoveToTarget extends TgAIBehaviorAction_MoveBase + hidecategories(Object); + +defaultproperties +{ + TitleName="MoveToScriptedTarget" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_PauseAI.uc b/exported/TgGame/Classes/TgAIBehaviorAction_PauseAI.uc new file mode 100755 index 00000000..14f8e263 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_PauseAI.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_PauseAI extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="Pause" + NodeToken=1048611 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_PlayEmote.uc b/exported/TgGame/Classes/TgAIBehaviorAction_PlayEmote.uc new file mode 100755 index 00000000..1d3dcd5c --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_PlayEmote.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_PlayEmote extends TgAIBehaviorAction + hidecategories(Object); + +var() TgPawn.EEmote EmoteToPlay; + +defaultproperties +{ + TitleName="PlayEmote" + NodeToken=1048582 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_PlayVGS.uc b/exported/TgGame/Classes/TgAIBehaviorAction_PlayVGS.uc new file mode 100755 index 00000000..920317ac --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_PlayVGS.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorAction_PlayVGS extends TgAIBehaviorAction + native(AI) + hidecategories(Object); + +var() int VoicePackId; +var int VgsId; + +defaultproperties +{ + TitleName="PlayVGS" + NodeToken=1048612 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_PurchaseBurnCards.uc b/exported/TgGame/Classes/TgAIBehaviorAction_PurchaseBurnCards.uc new file mode 100755 index 00000000..9eb8ca39 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_PurchaseBurnCards.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorAction_PurchaseBurnCards extends TgAIBehaviorAction + hidecategories(Object); + +var() int BurnCardId; +var() int DesiredRank; +var() bool bDontPay; + +defaultproperties +{ + TitleName="PurchaseBurnCards" + NodeToken=1048709 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_PurchaseItems.uc b/exported/TgGame/Classes/TgAIBehaviorAction_PurchaseItems.uc new file mode 100755 index 00000000..9f415ff9 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_PurchaseItems.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_PurchaseItems extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="PurchaseItems" + NodeToken=1048583 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_PurchaseSkills.uc b/exported/TgGame/Classes/TgAIBehaviorAction_PurchaseSkills.uc new file mode 100755 index 00000000..25100e53 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_PurchaseSkills.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_PurchaseSkills extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="PurchaseSkills" + NodeToken=1048584 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_Regen.uc b/exported/TgGame/Classes/TgAIBehaviorAction_Regen.uc new file mode 100755 index 00000000..d5756767 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_Regen.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_Regen extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="RegenHealth" + NodeToken=1048610 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_ReloadDevice.uc b/exported/TgGame/Classes/TgAIBehaviorAction_ReloadDevice.uc new file mode 100755 index 00000000..5660bddc --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_ReloadDevice.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_ReloadDevice extends TgAIBehaviorAction + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceToUse; + +defaultproperties +{ + TitleName="ReloadDevice" + NodeToken=1048719 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_RunToOwner.uc b/exported/TgGame/Classes/TgAIBehaviorAction_RunToOwner.uc new file mode 100755 index 00000000..9fb82c42 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_RunToOwner.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_RunToOwner extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +defaultproperties +{ + bLookAtTarget=true + MoveTolerance=5.0000000 + TitleName="RunToOwner" + NodeToken=1048601 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_RunToSpawn.uc b/exported/TgGame/Classes/TgAIBehaviorAction_RunToSpawn.uc new file mode 100755 index 00000000..c72e0751 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_RunToSpawn.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_RunToSpawn extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +defaultproperties +{ + bLookAtTarget=true + MoveTolerance=5.0000000 + TitleName="RunToSpawn" + NodeToken=1048578 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_RunToSpreadLocation.uc b/exported/TgGame/Classes/TgAIBehaviorAction_RunToSpreadLocation.uc new file mode 100755 index 00000000..9f8af391 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_RunToSpreadLocation.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_RunToSpreadLocation extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +defaultproperties +{ + bLookAtTarget=true + MoveTolerance=5.0000000 + TitleName="RunToSpreadLocation" + NodeToken=1048597 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectAllyAttackerAsTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectAllyAttackerAsTarget.uc new file mode 100755 index 00000000..6ab4fac9 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectAllyAttackerAsTarget.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorAction_SelectAllyAttackerAsTarget extends TgAIBehaviorAction_SelectLaneCombatTarget + hidecategories(Object); + +var() float TimeThreshold; +var() float AllyDistanceThreshold; +var() float AttackerDistanceThreshold; + +defaultproperties +{ + TargetSelector=ETargetSelector.TargetSelect_Weakest + TitleName="SelectAllyAttackerAsTarget" + NodeToken=1048722 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTarget_FortressObjective.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTarget_FortressObjective.uc new file mode 100755 index 00000000..67614135 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTarget_FortressObjective.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_SelectCombatTarget_FortressObjective extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="SelectFortressObjectiveCombatTarget" + NodeToken=1048705 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTarget_LanepusherLastAttacker.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTarget_LanepusherLastAttacker.uc new file mode 100755 index 00000000..ee426312 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTarget_LanepusherLastAttacker.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_SelectCombatTarget_LanepusherLastAttacker extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="SelectLanepusherLastAttacker" + NodeToken=1048704 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTarget_OwnerLastAttacker.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTarget_OwnerLastAttacker.uc new file mode 100755 index 00000000..e71769d2 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTarget_OwnerLastAttacker.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_SelectCombatTarget_OwnerLastAttacker extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="SelectOwnerLastAttacker" + NodeToken=1048625 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTargetsTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTargetsTarget.uc new file mode 100755 index 00000000..516788e4 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectCombatTargetsTarget.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_SelectCombatTargetsTarget extends TgAIBehaviorAction + hidecategories(Object); + +var() bool bGodsOnly; + +defaultproperties +{ + TitleName="SelectCombatTargetsTarget" + NodeToken=1048618 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneCombatTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneCombatTarget.uc new file mode 100755 index 00000000..4f8a91f2 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneCombatTarget.uc @@ -0,0 +1,26 @@ +class TgAIBehaviorAction_SelectLaneCombatTarget extends TgAIBehaviorAction + hidecategories(Object); + +var() bool bMustBeEnemy; +var() bool bMustBeSameLane; +var() bool bMustHaveLineOfSight; +var() bool bMustHaveDamagedGod; +var() bool bMustNotBeImmune; +var() bool bMustBeInForwardCone; +var() bool bEffectGroupCategoryCheckInstigator; +var() bool bMustBeHittable; +var() bool bMustNotBeNearShield; +var() TgAIController_Behavior.ETargetSelector TargetSelector; +var() TgAIController_Behavior.ECombatTargetType TargetType; +var() TgAIController_Behavior.ECombatTargetType IgnoreTargetType; +var() int EffectCategoryId; +var() float DistanceThreshold; +var() float ForwardConeAngle; + +defaultproperties +{ + bMustBeEnemy=true + bMustBeHittable=true + TitleName="SelectLaneCombatTarget" + NodeToken=1048585 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneCombatTarget_Jungle.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneCombatTarget_Jungle.uc new file mode 100755 index 00000000..887612da --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneCombatTarget_Jungle.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorAction_SelectLaneCombatTarget_Jungle extends TgAIBehaviorAction + hidecategories(Object); + +var() bool bMustBeWeakest; +var() TgAIController_Behavior.EJungleTargetType TargetType; + +defaultproperties +{ + TitleName="SelectJungleCombatTarget" + NodeToken=1048614 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneCombatTarget_LastAttacker.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneCombatTarget_LastAttacker.uc new file mode 100755 index 00000000..117b2ead --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneCombatTarget_LastAttacker.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorAction_SelectLaneCombatTarget_LastAttacker extends TgAIBehaviorAction + hidecategories(Object); + +var() bool bSkipPawnNotify; +var() bool bMustBeHittable; +var() TgAIController_Behavior.ECombatTargetType IgnoreTargetType; + +defaultproperties +{ + bMustBeHittable=true + TitleName="SelectLastAttacker" + NodeToken=1048586 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTarget.uc new file mode 100755 index 00000000..8b657eee --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTarget.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorAction_SelectLaneMoveTarget extends TgAIBehaviorAction + hidecategories(Object); + +var() bool bMustBeEnemy; +var() bool bMustBePhoenix; +var() bool bMustBeSameLane; + +defaultproperties +{ + TitleName="SelectTowerMoveTarget" + NodeToken=1048587 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTargetAsCombatTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTargetAsCombatTarget.uc new file mode 100755 index 00000000..2ef80574 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTargetAsCombatTarget.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_SelectLaneMoveTargetAsCombatTarget extends TgAIBehaviorAction + hidecategories(Object); + +var() bool bSkipPawnNotify; + +defaultproperties +{ + TitleName="SelectMoveTargetAsCombatTarget" + NodeToken=1048604 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTarget_Jungle.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTarget_Jungle.uc new file mode 100755 index 00000000..8ba74fe2 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTarget_Jungle.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_SelectLaneMoveTarget_Jungle extends TgAIBehaviorAction + hidecategories(Object); + +var() TgAIController_Behavior.EJungleTargetType TargetType; + +defaultproperties +{ + TitleName="SelectJungleMoveTarget" + NodeToken=1048588 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTarget_Minotaur.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTarget_Minotaur.uc new file mode 100755 index 00000000..7dc73ca9 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLaneMoveTarget_Minotaur.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_SelectLaneMoveTarget_Minotaur extends TgAIBehaviorAction + hidecategories(Object); + +var() bool bMustBeEnemy; + +defaultproperties +{ + TitleName="SelectGuardianMoveTarget" + NodeToken=1048589 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectLanepusherCombatTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLanepusherCombatTarget.uc new file mode 100755 index 00000000..a6be515b --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLanepusherCombatTarget.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_SelectLanepusherCombatTarget extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="SelectLanepusherCombatTarget" + NodeToken=1048702 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectLeashCombatTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLeashCombatTarget.uc new file mode 100755 index 00000000..d324bbcd --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectLeashCombatTarget.uc @@ -0,0 +1,21 @@ +class TgAIBehaviorAction_SelectLeashCombatTarget extends TgAIBehaviorAction + hidecategories(Object); + +var() bool bMustBeEnemy; +var() bool bMustBeWeakest; +var() bool bMustHaveLineOfSight; +var() bool bMustHaveDamagedGod; +var() bool bMustNotBeImmune; +var() bool bEffectGroupCategoryCheckInstigator; +var() bool bMustBeHittable; +var() TgAIController_Behavior.ECombatTargetType TargetType; +var() int EffectCategoryId; + +defaultproperties +{ + bMustBeEnemy=true + bMustHaveLineOfSight=true + bMustBeHittable=true + TitleName="SelectLeashCombatTarget" + NodeToken=1048596 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectOwnerCombatTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectOwnerCombatTarget.uc new file mode 100755 index 00000000..dc35d36e --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectOwnerCombatTarget.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_SelectOwnerCombatTarget extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="SelectOwnersCombatTarget" + NodeToken=1048626 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectSquadCombatTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectSquadCombatTarget.uc new file mode 100755 index 00000000..68130664 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectSquadCombatTarget.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_SelectSquadCombatTarget extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="SelectSquadCombatTarget" + NodeToken=1048598 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SelectThreatCombatTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SelectThreatCombatTarget.uc new file mode 100755 index 00000000..ac14b410 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SelectThreatCombatTarget.uc @@ -0,0 +1,20 @@ +class TgAIBehaviorAction_SelectThreatCombatTarget extends TgAIBehaviorAction + hidecategories(Object); + +var() bool bMustBeHighestThreat; +var() bool bMustBeInLeash; +var() bool bMustBeInSightRadius; +var() bool bEffectGroupCategoryCheckInstigator; +var() bool bMustBeHittable; +var() TgAIController_Behavior.ECombatTargetType TargetType; +var() int EffectCategoryId; + +defaultproperties +{ + bMustBeHighestThreat=true + bMustBeInLeash=true + bMustBeInSightRadius=true + bMustBeHittable=true + TitleName="SelectThreatCombatTarget" + NodeToken=1048594 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SetAimDevice.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SetAimDevice.uc new file mode 100755 index 00000000..62195358 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SetAimDevice.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_SetAimDevice extends TgAIBehaviorAction + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceToUse; + +defaultproperties +{ + TitleName="SetAimDevice" + NodeToken=1048717 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SetBotBehaviorState.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SetBotBehaviorState.uc new file mode 100755 index 00000000..cb61697f --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SetBotBehaviorState.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_SetBotBehaviorState extends TgAIBehaviorAction + hidecategories(Object); + +var() TgPawn.EBotBehaviorState DesiredBehaviorState; + +defaultproperties +{ + TitleName="SetBotBehaviorState" + NodeToken=1048718 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SpreadFromSquad.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SpreadFromSquad.uc new file mode 100755 index 00000000..09ab5f18 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SpreadFromSquad.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_SpreadFromSquad extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +var() float SpreadDistance; + +defaultproperties +{ + TitleName="SpreadFromSquad" + NodeToken=1048622 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_StopDevice.uc b/exported/TgGame/Classes/TgAIBehaviorAction_StopDevice.uc new file mode 100755 index 00000000..5cd06c78 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_StopDevice.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_StopDevice extends TgAIBehaviorAction + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceToUse; + +defaultproperties +{ + TitleName="StopDevice" + NodeToken=1048620 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_Strafe.uc b/exported/TgGame/Classes/TgAIBehaviorAction_Strafe.uc new file mode 100755 index 00000000..8981c65b --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_Strafe.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorAction_Strafe extends TgAIBehaviorAction_MoveToTarget + hidecategories(Object); + +var() float StrafeUpdateTime; +var() float DistanceMultiplier; + +defaultproperties +{ + StrafeUpdateTime=1.0000000 + DistanceMultiplier=1.0000000 + TitleName="Strafe" + NodeToken=1048621 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_SuggestSquadCombatTarget.uc b/exported/TgGame/Classes/TgAIBehaviorAction_SuggestSquadCombatTarget.uc new file mode 100755 index 00000000..866f7dca --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_SuggestSquadCombatTarget.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_SuggestSquadCombatTarget extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="SuggestSquadCombatTarget" + NodeToken=1048599 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_UpdateTargetLastKnownLocation.uc b/exported/TgGame/Classes/TgAIBehaviorAction_UpdateTargetLastKnownLocation.uc new file mode 100755 index 00000000..cf0de7da --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_UpdateTargetLastKnownLocation.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorAction_UpdateTargetLastKnownLocation extends TgAIBehaviorAction + hidecategories(Object); + +defaultproperties +{ + TitleName="UpdateTargetLastKnownLocation" + NodeToken=1048720 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_UseActive.uc b/exported/TgGame/Classes/TgAIBehaviorAction_UseActive.uc new file mode 100755 index 00000000..a0aab3ea --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_UseActive.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_UseActive extends TgAIBehaviorAction + hidecategories(Object); + +var() TgAIController_Behavior.EActiveType ActiveType; + +defaultproperties +{ + TitleName="UseActive" + NodeToken=1048608 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_UseConsumable.uc b/exported/TgGame/Classes/TgAIBehaviorAction_UseConsumable.uc new file mode 100755 index 00000000..194d0720 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_UseConsumable.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorAction_UseConsumable extends TgAIBehaviorAction + hidecategories(Object); + +var() TgAIController_Behavior.EConsumableType ConsumableType; + +defaultproperties +{ + TitleName="UseConsumable" + NodeToken=1048607 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_UseDevice.uc b/exported/TgGame/Classes/TgAIBehaviorAction_UseDevice.uc new file mode 100755 index 00000000..c71d2feb --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_UseDevice.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorAction_UseDevice extends TgAIBehaviorAction + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceToUse; +var() TgAIController_Behavior.EUseDeviceAimType aimType; +var() bool bContinuousFire; +var() bool bPayNoEnergy; + +defaultproperties +{ + TitleName="UseDevice" + NodeToken=1048577 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorAction_Wiggle.uc b/exported/TgGame/Classes/TgAIBehaviorAction_Wiggle.uc new file mode 100755 index 00000000..812db223 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorAction_Wiggle.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorAction_Wiggle extends TgAIBehaviorAction + hidecategories(Object); + +var() float WiggleIntensity; + +defaultproperties +{ + WiggleIntensity=1.0000000 + TitleName="Wiggle" + NodeToken=1048715 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorComment.uc b/exported/TgGame/Classes/TgAIBehaviorComment.uc new file mode 100755 index 00000000..7c8e945f --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorComment.uc @@ -0,0 +1,3 @@ +class TgAIBehaviorComment extends TgAIBehaviorObject + native(AI) + hidecategories(Object); diff --git a/exported/TgGame/Classes/TgAIBehaviorComposite.uc b/exported/TgGame/Classes/TgAIBehaviorComposite.uc new file mode 100755 index 00000000..6fcb85d8 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorComposite.uc @@ -0,0 +1,16 @@ +class TgAIBehaviorComposite extends TgAIBehaviorNode + abstract + native(AI) + hidecategories(Object,TgAIBehaviorComposite); + +var init editfixedsize editinline array Children; +var init transient array ChildrenIndices; +var() const editconst bool bCompleteOnAll; +var() const editconst bool bFailsOnAll; +var() const editconst bool bRetryFailedChild; +var editoronly const editconst bool bFixedChildrenSize; + +defaultproperties +{ + bCompleteOnAll=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorComposite_Gated.uc b/exported/TgGame/Classes/TgAIBehaviorComposite_Gated.uc new file mode 100755 index 00000000..dc6fbf3a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorComposite_Gated.uc @@ -0,0 +1,9 @@ +class TgAIBehaviorComposite_Gated extends TgAIBehaviorComposite + native(AI) + hidecategories(Object,TgAIBehaviorComposite,TgAIBehaviorComposite); + +defaultproperties +{ + TitleName="Gated" + NodeToken=4 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorComposite_Parallel.uc b/exported/TgGame/Classes/TgAIBehaviorComposite_Parallel.uc new file mode 100755 index 00000000..137de3a3 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorComposite_Parallel.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorComposite_Parallel extends TgAIBehaviorComposite_Sequence + native(AI) + hidecategories(Object,TgAIBehaviorComposite); + +defaultproperties +{ + bStopOnRunningChild=false + bFailsOnAll=true + TitleName="Parallel" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorComposite_Random.uc b/exported/TgGame/Classes/TgAIBehaviorComposite_Random.uc new file mode 100755 index 00000000..a4fc591b --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorComposite_Random.uc @@ -0,0 +1,14 @@ +class TgAIBehaviorComposite_Random extends TgAIBehaviorComposite + native(AI) + hidecategories(Object,TgAIBehaviorComposite); + +var() editfixedsize editinline array ChildWeights; +var() float ChildFreezeTime; +var() bool bRandomizeOnComplete; + +defaultproperties +{ + bCompleteOnAll=false + TitleName="Random" + NodeToken=3 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorComposite_Sequence.uc b/exported/TgGame/Classes/TgAIBehaviorComposite_Sequence.uc new file mode 100755 index 00000000..77f381b2 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorComposite_Sequence.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorComposite_Sequence extends TgAIBehaviorComposite + native(AI) + hidecategories(Object,TgAIBehaviorComposite); + +var bool bStopOnRunningChild; + +defaultproperties +{ + bStopOnRunningChild=true + TitleName="Sequence" + NodeToken=1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorComposite_SequenceAND.uc b/exported/TgGame/Classes/TgAIBehaviorComposite_SequenceAND.uc new file mode 100755 index 00000000..85a11f5c --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorComposite_SequenceAND.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorComposite_SequenceAND extends TgAIBehaviorComposite_Sequence + hidecategories(Object,TgAIBehaviorComposite); + +defaultproperties +{ + TitleName="SequenceAND" + FriendlyName="AND" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorComposite_SequenceOR.uc b/exported/TgGame/Classes/TgAIBehaviorComposite_SequenceOR.uc new file mode 100755 index 00000000..a0a282bd --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorComposite_SequenceOR.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorComposite_SequenceOR extends TgAIBehaviorComposite_Sequence + hidecategories(Object,TgAIBehaviorComposite); + +defaultproperties +{ + bCompleteOnAll=false + bFailsOnAll=true + TitleName="SequenceOR" + FriendlyName="OR" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorComposite_SequenceScripted.uc b/exported/TgGame/Classes/TgAIBehaviorComposite_SequenceScripted.uc new file mode 100755 index 00000000..9ddc60e5 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorComposite_SequenceScripted.uc @@ -0,0 +1,14 @@ +class TgAIBehaviorComposite_SequenceScripted extends TgAIBehaviorComposite + native(AI) + hidecategories(Object,TgAIBehaviorComposite); + +var() bool bFreezeOnLast; +var() bool bIsLooping; +var(Reset) bool bFirstChildIsResetTest; +var(Reset) bool bResetSequenceOnFailure; + +defaultproperties +{ + TitleName="ScriptedSequence" + NodeToken=2 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorComposite_SubTree.uc b/exported/TgGame/Classes/TgAIBehaviorComposite_SubTree.uc new file mode 100755 index 00000000..849b0417 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorComposite_SubTree.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorComposite_SubTree extends TgAIBehaviorComposite + native(AI) + hidecategories(Object,TgAIBehaviorComposite,TgAIBehaviorComposite); + +var() TgAIBehaviorTree ChildTree; + +defaultproperties +{ + TitleName="SubTree" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition.uc b/exported/TgGame/Classes/TgAIBehaviorCondition.uc new file mode 100755 index 00000000..85a8ff48 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition.uc @@ -0,0 +1,6 @@ +class TgAIBehaviorCondition extends TgAIBehaviorNode + abstract + native(AI) + hidecategories(Object); + +var() TgAIBehaviorNode.EBehaviorComparison ComparisonOperator; diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_AmmoAfterShot.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_AmmoAfterShot.uc new file mode 100755 index 00000000..5eb98cc1 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_AmmoAfterShot.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_AmmoAfterShot extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceSlot; +var() int AmmoThreshold; + +defaultproperties +{ + TitleName="AmmoCountAfterShot" + NodeToken=419 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_AmmoCostPerShot.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_AmmoCostPerShot.uc new file mode 100755 index 00000000..f1306279 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_AmmoCostPerShot.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_AmmoCostPerShot extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceSlot; +var() int AmmoThreshold; + +defaultproperties +{ + TitleName="AmmoCostPerShot" + NodeToken=418 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_AmmoCount.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_AmmoCount.uc new file mode 100755 index 00000000..7a6c1023 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_AmmoCount.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_AmmoCount extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceSlot; +var() int AmmoThreshold; + +defaultproperties +{ + TitleName="AmmoCount" + NodeToken=417 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CanPurchaseItems.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CanPurchaseItems.uc new file mode 100755 index 00000000..710f41ff --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CanPurchaseItems.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_CanPurchaseItems extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="CanPurchaseItems" + NodeToken=259 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CanPurchaseSkills.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CanPurchaseSkills.uc new file mode 100755 index 00000000..7565b65a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CanPurchaseSkills.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_CanPurchaseSkills extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="CanPurchaseSkills" + NodeToken=260 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDamageable.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDamageable.uc new file mode 100755 index 00000000..c47b561d --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDamageable.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_CombatTargetDamageable extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="CombatTargetDamageable" + NodeToken=261 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDamageableByDevice.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDamageableByDevice.uc new file mode 100755 index 00000000..06150184 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDamageableByDevice.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_CombatTargetDamageableByDevice extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceSlot; + +defaultproperties +{ + TitleName="CombatTargetDamageableByDevice" + NodeToken=262 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDamagedFriendlyGod.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDamagedFriendlyGod.uc new file mode 100755 index 00000000..4fc201ed --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDamagedFriendlyGod.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_CombatTargetDamagedFriendlyGod extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="CombatTargetDamagedFriendlyGod" + NodeToken=304 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDistanceFromCapturePoint.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDistanceFromCapturePoint.uc new file mode 100755 index 00000000..8a4d8df5 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDistanceFromCapturePoint.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_CombatTargetDistanceFromCapturePoint extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +defaultproperties +{ + TitleName="CombatTargetDistanceFromCapturePoint" + NodeToken=411 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDistanceOwner.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDistanceOwner.uc new file mode 100755 index 00000000..a23bda8a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDistanceOwner.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_CombatTargetDistanceOwner extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +defaultproperties +{ + TitleName="CombatTargetDistanceFromOwner" + NodeToken=334 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDropped.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDropped.uc new file mode 100755 index 00000000..e70d83a7 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetDropped.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_CombatTargetDropped extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="CombatTargetDropped" + NodeToken=322 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetHasEffectCategory.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetHasEffectCategory.uc new file mode 100755 index 00000000..efbaefb3 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetHasEffectCategory.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorCondition_CombatTargetHasEffectCategory extends TgAIBehaviorCondition + native(AI) + hidecategories(Object); + +var() bool bEffectGroupCategoryCheckInstigator; +var() int EffectCategoryId; +var() int EffectGroupId; + +defaultproperties +{ + TitleName="CombatTargetHasEffectCategory" + NodeToken=306 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetHealthPercent.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetHealthPercent.uc new file mode 100755 index 00000000..60df2d28 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetHealthPercent.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorCondition_CombatTargetHealthPercent extends TgAIBehaviorCondition + hidecategories(Object); + +var() float HealthPct; + +defaultproperties +{ + HealthPct=50.0000000 + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_LessThanOrEqual + TitleName="CombatTargetHealthPercentTest" + NodeToken=263 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetHealthPercentAfterAttack.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetHealthPercentAfterAttack.uc new file mode 100755 index 00000000..db3d1c1c --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetHealthPercentAfterAttack.uc @@ -0,0 +1,14 @@ +class TgAIBehaviorCondition_CombatTargetHealthPercentAfterAttack extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceSlot; +var() float HealthPct; + +defaultproperties +{ + DeviceSlot=TG_EQUIP_POINT.EQP_AUTO + HealthPct=50.0000000 + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_LessThanOrEqual + TitleName="CombatTargetHealthPercentAfterAttackTest" + NodeToken=318 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetInDeviceVolume.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetInDeviceVolume.uc new file mode 100755 index 00000000..a0d728ce --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetInDeviceVolume.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_CombatTargetInDeviceVolume extends TgAIBehaviorCondition + hidecategories(Object); + +var() int DeviceID; +var() bool bMustBeEnemy; + +defaultproperties +{ + TitleName="CombatTargetInsideDeviceVolume" + NodeToken=421 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetIsInMinotaurRadius.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetIsInMinotaurRadius.uc new file mode 100755 index 00000000..d08c31af --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetIsInMinotaurRadius.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_CombatTargetIsInMinotaurRadius extends TgAIBehaviorCondition + hidecategories(Object); + +var() bool bMustBeEnemy; + +defaultproperties +{ + TitleName="CombatTargetIsInMinotaurRadius" + NodeToken=285 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetIsInTowerRadius.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetIsInTowerRadius.uc new file mode 100755 index 00000000..62cbcdc3 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetIsInTowerRadius.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_CombatTargetIsInTowerRadius extends TgAIBehaviorCondition + hidecategories(Object); + +var() bool bMustBeEnemy; + +defaultproperties +{ + TitleName="CombatTargetIsInTowerRadius" + NodeToken=286 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetIsTargetOfFriendlyTowerOrMinotaur.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetIsTargetOfFriendlyTowerOrMinotaur.uc new file mode 100755 index 00000000..130db783 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetIsTargetOfFriendlyTowerOrMinotaur.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_CombatTargetIsTargetOfFriendlyTowerOrMinotaur extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="CombatTargetIsTargetOfFriendlyTowerOrMinotaur" + NodeToken=287 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetPhysicsState.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetPhysicsState.uc new file mode 100755 index 00000000..a7047f46 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CombatTargetPhysicsState.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_CombatTargetPhysicsState extends TgAIBehaviorCondition + hidecategories(Object); + +var Actor.EPhysics PhysicsState; + +defaultproperties +{ + PhysicsState=EPhysics.PHYS_Walking + TitleName="CombatTargetPhysicsState" + NodeToken=327 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_CurrentLevel.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_CurrentLevel.uc new file mode 100755 index 00000000..d4315858 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_CurrentLevel.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_CurrentLevel extends TgAIBehaviorCondition + hidecategories(Object); + +var() int LevelThreshold; + +defaultproperties +{ + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_GreaterThanOrEqual + TitleName="CurrentLevel" + NodeToken=264 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DeltaGodsInCapturePoint.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DeltaGodsInCapturePoint.uc new file mode 100755 index 00000000..5d5d136c --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DeltaGodsInCapturePoint.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_DeltaGodsInCapturePoint extends TgAIBehaviorCondition + hidecategories(Object); + +var() int GodThreshold; + +defaultproperties +{ + TitleName="GodsInCapturePointDelta" + NodeToken=425 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DeviceIsFiring.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DeviceIsFiring.uc new file mode 100755 index 00000000..b2f62268 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DeviceIsFiring.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_DeviceIsFiring extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceSlot; + +defaultproperties +{ + TitleName="DeviceIsFiring" + NodeToken=321 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DeviceReadyToUse.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DeviceReadyToUse.uc new file mode 100755 index 00000000..3ccc7ee9 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DeviceReadyToUse.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_DeviceReadyToUse extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceSlot; + +defaultproperties +{ + TitleName="DeviceReadyToUse" + NodeToken=265 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DifficultyLevel.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DifficultyLevel.uc new file mode 100755 index 00000000..ccf9acac --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DifficultyLevel.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_DifficultyLevel extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgAIController_Behavior.EBotDifficultyLevel Difficulty; + +defaultproperties +{ + TitleName="DifficultyLevel" + NodeToken=311 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceBase.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceBase.uc new file mode 100755 index 00000000..d2cf8ad2 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceBase.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_DistanceBase extends TgAIBehaviorCondition + abstract + hidecategories(Object); + +var() float DistanceThreshold; + +defaultproperties +{ + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_GreaterThanOrEqual +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromAssaultPoint.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromAssaultPoint.uc new file mode 100755 index 00000000..58aaa742 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromAssaultPoint.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_DistanceFromAssaultPoint extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +defaultproperties +{ + TitleName="DistanceFromAssaultPoint" + NodeToken=445 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromAvoidableProjectile.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromAvoidableProjectile.uc new file mode 100755 index 00000000..cd24c179 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromAvoidableProjectile.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_DistanceFromAvoidableProjectile extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +var() bool bMustBeEnemy; + +defaultproperties +{ + TitleName="DistanceFromAvoidableProjectile" + NodeToken=437 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromCapturePoint.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromCapturePoint.uc new file mode 100755 index 00000000..233756f7 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromCapturePoint.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_DistanceFromCapturePoint extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +defaultproperties +{ + TitleName="DistanceFromCapturePoint" + NodeToken=409 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromCombatTarget.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromCombatTarget.uc new file mode 100755 index 00000000..cb8668d3 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromCombatTarget.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_DistanceFromCombatTarget extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +defaultproperties +{ + TitleName="DistanceFromCombatTarget" + NodeToken=291 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromDamagingDeployable.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromDamagingDeployable.uc new file mode 100755 index 00000000..2e5cb5f9 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromDamagingDeployable.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_DistanceFromDamagingDeployable extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +var() bool bMustBeEnemy; + +defaultproperties +{ + TitleName="DistanceFromDamagingDeployable" + NodeToken=436 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromFortressObjective.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromFortressObjective.uc new file mode 100755 index 00000000..f5b1cd10 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromFortressObjective.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_DistanceFromFortressObjective extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +defaultproperties +{ + TitleName="DistanceFromFortressObjective" + NodeToken=410 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromLanePusher.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromLanePusher.uc new file mode 100755 index 00000000..28d42153 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromLanePusher.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_DistanceFromLanePusher extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +defaultproperties +{ + TitleName="DistanceFromLanePusher" + NodeToken=401 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromLaneTarget.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromLaneTarget.uc new file mode 100755 index 00000000..6060390e --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromLaneTarget.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_DistanceFromLaneTarget extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +defaultproperties +{ + TitleName="DistanceFromLaneTarget" + NodeToken=315 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromNavigationDestination.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromNavigationDestination.uc new file mode 100755 index 00000000..d8cdee19 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromNavigationDestination.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_DistanceFromNavigationDestination extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +defaultproperties +{ + TitleName="DistanceFromNavigationDestination" + NodeToken=330 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromOwner.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromOwner.uc new file mode 100755 index 00000000..78365982 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromOwner.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_DistanceFromOwner extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +defaultproperties +{ + TitleName="DistanceFromOwner" + NodeToken=333 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromSelectedTarget.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromSelectedTarget.uc new file mode 100755 index 00000000..635a1e22 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromSelectedTarget.uc @@ -0,0 +1,15 @@ +class TgAIBehaviorCondition_DistanceFromSelectedTarget extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +var() bool bMustBeEnemy; +var() bool bIgnoreTaskforce; +var() TgAIController_Behavior.ETargetSelector TargetSelector; +var() TgAIController_Behavior.ECombatTargetType TargetType; +var() int DeployableId; + +defaultproperties +{ + TargetType=ECombatTargetType.AICombatTarget_God + TitleName="DistanceFromSelectedTarget" + NodeToken=288 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromShield.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromShield.uc new file mode 100755 index 00000000..59920fee --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromShield.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_DistanceFromShield extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +var() bool bMustBeEnemy; + +defaultproperties +{ + TitleName="DistanceFromShield" + NodeToken=433 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromSpawn.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromSpawn.uc new file mode 100755 index 00000000..919bb636 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromSpawn.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_DistanceFromSpawn extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +defaultproperties +{ + TitleName="DistanceFromSpawn" + NodeToken=282 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromSquadTarget.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromSquadTarget.uc new file mode 100755 index 00000000..98ba36fe --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_DistanceFromSquadTarget.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_DistanceFromSquadTarget extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +defaultproperties +{ + TitleName="DistanceFromSquadTarget" + NodeToken=428 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_Energy.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_Energy.uc new file mode 100755 index 00000000..7081df66 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_Energy.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorCondition_Energy extends TgAIBehaviorCondition + hidecategories(Object); + +var() float energy; + +defaultproperties +{ + energy=50.0000000 + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_LessThanOrEqual + TitleName="EnergyTest" + NodeToken=303 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_GameType.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_GameType.uc new file mode 100755 index 00000000..9ba86143 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_GameType.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_GameType extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgObject.TG_GAME_TYPE GameType; + +defaultproperties +{ + TitleName="GameType" + NodeToken=309 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_HasActive.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_HasActive.uc new file mode 100755 index 00000000..47901b95 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_HasActive.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_HasActive extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgAIController_Behavior.EActiveType ActiveType; + +defaultproperties +{ + TitleName="HasActive" + NodeToken=314 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_HasCombatTarget.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_HasCombatTarget.uc new file mode 100755 index 00000000..b237eecd --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_HasCombatTarget.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_HasCombatTarget extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="HasCombatTarget" + NodeToken=266 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_HasConsumable.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_HasConsumable.uc new file mode 100755 index 00000000..96b9a12f --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_HasConsumable.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_HasConsumable extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgAIController_Behavior.EConsumableType ConsumableType; + +defaultproperties +{ + TitleName="HasConsumable" + NodeToken=313 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_HasEffectCategory.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_HasEffectCategory.uc new file mode 100755 index 00000000..9b6103fa --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_HasEffectCategory.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorCondition_HasEffectCategory extends TgAIBehaviorCondition + native(AI) + hidecategories(Object); + +var() int EffectCategoryId; +var() int EffectGroupId; + +defaultproperties +{ + TitleName="HasEffectCategory" + NodeToken=307 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_HasIncomingDamage.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_HasIncomingDamage.uc new file mode 100755 index 00000000..1fa25936 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_HasIncomingDamage.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_HasIncomingDamage extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="HasIncomingDamage" + NodeToken=312 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_HasLaneTarget.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_HasLaneTarget.uc new file mode 100755 index 00000000..c7297acb --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_HasLaneTarget.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_HasLaneTarget extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="HasLaneTarget" + NodeToken=267 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_HasMoveTarget.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_HasMoveTarget.uc new file mode 100755 index 00000000..397f21eb --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_HasMoveTarget.uc @@ -0,0 +1,7 @@ +class TgAIBehaviorCondition_HasMoveTarget extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="HasMoveTarget" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_HasNavigation.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_HasNavigation.uc new file mode 100755 index 00000000..f3de04d2 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_HasNavigation.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_HasNavigation extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="HasNavigation" + NodeToken=332 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_HasSpreadLocation.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_HasSpreadLocation.uc new file mode 100755 index 00000000..7fa1b5c8 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_HasSpreadLocation.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_HasSpreadLocation extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="HasSpreadLocation" + NodeToken=301 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_HealthPercent.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_HealthPercent.uc new file mode 100755 index 00000000..667b7ab7 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_HealthPercent.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorCondition_HealthPercent extends TgAIBehaviorCondition + hidecategories(Object); + +var() float HealthPct; + +defaultproperties +{ + HealthPct=50.0000000 + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_LessThanOrEqual + TitleName="HealthPercentTest" + NodeToken=268 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_InsideDeviceVolume.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_InsideDeviceVolume.uc new file mode 100755 index 00000000..848d1203 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_InsideDeviceVolume.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_InsideDeviceVolume extends TgAIBehaviorCondition + hidecategories(Object); + +var() int DeviceID; +var() bool bMustBeEnemy; + +defaultproperties +{ + TitleName="IsInDeviceVolume" + NodeToken=420 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsActiveCapturePoint.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsActiveCapturePoint.uc new file mode 100755 index 00000000..5ae7cc42 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsActiveCapturePoint.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsActiveCapturePoint extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="DoesActiveCapturePointExist" + NodeToken=416 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsActiveReady.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsActiveReady.uc new file mode 100755 index 00000000..c772cc39 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsActiveReady.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_IsActiveReady extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgAIController_Behavior.EActiveType ActiveType; + +defaultproperties +{ + TitleName="IsActiveReady" + NodeToken=316 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsAtCapturePoint.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsAtCapturePoint.uc new file mode 100755 index 00000000..2a6d41ca --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsAtCapturePoint.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsAtCapturePoint extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsAtCapturePoint" + NodeToken=402 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsAtRallyPoint.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsAtRallyPoint.uc new file mode 100755 index 00000000..df143341 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsAtRallyPoint.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsAtRallyPoint extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsAtRallyPoint" + NodeToken=323 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsAtSpawn.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsAtSpawn.uc new file mode 100755 index 00000000..fc6e7d89 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsAtSpawn.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsAtSpawn extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsAtSpawn" + NodeToken=256 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsAttackingTaskForce.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsAttackingTaskForce.uc new file mode 100755 index 00000000..4cae5a73 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsAttackingTaskForce.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsAttackingTaskForce extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsAttackingTaskForce" + NodeToken=442 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsBotBehaviorState.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsBotBehaviorState.uc new file mode 100755 index 00000000..53196dab --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsBotBehaviorState.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_IsBotBehaviorState extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgPawn.EBotBehaviorState TestBehaviorState; + +defaultproperties +{ + TitleName="IsBotBehaviorState" + NodeToken=444 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsCapturePointVisible.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCapturePointVisible.uc new file mode 100755 index 00000000..50f49da8 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCapturePointVisible.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsCapturePointVisible extends TgAIBehaviorCondition_VisibilityBase + hidecategories(Object); + +defaultproperties +{ + TitleName="IsCapturePointVisible" + NodeToken=413 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetHittable.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetHittable.uc new file mode 100755 index 00000000..e52a6da5 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetHittable.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsCombatTargetHittable extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsCombatTargetHittable" + NodeToken=336 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetHostile.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetHostile.uc new file mode 100755 index 00000000..6d53378a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetHostile.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsCombatTargetHostile extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsCombatTargetHostile" + NodeToken=269 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetInFountain.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetInFountain.uc new file mode 100755 index 00000000..58aea307 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetInFountain.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsCombatTargetInFountain extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsCombatTargetInFountain" + NodeToken=296 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetInLeash.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetInLeash.uc new file mode 100755 index 00000000..a3c655a0 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetInLeash.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsCombatTargetInLeash extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsCombatTargetInLeash" + NodeToken=297 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetInSightRadius.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetInSightRadius.uc new file mode 100755 index 00000000..80ed9a8e --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetInSightRadius.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsCombatTargetInSightRadius extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsCombatTargetInSightRadius" + NodeToken=298 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetLastAttacker.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetLastAttacker.uc new file mode 100755 index 00000000..2102d01d --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetLastAttacker.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsCombatTargetLastAttacker extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsCombatTargetLastAttacker" + NodeToken=310 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetOfType.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetOfType.uc new file mode 100755 index 00000000..f67b0283 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetOfType.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_IsCombatTargetOfType extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgAIController_Behavior.ECombatTargetType TargetType; + +defaultproperties +{ + TitleName="IsCombatTargetOfType" + NodeToken=270 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetShielded.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetShielded.uc new file mode 100755 index 00000000..cdd49b00 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetShielded.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsCombatTargetShielded extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsCombatTargetShielded" + NodeToken=431 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetSquadTarget.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetSquadTarget.uc new file mode 100755 index 00000000..ace9b802 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetSquadTarget.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsCombatTargetSquadTarget extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsCombatTargetSquadTarget" + NodeToken=448 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetStealthed.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetStealthed.uc new file mode 100755 index 00000000..6f7e0a04 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetStealthed.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsCombatTargetStealthed extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsCombatTargetStealthed" + NodeToken=289 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetVisible.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetVisible.uc new file mode 100755 index 00000000..78e3eb8e --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsCombatTargetVisible.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsCombatTargetVisible extends TgAIBehaviorCondition_VisibilityBase + hidecategories(Object); + +defaultproperties +{ + TitleName="IsCombatTargetVisible" + NodeToken=283 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsDecoyState.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsDecoyState.uc new file mode 100755 index 00000000..9dc28324 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsDecoyState.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_IsDecoyState extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgPawn_Illusion.EDecoyAIState DecoyState; + +defaultproperties +{ + TitleName="IsDecoyState" + NodeToken=335 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsDesiredAimDevice.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsDesiredAimDevice.uc new file mode 100755 index 00000000..06084e9a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsDesiredAimDevice.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_IsDesiredAimDevice extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceSlot; + +defaultproperties +{ + TitleName="IsDesiredAimDevice" + NodeToken=443 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsFortressObjectiveVulnerable.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsFortressObjectiveVulnerable.uc new file mode 100755 index 00000000..34677e36 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsFortressObjectiveVulnerable.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsFortressObjectiveVulnerable extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsFortressObjectiveVulnerable" + NodeToken=408 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsInFortress.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsInFortress.uc new file mode 100755 index 00000000..631b2d75 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsInFortress.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_IsInFortress extends TgAIBehaviorCondition + hidecategories(Object); + +var() bool bMustBeEnemy; + +defaultproperties +{ + TitleName="IsInFortress" + NodeToken=405 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsInHostileAbility.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsInHostileAbility.uc new file mode 100755 index 00000000..178e0d12 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsInHostileAbility.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsInHostileAbility extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsInHostileAbility" + NodeToken=258 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsInMinotaurRadius.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsInMinotaurRadius.uc new file mode 100755 index 00000000..31233000 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsInMinotaurRadius.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_IsInMinotaurRadius extends TgAIBehaviorCondition + hidecategories(Object); + +var() bool bMustBeEnemy; + +defaultproperties +{ + TitleName="IsInMinotaurRadius" + NodeToken=271 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsInTowerRadius.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsInTowerRadius.uc new file mode 100755 index 00000000..9500ec6a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsInTowerRadius.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_IsInTowerRadius extends TgAIBehaviorCondition + hidecategories(Object); + +var() bool bMustBeEnemy; + +defaultproperties +{ + TitleName="IsInTowerRadius" + NodeToken=272 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsLanePusherVisible.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsLanePusherVisible.uc new file mode 100755 index 00000000..fc13478e --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsLanePusherVisible.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsLanePusherVisible extends TgAIBehaviorCondition_VisibilityBase + hidecategories(Object); + +defaultproperties +{ + TitleName="IsLanepusherVisible" + NodeToken=422 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsLanepusherActive.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsLanepusherActive.uc new file mode 100755 index 00000000..9df17b8a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsLanepusherActive.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsLanepusherActive extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsLanepusherActive" + NodeToken=426 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsLanepusherHostile.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsLanepusherHostile.uc new file mode 100755 index 00000000..2be5f395 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsLanepusherHostile.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsLanepusherHostile extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsLanepusherHostile" + NodeToken=427 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsLanepusherLastAttackerOfType.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsLanepusherLastAttackerOfType.uc new file mode 100755 index 00000000..e2a212f2 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsLanepusherLastAttackerOfType.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_IsLanepusherLastAttackerOfType extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgAIController_Behavior.ECombatTargetType TargetType; + +defaultproperties +{ + TitleName="IsLanepusherLastAttackerOfType" + NodeToken=407 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsLastAttackerOfType.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsLastAttackerOfType.uc new file mode 100755 index 00000000..6c5ef488 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsLastAttackerOfType.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_IsLastAttackerOfType extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgAIController_Behavior.ECombatTargetType TargetType; + +defaultproperties +{ + TitleName="IsLastAttackerOfType" + NodeToken=292 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsLookingAtCapturePoint.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsLookingAtCapturePoint.uc new file mode 100755 index 00000000..ad2d4a9c --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsLookingAtCapturePoint.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_IsLookingAtCapturePoint extends TgAIBehaviorCondition + hidecategories(Object); + +var() float VisibilityAngle; + +defaultproperties +{ + VisibilityAngle=15.0000000 + TitleName="IsLookingAtCapturePoint" + NodeToken=414 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsLookingAtCombatTarget.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsLookingAtCombatTarget.uc new file mode 100755 index 00000000..280cfc5c --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsLookingAtCombatTarget.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_IsLookingAtCombatTarget extends TgAIBehaviorCondition + hidecategories(Object); + +var() float VisibilityAngle; + +defaultproperties +{ + VisibilityAngle=15.0000000 + TitleName="IsLookingAtCombatTarget" + NodeToken=290 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsMetaGameState.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsMetaGameState.uc new file mode 100755 index 00000000..e411f8f5 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsMetaGameState.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_IsMetaGameState extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgPawn.EMetaGameState TestGameState; + +defaultproperties +{ + TitleName="IsMetaGameState" + NodeToken=400 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsOutsideLeash.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsOutsideLeash.uc new file mode 100755 index 00000000..81d235a1 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsOutsideLeash.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsOutsideLeash extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsOutsideLeash" + NodeToken=299 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsSafeToRecall.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsSafeToRecall.uc new file mode 100755 index 00000000..7d8d9fce --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsSafeToRecall.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsSafeToRecall extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsSafeToRecall" + NodeToken=257 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsSpawnGateOpen.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsSpawnGateOpen.uc new file mode 100755 index 00000000..3d234068 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsSpawnGateOpen.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsSpawnGateOpen extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsSpawnGateOpen" + NodeToken=423 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsSquadTargetShielded.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsSquadTargetShielded.uc new file mode 100755 index 00000000..3f1ef635 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsSquadTargetShielded.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsSquadTargetShielded extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsSquadTargetShielded" + NodeToken=432 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsSquadTargetVisible.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsSquadTargetVisible.uc new file mode 100755 index 00000000..1548d262 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsSquadTargetVisible.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsSquadTargetVisible extends TgAIBehaviorCondition_VisibilityBase + hidecategories(Object); + +defaultproperties +{ + TitleName="IsSquadTargetVisible" + NodeToken=430 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsTargetOfEnemyTowerOrMinotaur.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsTargetOfEnemyTowerOrMinotaur.uc new file mode 100755 index 00000000..93d91769 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsTargetOfEnemyTowerOrMinotaur.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_IsTargetOfEnemyTowerOrMinotaur extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="IsTargetOfEnemyTowerOrMinotaur" + NodeToken=273 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsTargetTypeInLeash.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsTargetTypeInLeash.uc new file mode 100755 index 00000000..f283723c --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsTargetTypeInLeash.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_IsTargetTypeInLeash extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgAIController_Behavior.ECombatTargetType TargetType; + +defaultproperties +{ + TitleName="IsTargetTypeInLeash" + NodeToken=302 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsTooFarFromLane.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsTooFarFromLane.uc new file mode 100755 index 00000000..29e0c5c1 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsTooFarFromLane.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_IsTooFarFromLane extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgAIController_Behavior.ECombatTargetType TargetType; + +defaultproperties +{ + TitleName="IsTooFarFromLane" + NodeToken=305 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsWithinCombatDistance.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsWithinCombatDistance.uc new file mode 100755 index 00000000..232f240b --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsWithinCombatDistance.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorCondition_IsWithinCombatDistance extends TgAIBehaviorCondition + hidecategories(Object); + +var() bool bSubtractTargetPawnRadius; +var() float DistanceThresholdPercent; +var() TgObject.TG_EQUIP_POINT DeviceSlot; + +defaultproperties +{ + DistanceThresholdPercent=1.0000000 + TitleName="IsWithinCombatDistance" + NodeToken=274 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_IsWithinDistance.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_IsWithinDistance.uc new file mode 100755 index 00000000..3501b73a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_IsWithinDistance.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_IsWithinDistance extends TgAIBehaviorCondition + hidecategories(Object); + +var() bool bIsXYOnly; +var() float DistanceCheck; + +defaultproperties +{ + TitleName="IsWithinDistance" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_LanepusherHealthPercent.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_LanepusherHealthPercent.uc new file mode 100755 index 00000000..357d6f32 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_LanepusherHealthPercent.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorCondition_LanepusherHealthPercent extends TgAIBehaviorCondition + hidecategories(Object); + +var() float HealthPct; + +defaultproperties +{ + HealthPct=50.0000000 + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_LessThanOrEqual + TitleName="LanepusherHealthPercentTest" + NodeToken=415 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_ManaPercent.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_ManaPercent.uc new file mode 100755 index 00000000..28fae421 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_ManaPercent.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorCondition_ManaPercent extends TgAIBehaviorCondition + hidecategories(Object); + +var() float ManaPct; + +defaultproperties +{ + ManaPct=50.0000000 + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_LessThanOrEqual + TitleName="ManaPercentTest" + NodeToken=280 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_NearbyAllyAttacked.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_NearbyAllyAttacked.uc new file mode 100755 index 00000000..fb89f9e5 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_NearbyAllyAttacked.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorCondition_NearbyAllyAttacked extends TgAIBehaviorCondition + hidecategories(Object); + +var() float TimeThreshold; +var() float AllyDistanceThreshold; +var() float AttackerDistanceThreshold; + +defaultproperties +{ + TitleName="NearbyAllyAttacked" + NodeToken=446 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_NearbyGodCount.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_NearbyGodCount.uc new file mode 100755 index 00000000..2f8f86c8 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_NearbyGodCount.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorCondition_NearbyGodCount extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +var() bool bMustBeEnemy; +var() bool bMustBeInForwardCone; +var() int GodThreshold; +var() float ForwardConeAngle; + +defaultproperties +{ + TitleName="NearbyGodCount" + NodeToken=275 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_NearbyGodDelta.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_NearbyGodDelta.uc new file mode 100755 index 00000000..2f41eae8 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_NearbyGodDelta.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorCondition_NearbyGodDelta extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +var() int GodThreshold; +var() bool bMustBeInForwardCone; +var() float ForwardConeAngle; + +defaultproperties +{ + TitleName="NearbyGodDelta" + NodeToken=276 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_NearbyTargetTypeCount.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_NearbyTargetTypeCount.uc new file mode 100755 index 00000000..f8a13bea --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_NearbyTargetTypeCount.uc @@ -0,0 +1,14 @@ +class TgAIBehaviorCondition_NearbyTargetTypeCount extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +var() bool bMustBeEnemy; +var() bool bMustBeInForwardCone; +var() int TargetTypeThreshold; +var() TgAIController_Behavior.ECombatTargetType TargetType; +var() float ForwardConeAngle; + +defaultproperties +{ + TitleName="NearbyTargetTypeCount" + NodeToken=277 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_NearbyTargetTypeDelta.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_NearbyTargetTypeDelta.uc new file mode 100755 index 00000000..88f876c6 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_NearbyTargetTypeDelta.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorCondition_NearbyTargetTypeDelta extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +var() int TargetTypeThreshold; +var() TgAIController_Behavior.ECombatTargetType TargetType; +var() bool bMustBeInForwardCone; +var() float ForwardConeAngle; + +defaultproperties +{ + TitleName="NearbyTargetTypeDelta" + NodeToken=278 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_NearestTowerHealthPercent.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_NearestTowerHealthPercent.uc new file mode 100755 index 00000000..55b0f1e4 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_NearestTowerHealthPercent.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorCondition_NearestTowerHealthPercent extends TgAIBehaviorCondition + hidecategories(Object); + +var() bool bMustBeEnemy; +var() float HealthPct; + +defaultproperties +{ + HealthPct=50.0000000 + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_LessThanOrEqual + TitleName="NearestTowerHealthPercent" + NodeToken=295 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_NumDeaths.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_NumDeaths.uc new file mode 100755 index 00000000..22eb4507 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_NumDeaths.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_NumDeaths extends TgAIBehaviorCondition + hidecategories(Object); + +var() int DeathThreshold; + +defaultproperties +{ + TitleName="NumDeaths" + NodeToken=424 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsInCapturePointRadius.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsInCapturePointRadius.uc new file mode 100755 index 00000000..ef8d206c --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsInCapturePointRadius.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_NumGodsInCapturePointRadius extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +var() bool bGodsMustBeEnemy; +var() int GodThreshold; + +defaultproperties +{ + TitleName="NumGodsInCapturePointRadius" + NodeToken=412 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsInLanePusherRadius.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsInLanePusherRadius.uc new file mode 100755 index 00000000..c7fd5a14 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsInLanePusherRadius.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_NumGodsInLanePusherRadius extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +var() bool bGodsMustBeEnemy; +var() int GodThreshold; + +defaultproperties +{ + TitleName="NumGodsInLanePusherRadius" + NodeToken=435 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsInTowerRadius.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsInTowerRadius.uc new file mode 100755 index 00000000..ee74f8c1 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsInTowerRadius.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorCondition_NumGodsInTowerRadius extends TgAIBehaviorCondition + hidecategories(Object); + +var() bool bGodsMustBeEnemy; +var() bool bTowerMustBeEnemy; +var() int GodThreshold; + +defaultproperties +{ + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_GreaterThanOrEqual + TitleName="NumGodsInTowerRadius" + NodeToken=294 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsNearDeployable.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsNearDeployable.uc new file mode 100755 index 00000000..c3925ede --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsNearDeployable.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorCondition_NumGodsNearDeployable extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +var() bool bMustBeEnemy; +var() int DeployableId; +var() int GodThreshold; + +defaultproperties +{ + TitleName="NumGodsNearDeployable" + NodeToken=438 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsNearProjectile.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsNearProjectile.uc new file mode 100755 index 00000000..d3bdbfe9 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_NumGodsNearProjectile.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorCondition_NumGodsNearProjectile extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +var() bool bMustBeEnemy; +var() int ProjectileId; +var() int GodThreshold; + +defaultproperties +{ + TitleName="NumGodsNearProjectile" + NodeToken=439 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_NumMinionsInTowerRadius.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_NumMinionsInTowerRadius.uc new file mode 100755 index 00000000..22f9bf1a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_NumMinionsInTowerRadius.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorCondition_NumMinionsInTowerRadius extends TgAIBehaviorCondition + hidecategories(Object); + +var() bool bMinionsMustBeEnemy; +var() bool bTowerMustBeEnemy; +var() int MinionThreshold; + +defaultproperties +{ + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_GreaterThanOrEqual + TitleName="NumMinionsInTowerRadius" + NodeToken=281 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_NumRallyPoints.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_NumRallyPoints.uc new file mode 100755 index 00000000..52bccc5d --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_NumRallyPoints.uc @@ -0,0 +1,13 @@ +class TgAIBehaviorCondition_NumRallyPoints extends TgAIBehaviorCondition + hidecategories(Object); + +var() int nRallyPointsThreshold; +var() bool bMustBeEnemy; +var() bool bMustBeSameTaskForce; + +defaultproperties +{ + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_GreaterThanOrEqual + TitleName="NumRallyPoints" + NodeToken=324 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_NumberDevicesFiring.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_NumberDevicesFiring.uc new file mode 100755 index 00000000..f168120a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_NumberDevicesFiring.uc @@ -0,0 +1,15 @@ +class TgAIBehaviorCondition_NumberDevicesFiring extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceSlot; +var() bool bMustBeEnemy; +var() bool bIsFiring; +var() int GodThreshold; +var() float DistanceThreshold; + +defaultproperties +{ + bIsFiring=true + TitleName="NumberDevicesFiring" + NodeToken=447 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_PetPhase.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_PetPhase.uc new file mode 100755 index 00000000..28ec37f2 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_PetPhase.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_PetPhase extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgObject.EPetPhase Phase; + +defaultproperties +{ + TitleName="PetPhase" + NodeToken=325 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_PhysicsState.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_PhysicsState.uc new file mode 100755 index 00000000..926a5eb9 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_PhysicsState.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_PhysicsState extends TgAIBehaviorCondition + hidecategories(Object); + +var Actor.EPhysics PhysicsState; + +defaultproperties +{ + PhysicsState=EPhysics.PHYS_Walking + TitleName="PhysicsState" + NodeToken=326 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_ReturnAlways.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_ReturnAlways.uc new file mode 100755 index 00000000..875833fe --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_ReturnAlways.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_ReturnAlways extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgAIBehaviorNode.EBehaviorStatus AlwaysReturn; + +defaultproperties +{ + AlwaysReturn=EBehaviorStatus.BEHAVIOR_Complete + TitleName="ReturnAlways" + NodeToken=319 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_SelectedTargetHealthPercent.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_SelectedTargetHealthPercent.uc new file mode 100755 index 00000000..625f0008 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_SelectedTargetHealthPercent.uc @@ -0,0 +1,18 @@ +class TgAIBehaviorCondition_SelectedTargetHealthPercent extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +var() bool bMustBeEnemy; +var() bool bIgnoreTaskforce; +var() TgAIController_Behavior.ETargetSelector TargetSelector; +var() TgAIController_Behavior.ECombatTargetType TargetType; +var() int TargetId; +var() float HealthPct; + +defaultproperties +{ + TargetType=ECombatTargetType.AICombatTarget_God + HealthPct=50.0000000 + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_LessThanOrEqual + TitleName="SelectedTargetHealthPercent" + NodeToken=293 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_SiegeScore.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_SiegeScore.uc new file mode 100755 index 00000000..a1d55b51 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_SiegeScore.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_SiegeScore extends TgAIBehaviorCondition + hidecategories(Object); + +var() int ScoreThreshold; +var() bool bMustBeEnemy; + +defaultproperties +{ + TitleName="SiegeScore" + NodeToken=449 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_SquadAverageDistance.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_SquadAverageDistance.uc new file mode 100755 index 00000000..30f9fda1 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_SquadAverageDistance.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_SquadAverageDistance extends TgAIBehaviorCondition_DistanceBase + hidecategories(Object); + +defaultproperties +{ + TitleName="SquadAverageDistance" + NodeToken=331 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_SquadTargetHealthPercent.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_SquadTargetHealthPercent.uc new file mode 100755 index 00000000..0b34106b --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_SquadTargetHealthPercent.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorCondition_SquadTargetHealthPercent extends TgAIBehaviorCondition + hidecategories(Object); + +var() float HealthPct; + +defaultproperties +{ + HealthPct=50.0000000 + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_LessThanOrEqual + TitleName="SquadTargetHealthPercentTest" + NodeToken=429 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_TargetsDamageableByDevice.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_TargetsDamageableByDevice.uc new file mode 100755 index 00000000..e35bf4d7 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_TargetsDamageableByDevice.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorCondition_TargetsDamageableByDevice extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgObject.TG_EQUIP_POINT DeviceSlot; +var() TgAIController_Behavior.ECombatTargetType TargetType; +var() int TargetCount; + +defaultproperties +{ + TitleName="NumTargetsDamageableByDevice" + NodeToken=308 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_Taskforce.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_Taskforce.uc new file mode 100755 index 00000000..891e32cf --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_Taskforce.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_Taskforce extends TgAIBehaviorCondition + hidecategories(Object); + +var() int Taskforce; + +defaultproperties +{ + TitleName="Taskforce" + NodeToken=317 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_TeamDeathCount.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_TeamDeathCount.uc new file mode 100755 index 00000000..33672faf --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_TeamDeathCount.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorCondition_TeamDeathCount extends TgAIBehaviorCondition + hidecategories(Object); + +var() bool bMustBeEnemy; +var() int DeathThreshold; + +defaultproperties +{ + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_LessThanOrEqual + TitleName="TeamDeathCount" + NodeToken=434 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_TimeInPayloadMode.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_TimeInPayloadMode.uc new file mode 100755 index 00000000..d97fd05f --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_TimeInPayloadMode.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorCondition_TimeInPayloadMode extends TgAIBehaviorCondition + hidecategories(Object); + +var() float TimeThreshold; + +defaultproperties +{ + TimeThreshold=5.0000000 + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_LessThanOrEqual + TitleName="TimeInPayloadMode" + NodeToken=441 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_TimeSinceLanepusherTookDamage.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_TimeSinceLanepusherTookDamage.uc new file mode 100755 index 00000000..a70fc53f --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_TimeSinceLanepusherTookDamage.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_TimeSinceLanepusherTookDamage extends TgAIBehaviorCondition + hidecategories(Object); + +var() float TimeThreshold; + +defaultproperties +{ + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_LessThanOrEqual + TitleName="TimeSinceLanepusherTookDamage" + NodeToken=406 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_TimeSinceLastTookDamage.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_TimeSinceLastTookDamage.uc new file mode 100755 index 00000000..d866182a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_TimeSinceLastTookDamage.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorCondition_TimeSinceLastTookDamage extends TgAIBehaviorCondition + hidecategories(Object); + +var() float TimeThreshold; +var() bool bMustBeCombatTarget; + +defaultproperties +{ + ComparisonOperator=EBehaviorComparison.BEHAVIORCOMPARE_LessThanOrEqual + TitleName="TimeSinceLastTookDamage" + NodeToken=284 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_Timer.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_Timer.uc new file mode 100755 index 00000000..0b4d7132 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_Timer.uc @@ -0,0 +1,11 @@ +class TgAIBehaviorCondition_Timer extends TgAIBehaviorCondition + hidecategories(Object); + +var() float TimerLength; + +defaultproperties +{ + TimerLength=3.0000000 + TitleName="Timer" + NodeToken=300 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_VisibilityBase.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_VisibilityBase.uc new file mode 100755 index 00000000..2670d0f1 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_VisibilityBase.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_VisibilityBase extends TgAIBehaviorCondition + abstract + hidecategories(Object); + +var() bool bRestrictFoV; + +defaultproperties +{ + bRestrictFoV=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_WhatIsCombatTargetTargeting.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_WhatIsCombatTargetTargeting.uc new file mode 100755 index 00000000..6790c6af --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_WhatIsCombatTargetTargeting.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_WhatIsCombatTargetTargeting extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgAIController_Behavior.ECombatTargetType TargetType; + +defaultproperties +{ + TitleName="WhatIsCombatTargetTargeting" + NodeToken=279 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_WhatIsLastAttackerTargeting.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_WhatIsLastAttackerTargeting.uc new file mode 100755 index 00000000..464e71f0 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_WhatIsLastAttackerTargeting.uc @@ -0,0 +1,10 @@ +class TgAIBehaviorCondition_WhatIsLastAttackerTargeting extends TgAIBehaviorCondition + hidecategories(Object); + +var() TgAIController_Behavior.ECombatTargetType TargetType; + +defaultproperties +{ + TitleName="WhatIsLastAttackerTargeting" + NodeToken=320 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorCondition_WonLastPoint.uc b/exported/TgGame/Classes/TgAIBehaviorCondition_WonLastPoint.uc new file mode 100755 index 00000000..48268a23 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorCondition_WonLastPoint.uc @@ -0,0 +1,8 @@ +class TgAIBehaviorCondition_WonLastPoint extends TgAIBehaviorCondition + hidecategories(Object); + +defaultproperties +{ + TitleName="WonLastPoint" + NodeToken=440 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorNode.uc b/exported/TgGame/Classes/TgAIBehaviorNode.uc new file mode 100755 index 00000000..0d89e0b7 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorNode.uc @@ -0,0 +1,46 @@ +class TgAIBehaviorNode extends TgAIBehaviorObject + abstract + native(AI) + hidecategories(Object); + +enum EBehaviorComparison +{ + BEHAVIORCOMPARE_Equal, // 0 + BEHAVIORCOMPARE_NotEqual, // 1 + BEHAVIORCOMPARE_LessThan, // 2 + BEHAVIORCOMPARE_LessThanOrEqual,// 3 + BEHAVIORCOMPARE_GreaterThan, // 4 + BEHAVIORCOMPARE_GreaterThanOrEqual,// 5 + BEHAVIORCOMPARE_MAX // 6 +}; + +enum EBehaviorStatus +{ + BEHAVIOR_None, // 0 + BEHAVIOR_Complete, // 1 + BEHAVIOR_Running, // 2 + BEHAVIOR_Paused, // 3 + BEHAVIOR_Failed, // 4 + BEHAVIOR_Aborted, // 5 + BEHAVIOR_MAX // 6 +}; + +struct native BehaviorStateData +{ + var float LastTickTime; + var int NodeToken; + var TgAIBehaviorNode.EBehaviorStatus Status; + + structdefaultproperties + { + LastTickTime=0.0000000 + NodeToken=0 + Status=EBehaviorStatus.BEHAVIOR_None + } +}; + +var duplicatetransient TgAIBehaviorNode Parent; +var float InvTickFrequency; +var string TitleName; +var() init string FriendlyName; +var bool bShownInMenu; diff --git a/exported/TgGame/Classes/TgAIBehaviorObject.uc b/exported/TgGame/Classes/TgAIBehaviorObject.uc new file mode 100755 index 00000000..1e8763a5 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorObject.uc @@ -0,0 +1,243 @@ +class TgAIBehaviorObject extends Object + abstract + native(AI) + hidecategories(Object); + +const BNT_NONE = 0; +const BNT_COMPOSITE_SEQUENCE = 1; +const BNT_COMPOSITE_SEQUENCE_SCRIPTED = 2; +const BNT_COMPOSITE_RANDOM = 3; +const BNT_COMPOSITE_GATED = 4; +const BNT_SENSOR_GODS = 8; +const BNT_SENSOR_SIGHT_RADIUS = 9; +const BNT_SENSOR_TOWERS = 10; +const BNT_SENSOR_IN_HOSTILE_ABILITY = 11; +const BNT_SENSOR_PURCHASE_SKILLS = 12; +const BNT_SENSOR_SAFE_TO_RECALL = 13; +const BNT_SENSOR_LEASH = 14; +const BNT_SENSOR_LANE = 15; +const BNT_SENSOR_DEVICE_TARGETING = 16; +const BNT_SENSOR_INCOMING_DAMAGE = 17; +const BNT_SENSOR_RALLY_POINTS = 18; +const BNT_SENSOR_FORTRESS = 21; +const BNT_CONDITION_IS_AT_SPAWN = 256; +const BNT_CONDITION_IS_SAFE_TO_RECALL = 257; +const BNT_CONDITION_IS_IN_HOSTILE_ABILITY = 258; +const BNT_CONDITION_CAN_PURCHASE_ITEMS = 259; +const BNT_CONDITION_CAN_PURCHASE_SKILLS = 260; +const BNT_CONDITION_COMBAT_DAMAGEABLE = 261; +const BNT_CONDITION_COMBAT_DAMAGEABLE_DEVICE = 262; +const BNT_CONDITION_COMBAT_HEALTH_PERCENT = 263; +const BNT_CONDITION_CURRENT_LEVEL = 264; +const BNT_CONDITION_DEVICE_READY = 265; +const BNT_CONDITION_COMBAT_HAS_TARGET = 266; +const BNT_CONDITION_LANE_HAS_TARGET = 267; +const BNT_CONDITION_HEALTH_PERCENT = 268; +const BNT_CONDITION_COMBAT_IS_HOSTILE = 269; +const BNT_CONDITION_COMBAT_IS_OF_TYPE = 270; +const BNT_CONDITION_IS_IN_MINOTAUR_RADIUS = 271; +const BNT_CONDITION_IS_IN_TOWER_RADIUS = 272; +const BNT_CONDITION_IS_TARGET_OF_TWR_OR_MTR = 273; +const BNT_CONDITION_COMBAT_IS_IN_DISTANCE = 274; +const BNT_CONDITION_NEARBY_GOD_COUNT = 275; +const BNT_CONDITION_NEARBY_GOD_DELTA = 276; +const BNT_CONDITION_NEARBY_TARGET_TYPE_COUNT = 277; +const BNT_CONDITION_NEARBY_TARGET_TYPE_DELTA = 278; +const BNT_CONDITION_COMBAT_IS_TARGETING_TYPE = 279; +const BNT_CONDITION_MANA_PERCENT = 280; +const BNT_CONDITION_MINIONS_IN_TOWER_RADIUS = 281; +const BNT_CONDITION_DISTANCE_FROM_SPAWN = 282; +const BNT_CONDITION_COMBAT_IS_VISIBLE = 283; +const BNT_CONDITION_TIME_SINCE_TOOK_DAMAGE = 284; +const BNT_CONDITION_COMBAT_IS_IN_MINOTAUR_RADIUS = 285; +const BNT_CONDITION_COMBAT_IS_IN_TOWER_RADIUS = 286; +const BNT_CONDITION_COMBAT_IS_TARGET_OF_TWR_OR_MTR = 287; +const BNT_CONDITION_DISTANCE_FROM_SELECTED_TARGET = 288; +const BNT_CONDITION_COMBAT_IS_STEALTHED = 289; +const BNT_CONDITION_COMBAT_IS_LOOKING_AT = 290; +const BNT_CONDITION_DISTANCE_FROM_COMBAT_TARGET = 291; +const BNT_CONDITION_IS_LAST_ATTACKER_OF_TYPE = 292; +const BNT_CONDITION_SELECTED_TARGET_HEALTH_PCT = 293; +const BNT_CONDITION_GODS_IN_TOWER_RADIUS = 294; +const BNT_CONDITION_NEAREST_TOWER_HEALTH_PCT = 295; +const BNT_CONDITION_COMBAT_IS_IN_FOUNTAIN = 296; +const BNT_CONDITION_COMBAT_IS_IN_LEASH = 297; +const BNT_CONDITION_COMBAT_IS_IN_SIGHT_RADIUS = 298; +const BNT_CONDITION_IS_OUTSIDE_LEASH = 299; +const BNT_CONDITION_TIMER = 300; +const BNT_CONDITION_HAS_SPREAD_LOCATION = 301; +const BNT_CONDITION_TARGET_TYPE_IS_IN_LEASH = 302; +const BNT_CONDITION_ENERGY = 303; +const BNT_CONDITION_COMBAT_DAMAGED_FRIENDLY_GOD = 304; +const BNT_CONDITION_IS_TOO_FAR_FROM_LANE = 305; +const BNT_CONDITION_COMBAT_HAS_EFFECT_CATEGORY = 306; +const BNT_CONDITION_HAS_EFFECT_CATEGORY = 307; +const BNT_CONDITION_TARGETS_DAMAGEABLE_BY_DEVICE = 308; +const BNT_CONDITION_GAMETYPE = 309; +const BNT_CONDITION_COMBAT_IS_LAST_ATTACKER = 310; +const BNT_CONDITION_DIFFICULTY_LEVEL = 311; +const BNT_CONDITION_INCOMING_DAMAGE = 312; +const BNT_CONDITION_HAS_CONSUMABLE = 313; +const BNT_CONDITION_HAS_ACTIVE = 314; +const BNT_CONDITION_DISTANCE_FROM_LANE_TARGET = 315; +const BNT_CONDITION_IS_ACTIVE_READY = 316; +const BNT_CONDITION_TASKFORCE = 317; +const BNT_CONDITION_COMBAT_HEALTH_AFTER_ATTACK = 318; +const BNT_CONDITION_RETURN_ALWAYS = 319; +const BNT_CONDITION_LAST_ATTACKER_IS_TARGET_TYPE = 320; +const BNT_CONDITION_DEVICE_IS_FIRING = 321; +const BNT_CONDITION_COMBAT_DROPPED = 322; +const BNT_CONDITION_IS_AT_RALLY_POINT = 323; +const BNT_CONDITION_NUM_RALLY_POINTS = 324; +const BNT_CONDITION_PET_PHASE = 325; +const BNT_CONDITION_PHYSICS_STATE = 326; +const BNT_CONDITION_COMBAT_PHYSICS_STATE = 327; +const BNT_CONDITION_DISTANCE_FROM_NAVIGATION_DESTINATION = 330; +const BNT_CONDITION_SQUAD_AVERAGE_DISTANCE = 331; +const BNT_CONDITION_HAS_NAVIGATION = 332; +const BNT_CONDITION_DISTANCE_FROM_OWNER = 333; +const BNT_CONDITION_COMBAT_TARGET_DISTANCE_OWNER = 334; +const BNT_CONDITION_IS_DECOY_STATE = 335; +const BNT_CONDITION_COMBAT_IS_HITTABLE = 336; +const BNT_CONDITION_IS_META_GAME_STATE = 400; +const BNT_CONDITION_DISTANCE_FROM_LANEPUSHER = 401; +const BNT_CONDITION_IS_AT_ACTIVE_CAPTURE_POINT = 402; +const BNT_CONDITION_DISTANCE_FROM_FORTRESS = 404; +const BNT_CONDITION_IS_IN_FORTRESS = 405; +const BNT_CONDITION_TIME_SINCE_LANEPUSHER_TOOK_DAMAGE = 406; +const BNT_CONDITION_IS_LANEPUSHER_LAST_ATTACKER_OF_TYPE = 407; +const BNT_CONDITION_IS_FORTRESS_VULNERABLE = 408; +const BNT_CONDITION_DISTANCE_FROM_CAPTURE_POINT = 409; +const BNT_CONDITION_DISTANCE_FROM_FORTRESS_OBJECTIVE = 410; +const BNT_CONDITION_COMBAT_TARGET_DISTANCE_FROM_CAPTURE_POINT = 411; +const BNT_CONDITION_GODS_IN_CAPTURE_POINT_RADIUS = 412; +const BNT_CONDITION_CAPTURE_POINT_IS_VISIBLE = 413; +const BNT_CONDITION_COMBAT_IS_LOOKING_AT_CAPTURE_POINT = 414; +const BNT_CONDITION_COMBAT_LANEPUSHER_HEALTH_PERCENT = 415; +const BNT_CONDITION_IS_ACTIVE_CAPTURE_POINT = 416; +const BNT_CONDITION_AMMO_COUNT = 417; +const BNT_CONDITION_AMMO_PER_SHOT = 418; +const BNT_CONDITION_AMMO_AFTER_SHOT = 419; +const BNT_CONDITION_IS_IN_DEVICE_VOLUME = 420; +const BNT_CONDITION_COMBAT_TARGET_INSIDE_DEVICE_VOLUME = 421; +const BNT_CONDITION_LANEPUSHER_IS_VISIBLE = 422; +const BNT_CONDITION_IS_SPAWN_GATE_OPEN = 423; +const BNT_CONDITION_NUM_DEATHS = 424; +const BNT_CONDITION_DELTA_GODS_CAPTURE_POINT = 425; +const BNT_CONDITION_IS_LANEPUSHER_ACTIVE = 426; +const BNT_CONDITION_IS_LANEPUSHER_HOSTILE = 427; +const BNT_CONDITION_DISTANCE_FROM_SQUAD_TARGET = 428; +const BNT_CONDITION_SQUAD_HEALTH_PERCENT = 429; +const BNT_CONDITION_SQUAD_IS_VISIBLE = 430; +const BNT_CONDITION_COMBAT_IS_SHIELDED = 431; +const BNT_CONDITION_SQUAD_IS_SHIELDED = 432; +const BNT_CONDITION_DISTANCE_FROM_SHIELD = 433; +const BNT_CONDITION_TEAM_DEATH_COUNT = 434; +const BNT_CONDITION_GODS_IN_LANE_PUSHER_RADIUS = 435; +const BNT_CONDITION_DISTANCE_FROM_DAMAGING_DEPLOYABLE = 436; +const BNT_CONDITION_DISTANCE_FROM_AVOIDABLE_PROJECTILE = 437; +const BNT_CONDITION_NUM_GODS_NEAR_DEPLOYABLE = 438; +const BNT_CONDITION_NUM_GODS_NEAR_PROJECTILE = 439; +const BNT_CONDITION_WON_LAST_POINT = 440; +const BNT_CONDITION_TIME_IN_PAYLOAD_MODE = 441; +const BNT_CONDITION_IS_ATTACKING_TASK_FORCE = 442; +const BNT_CONDITION_IS_DESIRED_AIM_DEVICE = 443; +const BNT_CONDITION_IS_BOT_BEHAVIOR_STATE = 444; +const BNT_CONDITION_DISTANCE_FROM_ASSAULT_POINT = 445; +const BNT_CONDITION_NEARBY_ALLY_ATTACKED = 446; +const BNT_CONDITION_NUMBER_DEVICES_FIRING = 447; +const BNT_CONDITION_COMBAT_IS_SQUAD_TARGET = 448; +const BNT_CONDITION_SIEGE_SCORE = 449; +const BNT_ACTION_CLEAR_NAVIGATION_QUEUE = 1048576; +const BNT_ACTION_USE_DEVICE = 1048577; +const BNT_ACTION_RUN_TO_SPAWN = 1048578; +const BNT_ACTION_FOLLOW_COMBAT_TARGET = 1048579; +const BNT_ACTION_LOOK_AT_COMBAT_TARGET = 1048580; +const BNT_ACTION_MOVE_TO_LANE_TARGET = 1048581; +const BNT_ACTION_PLAY_EMOTE = 1048582; +const BNT_ACTION_PURCHASE_ITEMS = 1048583; +const BNT_ACTION_PURCHASE_SKILLS = 1048584; +const BNT_ACTION_SELECT_COMBAT_LANE = 1048585; +const BNT_ACTION_SELECT_COMBAT_LASTATTACKER = 1048586; +const BNT_ACTION_SELECT_LANE_MOVE = 1048587; +const BNT_ACTION_SELECT_LANE_JUNGLE = 1048588; +const BNT_ACTION_SELECT_LANE_MINOTAUR = 1048589; +const BNT_ACTION_CLEAR_LANE_MOVE_TARGET = 1048590; +const BNT_ACTION_CLEAR_COMBAT_TARGET = 1048591; +const BNT_ACTION_CLEAR_LOOK_AT = 1048592; +const BNT_ACTION_LEASH_TO_SPAWN = 1048593; +const BNT_ACTION_SELECT_COMBAT_THREAT = 1048594; +const BNT_ACTION_LOOK_AT_SPAWN_ROTATION = 1048595; +const BNT_ACTION_SELECT_COMBAT_LEASH = 1048596; +const BNT_ACTION_RUN_TO_SPREAD_LOCATION = 1048597; +const BNT_ACTION_SELECT_COMBAT_SQUAD = 1048598; +const BNT_ACTION_SUGGEST_COMBAT_SQUAD = 1048599; +const BNT_ACTION_CLEAR_SPREAD_LOCATION = 1048600; +const BNT_ACTION_RUN_TO_OWNER = 1048601; +const BNT_ACTION_FOLLOW_LANE = 1048602; +const BNT_ACTION_CLEAR_LAST_ATTACKER = 1048603; +const BNT_ACTION_SELECT_LANE_MOVE_AS_COMBAT_TARGET = 1048604; +const BNT_ACTION_MOVE_TO_LANE_VOLUME = 1048605; +const BNT_ACTION_JUKE = 1048606; +const BNT_ACTION_USE_CONSUMABLE = 1048607; +const BNT_ACTION_USE_ACTIVE = 1048608; +const BNT_ACTION_FOLLOW_PATROL = 1048609; +const BNT_ACTION_REGEN_HEALTH = 1048610; +const BNT_ACTION_PAUSE_AI = 1048611; +const BNT_ACTION_PLAY_VGS = 1048612; +const BNT_ACTION_ASSIGN_LANE = 1048613; +const BNT_ACTION_SELECT_COMBAT_JUNGLE = 1048614; +const BNT_ACTION_MOVE_TO_RALLY_POINT = 1048615; +const BNT_ACTION_CLEAR_RALLY_POINT = 1048616; +const BNT_ACTION_CANCEL_FIRING = 1048617; +const BNT_ACTION_SELECT_COMBAT_TARGETS_TARGET = 1048618; +const BNT_ACTION_FOLLOW_LANE_REVERSE = 1048619; +const BNT_ACTION_STOP_DEVICE = 1048620; +const BNT_ACTION_STRAFE = 1048621; +const BNT_ACTION_SPREAD_FROM_SQUAD = 1048622; +const BNT_ACTION_MOVE_TO_ASSAULT_POSITION = 1048623; +const BNT_ACTION_MOVE_TO_COVER = 1048624; +const BNT_ACTION_SELECT_COMBAT_OWNER_LASTATTACKER = 1048625; +const BNT_ACTION_SELECT_OWNER_COMBAT_TARGET = 1048626; +const BNT_ACTION_JUMP = 1048627; +const BNT_ACTION_MOVE_TO_DEPLOYABLE = 1048628; +const BNT_ACTION_MOVE_TO_LANEPUSHER = 1048700; +const BNT_ACTION_MOVE_TO_CAPTURE_POINT = 1048701; +const BNT_ACTION_SELECT_LANEPUSHER_COMBAT_TARGET = 1048702; +const BNT_ACTION_SELECT_COMBAT_LANEPUSHER_COMBAT = 1048704; +const BNT_ACTION_SELECT_COMBAT_FORTRESS_OBJECTIVE = 1048705; +const BNT_ACTION_LOOK_AT_FORTRESS = 1048706; +const BNT_ACTION_LOOK_AT_CAPTURE_POINT = 1048707; +const BNT_ACTION_LOOK_AT_LANEPUSHER = 1048708; +const BNT_ACTION_PURCHASE_BURN_CARDS = 1048709; +const BNT_ACTION_MOVE_TO_SHIELD = 1048710; +const BNT_ACTION_MOVE_TO_DAMAGING_DEPLOYABLE = 1048711; +const BNT_ACTION_MOVE_TO_AVOIDABLE_PROJECTILE = 1048712; +const BNT_ACTION_MOVE_AROUND_LANEPUSHER = 1048713; +const BNT_ACTION_GROUP_UP = 1048714; +const BNT_ACTION_WIGGLE = 1048715; +const BNT_ACTION_MOVE_TO_LANEPUSHER_FRONT = 1048716; +const BNT_ACTION_SET_AIM_DEVICE = 1048717; +const BNT_ACTION_SET_BOT_BEHAVIOR_STATE = 1048718; +const BNT_ACTION_RELOAD_DEVICE = 1048719; +const BNT_ACTION_UPDATE_TARGET_LAST_KNOWN_LOCATION = 1048720; +const BNT_ACTION_LOOK_AT_TARGET_LKL = 1048721; +const BNT_ACTION_SELECT_ALLY_ATTACKER_AS_TARGET = 1048722; +const BNT_UTILITY_RANDOM = 268435456; +const BNT_UTILITY_FILTER_GAMESTATE = 268435457; +const BNT_UTILITY_COMBAT_TARGET_DISTANCE = 268435458; +const BNT_UTILITY_FORTRESS_DISTANCE = 268435459; +const BNT_UTILITY_DISTANCE2PAWN = 268435460; +const BNT_UTILITY_FILTER_CAPTUREPOINT = 268435461; +const BNT_UTILITY_FILTER_ASSAULTRANGETYPE = 268435462; +const BNT_UTILITY_FILTER_INSIDE_ACTIVE_RALLY_POINT = 268435463; +const BNT_UTILITY_PAWN_DISTANCE_TO_NORMAL = 268435464; +const BNT_UTILITY_COMBAT_TARGET_DISTANCE_TO_NORMAL = 268435465; +const BNT_UTILITY_FILTER_PAYLOAD = 268435466; +const BNT_UTILITY_FILTER_LOSTOTARGET = 268435467; +const BNT_UTILITY_FILTER_STAYINTARGETFOV = 268435468; +const BNT_UTILITY_FILTER_DISTANCEFROMPAWN = 268435469; +const BNT_UTILITY_FILTER_DISTANCEFROMTARGET = 268435470; +const BNT_UTILITY_FILTER_LOSTOTARGETLASTKNOWNLOCATION = 268435471; + +var int NodeToken; diff --git a/exported/TgGame/Classes/TgAIBehaviorSensor.uc b/exported/TgGame/Classes/TgAIBehaviorSensor.uc new file mode 100755 index 00000000..be63b002 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorSensor.uc @@ -0,0 +1,4 @@ +class TgAIBehaviorSensor extends TgAIBehaviorNode + abstract + native(AI) + hidecategories(Object); diff --git a/exported/TgGame/Classes/TgAIBehaviorSensor_Devices.uc b/exported/TgGame/Classes/TgAIBehaviorSensor_Devices.uc new file mode 100755 index 00000000..ad49bfb1 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorSensor_Devices.uc @@ -0,0 +1,9 @@ +class TgAIBehaviorSensor_Devices extends TgAIBehaviorSensor + hidecategories(Object); + +defaultproperties +{ + InvTickFrequency=0.2000000 + TitleName="Device Targeting" + NodeToken=16 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorSensor_Fortress.uc b/exported/TgGame/Classes/TgAIBehaviorSensor_Fortress.uc new file mode 100755 index 00000000..9205f366 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorSensor_Fortress.uc @@ -0,0 +1,9 @@ +class TgAIBehaviorSensor_Fortress extends TgAIBehaviorSensor + hidecategories(Object); + +defaultproperties +{ + InvTickFrequency=1.0000000 + TitleName="Fortress" + NodeToken=21 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorSensor_Gods.uc b/exported/TgGame/Classes/TgAIBehaviorSensor_Gods.uc new file mode 100755 index 00000000..9b02464f --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorSensor_Gods.uc @@ -0,0 +1,9 @@ +class TgAIBehaviorSensor_Gods extends TgAIBehaviorSensor + hidecategories(Object); + +defaultproperties +{ + InvTickFrequency=1.0000000 + TitleName="Gods" + NodeToken=8 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorSensor_InHostileAbility.uc b/exported/TgGame/Classes/TgAIBehaviorSensor_InHostileAbility.uc new file mode 100755 index 00000000..4e83e33a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorSensor_InHostileAbility.uc @@ -0,0 +1,9 @@ +class TgAIBehaviorSensor_InHostileAbility extends TgAIBehaviorSensor + hidecategories(Object); + +defaultproperties +{ + InvTickFrequency=1.0000000 + TitleName="InHostileAbility" + NodeToken=11 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorSensor_IncomingDamage.uc b/exported/TgGame/Classes/TgAIBehaviorSensor_IncomingDamage.uc new file mode 100755 index 00000000..bce253d0 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorSensor_IncomingDamage.uc @@ -0,0 +1,9 @@ +class TgAIBehaviorSensor_IncomingDamage extends TgAIBehaviorSensor + hidecategories(Object); + +defaultproperties +{ + InvTickFrequency=1.0000000 + TitleName="IncomingDamage" + NodeToken=17 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorSensor_Lane.uc b/exported/TgGame/Classes/TgAIBehaviorSensor_Lane.uc new file mode 100755 index 00000000..306ecad1 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorSensor_Lane.uc @@ -0,0 +1,9 @@ +class TgAIBehaviorSensor_Lane extends TgAIBehaviorSensor + hidecategories(Object); + +defaultproperties +{ + InvTickFrequency=1.0000000 + TitleName="Lane" + NodeToken=15 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorSensor_Leash.uc b/exported/TgGame/Classes/TgAIBehaviorSensor_Leash.uc new file mode 100755 index 00000000..edba06b1 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorSensor_Leash.uc @@ -0,0 +1,9 @@ +class TgAIBehaviorSensor_Leash extends TgAIBehaviorSensor + hidecategories(Object); + +defaultproperties +{ + InvTickFrequency=0.2000000 + TitleName="Leash" + NodeToken=14 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorSensor_PurchaseSkills.uc b/exported/TgGame/Classes/TgAIBehaviorSensor_PurchaseSkills.uc new file mode 100755 index 00000000..3cf2352a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorSensor_PurchaseSkills.uc @@ -0,0 +1,9 @@ +class TgAIBehaviorSensor_PurchaseSkills extends TgAIBehaviorSensor + hidecategories(Object); + +defaultproperties +{ + InvTickFrequency=5.0000000 + TitleName="PurchaseSkills" + NodeToken=12 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorSensor_RallyPoints.uc b/exported/TgGame/Classes/TgAIBehaviorSensor_RallyPoints.uc new file mode 100755 index 00000000..16d24123 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorSensor_RallyPoints.uc @@ -0,0 +1,9 @@ +class TgAIBehaviorSensor_RallyPoints extends TgAIBehaviorSensor + hidecategories(Object); + +defaultproperties +{ + InvTickFrequency=1.0000000 + TitleName="RallyPoints" + NodeToken=18 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorSensor_SafeToRecall.uc b/exported/TgGame/Classes/TgAIBehaviorSensor_SafeToRecall.uc new file mode 100755 index 00000000..ac60600a --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorSensor_SafeToRecall.uc @@ -0,0 +1,12 @@ +class TgAIBehaviorSensor_SafeToRecall extends TgAIBehaviorSensor + hidecategories(Object); + +var() float SafeRecallDist; + +defaultproperties +{ + SafeRecallDist=120.0000000 + InvTickFrequency=1.0000000 + TitleName="SafeToRecall" + NodeToken=13 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorSensor_SightRadius.uc b/exported/TgGame/Classes/TgAIBehaviorSensor_SightRadius.uc new file mode 100755 index 00000000..c0085ff8 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorSensor_SightRadius.uc @@ -0,0 +1,9 @@ +class TgAIBehaviorSensor_SightRadius extends TgAIBehaviorSensor + hidecategories(Object); + +defaultproperties +{ + InvTickFrequency=1.0000000 + TitleName="SightRadius" + NodeToken=9 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorSensor_Towers.uc b/exported/TgGame/Classes/TgAIBehaviorSensor_Towers.uc new file mode 100755 index 00000000..ecd2031e --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorSensor_Towers.uc @@ -0,0 +1,9 @@ +class TgAIBehaviorSensor_Towers extends TgAIBehaviorSensor + hidecategories(Object); + +defaultproperties +{ + InvTickFrequency=1.0000000 + TitleName="Towers" + NodeToken=10 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIBehaviorTree.uc b/exported/TgGame/Classes/TgAIBehaviorTree.uc new file mode 100755 index 00000000..4ceb4e97 --- /dev/null +++ b/exported/TgGame/Classes/TgAIBehaviorTree.uc @@ -0,0 +1,7 @@ +class TgAIBehaviorTree extends TgAIBehaviorNode + native(AI) + hidecategories(Object); + +var TgAIBehaviorComposite ChildNode; +var init array SensorNodes; +var init array UtilitySets; diff --git a/exported/TgGame/Classes/TgAIController.uc b/exported/TgGame/Classes/TgAIController.uc new file mode 100755 index 00000000..5ca205ba --- /dev/null +++ b/exported/TgGame/Classes/TgAIController.uc @@ -0,0 +1,344 @@ +class TgAIController extends GameAIController + native(AI) + config(Game) + hidecategories(Navigation); + +const AI_TEAM_PASSTHRU_DISTANCE = 100000; +const AI_DEFAULT_DISTANCE_OFFSET = 50; +const SMITE_MIDPOINT_ROUTE_THRESHOLD = 176.0f; +const SMITE_MINION_INTRASQUAD_SPAWN_DELAY = 0.5f; + +struct native ThreatStruct +{ + var Actor Threatener; + var float fThreat; + + structdefaultproperties + { + Threatener=none + fThreat=0.0000000 + } +}; + +var transient TgPawn m_pOwner; +var transient Vector m_vSpawnLocation; +var transient Rotator m_rSpawnDirection; +var transient TgBotFactory m_pFactory; +var transient int m_nFactorySpawnGroup; +var native const transient Pointer m_pBot; +var native const transient Pointer m_pSettings; +var native const transient Pointer m_pSkin; +var transient int m_iAssignedLane; +var init native map{VOID,VOID} m_SeePawnCache; +var transient float LastSeePawnCacheTime; +var transient float SeePawnClearTime; +var transient TgPawn m_pLastAttacker; +var transient TgAISquad m_Squad; +var transient float LastDamageTakenTime; +var transient Vector LastDamageTakenPosition; +var init native map{VOID,VOID} m_LoSCache; +var transient float LastLoSCacheTime; +var transient HavokNavigationHandle.EHavokNavigationMeshType m_eNavmeshType; +var Actor.EPhysics WalkingPhysics; +var float m_fAILevelUpSecs; +var float VisionDistance; +var float VisionDistanceBonus; +var bool bUsesObstacleAvoidance; +var transient bool bIsPaused; +var transient bool bIsAIFrozen; +var transient TgAIObstacleAvoidance ObstacleAvoidance; +var float ObstacleAvoidanceGridPointSize; +var float ObstacleAvoidanceGridExtents; +var transient Vector SpreadLocation; +var transient TgRepInfo_Player CachedPRI; +var init native map{VOID,VOID} DeviceTargetingCache; +var transient float LastCheckStuckTime; +var transient float CheckStuckTime; +var transient Vector LastCachedStuckPosition; +var transient float LastCheckFlungTime; +var transient float CheckFlungTime; +var transient Vector LastCachedFlungPosition; + +// Export UTgAIController::execAtLocation(FFrame&, void* const) +native function bool AtLocation(Vector vLocation); + +// Export UTgAIController::execIsDeviceReady(FFrame&, void* const) +native function bool IsDeviceReady(TgObject.TG_EQUIP_POINT DeviceSlot); + +// Export UTgAIController::execAddThreat(FFrame&, void* const) +native function AddThreat(TgPawn attacker, float fAmount); + +// Export UTgAIController::execGetTaskForceNumber(FFrame&, void* const) +native function int GetTaskForceNumber(); + +// Export UTgAIController::execSetTaskForceNumber(FFrame&, void* const) +native final function SetTaskForceNumber(int nTaskForce); + +// Export UTgAIController::execLineCheckMovement(FFrame&, void* const) +native final function bool LineCheckMovement(Actor pTarget, optional Actor pSource); + +// Export UTgAIController::execLineCheckVisibility(FFrame&, void* const) +native final function bool LineCheckVisibility(Actor pTarget, optional Actor pSource); + +// Export UTgAIController::execLineCheck(FFrame&, void* const) +native final function bool LineCheck(Vector vLocation, Actor pTarget); + +// Export UTgAIController::execLineCheckEx(FFrame&, void* const) +native final function bool LineCheckEx(Vector vLocation, Actor pTarget, Vector vTarget); + +// Export UTgAIController::execLineCheckPassThrough(FFrame&, void* const) +native final function bool LineCheckPassThrough(Vector vLocation, Actor pTarget, Vector vTarget); + +// Export UTgAIController::execCalculateLobIntersection(FFrame&, void* const) +native function Vector CalculateLobIntersection(Vector targetPos, Vector targetVel, Vector sourcePos, Vector sourceVel, float projVel); + +// Export UTgAIController::execGetVisionDistance(FFrame&, void* const) +native function float GetVisionDistance(); + +// Export UTgAIController::execGetMaxDeviceRange(FFrame&, void* const) +native function float GetMaxDeviceRange(); + +// Export UTgAIController::execUpdateTargetingList(FFrame&, void* const) +native function UpdateTargetingList(array ImpactList, byte EquipSlot); + +// Export UTgAIController::execSquadTargetChanged(FFrame&, void* const) +native function SquadTargetChanged(); + +// Export UTgAIController::execSquadEvade(FFrame&, void* const) +native function SquadEvade(); + +// Export UTgAIController::execEvade(FFrame&, void* const) +native function Evade(); + +// Export UTgAIController::execSetSpreadLocation(FFrame&, void* const) +native function SetSpreadLocation(const out Vector SpreadLoc); + +// Export UTgAIController::execClearSpreadLocation(FFrame&, void* const) +native function ClearSpreadLocation(); + +// Export UTgAIController::execCanSpreadOut(FFrame&, void* const) +native function bool CanSpreadOut(); + +event PostBeginPlay() +{ + super(Controller).PostBeginPlay(); + // End:0x6F + if(bUsesObstacleAvoidance) + { + ObstacleAvoidance = new (self) Class'TgGame.TgAIObstacleAvoidance'; + // End:0x6F + if(ObstacleAvoidance != none) + { + ObstacleAvoidance.Init(ObstacleAvoidanceGridPointSize, ObstacleAvoidanceGridExtents); + } + } + //return; +} + +event Possess(Pawn inPawn, bool bVehicleTransition) +{ + super(Controller).Possess(inPawn, bVehicleTransition); + // End:0x11D + if(inPawn != none) + { + inPawn.WalkingPhysics = WalkingPhysics; + inPawn.SetMovementPhysics(); + // End:0x11D + if(((CachedPRI != none) && !CachedPRI.IsBot()) && TgInventoryManager(inPawn.InvManager) != none) + { + CachedPRI.UpdateBroadcastedItems(TgInventoryManager(inPawn.InvManager)); + } + } + //return; +} + +function InitPlayerReplicationInfo() +{ + super(Controller).InitPlayerReplicationInfo(); + CachedPRI = TgRepInfo_Player(PlayerReplicationInfo); + //return; +} + +function CleanupPRI() +{ + CachedPRI = none; + super(Controller).CleanupPRI(); + //return; +} + +function Destroyed() +{ + super.Destroyed(); + // End:0x45 + if(m_Squad != none) + { + m_Squad.RemoveMember(self, false); + m_Squad = none; + } + //return; +} + +event Despawn() +{ + TgPawn(Pawn).Despawn(); + //return; +} + +event Suicide() +{ + Pawn.Suicide(); + //return; +} + +function PawnDied(Pawn P) +{ + local TgGame ActualGameInfo; + + // End:0x19 + if(P != Pawn) + { + return; + } + // End:0x65 + if(m_pFactory != none) + { + m_pFactory.BotDied(TgPawn(Pawn), self); + m_pFactory = none; + } + // End:0xA0 + if(m_Squad != none) + { + m_Squad.RemoveMember(self, true); + m_Squad = none; + } + ActualGameInfo = TgGame(WorldInfo.Game); + // End:0x100 + if(ActualGameInfo != none) + { + ActualGameInfo.BotDied(self); + } + //return; +} + +function OnTriggerBots(TgSeqAct_TriggerBots Action) +{ + //return; +} + +function OnSetTaskforce(TgSeqAct_SetTaskforce Action) +{ + SetTaskForceNumber(Action.TaskForceNumber); + //return; +} + +function SetActionlessPause(bool bOn) +{ + //return; +} + +function NotifyKilledBy(Controller Killer) +{ + //return; +} + +function NotifyTakeHit(Controller InstigatedBy, Vector HitLocation, int Damage, Class DamageType, Vector Momentum) +{ + local bool bIsEnemy; + local TgPawn AttackedPawn; + + // End:0x1E + if(InstigatedBy == none) + { + bIsEnemy = true; + } + else + { + bIsEnemy = Pawn.IsEnemy(InstigatedBy.Pawn); + AttackedPawn = TgPawn(InstigatedBy.Pawn); + } + // End:0x141 + if(bIsEnemy && AttackedPawn != none) + { + m_pLastAttacker = AttackedPawn; + LastDamageTakenTime = WorldInfo.TimeSeconds; + // End:0x12A + if(Pawn != none) + { + LastDamageTakenPosition = Pawn.Location; + } + else + { + LastDamageTakenPosition = vect(0.0000000, 0.0000000, 0.0000000); + } + } + super(Controller).NotifyTakeHit(InstigatedBy, HitLocation, Damage, DamageType, Momentum); + //return; +} + +function OnExitCombat() +{ + //return; +} + +function OnEnterCombat() +{ + //return; +} + +event DeviceOnStartBuildup(TgDevice Dev) +{ + //return; +} + +event DeviceOnStopBuildup(TgDevice Dev, bool WasInterrupted) +{ + //return; +} + +event DeviceOnStartFire(TgDevice Dev) +{ + //return; +} + +event DeviceOnFire(TgDevice Dev) +{ + //return; +} + +event ProjectileOnFire(TgProjectile Proj) +{ + //return; +} + +event DeviceOnHit(TgDevice Dev, const out ImpactInfo Impact) +{ + //return; +} + +event DeviceOnStopFire(TgDevice Dev, optional bool WasInterrupted = false) +{ + //return; +} + +event NotifyDamagedTarget(TgPawn TargetPawn) +{ + //return; +} + +function NotifyWeaponFired(Weapon W, byte FireMode) +{ + //return; +} + +defaultproperties +{ + m_iAssignedLane=-1 + SeePawnClearTime=0.2500000 + m_fAILevelUpSecs=180.0000000 + ObstacleAvoidanceGridPointSize=32.0000000 + ObstacleAvoidanceGridExtents=1024.0000000 + CheckStuckTime=1.5000000 + CheckFlungTime=0.5000000 + bIsPlayer=true + NavigationHandleClass=Class'Engine.HavokNavigationHandle' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIController_Behavior.uc b/exported/TgGame/Classes/TgAIController_Behavior.uc new file mode 100755 index 00000000..29be807e --- /dev/null +++ b/exported/TgGame/Classes/TgAIController_Behavior.uc @@ -0,0 +1,937 @@ +class TgAIController_Behavior extends TgAIController + native(AI) + config(Game) + hidecategories(Navigation); + +const AIBOARD_BEHAVIOR_GOD = 0x01; +const AIBOARD_BEHAVIOR_MAPNPC = 0x02; +const AIBOARD_BEHAVIOR_PET = 0x04; +const AIBOARD_SQUAD = 0x08; +const AIBOARD_BEHAVIOR_LANENPC = 0x10; + +enum EBotDifficultyLevel +{ + AIDifficulty_Practice, // 0 + AIDifficulty_Easy1, // 1 + AIDifficulty_Easy2, // 2 + AIDifficulty_Medium1, // 3 + AIDifficulty_Medium2, // 4 + AIDifficulty_Hard1, // 5 + AIDifficulty_Hard2, // 6 + AIDifficulty_Pro1, // 7 + AIDifficulty_Pro2, // 8 + AIDifficulty_Max // 9 +}; + +enum ECombatTargetType +{ + AICombatTarget_Any, // 0 + AICombatTarget_God, // 1 + AICombatTarget_Guardian, // 2 + AICombatTarget_Minion, // 3 + AICombatTarget_Tower, // 4 + AICombatTarget_JungleCamp, // 5 + AICombatTarget_Pet, // 6 + AICombatTarget_Decoy, // 7 + AICombatTarget_Deployable, // 8 + AICombatTarget_GodBot, // 9 + AICombatTarget_GodHuman, // 10 + AICombatTarget_SiegeWall, // 11 + AICombatTarget_Turret, // 12 + AICombatTarget_MAX // 13 +}; + +enum EJungleTargetType +{ + AIJungleTarget_Attack, // 0 + AIJungleTarget_Mana, // 1 + AIJungleTarget_Speed, // 2 + AIJungleTarget_BigXP, // 3 + AIJungleTarget_LittleXP, // 4 + AIJungleTarget_GoldFury, // 5 + AIJungleTarget_Nearest, // 6 + AIJungleTarget_MAX // 7 +}; + +enum EConsumableType +{ + AIConsumable_HealthPotion, // 0 + AIConsumable_ManaPotion, // 1 + AIConsumable_MultiPotion, // 2 + AIConsumable_Ward, // 3 + AIConsumable_DamagePotion, // 4 + AIConsumable_DefensePotion, // 5 + AIConsumable_MAX // 6 +}; + +enum EActiveType +{ + AIActive_Meditation, // 0 + AIActive_HandOfGods, // 1 + AIActive_Sprint, // 2 + AIActive_Ward, // 3 + AIActive_Aegis, // 4 + AIActive_Beads, // 5 + AIActive_MAX // 6 +}; + +enum EEffectGroupCategory +{ + AIEffectCategory_None, // 0 + AIEffectCategory_Slow, // 1 + AIEffectCategory_Stun, // 2 + AIEffectCategory_Frozen, // 3 + AIEffectCategory_Knockback, // 4 + AIEffectCategory_Root, // 5 + AIEffectCategory_Silence, // 6 + AIEffectCategory_Disarm, // 7 + AIEffectCategory_Cripple, // 8 + AIEffectCategory_Daze, // 9 + AIEffectCategory_Fear, // 10 + AIEffectCategory_Taunt, // 11 + AIEffectCategory_Mesmerize, // 12 + AIEffectCategory_MAX // 13 +}; + +enum ERangeType +{ + RangeType_Short, // 0 + RangeType_Mid, // 1 + RangeType_Long, // 2 + RangeType_None, // 3 + RangeType_MAX // 4 +}; + +enum EUseDeviceAimType +{ + AIDeviceAim_CombatTarget, // 0 + AIDeviceAim_Self, // 1 + AIDeviceAim_MAX // 2 +}; + +enum ESelectionArbitrator +{ + ARBITRATE_FAIL, // 0 + ARBITRATE_CLOSEST, // 1 + ARBITRATE_RANDOM, // 2 + ARBITRATE_FIRST, // 3 + ARBITRATE_MAX // 4 +}; + +enum ETargetSelector +{ + TargetSelect_Closest, // 0 + TargetSelect_Weakest, // 1 + TargetSelect_Strongest, // 2 + TargetSelect_LowestPercentHealth,// 3 + TargetSelect_Random, // 4 + TargetSelect_MAX // 5 +}; + +enum EAIAnnotationType +{ + AIA_AssaultPoint, // 0 + AIA_CoverPoint, // 1 + AIA_MAX // 2 +}; + +enum EUtilityType +{ + UTIL_Function, // 0 + UTIL_Filter, // 1 + UTIL_MAX // 2 +}; + +struct native DeferredNode +{ + var float WorldTime; + var native Pointer CurrentNode; + var native Pointer CachedStatus; + var native Pointer StorageMemory; + var native Pointer WorkingMemory; + + structdefaultproperties + { + WorldTime=0.0000000 + } +}; + +struct native NavigationQueueEntry +{ + var TgPawn TargetPawn; + var Actor TargetActor; + var Vector TargetLocation; + var bool bNewEntry; + var bool bCanCacheLOS; + var bool bCachedLOS; + var bool bLookAtTarget; + var bool bMustHaveLOS; + var bool bStopNavOnReachedDestination; + var float DistanceTolerance; + var int NodeToken; + var int TeleportIndex; + + structdefaultproperties + { + TargetPawn=none + TargetActor=none + TargetLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + bNewEntry=false + bCanCacheLOS=false + bCachedLOS=false + bLookAtTarget=false + bMustHaveLOS=false + bStopNavOnReachedDestination=false + DistanceTolerance=0.0000000 + NodeToken=0 + TeleportIndex=0 + } +}; + +struct native FollowLaneState +{ + var int LastLaneIndex; + var bool bFinalApproach; + var bool bLockedToMarker; + + structdefaultproperties + { + LastLaneIndex=-1 + bFinalApproach=false + bLockedToMarker=false + } +}; + +struct native IncomingDamageEntry +{ + var TgPawn attacker; + var TgObject.TG_EQUIP_POINT DeviceSlot; + var Vector SourceInitialLocation; + var Rotator SourceInitialAim; + var float ExpireTime; + var float RemovalTime; + var float Weight; + + structdefaultproperties + { + attacker=none + DeviceSlot=TG_EQUIP_POINT.EQP_NONE + SourceInitialLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + SourceInitialAim=(Pitch=0,Yaw=0,Roll=0) + ExpireTime=0.0000000 + RemovalTime=0.0000000 + Weight=0.0000000 + } +}; + +var init transient array DeferredNodes; +var transient int BlackboardType; +var name BehaviorTreeAsName; +var native transient Pointer SensorTree; +var native transient Pointer SensorDynamicMemory; +var native transient Pointer SensorStaticMemory; +var native transient Pointer WorkerTree; +var native transient Pointer WorkerTreeCachedStatus; +var native transient Pointer WorkerDynamicMemory; +var native transient Pointer WorkerStaticMemory; +var transient int SensorNodeCount; +var transient int WorkerNodeCount; +var transient float LastUpdateTime; +var init transient array CachedNodeData; +var float m_fCooldownModifier; +var float m_fLeadAccuracy; +var float m_fRefireSpeedModifier; +var float m_fDegreeMissedMagnitude; +var float m_fMissLikelihood; +var transient TgAILocalPositionSolver LocalRepulsorSolver; +var Class LocalRepulsorSolverClass; +var transient NavigationQueueEntry CurrentNavigation; +var transient float NavigationSearchModifier; +var float NavigationSearchModifier_Max; +var float NavigationSearchModifier_Min; +var FollowLaneState FollowLaneForwardState; +var FollowLaneState FollowLaneReverseState; +var transient bool bIsAlive; +var protected transient bool m_bPaused; +var transient bool bIsRotationLocked; +var transient bool bIsStunned; +var transient bool bInHostileAbility; +var transient bool bIsSafeToRecall; +var transient bool bInEnemyTowerRadius; +var transient bool bInFriendlyTowerRadius; +var transient bool bInEnemyMinotaurRadius; +var transient bool bInFriendlyMinotaurRadius; +var transient bool bIsTargetOfEnemyTowerOrMinotaur; +var transient bool bCombatTargetInEnemyTowerRadius; +var transient bool bCombatTargetInFriendlyTowerRadius; +var transient bool bCombatTargetInEnemyMinotaurRadius; +var transient bool bCombatTargetInFriendlyMinotaurRadius; +var transient bool bCombatTargetIsTargetOfFriendlyTowerOrMinotaur; +var transient bool bIsAtFortress; +var transient bool bIsAtEnemyFortress; +var transient bool bIsAtCachedRallyPoint; +var bool bBtDebugSpawnPaused; +var transient bool bBtDebugPaused; +var transient bool bBtDebugStep; +var transient bool bBtDebugClientOverlay; +var transient Vector NextFearDirection; +var transient float PawnCollisionHeight; +var transient float PawnCollisionRadius; +var transient float DeviceRanges[25]; +var transient Actor CombatTarget; +var transient TgPawn CombatTargetAsPawn; +var transient int EnemyMinionsInEnemyTowerRadius; +var transient int FriendlyMinionsInEnemyTowerRadius; +var transient int EnemyMinionsInFriendlyTowerRadius; +var transient int FriendlyMinionsInFriendlyTowerRadius; +var transient int EnemyGodsInEnemyTowerRadius; +var transient int FriendlyGodsInEnemyTowerRadius; +var transient int EnemyGodsInFriendlyTowerRadius; +var transient int FriendlyGodsInFriendlyTowerRadius; +var transient float HealthOfNearestEnemyTower; +var transient float HealthOfNearestFriendlyTower; +var transient Actor LaneMoveTarget; +var init transient array VisibleActorsToAvoid; +var init transient array CachedTowers; +var init transient array CachedGods; +var transient array EnemyControllersInSightRadius; +var transient array FriendlyControllersInSightRadius; +var transient TgAIController_Behavior.EBotDifficultyLevel Difficulty; +var transient TgAIController_Behavior.EUseDeviceAimType LastUseDeviceAimType; +var transient Vector TargetLastKnownLocation; +var transient TgAIAnnotation CurrentAssaultPoint; +var transient array IncomingDamage; +var transient TgAIVolume CachedRallyVolume; +var transient int RandomRallyPointIndex; +var transient TgPawn_SiegeWall FortressObjective; +var transient Vector AlliedFortressLookDir; +var transient Vector EnemyFortressLookDir; +var transient TgFortressVolume AlliedFortress; +var transient TgFortressVolume EnemyFortress; +var transient Vector StrafeDir; +var transient float LastStrafeDirUpdate; +var transient float StrafeDirUpdateTime; +var Class UtilityHandleClass; +var transient TgAIUtilityHandle UtilityHandle; +var transient Actor EscortActor; +var transient float EscortMinDistance; +var transient float EscortMaxDistance; +var transient int m_nDevicesLockingInput; + +event UpdatePawnDebug() +{ + local TgPawn TgP; + + TgP = TgPawn(Pawn); + // End:0x64 + if((!bBtDebugClientOverlay || TgP == none) || !TgP.r_bDebugShowAIDebug) + { + return; + } + TgP.r_sDebugName = string(Pawn); + TgP.r_sDebugFactory = string(m_pFactory); + TgP.r_nDebugSightRange = int(GetVisionDistance()); + TgP.r_nDebugHearingRange = int(Pawn.HearingThreshold); + TgP.r_nDebugFOV = int(Pawn.PeripheralVision); + TgP.r_aDebugTarget = CombatTarget; + TgP.r_aDebugDestination = LaneMoveTarget; + TgP.r_vDebugNextNavMeshPoint = GetDestinationPosition(); + TgP.r_vDebugSpreadoutLocation = SpreadLocation; + // End:0x5F5 + if(!bIsPaused) + { + switch(CurrentNavigation.NodeToken) + { + // End:0x277 + case 1048579: + TgP.r_sDebugAction = "Follow Combat Target"; + // End:0x5F2 + break; + // End:0x2B6 + case 1048581: + TgP.r_sDebugAction = "Move to Lane Target"; + // End:0x5F2 + break; + // End:0x2EE + case 1048578: + TgP.r_sDebugAction = "Run To Spawn"; + // End:0x5F2 + break; + // End:0x326 + case 1048601: + TgP.r_sDebugAction = "Run To Owner"; + // End:0x5F2 + break; + // End:0x35D + case 1048602: + TgP.r_sDebugAction = "Follow Lane"; + // End:0x5F2 + break; + // End:0x39E + case 1048619: + TgP.r_sDebugAction = "Follow Lane - Reverse"; + // End:0x5F2 + break; + // End:0x3E0 + case 1048597: + TgP.r_sDebugAction = "Run to Spread Location"; + // End:0x5F2 + break; + // End:0x41E + case 1048700: + TgP.r_sDebugAction = "Move to Lanepusher"; + // End:0x5F2 + break; + // End:0x45F + case 1048701: + TgP.r_sDebugAction = "Move to Capture Point"; + // End:0x5F2 + break; + // End:0x4A3 + case 1048623: + TgP.r_sDebugAction = "Move to Assault Position"; + // End:0x5F2 + break; + // End:0x4D5 + case 1048621: + TgP.r_sDebugAction = "Strafe"; + // End:0x5F2 + break; + // End:0x512 + case 1048622: + TgP.r_sDebugAction = "Spread From Squad"; + // End:0x5F2 + break; + // End:0x550 + case 1048628: + TgP.r_sDebugAction = "Move to Deployable"; + // End:0x5F2 + break; + // End:0x589 + case 1048624: + TgP.r_sDebugAction = "Move to Cover"; + // End:0x5F2 + break; + // End:0x5C7 + case 1048615: + TgP.r_sDebugAction = "Run to Rally Point"; + // End:0x5F2 + break; + // End:0xFFFF + default: + TgP.r_sDebugAction = "None"; + // End:0x5F2 + break; + break; + } + } + else + { + TgP.r_sDebugAction = "PAUSED"; + } + //return; +} + +simulated function Debug_Pause() +{ + bBtDebugPaused = true; + //return; +} + +simulated function Debug_Step() +{ + // End:0x1B + if(!bBtDebugPaused) + { + bBtDebugPaused = true; + } + bBtDebugStep = true; + //return; +} + +simulated function Debug_Resume() +{ + bBtDebugPaused = false; + bBtDebugStep = false; + //return; +} + +simulated function Debug_Reset() +{ + Debug_Resume(); + ResetBlackboard(); + //return; +} + +// Export UTgAIController_Behavior::execSpawnDebuggerWindow(FFrame&, void* const) +native function SpawnDebuggerWindow(); + +// Export UTgAIController_Behavior::execCleanupBehaviorTree(FFrame&, void* const) +native function CleanupBehaviorTree(); + +// Export UTgAIController_Behavior::execResetBehaviorTree(FFrame&, void* const) +native function ResetBehaviorTree(); + +// Export UTgAIController_Behavior::execLoadBehaviorTree(FFrame&, void* const) +native function LoadBehaviorTree(optional name TreeName); + +event PreBeginPlay() +{ + bIsAlive = true; + super(AIController).PreBeginPlay(); + //return; +} + +event PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x31 + if(LocalRepulsorSolverClass != none) + { + LocalRepulsorSolver = new (self) LocalRepulsorSolverClass; + } + // End:0x58 + if(UtilityHandleClass != none) + { + UtilityHandle = new (self) UtilityHandleClass; + } + //return; +} + +event Destroyed() +{ + CleanupBehaviorTree(); + super.Destroyed(); + //return; +} + +event Possess(Pawn inPawn, bool bVehicleTransition) +{ + local TgPawn TgP; + local TgGame_Paladins ChaosGame; + + super.Possess(inPawn, bVehicleTransition); + bBtDebugPaused = bBtDebugSpawnPaused; + TgP = TgPawn(Pawn); + // End:0x115 + if(TgP != none) + { + PawnCollisionRadius = TgP.GetCollisionRadius(); + PawnCollisionHeight = TgP.GetCollisionHeight(); + NavMeshPath_SearchExtent_Modifier.X = PawnCollisionRadius * 0.2500000; + NavMeshPath_SearchExtent_Modifier.Y = NavMeshPath_SearchExtent_Modifier.X; + } + ChaosGame = TgGame_Paladins(WorldInfo.Game); + // End:0x17E + if(ChaosGame != none) + { + ChaosGame.UpdateTgPawnMetaGameState(TgP); + } + //return; +} + +event ResetBlackboard() +{ + ResetBehaviorTree(); + StopNavigation(); + CombatTarget = none; + CombatTargetAsPawn = none; + LaneMoveTarget = none; + VisibleActorsToAvoid.Remove(0, VisibleActorsToAvoid.Length); + CachedTowers.Remove(0, CachedTowers.Length); + CachedGods.Remove(0, CachedGods.Length); + EnemyControllersInSightRadius.Remove(0, EnemyControllersInSightRadius.Length); + FriendlyControllersInSightRadius.Remove(0, FriendlyControllersInSightRadius.Length); + CachedRallyVolume = none; + //return; +} + +// Export UTgAIController_Behavior::execHasVisibilityToPoint(FFrame&, void* const) +native function bool HasVisibilityToPoint(const out Vector TestPoint); + +// Export UTgAIController_Behavior::execAddActorToNavigationQueue(FFrame&, void* const) +native function AddActorToNavigationQueue(int NodeToken, Actor TargetActor, bool bLookAtTarget, bool bMustHaveLOS, float DistanceTolerance, optional bool bStopNavOnReachedDestination = true); + +// Export UTgAIController_Behavior::execAddLocationToNavigationQueue(FFrame&, void* const) +native function AddLocationToNavigationQueue(int NodeToken, Vector TargetLocation, bool bLookAtTarget, bool bMustHaveLOS, float DistanceTolerance); + +// Export UTgAIController_Behavior::execClearNavigation(FFrame&, void* const) +native function ClearNavigation(); + +// Export UTgAIController_Behavior::execStopNavigation(FFrame&, void* const) +native function StopNavigation(); + +// Export UTgAIController_Behavior::execUpdateDeviceRanges(FFrame&, void* const) +native function UpdateDeviceRanges(); + +simulated function Stun(bool bStun, optional Controller.EStunType eType = 0) +{ + m_eCurrentStunType = eType; + bIsStunned = bStun; + bPreciseDestination = false; + // End:0xB0 + if((Pawn != none) && bStun) + { + Pawn.Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + Pawn.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + } + NextFearDirection = vect(0.0000000, 0.0000000, 0.0000000); + //return; +} + +// Export UTgAIController_Behavior::execGetCooldownIncrease(FFrame&, void* const) +native function float GetCooldownIncrease(); + +// Export UTgAIController_Behavior::execCalculateAim(FFrame&, void* const) +native function Vector CalculateAim(bool bHeadShot); + +event bool FireDevice(TgObject.TG_EQUIP_POINT DeviceSlot, bool bContinuousFire, optional TgAIController_Behavior.EUseDeviceAimType aimType = 0) +{ + local bool bFireSuccessful, bUseAltFire; + local TgDevice DevToFire, AltFireSecondModeDev, Mount; + local TgPawn aPawn; + + aPawn = TgPawn(Pawn); + // End:0x33 + if(aPawn == none) + { + return false; + } + // End:0x49 + if(int(m_eCurrentStunType) != int(0)) + { + return false; + } + DevToFire = aPawn.m_EquippedDevices[int(DeviceSlot)]; + // End:0x8E + if(DevToFire == none) + { + return false; + } + // End:0xD6 + if(DevToFire.IsEquipping() || DevToFire.IsFiring()) + { + return true; + } + LastUseDeviceAimType = aimType; + // End:0x188 + if(DevToFire.ShouldInterruptMount()) + { + Mount = aPawn.GetDeviceByEqPoint(23); + // End:0x188 + if((Mount != none) && Mount.CanBeCanceled()) + { + Mount.InterruptFiring(); + } + } + // End:0x25C + if(int(DeviceSlot) == int(16)) + { + AltFireSecondModeDev = aPawn.m_EquippedDevices[1]; + // End:0x25C + if(((AltFireSecondModeDev != none) && AltFireSecondModeDev.m_bAltFireEnabled) && int(AltFireSecondModeDev.m_AltFireType) == int(1)) + { + AltFireSecondModeDev.AltUse(true); + bFireSuccessful = true; + bUseAltFire = true; + } + } + // End:0x28C + if(bUseAltFire) + { + AltFireSecondModeDev.AltUse(false); + } + else + { + bFireSuccessful = aPawn.StartAction(DevToFire); + // End:0x33F + if(bFireSuccessful && DevToFire.GetCurrentFire().m_bContinuousFire) + { + // End:0x33F + if(!bContinuousFire) + { + aPawn.StopAction(DevToFire); + } + } + } + return bFireSuccessful; + //return ReturnValue; +} + +event bool CancelFiring() +{ + local TgPawn P; + local int I; + local TgDevice Dev; + + P = TgPawn(Pawn); + // End:0xD8 + if(P != none) + { + I = 0; + J0x36: + + // End:0xD6 [Loop If] + if(I < 33) + { + Dev = P.m_EquippedDevices[I]; + // End:0xC8 + if(Dev != none) + { + // End:0xC8 + if(Dev.CanFiringBeCanceledByRightMouse()) + { + Dev.InterruptFiring(); + } + } + ++I; + // [Loop Continue] + goto J0x36; + } + return true; + } + return false; + //return ReturnValue; +} + +event bool StopFireDevice(TgObject.TG_EQUIP_POINT DeviceSlot, optional bool bForce) +{ + local TgDevice DevToFire, AltFireSecondModeDev; + local TgPawn aPawn; + + aPawn = TgPawn(Pawn); + // End:0x2E + if(aPawn == none) + { + return false; + } + DevToFire = aPawn.m_EquippedDevices[int(DeviceSlot)]; + // End:0x73 + if(DevToFire == none) + { + return false; + } + // End:0x99 + if(!DevToFire.IsFiring()) + { + return true; + } + // End:0x156 + if(int(DeviceSlot) == int(16)) + { + AltFireSecondModeDev = aPawn.m_EquippedDevices[1]; + // End:0x156 + if(((AltFireSecondModeDev != none) && AltFireSecondModeDev.m_bAltFireEnabled) && int(AltFireSecondModeDev.m_AltFireType) == int(1)) + { + AltFireSecondModeDev.InterruptFiring(); + return true; + } + } + // End:0x1ED + if(!(DevToFire.IsOffhand() || DevToFire.IsPurchasedAbility()) || DevToFire.IsFunctionallyToggleDevice()) + { + aPawn.StopAction(DevToFire); + } + else + { + // End:0x22E + if(DevToFire.CanBeCanceled()) + { + DevToFire.InterruptFiring(); + } + } + // End:0x27E + if(bForce && DevToFire.IsFiring()) + { + DevToFire.InterruptFiring(); + } + return true; + //return ReturnValue; +} + +event DeviceOnStopFire(TgDevice Dev, optional bool WasInterrupted = false) +{ + //return; +} + +function float GetAngleToTarget() +{ + local Vector vDiff, vRot; + + // End:0x5A + if(CombatTarget != none) + { + vDiff = CombatTarget.Location - Pawn.Location; + } + else + { + return -1.0000000; + } + vRot = Vector(Pawn.Rotation); + vRot.Z = 0.0000000; + vDiff.Z = 0.0000000; + return Normal(vDiff) Dot Normal(vRot); + //return ReturnValue; +} + +function float GetCooldownModifier() +{ + return m_fCooldownModifier; + //return ReturnValue; +} + +function float GetLeadAccuracy() +{ + return m_fLeadAccuracy; + //return ReturnValue; +} + +function Rotator CalcUniformInaccuracy(float DegMissed) +{ + local Rotator MissRot; + local int MissSign; + + MissRot.Pitch = int((((DegMissed / 6.0000000) * FRand()) * float(65536)) / float(360)); + MissSign = Rand(2); + // End:0x85 + if(MissSign == 1) + { + MissRot.Pitch *= -1.0000000; + } + MissRot.Yaw = int((((DegMissed / 2.0000000) * FRand()) * float(65536)) / float(360)); + MissSign = Rand(2); + // End:0x10A + if(MissSign == 1) + { + MissRot.Yaw *= -1.0000000; + } + MissRot.Roll = 0; + return MissRot; + //return ReturnValue; +} + +function Rotator CalcGaussianInaccuracy(float StdDev) +{ + local int NumRolls, Index; + local float GaussianRand; + local Rotator MissRot; + local Vector RandVect; + + NumRolls = int((float(3) * StdDev) * StdDev); + GaussianRand = 0.0000000; + RandVect = VRand(); + Index = 0; + J0x4C: + + // End:0x8C [Loop If] + if(Index < NumRolls) + { + GaussianRand += ((2.0000000 * FRand()) - 1.0000000); + Index++; + // [Loop Continue] + goto J0x4C; + } + RandVect *= FClamp(GaussianRand, 0.0000000, 2.0000000 * StdDev); + MissRot.Pitch = int(((RandVect.Y / 2.0000000) * float(65536)) / float(360)); + MissRot.Yaw = int((RandVect.X * float(65536)) / float(360)); + MissRot.Roll = 0; + return MissRot; + //return ReturnValue; +} + +function Rotator GetAdjustedAimFor(Weapon W, Vector StartFireLoc) +{ + local Rotator AdjustedAim; + + AdjustedAim = ((Pawn != none) ? Pawn.GetBaseAimRotation(W) : Rotation); + return AdjustedAim; + //return ReturnValue; +} + +function PawnDied(Pawn P) +{ + StopNavigation(); + bIsAlive = false; + super.PawnDied(P); + //return; +} + +function GameHasEnded(optional Actor EndGameFocus, optional bool bIsWinner) +{ + Stun(true); + //return; +} + +event SetPaused(bool bPaused) +{ + // End:0x3C + if(!bPaused && IsTimerActive('UnpauseFromDuration')) + { + ClearTimer('UnpauseFromDuration'); + } + m_bPaused = bPaused; + //return; +} + +event bool IsPaused() +{ + return m_bPaused; + //return ReturnValue; +} + +event PauseForDuration(float PauseDuration) +{ + // End:0x15 + if(PauseDuration <= 0.0000000) + { + return; + } + SetPaused(true); + // End:0xA0 + if(IsTimerActive('UnpauseFromDuration')) + { + // End:0x72 + if((GetTimerRate('UnpauseFromDuration') - GetTimerCount('UnpauseFromDuration')) > PauseDuration) + { + } + else + { + ClearTimer('UnpauseFromDuration'); + SetTimer(PauseDuration, false, 'UnpauseFromDuration'); + } + } + else + { + SetTimer(PauseDuration, false, 'UnpauseFromDuration'); + } + //return; +} + +event UnpauseFromDuration() +{ + SetPaused(false); + //return; +} + +auto state Idle +{ stop; +} + +defaultproperties +{ + m_fCooldownModifier=1.0000000 + m_fLeadAccuracy=0.3000000 + m_fRefireSpeedModifier=1.0000000 + m_fDegreeMissedMagnitude=15.0000000 + m_fMissLikelihood=0.6500000 + CurrentNavigation=(TargetPawn=none,TargetActor=none,TargetLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000),bNewEntry=true,bCanCacheLOS=false,bCachedLOS=false,bLookAtTarget=false,bMustHaveLOS=false,bStopNavOnReachedDestination=true,DistanceTolerance=0.0000000,NodeToken=-1,TeleportIndex=0) + FollowLaneForwardState=(LastLaneIndex=-1,bFinalApproach=false,bLockedToMarker=false) + FollowLaneReverseState=(LastLaneIndex=-1,bFinalApproach=false,bLockedToMarker=false) + Difficulty=EBotDifficultyLevel.AIDifficulty_Medium1 + StrafeDirUpdateTime=1.0000000 + EscortMinDistance=200.0000000 + EscortMaxDistance=250.0000000 + WalkingPhysics=EPhysics.PHYS_Walking + TickGroup=ETickingGroup.TG_PostAsyncWork + m_bHasThreadedWork=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIController_BehaviorAerialDrone.uc b/exported/TgGame/Classes/TgAIController_BehaviorAerialDrone.uc new file mode 100755 index 00000000..ce342f4c --- /dev/null +++ b/exported/TgGame/Classes/TgAIController_BehaviorAerialDrone.uc @@ -0,0 +1,9 @@ +class TgAIController_BehaviorAerialDrone extends TgAIController_Behavior + config(Game) + hidecategories(Navigation); + +defaultproperties +{ + BlackboardType=4 + WalkingPhysics=EPhysics.PHYS_Flying +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIController_BehaviorChaosJuggernaut.uc b/exported/TgGame/Classes/TgAIController_BehaviorChaosJuggernaut.uc new file mode 100755 index 00000000..5055dbfc --- /dev/null +++ b/exported/TgGame/Classes/TgAIController_BehaviorChaosJuggernaut.uc @@ -0,0 +1,4 @@ +class TgAIController_BehaviorChaosJuggernaut extends TgAIController_BehaviorMapNpc + native(AI) + config(Game) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgAIController_BehaviorGod.uc b/exported/TgGame/Classes/TgAIController_BehaviorGod.uc new file mode 100755 index 00000000..2cb05d1c --- /dev/null +++ b/exported/TgGame/Classes/TgAIController_BehaviorGod.uc @@ -0,0 +1,462 @@ +class TgAIController_BehaviorGod extends TgAIController_Behavior + native(AI) + config(Game) + hidecategories(Navigation) + implements(TgPaladinsController); + +const GAMEEVENT_PALADINS_PLAYER_KILL = 1001; +const GAMEEVENT_PALADINS_PLAYER_DEATH = 1002; +const GAMEEVENT_PALADINS_PLAYER_KILL_SUICIDE = 2001; +const GAMEEVENT_PALADINS_PLAYER_KILL_NORMAL = 2002; +const GAMEEVENT_PALADINS_PLAYER_KILL_ASSIST = 2003; +const GAMEEVENT_MATCH_STARTED = 0; +const GAMEEVENT_MATCH_ENDED = 1; +const GAMEEVENT_ROUND_STARTED = 2; +const GAMEEVENT_ROUND_ENDED = 3; +const GAMEEVENT_GAME_CLASS = 6; +const GAMEEVENT_GAME_OPTION_URL = 7; +const GAMEEVENT_GAME_MAPNAME = 8; +const GAMEEVENT_MEMORYUSAGE_POLL = 35; +const GAMEEVENT_FRAMERATE_POLL = 36; +const GAMEEVENT_NETWORKUSAGEIN_POLL = 37; +const GAMEEVENT_NETWORKUSAGEOUT_POLL = 38; +const GAMEEVENT_PING_POLL = 39; +const GAMEEVENT_RENDERTHREAD_POLL = 40; +const GAMEEVENT_GAMETHREAD_POLL = 41; +const GAMEEVENT_GPUFRAMETIME_POLL = 42; +const GAMEEVENT_FRAMETIME_POLL = 43; +const GAMEEVENT_TEAM_CREATED = 50; +const GAMEEVENT_TEAM_GAME_SCORE = 51; +const GAMEEVENT_TEAM_MATCH_WON = 4; +const GAMEEVENT_TEAM_ROUND_WON = 5; +const GAMEEVENT_TEAM_ROUND_STALEMATE = 52; +const GAMEEVENT_PLAYER_LOGIN = 100; +const GAMEEVENT_PLAYER_LOGOUT = 101; +const GAMEEVENT_PLAYER_SPAWN = 102; +const GAMEEVENT_PLAYER_MATCH_WON = 103; +const GAMEEVENT_PLAYER_KILL = 104; +const GAMEEVENT_PLAYER_LOCATION_POLL = 105; +const GAMEEVENT_PLAYER_TEAMCHANGE = 106; +const GAMEEVENT_PLAYER_KILL_STREAK = 107; +const GAMEEVENT_PLAYER_DEATH = 108; +const GAMEEVENT_PLAYER_ROUND_WON = 109; +const GAMEEVENT_PLAYER_ROUND_STALEMATE = 110; +const GAMEEVENT_WEAPON_DAMAGE = 150; +const GAMEEVENT_WEAPON_DAMAGE_MELEE = 151; +const GAMEEVENT_WEAPON_FIRED = 152; +const GAMEEVENT_PLAYER_KILL_NORMAL = 200; +const GAMEEVENT_GENERIC_PARAM_LIST_START = 300; +const GAMEEVENT_GENERIC_PARAM_LIST_END = 400; +const GAMEEVENT_GAME_SPECIFIC = 1000; +const GAMEEVENT_MAX_EVENTID = 0x0000FFFF; + +var private native const noexport Pointer VfTable_ITgPaladinsController; +var float WaitForSpawnSecs; +var transient int PlayerID; +var transient bool bCanPurchaseItems; +var transient bool bCanPurchaseSkills; +var bool bRespawnAtOriginalLocation; +var transient float CurrentGoldRemainder; +var transient int CurrentGold; +var transient float CurrentXPRemainder; +var transient int CurrentXP; +var transient Vector GeometricMean; + +// Export UTgAIController_BehaviorGod::execPurchaseItems(FFrame&, void* const) +native function PurchaseItems(); + +// Export UTgAIController_BehaviorGod::execCanAllocateSkillPoint(FFrame&, void* const) +native function bool CanAllocateSkillPoint(int DeviceID, TgDevice aDevice); + +// Export UTgAIController_BehaviorGod::execHaveBasicSkillsBeenActivated(FFrame&, void* const) +native function bool HaveBasicSkillsBeenActivated(); + +// Export UTgAIController_BehaviorGod::execGetSkillPointsAvailable(FFrame&, void* const) +native function int GetSkillPointsAvailable(); + +// Export UTgAIController_BehaviorGod::execPurchaseSkills(FFrame&, void* const) +native function PurchaseSkills(); + +// Export UTgAIController_BehaviorGod::execPurchaseBurnCards(FFrame&, void* const) +native function PurchaseBurnCards(); + +// Export UTgAIController_BehaviorGod::execStartReviveTimer(FFrame&, void* const) +native function float StartReviveTimer(); + +// Export UTgAIController_BehaviorGod::execOnRespawnRuleChanged(FFrame&, void* const) +native function bool OnRespawnRuleChanged(); + +// Export UTgAIController_BehaviorGod::execSetBotPlayerId(FFrame&, void* const) +native function SetBotPlayerId(); + +// Export UTgAIController_BehaviorGod::execSetStartingProperties(FFrame&, void* const) +native function SetStartingProperties(); + +// Export UTgAIController_BehaviorGod::execSetRewardValues(FFrame&, void* const) +native final function SetRewardValues(int XP, int nCredits, Actor Source, optional TgObject.ERewardValueType RewardType = 0, optional bool bFlankKill = false); + +// Export UTgAIController_BehaviorGod::execGetTaskForceNumber(FFrame&, void* const) +native function int GetTaskForceNumber(); + +function InitPlayerReplicationInfo() +{ + local TgRepInfo_Player PRI; + + super(TgAIController).InitPlayerReplicationInfo(); + PRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x56 + if(PRI != none) + { + PRI.r_bForceNotBot = true; + } + //return; +} + +event Revive() +{ + //return; +} + +function LiveRespawn(bool bResetHealth, bool bResetDevices) +{ + local Vector NewLocation; + local Rotator NewRotation; + local TgPawn myPawn; + + // End:0x36 + if(bRespawnAtOriginalLocation) + { + NewLocation = m_vSpawnLocation; + NewRotation = m_rSpawnDirection; + } + else + { + TgGame(WorldInfo.Game).GetReviveLocation(self, NewLocation, NewRotation); + } + Pawn.SetLocation(NewLocation); + Pawn.SetRotation(NewRotation); + SetRotation(NewRotation); + Pawn.SetDesiredRotation(NewRotation); + myPawn = TgPawn(Pawn); + // End:0x15E + if(myPawn != none) + { + myPawn.LiveRespawn(bResetHealth, bResetDevices); + } + //return; +} + +event Possess(Pawn inPawn, bool bVehicleTransition) +{ + // End:0x1A + if(!IsA('TgAIController_BehaviorGodDisconnected')) + { + SetBotPlayerId(); + } + super.Possess(inPawn, bVehicleTransition); + NavMeshPath_SearchExtent_Modifier.X = PawnCollisionRadius * 0.2500000; + NavMeshPath_SearchExtent_Modifier.Y = NavMeshPath_SearchExtent_Modifier.X; + SetStartingProperties(); + //return; +} + +function PawnDied(Pawn P) +{ + local TgGame_Paladins TgG; + + super.PawnDied(P); + TgG = TgGame_Paladins(WorldInfo.Game); + // End:0x85 + if((TgG != none) && TgG.m_bRespawnBots) + { + GotoState('Dead'); + } + //return; +} + +event CopyPropertiesTo(Controller C) +{ + local TgPlayerController PC; + local TgAIController_BehaviorGod aic; + local TgRepInfo_Player FromPri, ToPri; + + PC = TgPlayerController(C); + aic = TgAIController_BehaviorGod(C); + // End:0x255 + if(PC != none) + { + PC.s_nPlayerId = PlayerID; + PC.r_nXp = CurrentXP; + PC.s_fXpRemainder = CurrentXPRemainder; + PC.r_nCurrency = CurrentGold; + PC.s_fCurrencyRemainder = CurrentGoldRemainder; + FromPri = TgRepInfo_Player(PlayerReplicationInfo); + ToPri = TgRepInfo_Player(PC.PlayerReplicationInfo); + // End:0x252 + if((FromPri != none) && ToPri != none) + { + FromPri.CopyProperties(ToPri); + FromPri.TransferMinionOwnershipTo(ToPri); + PlayerReplicationInfo = none; + FromPri.Destroy(); + ToPri.UniqueId.Uid.A = PC.s_nPlayerId; + } + } + else + { + // End:0x4D4 + if(aic != none) + { + aic.PlayerID = PlayerID; + aic.CurrentXP = CurrentXP; + aic.CurrentXPRemainder = CurrentXPRemainder; + aic.CurrentGold = CurrentGold; + aic.CurrentGoldRemainder = CurrentGoldRemainder; + FromPri = TgRepInfo_Player(PlayerReplicationInfo); + ToPri = TgRepInfo_Player(aic.PlayerReplicationInfo); + // End:0x4D4 + if((FromPri != none) && ToPri != none) + { + FromPri.CopyProperties(ToPri); + FromPri.TransferMinionOwnershipTo(ToPri); + // End:0x4B1 + if(ToPri.r_SpawnPoint != none) + { + aic.m_vSpawnLocation = ToPri.r_SpawnPoint.Location; + aic.m_rSpawnDirection = ToPri.r_SpawnPoint.Rotation; + } + PlayerReplicationInfo = none; + FromPri.Destroy(); + } + } + } + //return; +} + +function Rotator GetAdjustedAimFor(Weapon Weap, Vector StartFireLoc) +{ + local Rotator AdjustedAim; + + AdjustedAim = ((Pawn != none) ? Pawn.GetBaseAimRotation(Weap) : Rotation); + return AdjustedAim; + //return ReturnValue; +} + +simulated event PostBeginPlay() +{ + local TgGame_Paladins ChaosGame; + + super.PostBeginPlay(); + // End:0x87 + if(int(Role) == int(ROLE_Authority)) + { + ChaosGame = TgGame_Paladins(WorldInfo.Game); + // End:0x87 + if(ChaosGame != none) + { + ChaosGame.InitializeCreditsFor(TgPaladinsController(self)); + } + } + //return; +} + +function int GetCredits() +{ + local TgRepInfo_Player PRI; + + PRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x4A + if(PRI != none) + { + return PRI.r_nCredits; + } + return 0; + //return ReturnValue; +} + +function SetCredits(int nCreditsAmount) +{ + local TgRepInfo_Player PRI; + + PRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x108 + if(PRI != none) + { + // End:0xBF + if(nCreditsAmount > PRI.r_nCredits) + { + PRI.r_nEarnedCredits += (nCreditsAmount - PRI.r_nCredits); + PRI.UpdateScoreboard(); + } + PRI.r_nCredits = nCreditsAmount; + PRI.bNetDirty = true; + } + //return; +} + +function ResetUlt() +{ + local TgPawn TgP; + + TgP = TgPawn(Pawn); + // End:0x4A + if(TgP != none) + { + TgP.ResetUlt(); + } + //return; +} + +function TgPawn GetTgPawn() +{ + return TgPawn(Pawn); + //return ReturnValue; +} + +state Dead +{ + function BeginState(name PreviousStateName) + { + local float reviveTime; + local TgRepInfo_Player RepInfo; + + // End:0x24 + if(Pawn == none) + { + super(Object).BeginState(PreviousStateName); + return; + } + Enemy = none; + Pawn.ShouldCrouch(false); + reviveTime = StartReviveTimer(); + RepInfo = TgRepInfo_Player(PlayerReplicationInfo); + // End:0xD5 + if(RepInfo != none) + { + RepInfo.OnDeath(); + RepInfo.r_fReviveSecs = reviveTime; + } + ResetBlackboard(); + bCanPurchaseItems = true; + //return; + } + + function EndState(name NextStateName) + { + local Vector NewLocation; + local Rotator NewRotation; + + // End:0x9F + if(((NextStateName != 'None') && NextStateName != 'RoundEnded') && NextStateName != 'PlayerMatchOver') + { + // End:0x9F + if(IsTimerActive('Revive') || (Pawn != none) && Pawn.bPlayedDeath) + { + Revive(); + } + } + bCanPurchaseItems = false; + // End:0x19D + if(Pawn != none) + { + // End:0xF0 + if(bRespawnAtOriginalLocation) + { + NewLocation = m_vSpawnLocation; + NewRotation = m_rSpawnDirection; + } + else + { + TgGame(WorldInfo.Game).GetReviveLocation(self, NewLocation, NewRotation); + } + Pawn.SetCollision(true, true); + Pawn.SetLocation(NewLocation); + Pawn.SetRotation(NewRotation); + } + ResetBlackboard(); + bIsAlive = true; + //return; + } + + event Revive() + { + local TgProperty prop; + local int Idx; + local SeqEvent_PlayerSpawned SpawnedEvent; + local array Events; + local TgRepInfo_Player prep; + local TgGame_Paladins tgc; + + ClearTimer('Revive'); + ClearTimer('ReviveTimer'); + ClearTimer('ViewObjectiveCamerasTimer'); + prep = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x8B + if(prep != none) + { + prep.r_fReviveSecs = 0.0000000; + } + Pawn.bReplicateMovement = true; + TgPawn(Pawn).r_DeathInfo.bDead = false; + TgPawn(Pawn).r_DeathInfo.dmgType = none; + Pawn.SetRotation(m_rSpawnDirection); + Pawn.SetDesiredRotation(m_rSpawnDirection); + TgPawn(Pawn).OnRespawn(); + TgPawn(Pawn).r_nResetCharacter++; + GotoState('Idle'); + // End:0x30C + if(WorldInfo.GetGameSequence() != none) + { + WorldInfo.GetGameSequence().FindSeqObjectsByClass(Class'Engine.SeqEvent_PlayerSpawned', true, Events); + Idx = 0; + J0x249: + + // End:0x30C [Loop If] + if(Idx < Events.Length) + { + SpawnedEvent = SeqEvent_PlayerSpawned(Events[Idx]); + // End:0x2FE + if((SpawnedEvent != none) && SpawnedEvent.CheckActivate(self, self)) + { + SpawnedEvent.SpawnPoint = none; + SpawnedEvent.PopulateLinkedVariableValues(); + } + Idx++; + // [Loop Continue] + goto J0x249; + } + } + prop = TgPawn(Pawn).GetProperty(19); + TgPawn(Pawn).SetProperty(19, prop.m_fMaximum); + prop = TgPawn(Pawn).GetProperty(22); + TgPawn(Pawn).SetProperty(22, prop.m_fMaximum); + TgPawn(Pawn).bReplicateMovement = true; + TgPawn(Pawn).m_LastDamager = none; + TgPawn(Pawn).s_Damagers.Remove(0, TgPawn(Pawn).s_Damagers.Length); + TgPawn(Pawn).s_nSpawnTime = WorldInfo.TimeSeconds; + // End:0x55F + if(prep != none) + { + prep.bForceNetUpdate = true; + Pawn.bForceNetUpdate = true; + prep.UpdatePlayerLocation(); + } + tgc = TgGame_Paladins(WorldInfo.Game); + // End:0x65D + if(((tgc != none) && tgc.GameplayEventsWriter != none) && tgc.GameplayEventsWriter.IsSessionInProgress()) + { + tgc.GameplayEventsWriter.LogPlayerSpawnEvent(102, self, Pawn.Class, GetTaskForceNumber()); + } + //return; + } + stop; +} + +defaultproperties +{ + BlackboardType=1 + LocalRepulsorSolverClass=Class'TgGame.TgAILocalPositionSolver_God' + NavigationSearchModifier_Max=10.0000000 + UtilityHandleClass=Class'TgGame.TgAIUtilityHandle' + bIsPaused=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIController_BehaviorGodDisconnected.uc b/exported/TgGame/Classes/TgAIController_BehaviorGodDisconnected.uc new file mode 100755 index 00000000..e9cd2d86 --- /dev/null +++ b/exported/TgGame/Classes/TgAIController_BehaviorGodDisconnected.uc @@ -0,0 +1,49 @@ +class TgAIController_BehaviorGodDisconnected extends TgAIController_BehaviorGod + native(AI) + config(Game) + hidecategories(Navigation); + +var bool bInitialController; + +function InitPlayerReplicationInfo() +{ + local TgRepInfo_Player PRI; + + super.InitPlayerReplicationInfo(); + PRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x56 + if(PRI != none) + { + PRI.r_bDisconnected = true; + } + //return; +} + +event Possess(Pawn inPawn, bool bVehicleTransition) +{ + local TgPawn TgP; + + super(TgAIController_Behavior).Possess(inPawn, bVehicleTransition); + NavMeshPath_SearchExtent_Modifier.X = PawnCollisionRadius * 0.2500000; + NavMeshPath_SearchExtent_Modifier.Y = NavMeshPath_SearchExtent_Modifier.X; + bBtDebugPaused = false; + TgP = TgPawn(Pawn); + // End:0x152 + if(TgP != none) + { + TgP.SetMovementPhysics(); + TgP.StopFiringAllDevices(false, false); + TgP.RestartAllDevices(); + // End:0x152 + if(!TgP.IsAliveAndWell()) + { + PawnDied(TgP); + } + } + //return; +} + +defaultproperties +{ + bIsPaused=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIController_BehaviorLaneNpc.uc b/exported/TgGame/Classes/TgAIController_BehaviorLaneNpc.uc new file mode 100755 index 00000000..a096b378 --- /dev/null +++ b/exported/TgGame/Classes/TgAIController_BehaviorLaneNpc.uc @@ -0,0 +1,17 @@ +class TgAIController_BehaviorLaneNpc extends TgAIController_Behavior + native(AI) + config(Game) + hidecategories(Navigation); + +var transient Actor GoalTarget; +var transient bool bDespawnOnLoseCombatTarget; +var transient bool bIsBehindSquad; +var transient bool bTooFarFromLane; + +// Export UTgAIController_BehaviorLaneNpc::execCanSpreadOut(FFrame&, void* const) +native function bool CanSpreadOut(); + +defaultproperties +{ + BlackboardType=16 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIController_BehaviorMapNpc.uc b/exported/TgGame/Classes/TgAIController_BehaviorMapNpc.uc new file mode 100755 index 00000000..bcfa191a --- /dev/null +++ b/exported/TgGame/Classes/TgAIController_BehaviorMapNpc.uc @@ -0,0 +1,75 @@ +class TgAIController_BehaviorMapNpc extends TgAIController_Behavior + native(AI) + config(Game) + hidecategories(Navigation); + +struct native ThreatEntry +{ + var TgPawn attacker; + var float ThreatLevel; + + structdefaultproperties + { + attacker=none + ThreatLevel=0.0000000 + } +}; + +var init transient array ThreatList; +var transient bool bThreatListDecays; +var transient bool bOutsideLeash; +var transient bool bHadCombatTarget; +var transient float LeashDistance; +var transient Volume LeashVolume; +var init transient array LeashActors; + +// Export UTgAIController_BehaviorMapNpc::execAddThreat(FFrame&, void* const) +native function AddThreat(TgPawn attacker, float ThreatLevel); + +// Export UTgAIController_BehaviorMapNpc::execClearThreatList(FFrame&, void* const) +native function ClearThreatList(); + +// Export UTgAIController_BehaviorMapNpc::execCanSpreadOut(FFrame&, void* const) +native function bool CanSpreadOut(); + +// Export UTgAIController_BehaviorMapNpc::execEvade(FFrame&, void* const) +native function Evade(); + +// Export UTgAIController_BehaviorMapNpc::execSquadEvade(FFrame&, void* const) +native function SquadEvade(); + +// Export UTgAIController_BehaviorMapNpc::execSquadTargetChanged(FFrame&, void* const) +native function SquadTargetChanged(); + +function NotifyKilledBy(Controller Killer) +{ + local TgPawn KillerPawn; + + // End:0x113 + if((Killer != none) && m_Squad != none) + { + m_Squad.MemberKilledBy(Killer); + KillerPawn = TgPawn(Killer.Pawn); + // End:0x113 + if(KillerPawn != none) + { + m_Squad.SuggestTarget(KillerPawn, self); + // End:0x113 + if(KillerPawn.r_Owner != none) + { + m_Squad.SuggestTarget(KillerPawn.r_Owner, self); + } + } + } + super(TgAIController).NotifyKilledBy(Killer); + //return; +} + +defaultproperties +{ + bThreatListDecays=true + LeashDistance=2048.0000000 + BlackboardType=2 + ObstacleAvoidanceGridPointSize=16.0000000 + ObstacleAvoidanceGridExtents=768.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIController_BehaviorPet.uc b/exported/TgGame/Classes/TgAIController_BehaviorPet.uc new file mode 100755 index 00000000..c9d88022 --- /dev/null +++ b/exported/TgGame/Classes/TgAIController_BehaviorPet.uc @@ -0,0 +1,11 @@ +class TgAIController_BehaviorPet extends TgAIController_Behavior + native(AI) + config(Game) + hidecategories(Navigation); + +var() Actor OwnerCombatTarget; + +defaultproperties +{ + BlackboardType=4 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIController_BehaviorPetRanged.uc b/exported/TgGame/Classes/TgAIController_BehaviorPetRanged.uc new file mode 100755 index 00000000..21524826 --- /dev/null +++ b/exported/TgGame/Classes/TgAIController_BehaviorPetRanged.uc @@ -0,0 +1,11 @@ +class TgAIController_BehaviorPetRanged extends TgAIController_BehaviorPet + native(AI) + config(Game) + hidecategories(Navigation); + +defaultproperties +{ + m_fLeadAccuracy=0.8700000 + m_fDegreeMissedMagnitude=2.5000000 + LocalRepulsorSolverClass=Class'TgGame.TgAILocalPositionSolver_God' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIController_BehaviorPet_LongTerm.uc b/exported/TgGame/Classes/TgAIController_BehaviorPet_LongTerm.uc new file mode 100755 index 00000000..82003648 --- /dev/null +++ b/exported/TgGame/Classes/TgAIController_BehaviorPet_LongTerm.uc @@ -0,0 +1,9 @@ +class TgAIController_BehaviorPet_LongTerm extends TgAIController_BehaviorPet + native(AI) + config(Game) + hidecategories(Navigation); + +defaultproperties +{ + LocalRepulsorSolverClass=Class'TgGame.TgAILocalPositionSolver_Pet' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIDirector.uc b/exported/TgGame/Classes/TgAIDirector.uc new file mode 100755 index 00000000..ec02994a --- /dev/null +++ b/exported/TgGame/Classes/TgAIDirector.uc @@ -0,0 +1,1169 @@ +class TgAIDirector extends Actor + native + notplaceable + hidecategories(Navigation); + +const PRACTICE_DIFFICULTY_CONFIG_ID = 62; +const EASY_DIFFICULTY_CONFIG_ID = 63; +const MEDIUM_DIFFICULTY_CONFIG_ID = 64; +const HARD_DIFFICULTY_CONFIG_ID = 65; +const PRO_DIFFICULTY_CONFIG_ID = 66; + +struct native SkillLevelRawData +{ + var float NumDeaths; + var float Damage; + var float Kills; + var float SoloKills; + var float Assists; + var float Healing; + var float Credits; + var float Killstreak; + var float ObjectiveTime; + var float Shielding; + + structdefaultproperties + { + NumDeaths=0.0000000 + Damage=0.0000000 + Kills=0.0000000 + SoloKills=0.0000000 + Assists=0.0000000 + Healing=0.0000000 + Credits=0.0000000 + Killstreak=0.0000000 + ObjectiveTime=0.0000000 + Shielding=0.0000000 + } +}; + +struct native SkillLevelPercentageData +{ + var float NumDeathsPercentage; + var float DamagePercentage; + var float KillsPercentage; + var float SoloKillsPercentage; + var float AssistsPercentage; + var float HealingPercentage; + var float CreditsPercentage; + var float ObjectiveTimePercentage; + var float ShieldingPercentage; + var float KillstreakMultiplier; + + structdefaultproperties + { + NumDeathsPercentage=0.0000000 + DamagePercentage=0.0000000 + KillsPercentage=0.0000000 + SoloKillsPercentage=0.0000000 + AssistsPercentage=0.0000000 + HealingPercentage=0.0000000 + CreditsPercentage=0.0000000 + ObjectiveTimePercentage=0.0000000 + ShieldingPercentage=0.0000000 + KillstreakMultiplier=0.0000000 + } +}; + +var bool m_bActive; +var bool m_bCanAdjustNow; +var bool m_bDisparityDetected; +var bool m_bProlongedDisparityDetected; +var bool m_bHasLoweredDifficultyAtTie; +var bool m_bFreezeAIDifficulty; +var float m_fTimeSinceLastUpdate; +var float m_fLastSkillDisparity; +var int m_iIncreaseTF1Difficulty; +var int m_iIncreaseTF2Difficulty; +var int m_iDisparityDetectionTime; +var int m_iTriggerTime; +var int m_iTaskForce1PlayerCount; +var int m_iTaskForce2PlayerCount; +var float LockoutTime; +var float SkillDisparityTrigger; +var float UpdateRate; +var float m_fLastPayloadPercent; +var float m_fBaseUpperKillRatio; +var float m_fBaseLowerKillRatio; +var float m_fBaseUpperPayloadRate; +var float m_fBaseLowerPayloadRate; +var float NumDeaths_Weight; +var float Damage_Weight; +var float Kills_Weight; +var float SoloKills_Weight; +var float Assists_Weight; +var float ObjectiveTime_Weight; +var float Healing_Weight; +var float Shielding_Weight; +var float Credits_Weight; +var float Accuracy_Weight; +var float Killstreak_Multiplier; +var float numDeathsBase0; +var float numDeathsBase1; +var SkillLevelRawData PlayerSkillData[2]; +var SkillLevelRawData TeamSkillData[2]; +var SkillLevelRawData OldPlayerSkillData[2]; +var SkillLevelRawData OldTeamSkillData[2]; +var SkillLevelPercentageData SkillPercentages[4]; + +// Export UTgAIDirector::execGetDamageForPawn(FFrame&, void* const) +native function int GetDamageForPawn(TgPawn TgP); + +// Export UTgAIDirector::execGetObjectiveTimeForPawn(FFrame&, void* const) +native function int GetObjectiveTimeForPawn(TgPawn TgP); + +// Export UTgAIDirector::execGetShieldingForPawn(FFrame&, void* const) +native function int GetShieldingForPawn(TgPawn TgP); + +// Export UTgAIDirector::execGetLeadAccuracyFromConfigSet(FFrame&, void* const) +native function float GetLeadAccuracyFromConfigSet(int ConfigSetID); + +// Export UTgAIDirector::execGetMissLikelihoodFromConfigSet(FFrame&, void* const) +native function float GetMissLikelihoodFromConfigSet(int ConfigSetID); + +// Export UTgAIDirector::execGetDegreeMissedMagnitudeFromConfigSet(FFrame&, void* const) +native function float GetDegreeMissedMagnitudeFromConfigSet(int ConfigSetID); + +event PostBeginPlay() +{ + local TgGame_Paladins ChaosGame; + local TgAIController_BehaviorGod TgAI; + local TgPawn TgP; + local int DifficultyDataIndex, RawDataIndex; + + super.PostBeginPlay(); + // End:0x4EC + if(m_bActive) + { + ChaosGame = TgGame_Paladins(WorldInfo.Game); + // End:0x2B3 + if(((ChaosGame != none) && int(ChaosGame.m_GameType) != int(36)) && int(ChaosGame.m_GameType) != int(37)) + { + // End:0x240 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + TgP = TgPawn(TgAI.Pawn); + // End:0x23F + if((TgP != none) && TgP.IsGod()) + { + DifficultyDataIndex = int(TgP.GetTaskForceNumber()) - int(1); + // End:0x23F + if((DifficultyDataIndex >= 0) && DifficultyDataIndex < 2) + { + TgAI.Difficulty = ChaosGame.DifficultyData[DifficultyDataIndex].CurrentBotDifficultyLevel; + UpdateBotDifficultyParameters(TgAI, ChaosGame.DifficultyData[DifficultyDataIndex].CurrentBotDifficultyLevel); + } + } + } + // End:0x2B3 + if((int(ChaosGame.m_GameType) == int(26)) || int(ChaosGame.m_GameType) == int(27)) + { + m_fBaseUpperPayloadRate = 0.0035000; + m_fBaseLowerPayloadRate = 0.0015000; + } + } + RawDataIndex = 0; + J0x2BE: + + // End:0x4EC [Loop If] + if(RawDataIndex < 2) + { + PlayerSkillData[RawDataIndex].NumDeaths = 0.0000000; + PlayerSkillData[RawDataIndex].Damage = 0.0000000; + PlayerSkillData[RawDataIndex].Kills = 0.0000000; + PlayerSkillData[RawDataIndex].ObjectiveTime = 0.0000000; + PlayerSkillData[RawDataIndex].Shielding = 0.0000000; + PlayerSkillData[RawDataIndex].Healing = 0.0000000; + TeamSkillData[RawDataIndex].NumDeaths = 0.0000000; + TeamSkillData[RawDataIndex].Damage = 0.0000000; + TeamSkillData[RawDataIndex].Kills = 0.0000000; + TeamSkillData[RawDataIndex].ObjectiveTime = 0.0000000; + TeamSkillData[RawDataIndex].Shielding = 0.0000000; + TeamSkillData[RawDataIndex].Healing = 0.0000000; + RawDataIndex++; + // [Loop Continue] + goto J0x2BE; + } + } + //return; +} + +event Tick(float DeltaTime) +{ + local TgGame_Paladins ChaosGame; + local TgAIController_BehaviorGod TgAI; + local TgPawn TgP; + + super.Tick(DeltaTime); + ChaosGame = TgGame_Paladins(WorldInfo.Game); + // End:0xFC + if(((m_bActive && ChaosGame != none) && int(ChaosGame.m_GameType) != int(36)) && int(ChaosGame.m_GameType) != int(37)) + { + m_fTimeSinceLastUpdate += DeltaTime; + // End:0xFC + if(m_fTimeSinceLastUpdate >= UpdateRate) + { + m_fTimeSinceLastUpdate = 0.0000000; + UpdateDifficulty(); + } + } + // End:0x240 + if(((m_bActive && ChaosGame != none) && int(ChaosGame.m_GameType) == int(36)) && int(ChaosGame.m_GameType) != int(37)) + { + // End:0x23F + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + TgP = TgPawn(TgAI.Pawn); + // End:0x23E + if((TgP != none) && TgP.IsGod()) + { + TgAI.Difficulty = 5; + UpdateBotDifficultyParameters(TgAI, 5); + } + } + } + //return; +} + +function SetActive(bool NewActive) +{ + local TgGame_Paladins ChaosGame; + local TgAIController_BehaviorGod TgAI; + local TgPawn TgP; + local int DifficultyDataIndex; + + // End:0x286 + if(NewActive && !m_bActive) + { + ChaosGame = TgGame_Paladins(WorldInfo.Game); + // End:0x248 + if(((ChaosGame != none) && int(ChaosGame.m_GameType) != int(36)) && int(ChaosGame.m_GameType) != int(37)) + { + // End:0x247 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + TgP = TgPawn(TgAI.Pawn); + // End:0x246 + if((TgP != none) && TgP.IsGod()) + { + DifficultyDataIndex = int(TgP.GetTaskForceNumber()) - int(1); + // End:0x246 + if((DifficultyDataIndex >= 0) && DifficultyDataIndex < 2) + { + TgAI.Difficulty = ChaosGame.DifficultyData[DifficultyDataIndex].CurrentBotDifficultyLevel; + UpdateBotDifficultyParameters(TgAI, ChaosGame.DifficultyData[DifficultyDataIndex].CurrentBotDifficultyLevel); + } + } + } + } + // End:0x277 + if(!m_bCanAdjustNow) + { + m_bCanAdjustNow = true; + ClearTimer('ReallowAdjustment'); + } + m_bActive = true; + } + else + { + // End:0x2B0 + if(!NewActive && m_bActive) + { + m_bActive = false; + } + } + //return; +} + +function UpdateDifficulty() +{ + local int RawDataIndex; + local TgAIController_BehaviorGod TgAI; + local TgPlayerController TgPC; + local TgPawn TgP; + local TgGame_Paladins ChaosGame; + local bool hasBots; + + // End:0xDA + if(m_bFreezeAIDifficulty) + { + // End:0xD7 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + TgP = TgPawn(TgAI.Pawn); + // End:0xD6 + if((TgP != none) && TgP.IsGod()) + { + UpdateBotDifficultyParameters(TgAI, TgAI.Difficulty); + } + } + return; + } + hasBots = false; + ChaosGame = TgGame_Paladins(WorldInfo.Game); + // End:0x1BC + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + TgP = TgPawn(TgAI.Pawn); + // End:0x1BB + if((TgP != none) && TgP.IsGod()) + { + hasBots = true; + } + } + // End:0x276 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgP = TgPawn(TgPC.Pawn); + // End:0x275 + if((((TgP != none) && TgP.IsGod()) && ChaosGame != none) && hasBots) + { + } + } + // End:0x424 + if((m_iTaskForce1PlayerCount > 0) && m_iTaskForce2PlayerCount > 0) + { + // End:0x420 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + TgP = TgPawn(TgAI.Pawn); + // End:0x41F + if((TgP != none) && TgP.IsGod()) + { + TgAI.Difficulty = 3; + UpdateBotDifficultyParameters(TgAI, 3); + // End:0x41E + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgP = TgPawn(TgPC.Pawn); + // End:0x41D + if((((TgP != none) && TgP.IsGod()) && ChaosGame != none) && hasBots) + { + } + } + } + } + } + else + { + // End:0x1052 + if(m_bCanAdjustNow) + { + PullRawData(); + CheckDisparity(); + // End:0x1052 + if(m_bDisparityDetected) + { + // End:0x4A5 + if(AdjustDifficulty()) + { + m_bCanAdjustNow = false; + SetTimer(LockoutTime, false, 'ReallowAdjustment'); + // End:0x4A5 + if(UpdateRate < 30.0000000) + { + UpdateRate += 5.0000000; + } + } + m_bDisparityDetected = false; + m_bProlongedDisparityDetected = false; + m_iIncreaseTF1Difficulty = 0; + m_iIncreaseTF2Difficulty = 0; + RawDataIndex = 0; + J0x4DE: + + // End:0x8F8 [Loop If] + if(RawDataIndex < 2) + { + OldPlayerSkillData[RawDataIndex].NumDeaths = -PlayerSkillData[RawDataIndex].NumDeaths / float(2); + OldPlayerSkillData[RawDataIndex].Damage = -PlayerSkillData[RawDataIndex].Damage / float(2); + OldPlayerSkillData[RawDataIndex].Kills = -PlayerSkillData[RawDataIndex].Kills / float(2); + OldPlayerSkillData[RawDataIndex].ObjectiveTime = -PlayerSkillData[RawDataIndex].ObjectiveTime / float(2); + OldPlayerSkillData[RawDataIndex].Shielding = -PlayerSkillData[RawDataIndex].Shielding / float(2); + OldPlayerSkillData[RawDataIndex].Healing = -PlayerSkillData[RawDataIndex].Healing / float(2); + OldTeamSkillData[RawDataIndex].NumDeaths = -TeamSkillData[RawDataIndex].NumDeaths / float(2); + OldTeamSkillData[RawDataIndex].Damage = -TeamSkillData[RawDataIndex].Damage / float(2); + OldTeamSkillData[RawDataIndex].Kills = -TeamSkillData[RawDataIndex].Kills / float(2); + OldTeamSkillData[RawDataIndex].ObjectiveTime = -TeamSkillData[RawDataIndex].ObjectiveTime / float(2); + OldTeamSkillData[RawDataIndex].Shielding = -TeamSkillData[RawDataIndex].Shielding / float(2); + OldTeamSkillData[RawDataIndex].Healing = -TeamSkillData[RawDataIndex].Healing / float(2); + RawDataIndex++; + // [Loop Continue] + goto J0x4DE; + } + // End:0xD8F + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgP = TgPawn(TgPC.Pawn); + // End:0xD8E + if((TgP != none) && TgP.IsGod()) + { + RawDataIndex = int(TgP.GetTaskForceNumber()) - int(1); + // End:0xD8E + if((RawDataIndex >= 0) && RawDataIndex < 2) + { + OldPlayerSkillData[RawDataIndex].NumDeaths += float(TgP.GetPRI().Deaths); + OldPlayerSkillData[RawDataIndex].Damage += float(GetDamageForPawn(TgP)); + OldPlayerSkillData[RawDataIndex].Kills += float(TgP.GetPRI().r_Scores[1]); + OldPlayerSkillData[RawDataIndex].ObjectiveTime += float(GetObjectiveTimeForPawn(TgP)); + OldPlayerSkillData[RawDataIndex].Shielding += float(GetShieldingForPawn(TgP)); + OldPlayerSkillData[RawDataIndex].Healing += float(TgP.GetPRI().r_Scores[6]); + OldTeamSkillData[RawDataIndex].NumDeaths += float(TgP.GetPRI().Deaths); + OldTeamSkillData[RawDataIndex].Damage += float(GetDamageForPawn(TgP)); + OldTeamSkillData[RawDataIndex].Kills += float(TgP.GetPRI().r_Scores[1]); + OldTeamSkillData[RawDataIndex].ObjectiveTime += float(GetObjectiveTimeForPawn(TgP)); + OldTeamSkillData[RawDataIndex].Shielding += float(GetShieldingForPawn(TgP)); + OldTeamSkillData[RawDataIndex].Healing += float(TgP.GetPRI().r_Scores[6]); + } + } + } + // End:0x1051 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + TgP = TgPawn(TgAI.Pawn); + // End:0x1050 + if((TgP != none) && TgP.IsGod()) + { + RawDataIndex = int(TgP.GetTaskForceNumber()) - int(1); + // End:0x1050 + if((RawDataIndex >= 0) && RawDataIndex < 2) + { + OldTeamSkillData[RawDataIndex].NumDeaths += float(TgP.GetPRI().Deaths); + OldTeamSkillData[RawDataIndex].Damage += float(GetDamageForPawn(TgP)); + OldTeamSkillData[RawDataIndex].Kills += float(TgP.GetPRI().r_Scores[1]); + OldTeamSkillData[RawDataIndex].ObjectiveTime += float(GetObjectiveTimeForPawn(TgP)); + OldTeamSkillData[RawDataIndex].Shielding += float(GetShieldingForPawn(TgP)); + OldTeamSkillData[RawDataIndex].Healing += float(TgP.GetPRI().r_Scores[6]); + } + } + } + } + } + } + UpdateDebugInfo(); + //return; +} + +function PullRawData() +{ + local TgPlayerController TgPC; + local TgAIController_BehaviorGod TgAI; + local TgPawn TgP; + local int RawDataIndex; + + RawDataIndex = 0; + J0x0B: + + // End:0x3DD [Loop If] + if(RawDataIndex < 2) + { + PlayerSkillData[RawDataIndex].NumDeaths = -OldPlayerSkillData[RawDataIndex].NumDeaths; + PlayerSkillData[RawDataIndex].Damage = -OldPlayerSkillData[RawDataIndex].Damage; + PlayerSkillData[RawDataIndex].Kills = -OldPlayerSkillData[RawDataIndex].Kills; + PlayerSkillData[RawDataIndex].ObjectiveTime = -OldPlayerSkillData[RawDataIndex].ObjectiveTime; + PlayerSkillData[RawDataIndex].Shielding = -OldPlayerSkillData[RawDataIndex].Shielding; + PlayerSkillData[RawDataIndex].Healing = -OldPlayerSkillData[RawDataIndex].Healing; + TeamSkillData[RawDataIndex].NumDeaths = -OldTeamSkillData[RawDataIndex].NumDeaths; + TeamSkillData[RawDataIndex].Damage = -OldTeamSkillData[RawDataIndex].Damage; + TeamSkillData[RawDataIndex].Kills = -OldTeamSkillData[RawDataIndex].Kills; + TeamSkillData[RawDataIndex].ObjectiveTime = -OldTeamSkillData[RawDataIndex].ObjectiveTime; + TeamSkillData[RawDataIndex].Shielding = -OldTeamSkillData[RawDataIndex].Shielding; + TeamSkillData[RawDataIndex].Healing = -OldTeamSkillData[RawDataIndex].Healing; + RawDataIndex++; + // [Loop Continue] + goto J0x0B; + } + m_iTaskForce1PlayerCount = 0; + m_iTaskForce2PlayerCount = 0; + // End:0x49F + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgP = TgPawn(TgPC.Pawn); + // End:0x49E + if((TgP != none) && TgP.IsGod()) + { + PullDataForPlayer(TgP); + } + } + // End:0x54C + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + TgP = TgPawn(TgAI.Pawn); + // End:0x54B + if((TgP != none) && TgP.IsGod()) + { + PullDataForBot(TgP); + } + } + //return; +} + +function PullDataForPlayer(TgPawn TgP) +{ + local int RawDataIndex; + + RawDataIndex = int(TgP.GetTaskForceNumber()) - int(1); + // End:0x426 + if((RawDataIndex >= 0) && RawDataIndex < 2) + { + // End:0x6F + if(RawDataIndex == 0) + { + m_iTaskForce1PlayerCount++; + } + else + { + m_iTaskForce2PlayerCount++; + } + PlayerSkillData[RawDataIndex].NumDeaths += float(TgP.GetPRI().Deaths); + PlayerSkillData[RawDataIndex].Damage += float(GetDamageForPawn(TgP)); + PlayerSkillData[RawDataIndex].Kills += float(TgP.GetPRI().r_Scores[1]); + PlayerSkillData[RawDataIndex].ObjectiveTime += float(GetObjectiveTimeForPawn(TgP)); + PlayerSkillData[RawDataIndex].Shielding += float(GetShieldingForPawn(TgP)); + PlayerSkillData[RawDataIndex].Healing += float(TgP.GetPRI().r_Scores[6]); + TeamSkillData[RawDataIndex].NumDeaths += float(TgP.GetPRI().Deaths); + TeamSkillData[RawDataIndex].Damage += float(GetDamageForPawn(TgP)); + TeamSkillData[RawDataIndex].Kills += float(TgP.GetPRI().r_Scores[1]); + TeamSkillData[RawDataIndex].ObjectiveTime += float(GetObjectiveTimeForPawn(TgP)); + TeamSkillData[RawDataIndex].Shielding += float(GetShieldingForPawn(TgP)); + TeamSkillData[RawDataIndex].Healing += float(TgP.GetPRI().r_Scores[6]); + } + //return; +} + +function PullDataForBot(TgPawn TgP) +{ + local int RawDataIndex; + + RawDataIndex = int(TgP.GetTaskForceNumber()) - int(1); + // End:0x24D + if((RawDataIndex >= 0) && RawDataIndex < 2) + { + // End:0x24D + if(TgP.GetPRI() != none) + { + TeamSkillData[RawDataIndex].NumDeaths += float(TgP.GetPRI().Deaths); + TeamSkillData[RawDataIndex].Damage += float(GetDamageForPawn(TgP)); + TeamSkillData[RawDataIndex].Kills += float(TgP.GetPRI().r_Scores[1]); + TeamSkillData[RawDataIndex].ObjectiveTime += float(GetObjectiveTimeForPawn(TgP)); + TeamSkillData[RawDataIndex].Shielding += float(GetShieldingForPawn(TgP)); + TeamSkillData[RawDataIndex].Healing += float(TgP.GetPRI().r_Scores[6]); + } + } + //return; +} + +function bool CheckTeamStatsThreshold() +{ + // End:0x52 + if((TeamSkillData[0].Kills >= float(4)) || TeamSkillData[1].Kills >= float(4)) + { + return true; + } + return false; + //return ReturnValue; +} + +function bool CheckParticipation(int tf) +{ + local float damageParticipation, killParticipation, objTimeParticipation, shieldingParticipation, healingParticipation; + + damageParticipation = PlayerSkillData[tf - 1].Damage / (TeamSkillData[tf - 1].Damage + 1.0000000); + killParticipation = PlayerSkillData[tf - 1].Kills / (TeamSkillData[tf - 1].Kills + 1.0000000); + objTimeParticipation = PlayerSkillData[tf - 1].ObjectiveTime / (TeamSkillData[tf - 1].ObjectiveTime + 1.0000000); + shieldingParticipation = PlayerSkillData[tf - 1].Shielding / (TeamSkillData[tf - 1].Shielding + 1.0000000); + healingParticipation = PlayerSkillData[tf - 1].Healing / (TeamSkillData[tf - 1].Healing + 1.0000000); + // End:0x21C + if((tf != 1) && tf != 2) + { + return false; + } + // End:0x266 + if((TeamSkillData[tf - 1].Damage >= 2000.0000000) && damageParticipation > 0.1500000) + { + return true; + } + // End:0x2AF + if((TeamSkillData[tf - 1].Kills >= float(4)) && killParticipation > 0.1500000) + { + return true; + } + // End:0x2F9 + if((TeamSkillData[tf - 1].ObjectiveTime >= 30.0000000) && objTimeParticipation > 0.1500000) + { + return true; + } + // End:0x343 + if((TeamSkillData[tf - 1].Shielding >= 500.0000000) && shieldingParticipation > 0.1500000) + { + return true; + } + // End:0x38D + if((TeamSkillData[tf - 1].Healing >= 300.0000000) && healingParticipation > 0.1500000) + { + return true; + } + return false; + //return ReturnValue; +} + +function CheckDisparity() +{ + local TgGame_Paladins ChaosGame; + local TgPlayerController TgPC; + local TgAIController_BehaviorGod TgAI; + local TgPawn TgP; + local TgRepInfo_Game TgGRI; + local bool hasBots; + local float killRatio, payloadProgressRate; + local int attackingTaskForce; + local float upperKillRatio, lowerKillRatio, upperPayloadRate, lowerPayloadRate; + + upperKillRatio = m_fBaseUpperKillRatio; + lowerKillRatio = m_fBaseLowerKillRatio; + upperPayloadRate = m_fBaseUpperPayloadRate; + lowerPayloadRate = m_fBaseLowerPayloadRate; + // End:0xF1 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + TgP = TgPawn(TgAI.Pawn); + // End:0xF0 + if((TgP != none) && TgP.IsGod()) + { + hasBots = true; + } + } + // End:0x10F + if(!hasBots) + { + m_bDisparityDetected = false; + return; + } + // End:0x144 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + ChaosGame = TgGame_Paladins(WorldInfo.Game); + // End:0x116F + if(ChaosGame != none) + { + hasBots = false; + TgGRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x116F + if(!m_bDisparityDetected) + { + // End:0x116F + if(CheckTeamStatsThreshold()) + { + // End:0x651 + if((m_iTaskForce1PlayerCount > 0) && m_iTaskForce2PlayerCount == 0) + { + // End:0x37D + if(((TgGRI.GetTaskForce(1).r_nScore - TgGRI.GetTaskForce(2).r_nScore) >= 2) || (TgGRI.GetTaskForce(2).r_nScore == 1) && (int(ChaosGame.m_GameType) == int(28)) || int(ChaosGame.m_GameType) == int(29)) + { + upperKillRatio = 2.0000000; + lowerKillRatio = 0.8500000; + upperPayloadRate *= 1.3330000; + lowerPayloadRate *= 1.3330000; + // End:0x37C + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + } + // End:0x47E + if(((TgGRI.GetTaskForce(2).r_nScore == 1) && !m_bHasLoweredDifficultyAtTie) && (int(ChaosGame.m_GameType) == int(28)) || int(ChaosGame.m_GameType) == int(29)) + { + m_bDisparityDetected = true; + m_iIncreaseTF2Difficulty = -2; + m_bHasLoweredDifficultyAtTie = true; + // End:0x47D + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + } + // End:0x567 + if((TgGRI.GetTaskForce(2).r_nScore - TgGRI.GetTaskForce(1).r_nScore) >= 1) + { + upperKillRatio = 1.5000000; + lowerKillRatio = 0.6500000; + upperPayloadRate *= 0.6670000; + lowerPayloadRate *= 0.6670000; + // End:0x566 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + } + // End:0x651 + if((TgGRI.GetTaskForce(2).r_nScore - TgGRI.GetTaskForce(1).r_nScore) >= 2) + { + upperKillRatio = 1.3500000; + lowerKillRatio = 0.5500000; + upperPayloadRate *= 0.5000000; + lowerPayloadRate *= 0.5000000; + // End:0x650 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + } + } + // End:0xA21 + if((m_iTaskForce2PlayerCount > 0) && m_iTaskForce1PlayerCount == 0) + { + // End:0x6A6 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + // End:0x7EF + if(((TgGRI.GetTaskForce(2).r_nScore - TgGRI.GetTaskForce(1).r_nScore) >= 2) || (TgGRI.GetTaskForce(1).r_nScore == 1) && (int(ChaosGame.m_GameType) == int(28)) || int(ChaosGame.m_GameType) == int(29)) + { + upperKillRatio = 2.0000000; + lowerKillRatio = 0.8500000; + upperPayloadRate *= 1.3330000; + lowerPayloadRate *= 1.3330000; + } + // End:0x8B9 + if(((TgGRI.GetTaskForce(1).r_nScore == 1) && !m_bHasLoweredDifficultyAtTie) && (int(ChaosGame.m_GameType) == int(28)) || int(ChaosGame.m_GameType) == int(29)) + { + m_bDisparityDetected = true; + m_iIncreaseTF1Difficulty = -2; + m_bHasLoweredDifficultyAtTie = true; + } + // End:0x96D + if((TgGRI.GetTaskForce(1).r_nScore - TgGRI.GetTaskForce(2).r_nScore) >= 2) + { + upperKillRatio = 1.5000000; + lowerKillRatio = 0.6500000; + upperPayloadRate *= 0.6670000; + lowerPayloadRate *= 0.6670000; + } + // End:0xA21 + if((TgGRI.GetTaskForce(1).r_nScore - TgGRI.GetTaskForce(2).r_nScore) >= 2) + { + upperKillRatio = 1.3500000; + lowerKillRatio = 0.5500000; + upperPayloadRate *= 0.5000000; + lowerPayloadRate *= 0.5000000; + } + } + killRatio = ((TeamSkillData[1].NumDeaths + PlayerSkillData[1].NumDeaths) + 1.0000000) / ((TeamSkillData[0].NumDeaths + PlayerSkillData[0].NumDeaths) + 1.0000000); + // End:0xAEC + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + payloadProgressRate = (TgGRI.r_fPayloadProgressPercent - m_fLastPayloadPercent) / UpdateRate; + m_fLastPayloadPercent = TgGRI.r_fPayloadProgressPercent; + attackingTaskForce = -1; + // End:0xBC6 + if(TgGRI.r_LanePusher != none) + { + attackingTaskForce = int(TgGRI.r_LanePusher.GetTaskForceNumber()); + } + // End:0xBE8 + if(attackingTaskForce == -1) + { + m_fLastPayloadPercent = 0.0000000; + } + // End:0xF4C + if((m_iTaskForce1PlayerCount > 0) && m_iTaskForce2PlayerCount == 0) + { + // End:0xEEC + if(CheckParticipation(1)) + { + // End:0xC7A + if(killRatio > upperKillRatio) + { + m_bDisparityDetected = true; + m_iIncreaseTF2Difficulty = 1; + // End:0xC79 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + } + // End:0xCE2 + if(killRatio < lowerKillRatio) + { + m_bDisparityDetected = true; + m_iIncreaseTF2Difficulty = -1; + // End:0xCE1 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + } + // End:0xDDE + if((attackingTaskForce == 1) && ChaosGame.GetTimerCount('PayloadExpired') > UpdateRate) + { + // End:0xD86 + if(payloadProgressRate < lowerPayloadRate) + { + m_iIncreaseTF2Difficulty = -1; + // End:0xD85 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + } + // End:0xDDE + if(payloadProgressRate > upperPayloadRate) + { + m_iIncreaseTF2Difficulty = 1; + // End:0xDDD + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + } + } + // End:0xEE9 + if((attackingTaskForce == 2) && ChaosGame.GetTimerCount('PayloadExpired') > UpdateRate) + { + // End:0xE8A + if(payloadProgressRate > (upperPayloadRate * 0.7000000)) + { + m_iIncreaseTF2Difficulty = -1; + // End:0xE89 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + } + // End:0xEE9 + if(payloadProgressRate < (lowerPayloadRate * 0.7000000)) + { + m_iIncreaseTF2Difficulty = 1; + // End:0xEE8 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + } + } + } + else + { + // End:0xF21 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + m_bDisparityDetected = true; + m_iIncreaseTF1Difficulty = -1; + m_iIncreaseTF2Difficulty = -1; + } + } + // End:0xF81 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + // End:0x1131 + if((m_iTaskForce2PlayerCount > 0) && m_iTaskForce1PlayerCount == 0) + { + // End:0x10D1 + if(CheckParticipation(2)) + { + // End:0xFDF + if(killRatio < lowerKillRatio) + { + m_bDisparityDetected = true; + m_iIncreaseTF1Difficulty = 1; + } + // End:0x1011 + if(killRatio > upperKillRatio) + { + m_bDisparityDetected = true; + m_iIncreaseTF1Difficulty = -1; + } + // End:0x1069 + if(attackingTaskForce == 2) + { + // End:0x1047 + if(payloadProgressRate < lowerPayloadRate) + { + m_iIncreaseTF1Difficulty = -1; + } + // End:0x1069 + if(payloadProgressRate < upperPayloadRate) + { + m_iIncreaseTF1Difficulty = 1; + } + } + // End:0x10CE + if(attackingTaskForce == 1) + { + // End:0x10A5 + if(payloadProgressRate > (upperPayloadRate * 0.7000000)) + { + m_iIncreaseTF1Difficulty = -1; + } + // End:0x10CE + if(payloadProgressRate < (lowerPayloadRate * 0.7000000)) + { + m_iIncreaseTF1Difficulty = 1; + } + } + } + else + { + m_bDisparityDetected = true; + m_iIncreaseTF1Difficulty = -1; + m_iIncreaseTF2Difficulty = -1; + // End:0x1130 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + } + } + } + // End:0x116F + if(m_bDisparityDetected) + { + // End:0x116F + if(UpdateRate <= 20.0000000) + { + m_iIncreaseTF1Difficulty *= float(2); + m_iIncreaseTF2Difficulty *= float(2); + } + } + } + } + } + //return; +} + +function bool AdjustDifficulty() +{ + local TgGame_Paladins ChaosGame; + local TgAIController_BehaviorGod TgAI; + local TgPlayerController TgPC; + local TgPawn TgP; + local int DifficultyDataIndex; + local bool AdjustmentMade, hasBots; + local int newDifficultyTF1, newDifficultyTF2; + + ChaosGame = TgGame_Paladins(WorldInfo.Game); + AdjustmentMade = false; + // End:0x9FF + if(ChaosGame != none) + { + newDifficultyTF1 = Clamp(int(ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel) + m_iIncreaseTF1Difficulty, 0, 6); + newDifficultyTF2 = Clamp(int(ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel) + m_iIncreaseTF2Difficulty, 0, 6); + ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel = byte(newDifficultyTF1); + ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel = byte(newDifficultyTF2); + AdjustmentMade = true; + // End:0x9FF + if(AdjustmentMade) + { + // End:0x278 + if((m_iIncreaseTF1Difficulty > 0) && int(ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel) > (int(ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel) + int(2))) + { + ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel = byte(int(ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel) - int(2)); + } + // End:0x36F + if((m_iIncreaseTF2Difficulty > 0) && int(ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel) > (int(ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel) + int(2))) + { + ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel = byte(int(ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel) - int(2)); + } + // End:0x466 + if((m_iIncreaseTF1Difficulty < 0) && int(ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel) < (int(ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel) - int(1))) + { + ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel = byte(int(ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel) + int(1)); + } + // End:0x55D + if((m_iIncreaseTF2Difficulty < 0) && int(ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel) < (int(ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel) - int(1))) + { + ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel = byte(int(ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel) + int(1)); + } + // End:0x653 + if(((int(ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel) > int(ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel)) && int(ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel) == int(3)) && m_iTaskForce1PlayerCount > 0) + { + ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel = 3; + } + // End:0x749 + if(((int(ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel) > int(ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel)) && int(ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel) == int(3)) && m_iTaskForce2PlayerCount > 0) + { + ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel = 3; + } + hasBots = false; + // End:0x8F4 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + TgP = TgPawn(TgAI.Pawn); + // End:0x8F3 + if((TgP != none) && TgP.IsGod()) + { + hasBots = true; + DifficultyDataIndex = int(TgP.GetTaskForceNumber()) - int(1); + // End:0x8F3 + if((DifficultyDataIndex >= 0) && DifficultyDataIndex < 2) + { + TgAI.Difficulty = ChaosGame.DifficultyData[DifficultyDataIndex].CurrentBotDifficultyLevel; + UpdateBotDifficultyParameters(TgAI, ChaosGame.DifficultyData[DifficultyDataIndex].CurrentBotDifficultyLevel); + } + } + } + // End:0x9FC + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgP = TgPawn(TgPC.Pawn); + // End:0x9FB + if((((TgP != none) && TgP.IsGod()) && ChaosGame != none) && hasBots) + { + // End:0x9D5 + if(TgPC.GetTaskForceNumber() == 1) + { + // End:0x9FB + continue; + } + // End:0x9FB + if(TgPC.GetTaskForceNumber() == 2) + { + } + } + } + return true; + } + } + return false; + //return ReturnValue; +} + +function UpdateBotDifficultyParameters(TgAIController_BehaviorGod TgAI, TgAIController_Behavior.EBotDifficultyLevel NewDifficulty) +{ + switch(NewDifficulty) + { + // End:0x87 + case 0: + TgAI.m_fLeadAccuracy = 0.2000000; + TgAI.m_fMissLikelihood = 0.9500000; + TgAI.m_fDegreeMissedMagnitude = 35.0000000; + // End:0x49E + break; + // End:0xFB + case 1: + TgAI.m_fLeadAccuracy = 0.2000000; + TgAI.m_fMissLikelihood = 0.7500000; + TgAI.m_fDegreeMissedMagnitude = 30.0000000; + // End:0x49E + break; + // End:0x16F + case 2: + TgAI.m_fLeadAccuracy = 0.2500000; + TgAI.m_fMissLikelihood = 0.6500000; + TgAI.m_fDegreeMissedMagnitude = 25.0000000; + // End:0x49E + break; + // End:0x1E3 + case 3: + TgAI.m_fLeadAccuracy = 0.3000000; + TgAI.m_fMissLikelihood = 0.5000000; + TgAI.m_fDegreeMissedMagnitude = 20.0000000; + // End:0x49E + break; + // End:0x257 + case 4: + TgAI.m_fLeadAccuracy = 0.3500000; + TgAI.m_fMissLikelihood = 0.4500000; + TgAI.m_fDegreeMissedMagnitude = 15.0000000; + // End:0x49E + break; + // End:0x2CB + case 5: + TgAI.m_fLeadAccuracy = 0.4000000; + TgAI.m_fMissLikelihood = 0.4500000; + TgAI.m_fDegreeMissedMagnitude = 12.5000000; + // End:0x49E + break; + // End:0x33F + case 6: + TgAI.m_fLeadAccuracy = 0.4500000; + TgAI.m_fMissLikelihood = 0.3500000; + TgAI.m_fDegreeMissedMagnitude = 10.0000000; + // End:0x49E + break; + // End:0x3B3 + case 7: + TgAI.m_fLeadAccuracy = 0.5000000; + TgAI.m_fMissLikelihood = 0.2000000; + TgAI.m_fDegreeMissedMagnitude = 5.0000000; + // End:0x49E + break; + // End:0x427 + case 8: + TgAI.m_fLeadAccuracy = 0.6000000; + TgAI.m_fMissLikelihood = 0.1000000; + TgAI.m_fDegreeMissedMagnitude = 3.0000000; + // End:0x49E + break; + // End:0x49B + case 9: + TgAI.m_fLeadAccuracy = 1.0000000; + TgAI.m_fMissLikelihood = 0.1000000; + TgAI.m_fDegreeMissedMagnitude = 0.0000000; + // End:0x49E + break; + // End:0xFFFF + default: + break; + } + //return; +} + +function ReallowAdjustment() +{ + m_bCanAdjustNow = true; + //return; +} + +function UpdateDebugInfo() +{ + local TgGame_Paladins ChaosGame; + local TgRepInfo_Game GRI; + + ChaosGame = TgGame_Paladins(WorldInfo.Game); + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x5DF + if((ChaosGame != none) && GRI != none) + { + GRI.r_DifficultyDebugData.CurrentlyActive = m_bActive; + GRI.r_DifficultyDebugData.SkillPercentages[0] = SkillPercentages[0]; + GRI.r_DifficultyDebugData.SkillPercentages[1] = SkillPercentages[1]; + // End:0x40C + if(m_bActive) + { + GRI.r_DifficultyDebugData.DisparityDetected = m_bDisparityDetected; + GRI.r_DifficultyDebugData.ChangesLockedOut = !m_bCanAdjustNow; + // End:0x242 + if(m_bDisparityDetected) + { + GRI.r_DifficultyDebugData.TimeBeforeTrigger = int(float(m_iTriggerTime) - (WorldInfo.TimeSeconds - float(m_iDisparityDetectionTime))); + } + else + { + GRI.r_DifficultyDebugData.TimeBeforeTrigger = 0; + } + GRI.r_DifficultyDebugData.TaskForce1BotDifficulty = ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel; + GRI.r_DifficultyDebugData.TaskForce2BotDifficulty = ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel; + GRI.r_DifficultyDebugData.TaskForce1Skill = ChaosGame.DifficultyData[0].TeamSkillLevel; + GRI.r_DifficultyDebugData.TaskForce2Skill = ChaosGame.DifficultyData[1].TeamSkillLevel; + } + else + { + GRI.r_DifficultyDebugData.DisparityDetected = false; + GRI.r_DifficultyDebugData.ChangesLockedOut = false; + GRI.r_DifficultyDebugData.TimeBeforeTrigger = 0; + GRI.r_DifficultyDebugData.TaskForce1BotDifficulty = ChaosGame.DifficultyData[0].CurrentBotDifficultyLevel; + GRI.r_DifficultyDebugData.TaskForce2BotDifficulty = ChaosGame.DifficultyData[1].CurrentBotDifficultyLevel; + GRI.r_DifficultyDebugData.TaskForce1Skill = 0.0000000; + GRI.r_DifficultyDebugData.TaskForce2Skill = 0.0000000; + } + } + //return; +} + +defaultproperties +{ + m_bActive=true + m_bCanAdjustNow=true + m_iTriggerTime=5 + LockoutTime=15.0000000 + SkillDisparityTrigger=7.0000000 + UpdateRate=10.0000000 + m_fBaseUpperKillRatio=1.7500000 + m_fBaseLowerKillRatio=0.7500000 + m_fBaseUpperPayloadRate=0.0150000 + m_fBaseLowerPayloadRate=0.0050000 + NumDeaths_Weight=-1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIInfluenceMap.uc b/exported/TgGame/Classes/TgAIInfluenceMap.uc new file mode 100755 index 00000000..3616b4ab --- /dev/null +++ b/exported/TgGame/Classes/TgAIInfluenceMap.uc @@ -0,0 +1,24 @@ +class TgAIInfluenceMap extends Object within Actor + native(AI); + +var private native const noexport Pointer VfTable_FTickableObject; +var transient array Influences; +var native transient Pointer FalloffTable; +var native const transient HavokNavMeshGrid InfluenceGrid; +var float TickFrequency; +var transient float InvTickFrequency; +var float Decay; +var float Momentum; + +// Export UTgAIInfluenceMap::execInit(FFrame&, void* const) +native function Init(); + +// Export UTgAIInfluenceMap::execRegisterInfluence(FFrame&, void* const) +native function RegisterInfluence(const Vector StartPosition, const int PackedInfluence, const optional bool Additive = false, const optional float Radius = 0.0000000); + +defaultproperties +{ + TickFrequency=5.0000000 + Decay=0.3000000 + Momentum=0.2500000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIInfluenceMapRenderingComponent.uc b/exported/TgGame/Classes/TgAIInfluenceMapRenderingComponent.uc new file mode 100755 index 00000000..84955b66 --- /dev/null +++ b/exported/TgGame/Classes/TgAIInfluenceMapRenderingComponent.uc @@ -0,0 +1,14 @@ +class TgAIInfluenceMapRenderingComponent extends HavokNavigationRenderingComponent + native(AI) + hidecategories(Object); + +var transient TgAIInfluenceMap InfluenceMap; +var transient Texture2DDynamic InfluenceMapTexture; + +defaultproperties +{ + ReplacementPrimitive=none + HiddenGame=false + bIgnoreOwnerHidden=true + TranslucencySortPriority=1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAILocalPositionSolver.uc b/exported/TgGame/Classes/TgAILocalPositionSolver.uc new file mode 100755 index 00000000..eb9cec63 --- /dev/null +++ b/exported/TgGame/Classes/TgAILocalPositionSolver.uc @@ -0,0 +1,50 @@ +class TgAILocalPositionSolver extends Object within Actor + native(AI) + implements(Interface_ActorPathConstraints); + +enum ERepulsorWeightMethod +{ + RWM_Cubic, // 0 + RWM_Lerp, // 1 + RWM_Slerp, // 2 + RWM_MAX // 3 +}; + +struct native DefaultRepulsorData +{ + var byte TargetType; + var float MaxEnemyWeight; + var float MaxFriendlyWeight; + var TgAILocalPositionSolver.ERepulsorWeightMethod SolverType; + + structdefaultproperties + { + TargetType=0 + MaxEnemyWeight=0.0000000 + MaxFriendlyWeight=0.0000000 + SolverType=ERepulsorWeightMethod.RWM_Cubic + } +}; + +var private native const noexport Pointer VfTable_IInterface_ActorPathConstraints; +var array DefaultWeights; +var transient TgAIController_Behavior OuterController; +var transient float LastQueryTime; +var transient Vector LastQueryPoint; +var transient Vector LastSolvePoint; +var bool bSolveDistanceThreshold; +var bool bSolveWeights; + +// Export UTgAILocalPositionSolver::execSolveConstraints(FFrame&, void* const) +native function SolveConstraints(const Vector InitialPosition, const float MaxDistance, out Vector OutDesiredPosition); + +defaultproperties +{ + DefaultWeights[0]=(TargetType=1,MaxEnemyWeight=-20.0000000,MaxFriendlyWeight=10.0000000,SolverType=ERepulsorWeightMethod.RWM_Lerp) + DefaultWeights[1]=(TargetType=11,MaxEnemyWeight=-40.0000000,MaxFriendlyWeight=0.0000000,SolverType=ERepulsorWeightMethod.RWM_Lerp) + DefaultWeights[2]=(TargetType=6,MaxEnemyWeight=-20.0000000,MaxFriendlyWeight=-30.0000000,SolverType=ERepulsorWeightMethod.RWM_Lerp) + DefaultWeights[3]=(TargetType=7,MaxEnemyWeight=-20.0000000,MaxFriendlyWeight=-30.0000000,SolverType=ERepulsorWeightMethod.RWM_Lerp) + DefaultWeights[4]=(TargetType=3,MaxEnemyWeight=-30.0000000,MaxFriendlyWeight=-20.0000000,SolverType=ERepulsorWeightMethod.RWM_Lerp) + bSolveDistanceThreshold=true + bSolveWeights=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAILocalPositionSolver_God.uc b/exported/TgGame/Classes/TgAILocalPositionSolver_God.uc new file mode 100755 index 00000000..a2b66246 --- /dev/null +++ b/exported/TgGame/Classes/TgAILocalPositionSolver_God.uc @@ -0,0 +1 @@ +class TgAILocalPositionSolver_God extends TgAILocalPositionSolver within Actor; diff --git a/exported/TgGame/Classes/TgAILocalPositionSolver_Pet.uc b/exported/TgGame/Classes/TgAILocalPositionSolver_Pet.uc new file mode 100755 index 00000000..4d7fb9a4 --- /dev/null +++ b/exported/TgGame/Classes/TgAILocalPositionSolver_Pet.uc @@ -0,0 +1,6 @@ +class TgAILocalPositionSolver_Pet extends TgAILocalPositionSolver within Actor; + +defaultproperties +{ + bSolveWeights=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIObstacleAvoidance.uc b/exported/TgGame/Classes/TgAIObstacleAvoidance.uc new file mode 100755 index 00000000..0ef26f45 --- /dev/null +++ b/exported/TgGame/Classes/TgAIObstacleAvoidance.uc @@ -0,0 +1,53 @@ +class TgAIObstacleAvoidance extends Object within Actor + native(AI); + +enum EObstacleAvoidanceStatus +{ + OAS_NoPath, // 0 + OAS_Pathing, // 1 + OAS_PathFinished, // 2 + OAS_MAX // 3 +}; + +struct native ObstacleQueryCache +{ + var Vector RealGoalPos; + var Vector ModifiedGoalPos; + var init array IntermediatePoints; + var TgAIObstacleAvoidance.EObstacleAvoidanceStatus PathStatus; + + structdefaultproperties + { + RealGoalPos=(X=0.0000000,Y=0.0000000,Z=0.0000000) + ModifiedGoalPos=(X=0.0000000,Y=0.0000000,Z=0.0000000) + IntermediatePoints=none + PathStatus=EObstacleAvoidanceStatus.OAS_NoPath + } +}; + +var native transient Pointer ObstacleGrid; +var transient ObstacleQueryCache CachedAvoidance; +var init transient array CachedBlockers; +var init transient array CachedLandscapes; +var transient TgAIController_Behavior OuterController; +var bool bRenderingIsDirty; + +// Export UTgAIObstacleAvoidance::execFindPath(FFrame&, void* const) +native function bool FindPath(out array ActorsToAvoid, const out Vector TargetPoint, out Vector UpdatedTargetPoint); + +// Export UTgAIObstacleAvoidance::execGetNextMoveLocation(FFrame&, void* const) +native function TgAIObstacleAvoidance.EObstacleAvoidanceStatus GetNextMoveLocation(const out Vector TargetPoint, out Vector IntermediatePoint, const out float ArrivalDistance); + +// Export UTgAIObstacleAvoidance::execInit(FFrame&, void* const) +native function Init(const float GridPointSize, const float GridExtents); + +// Export UTgAIObstacleAvoidance::execReset(FFrame&, void* const) +native function Reset(); + +// Export UTgAIObstacleAvoidance::execTestObstacleAvoidance(FFrame&, void* const) +native function TestObstacleAvoidance(int TestType); + +defaultproperties +{ + bRenderingIsDirty=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIObstacleAvoidanceRenderingComponent.uc b/exported/TgGame/Classes/TgAIObstacleAvoidanceRenderingComponent.uc new file mode 100755 index 00000000..af2e0c70 --- /dev/null +++ b/exported/TgGame/Classes/TgAIObstacleAvoidanceRenderingComponent.uc @@ -0,0 +1,13 @@ +class TgAIObstacleAvoidanceRenderingComponent extends PrimitiveComponent + native(AI); + +var transient TgAIObstacleAvoidance ObstacleAvoidance; + +defaultproperties +{ + ReplacementPrimitive=none + bIgnoreOwnerHidden=true + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false + TranslucencySortPriority=1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIScout.uc b/exported/TgGame/Classes/TgAIScout.uc new file mode 100755 index 00000000..ba3ef71b --- /dev/null +++ b/exported/TgGame/Classes/TgAIScout.uc @@ -0,0 +1,32 @@ +class TgAIScout extends Scout + transient + config(Game) + hidecategories(Navigation); + +defaultproperties +{ + PathSizes=/* Array type was not detected. */ + TestJumpZ=600.0000000 + NavMeshGen_EntityHalfHeight=17.5000000 + NavMeshGen_MaxDropHeight=4000.0000000 + NavMeshGen_MaxStepHeight=15.0000000 + NavMeshGen_MaxPolyHeight=120.0000000 + NavMeshGen_MinRadius=25.0000000 + NavMeshGen_MaxRadius=80.0000000 + StandardJumpHeight=128.0000000 + StandardJumpDistance=160.0000000 + NavMeshGen_RecastCellSize=10.0000000 + NavMeshGen_RecastErodeRadius=20.0000000 + MaxStepHeight=15.0000000 + MaxJumpHeight=140.0000000 + // Reference: CylinderComponent'TgGame.Default__TgAIScout.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Scout.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAISquad.uc b/exported/TgGame/Classes/TgAISquad.uc new file mode 100755 index 00000000..a86db02a --- /dev/null +++ b/exported/TgGame/Classes/TgAISquad.uc @@ -0,0 +1,85 @@ +class TgAISquad extends Object + native(AI); + +var private native const noexport Pointer VfTable_FTickableObject; +var bool s_bOpen; +var bool s_bShouldSpread; +var array s_MemberList; +var TgBotFactory s_Factory; +var Actor s_CurrentTarget; +var array s_TargetList; +var Controller s_LastKiller; +var float s_fNextSpreadTime; + +// Export UTgAISquad::execOpenSquad(FFrame&, void* const) +native function OpenSquad(); + +// Export UTgAISquad::execCloseSquad(FFrame&, void* const) +native function CloseSquad(); + +// Export UTgAISquad::execIsOpen(FFrame&, void* const) +native function bool IsOpen(); + +// Export UTgAISquad::execAddMember(FFrame&, void* const) +native function AddMember(TgAIController aic); + +// Export UTgAISquad::execRemoveMember(FFrame&, void* const) +native function RemoveMember(TgAIController aic, bool bDied); + +// Export UTgAISquad::execMemberKilledBy(FFrame&, void* const) +native function MemberKilledBy(Controller Killer); + +// Export UTgAISquad::execMergeWith(FFrame&, void* const) +native final function bool MergeWith(TgAISquad squad); + +// Export UTgAISquad::execSquadDied(FFrame&, void* const) +native function SquadDied(); + +// Export UTgAISquad::execSpreadSquad(FFrame&, void* const) +native function SpreadSquad(); + +// Export UTgAISquad::execGetSquadBounds(FFrame&, void* const) +native function Box GetSquadBounds(); + +// Export UTgAISquad::execSuggestTarget(FFrame&, void* const) +native function SuggestTarget(Actor NewTarget, TgAIController requester); + +// Export UTgAISquad::execSetTarget(FFrame&, void* const) +native function SetTarget(Actor NewTarget); + +// Export UTgAISquad::execGetTarget(FFrame&, void* const) +native function Actor GetTarget(); + +// Export UTgAISquad::execGetTargetPawn(FFrame&, void* const) +native function TgPawn GetTargetPawn(); + +// Export UTgAISquad::execSuggestDropTarget(FFrame&, void* const) +native function SuggestDropTarget(Actor TargetToDrop, TgAIController requester); + +// Export UTgAISquad::execDropTarget(FFrame&, void* const) +native function DropTarget(Actor TargetToDrop); + +// Export UTgAISquad::execUpdateTargetList(FFrame&, void* const) +native function UpdateTargetList(float DeltaTime); + +// Export UTgAISquad::execSuggestEvade(FFrame&, void* const) +native function SuggestEvade(); + +// Export UTgAISquad::execEvade(FFrame&, void* const) +native function Evade(); + +// Export UTgAISquad::execNotifyTargetChanged(FFrame&, void* const) +native function NotifyTargetChanged(); + +// Export UTgAISquad::execNotifyEvade(FFrame&, void* const) +native function NotifyEvade(); + +event OnSquadCreated() +{ + //return; +} + +defaultproperties +{ + s_bShouldSpread=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAISquad_Minion.uc b/exported/TgGame/Classes/TgAISquad_Minion.uc new file mode 100755 index 00000000..42aaa81e --- /dev/null +++ b/exported/TgGame/Classes/TgAISquad_Minion.uc @@ -0,0 +1,11 @@ +class TgAISquad_Minion extends TgAISquad + native(AI); + +var float s_fNextClusterTime; +var float s_fNextMergeTime; + +// Export UTgAISquad_Minion::execClusterSquad(FFrame&, void* const) +native function ClusterSquad(); + +// Export UTgAISquad_Minion::execCheckForMerge(FFrame&, void* const) +native function CheckForMerge(); diff --git a/exported/TgGame/Classes/TgAISquad_Monster.uc b/exported/TgGame/Classes/TgAISquad_Monster.uc new file mode 100755 index 00000000..15857f75 --- /dev/null +++ b/exported/TgGame/Classes/TgAISquad_Monster.uc @@ -0,0 +1,5 @@ +class TgAISquad_Monster extends TgAISquad + native(AI); + +// Export UTgAISquad_Monster::execDropTarget(FFrame&, void* const) +native function DropTarget(Actor TargetToDrop); diff --git a/exported/TgGame/Classes/TgAISquad_MonsterBehaviorTree.uc b/exported/TgGame/Classes/TgAISquad_MonsterBehaviorTree.uc new file mode 100755 index 00000000..097fa9ca --- /dev/null +++ b/exported/TgGame/Classes/TgAISquad_MonsterBehaviorTree.uc @@ -0,0 +1,71 @@ +class TgAISquad_MonsterBehaviorTree extends TgAISquad + native(AI); + +var name BehaviorTreeAsName; +var transient TgAIController_BehaviorMapNpc Controller; + +// Export UTgAISquad_MonsterBehaviorTree::execSpawnController(FFrame&, void* const) +native function TgAIController_BehaviorMapNpc SpawnController(); + +// Export UTgAISquad_MonsterBehaviorTree::execSuggestTarget(FFrame&, void* const) +native function SuggestTarget(Actor NewTarget, TgAIController requester); + +// Export UTgAISquad_MonsterBehaviorTree::execSetTarget(FFrame&, void* const) +native function SetTarget(Actor NewTarget); + +// Export UTgAISquad_MonsterBehaviorTree::execSuggestDropTarget(FFrame&, void* const) +native function SuggestDropTarget(Actor TargetToDrop, TgAIController requester); + +// Export UTgAISquad_MonsterBehaviorTree::execDropTarget(FFrame&, void* const) +native function DropTarget(Actor TargetToDrop); + +// Export UTgAISquad_MonsterBehaviorTree::execUpdateTargetList(FFrame&, void* const) +native function UpdateTargetList(float DeltaTime); + +// Export UTgAISquad_MonsterBehaviorTree::execSquadDied(FFrame&, void* const) +native function SquadDied(); + +// Export UTgAISquad_MonsterBehaviorTree::execEvade(FFrame&, void* const) +native function Evade(); + +// Export UTgAISquad_MonsterBehaviorTree::execGetTarget(FFrame&, void* const) +native function Actor GetTarget(); + +// Export UTgAISquad_MonsterBehaviorTree::execGetTargetPawn(FFrame&, void* const) +native function TgPawn GetTargetPawn(); + +event OnSquadCreated() +{ + local TgBotFactory_Leashed LeashFactory; + + // End:0x1FD + if(Controller == none) + { + Controller = SpawnController(); + // End:0x1FD + if(Controller != none) + { + Controller.bIsPaused = false; + Controller.bThreatListDecays = false; + Controller.BehaviorTreeAsName = BehaviorTreeAsName; + Controller.m_Squad = self; + Controller.SetTaskForceNumber(int(s_Factory.s_nTaskForce)); + LeashFactory = TgBotFactory_Leashed(s_Factory); + // End:0x1DD + if(LeashFactory != none) + { + Controller.LeashVolume = LeashFactory.LeashVolume; + Controller.LeashDistance = LeashFactory.LeashRange; + Controller.m_vSpawnLocation = LeashFactory.Location; + } + Controller.LoadBehaviorTree(); + } + } + super.OnSquadCreated(); + //return; +} + +defaultproperties +{ + BehaviorTreeAsName="BehaviorTrees_MapNpc.AI.BT_BuffCamp_Squad" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAITaskforceBlockingVolume.uc b/exported/TgGame/Classes/TgAITaskforceBlockingVolume.uc new file mode 100755 index 00000000..6d0a8846 --- /dev/null +++ b/exported/TgGame/Classes/TgAITaskforceBlockingVolume.uc @@ -0,0 +1,36 @@ +class TgAITaskforceBlockingVolume extends Volume + native + hidecategories(Navigation,Object,Movement,Display); + +var() int BlockTaskforce; +var bool m_bHasRegisteredObstacle; + +// Export UTgAITaskforceBlockingVolume::execRegisterObstacle(FFrame&, void* const) +native function RegisterObstacle(); + +// Export UTgAITaskforceBlockingVolume::execUnRegisterObstacle(FFrame&, void* const) +native function UnRegisterObstacle(); + +event PostBeginPlay() +{ + // End:0x1E + if(int(Role) == int(ROLE_Authority)) + { + RegisterObstacle(); + } + //return; +} + +defaultproperties +{ + // Reference: BrushComponent'TgGame.Default__TgAITaskforceBlockingVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtility.uc b/exported/TgGame/Classes/TgAIUtility.uc new file mode 100755 index 00000000..daa22967 --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtility.uc @@ -0,0 +1,15 @@ +class TgAIUtility extends TgAIBehaviorNode + abstract + native(AI) + hidecategories(Object); + +enum EGraphType +{ + Graph_LINEAER, // 0 + Graph_MAX // 1 +}; + +var TgAIController_Behavior.EUtilityType UtilityType; +var() init array IgnoreBehaviorState; +var() init array RejctBehaviorState; +var transient int ParentIndex; diff --git a/exported/TgGame/Classes/TgAIUtilityFilter.uc b/exported/TgGame/Classes/TgAIUtilityFilter.uc new file mode 100755 index 00000000..746b5d1d --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFilter.uc @@ -0,0 +1,10 @@ +class TgAIUtilityFilter extends TgAIUtility + abstract + hidecategories(Object); + +var() bool bSoftFilter; + +defaultproperties +{ + UtilityType=EUtilityType.UTIL_Filter +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFilter_AssaultRangeType.uc b/exported/TgGame/Classes/TgAIUtilityFilter_AssaultRangeType.uc new file mode 100755 index 00000000..8542c4fb --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFilter_AssaultRangeType.uc @@ -0,0 +1,11 @@ +class TgAIUtilityFilter_AssaultRangeType extends TgAIUtilityFilter + hidecategories(Object); + +var() TgAIController_Behavior.ERangeType RangeType; + +defaultproperties +{ + RangeType=ERangeType.RangeType_Long + TitleName="AssaultRangeTypeFilter" + NodeToken=268435462 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFilter_CapturePoint.uc b/exported/TgGame/Classes/TgAIUtilityFilter_CapturePoint.uc new file mode 100755 index 00000000..ac506494 --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFilter_CapturePoint.uc @@ -0,0 +1,10 @@ +class TgAIUtilityFilter_CapturePoint extends TgAIUtilityFilter + hidecategories(Object); + +var() float DistanceCutoff; + +defaultproperties +{ + TitleName="CapturePointFilter" + NodeToken=268435461 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFilter_DistanceFromPawn.uc b/exported/TgGame/Classes/TgAIUtilityFilter_DistanceFromPawn.uc new file mode 100755 index 00000000..093cdb6f --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFilter_DistanceFromPawn.uc @@ -0,0 +1,11 @@ +class TgAIUtilityFilter_DistanceFromPawn extends TgAIUtilityFilter + hidecategories(Object); + +var() float DistanceCutoff; +var() bool bInverse; + +defaultproperties +{ + TitleName="DistanceFromPawnFilter" + NodeToken=268435469 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFilter_DistanceFromTarget.uc b/exported/TgGame/Classes/TgAIUtilityFilter_DistanceFromTarget.uc new file mode 100755 index 00000000..7bf2bc25 --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFilter_DistanceFromTarget.uc @@ -0,0 +1,11 @@ +class TgAIUtilityFilter_DistanceFromTarget extends TgAIUtilityFilter + hidecategories(Object); + +var() float DistanceCutoff; +var() bool bInverse; + +defaultproperties +{ + TitleName="DistanceFromTarget" + NodeToken=268435470 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFilter_GameState.uc b/exported/TgGame/Classes/TgAIUtilityFilter_GameState.uc new file mode 100755 index 00000000..33177efc --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFilter_GameState.uc @@ -0,0 +1,8 @@ +class TgAIUtilityFilter_GameState extends TgAIUtilityFilter + hidecategories(Object); + +defaultproperties +{ + TitleName="GameStateFilter" + NodeToken=268435457 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFilter_InsideActiveRallyPoint.uc b/exported/TgGame/Classes/TgAIUtilityFilter_InsideActiveRallyPoint.uc new file mode 100755 index 00000000..fac8dd1a --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFilter_InsideActiveRallyPoint.uc @@ -0,0 +1,10 @@ +class TgAIUtilityFilter_InsideActiveRallyPoint extends TgAIUtilityFilter + hidecategories(Object); + +var() bool bAllowEnemyRally; + +defaultproperties +{ + TitleName="InsideActiveRallyPoint" + NodeToken=268435463 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFilter_LoSToTarget.uc b/exported/TgGame/Classes/TgAIUtilityFilter_LoSToTarget.uc new file mode 100755 index 00000000..430ec487 --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFilter_LoSToTarget.uc @@ -0,0 +1,10 @@ +class TgAIUtilityFilter_LoSToTarget extends TgAIUtilityFilter + hidecategories(Object); + +var() bool bInverse; + +defaultproperties +{ + TitleName="LoSToTargetFilter" + NodeToken=268435467 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFilter_LoSToTargetLastKnownLocation.uc b/exported/TgGame/Classes/TgAIUtilityFilter_LoSToTargetLastKnownLocation.uc new file mode 100755 index 00000000..c1ffd61d --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFilter_LoSToTargetLastKnownLocation.uc @@ -0,0 +1,10 @@ +class TgAIUtilityFilter_LoSToTargetLastKnownLocation extends TgAIUtilityFilter + hidecategories(Object); + +var() bool bInverse; + +defaultproperties +{ + TitleName="LoSToTargetLastKnownLocationFilter" + NodeToken=268435471 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFilter_Payload.uc b/exported/TgGame/Classes/TgAIUtilityFilter_Payload.uc new file mode 100755 index 00000000..96ac134a --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFilter_Payload.uc @@ -0,0 +1,10 @@ +class TgAIUtilityFilter_Payload extends TgAIUtilityFilter + hidecategories(Object); + +var() float DistanceCutoff; + +defaultproperties +{ + TitleName="PayloadFilter" + NodeToken=268435466 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFilter_StayInTargetFOV.uc b/exported/TgGame/Classes/TgAIUtilityFilter_StayInTargetFOV.uc new file mode 100755 index 00000000..cf8bcb20 --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFilter_StayInTargetFOV.uc @@ -0,0 +1,10 @@ +class TgAIUtilityFilter_StayInTargetFOV extends TgAIUtilityFilter + hidecategories(Object); + +var() bool bInverse; + +defaultproperties +{ + TitleName="StayInTargetFOVFilter" + NodeToken=268435468 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFunction.uc b/exported/TgGame/Classes/TgAIUtilityFunction.uc new file mode 100755 index 00000000..4836d0cf --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFunction.uc @@ -0,0 +1,15 @@ +class TgAIUtilityFunction extends TgAIUtility + abstract + hidecategories(Object); + +var() float MinInput; +var() float MaxInput; +var() TgAIUtility.EGraphType FunctionType; +var() float DesiredValue; +var() float UtilityScale; +var() bool bInvert; + +defaultproperties +{ + UtilityScale=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFunction_CombatTargetDistance.uc b/exported/TgGame/Classes/TgAIUtilityFunction_CombatTargetDistance.uc new file mode 100755 index 00000000..0eef8aa1 --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFunction_CombatTargetDistance.uc @@ -0,0 +1,8 @@ +class TgAIUtilityFunction_CombatTargetDistance extends TgAIUtilityFunction + hidecategories(Object); + +defaultproperties +{ + TitleName="DistanceToCombatTarget" + NodeToken=268435458 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFunction_CombatTargetDistanceToNormal.uc b/exported/TgGame/Classes/TgAIUtilityFunction_CombatTargetDistanceToNormal.uc new file mode 100755 index 00000000..44437ed4 --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFunction_CombatTargetDistanceToNormal.uc @@ -0,0 +1,8 @@ +class TgAIUtilityFunction_CombatTargetDistanceToNormal extends TgAIUtilityFunction + hidecategories(Object); + +defaultproperties +{ + TitleName="CombatTargetDistanceToNormal" + NodeToken=268435465 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFunction_DistanceToPawn.uc b/exported/TgGame/Classes/TgAIUtilityFunction_DistanceToPawn.uc new file mode 100755 index 00000000..e900bfbf --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFunction_DistanceToPawn.uc @@ -0,0 +1,8 @@ +class TgAIUtilityFunction_DistanceToPawn extends TgAIUtilityFunction + hidecategories(Object); + +defaultproperties +{ + TitleName="DistanceToPawn" + NodeToken=268435460 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFunction_FortressDistance.uc b/exported/TgGame/Classes/TgAIUtilityFunction_FortressDistance.uc new file mode 100755 index 00000000..0bd66c49 --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFunction_FortressDistance.uc @@ -0,0 +1,8 @@ +class TgAIUtilityFunction_FortressDistance extends TgAIUtilityFunction + hidecategories(Object,TgAIUtilityFunction); + +defaultproperties +{ + TitleName="FortressDistance" + NodeToken=268435459 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFunction_PawnDistanceToNormal.uc b/exported/TgGame/Classes/TgAIUtilityFunction_PawnDistanceToNormal.uc new file mode 100755 index 00000000..00b9a065 --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFunction_PawnDistanceToNormal.uc @@ -0,0 +1,8 @@ +class TgAIUtilityFunction_PawnDistanceToNormal extends TgAIUtilityFunction + hidecategories(Object); + +defaultproperties +{ + TitleName="PawnsDistanceToNormal" + NodeToken=268435464 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityFunction_RandomUtility.uc b/exported/TgGame/Classes/TgAIUtilityFunction_RandomUtility.uc new file mode 100755 index 00000000..c2652054 --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityFunction_RandomUtility.uc @@ -0,0 +1,8 @@ +class TgAIUtilityFunction_RandomUtility extends TgAIUtilityFunction + hidecategories(Object); + +defaultproperties +{ + TitleName="RandomUtility" + NodeToken=268435456 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIUtilityHandle.uc b/exported/TgGame/Classes/TgAIUtilityHandle.uc new file mode 100755 index 00000000..4d1b22bf --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilityHandle.uc @@ -0,0 +1,44 @@ +class TgAIUtilityHandle extends Object within Actor + native(AI); + +struct native UtilityFunctionList +{ + var native Pointer UtilityFunctionList; + var int UtilityFunctionListCount; + var native Pointer StaticMemory; + var native transient Pointer CachedUtilities; + var native transient Pointer DynamicStorageMemory; + + structdefaultproperties + { + UtilityFunctionListCount=0 + } +}; + +struct native UtilityPair +{ + var native transient map{VOID,VOID} FilteredAnnotationPoints; +}; + +struct native UtilitySet +{ + var UtilityFunctionList Functions; + var UtilityFunctionList Filters; + + structdefaultproperties + { + Functions=(UtilityFunctionListCount=0) + Filters=(UtilityFunctionListCount=0) + } +}; + +var UtilitySet UtilitySets[EAIAnnotationType]; +var UtilityPair FilteredAnnotationPoints[EAIAnnotationType]; +var TgPawn.EBotBehaviorState eBehaviorState; +var TgAIController_Behavior.ERangeType AssaultRangeType; + +// Export UTgAIUtilityHandle::execGetBestAnnotationPoint(FFrame&, void* const) +native function TgAIAnnotation GetBestAnnotationPoint(TgAIController_Behavior.EAIAnnotationType AnnotationType); + +// Export UTgAIUtilityHandle::execComputeUtilities(FFrame&, void* const) +native function ComputeUtilities(); diff --git a/exported/TgGame/Classes/TgAIUtilitySet.uc b/exported/TgGame/Classes/TgAIUtilitySet.uc new file mode 100755 index 00000000..088e2b85 --- /dev/null +++ b/exported/TgGame/Classes/TgAIUtilitySet.uc @@ -0,0 +1,13 @@ +class TgAIUtilitySet extends TgAIBehaviorNode + native(AI) + hidecategories(Object); + +var() TgAIController_Behavior.EAIAnnotationType AnnotationType; +var init editfixedsize editinline array Functions; +var init editfixedsize editinline array Filters; + +defaultproperties +{ + InvTickFrequency=1.0000000 + TitleName="UtilitySet" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAIVolume.uc b/exported/TgGame/Classes/TgAIVolume.uc new file mode 100755 index 00000000..ea720321 --- /dev/null +++ b/exported/TgGame/Classes/TgAIVolume.uc @@ -0,0 +1,86 @@ +class TgAIVolume extends Volume + native + hidecategories(Navigation,Object,Movement,Display); + +var() int LaneIndex; +var() int TaskforceIndex; +var() bool bEnabled; + +// Export UTgAIVolume::execGetRandomPointInAIVolume(FFrame&, void* const) +native function Vector GetRandomPointInAIVolume(optional float CollisionRadius = 0.0000000); + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x46 + if(Action.InputLinks[0].bHasImpulse) + { + bEnabled = true; + } + else + { + // End:0x8C + if(Action.InputLinks[1].bHasImpulse) + { + bEnabled = false; + } + else + { + // End:0xDB + if(Action.InputLinks[2].bHasImpulse) + { + bEnabled = !bEnabled; + } + } + } + //return; +} + +event PostBeginPlay() +{ + local TgGame Game; + + super.PostBeginPlay(); + Game = TgGame(WorldInfo.Game); + // End:0x1B8 + if((int(Role) == int(ROLE_Authority)) && Game != none) + { + Game.s_AIVolumes.AddItem(self); + // End:0xD9 + if(TaskforceIndex == 1) + { + Game.s_Taskforce1AIVolumesIndices.AddItem(Game.s_AIVolumes.Length - 1); + } + else + { + // End:0x130 + if(TaskforceIndex == 2) + { + Game.s_Taskforce2AIVolumesIndices.AddItem(Game.s_AIVolumes.Length - 1); + } + else + { + Game.s_Taskforce1AIVolumesIndices.AddItem(Game.s_AIVolumes.Length - 1); + Game.s_Taskforce2AIVolumesIndices.AddItem(Game.s_AIVolumes.Length - 1); + } + } + } + //return; +} + +defaultproperties +{ + TaskforceIndex=-1 + bEnabled=true + // Reference: BrushComponent'TgGame.Default__TgAIVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionType=ECollisionType.COLLIDE_NoCollision + bStatic=false + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAchievement.uc b/exported/TgGame/Classes/TgAchievement.uc new file mode 100755 index 00000000..1532543a --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement.uc @@ -0,0 +1,38 @@ +class TgAchievement extends Object + native(Achievement); + +const TGACHIEVEMENT_JUMP_JUMP_ACTIVITY_ID = 1933; + +var TgPlayerController Controller; +var const bool m_bCustomValue3IsBotId; +var bool m_bAwardsAllowTriggering; +var int m_nBotId; +var int m_nActivityId; +var int m_nCustomValue1; +var int m_nCustomValue2; +var int m_nCustomValue3; +var int m_nCustomValue4; +var int m_nCustomValue5; +var int m_nCurrentProgress; +var int m_nCurrentTarget; + +// Export UTgAchievement::execGetCustomValue1(FFrame&, void* const) +native function float GetCustomValue1(); + +// Export UTgAchievement::execGetCustomValue2(FFrame&, void* const) +native function float GetCustomValue2(); + +// Export UTgAchievement::execGetCustomValue3(FFrame&, void* const) +native function float GetCustomValue3(); + +// Export UTgAchievement::execGetCustomValue4(FFrame&, void* const) +native function float GetCustomValue4(); + +// Export UTgAchievement::execGetCustomValue5(FFrame&, void* const) +native function float GetCustomValue5(); + +// Export UTgAchievement::execBelongsToBot(FFrame&, void* const) +native function bool BelongsToBot(int BotId); + +// Export UTgAchievement::execStopTracking(FFrame&, void* const) +native function StopTracking(); diff --git a/exported/TgGame/Classes/TgAchievement_ChampionKill.uc b/exported/TgGame/Classes/TgAchievement_ChampionKill.uc new file mode 100755 index 00000000..37156727 --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement_ChampionKill.uc @@ -0,0 +1,2 @@ +class TgAchievement_ChampionKill extends TgAchievement + native(Achievement); diff --git a/exported/TgGame/Classes/TgAchievement_CounterAirDefense.uc b/exported/TgGame/Classes/TgAchievement_CounterAirDefense.uc new file mode 100755 index 00000000..b0cee909 --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement_CounterAirDefense.uc @@ -0,0 +1,2 @@ +class TgAchievement_CounterAirDefense extends TgAchievement + native(Achievement); diff --git a/exported/TgGame/Classes/TgAchievement_Damage.uc b/exported/TgGame/Classes/TgAchievement_Damage.uc new file mode 100755 index 00000000..e9daacdd --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement_Damage.uc @@ -0,0 +1,4 @@ +class TgAchievement_Damage extends TgAchievement + native(Achievement); + +var float m_fDamageDealt; diff --git a/exported/TgGame/Classes/TgAchievement_DoubleKill.uc b/exported/TgGame/Classes/TgAchievement_DoubleKill.uc new file mode 100755 index 00000000..1c6571cf --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement_DoubleKill.uc @@ -0,0 +1,2 @@ +class TgAchievement_DoubleKill extends TgAchievement + native(Achievement); diff --git a/exported/TgGame/Classes/TgAchievement_EnvironmentalDeath.uc b/exported/TgGame/Classes/TgAchievement_EnvironmentalDeath.uc new file mode 100755 index 00000000..669efa51 --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement_EnvironmentalDeath.uc @@ -0,0 +1,2 @@ +class TgAchievement_EnvironmentalDeath extends TgAchievement + native(Achievement); diff --git a/exported/TgGame/Classes/TgAchievement_FromTheGrave.uc b/exported/TgGame/Classes/TgAchievement_FromTheGrave.uc new file mode 100755 index 00000000..9dba3be9 --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement_FromTheGrave.uc @@ -0,0 +1,9 @@ +class TgAchievement_FromTheGrave extends TgAchievement + native(Achievement); + +var int KillerPawnId; + +defaultproperties +{ + KillerPawnId=-1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAchievement_HardCarry.uc b/exported/TgGame/Classes/TgAchievement_HardCarry.uc new file mode 100755 index 00000000..bb5f7d70 --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement_HardCarry.uc @@ -0,0 +1,4 @@ +class TgAchievement_HardCarry extends TgAchievement + native(Achievement); + +var int nKills; diff --git a/exported/TgGame/Classes/TgAchievement_Headshot.uc b/exported/TgGame/Classes/TgAchievement_Headshot.uc new file mode 100755 index 00000000..74d9534a --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement_Headshot.uc @@ -0,0 +1,4 @@ +class TgAchievement_Headshot extends TgAchievement + native(Achievement); + +var int m_nHeadshotsWithoutMissing; diff --git a/exported/TgGame/Classes/TgAchievement_KillAfterRoundEnd.uc b/exported/TgGame/Classes/TgAchievement_KillAfterRoundEnd.uc new file mode 100755 index 00000000..1a136bf3 --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement_KillAfterRoundEnd.uc @@ -0,0 +1,2 @@ +class TgAchievement_KillAfterRoundEnd extends TgAchievement + native(Achievement); diff --git a/exported/TgGame/Classes/TgAchievement_KillEndStreak.uc b/exported/TgGame/Classes/TgAchievement_KillEndStreak.uc new file mode 100755 index 00000000..5c274806 --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement_KillEndStreak.uc @@ -0,0 +1,2 @@ +class TgAchievement_KillEndStreak extends TgAchievement + native(Achievement); diff --git a/exported/TgGame/Classes/TgAchievement_KillFromLowHealth.uc b/exported/TgGame/Classes/TgAchievement_KillFromLowHealth.uc new file mode 100755 index 00000000..625916c1 --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement_KillFromLowHealth.uc @@ -0,0 +1,2 @@ +class TgAchievement_KillFromLowHealth extends TgAchievement + native(Achievement); diff --git a/exported/TgGame/Classes/TgAchievement_LastOneStanding.uc b/exported/TgGame/Classes/TgAchievement_LastOneStanding.uc new file mode 100755 index 00000000..40b92ef5 --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement_LastOneStanding.uc @@ -0,0 +1,2 @@ +class TgAchievement_LastOneStanding extends TgAchievement + native(Achievement); diff --git a/exported/TgGame/Classes/TgAchievement_QuestionsLater.uc b/exported/TgGame/Classes/TgAchievement_QuestionsLater.uc new file mode 100755 index 00000000..af030f9a --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement_QuestionsLater.uc @@ -0,0 +1,6 @@ +class TgAchievement_QuestionsLater extends TgAchievement + native(Achievement); + +var bool bTakenDamageYet; +var bool bHasHitAllEnemies; +var array EnemyPawnsHit; diff --git a/exported/TgGame/Classes/TgAchievement_Sniper.uc b/exported/TgGame/Classes/TgAchievement_Sniper.uc new file mode 100755 index 00000000..88829422 --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement_Sniper.uc @@ -0,0 +1,2 @@ +class TgAchievement_Sniper extends TgAchievement + native(Achievement); diff --git a/exported/TgGame/Classes/TgAchievement_Survivor.uc b/exported/TgGame/Classes/TgAchievement_Survivor.uc new file mode 100755 index 00000000..8de75a34 --- /dev/null +++ b/exported/TgGame/Classes/TgAchievement_Survivor.uc @@ -0,0 +1,2 @@ +class TgAchievement_Survivor extends TgAchievement + native(Achievement); diff --git a/exported/TgGame/Classes/TgActionPoint.uc b/exported/TgGame/Classes/TgActionPoint.uc new file mode 100755 index 00000000..f8b97c6e --- /dev/null +++ b/exported/TgGame/Classes/TgActionPoint.uc @@ -0,0 +1,47 @@ +class TgActionPoint extends TgNavigationPoint + native(Navigation) + hidecategories(Navigation,Lighting,LightColor,Force); + +enum eActionPointType +{ + ACTION_NONE, // 0 + ACTION_RELAX_OPEN, // 1 + ACTION_MINE_DEFAULT, // 2 + ACTION_RELAX_WALL, // 3 + ACTION_CONSOLE_STANDARD, // 4 + ACTION_CONSOLE_LAB_DEFAULT, // 5 + ACTION_GUARD_WATCH_NORMAL, // 6 + ACTION_GUARD_WATCH_ELEVATED, // 7 + ACTION_FACTORY_LINE_DEFAULT, // 8 + ACTION_SNIPE, // 9 + ACTION_PLACE_TURRET, // 10 + ACTION_PLACE_SHIELD, // 11 + ACTION_PLACE_CRATE, // 12 + ACTION_PLACE_MINE, // 13 + ACTION_PLACE_SENSOR, // 14 + ACTION_MAX // 15 +}; + +var(ActionPoint) TgActionPoint.eActionPointType ActionType; +var(ActionPoint) byte nObjectiveNum; +var(ActionPoint) byte nTaskForce; +var(ActionPoint) bool bUseRotation; + +defaultproperties +{ + bUseRotation=true + // Reference: CylinderComponent'TgGame.Default__TgActionPoint.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgNavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgActorFactory.uc b/exported/TgGame/Classes/TgActorFactory.uc new file mode 100755 index 00000000..72836e7d --- /dev/null +++ b/exported/TgGame/Classes/TgActorFactory.uc @@ -0,0 +1,111 @@ +class TgActorFactory extends Actor + abstract + native(Factory) + notplaceable + hidecategories(Navigation,Advanced,Attachment,Collision,Display); + +enum eSelectionMethod +{ + TGSM_RANDOM, // 0 + TGSM_SEQUENTIAL, // 1 + TGSM_MAX // 2 +}; + +var(Object) editconst int m_nMapObjectId; +var() bool s_bAutoSpawn; +var editconst int s_nTeamNumber; +var() byte s_nTaskForce; +var() TgObject.MinimapFactoryType m_MinimapType; +var() TgActorFactory.eSelectionMethod s_eSelectionMethod; +var int s_nSelectionListId; +var int s_nSelectedObjectId; +var int m_nSelectionListPropId; +var int s_nNameId; +var transient int s_nFactoryId; +var transient TgRepInfo_Factory m_FRI; +var Class m_FRIClass; +var int s_nCurListIndex; +var() export editinline SpriteComponent m_WorldIconSprite; + +// Export UTgActorFactory::execLoadObjectConfig(FFrame&, void* const) +native function LoadObjectConfig(); + +// Export UTgActorFactory::execSpawnObject(FFrame&, void* const) +native function SpawnObject(); + +// Export UTgActorFactory::execCalcFactoryPlacement(FFrame&, void* const) +native function CalcFactoryPlacement(Vector Extent, bool bCenterOnGround, out Vector OutLocation, out Rotator OutRotation); + +// Export UTgActorFactory::execSetTaskForceNumber(FFrame&, void* const) +native function SetTaskForceNumber(int nNewTaskForce); + +simulated function PreBeginPlay() +{ + local TgGame Game; + + super.PreBeginPlay(); + LoadObjectConfig(); + Game = TgGame(WorldInfo.Game); + // End:0xB4 + if(int(Role) == int(ROLE_Authority)) + { + // End:0xB4 + if(Game != none) + { + s_nFactoryId = Game.GetNextActorInstanceId(); + Game.s_ActorFactories.AddItem(self); + } + } + //return; +} + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x8A + if(int(Role) == int(ROLE_Authority)) + { + // End:0x80 + if(m_FRIClass != none) + { + m_FRI = Spawn(m_FRIClass, self,, Location, Rotation); + m_FRI.InitFor(self); + } + SpawnObject(); + } + //return; +} + +simulated function Destroyed() +{ + // End:0x27 + if(m_FRI != none) + { + m_FRI.Destroy(); + } + super.Destroyed(); + //return; +} + +defaultproperties +{ + s_bAutoSpawn=true + m_FRIClass=Class'TgGame.TgRepInfo_Factory' + // Reference: SpriteComponent'TgGame.Default__TgActorFactory.WorldIcon' + // TemplateOwnerClass: none + // TemplateOwnerName: 'WorldIcon' + begin object name="WorldIcon" class=Engine.SpriteComponent + bIsScreenSizeScaled=true + ScreenSize=0.0000100 + ReplacementPrimitive=none + DepthPriorityGroup=ESceneDepthPriorityGroup.SDPG_Foreground + HiddenGame=true + HiddenEditor=true + Scale=30.0000000 + end object + m_WorldIconSprite=WorldIcon + Components[0]=none + Components[1]=none + Components[2]=WorldIcon + bNoDelete=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgActorFactoryTgEmitter_TeamColor.uc b/exported/TgGame/Classes/TgActorFactoryTgEmitter_TeamColor.uc new file mode 100755 index 00000000..ee5530ee --- /dev/null +++ b/exported/TgGame/Classes/TgActorFactoryTgEmitter_TeamColor.uc @@ -0,0 +1,12 @@ +class TgActorFactoryTgEmitter_TeamColor extends ActorFactoryEmitter + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +defaultproperties +{ + GameplayActorClass=Class'TgGame.TgEmitterSpawnable_TeamColor' + MenuName="Add Emitter (Team Colored)" + NewActorClass=Class'TgGame.TgEmitter_TeamColor' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgActorFactory_TgStaticMeshActorCapturePoint.uc b/exported/TgGame/Classes/TgActorFactory_TgStaticMeshActorCapturePoint.uc new file mode 100755 index 00000000..19ebd4de --- /dev/null +++ b/exported/TgGame/Classes/TgActorFactory_TgStaticMeshActorCapturePoint.uc @@ -0,0 +1,12 @@ +class TgActorFactory_TgStaticMeshActorCapturePoint extends ActorFactoryStaticMesh + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +defaultproperties +{ + MenuName="Add Capture Point Mesh" + MenuPriority=20 + NewActorClass=Class'TgGame.TgStaticMeshActor_CapturePoint' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgActorFactory_TgStaticMeshActorTeamColor.uc b/exported/TgGame/Classes/TgActorFactory_TgStaticMeshActorTeamColor.uc new file mode 100755 index 00000000..ba5a3304 --- /dev/null +++ b/exported/TgGame/Classes/TgActorFactory_TgStaticMeshActorTeamColor.uc @@ -0,0 +1,12 @@ +class TgActorFactory_TgStaticMeshActorTeamColor extends ActorFactoryStaticMesh + config(Editor) + editinlinenew + collapsecategories + hidecategories(Object); + +defaultproperties +{ + MenuName="Add StaticMesh (Team Colored)" + MenuPriority=20 + NewActorClass=Class'TgGame.TgStaticMeshActor_TeamColor' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAimAccelerationCurves.uc b/exported/TgGame/Classes/TgAimAccelerationCurves.uc new file mode 100755 index 00000000..34b45470 --- /dev/null +++ b/exported/TgGame/Classes/TgAimAccelerationCurves.uc @@ -0,0 +1,42 @@ +class TgAimAccelerationCurves extends Object + native + editinlinenew + hidecategories(Object) + autoexpandcategories(TgAimAccelerationCurves); + +var() name SettingsName; +var() float MaxAccelMultiplierX; +var() float MaxAccelMultiplierY; +var() RawDistributionFloat AimSpeedX; +var() RawDistributionFloat AimAccelX; +var() RawDistributionFloat AimSpeedY; +var() RawDistributionFloat AimAccelY; + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgAimAccelerationCurves.DistributionAimSpeedX' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAimSpeedX' + begin object name="DistributionAimSpeedX" class=Engine.DistributionFloatConstantCurve + end object + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgAimAccelerationCurves.DistributionAimAccelX' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAimAccelX' + begin object name="DistributionAimAccelX" class=Engine.DistributionFloatConstantCurve + end object + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgAimAccelerationCurves.DistributionAimSpeedY' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAimSpeedY' + begin object name="DistributionAimSpeedY" class=Engine.DistributionFloatConstantCurve + end object + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgAimAccelerationCurves.DistributionAimAccelY' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAimAccelY' + begin object name="DistributionAimAccelY" class=Engine.DistributionFloatConstantCurve + end object + SettingsName="UnnamedSetting" + AimSpeedX=(Distribution=Distribution=DistributionAimSpeedX,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + AimAccelX=(Distribution=Distribution=DistributionAimAccelX,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + AimSpeedY=(Distribution=Distribution=DistributionAimSpeedY,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + AimAccelY=(Distribution=Distribution=DistributionAimAccelY,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAimAssistKeyframe.uc b/exported/TgGame/Classes/TgAimAssistKeyframe.uc new file mode 100755 index 00000000..1537ed46 --- /dev/null +++ b/exported/TgGame/Classes/TgAimAssistKeyframe.uc @@ -0,0 +1,32 @@ +class TgAimAssistKeyframe extends Object + native + editinlinenew + hidecategories(Object) + autoexpandcategories(TgAimAssistKeyframe); + +struct native AimAssistKeyframeData +{ + var name KeyframeName; + var float Distance; + + structdefaultproperties + { + KeyframeName="None" + Distance=0.0000000 + } +}; + +var() name KeyframeName; +var() RawDistributionFloat AimAssistCurve; +var() bool bMirrored; + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgAimAssistKeyframe.DistributionAimAssistKeyframe' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionAimAssistKeyframe' + begin object name="DistributionAimAssistKeyframe" class=Engine.DistributionFloatConstantCurve + end object + KeyframeName="UnnamedKeyframe" + AimAssistCurve=(Distribution=Distribution=DistributionAimAssistKeyframe,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAkActor.uc b/exported/TgGame/Classes/TgAkActor.uc new file mode 100755 index 00000000..ee1675a0 --- /dev/null +++ b/exported/TgGame/Classes/TgAkActor.uc @@ -0,0 +1,17 @@ +class TgAkActor extends Actor + native + notplaceable + hidecategories(Navigation); + +var bool m_bCanCheckOcclusion; + +// Export UTgAkActor::execCheckOcclusion(FFrame&, void* const) +native function float CheckOcclusion(); + +defaultproperties +{ + m_bCanCheckOcclusion=true + m_bComplexOccluder=true + LifeSpan=2.0000000 + m_fMaxDistForOcclusionPathfinding=1000.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAkActorUnoccluded.uc b/exported/TgGame/Classes/TgAkActorUnoccluded.uc new file mode 100755 index 00000000..439487e5 --- /dev/null +++ b/exported/TgGame/Classes/TgAkActorUnoccluded.uc @@ -0,0 +1,11 @@ +class TgAkActorUnoccluded extends TgAkActor + native + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + m_bCanCheckOcclusion=false + bIgnoreBaseRotation=true + LifeSpan=0.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAkAudioManagement.uc b/exported/TgGame/Classes/TgAkAudioManagement.uc new file mode 100755 index 00000000..f7d86f3d --- /dev/null +++ b/exported/TgGame/Classes/TgAkAudioManagement.uc @@ -0,0 +1,30 @@ +class TgAkAudioManagement extends Object + native(InteractiveAudio); + +const MAX_METERING_CALLBACK_SLOTS = 16; + +struct native AkMeterCallbackState +{ + var dword dwBusID; + var bool bActive; + var float fLevel; + var float fTimestamp; + + structdefaultproperties + { + dwBusID=() + bActive=false + fLevel=0.0000000 + fTimestamp=0.0000000 + } +}; + +var AkMeterCallbackState m_MeterCallbackSlots[16]; +var array dwAllBusses; +var bool m_bInitialized; + +// Export UTgAkAudioManagement::execInitialize(FFrame&, void* const) +native function Initialize(); + +// Export UTgAkAudioManagement::execGetBusUID(FFrame&, void* const) +native function dword GetBusUID(string sBusName); diff --git a/exported/TgGame/Classes/TgAnimBlendBy1P3P.uc b/exported/TgGame/Classes/TgAnimBlendBy1P3P.uc new file mode 100755 index 00000000..7f570ef1 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendBy1P3P.uc @@ -0,0 +1,17 @@ +class TgAnimBlendBy1P3P extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EBlendPerspectiveTypes +{ + BLEND1P3P_1P, // 0 + BLEND1P3P_3P, // 1 + BLEND1P3P_MAX // 2 +}; + +var TgPawn m_TgPawn; + +defaultproperties +{ + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByAmmo.uc b/exported/TgGame/Classes/TgAnimBlendByAmmo.uc new file mode 100755 index 00000000..556df319 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByAmmo.uc @@ -0,0 +1,92 @@ +class TgAnimBlendByAmmo extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native AmmoBlendParams +{ + var() int MinAmmo; + var() int MaxAmmo; + var() int ChildNum; + + structdefaultproperties + { + MinAmmo=0 + MaxAmmo=0 + ChildNum=0 + } +}; + +var() int m_nDefaultChild; +var() TgObject.TG_EQUIP_POINT m_EquipPoint; +var() bool m_bDelayUpdateUntilReplay; +var() bool m_bCheckAmmoPerTick; +var() array m_ChildAmmoParams; +var int m_nPendingChildIndex; +var int m_nAmmoUpdateTickTag; + +// Export UTgAnimBlendByAmmo::execPlayAnim(FFrame&, void* const) +native function PlayAnim(optional bool bLoop = false, optional float Rate = 1.0000000, optional float StartTime = 0.0000000); + +// Export UTgAnimBlendByAmmo::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); + +simulated function SetAmmoAmt(int nAmmo) +{ + local int I, targetAmmoChild; + + targetAmmoChild = m_nDefaultChild; + I = 0; + J0x1E: + + // End:0xDE [Loop If] + if(I < m_ChildAmmoParams.Length) + { + // End:0xD0 + if((nAmmo >= m_ChildAmmoParams[I].MinAmmo) && nAmmo <= m_ChildAmmoParams[I].MaxAmmo) + { + targetAmmoChild = m_ChildAmmoParams[I].ChildNum; + } + I++; + // [Loop Continue] + goto J0x1E; + } + SetAmmoChild(targetAmmoChild); + //return; +} + +private final simulated function SetAmmoChild(int targetAmmoChild) +{ + // End:0xCC + if((targetAmmoChild >= 0) && targetAmmoChild < Children.Length) + { + // End:0x61 + if(!m_bDelayUpdateUntilReplay) + { + SetActiveChild(targetAmmoChild, GetBlendTime(targetAmmoChild)); + } + else + { + m_nPendingChildIndex = targetAmmoChild; + // End:0xCC + if(ActiveChildIndex != m_nPendingChildIndex) + { + // End:0xCC + if(bJustBecameRelevant || (m_nAmmoUpdateTickTag + 1) >= NodeTickTag) + { + SetActiveChild(targetAmmoChild, 0.0000000); + } + } + } + } + //return; +} + +defaultproperties +{ + m_EquipPoint=TG_EQUIP_POINT.EQP_AUTO + m_bDelayUpdateUntilReplay=true + m_ChildAmmoParams[0]=(MinAmmo=2,MaxAmmo=10000,ChildNum=0) + m_ChildAmmoParams[1]=(MinAmmo=1,MaxAmmo=1,ChildNum=1) + DefaultBlendTime=0.1000000 + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByBuffMonsterIntro.uc b/exported/TgGame/Classes/TgAnimBlendByBuffMonsterIntro.uc new file mode 100755 index 00000000..d388bac8 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByBuffMonsterIntro.uc @@ -0,0 +1,21 @@ +class TgAnimBlendByBuffMonsterIntro extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var(Introduction) bool m_bScalePlayRateOfSpawnAndIntro; +var(Introduction) bool m_bEndIntroStateEarly; +var bool m_bIntroHasBeenSetup; +var(Introduction) float m_fIntroTimeHittableAt; +var float m_fTimeToStartIntroAnim; +var TgPawn m_CachedPawn; +var float m_fSpawnIntroScaleRate; + +// Export UTgAnimBlendByBuffMonsterIntro::execSetupIntro(FFrame&, void* const) +native function SetupIntro(float fTotalIntroTime, float fIntroOffset); + +defaultproperties +{ + m_fSpawnIntroScaleRate=1.0000000 + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByDirection.uc b/exported/TgGame/Classes/TgAnimBlendByDirection.uc new file mode 100755 index 00000000..c540a628 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByDirection.uc @@ -0,0 +1,46 @@ +class TgAnimBlendByDirection extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EBlendDirTypes +{ + FBDir_Forward, // 0 + FBDir_Back, // 1 + FBDir_Left, // 2 + FBDir_Right, // 3 + FBDir_ForwardRight, // 4 + FBDir_ForwardLeft, // 5 + FBDir_BackRight, // 6 + FBDir_BackLeft, // 7 + FBDir_Standing, // 8 + FBDir_None, // 9 + FBDir_MAX // 10 +}; + +enum EBlendByDirectionSpeedType +{ + EBBDST_Velocity, // 0 + EBBDST_Accel, // 1 + EBBDST_MAX // 2 +}; + +var TgPawn m_TgPawn; +var(Animations) TgAnimBlendByDirection.EBlendByDirectionSpeedType m_SpeedType; +var const TgAnimBlendByDirection.EBlendDirTypes LastDirection; +var(Animations) bool bAdjustRateByVelocity; +var() bool bNoDirectionIsEnabled; +var() bool bResetLooping; +var() bool m_bDelayBlendOutToPlayAnim; +var bool m_bIsAllowedToBlendOut; +var() bool m_bMirrorDirectionsWhenPawnMirrored; +var() bool m_bStopChildrenOnCeaseRelevant; + +defaultproperties +{ + LastDirection=EBlendDirTypes.FBDir_None + bNoDirectionIsEnabled=true + bResetLooping=true + m_bIsAllowedToBlendOut=true + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByEmote.uc b/exported/TgGame/Classes/TgAnimBlendByEmote.uc new file mode 100755 index 00000000..3c286405 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByEmote.uc @@ -0,0 +1,29 @@ +class TgAnimBlendByEmote extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var name nmEmotePrefix; +var name mnEmoteMovingSuffix; +var name nmEmoteFullMovingSuffix; +var() bool bForceTreatAsMovingEmoteNode; +var array EmoteSequenceChildren; +var array PerBoneChildren; +var array FullMovingBlendLists; + +// Export UTgAnimBlendByEmote::execPlayEmote(FFrame&, void* const) +native function float PlayEmote(TgPawn.EEmote Emote); + +// Export UTgAnimBlendByEmote::execCancelEmote(FFrame&, void* const) +native function CancelEmote(optional bool bNoBlend); + +// Export UTgAnimBlendByEmote::execIsFullBody(FFrame&, void* const) +native function bool IsFullBody(); + +defaultproperties +{ + nmEmotePrefix="EMOTE_" + mnEmoteMovingSuffix="_Moving" + nmEmoteFullMovingSuffix="_FullMoving" + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByFall.uc b/exported/TgGame/Classes/TgAnimBlendByFall.uc new file mode 100755 index 00000000..0ba1c8b1 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByFall.uc @@ -0,0 +1,51 @@ +class TgAnimBlendByFall extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object,TgAnimNodeBlendList); + +enum EBlendFallTypes +{ + FBT_Up, // 0 + FBT_UpLoop, // 1 + FBT_Down, // 2 + FBT_PreLand, // 3 + FBT_Land, // 4 + FBT_AirJump, // 5 + FBT_None, // 6 + FBT_MAX // 7 +}; + +enum EFallSource +{ + FALLSOURCE_FullJump, // 0 + FALLSOURCE_ShortJump, // 1 + FALLSOURCE_AnyJump, // 2 + FALLSOURCE_Falling, // 3 + FALLSOURCE_All, // 4 + FALLSOURCE_MAX // 5 +}; + +var() TgAnimBlendByFall.EFallSource m_FallSource; +var const TgAnimBlendByFall.EBlendFallTypes FallState; +var Actor.EPhysics m_PreviousTickPhysics; +var const float LastFallingVelocity; +var TgPawn pOwner; +var() float m_fPrelandDistance; +var(Debug) bool m_bDebugMeasureJumpUp; +var(Debug) bool m_bDebugMeasureJumpDownToLand; +var bool m_bMeasuring; +var() bool m_bJumpOnly; +var Vector m_StartMeasureJump; +var float m_fMeasureTime; +var(Landing) float m_fLandingMovementPlayRate; +var(Landing) name m_nmNameLandingSynchGroup; + +defaultproperties +{ + m_FallSource=EFallSource.FALLSOURCE_All + FallState=EBlendFallTypes.FBT_None + m_fLandingMovementPlayRate=2.0000000 + m_nmNameLandingSynchGroup="LandingSynch" + PlayActiveChildExceptionList=/* Array type was not detected. */ + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByFire.uc b/exported/TgGame/Classes/TgAnimBlendByFire.uc new file mode 100755 index 00000000..bece6cd0 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByFire.uc @@ -0,0 +1,55 @@ +class TgAnimBlendByFire extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native DeviceParameters +{ + var string SlotName; + var() bool bShouldInterruptIfStopped; + var() bool bShouldInterruptIfInterrupted; + var() bool bShouldInterruptIfJumping; + + structdefaultproperties + { + SlotName="" + bShouldInterruptIfStopped=false + bShouldInterruptIfInterrupted=true + bShouldInterruptIfJumping=true + } +}; + +var(Device) bool m_bSetToIdleOnCeaseRelevant; +var(Device) bool m_bShouldReplayIfAlreadyActive; +var(Device) DeviceParameters m_InHandDeviceParameters; +var(Device) DeviceParameters m_OffHand1DeviceParameters; +var(Device) DeviceParameters m_OffHand2DeviceParameters; +var(Device) DeviceParameters m_OffHand3DeviceParameters; +var(Device) DeviceParameters m_OffHand4DeviceParameters; +var(Device) DeviceParameters m_RecallDeviceParameters; +var TgPawn m_OwningPawn; + +// Export UTgAnimBlendByFire::execOnDeviceFormBuildup(FFrame&, void* const) +native function OnDeviceFormBuildup(TgDeviceForm DeviceForm, float BuildupTime); + +// Export UTgAnimBlendByFire::execOnDeviceFormStartFire(FFrame&, void* const) +native function OnDeviceFormStartFire(TgDeviceForm DeviceForm, float FireDuration); + +// Export UTgAnimBlendByFire::execOnDeviceFormStopFire(FFrame&, void* const) +native function OnDeviceFormStopFire(TgDeviceForm DeviceForm); + +// Export UTgAnimBlendByFire::execOnDeviceFormInterruptFire(FFrame&, void* const) +native function OnDeviceFormInterruptFire(TgDeviceForm DeviceForm); + +defaultproperties +{ + m_bShouldReplayIfAlreadyActive=true + m_InHandDeviceParameters=(SlotName="In-hand",bShouldInterruptIfStopped=false,bShouldInterruptIfInterrupted=true,bShouldInterruptIfJumping=true) + m_OffHand1DeviceParameters=(SlotName="Offhand 1",bShouldInterruptIfStopped=false,bShouldInterruptIfInterrupted=true,bShouldInterruptIfJumping=true) + m_OffHand2DeviceParameters=(SlotName="Offhand 2",bShouldInterruptIfStopped=false,bShouldInterruptIfInterrupted=true,bShouldInterruptIfJumping=true) + m_OffHand3DeviceParameters=(SlotName="Offhand 3",bShouldInterruptIfStopped=false,bShouldInterruptIfInterrupted=true,bShouldInterruptIfJumping=true) + m_OffHand4DeviceParameters=(SlotName="Offhand 4",bShouldInterruptIfStopped=false,bShouldInterruptIfInterrupted=true,bShouldInterruptIfJumping=true) + m_RecallDeviceParameters=(SlotName="Recall",bShouldInterruptIfStopped=false,bShouldInterruptIfInterrupted=true,bShouldInterruptIfJumping=true) + DefaultBlendTime=0.2000000 + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByFireMode.uc b/exported/TgGame/Classes/TgAnimBlendByFireMode.uc new file mode 100755 index 00000000..134f1523 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByFireMode.uc @@ -0,0 +1,44 @@ +class TgAnimBlendByFireMode extends TgAnimNodeBlendList + hidecategories(Object,Object,Object,Object); + +var() int m_nDefaultFireMode; +var() TgObject.TG_EQUIP_POINT m_EquipPoint; + +simulated function SelectFireMode(int FireMode) +{ + // End:0xA7 + if((FireMode >= 0) && FireMode < Children.Length) + { + // End:0x7E + if((FireMode != (m_nDefaultFireMode - 1)) && Children[FireMode].Anim == none) + { + SetDefaultFiremode(); + } + else + { + SetActiveChild(FireMode, GetBlendTime(FireMode)); + } + } + else + { + SetDefaultFiremode(); + } + //return; +} + +simulated function SetDefaultFiremode() +{ + // End:0x4F + if((m_nDefaultFireMode >= 0) && m_nDefaultFireMode < Children.Length) + { + SetActiveChild(m_nDefaultFireMode, GetBlendTime(m_nDefaultFireMode)); + } + //return; +} + +defaultproperties +{ + m_nDefaultFireMode=1 + DefaultBlendTime=0.1000000 + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByFlying.uc b/exported/TgGame/Classes/TgAnimBlendByFlying.uc new file mode 100755 index 00000000..4d9df1ed --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByFlying.uc @@ -0,0 +1,35 @@ +class TgAnimBlendByFlying extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EFlyDirTypes +{ + FDir_Forward, // 0 + FDir_Back, // 1 + FDir_Left, // 2 + FDir_Right, // 3 + FDir_Up, // 4 + FDir_Down, // 5 + FDir_UpMidair, // 6 + FDir_None, // 7 + FDir_MAX // 8 +}; + +var(Animations) bool bAdjustRateByVelocity; +var(Animations) bool m_bAdjustRateByAcceleration; +var(Animations) editoronly transient bool m_bPreviewJetpackPerBoneBlend; +var bool m_bIsUsingHandsFreeJetpack; +var(Animations) float m_fUpLoopStartTime; +var const TgAnimBlendByFlying.EFlyDirTypes LastDirection; +var(Animations) name m_nmHandsFreeJetpackPerBoneBlendNodeName; +var AnimNodeBlendPerBone m_HandsFreeJetpackPerBoneBlendNode; +var(Animations) float m_fHandsFreeJetpackBlendBias; +var(Animations) name m_nmHandsFreeJetpackBiasBlendNodeName; +var AnimNodeBlend m_HandsFreeJetpackBiasBlendNode; +var TgPawn m_TgPawn; + +defaultproperties +{ + LastDirection=EFlyDirTypes.FDir_None + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByHeadSkin.uc b/exported/TgGame/Classes/TgAnimBlendByHeadSkin.uc new file mode 100755 index 00000000..006ad518 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByHeadSkin.uc @@ -0,0 +1,17 @@ +class TgAnimBlendByHeadSkin extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native HeadSkinChildInfo +{ + var() int nHeadSkinId; + var() int nChildIndex; + + structdefaultproperties + { + nHeadSkinId=0 + nChildIndex=0 + } +}; + +var() array m_SkinMap; diff --git a/exported/TgGame/Classes/TgAnimBlendByMountSkin.uc b/exported/TgGame/Classes/TgAnimBlendByMountSkin.uc new file mode 100755 index 00000000..da9a8854 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByMountSkin.uc @@ -0,0 +1,17 @@ +class TgAnimBlendByMountSkin extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native MountSkinChildInfo +{ + var() int nMountSkinId; + var() int nChildIndex; + + structdefaultproperties + { + nMountSkinId=0 + nChildIndex=0 + } +}; + +var() array m_SkinMap; diff --git a/exported/TgGame/Classes/TgAnimBlendByNodeName.uc b/exported/TgGame/Classes/TgAnimBlendByNodeName.uc new file mode 100755 index 00000000..bd1556e5 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByNodeName.uc @@ -0,0 +1,38 @@ +class TgAnimBlendByNodeName extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native RelevantNodeNameNodes +{ + var AnimNode CachedNode; + var int ChildIndex; + + structdefaultproperties + { + CachedNode=none + ChildIndex=0 + } +}; + +struct native NodeNameToChildIndex +{ + var() name NodeName; + var() int ChildIndex; + + structdefaultproperties + { + NodeName="None" + ChildIndex=0 + } +}; + +var() array m_NodeNameToChildIndex; +var transient array m_CachedNodes; +var transient AnimNode m_LastSuccessfulAnimNode; +var transient bool m_bHasCachedNodes; + +defaultproperties +{ + DefaultBlendTime=0.1500000 + bPlayActiveChild=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter.uc b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter.uc new file mode 100755 index 00000000..f5b845d5 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter.uc @@ -0,0 +1,162 @@ +class TgAnimBlendByPaladinsCharacter extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EPalCharParams +{ + PCP_FireInhand, // 0 + PCP_FireAlt, // 1 + PCP_FireAbility, // 2 + PCP_FireMovement, // 3 + PCP_FireUlt, // 4 + PCP_Reload, // 5 + PCP_Retrieve, // 6 + PCP_Emote, // 7 + PCP_FireSupportingDevice, // 8 + PCP_PutAway, // 9 + PCP_CharacterSpecific1, // 10 + PCP_CharacterSpecific2, // 11 + PCP_CharacterSpecific3, // 12 + PCP_CharacterSpecific4, // 13 + PCP_CharacterSpecific5, // 14 + PCP_Intro, // 15 + PCP_Outro, // 16 + PCP_MAX // 17 +}; + +struct native ChildAnimParameters +{ + var() const editconst string SlotName; + var() const editconst TgObject.TG_EQUIP_POINT EquipSlot; + var() const editconst int ChildIndex; + var() bool bBlendInOnTargeting; + var() bool bBlendInOnBuildup; + var() bool bBlendInOnStartFire; + var() bool bBlendInOnFire; + var() bool bBlendOutIfStopped; + var() bool bBlendOutOnAnimEnd; + var() bool bBlendOutOnChildNotification; + var() bool bEndCurrentAnimIfNoChild; + var() bool bAddToStackIfOtherAnimInterrupted; + var() bool bAddToStackOnCeaseRelevant; + var() bool bIgnoreSwapLogicIfNotRelevant; + var() bool bReplayIfActivatedFromStack; + var() bool bReplayIfActive; + var() bool bAutoScaleByDuration; + var() float fAutoScaledPlayRateMultiplier; + var() bool bInterruptOtherAnims; + var() array nInterruptExceptionsByChildIndex; + var() int nCustomRetrieveIndex; + + structdefaultproperties + { + SlotName="" + EquipSlot=TG_EQUIP_POINT.EQP_NONE + ChildIndex=0 + bBlendInOnTargeting=false + bBlendInOnBuildup=false + bBlendInOnStartFire=true + bBlendInOnFire=false + bBlendOutIfStopped=false + bBlendOutOnAnimEnd=true + bBlendOutOnChildNotification=true + bEndCurrentAnimIfNoChild=false + bAddToStackIfOtherAnimInterrupted=false + bAddToStackOnCeaseRelevant=false + bIgnoreSwapLogicIfNotRelevant=false + bReplayIfActivatedFromStack=false + bReplayIfActive=true + bAutoScaleByDuration=false + fAutoScaledPlayRateMultiplier=1.0000000 + bInterruptOtherAnims=true + nInterruptExceptionsByChildIndex=none + nCustomRetrieveIndex=-1 + } +}; + +var TgWeaponMeshActor m_WeaponMeshActor; +var(PaladinChar) TgObject.TG_EQUIP_POINT m_SubNodeEquipSlot; +var(PaladinChar) ChildAnimParameters m_ChildParams[EPalCharParams]; +var array m_nChildAnimStack; +var int m_nCustomRetrieveIndex; +var(PaladinChar) bool m_bBlendToIdleOnInterruptInspect; + +// Export UTgAnimBlendByPaladinsCharacter::execOnDeviceTargeting(FFrame&, void* const) +native function OnDeviceTargeting(TgObject.TG_EQUIP_POINT eqp); + +// Export UTgAnimBlendByPaladinsCharacter::execOnDeviceBuildup(FFrame&, void* const) +native function OnDeviceBuildup(TgObject.TG_EQUIP_POINT eqp); + +// Export UTgAnimBlendByPaladinsCharacter::execOnDeviceStartFire(FFrame&, void* const) +native function OnDeviceStartFire(TgObject.TG_EQUIP_POINT eqp, float fRefireRate); + +// Export UTgAnimBlendByPaladinsCharacter::execOnDeviceFire(FFrame&, void* const) +native function OnDeviceFire(TgObject.TG_EQUIP_POINT eqp, float fRefireRate); + +// Export UTgAnimBlendByPaladinsCharacter::execOnDeviceStopFire(FFrame&, void* const) +native function OnDeviceStopFire(TgObject.TG_EQUIP_POINT eqp); + +// Export UTgAnimBlendByPaladinsCharacter::execOnReload(FFrame&, void* const) +native function OnReload(float fReloadTime); + +// Export UTgAnimBlendByPaladinsCharacter::execOnFlourish(FFrame&, void* const) +native function OnFlourish(); + +// Export UTgAnimBlendByPaladinsCharacter::execOnRetrieve(FFrame&, void* const) +native function OnRetrieve(); + +// Export UTgAnimBlendByPaladinsCharacter::execOnPutAway(FFrame&, void* const) +native function OnPutAway(byte EquipPoint, int DeviceID, Class WeaponClass); + +// Export UTgAnimBlendByPaladinsCharacter::execInterruptReload(FFrame&, void* const) +native function InterruptReload(); + +// Export UTgAnimBlendByPaladinsCharacter::execForceInterruptFlourish(FFrame&, void* const) +native function ForceInterruptFlourish(); + +// Export UTgAnimBlendByPaladinsCharacter::execPlayTopOfStackAnim(FFrame&, void* const) +native function PlayTopOfStackAnim(); + +// Export UTgAnimBlendByPaladinsCharacter::execUpdateAnimViaStackRemoval(FFrame&, void* const) +native function UpdateAnimViaStackRemoval(TgAnimBlendByPaladinsCharacter.EPalCharParams toRemove); + +// Export UTgAnimBlendByPaladinsCharacter::execGetParamIndexFromEqpSlot(FFrame&, void* const) +native function TgAnimBlendByPaladinsCharacter.EPalCharParams GetParamIndexFromEqpSlot(TgObject.TG_EQUIP_POINT eqp); + +// Export UTgAnimBlendByPaladinsCharacter::execGetParamIndexFromChildIndex(FFrame&, void* const) +native function TgAnimBlendByPaladinsCharacter.EPalCharParams GetParamIndexFromChildIndex(int Index); + +// Export UTgAnimBlendByPaladinsCharacter::execSetActiveChild(FFrame&, void* const) +native function SetActiveChild(int ChildIndex, float BlendTime); + +// Export UTgAnimBlendByPaladinsCharacter::execPlayAnim(FFrame&, void* const) +native function PlayAnim(optional bool bLoop = false, optional float InRate = 1.0000000, optional float StartTime = 0.0000000); + +// Export UTgAnimBlendByPaladinsCharacter::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); + +defaultproperties +{ + m_ChildParams[0]=(SlotName="Fire Inhand",EquipSlot=TG_EQUIP_POINT.EQP_AUTO,ChildIndex=1,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=true,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[1]=(SlotName="Fire Alt",EquipSlot=TG_EQUIP_POINT.EQP_ALT_FIRE,ChildIndex=2,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[2]=(SlotName="Fire Ability",EquipSlot=TG_EQUIP_POINT.EQP_OFFHAND_2,ChildIndex=3,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[3]=(SlotName="Fire Movement",EquipSlot=TG_EQUIP_POINT.EQP_OFFHAND_3,ChildIndex=4,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[4]=(SlotName="Fire Ult",EquipSlot=TG_EQUIP_POINT.EQP_OFFHAND_1,ChildIndex=5,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[5]=(SlotName="Reload",EquipSlot=TG_EQUIP_POINT.EQP_AUTO,ChildIndex=6,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[6]=(SlotName="Retrieve",EquipSlot=TG_EQUIP_POINT.EQP_AUTO,ChildIndex=7,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[7]=(SlotName="Emote",EquipSlot=TG_EQUIP_POINT.EQP_EMOTE,ChildIndex=8,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[8]=(SlotName="Fire Supporting Device",EquipSlot=TG_EQUIP_POINT.EQP_SUPPORT,ChildIndex=9,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[9]=(SlotName="Put Away",EquipSlot=TG_EQUIP_POINT.EQP_AUTO,ChildIndex=10,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[10]=(SlotName="Unused 1",EquipSlot=TG_EQUIP_POINT.EQP_AUTO,ChildIndex=11,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[11]=(SlotName="Unused 2",EquipSlot=TG_EQUIP_POINT.EQP_AUTO,ChildIndex=12,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[12]=(SlotName="Unused 3",EquipSlot=TG_EQUIP_POINT.EQP_AUTO,ChildIndex=13,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[13]=(SlotName="Unused 4",EquipSlot=TG_EQUIP_POINT.EQP_AUTO,ChildIndex=14,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[14]=(SlotName="Unused 5",EquipSlot=TG_EQUIP_POINT.EQP_AUTO,ChildIndex=15,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[15]=(SlotName="Intro",EquipSlot=TG_EQUIP_POINT.EQP_AUTO,ChildIndex=16,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_ChildParams[16]=(SlotName="Outro",EquipSlot=TG_EQUIP_POINT.EQP_AUTO,ChildIndex=17,bBlendInOnTargeting=false,bBlendInOnBuildup=false,bBlendInOnStartFire=true,bBlendInOnFire=false,bBlendOutIfStopped=false,bBlendOutOnAnimEnd=true,bBlendOutOnChildNotification=true,bEndCurrentAnimIfNoChild=false,bAddToStackIfOtherAnimInterrupted=false,bAddToStackOnCeaseRelevant=false,bIgnoreSwapLogicIfNotRelevant=false,bReplayIfActivatedFromStack=false,bReplayIfActive=true,bAutoScaleByDuration=false,fAutoScaledPlayRateMultiplier=1.0000000,bInterruptOtherAnims=true,nInterruptExceptionsByChildIndex=none,nCustomRetrieveIndex=-1) + m_nCustomRetrieveIndex=-1 + DefaultBlendTime=0.1500000 + bPlayActiveChild=true + PlayActiveChildExceptionList=/* Array type was not detected. */ + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_BarrierTank.uc b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_BarrierTank.uc new file mode 100755 index 00000000..9c3fd4ff --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_BarrierTank.uc @@ -0,0 +1,19 @@ +class TgAnimBlendByPaladinsCharacter_BarrierTank extends TgAnimBlendByPaladinsCharacter + native(Anim) + hidecategories(Object,Object,Object,Object); + +var(BarrierTank) array m_AmmoSkelControlNames; +var array m_AmmoSkelControls; +var TgPawn_BarrierTank m_CachedBarrierTankPawn; + +// Export UTgAnimBlendByPaladinsCharacter_BarrierTank::execUpdateAmmoSkelControls(FFrame&, void* const) +native function UpdateAmmoSkelControls(); + +// Export UTgAnimBlendByPaladinsCharacter_BarrierTank::execSetActiveChild(FFrame&, void* const) +native function SetActiveChild(int ChildIndex, float BlendTime); + +// Export UTgAnimBlendByPaladinsCharacter_BarrierTank::execHasCachedBarrierTankPawn(FFrame&, void* const) +native function bool HasCachedBarrierTankPawn(); + +// Export UTgAnimBlendByPaladinsCharacter_BarrierTank::execOnRetrieve(FFrame&, void* const) +native function OnRetrieve(); diff --git a/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_BombKing.uc b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_BombKing.uc new file mode 100755 index 00000000..2d7e45b0 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_BombKing.uc @@ -0,0 +1,12 @@ +class TgAnimBlendByPaladinsCharacter_BombKing extends TgAnimBlendByPaladinsCharacter + native(Anim) + hidecategories(Object,Object,Object,Object); + +// Export UTgAnimBlendByPaladinsCharacter_BombKing::execOnDeviceStartFire(FFrame&, void* const) +native function OnDeviceStartFire(TgObject.TG_EQUIP_POINT eqp, float fRefireRate); + +defaultproperties +{ + m_ChildParams[10]=(SlotName="Ability Retrieve") + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Darklord.uc b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Darklord.uc new file mode 100755 index 00000000..a42fbe13 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Darklord.uc @@ -0,0 +1,25 @@ +class TgAnimBlendByPaladinsCharacter_Darklord extends TgAnimBlendByPaladinsCharacter + native(ChampDarklord) + hidecategories(Object,Object,Object,Object); + +var TgPawn_Darklord m_CachedDarklordPawn; +var bool m_bTriggerUltKilledTargetRetrieve; +var const float m_fCounterAnimDelay; +var float m_fCounterAnimTimeStamp; +var int m_nCounterAnimIndex; + +// Export UTgAnimBlendByPaladinsCharacter_Darklord::execPlayCounterAttackAnim(FFrame&, void* const) +native function PlayCounterAttackAnim(bool bPlayCounterToIdleAnim); + +// Export UTgAnimBlendByPaladinsCharacter_Darklord::execOnRetrieve(FFrame&, void* const) +native function OnRetrieve(); + +defaultproperties +{ + m_fCounterAnimDelay=0.6000000 + m_ChildParams[10]=(SlotName="Counter To Counter Idle 1",EquipSlot=TG_EQUIP_POINT.EQP_SUPPORT) + m_ChildParams[11]=(SlotName="Counter To Counter Idle 2",EquipSlot=TG_EQUIP_POINT.EQP_SUPPORT) + m_ChildParams[12]=(SlotName="Counter To Counter Idle 3",EquipSlot=TG_EQUIP_POINT.EQP_SUPPORT) + m_ChildParams[13]=(SlotName="Ult Final Hit Retrieve") + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Drogoz.uc b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Drogoz.uc new file mode 100755 index 00000000..0e85a317 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Drogoz.uc @@ -0,0 +1,19 @@ +class TgAnimBlendByPaladinsCharacter_Drogoz extends TgAnimBlendByPaladinsCharacter + native(Anim) + hidecategories(Object,Object,Object,Object); + +var(Drogoz) array m_AmmoSkelControlNames; +var array m_AmmoSkelControls; +var TgPawn_Drogoz m_CachedDrogozPawn; + +// Export UTgAnimBlendByPaladinsCharacter_Drogoz::execUpdateAmmoSkelControls(FFrame&, void* const) +native function UpdateAmmoSkelControls(); + +// Export UTgAnimBlendByPaladinsCharacter_Drogoz::execSetActiveChild(FFrame&, void* const) +native function SetActiveChild(int ChildIndex, float BlendTime); + +// Export UTgAnimBlendByPaladinsCharacter_Drogoz::execHasCachedDrogozPawn(FFrame&, void* const) +native function bool HasCachedDrogozPawn(); + +// Export UTgAnimBlendByPaladinsCharacter_Drogoz::execOnRetrieve(FFrame&, void* const) +native function OnRetrieve(); diff --git a/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Flak.uc b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Flak.uc new file mode 100755 index 00000000..dd0000d6 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Flak.uc @@ -0,0 +1,17 @@ +class TgAnimBlendByPaladinsCharacter_Flak extends TgAnimBlendByPaladinsCharacter + native(Anim) + hidecategories(Object,Object,Object,Object); + +var TgPawn_Flak m_CachedFlakPawn; + +// Export UTgAnimBlendByPaladinsCharacter_Flak::execOnRetrieve(FFrame&, void* const) +native function OnRetrieve(); + +// Export UTgAnimBlendByPaladinsCharacter_Flak::execHasCachedFlakPawn(FFrame&, void* const) +native function bool HasCachedFlakPawn(); + +defaultproperties +{ + m_ChildParams[10]=(SlotName="Shoulder Bash Hit Retrieve") + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Lex.uc b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Lex.uc new file mode 100755 index 00000000..d5c8d63d --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Lex.uc @@ -0,0 +1,15 @@ +class TgAnimBlendByPaladinsCharacter_Lex extends TgAnimBlendByPaladinsCharacter + native(AnimNodesLex) + hidecategories(Object,Object,Object,Object); + +var TgPawn_Lex m_CachedLex; +var(Lex) name m_LeftSlideSkelControlName; +var(Lex) name m_RightSlideSkelControlName; +var SkelControlBase m_LeftSlideSkelControl; +var SkelControlBase m_RightSlideSkelControl; + +// Export UTgAnimBlendByPaladinsCharacter_Lex::execUpdateSlideSkelControls(FFrame&, void* const) +native function UpdateSlideSkelControls(); + +// Export UTgAnimBlendByPaladinsCharacter_Lex::execSetActiveChild(FFrame&, void* const) +native function SetActiveChild(int ChildIndex, float BlendTime); diff --git a/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Owl.uc b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Owl.uc new file mode 100755 index 00000000..0fc66674 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByPaladinsCharacter_Owl.uc @@ -0,0 +1,12 @@ +class TgAnimBlendByPaladinsCharacter_Owl extends TgAnimBlendByPaladinsCharacter + native(Anim) + hidecategories(Object,Object,Object,Object); + +// Export UTgAnimBlendByPaladinsCharacter_Owl::execGetParamIndexFromEqpSlot(FFrame&, void* const) +native function TgAnimBlendByPaladinsCharacter.EPalCharParams GetParamIndexFromEqpSlot(TgObject.TG_EQUIP_POINT eqp); + +defaultproperties +{ + m_ChildParams[10]=(SlotName="Fire Flare",EquipSlot=TG_EQUIP_POINT.EQP_SUPPORT_2) + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByPercent.uc b/exported/TgGame/Classes/TgAnimBlendByPercent.uc new file mode 100755 index 00000000..fd2b363d --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByPercent.uc @@ -0,0 +1,29 @@ +class TgAnimBlendByPercent extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native BlendByPercentValues +{ + var() float fPercent; + + structdefaultproperties + { + fPercent=0.0000000 + } +}; + +var float m_fCurrentPercent; +var(NodeSettings) array m_ChildParams; + +// Export UTgAnimBlendByPercent::execUpdatePercent(FFrame&, void* const) +native function UpdatePercent(float fPercent); + +// Export UTgAnimBlendByPercent::execSetActiveChild(FFrame&, void* const) +native function SetActiveChild(int ChildIndex, float BlendTime); + +defaultproperties +{ + m_ChildParams[0]=(fPercent=0.0000000) + m_ChildParams[1]=(fPercent=1.0000000) + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByPhase.uc b/exported/TgGame/Classes/TgAnimBlendByPhase.uc new file mode 100755 index 00000000..2c69d25c --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByPhase.uc @@ -0,0 +1,41 @@ +class TgAnimBlendByPhase extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native m_PhaseTransitionAnimSet +{ + var() int m_TransitionToPhase; + var() name m_TransitionAnimName; + + structdefaultproperties + { + m_TransitionToPhase=0 + m_TransitionAnimName="None" + } +}; + +struct native m_PhaseProfile +{ + var() int m_Phase; + var() array m_TransitionAnimSets; + + structdefaultproperties + { + m_Phase=0 + m_TransitionAnimSets=none + } +}; + +var TgPawn m_TgPawn; +var int m_LastPhase; +var int m_CurrentPhase; +var() bool m_bEnableTransitionAnims; +var() array m_PhaseProfiles; + +defaultproperties +{ + m_bEnableTransitionAnims=true + DefaultBlendTime=0.2000000 + ActiveChildIndex=1 + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByPhysics.uc b/exported/TgGame/Classes/TgAnimBlendByPhysics.uc new file mode 100755 index 00000000..09d2f7d8 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByPhysics.uc @@ -0,0 +1,24 @@ +class TgAnimBlendByPhysics extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var(Animations) int PhysicsMap[14]; +var int LastPhysics; + +defaultproperties +{ + PhysicsMap[0]=-1 + PhysicsMap[2]=1 + PhysicsMap[3]=-1 + PhysicsMap[4]=2 + PhysicsMap[5]=-1 + PhysicsMap[6]=-1 + PhysicsMap[7]=-1 + PhysicsMap[8]=-1 + PhysicsMap[9]=-1 + PhysicsMap[10]=-1 + PhysicsMap[11]=3 + PhysicsMap[12]=-1 + PhysicsMap[13]=-1 + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByPosture.uc b/exported/TgGame/Classes/TgAnimBlendByPosture.uc new file mode 100755 index 00000000..c58a4d42 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByPosture.uc @@ -0,0 +1,69 @@ +class TgAnimBlendByPosture extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native m_TransitionAnimSet +{ + var() TgPawn.TG_POSTURE m_TransitionToPosture; + var() name m_TransitionAnimName; + + structdefaultproperties + { + m_TransitionToPosture=TG_POSTURE.TG_POSTURE_DEFAULT + m_TransitionAnimName="None" + } +}; + +struct native m_PostureProfile +{ + var() TgPawn.TG_POSTURE m_Posture; + var() array m_TransitionAnimSets; + var() CameraAnim m_CameraAnim; + var() float m_fCameraAnimBlendInTime; + var() float m_fCameraAnimBlendOutTime; + var() bool m_bCameraAnimBlendInOnTransitionIn; + var() bool m_bCameraAnimBlendOutAfterTransitionOut; + var CameraAnimInst m_CameraAnimInst; + var bool m_bPlayingCameraAnim; + var() bool m_bResetBlendByFireToIdleOnTransition; + + structdefaultproperties + { + m_Posture=TG_POSTURE.TG_POSTURE_DEFAULT + m_TransitionAnimSets=none + m_CameraAnim=none + m_fCameraAnimBlendInTime=0.1000000 + m_fCameraAnimBlendOutTime=0.1000000 + m_bCameraAnimBlendInOnTransitionIn=true + m_bCameraAnimBlendOutAfterTransitionOut=false + m_CameraAnimInst=none + m_bPlayingCameraAnim=false + m_bResetBlendByFireToIdleOnTransition=false + } +}; + +var TgPawn m_TgPawn; +var TgSkeletalMeshActor_Posture m_TgPostureMesh; +var TgPawn.TG_POSTURE m_LastPosture; +var TgPawn.TG_POSTURE m_CurrentPosture; +var TgPawn.TG_POSTURE m_TransitionFromPosture; +var() bool m_bEnableTransitionAnims; +var() bool m_bCheckLowerPriorityPostures; +var int m_CurrentPostureChildIndex; +var() array m_PostureProfiles; +var transient AnimNodeSequence m_TransitionAnimNodeSeq; + +// Export UTgAnimBlendByPosture::execForcePostureChange(FFrame&, void* const) +native function bool ForcePostureChange(optional bool bAllowTransitionAnims = true); + +// Export UTgAnimBlendByPosture::execForceAllCameraAnimsEnd(FFrame&, void* const) +native function ForceAllCameraAnimsEnd(); + +defaultproperties +{ + m_LastPosture=TG_POSTURE.TG_POSTURE_NONE + m_bCheckLowerPriorityPostures=true + DefaultBlendTime=0.2000000 + ActiveChildIndex=1 + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByPosture_Player.uc b/exported/TgGame/Classes/TgAnimBlendByPosture_Player.uc new file mode 100755 index 00000000..98cfbad9 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByPosture_Player.uc @@ -0,0 +1,9 @@ +class TgAnimBlendByPosture_Player extends AnimNodeSequence + native(Anim) + hidecategories(Object,Object,Object); + +defaultproperties +{ + bCauseActorAnimPlay=true + NodeName="Posture_Transition" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByProgressiveReload.uc b/exported/TgGame/Classes/TgAnimBlendByProgressiveReload.uc new file mode 100755 index 00000000..fac56a40 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByProgressiveReload.uc @@ -0,0 +1,35 @@ +class TgAnimBlendByProgressiveReload extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +function SetReloadType(int ReloadType) +{ + switch(ReloadType) + { + // End:0x30 + case 0: + SetActiveChild(0, GetBlendTime(0)); + // End:0x70 + break; + // End:0x4D + case 1: + SetActiveChild(1, GetBlendTime(1)); + // End:0x70 + break; + // End:0x6D + case 2: + SetActiveChild(2, GetBlendTime(2)); + // End:0x70 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +defaultproperties +{ + DefaultBlendTime=0.1000000 + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByRecoilTime.uc b/exported/TgGame/Classes/TgAnimBlendByRecoilTime.uc new file mode 100755 index 00000000..31448e6f --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByRecoilTime.uc @@ -0,0 +1,15 @@ +class TgAnimBlendByRecoilTime extends AnimNodeBlend + native(Anim) + hidecategories(Object,Object,Object,Object); + +var TgDeviceForm m_TgDeviceForm; +var TgPawn m_TgPawn; +var float m_PctBlend; +var() float m_fBlendTime; +var() float m_fMaxRecoilTime; + +defaultproperties +{ + m_fBlendTime=0.2000000 + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendBySkin.uc b/exported/TgGame/Classes/TgAnimBlendBySkin.uc new file mode 100755 index 00000000..4bb7607a --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendBySkin.uc @@ -0,0 +1,17 @@ +class TgAnimBlendBySkin extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native SkinChildInfo +{ + var() int nSkinId; + var() int nChildIndex; + + structdefaultproperties + { + nSkinId=0 + nChildIndex=0 + } +}; + +var() array m_SkinMap; diff --git a/exported/TgGame/Classes/TgAnimBlendBySpeed.uc b/exported/TgGame/Classes/TgAnimBlendBySpeed.uc new file mode 100755 index 00000000..b3336298 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendBySpeed.uc @@ -0,0 +1,81 @@ +class TgAnimBlendBySpeed extends AnimNodeBlendBySpeed + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum ESpeedType +{ + EST_Velocity, // 0 + EST_AccelAndMaxSpeed, // 1 + EST_MAX // 2 +}; + +struct native ResetSynchGroup +{ + var() name AnimNodeSynchName; + var AnimNodeSynch SynchNode; + var() name GroupName; + var() array ResetChannels; + + structdefaultproperties + { + AnimNodeSynchName="None" + SynchNode=none + GroupName="None" + ResetChannels=none + } +}; + +var TgPawn m_TgPawn; +var() TgAnimBlendBySpeed.ESpeedType m_SpeedType; +var() array ResetSynchGroups; +var() bool m_bIgnoreRootMotion; +var() bool m_bIgnoreZVelocity; +var() bool m_bNotifyOwnerOnChildChange; +var(ClassOverrides) bool m_bEnableClassOverrides; +var() array m_WalkChildren; +var() array m_SprintChildren; +var() array m_BaseSpeed; +var() array m_IgnoredPhysics; +var(ClassOverrides) int m_nIndexToOverride; +var(ClassOverrides) float m_fBaseSpeedRecon; +var(ClassOverrides) float m_fBaseSpeedRobotics; +var(ClassOverrides) float m_fBaseSpeedAssault; +var(ClassOverrides) float m_fBaseSpeedMedic; +var(ClassOverrides) float m_fBaseSpeedReconFemale; +var(ClassOverrides) float m_fBaseSpeedRoboticsFemale; +var(ClassOverrides) float m_fBaseSpeedAssaultFemale; +var(ClassOverrides) float m_fBaseSpeedMedicFemale; +var(ClassOverrides) float m_fBaseSpeedReconCity; +var(ClassOverrides) float m_fBaseSpeedRoboticsCity; +var(ClassOverrides) float m_fBaseSpeedAssaultCity; +var(ClassOverrides) float m_fBaseSpeedMedicCity; +var(ClassOverrides) float m_fBaseSpeedReconFemaleCity; +var(ClassOverrides) float m_fBaseSpeedRoboticsFemaleCity; +var(ClassOverrides) float m_fBaseSpeedAssaultFemaleCity; +var(ClassOverrides) float m_fBaseSpeedMedicFemaleCity; + +// Export UTgAnimBlendBySpeed::execFindSynchAnimNode(FFrame&, void* const) +native function AnimNodeSynch FindSynchAnimNode(name nmNodeName); + +event OnInit() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x88 [Loop If] + if(I < ResetSynchGroups.Length) + { + ResetSynchGroups[I].SynchNode = FindSynchAnimNode(ResetSynchGroups[I].AnimNodeSynchName); + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +defaultproperties +{ + m_bIgnoreZVelocity=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendBySpeedWithExhaustion.uc b/exported/TgGame/Classes/TgAnimBlendBySpeedWithExhaustion.uc new file mode 100755 index 00000000..28fab160 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendBySpeedWithExhaustion.uc @@ -0,0 +1,21 @@ +class TgAnimBlendBySpeedWithExhaustion extends TgAnimBlendBySpeed + native(Anim) + hidecategories(Object,Object,Object,Object); + +var(Exhaustion) bool m_bEnableExhaustion; +var(Exhaustion) float m_fExhaustionLevel; +var(Exhaustion) array m_ExhaustedChildren; +var(Exhaustion) array m_GainExhaustionChildren; +var(Exhaustion) float m_fExhaustionGainSpeed; +var(Exhaustion) float m_fExhaustionLossSpeed; +var(Exhaustion) float m_fExhaustionLevelMax; +var(Exhaustion) float m_fExhaustionLevelMin; + +defaultproperties +{ + m_fExhaustionLevel=1.0000000 + m_fExhaustionGainSpeed=0.2500000 + m_fExhaustionLossSpeed=0.3000000 + m_fExhaustionLevelMax=2.5000000 + m_fExhaustionLevelMin=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByStartingPosture.uc b/exported/TgGame/Classes/TgAnimBlendByStartingPosture.uc new file mode 100755 index 00000000..62b074ee --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByStartingPosture.uc @@ -0,0 +1,14 @@ +class TgAnimBlendByStartingPosture extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var TgPawn m_TgPawn; +var() TgPawn.TG_POSTURE m_StartingPosture; +var bool m_bExpired; + +defaultproperties +{ + DefaultBlendTime=0.0000000 + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByTeleportBeacon.uc b/exported/TgGame/Classes/TgAnimBlendByTeleportBeacon.uc new file mode 100755 index 00000000..03350408 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByTeleportBeacon.uc @@ -0,0 +1,120 @@ +class TgAnimBlendByTeleportBeacon extends TgAnimNodeBlendList + hidecategories(Object,Object,Object,Object); + +var bool m_bDeployed; + +simulated function Deploy(float fDeployTime) +{ + local AnimNodeSequence AnimSeqNode; + local AnimSequence AnimSeq; + local float AnimLength, InputTime, CurrentGlobalRate; + + // End:0x336 + if(ActiveChildIndex != 2) + { + AnimSeqNode = AnimNodeSequence(Children[1].Anim); + // End:0x123 + if(AnimSeqNode != none) + { + // End:0x9F + if(AnimSeqNode.AnimSeq != none) + { + AnimSeq = AnimSeqNode.AnimSeq; + } + else + { + // End:0x123 + if((AnimSeqNode.AnimSeqName != 'None') && SkelComponent != none) + { + AnimSeq = SkelComponent.FindAnimSequence(AnimSeqNode.AnimSeqName); + } + } + } + // End:0x2B8 + if(((fDeployTime > 0.0000000) && AnimSeqNode != none) && AnimSeq != none) + { + // End:0x17D + if(ActiveChildIndex != 1) + { + SetActiveChild(1, GetBlendTime(1)); + } + AnimSeqNode.bNoNotifies = false; + AnimLength = AnimSeq.SequenceLength; + CurrentGlobalRate = AnimSeqNode.GetGlobalPlayRate() / AnimSeqNode.Rate; + InputTime = ((!AnimSeqNode.bPlaying) ? 0.0000000 : AnimSeqNode.CurrentTime); + AnimSeqNode.PlayAnim(false, (AnimLength - InputTime) / (CurrentGlobalRate * fDeployTime), InputTime); + } + else + { + SetActiveChild(2, GetBlendTime(2)); + // End:0x32A + if(Children[2].Anim != none) + { + Children[2].Anim.ReplayAnim(); + } + } + m_bDeployed = true; + } + //return; +} + +simulated function Undeploy(float fUndeployTime) +{ + local AnimNodeSequence AnimSeqNode; + local AnimSequence AnimSeq; + local float AnimLength, InputTime, CurrentGlobalRate; + + // End:0x337 + if(ActiveChildIndex != 0) + { + AnimSeqNode = AnimNodeSequence(Children[1].Anim); + // End:0x122 + if(AnimSeqNode != none) + { + // End:0x9E + if(AnimSeqNode.AnimSeq != none) + { + AnimSeq = AnimSeqNode.AnimSeq; + } + else + { + // End:0x122 + if((AnimSeqNode.AnimSeqName != 'None') && SkelComponent != none) + { + AnimSeq = SkelComponent.FindAnimSequence(AnimSeqNode.AnimSeqName); + } + } + } + // End:0x2BD + if(((fUndeployTime > 0.0000000) && AnimSeqNode != none) && AnimSeq != none) + { + // End:0x17C + if(ActiveChildIndex != 1) + { + SetActiveChild(1, GetBlendTime(1)); + } + AnimSeqNode.bNoNotifies = true; + AnimLength = AnimSeq.SequenceLength; + CurrentGlobalRate = AnimSeqNode.GetGlobalPlayRate() / AnimSeqNode.Rate; + InputTime = ((!AnimSeqNode.bPlaying) ? AnimLength : AnimSeqNode.CurrentTime); + AnimSeqNode.PlayAnim(false, -InputTime / (CurrentGlobalRate * fUndeployTime), AnimLength - InputTime); + } + else + { + SetActiveChild(0, GetBlendTime(0)); + // End:0x32B + if(Children[0].Anim != none) + { + Children[0].Anim.ReplayAnim(); + } + } + m_bDeployed = false; + } + //return; +} + +defaultproperties +{ + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendByWeaponSkin.uc b/exported/TgGame/Classes/TgAnimBlendByWeaponSkin.uc new file mode 100755 index 00000000..c44e3735 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendByWeaponSkin.uc @@ -0,0 +1,17 @@ +class TgAnimBlendByWeaponSkin extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native WeaponSkinChildInfo +{ + var() int nWeaponSkinId; + var() int nChildIndex; + + structdefaultproperties + { + nWeaponSkinId=0 + nChildIndex=0 + } +}; + +var() array m_SkinMap; diff --git a/exported/TgGame/Classes/TgAnimBlendInterpBySpeed.uc b/exported/TgGame/Classes/TgAnimBlendInterpBySpeed.uc new file mode 100755 index 00000000..69071f12 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendInterpBySpeed.uc @@ -0,0 +1,16 @@ +class TgAnimBlendInterpBySpeed extends AnimNodeBlend + native(Anim) + hidecategories(Object,Object,Object,Object); + +var TgPawn m_TgPawn; +var() float m_fBlendTime; +var() float m_fFullRunSpeed; +var() float m_fFullIdleSpeed; + +defaultproperties +{ + m_fBlendTime=0.2000000 + m_fFullRunSpeed=350.0000000 + m_fFullIdleSpeed=50.0000000 + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimBlendPerBone.uc b/exported/TgGame/Classes/TgAnimBlendPerBone.uc new file mode 100755 index 00000000..fec1b25c --- /dev/null +++ b/exported/TgGame/Classes/TgAnimBlendPerBone.uc @@ -0,0 +1,23 @@ +class TgAnimBlendPerBone extends AnimNodeBlendPerBone + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() bool m_bLoopSourceChild; +var() bool m_bLoopTargetChild; +var() bool m_bPlaySourceChild; +var() bool m_bPlayTargetChild; +var() bool m_bSetStrengthFromAnimNode; +var() bool m_bInvertStrengthFromAnimNode; +var transient bool m_bInitializedCachedNodeList; +var() array m_StrengthAnimNodeNameList; +var() array m_StrengthEmoteList; +var transient array m_CachedNodeList; +var transient array m_CachedEmoteSequences; + +// Export UTgAnimBlendPerBone::execPlayAnim(FFrame&, void* const) +native function PlayAnim(optional bool bLoop = false, optional float Rate = 1.0000000, optional float StartTime = 0.0000000); + +defaultproperties +{ + BlendType=AlphaBlendType.ABT_Sinusoidal +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimMetaData_InvisibleWallFailSafe.uc b/exported/TgGame/Classes/TgAnimMetaData_InvisibleWallFailSafe.uc new file mode 100755 index 00000000..da86bae8 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimMetaData_InvisibleWallFailSafe.uc @@ -0,0 +1,12 @@ +class TgAnimMetaData_InvisibleWallFailSafe extends AnimMetaData + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var name WallEnableBaseName; + +defaultproperties +{ + WallEnableBaseName="WallEnable" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimMetaData_MICScalarParameter.uc b/exported/TgGame/Classes/TgAnimMetaData_MICScalarParameter.uc new file mode 100755 index 00000000..472b0956 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimMetaData_MICScalarParameter.uc @@ -0,0 +1,23 @@ +class TgAnimMetaData_MICScalarParameter extends AnimMetaData + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +struct native MICScalarParameterKeyFrame +{ + var() float Time; + var() float TargetValue; + + structdefaultproperties + { + Time=0.0000000 + TargetValue=0.0000000 + } +}; + +var() name MICParameterName; +var() int MaterialIndex; +var() editinline array KeyFrames; +var() bool bForceFirstKeyFrameOnBecomeRelevant; +var() bool bForceLastKeyFrameOnCeaseRelevant; diff --git a/exported/TgGame/Classes/TgAnimMetaData_MICScalarParameterExtended.uc b/exported/TgGame/Classes/TgAnimMetaData_MICScalarParameterExtended.uc new file mode 100755 index 00000000..db299637 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimMetaData_MICScalarParameterExtended.uc @@ -0,0 +1,55 @@ +class TgAnimMetaData_MICScalarParameterExtended extends TgAnimMetaData_MICScalarParameter + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +struct native AlternateMaterialOverride +{ + var() const MaterialInstanceConstant MaterialToFind; + var() const MaterialInstanceConstant MaterialToReplace; + + structdefaultproperties + { + MaterialToFind=none + MaterialToReplace=none + } +}; + +struct native SwappedMeshResetInfo +{ + var export editinline SkeletalMeshComponent SkelMeshComp; + var int MaterialIndex; + var MaterialInstanceConstant OrigMatInst; + + structdefaultproperties + { + SkelMeshComp=none + MaterialIndex=0 + OrigMatInst=none + } +}; + +var(ExtendedOptions) bool bSearchSelf; +var(ExtendedOptions) bool bSearchSiblings; +var(ExtendedOptions) bool bSearchChildren; +var(ExtendedOptions) bool bIncludeSearchParticles; +var(ExtendedOptions) bool bIncludeSearchMeshes; +var(ExtendedOptions) bool bForceAllMaterials; +var(ExtendedOptions) bool bFindAllMatchingMaterials; +var transient bool bHasSetMICs; +var(ExtendedOptions) const MaterialInstanceConstant MaterialToFind; +var(ExtendedOptions) const MaterialInstanceConstant MaterialToReplace; +var(ExtendedOptions) array AlternateMaterialList; +var(ExtendedOptions) const array TexturesToHarvest; +var transient array MaterialsToReset; +var transient array CurrentModifiedMICs; + +defaultproperties +{ + bSearchSelf=true + bIncludeSearchMeshes=true + TexturesToHarvest[0]="Normal" + TexturesToHarvest[1]="Diffuse" + TexturesToHarvest[2]="Specular" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimMetaData_MaskingPlane.uc b/exported/TgGame/Classes/TgAnimMetaData_MaskingPlane.uc new file mode 100755 index 00000000..4e90ddf9 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimMetaData_MaskingPlane.uc @@ -0,0 +1,24 @@ +class TgAnimMetaData_MaskingPlane extends TgAnimMetaData_MICScalarParameterExtended + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() int WallIndex; +var() Vector WallNormal; +var() Vector WallPosition0; +var() Vector WallPosition1; +var const name WallEnableBaseName; +var const name WallPositionBaseName; +var const name WallNormalBaseName; + +defaultproperties +{ + WallNormal=(X=0.0000000,Y=0.0000000,Z=1.0000000) + WallEnableBaseName="WallEnable" + WallPositionBaseName="WallPosition" + WallNormalBaseName="WallNormal" + bSearchSiblings=true + bSearchChildren=true + bForceAllMaterials=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimMetaData_MeshAccessory.uc b/exported/TgGame/Classes/TgAnimMetaData_MeshAccessory.uc new file mode 100755 index 00000000..428225a7 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimMetaData_MeshAccessory.uc @@ -0,0 +1,34 @@ +class TgAnimMetaData_MeshAccessory extends AnimMetaData + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +struct native MeshPlacement +{ + var() int nSkinId; + var() int nMeshId; + var() name SocketName; + + structdefaultproperties + { + nSkinId=0 + nMeshId=0 + SocketName="None" + } +}; + +var() editinline array m_Meshes; +var() bool m_bSkinIndependent; +var() bool m_bSetKeysNoInterp; +var() bool m_bUseScaling; +var export editinline transient SkeletalMeshComponent m_MeshComp; +var transient int m_nMeshId; +var() editinline array m_KeyFrames; +var() float m_fBecomeRelevantScale; +var() float m_fCeaseRelevantScale; + +defaultproperties +{ + m_fBecomeRelevantScale=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimMetaData_MeshAccessory_Mastery.uc b/exported/TgGame/Classes/TgAnimMetaData_MeshAccessory_Mastery.uc new file mode 100755 index 00000000..7a7ce4a4 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimMetaData_MeshAccessory_Mastery.uc @@ -0,0 +1,5 @@ +class TgAnimMetaData_MeshAccessory_Mastery extends TgAnimMetaData_MeshAccessory + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); diff --git a/exported/TgGame/Classes/TgAnimMetaData_SkelControlKeyFrame.uc b/exported/TgGame/Classes/TgAnimMetaData_SkelControlKeyFrame.uc new file mode 100755 index 00000000..0b7da6b8 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimMetaData_SkelControlKeyFrame.uc @@ -0,0 +1,9 @@ +class TgAnimMetaData_SkelControlKeyFrame extends TgAnimMetaData_SkelControl_BoneScale_KeyFrame + editinlinenew + collapsecategories + hidecategories(Object); + +defaultproperties +{ + bAdjustControllerStrength=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimMetaData_SkelControl_BoneScale.uc b/exported/TgGame/Classes/TgAnimMetaData_SkelControl_BoneScale.uc new file mode 100755 index 00000000..71cf47dc --- /dev/null +++ b/exported/TgGame/Classes/TgAnimMetaData_SkelControl_BoneScale.uc @@ -0,0 +1,10 @@ +class TgAnimMetaData_SkelControl_BoneScale extends AnimMetaData + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() array SkelControlNameList; +var() float BoneScale; +var() bool bFullControlOverController; +var deprecated name SkelControlName; diff --git a/exported/TgGame/Classes/TgAnimMetaData_SkelControl_BoneScale_KeyFrame.uc b/exported/TgGame/Classes/TgAnimMetaData_SkelControl_BoneScale_KeyFrame.uc new file mode 100755 index 00000000..3d0aa4ed --- /dev/null +++ b/exported/TgGame/Classes/TgAnimMetaData_SkelControl_BoneScale_KeyFrame.uc @@ -0,0 +1,36 @@ +class TgAnimMetaData_SkelControl_BoneScale_KeyFrame extends AnimMetaData + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +enum EOnRelevanceChange +{ + ORC_NORMAL, // 0 + ORC_FORCE_KEYFRAME, // 1 + ORC_FORCE_ACTIVE, // 2 + ORC_FORCE_INACTIVE, // 3 + ORC_FORCE_OTHER, // 4 + ORC_MAX // 5 +}; + +var() array SkelControlNameList; +var() editinline array KeyFrames; +var() bool bAllowScaleUp; +var() bool bAllowScaleDown; +var const bool bAdjustControllerStrength; +var() bool bFullControlOverController; +var() bool bSetKeysNoInterp; +var deprecated bool bForceFirstKeyFrameOnBecomeRelevant; +var deprecated bool bForceLastKeyFrameOnCeaseRelevant; +var deprecated name SkelControlName; +var() TgAnimMetaData_SkelControl_BoneScale_KeyFrame.EOnRelevanceChange OnBecomeRelevantBehavior; +var() TgAnimMetaData_SkelControl_BoneScale_KeyFrame.EOnRelevanceChange OnCeaseRelevantBehavior; +var() float OnBecomeRelevantStrength; +var() float OnCeaseRelevantStrength; + +defaultproperties +{ + bAllowScaleUp=true + bAllowScaleDown=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeAdditiveBlending.uc b/exported/TgGame/Classes/TgAnimNodeAdditiveBlending.uc new file mode 100755 index 00000000..58d2f79c --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeAdditiveBlending.uc @@ -0,0 +1,11 @@ +class TgAnimNodeAdditiveBlending extends AnimNodeAdditiveBlending + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() bool m_bSetStrengthFromAnimNode; +var() bool m_bInvertStrengthFromAnimNode; +var transient bool m_bInitializedCachedNodeList; +var() array m_StrengthAnimNodeNameList; +var() array m_StrengthEmoteList; +var transient array m_CachedNodeList; +var transient array m_CachedEmoteSequences; diff --git a/exported/TgGame/Classes/TgAnimNodeAimOffset.uc b/exported/TgGame/Classes/TgAnimNodeAimOffset.uc new file mode 100755 index 00000000..fbbc0075 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeAimOffset.uc @@ -0,0 +1,51 @@ +class TgAnimNodeAimOffset extends AnimNodeAimOffset + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EPitchControlType +{ + PITCHCONTROL_Disable, // 0 + PITCHCONTROL_Legacy, // 1 + PITCHCONTROL_Pure, // 2 + PITCHCONTROL_UserDefined, // 3 + PITCHCONTROL_MAX // 4 +}; + +var const transient TgPawn Owner; +var array m_CachedNodeList; +var transient bool m_bInitializedCachedNodeList; +var deprecated bool m_bDisableVerticalAiming; +var const transient bool bInterpolating; +var() bool m_bBakeAllProfileOffsetsFromAnimations; +var() bool m_bPopulateAnimNamesWithPrefixes; +var(Random) bool m_bRandomAimPointsEnabled; +var(OverrideAim) bool m_bOverrideAim; +var(AI) bool m_bAimAtTarget; +var(PitchControl) const TgAnimNodeAimOffset.EPitchControlType m_PitchControlType; +var(PitchControl) const InterpCurveFloat m_PitchControlUserCurve; +var() const transient float TurnInPlaceOffset; +var const transient float LastAimX; +var() float InterpSpeed; +var const transient Vector2D m_AimOffsetPct; +var(Random) Vector2D m_RandomAimPointsRangeX; +var(Random) Vector2D m_RandomAimPointsRangeY; +var(Random) float m_fRandomAimPointsInterpRate; +var(Random) float m_fRandomAimPointsIntervalMin; +var(Random) float m_fRandomAimPointsIntervalMax; +var float m_fCurrentRandomAimPointsInterval; +var Vector2D m_TargetRandomAimLocation; +var float m_fDeltaTime; +var(OverrideAim) Vector2D m_OverriddenAim; +var TgWeaponMeshActor m_WeaponMeshActor; + +defaultproperties +{ + m_PitchControlType=EPitchControlType.PITCHCONTROL_Legacy + m_PitchControlUserCurve=(Points=((InVal=-17920.0000000,OutVal=-1.0000000,ArriveTangent=0.0000000,LeaveTangent=0.0000000,InterpMode=EInterpCurveMode.CIM_Linear),(InVal=17920.0000000,OutVal=1.0000000,ArriveTangent=0.0000000,LeaveTangent=0.0000000,InterpMode=EInterpCurveMode.CIM_Linear)),InterpMethod=EInterpMethodType.IMT_UseFixedTangentEval) + InterpSpeed=12.0000000 + m_RandomAimPointsRangeX=(X=-1.0000000,Y=1.0000000) + m_RandomAimPointsRangeY=(X=-1.0000000,Y=1.0000000) + m_fRandomAimPointsInterpRate=8.0000000 + m_fRandomAimPointsIntervalMin=1.0000000 + m_fRandomAimPointsIntervalMax=2.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeAimOffset_Charge.uc b/exported/TgGame/Classes/TgAnimNodeAimOffset_Charge.uc new file mode 100755 index 00000000..f282179d --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeAimOffset_Charge.uc @@ -0,0 +1,16 @@ +class TgAnimNodeAimOffset_Charge extends TgAnimNodeAimOffset + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() bool m_bInterpToCurrentTurnRate; +var() float m_fInterpSpeed; +var() float m_fMaxYawRate; +var transient float m_fAimYawOffset; +var transient Rotator m_rCachedOwnerRotator; + +defaultproperties +{ + m_bInterpToCurrentTurnRate=true + m_fInterpSpeed=4.0000000 + m_fMaxYawRate=16384.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendAnimsByDirection.uc b/exported/TgGame/Classes/TgAnimNodeBlendAnimsByDirection.uc new file mode 100755 index 00000000..2dcb41b0 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendAnimsByDirection.uc @@ -0,0 +1,33 @@ +class TgAnimNodeBlendAnimsByDirection extends AnimNodeSequenceBlendBase + native(Anim) + hidecategories(Object,Object,Object); + +var() float m_BlendSpeed; +var() bool m_bUsePlayRateByDirection; +var() bool m_bIncludeStandingAnim; +var transient bool m_bForceStanding; +var const transient bool m_bInterpolateWeights; +var() bool m_bMirrorDirectionsWhenPawnMirrored; +var() bool m_bForwardLeftCorrection; +var() float m_PlayRateByDirection[8]; +var() float m_PlayRateStanding; +var() float m_fStillThreshold; +var float m_DirAngle; +var transient float m_LastRelevantTime; + +defaultproperties +{ + m_BlendSpeed=10.0000000 + m_bUsePlayRateByDirection=true + m_PlayRateByDirection[0]=1.0000000 + m_PlayRateByDirection[1]=1.0000000 + m_PlayRateByDirection[2]=1.0000000 + m_PlayRateByDirection[3]=1.0000000 + m_PlayRateByDirection[4]=1.0000000 + m_PlayRateByDirection[5]=1.0000000 + m_PlayRateByDirection[6]=1.0000000 + m_PlayRateByDirection[7]=1.0000000 + m_PlayRateStanding=1.0000000 + m_fStillThreshold=0.0001000 + Anims=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByAFK.uc b/exported/TgGame/Classes/TgAnimNodeBlendByAFK.uc new file mode 100755 index 00000000..23377f59 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByAFK.uc @@ -0,0 +1,11 @@ +class TgAnimNodeBlendByAFK extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var TgPawn PawnOwner; + +defaultproperties +{ + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByAbilityDrag.uc b/exported/TgGame/Classes/TgAnimNodeBlendByAbilityDrag.uc new file mode 100755 index 00000000..05fec1dc --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByAbilityDrag.uc @@ -0,0 +1,80 @@ +class TgAnimNodeBlendByAbilityDrag extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EBlendDrag +{ + BLENDDRAG_Inactive, // 0 + BLENDDRAG_Throw, // 1 + BLENDDRAG_Hit, // 2 + BLENDDRAG_PrePullLoop, // 3 + BLENDDRAG_Pull, // 4 + BLENDDRAG_PullLoop, // 5 + BLENDDRAG_EndPull, // 6 + BLENDDRAG_MissThrow, // 7 + BLENDDRAG_MissThrowEnd, // 8 + BLENDDRAG_MissInvalid, // 9 + BLENDDRAG_MissInvalidEnd, // 10 + BLENDDRAG_CloseRangeEnd, // 11 + BLENDDRAG_MAX // 12 +}; + +function ThrowHook() +{ + SetActiveChild(1, GetBlendTime(1)); + //return; +} + +function HookHit() +{ + SetActiveChild(2, GetBlendTime(2)); + //return; +} + +function HookPull() +{ + SetActiveChild(4, GetBlendTime(4)); + //return; +} + +function HookEnd() +{ + SetActiveChild(6, GetBlendTime(6)); + //return; +} + +function HookMissNotHit() +{ + SetActiveChild(7, GetBlendTime(7)); + //return; +} + +function HookEndMissNoHit() +{ + SetActiveChild(8, GetBlendTime(8)); + //return; +} + +function HookMissInvalid() +{ + SetActiveChild(9, GetBlendTime(9)); + //return; +} + +function HookEndMissInvalid() +{ + SetActiveChild(10, GetBlendTime(10)); + //return; +} + +function HookCloseRangeEnd() +{ + SetActiveChild(11, GetBlendTime(11)); + //return; +} + +defaultproperties +{ + Children=/* Array type was not detected. */ + NodeName="DragAbilityBlendNode" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByAbilityDragChain.uc b/exported/TgGame/Classes/TgAnimNodeBlendByAbilityDragChain.uc new file mode 100755 index 00000000..87b2a081 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByAbilityDragChain.uc @@ -0,0 +1,42 @@ +class TgAnimNodeBlendByAbilityDragChain extends TgAnimNodeBlendList + hidecategories(Object,Object,Object,Object); + +enum EBlendDrag +{ + BLENDCHAIN_Inactive, // 0 + BLENDCHAIN_Throw, // 1 + BLENDCHAIN_Hit, // 2 + BLENDCHAIN_MissThrow, // 3 + BLENDCHAIN_MissInvalid, // 4 + BLENDCHAIN_MAX // 5 +}; + +function ChainThrow() +{ + SetActiveChild(1, GetBlendTime(1)); + //return; +} + +function ChainHit() +{ + SetActiveChild(2, GetBlendTime(2)); + //return; +} + +function ChainMiss() +{ + SetActiveChild(3, GetBlendTime(3)); + //return; +} + +function ChainInvalid() +{ + SetActiveChild(4, GetBlendTime(4)); + //return; +} + +defaultproperties +{ + Children=/* Array type was not detected. */ + NodeName="DragChainAbilityBlendNode" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByAbilityDragonSlam.uc b/exported/TgGame/Classes/TgAnimNodeBlendByAbilityDragonSlam.uc new file mode 100755 index 00000000..6aa19747 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByAbilityDragonSlam.uc @@ -0,0 +1,48 @@ +class TgAnimNodeBlendByAbilityDragonSlam extends TgAnimNodeBlendList + hidecategories(Object,Object,Object,Object); + +enum EBlendDragonSlam +{ + BLENDDRAGON_ReadyFlightFromGound,// 0 + BLENDDRAGON_ReadyFlightFromAir, // 1 + BLENDDRAGON_Flying, // 2 + BLENDDRAGON_Punch, // 3 + BLENDDRAGON_EndFlight, // 4 + BLENDDRAGON_MAX // 5 +}; + +function ReadyFlightFromGround() +{ + SetActiveChild(0, GetBlendTime(0)); + //return; +} + +function ReadyFlightFromAir() +{ + SetActiveChild(1, GetBlendTime(1)); + //return; +} + +function Fly() +{ + SetActiveChild(2, GetBlendTime(2)); + //return; +} + +function HitTarget() +{ + SetActiveChild(3, GetBlendTime(3)); + //return; +} + +function EndFlying() +{ + SetActiveChild(4, GetBlendTime(4)); + //return; +} + +defaultproperties +{ + Children=/* Array type was not detected. */ + NodeName="DragonSlamAbilityBlendNode" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByAbilityFragGrenade.uc b/exported/TgGame/Classes/TgAnimNodeBlendByAbilityFragGrenade.uc new file mode 100755 index 00000000..f6a376db --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByAbilityFragGrenade.uc @@ -0,0 +1,22 @@ +class TgAnimNodeBlendByAbilityFragGrenade extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +function StartThrow() +{ + // End:0x28 + if(ActiveChildIndex != 2) + { + SetActiveChild(2, GetBlendTime(2)); + } + //return; +} + +// Export UTgAnimNodeBlendByAbilityFragGrenade::execOnInterrupt(FFrame&, void* const) +native function OnInterrupt(); + +defaultproperties +{ + Children=/* Array type was not detected. */ + NodeName="FragGrenadeAbilityBlendNode" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByAbilityHyperShot.uc b/exported/TgGame/Classes/TgAnimNodeBlendByAbilityHyperShot.uc new file mode 100755 index 00000000..3a8a1401 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByAbilityHyperShot.uc @@ -0,0 +1,22 @@ +class TgAnimNodeBlendByAbilityHyperShot extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EBlendHyperShot +{ + BLENDHYPERSHOT_Inactive, // 0 + BLENDHYPERSHOT_Buildup, // 1 + BLENDHYPERSHOT_Idle, // 2 + BLENDHYPERSHOT_Activate, // 3 + BLENDHYPERSHOT_FireBuildup, // 4 + BLENDHYPERSHOT_Fire, // 5 + BLENDHYPERSHOT_TransitionToIdle,// 6 + BLENDHYPERSHOT_Cancel, // 7 + BLENDHYPERSHOT_MAX // 8 +}; + +defaultproperties +{ + Children=/* Array type was not detected. */ + NodeName="HyperShotAbilityBlendNode" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByAbilityReversal.uc b/exported/TgGame/Classes/TgAnimNodeBlendByAbilityReversal.uc new file mode 100755 index 00000000..5e2e62be --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByAbilityReversal.uc @@ -0,0 +1,18 @@ +class TgAnimNodeBlendByAbilityReversal extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EBlendReversal +{ + BLENDREVERSAL_Inactive, // 0 + BLENDREVERSAL_Buildup, // 1 + BLENDREVERSAL_Fire, // 2 + BLENDREVERSAL_Miss, // 3 + BLENDREVERSAL_MAX // 4 +}; + +defaultproperties +{ + Children=/* Array type was not detected. */ + NodeName="ReversalAbilityBlendNode" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByAbilitySimple.uc b/exported/TgGame/Classes/TgAnimNodeBlendByAbilitySimple.uc new file mode 100755 index 00000000..b8b2e1b7 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByAbilitySimple.uc @@ -0,0 +1,67 @@ +class TgAnimNodeBlendByAbilitySimple extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EBlendSimpleAbility +{ + BLENDSA_Inactive, // 0 + BLENDSA_Firing, // 1 + BLENDSA_MAX // 2 +}; + +var() bool m_bBlendToActiveOnStartFire; +var() bool m_bBlendToActiveOnFire; +var() bool m_bDelayBlendToActiveUntilAnimEnd; +var() bool m_bDelayBlendToActiveUntilReplay; +var() bool m_bDelayBlendToIdleUntilAnimEnd; +var() bool m_bDelayBlendToIdleUntilReplay; +var() bool m_bBlendToIdleImmediatelyOnInterrupt; +var transient bool m_bIsAbilityFiring; +var() TgObject.TG_EQUIP_POINT m_EqpPoint; + +function SetAbilityFiring(bool bIsFiring, bool bIsOnFire, optional bool bIsInterrupted = false) +{ + // End:0x5F + if(bIsFiring && (m_bBlendToActiveOnStartFire && !bIsOnFire) || m_bBlendToActiveOnFire && bIsOnFire) + { + m_bIsAbilityFiring = true; + } + else + { + // End:0x7A + if(!bIsFiring) + { + m_bIsAbilityFiring = false; + } + } + // End:0xD3 + if(m_bIsAbilityFiring && (!m_bDelayBlendToActiveUntilReplay && !m_bDelayBlendToActiveUntilAnimEnd) || !bRelevant) + { + SetActiveChild(1, GetBlendTime(1)); + } + else + { + // End:0x149 + if(!m_bIsAbilityFiring && ((!m_bDelayBlendToIdleUntilReplay && !m_bDelayBlendToIdleUntilAnimEnd) || !bRelevant) || bIsInterrupted && m_bBlendToIdleImmediatelyOnInterrupt) + { + SetActiveChild(0, GetBlendTime(0)); + } + } + //return; +} + +// Export UTgAnimNodeBlendByAbilitySimple::execPlayAnim(FFrame&, void* const) +native function PlayAnim(optional bool bLoop = false, optional float InRate = 1.0000000, optional float StartTime = 0.0000000); + +// Export UTgAnimNodeBlendByAbilitySimple::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); + +defaultproperties +{ + m_bBlendToActiveOnStartFire=true + m_EqpPoint=TG_EQUIP_POINT.EQP_AUTO + TargetWeight=/* Array type was not detected. */ + Children=/* Array type was not detected. */ + bFixNumChildren=true + NodeName="SimpleAbilityBlendNode" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByAbilitySmash.uc b/exported/TgGame/Classes/TgAnimNodeBlendByAbilitySmash.uc new file mode 100755 index 00000000..a4f56ea3 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByAbilitySmash.uc @@ -0,0 +1,27 @@ +class TgAnimNodeBlendByAbilitySmash extends TgAnimNodeBlendList + hidecategories(Object,Object,Object,Object); + +enum EBlendMakoaSmash +{ + BLENDSMASH_ChargeUp, // 0 + BLENDSMASH_Attack, // 1 + BLENDSMASH_MAX // 2 +}; + +function BeginChargeUp() +{ + SetActiveChild(0, GetBlendTime(0)); + //return; +} + +function Attack() +{ + SetActiveChild(1, GetBlendTime(1)); + //return; +} + +defaultproperties +{ + Children=/* Array type was not detected. */ + NodeName="MakoaSmashBlendNode" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByAbilityVine.uc b/exported/TgGame/Classes/TgAnimNodeBlendByAbilityVine.uc new file mode 100755 index 00000000..4368fb3e --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByAbilityVine.uc @@ -0,0 +1,66 @@ +class TgAnimNodeBlendByAbilityVine extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EBlendVine +{ + BLENDVINE_Inactive, // 0 + BLENDVINE_Throw, // 1 + BLENDVINE_ThrowLoop, // 2 + BLENDVINE_Pull, // 3 + BLENDVINE_HitPostFire, // 4 + BLENDVINE_MissPostFire, // 5 + BLENDVINE_MAX // 6 +}; + +function VineThrow() +{ + SetActiveChild(1, GetBlendTime(1)); + //return; +} + +function VinePull() +{ + SetActiveChild(3, GetBlendTime(3)); + //return; +} + +function VineHitPost() +{ + // End:0x3D + if(Children[4].Anim != none) + { + SetActiveChild(4, GetBlendTime(4)); + } + //return; +} + +function VinePost() +{ + // End:0x50 + if(ActiveChildIndex == 3) + { + // End:0x4D + if(Children[4].Anim != none) + { + SetActiveChild(4, GetBlendTime(4)); + } + } + else + { + SetActiveChild(5, GetBlendTime(5)); + } + //return; +} + +function VineInactive() +{ + SetActiveChild(0, GetBlendTime(0)); + //return; +} + +defaultproperties +{ + Children=/* Array type was not detected. */ + NodeName="VineAbilityBlendNode" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByAndroxusDrift.uc b/exported/TgGame/Classes/TgAnimNodeBlendByAndroxusDrift.uc new file mode 100755 index 00000000..be82f0f0 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByAndroxusDrift.uc @@ -0,0 +1,52 @@ +class TgAnimNodeBlendByAndroxusDrift extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EBlendAndroxusDrift +{ + BLENDDRIFT_NotDrifting, // 0 + BLENDDRIFT_Drifting, // 1 + BLENDDRIFT_TransitionToNotDrifting,// 2 + BLENDDRIFT_TransitionToDrifting,// 3 + BLENDDRIFT_MAX // 4 +}; + +struct native DriftInfo +{ + var float fStartTime; + var float fEndTime; + + structdefaultproperties + { + fStartTime=0.0000000 + fEndTime=0.0000000 + } +}; + +var array m_DriftRecords; +var TgPawn_Androxus m_CachedAndroxusOwner; +var bool m_bInDrift; +var() bool m_bTransitionsCanBeInterrupted; +var float m_fDriftStartTime; +var() float m_fDriftRelevancyWindow; +var() float m_fDriftTriggerPercent; +var() float m_fMaxFallSpeed; + +// Export UTgAnimNodeBlendByAndroxusDrift::execGetDriftUsePercent(FFrame&, void* const) +native function float GetDriftUsePercent(); + +// Export UTgAnimNodeBlendByAndroxusDrift::execStartedDrift(FFrame&, void* const) +native function StartedDrift(); + +// Export UTgAnimNodeBlendByAndroxusDrift::execStoppedDrift(FFrame&, void* const) +native function StoppedDrift(); + +defaultproperties +{ + m_bTransitionsCanBeInterrupted=true + m_fDriftRelevancyWindow=1.0000000 + m_fDriftTriggerPercent=0.5000000 + m_fMaxFallSpeed=-400.0000000 + Children=/* Array type was not detected. */ + NodeName="AndroxusDriftBlendNode" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByBlink.uc b/exported/TgGame/Classes/TgAnimNodeBlendByBlink.uc new file mode 100755 index 00000000..965a962c --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByBlink.uc @@ -0,0 +1,20 @@ +class TgAnimNodeBlendByBlink extends AnimNodeBlendPerBone + native(Anim) + hidecategories(Object,Object,Object,Object); + +var transient TgPawn m_TgPawn; +var export editinline transient SkeletalMeshComponent m_SkelMesh; +var() float m_fBlinkAnimRate; +var() Vector2D m_vTimeBetweenBlinks; +var float m_fTimeTillNextBlink; +var() array m_DisableBlinkingAnimNodeNameList; +var transient array m_CachedNodeList; +var transient bool m_bInitializedCachedNodeList; + +defaultproperties +{ + m_fBlinkAnimRate=1.0000000 + m_vTimeBetweenBlinks=(X=2.0000000,Y=6.0000000) + bForceLocalSpaceBlend=true + BranchStartBoneName=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByCombat.uc b/exported/TgGame/Classes/TgAnimNodeBlendByCombat.uc new file mode 100755 index 00000000..e5b8ec8a --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByCombat.uc @@ -0,0 +1,11 @@ +class TgAnimNodeBlendByCombat extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var TgPawn m_TgP; + +defaultproperties +{ + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByCombatWariness.uc b/exported/TgGame/Classes/TgAnimNodeBlendByCombatWariness.uc new file mode 100755 index 00000000..18a4c8e2 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByCombatWariness.uc @@ -0,0 +1,20 @@ +class TgAnimNodeBlendByCombatWariness extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() float CombatWarinessDuration; +var() bool AllowIdleAnimToComplete; +var() bool AllowWaryAnimToComplete; +var transient bool IsWary; +var transient float WaryTime; + +// Export UTgAnimNodeBlendByCombatWariness::execBecomeWary(FFrame&, void* const) +native function BecomeWary(); + +defaultproperties +{ + CombatWarinessDuration=5.0000000 + AllowWaryAnimToComplete=true + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByDeviceEquipped.uc b/exported/TgGame/Classes/TgAnimNodeBlendByDeviceEquipped.uc new file mode 100755 index 00000000..e0ac444e --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByDeviceEquipped.uc @@ -0,0 +1,17 @@ +class TgAnimNodeBlendByDeviceEquipped extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() int m_DeviceId; +var TgPawn m_TgPawn; + +// Export UTgAnimNodeBlendByDeviceEquipped::execPlayAnim(FFrame&, void* const) +native function PlayAnim(optional bool bLoop = false, optional float InRate = 1.0000000, optional float StartTime = 0.0000000); + +defaultproperties +{ + TargetWeight=/* Array type was not detected. */ + Children=/* Array type was not detected. */ + bFixNumChildren=true + NodeName="DeviceEquippedBlendNode" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByDrogozFlying.uc b/exported/TgGame/Classes/TgAnimNodeBlendByDrogozFlying.uc new file mode 100755 index 00000000..52dec652 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByDrogozFlying.uc @@ -0,0 +1,53 @@ +class TgAnimNodeBlendByDrogozFlying extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EBlendDrogozFlying +{ + BLENDDROGOZ_NotFlying, // 0 + BLENDDROGOZ_Flying, // 1 + BLENDDROGOZ_TransitionToNotFlying,// 2 + BLENDDROGOZ_TransitionToFlying, // 3 + BLENDDROGOZ_MAX // 4 +}; + +struct native BoosterFlightInfo +{ + var float fStartTime; + var float fEndTime; + + structdefaultproperties + { + fStartTime=0.0000000 + fEndTime=0.0000000 + } +}; + +var array m_BoosterRecords; +var TgPawn_Drogoz m_CachedDrogozOwner; +var bool m_bInThrust; +var bool m_bInBooster; +var() bool m_bTransitionsCanBeInterrupted; +var float m_fBoosterStartTime; +var() float m_fBoosterRelevancyWindow; +var() float m_fBoosterTriggerPercent; +var() float m_fMaxFlightFallSpeed; + +// Export UTgAnimNodeBlendByDrogozFlying::execGetBoosterUsePercent(FFrame&, void* const) +native function float GetBoosterUsePercent(); + +// Export UTgAnimNodeBlendByDrogozFlying::execStartedBooster(FFrame&, void* const) +native function StartedBooster(); + +// Export UTgAnimNodeBlendByDrogozFlying::execStoppedBooster(FFrame&, void* const) +native function StoppedBooster(); + +defaultproperties +{ + m_bTransitionsCanBeInterrupted=true + m_fBoosterRelevancyWindow=1.0000000 + m_fBoosterTriggerPercent=0.5000000 + m_fMaxFlightFallSpeed=-400.0000000 + Children=/* Array type was not detected. */ + NodeName="DrogozFlyingBlendNode" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByGameState.uc b/exported/TgGame/Classes/TgAnimNodeBlendByGameState.uc new file mode 100755 index 00000000..03e96280 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByGameState.uc @@ -0,0 +1,12 @@ +class TgAnimNodeBlendByGameState extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var transient TgPawn PawnOwner; + +defaultproperties +{ + bPlayActiveChild=true + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByHealth.uc b/exported/TgGame/Classes/TgAnimNodeBlendByHealth.uc new file mode 100755 index 00000000..45028695 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByHealth.uc @@ -0,0 +1,6 @@ +class TgAnimNodeBlendByHealth extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() array m_HealthChildren; +var transient TgPawn m_TgPawn; diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByHitReaction.uc b/exported/TgGame/Classes/TgAnimNodeBlendByHitReaction.uc new file mode 100755 index 00000000..c2a21654 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByHitReaction.uc @@ -0,0 +1,16 @@ +class TgAnimNodeBlendByHitReaction extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +// Export UTgAnimNodeBlendByHitReaction::execOnMinorHit(FFrame&, void* const) +native function OnMinorHit(Vector DirectionFromHit); + +// Export UTgAnimNodeBlendByHitReaction::execOnMajorHit(FFrame&, void* const) +native function OnMajorHit(Vector DirectionFromHit); + +defaultproperties +{ + bPlayActiveChild=true + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByIntroduction.uc b/exported/TgGame/Classes/TgAnimNodeBlendByIntroduction.uc new file mode 100755 index 00000000..fa145607 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByIntroduction.uc @@ -0,0 +1,17 @@ +class TgAnimNodeBlendByIntroduction extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var bool m_bIsRelevant; + +// Export UTgAnimNodeBlendByIntroduction::execPrepareIntroduction(FFrame&, void* const) +native function PrepareIntroduction(); + +// Export UTgAnimNodeBlendByIntroduction::execPlayIntroduction(FFrame&, void* const) +native function PlayIntroduction(); + +defaultproperties +{ + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByKnockdown.uc b/exported/TgGame/Classes/TgAnimNodeBlendByKnockdown.uc new file mode 100755 index 00000000..f41c080b --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByKnockdown.uc @@ -0,0 +1,31 @@ +class TgAnimNodeBlendByKnockdown extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EKnockDownChildren +{ + KNOCKDOWNANIM_Input, // 0 + KNOCKDOWNANIM_DownState, // 1 + KNOCKDOWNANIM_GetUp, // 2 + KNOCKDOWNANIM_MAX // 3 +}; + +var() bool m_bAdjustPlayRateByVelocity; +var() float m_fVelocityMultiplier; +var() float m_PreviewVelocity; +var TgPawn m_TgPawn; +var() name m_FaceDownAnimName; +var() name m_FaceUpAnimName; +var() name m_FaceDownRecoverAnimName; +var() name m_FaceUpRecoverAnimName; + +// Export UTgAnimNodeBlendByKnockdown::execSetDownStateAnim(FFrame&, void* const) +native function SetDownStateAnim(bool bFaceDown); + +defaultproperties +{ + m_bAdjustPlayRateByVelocity=true + m_fVelocityMultiplier=0.0050000 + Children=/* Array type was not detected. */ + NodeName="KnockdownBlend" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByLobby.uc b/exported/TgGame/Classes/TgAnimNodeBlendByLobby.uc new file mode 100755 index 00000000..62b92a9d --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByLobby.uc @@ -0,0 +1,8 @@ +class TgAnimNodeBlendByLobby extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +defaultproperties +{ + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByMeleeIdle.uc b/exported/TgGame/Classes/TgAnimNodeBlendByMeleeIdle.uc new file mode 100755 index 00000000..73eeadd0 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByMeleeIdle.uc @@ -0,0 +1,13 @@ +class TgAnimNodeBlendByMeleeIdle extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var TgPawn m_TgPawn; + +defaultproperties +{ + DefaultBlendTime=0.5000000 + Children=/* Array type was not detected. */ + bFixNumChildren=true + BlendType=AlphaBlendType.ABT_Cubic +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByPhysics.uc b/exported/TgGame/Classes/TgAnimNodeBlendByPhysics.uc new file mode 100755 index 00000000..4eb24463 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByPhysics.uc @@ -0,0 +1,44 @@ +class TgAnimNodeBlendByPhysics extends AnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native ChildBlendInfo +{ + var() Actor.EPhysics m_PhysicsState; + var() float m_fBlendTime; + + structdefaultproperties + { + m_PhysicsState=EPhysics.PHYS_None + m_fBlendTime=0.0000000 + } +}; + +struct native ChildrenBlendInfo +{ + var() Actor.EPhysics m_PhysicsState; + var() array m_ChildBlendInfo; + + structdefaultproperties + { + m_PhysicsState=EPhysics.PHYS_None + m_ChildBlendInfo=none + } +}; + +var TgPawn m_TgPawn; +var Actor.EPhysics m_LastPhysics; +var Actor.EPhysics m_CurrentPhysics; +var int m_CurrentPhysicsChildIndex; +var() array m_PhysicsChildren; +var() bool m_bDirectUnspecifiedPhysicsThroughChild0; +var() float DefaultBlendTime; +var() array m_ChildrenBlendInfo; + +defaultproperties +{ + m_PhysicsChildren[0]=151 + m_bDirectUnspecifiedPhysicsThroughChild0=true + DefaultBlendTime=0.2000000 + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendBySlowFall.uc b/exported/TgGame/Classes/TgAnimNodeBlendBySlowFall.uc new file mode 100755 index 00000000..b27a7a4a --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendBySlowFall.uc @@ -0,0 +1,19 @@ +class TgAnimNodeBlendBySlowFall extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +simulated event SetActiveAnimationIndex(int ChildIndex) +{ + // End:0x6C + if(((ChildIndex != -1) && ChildIndex != ActiveChildIndex) && ChildIndex < Children.Length) + { + SetActiveChild(ChildIndex, GetBlendTime(ChildIndex)); + } + //return; +} + +defaultproperties +{ + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByStrafe.uc b/exported/TgGame/Classes/TgAnimNodeBlendByStrafe.uc new file mode 100755 index 00000000..d8847272 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByStrafe.uc @@ -0,0 +1,12 @@ +class TgAnimNodeBlendByStrafe extends AnimNodeBlend + native(Anim) + hidecategories(Object,Object,Object,Object); + +var TgPawn m_TgPawn; +var() float m_fBlendTime; + +defaultproperties +{ + m_fBlendTime=0.2000000 + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByVerticalAim.uc b/exported/TgGame/Classes/TgAnimNodeBlendByVerticalAim.uc new file mode 100755 index 00000000..11dadc6e --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByVerticalAim.uc @@ -0,0 +1,36 @@ +class TgAnimNodeBlendByVerticalAim extends AnimNodeBlendBase + native + hidecategories(Object,Object,Object); + +var() float m_Aim; +var() Vector2D m_Range; +var() float m_AngleOffset; +var transient float m_PreviousAim; +var transient bool bInitialized; +var() bool m_bLoopChildrenOnRelevant; +var() bool m_bPlayChildrenOnRelevant; +var() name m_AnimName_Up; +var() name m_AnimName_Center; +var() name m_AnimName_Down; +var transient AnimNodeSequence m_SeqNode1; +var transient AnimNodeSequence m_SeqNode2; + +// Export UTgAnimNodeBlendByVerticalAim::execPlayAnim(FFrame&, void* const) +native function PlayAnim(optional bool bLoop = false, optional float Rate = 1.0000000, optional float StartTime = 0.0000000); + +event OnBecomeRelevant() +{ + // End:0x23 + if(m_bPlayChildrenOnRelevant) + { + PlayAnim(m_bLoopChildrenOnRelevant); + } + //return; +} + +defaultproperties +{ + m_Range=(X=-1.0000000,Y=1.0000000) + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByZoomPostFireTransition.uc b/exported/TgGame/Classes/TgAnimNodeBlendByZoomPostFireTransition.uc new file mode 100755 index 00000000..2f807356 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByZoomPostFireTransition.uc @@ -0,0 +1,39 @@ +class TgAnimNodeBlendByZoomPostFireTransition extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +function StartZoomTransition(float transitionTimeRemaining, bool zoomIn) +{ + // End:0x24 + if(zoomIn) + { + SetActiveChild(0, transitionTimeRemaining); + } + else + { + SetActiveChild(1, transitionTimeRemaining); + } + //return; +} + +function SetZoomState(bool zoomIn) +{ + // End:0x20 + if(zoomIn) + { + SetActiveChild(0, 0.0000000); + } + else + { + SetActiveChild(1, 0.0000000); + } + //return; +} + +defaultproperties +{ + TargetWeight=/* Array type was not detected. */ + Children=/* Array type was not detected. */ + bFixNumChildren=true + NodeName="ZoomPostFireTransition" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendByZoomTransition.uc b/exported/TgGame/Classes/TgAnimNodeBlendByZoomTransition.uc new file mode 100755 index 00000000..f9950d3a --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendByZoomTransition.uc @@ -0,0 +1,87 @@ +class TgAnimNodeBlendByZoomTransition extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var float m_fTransitionStartTime; + +function StartZoomTransition(float zoomPercent, float totalTransitionTime, bool zoomIn) +{ + local WorldInfo World; + local AnimNodeSequence AnimNodeSeq; + local AnimSequence AnimSeq; + + // End:0x198 + if(zoomIn) + { + // End:0x195 + if(Children[2].Anim != none) + { + SetActiveChild(2, GetBlendTime(2)); + AnimNodeSeq = AnimNodeSequence(Children[2].Anim); + // End:0x195 + if(AnimNodeSeq != none) + { + // End:0xEC + if(AnimNodeSeq.AnimSeq == none) + { + AnimNodeSeq.SetAnim(AnimNodeSeq.AnimSeqName); + } + AnimSeq = AnimNodeSeq.AnimSeq; + // End:0x195 + if(AnimSeq != none) + { + AnimNodeSeq.PlayAnim(false, AnimSeq.SequenceLength / totalTransitionTime, zoomPercent * AnimSeq.SequenceLength); + } + } + } + } + else + { + // End:0x327 + if(Children[3].Anim != none) + { + SetActiveChild(3, GetBlendTime(3)); + AnimNodeSeq = AnimNodeSequence(Children[3].Anim); + // End:0x327 + if(AnimNodeSeq != none) + { + // End:0x277 + if(AnimNodeSeq.AnimSeq == none) + { + AnimNodeSeq.SetAnim(AnimNodeSeq.AnimSeqName); + } + AnimSeq = AnimNodeSeq.AnimSeq; + // End:0x327 + if(AnimSeq != none) + { + AnimNodeSeq.PlayAnim(false, AnimSeq.SequenceLength / totalTransitionTime, (1.0000000 - zoomPercent) * AnimSeq.SequenceLength); + } + } + } + } + World = Class'Engine.WorldInfo'.static.GetWorldInfo(); + m_fTransitionStartTime = World.TimeSeconds; + //return; +} + +function SetZoomState(bool zoomIn) +{ + // End:0x26 + if(zoomIn) + { + SetActiveChild(1, GetBlendTime(1)); + } + else + { + SetActiveChild(0, GetBlendTime(0)); + } + //return; +} + +defaultproperties +{ + TargetWeight=/* Array type was not detected. */ + Children=/* Array type was not detected. */ + bFixNumChildren=true + NodeName="ZoomTransition" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendList.uc b/exported/TgGame/Classes/TgAnimNodeBlendList.uc new file mode 100755 index 00000000..02be3255 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendList.uc @@ -0,0 +1,31 @@ +class TgAnimNodeBlendList extends AnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native ChildBlendParam +{ + var() int FromChild; + var() int ToChild; + var() float BlendTime; + var() float MaxBlendTime; + + structdefaultproperties + { + FromChild=0 + ToChild=0 + BlendTime=0.0000000 + MaxBlendTime=0.0000000 + } +}; + +var(animation) float DefaultBlendTime; +var(animation) array ChildBlendTimes; +var(animation) array SpecificChildBlendTimes; + +// Export UTgAnimNodeBlendList::execGetBlendTime(FFrame&, void* const) +native function float GetBlendTime(int ChildIndex); + +defaultproperties +{ + DefaultBlendTime=0.2500000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendList_EquipScreen.uc b/exported/TgGame/Classes/TgAnimNodeBlendList_EquipScreen.uc new file mode 100755 index 00000000..9bb1a627 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendList_EquipScreen.uc @@ -0,0 +1,34 @@ +class TgAnimNodeBlendList_EquipScreen extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EEquipScreenAnimTypes +{ + ESAT_Default, // 0 + ESAT_Weapon, // 1 + ESAT_Helmet, // 2 + ESAT_Backpack, // 3 + ESAT_Suit, // 4 + ESAT_MAX // 5 +}; + +// Export UTgAnimNodeBlendList_EquipScreen::execPlayWeaponReaction(FFrame&, void* const) +native function PlayWeaponReaction(); + +// Export UTgAnimNodeBlendList_EquipScreen::execPlayHelmetReaction(FFrame&, void* const) +native function PlayHelmetReaction(); + +// Export UTgAnimNodeBlendList_EquipScreen::execPlaySuitReaction(FFrame&, void* const) +native function PlaySuitReaction(); + +// Export UTgAnimNodeBlendList_EquipScreen::execPlayBackpackReaction(FFrame&, void* const) +native function PlayBackpackReaction(); + +// Export UTgAnimNodeBlendList_EquipScreen::execPlayIdleAnim(FFrame&, void* const) +native function PlayIdleAnim(); + +defaultproperties +{ + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendNPC.uc b/exported/TgGame/Classes/TgAnimNodeBlendNPC.uc new file mode 100755 index 00000000..b7a5b90b --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendNPC.uc @@ -0,0 +1,168 @@ +class TgAnimNodeBlendNPC extends TgAnimNodeBlendList + hidecategories(Object,Object,Object,Object); + +enum NPCAnimationStates +{ + NPCAS_NoCustomerPresent, // 0 + NPCAS_CustomerPresent, // 1 + NPCAS_Greeting, // 2 + NPCAS_NoSale, // 3 + NPCAS_CallOut, // 4 + NPCAS_Sale, // 5 + NPCAS_TransCustomerPresentToNotPresent,// 6 + NPCAS_None, // 7 + NPCAS_MAX // 8 +}; + +var() float m_NoCustomerPresentBlendInTime; +var() float m_CustomerPresentBlendInTime; +var() float m_GreetingBlendInTime; +var() float m_NoSaleBlendInTime; +var() float m_CallOutBlendInTime; +var() float m_SaleBlendInTime; +var() float m_TransCustomerPresentToNotPresentBlendInTime; +var() array m_UninterruptibleAnims; +var TgAnimNodeBlendNPC.NPCAnimationStates m_QueuedChild; +var float m_QueuedBlendTime; +var name m_CurrentAnimPlaying; + +function bool IsAnUninterruptableAnim(name AnimName) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x54 [Loop If] + if(I < m_UninterruptibleAnims.Length) + { + // End:0x46 + if(m_UninterruptibleAnims[I] == AnimName) + { + return true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +function QueueActiveChild(TgAnimNodeBlendNPC.NPCAnimationStates QueuedChild, float BlendTime) +{ + m_QueuedChild = QueuedChild; + m_QueuedBlendTime = BlendTime; + //return; +} + +function PlayNoCustomerPresentAnimation() +{ + // End:0x12 + if(ActiveChildIndex == 6) + { + return; + } + // End:0x39 + if(ActiveChildIndex == 1) + { + SetActiveChild(6, m_TransCustomerPresentToNotPresentBlendInTime); + } + else + { + SetActiveChild(0, m_NoCustomerPresentBlendInTime); + } + //return; +} + +function PlayGreetingAnimation() +{ + // End:0x40 + if((ActiveChildIndex == 4) && IsAnUninterruptableAnim(m_CurrentAnimPlaying)) + { + QueueActiveChild(2, m_GreetingBlendInTime); + } + else + { + SetActiveChild(2, m_GreetingBlendInTime); + } + //return; +} + +function PlayCustomerPresentAnimation() +{ + SetActiveChild(1, m_CustomerPresentBlendInTime); + //return; +} + +function PlayCallOutAnimation() +{ + SetActiveChild(4, m_CallOutBlendInTime); + //return; +} + +function PlayNoSaleAnimation() +{ + SetActiveChild(3, m_NoSaleBlendInTime); + //return; +} + +function PlaySaleAnimation() +{ + SetActiveChild(5, m_SaleBlendInTime); + //return; +} + +simulated event OnChildAnimEnd(AnimationEndInformation Information) +{ + local AnimNodeSequence Child; + + Child = AnimNodeSequence(Information.TreeBranchToLeaf[Information.TreeBranchToLeaf.Length - 1]); + // End:0x153 + if(Child.NodeTotalWeight > 0.0000000) + { + // End:0xE3 + if((int(m_QueuedChild) != int(7)) && IsAnUninterruptableAnim(Child.AnimSeqName)) + { + SetActiveChild(int(m_QueuedChild), m_QueuedBlendTime); + m_QueuedChild = 7; + } + // End:0x10A + if(ActiveChildIndex == 6) + { + SetActiveChild(0, m_NoCustomerPresentBlendInTime); + } + else + { + // End:0x127 + if(ActiveChildIndex == 4) + { + PlayNoCustomerPresentAnimation(); + } + else + { + // End:0x153 + if((ActiveChildIndex == 3) || ActiveChildIndex == 5) + { + PlayCustomerPresentAnimation(); + } + } + } + } + //return; +} + +defaultproperties +{ + m_NoCustomerPresentBlendInTime=0.4000000 + m_CustomerPresentBlendInTime=0.4000000 + m_GreetingBlendInTime=0.4000000 + m_NoSaleBlendInTime=0.4000000 + m_CallOutBlendInTime=0.4000000 + m_SaleBlendInTime=0.4000000 + m_TransCustomerPresentToNotPresentBlendInTime=0.4000000 + m_QueuedChild=NPCAnimationStates.NPCAS_None + bPlayActiveChild=true + Children=/* Array type was not detected. */ + NodeName="NPCBlend" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeBlendPerBone_Bakasura_ConsumeMinion.uc b/exported/TgGame/Classes/TgAnimNodeBlendPerBone_Bakasura_ConsumeMinion.uc new file mode 100755 index 00000000..a1f36a8b --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeBlendPerBone_Bakasura_ConsumeMinion.uc @@ -0,0 +1,2 @@ +class TgAnimNodeBlendPerBone_Bakasura_ConsumeMinion extends AnimNodeBlendPerBone + hidecategories(Object,Object,Object,Object); diff --git a/exported/TgGame/Classes/TgAnimNodeChannelFire.uc b/exported/TgGame/Classes/TgAnimNodeChannelFire.uc new file mode 100755 index 00000000..1b8e9e38 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeChannelFire.uc @@ -0,0 +1,30 @@ +class TgAnimNodeChannelFire extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() TgObject.TG_EQUIP_POINT m_EquipPoint; +var() bool m_bResetOnRelevant; +var() bool m_bCheckAnimSeqForAnim; +var transient bool m_bDoneChanneling; + +// Export UTgAnimNodeChannelFire::execEndChannel(FFrame&, void* const) +native function EndChannel(); + +// Export UTgAnimNodeChannelFire::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); + +// Export UTgAnimNodeChannelFire::execShouldSetActiveChild(FFrame&, void* const) +native function bool ShouldSetActiveChild(AnimNode pAnimNode); + +simulated function SetLockedBase(bool bLocked) +{ + //return; +} + +defaultproperties +{ + m_EquipPoint=TG_EQUIP_POINT.EQP_AUTO + m_bDoneChanneling=true + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeChannelFire_Pounce.uc b/exported/TgGame/Classes/TgAnimNodeChannelFire_Pounce.uc new file mode 100755 index 00000000..df11ec64 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeChannelFire_Pounce.uc @@ -0,0 +1,17 @@ +class TgAnimNodeChannelFire_Pounce extends TgAnimNodeChannelFire + native(ChampBlades) + hidecategories(Object,Object,Object,Object); + +var bool m_bPounceHitSuccessful; + +// Export UTgAnimNodeChannelFire_Pounce::execEndChannel(FFrame&, void* const) +native function EndChannel(); + +// Export UTgAnimNodeChannelFire_Pounce::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); + +defaultproperties +{ + m_EquipPoint=TG_EQUIP_POINT.EQP_ALT_FIRE + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeChannelFire_Spite.uc b/exported/TgGame/Classes/TgAnimNodeChannelFire_Spite.uc new file mode 100755 index 00000000..10821ae7 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeChannelFire_Spite.uc @@ -0,0 +1,20 @@ +class TgAnimNodeChannelFire_Spite extends TgAnimNodeChannelFire + native(ChampDarklord) + hidecategories(Object,Object,Object,Object); + +var TgDevice_Spite.SpiteAnimState m_eAnimState; + +// Export UTgAnimNodeChannelFire_Spite::execEndChannel(FFrame&, void* const) +native function EndChannel(); + +// Export UTgAnimNodeChannelFire_Spite::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); + +// Export UTgAnimNodeChannelFire_Spite::execSetAnimState(FFrame&, void* const) +native function SetAnimState(TgDevice_Spite.SpiteAnimState animState); + +defaultproperties +{ + m_EquipPoint=TG_EQUIP_POINT.EQP_OFFHAND_1 + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeEmoteCustomAnim.uc b/exported/TgGame/Classes/TgAnimNodeEmoteCustomAnim.uc new file mode 100755 index 00000000..dc348428 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeEmoteCustomAnim.uc @@ -0,0 +1,12 @@ +class TgAnimNodeEmoteCustomAnim extends AnimNodePlayCustomAnim + native(Anim) + hidecategories(Object,Object,Object,Object); + +var bool c_bIsInHandDeviceMeshInvisible; +var bool c_bHasReachedFullWeight; + +defaultproperties +{ + NodeName="EmoteCustomAnim" + m_LabelColor=(R=255,G=100,B=0,A=255) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeEmoteSequence.uc b/exported/TgGame/Classes/TgAnimNodeEmoteSequence.uc new file mode 100755 index 00000000..309cadc1 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeEmoteSequence.uc @@ -0,0 +1,17 @@ +class TgAnimNodeEmoteSequence extends AnimNodeSequenceBlendBase + native(Anim) + hidecategories(Object,Object,Object); + +var TgPawn.EEmote ActiveEmote; +var() float BlendSpeed; +var bool InterpWeights; + +// Export UTgAnimNodeEmoteSequence::execSetActiveEmote(FFrame&, void* const) +native function bool SetActiveEmote(name FullBody, name Moving, TgPawn.EEmote Emote, optional bool bResetSynchGroup = true); + +defaultproperties +{ + BlendSpeed=4.0000000 + Anims=/* Array type was not detected. */ + m_bIgnoreBlendBySpeedScaling=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeEmoteSwitch.uc b/exported/TgGame/Classes/TgAnimNodeEmoteSwitch.uc new file mode 100755 index 00000000..b2770100 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeEmoteSwitch.uc @@ -0,0 +1,24 @@ +class TgAnimNodeEmoteSwitch extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +function PlayEmote(TgPawn.EEmote Emote) +{ + // End:0x81 + if(bRelevant) + { + // End:0x81 + if((int(Emote) < Children.Length) && Children[int(Emote)].Anim != none) + { + SetActiveChild(int(Emote), GetBlendTime(int(Emote))); + } + } + //return; +} + +defaultproperties +{ + bPlayActiveChild=true + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeFidget.uc b/exported/TgGame/Classes/TgAnimNodeFidget.uc new file mode 100755 index 00000000..bfc833a5 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeFidget.uc @@ -0,0 +1,32 @@ +class TgAnimNodeFidget extends AnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum EFidgetType +{ + FT_Timed, // 0 + FT_ChanceOnIdleCompletes, // 1 + FT_MAX // 2 +}; + +var transient float m_SelectedIdleTimeBeforeFidgeting; +var transient float m_CurrentIdleTime; +var() float BlendToFidgetDuration; +var() float BlendFromFidgetDuration; +var() TgAnimNodeFidget.EFidgetType FidgetType; +var(TimedFidget) float MinimumIdleTimeBeforeFidgeting; +var(TimedFidget) float MaximumIdleTimeBeforeFidgeting; +var(TimedFidget) bool AllowIdleAnimToComplete; +var(ChanceFidget) float ChanceToFidgetWhenIdleCompletes; + +defaultproperties +{ + BlendToFidgetDuration=0.2000000 + BlendFromFidgetDuration=0.2000000 + MinimumIdleTimeBeforeFidgeting=5.0000000 + MaximumIdleTimeBeforeFidgeting=5.0000000 + AllowIdleAnimToComplete=true + ChanceToFidgetWhenIdleCompletes=1.0000000 + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeFitToDuration.uc b/exported/TgGame/Classes/TgAnimNodeFitToDuration.uc new file mode 100755 index 00000000..014f92f3 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeFitToDuration.uc @@ -0,0 +1,24 @@ +class TgAnimNodeFitToDuration extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object); + +var() protected float Duration; +var float OverrideDuration; +var() bool bAllowIncreasedPlayRate; +var() bool bAllowDecreasedPlayRate; +var() bool bClampDuration; +var() bool m_bScaleByReload; +var() float ClampedMinDuration; +var() float ClampedMaxDuration; +var() TgObject.TG_EQUIP_POINT m_EquipPoint; +var() float m_fDurationMultiplier; + +defaultproperties +{ + Duration=1.0000000 + bAllowIncreasedPlayRate=true + m_EquipPoint=TG_EQUIP_POINT.EQP_AUTO + m_fDurationMultiplier=1.0000000 + Children=/* Array type was not detected. */ + NodeName="FitToDuration" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeJumpLeanOffset.uc b/exported/TgGame/Classes/TgAnimNodeJumpLeanOffset.uc new file mode 100755 index 00000000..4de78e2d --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeJumpLeanOffset.uc @@ -0,0 +1,22 @@ +class TgAnimNodeJumpLeanOffset extends AnimNodeAimOffset + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() float JumpLeanStrength; +var() float MaxLeanChangeSpeed; +var() bool bMultiplyByZVelocity; +var AnimNodeAimOffset CachedAimNode; +var name OldAimProfileName; +var Vector2D PreBlendAim; +var float LeanWeight; +var float LeanWeightTarget; +var float BlendTimeToGo; + +// Export UTgAnimNodeJumpLeanOffset::execSetLeanWeight(FFrame&, void* const) +native final function SetLeanWeight(float WeightTarget, float BlendTime); + +defaultproperties +{ + LeanWeight=1.0000000 + LeanWeightTarget=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeLockableChannelFire.uc b/exported/TgGame/Classes/TgAnimNodeLockableChannelFire.uc new file mode 100755 index 00000000..27a44223 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeLockableChannelFire.uc @@ -0,0 +1,24 @@ +class TgAnimNodeLockableChannelFire extends TgAnimNodeChannelFire + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() bool m_bPlayStartOnLock; +var() bool m_bPlayStartOnUnlock; +var() bool m_bPlayStartAfterLockLost; +var transient bool m_bLocked; + +// Export UTgAnimNodeLockableChannelFire::execSetLocked(FFrame&, void* const) +native function SetLocked(bool bLocked); + +simulated function SetLockedBase(bool bLocked) +{ + SetLocked(bLocked); + //return; +} + +defaultproperties +{ + m_bPlayStartOnLock=true + m_bPlayStartOnUnlock=true + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeLog.uc b/exported/TgGame/Classes/TgAnimNodeLog.uc new file mode 100755 index 00000000..c8f02bcd --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeLog.uc @@ -0,0 +1,8 @@ +class TgAnimNodeLog extends AnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +defaultproperties +{ + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeMountSync.uc b/exported/TgGame/Classes/TgAnimNodeMountSync.uc new file mode 100755 index 00000000..c3a23a6a --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeMountSync.uc @@ -0,0 +1,14 @@ +class TgAnimNodeMountSync extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object); + +var TgPawn m_TgP; +var() array m_nmSyncGroupNames; + +defaultproperties +{ + m_nmSyncGroupNames[0]="MountRun" + m_nmSyncGroupNames[1]="MountIdle" + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodePlayFireAnim.uc b/exported/TgGame/Classes/TgAnimNodePlayFireAnim.uc new file mode 100755 index 00000000..4fcef5b0 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodePlayFireAnim.uc @@ -0,0 +1,15 @@ +class TgAnimNodePlayFireAnim extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() name FireAnimNodeName; +var transient AnimNodeSequence FireAnimNodeSequence; + +// Export UTgAnimNodePlayFireAnim::execPlayFireAnim(FFrame&, void* const) +native function PlayFireAnim(optional name FireName = 'Fire'); + +defaultproperties +{ + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodePlayTgCameraAnim.uc b/exported/TgGame/Classes/TgAnimNodePlayTgCameraAnim.uc new file mode 100755 index 00000000..39ac4932 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodePlayTgCameraAnim.uc @@ -0,0 +1,12 @@ +class TgAnimNodePlayTgCameraAnim extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object); + +var() TgCameraShake m_CameraShake; +var TgPawn m_TgPawn; + +defaultproperties +{ + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeRandom.uc b/exported/TgGame/Classes/TgAnimNodeRandom.uc new file mode 100755 index 00000000..3e1fd476 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeRandom.uc @@ -0,0 +1,51 @@ +class TgAnimNodeRandom extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native TgRandomAnimInfo +{ + var() float Chance; + var() byte LoopCountMin; + var() byte LoopCountMax; + var() float BlendInTime; + var() bool bCanRepeat; + var byte LoopCount; + var() bool bCallOnAnimEndOnParent; + var() bool m_bChooseNewNodeOnAnimEnd; + var() Vector2D m_ChildActiveTime; + + structdefaultproperties + { + Chance=1.0000000 + LoopCountMin=0 + LoopCountMax=1 + BlendInTime=0.1000000 + bCanRepeat=false + LoopCount=0 + bCallOnAnimEndOnParent=true + m_bChooseNewNodeOnAnimEnd=true + m_ChildActiveTime=(X=2.0000000,Y=5.0000000) + } +}; + +var() int m_iDefaultChildIndex; +var() bool m_bConsiderRelevancy; +var(Master) bool m_bMasterOtherNodes; +var transient bool m_bIsASlave; +var(Time) bool m_bEnableTimer; +var(Time) bool m_TimeAllChildren; +var(Master) array m_SlaveNames; +var transient array m_Slaves; +var(Time) int m_nPrimaryChild; +var(Time) Vector2D m_TimeRange; +var float m_fRemainingTime; +var() editfixedsize editinline array RandomInfo; + +defaultproperties +{ + m_iDefaultChildIndex=-1 + m_bConsiderRelevancy=true + m_TimeRange=(X=5.0000000,Y=10.0000000) + ActiveChildIndex=-1 + bPlayActiveChild=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeSelfDestruct.uc b/exported/TgGame/Classes/TgAnimNodeSelfDestruct.uc new file mode 100755 index 00000000..bfc3afac --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeSelfDestruct.uc @@ -0,0 +1,17 @@ +class TgAnimNodeSelfDestruct extends TgAnimNodeSequence + native(Anim) + hidecategories(Object,Object,Object); + +var(SelfDestruct) int NumberOfLoopsBeforeDestruct; +var int LoopsCompleted; +var(ScaleOut) array ScaleOutSkelControlNames; +var(ScaleOut) float TimeRemaingForScaleOut; +var transient array ScaleOutSkelControls; +var transient array ScaleOutStartScales; +var transient float ScaleOutStartTime; + +defaultproperties +{ + NumberOfLoopsBeforeDestruct=1 + ScaleOutStartTime=-1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeSequence.uc b/exported/TgGame/Classes/TgAnimNodeSequence.uc new file mode 100755 index 00000000..96359dd0 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeSequence.uc @@ -0,0 +1,15 @@ +class TgAnimNodeSequence extends AnimNodeSequence + native(Anim) + hidecategories(Object,Object,Object); + +var() bool bAutoPlay; +var bool bResetOnActivate; +var() bool HasDynamicLength; +var() bool EnableFootControlsOnCease; +var(Group) bool SynchronizeGroupOnReplay; +var() bool bRandomStartPosition; +var() float ChainedSequenceDuration; +var(DisplayGroup) name m_nmDisplayGroup; + +// Export UTgAnimNodeSequence::execPlayAnim(FFrame&, void* const) +native function PlayAnim(optional bool bLoop = false, optional float InRate = 1.0000000, optional float StartTime = 0.0000000); diff --git a/exported/TgGame/Classes/TgAnimNodeSequenceByBoneRotation.uc b/exported/TgGame/Classes/TgAnimNodeSequenceByBoneRotation.uc new file mode 100755 index 00000000..5da9da6c --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeSequenceByBoneRotation.uc @@ -0,0 +1,68 @@ +class TgAnimNodeSequenceByBoneRotation extends AnimNodeSequence + hidecategories(Object,Object,Object); + +struct AnimByRotation +{ + var() Rotator DesiredRotation; + var() name AnimName; + + structdefaultproperties + { + DesiredRotation=(Pitch=0,Yaw=0,Roll=0) + AnimName="None" + } +}; + +var() name BoneName; +var() Object.EAxis BoneAxis; +var() array AnimList; + +event OnBecomeRelevant() +{ + local Vector BoneDirection; + local int I; + local float Diff, BestDiff; + local name BestAnim; + + // End:0x27 + if(SkelComponent.Owner == none) + { + } + else + { + // End:0x54 + if((int(BoneAxis) == int(0)) || int(BoneAxis) == int(3)) + { + } + else + { + BoneDirection = SkelComponent.GetBoneAxis(BoneName, BoneAxis) >> SkelComponent.Owner.Rotation; + BestDiff = -1.0000000; + I = 0; + J0xDF: + + // End:0x19C [Loop If] + if(I < AnimList.Length) + { + Diff = BoneDirection Dot Vector(AnimList[I].DesiredRotation); + // End:0x18E + if(Diff > BestDiff) + { + BestAnim = AnimList[I].AnimName; + BestDiff = Diff; + } + I++; + // [Loop Continue] + goto J0xDF; + } + SetAnim(BestAnim); + SetPosition(0.0000000, false); + } + } + //return; +} + +defaultproperties +{ + BoneAxis=EAxis.AXIS_X +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeSequence_ZhongKui_Exorcism.uc b/exported/TgGame/Classes/TgAnimNodeSequence_ZhongKui_Exorcism.uc new file mode 100755 index 00000000..38871232 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeSequence_ZhongKui_Exorcism.uc @@ -0,0 +1,2 @@ +class TgAnimNodeSequence_ZhongKui_Exorcism extends TgAnimNodeSequence + hidecategories(Object,Object,Object); diff --git a/exported/TgGame/Classes/TgAnimNodeSimpleTransitioner.uc b/exported/TgGame/Classes/TgAnimNodeSimpleTransitioner.uc new file mode 100755 index 00000000..f6b722ff --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeSimpleTransitioner.uc @@ -0,0 +1,34 @@ +class TgAnimNodeSimpleTransitioner extends AnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var(ConfigureFromDevice) int m_nDeviceId; +var(ConfigureFromDevice) bool m_bConfigureBasedOnDevice; +var() bool m_bIgnoreFireMode; +var() int m_nNumberOfStances; +var() name m_StanceBaseName; +var() name m_TransitionBaseName; +var() float m_BlendTransitionDuration; + +// Export UTgAnimNodeSimpleTransitioner::execPlayAnim(FFrame&, void* const) +native function PlayAnim(optional bool bLoop = false, optional float InRate = 1.0000000, optional float StartTime = 0.0000000); + +// Export UTgAnimNodeSimpleTransitioner::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); + +// Export UTgAnimNodeSimpleTransitioner::execSetStance(FFrame&, void* const) +native function bool SetStance(int nStance, optional bool bNoBlend); + +// Export UTgAnimNodeSimpleTransitioner::execFire(FFrame&, void* const) +native function bool Fire(int nMode); + +defaultproperties +{ + m_bIgnoreFireMode=true + m_nNumberOfStances=1 + m_StanceBaseName="Stance" + m_TransitionBaseName="Fire" + m_BlendTransitionDuration=0.5000000 + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeSlot.uc b/exported/TgGame/Classes/TgAnimNodeSlot.uc new file mode 100755 index 00000000..111cb09e --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeSlot.uc @@ -0,0 +1,54 @@ +class TgAnimNodeSlot extends AnimNodeSlot + native(Anim) + hidecategories(Object,Object,Object,Object); + +var transient TgPawn m_TgPawn; +var transient bool m_bBlendOutIfVelocityIsGreaterThanZero; +var transient bool m_bIsTransitionAnim; +var() bool m_bNotifyActorOnChildAnimEnd; +var(Hacking) name m_nmHackingTransitionAnimName; +var(Hacking) name m_nmHackingLoopingAnimName; +var(AFK) name m_nmAFKTransitionAnimName; +var(AFK) name m_nmAFKLoopingAnimName; +var transient name m_nmQueuedAnim; + +// Export UTgAnimNodeSlot::execPlayLoopingCustomAnimWithTransition(FFrame&, void* const) +native function float PlayLoopingCustomAnimWithTransition(name TransitionAnimName, name LoopingAnimName, float Rate, optional float BlendInTime, optional float BlendOutTime); + +function SetPlayRate(float fPlayRate) +{ + local AnimNodeSequence SeqNode; + + // End:0x2B + if((CustomChildIndex < 1) || CustomChildIndex >= Children.Length) + { + return; + } + SeqNode = AnimNodeSequence(Children[CustomChildIndex].Anim); + // End:0x9B + if(SeqNode != none) + { + SeqNode.Rate = fPlayRate; + } + //return; +} + +// Export UTgAnimNodeSlot::execPlayAFK(FFrame&, void* const) +native function PlayAFK(); + +// Export UTgAnimNodeSlot::execStopAFK(FFrame&, void* const) +native function StopAFK(); + +// Export UTgAnimNodeSlot::execPlayHacking(FFrame&, void* const) +native function PlayHacking(); + +// Export UTgAnimNodeSlot::execStopHacking(FFrame&, void* const) +native function StopHacking(); + +// Export UTgAnimNodeSlot::execStopCustomAnim(FFrame&, void* const) +native function StopCustomAnim(float BlendOutTime); + +defaultproperties +{ + m_bNotifyActorOnChildAnimEnd=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeStance.uc b/exported/TgGame/Classes/TgAnimNodeStance.uc new file mode 100755 index 00000000..72aded2e --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeStance.uc @@ -0,0 +1,11 @@ +class TgAnimNodeStance extends AnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() int m_Stance; + +defaultproperties +{ + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeStanceDualFire.uc b/exported/TgGame/Classes/TgAnimNodeStanceDualFire.uc new file mode 100755 index 00000000..77bd88fa --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeStanceDualFire.uc @@ -0,0 +1,14 @@ +class TgAnimNodeStanceDualFire extends TgAnimNodeStanceTransitionerSynchronized + native(Anim) + hidecategories(Object,Object,Object,Object); + +var bool m_bFireParityDirty; +var int m_nDesiredStance; + +// Export UTgAnimNodeStanceDualFire::execChangeStance(FFrame&, void* const) +native function ChangeStance(int Stance, optional bool bAutoSync = true, optional bool bForceUpdate = false); + +defaultproperties +{ + StanceResetTime=0.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeStanceFireIntercept.uc b/exported/TgGame/Classes/TgAnimNodeStanceFireIntercept.uc new file mode 100755 index 00000000..0b77709f --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeStanceFireIntercept.uc @@ -0,0 +1,18 @@ +class TgAnimNodeStanceFireIntercept extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() int m_nStanceToAllow; +var int m_nCurrentStance; + +// Export UTgAnimNodeStanceFireIntercept::execPlayAnim(FFrame&, void* const) +native function PlayAnim(optional bool bLoop = false, optional float Rate = 1.0000000, optional float StartTime = 0.0000000); + +// Export UTgAnimNodeStanceFireIntercept::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); + +defaultproperties +{ + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeStanceTransition.uc b/exported/TgGame/Classes/TgAnimNodeStanceTransition.uc new file mode 100755 index 00000000..af2175a0 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeStanceTransition.uc @@ -0,0 +1,12 @@ +class TgAnimNodeStanceTransition extends AnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() int m_SourceStance; +var() int m_DestinationStance; + +defaultproperties +{ + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeStanceTransitioner.uc b/exported/TgGame/Classes/TgAnimNodeStanceTransitioner.uc new file mode 100755 index 00000000..be2f8ca3 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeStanceTransitioner.uc @@ -0,0 +1,75 @@ +class TgAnimNodeStanceTransitioner extends AnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native CachedTgAnimNodeStanceInfo +{ + var int Index; + var TgAnimNodeStance Node; + + structdefaultproperties + { + Index=0 + Node=none + } +}; + +struct native CachedTgAnimNodeStanceTransitionInfo +{ + var int Index; + var TgAnimNodeStanceTransition Node; + + structdefaultproperties + { + Index=0 + Node=none + } +}; + +var() int m_DefaultStance; +var() int m_CurrentStance; +var bool m_bIsPlayingTransition; +var() float m_BlendTransitionDuration; +var array m_StanceNodeInfos; +var array m_TransitionNodeInfos; + +event int GetCurrentStance() +{ + return m_CurrentStance; + //return ReturnValue; +} + +event GetStances(out array Stances) +{ + local CachedTgAnimNodeStanceInfo Stance; + + // End:0x56 + foreach m_StanceNodeInfos(Stance) + { + Stances.AddItem(Stance.Node.m_Stance); + } + //return; +} + +// Export UTgAnimNodeStanceTransitioner::execPlayAnim(FFrame&, void* const) +native function PlayAnim(optional bool bLoop = false, optional float InRate = 1.0000000, optional float StartTime = 0.0000000); + +// Export UTgAnimNodeStanceTransitioner::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); + +// Export UTgAnimNodeStanceTransitioner::execSetStance(FFrame&, void* const) +native function bool SetStance(int Stance); + +// Export UTgAnimNodeStanceTransitioner::execGetTransitionableStances(FFrame&, void* const) +native function GetTransitionableStances(int SourceStance, out array DestinationStances); + +// Export UTgAnimNodeStanceTransitioner::execTransitionToStance(FFrame&, void* const) +native function bool TransitionToStance(int DestinationStance); + +// Export UTgAnimNodeStanceTransitioner::execBlendToStance(FFrame&, void* const) +native function bool BlendToStance(int DestinationStance); + +defaultproperties +{ + m_BlendTransitionDuration=0.1000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeStanceTransitionerSynchronized.uc b/exported/TgGame/Classes/TgAnimNodeStanceTransitionerSynchronized.uc new file mode 100755 index 00000000..a929a0d7 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeStanceTransitionerSynchronized.uc @@ -0,0 +1,37 @@ +class TgAnimNodeStanceTransitionerSynchronized extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +struct native StanceTransitionParam +{ + var() int FromChild; + var() int ToChild; + + structdefaultproperties + { + FromChild=0 + ToChild=0 + } +}; + +var() float StanceResetTime; +var() bool CanResetStanceOnTick; +var bool m_bDelayingChildSwitch; +var int m_nCurrentStance; +var float m_fTimestampToSwitchStance; +var() array StanceTransitionControl; + +// Export UTgAnimNodeStanceTransitionerSynchronized::execChangeStance(FFrame&, void* const) +native function ChangeStance(int Stance, optional bool bAutoSync = true, optional bool bForceUpdate = false); + +// Export UTgAnimNodeStanceTransitionerSynchronized::execPlayAnim(FFrame&, void* const) +native function PlayAnim(optional bool bLoop = false, optional float Rate = 1.0000000, optional float StartTime = 0.0000000); + +// Export UTgAnimNodeStanceTransitionerSynchronized::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); + +defaultproperties +{ + StanceResetTime=3.0000000 + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeTargeting.uc b/exported/TgGame/Classes/TgAnimNodeTargeting.uc new file mode 100755 index 00000000..2df3168d --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeTargeting.uc @@ -0,0 +1,24 @@ +class TgAnimNodeTargeting extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() TgObject.TG_EQUIP_POINT m_EquipPoint; +var() bool m_bResetOnRelevant; +var transient bool m_bDoneTargeting; + +// Export UTgAnimNodeTargeting::execInterruptTargeting(FFrame&, void* const) +native function InterruptTargeting(); + +// Export UTgAnimNodeTargeting::execEndTargeting(FFrame&, void* const) +native function EndTargeting(); + +// Export UTgAnimNodeTargeting::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); + +defaultproperties +{ + m_EquipPoint=TG_EQUIP_POINT.EQP_OFFHAND_3 + m_bDoneTargeting=true + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeTiltTowardsVelocity.uc b/exported/TgGame/Classes/TgAnimNodeTiltTowardsVelocity.uc new file mode 100755 index 00000000..283b4142 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeTiltTowardsVelocity.uc @@ -0,0 +1,16 @@ +class TgAnimNodeTiltTowardsVelocity extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object); + +var() Vector2D m_MaximumVelocity; +var transient int m_PitchOffset; +var() int m_MaximumPitchOffset; +var transient int m_RollOffset; +var() int m_MaximumRollOffset; +var transient TgPawn m_Pawn; + +defaultproperties +{ + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeToggleWithTransition.uc b/exported/TgGame/Classes/TgAnimNodeToggleWithTransition.uc new file mode 100755 index 00000000..b953a685 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeToggleWithTransition.uc @@ -0,0 +1,98 @@ +class TgAnimNodeToggleWithTransition extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var float m_fTransitionStartTime; +var float m_fTransitionTimeRemaining; + +function StartTransition(float transitionPercent, float totalTransitionTime, bool transitionToActive) +{ + local WorldInfo World; + local AnimNodeSequence AnimNodeSeq; + local AnimSequence AnimSeq; + + // End:0x1E7 + if(transitionToActive) + { + // End:0x1D0 + if((Children[2].Anim != none) && totalTransitionTime > float(0)) + { + SetActiveChild(2, GetBlendTime(2)); + AnimNodeSeq = AnimNodeSequence(Children[2].Anim); + // End:0x1A8 + if(AnimNodeSeq != none) + { + // End:0xFF + if(AnimNodeSeq.AnimSeq == none) + { + AnimNodeSeq.SetAnim(AnimNodeSeq.AnimSeqName); + } + AnimSeq = AnimNodeSeq.AnimSeq; + // End:0x1A8 + if(AnimSeq != none) + { + AnimNodeSeq.PlayAnim(false, AnimSeq.SequenceLength / totalTransitionTime, transitionPercent * AnimSeq.SequenceLength); + } + } + m_fTransitionTimeRemaining = (1.0000000 - transitionPercent) * totalTransitionTime; + } + else + { + SetActiveChild(1, totalTransitionTime); + } + } + else + { + // End:0x3AA + if((Children[3].Anim != none) && totalTransitionTime > float(0)) + { + SetActiveChild(3, GetBlendTime(3)); + AnimNodeSeq = AnimNodeSequence(Children[3].Anim); + // End:0x389 + if(AnimNodeSeq != none) + { + // End:0x2D9 + if(AnimNodeSeq.AnimSeq == none) + { + AnimNodeSeq.SetAnim(AnimNodeSeq.AnimSeqName); + } + AnimSeq = AnimNodeSeq.AnimSeq; + // End:0x389 + if(AnimSeq != none) + { + AnimNodeSeq.PlayAnim(false, AnimSeq.SequenceLength / totalTransitionTime, (1.0000000 - transitionPercent) * AnimSeq.SequenceLength); + } + } + m_fTransitionTimeRemaining = transitionPercent * totalTransitionTime; + } + else + { + SetActiveChild(0, totalTransitionTime); + } + } + World = Class'Engine.WorldInfo'.static.GetWorldInfo(); + m_fTransitionStartTime = World.TimeSeconds; + //return; +} + +function SetToggleState(bool IsActive) +{ + m_fTransitionTimeRemaining = 0.0000000; + // End:0x35 + if(IsActive) + { + SetActiveChild(1, GetBlendTime(1)); + } + else + { + SetActiveChild(0, GetBlendTime(0)); + } + //return; +} + +defaultproperties +{ + TargetWeight=/* Array type was not detected. */ + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeToggleWithTransition_Disengage.uc b/exported/TgGame/Classes/TgAnimNodeToggleWithTransition_Disengage.uc new file mode 100755 index 00000000..96a970f8 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeToggleWithTransition_Disengage.uc @@ -0,0 +1,21 @@ +class TgAnimNodeToggleWithTransition_Disengage extends TgAnimNodeToggleWithTransition + native(Anim) + hidecategories(Object,Object,Object,Object); + +var int m_nPendingChildIndex; +var bool m_bForceNewActiveChild; + +// Export UTgAnimNodeToggleWithTransition_Disengage::execSetActiveChild(FFrame&, void* const) +native function SetActiveChild(int ChildIndex, float BlendTime); + +// Export UTgAnimNodeToggleWithTransition_Disengage::execPlayAnim(FFrame&, void* const) +native function PlayAnim(optional bool bLoop = false, optional float Rate = 1.0000000, optional float StartTime = 0.0000000); + +// Export UTgAnimNodeToggleWithTransition_Disengage::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); + +defaultproperties +{ + TargetWeight=/* Array type was not detected. */ + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNodeTriggerCameraAnim.uc b/exported/TgGame/Classes/TgAnimNodeTriggerCameraAnim.uc new file mode 100755 index 00000000..38f0ac7d --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNodeTriggerCameraAnim.uc @@ -0,0 +1,37 @@ +class TgAnimNodeTriggerCameraAnim extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object); + +var() CameraAnim CameraAnim; +var() float fBlendInTime; +var() float fBlendOutTime; +var() bool bLoopAnimation; +var() bool bBlendInOnBecomeRelevant; +var() bool bBlendInOnReplayAnim; +var() bool bBlendOutOnStopFire; +var() bool bPlayAnimInLocalSpace; +var() TgObject.TG_EQUIP_POINT m_StopFireEquipSlotTarget; +var CameraAnimInst CameraAnimInst; + +// Export UTgAnimNodeTriggerCameraAnim::execStartCameraAnim(FFrame&, void* const) +native function StartCameraAnim(); + +// Export UTgAnimNodeTriggerCameraAnim::execEndCameraAnim(FFrame&, void* const) +native function EndCameraAnim(); + +// Export UTgAnimNodeTriggerCameraAnim::execReplayAnim(FFrame&, void* const) +native function ReplayAnim(); + +// Export UTgAnimNodeTriggerCameraAnim::execOnDeviceStopFire(FFrame&, void* const) +native function OnDeviceStopFire(TgObject.TG_EQUIP_POINT eqp); + +defaultproperties +{ + fBlendInTime=0.1000000 + fBlendOutTime=0.1000000 + bBlendInOnBecomeRelevant=true + bBlendInOnReplayAnim=true + bPlayAnimInLocalSpace=true + Children=/* Array type was not detected. */ + NodeName="TriggerCameraAnim" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNotifySkinData.uc b/exported/TgGame/Classes/TgAnimNotifySkinData.uc new file mode 100755 index 00000000..c84db88d --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotifySkinData.uc @@ -0,0 +1,8 @@ +class TgAnimNotifySkinData extends Object + native(Anim); + +var init string OwningNotify; +var SoundCue SoundCueTemplate; +var ParticleSystem ParticleSystemTemplate; +var int nSkinId; +var int nSkinLevel; diff --git a/exported/TgGame/Classes/TgAnimNotify_AkEvent.uc b/exported/TgGame/Classes/TgAnimNotify_AkEvent.uc new file mode 100755 index 00000000..6b1b3fc2 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_AkEvent.uc @@ -0,0 +1,22 @@ +class TgAnimNotify_AkEvent extends AnimNotify_AkEvent + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +struct native PSE_SkinAk +{ + var() int nSkinId; + var() AkEvent AkEvent; + + structdefaultproperties + { + nSkinId=0 + AkEvent=none + } +}; + +var() array m_SkinOverrideList; + +// Export UTgAnimNotify_AkEvent::execGetAkEventToPlay(FFrame&, void* const) +native function AkEvent GetAkEventToPlay(SkeletalMeshComponent skel); diff --git a/exported/TgGame/Classes/TgAnimNotify_ApplyRigidBodyPhysics.uc b/exported/TgGame/Classes/TgAnimNotify_ApplyRigidBodyPhysics.uc new file mode 100755 index 00000000..74b3c9dc --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_ApplyRigidBodyPhysics.uc @@ -0,0 +1,18 @@ +class TgAnimNotify_ApplyRigidBodyPhysics extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() bool ShouldAttachToBone; +var() name BoneName; +var() Vector ImpulseLocation; +var() float ImpulseRadius; +var() float ImpulseStrength; + +defaultproperties +{ + ImpulseRadius=100.0000000 + ImpulseStrength=100.0000000 + ShouldDeferIssue=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNotify_AudioGroup.uc b/exported/TgGame/Classes/TgAnimNotify_AudioGroup.uc new file mode 100755 index 00000000..3e2acf47 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_AudioGroup.uc @@ -0,0 +1,16 @@ +class TgAnimNotify_AudioGroup extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +enum TG_MESH_SOURCE +{ + TG_MESH_SOURCE_PAWN, // 0 + TG_MESH_SOURCE_IN_HAND_DEVICE, // 1 + TG_MESH_SOURCE_MAX // 2 +}; + +var() SoundCue c_PreviewSound; +var() name c_SoundCueName; +var() TgAnimNotify_AudioGroup.TG_MESH_SOURCE c_eMeshSource; diff --git a/exported/TgGame/Classes/TgAnimNotify_CameraCut.uc b/exported/TgGame/Classes/TgAnimNotify_CameraCut.uc new file mode 100755 index 00000000..bc73f3bb --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_CameraCut.uc @@ -0,0 +1,13 @@ +class TgAnimNotify_CameraCut extends AnimNotify + native + editinlinenew + collapsecategories + hidecategories(Object); + +var() float m_fTweenSpeed; +var() Vector m_vTweenDir; +var() Vector m_vLocationOffset; +var() Rotator m_rRotationOffset; +var() Rotator m_rRotationTarget; +var() float m_fRotationDuration; +var() float m_fRotationDelay; diff --git a/exported/TgGame/Classes/TgAnimNotify_Disappear.uc b/exported/TgGame/Classes/TgAnimNotify_Disappear.uc new file mode 100755 index 00000000..f42b1638 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_Disappear.uc @@ -0,0 +1,5 @@ +class TgAnimNotify_Disappear extends AnimNotify + native + editinlinenew + collapsecategories + hidecategories(Object); diff --git a/exported/TgGame/Classes/TgAnimNotify_Footstep.uc b/exported/TgGame/Classes/TgAnimNotify_Footstep.uc new file mode 100755 index 00000000..0d77bfbe --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_Footstep.uc @@ -0,0 +1,5 @@ +class TgAnimNotify_Footstep extends AnimNotify_Footstep + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); diff --git a/exported/TgGame/Classes/TgAnimNotify_InterpolateMorphTargetWeight.uc b/exported/TgGame/Classes/TgAnimNotify_InterpolateMorphTargetWeight.uc new file mode 100755 index 00000000..3eb0b05c --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_InterpolateMorphTargetWeight.uc @@ -0,0 +1,65 @@ +class TgAnimNotify_InterpolateMorphTargetWeight extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +enum InterruptMorphTargetBehavior +{ + ResetToInitial, // 0 + ResetToValue, // 1 + RestToTarget, // 2 + InterruptMorphTargetBehavior_MAX// 3 +}; + +var() name MorphNodePoseName; +var() float MorphTargetWeight; +var() TgAnimNotify_InterpolateMorphTargetWeight.InterruptMorphTargetBehavior OnInterruptBehavior; +var() float InterruptMorphTargetWeight; +var transient float InitialMorphTargetWeight; + +simulated event OnAnimNodeSequenceCeaseRelevant(AnimNodeSequence OwningNode) +{ + local MorphNodePose MorphNode; + + // End:0x13A + if((OwningNode != none) && OwningNode.SkelComponent != none) + { + MorphNode = MorphNodePose(OwningNode.SkelComponent.FindMorphNode(MorphNodePoseName)); + // End:0x13A + if(MorphNode != none) + { + switch(OnInterruptBehavior) + { + // End:0xD7 + case 0: + MorphNode.Weight = InitialMorphTargetWeight; + // End:0x13A + break; + // End:0x107 + case 1: + MorphNode.Weight = InterruptMorphTargetWeight; + // End:0x13A + break; + // End:0x137 + case 2: + MorphNode.Weight = MorphTargetWeight; + // End:0x13A + break; + // End:0xFFFF + default: + break; + } + } + else + { + }/* !MISMATCHING REMOVE, tried If got Type:Else Position:0x13A! */ + //return; + }/* !MISMATCHING REMOVE, tried Else got Type:If Position:0x000! */ +} + +defaultproperties +{ + MorphTargetWeight=1.0000000 + OnInterruptBehavior=InterruptMorphTargetBehavior.ResetToValue +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNotify_PlayParticleEffect_Skinned.uc b/exported/TgGame/Classes/TgAnimNotify_PlayParticleEffect_Skinned.uc new file mode 100755 index 00000000..9f6229cb --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_PlayParticleEffect_Skinned.uc @@ -0,0 +1,31 @@ +class TgAnimNotify_PlayParticleEffect_Skinned extends AnimNotify_PlayParticleEffect + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +struct native PPE_Skin +{ + var() int nSkinId; + var() ParticleSystem PSTemplate; + + structdefaultproperties + { + nSkinId=0 + PSTemplate=none + } +}; + +var() array m_SkinOverrideList; +var() bool m_bApplyTeamColor; + +// Export UTgAnimNotify_PlayParticleEffect_Skinned::execGetParticleSystemToPlay(FFrame&, void* const) +native function ParticleSystem GetParticleSystemToPlay(SkeletalMeshComponent skel); + +// Export UTgAnimNotify_PlayParticleEffect_Skinned::execGetParticleChannels(FFrame&, void* const) +native function ParticleChannelContainer GetParticleChannels(SkeletalMeshComponent skel); + +defaultproperties +{ + m_bApplyTeamColor=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNotify_PlayPetAnim.uc b/exported/TgGame/Classes/TgAnimNotify_PlayPetAnim.uc new file mode 100755 index 00000000..90519ce0 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_PlayPetAnim.uc @@ -0,0 +1,7 @@ +class TgAnimNotify_PlayPetAnim extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() name m_ChildSeqName; diff --git a/exported/TgGame/Classes/TgAnimNotify_Sound.uc b/exported/TgGame/Classes/TgAnimNotify_Sound.uc new file mode 100755 index 00000000..9019c207 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_Sound.uc @@ -0,0 +1,22 @@ +class TgAnimNotify_Sound extends AnimNotify_Sound + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +struct native PSE_Skin +{ + var() int nSkinId; + var() SoundCue SoundCue; + + structdefaultproperties + { + nSkinId=0 + SoundCue=none + } +}; + +var() array m_SkinOverrideList; + +// Export UTgAnimNotify_Sound::execGetSoundCueToPlay(FFrame&, void* const) +native function SoundCue GetSoundCueToPlay(SkeletalMeshComponent skel); diff --git a/exported/TgGame/Classes/TgAnimNotify_SpectatorSlomo.uc b/exported/TgGame/Classes/TgAnimNotify_SpectatorSlomo.uc new file mode 100755 index 00000000..0e3a3059 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_SpectatorSlomo.uc @@ -0,0 +1,5 @@ +class TgAnimNotify_SpectatorSlomo extends AnimNotify + native + editinlinenew + collapsecategories + hidecategories(Object); diff --git a/exported/TgGame/Classes/TgAnimNotify_SwapToInhandWeaponMesh.uc b/exported/TgGame/Classes/TgAnimNotify_SwapToInhandWeaponMesh.uc new file mode 100755 index 00000000..8a9ccfbf --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_SwapToInhandWeaponMesh.uc @@ -0,0 +1,5 @@ +class TgAnimNotify_SwapToInhandWeaponMesh extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); diff --git a/exported/TgGame/Classes/TgAnimNotify_ToggleInvisibleWall.uc b/exported/TgGame/Classes/TgAnimNotify_ToggleInvisibleWall.uc new file mode 100755 index 00000000..4649ab6d --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_ToggleInvisibleWall.uc @@ -0,0 +1,64 @@ +class TgAnimNotify_ToggleInvisibleWall extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() bool TurnWallOn; +var() bool TurnOffOnCeaseRelevant; +var() int WallIndex; +var() Vector WallPosition; +var() Vector WallNormal; +var const name WallEnableBaseName; +var const name WallPositionBaseName; +var const name WallNormalBaseName; + +simulated event OnAnimNodeSequenceCeaseRelevant(AnimNodeSequence OwningNode) +{ + local int I; + local MaterialInstanceConstant MIC; + local name WallEnableName; + + // End:0x1E8 + if((TurnWallOn && TurnOffOnCeaseRelevant) && OwningNode != none) + { + // End:0x1E8 + if(OwningNode.SkelComponent != none) + { + WallEnableName = name(string(WallEnableBaseName) $ string(WallIndex)); + I = 0; + J0x80: + + // End:0x1E8 [Loop If] + if(I < OwningNode.SkelComponent.GetNumElements()) + { + MIC = MaterialInstanceConstant(OwningNode.SkelComponent.GetMaterial(I)); + // End:0x14E + if(MIC != none) + { + MIC.SetScalarParameterValue(WallEnableName, 0.0000000); + } + MIC = MaterialInstanceConstant(OwningNode.SkelComponent.GetDefaultMaterial(I)); + // End:0x1DA + if(MIC != none) + { + MIC.SetScalarParameterValue(WallEnableName, 0.0000000); + } + I++; + // [Loop Continue] + goto J0x80; + } + } + } + //return; +} + +defaultproperties +{ + TurnWallOn=true + TurnOffOnCeaseRelevant=true + WallNormal=(X=0.0000000,Y=0.0000000,Z=1.0000000) + WallEnableBaseName="WallEnable" + WallPositionBaseName="WallPosition" + WallNormalBaseName="WallNormal" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNotify_ToggleRigidBodies.uc b/exported/TgGame/Classes/TgAnimNotify_ToggleRigidBodies.uc new file mode 100755 index 00000000..abdca823 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_ToggleRigidBodies.uc @@ -0,0 +1,36 @@ +class TgAnimNotify_ToggleRigidBodies extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +enum ERigidBodyFixationChange +{ + RBF_Fix, // 0 + RBF_Unfix, // 1 + RBF_Toggle, // 2 + RBF_MAX // 3 +}; + +var() array BoneNames; +var() TgAnimNotify_ToggleRigidBodies.ERigidBodyFixationChange Effect; + +simulated event OnAnimNodeSequenceCeaseRelevant(AnimNodeSequence OwningNode) +{ + local bool ShouldFix; + + ShouldFix = !int(Effect) == int(0); + OwningNode.SkelComponent.PhysicsAssetInstance.SetNamedBodiesFixed(ShouldFix, BoneNames, OwningNode.SkelComponent); + super.OnAnimNodeSequenceCeaseRelevant(OwningNode); + //return; +} + +simulated event OnAnimNodeSequenceBecomeRelevant(AnimNodeSequence OwningNode) +{ + local bool ShouldFix; + + ShouldFix = int(Effect) == int(0); + OwningNode.SkelComponent.PhysicsAssetInstance.SetNamedBodiesFixed(ShouldFix, BoneNames, OwningNode.SkelComponent); + super.OnAnimNodeSequenceBecomeRelevant(OwningNode); + //return; +} diff --git a/exported/TgGame/Classes/TgAnimNotify_ToggleSocketSpecialFX.uc b/exported/TgGame/Classes/TgAnimNotify_ToggleSocketSpecialFX.uc new file mode 100755 index 00000000..e59bd725 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_ToggleSocketSpecialFX.uc @@ -0,0 +1,14 @@ +class TgAnimNotify_ToggleSocketSpecialFX extends AnimNotify + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var() name m_DisplayGroupName; +var() int m_EquipSlot; +var() bool m_bActivateFxGroup; + +defaultproperties +{ + m_bActivateFxGroup=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimNotify_ViewShake.uc b/exported/TgGame/Classes/TgAnimNotify_ViewShake.uc new file mode 100755 index 00000000..61a859bc --- /dev/null +++ b/exported/TgGame/Classes/TgAnimNotify_ViewShake.uc @@ -0,0 +1,82 @@ +class TgAnimNotify_ViewShake extends AnimNotify_ViewShake + native(Anim) + editinlinenew + collapsecategories + hidecategories(Object); + +var private editconst float m_fShakeRadius; +var private editconst float m_fDuration; +var private editconst float m_fAmplitude; +var() bool m_bUseLocationRadiusBasedShake; + +simulated function Clear1pCameraAnim() +{ + local TgPlayerController LocalTgPC; + + LocalTgPC = Class'TgGame.TgObject'.static.ScriptGetLocalTGPlayerController(); + // End:0x60 + if(LocalTgPC != none) + { + LocalTgPC.ClientStopCameraShake(ShakeParams); + } + //return; +} + +event Notify(Actor Owner, AnimNodeSequence AnimSeqInstigator) +{ + local TgWeaponMeshActor WeaponMesh; + local TgPlayerController localPC; + local TgPawn LocalTgP; + local float fOldPlayRate; + local bool bIsFirstPerson; + + // End:0x238 + if(!m_bUseLocationRadiusBasedShake) + { + WeaponMesh = TgWeaponMeshActor(Owner); + // End:0x8C + if(WeaponMesh != none) + { + bIsFirstPerson = WeaponMesh.IsFirstPerson(); + Owner = WeaponMesh.Owner; + } + // End:0x235 + if((Owner != none) && (WeaponMesh == none) || bIsFirstPerson) + { + localPC = TgPlayerController(Owner.GetALocalPlayerController()); + // End:0x235 + if(localPC != none) + { + LocalTgP = localPC.GetTgPawn(); + // End:0x235 + if(LocalTgP == Owner) + { + fOldPlayRate = ShakeParams.AnimPlayRate; + ShakeParams.AnimPlayRate *= AnimSeqInstigator.Rate; + localPC.ClientPlayCameraShake(ShakeParams); + ShakeParams.AnimPlayRate = fOldPlayRate; + // End:0x233 + if(bIsFirstPerson) + { + LocalTgP.RegisterFor3pTransitionCB(Clear1pCameraAnim); + } + return; + } + } + } + } + else + { + super.Notify(Owner, AnimSeqInstigator); + } + //return; +} + +defaultproperties +{ + m_fShakeRadius=4096.0000000 + m_fDuration=1.0000000 + Duration=0.0000000 + LocAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000) + ShakeRadius=0.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimSequenceChain.uc b/exported/TgGame/Classes/TgAnimSequenceChain.uc new file mode 100755 index 00000000..b1370aff --- /dev/null +++ b/exported/TgGame/Classes/TgAnimSequenceChain.uc @@ -0,0 +1,20 @@ +class TgAnimSequenceChain extends TgAnimNodeBlendList + native(Anim) + hidecategories(Object,Object,Object,Object); + +var() bool m_bLoopChain; +var() bool m_bResetOnRelevant; +var() bool m_bDelayBlendOutToPlayAnim; +var() bool m_bAdvanceOnReplay; +var() bool m_bAdvanceOnAnimEnd; +var bool m_bIsAllowedToBlendOut; +var bool m_ReplayedThisFrame; + +defaultproperties +{ + m_bAdvanceOnReplay=true + m_bAdvanceOnAnimEnd=true + m_bIsAllowedToBlendOut=true + DefaultBlendTime=0.2000000 + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimTurnInPlace.uc b/exported/TgGame/Classes/TgAnimTurnInPlace.uc new file mode 100755 index 00000000..e1bfdf17 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimTurnInPlace.uc @@ -0,0 +1,80 @@ +class TgAnimTurnInPlace extends AnimNodeBlend + native(Anim) + hidecategories(Object,Object,Object,Object); + +enum ForcedTransitionAngle +{ + FTA_NONE, // 0 + FTA_90, // 1 + FTA_180, // 2 + FTA_MAX // 3 +}; + +struct native RotTransitionInfo +{ + var() float RotationOffset; + var() name TransName; + + structdefaultproperties + { + RotationOffset=0.0000000 + TransName="None" + } +}; + +var const transient bool bInitialized; +var const transient bool bRootRotInitialized; +var() bool m_bDisableRotation; +var() bool bDelayBlendOutToPlayAnim; +var const bool bPlayingTurnTransition; +var(ChooseNewTransition) bool m_bCanChooseNewTransition; +var(Interpolation) bool m_bOverrideInterpolationTime; +var() bool m_bMirrorOffsetWhenPawnMirrored; +var() bool m_bAlwaysUpdateYawOffset; +var(IgnoreTransitionAnimations) bool m_bIgnoreTransitionAnimations; +var(IgnoreTransitionAnimations) bool m_bOnlyUpdateRotationWhenMoving; +var(TurnTowardsVelocity) bool m_bTurnTowardsVelocity; +var(TurnTowardsVelocity) bool m_bUsePawnRotationAtZeroVelocity; +var(TurnTowardsVelocity) bool m_bUse180ShortestRoute; +var(TurnTowardsVelocity) bool m_bConstrictIdleYawOffset; +var() bool m_bDisableAllTurning; +var bool m_bJustBecameRelevant; +var const transient int LastPawnYaw; +var const transient int LastPawnPitch; +var const transient float PawnRotationRate; +var const transient int LastRootBoneYaw; +var() const transient int YawOffset; +var() const transient int PitchOffset; +var const transient float RelativeOffset; +var const transient TgPawn m_TgPawn; +var array OffsetNodes2; +var() array RotTransitions; +var() float TransitionBlendTime; +var const int CurrentTransitionIndex; +var() float TransitionThresholdAngle; +var(ChooseNewTransition) TgAnimTurnInPlace.ForcedTransitionAngle m_ForcedTransitionAngle; +var(ChooseNewTransition) float m_fChooseNewTransitionPercent; +var(Interpolation) float m_fInterpolationTime; +var float m_RemainingInterpolationTime; +var array PlayerNodes; +var(IgnoreTransitionAnimations) float m_fIgnoredTransitionTime; +var(TurnTowardsVelocity) float m_fTurnInterpTime; +var Rotator m_InterpRotation; + +// Export UTgAnimTurnInPlace::execOverrideYawOffset(FFrame&, void* const) +native function OverrideYawOffset(float Value); + +defaultproperties +{ + m_bCanChooseNewTransition=true + m_bJustBecameRelevant=true + RotTransitions[0]=(RotationOffset=16384.0000000,TransName="Rt_90") + RotTransitions[1]=(RotationOffset=32768.0000000,TransName="Rt_180") + RotTransitions[2]=(RotationOffset=-16384.0000000,TransName="Lt_90") + RotTransitions[3]=(RotationOffset=-32768.0000000,TransName="Lt_180") + TransitionBlendTime=0.1000000 + TransitionThresholdAngle=4096.0000000 + m_fChooseNewTransitionPercent=0.5000000 + m_fIgnoredTransitionTime=2.0000000 + Children=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimTurnInPlace_Player.uc b/exported/TgGame/Classes/TgAnimTurnInPlace_Player.uc new file mode 100755 index 00000000..8f9f9a28 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimTurnInPlace_Player.uc @@ -0,0 +1,26 @@ +class TgAnimTurnInPlace_Player extends AnimNodeSequence + native(Anim) + hidecategories(Object,Object,Object); + +struct native TIP_Transition +{ + var name TransName; + var() name AnimName; + + structdefaultproperties + { + TransName="None" + AnimName="None" + } +}; + +var() array TIP_Transitions; + +defaultproperties +{ + TIP_Transitions[0]=(TransName="Rt_90",AnimName="TurnR90") + TIP_Transitions[1]=(TransName="Rt_180",AnimName="TurnR180") + TIP_Transitions[2]=(TransName="Lt_90",AnimName="TurnL90") + TIP_Transitions[3]=(TransName="Lt_180",AnimName="TurnL180") + RootRotationOption[2]=ERootRotationOption.RRO_Discard +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAnimTurnInPlace_Rotator.uc b/exported/TgGame/Classes/TgAnimTurnInPlace_Rotator.uc new file mode 100755 index 00000000..0e3a4f80 --- /dev/null +++ b/exported/TgGame/Classes/TgAnimTurnInPlace_Rotator.uc @@ -0,0 +1,12 @@ +class TgAnimTurnInPlace_Rotator extends AnimNodeBlendBase + native(Anim) + hidecategories(Object,Object,Object); + +var const array c_TurnInPlaceNodes; +var TgPawn m_TgPawn; + +defaultproperties +{ + Children=/* Array type was not detected. */ + bFixNumChildren=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAssaultPoint.uc b/exported/TgGame/Classes/TgAssaultPoint.uc new file mode 100755 index 00000000..20f6fb20 --- /dev/null +++ b/exported/TgGame/Classes/TgAssaultPoint.uc @@ -0,0 +1,43 @@ +class TgAssaultPoint extends TgAIAnnotation + native(Navigation) + hidecategories(Navigation,Lighting,LightColor,Force); + +enum EAssaultType +{ + AssaultType_None, // 0 + AssaultType_Short, // 1 + AssaultType_MidShort, // 2 + AssaultType_Mid, // 3 + AssaultType_LongMid, // 4 + AssaultType_Long, // 5 + AssaultType_MAX // 6 +}; + +enum ELocationType +{ + ELocationType_CapturePoint, // 0 + ELocationType_Attack, // 1 + ELocationType_Defend, // 2 + ELocationType_MAX // 3 +}; + +var() TgAssaultPoint.EAssaultType AssaultPointType; +var() TgAssaultPoint.ELocationType LocationType; + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgAssaultPoint.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgAIAnnotation.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAudioComponent.uc b/exported/TgGame/Classes/TgAudioComponent.uc new file mode 100755 index 00000000..14410fa7 --- /dev/null +++ b/exported/TgGame/Classes/TgAudioComponent.uc @@ -0,0 +1,27 @@ +class TgAudioComponent extends AudioComponent + native(FX) + editinlinenew + collapsecategories + hidecategories(Object,ActorComponent); + +var bool m_bCanBeHeardDuringStealth; +var float m_fStealthFadeInTime; +var float m_fStealthFadeOutTime; +var float m_fStealthVolumeMultiplier; + +// Export UTgAudioComponent::execApplyAdditionalPriority(FFrame&, void* const) +native function ApplyAdditionalPriority(); + +event OcclusionChanged(bool bNowOccluded) +{ + VolumeMultiplier *= ((bNowOccluded) ? 0.5000000 : 2.0000000); + LastOcclusionCheckTime += 0.0001000; + //return; +} + +defaultproperties +{ + m_fStealthFadeInTime=0.2000000 + m_fStealthFadeOutTime=0.3000000 + m_fStealthVolumeMultiplier=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgAudioComponent_ModByVelocity.uc b/exported/TgGame/Classes/TgAudioComponent_ModByVelocity.uc new file mode 100755 index 00000000..9f1111a9 --- /dev/null +++ b/exported/TgGame/Classes/TgAudioComponent_ModByVelocity.uc @@ -0,0 +1,5 @@ +class TgAudioComponent_ModByVelocity extends TgAudioComponent + native(FX) + editinlinenew + collapsecategories + hidecategories(Object,ActorComponent); diff --git a/exported/TgGame/Classes/TgAudioOcclusionActor.uc b/exported/TgGame/Classes/TgAudioOcclusionActor.uc new file mode 100755 index 00000000..83054507 --- /dev/null +++ b/exported/TgGame/Classes/TgAudioOcclusionActor.uc @@ -0,0 +1,39 @@ +class TgAudioOcclusionActor extends Actor + native(Navigation) + notplaceable + hidecategories(Navigation) + implements(Interface_NavigationHandle); + +var private native const noexport Pointer VfTable_IInterface_NavigationHandle; +var Class m_NavigationHandleClass; +var NavigationHandle m_NavigationHandle; +var Vector NavMeshPath_SearchExtent_Modifier; +var transient float m_fCurrentMaxPathLength; + +event PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x31 + if(m_NavigationHandleClass != none) + { + m_NavigationHandle = new (self) m_NavigationHandleClass; + } + //return; +} + +// Export UTgAudioOcclusionActor::execCalcOcclusionAmount(FFrame&, void* const) +native function float CalcOcclusionAmount(Actor SourceActor); + +event NotifyPathChanged() +{ + //return; +} + +defaultproperties +{ + m_NavigationHandleClass=Class'TgGame.TgHavokNavigationHandleAudio' + bHidden=true + bTickIsDisabled=true + bHardAttach=true + bUpdateHavokPos=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgBattleCheatManager.uc b/exported/TgGame/Classes/TgBattleCheatManager.uc new file mode 100755 index 00000000..65a8d423 --- /dev/null +++ b/exported/TgGame/Classes/TgBattleCheatManager.uc @@ -0,0 +1,3101 @@ +class TgBattleCheatManager extends PComCheatManager within TgPlayerController + native + config(Game); + +var TgDemoRecSpectator_Debug m_DebugCameraController; +var array m_DebugPlayerStarts; + +// Export UTgBattleCheatManager::execSwitchClass(FFrame&, void* const) +native exec function SwitchClass(string godName, optional string skinName, optional string weaponSkinName, optional string headName); + +// Export UTgBattleCheatManager::execSwitchWard(FFrame&, void* const) +native exec function SwitchWard(optional string wardSkinName); + +// Export UTgBattleCheatManager::execPurchaseGod(FFrame&, void* const) +native exec function PurchaseGod(string godName); + +// Export UTgBattleCheatManager::execJoinMatchQueue(FFrame&, void* const) +native exec function JoinMatchQueue(int nQueueId, optional int god1, optional int god2, optional int god3, optional int god4, optional int god5); + +// Export UTgBattleCheatManager::execListTickableActors(FFrame&, void* const) +native exec function ListTickableActors(Object.ETickingGroup checkgroup); + +// Export UTgBattleCheatManager::execTestPanningRule(FFrame&, void* const) +native exec function TestPanningRule(optional string sPanningRule = "Headphone"); + +// Export UTgBattleCheatManager::execTestLanguage(FFrame&, void* const) +native exec function TestLanguage(string newLangExt); + +// Export UTgBattleCheatManager::execNativeMaxLevel(FFrame&, void* const) +native function NativeMaxLevel(); + +// Export UTgBattleCheatManager::execSpawnBotByName(FFrame&, void* const) +native function TgPawn SpawnBotByName(string botName, int Taskforce, int nCount, int BotDifficulty, string BehaviorTreeName, int nHeadId); + +// Export UTgBattleCheatManager::execSpawnBotAllSkins(FFrame&, void* const) +native function SpawnBotAllSkins(int nBatch); + +// Export UTgBattleCheatManager::execToggleLoadFailureOutput(FFrame&, void* const) +native exec function ToggleLoadFailureOutput(); + +// Export UTgBattleCheatManager::execSpawnDeployable(FFrame&, void* const) +native exec function SpawnDeployable(int dep_id); + +// Export UTgBattleCheatManager::execFillEnergy(FFrame&, void* const) +native exec function FillEnergy(); + +// Export UTgBattleCheatManager::execSetAILevel(FFrame&, void* const) +native function SetAILevel(TgAIController_BehaviorGod aic, int nLevel); + +exec function separator() +{ + //return; +} + +exec function sc(string godName, optional string skinName, optional string weaponSkinName, optional string headName) +{ + SwitchClass(godName, skinName, weaponSkinName, headName); + //return; +} + +exec function echo(string inputString) +{ + //return; +} + +exec function Loc() +{ + Outer.ClientMessage("Current Pawn Location:" @ string(Outer.Pawn.Location)); + //return; +} + +exec function ServerExec(string FSCommand) +{ + Outer.ConsoleCommand(FSCommand); + //return; +} + +exec function SpawnTestBot(string sName, optional string sDeviceName, optional int nFireMode = 0, optional int nTaskForce = 2, optional int nCount = 1) +{ + local TgPawn TgP; + local int nDeviceId; + + TgP = SpawnBotByName(sName, nTaskForce, nCount, 1, "BTs_ChaosPets.AI.BT_SimpleRepeater", 0); + RemoveDeviceFromPawnAt(TgP, 1); + // End:0xF3 + if((TgP != none) && sDeviceName != "") + { + nDeviceId = Outer.GetDeviceIdByName(sDeviceName); + EquipDeviceOnPawn(TgP, nDeviceId, 1, nFireMode); + } + //return; +} + +exec function SpawnEmoteTestBot(string sName, optional int nTaskForce = 2, optional int nCount = 1) +{ + SpawnBotByName(sName, nTaskForce, nCount, 1, "BTs_ChaosPets.AI.BT_SimpleRepeaterEmote", 0); + //return; +} + +exec function stb(string sName, optional string sDeviceName, optional int nFireMode = 0, optional int nTaskForce = 2, optional int nCount = 1) +{ + SpawnTestBot(sName, sDeviceName, nFireMode, nTaskForce, nCount); + //return; +} + +exec function _SpawnBot(string sName, optional int nTaskForce = 2, optional int nCount = 1) +{ + Outer.ConsoleCommand("precacheclass" @ sName); + SpawnBot(sName, nTaskForce, nCount); + //return; +} + +exec function SpawnBot(string sName, optional int nTaskForce = 2, optional int nCount = 1, optional int BotDifficulty = 1, optional string BehaviorTreeName, optional int nHeadId) +{ + SpawnBotByName(sName, nTaskForce, nCount, BotDifficulty, BehaviorTreeName, nHeadId); + //return; +} + +exec function TestSkinGallery(optional int nGallery = 0) +{ + SpawnBotAllSkins(nGallery); + //return; +} + +exec function MaxLevel() +{ + NativeMaxLevel(); + //return; +} + +exec function ML() +{ + MaxLevel(); + //return; +} + +exec function SimNWCondition(int nPktLoss, int nPktLag) +{ + Outer.SetNWCondition(nPktLoss, nPktLag); + //return; +} + +function CheatLog(string cheatText, bool bOn) +{ + Outer.ClientMessage(cheatText @ string(bOn)); + //return; +} + +simulated exec function God() +{ + super(CheatManager).God(); + CheatLog("God Mode", Outer.bGodMode); + //return; +} + +simulated exec function energy() +{ + local TgPawn TgPawn; + + TgPawn = TgPawn(Outer.Pawn); + // End:0xBC + if(TgPawn != none) + { + TgPawn.m_bCheatUseNoEnergy = !TgPawn.m_bCheatUseNoEnergy; + CheatLog("Unlimited Energy", TgPawn.m_bCheatUseNoEnergy); + } + //return; +} + +simulated exec function Cooldown() +{ + local TgPawn TgPawn; + local int I; + local TgDevice Dev; + + TgPawn = TgPawn(Outer.Pawn); + // End:0x163 + if(TgPawn != none) + { + TgPawn.m_bCheatNoRecharge = !TgPawn.m_bCheatNoRecharge; + // End:0x12C + if(TgPawn.m_bCheatNoRecharge) + { + I = 0; + J0xAE: + + // End:0x12C [Loop If] + if(I < 33) + { + Dev = TgPawn.GetDeviceByEqPoint(I); + // End:0x11E + if(Dev != none) + { + Dev.EndCooldown(); + } + I++; + // [Loop Continue] + goto J0xAE; + } + } + CheatLog("No Cooldowns", TgPawn.m_bCheatNoRecharge); + } + //return; +} + +simulated exec function ForceToggleMount() +{ + local TgPawn ActualPawn; + + ActualPawn = TgPawn(Outer.Pawn); + // End:0x61 + if(ActualPawn != none) + { + ActualPawn.AutoMount(false, true); + } + //return; +} + +exec function MaxPower() +{ + local TgPawn TgPawn; + local int I; + local TgDevice Dev; + + TgPawn = TgPawn(Outer.Pawn); + // End:0x156 + if(TgPawn != none) + { + I = 0; + J0x4B: + + // End:0x136 [Loop If] + if(I < 33) + { + Dev = TgPawn.GetDeviceByEqPoint(I); + // End:0x128 + if((Dev != none) && Dev.GetTotalDevicePoints() > 0) + { + J0xC3: + + // End:0x128 [Loop If] + if(Dev.GetAllocatedDevicePoints() < Dev.GetTotalDevicePoints()) + { + Dev.AllocateDevicePoint(); + // [Loop Continue] + goto J0xC3; + } + } + I++; + // [Loop Continue] + goto J0x4B; + } + CheatLog("Max Level Abilities", true); + } + //return; +} + +exec function HookMeUp() +{ + local TgPawn TgPawn; + local TgPawn_Character TgP; + + TgPawn = TgPawn(Outer.Pawn); + // End:0x161 + if(TgPawn != none) + { + // End:0x95 + if(!TgPawn.m_bCheatUseNoEnergy) + { + Outer.ConsoleCommand("Energy"); + } + // End:0xEC + if(!TgPawn.m_bCheatNoRecharge) + { + Outer.ConsoleCommand("Cooldown"); + } + Outer.ConsoleCommand("FillEnergy"); + TgPawn.SetProperty(2, TgPawn.GetMaxEnergy()); + } + TgP = TgPawn_Character(Outer.Pawn); + // End:0x1C2 + if(TgP != none) + { + TgP.s_bAmmoReloadCheat = true; + } + // End:0x214 + if(!Outer.bGodMode) + { + Outer.ConsoleCommand("God"); + } + Outer.ConsoleCommand("MaxLevel"); + Outer.ConsoleCommand("AddGold 100000"); + //return; +} + +exec function GiveRecommendedItems() +{ + local bool bOldCanPurchase, bOldAutoPurchase; + + bOldCanPurchase = Outer.r_bCanPurchaseItems; + bOldAutoPurchase = Outer.r_bAutoPurchase; + Outer.r_bCanPurchaseItems = true; + Outer.r_bAutoPurchase = true; + AddGold(100000); + Outer.AutoPurchase(); + Outer.r_bCanPurchaseItems = bOldCanPurchase; + Outer.r_bAutoPurchase = bOldAutoPurchase; + //return; +} + +exec function SetGroundspeed(float val) +{ + // End:0x8B + if(TgPawn(Outer.Pawn) != none) + { + TgPawn(Outer.Pawn).GroundSpeed = val; + CheatLog("Groundspeed", true); + } + //return; +} + +exec function SetStealth(bool bOn) +{ + // End:0x7F + if(TgPawn(Outer.Pawn) != none) + { + TgPawn(Outer.Pawn).ApplyStealthServer(((bOn) ? 3 : 0)); + } + //return; +} + +exec function ShowMoveErrors() +{ + Outer.FlushPersistentDebugLines(); + Outer.bShowMoveErrors = !Outer.bShowMoveErrors; + Outer.bDebugClientAdjustPosition = Outer.bShowMoveErrors; + //return; +} + +exec function DebugProjectileLagCompensationServer() +{ + Outer.FlushPersistentDebugLines(); + Outer.bDebugProjectileLagCompensation = !Outer.bDebugProjectileLagCompensation; + //return; +} + +exec function DebugProjectileLagCompensationClient() +{ + Outer.FlushPersistentDebugLines(); + Outer.bDebugProjectileLagCompensation = !Outer.bDebugProjectileLagCompensation; + //return; +} + +exec function _SpawnTemplatePlayer(int nProfileId, optional int nSkinId = 0, optional int nWeaponSkinId = 0, optional int nHeadSkinId = 0) +{ + TgGame(Outer.WorldInfo.Game).SpawnTemplatePlayer(Outer, nProfileId, nSkinId, nWeaponSkinId, nHeadSkinId); + //return; +} + +exec function KillAllMinions() +{ + KillAllPawnsHelper(Class'TgGame.TgPawn_LanePusherBase'); + //return; +} + +function KillAllPawnsHelper(Class PawnClass) +{ + local Pawn P; + + // End:0x6B + foreach Outer.WorldInfo.AllPawns(PawnClass, P) + { + P.Suicide(); + } + //return; +} + +exec function KillAllPawnsByClass(string PawnClassName) +{ + local Class PawnClass; + + PawnClass = Class(FindObject(PawnClassName, Class'Core.Class')); + // End:0x78 + if(PawnClass == none) + { + PawnClass = Class(FindObject("TgGame." $ PawnClassName, Class'Core.Class')); + } + // End:0xC8 + if(PawnClass == none) + { + PawnClass = Class(FindObject("TgGameContent." $ PawnClassName, Class'Core.Class')); + } + // End:0xEA + if(PawnClass != none) + { + KillAllPawnsHelper(PawnClass); + } + //return; +} + +simulated exec function ToggleDeviceLog(optional TgObject.TG_EQUIP_POINT eqp = 0) +{ + Outer.m_bDetailedDeviceLogging = !Outer.m_bDetailedDeviceLogging; + Outer.m_eDetailedDeviceEqp = eqp; + //return; +} + +simulated exec function ToggleCustomPhysics() +{ + // End:0x70 + if(int(Outer.Pawn.Physics) != int(14)) + { + Outer.Pawn.SetPhysics(14); + } + else + { + Outer.Pawn.SetPhysics(2); + } + //return; +} + +exec function ToggleAIDebug(optional bool bAttachAIDebugger = false) +{ + local TgPawn P; + local TgAIController_Behavior behavior_ai; + local editinline TgAIObstacleAvoidanceRenderingComponent MapRenderer; + local bool bFoundRenderer; + + P = TgPawn(Outer.m_aHoverActor); + // End:0x33B + if(P != none) + { + behavior_ai = TgAIController_Behavior(P.Controller); + // End:0x33B + if(behavior_ai != none) + { + P.r_bDebugShowAIDebug = !P.r_bDebugShowAIDebug; + behavior_ai.bBtDebugClientOverlay = P.r_bDebugShowAIDebug; + behavior_ai.UpdatePawnDebug(); + // End:0x150 + if(bAttachAIDebugger) + { + behavior_ai.SpawnDebuggerWindow(); + } + // End:0x255 + foreach behavior_ai.ComponentList(Class'TgGame.TgAIObstacleAvoidanceRenderingComponent', MapRenderer) + { + // End:0x254 + if(((MapRenderer != none) && MapRenderer.ObstacleAvoidance != none) && MapRenderer.ObstacleAvoidance == behavior_ai.ObstacleAvoidance) + { + bFoundRenderer = true; + // End:0x254 + if(!behavior_ai.bBtDebugClientOverlay) + { + behavior_ai.DetachComponent(MapRenderer); + } + } + } + // End:0x33B + if((!bFoundRenderer && behavior_ai.bBtDebugClientOverlay) && behavior_ai.ObstacleAvoidance != none) + { + MapRenderer = new (self) Class'TgGame.TgAIObstacleAvoidanceRenderingComponent'; + // End:0x33B + if(MapRenderer != none) + { + MapRenderer.ObstacleAvoidance = behavior_ai.ObstacleAvoidance; + Outer.AttachComponent(MapRenderer); + } + } + } + } + //return; +} + +exec function TestObstacleAvoidance(optional int TestType) +{ + local TgAIController_Behavior aic; + + // End:0xD0 + foreach Outer.WorldInfo.AllControllers(Class'TgGame.TgAIController_Behavior', aic) + { + // End:0xCF + if((aic.ObstacleAvoidance != none) && aic.bBtDebugClientOverlay) + { + aic.ObstacleAvoidance.TestObstacleAvoidance(TestType); + } + } + //return; +} + +exec function RequestRelease() +{ + Outer.Revive(); + //return; +} + +exec function botsgod(optional bool bOn = true) +{ + local AIController aic; + + // End:0x79 + foreach Outer.WorldInfo.AllControllers(Class'Engine.AIController', aic) + { + aic.bGodMode = bOn; + } + //return; +} + +exec function FreezeAI(optional bool bOn = true) +{ + local TgAIController aic; + + // End:0x79 + foreach Outer.WorldInfo.AllControllers(Class'TgGame.TgAIController', aic) + { + aic.bIsAIFrozen = bOn; + } + //return; +} + +exec function botslevel(int nLevel) +{ + local TgAIController_BehaviorGod aic; + + // End:0x66 + foreach Outer.WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', aic) + { + SetAILevel(aic, nLevel); + } + //return; +} + +simulated exec function SpectatorCamera(optional bool bOn = true) +{ + local TgCameraModule newCameraMod; + + // End:0x12B + if(int(Outer.Role) == int(ROLE_Authority)) + { + // End:0x60 + if(!bOn) + { + Outer.SwitchCamera(""); + return; + } + // End:0xA3 + if(Outer.PlayerCamera == none) + { + Outer.SpawnPlayerCamera(); + } + newCameraMod = TgPlayerCamera(Outer.PlayerCamera).SwitchCameras(Class'TgGame.TgCameraModule_Spectator'); + // End:0x12B + if(newCameraMod != none) + { + Outer.SwitchControl(Class'TgGame.TgControlModule_Spectator'); + } + } + // End:0x29F + if(int(Outer.WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x29F + if((TgPawn(Outer.Pawn) != none) && TgPawn(Outer.Pawn).r_EffectManager != none) + { + // End:0x22A + if(!bOn) + { + TgPawn(Outer.Pawn).ReapplyLoadoutEffects(); + } + else + { + TgPawn(Outer.Pawn).r_EffectManager.ApplyStasis(1, Outer.Pawn); + } + } + } + //return; +} + +exec function ApplyProp(int nPropId, float nValue, optional int nCategory = 0) +{ + local ImpactInfo Impact; + + Impact.bDirectHit = true; + Impact.DeviceModeReference = none; + Impact.HitActor = Outer.Pawn; + Impact.HitLocation = Outer.Pawn.Location; + Impact.HitNormal = vect(1.0000000, 0.0000000, 0.0000000); + Impact.StartTrace = Outer.Pawn.Location; + TgPawn(Outer.Pawn).r_EffectManager.ApplyProperty(nValue, nPropId, Outer.Pawn, Impact, nCategory); + //return; +} + +exec function BeTheBoss() +{ + HookMeUp(); + Outer.ConsoleCommand("setgroundspeed 5000"); + Outer.ConsoleCommand("sctimer 1"); + //return; +} + +exec event ShowFootstepInfo() +{ + Outer.c_bShowFootstepInfoDebug = !Outer.c_bShowFootstepInfoDebug; + //return; +} + +exec function ToggleAimAssist() +{ + TgPlayerInput(Outer.PlayerInput).bEnableAimAssist = !TgPlayerInput(Outer.PlayerInput).bEnableAimAssist; + Outer.ClientMessage("Aim Assist is:" @ ((TgPlayerInput(Outer.PlayerInput).ShouldUseAimAssist()) ? "ENABLED" : "DISABLED")); + //return; +} + +exec function SetAimAssistTargetWeightVars(float CurrentTargetBonus, float NotCurrentTargetPenalty, float MinAccuracyBonus, float MaxAccuracyBonus, float MinInaccuracyPenalty, float MaxInaccuracyPenalty, float MaxWeight) +{ + TgPlayerInput(Outer.PlayerInput).TargetWeightVars.CurrentTargetBonus = CurrentTargetBonus; + TgPlayerInput(Outer.PlayerInput).TargetWeightVars.NotCurrentTargetPenalty = NotCurrentTargetPenalty; + TgPlayerInput(Outer.PlayerInput).TargetWeightVars.MinAccuracyBonus = MinAccuracyBonus; + TgPlayerInput(Outer.PlayerInput).TargetWeightVars.MaxAccuracyBonus = MaxAccuracyBonus; + TgPlayerInput(Outer.PlayerInput).TargetWeightVars.MinInaccuracyPenalty = MinInaccuracyPenalty; + TgPlayerInput(Outer.PlayerInput).TargetWeightVars.MaxInaccuracyPenalty = MaxInaccuracyPenalty; + TgPlayerInput(Outer.PlayerInput).TargetWeightVars.MaxWeight = MaxWeight; + //return; +} + +exec function ResetAimAssistValues() +{ + SetAimAssistValues(Class'TgGame.TgDevice'.default.m_AimAssistMagnetScale.X, Class'TgGame.TgDevice'.default.m_AimAssistMagnetScale.Y, Class'TgGame.TgDevice'.default.m_AimAssistFrictionScale.X, Class'TgGame.TgDevice'.default.m_AimAssistFrictionScale.Y, Class'TgGame.TgDevice'.default.m_AimAssistTrackingScale.X, Class'TgGame.TgDevice'.default.m_AimAssistTrackingScale.Y); + SetAimVectorAssistValues(Class'TgGame.TgDevice'.default.m_AimVectorAssistMaxBoundsScale.X, Class'TgGame.TgDevice'.default.m_AimVectorAssistMaxBoundsScale.Y, Class'TgGame.TgDevice'.default.m_AimVectorAssistMaxAssistanceDegrees.X, Class'TgGame.TgDevice'.default.m_AimVectorAssistMaxAssistanceDegrees.Y); + //return; +} + +exec function SetAimAssistValues(float MagnetScaleX, float MagnetScaleY, float FrictionScaleX, float FrictionScaleY, float TrackingScaleX, float TrackingScaleY) +{ + local TgDevice TgDevice; + + // End:0x1E6 + foreach Outer.AllActors(Class'TgGame.TgDevice', TgDevice) + { + TgDevice.m_AimAssistMagnetScale.X = MagnetScaleX; + TgDevice.m_AimAssistMagnetScale.Y = MagnetScaleY; + TgDevice.m_AimAssistFrictionScale.X = FrictionScaleX; + TgDevice.m_AimAssistFrictionScale.Y = FrictionScaleY; + TgDevice.m_AimAssistTrackingScale.X = TrackingScaleX; + TgDevice.m_AimAssistTrackingScale.Y = TrackingScaleY; + TgDevice.ClientSetAimAssistValues(MagnetScaleX, MagnetScaleY, FrictionScaleX, FrictionScaleY, TrackingScaleX, TrackingScaleY); + } + //return; +} + +exec function SetAimVectorAssistValues(float BoundsScaleX, float BoundsScaleY, float MaxAngleX, float MaxAngleY) +{ + local TgDevice TgDevice; + + // End:0x15E + foreach Outer.AllActors(Class'TgGame.TgDevice', TgDevice) + { + TgDevice.m_AimVectorAssistMaxBoundsScale.X = BoundsScaleX; + TgDevice.m_AimVectorAssistMaxBoundsScale.Y = BoundsScaleY; + TgDevice.m_AimVectorAssistMaxAssistanceDegrees.X = MaxAngleX; + TgDevice.m_AimVectorAssistMaxAssistanceDegrees.Y = MaxAngleY; + TgDevice.ClientSetAimVectorAssistValues(BoundsScaleX, BoundsScaleY, MaxAngleX, MaxAngleY); + } + //return; +} + +exec function AddAimAssistKeyframe(string keyframeType, string KeyframeName, float Distance) +{ + local TgPawn TgP; + local TgDevice TgD; + local int I; + local AimAssistKeyframeData aadata; + + aadata.Distance = Distance; + aadata.KeyframeName = name(KeyframeName); + TgP = TgPawn(Outer.Pawn); + // End:0x6CC + if(TgP != none) + { + TgD = TgP.GetDeviceByEqPoint(1); + // End:0x6CC + if(TgD != none) + { + // End:0x1A2 + if(keyframeType == "hm") + { + I = 0; + J0xE4: + + // End:0x16B [Loop If] + if(I < TgD.m_AimAssistKeyframesMagnetHoriz.Length) + { + // End:0x15D + if(TgD.m_AimAssistKeyframesMagnetHoriz[I].Distance > Distance) + { + // [Explicit Break] + goto J0x16B; + } + I++; + // [Loop Continue] + goto J0xE4; + } + J0x16B: + + TgD.m_AimAssistKeyframesMagnetHoriz.InsertItem(I, aadata); + } + else + { + // End:0x27D + if(keyframeType == "vm") + { + I = 0; + J0x1BF: + + // End:0x246 [Loop If] + if(I < TgD.m_AimAssistKeyframesMagnetVert.Length) + { + // End:0x238 + if(TgD.m_AimAssistKeyframesMagnetVert[I].Distance > Distance) + { + // [Explicit Break] + goto J0x246; + } + I++; + // [Loop Continue] + goto J0x1BF; + } + J0x246: + + TgD.m_AimAssistKeyframesMagnetVert.InsertItem(I, aadata); + } + else + { + // End:0x357 + if(keyframeType == "f") + { + I = 0; + J0x299: + + // End:0x320 [Loop If] + if(I < TgD.m_AimAssistKeyframesFriction.Length) + { + // End:0x312 + if(TgD.m_AimAssistKeyframesFriction[I].Distance > Distance) + { + // [Explicit Break] + goto J0x320; + } + I++; + // [Loop Continue] + goto J0x299; + } + J0x320: + + TgD.m_AimAssistKeyframesFriction.InsertItem(I, aadata); + } + else + { + // End:0x435 + if(keyframeType == "htacc") + { + I = 0; + J0x377: + + // End:0x3FE [Loop If] + if(I < TgD.m_AimAssistKeyframesTrackingAccHoriz.Length) + { + // End:0x3F0 + if(TgD.m_AimAssistKeyframesTrackingAccHoriz[I].Distance > Distance) + { + // [Explicit Break] + goto J0x3FE; + } + I++; + // [Loop Continue] + goto J0x377; + } + J0x3FE: + + TgD.m_AimAssistKeyframesTrackingAccHoriz.InsertItem(I, aadata); + } + else + { + // End:0x513 + if(keyframeType == "htang") + { + I = 0; + J0x455: + + // End:0x4DC [Loop If] + if(I < TgD.m_AimAssistKeyframesTrackingAngleHoriz.Length) + { + // End:0x4CE + if(TgD.m_AimAssistKeyframesTrackingAngleHoriz[I].Distance > Distance) + { + // [Explicit Break] + goto J0x4DC; + } + I++; + // [Loop Continue] + goto J0x455; + } + J0x4DC: + + TgD.m_AimAssistKeyframesTrackingAngleHoriz.InsertItem(I, aadata); + } + else + { + // End:0x5F1 + if(keyframeType == "vtacc") + { + I = 0; + J0x533: + + // End:0x5BA [Loop If] + if(I < TgD.m_AimAssistKeyframesTrackingAccVert.Length) + { + // End:0x5AC + if(TgD.m_AimAssistKeyframesTrackingAccVert[I].Distance > Distance) + { + // [Explicit Break] + goto J0x5BA; + } + I++; + // [Loop Continue] + goto J0x533; + } + J0x5BA: + + TgD.m_AimAssistKeyframesTrackingAccVert.InsertItem(I, aadata); + } + else + { + // End:0x6CC + if(keyframeType == "vtang") + { + I = 0; + J0x611: + + // End:0x698 [Loop If] + if(I < TgD.m_AimAssistKeyframesTrackingAngleVert.Length) + { + // End:0x68A + if(TgD.m_AimAssistKeyframesTrackingAngleVert[I].Distance > Distance) + { + // [Explicit Break] + goto J0x698; + } + I++; + // [Loop Continue] + goto J0x611; + } + J0x698: + + TgD.m_AimAssistKeyframesTrackingAngleVert.InsertItem(I, aadata); + } + } + } + } + } + } + } + } + } + //return; +} + +exec function ResetAimAssistKeyframes(string keyframeType) +{ + local TgPawn TgP; + local TgDevice TgD; + + TgP = TgPawn(Outer.Pawn); + // End:0x1FB + if(TgP != none) + { + TgD = TgP.GetDeviceByEqPoint(1); + // End:0x1FB + if(TgD != none) + { + // End:0xAF + if(keyframeType == "hm") + { + TgD.m_AimAssistKeyframesMagnetHoriz.Length = 0; + } + else + { + // End:0xE5 + if(keyframeType == "vm") + { + TgD.m_AimAssistKeyframesMagnetVert.Length = 0; + } + else + { + // End:0x11A + if(keyframeType == "f") + { + TgD.m_AimAssistKeyframesFriction.Length = 0; + } + else + { + // End:0x153 + if(keyframeType == "htacc") + { + TgD.m_AimAssistKeyframesTrackingAccHoriz.Length = 0; + } + else + { + // End:0x18C + if(keyframeType == "htang") + { + TgD.m_AimAssistKeyframesTrackingAngleHoriz.Length = 0; + } + else + { + // End:0x1C5 + if(keyframeType == "vtacc") + { + TgD.m_AimAssistKeyframesTrackingAccVert.Length = 0; + } + else + { + // End:0x1FB + if(keyframeType == "vtang") + { + TgD.m_AimAssistKeyframesTrackingAngleVert.Length = 0; + } + } + } + } + } + } + } + } + } + //return; +} + +exec function RefillAmmo() +{ + local TgInventoryManager InvMgr; + local TgPawn TgP; + local int I; + local TgDevice Dev; + + TgP = TgPawn(Outer.Pawn); + // End:0x16D + if(TgP != none) + { + InvMgr = TgInventoryManager(TgP.InvManager); + // End:0x16D + if(InvMgr != none) + { + I = 0; + J0x8B: + + // End:0x16D [Loop If] + if(I < 33) + { + Dev = TgP.GetDeviceByEqPoint(I); + // End:0x15F + if((Dev != none) && Dev.r_nMaxAmmoClipCount > 0) + { + Dev.SetAmmo(Dev.r_nMaxAmmoClipCount, Dev.r_nMaxAmmoClipCount); + } + I++; + // [Loop Continue] + goto J0x8B; + } + } + } + //return; +} + +exec function SetMaxAmmo(int MaxAmmo) +{ + local TgPawn TgP; + local TgDevice TgD; + + TgP = TgPawn(Outer.Pawn); + // End:0xAC + if(TgP != none) + { + TgD = TgP.GetDeviceByEqPoint(1); + // End:0xAC + if(TgD != none) + { + TgD.SetAmmo(MaxAmmo, MaxAmmo); + } + } + //return; +} + +exec function ChangeTaskForce(byte nTaskForce) +{ + // End:0x78 + if((Outer.CachedPRI != none) && int(nTaskForce) >= int(0)) + { + Outer.CachedPRI.SetTaskForceNumber(nTaskForce); + } + //return; +} + +exec function ct(byte nTaskForce) +{ + // End:0x78 + if((Outer.CachedPRI != none) && int(nTaskForce) >= int(0)) + { + Outer.CachedPRI.SetTaskForceNumber(nTaskForce); + } + //return; +} + +exec function ToggleTaskForce() +{ + local int nCurrentTaskForce; + + // End:0xAE + if(Outer.CachedPRI != none) + { + nCurrentTaskForce = int(Outer.CachedPRI.GetTaskForceNumber()); + Outer.CachedPRI.SetTaskForceNumber(((nCurrentTaskForce == 1) ? 2 : 1)); + } + //return; +} + +function RemoveDeviceFromPawnAt(TgPawn TgP, int nEquipPointId) +{ + local TgInventoryManager InvMgr; + local TgDevice pDevice; + + // End:0x11 + if(TgP == none) + { + return; + } + InvMgr = TgInventoryManager(TgP.InvManager); + // End:0xCF + if(InvMgr != none) + { + pDevice = TgP.GetDeviceByEqPoint(nEquipPointId); + // End:0xCF + if(pDevice != none) + { + InvMgr.RemoveDevice(pDevice.s_InventoryObject); + } + } + //return; +} + +function EquipDeviceOnPawn(TgPawn TgP, int nDeviceId, int nEquipPointId, optional int FireMode = 0) +{ + local TgInventoryManager InvMgr; + local TgDevice pDevice; + + // End:0x16 + if(TgP == none) + { + return; + } + // End:0x27 + if(nDeviceId <= 0) + { + return; + } + InvMgr = TgInventoryManager(TgP.InvManager); + // End:0x192 + if(InvMgr != none) + { + pDevice = TgP.GetDeviceByEqPoint(nEquipPointId); + // End:0x13D + if(pDevice != none) + { + // End:0x13A + if(nDeviceId > 0) + { + InvMgr.RemoveDevice(pDevice.s_InventoryObject); + pDevice = InvMgr.AddDevice(nDeviceId, nEquipPointId, none, true, FireMode); + } + } + else + { + // End:0x192 + if(nDeviceId > 0) + { + pDevice = InvMgr.AddDevice(nDeviceId, nEquipPointId, none, true, FireMode); + } + } + } + //return; +} + +exec function TargetEquipDevice(int nDeviceId, int nEquipPointId, optional int FireMode = 0) +{ + local Vector CamLoc; + local Rotator CamRot; + local Vector HitLocation, HitNormal; + local TgPawn HitPawn; + + Outer.GetPlayerViewPoint(CamLoc, CamRot); + HitPawn = TgPawn(Outer.Trace(HitLocation, HitNormal, CamLoc + (Vector(CamRot) * float(10000)), CamLoc, true, vect(10.0000000, 10.0000000, 10.0000000))); + // End:0xE8 + if(HitPawn != none) + { + EquipDeviceOnPawn(HitPawn, nDeviceId, nEquipPointId, FireMode); + } + //return; +} + +exec function TED(int nDeviceId, int nEquipPointId, optional int FireMode = 0) +{ + TargetEquipDevice(nDeviceId, nEquipPointId, FireMode); + //return; +} + +exec function TargetEquipDeviceByName(string sDeviceName, int nEquipPointId, optional int FireMode = 1) +{ + local int nDeviceId; + + nDeviceId = Outer.GetDeviceIdByName(sDeviceName); + // End:0x6B + if(nDeviceId >= 0) + { + TargetEquipDevice(nDeviceId, nEquipPointId, FireMode); + } + //return; +} + +exec function TEDBN(string sDeviceName, int nEquipPointId, optional int FireMode = 1) +{ + TargetEquipDeviceByName(sDeviceName, nEquipPointId, FireMode); + //return; +} + +exec function EquipDeviceByName(string sDeviceName, int nEquipPointId, optional int FireMode = 1) +{ + local int nDeviceId; + + nDeviceId = Outer.GetDeviceIdByName(sDeviceName); + // End:0x6B + if(nDeviceId >= 0) + { + EquipDevice(nDeviceId, nEquipPointId, FireMode); + } + //return; +} + +exec function EDBN(string sDeviceName, int nEquipPointId, optional int FireMode = 1) +{ + EquipDeviceByName(sDeviceName, nEquipPointId, FireMode); + //return; +} + +exec function EquipDevice(int nDeviceId, int nEquipPointId, optional int FireMode = 0) +{ + local TgInventoryManager InvMgr; + local TgDevice pDevice; + local int nSetPoints; + + // End:0x409 + if((TgPawn(Outer.Pawn) != none) && TgInventoryManager(TgPawn(Outer.Pawn).InvManager) != none) + { + InvMgr = TgInventoryManager(TgPawn(Outer.Pawn).InvManager); + pDevice = TgPawn(Outer.Pawn).GetDeviceByEqPoint(nEquipPointId); + // End:0x2BB + if(pDevice != none) + { + // End:0x2B8 + if(nDeviceId > 0) + { + InvMgr.RemoveDevice(pDevice.s_InventoryObject); + pDevice = InvMgr.AddDevice(nDeviceId, nEquipPointId, none, true, FireMode); + // End:0x2B8 + if(pDevice.IsOffhand()) + { + nSetPoints = ((pDevice.GetTotalDevicePoints() > 0) ? Clamp(FireMode, 1, pDevice.GetTotalDevicePoints()) : 0); + // End:0x2B8 + if(nSetPoints > 0) + { + pDevice.r_nPointsAllocated = nSetPoints - 1; + pDevice.AllocateDevicePoint(); + pDevice.bNetDirty = true; + } + } + } + } + else + { + // End:0x409 + if(nDeviceId > 0) + { + pDevice = InvMgr.AddDevice(nDeviceId, nEquipPointId, none, true, FireMode); + // End:0x409 + if(pDevice.IsOffhand()) + { + nSetPoints = ((pDevice.GetTotalDevicePoints() > 0) ? Clamp(FireMode, 1, pDevice.GetTotalDevicePoints()) : 0); + // End:0x409 + if(nSetPoints > 0) + { + pDevice.r_nPointsAllocated = nSetPoints - 1; + pDevice.AllocateDevicePoint(); + pDevice.bNetDirty = true; + } + } + } + } + } + //return; +} + +exec function ED(int nDeviceId, int nEquipPointId, optional int FireMode = 0) +{ + EquipDevice(nDeviceId, nEquipPointId, FireMode); + //return; +} + +exec function UnequipDevice(int nDeviceId) +{ + local TgInventoryManager InvMgr; + local TgPawn TgP; + local int I; + local TgDevice Dev; + + TgP = TgPawn(Outer.Pawn); + // End:0x153 + if(TgP != none) + { + InvMgr = TgInventoryManager(TgP.InvManager); + // End:0x153 + if(InvMgr != none) + { + I = 0; + J0x8B: + + // End:0x153 [Loop If] + if(I < 33) + { + Dev = TgP.GetDeviceByEqPoint(I); + // End:0x145 + if(Dev != none) + { + // End:0x145 + if(Dev.r_nDeviceId == nDeviceId) + { + InvMgr.RemoveDevice(Dev.s_InventoryObject); + } + } + I++; + // [Loop Continue] + goto J0x8B; + } + } + } + //return; +} + +exec function UD(int nDeviceId) +{ + UnequipDevice(nDeviceId); + //return; +} + +exec function RemoveDevice(int nDeviceId) +{ + UnequipDevice(nDeviceId); + //return; +} + +exec function UnequipDeviceAt(int nEquipPointId) +{ + local TgInventoryManager InvMgr; + local TgPawn TgP; + local TgDevice Dev; + + TgP = TgPawn(Outer.Pawn); + // End:0xFE + if(TgP != none) + { + InvMgr = TgInventoryManager(TgP.InvManager); + // End:0xFE + if(InvMgr != none) + { + Dev = TgP.GetDeviceByEqPoint(nEquipPointId); + // End:0xFE + if(Dev != none) + { + InvMgr.RemoveDevice(Dev.s_InventoryObject); + } + } + } + //return; +} + +exec function RemoveDeviceAt(int nDeviceId) +{ + UnequipDeviceAt(nDeviceId); + //return; +} + +exec function RemoveAllCards() +{ + UnequipDeviceAt(5); + UnequipDeviceAt(22); + UnequipDeviceAt(21); + UnequipDeviceAt(20); + UnequipDeviceAt(19); + UnequipDeviceAt(25); + //return; +} + +exec function RemoveAllItems() +{ + UnequipDeviceAt(8); + UnequipDeviceAt(9); + UnequipDeviceAt(10); + UnequipDeviceAt(11); + //return; +} + +exec function AddGold(int nCurrency) +{ + // End:0xF4 + if(int(Outer.Role) == int(ROLE_Authority)) + { + Outer.r_nCurrency += nCurrency; + Outer.bNetDirty = true; + // End:0xF4 + if((int(Outer.WorldInfo.NetMode) != int(NM_DedicatedServer)) && Outer.IsLocalPlayerController()) + { + Outer.SendUICurrencyChange(); + } + } + //return; +} + +exec function Obama(int nCurrency) +{ + AddGold(nCurrency); + //return; +} + +exec function SetMeLevel(int nLevel) +{ + Outer.SetLevel(nLevel); + //return; +} + +exec function SL(int nLevel) +{ + SetMeLevel(nLevel); + //return; +} + +exec function QuickEndGame(bool bWin) +{ + // End:0x81 + if(bWin) + { + TgGame_Mission(Outer.WorldInfo.Game).QuickEndGame(Outer.GetTaskForceNumber()); + } + else + { + // End:0xFD + if(Outer.GetTaskForceNumber() == 1) + { + TgGame_Mission(Outer.WorldInfo.Game).QuickEndGame(2); + } + else + { + TgGame_Mission(Outer.WorldInfo.Game).QuickEndGame(1); + } + } + //return; +} + +exec function QEG(optional bool bWin = true) +{ + QuickEndGame(bWin); + //return; +} + +exec function SetEnergy(float Value) +{ + local TgPawn TgPawn; + local TgProperty EnergyProperty; + + TgPawn = TgPawn(Outer.Pawn); + // End:0xBA + if(TgPawn != none) + { + EnergyProperty = TgPawn.GetProperty(22); + TgPawn.SetProperty(22, FClamp(Value, 0.0000000, EnergyProperty.m_fMaximum)); + } + //return; +} + +exec function TestShowInventory() +{ + TgInventoryManager(Outer.Pawn.InvManager).TestShowInventory(); + //return; +} + +exec function TestStunEffect(float fDuration) +{ + // End:0xAA + if(TgPawn(Outer.Pawn) != none) + { + TgPawn(Outer.Pawn).r_EffectManager.ApplyStun(fDuration, Outer.Pawn); + } + //return; +} + +exec function TestStun(Controller.EStunType Type) +{ + // End:0x5E + if(int(Type) != int(0)) + { + TgPawn(Outer.Pawn).Stun(true, Type); + } + else + { + TgPawn(Outer.Pawn).Stun(false); + } + //return; +} + +exec function ShowPlayerCircles(bool bEnabled) +{ + Outer.m_bShowPlayerCircles = bEnabled; + //return; +} + +exec function ToggleSpectatorCamera() +{ + local Vector CamLoc; + local Rotator CamRot; + local PlayerController PC; + local TgDemoRecSpectator_Debug DebugController; + + // End:0xE8 + foreach Outer.WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0xE7 + if(PC.bIsPlayer && PC.IsLocalPlayerController()) + { + DebugController = TgDemoRecSpectator_Debug(PC); + // End:0xE4 + if((DebugController != none) && DebugController.m_OriginalPlayerController == none) + { + continue; + } + // End:0xE8 + break; + } + } + // End:0x1B9 + if(((DebugController != none) && DebugController.m_OriginalPlayerController != none) && DebugController.m_OriginalPlayer != none) + { + DebugController.m_OriginalPlayer.SwitchController(DebugController.m_OriginalPlayerController); + DebugController.m_OriginalPlayerController = none; + } + else + { + // End:0x25F + if(((Outer.Player != none) && Outer.Pawn != none) && Outer.IsLocalPlayerController()) + { + m_DebugCameraController = Outer.Spawn(Class'TgGame.TgDemoRecSpectator_Debug'); + } + m_DebugCameraController.m_OriginalPlayer = Outer.Player; + m_DebugCameraController.m_OriginalPlayerController = Outer; + Outer.GetPlayerViewPoint(CamLoc, CamRot); + m_DebugCameraController.SetLocation(CamLoc); + m_DebugCameraController.SetRotation(CamRot); + m_DebugCameraController.PlayerCamera.UpdateCamera(0.0000000); + Outer.Player.SwitchController(m_DebugCameraController); + m_DebugCameraController.ForwardToSpectatingMatch(); + } + //return; +} + +exec function InvisMe(bool bInvis) +{ + local TgPawn TgP; + + TgP = TgPawn(Outer.Pawn); + // End:0xBA + if((int(Outer.Role) == int(ROLE_Authority)) && TgP != none) + { + TgP.m_bIsInvisibleToAI = bInvis; + CheatLog("AI Invisibility", bInvis); + } + //return; +} + +exec function capturePoint() +{ + local TgRepInfo_TaskForce Taskforce; + local TgChaosCapturePoint capturePoint, PointToCapture; + + // End:0x225 + if(TgRepInfo_Game(Outer.WorldInfo.GRI).r_LanePusher == none) + { + Taskforce = TgRepInfo_Game(Outer.WorldInfo.GRI).GetTaskForce(Outer.GetTaskForceNumber()); + Taskforce.r_fSecondaryScore = TgGame_PaladinsExtended(Outer.WorldInfo.Game).m_fSecondaryGoalScore; + // End:0x1C6 + foreach Outer.WorldInfo.DynamicActors(Class'TgGame.TgChaosCapturePoint', capturePoint) + { + // End:0x1C5 + if(int(capturePoint.r_eStatus) == int(1)) + { + PointToCapture = capturePoint; + // End:0x1C6 + break; + } + } + TgGame_PaladinsExtended(Outer.WorldInfo.Game).CheckCorePower(PointToCapture); + } + //return; +} + +exec function EnemyCapturePoint() +{ + local TgRepInfo_TaskForce Taskforce; + local TgChaosCapturePoint capturePoint, PointToCapture; + local int otherTaskforce; + + // End:0x24E + if(TgRepInfo_Game(Outer.WorldInfo.GRI).r_LanePusher == none) + { + // End:0x8B + if(Outer.GetTaskForceNumber() == 1) + { + otherTaskforce = 2; + } + else + { + otherTaskforce = 1; + } + Taskforce = TgRepInfo_Game(Outer.WorldInfo.GRI).GetTaskForce(otherTaskforce); + Taskforce.r_fSecondaryScore = TgGame_PaladinsExtended(Outer.WorldInfo.Game).m_fSecondaryGoalScore; + // End:0x1EF + foreach Outer.WorldInfo.DynamicActors(Class'TgGame.TgChaosCapturePoint', capturePoint) + { + // End:0x1EE + if(int(capturePoint.r_eStatus) == int(1)) + { + PointToCapture = capturePoint; + // End:0x1EF + break; + } + } + TgGame_PaladinsExtended(Outer.WorldInfo.Game).CheckCorePower(PointToCapture); + } + //return; +} + +exec function ToggleCapturePointOvertime() +{ + local TgGame_PaladinsExtended CSGame; + + CSGame = TgGame_PaladinsExtended(Outer.WorldInfo.Game); + // End:0x95 + if(CSGame != none) + { + CSGame.SetCapturePointOvertimeEnabled(!CSGame.m_bCapturePointContestDurationEnabled); + } + //return; +} + +exec function PickPoint(optional int Index = -1) +{ + TgGame_PaladinsExtended(Outer.WorldInfo.Game).m_nForcedObjectiveIndex = Index; + //return; +} + +exec function SetSiegeSpeed(float fSpeed) +{ + TgGame_PaladinsExtended(Outer.WorldInfo.Game).SetLanePusherSpeedScale(fSpeed); + //return; +} + +exec function SetRespawnIncrease(float fIncrease) +{ + TgGame_PaladinsExtended(Outer.WorldInfo.Game).m_fRespawnIncreaseOverTime = fIncrease; + //return; +} + +exec function SetDefenseRespawn(float fDuration) +{ + TgGame_PaladinsExtended(Outer.WorldInfo.Game).m_fDefenseRespawnIncrease = fDuration; + //return; +} + +exec function SetAttackRespawn(float fDuration) +{ + TgGame_PaladinsExtended(Outer.WorldInfo.Game).m_fAttackRespawnIncrease = fDuration; + //return; +} + +exec function SetRespawnCap(float fDuration) +{ + TgGame_PaladinsExtended(Outer.WorldInfo.Game).m_fRespawnTimeCap = fDuration; + //return; +} + +exec function SetCardCooldownIncrease(float fIncrease) +{ + TgGame_PaladinsExtended(Outer.WorldInfo.Game).m_fCardCooldownIncrease = fIncrease; + //return; +} + +exec function ForceRespawnAll() +{ + TgGame_PaladinsExtended(Outer.WorldInfo.Game).RespawnAllPlayers(true, true, true, true); + //return; +} + +exec function SetHealth(int Health) +{ + local TgPawn TgP; + + TgP = TgPawn(Outer.Pawn); + // End:0x68 + if(TgP != none) + { + TgP.SetHealth(Health); + } + //return; +} + +exec function SetMana(int mana) +{ + local TgPawn TgP; + + TgP = TgPawn(Outer.Pawn); + // End:0x6C + if(TgP != none) + { + TgP.SetPropCurrentValue(22, float(mana)); + } + //return; +} + +exec function DamageHealth(optional int DamageAmount) +{ + // End:0x50 + if(DamageAmount <= 0) + { + DamageAmount = Outer.Pawn.Health - 1; + } + Outer.Pawn.TakeDamage(DamageAmount, none, Outer.Pawn.Location, vect(0.0000000, 0.0000000, 0.0000000), Class'Engine.DamageType'); + //return; +} + +exec function Heal(optional int HealAmount) +{ + local TgPawn TgP; + + // End:0x1F + if(HealAmount <= 0) + { + HealAmount = 10000; + } + TgP = TgPawn(Outer.Pawn); + // End:0xC5 + if(TgP != none) + { + // End:0xC5 + if(TgP.r_EffectManager != none) + { + TgP.r_EffectManager.ApplyHealth(HealAmount); + } + } + //return; +} + +exec function DamageTarget(optional int DamageAmount = -1) +{ + local Vector CamLoc; + local Rotator CamRot; + local Vector HitLocation, HitNormal; + local Pawn HitPawn; + + Outer.GetPlayerViewPoint(CamLoc, CamRot); + HitPawn = Pawn(Outer.Trace(HitLocation, HitNormal, CamLoc + (Vector(CamRot) * float(10000)), CamLoc, true, vect(10.0000000, 10.0000000, 10.0000000))); + // End:0x14F + if(HitPawn != none) + { + HitPawn.TakeDamage(((DamageAmount > 0) ? DamageAmount : HitPawn.Health - 1), none, HitPawn.Location, vect(0.0000000, 0.0000000, 0.0000000), Class'Engine.DamageType'); + } + //return; +} + +exec function HealTarget(optional int HealAmount = -1) +{ + local Vector CamLoc; + local Rotator CamRot; + local Vector HitLocation, HitNormal; + local TgPawn HitPawn; + + Outer.GetPlayerViewPoint(CamLoc, CamRot); + HitPawn = TgPawn(Outer.Trace(HitLocation, HitNormal, CamLoc + (Vector(CamRot) * float(10000)), CamLoc, true, vect(10.0000000, 10.0000000, 10.0000000))); + // End:0x13A + if(HitPawn != none) + { + // End:0x13A + if(HitPawn.r_EffectManager != none) + { + HitPawn.r_EffectManager.ApplyHealth(((HealAmount > 0) ? HealAmount : 10000)); + } + } + //return; +} + +exec function ShieldTarget(optional int Amount = 1000) +{ + local Vector CamLoc; + local Rotator CamRot; + local Vector HitLocation, HitNormal; + local TgPawn HitPawn; + + Outer.GetPlayerViewPoint(CamLoc, CamRot); + HitPawn = TgPawn(Outer.Trace(HitLocation, HitNormal, CamLoc + (Vector(CamRot) * float(10000)), CamLoc, true, vect(10.0000000, 10.0000000, 10.0000000))); + // End:0x158 + if((HitPawn != none) && HitPawn.r_EffectManager != none) + { + HitPawn.SetProperty(HitPawn.GetPropIndex(1598), float(HitPawn.GetPropIndex(1598) + Amount)); + } + //return; +} + +exec function StopHP5() +{ + local TgPawn TgP; + + TgP = TgPawn(Outer.Pawn); + // End:0xB2 + if(TgP != none) + { + TgP.SetProperty(20, 0.0000000); + TgP.SetProperty(89, 0.0000000); + TgP.SetProperty(90, 0.0000000); + } + //return; +} + +exec function SkipSetup() +{ + TgGame_PaladinsExtended(Outer.WorldInfo.Game).EndPreRoundSetup(); + //return; +} + +exec function ShowProjectileDebug(bool bEnabled) +{ + TgRepInfo_Game(Outer.WorldInfo.GRI).r_bShowProjectileProximityDistance = bEnabled; + //return; +} + +exec function DisableProximity(bool bEnabled) +{ + TgRepInfo_Game(Outer.WorldInfo.GRI).r_bDisableProjectileProximityDistance = bEnabled; + //return; +} + +exec function GiveCard(int nDeviceId) +{ + Outer.ServerGiveCard(nDeviceId); + //return; +} + +exec function ForceLanePusher() +{ + local TgRepInfo_Game GRI; + local Actor TargetActor; + local Vector NewLocation; + + GRI = TgRepInfo_Game(Outer.WorldInfo.GRI); + // End:0x143 + if((GRI != none) && GRI.r_LanePusher != none) + { + TargetActor = TgAIController_BehaviorLaneNpc(GRI.r_LanePusher.Controller).LaneMoveTarget; + // End:0x143 + if(TargetActor != none) + { + NewLocation = TargetActor.Location; + GRI.r_LanePusher.SetLocation(NewLocation); + } + } + //return; +} + +exec function EnableScoring() +{ + local TgGame_PaladinsExtended Game; + + Game = TgGame_PaladinsExtended(Outer.WorldInfo.Game); + // End:0x76 + if(Game != none) + { + Game.m_bScoringEnabled = true; + } + //return; +} + +exec function DisableScoring() +{ + local TgGame_PaladinsExtended Game; + + Game = TgGame_PaladinsExtended(Outer.WorldInfo.Game); + // End:0x76 + if(Game != none) + { + Game.m_bScoringEnabled = false; + } + //return; +} + +exec function SetScore(optional int tf1Score = 0, optional int tf2Score = 0) +{ + local TgGame_PaladinsExtended Game; + + Game = TgGame_PaladinsExtended(Outer.WorldInfo.Game); + // End:0x116 + if(Game != none) + { + Game.SetScore(1, Game.m_nWinningScore - tf1Score); + // End:0x116 + if(Game.m_nTF1Score > 0) + { + Game.SetScore(2, Game.m_nWinningScore - tf2Score); + } + } + //return; +} + +exec function EndGame() +{ + TgGame_Paladins(Outer.WorldInfo.Game).EndTheGame(); + //return; +} + +exec function HelpMe() +{ + TgInventoryManager(Outer.Pawn.InvManager).ServerSetInventoryDirty(); + //return; +} + +exec function QuickSiege() +{ + local TgPawn_LanePusherBase siege; + + // End:0x72 + foreach Outer.WorldInfo.AllPawns(Class'TgGame.TgPawn_LanePusherBase', siege) + { + siege.SetProperty(8, 1000.0000000); + } + //return; +} + +exec function ReinforceDoors(optional int healthAmt = 20000000) +{ + local TgGame_PaladinsExtended Game; + local TgPawn_SiegeWall Wall; + + Game = TgGame_PaladinsExtended(Outer.WorldInfo.Game); + Wall = Game.m_TF1InnerWall; + // End:0xDE + if(Wall != none) + { + Wall.SetProperty(17, float(healthAmt)); + Wall.SetProperty(19, float(healthAmt)); + } + Wall = Game.m_TF1OuterWall; + // End:0x16D + if(Wall != none) + { + Wall.SetProperty(17, float(healthAmt)); + Wall.SetProperty(19, float(healthAmt)); + } + Wall = Game.m_TF1BaseObjective; + // End:0x1FC + if(Wall != none) + { + Wall.SetProperty(17, float(healthAmt)); + Wall.SetProperty(19, float(healthAmt)); + } + Wall = Game.m_TF2InnerWall; + // End:0x28B + if(Wall != none) + { + Wall.SetProperty(17, float(healthAmt)); + Wall.SetProperty(19, float(healthAmt)); + } + Wall = Game.m_TF2OuterWall; + // End:0x31A + if(Wall != none) + { + Wall.SetProperty(17, float(healthAmt)); + Wall.SetProperty(19, float(healthAmt)); + } + Wall = Game.m_TF2BaseObjective; + // End:0x3A9 + if(Wall != none) + { + Wall.SetProperty(17, float(healthAmt)); + Wall.SetProperty(19, float(healthAmt)); + } + //return; +} + +exec function ReinforceSiege(optional int healthAmt = 20000000) +{ + local TgPawn_LanePusherBase siege; + + // End:0xAD + foreach Outer.WorldInfo.AllPawns(Class'TgGame.TgPawn_LanePusherBase', siege) + { + siege.SetProperty(17, float(healthAmt)); + siege.SetProperty(19, float(healthAmt)); + } + //return; +} + +exec function SetGameEnvironmentRule(TgObject.EGameEnvironmentRule Rule) +{ + TgRepInfo_Game(Outer.WorldInfo.GRI).SetGameEnvironmentRule(Rule); + //return; +} + +exec function SetGameRespawnRule(TgObject.EGameRespawnRule Rule) +{ + TgRepInfo_Game(Outer.WorldInfo.GRI).SetGameRespawnRule(Rule); + //return; +} + +exec function SetGameMode(TgObject.EGameMode Mode) +{ + TgRepInfo_Game(Outer.WorldInfo.GRI).SetGameMode(Mode); + TgGame_PaladinsExtended(Outer.WorldInfo.Game).ResetGameMode(); + //return; +} + +exec function SetAirFriction(float frictionAmt) +{ + TgRepInfo_Game(Outer.WorldInfo.GRI).r_fGlobalFrictionFlying = frictionAmt; + TgRepInfo_Game(Outer.WorldInfo.GRI).r_fGlobalFrictionFalling = frictionAmt; + TgRepInfo_Game(Outer.WorldInfo.GRI).bNetDirty = true; + //return; +} + +exec function SetFallingFriction(float frictionAmt) +{ + TgRepInfo_Game(Outer.WorldInfo.GRI).r_fGlobalFrictionFalling = frictionAmt; + TgRepInfo_Game(Outer.WorldInfo.GRI).bNetDirty = true; + //return; +} + +exec function SetFlyingFriction(float frictionAmt) +{ + TgRepInfo_Game(Outer.WorldInfo.GRI).r_fGlobalFrictionFlying = frictionAmt; + TgRepInfo_Game(Outer.WorldInfo.GRI).bNetDirty = true; + //return; +} + +exec function TestSpawnPoints(optional float PauseTime = 3.0000000) +{ + local PlayerStart PS; + + // End:0x69 + foreach Outer.WorldInfo.AllNavigationPoints(Class'Engine.PlayerStart', PS) + { + m_DebugPlayerStarts.AddItem(PS); + } + Outer.SetTimer(PauseTime, true, 'DebugNextPlayerStart'); + //return; +} + +exec function SetInstantFireMeshTrace(bool bEnabled) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(Outer.WorldInfo.GRI); + GRI.r_bUseInstantFireMeshTrace = bEnabled; + Outer.ClientMessage("InstantFire Mesh Trace is:" @ ((GRI.r_bUseInstantFireMeshTrace) ? "ENABLED" : "DISABLED")); + //return; +} + +exec function ToggleWeaponLagPrediction() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(Outer.WorldInfo.GRI); + GRI.r_bAllowWeaponLagPrediction = !GRI.r_bAllowWeaponLagPrediction; + Outer.ClientMessage("Weapon Lag Prediction is:" @ ((GRI.r_bAllowWeaponLagPrediction) ? "ENABLED" : "DISABLED")); + //return; +} + +exec function SetMaximumLagPrediction(float NewMaximum) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(Outer.WorldInfo.GRI); + GRI.r_fWeaponMaxLagCompensation = NewMaximum; + Outer.ClientMessage("New Maximum lag prediction is:" @ string(NewMaximum)); + //return; +} + +exec function DumpWeaponPredictionStats() +{ + local string AimValidationStats, InstantFirePredictionStats, ProjectilePredictionStats; + + AimValidationStats = Class'TgGame.TgDevice'.static.GetAimValidationStats(); + InstantFirePredictionStats = Class'TgGame.TgDevice'.static.GetInstantFirePredictionStats(); + ProjectilePredictionStats = Class'TgGame.TgDevice'.static.GetProjectilePredictionStats(); + Outer.ClientMessage("===== Weapon Prediction Stats ===="); + Outer.ClientMessage(AimValidationStats); + Outer.ClientMessage(InstantFirePredictionStats); + Outer.ClientMessage(ProjectilePredictionStats); + //return; +} + +exec function DumpLastServerAims() +{ + local string UsedAimStats; + + UsedAimStats = Class'TgGame.TgDevice'.static.GetLastUsedAimStats(); + Outer.ClientMessage("===== Last Server Aims ===="); + Outer.ClientMessage(UsedAimStats); + //return; +} + +exec function DumpLastClientAims() +{ + local string UsedAimStats; + + UsedAimStats = Class'TgGame.TgDevice'.static.GetLastUsedAimStats(); + Outer.ClientMessage("===== Last Client Aims ===="); + Outer.ClientMessage(UsedAimStats); + //return; +} + +exec function SetDamageMultiplier(float NewMult) +{ + TgRepInfo_Game(Outer.WorldInfo.GRI).r_fServerFlagDamageMultiplier = NewMult; + //return; +} + +exec function SetGroundSpeedMultiplier(float NewMult) +{ + TgRepInfo_Game(Outer.WorldInfo.GRI).r_fServerFlagGroundSpeedModifier = NewMult; + //return; +} + +exec function SetAutoHealingMultiplier(float NewMult) +{ + TgRepInfo_Game(Outer.WorldInfo.GRI).r_fServerFlagAutoHealingMultiplier = NewMult; + //return; +} + +exec function ToggleSiegeEngineRequiresAllies() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(Outer.WorldInfo.GRI); + // End:0x96 + if(GRI != none) + { + GRI.r_bSiegeEngineRequiresAlliesToMove = !GRI.r_bSiegeEngineRequiresAlliesToMove; + } + //return; +} + +exec function SetVaultImmuneHealth(float fHealth) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(Outer.WorldInfo.GRI); + // End:0x7D + if(GRI != none) + { + GRI.m_fVaultImmuneToSiegeEngineHealth = fHealth; + } + //return; +} + +exec function SetVisibilityRanges(optional float fNormal = -1.0000000, optional float fInVolume = -1.0000000) +{ + // End:0x15F + if(fNormal >= 0.0000000) + { + // End:0xC2 + if(TgGame_Paladins(Outer.WorldInfo.Game) != none) + { + TgGame_Paladins(Outer.WorldInfo.Game).m_fPlayerViewDistance = fNormal; + } + // End:0x15F + if(TgRepInfo_Game(Outer.WorldInfo.GRI) != none) + { + TgRepInfo_Game(Outer.WorldInfo.GRI).r_fPlayerViewDistance = fNormal; + } + } + // End:0x2AC + if(fInVolume >= 0.0000000) + { + // End:0x20F + if(TgGame_Paladins(Outer.WorldInfo.Game) != none) + { + TgGame_Paladins(Outer.WorldInfo.Game).m_fVisibilityVolumeViewDistance = fInVolume; + } + // End:0x2AC + if(TgRepInfo_Game(Outer.WorldInfo.GRI) != none) + { + TgRepInfo_Game(Outer.WorldInfo.GRI).r_fVisibilityVolumeViewDistance = fInVolume; + } + } + //return; +} + +exec function ForceRoundSetupEnd() +{ + local TgGame_Mission mission; + + // End:0x94 + if(TgGame_Paladins(Outer.WorldInfo.Game) != none) + { + TgGame_Paladins(Outer.WorldInfo.Game).StartMatch(); + } + // End:0x299 + if(TgGame_PaladinsExtended(Outer.WorldInfo.Game) != none) + { + TgGame_PaladinsExtended(Outer.WorldInfo.Game).SetTimer(0.5000000, false, 'PickNextObjective'); + TgGame_PaladinsExtended(Outer.WorldInfo.Game).ClearTimer('ResetAllPlayersNotInSpawnRoom'); + TgGame_PaladinsExtended(Outer.WorldInfo.Game).ClearTimer('ResetAttackersNotInSpawnRoom'); + TgGame_PaladinsExtended(Outer.WorldInfo.Game).ClearTimer('ResetDefendersNotInSpawnRoom'); + TgGame_PaladinsExtended(Outer.WorldInfo.Game).m_bResetPlayersNotInSpawnRoomDisabled = true; + } + // End:0x44A + if(TgGame_Paladins_Payload(Outer.WorldInfo.Game) != none) + { + TgGame_Paladins_Payload(Outer.WorldInfo.Game).SetTimer(0.5000000, false, 'OpenAttackersSpawnGates'); + TgGame_Paladins_Payload(Outer.WorldInfo.Game).SetTimer(0.5000000, false, 'OpenDefendersSpawnGates'); + TgGame_Paladins_Payload(Outer.WorldInfo.Game).SetTimer(0.5000000, false, 'AutoMountAttackers'); + TgGame_Paladins_Payload(Outer.WorldInfo.Game).SetTimer(0.5000000, false, 'AutoMountDefenders'); + } + else + { + // End:0x545 + if(TgGame_Paladins_Siege(Outer.WorldInfo.Game) != none) + { + TgGame_Paladins_Siege(Outer.WorldInfo.Game).SetTimer(0.5000000, false, 'OpenSpawnGates'); + TgGame_Paladins_Siege(Outer.WorldInfo.Game).SetTimer(0.5000000, false, 'AutoMountAllPlayers'); + } + else + { + // End:0x640 + if(TgGame_Paladins_TeamDeathMatch(Outer.WorldInfo.Game) != none) + { + TgGame_Paladins_TeamDeathMatch(Outer.WorldInfo.Game).SetTimer(0.5000000, false, 'OpenSpawnGates'); + TgGame_Paladins_TeamDeathMatch(Outer.WorldInfo.Game).SetTimer(0.5000000, false, 'AutoMountAllPlayers'); + } + else + { + // End:0x6DD + if(TgGame_PaladinsExtended(Outer.WorldInfo.Game) != none) + { + TgGame_PaladinsExtended(Outer.WorldInfo.Game).SetTimer(0.5000000, false, 'AutoMountAllPlayers'); + } + } + } + } + mission = TgGame_Mission(Outer.WorldInfo.Game); + // End:0x7C4 + if((mission != none) && int(mission.m_eTimerState) <= int(2)) + { + // End:0x7A5 + if(int(mission.m_eTimerState) == int(1)) + { + mission.AllPlayersReady(); + } + mission.MissionTimer(); + } + //return; +} + +exec function FRSE() +{ + ForceRoundSetupEnd(); + //return; +} + +exec function LevelAim() +{ + local Controller Controller; + local Rotator NewRot; + + Controller = Outer.GetALocalPlayerController(); + // End:0x315 + if(Controller != none) + { + NewRot = Controller.Rotation; + NewRot.Pitch = 0; + J0x7E: + + // End:0xCA [Loop If] + if(NewRot.Yaw > 65535) + { + NewRot.Yaw -= 65536; + // [Loop Continue] + goto J0x7E; + } + J0xCA: + + // End:0x112 [Loop If] + if(NewRot.Yaw < 0) + { + NewRot.Yaw += 65536; + // [Loop Continue] + goto J0xCA; + } + // End:0x17D + if((NewRot.Yaw > 0) && NewRot.Yaw < 8192) + { + NewRot.Yaw = 0; + } + else + { + // End:0x1F0 + if((NewRot.Yaw >= 8192) && NewRot.Yaw < 24576) + { + NewRot.Yaw = 16384; + } + else + { + // End:0x263 + if((NewRot.Yaw >= 24576) && NewRot.Yaw < 40960) + { + NewRot.Yaw = 32768; + } + else + { + // End:0x2D6 + if((NewRot.Yaw >= 40960) && NewRot.Yaw < 57344) + { + NewRot.Yaw = 49152; + } + else + { + NewRot.Yaw = 0; + } + } + } + } + Controller.SetRotation(NewRot); + } + //return; +} + +exec function Set1p(optional bool bForce1P = true) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(Outer.WorldInfo.GRI); + // End:0x86 + if(GRI != none) + { + GRI.r_bForce3P = !bForce1P; + } + //return; +} + +exec function Set3p(optional bool bForce3P = true) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(Outer.WorldInfo.GRI); + // End:0x84 + if(GRI != none) + { + GRI.r_bForce3P = bForce3P; + } + //return; +} + +exec function Toggle3p() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(Outer.WorldInfo.GRI); + // End:0x96 + if(GRI != none) + { + GRI.r_bForce3P = !GRI.r_bForce3P; + } + //return; +} + +exec function GainXP(int xpAmount) +{ + Outer.SetRewardValues(xpAmount, 0, Outer.Pawn, 19); + //return; +} + +exec function GainCredits(int creditsAmount) +{ + local TgGame_Paladins ChaosGame; + + ChaosGame = TgGame_Paladins(Outer.WorldInfo.Game); + // End:0x8F + if(ChaosGame != none) + { + ChaosGame.GiveCredits(TgPaladinsController(Outer), creditsAmount); + } + //return; +} + +exec function GainTickets(int ticketsAmount) +{ + local TgGame_PaladinsExtended ChaosGame; + + ChaosGame = TgGame_PaladinsExtended(Outer.WorldInfo.Game); + // End:0xA0 + if(ChaosGame != none) + { + ChaosGame.GainTickets(Outer.GetTaskForceNumber(), float(ticketsAmount), 7); + } + //return; +} + +exec function EndRound(optional int nTaskForce = 0) +{ + local TgGame_Paladins_Siege Cap; + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce Taskforce; + local bool bEndRound; + local TgObjective Objective; + + // End:0x3D + if(nTaskForce == 0) + { + nTaskForce = Outer.GetTaskForceNumber(); + } + Cap = TgGame_Paladins_Siege(Outer.WorldInfo.Game); + GRI = TgRepInfo_Game(Outer.WorldInfo.GRI); + // End:0x3BC + if(Cap != none) + { + bEndRound = true; + // End:0x11D + if(GRI != none) + { + GRI.r_nLastRoundWinner = byte(nTaskForce); + } + // End:0x207 + if((nTaskForce == 1) || nTaskForce == 2) + { + Cap.GainPoints(nTaskForce, Cap.m_nPointsForPayload, 3); + // End:0x207 + if(GRI != none) + { + Taskforce = GRI.GetTaskForce(nTaskForce); + // End:0x207 + if(Taskforce != none) + { + // End:0x207 + if(Taskforce.r_nScore <= 0) + { + bEndRound = false; + } + } + } + } + // End:0x3BC + if(bEndRound) + { + GRI = TgRepInfo_Game(Outer.WorldInfo.GRI); + // End:0x39D + if(GRI != none) + { + // End:0x2F8 + if(int(GRI.r_GameMode) == int(0)) + { + // End:0x2F7 + foreach Outer.WorldInfo.DynamicActors(Class'TgGame.TgObjective', Objective) + { + Objective.SetStatus(0); + } + } + // End:0x39D + if(!Cap.IsInState('AttackDefend')) + { + Cap.StartNewObjectiveRound(false); + Cap.StartBroadcastTimer(); + Cap.ResetScores(); + GRI.UpdateAttackingTaskforce(none); + } + } + Cap.OnRoundEnded(); + } + } + //return; +} + +exec function OpenSpawnGates() +{ + local TgGame_PaladinsExtended Game; + + Game = TgGame_Paladins_Payload(Outer.WorldInfo.Game); + // End:0x7F + if(Game != none) + { + TgGame_Paladins_Payload(Game).OpenAttackersSpawnGates(); + return; + } + Game = TgGame_PaladinsExtended(Outer.WorldInfo.Game); + // End:0xF3 + if(Game != none) + { + Game.OpenSpawnGates(); + } + //return; +} + +exec function CloseSpawnGates() +{ + local TgGame_PaladinsExtended Game; + + Game = TgGame_PaladinsExtended(Outer.WorldInfo.Game); + // End:0x74 + if(Game != none) + { + Game.CloseSpawnGates(); + } + //return; +} + +exec function SetCAPOvertime(float overtimeDuration, optional float overtimeWarning = -1.0000000) +{ + local TgGame_Paladins_Siege Cap; + + Cap = TgGame_Paladins_Siege(Outer.WorldInfo.Game); + // End:0x8F + if(Cap != none) + { + Cap.SetOvertime(overtimeDuration, overtimeWarning); + } + //return; +} + +exec function PayloadForever() +{ + //return; +} + +exec function SetAIAccuracy(float DegreeMissed, float MissLikelihood) +{ + local TgPawn P; + local TgAIController_Behavior behavior_ai; + + P = TgPawn(Outer.m_aHoverActor); + // End:0xD0 + if(P != none) + { + behavior_ai = TgAIController_Behavior(P.Controller); + // End:0xD0 + if(behavior_ai != none) + { + behavior_ai.m_fMissLikelihood = MissLikelihood; + behavior_ai.m_fDegreeMissedMagnitude = DegreeMissed; + } + } + //return; +} + +exec function EnableThreat(bool bEnabled) +{ + TgPlayerController(Outer.GetALocalPlayerController()).m_bThreatSystemEnabled = bEnabled; + //return; +} + +exec function EnableOcclusion(bool bEnabled) +{ + local Actor A; + + TgPlayerController(Outer.GetALocalPlayerController()).m_bOcclusionSystemEnabled = bEnabled; + // End:0xC1 + if(!bEnabled) + { + // End:0xC0 + foreach Outer.WorldInfo.DynamicActors(Class'Engine.Actor', A) + { + A.m_fOcclusionAmount = 0.0000000; + } + } + //return; +} + +exec function DisplayThreatParams() +{ + local TgPlayerController PPC; + + PPC = TgPlayerController(Outer.GetALocalPlayerController()); + // End:0x61 + if(PPC.m_DebugThreatSystemChannel == "damaged") + { + } + else + { + // End:0x91 + if(PPC.m_DebugThreatSystemChannel == "distance") + { + } + else + { + // End:0xC2 + if(PPC.m_DebugThreatSystemChannel == "occlusion") + { + } + else + { + // End:0xF0 + if(PPC.m_DebugThreatSystemChannel == "seenby") + { + } + else + { + // End:0x11E + if(PPC.m_DebugThreatSystemChannel == "shotat") + { + } + else + { + // End:0x151 + if(PPC.m_DebugThreatSystemChannel == "sizeofenemy") + { + } + else + { + // End:0x184 + if(PPC.m_DebugThreatSystemChannel == "sizetoenemy") + { + } + else + { + // End:0x1AF + if(PPC.m_DebugThreatSystemChannel == "ult") + { + } + else + { + // End:0x1DD + if(PPC.m_DebugThreatSystemChannel == "behind") + { + } + else + { + // End:0x21A + if(InStr(PPC.m_DebugThreatSystemChannel, "binnedocclu") != -1) + { + } + else + { + // End:0x251 + if(InStr(PPC.m_DebugThreatSystemChannel, "ineff") != -1) + { + } + } + } + } + } + } + } + } + } + } + } + //return; +} + +exec function ShowThreats(bool bEnabled, optional string ChannelName) +{ + TgPlayerController(Outer.GetALocalPlayerController()).m_bDebugThreatSystem = bEnabled; + TgPlayerController(Outer.GetALocalPlayerController()).m_DebugThreatSystemChannel = Locs(ChannelName); + // End:0xB3 + if(ChannelName != "levels") + { + DisplayThreatParams(); + } + //return; +} + +exec function AllNoah(optional string ChannelName) +{ + Outer.ConsoleCommand("DisplayClear"); + // End:0x9F + if(ChannelName == "") + { + Outer.ConsoleCommand("DisplayAll tgpawn c_flastthreatlevelvalue"); + } + else + { + // End:0xB8 + if(ChannelName == "levels") + { + } + else + { + Outer.ConsoleCommand("DisplayAll tgpawn c_fthreat" $ ChannelName); + } + } + ShowThreats(true, ChannelName); + //return; +} + +exec function AllowHeadShots(optional bool bEnable = true) +{ + local TgGame Game; + + Game = TgGame(Outer.WorldInfo.Game); + // End:0x83 + if(Game != none) + { + Game.SetEnableHeadshots(bEnable); + } + //return; +} + +exec function LiveRespawn(optional bool bResetHealth = true, optional bool bResetDevices = true) +{ + // End:0x4C + if(Outer != none) + { + Outer.LiveRespawn(bResetHealth, bResetDevices); + } + //return; +} + +exec function SetBodyMesh(int nBodyMeshID) +{ + local TgPawn TgP; + + // End:0xF6 + if(nBodyMeshID > 0) + { + TgP = TgPawn(Outer.Pawn); + // End:0xF3 + if(TgP != none) + { + TgP.r_nBodyMeshOverride = nBodyMeshID; + // End:0xF3 + if(int(Outer.WorldInfo.NetMode) == int(NM_Standalone)) + { + TgP.ReloadMeshAssemblies(); + TgP.SwapToLiveMesh(); + } + } + } + //return; +} + +exec function SBM(int nBodyMeshID) +{ + SetBodyMesh(nBodyMeshID); + //return; +} + +exec function SetBodyMeshByName() +{ + //return; +} + +exec function SBMBN() +{ + SetBodyMeshByName(); + //return; +} + +exec function SetHeadMesh(int nHeadMeshID) +{ + local TgPawn_Character TgPC; + + // End:0xD7 + if(nHeadMeshID > 0) + { + TgPC = TgPawn_Character(Outer.Pawn); + // End:0xD4 + if(TgPC != none) + { + TgPC.r_nHeadMeshOverride = nHeadMeshID; + // End:0xD4 + if(int(Outer.WorldInfo.NetMode) == int(NM_Standalone)) + { + TgPC.ShowHeadMesh(); + } + } + } + //return; +} + +exec function SHM(int nHeadMeshID) +{ + SetHeadMesh(nHeadMeshID); + //return; +} + +exec function SetHeadMeshByName() +{ + //return; +} + +exec function SHBN() +{ + SetHeadMeshByName(); + //return; +} + +exec function RemoveHeadMesh() +{ + local TgPawn_Character TgPC; + + TgPC = TgPawn_Character(Outer.Pawn); + // End:0xC1 + if(TgPC != none) + { + TgPC.r_nHeadMeshOverride = -1; + // End:0xC1 + if(int(Outer.WorldInfo.NetMode) == int(NM_Standalone)) + { + TgPC.ShowHeadMesh(); + } + } + //return; +} + +exec function rhm() +{ + RemoveHeadMesh(); + //return; +} + +exec function decapitate() +{ + RemoveHeadMesh(); + //return; +} + +exec function EnableHeadMesh(bool bEnabled) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(Outer.WorldInfo.GRI); + // End:0x141 + if(GRI != none) + { + GRI.r_bShowHeadMesh = bEnabled; + GRI.bNetDirty = true; + // End:0x141 + if(int(Outer.WorldInfo.NetMode) == int(NM_Standalone)) + { + // End:0x122 + if(GRI.r_bShowHeadMesh) + { + GRI.ShowHeadMesh(); + } + else + { + GRI.HideHeadMesh(); + } + } + } + //return; +} + +exec function ToggleHeadMesh() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(Outer.WorldInfo.GRI); + // End:0x158 + if(GRI != none) + { + GRI.r_bShowHeadMesh = !GRI.r_bShowHeadMesh; + GRI.bNetDirty = true; + // End:0x158 + if(int(Outer.WorldInfo.NetMode) == int(NM_Standalone)) + { + // End:0x139 + if(GRI.r_bShowHeadMesh) + { + GRI.ShowHeadMesh(); + } + else + { + GRI.HideHeadMesh(); + } + } + } + //return; +} + +exec function TargetSetMeshes(int nBodyMeshID, optional int nHeadMeshID = 0) +{ + local Vector CamLoc; + local Rotator CamRot; + local Vector HitLocation, HitNormal; + local TgPawn TargetPawn; + local TgPawn_Character TargetPawnCharacter; + + Outer.GetPlayerViewPoint(CamLoc, CamRot); + TargetPawn = TgPawn(Outer.Trace(HitLocation, HitNormal, CamLoc + (Vector(CamRot) * float(10000)), CamLoc, true, vect(10.0000000, 10.0000000, 10.0000000))); + // End:0x21D + if(TargetPawn != none) + { + // End:0x16D + if(nBodyMeshID > 0) + { + TargetPawn.r_nBodyMeshOverride = nBodyMeshID; + // End:0x16D + if(int(Outer.WorldInfo.NetMode) == int(NM_Standalone)) + { + TargetPawn.ReloadMeshAssemblies(); + TargetPawn.SwapToLiveMesh(); + } + } + TargetPawnCharacter = TgPawn_Character(TargetPawn); + // End:0x21D + if(TargetPawnCharacter != none) + { + TargetPawnCharacter.r_nHeadMeshOverride = nHeadMeshID; + // End:0x21D + if(int(Outer.WorldInfo.NetMode) == int(NM_Standalone)) + { + TargetPawnCharacter.ShowHeadMesh(); + } + } + } + //return; +} + +exec function TSM(int nBodyMeshID, optional int nHeadMeshID = 0) +{ + TargetSetMeshes(nBodyMeshID, nHeadMeshID); + //return; +} + +exec function TargetSetBodyMesh(int nBodyMeshID) +{ + local Vector CamLoc; + local Rotator CamRot; + local Vector HitLocation, HitNormal; + local TgPawn TargetPawn; + + Outer.GetPlayerViewPoint(CamLoc, CamRot); + TargetPawn = TgPawn(Outer.Trace(HitLocation, HitNormal, CamLoc + (Vector(CamRot) * float(10000)), CamLoc, true, vect(10.0000000, 10.0000000, 10.0000000))); + // End:0x16B + if(TargetPawn != none) + { + // End:0x16B + if(nBodyMeshID >= 0) + { + TargetPawn.r_nBodyMeshOverride = nBodyMeshID; + // End:0x168 + if(int(Outer.WorldInfo.NetMode) == int(NM_Standalone)) + { + TargetPawn.ReloadMeshAssemblies(); + TargetPawn.SwapToLiveMesh(); + } + } + } + //return; +} + +exec function TSBM(int nBodyMeshID) +{ + TargetSetBodyMesh(nBodyMeshID); + //return; +} + +exec function TargetSetHeadMesh(int nHeadMeshID) +{ + local Vector CamLoc; + local Rotator CamRot; + local Vector HitLocation, HitNormal; + local TgPawn_Character TargetPawnCharacter; + + Outer.GetPlayerViewPoint(CamLoc, CamRot); + TargetPawnCharacter = TgPawn_Character(Outer.Trace(HitLocation, HitNormal, CamLoc + (Vector(CamRot) * float(10000)), CamLoc, true, vect(10.0000000, 10.0000000, 10.0000000))); + // End:0x14C + if(TargetPawnCharacter != none) + { + // End:0x14C + if(nHeadMeshID >= 0) + { + TargetPawnCharacter.r_nHeadMeshOverride = nHeadMeshID; + // End:0x149 + if(int(Outer.WorldInfo.NetMode) == int(NM_Standalone)) + { + TargetPawnCharacter.ShowHeadMesh(); + } + } + } + //return; +} + +exec function TSHM(int nHeadMeshID) +{ + TargetSetHeadMesh(nHeadMeshID); + //return; +} + +exec function AllowMount(optional bool bEnabled = true) +{ + TgRepInfo_Game(Outer.WorldInfo.GRI).r_bAllowPlayerMounting = bEnabled; + //return; +} + +exec function PlayPotG() +{ + local TgPlayerController PC; + + // End:0xAF + foreach Outer.WorldInfo.AllControllers(Class'TgGame.TgPlayerController', PC) + { + // End:0xAE + if(PC.bIsPlayer && PC.IsLocalPlayerController()) + { + PC.ClientDebugPlayPotg(); + } + } + //return; +} + +exec function PlayPotGForAll() +{ + local TgPlayerController PC; + + // End:0x8B + foreach Outer.WorldInfo.AllControllers(Class'TgGame.TgPlayerController', PC) + { + // End:0x8A + if(PC.bIsPlayer) + { + PC.ClientDebugPlayPotg(); + } + } + Outer.SetTimer(0.1000000, false, 'DebugDisableAllAI'); + Outer.SetTimer(25.0000000, false, 'DebugEnableAllAI'); + //return; +} + +exec function ResetPotG() +{ + TgGame(Outer.WorldInfo.Game).ResetPlayOfTheGame(); + //return; +} + +exec function LockPotG(bool bLocked) +{ + TgGame(Outer.WorldInfo.Game).LockPlayOfTheGame(bLocked); + //return; +} + +exec function EnableAI(bool bEnabled) +{ + // End:0x38 + if(bEnabled) + { + Outer.SetTimer(0.1000000, false, 'DebugEnableAllAI'); + } + else + { + Outer.SetTimer(0.1000000, false, 'DebugDisableAllAI'); + } + //return; +} + +exec function KillProjectiles() +{ + local TgGame_PaladinsExtended ChaosSiege; + + ChaosSiege = TgGame_PaladinsExtended(Outer.WorldInfo.Game); + // End:0x74 + if(ChaosSiege != none) + { + ChaosSiege.KillAllProjectiles(); + } + //return; +} + +exec function ToggleAIDifficultyAdjust() +{ + local TgGame_Paladins ChaosGame; + + ChaosGame = TgGame_Paladins(Outer.WorldInfo.Game); + // End:0xE6 + if((ChaosGame != none) && ChaosGame.AIDirector != none) + { + ChaosGame.AIDirector.m_bFreezeAIDifficulty = !ChaosGame.AIDirector.m_bFreezeAIDifficulty; + } + //return; +} + +exec function EnableGhostMounting(bool bEnabled) +{ + TgRepInfo_Game(Outer.WorldInfo.GRI).r_bGhostMountingEnabled = bEnabled; + TgRepInfo_Game(Outer.WorldInfo.GRI).bNetDirty = true; + //return; +} + +exec function StopFog() +{ + local TgGame_Paladins_Survival Survival; + local TgChaosCapturePoint Point; + + Survival = TgGame_Paladins_Survival(Outer.WorldInfo.Game); + // End:0x127 + if(Survival != none) + { + Survival.ClearTimer('StartFogConverging'); + Survival.ClearTimer('ConvergeFog'); + Survival.ClearTimer('ResumeConvergeCompletely'); + Point = Survival.m_LastActiveCapturePoint; + // End:0x127 + if(Point != none) + { + Point.SetFogActive(false); + } + } + //return; +} + +exec function ResumeFog() +{ + local TgGame_Paladins_Survival Survival; + local TgChaosCapturePoint Point; + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(Outer.WorldInfo.GRI); + Survival = TgGame_Paladins_Survival(Outer.WorldInfo.Game); + // End:0x144 + if((Survival != none) && GRI != none) + { + Survival.SetTimer(GRI.r_fFogConvergeInterval, true, 'ConvergeFog'); + Point = Survival.m_LastActiveCapturePoint; + // End:0x144 + if(Point != none) + { + Point.SetFogActive(true); + } + } + //return; +} + +exec function SetFogDistance(int Distance) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(Outer.WorldInfo.GRI); + // End:0x7F + if(GRI != none) + { + GRI.r_fConvergeDistance = float(Distance); + } + //return; +} + +exec function PlayIntroAnim() +{ + TgPlayerController(Outer.GetALocalPlayerController()).ClientPlayIntro(); + //return; +} + +exec function SetMountSkin(int nSkinId) +{ + local TgPawn_Character TgP; + + TgP = TgPawn_Character(Outer.Pawn); + // End:0x87 + if(TgP != none) + { + TgP.r_nMountSkinId = nSkinId; + TgP.ApplyPawnSetup(); + } + //return; +} + +exec function toggleDiminishingReturns() +{ + local TgGame_Paladins PaladinsGame; + + PaladinsGame = TgGame_Paladins(Outer.WorldInfo.Game); + // End:0x96 + if(PaladinsGame != none) + { + PaladinsGame.m_bDiminishingReturnsOnCCEnabled = !PaladinsGame.m_bDiminishingReturnsOnCCEnabled; + } + //return; +} + +defaultproperties +{ + DebugCameraControllerClassName="TgGame.TgDebugCameraController" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgBeamHelper.uc b/exported/TgGame/Classes/TgBeamHelper.uc new file mode 100755 index 00000000..b835c93a --- /dev/null +++ b/exported/TgGame/Classes/TgBeamHelper.uc @@ -0,0 +1,66 @@ +class TgBeamHelper extends TgObject + native(BeamHelper); + +var int m_nSpecialFxId; +var TgSpecialFx m_pSpecialFx; +var export editinline array m_pPSCList; +var bool m_bVisibilityEnabled; +var bool m_bCurrentlyVisible; +var bool m_bRequiresTarget; +var bool m_bTangentsEnabled; +var Vector m_vInitialTangent; +var Actor m_pOwner; +var Actor m_pTarget; +var export editinline MeshComponent m_pAttachMesh; +var name m_nmAttachMeshSocket; + +// Export UTgBeamHelper::execCreate(FFrame&, void* const) +native static function TgBeamHelper Create(int nSpecialFxId); + +// Export UTgBeamHelper::execCreateFromFx(FFrame&, void* const) +native static function TgBeamHelper CreateFromFx(TgSpecialFx pSpecialFx); + +// Export UTgBeamHelper::execInitialize(FFrame&, void* const) +native function Initialize(int nSpecialFxId); + +// Export UTgBeamHelper::execInitializeFromFx(FFrame&, void* const) +native function InitializeFromFx(TgSpecialFx pSpecialFx); + +// Export UTgBeamHelper::execSetEndPoint(FFrame&, void* const) +native function SetEndPoint(Vector vEndPoint); + +// Export UTgBeamHelper::execSetTangents(FFrame&, void* const) +native function SetTangents(Vector vSourceTangent, Vector vTargetTangent); + +// Export UTgBeamHelper::execSetTangentsMulti(FFrame&, void* const) +native function SetTangentsMulti(array vSourceTangents, array vTargetTangents); + +// Export UTgBeamHelper::execTick(FFrame&, void* const) +native function Tick(float fDeltaSeconds); + +// Export UTgBeamHelper::execAttachToOwner(FFrame&, void* const) +native function AttachToOwner(Actor pOwner); + +// Export UTgBeamHelper::execAttachToMesh(FFrame&, void* const) +native function AttachToMesh(MeshComponent pMesh, name nmSocket); + +// Export UTgBeamHelper::execAttachToTarget(FFrame&, void* const) +native function AttachToTarget(Actor pTarget); + +// Export UTgBeamHelper::execActivate(FFrame&, void* const) +native function Activate(); + +// Export UTgBeamHelper::execDeactivate(FFrame&, void* const) +native function Deactivate(bool bForceDeactivate); + +// Export UTgBeamHelper::execSetVisible(FFrame&, void* const) +native function SetVisible(bool bVisible); + +// Export UTgBeamHelper::execEnableTangents(FFrame&, void* const) +native function EnableTangents(); + +defaultproperties +{ + m_bCurrentlyVisible=true + m_vInitialTangent=(X=30.0000000,Y=0.0000000,Z=0.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgBeamHelper_TheLaw.uc b/exported/TgGame/Classes/TgBeamHelper_TheLaw.uc new file mode 100755 index 00000000..4d0f27c3 --- /dev/null +++ b/exported/TgGame/Classes/TgBeamHelper_TheLaw.uc @@ -0,0 +1,7 @@ +class TgBeamHelper_TheLaw extends TgBeamHelper + native(ChampLex); + +defaultproperties +{ + m_vInitialTangent=(X=100.0000000,Y=0.0000000,Z=0.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgBlockingVolume.uc b/exported/TgGame/Classes/TgBlockingVolume.uc new file mode 100755 index 00000000..94c6bcdd --- /dev/null +++ b/exported/TgGame/Classes/TgBlockingVolume.uc @@ -0,0 +1,18 @@ +class TgBlockingVolume extends BlockingVolume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +defaultproperties +{ + // Reference: BrushComponent'TgGame.Default__TgBlockingVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__BlockingVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bWorldGeometry=false + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgBossBlockDynamicVolume.uc b/exported/TgGame/Classes/TgBossBlockDynamicVolume.uc new file mode 100755 index 00000000..42757cb1 --- /dev/null +++ b/exported/TgGame/Classes/TgBossBlockDynamicVolume.uc @@ -0,0 +1,17 @@ +class TgBossBlockDynamicVolume extends DynamicBlockingVolume + native(Volumes) + hidecategories(Navigation,Object,Display); + +defaultproperties +{ + // Reference: BrushComponent'TgGame.Default__TgBossBlockDynamicVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__DynamicBlockingVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgBossBlockVolume.uc b/exported/TgGame/Classes/TgBossBlockVolume.uc new file mode 100755 index 00000000..03c28317 --- /dev/null +++ b/exported/TgGame/Classes/TgBossBlockVolume.uc @@ -0,0 +1,17 @@ +class TgBossBlockVolume extends BlockingVolume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +defaultproperties +{ + // Reference: BrushComponent'TgGame.Default__TgBossBlockVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__BlockingVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgBotEncounterVolume.uc b/exported/TgGame/Classes/TgBotEncounterVolume.uc new file mode 100755 index 00000000..64b75312 --- /dev/null +++ b/exported/TgGame/Classes/TgBotEncounterVolume.uc @@ -0,0 +1,109 @@ +class TgBotEncounterVolume extends Volume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +var(BotFactory) const array m_Factories; +var int m_nPlayers; + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x31 + if(int(Role) == int(ROLE_Authority)) + { + SetTimer(1.0000000, true, 'CheckTouching'); + } + //return; +} + +function CheckTouching() +{ + local TgPawn P; + local TgBotFactory Factory; + local int I, Count; + + Count = 0; + // End:0x52 + foreach TouchingActors(Class'TgGame.TgPawn', P) + { + // End:0x51 + if(P.IsHumanControlled()) + { + Count++; + } + } + // End:0x225 + if(Count != m_nPlayers) + { + // End:0x11C + if(Count <= 0) + { + I = 0; + J0x84: + + // End:0x119 [Loop If] + if(I < m_Factories.Length) + { + Factory = m_Factories[I]; + // End:0x10B + if((Factory != none) && Factory.bRespawn) + { + Factory.EndEncounter(); + } + I++; + // [Loop Continue] + goto J0x84; + } + } + else + { + I = 0; + J0x127: + + // End:0x225 [Loop If] + if(I < m_Factories.Length) + { + Factory = m_Factories[I]; + // End:0x217 + if(Factory != none) + { + // End:0x1D8 + if(!Factory.bAutoSpawn || Factory.nCurrentCount <= 0) + { + Factory.StartEncounter(self); + } + else + { + Factory.ContinueEncounter(); + } + // End:0x217 + if((m_nPlayers <= 1) && Count > 1) + { + } + } + I++; + // [Loop Continue] + goto J0x127; + } + } + } + m_nPlayers = Count; + //return; +} + +defaultproperties +{ + BrushColor=(R=200,G=50,B=0,A=255) + bColored=true + // Reference: BrushComponent'TgGame.Default__TgBotEncounterVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bStatic=false + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgBotFactory.uc b/exported/TgGame/Classes/TgBotFactory.uc new file mode 100755 index 00000000..ead834ae --- /dev/null +++ b/exported/TgGame/Classes/TgBotFactory.uc @@ -0,0 +1,412 @@ +class TgBotFactory extends TgActorFactory + native(Factory) + placeable + hidecategories(Navigation,Advanced,Attachment,Collision,Display,Advanced,Attachment,Collision,Display,Movement); + +const BOT_ENCOUNTER_DESPAWN_TIME = 60; + +enum eBotSelection +{ + BS_RANDOM, // 0 + BS_SEQUENTIAL, // 1 + BS_MAX // 2 +}; + +struct native SpawnQueueEntry +{ + var float fSpawnTime; + var int nBotId; + var int nSkinId; + var int nWeaponSkinId; + var int nSpawnTableDetailId; + var name BehaviorTreeOverride; + + structdefaultproperties + { + fSpawnTime=0.0000000 + nBotId=0 + nSkinId=0 + nWeaponSkinId=0 + nSpawnTableDetailId=0 + BehaviorTreeOverride="None" + } +}; + +var() TgBotFactory.eBotSelection LocationSelection; +var(BotFactory) const array LocationList; +var int s_nCurLocationIndex; +var(BotFactory) NavigationPoint SafetyLocation; +var(BotFactory) bool ShouldTraceSpawnLocationToFloor; +var(BotFactory) bool bUseSmiteStaggerSpawning; +var(BotFactory) bool bSpawnAsSquad; +var bool bAutoSpawn; +var bool m_bFirstSpawn; +var() bool bBulkSpawn; +var() bool bRespawn; +var(Introduction) bool bStartBotsInIntroState; +var(Introduction) bool bHasDifferentInitialIntro; +var bool m_bFirstSpawnWave; +var() bool m_bIgnoreCollisionOnSpawn; +var() bool m_bUseCollisionHeightForSpawnPlacement; +var int nBotCount; +var int nCurrentCount; +var(BotFactory) int nActiveCount; +var int nTotalSpawns; +var(BotFactory) int nLane; +var(BotFactory) int nNavPointsToSkipForPathing; +var(BotFactory) float fStaggerSpawnDelay; +var transient TgAISquad s_CurrentSquad; +var Class m_SquadClass; +var() int m_nLocationId; +var() int nSpawnTableId; +var() int nDefaultSpawnTableId; +var() float fSpawnDelay; +var array m_SpawnQueue; +var TgBotEncounterVolume m_SpawnVolume; +var int m_nLastGroup; +var() float fSpawnHealthPercent; +var(Introduction) float fIntroductionDuration; +var(Introduction) float fInitialIntroductionDuration; +var(LanePusher) TgSplineActor m_StartingSpline; +var() export editinline StaticMeshComponent m_RespawnIndicator; +var transient MaterialInstanceConstant m_RespawnIndicatorMIC; +var Texture2D m_TextureNormal; +var float fLastKillTime; +var() float fRespawnDelay; + +// Export UTgBotFactory::execLoadObjectConfig(FFrame&, void* const) +native function LoadObjectConfig(); + +// Export UTgBotFactory::execResetQueue(FFrame&, void* const) +native function ResetQueue(); + +// Export UTgBotFactory::execBuildQueue(FFrame&, void* const) +native function BuildQueue(); + +// Export UTgBotFactory::execClearQueue(FFrame&, void* const) +native function ClearQueue(); + +// Export UTgBotFactory::execSpawnBot(FFrame&, void* const) +native function Actor SpawnBot(); + +// Export UTgBotFactory::execSpawnNextBot(FFrame&, void* const) +native function Actor SpawnNextBot(); + +// Export UTgBotFactory::execSpawnBotId(FFrame&, void* const) +native function Actor SpawnBotId(int nBotId, int nSkinId); + +// Export UTgBotFactory::execSpawnBotAdjusted(FFrame&, void* const) +native function Actor SpawnBotAdjusted(SpawnQueueEntry Entry); + +// Export UTgBotFactory::execCalcFactoryPlacement(FFrame&, void* const) +native function CalcFactoryPlacement(Vector Extent, bool bCenterOnGround, out Vector OutLocation, out Rotator OutRotation); + +// Export UTgBotFactory::execUseSpawnTable(FFrame&, void* const) +native function Actor UseSpawnTable(); + +// Export UTgBotFactory::execBotDied(FFrame&, void* const) +native function BotDied(TgPawn Pawn, TgAIController aic); + +// Export UTgBotFactory::execSquadDied(FFrame&, void* const) +native function SquadDied(TgAISquad squad); + +// Export UTgBotFactory::execKillCurrentSquad(FFrame&, void* const) +native function KillCurrentSquad(); + +// Export UTgBotFactory::execGetRemainingTotalSpawns(FFrame&, void* const) +native function int GetRemainingTotalSpawns(); + +// Export UTgBotFactory::execGetStaggerSpawnTime(FFrame&, void* const) +native function float GetStaggerSpawnTime(); + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x52 + if(int(Role) == int(ROLE_Authority)) + { + ResetQueue(); + // End:0x3F + if(bAutoSpawn) + { + SpawnNextBot(); + } + nDefaultSpawnTableId = nSpawnTableId; + } + // End:0x8B + if(m_RespawnIndicator != none) + { + m_RespawnIndicatorMIC = m_RespawnIndicator.CreateAndSetMaterialInstanceConstant(0); + } + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x46 + if(Action.InputLinks[0].bHasImpulse) + { + bAutoSpawn = true; + } + else + { + // End:0x8C + if(Action.InputLinks[1].bHasImpulse) + { + bAutoSpawn = false; + } + else + { + // End:0xDB + if(Action.InputLinks[2].bHasImpulse) + { + bAutoSpawn = !bAutoSpawn; + } + } + } + // End:0xFC + if(bAutoSpawn) + { + ResetQueue(); + SpawnNextBot(); + } + //return; +} + +function OnKillBots(TgSeqAct_KillBots inAction) +{ + KillBots(false); + //return; +} + +function OnDespawnBots(TgSeqAct_DespawnBots inAction) +{ + Despawn(); + //return; +} + +event EndEncounter() +{ + // End:0x2C + if(!IsTimerActive('Despawn')) + { + SetTimer(60.0000000, false, 'Despawn'); + } + //return; +} + +event ContinueEncounter() +{ + ClearTimer('Despawn'); + //return; +} + +event StartEncounter(TgBotEncounterVolume Volume) +{ + ClearTimer('Despawn'); + m_SpawnVolume = Volume; + bAutoSpawn = true; + ResetQueue(); + SpawnNextBot(); + //return; +} + +function Despawn() +{ + bAutoSpawn = false; + ClearQueue(); + KillBots(true); + //return; +} + +event KillBots(bool bDespawn) +{ + local TgAIController aic; + local TgPawn Pawn; + + // End:0x10A + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController', aic) + { + // End:0x109 + if(aic.m_pFactory == self) + { + Pawn = TgPawn(aic.Pawn); + // End:0x9C + if(Pawn == none) + { + continue; + } + // End:0xCB + if(bDespawn) + { + aic.Despawn(); + } + else + { + Pawn.Suicide(); + } + Pawn.KillPets(); + } + } + //return; +} + +simulated function OnTriggerBots(TgSeqAct_TriggerBots Action) +{ + local TgAIController aic; + + // End:0x81 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController', aic) + { + // End:0x80 + if(aic.m_pFactory == self) + { + aic.OnTriggerBots(Action); + } + } + //return; +} + +simulated function OnSetTaskforce(TgSeqAct_SetTaskforce Action) +{ + local TgAIController aic; + + // End:0x81 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController', aic) + { + // End:0x80 + if(aic.m_pFactory == self) + { + aic.OnSetTaskforce(Action); + } + } + //return; +} + +function OnGetBot(TgSeqAct_GetBot inAction) +{ + local TgAIController aic; + local int nCount; + + // End:0x213 + if(((inAction != none) && inAction.VariableLinks.Length >= 3) && inAction.VariableLinks[2].LinkedVariables.Length >= 1) + { + SeqVar_Object(inAction.VariableLinks[2].LinkedVariables[0]).SetObjectValue(none); + // End:0x213 + if(inAction.InputLinks[0].bHasImpulse) + { + nCount = 0; + // End:0x212 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController', aic) + { + // End:0x211 + if(aic.m_pFactory == self) + { + // End:0x206 + if(nCount == inAction.m_nBotNumber) + { + SeqVar_Object(inAction.VariableLinks[2].LinkedVariables[0]).SetObjectValue(aic.Pawn); + return; + } + nCount++; + } + } + } + } + //return; +} + +function OnBotDamaged(TgPawn Bot, Controller DamageInstigator, Class DamageType, int DamageAmount) +{ + local int Idx; + local SeqEvent_TakeDamage dmgEvent; + + Idx = 0; + J0x0B: + + // End:0xA9 [Loop If] + if(Idx < GeneratedEvents.Length) + { + dmgEvent = SeqEvent_TakeDamage(GeneratedEvents[Idx]); + // End:0x9B + if(dmgEvent != none) + { + dmgEvent.HandleDamage(Bot, DamageInstigator, DamageType, DamageAmount); + } + Idx++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated function UpdateRespawnTimeIndicator(float fPct) +{ + // End:0xA3 + if(m_RespawnIndicator != none) + { + // End:0x83 + if(fPct > float(0)) + { + m_RespawnIndicator.SetHidden(false); + // End:0x80 + if(m_RespawnIndicatorMIC != none) + { + m_RespawnIndicatorMIC.SetScalarParameterValue('Perc', fPct); + } + } + else + { + m_RespawnIndicator.SetHidden(true); + } + } + //return; +} + +function OnKillCurrentSquad(TgSeqAct_KillCurrentSquad killSquadAction) +{ + KillCurrentSquad(); + //return; +} + +defaultproperties +{ + LocationSelection=eBotSelection.BS_SEQUENTIAL + s_nCurLocationIndex=-1 + ShouldTraceSpawnLocationToFloor=true + bAutoSpawn=true + m_bFirstSpawn=true + m_bFirstSpawnWave=true + nLane=-1 + nNavPointsToSkipForPathing=3 + m_SquadClass=Class'TgGame.TgAISquad' + fSpawnDelay=0.2000000 + fSpawnHealthPercent=1.0000000 + // Reference: TgStaticMeshComponent'TgGame.Default__TgBotFactory.RespawnIndicator' + // TemplateOwnerClass: none + // TemplateOwnerName: 'RespawnIndicator' + begin object name="RespawnIndicator" class=TgGame.TgStaticMeshComponent + ReplacementPrimitive=none + HiddenGame=true + end object + m_RespawnIndicator=RespawnIndicator + m_TextureNormal=Texture2D'TgEditorAssets.BotIconTemp' + fLastKillTime=-1.0000000 + fRespawnDelay=0.2000000 + m_nSelectionListPropId=179 + s_nCurListIndex=-1 + // Reference: SpriteComponent'TgGame.Default__TgBotFactory.WorldIcon' + // TemplateOwnerClass: none + // TemplateOwnerName: 'WorldIcon' + // Archetype: SpriteComponent'TgGame.Default__TgActorFactory.WorldIcon' + begin object name="WorldIcon" + ReplacementPrimitive=none + end object + m_WorldIconSprite=WorldIcon + Components[0]=none + Components[1]=WorldIcon + Components[2]=none + Components[3]=RespawnIndicator + Components[4]=none + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgBotFactoryComponent.uc b/exported/TgGame/Classes/TgBotFactoryComponent.uc new file mode 100755 index 00000000..c283e01a --- /dev/null +++ b/exported/TgGame/Classes/TgBotFactoryComponent.uc @@ -0,0 +1,12 @@ +class TgBotFactoryComponent extends PrimitiveComponent + native(Factory) + editinlinenew + hidecategories(Object); + +defaultproperties +{ + ReplacementPrimitive=none + HiddenGame=true + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgBotFactorySpawnable.uc b/exported/TgGame/Classes/TgBotFactorySpawnable.uc new file mode 100755 index 00000000..c1f4d0e4 --- /dev/null +++ b/exported/TgGame/Classes/TgBotFactorySpawnable.uc @@ -0,0 +1,30 @@ +class TgBotFactorySpawnable extends TgBotFactory + native(Factory) + placeable + hidecategories(Navigation,Advanced,Attachment,Collision,Display,Advanced,Attachment,Collision,Display,Movement); + +defaultproperties +{ + // Reference: TgStaticMeshComponent'TgGame.Default__TgBotFactorySpawnable.RespawnIndicator' + // TemplateOwnerClass: none + // TemplateOwnerName: 'RespawnIndicator' + // Archetype: TgStaticMeshComponent'TgGame.Default__TgBotFactory.RespawnIndicator' + begin object name="RespawnIndicator" + ReplacementPrimitive=none + end object + m_RespawnIndicator=RespawnIndicator + // Reference: SpriteComponent'TgGame.Default__TgBotFactorySpawnable.WorldIcon' + // TemplateOwnerClass: none + // TemplateOwnerName: 'WorldIcon' + // Archetype: SpriteComponent'TgGame.Default__TgBotFactory.WorldIcon' + begin object name="WorldIcon" + ReplacementPrimitive=none + end object + m_WorldIconSprite=WorldIcon + Components[0]=none + Components[1]=WorldIcon + Components[2]=none + Components[3]=RespawnIndicator + Components[4]=none + bNoDelete=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgBotFactory_BonusTrigger.uc b/exported/TgGame/Classes/TgBotFactory_BonusTrigger.uc new file mode 100755 index 00000000..b3093902 --- /dev/null +++ b/exported/TgGame/Classes/TgBotFactory_BonusTrigger.uc @@ -0,0 +1,29 @@ +class TgBotFactory_BonusTrigger extends TgBotFactory + native(Factory) + placeable + hidecategories(Navigation,Advanced,Attachment,Collision,Display,Advanced,Attachment,Collision,Display,Movement); + +defaultproperties +{ + // Reference: TgStaticMeshComponent'TgGame.Default__TgBotFactory_BonusTrigger.RespawnIndicator' + // TemplateOwnerClass: none + // TemplateOwnerName: 'RespawnIndicator' + // Archetype: TgStaticMeshComponent'TgGame.Default__TgBotFactory.RespawnIndicator' + begin object name="RespawnIndicator" + ReplacementPrimitive=none + end object + m_RespawnIndicator=RespawnIndicator + // Reference: SpriteComponent'TgGame.Default__TgBotFactory_BonusTrigger.WorldIcon' + // TemplateOwnerClass: none + // TemplateOwnerName: 'WorldIcon' + // Archetype: SpriteComponent'TgGame.Default__TgBotFactory.WorldIcon' + begin object name="WorldIcon" + ReplacementPrimitive=none + end object + m_WorldIconSprite=WorldIcon + Components[0]=none + Components[1]=WorldIcon + Components[2]=none + Components[3]=RespawnIndicator + Components[4]=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgBotFactory_Leashed.uc b/exported/TgGame/Classes/TgBotFactory_Leashed.uc new file mode 100755 index 00000000..6939a116 --- /dev/null +++ b/exported/TgGame/Classes/TgBotFactory_Leashed.uc @@ -0,0 +1,36 @@ +class TgBotFactory_Leashed extends TgBotFactory + native(Factory) + placeable + hidecategories(Navigation,Advanced,Attachment,Collision,Display,Advanced,Attachment,Collision,Display,Movement); + +var(Leashing) Vector LeashLocation; +var(Leashing) float LeashRange; +var(Leashing) Volume LeashVolume; + +// Export UTgBotFactory_Leashed::execSpawnBotAdjusted(FFrame&, void* const) +native function Actor SpawnBotAdjusted(SpawnQueueEntry Entry); + +defaultproperties +{ + // Reference: TgStaticMeshComponent'TgGame.Default__TgBotFactory_Leashed.RespawnIndicator' + // TemplateOwnerClass: none + // TemplateOwnerName: 'RespawnIndicator' + // Archetype: TgStaticMeshComponent'TgGame.Default__TgBotFactory.RespawnIndicator' + begin object name="RespawnIndicator" + ReplacementPrimitive=none + end object + m_RespawnIndicator=RespawnIndicator + // Reference: SpriteComponent'TgGame.Default__TgBotFactory_Leashed.WorldIcon' + // TemplateOwnerClass: none + // TemplateOwnerName: 'WorldIcon' + // Archetype: SpriteComponent'TgGame.Default__TgBotFactory.WorldIcon' + begin object name="WorldIcon" + ReplacementPrimitive=none + end object + m_WorldIconSprite=WorldIcon + Components[0]=none + Components[1]=WorldIcon + Components[2]=none + Components[3]=RespawnIndicator + Components[4]=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgBotFactory_Minions.uc b/exported/TgGame/Classes/TgBotFactory_Minions.uc new file mode 100755 index 00000000..72dc8dd0 --- /dev/null +++ b/exported/TgGame/Classes/TgBotFactory_Minions.uc @@ -0,0 +1,66 @@ +class TgBotFactory_Minions extends TgBotFactory + native(Factory) + placeable + hidecategories(Navigation,Advanced,Attachment,Collision,Display,Advanced,Attachment,Collision,Display,Movement); + +enum MinionFactoryType +{ + MFT_Conquest, // 0 + MFT_Joust, // 1 + MFT_Assault, // 2 + MFT_Mayan, // 3 + MFT_Other, // 4 + MFT_MAX // 5 +}; + +var() TgBotFactory_Minions.MinionFactoryType m_eFactoryType; +var transient bool m_OverrideShouldSpawnSuperMinions; +var transient int m_nWaveNumber; +var transient int m_nLastBonusWave; +var transient int m_nLanePushersInQueue; +var transient float m_fLastBonusActivationTime; +var transient float m_fSuperMinionEndTime; + +// Export UTgBotFactory_Minions::execSetSuperMinionsActive(FFrame&, void* const) +native function SetSuperMinionsActive(float fSeconds); + +// Export UTgBotFactory_Minions::execShouldSpawnSuperMinions(FFrame&, void* const) +native function bool ShouldSpawnSuperMinions(); + +// Export UTgBotFactory_Minions::execShouldSpawnBonusMinions(FFrame&, void* const) +native function bool ShouldSpawnBonusMinions(); + +// Export UTgBotFactory_Minions::execBuildQueue(FFrame&, void* const) +native function BuildQueue(); + +// Export UTgBotFactory_Minions::execBotDied(FFrame&, void* const) +native function BotDied(TgPawn Pawn, TgAIController aic); + +defaultproperties +{ + m_eFactoryType=MinionFactoryType.MFT_Other + bUseSmiteStaggerSpawning=true + bSpawnAsSquad=true + m_SquadClass=Class'TgGame.TgAISquad_Minion' + // Reference: TgStaticMeshComponent'TgGame.Default__TgBotFactory_Minions.RespawnIndicator' + // TemplateOwnerClass: none + // TemplateOwnerName: 'RespawnIndicator' + // Archetype: TgStaticMeshComponent'TgGame.Default__TgBotFactory.RespawnIndicator' + begin object name="RespawnIndicator" + ReplacementPrimitive=none + end object + m_RespawnIndicator=RespawnIndicator + // Reference: SpriteComponent'TgGame.Default__TgBotFactory_Minions.WorldIcon' + // TemplateOwnerClass: none + // TemplateOwnerName: 'WorldIcon' + // Archetype: SpriteComponent'TgGame.Default__TgBotFactory.WorldIcon' + begin object name="WorldIcon" + ReplacementPrimitive=none + end object + m_WorldIconSprite=WorldIcon + Components[0]=none + Components[1]=WorldIcon + Components[2]=none + Components[3]=RespawnIndicator + Components[4]=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgBotFactory_PointCapture.uc b/exported/TgGame/Classes/TgBotFactory_PointCapture.uc new file mode 100755 index 00000000..00f95990 --- /dev/null +++ b/exported/TgGame/Classes/TgBotFactory_PointCapture.uc @@ -0,0 +1,36 @@ +class TgBotFactory_PointCapture extends TgBotFactory_Leashed + native(Factory) + placeable + hidecategories(Navigation,Advanced,Attachment,Collision,Display,Advanced,Attachment,Collision,Display,Movement); + +var transient TgCapturePoint m_CapturePoint; + +// Export UTgBotFactory_PointCapture::execBotDied(FFrame&, void* const) +native function BotDied(TgPawn Pawn, TgAIController aic); + +defaultproperties +{ + bSpawnAsSquad=true + bAutoSpawn=false + // Reference: TgStaticMeshComponent'TgGame.Default__TgBotFactory_PointCapture.RespawnIndicator' + // TemplateOwnerClass: none + // TemplateOwnerName: 'RespawnIndicator' + // Archetype: TgStaticMeshComponent'TgGame.Default__TgBotFactory_Leashed.RespawnIndicator' + begin object name="RespawnIndicator" + ReplacementPrimitive=none + end object + m_RespawnIndicator=RespawnIndicator + // Reference: SpriteComponent'TgGame.Default__TgBotFactory_PointCapture.WorldIcon' + // TemplateOwnerClass: none + // TemplateOwnerName: 'WorldIcon' + // Archetype: SpriteComponent'TgGame.Default__TgBotFactory_Leashed.WorldIcon' + begin object name="WorldIcon" + ReplacementPrimitive=none + end object + m_WorldIconSprite=WorldIcon + Components[0]=none + Components[1]=WorldIcon + Components[2]=none + Components[3]=RespawnIndicator + Components[4]=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgBotStart.uc b/exported/TgGame/Classes/TgBotStart.uc new file mode 100755 index 00000000..19d7d121 --- /dev/null +++ b/exported/TgGame/Classes/TgBotStart.uc @@ -0,0 +1,20 @@ +class TgBotStart extends TgNavigationPoint + hidecategories(Navigation,Lighting,LightColor,Force); + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgBotStart.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgNavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCTFFlagBase.uc b/exported/TgGame/Classes/TgCTFFlagBase.uc new file mode 100755 index 00000000..6aca42bf --- /dev/null +++ b/exported/TgGame/Classes/TgCTFFlagBase.uc @@ -0,0 +1,128 @@ +class TgCTFFlagBase extends Actor + placeable + hidecategories(Navigation); + +var() const int m_nDefenderTaskForce; +var transient TgCarriedFlag m_SpawnedFlag; +var transient TgGame_CTF m_CTFGame; + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x7E + if(int(Role) == int(ROLE_Authority)) + { + m_CTFGame = TgGame_CTF(WorldInfo.Game); + // End:0x7E + if(m_CTFGame != none) + { + m_CTFGame.RegisterFlagBase(self); + } + } + //return; +} + +function CheckTouching() +{ + local int I; + local TgPawn_Character TgP; + local TgRepInfo_Player PRI; + + // End:0x3C + if((m_CTFGame == none) || int(m_CTFGame.m_eTimerState) != int(3)) + { + return; + } + I = 0; + J0x47: + + // End:0x1AA [Loop If] + if(I < Touching.Length) + { + TgP = TgPawn_Character(Touching[I]); + // End:0x19C + if(TgP != none) + { + PRI = TgRepInfo_Player(TgP.PlayerReplicationInfo); + // End:0x19C + if(((PRI != none) && PRI.s_CarriedFlag != none) && PRI.s_CarriedFlag.r_nDefenderTaskForce != m_nDefenderTaskForce) + { + m_CTFGame.ScoreFlag(TgP); + PRI.s_CarriedFlag.SendHome(); + // [Explicit Break] + goto J0x1AA; + } + } + I++; + // [Loop Continue] + goto J0x47; + } + J0x1AA: + + //return; +} + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn_Character FlagCarrier; + + FlagCarrier = TgPawn_Character(Other); + // End:0x125 + if(((((FlagCarrier != none) && FlagCarrier.m_CurrentFlag != none) && FlagCarrier.m_CurrentFlag.r_nDefenderTaskForce != m_nDefenderTaskForce) && m_CTFGame != none) && m_SpawnedFlag.r_bIsHome) + { + m_CTFGame.ScoreFlag(FlagCarrier); + FlagCarrier.m_CurrentFlag.SendHome(); + } + //return; +} + +function SpawnFlag() +{ + // End:0x27 + if(m_SpawnedFlag != none) + { + m_SpawnedFlag.Destroy(); + } + m_SpawnedFlag = Spawn(Class'TgGame.TgCarriedFlag', self,, Location, Rotation,, true); + m_SpawnedFlag.r_nDefenderTaskForce = m_nDefenderTaskForce; + m_SpawnedFlag.s_FlagBase = self; + //return; +} + +function DestroyFlag() +{ + // End:0x11 + if(m_SpawnedFlag == none) + { + return; + } + m_SpawnedFlag.ClearHolder(); + m_SpawnedFlag.SetHidden(true); + m_SpawnedFlag.SetCollision(false, false); + m_SpawnedFlag.Destroy(); + m_SpawnedFlag = none; + //return; +} + +defaultproperties +{ + m_nDefenderTaskForce=1 + Components[0]=none + // Reference: CylinderComponent'TgGame.Default__TgCTFFlagBase.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=50.0000000 + CollisionRadius=200.0000000 + ReplacementPrimitive=none + CollideActors=true + BlockZeroExtent=false + end object + Components[1]=CollisionCylinder + RemoteRole=ENetRole.ROLE_SimulatedProxy + bNoDelete=true + bAlwaysRelevant=true + bCollideActors=true + NetPriority=2.0000000 + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCTFVolume.uc b/exported/TgGame/Classes/TgCTFVolume.uc new file mode 100755 index 00000000..2ae55983 --- /dev/null +++ b/exported/TgGame/Classes/TgCTFVolume.uc @@ -0,0 +1,88 @@ +class TgCTFVolume extends PhysicsVolume + hidecategories(Navigation,Object,Movement,Display); + +var() int m_nDefenderTeamIndex; + +function TimerPop(VolumeTimer T) +{ + local array TgPawns; + local TgPawn_Character TgP; + local int I; + + // End:0x10E + if(T == PainTimer) + { + // End:0x28 + if(!bPainCausing) + { + return; + } + // End:0x8F + foreach TouchingActors(Class'TgGame.TgPawn_Character', TgP) + { + // End:0x8E + if((IsValidToucher(TgP)) && TgPawns.Find(TgP) == -1) + { + TgPawns.AddItem(TgP); + } + } + // End:0x10E + if(TgPawns.Length > 3) + { + TgPawns.Sort(SortByTimestamp); + I = 3; + J0xCB: + + // End:0x10E [Loop If] + if(I < TgPawns.Length) + { + CausePainTo(TgPawns[I]); + I++; + // [Loop Continue] + goto J0xCB; + } + } + } + //return; +} + +function bool IsValidToucher(TgPawn_Character TgP) +{ + return ((TgP.Health > 0) && int(TgP.GetTaskForceNumber()) != m_nDefenderTeamIndex) && TgP.IsHumanControlled(); + //return ReturnValue; +} + +function int SortByTimestamp(TgPawn A, TgPawn B) +{ + return ((A.m_fLastCTFVolumeTimestamp > B.m_fLastCTFVolumeTimestamp) ? -1 : 0); + //return ReturnValue; +} + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn_Character TgP; + + super.Touch(Other, OtherComp, HitLocation, HitNormal); + TgP = TgPawn_Character(Other); + // End:0xAE + if((TgP != none) && IsValidToucher(TgP)) + { + TgP.m_fLastCTFVolumeTimestamp = WorldInfo.TimeSeconds; + } + //return; +} + +defaultproperties +{ + m_nDefenderTeamIndex=1 + // Reference: BrushComponent'TgGame.Default__TgCTFVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__PhysicsVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCallbackContainer.uc b/exported/TgGame/Classes/TgCallbackContainer.uc new file mode 100755 index 00000000..f7c0da54 --- /dev/null +++ b/exported/TgGame/Classes/TgCallbackContainer.uc @@ -0,0 +1,19 @@ +class TgCallbackContainer extends Object + native(TgCallbacks); + +struct native FunctionWrapperInfo +{ + var native Pointer FunctionWrapper; + var byte CallbackType; + var TgCallbackContainer HandleOwner; + + structdefaultproperties + { + CallbackType=0 + HandleOwner=none + } +}; + +var private native const MultiMap_Mirror m_RegisteredCallbacks; +var private native const Map_Mirror m_RegisteredCallbacksByHandle; +var private native const Map_Mirror m_CallbackHandles; diff --git a/exported/TgGame/Classes/TgCallbackInterface.uc b/exported/TgGame/Classes/TgCallbackInterface.uc new file mode 100755 index 00000000..3b551e41 --- /dev/null +++ b/exported/TgGame/Classes/TgCallbackInterface.uc @@ -0,0 +1,3 @@ +interface TgCallbackInterface extends Interface + abstract + native(TgCallbacks); diff --git a/exported/TgGame/Classes/TgCameraModifier_LobbyCameraTransition.uc b/exported/TgGame/Classes/TgCameraModifier_LobbyCameraTransition.uc new file mode 100755 index 00000000..793a23c0 --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModifier_LobbyCameraTransition.uc @@ -0,0 +1,62 @@ +class TgCameraModifier_LobbyCameraTransition extends CameraModifier + native(View); + +enum CameraTransType +{ + CTT_None, // 0 + CTT_PanRight, // 1 + CTT_PanLeft, // 2 + CTT_PanUp, // 3 + CTT_PanDown, // 4 + CTT_MAX // 5 +}; + +var TgLobbyCamera SourceCamera; +var TgLobbyCamera DestinationCamera; +var TgCameraModifier_LobbyCameraTransition.CameraTransType TransitionType; +var float fSlideDistance; + +// Export UTgCameraModifier_LobbyCameraTransition::execModifyCamera(FFrame&, void* const) +native function bool ModifyCamera(Camera Camera, float DeltaTime, out TPOV OutPOV); + +event AddCameraModifierAsEvent(Camera Cam) +{ + AddCameraModifier(Cam); + //return; +} + +event RemoveCameraModifierAsEvent(Camera Cam) +{ + RemoveCameraModifier(Cam); + //return; +} + +event DisableModifier(optional bool bImmediate) +{ + super.DisableModifier(bImmediate); + RemoveCameraModifier(CameraOwner); + //return; +} + +function bool RemoveCameraModifier(Camera Camera) +{ + // End:0x5B + if(super.RemoveCameraModifier(Camera)) + { + bDisabled = true; + Camera.bEnableFading = false; + SourceCamera = none; + DestinationCamera = none; + return true; + } + return false; + //return ReturnValue; +} + +defaultproperties +{ + TransitionType=CameraTransType.CTT_PanRight + fSlideDistance=150.0000000 + AlphaInTime=0.2500000 + AlphaOutTime=0.1800000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCameraModifier_LobbyFade.uc b/exported/TgGame/Classes/TgCameraModifier_LobbyFade.uc new file mode 100755 index 00000000..e63d8cca --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModifier_LobbyFade.uc @@ -0,0 +1,11 @@ +class TgCameraModifier_LobbyFade extends CameraModifier + native(View); + +// Export UTgCameraModifier_LobbyFade::execModifyCamera(FFrame&, void* const) +native function bool ModifyCamera(Camera Camera, float DeltaTime, out TPOV OutPOV); + +defaultproperties +{ + AlphaInTime=0.3000000 + AlphaOutTime=0.3000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCameraModule.uc b/exported/TgGame/Classes/TgCameraModule.uc new file mode 100755 index 00000000..711732d0 --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule.uc @@ -0,0 +1,50 @@ +class TgCameraModule extends Object + abstract + native(View); + +var transient TgPlayerCamera PlayerCamera; + +function Init() +{ + //return; +} + +function OnBecomeActive(TgCameraModule OldCamera) +{ + //return; +} + +function OnBecomeInActive(TgCameraModule NewCamera) +{ + //return; +} + +function OnTweenOutEnd() +{ + //return; +} + +function UpdateCamera(Pawn P, TgPlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT) +{ + //return; +} + +function ProcessInput(PlayerInput PlayerInput, float DeltaTime) +{ + //return; +} + +simulated function BecomeViewTarget(TgPlayerController PC) +{ + //return; +} + +function zoomIn() +{ + //return; +} + +function ZoomOut() +{ + //return; +} diff --git a/exported/TgGame/Classes/TgCameraModule_Attached.uc b/exported/TgGame/Classes/TgCameraModule_Attached.uc new file mode 100755 index 00000000..9e6eaa88 --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_Attached.uc @@ -0,0 +1,44 @@ +class TgCameraModule_Attached extends TgCameraModule; + +function Vector GetAttachLocation(Pawn ViewTarget) +{ + local Vector BoneLocation; + + // End:0x7D + if((ViewTarget != none) && ViewTarget.Mesh != none) + { + BoneLocation = ViewTarget.Mesh.GetBoneLocation('EffectsSocket'); + } + return BoneLocation; + //return ReturnValue; +} + +function Rotator GetAttachRotation(Pawn ViewTarget) +{ + local Rotator BoneRotation; + + // End:0x87 + if((ViewTarget != none) && ViewTarget.Mesh != none) + { + BoneRotation = QuatToRotator(ViewTarget.Mesh.GetBoneQuaternion('EffectsSocket')); + } + return BoneRotation; + //return ReturnValue; +} + +function UpdateCamera(Pawn P, TgPlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT) +{ + // End:0x98 + if(P != none) + { + OutVT.POV.Location = GetAttachLocation(P); + OutVT.POV.Rotation = GetAttachRotation(P); + } + else + { + OutVT.POV.Location = CameraActor.Location; + OutVT.POV.Rotation = CameraActor.Rotation; + } + OutVT.Target = P; + //return; +} diff --git a/exported/TgGame/Classes/TgCameraModule_Cinematic.uc b/exported/TgGame/Classes/TgCameraModule_Cinematic.uc new file mode 100755 index 00000000..0b472d23 --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_Cinematic.uc @@ -0,0 +1 @@ +class TgCameraModule_Cinematic extends TgCameraModule; diff --git a/exported/TgGame/Classes/TgCameraModule_Dead.uc b/exported/TgGame/Classes/TgCameraModule_Dead.uc new file mode 100755 index 00000000..478ccedf --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_Dead.uc @@ -0,0 +1,22 @@ +class TgCameraModule_Dead extends TgCameraModule_Free; + +function Vector GetCamLocationOffset(Pawn P) +{ + local Vector Offset; + local TgPawn TgP; + + Offset = super.GetCamLocationOffset(P); + // End:0x7E + if(!P.IsAliveAndWell()) + { + Offset.Z -= P.GetCollisionHeight(); + } + TgP = TgPawn(P); + // End:0x127 + if((TgP.Mesh != none) && int(TgP.c_LocalPolymorph) == int(0)) + { + Offset *= TgP.Mesh.Scale; + } + return Offset; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgCameraModule_FallOutOfWorld.uc b/exported/TgGame/Classes/TgCameraModule_FallOutOfWorld.uc new file mode 100755 index 00000000..8ab2a59d --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_FallOutOfWorld.uc @@ -0,0 +1,32 @@ +class TgCameraModule_FallOutOfWorld extends TgCameraModule_Free; + +function UpdateCamera(Pawn P, TgPlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT) +{ + // End:0xB6 + if(OutVT.Target != none) + { + OutVT.POV.Rotation = Rotator(OutVT.Target.Location - OutVT.POV.Location); + } + //return; +} + +function Vector GetCamLocationOffset(Pawn P) +{ + local Vector Offset; + local TgPawn TgP; + + Offset = super.GetCamLocationOffset(P); + // End:0x7E + if(!P.IsAliveAndWell()) + { + Offset.Z -= P.GetCollisionHeight(); + } + TgP = TgPawn(P); + // End:0x127 + if((TgP.Mesh != none) && int(TgP.c_LocalPolymorph) == int(0)) + { + Offset *= TgP.Mesh.Scale; + } + return Offset; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgCameraModule_Free.uc b/exported/TgGame/Classes/TgCameraModule_Free.uc new file mode 100755 index 00000000..8f94064e --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_Free.uc @@ -0,0 +1,154 @@ +class TgCameraModule_Free extends TgCameraModule + native(View); + +var float CamAltitude; +var float DesiredCamAltitude; +var float MaxCamAltitude; +var float MinCamAltitude; +var float CamZoomIncrement; + +function ProcessInput(PlayerInput PlayerInput, float DeltaTime) +{ + // End:0x75 + if(PlayerCamera.CamAngle.Pitch > 5430) + { + PlayerCamera.CamAngle.Pitch = 5430; + } + else + { + // End:0xE7 + if(PlayerCamera.CamAngle.Pitch < -8000) + { + PlayerCamera.CamAngle.Pitch = -8000; + } + } + //return; +} + +function Vector GetCamLocationOffset(Pawn P) +{ + local Rotator CamRot; + local Vector Offset; + + CamRot = PlayerCamera.CamAngle; + CamRot.Roll = 0; + Offset = -Vector(CamRot) * DesiredCamAltitude; + // End:0x111 + if((PlayerCamera.ViewTarget.Target != none) && PlayerCamera.ViewTarget.Target.IsA('TgPawn_TowerBase')) + { + Offset.Z += float(400); + } + return Offset; + //return ReturnValue; +} + +function UpdateCamera(Pawn P, TgPlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT) +{ + local Vector HitLocation, HitNormal, BoneLocation, TargetLocation, CamLocation; + + local Pawn ViewPawn; + + TargetLocation = OutVT.Target.Location; + ViewPawn = Pawn(OutVT.Target); + // End:0x42E + if(ViewPawn != none) + { + // End:0x3B0 + if(ViewPawn.Mesh != none) + { + // End:0x2FA + if(ViewPawn.Health > 0) + { + BoneLocation = ViewPawn.Mesh.GetBoneLocation('EffectsSocket'); + // End:0x177 + if(BoneLocation != vect(0.0000000, 0.0000000, 0.0000000)) + { + TargetLocation = BoneLocation; + TargetLocation.Z += ViewPawn.GetCollisionHeight(); + } + else + { + // End:0x246 + if(ViewPawn.Mesh.MatchRefBone('Root') != -1) + { + TargetLocation = ViewPawn.Mesh.GetBoneLocation('Root'); + TargetLocation.Z += ViewPawn.GetCollisionHeight(); + } + else + { + TargetLocation = ViewPawn.Mesh.GetBoneLocation(ViewPawn.Mesh.GetBoneName(0)); + TargetLocation.Z += ViewPawn.GetCollisionHeight(); + } + } + } + else + { + BoneLocation = ViewPawn.Mesh.GetBoneLocation('Spine'); + // End:0x3AD + if(BoneLocation != vect(0.0000000, 0.0000000, 0.0000000)) + { + TargetLocation = BoneLocation; + TargetLocation.Z += ViewPawn.GetCollisionHeight(); + } + } + } + else + { + TargetLocation = OutVT.Target.Location; + TargetLocation.Z += (ViewPawn.GetCollisionHeight() / float(2)); + } + } + // End:0x521 + if(ViewPawn != none) + { + OutVT.POV.Location.Z += (Pawn(OutVT.Target).GetCollisionHeight() / float(2)); + TargetLocation.Z += (Pawn(OutVT.Target).GetCollisionHeight() / float(2)); + } + CamLocation = TargetLocation; + CamLocation += (GetCamLocationOffset(P)); + CameraActor.CameraTrace(HitLocation, HitNormal, CamLocation, TargetLocation, OutVT.Target); + // End:0x608 + if(HitLocation != vect(0.0000000, 0.0000000, 0.0000000)) + { + OutVT.POV.Location = HitLocation; + } + else + { + OutVT.POV.Location = CamLocation; + } + OutVT.POV.Rotation = Rotator(TargetLocation - OutVT.POV.Location); + //return; +} + +simulated function BecomeViewTarget(TgPlayerController PC) +{ + // End:0x6B + if(LocalPlayer(PC.Player) != none) + { + TgPawn(PC.Pawn).SetMeshVisibility(true); + } + //return; +} + +function zoomIn() +{ + DesiredCamAltitude -= CamZoomIncrement; + DesiredCamAltitude = FMin(MaxCamAltitude, FMax(MinCamAltitude, DesiredCamAltitude)); + //return; +} + +function ZoomOut() +{ + DesiredCamAltitude += CamZoomIncrement; + DesiredCamAltitude = FMin(MaxCamAltitude, FMax(MinCamAltitude, DesiredCamAltitude)); + //return; +} + +defaultproperties +{ + CamAltitude=150.0000000 + DesiredCamAltitude=150.0000000 + MaxCamAltitude=150.0000000 + MinCamAltitude=150.0000000 + CamZoomIncrement=96.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCameraModule_FrontFacingCamera.uc b/exported/TgGame/Classes/TgCameraModule_FrontFacingCamera.uc new file mode 100755 index 00000000..945ff03d --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_FrontFacingCamera.uc @@ -0,0 +1,42 @@ +class TgCameraModule_FrontFacingCamera extends TgCameraModule_ThirdPerson; + +var() Rotator m_rWorldRotationOffset; +var() float m_fFOV; + +function OnBecomeActive(TgCameraModule OldCamera) +{ + PlayerCamera.PlayerOwner.SwitchControl(Class'TgGame.TgControlModule_FrontFacingCamera'); + //return; +} + +function OnBecomeInActive(TgCameraModule NewCamera) +{ + PlayerCamera.PlayerOwner.SwitchControl(Class'TgGame.TgControlModule_ThirdPerson'); + //return; +} + +function Rotator GetWorldRotation(TgPlayerCamera CameraActor) +{ + local Rotator OutRotation; + + OutRotation = super.GetWorldRotation(CameraActor); + OutRotation.Pitch = 0; + OutRotation.Roll = 0; + return OutRotation + m_rWorldRotationOffset; + //return ReturnValue; +} + +function UpdateCamera(Pawn P, TgPlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT) +{ + super.UpdateCamera(P, CameraActor, DeltaTime, OutVT); + OutVT.POV.FOV = m_fFOV; + //return; +} + +defaultproperties +{ + m_rWorldRotationOffset=(Pitch=0,Yaw=30947,Roll=0) + m_fFOV=60.0000000 + CameraOffset=(X=-142.0000000,Y=30.0000000,Z=-35.0000000) + bForce3PView=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCameraModule_GroundTarget.uc b/exported/TgGame/Classes/TgCameraModule_GroundTarget.uc new file mode 100755 index 00000000..dec94b33 --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_GroundTarget.uc @@ -0,0 +1,76 @@ +class TgCameraModule_GroundTarget extends TgCameraModule_Free + native(View); + +function Vector GetCamLocationOffset(Pawn P) +{ + local Rotator CamRot; + local Vector Offset; + + CamRot = PlayerCamera.CamAngle; + CamRot.Pitch = -10000; + CamRot.Roll = 0; + Offset = -Vector(CamRot) * DesiredCamAltitude; + return Offset; + //return ReturnValue; +} + +function UpdateCamera(Pawn P, TgPlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT) +{ + local Vector TargetLocation, CamLocation, HitLocation, HitNormal; + local float fRange; + local TgDeviceFire FireMode; + + // End:0xE8 + if((P != none) && TgDevice(P.Weapon) != none) + { + FireMode = TgDevice(P.Weapon).GetCurrentFire(); + // End:0xE8 + if(FireMode != none) + { + fRange = FireMode.GetRange(); + // End:0xE8 + if(fRange > float(0)) + { + DesiredCamAltitude = fRange * 0.5000000; + } + } + } + CamLocation = OutVT.Target.Location; + CamLocation += (GetCamLocationOffset(P)); + CameraActor.Trace(HitLocation, HitNormal, CamLocation, OutVT.Target.Location, false); + // End:0x200 + if(HitLocation != vect(0.0000000, 0.0000000, 0.0000000)) + { + OutVT.POV.Location = HitLocation; + } + else + { + OutVT.POV.Location = CamLocation; + } + TargetLocation = OutVT.Target.Location; + // End:0x2FE + if(Pawn(OutVT.Target) != none) + { + TargetLocation.Z += (Pawn(OutVT.Target).GetCollisionHeight() / float(2)); + } + OutVT.POV.Rotation = Rotator(TargetLocation - OutVT.POV.Location); + OutVT.POV.Rotation.Pitch += 2500; + //return; +} + +function zoomIn() +{ + return; + //return; +} + +function ZoomOut() +{ + return; + //return; +} + +defaultproperties +{ + DesiredCamAltitude=1440.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCameraModule_Server.uc b/exported/TgGame/Classes/TgCameraModule_Server.uc new file mode 100755 index 00000000..5bfbd615 --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_Server.uc @@ -0,0 +1,2 @@ +class TgCameraModule_Server extends TgCameraModule + native(View); diff --git a/exported/TgGame/Classes/TgCameraModule_Spectator.uc b/exported/TgGame/Classes/TgCameraModule_Spectator.uc new file mode 100755 index 00000000..a552bb00 --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_Spectator.uc @@ -0,0 +1,152 @@ +class TgCameraModule_Spectator extends TgCameraModule + native(View); + +var() int WorldViewPitch; +var transient TPOV OldViewpoint; +var transient float RemainingBlendTime; +var transient float TotalBlendTime; +var const bool bCollideWorld; + +function UpdateCamera(Pawn P, TgPlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT) +{ + local float DurationPct, BlendPct; + local Vector TargetLocation; + local Rotator TargetRotation; + + // End:0x37 + if((CameraActor == none) || CameraActor.PlayerOwner == none) + { + return; + } + TargetLocation = OutVT.Target.Location; + TargetRotation = OutVT.Target.Rotation; + // End:0x222 + if(RemainingBlendTime > float(0)) + { + RemainingBlendTime -= DeltaTime; + // End:0xF4 + if(RemainingBlendTime < 0.0000000) + { + RemainingBlendTime = 0.0000000; + } + DurationPct = (TotalBlendTime - RemainingBlendTime) / TotalBlendTime; + BlendPct = FCubicInterp(0.0000000, 0.0000000, 1.0000000, 0.0000000, DurationPct); + OutVT.POV.Location = VLerp(OldViewpoint.Location, TargetLocation, BlendPct); + OutVT.POV.Rotation = RLerp(OldViewpoint.Rotation, TargetRotation, BlendPct, true); + } + else + { + OutVT.POV.Location = TargetLocation; + OutVT.POV.Rotation = TargetRotation; + } + //return; +} + +function float GetFOVAngle() +{ + local float DurationPct, BlendPct, TargetFOV; + + TargetFOV = PlayerCamera.DefaultFOV; + // End:0xF0 + if((RemainingBlendTime > float(0)) && TargetFOV != OldViewpoint.FOV) + { + DurationPct = (TotalBlendTime - RemainingBlendTime) / TotalBlendTime; + BlendPct = FCubicInterp(0.0000000, 0.0000000, 1.0000000, 0.0000000, DurationPct); + return Lerp(OldViewpoint.FOV, TargetFOV, BlendPct); + } + return TargetFOV; + //return ReturnValue; +} + +function zoomIn() +{ + //return; +} + +function ZoomOut() +{ + //return; +} + +function IncreaseCameraSpeeed() +{ + PlayerCamera.PlayerOwner.SpectatorCameraSpeed = FClamp(PlayerCamera.PlayerOwner.SpectatorCameraSpeed + float(150), 150.0000000, 3000.0000000); + //return; +} + +function DecreaseCameraSpeed() +{ + PlayerCamera.PlayerOwner.SpectatorCameraSpeed = FClamp(PlayerCamera.PlayerOwner.SpectatorCameraSpeed - float(150), 150.0000000, 3000.0000000); + //return; +} + +function OnBecomeActive(TgCameraModule OldCamera) +{ + local Rotator CameraRot; + local Vector CameraLoc; + local TgPlayerController Controller; + + super.OnBecomeActive(OldCamera); + Controller = PlayerCamera.PlayerOwner; + Controller.GetPlayerViewPoint(CameraLoc, CameraRot); + Controller.SetLocation(CameraLoc); + Controller.SetRotation(CameraRot); + Controller.bCollideWorld = bCollideWorld; + //return; +} + +function OnBecomeInActive(TgCameraModule NewCamera) +{ + local TgPlayerController Controller; + + Controller = PlayerCamera.PlayerOwner; + Controller.bCollideWorld = false; + super.OnBecomeInActive(NewCamera); + //return; +} + +function BlendCameraToLocation(Vector NewLocation, float BlendTime, bool bUseFocalPoint) +{ + local Vector Loc, CamToFocalPoint, ViewDir, FinalLocation; + local Rotator Rot; + local float Angle; + + PlayerCamera.PlayerOwner.GetPlayerViewPoint(Loc, Rot); + OldViewpoint.Location = Loc; + OldViewpoint.Rotation = Rot; + OldViewpoint.FOV = PlayerCamera.GetFOVAngle(); + RemainingBlendTime = BlendTime; + TotalBlendTime = BlendTime; + FinalLocation = NewLocation; + // End:0x30D + if(bUseFocalPoint) + { + Rot.Pitch = WorldViewPitch; + ViewDir = Vector(Rot); + Angle = Acos(ViewDir Dot vect(0.0000000, 0.0000000, -1.0000000)); + CamToFocalPoint = (TgControlModule_Spectator(PlayerCamera.PlayerOwner.ControlModule).SpectatorStallZ / Cos(Angle)) * ViewDir; + FinalLocation.Z = 0.0000000; + FinalLocation -= CamToFocalPoint; + PlayerCamera.PlayerOwner.SetLocation(FinalLocation); + // End:0x30A + if(FinalLocation != PlayerCamera.PlayerOwner.Location) + { + NewLocation.Z = Loc.Z; + PlayerCamera.PlayerOwner.SetLocation(NewLocation); + } + } + else + { + FinalLocation.Z = Loc.Z; + PlayerCamera.PlayerOwner.SetLocation(FinalLocation); + } + PlayerCamera.PlayerOwner.SetRotation(Rot); + //return; +} + +defaultproperties +{ + WorldViewPitch=-6000 + OldViewpoint=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000)) + bCollideWorld=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCameraModule_SpectatorFirstPerson.uc b/exported/TgGame/Classes/TgCameraModule_SpectatorFirstPerson.uc new file mode 100755 index 00000000..fc93282f --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_SpectatorFirstPerson.uc @@ -0,0 +1 @@ +class TgCameraModule_SpectatorFirstPerson extends TgCameraModule_SpectatorThirdPerson; diff --git a/exported/TgGame/Classes/TgCameraModule_SpectatorLockedView.uc b/exported/TgGame/Classes/TgCameraModule_SpectatorLockedView.uc new file mode 100755 index 00000000..4cf9baa8 --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_SpectatorLockedView.uc @@ -0,0 +1,162 @@ +class TgCameraModule_SpectatorLockedView extends TgCameraModule_Spectator; + +var() Rotator WorldViewRotation; +var() bool bAutoRotate; +var float FOV; +var float ZoomIncrement; +var int CurrentWorldViewTargetIndex; + +function OnBecomeActive(TgCameraModule OldCamera) +{ + PlayerCamera.PlayerOwner.SwitchControl(Class'TgGame.TgControlModule_SpectatorLockedView'); + //return; +} + +function OnBecomeInActive(TgCameraModule NewCamera) +{ + PlayerCamera.PlayerOwner.SwitchControl(Class'TgGame.TgControlModule_Spectator'); + //return; +} + +function BlendCameraToLocation(Vector NewLocation, float BlendTime, bool bUseFocalPoint) +{ + local Vector Loc, CamToFocalPoint, ViewDir, FinalLocation; + local Rotator Rot; + local float Angle; + + PlayerCamera.PlayerOwner.GetPlayerViewPoint(Loc, Rot); + OldViewpoint.Location = Loc; + OldViewpoint.FOV = PlayerCamera.GetFOVAngle(); + OldViewpoint.Rotation = Rot; + RemainingBlendTime = BlendTime; + TotalBlendTime = BlendTime; + FinalLocation = NewLocation; + // End:0x1C9 + if(bUseFocalPoint) + { + ViewDir = Vector(WorldViewRotation); + Angle = Acos(ViewDir Dot vect(0.0000000, 0.0000000, -1.0000000)); + CamToFocalPoint = (Loc.Z / Cos(Angle)) * ViewDir; + FinalLocation.Z = 0.0000000; + FinalLocation -= CamToFocalPoint; + } + PlayerCamera.PlayerOwner.SetLocation(FinalLocation); + PlayerCamera.PlayerOwner.SetRotation(Rot); + //return; +} + +function UpdateCamera(Pawn P, TgPlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT) +{ + local float DurationPct, BlendPct, ZHeight, Angle; + local Vector TargetLocation, ViewDir, CamToFocalPoint, BaseLoc; + local TgPawn TgP; + local TgMapInfo MapInfo; + + // End:0x37 + if((CameraActor == none) || CameraActor.PlayerOwner == none) + { + return; + } + TargetLocation = OutVT.Target.Location; + MapInfo = TgMapInfo(PlayerCamera.WorldInfo.GetMapInfo()); + // End:0x307 + if(MapInfo != none) + { + // End:0x1AF + if(CurrentWorldViewTargetIndex == 0) + { + BaseLoc.X = MapInfo.m_vTaskForce1BaseLocation.X; + BaseLoc.Y = MapInfo.m_vTaskForce1BaseLocation.Y; + BaseLoc.Z = TargetLocation.Z; + } + else + { + BaseLoc.X = MapInfo.m_vTaskForce2BaseLocation.X; + BaseLoc.Y = MapInfo.m_vTaskForce2BaseLocation.Y; + BaseLoc.Z = TargetLocation.Z; + } + WorldViewRotation = Rotator(BaseLoc - TargetLocation); + WorldViewRotation.Pitch = CameraActor.PlayerOwner.Rotation.Pitch; + } + TgP = TgPawn(OutVT.Target); + // End:0x448 + if(TgP != none) + { + ViewDir = Vector(WorldViewRotation); + ZHeight = CameraActor.PlayerOwner.Location.Z - TgP.Location.Z; + Angle = Acos(ViewDir Dot vect(0.0000000, 0.0000000, -1.0000000)); + CamToFocalPoint = (ZHeight / Cos(Angle)) * ViewDir; + TargetLocation -= CamToFocalPoint; + } + // End:0x5BD + if(RemainingBlendTime > float(0)) + { + RemainingBlendTime -= DeltaTime; + // End:0x48F + if(RemainingBlendTime < 0.0000000) + { + RemainingBlendTime = 0.0000000; + } + DurationPct = (TotalBlendTime - RemainingBlendTime) / TotalBlendTime; + BlendPct = FCubicInterp(0.0000000, 0.0000000, 1.0000000, 0.0000000, DurationPct); + OutVT.POV.Location = VLerp(OldViewpoint.Location, TargetLocation, BlendPct); + OutVT.POV.Rotation = RLerp(OldViewpoint.Rotation, WorldViewRotation, BlendPct, true); + } + else + { + OutVT.POV.Location = TargetLocation; + OutVT.POV.Rotation = WorldViewRotation; + } + //return; +} + +function zoomIn() +{ + local Vector NewLocation; + local TgControlModule_SpectatorLockedView ControlModule; + + NewLocation = PlayerCamera.PlayerOwner.Location; + ControlModule = TgControlModule_SpectatorLockedView(PlayerCamera.PlayerOwner.ControlModule); + // End:0x14E + if((ControlModule != none) && NewLocation.Z > ControlModule.GetMinStallZ()) + { + NewLocation += (Vector(WorldViewRotation) * ZoomIncrement); + // End:0x14E + if(NewLocation.Z > ControlModule.GetMinStallZ()) + { + BlendCameraToLocation(NewLocation, 0.3000000, false); + } + } + //return; +} + +function ZoomOut() +{ + local Vector NewLocation; + local TgControlModule_SpectatorLockedView ControlModule; + + NewLocation = PlayerCamera.PlayerOwner.Location; + ControlModule = TgControlModule_SpectatorLockedView(PlayerCamera.PlayerOwner.ControlModule); + // End:0x14E + if((ControlModule != none) && NewLocation.Z < ControlModule.GetMaxStallZ()) + { + NewLocation -= (Vector(WorldViewRotation) * ZoomIncrement); + // End:0x14E + if(NewLocation.Z < ControlModule.GetMaxStallZ()) + { + BlendCameraToLocation(NewLocation, 0.3000000, false); + } + } + //return; +} + +simulated function RotateView() +{ + CurrentWorldViewTargetIndex = ((CurrentWorldViewTargetIndex == 0) ? 1 : 0); + //return; +} + +defaultproperties +{ + ZoomIncrement=96.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCameraModule_SpectatorOverview.uc b/exported/TgGame/Classes/TgCameraModule_SpectatorOverview.uc new file mode 100755 index 00000000..b62da9c6 --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_SpectatorOverview.uc @@ -0,0 +1,282 @@ +class TgCameraModule_SpectatorOverview extends TgCameraModule_Spectator + native(View) + config(Game); + +struct native CameraPitchInfo +{ + var float ZHeight; + var float Pitch; + + structdefaultproperties + { + ZHeight=0.0000000 + Pitch=0.0000000 + } +}; + +var() Rotator WorldViewRotation; +var() config float FOV; +var float TargetZoomedFOV; +var() config float ZoomIncrement; +var() config float MinZoom; +var() config float MaxZoom; +var() config float ZoomInterpTime; +var Vector CurrentSpringLocation; +var() config float PawnTargetSpringDamping; +var() config float FreeCamSpringDamping; +var() config float IgnoreSpringDistance; +var() array CameraPitchData; +var() bool bFlippedSides; +var bool bJustBecameActive; +var() config bool bAutoZoomEnabled; +var() float OverviewCameraInfluenceDist; +var array OverviewCameras; +var array TransparentTowerList; +var() Vector ObstacleTransparentExtent; +var() config float fMinAutoZoomFOVAngle; +var() config float fMaxAutoZoomFOVAngle; +var() config float fMinAutoZoomDistance; +var() config float fMaxAutoZoomDistance; +var() config float fAutoZoomDetectionRadius; +var() config float fAutoZoomInSpeed; +var() config float fAutoZoomOutSpeed; +var() config float fAutoZoomInLockOutTime; +var() config float fAutoZoomOutLockOutTime; +var transient float m_RemainingAutoZoomInLockOutTime; +var transient float m_RemainingAutoZoomOutLockOutTime; + +// Export UTgCameraModule_SpectatorOverview::execGetWorldViewRotation(FFrame&, void* const) +native function Rotator GetWorldViewRotation(); + +// Export UTgCameraModule_SpectatorOverview::execUpdateAutoZoom(FFrame&, void* const) +native function bool UpdateAutoZoom(float DeltaTime); + +// Export UTgCameraModule_SpectatorOverview::execCheckObstacleTransparency(FFrame&, void* const) +native function CheckObstacleTransparency(); + +// Export UTgCameraModule_SpectatorOverview::execClearObstacleTransparency(FFrame&, void* const) +native function ClearObstacleTransparency(); + +function OnBecomeActive(TgCameraModule OldCamera) +{ + local Vector StartLocation; + local TgOverviewCameraActor C; + local Rotator Rot; + + PlayerCamera.PlayerOwner.SwitchControl(Class'TgGame.TgControlModule_SpectatorOverview'); + StartLocation = PlayerCamera.PlayerOwner.Location; + StartLocation.Z = TgControlModule_SpectatorOverview(PlayerCamera.PlayerOwner.ControlModule).GetMinStallZ(); + BlendCameraToLocation(StartLocation, 0.0000000, false); + CurrentSpringLocation = StartLocation; + Rot = PlayerCamera.PlayerOwner.Rotation; + Rot.Yaw = 0; + PlayerCamera.PlayerOwner.SetRotation(Rot); + PlayerCamera.PlayerOwner.SetRotation(GetWorldViewRotation()); + OverviewCameras.Remove(0, OverviewCameras.Length); + // End:0x238 + foreach PlayerCamera.AllActors(Class'TgGame.TgOverviewCameraActor', C) + { + OverviewCameras.AddItem(C); + } + TargetZoomedFOV = FOV; + bJustBecameActive = true; + //return; +} + +function OnBecomeInActive(TgCameraModule NewCamera) +{ + ClearObstacleTransparency(); + PlayerCamera.PlayerOwner.SwitchControl(Class'TgGame.TgControlModule_Spectator'); + //return; +} + +function BlendCameraToLocation(Vector NewLocation, float BlendTime, bool bUseFocalPoint) +{ + local Vector Loc, CamToFocalPoint, ViewDir, FinalLocation; + local Rotator Rot; + local float Angle; + + PlayerCamera.PlayerOwner.GetPlayerViewPoint(Loc, Rot); + OldViewpoint.Location = Loc; + OldViewpoint.FOV = PlayerCamera.GetFOVAngle(); + OldViewpoint.Rotation = Rot; + RemainingBlendTime = BlendTime; + TotalBlendTime = BlendTime; + FinalLocation = NewLocation; + // End:0x1CA + if(bUseFocalPoint) + { + ViewDir = Vector(GetWorldViewRotation()); + Angle = Acos(ViewDir Dot vect(0.0000000, 0.0000000, -1.0000000)); + CamToFocalPoint = (Loc.Z / Cos(Angle)) * ViewDir; + FinalLocation.Z = 0.0000000; + FinalLocation -= CamToFocalPoint; + } + PlayerCamera.PlayerOwner.SetLocation(FinalLocation); + PlayerCamera.PlayerOwner.SetRotation(Rot); + //return; +} + +function OverridePawnTargetLocation(TgPawn TgP, out Vector TargetLocation) +{ + // End:0x51 + if(int(TgP.r_eTweenState) == int(3)) + { + TargetLocation = TgP.r_vPhysTweenTarget; + } + //return; +} + +function UpdateCamera(Pawn P, TgPlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT) +{ + local float DurationPct, BlendPct, ZHeight, Angle, SpringDamping; + + local Vector TargetLocation, ViewDir, CamToFocalPoint, OutLocation; + local TgPawn TgP; + local Rotator ViewRot, OutRotation; + local TgSpectatorController SpectatorController; + + // End:0x37 + if((CameraActor == none) || CameraActor.PlayerOwner == none) + { + return; + } + SpringDamping = FreeCamSpringDamping; + TargetLocation = OutVT.Target.Location; + ViewRot = GetWorldViewRotation(); + TgP = TgPawn(OutVT.Target); + // End:0x1F4 + if(TgP != none) + { + OverridePawnTargetLocation(TgP, TargetLocation); + ViewDir = Vector(ViewRot); + ZHeight = CameraActor.PlayerOwner.Location.Z - TargetLocation.Z; + Angle = Acos(ViewDir Dot vect(0.0000000, 0.0000000, -1.0000000)); + CamToFocalPoint = (ZHeight / Cos(Angle)) * ViewDir; + TargetLocation -= CamToFocalPoint; + SpringDamping = PawnTargetSpringDamping; + } + // End:0x356 + if(RemainingBlendTime > float(0)) + { + RemainingBlendTime -= DeltaTime; + // End:0x23B + if(RemainingBlendTime < 0.0000000) + { + RemainingBlendTime = 0.0000000; + } + DurationPct = (TotalBlendTime - RemainingBlendTime) / TotalBlendTime; + BlendPct = FCubicInterp(0.0000000, 0.0000000, 1.0000000, 0.0000000, DurationPct); + TargetLocation = VLerp(OldViewpoint.Location, TargetLocation, BlendPct); + OutRotation = RLerp(OldViewpoint.Rotation, ViewRot, BlendPct, true); + OutVT.POV.FOV = FOV; + } + else + { + OutRotation = ViewRot; + } + // End:0x45B + if((RemainingBlendTime <= float(0)) && !bJustBecameActive) + { + // End:0x3D1 + if(VSizeSq2D(CurrentSpringLocation - TargetLocation) > (IgnoreSpringDistance * IgnoreSpringDistance)) + { + SpringDamping = 0.0000000; + } + CurrentSpringLocation = VInterpTo(CurrentSpringLocation, TargetLocation, DeltaTime, SpringDamping * FMax(PlayerCamera.WorldInfo.DemoPlayTimeDilation, 1.0000000)); + OutLocation = CurrentSpringLocation; + } + else + { + CurrentSpringLocation = TargetLocation; + } + bJustBecameActive = false; + OutLocation = CurrentSpringLocation; + CheckObstacleTransparency(); + SpectatorController = TgSpectatorController(CameraActor.PlayerOwner); + // End:0x5CD + if(bAutoZoomEnabled && !UpdateAutoZoom(DeltaTime)) + { + // End:0x5CD + if(SpectatorController != none) + { + // End:0x567 + if(int(SpectatorController.m_CurrentZoomState) == int(1)) + { + TargetZoomedFOV = FClamp(TargetZoomedFOV - (ZoomIncrement * DeltaTime), MinZoom, MaxZoom); + } + else + { + // End:0x5CD + if(int(SpectatorController.m_CurrentZoomState) == int(2)) + { + TargetZoomedFOV = FClamp(TargetZoomedFOV + (ZoomIncrement * DeltaTime), MinZoom, MaxZoom); + } + } + } + } + FOV = FInterpTo(FOV, TargetZoomedFOV, DeltaTime, ZoomInterpTime); + OutVT.POV.Location = OutLocation; + OutVT.POV.Rotation = OutRotation; + //return; +} + +function zoomIn() +{ + TargetZoomedFOV -= ZoomIncrement; + TargetZoomedFOV = FMax(MinZoom, TargetZoomedFOV); + //return; +} + +function ZoomOut() +{ + TargetZoomedFOV += ZoomIncrement; + TargetZoomedFOV = FMin(MaxZoom, TargetZoomedFOV); + //return; +} + +function float GetFOVAngle() +{ + local float DurationPct, BlendPct; + + // End:0xC8 + if((RemainingBlendTime > float(0)) && FOV != OldViewpoint.FOV) + { + DurationPct = (TotalBlendTime - RemainingBlendTime) / TotalBlendTime; + BlendPct = FCubicInterp(0.0000000, 0.0000000, 1.0000000, 0.0000000, DurationPct); + return Lerp(OldViewpoint.FOV, FOV, BlendPct); + } + return FOV; + //return ReturnValue; +} + +function FlipSides() +{ + bFlippedSides = !bFlippedSides; + //return; +} + +defaultproperties +{ + WorldViewRotation=(Pitch=-6000,Yaw=0,Roll=0) + FOV=55.0000000 + ZoomIncrement=25.0000000 + MinZoom=30.0000000 + MaxZoom=70.0000000 + ZoomInterpTime=3.0000000 + PawnTargetSpringDamping=1.7000000 + IgnoreSpringDistance=3000.0000000 + CameraPitchData[0]=(ZHeight=780.0000000,Pitch=-5500.0000000) + CameraPitchData[1]=(ZHeight=2100.0000000,Pitch=-11000.0000000) + bAutoZoomEnabled=true + OverviewCameraInfluenceDist=1000000.0000000 + ObstacleTransparentExtent=(X=200.0000000,Y=200.0000000,Z=200.0000000) + fMinAutoZoomFOVAngle=35.0000000 + fMaxAutoZoomFOVAngle=50.0000000 + fMaxAutoZoomDistance=900.0000000 + fAutoZoomDetectionRadius=1400.0000000 + fAutoZoomInSpeed=5.0000000 + fAutoZoomOutSpeed=15.0000000 + fAutoZoomInLockOutTime=2.0000000 + fAutoZoomOutLockOutTime=2.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCameraModule_SpectatorThirdPerson.uc b/exported/TgGame/Classes/TgCameraModule_SpectatorThirdPerson.uc new file mode 100755 index 00000000..a598be5c --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_SpectatorThirdPerson.uc @@ -0,0 +1,92 @@ +class TgCameraModule_SpectatorThirdPerson extends TgCameraModule_ThirdPerson; + +var transient TPOV OldViewpoint; +var transient float RemainingBlendTime; +var transient float TotalBlendTime; + +function UpdateCamera(Pawn P, TgPlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT) +{ + local Vector CamLocation, camOrigin, HitLocation, HitNormal; + local Actor Target; + local float DurationPct, BlendPct; + local TgPawn TgP; + + // End:0x37 + if((CameraActor == none) || CameraActor.PlayerOwner == none) + { + return; + } + TgP = TgPawn(P); + // End:0x114 + if(TgP != none) + { + OutVT.POV.Rotation = TgP.Rotation; + OutVT.POV.Rotation.Pitch = TgP.m_nSmoothedRemoteViewPitch; + } + else + { + OutVT.POV.Rotation = CameraActor.PlayerOwner.Rotation; + } + UpdateCameraZoom(TgP, DeltaTime); + Target = OutVT.Target; + // End:0x2E9 + if((((Target != none) && Target.bHardAttach) && Target.Base != none) && !Target.Base.bWorldGeometry) + { + Target = Target.Base; + OutVT.POV.Rotation.Yaw = Target.Rotation.Yaw; + } + camOrigin = GetCamAttachPoint(Target); + vCachedCameraAttachPoint = camOrigin; + CamLocation = camOrigin + (GetCamLocationOffset(OutVT.POV.Rotation, Target)); + // End:0x3A8 + if(TgP != none) + { + CamLocation += TgP.WalkBob; + } + // End:0x44C + if(camOrigin != CamLocation) + { + CameraActor.CameraTrace(HitLocation, HitNormal, CamLocation, camOrigin, OutVT.Target); + // End:0x44C + if(HitLocation != vect(0.0000000, 0.0000000, 0.0000000)) + { + CamLocation = HitLocation; + } + } + OutVT.POV.Location = CamLocation; + // End:0x643 + if(RemainingBlendTime > float(0)) + { + RemainingBlendTime -= DeltaTime; + // End:0x4CC + if(RemainingBlendTime < 0.0000000) + { + RemainingBlendTime = 0.0000000; + } + DurationPct = (TotalBlendTime - RemainingBlendTime) / TotalBlendTime; + BlendPct = FCubicInterp(0.0000000, 0.0000000, 1.0000000, 0.0000000, DurationPct); + OutVT.POV.Location = VLerp(OldViewpoint.Location, OutVT.POV.Location, BlendPct); + OutVT.POV.Rotation = RLerp(OldViewpoint.Rotation, OutVT.POV.Rotation, BlendPct, true); + } + CameraActor.CheckPenetration(CamLocation, 20.0000000); + //return; +} + +function BlendToTarget(float BlendTime) +{ + local Vector Loc; + local Rotator Rot; + + PlayerCamera.PlayerOwner.GetPlayerViewPoint(Loc, Rot); + OldViewpoint.Location = Loc; + OldViewpoint.Rotation = Rot; + OldViewpoint.FOV = PlayerCamera.GetFOVAngle(); + RemainingBlendTime = BlendTime; + TotalBlendTime = BlendTime; + //return; +} + +defaultproperties +{ + OldViewpoint=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000)) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCameraModule_ThirdPerson.uc b/exported/TgGame/Classes/TgCameraModule_ThirdPerson.uc new file mode 100755 index 00000000..fd007a77 --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_ThirdPerson.uc @@ -0,0 +1,453 @@ +class TgCameraModule_ThirdPerson extends TgCameraModule + native(View); + +struct native ServerCorrectionSmoothingParams +{ + var float fServerCorrectSnapDist; + var float fMinBaseSpeed; + var float fMaxBaseSpeed; + var float fBaseSpeedMultiplier; + var float fNewInfoWeight; + var float fMinCorrectionModifier; + var float fMaxCorrectionModifier; + var float fCorrectionModifierMultiplier; + + structdefaultproperties + { + fServerCorrectSnapDist=0.0000000 + fMinBaseSpeed=0.0000000 + fMaxBaseSpeed=0.0000000 + fBaseSpeedMultiplier=0.0000000 + fNewInfoWeight=0.0000000 + fMinCorrectionModifier=0.0000000 + fMaxCorrectionModifier=0.0000000 + fCorrectionModifierMultiplier=0.0000000 + } +}; + +var Vector CameraOffset; +var float fZoomFactorInterp; +var float fZoomFactor; +var float fZoomStep; +var float fZoomMax; +var float fMountZoomMax; +var float fZoomMin; +var Vector2D fZoom3pPercentFromTo; +var float fZoomDuration; +var float fZoomDurationOverride; +var transient float fZoomUsedTime; +var Vector vCachedCameraAttachPoint; +var float f3pViewPaddingRemainingTime; +var float f3pViewPaddingTime; +var bool bForce3PView; +var Vector vServerCorrectionDelta; +var Vector vAvgServerCorrectionDelta; +var Vector vLastDesiredLocation; +var ServerCorrectionSmoothingParams CorrectionSmoothing; + +function OnBecomeActive(TgCameraModule OldCamera) +{ + local TgCameraModule_ThirdPerson OldThirdPersonCam; + + super.OnBecomeActive(OldCamera); + OldThirdPersonCam = TgCameraModule_ThirdPerson(OldCamera); + // End:0x8E + if(OldThirdPersonCam != none) + { + fZoomFactor = OldThirdPersonCam.fZoomFactor; + fZoomFactorInterp = OldThirdPersonCam.fZoomFactorInterp; + } + //return; +} + +function OnTweenOutEnd() +{ + super.OnTweenOutEnd(); + // End:0x38 + if(PlayerCamera != none) + { + PlayerCamera.ClearPenetrationList(); + } + //return; +} + +function Vector GetCamLocationOffset(Rotator PawnRot, Actor ViewTarget) +{ + local Vector X, Y, Z, Offset; + local TgPawn TgP; + + Offset = CameraOffset; + TgP = TgPawn(ViewTarget); + // End:0x70 + if(TgP != none) + { + Offset = TgP.GetCameraOffsetOverride(Offset); + } + // End:0x10C + if(TgP != none) + { + // End:0x10C + if((TgP.Mesh != none) && int(TgP.c_LocalPolymorph) == int(0)) + { + Offset *= TgP.Mesh.Scale; + } + } + GetAxes(PawnRot, X, Y, Z); + return (fZoomFactorInterp * ((Offset.X * X) + (Offset.Z * Z))) + (Offset.Y * Y); + //return ReturnValue; +} + +function Vector GetCamAttachPoint(Actor ViewTarget) +{ + local Vector NewCameraLoc; + local TgPawn TgP; + + NewCameraLoc = ViewTarget.Location; + TgP = TgPawn(ViewTarget); + // End:0x1A8 + if(((((TgP != none) && TgP.ShouldBeFirstPersonThisTick()) && TgP.m_WeaponMesh != none) && TgP.m_WeaponMesh.m_bUseSocketForCameraAttach) && TgP.m_WeaponMesh.CanUseCameraBone()) + { + // End:0x1A5 + if(TgP.m_WeaponMesh.m_WeaponMesh1P != none) + { + NewCameraLoc = TgP.m_WeaponMesh.m_WeaponMesh1P.GetBoneLocation('Camera_bn'); + } + } + else + { + // End:0x525 + if(TgP != none) + { + // End:0x228 + if(TgP.ShouldBeFirstPersonThisTick() && TgP.IsLocallyControlled()) + { + NewCameraLoc = TgP.Location; + } + else + { + // End:0x49B + if(TgP.Mesh != none) + { + // End:0x31B + if(TgP.Mesh.MatchRefBone('EffectsSocket') != -1) + { + NewCameraLoc = TgP.Mesh.GetBoneLocation('EffectsSocket'); + NewCameraLoc.Z += TgP.GetCollisionHeight(); + } + else + { + // End:0x3EA + if(TgP.Mesh.MatchRefBone('Root') != -1) + { + NewCameraLoc = TgP.Mesh.GetBoneLocation('Root'); + NewCameraLoc.Z += TgP.GetCollisionHeight(); + } + else + { + NewCameraLoc = TgP.Mesh.GetBoneLocation(TgP.Mesh.GetBoneName(0)); + NewCameraLoc.Z += TgP.GetCollisionHeight(); + } + } + } + } + // End:0x503 + if(int(TgP.c_LocalPolymorph) == int(0)) + { + NewCameraLoc.Z += TgP.EyeHeight; + } + else + { + NewCameraLoc.Z += float(20); + } + } + } + return NewCameraLoc; + //return ReturnValue; +} + +function Rotator GetWorldRotation(TgPlayerCamera CameraActor) +{ + local TgPawn TgP; + local TgWeaponMeshActor parentWeaponMeshActor; + + // End:0x2D1 + if((PlayerCamera != none) && PlayerCamera.PlayerOwner != none) + { + TgP = TgPawn(PlayerCamera.PlayerOwner.Pawn); + // End:0x2D1 + if((TgP != none) && TgP.ShouldBeFirstPersonThisTick()) + { + parentWeaponMeshActor = TgP.m_WeaponMesh; + // End:0x27E + if(((parentWeaponMeshActor != none) && parentWeaponMeshActor.m_bUseSocketForCameraAttach) && TgP.m_WeaponMesh.CanUseCameraBone()) + { + // End:0x27B + if(parentWeaponMeshActor.m_WeaponMesh1P != none) + { + return OrthoRotation(TgP.m_WeaponMesh.m_WeaponMesh1P.GetBoneAxis('Camera_bn', 4) * -1.0000000, TgP.m_WeaponMesh.m_WeaponMesh1P.GetBoneAxis('Camera_bn', 1), TgP.m_WeaponMesh.m_WeaponMesh1P.GetBoneAxis('Camera_bn', 2) * -1.0000000); + } + } + else + { + return TgP.ApplyCameraRotationModifier(CameraActor.PlayerOwner.Rotation); + } + } + } + return CameraActor.PlayerOwner.Rotation; + //return ReturnValue; +} + +function float GetCurrent3pPercent() +{ + // End:0x61 + if((fZoomFactorInterp == fZoom3pPercentFromTo.Y) || fZoomUsedTime > (GetZoomDuration())) + { + return fZoom3pPercentFromTo.Y; + } + return Lerp(fZoom3pPercentFromTo.X, fZoom3pPercentFromTo.Y, fZoomUsedTime / (GetZoomDuration())); + //return ReturnValue; +} + +function float GetZoomDuration() +{ + return ((fZoomDurationOverride == 0.0000000) ? fZoomDuration : fZoomDurationOverride); + //return ReturnValue; +} + +function UpdateCameraZoom(TgPawn TgP, float DeltaTime) +{ + local float DesiredZoomPercent, CurrentZoomPercent; + + DesiredZoomPercent = ((int(PlayerCamera.PlayerOwner.bRun) == int(1)) ? fMountZoomMax : fZoomFactor); + // End:0x9C + if(TgP != none) + { + TgP.GetCameraZoomOverride(DesiredZoomPercent, fZoomDurationOverride); + } + // End:0xDD + if(DesiredZoomPercent ~= fZoom3pPercentFromTo.Y) + { + fZoomUsedTime += DeltaTime; + } + else + { + fZoom3pPercentFromTo = vect2d(fZoomFactorInterp, DesiredZoomPercent); + CurrentZoomPercent = GetCurrent3pPercent(); + // End:0x14C + if(CurrentZoomPercent < 0.5000000) + { + fZoomUsedTime = CurrentZoomPercent * (GetZoomDuration()); + } + else + { + fZoomUsedTime = float(Max(int((DesiredZoomPercent - CurrentZoomPercent) * (GetZoomDuration())), 0)); + } + } + fZoomUsedTime = FClamp(fZoomUsedTime, 0.0000000, GetZoomDuration()); + fZoomFactorInterp = GetCurrent3pPercent(); + //return; +} + +function UpdateCamera(Pawn P, TgPlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT) +{ + local Vector CamLocation, camOrigin, HitLocation, HitNormal; + local Rotator SpecCamRotation; + local Actor Target; + local float CameraCheckRadius; + local TgPawn TgP; + + // End:0x37 + if((CameraActor == none) || CameraActor.PlayerOwner == none) + { + return; + } + TgP = TgPawn(P); + // End:0x11F + if((TgP != none) && TgP.WorldInfo.IsPlayingDemo()) + { + SpecCamRotation = TgP.Rotation; + SpecCamRotation.Pitch = TgP.m_nSmoothedRemoteViewPitch; + CameraActor.SetRotation(SpecCamRotation); + } + UpdateCameraZoom(TgP, DeltaTime); + Target = OutVT.Target; + OutVT.POV.Rotation = GetWorldRotation(CameraActor); + camOrigin = GetCamAttachPoint(Target); + vCachedCameraAttachPoint = camOrigin; + CamLocation = camOrigin + (GetCamLocationOffset(OutVT.POV.Rotation, Target)); + CamLocation += (SmoothServerCorrection(TgP, CamLocation, DeltaTime)); + // End:0x293 + if(TgP != none) + { + CamLocation += TgP.WalkBob; + } + // End:0x337 + if(camOrigin != CamLocation) + { + CameraActor.CameraTrace(HitLocation, HitNormal, CamLocation, camOrigin, OutVT.Target); + // End:0x337 + if(HitLocation != vect(0.0000000, 0.0000000, 0.0000000)) + { + CamLocation = HitLocation; + } + } + CameraCheckRadius = 15.0000000; + // End:0x389 + if((TgP != none) && TgP.r_bIsMounted) + { + CameraCheckRadius *= 3.2500000; + } + CameraActor.CheckPenetration(CamLocation, CameraCheckRadius); + OutVT.POV.Location = CamLocation; + // End:0x41A + if(f3pViewPaddingRemainingTime > 0.0000000) + { + f3pViewPaddingRemainingTime -= DeltaTime; + } + // End:0x5AD + if((PlayerCamera.CameraStyle == 'Freeze') && PlayerCamera.PlayerOwner.CheatManager != none) + { + OutVT.POV.Location = GameCheatManager(PlayerCamera.PlayerOwner.CheatManager).DebugCameraControllerRef.Location; + OutVT.POV.Rotation = GameCheatManager(PlayerCamera.PlayerOwner.CheatManager).DebugCameraControllerRef.Rotation; + } + // End:0x647 + if(CameraActor.PCOwner.bIsInTimelapse) + { + OutVT.POV.Rotation = OutVT.Target.Rotation; + return; + } + //return; +} + +simulated function Vector SmoothServerCorrection(TgPawn TgP, Vector DesiredLocation, float DeltaTime) +{ + local float fAvgCorrectionSize, fCorrectionSize, fSpeed; + + // End:0x71 + if((TgP != none) && !TgP.ShouldBeFirstPersonThisTick()) + { + vServerCorrectionDelta = vect(0.0000000, 0.0000000, 0.0000000); + vAvgServerCorrectionDelta = vect(0.0000000, 0.0000000, 0.0000000); + return vect(0.0000000, 0.0000000, 0.0000000); + } + UpdateServerCorrectionFromMovement(DesiredLocation); + UpdateAverageServerCorrection(DeltaTime); + // End:0xB4 + if(IsZero(vServerCorrectionDelta)) + { + return vect(0.0000000, 0.0000000, 0.0000000); + } + fAvgCorrectionSize = VSize(vAvgServerCorrectionDelta); + fCorrectionSize = VSize(vServerCorrectionDelta); + // End:0x170 + if((fAvgCorrectionSize > CorrectionSmoothing.fServerCorrectSnapDist) && fCorrectionSize > CorrectionSmoothing.fServerCorrectSnapDist) + { + vServerCorrectionDelta = vect(0.0000000, 0.0000000, 0.0000000); + vAvgServerCorrectionDelta = vect(0.0000000, 0.0000000, 0.0000000); + return vect(0.0000000, 0.0000000, 0.0000000); + } + fSpeed = Lerp(CorrectionSmoothing.fMinBaseSpeed, CorrectionSmoothing.fMaxBaseSpeed, fCorrectionSize * CorrectionSmoothing.fBaseSpeedMultiplier); + fSpeed *= Lerp(CorrectionSmoothing.fMinCorrectionModifier, CorrectionSmoothing.fMaxCorrectionModifier, fAvgCorrectionSize * CorrectionSmoothing.fCorrectionModifierMultiplier); + fSpeed = FMin(fSpeed * DeltaTime, fCorrectionSize); + vServerCorrectionDelta -= (Normal(vServerCorrectionDelta) * fSpeed); + return -vServerCorrectionDelta; + //return ReturnValue; +} + +simulated function UpdateServerCorrectionFromMovement(Vector DesiredLocation) +{ + local Vector vMovementSinceLastFrame; + + // End:0x24 + if(IsZero(vLastDesiredLocation)) + { + vLastDesiredLocation = DesiredLocation; + return; + } + vMovementSinceLastFrame = DesiredLocation - vLastDesiredLocation; + // End:0x124 + if((vMovementSinceLastFrame.X * vServerCorrectionDelta.X) < float(0)) + { + // End:0xEA + if(Abs(vMovementSinceLastFrame.X) > Abs(vServerCorrectionDelta.X)) + { + vServerCorrectionDelta.X = 0.0000000; + } + else + { + vServerCorrectionDelta.X += vMovementSinceLastFrame.X; + } + } + // End:0x206 + if((vMovementSinceLastFrame.Y * vServerCorrectionDelta.Y) < float(0)) + { + // End:0x1CC + if(Abs(vMovementSinceLastFrame.Y) > Abs(vServerCorrectionDelta.Y)) + { + vServerCorrectionDelta.Y = 0.0000000; + } + else + { + vServerCorrectionDelta.Y += vMovementSinceLastFrame.Y; + } + } + // End:0x2E8 + if((vMovementSinceLastFrame.Z * vServerCorrectionDelta.Z) < float(0)) + { + // End:0x2AE + if(Abs(vMovementSinceLastFrame.Z) > Abs(vServerCorrectionDelta.Z)) + { + vServerCorrectionDelta.Z = 0.0000000; + } + else + { + vServerCorrectionDelta.Z += vMovementSinceLastFrame.Z; + } + } + vLastDesiredLocation = DesiredLocation; + //return; +} + +simulated function UpdateAverageServerCorrection(float DeltaTime) +{ + local float Weight; + + Weight = FMin(1.0000000, CorrectionSmoothing.fNewInfoWeight * DeltaTime); + vAvgServerCorrectionDelta = ((float(1) - Weight) * vAvgServerCorrectionDelta) + (Weight * vServerCorrectionDelta); + //return; +} + +simulated function BecomeViewTarget(TgPlayerController PC) +{ + // End:0x6B + if(LocalPlayer(PC.Player) != none) + { + TgPawn(PC.Pawn).SetMeshVisibility(true); + } + //return; +} + +function zoomIn() +{ + fZoomFactor = FClamp(fZoomFactor - fZoomStep, fZoomMin, ((int(PlayerCamera.PlayerOwner.bRun) == int(1)) ? fMountZoomMax : fZoomMax)); + //return; +} + +function ZoomOut() +{ + fZoomFactor = FClamp(fZoomFactor + fZoomStep, fZoomMin, ((int(PlayerCamera.PlayerOwner.bRun) == int(1)) ? fMountZoomMax : fZoomMax)); + //return; +} + +defaultproperties +{ + CameraOffset=(X=-142.0000000,Y=0.0000000,Z=25.0000000) + fZoomFactor=1.0000000 + fZoomStep=0.1000000 + fZoomMax=1.0000000 + fMountZoomMax=1.0000000 + fZoomMin=0.7500000 + fZoomDuration=0.2000000 + f3pViewPaddingTime=0.0100000 + CorrectionSmoothing=(fServerCorrectSnapDist=640.0000000,fMinBaseSpeed=16.0000000,fMaxBaseSpeed=320.0000000,fBaseSpeedMultiplier=0.0008000,fNewInfoWeight=1.0000000,fMinCorrectionModifier=0.5000000,fMaxCorrectionModifier=12.0000000,fCorrectionModifierMultiplier=0.0050000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCameraModule_ThirdPersonVariableHeight.uc b/exported/TgGame/Classes/TgCameraModule_ThirdPersonVariableHeight.uc new file mode 100755 index 00000000..1ade29a0 --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_ThirdPersonVariableHeight.uc @@ -0,0 +1,32 @@ +class TgCameraModule_ThirdPersonVariableHeight extends TgCameraModule_ThirdPerson; + +var() float ZOffset; + +function OnBecomeActive(TgCameraModule OldCamera) +{ + super.OnBecomeActive(OldCamera); + ZOffset = 0.0000000; + //return; +} + +function Vector GetCamLocationOffset(Rotator PawnRot, Actor ViewTarget) +{ + local Vector Offset; + + Offset = super.GetCamLocationOffset(PawnRot, ViewTarget); + Offset.Z += ZOffset; + return Offset; + //return ReturnValue; +} + +function zoomIn() +{ + ZOffset += float(50); + //return; +} + +function ZoomOut() +{ + ZOffset -= float(50); + //return; +} diff --git a/exported/TgGame/Classes/TgCameraModule_TopDown.uc b/exported/TgGame/Classes/TgCameraModule_TopDown.uc new file mode 100755 index 00000000..4979ae43 --- /dev/null +++ b/exported/TgGame/Classes/TgCameraModule_TopDown.uc @@ -0,0 +1,83 @@ +class TgCameraModule_TopDown extends TgCameraModule_Spectator; + +var Rotator WorldViewRotation; + +function UpdateCamera(Pawn P, TgPlayerCamera CameraActor, float DeltaTime, out TViewTarget OutVT) +{ + local float DurationPct, BlendPct; + local Vector TargetLocation; + local Rotator TargetRotation; + + // End:0x37 + if((CameraActor == none) || CameraActor.PlayerOwner == none) + { + return; + } + TargetLocation = CameraActor.PlayerOwner.Location; + // End:0x2A6 + if(RemainingBlendTime > float(0)) + { + RemainingBlendTime -= DeltaTime; + // End:0xBB + if(RemainingBlendTime < 0.0000000) + { + RemainingBlendTime = 0.0000000; + } + TargetRotation = OutVT.Target.Rotation; + TargetRotation.Pitch = WorldViewPitch; + DurationPct = (TotalBlendTime - RemainingBlendTime) / TotalBlendTime; + BlendPct = FCubicInterp(0.0000000, 0.0000000, 1.0000000, 0.0000000, DurationPct); + OutVT.POV.Location = VLerp(OldViewpoint.Location, TargetLocation, BlendPct); + OutVT.POV.Rotation = RLerp(OldViewpoint.Rotation, TargetRotation, BlendPct, true); + PlayerCamera.PlayerOwner.SetRotation(OutVT.POV.Rotation); + } + else + { + OutVT.POV.Location = TargetLocation; + OutVT.POV.Rotation = CameraActor.PlayerOwner.Rotation; + } + //return; +} + +function OnBecomeActive(TgCameraModule OldCamera) +{ + PlayerCamera.PlayerOwner.SwitchControl(Class'TgGame.TgControlModule_TopDown'); + //return; +} + +function OnBecomeInActive(TgCameraModule NewCamera) +{ + PlayerCamera.PlayerOwner.SwitchControl(Class'TgGame.TgControlModule_Spectator'); + //return; +} + +function BlendToTarget(float BlendTime) +{ + local Vector Loc, ViewDir, FinalLocation, CamToFocalPoint; + local Rotator Rot; + local float Angle; + + PlayerCamera.PlayerOwner.GetPlayerViewPoint(Loc, Rot); + OldViewpoint.Location = Loc; + OldViewpoint.Rotation = Rot; + OldViewpoint.FOV = PlayerCamera.GetFOVAngle(); + RemainingBlendTime = BlendTime; + TotalBlendTime = BlendTime; + FinalLocation = PlayerCamera.PlayerOwner.ViewTarget.Location; + WorldViewRotation = PlayerCamera.PlayerOwner.ViewTarget.Rotation; + WorldViewRotation.Pitch = WorldViewPitch; + ViewDir = Vector(WorldViewRotation); + Angle = Acos(ViewDir Dot vect(0.0000000, 0.0000000, -1.0000000)); + Loc.Z = FClamp(PlayerCamera.PlayerOwner.Location.Z, Class'TgGame.TgControlModule_TopDown'.default.SpectatorMinStallZ, Class'TgGame.TgControlModule_TopDown'.default.SpectatorStallZ); + CamToFocalPoint = (Loc.Z / Cos(Angle)) * ViewDir; + FinalLocation.Z = 0.0000000; + FinalLocation -= CamToFocalPoint; + PlayerCamera.PlayerOwner.SetLocation(FinalLocation); + //return; +} + +defaultproperties +{ + WorldViewPitch=-12000 + bCollideWorld=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCameraShake.uc b/exported/TgGame/Classes/TgCameraShake.uc new file mode 100755 index 00000000..7e9ae5de --- /dev/null +++ b/exported/TgGame/Classes/TgCameraShake.uc @@ -0,0 +1,17 @@ +class TgCameraShake extends CameraShake + native(View) + editinlinenew; + +var() float m_fShakeScale; +var() bool m_bDoControllerVibration; +var() bool m_bRadialShake; +var() bool m_bOrientTowardRadialEpicenter; +var() float m_fRadialShake_InnerRadius; +var() float m_fRadialShake_OuterRadius; +var() float m_fRadialShake_Falloff; +var() Camera.ECameraAnimPlaySpace m_PlaySpace; + +defaultproperties +{ + m_fShakeScale=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCameraVolume.uc b/exported/TgGame/Classes/TgCameraVolume.uc new file mode 100755 index 00000000..49442f31 --- /dev/null +++ b/exported/TgGame/Classes/TgCameraVolume.uc @@ -0,0 +1,19 @@ +class TgCameraVolume extends Volume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +var() CameraActor AssociatedCamera; + +defaultproperties +{ + // Reference: BrushComponent'TgGame.Default__TgCameraVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCapturePoint.uc b/exported/TgGame/Classes/TgCapturePoint.uc new file mode 100755 index 00000000..457f1fd5 --- /dev/null +++ b/exported/TgGame/Classes/TgCapturePoint.uc @@ -0,0 +1,602 @@ +class TgCapturePoint extends Actor + native(Game) + placeable + hidecategories(Navigation); + +var TgCollisionProxy_Cylinder s_CollisionProxy; +var TgRepInfo_CapturePoint r_RepInfo; +var() const float m_fCollisionProxyRadius; +var() const float m_fCollisionProxyHeight; +var const float m_fBaseTransitionSpeed; +var const float m_fTransitionSpeedBuff; +var transient float m_fCurrentTransitionSpeed; +var transient TgSeqEvent_ControlPointOwnershipChange c_OwnershipChangedKismetNode; +var() TgBotFactory_PointCapture s_BotSpawners[2]; +var transient TgBotFactory_PointCapture m_CurrentBotSpawners[2]; +var() TgBotFactory_PointCapture s_NeutralBotSpawner; +var() const int m_CapturePointIndex; +var() const float s_fReplenishBotTime; +var private transient float s_fRemainingReplenishBotTime; +var float s_fFriendlyReplenishBuffPct; +var float m_fRegenUpdateTimer; +var const float m_fOwnedManaRegen; +var const float m_fOwnedHealthRegen; +var transient TgGame_Mission s_GameInfo; +var transient int m_nTF1Count; +var transient int m_nTF2Count; +var transient float m_fLastEnemyKillVoxTimestamp; +var() int m_nLaneNumber; +var() export editinline SpriteComponent m_WorldIconSprite; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_RepInfo; +} + +// Export UTgCapturePoint::execAlertPointChanged(FFrame&, void* const) +native function AlertPointChanged(); + +event TakeDamage(int Damage, Controller InstigatedBy, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + //return; +} + +function SpawnNeutralBot() +{ + s_NeutralBotSpawner.SpawnNextBot(); + //return; +} + +simulated event PreBeginPlay() +{ + super.PreBeginPlay(); + // End:0x61 + if(int(Role) == int(ROLE_Authority)) + { + r_RepInfo = Spawn(Class'TgGame.TgRepInfo_CapturePoint', self); + r_RepInfo.r_OwningCapturePoint = self; + } + //return; +} + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x196 + if(int(Role) == int(ROLE_Authority)) + { + s_CollisionProxy = Spawn(Class'TgGame.TgCollisionProxy_Cylinder', self,, Location, Rotation,, true); + s_CollisionProxy.SetBase(self); + s_CollisionProxy.__ProxyTouch__Delegate = CollisionProxyOnTouch; + s_CollisionProxy.__ProxyUnTouch__Delegate = CollisionProxyOnUnTouch; + s_CollisionProxy.DelegatesUpdated(); + s_CollisionProxy.m_CollisionCylinder.SetCylinderSize(m_fCollisionProxyRadius, m_fCollisionProxyHeight); + s_BotSpawners[0].m_CapturePoint = self; + s_BotSpawners[1].m_CapturePoint = self; + s_NeutralBotSpawner.m_CapturePoint = self; + } + //return; +} + +simulated event CollisionProxyOnTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + // End:0x2D + if(Other.IsA('TgPawn_Character')) + { + NearbyPawnsUpdated(); + } + //return; +} + +simulated event CollisionProxyOnUnTouch(Actor Other) +{ + // End:0x2D + if(Other.IsA('TgPawn_Character')) + { + NearbyPawnsUpdated(); + } + //return; +} + +function NearbyPawnsUpdated() +{ + local TgPawn_Character NearByPawn; + local int I; + + // End:0x40 + if(s_GameInfo == none) + { + s_GameInfo = TgGame_Mission(WorldInfo.Game); + } + // End:0xA7 + if((s_GameInfo == none) || (int(s_GameInfo.m_eTimerState) != int(3)) && int(s_GameInfo.m_eTimerState) != int(4)) + { + return; + } + // End:0xCB + if(r_RepInfo.r_bIsLocked) + { + return; + } + m_nTF1Count = 0; + m_nTF2Count = 0; + I = 0; + J0xEC: + + // End:0x1C3 [Loop If] + if(I < s_CollisionProxy.m_NearByPlayers.Length) + { + NearByPawn = TgPawn_Character(s_CollisionProxy.m_NearByPlayers[I]); + // End:0x1B5 + if(NearByPawn != none) + { + switch(NearByPawn.GetTaskForceNumber()) + { + // End:0x19F + case 1: + m_nTF1Count++; + // End:0x1B5 + break; + // End:0x1B2 + case 2: + m_nTF2Count++; + // End:0x1B5 + break; + // End:0xFFFF + default: + break; + } + } + else + { + I++; + // [Loop Continue] + goto J0xEC; + }/* !MISMATCHING REMOVE, tried Loop got Type:Else Position:0x1B5! */ + // End:0x1F5 + if((m_nTF1Count > 0) && m_nTF2Count > 0) + { + m_fCurrentTransitionSpeed = 0.0000000; + } + else + { + // End:0x2E7 + if(r_RepInfo.r_nControlledByTaskForce == 0) + { + // End:0x24B + if((m_nTF1Count == 0) && m_nTF2Count == 0) + { + m_fCurrentTransitionSpeed = 0.0000000; + } + else + { + // End:0x2E4 + if(s_NeutralBotSpawner.nCurrentCount == 0) + { + // End:0x2B6 + if(m_nTF1Count > 0) + { + m_fCurrentTransitionSpeed = -1.0000000 * (m_fBaseTransitionSpeed + (m_fTransitionSpeedBuff * float(m_nTF1Count - 1))); + } + else + { + m_fCurrentTransitionSpeed = m_fBaseTransitionSpeed + (m_fTransitionSpeedBuff * float(m_nTF1Count - 1)); + } + } + } + } + else + { + // End:0x3D0 + if(r_RepInfo.r_nControlledByTaskForce == 1) + { + // End:0x373 + if((m_nTF2Count > 0) && m_CurrentBotSpawners[0].nCurrentCount == 0) + { + m_fCurrentTransitionSpeed = m_fBaseTransitionSpeed + (m_fTransitionSpeedBuff * float(m_nTF1Count - 1)); + } + else + { + // End:0x3CD + if(r_RepInfo.r_fOwnershipPct > 0.0000000) + { + m_fCurrentTransitionSpeed = -1.0000000 * (m_fBaseTransitionSpeed + (m_fTransitionSpeedBuff * float(m_nTF1Count))); + } + } + } + else + { + // End:0x4B7 + if(r_RepInfo.r_nControlledByTaskForce == 2) + { + // End:0x464 + if((m_nTF1Count > 0) && m_CurrentBotSpawners[1].nCurrentCount == 0) + { + m_fCurrentTransitionSpeed = -1.0000000 * (m_fBaseTransitionSpeed + (m_fTransitionSpeedBuff * float(m_nTF1Count - 1))); + } + else + { + // End:0x4B7 + if(r_RepInfo.r_fOwnershipPct < 1.0000000) + { + m_fCurrentTransitionSpeed = m_fBaseTransitionSpeed + (m_fTransitionSpeedBuff * float(m_nTF1Count)); + } + } + } + } + } + } + //return; + }/* !MISMATCHING REMOVE, tried Else got Type:Loop Position:0x0EC! */ +} + +event OnPointCaptureOwnershipChanged(int NewTaskForceOwner, int PreviousTaskForceOwner) +{ + local int I; + local TgPawn_Character NearByPawn; + local TgGame_Mission TgG; + local array KismetEvents; + local TgSeqEvent_ControlPointOwnershipChange_Server SeqEvent; + local array ActivateIndices; + + s_fRemainingReplenishBotTime = 0.0000000; + m_fLastEnemyKillVoxTimestamp = -1.0000000; + // End:0x79 + if(TgGame_SinglePointCaptureAndHold(WorldInfo.Game) != none) + { + // End:0x76 + if((PreviousTaskForceOwner != 1) && PreviousTaskForceOwner != 2) + { + SpawnBotsForCurrentTaskForce(); + } + } + else + { + SpawnBotsForCurrentTaskForce(); + } + TgG = TgGame_Mission(WorldInfo.Game); + // End:0x1FD + if(TgG != none) + { + I = 0; + J0xCE: + + // End:0x1AC [Loop If] + if(I < s_CollisionProxy.m_NearByPlayers.Length) + { + NearByPawn = TgPawn_Character(s_CollisionProxy.m_NearByPlayers[I]); + // End:0x19E + if((NearByPawn != none) && int(NearByPawn.GetTaskForceNumber()) == NewTaskForceOwner) + { + TgG.CapturedPoint(NearByPawn); + } + I++; + // [Loop Continue] + goto J0xCE; + } + TgG.OnPointCaptureOwnershipChanged(self, NewTaskForceOwner, PreviousTaskForceOwner); + TgG.UpdateLockedPointStatus(); + } + AlertPointChanged(); + WorldInfo.GetGameSequence().FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_ControlPointOwnershipChange_Server', true, KismetEvents); + I = 0; + J0x25A: + + // End:0x320 [Loop If] + if(I < KismetEvents.Length) + { + SeqEvent = TgSeqEvent_ControlPointOwnershipChange_Server(KismetEvents[I]); + // End:0x312 + if((SeqEvent != none) && SeqEvent.PointIndex == (GetCapturePointIndex())) + { + ActivateIndices[0] = 0; + SeqEvent.CheckActivate(self, self, false, ActivateIndices); + // [Explicit Break] + goto J0x320; + } + I++; + // [Loop Continue] + goto J0x25A; + } + J0x320: + + // End:0x379 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && r_RepInfo != none) + { + r_RepInfo.OnTaskForceControlChanged(); + } + //return; +} + +event OnPointReclaimed() +{ + local int I; + local TgPawn_Character NearByPawn; + local TgGame_Mission TgG; + + SpawnBotsForCurrentTaskForce(); + TgG = TgGame_Mission(WorldInfo.Game); + // End:0x102 + if(TgG != none) + { + I = 0; + J0x55: + + // End:0x102 [Loop If] + if(I < s_CollisionProxy.m_NearByPlayers.Length) + { + NearByPawn = TgPawn_Character(s_CollisionProxy.m_NearByPlayers[I]); + // End:0xF4 + if(NearByPawn != none) + { + TgG.CapturePointReclaimed(NearByPawn); + } + I++; + // [Loop Continue] + goto J0x55; + } + } + //return; +} + +event OnBotDied(int DeadBotTaskForce) +{ + // End:0x3F + if(DeadBotTaskForce == r_RepInfo.r_nControlledByTaskForce) + { + s_fRemainingReplenishBotTime = s_fReplenishBotTime; + } + NearbyPawnsUpdated(); + //return; +} + +event SpawnBotsForCurrentTaskForce() +{ + local TgGame_Mission GameInfo; + + // End:0x13 + if(s_fRemainingReplenishBotTime > float(0)) + { + return; + } + GameInfo = TgGame_Mission(WorldInfo.Game); + // End:0x124 + if((r_RepInfo != none) && GameInfo != none) + { + // End:0x124 + if(true) + { + // End:0xC7 + if(r_RepInfo.r_nControlledByTaskForce == 1) + { + s_BotSpawners[0].SpawnNextBot(); + m_CurrentBotSpawners[0] = s_BotSpawners[0]; + } + else + { + // End:0x124 + if(r_RepInfo.r_nControlledByTaskForce == 2) + { + s_BotSpawners[1].SpawnNextBot(); + m_CurrentBotSpawners[1] = s_BotSpawners[1]; + } + } + } + } + //return; +} + +simulated function int GetCapturePointIndex() +{ + return m_CapturePointIndex; + //return ReturnValue; +} + +simulated function OnTaskForceControlChanged(int NewTaskForce) +{ + local TgPlayerController TgPC; + local array KismetEvents; + local TgSeqEvent_ControlPointOwnershipChange SeqEvent; + local int Idx, PointIndex; + local array ActivateIndices; + + // End:0x200 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x13E + if(c_OwnershipChangedKismetNode == none) + { + PointIndex = GetCapturePointIndex(); + WorldInfo.GetGameSequence().FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_ControlPointOwnershipChange', true, KismetEvents); + Idx = 0; + J0x9F: + + // End:0x13E [Loop If] + if(Idx < KismetEvents.Length) + { + SeqEvent = TgSeqEvent_ControlPointOwnershipChange(KismetEvents[Idx]); + // End:0x130 + if((SeqEvent != none) && SeqEvent.PointIndex == PointIndex) + { + c_OwnershipChangedKismetNode = SeqEvent; + // [Explicit Break] + goto J0x13E; + } + Idx++; + // [Loop Continue] + goto J0x9F; + } + } + J0x13E: + + // End:0x200 + if(c_OwnershipChangedKismetNode != none) + { + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x189 + if(NewTaskForce == 0) + { + ActivateIndices[0] = 0; + } + else + { + // End:0x1C6 + if(TgPC.GetTaskForceNumber() == NewTaskForce) + { + ActivateIndices[0] = 1; + } + else + { + ActivateIndices[0] = 2; + } + } + c_OwnershipChangedKismetNode.CheckActivate(self, self, false, ActivateIndices); + } + } + //return; +} + +simulated event Destroyed() +{ + super.Destroyed(); + // End:0x31 + if(s_CollisionProxy != none) + { + s_CollisionProxy.Destroy(); + } + // End:0x5C + if(s_BotSpawners[1] != none) + { + s_BotSpawners[1].Destroy(); + } + // End:0x87 + if(s_BotSpawners[0] != none) + { + s_BotSpawners[0].Destroy(); + } + //return; +} + +function OnNearbyEnemyPlayerDied(TgPawn DeadPawn) +{ + local TgPlayerController TgPC; + local int I; + + // End:0x169 + if(((WorldInfo.TimeSeconds - 10.0000000) > m_fLastEnemyKillVoxTimestamp) || m_fLastEnemyKillVoxTimestamp == -1.0000000) + { + I = 0; + J0x53: + + // End:0x169 [Loop If] + if(I < DeadPawn.s_Damagers.Length) + { + // End:0x15B + if(DeadPawn.s_Damagers[I].DamagerPawn != none) + { + TgPC = TgPlayerController(DeadPawn.s_Damagers[I].DamagerPawn.Controller); + // End:0x15B + if(TgPC != none) + { + m_fLastEnemyKillVoxTimestamp = WorldInfo.TimeSeconds; + } + } + I++; + // [Loop Continue] + goto J0x53; + } + } + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x86 + if(Action.InputLinks[0].bHasImpulse) + { + r_RepInfo.r_bIsLocked = false; + r_RepInfo.bNetDirty = true; + SpawnNeutralBot(); + } + else + { + // End:0x16F + if(Action.InputLinks[1].bHasImpulse) + { + r_RepInfo.r_nControlledByTaskForce = 0; + r_RepInfo.r_fOwnershipPct = 0.5000000; + OnPointCaptureOwnershipChanged(0, r_RepInfo.r_nControlledByTaskForce); + r_RepInfo.r_bIsLocked = true; + r_RepInfo.bNetDirty = true; + } + else + { + // End:0x2CA + if(Action.InputLinks[2].bHasImpulse) + { + // End:0x21B + if(r_RepInfo.r_bIsLocked == true) + { + r_RepInfo.r_bIsLocked = false; + r_RepInfo.bNetDirty = true; + SpawnNeutralBot(); + } + else + { + r_RepInfo.r_nControlledByTaskForce = 0; + r_RepInfo.r_fOwnershipPct = 0.5000000; + OnPointCaptureOwnershipChanged(0, r_RepInfo.r_nControlledByTaskForce); + r_RepInfo.r_bIsLocked = true; + r_RepInfo.bNetDirty = true; + } + } + } + } + //return; +} + +simulated function UpdateLockEffects() +{ + m_WorldIconSprite.SetHidden(!r_RepInfo.r_bIsLocked); + //return; +} + +simulated function OnGetTaskForceNumber(TgSeqAct_GetTaskForceNumber Action) +{ + SeqVar_Int(Action.VariableLinks[1].LinkedVariables[0]).IntValue = r_RepInfo.r_nControlledByTaskForce; + //return; +} + +defaultproperties +{ + m_fCollisionProxyRadius=500.0000000 + m_fCollisionProxyHeight=200.0000000 + m_fBaseTransitionSpeed=5000.0000000 + m_fTransitionSpeedBuff=0.0050000 + m_CapturePointIndex=-1 + s_fReplenishBotTime=30.0000000 + s_fFriendlyReplenishBuffPct=0.2500000 + m_fLastEnemyKillVoxTimestamp=-1.0000000 + // Reference: SpriteComponent'TgGame.Default__TgCapturePoint.WorldIcon' + // TemplateOwnerClass: none + // TemplateOwnerName: 'WorldIcon' + begin object name="WorldIcon" class=Engine.SpriteComponent + bIsScreenSizeScaled=true + ScreenSize=0.0000100 + ReplacementPrimitive=none + DepthPriorityGroup=ESceneDepthPriorityGroup.SDPG_Foreground + HiddenGame=true + HiddenEditor=true + Translation=(X=0.0000000,Y=0.0000000,Z=300.0000000) + Scale=70.0000000 + end object + m_WorldIconSprite=WorldIcon + Components[0]=none + Components[1]=WorldIcon + RemoteRole=ENetRole.ROLE_SimulatedProxy + bNoDelete=true + bAlwaysRelevant=true + NetPriority=2.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCarriedFlag.uc b/exported/TgGame/Classes/TgCarriedFlag.uc new file mode 100755 index 00000000..df92e279 --- /dev/null +++ b/exported/TgGame/Classes/TgCarriedFlag.uc @@ -0,0 +1,400 @@ +class TgCarriedFlag extends Actor + placeable + hidecategories(Navigation); + +var transient int r_nDefenderTaskForce; +var transient TgCTFFlagBase s_FlagBase; +var repnotify transient bool r_bIsHome; +var transient TgPawn_Character m_Holder; +var repnotify transient TgRepInfo_Player r_HolderPRI; +var transient TgPawn_Character m_OldHolder; +var Controller m_FirstTouch; +var array m_Assists; +var float m_fMaxDropTime; +var transient float m_fDefaultRadius; +var transient float m_fDefaultHeight; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_HolderPRI, r_bIsHome, + r_nDefenderTaskForce; +} + +function PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x84 + if(CylinderComponent(CollisionComponent) != none) + { + m_fDefaultRadius = CylinderComponent(CollisionComponent).CollisionRadius; + m_fDefaultHeight = CylinderComponent(CollisionComponent).CollisionHeight; + } + //return; +} + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + CheckTouching(); + //return; +} + +function CheckTouching() +{ + local int I; + local TgGame_CTF CTFGame; + local TgPawn TgP; + + CTFGame = TgGame_CTF(WorldInfo.Game); + // End:0x6D + if((CTFGame == none) || int(CTFGame.m_eTimerState) != int(3)) + { + return; + } + I = 0; + J0x78: + + // End:0x1C8 [Loop If] + if(I < Touching.Length) + { + // End:0x13B + if(ValidHolder(Touching[I])) + { + // End:0x138 + if(PlayerController(Pawn(Touching[I]).Controller) != none) + { + SetHolder(Pawn(Touching[I]).Controller); + m_OldHolder = none; + return; + } + } + else + { + // End:0x1BA + if(!r_bIsHome) + { + TgP = TgPawn(Touching[I]); + // End:0x1BA + if((TgP != none) && int(TgP.GetTaskForceNumber()) == r_nDefenderTaskForce) + { + SendHome(); + } + } + } + I++; + // [Loop Continue] + goto J0x78; + } + //return; +} + +function bool ValidHolder(Actor Other) +{ + local TgPawn TgP; + + TgP = TgPawn(Other); + // End:0x92 + if((((TgP == none) || TgP.Health <= 0) || !TgP.IsPlayerPawn()) || TgP == m_OldHolder) + { + return false; + } + // End:0x10D + if(((int(TgP.GetTaskForceNumber()) == int(1)) && r_nDefenderTaskForce == 2) || (int(TgP.GetTaskForceNumber()) == int(2)) && r_nDefenderTaskForce == 1) + { + return true; + } + return false; + //return ReturnValue; +} + +function SetHolder(Controller C) +{ + local int I; + + m_Holder = TgPawn_Character(C.Pawn); + r_HolderPRI = TgRepInfo_Player(m_Holder.PlayerReplicationInfo); + r_HolderPRI.SetFlag(self); + r_HolderPRI.bForceNetUpdate = true; + GotoState('Held'); + // End:0xD3 + if(m_FirstTouch == none) + { + m_FirstTouch = C; + } + I = 0; + J0xDE: + + // End:0x127 [Loop If] + if(I < m_Assists.Length) + { + // End:0x119 + if(m_Assists[I] == C) + { + return; + } + I++; + // [Loop Continue] + goto J0xDE; + } + m_Assists.Length = m_Assists.Length + 1; + m_Assists[m_Assists.Length - 1] = C; + //return; +} + +function ClearHolder() +{ + // End:0x11 + if(m_Holder == none) + { + return; + } + m_Holder.m_CurrentFlag = none; + // End:0xC9 + if(m_Holder.PlayerReplicationInfo != none) + { + TgRepInfo_Player(m_Holder.PlayerReplicationInfo).SetFlag(none); + m_Holder.PlayerReplicationInfo.bForceNetUpdate = true; + } + m_Holder = none; + r_HolderPRI = none; + //return; +} + +function SendHome() +{ + m_OldHolder = none; + ClearHolder(); + m_FirstTouch = none; + J0x20: + + // End:0x40 [Loop If] + if(m_Assists.Length != 0) + { + m_Assists.Remove(0, 1); + // [Loop Continue] + goto J0x20; + } + // End:0x91 + if(s_FlagBase != none) + { + SetLocation(s_FlagBase.Location); + SetRotation(s_FlagBase.Rotation); + } + GotoState('Home'); + //return; +} + +function Score() +{ + //return; +} + +function AutoSendHome() +{ + SendHome(); + //return; +} + +function CheckFit() +{ + //return; +} + +event Drop(optional Controller Killer, optional bool bNoThrow) +{ + m_OldHolder = m_Holder; + BaseBoneName = 'None'; + BaseSkelComponent = none; + SetLocation(m_Holder.Location); + GotoState('Dropped'); + //return; +} + +function ClearOldHolder() +{ + m_OldHolder = none; + //return; +} + +auto state Home +{ + ignores Drop, Score, SendHome; + + function BeginState(name PreviousStateName) + { + bCollideWorld = true; + SetCollisionSize(m_fDefaultRadius, m_fDefaultHeight); + SetCollision(true, false); + r_bIsHome = true; + // End:0xA3 + if(s_FlagBase != none) + { + SetLocation(s_FlagBase.Location); + SetRotation(s_FlagBase.Rotation); + s_FlagBase.CheckTouching(); + } + //return; + } + + function EndState(name NextStateName) + { + r_bIsHome = false; + //return; + } +Begin: + + Sleep(0.0500000); + CheckTouching(); + stop; +} + +state Held +{ + ignores SetHolder; + + function BeginState(name PreviousStateName) + { + TgRepInfo_Game(WorldInfo.GRI).SetFlagHeldEnemy(r_nDefenderTaskForce); + WorldInfo.GRI.bForceNetUpdate = true; + bCollideWorld = false; + SetCollision(false, false); + SetLocation(m_Holder.Location); + // End:0xDE + if(m_Holder != none) + { + m_Holder.HoldFlag(self); + } + bForceNetUpdate = true; + //return; + } + + function EndState(name NextStateName) + { + ClearHolder(); + SetBase(none); + SetHardAttach(false); + bForceNetUpdate = true; + //return; + } + stop; +} + +state Dropped +{ + ignores Drop; + + function CheckFit() + { + local Vector X, Y, Z; + + GetAxes(m_OldHolder.Rotation, X, Y, Z); + SetRotation(Rotator(float(-1) * X)); + // End:0x1C2 + if((!SetLocation((m_OldHolder.Location - ((float(2) * m_OldHolder.GetCollisionRadius()) * X)) + (m_OldHolder.GetCollisionHeight() * vect(0.0000000, 0.0000000, 0.5000000))) && !SetLocation(m_OldHolder.Location)) && m_OldHolder.GetCollisionRadius() > float(0)) + { + SetCollisionSize(FMin(m_fDefaultRadius, 0.8000000 * m_OldHolder.GetCollisionRadius()), FMin(m_fDefaultHeight, 0.8000000 * m_OldHolder.GetCollisionHeight())); + // End:0x1C2 + if(!SetLocation(m_OldHolder.Location)) + { + AutoSendHome(); + return; + } + } + //return; + } + + event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) + { + local TgPawn TgP; + + TgP = TgPawn(Other); + // End:0x69 + if((TgP != none) && int(TgP.GetTaskForceNumber()) == r_nDefenderTaskForce) + { + SendHome(); + } + else + { + global.Touch(Other, OtherComp, HitLocation, HitNormal); + } + //return; + } + + function CheckPain() + { + // End:0x17 + if(IsInPain()) + { + AutoSendHome(); + } + //return; + } + + function Timer() + { + AutoSendHome(); + //return; + } + + function BeginState(name PreviousStateName) + { + TgRepInfo_Game(WorldInfo.GRI).SetFlagDown(int(GetTeamNum())); + WorldInfo.GRI.bForceNetUpdate = true; + SetTimer(m_fMaxDropTime, false); + SetTimer(10.0000000, false, 'ClearOldHolder'); + SetPhysics(2); + bCollideWorld = true; + SetCollisionSize(m_fDefaultRadius, m_fDefaultHeight); + SetCollision(true, false); + CheckFit(); + //return; + } + + function EndState(name NextStateName) + { + SetPhysics(0); + bForceNetUpdate = true; + bCollideWorld = false; + SetCollisionSize(m_fDefaultRadius, m_fDefaultHeight); + ClearTimer(); + //return; + } +Begin: + + Sleep(0.0500000); + CheckTouching(); + stop; +} + +defaultproperties +{ + m_fMaxDropTime=30.0000000 + // Reference: CylinderComponent'TgGame.Default__TgCarriedFlag.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=50.0000000 + CollisionRadius=50.0000000 + ReplacementPrimitive=none + CollideActors=true + BlockZeroExtent=false + end object + Components[0]=CollisionCylinder + // Reference: StaticMeshComponent'TgGame.Default__TgCarriedFlag.FlagMesh' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FlagMesh' + begin object name="FlagMesh" class=Engine.StaticMeshComponent + ReplacementPrimitive=none + Translation=(X=0.0000000,Y=0.0000000,Z=-45.0000000) + end object + Components[1]=FlagMesh + RemoteRole=ENetRole.ROLE_SimulatedProxy + bIgnoreRigidBodyPawns=true + bAlwaysRelevant=true + bUpdateSimulatedPosition=true + bCollideActors=true + bCollideWorld=true + NetPriority=2.0000000 + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgChaosCapturePoint.uc b/exported/TgGame/Classes/TgChaosCapturePoint.uc new file mode 100755 index 00000000..3cc67c3d --- /dev/null +++ b/exported/TgGame/Classes/TgChaosCapturePoint.uc @@ -0,0 +1,803 @@ +class TgChaosCapturePoint extends TgObjective + native(Game) + placeable + hidecategories(Navigation); + +const TG_UNCONTESTED = 0; +const TG_TEAM1_CAPTURING = 1; +const TG_TEAM2_CAPTURING = 2; +const TG_CONTESTED = 3; +const TG_CAPTUREPOINT_FOGHORN_FX_ID = 6694; + +var() int m_nDisplayNameId; +var() int r_nUniqueCapturePointId; +var() int m_nLaneNumber; +var() int m_nTaskForce; +var() array m_Taskforce1Factories; +var() array m_Taskforce2Factories; +var() TgBotFactory_Minions m_GuardianFactory; +var() TgSplineActor m_Taskforce1PathStart; +var() TgSplineActor m_Taskforce2PathStart; +var() array m_PlayerBaseSpawnPoints; +var() array m_PlayerRespawnPoints; +var transient TgAnimNodeSlot m_CustomAnimNode; +var int c_MICStatus; +var bool c_bConfusedRendering; +var repnotify bool r_bFogActive; +var(Survival) const bool m_bForceSurvival; +var bool m_bAnnouncedDeathFog; +var bool m_bContested; +var bool m_bContestedThisTick; +var transient float m_fLastEnemyCapturingPointMessageTime; +var float m_fMinEnemyCapturingPointMessageTime; +var TgHelpTipActor m_HelpTip; +var float r_fCapturedPct; +var int c_DominationOuterMIC; +var int c_DominationInnerMIC; +var(capturePoint) array CapturePointMeshActors; +var(capturePoint) array m_Volumes; +var(capturePoint) int m_nCapturePriority; +var(capturePoint) Vector m_vIndicatorOffset; +var(Survival) const Class m_TgSurvivalFogVolumeDensityInfoClass; +var TgSurvivalFogVolumeDensityInfo m_ConvergeFog; +var repnotify int r_nFogAboutToBeActive; +var(Survival) float m_fFogFadeInTotalTime; +var int m_nNumTF1OnPoint; +var int m_nNumTF2OnPoint; +var float m_fTF1TouchedPointTimer; +var float m_fTF2TouchedPointTimer; +var array m_TouchingChampions; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bFogActive, r_fCapturedPct, + r_nFogAboutToBeActive, r_nUniqueCapturePointId; +} + +// Export UTgChaosCapturePoint::execPlayEnemyCapturingEmote(FFrame&, void* const) +native function PlayEnemyCapturingEmote(TgRepInfo_TaskForce Taskforce); + +// Export UTgChaosCapturePoint::execAnnounceFogOfDeath(FFrame&, void* const) +native function AnnounceFogOfDeath(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x19 + if(VarName == 'r_nFogAboutToBeActive') + { + return; + } + // End:0x3C + if(VarName == 'r_bFogActive') + { + UpdateFogStatus(); + return; + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated event PreBeginPlay() +{ + local int I; + + // End:0x88 + if(int(Role) == int(ROLE_Authority)) + { + I = 0; + J0x1F: + + // End:0x88 [Loop If] + if(I < m_Volumes.Length) + { + // End:0x7A + if(m_Volumes[I] != none) + { + m_Volumes[I].AssociatedActor = self; + } + I++; + // [Loop Continue] + goto J0x1F; + } + } + //return; +} + +simulated event PostBeginPlay() +{ + local TgRepInfo_Game GRI; + + // End:0x74 + if(int(Role) == int(ROLE_Authority)) + { + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x74 + if(GRI != none) + { + GRI.AddCapturePoint(self); + } + } + //return; +} + +simulated event Tick(float DeltaTime) +{ + local TgRepInfo_Game GRI; + local TgGame_PaladinsExtended Game; + local TgRepInfo_TaskForce Taskforce; + local TgPlayerController TgPC; + local int localTaskForceID; + local bool bLocalPlayerConfused; + local int nCapturePointStatus; + local float fCapturePercent; + local TgStaticMeshActor_CapturePoint CPActor; + local TgChaosCapturePoint_ParticleStorm pstorm; + + localTaskForceID = 0; + switch(r_eStatus) + { + // End:0x61A + case 1: + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x617 + if(GRI != none) + { + // End:0x1AD + if((r_bFogActive && m_ConvergeFog != none) && m_ConvergeFog.m_fTargetStartDistance != GRI.r_fConvergeDistance) + { + m_ConvergeFog.ConvergeFog(GRI.r_fConvergeDistance, GRI.r_fFogConvergeInterval); + pstorm = TgChaosCapturePoint_ParticleStorm(self); + // End:0x1AD + if((!m_bAnnouncedDeathFog && pstorm != none) && GRI.r_fConvergeDistance <= pstorm.m_fFogMapDistance) + { + m_bAnnouncedDeathFog = true; + AnnounceFogOfDeath(); + } + } + TgPC = TgPlayerController(GetALocalPlayerController()); + bLocalPlayerConfused = false; + // End:0x215 + if((TgPC != none) && TgPC.IsConfused()) + { + bLocalPlayerConfused = true; + } + fCapturePercent = 0.0000000; + // End:0x34C + if((int(r_nControllingTaskForceIndex) == 1) || int(r_nControllingTaskForceIndex) == 2) + { + Taskforce = GRI.GetTaskForce(int(r_nControllingTaskForceIndex)); + // End:0x2BC + if(Taskforce != none) + { + fCapturePercent = Taskforce.r_fSecondaryScore / 100.0000000; + } + // End:0x34C + if(c_MICStatus != int(r_nControllingTaskForceIndex)) + { + // End:0x34C + if((m_fLastEnemyCapturingPointMessageTime + m_fMinEnemyCapturingPointMessageTime) < WorldInfo.TimeSeconds) + { + PlayEnemyCapturingEmote(GRI.GetTaskForce(((int(r_nControllingTaskForceIndex) == 1) ? 2 : 1))); + } + } + } + c_MICStatus = int(r_nControllingTaskForceIndex); + c_bConfusedRendering = bLocalPlayerConfused; + // End:0x3AE + if(TgPC != none) + { + localTaskForceID = TgPC.GetTaskForceNumber(); + } + // End:0x3CD + if(int(r_nControllingTaskForceIndex) == 0) + { + nCapturePointStatus = 0; + } + else + { + // End:0x405 + if((int(r_nControllingTaskForceIndex) == localTaskForceID) && !c_bConfusedRendering) + { + nCapturePointStatus = 1; + } + else + { + nCapturePointStatus = 2; + } + } + // End:0x45A + foreach CapturePointMeshActors(CPActor) + { + CPActor.SetCaptureStatus(nCapturePointStatus, fCapturePercent); + } + // End:0x617 + if(int(Role) == int(ROLE_Authority)) + { + Game = TgGame_PaladinsExtended(WorldInfo.Game); + // End:0x617 + if(Game != none) + { + // End:0x4E9 + if(m_nNumTF1OnPoint > 0) + { + m_fTF1TouchedPointTimer = Game.m_fPointClaimDuration; + } + else + { + // End:0x510 + if(m_fTF1TouchedPointTimer > 0.0000000) + { + m_fTF1TouchedPointTimer -= DeltaTime; + } + } + // End:0x54A + if(m_nNumTF2OnPoint > 0) + { + m_fTF2TouchedPointTimer = Game.m_fPointClaimDuration; + } + else + { + // End:0x571 + if(m_fTF2TouchedPointTimer > 0.0000000) + { + m_fTF2TouchedPointTimer -= DeltaTime; + } + } + // End:0x617 + if(Game.m_bPointCaptureOvertime) + { + // End:0x5D5 + if(int(r_nControllingTaskForceIndex) == int(1)) + { + // End:0x5D5 + if(m_nNumTF2OnPoint > 0) + { + Game.RestartPointOvertime(); + } + } + // End:0x617 + if(int(r_nControllingTaskForceIndex) == int(2)) + { + // End:0x617 + if(m_nNumTF1OnPoint > 0) + { + Game.RestartPointOvertime(); + } + } + } + } + } + } + // End:0x65E + break; + // End:0xFFFF + default: + // End:0x65A + foreach CapturePointMeshActors(CPActor) + { + CPActor.SetCaptureStatus(0, 0.0000000); + } + // End:0x65E + break; + break; + } + //return; +} + +simulated event OnSetStatus() +{ + local TgPawn_Character TgP; + local float ActivationRate; + local int I; + + super.OnSetStatus(); + // End:0x1CE + if(int(Role) == int(ROLE_Authority)) + { + switch(r_eStatus) + { + // End:0xC1 + case 0: + I = 0; + J0x41: + + // End:0xB3 [Loop If] + if(I < m_TouchingChampions.Length) + { + TgP = m_TouchingChampions[I]; + // End:0xA5 + if(TgP != none) + { + TgP.PawnOnLeaveCapturePoint(self); + } + I++; + // [Loop Continue] + goto J0x41; + } + SetFogActive(false); + // End:0x1CE + break; + // End:0x146 + case 1: + I = 0; + J0xD1: + + // End:0x143 [Loop If] + if(I < m_TouchingChampions.Length) + { + TgP = m_TouchingChampions[I]; + // End:0x135 + if(TgP != none) + { + TgP.PawnOnEnterCapturePoint(self); + } + I++; + // [Loop Continue] + goto J0xD1; + } + // End:0x1CE + break; + // End:0x1CB + case 2: + I = 0; + J0x156: + + // End:0x1C8 [Loop If] + if(I < m_TouchingChampions.Length) + { + TgP = m_TouchingChampions[I]; + // End:0x1BA + if(TgP != none) + { + TgP.PawnOnLeaveCapturePoint(self); + } + I++; + // [Loop Continue] + goto J0x156; + } + // End:0x1CE + break; + // End:0xFFFF + default: + break; + } + } + else + { + // End:0x3E2 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + switch(r_eStatus) + { + // End:0x2C9 + case 0: + // End:0x281 + if((m_CustomAnimNode != none) && m_CustomAnimNode.bIsPlayingCustomAnim) + { + m_CustomAnimNode.PlayCustomAnim('Trans_Active_To_Inactive', 1.0000000, 0.0000000, -1.0000000, false, true, 0.0000000); + } + // End:0x2BB + if(m_HelpTip != none) + { + m_HelpTip.Remove(true); + m_HelpTip = none; + } + ShowPathfinder(false); + // End:0x3E2 + break; + // End:0x2E6 + case 1: + SpawnHelpTip(); + ShowPathfinder(true); + // End:0x3E2 + break; + // End:0x3DF + case 2: + SpawnHelpTip(); + // End:0x3DC + if(m_CustomAnimNode != none) + { + // End:0x3A1 + if(Class'TgGame.TgGame_PaladinsExtended'.default.m_fObjectiveActivationTime > 0.0000000) + { + ActivationRate = 1.0000000 / Class'TgGame.TgGame_PaladinsExtended'.default.m_fObjectiveActivationTime; + m_CustomAnimNode.PlayCustomAnim('Trans_Inactive_To_Active', ActivationRate, 0.0000000, -1.0000000, false, true, 0.0000000); + } + else + { + m_CustomAnimNode.PlayCustomAnim('Idle_Active', 1.0000000, 0.0000000, -1.0000000, false, true); + } + } + // End:0x3E2 + break; + // End:0xFFFF + default: + break; + } + } + else + { + //return; + } + } +} + +simulated function UpdateFogStatus() +{ + local TgRepInfo_Game GRI; + + // End:0x183 + if(r_bFogActive) + { + PlayFogHorn(); + // End:0xB5 + if((m_ConvergeFog == none) && m_TgSurvivalFogVolumeDensityInfoClass != none) + { + m_ConvergeFog = Spawn(m_TgSurvivalFogVolumeDensityInfoClass, self,, Location,,, true); + // End:0xB5 + if((m_ConvergeFog != none) && m_fFogFadeInTotalTime > 0.0000000) + { + m_ConvergeFog.m_fFadeInRate = 1.0000000 / m_fFogFadeInTotalTime; + } + } + // End:0x180 + if(m_ConvergeFog != none) + { + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x160 + if(GRI != none) + { + m_ConvergeFog.ConvergeFog(GRI.r_fConvergeDistance, GRI.r_fFogConvergeInterval); + } + m_ConvergeFog.ToggleFog(true); + } + } + else + { + // End:0x1B2 + if(m_ConvergeFog != none) + { + m_ConvergeFog.ToggleFog(false); + } + } + //return; +} + +simulated function PlayFogHorn() +{ + local TgPlayerController TgPC; + local TgSpecialFx Fx; + + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x218 + if(TgPC != none) + { + m_bAnnouncedDeathFog = false; + // End:0x96 + if(TgPC.c_GameTipManager != none) + { + TgPC.c_GameTipManager.RequestHelpText(125); + } + Fx = Class'TgGame.TgPawn'.static.GetSpecialFx(6694); + // End:0x218 + if((Fx != none) && Fx.c_SoundList.Length > 0) + { + // End:0x188 + if(Fx.c_SoundList[0].c_AkEvent != none) + { + TgPC.PostAkEvent(Fx.c_SoundList[0].c_AkEvent); + } + else + { + // End:0x218 + if(Fx.c_SoundList[0].c_SoundObject != none) + { + TgPC.PlaySoundBase(Fx.c_SoundList[0].c_SoundObject); + } + } + } + } + //return; +} + +simulated function ShowPathfinder(bool bEnabled) +{ + local TgPlayerController TgPC; + + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0xE3 + if((TgPC != none) && (TgPC.c_bEnablePathfinderGuide && TgPC.m_fPathfinderEnabled) || !bEnabled) + { + TgPC.ShowPathfinder(bEnabled, 5.0000000); + // End:0xE3 + if(!bEnabled) + { + TgPC.m_fPathfinderEnabled = false; + } + } + //return; +} + +simulated function SpawnHelpTip() +{ + local TgPlayerController TgPC; + local Vector SpawnLoc, HitLocation, HitNormal, TraceEnd; + + // End:0x11 + if(m_HelpTip != none) + { + return; + } + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x13A + if((TgPC != none) && TgPC.c_GameTipManager != none) + { + SpawnLoc = Location; + TraceEnd = Location; + TraceEnd.Z -= 300.0000000; + // End:0xF0 + if(Trace(HitLocation, HitNormal, TraceEnd, SpawnLoc) != none) + { + SpawnLoc = HitLocation; + } + TgPC.c_GameTipManager.RequestHelpText(99,,, SpawnLoc, m_HelpTip); + } + //return; +} + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn_Character TgP; + + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + TgP = TgPawn_Character(Other); + // End:0x14A + if(TgP != none) + { + // End:0xB7 + if(TgP.IsGod() && !TgP.IsGodDecoy()) + { + m_TouchingChampions.AddItem(TgP); + } + TgP.PawnOnEnterCapturePoint(self); + // End:0x14A + if(!TgP.IsA('TgPawn_Illusion')) + { + ((int(TgP.GetTaskForceNumber()) == int(1)) ? m_nNumTF1OnPoint++ : m_nNumTF2OnPoint++); + m_bContestedThisTick = true; + } + } + //return; +} + +event UnTouch(Actor Other) +{ + local TgPawn_Character TgP; + + super(Actor).UnTouch(Other); + TgP = TgPawn_Character(Other); + // End:0x123 + if(TgP != none) + { + // End:0x9C + if(TgP.IsGod() && !TgP.IsGodDecoy()) + { + m_TouchingChampions.RemoveItem(TgP); + } + TgP.PawnOnLeaveCapturePoint(self); + // End:0x123 + if(!TgP.IsA('TgPawn_Illusion')) + { + ((int(TgP.GetTaskForceNumber()) == int(1)) ? m_nNumTF1OnPoint-- : m_nNumTF2OnPoint--); + } + } + //return; +} + +function UpdateOccupationStatus() +{ + local TgRepInfo_Game GRI; + local TgGame_PaladinsExtended Game; + local bool bContested, bCalculatePointCapture; + local TgRepInfo_TaskForce attackingTaskForce; + local byte oldContested; + + r_nControllingTaskForceIndex = 0; + oldContested = r_nContestingTaskForceIndex; + r_nContestingTaskForceIndex = 0; + // End:0x41 + if(int(r_eStatus) != int(1)) + { + return; + } + bContested = ((m_nNumTF1OnPoint > 0) && m_nNumTF2OnPoint > 0) || m_bContestedThisTick; + // End:0xA6 + if(!(m_nNumTF1OnPoint > 0) && m_nNumTF2OnPoint > 0) + { + m_bContestedThisTick = false; + } + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x53C + if(GRI != none) + { + GRI.r_CapturingTaskForce = none; + Game = TgGame_PaladinsExtended(WorldInfo.Game); + // End:0x178 + if(Game != none) + { + Game.UpdateOccupationStatus(self, m_nNumTF1OnPoint, m_nNumTF2OnPoint); + } + // End:0x344 + if(int(GRI.r_GameMode) == int(2)) + { + attackingTaskForce = GRI.GetAttackingTaskForce(); + // End:0x341 + if(((m_nNumTF1OnPoint > 0) || m_nNumTF2OnPoint > 0) && attackingTaskForce != none) + { + // End:0x284 + if((m_nNumTF1OnPoint > 0) && int(attackingTaskForce.r_nTaskForce) == int(1)) + { + r_nControllingTaskForceIndex = 1; + r_nContestingTaskForceIndex = 1; + Game.CheckAwardObjectiveScore(1, self, m_nNumTF1OnPoint, m_nNumTF2OnPoint); + } + else + { + // End:0x30D + if((m_nNumTF2OnPoint > 0) && int(attackingTaskForce.r_nTaskForce) == int(2)) + { + r_nControllingTaskForceIndex = 2; + r_nContestingTaskForceIndex = 2; + Game.CheckAwardObjectiveScore(2, self, m_nNumTF2OnPoint, m_nNumTF1OnPoint); + } + else + { + Game.CheckAwardObjectiveScore(0, self, m_nNumTF2OnPoint, m_nNumTF1OnPoint); + } + } + } + } + else + { + bCalculatePointCapture = true; + // End:0x3C7 + if(int(GRI.r_GameMode) == int(1)) + { + // End:0x3BB + if((Game != none) && Game.m_bCanCaptureDuringSurvival) + { + bCalculatePointCapture = true; + } + else + { + bCalculatePointCapture = false; + } + } + // End:0x53C + if(bCalculatePointCapture) + { + // End:0x45F + if(m_nNumTF1OnPoint > 0) + { + // End:0x40A + if(!bContested) + { + r_nControllingTaskForceIndex = 1; + r_nContestingTaskForceIndex = 1; + } + TgGame_PaladinsExtended(WorldInfo.Game).CheckAwardObjectiveScore(1, self, m_nNumTF1OnPoint, m_nNumTF2OnPoint); + } + else + { + // End:0x4EA + if(m_nNumTF2OnPoint > 0) + { + // End:0x495 + if(!bContested) + { + r_nControllingTaskForceIndex = 2; + r_nContestingTaskForceIndex = 2; + } + TgGame_PaladinsExtended(WorldInfo.Game).CheckAwardObjectiveScore(2, self, m_nNumTF2OnPoint, m_nNumTF1OnPoint); + } + else + { + TgGame_PaladinsExtended(WorldInfo.Game).CheckAwardObjectiveScore(0, self, m_nNumTF2OnPoint, m_nNumTF1OnPoint); + } + } + } + } + } + // End:0x555 + if(bContested) + { + r_nContestingTaskForceIndex = 3; + } + // End:0x5A5 + if((int(WorldInfo.NetMode) == int(NM_Standalone)) && int(oldContested) != int(r_nContestingTaskForceIndex)) + { + OnContestedStatusChanged(); + } + //return; +} + +simulated event int GetControllingPlayerCount() +{ + local int ReturnCount; + local TgPawn_Character TgP; + + ReturnCount = 0; + // End:0xBC + if(int(r_nControllingTaskForceIndex) != 0) + { + // End:0xBB + foreach TouchingActors(Class'TgGame.TgPawn_Character', TgP) + { + // End:0xBA + if(((int(TgP.GetTaskForceNumber()) == int(r_nControllingTaskForceIndex)) && TgP.IsGod()) && !TgP.IsGodDecoy()) + { + ReturnCount++; + } + } + } + return ReturnCount; + //return ReturnValue; +} + +simulated function SetFogActive(bool bEnabled) +{ + // End:0x29 + if(int(Role) == int(ROLE_Authority)) + { + r_bFogActive = bEnabled; + } + // End:0x5C + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + UpdateFogStatus(); + } + //return; +} + +simulated event Destroyed() +{ + super(Actor).Destroyed(); + // End:0x3C + if(m_ConvergeFog != none) + { + m_ConvergeFog.Destroy(); + m_ConvergeFog = none; + } + //return; +} + +defaultproperties +{ + m_fMinEnemyCapturingPointMessageTime=150.0000000 + m_vIndicatorOffset=(X=0.0000000,Y=0.0000000,Z=100.0000000) + m_TgSurvivalFogVolumeDensityInfoClass=Class'TgGame.TgSurvivalFogVolumeDensityInfo' + m_fFogFadeInTotalTime=5.0000000 + Components[0]=none + Components[1]=none + // Reference: CylinderComponent'TgGame.Default__TgChaosCapturePoint.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=150.0000000 + CollisionRadius=400.0000000 + ReplacementPrimitive=none + CollideActors=true + BlockZeroExtent=false + end object + Components[2]=CollisionCylinder + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgChaosCapturePoint.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + begin object name="MyLightEnvironment" class=Engine.DynamicLightEnvironmentComponent + end object + Components[3]=MyLightEnvironment + bCollideActors=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgChaosCapturePoint_ParticleStorm.uc b/exported/TgGame/Classes/TgChaosCapturePoint_ParticleStorm.uc new file mode 100755 index 00000000..2a854aec --- /dev/null +++ b/exported/TgGame/Classes/TgChaosCapturePoint_ParticleStorm.uc @@ -0,0 +1,211 @@ +class TgChaosCapturePoint_ParticleStorm extends TgChaosCapturePoint + native(Game) + placeable + hidecategories(Navigation); + +var(ParticleStorm) Emitter m_FrontEffect; +var(ParticleStorm) Emitter m_SwirlEffect; +var(Survival) float m_fFogStartDistance; +var(Survival) float m_fFogConvergeSpeed; +var(Survival) float m_fSecondsBeforeFogConverge; +var(Survival) float m_fFogMapDistance; +var(Survival) float m_fFogRadiusRatio; +var(Survival) float m_fFogAlphaRatio; +var(SurvivalAudio) AkAmbientSound m_2DSoundActor; +var(SurvivalAudio) int m_nNumMobileSoundActors; +var array m_MobileSoundActors; +var(SurvivalAudio) AkEvent m_MobileSoundActorAkEvent; +var(SurvivalAudio) AkEvent m_MobileSoundActorAkEvent_Alt; +var array m_vPerimeterAnchors; +var float m_fTargetStartDistance; +var float m_fPreviousStartDistance; +var float m_fFogUpdateTimestamp; +var float m_fSoundActorConvergeLimit; + +simulated event SetInitialState() +{ + local TgMobileAmbientSound SoundActor; + local int I; + + // End:0x1F9 + if((int(Role) != int(ROLE_Authority)) && m_MobileSoundActors.Length == 0) + { + I = 0; + J0x31: + + // End:0x1F9 [Loop If] + if(I < m_nNumMobileSoundActors) + { + m_vPerimeterAnchors.AddItem(vect(0.0000000, 0.0000000, 0.0000000)); + m_vPerimeterAnchors[I].X = Sin(((float(I) / float(m_nNumMobileSoundActors)) * float(2)) * 3.1415930); + m_vPerimeterAnchors[I].Y = Cos(((float(I) / float(m_nNumMobileSoundActors)) * float(2)) * 3.1415930); + m_vPerimeterAnchors[I] *= m_fFogStartDistance; + m_vPerimeterAnchors[I] += Location; + SoundActor = Spawn(Class'TgGame.TgMobileAmbientSound',,, m_vPerimeterAnchors[I]); + // End:0x1AD + if((I % 2) == 0) + { + SoundActor.PlayEvent = m_MobileSoundActorAkEvent; + } + else + { + SoundActor.PlayEvent = m_MobileSoundActorAkEvent_Alt; + } + m_MobileSoundActors.AddItem(SoundActor); + I++; + // [Loop Continue] + goto J0x31; + } + } + //return; +} + +simulated event Tick(float DeltaTime) +{ + local TgRepInfo_Game GRI; + local float fFogDist; + local Vector vParam; + local TgMobileAmbientSound SoundActor; + local int I; + + super.Tick(DeltaTime); + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x505 + if(GRI != none) + { + // End:0xE2 + if(m_fTargetStartDistance != GRI.r_fConvergeDistance) + { + m_fPreviousStartDistance = m_fTargetStartDistance; + m_fTargetStartDistance = GRI.r_fConvergeDistance; + m_fFogUpdateTimestamp = WorldInfo.TimeSeconds; + } + fFogDist = Lerp(m_fPreviousStartDistance, m_fTargetStartDistance, FClamp((WorldInfo.TimeSeconds - m_fFogUpdateTimestamp) / GRI.r_fFogConvergeInterval, 0.0000000, 1.0000000)); + vParam = vect(0.0000000, 0.0000000, 1.0000000); + vParam.X = fFogDist * m_fFogRadiusRatio; + vParam.Y = fFogDist * m_fFogRadiusRatio; + // End:0x226 + if(m_SwirlEffect != none) + { + m_SwirlEffect.SetFloatParameter('Alpha', (1.0000000 - (fFogDist * m_fFogAlphaRatio)) ** float(2)); + } + // End:0x2AF + if(m_FrontEffect != none) + { + m_FrontEffect.SetFloatParameter('Alpha', (1.0000000 - (fFogDist * m_fFogAlphaRatio)) * float(2)); + m_FrontEffect.SetVectorParameter('Radius', vParam); + } + // End:0x307 + if(m_2DSoundActor != none) + { + m_2DSoundActor.SetRTPCValue('ENV_FogProgress', 100.0000000 - ((fFogDist / m_fFogStartDistance) * float(100))); + } + // End:0x42C + if(GRI.r_bRoundEnding) + { + m_fTargetStartDistance = m_fFogStartDistance; + m_fPreviousStartDistance = m_fFogStartDistance; + I = 0; + J0x35A: + + // End:0x429 [Loop If] + if(I < m_MobileSoundActors.Length) + { + SoundActor = m_MobileSoundActors[I]; + // End:0x41B + if(((SoundActor != none) && I < m_vPerimeterAnchors.Length) && SoundActor.Location != m_vPerimeterAnchors[I]) + { + SoundActor.SetLocation(m_vPerimeterAnchors[I]); + } + I++; + // [Loop Continue] + goto J0x35A; + } + } + else + { + I = 0; + J0x437: + + // End:0x505 [Loop If] + if(I < m_MobileSoundActors.Length) + { + SoundActor = m_MobileSoundActors[I]; + // End:0x4F7 + if((SoundActor != none) && fFogDist > m_fSoundActorConvergeLimit) + { + SoundActor.Move((Normal(m_vPerimeterAnchors[I] - Location) * fFogDist) - SoundActor.Location); + } + I++; + // [Loop Continue] + goto J0x437; + } + } + } + //return; +} + +function ResetFog() +{ + local TgRepInfo_Game GRI; + local Vector vParam; + + vParam = vect(0.0000000, 0.0000000, 1.0000000); + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0xA0 + if(GRI != none) + { + GRI.r_fConvergeDistance = m_fFogStartDistance; + GRI.r_bFogEnded = false; + } + // End:0x142 + if(m_FrontEffect != none) + { + vParam.X = m_fFogStartDistance * m_fFogRadiusRatio; + vParam.Y = m_fFogStartDistance * m_fFogRadiusRatio; + m_FrontEffect.SetVectorParameter('Radius', vParam); + } + // End:0x17E + if(m_SwirlEffect != none) + { + m_SwirlEffect.SetFloatParameter('Alpha', 0.0000000); + } + m_fTargetStartDistance = m_fFogStartDistance; + m_fPreviousStartDistance = m_fFogStartDistance; + // End:0x1E0 + if(m_2DSoundActor != none) + { + m_2DSoundActor.SetRTPCValue('ENV_FogProgress', 0.0000000); + } + //return; +} + +defaultproperties +{ + m_fFogStartDistance=10000.0000000 + m_fFogConvergeSpeed=200.0000000 + m_fSecondsBeforeFogConverge=10.0000000 + m_fFogMapDistance=7000.0000000 + m_fFogRadiusRatio=0.0640000 + m_fFogAlphaRatio=0.0001280 + m_nNumMobileSoundActors=8 + m_fSoundActorConvergeLimit=400.0000000 + Components[0]=none + Components[1]=none + // Reference: CylinderComponent'TgGame.Default__TgChaosCapturePoint_ParticleStorm.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgChaosCapturePoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + Components[2]=CollisionCylinder + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgChaosCapturePoint_ParticleStorm.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgChaosCapturePoint.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + Components[3]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCharacterBuilderLight.uc b/exported/TgGame/Classes/TgCharacterBuilderLight.uc new file mode 100755 index 00000000..1e374330 --- /dev/null +++ b/exported/TgGame/Classes/TgCharacterBuilderLight.uc @@ -0,0 +1,23 @@ +class TgCharacterBuilderLight extends SpotLightToggleable + native + hidecategories(Navigation); + +defaultproperties +{ + // Reference: SpotLightComponent'TgGame.Default__TgCharacterBuilderLight.SpotLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SpotLightComponent0' + // Archetype: SpotLightComponent'Engine.Default__SpotLightToggleable.SpotLightComponent0' + begin object name="SpotLightComponent0" + end object + LightComponent=SpotLightComponent0 + bEnabled=true + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=none + Components[4]=none + Components[5]=SpotLightComponent0 + Components[6]=none + bNoDelete=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCharacterPerformance.uc b/exported/TgGame/Classes/TgCharacterPerformance.uc new file mode 100755 index 00000000..f313abde --- /dev/null +++ b/exported/TgGame/Classes/TgCharacterPerformance.uc @@ -0,0 +1,71 @@ +class TgCharacterPerformance extends TgGame + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +struct native DeviceToCharacterID +{ + var int CharacterID; + var int DeviceID; + + structdefaultproperties + { + CharacterID=0 + DeviceID=0 + } +}; + +var transient PComPerformanceCaptureBase BasePerformanceCapture; +var PComPerformanceCaptureBase.EPComPerformanceCaptureState CurrentCaptureState; +var string CharacterInput; +var string SkinInput; +var int CurrentCharacterIndex; +var int CurrentSkinIndex; +var transient array CharacterPlacements; +var transient array CharactersToTest; +var array AllSkinIDs; +var array DeviceToCharacterIDPairs; +var array StatsPerSkin; +var array CharacterPawns; +var TgManifestGroup ManifestGroup; + +event PostBeginPlay() +{ + BasePerformanceCapture.InitializePerformanceCaptureSettings(); + CollectCharacterPlacementsAndSkins(); + //return; +} + +// Export UTgCharacterPerformance::execCollectCharacterPlacementsAndSkins(FFrame&, void* const) +native final function CollectCharacterPlacementsAndSkins(); + +// Export UTgCharacterPerformance::execCollectAllSkins(FFrame&, void* const) +native final function CollectAllSkins(); + +// Export UTgCharacterPerformance::execMoveCameraToNode(FFrame&, void* const) +native final function MoveCameraToNode(); + +// Export UTgCharacterPerformance::execSpawnCharacters(FFrame&, void* const) +native final function SpawnCharacters(); + +// Export UTgCharacterPerformance::execSpawnBotByIdForPerformance(FFrame&, void* const) +native final function TgPawn SpawnBotByIdForPerformance(int nBotId, int nSkinId, int nHeadId, int nWeaponSkinId, Vector vLocation, Rotator rRotation); + +// Export UTgCharacterPerformance::execDoNextAction(FFrame&, void* const) +native final function DoNextAction(); + +// Export UTgCharacterPerformance::execPrintAllSkins(FFrame&, void* const) +native final function PrintAllSkins(); + +defaultproperties +{ + // Reference: PComPerformanceCaptureBase'TgGame.Default__TgCharacterPerformance.MyPerformanceBase' + begin object name="MyPerformanceBase" class=PlatformCommon.PComPerformanceCaptureBase + end object + BasePerformanceCapture=MyPerformanceBase + // Reference: TgManifestGroup'TgGame.Default__TgCharacterPerformance.ManifestGroup0' + begin object name="ManifestGroup0" class=TgGame.TgManifestGroup + end object + ManifestGroup=ManifestGroup0 + HUDType=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgClientSettings.uc b/exported/TgGame/Classes/TgClientSettings.uc new file mode 100755 index 00000000..66770218 --- /dev/null +++ b/exported/TgGame/Classes/TgClientSettings.uc @@ -0,0 +1,363 @@ +class TgClientSettings extends Object + native + config(Game); + +enum ECastMode +{ + CM_Default, // 0 + CM_Quick, // 1 + CM_Instant, // 2 + CM_Use_Global, // 3 + CM_MAX // 4 +}; + +enum EMapPlacement +{ + MPLC_Bottom, // 0 + MPLC_Top, // 1 + MPLC_MAX // 2 +}; + +enum EFriendStateNotifications +{ + FSN_Never, // 0 + FSN_Lobby_Only, // 1 + FSN_InGame_Only, // 2 + FSN_Always, // 3 + FSN_MAX // 4 +}; + +enum ENamePlateName +{ + NPN_PlayerName, // 0 + NPN_GodName, // 1 + NPN_None, // 2 + NPN_MAX // 3 +}; + +enum EColorBlindOption +{ + CB_None, // 0 + CB_Protanope, // 1 + CB_Deuteranope, // 2 + CB_Tritanope, // 3 + CB_MAX // 4 +}; + +enum EAspectRatio +{ + SETTINGAR_16x9, // 0 + SETTINGAR_16x10, // 1 + SETTINGAR_MAX // 2 +}; + +enum EControlIconStyle +{ + ECIS_XboxOne, // 0 + ECIS_PS4, // 1 + ECIS_MAX // 2 +}; + +var() globalconfig float MinimapScaling; +var() globalconfig float UIScaling; +var() globalconfig float HUDScaling; +var() globalconfig float CombatTextScaling; +var() globalconfig float ChatScaling; +var() globalconfig float ChatFadeout; +var() globalconfig TgClientSettings.ENamePlateName OverlayGodName; +var() globalconfig TgClientSettings.EFriendStateNotifications ShowFriendStateNotifications; +var() globalconfig TgObject.ETargetingLineStyle TargetingLineStyle; +var() globalconfig TgObject.ETargetingPreviewStyle TargetingPreviewStyle; +var() globalconfig TgObject.ETargetingReticleStyle TargetingReticleStyle; +var() globalconfig TgObject.ETargetingHighlightStyle TargetingHighlightStyle; +var() globalconfig TgClientSettings.ECastMode CastMode; +var() globalconfig TgClientSettings.EMapPlacement MapPlacement; +var() globalconfig TgClientSettings.EControlIconStyle ControlIconStyle; +var() globalconfig TgClientSettings.EColorBlindOption SelectedColorBlindOption; +var() globalconfig TgClientSettings.EAspectRatio DesiredAspectRatio; +var() globalconfig bool OverlayShowLocalPlayer; +var() globalconfig bool DisableHelpMessages; +var() globalconfig bool ShowInHandTargeting; +var() globalconfig bool DisableTargetingAid; +var() globalconfig bool VerticalTargetingPreviews; +var() globalconfig bool DisableProfanityFilter; +var() globalconfig bool ShowTeamTags; +var() globalconfig bool SpectateDamage; +var() globalconfig bool SpectateHeals; +var() globalconfig bool SpectateCrits; +var() globalconfig bool SpectateGold; +var() globalconfig bool SpectateXP; +var() globalconfig bool SpectateOutlines; +var() globalconfig bool ShowRentNotification; +var() globalconfig bool ShowHUDScore; +var() globalconfig bool ShowHUDEnemy; +var() globalconfig bool ShowHUDStats; +var() globalconfig bool ShowHUDItems; +var() globalconfig bool ShowWardPings; +var() globalconfig bool LoadAssistModeSubLevel; +var() globalconfig bool bTargetingAlwaysShowPreview; +var() globalconfig bool bUseCastQueueing; +var() globalconfig bool bUseFixedPitchMode; +var() globalconfig bool NewUserPromptTutorialMatch; +var() globalconfig bool NewUserFinished; +var() globalconfig bool VendorStoreTopTier; +var() globalconfig bool bEnableHelpPopups; +var() globalconfig bool ColorBlindMode; +var() globalconfig bool ColorBlindModeShader; +var() globalconfig bool ColorBlindModeShaderSimulateMode; +var() globalconfig bool MasterMute; +var() globalconfig bool SFXMute; +var() globalconfig bool MusicMute; +var() globalconfig bool VoiceMute; +var() globalconfig bool MatchNotifierMute; +var() globalconfig bool AllPlayerMute; +var() globalconfig bool bEnableVoiceChat; +var() globalconfig bool bUsePushToTalkForVoiceChat; +var() globalconfig bool QueueWaitRegion; +var() globalconfig bool QueueWaitSolo; +var() globalconfig bool AutoPurchase; +var() globalconfig bool AutoSkill; +var() globalconfig bool bToggleZoom; +var() globalconfig bool DisableJoystickInput; +var() globalconfig bool EnableControllerFeedback; +var() globalconfig bool bEnableHudTeams; +var() globalconfig bool bEnableHudCombat; +var() globalconfig bool bEnableHudHealth; +var() globalconfig bool bEnableHudTeamUI; +var() globalconfig bool bEnableHudMinimap; +var() globalconfig bool bReticleBloom; +var() globalconfig bool bChangeReticleOverEnemy; +var() globalconfig bool bEnableSpecatorPlayerIcons; +var() globalconfig bool bShowSpectatorItems; +var() globalconfig bool bPublicParty; +var globalconfig bool bShownVaultTutorial; +var globalconfig bool bEnableSpectate; +var bool blockNonFriendChat; +var bool newUserFinishedTutorial; +var() globalconfig int TeamTagFormat; +var() globalconfig float FogOfWarDimness; +var() globalconfig float MinimapOpacity; +var() globalconfig int DemoBotId; +var() globalconfig float CastQueueTime; +var() globalconfig float FixedPitchLowerBoundDegrees; +var() globalconfig float FixedPitchUpperBoundDegrees; +var() globalconfig int PlayNowTabId; +var() globalconfig int VendorStoreTabId; +var() globalconfig int VendorStoreTypeId; +var() globalconfig int VendorStoreTypeRecId; +var() globalconfig int LeagueSelection; +var() globalconfig int VPSelection; +var() globalconfig int ColorBlindModeShaderType; +var() globalconfig float MasterVolume; +var() globalconfig float SFXVolume; +var() globalconfig float MusicVolume; +var() globalconfig float VoiceVolume; +var() globalconfig float MatchNotifierVolume; +var() globalconfig float VoiceChatVolume; +var() globalconfig float VoiceChatMicVolume; +var() globalconfig int nAudioPanning; +var() globalconfig float DesiredFOV; +var() globalconfig float fGamma; +var() globalconfig int nEnableHudDamage; +var() globalconfig int nReticleColor; +var() globalconfig int nReticleType; +var() globalconfig int nSpectatorBlueTeamSeriesScore; +var() globalconfig int nSpectatorRedTeamSeriesScore; +var() globalconfig int TwitchServer; +var() globalconfig int TwitchBitrate; +var() globalconfig int TwitchFramerate; +var() globalconfig int TwitchMicVolume; +var() globalconfig int TwitchGameVolume; +var() globalconfig int TwitchResolution; +var() globalconfig int TwitchMicMute; +var() globalconfig int TwitchGameMute; +var() globalconfig int TwitchSaveUsername; +var() globalconfig string TwitchTitle; +var() globalconfig string TwitchUsername; +var globalconfig string DemoVideo; +var globalconfig array DemoResults; +var globalconfig int CustomGameQueueIndex; +var int loadingPortraitBanner; +var init array newUserWatchedVideos; +var int ChosenSkinId; +var int ChosenHeadId; +var int ChosenClassId; +var int ChosenWeaponId; +var int ChosenWeaponSkinId; +var int ChosenPedestalId; + +// Export UTgClientSettings::execLoadSettingsOnStartup(FFrame&, void* const) +native function LoadSettingsOnStartup(); + +// Export UTgClientSettings::execOnSettingsChanged(FFrame&, void* const) +native function OnSettingsChanged(optional int settingtype, optional bool bSkipSave); + +// Export UTgClientSettings::execApplyAudioSettings(FFrame&, void* const) +native function ApplyAudioSettings(); + +// Export UTgClientSettings::execApplyJoystickSettings(FFrame&, void* const) +native function ApplyJoystickSettings(); + +// Export UTgClientSettings::execApplySpectatorSettings(FFrame&, void* const) +native function ApplySpectatorSettings(); + +// Export UTgClientSettings::execVerifySettingsAreValid(FFrame&, void* const) +native function VerifySettingsAreValid(); + +// Export UTgClientSettings::execLoadPlayerSettings(FFrame&, void* const) +native function LoadPlayerSettings(); + +// Export UTgClientSettings::execLoadPlayerSettingsFromIni(FFrame&, void* const) +native function LoadPlayerSettingsFromIni(); + +// Export UTgClientSettings::execSavePlayerSettings(FFrame&, void* const) +native function SavePlayerSettings(); + +// Export UTgClientSettings::execGetDesiredAspectRatio(FFrame&, void* const) +native function float GetDesiredAspectRatio(); + +function OnReadSaveGameData(bool bWasSuccessful, byte LocalUserNum, string SaveFileName) +{ + local OnlineSubsystem OnlineSub; + + LoadPlayerSettingsFromIni(); + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xC8 + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.ContentInterface, OnlineContentInterface(none))) + { + OnlineSub.ContentInterface.ClearReadSaveGameDataCompleteDelegate(LocalUserNum, OnReadSaveGameData); + } + //return; +} + +event bool ConditionalReadSaveGameData(int PlayerID, string SaveFileName) +{ + local OnlineSubsystem OnlineSub; + local array Data; + local byte bIsValid; + local bool bHasData; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0x19B + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.ContentInterface, OnlineContentInterface(none))) + { + bHasData = OnlineSub.ContentInterface.GetSaveGameData(byte(PlayerID), SaveFileName, bIsValid, Data); + // End:0x199 + if((int(bIsValid) == int(0)) || !bHasData) + { + OnlineSub.ContentInterface.AddReadSaveGameDataCompleteDelegate(byte(PlayerID), OnReadSaveGameData); + OnlineSub.ContentInterface.ReadSaveGameData(byte(PlayerID), SaveFileName); + return true; + } + else + { + return false; + } + } + return false; + //return ReturnValue; +} + +event bool GetSaveGameDataViaInterface(byte LocalUserNum, const out string SaveFileName, out byte bIsValid, out array SaveGameData) +{ + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xC9 + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.ContentInterface, OnlineContentInterface(none))) + { + return OnlineSub.ContentInterface.GetSaveGameData(LocalUserNum, SaveFileName, bIsValid, SaveGameData); + } + return false; + //return ReturnValue; +} + +event bool WriteSaveGameDataViaInterface(byte LocalUserNum, const out string SaveFileName, const out array SaveGameData, string Title, string SubTitle, string Description) +{ + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xDB + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.ContentInterface, OnlineContentInterface(none))) + { + return OnlineSub.ContentInterface.WriteSaveGameData(LocalUserNum, SaveFileName, SaveGameData, Title, SubTitle, Description); + } + return false; + //return ReturnValue; +} + +// Export UTgClientSettings::execOverrideVoiceInGameSettings(FFrame&, void* const) +native function OverrideVoiceInGameSettings(bool bOverride); + +// Export UTgClientSettings::execGetCastMode(FFrame&, void* const) +native function TgClientSettings.ECastMode GetCastMode(optional int nCharId, optional TgObject.TG_EQUIP_POINT EquipPoint = 0); + +// Export UTgClientSettings::execSetCastMode(FFrame&, void* const) +native function SetCastMode(TgClientSettings.ECastMode castModeVal, optional int nCharId, optional TgObject.TG_EQUIP_POINT EquipPoint = 0); + +event bool UpdatePlayerMuteSetting(bool PlayerMuteSetting) +{ + local OnlineSubsystem OnlineSub; + + OnlineSub = Class'Engine.GameEngine'.static.GetOnlineSubsystem(); + // End:0xAF + if((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.VoiceInterface, OnlineVoiceInterface(none))) + { + return OnlineSub.VoiceInterface.UpdatePlayerMuteSetting(PlayerMuteSetting); + } + return false; + //return ReturnValue; +} + +defaultproperties +{ + MinimapScaling=1.0000000 + UIScaling=1.0000000 + HUDScaling=1.0000000 + CombatTextScaling=1.2000000 + ChatScaling=1.0000000 + ChatFadeout=2.0000000 + ShowFriendStateNotifications=EFriendStateNotifications.FSN_Always + ShowInHandTargeting=true + VerticalTargetingPreviews=true + ShowTeamTags=true + ShowRentNotification=true + ShowHUDScore=true + ShowHUDEnemy=true + ShowHUDStats=true + ShowHUDItems=true + ShowWardPings=true + bTargetingAlwaysShowPreview=true + NewUserPromptTutorialMatch=true + VendorStoreTopTier=true + bEnableHelpPopups=true + bEnableVoiceChat=true + bUsePushToTalkForVoiceChat=true + AutoPurchase=true + AutoSkill=true + EnableControllerFeedback=true + bEnableHudHealth=true + bEnableHudTeamUI=true + bEnableHudMinimap=true + bReticleBloom=true + bEnableSpecatorPlayerIcons=true + bShowSpectatorItems=true + bEnableSpectate=true + FogOfWarDimness=0.4000000 + MinimapOpacity=0.7000000 + FixedPitchLowerBoundDegrees=-45.0000000 + FixedPitchUpperBoundDegrees=-8.0000000 + PlayNowTabId=-1 + ColorBlindModeShaderType=1 + MasterVolume=1.0000000 + SFXVolume=1.0000000 + MusicVolume=1.0000000 + VoiceVolume=1.0000000 + MatchNotifierVolume=0.5000000 + VoiceChatVolume=1.0000000 + VoiceChatMicVolume=1.0000000 + DesiredFOV=100.0000000 + nEnableHudDamage=2 + nSpectatorBlueTeamSeriesScore=-1 + nSpectatorRedTeamSeriesScore=-1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCollisionProxy.uc b/exported/TgGame/Classes/TgCollisionProxy.uc new file mode 100755 index 00000000..0ef97a55 --- /dev/null +++ b/exported/TgGame/Classes/TgCollisionProxy.uc @@ -0,0 +1,315 @@ +class TgCollisionProxy extends Actor + native + notplaceable + hidecategories(Navigation); + +var array m_NearByPlayers; +var bool m_bIgnoreStealthPlayers; +var bool m_bIgnoreNonPlayers; +var bool m_bIgnoreInvulnerablePlayers; +var bool m_bForwardOwnerOnly; +//var delegate __ProxyTouch__Delegate; +//var delegate __ProxyUnTouch__Delegate; + +delegate ProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + //return; +} + +delegate ProxyUnTouch(Actor Other) +{ + //return; +} + +// Export UTgCollisionProxy::execForwardTouch(FFrame&, void* const) +native function ForwardTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal); + +// Export UTgCollisionProxy::execForwardUnTouch(FFrame&, void* const) +native function ForwardUnTouch(Actor Other); + +// Export UTgCollisionProxy::execDelegatesUpdated(FFrame&, void* const) +native function DelegatesUpdated(); + +// Export UTgCollisionProxy::execTouchOther(FFrame&, void* const) +native function TouchOther(Actor Other, PrimitiveComponent OtherComp); + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn aPawn; + + // End:0x4E + if(!m_bForwardOwnerOnly) + { + aPawn = TgPawn(Other); + // End:0x4E + if(aPawn != none) + { + CheckNearByPlayers(aPawn, true); + } + } + ForwardTouch(Other, OtherComp, HitLocation, HitNormal); + //return; +} + +simulated event UnTouch(Actor Other) +{ + local TgPawn aPawn; + + // End:0x4E + if(!m_bForwardOwnerOnly) + { + aPawn = TgPawn(Other); + // End:0x4E + if(aPawn != none) + { + CheckNearByPlayers(aPawn, false); + } + } + ForwardUnTouch(Other); + //return; +} + +simulated event bool ShouldIgnoreActor(TgPawn aPawn) +{ + // End:0xDB + if(aPawn != none) + { + // End:0x49 + if(m_bIgnoreStealthPlayers && int(aPawn.r_eIsStealthed) != int(0)) + { + return true; + } + // End:0x82 + if(m_bIgnoreNonPlayers && aPawn.r_nPhysicalType != 10034) + { + return true; + } + // End:0xDB + if((m_bIgnoreInvulnerablePlayers && aPawn.r_EffectManager != none) && aPawn.r_bIsInStasis) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated event ForceClearNearByPlayersList() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x4E [Loop If] + if(I < m_NearByPlayers.Length) + { + OnPlayerRemoved(m_NearByPlayers[I]); + I++; + // [Loop Continue] + goto J0x0B; + } + m_NearByPlayers.Length = 0; + //return; +} + +simulated function Destroyed() +{ + super.Destroyed(); + ForceClearNearByPlayersList(); + //return; +} + +simulated function CheckNearByPlayers(TgPawn aPawn, bool bAdd) +{ + local bool bFound; + local int I, nLen; + + nLen = m_NearByPlayers.Length; + I = 0; + J0x1F: + + // End:0x74 [Loop If] + if(I < nLen) + { + // End:0x66 + if(aPawn == m_NearByPlayers[I]) + { + bFound = true; + // [Explicit Break] + goto J0x74; + } + I++; + // [Loop Continue] + goto J0x1F; + } + J0x74: + + // End:0xF2 + if(bAdd) + { + // End:0xEF + if(!bFound && !ShouldIgnoreActor(aPawn)) + { + m_NearByPlayers.Insert(nLen, 1); + m_NearByPlayers[I] = aPawn; + OnPlayerAdded(aPawn); + } + } + else + { + // End:0x127 + if(bFound) + { + m_NearByPlayers.Remove(I, 1); + OnPlayerRemoved(aPawn); + } + } + //return; +} + +simulated function OnPlayerAdded(TgPawn aPawn) +{ + //return; +} + +simulated function OnPlayerRemoved(TgPawn aPawn) +{ + //return; +} + +simulated function int GetNearByPlayers(optional bool bOnlyValid = true) +{ + local TgPawn P; + local int nCount, I; + + // End:0x1F + if(!bOnlyValid) + { + return m_NearByPlayers.Length; + } + I = 0; + J0x2A: + + // End:0xA3 [Loop If] + if(I < m_NearByPlayers.Length) + { + P = m_NearByPlayers[I]; + // End:0x71 + if(P == none) + { + } + else + { + // End:0x8A + if(ShouldIgnoreActor(P)) + { + } + else + { + nCount++; + } + } + I++; + // [Loop Continue] + goto J0x2A; + } + return nCount; + //return ReturnValue; +} + +simulated function GetNearByPlayersTaskforce(out array NearByPlayerTaskforces, optional bool bEndWhenMultipleFound) +{ + local int I, J, nCurrTaskForce; + local TgPawn P; + local bool bFound; + + I = 0; + J0x0C: + + // End:0x14F [Loop If] + if(I < m_NearByPlayers.Length) + { + bFound = false; + P = m_NearByPlayers[I]; + // End:0x66 + if(ShouldIgnoreActor(P)) + { + } + else + { + nCurrTaskForce = int(P.GetTaskForceNumber()); + J = 0; + J0x9C: + + // End:0xF2 [Loop If] + if(J < NearByPlayerTaskforces.Length) + { + // End:0xE4 + if(NearByPlayerTaskforces[J] == nCurrTaskForce) + { + bFound = true; + // [Explicit Break] + goto J0xF2; + } + J++; + // [Loop Continue] + goto J0x9C; + } + J0xF2: + + // End:0x141 + if(!bFound) + { + NearByPlayerTaskforces[NearByPlayerTaskforces.Length] = nCurrTaskForce; + // End:0x141 + if(bEndWhenMultipleFound && NearByPlayerTaskforces.Length > 1) + { + // [Explicit Break] + goto J0x14F; + } + } + } + I++; + // [Loop Continue] + goto J0x0C; + } + J0x14F: + + //return; +} + +simulated function ForceProximityScan(optional float Radius) +{ + local TgPawn P; + + // End:0x45 + if(Radius == 0.0000000) + { + Radius = CylinderComponent(CollisionComponent).CollisionRadius; + } + // End:0xA1 + foreach OverlappingActors(Class'TgGame.TgPawn', P, Radius) + { + TouchOther(P, P.Mesh); + } + //return; +} + +// Export UTgCollisionProxy::execSetAux(FFrame&, void* const) +native function SetAux(name AuxBusName, float Level); + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgCollisionProxy.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + ReplacementPrimitive=none + CollideActors=true + BlockZeroExtent=false + end object + Components[0]=CollisionCylinder + bCollideActors=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCollisionProxy_Cylinder.uc b/exported/TgGame/Classes/TgCollisionProxy_Cylinder.uc new file mode 100755 index 00000000..db0e4248 --- /dev/null +++ b/exported/TgGame/Classes/TgCollisionProxy_Cylinder.uc @@ -0,0 +1,20 @@ +class TgCollisionProxy_Cylinder extends TgCollisionProxy + native + notplaceable + hidecategories(Navigation); + +var export editinline CylinderComponent m_CollisionCylinder; + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgCollisionProxy_Cylinder.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgCollisionProxy.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + m_CollisionCylinder=CollisionCylinder + Components[0]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCollisionProxy_Mesh.uc b/exported/TgGame/Classes/TgCollisionProxy_Mesh.uc new file mode 100755 index 00000000..c642f192 --- /dev/null +++ b/exported/TgGame/Classes/TgCollisionProxy_Mesh.uc @@ -0,0 +1,25 @@ +class TgCollisionProxy_Mesh extends TgCollisionProxy + native + notplaceable + hidecategories(Navigation); + +var export editinline MeshComponent m_MeshComponent; + +// Export UTgCollisionProxy_Mesh::execSpawnMesh(FFrame&, void* const) +native function SpawnMesh(int AssemblyID); + +// Export UTgCollisionProxy_Mesh::execScaleCollisionMesh(FFrame&, void* const) +native function ScaleCollisionMesh(Vector NewScale); + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgCollisionProxy_Mesh.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgCollisionProxy.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + Components[0]=CollisionCylinder + CollisionComponent=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCollisionProxy_SpectatorActionListener.uc b/exported/TgGame/Classes/TgCollisionProxy_SpectatorActionListener.uc new file mode 100755 index 00000000..0d65ee4f --- /dev/null +++ b/exported/TgGame/Classes/TgCollisionProxy_SpectatorActionListener.uc @@ -0,0 +1,39 @@ +class TgCollisionProxy_SpectatorActionListener extends TgCollisionProxy_Cylinder + transient + native + notplaceable + hidecategories(Navigation); + +//var delegate __ProxyDeviceOnStartFire__Delegate; + +delegate ProxyDeviceOnStartFire(TgPawn FiringPawn, int nEquipSlot) +{ + //return; +} + +// Export UTgCollisionProxy_SpectatorActionListener::execForwardDeviceOnStartFire(FFrame&, void* const) +native function ForwardDeviceOnStartFire(TgPawn FiringPawn, int nEquipSlot); + +// Export UTgCollisionProxy_SpectatorActionListener::execHasMixedTaskforcePlayersNearby(FFrame&, void* const) +native function bool HasMixedTaskforcePlayersNearby(); + +simulated event PostDemoRewind() +{ + super(Actor).PostDemoRewind(); + ForceProximityScan(); + //return; +} + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgCollisionProxy_SpectatorActionListener.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgCollisionProxy_Cylinder.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + m_CollisionCylinder=CollisionCylinder + Components[0]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCollisionProxy_Vortex.uc b/exported/TgGame/Classes/TgCollisionProxy_Vortex.uc new file mode 100755 index 00000000..63906397 --- /dev/null +++ b/exported/TgGame/Classes/TgCollisionProxy_Vortex.uc @@ -0,0 +1,125 @@ +class TgCollisionProxy_Vortex extends TgCollisionProxy + native + placeable + hidecategories(Navigation); + +var() float m_fGroundSpeedStrafePct; +var() float m_fGroundSpeedToVortex; +var() float m_fGroundSpeedPctRetained; +var() float m_fInnerRadius; +var() bool m_bEnabled; +var() bool m_bOnlyAffectCurrentTarget; +var transient Pawn m_LastInstigator; + +simulated event Tick(float DeltaTime) +{ + local TgPawn AffectedPawn; + + super(Actor).Tick(DeltaTime); + ForceClearNearByPlayersList(); + // End:0x4A + foreach TouchingActors(Class'TgGame.TgPawn', AffectedPawn) + { + CheckNearByPlayers(AffectedPawn, true); + } + //return; +} + +simulated event InstigatorChanged() +{ + local TgPawn aPawn; + + // End:0x47 + if(!m_bForwardOwnerOnly) + { + ForceClearNearByPlayersList(); + // End:0x46 + foreach TouchingActors(Class'TgGame.TgPawn', aPawn) + { + CheckNearByPlayers(aPawn, true); + } + } + //return; +} + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + // End:0x3D + if(!m_bOnlyAffectCurrentTarget) + { + super.Touch(Other, OtherComp, HitLocation, HitNormal); + } + //return; +} + +simulated event UnTouch(Actor Other) +{ + // End:0x22 + if(!m_bOnlyAffectCurrentTarget) + { + super.UnTouch(Other); + } + //return; +} + +simulated event bool ShouldIgnoreActor(TgPawn aPawn) +{ + local bool bIgnore; + + bIgnore = super.ShouldIgnoreActor(aPawn); + // End:0x73 + if(!bIgnore && Instigator != none) + { + bIgnore = !Instigator.IsEnemy(aPawn); + } + // End:0xAE + if(!bIgnore) + { + bIgnore = !aPawn.CanBePulled(); + } + return bIgnore; + //return ReturnValue; +} + +simulated function OnPlayerAdded(TgPawn aPawn) +{ + // End:0x56 + if((aPawn != none) && aPawn.CanBeAffectedByVortices()) + { + aPawn.m_CurrentVortexList.AddItem(self); + } + //return; +} + +simulated function OnPlayerRemoved(TgPawn aPawn) +{ + // End:0x32 + if(aPawn != none) + { + aPawn.m_CurrentVortexList.RemoveItem(self); + } + //return; +} + +defaultproperties +{ + m_fGroundSpeedToVortex=300.0000000 + m_fGroundSpeedPctRetained=80.0000000 + m_fInnerRadius=20.0000000 + m_bEnabled=true + // Reference: CylinderComponent'TgGame.Default__TgCollisionProxy_Vortex.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgCollisionProxy.CollisionCylinder' + begin object name="CollisionCylinder" + CollisionHeight=480.0000000 + CollisionRadius=480.0000000 + ReplacementPrimitive=none + end object + Components[0]=CollisionCylinder + Components[1]=none + CollisionType=ECollisionType.COLLIDE_TouchAllButWeapons + bReplicateInstigator=true + bOnlyDirtyReplication=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCombatActor.uc b/exported/TgGame/Classes/TgCombatActor.uc new file mode 100755 index 00000000..78eb0c6f --- /dev/null +++ b/exported/TgGame/Classes/TgCombatActor.uc @@ -0,0 +1,151 @@ +interface TgCombatActor extends Interface + abstract + native(Pawns); + +enum GameplayDesignType +{ + GDT_None, // 0 + GDT_Player, // 1 + GDT_Pet, // 2 + GDT_Deployable, // 3 + GDT_Shield, // 4 + GDT_MAX // 5 +}; + +// Export UTgCombatActor::execGetHealth(FFrame&, void* const) +native function float GetHealth(); + +// Export UTgCombatActor::execGetMaxHealth(FFrame&, void* const) +native function float GetMaxHealth(); + +// Export UTgCombatActor::execGetHealthPercent(FFrame&, void* const) +native function float GetHealthPercent(); + +// Export UTgCombatActor::execGetMana(FFrame&, void* const) +native function float GetMana(); + +// Export UTgCombatActor::execGetMaxMana(FFrame&, void* const) +native function float GetMaxMana(); + +// Export UTgCombatActor::execGetShieldHealth(FFrame&, void* const) +native function float GetShieldHealth(); + +// Export UTgCombatActor::execGetMaxShield(FFrame&, void* const) +native function float GetMaxShield(); + +// Export UTgCombatActor::execCanTakeHealthDamage(FFrame&, void* const) +native function bool CanTakeHealthDamage(); + +// Export UTgCombatActor::execCanDealHeadShots(FFrame&, void* const) +native function bool CanDealHeadShots(); + +// Export UTgCombatActor::execCanTakeHeadShots(FFrame&, void* const) +native function bool CanTakeHeadShots(); + +// Export UTgCombatActor::execOnlyTakeHeadShots(FFrame&, void* const) +native function bool OnlyTakeHeadShots(); + +// Export UTgCombatActor::execIsImmuneToDamage(FFrame&, void* const) +native function bool IsImmuneToDamage(); + +// Export UTgCombatActor::execCanBeExecuted(FFrame&, void* const) +native function bool CanBeExecuted(); + +// Export UTgCombatActor::execIsImmuneToHealing(FFrame&, void* const) +native function bool IsImmuneToHealing(); + +// Export UTgCombatActor::execBuffDamage(FFrame&, void* const) +native function BuffDamage(Actor Target, TgEffectDamage Effect, ImpactInfo Impact, float fBaseDamage, out float fProratedAmount, out ExtraDamageInfo ExtraInfo); + +// Export UTgCombatActor::execGetSpecialDamageDealtPercentAI(FFrame&, void* const) +native function float GetSpecialDamageDealtPercentAI(); + +// Export UTgCombatActor::execGetSpecialDamageTakenPercentAI(FFrame&, void* const) +native function float GetSpecialDamageTakenPercentAI(); + +// Export UTgCombatActor::execMitigateHealthDamage(FFrame&, void* const) +native function MitigateHealthDamage(TgPawn pInstigator, TgEffectDamage Effect, ImpactInfo Impact, out float NewValue, out float fPercReduction); + +// Export UTgCombatActor::execGetDamageReductionPerc(FFrame&, void* const) +native function float GetDamageReductionPerc(TgDevice damageDev, TgEffectGroup eg); + +// Export UTgCombatActor::execTakeHealthDamage(FFrame&, void* const) +native function TakeHealthDamage(float fDamage, Controller InstigatedBy, Class DamageType, ImpactInfo Impact, ExtraDamageInfo ExtraInfo, optional Actor DamageCauser); + +// Export UTgCombatActor::execCanBeLifestealInstigator(FFrame&, void* const) +native function bool CanBeLifestealInstigator(); + +// Export UTgCombatActor::execCanBeLifestealTarget(FFrame&, void* const) +native function bool CanBeLifestealTarget(); + +// Export UTgCombatActor::execCanTakeManaDamage(FFrame&, void* const) +native function bool CanTakeManaDamage(); + +// Export UTgCombatActor::execTakeManaDamage(FFrame&, void* const) +native function TakeManaDamage(float fDamage, Controller InstigatedBy, Class DamageType, ImpactInfo Impact, ExtraDamageInfo ExtraInfo, optional Actor DamageCauser); + +// Export UTgCombatActor::execCanTakeShieldDamage(FFrame&, void* const) +native function bool CanTakeShieldDamage(); + +// Export UTgCombatActor::execCanUsePersonalShield(FFrame&, void* const) +native function bool CanUsePersonalShield(); + +// Export UTgCombatActor::execTakePersonalShieldDamage(FFrame&, void* const) +native function int TakePersonalShieldDamage(float fDamage, Controller InstigatedBy, Class DamageType, ImpactInfo Impact, ExtraDamageInfo ExtraInfo, optional Actor DamageCauser); + +// Export UTgCombatActor::execShieldDamageAppliesToHealth(FFrame&, void* const) +native function bool ShieldDamageAppliesToHealth(); + +// Export UTgCombatActor::execTakeStealthDamage(FFrame&, void* const) +native function TakeStealthDamage(float fDamage); + +// Export UTgCombatActor::execGetDamageToLeaveStealth(FFrame&, void* const) +native function float GetDamageToLeaveStealth(); + +// Export UTgCombatActor::execHandleNotificationsForAI(FFrame&, void* const) +native function HandleNotificationsForAI(float fStatChange, TgPawn InstigatorPawn); + +// Export UTgCombatActor::execLocalPlayerHasLOS(FFrame&, void* const) +native function bool LocalPlayerHasLOS(); + +// Export UTgCombatActor::execGetLocation(FFrame&, void* const) +native function Vector GetLocation(); + +// Export UTgCombatActor::execGetPropCurrentValue(FFrame&, void* const) +native function float GetPropCurrentValue(int nPropIndex); + +// Export UTgCombatActor::execGetPropIndex(FFrame&, void* const) +native function int GetPropIndex(int nPropId); + +// Export UTgCombatActor::execGetMarkedPercent(FFrame&, void* const) +native function float GetMarkedPercent(Actor InstigatorPawn); + +// Export UTgCombatActor::execGetMarkedPercentInhand(FFrame&, void* const) +native function float GetMarkedPercentInhand(Actor InstigatorPawn); + +// Export UTgCombatActor::execGetEffectManager(FFrame&, void* const) +native function TgEffectManager GetEffectManager(); + +// Export UTgCombatActor::execGetDesignType(FFrame&, void* const) +native function TgCombatActor.GameplayDesignType GetDesignType(); + +// Export UTgCombatActor::execIsPet(FFrame&, void* const) +native function bool IsPet(); + +// Export UTgCombatActor::execGetPetOwner(FFrame&, void* const) +native function Actor GetPetOwner(); + +simulated function float GetMaxAimAssistStacks() +{ + //return ReturnValue; +} + +simulated function Actor GetActorFromCombatActor() +{ + //return ReturnValue; +} + +simulated function GetAimAssistBounds(const out Vector ObserverLocation, out float Width, out float Height, out Vector Center) +{ + //return; +} diff --git a/exported/TgGame/Classes/TgCombinedPostProcessEffect.uc b/exported/TgGame/Classes/TgCombinedPostProcessEffect.uc new file mode 100755 index 00000000..c733962d --- /dev/null +++ b/exported/TgGame/Classes/TgCombinedPostProcessEffect.uc @@ -0,0 +1,15 @@ +class TgCombinedPostProcessEffect extends PostProcessEffect + native + hidecategories(Object); + +var(Hit) Color HitEffectColor; +var Vector SceneShadows; +var Vector SceneHighLights; +var Vector SceneMidTones; +var float SceneDesaturation; +var Vector SceneColorize; + +defaultproperties +{ + HitEffectColor=(R=89,G=0,B=0,A=255) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgContextNotifyActor.uc b/exported/TgGame/Classes/TgContextNotifyActor.uc new file mode 100755 index 00000000..209405a1 --- /dev/null +++ b/exported/TgGame/Classes/TgContextNotifyActor.uc @@ -0,0 +1,17 @@ +class TgContextNotifyActor extends Actor + native + notplaceable + hidecategories(Navigation); + +const CONTEXT_NOTIFY_ATTACK_SPECIALFX = 2928; +const CONTEXT_NOTIFY_DEFEND_SPECIALFX = 2929; +const CONTEXT_NOTIFY_BE_CAREFUL_SPECIALFX = 2930; +const CONTEXT_NOTIFY_PING_SPECIALFX = 2954; + +// Export UTgContextNotifyActor::execSetContextNotifyType(FFrame&, void* const) +native function SetContextNotifyType(int ContextId); + +defaultproperties +{ + LifeSpan=8000000.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgControlModule.uc b/exported/TgGame/Classes/TgControlModule.uc new file mode 100755 index 00000000..f0ee48f7 --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule.uc @@ -0,0 +1,68 @@ +class TgControlModule extends Object + abstract; + +var TgPlayerController Controller; +var bool m_bIsActive; + +function Init() +{ + //return; +} + +function OnBecomeActive(TgControlModule OldModule) +{ + m_bIsActive = true; + //return; +} + +function OnBecomeInActive(TgControlModule NewModule) +{ + m_bIsActive = false; + //return; +} + +function OnSettingsChanged(TgClientSettings Settings) +{ + //return; +} + +singular simulated function Rotator GetBaseAimRotation(Weapon W, optional bool bIgnoreAutoLock) +{ + //return ReturnValue; +} + +function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) +{ + //return; +} + +function PlayerMove(float DeltaTime) +{ + //return; +} + +function UpdateRotation(float DeltaTime) +{ + //return; +} + +function OnRightMousePressed() +{ + //return; +} + +exec function OnRightMouseReleased() +{ + //return; +} + +function AdjustAimingView(out Vector ViewLocation, out Rotator ViewRotation) +{ + //return; +} + +function bool InterceptFlashInput(name ButtonName, Object.EInputEvent Event) +{ + return false; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgControlModule_BaseEngine.uc b/exported/TgGame/Classes/TgControlModule_BaseEngine.uc new file mode 100755 index 00000000..74d8557d --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule_BaseEngine.uc @@ -0,0 +1,94 @@ +class TgControlModule_BaseEngine extends TgControlModule; + +function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) +{ + // End:0x26 + if(Controller.Pawn == none) + { + return; + } + // End:0x14F + if(int(Controller.Role) == int(ROLE_Authority)) + { + Controller.Pawn.SetRemoteViewPitch(Controller.Rotation.Pitch); + // End:0x14F + if(TgPawn(Controller.Pawn) != none) + { + TgPawn(Controller.Pawn).SetUncompressedRemoteViewPitch(Controller.Rotation.Pitch); + } + } + Controller.Pawn.Acceleration = newAccel; + Controller.CheckJumpOrDuck(); + //return; +} + +function PlayerMove(float DeltaTime) +{ + local Vector X, Y, Z, newAccel; + local Actor.EDoubleClickDir DoubleClickMove; + local Rotator OldRotation; + local bool bSaveJump; + + // End:0x35 + if(Controller.Pawn == none) + { + GotoState('Dead'); + } + else + { + Controller.GetAxes(Controller.Pawn.Rotation, X, Y, Z); + newAccel = (Controller.PlayerInput.aForward * X) + (Controller.PlayerInput.aStrafe * Y); + newAccel.Z = 0.0000000; + newAccel = Controller.Pawn.AccelRate * Normal(newAccel); + DoubleClickMove = Controller.PlayerInput.CheckForDoubleClickMove(DeltaTime / Controller.WorldInfo.TimeDilation); + OldRotation = Controller.Rotation; + UpdateRotation(DeltaTime); + Controller.bDoubleJump = false; + // End:0x2F1 + if(Controller.bPressedJump && Controller.Pawn.CannotJumpNow()) + { + bSaveJump = true; + Controller.bPressedJump = false; + } + else + { + bSaveJump = false; + } + // End:0x38D + if(int(Controller.Role) < int(ROLE_Authority)) + { + Controller.ReplicateMove(DeltaTime, newAccel, DoubleClickMove, OldRotation - Controller.Rotation); + } + else + { + Controller.ProcessMove(DeltaTime, newAccel, DoubleClickMove, OldRotation - Controller.Rotation); + } + Controller.bPressedJump = bSaveJump; + } + //return; +} + +function UpdateRotation(float DeltaTime) +{ + local Rotator DeltaRot, NewRotation, ViewRotation; + + ViewRotation = Controller.Rotation; + // End:0x8D + if(Controller.Pawn != none) + { + Controller.Pawn.SetDesiredRotation(ViewRotation); + } + DeltaRot.Yaw = int(Controller.PlayerInput.aTurn); + DeltaRot.Pitch = int(Controller.PlayerInput.aLookUp); + Controller.ProcessViewRotation(DeltaTime, ViewRotation, DeltaRot); + Controller.SetRotation(ViewRotation); + Controller.ViewShake(DeltaTime); + NewRotation = ViewRotation; + NewRotation.Roll = Controller.Rotation.Roll; + // End:0x27F + if(Controller.Pawn != none) + { + Controller.Pawn.FaceRotation(NewRotation, DeltaTime); + } + //return; +} diff --git a/exported/TgGame/Classes/TgControlModule_Dead.uc b/exported/TgGame/Classes/TgControlModule_Dead.uc new file mode 100755 index 00000000..0ed7a5ed --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule_Dead.uc @@ -0,0 +1,70 @@ +class TgControlModule_Dead extends TgControlModule; + +function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) +{ + // End:0x65 + if(Controller.Pawn != none) + { + Controller.Pawn.Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + } + //return; +} + +function PlayerMove(float DeltaTime) +{ + // End:0xC4 + if((Controller.Pawn.bHardAttach && Controller.Pawn.Base != none) && !Controller.Pawn.Base.bWorldGeometry) + { + return; + } + // End:0x134 + if(int(Controller.Role) < int(ROLE_Authority)) + { + Controller.ReplicateMove(DeltaTime, vect(0.0000000, 0.0000000, 0.0000000), 0, rot(0, 0, 0)); + } + else + { + Controller.ProcessMove(DeltaTime, vect(0.0000000, 0.0000000, 0.0000000), 0, rot(0, 0, 0)); + } + //return; +} + +function UpdateRotation(float DeltaTime) +{ + local Rotator NewRotation, DeltaRot; + + // End:0x11 + if(Controller == none) + { + return; + } + NewRotation = Controller.Rotation; + DeltaRot.Yaw = int(Controller.PlayerInput.aTurn); + DeltaRot.Pitch = int(Controller.PlayerInput.aLookUp); + NewRotation += DeltaRot; + NewRotation.Pitch = int(FClamp(float(NewRotation.Pitch), -12000.0000000, 12000.0000000)); + Controller.SetRotation(NewRotation); + //return; +} + +singular simulated function Rotator GetBaseAimRotation(Weapon W, optional bool bIgnoreAutoLock) +{ + local Rotator OutRotation; + local TgPawn Pawn; + + // End:0x1E + if(Controller == none) + { + return rot(0, 0, 0); + } + Pawn = TgPawn(Controller.Pawn); + // End:0x6C + if(Pawn == none) + { + return rot(0, 0, 0); + } + OutRotation.Yaw = Controller.Rotation.Yaw; + OutRotation.Pitch = Controller.Rotation.Pitch; + return OutRotation; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgControlModule_Dummy.uc b/exported/TgGame/Classes/TgControlModule_Dummy.uc new file mode 100755 index 00000000..ae568e9f --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule_Dummy.uc @@ -0,0 +1 @@ +class TgControlModule_Dummy extends TgControlModule; diff --git a/exported/TgGame/Classes/TgControlModule_Feared.uc b/exported/TgGame/Classes/TgControlModule_Feared.uc new file mode 100755 index 00000000..0780c79e --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule_Feared.uc @@ -0,0 +1,91 @@ +class TgControlModule_Feared extends TgControlModule_ThirdPerson; + +var float c_fLastSwitchTime; +var float c_fNextSwitchTime; +var Vector c_vCurrentDirection; + +function OnBecomeActive(TgControlModule OldModule) +{ + super.OnBecomeActive(OldModule); + // End:0x7E + if(int(Controller.m_eCurrentStunType) == int(9)) + { + c_vCurrentDirection = Vector(Controller.Pawn.Rotation); + } + else + { + ChangeDirections(); + } + //return; +} + +function Vector CalcNewAccel() +{ + local Vector newAccel; + + // End:0x74 + if(c_fNextSwitchTime < Controller.WorldInfo.TimeSeconds) + { + // End:0x74 + if(int(Controller.m_eCurrentStunType) != int(9)) + { + ChangeDirections(); + } + } + newAccel = Controller.Pawn.AccelRate * Normal(c_vCurrentDirection); + return newAccel; + //return ReturnValue; +} + +function ChangeDirections() +{ + local float fAngle; + local Rotator Rot; + + Rot = Controller.Rotation; + fAngle = (0.5000000 - FRand()) * float(16384); + Rot.Yaw += int(fAngle); + c_vCurrentDirection = Vector(Rot); + c_fLastSwitchTime = Controller.WorldInfo.TimeSeconds; + c_fNextSwitchTime = (Controller.WorldInfo.TimeSeconds + float(1)) + (FRand() * 0.5000000); + //return; +} + +function UpdateRotation(float DeltaTime) +{ + local Vector newAccel; + local Rotator NewRotation; + local float fAlpha; + + // End:0x11 + if(Controller == none) + { + return; + } + newAccel = Controller.Pawn.AccelRate * Normal(c_vCurrentDirection); + // End:0x195 + if(VSize(newAccel) > float(0)) + { + NewRotation = Rotator(newAccel); + NewRotation.Pitch = Controller.Rotation.Pitch; + fAlpha = FClamp((Controller.WorldInfo.TimeSeconds - c_fLastSwitchTime) / 0.3000000, 0.0000000, 1.0000000); + NewRotation = RLerp(Controller.Rotation, NewRotation, fAlpha); + Controller.SetRotation(NewRotation); + } + else + { + NewRotation = Controller.Rotation; + } + // End:0x268 + if(Controller.Pawn != none) + { + Controller.Pawn.SetDesiredRotation(NewRotation); + Controller.Pawn.FaceRotation(NewRotation, DeltaTime); + } + //return; +} + +defaultproperties +{ + c_fNextSwitchTime=-1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgControlModule_Free.uc b/exported/TgGame/Classes/TgControlModule_Free.uc new file mode 100755 index 00000000..4a8aec47 --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule_Free.uc @@ -0,0 +1,132 @@ +class TgControlModule_Free extends TgControlModule; + +var int CameraYawOffset; + +singular simulated function Rotator GetBaseAimRotation(Weapon W, optional bool bIgnoreAutoLock) +{ + local Rotator OutRotation, ViewRot; + local Vector ViewLoc; + + // End:0x7C + if(Controller != none) + { + Controller.GetPlayerViewPoint(ViewLoc, ViewRot); + OutRotation = ViewRot; + OutRotation.Pitch = 0; + return OutRotation; + } + return rot(0, 0, 0); + //return ReturnValue; +} + +function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) +{ + // End:0x26 + if(Controller.Pawn == none) + { + return; + } + // End:0x14F + if(int(Controller.Role) == int(ROLE_Authority)) + { + Controller.Pawn.SetRemoteViewPitch(Controller.Rotation.Pitch); + // End:0x14F + if(TgPawn(Controller.Pawn) != none) + { + TgPawn(Controller.Pawn).SetUncompressedRemoteViewPitch(Controller.Rotation.Pitch); + } + } + Controller.Pawn.Acceleration = newAccel; + Controller.CheckJumpOrDuck(); + //return; +} + +function PlayerMove(float DeltaTime) +{ + local Vector X, Y, Z, newAccel; + local Actor.EDoubleClickDir DoubleClickMove; + local Rotator OldRotation; + local bool bSaveJump; + local Vector ViewLocation; + local Rotator ViewRotation, flatRotation; + + // End:0x37 + if((Controller == none) || Controller.Pawn == none) + { + return; + } + // End:0xFB + if((Controller.Pawn.bHardAttach && Controller.Pawn.Base != none) && !Controller.Pawn.Base.bWorldGeometry) + { + return; + } + OldRotation = Controller.Rotation; + Controller.UpdateRotation(DeltaTime); + Controller.bDoubleJump = false; + Controller.GetPlayerViewPoint(ViewLocation, ViewRotation); + flatRotation = ViewRotation; + flatRotation.Pitch = 0; + GetAxes(flatRotation, X, Y, Z); + newAccel = (Controller.PlayerInput.aForward * X) + (Controller.PlayerInput.aStrafe * Y); + newAccel.Z = 0.0000000; + newAccel = Controller.Pawn.AccelRate * Normal(newAccel); + DoubleClickMove = Controller.PlayerInput.CheckForDoubleClickMove(DeltaTime / Controller.WorldInfo.TimeDilation); + // End:0x3EF + if(Controller.bPressedJump && Controller.Pawn.CannotJumpNow()) + { + bSaveJump = true; + Controller.bPressedJump = false; + } + else + { + bSaveJump = false; + } + // End:0x48B + if(int(Controller.Role) < int(ROLE_Authority)) + { + Controller.ReplicateMove(DeltaTime, newAccel, DoubleClickMove, OldRotation - Controller.Rotation); + } + else + { + Controller.ProcessMove(DeltaTime, newAccel, DoubleClickMove, OldRotation - Controller.Rotation); + } + Controller.bPressedJump = bSaveJump; + //return; +} + +function UpdateRotation(float DeltaTime) +{ + local Vector X, Y, Z, newAccel, ViewLocation; + + local Rotator NewRotation, ViewRotation, flatRotation; + + // End:0x11 + if(Controller == none) + { + return; + } + Controller.GetPlayerViewPoint(ViewLocation, ViewRotation); + flatRotation = ViewRotation; + flatRotation.Pitch = 0; + GetAxes(flatRotation, X, Y, Z); + newAccel = (Controller.PlayerInput.aForward * X) + (Controller.PlayerInput.aStrafe * Y); + newAccel.Z = 0.0000000; + // End:0x1C8 + if(VSize(newAccel) > float(0)) + { + NewRotation = Rotator(newAccel); + NewRotation.Pitch = ViewRotation.Pitch; + Controller.SetRotation(NewRotation); + } + else + { + NewRotation = Controller.Rotation; + } + // End:0x29B + if(Controller.Pawn != none) + { + Controller.Pawn.SetDesiredRotation(NewRotation); + Controller.Pawn.FaceRotation(NewRotation, DeltaTime); + } + //return; +} diff --git a/exported/TgGame/Classes/TgControlModule_FrontFacingCamera.uc b/exported/TgGame/Classes/TgControlModule_FrontFacingCamera.uc new file mode 100755 index 00000000..36149350 --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule_FrontFacingCamera.uc @@ -0,0 +1,27 @@ +class TgControlModule_FrontFacingCamera extends TgControlModule_ThirdPerson; + +function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) +{ + // End:0x65 + if(Controller.Pawn != none) + { + Controller.Pawn.Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + } + // End:0x14B + if((Controller.Pawn.IsAliveAndWell() && int(Controller.Pawn.Physics) != int(2)) && int(Controller.Pawn.Physics) != int(1)) + { + Controller.Pawn.SetPhysics(1); + } + //return; +} + +function Vector CalcNewAccel() +{ + return vect(0.0000000, 0.0000000, 0.0000000); + //return ReturnValue; +} + +function UpdateRotation(float DeltaTime) +{ + //return; +} diff --git a/exported/TgGame/Classes/TgControlModule_Spectator.uc b/exported/TgGame/Classes/TgControlModule_Spectator.uc new file mode 100755 index 00000000..bfc94843 --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule_Spectator.uc @@ -0,0 +1,248 @@ +class TgControlModule_Spectator extends TgControlModule + config(Game); + +var() config float RotationLimit; +var() const config float SpectatorStallZ; +var() const config float SpectatorMinStallZ; + +singular simulated function Rotator GetBaseAimRotation(Weapon W, optional bool bIgnoreAutoLock) +{ + local Rotator OutRotation, ViewRot; + local Vector ViewLoc; + + // End:0x7C + if(Controller != none) + { + Controller.GetPlayerViewPoint(ViewLoc, ViewRot); + OutRotation = ViewRot; + OutRotation.Pitch = 0; + return OutRotation; + } + return rot(0, 0, 0); + //return ReturnValue; +} + +function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) +{ + local float VelSize; + local Vector CorrectedLocation; + + Controller.Acceleration = Normal(newAccel) * Controller.SpectatorCameraSpeed; + VelSize = VSize(Controller.Velocity); + // End:0x127 + if(VelSize > float(0)) + { + Controller.Velocity = Controller.Velocity - ((Controller.Velocity - (Normal(Controller.Acceleration) * VelSize)) * FMin(DeltaTime * float(8), 1.0000000)); + } + Controller.Velocity = Controller.Velocity + (Controller.Acceleration * DeltaTime); + // End:0x231 + if(VSize(Controller.Velocity) > Controller.SpectatorCameraSpeed) + { + Controller.Velocity = Normal(Controller.Velocity) * Controller.SpectatorCameraSpeed; + } + Controller.MoveSmooth(Controller.Velocity * DeltaTime); + // End:0x323 + if(Controller.Location.Z > SpectatorStallZ) + { + CorrectedLocation = Controller.Location; + CorrectedLocation.Z = SpectatorStallZ; + Controller.SetLocation(CorrectedLocation); + } + else + { + // End:0x3D1 + if(Controller.Location.Z < SpectatorMinStallZ) + { + CorrectedLocation = Controller.Location; + CorrectedLocation.Z = SpectatorMinStallZ; + Controller.SetLocation(CorrectedLocation); + } + } + //return; +} + +function PlayerMove(float DeltaTime) +{ + local Vector X, Y, Z, newAccel; + local Rotator Rot; + local TgSpectatorController TgPC; + + TgPC = TgSpectatorController(Controller); + // End:0x2D + if(TgPC == none) + { + return; + } + DeltaTime = TgPC.WorldInfo.m_fRealDeltaSeconds; + TgPC.UpdateRotation(DeltaTime); + Rot = TgPC.Rotation; + // End:0x135 + if((int(TgPC.m_eHelicopterFlight) == int(1)) || int(TgSpectatorController(Controller).m_eHelicopterFlight) == int(2)) + { + Rot.Pitch = 0; + } + // End:0x197 + if(int(TgPC.m_eHelicopterFlight) == int(2)) + { + TgPC.PlayerInput.aUp = 0.0000000; + } + GetAxes(Rot, X, Y, Z); + newAccel = ((TgPC.PlayerInput.aForward * X) + (Controller.PlayerInput.aStrafe * Y)) + (Controller.PlayerInput.aUp * vect(0.0000000, 0.0000000, 1.0000000)); + // End:0x2F5 + if(int(TgPC.Role) < int(ROLE_Authority)) + { + TgPC.ReplicateMove(DeltaTime, newAccel, 0, rot(0, 0, 0)); + } + else + { + TgPC.ProcessMove(DeltaTime, newAccel, 0, rot(0, 0, 0)); + } + //return; +} + +function UpdateRotation(float DeltaTime) +{ + local Rotator ViewRotation, DeltaRot; + + // End:0x11 + if(Controller == none) + { + return; + } + DeltaTime = Controller.WorldInfo.m_fRealDeltaSeconds; + ViewRotation = Controller.Rotation; + DeltaRot = rot(0, 0, 0); + DeltaRot.Yaw += int(Controller.PlayerInput.aTurn); + DeltaRot.Pitch += int(Controller.PlayerInput.aLookUp); + DeltaRot.Yaw = int(FClamp(float(DeltaRot.Yaw), -RotationLimit * DeltaTime, RotationLimit * DeltaTime)); + DeltaRot.Pitch = int(FClamp(float(DeltaRot.Pitch), -RotationLimit * DeltaTime, RotationLimit * DeltaTime)); + ViewRotation += DeltaRot; + ViewRotation = Controller.LimitViewRotation(ViewRotation, -16384.0000000, 16383.0000000); + Controller.SetRotation(ViewRotation); + //return; +} + +function Pawn GetPawnAtCursor() +{ + local LocalPlayer LocalPlayer; + local Vector2D MousePos; + local TgSpectatorController SpecPC; + + SpecPC = TgSpectatorController(Controller); + LocalPlayer = LocalPlayer(Controller.Player); + // End:0xFA + if(((LocalPlayer != none) && LocalPlayer.ViewportClient != none) && SpecPC != none) + { + MousePos = LocalPlayer.ViewportClient.GetMousePosition(); + return SpecPC.GetPawnFrom2DCoordinate(MousePos); + } + return none; + //return ReturnValue; +} + +function GetActorListAtCursor(out array ActorList) +{ + local LocalPlayer LocalPlayer; + local Vector2D MousePos; + local TgSpectatorController SpecPC; + + SpecPC = TgSpectatorController(Controller); + LocalPlayer = LocalPlayer(Controller.Player); + // End:0x102 + if(((LocalPlayer != none) && LocalPlayer.ViewportClient != none) && SpecPC != none) + { + MousePos = LocalPlayer.ViewportClient.GetMousePosition(); + SpecPC.GetActorListFrom2DCoordinate(MousePos, ActorList); + } + return; + //return; +} + +function bool InterceptFlashInput(name ButtonName, Object.EInputEvent Event) +{ + // End:0x5B + if(ButtonName == 'RightMouseButton') + { + // End:0x38 + if(int(Event) == int(0)) + { + OnRightMousePressed(); + } + else + { + // End:0x56 + if(int(Event) == int(1)) + { + OnRightMouseReleased(); + } + } + return true; + } + else + { + // End:0x90 + if(ButtonName == 'LeftMouseButton') + { + // End:0x90 + if(int(Event) == int(0)) + { + OnLeftMousePressed(); + } + } + } + return false; + //return ReturnValue; +} + +function OnRightMousePressed() +{ + //return; +} + +function OnRightMouseReleased() +{ + //return; +} + +function OnLeftMousePressed() +{ + local array ActorList; + local int ActorIdx; + local TgDeployable deployable; + local TgPawn TgP; + local TgSpectatorController SpecPC; + + SpecPC = TgSpectatorController(Controller); + GetActorListAtCursor(ActorList); + ActorIdx = 0; + J0x3A: + + // End:0x139 [Loop If] + if(ActorIdx < ActorList.Length) + { + TgP = TgPawn(ActorList[ActorIdx]); + // End:0xD6 + if((TgP != none) && TgP.IsGod()) + { + SpecPC.SpectatorSetViewTarget(TgP); + return; + } + deployable = TgDeployable(ActorList[ActorIdx]); + // End:0x12B + if(deployable != none) + { + deployable.ToggleSpectateFx(); + } + ActorIdx++; + // [Loop Continue] + goto J0x3A; + } + //return; +} + +defaultproperties +{ + RotationLimit=65536.0000000 + SpectatorStallZ=99999.0000000 + SpectatorMinStallZ=-99999.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgControlModule_SpectatorLockedView.uc b/exported/TgGame/Classes/TgControlModule_SpectatorLockedView.uc new file mode 100755 index 00000000..30c11bc4 --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule_SpectatorLockedView.uc @@ -0,0 +1,64 @@ +class TgControlModule_SpectatorLockedView extends TgControlModule_Spectator + config(Input); + +var const config float DirectorModeSpectatorStallZ; +var const config float DirectorModeSpectatorMinStallZ; + +function float GetMaxStallZ() +{ + local TgDemoRecSpectator DemoPC; + + DemoPC = TgDemoRecSpectator(Controller); + // End:0x94 + if(((DemoPC != none) && DemoPC.m_SpectatorDirector != none) && DemoPC.m_SpectatorDirector.IsCurrentlyViewing()) + { + return DirectorModeSpectatorStallZ; + } + return SpectatorStallZ; + //return ReturnValue; +} + +function float GetMinStallZ() +{ + local TgDemoRecSpectator DemoPC; + + DemoPC = TgDemoRecSpectator(Controller); + // End:0x94 + if(((DemoPC != none) && DemoPC.m_SpectatorDirector != none) && DemoPC.m_SpectatorDirector.IsCurrentlyViewing()) + { + return DirectorModeSpectatorMinStallZ; + } + return SpectatorMinStallZ; + //return ReturnValue; +} + +function PlayerMove(float DeltaTime) +{ + local Vector X, Y, Z, newAccel, Loc; + + local Rotator Rot; + local TgPlayerController TgPC; + + TgPC = Controller; + // End:0x24 + if(TgPC == none) + { + return; + } + DeltaTime = TgPC.WorldInfo.m_fRealDeltaSeconds; + TgPC.UpdateRotation(DeltaTime); + TgPC.GetPlayerViewPoint(Loc, Rot); + GetAxes(MakeRotator(0, Rot.Yaw, 0), X, Y, Z); + newAccel = (Controller.PlayerInput.aForward * X) + (Controller.PlayerInput.aStrafe * Y); + newAccel.Z = Controller.PlayerInput.aUp; + // End:0x243 + if(int(TgPC.Role) < int(ROLE_Authority)) + { + TgPC.ReplicateMove(DeltaTime, newAccel, 0, rot(0, 0, 0)); + } + else + { + TgPC.ProcessMove(DeltaTime, newAccel, 0, rot(0, 0, 0)); + } + //return; +} diff --git a/exported/TgGame/Classes/TgControlModule_SpectatorOverview.uc b/exported/TgGame/Classes/TgControlModule_SpectatorOverview.uc new file mode 100755 index 00000000..fee446d2 --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule_SpectatorOverview.uc @@ -0,0 +1,188 @@ +class TgControlModule_SpectatorOverview extends TgControlModule_Spectator + config(Game); + +var() const config float DirectorModeSpectatorStallZ; +var() const config float DirectorModeSpectatorMinStallZ; + +function float GetMaxStallZ() +{ + local TgDemoRecSpectator DemoPC; + + DemoPC = TgDemoRecSpectator(Controller); + // End:0x94 + if(((DemoPC != none) && DemoPC.m_SpectatorDirector != none) && DemoPC.m_SpectatorDirector.IsCurrentlyViewing()) + { + return DirectorModeSpectatorMinStallZ; + } + return SpectatorStallZ; + //return ReturnValue; +} + +function float GetMinStallZ() +{ + local TgDemoRecSpectator DemoPC; + + DemoPC = TgDemoRecSpectator(Controller); + // End:0x94 + if(((DemoPC != none) && DemoPC.m_SpectatorDirector != none) && DemoPC.m_SpectatorDirector.IsCurrentlyViewing()) + { + return DirectorModeSpectatorMinStallZ; + } + return SpectatorMinStallZ; + //return ReturnValue; +} + +function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) +{ + local float VelSize, VelocityZ; + local Vector AccelZAdjusted, VelocityXY, Loc; + local TgSpectatorController TgPC; + local TgCameraModule_SpectatorOverview CameraModule; + local Rotator Rot; + + CameraModule = TgCameraModule_SpectatorOverview(Controller.GetCurrentCameraModule()); + // End:0xBF + if((newAccel.Z > 0.0000000) && Controller.Location.Z >= (GetMaxStallZ())) + { + newAccel.Z = 0.0000000; + } + else + { + // End:0x149 + if((newAccel.Z < 0.0000000) && Controller.Location.Z <= (GetMinStallZ())) + { + newAccel.Z = 0.0000000; + } + } + AccelZAdjusted = newAccel; + AccelZAdjusted.Z = 0.0000000; + AccelZAdjusted += ((newAccel.Z * vect(0.0000000, 0.0000000, -1.0000000)) * -1.0000000); + Controller.Acceleration = Normal(AccelZAdjusted) * Controller.SpectatorCameraSpeed; + VelSize = VSize(Controller.Velocity); + // End:0x2E2 + if(VelSize > float(0)) + { + Controller.Velocity = Controller.Velocity - ((Controller.Velocity - (Normal(Controller.Acceleration) * VelSize)) * FMin(DeltaTime * float(8), 1.0000000)); + } + Controller.Velocity = Controller.Velocity + (Controller.Acceleration * DeltaTime); + VelocityXY = Controller.Velocity; + VelocityXY.Z = 0.0000000; + VelocityZ = Controller.Velocity.Z; + // End:0x43A + if(VSize2D(VelocityXY) > Controller.SpectatorCameraSpeed) + { + VelocityXY = Normal(VelocityXY) * Controller.SpectatorCameraSpeed; + } + // End:0x491 + if(VelocityZ > Controller.SpectatorCameraSpeed) + { + VelocityZ = Controller.SpectatorCameraSpeed; + } + else + { + // End:0x4F3 + if(VelocityZ < (Controller.SpectatorCameraSpeed * -1.0000000)) + { + VelocityZ = Controller.SpectatorCameraSpeed * -1.0000000; + } + } + Controller.Velocity.X = VelocityXY.X; + Controller.Velocity.Y = VelocityXY.Y; + Controller.Velocity.Z = VelocityZ; + TgPC = TgSpectatorController(Controller); + // End:0x700 + if((((TgPC != none) && CameraModule != none) && TgPawn(TgPC.ViewTarget) != none) && (newAccel.X != 0.0000000) || newAccel.Y != 0.0000000) + { + TgPC.GetPlayerViewPoint(Loc, Rot); + TgPC.SetLocation(Loc); + TgPC.SpectatorSetViewTarget(TgPC); + } + Controller.MoveSmooth(TgPC.Velocity * DeltaTime); + // End:0x7EF + if(TgPC.Location.Z > DirectorModeSpectatorMinStallZ) + { + Loc = TgPC.Location; + Loc.Z = DirectorModeSpectatorMinStallZ; + TgPC.SetLocation(Loc); + } + //return; +} + +function PlayerMove(float DeltaTime) +{ + local Vector X, Y, Z, newAccel, Loc; + + local Rotator Rot; + local TgPlayerController TgPC; + + TgPC = Controller; + // End:0x24 + if(TgPC == none) + { + return; + } + DeltaTime = TgPC.WorldInfo.m_fRealDeltaSeconds; + TgPC.UpdateRotation(DeltaTime); + TgPC.GetPlayerViewPoint(Loc, Rot); + GetAxes(MakeRotator(0, Rot.Yaw, 0), X, Y, Z); + newAccel = (Controller.PlayerInput.aForward * X) + (Controller.PlayerInput.aStrafe * Y); + newAccel.Z = Controller.PlayerInput.aUp; + // End:0x243 + if(int(TgPC.Role) < int(ROLE_Authority)) + { + TgPC.ReplicateMove(DeltaTime, newAccel, 0, rot(0, 0, 0)); + } + else + { + TgPC.ProcessMove(DeltaTime, newAccel, 0, rot(0, 0, 0)); + } + //return; +} + +function UpdateRotation(float DeltaTime) +{ + local Rotator NewRotation; + + super.UpdateRotation(DeltaTime); + NewRotation = Controller.Rotation; + NewRotation.Yaw = Clamp(Controller.Rotation.Yaw, -8192, 8192); + Controller.SetRotation(NewRotation); + //return; +} + +function OnLeftMousePressed() +{ + local TgPawn FoundPawn; + local TgSpectatorController SpectatorController; + local TgDemoRecSpectator DemoController; + + SpectatorController = TgSpectatorController(Controller); + // End:0x2D + if(SpectatorController == none) + { + return; + } + FoundPawn = TgPawn(GetPawnAtCursor()); + // End:0x189 + if(((FoundPawn != none) && FoundPawn.r_nPhysicalType == 10034) && SpectatorController.GetViewTarget() != FoundPawn) + { + DemoController = TgDemoRecSpectator(SpectatorController); + // End:0x137 + if((DemoController != none) && DemoController.m_SpectatorDirector != none) + { + DemoController.m_SpectatorDirector.ClearAssistModeTarget(); + } + SpectatorController.SpectatorSetViewTarget(FoundPawn, SpectatorController.GetBlendParams(FoundPawn)); + return; + } + super.OnLeftMousePressed(); + //return; +} + +defaultproperties +{ + DirectorModeSpectatorStallZ=2000.0000000 + DirectorModeSpectatorMinStallZ=750.0000000 + SpectatorStallZ=2000.0000000 + SpectatorMinStallZ=750.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgControlModule_Stoker.uc b/exported/TgGame/Classes/TgControlModule_Stoker.uc new file mode 100755 index 00000000..94c96523 --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule_Stoker.uc @@ -0,0 +1,19 @@ +class TgControlModule_Stoker extends TgControlModule_ThirdPerson; + +var TgPawn_Stoker m_CachedStokerPawn; + +function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) +{ + super.ProcessMove(DeltaTime, newAccel, DoubleClickMove, DeltaRot); + // End:0x6E + if(m_CachedStokerPawn == none) + { + m_CachedStokerPawn = TgPawn_Stoker(Controller.Pawn); + } + // End:0xED + if(m_CachedStokerPawn != none) + { + m_CachedStokerPawn.UpdateWallRun((int(Controller.m_JumpHeld) > int(0)) || int(Controller.m_JumpHeldAlt) > int(0)); + } + //return; +} diff --git a/exported/TgGame/Classes/TgControlModule_StunDisoriented.uc b/exported/TgGame/Classes/TgControlModule_StunDisoriented.uc new file mode 100755 index 00000000..4c9237e3 --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule_StunDisoriented.uc @@ -0,0 +1,59 @@ +class TgControlModule_StunDisoriented extends TgControlModule_Stunned; + +var int m_nInitialYaw; +var int m_nTargetYaw; +var const float m_fInterpTime; +var float m_fRemainingInterpTime; + +function OnBecomeActive(TgControlModule OldModule) +{ + local Vector Loc; + local Rotator Rot; + + Controller.GetPlayerViewPoint(Loc, Rot); + m_nInitialYaw = Rot.Yaw; + m_fRemainingInterpTime = m_fInterpTime; + m_nTargetYaw = int(RandRange(0.0000000, 65536.0000000)); + //return; +} + +function UpdateRotation(float DeltaTime) +{ + local Rotator NewRotation, InitialRotation; + local bool bFixedPitchMode; + + // End:0x11 + if(Controller == none) + { + return; + } + bFixedPitchMode = IsFixedPitchMode(); + NewRotation = Controller.Rotation; + // End:0xAF + if(!bFixedPitchMode) + { + NewRotation.Pitch = int(Controller.PlayerInput.aLookUp); + } + InitialRotation = NewRotation; + InitialRotation.Yaw = m_nInitialYaw; + NewRotation.Yaw = m_nTargetYaw; + NewRotation = RLerp(NewRotation, InitialRotation, m_fRemainingInterpTime / m_fInterpTime, true); + Controller.SetRotation(NewRotation); + // End:0x215 + if(Controller.Pawn != none) + { + Controller.Pawn.SetDesiredRotation(NewRotation); + Controller.Pawn.FaceRotation(NewRotation, DeltaTime); + } + // End:0x24D + if(m_fRemainingInterpTime > 0.0000000) + { + m_fRemainingInterpTime = FMax(m_fRemainingInterpTime - DeltaTime, 0.0000000); + } + //return; +} + +defaultproperties +{ + m_fInterpTime=0.1500000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgControlModule_StunTaunted.uc b/exported/TgGame/Classes/TgControlModule_StunTaunted.uc new file mode 100755 index 00000000..6e61db39 --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule_StunTaunted.uc @@ -0,0 +1,114 @@ +class TgControlModule_StunTaunted extends TgControlModule_ThirdPerson; + +var float m_fInitialYaw; +var const float m_fInterpTime; +var float m_fRemainingInterpTime; + +function OnBecomeActive(TgControlModule OldModule) +{ + local Vector Loc; + local Rotator Rot; + + super.OnBecomeActive(OldModule); + Controller.GetPlayerViewPoint(Loc, Rot); + m_fInitialYaw = float(Rot.Yaw); + m_fRemainingInterpTime = m_fInterpTime; + //return; +} + +function OnBecomeInActive(TgControlModule NewModule) +{ + super(TgControlModule).OnBecomeInActive(NewModule); + // End:0x85 + if(Controller != none) + { + // End:0x66 + if(Controller.bPressingLeftMouseButton) + { + Controller.OnLeftMousePressed(); + } + else + { + Controller.OnLeftMouseReleased(); + } + } + //return; +} + +function Vector CalcNewAccel() +{ + local Vector newAccel, PawnToTarget; + local TgPawn TgP; + local float PawnCollisionRadius; + local Rotator InitialRotation, NewRotation; + + TgP = TgPawn(Controller.Pawn); + // End:0x1F6 + if((TgP != none) && TgP.r_StunTauntTarget != none) + { + PawnToTarget = TgP.r_StunTauntTarget.Location - TgP.Location; + PawnCollisionRadius = TgP.GetCollisionRadius() + 5.0000000; + // End:0x1F6 + if(VSizeSq2D(PawnToTarget) > (PawnCollisionRadius * PawnCollisionRadius)) + { + InitialRotation = Rotator(PawnToTarget); + InitialRotation.Yaw = int(m_fInitialYaw); + NewRotation = Rotator(PawnToTarget); + NewRotation = RLerp(NewRotation, InitialRotation, m_fRemainingInterpTime / m_fInterpTime, true); + newAccel = Vector(NewRotation) * Controller.Pawn.AccelRate; + } + } + return newAccel; + //return ReturnValue; +} + +function UpdateRotation(float DeltaTime) +{ + local Vector newAccel; + local Rotator NewRotation; + local bool bFixedPitchMode; + local TgPawn TgP; + + // End:0x11 + if(Controller == none) + { + return; + } + TgP = TgPawn(Controller.Pawn); + bFixedPitchMode = IsFixedPitchMode(); + NewRotation = Controller.Rotation; + // End:0xE3 + if(!bFixedPitchMode) + { + NewRotation.Pitch = int(Controller.PlayerInput.aLookUp); + } + else + { + // End:0x189 + if(TgP != none) + { + NewRotation.Pitch = int(EvalInterpCurveFloat(PitchCurve, fAimPitch)); + NewRotation.Pitch = int(TgP.ApplyPitchLimit(float(NewRotation.Pitch))); + } + } + newAccel = CalcNewAccel(); + NewRotation.Yaw = Rotator(newAccel).Yaw; + Controller.SetRotation(NewRotation); + // End:0x2A4 + if(Controller.Pawn != none) + { + Controller.Pawn.SetDesiredRotation(NewRotation); + Controller.Pawn.FaceRotation(NewRotation, DeltaTime); + } + // End:0x2DC + if(m_fRemainingInterpTime > 0.0000000) + { + m_fRemainingInterpTime = FMax(m_fRemainingInterpTime - DeltaTime, 0.0000000); + } + //return; +} + +defaultproperties +{ + m_fInterpTime=0.1500000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgControlModule_Stunned.uc b/exported/TgGame/Classes/TgControlModule_Stunned.uc new file mode 100755 index 00000000..b7ec35bf --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule_Stunned.uc @@ -0,0 +1,30 @@ +class TgControlModule_Stunned extends TgControlModule_ThirdPerson; + +function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) +{ + // End:0x65 + if(Controller.Pawn != none) + { + Controller.Pawn.Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + } + //return; +} + +function Vector CalcNewAccel() +{ + return vect(0.0000000, 0.0000000, 0.0000000); + //return ReturnValue; +} + +function UpdateRotation(float DeltaTime) +{ + local TgPawn_Character myCharPawn; + + myCharPawn = TgPawn_Character(Controller.Pawn); + // End:0x8C + if((myCharPawn != none) && myCharPawn.HasForcedRotation()) + { + myCharPawn.UpdateForcedRotation(DeltaTime); + } + //return; +} diff --git a/exported/TgGame/Classes/TgControlModule_ThirdPerson.uc b/exported/TgGame/Classes/TgControlModule_ThirdPerson.uc new file mode 100755 index 00000000..81b84df0 --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule_ThirdPerson.uc @@ -0,0 +1,578 @@ +class TgControlModule_ThirdPerson extends TgControlModule; + +var int CameraYawOffset; +var float fRotInterpSpeed; +var Vector2D vDazedRotError; +var float fAimPitch; +var InterpCurveFloat PitchCurve; +var InterpCurveFloat AimCurve; +var CameraAnim m_StrafeCameraAnim; + +function Init() +{ + super.Init(); + UpdatePitchCurve(); + //return; +} + +function OnSettingsChanged(TgClientSettings Settings) +{ + super.OnSettingsChanged(Settings); + UpdatePitchCurve(); + //return; +} + +function UpdatePitchCurve() +{ + local InterpCurvePointFloat Point; + + PitchCurve.InterpMethod = 2; + PitchCurve.Points.Length = 0; + Point.InVal = -16384.0000000; + Point.OutVal = -12000.0000000; + Point.LeaveTangent = 0.5000000; + Point.ArriveTangent = Point.LeaveTangent; + Point.InterpMode = 3; + PitchCurve.Points.AddItem(Point); + Point.InVal = -12000.0000000; + // End:0x1D8 + if((Controller != none) && Controller.GetClientSettings() != none) + { + Point.OutVal = Controller.GetClientSettings().FixedPitchLowerBoundDegrees * 182.0444000; + } + else + { + Point.OutVal = Class'TgGame.TgClientSettings'.default.FixedPitchLowerBoundDegrees * 182.0444000; + } + Point.LeaveTangent = 4.0000000; + Point.ArriveTangent = Point.LeaveTangent; + Point.InterpMode = 3; + PitchCurve.Points.AddItem(Point); + Point.InVal = 0.0000000; + // End:0x370 + if((Controller != none) && Controller.GetClientSettings() != none) + { + Point.OutVal = Controller.GetClientSettings().FixedPitchUpperBoundDegrees * 182.0444000; + } + else + { + Point.OutVal = Class'TgGame.TgClientSettings'.default.FixedPitchUpperBoundDegrees * 182.0444000; + } + Point.LeaveTangent = 4.0000000; + Point.ArriveTangent = Point.LeaveTangent; + Point.InterpMode = 3; + PitchCurve.Points.AddItem(Point); + AimCurve.InterpMethod = 2; + AimCurve.Points.Length = 0; + Point.InVal = -5000.0000000; + Point.OutVal = 1.5000000; + Point.LeaveTangent = 0.0000000; + Point.ArriveTangent = Point.LeaveTangent; + Point.InterpMode = 3; + AimCurve.Points.AddItem(Point); + Point.InVal = -2000.0000000; + Point.OutVal = 1.0000000; + Point.LeaveTangent = 0.0000000; + Point.ArriveTangent = Point.LeaveTangent; + Point.InterpMode = 3; + AimCurve.Points.AddItem(Point); + //return; +} + +function OnBecomeActive(TgControlModule OldModule) +{ + super.OnBecomeActive(OldModule); + // End:0x5C + if(TgControlModule_ThirdPerson(OldModule) != none) + { + fAimPitch = TgControlModule_ThirdPerson(OldModule).fAimPitch; + } + //return; +} + +singular simulated function Rotator GetBaseAimRotation(Weapon W, optional bool bIgnoreAutoLock) +{ + local Rotator OutRotation; + local TgPawn Pawn; + + // End:0x1E + if(Controller == none) + { + return rot(0, 0, 0); + } + Pawn = TgPawn(Controller.Pawn); + // End:0x6C + if(Pawn == none) + { + return rot(0, 0, 0); + } + OutRotation.Yaw = Controller.Rotation.Yaw; + OutRotation.Pitch = Controller.Rotation.Pitch; + return OutRotation; + //return ReturnValue; +} + +function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) +{ + local TgPawn TgP; + + // End:0x26 + if(Controller.Pawn == none) + { + return; + } + // End:0x5F + if(Controller.WorldInfo.IsPlayingTimelapse()) + { + return; + } + TgP = TgPawn(Controller.Pawn); + // End:0x17D + if(int(Controller.Role) == int(ROLE_Authority)) + { + Controller.Pawn.SetRemoteViewPitch(Controller.Rotation.Pitch); + // End:0x17D + if(TgP != none) + { + TgP.SetUncompressedRemoteViewPitch(Controller.Rotation.Pitch); + } + } + Controller.Pawn.Acceleration = newAccel; + // End:0x202 + if(int(TgP.Physics) != int(4)) + { + Controller.CheckJumpOrDuck(); + } + //return; +} + +function PlayerMove(float DeltaTime) +{ + local Vector newAccel; + local Actor.EDoubleClickDir DoubleClickMove; + local Rotator OldRotation; + local bool bSaveJump, bUpdateRotation, bZeroAccel; + local TgPawn TgP; + local bool bFixedPitchMode; + + bFixedPitchMode = IsFixedPitchMode(); + bUpdateRotation = true; + // End:0x58 + if((Controller == none) || Controller.Pawn == none) + { + return; + } + TgP = TgPawn(Controller.Pawn); + // End:0x9A + if(TgP == none) + { + return; + } + // End:0xD3 + if(Controller.WorldInfo.IsPlayingTimelapse()) + { + return; + } + // End:0x242 + if((Controller.Pawn.bHardAttach && Controller.Pawn.Base != none) && !Controller.Pawn.Base.bWorldGeometry) + { + bZeroAccel = true; + // End:0x236 + if(TgP != none) + { + // End:0x233 + if(TgP.Base.IsA('TgPathfinder')) + { + TgP.SetRotation(TgP.Base.Rotation); + } + } + else + { + bUpdateRotation = false; + } + } + // End:0x302 + if(bUpdateRotation) + { + // End:0x266 + if(bFixedPitchMode) + { + UpdateAimPitch(); + } + OldRotation = Controller.Rotation; + Controller.UpdateRotation(DeltaTime); + // End:0x302 + if(!bFixedPitchMode) + { + fAimPitch = float(Controller.Rotation.Pitch); + } + } + Controller.bDoubleJump = false; + // End:0x346 + if(!bZeroAccel) + { + newAccel = CalcNewAccel(); + } + // End:0x3F0 + if(Controller.PlayerInput.aStrafe > 0.0000000) + { + // End:0x3ED + if(m_StrafeCameraAnim != CameraAnim'PC_Gen.cameras.StrafeRight') + { + Controller.PlayCameraAnim(CameraAnim'PC_Gen.cameras.StrafeRight', 1.0000000, 1.0000000, 0.2000000, 0.2000000, false, false,, true); + m_StrafeCameraAnim = CameraAnim'PC_Gen.cameras.StrafeRight'; + } + } + else + { + // End:0x483 + if(Controller.PlayerInput.aStrafe < 0.0000000) + { + Controller.PlayCameraAnim(CameraAnim'PC_Gen.cameras.StrafeLeft', 1.0000000, 1.0000000, 0.2000000, 0.2000000, false, false,, true); + m_StrafeCameraAnim = CameraAnim'PC_Gen.cameras.StrafeLeft'; + } + else + { + // End:0x4E5 + if(Controller.PlayerCamera != none) + { + Controller.PlayerCamera.StopAllCameraAnimsByType(m_StrafeCameraAnim); + } + m_StrafeCameraAnim = none; + } + } + DoubleClickMove = Controller.PlayerInput.CheckForDoubleClickMove(DeltaTime / Controller.WorldInfo.TimeDilation); + // End:0x5F7 + if(Controller.bPressedJump && Controller.Pawn.CannotJumpNow()) + { + bSaveJump = false; + Controller.bPressedJump = false; + } + else + { + bSaveJump = false; + } + // End:0x693 + if(int(Controller.Role) < int(ROLE_Authority)) + { + Controller.ReplicateMove(DeltaTime, newAccel, DoubleClickMove, OldRotation - Controller.Rotation); + } + else + { + Controller.ProcessMove(DeltaTime, newAccel, DoubleClickMove, OldRotation - Controller.Rotation); + } + Controller.bPressedJump = bSaveJump; + //return; +} + +function Vector CalcNewAccel() +{ + local Vector X, Y, Z, newAccel, ViewLocation, PushDir; + + local Rotator ViewRotation, flatRotation; + local TgPawn myPawn, TgP; + local float DazeAccel, finalStrafe; + local bool bInputIsLocked; + + Controller.GetPlayerViewPoint(ViewLocation, ViewRotation); + bInputIsLocked = IsInputLocked(); + flatRotation = ViewRotation; + flatRotation.Pitch = 0; + DazeAccel = 0.0000000; + finalStrafe = Controller.PlayerInput.aStrafe; + myPawn = TgPawn(Controller.Pawn); + // End:0x1BB + if((((myPawn != none) && myPawn.r_bIsDazed) && myPawn.IsLocallyControlled()) && !bInputIsLocked) + { + DazeAccel = 800.0000000 * myPawn.DazedStrafeOffset(0.0000000); + finalStrafe = FClamp(finalStrafe + DazeAccel, -800.0000000, 800.0000000); + } + // End:0x1F4 + if(int(Controller.bRun) == int(1)) + { + finalStrafe *= 0.5000000; + } + // End:0x235 + if((myPawn != none) && myPawn.m_bIsEnteringMount) + { + return vect(0.0000000, 0.0000000, 0.0000000); + } + GetAxes(flatRotation, X, Y, Z); + newAccel = vect(0.0000000, 0.0000000, 0.0000000); + // End:0x301 + if(!bInputIsLocked) + { + newAccel = (Controller.PlayerInput.aForward * X) + (finalStrafe * Y); + newAccel.Z = 0.0000000; + } + newAccel = Controller.Pawn.AccelRate * Normal(newAccel); + newAccel += (Y * DazeAccel); + // End:0x4A4 + if((VSizeSq(newAccel) == float(0)) && myPawn.CanBeNudged()) + { + // End:0x4A3 + foreach myPawn.TouchingActors(Class'TgGame.TgPawn', TgP) + { + // End:0x4A2 + if(TgP.ShouldNudgePlayer(myPawn)) + { + PushDir = Normal(myPawn.Location - TgP.Location); + PushDir.Z = 0.0000000; + newAccel = PushDir * (myPawn.GroundSpeed / 2.0000000); + // End:0x4A3 + break; + } + } + } + return newAccel; + //return ReturnValue; +} + +function bool IsPlayingForcedViewCameraAnim() +{ + local TgPawn_Character myCharPawn; + + myCharPawn = TgPawn_Character(Controller.Pawn); + // End:0x63 + if(myCharPawn != none) + { + return myCharPawn.HasForcedRotation(); + } + else + { + return false; + } + //return ReturnValue; +} + +function UpdateRotation(float DeltaTime) +{ + local Rotator NewRotation, DeltaRot; + local Vector2D DazeRotNow, vDazedRotLast, IdealDeltaRot; + local TgPawn myPawn; + local TgPawn_Character myCharPawn; + local bool bInputIsLocked, bCameraIsLocked, bRotationIsLocked, bFixedPitchMode, bYawIsLocked; + + local float fTargetPitch; + + // End:0x11 + if(Controller == none) + { + return; + } + // End:0x4A + if(Controller.WorldInfo.IsPlayingTimelapse()) + { + return; + } + myPawn = TgPawn(Controller.Pawn); + myCharPawn = TgPawn_Character(Controller.Pawn); + // End:0xF4 + if((myCharPawn != none) && IsPlayingForcedViewCameraAnim()) + { + myCharPawn.UpdateForcedRotation(DeltaTime); + return; + } + bInputIsLocked = IsInputLocked(); + bCameraIsLocked = IsCameraLocked(); + bRotationIsLocked = IsRotationLocked(); + bFixedPitchMode = IsFixedPitchMode(); + bYawIsLocked = IsYawLocked(); + NewRotation = Controller.Rotation; + DeltaRot.Yaw = int(((bYawIsLocked) ? 0.0000000 : Controller.PlayerInput.aTurn)); + // End:0x25D + if(!bFixedPitchMode && !bCameraIsLocked) + { + DeltaRot.Pitch = int(Controller.PlayerInput.aLookUp); + } + // End:0x294 + if(myPawn != none) + { + myPawn.InterceptInputDeltaRotation(DeltaRot); + } + NewRotation += DeltaRot; + // End:0x7D5 + if(myPawn != none) + { + // End:0x5FA + if(!bInputIsLocked) + { + // End:0x5DC + if(myPawn.r_bIsDazed && myPawn.IsLocallyControlled()) + { + vDazedRotLast = myPawn.DazedRotatorOffset(-DeltaTime); + DazeRotNow = myPawn.DazedRotatorOffset(0.0000000); + IdealDeltaRot.X = (DazeRotNow.X - vDazedRotLast.X) + vDazedRotError.X; + IdealDeltaRot.Y = (DazeRotNow.Y - vDazedRotLast.Y) + vDazedRotError.Y; + DeltaRot.Yaw = int(IdealDeltaRot.X); + // End:0x4E1 + if(!bFixedPitchMode) + { + DeltaRot.Pitch = int(IdealDeltaRot.Y); + } + else + { + DeltaRot.Pitch = 0; + } + NewRotation += DeltaRot; + vDazedRotError.X = IdealDeltaRot.X - float(DeltaRot.Yaw); + vDazedRotError.Y = IdealDeltaRot.Y - float(DeltaRot.Pitch); + vDazedRotLast = DazeRotNow; + } + else + { + vDazedRotError = vect2d(0.0000000, 0.0000000); + } + } + // End:0x6BD + if(bFixedPitchMode) + { + fTargetPitch = EvalInterpCurveFloat(PitchCurve, fAimPitch); + fTargetPitch = myPawn.ApplyPitchLimit(fTargetPitch); + NewRotation.Pitch = int(FInterpTo(float(NewRotation.Pitch), fTargetPitch, DeltaTime, 500.0000000)); + } + NewRotation.Pitch = int(myPawn.ApplyPitchLimit(float(NewRotation.Pitch))); + // End:0x775 + if(bInputIsLocked || bRotationIsLocked) + { + myPawn.m_fRemainingFaceRotationInterpTime = myPawn.m_fFaceRotationInterpTime; + } + else + { + myPawn.SetDesiredRotation(NewRotation); + myPawn.FaceRotation(NewRotation, DeltaTime); + } + } + else + { + NewRotation.Pitch = int(FClamp(float(NewRotation.Pitch), -12000.0000000, 12000.0000000)); + fAimPitch = float(NewRotation.Pitch); + } + // End:0x876 + if(!bCameraIsLocked) + { + Controller.SetRotation(NewRotation); + } + //return; +} + +function UpdateAimPitch() +{ + local Vector PawnFootLocation; + local Rotator PawnFootViewRotation; + local Vector ViewLocation; + local Rotator ViewRotation; + + Controller.GetPlayerViewPoint(ViewLocation, ViewRotation); + fAimPitch += (Controller.PlayerInput.aLookUp * EvalInterpCurveFloat(AimCurve, fAimPitch)); + PawnFootViewRotation.Pitch = -16384; + // End:0x175 + if(Controller.Pawn != none) + { + PawnFootLocation = Controller.Pawn.Location + (vect(0.0000000, 0.0000000, -1.0000000) * Controller.Pawn.GetCollisionHeight()); + PawnFootViewRotation = Rotator(PawnFootLocation - ViewLocation); + } + fAimPitch = FClamp(fAimPitch, float(PawnFootViewRotation.Pitch), 0.0000000); + //return; +} + +function bool IsInputLocked() +{ + local TgPawn myPawn; + + // End:0x11 + if(Controller == none) + { + return false; + } + myPawn = TgPawn(Controller.Pawn); + // End:0xA4 + if(myPawn != none) + { + return ((IsCameraLocked()) || Controller.IsDeviceLockingInput()) || myPawn.IsInputLocked(); + } + return IsCameraLocked(); + //return ReturnValue; +} + +function bool IsRotationLocked() +{ + local TgPawn myPawn; + + // End:0x11 + if(Controller == none) + { + return false; + } + myPawn = TgPawn(Controller.Pawn); + // End:0x71 + if(myPawn != none) + { + return myPawn.IsRotationLocked(); + } + return false; + //return ReturnValue; +} + +function bool IsCameraLocked() +{ + local TgPawn myPawn; + + // End:0x11 + if(Controller == none) + { + return false; + } + myPawn = TgPawn(Controller.Pawn); + // End:0x77 + if((myPawn != none) && myPawn.IsCameraLocked()) + { + return true; + } + return Controller.IsDeviceLockingCamera(); + //return ReturnValue; +} + +function bool IsYawLocked() +{ + local TgPawn myPawn; + + // End:0x24 + if(Controller.r_bLockYawRotation) + { + return true; + } + myPawn = TgPawn(Controller.Pawn); + // End:0x8A + if((myPawn != none) && myPawn.IsCameraLocked()) + { + return true; + } + return Controller.r_bLockYawRotation; + //return ReturnValue; +} + +function bool IsFixedPitchMode() +{ + return false; + //return ReturnValue; +} + +function AdjustAimingView(out Vector ViewLocation, out Rotator ViewRotation) +{ + // End:0x59 + if(IsFixedPitchMode()) + { + // End:0x31 + if(Controller.Pawn != none) + { + } + ViewRotation.Pitch = int(fAimPitch); + } + //return; +} + +defaultproperties +{ + fRotInterpSpeed=16.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgControlModule_TopDown.uc b/exported/TgGame/Classes/TgControlModule_TopDown.uc new file mode 100755 index 00000000..c7132212 --- /dev/null +++ b/exported/TgGame/Classes/TgControlModule_TopDown.uc @@ -0,0 +1,93 @@ +class TgControlModule_TopDown extends TgControlModule_Spectator + config(Game); + +var const config float DefaultStartHeight; + +function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) +{ + local TgSpectatorController TgPC; + local Vector NewLocation, AccelZAdjusted, ViewDir, CamToFocalPoint; + local Rotator Rot; + local float VelSize, Angle, Height; + local TgCameraModule_TopDown CameraModule; + + TgPC = TgSpectatorController(Controller); + CameraModule = TgCameraModule_TopDown(TgPC.GetCurrentCameraModule()); + // End:0x111 + if((newAccel.Z > 0.0000000) && TgPC.Location.Z >= SpectatorStallZ) + { + newAccel.Z = 0.0000000; + TgPC.Velocity.Z = 0.0000000; + } + else + { + // End:0x1D1 + if((newAccel.Z < 0.0000000) && TgPC.Location.Z <= SpectatorMinStallZ) + { + newAccel.Z = 0.0000000; + TgPC.Velocity.Z = 0.0000000; + } + } + newAccel = Normal(newAccel); + Rot.Pitch = CameraModule.WorldViewPitch; + Rot.Yaw = TgPC.Rotation.Yaw; + ViewDir = Vector(Rot); + AccelZAdjusted = newAccel; + AccelZAdjusted.Z = 0.0000000; + AccelZAdjusted += ((newAccel.Z * ViewDir) * -1.0000000); + TgPC.Acceleration = Normal(AccelZAdjusted) * TgPC.SpectatorCameraSpeed; + VelSize = VSize(TgPC.Velocity); + // End:0x419 + if(VelSize > float(0)) + { + TgPC.Velocity = TgPC.Velocity - ((TgPC.Velocity - (Normal(TgPC.Acceleration) * VelSize)) * FMin(DeltaTime * float(8), 1.0000000)); + } + TgPC.Velocity = TgPC.Velocity + (TgPC.Acceleration * DeltaTime); + NewLocation = TgPC.ViewTarget.Location; + Angle = Acos(ViewDir Dot vect(0.0000000, 0.0000000, -1.0000000)); + Height = FClamp(TgPC.Location.Z, Class'TgGame.TgControlModule_TopDown'.default.SpectatorMinStallZ, Class'TgGame.TgControlModule_TopDown'.default.SpectatorStallZ); + CamToFocalPoint = (Height / Cos(Angle)) * ViewDir; + NewLocation.Z = 0.0000000; + NewLocation -= CamToFocalPoint; + TgPC.SetLocation(NewLocation); + TgPC.MoveSmooth(TgPC.Velocity * DeltaTime); + //return; +} + +function PlayerMove(float DeltaTime) +{ + local Vector X, Y, Z, newAccel, Loc; + + local Rotator Rot; + local TgSpectatorController TgPC; + + TgPC = TgSpectatorController(Controller); + // End:0x2D + if(TgPC == none) + { + return; + } + DeltaTime = TgPC.WorldInfo.m_fRealDeltaSeconds; + TgPC.UpdateRotation(DeltaTime); + TgPC.GetPlayerViewPoint(Loc, Rot); + GetAxes(MakeRotator(0, Rot.Yaw, 0), X, Y, Z); + newAccel = (Controller.PlayerInput.aForward * X) + (Controller.PlayerInput.aStrafe * Y); + newAccel.Z = Controller.PlayerInput.aUp; + // End:0x24C + if(int(TgPC.Role) < int(ROLE_Authority)) + { + TgPC.ReplicateMove(DeltaTime, newAccel, 0, rot(0, 0, 0)); + } + else + { + TgPC.ProcessMove(DeltaTime, newAccel, 0, rot(0, 0, 0)); + } + //return; +} + +defaultproperties +{ + DefaultStartHeight=700.0000000 + SpectatorStallZ=850.0000000 + SpectatorMinStallZ=350.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCoverPoint.uc b/exported/TgGame/Classes/TgCoverPoint.uc new file mode 100755 index 00000000..dee1024c --- /dev/null +++ b/exported/TgGame/Classes/TgCoverPoint.uc @@ -0,0 +1,45 @@ +class TgCoverPoint extends TgAIAnnotation + native(Navigation) + hidecategories(Navigation,Lighting,LightColor,Force); + +var() bool m_bLeanLeft; +var() bool m_bLeanRight; +var() bool m_bAllowPopup; +var() bool m_bAllowMantle; +var Vector m_vLeanLeft; +var Vector m_vLeanRight; +var Vector m_vPopUp; + +// Export UTgCoverPoint::execGetAdjustedPosition(FFrame&, void* const) +native function GetAdjustedPosition(out Vector out_Position, Pawn AnnotationOwner, Actor Target); + +simulated function PostBeginPlay() +{ + local Rotator rotLean; + + super.PostBeginPlay(); + rotLean = rot(0, 49151, 0); + m_vLeanLeft = Location + (float(250) * Normal(Vector(Rotation + rotLean))); + m_vLeanRight = Location + (float(250) * Normal(Vector(Rotation - rotLean))); + m_vPopUp = Location + vect(0.0000000, 0.0000000, 50.0000000); + //return; +} + +defaultproperties +{ + AnnotationType=EAIAnnotationType.AIA_CoverPoint + // Reference: CylinderComponent'TgGame.Default__TgCoverPoint.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgAIAnnotation.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgCustomCharacterComponent.uc b/exported/TgGame/Classes/TgCustomCharacterComponent.uc new file mode 100755 index 00000000..057973c1 --- /dev/null +++ b/exported/TgGame/Classes/TgCustomCharacterComponent.uc @@ -0,0 +1,48 @@ +class TgCustomCharacterComponent extends ActorComponent + native; + +struct native CompositeTextureType +{ + var Texture2DComposite CompTexture; + var name TextureParamName; + + structdefaultproperties + { + CompTexture=none + TextureParamName="None" + } +}; + +struct native CompositePartInfo +{ + var int MeshAsmId; + var int DestOffsetX; + var int DestOffsetY; + var int RegionSizeX; + var int RegionSizeY; + + structdefaultproperties + { + MeshAsmId=0 + DestOffsetX=0 + DestOffsetY=0 + RegionSizeX=0 + RegionSizeY=0 + } +}; + +var array m_SourceMeshList; +var array m_CompositeTextures; +var int m_nCompositeTextureSizeX; +var int m_nCompositeTextureSizeY; +var() array m_CompositeParts; +var array m_CompositeFxList; + +// Export UTgCustomCharacterComponent::execMergeMeshParts(FFrame&, void* const) +native function MergeMeshParts(SkeletalMeshComponent Mesh); + +// Export UTgCustomCharacterComponent::execComposeCharacter(FFrame&, void* const) +native function ComposeCharacter(SkeletalMeshComponent Mesh); + +// Export UTgCustomCharacterComponent::execSetupCompositeRegion(FFrame&, void* const) +native function SetupCompositeRegion(int MeshAsmId, int DestOffsetX, int DestOffsetY, int SizeX, int SizeY); diff --git a/exported/TgGame/Classes/TgDamageType.uc b/exported/TgGame/Classes/TgDamageType.uc new file mode 100755 index 00000000..65ba2bd5 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType.uc @@ -0,0 +1,99 @@ +class TgDamageType extends DamageType + native; + +var bool m_bImpulseMesh; +var bool m_bEnableMotors; +var bool m_bShouldRagdollAfterDeathAnim; +var bool m_bCanPlayDeathSpecialFXOnDefaultDeath; +var bool m_bHarvestMaterialParameters; +var bool m_bFreezeAnimsOnDeath; +var bool m_bIgnorePersonalShields; +var bool m_bIsLatent; +var float m_bMinImpulse; +var float m_bMaxImpulse; +var float m_bMinUpKick; +var float m_bMaxUpKick; +var array m_nmDeathAnimNames; +var array m_nmDeathFlailAnimNames; +var float m_fMinAngularVelocity; +var float m_fMaxAngularVelocity; +var int m_nDeathSpecialFXId; +var name m_nmDeathSpecialFXSocket; +var MaterialInstanceConstant m_OverrideMaterial; +var float m_fLifeAfterDeathSeconds; +var int m_nFadeOutSpecialFXId; +var array ActivateSkelControlListOnDeath; +var AkEvent m_TakeHitAkEvent; +var AkEvent m_TakeHeadShotAkEvent; +var Class m_LatentDamageType; +var TgCameraShake m_LeftCameraShake; +var TgCameraShake m_RightCameraShake; +var TgCameraShake m_ForwardCameraShake; +var TgCameraShake m_BackwardCameraShake; +var TgCameraShake m_BackwardRightCameraShake; +var TgCameraShake m_BackwardLeftCameraShake; +var TgCameraShake m_ForwardRightCameraShake; +var TgCameraShake m_ForwardLeftCameraShake; + +static function name GetRandomDeathFlailAnimName() +{ + local int I; + + I = Rand(default.m_nmDeathFlailAnimNames.Length); + // End:0x45 + if(I < default.m_nmDeathFlailAnimNames.Length) + { + return default.m_nmDeathFlailAnimNames[I]; + } + else + { + return 'Death_InAirFlail_01'; + } + //return ReturnValue; +} + +static function name GetRandomDeathAnimName() +{ + local int I; + + I = Rand(default.m_nmDeathAnimNames.Length); + // End:0x45 + if(I < default.m_nmDeathAnimNames.Length) + { + return default.m_nmDeathAnimNames[I]; + } + else + { + return 'Death_Generic_01'; + } + //return ReturnValue; +} + +defaultproperties +{ + m_bImpulseMesh=true + m_bEnableMotors=true + m_bMinImpulse=300.0000000 + m_bMaxImpulse=400.0000000 + m_bMinUpKick=200.0000000 + m_bMaxUpKick=300.0000000 + m_nmDeathAnimNames[0]="Death_Generic_01" + m_nmDeathAnimNames[1]="Death_Generic_02" + m_nmDeathAnimNames[2]="Death_Generic_03" + m_nmDeathFlailAnimNames[0]="Death_InAirFlail_01" + m_fMinAngularVelocity=-2.5000000 + m_fMaxAngularVelocity=2.5000000 + m_nDeathSpecialFXId=-1 + ActivateSkelControlListOnDeath[0]="Prop1_SC_Lock" + ActivateSkelControlListOnDeath[1]="Prop2_SC_Lock" + m_LatentDamageType=Class'TgGame.TgDamageType_Latent' + m_LeftCameraShake=TgCameraShake'PC_CommonAssets.CameraShake.CamShake_HitLeft' + m_RightCameraShake=TgCameraShake'PC_CommonAssets.CameraShake.CamShake_HitRight' + m_ForwardCameraShake=TgCameraShake'PC_CommonAssets.CameraShake.CamShake_HitForward' + m_BackwardCameraShake=TgCameraShake'PC_CommonAssets.CameraShake.CamShake_HitBackward' + m_BackwardRightCameraShake=TgCameraShake'PC_CommonAssets.CameraShake.CamShake_HitBackwardRight' + m_BackwardLeftCameraShake=TgCameraShake'PC_CommonAssets.CameraShake.CamShake_HitBackwardLeft' + m_ForwardRightCameraShake=TgCameraShake'PC_CommonAssets.CameraShake.CamShake_HitForwardRight' + m_ForwardLeftCameraShake=TgCameraShake'PC_CommonAssets.CameraShake.CamShake_HitForwardLeft' + KDamageImpulse=1600.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_AbilityCost.uc b/exported/TgGame/Classes/TgDamageType_AbilityCost.uc new file mode 100755 index 00000000..145f3db9 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_AbilityCost.uc @@ -0,0 +1,8 @@ +class TgDamageType_AbilityCost extends TgDamageType + native; + +defaultproperties +{ + m_bImpulseMesh=false + m_bEnableMotors=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_DragonSlam.uc b/exported/TgGame/Classes/TgDamageType_DragonSlam.uc new file mode 100755 index 00000000..53b49cff --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_DragonSlam.uc @@ -0,0 +1,12 @@ +class TgDamageType_DragonSlam extends TgDamageType_PaladinsConcussive; + +defaultproperties +{ + m_bIgnorePersonalShields=true + m_bMinImpulse=1250.0000000 + m_bMaxImpulse=1250.0000000 + m_bMinUpKick=200.0000000 + m_bMaxUpKick=500.0000000 + m_fMinAngularVelocity=-15.0000000 + m_fMaxAngularVelocity=15.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_FallOutOfWorld.uc b/exported/TgGame/Classes/TgDamageType_FallOutOfWorld.uc new file mode 100755 index 00000000..6d3a0636 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_FallOutOfWorld.uc @@ -0,0 +1 @@ +class TgDamageType_FallOutOfWorld extends TgDamageType; diff --git a/exported/TgGame/Classes/TgDamageType_GeneralAfflicted.uc b/exported/TgGame/Classes/TgDamageType_GeneralAfflicted.uc new file mode 100755 index 00000000..f28af05b --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_GeneralAfflicted.uc @@ -0,0 +1,8 @@ +class TgDamageType_GeneralAfflicted extends TgDamageType; + +defaultproperties +{ + m_bImpulseMesh=false + m_bEnableMotors=false + m_nmDeathAnimNames[0]="Death_Afflicted_01" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_GeneralCharred.uc b/exported/TgGame/Classes/TgDamageType_GeneralCharred.uc new file mode 100755 index 00000000..dbb499d8 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_GeneralCharred.uc @@ -0,0 +1,12 @@ +class TgDamageType_GeneralCharred extends TgDamageType; + +defaultproperties +{ + m_bImpulseMesh=false + m_bEnableMotors=false + m_nmDeathAnimNames[0]="Death_Charred_01" + m_nDeathSpecialFXId=2586 + m_nmDeathSpecialFXSocket="CSO_COG" + m_fLifeAfterDeathSeconds=2.0000000 + m_nFadeOutSpecialFXId=2587 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_GeneralConcussion.uc b/exported/TgGame/Classes/TgDamageType_GeneralConcussion.uc new file mode 100755 index 00000000..055effe6 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_GeneralConcussion.uc @@ -0,0 +1,11 @@ +class TgDamageType_GeneralConcussion extends TgDamageType; + +defaultproperties +{ + m_bMinImpulse=200.0000000 + m_bMaxImpulse=300.0000000 + m_bMinUpKick=300.0000000 + m_bMaxUpKick=600.0000000 + m_fMinAngularVelocity=5.0000000 + m_fMaxAngularVelocity=10.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_GeneralElectric.uc b/exported/TgGame/Classes/TgDamageType_GeneralElectric.uc new file mode 100755 index 00000000..04ca1cc2 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_GeneralElectric.uc @@ -0,0 +1,10 @@ +class TgDamageType_GeneralElectric extends TgDamageType; + +defaultproperties +{ + m_bImpulseMesh=false + m_bEnableMotors=false + m_bShouldRagdollAfterDeathAnim=true + m_bHarvestMaterialParameters=true + m_nmDeathAnimNames[0]="Death_ElectricWrithe_01" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_GeneralFlattened.uc b/exported/TgGame/Classes/TgDamageType_GeneralFlattened.uc new file mode 100755 index 00000000..8804181d --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_GeneralFlattened.uc @@ -0,0 +1,13 @@ +class TgDamageType_GeneralFlattened extends TgDamageType; + +defaultproperties +{ + m_bImpulseMesh=false + m_bEnableMotors=false + m_nmDeathAnimNames[0]="Death_Flattened_01" + m_nmDeathAnimNames[1]="Death_Flattened_02" + m_nmDeathAnimNames[2]="Death_Flattened_03" + ActivateSkelControlListOnDeath[0]="Prop1_SC_Lock" + ActivateSkelControlListOnDeath[1]="Prop2_SC_Lock" + ActivateSkelControlListOnDeath[2]="FlattenedScaler" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_GeneralImpulseOut.uc b/exported/TgGame/Classes/TgDamageType_GeneralImpulseOut.uc new file mode 100755 index 00000000..fa1d170c --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_GeneralImpulseOut.uc @@ -0,0 +1,10 @@ +class TgDamageType_GeneralImpulseOut extends TgDamageType; + +defaultproperties +{ + m_bMinImpulse=700.0000000 + m_bMaxImpulse=900.0000000 + m_bMaxUpKick=500.0000000 + m_fMinAngularVelocity=-15.0000000 + m_fMaxAngularVelocity=15.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_GeneralMidImpulse.uc b/exported/TgGame/Classes/TgDamageType_GeneralMidImpulse.uc new file mode 100755 index 00000000..e9e792f4 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_GeneralMidImpulse.uc @@ -0,0 +1,10 @@ +class TgDamageType_GeneralMidImpulse extends TgDamageType; + +defaultproperties +{ + m_bMinImpulse=600.0000000 + m_bMaxImpulse=800.0000000 + m_bMaxUpKick=400.0000000 + m_fMinAngularVelocity=-1.5000000 + m_fMaxAngularVelocity=1.5000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_GeneralOnFire.uc b/exported/TgGame/Classes/TgDamageType_GeneralOnFire.uc new file mode 100755 index 00000000..d4352f74 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_GeneralOnFire.uc @@ -0,0 +1,11 @@ +class TgDamageType_GeneralOnFire extends TgDamageType; + +defaultproperties +{ + m_bImpulseMesh=false + m_bEnableMotors=false + m_nmDeathAnimNames[0]="Death_OnFire_01" + m_nmDeathAnimNames[1]="Death_OnFire_02" + m_nDeathSpecialFXId=2585 + m_nmDeathSpecialFXSocket="CSO_COG" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_IgnoreShields.uc b/exported/TgGame/Classes/TgDamageType_IgnoreShields.uc new file mode 100755 index 00000000..8264aaf5 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_IgnoreShields.uc @@ -0,0 +1,7 @@ +class TgDamageType_IgnoreShields extends TgDamageType + native; + +defaultproperties +{ + m_bIgnorePersonalShields=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_Latent.uc b/exported/TgGame/Classes/TgDamageType_Latent.uc new file mode 100755 index 00000000..1ee9a580 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_Latent.uc @@ -0,0 +1,7 @@ +class TgDamageType_Latent extends TgDamageType + native; + +defaultproperties +{ + m_bIsLatent=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_MeleeBasicAttack.uc b/exported/TgGame/Classes/TgDamageType_MeleeBasicAttack.uc new file mode 100755 index 00000000..2178b13e --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_MeleeBasicAttack.uc @@ -0,0 +1,7 @@ +class TgDamageType_MeleeBasicAttack extends TgDamageType; + +defaultproperties +{ + m_bImpulseMesh=false + m_bEnableMotors=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_MeleeBasicAttackImpulse.uc b/exported/TgGame/Classes/TgDamageType_MeleeBasicAttackImpulse.uc new file mode 100755 index 00000000..7a7632d9 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_MeleeBasicAttackImpulse.uc @@ -0,0 +1,9 @@ +class TgDamageType_MeleeBasicAttackImpulse extends TgDamageType; + +defaultproperties +{ + m_bMinImpulse=400.0000000 + m_bMaxImpulse=600.0000000 + m_bMinUpKick=300.0000000 + m_bMaxUpKick=500.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsAcid.uc b/exported/TgGame/Classes/TgDamageType_PaladinsAcid.uc new file mode 100755 index 00000000..18277b8e --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsAcid.uc @@ -0,0 +1,13 @@ +class TgDamageType_PaladinsAcid extends TgDamageType; + +defaultproperties +{ + m_bMinImpulse=1350.0000000 + m_bMaxImpulse=1350.0000000 + m_bMinUpKick=800.0000000 + m_bMaxUpKick=800.0000000 + m_fMinAngularVelocity=-20.0000000 + m_fMaxAngularVelocity=20.0000000 + m_TakeHitAkEvent=AkEvent'WW_PC_Shared.PC_Shared_DamageAlert_PaladinsAcid_Play' + m_LatentDamageType=Class'TgGame.TgDamageType_PaladinsAcid_Latent' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsAcid_Latent.uc b/exported/TgGame/Classes/TgDamageType_PaladinsAcid_Latent.uc new file mode 100755 index 00000000..8aa2a62a --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsAcid_Latent.uc @@ -0,0 +1,12 @@ +class TgDamageType_PaladinsAcid_Latent extends TgDamageType; + +defaultproperties +{ + m_bIsLatent=true + m_bMinImpulse=1350.0000000 + m_bMaxImpulse=1350.0000000 + m_bMinUpKick=800.0000000 + m_bMaxUpKick=800.0000000 + m_fMinAngularVelocity=-20.0000000 + m_fMaxAngularVelocity=20.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsBullet.uc b/exported/TgGame/Classes/TgDamageType_PaladinsBullet.uc new file mode 100755 index 00000000..75d165b8 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsBullet.uc @@ -0,0 +1,13 @@ +class TgDamageType_PaladinsBullet extends TgDamageType; + +defaultproperties +{ + m_bMinImpulse=1500.0000000 + m_bMaxImpulse=1500.0000000 + m_bMinUpKick=500.0000000 + m_bMaxUpKick=500.0000000 + m_fMinAngularVelocity=-30.0000000 + m_fMaxAngularVelocity=30.0000000 + m_TakeHitAkEvent=AkEvent'WW_PC_Shared.PC_Shared_DamageAlert_PaladinsBullet_Play' + m_LatentDamageType=Class'TgGame.TgDamageType_PaladinsBullet_Latent' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsBullet_Latent.uc b/exported/TgGame/Classes/TgDamageType_PaladinsBullet_Latent.uc new file mode 100755 index 00000000..abe4142e --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsBullet_Latent.uc @@ -0,0 +1,12 @@ +class TgDamageType_PaladinsBullet_Latent extends TgDamageType; + +defaultproperties +{ + m_bIsLatent=true + m_bMinImpulse=1500.0000000 + m_bMaxImpulse=1500.0000000 + m_bMinUpKick=500.0000000 + m_bMaxUpKick=500.0000000 + m_fMinAngularVelocity=-30.0000000 + m_fMaxAngularVelocity=30.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsConcussive.uc b/exported/TgGame/Classes/TgDamageType_PaladinsConcussive.uc new file mode 100755 index 00000000..9a6224d2 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsConcussive.uc @@ -0,0 +1,13 @@ +class TgDamageType_PaladinsConcussive extends TgDamageType; + +defaultproperties +{ + m_bMinImpulse=1350.0000000 + m_bMaxImpulse=1350.0000000 + m_bMinUpKick=800.0000000 + m_bMaxUpKick=800.0000000 + m_fMinAngularVelocity=-25.0000000 + m_fMaxAngularVelocity=25.0000000 + m_TakeHitAkEvent=AkEvent'WW_PC_Shared.PC_Shared_DamageAlert_PaladinsConcussive_Play' + m_LatentDamageType=Class'TgGame.TgDamageType_PaladinsConcussive_Latent' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsConcussive_Latent.uc b/exported/TgGame/Classes/TgDamageType_PaladinsConcussive_Latent.uc new file mode 100755 index 00000000..c730b1fe --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsConcussive_Latent.uc @@ -0,0 +1,12 @@ +class TgDamageType_PaladinsConcussive_Latent extends TgDamageType; + +defaultproperties +{ + m_bIsLatent=true + m_bMinImpulse=1350.0000000 + m_bMaxImpulse=1350.0000000 + m_bMinUpKick=800.0000000 + m_bMaxUpKick=800.0000000 + m_fMinAngularVelocity=-25.0000000 + m_fMaxAngularVelocity=25.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsExecute.uc b/exported/TgGame/Classes/TgDamageType_PaladinsExecute.uc new file mode 100755 index 00000000..3c29efe2 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsExecute.uc @@ -0,0 +1,10 @@ +class TgDamageType_PaladinsExecute extends TgDamageType + native; + +defaultproperties +{ + m_bFreezeAnimsOnDeath=true + m_bIgnorePersonalShields=true + m_nDeathSpecialFXId=7711 + m_nmDeathSpecialFXSocket="CSO_COG" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsExplosive.uc b/exported/TgGame/Classes/TgDamageType_PaladinsExplosive.uc new file mode 100755 index 00000000..37f86a60 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsExplosive.uc @@ -0,0 +1,13 @@ +class TgDamageType_PaladinsExplosive extends TgDamageType; + +defaultproperties +{ + m_bMinImpulse=1600.0000000 + m_bMaxImpulse=1600.0000000 + m_bMinUpKick=400.0000000 + m_bMaxUpKick=400.0000000 + m_fMinAngularVelocity=-30.0000000 + m_fMaxAngularVelocity=30.0000000 + m_TakeHitAkEvent=AkEvent'WW_PC_Shared.PC_Shared_DamageAlert_PaladinsExplosives_Play' + m_LatentDamageType=Class'TgGame.TgDamageType_PaladinsExplosive_Latent' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsExplosive_Latent.uc b/exported/TgGame/Classes/TgDamageType_PaladinsExplosive_Latent.uc new file mode 100755 index 00000000..58535025 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsExplosive_Latent.uc @@ -0,0 +1,12 @@ +class TgDamageType_PaladinsExplosive_Latent extends TgDamageType; + +defaultproperties +{ + m_bIsLatent=true + m_bMinImpulse=1600.0000000 + m_bMaxImpulse=1600.0000000 + m_bMinUpKick=400.0000000 + m_bMaxUpKick=400.0000000 + m_fMinAngularVelocity=-30.0000000 + m_fMaxAngularVelocity=30.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsFire.uc b/exported/TgGame/Classes/TgDamageType_PaladinsFire.uc new file mode 100755 index 00000000..e1842af5 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsFire.uc @@ -0,0 +1,13 @@ +class TgDamageType_PaladinsFire extends TgDamageType; + +defaultproperties +{ + m_bMinImpulse=900.0000000 + m_bMaxImpulse=900.0000000 + m_bMinUpKick=350.0000000 + m_bMaxUpKick=350.0000000 + m_fMinAngularVelocity=-20.0000000 + m_fMaxAngularVelocity=20.0000000 + m_TakeHitAkEvent=AkEvent'WW_PC_Shared.PC_Shared_DamageAlert_PaladinsFire_Play' + m_LatentDamageType=Class'TgGame.TgDamageType_PaladinsFire_Latent' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsFire_Latent.uc b/exported/TgGame/Classes/TgDamageType_PaladinsFire_Latent.uc new file mode 100755 index 00000000..6396a924 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsFire_Latent.uc @@ -0,0 +1,12 @@ +class TgDamageType_PaladinsFire_Latent extends TgDamageType; + +defaultproperties +{ + m_bIsLatent=true + m_bMinImpulse=900.0000000 + m_bMaxImpulse=900.0000000 + m_bMinUpKick=350.0000000 + m_bMaxUpKick=350.0000000 + m_fMinAngularVelocity=-20.0000000 + m_fMaxAngularVelocity=20.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsIce.uc b/exported/TgGame/Classes/TgDamageType_PaladinsIce.uc new file mode 100755 index 00000000..0fe00eaf --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsIce.uc @@ -0,0 +1,13 @@ +class TgDamageType_PaladinsIce extends TgDamageType; + +defaultproperties +{ + m_bMinImpulse=1300.0000000 + m_bMaxImpulse=1300.0000000 + m_bMinUpKick=500.0000000 + m_bMaxUpKick=500.0000000 + m_fMinAngularVelocity=-30.0000000 + m_fMaxAngularVelocity=30.0000000 + m_TakeHitAkEvent=AkEvent'WW_PC_Shared.PC_Shared_DamageAlert_PaladinsIce_Play' + m_LatentDamageType=Class'TgGame.TgDamageType_PaladinsIce_Latent' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsIce_Latent.uc b/exported/TgGame/Classes/TgDamageType_PaladinsIce_Latent.uc new file mode 100755 index 00000000..158d27a4 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsIce_Latent.uc @@ -0,0 +1,12 @@ +class TgDamageType_PaladinsIce_Latent extends TgDamageType; + +defaultproperties +{ + m_bIsLatent=true + m_bMinImpulse=1300.0000000 + m_bMaxImpulse=1300.0000000 + m_bMinUpKick=500.0000000 + m_bMaxUpKick=500.0000000 + m_fMinAngularVelocity=-30.0000000 + m_fMaxAngularVelocity=30.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsLightning.uc b/exported/TgGame/Classes/TgDamageType_PaladinsLightning.uc new file mode 100755 index 00000000..1734ee2f --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsLightning.uc @@ -0,0 +1,13 @@ +class TgDamageType_PaladinsLightning extends TgDamageType; + +defaultproperties +{ + m_bMinImpulse=1125.0000000 + m_bMaxImpulse=1125.0000000 + m_bMinUpKick=500.0000000 + m_bMaxUpKick=500.0000000 + m_fMinAngularVelocity=-25.0000000 + m_fMaxAngularVelocity=25.0000000 + m_TakeHitAkEvent=AkEvent'WW_PC_Shared.PC_Shared_DamageAlert_PaladinsLightning_Play' + m_LatentDamageType=Class'TgGame.TgDamageType_PaladinsLightning_Latent' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsLightning_Latent.uc b/exported/TgGame/Classes/TgDamageType_PaladinsLightning_Latent.uc new file mode 100755 index 00000000..3c7f43aa --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsLightning_Latent.uc @@ -0,0 +1,12 @@ +class TgDamageType_PaladinsLightning_Latent extends TgDamageType; + +defaultproperties +{ + m_bIsLatent=true + m_bMinImpulse=1125.0000000 + m_bMaxImpulse=1125.0000000 + m_bMinUpKick=500.0000000 + m_bMaxUpKick=500.0000000 + m_fMinAngularVelocity=-25.0000000 + m_fMaxAngularVelocity=25.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsPiercing.uc b/exported/TgGame/Classes/TgDamageType_PaladinsPiercing.uc new file mode 100755 index 00000000..e910fc18 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsPiercing.uc @@ -0,0 +1,13 @@ +class TgDamageType_PaladinsPiercing extends TgDamageType; + +defaultproperties +{ + m_bMinImpulse=1000.0000000 + m_bMaxImpulse=1000.0000000 + m_bMinUpKick=500.0000000 + m_bMaxUpKick=500.0000000 + m_fMinAngularVelocity=-30.0000000 + m_fMaxAngularVelocity=30.0000000 + m_TakeHitAkEvent=AkEvent'WW_PC_Shared.PC_Shared_DamageAlert_PaladinsPiercing_Play' + m_LatentDamageType=Class'TgGame.TgDamageType_PaladinsPiercing_Latent' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsPiercing_Latent.uc b/exported/TgGame/Classes/TgDamageType_PaladinsPiercing_Latent.uc new file mode 100755 index 00000000..9df52c04 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsPiercing_Latent.uc @@ -0,0 +1,12 @@ +class TgDamageType_PaladinsPiercing_Latent extends TgDamageType; + +defaultproperties +{ + m_bIsLatent=true + m_bMinImpulse=1000.0000000 + m_bMaxImpulse=1000.0000000 + m_bMinUpKick=500.0000000 + m_bMaxUpKick=500.0000000 + m_fMinAngularVelocity=-30.0000000 + m_fMaxAngularVelocity=30.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsPoison.uc b/exported/TgGame/Classes/TgDamageType_PaladinsPoison.uc new file mode 100755 index 00000000..843ef7db --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsPoison.uc @@ -0,0 +1,13 @@ +class TgDamageType_PaladinsPoison extends TgDamageType; + +defaultproperties +{ + m_bMinImpulse=450.0000000 + m_bMaxImpulse=450.0000000 + m_bMinUpKick=500.0000000 + m_bMaxUpKick=500.0000000 + m_fMinAngularVelocity=-30.0000000 + m_fMaxAngularVelocity=30.0000000 + m_TakeHitAkEvent=AkEvent'WW_PC_Shared.PC_Shared_DamageAlert_PaladinsPoison_Play' + m_LatentDamageType=Class'TgGame.TgDamageType_PaladinsPoison_Latent' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsPoison_Latent.uc b/exported/TgGame/Classes/TgDamageType_PaladinsPoison_Latent.uc new file mode 100755 index 00000000..7e1d1aa5 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsPoison_Latent.uc @@ -0,0 +1,12 @@ +class TgDamageType_PaladinsPoison_Latent extends TgDamageType; + +defaultproperties +{ + m_bIsLatent=true + m_bMinImpulse=450.0000000 + m_bMaxImpulse=450.0000000 + m_bMinUpKick=500.0000000 + m_bMaxUpKick=500.0000000 + m_fMinAngularVelocity=-30.0000000 + m_fMaxAngularVelocity=30.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_PaladinsSniper.uc b/exported/TgGame/Classes/TgDamageType_PaladinsSniper.uc new file mode 100755 index 00000000..6e27e5cc --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_PaladinsSniper.uc @@ -0,0 +1,13 @@ +class TgDamageType_PaladinsSniper extends TgDamageType + native; + +defaultproperties +{ + m_bMinImpulse=1600.0000000 + m_bMaxImpulse=1600.0000000 + m_bMinUpKick=500.0000000 + m_bMaxUpKick=500.0000000 + m_fMinAngularVelocity=-10.0000000 + m_fMaxAngularVelocity=10.0000000 + m_TakeHitAkEvent=AkEvent'WW_PC_Shared.PC_Shared_DamageAlert_PaladinsSniper_Play' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_RangedBasicAttack.uc b/exported/TgGame/Classes/TgDamageType_RangedBasicAttack.uc new file mode 100755 index 00000000..c78c6415 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_RangedBasicAttack.uc @@ -0,0 +1,7 @@ +class TgDamageType_RangedBasicAttack extends TgDamageType; + +defaultproperties +{ + m_bImpulseMesh=false + m_bEnableMotors=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_RangedBasicAttackImpulse.uc b/exported/TgGame/Classes/TgDamageType_RangedBasicAttackImpulse.uc new file mode 100755 index 00000000..e8031042 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_RangedBasicAttackImpulse.uc @@ -0,0 +1,9 @@ +class TgDamageType_RangedBasicAttackImpulse extends TgDamageType; + +defaultproperties +{ + m_bMinImpulse=400.0000000 + m_bMaxImpulse=600.0000000 + m_bMinUpKick=300.0000000 + m_bMaxUpKick=500.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDamageType_RangedShot.uc b/exported/TgGame/Classes/TgDamageType_RangedShot.uc new file mode 100755 index 00000000..afd4bc37 --- /dev/null +++ b/exported/TgGame/Classes/TgDamageType_RangedShot.uc @@ -0,0 +1 @@ +class TgDamageType_RangedShot extends TgDamageType; diff --git a/exported/TgGame/Classes/TgDatabaseIDs.uc b/exported/TgGame/Classes/TgDatabaseIDs.uc new file mode 100755 index 00000000..36cee376 --- /dev/null +++ b/exported/TgGame/Classes/TgDatabaseIDs.uc @@ -0,0 +1,41 @@ +class TgDatabaseIDs extends Object + native(Globals); + +const MESH_ID_GAUNTLET_ULT_TARGETING = 6824; +const DEVICE_ID_BLAST_SHOT = 11450; +const DEVICE_ID_PROTECTION = 15793; +const DEVICE_ID_RECHARGE = 15794; +const DEVICE_ID_BLADES_INHAND = 16218; +const DEVICE_ID_BLADES_ALTFIRE = 16229; +const DEVICE_ID_BLADES_DISPLACE = 16235; +const DEVICE_ID_BLADES_MIDNIGHT = 16241; +const DEVICE_ID_BLADES_NINE_LIVES = 16306; +const DEVICE_ID_BOOSTER = 13333; +const DEVICE_ID_OWL_INHAND = 19108; +const DEVICE_ID_OWL_STEALTH = 19145; +const DEVICE_ID_OWL_SCOPE = 19111; +const DEVICE_ID_OWL_SIDEARM = 19144; +const TALENT_ID_ASH_FORTRESS_BREAKER = 18556; +const TALENT_ID_BOMBKING_ACCELERANT = 16427; +const FIREMODE_ID_DISENGAGE = 23970; +const FIREMODE_ID_CASSIE_INHAND = 10148; +const FIREMODE_ID_CASSIE_CROSSBOW = 24356; +const ITEM_SET_BARIK_STEAMTF2 = 15338; +const ITEM_SKIN_BODY_BARIK_STEAMTF2 = 14870; +const ITEM_SKIN_BODY_ANDROXUS_XBOX = 15146; +const ITEM_SKIN_BODY_ANDROXUS_PS4 = 15145; +const ITEM_SKIN_BODY_VIKTOR_PSPLUS = 15177; +const ITEM_SKIN_HEAD_BARIK_STEAMTF2 = 15224; +const ITEM_SKIN_HEAD_ANDROXUS_XBOX = 15134; +const ITEM_SKIN_HEAD_ANDROXUS_PS4 = 15133; +const ITEM_SKIN_HEAD_VIKTOR_PSPLUS = 15155; +const ITEM_SKIN_WEAPON_BARIK_STEAMTF2 = 14867; +const ITEM_SKIN_WEAPON_ANDROXUS_XBOX = 15148; +const ITEM_SKIN_WEAPON_ANDROXUS_PS4 = 15147; +const ITEM_SKIN_WEAPON_VIKTOR_PSPLUS = 15868; +const ITEM_VOICE_DEFAULT = 15283; +const ITEM_VOICE_BARIK_STEAMTF2 = 15289; +const CONFIG_SET_PLAYER_PREFERENCES = 6; +const PROP_ACCOUNT_LINK_POPUP_SEEN = 1986; +const PROP_CARD_TUTORIAL_SEEN = 2020; +const ICON_TEXTURE_INDEX_OWL_SNIPER_SWAP = 1176; diff --git a/exported/TgGame/Classes/TgDebugCameraController.uc b/exported/TgGame/Classes/TgDebugCameraController.uc new file mode 100755 index 00000000..c7bb68f4 --- /dev/null +++ b/exported/TgGame/Classes/TgDebugCameraController.uc @@ -0,0 +1,73 @@ +class TgDebugCameraController extends DebugCameraController + config(Input) + hidecategories(Navigation); + +exec function Camera(name NewMode) +{ + local TgPlayerController TgPC; + + TgPC = TgPlayerController(OriginalControllerRef); + // End:0x53 + if(TgPC != none) + { + TgPC.Camera(NewMode); + } + switch(NewMode) + { + // End:0x7F + case 'Attach': + DisableDebugCamera(); + // End:0xB4 + break; + // End:0x98 + case 'Freeze': + DisableDebugCamera(); + // End:0xB4 + break; + // End:0xB1 + case 'Reset': + DisableDebugCamera(); + // End:0xB4 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +function DisableDebugCamera() +{ + // End:0x92 + if(OriginalControllerRef != none) + { + // End:0x50 + if(bIsFrozenRendering == true) + { + ConsoleCommand("FreezeRendering"); + bIsFrozenRendering = false; + } + // End:0x92 + if(OriginalPlayer != none) + { + OriginalPlayer.SwitchController(OriginalControllerRef); + OnDeactivate(self); + } + } + //return; +} + +defaultproperties +{ + InputClass=Class'TgGame.TgDebugCameraInput' + // Reference: CylinderComponent'TgGame.Default__TgDebugCameraController.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'GameFramework.Default__DebugCameraController.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDebugCameraInput.uc b/exported/TgGame/Classes/TgDebugCameraInput.uc new file mode 100755 index 00000000..b7a0ab05 --- /dev/null +++ b/exported/TgGame/Classes/TgDebugCameraInput.uc @@ -0,0 +1,4 @@ +class TgDebugCameraInput extends DebugCameraInput within PlayerController + transient + config(Input) + hidecategories(Object,UIRoot); diff --git a/exported/TgGame/Classes/TgDecalManager.uc b/exported/TgGame/Classes/TgDecalManager.uc new file mode 100755 index 00000000..971d5092 --- /dev/null +++ b/exported/TgGame/Classes/TgDecalManager.uc @@ -0,0 +1,23 @@ +class TgDecalManager extends DecalManager + native(FX) + config(Game) + hidecategories(Navigation); + +event SpawnDecalNative(bool bUsePool, MaterialInterface DecalMaterial, Vector DecalLocation, Rotator DecalOrientation, float Width, float Height, float Thickness, bool bNoClip) +{ + SpawnDecal(bUsePool, DecalMaterial, DecalLocation, DecalOrientation, Width, Height, Thickness, bNoClip); + //return; +} + +defaultproperties +{ + // Reference: DecalComponent'TgGame.Default__TgDecalManager.BaseDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BaseDecal' + // Archetype: DecalComponent'Engine.Default__DecalManager.BaseDecal' + begin object name="BaseDecal" + ReplacementPrimitive=none + end object + DecalTemplate=BaseDecal + DecalBlendRange=(X=1.0000000,Y=70.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDefensePoint.uc b/exported/TgGame/Classes/TgDefensePoint.uc new file mode 100755 index 00000000..58d60236 --- /dev/null +++ b/exported/TgGame/Classes/TgDefensePoint.uc @@ -0,0 +1,64 @@ +class TgDefensePoint extends TgNavigationPoint + abstract + hidecategories(Navigation,Lighting,LightColor,Force); + +var Controller CurrentUser; +var TgDefensePoint NextDefensePoint; +var bool bFirstScript; +var() bool bSniping; +var() bool bDontChangePosition; +var bool bAvoid; +var bool bDisabled; +var() bool bNotInVehicle; +var() byte Priority; +var() Class WeaponPreference; +var float NumChecked; + +function Reset() +{ + bDisabled = false; + FreePoint(); + //return; +} + +function FreePoint() +{ + CurrentUser = none; + //return; +} + +function PreBeginPlay() +{ + //return; +} + +function bool HigherPriorityThan(TgDefensePoint S, TgAIController B) +{ + return FRand() < (float(1) / S.NumChecked); + //return ReturnValue; +} + +function Actor GetMoveTarget() +{ + return self; + //return ReturnValue; +} + +defaultproperties +{ + bFirstScript=true + // Reference: CylinderComponent'TgGame.Default__TgDefensePoint.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgNavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDemoRecSpectator.uc b/exported/TgGame/Classes/TgDemoRecSpectator.uc new file mode 100755 index 00000000..316bd0b7 --- /dev/null +++ b/exported/TgGame/Classes/TgDemoRecSpectator.uc @@ -0,0 +1,518 @@ +class TgDemoRecSpectator extends TgSpectatorController + native(Pawns) + config(Game) + hidecategories(Navigation); + +struct native SpectatorCommand +{ + var int nFrame; + var bool bUseIndex; + var float fSpeed; + + structdefaultproperties + { + nFrame=0 + bUseIndex=false + fSpeed=0.0000000 + } +}; + +struct native DilationData +{ + var float fValue; + var string sName; + + structdefaultproperties + { + fValue=0.0000000 + sName="" + } +}; + +var array PendingCommands; +var int m_TimeIndex; +var array m_TimeDilations; +var native Pointer m_pTgCallbackDevice; +var transient int m_1xTimeIndex; +var transient bool m_bIsPaused; +var transient bool m_bInStasis; +var transient bool m_bSpectatorMaster; +var transient bool m_bSyncWithMasterEnabled; +var transient bool m_bIsSyncingWithMaster; +var config transient bool m_bAutoSlomo; +var config transient bool m_bReceiveCamSync; +var transient int m_nLastReceivedMasterFrame; +var transient float m_fLastReceivedMasterTimeDilation; +var transient float m_fLastReceievedRealTimeStamp; +var const config int m_nSyncFrameThreshold; +var const config int m_nSyncFrameCheckThreshold; +var const config int m_nSyncAheadFrameThreshold; +var transient int m_nLastTimerValue; +var TgSpectatorDirector m_SpectatorDirector; +var transient TgCollisionProxy_SpectatorActionListener m_ActionListener; +var config transient float m_fActionListenerRadius; +var config transient float m_fActionListenerHeight; +var transient int m_nCurrentActionListenerRating; +var config transient int m_nActionListenerRatingThreshold; +var float m_fRemainingAutoSlomoTime; +var config transient float m_fAutoSlomoExpirationTime; +var config transient int m_nAutoSlomoSpeedIndex; +var config transient int m_nAutoSlomoNearbyPlayersNum; +var config transient float m_fAutoSlomoFrequency; +var transient float m_fRemainingAutoSlomoTimeoutTime; + +// Export UTgDemoRecSpectator::execOnSynced(FFrame&, void* const) +native function OnSynced(); + +// Export UTgDemoRecSpectator::execRequestSync(FFrame&, void* const) +native function RequestSync(); + +// Export UTgDemoRecSpectator::execUpdateTimeDilation(FFrame&, void* const) +native function UpdateTimeDilation(); + +// Export UTgDemoRecSpectator::execUpdateSyncingUI(FFrame&, void* const) +native function bool UpdateSyncingUI(); + +// Export UTgDemoRecSpectator::execUpdateCameraModeUI(FFrame&, void* const) +native function UpdateCameraModeUI(); + +// Export UTgDemoRecSpectator::execRegisterEngineCallbacks(FFrame&, void* const) +native function RegisterEngineCallbacks(); + +// Export UTgDemoRecSpectator::execUnregisterEngineCallbacks(FFrame&, void* const) +native function UnregisterEngineCallbacks(); + +// Export UTgDemoRecSpectator::execGetHudClass(FFrame&, void* const) +native function Class GetHudClass(Class pNewHudType); + +// Export UTgDemoRecSpectator::execCreateManualRewindPoint(FFrame&, void* const) +native exec function CreateManualRewindPoint(); + +// Export UTgDemoRecSpectator::execToggleThirdPersonView(FFrame&, void* const) +native exec function ToggleThirdPersonView(); + +// Export UTgDemoRecSpectator::execStartAutoCombatLog(FFrame&, void* const) +native function StartAutoCombatLog(); + +simulated event ReceivedPlayer() +{ + super(TgPlayerController).ReceivedPlayer(); + CachedPRI.SetTaskForceNumber(10, true); + ClientSetHUD(none); + GotoState('SpectatingMatch'); + // End:0x5D + if(m_bAutoSlomo) + { + EnableAutoSlomo(true); + } + //return; +} + +simulated event PostBeginPlay() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x77 [Loop If] + if(I < m_TimeDilations.Length) + { + // End:0x69 + if(m_TimeDilations[I].fValue == 1.0000000) + { + m_1xTimeIndex = I; + // [Explicit Break] + goto J0x77; + } + I++; + // [Loop Continue] + goto J0x0B; + } + J0x77: + + RegisterEngineCallbacks(); + CheckSpectatorMasterSlave(); + StartAutoCombatLog(); + // End:0xDA + if(WorldInfo.IsPlayingDemo()) + { + m_SpectatorDirector = Spawn(Class'TgGame.TgSpectatorDirector', self); + } + super.PostBeginPlay(); + //return; +} + +// Export UTgDemoRecSpectator::execSlomo(FFrame&, void* const) +native exec function Slomo(float NewTimeDilation); + +// Export UTgDemoRecSpectator::execPause(FFrame&, void* const) +native exec function Pause(); + +// Export UTgDemoRecSpectator::execDilateTime(FFrame&, void* const) +native exec function DilateTime(float Amount, optional bool bForceReset); + +// Export UTgDemoRecSpectator::execRewind(FFrame&, void* const) +native exec function Rewind(int JumpAmount, optional int FrameNum = -1); + +// Export UTgDemoRecSpectator::execGoToFrame(FFrame&, void* const) +native exec function GoToFrame(float fPercent); + +// Export UTgDemoRecSpectator::execCanFastForward(FFrame&, void* const) +native function bool CanFastForward(); + +// Export UTgDemoRecSpectator::execSetSpectatorMasterSlave(FFrame&, void* const) +native function bool SetSpectatorMasterSlave(); + +// Export UTgDemoRecSpectator::execPauseEx(FFrame&, void* const) +native function PauseEx(); + +// Export UTgDemoRecSpectator::execRewindGraphs(FFrame&, void* const) +native function RewindGraphs(); + +// Export UTgDemoRecSpectator::execSetSyncTargetFrame(FFrame&, void* const) +native exec function SetSyncTargetFrame(int FrameNum, float TimeDilation); + +// Export UTgDemoRecSpectator::execGetSyncTargetFrame(FFrame&, void* const) +native function int GetSyncTargetFrame(); + +// Export UTgDemoRecSpectator::execIsSyncedWithMaster(FFrame&, void* const) +native function bool IsSyncedWithMaster(int Threshold); + +exec function EnableSync(bool bEnabled) +{ + // End:0x82 + if(!m_bSpectatorMaster) + { + // End:0x35 + if(m_bSyncWithMasterEnabled) + { + m_TimeIndex = 3; + UpdateTimeDilation(); + } + else + { + // End:0x4C + if(m_bIsPaused) + { + PauseEx(); + } + } + m_bSyncWithMasterEnabled = bEnabled; + // End:0x78 + if(m_bSyncWithMasterEnabled) + { + RequestSync(); + } + UpdateSyncingUI(); + } + //return; +} + +exec function ToggleSync() +{ + EnableSync(!m_bSyncWithMasterEnabled); + //return; +} + +function CheckSpectatorMasterSlave() +{ + // End:0x24 + if(SetSpectatorMasterSlave()) + { + ClearTimer('CheckSpectatorMasterSlave'); + } + else + { + SetTimer(1.0000000, true, 'CheckSpectatorMasterSlave'); + } + //return; +} + +simulated event PostDemoRewind() +{ + // End:0x33 + if(myHUD != none) + { + myHUD.Tick(0.0000000); + } + RewindGraphs(); + m_nCurrentActionListenerRating = 0; + m_fRemainingAutoSlomoTime = 0.0000000; + super(Actor).PostDemoRewind(); + //return; +} + +exec function DirectorModeToggle() +{ + // End:0x9A + if(m_SpectatorDirector != none) + { + // End:0x90 + if(int(m_CurrentSpectatorMode) == int(1)) + { + // End:0x8D + if(m_SpectatorDirector.IsActive() && m_SpectatorDirector.IsPending()) + { + m_SpectatorDirector.m_fRemainingAutoReturnCheckTime = 0.0000000; + } + } + else + { + FindNearbyAssistedViewTarget(); + } + } + //return; +} + +event FindNearbyAssistedViewTarget() +{ + local Vector2D ForcedDirectorLocation; + local Vector CamLoc; + local Rotator CamRot; + + // End:0xCA + if(int(m_CurrentSpectatorMode) == int(2)) + { + GetPlayerViewPoint(CamLoc, CamRot); + ForcedDirectorLocation.X = CamLoc.X; + ForcedDirectorLocation.Y = CamLoc.Y; + m_SpectatorDirector.SetForcedDirectorLocation(ForcedDirectorLocation); + } + //return; +} + +event FindNextClosestAssistedViewTarget() +{ + local Vector2D ForcedDirectorLocation; + local Vector CamLoc, BestLocation; + local Rotator CamRot; + local TgPawn P; + local float DistSq, ClosestDistSq; + + ClosestDistSq = -1.0000000; + // End:0x2DF + if(int(m_CurrentSpectatorMode) == int(2)) + { + GetPlayerViewPoint(CamLoc, CamRot); + BestLocation.X = CamLoc.X; + BestLocation.Y = CamLoc.Y; + // End:0x244 + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn', P) + { + // End:0x243 + if((P.Health > 0) && P.r_nPhysicalType == 10034) + { + DistSq = VSizeSq(CamLoc - P.Location); + // End:0x243 + if((ClosestDistSq < float(0)) || DistSq < ClosestDistSq) + { + ClosestDistSq = DistSq; + BestLocation.X = P.Location.X; + BestLocation.Y = P.Location.Y; + } + } + } + ForcedDirectorLocation.X = BestLocation.X; + ForcedDirectorLocation.Y = BestLocation.Y; + m_SpectatorDirector.SetForcedDirectorLocation(ForcedDirectorLocation); + } + //return; +} + +exec function SetNewSpectatorMode(TgSpectatorController.ESpectatorMode NewMode) +{ + local TgSpectatorController.ESpectatorMode OldMode; + + OldMode = m_CurrentSpectatorMode; + super.SetNewSpectatorMode(NewMode); + // End:0x135 + if(int(OldMode) != int(NewMode)) + { + switch(NewMode) + { + // End:0x8B + case 0: + // End:0x88 + if(m_SpectatorDirector != none) + { + m_SpectatorDirector.SetActive(false); + } + // End:0x12B + break; + // End:0xC2 + case 1: + // End:0xBF + if(m_SpectatorDirector != none) + { + m_SpectatorDirector.SetActive(true); + } + // End:0x12B + break; + // End:0xF9 + case 2: + // End:0xF6 + if(m_SpectatorDirector != none) + { + m_SpectatorDirector.SetActive(true); + } + // End:0x12B + break; + // End:0xFFFF + default: + // End:0x12B + if(m_SpectatorDirector != none) + { + m_SpectatorDirector.SetActive(false); + } + break; + } + UpdateCameraModeUI(); + } + //return; +} + +simulated function bool PingMap(Vector WorldLocation, const out array worldActorRepInfo, TgObject.PING_TYPE Type) +{ + local Vector2D ForcedLocation; + + // End:0xF3 + if(m_SpectatorDirector != none) + { + // End:0x45 + if(int(m_CurrentSpectatorMode) == int(1)) + { + m_SpectatorDirector.OnPlayerMoved(); + } + else + { + // End:0xF3 + if(int(m_CurrentSpectatorMode) == int(2)) + { + ForcedLocation.X = WorldLocation.X; + ForcedLocation.Y = WorldLocation.Y; + m_SpectatorDirector.SetForcedDirectorLocation(ForcedLocation); + } + } + } + return super.PingMap(WorldLocation, worldActorRepInfo, Type); + //return ReturnValue; +} + +exec function SpecViewPlayer(string PlayerName) +{ + // End:0x44 + if((m_SpectatorDirector != none) && int(m_CurrentSpectatorMode) == int(2)) + { + m_SpectatorDirector.ClearAssistModeTarget(); + } + super.SpecViewPlayer(PlayerName); + //return; +} + +exec function ToggleAutoSlomo() +{ + local bool bEnabled; + + bEnabled = !m_bAutoSlomo; + EnableAutoSlomo(bEnabled); + //return; +} + +exec function EnableAutoSlomo(bool bEnabled) +{ + m_bAutoSlomo = bEnabled; + // End:0xEC + if(m_bAutoSlomo) + { + // End:0xE9 + if(m_ActionListener == none) + { + m_ActionListener = Spawn(Class'TgGame.TgCollisionProxy_SpectatorActionListener'); + m_ActionListener.m_CollisionCylinder.SetCylinderSize(m_fActionListenerRadius, m_fActionListenerHeight); + m_ActionListener.__ProxyDeviceOnStartFire__Delegate = OnActionListenerStartFire; + m_ActionListener.DelegatesUpdated(); + } + } + else + { + Slomo(1.0000000); + m_fRemainingAutoSlomoTime = 0.0000000; + // End:0x13C + if(m_ActionListener != none) + { + m_ActionListener.Destroy(); + m_ActionListener = none; + } + } + //return; +} + +// Export UTgDemoRecSpectator::execOnActionListenerStartFire(FFrame&, void* const) +native function OnActionListenerStartFire(TgPawn FiringPawn, int nEquipSlot); + +// Export UTgDemoRecSpectator::execTriggerAutoSlomo(FFrame&, void* const) +native function TriggerAutoSlomo(float SlomoTime); + +exec function EnableCamSync(bool bEnabled) +{ + m_bReceiveCamSync = bEnabled; + //return; +} + +function SpectatorSetViewTarget(Actor VT, optional ViewTargetTransitionParams TransitionParams) +{ + super.SpectatorSetViewTarget(VT, TransitionParams); + SendCamSyncTarget(); + //return; +} + +event SpectatorReceivedViewTarget(Actor VT) +{ + SpectatorSetViewTarget(VT); + //return; +} + +// Export UTgDemoRecSpectator::execSendCamSyncTarget(FFrame&, void* const) +native function SendCamSyncTarget(); + +// Export UTgDemoRecSpectator::execReceiveCamSyncTarget(FFrame&, void* const) +native function ReceiveCamSyncTarget(int PawnId, int SourcePlayerId); + +defaultproperties +{ + m_TimeIndex=3 + m_TimeDilations[0]=(fValue=0.1250000,sName="1/8x") + m_TimeDilations[1]=(fValue=0.2500000,sName="1/4x") + m_TimeDilations[2]=(fValue=0.5000000,sName="1/2x") + m_TimeDilations[3]=(fValue=1.0000000,sName="1x") + m_TimeDilations[4]=(fValue=2.0000000,sName="2x") + m_TimeDilations[5]=(fValue=4.0000000,sName="4x") + m_TimeDilations[6]=(fValue=8.0000000,sName="8x") + m_TimeDilations[7]=(fValue=16.0000000,sName="16x") + m_bSpectatorMaster=true + m_bAutoSlomo=true + m_nLastReceivedMasterFrame=-1 + m_nSyncFrameThreshold=10 + m_nSyncFrameCheckThreshold=20 + m_nSyncAheadFrameThreshold=90 + m_fActionListenerRadius=900.0000000 + m_fActionListenerHeight=1000.0000000 + m_nActionListenerRatingThreshold=1 + m_fAutoSlomoExpirationTime=0.7500000 + m_nAutoSlomoSpeedIndex=1 + m_fAutoSlomoFrequency=30.0000000 + // Reference: CylinderComponent'TgGame.Default__TgDemoRecSpectator.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgSpectatorController.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + RemoteRole=ENetRole.ROLE_AutonomousProxy + bDemoOwner=true + bAlwaysTick=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDemoRecSpectator_Debug.uc b/exported/TgGame/Classes/TgDemoRecSpectator_Debug.uc new file mode 100755 index 00000000..bc2f2188 --- /dev/null +++ b/exported/TgGame/Classes/TgDemoRecSpectator_Debug.uc @@ -0,0 +1,21 @@ +class TgDemoRecSpectator_Debug extends TgDemoRecSpectator + native(Pawns) + config(Game) + hidecategories(Navigation); + +var Player m_OriginalPlayer; +var PlayerController m_OriginalPlayerController; + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgDemoRecSpectator_Debug.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgDemoRecSpectator.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_AbsorptionField.uc b/exported/TgGame/Classes/TgDeploy_AbsorptionField.uc new file mode 100755 index 00000000..dbf62992 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_AbsorptionField.uc @@ -0,0 +1,28 @@ +class TgDeploy_AbsorptionField extends TgDeploy_Shield + native(ChampLazarus) + notplaceable + hidecategories(Navigation); + +// Export UTgDeploy_AbsorptionField::execMitigateHealthDamage(FFrame&, void* const) +native function MitigateHealthDamage(TgPawn pInstigator, TgEffectDamage Effect, ImpactInfo Impact, out float NewValue, out float fPercReduction); + +event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + return; + //return; +} + +defaultproperties +{ + m_bMovableProjBlocker=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_AbsorptionField.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Shield.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_CollisionSettings=(bOnlyBlockShotsFromFront=true) + m_nInitHUDOverlayDisplayMask=0 + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_Barrage.uc b/exported/TgGame/Classes/TgDeploy_Barrage.uc new file mode 100755 index 00000000..e720528a --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_Barrage.uc @@ -0,0 +1,99 @@ +class TgDeploy_Barrage extends TgDeployable + native(ChampViktor) + notplaceable + hidecategories(Navigation); + +var TgCameraShake m_CameraShake; +var float m_fAllowableGroundTraceDist; +var bool m_bShouldAirBurst; + +// Export UTgDeploy_Barrage::execAdjustMeshToGround(FFrame&, void* const) +native function AdjustMeshToGround(); + +simulated function TriggerHitFX() +{ + // End:0x3D + if(m_bShouldAirBurst) + { + c_Mesh.FxActivateGroup('Generic2', 0); + } + else + { + c_Mesh.FxActivateGroup('Generic1', 0); + } + //return; +} + +simulated event PlayFireFx() +{ + local TgPlayerController TgPC; + + super.PlayFireFx(); + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x75 + if(TgPC != none) + { + TgPC.PlayTgCameraShake(m_CameraShake, self.Location, self); + } + //return; +} + +simulated state Deploy +{ + simulated function BeginState(name PreviousStateName) + { + super.BeginState(PreviousStateName); + // End:0xA5 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && int(WorldInfo.NetMode) != int(NM_ListenServer)) + { + // End:0x9B + if(r_fTimeToDeploySecs > 0.2000000) + { + SetTimer(r_fTimeToDeploySecs - 0.2000000, false, 'TriggerHitFX'); + } + else + { + TriggerHitFX(); + } + } + // End:0x119 + if(r_DRI != none) + { + r_DRI.SetHUDOverlayDisplayMask(r_DRI.r_nDeployableOverlayDisplayMask | 73); + r_DRI.c_fBarragePercent = 1.0000000; + } + //return; + } + + simulated function TickDeploy(float DeltaSeconds) + { + super.TickDeploy(DeltaSeconds); + // End:0xA7 + if(r_DRI != none) + { + r_DRI.c_fBarragePercent = 1.0000000 - m_fCurrentDeployPercentage; + // End:0xA7 + if(m_fCurrentDeployPercentage >= 0.9990000) + { + r_DRI.SetHUDOverlayDisplayMask(r_DRI.r_nDeployableOverlayDisplayMask & ~73); + } + } + //return; + } + stop; +} + +defaultproperties +{ + m_CameraShake=TgCameraShake'GP_Viktor.BarrageShake' + m_fAllowableGroundTraceDist=80.0000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Barrage.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_GameplayCurves=TgGameplayCurves'GP_Viktor.DeviceBarrage' + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_BlackHole.uc b/exported/TgGame/Classes/TgDeploy_BlackHole.uc new file mode 100755 index 00000000..9a64f573 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_BlackHole.uc @@ -0,0 +1,87 @@ +class TgDeploy_BlackHole extends TgDeployable + native(Deployable) + placeable + hidecategories(Navigation); + +var repnotify float r_fRadiusScale; +var float m_fMaxPullSpeed; +var float m_fMinPullSpeed; +var float m_fDistanceWithMaxSpeed; +var float m_fEventHorizonDistance; +var float m_fInnerRadius; +var array m_ActorsInRange; +var TgPawn m_CachedPawnOwner; +var TgRepInfo_TaskForce m_CachedEnemyTaskForce; +var bool r_bPullActive; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_fRadiusScale; + + // Pos:0x011 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_bPullActive; +} + +// Export UTgDeploy_BlackHole::execApplyPullEffects(FFrame&, void* const) +native function ApplyPullEffects(TgPawn Target, float DeltaTime); + +simulated event ReplicatedEvent(name VarName) +{ + super.ReplicatedEvent(VarName); + //return; +} + +simulated event ClearAllTouched() +{ + local TgPawn NextPawn; + + J0x00: + // End:0xAC [Loop If] + if(m_ActorsInRange.Length > 0) + { + NextPawn = TgPawn(m_ActorsInRange[0]); + // End:0x60 + if(NextPawn != none) + { + NextPawn.m_CurrentBlackHoleList.RemoveItem(self); + } + // End:0x9C + if(m_FireMode != none) + { + m_FireMode.RemoveHitSpecial(m_ActorsInRange[0], true); + } + m_ActorsInRange.Remove(0, 1); + // [Loop Continue] + goto J0x00; + } + //return; +} + +simulated event Destroyed() +{ + ClearAllTouched(); + super.Destroyed(); + //return; +} + +defaultproperties +{ + r_fRadiusScale=1.0000000 + m_fMaxPullSpeed=160.0000000 + m_fMinPullSpeed=1.6000000 + m_fDistanceWithMaxSpeed=160.0000000 + m_fEventHorizonDistance=560.0000000 + m_fInnerRadius=20.0000000 + r_bPullActive=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_BlackHole.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_Bomb.uc b/exported/TgGame/Classes/TgDeploy_Bomb.uc new file mode 100755 index 00000000..84b830c6 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_Bomb.uc @@ -0,0 +1,349 @@ +class TgDeploy_Bomb extends TgDeployable + native(Deployable) + placeable + hidecategories(Navigation); + +var float r_fPersistTime; +var() export editinline StaticMeshComponent m_CountdownIndicator; +var transient MaterialInstanceConstant m_CountdownIndicatorMIC; +var repnotify float r_fRadiusScale; + +replication +{ + // Pos:0x000 + if(bNetInitial && int(Role) == int(ROLE_Authority)) + r_fPersistTime; + + // Pos:0x020 + if(int(Role) == int(ROLE_Authority)) + r_fRadiusScale; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x21 + if(VarName == 'r_fRadiusScale') + { + ScaleAbilityFX(); + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0xAD + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0xAD + if(m_CountdownIndicator != none) + { + m_CountdownIndicatorMIC = m_CountdownIndicator.CreateAndSetMaterialInstanceConstant(0); + m_CountdownIndicatorMIC.SetScalarParameterValue('bIsFriendly', ((IsFriendlyWithLocalPawn()) ? 1.0000000 : 0.0000000)); + } + } + //return; +} + +function OnPersistTimerExpire() +{ + StartFire(); + DestroyIt(); + //return; +} + +simulated function ApplyHit(out array ImpactList) +{ + local int Idx, NumEnemiesHit; + + NumEnemiesHit = GetNumEnemyPlayersInList(ImpactList); + Idx = 0; + J0x28: + + // End:0xF0 [Loop If] + if(Idx < ImpactList.Length) + { + // End:0xE2 + if(ImpactList[Idx].HitActor != none) + { + ImpactList[Idx].HitInfo.Item = NumEnemiesHit; + m_FireMode.ApplyHit(ImpactList[Idx], self); + } + Idx++; + // [Loop Continue] + goto J0x28; + } + //return; +} + +function int GetNumEnemyPlayersInList(out array ImpactList) +{ + local int Idx, NumEnemyPlayers; + local TgPawn_Character HitChar; + local TgPawn TgP; + + TgP = TgPawn(Instigator); + // End:0x2D + if(TgP == none) + { + return 0; + } + NumEnemyPlayers = 0; + Idx = 0; + J0x43: + + // End:0x12F [Loop If] + if(Idx < ImpactList.Length) + { + // End:0x121 + if(ImpactList[Idx].HitActor != none) + { + HitChar = TgPawn_Character(ImpactList[Idx].HitActor); + // End:0x121 + if(HitChar != none) + { + // End:0x121 + if(int(TgP.GetTaskForceNumber()) != int(HitChar.GetTaskForceNumber())) + { + NumEnemyPlayers++; + } + } + } + Idx++; + // [Loop Continue] + goto J0x43; + } + return NumEnemyPlayers; + //return ReturnValue; +} + +simulated function Tick(float DeltaSeconds) +{ + local float Percent; + + super.Tick(DeltaSeconds); + // End:0x165 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x165 + if(((m_CountdownIndicator != none) && m_CountdownIndicatorMIC != none) && r_fPersistTime > 0.0000000) + { + Percent = ((WorldInfo.TimeSeconds - r_fTimeToDeploySecs) - CreationTime) / r_fPersistTime; + Percent = 1.0000000 - Percent; + Percent = FClamp(Percent, 0.0000000, 1.0000000); + m_CountdownIndicatorMIC.SetScalarParameterValue('Perc', Percent); + m_CountdownIndicatorMIC.SetScalarParameterValue('bIsFriendly', ((IsFriendlyWithLocalPawn()) ? 1.0000000 : 0.0000000)); + } + } + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + super.DestroyIt(true); + // End:0xB0 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0xAD + if(!bSkipFx && c_Mesh != none) + { + c_Mesh.FxActivateGroup('Destroyed', 0); + c_Mesh.FxDeactivateGroup('OnWhenDeployed', 0); + } + } + else + { + r_nReplicateDestroyIt = ((bSkipFx) ? 2 : 1); + } + //return; +} + +event ScaleAbilityRadius() +{ + local TgProperty EffectRadiusProperty, EffectiveRadiusProperty; + local float EffectRadius, EffectiveRadius, radiusScale; + + // End:0x1C0 + if(int(Role) == int(ROLE_Authority)) + { + radiusScale = 1.0000000; + // End:0x1C0 + if((m_FireMode != none) && radiusScale > 0.0000000) + { + EffectRadiusProperty = m_FireMode.GetProperty(6); + EffectiveRadiusProperty = m_FireMode.GetProperty(343); + // End:0x11F + if(EffectRadiusProperty != none) + { + EffectRadius = EffectRadiusProperty.m_fBase * radiusScale; + // End:0x11F + if(EffectRadius > 0.0000000) + { + m_FireMode.SetProperty(6, EffectRadius); + } + } + // End:0x1A1 + if(EffectiveRadiusProperty != none) + { + EffectiveRadius = EffectiveRadiusProperty.m_fBase * radiusScale; + // End:0x1A1 + if(EffectiveRadius > 0.0000000) + { + m_FireMode.SetProperty(343, EffectiveRadius); + } + } + r_fRadiusScale = radiusScale; + bNetDirty = true; + } + } + //return; +} + +simulated event ScaleAbilityFX() +{ + local array FxList; + local TgSpecialFx Fx; + local editinline ParticleSystemComponent PSC; + local TgProperty EffectRadiusProperty, EffectiveRadiusProperty; + local float fFullyEffectiveRadius, fDamageRadius, fFullyEffectiveRadiusUU, fDamageRadiusUU; + local int I, J; + + // End:0x595 + if(c_Mesh != none) + { + fFullyEffectiveRadius = 0.0000000; + fDamageRadius = 0.0000000; + fFullyEffectiveRadiusUU = 0.0000000; + fDamageRadiusUU = 0.0000000; + // End:0x169 + if(m_FireMode != none) + { + EffectRadiusProperty = m_FireMode.GetProperty(6); + // End:0xE0 + if(EffectRadiusProperty != none) + { + fDamageRadius = EffectRadiusProperty.m_fBase * r_fRadiusScale; + fDamageRadiusUU = fDamageRadius * float(16); + } + EffectiveRadiusProperty = m_FireMode.GetProperty(343); + // End:0x169 + if(EffectiveRadiusProperty != none) + { + fFullyEffectiveRadius = EffectiveRadiusProperty.m_fBase * r_fRadiusScale; + fFullyEffectiveRadiusUU = fFullyEffectiveRadius * float(16); + } + } + FxList = c_Mesh.FxGetAll('AlwaysOn', 0); + I = 0; + J0x1AA: + + // End:0x37F [Loop If] + if(I < FxList.Length) + { + Fx = TgSpecialFx(FxList[I]); + // End:0x371 + if(Fx != none) + { + J = 0; + J0x202: + + // End:0x355 [Loop If] + if(J < Fx.c_PSCList.Length) + { + PSC = Fx.c_PSCList[J].c_PSC; + // End:0x347 + if(PSC != none) + { + PSC.SetFloatParameter('FullyEffectiveRadius', fFullyEffectiveRadius); + PSC.SetFloatParameter('DamageRadius', fDamageRadius); + PSC.SetFloatParameter('FullyEffectiveRadiusUU', fFullyEffectiveRadiusUU); + PSC.SetFloatParameter('DamageRadiusUU', fDamageRadiusUU); + } + J++; + // [Loop Continue] + goto J0x202; + } + UpdateDecalScale(Fx, r_fRadiusScale); + } + I++; + // [Loop Continue] + goto J0x1AA; + } + FxList = c_Mesh.FxGetAll('Destroyed', 0); + I = 0; + J0x3C0: + + // End:0x595 [Loop If] + if(I < FxList.Length) + { + Fx = TgSpecialFx(FxList[I]); + // End:0x56B + if(Fx != none) + { + J = 0; + J0x418: + + // End:0x56B [Loop If] + if(J < Fx.c_PSCList.Length) + { + PSC = Fx.c_PSCList[J].c_PSC; + // End:0x55D + if(PSC != none) + { + PSC.SetFloatParameter('FullyEffectiveRadius', fFullyEffectiveRadius); + PSC.SetFloatParameter('DamageRadius', fDamageRadius); + PSC.SetFloatParameter('FullyEffectiveRadiusUU', fFullyEffectiveRadiusUU); + PSC.SetFloatParameter('DamageRadiusUU', fDamageRadiusUU); + } + J++; + // [Loop Continue] + goto J0x418; + } + } + UpdateDecalScale(Fx, r_fRadiusScale); + I++; + // [Loop Continue] + goto J0x3C0; + } + } + //return; +} + +defaultproperties +{ + // Reference: TgStaticMeshComponent'TgGame.Default__TgDeploy_Bomb.CountdownIndicator' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CountdownIndicator' + begin object name="CountdownIndicator" class=TgGame.TgStaticMeshComponent + Materials=/* Array type was not detected. */ + ReplacementPrimitive=none + DepthPriorityGroup=ESceneDepthPriorityGroup.SDPG_Foreground + AbsoluteRotation=true + Translation=(X=0.0000000,Y=0.0000000,Z=80.0000000) + Scale3D=(X=0.2000000,Y=0.2000000,Z=0.2000000) + end object + m_CountdownIndicator=CountdownIndicator + r_fRadiusScale=1.0000000 + m_bFireOnDeploy=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Bomb.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgDeploy_Bomb.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + ReplacementPrimitive=none + CollideActors=true + BlockZeroExtent=false + end object + Components[1]=CollisionCylinder + Components[2]=CountdownIndicator + bCollideActors=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_BombKingStickyBomb.uc b/exported/TgGame/Classes/TgDeploy_BombKingStickyBomb.uc new file mode 100755 index 00000000..c8e0928b --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_BombKingStickyBomb.uc @@ -0,0 +1,649 @@ +class TgDeploy_BombKingStickyBomb extends TgDeployable + native(ChampBombKing) + notplaceable + hidecategories(Navigation); + +var bool r_bDetonated; +var bool c_bSuppressExplosion; +var repnotify bool r_bShouldDetach; +var repnotify TgPawn_Character r_StuckPlayer; +var name m_StuckSocket; +var TgPawn_Character m_CachedPlayer; +var repnotify Vector r_HitNormal; +var float m_fCachedCollisionRadius; +var float m_fCachedCollisionHeight; +var TgSpecialFx m_GetStuckFx; +var TgSpecialFx m_StickOtherFx; +var TgPawn_LanePusherBase r_StuckCart; +var Rotator r_StuckRotation; +var Vector r_CartOffset; +var TgDeployable r_StuckGeometry; +var repnotify int r_nOriginalProjectileID; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_CartOffset, r_HitNormal, + r_StuckCart, r_StuckGeometry, + r_StuckPlayer, r_StuckRotation, + r_bDetonated, r_bShouldDetach; + + // Pos:0x020 + if((int(Role) == int(ROLE_Authority)) && bNetInitial) + r_nOriginalProjectileID; +} + +simulated event ReplicatedEvent(name VarName) +{ + local Vector X, Y, Z, newY, newZ; + + local editinline CylinderComponent Col, otherCol; + + // End:0x31 + if(VarName == 'r_bShouldDetach') + { + // End:0x2E + if(r_bShouldDetach) + { + DetachFromPlayer(); + } + } + else + { + // End:0x10A + if(VarName == 'r_HitNormal') + { + GetAxes(Rotation, X, Y, Z); + newZ = r_HitNormal Cross (Z Cross r_HitNormal); + newZ = Normal(newZ); + newY = newZ Cross r_HitNormal; + newY = Normal(newY); + SetRotation(OrthoRotation(r_HitNormal, newY, newZ)); + } + else + { + // End:0x29A + if(VarName == 'r_StuckPlayer') + { + Check1PHide(); + // End:0x297 + if(r_StuckPlayer != none) + { + // End:0x283 + if(CollisionComponent != none) + { + Col = CylinderComponent(CollisionComponent); + otherCol = CylinderComponent(r_StuckPlayer.CollisionComponent); + // End:0x261 + if((Col != none) && otherCol != none) + { + m_fCachedCollisionRadius = Col.CollisionRadius; + m_fCachedCollisionHeight = Col.CollisionHeight; + Col.SetCylinderSize(otherCol.CollisionRadius, otherCol.CollisionHeight); + } + CollisionComponent.SetAbsolute(true, true, true); + } + StickToPlayerSocket(); + CheckHideHUDOverlay(); + } + } + else + { + // End:0x2C8 + if(VarName == 'r_DRI') + { + CheckHideHUDOverlay(); + HideSpawningProjectile(); + } + else + { + // End:0x2E9 + if(VarName == 'r_nOriginalProjectileID') + { + HideSpawningProjectile(); + } + } + } + } + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated event HideSpawningProjectile() +{ + local TgPawn_BombKing bombKingOwner; + + // End:0x11 + if(r_nOriginalProjectileID <= 0) + { + return; + } + // End:0x23 + if((GetDeployableUniqueId()) <= 0) + { + return; + } + bombKingOwner = TgPawn_BombKing(Instigator); + // End:0x80 + if(bombKingOwner != none) + { + bombKingOwner.SpecialHideStickyBomb(r_nOriginalProjectileID, GetDeployableUniqueId()); + } + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + local bool allBombsRemoved; + local Vector vRotation; + local TgSpecialFx VFX; + local int I; + + super.DestroyIt(bSkipFx); + // End:0x181 + if(!c_bSuppressExplosion) + { + // End:0x11C + if(r_bDetonated) + { + // End:0x119 + if(m_DestroyedMesh != none) + { + vRotation = Normal(Vector(Rotation)); + m_DestroyedMesh.FxActivateIndependant('BombKingStickyExplosion', 0, Location, vRotation); + VFX = TgSpecialFx(m_DestroyedMesh.FxGet('BombKingStickyExplosion', 0)); + // End:0x119 + if(VFX != none) + { + VFX.SpawnDecalAt(Location, -vRotation); + } + } + } + else + { + // End:0x181 + if(m_DestroyedMesh != none) + { + vRotation = Normal(Vector(Rotation)); + m_DestroyedMesh.FxActivateIndependant('DeployableFizzle', 0, Location, vRotation); + } + } + } + // End:0x1B0 + if(c_Mesh != none) + { + c_Mesh.SetHidden(true); + } + // End:0x3CA + if(r_StuckPlayer != none) + { + I = 0; + J0x1CA: + + // End:0x264 [Loop If] + if(I < 6) + { + // End:0x256 + if(r_StuckPlayer.r_StuckBombs[I] == self) + { + r_StuckPlayer.r_StuckBombs[I] = none; + r_StuckPlayer.bNetDirty = true; + // [Explicit Break] + goto J0x264; + } + I++; + // [Loop Continue] + goto J0x1CA; + } + J0x264: + + allBombsRemoved = true; + I = 0; + J0x27B: + + // End:0x31B [Loop If] + if(I < 6) + { + // End:0x30D + if((r_StuckPlayer.r_StuckBombs[I] != none) && !r_StuckPlayer.r_StuckBombs[I].m_bInDestroyedState) + { + allBombsRemoved = false; + // [Explicit Break] + goto J0x31B; + } + I++; + // [Loop Continue] + goto J0x27B; + } + J0x31B: + + // End:0x39F + if(allBombsRemoved) + { + // End:0x39F + if((r_Owner != none) && r_Owner.GetCurrentFire() != none) + { + r_Owner.GetCurrentFire().RemoveHitSpecial(r_StuckPlayer, true); + } + } + // End:0x3CA + if(int(Role) == int(ROLE_Authority)) + { + r_StuckPlayer = none; + bNetDirty = true; + } + } + // End:0x406 + if((r_StuckCart != none) && int(Role) == int(ROLE_Authority)) + { + r_StuckCart = none; + bNetDirty = true; + } + // End:0x442 + if((r_StuckGeometry != none) && int(Role) == int(ROLE_Authority)) + { + r_StuckGeometry = none; + bNetDirty = true; + } + //return; +} + +event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + // End:0x1B + if(r_StuckPlayer == DamageCauser) + { + return; + } + // End:0x37 + if(r_StuckPlayer != none) + { + DetachFromPlayer(); + } + else + { + super.TakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + } + //return; +} + +function DetachTimer() +{ + // End:0x19 + if(r_StuckPlayer != none) + { + DetachFromPlayer(); + } + //return; +} + +simulated event DetachFromPlayer() +{ + local editinline CylinderComponent Col; + local int I; + local bool allBombsRemoved; + + // End:0x208 + if(r_StuckPlayer != none) + { + I = 0; + J0x1A: + + // End:0x93 [Loop If] + if(I < 6) + { + // End:0x85 + if(r_StuckPlayer.r_StuckBombs[I] == self) + { + r_StuckPlayer.r_StuckBombs[I] = none; + // [Explicit Break] + goto J0x93; + } + I++; + // [Loop Continue] + goto J0x1A; + } + J0x93: + + allBombsRemoved = true; + I = 0; + J0xAA: + + // End:0x14A [Loop If] + if(I < 6) + { + // End:0x13C + if((r_StuckPlayer.r_StuckBombs[I] != none) && !r_StuckPlayer.r_StuckBombs[I].m_bInDestroyedState) + { + allBombsRemoved = false; + // [Explicit Break] + goto J0x14A; + } + I++; + // [Loop Continue] + goto J0xAA; + } + J0x14A: + + // End:0x1CE + if(allBombsRemoved) + { + // End:0x1CE + if((r_Owner != none) && r_Owner.GetCurrentFire() != none) + { + r_Owner.GetCurrentFire().RemoveHitSpecial(r_StuckPlayer, true); + } + } + // End:0x205 + if(int(Role) == int(ROLE_Authority)) + { + r_StuckPlayer = none; + r_bShouldDetach = true; + bNetDirty = true; + } + } + else + { + // End:0x24E + if(r_StuckGeometry != none) + { + // End:0x24E + if(int(Role) == int(ROLE_Authority)) + { + r_StuckGeometry = none; + r_bShouldDetach = true; + bNetDirty = true; + } + } + } + SetPhysics(2); + SetBase(none); + // End:0x313 + if(CollisionComponent != none) + { + Col = CylinderComponent(CollisionComponent); + // End:0x2C5 + if(Col != none) + { + Col.SetCylinderSize(m_fCachedCollisionRadius, m_fCachedCollisionHeight); + } + CollisionComponent.SetAbsolute(false, false, false); + CollisionComponent.SetTranslation(vect(0.0000000, 0.0000000, 0.0000000)); + } + //return; +} + +simulated event Check1PHide() +{ + local TgPlayerController TgPC; + + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x1A9 + if(r_StuckPlayer != none) + { + // End:0x10B + if(((TgPC != none) && TgPC.GetTgPawn() != none) && TgPC.GetTgPawn() == r_StuckPlayer) + { + SetHidden(true); + // End:0x108 + if(m_GetStuckFx != none) + { + m_GetStuckFx.c_Owner = TgPC.GetTgPawn(); + m_GetStuckFx.PlaySound(); + } + } + else + { + // End:0x1A6 + if((m_StickOtherFx != none) && Instigator == TgPC.GetTgPawn()) + { + m_StickOtherFx.c_Owner = TgPC.GetTgPawn(); + m_StickOtherFx.PlaySound(); + } + } + } + else + { + // End:0x219 + if(((TgPC != none) && TgPC.GetTgPawn() != none) && TgPC.GetTgPawn() == m_CachedPlayer) + { + SetHidden(false); + } + } + m_CachedPlayer = r_StuckPlayer; + //return; +} + +simulated event StickToPlayerSocket() +{ + local name SocketName, currentName; + local Vector SocketLocation, CurrentLocation; + local array socketUsed; + local int I, J, oldestIndex, numBombs; + + // End:0x4DF + if(r_StuckPlayer != none) + { + oldestIndex = -1; + numBombs = 0; + I = 0; + J0x34: + + // End:0x132 [Loop If] + if(I < 6) + { + // End:0x124 + if(r_StuckPlayer.r_StuckBombs[I] != none) + { + numBombs++; + // End:0x124 + if((oldestIndex == -1) || r_StuckPlayer.r_StuckBombs[oldestIndex].m_TimeCreated > r_StuckPlayer.r_StuckBombs[I].m_TimeCreated) + { + oldestIndex = I; + } + } + I++; + // [Loop Continue] + goto J0x34; + } + // End:0x16C + if(numBombs == 6) + { + r_StuckPlayer.r_StuckBombs[oldestIndex] = none; + } + // End:0x4CD + if(r_StuckPlayer.Mesh != none) + { + I = 0; + J0x19B: + + // End:0x2E6 [Loop If] + if(I < 6) + { + socketUsed[I] = false; + J = 0; + J0x1CB: + + // End:0x2D8 [Loop If] + if(J < 6) + { + // End:0x2CA + if(((r_StuckPlayer.r_StuckBombs[J] != none) && !r_StuckPlayer.r_StuckBombs[J].m_bInDestroyedState) && r_StuckPlayer.r_StuckBombs[J].m_StuckSocket == name("CSO_FX_Sticky_0" $ string(I + 1))) + { + socketUsed[I] = true; + } + J++; + // [Loop Continue] + goto J0x1CB; + } + I++; + // [Loop Continue] + goto J0x19B; + } + I = 0; + J0x2F1: + + // End:0x44E [Loop If] + if(I < 6) + { + currentName = name("CSO_FX_Sticky_0" $ string(I + 1)); + // End:0x440 + if(!socketUsed[I]) + { + // End:0x404 + if(r_StuckPlayer.Mesh.GetSocketWorldLocationAndRotation(currentName, CurrentLocation)) + { + // End:0x401 + if((SocketName == 'None') || VSizeSq(Location - CurrentLocation) < VSizeSq(Location - SocketLocation)) + { + SocketName = currentName; + SocketLocation = CurrentLocation; + } + } + else + { + // End:0x440 + if(r_StuckPlayer.Mesh.SkeletalMesh != none) + { + } + } + } + I++; + // [Loop Continue] + goto J0x2F1; + } + // End:0x4BB + if(SocketName != 'None') + { + SetBase(r_StuckPlayer, vect(0.0000000, 0.0000000, 1.0000000), r_StuckPlayer.Mesh, SocketName); + m_StuckSocket = SocketName; + } + else + { + SetBase(r_StuckPlayer); + } + } + else + { + SetBase(r_StuckPlayer); + } + } + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + super.Tick(DeltaSeconds); + // End:0x6E + if(r_StuckPlayer != none) + { + // End:0x6E + if(CollisionComponent != none) + { + CollisionComponent.SetTranslation(r_StuckPlayer.Location); + } + } + //return; +} + +event Landed(Vector HitNormal, Actor FloorActor) +{ + local Vector X, Y, Z, newY, newZ; + + local editinline CylinderComponent collisionComp; + + super(Actor).Landed(HitNormal, FloorActor); + GetAxes(Rotation, X, Y, Z); + newZ = HitNormal Cross (Z Cross HitNormal); + newZ = Normal(newZ); + newY = newZ Cross HitNormal; + newY = Normal(newY); + SetRotation(OrthoRotation(HitNormal, newY, newZ)); + collisionComp = CylinderComponent(CollisionComponent); + // End:0x163 + if((collisionComp != none) && c_Mesh != none) + { + c_Mesh.SetTranslation(vect(-1.0000000, 0.0000000, 0.0000000) * collisionComp.CollisionHeight); + } + r_HitNormal = HitNormal; + r_bShouldDetach = false; + bNetDirty = true; + // End:0x1B5 + if(TgPawn_LanePusher(FloorActor) != none) + { + SetBase(FloorActor); + } + //return; +} + +event ExplodeOnShield() +{ + InstantFireDeployable(); + r_bDetonated = true; + bNetDirty = true; + DestroyIt(); + //return; +} + +function InstantFireDeployable() +{ + // End:0x30 + if(r_StuckPlayer != none) + { + SetLocation(r_StuckPlayer.Location); + } + super.InstantFireDeployable(); + //return; +} + +simulated function CheckHideHUDOverlay() +{ + local TgPlayerController TgPC; + + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x8D + if(((TgPC != none) && TgPC.GetTgPawn() != none) && TgPC.GetTgPawn() == r_StuckPlayer) + { + SetHUDOverlayDisplayMask(0); + } + //return; +} + +defaultproperties +{ + m_bFireOnDeploy=false + m_bAdjustMeshToGround=false + m_bDeviceUsedIsHandDevice=true + m_InitHUDOverlayIcon=DeployableOverlayIcon.DOI_STICKY_BOMB + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_BombKingStickyBomb.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_nInitHUDOverlayDisplayMask=4 + m_InitHUDOverlayEnemyViewDist=800.0000000 + m_GameplayCurves=TgGameplayCurves'GP_BombKing.DeviceStickyBomb' + Components[0]=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgDeploy_BombKingStickyBomb.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + ReplacementPrimitive=none + CollideActors=true + end object + Components[1]=CollisionCylinder + // Reference: PComPositionHistoryComponent'TgGame.Default__TgDeploy_BombKingStickyBomb.PositionHistoryComponent' + begin object name="PositionHistoryComponent" class=PlatformCommon.PComPositionHistoryComponent + end object + Components[2]=PositionHistoryComponent + bHardAttach=true + bIgnoreBaseRotation=false + bCollideActors=true + bCollideWorld=true + bProjTarget=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_DarkConvergence.uc b/exported/TgGame/Classes/TgDeploy_DarkConvergence.uc new file mode 100755 index 00000000..0658b9e5 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_DarkConvergence.uc @@ -0,0 +1,375 @@ +class TgDeploy_DarkConvergence extends TgDeploy_Bomb + native(ChampOracle) + placeable + hidecategories(Navigation); + +const MAX_DARK_CONVERGENCE_TARGETS = 5; +const DARK_CONVERGENCE_PULL_BEAM_FX_ID = 7681; + +struct native PullData +{ + var TgPawn_Character Character; + var Vector SourceLocation; + var Vector TargetLocation; + + structdefaultproperties + { + Character=none + SourceLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + TargetLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +var array m_PullDataList; +var repnotify TgPawn_Character r_PulledTargets[5]; +var repnotify Vector r_PulledTargetLocations[5]; +var array c_Beams; +var float c_fHideBeamsTimer; +var float s_fValidationRayDistance; +var float s_fValidationRayRadius; +var float s_fValidationRayHeight; +var float s_fValidationMaxFloorOffset; +var float s_fVerticalTargetLocationOffset; + +replication +{ + // Pos:0x000 + if(((int(Role) == int(ROLE_Authority)) && bNetDirty) && (!bNetOwner || bDemoRecording) || bNetTimelapse) + r_PulledTargetLocations, r_PulledTargets; +} + +simulated function float GetPullDelay() +{ + // End:0x2F + if(m_FireMode != none) + { + return m_FireMode.GetCustomValue2(); + } + return 0.4000000; + //return ReturnValue; +} + +simulated function float GetPullTime() +{ + // End:0x2F + if(m_FireMode != none) + { + return m_FireMode.GetCustomValue1(); + } + return 0.5000000; + //return ReturnValue; +} + +simulated event ReplicatedEvent(name VarName) +{ + switch(VarName) + { + // End:0x36 + case 'r_PulledTargets': + ApplyForcedView(); + CreateBeams(); + // End:0x52 + break; + // End:0x4F + case 'r_PulledTargetLocations': + UpdateBeams(); + // End:0x52 + break; + // End:0xFFFF + default: + break; + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated function ApplyForcedView() +{ + local int I; + + // End:0xBF + if(m_FireMode != none) + { + I = 0; + J0x1A: + + // End:0xBF [Loop If] + if(I < 5) + { + // End:0xB1 + if(r_PulledTargets[I] != none) + { + r_PulledTargets[I].AddForcedViewTarget(self, GetPullDelay(), (GetPullDelay()) + 0.1000000, self, r_PulledTargets[I].EyeHeight); + } + I++; + // [Loop Continue] + goto J0x1A; + } + } + //return; +} + +simulated function CreateBeams() +{ + local int I; + local TgBeamHelper Beam; + + // End:0x10F + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + c_Beams.Length = 0; + I = 0; + J0x40: + + // End:0x105 [Loop If] + if(I < 5) + { + Beam = none; + // End:0xE1 + if(r_PulledTargets[I] != none) + { + Beam = Class'TgGame.TgBeamHelper'.static.Create(7681); + Beam.AttachToOwner(self); + Beam.Activate(); + } + c_Beams.AddItem(Beam); + I++; + // [Loop Continue] + goto J0x40; + } + UpdateBeams(); + } + //return; +} + +simulated function HideBeams() +{ + local int I; + + // End:0xB2 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + I = 0; + J0x34: + + // End:0xB2 [Loop If] + if(I < c_Beams.Length) + { + // End:0xA4 + if(c_Beams[I] != none) + { + c_Beams[I].Deactivate(true); + c_Beams[I] = none; + } + I++; + // [Loop Continue] + goto J0x34; + } + } + //return; +} + +simulated function UpdateBeams() +{ + local int Idx; + local Vector vDirToCenter, vDirToTarget; + + // End:0x26F + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + Idx = 0; + J0x34: + + // End:0x26F [Loop If] + if(Idx < c_Beams.Length) + { + // End:0x261 + if((c_Beams[Idx] != none) && r_PulledTargets[Idx] != none) + { + c_Beams[Idx].SetEndPoint(r_PulledTargets[Idx].Location); + vDirToTarget.X = r_PulledTargetLocations[Idx].X; + vDirToTarget.Y = r_PulledTargetLocations[Idx].Y; + vDirToTarget.Z = r_PulledTargets[Idx].Location.Z; + vDirToTarget = Normal(r_PulledTargetLocations[Idx] - Location) * 10.0000000; + vDirToCenter = Normal(Location - r_PulledTargets[Idx].Location) * 5.0000000; + c_Beams[Idx].SetTangents(vDirToTarget, vDirToCenter); + } + Idx++; + // [Loop Continue] + goto J0x34; + } + } + //return; +} + +simulated function ApplyHit(out array ImpactList) +{ + local int Idx; + local TgPawn TgP; + local TgPawn_Character HitChar; + local PullData Data; + local int NumPulledTargets; + + TgP = TgPawn(Instigator); + // End:0x2D + if(TgP == none) + { + return; + } + m_PullDataList.Length = 0; + // End:0x4CB + if(m_FireMode != none) + { + Idx = 0; + J0x53: + + // End:0x2C2 [Loop If] + if((Idx < ImpactList.Length) && Idx < 5) + { + // End:0x2B4 + if(ImpactList[Idx].HitActor != none) + { + HitChar = TgPawn_Character(ImpactList[Idx].HitActor); + // End:0x2B4 + if(((((((HitChar != none) && HitChar.CanApplyEffects()) && HitChar.GetPropCurrentValue(132) <= 0.0000000) && HitChar.GetPropCurrentValue(60) <= 0.0000000) && HitChar.GetPropCurrentValue(61) <= 0.0000000) && !HitChar.IsDebuffImmune()) && HitChar.WillHitSuccessfully(Instigator, ImpactList[Idx])) + { + Data.Character = HitChar; + Data.SourceLocation = HitChar.Location; + Data.TargetLocation = HitChar.Location; + m_PullDataList.AddItem(Data); + } + } + Idx++; + // [Loop Continue] + goto J0x53; + } + DetermineTeleportLocations(); + NumPulledTargets = 0; + Idx = 0; + J0x2E2: + + // End:0x336 [Loop If] + if(Idx < 5) + { + r_PulledTargets[Idx] = none; + r_PulledTargetLocations[Idx] = vect(0.0000000, 0.0000000, 0.0000000); + Idx++; + // [Loop Continue] + goto J0x2E2; + } + bNetDirty = true; + Idx = 0; + J0x34D: + + // End:0x476 [Loop If] + if(Idx < m_PullDataList.Length) + { + // End:0x468 + if(m_PullDataList[Idx].Character != none) + { + m_FireMode.ApplyHitSpecial(m_PullDataList[Idx].Character); + // End:0x468 + if(NumPulledTargets < 5) + { + r_PulledTargets[NumPulledTargets] = m_PullDataList[Idx].Character; + r_PulledTargetLocations[NumPulledTargets] = m_PullDataList[Idx].TargetLocation; + NumPulledTargets++; + } + } + Idx++; + // [Loop Continue] + goto J0x34D; + } + ApplyForcedView(); + // End:0x4B3 + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + CreateBeams(); + } + SetTimer(GetPullDelay(), false, 'StartPull'); + } + //return; +} + +function StartPull() +{ + local int Idx; + + Idx = 0; + J0x0B: + + // End:0xCD [Loop If] + if(Idx < m_PullDataList.Length) + { + // End:0xBF + if(m_PullDataList[Idx].Character != none) + { + m_PullDataList[Idx].Character.StartPhysTween(m_PullDataList[Idx].TargetLocation, GetPullTime(), 4, false, true); + } + Idx++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +// Export UTgDeploy_DarkConvergence::execDetermineTeleportLocations(FFrame&, void* const) +native simulated function DetermineTeleportLocations(); + +simulated function Tick(float DeltaSeconds) +{ + super.Tick(DeltaSeconds); + // End:0x8F + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && c_fHideBeamsTimer > 0.0000000) + { + c_fHideBeamsTimer -= DeltaSeconds; + // End:0x85 + if(c_fHideBeamsTimer <= 0.0000000) + { + HideBeams(); + } + else + { + UpdateBeams(); + } + } + //return; +} + +defaultproperties +{ + c_fHideBeamsTimer=2.0000000 + s_fValidationRayDistance=15.0000000 + s_fValidationRayRadius=1.5000000 + s_fValidationRayHeight=6.0000000 + s_fValidationMaxFloorOffset=9.0000000 + s_fVerticalTargetLocationOffset=0.1250000 + // Reference: TgStaticMeshComponent'TgGame.Default__TgDeploy_DarkConvergence.CountdownIndicator' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CountdownIndicator' + // Archetype: TgStaticMeshComponent'TgGame.Default__TgDeploy_Bomb.CountdownIndicator' + begin object name="CountdownIndicator" + ReplacementPrimitive=none + end object + m_CountdownIndicator=CountdownIndicator + m_InitHUDOverlayIcon=DeployableOverlayIcon.DOI_DARK_CONVERGENCE + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_DarkConvergence.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Bomb.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_nInitHUDOverlayDisplayMask=3072 + Components[0]=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgDeploy_DarkConvergence.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgDeploy_Bomb.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + Components[1]=CollisionCylinder + Components[2]=CountdownIndicator + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_DemonTeleport.uc b/exported/TgGame/Classes/TgDeploy_DemonTeleport.uc new file mode 100755 index 00000000..934ee596 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_DemonTeleport.uc @@ -0,0 +1,29 @@ +class TgDeploy_DemonTeleport extends TgDeployable + native(ChampDemon) + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_DemonTeleport.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_nInitHUDOverlayDisplayMask=1 + Components[0]=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgDeploy_DemonTeleport.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + ReplacementPrimitive=none + BlockZeroExtent=false + BlockNonZeroExtent=false + end object + Components[1]=CollisionCylinder + bCollideActors=true + bCollideWorld=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_DeployableLinked.uc b/exported/TgGame/Classes/TgDeploy_DeployableLinked.uc new file mode 100755 index 00000000..c4b2a870 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_DeployableLinked.uc @@ -0,0 +1,18 @@ +class TgDeploy_DeployableLinked extends TgDeploy_MatchParentFireMode + native(Deployable) + placeable + hidecategories(Navigation); + +var TgDeployable m_ParentDeployable; + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_DeployableLinked.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_MatchParentFireMode.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_DeployableLinkedEffectField.uc b/exported/TgGame/Classes/TgDeploy_DeployableLinkedEffectField.uc new file mode 100755 index 00000000..1b8b09ed --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_DeployableLinkedEffectField.uc @@ -0,0 +1,18 @@ +class TgDeploy_DeployableLinkedEffectField extends TgDeploy_EffectField + native(Deployable) + placeable + hidecategories(Navigation); + +var TgDeployable m_ParentDeployable; + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_DeployableLinkedEffectField.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_EffectField.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_DominanceFlag.uc b/exported/TgGame/Classes/TgDeploy_DominanceFlag.uc new file mode 100755 index 00000000..b5fdb5a9 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_DominanceFlag.uc @@ -0,0 +1,99 @@ +class TgDeploy_DominanceFlag extends TgDeploy_EffectField + native(ChampFlak) + placeable + hidecategories(Navigation); + +var repnotify float r_fRadiusForFX; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_fRadiusForFX; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x21 + if(VarName == 'r_fRadiusForFX') + { + ScaleAbilityFX(); + } + super(TgDeployable).ReplicatedEvent(VarName); + //return; +} + +simulated event ScaleAbilityFX() +{ + local array FxList; + local TgSpecialFx Fx; + local editinline ParticleSystemComponent PSC; + local float fDamageRadius, fDamageRadiusUU; + local int I, J; + + // End:0x1EF + if(c_Mesh != none) + { + fDamageRadius = r_fRadiusForFX / float(16); + fDamageRadiusUU = r_fRadiusForFX; + FxList = c_Mesh.FxGetAll('OnWhenDeployed', 0); + I = 0; + J0x7C: + + // End:0x1EF [Loop If] + if(I < FxList.Length) + { + Fx = TgSpecialFx(FxList[I]); + // End:0x1E1 + if(Fx != none) + { + J = 0; + J0xD4: + + // End:0x1C5 [Loop If] + if(J < Fx.c_PSCList.Length) + { + PSC = Fx.c_PSCList[J].c_PSC; + // End:0x1B7 + if(PSC != none) + { + PSC.SetFloatParameter('DamageRadius', fDamageRadius); + PSC.SetFloatParameter('DamageRadiusUU', fDamageRadiusUU); + } + J++; + // [Loop Continue] + goto J0xD4; + } + UpdateDecalScale(Fx, r_fRadiusScale); + } + I++; + // [Loop Continue] + goto J0x7C; + } + } + //return; +} + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_DominanceFlag.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_EffectField.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgDeploy_DominanceFlag.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + ReplacementPrimitive=none + CollideActors=true + end object + Components[1]=CollisionCylinder + bCollideActors=true + bCollideWorld=true + bProjTarget=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_DreadSerpent.uc b/exported/TgGame/Classes/TgDeploy_DreadSerpent.uc new file mode 100755 index 00000000..eb3b9e39 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_DreadSerpent.uc @@ -0,0 +1,39 @@ +class TgDeploy_DreadSerpent extends TgDeploy_EffectField + placeable + hidecategories(Navigation); + +var array s_HitActors; + +function ProxyTouchHit(Actor Other) +{ + local ImpactInfo Impact; + + // End:0x26E + if(((m_FireMode != none) && m_FireMode.IsValidTarget(Other)) && m_FireMode.IsBlockedByBlocker(self, Other, self.Location + vect(0.0000000, 0.0000000, 5.0000000), Other.Location) == none) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = m_FireMode; + Impact.HitActor = Other; + Impact.HitLocation = Other.Location; + Impact.HitNormal = Normal(self.Location - Other.Location); + Impact.StartTrace = self.Location + vect(0.0000000, 0.0000000, 5.0000000); + Impact.RayDir = Normal(Other.Location - self.Location); + m_FireMode.ApplyHit(Impact, self); + } + //return; +} + +defaultproperties +{ + m_fEffectFieldHeight=500.0000000 + m_bOnlyHitOnce=true + m_bAdjustMeshToGround=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_DreadSerpent.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_EffectField.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_EffectAura.uc b/exported/TgGame/Classes/TgDeploy_EffectAura.uc new file mode 100755 index 00000000..e8778b57 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_EffectAura.uc @@ -0,0 +1,205 @@ +class TgDeploy_EffectAura extends TgDeploy_MatchParentFireMode + native(Deployable) + placeable + hidecategories(Navigation); + +var repnotify float r_fRadiusScale; +var array m_TouchingActors; +var array m_AffectedActors; +var float m_fLastBlockedByBlockersTime; +var float m_fMinBlockedByBlockersTime; +var array m_BlockedActors; +var TgCollisionProxy_Cylinder m_CollisionProxy; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_fRadiusScale; +} + +// Export UTgDeploy_EffectAura::execApplyEffects(FFrame&, void* const) +native function ApplyEffects(Actor Target); + +// Export UTgDeploy_EffectAura::execRemoveEffects(FFrame&, void* const) +native function RemoveEffects(Actor Target); + +// Export UTgDeploy_EffectAura::execGetDistanceToTarget(FFrame&, void* const) +native function float GetDistanceToTarget(Actor Target); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x21 + if(VarName == 'r_fRadiusScale') + { + ScaleFX(); + } + super(TgDeployable).ReplicatedEvent(VarName); + //return; +} + +function OnProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + // End:0x0F + if(m_bInDestroyedState) + { + return; + } + // End:0xCB + if(m_TouchingActors.Find(Other) == -1) + { + // End:0xCB + if((m_FireMode != none) && m_FireMode.IsValidTarget(Other)) + { + m_TouchingActors.AddItem(Other); + // End:0xCB + if(m_FireMode.IsBlockedByBlocker(self, Other) == none) + { + m_BlockedActors.AddItem(Other); + } + } + } + //return; +} + +function OnProxyUnTouch(Actor Other) +{ + // End:0x36 + if(m_TouchingActors.Find(Other) != -1) + { + m_TouchingActors.RemoveItem(Other); + } + // End:0x7F + if(m_AffectedActors.Find(Other) != -1) + { + RemoveEffects(Other); + m_AffectedActors.RemoveItem(Other); + } + //return; +} + +simulated event float GetCurrentRadius() +{ + // End:0x69 + if((m_CollisionProxy != none) && m_CollisionProxy.m_CollisionCylinder != none) + { + return m_CollisionProxy.m_CollisionCylinder.CollisionRadius; + } + return 0.0000000; + //return ReturnValue; +} + +simulated event ClearAllTouched() +{ + J0x00: + // End:0x28 [Loop If] + if(m_AffectedActors.Length > 0) + { + OnProxyUnTouch(m_AffectedActors[0]); + // [Loop Continue] + goto J0x00; + } + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + super(TgDeployable).DestroyIt(bSkipFx); + // End:0x5E + if(m_bInDestroyedState) + { + ClearAllTouched(); + // End:0x5E + if(m_CollisionProxy != none) + { + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + } + //return; +} + +simulated event Destroyed() +{ + ClearAllTouched(); + // End:0x3C + if(m_CollisionProxy != none) + { + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + super(TgDeployable).Destroyed(); + //return; +} + +simulated event SpawnCollisionProxy() +{ + local float Radius; + + // End:0x1E3 + if((int(Role) == int(ROLE_Authority)) && m_FireMode != none) + { + // End:0x61 + if(m_CollisionProxy != none) + { + ClearAllTouched(); + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + m_CollisionProxy = Spawn(Class'TgGame.TgCollisionProxy_Cylinder', self,, self.Location,,, true); + // End:0x1E3 + if(m_CollisionProxy != none) + { + m_CollisionProxy.SetBase(self); + m_CollisionProxy.__ProxyTouch__Delegate = OnProxyTouch; + m_CollisionProxy.__ProxyUnTouch__Delegate = OnProxyUnTouch; + m_CollisionProxy.DelegatesUpdated(); + Radius = m_FireMode.GetDamageRadius() * r_fRadiusScale; + m_CollisionProxy.m_CollisionCylinder.SetCylinderSize(Radius, 2.0000000 * Radius); + m_CollisionProxy.DelegatesUpdated(); + } + } + //return; +} + +event ScaleCollisionProxy() +{ + local float Radius; + + // End:0x1C + if(m_CollisionProxy == none) + { + SpawnCollisionProxy(); + } + else + { + // End:0xE1 + if((int(Role) == int(ROLE_Authority)) && m_FireMode != none) + { + Radius = m_FireMode.GetDamageRadius() * r_fRadiusScale; + m_CollisionProxy.m_CollisionCylinder.SetCylinderSize(Radius, 2.0000000 * Radius); + m_CollisionProxy.DelegatesUpdated(); + } + } + //return; +} + +simulated event ScaleFX() +{ + //return; +} + +defaultproperties +{ + r_fRadiusScale=1.0000000 + m_fLastBlockedByBlockersTime=-0.2500000 + m_fMinBlockedByBlockersTime=0.2500000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_EffectAura.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_MatchParentFireMode.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_EffectField.uc b/exported/TgGame/Classes/TgDeploy_EffectField.uc new file mode 100755 index 00000000..e995e125 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_EffectField.uc @@ -0,0 +1,240 @@ +class TgDeploy_EffectField extends TgDeploy_MatchParentFireMode + native(Deployable) + placeable + hidecategories(Navigation); + +var float m_fEffectFieldHeight; +var repnotify float r_fRadiusScale; +var array m_TouchingPawns; +var array m_HitActors; +var bool m_bOnlyHitOnce; +var TgCollisionProxy_Cylinder m_CollisionProxy; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_fRadiusScale; +} + +function OnProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + // End:0x0F + if(m_bInDestroyedState) + { + return; + } + // End:0xDE + if(m_TouchingPawns.Find(Other) == -1) + { + // End:0x60 + if(m_bOnlyHitOnce && m_HitActors.Find(Other) != -1) + { + return; + } + // End:0xDE + if((m_FireMode != none) && m_FireMode.IsValidTarget(Other)) + { + ProxyTouchHit(Other); + m_TouchingPawns.AddItem(Other); + m_HitActors.AddItem(Other); + } + } + //return; +} + +function OnProxyUnTouch(Actor Other) +{ + // End:0x49 + if(m_TouchingPawns.Find(Other) != -1) + { + ProxyUnTouchHit(Other); + m_TouchingPawns.RemoveItem(Other); + } + //return; +} + +function ProxyTouchHit(Actor Other) +{ + local TgPawn PawnOwner; + local ImpactInfo Impact; + + // End:0x131 + if((m_FireMode != none) && m_FireMode.IsValidTarget(Other)) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = m_FireMode; + Impact.HitActor = Other; + m_FireMode.ApplyHitSpecial(Other, Impact); + PawnOwner = TgPawn(Instigator); + // End:0x131 + if(PawnOwner != none) + { + PawnOwner.DeployableOnApplyEffect(self, Other); + } + } + //return; +} + +function ProxyUnTouchHit(Actor Other) +{ + local TgPawn PawnOwner; + + // End:0x8E + if(m_FireMode != none) + { + m_FireMode.RemoveHitSpecial(Other, true); + PawnOwner = TgPawn(Instigator); + // End:0x8E + if(PawnOwner != none) + { + PawnOwner.DeployableOnRemoveEffect(self, Other); + } + } + //return; +} + +simulated event float GetCurrentRadius() +{ + // End:0x69 + if((m_CollisionProxy != none) && m_CollisionProxy.m_CollisionCylinder != none) + { + return m_CollisionProxy.m_CollisionCylinder.CollisionRadius; + } + return 0.0000000; + //return ReturnValue; +} + +simulated event ClearAllTouched() +{ + local Actor NextPawn; + + J0x00: + // End:0x80 [Loop If] + if(m_TouchingPawns.Length > 0) + { + NextPawn = m_TouchingPawns[0]; + // End:0x7D + if(NextPawn != none) + { + OnProxyUnTouch(NextPawn); + // End:0x7D + if(m_TouchingPawns.Find(NextPawn) != -1) + { + m_TouchingPawns.RemoveItem(NextPawn); + } + } + // [Loop Continue] + goto J0x00; + } + m_HitActors.Length = 0; + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + super(TgDeployable).DestroyIt(bSkipFx); + // End:0x5E + if(m_bInDestroyedState) + { + ClearAllTouched(); + // End:0x5E + if(m_CollisionProxy != none) + { + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + } + //return; +} + +simulated event Destroyed() +{ + ClearAllTouched(); + // End:0x3C + if(m_CollisionProxy != none) + { + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + super(TgDeployable).Destroyed(); + //return; +} + +simulated event SpawnCollisionProxy() +{ + local TgDeviceFire ownerFireMode; + local float Radius; + + // End:0x1FE + if(r_Owner != none) + { + ownerFireMode = r_Owner.GetCurrentFire(); + // End:0x1FE + if(ownerFireMode != none) + { + // End:0x83 + if(m_CollisionProxy != none) + { + ClearAllTouched(); + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + m_CollisionProxy = Spawn(Class'TgGame.TgCollisionProxy_Cylinder', self,, self.Location,,, true); + // End:0x1FE + if(m_CollisionProxy != none) + { + m_CollisionProxy.SetBase(self); + m_CollisionProxy.__ProxyTouch__Delegate = OnProxyTouch; + m_CollisionProxy.__ProxyUnTouch__Delegate = OnProxyUnTouch; + m_CollisionProxy.DelegatesUpdated(); + Radius = ownerFireMode.GetEffectiveRadius() * r_fRadiusScale; + m_CollisionProxy.m_CollisionCylinder.SetCylinderSize(Radius, m_fEffectFieldHeight); + m_CollisionProxy.DelegatesUpdated(); + } + } + } + //return; +} + +event ScaleCollisionProxy() +{ + local TgDeviceFire ownerFireMode; + local float Radius; + + // End:0x1C + if(m_CollisionProxy == none) + { + SpawnCollisionProxy(); + } + else + { + // End:0xFC + if(r_Owner != none) + { + ownerFireMode = r_Owner.GetCurrentFire(); + // End:0xFC + if(ownerFireMode != none) + { + Radius = ownerFireMode.GetEffectiveRadius() * r_fRadiusScale; + m_CollisionProxy.m_CollisionCylinder.SetCylinderSize(Radius, m_fEffectFieldHeight); + m_CollisionProxy.DelegatesUpdated(); + } + } + } + //return; +} + +defaultproperties +{ + m_fEffectFieldHeight=124.0000000 + r_fRadiusScale=1.0000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_EffectField.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_MatchParentFireMode.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_EffectSpots.uc b/exported/TgGame/Classes/TgDeploy_EffectSpots.uc new file mode 100755 index 00000000..eeb3b77c --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_EffectSpots.uc @@ -0,0 +1,483 @@ +class TgDeploy_EffectSpots extends TgDeploy_MatchParentFireMode + native(Deployable) + placeable + hidecategories(Navigation); + +const MAX_SPOT_POINTS = 100; + +struct native EffectSpotInfo +{ + var bool bIsActive; + var Vector vLocation; + var Rotator rRotation; + var float fRadius; + var float fHeight; + var int nFXIndex; + var int nIntensityLevel; + + structdefaultproperties + { + bIsActive=false + vLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + rRotation=(Pitch=0,Yaw=0,Roll=0) + fRadius=0.0000000 + fHeight=0.0000000 + nFXIndex=0 + nIntensityLevel=0 + } +}; + +struct native EffectSpotTarget +{ + var Actor Target; + var bool bNeedsRefresh; + + structdefaultproperties + { + Target=none + bNeedsRefresh=false + } +}; + +struct native EffectSpotFXInfo +{ + var TgSpecialFx Fx; + var int nFXIndex; + + structdefaultproperties + { + Fx=none + nFXIndex=0 + } +}; + +var repnotify EffectSpotInfo r_EffectSpots[100]; +var int m_nNewSpotIndex; +var TgCollisionProxy_Cylinder m_CollisionProxy; +var float m_fFirstPassRadius; +var array m_TouchingActors; +var array m_AffectedActors; +var bool m_bUsesEffectRefresh; +var float m_fLastRefreshTime; +var float m_fMinRefreshTime; +var EffectSpotFXInfo c_SpotFX[100]; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_EffectSpots; +} + +// Export UTgDeploy_EffectSpots::execApplyEffects(FFrame&, void* const) +native function ApplyEffects(Actor Target); + +// Export UTgDeploy_EffectSpots::execRemoveEffects(FFrame&, void* const) +native function RemoveEffects(Actor Target); + +// Export UTgDeploy_EffectSpots::execInitializeSpecialFX(FFrame&, void* const) +native function InitializeSpecialFX(int spotIndex); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x21 + if(VarName == 'r_EffectSpots') + { + UpdateEffectSpots(); + } + super(TgDeployable).ReplicatedEvent(VarName); + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + local int I; + + super(TgDeployable).Tick(DeltaSeconds); + // End:0x130 + if(((int(Role) == int(ROLE_Authority)) && !m_bInDestroyedState) && m_bUsesEffectRefresh) + { + // End:0x130 + if((m_fLastRefreshTime + m_fMinRefreshTime) <= WorldInfo.TimeSeconds) + { + I = 0; + J0x89: + + // End:0x108 [Loop If] + if(I < m_AffectedActors.Length) + { + m_AffectedActors[I].bNeedsRefresh = true; + ApplyEffects(m_AffectedActors[I].Target); + ++I; + // [Loop Continue] + goto J0x89; + } + m_fLastRefreshTime = WorldInfo.TimeSeconds; + } + } + //return; +} + +function OnProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + // End:0x0F + if(m_bInDestroyedState) + { + return; + } + // End:0x84 + if(m_TouchingActors.Find(Other) == -1) + { + // End:0x84 + if((m_FireMode != none) && m_FireMode.IsValidTarget(Other)) + { + m_TouchingActors.AddItem(Other); + } + } + //return; +} + +function OnProxyUnTouch(Actor Other) +{ + // End:0x36 + if(m_TouchingActors.Find(Other) != -1) + { + m_TouchingActors.RemoveItem(Other); + } + RemoveEffects(Other); + //return; +} + +event int SpawnNewSpot(Vector vLocation, Rotator rRotation, optional float fRadius = 0.0000000, optional float fHeight = 0.0000000, optional int nFXIndex = 0, optional int nIntensityLevel = 0) +{ + local int nNewSpotIndex, I; + local float fLargestDistance, fDistance; + + // End:0x45 + if(m_bInDestroyedState || int(Role) != int(ROLE_Authority)) + { + return -1; + } + // End:0x71 + if((m_nNewSpotIndex < 0) || m_nNewSpotIndex >= 100) + { + m_nNewSpotIndex = 0; + } + nNewSpotIndex = m_nNewSpotIndex; + r_EffectSpots[nNewSpotIndex].bIsActive = true; + r_EffectSpots[nNewSpotIndex].vLocation = vLocation; + r_EffectSpots[nNewSpotIndex].rRotation = rRotation; + r_EffectSpots[nNewSpotIndex].nFXIndex = nFXIndex; + r_EffectSpots[nNewSpotIndex].nIntensityLevel = nIntensityLevel; + // End:0x1B1 + if(fRadius > float(0)) + { + r_EffectSpots[nNewSpotIndex].fRadius = fRadius; + } + else + { + // End:0x209 + if(m_FireMode != none) + { + r_EffectSpots[nNewSpotIndex].fRadius = m_FireMode.GetDamageRadius(); + } + else + { + r_EffectSpots[nNewSpotIndex].fRadius = 1.0000000; + } + } + // End:0x279 + if(fHeight > float(0)) + { + r_EffectSpots[nNewSpotIndex].fHeight = fHeight; + } + else + { + r_EffectSpots[nNewSpotIndex].fHeight = 80.0000000; + } + // End:0x2C2 + if(++m_nNewSpotIndex >= 100) + { + m_nNewSpotIndex = 0; + } + // End:0x301 + if((nNewSpotIndex < 0) || !r_EffectSpots[0].bIsActive) + { + return nNewSpotIndex; + } + fLargestDistance = r_EffectSpots[0].fRadius; + I = 0; + J0x334: + + // End:0x419 [Loop If] + if(I < 100) + { + // End:0x373 + if(!r_EffectSpots[I].bIsActive) + { + } + else + { + fDistance = VSize(r_EffectSpots[I].vLocation - Location); + fDistance += r_EffectSpots[I].fRadius; + // End:0x40B + if(fDistance > fLargestDistance) + { + fLargestDistance = fDistance; + } + } + I++; + // [Loop Continue] + goto J0x334; + } + // End:0x449 + if(fLargestDistance > 0.0000000) + { + m_fFirstPassRadius = fLargestDistance; + ScaleCollisionProxy(); + } + UpdateEffectSpots(); + return nNewSpotIndex; + //return ReturnValue; +} + +simulated function UpdateEffectSpots() +{ + local int I; + + // End:0x19 + if(m_bInDestroyedState) + { + ClearEffectSpots(); + return; + } + I = 0; + J0x24: + + // End:0x12C [Loop If] + if(I < 100) + { + // End:0x74 + if(r_EffectSpots[I].bIsActive) + { + UpdateSpotFX(I); + } + else + { + // End:0x11E + if((c_SpotFX[I].Fx != none) && c_SpotFX[I].Fx.c_bActive) + { + c_SpotFX[I].Fx.Deactivate(false); + } + } + ++I; + // [Loop Continue] + goto J0x24; + } + //return; +} + +simulated event SpawnCollisionProxy() +{ + // End:0x1B3 + if((int(Role) == int(ROLE_Authority)) && m_fFirstPassRadius > 0.0000000) + { + // End:0x65 + if(m_CollisionProxy != none) + { + ClearAllTouched(); + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + m_CollisionProxy = Spawn(Class'TgGame.TgCollisionProxy_Cylinder', self,, self.Location,,, true); + // End:0x1B3 + if(m_CollisionProxy != none) + { + m_CollisionProxy.SetBase(self); + m_CollisionProxy.__ProxyTouch__Delegate = OnProxyTouch; + m_CollisionProxy.__ProxyUnTouch__Delegate = OnProxyUnTouch; + m_CollisionProxy.DelegatesUpdated(); + m_CollisionProxy.m_CollisionCylinder.SetCylinderSize(m_fFirstPassRadius, 2.0000000 * m_fFirstPassRadius); + m_CollisionProxy.DelegatesUpdated(); + } + } + //return; +} + +event ScaleCollisionProxy() +{ + // End:0x1C + if(m_CollisionProxy == none) + { + SpawnCollisionProxy(); + } + else + { + // End:0xB1 + if((int(Role) == int(ROLE_Authority)) && m_fFirstPassRadius > 0.0000000) + { + m_CollisionProxy.m_CollisionCylinder.SetCylinderSize(m_fFirstPassRadius, 2.0000000 * m_fFirstPassRadius); + m_CollisionProxy.DelegatesUpdated(); + } + } + //return; +} + +simulated function UpdateSpotFX(int spotIndex) +{ + // End:0x23 + if((spotIndex < 0) || spotIndex >= 100) + { + return; + } + // End:0x4E + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0x178 + if(r_EffectSpots[spotIndex].bIsActive) + { + // End:0xB7 + if(c_SpotFX[spotIndex].Fx == none) + { + InitializeSpecialFX(spotIndex); + } + // End:0x175 + if(c_SpotFX[spotIndex].Fx != none) + { + UpdateParticleParams(spotIndex); + // End:0x175 + if(!c_SpotFX[spotIndex].Fx.c_bActive) + { + c_SpotFX[spotIndex].Fx.Activate(); + } + } + } + else + { + // End:0x222 + if((c_SpotFX[spotIndex].Fx != none) && c_SpotFX[spotIndex].Fx.c_bActive) + { + c_SpotFX[spotIndex].Fx.Deactivate(false); + } + } + //return; +} + +simulated function UpdateParticleParams(int spotIndex) +{ + local int I; + local editinline ParticleSystemComponent PSC; + + // End:0x51 + if(((spotIndex < 0) || spotIndex >= 100) || c_SpotFX[spotIndex].Fx == none) + { + return; + } + // End:0x7C + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + I = 0; + J0x87: + + // End:0x298 [Loop If] + if(I < c_SpotFX[spotIndex].Fx.c_PSCList.Length) + { + PSC = c_SpotFX[spotIndex].Fx.c_PSCList[I].c_PSC; + // End:0x28A + if(PSC != none) + { + PSC.SetAbsolute(true, true, true); + PSC.SetTranslation(r_EffectSpots[spotIndex].vLocation); + PSC.SetRotation(r_EffectSpots[spotIndex].rRotation); + PSC.SetFloatParameter('DamageRadius', r_EffectSpots[spotIndex].fRadius); + PSC.SetFloatParameter('DamageRadiusUU', r_EffectSpots[spotIndex].fRadius); + } + I++; + // [Loop Continue] + goto J0x87; + } + //return; +} + +simulated function ClearEffectSpots() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x52 [Loop If] + if(I < 100) + { + r_EffectSpots[I].bIsActive = false; + ++I; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated event ClearAllTouched() +{ + J0x00: + // End:0x3B [Loop If] + if(m_AffectedActors.Length > 0) + { + OnProxyUnTouch(m_AffectedActors[0].Target); + // [Loop Continue] + goto J0x00; + } + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + super(TgDeployable).DestroyIt(bSkipFx); + // End:0x68 + if(m_bInDestroyedState) + { + ClearAllTouched(); + ClearEffectSpots(); + // End:0x68 + if(m_CollisionProxy != none) + { + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + } + //return; +} + +simulated event Destroyed() +{ + ClearAllTouched(); + ClearEffectSpots(); + // End:0x46 + if(m_CollisionProxy != none) + { + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + super(TgDeployable).Destroyed(); + //return; +} + +defaultproperties +{ + m_fMinRefreshTime=0.2000000 + m_bFireOnDeploy=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_EffectSpots.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_MatchParentFireMode.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + bAlwaysRelevant=true + bCollideActors=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_EffectTrail.uc b/exported/TgGame/Classes/TgDeploy_EffectTrail.uc new file mode 100755 index 00000000..4327f827 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_EffectTrail.uc @@ -0,0 +1,217 @@ +class TgDeploy_EffectTrail extends TgDeploy_MatchParentFireMode + native(Deployable) + placeable + hidecategories(Navigation); + +const MAX_TRAIL_POINTS = 20; + +var TgPawn r_TrailPawn; +var int m_TrailEffectID; +var TgSpecialFx m_TrailEffects; +var bool m_bHasInitialPoint; +var bool r_bInDeployMode; +var float m_fPointDistance; +var float m_fPointLifetime; +var int m_nNextPointIndex; +var int m_nTailPointIndex; +var Vector m_TrailPoints[20]; +var Vector m_ParticleSystemOffsets[20]; +var float m_TrailTimes[20]; +var TgCollisionProxy_Cylinder m_CollisionProxies[20]; +var export editinline DecalComponent m_Decals[20]; + +replication +{ + // Pos:0x000 + if(bNetInitial && int(Role) == int(ROLE_Authority)) + r_TrailPawn; + + // Pos:0x020 + if(int(Role) == int(ROLE_Authority)) + r_bInDeployMode; +} + +// Export UTgDeploy_EffectTrail::execCalculateAndSpawnNextPiece(FFrame&, void* const) +native function bool CalculateAndSpawnNextPiece(); + +function OnProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local ImpactInfo Impact; + + // End:0x1D2 + if((m_FireMode != none) && Other != none) + { + // End:0x1D2 + if(m_FireMode.IsValidTarget(Other)) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = m_FireMode; + Impact.HitActor = Other; + Impact.HitLocation = Other.Location; + Impact.HitNormal = Other.Location; + Impact.StartTrace = Impact.HitLocation; + Impact.RayDir = Impact.HitNormal; + m_FireMode.ApplyHit(Impact, Owner); + } + } + //return; +} + +simulated event ConsumeTailPiece() +{ + // End:0x50 + if(m_CollisionProxies[m_nTailPointIndex] != none) + { + m_CollisionProxies[m_nTailPointIndex].Destroy(); + m_CollisionProxies[m_nTailPointIndex] = none; + } + // End:0xA8 + if(m_Decals[m_nTailPointIndex] != none) + { + m_Decals[m_nTailPointIndex].SetHidden(true); + m_Decals[m_nTailPointIndex] = none; + } + m_TrailTimes[m_nTailPointIndex] = 0.0000000; + // End:0xDE + if(++m_nTailPointIndex >= 20) + { + m_nTailPointIndex = 0; + } + //return; +} + +simulated event bool SpawnNewTrailFX(Vector trailLocation, Vector particleOffset) +{ + local int I; + local float Radius; + local Vector Forward; + local MaterialInstanceTimeVarying MITV_Decal; + + // End:0x11 + if(r_TrailPawn == none) + { + return false; + } + // End:0x32 + if(m_nNextPointIndex == m_nTailPointIndex) + { + ConsumeTailPiece(); + } + m_TrailPoints[m_nNextPointIndex] = trailLocation; + m_ParticleSystemOffsets[m_nNextPointIndex] = particleOffset; + m_TrailTimes[m_nNextPointIndex] = m_fPointLifetime; + m_CollisionProxies[m_nNextPointIndex] = Spawn(Class'TgGame.TgCollisionProxy_Cylinder', self,, trailLocation,,, true); + // End:0x203 + if(m_CollisionProxies[m_nNextPointIndex] != none) + { + m_CollisionProxies[m_nNextPointIndex].SetBase(self); + m_CollisionProxies[m_nNextPointIndex].__ProxyTouch__Delegate = OnProxyTouch; + m_CollisionProxies[m_nNextPointIndex].DelegatesUpdated(); + Radius = m_FireMode.GetEffectiveRadius(); + m_CollisionProxies[m_nNextPointIndex].m_CollisionCylinder.SetCylinderSize(Radius, Radius); + m_CollisionProxies[m_nNextPointIndex].ForceProximityScan(); + } + // End:0x56E + if((m_TrailEffects != none) && WorldInfo.MyDecalManager != none) + { + I = 0; + J0x243: + + // End:0x511 [Loop If] + if(I < m_TrailEffects.c_DecalList.Length) + { + MITV_Decal = new Class'Engine.MaterialInstanceTimeVarying'; + MITV_Decal.SetParent(m_TrailEffects.c_DecalList[I].c_MITV); + m_Decals[m_nNextPointIndex] = WorldInfo.MyDecalManager.SpawnDecal(true, MITV_Decal, trailLocation, rot(-16384, 0, 0), m_TrailEffects.c_DecalList[I].c_fWidth, m_TrailEffects.c_DecalList[I].c_fHeight, m_TrailEffects.c_DecalList[I].c_fThickness, m_TrailEffects.c_DecalList[I].c_bNoClip, (float(-r_TrailPawn.Rotation.Yaw) / 65536.0000000) * 360.0000000,,,,,,, m_fPointLifetime); + // End:0x503 + if(m_Decals[m_nNextPointIndex] != none) + { + m_Decals[m_nNextPointIndex].bMovableDecal = true; + m_Decals[m_nNextPointIndex].Location = trailLocation; + } + I++; + // [Loop Continue] + goto J0x243; + } + Forward = Vector(r_TrailPawn.Rotation); + m_TrailEffects.SpawnEmitter(particleOffset, Forward); + } + // End:0x58B + if(++m_nNextPointIndex >= 20) + { + m_nNextPointIndex = 0; + } + return true; + //return ReturnValue; +} + +function OnPersistTimerExpire() +{ + // End:0x47 + if(r_bInDeployMode) + { + ClearTimer('OnPersistTimerExpire'); + r_bInDeployMode = false; + SetTimer(m_fPointLifetime, false, 'OnPersistTimerExpire'); + } + else + { + super(TgDeployable).OnPersistTimerExpire(); + } + //return; +} + +simulated event ShutdownDeployMode() +{ + // End:0x44 + if(r_bInDeployMode) + { + ClearTimer('OnPersistTimerExpire'); + r_bInDeployMode = false; + SetTimer(m_fPointLifetime, false, 'OnPersistTimerExpire'); + } + //return; +} + +simulated function Destroyed() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x79 [Loop If] + if(I < 20) + { + // End:0x6B + if(m_CollisionProxies[I] != none) + { + m_CollisionProxies[I].Destroy(); + m_CollisionProxies[I] = none; + } + ++I; + // [Loop Continue] + goto J0x0B; + } + super(TgDeployable).Destroyed(); + //return; +} + +defaultproperties +{ + m_TrailEffectID=6394 + r_bInDeployMode=true + m_fPointDistance=50.0000000 + m_fPointLifetime=3.0000000 + m_bFireOnDeploy=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_EffectTrail.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_MatchParentFireMode.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + bAlwaysRelevant=true + bCollideActors=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_Epicenter.uc b/exported/TgGame/Classes/TgDeploy_Epicenter.uc new file mode 100755 index 00000000..fe93e235 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_Epicenter.uc @@ -0,0 +1,35 @@ +class TgDeploy_Epicenter extends TgDeploy_TurretEffectField + placeable + hidecategories(Navigation); + +function OnProxyUnTouch(Actor Other) +{ + local ImpactInfo Impact; + + // End:0xF1 + if(m_TouchingPawns.Find(Other) != -1) + { + // End:0xF1 + if((m_FireMode != none) && m_ParentTurret != none) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = m_FireMode; + Impact.HitActor = Other; + m_FireMode.ApplyHit(Impact, m_ParentTurret.r_Owner); + } + } + super.OnProxyUnTouch(Other); + //return; +} + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Epicenter.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_TurretEffectField.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_Exhaust.uc b/exported/TgGame/Classes/TgDeploy_Exhaust.uc new file mode 100755 index 00000000..806bba20 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_Exhaust.uc @@ -0,0 +1,16 @@ +class TgDeploy_Exhaust extends TgDeploy_EffectTrail + native(ChampBarik) + placeable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Exhaust.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_EffectTrail.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_Explosion.uc b/exported/TgGame/Classes/TgDeploy_Explosion.uc new file mode 100755 index 00000000..1f2fdc62 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_Explosion.uc @@ -0,0 +1,192 @@ +class TgDeploy_Explosion extends TgDeploy_EffectAura + native(Deployable) + placeable + hidecategories(Navigation); + +simulated event DestroyIt(optional bool bSkipFx) +{ + local int I; + local ImpactInfo Impact; + + // End:0x10 + if(m_bInDestroyedState) + { + return; + } + // End:0xF6 + if(m_FireMode != none) + { + I = 0; + J0x2A: + + // End:0xF6 [Loop If] + if(I < m_AffectedActors.Length) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = m_FireMode; + Impact.HitActor = m_AffectedActors[I]; + m_FireMode.ApplyHit(Impact, Instigator); + ++I; + // [Loop Continue] + goto J0x2A; + } + } + super.DestroyIt(true); + // End:0x1A5 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x1A2 + if(!bSkipFx && c_Mesh != none) + { + c_Mesh.FxActivateGroup('Destroyed', 0); + c_Mesh.FxDeactivateGroup('OnWhenDeployed', 0); + } + } + else + { + r_nReplicateDestroyIt = ((bSkipFx) ? 2 : 1); + } + //return; +} + +simulated event ScaleFX() +{ + local array FxList; + local TgSpecialFx Fx; + local editinline ParticleSystemComponent PSC; + local TgProperty EffectRadiusProperty; + local float fDamageRadius, fDamageRadiusUU; + local int I, J; + + // End:0x5D5 + if((c_Mesh != none) && m_FireMode != none) + { + EffectRadiusProperty = m_FireMode.GetProperty(6); + // End:0x5D5 + if(EffectRadiusProperty != none) + { + fDamageRadius = EffectRadiusProperty.m_fBase * r_fRadiusScale; + // End:0x5D5 + if(fDamageRadius > 0.0000000) + { + fDamageRadiusUU = fDamageRadius * float(16); + FxList = c_Mesh.FxGetAll('AlwaysOn', 0); + I = 0; + J0xFA: + + // End:0x26D [Loop If] + if(I < FxList.Length) + { + Fx = TgSpecialFx(FxList[I]); + // End:0x25F + if(Fx != none) + { + J = 0; + J0x152: + + // End:0x243 [Loop If] + if(J < Fx.c_PSCList.Length) + { + PSC = Fx.c_PSCList[J].c_PSC; + // End:0x235 + if(PSC != none) + { + PSC.SetFloatParameter('DamageRadius', fDamageRadius); + PSC.SetFloatParameter('DamageRadiusUU', fDamageRadiusUU); + } + J++; + // [Loop Continue] + goto J0x152; + } + UpdateDecalScale(Fx, r_fRadiusScale); + } + I++; + // [Loop Continue] + goto J0xFA; + } + FxList = c_Mesh.FxGetAll('OnWhenDeployed', 0); + I = 0; + J0x2AE: + + // End:0x421 [Loop If] + if(I < FxList.Length) + { + Fx = TgSpecialFx(FxList[I]); + // End:0x413 + if(Fx != none) + { + J = 0; + J0x306: + + // End:0x3F7 [Loop If] + if(J < Fx.c_PSCList.Length) + { + PSC = Fx.c_PSCList[J].c_PSC; + // End:0x3E9 + if(PSC != none) + { + PSC.SetFloatParameter('DamageRadius', fDamageRadius); + PSC.SetFloatParameter('DamageRadiusUU', fDamageRadiusUU); + } + J++; + // [Loop Continue] + goto J0x306; + } + UpdateDecalScale(Fx, r_fRadiusScale); + } + I++; + // [Loop Continue] + goto J0x2AE; + } + FxList = c_Mesh.FxGetAll('Destroyed', 0); + I = 0; + J0x462: + + // End:0x5D5 [Loop If] + if(I < FxList.Length) + { + Fx = TgSpecialFx(FxList[I]); + // End:0x5C7 + if(Fx != none) + { + J = 0; + J0x4BA: + + // End:0x5AB [Loop If] + if(J < Fx.c_PSCList.Length) + { + PSC = Fx.c_PSCList[J].c_PSC; + // End:0x59D + if(PSC != none) + { + PSC.SetFloatParameter('DamageRadius', fDamageRadius); + PSC.SetFloatParameter('DamageRadiusUU', fDamageRadiusUU); + } + J++; + // [Loop Continue] + goto J0x4BA; + } + UpdateDecalScale(Fx, r_fRadiusScale); + } + I++; + // [Loop Continue] + goto J0x462; + } + } + } + } + //return; +} + +defaultproperties +{ + r_fRadiusScale=0.0000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Explosion.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_EffectAura.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_Expose.uc b/exported/TgGame/Classes/TgDeploy_Expose.uc new file mode 100755 index 00000000..5b4032d2 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_Expose.uc @@ -0,0 +1,26 @@ +class TgDeploy_Expose extends TgDeploy_TurretEffectField + placeable + hidecategories(Navigation); + +function FireAmmunitionDeployable() +{ + // End:0x4F + if((m_ParentTurret != none) && int(m_ParentTurret.r_eCurrentStunType) == int(0)) + { + super(TgDeployable).FireAmmunitionDeployable(); + r_nFlashFireCount++; + } + //return; +} + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Expose.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_TurretEffectField.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_Geometry.uc b/exported/TgGame/Classes/TgDeploy_Geometry.uc new file mode 100755 index 00000000..362b7dfc --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_Geometry.uc @@ -0,0 +1,51 @@ +class TgDeploy_Geometry extends TgDeployable + native(Deployable) + notplaceable + hidecategories(Navigation); + +var array m_OverlappingActors; +var array m_DesiredPushDirection; +var bool m_bPushOverlappingActors; +var bool m_bAllyPassthrough; +var bool m_bEnemyPassthrough; +var float m_fPushFactor; + +// Export UTgDeploy_Geometry::execIsPushable(FFrame&, void* const) +native function bool IsPushable(const Actor Other); + +// Export UTgDeploy_Geometry::execShouldSelfDestructWhenTouchedBy(FFrame&, void* const) +native function bool ShouldSelfDestructWhenTouchedBy(const Actor Other); + +// Export UTgDeploy_Geometry::execFindOverlappingActors(FFrame&, void* const) +native function FindOverlappingActors(); + +// Export UTgDeploy_Geometry::execCalcPushDirection(FFrame&, void* const) +native function Vector CalcPushDirection(Vector HitLocation, Vector HitNormal); + +// Export UTgDeploy_Geometry::execPushOverlappingActors(FFrame&, void* const) +native function PushOverlappingActors(float DeltaSeconds); + +defaultproperties +{ + m_bPushOverlappingActors=true + m_fPushFactor=3200.0000000 + m_bAdjustMeshToGround=false + m_bIsVisionBlocker=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Geometry.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_CollisionSettings=(mCollisionMode=AdvancedCollisionMode.ACM_Geometry,bUseMeshForCollision=true,bBlockFriendlyFire=true) + m_nInitHUDOverlayDisplayMask=56 + Components[0]=MyLightEnvironment + bCanStepUpOn=false + BlockRigidBody=true + bCollideActors=true + bBlockActors=true + bProjTarget=true + bNoEncroachCheck=true + bCollideAsEncroacher=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_GeometryBarrierTank.uc b/exported/TgGame/Classes/TgDeploy_GeometryBarrierTank.uc new file mode 100755 index 00000000..3b0ba1eb --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_GeometryBarrierTank.uc @@ -0,0 +1,422 @@ +class TgDeploy_GeometryBarrierTank extends TgDeploy_Geometry + native(ChampBarrierTank) + notplaceable + hidecategories(Navigation); + +const IMPASSE_SIDE_WALL_SEGMENTS = 2; + +var TgPawn_BarrierTank m_CachedInaraPawn; +var export editinline MeshComponent m_CenterMesh; +var export editinline MeshComponent m_LeftMeshes[2]; +var export editinline MeshComponent m_RightMeshes[2]; +var int m_WallMeshIDCenter; +var int m_WallMeshIDEndCap; +var repnotify bool r_bGrowthModeActivationSignal; +var bool m_bInGrowthMode; +var bool m_bDidInitialHit; +var repnotify bool r_bEarthenGuardActive; +var repnotify bool r_bHasAlpine; +var float m_fGrowStartTime; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && !bNetInitial) + r_bEarthenGuardActive, r_bGrowthModeActivationSignal, + r_bHasAlpine; +} + +// Export UTgDeploy_GeometryBarrierTank::execSpawnMeshSegments(FFrame&, void* const) +native function SpawnMeshSegments(); + +// Export UTgDeploy_GeometryBarrierTank::execInitializeMeshSegment(FFrame&, void* const) +native function InitializeMeshSegment(MeshComponent Mesh, float fOffset); + +// Export UTgDeploy_GeometryBarrierTank::execSignalGrowthModeStart(FFrame&, void* const) +native function SignalGrowthModeStart(); + +// Export UTgDeploy_GeometryBarrierTank::execToggleGrowthMode(FFrame&, void* const) +native function ToggleGrowthMode(bool bTurnOn); + +// Export UTgDeploy_GeometryBarrierTank::execPushBasedActors(FFrame&, void* const) +native function PushBasedActors(); + +// Export UTgDeploy_GeometryBarrierTank::execDoInitialHit(FFrame&, void* const) +native function DoInitialHit(); + +// Export UTgDeploy_GeometryBarrierTank::execPushOverlappingActors(FFrame&, void* const) +native function PushOverlappingActors(float DeltaSeconds); + +// Export UTgDeploy_GeometryBarrierTank::execGetSegmentWorldLocation(FFrame&, void* const) +native function Vector GetSegmentWorldLocation(Vector vLocalLocation); + +// Export UTgDeploy_GeometryBarrierTank::execHasCachedInaraPawn(FFrame&, void* const) +native function bool HasCachedInaraPawn(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x25 + if(VarName == 'r_bGrowthModeActivationSignal') + { + ToggleGrowthMode(true); + } + else + { + // End:0x5A + if(VarName == 'r_bEarthenGuardActive') + { + ActivateDisplayGroups('Generic4', false, r_bEarthenGuardActive); + } + } + super(TgDeployable).ReplicatedEvent(VarName); + //return; +} + +event AddBasedPawn(TgPawn basedPawn) +{ + local TgPlayerController TgPC; + + super(TgDeployable).AddBasedPawn(basedPawn); + // End:0xB4 + if((m_bInGrowthMode && basedPawn != none) && m_PawnsBasedOnMe.Find(basedPawn) != -1) + { + TgPC = TgPlayerController(basedPawn.Controller); + // End:0xB4 + if(TgPC != none) + { + TgPC.SetNoSmoothedMovementCorrection(true, true); + } + } + //return; +} + +event RemoveBasedPawn(TgPawn basedPawn) +{ + local TgPlayerController TgPC; + + super(TgDeployable).RemoveBasedPawn(basedPawn); + // End:0xB4 + if((m_bInGrowthMode && basedPawn != none) && m_PawnsBasedOnMe.Find(basedPawn) == -1) + { + TgPC = TgPlayerController(basedPawn.Controller); + // End:0xB4 + if(TgPC != none) + { + TgPC.SetNoSmoothedMovementCorrection(false, true); + } + } + //return; +} + +simulated event ActivateDisplayGroups(name DisplayGroup, bool bActivateIndependent, optional bool bTurnOn = true) +{ + local int I, J; + local TgSpecialFx meshFX; + local editinline ParticleSystemComponent PSC; + local Vector vSegmentLocation, vRotation; + + // End:0x74A + if(c_Mesh != none) + { + vRotation = Normal(Vector(Rotation)); + // End:0x255 + if(m_CenterMesh != none) + { + vSegmentLocation = GetSegmentWorldLocation(m_CenterMesh.Translation); + // End:0xBB + if(bActivateIndependent) + { + m_CenterMesh.FxActivateIndependant(DisplayGroup, 0, vSegmentLocation, vRotation); + } + else + { + // End:0x22A + if(bTurnOn) + { + meshFX = TgSpecialFx(m_CenterMesh.FxGet(DisplayGroup, 0)); + // End:0x1FA + if(meshFX != none) + { + J = 0; + J0x121: + + // End:0x1FA [Loop If] + if(J < meshFX.c_PSCList.Length) + { + PSC = meshFX.c_PSCList[J].c_PSC; + // End:0x1EC + if(PSC != none) + { + PSC.SetAbsolute(true, true, true); + PSC.SetTranslation(vSegmentLocation); + } + J++; + // [Loop Continue] + goto J0x121; + } + } + m_CenterMesh.FxActivateGroup(DisplayGroup, 0); + } + else + { + m_CenterMesh.FxDeactivateGroup(DisplayGroup, 0); + } + } + } + I = 0; + J0x260: + + // End:0x74A [Loop If] + if(I < 2) + { + // End:0x4D6 + if(m_LeftMeshes[I] != none) + { + vSegmentLocation = GetSegmentWorldLocation(m_LeftMeshes[I].Translation); + // End:0x31E + if(bActivateIndependent) + { + m_LeftMeshes[I].FxActivateIndependant(DisplayGroup, 0, vSegmentLocation, vRotation); + } + else + { + // End:0x4A1 + if(bTurnOn) + { + meshFX = TgSpecialFx(m_LeftMeshes[I].FxGet(DisplayGroup, 0)); + // End:0x467 + if(meshFX != none) + { + J = 0; + J0x38E: + + // End:0x467 [Loop If] + if(J < meshFX.c_PSCList.Length) + { + PSC = meshFX.c_PSCList[J].c_PSC; + // End:0x459 + if(PSC != none) + { + PSC.SetAbsolute(true, true, true); + PSC.SetTranslation(vSegmentLocation); + } + J++; + // [Loop Continue] + goto J0x38E; + } + } + m_LeftMeshes[I].FxActivateGroup(DisplayGroup, 0); + } + else + { + m_LeftMeshes[I].FxDeactivateGroup(DisplayGroup, 0); + } + } + } + // End:0x73C + if(m_RightMeshes[I] != none) + { + vSegmentLocation = GetSegmentWorldLocation(m_RightMeshes[I].Translation); + // End:0x584 + if(bActivateIndependent) + { + m_RightMeshes[I].FxActivateIndependant(DisplayGroup, 0, vSegmentLocation, vRotation); + } + else + { + // End:0x707 + if(bTurnOn) + { + meshFX = TgSpecialFx(m_RightMeshes[I].FxGet(DisplayGroup, 0)); + // End:0x6CD + if(meshFX != none) + { + J = 0; + J0x5F4: + + // End:0x6CD [Loop If] + if(J < meshFX.c_PSCList.Length) + { + PSC = meshFX.c_PSCList[J].c_PSC; + // End:0x6BF + if(PSC != none) + { + PSC.SetAbsolute(true, true, true); + PSC.SetTranslation(vSegmentLocation); + } + J++; + // [Loop Continue] + goto J0x5F4; + } + } + m_RightMeshes[I].FxActivateGroup(DisplayGroup, 0); + } + else + { + m_RightMeshes[I].FxDeactivateGroup(DisplayGroup, 0); + } + } + } + ++I; + // [Loop Continue] + goto J0x260; + } + } + //return; +} + +simulated function DeployComplete() +{ + local int I, J; + local MaterialInstanceConstant MIC; + local float fEnemyScalarValue; + + // End:0x1E + if(m_bIsDeployed || m_bInDestroyedState) + { + return; + } + // End:0x37 + if(!r_bGrowthModeActivationSignal) + { + SignalGrowthModeStart(); + } + SetCollision(true, true, false); + ActivateDisplayGroups('Generic3', true); + ActivateDisplayGroups('AlwaysOn', false, true); + fEnemyScalarValue = ((IsFriendlyWithLocalPawn()) ? 0.0000000 : 1.0000000); + // End:0x17A + if(m_CenterMesh != none) + { + I = 0; + J0xA4: + + // End:0x15A [Loop If] + if(I < m_CenterMesh.Materials.Length) + { + MIC = MaterialInstanceConstant(m_CenterMesh.Materials[I]); + // End:0x14C + if(MIC != none) + { + MIC.SetScalarParameterValue('FRIENDLY_ENEMY', fEnemyScalarValue); + } + I++; + // [Loop Continue] + goto J0xA4; + } + m_CenterMesh.SetHidden(false); + } + I = 0; + J0x185: + + // End:0x3D3 [Loop If] + if(I < 2) + { + // End:0x2AD + if(m_LeftMeshes[I] != none) + { + J = 0; + J0x1B9: + + // End:0x283 [Loop If] + if(J < m_LeftMeshes[I].Materials.Length) + { + MIC = MaterialInstanceConstant(m_LeftMeshes[I].Materials[J]); + // End:0x275 + if(MIC != none) + { + MIC.SetScalarParameterValue('FRIENDLY_ENEMY', fEnemyScalarValue); + } + J++; + // [Loop Continue] + goto J0x1B9; + } + m_LeftMeshes[I].SetHidden(false); + } + // End:0x3C5 + if(m_RightMeshes[I] != none) + { + J = 0; + J0x2D1: + + // End:0x39B [Loop If] + if(J < m_RightMeshes[I].Materials.Length) + { + MIC = MaterialInstanceConstant(m_RightMeshes[I].Materials[J]); + // End:0x38D + if(MIC != none) + { + MIC.SetScalarParameterValue('FRIENDLY_ENEMY', fEnemyScalarValue); + } + J++; + // [Loop Continue] + goto J0x2D1; + } + m_RightMeshes[I].SetHidden(false); + } + ++I; + // [Loop Continue] + goto J0x185; + } + super(TgDeployable).DeployComplete(); + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + local int I; + + super(TgDeployable).DestroyIt(bSkipFx); + // End:0x41 + if((GetHealth()) <= 0.0000000) + { + ActivateDisplayGroups('Generic1', true); + } + else + { + ActivateDisplayGroups('Generic2', true); + } + ActivateDisplayGroups('AlwaysOn', false, false); + // End:0x9A + if(m_CenterMesh != none) + { + m_CenterMesh.SetHidden(true); + } + I = 0; + J0xA5: + + // End:0x149 [Loop If] + if(I < 2) + { + // End:0xF8 + if(m_LeftMeshes[I] != none) + { + m_LeftMeshes[I].SetHidden(true); + } + // End:0x13B + if(m_RightMeshes[I] != none) + { + m_RightMeshes[I].SetHidden(true); + } + ++I; + // [Loop Continue] + goto J0xA5; + } + //return; +} + +defaultproperties +{ + m_WallMeshIDCenter=7094 + m_WallMeshIDEndCap=7166 + m_fGrowStartTime=-0.5000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_GeometryBarrierTank.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Geometry.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_CollisionSettings=(bPawnsCanBaseOnMe=true) + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_GeometryBuck.uc b/exported/TgGame/Classes/TgDeploy_GeometryBuck.uc new file mode 100755 index 00000000..770086c8 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_GeometryBuck.uc @@ -0,0 +1,59 @@ +class TgDeploy_GeometryBuck extends TgDeploy_Geometry + notplaceable + hidecategories(Navigation); + +var bool m_bInteriorEffectApplied; + +simulated function Tick(float DeltaSeconds) +{ + super(TgDeployable).Tick(DeltaSeconds); + // End:0x10D + if((int(Role) == int(ROLE_Authority)) && Instigator != none) + { + // End:0xC5 + if(VSizeSq(Location - Instigator.Location) < float(((30 * 30) * 16) * 16)) + { + // End:0xC2 + if(!m_bInteriorEffectApplied) + { + m_FireMode.ApplyHitSpecial(Instigator,, 10693); + m_bInteriorEffectApplied = true; + } + } + else + { + // End:0x10D + if(m_bInteriorEffectApplied) + { + m_FireMode.RemoveHitSpecial(Instigator, true, 10693); + m_bInteriorEffectApplied = false; + } + } + } + //return; +} + +simulated function Destroyed() +{ + // End:0x48 + if(m_bInteriorEffectApplied) + { + m_FireMode.RemoveHitSpecial(Instigator, true, 10693); + m_bInteriorEffectApplied = false; + } + super(TgDeployable).Destroyed(); + //return; +} + +defaultproperties +{ + m_bFireOnDeploy=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_GeometryBuck.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Geometry.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_Gourd.uc b/exported/TgGame/Classes/TgDeploy_Gourd.uc new file mode 100755 index 00000000..f8f41a73 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_Gourd.uc @@ -0,0 +1,130 @@ +class TgDeploy_Gourd extends TgDeploy_EffectField + native(ChampMalDamba) + placeable + hidecategories(Navigation); + +var repnotify bool r_bHasRipenedGourd; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bHasRipenedGourd; +} + +// Export UTgDeploy_Gourd::execToggleRipenedGourdFX(FFrame&, void* const) +native function ToggleRipenedGourdFX(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x21 + if(VarName == 'r_bHasRipenedGourd') + { + ToggleRipenedGourdFX(); + } + super(TgDeployable).ReplicatedEvent(VarName); + //return; +} + +function OnProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn PawnOwner; + local TgDevice_GourdMod modDevice; + local int I; + local bool bIsAlreadyTracked; + + // End:0x0F + if(m_bInDestroyedState) + { + return; + } + bIsAlreadyTracked = false; + // End:0x47 + if(m_TouchingPawns.Find(Other) != -1) + { + bIsAlreadyTracked = true; + } + super.OnProxyTouch(Other, OtherComp, HitLocation, HitNormal); + // End:0x206 + if(m_TouchingPawns.Find(Other) != -1) + { + // End:0x206 + if(!bIsAlreadyTracked) + { + PawnOwner = TgPawn(Instigator); + // End:0x206 + if(PawnOwner != none) + { + I = 0; + J0xDA: + + // End:0x206 [Loop If] + if(I < 33) + { + // End:0x1F8 + if((PawnOwner.m_EquippedDevices[I] != none) && PawnOwner.m_EquippedDevices[I].IsActive()) + { + modDevice = TgDevice_GourdMod(PawnOwner.m_EquippedDevices[I]); + // End:0x1F8 + if(modDevice != none) + { + modDevice.ApplyOnTouchEffect(Other); + modDevice.ApplyEffect(self, Other); + } + } + ++I; + // [Loop Continue] + goto J0xDA; + } + } + } + } + //return; +} + +function OnProxyUnTouch(Actor Other) +{ + local TgPawn PawnOwner; + local TgDevice_GourdMod modDevice; + local int I; + + PawnOwner = TgPawn(Instigator); + // End:0xF5 + if(PawnOwner != none) + { + I = 0; + J0x36: + + // End:0xF5 [Loop If] + if(I < 33) + { + // End:0xE7 + if(PawnOwner.m_EquippedDevices[I] != none) + { + modDevice = TgDevice_GourdMod(PawnOwner.m_EquippedDevices[I]); + // End:0xE7 + if(modDevice != none) + { + modDevice.RemoveEffect(self, Other); + } + } + ++I; + // [Loop Continue] + goto J0x36; + } + } + super.OnProxyUnTouch(Other); + //return; +} + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Gourd.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_EffectField.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_HealingTotem.uc b/exported/TgGame/Classes/TgDeploy_HealingTotem.uc new file mode 100755 index 00000000..5bfc1965 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_HealingTotem.uc @@ -0,0 +1,275 @@ +class TgDeploy_HealingTotem extends TgDeployable + native(ChampGrohk) + placeable + hidecategories(Navigation); + +var repnotify float r_fRadiusScale; +var repnotify bool r_bHasHealingRain; +var repnotify bool r_bHasWindTotem; +var repnotify float r_fMonolithReduction; +var TgPawn m_CachedPawnOwner; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bHasHealingRain, r_bHasWindTotem, + r_fMonolithReduction, r_fRadiusScale; +} + +// Export UTgDeploy_HealingTotem::execAdjustHeal(FFrame&, void* const) +native function AdjustHeal(const out ImpactInfo Impact, out float fHeal, int nPropertyId); + +// Export UTgDeploy_HealingTotem::execMitigateHealthDamage(FFrame&, void* const) +native function MitigateHealthDamage(TgPawn pInstigator, TgEffectDamage Effect, ImpactInfo Impact, out float NewValue, out float fPercReduction); + +// Export UTgDeploy_HealingTotem::execToggleHealingRainFX(FFrame&, void* const) +native function ToggleHealingRainFX(); + +// Export UTgDeploy_HealingTotem::execToggleWindTotemFX(FFrame&, void* const) +native function ToggleWindTotemFX(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x24 + if(VarName == 'r_bHasHealingRain') + { + ToggleHealingRainFX(); + } + else + { + // End:0x48 + if(VarName == 'r_bHasWindTotem') + { + ToggleWindTotemFX(); + } + else + { + // End:0x69 + if(VarName == 'r_fRadiusScale') + { + ScaleAbilityFX(); + } + } + } + super.ReplicatedEvent(VarName); + //return; +} + +event ScaleAbilityRadius() +{ + local TgProperty EffectRadiusProperty; + local float EffectRadius; + + // End:0xCE + if((m_FireMode != none) && r_fRadiusScale > 0.0000000) + { + EffectRadiusProperty = m_FireMode.GetProperty(6); + // End:0xCE + if(EffectRadiusProperty != none) + { + EffectRadius = EffectRadiusProperty.m_fBase * r_fRadiusScale; + // End:0xCE + if(EffectRadius > 0.0000000) + { + m_FireMode.SetProperty(6, EffectRadius); + } + } + } + //return; +} + +simulated event ScaleAbilityFX() +{ + local array FxList; + local TgSpecialFx Fx; + local editinline ParticleSystemComponent PSC; + local TgProperty EffectRadiusProperty; + local float fDamageRadius, fDamageRadiusUU; + local int I, J; + + // End:0x79F + if(c_Mesh != none) + { + fDamageRadius = 0.0000000; + fDamageRadiusUU = 0.0000000; + // End:0xC2 + if(m_FireMode != none) + { + EffectRadiusProperty = m_FireMode.GetProperty(6); + // End:0xC2 + if(EffectRadiusProperty != none) + { + fDamageRadius = EffectRadiusProperty.m_fBase * r_fRadiusScale; + fDamageRadiusUU = fDamageRadius * float(16); + } + } + FxList = c_Mesh.FxGetAll('AlwaysOn', 0); + I = 0; + J0x103: + + // End:0x276 [Loop If] + if(I < FxList.Length) + { + Fx = TgSpecialFx(FxList[I]); + // End:0x268 + if(Fx != none) + { + J = 0; + J0x15B: + + // End:0x24C [Loop If] + if(J < Fx.c_PSCList.Length) + { + PSC = Fx.c_PSCList[J].c_PSC; + // End:0x23E + if(PSC != none) + { + PSC.SetFloatParameter('DamageRadius', fDamageRadius); + PSC.SetFloatParameter('DamageRadiusUU', fDamageRadiusUU); + } + J++; + // [Loop Continue] + goto J0x15B; + } + UpdateDecalScale(Fx, r_fRadiusScale); + } + I++; + // [Loop Continue] + goto J0x103; + } + FxList = c_Mesh.FxGetAll('OnWhenDeployed', 0); + I = 0; + J0x2B7: + + // End:0x42A [Loop If] + if(I < FxList.Length) + { + Fx = TgSpecialFx(FxList[I]); + // End:0x41C + if(Fx != none) + { + J = 0; + J0x30F: + + // End:0x400 [Loop If] + if(J < Fx.c_PSCList.Length) + { + PSC = Fx.c_PSCList[J].c_PSC; + // End:0x3F2 + if(PSC != none) + { + PSC.SetFloatParameter('DamageRadius', fDamageRadius); + PSC.SetFloatParameter('DamageRadiusUU', fDamageRadiusUU); + } + J++; + // [Loop Continue] + goto J0x30F; + } + UpdateDecalScale(Fx, r_fRadiusScale); + } + I++; + // [Loop Continue] + goto J0x2B7; + } + FxList = c_Mesh.FxGetAll('Destroyed', 0); + I = 0; + J0x46B: + + // End:0x5DE [Loop If] + if(I < FxList.Length) + { + Fx = TgSpecialFx(FxList[I]); + // End:0x5D0 + if(Fx != none) + { + J = 0; + J0x4C3: + + // End:0x5B4 [Loop If] + if(J < Fx.c_PSCList.Length) + { + PSC = Fx.c_PSCList[J].c_PSC; + // End:0x5A6 + if(PSC != none) + { + PSC.SetFloatParameter('DamageRadius', fDamageRadius); + PSC.SetFloatParameter('DamageRadiusUU', fDamageRadiusUU); + } + J++; + // [Loop Continue] + goto J0x4C3; + } + UpdateDecalScale(Fx, r_fRadiusScale); + } + I++; + // [Loop Continue] + goto J0x46B; + } + // End:0x79F + if(r_bHasWindTotem) + { + FxList = c_Mesh.FxGetAll('Totem_WindTotem', 0); + I = 0; + J0x62C: + + // End:0x79F [Loop If] + if(I < FxList.Length) + { + Fx = TgSpecialFx(FxList[I]); + // End:0x775 + if(Fx != none) + { + J = 0; + J0x684: + + // End:0x775 [Loop If] + if(J < Fx.c_PSCList.Length) + { + PSC = Fx.c_PSCList[J].c_PSC; + // End:0x767 + if(PSC != none) + { + PSC.SetFloatParameter('DamageRadius', fDamageRadius); + PSC.SetFloatParameter('DamageRadiusUU', fDamageRadiusUU); + } + J++; + // [Loop Continue] + goto J0x684; + } + } + UpdateDecalScale(Fx, r_fRadiusScale); + I++; + // [Loop Continue] + goto J0x62C; + } + } + } + //return; +} + +defaultproperties +{ + r_fRadiusScale=1.0000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_HealingTotem.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_nInitHUDOverlayDisplayMask=56 + Components[0]=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgDeploy_HealingTotem.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + ReplacementPrimitive=none + CollideActors=true + end object + Components[1]=CollisionCylinder + bCollideActors=true + bCollideWorld=true + bProjTarget=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_HealthNugget.uc b/exported/TgGame/Classes/TgDeploy_HealthNugget.uc new file mode 100755 index 00000000..0098befb --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_HealthNugget.uc @@ -0,0 +1,196 @@ +class TgDeploy_HealthNugget extends TgDeployable + native(Deployable) + notplaceable + hidecategories(Navigation); + +const HEALTH_NUGGET_DOUBLE_ID = 10339; +const HEALTH_NUGGET_HEAL_ALLIES_ID = 10364; +const HEAL_ALLIES_DEPLOYABLE_ID = 685; +const EXIT_STRATEGY_ID = 10698; + +var bool m_bRenderAsActive; +var bool m_bIsActiveRendered; +var bool m_bCountTowardsHealingStats; +var TgHelpTipActor c_HelpTipActor; +var float m_fHealOverride; +var float m_fHoTOverride; +var array m_PendingTouches; + +// Export UTgDeploy_HealthNugget::execDeployAllyHealAOE(FFrame&, void* const) +native function DeployAllyHealAOE(TgPawn_Character TgP); + +// Export UTgDeploy_HealthNugget::execAdjustHeal(FFrame&, void* const) +native function AdjustHeal(const out ImpactInfo Impact, out float fHeal, int nPropertyId); + +simulated event PostBeginPlay() +{ + local TgPlayerController TgPC; + + super.PostBeginPlay(); + // End:0x85 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x85 + if((TgPC != none) && TgPC.c_GameTipManager != none) + { + } + } + //return; +} + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local ImpactInfo HealImpact; + local TgPawn_Character TgP; + local TgDevice Dev; + local int I; + local TgGame_Paladins ChaosGame; + local int bonusScore; + + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + bonusScore = 0; + TgP = TgPawn_Character(Other); + // End:0x457 + if(((int(Role) == int(ROLE_Authority)) && m_FireMode != none) && TgP != none) + { + // End:0xB3 + if(TgP.IsA('TgPawn_Illusion')) + { + return; + } + else + { + // End:0x421 + if(m_bIsDeployed && int(TgP.Physics) != int(17)) + { + HealImpact.bDirectHit = true; + HealImpact.DeviceModeReference = m_FireMode; + HealImpact.HitActor = Other; + HealImpact.HitLocation = Other.Location; + SetFlashLocation(Other.Location); + m_FireMode.ApplyHit(HealImpact, self); + I = 1; + J0x1ED: + + // End:0x338 [Loop If] + if(I < 33) + { + Dev = TgP.GetDeviceByEqPoint(I); + // End:0x32A + if(Dev != none) + { + // End:0x292 + if(Dev.r_nDeviceId == 10339) + { + m_FireMode.ApplyHit(HealImpact, self); + } + else + { + // End:0x2D0 + if(Dev.r_nDeviceId == 10364) + { + DeployAllyHealAOE(TgP); + } + else + { + // End:0x32A + if(Dev.r_nDeviceId == 10698) + { + DeployAllyHealAOE(TgP); + TgP.ExitCombat(); + } + } + } + } + I++; + // [Loop Continue] + goto J0x1ED; + } + TgP.PawnOnGetHealthNugget(self); + ChaosGame = TgGame_Paladins(WorldInfo.Game); + // End:0x413 + if(ChaosGame != none) + { + ChaosGame.OnKillConfirmed(TgP.GetPRI(), TgP.GetPRI().r_TaskForce, bonusScore); + } + DestroyIt(); + } + else + { + // End:0x457 + if(m_PendingTouches.Find(Other) == -1) + { + m_PendingTouches.AddItem(Other); + } + } + } + } + //return; +} + +simulated event UnTouch(Actor Other) +{ + // End:0x47 + if((Other != none) && m_PendingTouches.Find(Other) != -1) + { + m_PendingTouches.RemoveItem(Other); + } + super(Actor).UnTouch(Other); + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + J0x01: + // End:0x21 [Loop If] + if(m_PendingTouches.Length > 0) + { + m_PendingTouches.Remove(0, 1); + // [Loop Continue] + goto J0x01; + } + super.DestroyIt(bSkipFx); + //return; +} + +simulated function Destroyed() +{ + // End:0x3A + if(c_HelpTipActor != none) + { + c_HelpTipActor.Remove(true); + c_HelpTipActor = none; + } + super.Destroyed(); + //return; +} + +defaultproperties +{ + m_bRenderAsActive=true + m_fHealOverride=-1.0000000 + m_fHoTOverride=-1.0000000 + m_bFireOnDeploy=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_HealthNugget.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgDeploy_HealthNugget.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + ReplacementPrimitive=none + CollideActors=true + BlockZeroExtent=false + end object + Components[1]=CollisionCylinder + Physics=EPhysics.PHYS_Falling + bCollideActors=true + bCollideWorld=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_HealthNugget_TeamOnly.uc b/exported/TgGame/Classes/TgDeploy_HealthNugget_TeamOnly.uc new file mode 100755 index 00000000..3c027ce6 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_HealthNugget_TeamOnly.uc @@ -0,0 +1,72 @@ +class TgDeploy_HealthNugget_TeamOnly extends TgDeploy_HealthNugget + native(Deployable) + notplaceable + hidecategories(Navigation); + +var int r_nTaskForceAlignment; +var float m_fNuggetSpawnTime; +var float m_fNuggetGracePeriod; + +replication +{ + // Pos:0x000 + if(bNetInitial && int(Role) == int(ROLE_Authority)) + r_nTaskForceAlignment; +} + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn OtherPawn; + + OtherPawn = TgPawn(Other); + // End:0x11B + if(OtherPawn != none) + { + // End:0xE5 + if((m_fNuggetSpawnTime > 0.0000000) && (m_fNuggetSpawnTime + m_fNuggetGracePeriod) < WorldInfo.TimeSeconds) + { + // End:0xD7 + if(int(OtherPawn.GetTaskForceNumber()) == r_nTaskForceAlignment) + { + super.Touch(Other, OtherComp, HitLocation, HitNormal); + } + else + { + DestroyIt(); + } + } + else + { + // End:0x11B + if(m_PendingTouches.Find(Other) == -1) + { + m_PendingTouches.AddItem(Other); + } + } + } + //return; +} + +defaultproperties +{ + m_fNuggetSpawnTime=-0.5000000 + m_fNuggetGracePeriod=0.5000000 + m_bCountTowardsHealingStats=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_HealthNugget_TeamOnly.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_HealthNugget.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgDeploy_HealthNugget_TeamOnly.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgDeploy_HealthNugget.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + Components[1]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_Illusion.uc b/exported/TgGame/Classes/TgDeploy_Illusion.uc new file mode 100755 index 00000000..383a2022 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_Illusion.uc @@ -0,0 +1,382 @@ +class TgDeploy_Illusion extends TgDeployable + native(ChampYing) + notplaceable + hidecategories(Navigation) + implements(TgInterface_YingIllusion); + +var private native const noexport Pointer VfTable_ITgInterface_YingIllusion; +var repnotify float r_fShatterDelay; +var const int m_nShatterDeviceID; +var TgDeviceFire_ShatterExplosion m_ShatterFiremode; +var int s_nNumBeamHits; +var Vector s_BeamAimDir; +var Actor s_BeamTargetActor; +var repnotify Vector r_BeamTargetPos; +var repnotify byte r_nPlayShatterFX; +var array< delegate > s_OnDestroyDelegates; +//var delegate __DestroyedEvent__Delegate; + +replication +{ + // Pos:0x000 + if(bNetDirty && int(Role) == int(ROLE_Authority)) + r_BeamTargetPos, r_fShatterDelay, + r_nPlayShatterFX; +} + +delegate DestroyedEvent(Actor destroyedActor) +{ + //return; +} + +function TryBeamFire() +{ + // End:0x31 + if(AcquireTarget()) + { + s_BeamAimDir = vect(0.0000000, 0.0000000, 0.0000000); + StartBeamFire(); + } + else + { + SetTimer(0.5000000, false, 'TryBeamFire'); + } + //return; +} + +// Export UTgDeploy_Illusion::execAcquireTarget(FFrame&, void* const) +native function bool AcquireTarget(); + +function StartBeamFire() +{ + // End:0x11 + if(m_FireMode == none) + { + return; + } + s_nNumBeamHits = 5; + BeamFireAtTarget(); + SetTimer(m_FireMode.GetCustomValue1(), true, 'BeamFireAtTarget'); + //return; +} + +function BeamFireAtTarget() +{ + InstantFireDeployable(); + s_nNumBeamHits--; + // End:0x77 + if(s_nNumBeamHits <= 0) + { + ClearTimer('BeamFireAtTarget'); + SetTimer(m_FireMode.m_fFirePostHitDelay, false, 'TryBeamFire'); + SetTimer(0.5000000, false, 'ClearBeamTarget'); + } + //return; +} + +function ClearBeamTarget() +{ + s_BeamAimDir = vect(0.0000000, 0.0000000, 0.0000000); + s_BeamTargetActor = none; + r_BeamTargetPos = vect(0.0000000, 0.0000000, 0.0000000); + bNetDirty = true; + //return; +} + +event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + // End:0x5A + if(m_FireMode != none) + { + super.TakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + } + //return; +} + +function FireShatterDevice() +{ + local AimData Aim; + local array ImpactList; + local int Idx; + + Aim.StartTrace = Location; + Aim.EndTrace = Location; + // End:0x12A + if(m_ShatterFiremode != none) + { + m_ShatterFiremode.CalcWeaponModeFire(self, Aim, ImpactList); + Idx = 0; + J0xA5: + + // End:0x12A [Loop If] + if(Idx < ImpactList.Length) + { + // End:0x11C + if(ImpactList[Idx].HitActor != none) + { + m_ShatterFiremode.ApplyHit(ImpactList[Idx], self); + } + Idx++; + // [Loop Continue] + goto J0xA5; + } + } + //return; +} + +simulated function BeamUpdateFireFXTarget() +{ + // End:0x3C + if((int(WorldInfo.NetMode) == int(NM_DedicatedServer)) || c_Mesh == none) + { + return; + } + // End:0x79 + if(IsZero(r_BeamTargetPos)) + { + c_Mesh.FxDeactivateGroup('Fire', 0); + } + else + { + BeamUpdatePSC(); + c_Mesh.FxActivateGroup('Fire', 0); + } + //return; +} + +simulated function BeamUpdatePSC() +{ + local TgSpecialFx Fx; + local int I; + local array beamFX; + + beamFX = c_Mesh.FxGetAll('Fire', 0); + I = 0; + J0x41: + + // End:0xC6 [Loop If] + if(I < beamFX.Length) + { + Fx = TgSpecialFx(beamFX[I]); + // End:0xB8 + if(Fx != none) + { + Fx.UpdateBeamFx(r_BeamTargetPos); + } + I++; + // [Loop Continue] + goto J0x41; + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x75 + if(VarName == 'r_fShatterDelay') + { + // End:0x72 + if(((r_fShatterDelay > float(0)) && Instigator != none) && !Instigator.IsLocallyControlled()) + { + TriggerShatter(r_fShatterDelay); + } + } + else + { + // End:0x99 + if(VarName == 'r_BeamTargetPos') + { + BeamUpdateFireFXTarget(); + } + else + { + // End:0xBD + if(VarName == 'r_nPlayShatterFX') + { + PlayShatterFX(); + } + else + { + super.ReplicatedEvent(VarName); + } + } + } + //return; +} + +simulated event DestroyIt(optional bool bPlayShatter) +{ + local TgPawn_Ying yingOwner; + local Vector vRotation; + local delegate onEventDelegate; + + // End:0x10 + if(m_bInDestroyedState) + { + return; + } + // End:0xC5 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x50 + foreach s_OnDestroyDelegates(onEventDelegate) + { + DestroyedEvent(self); + } + // End:0xC5 + if(!bPlayShatter) + { + yingOwner = TgPawn_Ying(Instigator); + // End:0xC5 + if((yingOwner != none) && yingOwner.r_bHasCompensate) + { + bPlayShatter = true; + FireShatterDevice(); + } + } + } + // End:0x153 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && bPlayShatter) + { + vRotation = Normal(Vector(Rotation)); + c_Mesh.FxActivateIndependant('IllusionShattered', 0, Location, vRotation); + } + super.DestroyIt(bPlayShatter); + //return; +} + +simulated function TriggerShatter(float fDelay) +{ + //return; +} + +simulated event Shatter() +{ + // End:0x0F + if(m_bInDestroyedState) + { + return; + } + FireShatterDevice(); + PlayShatterFX(); + //return; +} + +simulated function PlayShatterFX() +{ + local Vector vRotation; + + // End:0x2B + if(int(Role) == int(ROLE_Authority)) + { + r_nPlayShatterFX++; + bNetDirty = true; + } + // End:0xAA + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + vRotation = Normal(Vector(Rotation)); + c_Mesh.FxActivateIndependant('IllusionShattered', 0, Location, vRotation); + } + //return; +} + +function AddOnDestroyDelegate(delegate delDestroy) +{ + // End:0x36 + if(s_OnDestroyDelegates.Find(delDestroy) == -1) + { + s_OnDestroyDelegates.AddItem(delDestroy); + } + //return; +} + +// Export UTgDeploy_Illusion::execGetActorFromInterface(FFrame&, void* const) +native function Actor GetActorFromInterface(); + +// Export UTgDeploy_Illusion::execIsNotDestroyed(FFrame&, void* const) +native function bool IsNotDestroyed(); + +simulated function PlayDimensionalLinkFX() +{ + // End:0x78 + if((c_Mesh != none) && !m_bInDestroyedState) + { + c_Mesh.FxDeactivateGroup('YingDimensionalLink', 0); + c_Mesh.FxActivateGroup('YingDimensionalLink', 0); + } + //return; +} + +function TgPawn_Ying GetOwningYing() +{ + // End:0x37 + if(r_Owner != none) + { + return TgPawn_Ying(r_Owner.Instigator); + } + return none; + //return ReturnValue; +} + +simulated state Deploy +{ + simulated function BeginState(name PreviousStateName) + { + super.BeginState(PreviousStateName); + // End:0xA0 + if(c_Mesh != none) + { + SetCollision(false, false, false); + c_Mesh.SetHidden(true); + c_Mesh.FxDeactivateGroup('WhileAlive', 0); + c_Mesh.FxActivateGroup('RiftIllusionSpawned', 0, 0, 0, true); + } + //return; + } + + simulated function EndState(name NextStateName) + { + super.EndState(NextStateName); + // End:0xCD + if(c_Mesh != none) + { + c_Mesh.SetHidden(false); + c_Mesh.FxDeactivateGroup('RiftIllusionSpawned', 0); + c_Mesh.FxActivateGroup('IllusionSpawned', 0, 0, 0, true); + c_Mesh.FxActivateGroup('WhileAlive', 0, 0, 0, true); + SetCollision(true, true, false); + } + //return; + } + stop; +} + +defaultproperties +{ + m_nShatterDeviceID=13284 + m_bAdjustMeshToGround=false + m_InitHUDOverlayIcon=DeployableOverlayIcon.DOI_ILLUSION + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Illusion.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_nInitHUDOverlayDisplayMask=33 + Components[0]=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgDeploy_Illusion.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + ReplacementPrimitive=none + CollideActors=true + BlockActors=true + end object + Components[1]=CollisionCylinder + bCollideActors=true + bBlockActors=true + bProjTarget=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_IllusionLongbow.uc b/exported/TgGame/Classes/TgDeploy_IllusionLongbow.uc new file mode 100755 index 00000000..de152af3 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_IllusionLongbow.uc @@ -0,0 +1,141 @@ +class TgDeploy_IllusionLongbow extends TgDeployable + native(ChampLongbow) + notplaceable + hidecategories(Navigation); + +var int c_nDefaultBodyMeshId; +var int c_nDefaultHeadMeshId; +var int c_nDefaultWeaponMeshId; +var export editinline TgSkeletalMeshComponent m_HeadMesh; +var export editinline TgSkeletalMeshComponent_Weapon m_WeaponMesh; +var array m_bodyReplacementMICs; +var array m_headReplacementMICs; +var array m_weaponReplacementMICs; +var bool m_bFadingAway; +var const float m_fLifeAfterDeathOverride; +var TgCollisionProxy_Cylinder m_FxCollisionProxy; +var float m_fCollisionRadius; + +// Export UTgDeploy_IllusionLongbow::execUpdateFadeAway(FFrame&, void* const) +native function UpdateFadeAway(); + +// Export UTgDeploy_IllusionLongbow::execFixupMeshComponent(FFrame&, void* const) +native function FixupMeshComponent(int nMeshId, TgSkeletalMeshComponent Component); + +// Export UTgDeploy_IllusionLongbow::execReplaceWithFadeOutMaterial(FFrame&, void* const) +native function ReplaceWithFadeOutMaterial(); + +simulated event OnProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn pawnOther; + local editinline MeshComponent ComponentIt; + + // End:0xDB + if(((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && Other != none) && c_Mesh != none) + { + pawnOther = TgPawn(Other); + // End:0xDB + if((pawnOther != none) && pawnOther.IsLocallyControlled()) + { + // End:0xDA + foreach ComponentList(Class'Engine.MeshComponent', ComponentIt) + { + ComponentIt.SetHidden(true); + } + } + } + //return; +} + +simulated event OnProxyUnTouch(Actor Other) +{ + local TgPawn pawnOther; + local editinline MeshComponent ComponentIt; + + // End:0xDB + if(((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && Other != none) && c_Mesh != none) + { + pawnOther = TgPawn(Other); + // End:0xDB + if((pawnOther != none) && pawnOther.IsLocallyControlled()) + { + // End:0xDA + foreach ComponentList(Class'Engine.MeshComponent', ComponentIt) + { + ComponentIt.SetHidden(false); + } + } + } + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + local editinline MeshComponent ComponentIt; + + super.DestroyIt(bSkipFx); + // End:0x88 + if(m_FxCollisionProxy != none) + { + m_FxCollisionProxy.Destroy(); + m_FxCollisionProxy = none; + // End:0x87 + foreach ComponentList(Class'Engine.MeshComponent', ComponentIt) + { + ComponentIt.SetHidden(false); + } + } + //return; +} + +simulated event Destroyed() +{ + // End:0x32 + if(m_FxCollisionProxy != none) + { + m_FxCollisionProxy.Destroy(); + m_FxCollisionProxy = none; + } + super.Destroyed(); + //return; +} + +simulated event SpawnCollisionProxy() +{ + // End:0x32 + if(m_FxCollisionProxy != none) + { + m_FxCollisionProxy.Destroy(); + m_FxCollisionProxy = none; + } + m_FxCollisionProxy = Spawn(Class'TgGame.TgCollisionProxy_Cylinder', self,, self.Location,,, true); + // End:0x179 + if(m_FxCollisionProxy != none) + { + m_FxCollisionProxy.SetBase(self); + m_FxCollisionProxy.__ProxyTouch__Delegate = OnProxyTouch; + m_FxCollisionProxy.__ProxyUnTouch__Delegate = OnProxyUnTouch; + m_FxCollisionProxy.DelegatesUpdated(); + m_FxCollisionProxy.m_CollisionCylinder.SetCylinderSize(m_fCollisionRadius, m_fCollisionRadius); + m_FxCollisionProxy.DelegatesUpdated(); + } + //return; +} + +defaultproperties +{ + c_nDefaultBodyMeshId=6043 + c_nDefaultHeadMeshId=6700 + c_nDefaultWeaponMeshId=6505 + m_fLifeAfterDeathOverride=1.5000000 + m_fCollisionRadius=7.0000000 + m_bUseSilhouettesOverride=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_IllusionLongbow.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_MatchParentFireMode.uc b/exported/TgGame/Classes/TgDeploy_MatchParentFireMode.uc new file mode 100755 index 00000000..90bd5139 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_MatchParentFireMode.uc @@ -0,0 +1,16 @@ +class TgDeploy_MatchParentFireMode extends TgDeployable + native(Deployable) + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_MatchParentFireMode.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_Midnight.uc b/exported/TgGame/Classes/TgDeploy_Midnight.uc new file mode 100755 index 00000000..8c08712b --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_Midnight.uc @@ -0,0 +1,189 @@ +class TgDeploy_Midnight extends TgDeployable + native(ChampBlades) + placeable + hidecategories(Navigation); + +var repnotify float r_fPersistTime; +var TgPawn r_TargetPawn; +var MaterialInstanceConstant m_pMIC; +var const Class m_FogInfoClass; +var TgMidnightFogVolumeDensityInfo m_FogInfo; +var bool m_bCleanedUp; +var bool m_b3PFxActive; +var bool m_b1PSoundActive; + +replication +{ + // Pos:0x000 + if(bNetDirty && int(Role) == int(ROLE_Authority)) + r_TargetPawn, r_fPersistTime; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x21 + if(VarName == 'r_fPersistTime') + { + SetPersistTimer(); + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated event SetPersistTimer() +{ + // End:0x2A + if(r_fPersistTime > 0.0000000) + { + SetTimer(r_fPersistTime, false, 'MidnightDeployablePersistTimer'); + } + // End:0x7D + if((m_FogInfo != none) && r_fPersistTime > 0.0000000) + { + m_FogInfo.m_fDestroyTimer = r_fPersistTime * 1.2500000; + } + //return; +} + +// Export UTgDeploy_Midnight::execApplyCameraEffectParams(FFrame&, void* const) +native function ApplyCameraEffectParams(); + +simulated function MidnightDeployablePersistTimer() +{ + // End:0x59 + if((m_FogInfo != none) && !m_FogInfo.m_bIsFadingOut) + { + m_FogInfo.FadeOut(0.5000000); + } + //return; +} + +simulated function Destroyed() +{ + Cleanup(); + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + Cleanup(); + super.DestroyIt(bSkipFx); + //return; +} + +simulated function Cleanup() +{ + // End:0x156 + if(!m_bCleanedUp) + { + m_bCleanedUp = true; + // End:0x98 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x98 + if(r_TargetPawn != none) + { + r_TargetPawn.RemoveBlindingDeployable(self); + // End:0x98 + if(m_FireMode != none) + { + m_FireMode.RemoveHitSpecial(r_TargetPawn, true); + } + } + } + // End:0xF1 + if((m_FogInfo != none) && !m_FogInfo.m_bIsFadingOut) + { + m_FogInfo.FadeOut(0.5000000); + } + // End:0x156 + if(c_Mesh != none) + { + c_Mesh.FxDeactivateGroup('Generic1', 0); + c_Mesh.FxDeactivateGroup('Generic2', 0); + } + } + //return; +} + +// Export UTgDeploy_Midnight::execCreateMIC(FFrame&, void* const) +native function MaterialInstanceConstant CreateMIC(MaterialInterface pMaterialInterface); + +simulated event SpawnFog() +{ + // End:0x175 + if((m_FogInfo == none) && m_FogInfoClass != none) + { + m_FogInfo = Spawn(m_FogInfoClass, self,, Location,,, true); + // End:0x175 + if(m_FogInfo != none) + { + // End:0xEF + if(m_FogInfo.SphericalDensityComponent != none) + { + m_FogInfo.SphericalDensityComponent.FogMaterial = CreateMIC(m_FogInfo.SphericalDensityComponent.FogMaterial); + } + m_FogInfo.Attach(self); + m_FogInfo.SetAlpha(0.0000000); + // End:0x175 + if(r_fPersistTime > 0.0000000) + { + m_FogInfo.m_fDestroyTimer = r_fPersistTime * 1.5000000; + } + } + } + //return; +} + +simulated event SetFogEnabled(bool bEnabled) +{ + // End:0x38 + if(m_FogInfo != none) + { + m_FogInfo.ToggleFog(bEnabled); + } + //return; +} + +simulated event SetFogDistance(float fDistance) +{ + // End:0x37 + if(m_FogInfo != none) + { + m_FogInfo.SetStartDistance(fDistance); + } + //return; +} + +simulated event SetFogAlpha(float fAlpha) +{ + // End:0x37 + if(m_FogInfo != none) + { + m_FogInfo.SetAlpha(fAlpha); + } + //return; +} + +simulated event SetFogOrigin(Vector vOrigin) +{ + // End:0x37 + if(m_FogInfo != none) + { + m_FogInfo.SetOrigin(vOrigin); + } + //return; +} + +defaultproperties +{ + m_FogInfoClass=Class'TgGame.TgMidnightFogVolumeDensityInfo' + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Midnight.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_Molotov.uc b/exported/TgGame/Classes/TgDeploy_Molotov.uc new file mode 100755 index 00000000..c651e284 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_Molotov.uc @@ -0,0 +1,2297 @@ +class TgDeploy_Molotov extends TgDeploy_EffectSpots + native(ChampTyra) + placeable + hidecategories(Navigation); + +const MOLOTOV_CENTER_POINTS = 18; +const MOLOTOV_NO_NEIGHBOR = -1; +const MOLOTOV_BLOCK_NEIGHBOR = -2; + +struct native MolotovPointInfo +{ + var Vector vLocation; + var Rotator rRotation; + var int nEffectSpotIndex; + var float fHeatLevel; + var array nTriNeighbors; + + structdefaultproperties + { + vLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + rRotation=(Pitch=0,Yaw=0,Roll=0) + nEffectSpotIndex=0 + fHeatLevel=0.0000000 + nTriNeighbors=none + } +}; + +struct native MolotovCenterInfo +{ + var int ChildrenFront[3]; + var int ChildrenFrontLeft[3]; + var int ChildrenFrontRight[3]; + var int ChildrenBack[3]; + var int ChildrenBackLeft[3]; + var int ChildrenBackRight[3]; + + structdefaultproperties + { + ChildrenFront[0]=0 + ChildrenFront[1]=0 + ChildrenFront[2]=0 + ChildrenFrontLeft[0]=0 + ChildrenFrontLeft[1]=0 + ChildrenFrontLeft[2]=0 + ChildrenFrontRight[0]=0 + ChildrenFrontRight[1]=0 + ChildrenFrontRight[2]=0 + ChildrenBack[0]=0 + ChildrenBack[1]=0 + ChildrenBack[2]=0 + ChildrenBackLeft[0]=0 + ChildrenBackLeft[1]=0 + ChildrenBackLeft[2]=0 + ChildrenBackRight[0]=0 + ChildrenBackRight[1]=0 + ChildrenBackRight[2]=0 + } +}; + +struct native MolotovTriangleInfo +{ + var int index1; + var int index2; + var int index3; + var int neighborIndex1; + var int neighborIndex2; + var int neighborIndex3; + var int nRank; + var float fHeatLevel; + var Vector vTriCenter; + var Vector vCenterDirection; + + structdefaultproperties + { + index1=0 + index2=0 + index3=0 + neighborIndex1=0 + neighborIndex2=0 + neighborIndex3=0 + nRank=0 + fHeatLevel=0.0000000 + vTriCenter=(X=0.0000000,Y=0.0000000,Z=0.0000000) + vCenterDirection=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct native MolotovStrandInfo +{ + var Vector vStartDirection; + var float fAllowanceWeight; + var int nHeadIndex; + var int nAllowableSize; + var array nStrandTrace; + + structdefaultproperties + { + vStartDirection=(X=0.0000000,Y=0.0000000,Z=0.0000000) + fAllowanceWeight=0.0000000 + nHeadIndex=0 + nAllowableSize=0 + nStrandTrace=none + } +}; + +struct native MolotovGrowthInfo +{ + var int nStrandAllotment; + var int nMaxSpots; + var int nMaxInitialStrands; + var float fStrandGrowthFraction; + var bool bStrandsAreSaturated; + var int nCenterGrowthVariance; + var int nSpreadsPerTick; + + structdefaultproperties + { + nStrandAllotment=0 + nMaxSpots=0 + nMaxInitialStrands=0 + fStrandGrowthFraction=0.0000000 + bStrandsAreSaturated=false + nCenterGrowthVariance=0 + nSpreadsPerTick=0 + } +}; + +struct native MolotovGeneralSettings +{ + var Vector vBiasDirection; + var float fUpFactor; + var const float fSpotRadius; + var const float fSpotHeight; + + structdefaultproperties + { + vBiasDirection=(X=0.0000000,Y=0.0000000,Z=0.0000000) + fUpFactor=0.0000000 + fSpotRadius=0.0000000 + fSpotHeight=0.0000000 + } +}; + +struct native MolotovEligibilityRecord +{ + var bool bIsEligible; + var Vector vLocation; + var Vector vHitNormal; + + structdefaultproperties + { + bIsEligible=false + vLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + vHitNormal=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +var array m_PointInfos; +var MolotovCenterInfo m_CenterInfo; +var array m_TriInfos; +var array m_StrandInfos; +var MolotovGrowthInfo m_GrowthInfo; +var MolotovGeneralSettings m_Settings; + +// Export UTgDeploy_Molotov::execGetSpawnEligibility(FFrame&, void* const) +native function MolotovEligibilityRecord GetSpawnEligibility(Vector StartLocation, float Radius, float Height); + +// Export UTgDeploy_Molotov::execRemoveEffects(FFrame&, void* const) +native function RemoveEffects(Actor Target); + +simulated event bool CheckItemShopVolumeFailure(Vector TestLocation) +{ + local TgItemShopVolume ItemShop; + local int nTaskForceNumber; + + nTaskForceNumber = GetTaskForceNumber(); + // End:0x8A + foreach AllActors(Class'TgGame.TgItemShopVolume', ItemShop) + { + // End:0x89 + if((ItemShop.TaskforceIndex != nTaskForceNumber) && ItemShop.EncompassesPoint(TestLocation)) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated function Tick(float DeltaSeconds) +{ + local int I; + + super.Tick(DeltaSeconds); + // End:0x1FF + if(((int(Role) == int(ROLE_Authority)) && !m_bInDestroyedState) && m_TriInfos.Length > 0) + { + UpdateHeatLevels(); + // End:0x1FF + if(m_nNewSpotIndex < m_GrowthInfo.nMaxSpots) + { + CompleteSaturationLevel5Points(); + // End:0xB4 + if(m_nNewSpotIndex >= m_GrowthInfo.nMaxSpots) + { + return; + } + // End:0x150 + if(!m_GrowthInfo.bStrandsAreSaturated) + { + UpdateStrandAllowances(); + I = 0; + J0xEB: + + // End:0x150 [Loop If] + if(I < m_StrandInfos.Length) + { + SpawnFromStrand(I); + // End:0x142 + if(m_nNewSpotIndex >= m_GrowthInfo.nMaxSpots) + { + return; + } + ++I; + // [Loop Continue] + goto J0xEB; + } + } + SpawnFromPeripheral(); + // End:0x186 + if(m_nNewSpotIndex >= m_GrowthInfo.nMaxSpots) + { + return; + } + I = 0; + J0x191: + + // End:0x1FF [Loop If] + if(I < m_GrowthInfo.nSpreadsPerTick) + { + SpawnFromCenter(); + // End:0x1F1 + if(m_nNewSpotIndex >= m_GrowthInfo.nMaxSpots) + { + return; + } + ++I; + // [Loop Continue] + goto J0x191; + } + } + } + //return; +} + +function CompleteSaturationLevel5Points() +{ + local int I, J, numPoints; + + numPoints = m_PointInfos.Length; + I = 0; + J0x1F: + + // End:0x563 [Loop If] + if(I < m_PointInfos.Length) + { + // End:0x555 + if(m_PointInfos[I].nTriNeighbors.Length == 5) + { + J = 0; + J0x70: + + // End:0x555 [Loop If] + if(J < m_PointInfos[I].nTriNeighbors.Length) + { + // End:0x231 + if(m_TriInfos[m_PointInfos[I].nTriNeighbors[J]].index1 == I) + { + // End:0x198 + if(m_TriInfos[m_PointInfos[I].nTriNeighbors[J]].neighborIndex1 == -1) + { + SpawnFromTriangle(m_PointInfos[I].nTriNeighbors[J], 1); + // [Explicit Break] + goto J0x555; + } + else + { + // End:0x22E + if(m_TriInfos[m_PointInfos[I].nTriNeighbors[J]].neighborIndex3 == -1) + { + SpawnFromTriangle(m_PointInfos[I].nTriNeighbors[J], 3); + // [Explicit Break] + goto J0x555; + } + } + } + else + { + // End:0x3BD + if(m_TriInfos[m_PointInfos[I].nTriNeighbors[J]].index2 == I) + { + // End:0x324 + if(m_TriInfos[m_PointInfos[I].nTriNeighbors[J]].neighborIndex1 == -1) + { + SpawnFromTriangle(m_PointInfos[I].nTriNeighbors[J], 1); + // [Explicit Break] + goto J0x555; + } + else + { + // End:0x3BA + if(m_TriInfos[m_PointInfos[I].nTriNeighbors[J]].neighborIndex2 == -1) + { + SpawnFromTriangle(m_PointInfos[I].nTriNeighbors[J], 2); + // [Explicit Break] + goto J0x555; + } + } + } + else + { + // End:0x547 + if(m_TriInfos[m_PointInfos[I].nTriNeighbors[J]].index3 == I) + { + // End:0x4B1 + if(m_TriInfos[m_PointInfos[I].nTriNeighbors[J]].neighborIndex2 == -1) + { + SpawnFromTriangle(m_PointInfos[I].nTriNeighbors[J], 2); + // [Explicit Break] + goto J0x555; + } + else + { + // End:0x547 + if(m_TriInfos[m_PointInfos[I].nTriNeighbors[J]].neighborIndex3 == -1) + { + SpawnFromTriangle(m_PointInfos[I].nTriNeighbors[J], 3); + // [Explicit Break] + goto J0x555; + } + } + } + } + } + ++J; + // [Loop Continue] + goto J0x70; + } + } + J0x555: + + ++I; + // [Loop Continue] + goto J0x1F; + } + // End:0x57B + if(numPoints != m_PointInfos.Length) + { + } + //return; +} + +function UpdateHeatLevels() +{ + local int I, J, nIntensityLevel, nTier1, nTier2; + + local float fHeatLevel, fAdjustedRank; + local bool bInsertAtEnd; + local array heatIndexes; + local array heatLevels; + + I = 0; + J0x0B: + + // End:0x5D [Loop If] + if(I < m_PointInfos.Length) + { + m_PointInfos[I].fHeatLevel = 0.0000000; + ++I; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x68: + + // End:0x36B [Loop If] + if(I < m_TriInfos.Length) + { + fAdjustedRank = float(m_TriInfos[I].nRank); + fAdjustedRank *= fAdjustedRank; + // End:0xE8 + if(fAdjustedRank == 0.0000000) + { + fAdjustedRank = 0.5000000; + } + fHeatLevel = 1.0000000 / fAdjustedRank; + // End:0x16D + if(m_TriInfos[I].neighborIndex1 > -1) + { + fHeatLevel += (CalcHeatLevel(m_TriInfos[I].neighborIndex1)); + } + // End:0x1D8 + if(m_TriInfos[I].neighborIndex2 > -1) + { + fHeatLevel += (CalcHeatLevel(m_TriInfos[I].neighborIndex2)); + } + // End:0x243 + if(m_TriInfos[I].neighborIndex3 > -1) + { + fHeatLevel += (CalcHeatLevel(m_TriInfos[I].neighborIndex3)); + } + m_TriInfos[I].fHeatLevel = fHeatLevel; + m_PointInfos[m_TriInfos[I].index1].fHeatLevel += fHeatLevel; + m_PointInfos[m_TriInfos[I].index2].fHeatLevel += fHeatLevel; + m_PointInfos[m_TriInfos[I].index3].fHeatLevel += fHeatLevel; + ++I; + // [Loop Continue] + goto J0x68; + } + I = 0; + J0x376: + + // End:0x526 [Loop If] + if(I < m_PointInfos.Length) + { + // End:0x3C1 + if(m_PointInfos[I].nEffectSpotIndex == -1) + { + } + else + { + bInsertAtEnd = true; + // End:0x518 + if(heatLevels.Length == heatIndexes.Length) + { + J = 0; + J0x3F1: + + // End:0x4BF [Loop If] + if(J < heatIndexes.Length) + { + // End:0x4B1 + if(m_PointInfos[I].fHeatLevel < heatLevels[J]) + { + heatIndexes.InsertItem(J, I); + heatLevels.InsertItem(J, m_PointInfos[I].fHeatLevel); + bInsertAtEnd = false; + // [Explicit Break] + goto J0x4BF; + } + ++J; + // [Loop Continue] + goto J0x3F1; + } + J0x4BF: + + // End:0x515 + if(bInsertAtEnd) + { + heatIndexes.AddItem(I); + heatLevels.AddItem(m_PointInfos[I].fHeatLevel); + } + } + } + ++I; + // [Loop Continue] + goto J0x376; + } + nTier1 = heatIndexes.Length / 3; + nTier2 = nTier1 * 2; + I = 0; + J0x560: + + // End:0x603 [Loop If] + if(I < heatIndexes.Length) + { + // End:0x59D + if(I < nTier1) + { + nIntensityLevel = 1; + } + else + { + // End:0x5C3 + if(I < nTier2) + { + nIntensityLevel = 2; + } + else + { + nIntensityLevel = 3; + } + } + SetPointIntensity(heatIndexes[I], nIntensityLevel); + ++I; + // [Loop Continue] + goto J0x560; + } + UpdateEffectSpots(); + //return; +} + +function float CalcHeatLevel(int triIndex) +{ + local float fAdjustedRank; + + // End:0x2F + if((triIndex < 0) || triIndex >= m_TriInfos.Length) + { + return 0.0000000; + } + fAdjustedRank = float(m_TriInfos[triIndex].nRank); + fAdjustedRank *= fAdjustedRank; + // End:0x97 + if(fAdjustedRank == 0.0000000) + { + fAdjustedRank = 0.5000000; + } + return 1.0000000 / fAdjustedRank; + //return ReturnValue; +} + +function UpdateStrandAllowances() +{ + local float fTimeElapsed, fDuration, fElapsedPercent, fRandomChance, fWeightSum, fRunningProbability; + + local int nTotalStrandSizeAllowed, nTotalStrandSizeCurrent, I; + local bool bFoundValidGrowth; + + // End:0x3BE + if(m_StrandInfos.Length > 0) + { + fTimeElapsed = GetTimerCount('OnPersistTimerExpire'); + fDuration = GetTimerRate('OnPersistTimerExpire') * m_GrowthInfo.fStrandGrowthFraction; + // End:0xBF + if((fDuration > 0.0000000) && fTimeElapsed >= 0.0000000) + { + fElapsedPercent = FClamp(fTimeElapsed / fDuration, 0.0000000, 1.0000000); + } + else + { + fElapsedPercent = 1.0000000; + } + nTotalStrandSizeAllowed = int(float(m_GrowthInfo.nStrandAllotment) * fElapsedPercent); + nTotalStrandSizeCurrent = 0; + fWeightSum = 0.0000000; + I = 0; + J0x128: + + // End:0x1B0 [Loop If] + if(I < m_StrandInfos.Length) + { + nTotalStrandSizeCurrent += m_StrandInfos[I].nAllowableSize; + fWeightSum += m_StrandInfos[I].fAllowanceWeight; + ++I; + // [Loop Continue] + goto J0x128; + } + // End:0x223 + if((fWeightSum <= 0.0000000) || (fElapsedPercent >= 1.0000000) && nTotalStrandSizeCurrent == m_GrowthInfo.nStrandAllotment) + { + m_GrowthInfo.bStrandsAreSaturated = true; + } + bFoundValidGrowth = true; + J0x22F: + + // End:0x3BE [Loop If] + if((bFoundValidGrowth && fWeightSum > 0.0000000) && nTotalStrandSizeCurrent < nTotalStrandSizeAllowed) + { + bFoundValidGrowth = false; + fRunningProbability = 0.0000000; + fRandomChance = FRand() * fWeightSum; + I = 0; + J0x2A7: + + // End:0x3BB [Loop If] + if(I < m_StrandInfos.Length) + { + // End:0x2F2 + if(m_StrandInfos[I].fAllowanceWeight <= 0.0000000) + { + } + else + { + fRunningProbability += m_StrandInfos[I].fAllowanceWeight; + // End:0x3AD + if(fRunningProbability > fRandomChance) + { + m_StrandInfos[I].nAllowableSize++; + nTotalStrandSizeCurrent++; + bFoundValidGrowth = true; + fWeightSum -= m_StrandInfos[I].fAllowanceWeight; + // [Explicit Break] + goto J0x3BB; + } + } + ++I; + // [Loop Continue] + goto J0x2A7; + } + J0x3BB: + + // [Loop Continue] + goto J0x22F; + } + } + //return; +} + +function bool IsInStrand(int triIndex, int strandIndex) +{ + local int I; + + // End:0x56 + if((((triIndex < 0) || triIndex >= m_TriInfos.Length) || strandIndex < 0) || strandIndex >= m_StrandInfos.Length) + { + return false; + } + I = 0; + J0x61: + + // End:0xE4 [Loop If] + if(I < m_StrandInfos[strandIndex].nStrandTrace.Length) + { + // End:0xD6 + if(m_StrandInfos[strandIndex].nStrandTrace[I] == triIndex) + { + return true; + } + ++I; + // [Loop Continue] + goto J0x61; + } + return false; + //return ReturnValue; +} + +function float GetStrandSpreadWeight(int strandNum, int neighborNum) +{ + local int EdgeStart, EdgeEnd; + local float fCurlDot, fWeight; + local Vector curlDeviance, headCenter, edgeCenter; + local MolotovTriangleInfo strandTri; + + // End:0x2F + if((strandNum < 0) || strandNum >= m_StrandInfos.Length) + { + return 0.0000000; + } + EdgeStart = -1; + EdgeEnd = -1; + strandTri = m_TriInfos[m_StrandInfos[strandNum].nHeadIndex]; + switch(neighborNum) + { + // End:0x113 + case 1: + // End:0x110 + if(strandTri.neighborIndex1 == -1) + { + EdgeStart = strandTri.index1; + EdgeEnd = strandTri.index2; + } + // End:0x210 + break; + // End:0x18D + case 2: + // End:0x18A + if(strandTri.neighborIndex2 == -1) + { + EdgeStart = strandTri.index2; + EdgeEnd = strandTri.index3; + } + // End:0x210 + break; + // End:0x207 + case 3: + // End:0x204 + if(strandTri.neighborIndex3 == -1) + { + EdgeStart = strandTri.index3; + EdgeEnd = strandTri.index1; + } + // End:0x210 + break; + // End:0xFFFF + default: + return 0.0000000; + break; + } + // End:0x3E9 + if((EdgeStart >= 0) && EdgeEnd >= 0) + { + headCenter = m_TriInfos[m_StrandInfos[strandNum].nHeadIndex].vTriCenter; + edgeCenter = ((m_PointInfos[EdgeEnd].vLocation - m_PointInfos[EdgeStart].vLocation) / float(2)) + m_PointInfos[EdgeStart].vLocation; + curlDeviance = edgeCenter - headCenter; + curlDeviance.Z = 0.0000000; + curlDeviance = Normal(curlDeviance); + fCurlDot = (m_StrandInfos[strandNum].vStartDirection Dot curlDeviance) + float(1); + // End:0x3E9 + if(fCurlDot >= float(1)) + { + fWeight = fCurlDot; + fWeight *= fWeight; + fWeight /= float(4); + return fWeight; + } + } + return 0.0000000; + //return ReturnValue; +} + +function PushStrandToTip(int strandNum) +{ + local int I, headIndex, highestRank, highestRankIndex, tiedIndex; + + local bool bPushEnded, bIsInStrand; + local MolotovTriangleInfo strandTri; + + // End:0x2B + if((strandNum < 0) || strandNum >= m_StrandInfos.Length) + { + return; + } + headIndex = m_StrandInfos[strandNum].nHeadIndex; + // End:0x804 + if(headIndex >= 0) + { + bPushEnded = false; + J0x76: + + // End:0x804 [Loop If] + if(!bPushEnded) + { + strandTri = m_TriInfos[headIndex]; + highestRank = strandTri.nRank; + highestRankIndex = -1; + tiedIndex = -1; + // End:0x2FA + if((strandTri.neighborIndex1 > -1) && m_TriInfos[strandTri.neighborIndex1].nRank > 0) + { + bIsInStrand = false; + I = 0; + J0x164: + + // End:0x1CB [Loop If] + if(I < m_StrandInfos.Length) + { + // End:0x1BD + if(IsInStrand(strandTri.neighborIndex1, I)) + { + bIsInStrand = true; + // [Explicit Break] + goto J0x1CB; + } + ++I; + // [Loop Continue] + goto J0x164; + } + J0x1CB: + + // End:0x2FA + if(!bIsInStrand) + { + // End:0x28D + if(m_TriInfos[strandTri.neighborIndex1].nRank > highestRank) + { + highestRank = m_TriInfos[strandTri.neighborIndex1].nRank; + highestRankIndex = strandTri.neighborIndex1; + } + else + { + // End:0x2FA + if(m_TriInfos[strandTri.neighborIndex1].nRank == highestRank) + { + tiedIndex = strandTri.neighborIndex1; + } + } + } + } + // End:0x50E + if((strandTri.neighborIndex2 > -1) && m_TriInfos[strandTri.neighborIndex2].nRank > 0) + { + bIsInStrand = false; + I = 0; + J0x378: + + // End:0x3DF [Loop If] + if(I < m_StrandInfos.Length) + { + // End:0x3D1 + if(IsInStrand(strandTri.neighborIndex2, I)) + { + bIsInStrand = true; + // [Explicit Break] + goto J0x3DF; + } + ++I; + // [Loop Continue] + goto J0x378; + } + J0x3DF: + + // End:0x50E + if(!bIsInStrand) + { + // End:0x4A1 + if(m_TriInfos[strandTri.neighborIndex2].nRank > highestRank) + { + highestRank = m_TriInfos[strandTri.neighborIndex2].nRank; + highestRankIndex = strandTri.neighborIndex2; + } + else + { + // End:0x50E + if(m_TriInfos[strandTri.neighborIndex2].nRank == highestRank) + { + tiedIndex = strandTri.neighborIndex2; + } + } + } + } + // End:0x722 + if((strandTri.neighborIndex3 > -1) && m_TriInfos[strandTri.neighborIndex3].nRank > 0) + { + bIsInStrand = false; + I = 0; + J0x58C: + + // End:0x5F3 [Loop If] + if(I < m_StrandInfos.Length) + { + // End:0x5E5 + if(IsInStrand(strandTri.neighborIndex3, I)) + { + bIsInStrand = true; + // [Explicit Break] + goto J0x5F3; + } + ++I; + // [Loop Continue] + goto J0x58C; + } + J0x5F3: + + // End:0x722 + if(!bIsInStrand) + { + // End:0x6B5 + if(m_TriInfos[strandTri.neighborIndex3].nRank > highestRank) + { + highestRank = m_TriInfos[strandTri.neighborIndex3].nRank; + highestRankIndex = strandTri.neighborIndex3; + } + else + { + // End:0x722 + if(m_TriInfos[strandTri.neighborIndex3].nRank == highestRank) + { + tiedIndex = strandTri.neighborIndex3; + } + } + } + } + // End:0x7F5 + if(highestRank > strandTri.nRank) + { + // End:0x77C + if((tiedIndex >= 0) && FRand() < 0.5000000) + { + highestRankIndex = tiedIndex; + } + headIndex = highestRankIndex; + m_StrandInfos[strandNum].nStrandTrace.AddItem(headIndex); + m_StrandInfos[strandNum].nHeadIndex = headIndex; + } + else + { + bPushEnded = true; + } + // [Loop Continue] + goto J0x76; + } + } + return; + //return; +} + +function SpawnFromStrand(int strandNum) +{ + local int newTriIndex, I; + local float fRandomChance, fRunningProbability, fWeight, fWeightSum; + local array fWeights; + + PushStrandToTip(strandNum); + // End:0x92 + if(((strandNum < 0) || strandNum >= m_StrandInfos.Length) || m_StrandInfos[strandNum].nStrandTrace.Length >= m_StrandInfos[strandNum].nAllowableSize) + { + return; + } + fWeightSum = 0.0000000; + I = 1; + J0xAC: + + // End:0x11A [Loop If] + if(I <= 3) + { + fWeight = GetStrandSpreadWeight(strandNum, I); + fWeightSum += fWeight; + fWeights.AddItem(fWeight); + ++I; + // [Loop Continue] + goto J0xAC; + } + // End:0x12F + if(fWeightSum == 0.0000000) + { + return; + } + fRunningProbability = 0.0000000; + fRandomChance = FRand() * fWeightSum; + newTriIndex = -1; + I = 0; + J0x16F: + + // End:0x233 [Loop If] + if(I < fWeights.Length) + { + // End:0x1A7 + if(fWeights[I] <= 0.0000000) + { + } + else + { + fRunningProbability += fWeights[I]; + // End:0x225 + if(fRunningProbability > fRandomChance) + { + newTriIndex = SpawnFromTriangle(m_StrandInfos[strandNum].nHeadIndex, I + 1); + // [Explicit Break] + goto J0x233; + } + } + ++I; + // [Loop Continue] + goto J0x16F; + } + J0x233: + + // End:0x2A8 + if(newTriIndex >= 0) + { + m_StrandInfos[strandNum].nStrandTrace.AddItem(newTriIndex); + m_StrandInfos[strandNum].nHeadIndex = newTriIndex; + } + else + { + // End:0x355 + if(IsSaturated(m_StrandInfos[strandNum].nHeadIndex)) + { + m_StrandInfos[strandNum].fAllowanceWeight = 0.0000000; + m_StrandInfos[strandNum].nAllowableSize = m_StrandInfos[strandNum].nStrandTrace.Length; + } + } + //return; +} + +function SpawnFromPeripheral() +{ + local int I, J, nextIndex; + local array strandPeripheral; + local array heatLevels; + local float fRandomChance, fRunningProbability, fWeightedSum, fWeightedHeat; + + I = 0; + J0x0B: + + // End:0x59E [Loop If] + if(I < m_StrandInfos.Length) + { + fWeightedSum = 0.0000000; + // End:0x63 + if(m_StrandInfos[I].nStrandTrace.Length < 7) + { + } + else + { + J = 0; + J0x6E: + + // End:0x3CB [Loop If] + if(J < (m_StrandInfos[I].nStrandTrace.Length - 6)) + { + // End:0x126 + if(!IsSaturated(m_StrandInfos[I].nStrandTrace[J])) + { + strandPeripheral.AddItem(m_StrandInfos[I].nStrandTrace[J]); + } + else + { + nextIndex = m_TriInfos[m_StrandInfos[I].nStrandTrace[J]].neighborIndex1; + // End:0x203 + if(((nextIndex > -1) && !IsInStrand(nextIndex, I)) && !IsSaturated(nextIndex)) + { + // End:0x203 + if(strandPeripheral.Find(nextIndex) == -1) + { + strandPeripheral.AddItem(nextIndex); + } + } + nextIndex = m_TriInfos[m_StrandInfos[I].nStrandTrace[J]].neighborIndex2; + // End:0x2E0 + if(((nextIndex > -1) && !IsInStrand(nextIndex, I)) && !IsSaturated(nextIndex)) + { + // End:0x2E0 + if(strandPeripheral.Find(nextIndex) == -1) + { + strandPeripheral.AddItem(nextIndex); + } + } + nextIndex = m_TriInfos[m_StrandInfos[I].nStrandTrace[J]].neighborIndex3; + // End:0x3BD + if(((nextIndex > -1) && !IsInStrand(nextIndex, I)) && !IsSaturated(nextIndex)) + { + // End:0x3BD + if(strandPeripheral.Find(nextIndex) == -1) + { + strandPeripheral.AddItem(nextIndex); + } + } + } + ++J; + // [Loop Continue] + goto J0x6E; + } + // End:0x3DD + if(strandPeripheral.Length == 0) + { + return; + } + J = 0; + J0x3E8: + + // End:0x4AB [Loop If] + if(J < strandPeripheral.Length) + { + fWeightedHeat = m_TriInfos[strandPeripheral[J]].fHeatLevel; + // End:0x473 + if(IsInStrand(strandPeripheral[J], I)) + { + fWeightedHeat *= 1.2500000; + } + fWeightedSum += fWeightedHeat; + heatLevels.AddItem(fWeightedHeat); + ++J; + // [Loop Continue] + goto J0x3E8; + } + fRunningProbability = 0.0000000; + fRandomChance = FRand() * fWeightedSum; + J = 0; + J0x4DC: + + // End:0x578 [Loop If] + if(J < strandPeripheral.Length) + { + // End:0x514 + if(heatLevels[J] == 0.0000000) + { + } + else + { + fRunningProbability += heatLevels[J]; + // End:0x56A + if(fRunningProbability > fRandomChance) + { + SpawnFromTriangle(strandPeripheral[J]); + // [Explicit Break] + goto J0x578; + } + } + ++J; + // [Loop Continue] + goto J0x4DC; + } + J0x578: + + strandPeripheral.Length = 0; + heatLevels.Length = 0; + } + ++I; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function bool IsSaturated(int triIndex) +{ + // End:0x2B + if((triIndex < 0) || triIndex >= m_TriInfos.Length) + { + return true; + } + // End:0xC1 + if(((m_TriInfos[triIndex].neighborIndex1 == -1) || m_TriInfos[triIndex].neighborIndex2 == -1) || m_TriInfos[triIndex].neighborIndex3 == -1) + { + return false; + } + return true; + //return ReturnValue; +} + +function SpawnFromCenter() +{ + local array spreadableIndexes; + local int I, saturation, randIndex; + + saturation = 2 * m_GrowthInfo.nMaxSpots; + I = 0; + J0x35: + + // End:0xD9 [Loop If] + if(I < m_TriInfos.Length) + { + // End:0xCB + if((m_TriInfos[I].nRank < saturation) && !IsSaturated(I)) + { + saturation = m_TriInfos[I].nRank; + } + ++I; + // [Loop Continue] + goto J0x35; + } + I = 0; + J0xE4: + + // End:0x1A8 [Loop If] + if(I < m_TriInfos.Length) + { + // End:0x19A + if((m_TriInfos[I].nRank >= saturation) && m_TriInfos[I].nRank <= (saturation + m_GrowthInfo.nCenterGrowthVariance)) + { + spreadableIndexes.AddItem(I); + } + ++I; + // [Loop Continue] + goto J0xE4; + } + // End:0x1BB + if(spreadableIndexes.Length == 0) + { + } + else + { + randIndex = int(RandRange(0.0000000, float(spreadableIndexes.Length))); + SpawnFromTriangle(spreadableIndexes[randIndex]); + } + //return; +} + +function Vector GetNewSpotLocation(int index1, int index2) +{ + local Vector vEdgeDirection, vUp, vSpawnDirection; + local float fEdgeLength, fTriHeight; + + // End:0x62 + if((((index1 < 0) || index1 >= m_PointInfos.Length) || index2 < 0) || index2 >= m_PointInfos.Length) + { + return vect(0.0000000, 0.0000000, 0.0000000); + } + vEdgeDirection = m_PointInfos[index2].vLocation - m_PointInfos[index1].vLocation; + vEdgeDirection.Z = 0.0000000; + vEdgeDirection = Normal(vEdgeDirection); + vUp = vect(0.0000000, 0.0000000, 1.0000000); + vSpawnDirection = vEdgeDirection Cross vUp; + fEdgeLength = 2.0000000 * m_Settings.fSpotRadius; + fTriHeight = (Sqrt(3.0000000) * fEdgeLength) / float(2); + return (m_PointInfos[index1].vLocation + ((fEdgeLength / 2.0000000) * vEdgeDirection)) + (fTriHeight * vSpawnDirection); + //return ReturnValue; +} + +function int SpawnFromTriangle(int triIndex, optional int neighborNum = 0) +{ + local int index1, index2, newSpotIndex, newTriIndex, I; + + local Vector vRotation, vNewSpotLocation; + local bool bNeedsNewTriInfo; + local MolotovTriangleInfo newTriInfo; + + // End:0x43 + if((m_bInDestroyedState || triIndex < 0) || triIndex >= m_TriInfos.Length) + { + return -1; + } + // End:0xF8 + if((m_TriInfos[triIndex].neighborIndex1 == -1) && (neighborNum == 1) || neighborNum == 0) + { + index1 = m_TriInfos[triIndex].index1; + index2 = m_TriInfos[triIndex].index2; + } + else + { + // End:0x1AE + if((m_TriInfos[triIndex].neighborIndex2 == -1) && (neighborNum == 2) || neighborNum == 0) + { + index1 = m_TriInfos[triIndex].index2; + index2 = m_TriInfos[triIndex].index3; + } + else + { + // End:0x264 + if((m_TriInfos[triIndex].neighborIndex3 == -1) && (neighborNum == 3) || neighborNum == 0) + { + index1 = m_TriInfos[triIndex].index3; + index2 = m_TriInfos[triIndex].index1; + } + else + { + return -1; + } + } + } + vRotation = m_TriInfos[triIndex].vTriCenter - Location; + vRotation.Z = 0.0000000; + vNewSpotLocation = GetNewSpotLocation(index1, index2); + newSpotIndex = AddNewPoint(vNewSpotLocation, Rotator(vRotation), true); + newTriIndex = -1; + // End:0xCAC + if((newSpotIndex >= 0) && newSpotIndex < m_PointInfos.Length) + { + bNeedsNewTriInfo = true; + I = 0; + J0x366: + + // End:0x795 [Loop If] + if(I < m_TriInfos.Length) + { + // End:0x787 + if((((((((index1 == m_TriInfos[I].index1) && index2 == m_TriInfos[I].index2) && newSpotIndex == m_TriInfos[I].index3) || ((index1 == m_TriInfos[I].index2) && index2 == m_TriInfos[I].index3) && newSpotIndex == m_TriInfos[I].index1) || ((index1 == m_TriInfos[I].index3) && index2 == m_TriInfos[I].index1) && newSpotIndex == m_TriInfos[I].index2) || ((index1 == m_TriInfos[I].index3) && index2 == m_TriInfos[I].index2) && newSpotIndex == m_TriInfos[I].index1) || ((index1 == m_TriInfos[I].index2) && index2 == m_TriInfos[I].index1) && newSpotIndex == m_TriInfos[I].index3) || ((index1 == m_TriInfos[I].index1) && index2 == m_TriInfos[I].index3) && newSpotIndex == m_TriInfos[I].index2) + { + newTriInfo = m_TriInfos[I]; + newTriIndex = I; + bNeedsNewTriInfo = false; + // [Explicit Break] + goto J0x795; + } + ++I; + // [Loop Continue] + goto J0x366; + } + J0x795: + + // End:0xC8C + if(bNeedsNewTriInfo) + { + newTriInfo.index1 = index2; + newTriInfo.index2 = index1; + newTriInfo.index3 = newSpotIndex; + newTriInfo.neighborIndex1 = -1; + newTriInfo.neighborIndex2 = -1; + newTriInfo.neighborIndex3 = -1; + newTriInfo.nRank = m_TriInfos[triIndex].nRank + 1; + newTriInfo.fHeatLevel = 0.0000000; + newTriInfo.vTriCenter = (m_PointInfos[newTriInfo.index1].vLocation + m_PointInfos[newTriInfo.index2].vLocation) + m_PointInfos[newTriInfo.index3].vLocation; + newTriInfo.vTriCenter /= 3.0000000; + newTriInfo.vCenterDirection = newTriInfo.vTriCenter - Location; + newTriInfo.vCenterDirection.Z = 0.0000000; + newTriInfo.vCenterDirection = Normal(newTriInfo.vCenterDirection); + m_TriInfos.AddItem(newTriInfo); + newTriIndex = m_TriInfos.Length - 1; + // End:0xB50 + if(m_PointInfos[index2].nTriNeighbors.Find(newTriIndex) == -1) + { + // End:0xB1D + if(m_PointInfos[index2].nTriNeighbors.Length == 6) + { + } + m_PointInfos[index2].nTriNeighbors.AddItem(newTriIndex); + } + // End:0xBEE + if(m_PointInfos[index1].nTriNeighbors.Find(newTriIndex) == -1) + { + // End:0xBBB + if(m_PointInfos[index1].nTriNeighbors.Length == 6) + { + } + m_PointInfos[index1].nTriNeighbors.AddItem(newTriIndex); + } + // End:0xC8C + if(m_PointInfos[newSpotIndex].nTriNeighbors.Find(newTriIndex) == -1) + { + // End:0xC59 + if(m_PointInfos[newSpotIndex].nTriNeighbors.Length == 6) + { + } + m_PointInfos[newSpotIndex].nTriNeighbors.AddItem(newTriIndex); + } + } + LinkNeighbors(newTriIndex); + UpdateAllRanks(); + } + else + { + // End:0xD2D + if((m_TriInfos[triIndex].neighborIndex1 == -1) && (neighborNum == 1) || neighborNum == 0) + { + m_TriInfos[triIndex].neighborIndex1 = -2; + } + else + { + // End:0xDAF + if((m_TriInfos[triIndex].neighborIndex2 == -1) && (neighborNum == 2) || neighborNum == 0) + { + m_TriInfos[triIndex].neighborIndex2 = -2; + } + else + { + // End:0xE2E + if((m_TriInfos[triIndex].neighborIndex3 == -1) && (neighborNum == 3) || neighborNum == 0) + { + m_TriInfos[triIndex].neighborIndex3 = -2; + } + } + } + } + return newTriIndex; + //return ReturnValue; +} + +function LinkNeighbors(int triIndex) +{ + local int testTriangle; + + // End:0x2B + if((triIndex < 0) || triIndex >= m_TriInfos.Length) + { + return; + } + testTriangle = 0; + J0x36: + + // End:0x102A [Loop If] + if(testTriangle < m_TriInfos.Length) + { + // End:0x68 + if(testTriangle == triIndex) + { + } + else + { + // End:0x10C + if((m_TriInfos[testTriangle].index1 == m_TriInfos[triIndex].index1) && m_TriInfos[testTriangle].index2 == m_TriInfos[triIndex].index2) + { + } + // End:0x1B0 + if((m_TriInfos[testTriangle].index2 == m_TriInfos[triIndex].index2) && m_TriInfos[testTriangle].index3 == m_TriInfos[triIndex].index3) + { + } + // End:0x254 + if((m_TriInfos[testTriangle].index1 == m_TriInfos[triIndex].index1) && m_TriInfos[testTriangle].index3 == m_TriInfos[triIndex].index3) + { + } + // End:0x3DD + if(m_TriInfos[testTriangle].index1 == m_TriInfos[triIndex].index1) + { + // End:0x2F9 + if(m_TriInfos[testTriangle].index2 == m_TriInfos[triIndex].index2) + { + } + else + { + // End:0x3DA + if(m_TriInfos[testTriangle].index3 == m_TriInfos[triIndex].index2) + { + // End:0x37A + if(m_TriInfos[testTriangle].neighborIndex3 > -1) + { + } + m_TriInfos[triIndex].neighborIndex1 = testTriangle; + m_TriInfos[testTriangle].neighborIndex3 = triIndex; + } + } + } + else + { + // End:0x566 + if(m_TriInfos[testTriangle].index2 == m_TriInfos[triIndex].index1) + { + // End:0x512 + if(m_TriInfos[testTriangle].index1 == m_TriInfos[triIndex].index2) + { + // End:0x4AF + if(m_TriInfos[testTriangle].neighborIndex1 > -1) + { + } + m_TriInfos[triIndex].neighborIndex1 = testTriangle; + m_TriInfos[testTriangle].neighborIndex1 = triIndex; + } + else + { + // End:0x563 + if(m_TriInfos[testTriangle].index3 == m_TriInfos[triIndex].index2) + { + } + } + } + else + { + // End:0x6EC + if(m_TriInfos[testTriangle].index3 == m_TriInfos[triIndex].index1) + { + // End:0x60B + if(m_TriInfos[testTriangle].index1 == m_TriInfos[triIndex].index2) + { + } + else + { + // End:0x6EC + if(m_TriInfos[testTriangle].index2 == m_TriInfos[triIndex].index2) + { + // End:0x68C + if(m_TriInfos[testTriangle].neighborIndex2 > -1) + { + } + m_TriInfos[triIndex].neighborIndex1 = testTriangle; + m_TriInfos[testTriangle].neighborIndex2 = triIndex; + } + } + } + } + } + // End:0x875 + if(m_TriInfos[testTriangle].index1 == m_TriInfos[triIndex].index2) + { + // End:0x791 + if(m_TriInfos[testTriangle].index2 == m_TriInfos[triIndex].index3) + { + } + else + { + // End:0x872 + if(m_TriInfos[testTriangle].index3 == m_TriInfos[triIndex].index3) + { + // End:0x812 + if(m_TriInfos[testTriangle].neighborIndex3 > -1) + { + } + m_TriInfos[triIndex].neighborIndex2 = testTriangle; + m_TriInfos[testTriangle].neighborIndex3 = triIndex; + } + } + } + else + { + // End:0x9FE + if(m_TriInfos[testTriangle].index2 == m_TriInfos[triIndex].index2) + { + // End:0x9AA + if(m_TriInfos[testTriangle].index1 == m_TriInfos[triIndex].index3) + { + // End:0x947 + if(m_TriInfos[testTriangle].neighborIndex1 > -1) + { + } + m_TriInfos[triIndex].neighborIndex2 = testTriangle; + m_TriInfos[testTriangle].neighborIndex1 = triIndex; + } + else + { + // End:0x9FB + if(m_TriInfos[testTriangle].index3 == m_TriInfos[triIndex].index3) + { + } + } + } + else + { + // End:0xB84 + if(m_TriInfos[testTriangle].index3 == m_TriInfos[triIndex].index2) + { + // End:0xAA3 + if(m_TriInfos[testTriangle].index1 == m_TriInfos[triIndex].index3) + { + } + else + { + // End:0xB84 + if(m_TriInfos[testTriangle].index2 == m_TriInfos[triIndex].index3) + { + // End:0xB24 + if(m_TriInfos[testTriangle].neighborIndex2 > -1) + { + } + m_TriInfos[triIndex].neighborIndex2 = testTriangle; + m_TriInfos[testTriangle].neighborIndex2 = triIndex; + } + } + } + } + } + // End:0xD0D + if(m_TriInfos[testTriangle].index1 == m_TriInfos[triIndex].index3) + { + // End:0xC29 + if(m_TriInfos[testTriangle].index2 == m_TriInfos[triIndex].index1) + { + } + else + { + // End:0xD0A + if(m_TriInfos[testTriangle].index3 == m_TriInfos[triIndex].index1) + { + // End:0xCAA + if(m_TriInfos[testTriangle].neighborIndex3 > -1) + { + } + m_TriInfos[triIndex].neighborIndex3 = testTriangle; + m_TriInfos[testTriangle].neighborIndex3 = triIndex; + } + } + } + else + { + // End:0xE96 + if(m_TriInfos[testTriangle].index2 == m_TriInfos[triIndex].index3) + { + // End:0xE42 + if(m_TriInfos[testTriangle].index1 == m_TriInfos[triIndex].index1) + { + // End:0xDDF + if(m_TriInfos[testTriangle].neighborIndex1 > -1) + { + } + m_TriInfos[triIndex].neighborIndex3 = testTriangle; + m_TriInfos[testTriangle].neighborIndex1 = triIndex; + } + else + { + // End:0xE93 + if(m_TriInfos[testTriangle].index3 == m_TriInfos[triIndex].index1) + { + } + } + } + else + { + // End:0x101C + if(m_TriInfos[testTriangle].index3 == m_TriInfos[triIndex].index3) + { + // End:0xF3B + if(m_TriInfos[testTriangle].index1 == m_TriInfos[triIndex].index1) + { + } + else + { + // End:0x101C + if(m_TriInfos[testTriangle].index2 == m_TriInfos[triIndex].index1) + { + // End:0xFBC + if(m_TriInfos[testTriangle].neighborIndex2 > -1) + { + } + m_TriInfos[triIndex].neighborIndex3 = testTriangle; + m_TriInfos[testTriangle].neighborIndex2 = triIndex; + } + } + } + } + } + } + ++testTriangle; + // [Loop Continue] + goto J0x36; + } + //return; +} + +function UpdateAllRanks() +{ + local array pendingUpdateIndexes; + local MolotovTriangleInfo nextTriangle; + local int I, UpdateIndex, lowestRank; + + // End:0x12 + if(m_TriInfos.Length == 0) + { + return; + } + I = 0; + J0x1D: + + // End:0x83 [Loop If] + if(I < 18) + { + // End:0x72 + if(m_TriInfos[I].nRank == 0) + { + pendingUpdateIndexes.AddItem(I); + } + else + { + // [Explicit Break] + goto J0x83; + } + ++I; + // [Loop Continue] + goto J0x1D; + } + J0x83: + + UpdateIndex = 0; + J0x8E: + + // End:0x490 [Loop If] + if(UpdateIndex < pendingUpdateIndexes.Length) + { + nextTriangle = m_TriInfos[pendingUpdateIndexes[UpdateIndex]]; + lowestRank = 2 * m_GrowthInfo.nMaxSpots; + // End:0x203 + if(nextTriangle.neighborIndex1 > -1) + { + // End:0x179 + if(pendingUpdateIndexes.Find(nextTriangle.neighborIndex1) == -1) + { + pendingUpdateIndexes.AddItem(nextTriangle.neighborIndex1); + } + // End:0x203 + if(m_TriInfos[nextTriangle.neighborIndex1].nRank < lowestRank) + { + lowestRank = m_TriInfos[nextTriangle.neighborIndex1].nRank; + } + } + // End:0x30F + if(nextTriangle.neighborIndex2 > -1) + { + // End:0x285 + if(pendingUpdateIndexes.Find(nextTriangle.neighborIndex2) == -1) + { + pendingUpdateIndexes.AddItem(nextTriangle.neighborIndex2); + } + // End:0x30F + if(m_TriInfos[nextTriangle.neighborIndex2].nRank < lowestRank) + { + lowestRank = m_TriInfos[nextTriangle.neighborIndex2].nRank; + } + } + // End:0x41B + if(nextTriangle.neighborIndex3 > -1) + { + // End:0x391 + if(pendingUpdateIndexes.Find(nextTriangle.neighborIndex3) == -1) + { + pendingUpdateIndexes.AddItem(nextTriangle.neighborIndex3); + } + // End:0x41B + if(m_TriInfos[nextTriangle.neighborIndex3].nRank < lowestRank) + { + lowestRank = m_TriInfos[nextTriangle.neighborIndex3].nRank; + } + } + // End:0x482 + if(lowestRank < m_GrowthInfo.nMaxSpots) + { + m_TriInfos[pendingUpdateIndexes[UpdateIndex]].nRank = lowestRank + 1; + } + UpdateIndex++; + // [Loop Continue] + goto J0x8E; + } + //return; +} + +simulated event SetMomentumDirection(Vector projVelocity, Vector HitNormal) +{ + // End:0x26 + if(!IsZero(m_Settings.vBiasDirection)) + { + return; + } + m_Settings.vBiasDirection = MirrorVectorByNormal(projVelocity, HitNormal); + m_Settings.vBiasDirection = Normal(m_Settings.vBiasDirection); + m_Settings.fUpFactor = m_Settings.vBiasDirection.Z; + m_Settings.vBiasDirection.Z = 0.0000000; + m_Settings.vBiasDirection = Normal(m_Settings.vBiasDirection); + SetRotation(Rotator(m_Settings.vBiasDirection)); + //return; +} + +function Rotator AlignSpotByRotation(Vector HitNormal, Rotator rRotation) +{ + local Vector X, Y, Z, newY, newX; + + GetAxes(rRotation, X, Y, Z); + newX = HitNormal Cross (X Cross HitNormal); + newX = Normal(newX); + newY = HitNormal Cross newX; + newY = Normal(newY); + return OrthoRotation(newX, newY, HitNormal); + //return ReturnValue; +} + +function int AddNewPoint(Vector vLocation, Rotator rRotation, bool bAddEffectSpot, optional bool bSkipEligibilityCheck = false) +{ + local int I, newSpotIndex; + local MolotovPointInfo newPointInfo; + local MolotovEligibilityRecord eligibilityRecord; + + I = 0; + J0x10: + + // End:0x144 [Loop If] + if(I < m_PointInfos.Length) + { + // End:0x136 + if((Abs(m_PointInfos[I].vLocation.X - vLocation.X) < (m_Settings.fSpotRadius / 4.0000000)) && Abs(m_PointInfos[I].vLocation.Y - vLocation.Y) < (m_Settings.fSpotRadius / 4.0000000)) + { + return I; + } + ++I; + // [Loop Continue] + goto J0x10; + } + newPointInfo.vLocation = vLocation; + // End:0x295 + if(!bSkipEligibilityCheck) + { + eligibilityRecord = GetSpawnEligibility(vLocation, m_Settings.fSpotRadius / 16.0000000, m_Settings.fSpotHeight); + // End:0x1FD + if(!eligibilityRecord.bIsEligible) + { + return -1; + } + newPointInfo.vLocation.Z = eligibilityRecord.vLocation.Z; + rRotation = AlignSpotByRotation(eligibilityRecord.vHitNormal, rRotation); + } + newPointInfo.rRotation = rRotation; + newPointInfo.nEffectSpotIndex = -1; + newPointInfo.fHeatLevel = 0.0000000; + // End:0x3E0 + if(bAddEffectSpot) + { + newSpotIndex = SpawnNewSpot(newPointInfo.vLocation, newPointInfo.rRotation, m_Settings.fSpotRadius / 16.0000000, m_Settings.fSpotHeight, 1, 1); + // End:0x3E0 + if((newSpotIndex >= 0) && newSpotIndex < 100) + { + newPointInfo.nEffectSpotIndex = newSpotIndex; + } + } + m_PointInfos.AddItem(newPointInfo); + return m_PointInfos.Length - 1; + //return ReturnValue; +} + +function SetPointIntensity(int PointIndex, int nIntensityLevel) +{ + // End:0x80 + if(((((nIntensityLevel < 1) || nIntensityLevel > 3) || PointIndex < 0) || PointIndex >= m_PointInfos.Length) || m_PointInfos[PointIndex].nEffectSpotIndex == -1) + { + return; + } + r_EffectSpots[m_PointInfos[PointIndex].nEffectSpotIndex].nIntensityLevel = nIntensityLevel; + //return; +} + +simulated function DeployComplete() +{ + local float fHexHalfLength, fCenterRadius; + local MolotovEligibilityRecord eligibilityRecord; + local Rotator rRotation; + + // End:0x1E + if(m_bIsDeployed || m_bInDestroyedState) + { + return; + } + super(TgDeployable).DeployComplete(); + // End:0x19A + if(int(Role) == int(ROLE_Authority)) + { + fHexHalfLength = 6.0000000 * m_Settings.fSpotRadius; + fCenterRadius = (Sqrt(3.0000000) * fHexHalfLength) / 2.0000000; + eligibilityRecord = GetSpawnEligibility(Location, 0.0000000, m_Settings.fSpotHeight); + // End:0x102 + if(!eligibilityRecord.bIsEligible) + { + rRotation = Rotation; + } + else + { + rRotation = AlignSpotByRotation(eligibilityRecord.vHitNormal, Rotation); + } + SpawnNewSpot(Location, rRotation, fCenterRadius / 16.0000000, m_Settings.fSpotHeight, 4); + SpawnInitialCenter(); + SpawnInitialStrands(); + } + //return; +} + +function SpawnInitialCenter() +{ + local float fHexHalfLength, fCenterRadius, fTriLength; + local Vector vUp, vLateral, vRotation, vInnerLocation, vInnerRotation, vLocation[18]; + + local int nPointExists[18], I, NewPointIndex, skipCount, EdgeStart, EdgeEnd, + innerIndex, newTriIndex; + + local MolotovTriangleInfo newTriInfo; + + fTriLength = 2.0000000 * m_Settings.fSpotRadius; + fHexHalfLength = 3.0000000 * fTriLength; + fCenterRadius = (Sqrt(3.0000000) * fHexHalfLength) / 2.0000000; + // End:0x1039 + if(((fTriLength > 0.0000000) && fHexHalfLength > 0.0000000) && fCenterRadius > 0.0000000) + { + vUp = vect(0.0000000, 0.0000000, 1.0000000); + vLateral = m_Settings.vBiasDirection Cross vUp; + vLocation[0] = (Location + (m_Settings.vBiasDirection * fCenterRadius)) - ((vLateral * fTriLength) * 1.5000000); + vLocation[1] = (Location + (m_Settings.vBiasDirection * fCenterRadius)) - ((vLateral * fTriLength) * 0.5000000); + vLocation[2] = (Location + (m_Settings.vBiasDirection * fCenterRadius)) + ((vLateral * fTriLength) * 0.5000000); + vLocation[3] = (Location + (m_Settings.vBiasDirection * fCenterRadius)) + ((vLateral * fTriLength) * 1.5000000); + vLocation[4] = (Location + ((m_Settings.vBiasDirection * fCenterRadius) * 0.6700000)) + ((vLateral * fTriLength) * 2.0000000); + vLocation[5] = (Location + ((m_Settings.vBiasDirection * fCenterRadius) * 0.3300000)) + ((vLateral * fTriLength) * 2.5000000); + vLocation[6] = Location + ((vLateral * fTriLength) * 3.0000000); + vLocation[7] = (Location - ((m_Settings.vBiasDirection * fCenterRadius) * 0.3300000)) + ((vLateral * fTriLength) * 2.5000000); + vLocation[8] = (Location - ((m_Settings.vBiasDirection * fCenterRadius) * 0.6700000)) + ((vLateral * fTriLength) * 2.0000000); + vLocation[9] = (Location - (m_Settings.vBiasDirection * fCenterRadius)) + ((vLateral * fTriLength) * 1.5000000); + vLocation[10] = (Location - (m_Settings.vBiasDirection * fCenterRadius)) + ((vLateral * fTriLength) * 0.5000000); + vLocation[11] = (Location - (m_Settings.vBiasDirection * fCenterRadius)) - ((vLateral * fTriLength) * 0.5000000); + vLocation[12] = (Location - (m_Settings.vBiasDirection * fCenterRadius)) - ((vLateral * fTriLength) * 1.5000000); + vLocation[13] = (Location - ((m_Settings.vBiasDirection * fCenterRadius) * 0.6700000)) - ((vLateral * fTriLength) * 2.0000000); + vLocation[14] = (Location - ((m_Settings.vBiasDirection * fCenterRadius) * 0.3300000)) - ((vLateral * fTriLength) * 2.5000000); + vLocation[15] = Location - ((vLateral * fTriLength) * 3.0000000); + vLocation[16] = (Location + ((m_Settings.vBiasDirection * fCenterRadius) * 0.3300000)) - ((vLateral * fTriLength) * 2.5000000); + vLocation[17] = (Location + ((m_Settings.vBiasDirection * fCenterRadius) * 0.6700000)) - ((vLateral * fTriLength) * 2.0000000); + I = 0; + J0x756: + + // End:0x80C [Loop If] + if(I < 18) + { + vRotation = vLocation[I] - Location; + NewPointIndex = AddNewPoint(vLocation[I], Rotator(vRotation), false); + // End:0x7E9 + if(NewPointIndex >= 0) + { + nPointExists[I] = 1; + } + else + { + nPointExists[I] = 0; + } + ++I; + // [Loop Continue] + goto J0x756; + } + skipCount = 0; + I = 0; + J0x822: + + // End:0x1039 [Loop If] + if(I < 18) + { + newTriIndex = -1; + // End:0xD8E + if((nPointExists[I] == 1) && nPointExists[(((I + 1) < 18) ? I + 1 : 0)] == 1) + { + EdgeStart = I - skipCount; + EdgeEnd = EdgeStart + 1; + vInnerLocation = GetNewSpotLocation(EdgeStart, EdgeEnd); + // End:0xD8B + if(!IsZero(vInnerLocation)) + { + vInnerRotation = vInnerLocation - Location; + innerIndex = AddNewPoint(vInnerLocation, Rotator(vInnerRotation), false, true); + // End:0xD8B + if(innerIndex >= 0) + { + newTriInfo.index1 = EdgeEnd; + newTriInfo.index2 = EdgeStart; + newTriInfo.index3 = innerIndex; + newTriInfo.neighborIndex1 = -1; + newTriInfo.neighborIndex2 = -2; + newTriInfo.neighborIndex3 = -2; + newTriInfo.nRank = 0; + newTriInfo.fHeatLevel = 0.0000000; + newTriInfo.vTriCenter = (m_PointInfos[newTriInfo.index1].vLocation + m_PointInfos[newTriInfo.index2].vLocation) + m_PointInfos[newTriInfo.index3].vLocation; + newTriInfo.vTriCenter /= 3.0000000; + newTriInfo.vCenterDirection = newTriInfo.vTriCenter - Location; + newTriInfo.vCenterDirection.Z = 0.0000000; + newTriInfo.vCenterDirection = Normal(newTriInfo.vCenterDirection); + m_TriInfos.AddItem(newTriInfo); + newTriIndex = m_TriInfos.Length - 1; + // End:0xCA8 + if(m_PointInfos[EdgeEnd].nTriNeighbors.Find(newTriIndex) == -1) + { + m_PointInfos[EdgeEnd].nTriNeighbors.AddItem(newTriIndex); + } + // End:0xD18 + if(m_PointInfos[EdgeStart].nTriNeighbors.Find(newTriIndex) == -1) + { + m_PointInfos[EdgeStart].nTriNeighbors.AddItem(newTriIndex); + } + // End:0xD88 + if(m_PointInfos[innerIndex].nTriNeighbors.Find(newTriIndex) == -1) + { + m_PointInfos[innerIndex].nTriNeighbors.AddItem(newTriIndex); + } + } + } + } + else + { + // End:0xDB2 + if(nPointExists[I] == 0) + { + skipCount++; + } + } + // End:0xE17 + if(((I == 0) || I == 1) || I == 2) + { + m_CenterInfo.ChildrenFront[I] = newTriIndex; + } + else + { + // End:0xE82 + if(((I == 3) || I == 4) || I == 5) + { + m_CenterInfo.ChildrenFrontRight[I - 3] = newTriIndex; + } + else + { + // End:0xEED + if(((I == 6) || I == 7) || I == 8) + { + m_CenterInfo.ChildrenBackRight[I - 6] = newTriIndex; + } + else + { + // End:0xF58 + if(((I == 9) || I == 10) || I == 11) + { + m_CenterInfo.ChildrenBack[I - 9] = newTriIndex; + } + else + { + // End:0xFC3 + if(((I == 12) || I == 13) || I == 14) + { + m_CenterInfo.ChildrenBackLeft[I - 12] = newTriIndex; + } + else + { + // End:0x102B + if(((I == 15) || I == 16) || I == 17) + { + m_CenterInfo.ChildrenFrontLeft[I - 15] = newTriIndex; + } + } + } + } + } + } + ++I; + // [Loop Continue] + goto J0x822; + } + } + //return; +} + +function SpawnInitialStrands() +{ + local int I, nEligibleRegions, nRegionEligibility[6]; + local Vector vRegionDirection[6]; + local float fRegionWeights[6], fWeightSum, fRunningProbability, fRandomChance; + local bool bFoundRegion; + + I = 0; + J0x0B: + + // End:0x78 [Loop If] + if(I < 6) + { + nRegionEligibility[I] = 0; + vRegionDirection[I] = vect(0.0000000, 0.0000000, 0.0000000); + fRegionWeights[I] = 0.0000000; + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x83: + + // End:0x3DF [Loop If] + if(I < 3) + { + // End:0x11C + if(m_CenterInfo.ChildrenFront[I] >= 0) + { + nRegionEligibility[0]++; + vRegionDirection[0] += m_TriInfos[m_CenterInfo.ChildrenFront[I]].vCenterDirection; + } + // End:0x1A5 + if(m_CenterInfo.ChildrenFrontRight[I] >= 0) + { + nRegionEligibility[1]++; + vRegionDirection[1] += m_TriInfos[m_CenterInfo.ChildrenFrontRight[I]].vCenterDirection; + } + // End:0x230 + if(m_CenterInfo.ChildrenBackRight[I] >= 0) + { + nRegionEligibility[2]++; + vRegionDirection[2] += m_TriInfos[m_CenterInfo.ChildrenBackRight[I]].vCenterDirection; + } + // End:0x2BB + if(m_CenterInfo.ChildrenBack[I] >= 0) + { + nRegionEligibility[3]++; + vRegionDirection[3] += m_TriInfos[m_CenterInfo.ChildrenBack[I]].vCenterDirection; + } + // End:0x346 + if(m_CenterInfo.ChildrenBackLeft[I] >= 0) + { + nRegionEligibility[4]++; + vRegionDirection[4] += m_TriInfos[m_CenterInfo.ChildrenBackLeft[I]].vCenterDirection; + } + // End:0x3D1 + if(m_CenterInfo.ChildrenFrontLeft[I] >= 0) + { + nRegionEligibility[5]++; + vRegionDirection[5] += m_TriInfos[m_CenterInfo.ChildrenFrontLeft[I]].vCenterDirection; + } + I++; + // [Loop Continue] + goto J0x83; + } + nEligibleRegions = 0; + I = 0; + J0x3F5: + + // End:0x460 [Loop If] + if(I < 6) + { + // End:0x452 + if(nRegionEligibility[I] > 0) + { + vRegionDirection[I] = Normal(vRegionDirection[I]); + nEligibleRegions++; + } + I++; + // [Loop Continue] + goto J0x3F5; + } + // End:0x471 + if(nEligibleRegions <= 0) + { + return; + } + fWeightSum = 0.0000000; + I = 0; + J0x48B: + + // End:0x57F [Loop If] + if(I < 6) + { + // End:0x4B7 + if(nRegionEligibility[I] == 0) + { + } + else + { + fRegionWeights[I] = ((vRegionDirection[I] Dot m_Settings.vBiasDirection) + float(1)) * 0.5000000; + fRegionWeights[I] += m_Settings.fUpFactor; + fRegionWeights[I] /= 2.0000000; + fWeightSum += fRegionWeights[I]; + } + I++; + // [Loop Continue] + goto J0x48B; + } + bFoundRegion = true; + J0x58B: + + // End:0x6E2 [Loop If] + if((bFoundRegion && nEligibleRegions > 0) && m_StrandInfos.Length < m_GrowthInfo.nMaxInitialStrands) + { + bFoundRegion = false; + fRunningProbability = 0.0000000; + fRandomChance = FRand() * fWeightSum; + I = 0; + J0x613: + + // End:0x6DF [Loop If] + if(I < 6) + { + // End:0x6D1 + if(nRegionEligibility[I] > 0) + { + fRunningProbability += fRegionWeights[I]; + // End:0x6D1 + if(fRunningProbability > fRandomChance) + { + SpawnStrandFromCenter(I); + nRegionEligibility[I] = 0; + nEligibleRegions--; + fWeightSum -= fRegionWeights[I]; + bFoundRegion = true; + // [Explicit Break] + goto J0x6DF; + } + } + ++I; + // [Loop Continue] + goto J0x613; + } + J0x6DF: + + // [Loop Continue] + goto J0x58B; + } + //return; +} + +function bool SpawnStrandFromCenter(int Region) +{ + local array nEligibleIndexes; + local int I, randIndex, triIndex; + local MolotovStrandInfo newStrandInfo; + + triIndex = -1; + // End:0x32 + if((Region < 0) || Region >= 6) + { + return false; + } + I = 0; + J0x3D: + + // End:0x30E [Loop If] + if(I < 3) + { + // End:0xC0 + if((Region == 0) && m_CenterInfo.ChildrenFront[I] >= 0) + { + nEligibleIndexes.AddItem(m_CenterInfo.ChildrenFront[I]); + } + else + { + // End:0x133 + if((Region == 1) && m_CenterInfo.ChildrenFrontRight[I] >= 0) + { + nEligibleIndexes.AddItem(m_CenterInfo.ChildrenFrontRight[I]); + } + else + { + // End:0x1A7 + if((Region == 2) && m_CenterInfo.ChildrenBackRight[I] >= 0) + { + nEligibleIndexes.AddItem(m_CenterInfo.ChildrenBackRight[I]); + } + else + { + // End:0x21B + if((Region == 3) && m_CenterInfo.ChildrenBack[I] >= 0) + { + nEligibleIndexes.AddItem(m_CenterInfo.ChildrenBack[I]); + } + else + { + // End:0x28F + if((Region == 4) && m_CenterInfo.ChildrenBackLeft[I] >= 0) + { + nEligibleIndexes.AddItem(m_CenterInfo.ChildrenBackLeft[I]); + } + else + { + // End:0x300 + if((Region == 5) && m_CenterInfo.ChildrenFrontLeft[I] >= 0) + { + nEligibleIndexes.AddItem(m_CenterInfo.ChildrenFrontLeft[I]); + } + } + } + } + } + } + ++I; + // [Loop Continue] + goto J0x3D; + } + // End:0x320 + if(nEligibleIndexes.Length == 0) + { + return false; + } + randIndex = int(RandRange(0.0000000, float(nEligibleIndexes.Length))); + triIndex = SpawnFromTriangle(nEligibleIndexes[randIndex]); + // End:0x5B4 + if(triIndex >= 0) + { + newStrandInfo.vStartDirection = m_TriInfos[triIndex].vTriCenter - m_TriInfos[nEligibleIndexes[randIndex]].vTriCenter; + newStrandInfo.vStartDirection.Z = 0.0000000; + newStrandInfo.vStartDirection = Normal(newStrandInfo.vStartDirection); + newStrandInfo.nHeadIndex = triIndex; + newStrandInfo.nAllowableSize = 1; + newStrandInfo.fAllowanceWeight = ((newStrandInfo.vStartDirection Dot m_Settings.vBiasDirection) + float(1)) * 0.5000000; + newStrandInfo.fAllowanceWeight += m_Settings.fUpFactor; + newStrandInfo.fAllowanceWeight /= 2.0000000; + m_StrandInfos.AddItem(newStrandInfo); + m_StrandInfos[m_StrandInfos.Length - 1].nStrandTrace.AddItem(triIndex); + } + return triIndex >= 0; + //return ReturnValue; +} + +simulated function UpdateParticleParams(int spotIndex) +{ + local int I; + local editinline ParticleSystemComponent PSC; + + // End:0x51 + if(((spotIndex < 0) || spotIndex >= 100) || c_SpotFX[spotIndex].Fx == none) + { + return; + } + // End:0x7C + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + super.UpdateParticleParams(spotIndex); + I = 0; + J0x9A: + + // End:0x2D3 [Loop If] + if(I < c_SpotFX[spotIndex].Fx.c_PSCList.Length) + { + PSC = c_SpotFX[spotIndex].Fx.c_PSCList[I].c_PSC; + // End:0x2C5 + if(PSC != none) + { + // End:0x2C5 + if(c_SpotFX[spotIndex].nFXIndex < 4) + { + PSC.SetFloatParameter('A_Spawn', float((((r_EffectSpots[spotIndex].nIntensityLevel == 3) && !m_bInDestroyedState) ? 1 : 0))); + PSC.SetFloatParameter('B_Spawn', float((((r_EffectSpots[spotIndex].nIntensityLevel == 2) && !m_bInDestroyedState) ? 1 : 0))); + PSC.SetFloatParameter('C_Spawn', float((((r_EffectSpots[spotIndex].nIntensityLevel == 1) && !m_bInDestroyedState) ? 1 : 0))); + } + } + I++; + // [Loop Continue] + goto J0x9A; + } + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + local int I; + + super.DestroyIt(bSkipFx); + // End:0x82 + if(m_bInDestroyedState) + { + m_StrandInfos.Length = 0; + m_TriInfos.Length = 0; + m_PointInfos.Length = 0; + I = 0; + J0x51: + + // End:0x82 [Loop If] + if(I < 100) + { + UpdateParticleParams(I); + ++I; + // [Loop Continue] + goto J0x51; + } + } + //return; +} + +defaultproperties +{ + m_GrowthInfo=(nStrandAllotment=40,nMaxSpots=50,nMaxInitialStrands=3,fStrandGrowthFraction=0.2500000,bStrandsAreSaturated=false,nCenterGrowthVariance=2,nSpreadsPerTick=1) + m_Settings=(vBiasDirection=(X=0.0000000,Y=0.0000000,Z=0.0000000),fUpFactor=0.0000000,fSpotRadius=36.8000000,fSpotHeight=10.0000000) + m_bUsesEffectRefresh=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Molotov.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_EffectSpots.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_OppressorMine.uc b/exported/TgGame/Classes/TgDeploy_OppressorMine.uc new file mode 100755 index 00000000..d95df207 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_OppressorMine.uc @@ -0,0 +1,124 @@ +class TgDeploy_OppressorMine extends TgDeployable + native(ChampKinessa) + notplaceable + hidecategories(Navigation); + +const MAX_OPPRESSOR_MINE_TARGETS = 5; + +var TgPawn m_CachedPawnOwner; +var TgRepInfo_TaskForce m_CachedEnemyTaskForce; +var repnotify Actor r_CurrentTargets[5]; +var int m_nBeamFXID; +var TgSpecialFx m_BeamFXs[5]; +var bool m_bNeedsNetDirtyUpdate; +var TgPawn_LanePusherBase r_StuckCart; +var Rotator r_StuckRotation; +var Vector r_CartOffset; +var float m_fAmplitudeRadiusScale; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_CartOffset, r_CurrentTargets, + r_StuckCart, r_StuckRotation; +} + +// Export UTgDeploy_OppressorMine::execIsValidTarget(FFrame&, void* const) +native function bool IsValidTarget(Actor Target); + +// Export UTgDeploy_OppressorMine::execFilterCurrentTargets(FFrame&, void* const) +native function int FilterCurrentTargets(int maxTargets); + +// Export UTgDeploy_OppressorMine::execFilterNewTargets(FFrame&, void* const) +native function FilterNewTargets(out array newTargets); + +// Export UTgDeploy_OppressorMine::execApplyEffects(FFrame&, void* const) +native function ApplyEffects(Actor Target); + +// Export UTgDeploy_OppressorMine::execRemoveEffects(FFrame&, void* const) +native function RemoveEffects(Actor Target); + +// Export UTgDeploy_OppressorMine::execUpdateAllBeams(FFrame&, void* const) +native function UpdateAllBeams(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x21 + if(VarName == 'r_CurrentTargets') + { + UpdateAllBeams(); + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + local int I; + + I = 0; + J0x0C: + + // End:0x75 [Loop If] + if(I < 5) + { + // End:0x67 + if(r_CurrentTargets[I] != none) + { + RemoveEffects(r_CurrentTargets[I]); + r_CurrentTargets[I] = none; + } + ++I; + // [Loop Continue] + goto J0x0C; + } + bNetDirty = true; + super.DestroyIt(bSkipFx); + // End:0xC4 + if(c_Mesh != none) + { + c_Mesh.SetHidden(true); + } + // End:0x100 + if((r_StuckCart != none) && int(Role) == int(ROLE_Authority)) + { + r_StuckCart = none; + bNetDirty = true; + } + //return; +} + +simulated event bool DamageShouldEnterCombat() +{ + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_nBeamFXID=6743 + m_bFireOnDeploy=false + m_bAdjustMeshToGround=false + m_InitHUDOverlayIcon=DeployableOverlayIcon.DOI_OPPRESSOR_MINE + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_OppressorMine.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_nInitHUDOverlayDisplayMask=1 + Components[0]=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgDeploy_OppressorMine.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + ReplacementPrimitive=none + CollideActors=true + end object + Components[1]=CollisionCylinder + bCollideActors=true + bProjTarget=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_PoppyBomb.uc b/exported/TgGame/Classes/TgDeploy_PoppyBomb.uc new file mode 100755 index 00000000..f928df67 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_PoppyBomb.uc @@ -0,0 +1,193 @@ +class TgDeploy_PoppyBomb extends TgDeployable + native(ChampBombKing) + notplaceable + hidecategories(Navigation); + +var bool r_bDetonated; +var TgPawn_Character m_CachedPlayer; +var repnotify Vector r_HitNormal; +var float m_fCachedCollisionRadius; +var float m_fCachedCollisionHeight; +var TgPawn_LanePusherBase r_StuckCart; +var Rotator r_StuckRotation; +var Vector r_CartOffset; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_CartOffset, r_HitNormal, + r_StuckCart, r_StuckRotation, + r_bDetonated; +} + +simulated event ReplicatedEvent(name VarName) +{ + local Vector X, Y, Z, newY, newZ; + + // End:0xE3 + if(VarName == 'r_HitNormal') + { + GetAxes(Rotation, X, Y, Z); + newZ = r_HitNormal Cross (Z Cross r_HitNormal); + newZ = Normal(newZ); + newY = newZ Cross r_HitNormal; + newY = Normal(newY); + self.SetRotation(OrthoRotation(r_HitNormal, newY, newZ)); + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + local Vector vRotation; + local TgSpecialFx VFX; + local TgPlayerController TgPC; + local TgPawn OwningPawn; + local TgDevice PoppyBombDevice; + + super.DestroyIt(bSkipFx); + // End:0x10D + if(r_bDetonated) + { + // End:0x10A + if(m_DestroyedMesh != none) + { + vRotation = Normal(Vector(Rotation)); + m_DestroyedMesh.FxActivateIndependant('BombKingStickyExplosion', 0, Location, vRotation); + VFX = TgSpecialFx(m_DestroyedMesh.FxGet('BombKingStickyExplosion', 0)); + // End:0x10A + if(VFX != none) + { + VFX.SpawnDecalAt(Location, -vRotation); + } + } + } + else + { + // End:0x172 + if(m_DestroyedMesh != none) + { + vRotation = Normal(Vector(Rotation)); + m_DestroyedMesh.FxActivateIndependant('DeployableFizzle', 0, Location, vRotation); + } + } + // End:0x1A1 + if(c_Mesh != none) + { + c_Mesh.SetHidden(true); + } + // End:0x2AB + if((int(WorldInfo.NetMode) == int(NM_Standalone)) || int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + OwningPawn = TgPawn(Instigator); + // End:0x2A8 + if(OwningPawn != none) + { + PoppyBombDevice = OwningPawn.GetDeviceByClass(Class'TgGame.TgDevice_PoppyBomb'); + // End:0x2A8 + if((PoppyBombDevice != none) && !PoppyBombDevice.IsDeviceCoolingDown()) + { + PoppyBombDevice.StartCooldown(); + } + } + } + else + { + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x3B6 + if(TgPC != none) + { + // End:0x3B6 + if(TgPC.Pawn == Instigator) + { + OwningPawn = TgPawn(Instigator); + // End:0x3B6 + if(OwningPawn != none) + { + PoppyBombDevice = OwningPawn.GetDeviceByClass(Class'TgGame.TgDevice_PoppyBomb'); + // End:0x3B6 + if((PoppyBombDevice != none) && !PoppyBombDevice.IsDeviceCoolingDown()) + { + PoppyBombDevice.StartCooldown(); + } + } + } + } + } + // End:0x3F2 + if((r_StuckCart != none) && int(Role) == int(ROLE_Authority)) + { + r_StuckCart = none; + bNetDirty = true; + } + //return; +} + +event Landed(Vector HitNormal, Actor FloorActor) +{ + local Vector X, Y, Z, newY, newZ; + + local editinline CylinderComponent collisionComp; + + super(Actor).Landed(HitNormal, FloorActor); + GetAxes(Rotation, X, Y, Z); + newZ = HitNormal Cross (Z Cross HitNormal); + newZ = Normal(newZ); + newY = newZ Cross HitNormal; + newY = Normal(newY); + SetRotation(OrthoRotation(HitNormal, newY, newZ)); + collisionComp = CylinderComponent(CollisionComponent); + // End:0x170 + if((collisionComp != none) && self.c_Mesh != none) + { + c_Mesh.SetTranslation(vect(-1.0000000, 0.0000000, 0.0000000) * collisionComp.CollisionHeight); + } + r_HitNormal = HitNormal; + bNetDirty = true; + // End:0x1B6 + if(TgPawn_LanePusher(FloorActor) != none) + { + SetBase(FloorActor); + } + //return; +} + +event ExplodeOnShield() +{ + InstantFireDeployable(); + r_bDetonated = true; + bNetDirty = true; + DestroyIt(); + //return; +} + +defaultproperties +{ + m_bFireOnDeploy=false + m_bAdjustMeshToGround=false + m_InitHUDOverlayIcon=DeployableOverlayIcon.DOI_POPPY_BOMB + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_PoppyBomb.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_nInitHUDOverlayDisplayMask=1 + Components[0]=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgDeploy_PoppyBomb.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + ReplacementPrimitive=none + CollideActors=true + end object + Components[1]=CollisionCylinder + bIgnoreBaseRotation=false + bCollideActors=true + bCollideWorld=true + bProjTarget=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_RespawnBeacon.uc b/exported/TgGame/Classes/TgDeploy_RespawnBeacon.uc new file mode 100755 index 00000000..afb6b5b2 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_RespawnBeacon.uc @@ -0,0 +1,38 @@ +class TgDeploy_RespawnBeacon extends TgDeployable + notplaceable + hidecategories(Navigation); + +simulated function DeployComplete() +{ + local TgDevice_RespawnBeacon spawningDev; + + super.DeployComplete(); + // End:0xD3 + if(int(Role) == int(ROLE_Authority)) + { + // End:0xC8 + if(s_SpawnerDeviceMode != none) + { + spawningDev = TgDevice_RespawnBeacon(s_SpawnerDeviceMode.m_Owner); + // End:0xC8 + if((spawningDev != none) && spawningDev.s_BeaconExit != none) + { + spawningDev.s_BeaconExit.PlaceFromDeploy(self); + } + } + DestroyIt(); + } + //return; +} + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_RespawnBeacon.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_Reversal.uc b/exported/TgGame/Classes/TgDeploy_Reversal.uc new file mode 100755 index 00000000..7a054720 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_Reversal.uc @@ -0,0 +1,96 @@ +class TgDeploy_Reversal extends TgDeploy_Shield + native(ChampAndroxus) + notplaceable + hidecategories(Navigation); + +var int m_nLargeMeshID; +var export editinline MeshComponent m_SmallMesh; +var export editinline MeshComponent m_LargeMesh; +var repnotify float r_fVengeanceDamage; +var repnotify float r_fAccumulatedDamage; +var repnotify float r_fMinimumDamage; +var TgPawn m_CachedPawnOwner; +var TgDeviceForm_Reversal m_ReversalForm; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_fAccumulatedDamage, r_fMinimumDamage, + r_fVengeanceDamage; +} + +// Export UTgDeploy_Reversal::execMitigateHealthDamage(FFrame&, void* const) +native function MitigateHealthDamage(TgPawn pInstigator, TgEffectDamage Effect, ImpactInfo Impact, out float NewValue, out float fPercReduction); + +// Export UTgDeploy_Reversal::execScaleFXByDamage(FFrame&, void* const) +native function ScaleFXByDamage(); + +// Export UTgDeploy_Reversal::execSendDamageToDevice(FFrame&, void* const) +native function SendDamageToDevice(); + +// Export UTgDeploy_Reversal::execToggleLargeMesh(FFrame&, void* const) +native function ToggleLargeMesh(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x2E + if(VarName == 'r_fAccumulatedDamage') + { + ScaleFXByDamage(); + SendDamageToDevice(); + } + else + { + // End:0x52 + if(VarName == 'r_fMinimumDamage') + { + ScaleFXByDamage(); + } + else + { + // End:0x87 + if(VarName == 'r_fVengeanceDamage') + { + ToggleLargeMesh(); + ScaleFXByDamage(); + SendDamageToDevice(); + } + } + } + super(TgDeployable).ReplicatedEvent(VarName); + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + super(TgDeployable).DestroyIt(bSkipFx); + // End:0x64 + if((r_fAccumulatedDamage > float(0)) && c_Mesh != none) + { + c_Mesh.FxActivateGroup('Reversal_Fire', 0); + } + //return; +} + +event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + return; + //return; +} + +defaultproperties +{ + m_nLargeMeshID=5823 + m_bMovableProjBlocker=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Reversal.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Shield.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_CollisionSettings=(bOnlyBlockShotsFromFront=true) + m_nInitHUDOverlayDisplayMask=0 + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_Shield.uc b/exported/TgGame/Classes/TgDeploy_Shield.uc new file mode 100755 index 00000000..06084efc --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_Shield.uc @@ -0,0 +1,82 @@ +class TgDeploy_Shield extends TgDeployable + native(Deployable) + notplaceable + hidecategories(Navigation); + +var bool bBasedOnPawn; + +event BaseChange() +{ + local TgPawn TgP; + + // End:0x13A + if(int(Role) == int(ROLE_Authority)) + { + // End:0x13A + if((Instigator == Base) || bBasedOnPawn) + { + TgP = TgPawn(Instigator); + // End:0x13A + if(TgP != none) + { + // End:0xD1 + if((TgP.s_AttachedProjBlocker == self) && Base != TgP) + { + bBasedOnPawn = false; + TgP.s_AttachedProjBlocker = none; + } + else + { + // End:0x13A + if((TgP.s_AttachedProjBlocker != self) && Base == TgP) + { + bBasedOnPawn = true; + TgP.s_AttachedProjBlocker = self; + } + } + } + } + } + //return; +} + +simulated function Destroyed() +{ + local TgPawn TgP; + + // End:0xA2 + if(int(Role) == int(ROLE_Authority)) + { + // End:0xA2 + if(((Base != none) && bBasedOnPawn) && Base == Instigator) + { + TgP = TgPawn(Instigator); + // End:0xA2 + if(TgP != none) + { + TgP.s_AttachedProjBlocker = none; + bBasedOnPawn = false; + } + } + } + super.Destroyed(); + //return; +} + +defaultproperties +{ + m_bAdjustMeshToGround=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Shield.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_CollisionSettings=(mCollisionMode=AdvancedCollisionMode.ACM_Shield,bUseMeshForCollision=true) + m_nInitHUDOverlayDisplayMask=56 + Components[0]=MyLightEnvironment + bCollideActors=true + bProjTarget=true + bNoEncroachCheck=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_ShieldBarik.uc b/exported/TgGame/Classes/TgDeploy_ShieldBarik.uc new file mode 100755 index 00000000..4f50ad0c --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_ShieldBarik.uc @@ -0,0 +1,100 @@ +class TgDeploy_ShieldBarik extends TgDeploy_Shield + native(ChampBarik) + notplaceable + hidecategories(Navigation); + +var repnotify bool r_bHasCapsule; +var repnotify bool r_bHasAcceleratorField; +var repnotify bool r_bHasImpede; +var repnotify bool r_bHasBunker; +var repnotify bool r_bHasFortify; +var array m_AcceleratedActors; +var TgPawn m_CachedPawnOwner; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetInitial) + r_bHasCapsule; + + // Pos:0x020 + if(int(Role) == int(ROLE_Authority)) + r_bHasAcceleratorField, r_bHasBunker, + r_bHasFortify, r_bHasImpede; +} + +// Export UTgDeploy_ShieldBarik::execToggleFX(FFrame&, void* const) +native function ToggleFX(); + +// Export UTgDeploy_ShieldBarik::execToggleLockdownMode(FFrame&, void* const) +native function ToggleLockdownMode(bool bSetActive); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x53 + if(((VarName == 'r_bHasAcceleratorField') || VarName == 'r_bHasImpede') || VarName == 'r_bHasBunker') + { + ToggleFX(); + } + super(TgDeployable).ReplicatedEvent(VarName); + //return; +} + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgDevice_AcceleratorField acceleratorFieldDevice; + local TgDevice_Impede impedeDevice; + local TgDevice comboDevice; + local TgInventoryObject_Listen_Combo_Barik comboListener; + + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + // End:0x23F + if(m_CachedPawnOwner != none) + { + // End:0xF4 + if(r_bHasAcceleratorField && m_AcceleratedActors.Find(Other) == -1) + { + acceleratorFieldDevice = TgDevice_AcceleratorField(m_CachedPawnOwner.GetActiveDeviceByClass('TgDevice_AcceleratorField')); + // End:0xF4 + if(acceleratorFieldDevice != none) + { + acceleratorFieldDevice.ApplyTouchEffect(Other); + m_AcceleratedActors.AddItem(Other); + } + } + // End:0x173 + if(r_bHasImpede) + { + impedeDevice = TgDevice_Impede(m_CachedPawnOwner.GetActiveDeviceByClass('TgDevice_Impede')); + // End:0x173 + if(impedeDevice != none) + { + impedeDevice.ApplyTouchEffect(Other); + } + } + comboDevice = m_CachedPawnOwner.GetDeviceById(14317); + // End:0x23F + if((comboDevice != none) && comboDevice.s_InventoryObject != none) + { + comboListener = TgInventoryObject_Listen_Combo_Barik(comboDevice.s_InventoryObject); + // End:0x23F + if(comboListener != none) + { + comboListener.TouchedBarricade(Other, self); + } + } + } + //return; +} + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_ShieldBarik.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Shield.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_ShieldBarikDome.uc b/exported/TgGame/Classes/TgDeploy_ShieldBarikDome.uc new file mode 100755 index 00000000..411820ff --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_ShieldBarikDome.uc @@ -0,0 +1,47 @@ +class TgDeploy_ShieldBarikDome extends TgDeploy_Shield + native(ChampBarik) + notplaceable + hidecategories(Navigation); + +simulated event DestroyIt(optional bool bSkipFx) +{ + local TgPawn PawnOwner; + local TgPawn_Turret turretPawn; + local int I; + + PawnOwner = TgPawn(Instigator); + // End:0x125 + if((PawnOwner != none) && r_Owner != none) + { + I = PawnOwner.c_ActivePets - 1; + J0x68: + + // End:0x125 [Loop If] + if(I >= 0) + { + turretPawn = TgPawn_Turret(PawnOwner.s_Pets[I]); + // End:0x117 + if((turretPawn != none) && turretPawn.m_SpawningDevice == r_Owner) + { + PawnOwner.KillPet(turretPawn); + } + --I; + // [Loop Continue] + goto J0x68; + } + } + super(TgDeployable).DestroyIt(bSkipFx); + //return; +} + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_ShieldBarikDome.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Shield.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_ShieldFernando.uc b/exported/TgGame/Classes/TgDeploy_ShieldFernando.uc new file mode 100755 index 00000000..776aedaa --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_ShieldFernando.uc @@ -0,0 +1,113 @@ +class TgDeploy_ShieldFernando extends TgDeploy_Shield + native(ChampFernando) + notplaceable + hidecategories(Navigation); + +var int m_nLargeShieldMeshID; +var export editinline MeshComponent m_SmallMesh; +var export editinline MeshComponent m_LargeMesh; +var repnotify int r_nToweringBarrierHealth; +var repnotify int r_nAegisBonusHealth; +var bool m_bHasHeatTransfer; +var bool m_bHasRattle; +var TgPawn_Fernando m_CachedFernandoOwner; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_nAegisBonusHealth, r_nToweringBarrierHealth; +} + +// Export UTgDeploy_ShieldFernando::execToggleLargeMesh(FFrame&, void* const) +native function ToggleLargeMesh(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x21 + if(VarName == 'r_nToweringBarrierHealth') + { + ToggleLargeMesh(); + } + super(TgDeployable).ReplicatedEvent(VarName); + //return; +} + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn PawnOwner; + local TgDevice_Rattle RattleDevice; + + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + // End:0x10D + if((Other != none) && r_Owner != none) + { + PawnOwner = TgPawn(r_Owner.Owner); + // End:0x10D + if(PawnOwner != none) + { + // End:0x10D + if(m_bHasRattle) + { + RattleDevice = TgDevice_Rattle(PawnOwner.GetActiveDeviceByClass('TgDevice_Rattle')); + // End:0x10D + if(RattleDevice != none) + { + RattleDevice.ApplyTouchEffect(Other); + } + } + } + } + //return; +} + +event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + local TgPawn TgPOwner; + local TgDevice_HeatTransfer HeatTransferCard; + + // End:0x164 + if(r_bTakeDamage) + { + super(TgDeployable).TakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + // End:0x164 + if(r_Owner != none) + { + TgPOwner = TgPawn(r_Owner.Owner); + // End:0x164 + if(TgPOwner != none) + { + // End:0x13A + if(int(Role) == int(ROLE_Authority)) + { + // End:0x13A + if(m_bHasHeatTransfer) + { + HeatTransferCard = TgDevice_HeatTransfer(TgPOwner.GetDeviceByClass(Class'TgGame.TgDevice_HeatTransfer')); + // End:0x13A + if(HeatTransferCard != none) + { + HeatTransferCard.RespondToDamageTaken(Damage); + } + } + } + TgPOwner.EnterCombat(DamageCauser, self); + } + } + } + //return; +} + +defaultproperties +{ + m_nLargeShieldMeshID=5503 + m_bMovableProjBlocker=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_ShieldFernando.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Shield.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_ShieldMakoa.uc b/exported/TgGame/Classes/TgDeploy_ShieldMakoa.uc new file mode 100755 index 00000000..1544bb97 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_ShieldMakoa.uc @@ -0,0 +1,32 @@ +class TgDeploy_ShieldMakoa extends TgDeploy_Shield + native(ChampMakoa) + notplaceable + hidecategories(Navigation); + +var TgPawn m_CachedPawnOwner; +var repnotify int r_nCarapaceBonusHealth; +var bool r_bHasBarrierReef; +var int m_nBarrierReefDamage; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bHasBarrierReef, r_nCarapaceBonusHealth; +} + +// Export UTgDeploy_ShieldMakoa::execMitigateHealthDamage(FFrame&, void* const) +native function MitigateHealthDamage(TgPawn pInstigator, TgEffectDamage Effect, ImpactInfo Impact, out float NewValue, out float fPercReduction); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_ShieldMakoa.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Shield.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + AlwaysRelevantDistanceSquared=256000000.0000000 + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_ShieldSiegeUnit.uc b/exported/TgGame/Classes/TgDeploy_ShieldSiegeUnit.uc new file mode 100755 index 00000000..0bcf7aed --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_ShieldSiegeUnit.uc @@ -0,0 +1,174 @@ +class TgDeploy_ShieldSiegeUnit extends TgDeployable + native(ChampFlak) + notplaceable + hidecategories(Navigation); + +var Rotator m_InitRotation; +var export editinline MeshComponent m_VFXCollisionMesh; +var TgCollisionProxy_Cylinder m_CollisionProxy; +var TgDeviceFire m_WatchtowerFiremode; +var TgDevice m_CachedWatchtowerCard; +var float m_GroundSpeed; +var bool m_bOnlyHitOnce; +var array m_TouchingPawns; + +simulated event Landed(Vector HitNormal, Actor FloorActor) +{ + super(Actor).Landed(HitNormal, FloorActor); + SetPhysics(1); + //return; +} + +function OnProxyUnTouch(Actor Other) +{ + local ImpactInfo Impact; + + // End:0xFD + if(m_TouchingPawns.Find(Other) != -1) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = m_WatchtowerFiremode; + Impact.HitActor = Other; + m_WatchtowerFiremode.RemoveHitSpecial(Other, true); + m_WatchtowerFiremode.ApplyHit(Impact, r_Owner); + m_TouchingPawns.RemoveItem(Other); + } + //return; +} + +function OnProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local ImpactInfo Impact; + + // End:0x113 + if(m_TouchingPawns.Find(Other) == -1) + { + // End:0x113 + if((m_WatchtowerFiremode != none) && m_WatchtowerFiremode.IsValidTarget(Other)) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = m_WatchtowerFiremode; + Impact.HitActor = Other; + m_WatchtowerFiremode.ApplyHitSpecial(Other, Impact); + m_TouchingPawns.AddItem(Other); + } + } + //return; +} + +simulated event SpawnCollisionProxy(TgDeviceFire FireMode) +{ + local float Radius; + + // End:0x1CF + if(r_Owner != none) + { + // End:0x1CF + if(FireMode != none) + { + m_WatchtowerFiremode = FireMode; + // End:0x63 + if(m_CollisionProxy != none) + { + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + m_CollisionProxy = Spawn(Class'TgGame.TgCollisionProxy_Cylinder', self,, self.Location,,, true); + // End:0x1CF + if(m_CollisionProxy != none) + { + m_CollisionProxy.SetBase(self); + m_CollisionProxy.__ProxyTouch__Delegate = OnProxyTouch; + m_CollisionProxy.__ProxyUnTouch__Delegate = OnProxyUnTouch; + m_CollisionProxy.DelegatesUpdated(); + Radius = FireMode.GetRange(); + m_CollisionProxy.m_CollisionCylinder.SetCylinderSize(Radius, 500.0000000); + m_CollisionProxy.DelegatesUpdated(); + } + } + } + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + super.DestroyIt(bSkipFx); + ClearAllTouched(); + // End:0x51 + if(m_CollisionProxy != none) + { + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + //return; +} + +simulated event ClearAllTouched() +{ + local Actor NextPawn; + + J0x00: + // End:0x80 [Loop If] + if(m_TouchingPawns.Length > 0) + { + NextPawn = m_TouchingPawns[0]; + // End:0x7D + if(NextPawn != none) + { + OnProxyUnTouch(NextPawn); + // End:0x7D + if(m_TouchingPawns.Find(NextPawn) != -1) + { + m_TouchingPawns.RemoveItem(NextPawn); + } + } + // [Loop Continue] + goto J0x00; + } + m_TouchingPawns.Length = 0; + //return; +} + +// Export UTgDeploy_ShieldSiegeUnit::execIsFortressBreakerEquipped(FFrame&, void* const) +native simulated function bool IsFortressBreakerEquipped(); + +simulated event name GetWhileAliveDisplayGroup() +{ + return ((IsFortressBreakerEquipped()) ? 'WhileAliveAlternate' : 'WhileAlive'); + //return ReturnValue; +} + +simulated event name GetDestroyedDisplayGroup() +{ + return ((IsFortressBreakerEquipped()) ? 'DestroyedAlternate' : 'Destroyed'); + //return ReturnValue; +} + +defaultproperties +{ + m_bOnlyHitOnce=true + m_bMovableProjBlocker=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_ShieldSiegeUnit.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_CollisionSettings=(mCollisionMode=AdvancedCollisionMode.ACM_Shield) + Components[0]=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgDeploy_ShieldSiegeUnit.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + ReplacementPrimitive=none + BlockZeroExtent=false + BlockNonZeroExtent=false + end object + Components[1]=CollisionCylinder + bUpdateSimulatedPosition=true + bCollideActors=true + bCollideWorld=true + bProjTarget=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_SmokeScreen.uc b/exported/TgGame/Classes/TgDeploy_SmokeScreen.uc new file mode 100755 index 00000000..9442aa8b --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_SmokeScreen.uc @@ -0,0 +1,96 @@ +class TgDeploy_SmokeScreen extends TgDeploy_EffectAura + native(ChampSkye) + placeable + hidecategories(Navigation); + +var TgPawn m_CachedPawnOwner; +var bool m_bHasAppliedOwnerStealth; +var repnotify float r_fRadiusForFX; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetInitial) + r_fRadiusForFX; +} + +// Export UTgDeploy_SmokeScreen::execApplyEffects(FFrame&, void* const) +native function ApplyEffects(Actor Target); + +// Export UTgDeploy_SmokeScreen::execRemoveEffects(FFrame&, void* const) +native function RemoveEffects(Actor Target); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x21 + if(VarName == 'r_fRadiusForFX') + { + ScaleFX(); + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated event ScaleFX() +{ + local array FxList; + local TgSpecialFx Fx; + local editinline ParticleSystemComponent PSC; + local float fDamageRadius, fDamageRadiusUU; + local int I, J; + + // End:0x1EF + if(c_Mesh != none) + { + fDamageRadiusUU = r_fRadiusForFX; + fDamageRadius = fDamageRadiusUU / float(16); + FxList = c_Mesh.FxGetAll('AlwaysOn', 0); + I = 0; + J0x7C: + + // End:0x1EF [Loop If] + if(I < FxList.Length) + { + Fx = TgSpecialFx(FxList[I]); + // End:0x1E1 + if(Fx != none) + { + J = 0; + J0xD4: + + // End:0x1C5 [Loop If] + if(J < Fx.c_PSCList.Length) + { + PSC = Fx.c_PSCList[J].c_PSC; + // End:0x1B7 + if(PSC != none) + { + PSC.SetFloatParameter('DamageRadius', fDamageRadius); + PSC.SetFloatParameter('DamageRadiusUU', fDamageRadiusUU); + } + J++; + // [Loop Continue] + goto J0xD4; + } + UpdateDecalScale(Fx, r_fRadiusScale); + } + I++; + // [Loop Continue] + goto J0x7C; + } + } + //return; +} + +defaultproperties +{ + r_fRadiusForFX=15.0000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_SmokeScreen.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_EffectAura.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_ToxicTimeBomb.uc b/exported/TgGame/Classes/TgDeploy_ToxicTimeBomb.uc new file mode 100755 index 00000000..b037f729 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_ToxicTimeBomb.uc @@ -0,0 +1,48 @@ +class TgDeploy_ToxicTimeBomb extends TgDeploy_Bomb + native(ChampSkye) + placeable + hidecategories(Navigation); + +simulated event DestroyIt(optional bool bSkipFx) +{ + super.DestroyIt(bSkipFx); + // End:0x44 + if(c_Mesh != none) + { + c_Mesh.SetHidden(true); + } + //return; +} + +defaultproperties +{ + // Reference: TgStaticMeshComponent'TgGame.Default__TgDeploy_ToxicTimeBomb.CountdownIndicator' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CountdownIndicator' + // Archetype: TgStaticMeshComponent'TgGame.Default__TgDeploy_Bomb.CountdownIndicator' + begin object name="CountdownIndicator" + ReplacementPrimitive=none + end object + m_CountdownIndicator=CountdownIndicator + m_InitHUDOverlayIcon=DeployableOverlayIcon.DOI_TIME_BOMB + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_ToxicTimeBomb.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Bomb.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_nInitHUDOverlayDisplayMask=3072 + m_GameplayCurves=TgGameplayCurves'GP_Skye.DeviceTimeBomb' + Components[0]=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgDeploy_ToxicTimeBomb.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgDeploy_Bomb.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + Components[1]=CollisionCylinder + Components[2]=CountdownIndicator + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_Transporter.uc b/exported/TgGame/Classes/TgDeploy_Transporter.uc new file mode 100755 index 00000000..4da36690 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_Transporter.uc @@ -0,0 +1,128 @@ +class TgDeploy_Transporter extends TgDeployable + native(ChampKinessa) + notplaceable + hidecategories(Navigation); + +var Vector m_StartLocation; +var Vector m_ProjectileEndLocation; +var float m_fProjectileHeight; +var TgSpecialFx m_DeploymentFX; +var repnotify Vector r_TeleportLocation; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_TeleportLocation; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x54 + if(VarName == 'r_TeleportLocation') + { + m_ProjectileEndLocation = r_TeleportLocation + ((vect(0.0000000, 0.0000000, 1.0000000) * m_fProjectileHeight) * float(16)); + SpawnDeployFX(); + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated event SpawnDeployFX() +{ + local editinline ParticleSystemComponent PSC; + local int I; + + // End:0x162 + if(c_Mesh != none) + { + m_DeploymentFX = TgSpecialFx(c_Mesh.FxGet('Generic1', 0)); + // End:0x162 + if(m_DeploymentFX != none) + { + I = 0; + J0x68: + + // End:0x141 [Loop If] + if(I < m_DeploymentFX.c_PSCList.Length) + { + PSC = m_DeploymentFX.c_PSCList[I].c_PSC; + // End:0x133 + if(PSC != none) + { + PSC.SetAbsolute(true, true, true); + PSC.SetTranslation(m_StartLocation); + } + I++; + // [Loop Continue] + goto J0x68; + } + m_DeploymentFX.Activate(); + } + } + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + local Vector NewLocation; + local editinline ParticleSystemComponent PSC; + local int I; + + super.Tick(DeltaSeconds); + // End:0x13E + if(!IsZero(m_ProjectileEndLocation)) + { + NewLocation = m_StartLocation; + NewLocation += ((m_ProjectileEndLocation - m_StartLocation) * m_fCurrentDeployPercentage); + SetLocation(NewLocation); + // End:0x13E + if(m_DeploymentFX != none) + { + I = 0; + J0x87: + + // End:0x13E [Loop If] + if(I < m_DeploymentFX.c_PSCList.Length) + { + PSC = m_DeploymentFX.c_PSCList[I].c_PSC; + // End:0x130 + if(PSC != none) + { + PSC.SetTranslation(NewLocation); + } + I++; + // [Loop Continue] + goto J0x87; + } + } + } + //return; +} + +defaultproperties +{ + m_fProjectileHeight=7.5000000 + m_bFireOnDeploy=false + m_bAdjustMeshToGround=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_Transporter.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgDeploy_Transporter.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + ReplacementPrimitive=none + CollideActors=true + BlockZeroExtent=false + end object + Components[1]=CollisionCylinder + bCollideActors=true + bProjTarget=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_TurretEffectField.uc b/exported/TgGame/Classes/TgDeploy_TurretEffectField.uc new file mode 100755 index 00000000..f05bf189 --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_TurretEffectField.uc @@ -0,0 +1,129 @@ +class TgDeploy_TurretEffectField extends TgDeploy_EffectField + native(ChampBarik) + placeable + hidecategories(Navigation); + +var array m_DeployTimePendingTargets; +var TgPawn_Turret m_ParentTurret; + +function TouchAllPendingTargets() +{ + local ImpactInfo Impact; + local Actor nextTarget; + + J0x00: + // End:0x151 [Loop If] + if(m_DeployTimePendingTargets.Length > 0) + { + nextTarget = m_DeployTimePendingTargets[0]; + m_DeployTimePendingTargets.RemoveItem(nextTarget); + // End:0x14E + if(m_TouchingPawns.Find(nextTarget) == -1) + { + // End:0x14E + if((m_FireMode != none) && m_FireMode.IsValidTarget(nextTarget)) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = m_FireMode; + Impact.HitActor = nextTarget; + m_FireMode.ApplyHitSpecial(nextTarget, Impact); + m_TouchingPawns.AddItem(nextTarget); + } + } + // [Loop Continue] + goto J0x00; + } + //return; +} + +function OnProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + // End:0x25 + if(m_bInDestroyedState || int(Role) != int(ROLE_Authority)) + { + return; + } + // End:0x90 + if((m_ParentTurret != none) && int(m_ParentTurret.m_nIsInIntroState) == int(0)) + { + super.OnProxyTouch(Other, OtherComp, HitLocation, HitNormal); + } + else + { + // End:0x127 + if((m_TouchingPawns.Find(Other) == -1) && m_DeployTimePendingTargets.Find(Other) == -1) + { + // End:0x127 + if((m_FireMode != none) && m_FireMode.IsValidTarget(Other)) + { + m_DeployTimePendingTargets.AddItem(Other); + } + } + } + //return; +} + +function OnProxyUnTouch(Actor Other) +{ + // End:0x16 + if(int(Role) != int(ROLE_Authority)) + { + return; + } + // End:0x66 + if((m_ParentTurret != none) && int(m_ParentTurret.m_nIsInIntroState) == int(0)) + { + super.OnProxyUnTouch(Other); + } + else + { + // End:0x9C + if(m_DeployTimePendingTargets.Find(Other) != -1) + { + m_DeployTimePendingTargets.RemoveItem(Other); + } + // End:0x10C + if(m_TouchingPawns.Find(Other) != -1) + { + // End:0xF6 + if(m_FireMode != none) + { + m_FireMode.RemoveHitSpecial(Other, true); + } + m_TouchingPawns.RemoveItem(Other); + } + } + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + super(TgDeployable).Tick(DeltaSeconds); + // End:0x89 + if((m_ParentTurret != none) && int(m_ParentTurret.m_nIsInIntroState) == int(0)) + { + // End:0x6F + if(r_fTimeToDeploySecs > 0.0000000) + { + r_fTimeToDeploySecs = 0.0000000; + } + // End:0x89 + if(m_DeployTimePendingTargets.Length > 0) + { + TouchAllPendingTargets(); + } + } + //return; +} + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_TurretEffectField.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_EffectField.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_TurretLinked.uc b/exported/TgGame/Classes/TgDeploy_TurretLinked.uc new file mode 100755 index 00000000..3dc24a8d --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_TurretLinked.uc @@ -0,0 +1,29 @@ +class TgDeploy_TurretLinked extends TgDeploy_MatchParentFireMode + native(ChampBarik) + placeable + hidecategories(Navigation); + +var TgPawn_Turret m_ParentTurret; + +simulated function Tick(float DeltaSeconds) +{ + super(TgDeployable).Tick(DeltaSeconds); + // End:0x5C + if((m_ParentTurret != none) && int(m_ParentTurret.m_nIsInIntroState) == int(0)) + { + r_fTimeToDeploySecs = 0.0000000; + } + //return; +} + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_TurretLinked.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_MatchParentFireMode.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeploy_WardersField.uc b/exported/TgGame/Classes/TgDeploy_WardersField.uc new file mode 100755 index 00000000..dea4b01c --- /dev/null +++ b/exported/TgGame/Classes/TgDeploy_WardersField.uc @@ -0,0 +1,124 @@ +class TgDeploy_WardersField extends TgDeploy_EffectField + native(ChampBarrierTank) + placeable + hidecategories(Navigation); + +var repnotify float r_fRadiusForFX; +var repnotify float r_fRadiusScaleForDecal; +var repnotify bool r_bEarthenGuardActive; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bEarthenGuardActive, r_fRadiusForFX, + r_fRadiusScaleForDecal; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x3D + if((VarName == 'r_fRadiusForFX') || VarName == 'r_fRadiusScaleForDecal') + { + ScaleAbilityFX(); + } + else + { + // End:0xCB + if(VarName == 'r_bEarthenGuardActive') + { + // End:0xCB + if(c_Mesh != none) + { + // End:0xA0 + if(r_bEarthenGuardActive) + { + c_Mesh.FxActivateGroup('Generic4', 0); + } + else + { + c_Mesh.FxDeactivateGroup('Generic4', 0); + } + } + } + } + super(TgDeployable).ReplicatedEvent(VarName); + //return; +} + +simulated event ScaleAbilityFX() +{ + local array FxList; + local TgSpecialFx Fx; + local editinline ParticleSystemComponent PSC; + local float fDamageRadius, fDamageRadiusUU; + local int I, J; + + // End:0x1EF + if(c_Mesh != none) + { + fDamageRadius = r_fRadiusForFX / float(16); + fDamageRadiusUU = r_fRadiusForFX; + FxList = c_Mesh.FxGetAll('OnWhenDeployed', 0); + I = 0; + J0x7C: + + // End:0x1EF [Loop If] + if(I < FxList.Length) + { + Fx = TgSpecialFx(FxList[I]); + // End:0x1E1 + if(Fx != none) + { + J = 0; + J0xD4: + + // End:0x1C5 [Loop If] + if(J < Fx.c_PSCList.Length) + { + PSC = Fx.c_PSCList[J].c_PSC; + // End:0x1B7 + if(PSC != none) + { + PSC.SetFloatParameter('DamageRadius', fDamageRadius); + PSC.SetFloatParameter('DamageRadiusUU', fDamageRadiusUU); + } + J++; + // [Loop Continue] + goto J0xD4; + } + UpdateDecalScale(Fx, r_fRadiusScaleForDecal); + } + I++; + // [Loop Continue] + goto J0x7C; + } + } + //return; +} + +defaultproperties +{ + r_fRadiusScaleForDecal=1.0000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_WardersField.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDeploy_EffectField.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_nInitHUDOverlayDisplayMask=56 + Components[0]=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgDeploy_WardersField.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + ReplacementPrimitive=none + CollideActors=true + end object + Components[1]=CollisionCylinder + bCollideActors=true + bCollideWorld=true + bProjTarget=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeployable.uc b/exported/TgGame/Classes/TgDeployable.uc new file mode 100755 index 00000000..1aea5ab3 --- /dev/null +++ b/exported/TgGame/Classes/TgDeployable.uc @@ -0,0 +1,1850 @@ +class TgDeployable extends Actor + native(Deployable) + nativereplication + notplaceable + hidecategories(Navigation) + implements(TgSkinnableInterface,TgCombatActor,TgObserver_ViewTargetChanged,TgInteractiveAudio,TgGameplayCurveOwner); + +enum AdvancedCollisionMode +{ + ACM_None, // 0 + ACM_Shield, // 1 + ACM_Geometry, // 2 + ACM_MAX // 3 +}; + +struct native CollisionSettingsDeployable +{ + var const TgDeployable.AdvancedCollisionMode mCollisionMode; + var const bool bUseMeshForCollision; + var const bool bPawnsCanBaseOnMe; + var bool bAutoRegisterObstacle; + var bool bHasRegisteredObstacle; + var bool bOnlyBlockShotsFromFront; + var bool bBlockFriendlyFire; + var float fProjectileAllowanceRadius; + var float fExplosionAllowanceRadius; + + structdefaultproperties + { + mCollisionMode=AdvancedCollisionMode.ACM_None + bUseMeshForCollision=false + bPawnsCanBaseOnMe=false + bAutoRegisterObstacle=false + bHasRegisteredObstacle=false + bOnlyBlockShotsFromFront=false + bBlockFriendlyFire=false + fProjectileAllowanceRadius=0.0000000 + fExplosionAllowanceRadius=0.0000000 + } +}; + +var private native const noexport Pointer VfTable_ITgSkinnableInterface; +var private native const noexport Pointer VfTable_ITgCombatActor; +var private native const noexport Pointer VfTable_ITgObserver_ViewTargetChanged; +var private native const noexport Pointer VfTable_ITgInteractiveAudio; +var private native const noexport Pointer VfTable_ITgGameplayCurveOwner; +var repnotify int r_nDeployableId; +var int r_nSkinId; +var int r_nWeaponSkinId; +var bool c_bInitialized; +var bool m_bConsumedOnFire; +var bool m_bFireOnDeploy; +var bool m_bHasAlreadyFiredOnce; +var bool m_bInstantFire; +var bool c_bMinimapOnlyOwnerSee; +var bool r_bTakeDamage; +var bool m_bInDestroyedState; +var bool s_bDestroyedThisTick; +var bool m_bIsDeployed; +var bool c_bEnemyMatLoaded; +var bool m_bDestroyOnOwnerDeathFlag; +var bool m_bDestroyAfterRoundEnds; +var bool m_bAdjustMeshToGround; +var const bool m_bIsVisionBlocker; +var const bool m_bIsAIVisionBlocker; +var const bool m_bMovableProjBlocker; +var const bool m_bDeviceUsedIsHandDevice; +var bool m_bUseSilhouettesOverride; +var(TagetComponent) bool m_bOverrideTargetComponentHeight; +var repnotify bool r_bInitialIsEnemy; +var protected transient bool c_bIsSpectateToggleActive; +var bool m_bUseRangeFalloffCurve; +var int m_nDeployableType; +var int r_nPhysicalType; +var repnotify int r_nHealth; +var TgEffectManager r_EffectManager; +var array m_EquipEffects; +var array s_Properties; +var TgDeviceForm c_Form; +var TgSpecialFx c_FireFx; +var export editinline MeshComponent c_Mesh; +var repnotify Vector r_vFlashLocation; +var repnotify byte r_nFlashCount; +var repnotify byte r_nFlashFireCount; +var byte c_nPreviousFlashFireCount; +var const TgObject.DeployableOverlayIcon m_InitHUDOverlayIcon; +var const TgObject.DeployableOverlayState m_InitHUDOverlayState; +var TgDeviceFire m_FireMode; +var float m_fStateTime; +var int c_nVisibleToLocalPlayer[2]; +var TgActorFactory s_DeployFactory; +var int m_TimeCreated; +var export editinline MeshComponent m_DestroyedMesh; +var float m_fLifeAfterDeathSecs; +var repnotify int r_nReplicateDestroyIt; +var TgInteractiveAudio m_AsInteractiveAudio; +var float s_fPersistTime; +var const export editinline DynamicLightEnvironmentComponent LightEnvironment; +var repnotify float r_fTimeToDeploySecs; +var repnotify float r_fInitDeployTime; +var float m_fCurrentDeployPercentage; +var float r_fCurrentDeployTime; +var float m_fDamagedDuringDeploy; +var TgDeviceFire s_SpawnerDeviceMode; +var TgDevice r_Owner; +var int r_nOwnerFireMode; +var float AlwaysRelevantDistanceSquared; +var float m_fMaxAimAssistStacks; +var CollisionSettingsDeployable m_CollisionSettings; +var array m_PawnsBasedOnMe; +var TgSilhouetteManager m_SilhouetteManager; +var const int m_nInitHUDOverlayDisplayMask; +var const float m_InitHUDOverlayEnemyViewDist; +var() float m_fHUDOverlayZOffset; +var native const Pointer m_pAmSkin; +var native const Pointer m_pAmWeaponSkin; +var(TargetComponent) export editinline CylinderComponent m_TargetComponent; +var(TargetComponent) float m_TargetCollisionTraceDistance; +var(TagetComponent) float m_fOverriddenTargetComponentHeight; +var TgPawn m_LastDamager; +var int m_LastDamagerTimeStamp; +var repnotify TgRepInfo_Deployable r_DRI; +var TgPlayerController c_LocalPC; +var Class m_DRIClass; +var float m_fDisableSpectatorFxTime; +var transient float m_fDisableSpectatorFxTimeRemaining; +var TgGameplayCurves m_GameplayCurves; +var TgAkActorUnoccluded m_AkActorUnoccluded; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_EffectManager, r_fInitDeployTime, + r_fTimeToDeploySecs, r_nFlashCount, + r_nFlashFireCount, r_nHealth, + r_vFlashLocation; + + // Pos:0x011 + if(int(Role) == int(ROLE_Authority)) + r_nReplicateDestroyIt; + + // Pos:0x022 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_bTakeDamage; + + // Pos:0x042 + if((int(Role) == int(ROLE_Authority)) && bNetInitial) + r_DRI, r_bInitialIsEnemy, + r_fCurrentDeployTime, r_nDeployableId, + r_nPhysicalType, r_nSkinId; + + // Pos:0x062 + if((int(Role) == int(ROLE_Authority)) && bNetOwner) + r_Owner, r_nOwnerFireMode; +} + +// Export UTgDeployable::execApplyDeployableSetup(FFrame&, void* const) +native function bool ApplyDeployableSetup(); + +// Export UTgDeployable::execInitializeDefaultProps(FFrame&, void* const) +native function InitializeDefaultProps(); + +// Export UTgDeployable::execAddProperty(FFrame&, void* const) +native function AddProperty(int nPropId, float fBase, float fRaw, float FMin, float FMax); + +// Export UTgDeployable::execGetProperty(FFrame&, void* const) +native function TgProperty GetProperty(int nPropertyId); + +// Export UTgDeployable::execSetProperty(FFrame&, void* const) +native function SetProperty(int nPropertyId, float fNewValue); + +// Export UTgDeployable::execResetProperties(FFrame&, void* const) +native function ResetProperties(); + +// Export UTgDeployable::execSwapMeshToDestroyed(FFrame&, void* const) +native function SwapMeshToDestroyed(); + +// Export UTgDeployable::execDeployableDestroyed(FFrame&, void* const) +native function DeployableDestroyed(); + +// Export UTgDeployable::execGetMaxDeployHealth(FFrame&, void* const) +native function int GetMaxDeployHealth(); + +// Export UTgDeployable::execNotifyGroupChanged(FFrame&, void* const) +native function NotifyGroupChanged(); + +// Export UTgDeployable::execForceRecalculateMaterial(FFrame&, void* const) +native function ForceRecalculateMaterial(); + +// Export UTgDeployable::execRecalculateMaterial(FFrame&, void* const) +native function RecalculateMaterial(bool bIsFriendlyWithLocalPawn, optional bool bForce); + +// Export UTgDeployable::execAdjustMeshToGround(FFrame&, void* const) +native function AdjustMeshToGround(); + +// Export UTgDeployable::execCalcMeshOffset(FFrame&, void* const) +native function float CalcMeshOffset(); + +// Export UTgDeployable::execUpdateTargetCylinder(FFrame&, void* const) +native function UpdateTargetCylinder(); + +// Export UTgDeployable::execUpdateDamagers(FFrame&, void* const) +native function UpdateDamagers(TgPawn Damager); + +// Export UTgDeployable::execSetInitialHealthPercent(FFrame&, void* const) +native function SetInitialHealthPercent(float fPercent); + +// Export UTgDeployable::execGetTaskForce(FFrame&, void* const) +native final function TgRepInfo_TaskForce GetTaskForce(); + +// Export UTgDeployable::execGetTaskForceNumber(FFrame&, void* const) +native final function int GetTaskForceNumber(); + +// Export UTgDeployable::execSetTaskForceNumber(FFrame&, void* const) +native function SetTaskForceNumber(int nTaskForceId); + +// Export UTgDeployable::execGetSpawnerDeviceInstanceId(FFrame&, void* const) +native function int GetSpawnerDeviceInstanceId(); + +// Export UTgDeployable::execGetSpawnerDeviceId(FFrame&, void* const) +native function int GetSpawnerDeviceId(); + +// Export UTgDeployable::execIsFriendlyWithLocalPawn(FFrame&, void* const) +native function bool IsFriendlyWithLocalPawn(); + +// Export UTgDeployable::execUpdateHealth(FFrame&, void* const) +native function UpdateHealth(); + +// Export UTgDeployable::execIsInvisibleToAI(FFrame&, void* const) +native function bool IsInvisibleToAI(optional Actor TestActor); + +// Export UTgDeployable::execIsHittable(FFrame&, void* const) +native function bool IsHittable(); + +// Export UTgDeployable::execGetHudOverlayLocation(FFrame&, void* const) +native function Vector GetHudOverlayLocation(optional bool bCentered = false); + +// Export UTgDeployable::execAdjustHeal(FFrame&, void* const) +native function AdjustHeal(const out ImpactInfo Impact, out float fHeal, int nPropertyId); + +// Export UTgDeployable::execPostAkEvent(FFrame&, void* const) +native function PostAkEvent(AkEvent InAkEvent); + +// Export UTgDeployable::execRegisterObstacle(FFrame&, void* const) +native function RegisterObstacle(); + +// Export UTgDeployable::execUnRegisterObstacle(FFrame&, void* const) +native function UnRegisterObstacle(); + +// Export UTgDeployable::execGetHealth(FFrame&, void* const) +native function float GetHealth(); + +// Export UTgDeployable::execGetMaxHealth(FFrame&, void* const) +native function float GetMaxHealth(); + +// Export UTgDeployable::execGetHealthPercent(FFrame&, void* const) +native function float GetHealthPercent(); + +// Export UTgDeployable::execGetMana(FFrame&, void* const) +native function float GetMana(); + +// Export UTgDeployable::execGetMaxMana(FFrame&, void* const) +native function float GetMaxMana(); + +// Export UTgDeployable::execGetShieldHealth(FFrame&, void* const) +native function float GetShieldHealth(); + +// Export UTgDeployable::execGetMaxShield(FFrame&, void* const) +native function float GetMaxShield(); + +// Export UTgDeployable::execCanTakeHealthDamage(FFrame&, void* const) +native function bool CanTakeHealthDamage(); + +// Export UTgDeployable::execCanDealHeadShots(FFrame&, void* const) +native function bool CanDealHeadShots(); + +// Export UTgDeployable::execCanTakeHeadShots(FFrame&, void* const) +native function bool CanTakeHeadShots(); + +// Export UTgDeployable::execOnlyTakeHeadShots(FFrame&, void* const) +native function bool OnlyTakeHeadShots(); + +// Export UTgDeployable::execIsImmuneToDamage(FFrame&, void* const) +native function bool IsImmuneToDamage(); + +// Export UTgDeployable::execCanBeExecuted(FFrame&, void* const) +native function bool CanBeExecuted(); + +// Export UTgDeployable::execIsImmuneToHealing(FFrame&, void* const) +native function bool IsImmuneToHealing(); + +// Export UTgDeployable::execBuffDamage(FFrame&, void* const) +native function BuffDamage(Actor Target, TgEffectDamage Effect, ImpactInfo Impact, float fBaseDamage, out float fProratedAmount, out ExtraDamageInfo ExtraInfo); + +// Export UTgDeployable::execGetSpecialDamageDealtPercentAI(FFrame&, void* const) +native function float GetSpecialDamageDealtPercentAI(); + +// Export UTgDeployable::execGetSpecialDamageTakenPercentAI(FFrame&, void* const) +native function float GetSpecialDamageTakenPercentAI(); + +// Export UTgDeployable::execMitigateHealthDamage(FFrame&, void* const) +native function MitigateHealthDamage(TgPawn pInstigator, TgEffectDamage Effect, ImpactInfo Impact, out float NewValue, out float fPercReduction); + +// Export UTgDeployable::execGetDamageReductionPerc(FFrame&, void* const) +native function float GetDamageReductionPerc(TgDevice damageDev, TgEffectGroup eg); + +// Export UTgDeployable::execTakeHealthDamage(FFrame&, void* const) +native function TakeHealthDamage(float fDamage, Controller InstigatedBy, Class DamageType, ImpactInfo Impact, ExtraDamageInfo ExtraInfo, optional Actor DamageCauser); + +// Export UTgDeployable::execCanBeLifestealInstigator(FFrame&, void* const) +native function bool CanBeLifestealInstigator(); + +// Export UTgDeployable::execCanBeLifestealTarget(FFrame&, void* const) +native function bool CanBeLifestealTarget(); + +// Export UTgDeployable::execCanTakeManaDamage(FFrame&, void* const) +native function bool CanTakeManaDamage(); + +// Export UTgDeployable::execTakeManaDamage(FFrame&, void* const) +native function TakeManaDamage(float fDamage, Controller InstigatedBy, Class DamageType, ImpactInfo Impact, ExtraDamageInfo ExtraInfo, optional Actor DamageCauser); + +// Export UTgDeployable::execCanTakeShieldDamage(FFrame&, void* const) +native function bool CanTakeShieldDamage(); + +// Export UTgDeployable::execCanUsePersonalShield(FFrame&, void* const) +native function bool CanUsePersonalShield(); + +// Export UTgDeployable::execTakePersonalShieldDamage(FFrame&, void* const) +native function int TakePersonalShieldDamage(float fDamage, Controller InstigatedBy, Class DamageType, ImpactInfo Impact, ExtraDamageInfo ExtraInfo, optional Actor DamageCauser); + +// Export UTgDeployable::execShieldDamageAppliesToHealth(FFrame&, void* const) +native function bool ShieldDamageAppliesToHealth(); + +// Export UTgDeployable::execTakeStealthDamage(FFrame&, void* const) +native function TakeStealthDamage(float fDamage); + +// Export UTgDeployable::execGetDamageToLeaveStealth(FFrame&, void* const) +native function float GetDamageToLeaveStealth(); + +// Export UTgDeployable::execHandleNotificationsForAI(FFrame&, void* const) +native function HandleNotificationsForAI(float fStatChange, TgPawn InstigatorPawn); + +// Export UTgDeployable::execLocalPlayerHasLOS(FFrame&, void* const) +native function bool LocalPlayerHasLOS(); + +// Export UTgDeployable::execGetLocation(FFrame&, void* const) +native function Vector GetLocation(); + +// Export UTgDeployable::execGetPropCurrentValue(FFrame&, void* const) +native function float GetPropCurrentValue(int nPropIndex); + +// Export UTgDeployable::execGetPropIndex(FFrame&, void* const) +native function int GetPropIndex(int nPropId); + +// Export UTgDeployable::execGetMarkedPercent(FFrame&, void* const) +native function float GetMarkedPercent(Actor InstigatorPawn); + +// Export UTgDeployable::execGetMarkedPercentInhand(FFrame&, void* const) +native function float GetMarkedPercentInhand(Actor InstigatorPawn); + +// Export UTgDeployable::execOnViewTargetChanged(FFrame&, void* const) +native function OnViewTargetChanged(optional Actor aNewViewTarget); + +// Export UTgDeployable::execGetEffectManager(FFrame&, void* const) +native function TgEffectManager GetEffectManager(); + +// Export UTgDeployable::execGetDesignType(FFrame&, void* const) +native function TgCombatActor.GameplayDesignType GetDesignType(); + +// Export UTgDeployable::execIsPet(FFrame&, void* const) +native function bool IsPet(); + +// Export UTgDeployable::execGetPetOwner(FFrame&, void* const) +native function Actor GetPetOwner(); + +// Export UTgDeployable::execGetCurrentGameplayCurveSet(FFrame&, void* const) +native function TgGameplayCurvesSet GetCurrentGameplayCurveSet(TgGameplayCurvesSet.ECurveSetTypes Type); + +// Export UTgDeployable::execUseRangeFalloffCurve(FFrame&, void* const) +native function bool UseRangeFalloffCurve(); + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + m_TimeCreated = int(WorldInfo.TimeSeconds); + // End:0x5E + if(int(Role) == int(ROLE_Authority)) + { + m_LastDamager = none; + m_LastDamagerTimeStamp = 0; + } + // End:0xBA + if(int(Role) == int(ROLE_Authority)) + { + r_nFlashFireCount++; + InitializeDefaultProps(); + // End:0xBA + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + FlashFireCountUpdated(); + } + } + // End:0xED + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + NotifyGroupChanged(); + } + //return; +} + +simulated function NotifyLocalPlayerTeamReceived() +{ + NotifyGroupChanged(); + //return; +} + +simulated event int GetDeployableUniqueId() +{ + // End:0x31 + if(r_DRI != none) + { + return r_DRI.r_nUniqueDeployableId; + } + else + { + return 0; + } + //return ReturnValue; +} + +simulated function Actor GetActorFromCombatActor() +{ + return self; + //return ReturnValue; +} + +simulated function GetAimAssistBounds(const out Vector ObserverLocation, out float Width, out float Height, out Vector Center) +{ + GetAimFrictionExtent(Width, Height, Center); + //return; +} + +event ApplyEquipEffects() +{ + local int I; + + // End:0x11 + if(r_EffectManager == none) + { + return; + } + // End:0x87 + if(m_EquipEffects.Length > 0) + { + I = 0; + J0x2C: + + // End:0x87 [Loop If] + if(I < m_EquipEffects.Length) + { + r_EffectManager.ProcessEffect(m_EquipEffects[I], self); + I++; + // [Loop Continue] + goto J0x2C; + } + } + //return; +} + +simulated function OnGetTaskForceNumber(TgSeqAct_GetTaskForceNumber Action) +{ + SeqVar_Int(Action.VariableLinks[1].LinkedVariables[0]).IntValue = GetTaskForceNumber(); + //return; +} + +simulated event StartFire() +{ + // End:0x11 + if(m_FireMode == none) + { + return; + } + // End:0x31 + if(m_bInDestroyedState && !s_bDestroyedThisTick) + { + return; + } + // End:0x40 + if(IsFiring()) + { + return; + } + r_nFlashFireCount++; + GotoState('DeviceBuildup'); + // End:0x8C + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + FlashFireCountUpdated(); + } + //return; +} + +simulated event StopFire() +{ + // End:0x1B + if(IsFiring()) + { + GotoState('Active'); + } + //return; +} + +simulated function DeviceFired() +{ + // End:0x2B + if(m_bConsumedOnFire && s_fPersistTime == float(0)) + { + DestroyIt(); + } + //return; +} + +simulated function ImpactInfo CalcDeviceFire(Vector StartTrace, Vector EndTrace, optional out array ImpactList) +{ + local ImpactInfo CurrentImpact; + local AimData Aim; + + Aim.StartTrace = StartTrace; + Aim.EndTrace = EndTrace; + Aim.AimVector = Vector(Rotation); + // End:0xCE + if(m_FireMode != none) + { + return m_FireMode.CalcWeaponModeFire(self, Aim, ImpactList).Impact; + } + return CurrentImpact; + //return ReturnValue; +} + +function InstantFireDeployable() +{ + local array ImpactList; + local ImpactInfo RealImpact; + local Vector EndTrace, StartLoc, AimDir; + + StartLoc = GetPhysicalFireStartLoc(); + SetFlashLocation(StartLoc); + AimDir = GetPhysicalFireAimDirection(StartLoc, Location); + EndTrace = StartLoc + (m_FireMode.GetRange() * AimDir); + RealImpact = CalcDeviceFire(StartLoc, EndTrace, ImpactList); + SetFlashLocation(RealImpact.HitLocation); + ApplyHit(ImpactList); + //return; +} + +simulated function ApplyHit(out array ImpactList) +{ + local int Idx; + + Idx = 0; + J0x0B: + + // End:0x90 [Loop If] + if(Idx < ImpactList.Length) + { + // End:0x82 + if(ImpactList[Idx].HitActor != none) + { + m_FireMode.ApplyHit(ImpactList[Idx], self); + } + Idx++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function Projectile ProjectileFireDeployable() +{ + local Vector StartLoc, AimDir; + local Projectile Proj; + local Class projClass; + + // End:0x3CB + if((int(Role) == int(ROLE_Authority)) && m_FireMode != none) + { + StartLoc = GetPhysicalFireStartLoc(); + SetFlashLocation(StartLoc); + AimDir = GetPhysicalFireAimDirection(StartLoc, Location); + projClass = m_FireMode.GetProjectileClass(); + // End:0xAC + if(projClass == none) + { + return none; + } + // End:0x20E + if(ClassIsChildOf(projClass, Class'TgGame.TgProj_Simulated')) + { + Proj = TgRepInfo_Game(WorldInfo.GRI).SpawnSimulatedProjectile(TgGame(WorldInfo.Game).GetNextProjectileInstanceId(), m_FireMode.m_nId, Instigator, StartLoc, AimDir); + // End:0x194 + if(Proj == none) + { + return none; + } + TgProjectile(Proj).m_OwnerFireMode = m_FireMode; + TgProjectile(Proj).r_vSpawnLocation = Proj.Location; + } + else + { + Proj = Spawn(projClass, none,, StartLoc, Rotator(AimDir)); + // End:0x399 + if((Proj != none) && !Proj.bDeleteMe) + { + TgProjectile(Proj).r_Owner = self; + TgProjectile(Proj).r_nOwnerFireModeId = m_FireMode.m_nId; + TgProjectile(Proj).m_OwnerFireMode = m_FireMode; + TgProjectile(Proj).r_vSpawnLocation = StartLoc; + m_FireMode.InitializeProjectile(Proj); + Proj.Init(AimDir); + } + } + TgProjectile(Proj).CompleteInitialization(); + return Proj; + } + return none; + //return ReturnValue; +} + +simulated function Vector GetPhysicalFireStartLoc() +{ + return Location; + //return ReturnValue; +} + +simulated function Vector GetPhysicalFireAimDirection(Vector fireLoc, Vector TargetLocation) +{ + return Normal(TargetLocation - fireLoc); + //return ReturnValue; +} + +function FireAmmunitionDeployable() +{ + local int nNumShots, I; + + // End:0x0F + if(bTearOff) + { + return; + } + nNumShots = m_FireMode.m_nShotsPerFire; + I = 0; + J0x42: + + // End:0x8B [Loop If] + if(I < nNumShots) + { + // End:0x73 + if(m_bInstantFire) + { + InstantFireDeployable(); + } + else + { + ProjectileFireDeployable(); + } + I++; + // [Loop Continue] + goto J0x42; + } + m_FireMode.ApplyEffectType(self, 10030); + // End:0xED + if(s_DeployFactory != none) + { + s_DeployFactory.TriggerEventClass(Class'TgGame.TgSeqEvent_DeployableFired', self, 0, false); + } + r_nFlashFireCount++; + //return; +} + +simulated function IncrementFlashCount() +{ + bForceNetUpdate = true; + r_nFlashCount++; + // End:0x38 + if(int(r_nFlashCount) == int(0)) + { + r_nFlashCount += 2; + } + // End:0x56 + if(int(Role) == int(ROLE_Authority)) + { + FlashCountUpdated(); + } + //return; +} + +simulated function ClearFlashCount() +{ + // End:0x4A + if(int(r_nFlashCount) != int(0)) + { + bForceNetUpdate = true; + r_nFlashCount = 0; + // End:0x4A + if(int(Role) == int(ROLE_Authority)) + { + FlashCountUpdated(); + } + } + //return; +} + +function SetFlashLocation(Vector NewLoc) +{ + // End:0x2F + if(NewLoc == r_vFlashLocation) + { + NewLoc += vect(0.0000000, 0.0000000, 1.0000000); + } + // End:0x61 + if(NewLoc == vect(0.0000000, 0.0000000, 0.0000000)) + { + NewLoc = vect(0.0000000, 0.0000000, 1.0000000); + } + bForceNetUpdate = true; + r_vFlashLocation = NewLoc; + // End:0xB3 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + FlashLocationUpdated(); + } + //return; +} + +function ClearFlashLocation() +{ + // End:0x67 + if(!IsZero(r_vFlashLocation)) + { + bForceNetUpdate = true; + r_vFlashLocation = vect(0.0000000, 0.0000000, 0.0000000); + // End:0x67 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + FlashLocationUpdated(); + } + } + //return; +} + +simulated event PlayFireFx() +{ + // End:0x6C + if(c_FireFx != none) + { + c_FireFx.SpawnEmitter(Location, Vector(Rotation)); + c_FireFx.SpawnSound(Location); + } + //return; +} + +simulated function FlashCountUpdated() +{ + // End:0xA0 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x72 + if(int(r_nFlashCount) > int(0)) + { + // End:0x6F + if(c_Form != none) + { + c_Form.BuildUp(0); + } + } + else + { + // End:0xA0 + if(c_Form != none) + { + c_Form.BeginActive(); + } + } + } + //return; +} + +simulated function FlashLocationUpdated() +{ + // End:0x91 + if(!IsZero(r_vFlashLocation)) + { + // End:0x8E + if(c_Form != none) + { + // End:0x5D + if(m_bInstantFire) + { + c_Form.Fire(r_vFlashLocation, 0, 0); + } + else + { + c_Form.Fire(vect(0.0000000, 0.0000000, 0.0000000), 0, 0); + } + } + } + else + { + // End:0xC3 + if(c_Form != none) + { + c_Form.BuildUp(0); + } + } + //return; +} + +simulated function FlashFireCountUpdated() +{ + // End:0x1E + if(int(c_nPreviousFlashFireCount) != int(0)) + { + PlayFireFx(); + } + c_nPreviousFlashFireCount = r_nFlashFireCount; + // End:0x98 + if(c_Mesh != none) + { + c_Mesh.FxDeactivateGroup('Fire', 0); + c_Mesh.FxActivateGroup('Fire', 0); + } + //return; +} + +simulated function bool IsFiring() +{ + return false; + //return ReturnValue; +} + +simulated function TimeDeviceFiring() +{ + // End:0x46 + if(!IsTimerActive('RefireCheckTimer')) + { + SetTimer(m_FireMode.GetRefireTime(), true, 'RefireCheckTimer'); + } + //return; +} + +simulated event StartDeploy() +{ + local editinline SkeletalMeshComponent SkelComp; + + // End:0xA2 + if(!m_bIsDeployed) + { + GotoState('Deploy'); + SkelComp = SkeletalMeshComponent(c_Mesh); + // End:0xA2 + if((SkelComp != none) && SkelComp.Animations != none) + { + SkelComp.Animations.ReplayAnim(); + } + } + //return; +} + +simulated function RefireCheckTimer() +{ + //return; +} + +simulated function OnSetTaskforce(TgSeqAct_SetTaskforce Action) +{ + SetTaskForceNumber(Action.TaskForceNumber); + //return; +} + +simulated function CalcDeployPercentage() +{ + local TgRepInfo_Game Game; + + Game = TgRepInfo_Game(WorldInfo.GRI); + // End:0xEC + if((Game != none) && IsInState('Deploy')) + { + // End:0xB1 + if((m_fCurrentDeployPercentage < float(1)) && r_fTimeToDeploySecs > float(0)) + { + m_fCurrentDeployPercentage = r_fCurrentDeployTime / r_fTimeToDeploySecs; + m_fCurrentDeployPercentage = FMin(m_fCurrentDeployPercentage, 1.0000000); + } + else + { + // End:0xD1 + if(m_fCurrentDeployPercentage != float(1)) + { + m_fCurrentDeployPercentage = 1.0000000; + } + } + // End:0xEC + if(m_fCurrentDeployPercentage == float(1)) + { + DeployComplete(); + } + } + //return; +} + +function OnPersistTimerExpire() +{ + // End:0x3C + if(c_Mesh != none) + { + c_Mesh.FxActivateGroup('DeployableFizzle', 0); + } + DestroyIt(); + //return; +} + +event ResetPersistTime() +{ + // End:0x73 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x73 + if(s_fPersistTime != float(0)) + { + SetTimer(s_fPersistTime, false, 'OnPersistTimerExpire'); + // End:0x73 + if(r_DRI != none) + { + r_DRI.StartLifespanTimer(s_fPersistTime); + } + } + } + //return; +} + +simulated function DeployComplete() +{ + // End:0x1E + if(m_bIsDeployed || m_bInDestroyedState) + { + return; + } + m_bIsDeployed = true; + GotoState('Active'); + // End:0xCC + if(int(Role) == int(ROLE_Authority)) + { + UpdateHealth(); + // End:0x6D + if(m_bFireOnDeploy) + { + StartFire(); + } + // End:0xCC + if(s_fPersistTime != float(0)) + { + SetTimer(s_fPersistTime, false, 'OnPersistTimerExpire'); + // End:0xCC + if(r_DRI != none) + { + r_DRI.StartLifespanTimer(s_fPersistTime); + } + } + } + ActivateOnWhenDeployedFx(true); + // End:0xF5 + if(int(Role) == int(ROLE_Authority)) + { + NotifyDeployed(); + } + // End:0x149 + if(WorldInfo.IsPlayingDemo() && CollisionComponent != none) + { + CollisionComponent.SetTraceBlocking(true, true); + } + // End:0x19C + if((int(m_CollisionSettings.mCollisionMode) == int(2)) && m_CollisionSettings.bAutoRegisterObstacle) + { + RegisterObstacle(); + } + //return; +} + +function NotifyDeployed() +{ + local TgPawn TgP; + + TgP = TgPawn(Instigator); + // End:0x4B + if(TgP != none) + { + TgP.DeployableOnDeployed(self); + } + //return; +} + +function UpdateTimeToDeploySecs(float fValue) +{ + // End:0x38 + if(IsInState('Deploy')) + { + r_fTimeToDeploySecs = r_fTimeToDeploySecs - fValue; + CalcDeployPercentage(); + } + //return; +} + +simulated function TickDeploy(float DeltaSeconds) +{ + //return; +} + +simulated event name GetWhileAliveDisplayGroup() +{ + return 'WhileAlive'; + //return ReturnValue; +} + +simulated event name GetDestroyedDisplayGroup() +{ + return 'Destroyed'; + //return ReturnValue; +} + +simulated event ActivateWhileAliveFx(bool bOn) +{ + local editinline TgSkeletalMeshComponent MeshAsSkeletalMeshComponent; + local editinline TgStaticMeshComponent MeshAsStaticMeshComponent; + local name nmWhileAliveDisplayGroup; + + MeshAsSkeletalMeshComponent = TgSkeletalMeshComponent(c_Mesh); + MeshAsStaticMeshComponent = TgStaticMeshComponent(c_Mesh); + nmWhileAliveDisplayGroup = GetWhileAliveDisplayGroup(); + // End:0xD3 + if(bOn) + { + // End:0x94 + if(MeshAsSkeletalMeshComponent != none) + { + MeshAsSkeletalMeshComponent.ActivateWhileAliveFx(true, nmWhileAliveDisplayGroup); + } + else + { + // End:0xD0 + if(MeshAsStaticMeshComponent != none) + { + MeshAsStaticMeshComponent.FxActivateGroup(nmWhileAliveDisplayGroup, 0, 0, 0, true); + } + } + } + else + { + // End:0x10E + if(MeshAsSkeletalMeshComponent != none) + { + MeshAsSkeletalMeshComponent.ActivateWhileAliveFx(false, nmWhileAliveDisplayGroup); + } + else + { + // End:0x148 + if(MeshAsStaticMeshComponent != none) + { + MeshAsStaticMeshComponent.FxDeactivateGroup(nmWhileAliveDisplayGroup, 0, 0, 0); + } + } + } + //return; +} + +simulated event ActivateOnWhenDeployedFx(bool bOn) +{ + local editinline TgSkeletalMeshComponent MeshAsSkeletalMeshComponent; + local editinline TgStaticMeshComponent MeshAsStaticMeshComponent; + + MeshAsSkeletalMeshComponent = TgSkeletalMeshComponent(c_Mesh); + MeshAsStaticMeshComponent = TgStaticMeshComponent(c_Mesh); + // End:0xB6 + if(bOn) + { + // End:0x77 + if(MeshAsSkeletalMeshComponent != none) + { + MeshAsSkeletalMeshComponent.ActivateOnWhenDeployedFx(true); + } + else + { + // End:0xB3 + if(MeshAsStaticMeshComponent != none) + { + MeshAsStaticMeshComponent.FxActivateGroup('OnWhenDeployed', 0, 0, 0, true); + } + } + } + else + { + // End:0xE8 + if(MeshAsSkeletalMeshComponent != none) + { + MeshAsSkeletalMeshComponent.ActivateOnWhenDeployedFx(false); + } + else + { + // End:0x122 + if(MeshAsStaticMeshComponent != none) + { + MeshAsStaticMeshComponent.FxDeactivateGroup('OnWhenDeployed', 0, 0, 0); + } + } + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x23 + if(VarName == 'r_nDeployableId') + { + ApplyDeployableSetup(); + return; + } + // End:0x46 + if(VarName == 'r_nFlashCount') + { + FlashCountUpdated(); + return; + } + // End:0x69 + if(VarName == 'r_vFlashLocation') + { + FlashLocationUpdated(); + return; + } + // End:0x8C + if(VarName == 'r_nFlashFireCount') + { + FlashFireCountUpdated(); + return; + } + // End:0xBF + if(VarName == 'r_nHealth') + { + // End:0xBD + if(r_nHealth <= 0) + { + DestroyIt(); + } + return; + } + // End:0xFD + if(VarName == 'r_nReplicateDestroyIt') + { + // End:0xFB + if(r_nReplicateDestroyIt > 0) + { + DestroyIt(r_nReplicateDestroyIt > 1); + } + return; + } + // End:0x120 + if(VarName == 'r_bInitialIsEnemy') + { + NotifyGroupChanged(); + return; + } + super.ReplicatedEvent(VarName); + //return; +} + +event SpawningDeviceToggledOff() +{ + DestroyIt(false); + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + local Vector vRotation; + + // End:0x54 + if((int(m_CollisionSettings.mCollisionMode) == int(2)) && m_CollisionSettings.bAutoRegisterObstacle) + { + UnRegisterObstacle(); + } + // End:0x63 + if(m_bInDestroyedState) + { + return; + } + StopFire(); + SetHUDOverlayState(2); + // End:0x88 + if(bTearOff) + { + return; + } + // End:0xAD + if(m_DestroyedMesh != none) + { + LifeSpan = m_fLifeAfterDeathSecs; + } + else + { + LifeSpan = ((m_fLifeAfterDeathSecs > float(0)) ? m_fLifeAfterDeathSecs : 0.1000000); + SetCollision(false, false, false); + } + // End:0x257 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x254 + if(!bSkipFx && c_Mesh != none) + { + vRotation = Normal(Vector(Rotation)); + c_Mesh.FxActivateIndependant(GetDestroyedDisplayGroup(), 0, Location, vRotation); + // End:0x1D4 + if((GetHealth()) <= 0.0000000) + { + c_Mesh.FxActivateIndependant('DestroyedByKill', 0, Location, vRotation); + } + else + { + c_Mesh.FxActivateIndependant('DestroyedByTimeout', 0, Location, vRotation); + } + ActivateOnWhenDeployedFx(false); + c_Mesh.FxDeactivateGroup('Deploying', 0); + ActivateWhileAliveFx(false); + } + } + else + { + r_nReplicateDestroyIt = ((bSkipFx) ? 2 : 1); + } + // End:0x2A3 + if(m_SilhouetteManager != none) + { + m_SilhouetteManager.m_bSilhouettesEnabled = false; + } + ClearBasedPawnList(); + SwapMeshToDestroyed(); + m_bInDestroyedState = true; + s_bDestroyedThisTick = true; + DeployableDestroyed(); + // End:0x314 + if(s_DeployFactory != none) + { + s_DeployFactory.TriggerEventClass(Class'TgGame.TgSeqEvent_PlaceableDestroyed', self, 0, false); + } + // End:0x35A + if((int(Role) == int(ROLE_Authority)) && r_DRI != none) + { + r_DRI.r_bInDestroyedState = true; + } + //return; +} + +event AddBasedPawn(TgPawn basedPawn) +{ + // End:0x33 + if((basedPawn == none) || m_PawnsBasedOnMe.Find(basedPawn) != -1) + { + return; + } + m_PawnsBasedOnMe.AddItem(basedPawn); + //return; +} + +event RemoveBasedPawn(TgPawn basedPawn) +{ + local int Index; + + // End:0x11 + if(basedPawn == none) + { + return; + } + Index = m_PawnsBasedOnMe.Find(basedPawn); + // End:0x59 + if(Index != -1) + { + m_PawnsBasedOnMe.Remove(Index, 1); + } + //return; +} + +simulated function ClearBasedPawnList() +{ + m_PawnsBasedOnMe.Length = 0; + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + super.Tick(DeltaSeconds); + s_bDestroyedThisTick = false; + //return; +} + +simulated function Destroyed() +{ + local TgPawn TgP; + + // End:0x53 + if((int(m_CollisionSettings.mCollisionMode) == int(2)) && m_CollisionSettings.bAutoRegisterObstacle) + { + UnRegisterObstacle(); + } + // End:0x93 + if(TgDeployableFactory(s_DeployFactory) != none) + { + TgDeployableFactory(s_DeployFactory).DeployableDied(); + } + // End:0xBA + if(r_DRI != none) + { + r_DRI.Destroy(); + } + // End:0xE1 + if(r_EffectManager != none) + { + r_EffectManager.Destroy(); + } + // End:0x148 + if(m_SilhouetteManager != none) + { + m_SilhouetteManager.m_bSilhouettesEnabled = false; + m_SilhouetteManager.ClearAllSilhouetteInfos(); + m_SilhouetteManager.Destroy(); + } + ClearBasedPawnList(); + TgP = TgPawn(Instigator); + // End:0x19D + if(TgP != none) + { + TgP.DeployableOnDestroyed(self); + } + DeployableDestroyed(); + super.Destroyed(); + // End:0x1E4 + if(m_AkActorUnoccluded != none) + { + m_AkActorUnoccluded.LifeSpan = 2.0000000; + } + //return; +} + +event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + // End:0xB3 + if(r_bTakeDamage) + { + super.TakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + r_nHealth = Max(0, r_nHealth - Damage); + UpdateHealth(); + // End:0xB3 + if((r_nHealth <= 0) && int(Role) == int(ROLE_Authority)) + { + DestroyIt(); + } + } + //return; +} + +// Export UTgDeployable::execGetDeployableNameById(FFrame&, void* const) +native function string GetDeployableNameById(int DeployableId); + +simulated event bool CanApplyEffects() +{ + return !m_bInDestroyedState && r_bTakeDamage; + //return ReturnValue; +} + +simulated event bool DamageShouldEnterCombat() +{ + return true; + //return ReturnValue; +} + +event InitReplicationInfo() +{ + // End:0x3AF + if(!bDeleteMe && int(Role) == int(ROLE_Authority)) + { + r_DRI = TgRepInfo_Deployable(Spawn(m_DRIClass, self,, vect(0.0000000, 0.0000000, 0.0000000), rot(0, 0, 0))); + // End:0x3AF + if(r_DRI != none) + { + UpdateHealth(); + r_DRI.r_nHealthMaximum = r_nHealth; + r_DRI.r_nDeployableId = r_nDeployableId; + r_DRI.r_DeployableOwner = self; + r_DRI.SetBotRankId(BotRankId); + r_DRI.r_bMinimapOnlyOwnerSee = c_bMinimapOnlyOwnerSee; + // End:0x23C + if(s_DeployFactory != none) + { + r_DRI.r_bOwnedByTaskforce = true; + r_DRI.SetTaskForce(TgRepInfo_Game(WorldInfo.GRI).GetTaskForce(int(s_DeployFactory.s_nTaskForce), true)); + // End:0x239 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + r_DRI.CheckNotifyGroupChanged(); + } + } + else + { + // End:0x348 + if(Instigator != none) + { + // End:0x302 + if(r_DRI.r_bOwnedByTaskforce) + { + r_DRI.SetTaskForce(TgRepInfo_Game(WorldInfo.GRI).GetTaskForce(int(TgPawn(Instigator).GetTaskForceNumber()), true)); + Instigator = none; + } + else + { + TgRepInfo_Player(Instigator.PlayerReplicationInfo).AddMinion(r_DRI); + } + } + } + r_DRI.UpdateDeployableLocation(); + // End:0x3AF + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + r_DRI.ReceivedDeployableOwner(); + } + } + } + //return; +} + +simulated function bool IsBoxExtentInRange(Vector BoxCenter, Vector BoxExtent) +{ + // End:0x54 + if(m_FireMode != none) + { + return BoxCircleTest(Location, m_FireMode.GetDamageRadius(), BoxCenter, BoxExtent); + } + return false; + //return ReturnValue; +} + +simulated function ToggleSpectateFx(optional bool bForceDisable) +{ + local TgSpecialFx SpecialFx; + local int I; + + // End:0x38 + if(!WorldInfo.IsPlayingDemo() || c_Mesh == none) + { + return; + } + c_bIsSpectateToggleActive = ((bForceDisable) ? false : !c_bIsSpectateToggleActive); + // End:0x1D6 + if(c_bIsSpectateToggleActive) + { + SpecialFx = TgSpecialFx(c_Mesh.FxActivateGroup('SpectatorToggle', 0)); + // End:0x195 + if(SpecialFx != none) + { + I = 0; + J0xC6: + + // End:0x195 [Loop If] + if(I < SpecialFx.c_PSCList.Length) + { + // End:0x187 + if(SpecialFx.c_PSCList[I].c_PSC != none) + { + SpecialFx.c_PSCList[I].c_PSC.m_bRealTimeTicking = true; + } + I++; + // [Loop Continue] + goto J0xC6; + } + } + c_Mesh.FxDeactivateGroup('SpectatorToggleFadeOut', 0); + m_fDisableSpectatorFxTimeRemaining = m_fDisableSpectatorFxTime; + } + else + { + m_fDisableSpectatorFxTimeRemaining = 0.0000000; + c_Mesh.FxDeactivateGroup('SpectatorToggle', 0); + SpecialFx = TgSpecialFx(c_Mesh.FxActivateGroup('SpectatorToggleFadeOut', 0)); + // End:0x339 + if(SpecialFx != none) + { + I = 0; + J0x26A: + + // End:0x339 [Loop If] + if(I < SpecialFx.c_PSCList.Length) + { + // End:0x32B + if(SpecialFx.c_PSCList[I].c_PSC != none) + { + SpecialFx.c_PSCList[I].c_PSC.m_bRealTimeTicking = true; + } + I++; + // [Loop Continue] + goto J0x26A; + } + } + } + //return; +} + +simulated event DeactivateSpectatorFxTimer() +{ + ToggleSpectateFx(true); + //return; +} + +final simulated function PlayGenericTakeHit(Vector HitLocation, Vector HitNormal) +{ + // End:0xBA + if(((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && c_Mesh != none) && r_bTakeDamage) + { + c_Mesh.FxSpawnEmitter('TakeHit', 0, HitLocation, HitNormal); + c_Mesh.FxSpawnSound('TakeHit', 0, HitLocation); + } + //return; +} + +// Export UTgDeployable::execGetDefaultDecalDimensions(FFrame&, void* const) +native function bool GetDefaultDecalDimensions(int nDecalId, int nSpecialFxId, out float Height, out float Width); + +simulated function UpdateDecalScale(TgSpecialFx Fx, float radiusScale) +{ + local int I; + local editinline DecalComponent DecalComp; + local float Height, Width; + + I = 0; + J0x0B: + + // End:0x1A6 [Loop If] + if(I < Fx.c_DecalList.Length) + { + DecalComp = Fx.c_DecalList[I].c_Decal; + // End:0x198 + if((DecalComp != none) && GetDefaultDecalDimensions(Fx.c_DecalList[I].c_nId, Fx.c_nFxId, Height, Width)) + { + DecalComp.Width = (Width * radiusScale) * float(16); + DecalComp.Height = (Height * radiusScale) * float(16); + DecalComp.ForceUpdate(false); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated event CollisionChanged() +{ + super.CollisionChanged(); + // End:0x67 + if((int(m_CollisionSettings.mCollisionMode) == int(2)) && m_CollisionSettings.bAutoRegisterObstacle) + { + UnRegisterObstacle(); + RegisterObstacle(); + } + //return; +} + +simulated event SetHUDOverlayDisplayMask(int dodm) +{ + // End:0x37 + if(r_DRI != none) + { + r_DRI.SetHUDOverlayDisplayMask(dodm); + } + //return; +} + +simulated event AddHUDOverlayDisplayMask(int dodm) +{ + // End:0x57 + if(r_DRI != none) + { + r_DRI.SetHUDOverlayDisplayMask(r_DRI.r_nDeployableOverlayDisplayMask | dodm); + } + //return; +} + +simulated event SetHUDOverlayIcon(TgObject.DeployableOverlayIcon doi) +{ + // End:0x37 + if(r_DRI != none) + { + r_DRI.SetHUDOverlayIcon(doi); + } + //return; +} + +simulated event SetHUDOverlayState(TgObject.DeployableOverlayState dos) +{ + // End:0x37 + if(r_DRI != none) + { + r_DRI.SetHUDOverlayState(dos); + } + //return; +} + +simulated event SetHUDOverlayEnemyViewDist(float enemyViewDist) +{ + // End:0x37 + if(r_DRI != none) + { + r_DRI.SetHUDOverlayEnemyViewDist(enemyViewDist); + } + //return; +} + +simulated function float GetMaxAimAssistStacks() +{ + return m_fMaxAimAssistStacks; + //return ReturnValue; +} + +auto state PreInit +{Begin: + + stop; +} + +simulated state Deploy +{ + ignores StartFire; + + simulated function BeginState(name PreviousStateName) + { + // End:0x73 + if(r_fTimeToDeploySecs > float(0)) + { + // End:0x34 + if(int(Role) == int(ROLE_Authority)) + { + m_fCurrentDeployPercentage = 0.0000000; + } + // End:0x70 + if(c_Mesh != none) + { + c_Mesh.FxActivateGroup('Deploying', 0); + } + } + else + { + TickDeploy(0.0000000); + } + // End:0xBE + if(int(Role) == int(ROLE_Authority)) + { + r_fInitDeployTime = WorldInfo.TimeSeconds; + } + ActivateWhileAliveFx(true); + // End:0x129 + if(int(Role) == int(ROLE_Authority)) + { + SetHUDOverlayIcon(m_InitHUDOverlayIcon); + SetHUDOverlayDisplayMask(m_nInitHUDOverlayDisplayMask); + SetHUDOverlayState(m_InitHUDOverlayState); + SetHUDOverlayEnemyViewDist(m_InitHUDOverlayEnemyViewDist); + } + //return; + } + + simulated function EndState(name NextStateName) + { + TickDeploy(0.0000000); + // End:0x49 + if(c_Mesh != none) + { + c_Mesh.FxDeactivateGroup('Deploying', 0); + } + //return; + } + + simulated function Tick(float DeltaSeconds) + { + global.Tick(DeltaSeconds); + TickDeploy(DeltaSeconds); + //return; + } + + simulated function TickDeploy(float DeltaSeconds) + { + r_fCurrentDeployTime += DeltaSeconds; + CalcDeployPercentage(); + //return; + } + + function float GetSaveHealthPercent() + { + local int nMaxHealth, nMaxDeployHealth; + + nMaxDeployHealth = GetMaxDeployHealth(); + nMaxHealth = int(GetMaxHealth()); + // End:0x6E + if((nMaxDeployHealth > 0) && nMaxHealth > 0) + { + return (float(nMaxDeployHealth) - m_fDamagedDuringDeploy) / float(nMaxHealth); + } + return 1.0000000; + //return ReturnValue; + } + stop; +} + +simulated state Active +{ stop; +} + +simulated state DeviceBuildup +{ + simulated function bool IsFiring() + { + return true; + //return ReturnValue; + } + + simulated function DeployableTimer() + { + GotoState('DeviceFiring'); + //return; + } + + simulated function BeginState(name PreviousStateName) + { + // End:0x43 + if(int(Role) == int(ROLE_Authority)) + { + m_FireMode.ApplyEffectType(Instigator, 262); + } + IncrementFlashCount(); + m_fStateTime = m_FireMode.GetBuildupTime(); + // End:0xA1 + if(m_fStateTime > float(0)) + { + SetTimer(m_fStateTime, false, 'DeployableTimer'); + } + else + { + GotoState('DeviceFiring'); + } + //return; + } + + simulated function EndState(name NextStateName) + { + // End:0x43 + if(int(Role) == int(ROLE_Authority)) + { + m_FireMode.RemoveEffectType(Instigator, false, 262); + } + ClearTimer('DeployableTimer'); + //return; + } + stop; +} + +simulated state DeviceFiring +{ + simulated function RefireCheckTimer() + { + FireAmmunitionDeployable(); + TimeDeviceFiring(); + //return; + } + + simulated function bool IsFiring() + { + return true; + //return ReturnValue; + } + + simulated function BeginState(name PreviousStateName) + { + // End:0x3C + if(c_Mesh != none) + { + c_Mesh.FxActivateGroup('WhileFiring', 0); + } + // End:0x77 + if(int(Role) == int(ROLE_Authority)) + { + m_FireMode.ApplyEffectType(self, 263); + } + FireAmmunitionDeployable(); + m_bHasAlreadyFiredOnce = true; + TimeDeviceFiring(); + DeviceFired(); + //return; + } + + simulated function EndState(name NextStateName) + { + // End:0x3A + if(c_Mesh != none) + { + c_Mesh.FxDeactivateGroup('WhileFiring', 0); + } + // End:0x7D + if(int(Role) == int(ROLE_Authority)) + { + m_FireMode.RemoveEffectType(Instigator, false, 263); + } + ClearFlashCount(); + ClearFlashLocation(); + ClearTimer('RefireCheckTimer'); + //return; + } + stop; +} + +defaultproperties +{ + m_bFireOnDeploy=true + m_bDestroyAfterRoundEnds=true + m_bAdjustMeshToGround=true + m_bUseRangeFalloffCurve=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDeployable.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + begin object name="MyLightEnvironment" class=Engine.DynamicLightEnvironmentComponent + bDynamic=false + end object + LightEnvironment=MyLightEnvironment + AlwaysRelevantDistanceSquared=2560000.0000000 + m_fMaxAimAssistStacks=0.1000000 + m_InitHUDOverlayEnemyViewDist=1600.0000000 + m_TargetCollisionTraceDistance=100.0000000 + m_DRIClass=Class'TgGame.TgRepInfo_Deployable' + m_fDisableSpectatorFxTime=3.0000000 + Components[0]=MyLightEnvironment + RemoteRole=ENetRole.ROLE_SimulatedProxy + bPushedByEncroachers=false + bReplicateInstigator=true + bIgnoreBaseRotation=true + bCanBeDamaged=true + bUpdateHavokPos=true + NetPriority=1.4000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeployableFactory.uc b/exported/TgGame/Classes/TgDeployableFactory.uc new file mode 100755 index 00000000..76c89ce6 --- /dev/null +++ b/exported/TgGame/Classes/TgDeployableFactory.uc @@ -0,0 +1,142 @@ +class TgDeployableFactory extends TgActorFactory + native(Factory) + placeable + hidecategories(Navigation,Advanced,Attachment,Collision,Display,Advanced,Attachment,Collision,Display); + +var int nCurrentCount; +var float s_fLastSpawnTime; +var() bool s_bSpawnOnce; +var() int s_nDeployableId; +var() float s_fDeployableLifeSpan; + +// Export UTgDeployableFactory::execSpawnObject(FFrame&, void* const) +native function SpawnObject(); + +simulated function PostBeginPlay() +{ + local TgRepInfo_Game GRI; + + super(Actor).PostBeginPlay(); + // End:0xB4 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x9D + if(int(s_nTaskForce) > int(0)) + { + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x9D + if(GRI != none) + { + GRI.GetTaskForce(int(s_nTaskForce), true); + } + } + // End:0xB4 + if(s_bAutoSpawn) + { + SpawnObject(); + } + } + //return; +} + +function DeployableDied() +{ + nCurrentCount--; + // End:0x38 + if(s_bAutoSpawn && int(Role) == int(ROLE_Authority)) + { + SpawnObject(); + } + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x46 + if(Action.InputLinks[0].bHasImpulse) + { + s_bAutoSpawn = true; + } + else + { + // End:0x8C + if(Action.InputLinks[1].bHasImpulse) + { + s_bAutoSpawn = false; + } + else + { + // End:0xDB + if(Action.InputLinks[2].bHasImpulse) + { + s_bAutoSpawn = !s_bAutoSpawn; + } + } + } + // End:0xF2 + if(s_bAutoSpawn) + { + SpawnObject(); + } + //return; +} + +function OnKillBots(TgSeqAct_KillBots inAction) +{ + local TgDeployable deployable; + + // End:0x73 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x72 + foreach DynamicActors(Class'TgGame.TgDeployable', deployable) + { + // End:0x71 + if(deployable.s_DeployFactory == self) + { + deployable.DestroyIt(); + } + } + } + //return; +} + +simulated function OnSetTaskforce(TgSeqAct_SetTaskforce Action) +{ + local TgDeployable deployable; + + // End:0xA5 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x7A + foreach DynamicActors(Class'TgGame.TgDeployable', deployable) + { + // End:0x79 + if(deployable.s_DeployFactory == self) + { + deployable.OnSetTaskforce(Action); + } + } + s_nTaskForce = byte(Action.TaskForceNumber); + } + //return; +} + +defaultproperties +{ + s_fLastSpawnTime=-1.0000000 + s_bSpawnOnce=true + m_nSelectionListPropId=185 + // Reference: SpriteComponent'TgGame.Default__TgDeployableFactory.WorldIcon' + // TemplateOwnerClass: none + // TemplateOwnerName: 'WorldIcon' + // Archetype: SpriteComponent'TgGame.Default__TgActorFactory.WorldIcon' + begin object name="WorldIcon" + ReplacementPrimitive=none + end object + m_WorldIconSprite=WorldIcon + Components[0]=none + Components[1]=none + Components[2]=WorldIcon + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDestructible.uc b/exported/TgGame/Classes/TgDestructible.uc new file mode 100755 index 00000000..fcd4b3ba --- /dev/null +++ b/exported/TgGame/Classes/TgDestructible.uc @@ -0,0 +1,171 @@ +class TgDestructible extends SkeletalMeshActor + native + hidecategories(Navigation); + +var repnotify TgEffectManager r_EffectManager; +var() int r_nMaxHealth; +var() bool m_bDisplayHealth; +var bool m_bDestroyed; +var transient bool m_bInitialized; +var(FogOfWar) bool m_bFogOfWarBlocker; +var(FogOfWar) bool m_bOneDirectional; +var() int m_nPhysicalType; +var() byte m_nTaskForce; +var repnotify int r_nHealth; +var repnotify int r_nActorInstanceId; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetInitial) + r_EffectManager, r_nActorInstanceId, + r_nMaxHealth; + + // Pos:0x020 + if(int(Role) == int(ROLE_Authority)) + r_nHealth; +} + +// Export UTgDestructible::execIsFriendlyWithLocalPawn(FFrame&, void* const) +native final function bool IsFriendlyWithLocalPawn(); + +// Export UTgDestructible::execForceNetRelevant(FFrame&, void* const) +native function ForceNetRelevant(); + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x7E + if(int(Role) == int(ROLE_Authority)) + { + r_nHealth = r_nMaxHealth; + r_EffectManager = Spawn(Class'TgGame.TgEffectManager', self); + r_EffectManager.r_Owner = self; + ForceNetRelevant(); + } + TgRepInfo_Game(WorldInfo.GRI).AddDestructible(self); + m_bInitialized = true; + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x33 + if(VarName == 'r_nHealth') + { + // End:0x31 + if(r_nHealth <= 0) + { + DestroyIt(); + } + return; + } + super.ReplicatedEvent(VarName); + //return; +} + +event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + super.TakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + // End:0x5C + if(r_nHealth <= 0) + { + return; + } + r_nHealth = r_nHealth - Damage; + // End:0x94 + if(r_nHealth <= 0) + { + DestroyIt(); + } + //return; +} + +simulated function DestroyIt(optional bool bSkipFx) +{ + // End:0x10 + if(m_bDestroyed) + { + return; + } + bNetDirty = true; + ForceNetRelevant(); + SetCollision(false, false); + SetPhysics(0); + m_bDestroyed = true; + TriggerEventClass(Class'TgGame.TgSeqEvent_PlaceableDestroyed', self, 0, false); + SetHidden(true); + //return; +} + +simulated function Destroyed() +{ + DestroyIt(true); + // End:0x32 + if(r_EffectManager != none) + { + r_EffectManager.Destroy(); + } + TgRepInfo_Game(WorldInfo.GRI).RemoveDestructible(self); + super.Destroyed(); + //return; +} + +simulated event bool CanApplyEffects() +{ + return !m_bDestroyed; + //return ReturnValue; +} + +defaultproperties +{ + r_nMaxHealth=100 + m_bDisplayHealth=true + m_bFogOfWarBlocker=true + m_nPhysicalType=861 + // Reference: SkeletalMeshComponent'TgGame.Default__TgDestructible.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'Engine.Default__SkeletalMeshActor.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'TgGame.Default__TgDestructible.SkeletalMeshComponent0.AnimNodeSeq0' + // Archetype: AnimNodeSequence'Engine.Default__SkeletalMeshActor.AnimNodeSeq0' + begin object name="AnimNodeSeq0" + end object + Animations=AnimNodeSeq0 + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgDestructible.MyLightEnvironment' + BlockNonZeroExtent=true + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDestructible.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'TgGame.Default__TgDestructible.MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__SkeletalMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'TgGame.Default__TgDestructible.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'TgGame.Default__TgDestructible.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'Engine.Default__SkeletalMeshActor.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + bOnlyDirtyReplication=true + bCollideActors=true + bBlockActors=true + CollisionComponent=SkeletalMeshComponent0 + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDestructibleFactory.uc b/exported/TgGame/Classes/TgDestructibleFactory.uc new file mode 100755 index 00000000..93efcecb --- /dev/null +++ b/exported/TgGame/Classes/TgDestructibleFactory.uc @@ -0,0 +1,32 @@ +class TgDestructibleFactory extends TgActorFactory + native(Factory) + placeable + hidecategories(Navigation,Advanced,Attachment,Collision,Display,Advanced,Attachment,Collision,Display); + +var() const editconst export editinline LightEnvironmentComponent LightEnvironment; + +// Export UTgDestructibleFactory::execSpawnObject(FFrame&, void* const) +native function SpawnObject(); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDestructibleFactory.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + begin object name="MyLightEnvironment" class=Engine.DynamicLightEnvironmentComponent + end object + LightEnvironment=MyLightEnvironment + m_nSelectionListPropId=188 + // Reference: SpriteComponent'TgGame.Default__TgDestructibleFactory.WorldIcon' + // TemplateOwnerClass: none + // TemplateOwnerName: 'WorldIcon' + // Archetype: SpriteComponent'TgGame.Default__TgActorFactory.WorldIcon' + begin object name="WorldIcon" + ReplacementPrimitive=none + end object + m_WorldIconSprite=WorldIcon + Components[0]=none + Components[1]=none + Components[2]=WorldIcon + Components[3]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice.uc b/exported/TgGame/Classes/TgDevice.uc new file mode 100755 index 00000000..7885d51d --- /dev/null +++ b/exported/TgGame/Classes/TgDevice.uc @@ -0,0 +1,7385 @@ +class TgDevice extends Weapon + native(Devices) + hidecategories(Navigation) + implements(TgGameplayCurveOwner); + +const TGMAX_FIRE_MODE = 5; +const TGEGT_EQUIP = 261; +const TGEGT_BUILDUP = 262; +const TGEGT_WHILE_FIRING = 263; +const TGEGT_WHILE_HOLDING = 15173; +const TGEGT_PRE_HIT_DELAY = 10455; +const TGEGT_POST_HIT_DELAY = 10456; +const TGEGT_EQUIP_MODE = 283; +const TGEGT_FIRED_PER_SHOT = 10030; +const TGEGT_ACTIVE = 11073; +const TGEGT_SUCCESSFUL_HIT = 759; +const TGEGT_HIT = 264; +const TGEGT_HIT_SPECIAL_MANAGED = 10036; +const TGEGT_HIT_SPECIAL_INSTANT = 10681; +const TGEGT_HIT_AURA = 10060; +const TGEGT_FINAL_BLOW = 10575; +const TGD_MESH_TYPE_INHAND = 855; +const TGD_MESH_TYPE_ATTACHED = 856; +const TG_VV_PACING_TYPE_HEALTH = 10692; +const TG_VV_PACING_TYPE_MANA = 10013; +const TG_VV_PACING_TYPE_ENERGY = 10014; +const TG_AIM_FUDGE_FACTOR = 256.0f; +const TG_RANGE_FALLOFF_BEGIN_PERCENT = 50.0f; +const TG_RANGE_FALLOFF_MIN_PERCENT = 10.0f; +const TG_AOE_FALLOFF_BEGIN_PERCENT = 70.0f; +const TG_AOE_FALLOFF_MIN_PERCENT = 70.0f; +const TG_MIN_REFIRE_SPEED = 0.5; +const TG_RETICULE_AIM_DISTANCE = 10.f; +const DEPLOYMODE_GROUND_DELTA_CHECK_DIST = 60.0f; +const DEPLOYMODE_MINIMUM_RADIUS_CHECK_DIST = 20.0f; +const REFIRE_SERVER_GRACE = 0.1f; +const COOLDOWN_SERVER_GRACE = 0.5f; +const TGDT_ABILITY1_CARD = 15000; +const TGDT_ABILITY2_CARD = 15188; +const TGDT_ALTFIRE_CARD = 15189; +const TGDT_ARMOR_CARD = 11051; +const TGDT_WEAPON_CARD = 11049; +const TGDT_BASIC_ATTACK = 10828; +const TGDT_TEST_DEVICE = 10844; +const TGDT_PASSIVES = 10964; +const TGDT_ABILITY = 11041; +const TGDT_MOVEMENT_ABILITY = 11070; +const TGDT_MOUNT = 11077; +const TGDT_SUB_COMPONENT = 11052; +const TGDT_ULTIMATE = 15052; +const TGDT_RECALL = 15054; +const TGDT_ACTIVES = 15055; +const TGDT_EMOTE = 15205; +const TGDT_SPRAY = 15332; +const TGDT_TALENT_ABILITY1 = 15381; +const TGDT_TALENT_ABILITY2 = 15390; +const TGDT_TALENT_ALTFIRE = 15391; +const TGDT_TALENT_ARMOR = 15392; +const TGDT_TALENT_WEAPON = 15393; +const TGDT_TALENT_ULTIMATE = 15437; +const TGDT_BOT_MELEE = 671; +const TGDT_BOT_RANGED = 670; +const TGDT_RANGED = 388; +const TGDT_CONSUMABLE = 10097; +const TG_CANCEL_SAFETY_PERIOD = 0.5f; +const TGDT_MAX_QUEUED_PROJECTILE_TOUCHES = 128; +const MAX_RECOIL_SEED = 32749; + +enum EWeaponFireType +{ + EWFT_InstantHit, // 0 + EWFT_Projectile, // 1 + EWFT_Custom, // 2 + EWFT_None, // 3 + EWFT_MAX // 4 +}; + +enum ETargetingModeStatus +{ + TMS_None, // 0 + TMS_CannotFire, // 1 + TMS_CannotPlace, // 2 + TMS_OK, // 3 + TMS_OutOfRange, // 4 + TMS_MAX // 5 +}; + +enum EDeviceChangeEvent +{ + DCE_Created, // 0 + DCE_ToggleState, // 1 + DCE_CanFire, // 2 + DCE_Selected, // 3 + DCE_Cooldown, // 4 + DCE_PtsAlloc, // 5 + DCE_Refire, // 6 + DCE_InstanceCount, // 7 + DCE_DeviceBuildup, // 8 + DCE_MAX // 9 +}; + +enum EAltFireType +{ + ALTFIRE_None, // 0 + ALTFIRE_SecondMode, // 1 + ALTFIRE_AlternateDevice, // 2 + ALTFIRE_AlternateDeviceAndFireInhand,// 3 + ALTFIRE_MAX // 4 +}; + +enum ENotifyDelegateEvents +{ + NDE_OnFired, // 0 + NDE_OnReload, // 1 + NDE_OnStartFire, // 2 + NDE_OnStopFire, // 3 + NDE_Generic1, // 4 + NDE_Generic2, // 5 + NDE_Generic3, // 6 + NDE_MAX // 7 +}; + +enum DeviceEmoteAt +{ + DEA_StartBuildup, // 0 + DEA_StartFire, // 1 + DEA_Custom, // 2 + DEA_MAX // 3 +}; + +enum DeviceTimerBarType +{ + DTBT_None, // 0 + DTBT_PreHit, // 1 + DTBT_PostHit, // 2 + DTBT_PersistTime, // 3 + DTBT_RefireTime, // 4 + DTBT_FireHold, // 5 + DTBT_Custom, // 6 + DTBT_MAX // 7 +}; + +struct native AmmoTransaction +{ + var float TransactionTimestamp; + var int TransactionId; + var int AmmoAmountChanged; + var bool FilledClip; + + structdefaultproperties + { + TransactionTimestamp=0.0000000 + TransactionId=0 + AmmoAmountChanged=0 + FilledClip=false + } +}; + +struct native TrackedFiringAmmoConsumption +{ + var int FiringRequestID; + var int AmmoConsumed; + + structdefaultproperties + { + FiringRequestID=0 + AmmoConsumed=0 + } +}; + +struct native TgQueuedSimulatedProjectileSpawn +{ + var float TimeStampToSpawn; + var int FireRequestId; + var TgDeviceFire FireMode; + var Vector ProjectileSpawnLocation; + var Vector ProjectileSpawnDir; + var int ProjectileIndex; + var int ProjectileIdOverride; + var float Range; + var Actor trackingTarget; + var Vector EndTrace; + var float ClientMovementTimeStamp; + var float AccuracyRandomValue1; + var float AccuracyRandomValue2; + + structdefaultproperties + { + TimeStampToSpawn=0.0000000 + FireRequestId=0 + FireMode=none + ProjectileSpawnLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + ProjectileSpawnDir=(X=0.0000000,Y=0.0000000,Z=0.0000000) + ProjectileIndex=0 + ProjectileIdOverride=0 + Range=0.0000000 + trackingTarget=none + EndTrace=(X=0.0000000,Y=0.0000000,Z=0.0000000) + ClientMovementTimeStamp=0.0000000 + AccuracyRandomValue1=0.0000000 + AccuracyRandomValue2=0.0000000 + } +}; + +struct native TgQueuedProjectileExplosion +{ + var int ClientFireRequestId; + var Actor Target; + var Vector HitLocation; + var Vector HitNormal; + var float ProjectileAliveTime; + var float MovementTimeStamp; + var float AoeRewindTimeStamp; + + structdefaultproperties + { + ClientFireRequestId=0 + Target=none + HitLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + HitNormal=(X=0.0000000,Y=0.0000000,Z=0.0000000) + ProjectileAliveTime=0.0000000 + MovementTimeStamp=0.0000000 + AoeRewindTimeStamp=0.0000000 + } +}; + +struct native ImpactToValidate +{ + var int PackedAssociatedShotIDs; + var float ImpactTimeStamp; + var ImpactInfo Impact; + + structdefaultproperties + { + PackedAssociatedShotIDs=0 + ImpactTimeStamp=0.0000000 + Impact=(HitActor=none,HitLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitNormal=(X=0.0000000,Y=0.0000000,Z=0.0000000),RayDir=(X=0.0000000,Y=0.0000000,Z=0.0000000),StartTrace=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitInfo=(Material=none,PhysMaterial=none,Item=0,LevelIndex=0,BoneName="None",HitComponent=none),PercAbsorbedDamage=0.0000000,DeviceModeReference=none,Projectile=none,bDirectHit=false,nFiringInstance=0,nShotsHit=0) + } +}; + +struct native TgQueuedRefire +{ + var int ClientFireRequestId; + var byte DesiredFireMode; + var AimData Aim; + + structdefaultproperties + { + ClientFireRequestId=0 + DesiredFireMode=255 + Aim=(StartTrace=(X=0.0000000,Y=0.0000000,Z=0.0000000),EndTrace=(X=0.0000000,Y=0.0000000,Z=0.0000000),AimVector=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitActor=none,ClientMovementTimeStamp=0.0000000,bResult=false) + } +}; + +struct native TgQueuedInstantFireShot +{ + var int FireRequestId; + var AimData Aim; + var ImpactToValidate PrimaryImpact; + var array Impacts; + var int AmmoToConsume; + var float AccuracyRandomValue1; + var float AccuracyRandomValue2; + + structdefaultproperties + { + FireRequestId=0 + Aim=(StartTrace=(X=0.0000000,Y=0.0000000,Z=0.0000000),EndTrace=(X=0.0000000,Y=0.0000000,Z=0.0000000),AimVector=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitActor=none,ClientMovementTimeStamp=0.0000000,bResult=false) + PrimaryImpact=(PackedAssociatedShotIDs=0,ImpactTimeStamp=0.0000000,Impact=(HitActor=none,HitLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitNormal=(X=0.0000000,Y=0.0000000,Z=0.0000000),RayDir=(X=0.0000000,Y=0.0000000,Z=0.0000000),StartTrace=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitInfo=(Material=none,PhysMaterial=none,Item=0,LevelIndex=0,BoneName="None",HitComponent=none),PercAbsorbedDamage=0.0000000,DeviceModeReference=none,Projectile=none,bDirectHit=false,nFiringInstance=0,nShotsHit=0)) + Impacts=none + AmmoToConsume=0 + AccuracyRandomValue1=0.0000000 + AccuracyRandomValue2=0.0000000 + } +}; + +struct native AccuracySettings +{ + var bool bUsesAdvancedAccuracy; + var float fMaxAccuracy; + var float fMinAccuracy; + var float fAccuracyLossPerShot; + var float fAccuracyGainPerSec; + var float fAccuracyGainDelay; + var int nNumFreeShots; + + structdefaultproperties + { + bUsesAdvancedAccuracy=false + fMaxAccuracy=0.0000000 + fMinAccuracy=0.0000000 + fAccuracyLossPerShot=0.0000000 + fAccuracyGainPerSec=0.0000000 + fAccuracyGainDelay=0.0000000 + nNumFreeShots=0 + } +}; + +struct native RecoilSettings +{ + var bool bUsesRecoil; + var float fRecoilReductionPerSec; + var float fRecoilCenterDelay; + var float fRecoilSmoothRate; + + structdefaultproperties + { + bUsesRecoil=false + fRecoilReductionPerSec=0.0000000 + fRecoilCenterDelay=0.0000000 + fRecoilSmoothRate=0.0000000 + } +}; + +var private native const noexport Pointer VfTable_ITgGameplayCurveOwner; +var repnotify int r_nDeviceId; +var int r_nDeviceInstanceId; +var repnotify int r_nInstanceCount; +var TgObject.TG_EQUIP_POINT r_eEquippedAt; +var byte CurrentFireMode; +var byte m_PendingFireMode; +var TgDevice.ETargetingModeStatus c_eTargetingModeStatus; +var byte m_nDesiredFireMode; +var TgObject.EDeviceFailType m_eCachedDeviceFailType; +var TgClientSettings.ECastMode m_eCastModeOverride; +var() TgDevice.EAltFireType m_AltFireType; +var TgObject.EReticuleType m_ReticuleType; +var TgObject.EReticuleType m_ZoomedReticuleType; +var TgDevice.DeviceEmoteAt m_DeviceEmoteAt; +var TgDevice.DeviceTimerBarType m_DeviceTimerBarType; +var repnotify int r_nPointsAllocated; +var bool m_bSocketMaxCalculated; +var bool r_bParentDeviceOwnedByOffhand; +var bool bPendingFire; +var bool m_IsPendingSetFireMode; +var bool m_bEquipEffectsApplied; +var bool m_CachedMissedInstantFire; +var bool c_bUsesTargetingReticle; +var bool r_OverrideUsesTargetingModeAsFalse; +var bool s_bIgnoreReceivedAim; +var bool m_bHandDevice; +var bool m_bProcAsIfHandDevice; +var bool m_bLockInputDuringFire; +var bool m_bLockCameraDuringFire; +var bool m_bShouldCacheAim; +var bool r_bConsumedOnUse; +var bool r_bConsumedOnDeath; +var bool m_bCachedDeviceCanFire; +var bool m_bCarryPreFireToPostFire; +var bool m_bIsSecondaryFire; +var bool m_bIgnoreSecondaryFireLogic; +var bool m_bConsumePowerPoolOnStartFire; +var bool m_bAlwaysStartCooldown; +var bool m_bInTargetingMode; +var bool m_IsBeingInterrupted; +var bool HasAlreadyFiredOnce; +var bool c_bAltFireSecondModeNow; +var bool m_bBuildupShouldInterruptStealth; +var bool m_bPreFireShouldInterruptStealth; +var bool m_bFireShouldInterruptStealth; +var bool m_bPostFireShouldInterruptStealth; +var bool m_bReloadingShouldInterruptStealth; +var bool m_bCancelingShouldInterruptStealth; +var bool m_bStartFireShouldEnterCombat; +var bool m_bFireShouldEnterCombat; +var bool m_bShouldUseInstigatorsTimeDilation; +var bool m_bDamages; +var bool m_bStuns; +var bool m_bSlows; +var bool m_bProjectileFollowOwnerYaw; +var bool m_bAimThroughReticule; +var bool m_bNoReticleBloom; +var bool m_bUseCustomCastMode; +var bool m_bIsAltFiring; +var bool m_bAltFireEnabled; +var bool m_bUsesBurstFire; +var bool m_bIsFirstBurstShot; +var bool m_bOnlyFirstBurstCostsAmmo; +var bool m_bBurstCanBeInterrupted; +var bool m_bCanEndBurstEarly; +var bool c_bBurstPendingStopFire; +var bool s_bInBurstRecovery; +var bool s_bIsStartingBurstFire; +var bool m_bCanRegenAmmoWhileFiring; +var bool m_bUsesSimulatedAmmo; +var bool m_bCanReloadEarly; +var bool m_bForce3PViewWhileFiring; +var bool m_bCanCancelWithJump; +var bool m_bEnterCombatOnFire; +var() bool m_bDeployAtFeetOnFailure; +var bool m_bMustBeOnGroundToFire; +var bool m_bHideTargeterWhenInvalid; +var bool m_bAbilityRequiresInhandResync; +var bool m_bParentAnimComponentHands; +var bool m_bParentAnimComponent1PHead; +var bool m_bAmmoWasGiven; +var bool m_bFirstAmmoWasGiven; +var bool m_bCooldownWasModified; +var bool m_bDisableLagCompensation; +var bool m_bUseRangeFalloffCurve; +var bool m_bUseDeviceMeshWhenTargeting; +var bool m_bPlayPutAway; +var bool m_bCanToggleTargeting; +var bool m_bRemoveTargetingOnMount; +var const bool m_bDoNotAllowHeadShots; +var const bool m_bConsolidateMultipleShots; +var bool m_bAllowFiringDuring3pTo1pTransition; +var bool s_bLockFiringForRoundEnd; +var bool m_bPreventInterrupt; +var bool m_bPreventCancel; +var bool m_bLogServerFireFailures; +var bool m_bUsesOutroLockout; +var bool m_bIsFireHoldDevice; +var bool m_bForceReleaseFireHoldWhenCharged; +var bool m_bFireHoldFull; +var bool m_DeviceTimerBarCountsUp; +var bool m_bCooldownAfterDeployDeath; +var int m_nSocketIndex; +var int m_nSocketMax; +var TgDevice s_ParentDevice; +var array m_FireMode; +var int r_nMeleeComboSeed; +var TgDeviceForm c_DeviceForm; +var TgTimerManager m_CooldownTimers; +var array PendingImpactList; +var AimData c_TargetingAim; +var AimData m_CachedAim; +var float m_fCachedFirePostHitDelay; +var int m_CachedFireRequestId; +var AimData s_ReceivedAim; +var native Pointer m_pwzDeviceName; +var int m_nDeviceType; +var float EquipTime; +var TgInventoryObject_Device s_InventoryObject; +var int m_nSkillId; +var int r_nInventoryId; +var float m_fLastDeviceCanFireTimeStamp; +var float m_EndOfLastFireTimeStamp; +var float m_fFiringTimer; +var float m_fTimeAccountedFor; +var float m_fTimeStampAccountedFor; +var float m_IndividualOffhandCooldownTime; +var float m_fTotalReloadTime; +var float r_fCooldownDelay; +var float c_fCachedManaAtStartFire; +var TgDeviceFire s_WhileFiringDeviceMode; +var float m_fPreviousEnergy; +var float m_fUnequipTime; +var Vector m_vMeshViewOffset; +var float m_fWeaponBob; +var float m_fMeshFOV; +var() Vector m_vProjectileSpawnOffset; +var float m_fAltFireTimeStamp; +var float m_fAltFireLockOutTime; +var int m_nBurstTotalShots; +var int m_nBurstShotsRemaining; +var repnotify int r_nAmmoClipCount; +var int c_nSimLocalAmmoClipCount; +var array m_AmmoTransactions; +var array m_DelayedAmmoTransactions; +var array s_RecievedUnverifiedDelayedAmmoTransactions; +var array m_DelayedAmmoTransactionRegen; +var int m_nPendingRegenAmmoTransactionID; +var int m_nPendingReloadAmmoTransactionID; +var TrackedFiringAmmoConsumption c_EligableRefundFiringIDs[30]; +var int c_nEligableRefundFiringIDsIndexLast; +var int c_nEligableRefundFiringIDsIndexFirst; +var int m_nLastFiringIDToConsumeAmmo; +var int r_nMaxAmmoClipCount; +var int m_UniqueAmmoValidationId; +var float m_fAmmoRegenPerSec; +var float m_fAmmoRegenCounter; +var array m_FiredProjectiles; +var float m_fForce3PPersistDuration; +var float m_fForce3PPersistTimer; +var float m_fEnterCombatDuration; +var repnotify TgDeployable r_Deployable; +var int r_nProjectiles; +var() float m_fDeployZForgiveness; +var float m_fBottomlessPitCheck; +var() float m_fDeployZOffset; +var array m_Abilities; +var int m_DisplayIcon; +var string m_DisplayName; +var TgDevice m_PrimaryWeaponParent; +var() Class m_WeaponMeshActorClass; +var Actor m_LastKnownHitActor; +var array< delegate > m_OnFiredDelegates; +var array< delegate > m_OnReloadDelegates; +var array< delegate > m_OnStartFireDelegates; +var array< delegate > m_OnStopFireDelegates; +var array< delegate > m_Generic1Delegates; +var array< delegate > m_Generic2Delegates; +var array< delegate > m_Generic3Delegates; +var array m_nLinkedDeviceIDs; +var array m_nLinkedDeviceTypes; +var array c_QueuedSimulatedProjectileSpawns; +var array s_QueuedProjectileSpawnsFromServer; +var array s_QueuedProjectileSpawnsFromClient; +var array s_QueuedProjectileExplosions; +var int s_nNumServerRefires; +var int s_nNumClientRefires; +var array s_QueuedRefireRequests; +var array s_QueuedInstantFireShotsFromServer; +var array s_QueuedInstantFireShotsFromClient; +var native const transient Pointer m_RandomShotSpreadStream; +var int m_nLastSetShotSpreadSeed; +var Vector2D m_AimAssistMagnetScale; +var Vector2D m_AimAssistFrictionScale; +var Vector2D m_AimAssistTrackingScale; +var Vector2D m_AimVectorAssistMaxBoundsScale; +var Vector2D m_AimVectorAssistMaxAssistanceDegrees; +var array m_AimAssistKeyframesMagnetVert; +var array m_AimAssistKeyframesMagnetHoriz; +var array m_AimAssistKeyframesFriction; +var array m_AimAssistKeyframesTrackingAccHoriz; +var array m_AimAssistKeyframesTrackingAngleHoriz; +var array m_AimAssistKeyframesTrackingAccVert; +var array m_AimAssistKeyframesTrackingAngleVert; +var TgGameplayCurves m_GameplayCurvesDeprecated; +var array m_GameplayCurveOverrideDevices; +var int m_nServerControlledShotSpreadSeed; +var float m_fOutroLockoutTime; +var() float m_fMinTimeBetweenAmmoCharges; +var() ForceFeedbackWaveform m_ForceFeedbackStartHold; +var() ForceFeedbackWaveform m_ForceFeedbackFullHold; +var() ForceFeedbackWaveform m_ForceFeedbackStopHold; +var() ForceFeedbackWaveform m_ForceFeedbackStartFire; +var() ForceFeedbackWaveform m_ForceFeedbackStopFire; +var() ForceFeedbackWaveform m_ForceFeedbackStartBuildup; +var() ForceFeedbackWaveform m_ForceFeedbackStopBuildup; +var() ForceFeedbackWaveform m_ForceFeedbackPostFire; +var() ForceFeedbackWaveform m_ForceFeedbackStartReload; +var() ForceFeedbackWaveform m_ForceFeedbackStopReload; +var() ForceFeedbackWaveform m_ForceFeedbackStartCooldown; +var float s_fForceReleaseFirHoldFUBARTime; +var int s_nLastRequestedFireHoldReleaseID; +var(Accuracy) AccuracySettings m_AccuracySettings[5]; +var float m_fCurrentAdvancedAccuracy; +var float m_fLastShotTimestamp; +var int m_nFreeShotsLeft; +var float m_fLastMinAccuracy; +var float m_fReticleBloomScale; +var(Recoil) RecoilSettings m_RecoilSettings[5]; +var float m_fStartFiringTimestamp; +var float m_fAccumulatedFiringTime; +var transient int m_nRandRecoilNum; +var repnotify transient int r_nRecoilSeed; +var int m_nAimAssistPriorityWhileFiring; +var repnotify int r_nAllowUseWhileFlags; +//var delegate __DeviceEvent__Delegate; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + CurrentFireMode, r_Deployable, + r_OverrideUsesTargetingModeAsFalse, r_eEquippedAt, + r_fCooldownDelay, r_nAllowUseWhileFlags, + r_nAmmoClipCount, r_nInstanceCount, + r_nInventoryId, r_nMaxAmmoClipCount, + r_nMeleeComboSeed, r_nPointsAllocated, + r_nProjectiles, r_nRecoilSeed; + + // Pos:0x011 + if((int(Role) == int(ROLE_Authority)) && bNetInitial) + r_bConsumedOnDeath, r_bConsumedOnUse, + r_bParentDeviceOwnedByOffhand, r_nDeviceId, + r_nDeviceInstanceId; +} + +simulated delegate DeviceEvent() +{ + //return; +} + +// Export UTgDevice::execApplyDeviceSetup(FFrame&, void* const) +native function bool ApplyDeviceSetup(); + +// Export UTgDevice::execQueryProjectileClass(FFrame&, void* const) +native function name QueryProjectileClass(optional int nMode); + +// Export UTgDevice::execQueryDeployableClass(FFrame&, void* const) +native function name QueryDeployableClass(optional int nMode); + +// Export UTgDevice::execGetFireSocketName(FFrame&, void* const) +native function name GetFireSocketName(); + +// Export UTgDevice::execCalcFireSocketIndexMax(FFrame&, void* const) +native function CalcFireSocketIndexMax(); + +// Export UTgDevice::execGetDeviceName(FFrame&, void* const) +native function string GetDeviceName(); + +// Export UTgDevice::execRemoveConsumableFromOwnerInventory(FFrame&, void* const) +native function RemoveConsumableFromOwnerInventory(); + +// Export UTgDevice::execLogDebugInfo(FFrame&, void* const) +native function bool LogDebugInfo(); + +// Export UTgDevice::execServerDetonate(FFrame&, void* const) +native function bool ServerDetonate(optional int nFireMode = 0); + +// Export UTgDevice::execTickTargetingMode(FFrame&, void* const) +native function TickTargetingMode(float DeltaSeconds); + +// Export UTgDevice::execGetCurrentFire(FFrame&, void* const) +native function TgDeviceFire GetCurrentFire(); + +// Export UTgDevice::execGetDeviceFire(FFrame&, void* const) +native function TgDeviceFire GetDeviceFire(int nMode); + +// Export UTgDevice::execApplyEquipEffects(FFrame&, void* const) +native function ApplyEquipEffects(); + +// Export UTgDevice::execRemoveEquipEffects(FFrame&, void* const) +native function RemoveEquipEffects(); + +// Export UTgDevice::execBecomeActive(FFrame&, void* const) +native final function BecomeActive(optional bool bSkipActiveEffects); + +// Export UTgDevice::execCeaseActive(FFrame&, void* const) +native final function CeaseActive(optional bool bSkipActiveEffects); + +// Export UTgDevice::execOnBecomeActive(FFrame&, void* const) +native function OnBecomeActive(); + +// Export UTgDevice::execOnCeaseActive(FFrame&, void* const) +native function OnCeaseActive(); + +// Export UTgDevice::execCheckModeRange(FFrame&, void* const) +native function bool CheckModeRange(int nMode, Vector vDelta); + +// Export UTgDevice::execGetModeRange(FFrame&, void* const) +native function int GetModeRange(int nMode); + +// Export UTgDevice::execIsOffhand(FFrame&, void* const) +native function bool IsOffhand(); + +// Export UTgDevice::execIsOwnedByOffhand(FFrame&, void* const) +native function bool IsOwnedByOffhand(); + +// Export UTgDevice::execIsPurchasedAbility(FFrame&, void* const) +native function bool IsPurchasedAbility(); + +// Export UTgDevice::execIsAbility(FFrame&, void* const) +native final function bool IsAbility(optional bool bExcludeMovement); + +// Export UTgDevice::execIsMovementAbility(FFrame&, void* const) +native final function bool IsMovementAbility(); + +// Export UTgDevice::execIsEmote(FFrame&, void* const) +native final function bool IsEmote(); + +// Export UTgDevice::execIsCard(FFrame&, void* const) +native final function bool IsCard(); + +// Export UTgDevice::execIsArmorCard(FFrame&, void* const) +native final function bool IsArmorCard(); + +// Export UTgDevice::execIsBurnCard(FFrame&, void* const) +native final function bool IsBurnCard(); + +// Export UTgDevice::execIsTestDevice(FFrame&, void* const) +native final function bool IsTestDevice(); + +// Export UTgDevice::execCanBeStunned(FFrame&, void* const) +native function bool CanBeStunned(); + +// Export UTgDevice::execCanBeSilenced(FFrame&, void* const) +native function bool CanBeSilenced(); + +// Export UTgDevice::execCanBeDisarmed(FFrame&, void* const) +native function bool CanBeDisarmed(); + +// Export UTgDevice::execCanBeCrippled(FFrame&, void* const) +native function bool CanBeCrippled(); + +// Export UTgDevice::execCanBeStasisLocked(FFrame&, void* const) +native function bool CanBeStasisLocked(); + +// Export UTgDevice::execCanBeGrabbed(FFrame&, void* const) +native function bool CanBeGrabbed(); + +// Export UTgDevice::execGetConePullbackDistance(FFrame&, void* const) +native function float GetConePullbackDistance(); + +// Export UTgDevice::execHasEnoughPowerPool(FFrame&, void* const) +native function bool HasEnoughPowerPool(byte FireModeNum); + +// Export UTgDevice::execIsDeviceCoolingDown(FFrame&, void* const) +native function bool IsDeviceCoolingDown(); + +// Export UTgDevice::execIsInCooldownGracePeriod(FFrame&, void* const) +native function bool IsInCooldownGracePeriod(); + +// Export UTgDevice::execIsDeviceRefiring(FFrame&, void* const) +native function bool IsDeviceRefiring(); + +// Export UTgDevice::execGetCooldownTimerManager(FFrame&, void* const) +native function TgTimerManager GetCooldownTimerManager(); + +// Export UTgDevice::execCheckAndUpdateCooldown(FFrame&, void* const) +native function CheckAndUpdateCooldown(); + +// Export UTgDevice::execSendDeviceChangeEvent(FFrame&, void* const) +native function SendDeviceChangeEvent(TgDevice.EDeviceChangeEvent Event); + +// Export UTgDevice::execSendCombatLogEvent(FFrame&, void* const) +native function SendCombatLogEvent(TgObject.ITEM_EVENT_TYPE Type); + +// Export UTgDevice::execGetCombatLogEventLocation(FFrame&, void* const) +native function GetCombatLogEventLocation(out int LocationX, out int LocationY); + +// Export UTgDevice::execGetBuildupTime(FFrame&, void* const) +native function float GetBuildupTime(); + +// Export UTgDevice::execGetRefireTime(FFrame&, void* const) +native function float GetRefireTime(optional int nMode = -1); + +// Export UTgDevice::execGetFiringPreHitDelay(FFrame&, void* const) +native function float GetFiringPreHitDelay(optional int nMode = -1); + +// Export UTgDevice::execGetFiringPostHitDelay(FFrame&, void* const) +native function float GetFiringPostHitDelay(optional int nMode = -1); + +// Export UTgDevice::execCacheFiringPostHitDelay(FFrame&, void* const) +native function float CacheFiringPostHitDelay(); + +// Export UTgDevice::execGetCachedFiringPostHitDelay(FFrame&, void* const) +native function float GetCachedFiringPostHitDelay(); + +// Export UTgDevice::execGetTargetingMode(FFrame&, void* const) +native function TgObject.DeviceTargetMode GetTargetingMode(); + +// Export UTgDevice::execUsesTargetingMode(FFrame&, void* const) +native function bool UsesTargetingMode(); + +// Export UTgDevice::execUsesTrackingTarget(FFrame&, void* const) +native function bool UsesTrackingTarget(); + +// Export UTgDevice::execForceDefaultCastMode(FFrame&, void* const) +native function bool ForceDefaultCastMode(); + +// Export UTgDevice::execDetermineCastMode(FFrame&, void* const) +native function TgClientSettings.ECastMode DetermineCastMode(TgClientSettings.ECastMode desiredCastMode); + +// Export UTgDevice::execUsesCachedAim(FFrame&, void* const) +native function bool UsesCachedAim(); + +// Export UTgDevice::execGetCachedAim(FFrame&, void* const) +native function GetCachedAim(out AimData Aim); + +// Export UTgDevice::execCacheAim(FFrame&, void* const) +native function AimData CacheAim(); + +// Export UTgDevice::execValidateReceivedAim(FFrame&, void* const) +native function AimData ValidateReceivedAim(float ClientMovementTimeStamp, AimData Aim); + +// Export UTgDevice::execUpdateTargetingModeStatus(FFrame&, void* const) +native function UpdateTargetingModeStatus(const out AimData Aim); + +// Export UTgDevice::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +// Export UTgDevice::execGetReticleTargetAim(FFrame&, void* const) +native function GetReticleTargetAim(out AimData Aim); + +// Export UTgDevice::execGetReticleFindSpotAim(FFrame&, void* const) +native function GetReticleFindSpotAim(out AimData Aim); + +// Export UTgDevice::execGetConeTargetAim(FFrame&, void* const) +native function GetConeTargetAim(out AimData Aim); + +// Export UTgDevice::execGetAOETargetAim(FFrame&, void* const) +native function GetAOETargetAim(out AimData Aim); + +// Export UTgDevice::execGetSelfTargetAim(FFrame&, void* const) +native function GetSelfTargetAim(out AimData Aim); + +// Export UTgDevice::execGetLinearTargetAim(FFrame&, void* const) +native function GetLinearTargetAim(out AimData Aim); + +// Export UTgDevice::execGetGroundTargetAim(FFrame&, void* const) +native function GetGroundTargetAim(out AimData Aim); + +// Export UTgDevice::execGetLockOnTargetAim(FFrame&, void* const) +native function GetLockOnTargetAim(out AimData Aim); + +// Export UTgDevice::execGetSpawnPointTargetAim(FFrame&, void* const) +native function GetSpawnPointTargetAim(out AimData Aim); + +// Export UTgDevice::execGetWorldMapTargetAim(FFrame&, void* const) +native function GetWorldMapTargetAim(out AimData Aim); + +// Export UTgDevice::execCanLockOnToTarget(FFrame&, void* const) +native function bool CanLockOnToTarget(Actor Target); + +// Export UTgDevice::execCanAllowLagCompensation(FFrame&, void* const) +native function bool CanAllowLagCompensation(); + +// Export UTgDevice::execUpdateAimWhileFiring(FFrame&, void* const) +native function UpdateAimWhileFiring(out AimData Aim); + +// Export UTgDevice::execIsActive(FFrame&, void* const) +native final function bool IsActive(optional bool bIgnoreCooldown, optional bool bIngoreEquipped); + +// Export UTgDevice::execIsTargetingModeReady(FFrame&, void* const) +native function bool IsTargetingModeReady(optional out TgObject.EDeviceFailType failType); + +// Export UTgDevice::execIsInTargetingMode(FFrame&, void* const) +native function bool IsInTargetingMode(); + +// Export UTgDevice::execEnterTargetingMode(FFrame&, void* const) +native function EnterTargetingMode(); + +// Export UTgDevice::execExitTargetingMode(FFrame&, void* const) +native function ExitTargetingMode(); + +// Export UTgDevice::execGetTotalDevicePoints(FFrame&, void* const) +native function int GetTotalDevicePoints(); + +// Export UTgDevice::execGetAllocatedDevicePoints(FFrame&, void* const) +native function int GetAllocatedDevicePoints(); + +// Export UTgDevice::execAllocateDevicePoint(FFrame&, void* const) +native function bool AllocateDevicePoint(); + +// Export UTgDevice::execClientPtsAllocatedUpdated(FFrame&, void* const) +native function ClientPtsAllocatedUpdated(); + +// Export UTgDevice::execSetPointsAllocated(FFrame&, void* const) +native function SetPointsAllocated(int nPoints); + +// Export UTgDevice::execSetInstanceCount(FFrame&, void* const) +native function SetInstanceCount(int nInstanceCount); + +// Export UTgDevice::execShouldInterruptStealth(FFrame&, void* const) +native function bool ShouldInterruptStealth(); + +// Export UTgDevice::execShouldInterruptLift(FFrame&, void* const) +native function bool ShouldInterruptLift(); + +// Export UTgDevice::execShouldLiftInterrupt(FFrame&, void* const) +native function bool ShouldLiftInterrupt(); + +// Export UTgDevice::execShouldShowAmmoCount(FFrame&, void* const) +native function bool ShouldShowAmmoCount(); + +// Export UTgDevice::execHasAmmo(FFrame&, void* const) +native function bool HasAmmo(); + +// Export UTgDevice::execRequiresAmmoToFire(FFrame&, void* const) +native function bool RequiresAmmoToFire(); + +// Export UTgDevice::execGetCurrentAmmoAmount(FFrame&, void* const) +native function int GetCurrentAmmoAmount(); + +// Export UTgDevice::execShouldTreatAmmoAsCharges(FFrame&, void* const) +native function bool ShouldTreatAmmoAsCharges(); + +// Export UTgDevice::execUpdateAmmoRegen(FFrame&, void* const) +native function UpdateAmmoRegen(optional bool bUpdateCooldown = false, optional float fCooldownFloor = 0.0000000); + +// Export UTgDevice::execGetCurrentReloadPct(FFrame&, void* const) +native function float GetCurrentReloadPct(); + +// Export UTgDevice::execCheckAutoReload(FFrame&, void* const) +native function bool CheckAutoReload(); + +// Export UTgDevice::execCanReload(FFrame&, void* const) +native function bool CanReload(optional bool bIsAutoReload = false); + +// Export UTgDevice::execIsReloading(FFrame&, void* const) +native function bool IsReloading(); + +// Export UTgDevice::execShouldBlockReload(FFrame&, void* const) +native function bool ShouldBlockReload(TgDevice Dev, bool bIsAutoReload); + +// Export UTgDevice::execGetAccuracy(FFrame&, void* const) +native function float GetAccuracy(optional int nMode = -1); + +// Export UTgDevice::execGetRandRecoil(FFrame&, void* const) +native function float GetRandRecoil(float Min, float Max); + +// Export UTgDevice::execSetFireMode(FFrame&, void* const) +native function SetFireMode(int nFireModeNum, optional bool ForceSet = false); + +// Export UTgDevice::execDeviceAdjustDamage(FFrame&, void* const) +native function DeviceAdjustDamage(const out ImpactInfo Impact, out float fDamage, int nPropertyId); + +// Export UTgDevice::execDeviceAdjustHeal(FFrame&, void* const) +native function DeviceAdjustHeal(const out ImpactInfo Impact, out float fHeal, int nPropertyId); + +// Export UTgDevice::execGetPetIDOverride(FFrame&, void* const) +native function int GetPetIDOverride(int PetIndex); + +// Export UTgDevice::execReplicatePlayerDeviceAmmo(FFrame&, void* const) +native function ReplicatePlayerDeviceAmmo(); + +// Export UTgDevice::execHasRemoteOwner(FFrame&, void* const) +native final function bool HasRemoteOwner(); + +// Export UTgDevice::execGenerateUniqueFireRequestId(FFrame&, void* const) +native final function int GenerateUniqueFireRequestId(); + +// Export UTgDevice::execGenerateUniqueAmmoValidationId(FFrame&, void* const) +native final function int GenerateUniqueAmmoValidationId(); + +// Export UTgDevice::execValidateClientProjectileImpact(FFrame&, void* const) +native final function bool ValidateClientProjectileImpact(TgProj_Simulated SimulatedProjectile, float ProjectileAliveTime, Actor Other, float MovementTimeStamp, Vector HitLocation, Vector HitNormal); + +// Export UTgDevice::execValidateClientInstantHit(FFrame&, void* const) +native final function bool ValidateClientInstantHit(out ImpactInfo ValidPrimaryImpact, out array OutValidImpacts, const out AimData InServerAim, const out AimData InClientAim, const out ImpactToValidate InPrimaryImpact, const out array InClientImpacts, out array OutHitRanges); + +// Export UTgDevice::execSetRandomShotSpreadSeed(FFrame&, void* const) +native final function SetRandomShotSpreadSeed(int Seed); + +// Export UTgDevice::execRecordUsedAim(FFrame&, void* const) +native static function RecordUsedAim(const out Vector InAim); + +// Export UTgDevice::execGetLastUsedAimStats(FFrame&, void* const) +native static function string GetLastUsedAimStats(); + +// Export UTgDevice::execGetAimValidationStats(FFrame&, void* const) +native static function string GetAimValidationStats(); + +// Export UTgDevice::execGetInstantFirePredictionStats(FFrame&, void* const) +native static function string GetInstantFirePredictionStats(); + +// Export UTgDevice::execGetProjectilePredictionStats(FFrame&, void* const) +native static function string GetProjectilePredictionStats(); + +// Export UTgDevice::execGetHeadShotDamage(FFrame&, void* const) +native function float GetHeadShotDamage(optional TgDeviceFire FireMode); + +// Export UTgDevice::execIsSuccessfulHitImpact(FFrame&, void* const) +native static function bool IsSuccessfulHitImpact(Actor ImpactedActor); + +// Export UTgDevice::execShouldAltFireOnTick(FFrame&, void* const) +native function bool ShouldAltFireOnTick(); + +// Export UTgDevice::execUpdateUltChargePercent(FFrame&, void* const) +native function bool UpdateUltChargePercent(); + +// Export UTgDevice::execGetRequiredEnergyToFire(FFrame&, void* const) +native function float GetRequiredEnergyToFire(); + +// Export UTgDevice::execConsolidateImpacts(FFrame&, void* const) +native function ConsolidateImpacts(out array ImpactsToConsolidate, out array ShotRanges, optional out array ShotToImpactIndex); + +// Export UTgDevice::execGetBaseDamageMultiplier(FFrame&, void* const) +native function float GetBaseDamageMultiplier(const out ImpactInfo hitImpact); + +// Export UTgDevice::execGetShotSpreadTendencyCurvesSet(FFrame&, void* const) +native function TgGameplayCurvesSet GetShotSpreadTendencyCurvesSet(); + +// Export UTgDevice::execGetFireHoldTime(FFrame&, void* const) +native function float GetFireHoldTime(); + +// Export UTgDevice::execGetFireHoldRate(FFrame&, void* const) +native function float GetFireHoldRate(); + +// Export UTgDevice::execGetFireHoldAccuracyLow(FFrame&, void* const) +native function float GetFireHoldAccuracyLow(); + +// Export UTgDevice::execGetFireHoldDamageLow(FFrame&, void* const) +native function float GetFireHoldDamageLow(); + +// Export UTgDevice::execGetFireHoldPct(FFrame&, void* const) +native final function float GetFireHoldPct(); + +// Export UTgDevice::execShouldAutoFire(FFrame&, void* const) +native function bool ShouldAutoFire(); + +// Export UTgDevice::execDeviceFailLog(FFrame&, void* const) +native function DeviceFailLog(bool bDeviceFailLog, coerce string S); + +// Export UTgDevice::execGetCurrentGameplayCurves(FFrame&, void* const) +native function TgGameplayCurves GetCurrentGameplayCurves(); + +// Export UTgDevice::execGetCurrentGameplayCurveSet(FFrame&, void* const) +native function TgGameplayCurvesSet GetCurrentGameplayCurveSet(TgGameplayCurvesSet.ECurveSetTypes Type); + +// Export UTgDevice::execUseRangeFalloffCurve(FFrame&, void* const) +native function bool UseRangeFalloffCurve(); + +// Export UTgDevice::execShouldForce3P(FFrame&, void* const) +native function bool ShouldForce3P(TgDeviceForm DeviceForm, optional bool bOnlyCheckDeviceForm = false); + +simulated event ReplicatedEvent(name VarName) +{ + switch(VarName) + { + // End:0x2C + case 'r_nDeviceId': + ApplyDeviceSetup(); + // End:0xEE + break; + // End:0x5D + case 'r_Deployable': + // End:0x5A + if(r_Deployable != none) + { + OnDeployableSpawned(r_Deployable); + } + // End:0xEE + break; + // End:0x76 + case 'r_nPointsAllocated': + ClientPtsAllocatedUpdated(); + // End:0xEE + break; + // End:0x91 + case 'r_nInstanceCount': + SendDeviceChangeEvent(7); + // End:0xEE + break; + // End:0xB3 + case 'r_nRecoilSeed': + m_nRandRecoilNum = r_nRecoilSeed; + // End:0xEE + break; + // End:0xD5 + case 'r_nAllowUseWhileFlags': + ApplyAllowUseWhileFlags(r_nAllowUseWhileFlags); + // End:0xEE + break; + // End:0xFFFF + default: + super(Actor).ReplicatedEvent(VarName); + // End:0xEE + break; + break; + } + super(Actor).ReplicatedEvent(VarName); + //return; +} + +simulated function WeaponLog(coerce string msg, coerce string FuncStr) +{ + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + local string T; + + super(Actor).DisplayDebug(HUD, out_YL, out_YPos); + T = (("Eyeheight " $ string(Instigator.EyeHeight)) $ " base ") $ string(Instigator.BaseEyeHeight); + HUD.Canvas.DrawText(T, false); + out_YPos += out_YL; + //return; +} + +simulated function DisplayMessage(string sMessage) +{ + // End:0xAA + if((Instigator != none) && Instigator.Controller != none) + { + // End:0xAA + if(TgPlayerController(Instigator.Controller) != none) + { + TgPlayerController(Instigator.Controller).ClientMessage(sMessage); + } + } + //return; +} + +event ForceCooldownIfFiring() +{ + //return; +} + +// Export UTgDevice::execCanSpawnOnClientFirst(FFrame&, void* const) +native function bool CanSpawnOnClientFirst(Class ProjectileClass, bool bUsesTrackingTarget); + +// Export UTgDevice::execNativeIsFiring(FFrame&, void* const) +native function bool NativeIsFiring(); + +// Export UTgDevice::execIsDeviceFiringForUI(FFrame&, void* const) +native function bool IsDeviceFiringForUI(); + +// Export UTgDevice::execIsDeviceFiringLockedForUI(FFrame&, void* const) +native function bool IsDeviceFiringLockedForUI(); + +// Export UTgDevice::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +// Export UTgDevice::execMustBeOnGroundToFire(FFrame&, void* const) +native function bool MustBeOnGroundToFire(); + +// Export UTgDevice::execCanFireWhileMounted(FFrame&, void* const) +native function bool CanFireWhileMounted(); + +// Export UTgDevice::execCanFiringBeLocked(FFrame&, void* const) +native function bool CanFiringBeLocked(); + +simulated event bool IsEquipping() +{ + return false; + //return ReturnValue; +} + +simulated function float GetRange() +{ + local float Range; + + Range = GetCurrentFire().GetRange(); + return ((Range > float(0)) ? Range : 1600.0000000); + //return ReturnValue; +} + +simulated function float GetEffectiveRange() +{ + local float Range; + + Range = GetCurrentFire().GetEffectiveRange(); + return ((Range > float(0)) ? Range : 1600.0000000); + //return ReturnValue; +} + +simulated function bool InterceptLeftMousePressed(TgPlayerController TgController) +{ + // End:0x17 + if(CanFiringBeCanceledByLeftMouse()) + { + ClientInitiatedInterrupt(); + } + return false; + //return ReturnValue; +} + +simulated function bool InterceptLeftMouseReleased(TgPlayerController TgController) +{ + return false; + //return ReturnValue; +} + +simulated function bool InterceptRightMousePressed(TgPlayerController TgController) +{ + local TgPawn P; + local WeaponMeshSwapStrategy SwapStrategy; + + // End:0x3C + if((CanFiringBeCanceledByRightMouse()) && TgController.false) + { + InterruptFiring(); + ClientInterrupt(); + } + // End:0x25F + if((IsAbility() && m_bInTargetingMode) && int(r_eEquippedAt) != int(18)) + { + TgController.bPressingRightMouseButton = false; + P = TgPawn(Owner); + // End:0x25D + if((P.c_CurrentTargetingDevice == none) || ((P.c_CurrentTargetingDevice != none) && int(P.c_CurrentTargetingDevice.r_eEquippedAt) != int(1)) && P.c_CurrentTargetingDevice.ShouldSwitchBackToBasicAttackTargeting(TgController.GetClientSettings().GetCastMode(P.r_nProfileId, P.c_CurrentTargetingDevice.r_eEquippedAt))) + { + P.SetTargetingDevice(P.GetDeviceByEqPoint(1), SwapStrategy); + P.c_CurrentStartActionDevice = none; + } + return true; + } + return false; + //return ReturnValue; +} + +simulated function bool InterceptRightMouseReleased(TgPlayerController TgController) +{ + return false; + //return ReturnValue; +} + +simulated function bool InterceptSlotPressed(TgPlayerController TgController) +{ + return false; + //return ReturnValue; +} + +simulated function bool InterceptSlotReleased(TgPlayerController TgController) +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return !m_bPreventCancel && IsInState('DeviceBuildup') || (IsFiring()) && (IsFunctionallyToggleDevice()) || (((int(CurrentFireMode) >= int(0)) && GetCurrentFire().m_bContinuousFire) && IsA('TgDevice_HitPulse')) && !m_bHandDevice; + //return ReturnValue; +} + +simulated event bool CanFiringBeCanceledByLeftMouse() +{ + local TgPawn TgP; + local bool bCanCancel; + + bCanCancel = IsMovementAbility() && CanBeCanceled(); + // End:0x35 + if(!bCanCancel) + { + return false; + } + TgP = TgPawn(Instigator); + return TgP.GetPropCurrentValue(133) == float(0); + //return ReturnValue; +} + +simulated event bool CanFiringBeCanceledByRightMouse() +{ + return CanBeCanceled(); + //return ReturnValue; +} + +simulated function bool CheckReactivationToggleLogic(out byte bSuccessfulCancel) +{ + bSuccessfulCancel = 0; + // End:0x75 + if((CanFiringBeCanceledByReactivation()) && IsFiring()) + { + // End:0x73 + if(CanBeCanceled()) + { + // End:0x53 + if(int(Role) < int(ROLE_Authority)) + { + OnCanceledClient(); + } + OnCanceled(); + ClientInitiatedInterrupt(); + bSuccessfulCancel = 1; + } + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool CanFiringBeCanceledByReactivation() +{ + return (CanBeCanceled()) || IsFunctionallyToggleDevice(); + //return ReturnValue; +} + +simulated event bool CanBeFiredWhileTweening() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanJumpWhileFiring() +{ + return true; + //return ReturnValue; +} + +simulated event bool CancelledByJumping() +{ + return !CanJumpWhileFiring(); + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + local TgDeviceFire FireMode; + + // End:0x0F + if(m_bPreventInterrupt) + { + return false; + } + // End:0x2D + if(m_bUsesBurstFire && m_bBurstCanBeInterrupted) + { + return true; + } + // End:0x3F + if(IsInState('DeviceBuildup')) + { + return true; + } + // End:0x58 + if(IsTimerActive('FirePreHitDelay')) + { + return true; + } + FireMode = GetCurrentFire(); + // End:0xD7 + if(((((int(CurrentFireMode) >= int(0)) && FireMode != none) && FireMode.m_bContinuousFire) && IsFiring()) && !m_bHandDevice) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool ShouldInterruptInhand() +{ + return (IsOffhand()) && !IsToggleDevice(); + //return ReturnValue; +} + +simulated function bool ShouldInterruptMount() +{ + local TgDevice Dev; + local TgPawn TgP; + + TgP = TgPawn(Instigator); + // End:0x8E + if(TgP != none) + { + Dev = TgP.GetDeviceByEqPoint(23); + // End:0x8E + if((Dev != none) && Dev.IsInState('DeviceBuildup')) + { + return false; + } + } + return IsAbility() || m_bHandDevice; + //return ReturnValue; +} + +simulated function bool ShouldInterruptEmote() +{ + return IsAbility() || m_bHandDevice; + //return ReturnValue; +} + +function GenerateRecoilSeed() +{ + r_nRecoilSeed = int(RandRange(1.0000000, 32749.0000000)); + m_nRandRecoilNum = r_nRecoilSeed; + //return; +} + +simulated function AddRecoil() +{ + local TgGameplayCurvesSet_RecoilSimple recoilCurves; + local Rotator newRecoil; + local TgPawn PawnOwner; + local TgGameplayCurves GPCurves; + + // End:0x2A + if((int(CurrentFireMode) < int(0)) || int(CurrentFireMode) >= 5) + { + return; + } + GPCurves = GetCurrentGameplayCurves(); + // End:0x7F + if(!m_RecoilSettings[int(CurrentFireMode)].bUsesRecoil || GPCurves == none) + { + return; + } + PawnOwner = TgPawn(Owner); + // End:0xAC + if(PawnOwner == none) + { + return; + } + recoilCurves = GetRecoilCurve(); + // End:0xD1 + if(recoilCurves == none) + { + return; + } + newRecoil.Yaw = int(recoilCurves.GetHorizRecoilValue(m_fAccumulatedFiringTime, GetRandRecoil(0.0000000, 1.0000000)) * 182.0444000); + newRecoil.Pitch = int(recoilCurves.GetVertRecoilValue(m_fAccumulatedFiringTime, GetRandRecoil(0.0000000, 1.0000000)) * 182.0444000); + newRecoil.Roll = 0; + newRecoil *= (GetRecoilMultiplier()); + PawnOwner.AddRecoil(newRecoil, m_RecoilSettings[int(CurrentFireMode)].fRecoilSmoothRate, m_RecoilSettings[int(CurrentFireMode)].fRecoilCenterDelay, m_RecoilSettings[int(CurrentFireMode)].fRecoilReductionPerSec); + //return; +} + +simulated function TgGameplayCurvesSet_RecoilSimple GetRecoilCurve() +{ + local int I; + local TgGameplayCurvesSet_RecoilSimple recoilCurves; + local TgGameplayCurves GPCurves; + + GPCurves = GetCurrentGameplayCurves(); + // End:0x25 + if(GPCurves == none) + { + return none; + } + I = 0; + J0x30: + + // End:0x162 [Loop If] + if(I < GPCurves.CurveSets.Length) + { + // End:0x154 + if((GPCurves.CurveSets[I] != none) && int(GPCurves.CurveSets[I].CurveSetType) == int(2)) + { + recoilCurves = TgGameplayCurvesSet_RecoilSimple(GPCurves.CurveSets[I]); + // End:0x154 + if((recoilCurves != none) && int(recoilCurves.RecoilType) == int(0)) + { + return recoilCurves; + } + } + I++; + // [Loop Continue] + goto J0x30; + } + return none; + //return ReturnValue; +} + +simulated function float GetRecoilMultiplier() +{ + return 1.0000000; + //return ReturnValue; +} + +simulated function PostBeginPlay() +{ + // End:0x1E + if(int(Role) == int(ROLE_Authority)) + { + GenerateRecoilSeed(); + } + super(Actor).PostBeginPlay(); + //return; +} + +simulated function InterruptOtherDevices(TgPawn TgP) +{ + local TgDevice Dev; + + // End:0xCF + if(ShouldInterruptMount()) + { + // End:0xCF + if(TgP != none) + { + Dev = TgP.GetDeviceByEqPoint(23); + // End:0xCF + if((Dev != none) && Dev.CanBeCanceled()) + { + // End:0xB0 + if(int(Role) == int(ROLE_AutonomousProxy)) + { + Dev.ClientInterrupt(); + } + else + { + Dev.InterruptFiring(); + } + } + } + } + // End:0x19E + if(ShouldInterruptEmote()) + { + // End:0x19E + if(TgP != none) + { + Dev = TgP.GetDeviceByEqPoint(7); + // End:0x19E + if((Dev != none) && Dev.CanBeCanceled()) + { + // End:0x17F + if(int(Role) == int(ROLE_AutonomousProxy)) + { + Dev.ClientInterrupt(); + } + else + { + Dev.InterruptFiring(); + } + } + } + } + //return; +} + +// Export UTgDevice::execCanFireIfLeftMouseDown(FFrame&, void* const) +native function bool CanFireIfLeftMouseDown(); + +// Export UTgDevice::execGetAdjustedAim(FFrame&, void* const) +native function GetAdjustedAim(out AimData Aim, out float UsedRandomValue1, out float UsedRandomValue2, optional float RandomValueOverride1 = -1.0000000, optional float RandomValueOverride2 = -1.0000000); + +simulated event SetActiveState() +{ + GotoState('Active'); + //return; +} + +reliable server function ServerDoRemoteDetonation(int nFireMode) +{ + ServerDetonate(nFireMode); + //return; +} + +simulated function DeviceShutDown(optional bool bDeactiveMode, optional bool bResetCooldowns) +{ + local TgTimerManager TimerManager; + + // End:0x23 + if(int(Role) == int(ROLE_Authority)) + { + InterruptFiring(); + } + else + { + ClientInterrupt(); + } + StopFire(); + // End:0x78 + if(bResetCooldowns) + { + TimerManager = GetCooldownTimerManager(); + TimerManager.CloseAllTimers(); + } + // End:0x99 + if(IsTimerActive('AlternateStartCooldown')) + { + AlternateStartCooldown(); + } + //return; +} + +simulated function DeviceRestart() +{ + ApplyEquipEffects(); + //return; +} + +simulated function StopFiringServerDeviceLockout() +{ + // End:0x45 + if((int(Role) == int(ROLE_Authority)) && HasRemoteOwner()) + { + s_bLockFiringForRoundEnd = true; + SetTimer(3.0000000, false, 'ServerNotifyClientAckLockout'); + } + else + { + ServerNotifyClientAckLockout(); + } + //return; +} + +reliable server function ServerNotifyClientAckLockout() +{ + s_bLockFiringForRoundEnd = false; + //return; +} + +reliable server event InterruptFiring() +{ + // End:0x1F + if(int(Role) == int(ROLE_Authority)) + { + InterruptFiringOnServerInternal(); + } + //return; +} + +reliable server event InterruptFiringServerOnly() +{ + // End:0x1F + if(int(Role) == int(ROLE_Authority)) + { + InterruptFiringOnServerInternal(false); + } + //return; +} + +function InterruptFiringOnServerInternal(optional bool bSendClientInterrupt = true) +{ + local TgPawn TgP; + local TgDeviceFire FireMode; + + m_IsBeingInterrupted = true; + // End:0x2BC + if(int(Role) == int(ROLE_Authority)) + { + // End:0x32 + if(LogDebugInfo()) + { + } + OnInterruptEvent(); + TgP = TgPawn(Instigator); + // End:0xFF + if(IsFiring()) + { + // End:0x9C + if(TgP != none) + { + TgP.FlashInterrupt(r_nDeviceInstanceId); + } + // End:0xFF + if(((c_DeviceForm != none) && Instigator.IsLocallyControlled()) && !HasRemoteOwner()) + { + c_DeviceForm.DoInterrupt(); + } + } + // End:0x159 + if(UsesEnergy()) + { + // End:0x159 + if(TgP != none) + { + TgP.SyncClientEnergy(TgP.GetEnergy()); + } + } + // End:0x274 + if(UsesSimulatedAmmo()) + { + // End:0x274 + if(((s_QueuedRefireRequests.Length > 0) || m_nLastFiringIDToConsumeAmmo < m_CachedFireRequestId) && RequiresAmmoToFire()) + { + FireMode = GetCurrentFire(); + // End:0x274 + if((FireMode != none) && FireMode.m_nAmmoCostPerShot > 0) + { + ClientRefundAmmo(FireMode.m_nAmmoCostPerShot, (((m_nLastFiringIDToConsumeAmmo < m_CachedFireRequestId) && s_QueuedRefireRequests.Length > 0) ? s_QueuedRefireRequests[0].ClientFireRequestId : m_CachedFireRequestId)); + m_nLastFiringIDToConsumeAmmo = m_CachedFireRequestId; + } + } + } + InterruptFireHold(); + InterruptBurst(); + // End:0x29F + if(bSendClientInterrupt) + { + ClientInterrupt(); + } + GotoState('Active'); + m_fLastDeviceCanFireTimeStamp = 0.0000000; + } + m_IsBeingInterrupted = false; + //return; +} + +simulated function AsynchronusInterrupt() +{ + // End:0x21 + if(int(Role) < int(ROLE_Authority)) + { + ClientInterrupt(); + } + else + { + InterruptFiringOnServerInternal(false); + } + //return; +} + +simulated function ClientInitiatedInterrupt() +{ + ClientInterrupt(); + InterruptFiringServerOnly(); + //return; +} + +reliable client simulated function ClientRefundAmmo(int nRefundAmount, int nFireRequestID) +{ + local int I; + + // End:0x36 + if(nFireRequestID < c_EligableRefundFiringIDs[c_nEligableRefundFiringIDsIndexFirst].FiringRequestID) + { + return; + } + I = c_nEligableRefundFiringIDsIndexFirst - 1; + J0x4C: + + I = (I + 1) % 30; + // End:0xB0 + if(c_EligableRefundFiringIDs[I].FiringRequestID < nFireRequestID) + { + c_nEligableRefundFiringIDsIndexFirst = I; + } + else + { + // End:0x153 + if(c_EligableRefundFiringIDs[I].FiringRequestID == nFireRequestID) + { + c_nEligableRefundFiringIDsIndexFirst = I; + c_EligableRefundFiringIDs[I].FiringRequestID = 0; + GiveAmmo(c_EligableRefundFiringIDs[I].AmmoConsumed); + } + else + { + return; + } + } + // End:0x4C + if(!(I == c_nEligableRefundFiringIDsIndexLast)) + goto J0x4C; + //return; +} + +reliable client simulated event ClientInterrupt() +{ + m_IsBeingInterrupted = true; + // End:0x19 + if(LogDebugInfo()) + { + } + OnInterruptEvent(); + // End:0x60 + if((c_DeviceForm != none) && IsFiring()) + { + c_DeviceForm.DoInterrupt(); + } + InterruptFireHold(); + InterruptBurst(); + GotoState('Active'); + m_fLastDeviceCanFireTimeStamp = 0.0000000; + m_IsBeingInterrupted = false; + //return; +} + +reliable client simulated function ClientRemoveSpawnedProjectile(int nFiringID) +{ + local TgRepInfo_Game GRI; + local TgProj_Simulated Proj; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0xA0 + if(GRI != none) + { + Proj = GRI.GetClientSpawnedProjectile(nFiringID); + // End:0xA0 + if(Proj != none) + { + Proj.ShutDown(); + } + } + //return; +} + +simulated function OnInterruptEvent() +{ + //return; +} + +simulated function bool ShouldCancelStealth() +{ + return false; + //return ReturnValue; +} + +reliable server event ServerFlashEnterTargetingMode(bool bEnterTargeting) +{ + // End:0x72 + if(TgPawn(Instigator) != none) + { + TgPawn(Instigator).FlashTargeting(r_nDeviceInstanceId, int(CurrentFireMode), int(r_eEquippedAt), m_nSocketIndex, bEnterTargeting); + } + //return; +} + +simulated function PlayClientFireFx(Vector HitLocation, int nSocketIndex, bool bSuccessfulHit, float fRefireTime) +{ + local TgPawn devicePawn; + + devicePawn = TgPawn(Instigator); + // End:0xF7 + if(devicePawn != none) + { + devicePawn.FlashFire(r_nDeviceInstanceId, int(CurrentFireMode), HitLocation, int(r_eEquippedAt), nSocketIndex, bSuccessfulHit, fRefireTime); + // End:0xF7 + if(c_DeviceForm != none) + { + c_DeviceForm.Fire(HitLocation, int(CurrentFireMode), int(r_eEquippedAt), nSocketIndex, bSuccessfulHit, fRefireTime); + } + } + //return; +} + +simulated event DeviceConsumePowerPool(byte FireModeNum) +{ + local TgPawn myPawn; + + myPawn = TgPawn(Instigator); + // End:0x162 + if((myPawn != none) && (c_fCachedManaAtStartFire <= myPawn.GetMana()) || int(Role) == int(ROLE_Authority)) + { + // End:0xCE + if(int(Role) == int(ROLE_Authority)) + { + myPawn.ConsumePowerPool(self, 10692, GetCurrentFire().GetShotPowerCost(10692)); + } + myPawn.ConsumePowerPool(self, 10013, GetCurrentFire().GetShotPowerCost(10013)); + myPawn.ConsumePowerPool(self, 10014, GetCurrentFire().GetShotPowerCost(10014)); + } + //return; +} + +simulated function bool UsesHealth() +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x47 + if(FireMode != none) + { + return FireMode.m_fHealthCost > float(0); + } + return false; + //return ReturnValue; +} + +simulated function bool UsesMana() +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x47 + if(FireMode != none) + { + return FireMode.m_fManaCost > float(0); + } + return false; + //return ReturnValue; +} + +simulated function bool UsesEnergy() +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x47 + if(FireMode != none) + { + return FireMode.m_fEnergyCost > float(0); + } + return false; + //return ReturnValue; +} + +event ConsumeDevice() +{ + local int InstanceCount; + local TgInventoryManager CachedInvManager; + local TgRepInfo_Player CachedInstigatorPRI; + + // End:0x15F + if(!bPendingDelete) + { + CachedInvManager = TgInventoryManager(InvManager); + // End:0xA7 + if(CachedInvManager != none) + { + CachedInstigatorPRI = ((CachedInvManager.Instigator != none) ? TgRepInfo_Player(CachedInvManager.Instigator.PlayerReplicationInfo) : none); + } + InstanceCount = s_InventoryObject.GetInstanceCount(); + // End:0x10D + if(InstanceCount > 1) + { + s_InventoryObject.SetInstanceCount(InstanceCount - 1); + } + else + { + RemoveConsumableFromOwnerInventory(); + } + // End:0x15F + if((CachedInvManager != none) && CachedInstigatorPRI != none) + { + CachedInstigatorPRI.UpdateBroadcastedItems(CachedInvManager); + } + } + //return; +} + +simulated function bool CanFireWhileHanging() +{ + return false; + //return ReturnValue; +} + +simulated function float GetLockoutExtensionTime() +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x94 + if(FireMode != none) + { + // End:0x94 + if((((IsOffhand()) || IsPurchasedAbility()) && (GetRefireTime()) > float(0)) && !FireMode.m_bContinuousFire) + { + // End:0x94 + if(int(Role) < int(ROLE_Authority)) + { + return 0.1000000; + } + } + } + return 0.0000000; + //return ReturnValue; +} + +simulated function bool IsInhandOverrideActive() +{ + local TgPawn TgP; + + TgP = TgPawn(Instigator); + // End:0x52 + if(TgP != none) + { + return TgP.GetPropCurrentValue(133) != float(0); + } + return false; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + local bool bInFireLockout; + + // End:0x1E + if(m_bHandDevice || IsToggleDevice()) + { + return false; + } + bInFireLockout = ((IsFiring()) || IsTimerActive('OutroLockoutTime')) || (WorldInfo.TimeSeconds - m_EndOfLastFireTimeStamp) < (GetLockoutExtensionTime()); + // End:0xD3 + if(Current != none) + { + // End:0xD3 + if(Current.m_bHandDevice) + { + return bInFireLockout && !IsInhandOverrideActive(); + } + } + return bInFireLockout; + //return ReturnValue; +} + +simulated event bool CanFireWithoutAimResult() +{ + return false; + //return ReturnValue; +} + +simulated function CacheDeviceCanFire(bool bDeviceCanFire, TgObject.EDeviceFailType failType) +{ + m_bCachedDeviceCanFire = bDeviceCanFire; + m_eCachedDeviceFailType = failType; + m_fLastDeviceCanFireTimeStamp = WorldInfo.TimeSeconds; + //return; +} + +simulated event bool CanDeviceStartFiringNow(byte FireModeNum, AimData Aim, bool bDebugRelevant, optional out TgObject.EDeviceFailType failType) +{ + local bool Success, bDeviceFailLog; + local TgPawn P; + local TgDeviceFire FireMode; + local TgRepInfo_Game GRI; + + P = TgPawn(Owner); + bDeviceFailLog = bDebugRelevant && (LogDebugInfo()) || m_bLogServerFireFailures && HasRemoteOwner(); + // End:0x103 + if(m_fLastDeviceCanFireTimeStamp == WorldInfo.TimeSeconds) + { + // End:0xF8 + if(!m_bCachedDeviceCanFire) + { + DeviceFailLog(bDeviceFailLog, string(self) @ "Device cannot fire because cached value is false"); + failType = m_eCachedDeviceFailType; + } + return m_bCachedDeviceCanFire; + } + // End:0x15D + if(Owner == none) + { + DeviceFailLog(bDeviceFailLog, "Warning, no owner specified on" @ string(self)); + CacheDeviceCanFire(false, 1); + return false; + } + else + { + // End:0x1C4 + if(bPendingDelete) + { + DeviceFailLog(bDeviceFailLog, "Attempting to use a device that is in the process of being deleted"); + return false; + } + } + GRI = TgRepInfo_Game(WorldInfo.GRI); + Success = false; + FireMode = GetCurrentFire(); + // End:0x8AA + if(CanDeviceFireNow(FireModeNum, Aim, bDeviceFailLog, failType)) + { + Success = true; + // End:0x2EA + if((IsDeviceCoolingDown()) && !IsInCooldownGracePeriod()) + { + DeviceFailLog(bDeviceFailLog, (string(self) @ string(FireModeNum)) @ "Failed to fire because this mode is still cooling down"); + failType = 4; + Success = false; + } + else + { + // End:0x394 + if((IsFiring()) && !FireMode.m_bContinuousFire) + { + DeviceFailLog(bDeviceFailLog, (string(self) @ string(FireModeNum)) @ "Failed to fire because this device is already firing"); + failType = 0; + Success = false; + } + else + { + // End:0x44C + if(IsDeviceRefiring()) + { + DeviceFailLog(bDeviceFailLog, (string(self) @ string(FireModeNum)) @ "Failed to fire because your refire time on this continuous fire device indicates you are button spamming"); + failType = 0; + Success = false; + } + else + { + // End:0x520 + if(!Aim.bResult && !CanFireWithoutAimResult()) + { + DeviceFailLog(bDeviceFailLog, (string(self) @ string(FireModeNum)) @ "Failed to fire because this device uses targeting mode and targeting mode is not able to place"); + failType = 5; + Success = false; + } + else + { + // End:0x5F7 + if(((P.r_bInGlobalOffhandCooldown == true) || P.bInGlobalOffhandCooldownClient == true) && (ApplyGlobalOffhandCooldown()) == true) + { + DeviceFailLog(bDeviceFailLog, (string(self) @ string(FireModeNum)) @ "Failed to fire because you in Global Offhand Cooldown."); + failType = 10; + Success = false; + } + else + { + // End:0x6F8 + if((((IsOffhand()) || IsPurchasedAbility()) && GetCurrentFire().GetCooldownTime() > float(0)) && (WorldInfo.TimeSeconds - m_EndOfLastFireTimeStamp) < (GetIndividualOffhandCooldownTime())) + { + DeviceFailLog(bDeviceFailLog, (string(self) @ string(FireModeNum)) @ "Failed to fire because you are in Individual Offhand Cooldown."); + failType = 4; + Success = false; + } + else + { + // End:0x821 + if((((FireMode != none) && FireMode.m_nAttackType == 1442) && GRI != none) && (int(GRI.r_GameType) == int(13)) || int(GRI.r_GameType) == int(14)) + { + DeviceFailLog(bDeviceFailLog, (string(self) @ string(FireModeNum)) @ "Failed to fire because you cannot use recall devices in this game type"); + failType = 2; + Success = false; + } + else + { + // End:0x8AA + if(WorldInfo.Pauser != none) + { + DeviceFailLog(bDeviceFailLog, (string(self) @ string(FireModeNum)) @ "Failed to fire because game is paused"); + failType = 0; + Success = false; + } + } + } + } + } + } + } + } + } + CacheDeviceCanFire(Success, failType); + return Success; + //return ReturnValue; +} + +simulated event bool Use() +{ + // End:0x6E + if(m_bUsesBurstFire && m_nBurstTotalShots > 0) + { + // End:0x6E + if((Instigator.IsLocallyControlled() && !HasRemoteOwner()) && c_bBurstPendingStopFire) + { + c_bBurstPendingStopFire = false; + return true; + } + } + return StartFire(); + //return ReturnValue; +} + +simulated function bool StartFireHold() +{ + local float fFireHoldTime; + + fFireHoldTime = (GetFireHoldTime()) / (GetFireHoldRate()); + // End:0x44 + if(!m_bIsFireHoldDevice || fFireHoldTime <= float(0)) + { + return false; + } + m_bFireHoldFull = false; + // End:0x88 + if(c_DeviceForm != none) + { + c_DeviceForm.FireHoldFull(m_bFireHoldFull); + } + // End:0xCC + if(int(Role) == int(ROLE_Authority)) + { + GetCurrentFire().ApplyEffectType(Instigator, 15173); + } + PlayNextSimulatedForceFeedbackWaveform(none, m_ForceFeedbackStartHold); + SetTimer(fFireHoldTime, false, 'FireHoldTimer'); + // End:0x138 + if(HasRemoteOwner() && m_CachedFireRequestId <= s_nLastRequestedFireHoldReleaseID) + { + ServerReleaseFireHold(0.0000000, s_nLastRequestedFireHoldReleaseID); + } + return true; + //return ReturnValue; +} + +simulated function FireHoldTimer() +{ + m_bFireHoldFull = true; + // End:0x44 + if(c_DeviceForm != none) + { + c_DeviceForm.FireHoldFull(m_bFireHoldFull); + } + // End:0xA8 + if(m_bForceReleaseFireHoldWhenCharged) + { + // End:0x91 + if((Instigator != none) && Instigator.IsLocallyControlled()) + { + ReleaseFireHold(); + } + else + { + SetTimer(s_fForceReleaseFirHoldFUBARTime, false, 'FireHoldForceReleaseFUBAR'); + } + } + PlayNextSimulatedForceFeedbackWaveform(none, m_ForceFeedbackFullHold); + //return; +} + +function FireHoldValidationTimer() +{ + m_bFireHoldFull = true; + // End:0x44 + if(c_DeviceForm != none) + { + c_DeviceForm.FireHoldFull(m_bFireHoldFull); + } + // End:0x68 + if(m_bForceReleaseFireHoldWhenCharged) + { + SetTimer(s_fForceReleaseFirHoldFUBARTime, false, 'FireHoldForceReleaseFUBAR'); + } + //return; +} + +function FireHoldForceReleaseFUBAR() +{ + InterruptFiring(); + //return; +} + +simulated function InterruptFireHold() +{ + // End:0x11 + if(!m_bIsFireHoldDevice) + { + return; + } + // End:0x55 + if(int(Role) == int(ROLE_Authority)) + { + GetCurrentFire().RemoveEffectType(Instigator, true, 15173, 0); + } + m_bFireHoldFull = false; + // End:0x99 + if(c_DeviceForm != none) + { + c_DeviceForm.FireHoldFull(m_bFireHoldFull); + } + ClearTimer('FireHoldTimer'); + ClearTimer('FireHoldForceReleaseFUBAR'); + //return; +} + +simulated function InterruptBurst() +{ + // End:0x22 + if(!m_bUsesBurstFire || !m_bBurstCanBeInterrupted) + { + return; + } + m_bIsFirstBurstShot = false; + m_nBurstShotsRemaining = 0; + //return; +} + +simulated function SetFireHoldAmt(float fFireHoldTime) +{ + //return; +} + +simulated event ReleaseFireHold() +{ + local float fFireHoldPct; + + // End:0x3B + if(!m_bIsFireHoldDevice || !m_bFireHoldFull || IsTimerActive('FireHoldTimer')) + { + return; + } + fFireHoldPct = GetFireHoldPct(); + SetFireHoldAmt(fFireHoldPct); + // End:0x92 + if(int(Role) < int(ROLE_Authority)) + { + ServerReleaseFireHold(fFireHoldPct, m_CachedFireRequestId); + } + PlayNextSimulatedForceFeedbackWaveform(m_ForceFeedbackStartHold, m_ForceFeedbackStopHold); + ReleaseFireHoldInternal(); + //return; +} + +reliable server function ServerReleaseFireHold(float fClientFireHoldPercent, int nClientFireRequestId) +{ + local float fFireHoldPct; + + s_nLastRequestedFireHoldReleaseID = nClientFireRequestId; + // End:0x4E + if(!m_bIsFireHoldDevice || !m_bFireHoldFull || IsTimerActive('FireHoldTimer')) + { + return; + } + fClientFireHoldPercent = FClamp(fClientFireHoldPercent, 0.0000000, 1.0000000); + fFireHoldPct = GetFireHoldPct(); + // End:0xD5 + if(((fClientFireHoldPercent + 0.2000000) > fFireHoldPct) && (fClientFireHoldPercent - 0.2000000) < fFireHoldPct) + { + SetFireHoldAmt(fClientFireHoldPercent); + } + else + { + SetFireHoldAmt(fFireHoldPct); + } + ReleaseFireHoldInternal(); + //return; +} + +simulated function ReleaseFireHoldInternal() +{ + local float fPreHitDelay; + + // End:0x44 + if(int(Role) == int(ROLE_Authority)) + { + GetCurrentFire().RemoveEffectType(Instigator, true, 15173, 0); + } + ClearTimer('FireHoldTimer'); + ClearTimer('FireHoldForceReleaseFUBAR'); + m_bFireHoldFull = false; + // End:0xB0 + if(c_DeviceForm != none) + { + c_DeviceForm.FireHoldFull(m_bFireHoldFull); + } + fPreHitDelay = GetFiringPreHitDelay(); + m_fFiringTimer = WorldInfo.TimeSeconds + (fPreHitDelay / CustomTimeDilation); + m_fTimeStampAccountedFor = WorldInfo.TimeSeconds; + m_fTimeAccountedFor = 0.0000000; + // End:0x165 + if(fPreHitDelay > float(0)) + { + SetTimer(fPreHitDelay, false, 'FirePreHitDelay'); + } + else + { + FirePreHitDelay(); + } + //return; +} + +reliable client simulated event ClientSimulateStartFireFromServer() +{ + CacheAim(); + SimulateStartFire(); + //return; +} + +simulated event bool SimulateStartFire() +{ + local TgDeviceFire FireMode; + local AimData Aim; + local TgRepInfo_Player PRI; + local TgPawn TgP; + + // End:0x0D + if(LogDebugInfo()) + { + } + FireMode = GetCurrentFire(); + // End:0x32 + if(FireMode == none) + { + return false; + } + GetCachedAim(Aim); + // End:0x139 + if(((int(Role) == int(ROLE_Authority)) && (IsOwnedByOffhand()) || IsPurchasedAbility()) && Instigator != none) + { + PRI = TgRepInfo_Player(Instigator.PlayerReplicationInfo); + TgP = TgPawn(Instigator); + // End:0x139 + if(((PRI != none) && PRI.r_bHasFlag) && TgP != none) + { + TgP.DropFlag(); + } + } + TgP = TgPawn(Instigator); + InterruptOtherDevices(TgP); + // End:0x1B9 + if((IsFiring()) && FireMode.m_bContinuousFire) + { + // End:0x1B4 + if(!bPendingFire) + { + bPendingFire = true; + } + return true; + } + else + { + // End:0x2DA + if(CanDeviceStartFiringNow(CurrentFireMode, Aim, true)) + { + bPendingFire = true; + // End:0x221 + if(TgP != none) + { + // End:0x221 + if(ShouldInterruptReloadOnFire()) + { + TgP.InterruptInhandReload(); + } + } + SetFireLock(); + // End:0x265 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x265 + if((IsDeviceCoolingDown()) && IsInCooldownGracePeriod()) + { + EndCooldown(); + } + } + // End:0x2BB + if(m_bStartFireShouldEnterCombat && CanEnterCombat()) + { + TgP.EnterCombat(TgP, TgP, m_fEnterCombatDuration); + } + NotifyDeviceEvent(2); + GotoState('DeviceBuildup'); + return true; + } + else + { + // End:0x309 + if((int(Role) == int(ROLE_Authority)) && !IsFiring()) + { + InterruptFiring(); + } + } + } + return false; + //return ReturnValue; +} + +function bool DeviceSpawnsClientProjectilesFirst() +{ + local TgDeviceFire FireMode; + local Class projClass; + + FireMode = GetFireModeForFiringProjectile(); + // End:0x50 + if((FireMode == none) || int(FireMode.m_nFireType) != int(1)) + { + return false; + } + projClass = FireMode.GetProjectileClass(); + // End:0x8A + if(projClass == none) + { + return false; + } + return CanSpawnOnClientFirst(projClass, UsesTrackingTarget()); + //return ReturnValue; +} + +simulated event bool ShouldInterruptReloadOnFire() +{ + return (IsAbility() || m_bHandDevice) && !IsToggleDevice(); + //return ReturnValue; +} + +simulated event bool ShouldInterruptReloadOnBeginTargeting() +{ + return false; + //return ReturnValue; +} + +simulated function bool CanEnterCombat() +{ + return (m_fEnterCombatDuration > float(0)) && (int(r_eEquippedAt) == int(1)) || int(r_eEquippedAt) == int(17); + //return ReturnValue; +} + +simulated event bool ShouldCooldownAfterFire() +{ + // End:0x34 + if(GetCurrentFire().m_bTreatAmmoAsCharges || m_bCooldownAfterDeployDeath) + { + return false; + } + return m_bAlwaysStartCooldown || HasAlreadyFiredOnce && (r_fCooldownDelay <= 0.0000000) || m_bIsSecondaryFire; + //return ReturnValue; +} + +simulated function bool ShouldConsumePowerPoolOnStartFire() +{ + return m_bConsumePowerPoolOnStartFire || m_bAlwaysStartCooldown; + //return ReturnValue; +} + +simulated function bool ShouldConsumePowerPoolAfterFire() +{ + return !ShouldConsumePowerPoolOnStartFire(); + //return ReturnValue; +} + +simulated function bool ShouldSwitchBackToBasicAttackTargeting(TgClientSettings.ECastMode CastMode) +{ + return true; + //return ReturnValue; +} + +simulated event float GetRemainingFiringTime() +{ + // End:0x2F + if(IsTimerActive('FirePostHitDelay')) + { + return GetRemainingTimeForTimer('FirePostHitDelay'); + } + else + { + // End:0x6A + if(IsTimerActive('FirePreHitDelay')) + { + return GetRemainingTimeForTimer('FirePreHitDelay') + (GetCachedFiringPostHitDelay()); + } + else + { + return 0.0000000; + } + } + //return ReturnValue; +} + +simulated event bool StartFire() +{ + local TgDeviceFire FireMode; + local AimData Aim, ForwardAim; + local TgPawn TgP; + + ChangeFireModeOnRefire(); + FireMode = GetCurrentFire(); + // End:0x5C + if((((FireMode == none) || bPendingDelete) || IsEquipping()) || IsUnEquipping()) + { + return false; + } + Aim = CacheAim(); + ForwardAim = Aim; + // End:0x160 + if((IsFiring()) && FireMode.m_bContinuousFire) + { + TgP = TgPawn(Instigator); + // End:0xFE + if(TgP != none) + { + TgP.SetFaceRotationToController(); + } + // End:0x15B + if(!bPendingFire) + { + // End:0x138 + if(int(Role) < int(ROLE_Authority)) + { + CallServerStartFire(ForwardAim, true); + } + else + { + // End:0x151 + if(!HasRemoteOwner()) + { + OnStartFireRequestSent(); + } + } + SimulateStartFire(); + } + return true; + } + else + { + // End:0x26F + if(CanDeviceStartFiringNow(CurrentFireMode, Aim, true)) + { + TgP = TgPawn(Instigator); + // End:0x1CB + if(TgP != none) + { + TgP.SetFaceRotationToController(); + } + // End:0x208 + if((Instigator != none) && Instigator.IsLocallyControlled()) + { + UpdateDesiredFireMode(); + } + // End:0x247 + if(int(Role) < int(ROLE_Authority)) + { + m_CachedFireRequestId = GenerateUniqueFireRequestId(); + CallServerStartFire(ForwardAim); + } + else + { + // End:0x260 + if(!HasRemoteOwner()) + { + OnStartFireRequestSent(); + } + } + SimulateStartFire(); + return true; + } + else + { + // End:0x297 + if(HasRemoteOwner() && !IsFiring()) + { + HandleFalseFireRecory(); + } + } + } + return false; + //return ReturnValue; +} + +simulated event HandleFalseFireRecory() +{ + // End:0x20 + if(DeviceSpawnsClientProjectilesFirst()) + { + ClientRemoveSpawnedProjectile(m_CachedFireRequestId); + } + InterruptFiring(); + // End:0x5E + if((int(m_eCachedDeviceFailType) == int(14)) && int(Role) == int(ROLE_Authority)) + { + ClientForceReload(); + } + // End:0x77 + if(s_bIsStartingBurstFire) + { + s_bInBurstRecovery = true; + } + //return; +} + +simulated function OnStartFireRequestSent() +{ + // End:0x44 + if(UsesSimulatedAmmo()) + { + // End:0x44 + if((m_nPendingRegenAmmoTransactionID == 0) && m_fAmmoRegenPerSec >= float(0)) + { + m_nPendingRegenAmmoTransactionID = GiveAmmoDelayedWithValidationRegen(0); + } + } + //return; +} + +simulated function SetFireLock() +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0xB3 + if(FireMode != none) + { + // End:0xB3 + if(FireMode.m_fFireLockTime > float(0)) + { + TgPawn(Owner).m_bInFireLock = true; + ClearTimer('FireLockComplete'); + SetTimer(FireMode.m_fFireLockTime, false, 'FireLockComplete'); + } + } + //return; +} + +simulated function GlobalOffhandCooldownCompleteServer() +{ + TgPawn(Owner).r_bInGlobalOffhandCooldown = false; + //return; +} + +simulated function GlobalOffhandCooldownCompleteClient() +{ + TgPawn(Owner).bInGlobalOffhandCooldownClient = false; + //return; +} + +simulated function FireLockComplete() +{ + TgPawn(Owner).m_bInFireLock = false; + //return; +} + +event ServerStartFireAsEvent() +{ + ServerStartFire(); + //return; +} + +reliable server function ServerQueueProjectileExplode(int ClientFireRequestId, float ProjectileAliveTime, Actor Other, float MovementTimeStamp, float HitLocationX, float HitLocationY, float HitLocationZ, float HitNormalX, float HitNormalY, float HitNormalZ) +{ + local Vector HitLocation, HitNormal; + local TgProjectile Projectile; + local TgProj_Simulated SimulatedProjectile; + local TgQueuedProjectileExplosion NewQueuedExplosion; + local TgPawn OwningPawn; + local float AoeRewindTimeStamp; + + HitLocation.X = HitLocationX; + HitLocation.Y = HitLocationY; + HitLocation.Z = HitLocationZ; + HitNormal.X = HitNormalX; + HitNormal.Y = HitNormalY; + HitNormal.Z = HitNormalZ; + OwningPawn = TgPawn(Owner); + // End:0x158 + if(OwningPawn != none) + { + AoeRewindTimeStamp = WorldInfo.TimeSeconds - OwningPawn.GetUnclampedLagPredictionTime(); + } + // End:0x237 + foreach m_FiredProjectiles(Projectile) + { + SimulatedProjectile = TgProj_Simulated(Projectile); + // End:0x236 + if((SimulatedProjectile != none) && SimulatedProjectile.m_nClientFireRequestId == ClientFireRequestId) + { + // End:0x233 + if(SimulatedProjectile.m_bShouldQueueServerHits) + { + HandleQueuedProjectileExplosion(SimulatedProjectile, ProjectileAliveTime, Other, MovementTimeStamp, AoeRewindTimeStamp, HitLocation, HitNormal); + } + return; + } + } + NewQueuedExplosion.ClientFireRequestId = ClientFireRequestId; + NewQueuedExplosion.Target = Other; + NewQueuedExplosion.HitLocation = HitLocation; + NewQueuedExplosion.HitNormal = HitNormal; + NewQueuedExplosion.ProjectileAliveTime = ProjectileAliveTime; + NewQueuedExplosion.MovementTimeStamp = MovementTimeStamp; + NewQueuedExplosion.AoeRewindTimeStamp = AoeRewindTimeStamp; + s_QueuedProjectileExplosions.AddItem(NewQueuedExplosion); + // End:0x376 + if(s_QueuedProjectileExplosions.Length > 128) + { + s_QueuedProjectileExplosions.Remove(0, 1); + } + //return; +} + +function HandleQueuedProjectileExplosion(TgProj_Simulated SimulatedProjectile, float ProjectileAliveTime, Actor Other, float MovementTimeStamp, float AoeRewindTimeStamp, Vector HitLocation, Vector HitNormal) +{ + // End:0x67 + if(!ValidateClientProjectileImpact(SimulatedProjectile, ProjectileAliveTime, Other, MovementTimeStamp, HitLocation, HitNormal)) + { + SimulatedProjectile.SetShouldQueueServerHits(false); + return; + } + SimulatedProjectile.FudgeProjectileHitLocationForShields(Other, HitLocation, HitNormal); + SimulatedProjectile.s_fAoeRewindTime = WorldInfo.TimeSeconds - AoeRewindTimeStamp; + SimulatedProjectile.m_bShouldQueueServerHits = false; + SimulatedProjectile.SetLocation(HitLocation); + SimulatedProjectile.ProcessTouch(Other, HitLocation, HitNormal); + //return; +} + +reliable server function ServerAckProjectileSpawn(int ClientFireRequestId) +{ + local int I; + local TgProj_Simulated SimulatedProjectile; + + I = 0; + J0x0B: + + // End:0xB6 [Loop If] + if(I < m_FiredProjectiles.Length) + { + SimulatedProjectile = TgProj_Simulated(m_FiredProjectiles[I]); + // End:0xA8 + if((SimulatedProjectile != none) && SimulatedProjectile.m_nClientFireRequestId == ClientFireRequestId) + { + SimulatedProjectile.SetShouldQueueServerHits(false); + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated function float GetLastMoveTimeStamp(out Vector LastSentMoveAcceleration, out int LastSentMoveCompressedFlags, out Vector LastSentClientLoc, out byte LastSentClientRoll, out int LastSentView) +{ + local TgPlayerController OwningPlayerController; + + OwningPlayerController = ((Instigator != none) ? TgPlayerController(Instigator.Controller) : none); + // End:0x139 + if(OwningPlayerController != none) + { + LastSentMoveAcceleration = OwningPlayerController.c_LastSentMoveAcceleration; + LastSentMoveCompressedFlags = OwningPlayerController.c_LastSentMoveCompressedFlags; + LastSentClientLoc = OwningPlayerController.c_LastSentClientLoc; + LastSentClientRoll = OwningPlayerController.c_LastSentClientRoll; + LastSentView = OwningPlayerController.c_LastSentView; + return OwningPlayerController.c_LastSentMoveTimeStamp; + } + return -1.0000000; + //return ReturnValue; +} + +simulated function CallServerStartFire(AimData Aim, optional bool bPendingUpdate) +{ + local Rotator AimRotation; + local int nCompressedAim; + local float LastSentMoveTimeStamp; + local Vector LastSentMoveAcceleration; + local int LastSentMoveCompressedFlags; + local Vector LastSentClientLoc; + local byte LastSentClientRoll; + local int LastSentView; + + // End:0x17 + if(int(Role) == int(ROLE_Authority)) + { + return; + } + LastSentMoveTimeStamp = GetLastMoveTimeStamp(LastSentMoveAcceleration, LastSentMoveCompressedFlags, LastSentClientLoc, LastSentClientRoll, LastSentView); + AimRotation = Rotator(Aim.AimVector); + nCompressedAim = (AimRotation.Yaw & 65535) | (AimRotation.Pitch << 16); + ServerStartFire(LastSentMoveTimeStamp, LastSentMoveAcceleration * float(10), LastSentClientLoc, byte(LastSentMoveCompressedFlags), LastSentClientRoll, LastSentView, m_CachedFireRequestId, m_nDesiredFireMode, Aim.HitActor, Aim.StartTrace.X, Aim.StartTrace.Y, Aim.StartTrace.Z, Aim.EndTrace.X, Aim.EndTrace.Y, Aim.EndTrace.Z, nCompressedAim, m_bUsesBurstFire && m_nBurstShotsRemaining == 0); + OnStartFireRequestSent(); + //return; +} + +simulated function CallServerRestartFireLoop(AimData Aim) +{ + local Rotator AimRotation; + local int nCompressedAim; + local float LastSentMoveTimeStamp; + local Vector LastSentMoveAcceleration; + local int LastSentMoveCompressedFlags; + local Vector LastSentClientLoc; + local byte LastSentClientRoll; + local int LastSentView; + + // End:0x16 + if(int(Role) == int(ROLE_Authority)) + { + return; + } + LastSentMoveTimeStamp = GetLastMoveTimeStamp(LastSentMoveAcceleration, LastSentMoveCompressedFlags, LastSentClientLoc, LastSentClientRoll, LastSentView); + AimRotation = Rotator(Aim.AimVector); + nCompressedAim = (AimRotation.Yaw & 65535) | (AimRotation.Pitch << 16); + ServerRestartFireLoop(LastSentMoveTimeStamp, LastSentMoveAcceleration * float(10), LastSentClientLoc, byte(LastSentMoveCompressedFlags), LastSentClientRoll, LastSentView, m_CachedFireRequestId, m_nDesiredFireMode, Aim.HitActor, Aim.StartTrace.X, Aim.StartTrace.Y, Aim.StartTrace.Z, Aim.EndTrace.X, Aim.EndTrace.Y, Aim.EndTrace.Z, nCompressedAim, m_bUsesBurstFire && m_nBurstShotsRemaining == 0); + //return; +} + +reliable server function ServerRestartFireLoop(float MovementTimeStamp, Vector MovementInAccel, Vector MovementClientLoc, byte MovementNewFlags, byte MovementClientRoll, int MovementView, int ClientFireRequestId, byte ClientFireMode, Actor HitActor, float StartTraceX, float StartTraceY, float StartTraceZ, float EndTraceX, float EndTraceY, float EndTraceZ, int nCompressedAimVector, bool bFirstBurstShot) +{ + StartFiringOnServer(MovementTimeStamp, MovementInAccel, MovementClientLoc, MovementNewFlags, MovementClientRoll, MovementView, ClientFireRequestId, ClientFireMode, HitActor, StartTraceX, StartTraceY, StartTraceZ, EndTraceX, EndTraceY, EndTraceZ, nCompressedAimVector, bFirstBurstShot); + //return; +} + +reliable server function ServerStartFire(optional float MovementTimeStamp, optional Vector MovementInAccel, optional Vector MovementClientLoc, optional byte MovementNewFlags, optional byte MovementClientRoll, optional int MovementView, optional int ClientFireRequestId = -1, optional byte ClientFireMode = 255, optional Actor HitActor = none, optional float StartTraceX = -10000000.0000000, optional float StartTraceY = -10000000.0000000, optional float StartTraceZ = -10000000.0000000, optional float EndTraceX = -10000000.0000000, optional float EndTraceY = -10000000.0000000, optional float EndTraceZ = -10000000.0000000, optional int nCompressedAimVector = -1, optional bool bFirstBurstShot = false) +{ + OnStartFireRequestSent(); + StartFiringOnServer(MovementTimeStamp, MovementInAccel, MovementClientLoc, MovementNewFlags, MovementClientRoll, MovementView, ClientFireRequestId, ClientFireMode, HitActor, StartTraceX, StartTraceY, StartTraceZ, EndTraceX, EndTraceY, EndTraceZ, nCompressedAimVector, bFirstBurstShot); + //return; +} + +singular function StartFiringOnServer(float MovementTimeStamp, Vector MovementInAccel, Vector MovementClientLoc, byte MovementNewFlags, byte MovementClientRoll, int MovementView, int ClientFireRequestId, byte ClientFireMode, Actor HitActor, float StartTraceX, float StartTraceY, float StartTraceZ, float EndTraceX, float EndTraceY, float EndTraceZ, int nCompressedAimVector, bool bFirstBurstShot) +{ + local TgRepInfo_Game GRI; + local bool bUseLagCompensation; + local Rotator AimRotation; + local TgDevice inhand; + local TgPawn TgP; + local TgPlayerController OwningPlayerController; + local float fRemainingFiringTime; + local AimData DefaultAim; + local bool bCanRefire; + local TgQueuedRefire QueuedRefire; + + TgP = TgPawn(Instigator); + // End:0x5C + if(TgP != none) + { + OwningPlayerController = TgPlayerController(TgP.Controller); + } + GRI = TgRepInfo_Game(WorldInfo.GRI); + bUseLagCompensation = ((GRI != none) && GRI.r_bAllowWeaponLagPrediction) && CanAllowLagCompensation(); + // End:0x150 + if((MovementTimeStamp > 0.0000000) && OwningPlayerController != none) + { + OwningPlayerController.ServerMove(MovementTimeStamp, MovementInAccel, MovementClientLoc, MovementNewFlags, MovementClientRoll, MovementView); + } + // End:0x176 + if(s_QueuedInstantFireShotsFromServer.Length > 0) + { + s_QueuedInstantFireShotsFromServer.Remove(0, s_QueuedInstantFireShotsFromServer.Length); + } + s_bIsStartingBurstFire = m_bUsesBurstFire && bFirstBurstShot; + // End:0x234 + if(!IsFiring()) + { + // End:0x1D1 + if(bUseLagCompensation && ClientFireRequestId <= m_CachedFireRequestId) + { + return; + } + m_CachedFireRequestId = ClientFireRequestId; + m_nDesiredFireMode = ClientFireMode; + // End:0x231 + if(m_bUsesBurstFire && s_bInBurstRecovery) + { + // End:0x22F + if(bFirstBurstShot) + { + s_bInBurstRecovery = false; + } + else + { + return; + } + } + } + else + { + bCanRefire = true; + // End:0x291 + foreach s_QueuedRefireRequests(QueuedRefire) + { + // End:0x290 + if(QueuedRefire.ClientFireRequestId >= ClientFireRequestId) + { + bCanRefire = false; + } + else + { + } + } + bCanRefire = bCanRefire && ClientFireRequestId > m_CachedFireRequestId; + // End:0x3AA + if(bCanRefire) + { + m_CachedFireRequestId = ClientFireRequestId; + m_nDesiredFireMode = ClientFireMode; + SetRandomShotSpreadSeed(m_CachedFireRequestId); + ServerRestartFireLoop(MovementTimeStamp, MovementInAccel, MovementClientLoc, MovementNewFlags, MovementClientRoll, MovementView, ClientFireRequestId, ClientFireMode, HitActor, StartTraceX, StartTraceY, StartTraceZ, EndTraceX, EndTraceY, EndTraceZ, nCompressedAimVector, bFirstBurstShot); + } + } + s_ReceivedAim = DefaultAim; + s_ReceivedAim.HitActor = HitActor; + s_ReceivedAim.ClientMovementTimeStamp = MovementTimeStamp; + // End:0x4F1 + if(((StartTraceX > -10000000.0000000) && StartTraceY > -10000000.0000000) && StartTraceZ > -10000000.0000000) + { + s_ReceivedAim.StartTrace.X = StartTraceX; + s_ReceivedAim.StartTrace.Y = StartTraceY; + s_ReceivedAim.StartTrace.Z = StartTraceZ; + } + // End:0x5D9 + if(((EndTraceX > -10000000.0000000) && EndTraceY > -10000000.0000000) && EndTraceZ > -10000000.0000000) + { + s_ReceivedAim.EndTrace.X = EndTraceX; + s_ReceivedAim.EndTrace.Y = EndTraceY; + s_ReceivedAim.EndTrace.Z = EndTraceZ; + } + // End:0x672 + if(nCompressedAimVector != -1) + { + AimRotation.Yaw = nCompressedAimVector & 65535; + AimRotation.Pitch = (nCompressedAimVector >> 16) & 65535; + s_ReceivedAim.AimVector = Vector(AimRotation); + } + s_ReceivedAim = ValidateReceivedAim(MovementTimeStamp, s_ReceivedAim); + // End:0x78C + if(self.IsAbility() && m_bAbilityRequiresInhandResync) + { + // End:0x78C + if(TgP != none) + { + inhand = TgP.GetDeviceByEqPoint(1); + // End:0x78C + if(inhand != none) + { + fRemainingFiringTime = inhand.GetRemainingFiringTime(); + // End:0x78C + if(fRemainingFiringTime > float(0)) + { + inhand.InterruptFiring(); + inhand.StartCooldown(,, fRemainingFiringTime); + } + } + } + } + StartFire(); + //return; +} + +simulated function bool CanToggleDeviceStopFiring() +{ + return true; + //return ReturnValue; +} + +simulated function StopFire() +{ + // End:0x8C + if(m_bUsesBurstFire && m_nBurstTotalShots > 0) + { + // End:0x8C + if(Instigator.IsLocallyControlled() && !HasRemoteOwner()) + { + // End:0x80 + if((m_nBurstShotsRemaining > 0) && IsFiring()) + { + c_bBurstPendingStopFire = true; + return; + } + else + { + c_bBurstPendingStopFire = false; + } + } + } + // End:0x99 + if(LogDebugInfo()) + { + } + bPendingFire = false; + // End:0xD4 + if((int(Role) < int(ROLE_Authority)) && !IsPendingKill()) + { + ServerStopFire(); + } + // End:0x15F + if(((!IsToggleDevice() && IsTimerActive('FirePreHitDelay') || IsTimerActive('FirePostHitDelay')) || (IsFiring()) && s_nNumClientRefires > s_nNumServerRefires) || (IsToggleDevice()) && !CanToggleDeviceStopFiring()) + { + return; + } + // End:0x1B1 + if((IsFiring()) && (GetCurrentFire().m_bContinuousFire == true) || IsToggleDevice()) + { + GotoState('Active'); + } + bNetDirty = true; + //return; +} + +event StopFireAsEvent() +{ + StopFire(); + //return; +} + +event ServerStopFireAsEvent() +{ + ServerStopFire(); + //return; +} + +reliable server function ServerStopFire() +{ + // End:0x0D + if(LogDebugInfo()) + { + } + // End:0x26 + if(!IsPendingKill()) + { + StopFire(); + } + //return; +} + +simulated event ForceStopFire() +{ + // End:0x0D + if(LogDebugInfo()) + { + } + bPendingFire = false; + // End:0x48 + if((int(Role) < int(ROLE_Authority)) && !IsPendingKill()) + { + ServerForceStopFire(); + } + GotoState('Active'); + bNetDirty = true; + //return; +} + +reliable server function ServerForceStopFire() +{ + // End:0x0D + if(LogDebugInfo()) + { + } + // End:0x26 + if(!IsPendingKill()) + { + ForceStopFire(); + } + //return; +} + +simulated function ImpactInfo CalcWeaponFire(AimData Aim, optional out array ImpactList) +{ + local ImpactInfo Impact; + local TgDeviceFire currDevFire; + local TgRepInfo_Game GRI; + + currDevFire = GetCurrentFire(); + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0xEE + if(currDevFire != none) + { + Impact = currDevFire.CalcWeaponModeFire(Instigator, Aim, ImpactList, false, ((GRI != none) && GRI.r_bUseInstantFireMeshTrace) && m_bDoNotAllowHeadShots).Impact; + } + return Impact; + //return ReturnValue; +} + +simulated event DeliverQueuedPendingHits() +{ + local int Idx; + local TgPawn_Character TgP; + + // End:0x6A + if(PendingImpactList.Length == 0) + { + m_CachedMissedInstantFire = true; + TgP = TgPawn_Character(Owner); + // End:0x67 + if(TgP != none) + { + TgP.DeviceOnMiss(self); + } + } + else + { + m_CachedMissedInstantFire = false; + // End:0xF6 + if(int(TgPawn(Instigator).Role) == int(ROLE_Authority)) + { + Idx = 0; + J0xB3: + + // End:0xF6 [Loop If] + if(Idx < PendingImpactList.Length) + { + DeliverHit(PendingImpactList[Idx]); + Idx++; + // [Loop Continue] + goto J0xB3; + } + } + PendingImpactList.Length = 0; + } + //return; +} + +simulated event DeliverHit(ImpactInfo Impact) +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x78 + if((FireMode != none) && Impact.HitActor != none) + { + FireMode.ApplyHit(Impact, Instigator); + } + //return; +} + +simulated event InstantFire() +{ + local float rand1, rand2; + local AimData baseaim, Aim; + local ImpactInfo Impact; + local int nShotsFired; + local TgRepInfo_Game GRI; + local bool bPerformingServerValidation; + local int nNumShotsToFire; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + bPerformingServerValidation = ((((int(Role) == int(ROLE_Authority)) && GRI != none) && GRI.r_bAllowWeaponLagPrediction) && CanAllowLagCompensation()) && !Instigator.IsLocallyControlled() || HasRemoteOwner(); + nNumShotsToFire = ((m_bConsolidateMultipleShots) ? 1 : GetCurrentFire().m_nShotsPerFire); + // End:0x10C + if(LogDebugInfo()) + { + } + GetCachedAim(baseaim); + nShotsFired = 0; + J0x12A: + + // End:0x4BA [Loop If] + if(nShotsFired < nNumShotsToFire) + { + Aim = baseaim; + // End:0x1A1 + if((int(GetTargetingMode()) == int(1)) && !m_bConsolidateMultipleShots) + { + GetAdjustedAim(Aim, rand1, rand2); + } + // End:0x3BB + if((GRI != none) && GRI.r_bAllowWeaponLagPrediction && CanAllowLagCompensation()) + { + // End:0x386 + if(Instigator.IsLocallyControlled() && !HasRemoteOwner()) + { + PendingImpactList.Length = 0; + Impact = CalcWeaponFire(Aim, PendingImpactList); + // End:0x28E + if(m_bConsolidateMultipleShots) + { + HandleInstantFireWithConsolidation(baseaim, Aim, Impact, int(Role) < int(ROLE_Authority)); + } + else + { + // End:0x2FA + if(int(Role) < int(ROLE_Authority)) + { + Class'TgGame.TgDevice'.static.RecordUsedAim(Aim.AimVector); + SendImpactsForVerification(baseaim, Impact); + } + PlayClientFireFx(Impact.HitLocation, m_nSocketIndex, Class'TgGame.TgDevice'.static.IsSuccessfulHitImpact(Impact.HitActor), GetRefireTime()); + } + DeliverQueuedPendingHits(); + UpdateIndex(); + } + else + { + // End:0x3B8 + if(bPerformingServerValidation) + { + PerformOnInstantFireServerValidation(Aim, rand1, rand2); + } + } + } + else + { + PendingImpactList.Length = 0; + Impact = CalcWeaponFire(Aim, PendingImpactList); + // End:0x423 + if(m_bConsolidateMultipleShots) + { + HandleInstantFireWithConsolidation(baseaim, Aim, Impact, false); + } + else + { + PlayClientFireFx(Impact.HitLocation, m_nSocketIndex, Class'TgGame.TgDevice'.static.IsSuccessfulHitImpact(Impact.HitActor), GetRefireTime()); + } + DeliverQueuedPendingHits(); + UpdateIndex(); + } + nShotsFired++; + // [Loop Continue] + goto J0x12A; + } + //return; +} + +simulated function HandleInstantFireWithConsolidation(const out AimData baseaim, const out AimData Aim, out ImpactInfo Impact, bool bSendForServerValidation) +{ + local array fConsolidatedShotRanges; + local array vHitLocations; + local int I; + local TgPawn TgP; + local array nShotsToImpactIndex; + + // End:0x11 + if(!m_bConsolidateMultipleShots) + { + return; + } + bSendForServerValidation = bSendForServerValidation && int(Role) < int(ROLE_Authority); + // End:0x13D + if(c_DeviceForm != none) + { + I = 0; + J0x56: + + // End:0xAF [Loop If] + if(I < PendingImpactList.Length) + { + vHitLocations.AddItem(PendingImpactList[I].HitLocation); + I++; + // [Loop Continue] + goto J0x56; + } + c_DeviceForm.FireMultiUnpacked(vHitLocations, int(CurrentFireMode), int(r_eEquippedAt), m_nSocketIndex, Class'TgGame.TgDevice'.static.IsSuccessfulHitImpact(Impact.HitActor), GetRefireTime()); + } + // End:0x172 + if(bSendForServerValidation) + { + ConsolidateImpacts(PendingImpactList, fConsolidatedShotRanges, nShotsToImpactIndex); + } + else + { + ConsolidateImpacts(PendingImpactList, fConsolidatedShotRanges); + } + // End:0x1B4 + if(PendingImpactList.Length > 0) + { + Impact = PendingImpactList[0]; + } + // End:0x2FF + if(int(Role) == int(ROLE_Authority)) + { + TgP = TgPawn(Instigator); + // End:0x2FF + if(TgP != none) + { + TgP.FlashFireMulti(r_nDeviceInstanceId, int(CurrentFireMode), Aim.StartTrace, Aim.AimVector, fConsolidatedShotRanges, GetCurrentFire().GetRange(), m_nLastSetShotSpreadSeed, GetAccuracy(int(CurrentFireMode)), int(r_eEquippedAt), m_nSocketIndex, Class'TgGame.TgDevice'.static.IsSuccessfulHitImpact(Impact.HitActor), GetRefireTime()); + } + } + // End:0x331 + if(bSendForServerValidation) + { + SendImpactsForVerification(baseaim, Impact, nShotsToImpactIndex); + } + //return; +} + +function PerformOnInstantFireServerValidation(const out AimData Aim, float AccuracyRandomValue1, float AccuracyRandomValue2) +{ + local TgQueuedInstantFireShot NewQueuedShot; + local bool bFoundMatchingQueuedShot; + local AimData ClientAdjustedAim; + + bFoundMatchingQueuedShot = false; + // End:0x1CB + if(s_QueuedInstantFireShotsFromClient.Length > 0) + { + J0x1C: + + // End:0x6A [Loop If] + if((s_QueuedInstantFireShotsFromClient.Length > 0) && s_QueuedInstantFireShotsFromClient[0].FireRequestId != m_CachedFireRequestId) + { + s_QueuedInstantFireShotsFromClient.Remove(0, 1); + // [Loop Continue] + goto J0x1C; + } + // End:0x1CB + if((s_QueuedInstantFireShotsFromClient.Length > 0) && s_QueuedInstantFireShotsFromClient[0].FireRequestId == m_CachedFireRequestId) + { + bFoundMatchingQueuedShot = true; + ClientAdjustedAim = s_QueuedInstantFireShotsFromClient[0].Aim; + s_ReceivedAim = ClientAdjustedAim; + GetAdjustedAim(ClientAdjustedAim, AccuracyRandomValue1, AccuracyRandomValue2, AccuracyRandomValue1, AccuracyRandomValue2); + HandleClientReportedInstantShot(Aim, ClientAdjustedAim, s_QueuedInstantFireShotsFromClient[0].PrimaryImpact, s_QueuedInstantFireShotsFromClient[0].Impacts); + // End:0x1BE + if(ShouldConsumeAmmo(m_CachedFireRequestId, s_QueuedInstantFireShotsFromClient[0].Impacts)) + { + ConsumeAmmoFromFiring(); + } + s_QueuedInstantFireShotsFromClient.Remove(0, 1); + } + } + // End:0x2D8 + if(!bFoundMatchingQueuedShot) + { + // End:0x203 + if(s_QueuedInstantFireShotsFromServer.Length > (r_nMaxAmmoClipCount * 3)) + { + s_QueuedInstantFireShotsFromServer.Remove(0, 1); + } + NewQueuedShot.FireRequestId = m_CachedFireRequestId; + NewQueuedShot.Aim = Aim; + NewQueuedShot.AmmoToConsume = GetAmmoToConsume(); + NewQueuedShot.AccuracyRandomValue1 = AccuracyRandomValue1; + NewQueuedShot.AccuracyRandomValue2 = AccuracyRandomValue2; + s_QueuedInstantFireShotsFromServer.AddItem(NewQueuedShot); + } + //return; +} + +simulated function SendImpactsForVerification(const out AimData baseaim, const out ImpactInfo Impact, const optional out array nShotsToImpactIndex) +{ + local ImpactToValidate PrimaryImpact; + local TgPawn HitPawn; + local int nPendingImpactIndex; + local ImpactToValidate NetworkPendingImpactList[10], NetworkPendingImpactListSmall[3]; + local int I; + local float LastSentMoveTimeStamp; + local Vector LastSentMoveAcceleration; + local int LastSentMoveCompressedFlags; + local Vector LastSentClientLoc; + local byte LastSentClientRoll; + local int LastSentView; + + LastSentMoveTimeStamp = GetLastMoveTimeStamp(LastSentMoveAcceleration, LastSentMoveCompressedFlags, LastSentClientLoc, LastSentClientRoll, LastSentView); + PrimaryImpact.Impact = Impact; + PrimaryImpact.PackedAssociatedShotIDs = 0; + HitPawn = TgPawn(Impact.HitActor); + // End:0x195 + if(HitPawn != none) + { + PrimaryImpact.ImpactTimeStamp = HitPawn.c_fServerTimeStamp; + I = 0; + J0x10A: + + // End:0x195 [Loop If] + if(I < nShotsToImpactIndex.Length) + { + // End:0x187 + if(int(nShotsToImpactIndex[I]) == int(1)) + { + PrimaryImpact.PackedAssociatedShotIDs = PrimaryImpact.PackedAssociatedShotIDs | (1 << I); + } + I++; + // [Loop Continue] + goto J0x10A; + } + } + // End:0x36F + if((PendingImpactList.Length == 0) || (PendingImpactList.Length == 1) && Impact.HitActor == PendingImpactList[0].HitActor) + { + ServerInstantFireSingleImpact(LastSentMoveTimeStamp, LastSentMoveAcceleration * float(10), LastSentClientLoc, byte(LastSentMoveCompressedFlags), LastSentClientRoll, LastSentView, m_CachedFireRequestId, baseaim.StartTrace.X, baseaim.StartTrace.Y, baseaim.StartTrace.Z, baseaim.EndTrace.X, baseaim.EndTrace.Y, baseaim.EndTrace.Z, PrimaryImpact); + } + else + { + // End:0x6B8 + if(PendingImpactList.Length < 4) + { + nPendingImpactIndex = 0; + J0x38B: + + // End:0x52E [Loop If] + if(nPendingImpactIndex < Min(PendingImpactList.Length, 3)) + { + NetworkPendingImpactListSmall[nPendingImpactIndex].Impact = PendingImpactList[nPendingImpactIndex]; + HitPawn = TgPawn(PendingImpactList[nPendingImpactIndex].HitActor); + // End:0x520 + if(HitPawn != none) + { + NetworkPendingImpactListSmall[nPendingImpactIndex].ImpactTimeStamp = HitPawn.c_fServerTimeStamp; + I = 0; + J0x479: + + // End:0x520 [Loop If] + if(I < nShotsToImpactIndex.Length) + { + // End:0x512 + if(int(nShotsToImpactIndex[I]) == (nPendingImpactIndex + 1)) + { + NetworkPendingImpactListSmall[nPendingImpactIndex].PackedAssociatedShotIDs = NetworkPendingImpactListSmall[nPendingImpactIndex].PackedAssociatedShotIDs | (1 << I); + } + I++; + // [Loop Continue] + goto J0x479; + } + } + nPendingImpactIndex++; + // [Loop Continue] + goto J0x38B; + } + ServerInstantFireThreeImpacts(LastSentMoveTimeStamp, LastSentMoveAcceleration * float(10), LastSentClientLoc, byte(LastSentMoveCompressedFlags), LastSentClientRoll, LastSentView, m_CachedFireRequestId, baseaim.StartTrace.X, baseaim.StartTrace.Y, baseaim.StartTrace.Z, baseaim.EndTrace.X, baseaim.EndTrace.Y, baseaim.EndTrace.Z, PrimaryImpact, PendingImpactList.Length, NetworkPendingImpactListSmall); + } + else + { + nPendingImpactIndex = 0; + J0x6C3: + + // End:0x866 [Loop If] + if(nPendingImpactIndex < Min(PendingImpactList.Length, 10)) + { + NetworkPendingImpactList[nPendingImpactIndex].Impact = PendingImpactList[nPendingImpactIndex]; + HitPawn = TgPawn(PendingImpactList[nPendingImpactIndex].HitActor); + // End:0x858 + if(HitPawn != none) + { + NetworkPendingImpactList[nPendingImpactIndex].ImpactTimeStamp = HitPawn.c_fServerTimeStamp; + I = 0; + J0x7B1: + + // End:0x858 [Loop If] + if(I < nShotsToImpactIndex.Length) + { + // End:0x84A + if(int(nShotsToImpactIndex[I]) == (nPendingImpactIndex + 1)) + { + NetworkPendingImpactListSmall[nPendingImpactIndex].PackedAssociatedShotIDs = NetworkPendingImpactListSmall[nPendingImpactIndex].PackedAssociatedShotIDs | (1 << I); + } + I++; + // [Loop Continue] + goto J0x7B1; + } + } + nPendingImpactIndex++; + // [Loop Continue] + goto J0x6C3; + } + ServerInstantFire(LastSentMoveTimeStamp, LastSentMoveAcceleration * float(10), LastSentClientLoc, byte(LastSentMoveCompressedFlags), LastSentClientRoll, LastSentView, m_CachedFireRequestId, baseaim.StartTrace.X, baseaim.StartTrace.Y, baseaim.StartTrace.Z, baseaim.EndTrace.X, baseaim.EndTrace.Y, baseaim.EndTrace.Z, PrimaryImpact, PendingImpactList.Length, NetworkPendingImpactList); + } + } + //return; +} + +function OnInstantShotVerified(ImpactInfo VerifiedPrimaryImpact) +{ + //return; +} + +function OnInstantShotRejected(ImpactToValidate RejectedPrimaryImpact) +{ + //return; +} + +function HandleClientReportedInstantShot(AimData InServerAim, AimData InClientAim, ImpactToValidate InPrimaryImpact, array InClientImpacts) +{ + local TgPawn TgP; + local ImpactInfo VerifiedPrimaryImpact; + local array hitRanges; + + PendingImpactList.Length = 0; + // End:0x240 + if(ValidateClientInstantHit(VerifiedPrimaryImpact, PendingImpactList, InServerAim, InClientAim, InPrimaryImpact, InClientImpacts, hitRanges)) + { + OnInstantShotVerified(VerifiedPrimaryImpact); + // End:0xF2 + if(!m_bConsolidateMultipleShots) + { + PlayClientFireFx(VerifiedPrimaryImpact.HitLocation, m_nSocketIndex, Class'TgGame.TgDevice'.static.IsSuccessfulHitImpact(VerifiedPrimaryImpact.HitActor), GetRefireTime()); + } + else + { + TgP = TgPawn(Instigator); + // End:0x229 + if(TgP != none) + { + TgP.FlashFireMulti(r_nDeviceInstanceId, int(CurrentFireMode), InClientAim.StartTrace, InClientAim.AimVector, hitRanges, GetCurrentFire().GetRange(), m_nLastSetShotSpreadSeed, GetAccuracy(int(CurrentFireMode)), int(r_eEquippedAt), m_nSocketIndex, Class'TgGame.TgDevice'.static.IsSuccessfulHitImpact(VerifiedPrimaryImpact.HitActor), GetRefireTime()); + } + } + DeliverQueuedPendingHits(); + UpdateIndex(); + } + else + { + OnInstantShotRejected(InPrimaryImpact); + } + //return; +} + +reliable server function ServerInstantFire(float MovementTimeStamp, Vector MovementInAccel, Vector MovementClientLoc, byte MovementNewFlags, byte MovementClientRoll, int MovementView, int ClientFireRequestId, float StartTraceX, float StartTraceY, float StartTraceZ, float EndTraceX, float EndTraceY, float EndTraceZ, ImpactToValidate Impact, int NumImpacts, ImpactToValidate InImpactList[10]) +{ + local AimData ClientAim; + local bool bFoundMatchingQueuedShot; + local TgQueuedInstantFireShot NewQueuedShot; + local array Impacts; + local int nPendingImpactIndex; + local TgPawn OwningPawn; + local TgPlayerController TgPlayerController; + local float LagPredictionTime; + local TgRepInfo_Game GRI; + local float AccuracyRandomValue1, AccuracyRandomValue2; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x68 + if((GRI == none) || !GRI.r_bAllowWeaponLagPrediction) + { + return; + } + OwningPawn = TgPawn(Owner); + // End:0xED + if(OwningPawn != none) + { + LagPredictionTime = OwningPawn.GetLagPredictionTime(); + TgPlayerController = TgPlayerController(OwningPawn.Controller); + } + // End:0x166 + if((MovementTimeStamp > 0.0000000) && TgPlayerController != none) + { + TgPlayerController.ServerMove(MovementTimeStamp, MovementInAccel, MovementClientLoc, MovementNewFlags, MovementClientRoll, MovementView); + } + nPendingImpactIndex = 0; + J0x171: + + // End:0x1EA [Loop If] + if(nPendingImpactIndex < Min(NumImpacts, 10)) + { + InImpactList[nPendingImpactIndex].ImpactTimeStamp = WorldInfo.TimeSeconds - LagPredictionTime; + nPendingImpactIndex++; + // [Loop Continue] + goto J0x171; + } + ClientAim.StartTrace.X = StartTraceX; + ClientAim.StartTrace.Y = StartTraceY; + ClientAim.StartTrace.Z = StartTraceZ; + ClientAim.EndTrace.X = EndTraceX; + ClientAim.EndTrace.Y = EndTraceY; + ClientAim.EndTrace.Z = EndTraceZ; + ClientAim.AimVector = Normal(ClientAim.EndTrace - ClientAim.StartTrace); + ClientAim = ValidateReceivedAim(MovementTimeStamp, ClientAim); + bFoundMatchingQueuedShot = false; + J0x3CB: + + // End:0x5D4 [Loop If] + if((s_QueuedInstantFireShotsFromServer.Length > 0) && s_QueuedInstantFireShotsFromServer[0].FireRequestId <= ClientFireRequestId) + { + // End:0x5C4 + if(s_QueuedInstantFireShotsFromServer[0].FireRequestId == ClientFireRequestId) + { + nPendingImpactIndex = 0; + J0x440: + + // End:0x489 [Loop If] + if(nPendingImpactIndex < Min(NumImpacts, 10)) + { + Impacts.AddItem(InImpactList[nPendingImpactIndex]); + nPendingImpactIndex++; + // [Loop Continue] + goto J0x440; + } + s_ReceivedAim = ClientAim; + GetAdjustedAim(ClientAim, AccuracyRandomValue1, AccuracyRandomValue2, s_QueuedInstantFireShotsFromServer[0].AccuracyRandomValue1, s_QueuedInstantFireShotsFromServer[0].AccuracyRandomValue2); + HandleClientReportedInstantShot(s_QueuedInstantFireShotsFromServer[0].Aim, ClientAim, Impact, Impacts); + // End:0x5A5 + if(ShouldConsumeAmmo(m_CachedFireRequestId, Impacts)) + { + ConsumeAmmoFromFiring(s_QueuedInstantFireShotsFromServer[0].AmmoToConsume, s_QueuedInstantFireShotsFromServer[0].FireRequestId); + } + bFoundMatchingQueuedShot = true; + s_QueuedInstantFireShotsFromServer.Remove(0, 1); + // [Explicit Break] + goto J0x5D4; + } + else + { + s_QueuedInstantFireShotsFromServer.Remove(0, 1); + } + // [Loop Continue] + goto J0x3CB; + } + J0x5D4: + + // End:0x6FB + if(!bFoundMatchingQueuedShot) + { + // End:0x60C + if(s_QueuedInstantFireShotsFromClient.Length > (r_nMaxAmmoClipCount * 3)) + { + s_QueuedInstantFireShotsFromClient.Remove(0, 1); + } + NewQueuedShot.FireRequestId = ClientFireRequestId; + NewQueuedShot.Aim = ClientAim; + NewQueuedShot.PrimaryImpact = Impact; + nPendingImpactIndex = 0; + J0x689: + + // End:0x6E5 [Loop If] + if(nPendingImpactIndex < Min(NumImpacts, 10)) + { + NewQueuedShot.Impacts.AddItem(InImpactList[nPendingImpactIndex]); + nPendingImpactIndex++; + // [Loop Continue] + goto J0x689; + } + s_QueuedInstantFireShotsFromClient.AddItem(NewQueuedShot); + } + //return; +} + +reliable server function ServerInstantFireThreeImpacts(float MovementTimeStamp, Vector MovementInAccel, Vector MovementClientLoc, byte MovementNewFlags, byte MovementClientRoll, int MovementView, int ClientFireRequestId, float StartTraceX, float StartTraceY, float StartTraceZ, float EndTraceX, float EndTraceY, float EndTraceZ, ImpactToValidate Impact, int NumImpacts, ImpactToValidate InImpactList[3]) +{ + local ImpactToValidate ImpactList[10]; + + ImpactList[0] = InImpactList[0]; + ImpactList[1] = InImpactList[1]; + ImpactList[2] = InImpactList[2]; + ServerInstantFire(MovementTimeStamp, MovementInAccel, MovementClientLoc, MovementNewFlags, MovementClientRoll, MovementView, ClientFireRequestId, StartTraceX, StartTraceY, StartTraceZ, EndTraceX, EndTraceY, EndTraceZ, Impact, NumImpacts, ImpactList); + //return; +} + +reliable server function ServerInstantFireSingleImpact(float MovementTimeStamp, Vector MovementInAccel, Vector MovementClientLoc, byte MovementNewFlags, byte MovementClientRoll, int MovementView, int ClientFireRequestId, float StartTraceX, float StartTraceY, float StartTraceZ, float EndTraceX, float EndTraceY, float EndTraceZ, ImpactToValidate Impact) +{ + local ImpactToValidate ImpactList[10]; + + ImpactList[0] = Impact; + ServerInstantFire(MovementTimeStamp, MovementInAccel, MovementClientLoc, MovementNewFlags, MovementClientRoll, MovementView, ClientFireRequestId, StartTraceX, StartTraceY, StartTraceZ, EndTraceX, EndTraceY, EndTraceZ, Impact, 1, ImpactList); + //return; +} + +function AOEArcingFlash(array ImpactList, optional Vector StartLocation = vect(0.0000000, 0.0000000, 0.0000000)) +{ + local int I; + + // End:0x27 + if(int(Role) < int(ROLE_Authority)) + { + return; + } + I = 0; + J0x32: + + // End:0x175 [Loop If] + if(I < ImpactList.Length) + { + // End:0x167 + if((ImpactList[I].HitActor != none) && ImpactList[I].HitActor != Instigator) + { + TgPawn(Instigator).FlashArcing(r_nDeviceInstanceId, int(CurrentFireMode), ImpactList[I].HitActor.Location, StartLocation, ImpactList[I].HitActor, int(r_eEquippedAt), m_nSocketIndex, true); + } + I++; + // [Loop Continue] + goto J0x32; + } + //return; +} + +simulated function CustomFire() +{ + local AimData Aim; + local TgDeviceFire FireMode; + + UpdateIndex(); + GetCachedAim(Aim); + TgPawn(Instigator).FlashFireNoSim(r_nDeviceInstanceId, int(CurrentFireMode), Aim.EndTrace, int(r_eEquippedAt), m_nSocketIndex, false, GetRefireTime()); + FireMode = GetCurrentFire(); + // End:0x1EB + if(FireMode != none) + { + // End:0x1B8 + if((((FireMode.m_nAttackType == 1442) || FireMode.m_nAttackType == 10636) || FireMode.m_nAttackType == 10657) || FireMode.m_nAttackType == 15034) + { + // End:0x1B5 + if(FireMode.CanSimulateTeleportFire() || int(Role) == int(ROLE_Authority)) + { + FireMode.TeleportFire(); + } + } + else + { + // End:0x1EB + if(int(Role) == int(ROLE_Authority)) + { + FireMode.CustomFire(); + } + } + } + //return; +} + +simulated function TgDeviceFire GetFireModeForFiringProjectile() +{ + return GetCurrentFire(); + //return ReturnValue; +} + +simulated function SpawnQueuedSimulatedProjectile() +{ + local TgProjectile SpawnedProjectile; + + J0x00: + SpawnedProjectile = SpawnSimulatedProjectile(true, c_QueuedSimulatedProjectileSpawns[0].FireRequestId, 0, c_QueuedSimulatedProjectileSpawns[0].FireMode, c_QueuedSimulatedProjectileSpawns[0].ProjectileSpawnLocation, c_QueuedSimulatedProjectileSpawns[0].ProjectileSpawnDir, c_QueuedSimulatedProjectileSpawns[0].ProjectileIndex, c_QueuedSimulatedProjectileSpawns[0].ProjectileIdOverride, c_QueuedSimulatedProjectileSpawns[0].Range, c_QueuedSimulatedProjectileSpawns[0].trackingTarget, c_QueuedSimulatedProjectileSpawns[0].EndTrace); + // End:0x16F + if(SpawnedProjectile != none) + { + SpawnedProjectile.CompleteInitialization(); + UpdateIndex(); + UpdateActiveProjectiles(SpawnedProjectile); + } + c_QueuedSimulatedProjectileSpawns.Remove(0, 1); + // End:0x00 + if(!((c_QueuedSimulatedProjectileSpawns.Length == 0) || c_QueuedSimulatedProjectileSpawns[0].TimeStampToSpawn > WorldInfo.TimeSeconds)) + goto J0x00; + // End:0x22B + if(c_QueuedSimulatedProjectileSpawns.Length > 0) + { + SetTimer(c_QueuedSimulatedProjectileSpawns[0].TimeStampToSpawn - WorldInfo.TimeSeconds, false, 'SpawnQueuedSimulatedProjectile'); + } + //return; +} + +simulated function TgProj_Simulated SpawnSimulatedProjectile(bool bCanSpawnOnClientFirst, int FireRequestId, int ProjectileInstanceId, TgDeviceFire FireMode, Vector ProjectileSpawnLocation, Vector ProjectileSpawnDir, int ProjectileIndex, int ProjectileIdOverride, float Range, Actor trackingTarget, Vector EndTrace) +{ + local TgProj_Simulated SpawnedProjectile; + local int QueuedTouchIndex; + + SpawnedProjectile = TgRepInfo_Game(WorldInfo.GRI).SpawnSimulatedProjectile(ProjectileInstanceId, FireMode.m_nId, Instigator, ProjectileSpawnLocation, ProjectileSpawnDir, ProjectileIdOverride, (int(Role) == int(ROLE_Authority)) && bCanSpawnOnClientFirst); + // End:0xD1 + if(int(Role) == int(ROLE_Authority)) + { + r_nProjectiles++; + } + // End:0xE2 + if(SpawnedProjectile == none) + { + return none; + } + // End:0x153 + if((!Instigator.IsLocallyControlled() || HasRemoteOwner()) || int(Role) < int(ROLE_Authority)) + { + Class'TgGame.TgDevice'.static.RecordUsedAim(ProjectileSpawnDir); + } + SpawnedProjectile.m_nClientFireRequestId = m_CachedFireRequestId; + SpawnedProjectile.m_OwnerFireMode = FireMode; + SpawnedProjectile.r_fRange = FireMode.GetRange(); + AdjustSpawnedProjectile(SpawnedProjectile); + SpawnedProjectile.SetShouldQueueServerHits((bCanSpawnOnClientFirst && int(Role) == int(ROLE_Authority)) && !Instigator.IsLocallyControlled() || HasRemoteOwner()); + // End:0x2D7 + if(SpawnedProjectile.m_TrackingSettings.bUsesTracking && trackingTarget != none) + { + SpawnedProjectile.SetTarget(trackingTarget); + } + QueuedTouchIndex = 0; + J0x2E2: + + // End:0x468 [Loop If] + if(QueuedTouchIndex < s_QueuedProjectileExplosions.Length) + { + // End:0x45A + if(s_QueuedProjectileExplosions[QueuedTouchIndex].ClientFireRequestId == SpawnedProjectile.m_nClientFireRequestId) + { + HandleQueuedProjectileExplosion(SpawnedProjectile, s_QueuedProjectileExplosions[QueuedTouchIndex].ProjectileAliveTime, s_QueuedProjectileExplosions[QueuedTouchIndex].Target, s_QueuedProjectileExplosions[QueuedTouchIndex].MovementTimeStamp, s_QueuedProjectileExplosions[QueuedTouchIndex].AoeRewindTimeStamp, s_QueuedProjectileExplosions[QueuedTouchIndex].HitLocation, s_QueuedProjectileExplosions[QueuedTouchIndex].HitNormal); + s_QueuedProjectileExplosions.Remove(QueuedTouchIndex, 1); + QueuedTouchIndex--; + } + QueuedTouchIndex++; + // [Loop Continue] + goto J0x2E2; + } + return SpawnedProjectile; + //return ReturnValue; +} + +simulated function AdjustSpawnedProjectile(out TgProj_Simulated SpawnedProjectile) +{ + //return; +} + +reliable server function ServerProjectileFire(float MovementTimeStamp, Vector MovementInAccel, Vector MovementClientLoc, byte MovementNewFlags, byte MovementClientRoll, int MovementView, int ClientFireRequestId, int ProjectileIndex, float ProjectileLocationX, float ProjectileLocationY, float ProjectileLocationZ, float ProjectileAimVectorX, float ProjectileAimVectorY, float ProjectileAimVectorZ, float ProjectileEndTraceX, float ProjectileEndTraceY, float ProjectileEndTraceZ) +{ + local bool bFoundMatchingQueuedShot; + local Vector ProjectileSpawnLocation, ProjectileSpawnDir, ProjectileEndTrace; + local TgQueuedSimulatedProjectileSpawn NewQueuedSpawn; + local TgRepInfo_Game GRI; + local TgProj_Simulated SpawnedProjectile; + local TgPawn TgPawn; + local TgPlayerController TgPlayerController; + local AimData AimData; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x68 + if((GRI == none) || !GRI.r_bAllowWeaponLagPrediction) + { + return; + } + TgPawn = TgPawn(Instigator); + // End:0xC4 + if(TgPawn != none) + { + TgPlayerController = TgPlayerController(TgPawn.Controller); + } + // End:0x13D + if((MovementTimeStamp > 0.0000000) && TgPlayerController != none) + { + TgPlayerController.ServerMove(MovementTimeStamp, MovementInAccel, MovementClientLoc, MovementNewFlags, MovementClientRoll, MovementView); + } + ProjectileSpawnLocation.X = ProjectileLocationX; + ProjectileSpawnLocation.Y = ProjectileLocationY; + ProjectileSpawnLocation.Z = ProjectileLocationZ; + ProjectileEndTrace.X = ProjectileEndTraceX; + ProjectileEndTrace.Y = ProjectileEndTraceY; + ProjectileEndTrace.Z = ProjectileEndTraceZ; + ProjectileSpawnDir.X = ProjectileAimVectorX; + ProjectileSpawnDir.Y = ProjectileAimVectorY; + ProjectileSpawnDir.Z = ProjectileAimVectorZ; + bFoundMatchingQueuedShot = false; + AimData.ClientMovementTimeStamp = MovementTimeStamp; + AimData.StartTrace = ProjectileSpawnLocation; + AimData.EndTrace = ProjectileEndTrace; + AimData.AimVector = ProjectileSpawnDir; + AimData = ValidateReceivedAim(MovementTimeStamp, AimData); + J0x35D: + + // End:0x671 [Loop If] + if((s_QueuedProjectileSpawnsFromServer.Length > 0) && s_QueuedProjectileSpawnsFromServer[0].FireRequestId <= ClientFireRequestId) + { + // End:0x661 + if(s_QueuedProjectileSpawnsFromServer[0].FireRequestId == ClientFireRequestId) + { + bFoundMatchingQueuedShot = true; + NewQueuedSpawn = s_QueuedProjectileSpawnsFromServer[0]; + s_ReceivedAim = AimData; + GetAdjustedAim(AimData, NewQueuedSpawn.AccuracyRandomValue1, NewQueuedSpawn.AccuracyRandomValue2, NewQueuedSpawn.AccuracyRandomValue1, NewQueuedSpawn.AccuracyRandomValue2); + SpawnedProjectile = SpawnSimulatedProjectile(true, ClientFireRequestId, TgGame(WorldInfo.Game).GetNextProjectileInstanceId(), NewQueuedSpawn.FireMode, AimData.StartTrace, AimData.AimVector, ProjectileIndex, NewQueuedSpawn.ProjectileIdOverride, NewQueuedSpawn.Range, NewQueuedSpawn.trackingTarget, AimData.EndTrace); + SpawnedProjectile.CompleteInitialization(); + UpdateIndex(); + PlayClientFireFx(AimData.EndTrace, m_nSocketIndex, true, GetRefireTime()); + TgPawn(Instigator).ProjectileOnFire(SpawnedProjectile); + s_QueuedProjectileSpawnsFromServer.Remove(0, 1); + UpdateActiveProjectiles(SpawnedProjectile); + // [Explicit Break] + goto J0x671; + } + else + { + s_QueuedProjectileSpawnsFromServer.Remove(0, 1); + } + // [Loop Continue] + goto J0x35D; + } + J0x671: + + // End:0x883 + if(!bFoundMatchingQueuedShot) + { + // End:0x6B8 + if(s_QueuedProjectileSpawnsFromClient.Length > (Max(Max(r_nMaxAmmoClipCount, m_nBurstTotalShots), 5) * 3)) + { + s_QueuedProjectileSpawnsFromClient.Remove(0, 1); + } + NewQueuedSpawn.ClientMovementTimeStamp = MovementTimeStamp; + NewQueuedSpawn.FireRequestId = ClientFireRequestId; + NewQueuedSpawn.FireMode = GetFireModeForFiringProjectile(); + NewQueuedSpawn.ProjectileSpawnLocation = AimData.StartTrace; + NewQueuedSpawn.ProjectileSpawnDir = AimData.AimVector; + NewQueuedSpawn.EndTrace = AimData.EndTrace; + NewQueuedSpawn.ProjectileIndex = ProjectileIndex; + NewQueuedSpawn.Range = GetFireModeForFiringProjectile().GetRange(); + // End:0x86D + if(UsesTrackingTarget()) + { + NewQueuedSpawn.trackingTarget = GetTrackingTarget(); + } + s_QueuedProjectileSpawnsFromClient.AddItem(NewQueuedSpawn); + } + //return; +} + +simulated function Projectile ProjectileFire(optional int ProjectileIndex = 0) +{ + local AimData baseaim, Aim; + local Projectile SpawnedProjectile; + local Class projClass; + local TgDeviceFire FireMode; + local Actor trackingTarget; + local Vector ProjectileSpawnLocation, ProjectileSpawnDir; + local Rotator OwnerRotationYawOnly; + local int ProjectileInstanceId; + local bool bCanSpawnOnClientFirst; + local TgPawn OwnerPawn; + local TgQueuedSimulatedProjectileSpawn NewQueuedSpawn; + local float SpawnSleepTime, AccuracyRandomValue1, AccuracyRandomValue2; + local TgPlayerController TgPlayerController; + local float LastSentMoveTimeStamp; + local Vector LastSentMoveAcceleration; + local int LastSentMoveCompressedFlags; + local Vector LastSentClientLoc; + local byte LastSentClientRoll; + local int LastSentView; + + FireMode = GetFireModeForFiringProjectile(); + GetCachedAim(baseaim); + // End:0x4D + if(UsesTrackingTarget()) + { + trackingTarget = GetTrackingTarget(); + } + Aim = baseaim; + GetAdjustedAim(Aim, AccuracyRandomValue1, AccuracyRandomValue2); + ProjectileSpawnLocation = Aim.StartTrace; + ProjectileSpawnDir = Aim.AimVector; + // End:0x159 + if(m_bProjectileFollowOwnerYaw) + { + OwnerRotationYawOnly = Owner.Rotation; + OwnerRotationYawOnly.Roll = 0; + OwnerRotationYawOnly.Pitch = 0; + ProjectileSpawnDir = Vector(OwnerRotationYawOnly); + } + FireMode.VerifyProjectile(); + projClass = FireMode.GetProjectileClass(); + UpdateIndex(); + PlayClientFireFx(Aim.EndTrace, m_nSocketIndex, true, GetRefireTime()); + bCanSpawnOnClientFirst = CanSpawnOnClientFirst(projClass, UsesTrackingTarget()); + // End:0x235 + if((int(Role) < int(ROLE_Authority)) && !bCanSpawnOnClientFirst) + { + return none; + } + // End:0xE14 + if(ClassIsChildOf(projClass, Class'TgGame.TgProj_Simulated')) + { + // End:0x26F + if(int(Role) < int(ROLE_Authority)) + { + ProjectileInstanceId = 0; + } + else + { + ProjectileInstanceId = TgGame(WorldInfo.Game).GetNextProjectileInstanceId(); + } + OwnerPawn = TgPawn(Owner); + // End:0x782 + if((bCanSpawnOnClientFirst && int(Role) == int(ROLE_Authority)) && ((Instigator != none) && !Instigator.IsLocallyControlled()) || HasRemoteOwner()) + { + J0x33B: + + // End:0x389 [Loop If] + if((s_QueuedProjectileSpawnsFromClient.Length > 0) && s_QueuedProjectileSpawnsFromClient[0].FireRequestId != m_CachedFireRequestId) + { + s_QueuedProjectileSpawnsFromClient.Remove(0, 1); + // [Loop Continue] + goto J0x33B; + } + // End:0x614 + if((s_QueuedProjectileSpawnsFromClient.Length > 0) && s_QueuedProjectileSpawnsFromClient[0].FireRequestId == m_CachedFireRequestId) + { + Aim.ClientMovementTimeStamp = s_QueuedProjectileSpawnsFromClient[0].ClientMovementTimeStamp; + Aim.StartTrace = s_QueuedProjectileSpawnsFromClient[0].ProjectileSpawnLocation; + Aim.EndTrace = s_QueuedProjectileSpawnsFromClient[0].EndTrace; + Aim.AimVector = s_QueuedProjectileSpawnsFromClient[0].ProjectileSpawnDir; + s_ReceivedAim = Aim; + GetAdjustedAim(Aim, AccuracyRandomValue1, AccuracyRandomValue2, AccuracyRandomValue1, AccuracyRandomValue2); + SpawnedProjectile = SpawnSimulatedProjectile(true, s_QueuedProjectileSpawnsFromClient[0].FireRequestId, ProjectileInstanceId, FireMode, Aim.StartTrace, Aim.AimVector, s_QueuedProjectileSpawnsFromClient[0].ProjectileIndex, GetProjectileIDOverride(s_QueuedProjectileSpawnsFromClient[0].ProjectileIndex), FireMode.GetRange(), trackingTarget, Aim.EndTrace); + s_QueuedProjectileSpawnsFromClient.Remove(0, 1); + } + else + { + // End:0x63D + if(s_QueuedProjectileSpawnsFromServer.Length > (r_nMaxAmmoClipCount * 3)) + { + s_QueuedProjectileSpawnsFromServer.Remove(0, 1); + } + NewQueuedSpawn.FireRequestId = m_CachedFireRequestId; + NewQueuedSpawn.FireMode = FireMode; + NewQueuedSpawn.Range = FireMode.GetRange(); + NewQueuedSpawn.trackingTarget = trackingTarget; + NewQueuedSpawn.ProjectileIdOverride = GetProjectileIDOverride(ProjectileIndex); + NewQueuedSpawn.AccuracyRandomValue1 = AccuracyRandomValue1; + NewQueuedSpawn.AccuracyRandomValue2 = AccuracyRandomValue2; + s_QueuedProjectileSpawnsFromServer.AddItem(NewQueuedSpawn); + return none; + } + } + else + { + // End:0xD46 + if((int(Role) < int(ROLE_Authority)) && OwnerPawn != none) + { + TgPlayerController = TgPlayerController(OwnerPawn.Controller); + // End:0x8D7 + if(TgPlayerController != none) + { + LastSentMoveTimeStamp = TgPlayerController.c_LastSentMoveTimeStamp; + LastSentMoveAcceleration = TgPlayerController.c_LastSentMoveAcceleration; + LastSentMoveCompressedFlags = TgPlayerController.c_LastSentMoveCompressedFlags; + LastSentClientLoc = TgPlayerController.c_LastSentClientLoc; + LastSentClientRoll = TgPlayerController.c_LastSentClientRoll; + LastSentView = TgPlayerController.c_LastSentView; + } + ServerProjectileFire(LastSentMoveTimeStamp, LastSentMoveAcceleration, LastSentClientLoc, byte(LastSentMoveCompressedFlags), LastSentClientRoll, LastSentView, m_CachedFireRequestId, ProjectileIndex, baseaim.StartTrace.X, baseaim.StartTrace.Y, baseaim.StartTrace.Z, baseaim.AimVector.X, baseaim.AimVector.Y, baseaim.AimVector.Z, baseaim.EndTrace.X, baseaim.EndTrace.Y, baseaim.EndTrace.Z); + SpawnSleepTime = OwnerPawn.GetUnclampedLagPredictionTime() - OwnerPawn.GetLagPredictionTime(); + // End:0xD46 + if(SpawnSleepTime > 0.0000000) + { + NewQueuedSpawn.TimeStampToSpawn = WorldInfo.TimeSeconds + SpawnSleepTime; + NewQueuedSpawn.FireRequestId = m_CachedFireRequestId; + NewQueuedSpawn.FireMode = FireMode; + NewQueuedSpawn.ProjectileSpawnLocation = ProjectileSpawnLocation; + NewQueuedSpawn.ProjectileSpawnDir = ProjectileSpawnDir; + NewQueuedSpawn.ProjectileIndex = ProjectileIndex; + NewQueuedSpawn.ProjectileIdOverride = GetProjectileIDOverride(ProjectileIndex); + NewQueuedSpawn.Range = FireMode.GetRange(); + NewQueuedSpawn.trackingTarget = trackingTarget; + NewQueuedSpawn.EndTrace = Aim.EndTrace; + c_QueuedSimulatedProjectileSpawns.AddItem(NewQueuedSpawn); + // End:0xD44 + if(!IsTimerActive('SpawnQueuedSimulatedProjectile')) + { + SetTimer(SpawnSleepTime, false, 'SpawnQueuedSimulatedProjectile'); + } + return none; + } + } + } + // End:0xE00 + if(SpawnedProjectile == none) + { + SpawnedProjectile = SpawnSimulatedProjectile(bCanSpawnOnClientFirst, m_CachedFireRequestId, ProjectileInstanceId, FireMode, ProjectileSpawnLocation, ProjectileSpawnDir, ProjectileIndex, GetProjectileIDOverride(ProjectileIndex), FireMode.GetRange(), trackingTarget, Aim.EndTrace); + } + // End:0xE11 + if(SpawnedProjectile == none) + { + return none; + } + } + else + { + SpawnedProjectile = Spawn(projClass, none,, ProjectileSpawnLocation, Rotator(Aim.AimVector),, true); + // End:0xE6D + if(SpawnedProjectile == none) + { + return none; + } + // End:0x100B + if(!SpawnedProjectile.bDeleteMe) + { + TgProjectile(SpawnedProjectile).r_Owner = self; + TgProjectile(SpawnedProjectile).r_nOwnerFireModeId = FireMode.m_nId; + TgProjectile(SpawnedProjectile).m_OwnerFireMode = FireMode; + TgProjectile(SpawnedProjectile).r_vSpawnLocation = SpawnedProjectile.Location; + TgProjectile(SpawnedProjectile).r_eEquippedAt = r_eEquippedAt; + FireMode.InitializeProjectile(SpawnedProjectile); + SpawnedProjectile.Init(Aim.AimVector); + } + } + TgProjectile(SpawnedProjectile).CompleteInitialization(); + return SpawnedProjectile; + //return ReturnValue; +} + +simulated function int GetProjectileIDOverride(int ProjectileIndex) +{ + return 0; + //return ReturnValue; +} + +simulated function Vector GetPhysicalFireStartLoc(optional Vector AimDir) +{ + local Vector SocketLocation; + local Rotator SocketRotation; + + // End:0x1A + if(Instigator == none) + { + return Location; + } + // End:0xA3 + if(!m_bHandDevice && c_DeviceForm != none) + { + SkeletalMeshComponent(c_DeviceForm.c_AttachedMesh).GetSocketWorldLocationAndRotation(name("WSO_Emit_01"), SocketLocation, SocketRotation); + return SocketLocation; + } + return Instigator.GetPawnViewLocation(); + //return ReturnValue; +} + +simulated function Actor GetTrackingTarget() +{ + local AimData Aim; + + GetCachedAim(Aim); + // End:0x72 + if(GetCurrentFire().IsValidTarget(Aim.HitActor)) + { + return Aim.HitActor; + } + return none; + //return ReturnValue; +} + +function TrackDeviceModeFired(TgPawn PawnFiring) +{ + local TgPawn ResponsiblePawn; + local int nDeviceModeID; + + // End:0x75 + if(PawnFiring.WasPlayerSpawned()) + { + ResponsiblePawn = PawnFiring.r_Owner; + nDeviceModeID = PawnFiring.s_nSpawnerDeviceModeId; + } + else + { + // End:0x112 + if((PawnFiring.Controller != none) && PawnFiring.Controller.IsA('TgPlayerController')) + { + ResponsiblePawn = PawnFiring; + nDeviceModeID = GetCurrentFire().m_nId; + } + else + { + return; + } + } + ResponsiblePawn.TrackFired(nDeviceModeID); + //return; +} + +simulated function int GetAmmoToConsume() +{ + // End:0x2F + if((m_bUsesBurstFire && m_bOnlyFirstBurstCostsAmmo) && !m_bIsFirstBurstShot) + { + return 0; + } + return GetCurrentFire().m_nAmmoCostPerShot; + //return ReturnValue; +} + +simulated function bool ShouldConsumeAmmo(int nFireRequestID, optional array Impacts) +{ + return true; + //return ReturnValue; +} + +simulated function ConsumeAmmoFromFiring(optional int nAmmoConsumptionOverride = -1, optional int nFireRequestIDOverride = -1) +{ + local int nAmmoToConsume, nFireRequestIDToUse; + local TgRepInfo_Game GRI; + + nFireRequestIDToUse = ((nFireRequestIDOverride > 0) ? nFireRequestIDOverride : m_CachedFireRequestId); + nAmmoToConsume = ((nAmmoConsumptionOverride > 0) ? nAmmoConsumptionOverride : GetAmmoToConsume()); + // End:0x155 + if(m_nLastFiringIDToConsumeAmmo == nFireRequestIDToUse) + { + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x155 + if((((((int(Role) == int(ROLE_Authority)) && GRI != none) && Instigator != none) && GRI.r_bAllowWeaponLagPrediction) && CanAllowLagCompensation()) && !Instigator.IsLocallyControlled() || HasRemoteOwner()) + { + return; + } + } + // End:0x325 + if(nAmmoToConsume > 0) + { + ConsumeAmmo(GetCurrentFire().m_nAmmoCostPerShot); + // End:0x325 + if((((UsesSimulatedAmmo()) && int(Role) < int(ROLE_Authority)) && Instigator != none) && Instigator.IsLocallyControlled()) + { + // End:0x2DE + if(c_EligableRefundFiringIDs[c_nEligableRefundFiringIDsIndexLast].FiringRequestID != nFireRequestIDToUse) + { + c_nEligableRefundFiringIDsIndexLast = (c_nEligableRefundFiringIDsIndexLast + 1) % 30; + // End:0x265 + if(c_nEligableRefundFiringIDsIndexLast == c_nEligableRefundFiringIDsIndexFirst) + { + c_nEligableRefundFiringIDsIndexFirst = (c_nEligableRefundFiringIDsIndexLast + 1) % 30; + } + c_EligableRefundFiringIDs[c_nEligableRefundFiringIDsIndexLast].FiringRequestID = nFireRequestIDToUse; + c_EligableRefundFiringIDs[c_nEligableRefundFiringIDsIndexLast].AmmoConsumed = GetCurrentFire().m_nAmmoCostPerShot; + } + else + { + c_EligableRefundFiringIDs[c_nEligableRefundFiringIDsIndexLast].AmmoConsumed += GetCurrentFire().m_nAmmoCostPerShot; + } + } + } + m_nLastFiringIDToConsumeAmmo = nFireRequestIDToUse; + m_bIsFirstBurstShot = false; + //return; +} + +simulated function FireAmmunition() +{ + local TgDeviceFire FireMode; + local int I; + local Projectile Proj; + local TgPawn TgP; + local TgRepInfo_Game GRI; + + // End:0x0D + if(LogDebugInfo()) + { + } + TgP = TgPawn(Instigator); + // End:0x65 + if(ShouldInterruptStealth()) + { + // End:0x65 + if(TgP != none) + { + TgP.InterruptStealth(self); + } + } + // End:0xA1 + if(ShouldInterruptLift()) + { + // End:0xA1 + if(TgP != none) + { + TgP.InterruptLift(); + } + } + // End:0xE2 + if(TgPawn(Owner) != none) + { + TgPawn(Owner).DeviceOnFire(self); + } + FireMode = GetCurrentFire(); + // End:0x140 + if((TgPawn(Owner) != none) && int(Role) == int(ROLE_Authority)) + { + TrackDeviceModeFired(TgPawn(Owner)); + } + // End:0x160 + if(ShouldConsumePowerPoolAfterFire()) + { + DeviceConsumePowerPool(CurrentFireMode); + } + switch(FireMode.m_nFireType) + { + // End:0x19A + case 0: + InstantFire(); + // End:0x34A + break; + // End:0x335 + case 1: + // End:0x26C + if(FireMode.m_nShotsPerFire > 0) + { + // End:0x207 + if(IsA('TgDevice_HitPulse')) + { + Proj = ProjectileFire(TgDevice_HitPulse(self).m_CurrentPulseIndex); + } + else + { + I = 0; + J0x212: + + // End:0x269 [Loop If] + if(I < FireMode.m_nShotsPerFire) + { + Proj = ProjectileFire(I); + ++I; + // [Loop Continue] + goto J0x212; + } + } + } + else + { + Proj = ProjectileFire(); + } + // End:0x2FE + if(((Proj != none) && TgPawn(Owner) != none) && TgProjectile(Proj) != none) + { + TgPawn(Owner).ProjectileOnFire(TgProjectile(Proj)); + } + // End:0x332 + if(TgProjectile(Proj) != none) + { + UpdateActiveProjectiles(TgProjectile(Proj)); + } + // End:0x34A + break; + // End:0x347 + case 2: + CustomFire(); + // End:0x34A + break; + // End:0xFFFF + default: + break; + } + FireMode.ApplyEffectType(Instigator, 10030); + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x498 + if((int(FireMode.m_nFireType) != int(0)) || !(((((int(Role) == int(ROLE_Authority)) && GRI != none) && Instigator != none) && GRI.r_bAllowWeaponLagPrediction) && CanAllowLagCompensation()) && !Instigator.IsLocallyControlled() || HasRemoteOwner()) + { + // End:0x498 + if(ShouldConsumeAmmo(m_CachedFireRequestId)) + { + ConsumeAmmoFromFiring(); + } + } + // End:0x4EE + if(m_bFireShouldEnterCombat && CanEnterCombat()) + { + TgP.EnterCombat(TgP, TgP, m_fEnterCombatDuration); + } + // End:0x562 + if(AIController(Instigator.Controller) != none) + { + AIController(Instigator.Controller).NotifyWeaponFired(self, CurrentFireMode); + } + NotifyDeviceEvent(0); + SendDeviceChangeEvent(6); + m_fLastDeviceCanFireTimeStamp = 0.0000000; + // End:0x680 + if(((int(CurrentFireMode) >= int(0)) && int(CurrentFireMode) < 5) && m_AccuracySettings[int(CurrentFireMode)].bUsesAdvancedAccuracy) + { + // End:0x5FC + if(m_nFreeShotsLeft > 0) + { + m_nFreeShotsLeft--; + } + else + { + m_fCurrentAdvancedAccuracy = FMax(GetMinAccuracy(), m_fCurrentAdvancedAccuracy - m_AccuracySettings[int(CurrentFireMode)].fAccuracyLossPerShot); + } + m_fLastMinAccuracy = m_fCurrentAdvancedAccuracy; + m_fLastShotTimestamp = WorldInfo.TimeSeconds; + } + // End:0x6E0 + if(((int(CurrentFireMode) >= int(0)) && int(CurrentFireMode) < 5) && m_RecoilSettings[int(CurrentFireMode)].bUsesRecoil) + { + AddRecoil(); + } + //return; +} + +simulated function float GetMinAccuracy() +{ + return m_AccuracySettings[int(CurrentFireMode)].fMinAccuracy; + //return ReturnValue; +} + +simulated function UpdateActiveProjectiles(optional TgProjectile Proj) +{ + local int I; + + m_FiredProjectiles.AddItem(Proj); + I = 0; + J0x22: + + // End:0x102 [Loop If] + if(I < m_FiredProjectiles.Length) + { + // End:0xF4 + if((((m_FiredProjectiles[I] == none) || m_FiredProjectiles[I].m_bHasExploded) || m_FiredProjectiles[I].bDeleteMe) || m_FiredProjectiles[I].m_bIsShutDown) + { + m_FiredProjectiles.Remove(I--, 1); + } + I++; + // [Loop Continue] + goto J0x22; + } + //return; +} + +simulated function bool AltFireDetonate() +{ + local int I; + local bool bDetonatedAProjectile; + + I = 0; + J0x0B: + + // End:0x7F [Loop If] + if(I < m_FiredProjectiles.Length) + { + // End:0x71 + if(m_FiredProjectiles[I] != none) + { + m_FiredProjectiles[I].AltFireDetonate(); + bDetonatedAProjectile = true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + UpdateActiveProjectiles(); + return bDetonatedAProjectile; + //return ReturnValue; +} + +simulated function float GetAltFireDetonateDamagePct() +{ + return 1.0000000; + //return ReturnValue; +} + +simulated event float GetCooldownRemaining() +{ + local TgTimerManager TimerManager; + + TimerManager = GetCooldownTimerManager(); + // End:0x58 + if(TimerManager.IsSet(0)) + { + return TimerManager.GetTimeRemaining(0); + } + return 0.0000000; + //return ReturnValue; +} + +function CooldownTimerExpired(int nTimerId, TgTimerManager.TGT_EVENT eEvent, optional bool bNoBecomeActive) +{ + // End:0x17 + if(int(eEvent) != int(0)) + { + return; + } + // End:0x56 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x56 + if(!bNoBecomeActive && IsActive()) + { + BecomeActive(); + } + } + TgPawn(Instigator).FlashCooldownDone(r_nDeviceInstanceId, 0); + // End:0x11C + if(int(r_eEquippedAt) == int(5)) + { + // End:0x11C + if((Instigator != none) && TgRepInfo_Player(Instigator.PlayerReplicationInfo) != none) + { + TgRepInfo_Player(Instigator.PlayerReplicationInfo).UpdateUltimateIsReady(0.0000000); + } + } + //return; +} + +simulated function ClientCooldownTimerExpired(int nTimerId, TgTimerManager.TGT_EVENT eEvent) +{ + SendDeviceChangeEvent(4); + //return; +} + +function AlternateStartCooldown() +{ + ClearTimer('AlternateStartCooldown'); + m_bIgnoreSecondaryFireLogic = false; + m_bIsSecondaryFire = false; + StartCooldown(int(CurrentFireMode)); + //return; +} + +simulated event StartCooldown(optional int nMode = -1, optional float fCooldownTimeOverride = -1.0000000) +{ + // End:0x42 + if(int(Role) == int(ROLE_Authority)) + { + AuthStartCooldown(nMode, fCooldownTimeOverride); + } + //return; +} + +function AuthStartCooldown(optional int nMode = -1, optional float fCooldownTimeOverride = -1.0000000) +{ + local TgTimerManager TimerManager; + local float fCooldownTime; + local TgPawn TgPawn; + local int AbilityCooldownTimerIndex; + local bool bWasActive; + + AbilityCooldownTimerIndex = 0; + // End:0x2A + if(LogDebugInfo()) + { + } + fCooldownTime = ((fCooldownTimeOverride >= float(0)) ? fCooldownTimeOverride : GetCooldownTime(nMode)); + // End:0x76 + if(fCooldownTime <= float(0)) + { + return; + } + TgPawn = TgPawn(Instigator); + // End:0x10E + if(TgPawn != none) + { + // End:0xDB + if(TgPawn.m_bCheatNoRecharge) + { + CooldownTimerExpired(AbilityCooldownTimerIndex, 0, true); + return; + } + TgPawn.FlashCooldown(r_nDeviceInstanceId, int(CurrentFireMode)); + } + TimerManager = GetCooldownTimerManager(); + // End:0x24A + if(!TimerManager.IsSet(AbilityCooldownTimerIndex)) + { + bWasActive = IsActive(); + // End:0x1DD + if(fCooldownTime > float(0)) + { + TimerManager.RegisterForEvents(AbilityCooldownTimerIndex, self, 'CooldownTimerExpired'); + TimerManager.Start(AbilityCooldownTimerIndex, fCooldownTime); + } + ClientStartCooldown(int(CurrentFireMode), fCooldownTime); + PlayNextSimulatedForceFeedbackWaveform(none, m_ForceFeedbackStartCooldown); + // End:0x24A + if(TgPawn != none) + { + TgPawn.DeviceOnStartCooldown(self, fCooldownTime); + } + } + // End:0x290 + if(!TimerManager.IsSet(AbilityCooldownTimerIndex)) + { + CooldownTimerExpired(AbilityCooldownTimerIndex, 0, true); + } + else + { + // End:0x2A8 + if(bWasActive) + { + CeaseActive(); + } + } + // End:0x341 + if(int(r_eEquippedAt) == int(5)) + { + // End:0x341 + if((Instigator != none) && TgRepInfo_Player(Instigator.PlayerReplicationInfo) != none) + { + TgRepInfo_Player(Instigator.PlayerReplicationInfo).UpdateUltimateIsReady(GetCooldownRemaining()); + } + } + //return; +} + +event ResetCooldown(int nMode, optional float fCooldownTimeOverride = -1.0000000) +{ + local TgTimerManager TimerManager; + local float fCooldownTime; + local int AbilityCooldownTimerIndex; + local TgPawn TgPawn; + + AbilityCooldownTimerIndex = 0; + // End:0x21 + if(LogDebugInfo()) + { + } + TgPawn = TgPawn(Instigator); + // End:0xA3 + if(TgPawn != none) + { + // End:0x70 + if(TgPawn.m_bCheatNoRecharge) + { + return; + } + TgPawn.FlashCooldown(r_nDeviceInstanceId, int(CurrentFireMode)); + } + TimerManager = GetCooldownTimerManager(); + fCooldownTime = ((fCooldownTimeOverride >= float(0)) ? fCooldownTimeOverride : GetCooldownTime(nMode)); + // End:0x195 + if(fCooldownTime > 0.0000000) + { + // End:0x153 + if(!TimerManager.IsSet(AbilityCooldownTimerIndex)) + { + StartCooldown(int(CurrentFireMode), fCooldownTime); + return; + } + else + { + m_bCooldownWasModified = true; + TimerManager.Update(AbilityCooldownTimerIndex, fCooldownTime); + } + } + else + { + // End:0x20B + if(TimerManager.IsSet(AbilityCooldownTimerIndex)) + { + m_bCooldownWasModified = true; + TimerManager.Close(AbilityCooldownTimerIndex, false); + CooldownTimerExpired(AbilityCooldownTimerIndex, 0); + } + } + ClientResetCooldown(int(CurrentFireMode), fCooldownTime); + // End:0x2C2 + if(int(r_eEquippedAt) == int(5)) + { + // End:0x2C2 + if((Instigator != none) && TgRepInfo_Player(Instigator.PlayerReplicationInfo) != none) + { + TgRepInfo_Player(Instigator.PlayerReplicationInfo).UpdateUltimateIsReady(GetCooldownRemaining()); + } + } + //return; +} + +simulated event float GetCooldownTime(optional int nMode = -1) +{ + local TgDeviceFire Mode; + + Mode = ((nMode < 0) ? GetCurrentFire() : m_FireMode[nMode]); + // End:0x91 + if(Mode != none) + { + return FMax(Mode.GetMinCooldownTime(), Mode.GetCooldownTime()); + } + return -1.0000000; + //return ReturnValue; +} + +simulated event EndCooldown() +{ + local TgTimerManager TimerManager; + + TimerManager = GetCooldownTimerManager(); + // End:0x77 + if((TimerManager != none) && TimerManager.IsSet(0)) + { + TimerManager.Close(0, false); + CooldownTimerExpired(0, 0); + } + ClientEndCooldown(); + //return; +} + +reliable client simulated event ClientStartCooldown(int nMode, float fCooldownTime) +{ + local int AbilityCooldownTimerIndex; + local TgTimerManager TimerManager; + + AbilityCooldownTimerIndex = 0; + // End:0x18 + if(LogDebugInfo()) + { + } + TimerManager = GetCooldownTimerManager(); + // End:0x80 + if(TimerManager.IsSet(AbilityCooldownTimerIndex)) + { + TimerManager.Close(AbilityCooldownTimerIndex, false); + } + // End:0xF7 + if(fCooldownTime > float(0)) + { + TimerManager.RegisterForEvents(AbilityCooldownTimerIndex, self, 'ClientCooldownTimerExpired'); + TimerManager.Start(AbilityCooldownTimerIndex, fCooldownTime); + } + SendDeviceChangeEvent(4); + //return; +} + +reliable client simulated event ClientResetCooldown(int nMode, float fCooldownTime) +{ + local int AbilityCooldownTimerIndex; + local TgTimerManager TimerManager; + + AbilityCooldownTimerIndex = 0; + // End:0x18 + if(LogDebugInfo()) + { + } + TimerManager = GetCooldownTimerManager(); + // End:0x10B + if(fCooldownTime > 0.0000000) + { + // End:0xD5 + if(!TimerManager.IsSet(AbilityCooldownTimerIndex)) + { + TimerManager.RegisterForEvents(AbilityCooldownTimerIndex, self, 'ClientCooldownTimerExpired'); + TimerManager.Start(AbilityCooldownTimerIndex, fCooldownTime); + } + else + { + TimerManager.Update(AbilityCooldownTimerIndex, fCooldownTime); + } + } + else + { + // End:0x15F + if(TimerManager.IsSet(AbilityCooldownTimerIndex)) + { + TimerManager.Close(AbilityCooldownTimerIndex, false); + } + } + SendDeviceChangeEvent(4); + //return; +} + +reliable client simulated event ClientEndCooldown() +{ + local TgTimerManager TimerManager; + + // End:0x04 + if(true) + { + } + TimerManager = GetCooldownTimerManager(); + // End:0x6D + if((TimerManager != none) && TimerManager.IsSet(0)) + { + TimerManager.Close(0, false); + } + SendDeviceChangeEvent(4); + //return; +} + +simulated function NotifyPutAway() +{ + // End:0x0D + if(LogDebugInfo()) + { + } + StopFire(); + GotoState('Active'); + PendingImpactList.Length = 0; + // End:0x48 + if(IsInTargetingMode()) + { + ExitTargetingMode(); + } + //return; +} + +simulated event NotifySwitchMode() +{ + // End:0x0D + if(LogDebugInfo()) + { + } + PendingImpactList.Length = 0; + //return; +} + +simulated function UpdateDesiredFireMode() +{ + //return; +} + +simulated function ChangeFireModeOnRefire() +{ + // End:0x47 + if((int(m_nDesiredFireMode) != int(255)) && int(m_nDesiredFireMode) != int(CurrentFireMode)) + { + SetFireMode(int(m_nDesiredFireMode)); + } + //return; +} + +function OnTeleportNotify(Actor TeleportingActor) +{ + //return; +} + +function OnProjectileShutdown(TgProjectile Proj) +{ + // End:0x2D + if(int(Role) == int(ROLE_Authority)) + { + r_nProjectiles = Max(r_nProjectiles - 1, 0); + } + //return; +} + +simulated event LockInput(bool bShouldLock) +{ + local TgPawn PawnOwner; + local TgAIController_Behavior OwnerAI; + local TgPlayerController OwnerPC; + + PawnOwner = TgPawn(Instigator); + // End:0x8D + if(PawnOwner != none) + { + OwnerAI = TgAIController_Behavior(PawnOwner.Controller); + OwnerPC = TgPlayerController(PawnOwner.Controller); + } + // End:0x119 + if(OwnerPC != none) + { + OwnerPC.m_nDevicesLockingInput += ((bShouldLock) ? 1 : -1); + OwnerPC.m_nDevicesLockingInput = int(FMax(float(OwnerPC.m_nDevicesLockingInput), 0.0000000)); + } + // End:0x1E6 + if(OwnerAI != none) + { + OwnerAI.m_nDevicesLockingInput += ((bShouldLock) ? 1 : -1); + OwnerAI.m_nDevicesLockingInput = int(FMax(float(OwnerAI.m_nDevicesLockingInput), 0.0000000)); + OwnerAI.bIsRotationLocked = OwnerAI.m_nDevicesLockingInput > 0; + } + //return; +} + +simulated function LockCamera(bool bShouldLock) +{ + local TgPawn PawnOwner; + local TgPlayerController OwnerPC; + + PawnOwner = TgPawn(Instigator); + // End:0x5C + if(PawnOwner != none) + { + OwnerPC = TgPlayerController(PawnOwner.Controller); + } + // End:0xE8 + if(OwnerPC != none) + { + OwnerPC.m_nDevicesLockingCamera += ((bShouldLock) ? 1 : -1); + OwnerPC.m_nDevicesLockingCamera = int(FMax(float(OwnerPC.m_nDevicesLockingCamera), 0.0000000)); + } + //return; +} + +simulated function LockRotation(bool bShouldLock) +{ + local TgPawn PawnOwner; + local TgPlayerController OwnerPC; + + PawnOwner = TgPawn(Instigator); + // End:0x5C + if(PawnOwner != none) + { + OwnerPC = TgPlayerController(PawnOwner.Controller); + } + // End:0xE8 + if(OwnerPC != none) + { + OwnerPC.m_nDevicesLockingRotation += ((bShouldLock) ? 1 : -1); + OwnerPC.m_nDevicesLockingRotation = int(FMax(float(OwnerPC.m_nDevicesLockingRotation), 0.0000000)); + } + //return; +} + +simulated function RefireCheckTimer() +{ + ClearTimer('RefireCheckTimer'); + SendDeviceChangeEvent(6); + //return; +} + +simulated function FirePreHitDelay() +{ + //return; +} + +simulated function FirePostHitDelay() +{ + CheckAutoReload(); + //return; +} + +simulated function DeviceBuildupTimer() +{ + //return; +} + +simulated function OutroLockoutTime() +{ + //return; +} + +simulated function bool ShouldRefire(TgDeviceFire FireMode, const out AimData Aim) +{ + return false; + //return ReturnValue; +} + +simulated function HandleDeviceFormStartFire(int nDeviceModeNum, float fRefireTime, const out AimData Aim) +{ + TgPawn(Instigator).FlashStartFire(r_nDeviceInstanceId, nDeviceModeNum, fRefireTime, Aim.HitActor, GetCurrentAmmoAmount()); + // End:0xCF + if(c_DeviceForm != none) + { + c_DeviceForm.StartFire(nDeviceModeNum, fRefireTime, Aim.HitActor, GetCurrentAmmoAmount()); + } + //return; +} + +simulated function UpdateIndex() +{ + CalcFireSocketIndexMax(); + // End:0x3D + if(m_nSocketMax > 0) + { + m_nSocketIndex = (m_nSocketIndex % m_nSocketMax) + 1; + } + else + { + m_nSocketIndex = 1; + } + //return; +} + +simulated event Destroyed() +{ + // End:0x1A + if(m_CooldownTimers != none) + { + m_CooldownTimers = none; + } + // End:0x4F + if(IsTimerActive('GlobalOffhandCooldownCompleteServer')) + { + ClearTimer('GlobalOffhandCooldownCompleteServer'); + GlobalOffhandCooldownCompleteServer(); + } + // End:0x84 + if(IsTimerActive('GlobalOffhandCooldownCompleteClient')) + { + ClearTimer('GlobalOffhandCooldownCompleteClient'); + GlobalOffhandCooldownCompleteClient(); + } + super(Inventory).Destroyed(); + //return; +} + +simulated event bool ApplyGlobalOffhandCooldown() +{ + return (!IsToggleDevice() && !m_bHandDevice) && (((int(r_eEquippedAt) == int(2)) || int(r_eEquippedAt) == int(3)) || int(r_eEquippedAt) == int(4)) || int(r_eEquippedAt) == int(5); + //return ReturnValue; +} + +simulated event bool IsToggleDevice() +{ + return false; + //return ReturnValue; +} + +simulated event bool IsFunctionallyToggleDevice() +{ + return IsToggleDevice(); + //return ReturnValue; +} + +simulated function AdjustForNewDilation(float fPrevDilation, float fNewDilation) +{ + local float fNextTimeAccountedFor, fTotalTime; + + // End:0x1C7 + if((IsFiring()) && m_bShouldUseInstigatorsTimeDilation) + { + // End:0x72 + if(IsTimerActive('FirePreHitDelay')) + { + fNextTimeAccountedFor = GetTimerCount('FirePreHitDelay'); + fTotalTime = GetTimerRate('FirePreHitDelay'); + } + else + { + // End:0xC8 + if(IsTimerActive('FirePostHitDelay')) + { + fNextTimeAccountedFor = GetTimerCount('FirePostHitDelay'); + fTotalTime = GetTimerRate('FirePostHitDelay'); + } + else + { + // End:0x11B + if(IsTimerActive('PersistTimer')) + { + fNextTimeAccountedFor = GetTimerCount('PersistTimer'); + fTotalTime = GetTimerRate('PersistTimer'); + } + } + } + // End:0x1C7 + if((fNextTimeAccountedFor > 0.0000000) && fTotalTime > 0.0000000) + { + m_fFiringTimer = WorldInfo.TimeSeconds + ((fTotalTime - fNextTimeAccountedFor) / fNewDilation); + m_fTimeStampAccountedFor = WorldInfo.TimeSeconds; + m_fTimeAccountedFor = fNextTimeAccountedFor; + } + } + //return; +} + +event ClientReconnected() +{ + // End:0x0D + if(IsFiring()) + { + } + // End:0x39 + if(IsDeviceCoolingDown()) + { + ClientResetCooldown(int(CurrentFireMode), GetCooldownRemaining()); + } + ResetAmmoTransactions(); + //return; +} + +simulated function StopFiringLogic() +{ + //return; +} + +simulated function bool IsUnEquipping() +{ + return false; + //return ReturnValue; +} + +simulated function bool TryPutDown() +{ + UnequipWeapon(); + return true; + //return ReturnValue; +} + +simulated function UnequipWeapon() +{ + GotoState('WeaponUnequipping'); + //return; +} + +simulated function CancelUnequip() +{ + //return; +} + +simulated function bool AllowSwitchTo(Weapon NewWeapon) +{ + return true; + //return ReturnValue; +} + +simulated function Activate() +{ + TgPawn(Instigator).SetActiveWeapon(self); + //return; +} + +simulated function AltUse(bool bEnable) +{ + local TgPawn_Character TgP; + + // End:0x11 + if(!m_bAltFireEnabled) + { + return; + } + TgP = TgPawn_Character(Instigator); + // End:0x54 + if((int(m_AltFireType) == int(0)) || TgP == none) + { + return; + } + // End:0x7C + if(int(Role) < int(ROLE_Authority)) + { + ServerAltUse(bEnable); + } + // End:0x97 + if(m_bIsAltFiring == bEnable) + { + return; + } + m_bIsAltFiring = bEnable; + switch(m_AltFireType) + { + // End:0xF2 + case 1: + SetAltFireSecondModeNow(bEnable); + // End:0xEF + if(bEnable) + { + Use(); + } + // End:0xF5 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +reliable server function ServerAltUse(bool bEnable) +{ + AltUse(bEnable); + //return; +} + +simulated event SetAltFireSecondModeNow(bool bEnable) +{ + c_bAltFireSecondModeNow = bEnable; + CurrentFireMode = ((bEnable) ? 1 : 0); + ServerSetAltFireSecondModeNow(bEnable); + //return; +} + +reliable server function ServerSetAltFireSecondModeNow(bool bEnable) +{ + CurrentFireMode = ((bEnable) ? 1 : 0); + //return; +} + +simulated event bool UsesSimulatedAmmo() +{ + return (CanAllowLagCompensation()) && m_bHandDevice; + //return ReturnValue; +} + +simulated function VerifyAmmoTransaction(int nTransactionID, int nAmmoChanged, bool bFilledClip) +{ + local AmmoTransaction transaction; + local int I; + + // End:0x15 + if(nTransactionID == -1) + { + return; + } + // End:0x314 + if((((int(Role) < int(ROLE_Authority)) && Instigator != none) && Instigator.IsLocallyControlled()) || (int(Role) == int(ROLE_Authority)) && HasRemoteOwner()) + { + // End:0x21F + if(int(Role) == int(ROLE_Authority)) + { + I = 0; + J0xA2: + + // End:0x21F [Loop If] + if(I < s_RecievedUnverifiedDelayedAmmoTransactions.Length) + { + // End:0x211 + if(s_RecievedUnverifiedDelayedAmmoTransactions[I].TransactionId == nTransactionID) + { + // End:0x1A8 + if((WorldInfo.TimeSeconds - s_RecievedUnverifiedDelayedAmmoTransactions[I].TransactionTimestamp) > float(1)) + { + LogWarnDelayedAmmoTransactionOnClient(nTransactionID, nAmmoChanged, WorldInfo.TimeSeconds - s_RecievedUnverifiedDelayedAmmoTransactions[I].TransactionTimestamp, true, m_UniqueAmmoValidationId); + } + ClientValidateAmmoResponse(nTransactionID, ((bFilledClip) ? s_RecievedUnverifiedDelayedAmmoTransactions[I].AmmoAmountChanged : nAmmoChanged)); + s_RecievedUnverifiedDelayedAmmoTransactions.Remove(I, 1); + return; + } + I++; + // [Loop Continue] + goto J0xA2; + } + } + transaction.TransactionTimestamp = WorldInfo.TimeSeconds; + transaction.TransactionId = nTransactionID; + transaction.AmmoAmountChanged = nAmmoChanged; + transaction.FilledClip = bFilledClip; + m_AmmoTransactions.AddItem(transaction); + // End:0x314 + if(int(Role) < int(ROLE_Authority)) + { + ServerValidateAmmoTransaction(nTransactionID, nAmmoChanged); + } + } + //return; +} + +reliable server function ServerValidateAmmoTransaction(int nTransactionID, int nAmmoChanged) +{ + local AmmoTransaction transaction; + local int I; + + I = 0; + J0x0B: + + // End:0x1C2 [Loop If] + if(I < m_AmmoTransactions.Length) + { + // End:0x1B4 + if(m_AmmoTransactions[I].TransactionId == nTransactionID) + { + // End:0x12E + if((WorldInfo.TimeSeconds - m_AmmoTransactions[I].TransactionTimestamp) > float(1)) + { + LogWarnDelayedAmmoTransactionOnClient(nTransactionID, m_AmmoTransactions[I].AmmoAmountChanged, WorldInfo.TimeSeconds - m_AmmoTransactions[I].TransactionTimestamp, false, m_UniqueAmmoValidationId); + } + ClientValidateAmmoResponse(nTransactionID, ((m_AmmoTransactions[I].FilledClip) ? nAmmoChanged : m_AmmoTransactions[I].AmmoAmountChanged)); + m_AmmoTransactions.Remove(I, 1); + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x1CD: + + // End:0x2C6 [Loop If] + if(I < m_DelayedAmmoTransactions.Length) + { + // End:0x2B8 + if(m_DelayedAmmoTransactions[I].TransactionId == nTransactionID) + { + transaction.TransactionId = nTransactionID; + transaction.AmmoAmountChanged = nAmmoChanged; + transaction.TransactionTimestamp = WorldInfo.TimeSeconds; + s_RecievedUnverifiedDelayedAmmoTransactions.AddItem(transaction); + return; + } + I++; + // [Loop Continue] + goto J0x1CD; + } + logr((("SIMAMMO TRANSACTION DESYNC: No corresponding server ammo transaction was found for Transaction ID " @ string(nTransactionID)) @ " for device ") @ (GetDeviceName())); + // End:0x3EF + if(nTransactionID > m_UniqueAmmoValidationId) + { + logr((("SIMAMMO TRANSACTION DESYNC: Client, " @ string(nTransactionID)) @ ", is ahead of the server, ") @ string(m_UniqueAmmoValidationId)); + m_UniqueAmmoValidationId = nTransactionID; + } + ClientValidateAmmoResponse(nTransactionID, 0, true); + //return; +} + +reliable client simulated function LogWarnDelayedAmmoTransactionOnClient(int nTransactionID, int nAmmoAmountChanged, float fTimeDelayed, bool bLateServer, int nServerCurrentTransactionID) +{ + logr((((((((("SIMAMMO TRANSACTION DESYNC: Possible server desync " @ string(nTransactionID)) @ " for device ") @ (GetDeviceName())) @ " Ammo Modified: ") @ string(nAmmoAmountChanged)) @ " Seconds Delayed: ") @ string(fTimeDelayed)) @ " Is Server Late: ") @ string(bLateServer)); + // End:0x161 + if(nServerCurrentTransactionID > m_UniqueAmmoValidationId) + { + logr((("SIMAMMO TRANSACTION DESYNC: Server, " @ string(nServerCurrentTransactionID)) @ ", is ahead of the client, ") @ string(m_UniqueAmmoValidationId)); + m_UniqueAmmoValidationId = nServerCurrentTransactionID; + } + //return; +} + +reliable client simulated function ClientValidateAmmoResponse(int nTransactionID, int nAmmoChanged, optional bool bFubar = false) +{ + local int I; + + I = 0; + J0x10: + + // End:0x1BE [Loop If] + if(I < m_AmmoTransactions.Length) + { + // End:0x1B0 + if(m_AmmoTransactions[I].TransactionId == nTransactionID) + { + // End:0x147 + if(bFubar) + { + logr((((((("SIMAMMO TRANSACTION DESYNC: No Server transaction was found for Transaction ID " @ string(nTransactionID)) @ " for device ") @ (GetDeviceName())) @ ". ServerAmmo: ") @ string(nAmmoChanged)) @ " ClientAmmo: ") @ string(m_AmmoTransactions[I].AmmoAmountChanged)); + } + UpdateLocalAmmoCount(Clamp(c_nSimLocalAmmoClipCount + (nAmmoChanged - m_AmmoTransactions[I].AmmoAmountChanged), 0, r_nMaxAmmoClipCount)); + m_AmmoTransactions.Remove(I, 1); + return; + } + I++; + // [Loop Continue] + goto J0x10; + } + // End:0x2A9 + if(bFubar) + { + logr((((((("SIMAMMO TRANSACTION DESYNC: No Server transaction was found for Transaction ID " @ string(nTransactionID)) @ " for device ") @ (GetDeviceName())) @ ". ServerAmmo: ") @ string(nAmmoChanged)) @ " ClientAmmo: ") @ string(m_AmmoTransactions[I].AmmoAmountChanged)); + } + logr((("SIMAMMO TRANSACTION DESYNC: No corresponding client ammo transaction was found for Transaction ID " @ string(nTransactionID)) @ " for device ") @ (GetDeviceName())); + UpdateLocalAmmoCount(Clamp(c_nSimLocalAmmoClipCount + nAmmoChanged, 0, r_nMaxAmmoClipCount)); + //return; +} + +simulated event int SetAmmoDelayedWithValidation(int AmmoCount, float DelayAmt) +{ + local AmmoTransaction transaction; + + transaction.TransactionTimestamp = WorldInfo.TimeSeconds + DelayAmt; + transaction.TransactionId = GenerateUniqueAmmoValidationId(); + transaction.AmmoAmountChanged = AmmoCount - (GetCurrentAmmoAmount()); + m_DelayedAmmoTransactions.AddItem(transaction); + return transaction.TransactionId; + //return ReturnValue; +} + +simulated event bool CancelSetAmmoDelayed(int nTransactionID) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x8F [Loop If] + if(I < m_DelayedAmmoTransactions.Length) + { + // End:0x81 + if(m_DelayedAmmoTransactions[I].TransactionId == nTransactionID) + { + m_DelayedAmmoTransactions[I].AmmoAmountChanged = 0; + return true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +simulated event bool SendImmediateSetAmmoDelayed(int nTransactionID) +{ + local int I; + + I = 0; + J0x0B: + + // End:0xE4 [Loop If] + if(I < m_DelayedAmmoTransactions.Length) + { + // End:0xD6 + if(m_DelayedAmmoTransactions[I].TransactionId == nTransactionID) + { + SetAmmo((GetCurrentAmmoAmount()) + m_DelayedAmmoTransactions[I].AmmoAmountChanged, -1, true, m_DelayedAmmoTransactions[I].TransactionId); + m_DelayedAmmoTransactions.Remove(I, 1); + return true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +simulated event bool ValidateDelayedAmmoTransactionRegen(int nTransactionID, optional bool bInitiateNewTransactionForRegen = false) +{ + local int I; + + // End:0x141 + if(((Instigator != none) && Instigator.IsLocallyControlled()) && UsesSimulatedAmmo()) + { + I = 0; + J0x52: + + // End:0x141 [Loop If] + if(I < m_DelayedAmmoTransactionRegen.Length) + { + // End:0x133 + if((m_DelayedAmmoTransactionRegen[I].TransactionId == nTransactionID) && m_DelayedAmmoTransactionRegen[I].AmmoAmountChanged != 0) + { + ServerValidateDelayedRegenAmmoTransaction(nTransactionID, m_DelayedAmmoTransactionRegen[I].AmmoAmountChanged, bInitiateNewTransactionForRegen); + // End:0x131 + if(bInitiateNewTransactionForRegen) + { + m_nPendingRegenAmmoTransactionID = GiveAmmoDelayedWithValidationRegen(0); + } + return true; + } + I++; + // [Loop Continue] + goto J0x52; + } + } + return false; + //return ReturnValue; +} + +reliable server function ServerValidateDelayedRegenAmmoTransaction(int nTransactionID, int nAmmoChanged, bool bInitiateNewTransactionForRegen) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x10C [Loop If] + if(I < m_DelayedAmmoTransactionRegen.Length) + { + // End:0xFE + if(m_DelayedAmmoTransactionRegen[I].TransactionId == nTransactionID) + { + ClientValidateDelayedRegenAmmoResponse(nTransactionID, ((m_DelayedAmmoTransactionRegen[I].FilledClip) ? nAmmoChanged : m_DelayedAmmoTransactionRegen[I].AmmoAmountChanged)); + m_DelayedAmmoTransactionRegen.Remove(I, 1); + // End:0xFC + if(bInitiateNewTransactionForRegen) + { + m_nPendingRegenAmmoTransactionID = GiveAmmoDelayedWithValidationRegen(0); + } + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + // End:0x12E + if(bInitiateNewTransactionForRegen) + { + m_nPendingRegenAmmoTransactionID = GiveAmmoDelayedWithValidationRegen(0); + } + I = 0; + J0x139: + + // End:0x1B3 [Loop If] + if(I < m_DelayedAmmoTransactionRegen.Length) + { + // End:0x1A5 + if(m_DelayedAmmoTransactionRegen[I].TransactionId < nTransactionID) + { + m_DelayedAmmoTransactionRegen.Remove(I, 1); + I--; + } + I++; + // [Loop Continue] + goto J0x139; + } + ClientValidateDelayedRegenAmmoResponse(nTransactionID, 0); + //return; +} + +reliable client simulated function ClientValidateDelayedRegenAmmoResponse(int nTransactionID, int nAmmoChanged) +{ + local int I; + + I = 0; + J0x0B: + + // End:0xCE [Loop If] + if(I < m_DelayedAmmoTransactionRegen.Length) + { + // End:0xC0 + if(m_DelayedAmmoTransactionRegen[I].TransactionId == nTransactionID) + { + UpdateLocalAmmoCount(Clamp(c_nSimLocalAmmoClipCount + (nAmmoChanged - m_DelayedAmmoTransactionRegen[I].AmmoAmountChanged), 0, r_nMaxAmmoClipCount)); + m_DelayedAmmoTransactionRegen.Remove(I, 1); + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + UpdateLocalAmmoCount(Clamp(c_nSimLocalAmmoClipCount + nAmmoChanged, 0, r_nMaxAmmoClipCount)); + //return; +} + +simulated event int GiveAmmoDelayedWithValidationRegen(int nAmmoCountAdded) +{ + local AmmoTransaction transaction; + + transaction.TransactionTimestamp = WorldInfo.TimeSeconds; + transaction.TransactionId = GenerateUniqueAmmoValidationId(); + transaction.AmmoAmountChanged = nAmmoCountAdded; + m_DelayedAmmoTransactionRegen.AddItem(transaction); + return transaction.TransactionId; + //return ReturnValue; +} + +simulated event bool UpdateDelayedAmmoTransactionRegen(int nTransactionID, int nAmmoCountAdded) +{ + local int I; + + GiveAmmo(nAmmoCountAdded, false); + I = 0; + J0x1F: + + // End:0xED [Loop If] + if(I < m_DelayedAmmoTransactionRegen.Length) + { + // End:0xDF + if(m_DelayedAmmoTransactionRegen[I].TransactionId == nTransactionID) + { + m_DelayedAmmoTransactionRegen[I].AmmoAmountChanged += nAmmoCountAdded; + // End:0xDD + if((GetCurrentAmmoAmount()) >= r_nMaxAmmoClipCount) + { + m_DelayedAmmoTransactionRegen[I].FilledClip = true; + } + return true; + } + I++; + // [Loop Continue] + goto J0x1F; + } + return false; + //return ReturnValue; +} + +simulated event SetAmmo(int AmmoCount, optional int ClipSize = -1, optional bool bShouldValidate = false, optional int ValidationIDOverride = 0) +{ + // End:0x41 + if(ClipSize >= 0) + { + r_nMaxAmmoClipCount = ClipSize; + bNetDirty = true; + } + AmmoCount = Clamp(AmmoCount, 0, r_nMaxAmmoClipCount); + // End:0xD3 + if((UsesSimulatedAmmo()) && bShouldValidate) + { + VerifyAmmoTransaction(((ValidationIDOverride == 0) ? GenerateUniqueAmmoValidationId() : ValidationIDOverride), AmmoCount - (GetCurrentAmmoAmount()), AmmoCount == r_nMaxAmmoClipCount); + } + // End:0x152 + if(((UsesSimulatedAmmo()) && int(Role) < int(ROLE_Authority)) && ((Instigator != none) && Instigator.IsLocallyControlled()) || Instigator == none) + { + UpdateLocalAmmoCount(AmmoCount); + } + else + { + r_nAmmoClipCount = AmmoCount; + ReplicatePlayerDeviceAmmo(); + } + //return; +} + +simulated function UpdateLocalAmmoCount(int nNewAmmoAmt) +{ + local TgPlayerController TgPC; + + // End:0xB0 + if(c_nSimLocalAmmoClipCount != nNewAmmoAmt) + { + c_nSimLocalAmmoClipCount = nNewAmmoAmt; + // End:0xB0 + if(int(r_eEquippedAt) == int(1)) + { + TgPC = TgPlayerController(Instigator.Controller); + // End:0xB0 + if(TgPC != none) + { + TgPC.NotifyUpdatedInhandAmmoCount(c_nSimLocalAmmoClipCount, self, r_nDeviceId); + } + } + } + //return; +} + +simulated event ConsumeAmmo(optional int Amount = 1, optional bool bShouldValidate = false) +{ + // End:0x64 + if(((!bShouldValidate && !HasAmmo()) || !RequiresAmmoToFire()) || !UsesSimulatedAmmo() && int(Role) < int(ROLE_Authority)) + { + return; + } + SetAmmo((GetCurrentAmmoAmount()) - Amount,, bShouldValidate); + //return; +} + +simulated event GiveAmmo(optional int Amount = 1, optional bool bShouldValidate = false) +{ + // End:0x1B + if(!RequiresAmmoToFire()) + { + return; + } + SetAmmo((GetCurrentAmmoAmount()) + Amount,, bShouldValidate); + //return; +} + +event GiveAmmoWithClientSync(optional int Amount = 1) +{ + SetAmmo((GetCurrentAmmoAmount()) + Amount); + // End:0x72 + if((UsesSimulatedAmmo()) && int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + ClientSyncAmmoGivenFromServer(Amount); + } + // End:0x8E + if(m_bFirstAmmoWasGiven) + { + m_bAmmoWasGiven = true; + } + else + { + m_bFirstAmmoWasGiven = true; + } + //return; +} + +reliable client simulated function ClientSyncAmmoGivenFromServer(int Amount) +{ + // End:0x2F + if(UsesSimulatedAmmo()) + { + SetAmmo((GetCurrentAmmoAmount()) + Amount); + } + //return; +} + +simulated event ReloadAmmo(optional bool bToFull, optional bool bShouldValidate = false) +{ + // End:0x2D + if(!UsesSimulatedAmmo() && int(Role) < int(ROLE_Authority)) + { + return; + } + // End:0x5C + if(bToFull) + { + SetAmmo(r_nMaxAmmoClipCount,, bShouldValidate); + } + else + { + SetAmmo(r_nAmmoClipCount + 1,, bShouldValidate); + } + FlashUpdateAmmoOnPawn(); + //return; +} + +simulated function ReloadAmmoWithSynchronization() +{ + ReloadAmmo(true); + // End:0x44 + if(!UsesSimulatedAmmo() || (int(Role) == int(ROLE_Authority)) && !HasRemoteOwner()) + { + return; + } + // End:0xF6 + if(((int(Role) < int(ROLE_Authority)) && Instigator != none) && Instigator.IsLocallyControlled()) + { + ServerSyncAmmoTransactionID(m_UniqueAmmoValidationId); + m_DelayedAmmoTransactions.Length = 0; + m_DelayedAmmoTransactionRegen.Length = 0; + m_AmmoTransactions.Length = 0; + s_RecievedUnverifiedDelayedAmmoTransactions.Length = 0; + // End:0xF6 + if(m_fAmmoRegenPerSec >= float(0)) + { + m_nPendingRegenAmmoTransactionID = GiveAmmoDelayedWithValidationRegen(0); + } + } + //return; +} + +reliable server function ServerSyncAmmoTransactionID(int nNewID) +{ + m_UniqueAmmoValidationId = nNewID; + m_DelayedAmmoTransactions.Length = 0; + m_DelayedAmmoTransactionRegen.Length = 0; + m_AmmoTransactions.Length = 0; + s_RecievedUnverifiedDelayedAmmoTransactions.Length = 0; + // End:0x76 + if(UsesSimulatedAmmo()) + { + // End:0x76 + if(m_fAmmoRegenPerSec >= float(0)) + { + m_nPendingRegenAmmoTransactionID = GiveAmmoDelayedWithValidationRegen(0); + } + } + //return; +} + +simulated event ResetAmmoTransactions() +{ + m_UniqueAmmoValidationId = 0; + m_DelayedAmmoTransactions.Length = 0; + m_DelayedAmmoTransactionRegen.Length = 0; + m_AmmoTransactions.Length = 0; + s_RecievedUnverifiedDelayedAmmoTransactions.Length = 0; + // End:0x6E + if(UsesSimulatedAmmo()) + { + // End:0x6E + if(m_fAmmoRegenPerSec >= float(0)) + { + m_nPendingRegenAmmoTransactionID = GiveAmmoDelayedWithValidationRegen(0); + } + } + //return; +} + +event FlashUpdateAmmoOnPawn() +{ + local TgPawn TgP; + + TgP = TgPawn(Instigator); + // End:0x4A + if(TgP != none) + { + TgP.ForceUpdateAmmoAnim(); + } + //return; +} + +reliable server function ServerStartReload() +{ + // End:0x55 + if(!StartReload()) + { + SetAmmo(GetCurrentAmmoAmount(),, true); + // End:0x55 + if(!IsReloading()) + { + ClientInterruptReload((GetCurrentAmmoAmount()) >= r_nMaxAmmoClipCount); + } + } + //return; +} + +reliable client simulated function ClientForceReload() +{ + StartReload(true); + //return; +} + +simulated event bool StartReload(optional bool bIgnoreCurrentAmmo = false) +{ + local TgDeviceFire FireMode; + local TgPawn TgP; + local float ReloadScale; + + // End:0x4B + if(((IsReloading()) || Instigator == none) || !Instigator.IsAliveAndWell()) + { + return false; + } + TgP = TgPawn(Instigator); + // End:0x92 + if(!bIgnoreCurrentAmmo && (GetCurrentAmmoAmount()) >= r_nMaxAmmoClipCount) + { + return false; + } + FireMode = GetCurrentFire(); + // End:0xB7 + if(FireMode == none) + { + return false; + } + ReloadScale = ((TgP != none) ? TgP.GetReloadScale() : 1.0000000); + m_nPendingReloadAmmoTransactionID = SetAmmoDelayedWithValidation(r_nMaxAmmoClipCount, FireMode.m_fAmmoClipPreReloadTime * ReloadScale); + // End:0x15A + if(int(Role) < int(ROLE_Authority)) + { + ServerStartReload(); + } + m_fTotalReloadTime = ((FireMode.m_fAmmoClipPreReloadTime + FireMode.m_fAmmoClipPostReloadTime) + ((int(Role) < int(ROLE_Authority)) ? 0.1000000 : 0.0000000)) * ReloadScale; + // End:0x322 + if(m_fTotalReloadTime > float(0)) + { + // End:0x275 + if((TgP != none) && TgP.m_WeaponMesh != none) + { + TgP.m_WeaponMesh.PlayReload(int(self.r_eEquippedAt), m_fTotalReloadTime, GetCurrentAmmoAmount()); + } + SetTimer(m_fTotalReloadTime, false, 'FullReloadTimer'); + // End:0x2F9 + if((FireMode.m_fAmmoClipPreReloadTime * ReloadScale) > 0.0000000) + { + SetTimer(FireMode.m_fAmmoClipPreReloadTime * ReloadScale, false, 'PreReloadTimer'); + } + else + { + PreReloadTimer(); + } + PlayNextSimulatedForceFeedbackWaveform(none, m_ForceFeedbackStartReload,, ReloadScale); + } + // End:0x381 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x381 + if(TgP != none) + { + TgP.FlashReload(r_nDeviceInstanceId, m_fTotalReloadTime, GetCurrentAmmoAmount()); + } + } + NotifyDeviceEvent(1); + return true; + //return ReturnValue; +} + +simulated function FullReloadTimer() +{ + //return; +} + +simulated function PreReloadTimer() +{ + local TgDeviceFire FireMode; + local TgPawn_Character TgP; + local float fReloadTimeRemaining; + + FireMode = GetCurrentFire(); + PlayNextSimulatedForceFeedbackWaveform(none, m_ForceFeedbackStopReload); + // End:0x104 + if(FireMode != none) + { + // End:0x99 + if(int(Role) == int(ROLE_Authority)) + { + TgP = TgPawn_Character(Instigator); + // End:0x99 + if(TgP != none) + { + TgP.DeviceOnReload(self); + } + } + fReloadTimeRemaining = GetTimerRate('FullReloadTimer') - GetTimerCount('FullReloadTimer'); + // End:0xFA + if(fReloadTimeRemaining > 0.0000000) + { + SetTimer(fReloadTimeRemaining, false, 'PostReloadTimer'); + } + else + { + PostReloadTimer(); + } + } + //return; +} + +simulated function PostReloadTimer() +{ + PlayNextSimulatedForceFeedbackWaveform(m_ForceFeedbackStartReload, none); + FlashUpdateAmmoOnPawn(); + //return; +} + +simulated event InterruptReload() +{ + // End:0x0D + if(LogDebugInfo()) + { + } + // End:0xC1 + if(IsTimerActive('PreReloadTimer') || IsTimerActive('PostReloadTimer')) + { + ClearTimer('PreReloadTimer'); + ClearTimer('PostReloadTimer'); + ClearTimer('FullReloadTimer'); + CancelSetAmmoDelayed(m_nPendingReloadAmmoTransactionID); + // End:0xC1 + if(int(Role) == int(ROLE_Authority)) + { + FlashUpdateAmmoOnPawn(); + ClientInterruptReload(); + bNetDirty = true; + } + } + //return; +} + +reliable client simulated function ClientInterruptReload(optional bool bAllowAmmoFill = false) +{ + // End:0x12 + if(LogDebugInfo()) + { + } + ClearTimer('PreReloadTimer'); + ClearTimer('PostReloadTimer'); + ClearTimer('FullReloadTimer'); + // End:0x70 + if(!bAllowAmmoFill) + { + CancelSetAmmoDelayed(m_nPendingReloadAmmoTransactionID); + } + SendImmediateSetAmmoDelayed(m_nPendingReloadAmmoTransactionID); + //return; +} + +event OnDeployableDestroyed(TgDeployable deployable) +{ + // End:0x3B + if(deployable == r_Deployable) + { + r_Deployable = none; + // End:0x3B + if(m_bCooldownAfterDeployDeath) + { + StartCooldown(); + } + } + //return; +} + +simulated event OnDeployableSpawned(TgDeployable deployable) +{ + //return; +} + +simulated event float GetRefirePercent() +{ + // End:0x5F + if(GetTimerRate('FirePostHitDelay') > 0.0000000) + { + return (GetTimerRate('FirePostHitDelay') - GetTimerCount('FirePostHitDelay')) / GetTimerRate('FirePostHitDelay'); + } + return 0.0000000; + //return ReturnValue; +} + +simulated event float GetRefireRate() +{ + return GetTimerRate('FirePostHitDelay'); + //return ReturnValue; +} + +simulated event Vector GetProjectileSpawnOffset() +{ + return m_vProjectileSpawnOffset; + //return ReturnValue; +} + +simulated event bool ShouldMountCancelFiring() +{ + return true; + //return ReturnValue; +} + +simulated function bool RegisterDelegate(TgDevice.ENotifyDelegateEvents ndeType, delegate DeviceEventDelegate) +{ + switch(ndeType) + { + // End:0x53 + case 0: + // End:0x50 + if(m_OnFiredDelegates.Find(__DeviceEvent__Delegate) == -1) + { + m_OnFiredDelegates.AddItem(DeviceEventDelegate); + return true; + } + // End:0x1D6 + break; + // End:0x93 + case 1: + // End:0x90 + if(m_OnReloadDelegates.Find(DeviceEventDelegate) == -1) + { + m_OnReloadDelegates.AddItem(DeviceEventDelegate); + return true; + } + // End:0x1D6 + break; + // End:0xD3 + case 2: + // End:0xD0 + if(m_OnStartFireDelegates.Find(DeviceEventDelegate) == -1) + { + m_OnStartFireDelegates.AddItem(DeviceEventDelegate); + return true; + } + // End:0x1D6 + break; + // End:0x113 + case 3: + // End:0x110 + if(m_OnStopFireDelegates.Find(DeviceEventDelegate) == -1) + { + m_OnStopFireDelegates.AddItem(DeviceEventDelegate); + return true; + } + // End:0x1D6 + break; + // End:0x153 + case 4: + // End:0x150 + if(m_Generic1Delegates.Find(DeviceEventDelegate) == -1) + { + m_Generic1Delegates.AddItem(DeviceEventDelegate); + return true; + } + // End:0x1D6 + break; + // End:0x193 + case 5: + // End:0x190 + if(m_Generic2Delegates.Find(DeviceEventDelegate) == -1) + { + m_Generic2Delegates.AddItem(DeviceEventDelegate); + return true; + } + // End:0x1D6 + break; + // End:0x1D3 + case 6: + // End:0x1D0 + if(m_Generic3Delegates.Find(DeviceEventDelegate) == -1) + { + m_Generic3Delegates.AddItem(DeviceEventDelegate); + return true; + } + // End:0x1D6 + break; + // End:0xFFFF + default: + break; + } + return false; + //return ReturnValue; +} + +simulated function bool UnregisterDelegate(TgDevice.ENotifyDelegateEvents ndeType, delegate DeviceEventDelegate) +{ + local int FoundIndex; + + switch(ndeType) + { + // End:0x65 + case 0: + FoundIndex = m_OnFiredDelegates.Find(DeviceEventDelegate); + // End:0x62 + if(FoundIndex != -1) + { + m_OnFiredDelegates.Remove(FoundIndex, 1); + return true; + } + // End:0x254 + break; + // End:0xB7 + case 1: + FoundIndex = m_OnReloadDelegates.Find(DeviceEventDelegate); + // End:0xB4 + if(FoundIndex != -1) + { + m_OnReloadDelegates.Remove(FoundIndex, 1); + return true; + } + // End:0x254 + break; + // End:0x109 + case 2: + FoundIndex = m_OnStartFireDelegates.Find(DeviceEventDelegate); + // End:0x106 + if(FoundIndex != -1) + { + m_OnStartFireDelegates.Remove(FoundIndex, 1); + return true; + } + // End:0x254 + break; + // End:0x15B + case 3: + FoundIndex = m_OnStopFireDelegates.Find(DeviceEventDelegate); + // End:0x158 + if(FoundIndex != -1) + { + m_OnStopFireDelegates.Remove(FoundIndex, 1); + return true; + } + // End:0x254 + break; + // End:0x1AD + case 4: + FoundIndex = m_Generic1Delegates.Find(DeviceEventDelegate); + // End:0x1AA + if(FoundIndex != -1) + { + m_Generic1Delegates.Remove(FoundIndex, 1); + return true; + } + // End:0x254 + break; + // End:0x1FF + case 5: + FoundIndex = m_Generic2Delegates.Find(DeviceEventDelegate); + // End:0x1FC + if(FoundIndex != -1) + { + m_Generic2Delegates.Remove(FoundIndex, 1); + return true; + } + // End:0x254 + break; + // End:0x251 + case 6: + FoundIndex = m_Generic3Delegates.Find(DeviceEventDelegate); + // End:0x24E + if(FoundIndex != -1) + { + m_Generic3Delegates.Remove(FoundIndex, 1); + return true; + } + // End:0x254 + break; + // End:0xFFFF + default: + break; + } + return false; + //return ReturnValue; +} + +simulated function NotifyDeviceEvent(TgDevice.ENotifyDelegateEvents ndeType) +{ + local delegate onEventDelegate; + + switch(ndeType) + { + // End:0x47 + case 0: + // End:0x43 + foreach m_OnFiredDelegates(onEventDelegate) + { + DeviceEvent(); + } + // End:0x182 + break; + // End:0x7B + case 1: + // End:0x77 + foreach m_OnReloadDelegates(onEventDelegate) + { + DeviceEvent(); + } + // End:0x182 + break; + // End:0xAF + case 2: + // End:0xAB + foreach m_OnStartFireDelegates(onEventDelegate) + { + DeviceEvent(); + } + // End:0x182 + break; + // End:0xE3 + case 3: + // End:0xDF + foreach m_OnStopFireDelegates(onEventDelegate) + { + DeviceEvent(); + } + // End:0x182 + break; + // End:0x117 + case 4: + // End:0x113 + foreach m_Generic1Delegates(onEventDelegate) + { + DeviceEvent(); + } + // End:0x182 + break; + // End:0x14B + case 5: + // End:0x147 + foreach m_Generic2Delegates(onEventDelegate) + { + DeviceEvent(); + } + // End:0x182 + break; + // End:0x17F + case 6: + // End:0x17B + foreach m_Generic3Delegates(onEventDelegate) + { + DeviceEvent(); + } + // End:0x182 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + //return; +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + //return; +} + +event OnLinkDevice(TgPawn TgP) +{ + //return; +} + +event OnUnlinkDevice(TgPawn TgP) +{ + //return; +} + +reliable client simulated event ClientDeviceFirePropertyChange(int nMode, int nPropertyId, float fNewValue) +{ + local TgDeviceFire FireMode; + + // End:0x2B + if((nMode < 0) || nMode >= m_FireMode.Length) + { + return; + } + FireMode = m_FireMode[nMode]; + // End:0x59 + if(FireMode == none) + { + return; + } + FireMode.SetProperty(nPropertyId, fNewValue); + //return; +} + +function OnCripple() +{ + // End:0x24 + if(CanBeCrippled()) + { + // End:0x24 + if(CanBeInterrupted()) + { + InterruptFiring(); + } + } + //return; +} + +function OnKnock() +{ + //return; +} + +reliable server event OnCanceled() +{ + local TgPawn TgP; + + TgP = TgPawn(Instigator); + // End:0x5A + if((TgP != none) && m_bCancelingShouldInterruptStealth) + { + TgP.InterruptStealth(self); + } + //return; +} + +simulated function OnCanceledClient() +{ + //return; +} + +simulated event bool PlayHitReactionOverride() +{ + return false; + //return ReturnValue; +} + +simulated function bool ShouldStopActionOnOffhandSlotReleased() +{ + return int(r_eEquippedAt) == int(16); + //return ReturnValue; +} + +simulated exec function DesyncAmmoTransactionID(optional int Amt = 1) +{ + m_UniqueAmmoValidationId += Amt; + //return; +} + +reliable client simulated function ClientSetAimAssistValues(float MagnetScaleX, float MagnetScaleY, float FrictionScaleX, float FrictionScaleY, float TrackingScaleX, float TrackingScaleY) +{ + local TgDevice TgDevice; + + // End:0x17C + foreach AllActors(Class'TgGame.TgDevice', TgDevice) + { + TgDevice.m_AimAssistMagnetScale.X = MagnetScaleX; + TgDevice.m_AimAssistMagnetScale.Y = MagnetScaleY; + TgDevice.m_AimAssistFrictionScale.X = FrictionScaleX; + TgDevice.m_AimAssistFrictionScale.Y = FrictionScaleY; + TgDevice.m_AimAssistTrackingScale.X = TrackingScaleX; + TgDevice.m_AimAssistTrackingScale.Y = TrackingScaleY; + } + DisplayMessage(((((("ClientSetAimAssistValues" @ string(MagnetScaleX)) @ string(MagnetScaleY)) @ string(FrictionScaleX)) @ string(FrictionScaleY)) @ string(TrackingScaleX)) @ string(TrackingScaleY)); + //return; +} + +reliable client simulated function ClientSetAimVectorAssistValues(float BoundsScaleX, float BoundsScaleY, float MaxAngleX, float MaxAngleY) +{ + local TgDevice TgDevice; + + // End:0x106 + foreach AllActors(Class'TgGame.TgDevice', TgDevice) + { + TgDevice.m_AimVectorAssistMaxBoundsScale.X = BoundsScaleX; + TgDevice.m_AimVectorAssistMaxBoundsScale.Y = BoundsScaleY; + TgDevice.m_AimVectorAssistMaxAssistanceDegrees.X = MaxAngleX; + TgDevice.m_AimVectorAssistMaxAssistanceDegrees.Y = MaxAngleY; + } + DisplayMessage(((("ClientSetAimVectorAssistValues" @ string(BoundsScaleX)) @ string(BoundsScaleY)) @ string(MaxAngleX)) @ string(MaxAngleY)); + //return; +} + +simulated function bool CanToggleTargetingOff() +{ + return m_bCanToggleTargeting; + //return ReturnValue; +} + +simulated function bool ReleaseHoldOnRightMouseReleased() +{ + return true; + //return ReturnValue; +} + +simulated function OnOwnerRespawn() +{ + // End:0x17 + if(m_bHandDevice) + { + ReloadAmmoWithSynchronization(); + } + // End:0x36 + if(int(Role) == int(ROLE_Authority)) + { + r_nProjectiles = 0; + } + //return; +} + +simulated event PlayNextSimulatedForceFeedbackWaveform(ForceFeedbackWaveform Prev, ForceFeedbackWaveform Next, optional float fScaleMagnitude = 1.0000000, optional float fScaleDuration = 1.0000000, optional bool bFromPawnPosition) +{ + local TgPlayerController TgPC; + + TgPC = TgPlayerController(Instigator.Controller); + // End:0xED + if(TgPC != none) + { + // End:0x8A + if(Prev != none) + { + TgPC.StopForceFeedbackWaveform(Prev); + } + // End:0xED + if(Next != none) + { + TgPC.PlayForceFeedbackWaveform(Next, ((bFromPawnPosition) ? Instigator : none), fScaleMagnitude, fScaleDuration); + } + } + //return; +} + +simulated function int GetAimAssistPriority() +{ + // End:0x19 + if(int(r_eEquippedAt) == int(1)) + { + return 1; + } + else + { + // End:0x30 + if(NativeIsFiring()) + { + return m_nAimAssistPriorityWhileFiring; + } + } + return 0; + //return ReturnValue; +} + +simulated function bool RequireLookForAimAssist() +{ + return true; + //return ReturnValue; +} + +simulated function bool RequireMovementForAimAssist() +{ + return true; + //return ReturnValue; +} + +simulated function UpdateOutroLockoutTime() +{ + //return; +} + +simulated event RegisterAsGameplayCurveOverrideDevice(TgDevice Dev) +{ + m_GameplayCurveOverrideDevices.AddItem(Dev); + //return; +} + +simulated event UnregisterAsGameplayCurveOverrideDevice(TgDevice Dev) +{ + m_GameplayCurveOverrideDevices.RemoveItem(Dev); + //return; +} + +simulated event ApplyAllowUseWhileFlags(int nAllowUseWhileFlags) +{ + local TgDeviceFire pFire; + + pFire = GetCurrentFire(); + // End:0x4B + if(pFire != none) + { + pFire.m_nAllowUseWhileFlags = nAllowUseWhileFlags; + } + //return; +} + +simulated function float GetIndividualOffhandCooldownTime() +{ + local float fMinTime; + local TgPawn PawnOwner; + + // End:0x33 + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + return m_IndividualOffhandCooldownTime; + } + PawnOwner = TgPawn(Owner); + // End:0x8E + if(PawnOwner != none) + { + fMinTime = PawnOwner.GetUnclampedLagPredictionTime() + 0.1000000; + } + // End:0xB2 + if(m_IndividualOffhandCooldownTime < fMinTime) + { + return fMinTime; + } + else + { + return m_IndividualOffhandCooldownTime; + } + //return ReturnValue; +} + +simulated event float GetCustomTimerBarCurrentTime() +{ + return 0.0000000; + //return ReturnValue; +} + +simulated event float GetCustomTimerBarMaxTime() +{ + return 0.0000000; + //return ReturnValue; +} + +auto simulated state Active +{ stop; +} + +simulated state DeviceBuildup +{ + simulated function DeviceBuildupTimer() + { + GotoState('DeviceFiring'); + //return; + } + + simulated event bool IsFiring() + { + return true; + //return ReturnValue; + } + + simulated function BeginState(name PreviousStateName) + { + local float fBuildupTime; + local TgPawn PawnOwner; + + // End:0x0D + if(LogDebugInfo()) + { + } + PawnOwner = TgPawn(Owner); + // End:0x1DC + if(PawnOwner != none) + { + // End:0xCB + if((((PawnOwner != none) && int(PawnOwner.r_eIsStealthed) != int(0)) && int(PawnOwner.r_eIsStealthed) != int(4)) && ShouldCancelStealth()) + { + PawnOwner.RemoveStealthEffects(); + } + // End:0x16D + if(((PawnOwner != none) && PawnOwner.r_EffectManager != none) && PawnOwner.r_EffectManager.IsSpawnGuarded()) + { + PawnOwner.r_EffectManager.RemoveSpawnGuard(); + } + // End:0x199 + if(ShouldInterruptInhand()) + { + PawnOwner.InterruptInhand(); + } + PawnOwner.DeviceOnStartBuildup(self); + SendCombatLogEvent(1); + PlayNextSimulatedForceFeedbackWaveform(none, m_ForceFeedbackStartBuildup); + } + // End:0x1F4 + if(m_bLockInputDuringFire) + { + LockInput(true); + } + // End:0x20C + if(m_bLockCameraDuringFire) + { + LockCamera(true); + } + fBuildupTime = GetBuildupTime(); + // End:0x39E + if(fBuildupTime > 0.0000000) + { + TgPawn(Instigator).FlashBuildUp(r_nDeviceInstanceId, int(CurrentFireMode), int(r_eEquippedAt), m_nSocketIndex, fBuildupTime); + // End:0x2E2 + if(c_DeviceForm != none) + { + c_DeviceForm.BuildUp(int(CurrentFireMode), int(r_eEquippedAt), m_nSocketIndex, fBuildupTime); + } + // End:0x33A + if(int(Role) == int(ROLE_Authority)) + { + GetCurrentFire().ApplyEffectType(Instigator, 262); + s_WhileFiringDeviceMode = GetCurrentFire(); + } + m_fFiringTimer = WorldInfo.TimeSeconds + (fBuildupTime / CustomTimeDilation); + SetTimer(fBuildupTime, false, 'DeviceBuildupTimer'); + SendDeviceChangeEvent(8); + } + else + { + GotoState('DeviceFiring'); + } + //return; + } + + simulated function EndState(name NextStateName) + { + local TgPawn PawnOwner; + + // End:0x0D + if(LogDebugInfo()) + { + } + PawnOwner = TgPawn(Owner); + // End:0x41 + if(m_bLockInputDuringFire) + { + LockInput(false); + } + // End:0x59 + if(m_bLockCameraDuringFire) + { + LockCamera(false); + } + // End:0xB8 + if((int(Role) == int(ROLE_Authority)) && s_WhileFiringDeviceMode != none) + { + s_WhileFiringDeviceMode.RemoveEffectType(Instigator, false, 262); + s_WhileFiringDeviceMode = none; + } + // End:0x225 + if(NextStateName != 'DeviceFiring') + { + TgPawn(Instigator).FlashStopFire(r_nDeviceInstanceId, int(CurrentFireMode)); + // End:0x144 + if(c_DeviceForm != none) + { + c_DeviceForm.StopFire(int(CurrentFireMode)); + } + NotifyDeviceEvent(3); + TgPawn(Instigator).FlashCooldownDone(r_nDeviceInstanceId, 0); + // End:0x1C6 + if((int(Role) == int(ROLE_Authority)) && c_DeviceForm != none) + { + c_DeviceForm.CooldownComplete(); + } + PawnOwner.DeviceOnStopBuildup(self, true); + SendCombatLogEvent(3); + // End:0x222 + if(m_IsPendingSetFireMode) + { + SetFireMode(int(m_PendingFireMode), true); + m_IsPendingSetFireMode = false; + } + } + else + { + PawnOwner.DeviceOnStopBuildup(self, false); + } + PlayNextSimulatedForceFeedbackWaveform(m_ForceFeedbackStartBuildup, m_ForceFeedbackStopBuildup); + ClearTimer('DeviceBuildupTimer'); + SendDeviceChangeEvent(8); + //return; + } + stop; +} + +simulated state DeviceFiring +{ + ignores AlternateStartCooldown; + + simulated function RestartFireLoop(bool bRefire) + { + local AimData Aim; + local float fTimingError, fPreHitDelay, fRefireTime; + local TgDeviceFire FireMode; + local TgPawn PawnOwner; + + ChangeFireModeOnRefire(); + PawnOwner = TgPawn(Owner); + // End:0xB9 + if((((PawnOwner != none) && int(PawnOwner.r_eIsStealthed) != int(0)) && int(PawnOwner.r_eIsStealthed) != int(4)) && ShouldCancelStealth()) + { + PawnOwner.RemoveStealthEffects(); + } + FireMode = GetCurrentFire(); + // End:0xDA + if(LogDebugInfo()) + { + } + ClearTimer('FirePreHitDelay'); + ClearTimer('FirePostHitDelay'); + fPreHitDelay = GetFiringPreHitDelay(); + CacheFiringPostHitDelay(); + fTimingError = WorldInfo.TimeSeconds - m_fFiringTimer; + m_fFiringTimer = (WorldInfo.TimeSeconds + (fPreHitDelay / CustomTimeDilation)) - fTimingError; + m_fTimeStampAccountedFor = WorldInfo.TimeSeconds; + m_fTimeAccountedFor = 0.0000000; + fPreHitDelay = FMax(0.0000000, fPreHitDelay - (fTimingError * CustomTimeDilation)); + // End:0x211 + if(LogDebugInfo()) + { + } + GetCachedAim(Aim); + // End:0x27E + if(IsTimerActive('FirePreHitDelay')) + { + ClearTimer('FirePreHitDelay'); + FireMode.RemoveEffectType(Instigator, false, 10455); + } + // End:0x2BC + if(s_WhileFiringDeviceMode != none) + { + s_WhileFiringDeviceMode.ApplyEffectType(Instigator, 10455); + } + c_fCachedManaAtStartFire = ((PawnOwner != none) ? PawnOwner.GetMana() : 0.0000000); + // End:0x397 + if(!bRefire || !IsToggleDevice()) + { + fRefireTime = GetRefireTime(); + TgPawn(Instigator).DeviceOnStartFire(self); + HandleDeviceFormStartFire(int(CurrentFireMode), fRefireTime, Aim); + PlayNextSimulatedForceFeedbackWaveform(none, m_ForceFeedbackStartFire); + } + // End:0x3B5 + if(m_bIsFireHoldDevice && StartFireHold()) + { + return; + } + // End:0x413 + if(m_bUsesBurstFire) + { + // End:0x406 + if((m_nBurstShotsRemaining == m_nBurstTotalShots) && fPreHitDelay > float(0)) + { + SetTimer(fPreHitDelay, false, 'FirePreHitDelay'); + } + else + { + FirePreHitDelay(); + } + } + else + { + // End:0x43E + if(fPreHitDelay > float(0)) + { + SetTimer(fPreHitDelay, false, 'FirePreHitDelay'); + } + else + { + FirePreHitDelay(); + } + } + //return; + } + + simulated function FirePreHitDelay() + { + local AimData DefaultAim; + local float fPostHitDelay, fTimingError; + + // End:0x29 + if(m_bUsesBurstFire && m_nBurstTotalShots > 0) + { + m_nBurstShotsRemaining--; + } + // End:0x67 + if(s_WhileFiringDeviceMode != none) + { + s_WhileFiringDeviceMode.RemoveEffectType(Instigator, false, 10455); + } + // End:0x74 + if(LogDebugInfo()) + { + } + // End:0x101 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x101 + if((((GetCurrentFire()) != none) && int(GetCurrentFire().m_nFireType) == int(1)) && (GetFiringPreHitDelay()) > 0.0000000) + { + s_ReceivedAim = DefaultAim; + UpdateAimWhileFiring(m_CachedAim); + } + } + FireAmmunition(); + HasAlreadyFiredOnce = true; + // End:0x182 + if(IsTimerActive('FirePostHitDelay') && s_WhileFiringDeviceMode != none) + { + ClearTimer('FirePostHitDelay'); + s_WhileFiringDeviceMode.RemoveEffectType(Instigator, false, 10456); + } + // End:0x1ED + if(m_bCarryPreFireToPostFire || m_bUsesBurstFire && m_nBurstShotsRemaining == m_nBurstTotalShots) + { + fTimingError = WorldInfo.TimeSeconds - m_fFiringTimer; + } + else + { + fTimingError = 0.0000000; + } + fPostHitDelay = GetCachedFiringPostHitDelay(); + m_fFiringTimer = (WorldInfo.TimeSeconds + (fPostHitDelay / CustomTimeDilation)) - fTimingError; + m_fTimeStampAccountedFor = WorldInfo.TimeSeconds; + m_fTimeAccountedFor = 0.0000000; + fPostHitDelay = FMax(0.0000000, fPostHitDelay - (fTimingError * CustomTimeDilation)); + // End:0x2CD + if(LogDebugInfo()) + { + } + // End:0x30B + if(s_WhileFiringDeviceMode != none) + { + s_WhileFiringDeviceMode.ApplyEffectType(Instigator, 10456); + } + // End:0x338 + if(fPostHitDelay > 0.0000000) + { + SetTimer(fPostHitDelay, false, 'FirePostHitDelay'); + } + else + { + FirePostHitDelay(); + } + //return; + } + + simulated function FirePostHitDelay() + { + local AimData Aim; + local TgDeviceFire FireMode; + local TgRepInfo_Game GRI; + local bool bUseLagCompensation; + local AimData DefaultAim; + + // End:0x0D + if(LogDebugInfo()) + { + } + m_fAccumulatedFiringTime += (GetCachedFiringPostHitDelay()); + // End:0x60 + if(s_WhileFiringDeviceMode != none) + { + s_WhileFiringDeviceMode.RemoveEffectType(Instigator, false, 10456); + } + FireMode = GetCurrentFire(); + // End:0xA4 + if(!FireMode.m_bContinuousFire) + { + bPendingFire = false; + } + GRI = TgRepInfo_Game(WorldInfo.GRI); + bUseLagCompensation = ((GRI != none) && GRI.r_bAllowWeaponLagPrediction) && CanAllowLagCompensation(); + // End:0x189 + if(!bUseLagCompensation || Instigator.IsLocallyControlled() && !HasRemoteOwner()) + { + s_ReceivedAim = DefaultAim; + UpdateAimWhileFiring(m_CachedAim); + } + GetCachedAim(Aim); + // End:0x1DD + if(TgPawn(Owner) != none) + { + TgPawn(Owner).DeviceOnPostHit(self); + } + PlayNextSimulatedForceFeedbackWaveform(none, m_ForceFeedbackPostFire); + // End:0x37F + if(ShouldRefire(FireMode, Aim)) + { + // End:0x367 + if(bUseLagCompensation) + { + // End:0x2A6 + if(Instigator.IsLocallyControlled() && !HasRemoteOwner()) + { + UpdateDesiredFireMode(); + // End:0x298 + if(int(Role) < int(ROLE_Authority)) + { + m_CachedFireRequestId = GenerateUniqueFireRequestId(); + CallServerRestartFireLoop(Aim); + } + RestartFireLoop(true); + } + else + { + s_nNumServerRefires++; + // End:0x364 + if(s_QueuedRefireRequests.Length > 0) + { + m_CachedFireRequestId = s_QueuedRefireRequests[0].ClientFireRequestId; + m_nDesiredFireMode = s_QueuedRefireRequests[0].DesiredFireMode; + s_ReceivedAim = s_QueuedRefireRequests[0].Aim; + UpdateAimWhileFiring(m_CachedAim); + s_QueuedRefireRequests.Remove(0, 1); + RestartFireLoop(true); + } + } + } + else + { + UpdateDesiredFireMode(); + RestartFireLoop(true); + } + } + else + { + // End:0x3D3 + if(((int(Role) == int(ROLE_Authority)) && bPendingFire) && FireMode.m_bContinuousFire) + { + InterruptFiring(); + } + else + { + GotoState('Active'); + } + } + SendDeviceChangeEvent(6); + //return; + } + + reliable server function ServerRestartFireLoop(float MovementTimeStamp, Vector MovementInAccel, Vector MovementClientLoc, byte MovementNewFlags, byte MovementClientRoll, int MovementView, int ClientFireRequestId, byte ClientFireMode, Actor HitActor, float StartTraceX, float StartTraceY, float StartTraceZ, float EndTraceX, float EndTraceY, float EndTraceZ, int nCompressedAimVector, bool bFirstBurstShot) + { + local TgRepInfo_Game GRI; + local bool bUseLagCompensation; + local TgQueuedRefire NewEntry; + local AimData ReceivedAim; + local Rotator AimRotation; + local TgPawn OwningPawn; + local TgPlayerController OwningPlayerController; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + bUseLagCompensation = ((GRI != none) && GRI.r_bAllowWeaponLagPrediction) && CanAllowLagCompensation(); + // End:0x8C + if(!bUseLagCompensation) + { + return; + } + // End:0xC6 + if(m_bUsesBurstFire && s_bInBurstRecovery) + { + // End:0xC4 + if(bFirstBurstShot) + { + s_bInBurstRecovery = false; + } + else + { + return; + } + } + OwningPawn = TgPawn(Instigator); + // End:0x122 + if(OwningPawn != none) + { + OwningPlayerController = TgPlayerController(OwningPawn.Controller); + } + // End:0x19B + if((MovementTimeStamp > 0.0000000) && OwningPlayerController != none) + { + OwningPlayerController.ServerMove(MovementTimeStamp, MovementInAccel, MovementClientLoc, MovementNewFlags, MovementClientRoll, MovementView); + } + s_nNumClientRefires++; + ReceivedAim.HitActor = HitActor; + ReceivedAim.StartTrace.X = StartTraceX; + ReceivedAim.StartTrace.Y = StartTraceY; + ReceivedAim.StartTrace.Z = StartTraceZ; + ReceivedAim.EndTrace.X = EndTraceX; + ReceivedAim.EndTrace.Y = EndTraceY; + ReceivedAim.EndTrace.Z = EndTraceZ; + ReceivedAim.ClientMovementTimeStamp = MovementTimeStamp; + AimRotation.Yaw = nCompressedAimVector & 65535; + AimRotation.Pitch = (nCompressedAimVector >> 16) & 65535; + ReceivedAim.AimVector = Vector(AimRotation); + ReceivedAim = ValidateReceivedAim(MovementTimeStamp, ReceivedAim); + // End:0x465 + if(s_nNumClientRefires <= s_nNumServerRefires) + { + m_CachedFireRequestId = ClientFireRequestId; + m_nDesiredFireMode = ClientFireMode; + s_ReceivedAim = ReceivedAim; + UpdateAimWhileFiring(m_CachedAim); + RestartFireLoop(true); + } + else + { + // End:0x483 + if(s_QueuedRefireRequests.Length > 32) + { + s_QueuedRefireRequests.Remove(0, 1); + } + NewEntry.ClientFireRequestId = ClientFireRequestId; + NewEntry.DesiredFireMode = ClientFireMode; + NewEntry.Aim = ReceivedAim; + s_QueuedRefireRequests.AddItem(NewEntry); + } + //return; + } + + simulated function bool ShouldRefire(TgDeviceFire FireMode, const out AimData Aim) + { + local bool bWantsRefire; + local TgObject.EDeviceFailType failType; + + bWantsRefire = ((bPendingFire || s_nNumClientRefires > s_nNumServerRefires) && FireMode.m_bContinuousFire) && CanDeviceFireNow(CurrentFireMode, Aim, LogDebugInfo(), failType); + // End:0x1AC + if(m_bUsesBurstFire && m_nBurstTotalShots > 0) + { + // End:0x153 + if(Instigator.IsLocallyControlled() && !HasRemoteOwner()) + { + // End:0xF8 + if(m_bCanEndBurstEarly && c_bBurstPendingStopFire) + { + return false; + } + else + { + // End:0x10C + if(m_nBurstShotsRemaining > 0) + { + return true; + } + else + { + // End:0x14E + if(bWantsRefire && !c_bBurstPendingStopFire) + { + m_bIsFirstBurstShot = true; + m_nBurstShotsRemaining = m_nBurstTotalShots; + return true; + } + else + { + return false; + } + } + } + } + else + { + // End:0x190 + if((m_nBurstShotsRemaining <= 0) && bWantsRefire) + { + m_bIsFirstBurstShot = true; + m_nBurstShotsRemaining = m_nBurstTotalShots; + } + return bWantsRefire || m_nBurstShotsRemaining > 0; + } + } + return bWantsRefire; + //return ReturnValue; + } + + simulated event bool IsFiring() + { + return true; + //return ReturnValue; + } + + event ForceCooldownIfFiring() + { + HasAlreadyFiredOnce = true; + //return; + } + + simulated function StartFiringLogic() + { + local TgPawn PawnOwner; + local TgDeviceFire FireMode; + + // End:0x0D + if(LogDebugInfo()) + { + } + m_fStartFiringTimestamp = WorldInfo.TimeSeconds; + m_fAccumulatedFiringTime = 0.0000000; + // End:0xC7 + if(m_bUsesBurstFire && m_nBurstTotalShots > 0) + { + // End:0x96 + if(m_bOnlyFirstBurstCostsAmmo || !RequiresAmmoToFire()) + { + m_nBurstShotsRemaining = m_nBurstTotalShots; + } + else + { + m_nBurstShotsRemaining = int(FMin(float(GetCurrentAmmoAmount()), float(m_nBurstTotalShots))); + } + m_bIsFirstBurstShot = true; + } + PawnOwner = TgPawn(Owner); + // End:0x133 + if(PawnOwner != none) + { + // End:0x133 + if(int(Role) == int(ROLE_Authority)) + { + PawnOwner.r_ReplicatedDeviceState[int(r_eEquippedAt)] = 1; + } + } + // End:0x14B + if(m_bLockInputDuringFire) + { + LockInput(true); + } + // End:0x163 + if(m_bLockCameraDuringFire) + { + LockCamera(true); + } + FireMode = GetCurrentFire(); + // End:0x1CD + if(int(Role) == int(ROLE_Authority)) + { + FireMode.ApplyEffectType(Instigator, 263); + s_WhileFiringDeviceMode = FireMode; + } + // End:0x22C + if(ShouldConsumePowerPoolOnStartFire()) + { + c_fCachedManaAtStartFire = ((PawnOwner != none) ? PawnOwner.GetMana() : 0.0000000); + DeviceConsumePowerPool(CurrentFireMode); + } + RestartFireLoop(false); + //return; + } + + simulated function BeginState(name PreviousStateName) + { + HasAlreadyFiredOnce = false; + SetRandomShotSpreadSeed(m_CachedFireRequestId); + // End:0x2C + if(LogDebugInfo()) + { + } + // End:0x90 + if(((GetCurrentFire()) == none) || GetCurrentFire().GetBuildupTime() <= 0.0000000) + { + m_fFiringTimer = WorldInfo.TimeSeconds; + } + StartFiringLogic(); + s_nNumServerRefires = 0; + s_nNumClientRefires = 0; + s_QueuedRefireRequests.Length = 0; + //return; + } + + simulated function StopFiringLogic() + { + local TgPawn PawnOwner; + + // End:0x0D + if(LogDebugInfo()) + { + } + m_nBurstShotsRemaining = 0; + PawnOwner = TgPawn(Owner); + // End:0x84 + if(PawnOwner != none) + { + // End:0x84 + if(int(Role) == int(ROLE_Authority)) + { + PawnOwner.r_ReplicatedDeviceState[int(r_eEquippedAt)] = 0; + } + } + // End:0x9C + if(m_bLockInputDuringFire) + { + LockInput(false); + } + // End:0xB4 + if(m_bLockCameraDuringFire) + { + LockCamera(false); + } + // End:0x171 + if((int(Role) == int(ROLE_Authority)) && s_WhileFiringDeviceMode != none) + { + s_WhileFiringDeviceMode.RemoveEffectType(Instigator, false, 10455, 0); + s_WhileFiringDeviceMode.RemoveEffectType(Instigator, false, 10456, 0); + s_WhileFiringDeviceMode.RemoveEffectType(Instigator, false, 263, 0); + s_WhileFiringDeviceMode = none; + } + // End:0x197 + if(r_bConsumedOnUse && HasAlreadyFiredOnce) + { + ConsumeDevice(); + } + TgPawn(Instigator).FlashStopFire(r_nDeviceInstanceId, int(CurrentFireMode)); + TgPawn(Instigator).DeviceOnStopFire(self, m_IsBeingInterrupted); + SendCombatLogEvent(((m_IsBeingInterrupted) ? 3 : 2)); + PlayNextSimulatedForceFeedbackWaveform(m_ForceFeedbackStartFire, m_ForceFeedbackStopFire); + // End:0x27B + if(c_DeviceForm != none) + { + c_DeviceForm.StopFire(int(CurrentFireMode)); + } + NotifyDeviceEvent(3); + //return; + } + + simulated function EndState(name NextStateName) + { + // End:0x0D + if(LogDebugInfo()) + { + } + StopFiringLogic(); + // End:0x69 + if(ShouldCooldownAfterFire()) + { + ClearTimer('AlternateStartCooldown'); + m_bIgnoreSecondaryFireLogic = false; + m_bIsSecondaryFire = false; + StartCooldown(int(CurrentFireMode)); + } + else + { + // End:0xE2 + if(!m_bIgnoreSecondaryFireLogic) + { + // End:0xC2 + if((r_fCooldownDelay > 0.0000000) && !m_bIsSecondaryFire) + { + m_bIsSecondaryFire = true; + SetTimer(r_fCooldownDelay, false, 'AlternateStartCooldown'); + } + else + { + ClearTimer('AlternateStartCooldown'); + m_bIsSecondaryFire = false; + } + } + } + // End:0x111 + if(m_IsPendingSetFireMode) + { + SetFireMode(int(m_PendingFireMode), true); + m_IsPendingSetFireMode = false; + } + m_EndOfLastFireTimeStamp = WorldInfo.TimeSeconds; + m_fFiringTimer = 0.0000000; + HasAlreadyFiredOnce = false; + ClearTimer('FirePreHitDelay'); + ClearTimer('FirePostHitDelay'); + ClearTimer('CheckQueuedRefires'); + UpdateOutroLockoutTime(); + // End:0x1D3 + if(m_bUsesOutroLockout && m_fOutroLockoutTime > 0.0000000) + { + SetTimer(m_fOutroLockoutTime, false, 'OutroLockoutTime'); + } + // End:0x296 + if(GetCurrentFire().m_bTreatAmmoAsCharges) + { + // End:0x278 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x257 + if(r_nAmmoClipCount <= 0) + { + StartCooldown(int(CurrentFireMode), FMax(m_fMinTimeBetweenAmmoCharges, (1.0000000 / m_fAmmoRegenPerSec) - m_fAmmoRegenCounter)); + } + else + { + StartCooldown(int(CurrentFireMode), m_fMinTimeBetweenAmmoCharges); + } + } + else + { + StartCooldown(int(CurrentFireMode), m_fMinTimeBetweenAmmoCharges); + } + } + //return; + } + + simulated function ChangeFireModeOnRefire() + { + // End:0x14F + if((int(m_nDesiredFireMode) != int(255)) && int(m_nDesiredFireMode) != int(CurrentFireMode)) + { + // End:0xD8 + if(s_WhileFiringDeviceMode != none) + { + s_WhileFiringDeviceMode.RemoveEffectType(Instigator, true, 263, 0); + s_WhileFiringDeviceMode.RemoveEffectType(Instigator, true, 10455, 0); + s_WhileFiringDeviceMode.RemoveEffectType(Instigator, true, 10456, 0); + s_WhileFiringDeviceMode = none; + } + SetFireMode(int(m_nDesiredFireMode), true); + s_WhileFiringDeviceMode = GetCurrentFire(); + // End:0x14F + if((s_WhileFiringDeviceMode != none) && IsFiring()) + { + s_WhileFiringDeviceMode.ApplyEffectType(Instigator, 263); + } + } + //return; + } + stop; +} + +simulated state WeaponEquipping +{ + simulated event bool IsEquipping() + { + return true; + //return ReturnValue; + } + + simulated function WeaponEquipped() + { + GotoState('Active'); + // End:0x1B + if(LogDebugInfo()) + { + } + //return; + } + + simulated function BeginState(name PreviousStateName) + { + AltUse(false); + // End:0x18 + if(LogDebugInfo()) + { + } + // End:0x76 + if(EquipTime > 0.0000000) + { + TgPawn(Instigator).DisplayWeaponSwitchProgressBar(EquipTime); + SetTimer(EquipTime, false, 'WeaponEquipped'); + } + else + { + WeaponEquipped(); + } + //return; + } + + simulated function EndState(name NextStateName) + { + // End:0x0D + if(LogDebugInfo()) + { + } + TgPawn(Instigator).HideWeaponSwitchProgressBar(); + ClearTimer('WeaponEquipped'); + //return; + } + stop; +} + +simulated state WeaponUnequipping +{ + simulated function BeginState(name PreviousStateName) + { + AltUse(false); + super(Object).BeginState(PreviousStateName); + StopFire(); + SetTimer(m_fUnequipTime, false, 'WeaponIsDown'); + //return; + } + + simulated function bool TryUnequipping() + { + return false; + //return ReturnValue; + } + + simulated function bool IsUnEquipping() + { + return true; + //return ReturnValue; + } + + simulated function WeaponIsDown() + { + GotoState('Inactive'); + InvManager.ChangedWeapon(); + //return; + } + + simulated function CancelUnequip() + { + ClearTimer('WeaponIsDown'); + GotoState('WeaponEquipping'); + //return; + } + stop; +} + +simulated state Inactive +{ + ignores StartFire; + + simulated function BeginState(name PreviousStateName) + { + AltUse(false); + super(Object).BeginState(PreviousStateName); + //return; + } + stop; +} + +defaultproperties +{ + m_nDesiredFireMode=255 + m_ReticuleType=EReticuleType.RETICULE_Circle + m_ZoomedReticuleType=EReticuleType.RETICULE_Circle + c_bUsesTargetingReticle=true + m_bHandDevice=true + m_bCarryPreFireToPostFire=true + m_bBuildupShouldInterruptStealth=true + m_bPreFireShouldInterruptStealth=true + m_bFireShouldInterruptStealth=true + m_bPostFireShouldInterruptStealth=true + m_bReloadingShouldInterruptStealth=true + m_bCancelingShouldInterruptStealth=true + m_bStartFireShouldEnterCombat=true + m_bFireShouldEnterCombat=true + m_bShouldUseInstigatorsTimeDilation=true + m_bBurstCanBeInterrupted=true + m_bCanReloadEarly=true + m_bAbilityRequiresInhandResync=true + m_bParentAnimComponentHands=true + m_bUseRangeFalloffCurve=true + m_nSocketIndex=1 + m_CachedFireRequestId=-1 + EquipTime=0.3300000 + m_IndividualOffhandCooldownTime=0.1500000 + r_fCooldownDelay=-1.0000000 + m_fUnequipTime=0.5000000 + m_vMeshViewOffset=(X=0.0000000,Y=0.0000000,Z=-6.0000000) + m_fWeaponBob=0.1600000 + m_fMeshFOV=65.0000000 + m_fAltFireLockOutTime=0.5000000 + m_nLastFiringIDToConsumeAmmo=-1 + m_fEnterCombatDuration=5.0000000 + m_fDeployZForgiveness=70.0000000 + m_fBottomlessPitCheck=16.0000000 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor' + m_AimAssistMagnetScale=(X=0.2000000,Y=0.4000000) + m_AimAssistTrackingScale=(X=1.0000000,Y=1.0000000) + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetVert[1]=(KeyframeName="V100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H200ft",Distance=3200.0000000) + m_AimAssistKeyframesFriction[0]=(KeyframeName="Basic",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_fOutroLockoutTime=0.5000000 + m_fMinTimeBetweenAmmoCharges=0.5000000 + s_fForceReleaseFirHoldFUBARTime=0.5000000 + m_fReticleBloomScale=1.0000000 + RespawnTime=30.0000000 + bOnlyRelevantToOwner=false + s_bThrottleNetRelevancy=true + NetPriority=3.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire.uc b/exported/TgGame/Classes/TgDeviceFire.uc new file mode 100755 index 00000000..de1f114c --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire.uc @@ -0,0 +1,1755 @@ +class TgDeviceFire extends Object + native(Devices); + +const TGTT_ATTACK_NA = 83; +const TGTT_ATTACK_INSTANT_RANGED = 85; +const TGTT_ATTACK_PROJECTILE_RANGED = 177; +const TGTT_ATTACK_TELEPORT_TO_SPAWN = 1442; +const TGTT_ATTACK_GROUND_TARGET = 10032; +const TGTT_ATTACK_GROUND_TARGET_DEPLOYABLE = 10011; +const TGTT_ATTACK_GROUND_TARGET_BOT = 10382; +const TGTT_ATTACK_INSTANT_LINE = 10015; +const TGTT_ATTACK_GROUND_TARGET_PROJECTILE = 10251; +const TGTT_ATTACK_GROUND_TARGET_TELEPORT = 10636; +const TGTT_ATTACK_MAP_TELEPORT = 10657; +const TGTT_ATTACK_ATTACHED_DEPLOYABLE = 10670; +const TGTT_ATTACK_FORWARD_TELEPORT = 15034; +const TGTT_TARGET_SELF = 214; +const TGTT_TARGET_FRIEND = 10184; +const TGTT_TARGET_ENEMY = 212; +const TGTT_TARGET_ALL = 703; +const TGTT_TARGET_OWNPET = 15006; +const TGTT_TARGET_ENEMY_AND_SELF = 10805; +const TGTT_TARGET_FRIEND_ONLY = 884; +const TGTT_TARGET_FRIEND_AND_ENEMY = 10029; +const TGTT_TARGET_NOT_SELF = 10587; +const TGTT_TARGET_PET_OWNER = 15030; +const TGMT_MOVEMENT = 10583; +const TGDT_None = 112; +const TGDT_Physical = 113; +const TGDT_Magical = 10057; +const TGDT_AoE = 15207; +const TGDT_Direct = 15206; +const TGAUF_ALLOW_NONE = 0; +const TGAUF_ALLOW_STUN = 1; +const TGAUF_ALLOW_SILENCE = 2; +const TGAUF_ALLOW_GRAB = 4; +const TGAUF_ALLOW_CRIPPLE = 8; +const TGAUF_ALLOW_ALL = 15; + +enum DeviceTargeterType +{ + TGDTT_None, // 0 + TGDTT_Self, // 1 + TGDTT_Friend, // 2 + TGDTT_Enemy, // 3 + TGDTT_OwnPet, // 4 + TGDTT_Enemy_And_Self, // 5 + TGDTT_Friend_Only, // 6 + TGDTT_Pet_Owner, // 7 + TGDTT_Not_Self, // 8 + TGDTT_All, // 9 + TGDTT_MAX // 10 +}; + +enum HeadShotResult +{ + HEADSHOT_SuccessfulMeshTrace, // 0 + HEADSHOT_FailedMeshTrace, // 1 + HEADSHOT_CannotMeshTrace, // 2 + HEADSHOT_Failure, // 3 + HEADSHOT_MAX // 4 +}; + +enum TargetSelectionType +{ + TGTST_Default, // 0 + TGTST_Random, // 1 + TGTST_Closest, // 2 + TGTST_ClosestAimCenter, // 3 + TGTST_LowestHealthPercent, // 4 + TGTST_MAX // 5 +}; + +struct native WeaponFireResults +{ + var bool bDidServerValidation; + var ImpactInfo Impact; + + structdefaultproperties + { + bDidServerValidation=false + Impact=(HitActor=none,HitLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitNormal=(X=0.0000000,Y=0.0000000,Z=0.0000000),RayDir=(X=0.0000000,Y=0.0000000,Z=0.0000000),StartTrace=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitInfo=(Material=none,PhysMaterial=none,Item=0,LevelIndex=0,BoneName="None",HitComponent=none),PercAbsorbedDamage=0.0000000,DeviceModeReference=none,Projectile=none,bDirectHit=false,nFiringInstance=0,nShotsHit=0) + } +}; + +struct native AoeActorInRangeData +{ + var Actor Actor; + var Vector Location; + + structdefaultproperties + { + Actor=none + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +var Actor m_Owner; +var TgDevice.EWeaponFireType m_nFireType; +var TgObject.DeviceTargetMode m_eTargetingMode; +var TgDeviceFire.DeviceTargeterType m_eTargeterType; +var TgDeviceFire.TargetSelectionType m_eTargetSelectionTypeOverride; +var bool m_bIsAOE; +var bool m_bIsCone; +var bool m_bIsLinear; +var bool m_bContinuousFire; +var bool m_bRequireLOS; +var bool m_bVerifyTargetPlacement; +var bool m_bAllowMultiplePets; +var const bool m_bUseAccurateEncroachment; +var const bool m_bUseTargetingEncroachmentActor; +var const bool m_bScaleEncroachmentWithRangeMod; +var const bool m_bPassThroughShield; +var const bool m_bPassThroughDeployWalls; +var const bool m_bIgnoreDeployablesForBlocking; +var bool m_bAdjustDeployHeightToExtent; +var bool m_bDeployOnOwnerLocation; +var bool m_bSpawnPetOnOwnerLocation; +var bool m_bCanTriggerCounter; +var bool m_bEnchroachmentFireLOSCheck; +var bool m_bTreatAmmoAsCharges; +var bool m_bMaintainBurstTarget; +var bool m_bCanTargetStealthedTargets; +var array s_EffectGroupList; +var array m_Properties; +var native Pointer m_pAmSetup; +var native Pointer m_pFireModeSetup; +var int m_nId; +var int m_nAttackType; +var int m_nMovementType; +var name m_nmOffhandAnimationType; +var int m_nTargetAffectsType; +var int m_nAllowUseWhileFlags; +var int m_nDamageType; +var int m_nArcingJumps; +var native Map_Mirror m_PropertyIndexMap; +var float m_fHealthCost; +var float m_fManaCost; +var float m_fEnergyCost; +var float m_fFireTime; +var float m_fBuildupTime; +var float m_fFirePreHitDelay; +var float m_fFirePostHitDelay; +var int m_nShotsPerFire; +var name m_nmDamageTypeClass; +var Class m_DamageTypeClass; +var int m_nMaxTargetCount; +var float m_fFireLockTime; +var int m_nAmmoClipSize; +var float m_fAmmoClipPreReloadTime; +var float m_fAmmoClipPostReloadTime; +var int m_nAmmoCostPerShot; +var const float m_fEncroachmentRayCastVerticalOffset; +var const int m_nTargetingEncroachmentActorOverride; +var transient Actor m_TargetingEncroachmentActor; +var const Vector m_vActorEncroachmentBaseScale; +var name m_nmWhileFiringCameraAnim; +var float m_CachedRechargeBonusFlat; +var float m_CachedRechargeBonusPercent; +var array m_ModifiedEffects; +var array m_BaseValues; +var array m_ModifiedEGLifetimes; +var array m_BaseLifetimes; +var array m_ModifiedEGAppValues; +var array m_BaseAppValues; +var array m_ModifiedEGMaxStacks; +var array m_BaseMaxStacks; +var array m_CachedTargetList; +var float m_fSelectTargetsExtent; +var TgGameplayCurves m_GameplayCurves; + +// Export UTgDeviceFire::execSpecialShieldDestroyed(FFrame&, void* const) +native function SpecialShieldDestroyed(); + +// Export UTgDeviceFire::execGetProjectileClass(FFrame&, void* const) +native function Class GetProjectileClass(); + +// Export UTgDeviceFire::execInitializeProjectile(FFrame&, void* const) +native function InitializeProjectile(Projectile Proj); + +// Export UTgDeviceFire::execDeployAtActor(FFrame&, void* const) +native function DeployAtActor(Actor TargetActor); + +// Export UTgDeviceFire::execDeployAtLocation(FFrame&, void* const) +native function DeployAtLocation(Vector SpawnLocation, Rotator SpawnRotation); + +// Export UTgDeviceFire::execDeploy(FFrame&, void* const) +native function Deploy(); + +// Export UTgDeviceFire::execGetDeployLocationAndRotation(FFrame&, void* const) +native function bool GetDeployLocationAndRotation(out Vector OutLocation, out Rotator OutRotation); + +// Export UTgDeviceFire::execGetDeployableBase(FFrame&, void* const) +native function Actor GetDeployableBase(); + +// Export UTgDeviceFire::execSpawnPet(FFrame&, void* const) +native function TgPawn SpawnPet(bool bPet); + +// Export UTgDeviceFire::execGetPetLocationAndRotation(FFrame&, void* const) +native function bool GetPetLocationAndRotation(out Vector OutLocation, out Rotator OutRotation, Pointer botSetup); + +// Export UTgDeviceFire::execCustomFire(FFrame&, void* const) +native function CustomFire(); + +// Export UTgDeviceFire::execTeleportFire(FFrame&, void* const) +native simulated function TeleportFire(); + +// Export UTgDeviceFire::execGetProperty(FFrame&, void* const) +native function TgProperty GetProperty(int nPropertyId); + +// Export UTgDeviceFire::execSetProperty(FFrame&, void* const) +native function SetProperty(int nPropertyId, float fNewValue); + +// Export UTgDeviceFire::execGetPropertyValue(FFrame&, void* const) +native function float GetPropertyValue(int nPropertyId); + +// Export UTgDeviceFire::execGetPropertyValueById(FFrame&, void* const) +native function float GetPropertyValueById(int nPropertyId, int nPropertyIndex); + +// Export UTgDeviceFire::execGetEffectGroup(FFrame&, void* const) +native function TgEffectGroup GetEffectGroup(int nType, out int nIndex); + +// Export UTgDeviceFire::execQueryClass(FFrame&, void* const) +native function name QueryClass(int nMode); + +// Export UTgDeviceFire::execIsBlockedByGeometry(FFrame&, void* const) +native function bool IsBlockedByGeometry(Actor SourceActor, Actor TargetActor); + +// Export UTgDeviceFire::execVerifyProjectile(FFrame&, void* const) +native function VerifyProjectile(); + +// Export UTgDeviceFire::execLogDebugInfo(FFrame&, void* const) +native function bool LogDebugInfo(); + +// Export UTgDeviceFire::execGetDamageRadius(FFrame&, void* const) +native function float GetDamageRadius(); + +// Export UTgDeviceFire::execGetAIRange(FFrame&, void* const) +native function float GetAIRange(); + +// Export UTgDeviceFire::execGetAIRadius(FFrame&, void* const) +native function float GetAIRadius(); + +// Export UTgDeviceFire::execGetRemoteActivationTime(FFrame&, void* const) +native function float GetRemoteActivationTime(); + +// Export UTgDeviceFire::execGetPostLandDuration(FFrame&, void* const) +native function float GetPostLandDuration(); + +// Export UTgDeviceFire::execGetEffectiveRadius(FFrame&, void* const) +native function float GetEffectiveRadius(); + +// Export UTgDeviceFire::execGetPersistTime(FFrame&, void* const) +native function float GetPersistTime(); + +// Export UTgDeviceFire::execGetPersistPulse(FFrame&, void* const) +native function float GetPersistPulse(); + +// Export UTgDeviceFire::execGetPetLifeSpan(FFrame&, void* const) +native function float GetPetLifeSpan(); + +// Export UTgDeviceFire::execGetFireAngle(FFrame&, void* const) +native function float GetFireAngle(); + +// Export UTgDeviceFire::execGetDeployTime(FFrame&, void* const) +native function float GetDeployTime(); + +// Export UTgDeviceFire::execGetProjectileSpeed(FFrame&, void* const) +native function float GetProjectileSpeed(); + +// Export UTgDeviceFire::execGetVisionRange(FFrame&, void* const) +native function float GetVisionRange(); + +// Export UTgDeviceFire::execGetProximityDistance(FFrame&, void* const) +native function float GetProximityDistance(); + +// Export UTgDeviceFire::execGetRange(FFrame&, void* const) +native function float GetRange(); + +// Export UTgDeviceFire::execGetMinRange(FFrame&, void* const) +native function float GetMinRange(); + +// Export UTgDeviceFire::execGetEffectiveRange(FFrame&, void* const) +native function float GetEffectiveRange(); + +// Export UTgDeviceFire::execGetMinimumRadius(FFrame&, void* const) +native function float GetMinimumRadius(); + +// Export UTgDeviceFire::execGetMaxDeployableCount(FFrame&, void* const) +native function float GetMaxDeployableCount(); + +// Export UTgDeviceFire::execGetHeadShotDamage(FFrame&, void* const) +native function float GetHeadShotDamage(); + +// Export UTgDeviceFire::execGetBonusShieldDamagePerc(FFrame&, void* const) +native function float GetBonusShieldDamagePerc(); + +// Export UTgDeviceFire::execIsWithinRange(FFrame&, void* const) +native function bool IsWithinRange(float fDistance); + +// Export UTgDeviceFire::execIsWithinEffectiveRange(FFrame&, void* const) +native function bool IsWithinEffectiveRange(float fDistance); + +// Export UTgDeviceFire::execGetCustomValue1(FFrame&, void* const) +native function float GetCustomValue1(); + +// Export UTgDeviceFire::execGetCustomValue2(FFrame&, void* const) +native function float GetCustomValue2(); + +// Export UTgDeviceFire::execGetCustomValue3(FFrame&, void* const) +native function float GetCustomValue3(); + +// Export UTgDeviceFire::execGetCustomValue4(FFrame&, void* const) +native function float GetCustomValue4(); + +// Export UTgDeviceFire::execGetCustomValue5(FFrame&, void* const) +native function float GetCustomValue5(); + +// Export UTgDeviceFire::execCheckTeamPassThrough(FFrame&, void* const) +native function bool CheckTeamPassThrough(Actor HitActor, Vector aimDirection); + +// Export UTgDeviceFire::execIsValidTarget(FFrame&, void* const) +native function bool IsValidTarget(Actor P, optional TgDeviceFire.DeviceTargeterType eTargeterType = 0, optional bool bIgnoreHealth, optional bool bInvertTeam); + +// Export UTgDeviceFire::execIsSelfOrOwner(FFrame&, void* const) +native function bool IsSelfOrOwner(Actor Target); + +// Export UTgDeviceFire::execIsEnemy(FFrame&, void* const) +native function bool IsEnemy(Actor TargetActor); + +// Export UTgDeviceFire::execGetTraceImpact(FFrame&, void* const) +native function ImpactInfo GetTraceImpact(Vector StartTrace, Vector EndTrace, Vector Extent, bool bIgnoreWorld, bool bCheckLockOn, bool bForceNoBodyShotCheck, optional float RewindTime = 0.0000000, const optional out array ImpactsToValidate, optional int nShotIndex); + +// Export UTgDeviceFire::execIsArcingAttack(FFrame&, void* const) +native function bool IsArcingAttack(); + +// Export UTgDeviceFire::execUsesActorEncroachmentForCalcTargetingFire(FFrame&, void* const) +native function bool UsesActorEncroachmentForCalcTargetingFire(); + +// Export UTgDeviceFire::execGetShotPowerCost(FFrame&, void* const) +native function float GetShotPowerCost(int nPacingType); + +// Export UTgDeviceFire::execAddEffectiveRangeReduction(FFrame&, void* const) +native function AddEffectiveRangeReduction(out ImpactInfo Impact, Actor DamageInstigator, Vector OriginLocation, optional bool bUseRadius = false); + +// Export UTgDeviceFire::execGetTargetingMode(FFrame&, void* const) +native function TgObject.DeviceTargetMode GetTargetingMode(); + +// Export UTgDeviceFire::execIsBlockedByBlocker(FFrame&, void* const) +native function Actor IsBlockedByBlocker(Actor DamageInstigator, Actor Target, optional Vector OriginLocation, optional Vector TargetLocation); + +// Export UTgDeviceFire::execIgnoreTargetForBlocking(FFrame&, void* const) +native function bool IgnoreTargetForBlocking(Actor Target); + +// Export UTgDeviceFire::execGetHitLocationFlat(FFrame&, void* const) +native function Vector GetHitLocationFlat(const out Vector StartTrace, const out Vector TargetLocation, const out Vector targetExtent); + +// Export UTgDeviceFire::execGetHitLocationToCenter(FFrame&, void* const) +native function Vector GetHitLocationToCenter(const out Vector StartTrace, const out Vector TargetLocation, const out Vector targetExtent); + +// Export UTgDeviceFire::execShouldAddToImpactList(FFrame&, void* const) +native function bool ShouldAddToImpactList(Actor HitActor, array ImpactList); + +// Export UTgDeviceFire::execIsInSlice(FFrame&, void* const) +native static function bool IsInSlice(const Actor SourceActor, const Actor TargetActor, Vector StartCone, Vector ConeDir, float ConeAngle, optional float ConeRadius); + +// Export UTgDeviceFire::execIsInCone(FFrame&, void* const) +native static function bool IsInCone(Actor SourceActor, Actor TargetActor, Vector StartCone, Vector ConeDir, float ConeAngle); + +// Export UTgDeviceFire::execCheckValidTarget(FFrame&, void* const) +native function bool CheckValidTarget(Actor Target, bool bPredicting); + +// Export UTgDeviceFire::execCalcWeaponModeFire(FFrame&, void* const) +native function WeaponFireResults CalcWeaponModeFire(Actor DamageInstigator, AimData Aim, out array ImpactList, optional bool bPredicting = false, optional bool bNoBodyShotCheck = false, optional float RewindTime = 0.0000000, const optional out array ImpactsToValidate); + +// Export UTgDeviceFire::execCalcConeFire(FFrame&, void* const) +native function ImpactInfo CalcConeFire(Actor DamageInstigator, AimData Aim, out array ImpactList, optional bool bUseRange = false, optional bool bPredicting = false); + +// Export UTgDeviceFire::execCalcSliceFire(FFrame&, void* const) +native function ImpactInfo CalcSliceFire(Actor DamageInstigator, AimData Aim, out array ImpactList, optional bool bUseRange = false, optional bool bPredicting = false); + +// Export UTgDeviceFire::execCalcAoeFire(FFrame&, void* const) +native function ImpactInfo CalcAoeFire(Actor DamageInstigator, AimData Aim, out array ImpactList, optional bool bPredicting = false, optional float RewindTime = 0.0000000); + +// Export UTgDeviceFire::execCalcInstantFire(FFrame&, void* const) +native function WeaponFireResults CalcInstantFire(Actor DamageInstigator, AimData Aim, out array ImpactList, optional bool bPredicting = false, optional bool bNoBodyShotCheck = false, optional float RewindTime = 0.0000000, const optional out array ImpactsToValidate); + +// Export UTgDeviceFire::execCalcArcingFire(FFrame&, void* const) +native function ImpactInfo CalcArcingFire(Actor DamageInstigator, AimData Aim, out array ImpactList, optional bool bPredicting = false); + +// Export UTgDeviceFire::execCalcLinearFire(FFrame&, void* const) +native function ImpactInfo CalcLinearFire(Actor DamageInstigator, AimData Aim, out array ImpactList, optional bool bPredicting = false); + +// Export UTgDeviceFire::execCalcDeployableTargetingFire(FFrame&, void* const) +native function ImpactInfo CalcDeployableTargetingFire(Actor DamageInstigator, AimData Aim, out array ImpactList, int nDeployableId, optional bool bPredicting = false); + +// Export UTgDeviceFire::execCalcChargeTargetingFire(FFrame&, void* const) +native function ImpactInfo CalcChargeTargetingFire(Actor DamageInstigator, AimData Aim, out array ImpactList, optional bool bPredicting = false); + +// Export UTgDeviceFire::execCalcActorEncroachmentTargetingFire(FFrame&, void* const) +native function WeaponFireResults CalcActorEncroachmentTargetingFire(Actor DamageInstigator, AimData Aim, out array ImpactList, optional bool bPredicting = false, optional float RewindTime = 0.0000000, const optional out array ImpactsToValidate); + +// Export UTgDeviceFire::execGetAlternateAOEStartTrace(FFrame&, void* const) +native function Vector GetAlternateAOEStartTrace(Actor DamageInstigator, const out Vector Center, float Radius); + +// Export UTgDeviceFire::execGetCurrentGameplayCurves(FFrame&, void* const) +native function TgGameplayCurves GetCurrentGameplayCurves(); + +simulated event ApplyEquipEffects() +{ + local TgDevice DeviceOwner; + + // End:0x141 + if((int(m_Owner.Role) == int(ROLE_Authority)) && m_Owner.Instigator.IsA('TgPawn')) + { + ApplyEffectType(m_Owner.Instigator, 283); + DeviceOwner = TgDevice(m_Owner); + // End:0x141 + if((DeviceOwner != none) && DeviceOwner.IsActive(false, true)) + { + RemoveEffectType(m_Owner.Instigator, false, 11073); + ApplyEffectType(m_Owner.Instigator, 11073); + } + } + //return; +} + +simulated event RemoveEquipEffects() +{ + local TgPawn Pawn; + local int I; + + // End:0x18F + if((int(m_Owner.Role) == int(ROLE_Authority)) && m_Owner.Instigator.IsA('TgPawn')) + { + RemoveEffectType(m_Owner.Instigator, false, 283); + RemoveEffectType(m_Owner.Instigator, false, 11073); + // End:0x18F + if(int(m_eTargeterType) == int(4)) + { + Pawn = TgPawn(m_Owner.Instigator); + // End:0x18F + if(Pawn != none) + { + I = 0; + J0x120: + + // End:0x18F [Loop If] + if(I < Pawn.c_ActivePets) + { + RemoveHitSpecial(Pawn.s_Pets[I], true); + I++; + // [Loop Continue] + goto J0x120; + } + } + } + } + //return; +} + +event SubmitEffect(ImpactInfo Impact, TgEffectGroup EffectGroup, optional bool bRemove, optional int StackCount = 1, optional Actor InstigatorOverride) +{ + local Actor EffectInstigator; + local TgEffectManager effectManager; + local TgCombatActor combatHitActor; + + // End:0x3C + if((Impact.HitActor == none) || EffectGroup == none) + { + return; + } + // End:0x124 + if(((!Impact.HitActor.IsA('TgPawn') && !Impact.HitActor.IsA('TgDeployable')) && !Impact.HitActor.IsA('TgDestructible')) && !Impact.HitActor.IsA('TgFracturedStaticMeshActor')) + { + return; + } + Impact.DeviceModeReference = self; + // End:0x167 + if(InstigatorOverride != none) + { + EffectInstigator = InstigatorOverride; + } + else + { + // End:0x1B6 + if(m_Owner.Instigator != none) + { + EffectInstigator = m_Owner.Instigator; + } + else + { + EffectInstigator = m_Owner; + } + } + combatHitActor = TgCombatActor(Impact.HitActor); + // End:0x245 + if(NotEqual_InterfaceInterface(combatHitActor, TgCombatActor(none))) + { + effectManager = combatHitActor.GetEffectManager(); + } + else + { + // End:0x2B4 + if(TgDestructible(Impact.HitActor) != none) + { + effectManager = TgDestructible(Impact.HitActor).r_EffectManager; + } + } + // End:0x382 + if(effectManager != none) + { + // End:0x322 + if(bRemove) + { + effectManager.RemoveEffectGroupById(EffectGroup.m_nEffectGroupId, StackCount, EffectInstigator); + } + else + { + ApplyModifyEffects(EffectGroup); + effectManager.ProcessEffect(EffectGroup, EffectInstigator, StackCount, Impact); + RemoveModifyEffects(); + } + } + //return; +} + +function ApplyModifyEffects(TgEffectGroup EffectGroup) +{ + local TgPawn PawnOwner; + local TgDevice devOwner; + local TgDeployable deployOwner; + local TgEffectManager em; + local TgEffectGroup modEffectGroup; + local TgEffectModifyEffect modEffect; + local TgEffectModifyDeployable modDeploy; + local int I, J, K, modIndex; + local float stackMultiplier; + + devOwner = TgDevice(m_Owner); + deployOwner = TgDeployable(m_Owner); + // End:0x1241 + if(((devOwner != none) && devOwner.r_nDeviceId > 0) && devOwner.Owner != none) + { + PawnOwner = TgPawn(devOwner.Owner); + // End:0x123E + if((PawnOwner != none) && PawnOwner.r_EffectManager != none) + { + em = PawnOwner.r_EffectManager; + I = 0; + J0x12C: + + // End:0x123E [Loop If] + if(I < em.s_AppliedEffectGroups.Length) + { + modEffectGroup = em.s_AppliedEffectGroups[I]; + // End:0x1E2 + if((modEffectGroup == none) || float(devOwner.r_nDeviceId) != modEffectGroup.m_fPhysicalPowerScaling) + { + } + else + { + // End:0x250 + if((modEffectGroup.m_fMagicalPowerScaling > float(0)) && modEffectGroup.m_fMagicalPowerScaling != float(EffectGroup.m_nEffectGroupId)) + { + } + else + { + J = 0; + J0x25B: + + // End:0x1230 [Loop If] + if(J < modEffectGroup.m_Effects.Length) + { + modEffect = TgEffectModifyEffect(modEffectGroup.m_Effects[J]); + // End:0x2D5 + if(modEffect == none) + { + } + else + { + // End:0x649 + if(modEffect.m_nPropertyId == 1950) + { + modIndex = m_ModifiedEGLifetimes.Find(EffectGroup); + // End:0x391 + if(modIndex == -1) + { + m_ModifiedEGLifetimes.AddItem(EffectGroup); + m_BaseLifetimes.AddItem(EffectGroup.m_fLifeTime); + modIndex = m_ModifiedEGLifetimes.Find(EffectGroup); + } + // End:0x646 + if(modIndex != -1) + { + // End:0x41C + if(modEffectGroup.m_nNumMaxStacks > 0) + { + stackMultiplier = FClamp(float(modEffectGroup.m_nNumStacks), 1.0000000, float(modEffectGroup.m_nNumMaxStacks)); + } + else + { + stackMultiplier = FMax(float(modEffectGroup.m_nNumStacks), 1.0000000); + } + // End:0x4BE + if(modEffect.m_nCalcMethodCode == 67) + { + EffectGroup.m_fLifeTime += (modEffect.m_fBase * stackMultiplier); + } + else + { + // End:0x52F + if(modEffect.m_nCalcMethodCode == 70) + { + EffectGroup.m_fLifeTime -= (modEffect.m_fBase * stackMultiplier); + } + else + { + // End:0x5BC + if(modEffect.m_nCalcMethodCode == 68) + { + EffectGroup.m_fLifeTime += ((m_BaseLifetimes[modIndex] * (modEffect.m_fBase / 100.0000000)) * stackMultiplier); + } + else + { + // End:0x646 + if(modEffect.m_nCalcMethodCode == 69) + { + EffectGroup.m_fLifeTime -= ((m_BaseLifetimes[modIndex] * (modEffect.m_fBase / 100.0000000)) * stackMultiplier); + } + } + } + } + } + } + else + { + // End:0x9BD + if(modEffect.m_nPropertyId == 1951) + { + modIndex = m_ModifiedEGAppValues.Find(EffectGroup); + // End:0x705 + if(modIndex == -1) + { + m_ModifiedEGAppValues.AddItem(EffectGroup); + m_BaseAppValues.AddItem(EffectGroup.m_fApplicationValue); + modIndex = m_ModifiedEGAppValues.Find(EffectGroup); + } + // End:0x9BA + if(modIndex != -1) + { + // End:0x790 + if(modEffectGroup.m_nNumMaxStacks > 0) + { + stackMultiplier = FClamp(float(modEffectGroup.m_nNumStacks), 1.0000000, float(modEffectGroup.m_nNumMaxStacks)); + } + else + { + stackMultiplier = FMax(float(modEffectGroup.m_nNumStacks), 1.0000000); + } + // End:0x832 + if(modEffect.m_nCalcMethodCode == 67) + { + EffectGroup.m_fApplicationValue += (modEffect.m_fBase * stackMultiplier); + } + else + { + // End:0x8A3 + if(modEffect.m_nCalcMethodCode == 70) + { + EffectGroup.m_fApplicationValue -= (modEffect.m_fBase * stackMultiplier); + } + else + { + // End:0x930 + if(modEffect.m_nCalcMethodCode == 68) + { + EffectGroup.m_fApplicationValue += ((m_BaseAppValues[modIndex] * (modEffect.m_fBase / 100.0000000)) * stackMultiplier); + } + else + { + // End:0x9BA + if(modEffect.m_nCalcMethodCode == 69) + { + EffectGroup.m_fApplicationValue -= ((m_BaseAppValues[modIndex] * (modEffect.m_fBase / 100.0000000)) * stackMultiplier); + } + } + } + } + } + } + else + { + // End:0xD3B + if(modEffect.m_nPropertyId == 1989) + { + modIndex = m_ModifiedEGMaxStacks.Find(EffectGroup); + // End:0xA7B + if(modIndex == -1) + { + m_ModifiedEGMaxStacks.AddItem(EffectGroup); + m_BaseMaxStacks.AddItem(float(EffectGroup.m_nNumMaxStacks)); + modIndex = m_ModifiedEGMaxStacks.Find(EffectGroup); + } + // End:0xD38 + if(modIndex != -1) + { + // End:0xB06 + if(modEffectGroup.m_nNumMaxStacks > 0) + { + stackMultiplier = FClamp(float(modEffectGroup.m_nNumStacks), 1.0000000, float(modEffectGroup.m_nNumMaxStacks)); + } + else + { + stackMultiplier = FMax(float(modEffectGroup.m_nNumStacks), 1.0000000); + } + // End:0xBAA + if(modEffect.m_nCalcMethodCode == 67) + { + EffectGroup.m_nNumMaxStacks += int(modEffect.m_fBase * stackMultiplier); + } + else + { + // End:0xC1D + if(modEffect.m_nCalcMethodCode == 70) + { + EffectGroup.m_nNumMaxStacks -= int(modEffect.m_fBase * stackMultiplier); + } + else + { + // End:0xCAC + if(modEffect.m_nCalcMethodCode == 68) + { + EffectGroup.m_nNumMaxStacks += int((m_BaseMaxStacks[modIndex] * (modEffect.m_fBase / 100.0000000)) * stackMultiplier); + } + else + { + // End:0xD38 + if(modEffect.m_nCalcMethodCode == 69) + { + EffectGroup.m_nNumMaxStacks -= int((m_BaseMaxStacks[modIndex] * (modEffect.m_fBase / 100.0000000)) * stackMultiplier); + } + } + } + } + } + } + else + { + K = 0; + J0xD46: + + // End:0x1222 [Loop If] + if(K < EffectGroup.m_Effects.Length) + { + // End:0x1214 + if(EffectGroup.m_Effects[K].m_nPropertyId == modEffect.m_nPropertyId) + { + modIndex = m_ModifiedEffects.Find(EffectGroup.m_Effects[K]); + // End:0xEE3 + if(modIndex == -1) + { + m_ModifiedEffects.AddItem(EffectGroup.m_Effects[K]); + m_BaseValues.AddItem(EffectGroup.m_Effects[K].m_fBase); + modIndex = m_ModifiedEffects.Find(EffectGroup.m_Effects[K]); + } + // End:0x1214 + if(modIndex != -1) + { + // End:0xF6E + if(modEffectGroup.m_nNumMaxStacks > 0) + { + stackMultiplier = FClamp(float(modEffectGroup.m_nNumStacks), 1.0000000, float(modEffectGroup.m_nNumMaxStacks)); + } + else + { + stackMultiplier = FMax(float(modEffectGroup.m_nNumStacks), 1.0000000); + } + // End:0x102F + if(modEffect.m_nCalcMethodCode == 67) + { + EffectGroup.m_Effects[K].m_fBase += (modEffect.m_fBase * stackMultiplier); + } + else + { + // End:0x10BF + if(modEffect.m_nCalcMethodCode == 70) + { + EffectGroup.m_Effects[K].m_fBase -= (modEffect.m_fBase * stackMultiplier); + } + else + { + // End:0x116B + if(modEffect.m_nCalcMethodCode == 68) + { + EffectGroup.m_Effects[K].m_fBase += ((m_BaseValues[modIndex] * (modEffect.m_fBase / 100.0000000)) * stackMultiplier); + } + else + { + // End:0x1214 + if(modEffect.m_nCalcMethodCode == 69) + { + EffectGroup.m_Effects[K].m_fBase -= ((m_BaseValues[modIndex] * (modEffect.m_fBase / 100.0000000)) * stackMultiplier); + } + } + } + } + } + } + ++K; + // [Loop Continue] + goto J0xD46; + } + } + } + } + } + ++J; + // [Loop Continue] + goto J0x25B; + } + } + } + ++I; + // [Loop Continue] + goto J0x12C; + } + } + } + else + { + // End:0x2447 + if(((deployOwner != none) && deployOwner.r_nDeployableId > 0) && deployOwner.Instigator != none) + { + PawnOwner = TgPawn(deployOwner.Instigator); + // End:0x2447 + if((PawnOwner != none) && PawnOwner.r_EffectManager != none) + { + em = PawnOwner.r_EffectManager; + I = 0; + J0x1335: + + // End:0x2447 [Loop If] + if(I < em.s_AppliedEffectGroups.Length) + { + modEffectGroup = em.s_AppliedEffectGroups[I]; + // End:0x13EB + if((modEffectGroup == none) || float(deployOwner.r_nDeployableId) != modEffectGroup.m_fPhysicalPowerScaling) + { + } + else + { + // End:0x1459 + if((modEffectGroup.m_fMagicalPowerScaling > float(0)) && modEffectGroup.m_fMagicalPowerScaling != float(EffectGroup.m_nEffectGroupId)) + { + } + else + { + J = 0; + J0x1464: + + // End:0x2439 [Loop If] + if(J < modEffectGroup.m_Effects.Length) + { + modDeploy = TgEffectModifyDeployable(modEffectGroup.m_Effects[J]); + // End:0x14DE + if(modDeploy == none) + { + } + else + { + // End:0x1852 + if(modDeploy.m_nPropertyId == 1950) + { + modIndex = m_ModifiedEGLifetimes.Find(EffectGroup); + // End:0x159A + if(modIndex == -1) + { + m_ModifiedEGLifetimes.AddItem(EffectGroup); + m_BaseLifetimes.AddItem(EffectGroup.m_fLifeTime); + modIndex = m_ModifiedEGLifetimes.Find(EffectGroup); + } + // End:0x184F + if(modIndex != -1) + { + // End:0x1625 + if(modEffectGroup.m_nNumMaxStacks > 0) + { + stackMultiplier = FClamp(float(modEffectGroup.m_nNumStacks), 1.0000000, float(modEffectGroup.m_nNumMaxStacks)); + } + else + { + stackMultiplier = FMax(float(modEffectGroup.m_nNumStacks), 1.0000000); + } + // End:0x16C7 + if(modDeploy.m_nCalcMethodCode == 67) + { + EffectGroup.m_fLifeTime += (modDeploy.m_fBase * stackMultiplier); + } + else + { + // End:0x1738 + if(modDeploy.m_nCalcMethodCode == 70) + { + EffectGroup.m_fLifeTime -= (modDeploy.m_fBase * stackMultiplier); + } + else + { + // End:0x17C5 + if(modDeploy.m_nCalcMethodCode == 68) + { + EffectGroup.m_fLifeTime += ((m_BaseLifetimes[modIndex] * (modDeploy.m_fBase / 100.0000000)) * stackMultiplier); + } + else + { + // End:0x184F + if(modDeploy.m_nCalcMethodCode == 69) + { + EffectGroup.m_fLifeTime -= ((m_BaseLifetimes[modIndex] * (modDeploy.m_fBase / 100.0000000)) * stackMultiplier); + } + } + } + } + } + } + else + { + // End:0x1BC6 + if(modDeploy.m_nPropertyId == 1951) + { + modIndex = m_ModifiedEGAppValues.Find(EffectGroup); + // End:0x190E + if(modIndex == -1) + { + m_ModifiedEGAppValues.AddItem(EffectGroup); + m_BaseAppValues.AddItem(EffectGroup.m_fApplicationValue); + modIndex = m_ModifiedEGAppValues.Find(EffectGroup); + } + // End:0x1BC3 + if(modIndex != -1) + { + // End:0x1999 + if(modEffectGroup.m_nNumMaxStacks > 0) + { + stackMultiplier = FClamp(float(modEffectGroup.m_nNumStacks), 1.0000000, float(modEffectGroup.m_nNumMaxStacks)); + } + else + { + stackMultiplier = FMax(float(modEffectGroup.m_nNumStacks), 1.0000000); + } + // End:0x1A3B + if(modDeploy.m_nCalcMethodCode == 67) + { + EffectGroup.m_fApplicationValue += (modDeploy.m_fBase * stackMultiplier); + } + else + { + // End:0x1AAC + if(modDeploy.m_nCalcMethodCode == 70) + { + EffectGroup.m_fApplicationValue -= (modDeploy.m_fBase * stackMultiplier); + } + else + { + // End:0x1B39 + if(modDeploy.m_nCalcMethodCode == 68) + { + EffectGroup.m_fApplicationValue += ((m_BaseAppValues[modIndex] * (modDeploy.m_fBase / 100.0000000)) * stackMultiplier); + } + else + { + // End:0x1BC3 + if(modDeploy.m_nCalcMethodCode == 69) + { + EffectGroup.m_fApplicationValue -= ((m_BaseAppValues[modIndex] * (modDeploy.m_fBase / 100.0000000)) * stackMultiplier); + } + } + } + } + } + } + else + { + // End:0x1F44 + if(modDeploy.m_nPropertyId == 1989) + { + modIndex = m_ModifiedEGMaxStacks.Find(EffectGroup); + // End:0x1C84 + if(modIndex == -1) + { + m_ModifiedEGMaxStacks.AddItem(EffectGroup); + m_BaseMaxStacks.AddItem(float(EffectGroup.m_nNumMaxStacks)); + modIndex = m_ModifiedEGMaxStacks.Find(EffectGroup); + } + // End:0x1F41 + if(modIndex != -1) + { + // End:0x1D0F + if(modEffectGroup.m_nNumMaxStacks > 0) + { + stackMultiplier = FClamp(float(modEffectGroup.m_nNumStacks), 1.0000000, float(modEffectGroup.m_nNumMaxStacks)); + } + else + { + stackMultiplier = FMax(float(modEffectGroup.m_nNumStacks), 1.0000000); + } + // End:0x1DB3 + if(modDeploy.m_nCalcMethodCode == 67) + { + EffectGroup.m_nNumMaxStacks += int(modDeploy.m_fBase * stackMultiplier); + } + else + { + // End:0x1E26 + if(modDeploy.m_nCalcMethodCode == 70) + { + EffectGroup.m_nNumMaxStacks -= int(modDeploy.m_fBase * stackMultiplier); + } + else + { + // End:0x1EB5 + if(modDeploy.m_nCalcMethodCode == 68) + { + EffectGroup.m_nNumMaxStacks += int((m_BaseMaxStacks[modIndex] * (modDeploy.m_fBase / 100.0000000)) * stackMultiplier); + } + else + { + // End:0x1F41 + if(modDeploy.m_nCalcMethodCode == 69) + { + EffectGroup.m_nNumMaxStacks -= int((m_BaseMaxStacks[modIndex] * (modDeploy.m_fBase / 100.0000000)) * stackMultiplier); + } + } + } + } + } + } + else + { + K = 0; + J0x1F4F: + + // End:0x242B [Loop If] + if(K < EffectGroup.m_Effects.Length) + { + // End:0x241D + if(EffectGroup.m_Effects[K].m_nPropertyId == modDeploy.m_nPropertyId) + { + modIndex = m_ModifiedEffects.Find(EffectGroup.m_Effects[K]); + // End:0x20EC + if(modIndex == -1) + { + m_ModifiedEffects.AddItem(EffectGroup.m_Effects[K]); + m_BaseValues.AddItem(EffectGroup.m_Effects[K].m_fBase); + modIndex = m_ModifiedEffects.Find(EffectGroup.m_Effects[K]); + } + // End:0x241D + if(modIndex != -1) + { + // End:0x2177 + if(modEffectGroup.m_nNumMaxStacks > 0) + { + stackMultiplier = FClamp(float(modEffectGroup.m_nNumStacks), 1.0000000, float(modEffectGroup.m_nNumMaxStacks)); + } + else + { + stackMultiplier = FMax(float(modEffectGroup.m_nNumStacks), 1.0000000); + } + // End:0x2238 + if(modDeploy.m_nCalcMethodCode == 67) + { + EffectGroup.m_Effects[K].m_fBase += (modDeploy.m_fBase * stackMultiplier); + } + else + { + // End:0x22C8 + if(modDeploy.m_nCalcMethodCode == 70) + { + EffectGroup.m_Effects[K].m_fBase -= (modDeploy.m_fBase * stackMultiplier); + } + else + { + // End:0x2374 + if(modDeploy.m_nCalcMethodCode == 68) + { + EffectGroup.m_Effects[K].m_fBase += ((m_BaseValues[modIndex] * (modDeploy.m_fBase / 100.0000000)) * stackMultiplier); + } + else + { + // End:0x241D + if(modDeploy.m_nCalcMethodCode == 69) + { + EffectGroup.m_Effects[K].m_fBase -= ((m_BaseValues[modIndex] * (modDeploy.m_fBase / 100.0000000)) * stackMultiplier); + } + } + } + } + } + } + ++K; + // [Loop Continue] + goto J0x1F4F; + } + } + } + } + } + ++J; + // [Loop Continue] + goto J0x1464; + } + } + } + ++I; + // [Loop Continue] + goto J0x1335; + } + } + } + } + //return; +} + +function RemoveModifyEffects() +{ + local int I; + + I = m_ModifiedEffects.Length - 1; + J0x17: + + // End:0xB3 [Loop If] + if(I >= 0) + { + // End:0x7B + if(m_ModifiedEffects[I] != none) + { + m_ModifiedEffects[I].m_fBase = m_BaseValues[I]; + } + m_ModifiedEffects.Remove(I, 1); + m_BaseValues.Remove(I, 1); + --I; + // [Loop Continue] + goto J0x17; + } + I = m_ModifiedEGLifetimes.Length - 1; + J0xCA: + + // End:0x166 [Loop If] + if(I >= 0) + { + // End:0x12E + if(m_ModifiedEGLifetimes[I] != none) + { + m_ModifiedEGLifetimes[I].m_fLifeTime = m_BaseLifetimes[I]; + } + m_ModifiedEGLifetimes.Remove(I, 1); + m_BaseLifetimes.Remove(I, 1); + --I; + // [Loop Continue] + goto J0xCA; + } + I = m_ModifiedEGAppValues.Length - 1; + J0x17D: + + // End:0x219 [Loop If] + if(I >= 0) + { + // End:0x1E1 + if(m_ModifiedEGAppValues[I] != none) + { + m_ModifiedEGAppValues[I].m_fApplicationValue = m_BaseAppValues[I]; + } + m_ModifiedEGAppValues.Remove(I, 1); + m_BaseAppValues.Remove(I, 1); + --I; + // [Loop Continue] + goto J0x17D; + } + I = m_ModifiedEGMaxStacks.Length - 1; + J0x230: + + // End:0x2CE [Loop If] + if(I >= 0) + { + // End:0x296 + if(m_ModifiedEGMaxStacks[I] != none) + { + m_ModifiedEGMaxStacks[I].m_nNumMaxStacks = int(m_BaseAppValues[I]); + } + m_ModifiedEGMaxStacks.Remove(I, 1); + m_BaseMaxStacks.Remove(I, 1); + --I; + // [Loop Continue] + goto J0x230; + } + //return; +} + +simulated function DisplayMessage(string sMessage) +{ + // End:0xD0 + if((m_Owner.Instigator != none) && m_Owner.Instigator.Controller.IsA('PlayerController')) + { + TgPlayerController(m_Owner.Instigator.Controller).ClientMessage(sMessage); + } + //return; +} + +event ApplyEffectType(Actor Target, int nEffectGroupType, optional ImpactInfo Impact, optional int StackCount = 1) +{ + local int nIndex; + local TgEffectGroup theEffectGroup; + + Impact.HitActor = Target; + nIndex = 0; + J0x37: + + // End:0xB6 [Loop If] + if(nIndex >= 0) + { + theEffectGroup = GetEffectGroup(nEffectGroupType, nIndex); + // End:0xA5 + if(theEffectGroup != none) + { + SubmitEffect(Impact, theEffectGroup, false, StackCount); + } + else + { + // [Explicit Break] + goto J0xB6; + } + nIndex++; + // [Loop Continue] + goto J0x37; + } + J0xB6: + + //return; +} + +event RemoveEffectType(Actor Target, bool bForceRemove, int nEffectGroupType, optional int StackCount = 1) +{ + local ImpactInfo Impact; + local int nIndex; + local TgEffectGroup theEffectGroup; + + Impact.HitActor = Target; + nIndex = 0; + J0x36: + + // End:0xE6 [Loop If] + if(nIndex >= 0) + { + theEffectGroup = GetEffectGroup(nEffectGroupType, nIndex); + // End:0xD5 + if(theEffectGroup != none) + { + // End:0xD2 + if(theEffectGroup.m_bIsManaged || bForceRemove) + { + SubmitEffect(Impact, theEffectGroup, true, StackCount); + } + } + else + { + // [Explicit Break] + goto J0xE6; + } + nIndex++; + // [Loop Continue] + goto J0x36; + } + J0xE6: + + //return; +} + +event ApplyHitSpecial(Actor Target, optional ImpactInfo Impact, optional int nHitSpecialSituationalType = 0, optional int StackCount = 1) +{ + local TgPawn HittingPawn; + local TgDeployable Deploy; + local int nIndex; + local TgEffectGroup theEffectGroup; + + Impact.HitActor = Target; + nIndex = 0; + J0x3C: + + // End:0x12F [Loop If] + if(nIndex >= 0) + { + theEffectGroup = GetEffectGroup(10681, nIndex); + // End:0x11E + if(theEffectGroup != none) + { + // End:0x11B + if((theEffectGroup != none) && theEffectGroup.m_nHitSpecialSituationalType == nHitSpecialSituationalType) + { + theEffectGroup.m_fPercAbsorbedDamage = Impact.PercAbsorbedDamage; + SubmitEffect(Impact, theEffectGroup, false, StackCount); + } + } + else + { + // [Explicit Break] + goto J0x12F; + } + nIndex++; + // [Loop Continue] + goto J0x3C; + } + J0x12F: + + nIndex = 0; + J0x13A: + + // End:0x22D [Loop If] + if(nIndex >= 0) + { + theEffectGroup = GetEffectGroup(10036, nIndex); + // End:0x21C + if(theEffectGroup != none) + { + // End:0x219 + if((theEffectGroup != none) && theEffectGroup.m_nHitSpecialSituationalType == nHitSpecialSituationalType) + { + theEffectGroup.m_fPercAbsorbedDamage = Impact.PercAbsorbedDamage; + SubmitEffect(Impact, theEffectGroup, false, StackCount); + } + } + else + { + // [Explicit Break] + goto J0x22D; + } + nIndex++; + // [Loop Continue] + goto J0x13A; + } + J0x22D: + + HittingPawn = TgPawn(m_Owner.Instigator); + // End:0x3D4 + if(HittingPawn != none) + { + // End:0x2CB + if(TgDevice(m_Owner) != none) + { + HittingPawn.DeviceOnHitSpecial(TgDevice(m_Owner), Impact, nHitSpecialSituationalType); + } + else + { + // End:0x3D4 + if(TgDeployable(m_Owner) != none) + { + Deploy = TgDeployable(m_Owner); + // End:0x3D4 + if((Deploy.s_SpawnerDeviceMode != none) && TgDevice(Deploy.s_SpawnerDeviceMode.m_Owner) != none) + { + HittingPawn.DeviceOnHitSpecial(TgDevice(Deploy.s_SpawnerDeviceMode.m_Owner), Impact, nHitSpecialSituationalType); + } + } + } + } + //return; +} + +event RemoveHitSpecial(Actor Target, bool bForceRemove, optional int nHitSpecialSituationalType = 0, optional int StackCount = 1) +{ + local ImpactInfo Impact; + local int nIndex; + local TgEffectGroup theEffectGroup; + + Impact.HitActor = Target; + nIndex = 0; + J0x3B: + + // End:0x113 [Loop If] + if(nIndex >= 0) + { + theEffectGroup = GetEffectGroup(10681, nIndex); + // End:0x102 + if(theEffectGroup != none) + { + // End:0xFF + if(theEffectGroup.m_nHitSpecialSituationalType == nHitSpecialSituationalType) + { + // End:0xFF + if(theEffectGroup.m_bIsManaged || bForceRemove) + { + SubmitEffect(Impact, theEffectGroup, true, StackCount); + } + } + } + else + { + // [Explicit Break] + goto J0x113; + } + nIndex++; + // [Loop Continue] + goto J0x3B; + } + J0x113: + + nIndex = 0; + J0x11E: + + // End:0x1F6 [Loop If] + if(nIndex >= 0) + { + theEffectGroup = GetEffectGroup(10036, nIndex); + // End:0x1E5 + if(theEffectGroup != none) + { + // End:0x1E2 + if(theEffectGroup.m_nHitSpecialSituationalType == nHitSpecialSituationalType) + { + // End:0x1E2 + if(theEffectGroup.m_bIsManaged || bForceRemove) + { + SubmitEffect(Impact, theEffectGroup, true, StackCount); + } + } + } + else + { + // [Explicit Break] + goto J0x1F6; + } + nIndex++; + // [Loop Continue] + goto J0x11E; + } + J0x1F6: + + //return; +} + +function TrackDeviceModeHit(TgPawn Hitter, float fDistance, bool bHitPlayer) +{ + local TgPawn ResponsiblePawn; + local int nDeviceModeID; + + // End:0x75 + if(Hitter.WasPlayerSpawned()) + { + ResponsiblePawn = Hitter.r_Owner; + nDeviceModeID = Hitter.s_nSpawnerDeviceModeId; + } + else + { + // End:0xFC + if((Hitter.Controller != none) && Hitter.Controller.IsA('TgPlayerController')) + { + ResponsiblePawn = Hitter; + nDeviceModeID = m_nId; + } + else + { + return; + } + } + ResponsiblePawn.TrackHit(nDeviceModeID, fDistance, bHitPlayer); + //return; +} + +event bool ApplyHit(ImpactInfo Impact, Actor DamageInstigator) +{ + local bool bHitPlayer; + local TgPawn HittingPawn, TargetPawn; + local KActor TargetKActor; + local InterpActor TargetInterpActor; + local TgDeployable Deploy; + + Impact.DeviceModeReference = self; + TargetKActor = KActor(Impact.HitActor); + // End:0x151 + if(TargetKActor != none) + { + // End:0x14F + if(m_DamageTypeClass != none) + { + TargetKActor.OnWeaponHit(Impact, m_DamageTypeClass.default.KDamageImpulse); + TargetKActor.TakeDamage(1, m_Owner.Instigator.Controller, Impact.HitLocation, Impact.RayDir, m_DamageTypeClass,, DamageInstigator); + } + return true; + } + TargetInterpActor = InterpActor(Impact.HitActor); + // End:0x23E + if(TargetInterpActor != none) + { + // End:0x23C + if(m_DamageTypeClass != none) + { + TargetInterpActor.TakeDamage(1, m_Owner.Instigator.Controller, Impact.HitLocation, Impact.RayDir, m_DamageTypeClass,, DamageInstigator); + } + return true; + } + TargetPawn = TgPawn(Impact.HitActor); + bHitPlayer = ((TargetPawn != none) && TargetPawn.Controller != none) && TargetPawn.Controller.IsA('TgPlayerController'); + HittingPawn = TgPawn(m_Owner.Instigator); + // End:0x3BC + if(DamageInstigator.IsA('TgProjectile') && HittingPawn != none) + { + TrackDeviceModeHit(HittingPawn, VSize(HittingPawn.Location - Impact.HitActor.Location), bHitPlayer); + } + else + { + // End:0x458 + if(DamageInstigator.IsA('TgPawn')) + { + TrackDeviceModeHit(TgPawn(DamageInstigator), VSize(DamageInstigator.Location - Impact.HitActor.Location), bHitPlayer); + } + } + SubmitHitEffects(DamageInstigator, Impact, 264); + // End:0x4D7 + if(m_Owner.Instigator != none) + { + HandleSuccessfulHit(DamageInstigator, m_Owner.Instigator, Impact); + } + // End:0x63B + if(HittingPawn != none) + { + // End:0x53B + if(TgDevice(m_Owner) != none) + { + HittingPawn.DeviceOnHit(TgDevice(m_Owner), Impact); + } + else + { + // End:0x63B + if(TgDeployable(m_Owner) != none) + { + Deploy = TgDeployable(m_Owner); + // End:0x63B + if((Deploy.s_SpawnerDeviceMode != none) && TgDevice(Deploy.s_SpawnerDeviceMode.m_Owner) != none) + { + HittingPawn.DeviceOnHit(TgDevice(Deploy.s_SpawnerDeviceMode.m_Owner), Impact); + } + } + } + } + return true; + //return ReturnValue; +} + +function HandleMiss() +{ + local TgDevice Dev; + local TgPawn_Character TgP; + + Dev = TgDevice(m_Owner); + // End:0x93 + if(Dev != none) + { + TgP = TgPawn_Character(m_Owner.Instigator); + // End:0x93 + if(TgP != none) + { + TgP.DeviceOnMiss(Dev); + } + } + //return; +} + +function HandleSuccessfulHit(Actor DamageInstigator, Pawn OwnerInstigator, ImpactInfo Impact) +{ + local ImpactInfo OwnerImpact; + + OwnerImpact = Impact; + OwnerImpact.HitActor = OwnerInstigator; + OwnerImpact.HitLocation = OwnerInstigator.Location; + SubmitHitEffects(DamageInstigator, OwnerImpact, 759); + //return; +} + +function SubmitHitEffects(Actor DamageInstigator, ImpactInfo Impact, int nType) +{ + local int nIndex; + local TgEffectGroup theEffectGroup; + + nIndex = 0; + J0x0B: + + // End:0xBD [Loop If] + if(nIndex >= 0) + { + theEffectGroup = GetEffectGroup(nType, nIndex); + // End:0xAC + if(theEffectGroup != none) + { + theEffectGroup.m_fPercAbsorbedDamage = Impact.PercAbsorbedDamage; + SubmitEffect(Impact, theEffectGroup); + } + else + { + // [Explicit Break] + goto J0xBD; + } + nIndex++; + // [Loop Continue] + goto J0x0B; + } + J0xBD: + + //return; +} + +event SubmitFinalBlowEffects(Actor DamageInstigator, ImpactInfo Impact) +{ + SubmitHitEffects(DamageInstigator, Impact, 10575); + //return; +} + +simulated event float GetRefireTime() +{ + // End:0x3D + if(m_Owner.IsA('TgDevice')) + { + return (GetPreHitDelay()) + (GetPostHitDelay()); + } + else + { + return m_fFireTime; + } + //return ReturnValue; +} + +simulated event float GetBuildupTime() +{ + return m_fBuildupTime; + //return ReturnValue; +} + +simulated event float GetPreHitDelay() +{ + return m_fFirePreHitDelay; + //return ReturnValue; +} + +simulated event float GetPostHitDelay() +{ + local TgDevice DeviceOwner; + + DeviceOwner = TgDevice(m_Owner); + // End:0x7E + if((DeviceOwner != none) && DeviceOwner.m_bUsesBurstFire) + { + // End:0x7E + if(DeviceOwner.m_nBurstShotsRemaining > 1) + { + return GetCustomValue1(); + } + } + return m_fFirePostHitDelay; + //return ReturnValue; +} + +simulated event float GetFireLockTime() +{ + return m_fFireLockTime; + //return ReturnValue; +} + +simulated event float GetCooldownTime() +{ + local TgPawn P; + local TgDevice D; + local TgAIController_Behavior aic; + local float fCooldownTime; + + fCooldownTime = GetPropertyValue(4); + D = TgDevice(m_Owner); + // End:0x10D + if(D != none) + { + // End:0x10D + if(D.IsOffhand()) + { + P = TgPawn(m_Owner.Instigator); + // End:0x10D + if(P != none) + { + aic = TgAIController_Behavior(P.Controller); + // End:0x10D + if(aic != none) + { + fCooldownTime *= aic.GetCooldownModifier(); + } + } + } + } + return fCooldownTime; + //return ReturnValue; +} + +simulated event float GetMinCooldownTime() +{ + local TgProperty CooldownProp; + + CooldownProp = GetProperty(4); + return ((CooldownProp != none) ? CooldownProp.m_fMinimum : 0.0000000); + //return ReturnValue; +} + +simulated event float GetContagiousRadius() +{ + local float fRadius; + + fRadius = GetPropertyValue(312); + fRadius = fRadius * float(16); + return fRadius; + //return ReturnValue; +} + +simulated event float GetConeAttackAngle() +{ + return Abs(GetPropertyValue(64)); + //return ReturnValue; +} + +simulated event float GetSignedConeAttackAngle() +{ + return GetPropertyValue(64); + //return ReturnValue; +} + +simulated event float GetConeAttackAngleOffset() +{ + return GetPropertyValue(1627); + //return ReturnValue; +} + +event int GetNumArcJumps() +{ + return m_nArcingJumps; + //return ReturnValue; +} + +simulated function bool CanSimulateTeleportFire() +{ + return true; + //return ReturnValue; +} + +defaultproperties +{ + m_bCanTriggerCounter=true + m_bEnchroachmentFireLOSCheck=true + m_bCanTargetStealthedTargets=true + m_nShotsPerFire=1 + m_nAmmoCostPerShot=1 + m_vActorEncroachmentBaseScale=(X=1.0000000,Y=1.0000000,Z=1.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_AstralMark.uc b/exported/TgGame/Classes/TgDeviceFire_AstralMark.uc new file mode 100755 index 00000000..fdfc269b --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_AstralMark.uc @@ -0,0 +1,87 @@ +class TgDeviceFire_AstralMark extends TgDeviceFire + native(ChampAstro); + +var float m_InitialLifetime; +var float m_OverflowTime; +var float m_BaseLifetime; + +// Export UTgDeviceFire_AstralMark::execIgnoreTargetForBlocking(FFrame&, void* const) +native function bool IgnoreTargetForBlocking(Actor Target); + +event bool ApplyHit(ImpactInfo Impact, Actor DamageInstigator) +{ + local TgPawn_Astro pAstro; + local TgPawn pTarget; + local TgEffectManager pEffectManager; + local TgEffectGroup pEffectGroup; + local TgDeviceFire pFireMode; + local float fExistingBuffTime, fNewBuffTime; + local int I; + + pTarget = TgPawn(Impact.HitActor); + pAstro = TgPawn_Astro(DamageInstigator); + // End:0x2F9 + if((pTarget != none) && pAstro != none) + { + pEffectManager = pTarget.GetEffectManager(); + // End:0x2F9 + if(pEffectManager != none) + { + pEffectGroup = pEffectManager.GetEffectGroupByCategory(16627); + // End:0x20D + if(pEffectGroup == none) + { + // End:0x1DD + if(pAstro.HasDeviceCached(0)) + { + I = 0; + J0x10F: + + // End:0x1DD [Loop If] + if(I < s_EffectGroupList.Length) + { + pEffectGroup = s_EffectGroupList[I]; + // End:0x1CF + if(pEffectGroup != none) + { + pFireMode = pAstro.m_AstralCycleCard.GetCurrentFire(); + pEffectGroup.m_fLifeTime = pFireMode.GetCustomValue1(); + } + I++; + // [Loop Continue] + goto J0x10F; + } + } + m_BaseLifetime = s_EffectGroupList[0].GetLifeTime(true); + } + else + { + fExistingBuffTime = pEffectGroup.GetTimeRemaining(); + // End:0x2B3 + if(fExistingBuffTime > float(0)) + { + fNewBuffTime = fExistingBuffTime + m_BaseLifetime; + // End:0x2B3 + if(fNewBuffTime > (m_BaseLifetime * ((GetCustomValue1()) / float(100)))) + { + fNewBuffTime = m_BaseLifetime * ((GetCustomValue1()) / float(100)); + } + } + pEffectGroup.m_fLifeTime = fNewBuffTime; + } + super.ApplyHit(Impact, DamageInstigator); + return true; + } + } + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_bUseTargetingEncroachmentActor=true + m_bScaleEncroachmentWithRangeMod=true + m_bEnchroachmentFireLOSCheck=false + m_nTargetingEncroachmentActorOverride=7075 + m_vActorEncroachmentBaseScale=(X=9.0000000,Y=9.0000000,Z=9.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_BarricadeDome.uc b/exported/TgGame/Classes/TgDeviceFire_BarricadeDome.uc new file mode 100755 index 00000000..4e348350 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_BarricadeDome.uc @@ -0,0 +1,10 @@ +class TgDeviceFire_BarricadeDome extends TgDeviceFire + native(ChampBarik); + +// Export UTgDeviceFire_BarricadeDome::execSpawnPet(FFrame&, void* const) +native function TgPawn SpawnPet(bool bPet); + +defaultproperties +{ + m_bAllowMultiplePets=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_Blink.uc b/exported/TgGame/Classes/TgDeviceFire_Blink.uc new file mode 100755 index 00000000..2dd4e0bb --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Blink.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_Blink extends TgDeviceFire + native(ChampEvie); + +// Export UTgDeviceFire_Blink::execTeleportFire(FFrame&, void* const) +native simulated function TeleportFire(); diff --git a/exported/TgGame/Classes/TgDeviceFire_BonusShieldDamage.uc b/exported/TgGame/Classes/TgDeviceFire_BonusShieldDamage.uc new file mode 100755 index 00000000..34690eaf --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_BonusShieldDamage.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_BonusShieldDamage extends TgDeviceFire + native(Devices); + +// Export UTgDeviceFire_BonusShieldDamage::execGetBonusShieldDamagePerc(FFrame&, void* const) +native function float GetBonusShieldDamagePerc(); diff --git a/exported/TgGame/Classes/TgDeviceFire_Counter.uc b/exported/TgGame/Classes/TgDeviceFire_Counter.uc new file mode 100755 index 00000000..8ff27406 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Counter.uc @@ -0,0 +1,2 @@ +class TgDeviceFire_Counter extends TgDeviceFire + native(ChampDarklord); diff --git a/exported/TgGame/Classes/TgDeviceFire_CounterAttack.uc b/exported/TgGame/Classes/TgDeviceFire_CounterAttack.uc new file mode 100755 index 00000000..02e6c051 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_CounterAttack.uc @@ -0,0 +1,8 @@ +class TgDeviceFire_CounterAttack extends TgDeviceFire + native(ChampDarklord); + +defaultproperties +{ + m_bUseTargetingEncroachmentActor=true + m_nTargetingEncroachmentActorOverride=7588 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_Cylinder.uc b/exported/TgGame/Classes/TgDeviceFire_Cylinder.uc new file mode 100755 index 00000000..5363e570 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Cylinder.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_Cylinder extends TgDeviceFire + native(Devices); + +// Export UTgDeviceFire_Cylinder::execCalcAoeFire(FFrame&, void* const) +native function ImpactInfo CalcAoeFire(Actor DamageInstigator, AimData Aim, out array ImpactList, optional bool bPredicting = false, optional float RewindTime = 0.0000000); diff --git a/exported/TgGame/Classes/TgDeviceFire_DarklordInhandChain1.uc b/exported/TgGame/Classes/TgDeviceFire_DarklordInhandChain1.uc new file mode 100755 index 00000000..40d50554 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_DarklordInhandChain1.uc @@ -0,0 +1 @@ +class TgDeviceFire_DarklordInhandChain1 extends TgDeviceFire; diff --git a/exported/TgGame/Classes/TgDeviceFire_DarklordInhandChain2.uc b/exported/TgGame/Classes/TgDeviceFire_DarklordInhandChain2.uc new file mode 100755 index 00000000..ded0d08e --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_DarklordInhandChain2.uc @@ -0,0 +1 @@ +class TgDeviceFire_DarklordInhandChain2 extends TgDeviceFire; diff --git a/exported/TgGame/Classes/TgDeviceFire_DarklordInhandChain3.uc b/exported/TgGame/Classes/TgDeviceFire_DarklordInhandChain3.uc new file mode 100755 index 00000000..8dd4bc2f --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_DarklordInhandChain3.uc @@ -0,0 +1 @@ +class TgDeviceFire_DarklordInhandChain3 extends TgDeviceFire; diff --git a/exported/TgGame/Classes/TgDeviceFire_DemonTeleport.uc b/exported/TgGame/Classes/TgDeviceFire_DemonTeleport.uc new file mode 100755 index 00000000..dd5d803f --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_DemonTeleport.uc @@ -0,0 +1,7 @@ +class TgDeviceFire_DemonTeleport extends TgDeviceFire + native(ChampDemon); + +defaultproperties +{ + m_bDeployOnOwnerLocation=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_DeployOnLocation.uc b/exported/TgGame/Classes/TgDeviceFire_DeployOnLocation.uc new file mode 100755 index 00000000..7eebdcea --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_DeployOnLocation.uc @@ -0,0 +1,7 @@ +class TgDeviceFire_DeployOnLocation extends TgDeviceFire + native(Devices); + +var Vector m_TargetLocation; + +// Export UTgDeviceFire_DeployOnLocation::execGetDeployLocationAndRotation(FFrame&, void* const) +native function bool GetDeployLocationAndRotation(out Vector OutLocation, out Rotator OutRotation); diff --git a/exported/TgGame/Classes/TgDeviceFire_DeployOnTarget.uc b/exported/TgGame/Classes/TgDeviceFire_DeployOnTarget.uc new file mode 100755 index 00000000..d1aacb07 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_DeployOnTarget.uc @@ -0,0 +1,11 @@ +class TgDeviceFire_DeployOnTarget extends TgDeviceFire + native(Devices); + +var Actor m_TargetHit; +var bool m_bDeployAtFeet; + +// Export UTgDeviceFire_DeployOnTarget::execGetDeployLocationAndRotation(FFrame&, void* const) +native function bool GetDeployLocationAndRotation(out Vector OutLocation, out Rotator OutRotation); + +// Export UTgDeviceFire_DeployOnTarget::execGetDeployableBase(FFrame&, void* const) +native function Actor GetDeployableBase(); diff --git a/exported/TgGame/Classes/TgDeviceFire_DeployablesOnly.uc b/exported/TgGame/Classes/TgDeviceFire_DeployablesOnly.uc new file mode 100755 index 00000000..ec02dfef --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_DeployablesOnly.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_DeployablesOnly extends TgDeviceFire + native(Devices); + +// Export UTgDeviceFire_DeployablesOnly::execIsValidTarget(FFrame&, void* const) +native function bool IsValidTarget(Actor P, optional TgDeviceFire.DeviceTargeterType eTargeterType = 0, optional bool bIgnoreHealth, optional bool bInvertTeam); diff --git a/exported/TgGame/Classes/TgDeviceFire_DimensionalLink.uc b/exported/TgGame/Classes/TgDeviceFire_DimensionalLink.uc new file mode 100755 index 00000000..7986060f --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_DimensionalLink.uc @@ -0,0 +1,11 @@ +class TgDeviceFire_DimensionalLink extends TgDeviceFire + native(ChampYing); + +simulated function bool CanSimulateTeleportFire() +{ + return false; + //return ReturnValue; +} + +// Export UTgDeviceFire_DimensionalLink::execTeleportFire(FFrame&, void* const) +native simulated function TeleportFire(); diff --git a/exported/TgGame/Classes/TgDeviceFire_DrogozInhand.uc b/exported/TgGame/Classes/TgDeviceFire_DrogozInhand.uc new file mode 100755 index 00000000..8f2ee116 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_DrogozInhand.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_DrogozInhand extends TgDeviceFire + native(ChampDrogoz); + +// Export UTgDeviceFire_DrogozInhand::execCheckValidTarget(FFrame&, void* const) +native function bool CheckValidTarget(Actor Target, bool bPredicting); diff --git a/exported/TgGame/Classes/TgDeviceFire_DrogozInhand_Salvo.uc b/exported/TgGame/Classes/TgDeviceFire_DrogozInhand_Salvo.uc new file mode 100755 index 00000000..c3e755f6 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_DrogozInhand_Salvo.uc @@ -0,0 +1,33 @@ +class TgDeviceFire_DrogozInhand_Salvo extends TgDeviceFire_DrogozInhand + native(ChampDrogoz); + +var TgDevice_DrogozInhand m_CachedDrogozInhand; + +// Export UTgDeviceFire_DrogozInhand_Salvo::execGetBonusShieldDamagePerc(FFrame&, void* const) +native function float GetBonusShieldDamagePerc(); + +simulated event float GetPostHitDelay() +{ + // End:0x68 + if(HasCachedDrogozInhand()) + { + // End:0x68 + if((int(m_CachedDrogozInhand.CurrentFireMode) == int(1)) && m_CachedDrogozInhand.GetCurrentAmmoAmount() > 1) + { + return GetCustomValue2(); + } + } + return m_fFirePostHitDelay; + //return ReturnValue; +} + +simulated function bool HasCachedDrogozInhand() +{ + // End:0x2B + if(m_CachedDrogozInhand == none) + { + m_CachedDrogozInhand = TgDevice_DrogozInhand(m_Owner); + } + return m_CachedDrogozInhand != none; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_Emitter.uc b/exported/TgGame/Classes/TgDeviceFire_Emitter.uc new file mode 100755 index 00000000..190ecc85 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Emitter.uc @@ -0,0 +1,71 @@ +class TgDeviceFire_Emitter extends TgDeviceFire; + +event SubmitEffect(ImpactInfo Impact, TgEffectGroup EffectGroup, optional bool bRemove, optional int StackCount = 1, optional Actor InstigatorOverride) +{ + local TgPawn HittingPawn; + local TgDevice_Emitter EmitterDevice; + local array Effects; + local array oldValues; + local int I; + + // End:0x300 + if((EffectGroup != none) && EffectGroup.m_nType == 10036) + { + // End:0x300 + if(((m_Owner != none) && m_Owner.Instigator != none) && Impact.HitActor != none) + { + HittingPawn = TgPawn(m_Owner.Instigator); + // End:0x300 + if(HittingPawn != none) + { + EmitterDevice = TgDevice_Emitter(HittingPawn.GetDeviceByClass(Class'TgGame.TgDevice_Emitter')); + // End:0x300 + if((EmitterDevice != none) && EmitterDevice.m_bHasProjector) + { + I = 0; + J0x152: + + // End:0x300 [Loop If] + if(I < EffectGroup.m_Effects.Length) + { + // End:0x2F2 + if(EffectGroup.m_Effects[I] != none) + { + Effects.AddItem(EffectGroup.m_Effects[I]); + oldValues.AddItem(EffectGroup.m_Effects[I].m_fBase); + // End:0x2F2 + if((EmitterDevice.m_fProjectorPercent > 0.0000000) && m_Owner.Instigator != Impact.HitActor) + { + EffectGroup.m_Effects[I].m_fBase *= EmitterDevice.m_fProjectorPercent; + } + } + ++I; + // [Loop Continue] + goto J0x152; + } + } + } + } + } + super.SubmitEffect(Impact, EffectGroup, bRemove, StackCount); + // End:0x3C6 + if(Effects.Length > 0) + { + I = 0; + J0x34B: + + // End:0x3C6 [Loop If] + if(I < Effects.Length) + { + // End:0x3B8 + if(Effects[I] != none) + { + Effects[I].m_fBase = oldValues[I]; + } + ++I; + // [Loop Continue] + goto J0x34B; + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_EmitterEffect.uc b/exported/TgGame/Classes/TgDeviceFire_EmitterEffect.uc new file mode 100755 index 00000000..114cead6 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_EmitterEffect.uc @@ -0,0 +1,71 @@ +class TgDeviceFire_EmitterEffect extends TgDeviceFire; + +event SubmitEffect(ImpactInfo Impact, TgEffectGroup EffectGroup, optional bool bRemove, optional int StackCount = 1, optional Actor InstigatorOverride) +{ + local TgPawn HittingPawn; + local TgDevice_Emitter EmitterDevice; + local array Effects; + local array oldValues; + local int I; + + // End:0x300 + if((EffectGroup != none) && EffectGroup.m_nType == 10036) + { + // End:0x300 + if(((m_Owner != none) && m_Owner.Instigator != none) && Impact.HitActor != none) + { + HittingPawn = TgPawn(m_Owner.Instigator); + // End:0x300 + if(HittingPawn != none) + { + EmitterDevice = TgDevice_Emitter(HittingPawn.GetDeviceByClass(Class'TgGame.TgDevice_Emitter')); + // End:0x300 + if((EmitterDevice != none) && EmitterDevice.m_bHasProjector) + { + I = 0; + J0x152: + + // End:0x300 [Loop If] + if(I < EffectGroup.m_Effects.Length) + { + // End:0x2F2 + if(EffectGroup.m_Effects[I] != none) + { + Effects.AddItem(EffectGroup.m_Effects[I]); + oldValues.AddItem(EffectGroup.m_Effects[I].m_fBase); + // End:0x2F2 + if((EmitterDevice.m_fProjectorPercent > 0.0000000) && m_Owner.Instigator != Impact.HitActor) + { + EffectGroup.m_Effects[I].m_fBase *= EmitterDevice.m_fProjectorPercent; + } + } + ++I; + // [Loop Continue] + goto J0x152; + } + } + } + } + } + super.SubmitEffect(Impact, EffectGroup, bRemove, StackCount); + // End:0x3C6 + if(Effects.Length > 0) + { + I = 0; + J0x34B: + + // End:0x3C6 [Loop If] + if(I < Effects.Length) + { + // End:0x3B8 + if(Effects[I] != none) + { + Effects[I].m_fBase = oldValues[I]; + } + ++I; + // [Loop Continue] + goto J0x34B; + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_EvieCombo.uc b/exported/TgGame/Classes/TgDeviceFire_EvieCombo.uc new file mode 100755 index 00000000..f7997852 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_EvieCombo.uc @@ -0,0 +1,56 @@ +class TgDeviceFire_EvieCombo extends TgDeviceFire + native(ChampEvie); + +var float m_fLifetimeScale; +var float m_fFrigidFieldMinSlow; + +event SubmitEffect(ImpactInfo Impact, TgEffectGroup EffectGroup, optional bool bRemove, optional int StackCount = 1, optional Actor InstigatorOverride) +{ + local TgEffect SlowEffect; + local float fOldSlow, fNewSlow, fMinSlow; + local int I; + + // End:0x1C6 + if((EffectGroup != none) && EffectGroup.m_nType == 264) + { + I = 0; + J0x4B: + + // End:0x127 [Loop If] + if(I < EffectGroup.m_Effects.Length) + { + // End:0x119 + if(EffectGroup.m_Effects[I].m_nPropertyId == 1231) + { + SlowEffect = EffectGroup.m_Effects[I]; + fOldSlow = SlowEffect.m_fBase; + } + ++I; + // [Loop Continue] + goto J0x4B; + } + // End:0x1C6 + if(SlowEffect != none) + { + fMinSlow = FMax(0.0000000, m_fFrigidFieldMinSlow); + // End:0x1C6 + if(fMinSlow >= 0.0000000) + { + fNewSlow = FMax(0.0000000, (fOldSlow - fMinSlow) * m_fLifetimeScale) + fMinSlow; + SlowEffect.m_fBase = fNewSlow; + } + } + } + super.SubmitEffect(Impact, EffectGroup, bRemove, StackCount); + // End:0x22D + if(SlowEffect != none) + { + SlowEffect.m_fBase = fOldSlow; + } + //return; +} + +defaultproperties +{ + m_fLifetimeScale=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_FernandoInhand.uc b/exported/TgGame/Classes/TgDeviceFire_FernandoInhand.uc new file mode 100755 index 00000000..8c317a7d --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_FernandoInhand.uc @@ -0,0 +1,8 @@ +class TgDeviceFire_FernandoInhand extends TgDeviceFire; + +defaultproperties +{ + m_bUseAccurateEncroachment=true + m_bUseTargetingEncroachmentActor=true + m_nTargetingEncroachmentActorOverride=5495 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_FlakInHand.uc b/exported/TgGame/Classes/TgDeviceFire_FlakInHand.uc new file mode 100755 index 00000000..4068a45c --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_FlakInHand.uc @@ -0,0 +1,53 @@ +class TgDeviceFire_FlakInHand extends TgDeviceFire + native(ChampFlak); + +var int m_BaseKnockback; + +// Export UTgDeviceFire_FlakInHand::execAddEffectiveRangeReduction(FFrame&, void* const) +native function AddEffectiveRangeReduction(out ImpactInfo Impact, Actor DamageInstigator, Vector OriginLocation, optional bool bUseRadius = false); + +event bool ApplyHit(ImpactInfo Impact, Actor DamageInstigator) +{ + local TgEffect Effect; + local float Range, hitDistance, pctKnockback; + local int I; + + I = 0; + J0x0B: + + // End:0x1AD [Loop If] + if(I < s_EffectGroupList.Length) + { + Effect = s_EffectGroupList[I].m_Effects[0]; + // End:0x19F + if(Effect != none) + { + // End:0x19F + if(Effect.m_nPropertyId == 1507) + { + Range = GetRange(); + hitDistance = VSizeSq(Impact.HitActor.Location - DamageInstigator.Location); + // End:0x19F + if(hitDistance <= (Range * Range)) + { + m_GameplayCurves.GetPrimaryDistributionValueByType(20, hitDistance / (Range * Range), pctKnockback); + Effect.m_fBase = pctKnockback * float(m_BaseKnockback); + } + } + } + I++; + // [Loop Continue] + goto J0x0B; + } + return super.ApplyHit(Impact, DamageInstigator); + //return ReturnValue; +} + +defaultproperties +{ + m_bUseAccurateEncroachment=true + m_bUseTargetingEncroachmentActor=true + m_nTargetingEncroachmentActorOverride=7948 + m_vActorEncroachmentBaseScale=(X=13.5000000,Y=30.0000000,Z=20.0000000) + m_GameplayCurves=TgGameplayCurves'GP_Flak.DeviceInhand' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_FlameTurret.uc b/exported/TgGame/Classes/TgDeviceFire_FlameTurret.uc new file mode 100755 index 00000000..bb40e675 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_FlameTurret.uc @@ -0,0 +1,8 @@ +class TgDeviceFire_FlameTurret extends TgDeviceFire; + +defaultproperties +{ + m_bUseTargetingEncroachmentActor=true + m_bScaleEncroachmentWithRangeMod=true + m_nTargetingEncroachmentActorOverride=5498 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_GauntletInhand.uc b/exported/TgGame/Classes/TgDeviceFire_GauntletInhand.uc new file mode 100755 index 00000000..a4c7beff --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_GauntletInhand.uc @@ -0,0 +1,17 @@ +class TgDeviceFire_GauntletInhand extends TgDeviceFire + native(ChampGauntlet); + +var TgPawn_Gauntlet m_CachedGauntlet; +var const float m_fLockOnScale; + +// Export UTgDeviceFire_GauntletInhand::execIsValidTarget(FFrame&, void* const) +native function bool IsValidTarget(Actor P, optional TgDeviceFire.DeviceTargeterType eTargeterType = 0, optional bool bIgnoreHealth, optional bool bInvertTeam); + +defaultproperties +{ + m_fLockOnScale=1.1000000 + m_bUseAccurateEncroachment=true + m_bUseTargetingEncroachmentActor=true + m_nTargetingEncroachmentActorOverride=7073 + m_vActorEncroachmentBaseScale=(X=16.0000000,Y=16.0000000,Z=16.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_GeometryInara.uc b/exported/TgGame/Classes/TgDeviceFire_GeometryInara.uc new file mode 100755 index 00000000..0dbcebd5 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_GeometryInara.uc @@ -0,0 +1,48 @@ +class TgDeviceFire_GeometryInara extends TgDeviceFire; + +simulated event float GetCooldownTime() +{ + local TgDevice_GeometryBarrierTank Dev; + local float fCooldown, fHealthPercent; + + fCooldown = super.GetCooldownTime(); + Dev = TgDevice_GeometryBarrierTank(m_Owner); + // End:0x153 + if((Dev != none) && Dev.r_fTremorsCooldownReduction > 0.0000000) + { + // End:0xCE + if(Dev.r_Deployable != none) + { + fHealthPercent = Dev.r_Deployable.GetHealthPercent(); + } + else + { + fHealthPercent = Dev.m_fCachedWallHealthPercent; + } + // End:0x153 + if(fHealthPercent > 0.0000000) + { + fCooldown *= (1.0000000 - Dev.r_fTremorsCooldownReduction); + fCooldown = FMax(fCooldown, 0.0000000); + } + } + return fCooldown; + //return ReturnValue; +} + +simulated event float GetMinCooldownTime() +{ + local TgDevice_GeometryBarrierTank Dev; + local float fMinCooldown, fActualCooldown; + + fMinCooldown = super.GetMinCooldownTime(); + Dev = TgDevice_GeometryBarrierTank(m_Owner); + // End:0x9B + if((Dev != none) && Dev.r_fTremorsCooldownReduction > 0.0000000) + { + fActualCooldown = GetCooldownTime(); + fMinCooldown = FMin(fMinCooldown, fActualCooldown); + } + return fMinCooldown; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_GrohkInhand.uc b/exported/TgGame/Classes/TgDeviceFire_GrohkInhand.uc new file mode 100755 index 00000000..ab7ffe3c --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_GrohkInhand.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_GrohkInhand extends TgDeviceFire + native(ChampGrohk); + +// Export UTgDeviceFire_GrohkInhand::execIsArcingAttack(FFrame&, void* const) +native function bool IsArcingAttack(); diff --git a/exported/TgGame/Classes/TgDeviceFire_GroverInhandAxe.uc b/exported/TgGame/Classes/TgDeviceFire_GroverInhandAxe.uc new file mode 100755 index 00000000..65009e48 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_GroverInhandAxe.uc @@ -0,0 +1,7 @@ +class TgDeviceFire_GroverInhandAxe extends TgDeviceFire; + +defaultproperties +{ + m_bUseTargetingEncroachmentActor=true + m_nTargetingEncroachmentActorOverride=5596 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_HeatHaze.uc b/exported/TgGame/Classes/TgDeviceFire_HeatHaze.uc new file mode 100755 index 00000000..6fd71ec5 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_HeatHaze.uc @@ -0,0 +1,8 @@ +class TgDeviceFire_HeatHaze extends TgDeviceFire; + +defaultproperties +{ + m_bAllowMultiplePets=true + m_bAdjustDeployHeightToExtent=true + m_bDeployOnOwnerLocation=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_HeroicLeap.uc b/exported/TgGame/Classes/TgDeviceFire_HeroicLeap.uc new file mode 100755 index 00000000..7529b0a3 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_HeroicLeap.uc @@ -0,0 +1,10 @@ +class TgDeviceFire_HeroicLeap extends TgDeviceFire + native(ChampBuck); + +// Export UTgDeviceFire_HeroicLeap::execIgnoreTargetForBlocking(FFrame&, void* const) +native function bool IgnoreTargetForBlocking(Actor Target); + +defaultproperties +{ + m_bIgnoreDeployablesForBlocking=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_HuntersMark.uc b/exported/TgGame/Classes/TgDeviceFire_HuntersMark.uc new file mode 100755 index 00000000..12c8d201 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_HuntersMark.uc @@ -0,0 +1,6 @@ +class TgDeviceFire_HuntersMark extends TgDeviceFire_IgnoreDeployablesCannotCounter; + +defaultproperties +{ + m_bCanTargetStealthedTargets=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_HyperBeam.uc b/exported/TgGame/Classes/TgDeviceFire_HyperBeam.uc new file mode 100755 index 00000000..c1e248b7 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_HyperBeam.uc @@ -0,0 +1,12 @@ +class TgDeviceFire_HyperBeam extends TgDeviceFire_WorldLOSOnly + native(ChampGauntlet); + +// Export UTgDeviceFire_HyperBeam::execCalcActorEncroachmentTargetingFire(FFrame&, void* const) +native function WeaponFireResults CalcActorEncroachmentTargetingFire(Actor DamageInstigator, AimData Aim, out array ImpactList, optional bool bPredicting = false, optional float RewindTime = 0.0000000, const optional out array ImpactsToValidate); + +defaultproperties +{ + m_bUseTargetingEncroachmentActor=true + m_nTargetingEncroachmentActorOverride=6824 + m_vActorEncroachmentBaseScale=(X=35.0000000,Y=1.0000000,Z=1.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_IgnoreCounter.uc b/exported/TgGame/Classes/TgDeviceFire_IgnoreCounter.uc new file mode 100755 index 00000000..b8d7d4a7 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_IgnoreCounter.uc @@ -0,0 +1,7 @@ +class TgDeviceFire_IgnoreCounter extends TgDeviceFire + native(Devices); + +defaultproperties +{ + m_bCanTriggerCounter=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_IgnoreDeployableForBlocking.uc b/exported/TgGame/Classes/TgDeviceFire_IgnoreDeployableForBlocking.uc new file mode 100755 index 00000000..ad43c8f4 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_IgnoreDeployableForBlocking.uc @@ -0,0 +1,6 @@ +class TgDeviceFire_IgnoreDeployableForBlocking extends TgDeviceFire; + +defaultproperties +{ + m_bIgnoreDeployablesForBlocking=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_IgnoreDeployablesCannotCounter.uc b/exported/TgGame/Classes/TgDeviceFire_IgnoreDeployablesCannotCounter.uc new file mode 100755 index 00000000..1125e002 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_IgnoreDeployablesCannotCounter.uc @@ -0,0 +1,6 @@ +class TgDeviceFire_IgnoreDeployablesCannotCounter extends TgDeviceFire_IgnoreDeployableForBlocking; + +defaultproperties +{ + m_bCanTriggerCounter=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_IgnorePets.uc b/exported/TgGame/Classes/TgDeviceFire_IgnorePets.uc new file mode 100755 index 00000000..c2f3abd7 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_IgnorePets.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_IgnorePets extends TgDeviceFire + native(Devices); + +// Export UTgDeviceFire_IgnorePets::execIsValidTarget(FFrame&, void* const) +native function bool IsValidTarget(Actor P, optional TgDeviceFire.DeviceTargeterType eTargeterType = 0, optional bool bIgnoreHealth, optional bool bInvertTeam); diff --git a/exported/TgGame/Classes/TgDeviceFire_IgnoreReversal.uc b/exported/TgGame/Classes/TgDeviceFire_IgnoreReversal.uc new file mode 100755 index 00000000..7054cd2c --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_IgnoreReversal.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_IgnoreReversal extends TgDeviceFire + native(Devices); + +// Export UTgDeviceFire_IgnoreReversal::execIgnoreTargetForBlocking(FFrame&, void* const) +native function bool IgnoreTargetForBlocking(Actor Target); diff --git a/exported/TgGame/Classes/TgDeviceFire_Illusion.uc b/exported/TgGame/Classes/TgDeviceFire_Illusion.uc new file mode 100755 index 00000000..a06f1b7d --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Illusion.uc @@ -0,0 +1,10 @@ +class TgDeviceFire_Illusion extends TgDeviceFire + native(ChampYing); + +// Export UTgDeviceFire_Illusion::execCustomFire(FFrame&, void* const) +native function CustomFire(); + +defaultproperties +{ + m_bAllowMultiplePets=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_IllusoryRift.uc b/exported/TgGame/Classes/TgDeviceFire_IllusoryRift.uc new file mode 100755 index 00000000..743e044c --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_IllusoryRift.uc @@ -0,0 +1,10 @@ +class TgDeviceFire_IllusoryRift extends TgDeviceFire + native(ChampYing); + +// Export UTgDeviceFire_IllusoryRift::execCustomFire(FFrame&, void* const) +native function CustomFire(); + +defaultproperties +{ + m_bAllowMultiplePets=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_KinessaInhand.uc b/exported/TgGame/Classes/TgDeviceFire_KinessaInhand.uc new file mode 100755 index 00000000..e1f3d704 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_KinessaInhand.uc @@ -0,0 +1,53 @@ +class TgDeviceFire_KinessaInhand extends TgDeviceFire; + +event SubmitEffect(ImpactInfo Impact, TgEffectGroup EffectGroup, optional bool bRemove, optional int StackCount = 1, optional Actor InstigatorOverride) +{ + local TgPawn_Kinessa Kinessa; + local TgEffectDamage DamageEffect; + local int oldDamage, I; + local float chargePercent, maxBonusDamage; + + // End:0x1F3 + if(((m_Owner != none) && EffectGroup != none) && EffectGroup.m_nType == 264) + { + I = 0; + J0x5C: + + // End:0x10B [Loop If] + if(I < EffectGroup.m_Effects.Length) + { + DamageEffect = TgEffectDamage(EffectGroup.m_Effects[I]); + // End:0xFD + if(DamageEffect != none) + { + oldDamage = int(DamageEffect.m_fBase); + } + ++I; + // [Loop Continue] + goto J0x5C; + } + // End:0x1F3 + if(DamageEffect != none) + { + Kinessa = TgPawn_Kinessa(m_Owner.Instigator); + // End:0x1F3 + if(Kinessa != none) + { + maxBonusDamage = GetCustomValue2(); + chargePercent = Kinessa.GetZoomChargePercentage(); + // End:0x1F3 + if((maxBonusDamage > 0.0000000) && chargePercent > 0.0000000) + { + DamageEffect.m_fBase += (chargePercent * maxBonusDamage); + } + } + } + } + super.SubmitEffect(Impact, EffectGroup, bRemove, StackCount); + // End:0x25C + if(DamageEffect != none) + { + DamageEffect.m_fBase = float(oldDamage); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_LazarusInhand.uc b/exported/TgGame/Classes/TgDeviceFire_LazarusInhand.uc new file mode 100755 index 00000000..ae7e064a --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_LazarusInhand.uc @@ -0,0 +1,13 @@ +class TgDeviceFire_LazarusInhand extends TgDeviceFire + native(ChampLazarus); + +// Export UTgDeviceFire_LazarusInhand::execIgnoreTargetForBlocking(FFrame&, void* const) +native function bool IgnoreTargetForBlocking(Actor Target); + +defaultproperties +{ + m_bUseTargetingEncroachmentActor=true + m_bScaleEncroachmentWithRangeMod=true + m_nTargetingEncroachmentActorOverride=7075 + m_vActorEncroachmentBaseScale=(X=1.0000000,Y=1.5000000,Z=1.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_Lockdown.uc b/exported/TgGame/Classes/TgDeviceFire_Lockdown.uc new file mode 100755 index 00000000..df5cd0ac --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Lockdown.uc @@ -0,0 +1,10 @@ +class TgDeviceFire_Lockdown extends TgDeviceFire + native(ChampBarik); + +// Export UTgDeviceFire_Lockdown::execSpawnPet(FFrame&, void* const) +native function TgPawn SpawnPet(bool bPet); + +defaultproperties +{ + m_bAllowMultiplePets=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_Midnight.uc b/exported/TgGame/Classes/TgDeviceFire_Midnight.uc new file mode 100755 index 00000000..12d73339 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Midnight.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_Midnight extends TgDeviceFire + native(ChampBlades); + +// Export UTgDeviceFire_Midnight::execCustomFire(FFrame&, void* const) +native function CustomFire(); diff --git a/exported/TgGame/Classes/TgDeviceFire_MidnightSub.uc b/exported/TgGame/Classes/TgDeviceFire_MidnightSub.uc new file mode 100755 index 00000000..4159d161 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_MidnightSub.uc @@ -0,0 +1,8 @@ +class TgDeviceFire_MidnightSub extends TgDeviceFire + native(ChampBlades); + +// Export UTgDeviceFire_MidnightSub::execGetDamageRadius(FFrame&, void* const) +native function float GetDamageRadius(); + +// Export UTgDeviceFire_MidnightSub::execGetFadeInPerc(FFrame&, void* const) +native function float GetFadeInPerc(); diff --git a/exported/TgGame/Classes/TgDeviceFire_MirrorDamageToHeal.uc b/exported/TgGame/Classes/TgDeviceFire_MirrorDamageToHeal.uc new file mode 100755 index 00000000..2fe0df8c --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_MirrorDamageToHeal.uc @@ -0,0 +1,47 @@ +class TgDeviceFire_MirrorDamageToHeal extends TgDeviceFire + native(Devices); + +var float m_fHealAmount; + +event SubmitEffect(ImpactInfo Impact, TgEffectGroup EffectGroup, optional bool bRemove, optional int StackCount = 1, optional Actor InstigatorOverride) +{ + local TgEffectHeal HealEffect; + local int oldHeal, I; + + // End:0x15A + if((((m_fHealAmount > 0.0000000) && m_Owner != none) && EffectGroup != none) && EffectGroup.m_nType == 264) + { + I = 0; + J0x71: + + // End:0x123 [Loop If] + if(I < EffectGroup.m_Effects.Length) + { + HealEffect = TgEffectHeal(EffectGroup.m_Effects[I]); + // End:0x115 + if(HealEffect != none) + { + oldHeal = int(HealEffect.m_fBase); + // [Explicit Break] + goto J0x123; + } + ++I; + // [Loop Continue] + goto J0x71; + } + J0x123: + + // End:0x15A + if(HealEffect != none) + { + HealEffect.m_fBase = m_fHealAmount; + } + } + super.SubmitEffect(Impact, EffectGroup, bRemove, StackCount); + // End:0x1C3 + if(HealEffect != none) + { + HealEffect.m_fBase = float(oldHeal); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_MirrorDamageToHealBlock.uc b/exported/TgGame/Classes/TgDeviceFire_MirrorDamageToHealBlock.uc new file mode 100755 index 00000000..5bac6d5f --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_MirrorDamageToHealBlock.uc @@ -0,0 +1,47 @@ +class TgDeviceFire_MirrorDamageToHealBlock extends TgDeviceFire + native(Devices); + +var float m_fHealBlockAmount; + +event SubmitEffect(ImpactInfo Impact, TgEffectGroup EffectGroup, optional bool bRemove, optional int StackCount = 1, optional Actor InstigatorOverride) +{ + local TgEffect HealBlockEffect; + local int oldHealBlock, I; + + // End:0x189 + if((((m_fHealBlockAmount > 0.0000000) && m_Owner != none) && EffectGroup != none) && EffectGroup.m_nType == 264) + { + I = 0; + J0x71: + + // End:0x152 [Loop If] + if(I < EffectGroup.m_Effects.Length) + { + // End:0x144 + if(EffectGroup.m_Effects[I].m_nPropertyId == 1877) + { + HealBlockEffect = EffectGroup.m_Effects[I]; + oldHealBlock = int(HealBlockEffect.m_fBase); + // [Explicit Break] + goto J0x152; + } + ++I; + // [Loop Continue] + goto J0x71; + } + J0x152: + + // End:0x189 + if(HealBlockEffect != none) + { + HealBlockEffect.m_fBase = m_fHealBlockAmount; + } + } + super.SubmitEffect(Impact, EffectGroup, bRemove, StackCount); + // End:0x1F2 + if(HealBlockEffect != none) + { + HealBlockEffect.m_fBase = float(oldHealBlock); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_Mount.uc b/exported/TgGame/Classes/TgDeviceFire_Mount.uc new file mode 100755 index 00000000..42886a3f --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Mount.uc @@ -0,0 +1,12 @@ +class TgDeviceFire_Mount extends TgDeviceFire; + +simulated event float GetPreHitDelay() +{ + // End:0x7E + if((m_Owner != none) && TgPawn(m_Owner.Instigator) != none) + { + return TgPawn(m_Owner.Instigator).GetPropCurrentValue(13); + } + return super.GetPreHitDelay(); + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_OppressorMine.uc b/exported/TgGame/Classes/TgDeviceFire_OppressorMine.uc new file mode 100755 index 00000000..59640a9a --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_OppressorMine.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_OppressorMine extends TgDeviceFire + native(ChampKinessa); + +// Export UTgDeviceFire_OppressorMine::execIgnoreTargetForBlocking(FFrame&, void* const) +native function bool IgnoreTargetForBlocking(Actor Target); diff --git a/exported/TgGame/Classes/TgDeviceFire_OracleInhand.uc b/exported/TgGame/Classes/TgDeviceFire_OracleInhand.uc new file mode 100755 index 00000000..2a1ad2c3 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_OracleInhand.uc @@ -0,0 +1,18 @@ +class TgDeviceFire_OracleInhand extends TgDeviceFire + native(ChampOracle); + +event bool ApplyHit(ImpactInfo Impact, Actor DamageInstigator) +{ + // End:0x74 + if(super.ApplyHit(Impact, DamageInstigator)) + { + // End:0x72 + if(Impact.HitActor != none) + { + ApplyHitSpecial(Impact.HitActor, Impact); + } + return true; + } + return false; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_PetsOnly.uc b/exported/TgGame/Classes/TgDeviceFire_PetsOnly.uc new file mode 100755 index 00000000..2a399e85 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_PetsOnly.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_PetsOnly extends TgDeviceFire + native(Devices); + +// Export UTgDeviceFire_PetsOnly::execIsValidTarget(FFrame&, void* const) +native function bool IsValidTarget(Actor P, optional TgDeviceFire.DeviceTargeterType eTargeterType = 0, optional bool bIgnoreHealth, optional bool bInvertTeam); diff --git a/exported/TgGame/Classes/TgDeviceFire_PoppyBomb.uc b/exported/TgGame/Classes/TgDeviceFire_PoppyBomb.uc new file mode 100755 index 00000000..bb8ad7f7 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_PoppyBomb.uc @@ -0,0 +1,51 @@ +class TgDeviceFire_PoppyBomb extends TgDeviceFire; + +event SubmitEffect(ImpactInfo Impact, TgEffectGroup EffectGroup, optional bool bRemove, optional int StackCount = 1, optional Actor InstigatorOverride) +{ + local TgEffect KnockupEffect; + local float oldKnockup; + local int I; + local TgPawn_BombKing BombKing; + + // End:0x21B + if((((m_Owner != none) && m_Owner.Instigator != none) && EffectGroup != none) && EffectGroup.m_nType == 264) + { + I = 0; + J0x82: + + // End:0x15E [Loop If] + if(I < EffectGroup.m_Effects.Length) + { + // End:0x150 + if(EffectGroup.m_Effects[I].m_nPropertyId == 1507) + { + KnockupEffect = EffectGroup.m_Effects[I]; + oldKnockup = KnockupEffect.m_fBase; + } + ++I; + // [Loop Continue] + goto J0x82; + } + // End:0x21B + if(KnockupEffect != none) + { + BombKing = TgPawn_BombKing(m_Owner.Instigator); + // End:0x21B + if(BombKing != none) + { + // End:0x21B + if(EffectGroup.m_nTargetType != 214) + { + KnockupEffect.m_fBase += (oldKnockup * BombKing.r_fJoltKnockback); + } + } + } + } + super.SubmitEffect(Impact, EffectGroup, bRemove, StackCount); + // End:0x282 + if(KnockupEffect != none) + { + KnockupEffect.m_fBase = oldKnockup; + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_PrincessF.uc b/exported/TgGame/Classes/TgDeviceFire_PrincessF.uc new file mode 100755 index 00000000..330a2535 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_PrincessF.uc @@ -0,0 +1,10 @@ +class TgDeviceFire_PrincessF extends TgDeviceFire + native(ChampPrincess); + +const TG_ALACRITY_DEVICE_ID = 18816; + +defaultproperties +{ + m_bCanTargetStealthedTargets=false + m_fSelectTargetsExtent=10.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_Protection.uc b/exported/TgGame/Classes/TgDeviceFire_Protection.uc new file mode 100755 index 00000000..f97d5f42 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Protection.uc @@ -0,0 +1,12 @@ +class TgDeviceFire_Protection extends TgDeviceFire + native(ChampGauntlet); + +// Export UTgDeviceFire_Protection::execIgnoreTargetForBlocking(FFrame&, void* const) +native function bool IgnoreTargetForBlocking(Actor Target); + +defaultproperties +{ + m_bUseTargetingEncroachmentActor=true + m_nTargetingEncroachmentActorOverride=7075 + m_vActorEncroachmentBaseScale=(X=16.0000000,Y=16.0000000,Z=16.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_Pursuit.uc b/exported/TgGame/Classes/TgDeviceFire_Pursuit.uc new file mode 100755 index 00000000..d8f5e8c7 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Pursuit.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_Pursuit extends TgDeviceFire + native(ChampLex); + +// Export UTgDeviceFire_Pursuit::execSetProperty(FFrame&, void* const) +native function SetProperty(int nPropertyId, float fNewValue); diff --git a/exported/TgGame/Classes/TgDeviceFire_Recharge.uc b/exported/TgGame/Classes/TgDeviceFire_Recharge.uc new file mode 100755 index 00000000..aa4a37d5 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Recharge.uc @@ -0,0 +1,23 @@ +class TgDeviceFire_Recharge extends TgDeviceFire + native(ChampGauntlet); + +var float s_fLastNoShieldFXPlayTimestamp; +var float s_fTimeBetweenNoShieldFX; + +// Export UTgDeviceFire_Recharge::execIsValidTarget(FFrame&, void* const) +native function bool IsValidTarget(Actor P, optional TgDeviceFire.DeviceTargeterType eTargeterType = 0, optional bool bIgnoreHealth, optional bool bInvertTeam); + +// Export UTgDeviceFire_Recharge::execIgnoreTargetForBlocking(FFrame&, void* const) +native function bool IgnoreTargetForBlocking(Actor Target); + +// Export UTgDeviceFire_Recharge::execSpecialShieldDestroyed(FFrame&, void* const) +native function SpecialShieldDestroyed(); + +defaultproperties +{ + s_fTimeBetweenNoShieldFX=4.0000000 + m_bUseAccurateEncroachment=true + m_bUseTargetingEncroachmentActor=true + m_nTargetingEncroachmentActorOverride=7073 + m_vActorEncroachmentBaseScale=(X=16.0000000,Y=16.0000000,Z=16.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_RendSoul.uc b/exported/TgGame/Classes/TgDeviceFire_RendSoul.uc new file mode 100755 index 00000000..3f846ebd --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_RendSoul.uc @@ -0,0 +1,59 @@ +class TgDeviceFire_RendSoul extends TgDeviceFire + native(ChampOracle); + +var int s_nStacksConsumed; + +// Export UTgDeviceFire_RendSoul::execCustomFire(FFrame&, void* const) +native function CustomFire(); + +event SubmitEffect(ImpactInfo Impact, TgEffectGroup EffectGroup, optional bool bRemove, optional int StackCount = 1, optional Actor InstigatorOverride) +{ + local TgEffectHeal HealEffect; + local int oldHeal, I; + + // End:0x125 + if((EffectGroup != none) && EffectGroup.m_nType == 10681) + { + I = 0; + J0x4B: + + // End:0x125 [Loop If] + if(I < EffectGroup.m_Effects.Length) + { + HealEffect = TgEffectHeal(EffectGroup.m_Effects[I]); + // End:0x117 + if(HealEffect != none) + { + oldHeal = int(HealEffect.m_fBase); + HealEffect.m_fBase *= float(s_nStacksConsumed); + } + ++I; + // [Loop Continue] + goto J0x4B; + } + } + super.SubmitEffect(Impact, EffectGroup, bRemove, StackCount); + // End:0x18E + if(HealEffect != none) + { + HealEffect.m_fBase = float(oldHeal); + } + //return; +} + +event bool IsAgonyActive() +{ + return (GetCustomValue1()) > 0.0000000; + //return ReturnValue; +} + +event bool IsSoulCollectorActive() +{ + return (GetCustomValue2()) > 0.0000000; + //return ReturnValue; +} + +defaultproperties +{ + m_bCanTriggerCounter=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_RepulsorField.uc b/exported/TgGame/Classes/TgDeviceFire_RepulsorField.uc new file mode 100755 index 00000000..769efa48 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_RepulsorField.uc @@ -0,0 +1,8 @@ +class TgDeviceFire_RepulsorField extends TgDeviceFire + native(ChampRuckus); + +// Export UTgDeviceFire_RepulsorField::execGetDamageRadius(FFrame&, void* const) +native function float GetDamageRadius(); + +// Export UTgDeviceFire_RepulsorField::execCalcWeaponModeFire(FFrame&, void* const) +native function WeaponFireResults CalcWeaponModeFire(Actor DamageInstigator, AimData Aim, out array ImpactList, optional bool bPredicting = false, optional bool bNoBodyShotCheck = false, optional float RewindTime = 0.0000000, const optional out array ImpactsToValidate); diff --git a/exported/TgGame/Classes/TgDeviceFire_RestoreSoul.uc b/exported/TgGame/Classes/TgDeviceFire_RestoreSoul.uc new file mode 100755 index 00000000..a731333b --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_RestoreSoul.uc @@ -0,0 +1,29 @@ +class TgDeviceFire_RestoreSoul extends TgDeviceFire + native(ChampOracle); + +var float m_fServerRangeBufferMult; +var float m_fBaseEncroachmentActorRange; + +// Export UTgDeviceFire_RestoreSoul::execIgnoreTargetForBlocking(FFrame&, void* const) +native function bool IgnoreTargetForBlocking(Actor Target); + +event bool IsAbyssalFuryActive() +{ + return (GetCustomValue1()) > 0.0000000; + //return ReturnValue; +} + +simulated event float GetPostHitDelay() +{ + return (GetCustomValue2()) + super.GetPostHitDelay(); + //return ReturnValue; +} + +defaultproperties +{ + m_fServerRangeBufferMult=1.2500000 + m_fBaseEncroachmentActorRange=10.0000000 + m_bUseTargetingEncroachmentActor=true + m_fEncroachmentRayCastVerticalOffset=0.6000000 + m_nTargetingEncroachmentActorOverride=7372 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_Reversal.uc b/exported/TgGame/Classes/TgDeviceFire_Reversal.uc new file mode 100755 index 00000000..167c4467 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Reversal.uc @@ -0,0 +1,50 @@ +class TgDeviceFire_Reversal extends TgDeviceFire; + +event SubmitEffect(ImpactInfo Impact, TgEffectGroup EffectGroup, optional bool bRemove, optional int StackCount = 1, optional Actor InstigatorOverride) +{ + local TgEffectDamage DamageEffect; + local TgProj_Reversal ReversalProjectile; + local int oldDamage, I; + + // End:0x1CE + if(((Impact.Projectile != none) && EffectGroup != none) && EffectGroup.m_nType == 264) + { + I = 0; + J0x6F: + + // End:0x11E [Loop If] + if(I < EffectGroup.m_Effects.Length) + { + DamageEffect = TgEffectDamage(EffectGroup.m_Effects[I]); + // End:0x110 + if(DamageEffect != none) + { + oldDamage = int(DamageEffect.m_fBase); + } + ++I; + // [Loop Continue] + goto J0x6F; + } + // End:0x1CE + if(DamageEffect != none) + { + ReversalProjectile = TgProj_Reversal(Impact.Projectile); + // End:0x1CE + if(ReversalProjectile != none) + { + // End:0x1CE + if(ReversalProjectile.m_fDamageOverride > float(0)) + { + DamageEffect.m_fBase = ReversalProjectile.m_fDamageOverride; + } + } + } + } + super.SubmitEffect(Impact, EffectGroup, bRemove, StackCount); + // End:0x237 + if(DamageEffect != none) + { + DamageEffect.m_fBase = float(oldDamage); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_Salvo.uc b/exported/TgGame/Classes/TgDeviceFire_Salvo.uc new file mode 100755 index 00000000..7418adf4 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Salvo.uc @@ -0,0 +1,35 @@ +class TgDeviceFire_Salvo extends TgDeviceFire; + +var TgDevice_DrogozInhand m_CachedDrogozInhand; + +simulated event float GetPreHitDelay() +{ + local int shotsToLoad; + + shotsToLoad = 1; + // End:0x44 + if(HasCachedDrogozInhand()) + { + shotsToLoad = m_CachedDrogozInhand.GetCurrentAmmoAmount() - 1; + } + return m_fFirePreHitDelay * float(shotsToLoad); + //return ReturnValue; +} + +simulated function bool HasCachedDrogozInhand() +{ + local TgPawn PawnOwner; + + // End:0x93 + if((m_CachedDrogozInhand == none) && m_Owner != none) + { + PawnOwner = TgPawn(m_Owner.Owner); + // End:0x93 + if(PawnOwner != none) + { + m_CachedDrogozInhand = TgDevice_DrogozInhand(PawnOwner.GetDeviceByEqPoint(1)); + } + } + return m_CachedDrogozInhand != none; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_SelfResurrection.uc b/exported/TgGame/Classes/TgDeviceFire_SelfResurrection.uc new file mode 100755 index 00000000..34801df9 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_SelfResurrection.uc @@ -0,0 +1,20 @@ +class TgDeviceFire_SelfResurrection extends TgDeviceFire; + +event SubmitEffect(ImpactInfo Impact, TgEffectGroup EffectGroup, optional bool bRemove, optional int StackCount = 1, optional Actor InstigatorOverride) +{ + local TgPawn_Lazarus pLazarus; + + // End:0xD3 + if(EffectGroup.m_nEffectGroupId == 60153) + { + pLazarus = TgPawn_Lazarus(m_Owner.Instigator); + // End:0xD3 + if(pLazarus != none) + { + super.SubmitEffect(Impact, EffectGroup, bRemove, StackCount, pLazarus.m_Killer.Pawn); + return; + } + } + super.SubmitEffect(Impact, EffectGroup, bRemove, StackCount, InstigatorOverride); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_ShatterExplosion.uc b/exported/TgGame/Classes/TgDeviceFire_ShatterExplosion.uc new file mode 100755 index 00000000..c5aab8f9 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_ShatterExplosion.uc @@ -0,0 +1,2 @@ +class TgDeviceFire_ShatterExplosion extends TgDeviceFire_WorldLOSOnly + native(ChampYing); diff --git a/exported/TgGame/Classes/TgDeviceFire_ShellShield.uc b/exported/TgGame/Classes/TgDeviceFire_ShellShield.uc new file mode 100755 index 00000000..d0094199 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_ShellShield.uc @@ -0,0 +1,6 @@ +class TgDeviceFire_ShellShield extends TgDeviceFire; + +defaultproperties +{ + m_bDeployOnOwnerLocation=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_ShieldFernando.uc b/exported/TgGame/Classes/TgDeviceFire_ShieldFernando.uc new file mode 100755 index 00000000..b0c6396e --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_ShieldFernando.uc @@ -0,0 +1,45 @@ +class TgDeviceFire_ShieldFernando extends TgDeviceFire; + +simulated event float GetCooldownTime() +{ + local TgDevice Dev, Aegis; + local TgDeviceFire AegisFire; + local TgPawn TgP; + local float fBaseCooldown, fCooldown; + local TgProperty CooldownProperty; + + fCooldown = super.GetCooldownTime(); + Dev = TgDevice(m_Owner); + // End:0x18D + if(Dev != none) + { + TgP = TgPawn(Dev.Instigator); + // End:0x18D + if(TgP != none) + { + Aegis = TgP.GetActiveDeviceByClass('TgDevice_Aegis'); + // End:0x18D + if(Aegis != none) + { + AegisFire = Aegis.GetCurrentFire(); + // End:0x18D + if(AegisFire != none) + { + CooldownProperty = GetProperty(4); + // End:0x18D + if(CooldownProperty != none) + { + fBaseCooldown = CooldownProperty.m_fBase; + // End:0x18D + if(fBaseCooldown > 0.0000000) + { + fCooldown *= (AegisFire.GetCustomValue1() / fBaseCooldown); + } + } + } + } + } + } + return fCooldown; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_ShieldsOnly.uc b/exported/TgGame/Classes/TgDeviceFire_ShieldsOnly.uc new file mode 100755 index 00000000..356ce2b2 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_ShieldsOnly.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_ShieldsOnly extends TgDeviceFire + native(Devices); + +// Export UTgDeviceFire_ShieldsOnly::execIsValidTarget(FFrame&, void* const) +native function bool IsValidTarget(Actor P, optional TgDeviceFire.DeviceTargeterType eTargeterType = 0, optional bool bIgnoreHealth, optional bool bInvertTeam); diff --git a/exported/TgGame/Classes/TgDeviceFire_SiegeUnit.uc b/exported/TgGame/Classes/TgDeviceFire_SiegeUnit.uc new file mode 100755 index 00000000..713d83db --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_SiegeUnit.uc @@ -0,0 +1,7 @@ +class TgDeviceFire_SiegeUnit extends TgDeviceFire + native(ChampFlak); + +defaultproperties +{ + m_bAllowMultiplePets=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_Smash.uc b/exported/TgGame/Classes/TgDeviceFire_Smash.uc new file mode 100755 index 00000000..e0a8c665 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Smash.uc @@ -0,0 +1,27 @@ +class TgDeviceFire_Smash extends TgDeviceFire + native(ChampMakoa); + +var Actor m_NormalTargetingEncroachmentActor; +var Actor m_LargeTargetingEncroachmentActor; +var int m_nLargeTargetingMeshID; + +simulated function ToggleTargetingMesh(bool bEnable) +{ + // End:0x23 + if(bEnable) + { + m_TargetingEncroachmentActor = m_LargeTargetingEncroachmentActor; + } + else + { + m_TargetingEncroachmentActor = m_NormalTargetingEncroachmentActor; + } + //return; +} + +defaultproperties +{ + m_nLargeTargetingMeshID=5958 + m_bUseTargetingEncroachmentActor=true + m_nTargetingEncroachmentActorOverride=5905 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_SnakeToss.uc b/exported/TgGame/Classes/TgDeviceFire_SnakeToss.uc new file mode 100755 index 00000000..4e4c4b6e --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_SnakeToss.uc @@ -0,0 +1,50 @@ +class TgDeviceFire_SnakeToss extends TgDeviceFire + native(ChampMalDamba); + +struct native RecentStunnedTarget +{ + var Actor Target; + var float fTimestamp; + + structdefaultproperties + { + Target=none + fTimestamp=0.0000000 + } +}; + +var array m_RecentStunnedTargets; + +event bool ApplyHit(ImpactInfo Impact, Actor DamageInstigator) +{ + local bool ret; + local int I; + + ret = super.ApplyHit(Impact, DamageInstigator); + I = m_RecentStunnedTargets.Length - 1; + J0x3E: + + // End:0x12F [Loop If] + if(I >= 0) + { + // End:0xCF + if((m_Owner.WorldInfo.TimeSeconds - m_RecentStunnedTargets[I].fTimestamp) >= (GetCustomValue5())) + { + m_RecentStunnedTargets.Remove(I, 1); + } + else + { + // End:0x121 + if(m_RecentStunnedTargets[I].Target == Impact.HitActor) + { + return ret; + } + } + I--; + // [Loop Continue] + goto J0x3E; + } + ApplyHitSpecial(Impact.HitActor, Impact); + return ret; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_Soar.uc b/exported/TgGame/Classes/TgDeviceFire_Soar.uc new file mode 100755 index 00000000..ecbfe665 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Soar.uc @@ -0,0 +1,33 @@ +class TgDeviceFire_Soar extends TgDeviceFire; + +simulated event float GetMinCooldownTime() +{ + local TgDevice Dev; + local TgPawn TgP; + local TgDevice_OverTheMoon OverTheMoonDevice; + local TgDeviceFire OverTheMoonDeviceFire; + + Dev = TgDevice(m_Owner); + // End:0x10D + if(Dev != none) + { + TgP = TgPawn(Dev.Instigator); + // End:0x10D + if(TgP != none) + { + OverTheMoonDevice = TgDevice_OverTheMoon(TgP.GetActiveDeviceByClass('TgDevice_OverTheMoon')); + // End:0x10D + if(OverTheMoonDevice != none) + { + OverTheMoonDeviceFire = OverTheMoonDevice.GetCurrentFire(); + // End:0x10D + if(OverTheMoonDeviceFire != none) + { + return OverTheMoonDeviceFire.GetCustomValue1(); + } + } + } + } + return super.GetMinCooldownTime(); + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_SpaceTime.uc b/exported/TgGame/Classes/TgDeviceFire_SpaceTime.uc new file mode 100755 index 00000000..9f8d1ee8 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_SpaceTime.uc @@ -0,0 +1,13 @@ +class TgDeviceFire_SpaceTime extends TgDeviceFire_WorldLOSOnly + native(ChampAstro); + +// Export UTgDeviceFire_SpaceTime::execCalcActorEncroachmentTargetingFire(FFrame&, void* const) +native function WeaponFireResults CalcActorEncroachmentTargetingFire(Actor DamageInstigator, AimData Aim, out array ImpactList, optional bool bPredicting = false, optional float RewindTime = 0.0000000, const optional out array ImpactsToValidate); + +defaultproperties +{ + m_bUseAccurateEncroachment=true + m_bUseTargetingEncroachmentActor=true + m_bEnchroachmentFireLOSCheck=false + m_nTargetingEncroachmentActorOverride=8086 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_SpawnAtOwnerLocation.uc b/exported/TgGame/Classes/TgDeviceFire_SpawnAtOwnerLocation.uc new file mode 100755 index 00000000..208c084e --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_SpawnAtOwnerLocation.uc @@ -0,0 +1,8 @@ +class TgDeviceFire_SpawnAtOwnerLocation extends TgDeviceFire; + +defaultproperties +{ + m_bAdjustDeployHeightToExtent=true + m_bDeployOnOwnerLocation=true + m_bSpawnPetOnOwnerLocation=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_Spray.uc b/exported/TgGame/Classes/TgDeviceFire_Spray.uc new file mode 100755 index 00000000..340d541c --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Spray.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_Spray extends TgDeviceFire + native(Devices); + +// Export UTgDeviceFire_Spray::execCalcWeaponModeFire(FFrame&, void* const) +native function WeaponFireResults CalcWeaponModeFire(Actor DamageInstigator, AimData Aim, out array ImpactList, optional bool bPredicting = false, optional bool bNoBodyShotCheck = false, optional float RewindTime = 0.0000000, const optional out array ImpactsToValidate); diff --git a/exported/TgGame/Classes/TgDeviceFire_Telepunch.uc b/exported/TgGame/Classes/TgDeviceFire_Telepunch.uc new file mode 100755 index 00000000..010a350f --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Telepunch.uc @@ -0,0 +1,11 @@ +class TgDeviceFire_Telepunch extends TgDeviceFire + native(ChampDemon); + +defaultproperties +{ + m_bUseAccurateEncroachment=true + m_bUseTargetingEncroachmentActor=true + m_bEnchroachmentFireLOSCheck=false + m_nTargetingEncroachmentActorOverride=8256 + m_vActorEncroachmentBaseScale=(X=100.0000000,Y=25.0000000,Z=25.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_Tempest.uc b/exported/TgGame/Classes/TgDeviceFire_Tempest.uc new file mode 100755 index 00000000..f5a673fd --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Tempest.uc @@ -0,0 +1,12 @@ +class TgDeviceFire_Tempest extends TgDeviceFire + native(ChampGrohk); + +// Export UTgDeviceFire_Tempest::execCalcAoeFire(FFrame&, void* const) +native function ImpactInfo CalcAoeFire(Actor DamageInstigator, AimData Aim, out array ImpactList, optional bool bPredicting = false, optional float RewindTime = 0.0000000); + +defaultproperties +{ + m_eTargetSelectionTypeOverride=TargetSelectionType.TGTST_Random + m_bIsAOE=true + m_bIgnoreDeployablesForBlocking=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_TheLaw.uc b/exported/TgGame/Classes/TgDeviceFire_TheLaw.uc new file mode 100755 index 00000000..52c7bff6 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_TheLaw.uc @@ -0,0 +1,9 @@ +class TgDeviceFire_TheLaw extends TgDeviceFire + native(ChampLex); + +var TgWeaponMeshActor_LexInhand m_pCachedLexWeaponMeshActor; + +defaultproperties +{ + m_bCanTargetStealthedTargets=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_Transporter.uc b/exported/TgGame/Classes/TgDeviceFire_Transporter.uc new file mode 100755 index 00000000..42ec0a94 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Transporter.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_Transporter extends TgDeviceFire + native(ChampKinessa); + +// Export UTgDeviceFire_Transporter::execTeleportFire(FFrame&, void* const) +native simulated function TeleportFire(); diff --git a/exported/TgGame/Classes/TgDeviceFire_Turret.uc b/exported/TgGame/Classes/TgDeviceFire_Turret.uc new file mode 100755 index 00000000..8216274b --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Turret.uc @@ -0,0 +1,10 @@ +class TgDeviceFire_Turret extends TgDeviceFire + native(ChampBarik); + +// Export UTgDeviceFire_Turret::execSpawnPet(FFrame&, void* const) +native function TgPawn SpawnPet(bool bPet); + +defaultproperties +{ + m_bAllowMultiplePets=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_TurretShot.uc b/exported/TgGame/Classes/TgDeviceFire_TurretShot.uc new file mode 100755 index 00000000..6cfe1ca5 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_TurretShot.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_TurretShot extends TgDeviceFire + native(ChampBarik); + +// Export UTgDeviceFire_TurretShot::execIsValidTarget(FFrame&, void* const) +native function bool IsValidTarget(Actor P, optional TgDeviceFire.DeviceTargeterType eTargeterType = 0, optional bool bIgnoreHealth, optional bool bInvertTeam); diff --git a/exported/TgGame/Classes/TgDeviceFire_TurtlePower.uc b/exported/TgGame/Classes/TgDeviceFire_TurtlePower.uc new file mode 100755 index 00000000..74a5fa95 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_TurtlePower.uc @@ -0,0 +1,44 @@ +class TgDeviceFire_TurtlePower extends TgDeviceFire; + +event SubmitEffect(ImpactInfo Impact, TgEffectGroup EffectGroup, optional bool bRemove, optional int StackCount = 1, optional Actor InstigatorOverride) +{ + local TgEffect maxHealthEffect; + local TgPawn PawnTarget; + local int I; + + // End:0xFC + if((EffectGroup != none) && Impact.HitActor != none) + { + I = 0; + J0x45: + + // End:0xFC [Loop If] + if(I < EffectGroup.m_Effects.Length) + { + // End:0xEE + if(EffectGroup.m_Effects[I].m_nPropertyId == 304) + { + maxHealthEffect = EffectGroup.m_Effects[I]; + // [Explicit Break] + goto J0xFC; + } + ++I; + // [Loop Continue] + goto J0x45; + } + } + J0xFC: + + super.SubmitEffect(Impact, EffectGroup, bRemove, StackCount); + // End:0x1CA + if(maxHealthEffect != none) + { + PawnTarget = TgPawn(Impact.HitActor); + // End:0x1CA + if((PawnTarget != none) && !bRemove) + { + PawnTarget.SetHealth(int(PawnTarget.GetMaxHealth())); + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceFire_Uppercut.uc b/exported/TgGame/Classes/TgDeviceFire_Uppercut.uc new file mode 100755 index 00000000..5a2983a2 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Uppercut.uc @@ -0,0 +1,8 @@ +class TgDeviceFire_Uppercut extends TgDeviceFire + native(ChampDemon); + +defaultproperties +{ + m_bUseTargetingEncroachmentActor=true + m_nTargetingEncroachmentActorOverride=8095 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_Valor.uc b/exported/TgGame/Classes/TgDeviceFire_Valor.uc new file mode 100755 index 00000000..07912dcf --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Valor.uc @@ -0,0 +1,6 @@ +class TgDeviceFire_Valor extends TgDeviceFire; + +defaultproperties +{ + m_bCanTargetStealthedTargets=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_Whirlwind.uc b/exported/TgGame/Classes/TgDeviceFire_Whirlwind.uc new file mode 100755 index 00000000..5e3bc597 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_Whirlwind.uc @@ -0,0 +1,6 @@ +class TgDeviceFire_Whirlwind extends TgDeviceFire_Cylinder; + +defaultproperties +{ + m_bIgnoreDeployablesForBlocking=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceFire_WorldLOSOnly.uc b/exported/TgGame/Classes/TgDeviceFire_WorldLOSOnly.uc new file mode 100755 index 00000000..bd152077 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_WorldLOSOnly.uc @@ -0,0 +1,5 @@ +class TgDeviceFire_WorldLOSOnly extends TgDeviceFire + native(Devices); + +// Export UTgDeviceFire_WorldLOSOnly::execIgnoreTargetForBlocking(FFrame&, void* const) +native function bool IgnoreTargetForBlocking(Actor Target); diff --git a/exported/TgGame/Classes/TgDeviceFire_YingIllusionInhand.uc b/exported/TgGame/Classes/TgDeviceFire_YingIllusionInhand.uc new file mode 100755 index 00000000..678ab84a --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceFire_YingIllusionInhand.uc @@ -0,0 +1,9 @@ +class TgDeviceFire_YingIllusionInhand extends TgDeviceFire_WorldLOSOnly + native(ChampYing); + +defaultproperties +{ + m_eTargetSelectionTypeOverride=TargetSelectionType.TGTST_LowestHealthPercent + m_bPassThroughShield=true + m_bMaintainBurstTarget=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm.uc b/exported/TgGame/Classes/TgDeviceForm.uc new file mode 100755 index 00000000..648622fb --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm.uc @@ -0,0 +1,1264 @@ +class TgDeviceForm extends Object + native(Devices); + +const DEFAULT_FX_RADIUS = 240.0f; + +struct native transient ModeData +{ + var init float c_fBuildupTime; + var init bool c_bContinuousFire; + var init bool c_FxInstantFire; + var init name c_nmOffhandAnimationType; + var init bool c_bScaleFireAnimsWithRefire; + var init bool c_bInterruptAnimOnRefire; + var init float c_fEffectRadius; + var init float c_fMaxRange; + var init CameraAnim c_WhileFiringCameraAnim; + + structdefaultproperties + { + c_fBuildupTime=0.0000000 + c_bContinuousFire=false + c_FxInstantFire=false + c_nmOffhandAnimationType="None" + c_bScaleFireAnimsWithRefire=false + c_bInterruptAnimOnRefire=false + c_fEffectRadius=0.0000000 + c_fMaxRange=0.0000000 + c_WhileFiringCameraAnim=none + } +}; + +var private native const noexport Pointer VfTable_FCallbackEventDevice; +var TgPawn PawnOwner; +var EquipDeviceInfo c_EquipDeviceInfo; +var int m_nDeviceType; +var TgObject.DeviceTargetMode m_eTargetingMode; +var TgDevice.ETargetingModeStatus c_eTargetingModeStatus; +var bool c_bDeployed; +var bool c_bHandDevice; +var bool c_bDisableDefaultTimelapseRecovery; +var bool c_bIsTransitioningToNewMode; +var bool c_bTargetingModeEnabled; +var bool c_bTargeterInitializedThisTick; +var bool c_bTargeterIsInWorldDPG; +var bool c_bUseInstigatorMesh; +var bool c_bIsInHand; +var bool m_bInitializingAssets; +var bool m_bLoopWhileFiringCameraAnim; +var bool m_bUseImpactFXOverride; +var bool m_bRecoilTimerActive; +var array c_PawnAnimSetOverrideList; +var array ModeDatas; +var native Pointer m_pAmSetup; +var export editinline MeshComponent c_Mesh; +var export editinline MeshComponent c_AttachedMesh; +var protected export editinline MeshComponent c_ThirdPersonMesh; +var protected export editinline TgSkeletalMeshComponent c_FirstPersonMesh; +var name c_nmMountPoint; +var name FormState; +var int c_nFireMode; +var int c_nEquipSlot; +var float c_fLastReceivedRefireTime; +var int c_nLastFxMode; +var TgSkeletalMeshActor c_TargetingModeMeshIndicator; +var TgSpecialFx c_TargetingModeFx; +var AimData c_TargetingAim; +var int c_nTargetingModeFxId; +var float c_fRemainingTransitionTime; +var float c_fTotalTransitionTime; +var Actor m_LockedTarget; +var ObjectReferencer m_AssetReference; +var Actor m_OwnerActor; +var array m_AbilityBlendList1P; +var array m_AbilityBlendList3P; +var array m_ChannelFireBlendList1P; +var array m_ChannelFireBlendList3P; +var array m_TargetingBlendList1P; +var array m_TargetingBlendList3P; +var array m_ToggleTransitionNodes1P; +var array m_ToggleTransitionNodes3P; +var array m_AmmoBlendList1P; +var array m_AmmoBlendList3P; +var CameraAnimInst m_WhileFiringCameraAnimInst; +var float m_fWhileFiringCameraAnimBlendInTime; +var float m_fWhileFiringCameraAnimBlendOutTime; +var native const transient Pointer m_RandomShotSpreadStream; +var int m_nLastSetShotSpreadSeed; +var TgGameplayCurves m_GameplayCurves; +var float m_fRecoilTimer; + +// Export UTgDeviceForm::execSetFireMode(FFrame&, void* const) +native function SetFireMode(int nMode); + +// Export UTgDeviceForm::execAttachDevice_DA(FFrame&, void* const) +native function AttachDevice_DA(SkeletalMeshComponent ParentMesh, MeshComponent AttachedMesh, optional name nmSocket); + +// Export UTgDeviceForm::execAttachInHandDevice_DA(FFrame&, void* const) +native function bool AttachInHandDevice_DA(bool bFirstPerson); + +// Export UTgDeviceForm::execDetachDevice_DA(FFrame&, void* const) +native function DetachDevice_DA(SkeletalMeshComponent ParentMesh, MeshComponent AttachedMesh); + +// Export UTgDeviceForm::execDetachInHandDevice_DA(FFrame&, void* const) +native function DetachInHandDevice_DA(); + +// Export UTgDeviceForm::execInitCameraViewpoint(FFrame&, void* const) +native function InitCameraViewpoint(); + +// Export UTgDeviceForm::execLogDebugInfo(FFrame&, void* const) +native function bool LogDebugInfo(); + +// Export UTgDeviceForm::execActivateFxGroup(FFrame&, void* const) +native function ActivateFxGroup(name nmGroup); + +// Export UTgDeviceForm::execActivateFxIndependent(FFrame&, void* const) +native function TgSpecialFx ActivateFxIndependent(name nmGroup, optional bool bSkipActivate, optional ParticleChannelContainer PSysChannels); + +// Export UTgDeviceForm::execDeactivateFxGroup(FFrame&, void* const) +native function DeactivateFxGroup(name nmGroup); + +// Export UTgDeviceForm::execGetFormIndex(FFrame&, void* const) +native function int GetFormIndex(); + +// Export UTgDeviceForm::execDestruct(FFrame&, void* const) +native function Destruct(Vector vLocation); + +// Export UTgDeviceForm::execResetAfterRagDoll(FFrame&, void* const) +native function ResetAfterRagDoll(); + +// Export UTgDeviceForm::execSpawnSpecialFxIndependent(FFrame&, void* const) +native static function TgSpecialFx SpawnSpecialFxIndependent(int nSpecialFxId, optional ParticleChannelContainer PSysChannels); + +// Export UTgDeviceForm::execUpdateTargetingModeStatus(FFrame&, void* const) +native function UpdateTargetingModeStatus(TgDevice.ETargetingModeStatus Status, const out AimData Aim); + +// Export UTgDeviceForm::execUpdateTargetingModeStatusForFX(FFrame&, void* const) +native function UpdateTargetingModeStatusForFX(TgSpecialFx Fx, TgDevice.ETargetingModeStatus Status, const out AimData Aim); + +// Export UTgDeviceForm::execUpdateTargetingModeLocation(FFrame&, void* const) +native function UpdateTargetingModeLocation(Vector NewLocation, Rotator NewRotation, optional float DistanceScale = 1.0000000); + +// Export UTgDeviceForm::execUpdateTargetingList(FFrame&, void* const) +native function UpdateTargetingList(const out array ImpactList); + +// Export UTgDeviceForm::execRecalculateMaterial(FFrame&, void* const) +native function RecalculateMaterial(); + +// Export UTgDeviceForm::execUpdateFirstPersonWeaponFOV(FFrame&, void* const) +native function UpdateFirstPersonWeaponFOV(optional Vector2D Resolution); + +// Export UTgDeviceForm::execUsesTargetingMode(FFrame&, void* const) +native function bool UsesTargetingMode(); + +// Export UTgDeviceForm::execCanPlayBasicHitFx(FFrame&, void* const) +native function bool CanPlayBasicHitFx(const TgPawn Target); + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByAbilitySimple asAnimNode; + local TgAnimNodeChannelFire cfAnimNode; + local TgAnimNodeTargeting tAnimNode; + local TgAnimNodeToggleWithTransition twtAnimNode; + local TgAnimBlendByAmmo bbaAnimNode; + + m_AbilityBlendList3P.Length = 0; + m_ChannelFireBlendList3P.Length = 0; + m_TargetingBlendList3P.Length = 0; + m_ToggleTransitionNodes3P.Length = 0; + m_AmmoBlendList3P.Length = 0; + // End:0x73 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xEC + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeChannelFire', cfAnimNode) + { + // End:0xEB + if(int(cfAnimNode.m_EquipPoint) == c_nEquipSlot) + { + m_ChannelFireBlendList3P.AddItem(cfAnimNode); + } + } + // End:0x166 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeTargeting', tAnimNode) + { + // End:0x165 + if(int(tAnimNode.m_EquipPoint) == c_nEquipSlot) + { + m_TargetingBlendList3P.AddItem(tAnimNode); + } + } + // End:0x215 + if(((c_nEquipSlot >= 2) && c_nEquipSlot <= 4) || c_nEquipSlot == 16) + { + // End:0x214 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByAbilitySimple', asAnimNode) + { + // End:0x213 + if(c_nEquipSlot == int(asAnimNode.m_EqpPoint)) + { + m_AbilityBlendList3P.AddItem(asAnimNode); + } + } + } + // End:0x260 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeToggleWithTransition', twtAnimNode) + { + m_ToggleTransitionNodes3P.AddItem(twtAnimNode); + } + // End:0x2DA + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimBlendByAmmo', bbaAnimNode) + { + // End:0x2D9 + if(c_nEquipSlot == int(bbaAnimNode.m_EquipPoint)) + { + m_AmmoBlendList3P.AddItem(bbaAnimNode); + } + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByAbilitySimple asAnimNode; + local TgAnimNodeChannelFire cfAnimNode; + local TgAnimNodeTargeting tAnimNode; + local TgAnimNodeToggleWithTransition twtAnimNode; + local TgAnimBlendByAmmo bbaAnimNode; + + m_AbilityBlendList1P.Length = 0; + m_ChannelFireBlendList1P.Length = 0; + m_TargetingBlendList1P.Length = 0; + m_ToggleTransitionNodes1P.Length = 0; + m_AmmoBlendList1P.Length = 0; + // End:0x73 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xEC + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeChannelFire', cfAnimNode) + { + // End:0xEB + if(int(cfAnimNode.m_EquipPoint) == c_nEquipSlot) + { + m_ChannelFireBlendList1P.AddItem(cfAnimNode); + } + } + // End:0x166 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeTargeting', tAnimNode) + { + // End:0x165 + if(int(tAnimNode.m_EquipPoint) == c_nEquipSlot) + { + m_TargetingBlendList1P.AddItem(tAnimNode); + } + } + // End:0x215 + if(((c_nEquipSlot >= 2) && c_nEquipSlot <= 4) || c_nEquipSlot == 16) + { + // End:0x214 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByAbilitySimple', asAnimNode) + { + // End:0x213 + if(c_nEquipSlot == int(asAnimNode.m_EqpPoint)) + { + m_AbilityBlendList1P.AddItem(asAnimNode); + } + } + } + // End:0x260 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeToggleWithTransition', twtAnimNode) + { + m_ToggleTransitionNodes1P.AddItem(twtAnimNode); + } + // End:0x2DA + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimBlendByAmmo', bbaAnimNode) + { + // End:0x2D9 + if(c_nEquipSlot == int(bbaAnimNode.m_EquipPoint)) + { + m_AmmoBlendList1P.AddItem(bbaAnimNode); + } + } + //return; +} + +simulated function OnReload(float fReloadTime) +{ + //return; +} + +event SetAmmoBlendNodesAmount(int nAmmoAmt, optional bool bTickOnly = false) +{ + local int I; + + I = 0; + J0x10: + + // End:0xBE [Loop If] + if(I < m_AmmoBlendList1P.Length) + { + // End:0xB0 + if(m_AmmoBlendList1P[I] != none) + { + // End:0xB0 + if(!bTickOnly || m_AmmoBlendList1P[I].m_bCheckAmmoPerTick) + { + m_AmmoBlendList1P[I].SetAmmoAmt(nAmmoAmt); + } + } + I++; + // [Loop Continue] + goto J0x10; + } + I = 0; + J0xC9: + + // End:0x177 [Loop If] + if(I < m_AmmoBlendList3P.Length) + { + // End:0x169 + if(m_AmmoBlendList3P[I] != none) + { + // End:0x169 + if(!bTickOnly || m_AmmoBlendList1P[I].m_bCheckAmmoPerTick) + { + m_AmmoBlendList3P[I].SetAmmoAmt(nAmmoAmt); + } + } + I++; + // [Loop Continue] + goto J0xC9; + } + //return; +} + +function SetAbilityBlendNodesActive(bool bActive, bool bOnFire, optional bool bIsInterrupted = false) +{ + local int I; + + I = 0; + J0x10: + + // End:0x96 [Loop If] + if(I < m_AbilityBlendList1P.Length) + { + // End:0x88 + if(m_AbilityBlendList1P[I] != none) + { + m_AbilityBlendList1P[I].SetAbilityFiring(bActive, bOnFire, bIsInterrupted); + } + I++; + // [Loop Continue] + goto J0x10; + } + I = 0; + J0xA1: + + // End:0x127 [Loop If] + if(I < m_AbilityBlendList3P.Length) + { + // End:0x119 + if(m_AbilityBlendList3P[I] != none) + { + m_AbilityBlendList3P[I].SetAbilityFiring(bActive, bOnFire, bIsInterrupted); + } + I++; + // [Loop Continue] + goto J0xA1; + } + //return; +} + +function DisableChannelFireBlendNodes() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x73 [Loop If] + if(I < m_ChannelFireBlendList1P.Length) + { + // End:0x65 + if(m_ChannelFireBlendList1P[I] != none) + { + m_ChannelFireBlendList1P[I].EndChannel(); + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x7E: + + // End:0xE6 [Loop If] + if(I < m_ChannelFireBlendList3P.Length) + { + // End:0xD8 + if(m_ChannelFireBlendList3P[I] != none) + { + m_ChannelFireBlendList3P[I].EndChannel(); + } + I++; + // [Loop Continue] + goto J0x7E; + } + //return; +} + +event Generic1(optional byte byExtraData) +{ + //return; +} + +event Generic2(optional byte byExtraData) +{ + //return; +} + +event Generic3(optional byte byExtraData) +{ + //return; +} + +event Generic4(optional byte byExtraData) +{ + //return; +} + +event Generic5(optional byte byExtraData) +{ + //return; +} + +event OnCreated() +{ + //return; +} + +event SetSourceArcingBeamEffect(Actor Source) +{ + //return; +} + +event SetTargetArcingBeamEffect(Actor Target) +{ + //return; +} + +event PlayImpactEffects(Vector HitLocation, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional Vector FireOrigin, optional float fHitTraceDistOverride = -1.0000000, optional bool bGenerateUpdatedHitLocation = false) +{ + local Vector NewHitLoc, HitNormal; + local Actor HitActor; + local TraceHitInfo HitInfo; + local AkEvent HitAkEvent; + local SoundCue HitSoundCue; + local KActor HitKActor; + local editinline ParticleSystemComponent ImpactPSC; + local Rotator aimDirection, FireRot; + + // End:0x2F + if(PawnOwner == none) + { + return; + } + // End:0xDC + if(FireOrigin == vect(0.0000000, 0.0000000, 0.0000000)) + { + FireOrigin = PawnOwner.Location; + // End:0xDC + if(PawnOwner.m_WeaponMesh != none) + { + PawnOwner.m_WeaponMesh.GetFiringSocketTransform(FireOrigin, FireRot); + } + } + HitNormal = Normal(FireOrigin - HitLocation); + // End:0x19B + if(fHitTraceDistOverride < 0.0000000) + { + HitActor = PawnOwner.Trace(NewHitLoc, HitNormal, HitLocation - (HitNormal * float(32)), HitLocation + (HitNormal * float(32)), true,, HitInfo, PawnOwner.1); + } + else + { + HitActor = PawnOwner.Trace(NewHitLoc, HitNormal, HitLocation - (((HitNormal * fHitTraceDistOverride) * float(16)) * float(2)), HitLocation, true,, HitInfo, PawnOwner.1); + } + // End:0x2B4 + if(bGenerateUpdatedHitLocation) + { + // End:0x253 + if(HitActor != none) + { + HitLocation = NewHitLoc; + } + bSuccessfulHit = (HitActor != none) && HitActor.IsA('TgPawn') || HitActor.IsA('TgDeployable'); + } + aimDirection = PawnOwner.Rotation; + aimDirection.Pitch = PawnOwner.m_nSmoothedRemoteViewPitch; + // End:0x474 + if((((((nEquipSlot == 1) || m_bUseImpactFXOverride) || c_bHandDevice) && ModeDatas[c_nFireMode].c_FxInstantFire) && PawnOwner.m_WeaponMesh != none) && ((HitLocation - FireOrigin) Dot Vector(aimDirection)) > 0.0000000) + { + PawnOwner.m_WeaponMesh.PlayTracerEffects(HitLocation, nEquipSlot); + PawnOwner.m_WeaponMesh.QueueInstantHitImpactEffects(HitLocation, bSuccessfulHit, HitActor, HitNormal, FireOrigin, nEquipSlot); + } + // End:0x94D + if(HitInfo.PhysMaterial != none) + { + // End:0x684 + if((((HitActor != none) && TgPawn(HitActor) == none) && TgDeployable(HitActor) == none) && TgProjectile(HitActor) == none) + { + // End:0x628 + if(HitInfo.PhysMaterial.DeviceImpactSound != none) + { + HitAkEvent = AkEvent(HitInfo.PhysMaterial.DeviceImpactSound); + HitSoundCue = SoundCue(HitInfo.PhysMaterial.DeviceImpactSound); + // End:0x5EC + if(HitAkEvent != none) + { + HitActor.PostAkEvent(HitAkEvent); + } + else + { + // End:0x628 + if(HitSoundCue != none) + { + HitActor.PlaySound(HitSoundCue); + } + } + } + HitKActor = KActor(HitActor); + // End:0x684 + if(HitKActor != none) + { + HitKActor.ClientWeaponHitEffects(NewHitLoc, HitNormal); + } + } + // End:0x94D + if(HitInfo.PhysMaterial.ImpactEffect != none) + { + ImpactPSC = new (self) Class'Engine.ParticleSystemComponent'; + ImpactPSC.bAutoActivate = false; + ImpactPSC.SetTemplate(HitInfo.PhysMaterial.ImpactEffect); + ImpactPSC.SetAbsolute(true, true, true); + ImpactPSC.SetTranslation(NewHitLoc); + ImpactPSC.SetRotation(Rotator(HitNormal)); + // End:0x92D + if((PawnOwner.WorldInfo != none) && PawnOwner.WorldInfo.MyEmitterPool != none) + { + ImpactPSC.__OnSystemFinished__Delegate = PawnOwner.WorldInfo.MyEmitterPool.OnParticleSystemFinished; + PawnOwner.WorldInfo.MyEmitterPool.AttachComponent(ImpactPSC); + PawnOwner.WorldInfo.MyEmitterPool.ActiveComponents.AddItem(ImpactPSC); + } + ImpactPSC.ActivateSystem(true); + } + } + //return; +} + +simulated function ParticleSystemDone(ParticleSystemComponent PSC) +{ + //return; +} + +event BeginActive() +{ + // End:0x11 + if(PawnOwner == none) + { + return; + } + GotoFormState('Active'); + PawnOwner.BlendToAnimTreeDeviceType(); + //return; +} + +event BeginDeviceTakingOut(optional bool PlayEquipAnim = true) +{ + // End:0x3D + if(PawnOwner != none) + { + PawnOwner.AddRemoveAnimSetList(c_PawnAnimSetOverrideList, true); + } + DeactivateFxGroup('Activation'); + ActivateFxGroup('Activation'); + AttachAndDeploy_DA(); + c_bIsInHand = true; + BeginActive(); + //return; +} + +function EndDevicePuttingDown() +{ + GotoFormState('DeviceOutOfHand'); + DeactivateFxGroup('Activation'); + DetachInHandDevice_DA(); + c_bIsInHand = false; + //return; +} + +// Export UTgDeviceForm::execInitializeTargetingModeFX(FFrame&, void* const) +native function InitializeTargetingModeFX(); + +simulated event EnterTargetingMode() +{ + // End:0x19 + if(!c_bTargetingModeEnabled) + { + NotifyEnterTargetingMode(); + } + c_bTargetingModeEnabled = true; + c_bDeployed = false; + // End:0xA6 + if(c_Mesh != none) + { + // End:0x6A + if((c_TargetingModeFx == none) || c_TargetingModeMeshIndicator == none) + { + InitializeTargetingModeFX(); + } + // End:0xA6 + if((c_TargetingModeFx != none) && c_TargetingModeMeshIndicator != none) + { + UpdateTargetingModeStatus(c_eTargetingModeStatus, c_TargetingAim); + } + } + // End:0xD5 + if(PawnOwner != none) + { + PawnOwner.OnDeviceFormEnteredTargetingMode(self); + } + //return; +} + +simulated event NotifyExitTargetingMode(bool bDeployed) +{ + //return; +} + +simulated event NotifyEnterTargetingMode() +{ + //return; +} + +simulated event NotifyTargetingModeStatusChange() +{ + //return; +} + +simulated event ExitTargetingMode() +{ + // End:0x21 + if(c_bTargetingModeEnabled) + { + NotifyExitTargetingMode(c_bDeployed); + } + c_bTargetingModeEnabled = false; + c_bDeployed = false; + c_eTargetingModeStatus = 0; + // End:0x9E + if(c_TargetingModeFx != none) + { + c_TargetingModeFx.Deactivate(true); + c_TargetingModeFx.Detach(); + c_TargetingModeFx = none; + } + // End:0xD0 + if(c_TargetingModeMeshIndicator != none) + { + c_TargetingModeMeshIndicator.Destroy(); + c_TargetingModeMeshIndicator = none; + } + // End:0xFF + if(PawnOwner != none) + { + PawnOwner.OnDeviceFormExitedTargetingMode(self); + } + //return; +} + +event EnterTargeting() +{ + // End:0x72 + if((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) + { + PawnOwner.m_WeaponMesh.PlayTargetingEffects(c_nEquipSlot); + } + //return; +} + +event InterruptTargeting() +{ + local int I; + + I = 0; + J0x0B: + + // End:0xAD [Loop If] + if(I < m_TargetingBlendList1P.Length) + { + // End:0x9F + if((m_TargetingBlendList1P[I] != none) && int(m_TargetingBlendList1P[I].m_EquipPoint) == c_nEquipSlot) + { + m_TargetingBlendList1P[I].InterruptTargeting(); + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0xB8: + + // End:0x15A [Loop If] + if(I < m_TargetingBlendList3P.Length) + { + // End:0x14C + if((m_TargetingBlendList3P[I] != none) && int(m_TargetingBlendList3P[I].m_EquipPoint) == c_nEquipSlot) + { + m_TargetingBlendList3P[I].InterruptTargeting(); + } + I++; + // [Loop Continue] + goto J0xB8; + } + //return; +} + +event FireHoldFull(bool bIsFull) +{ + // End:0x12C + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + // End:0xD7 + if(bIsFull) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('FireHoldFull', 0); + } + else + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('FireHoldFull', 0); + } + } + //return; +} + +event BuildUp(int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional float fBuildupTime = 0.0000000) +{ + local AnimSequence FullBodyAnimSeq; + + GotoFormState('DeviceBuildup'); + // End:0x8F + if(PawnOwner != none) + { + PawnOwner.OnDeviceFormBuildup(c_nEquipSlot, fBuildupTime); + PawnOwner.AddRemoveAnimSetList(c_PawnAnimSetOverrideList, true); + } + ActivateFxGroup('BuildUp'); + c_nLastFxMode = c_nFireMode; + // End:0x1C3 + if(PawnOwner != none) + { + // End:0x1C3 + if(ModeDatas[c_nFireMode].c_nmOffhandAnimationType != 'None') + { + FullBodyAnimSeq = PawnOwner.Mesh.FindAnimSequence(ModeDatas[c_nFireMode].c_nmOffhandAnimationType); + // End:0x1C3 + if(FullBodyAnimSeq != none) + { + PawnOwner.PlayFullBodyAnim(ModeDatas[c_nFireMode].c_nmOffhandAnimationType, 1.0000000, 0.2000000, 0.2000000, false, true); + } + } + } + //return; +} + +simulated function TgDeviceForm InHandWeaponForm() +{ + // End:0x7A + if((PawnOwner != none) && int(PawnOwner.m_eEquippedInHand) != int(0)) + { + return PawnOwner.c_EquipForm[int(PawnOwner.m_eEquippedInHand)]; + } + return none; + //return ReturnValue; +} + +simulated event bool IsCurrentInHandWeapon() +{ + // End:0x83 + if(((PawnOwner != none) && int(PawnOwner.m_eEquippedInHand) != int(0)) && PawnOwner.c_EquipForm[int(PawnOwner.m_eEquippedInHand)] == self) + { + return true; + } + return false; + //return ReturnValue; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local PlayerController PC; + local int I; + + SetAbilityBlendNodesActive(true, false); + SetAmmoBlendNodesAmount(nAmmoRemaining); + DeactivateFxGroup('StartFire'); + ActivateFxGroup('StartFire'); + m_LockedTarget = Target; + // End:0x76 + if(UsesTargetingMode()) + { + c_bDeployed = true; + } + GotoFormState('DeviceFiring'); + // End:0x158 + if(PawnOwner != none) + { + PawnOwner.OnDeviceFormStartFire(c_nEquipSlot, fRefireTime, nFireMode, nAmmoRemaining); + // End:0x113 + if(!c_bHandDevice) + { + PawnOwner.AddRemoveAnimSetList(c_PawnAnimSetOverrideList, true); + } + PC = PawnOwner.GetALocalPlayerController(); + StartWhileFiringCameraAnim(PC, nFireMode); + } + c_nLastFxMode = c_nFireMode; + c_fLastReceivedRefireTime = fRefireTime; + I = 0; + J0x189: + + // End:0x22B [Loop If] + if(I < m_TargetingBlendList1P.Length) + { + // End:0x21D + if((m_TargetingBlendList1P[I] != none) && int(m_TargetingBlendList1P[I].m_EquipPoint) == c_nEquipSlot) + { + m_TargetingBlendList1P[I].EndTargeting(); + } + I++; + // [Loop Continue] + goto J0x189; + } + I = 0; + J0x236: + + // End:0x2D8 [Loop If] + if(I < m_TargetingBlendList3P.Length) + { + // End:0x2CA + if((m_TargetingBlendList3P[I] != none) && int(m_TargetingBlendList3P[I].m_EquipPoint) == c_nEquipSlot) + { + m_TargetingBlendList3P[I].EndTargeting(); + } + I++; + // [Loop Continue] + goto J0x236; + } + m_bRecoilTimerActive = true; + //return; +} + +function StartWhileFiringCameraAnim(PlayerController PC, optional int nFireMode = 0) +{ + local TgPlayerController TgPC; + + TgPC = TgPlayerController(PC); + // End:0x1C7 + if((((((PC != none) && !PC.IsSpectating()) && PawnOwner != none) && ((TgPC == none) && PC.Pawn == PawnOwner) || (TgPC != none) && TgPC.GetTgPawn() == PawnOwner) && PC.PlayerCamera != none) && ModeDatas[nFireMode].c_WhileFiringCameraAnim != none) + { + m_WhileFiringCameraAnimInst = PC.PlayerCamera.PlayCameraAnim(ModeDatas[nFireMode].c_WhileFiringCameraAnim, 1.0000000, 1.0000000, m_fWhileFiringCameraAnimBlendInTime, m_fWhileFiringCameraAnimBlendOutTime, m_bLoopWhileFiringCameraAnim); + } + //return; +} + +event StopWhileFiringCameraAnim(PlayerController PC, bool bImmediate) +{ + // End:0x8D + if(((m_WhileFiringCameraAnimInst != none) && PC != none) && PC.PlayerCamera != none) + { + PC.PlayerCamera.StopCameraAnim(m_WhileFiringCameraAnimInst, bImmediate); + } + //return; +} + +function OnEndViewTarget(PlayerController PC) +{ + StopWhileFiringCameraAnim(PC, true); + //return; +} + +event StopFire(int nFireModeNum) +{ + SetAbilityBlendNodesActive(false, false); + DisableChannelFireBlendNodes(); + // End:0x26 + if(c_Mesh != none) + { + } + DeactivateFxGroup('StopFire'); + ActivateFxGroup('StopFire'); + // End:0xD7 + if(PawnOwner != none) + { + PawnOwner.OnDeviceFormStopFire(c_nEquipSlot); + // End:0xAD + if(FormState == 'DeviceFiring') + { + GotoFormState('Active'); + } + StopWhileFiringCameraAnim(PawnOwner.GetALocalPlayerController(), false); + } + m_LockedTarget = none; + // End:0x10A + if(m_bRecoilTimerActive) + { + m_fRecoilTimer = 0.0000000; + m_bRecoilTimerActive = false; + } + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + // End:0x89 + if((HitLocation != vect(0.0000000, 0.0000000, 0.0000000)) && ModeDatas[c_nFireMode].c_FxInstantFire) + { + PlayImpactEffects(HitLocation, nEquipSlot, nSocketIndex, bSuccessfulHit); + } + SetAbilityBlendNodesActive(true, true, true); + // End:0xDF + if(PawnOwner != none) + { + PawnOwner.OnDeviceFormFire(c_nEquipSlot, fRefireTime, nFireMode); + } + //return; +} + +event FireMulti(Vector vAimStart, Vector vAimDir, int nFireMode, const out byte hitRanges[20], float fMaxRange, int nSeed, float fSpreadAngle, int nNumShots, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + local array vHitLocations; + local float fDistUnit; + + fDistUnit = fMaxRange / 255.0000000; + RecoverFireMultiHitLocations(vHitLocations, vAimStart, vAimDir, hitRanges, fDistUnit, nSeed, fSpreadAngle, nNumShots); + FireMultiUnpacked(vHitLocations, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime, fDistUnit); + //return; +} + +event FireMultiUnpacked(array vHitLocations, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime, optional float fPackedDistanceUnit = 0.0000000) +{ + local int I; + + // End:0xA2 + if(fPackedDistanceUnit > 0.0000000) + { + I = 0; + J0x37: + + // End:0x9F [Loop If] + if(I < vHitLocations.Length) + { + PlayImpactEffects(vHitLocations[I], nEquipSlot, nSocketIndex,,, fPackedDistanceUnit * 2.0000000, true); + I++; + // [Loop Continue] + goto J0x37; + } + } + else + { + I = 0; + J0xAD: + + // End:0x10F [Loop If] + if(I < vHitLocations.Length) + { + PlayImpactEffects(vHitLocations[I], nEquipSlot, nSocketIndex, bSuccessfulHit); + I++; + // [Loop Continue] + goto J0xAD; + } + } + // End:0x158 + if(PawnOwner != none) + { + PawnOwner.OnDeviceFormFire(c_nEquipSlot, fRefireTime, nFireMode); + } + //return; +} + +// Export UTgDeviceForm::execRecoverFireMultiHitLocations(FFrame&, void* const) +native function RecoverFireMultiHitLocations(out array vHitLocations, const out Vector vAimStart, const out Vector vAimDir, const out byte hitRanges[20], float fDistUnit, int nSeed, float fSpreadAngle, int nNumShots); + +event Hit(int nFireMode, Actor Target, float fDamageAmount, Vector HitLocation, Vector HitNormal, const out ExtraDamageInfo ExtraInfo) +{ + local TgSpectatorController Spectator; + local Actor ViewTarget; + local TgPlayerController PC; + local bool bOwnerLocalPlayer, bTargetLocalPlayer; + local TgPawn TargetPawn; + local TgDeployable TargetDeployable; + + // End:0x410 + if(PawnOwner != none) + { + PawnOwner.OnDeviceFormHit(c_nEquipSlot, Target, fDamageAmount, HitLocation, HitNormal, ExtraInfo); + PC = TgPlayerController(PawnOwner.GetALocalPlayerController()); + // End:0x10E + if((PC != none) && PC.GetTgPawn() == PawnOwner) + { + PC.ShowHit(Target, fDamageAmount, ExtraInfo); + } + TargetPawn = TgPawn(Target); + // End:0x3B4 + if((TargetPawn != none) && CanPlayBasicHitFx(TargetPawn)) + { + Spectator = none; + // End:0x1C5 + if(PawnOwner.WorldInfo.IsPlayingDemo()) + { + Spectator = TgSpectatorController(PawnOwner.GetALocalPlayerController()); + } + // End:0x260 + if(Spectator != none) + { + ViewTarget = Spectator.GetViewTarget(); + // End:0x25D + if((ViewTarget != none) && (ViewTarget == PawnOwner) || ViewTarget == TargetPawn) + { + TargetPawn.PlayHitReactionMaterialPulse(); + } + } + else + { + bOwnerLocalPlayer = (PawnOwner.Controller != none) && PawnOwner.Controller.IsLocalPlayerController(); + bTargetLocalPlayer = (TargetPawn.Controller != none) && TargetPawn.Controller.IsLocalPlayerController(); + // End:0x365 + if(bOwnerLocalPlayer || bTargetLocalPlayer) + { + TargetPawn.PlayHitReactionMaterialPulse(); + } + TargetPawn.PlayGenericTakeHit(HitLocation, HitNormal, PawnOwner, fDamageAmount, ExtraInfo); + } + } + else + { + TargetDeployable = TgDeployable(Target); + // End:0x410 + if(TargetDeployable != none) + { + TargetDeployable.PlayGenericTakeHit(HitLocation, HitNormal); + } + } + } + //return; +} + +event Cooldown(int nFireModeNum) +{ + GotoFormState('DeviceCoolDown'); + ActivateFxGroup('Cooldown'); + c_nLastFxMode = c_nFireMode; + //return; +} + +event CooldownComplete() +{ + // End:0x24 + if((c_bHandDevice == true) && (IsCurrentInHandWeapon()) == false) + { + return; + } + BeginActive(); + //return; +} + +event DoInterrupt() +{ + BeginActive(); + // End:0x41 + if(PawnOwner != none) + { + PawnOwner.OnDeviceFormInterruptFire(c_nEquipSlot); + } + SetAbilityBlendNodesActive(false, false, true); + //return; +} + +event DeviceAnimNotify() +{ + // End:0x21 + if(FormState == 'DeviceTakingOut') + { + AttachAndDeploy_DA(); + } + //return; +} + +simulated event AttachAndDeploy_DA() +{ + // End:0x38 + if(PawnOwner != none) + { + AttachInHandDevice_DA(PawnOwner.IsFirstPerson()); + } + //return; +} + +simulated function EndCurrentState() +{ + // End:0x2D + if(FormState == 'DeviceCoolDown') + { + DeactivateFxGroup('Cooldown'); + } + else + { + // End:0x5A + if(FormState == 'DeviceModeEquipping') + { + DeactivateFxGroup('EquipMode'); + } + else + { + // End:0x84 + if(FormState == 'DeviceBuildup') + { + DeactivateFxGroup('BuildUp'); + } + } + } + //return; +} + +simulated event GotoFormState(name NewState) +{ + // End:0x98 + if(NewState != FormState) + { + EndCurrentState(); + FormState = NewState; + // End:0x98 + if(((PawnOwner != none) && c_nEquipSlot > 0) && c_nEquipSlot < 33) + { + PawnOwner.c_EquipFormState[c_nEquipSlot] = NewState; + } + } + //return; +} + +simulated event PlayToggleTransitionAnimations(float transitionPercent, float totalTransitionTime, bool transitionToActive) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x8F [Loop If] + if(I < m_ToggleTransitionNodes1P.Length) + { + // End:0x81 + if(m_ToggleTransitionNodes1P[I] != none) + { + m_ToggleTransitionNodes1P[I].StartTransition(transitionPercent, totalTransitionTime, transitionToActive); + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x9A: + + // End:0x11E [Loop If] + if(I < m_ToggleTransitionNodes3P.Length) + { + // End:0x110 + if(m_ToggleTransitionNodes3P[I] != none) + { + m_ToggleTransitionNodes3P[I].StartTransition(transitionPercent, totalTransitionTime, transitionToActive); + } + I++; + // [Loop Continue] + goto J0x9A; + } + //return; +} + +simulated event SetToggleState(bool IsActive) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x7D [Loop If] + if(I < m_ToggleTransitionNodes1P.Length) + { + // End:0x6F + if(m_ToggleTransitionNodes1P[I] != none) + { + m_ToggleTransitionNodes1P[I].SetToggleState(IsActive); + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x88: + + // End:0xFA [Loop If] + if(I < m_ToggleTransitionNodes3P.Length) + { + // End:0xEC + if(m_ToggleTransitionNodes3P[I] != none) + { + m_ToggleTransitionNodes3P[I].SetToggleState(IsActive); + } + I++; + // [Loop Continue] + goto J0x88; + } + //return; +} + +simulated function RecoverDeviceState(TgPawn.TG_REP_DEVICE_STATE DesiredState) +{ + // End:0x0F + if(c_bDisableDefaultTimelapseRecovery) + { + return; + } + // End:0x5D + if((int(DesiredState) == int(1)) && FormState != 'DeviceFiring') + { + StartFire(c_nLastFxMode, c_fLastReceivedRefireTime); + } + else + { + // End:0xA7 + if((int(DesiredState) == int(0)) && FormState == 'DeviceFiring') + { + DoInterrupt(); + StopFire(c_nLastFxMode); + } + } + //return; +} + +simulated event OnRetrieveAnimDone() +{ + //return; +} + +simulated event OnDestroyed() +{ + //return; +} + +defaultproperties +{ + c_fTotalTransitionTime=0.5000000 + m_fWhileFiringCameraAnimBlendInTime=0.2000000 + m_fWhileFiringCameraAnimBlendOutTime=0.2000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_AccursedArm.uc b/exported/TgGame/Classes/TgDeviceForm_AccursedArm.uc new file mode 100755 index 00000000..bbe80039 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_AccursedArm.uc @@ -0,0 +1,73 @@ +class TgDeviceForm_AccursedArm extends TgDeviceForm + native(ChampAndroxus); + +var bool m_bShouldBeActive; +var float m_fActivationTime; +var float m_fCurrentActivationPercent; +var MaterialInterface m_cachedWeaponMaterial; +var MaterialInstanceConstant m_accursedArmMaterial; +var name m_nmUltimateActive; + +// Export UTgDeviceForm_AccursedArm::execCacheAccursedArmMaterial(FFrame&, void* const) +native simulated function CacheAccursedArmMaterial(); + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + // End:0x218 + if(PawnOwner != none) + { + // End:0x218 + if(PawnOwner.m_WeaponMesh != none) + { + // End:0x188 + if(PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + CacheAccursedArmMaterial(); + // End:0x131 + if(m_accursedArmMaterial != none) + { + m_cachedWeaponMaterial = PawnOwner.m_WeaponMesh.m_WeaponMesh1P.GetMaterial(2); + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.SetMaterial(2, m_accursedArmMaterial); + } + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup(m_nmUltimateActive, 0); + } + // End:0x218 + if(PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxActivateGroup(m_nmUltimateActive, 0); + } + } + } + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + //return; +} + +event StopFire(int nFireModeNum) +{ + local TgPawn_Androxus androxus; + + androxus = TgPawn_Androxus(PawnOwner); + // End:0x1C1 + if(androxus != none) + { + // End:0x133 + if((androxus.m_WeaponMesh != none) && androxus.m_WeaponMesh.m_WeaponMesh1P != none) + { + androxus.m_WeaponMesh.m_WeaponMesh1P.SetMaterial(2, m_cachedWeaponMaterial); + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup(m_nmUltimateActive, 0); + } + // End:0x1C1 + if(PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup(m_nmUltimateActive, 0); + } + } + super.StopFire(nFireModeNum); + //return; +} + +defaultproperties +{ + m_fActivationTime=0.4000000 + m_nmUltimateActive="UltimateActive" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_AccursedArmGun.uc b/exported/TgGame/Classes/TgDeviceForm_AccursedArmGun.uc new file mode 100755 index 00000000..700f04d2 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_AccursedArmGun.uc @@ -0,0 +1,22 @@ +class TgDeviceForm_AccursedArmGun extends TgDeviceForm; + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + // End:0x89 + if((HitLocation != vect(0.0000000, 0.0000000, 0.0000000)) && ModeDatas[c_nFireMode].c_FxInstantFire) + { + PlayImpactEffects(HitLocation, nEquipSlot, nSocketIndex, bSuccessfulHit); + } + // End:0xD2 + if(PawnOwner != none) + { + PawnOwner.OnDeviceFormFire(c_nEquipSlot, fRefireTime, nFireMode); + } + ActivateFxGroup('AccursedArm_MuzzleFlash'); + //return; +} + +defaultproperties +{ + m_bUseImpactFXOverride=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Advance.uc b/exported/TgGame/Classes/TgDeviceForm_Advance.uc new file mode 100755 index 00000000..7d8425a4 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Advance.uc @@ -0,0 +1,15 @@ +class TgDeviceForm_Advance extends TgDeviceForm; + +event Generic1(optional byte byExtraData) +{ + DeactivateFxGroup('Land_Special'); + ActivateFxGroup('Land_Special'); + //return; +} + +event Generic2(optional byte byExtraData) +{ + DeactivateFxGroup('Jump_Special'); + ActivateFxGroup('Jump_Special'); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_ArcingBeam.uc b/exported/TgGame/Classes/TgDeviceForm_ArcingBeam.uc new file mode 100755 index 00000000..5ab333ef --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_ArcingBeam.uc @@ -0,0 +1,174 @@ +class TgDeviceForm_ArcingBeam extends TgDeviceForm + native(ChampGrohk); + +struct native ArcingFXInfo +{ + var Actor Source; + var Actor Target; + var TgSpecialFx ArcingFX; + var float fRemainingActiveTime; + + structdefaultproperties + { + Source=none + Target=none + ArcingFX=none + fRemainingActiveTime=0.0000000 + } +}; + +var array m_ArcingBeamList; +var Actor m_BeamSourceActor; +var float m_fBeamPersistTime; +var bool m_bRequireDeviceIsFiring; +var bool m_bIsFXContinuous; +var int m_nBeamEffectID; +var TgPawn_Grohk m_CachedGrohkPawn; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + StopArcingBeamEffects(); + //return; +} + +event SetSourceArcingBeamEffect(Actor Source) +{ + m_BeamSourceActor = Source; + //return; +} + +event SetTargetArcingBeamEffect(Actor Target) +{ + local int I; + local bool bIsEnemy; + local ParticleChannelContainer Channels; + local TgWeaponMeshActor_Orb orbWeaponMesh; + + // End:0x4A + if((((FormState != 'DeviceFiring') && m_bRequireDeviceIsFiring) || PawnOwner == none) || m_BeamSourceActor == none) + { + return; + } + I = 0; + J0x55: + + // End:0x126 [Loop If] + if(I < m_ArcingBeamList.Length) + { + // End:0x118 + if((m_bIsFXContinuous && m_ArcingBeamList[I].Target == Target) && m_ArcingBeamList[I].Source == m_BeamSourceActor) + { + m_ArcingBeamList[I].fRemainingActiveTime = m_fBeamPersistTime; + return; + } + I++; + // [Loop Continue] + goto J0x55; + } + I = m_ArcingBeamList.Add(1); + m_ArcingBeamList[I].Target = Target; + m_ArcingBeamList[I].Source = m_BeamSourceActor; + m_BeamSourceActor = none; + m_ArcingBeamList[I].fRemainingActiveTime = m_fBeamPersistTime; + m_ArcingBeamList[I].ArcingFX = Class'TgGame.TgPawn'.static.GetSpecialFx(m_nBeamEffectID); + // End:0x541 + if(m_ArcingBeamList[I].ArcingFX != none) + { + m_ArcingBeamList[I].ArcingFX.AttachToOwner(m_ArcingBeamList[I].Source); + // End:0x336 + if(PawnOwner.IsLocallyControlled()) + { + Channels.Friendly = false; + Channels.Enemy = false; + Channels.LocalOwner = true; + } + else + { + bIsEnemy = !PawnOwner.IsFriendlyWithLocalPawn(); + Channels.Friendly = !bIsEnemy; + Channels.Enemy = bIsEnemy; + Channels.LocalOwner = false; + } + Channels.bInitialized = true; + m_ArcingBeamList[I].ArcingFX.OverridePSCChannels(Channels); + m_ArcingBeamList[I].ArcingFX.Activate(); + UpdateBeamEndLocation(I); + // End:0x541 + if((HasCachedGrohkPawn()) && m_CachedGrohkPawn.m_WeaponMesh != none) + { + orbWeaponMesh = TgWeaponMeshActor_Orb(m_CachedGrohkPawn.m_WeaponMesh); + // End:0x541 + if(orbWeaponMesh != none) + { + orbWeaponMesh.SetFireLoopDisplayGroup('Grohk_ChainLightning', Class'TgGame.TgSkeletalMeshComponent_Weapon'.default.m_nmFireLoopTailSound); + } + } + } + //return; +} + +// Export UTgDeviceForm_ArcingBeam::execUpdateBeamEndLocation(FFrame&, void* const) +native function UpdateBeamEndLocation(int Idx); + +function StopArcingBeamEffects(optional Actor Target) +{ + local int I; + local TgWeaponMeshActor_Orb orbWeaponMesh; + + // End:0x18A + if(Target == none) + { + I = 0; + J0x1B: + + // End:0xE2 [Loop If] + if(I < m_ArcingBeamList.Length) + { + m_ArcingBeamList[I].ArcingFX.Deactivate(true); + m_ArcingBeamList[I].ArcingFX.Detach(); + m_ArcingBeamList[I].ArcingFX = none; + I++; + // [Loop Continue] + goto J0x1B; + } + m_ArcingBeamList.Remove(0, m_ArcingBeamList.Length); + // End:0x18A + if((HasCachedGrohkPawn()) && m_CachedGrohkPawn.m_WeaponMesh != none) + { + orbWeaponMesh = TgWeaponMeshActor_Orb(m_CachedGrohkPawn.m_WeaponMesh); + // End:0x18A + if(orbWeaponMesh != none) + { + orbWeaponMesh.ResetFireLoopDisplayGroup(); + } + } + } + //return; +} + +simulated function bool HasCachedGrohkPawn() +{ + // End:0x2B + if(m_CachedGrohkPawn == none) + { + m_CachedGrohkPawn = TgPawn_Grohk(PawnOwner); + } + return m_CachedGrohkPawn != none; + //return ReturnValue; +} + +defaultproperties +{ + m_fBeamPersistTime=0.5000000 + m_bRequireDeviceIsFiring=true + m_bIsFXContinuous=true + m_nBeamEffectID=6980 + m_bUseImpactFXOverride=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_AstroInhand.uc b/exported/TgGame/Classes/TgDeviceForm_AstroInhand.uc new file mode 100755 index 00000000..a7108bd6 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_AstroInhand.uc @@ -0,0 +1,56 @@ +class TgDeviceForm_AstroInhand extends TgDeviceForm_SpinnerWhileFiring; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super(TgDeviceForm).StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + SetSpinnersRotationSpeedState(1); + //return; +} + +event StopFire(int nFireModeNum) +{ + super(TgDeviceForm).StopFire(nFireModeNum); + SetSpinnersRotationSpeedState(0); + //return; +} + +function SetSpinnersRotationSpeedState(int nState) +{ + local TgSkelCon_Spinner Spinner; + + // End:0x34 + foreach m_SpinnerSkelControls1p(Spinner) + { + SetSpinStates(Spinner, nState); + } + // End:0x69 + foreach m_SpinnerSkelControls3p(Spinner) + { + SetSpinStates(Spinner, nState); + } + //return; +} + +function SetSpinStates(TgSkelCon_Spinner pSpinner, int nState) +{ + pSpinner.m_nRotationSpeedState = nState; + // End:0x9D + if(nState == 1) + { + pSpinner.m_bSpinningUp = true; + pSpinner.m_bIsSpinning = true; + pSpinner.m_bSpinningDown = false; + } + else + { + pSpinner.m_bSpinningUp = false; + pSpinner.m_bSpinningDown = true; + pSpinner.m_bSpinDownToZero = false; + } + //return; +} + +defaultproperties +{ + m_SpinnerName="RINGS" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_BarikInhand.uc b/exported/TgGame/Classes/TgDeviceForm_BarikInhand.uc new file mode 100755 index 00000000..c27f71d5 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_BarikInhand.uc @@ -0,0 +1,6 @@ +class TgDeviceForm_BarikInhand extends TgDeviceForm; + +defaultproperties +{ + m_GameplayCurves=TgGameplayCurves'GP_Barik.DeviceInhand' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Barrage.uc b/exported/TgGame/Classes/TgDeviceForm_Barrage.uc new file mode 100755 index 00000000..6d223087 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Barrage.uc @@ -0,0 +1,78 @@ +class TgDeviceForm_Barrage extends TgDeviceForm; + +var TgPlayerController m_CachedActiveOverlayController; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local TgPlayerController TgPC; + + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x42 + if(PawnOwner == none) + { + return; + } + TgPC = TgPlayerController(PawnOwner.GetALocalPlayerController()); + // End:0xCA + if((TgPC == none) || !TgPC.GetTgPawn().IsEnemy(PawnOwner)) + { + return; + } + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + local BinocularSettings binoSettings; + + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + m_CachedActiveOverlayController = TgPlayerController(PawnOwner.GetALocalPlayerController()); + // End:0x21F + if((m_CachedActiveOverlayController != none) && m_CachedActiveOverlayController.GetTgPawn() == PawnOwner) + { + m_CachedActiveOverlayController.SetHUDOverlay(2); + binoSettings.fRange = 0.0000000; + binoSettings.nTargets = 0; + binoSettings.fTimer1 = 0.0010000; + binoSettings.fTimer2 = 1.0000000; + binoSettings.fTimer3 = 1.0000000; + binoSettings.fTimerDuration = 1.0000000; + // End:0x1F4 + if(PawnOwner != none) + { + binoSettings.rHeading = PawnOwner.Rotation; + } + m_CachedActiveOverlayController.SetBinocularSettings(binoSettings); + } + else + { + m_CachedActiveOverlayController = none; + } + //return; +} + +event StopFire(int nFireModeNum) +{ + local BinocularSettings binoSettings; + + super.StopFire(nFireModeNum); + // End:0x1AC + if((m_CachedActiveOverlayController != none) && m_CachedActiveOverlayController.GetTgPawn() == PawnOwner) + { + binoSettings.fRange = 0.0000000; + binoSettings.nTargets = 0; + binoSettings.fTimer1 = 0.0000000; + binoSettings.fTimer2 = 0.0000000; + binoSettings.fTimer3 = 0.0000000; + binoSettings.fTimerDuration = 1.0000000; + // End:0x163 + if(PawnOwner != none) + { + binoSettings.rHeading = PawnOwner.Rotation; + } + m_CachedActiveOverlayController.SetBinocularSettings(binoSettings); + m_CachedActiveOverlayController.SetHUDOverlay(0); + } + m_CachedActiveOverlayController = none; + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_BarrageFire.uc b/exported/TgGame/Classes/TgDeviceForm_BarrageFire.uc new file mode 100755 index 00000000..5d81d96b --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_BarrageFire.uc @@ -0,0 +1,57 @@ +class TgDeviceForm_BarrageFire extends TgDeviceForm + native(ChampViktor); + +var Actor m_LastTargetedActor; +var TgPlayerController m_CachedActiveOverlayController; +var float m_fIncomingTime; +var int m_nActiveShotNum; +var float m_fIncomingTimeCurrentShot; +var float m_fRemainingDurationPct; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + m_nActiveShotNum = nAmmoRemaining - 1; + m_fIncomingTimeCurrentShot = fRefireTime; + m_fIncomingTime = fRefireTime; + // End:0x164 + if((((PawnOwner != none) && PawnOwner.Mesh != none) && m_CachedActiveOverlayController != none) && m_CachedActiveOverlayController.GetTgPawn() == PawnOwner) + { + PawnOwner.Mesh.FxDeactivateGroup('ViktorBarrageConfirm', 0); + PawnOwner.Mesh.FxActivateGroup('ViktorBarrageConfirm', 0); + } + //return; +} + +simulated event EnterTargetingMode() +{ + m_nActiveShotNum = 3; + m_fIncomingTimeCurrentShot = 0.0000000; + m_fRemainingDurationPct = 1.0000000; + super.EnterTargetingMode(); + m_CachedActiveOverlayController = TgPlayerController(PawnOwner.GetALocalPlayerController()); + // End:0xAF + if((m_CachedActiveOverlayController != none) && m_CachedActiveOverlayController.GetTgPawn() != PawnOwner) + { + m_CachedActiveOverlayController = none; + } + //return; +} + +simulated event ExitTargetingMode() +{ + m_fIncomingTimeCurrentShot = 1.0000000; + super.ExitTargetingMode(); + //return; +} + +// Export UTgDeviceForm_BarrageFire::execUpdateBinocularSettings(FFrame&, void* const) +native function UpdateBinocularSettings(); + +// Export UTgDeviceForm_BarrageFire::execUsesTargetingMode(FFrame&, void* const) +native function bool UsesTargetingMode(); + +defaultproperties +{ + m_fIncomingTime=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_BladesInhand.uc b/exported/TgGame/Classes/TgDeviceForm_BladesInhand.uc new file mode 100755 index 00000000..1d22d700 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_BladesInhand.uc @@ -0,0 +1,14 @@ +class TgDeviceForm_BladesInhand extends TgDeviceForm + native(Devices); + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + // End:0x6A + if(PawnOwner != none) + { + PawnOwner.FxDeactivateGroupWeapon('Generic1', 0); + PawnOwner.FxActivateGroupWeapon('Generic1', 0, 0, 0, false, true); + } + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_Booster.uc b/exported/TgGame/Classes/TgDeviceForm_Booster.uc new file mode 100755 index 00000000..6033632b --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Booster.uc @@ -0,0 +1,128 @@ +class TgDeviceForm_Booster extends TgDeviceForm; + +var array m_FlyingBlendList1P; +var array m_FlyingBlendList3P; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByDrogozFlying AnimNode; + + super.Cache3PAnimNodes(SkelComp); + m_FlyingBlendList3P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByDrogozFlying', AnimNode) + { + m_FlyingBlendList3P.AddItem(AnimNode); + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByDrogozFlying AnimNode; + + super.Cache1PAnimNodes(SkelComp); + m_FlyingBlendList1P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByDrogozFlying', AnimNode) + { + m_FlyingBlendList1P.AddItem(AnimNode); + } + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local int I; + + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + I = 0; + J0x3C: + + // End:0xA4 [Loop If] + if(I < m_FlyingBlendList1P.Length) + { + // End:0x96 + if(m_FlyingBlendList1P[I] != none) + { + m_FlyingBlendList1P[I].StartedBooster(); + } + I++; + // [Loop Continue] + goto J0x3C; + } + I = 0; + J0xAF: + + // End:0x117 [Loop If] + if(I < m_FlyingBlendList3P.Length) + { + // End:0x109 + if(m_FlyingBlendList3P[I] != none) + { + m_FlyingBlendList3P[I].StartedBooster(); + } + I++; + // [Loop Continue] + goto J0xAF; + } + // End:0x153 + if(c_Mesh != none) + { + c_Mesh.FxActivateGroup('Drogoz_Thruster', 0); + } + //return; +} + +event StopFire(int nFireModeNum) +{ + local int I; + + super.StopFire(nFireModeNum); + I = 0; + J0x1E: + + // End:0x86 [Loop If] + if(I < m_FlyingBlendList1P.Length) + { + // End:0x78 + if(m_FlyingBlendList1P[I] != none) + { + m_FlyingBlendList1P[I].StoppedBooster(); + } + I++; + // [Loop Continue] + goto J0x1E; + } + I = 0; + J0x91: + + // End:0xF9 [Loop If] + if(I < m_FlyingBlendList3P.Length) + { + // End:0xEB + if(m_FlyingBlendList3P[I] != none) + { + m_FlyingBlendList3P[I].StoppedBooster(); + } + I++; + // [Loop Continue] + goto J0x91; + } + // End:0x133 + if(c_Mesh != none) + { + c_Mesh.FxDeactivateGroup('Drogoz_Thruster', 0); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_BuckInhand.uc b/exported/TgGame/Classes/TgDeviceForm_BuckInhand.uc new file mode 100755 index 00000000..aea1bfd5 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_BuckInhand.uc @@ -0,0 +1,6 @@ +class TgDeviceForm_BuckInhand extends TgDeviceForm; + +defaultproperties +{ + m_GameplayCurves=TgGameplayCurves'GP_Buck.DeviceInhand' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_CombatSlide.uc b/exported/TgGame/Classes/TgDeviceForm_CombatSlide.uc new file mode 100755 index 00000000..4ca7ca1f --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_CombatSlide.uc @@ -0,0 +1,23 @@ +class TgDeviceForm_CombatSlide extends TgDeviceForm; + +var() float m_fTransitionTime; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + PlayToggleTransitionAnimations(0.0000000, m_fTransitionTime, true); + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + PlayToggleTransitionAnimations(0.0000000, m_fTransitionTime, false); + //return; +} + +defaultproperties +{ + m_fTransitionTime=0.1000000 + m_bLoopWhileFiringCameraAnim=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Counter.uc b/exported/TgGame/Classes/TgDeviceForm_Counter.uc new file mode 100755 index 00000000..4bcad673 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Counter.uc @@ -0,0 +1,8 @@ +class TgDeviceForm_Counter extends TgDeviceForm + native(ChampDarklord); + +event Generic1(optional byte byExtraData) +{ + ActivateFxGroup('Darklord_AttackBlocked'); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_CounterAttack.uc b/exported/TgGame/Classes/TgDeviceForm_CounterAttack.uc new file mode 100755 index 00000000..8edadd1f --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_CounterAttack.uc @@ -0,0 +1,110 @@ +class TgDeviceForm_CounterAttack extends TgDeviceForm + native(ChampDarklord); + +var array m_DarklordNodes3p; +var array m_DarklordNodes1p; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimBlendByPaladinsCharacter AnimNode; + + super.Cache3PAnimNodes(SkelComp); + m_DarklordNodes3p.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimBlendByPaladinsCharacter', AnimNode) + { + m_DarklordNodes3p.AddItem(AnimNode); + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimBlendByPaladinsCharacter AnimNode; + + super.Cache1PAnimNodes(SkelComp); + m_DarklordNodes1p.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimBlendByPaladinsCharacter', AnimNode) + { + m_DarklordNodes1p.AddItem(AnimNode); + } + //return; +} + +event Generic1(optional byte byExtraData) +{ + local int I; + local bool bPlayCounterToIdleAnim; + local TgAnimBlendByPaladinsCharacter_Darklord darklordAnimNode; + + bPlayCounterToIdleAnim = int(byExtraData) == int(1); + I = 0; + J0x28: + + // End:0x109 [Loop If] + if(I < m_DarklordNodes3p.Length) + { + // End:0xFB + if(m_DarklordNodes3p[I] != none) + { + darklordAnimNode = TgAnimBlendByPaladinsCharacter_Darklord(m_DarklordNodes3p[I]); + // End:0xBA + if(darklordAnimNode != none) + { + darklordAnimNode.PlayCounterAttackAnim(bPlayCounterToIdleAnim); + } + else + { + // End:0xFB + if(bPlayCounterToIdleAnim) + { + m_DarklordNodes3p[I].OnDeviceStartFire(18, c_fLastReceivedRefireTime); + } + } + } + I++; + // [Loop Continue] + goto J0x28; + } + I = 0; + J0x114: + + // End:0x1F5 [Loop If] + if(I < m_DarklordNodes1p.Length) + { + // End:0x1E7 + if(m_DarklordNodes1p[I] != none) + { + darklordAnimNode = TgAnimBlendByPaladinsCharacter_Darklord(m_DarklordNodes1p[I]); + // End:0x1A6 + if(darklordAnimNode != none) + { + darklordAnimNode.PlayCounterAttackAnim(bPlayCounterToIdleAnim); + } + else + { + // End:0x1E7 + if(bPlayCounterToIdleAnim) + { + m_DarklordNodes1p[I].OnDeviceStartFire(18, c_fLastReceivedRefireTime); + } + } + } + I++; + // [Loop Continue] + goto J0x114; + } + super.Generic1(byExtraData); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_DarkConvergenceSub.uc b/exported/TgGame/Classes/TgDeviceForm_DarkConvergenceSub.uc new file mode 100755 index 00000000..3d818298 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_DarkConvergenceSub.uc @@ -0,0 +1 @@ +class TgDeviceForm_DarkConvergenceSub extends TgDeviceForm; diff --git a/exported/TgGame/Classes/TgDeviceForm_DarklordInhand.uc b/exported/TgGame/Classes/TgDeviceForm_DarklordInhand.uc new file mode 100755 index 00000000..b8ef1c7d --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_DarklordInhand.uc @@ -0,0 +1,188 @@ +class TgDeviceForm_DarklordInhand extends TgDeviceForm_Inhand + native(ChampDarklord); + +var TgPawn_Darklord m_CachedDarklord; +var const float m_fFadeParamMin; +var const float m_fFadeParamMax; +var const float m_fAmmoParamMin; +var const float m_fAmmoParamMax; +var const float m_fMaskParamMin; +var const float m_fMaskParamMax; +var float m_fPreviousAppliedAmmoPerc; +var float m_fCurrentAppliedAmmoPerc; +var const float m_fAnimatedReloadStartNormalizedTime; +var const float m_fAnimatedReloadEndNormalizedTime; +var float m_fReloadDuration; +var float m_fReloadTimer; + +simulated function bool HasCachedDarklord() +{ + // End:0x2B + if(m_CachedDarklord == none) + { + m_CachedDarklord = TgPawn_Darklord(PawnOwner); + } + return m_CachedDarklord != none; + //return ReturnValue; +} + +simulated function OnReload(float fReloadTime) +{ + m_fReloadDuration = fReloadTime; + m_fReloadTimer = fReloadTime; + //return; +} + +simulated event ForceUpdateAmmoCountFx(float fPreviousPerc, float fCurrentPerc) +{ + UpdateAmmoCountFx(fPreviousPerc, fCurrentPerc); + //return; +} + +simulated function UpdateAmmoCountFx(float fPreviousPerc, float fCurrentPerc) +{ + local int I; + local array FxList; + + // End:0x39 + if(m_fReloadTimer <= -1.0000000) + { + m_fPreviousAppliedAmmoPerc = fPreviousPerc; + m_fCurrentAppliedAmmoPerc = fCurrentPerc; + } + // End:0x650 + if((HasCachedDarklord()) && m_CachedDarklord.m_WeaponMesh != none) + { + // End:0x12F + if((fPreviousPerc <= 0.0000000) && fCurrentPerc > 0.0000000) + { + // End:0x12C + if(m_CachedDarklord.m_WeaponMesh.m_WeaponMesh1P != none) + { + m_CachedDarklord.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('AmmoGroup1', c_nFireMode); + } + } + else + { + // End:0x1ED + if((fPreviousPerc > 0.0000000) && fCurrentPerc <= 0.0000000) + { + // End:0x1ED + if(m_CachedDarklord.m_WeaponMesh.m_WeaponMesh1P != none) + { + m_CachedDarklord.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('AmmoGroup1', c_nFireMode); + } + } + } + // End:0x2B0 + if((fPreviousPerc <= 0.3400000) && fCurrentPerc > 0.3400000) + { + // End:0x2AD + if(m_CachedDarklord.m_WeaponMesh.m_WeaponMesh1P != none) + { + m_CachedDarklord.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('AmmoGroup2', c_nFireMode); + } + } + else + { + // End:0x36E + if((fPreviousPerc > 0.3400000) && fCurrentPerc <= 0.3400000) + { + // End:0x36E + if(m_CachedDarklord.m_WeaponMesh.m_WeaponMesh1P != none) + { + m_CachedDarklord.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('AmmoGroup2', c_nFireMode); + } + } + } + // End:0x431 + if((fPreviousPerc <= 0.6700000) && fCurrentPerc > 0.6700000) + { + // End:0x42E + if(m_CachedDarklord.m_WeaponMesh.m_WeaponMesh1P != none) + { + m_CachedDarklord.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('AmmoGroup3', c_nFireMode); + } + } + else + { + // End:0x4EF + if((fPreviousPerc > 0.6700000) && fCurrentPerc <= 0.6700000) + { + // End:0x4EF + if(m_CachedDarklord.m_WeaponMesh.m_WeaponMesh1P != none) + { + m_CachedDarklord.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('AmmoGroup3', c_nFireMode); + } + } + } + // End:0x60A + if(m_CachedDarklord.IsLocallyControlled()) + { + // End:0x60A + if(m_CachedDarklord.m_WeaponMesh.m_WeaponMesh1P != none) + { + FxList = PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxGetAll('AmmoGroup1', 0); + I = 0; + J0x5B5: + + // End:0x60A [Loop If] + if(I < FxList.Length) + { + UpdateSpecialFxMaterials(TgSpecialFx(FxList[I]), fCurrentPerc); + I++; + // [Loop Continue] + goto J0x5B5; + } + } + } + UpdateMeshMaterials(m_CachedDarklord.m_WeaponMesh.m_WeaponMesh1P, fCurrentPerc); + } + //return; +} + +// Export UTgDeviceForm_DarklordInhand::execUpdateSpecialFxMaterials(FFrame&, void* const) +native simulated function UpdateSpecialFxMaterials(TgSpecialFx Fx, float fPerc); + +simulated function UpdateMeshMaterials(TgSkeletalMeshComponent_Weapon Mesh, float fPerc) +{ + local int I; + local MaterialInstanceConstant MIC; + + // End:0x16E + if(Mesh != none) + { + I = 0; + J0x1A: + + // End:0x16E [Loop If] + if(I < Mesh.Materials.Length) + { + MIC = MaterialInstanceConstant(Mesh.Materials[I]); + // End:0x160 + if(MIC != none) + { + MIC.SetScalarParameterValue('Fade', Lerp(m_fFadeParamMin, m_fFadeParamMax, fPerc)); + MIC.SetScalarParameterValue('Ammo', Lerp(m_fAmmoParamMin, m_fAmmoParamMax, fPerc)); + MIC.SetScalarParameterValue('Emissive Ramp Mask', Lerp(m_fMaskParamMin, m_fMaskParamMax, fPerc)); + } + I++; + // [Loop Continue] + goto J0x1A; + } + } + //return; +} + +defaultproperties +{ + m_fFadeParamMin=0.5000000 + m_fFadeParamMax=1.0000000 + m_fAmmoParamMin=0.1000000 + m_fAmmoParamMax=1.0000000 + m_fMaskParamMin=0.1000000 + m_fMaskParamMax=1.0000000 + m_fAnimatedReloadStartNormalizedTime=0.3500000 + m_fAnimatedReloadEndNormalizedTime=0.5500000 + m_fReloadTimer=-1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_DemonInhand.uc b/exported/TgGame/Classes/TgDeviceForm_DemonInhand.uc new file mode 100755 index 00000000..07d91da4 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_DemonInhand.uc @@ -0,0 +1,2 @@ +class TgDeviceForm_DemonInhand extends TgDeviceForm + native(ChampDemon); diff --git a/exported/TgGame/Classes/TgDeviceForm_DimensionalLink.uc b/exported/TgGame/Classes/TgDeviceForm_DimensionalLink.uc new file mode 100755 index 00000000..1b7facb8 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_DimensionalLink.uc @@ -0,0 +1,52 @@ +class TgDeviceForm_DimensionalLink extends TgDeviceForm; + +var TgPawn_Ying m_CachedYingPawn; + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + local int I; + + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + // End:0x62 + if(!HasCachedYingPawn()) + { + return; + } + // End:0x9E + if(m_CachedYingPawn != none) + { + m_CachedYingPawn.FxReactivateGroupBody('YingDimensionalLink', 0); + } + // End:0x185 + if(m_CachedYingPawn.PopulateActiveDecoyList()) + { + I = 0; + J0xCC: + + // End:0x185 [Loop If] + if(I < m_CachedYingPawn.m_ActiveIllusions.Length) + { + // End:0x177 + if(NotEqual_InterfaceInterface(m_CachedYingPawn.m_ActiveIllusions[I], TgInterface_YingIllusion(none))) + { + m_CachedYingPawn.m_ActiveIllusions[I].PlayDimensionalLinkFX(); + } + I++; + // [Loop Continue] + goto J0xCC; + } + } + //return; +} + +simulated function bool HasCachedYingPawn() +{ + // End:0x38 + if(m_CachedYingPawn == none) + { + m_CachedYingPawn = TgPawn_Ying(PawnOwner); + return m_CachedYingPawn != none; + } + return true; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_Disengage.uc b/exported/TgGame/Classes/TgDeviceForm_Disengage.uc new file mode 100755 index 00000000..6c7902fc --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Disengage.uc @@ -0,0 +1,93 @@ +class TgDeviceForm_Disengage extends TgDeviceForm; + +var array m_STSNodes3p; +var array m_STSNodes1p; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeStanceTransitionerSynchronized AnimNode; + + super.Cache3PAnimNodes(SkelComp); + m_STSNodes3p.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeStanceTransitionerSynchronized', AnimNode) + { + m_STSNodes3p.AddItem(AnimNode); + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeStanceTransitionerSynchronized AnimNode; + + super.Cache1PAnimNodes(SkelComp); + m_STSNodes1p.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeStanceTransitionerSynchronized', AnimNode) + { + m_STSNodes1p.AddItem(AnimNode); + } + //return; +} + +function SetStance(bool bActivated) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x8F [Loop If] + if(I < m_STSNodes1p.Length) + { + // End:0x81 + if(m_STSNodes1p[I] != none) + { + m_STSNodes1p[I].ChangeStance(((bActivated) ? 1 : 0), false, bActivated); + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x9A: + + // End:0x11E [Loop If] + if(I < m_STSNodes3p.Length) + { + // End:0x110 + if(m_STSNodes3p[I] != none) + { + m_STSNodes3p[I].ChangeStance(((bActivated) ? 1 : 0), false, bActivated); + } + I++; + // [Loop Continue] + goto J0x9A; + } + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + SetStance(true); + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + SetStance(false); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_Dominance.uc b/exported/TgGame/Classes/TgDeviceForm_Dominance.uc new file mode 100755 index 00000000..c3cd1d05 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Dominance.uc @@ -0,0 +1,36 @@ +class TgDeviceForm_Dominance extends TgDeviceForm + native(ChampFlak); + +var SkelControlBase m_SKCFlagScale; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache3PAnimNodes(SkelComp); + // End:0x4A + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_SKCFlagScale = SkelComp.FindSkelControl('FlagScale'); + //return; +} + +simulated event HideFlag() +{ + // End:0x2F + if(m_SKCFlagScale != none) + { + m_SKCFlagScale.SetSkelControlActive(true); + } + //return; +} + +simulated event ShowFlag() +{ + // End:0x2F + if(m_SKCFlagScale != none) + { + m_SKCFlagScale.SetSkelControlActive(false); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_Drag.uc b/exported/TgGame/Classes/TgDeviceForm_Drag.uc new file mode 100755 index 00000000..4cb03cdd --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Drag.uc @@ -0,0 +1,763 @@ +class TgDeviceForm_Drag extends TgDeviceForm + native(ChampMakoa); + +enum EDragState +{ + DRAG_Inactive, // 0 + DRAG_Throw, // 1 + DRAG_Hit, // 2 + DRAG_Pull, // 3 + DRAG_EndPull, // 4 + DRAG_MissThrow, // 5 + DRAG_MissInvalid, // 6 + DRAG_MissThrowEnd, // 7 + DRAG_MissInvalidEnd, // 8 + DRAG_CloseRangeEnd, // 9 + DRAG_MAX // 10 +}; + +var Actor m_BeamTarget; +var bool m_bIsPawnTarget; +var int m_nPostureID; +var Vector m_vReleaseLocation; +var float m_fReleaseTime; +var const float m_fMissNoHitEndDistance; +var const float m_fMissNoHitEndTime; +var const float m_fMissInvalidEndDistance; +var const float m_fMissInvalidEndTime; +var const float m_fCloseRangeEndDistance; +var float m_fTruePostfireTime; +var export editinline TgSkeletalMeshComponent m_ChainMesh; +var const int m_nChainMeshID; +var TgSkelCon_HookChain c_ChainSkelCon; +var const name m_ChainSocket; +var array m_DragBlendList1P; +var array m_DragBlendList3P; +var array m_ChainBlendList; +var TgDeviceForm_Drag.EDragState m_DragState; + +// Export UTgDeviceForm_Drag::execHandleMissConditions(FFrame&, void* const) +native function HandleMissConditions(); + +// Export UTgDeviceForm_Drag::execUpdateChainEffects(FFrame&, void* const) +native function UpdateChainEffects(Vector vEndPoint); + +// Export UTgDeviceForm_Drag::execGetChainSocketLocation(FFrame&, void* const) +native function Vector GetChainSocketLocation(); + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByAbilityDrag AnimNode; + + super.Cache3PAnimNodes(SkelComp); + m_DragBlendList3P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByAbilityDrag', AnimNode) + { + m_DragBlendList3P.AddItem(AnimNode); + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByAbilityDrag AnimNode; + + super.Cache1PAnimNodes(SkelComp); + m_DragBlendList1P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByAbilityDrag', AnimNode) + { + m_DragBlendList1P.AddItem(AnimNode); + } + //return; +} + +function CacheChainAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByAbilityDragChain AnimNode; + + m_ChainBlendList.Length = 0; + // End:0x43 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0x8E + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByAbilityDragChain', AnimNode) + { + m_ChainBlendList.AddItem(AnimNode); + } + //return; +} + +function ConnectBeamToTarget(Actor Target) +{ + local TgPawn PawnTarget; + + // End:0x56 + if((((m_BeamTarget != none) && m_bIsPawnTarget) && Target != none) && Target.IsA('TgProjectile')) + { + return; + } + // End:0xF0 + if((m_BeamTarget != none) && m_bIsPawnTarget) + { + PawnTarget = TgPawn(m_BeamTarget); + // End:0xE5 + if(m_nPostureID >= 0) + { + // End:0xE5 + if(PawnTarget != none) + { + PawnTarget.PopPosture(m_nPostureID); + m_nPostureID = -1; + } + } + PawnTarget = none; + } + m_BeamTarget = Target; + // End:0x162 + if(m_BeamTarget != none) + { + m_vReleaseLocation = m_BeamTarget.Location; + UpdateChainEffects(m_BeamTarget.Location); + } + PawnTarget = TgPawn(m_BeamTarget); + // End:0x19C + if(PawnTarget != none) + { + m_bIsPawnTarget = true; + } + else + { + m_bIsPawnTarget = false; + } + // End:0x1E0 + if(m_bIsPawnTarget) + { + m_nPostureID = PawnTarget.PushPosture(19); + } + //return; +} + +event Generic1(optional byte byExtraData) +{ + local int I; + + // End:0x11D + if((int(m_DragState) == int(1)) || int(m_DragState) == int(2)) + { + m_DragState = 3; + I = 0; + J0x42: + + // End:0xAA [Loop If] + if(I < m_DragBlendList1P.Length) + { + // End:0x9C + if(m_DragBlendList1P[I] != none) + { + m_DragBlendList1P[I].HookPull(); + } + I++; + // [Loop Continue] + goto J0x42; + } + I = 0; + J0xB5: + + // End:0x11D [Loop If] + if(I < m_DragBlendList3P.Length) + { + // End:0x10F + if(m_DragBlendList3P[I] != none) + { + m_DragBlendList3P[I].HookPull(); + } + I++; + // [Loop Continue] + goto J0xB5; + } + } + //return; +} + +event Generic2(optional byte byExtraData) +{ + local int I; + + // End:0x290 + if((int(m_DragState) == int(1)) || int(m_DragState) == int(2)) + { + // End:0x62 + if(m_BeamTarget != none) + { + m_vReleaseLocation = m_BeamTarget.Location; + } + m_fReleaseTime = PawnOwner.WorldInfo.TimeSeconds; + ConnectBeamToTarget(none); + m_DragState = 5; + // End:0x137 + if((PawnOwner != none) && m_ChainMesh != none) + { + m_ChainMesh.FxActivateIndependant('Generic1', 0, m_vReleaseLocation, Normal(PawnOwner.Location - m_vReleaseLocation)); + } + I = 0; + J0x142: + + // End:0x1AA [Loop If] + if(I < m_DragBlendList1P.Length) + { + // End:0x19C + if(m_DragBlendList1P[I] != none) + { + m_DragBlendList1P[I].HookMissNotHit(); + } + I++; + // [Loop Continue] + goto J0x142; + } + I = 0; + J0x1B5: + + // End:0x21D [Loop If] + if(I < m_DragBlendList3P.Length) + { + // End:0x20F + if(m_DragBlendList3P[I] != none) + { + m_DragBlendList3P[I].HookMissNotHit(); + } + I++; + // [Loop Continue] + goto J0x1B5; + } + I = 0; + J0x228: + + // End:0x290 [Loop If] + if(I < m_ChainBlendList.Length) + { + // End:0x282 + if(m_ChainBlendList[I] != none) + { + m_ChainBlendList[I].ChainMiss(); + } + I++; + // [Loop Continue] + goto J0x228; + } + } + //return; +} + +event Generic3(optional byte byExtraData) +{ + local PhysicalMaterial TracedMaterial; + local Vector HitLocation, chainDirection; + local float TraceLength; + local name TracedMaterialType; + local int I; + + // End:0x51A + if(((int(m_DragState) == int(1)) || int(m_DragState) == int(2)) || int(m_DragState) == int(3)) + { + // End:0x78 + if(m_BeamTarget != none) + { + m_vReleaseLocation = m_BeamTarget.Location; + } + m_fReleaseTime = PawnOwner.WorldInfo.TimeSeconds; + ConnectBeamToTarget(none); + // End:0x291 + if((PawnOwner != none) && m_ChainMesh != none) + { + chainDirection = Normal(m_vReleaseLocation - PawnOwner.Location); + TraceLength = 10.0000000; + TracedMaterial = PawnOwner.TraceWorldPhysicalGeometry(m_vReleaseLocation - (chainDirection * TraceLength), m_vReleaseLocation + (chainDirection * TraceLength), HitLocation); + TracedMaterialType = 'Default'; + // End:0x21F + if((!IsZero(HitLocation) && TracedMaterial != none) && TracedMaterial.MaterialTypeName != 'None') + { + TracedMaterialType = TracedMaterial.MaterialTypeName; + } + PawnOwner.SetSwitch('MaterialType', TracedMaterialType); + m_ChainMesh.FxActivateIndependant('Generic2', 0, m_vReleaseLocation, -chainDirection); + } + // End:0x3B5 + if(VSize(m_vReleaseLocation - (GetChainSocketLocation())) <= m_fCloseRangeEndDistance) + { + I = 0; + J0x2C1: + + // End:0x329 [Loop If] + if(I < m_DragBlendList1P.Length) + { + // End:0x31B + if(m_DragBlendList1P[I] != none) + { + m_DragBlendList1P[I].HookCloseRangeEnd(); + } + I++; + // [Loop Continue] + goto J0x2C1; + } + I = 0; + J0x334: + + // End:0x39C [Loop If] + if(I < m_DragBlendList3P.Length) + { + // End:0x38E + if(m_DragBlendList3P[I] != none) + { + m_DragBlendList3P[I].HookCloseRangeEnd(); + } + I++; + // [Loop Continue] + goto J0x334; + } + HideChain(); + m_DragState = 9; + } + else + { + I = 0; + J0x3C0: + + // End:0x428 [Loop If] + if(I < m_DragBlendList1P.Length) + { + // End:0x41A + if(m_DragBlendList1P[I] != none) + { + m_DragBlendList1P[I].HookMissInvalid(); + } + I++; + // [Loop Continue] + goto J0x3C0; + } + I = 0; + J0x433: + + // End:0x49B [Loop If] + if(I < m_DragBlendList3P.Length) + { + // End:0x48D + if(m_DragBlendList3P[I] != none) + { + m_DragBlendList3P[I].HookMissInvalid(); + } + I++; + // [Loop Continue] + goto J0x433; + } + I = 0; + J0x4A6: + + // End:0x50E [Loop If] + if(I < m_ChainBlendList.Length) + { + // End:0x500 + if(m_ChainBlendList[I] != none) + { + m_ChainBlendList[I].ChainInvalid(); + } + I++; + // [Loop Continue] + goto J0x4A6; + } + m_DragState = 6; + } + } + //return; +} + +event Generic4(optional byte byExtraData) +{ + local int I; + + // End:0x13D + if(((int(m_DragState) == int(1)) || int(m_DragState) == int(2)) || int(m_DragState) == int(3)) + { + m_DragState = 4; + I = 0; + J0x58: + + // End:0xC0 [Loop If] + if(I < m_DragBlendList1P.Length) + { + // End:0xB2 + if(m_DragBlendList1P[I] != none) + { + m_DragBlendList1P[I].HookEnd(); + } + I++; + // [Loop Continue] + goto J0x58; + } + I = 0; + J0xCB: + + // End:0x133 [Loop If] + if(I < m_DragBlendList3P.Length) + { + // End:0x125 + if(m_DragBlendList3P[I] != none) + { + m_DragBlendList3P[I].HookEnd(); + } + I++; + // [Loop Continue] + goto J0xCB; + } + HideChain(); + } + //return; +} + +simulated event StartMissNoHitEnd() +{ + local int I; + + // End:0x110 + if(int(m_DragState) == int(5)) + { + I = 0; + J0x1F: + + // End:0x87 [Loop If] + if(I < m_DragBlendList1P.Length) + { + // End:0x79 + if(m_DragBlendList1P[I] != none) + { + m_DragBlendList1P[I].HookEndMissNoHit(); + } + I++; + // [Loop Continue] + goto J0x1F; + } + I = 0; + J0x92: + + // End:0xFA [Loop If] + if(I < m_DragBlendList3P.Length) + { + // End:0xEC + if(m_DragBlendList3P[I] != none) + { + m_DragBlendList3P[I].HookEndMissNoHit(); + } + I++; + // [Loop Continue] + goto J0x92; + } + HideChain(); + m_DragState = 7; + } + //return; +} + +simulated event StartMissInvalidEnd() +{ + local int I; + + // End:0x110 + if(int(m_DragState) == int(6)) + { + I = 0; + J0x1F: + + // End:0x87 [Loop If] + if(I < m_DragBlendList1P.Length) + { + // End:0x79 + if(m_DragBlendList1P[I] != none) + { + m_DragBlendList1P[I].HookEndMissInvalid(); + } + I++; + // [Loop Continue] + goto J0x1F; + } + I = 0; + J0x92: + + // End:0xFA [Loop If] + if(I < m_DragBlendList3P.Length) + { + // End:0xEC + if(m_DragBlendList3P[I] != none) + { + m_DragBlendList3P[I].HookEndMissInvalid(); + } + I++; + // [Loop Continue] + goto J0x92; + } + HideChain(); + m_DragState = 8; + } + //return; +} + +simulated function HideChain() +{ + StopChainEffects(); + ConnectBeamToTarget(none); + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local int I; + + PlayChainEffects(); + m_bIsPawnTarget = false; + m_DragState = 1; + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + I = 0; + J0x5E: + + // End:0xC6 [Loop If] + if(I < m_DragBlendList1P.Length) + { + // End:0xB8 + if(m_DragBlendList1P[I] != none) + { + m_DragBlendList1P[I].ThrowHook(); + } + I++; + // [Loop Continue] + goto J0x5E; + } + I = 0; + J0xD1: + + // End:0x139 [Loop If] + if(I < m_DragBlendList3P.Length) + { + // End:0x12B + if(m_DragBlendList3P[I] != none) + { + m_DragBlendList3P[I].ThrowHook(); + } + I++; + // [Loop Continue] + goto J0xD1; + } + I = 0; + J0x144: + + // End:0x1AC [Loop If] + if(I < m_ChainBlendList.Length) + { + // End:0x19E + if(m_ChainBlendList[I] != none) + { + m_ChainBlendList[I].ChainThrow(); + } + I++; + // [Loop Continue] + goto J0x144; + } + //return; +} + +event Hit(int nFireMode, Actor Target, float fDamageAmount, Vector HitLocation, Vector HitNormal, const out ExtraDamageInfo ExtraInfo) +{ + local int I; + + super.Hit(nFireMode, Target, fDamageAmount, HitLocation, HitNormal, ExtraInfo); + // End:0x1CC + if(int(m_DragState) == int(1)) + { + ConnectBeamToTarget(Target); + m_DragState = 2; + I = 0; + J0x7E: + + // End:0xE6 [Loop If] + if(I < m_DragBlendList1P.Length) + { + // End:0xD8 + if(m_DragBlendList1P[I] != none) + { + m_DragBlendList1P[I].HookHit(); + } + I++; + // [Loop Continue] + goto J0x7E; + } + I = 0; + J0xF1: + + // End:0x159 [Loop If] + if(I < m_DragBlendList3P.Length) + { + // End:0x14B + if(m_DragBlendList3P[I] != none) + { + m_DragBlendList3P[I].HookHit(); + } + I++; + // [Loop Continue] + goto J0xF1; + } + I = 0; + J0x164: + + // End:0x1CC [Loop If] + if(I < m_ChainBlendList.Length) + { + // End:0x1BE + if(m_ChainBlendList[I] != none) + { + m_ChainBlendList[I].ChainHit(); + } + I++; + // [Loop Continue] + goto J0x164; + } + } + //return; +} + +event StopFire(int nFireModeNum) +{ + switch(m_DragState) + { + // End:0x18 + case 1: + // End:0x1D + case 2: + // End:0x30 + case 3: + Generic4(); + // End:0x5A + break; + // End:0x42 + case 5: + StartMissNoHitEnd(); + // End:0x5A + break; + // End:0x54 + case 6: + StartMissInvalidEnd(); + // End:0x5A + break; + // End:0xFFFF + default: + // End:0x5A + break; + break; + } + m_DragState = 0; + super.StopFire(nFireModeNum); + //return; +} + +simulated function PlayChainEffects() +{ + // End:0x11 + if(PawnOwner == none) + { + return; + } + // End:0x279 + if(((m_ChainMesh == none) && m_nChainMeshID > 0) && PawnOwner.Mesh != none) + { + m_ChainMesh = TgSkeletalMeshComponent(PawnOwner.CreateMeshComponent(m_nChainMeshID)); + // End:0x279 + if(m_ChainMesh != none) + { + PawnOwner.AttachComponent(m_ChainMesh); + m_ChainMesh.SetLightEnvironment(PawnOwner.Mesh.LightEnvironment); + m_ChainMesh.SetShadowParent(PawnOwner.Mesh); + m_ChainMesh.SetTranslation(PawnOwner.Mesh.Translation); + PawnOwner.InitializeSilhouetteComponent(m_ChainMesh); + c_ChainSkelCon = TgSkelCon_HookChain(m_ChainMesh.FindSkelControl('ChainScale')); + // End:0x266 + if(c_ChainSkelCon != none) + { + c_ChainSkelCon.m_DragDeviceForm = self; + c_ChainSkelCon.m_ChainComponent = m_ChainMesh; + } + CacheChainAnimNodes(m_ChainMesh); + } + } + // End:0x375 + if(m_ChainMesh != none) + { + // End:0x2FE + if(PawnOwner.Mesh != none) + { + m_ChainMesh.SetTranslation(PawnOwner.Mesh.Translation); + } + // End:0x355 + if(c_ChainSkelCon != none) + { + c_ChainSkelCon.m_DragDeviceForm = self; + c_ChainSkelCon.m_ChainComponent = m_ChainMesh; + } + m_ChainMesh.SetHidden(false); + } + //return; +} + +simulated function StopChainEffects() +{ + // End:0xB4 + if(m_ChainMesh != none) + { + m_ChainMesh.SetHidden(true); + // End:0xB4 + if(PawnOwner != none) + { + // End:0xB4 + if(PawnOwner.Mesh != none) + { + m_ChainMesh.SetTranslation(PawnOwner.Mesh.Translation); + } + } + } + //return; +} + +simulated event SetChainLocation(Vector vLocalChainLocation, Vector vLocalSocketLocation) +{ + local Rotator chainRotation; + + // End:0x7F + if(m_ChainMesh != none) + { + m_ChainMesh.SetTranslation(vLocalChainLocation); + chainRotation = Rotator(vLocalChainLocation - vLocalSocketLocation); + m_ChainMesh.SetRotation(chainRotation); + } + //return; +} + +defaultproperties +{ + m_fMissNoHitEndDistance=80.0000000 + m_fMissNoHitEndTime=0.1000000 + m_fMissInvalidEndDistance=80.0000000 + m_fMissInvalidEndTime=0.1000000 + m_fCloseRangeEndDistance=200.0000000 + m_fTruePostfireTime=0.3000000 + m_nChainMeshID=5925 + m_ChainSocket="WSO_FX_01" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_DragonSlam.uc b/exported/TgGame/Classes/TgDeviceForm_DragonSlam.uc new file mode 100755 index 00000000..93e1589e --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_DragonSlam.uc @@ -0,0 +1,306 @@ +class TgDeviceForm_DragonSlam extends TgDeviceForm; + +var bool m_bStartFireInAir; +var array m_DragonSlamBlendList1P; +var array m_DragonSlamBlendList3P; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByAbilityDragonSlam AnimNode; + + super.Cache3PAnimNodes(SkelComp); + m_DragonSlamBlendList3P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByAbilityDragonSlam', AnimNode) + { + m_DragonSlamBlendList3P.AddItem(AnimNode); + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByAbilityDragonSlam AnimNode; + + super.Cache1PAnimNodes(SkelComp); + m_DragonSlamBlendList1P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByAbilityDragonSlam', AnimNode) + { + m_DragonSlamBlendList1P.AddItem(AnimNode); + } + //return; +} + +event BuildUp(int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional float fBuildupTime = 0.0000000) +{ + // End:0x87 + if(((PawnOwner != none) && int(PawnOwner.Physics) == int(4)) || int(PawnOwner.Physics) == int(2)) + { + m_bStartFireInAir = true; + } + else + { + m_bStartFireInAir = false; + } + super.BuildUp(nFireMode, nEquipSlot, nSocketIndex, fBuildupTime); + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local int I; + local TgPawn_Drogoz drogozPawn; + + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x172 + if(PawnOwner != none) + { + drogozPawn = TgPawn_Drogoz(PawnOwner); + // End:0x172 + if(drogozPawn != none) + { + drogozPawn.m_bDragonSlamIsBlocking = true; + drogozPawn.m_bUseDragonSlamRetrieve = true; + drogozPawn.m_bDragonSlamHasHit = false; + // End:0x172 + if(drogozPawn.Mesh != none) + { + drogozPawn.Mesh.FxActivateIndependant('UltimateActivated', 0, drogozPawn.Location, Vector(drogozPawn.Rotation)); + } + } + } + I = 0; + J0x17D: + + // End:0x21E [Loop If] + if(I < m_DragonSlamBlendList1P.Length) + { + // End:0x210 + if(m_DragonSlamBlendList1P[I] != none) + { + // End:0x1E7 + if(m_bStartFireInAir) + { + m_DragonSlamBlendList1P[I].ReadyFlightFromAir(); + } + else + { + m_DragonSlamBlendList1P[I].ReadyFlightFromGround(); + } + } + I++; + // [Loop Continue] + goto J0x17D; + } + I = 0; + J0x229: + + // End:0x2CA [Loop If] + if(I < m_DragonSlamBlendList3P.Length) + { + // End:0x2BC + if(m_DragonSlamBlendList3P[I] != none) + { + // End:0x293 + if(m_bStartFireInAir) + { + m_DragonSlamBlendList3P[I].ReadyFlightFromAir(); + } + else + { + m_DragonSlamBlendList3P[I].ReadyFlightFromGround(); + } + } + I++; + // [Loop Continue] + goto J0x229; + } + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + local int I; + + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + I = 0; + J0x5C: + + // End:0xC4 [Loop If] + if(I < m_DragonSlamBlendList1P.Length) + { + // End:0xB6 + if(m_DragonSlamBlendList1P[I] != none) + { + m_DragonSlamBlendList1P[I].Fly(); + } + I++; + // [Loop Continue] + goto J0x5C; + } + I = 0; + J0xCF: + + // End:0x137 [Loop If] + if(I < m_DragonSlamBlendList3P.Length) + { + // End:0x129 + if(m_DragonSlamBlendList3P[I] != none) + { + m_DragonSlamBlendList3P[I].Fly(); + } + I++; + // [Loop Continue] + goto J0xCF; + } + // End:0x173 + if(c_Mesh != none) + { + c_Mesh.FxActivateGroup('Drogoz_Ult', 0); + } + //return; +} + +event Hit(int nFireMode, Actor Target, float fDamageAmount, Vector HitLocation, Vector HitNormal, const out ExtraDamageInfo ExtraInfo) +{ + local int I; + local TgPawn_Drogoz drogozPawn; + + // End:0x7F + if(PawnOwner != none) + { + drogozPawn = TgPawn_Drogoz(PawnOwner); + // End:0x7F + if(drogozPawn != none) + { + drogozPawn.m_fZoomDurationOverride = 0.0100000; + drogozPawn.m_bDragonSlamHasHit = true; + } + } + super.Hit(nFireMode, Target, fDamageAmount, HitLocation, HitNormal, ExtraInfo); + I = 0; + J0xCA: + + // End:0x132 [Loop If] + if(I < m_DragonSlamBlendList1P.Length) + { + // End:0x124 + if(m_DragonSlamBlendList1P[I] != none) + { + m_DragonSlamBlendList1P[I].HitTarget(); + } + I++; + // [Loop Continue] + goto J0xCA; + } + I = 0; + J0x13D: + + // End:0x1A5 [Loop If] + if(I < m_DragonSlamBlendList3P.Length) + { + // End:0x197 + if(m_DragonSlamBlendList3P[I] != none) + { + m_DragonSlamBlendList3P[I].HitTarget(); + } + I++; + // [Loop Continue] + goto J0x13D; + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + Cleanup(); + //return; +} + +event DoInterrupt() +{ + super.DoInterrupt(); + Cleanup(); + //return; +} + +function Cleanup() +{ + local int I; + local TgPawn_Drogoz drogozPawn; + local TgPlayerController OwnerPC; + + // End:0x11F + if(PawnOwner != none) + { + drogozPawn = TgPawn_Drogoz(PawnOwner); + // End:0x11F + if(drogozPawn != none) + { + drogozPawn.m_bDragonSlamIsBlocking = false; + // End:0x11F + if(!drogozPawn.m_bDragonSlamHasHit) + { + drogozPawn.m_fZoomDurationOverride = 0.0100000; + OwnerPC = TgPlayerController(drogozPawn.Controller); + // End:0x11F + if(OwnerPC != none) + { + // End:0x11F + if(drogozPawn != none) + { + drogozPawn.FxReactivateGroupSelf('Drogoz_UltMiss', 0); + } + } + } + } + } + I = 0; + J0x12A: + + // End:0x192 [Loop If] + if(I < m_DragonSlamBlendList1P.Length) + { + // End:0x184 + if(m_DragonSlamBlendList1P[I] != none) + { + m_DragonSlamBlendList1P[I].EndFlying(); + } + I++; + // [Loop Continue] + goto J0x12A; + } + I = 0; + J0x19D: + + // End:0x205 [Loop If] + if(I < m_DragonSlamBlendList3P.Length) + { + // End:0x1F7 + if(m_DragonSlamBlendList3P[I] != none) + { + m_DragonSlamBlendList3P[I].EndFlying(); + } + I++; + // [Loop Continue] + goto J0x19D; + } + // End:0x23F + if(c_Mesh != none) + { + c_Mesh.FxDeactivateGroup('Drogoz_Ult', 0); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_FlakInhand.uc b/exported/TgGame/Classes/TgDeviceForm_FlakInhand.uc new file mode 100755 index 00000000..bd394e9e --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_FlakInhand.uc @@ -0,0 +1,26 @@ +class TgDeviceForm_FlakInhand extends TgDeviceForm + native(ChampFlak); + +// Export UTgDeviceForm_FlakInhand::execTraceForImpactFX(FFrame&, void* const) +native function TraceForImpactFX(); + +// Export UTgDeviceForm_FlakInhand::execPlayHitSound(FFrame&, void* const) +native function PlayHitSound(Vector Location, TgPawn Target); + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + TraceForImpactFX(); + //return; +} + +event Hit(int nFireMode, Actor Target, float fDamageAmount, Vector HitLocation, Vector HitNormal, const out ExtraDamageInfo ExtraInfo) +{ + super.Hit(nFireMode, Target, fDamageAmount, HitLocation, HitNormal, ExtraInfo); + // End:0x74 + if(Target != none) + { + PlayHitSound(HitLocation, TgPawn(Target)); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_FragGrenade.uc b/exported/TgGame/Classes/TgDeviceForm_FragGrenade.uc new file mode 100755 index 00000000..4b0478b0 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_FragGrenade.uc @@ -0,0 +1,117 @@ +class TgDeviceForm_FragGrenade extends TgDeviceForm; + +var array m_FragGrenadeBlendList1P; +var array m_FragGrenadeBlendList3P; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByAbilityFragGrenade AnimNode; + + super.Cache3PAnimNodes(SkelComp); + m_FragGrenadeBlendList3P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByAbilityFragGrenade', AnimNode) + { + m_FragGrenadeBlendList3P.AddItem(AnimNode); + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByAbilityFragGrenade AnimNode; + + super.Cache1PAnimNodes(SkelComp); + m_FragGrenadeBlendList1P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByAbilityFragGrenade', AnimNode) + { + m_FragGrenadeBlendList1P.AddItem(AnimNode); + } + //return; +} + +event Generic1(optional byte byExtraData) +{ + local int I; + + I = 0; + J0x0C: + + // End:0x74 [Loop If] + if(I < m_FragGrenadeBlendList1P.Length) + { + // End:0x66 + if(m_FragGrenadeBlendList1P[I] != none) + { + m_FragGrenadeBlendList1P[I].StartThrow(); + } + I++; + // [Loop Continue] + goto J0x0C; + } + I = 0; + J0x7F: + + // End:0xE7 [Loop If] + if(I < m_FragGrenadeBlendList3P.Length) + { + // End:0xD9 + if(m_FragGrenadeBlendList3P[I] != none) + { + m_FragGrenadeBlendList3P[I].StartThrow(); + } + I++; + // [Loop Continue] + goto J0x7F; + } + //return; +} + +event DoInterrupt() +{ + local int I; + + super.DoInterrupt(); + I = 0; + J0x15: + + // End:0x7D [Loop If] + if(I < m_FragGrenadeBlendList1P.Length) + { + // End:0x6F + if(m_FragGrenadeBlendList1P[I] != none) + { + m_FragGrenadeBlendList1P[I].OnInterrupt(); + } + I++; + // [Loop Continue] + goto J0x15; + } + I = 0; + J0x88: + + // End:0xF0 [Loop If] + if(I < m_FragGrenadeBlendList3P.Length) + { + // End:0xE2 + if(m_FragGrenadeBlendList3P[I] != none) + { + m_FragGrenadeBlendList3P[I].OnInterrupt(); + } + I++; + // [Loop Continue] + goto J0x88; + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_GaeBolg.uc b/exported/TgGame/Classes/TgDeviceForm_GaeBolg.uc new file mode 100755 index 00000000..7bb33c98 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_GaeBolg.uc @@ -0,0 +1,66 @@ +class TgDeviceForm_GaeBolg extends TgDeviceForm; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local TgPawn_BarrierTank inaraPawn; + + // End:0x14A + if(PawnOwner != none) + { + inaraPawn = TgPawn_BarrierTank(PawnOwner); + // End:0x14A + if(inaraPawn != none) + { + inaraPawn.m_bUseGaeBolgRetrieve = true; + inaraPawn.m_fZoomDurationOverride = 0.1000000; + inaraPawn.m_fZoomDistOverride = 0.5000000; + // End:0x14A + if(inaraPawn.Mesh != none) + { + inaraPawn.Mesh.FxActivateIndependant('UltimateActivated', 0, inaraPawn.Location, Vector(inaraPawn.Rotation)); + } + } + } + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + local TgPawn_BarrierTank inaraPawn; + + // End:0xB3 + if(PawnOwner != none) + { + inaraPawn = TgPawn_BarrierTank(PawnOwner); + // End:0xB3 + if(inaraPawn != none) + { + inaraPawn.m_bUseGaeBolgRetrieve = true; + inaraPawn.m_fZoomDurationOverride = 0.1000000; + inaraPawn.m_fZoomDistOverride = 0.0000000; + } + } + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + //return; +} + +event DoInterrupt() +{ + local TgPawn_BarrierTank inaraPawn; + + super.DoInterrupt(); + // End:0xAD + if(PawnOwner != none) + { + inaraPawn = TgPawn_BarrierTank(PawnOwner); + // End:0xAD + if(inaraPawn != none) + { + inaraPawn.m_bUseGaeBolgRetrieve = false; + inaraPawn.m_fZoomDurationOverride = 0.1000000; + inaraPawn.m_fZoomDistOverride = 0.0000000; + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_GauntletInhand.uc b/exported/TgGame/Classes/TgDeviceForm_GauntletInhand.uc new file mode 100755 index 00000000..969f2bcc --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_GauntletInhand.uc @@ -0,0 +1,85 @@ +class TgDeviceForm_GauntletInhand extends TgDeviceForm_SpinnerWhileFiring; + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + SetSpinnersRotationSpeedState(((bSuccessfulHit) ? 1 : 0)); + super(TgDeviceForm).Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + SetLockedForBlendNodes(bSuccessfulHit); + // End:0x28E + if(!bSuccessfulHit) + { + // End:0x28E + if((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) + { + // End:0x1A9 + if(PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('FireFailed', 0); + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('FireFailed', 0); + } + // End:0x28E + if(PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('FireFailed', 0); + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxActivateGroup('FireFailed', 0); + } + } + } + //return; +} + +function SetLockedForBlendNodes(bool bLocked) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x7D [Loop If] + if(I < m_ChannelFireBlendList1P.Length) + { + // End:0x6F + if(m_ChannelFireBlendList1P[I] != none) + { + m_ChannelFireBlendList1P[I].SetLockedBase(bLocked); + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x88: + + // End:0xFA [Loop If] + if(I < m_ChannelFireBlendList3P.Length) + { + // End:0xEC + if(m_ChannelFireBlendList3P[I] != none) + { + m_ChannelFireBlendList3P[I].SetLockedBase(bLocked); + } + I++; + // [Loop Continue] + goto J0x88; + } + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super(TgDeviceForm).StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + SetSpinnersActive(true); + //return; +} + +event StopFire(int nFireModeNum) +{ + super(TgDeviceForm).StopFire(nFireModeNum); + SetSpinnersActive(false); + //return; +} + +defaultproperties +{ + m_SpinnerName="Stones" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_GeometryBarrierTank.uc b/exported/TgGame/Classes/TgDeviceForm_GeometryBarrierTank.uc new file mode 100755 index 00000000..dfc6831c --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_GeometryBarrierTank.uc @@ -0,0 +1,8 @@ +class TgDeviceForm_GeometryBarrierTank extends TgDeviceForm + native(ChampBarrierTank); + +// Export UTgDeviceForm_GeometryBarrierTank::execUpdateTargetingModeLocation(FFrame&, void* const) +native function UpdateTargetingModeLocation(Vector NewLocation, Rotator NewRotation, optional float DistanceScale = 1.0000000); + +// Export UTgDeviceForm_GeometryBarrierTank::execUpdateTargetingModeStatusForFX(FFrame&, void* const) +native function UpdateTargetingModeStatusForFX(TgSpecialFx Fx, TgDevice.ETargetingModeStatus Status, const out AimData Aim); diff --git a/exported/TgGame/Classes/TgDeviceForm_GraceSupport.uc b/exported/TgGame/Classes/TgDeviceForm_GraceSupport.uc new file mode 100755 index 00000000..8481f3fb --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_GraceSupport.uc @@ -0,0 +1,40 @@ +class TgDeviceForm_GraceSupport extends TgDeviceForm; + +var TgWeaponMeshActor_LianInhand m_CachedWMA; + +function bool HasCachedWMA() +{ + // End:0x4F + if(m_CachedWMA == none) + { + // End:0x4F + if(PawnOwner != none) + { + m_CachedWMA = TgWeaponMeshActor_LianInhand(PawnOwner.m_WeaponMesh); + } + } + return m_CachedWMA != none; + //return ReturnValue; +} + +simulated event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x5D + if(HasCachedWMA()) + { + m_CachedWMA.ShowGraceTracers(); + } + //return; +} + +simulated event Hit(int nFireMode, Actor Target, float fDamageAmount, Vector HitLocation, Vector HitNormal, const out ExtraDamageInfo ExtraInfo) +{ + super.Hit(nFireMode, Target, fDamageAmount, HitLocation, HitNormal, ExtraInfo); + // End:0xB3 + if((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) + { + PawnOwner.m_WeaponMesh.PlayTracerEffects(HitLocation, 1); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_GravityLift.uc b/exported/TgGame/Classes/TgDeviceForm_GravityLift.uc new file mode 100755 index 00000000..02f53f0a --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_GravityLift.uc @@ -0,0 +1,39 @@ +class TgDeviceForm_GravityLift extends TgDeviceForm + native(ChampAstro); + +event SetLockedForBlendNodes(bool bLocked) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x7D [Loop If] + if(I < m_ChannelFireBlendList1P.Length) + { + // End:0x6F + if(m_ChannelFireBlendList1P[I] != none) + { + m_ChannelFireBlendList1P[I].SetLockedBase(bLocked); + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x88: + + // End:0xFA [Loop If] + if(I < m_ChannelFireBlendList3P.Length) + { + // End:0xEC + if(m_ChannelFireBlendList3P[I] != none) + { + m_ChannelFireBlendList3P[I].SetLockedBase(bLocked); + } + I++; + // [Loop Continue] + goto J0x88; + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_GrohkInhand.uc b/exported/TgGame/Classes/TgDeviceForm_GrohkInhand.uc new file mode 100755 index 00000000..e26d4897 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_GrohkInhand.uc @@ -0,0 +1,67 @@ +class TgDeviceForm_GrohkInhand extends TgDeviceForm_ArcingBeam; + +var TgSkelCon_Spinner m_SpinnerSkelControl; + +function SetBeamFXForHit(bool DidHit) +{ + local float beamImpact, beamAlpha; + local editinline array FireLoopParticles; + local editinline ParticleSystemComponent Particle; + + beamImpact = ((DidHit) ? 6.0000000 : 2.0000000); + beamAlpha = ((DidHit) ? 1.0000000 : 0.2000000); + // End:0x134 + if((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) + { + PawnOwner.m_WeaponMesh.GetAllFireLoopParticleSystemComponents(FireLoopParticles); + // End:0x133 + foreach FireLoopParticles(Particle) + { + Particle.SetFloatParameter('beamImpact', beamImpact); + Particle.SetFloatParameter('beamAlpha', beamAlpha); + } + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super(TgDeviceForm).Cache1PAnimNodes(SkelComp); + m_SpinnerSkelControl = none; + // End:0x55 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_SpinnerSkelControl = TgSkelCon_Spinner(SkelComp.FindSkelControl('Spinner')); + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x60 + if(m_SpinnerSkelControl != none) + { + m_SpinnerSkelControl.Spin(false); + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0x42 + if(m_SpinnerSkelControl != none) + { + m_SpinnerSkelControl.Spin(true); + } + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + super(TgDeviceForm).Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + SetBeamFXForHit(bSuccessfulHit); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_GrumpyBomb.uc b/exported/TgGame/Classes/TgDeviceForm_GrumpyBomb.uc new file mode 100755 index 00000000..4d0701a8 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_GrumpyBomb.uc @@ -0,0 +1 @@ +class TgDeviceForm_GrumpyBomb extends TgDeviceForm; diff --git a/exported/TgGame/Classes/TgDeviceForm_HeadHunter.uc b/exported/TgGame/Classes/TgDeviceForm_HeadHunter.uc new file mode 100755 index 00000000..420e9f03 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_HeadHunter.uc @@ -0,0 +1,44 @@ +class TgDeviceForm_HeadHunter extends TgDeviceForm; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local TgPawn_Kinessa Kinessa; + + Kinessa = TgPawn_Kinessa(PawnOwner); + // End:0xF3 + if(Kinessa != none) + { + Kinessa.c_bHeadHunterFiring = true; + // End:0xF3 + if(Kinessa.Mesh != none) + { + Kinessa.Mesh.FxActivateIndependant('UltimateActivated', 0, Kinessa.Location, Vector(Kinessa.Rotation)); + } + } + // End:0x1BA + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('KinessaUltActive', 0); + } + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + //return; +} + +event StopFire(int nFireModeNum) +{ + local TgPawn_Kinessa Kinessa; + + Kinessa = TgPawn_Kinessa(PawnOwner); + // End:0x4C + if(Kinessa != none) + { + Kinessa.c_bHeadHunterFiring = false; + } + // End:0x111 + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('KinessaUltActive', 0); + } + super.StopFire(nFireModeNum); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_HeatHaze.uc b/exported/TgGame/Classes/TgDeviceForm_HeatHaze.uc new file mode 100755 index 00000000..5c0475a5 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_HeatHaze.uc @@ -0,0 +1,36 @@ +class TgDeviceForm_HeatHaze extends TgDeviceForm + native(ChampLongbow); + +var bool m_bShouldBeActive; +var float m_fUltActivationTime; +var float m_fUltActivationPercent; + +// Export UTgDeviceForm_HeatHaze::execUpdateUltMeshVisibility(FFrame&, void* const) +native function UpdateUltMeshVisibility(float DeltaSeconds); + +// Export UTgDeviceForm_HeatHaze::execUpdateMeshMICValue(FFrame&, void* const) +native function UpdateMeshMICValue(MeshComponent MeshComp); + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + m_bShouldBeActive = true; + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0xF2 + if((PawnOwner != none) && PawnOwner.Mesh != none) + { + PawnOwner.Mesh.FxActivateIndependant('UltimateActivated', 0, PawnOwner.Location, Vector(PawnOwner.Rotation)); + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + m_bShouldBeActive = false; + //return; +} + +defaultproperties +{ + m_fUltActivationTime=0.5000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_HeroicLeap.uc b/exported/TgGame/Classes/TgDeviceForm_HeroicLeap.uc new file mode 100755 index 00000000..d0e0055a --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_HeroicLeap.uc @@ -0,0 +1,84 @@ +class TgDeviceForm_HeroicLeap extends TgDeviceForm; + +var TgAnimNodeBlendList m_BlendList1P; +var TgAnimNodeBlendList m_BlendList3P; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache3PAnimNodes(SkelComp); + m_BlendList3P = none; + // End:0x55 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_BlendList3P = TgAnimNodeBlendList(SkelComp.FindAnimNode('Jump')); + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache1PAnimNodes(SkelComp); + m_BlendList1P = none; + // End:0x55 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_BlendList1P = TgAnimNodeBlendList(SkelComp.FindAnimNode('Jump')); + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x26C + if(((PawnOwner != none) && PawnOwner.Mesh != none) && PawnOwner.Mesh != none) + { + // End:0x120 + if(m_BlendList3P == none) + { + // End:0x120 + if((PawnOwner != none) && PawnOwner.Mesh != none) + { + m_BlendList3P = TgAnimNodeBlendList(PawnOwner.Mesh.FindAnimNode('Jump')); + } + } + // End:0x154 + if(m_BlendList3P != none) + { + m_BlendList3P.SetActiveChild(1, 0.2000000); + } + // End:0x238 + if(m_BlendList1P == none) + { + // End:0x238 + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + m_BlendList1P = TgAnimNodeBlendList(PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FindAnimNode('Jump')); + } + } + // End:0x26C + if(m_BlendList1P != none) + { + m_BlendList1P.SetActiveChild(1, 0.2000000); + } + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0x47 + if(m_BlendList3P != none) + { + m_BlendList3P.SetActiveChild(0, 0.2000000); + } + // End:0x7B + if(m_BlendList1P != none) + { + m_BlendList1P.SetActiveChild(0, 0.2000000); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_HexaFire.uc b/exported/TgGame/Classes/TgDeviceForm_HexaFire.uc new file mode 100755 index 00000000..63c4098a --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_HexaFire.uc @@ -0,0 +1,123 @@ +class TgDeviceForm_HexaFire extends TgDeviceForm; + +var TgAnimNodeBlendList m_LeftRocket1p; +var TgAnimNodeBlendList m_LeftRocket3p; +var TgAnimNodeBlendList m_RightRocket1p; +var TgAnimNodeBlendList m_RightRocket3p; +var bool m_bFiringRightRocket; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache3PAnimNodes(SkelComp); + m_LeftRocket3p = none; + m_RightRocket3p = none; + // End:0x60 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_LeftRocket3p = TgAnimNodeBlendList(SkelComp.FindAnimNode('LeftRocket')); + m_RightRocket3p = TgAnimNodeBlendList(SkelComp.FindAnimNode('RightRocket')); + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache1PAnimNodes(SkelComp); + m_LeftRocket1p = none; + m_RightRocket1p = none; + // End:0x60 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_LeftRocket1p = TgAnimNodeBlendList(SkelComp.FindAnimNode('LeftRocket')); + m_RightRocket1p = TgAnimNodeBlendList(SkelComp.FindAnimNode('RightRocket')); + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + // End:0x101 + if(!m_bFiringRightRocket) + { + // End:0xAF + if(m_LeftRocket1p != none) + { + m_LeftRocket1p.SetActiveChild(1, m_LeftRocket1p.GetBlendTime(1)); + } + // End:0xFE + if(m_LeftRocket3p != none) + { + m_LeftRocket3p.SetActiveChild(1, m_LeftRocket3p.GetBlendTime(1)); + } + } + else + { + // End:0x150 + if(m_RightRocket1p != none) + { + m_RightRocket1p.SetActiveChild(1, m_RightRocket1p.GetBlendTime(1)); + } + // End:0x19F + if(m_RightRocket3p != none) + { + m_RightRocket3p.SetActiveChild(1, m_RightRocket3p.GetBlendTime(1)); + } + } + m_bFiringRightRocket = !m_bFiringRightRocket; + //return; +} + +function SetAllInactive() +{ + // End:0x4F + if(m_LeftRocket1p != none) + { + m_LeftRocket1p.SetActiveChild(0, m_LeftRocket1p.GetBlendTime(0)); + } + // End:0x9E + if(m_LeftRocket3p != none) + { + m_LeftRocket3p.SetActiveChild(0, m_LeftRocket3p.GetBlendTime(0)); + } + // End:0xED + if(m_RightRocket1p != none) + { + m_RightRocket1p.SetActiveChild(0, m_RightRocket1p.GetBlendTime(0)); + } + // End:0x13C + if(m_RightRocket3p != none) + { + m_RightRocket3p.SetActiveChild(0, m_RightRocket3p.GetBlendTime(0)); + } + //return; +} + +event DoInterrupt() +{ + super.DoInterrupt(); + SetAllInactive(); + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + DeactivateFxGroup('UltimateActivated'); + ActivateFxGroup('UltimateActivated'); + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + SetAllInactive(); + //return; +} + +defaultproperties +{ + m_bFiringRightRocket=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_HexaFireGuns.uc b/exported/TgGame/Classes/TgDeviceForm_HexaFireGuns.uc new file mode 100755 index 00000000..cd66e370 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_HexaFireGuns.uc @@ -0,0 +1,244 @@ +class TgDeviceForm_HexaFireGuns extends TgDeviceForm; + +var TgSkelCon_Spinner m_SpinnerSkelControl1P; +var TgSkelCon_Spinner m_SpinnerSkelControl3P; +var int m_nNextGunFired; +var name c_nmSocket1; +var name c_nmSocket2; +var name c_nmSocket3; +var name c_nmSocket4; +var TgSkelControlSingleBone_PistonBarrel m_LowerRightBarrel1P; +var TgSkelControlSingleBone_PistonBarrel m_UpperRightBarrel1P; +var TgSkelControlSingleBone_PistonBarrel m_LowerLeftBarrel1P; +var TgSkelControlSingleBone_PistonBarrel m_UpperLeftBarrel1P; +var TgSkelControlSingleBone_PistonBarrel m_LowerRightBarrel3P; +var TgSkelControlSingleBone_PistonBarrel m_UpperRightBarrel3P; +var TgSkelControlSingleBone_PistonBarrel m_LowerLeftBarrel3P; +var TgSkelControlSingleBone_PistonBarrel m_UpperLeftBarrel3P; + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache1PAnimNodes(SkelComp); + m_LowerRightBarrel1P = none; + m_UpperRightBarrel1P = none; + m_LowerLeftBarrel1P = none; + m_UpperLeftBarrel1P = none; + m_SpinnerSkelControl1P = none; + CacheAnimNodesHelper(SkelComp, m_LowerRightBarrel1P, m_UpperRightBarrel1P, m_LowerLeftBarrel1P, m_UpperLeftBarrel1P, m_SpinnerSkelControl1P); + //return; +} + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache3PAnimNodes(SkelComp); + m_LowerRightBarrel3P = none; + m_UpperRightBarrel3P = none; + m_LowerLeftBarrel3P = none; + m_UpperLeftBarrel3P = none; + m_SpinnerSkelControl3P = none; + CacheAnimNodesHelper(SkelComp, m_LowerRightBarrel3P, m_UpperRightBarrel3P, m_LowerLeftBarrel3P, m_UpperLeftBarrel3P, m_SpinnerSkelControl3P); + //return; +} + +function CacheAnimNodesHelper(TgSkeletalMeshComponent SkelComp, out TgSkelControlSingleBone_PistonBarrel LowerRightBarrel, out TgSkelControlSingleBone_PistonBarrel UpperRightBarrel, out TgSkelControlSingleBone_PistonBarrel LowerLeftBarrel, out TgSkelControlSingleBone_PistonBarrel UpperLeftBarrel, out TgSkelCon_Spinner Spinner) +{ + // End:0x37 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + LowerRightBarrel = TgSkelControlSingleBone_PistonBarrel(SkelComp.FindSkelControl('RT_LowerPistonBarrels')); + UpperRightBarrel = TgSkelControlSingleBone_PistonBarrel(SkelComp.FindSkelControl('RT_UpperPistonBarrels')); + LowerLeftBarrel = TgSkelControlSingleBone_PistonBarrel(SkelComp.FindSkelControl('LT_LowerPistonBarrels')); + UpperLeftBarrel = TgSkelControlSingleBone_PistonBarrel(SkelComp.FindSkelControl('LT_UpperPistonBarrels')); + Spinner = TgSkelCon_Spinner(SkelComp.FindSkelControl('Spinner')); + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x60 + if(m_SpinnerSkelControl1P != none) + { + m_SpinnerSkelControl1P.Spin(true); + } + // End:0x8F + if(m_SpinnerSkelControl3P != none) + { + m_SpinnerSkelControl3P.Spin(true); + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0x42 + if(m_SpinnerSkelControl1P != none) + { + m_SpinnerSkelControl1P.Spin(false); + } + // End:0x71 + if(m_SpinnerSkelControl3P != none) + { + m_SpinnerSkelControl3P.Spin(false); + } + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + local TgSkelControlSingleBone_PistonBarrel barrel1p, barrel3p; + + // End:0x89 + if((HitLocation != vect(0.0000000, 0.0000000, 0.0000000)) && ModeDatas[c_nFireMode].c_FxInstantFire) + { + PlayImpactEffects(HitLocation, nEquipSlot, nSocketIndex, bSuccessfulHit); + } + // End:0xD2 + if(PawnOwner != none) + { + PawnOwner.OnDeviceFormFire(c_nEquipSlot, fRefireTime, nFireMode); + } + switch(m_nNextGunFired) + { + // End:0x125 + case 1: + ActivateFxGroup('HexaFire_MuzzleFlash1'); + barrel1p = m_UpperLeftBarrel1P; + barrel3p = m_UpperLeftBarrel3P; + // End:0x1EB + break; + // End:0x166 + case 2: + ActivateFxGroup('HexaFire_MuzzleFlash2'); + barrel1p = m_LowerLeftBarrel1P; + barrel3p = m_LowerLeftBarrel3P; + // End:0x1EB + break; + // End:0x1A7 + case 3: + ActivateFxGroup('HexaFire_MuzzleFlash3'); + barrel1p = m_UpperRightBarrel1P; + barrel3p = m_UpperRightBarrel3P; + // End:0x1EB + break; + // End:0x1E8 + case 4: + ActivateFxGroup('HexaFire_MuzzleFlash4'); + barrel1p = m_LowerRightBarrel1P; + barrel3p = m_LowerRightBarrel3P; + // End:0x1EB + break; + // End:0xFFFF + default: + break; + } + // End:0x219 + if(barrel1p != none) + { + barrel1p.Depress(); + } + // End:0x247 + if(barrel3p != none) + { + barrel3p.Depress(); + } + m_nNextGunFired++; + // End:0x26D + if(m_nNextGunFired > 4) + { + m_nNextGunFired = 1; + } + //return; +} + +event Vector GetTracerSocketLocation() +{ + local Vector socketPos; + local Rotator socketRot; + + // End:0x43 + if((PawnOwner == none) || PawnOwner.Mesh == none) + { + return vect(0.0000000, 0.0000000, 0.0000000); + } + // End:0x203 + if(PawnOwner.IsFirstPerson()) + { + switch(m_nNextGunFired) + { + // End:0xC6 + case 1: + socketPos = PawnOwner.GetWeaponStartTraceLocationAlt(Class'TgGame.TgDevice_HexaFireGuns'.default.m_vProjectileSpawnOffset); + // End:0x200 + break; + // End:0x115 + case 2: + socketPos = PawnOwner.GetWeaponStartTraceLocationAlt(Class'TgGame.TgDevice_HexaFireGuns'.default.m_vProjectileSpawnOffset2); + // End:0x200 + break; + // End:0x164 + case 3: + socketPos = PawnOwner.GetWeaponStartTraceLocationAlt(Class'TgGame.TgDevice_HexaFireGuns'.default.m_vProjectileSpawnOffset3); + // End:0x200 + break; + // End:0x1B3 + case 4: + socketPos = PawnOwner.GetWeaponStartTraceLocationAlt(Class'TgGame.TgDevice_HexaFireGuns'.default.m_vProjectileSpawnOffset4); + // End:0x200 + break; + // End:0xFFFF + default: + socketPos = PawnOwner.GetWeaponStartTraceLocationAlt(Class'TgGame.TgDevice_HexaFireGuns'.default.m_vProjectileSpawnOffset); + // End:0x200 + break; + break; + } + } + else + { + switch(m_nNextGunFired) + { + // End:0x282 + case 1: + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.GetSocketWorldLocationAndRotation(c_nmSocket1, socketPos, socketRot); + // End:0x434 + break; + // End:0x2EF + case 2: + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.GetSocketWorldLocationAndRotation(c_nmSocket2, socketPos, socketRot); + // End:0x434 + break; + // End:0x35C + case 3: + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.GetSocketWorldLocationAndRotation(c_nmSocket3, socketPos, socketRot); + // End:0x434 + break; + // End:0x3C9 + case 4: + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.GetSocketWorldLocationAndRotation(c_nmSocket4, socketPos, socketRot); + // End:0x434 + break; + // End:0xFFFF + default: + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.GetSocketWorldLocationAndRotation(c_nmSocket1, socketPos, socketRot); + // End:0x434 + break; + break; + } + } + return socketPos; + //return ReturnValue; +} + +defaultproperties +{ + m_nNextGunFired=1 + c_nmSocket1="WSO_Emit_01" + c_nmSocket2="WSO_Emit_02" + c_nmSocket3="WSO_Emit_03" + c_nmSocket4="WSO_Emit_04" + m_bUseImpactFXOverride=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Hover.uc b/exported/TgGame/Classes/TgDeviceForm_Hover.uc new file mode 100755 index 00000000..37204fde --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Hover.uc @@ -0,0 +1,80 @@ +class TgDeviceForm_Hover extends TgDeviceForm; + +var TgAnimNodeBlendList m_HoverBlendList1P; +var TgAnimNodeBlendList m_HoverBlendList3P; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache3PAnimNodes(SkelComp); + m_HoverBlendList3P = none; + // End:0x55 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_HoverBlendList3P = TgAnimNodeBlendList(SkelComp.FindAnimNode('Hover')); + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache1PAnimNodes(SkelComp); + m_HoverBlendList1P = none; + // End:0x55 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_HoverBlendList1P = TgAnimNodeBlendList(SkelComp.FindAnimNode('Hover')); + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x211 + if((PawnOwner != none) && PawnOwner.Mesh != none) + { + // End:0xC5 + if(m_HoverBlendList3P == none) + { + m_HoverBlendList3P = TgAnimNodeBlendList(PawnOwner.Mesh.FindAnimNode('Hover')); + } + // End:0xF9 + if(m_HoverBlendList3P != none) + { + m_HoverBlendList3P.SetActiveChild(1, 0.2000000); + } + // End:0x1DD + if(m_HoverBlendList1P == none) + { + // End:0x1DD + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + m_HoverBlendList1P = TgAnimNodeBlendList(PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FindAnimNode('Hover')); + } + } + // End:0x211 + if(m_HoverBlendList1P != none) + { + m_HoverBlendList1P.SetActiveChild(1, 0.2000000); + } + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0x47 + if(m_HoverBlendList3P != none) + { + m_HoverBlendList3P.SetActiveChild(0, 0.2000000); + } + // End:0x7B + if(m_HoverBlendList1P != none) + { + m_HoverBlendList1P.SetActiveChild(0, 0.2000000); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_Hustle.uc b/exported/TgGame/Classes/TgDeviceForm_Hustle.uc new file mode 100755 index 00000000..b452ca00 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Hustle.uc @@ -0,0 +1,29 @@ +class TgDeviceForm_Hustle extends TgDeviceForm; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x64 + if(PawnOwner != none) + { + PawnOwner.Bob = 0.0140000; + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0x46 + if(PawnOwner != none) + { + PawnOwner.Bob = 0.0100000; + } + //return; +} + +defaultproperties +{ + m_bLoopWhileFiringCameraAnim=true + m_fWhileFiringCameraAnimBlendOutTime=0.1500000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_HyperBeam.uc b/exported/TgGame/Classes/TgDeviceForm_HyperBeam.uc new file mode 100755 index 00000000..fca2665c --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_HyperBeam.uc @@ -0,0 +1,88 @@ +class TgDeviceForm_HyperBeam extends TgDeviceForm_SpinnerWhileFiring; + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + super(TgDeviceForm).Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + PlayTracerEffects(HitLocation); + //return; +} + +simulated function PlayTracerEffects(Vector endLocation, optional int nEquipSlot = 0) +{ + local TgSpecialFx TracerFX; + local Vector fireLoc, FireLocToHitLoc; + local Rotator FireRot; + local int I; + local Emitter TracerBeamEmitter; + + // End:0x11C + if(PawnOwner.IsFirstPerson()) + { + TracerFX = TgSpecialFx(PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxGet('Torvald_Ult', 0)); + // End:0x119 + if(TracerFX != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.GetSocketWorldLocationAndRotation(TracerFX.c_nmSocket, fireLoc, FireRot); + } + } + else + { + TracerFX = TgSpecialFx(PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxGet('Torvald_Ult', 0)); + // End:0x20E + if(TracerFX != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.GetSocketWorldLocationAndRotation(TracerFX.c_nmSocket, fireLoc, FireRot); + } + } + // End:0x3FB + if(TracerFX != none) + { + I = 0; + J0x228: + + // End:0x3FB [Loop If] + if(I < TracerFX.c_PSCList.Length) + { + FireLocToHitLoc = endLocation - fireLoc; + TracerBeamEmitter = PawnOwner.Spawn(Class'TgGame.TgEmitter', PawnOwner,, fireLoc, Rotator(FireLocToHitLoc),, true); + TracerFX.SetPSCChannels(TracerBeamEmitter.ParticleSystemComponent); + TracerBeamEmitter.LifeSpan = 0.5000000; + TracerBeamEmitter.SetTemplate(TracerFX.c_PSCList[I].c_PSCTemplate, true); + // End:0x3ED + if(TracerBeamEmitter.ParticleSystemComponent != none) + { + TracerBeamEmitter.ParticleSystemComponent.SetVectorParameter('beamEnd', endLocation); + } + I++; + // [Loop Continue] + goto J0x228; + } + } + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super(TgDeviceForm).StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + SetSpinnersActive(true); + //return; +} + +event StopFire(int nFireModeNum) +{ + super(TgDeviceForm).StopFire(nFireModeNum); + SetSpinnersActive(false); + //return; +} + +function SetSpinnersActive(bool bActive) +{ + super.SetSpinnersActive(bActive); + SetSpinnersRotationSpeedState(((bActive) ? 2 : 0)); + //return; +} + +defaultproperties +{ + m_SpinnerName="Stones" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Inhand.uc b/exported/TgGame/Classes/TgDeviceForm_Inhand.uc new file mode 100755 index 00000000..031e55cb --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Inhand.uc @@ -0,0 +1,39 @@ +class TgDeviceForm_Inhand extends TgDeviceForm + native(Devices); + +var int m_nAmmoCount; +var int m_nMaxAmmoCount; +var float m_fPreviousAmmoPerc; +var float m_fCurrentAmmoPerc; + +final simulated function OnAmmoCountUpdated(int nAmmoCount, int nMaxAmmoCount) +{ + m_nAmmoCount = nAmmoCount; + m_nMaxAmmoCount = nMaxAmmoCount; + // End:0x86 + if(nMaxAmmoCount > 0) + { + m_fPreviousAmmoPerc = m_fCurrentAmmoPerc; + m_fCurrentAmmoPerc = float(nAmmoCount) / float(nMaxAmmoCount); + UpdateAmmoCountFx(m_fPreviousAmmoPerc, m_fCurrentAmmoPerc); + } + //return; +} + +simulated function UpdateAmmoCountFx(float fPreviousPerc, float fCurrentPerc) +{ + //return; +} + +simulated function OnWeaponMeshUpdated() +{ + local TgPawn_Character PawnChar; + + PawnChar = TgPawn_Character(PawnOwner); + // End:0x71 + if(PawnChar != none) + { + OnAmmoCountUpdated(PawnChar.r_nInHandCurrentAmmo, PawnChar.r_nInHandMaxAmmo); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_IronSights.uc b/exported/TgGame/Classes/TgDeviceForm_IronSights.uc new file mode 100755 index 00000000..33d23dfe --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_IronSights.uc @@ -0,0 +1,107 @@ +class TgDeviceForm_IronSights extends TgDeviceForm_ToggleWithLockout + native(ChampViktor); + +var float m_fCameraFOVInterpolationTime; +var() float m_fMaxCameraFOVInteprolationTime; +var float m_fCameraFOVInterpolationTarget; +var float m_fActiveFOV; +var bool m_fHasStartedInterpolation; +var float m_fDesiredStartInterpolationTimestamp; + +event Generic1(optional byte byExtraData) +{ + super.Generic1(byExtraData); + ClearPendingFOVInterpolation(); + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + ClearPendingFOVInterpolation(); + //return; +} + +event StopFire(int nFireModeNum) +{ + super(TgDeviceForm).StopFire(nFireModeNum); + //return; +} + +event Generic2(optional byte byExtraData) +{ + super.Generic2(byExtraData); + ClearPendingFOVInterpolation(); + //return; +} + +simulated function ClearPendingFOVInterpolation() +{ + m_fDesiredStartInterpolationTimestamp = 0.0000000; + m_fHasStartedInterpolation = true; + //return; +} + +simulated event PlayToggleTransitionAnimations(float transitionPercent, float totalTransitionTime, bool transitionToActive) +{ + local WorldInfo World; + local float fTransitionTimeRemaining; + + super(TgDeviceForm).PlayToggleTransitionAnimations(transitionPercent, totalTransitionTime, transitionToActive); + // End:0x13E + if(transitionToActive) + { + fTransitionTimeRemaining = (1.0000000 - transitionPercent) * totalTransitionTime; + m_fCameraFOVInterpolationTime = FMin(m_fMaxCameraFOVInteprolationTime, fTransitionTimeRemaining); + m_fCameraFOVInterpolationTarget = m_fActiveFOV; + // End:0xC8 + if(fTransitionTimeRemaining <= m_fCameraFOVInterpolationTime) + { + StartCameraInterpolation(); + m_fDesiredStartInterpolationTimestamp = 0.0000000; + m_fHasStartedInterpolation = true; + } + else + { + m_fHasStartedInterpolation = false; + World = Class'Engine.WorldInfo'.static.GetWorldInfo(); + m_fDesiredStartInterpolationTimestamp = World.TimeSeconds + (fTransitionTimeRemaining - m_fCameraFOVInterpolationTime); + } + } + else + { + fTransitionTimeRemaining = transitionPercent * totalTransitionTime; + m_fCameraFOVInterpolationTime = FMin(m_fMaxCameraFOVInteprolationTime - (totalTransitionTime - fTransitionTimeRemaining), m_fMaxCameraFOVInteprolationTime); + m_fCameraFOVInterpolationTarget = 0.0000000; + // End:0x1BD + if(m_fCameraFOVInterpolationTime <= float(0)) + { + ClearPendingFOVInterpolation(); + } + else + { + StartCameraInterpolation(); + } + } + //return; +} + +simulated event StartCameraInterpolation() +{ + local TgPawn_Character TgP; + + TgP = TgPawn_Character(PawnOwner); + // End:0x5C + if(TgP != none) + { + TgP.StartWeaponZoomInterpolation(m_fCameraFOVInterpolationTarget, m_fCameraFOVInterpolationTime); + } + ClearPendingFOVInterpolation(); + //return; +} + +defaultproperties +{ + m_fMaxCameraFOVInteprolationTime=0.1200000 + m_fActiveFOV=70.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_KinessaInhand.uc b/exported/TgGame/Classes/TgDeviceForm_KinessaInhand.uc new file mode 100755 index 00000000..21947487 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_KinessaInhand.uc @@ -0,0 +1,99 @@ +class TgDeviceForm_KinessaInhand extends TgDeviceForm; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local TgPawn_Kinessa Kinessa; + + // End:0x629 + if(PawnOwner != none) + { + // End:0x629 + if(PawnOwner.m_WeaponMesh != none) + { + // End:0x629 + if(PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + // End:0x355 + if(nFireMode == 1) + { + Kinessa = TgPawn_Kinessa(PawnOwner); + // End:0x352 + if(Kinessa != none) + { + // End:0x210 + if(Kinessa.c_bHeadHunterFiring) + { + Kinessa.m_WeaponMesh.m_WeaponMesh1P.SetFireDisplayGroup('KinessaFireMode2_B'); + Kinessa.m_WeaponMesh.m_TracerName = 'TracerBeamD'; + Kinessa.m_WeaponMesh.m_HitTargetName = 'ProjectileExplosionHitTarget_B'; + Kinessa.m_WeaponMesh.m_HitWallName = 'ProjectileExplosionHitWall_B'; + Kinessa.m_WeaponMesh.m_fTracerLifetime = 2.0000000; + } + else + { + Kinessa.m_WeaponMesh.m_WeaponMesh1P.SetFireDisplayGroup('KinessaFireMode2'); + Kinessa.m_WeaponMesh.m_TracerName = 'TracerBeamB'; + Kinessa.m_WeaponMesh.m_HitTargetName = 'ProjectileExplosionHitTarget'; + Kinessa.m_WeaponMesh.m_HitWallName = 'ProjectileExplosionHitWall'; + Kinessa.m_WeaponMesh.m_fTracerLifetime = 2.0000000; + } + } + } + else + { + Kinessa = TgPawn_Kinessa(PawnOwner); + // End:0x629 + if(Kinessa != none) + { + // End:0x4E7 + if(Kinessa.c_bHeadHunterFiring) + { + Kinessa.m_WeaponMesh.m_WeaponMesh1P.SetFireDisplayGroup('KinessaFireMode1_B'); + Kinessa.m_WeaponMesh.m_TracerName = 'TracerBeamC'; + Kinessa.m_WeaponMesh.m_HitTargetName = 'ProjectileExplosionHitTarget_B'; + Kinessa.m_WeaponMesh.m_HitWallName = 'ProjectileExplosionHitWall_B'; + Kinessa.m_WeaponMesh.m_fTracerLifetime = 2.0000000; + } + else + { + Kinessa.m_WeaponMesh.m_WeaponMesh1P.SetFireDisplayGroup('KinessaFireMode1'); + Kinessa.m_WeaponMesh.m_TracerName = 'TracerBeamA'; + Kinessa.m_WeaponMesh.m_HitTargetName = 'ProjectileExplosionHitTarget'; + Kinessa.m_WeaponMesh.m_HitWallName = 'ProjectileExplosionHitWall'; + Kinessa.m_WeaponMesh.m_fTracerLifetime = 2.0000000; + } + } + } + } + } + } + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + // End:0x132 + if(PawnOwner != none) + { + // End:0x132 + if(PawnOwner.m_WeaponMesh != none) + { + // End:0x132 + if(PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + // End:0xE0 + if(nFireMode == 1) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.SetFireDisplayGroup('KinessaFireMode2'); + } + else + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.SetFireDisplayGroup('KinessaFireMode1'); + } + } + } + } + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_KineticBurst.uc b/exported/TgGame/Classes/TgDeviceForm_KineticBurst.uc new file mode 100755 index 00000000..271f658a --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_KineticBurst.uc @@ -0,0 +1,45 @@ +class TgDeviceForm_KineticBurst extends TgDeviceForm + native(ChampFlak); + +var float RampUpTime; +var float RampDownTime; +var MaterialInstanceConstant GlowMIC; + +// Export UTgDeviceForm_KineticBurst::execHasCachedMIC(FFrame&, void* const) +native function bool HasCachedMIC(); + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local TgPawn_Flak pFlak; + + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + pFlak = TgPawn_Flak(PawnOwner); + // End:0xB1 + if(pFlak != none) + { + pFlak.ClearTimer('RampUpTimer'); + pFlak.SetTimer(RampUpTime, false, 'RampUpTimer'); + } + //return; +} + +event Cooldown(int nFireModeNum) +{ + local TgPawn_Flak pFlak; + + super.Cooldown(nFireModeNum); + pFlak = TgPawn_Flak(PawnOwner); + // End:0x93 + if(pFlak != none) + { + pFlak.ClearTimer('RampDownTimer'); + pFlak.SetTimer(RampDownTime, false, 'RampDownTimer'); + } + //return; +} + +defaultproperties +{ + RampUpTime=1.0000000 + RampDownTime=0.5000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_KingBomb.uc b/exported/TgGame/Classes/TgDeviceForm_KingBomb.uc new file mode 100755 index 00000000..68e85539 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_KingBomb.uc @@ -0,0 +1,69 @@ +class TgDeviceForm_KingBomb extends TgDeviceForm; + +event BuildUp(int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional float fBuildupTime = 0.0000000) +{ + local TgPawn_BombKing BombKing; + + super.BuildUp(nFireMode, nEquipSlot, nSocketIndex, fBuildupTime); + BombKing = TgPawn_BombKing(PawnOwner); + // End:0x112 + if((BombKing != none) && BombKing.Mesh != none) + { + BombKing.Mesh.FxActivateIndependant('UltimateActivated', 0, BombKing.Location, Vector(BombKing.Rotation)); + } + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local TgPawn_BombKing BombKing; + + logr("BOMB KING - KING BOMB START FIRE"); + BombKing = TgPawn_BombKing(PawnOwner); + // End:0xCC + if(BombKing != none) + { + BombKing.SwapToKingBombMesh(); + BombKing.m_WeaponMesh.Hide3PWeaponMesh(); + BombKing.HideHeadMesh(); + } + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + Cleanup(); + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + //return; +} + +event StopFire(int nFireModeNum) +{ + Cleanup(); + super.StopFire(nFireModeNum); + //return; +} + +event DoInterrupt() +{ + super.DoInterrupt(); + Cleanup(); + //return; +} + +function Cleanup() +{ + local TgPawn_BombKing BombKing; + + logr("BOMB KING - KING BOMB CLEAN UP"); + BombKing = TgPawn_BombKing(PawnOwner); + // End:0xC7 + if(BombKing != none) + { + BombKing.SwapFromKingBombMesh(); + BombKing.m_WeaponMesh.Unhide3PWeaponMesh(); + BombKing.ShowHeadMesh(); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_LexInhand.uc b/exported/TgGame/Classes/TgDeviceForm_LexInhand.uc new file mode 100755 index 00000000..fd2be829 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_LexInhand.uc @@ -0,0 +1,222 @@ +class TgDeviceForm_LexInhand extends TgDeviceForm + native(ChampLex); + +var name c_nmSocketLeft; +var name c_nmSocketRight; +var array m_LexCharacterNodes1P; +var array m_LexCharacterNodes3P; +var array m_DualFireStanceNodes1P; +var array m_DualFireStanceNodes3P; +var TgPawn_Lex m_CachedLex; +var int m_nPursuitFireIndex; + +// Export UTgDeviceForm_LexInhand::execSetFireMode(FFrame&, void* const) +native function SetFireMode(int nMode); + +simulated function bool HasCachedLex() +{ + // End:0x2B + if(m_CachedLex == none) + { + m_CachedLex = TgPawn_Lex(PawnOwner); + } + return m_CachedLex != none; + //return ReturnValue; +} + +simulated event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimBlendByPaladinsCharacter_Lex LexNode; + local TgAnimNodeStanceDualFire DualFireStanceNode; + + super.Cache1PAnimNodes(SkelComp); + // End:0x4A + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_LexCharacterNodes1P.Length = 0; + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimBlendByPaladinsCharacter_Lex', LexNode) + { + m_LexCharacterNodes1P.AddItem(LexNode); + } + m_DualFireStanceNodes1P.Length = 0; + // End:0xF9 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeStanceDualFire', DualFireStanceNode) + { + m_DualFireStanceNodes1P.AddItem(DualFireStanceNode); + } + //return; +} + +simulated event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimBlendByPaladinsCharacter_Lex LexNode; + local TgAnimNodeStanceDualFire DualFireStanceNode; + + super.Cache3PAnimNodes(SkelComp); + // End:0x4A + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_LexCharacterNodes3P.Length = 0; + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimBlendByPaladinsCharacter_Lex', LexNode) + { + m_LexCharacterNodes3P.AddItem(LexNode); + } + m_DualFireStanceNodes3P.Length = 0; + // End:0xF9 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeStanceDualFire', DualFireStanceNode) + { + m_DualFireStanceNodes3P.AddItem(DualFireStanceNode); + } + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + // End:0xF7 + if(HasCachedLex()) + { + // End:0x8C + if(nFireMode == 0) + { + m_CachedLex.m_bFireLeftWeapon = !m_CachedLex.m_bFireLeftWeapon; + SetDualFireParity(m_CachedLex.m_bFireLeftWeapon); + } + else + { + m_CachedLex.m_bFireLeftWeapon = !((m_nPursuitFireIndex == 0) || m_nPursuitFireIndex == 1) || m_nPursuitFireIndex == 3; + m_nPursuitFireIndex = (m_nPursuitFireIndex + 1) % 5; + } + } + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + //return; +} + +simulated function OnAmmoChange() +{ + local TgAnimBlendByPaladinsCharacter_Lex LexNode; + + // End:0x46 + foreach m_LexCharacterNodes1P(LexNode) + { + // End:0x45 + if(LexNode != none) + { + LexNode.UpdateSlideSkelControls(); + } + } + // End:0x8D + foreach m_LexCharacterNodes3P(LexNode) + { + // End:0x8C + if(LexNode != none) + { + LexNode.UpdateSlideSkelControls(); + } + } + //return; +} + +simulated function SetDualFireParity(bool bLeftFire) +{ + local TgAnimNodeStanceDualFire DualFireStanceNode; + + // End:0x59 + foreach m_DualFireStanceNodes1P(DualFireStanceNode) + { + // End:0x58 + if(DualFireStanceNode != none) + { + DualFireStanceNode.ChangeStance(((bLeftFire) ? 0 : 1), true, true); + } + } + // End:0xB3 + foreach m_DualFireStanceNodes3P(DualFireStanceNode) + { + // End:0xB2 + if(DualFireStanceNode != none) + { + DualFireStanceNode.ChangeStance(((bLeftFire) ? 0 : 1), true, true); + } + } + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + // End:0x62 + if(!HasCachedLex()) + { + return; + } + // End:0x4C4 + if(m_CachedLex != none) + { + // End:0x2AE + if(!m_CachedLex.m_bFireLeftWeapon) + { + // End:0x1A0 + if((m_CachedLex.m_WeaponMesh != none) && m_CachedLex.m_WeaponMesh.m_WeaponMesh1P != none) + { + m_CachedLex.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('MuzzleFlashLeft', 0); + m_CachedLex.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('MuzzleFlashLeft', 0); + } + // End:0x2AB + if((m_CachedLex.m_WeaponMesh != none) && m_CachedLex.m_WeaponMesh.m_WeaponMesh3P != none) + { + m_CachedLex.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('MuzzleFlashLeft', 0); + m_CachedLex.m_WeaponMesh.m_WeaponMesh3P.FxActivateGroup('MuzzleFlashLeft', 0); + } + } + else + { + // End:0x3B9 + if((m_CachedLex.m_WeaponMesh != none) && m_CachedLex.m_WeaponMesh.m_WeaponMesh1P != none) + { + m_CachedLex.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('MuzzleFlashRight', 0); + m_CachedLex.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('MuzzleFlashRight', 0); + } + // End:0x4C4 + if((m_CachedLex.m_WeaponMesh != none) && m_CachedLex.m_WeaponMesh.m_WeaponMesh3P != none) + { + m_CachedLex.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('MuzzleFlashRight', 0); + m_CachedLex.m_WeaponMesh.m_WeaponMesh3P.FxActivateGroup('MuzzleFlashRight', 0); + } + } + } + //return; +} + +event Vector GetTracerSocketLocation() +{ + local bool bFireLeftWeapon; + local Vector socketPos; + local Rotator socketRot; + + // End:0x43 + if((PawnOwner == none) || PawnOwner.Mesh == none) + { + return vect(0.0000000, 0.0000000, 0.0000000); + } + bFireLeftWeapon = false; + // End:0x86 + if(HasCachedLex()) + { + bFireLeftWeapon = m_CachedLex.m_bFireLeftWeapon; + } + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.GetSocketWorldLocationAndRotation(((bFireLeftWeapon) ? c_nmSocketLeft : c_nmSocketRight), socketPos, socketRot); + return socketPos; + //return ReturnValue; +} + +defaultproperties +{ + c_nmSocketLeft="WSO_Emit_02" + c_nmSocketRight="WSO_Emit_01" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Lockdown.uc b/exported/TgGame/Classes/TgDeviceForm_Lockdown.uc new file mode 100755 index 00000000..586d4dbf --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Lockdown.uc @@ -0,0 +1,59 @@ +class TgDeviceForm_Lockdown extends TgDeviceForm; + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + local MaterialInstanceConstant MIC; + local int I; + + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + // End:0x1D2 + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + I = 0; + J0xCC: + + // End:0x1D2 [Loop If] + if(I < PawnOwner.m_WeaponMesh.m_WeaponMesh1P.Materials.Length) + { + MIC = MaterialInstanceConstant(PawnOwner.m_WeaponMesh.m_WeaponMesh1P.Materials[I]); + // End:0x1C4 + if(MIC != none) + { + MIC.SetScalarParameterValue('Percent', 1.0000000); + } + I++; + // [Loop Continue] + goto J0xCC; + } + } + //return; +} + +event StopFire(int nFireModeNum) +{ + local MaterialInstanceConstant MIC; + local int I; + + super.StopFire(nFireModeNum); + // End:0x194 + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + I = 0; + J0x8E: + + // End:0x194 [Loop If] + if(I < PawnOwner.m_WeaponMesh.m_WeaponMesh1P.Materials.Length) + { + MIC = MaterialInstanceConstant(PawnOwner.m_WeaponMesh.m_WeaponMesh1P.Materials[I]); + // End:0x186 + if(MIC != none) + { + MIC.SetScalarParameterValue('Percent', 0.0000000); + } + I++; + // [Loop Continue] + goto J0x8E; + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_LongbowInhand.uc b/exported/TgGame/Classes/TgDeviceForm_LongbowInhand.uc new file mode 100755 index 00000000..6e8f2e37 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_LongbowInhand.uc @@ -0,0 +1,161 @@ +class TgDeviceForm_LongbowInhand extends TgDeviceForm + native(ChampLongbow); + +var bool m_bImpalerArrowFXIsActive; +var bool m_bBowDrawing; +var float m_fBowDrawPercentage; +var float m_fBowDrawStartPercentage; +var float m_fBowDrawTime; +var float m_fBowDrawTotalDuration; +var TgPawn_Longbow m_LongbowOwner; +var array m_BlendByPct1P; +var array m_BlendByPct3P; +var TgSkelControlSingleBone m_ArrowSkelControl1P; +var TgSkelControlSingleBone m_ImpalerSkelControl1P; + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimBlendByPercent bbpctAnimNode; + + super.Cache1PAnimNodes(SkelComp); + m_BlendByPct1P.Length = 0; + m_ArrowSkelControl1P = none; + m_ImpalerSkelControl1P = none; + // End:0x6C + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xB7 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimBlendByPercent', bbpctAnimNode) + { + m_BlendByPct1P.AddItem(bbpctAnimNode); + } + m_ArrowSkelControl1P = TgSkelControlSingleBone(SkelComp.FindSkelControl('Arrow')); + m_ImpalerSkelControl1P = TgSkelControlSingleBone(SkelComp.FindSkelControl('ImpalerArrow')); + //return; +} + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimBlendByPercent bbpctAnimNode; + + super.Cache3PAnimNodes(SkelComp); + m_BlendByPct3P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimBlendByPercent', bbpctAnimNode) + { + m_BlendByPct3P.AddItem(bbpctAnimNode); + } + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + local TgAnimBlendByPercent bbpctAnimNode; + + // End:0x50 + foreach m_BlendByPct1P(bbpctAnimNode) + { + bbpctAnimNode.UpdatePercent(m_fBowDrawPercentage); + } + // End:0x91 + foreach m_BlendByPct3P(bbpctAnimNode) + { + bbpctAnimNode.UpdatePercent(m_fBowDrawPercentage); + } + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + //return; +} + +event Generic1(optional byte byExtraData) +{ + SetToggleState(false); + //return; +} + +event DoInterrupt() +{ + super.DoInterrupt(); + SetToggleState(false); + //return; +} + +simulated event PlayToggleTransitionAnimations(float transitionPercent, float totalTransitionTime, bool transitionToActive) +{ + super.PlayToggleTransitionAnimations(transitionPercent, totalTransitionTime, transitionToActive); + // End:0x16D + if((((m_bBowDrawing != transitionToActive) && PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + // End:0x118 + if(transitionToActive) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('Generic3', 0); + } + else + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('Generic3', 0); + } + } + m_bBowDrawing = transitionToActive; + // End:0x21E + if(m_bBowDrawing) + { + PawnOwner.m_WeaponMesh.BlockFlourish(true); + m_fBowDrawPercentage = transitionPercent; + m_fBowDrawStartPercentage = m_fBowDrawPercentage; + m_fBowDrawTime = 0.0000000; + m_fBowDrawTotalDuration = (1.0000000 - transitionPercent) * totalTransitionTime; + } + //return; +} + +simulated event SetToggleState(bool IsActive) +{ + super.SetToggleState(IsActive); + // End:0x2E5 + if(((m_bBowDrawing != IsActive) && PawnOwner != none) && PawnOwner.m_WeaponMesh != none) + { + // End:0x194 + if(IsActive) + { + // End:0x101 + if(PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('Generic3', 0); + } + // End:0x191 + if(PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxActivateGroup('Generic3', 0); + } + } + else + { + // End:0x222 + if(PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('Generic3', 0); + } + // End:0x2B0 + if(PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('Generic3', 0); + } + PawnOwner.m_WeaponMesh.BlockFlourish(false); + } + } + m_bBowDrawing = IsActive; + // End:0x329 + if(m_bBowDrawing) + { + m_fBowDrawPercentage = 1.0000000; + m_fBowDrawTime = m_fBowDrawTotalDuration; + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_LongbowPlanted.uc b/exported/TgGame/Classes/TgDeviceForm_LongbowPlanted.uc new file mode 100755 index 00000000..a376d3db --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_LongbowPlanted.uc @@ -0,0 +1,34 @@ +class TgDeviceForm_LongbowPlanted extends TgDeviceForm; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0xF8 + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('Generic2', 0); + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0xD8 + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('Generic2', 0); + } + //return; +} + +event DoInterrupt() +{ + super.DoInterrupt(); + // End:0xCF + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('Generic2', 0); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_MendingSpirits.uc b/exported/TgGame/Classes/TgDeviceForm_MendingSpirits.uc new file mode 100755 index 00000000..afb1f6bc --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_MendingSpirits.uc @@ -0,0 +1,36 @@ +class TgDeviceForm_MendingSpirits extends TgDeviceForm; + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + local TgSpecialFx Fx; + local int I; + + // End:0x254 + if((((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && c_Mesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + Fx = TgSpecialFx(PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxGet(((bSuccessfulHit) ? 'ContinuousHit' : 'ContinuousFire'), 0)); + // End:0x254 + if(Fx != none) + { + I = 0; + J0x12C: + + // End:0x20B [Loop If] + if(I < Fx.c_PSCList.Length) + { + // End:0x1FD + if(Fx.c_PSCList[I].c_PSC != none) + { + Fx.c_PSCList[I].c_PSC.SetVectorParameter('beamEnd', HitLocation); + } + I++; + // [Loop Continue] + goto J0x12C; + } + Fx.Activate(); + Fx.PlaySoundAt(HitLocation); + } + } + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_MinigunSpinUp.uc b/exported/TgGame/Classes/TgDeviceForm_MinigunSpinUp.uc new file mode 100755 index 00000000..6f4d559f --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_MinigunSpinUp.uc @@ -0,0 +1,62 @@ +class TgDeviceForm_MinigunSpinUp extends TgDeviceForm; + +var TgSkelCon_Spinner m_SpinnerSkelControl1P; +var TgSkelCon_Spinner m_SpinnerSkelControl3P; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache3PAnimNodes(SkelComp); + m_SpinnerSkelControl3P = none; + // End:0x55 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_SpinnerSkelControl3P = TgSkelCon_Spinner(SkelComp.FindSkelControl('Spinner')); + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache1PAnimNodes(SkelComp); + m_SpinnerSkelControl1P = none; + // End:0x55 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_SpinnerSkelControl1P = TgSkelCon_Spinner(SkelComp.FindSkelControl('Spinner')); + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x60 + if(m_SpinnerSkelControl1P != none) + { + m_SpinnerSkelControl1P.Spin(true); + } + // End:0x8F + if(m_SpinnerSkelControl3P != none) + { + m_SpinnerSkelControl3P.Spin(true); + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0x42 + if(m_SpinnerSkelControl1P != none) + { + m_SpinnerSkelControl1P.Spin(false); + } + // End:0x71 + if(m_SpinnerSkelControl3P != none) + { + m_SpinnerSkelControl3P.Spin(false); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_Mount.uc b/exported/TgGame/Classes/TgDeviceForm_Mount.uc new file mode 100755 index 00000000..e4c9767a --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Mount.uc @@ -0,0 +1,69 @@ +class TgDeviceForm_Mount extends TgDeviceForm + native(Devices); + +var int m_FadeMaterialFXId; +var array m_FadeMICs; +var float m_fFadeInTime; +var float m_fRemainingFadeInTime; +var float m_fFadeOutTime; +var float m_fRemainingFadeOutTime; +var Vector m_CameraOffset; +var TgObject.EMountType m_MountType; +var array m_LoadedAnimSets; + +simulated event string GetAnimSetStringForBot(int PlayerBotId) +{ + // End:0x38 + if(PawnOwner != none) + { + return PawnOwner.GetAnimSetString(m_MountType); + } + return ""; + //return ReturnValue; +} + +// Export UTgDeviceForm_Mount::execPlaySummonEffects(FFrame&, void* const) +native function PlaySummonEffects(float SummonTime, bool bIsDismounting); + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0xBA + if(PawnOwner != none) + { + // End:0xBA + if(PawnOwner.c_bHide3PWeaponMeshWhileMounted) + { + // End:0xBA + if(PawnOwner.m_WeaponMesh != none) + { + PawnOwner.m_WeaponMesh.Hide3PWeaponMesh(); + } + } + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0x9C + if(PawnOwner != none) + { + // End:0x9C + if(PawnOwner.c_bHide3PWeaponMeshWhileMounted) + { + // End:0x9C + if(PawnOwner.m_WeaponMesh != none) + { + PawnOwner.m_WeaponMesh.Unhide3PWeaponMesh(); + } + } + } + //return; +} + +defaultproperties +{ + m_CameraOffset=(X=-142.0000000,Y=0.0000000,Z=25.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_MountBoar.uc b/exported/TgGame/Classes/TgDeviceForm_MountBoar.uc new file mode 100755 index 00000000..c31530d2 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_MountBoar.uc @@ -0,0 +1,37 @@ +class TgDeviceForm_MountBoar extends TgDeviceForm_Mount; + +simulated event string GetAnimSetStringForBot(int PlayerBotId) +{ + switch(PlayerBotId) + { + // End:0x4E + case 2056: + return "PC_Alchemist.Anims.AS_PC_Alchemist_3p_Mount_Boar"; + // End:0x87 + case 2057: + return "PC_Assassin.Anims.AS_PC_Assassin_3p_Mount_Boar"; + // End:0xC0 + case 2073: + return "PC_Engineer.Anims.AS_PC_Engineer_3p_Mount_Boar"; + // End:0xF9 + case 2092: + return "PC_Huntress.Anims.AS_PC_Huntress_3p_Mount_Boar"; + // End:0x12E + case 2071: + return "PC_Knight.Anims.AS_PC_Knight_3p_Mount_Boar"; + // End:0x15F + case 2094: + return "PC_Mage.Anims.AS_PC_Mage_3p_Mount_Boar"; + // End:0x194 + case 2093: + return "PC_Shaman.Anims.AS_PC_Shaman_3p_Mount_Boar"; + // End:0x1CF + case 2205: + return "PC_Androxus.Anims.AS_PC_Androxus_3p_Mount_Jaguar"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_MountHorse.uc b/exported/TgGame/Classes/TgDeviceForm_MountHorse.uc new file mode 100755 index 00000000..80ae5c5f --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_MountHorse.uc @@ -0,0 +1,8 @@ +class TgDeviceForm_MountHorse extends TgDeviceForm_Mount; + +defaultproperties +{ + m_FadeMaterialFXId=6254 + m_CameraOffset=(X=-170.0000000,Y=0.0000000,Z=50.0000000) + m_MountType=EMountType.MOUNT_Horse +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_MountHorseTest.uc b/exported/TgGame/Classes/TgDeviceForm_MountHorseTest.uc new file mode 100755 index 00000000..c581fe00 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_MountHorseTest.uc @@ -0,0 +1,6 @@ +class TgDeviceForm_MountHorseTest extends TgDeviceForm_MountHorse; + +defaultproperties +{ + m_MountType=EMountType.MOUNT_HorseTest +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_MountInfernalWarhorse.uc b/exported/TgGame/Classes/TgDeviceForm_MountInfernalWarhorse.uc new file mode 100755 index 00000000..cdd1b76e --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_MountInfernalWarhorse.uc @@ -0,0 +1,8 @@ +class TgDeviceForm_MountInfernalWarhorse extends TgDeviceForm_Mount; + +defaultproperties +{ + m_FadeMaterialFXId=6410 + m_CameraOffset=(X=-170.0000000,Y=0.0000000,Z=50.0000000) + m_MountType=EMountType.MOUNT_Horse +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_MountLion.uc b/exported/TgGame/Classes/TgDeviceForm_MountLion.uc new file mode 100755 index 00000000..0973736d --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_MountLion.uc @@ -0,0 +1,37 @@ +class TgDeviceForm_MountLion extends TgDeviceForm_Mount; + +simulated event string GetAnimSetStringForBot(int PlayerBotId) +{ + switch(PlayerBotId) + { + // End:0x4E + case 2056: + return "PC_Alchemist.Anims.AS_PC_Alchemist_3p_Mount_Lion"; + // End:0x87 + case 2057: + return "PC_Assassin.Anims.AS_PC_Assassin_3p_Mount_Lion"; + // End:0xC0 + case 2073: + return "PC_Engineer.Anims.AS_PC_Engineer_3p_Mount_Lion"; + // End:0xF9 + case 2092: + return "PC_Huntress.Anims.AS_PC_Huntress_3p_Mount_Lion"; + // End:0x12E + case 2071: + return "PC_Knight.Anims.AS_PC_Knight_3p_Mount_Lion"; + // End:0x15F + case 2094: + return "PC_Mage.Anims.AS_PC_Mage_3p_Mount_Lion"; + // End:0x194 + case 2093: + return "PC_Shaman.Anims.AS_PC_Shaman_3p_Mount_Lion"; + // End:0x1CF + case 2205: + return "PC_Androxus.Anims.AS_PC_Androxus_3p_Mount_Jaguar"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_MountMech.uc b/exported/TgGame/Classes/TgDeviceForm_MountMech.uc new file mode 100755 index 00000000..6da5dacf --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_MountMech.uc @@ -0,0 +1,47 @@ +class TgDeviceForm_MountMech extends TgDeviceForm_Mount; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local TgPawn_Character TgPC; + + // End:0x117 + if(PawnOwner != none) + { + // End:0xBF + if((PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.SetScale(0.0000000); + } + TgPC = TgPawn_Character(PawnOwner); + // End:0x117 + if(TgPC != none) + { + TgPC.FxActivateGroupBody('Mount_Alt', 0); + } + } + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + //return; +} + +event StopFire(int nFireModeNum) +{ + local TgPawn_Character TgPC; + + // End:0x114 + if(PawnOwner != none) + { + // End:0xBC + if((PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.SetScale(1.0000000); + } + TgPC = TgPawn_Character(PawnOwner); + // End:0x114 + if(TgPC != none) + { + TgPC.FxActivateGroupBody('Mount_Alt', 0); + } + } + super.StopFire(nFireModeNum); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_MountMorph.uc b/exported/TgGame/Classes/TgDeviceForm_MountMorph.uc new file mode 100755 index 00000000..398ffd27 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_MountMorph.uc @@ -0,0 +1,6 @@ +class TgDeviceForm_MountMorph extends TgDeviceForm_MountHorse; + +defaultproperties +{ + m_CameraOffset=(X=-150.0000000,Y=0.0000000,Z=35.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_MountNoHorse.uc b/exported/TgGame/Classes/TgDeviceForm_MountNoHorse.uc new file mode 100755 index 00000000..ad88dece --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_MountNoHorse.uc @@ -0,0 +1,53 @@ +class TgDeviceForm_MountNoHorse extends TgDeviceForm_Mount; + +var int c_SparkleFXID; +var TgSpecialFx c_SparkleFX; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x101 + if(PawnOwner != none) + { + // End:0x101 + if(c_SparkleFX == none) + { + c_SparkleFX = PawnOwner.GetSpecialFx(c_SparkleFXID); + // End:0x101 + if(c_SparkleFX != none) + { + c_SparkleFX.c_nmSocket = 'CSO_FX_Origin_01'; + c_SparkleFX.AttachToOwner(PawnOwner); + c_SparkleFX.c_bSelfManage = false; + } + } + } + // End:0x131 + if(c_SparkleFX != none) + { + c_SparkleFX.Activate(); + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0x42 + if(c_SparkleFX != none) + { + c_SparkleFX.Deactivate(true); + } + //return; +} + +simulated event string GetAnimSetStringForBot(int PlayerBotId) +{ + return ""; + //return ReturnValue; +} + +defaultproperties +{ + c_SparkleFXID=7197 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_MountOnyxStallion.uc b/exported/TgGame/Classes/TgDeviceForm_MountOnyxStallion.uc new file mode 100755 index 00000000..6ecd8059 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_MountOnyxStallion.uc @@ -0,0 +1,8 @@ +class TgDeviceForm_MountOnyxStallion extends TgDeviceForm_Mount; + +defaultproperties +{ + m_FadeMaterialFXId=7143 + m_CameraOffset=(X=-170.0000000,Y=0.0000000,Z=50.0000000) + m_MountType=EMountType.MOUNT_Horse +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_MountPanther.uc b/exported/TgGame/Classes/TgDeviceForm_MountPanther.uc new file mode 100755 index 00000000..a82c95af --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_MountPanther.uc @@ -0,0 +1,37 @@ +class TgDeviceForm_MountPanther extends TgDeviceForm_Mount; + +simulated event string GetAnimSetStringForBot(int PlayerBotId) +{ + switch(PlayerBotId) + { + // End:0x50 + case 2056: + return "PC_Alchemist.Anims.AS_PC_Alchemist_3p_Mount_Jaguar"; + // End:0x8B + case 2057: + return "PC_Assassin.Anims.AS_PC_Assassin_3p_Mount_Jaguar"; + // End:0xC6 + case 2073: + return "PC_Engineer.Anims.AS_PC_Engineer_3p_Mount_Jaguar"; + // End:0x101 + case 2092: + return "PC_Huntress.Anims.AS_PC_Huntress_3p_Mount_Jaguar"; + // End:0x138 + case 2071: + return "PC_Knight.Anims.AS_PC_Knight_3p_Mount_Jaguar"; + // End:0x16B + case 2094: + return "PC_Mage.Anims.AS_PC_Mage_3p_Mount_Jaguar"; + // End:0x1A2 + case 2093: + return "PC_Shaman.Anims.AS_PC_Shaman_3p_Mount_Jaguar"; + // End:0x1DD + case 2205: + return "PC_Androxus.Anims.AS_PC_Androxus_3p_Mount_Jaguar"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_NetherStep.uc b/exported/TgGame/Classes/TgDeviceForm_NetherStep.uc new file mode 100755 index 00000000..35f98d0e --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_NetherStep.uc @@ -0,0 +1,88 @@ +class TgDeviceForm_NetherStep extends TgDeviceForm; + +var array m_stanceNodes1p; +var array m_stanceNodes3p; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local AnimNodeBlendList AnimNode; + + super.Cache3PAnimNodes(SkelComp); + // End:0x4A + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xC1 + foreach SkelComp.AllAnimNodes(Class'Engine.AnimNodeBlendList', AnimNode) + { + // End:0xC0 + if(AnimNode.NodeName == 'StanceAttack') + { + m_stanceNodes3p.AddItem(AnimNode); + } + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local AnimNodeBlendList AnimNode; + + super.Cache1PAnimNodes(SkelComp); + // End:0x4A + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xC1 + foreach SkelComp.AllAnimNodes(Class'Engine.AnimNodeBlendList', AnimNode) + { + // End:0xC0 + if(AnimNode.NodeName == 'StanceAttack') + { + m_stanceNodes1p.AddItem(AnimNode); + } + } + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x6D + if(c_Mesh != none) + { + c_Mesh.FxActivateGroup('NetherStepDash', 0); + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0x4D + if(c_Mesh != none) + { + c_Mesh.FxDeactivateGroup('NetherStepDash', 0); + } + //return; +} + +event CooldownComplete() +{ + local AnimNodeBlendList AnimNode; + + super.CooldownComplete(); + // End:0x47 + foreach m_stanceNodes1p(AnimNode) + { + AnimNode.SetActiveChild(0, 0.0000000); + } + // End:0x85 + foreach m_stanceNodes3p(AnimNode) + { + AnimNode.SetActiveChild(0, 0.0000000); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_OracleInhand.uc b/exported/TgGame/Classes/TgDeviceForm_OracleInhand.uc new file mode 100755 index 00000000..bc984069 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_OracleInhand.uc @@ -0,0 +1,195 @@ +class TgDeviceForm_OracleInhand extends TgDeviceForm_Inhand + native(ChampOracle); + +var TgPawn_Oracle m_CachedOracle; +var float c_fLastReceivedTransitionInTime; + +simulated function bool HasCachedOracle() +{ + // End:0x2B + if(m_CachedOracle == none) + { + m_CachedOracle = TgPawn_Oracle(PawnOwner); + } + return m_CachedOracle != none; + //return ReturnValue; +} + +simulated function TgAnimNodeSlot GetFullBodyAnimNode() +{ + // End:0xDD + if(HasCachedOracle()) + { + // End:0xDD + if((m_CachedOracle.m_WeaponMesh != none) && m_CachedOracle.m_WeaponMesh.m_WeaponMesh1P != none) + { + return TgAnimNodeSlot(m_CachedOracle.m_WeaponMesh.m_WeaponMesh1P.Animations.FindAnimNode('Fire')); + } + } + return none; + //return ReturnValue; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + local TgAnimNodeSlot FireFullBodyAnimNode; + + super(TgDeviceForm).Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + // End:0x2D2 + if(HasCachedOracle()) + { + // End:0x169 + if((m_CachedOracle.m_WeaponMesh != none) && m_CachedOracle.m_WeaponMesh.m_WeaponMesh1P != none) + { + m_CachedOracle.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('MuzzleFlash', 0); + m_CachedOracle.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('MuzzleFlash', 0); + } + // End:0x274 + if((m_CachedOracle.m_WeaponMesh != none) && m_CachedOracle.m_WeaponMesh.m_WeaponMesh3P != none) + { + m_CachedOracle.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('MuzzleFlash', 0); + m_CachedOracle.m_WeaponMesh.m_WeaponMesh3P.FxActivateGroup('MuzzleFlash', 0); + } + FireFullBodyAnimNode = GetFullBodyAnimNode(); + // End:0x2D2 + if(FireFullBodyAnimNode != none) + { + FireFullBodyAnimNode.PlayCustomAnim('ADD_Fire_Loop', 1.0000000, 0.0000000, 0.2000000, false, true); + } + } + //return; +} + +simulated event PlayToggleTransitionAnimations(float transitionPercent, float totalTransitionTime, bool transitionToActive) +{ + super(TgDeviceForm).PlayToggleTransitionAnimations(transitionPercent, totalTransitionTime, transitionToActive); + // End:0x46 + if(transitionToActive) + { + c_fLastReceivedTransitionInTime = totalTransitionTime; + } + // End:0x6C + if((transitionPercent > 0.0000000) || !transitionToActive) + { + return; + } + // End:0x28F + if(HasCachedOracle()) + { + // End:0x184 + if((m_CachedOracle.m_WeaponMesh != none) && m_CachedOracle.m_WeaponMesh.m_WeaponMesh1P != none) + { + m_CachedOracle.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('TransitionInFull', 0); + m_CachedOracle.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('TransitionInFull', 0); + } + // End:0x28F + if((m_CachedOracle.m_WeaponMesh != none) && m_CachedOracle.m_WeaponMesh.m_WeaponMesh3P != none) + { + m_CachedOracle.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('TransitionInFull', 0); + m_CachedOracle.m_WeaponMesh.m_WeaponMesh3P.FxActivateGroup('TransitionInFull', 0); + } + } + //return; +} + +simulated function RecoverDeviceState(TgPawn.TG_REP_DEVICE_STATE DesiredState) +{ + super(TgDeviceForm).RecoverDeviceState(DesiredState); + // End:0x40 + if(int(DesiredState) == int(1)) + { + PlayToggleTransitionAnimations(0.0000000, c_fLastReceivedTransitionInTime, true); + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super(TgDeviceForm).StopFire(nFireModeNum); + // End:0x232 + if(HasCachedOracle()) + { + // End:0x129 + if((m_CachedOracle.m_WeaponMesh != none) && m_CachedOracle.m_WeaponMesh.m_WeaponMesh1P != none) + { + m_CachedOracle.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('TransitionInFull', 0); + m_CachedOracle.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('MuzzleFlash', 0); + } + // End:0x232 + if((m_CachedOracle.m_WeaponMesh != none) && m_CachedOracle.m_WeaponMesh.m_WeaponMesh3P != none) + { + m_CachedOracle.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('TransitionInFull', 0); + m_CachedOracle.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('MuzzleFlash', 0); + } + } + //return; +} + +simulated function UpdateAmmoCountSingleFx(TgSpecialFx Fx, float fAmmoPerc) +{ + local int I; + + // End:0xF9 + if(Fx != none) + { + I = 0; + J0x1A: + + // End:0xF9 [Loop If] + if(I < Fx.c_PSCList.Length) + { + // End:0xEB + if(Fx.c_PSCList[I].c_PSC != none) + { + Fx.c_PSCList[I].c_PSC.SetFloatParameter('AmmoCount', fAmmoPerc); + } + I++; + // [Loop Continue] + goto J0x1A; + } + } + //return; +} + +simulated function UpdateAmmoCountFx(float fPreviousPerc, float fCurrentPerc) +{ + local array FxList; + local float fAmmoPerc; + local int I; + + // End:0x173 + if(HasCachedOracle()) + { + // End:0x41 + if(m_CachedOracle.r_bRestoreSoulActive) + { + fAmmoPerc = 0.0000000; + } + else + { + fAmmoPerc = fCurrentPerc; + } + // End:0x173 + if((m_CachedOracle.m_WeaponMesh != none) && m_CachedOracle.m_WeaponMesh.m_WeaponMesh1P != none) + { + FxList = PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxGetAll('AlwaysOn', 0); + I = 0; + J0x11E: + + // End:0x173 [Loop If] + if(I < FxList.Length) + { + UpdateAmmoCountSingleFx(TgSpecialFx(FxList[I]), fAmmoPerc); + I++; + // [Loop Continue] + goto J0x11E; + } + } + } + //return; +} + +defaultproperties +{ + c_fLastReceivedTransitionInTime=0.2000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_OwlStealth.uc b/exported/TgGame/Classes/TgDeviceForm_OwlStealth.uc new file mode 100755 index 00000000..3b09d6b2 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_OwlStealth.uc @@ -0,0 +1,37 @@ +class TgDeviceForm_OwlStealth extends TgDeviceForm + native(ChampOwl); + +// Export UTgDeviceForm_OwlStealth::execStealthTransition(FFrame&, void* const) +native function StealthTransition(bool bStealthActivating, float fTransitionTime); + +event BuildUp(int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional float fBuildupTime = 0.0000000) +{ + super.BuildUp(nFireMode, nEquipSlot, nSocketIndex, fBuildupTime); + StealthTransition(true, fBuildupTime); + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + StealthTransition(false, 0.2000000); + //return; +} + +event DoInterrupt() +{ + super.DoInterrupt(); + StealthTransition(false, 0.2000000); + //return; +} + +simulated function RecoverDeviceState(TgPawn.TG_REP_DEVICE_STATE DesiredState) +{ + // End:0x3D + if((int(DesiredState) == int(1)) && FormState != 'DeviceFiring') + { + StealthTransition(true, 0.0000000); + } + super.RecoverDeviceState(DesiredState); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_PoppyBomb.uc b/exported/TgGame/Classes/TgDeviceForm_PoppyBomb.uc new file mode 100755 index 00000000..6ec4d006 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_PoppyBomb.uc @@ -0,0 +1,37 @@ +class TgDeviceForm_PoppyBomb extends TgDeviceForm; + +var TgAnimNodeBlendList m_PoppyShakeBlendList1P; + +simulated event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache1PAnimNodes(SkelComp); + // End:0x4A + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_PoppyShakeBlendList1P = TgAnimNodeBlendList(SkelComp.FindAnimNode('Poppy_Shake')); + //return; +} + +simulated event EnterTargetingMode() +{ + super.EnterTargetingMode(); + // End:0x3E + if(m_PoppyShakeBlendList1P != none) + { + m_PoppyShakeBlendList1P.SetActiveChild(1, 0.2000000); + } + //return; +} + +simulated event ExitTargetingMode() +{ + super.ExitTargetingMode(); + // End:0x3E + if(m_PoppyShakeBlendList1P != none) + { + m_PoppyShakeBlendList1P.SetActiveChild(0, 0.2000000); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_Pounce.uc b/exported/TgGame/Classes/TgDeviceForm_Pounce.uc new file mode 100755 index 00000000..9d1f5f6a --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Pounce.uc @@ -0,0 +1,162 @@ +class TgDeviceForm_Pounce extends TgDeviceForm + native(ChampBlades); + +var array m_PounceNodes3p; +var array m_PounceNodes1p; +var bool bFOVZoomActive; +var float m_fCameraFOVInterpolationTime; +var float m_fFOVModifier; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeChannelFire_Pounce AnimNode; + + super.Cache3PAnimNodes(SkelComp); + m_PounceNodes3p.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeChannelFire_Pounce', AnimNode) + { + m_PounceNodes3p.AddItem(AnimNode); + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeChannelFire_Pounce AnimNode; + + super.Cache1PAnimNodes(SkelComp); + m_PounceNodes1p.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeChannelFire_Pounce', AnimNode) + { + m_PounceNodes1p.AddItem(AnimNode); + } + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + SetPounceNodeHitSuccessful(bSuccessfulHit); + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + //return; +} + +event Hit(int nFireMode, Actor Target, float fDamageAmount, Vector HitLocation, Vector HitNormal, const out ExtraDamageInfo ExtraInfo) +{ + SetPounceNodeHitSuccessful(true); + super.Hit(nFireMode, Target, fDamageAmount, HitLocation, HitNormal, ExtraInfo); + //return; +} + +event SetPounceNodeHitSuccessful(bool bSuccessfulHit) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x7E [Loop If] + if(I < m_PounceNodes3p.Length) + { + // End:0x70 + if(m_PounceNodes3p[I] != none) + { + m_PounceNodes3p[I].m_bPounceHitSuccessful = bSuccessfulHit; + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x89: + + // End:0xFC [Loop If] + if(I < m_PounceNodes1p.Length) + { + // End:0xEE + if(m_PounceNodes1p[I] != none) + { + m_PounceNodes1p[I].m_bPounceHitSuccessful = bSuccessfulHit; + } + I++; + // [Loop Continue] + goto J0x89; + } + //return; +} + +event Generic1(optional byte byExtraData) +{ + TriggerFOVZoom(true); + super.Generic1(byExtraData); + //return; +} + +event Generic2(optional byte byExtraData) +{ + TriggerFOVZoom(false); + super.Generic2(byExtraData); + //return; +} + +event StopFire(int nFireModeNum) +{ + TriggerFOVZoom(false); + super.StopFire(nFireModeNum); + //return; +} + +simulated function TriggerFOVZoom(bool bActive) +{ + local TgPawn_Character TgP; + local TgPlayerController TgPC; + local TgPlayerCamera Cam; + + // End:0x198 + if(bFOVZoomActive != bActive) + { + bFOVZoomActive = bActive; + TgP = TgPawn_Character(PawnOwner); + // End:0x198 + if(TgP != none) + { + TgPC = TgPlayerController(TgP.GetALocalPlayerController()); + // End:0x198 + if((TgPC != none) && TgPC.GetTgPawn() == TgP) + { + Cam = TgPlayerCamera(TgPC.PlayerCamera); + // End:0x198 + if(Cam != none) + { + // End:0x16B + if(bFOVZoomActive) + { + Cam.InterpolateFOV(Cam.GetFOVAngle() + m_fFOVModifier, m_fCameraFOVInterpolationTime); + } + else + { + Cam.InterpolateFOV(0.0000000, m_fCameraFOVInterpolationTime); + } + } + } + } + } + //return; +} + +defaultproperties +{ + m_fCameraFOVInterpolationTime=0.1200000 + m_fFOVModifier=10.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Presence.uc b/exported/TgGame/Classes/TgDeviceForm_Presence.uc new file mode 100755 index 00000000..2c155c8b --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Presence.uc @@ -0,0 +1,6 @@ +class TgDeviceForm_Presence extends TgDeviceForm; + +defaultproperties +{ + m_bUseImpactFXOverride=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Pursuit.uc b/exported/TgGame/Classes/TgDeviceForm_Pursuit.uc new file mode 100755 index 00000000..b980a067 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Pursuit.uc @@ -0,0 +1,131 @@ +class TgDeviceForm_Pursuit extends TgDeviceForm; + +var TgPawn_Lex m_CachedLex; +var name m_LeftSlideSkelControlName1P; +var name m_RightSlideSkelControlName1P; +var name m_LeftSlideSkelControlName3P; +var name m_RightSlideSkelControlName3P; +var SkelControlBase m_LeftSlideSkelControl1P; +var SkelControlBase m_RightSlideSkelControl1P; +var SkelControlBase m_LeftSlideSkelControl3P; +var SkelControlBase m_RightSlideSkelControl3P; +var float c_fPreviousLeftSlideStrength; +var float c_fPreviousRightSlideStrength; +var bool m_bCachedDualFireParity; + +function bool HasCachedLex() +{ + // End:0x3A + if(m_CachedLex == none) + { + // End:0x3A + if(PawnOwner != none) + { + m_CachedLex = TgPawn_Lex(PawnOwner); + } + } + return m_CachedLex != none; + //return ReturnValue; +} + +simulated event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache1PAnimNodes(SkelComp); + // End:0x4A + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_LeftSlideSkelControl1P = SkelComp.FindSkelControl(m_LeftSlideSkelControlName1P); + m_RightSlideSkelControl1P = SkelComp.FindSkelControl(m_RightSlideSkelControlName1P); + //return; +} + +simulated event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache3PAnimNodes(SkelComp); + // End:0x4A + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_LeftSlideSkelControl3P = SkelComp.FindSkelControl(m_LeftSlideSkelControlName3P); + m_RightSlideSkelControl3P = SkelComp.FindSkelControl(m_RightSlideSkelControlName3P); + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x1F5 + if(HasCachedLex()) + { + m_bCachedDualFireParity = m_CachedLex.m_bFireLeftWeapon; + m_CachedLex.c_bPursuitFiring = true; + // End:0xE4 + if(m_LeftSlideSkelControl1P != none) + { + c_fPreviousLeftSlideStrength = m_LeftSlideSkelControl1P.ControlStrength; + m_LeftSlideSkelControl1P.ControlStrength = 0.0000000; + } + // End:0x13F + if(m_LeftSlideSkelControl3P != none) + { + c_fPreviousLeftSlideStrength = m_LeftSlideSkelControl3P.ControlStrength; + m_LeftSlideSkelControl3P.ControlStrength = 0.0000000; + } + // End:0x19A + if(m_RightSlideSkelControl1P != none) + { + c_fPreviousRightSlideStrength = m_RightSlideSkelControl1P.ControlStrength; + m_RightSlideSkelControl1P.ControlStrength = 0.0000000; + } + // End:0x1F5 + if(m_RightSlideSkelControl3P != none) + { + c_fPreviousRightSlideStrength = m_RightSlideSkelControl3P.ControlStrength; + m_RightSlideSkelControl3P.ControlStrength = 0.0000000; + } + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0x147 + if(HasCachedLex()) + { + m_CachedLex.c_bPursuitFiring = false; + m_CachedLex.m_bFireLeftWeapon = m_bCachedDualFireParity; + // End:0xA2 + if(m_LeftSlideSkelControl1P != none) + { + m_LeftSlideSkelControl1P.ControlStrength = c_fPreviousLeftSlideStrength; + } + // End:0xD9 + if(m_LeftSlideSkelControl3P != none) + { + m_LeftSlideSkelControl3P.ControlStrength = c_fPreviousLeftSlideStrength; + } + // End:0x110 + if(m_RightSlideSkelControl1P != none) + { + m_RightSlideSkelControl1P.ControlStrength = c_fPreviousRightSlideStrength; + } + // End:0x147 + if(m_RightSlideSkelControl3P != none) + { + m_RightSlideSkelControl3P.ControlStrength = c_fPreviousRightSlideStrength; + } + } + //return; +} + +defaultproperties +{ + m_LeftSlideSkelControlName1P="L_Slider" + m_RightSlideSkelControlName1P="R_Slider" + m_LeftSlideSkelControlName3P="L_Slider" + m_RightSlideSkelControlName3P="R_Slider" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Recharge.uc b/exported/TgGame/Classes/TgDeviceForm_Recharge.uc new file mode 100755 index 00000000..9de9036f --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Recharge.uc @@ -0,0 +1,66 @@ +class TgDeviceForm_Recharge extends TgDeviceForm_SpinnerWhileFiring; + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + SetSpinnersRotationSpeedState(((bSuccessfulHit) ? 1 : 0)); + SetLockedForBlendNodes(bSuccessfulHit); + super(TgDeviceForm).Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super(TgDeviceForm).StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + SetSpinnersActive(true); + SetSpinnersRotationSpeedState(0); + //return; +} + +event StopFire(int nFireModeNum) +{ + super(TgDeviceForm).StopFire(nFireModeNum); + SetSpinnersActive(false); + //return; +} + +function SetLockedForBlendNodes(bool bLocked) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x7D [Loop If] + if(I < m_ChannelFireBlendList1P.Length) + { + // End:0x6F + if(m_ChannelFireBlendList1P[I] != none) + { + m_ChannelFireBlendList1P[I].SetLockedBase(bLocked); + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x88: + + // End:0xFA [Loop If] + if(I < m_ChannelFireBlendList3P.Length) + { + // End:0xEC + if(m_ChannelFireBlendList3P[I] != none) + { + m_ChannelFireBlendList3P[I].SetLockedBase(bLocked); + } + I++; + // [Loop Continue] + goto J0x88; + } + //return; +} + +defaultproperties +{ + m_SpinnerName="RechargeCrystal" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_RendSoul.uc b/exported/TgGame/Classes/TgDeviceForm_RendSoul.uc new file mode 100755 index 00000000..bad0cef8 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_RendSoul.uc @@ -0,0 +1,76 @@ +class TgDeviceForm_RendSoul extends TgDeviceForm; + +simulated function ActivateFx(TgSpecialFx Fx, float fHealStacks) +{ + local int I; + + // End:0x11A + if(Fx != none) + { + Fx.Activate(); + I = 0; + J0x3B: + + // End:0x11A [Loop If] + if(I < Fx.c_PSCList.Length) + { + // End:0x10C + if(Fx.c_PSCList[I].c_PSC != none) + { + Fx.c_PSCList[I].c_PSC.SetFloatParameter('HealStacks', fHealStacks); + } + I++; + // [Loop Continue] + goto J0x3B; + } + } + //return; +} + +event Generic1(optional byte byExtraData) +{ + local int I; + local array FxList; + + // End:0x22A + if(PawnOwner != none) + { + // End:0x22A + if(PawnOwner.m_WeaponMesh != none) + { + // End:0x12F + if(PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + FxList = PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxGetAll('Generic1', 0); + I = 0; + J0xD8: + + // End:0x12F [Loop If] + if(I < FxList.Length) + { + ActivateFx(TgSpecialFx(FxList[I]), float(byExtraData)); + I++; + // [Loop Continue] + goto J0xD8; + } + } + // End:0x22A + if(PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + FxList = PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxGetAll('Generic1', 0); + I = 0; + J0x1D3: + + // End:0x22A [Loop If] + if(I < FxList.Length) + { + ActivateFx(TgSpecialFx(FxList[I]), float(byExtraData)); + I++; + // [Loop Continue] + goto J0x1D3; + } + } + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_RestoreSoul.uc b/exported/TgGame/Classes/TgDeviceForm_RestoreSoul.uc new file mode 100755 index 00000000..e61b21cc --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_RestoreSoul.uc @@ -0,0 +1,37 @@ +class TgDeviceForm_RestoreSoul extends TgDeviceForm; + +var TgPawn_Oracle m_CachedOracle; + +simulated function bool HasCachedOracle() +{ + // End:0x2B + if(m_CachedOracle == none) + { + m_CachedOracle = TgPawn_Oracle(PawnOwner); + } + return m_CachedOracle != none; + //return ReturnValue; +} + +simulated function RecoverDeviceState(TgPawn.TG_REP_DEVICE_STATE DesiredState) +{ + local TgWeaponMeshActor_OracleInhand InhandWeaponMesh; + + super.RecoverDeviceState(DesiredState); + // End:0xDE + if(int(DesiredState) == int(1)) + { + // End:0xDE + if((HasCachedOracle()) && m_CachedOracle.m_WeaponMesh != none) + { + InhandWeaponMesh = TgWeaponMeshActor_OracleInhand(m_CachedOracle.m_WeaponMesh); + // End:0xDE + if(InhandWeaponMesh != none) + { + InhandWeaponMesh.SetLoopingMuzzleEffects(false, 16); + InhandWeaponMesh.SetLoopingMuzzleEffects(true, 16); + } + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_Reversal.uc b/exported/TgGame/Classes/TgDeviceForm_Reversal.uc new file mode 100755 index 00000000..1e11426a --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Reversal.uc @@ -0,0 +1,188 @@ +class TgDeviceForm_Reversal extends TgDeviceForm + native(ChampAndroxus); + +var float m_fAccumulatedDamage; +var float m_fMaxChargeDamage; +var TgEmitter_CameraEffect c_CameraEffect; +var array m_1pNodes; +var array m_3pNodes; +var bool m_bIsAbsorbingShots; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByAbilityReversal AnimNode; + + m_3pNodes.Length = 0; + super.Cache3PAnimNodes(SkelComp); + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByAbilityReversal', AnimNode) + { + m_3pNodes.AddItem(AnimNode); + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByAbilityReversal AnimNode; + + m_1pNodes.Length = 0; + super.Cache1PAnimNodes(SkelComp); + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByAbilityReversal', AnimNode) + { + m_1pNodes.AddItem(AnimNode); + } + //return; +} + +function SetActiveChildren(TgAnimNodeBlendByAbilityReversal.EBlendReversal ChildIndex) +{ + local int I; + local float fBlendTime; + + I = 0; + J0x0B: + + // End:0xC5 [Loop If] + if(I < m_1pNodes.Length) + { + // End:0xB7 + if(m_1pNodes[I] != none) + { + fBlendTime = m_1pNodes[I].GetBlendTime(int(ChildIndex)); + m_1pNodes[I].SetActiveChild(int(ChildIndex), fBlendTime); + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0xD0: + + // End:0x18A [Loop If] + if(I < m_3pNodes.Length) + { + // End:0x17C + if(m_3pNodes[I] != none) + { + fBlendTime = m_3pNodes[I].GetBlendTime(int(ChildIndex)); + m_3pNodes[I].SetActiveChild(int(ChildIndex), fBlendTime); + } + I++; + // [Loop Continue] + goto J0xD0; + } + //return; +} + +event UpdateAccumulatedDamage(float newDamage) +{ + local TgSpecialFx chargeFX; + local editinline ParticleSystemComponent PSC; + local int I; + local float chargePercent; + + // End:0x24 + if(newDamage >= float(0)) + { + m_fAccumulatedDamage = newDamage; + } + chargePercent = m_fAccumulatedDamage / m_fMaxChargeDamage; + // End:0x212 + if(c_Mesh != none) + { + chargeFX = TgSpecialFx(c_Mesh.FxGet('Reversal_ChargeUp', 0)); + // End:0x212 + if(chargeFX != none) + { + I = 0; + J0xAA: + + // End:0x16A [Loop If] + if(I < chargeFX.c_PSCList.Length) + { + PSC = chargeFX.c_PSCList[I].c_PSC; + // End:0x15C + if(PSC != none) + { + PSC.SetFloatParameter('Power', chargePercent); + } + I++; + // [Loop Continue] + goto J0xAA; + } + // End:0x1D0 + if(chargePercent > float(0)) + { + // End:0x1CD + if(!chargeFX.c_bActive) + { + // End:0x1CD + if(m_bIsAbsorbingShots) + { + chargeFX.Activate(); + } + } + } + else + { + // End:0x212 + if(chargeFX.c_bActive) + { + chargeFX.Deactivate(true); + } + } + } + } + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + m_bIsAbsorbingShots = true; + UpdateAccumulatedDamage(0.0000000); + SetActiveChildren(1); + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + //return; +} + +event StopFire(int nFireModeNum) +{ + m_bIsAbsorbingShots = false; + // End:0x2E + if(m_fAccumulatedDamage > 0.0000000) + { + SetActiveChildren(2); + } + else + { + SetActiveChildren(3); + } + UpdateAccumulatedDamage(0.0000000); + super.StopFire(nFireModeNum); + //return; +} + +event DoInterrupt() +{ + m_bIsAbsorbingShots = false; + UpdateAccumulatedDamage(0.0000000); + super.DoInterrupt(); + //return; +} + +defaultproperties +{ + m_fMaxChargeDamage=800.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_RocketLauncher.uc b/exported/TgGame/Classes/TgDeviceForm_RocketLauncher.uc new file mode 100755 index 00000000..10da8ff0 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_RocketLauncher.uc @@ -0,0 +1,8 @@ +class TgDeviceForm_RocketLauncher extends TgDeviceForm; + +event Generic1(optional byte byExtraData) +{ + super.Generic1(byExtraData); + ((int(byExtraData) == int(1)) ? ActivateFxGroup('RuckusMissile') : DeactivateFxGroup('RuckusMissile')); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_RuckusInhand.uc b/exported/TgGame/Classes/TgDeviceForm_RuckusInhand.uc new file mode 100755 index 00000000..11fba4da --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_RuckusInhand.uc @@ -0,0 +1,242 @@ +class TgDeviceForm_RuckusInhand extends TgDeviceForm + native(ChampRuckus); + +var bool m_bFiredFromLeftGun; +var bool m_bFiredFromTopBarrel; +var bool m_bPlayingSpinnerSound; +var bool m_bPlayingFireLoopSound; +var bool m_bIsFiring; +var TgSkelCon_Spinner m_SpinnerSkelControl1P; +var TgSkelCon_Spinner m_SpinnerSkelControl3P; +var name c_nmSocketLeft; +var name c_nmSocketRight; +var() float m_fLoopingSoundThreshold; +var float m_fLastSpinConfirmationTimestamp; +var float m_fSpinConfirmationCooldown; +var TgSkelControlSingleBone_PistonBarrel m_LowerRightBarrel1P; +var TgSkelControlSingleBone_PistonBarrel m_UpperRightBarrel1P; +var TgSkelControlSingleBone_PistonBarrel m_LowerLeftBarrel1P; +var TgSkelControlSingleBone_PistonBarrel m_UpperLeftBarrel1P; +var TgSkelControlSingleBone_PistonBarrel m_LowerRightBarrel3P; +var TgSkelControlSingleBone_PistonBarrel m_UpperRightBarrel3P; +var TgSkelControlSingleBone_PistonBarrel m_LowerLeftBarrel3P; +var TgSkelControlSingleBone_PistonBarrel m_UpperLeftBarrel3P; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x60 + if(m_SpinnerSkelControl1P != none) + { + m_SpinnerSkelControl1P.Spin(true); + } + // End:0x8F + if(m_SpinnerSkelControl3P != none) + { + m_SpinnerSkelControl3P.Spin(true); + } + m_bIsFiring = true; + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + m_bIsFiring = false; + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache1PAnimNodes(SkelComp); + m_LowerRightBarrel1P = none; + m_UpperRightBarrel1P = none; + m_LowerLeftBarrel1P = none; + m_UpperLeftBarrel1P = none; + m_SpinnerSkelControl1P = none; + CacheAnimNodesHelper(SkelComp, m_LowerRightBarrel1P, m_UpperRightBarrel1P, m_LowerLeftBarrel1P, m_UpperLeftBarrel1P, m_SpinnerSkelControl1P); + //return; +} + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache3PAnimNodes(SkelComp); + m_LowerRightBarrel3P = none; + m_UpperRightBarrel3P = none; + m_LowerLeftBarrel3P = none; + m_UpperLeftBarrel3P = none; + m_SpinnerSkelControl3P = none; + CacheAnimNodesHelper(SkelComp, m_LowerRightBarrel3P, m_UpperRightBarrel3P, m_LowerLeftBarrel3P, m_UpperLeftBarrel3P, m_SpinnerSkelControl3P); + //return; +} + +function CacheAnimNodesHelper(TgSkeletalMeshComponent SkelComp, out TgSkelControlSingleBone_PistonBarrel LowerRightBarrel, out TgSkelControlSingleBone_PistonBarrel UpperRightBarrel, out TgSkelControlSingleBone_PistonBarrel LowerLeftBarrel, out TgSkelControlSingleBone_PistonBarrel UpperLeftBarrel, out TgSkelCon_Spinner Spinner) +{ + // End:0x37 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + LowerRightBarrel = TgSkelControlSingleBone_PistonBarrel(SkelComp.FindSkelControl('RT_LowerPistonBarrels')); + UpperRightBarrel = TgSkelControlSingleBone_PistonBarrel(SkelComp.FindSkelControl('RT_UpperPistonBarrels')); + LowerLeftBarrel = TgSkelControlSingleBone_PistonBarrel(SkelComp.FindSkelControl('LT_LowerPistonBarrels')); + UpperLeftBarrel = TgSkelControlSingleBone_PistonBarrel(SkelComp.FindSkelControl('LT_UpperPistonBarrels')); + Spinner = TgSkelCon_Spinner(SkelComp.FindSkelControl('Spinner')); + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + local TgPawn_Ruckus Ruckus; + + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + Ruckus = TgPawn_Ruckus(PawnOwner); + // End:0x837 + if(Ruckus != none) + { + m_bFiredFromLeftGun = !m_bFiredFromLeftGun; + // End:0xB9 + if(!m_bFiredFromLeftGun) + { + m_bFiredFromTopBarrel = !m_bFiredFromTopBarrel; + } + // End:0x481 + if(!m_bFiredFromLeftGun) + { + // End:0x2AB + if((Ruckus.m_WeaponMesh != none) && Ruckus.m_WeaponMesh.m_WeaponMesh1P != none) + { + Ruckus.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('MuzzleFlashLeft', 0); + Ruckus.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('MuzzleFlashLeft', 0); + // End:0x2AB + if(Ruckus.r_fBarrelSpinFactor < m_fLoopingSoundThreshold) + { + Ruckus.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('RuckusSingleFireLeft', 0); + Ruckus.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('RuckusSingleFireLeft', 0); + } + } + // End:0x3B6 + if((Ruckus.m_WeaponMesh != none) && Ruckus.m_WeaponMesh.m_WeaponMesh3P != none) + { + Ruckus.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('MuzzleFlashLeft', 0); + Ruckus.m_WeaponMesh.m_WeaponMesh3P.FxActivateGroup('MuzzleFlashLeft', 0); + } + // End:0x422 + if(m_bFiredFromTopBarrel) + { + // End:0x3F1 + if(m_UpperLeftBarrel1P != none) + { + m_UpperLeftBarrel1P.Depress(); + } + // End:0x41F + if(m_UpperLeftBarrel3P != none) + { + m_UpperLeftBarrel3P.Depress(); + } + } + else + { + // End:0x450 + if(m_LowerLeftBarrel1P != none) + { + m_LowerLeftBarrel1P.Depress(); + } + // End:0x47E + if(m_LowerLeftBarrel3P != none) + { + m_LowerLeftBarrel3P.Depress(); + } + } + } + else + { + // End:0x664 + if((Ruckus.m_WeaponMesh != none) && Ruckus.m_WeaponMesh.m_WeaponMesh1P != none) + { + Ruckus.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('MuzzleFlashRight', 0); + Ruckus.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('MuzzleFlashRight', 0); + // End:0x664 + if(Ruckus.r_fBarrelSpinFactor < m_fLoopingSoundThreshold) + { + Ruckus.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('RuckusSingleFireRight', 0); + Ruckus.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('RuckusSingleFireRight', 0); + } + } + // End:0x76F + if((Ruckus.m_WeaponMesh != none) && Ruckus.m_WeaponMesh.m_WeaponMesh3P != none) + { + Ruckus.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('MuzzleFlashRight', 0); + Ruckus.m_WeaponMesh.m_WeaponMesh3P.FxActivateGroup('MuzzleFlashRight', 0); + } + // End:0x7DB + if(m_bFiredFromTopBarrel) + { + // End:0x7AA + if(m_UpperRightBarrel1P != none) + { + m_UpperRightBarrel1P.Depress(); + } + // End:0x7D8 + if(m_UpperRightBarrel3P != none) + { + m_UpperRightBarrel3P.Depress(); + } + } + else + { + // End:0x809 + if(m_LowerRightBarrel1P != none) + { + m_LowerRightBarrel1P.Depress(); + } + // End:0x837 + if(m_LowerRightBarrel3P != none) + { + m_LowerRightBarrel3P.Depress(); + } + } + } + } + //return; +} + +event Vector GetTracerSocketLocation() +{ + local Vector socketPos; + local Rotator socketRot; + + // End:0x43 + if((PawnOwner == none) || PawnOwner.Mesh == none) + { + return vect(0.0000000, 0.0000000, 0.0000000); + } + // End:0x108 + if(PawnOwner.IsFirstPerson()) + { + // End:0xBE + if(!m_bFiredFromLeftGun) + { + socketPos = PawnOwner.GetWeaponStartTraceLocationAlt(Class'TgGame.TgDevice_RuckusInhand'.default.m_vProjectileSpawnOffset2); + } + else + { + socketPos = PawnOwner.GetWeaponStartTraceLocationAlt(Class'TgGame.TgDevice_RuckusInhand'.default.m_vProjectileSpawnOffset); + } + } + else + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.GetSocketWorldLocationAndRotation(((!m_bFiredFromLeftGun) ? c_nmSocketLeft : c_nmSocketRight), socketPos, socketRot); + } + return socketPos; + //return ReturnValue; +} + +defaultproperties +{ + m_bFiredFromTopBarrel=true + c_nmSocketLeft="WSO_Emit_02" + c_nmSocketRight="WSO_Emit_01" + m_fLoopingSoundThreshold=0.9500000 + m_fSpinConfirmationCooldown=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Salvo.uc b/exported/TgGame/Classes/TgDeviceForm_Salvo.uc new file mode 100755 index 00000000..240a2d8e --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Salvo.uc @@ -0,0 +1,216 @@ +class TgDeviceForm_Salvo extends TgDeviceForm + native(ChampDrogoz); + +var array m_SalvoBlendList1P; +var array m_SalvoBlendList3P; +var bool m_bSalvoLightShouldBlink; +var bool m_bSalvoLightIsOn; +var float m_fLastLightChangeTime; +var float m_fMinLightChangeTime; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendList AnimNode; + + super.Cache3PAnimNodes(SkelComp); + m_SalvoBlendList3P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xCD + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendList', AnimNode) + { + // End:0xCC + if(AnimNode.NodeName == 'SalvoNeedle') + { + m_SalvoBlendList3P.AddItem(AnimNode); + } + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendList AnimNode; + + super.Cache1PAnimNodes(SkelComp); + m_SalvoBlendList1P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xCD + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendList', AnimNode) + { + // End:0xCC + if(AnimNode.NodeName == 'SalvoNeedle') + { + m_SalvoBlendList1P.AddItem(AnimNode); + } + } + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local TgDeviceForm inhandDeviceForm; + local int I; + + // End:0x74 + if(PawnOwner != none) + { + inhandDeviceForm = PawnOwner.c_EquipForm[1]; + // End:0x74 + if(inhandDeviceForm != none) + { + inhandDeviceForm.SetAmmoBlendNodesAmount(nAmmoRemaining); + } + } + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + I = 0; + J0xAD: + + // End:0x140 [Loop If] + if(I < m_SalvoBlendList1P.Length) + { + // End:0x132 + if(m_SalvoBlendList1P[I] != none) + { + m_SalvoBlendList1P[I].SetActiveChild(1, m_SalvoBlendList1P[I].GetBlendTime(1)); + } + I++; + // [Loop Continue] + goto J0xAD; + } + I = 0; + J0x14B: + + // End:0x1DE [Loop If] + if(I < m_SalvoBlendList3P.Length) + { + // End:0x1D0 + if(m_SalvoBlendList3P[I] != none) + { + m_SalvoBlendList3P[I].SetActiveChild(1, m_SalvoBlendList3P[I].GetBlendTime(1)); + } + I++; + // [Loop Continue] + goto J0x14B; + } + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + local MaterialInstanceConstant MIC; + local int I; + + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + // End:0x2D5 + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('Drogoz_SalvoSteam', 0); + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('Drogoz_SalvoBeep', 0); + I = 0; + J0x17A: + + // End:0x280 [Loop If] + if(I < PawnOwner.m_WeaponMesh.m_WeaponMesh1P.Materials.Length) + { + MIC = MaterialInstanceConstant(PawnOwner.m_WeaponMesh.m_WeaponMesh1P.Materials[I]); + // End:0x272 + if(MIC != none) + { + MIC.SetScalarParameterValue('Ultimate', 1.0000000); + } + I++; + // [Loop Continue] + goto J0x17A; + } + m_bSalvoLightShouldBlink = true; + m_bSalvoLightIsOn = true; + m_fLastLightChangeTime = PawnOwner.WorldInfo.TimeSeconds; + } + // End:0x39C + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxActivateGroup('Drogoz_SalvoSteam', 0); + } + //return; +} + +event StopFire(int nFireModeNum) +{ + local MaterialInstanceConstant MIC; + local int I; + + super.StopFire(nFireModeNum); + I = 0; + J0x1E: + + // End:0xB1 [Loop If] + if(I < m_SalvoBlendList1P.Length) + { + // End:0xA3 + if(m_SalvoBlendList1P[I] != none) + { + m_SalvoBlendList1P[I].SetActiveChild(0, m_SalvoBlendList1P[I].GetBlendTime(0)); + } + I++; + // [Loop Continue] + goto J0x1E; + } + I = 0; + J0xBC: + + // End:0x14F [Loop If] + if(I < m_SalvoBlendList3P.Length) + { + // End:0x141 + if(m_SalvoBlendList3P[I] != none) + { + m_SalvoBlendList3P[I].SetActiveChild(0, m_SalvoBlendList3P[I].GetBlendTime(0)); + } + I++; + // [Loop Continue] + goto J0xBC; + } + // End:0x37A + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('Drogoz_SalvoSteam', 0); + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('Drogoz_SalvoBeep', 0); + I = 0; + J0x274: + + // End:0x37A [Loop If] + if(I < PawnOwner.m_WeaponMesh.m_WeaponMesh1P.Materials.Length) + { + MIC = MaterialInstanceConstant(PawnOwner.m_WeaponMesh.m_WeaponMesh1P.Materials[I]); + // End:0x36C + if(MIC != none) + { + MIC.SetScalarParameterValue('Ultimate', 0.0000000); + } + I++; + // [Loop Continue] + goto J0x274; + } + } + // End:0x43F + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('Drogoz_SalvoSteam', 0); + } + m_bSalvoLightShouldBlink = false; + m_bSalvoLightIsOn = false; + //return; +} + +defaultproperties +{ + m_fMinLightChangeTime=0.3000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Scope.uc b/exported/TgGame/Classes/TgDeviceForm_Scope.uc new file mode 100755 index 00000000..6c4c5578 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Scope.uc @@ -0,0 +1,71 @@ +class TgDeviceForm_Scope extends TgDeviceForm_ToggleWithLockout + native(ChampOwl); + +var float m_fTransitionAmount; +var float m_fTransitionPerSec; +var const float m_fWeaponZoomFOV; + +event StopFire(int nFireModeNum) +{ + super(TgDeviceForm).StopFire(nFireModeNum); + EnableZoom(false); + //return; +} + +simulated event SetToggleState(bool bIsActive) +{ + super(TgDeviceForm).SetToggleState(bIsActive); + EnableZoom(bIsActive); + //return; +} + +simulated event PlayToggleTransitionAnimations(float transitionPercent, float totalTransitionTime, bool transitionToActive) +{ + super(TgDeviceForm).PlayToggleTransitionAnimations(transitionPercent, totalTransitionTime, transitionToActive); + m_fTransitionAmount = transitionPercent; + m_fTransitionPerSec = (1.0000000 / totalTransitionTime) * float(((transitionToActive) ? 1 : -1)); + //return; +} + +simulated function EnableZoom(bool bIsActive) +{ + local TgPlayerController TgPC; + local TgPlayerCamera Cam; + + // End:0x1A6 + if(PawnOwner != none) + { + TgPC = TgPlayerController(PawnOwner.GetALocalPlayerController()); + // End:0x1A6 + if((TgPC != none) && TgPC.GetTgPawn() == PawnOwner) + { + Cam = TgPlayerCamera(TgPC.PlayerCamera); + // End:0x112 + if(Cam != none) + { + // End:0xF3 + if(bIsActive) + { + Cam.SetFOV(34.0000000); + } + else + { + Cam.ResetFOV(); + } + } + TgPC.SetHUDOverlay(((bIsActive) ? 3 : 0)); + // End:0x1A6 + if(PawnOwner.m_WeaponMesh != none) + { + PawnOwner.m_WeaponMesh.SetFOVZoomed(bIsActive); + } + } + } + //return; +} + +defaultproperties +{ + m_fWeaponZoomFOV=45.0000000 + m_GameplayCurves=TgGameplayCurves'GP_Owl.DeviceInhand' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Scout.uc b/exported/TgGame/Classes/TgDeviceForm_Scout.uc new file mode 100755 index 00000000..f91f903f --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Scout.uc @@ -0,0 +1,38 @@ +class TgDeviceForm_Scout extends TgDeviceForm; + +var SkelControlBase m_SKCBirdScale; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache3PAnimNodes(SkelComp); + m_SKCBirdScale = none; + // End:0x55 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_SKCBirdScale = SkelComp.FindSkelControl('Bird_Scale'); + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x60 + if(m_SKCBirdScale != none) + { + m_SKCBirdScale.SetSkelControlActive(true); + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0x42 + if(m_SKCBirdScale != none) + { + m_SKCBirdScale.SetSkelControlActive(false); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_SelfResurrection.uc b/exported/TgGame/Classes/TgDeviceForm_SelfResurrection.uc new file mode 100755 index 00000000..7a21f924 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_SelfResurrection.uc @@ -0,0 +1,39 @@ +class TgDeviceForm_SelfResurrection extends TgDeviceForm + native(ChampLazarus); + +var TgDevice_SelfResurrection.ResurrectionState m_CurrentDeviceState; + +event Generic1(optional byte byExtraData) +{ + local TgPawn_Lazarus pLazarus; + + m_CurrentDeviceState = byExtraData; + pLazarus = TgPawn_Lazarus(PawnOwner); + // End:0xE1 + if(pLazarus != none) + { + // End:0x76 + if(int(m_CurrentDeviceState) == int(2)) + { + pLazarus.FakeDeath(none); + } + else + { + // End:0xAE + if(int(m_CurrentDeviceState) == int(0)) + { + pLazarus.m_bHasPlayedDeathAnimation = false; + } + else + { + // End:0xE1 + if(int(m_CurrentDeviceState) == int(3)) + { + pLazarus.TermRagdoll(); + } + } + } + } + super.Generic1(byExtraData); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_ShadowTravel.uc b/exported/TgGame/Classes/TgDeviceForm_ShadowTravel.uc new file mode 100755 index 00000000..6693eb03 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_ShadowTravel.uc @@ -0,0 +1,43 @@ +class TgDeviceForm_ShadowTravel extends TgDeviceForm; + +event StopFire(int nFireModeNum) +{ + local int I; + local TgSpecialFx spawnedFX; + + super.StopFire(nFireModeNum); + // End:0x227 + if(PawnOwner != none) + { + // End:0x227 + if(PawnOwner.m_WeaponMesh != none) + { + // End:0x227 + if(PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('Generic2', 0); + spawnedFX = TgSpecialFx(PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('Generic2', 0)); + // End:0x227 + if(spawnedFX != none) + { + I = 0; + J0x158: + + // End:0x227 [Loop If] + if(I < spawnedFX.c_PSCList.Length) + { + // End:0x219 + if(spawnedFX.c_PSCList[I].c_pCameraEffect != none) + { + spawnedFX.c_PSCList[I].c_pCameraEffect.m_bShowOnlyIn1P = false; + } + I++; + // [Loop Continue] + goto J0x158; + } + } + } + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_ShellShield.uc b/exported/TgGame/Classes/TgDeviceForm_ShellShield.uc new file mode 100755 index 00000000..f1e6030e --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_ShellShield.uc @@ -0,0 +1,107 @@ +class TgDeviceForm_ShellShield extends TgDeviceForm + native(ChampMakoa); + +var bool m_bShouldBeActive; +var float m_fShieldActivationTime; +var float m_fShieldActivationPercent; + +// Export UTgDeviceForm_ShellShield::execUpdateShieldParameters(FFrame&, void* const) +native function UpdateShieldParameters(float DeltaSeconds); + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local MaterialInstanceConstant MIC; + local int I; + local float fEnemyScalarValue; + + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x40A + if(PawnOwner != none) + { + fEnemyScalarValue = ((PawnOwner.IsFriendlyWithLocalPawn()) ? 0.0000000 : 1.0000000); + // End:0x1EC + if((PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_HandsMesh != none) + { + I = 0; + J0xE2: + + // End:0x1EC [Loop If] + if(I < PawnOwner.m_WeaponMesh.m_HandsMesh.Materials.Length) + { + MIC = MaterialInstanceConstant(PawnOwner.m_WeaponMesh.m_HandsMesh.Materials[I]); + // End:0x1DE + if(MIC != none) + { + MIC.SetScalarParameterValue('FRIENDLY_ENEMY', fEnemyScalarValue); + } + I++; + // [Loop Continue] + goto J0xE2; + } + } + // End:0x2FB + if(PawnOwner.Mesh != none) + { + I = 0; + J0x21B: + + // End:0x2FB [Loop If] + if(I < PawnOwner.Mesh.Materials.Length) + { + MIC = MaterialInstanceConstant(PawnOwner.Mesh.Materials[I]); + // End:0x2ED + if(MIC != none) + { + MIC.SetScalarParameterValue('FRIENDLY_ENEMY', fEnemyScalarValue); + } + I++; + // [Loop Continue] + goto J0x21B; + } + } + // End:0x40A + if(PawnOwner.m_HeadMesh != none) + { + I = 0; + J0x32A: + + // End:0x40A [Loop If] + if(I < PawnOwner.m_HeadMesh.Materials.Length) + { + MIC = MaterialInstanceConstant(PawnOwner.m_HeadMesh.Materials[I]); + // End:0x3FC + if(MIC != none) + { + MIC.SetScalarParameterValue('FRIENDLY_ENEMY', fEnemyScalarValue); + } + I++; + // [Loop Continue] + goto J0x32A; + } + } + } + m_bShouldBeActive = true; + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0x2E + if(nFireModeNum == 0) + { + m_bShouldBeActive = false; + } + //return; +} + +event Generic1(optional byte byExtraData) +{ + m_bShouldBeActive = false; + //return; +} + +defaultproperties +{ + m_fShieldActivationTime=0.5000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_ShockPulseSubdevice.uc b/exported/TgGame/Classes/TgDeviceForm_ShockPulseSubdevice.uc new file mode 100755 index 00000000..8ddf599a --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_ShockPulseSubdevice.uc @@ -0,0 +1,8 @@ +class TgDeviceForm_ShockPulseSubdevice extends TgDeviceForm_ArcingBeam; + +defaultproperties +{ + m_bRequireDeviceIsFiring=false + m_bIsFXContinuous=false + m_nBeamEffectID=7126 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_ShoulderBash.uc b/exported/TgGame/Classes/TgDeviceForm_ShoulderBash.uc new file mode 100755 index 00000000..7f9683ab --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_ShoulderBash.uc @@ -0,0 +1,29 @@ +class TgDeviceForm_ShoulderBash extends TgDeviceForm + native(ChampFlak); + +var int moveAmount; + +// Export UTgDeviceForm_ShoulderBash::execUpdateTargetingModeLocation(FFrame&, void* const) +native function UpdateTargetingModeLocation(Vector NewLocation, Rotator NewRotation, optional float DistanceScale = 1.0000000); + +// Export UTgDeviceForm_ShoulderBash::execUsesTargetingMode(FFrame&, void* const) +native function bool UsesTargetingMode(); + +simulated event EnterTargetingMode() +{ + // End:0x39 + if(c_Mesh != none) + { + // End:0x39 + if((c_TargetingModeFx == none) || c_TargetingModeMeshIndicator == none) + { + InitializeTargetingModeFX(); + } + } + //return; +} + +defaultproperties +{ + moveAmount=10 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Smash.uc b/exported/TgGame/Classes/TgDeviceForm_Smash.uc new file mode 100755 index 00000000..44523b17 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Smash.uc @@ -0,0 +1,128 @@ +class TgDeviceForm_Smash extends TgDeviceForm; + +var array m_SmashBlendList1P; +var array m_SmashBlendList3P; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByAbilitySmash AnimNode; + + super.Cache3PAnimNodes(SkelComp); + m_SmashBlendList3P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByAbilitySmash', AnimNode) + { + m_SmashBlendList3P.AddItem(AnimNode); + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByAbilitySmash AnimNode; + + super.Cache1PAnimNodes(SkelComp); + m_SmashBlendList1P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByAbilitySmash', AnimNode) + { + m_SmashBlendList1P.AddItem(AnimNode); + } + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local int I; + + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + I = 0; + J0x3C: + + // End:0xA4 [Loop If] + if(I < m_SmashBlendList1P.Length) + { + // End:0x96 + if(m_SmashBlendList1P[I] != none) + { + m_SmashBlendList1P[I].BeginChargeUp(); + } + I++; + // [Loop Continue] + goto J0x3C; + } + I = 0; + J0xAF: + + // End:0x117 [Loop If] + if(I < m_SmashBlendList3P.Length) + { + // End:0x109 + if(m_SmashBlendList3P[I] != none) + { + m_SmashBlendList3P[I].BeginChargeUp(); + } + I++; + // [Loop Continue] + goto J0xAF; + } + // End:0x153 + if(c_Mesh != none) + { + c_Mesh.FxActivateGroup('Generic1', 0); + } + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + local int I; + + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + I = 0; + J0x5C: + + // End:0xC4 [Loop If] + if(I < m_SmashBlendList1P.Length) + { + // End:0xB6 + if(m_SmashBlendList1P[I] != none) + { + m_SmashBlendList1P[I].Attack(); + } + I++; + // [Loop Continue] + goto J0x5C; + } + I = 0; + J0xCF: + + // End:0x137 [Loop If] + if(I < m_SmashBlendList3P.Length) + { + // End:0x129 + if(m_SmashBlendList3P[I] != none) + { + m_SmashBlendList3P[I].Attack(); + } + I++; + // [Loop Continue] + goto J0xCF; + } + // End:0x171 + if(c_Mesh != none) + { + c_Mesh.FxDeactivateGroup('Generic1', 0); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_SniperMode.uc b/exported/TgGame/Classes/TgDeviceForm_SniperMode.uc new file mode 100755 index 00000000..b076bca8 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_SniperMode.uc @@ -0,0 +1 @@ +class TgDeviceForm_SniperMode extends TgDeviceForm_ToggleWithLockout; diff --git a/exported/TgGame/Classes/TgDeviceForm_SpaceTime.uc b/exported/TgGame/Classes/TgDeviceForm_SpaceTime.uc new file mode 100755 index 00000000..15128f36 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_SpaceTime.uc @@ -0,0 +1,73 @@ +class TgDeviceForm_SpaceTime extends TgDeviceForm; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + PlayBeamEffect(true); + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + PlayBeamEffect(false); + //return; +} + +simulated function PlayBeamEffect(bool bUseBuildupBeam) +{ + local TgPawn_Astro pAstro; + local Vector AimVector, endLocation; + local TgSpecialFx pBuildupFX; + local Emitter TracerBeamEmitter; + local int I; + + pAstro = TgPawn_Astro(PawnOwner); + // End:0xB9 + if(pAstro != none) + { + // End:0x8F + if(pAstro.IsLocallyControlled()) + { + AimVector = Vector(pAstro.Controller.Rotation); + } + else + { + AimVector = Vector(pAstro.r_mUltimateAimRotation); + } + } + // End:0x132 + if(bUseBuildupBeam) + { + pBuildupFX = TgSpecialFx(PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxGet('Astro_Ult_Buildup', 0)); + } + else + { + pBuildupFX = TgSpecialFx(PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxGet('Astro_Ult', 0)); + } + // End:0x3B7 + if(pBuildupFX != none) + { + I = 0; + J0x1B5: + + // End:0x3B7 [Loop If] + if(I < pBuildupFX.c_PSCList.Length) + { + TracerBeamEmitter = PawnOwner.Spawn(Class'TgGame.TgEmitter', PawnOwner,, PawnOwner.Location, Rotator(AimVector),, true); + pBuildupFX.SetPSCChannels(TracerBeamEmitter.ParticleSystemComponent); + TracerBeamEmitter.SetTemplate(pBuildupFX.c_PSCList[I].c_PSCTemplate, true); + endLocation = AimVector * ModeDatas[0].c_fMaxRange; + endLocation += PawnOwner.Location; + // End:0x3A9 + if(TracerBeamEmitter.ParticleSystemComponent != none) + { + TracerBeamEmitter.ParticleSystemComponent.SetVectorParameter('beamEnd', endLocation); + } + I++; + // [Loop Continue] + goto J0x1B5; + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_SpinnerWhileFiring.uc b/exported/TgGame/Classes/TgDeviceForm_SpinnerWhileFiring.uc new file mode 100755 index 00000000..96833213 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_SpinnerWhileFiring.uc @@ -0,0 +1,69 @@ +class TgDeviceForm_SpinnerWhileFiring extends TgDeviceForm + native(Devices); + +var const name m_SpinnerName; +var array m_SpinnerSkelControls1p; +var array m_SpinnerSkelControls3p; + +// Export UTgDeviceForm_SpinnerWhileFiring::execCacheSkelControls(FFrame&, void* const) +native function CacheSkelControls(AnimTree pAnimTree, out array SpinnerSkelControls); + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache1PAnimNodes(SkelComp); + CacheSpinner(SkelComp, m_SpinnerSkelControls1p); + //return; +} + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache3PAnimNodes(SkelComp); + CacheSpinner(SkelComp, m_SpinnerSkelControls3p); + //return; +} + +function CacheSpinner(TgSkeletalMeshComponent SkelComp, out array SpinnerSkelControls) +{ + SpinnerSkelControls.Remove(0, SpinnerSkelControls.Length); + // End:0x4D + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + CacheSkelControls(AnimTree(SkelComp.Animations), SpinnerSkelControls); + //return; +} + +function SetSpinnersActive(bool bActive) +{ + local TgSkelCon_Spinner Spinner; + + // End:0x41 + foreach m_SpinnerSkelControls1p(Spinner) + { + Spinner.Spin(bActive); + } + // End:0x83 + foreach m_SpinnerSkelControls3p(Spinner) + { + Spinner.Spin(bActive); + } + //return; +} + +function SetSpinnersRotationSpeedState(int nState) +{ + local TgSkelCon_Spinner Spinner; + + // End:0x40 + foreach m_SpinnerSkelControls1p(Spinner) + { + Spinner.m_nRotationSpeedState = nState; + } + // End:0x81 + foreach m_SpinnerSkelControls3p(Spinner) + { + Spinner.m_nRotationSpeedState = nState; + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_Spite.uc b/exported/TgGame/Classes/TgDeviceForm_Spite.uc new file mode 100755 index 00000000..c4018bd8 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Spite.uc @@ -0,0 +1,235 @@ +class TgDeviceForm_Spite extends TgDeviceForm + native(ChampDarklord); + +var array m_SpiteNodes3p; +var array m_SpiteNodes1p; +var array m_DarklordNodes1p; +var bool bFOVZoomActive; +var float m_fCameraFOVInterpolationTime; +var float m_fFOVModifier; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeChannelFire_Spite AnimNode; + + super.Cache3PAnimNodes(SkelComp); + m_SpiteNodes3p.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeChannelFire_Spite', AnimNode) + { + m_SpiteNodes3p.AddItem(AnimNode); + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeChannelFire_Spite AnimNode; + local TgAnimBlendByPaladinsCharacter_Darklord animNode2; + + super.Cache1PAnimNodes(SkelComp); + m_SpiteNodes1p.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeChannelFire_Spite', AnimNode) + { + m_SpiteNodes1p.AddItem(AnimNode); + } + // End:0xED + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimBlendByPaladinsCharacter_Darklord', animNode2) + { + m_DarklordNodes1p.AddItem(animNode2); + } + //return; +} + +event Generic1(optional byte byExtraData) +{ + TriggerFOVZoom(true); + super.Generic1(byExtraData); + //return; +} + +event Generic2(optional byte byExtraData) +{ + TriggerFOVZoom(false); + super.Generic2(byExtraData); + //return; +} + +event Generic3(optional byte byExtraData) +{ + local int I; + local TgDevice_Spite.SpiteAnimState animState; + + animState = byExtraData; + I = 0; + J0x1F: + + // End:0x90 [Loop If] + if(I < m_SpiteNodes3p.Length) + { + // End:0x82 + if(m_SpiteNodes3p[I] != none) + { + m_SpiteNodes3p[I].SetAnimState(animState); + } + I++; + // [Loop Continue] + goto J0x1F; + } + I = 0; + J0x9B: + + // End:0x10C [Loop If] + if(I < m_SpiteNodes1p.Length) + { + // End:0xFE + if(m_SpiteNodes1p[I] != none) + { + m_SpiteNodes1p[I].SetAnimState(animState); + } + I++; + // [Loop Continue] + goto J0x9B; + } + // End:0x146 + if(int(animState) == int(1)) + { + DeactivateFxGroup('Darklord_UltHitStart'); + ActivateFxGroup('Darklord_UltHitStart'); + } + //return; +} + +event Generic4(optional byte byExtraData) +{ + local int I; + local bool bTargetDied; + + bTargetDied = int(byExtraData) == int(1); + I = 0; + J0x28: + + // End:0x9B [Loop If] + if(I < m_DarklordNodes1p.Length) + { + // End:0x8D + if(m_DarklordNodes1p[I] != none) + { + m_DarklordNodes1p[I].m_bTriggerUltKilledTargetRetrieve = bTargetDied; + } + I++; + // [Loop Continue] + goto J0x28; + } + //return; +} + +event Generic5(optional byte byExtraData) +{ + DeactivateFxGroup('Darklord_UltHitStart'); + //return; +} + +event StopFire(int nFireModeNum) +{ + TriggerFOVZoom(false); + super.StopFire(nFireModeNum); + //return; +} + +simulated function TriggerFOVZoom(bool bActive) +{ + local TgPawn_Character TgP; + local TgPlayerController TgPC; + local TgPlayerCamera Cam; + + // End:0x198 + if(bFOVZoomActive != bActive) + { + bFOVZoomActive = bActive; + TgP = TgPawn_Character(PawnOwner); + // End:0x198 + if(TgP != none) + { + TgPC = TgPlayerController(TgP.GetALocalPlayerController()); + // End:0x198 + if((TgPC != none) && TgPC.GetTgPawn() == TgP) + { + Cam = TgPlayerCamera(TgPC.PlayerCamera); + // End:0x198 + if(Cam != none) + { + // End:0x16B + if(bFOVZoomActive) + { + Cam.InterpolateFOV(Cam.GetFOVAngle() + m_fFOVModifier, m_fCameraFOVInterpolationTime); + } + else + { + Cam.InterpolateFOV(0.0000000, m_fCameraFOVInterpolationTime); + } + } + } + } + } + //return; +} + +simulated function RecoverDeviceState(TgPawn.TG_REP_DEVICE_STATE DesiredState) +{ + local int I; + + // End:0x117 + if((int(DesiredState) == int(0)) && FormState == 'DeviceFiring') + { + I = 0; + J0x38: + + // End:0xA2 [Loop If] + if(I < m_SpiteNodes3p.Length) + { + // End:0x94 + if(m_SpiteNodes3p[I] != none) + { + m_SpiteNodes3p[I].SetAnimState(4); + } + I++; + // [Loop Continue] + goto J0x38; + } + I = 0; + J0xAD: + + // End:0x117 [Loop If] + if(I < m_SpiteNodes1p.Length) + { + // End:0x109 + if(m_SpiteNodes1p[I] != none) + { + m_SpiteNodes1p[I].SetAnimState(4); + } + I++; + // [Loop Continue] + goto J0xAD; + } + } + super.RecoverDeviceState(DesiredState); + //return; +} + +defaultproperties +{ + m_fCameraFOVInterpolationTime=0.1200000 + m_fFOVModifier=10.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Spray.uc b/exported/TgGame/Classes/TgDeviceForm_Spray.uc new file mode 100755 index 00000000..92e7132f --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Spray.uc @@ -0,0 +1,112 @@ +class TgDeviceForm_Spray extends TgDeviceForm + native(Devices); + +enum SprayDisplayBehavior +{ + SDB_RandomSprayAlpha, // 0 + SDB_MasteryNumbers, // 1 + SDB_SprayAlphaMasteryNumbers, // 2 + SDB_TickingNumbers, // 3 + SDB_MAX // 4 +}; + +var array m_SprayMaterial; +var MaterialInstanceConstant m_SprayMIC; +var int m_nRandAlphaMaskMax; +var int m_nPrevAlphaMask; +var export editinline DecalComponent c_SpawnedDecal; +var float m_fAccurateTraceLength; +var float m_fWidth; +var float m_fHeight; +var float m_fDepth; +var int m_nActiveMaterialIndex; +var TgDeviceForm_Spray.SprayDisplayBehavior m_SprayBehavior; +var bool m_bInitializedSprayParams; +var int m_nSprayHitFXId1P; +var int m_nSprayHitFXId3P; +var int m_nSprayMissedFXId1P; +var int m_nSprayMissedFXId3P; +var TgSpecialFx c_SprayHitFX; +var TgSpecialFx c_SprayMissedFX; + +// Export UTgDeviceForm_Spray::execPlaySprayFX(FFrame&, void* const) +native function PlaySprayFX(bool bSuccessfulSpray); + +// Export UTgDeviceForm_Spray::execSetSprayBehaviorParams(FFrame&, void* const) +native function SetSprayBehaviorParams(); + +// Export UTgDeviceForm_Spray::execSetSprayNumbers(FFrame&, void* const) +native function SetSprayNumbers(int nNumberToSet); + +// Export UTgDeviceForm_Spray::execSetRandomSprayAlpha(FFrame&, void* const) +native function SetRandomSprayAlpha(); + +// Export UTgDeviceForm_Spray::execGetCharacterMastery(FFrame&, void* const) +native function int GetCharacterMastery(); + +event PlayImpactEffects(Vector HitLocation, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional Vector FireOrigin, optional float fHitTraceDistOverride = -1.0000000, optional bool bGenerateUpdatedHitLocation = false) +{ + local Vector FireDirection, SprayHitLocation, HitNormal; + local Actor SprayActor; + local TraceHitInfo HitInfo; + local float DecalRotation; + local editinline DecalComponent NewComponent; + + // End:0x2DB + if(((PawnOwner != none) && m_SprayMIC != none) && bSuccessfulHit) + { + PlaySprayFX(bSuccessfulHit); + // End:0xA4 + if(FireOrigin == vect(0.0000000, 0.0000000, 0.0000000)) + { + FireOrigin = PawnOwner.Location; + } + FireDirection = Normal(HitLocation - FireOrigin); + SprayActor = PawnOwner.Trace(SprayHitLocation, HitNormal, HitLocation + (FireDirection * m_fAccurateTraceLength), HitLocation - (FireDirection * m_fAccurateTraceLength), true,, HitInfo, PawnOwner.1); + // End:0x2DB + if((SprayActor != none) && SprayActor.bWorldGeometry) + { + DecalRotation = Class'TgGame.TgSpecialFx'.static.CalculateOrientedDecalRotation(HitLocation, HitNormal, Normal(SprayHitLocation - FireOrigin)); + SetSprayBehaviorParams(); + NewComponent = PawnOwner.WorldInfo.MyDecalManager.SpawnDecal(false, m_SprayMIC, SprayHitLocation, Rotator(-HitNormal), m_fWidth, m_fHeight, m_fDepth, false, DecalRotation); + // End:0x2D8 + if(NewComponent != none) + { + // End:0x2C5 + if(c_SpawnedDecal != none) + { + c_SpawnedDecal.DetachFromAny(); + } + c_SpawnedDecal = NewComponent; + } + } + } + //return; +} + +simulated event OnDestroyed() +{ + super.OnDestroyed(); + // End:0x38 + if(c_SpawnedDecal != none) + { + c_SpawnedDecal.DetachFromAny(); + } + //return; +} + +defaultproperties +{ + m_SprayMaterial[0]=MaterialInstanceConstant'Sprays.Materials.MIC_SprayMaterial' + m_SprayMaterial[1]=MaterialInstanceConstant'Sprays.Materials.MIC_SprayMaterial_Mastery' + m_nRandAlphaMaskMax=3 + m_nPrevAlphaMask=-1 + m_fAccurateTraceLength=5.0000000 + m_fWidth=128.0000000 + m_fHeight=128.0000000 + m_fDepth=128.0000000 + m_nSprayHitFXId1P=7428 + m_nSprayHitFXId3P=7427 + m_nSprayMissedFXId1P=-1 + m_nSprayMissedFXId3P=-1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Stasis.uc b/exported/TgGame/Classes/TgDeviceForm_Stasis.uc new file mode 100755 index 00000000..53db2059 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Stasis.uc @@ -0,0 +1,38 @@ +class TgDeviceForm_Stasis extends TgDeviceForm + native(ChampEvie); + +var bool m_bNeedsLoopActivation; +var float m_fFireStartTime; +var float m_fLoopDelay; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + m_bNeedsLoopActivation = true; + m_fFireStartTime = -1.0000000; + // End:0x95 + if((PawnOwner != none) && PawnOwner.Mesh != none) + { + PawnOwner.Mesh.FxActivateGroup('IceBlock_Intro', 0); + } + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + //return; +} + +event StopFire(int nFireModeNum) +{ + m_bNeedsLoopActivation = false; + m_fFireStartTime = -1.0000000; + // End:0xD2 + if((PawnOwner != none) && PawnOwner.Mesh != none) + { + PawnOwner.Mesh.FxActivateGroup('IceBlock_Outro', 0); + PawnOwner.Mesh.FxDeactivateGroup('IceBlock_Loop', 0); + } + super.StopFire(nFireModeNum); + //return; +} + +defaultproperties +{ + m_fLoopDelay=0.2800000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Telepunch.uc b/exported/TgGame/Classes/TgDeviceForm_Telepunch.uc new file mode 100755 index 00000000..9baf0ba7 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Telepunch.uc @@ -0,0 +1,189 @@ +class TgDeviceForm_Telepunch extends TgDeviceForm + native(ChampDemon); + +var bool m_bFOVZoomActive; +var bool m_bUltFxActive; +var float m_fCameraFOVInterpolationTime; +var float m_fFOVMultiplier; + +event Generic1(optional byte byExtraData) +{ + TriggerFOVZoom(((int(byExtraData) == int(1)) ? true : false)); + super.Generic1(byExtraData); + //return; +} + +event Generic2(optional byte byExtraData) +{ + EnableUltFx(((int(byExtraData) == int(1)) ? true : false)); + Generic1(byExtraData); + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + SetEnemyUIOverrides(true); + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + //return; +} + +event StopFire(int nFireModeNum) +{ + TriggerFOVZoom(false); + SetEnemyUIOverrides(false); + EnableUltFx(false); + super.StopFire(nFireModeNum); + //return; +} + +event DoInterrupt() +{ + TriggerFOVZoom(false); + SetEnemyUIOverrides(false); + EnableUltFx(false); + super.DoInterrupt(); + //return; +} + +simulated function TriggerFOVZoom(bool bActive) +{ + local TgPawn_Character TgP; + local TgPlayerController TgPC; + local TgPlayerCamera Cam; + + // End:0x198 + if(m_bFOVZoomActive != bActive) + { + m_bFOVZoomActive = bActive; + TgP = TgPawn_Character(PawnOwner); + // End:0x198 + if(TgP != none) + { + TgPC = TgPlayerController(TgP.GetALocalPlayerController()); + // End:0x198 + if((TgPC != none) && TgPC.GetTgPawn() == TgP) + { + Cam = TgPlayerCamera(TgPC.PlayerCamera); + // End:0x198 + if(Cam != none) + { + // End:0x16B + if(m_bFOVZoomActive) + { + Cam.InterpolateFOV(Cam.GetFOVAngle() * m_fFOVMultiplier, m_fCameraFOVInterpolationTime); + } + else + { + Cam.InterpolateFOV(0.0000000, m_fCameraFOVInterpolationTime); + } + } + } + } + } + //return; +} + +simulated function EnableUltFx(bool bActive) +{ + local TgPawn_Character TgP; + local TgPlayerController TgPC; + + // End:0x2D0 + if(m_bUltFxActive != bActive) + { + m_bUltFxActive = bActive; + TgP = TgPawn_Character(PawnOwner); + // End:0x2D0 + if(TgP != none) + { + TgPC = TgPlayerController(TgP.GetALocalPlayerController()); + // End:0x2D0 + if((TgPC != none) && TgPC.GetTgPawn() == TgP) + { + // End:0x2D0 + if((TgP.m_WeaponMesh != none) && TgP.m_WeaponMesh.m_WeaponMesh1P != none) + { + // End:0x19F + if(m_bUltFxActive) + { + TgP.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('Generic1', c_nFireMode,, c_nEquipSlot); + } + else + { + TgP.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('Generic1', c_nFireMode,, c_nEquipSlot); + TgP.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('Generic2', c_nFireMode,, c_nEquipSlot); + TgP.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('Generic2', c_nFireMode,, c_nEquipSlot); + } + } + } + } + } + //return; +} + +simulated function SetEnemyUIOverrides(bool bActive) +{ + local TgPawn_Character TgP; + local TgPlayerController TgPC; + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce EnemyTaskforce; + local array Players; + local TgRepInfo_Player EnemyPRI; + + TgP = TgPawn_Character(PawnOwner); + // End:0x294 + if(TgP != none) + { + TgPC = TgPlayerController(TgP.GetALocalPlayerController()); + // End:0x294 + if((TgPC != none) && TgPC.GetTgPawn() == TgP) + { + GRI = TgRepInfo_Game(PawnOwner.WorldInfo.GRI); + // End:0x294 + if(GRI != none) + { + EnemyTaskforce = GRI.GetTaskForce(((int(TgP.GetTaskForceNumber()) == int(1)) ? 2 : 1)); + // End:0x294 + if(EnemyTaskforce != none) + { + EnemyTaskforce.GetPlayers(Players); + // End:0x293 + foreach Players(EnemyPRI) + { + // End:0x22D + if(bActive) + { + EnemyPRI.c_nDeployableOverlayDisplayMaskOverride = ((((4 | 32) | 256) | 16384) | 32768) | 65536; + EnemyPRI.c_eDeployableOverlayStateOverride = 1; + EnemyPRI.c_fDeployableOverlayEnemyViewDistOverride = 5000.0000000; + } + else + { + EnemyPRI.c_nDeployableOverlayDisplayMaskOverride = 0; + EnemyPRI.c_eDeployableOverlayStateOverride = 0; + EnemyPRI.c_fDeployableOverlayEnemyViewDistOverride = 0.0000000; + } + } + } + } + } + } + //return; +} + +simulated function RecoverDeviceState(TgPawn.TG_REP_DEVICE_STATE DesiredState) +{ + // End:0x1F + if(int(DesiredState) == int(1)) + { + SetEnemyUIOverrides(true); + } + super.RecoverDeviceState(DesiredState); + //return; +} + +defaultproperties +{ + m_fCameraFOVInterpolationTime=0.3300000 + m_fFOVMultiplier=0.5000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Tempest.uc b/exported/TgGame/Classes/TgDeviceForm_Tempest.uc new file mode 100755 index 00000000..2b2253a1 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Tempest.uc @@ -0,0 +1,94 @@ +class TgDeviceForm_Tempest extends TgDeviceForm + native(ChampGrohk); + +var Actor m_BeamTarget1; +var Actor m_BeamTarget2; +var bool m_bBeamActive1; +var bool m_bBeamActive2; +var bool m_bBeamDirty1; +var bool m_bBeamDirty2; +var float m_fBeamStartTime1; +var float m_fBeamStartTime2; +var const float m_fBeamOnTime; + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + StopArcingBeamEffects(); + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + m_bBeamDirty1 = true; + m_bBeamDirty2 = true; + //return; +} + +event SetTargetArcingBeamEffect(Actor Target) +{ + // End:0x2A + if((FormState != 'DeviceFiring') || PawnOwner == none) + { + return; + } + // End:0x1CF + if((m_BeamTarget1 == none) || m_bBeamDirty1) + { + m_BeamTarget1 = Target; + m_bBeamActive1 = true; + m_bBeamDirty1 = false; + m_fBeamStartTime1 = PawnOwner.WorldInfo.TimeSeconds; + // End:0x1CC + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('Grohk_Tempest1', 0); + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxActivateGroup('Grohk_Tempest1', 0); + } + } + else + { + // End:0x371 + if((m_BeamTarget2 == none) || m_bBeamDirty2) + { + m_BeamTarget2 = Target; + m_bBeamActive2 = true; + m_bBeamDirty2 = false; + m_fBeamStartTime2 = PawnOwner.WorldInfo.TimeSeconds; + // End:0x371 + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('Grohk_Tempest2', 0); + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxActivateGroup('Grohk_Tempest2', 0); + } + } + } + //return; +} + +function StopArcingBeamEffects() +{ + m_BeamTarget1 = none; + m_BeamTarget2 = none; + m_bBeamActive1 = false; + m_bBeamActive2 = false; + m_bBeamDirty1 = false; + m_bBeamDirty2 = false; + // End:0x10B + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('Grohk_Tempest1', 0); + } + // End:0x1D0 + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('Grohk_Tempest2', 0); + } + //return; +} + +defaultproperties +{ + m_fBeamOnTime=0.2000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_TheLaw.uc b/exported/TgGame/Classes/TgDeviceForm_TheLaw.uc new file mode 100755 index 00000000..811f4ee0 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_TheLaw.uc @@ -0,0 +1,165 @@ +class TgDeviceForm_TheLaw extends TgDeviceForm; + +var TgPawn_Lex m_CachedLex; +var TgWeaponMeshActor_LexInhand m_CachedWMA; +var name m_LeftSlideSkelControlName1P; +var name m_RightSlideSkelControlName1P; +var name m_LeftSlideSkelControlName3P; +var name m_RightSlideSkelControlName3P; +var SkelControlBase m_LeftSlideSkelControl1P; +var SkelControlBase m_RightSlideSkelControl1P; +var SkelControlBase m_LeftSlideSkelControl3P; +var SkelControlBase m_RightSlideSkelControl3P; +var float c_fPreviousLeftSlideStrength; +var float c_fPreviousRightSlideStrength; + +function bool HasCachedLex() +{ + // End:0x3A + if(m_CachedLex == none) + { + // End:0x3A + if(PawnOwner != none) + { + m_CachedLex = TgPawn_Lex(PawnOwner); + } + } + return m_CachedLex != none; + //return ReturnValue; +} + +function bool HasCachedWMA() +{ + // End:0x4F + if(m_CachedWMA == none) + { + // End:0x4F + if(PawnOwner != none) + { + m_CachedWMA = TgWeaponMeshActor_LexInhand(PawnOwner.m_WeaponMesh); + } + } + return m_CachedWMA != none; + //return ReturnValue; +} + +simulated event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache1PAnimNodes(SkelComp); + // End:0x4A + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_LeftSlideSkelControl1P = SkelComp.FindSkelControl(m_LeftSlideSkelControlName1P); + m_RightSlideSkelControl1P = SkelComp.FindSkelControl(m_RightSlideSkelControlName1P); + //return; +} + +simulated event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache3PAnimNodes(SkelComp); + // End:0x4A + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_LeftSlideSkelControl3P = SkelComp.FindSkelControl(m_LeftSlideSkelControlName3P); + m_RightSlideSkelControl3P = SkelComp.FindSkelControl(m_RightSlideSkelControlName3P); + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x5D + if(HasCachedWMA()) + { + m_CachedWMA.ShowTargetingBeams(); + } + // End:0x1F7 + if(HasCachedLex()) + { + m_CachedLex.c_bUltFiring = true; + // End:0xE6 + if(m_LeftSlideSkelControl1P != none) + { + c_fPreviousLeftSlideStrength = m_LeftSlideSkelControl1P.ControlStrength; + m_LeftSlideSkelControl1P.ControlStrength = 1.0000000; + } + // End:0x141 + if(m_LeftSlideSkelControl3P != none) + { + c_fPreviousLeftSlideStrength = m_LeftSlideSkelControl3P.ControlStrength; + m_LeftSlideSkelControl3P.ControlStrength = 1.0000000; + } + // End:0x19C + if(m_RightSlideSkelControl1P != none) + { + c_fPreviousRightSlideStrength = m_RightSlideSkelControl1P.ControlStrength; + m_RightSlideSkelControl1P.ControlStrength = 1.0000000; + } + // End:0x1F7 + if(m_RightSlideSkelControl3P != none) + { + c_fPreviousRightSlideStrength = m_RightSlideSkelControl3P.ControlStrength; + m_RightSlideSkelControl3P.ControlStrength = 1.0000000; + } + } + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + // End:0x7D + if(HasCachedWMA()) + { + m_CachedWMA.ShowHitBeams(); + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0x3F + if(HasCachedWMA()) + { + m_CachedWMA.HideBeams(); + } + // End:0x149 + if(HasCachedLex()) + { + m_CachedLex.c_bUltFiring = false; + // End:0xA4 + if(m_LeftSlideSkelControl1P != none) + { + m_LeftSlideSkelControl1P.ControlStrength = c_fPreviousLeftSlideStrength; + } + // End:0xDB + if(m_LeftSlideSkelControl3P != none) + { + m_LeftSlideSkelControl3P.ControlStrength = c_fPreviousLeftSlideStrength; + } + // End:0x112 + if(m_RightSlideSkelControl1P != none) + { + m_RightSlideSkelControl1P.ControlStrength = c_fPreviousRightSlideStrength; + } + // End:0x149 + if(m_RightSlideSkelControl3P != none) + { + m_RightSlideSkelControl3P.ControlStrength = c_fPreviousRightSlideStrength; + } + } + //return; +} + +defaultproperties +{ + m_LeftSlideSkelControlName1P="L_Slider" + m_RightSlideSkelControlName1P="R_Slider" + m_LeftSlideSkelControlName3P="L_Slider" + m_RightSlideSkelControlName3P="R_Slider" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Thrust.uc b/exported/TgGame/Classes/TgDeviceForm_Thrust.uc new file mode 100755 index 00000000..9ce968b8 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Thrust.uc @@ -0,0 +1,118 @@ +class TgDeviceForm_Thrust extends TgDeviceForm; + +var array m_FlyingBlendList1P; +var array m_FlyingBlendList3P; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByDrogozFlying AnimNode; + + super.Cache3PAnimNodes(SkelComp); + m_FlyingBlendList3P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByDrogozFlying', AnimNode) + { + m_FlyingBlendList3P.AddItem(AnimNode); + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByDrogozFlying AnimNode; + + super.Cache1PAnimNodes(SkelComp); + m_FlyingBlendList1P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByDrogozFlying', AnimNode) + { + m_FlyingBlendList1P.AddItem(AnimNode); + } + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local int I; + + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + I = 0; + J0x3C: + + // End:0xA6 [Loop If] + if(I < m_FlyingBlendList1P.Length) + { + // End:0x98 + if(m_FlyingBlendList1P[I] != none) + { + m_FlyingBlendList1P[I].m_bInThrust = true; + } + I++; + // [Loop Continue] + goto J0x3C; + } + I = 0; + J0xB1: + + // End:0x11B [Loop If] + if(I < m_FlyingBlendList3P.Length) + { + // End:0x10D + if(m_FlyingBlendList3P[I] != none) + { + m_FlyingBlendList3P[I].m_bInThrust = true; + } + I++; + // [Loop Continue] + goto J0xB1; + } + //return; +} + +event StopFire(int nFireModeNum) +{ + local int I; + + super.StopFire(nFireModeNum); + I = 0; + J0x1E: + + // End:0x88 [Loop If] + if(I < m_FlyingBlendList1P.Length) + { + // End:0x7A + if(m_FlyingBlendList1P[I] != none) + { + m_FlyingBlendList1P[I].m_bInThrust = false; + } + I++; + // [Loop Continue] + goto J0x1E; + } + I = 0; + J0x93: + + // End:0xFD [Loop If] + if(I < m_FlyingBlendList3P.Length) + { + // End:0xEF + if(m_FlyingBlendList3P[I] != none) + { + m_FlyingBlendList3P[I].m_bInThrust = false; + } + I++; + // [Loop Continue] + goto J0x93; + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_ToggleWithLockout.uc b/exported/TgGame/Classes/TgDeviceForm_ToggleWithLockout.uc new file mode 100755 index 00000000..ff793625 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_ToggleWithLockout.uc @@ -0,0 +1,26 @@ +class TgDeviceForm_ToggleWithLockout extends TgDeviceForm + native(Devices); + +event Generic1(optional byte byExtraData) +{ + SetToggleState(false); + //return; +} + +event Fire(Vector HitLocation, int nFireMode, optional int nEquipSlot = 0, optional int nSocketIndex = 0, optional bool bSuccessfulHit = false, optional float fRefireTime) +{ + super.Fire(HitLocation, nFireMode, nEquipSlot, nSocketIndex, bSuccessfulHit, fRefireTime); + SetToggleState(true); + //return; +} + +event Generic2(optional byte byExtraData) +{ + SetToggleState(true); + //return; +} + +defaultproperties +{ + c_bDisableDefaultTimelapseRecovery=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Transporter.uc b/exported/TgGame/Classes/TgDeviceForm_Transporter.uc new file mode 100755 index 00000000..a9305d3d --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Transporter.uc @@ -0,0 +1,61 @@ +class TgDeviceForm_Transporter extends TgDeviceForm + native(ChampKinessa); + +var TgSkeletalMeshActor c_TargetingModeMeshIndicator2; +var TgSpecialFx c_TargetingModeFx2; +var Vector c_TargetingModeFx2Location; +var int c_nTargetingModeFx2Id; + +// Export UTgDeviceForm_Transporter::execInitializeTargetingModeFX(FFrame&, void* const) +native function InitializeTargetingModeFX(); + +// Export UTgDeviceForm_Transporter::execUpdateTargetingMode2Location(FFrame&, void* const) +native function UpdateTargetingMode2Location(Vector NewLocation, Rotator NewRotation, optional float DistanceScale = 1.0000000); + +// Export UTgDeviceForm_Transporter::execUpdateTargetingModeStatus(FFrame&, void* const) +native function UpdateTargetingModeStatus(TgDevice.ETargetingModeStatus Status, const out AimData Aim); + +simulated event EnterTargetingMode() +{ + super.EnterTargetingMode(); + ShowReticle(false); + //return; +} + +simulated event ExitTargetingMode() +{ + super.ExitTargetingMode(); + // End:0x63 + if(c_TargetingModeFx2 != none) + { + c_TargetingModeFx2.Deactivate(true); + c_TargetingModeFx2.Detach(); + c_TargetingModeFx2 = none; + } + // End:0x95 + if(c_TargetingModeMeshIndicator2 != none) + { + c_TargetingModeMeshIndicator2.Destroy(); + c_TargetingModeMeshIndicator2 = none; + } + ShowReticle(true); + //return; +} + +simulated function ShowReticle(bool bShow) +{ + local TgPlayerController TgPC; + + TgPC = TgPlayerController(PawnOwner.Controller); + // End:0x73 + if(TgPC != none) + { + TgPC.SetReticleVisibility(bShow, bShow); + } + //return; +} + +defaultproperties +{ + c_nTargetingModeFx2Id=7219 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_Turret.uc b/exported/TgGame/Classes/TgDeviceForm_Turret.uc new file mode 100755 index 00000000..2723e590 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Turret.uc @@ -0,0 +1,38 @@ +class TgDeviceForm_Turret extends TgDeviceForm; + +var SkelControlBase m_SKCTurretScale; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache3PAnimNodes(SkelComp); + m_SKCTurretScale = none; + // End:0x55 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + m_SKCTurretScale = SkelComp.FindSkelControl('Turret_Scale'); + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x60 + if(m_SKCTurretScale != none) + { + m_SKCTurretScale.SetSkelControlActive(true); + } + //return; +} + +event CooldownComplete() +{ + super.CooldownComplete(); + // End:0x39 + if(m_SKCTurretScale != none) + { + m_SKCTurretScale.SetSkelControlActive(false); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_TurtlePower.uc b/exported/TgGame/Classes/TgDeviceForm_TurtlePower.uc new file mode 100755 index 00000000..2aade1d9 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_TurtlePower.uc @@ -0,0 +1,97 @@ +class TgDeviceForm_TurtlePower extends TgDeviceForm + native(ChampMakoa); + +var bool m_bShouldBeActive; +var float m_fRageActivationTime; +var float m_fRageActivationPercent; + +// Export UTgDeviceForm_TurtlePower::execUpdateRageMeshVisibility(FFrame&, void* const) +native function UpdateRageMeshVisibility(float DeltaSeconds); + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local MaterialInstanceConstant MIC; + local int I; + local float fEnemyScalarValue; + + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x40A + if(PawnOwner != none) + { + fEnemyScalarValue = ((PawnOwner.IsFriendlyWithLocalPawn()) ? 0.0000000 : 1.0000000); + // End:0x1EC + if((PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_HandsMesh != none) + { + I = 0; + J0xE2: + + // End:0x1EC [Loop If] + if(I < PawnOwner.m_WeaponMesh.m_HandsMesh.Materials.Length) + { + MIC = MaterialInstanceConstant(PawnOwner.m_WeaponMesh.m_HandsMesh.Materials[I]); + // End:0x1DE + if(MIC != none) + { + MIC.SetScalarParameterValue('FRIENDLY_ENEMY', fEnemyScalarValue); + } + I++; + // [Loop Continue] + goto J0xE2; + } + } + // End:0x2FB + if(PawnOwner.Mesh != none) + { + I = 0; + J0x21B: + + // End:0x2FB [Loop If] + if(I < PawnOwner.Mesh.Materials.Length) + { + MIC = MaterialInstanceConstant(PawnOwner.Mesh.Materials[I]); + // End:0x2ED + if(MIC != none) + { + MIC.SetScalarParameterValue('FRIENDLY_ENEMY', fEnemyScalarValue); + } + I++; + // [Loop Continue] + goto J0x21B; + } + } + // End:0x40A + if(PawnOwner.m_HeadMesh != none) + { + I = 0; + J0x32A: + + // End:0x40A [Loop If] + if(I < PawnOwner.m_HeadMesh.Materials.Length) + { + MIC = MaterialInstanceConstant(PawnOwner.m_HeadMesh.Materials[I]); + // End:0x3FC + if(MIC != none) + { + MIC.SetScalarParameterValue('FRIENDLY_ENEMY', fEnemyScalarValue); + } + I++; + // [Loop Continue] + goto J0x32A; + } + } + } + m_bShouldBeActive = true; + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + m_bShouldBeActive = false; + //return; +} + +defaultproperties +{ + m_fRageActivationTime=0.5000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceForm_TyraInhand.uc b/exported/TgGame/Classes/TgDeviceForm_TyraInhand.uc new file mode 100755 index 00000000..6e491cf2 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_TyraInhand.uc @@ -0,0 +1,20 @@ +class TgDeviceForm_TyraInhand extends TgDeviceForm; + +event Hit(int nFireMode, Actor Target, float fDamageAmount, Vector HitLocation, Vector HitNormal, const out ExtraDamageInfo ExtraInfo) +{ + local TgPlayerController PC; + + super.Hit(nFireMode, Target, fDamageAmount, HitLocation, HitNormal, ExtraInfo); + // End:0x1EE + if(((ExtraInfo.bMarked && PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PC = TgPlayerController(PawnOwner.GetALocalPlayerController()); + // End:0x1EE + if((PC != none) && PC.GetTgPawn() == PawnOwner) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('Generic1', 0); + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('Generic1', 0); + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_TyraUlt.uc b/exported/TgGame/Classes/TgDeviceForm_TyraUlt.uc new file mode 100755 index 00000000..ebcf5745 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_TyraUlt.uc @@ -0,0 +1,47 @@ +class TgDeviceForm_TyraUlt extends TgDeviceForm; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x26F + if((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) + { + PawnOwner.m_WeaponMesh.m_TracerName = 'TracerBeamA'; + // End:0x189 + if(PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.SetFireDisplayGroup('FireUlt'); + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.SetFireLoopDisplayGroup('FireLoopB', 'FireLoopTailSound'); + } + // End:0x26F + if(PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.SetFireDisplayGroup('FireUlt'); + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.SetFireLoopDisplayGroup('FireLoopB', 'FireLoopTailSound'); + } + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0x251 + if((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) + { + PawnOwner.m_WeaponMesh.m_TracerName = 'TracerBeam'; + // End:0x16B + if(PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.SetFireDisplayGroup('Fire'); + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.SetFireLoopDisplayGroup('FireLoop', 'FireLoopTailSound'); + } + // End:0x251 + if(PawnOwner.m_WeaponMesh.m_WeaponMesh3P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.SetFireDisplayGroup('Fire'); + PawnOwner.m_WeaponMesh.m_WeaponMesh3P.SetFireLoopDisplayGroup('FireLoop', 'FireLoopTailSound'); + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_Valor.uc b/exported/TgGame/Classes/TgDeviceForm_Valor.uc new file mode 100755 index 00000000..14206438 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Valor.uc @@ -0,0 +1,12 @@ +class TgDeviceForm_Valor extends TgDeviceForm; + +simulated event Hit(int nFireMode, Actor Target, float fDamageAmount, Vector HitLocation, Vector HitNormal, const out ExtraDamageInfo ExtraInfo) +{ + super.Hit(nFireMode, Target, fDamageAmount, HitLocation, HitNormal, ExtraInfo); + // End:0xB3 + if((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) + { + PawnOwner.m_WeaponMesh.PlayTracerEffects(HitLocation, 1); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_ViktorInhand.uc b/exported/TgGame/Classes/TgDeviceForm_ViktorInhand.uc new file mode 100755 index 00000000..0d1d9098 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_ViktorInhand.uc @@ -0,0 +1,31 @@ +class TgDeviceForm_ViktorInhand extends TgDeviceForm; + +event SetAmmoBlendNodesAmount(int nAmmoAmt, optional bool bTickOnly = false) +{ + local MaterialInstanceConstant MIC; + local int I; + + super.SetAmmoBlendNodesAmount(nAmmoAmt, bTickOnly); + // End:0x1F4 + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + I = 0; + J0x9D: + + // End:0x1F4 [Loop If] + if(I < PawnOwner.m_WeaponMesh.m_WeaponMesh1P.Materials.Length) + { + MIC = MaterialInstanceConstant(PawnOwner.m_WeaponMesh.m_WeaponMesh1P.Materials[I]); + // End:0x1E6 + if(MIC != none) + { + MIC.SetScalarParameterValue('Percent', float(nAmmoAmt) / 30.0000000); + MIC.SetScalarParameterValue('LowAmmo', ((nAmmoAmt <= 10) ? 1.0000000 : 0.0000000)); + } + I++; + // [Loop Continue] + goto J0x9D; + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_Vine.uc b/exported/TgGame/Classes/TgDeviceForm_Vine.uc new file mode 100755 index 00000000..0c4936ac --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Vine.uc @@ -0,0 +1,254 @@ +class TgDeviceForm_Vine extends TgDeviceForm + native(ChampGrover); + +var bool m_bBeamActive; +var bool m_bVineInterrupted; +var Actor m_BeamTarget; +var Vector m_vBeamTargetLocation; +var array m_VineBlendList1P; +var array m_VineBlendList3P; + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByAbilityVine AnimNode; + + super.Cache3PAnimNodes(SkelComp); + m_VineBlendList3P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByAbilityVine', AnimNode) + { + m_VineBlendList3P.AddItem(AnimNode); + } + //return; +} + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + local TgAnimNodeBlendByAbilityVine AnimNode; + + super.Cache1PAnimNodes(SkelComp); + m_VineBlendList1P.Length = 0; + // End:0x56 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + // End:0xA1 + foreach SkelComp.AllAnimNodes(Class'TgGame.TgAnimNodeBlendByAbilityVine', AnimNode) + { + m_VineBlendList1P.AddItem(AnimNode); + } + //return; +} + +function ConnectBeamToTarget(Actor Target, Vector Location) +{ + local int I; + + // End:0x0F + if(m_bVineInterrupted) + { + return; + } + // End:0x142 + if(((m_BeamTarget != none) && m_BeamTarget != Target) && m_BeamTarget.IsA('TgProj_Vine')) + { + I = 0; + J0x67: + + // End:0xCF [Loop If] + if(I < m_VineBlendList1P.Length) + { + // End:0xC1 + if(m_VineBlendList1P[I] != none) + { + m_VineBlendList1P[I].VinePull(); + } + I++; + // [Loop Continue] + goto J0x67; + } + I = 0; + J0xDA: + + // End:0x142 [Loop If] + if(I < m_VineBlendList3P.Length) + { + // End:0x134 + if(m_VineBlendList3P[I] != none) + { + m_VineBlendList3P[I].VinePull(); + } + I++; + // [Loop Continue] + goto J0xDA; + } + } + m_vBeamTargetLocation = Location; + m_BeamTarget = Target; + m_bBeamActive = true; + // End:0x27D + if(c_Mesh != none) + { + // End:0x1B6 + if(c_Mesh.FxActivateGroup('DragChain', 0) == none) + { + } + // End:0x27D + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxActivateGroup('DragChain', 0); + } + } + //return; +} + +function DisconnectBeam() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x73 [Loop If] + if(I < m_VineBlendList1P.Length) + { + // End:0x65 + if(m_VineBlendList1P[I] != none) + { + m_VineBlendList1P[I].VinePost(); + } + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x7E: + + // End:0xE6 [Loop If] + if(I < m_VineBlendList3P.Length) + { + // End:0xD8 + if(m_VineBlendList3P[I] != none) + { + m_VineBlendList3P[I].VinePost(); + } + I++; + // [Loop Continue] + goto J0x7E; + } + m_bBeamActive = false; + m_BeamTarget = none; + // End:0x137 + if(c_Mesh != none) + { + c_Mesh.FxDeactivateGroup('DragChain', 0); + } + // End:0x1FC + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('DragChain', 0); + } + //return; +} + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + local int I; + + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + I = 0; + J0x3C: + + // End:0xA4 [Loop If] + if(I < m_VineBlendList1P.Length) + { + // End:0x96 + if(m_VineBlendList1P[I] != none) + { + m_VineBlendList1P[I].VineThrow(); + } + I++; + // [Loop Continue] + goto J0x3C; + } + I = 0; + J0xAF: + + // End:0x117 [Loop If] + if(I < m_VineBlendList3P.Length) + { + // End:0x109 + if(m_VineBlendList3P[I] != none) + { + m_VineBlendList3P[I].VineThrow(); + } + I++; + // [Loop Continue] + goto J0xAF; + } + m_bVineInterrupted = false; + //return; +} + +event StopFire(int nFireModeNum) +{ + local int I; + + super.StopFire(nFireModeNum); + I = 0; + J0x1E: + + // End:0x86 [Loop If] + if(I < m_VineBlendList1P.Length) + { + // End:0x78 + if(m_VineBlendList1P[I] != none) + { + m_VineBlendList1P[I].VineInactive(); + } + I++; + // [Loop Continue] + goto J0x1E; + } + I = 0; + J0x91: + + // End:0xF9 [Loop If] + if(I < m_VineBlendList3P.Length) + { + // End:0xEB + if(m_VineBlendList3P[I] != none) + { + m_VineBlendList3P[I].VineInactive(); + } + I++; + // [Loop Continue] + goto J0x91; + } + m_bBeamActive = false; + m_BeamTarget = none; + // End:0x14A + if(c_Mesh != none) + { + c_Mesh.FxDeactivateGroup('DragChain', 0); + } + // End:0x20F + if(((PawnOwner != none) && PawnOwner.m_WeaponMesh != none) && PawnOwner.m_WeaponMesh.m_WeaponMesh1P != none) + { + PawnOwner.m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup('DragChain', 0); + } + //return; +} + +event Generic1(optional byte byExtraData) +{ + DisconnectBeam(); + m_bVineInterrupted = true; + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_WeaponSwap.uc b/exported/TgGame/Classes/TgDeviceForm_WeaponSwap.uc new file mode 100755 index 00000000..77a2168a --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_WeaponSwap.uc @@ -0,0 +1,74 @@ +class TgDeviceForm_WeaponSwap extends TgDeviceForm + native(ChampOwl); + +var array m_PistolScale1p; +var array m_PistolScale3p; +var array m_RifleScale1p; +var array m_RifleScale3p; + +// Export UTgDeviceForm_WeaponSwap::execCacheSkelControls(FFrame&, void* const) +native function CacheSkelControls(AnimTree pAnimTree, out array PistolSkelControls, out array RifleSkelControls, name nmPistol, name nmRifle); + +event Cache1PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache1PAnimNodes(SkelComp); + CacheControls(SkelComp, m_PistolScale1p, m_RifleScale1p, 'PistolScale', 'SniperScale'); + //return; +} + +event Cache3PAnimNodes(TgSkeletalMeshComponent SkelComp) +{ + super.Cache3PAnimNodes(SkelComp); + CacheControls(SkelComp, m_PistolScale3p, m_RifleScale3p, 'PistolScale', 'RifleScale'); + //return; +} + +function CacheControls(TgSkeletalMeshComponent SkelComp, out array PistolSkelControls, out array RifleSkelControls, name nmPistol, name nmRifle) +{ + PistolSkelControls.Remove(0, PistolSkelControls.Length); + RifleSkelControls.Remove(0, RifleSkelControls.Length); + // End:0x63 + if((SkelComp == none) || SkelComp.Animations == none) + { + return; + } + CacheSkelControls(AnimTree(SkelComp.Animations), PistolSkelControls, RifleSkelControls, nmPistol, nmRifle); + //return; +} + +function SetSkelControlsActive(out array SkelControls, bool bActive) +{ + local TgSkelControlSingleBone SkelControl; + + // End:0x50 + foreach SkelControls(SkelControl) + { + SkelControl.BoneScale = ((bActive) ? 1.0000000 : 0.0000000); + } + //return; +} + +simulated function RecoverDeviceState(TgPawn.TG_REP_DEVICE_STATE DesiredState) +{ + // End:0x80 + if((int(DesiredState) == int(1)) && FormState != 'DeviceFiring') + { + SetSkelControlsActive(m_PistolScale1p, true); + SetSkelControlsActive(m_PistolScale3p, true); + SetSkelControlsActive(m_RifleScale1p, false); + SetSkelControlsActive(m_RifleScale3p, false); + } + else + { + // End:0xFD + if((int(DesiredState) == int(0)) && FormState == 'DeviceFiring') + { + SetSkelControlsActive(m_PistolScale1p, false); + SetSkelControlsActive(m_PistolScale3p, false); + SetSkelControlsActive(m_RifleScale1p, true); + SetSkelControlsActive(m_RifleScale3p, true); + } + } + super.RecoverDeviceState(DesiredState); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_Whirlwind.uc b/exported/TgGame/Classes/TgDeviceForm_Whirlwind.uc new file mode 100755 index 00000000..63e9845b --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Whirlwind.uc @@ -0,0 +1,45 @@ +class TgDeviceForm_Whirlwind extends TgDeviceForm; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + // End:0x6D + if(c_Mesh != none) + { + c_Mesh.FxActivateGroup('Grover_Whirlwind', 0); + } + //return; +} + +event DoInterrupt() +{ + super.DoInterrupt(); + // End:0x44 + if(c_Mesh != none) + { + c_Mesh.FxDeactivateGroup('Grover_Whirlwind', 0); + } + //return; +} + +event Generic1(optional byte byExtraData) +{ + super.Generic1(byExtraData); + // End:0x4E + if(c_Mesh != none) + { + c_Mesh.FxDeactivateGroup('Grover_Whirlwind', 0); + } + //return; +} + +event StopFire(int nFireModeNum) +{ + super.StopFire(nFireModeNum); + // End:0x4D + if(c_Mesh != none) + { + c_Mesh.FxDeactivateGroup('Grover_Whirlwind', 0); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceForm_Whirlwind2.uc b/exported/TgGame/Classes/TgDeviceForm_Whirlwind2.uc new file mode 100755 index 00000000..f34f9d89 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceForm_Whirlwind2.uc @@ -0,0 +1,34 @@ +class TgDeviceForm_Whirlwind2 extends TgDeviceForm; + +event StartFire(int nFireMode, optional float fRefireTime, optional Actor Target, optional int nAmmoRemaining) +{ + // End:0x36 + if(PawnOwner != none) + { + PawnOwner.m_fZoomDistOverride = 2.0000000; + } + super.StartFire(nFireMode, fRefireTime, Target, nAmmoRemaining); + //return; +} + +event DoInterrupt() +{ + // End:0x33 + if(PawnOwner != none) + { + PawnOwner.m_fZoomDistOverride = 0.0000000; + } + super.DoInterrupt(); + //return; +} + +event StopFire(int nFireModeNum) +{ + // End:0x33 + if(PawnOwner != none) + { + PawnOwner.m_fZoomDistOverride = 0.0000000; + } + super.StopFire(nFireModeNum); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceInterface_DismountModifier.uc b/exported/TgGame/Classes/TgDeviceInterface_DismountModifier.uc new file mode 100755 index 00000000..185e8133 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceInterface_DismountModifier.uc @@ -0,0 +1,8 @@ +interface TgDeviceInterface_DismountModifier extends Interface + abstract + native; + +simulated event bool ShouldOverrideDismount(int DamageAmt) +{ + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDeviceInterface_MoveSpeedMultiplier.uc b/exported/TgGame/Classes/TgDeviceInterface_MoveSpeedMultiplier.uc new file mode 100755 index 00000000..fb14e9ef --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceInterface_MoveSpeedMultiplier.uc @@ -0,0 +1,6 @@ +interface TgDeviceInterface_MoveSpeedMultiplier extends Interface + abstract + native(Devices); + +// Export UTgDeviceInterface_MoveSpeedMultiplier::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); diff --git a/exported/TgGame/Classes/TgDeviceVolume.uc b/exported/TgGame/Classes/TgDeviceVolume.uc new file mode 100755 index 00000000..1eb416d7 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceVolume.uc @@ -0,0 +1,288 @@ +class TgDeviceVolume extends Volume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +var() bool bPainCausing; +var bool BACKUP_bPainCausing; +var bool s_bDeviceActive; +var Info PainTimer; +var Controller DamageInstigator; +var(Object) editconst int m_nMapObjectId; +var() int s_nDeviceId; +var TgDeviceFire s_DeviceFireMode; +var() byte s_nTaskForce; + +// Export UTgDeviceVolume::execSetupDevice(FFrame&, void* const) +native function bool SetupDevice(); + +simulated event PostBeginPlay() +{ + local TgGame Game; + + // End:0x1A + if(!SetupDevice()) + { + s_DeviceFireMode = none; + } + // End:0x41 + if(s_DeviceFireMode != none) + { + bPainCausing = true; + s_bDeviceActive = true; + } + BACKUP_bPainCausing = bPainCausing; + // End:0x178 + if(int(Role) == int(ROLE_Authority)) + { + Game = TgGame(WorldInfo.Game); + // End:0xCD + if(Game != none) + { + Game.s_DeviceVolumes.AddItem(self); + } + // End:0xFD + if(bPainCausing) + { + PainTimer = Spawn(Class'TgGame.TgDeviceVolumeInfo', self); + } + // End:0x178 + if((PainTimer != none) && s_DeviceFireMode != none) + { + PainTimer.ClearTimer(); + PainTimer.SetTimer(s_DeviceFireMode.GetRefireTime(), true); + } + } + //return; +} + +function Reset() +{ + bPainCausing = BACKUP_bPainCausing; + bForceNetUpdate = true; + //return; +} + +simulated function OnToggle(SeqAct_Toggle inAction) +{ + super.OnToggle(inAction); + // End:0x59 + if(inAction.InputLinks[0].bHasImpulse) + { + bPainCausing = true; + } + else + { + // End:0x9F + if(inAction.InputLinks[1].bHasImpulse) + { + bPainCausing = false; + } + else + { + // End:0xEE + if(inAction.InputLinks[2].bHasImpulse) + { + bPainCausing = !bPainCausing; + } + } + } + //return; +} + +function TimerPop(TgDeviceVolumeInfo T) +{ + local Actor A; + + // End:0x6B + if(T == PainTimer) + { + // End:0x28 + if(!bPainCausing) + { + return; + } + // End:0x6A + foreach TouchingActors(Class'Engine.Actor', A) + { + // End:0x69 + if(CanCausePainTo(A)) + { + CausePainTo(A); + } + } + } + //return; +} + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn_Character TgP; + + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + // End:0x64 + if(bPainCausing) + { + // End:0x64 + if(CanCausePainTo(Other)) + { + CausePainTo(Other); + } + } + TgP = TgPawn_Character(Other); + // End:0xE1 + if((TgP != none) && TgP.m_HomeguardVolumes.Find(self) == -1) + { + TgP.m_HomeguardVolumes.AddItem(self); + } + // End:0x125 + if((TgP != none) && s_nDeviceId == 10986) + { + TgP.OnHealingWell(true); + } + //return; +} + +simulated event UnTouch(Actor Other) +{ + local TgPawn_Character TgP; + + super(Actor).UnTouch(Other); + TgP = TgPawn_Character(Other); + // End:0xE9 + if(TgP != none) + { + TgP.m_HomeguardVolumes.RemoveItem(self); + // End:0xE9 + if((TgP.m_HomeguardVolumes.Length == 0) && !TgP.r_bInCombatFlag) + { + TgP.m_LastHomeguardTime = WorldInfo.TimeSeconds; + } + } + // End:0x12D + if((TgP != none) && s_nDeviceId == 10986) + { + TgP.OnHealingWell(false); + } + //return; +} + +function CausePainTo(Actor Other) +{ + ApplyHit(Other); + //return; +} + +function bool CanCausePainTo(Actor Other) +{ + // End:0x5B + if(((Other == none) || !Other.bCanBeDamaged) || Other.bStatic) + { + return false; + } + // End:0x7D + if(!s_bDeviceActive || s_DeviceFireMode == none) + { + return false; + } + return true; + //return ReturnValue; +} + +function OnSetDamageInstigator(SeqAct_SetDamageInstigator Action) +{ + DamageInstigator = Action.GetController(Action.DamageInstigator); + //return; +} + +function ApplyHit(Actor Target) +{ + local ImpactInfo Impact; + + // End:0x11 + if(s_DeviceFireMode == none) + { + return; + } + // End:0x16F + if(s_DeviceFireMode != none) + { + // End:0x16F + if(s_DeviceFireMode.IsValidTarget(Target)) + { + Impact.HitActor = Target; + Impact.HitLocation = Target.Location; + Impact.HitNormal = vect(0.0000000, 0.0000000, 0.0000000); + Impact.RayDir = vect(0.0000000, 0.0000000, 0.0000000); + // End:0x146 + if(DamageInstigator != none) + { + s_DeviceFireMode.ApplyHit(Impact, DamageInstigator); + } + else + { + s_DeviceFireMode.ApplyHit(Impact, self); + } + } + } + //return; +} + +simulated function OnSetTaskforce(TgSeqAct_SetTaskforce Action) +{ + s_nTaskForce = byte(Action.TaskForceNumber); + //return; +} + +event int GetSupportedTaskforce() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x15D + if(GRI != none) + { + // End:0x151 + if((GRI.GameClass == Class'TgGame.TgGame_Paladins_Payload') || GRI.GameClass == Class'TgGame.TgGame_Paladins_Payload_Practice') + { + // End:0x151 + if(GRI.r_AttackingTaskForce != none) + { + // End:0x10B + if(int(s_nTaskForce) == int(1)) + { + return int(GRI.r_AttackingTaskForce.r_nTaskForce); + } + else + { + // End:0x14F + if(int(GRI.r_AttackingTaskForce.r_nTaskForce) == int(1)) + { + return 2; + } + else + { + return 1; + } + } + } + } + return int(s_nTaskForce); + } + //return ReturnValue; +} + +defaultproperties +{ + bPawnsOnly=true + // Reference: BrushComponent'TgGame.Default__TgDeviceVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bForceAllowKismetModification=true + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDeviceVolumeInfo.uc b/exported/TgGame/Classes/TgDeviceVolumeInfo.uc new file mode 100755 index 00000000..da55513a --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceVolumeInfo.uc @@ -0,0 +1,18 @@ +class TgDeviceVolumeInfo extends Info + hidecategories(Navigation,Movement,Collision); + +var TgDeviceVolume V; + +event PostBeginPlay() +{ + super(Actor).PostBeginPlay(); + SetTimer(1.0000000, true); + V = TgDeviceVolume(Owner); + //return; +} + +event Timer() +{ + V.TimerPop(self); + //return; +} diff --git a/exported/TgGame/Classes/TgDeviceVolume_Pulse.uc b/exported/TgGame/Classes/TgDeviceVolume_Pulse.uc new file mode 100755 index 00000000..45c4ffb1 --- /dev/null +++ b/exported/TgGame/Classes/TgDeviceVolume_Pulse.uc @@ -0,0 +1,151 @@ +class TgDeviceVolume_Pulse extends Volume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +var Controller DamageInstigator; +var(Object) editconst int m_nMapObjectId; +var() int s_nDeviceId; +var TgDeviceFire m_FireMode; +var int s_nTeamNumber; +var() byte s_nTaskForce; + +// Export UTgDeviceVolume_Pulse::execSetupDevice(FFrame&, void* const) +native function bool SetupDevice(); + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + SetupDevice(); + //return; +} + +function OnSetDamageInstigator(SeqAct_SetDamageInstigator Action) +{ + DamageInstigator = Action.GetController(Action.DamageInstigator); + //return; +} + +simulated function OnToggle(SeqAct_Toggle inAction) +{ + super.OnToggle(inAction); + // End:0x57 + if(inAction.InputLinks[0].bHasImpulse) + { + TurnOn(); + } + else + { + // End:0x9B + if(inAction.InputLinks[1].bHasImpulse) + { + TurnOff(); + } + else + { + // End:0x101 + if(inAction.InputLinks[2].bHasImpulse) + { + // End:0xF7 + if(IsTimerActive('Fire')) + { + TurnOff(); + } + else + { + TurnOn(); + } + } + } + } + //return; +} + +function TurnOn() +{ + SetTimer(m_FireMode.GetRefireTime(), true, 'Fire'); + //return; +} + +function TurnOff() +{ + ClearTimer('Fire'); + //return; +} + +function Fire() +{ + local int Idx; + local array ImpactList; + + CalcDeviceFire(vect(0.0000000, 0.0000000, 0.0000000), vect(0.0000000, 0.0000000, 0.0000000), ImpactList); + Idx = 0; + J0x41: + + // End:0xC6 [Loop If] + if(Idx < ImpactList.Length) + { + // End:0xB8 + if(ImpactList[Idx].HitActor != none) + { + m_FireMode.ApplyHit(ImpactList[Idx], self); + } + Idx++; + // [Loop Continue] + goto J0x41; + } + //return; +} + +// Export UTgDeviceVolume_Pulse::execFindTouchingActorsFromScript(FFrame&, void* const) +native function FindTouchingActorsFromScript(); + +simulated function ImpactInfo CalcDeviceFire(Vector StartTrace, Vector EndTrace, optional out array ImpactList) +{ + local TgPawn TouchedActor; + local ImpactInfo TraceImpact, CurrentImpact; + + // End:0x1CC + if(m_FireMode != none) + { + FindTouchingActorsFromScript(); + // End:0x1CB + foreach TouchingActors(Class'TgGame.TgPawn', TouchedActor) + { + // End:0x1CA + if(m_FireMode.IsValidTarget(TouchedActor)) + { + CurrentImpact.bDirectHit = true; + CurrentImpact.DeviceModeReference = m_FireMode; + CurrentImpact.HitActor = TouchedActor; + CurrentImpact.HitLocation = TouchedActor.Location; + CurrentImpact.HitNormal = Normal(self.Location - TouchedActor.Location); + CurrentImpact.RayDir = Normal(EndTrace - StartTrace); + CurrentImpact.StartTrace = StartTrace; + ImpactList.AddItem(CurrentImpact); + } + } + } + TraceImpact.HitActor = none; + TraceImpact.StartTrace = StartTrace; + TraceImpact.HitLocation = EndTrace; + TraceImpact.HitNormal = vect(0.0000000, 0.0000000, 0.0000000); + return TraceImpact; + //return ReturnValue; +} + +defaultproperties +{ + bPawnsOnly=true + // Reference: BrushComponent'TgGame.Default__TgDeviceVolume_Pulse.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bStatic=false + bForceAllowKismetModification=true + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_AbsorptionField.uc b/exported/TgGame/Classes/TgDevice_AbsorptionField.uc new file mode 100755 index 00000000..7395efbc --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_AbsorptionField.uc @@ -0,0 +1,66 @@ +class TgDevice_AbsorptionField extends TgDevice + native(ChampLazarus) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; + +// Export UTgDevice_AbsorptionField::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +// Export UTgDevice_AbsorptionField::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + super.StartFiringLogic(); + FireAmmunition(); + //return; + } + + simulated function ReleaseFireHoldInternal() + { + local float fPostHitDelay; + + // End:0x44 + if(int(Role) == int(ROLE_Authority)) + { + GetCurrentFire().RemoveEffectType(Instigator, true, 15173, 0); + } + ClearTimer('FireHoldTimer'); + ClearTimer('FireHoldForceReleaseFUBAR'); + m_bFireHoldFull = false; + // End:0xB0 + if(c_DeviceForm != none) + { + c_DeviceForm.FireHoldFull(m_bFireHoldFull); + } + fPostHitDelay = GetCachedFiringPostHitDelay(); + // End:0xEE + if(fPostHitDelay > 0.0000000) + { + SetTimer(fPostHitDelay, false, 'FirePostHitDelay'); + } + //return; + } + + simulated function StopFiringLogic() + { + // End:0x2F + if(r_Deployable != none) + { + r_Deployable.DestroyIt(); + } + super.StopFiringLogic(); + //return; + } + stop; +} + +defaultproperties +{ + m_bIsFireHoldDevice=true + m_fDeployZOffset=46.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_AcceleratorField.uc b/exported/TgGame/Classes/TgDevice_AcceleratorField.uc new file mode 100755 index 00000000..99a3ad90 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_AcceleratorField.uc @@ -0,0 +1,3 @@ +class TgDevice_AcceleratorField extends TgDevice_BarricadeMod + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_AccursedArm.uc b/exported/TgGame/Classes/TgDevice_AccursedArm.uc new file mode 100755 index 00000000..dba5595c --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_AccursedArm.uc @@ -0,0 +1,188 @@ +class TgDevice_AccursedArm extends TgDevice_HitPulse + native(ChampAndroxus) + hidecategories(Navigation); + +const TG_DEVICE_ACCURSED_ARM_GUN_ID = 13255; +const TG_DEVICE_NETHER_STEP_ID = 12658; + +// Export UTgDevice_AccursedArm::execShouldInterruptStealth(FFrame&, void* const) +native function bool ShouldInterruptStealth(); + +simulated event bool CanBeCanceled() +{ + local float fPersistTimerTime; + + // End:0x4A + if(IsTimerActive('PersistTimer')) + { + fPersistTimerTime = GetTimerCount('PersistTimer'); + // End:0x4A + if(fPersistTimerTime > 0.5000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x32 + if(IsTimerActive('FirePreHitDelay') || IsTimerActive('FirePostHitDelay')) + { + return true; + } + // End:0x7C + if((IsFiring()) && Current != none) + { + // End:0x7A + if(Current.r_nDeviceId == 13255) + { + return false; + } + return true; + } + return false; + //return ReturnValue; +} + +simulated function PersistTimer() +{ + local float fPostHitDelay; + local TgPawn_Androxus androxus; + + androxus = TgPawn_Androxus(Instigator); + // End:0x4C + if(androxus != none) + { + androxus.ToggleAccursedArm(false); + } + // End:0x6A + if(int(Role) < int(ROLE_Authority)) + { + ServerForcePersistTimer(); + } + bPendingFire = false; + ClearTimer('PersistTimer'); + ClearTimer('PulseHit'); + fPostHitDelay = GetCachedFiringPostHitDelay(); + // End:0xDF + if(fPostHitDelay > 0.0000000) + { + SetTimer(fPostHitDelay, false, 'FirePostHitDelay'); + } + else + { + FirePostHitDelay(); + } + //return; +} + +singular simulated function OnGunEmptied() +{ + // End:0x21 + if(IsTimerActive('FirePreHitDelay')) + { + FirePreHitDelay(); + } + // End:0x42 + if(IsTimerActive('PersistTimer')) + { + PersistTimer(); + } + // End:0x59 + if(HasRemoteOwner()) + { + ClientOnGunEmptied(); + } + //return; +} + +unreliable client simulated function ClientOnGunEmptied() +{ + OnGunEmptied(); + //return; +} + +reliable server function ServerForcePersistTimer() +{ + //return; +} + +simulated state DeviceFiring +{ + reliable server function ServerForcePersistTimer() + { + // End:0x21 + if(IsTimerActive('PersistTimer')) + { + PersistTimer(); + } + //return; + } + + simulated function BeginState(name PreviousStateName) + { + // End:0xB4 + if(Instigator != none) + { + Instigator.Velocity.X = 0.0000000; + Instigator.Velocity.Y = 0.0000000; + Instigator.Velocity.Z = 0.0000000; + } + super.BeginState(PreviousStateName); + //return; + } + + simulated function StartFiringLogic() + { + local TgPawn_Androxus androxus; + local float SpeedModifier; + + SpeedModifier = 1.0000000; + androxus = TgPawn_Androxus(Instigator); + // End:0xC6 + if(androxus != none) + { + SpeedModifier = GetCurrentFire().GetCustomValue1(); + // End:0x9D + if(SpeedModifier > float(0)) + { + androxus.m_fAccursedArmSpeedModifier = SpeedModifier; + } + androxus.ToggleAccursedArm(true, SpeedModifier); + } + super.StartFiringLogic(); + //return; + } + + simulated function StopFiringLogic() + { + local TgPawn_Androxus androxus; + + androxus = TgPawn_Androxus(Instigator); + // End:0x4C + if(androxus != none) + { + androxus.ToggleAccursedArm(false); + } + super.StopFiringLogic(); + //return; + } + + simulated function EndState(name NextStateName) + { + ClearTimer('PersistTimer'); + ClearTimer('PulseHit'); + super.EndState(NextStateName); + //return; + } + stop; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PersistTime + m_bPostFireShouldInterruptStealth=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_AccursedArmGun.uc b/exported/TgGame/Classes/TgDevice_AccursedArmGun.uc new file mode 100755 index 00000000..46d298cd --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_AccursedArmGun.uc @@ -0,0 +1,87 @@ +class TgDevice_AccursedArmGun extends TgDevice + native(ChampAndroxus) + hidecategories(Navigation); + +var TgDevice_AccursedArm m_AccursedArm; + +// Export UTgDevice_AccursedArmGun::execRequiresAmmoToFire(FFrame&, void* const) +native function bool RequiresAmmoToFire(); + +// Export UTgDevice_AccursedArmGun::execShouldTreatAmmoAsCharges(FFrame&, void* const) +native function bool ShouldTreatAmmoAsCharges(); + +// Export UTgDevice_AccursedArmGun::execCanFireIfLeftMouseDown(FFrame&, void* const) +native function bool CanFireIfLeftMouseDown(); + +simulated function FireAmmunition() +{ + super.FireAmmunition(); + // End:0x60 + if(((int(Role) == int(ROLE_Authority)) && (GetCurrentAmmoAmount()) <= 0) && m_AccursedArm != none) + { + m_AccursedArm.OnGunEmptied(); + } + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + local TgDevice_AccursedArm AccursedArm; + + super.LinkedDeviceEquipped(Dev); + AccursedArm = TgDevice_AccursedArm(Dev); + // End:0x51 + if(AccursedArm != none) + { + m_AccursedArm = AccursedArm; + } + //return; +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + local TgDevice_AccursedArm AccursedArm; + + super.LinkedDeviceUnequipped(Dev); + AccursedArm = TgDevice_AccursedArm(Dev); + // End:0x62 + if((AccursedArm != none) && m_AccursedArm == AccursedArm) + { + m_AccursedArm = none; + } + //return; +} + +simulated event OnLinkDevice(TgPawn TgP) +{ + local TgPawn_Androxus androxus; + + super.OnLinkDevice(TgP); + androxus = TgPawn_Androxus(TgP); + // End:0xAA + if(((androxus != none) && !androxus.bDeleteMe) && !androxus.bPendingDelete) + { + androxus.m_AccursedArmInHand = self; + } + //return; +} + +simulated event OnUnlinkDevice(TgPawn TgP) +{ + local TgPawn_Androxus androxus; + + super.OnUnlinkDevice(TgP); + androxus = TgPawn_Androxus(TgP); + // End:0xD0 + if((((androxus != none) && !androxus.bDeleteMe) && !androxus.bPendingDelete) && androxus.m_AccursedArmInHand == self) + { + androxus.m_AccursedArmInHand = none; + } + //return; +} + +defaultproperties +{ + m_nLinkedDeviceIDs[0]=13254 + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Androxus.DeviceAccursedArm' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ActiveAura.uc b/exported/TgGame/Classes/TgDevice_ActiveAura.uc new file mode 100755 index 00000000..06ba9e38 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ActiveAura.uc @@ -0,0 +1,21 @@ +class TgDevice_ActiveAura extends TgDevice_Aura + native(Devices) + hidecategories(Navigation); + +simulated state DeviceFiring +{ + simulated function BeginState(name PrevStateName) + { + EnableAura(); + super.BeginState(PrevStateName); + //return; + } + + simulated function EndState(name NextStateName) + { + DisableAura(); + super.EndState(NextStateName); + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_Advance.uc b/exported/TgGame/Classes/TgDevice_Advance.uc new file mode 100755 index 00000000..8fecacc7 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Advance.uc @@ -0,0 +1,153 @@ +class TgDevice_Advance extends TgDevice_Charge + native(ChampRuckus) + hidecategories(Navigation); + +var bool m_bHasCharged; +var repnotify bool r_bHasAerialAssault; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bHasAerialAssault; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x3A + if(VarName == 'r_bHasAerialAssault') + { + m_fMinTimeBetweenAmmoCharges = ((r_bHasAerialAssault) ? 0.0000000 : 0.5000000); + } + super(TgDevice).ReplicatedEvent(VarName); + //return; +} + +simulated function Rotator GetChargeDirection() +{ + // End:0xB3 + if((Instigator.Acceleration.X == float(0)) && Instigator.Acceleration.Y == float(0)) + { + // End:0x91 + if(r_bHasAerialAssault) + { + return Rotator(vect(0.0000000, 0.0000000, 1.0000000)); + } + return Instigator.Rotation; + } + else + { + return Rotator(Normal2D(Instigator.Acceleration)); + } + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x9E + if(super.ShouldLockFiring(Current)) + { + // End:0x9C + if(Current != none) + { + // End:0x4F + if(Current.m_nDeviceType == 11077) + { + return false; + } + switch(Current.r_nDeviceId) + { + // End:0x7F + case 11460: + // End:0x87 + case 14581: + // End:0x8F + case 11434: + // End:0x99 + case 14582: + return false; + // End:0xFFFF + default: + break; + } + } + else + { + return true; + }/* !MISMATCHING REMOVE, tried If got Type:Else Position:0x09C! */ + return false; + //return ReturnValue; + }/* !MISMATCHING REMOVE, tried Else got Type:If Position:0x000! */ +} + +simulated event bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +function bool ShouldApplyHitSpecialOnTouch(Actor Target) +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated event StartCharge() + { + local TgDeviceFire FireMode; + local TgPawn_Ruckus Ruckus; + + super.StartCharge(); + // End:0x202 + if(m_bCharging) + { + m_bHasCharged = true; + // End:0x52 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic2(); + } + Ruckus = TgPawn_Ruckus(Instigator); + // End:0x202 + if(Ruckus != none) + { + Ruckus.FlashGeneric2(r_nDeviceInstanceId, int(CurrentFireMode)); + FireMode = GetCurrentFire(); + // End:0x202 + if(FireMode != none) + { + Ruckus.m_bForceHover = true; + Ruckus.m_fDesiredHeight = FireMode.GetCustomValue2() * float(16); + Ruckus.m_fKx = FireMode.GetCustomValue3(); + Ruckus.m_fKv = FireMode.GetCustomValue4(); + SetTimer((GetChargeTime()) / 2.0000000, false, 'EndHovering'); + SetTimer(FireMode.GetCustomValue5(), false, 'EndCharge'); + } + } + } + //return; + } + + function EndHovering() + { + local TgPawn_Ruckus Ruckus; + + Ruckus = TgPawn_Ruckus(Instigator); + // End:0x4C + if(Ruckus != none) + { + Ruckus.m_bForceHover = false; + } + //return; + } + stop; +} + +defaultproperties +{ + m_bUsePhysFlying=true + m_bCanLeftClickCancel=false + m_bForce3PViewWhileFiring=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Aegis.uc b/exported/TgGame/Classes/TgDevice_Aegis.uc new file mode 100755 index 00000000..2b8050cd --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Aegis.uc @@ -0,0 +1,11 @@ +class TgDevice_Aegis extends TgDevice + native(ChampFernando) + hidecategories(Navigation); + +var float m_fPreviousMinCooldown; + +// Export UTgDevice_Aegis::execOnBecomeActive(FFrame&, void* const) +native function OnBecomeActive(); + +// Export UTgDevice_Aegis::execOnCeaseActive(FFrame&, void* const) +native function OnCeaseActive(); diff --git a/exported/TgGame/Classes/TgDevice_AimDownSights.uc b/exported/TgGame/Classes/TgDevice_AimDownSights.uc new file mode 100755 index 00000000..f7b37511 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_AimDownSights.uc @@ -0,0 +1,71 @@ +class TgDevice_AimDownSights extends TgDevice + hidecategories(Navigation); + +var repnotify bool r_bIsADS; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bIsADS; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x35 + if((VarName == 'r_bIsADS') && r_bIsADS == false) + { + EndADS(); + return; + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return false; + //return ReturnValue; +} + +simulated function bool ShouldCancelStealth() +{ + return false; + //return ReturnValue; +} + +simulated function EndADS() +{ + local TgDevice theWeapon; + + theWeapon = TgDevice(Instigator.Weapon); + // End:0x60 + if(theWeapon != none) + { + theWeapon.AltUse(false); + } + //return; +} + +reliable server event InterruptFiring() +{ + r_bIsADS = false; + EndADS(); + super.InterruptFiring(); + //return; +} + +simulated function StopFire() +{ + r_bIsADS = false; + EndADS(); + super.StopFire(); + //return; +} + +reliable server function ServerStartFire(optional float MovementTimeStamp, optional Vector MovementInAccel, optional Vector MovementClientLoc, optional byte MovementNewFlags, optional byte MovementClientRoll, optional int MovementView, optional int ClientFireRequestId = -1, optional byte ClientFireMode = 255, optional Actor HitActor = none, optional float StartTraceX = -10000000.0000000, optional float StartTraceY = -10000000.0000000, optional float StartTraceZ = -10000000.0000000, optional float EndTraceX = -10000000.0000000, optional float EndTraceY = -10000000.0000000, optional float EndTraceZ = -10000000.0000000, optional int nCompressedAimVector = -1, optional bool bFirstBurstShot = false) +{ + r_bIsADS = true; + super.ServerStartFire(MovementTimeStamp, MovementInAccel, MovementClientLoc, MovementNewFlags, MovementClientRoll, MovementView, ClientFireRequestId, ClientFireMode, HitActor, StartTraceX, StartTraceY, StartTraceZ, EndTraceX, EndTraceY, EndTraceZ, nCompressedAimVector, bFirstBurstShot); + //return; +} diff --git a/exported/TgGame/Classes/TgDevice_Alpine.uc b/exported/TgGame/Classes/TgDevice_Alpine.uc new file mode 100755 index 00000000..a08e91e9 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Alpine.uc @@ -0,0 +1,3 @@ +class TgDevice_Alpine extends TgDevice_ImpasseMod + native(ChampBarrierTank) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_Amplitude.uc b/exported/TgGame/Classes/TgDevice_Amplitude.uc new file mode 100755 index 00000000..1d6f4613 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Amplitude.uc @@ -0,0 +1,3 @@ +class TgDevice_Amplitude extends TgDevice_OppressorMineMod + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_AndroxusInhand.uc b/exported/TgGame/Classes/TgDevice_AndroxusInhand.uc new file mode 100755 index 00000000..40fb7991 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_AndroxusInhand.uc @@ -0,0 +1,251 @@ +class TgDevice_AndroxusInhand extends TgDevice + native(ChampAndroxus) + hidecategories(Navigation); + +struct native BurstShotAmmoInfo +{ + var int ClientRequestId; + var byte nShotsRemaining; + var bool bFirstInBurst; + + structdefaultproperties + { + ClientRequestId=0 + nShotsRemaining=0 + bFirstInBurst=false + } +}; + +var bool m_bWantsAltFire; +var bool m_bFirstShotInBurst; +var bool m_bApplyLiftOff; +var int m_nShotsRemaining; +var array s_BurstShotAmmoQueue; + +// Export UTgDevice_AndroxusInhand::execCanReload(FFrame&, void* const) +native function bool CanReload(optional bool bIsAutoReload = false); + +// Export UTgDevice_AndroxusInhand::execGetAccuracy(FFrame&, void* const) +native function float GetAccuracy(optional int nMode = -1); + +// Export UTgDevice_AndroxusInhand::execGetShotSpreadTendencyCurvesSet(FFrame&, void* const) +native function TgGameplayCurvesSet GetShotSpreadTendencyCurvesSet(); + +reliable server function ServerAltUse(bool bEnable) +{ + //return; +} + +simulated event SetAltFireSecondModeNow(bool bEnable) +{ + m_bWantsAltFire = bEnable; + //return; +} + +simulated function FireAmmunition() +{ + local TgPawn_Androxus androxus; + + super.FireAmmunition(); + // End:0x84 + if(m_bApplyLiftOff) + { + androxus = TgPawn_Androxus(Instigator); + // End:0x84 + if(androxus != none) + { + // End:0x84 + if((int(CurrentFireMode) == int(0)) || m_bFirstShotInBurst) + { + androxus.ApplyLiftOff(); + } + } + } + m_nShotsRemaining = Max(m_nShotsRemaining - 1, 0); + m_bFirstShotInBurst = false; + //return; +} + +simulated function UpdateDesiredFireMode() +{ + // End:0x73 + if(m_bWantsAltFire || m_nShotsRemaining > 0) + { + // End:0x51 + if(m_nShotsRemaining == 0) + { + m_nShotsRemaining = Min(3, GetCurrentAmmoAmount()); + m_bFirstShotInBurst = true; + } + m_nDesiredFireMode = ((m_nShotsRemaining > 1) ? 2 : 1); + } + else + { + m_nShotsRemaining = 0; + m_nDesiredFireMode = 0; + } + //return; +} + +reliable server function ServerUpdateBurstShotsRemaining(byte nShotsRemaining, bool bFirstInBurst, int nClientRequestId) +{ + local BurstShotAmmoInfo AmmoInfo; + + // End:0x19 + if(m_CachedFireRequestId >= nClientRequestId) + { + return; + } + // End:0x37 + if(s_BurstShotAmmoQueue.Length > 32) + { + s_BurstShotAmmoQueue.Remove(0, 1); + } + AmmoInfo.ClientRequestId = nClientRequestId; + AmmoInfo.nShotsRemaining = nShotsRemaining; + AmmoInfo.bFirstInBurst = bFirstInBurst; + s_BurstShotAmmoQueue.AddItem(AmmoInfo); + //return; +} + +simulated function CallServerStartFire(AimData Aim, optional bool bPendingUpdate) +{ + // End:0x4E + if(!bPendingDelete && int(m_nDesiredFireMode) > int(0)) + { + ServerUpdateBurstShotsRemaining(byte(m_nShotsRemaining), m_bFirstShotInBurst, m_CachedFireRequestId); + } + super.CallServerStartFire(Aim); + //return; +} + +simulated function CallServerRestartFireLoop(AimData Aim) +{ + // End:0x3C + if(int(m_nDesiredFireMode) > int(0)) + { + ServerUpdateBurstShotsRemaining(byte(m_nShotsRemaining), m_bFirstShotInBurst, m_CachedFireRequestId); + } + super.CallServerRestartFireLoop(Aim); + //return; +} + +simulated function HandleDeviceFormStartFire(int nDeviceModeNum, float fRefireTime, const out AimData Aim) +{ + local float totalBurstTime; + + // End:0x36 + if(nDeviceModeNum == 0) + { + super.HandleDeviceFormStartFire(nDeviceModeNum, fRefireTime, Aim); + return; + } + totalBurstTime = GetEstimatedTotalBurstTime(m_nShotsRemaining); + TgPawn(Instigator).FlashStartFire(r_nDeviceInstanceId, nDeviceModeNum, totalBurstTime, Aim.HitActor, GetCurrentAmmoAmount()); + // End:0x122 + if(c_DeviceForm != none) + { + c_DeviceForm.StartFire(nDeviceModeNum, totalBurstTime, Aim.HitActor, GetCurrentAmmoAmount()); + } + //return; +} + +simulated function float GetEstimatedTotalBurstTime(int nShotsRemaining) +{ + return (FMax(0.0000000, float(nShotsRemaining - 1)) * (GetShortBulletRefireTime())) + (GetLongBulletRefireTime()); + //return ReturnValue; +} + +simulated function float GetLongBulletRefireTime() +{ + return GetRefireTime(1); + //return ReturnValue; +} + +simulated function float GetShortBulletRefireTime() +{ + return GetRefireTime(2); + //return ReturnValue; +} + +state DeviceFiring +{ + simulated function bool ShouldRefire(TgDeviceFire FireMode, const out AimData Aim) + { + local TgObject.EDeviceFailType failType; + local bool ret; + + ret = CanDeviceFireNow(CurrentFireMode, Aim, LogDebugInfo(), failType); + return (super.ShouldRefire(FireMode, Aim) || int(failType) == int(15)) || ((((Instigator != none) && Instigator.IsLocallyControlled()) && m_nShotsRemaining > 0) && FireMode.m_bContinuousFire) && ret; + //return ReturnValue; + } + + simulated function RestartFireLoop(bool bRefire) + { + local int nIndex; + + // End:0xDB + if(HasRemoteOwner() && int(m_nDesiredFireMode) > int(0)) + { + nIndex = s_BurstShotAmmoQueue.Find('ClientRequestId', m_CachedFireRequestId); + // End:0xDB + if(nIndex != -1) + { + m_nShotsRemaining = int(s_BurstShotAmmoQueue[nIndex].nShotsRemaining); + m_bFirstShotInBurst = s_BurstShotAmmoQueue[nIndex].bFirstInBurst; + s_BurstShotAmmoQueue.Remove(0, nIndex + 1); + } + } + super.RestartFireLoop(bRefire); + //return; + } + + simulated function StopFiringLogic() + { + m_nShotsRemaining = 0; + super.StopFiringLogic(); + //return; + } + + simulated function EndState(name NextStateName) + { + // End:0x3D + if(!m_IsPendingSetFireMode && int(CurrentFireMode) != int(0)) + { + m_IsPendingSetFireMode = true; + m_PendingFireMode = 0; + } + super.EndState(NextStateName); + //return; + } + stop; +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_SecondMode + m_ReticuleType=EReticuleType.RETICULE_Precise + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=17.0000000,Y=0.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_fMeshFOV=77.0000000 + m_vProjectileSpawnOffset=(X=30.0000000,Y=17.5000000,Z=-12.5000000) + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_AndroxusInhand' + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H200ftLowMag",Distance=3200.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[2]=(KeyframeName="trackacc200ftnull",Distance=3200.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[2]=(KeyframeName="trackang200ftnull",Distance=3200.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[1]=(KeyframeName="trackacc200ftnull",Distance=3200.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[1]=(KeyframeName="trackang200ftnull",Distance=3200.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Androxus.DeviceInhand' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.BasicForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ArcingBeam.uc b/exported/TgGame/Classes/TgDevice_ArcingBeam.uc new file mode 100755 index 00000000..c129a87d --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ArcingBeam.uc @@ -0,0 +1,218 @@ +class TgDevice_ArcingBeam extends TgDevice + native(Devices) + hidecategories(Navigation); + +struct native ArcingInfo +{ + var float ArcTime; + var float RemainingArcTime; + var int JumpsRemaining; + var Actor PreviousArcTarget; + var init array PreviousTargets; + var TgDeviceFire ArcFiremode; + + structdefaultproperties + { + ArcTime=0.0000000 + RemainingArcTime=0.0000000 + JumpsRemaining=0 + PreviousArcTarget=none + PreviousTargets=none + ArcFiremode=none + } +}; + +struct native PotentialTargetInfo +{ + var Actor Target; + var int NumHits; + var float Dist; + + structdefaultproperties + { + Target=none + NumHits=0 + Dist=0.0000000 + } +}; + +var array m_ArcingList; +var int m_nMaxNumArcsPerTarget; +var bool m_bCanTargetShields; +var bool m_bIsArcing; + +// Export UTgDevice_ArcingBeam::execDetermineNextTarget(FFrame&, void* const) +native function Actor DetermineNextTarget(int Index); + +// Export UTgDevice_ArcingBeam::execIsValidArcTarget(FFrame&, void* const) +native function bool IsValidArcTarget(Actor TestActor, ArcingInfo Info); + +function TriggerArcsInArcingList(float DeltaTime) +{ + local int I; + local bool bTriggeredArc; + + J0x00: + bTriggeredArc = false; + I = 0; + J0x17: + + // End:0xC0 [Loop If] + if(I < m_ArcingList.Length) + { + m_ArcingList[I].RemainingArcTime -= DeltaTime; + // End:0xB2 + if(m_ArcingList[I].RemainingArcTime <= 0.0000000) + { + bTriggeredArc = true; + TriggerArc(I); + // [Explicit Break] + goto J0xC0; + } + I++; + // [Loop Continue] + goto J0x17; + } + J0xC0: + + // End:0x00 + if(!(!bTriggeredArc)) + goto J0x00; + //return; +} + +simulated function Tick(float DeltaTime) +{ + super(Actor).Tick(DeltaTime); + TriggerArcsInArcingList(DeltaTime); + //return; +} + +function int GetNumArcJumps(Actor InitialTarget, TgDeviceFire FireMode) +{ + local TgPawn TgP; + local bool bImmune; + + bImmune = false; + TgP = TgPawn(InitialTarget); + // End:0x61 + if(TgP != none) + { + bImmune = TgP.IsImmuneToDamage(); + } + // End:0xA4 + if((FireMode != none) && !bImmune) + { + return FireMode.GetNumArcJumps(); + } + else + { + return 0; + } + //return ReturnValue; +} + +event BeginArcing(Actor InitialTarget, TgDeviceFire FireMode) +{ + local ImpactInfo Impact; + local ArcingInfo NewArcingInfo; + + // End:0x22 + if((InitialTarget == none) || FireMode == none) + { + return; + } + FireMode.ApplyHitSpecial(InitialTarget); + NewArcingInfo.ArcFiremode = FireMode; + // End:0xBD + if(!IsValidArcTarget(InitialTarget, NewArcingInfo) && !InitialTarget.IsA('TgDeploy_HealingTotem')) + { + return; + } + // End:0x36E + if(int(WorldInfo.Role) == int(ROLE_Authority)) + { + Impact.HitActor = InitialTarget; + Impact.bDirectHit = false; + Impact.DeviceModeReference = FireMode; + Impact.HitLocation = InitialTarget.Location; + Impact.HitNormal = Normal(Owner.Location - InitialTarget.Location); + FireMode.ApplyHitSpecial(InitialTarget, Impact, 10693); + NewArcingInfo.JumpsRemaining = GetNumArcJumps(InitialTarget, FireMode); + NewArcingInfo.PreviousArcTarget = InitialTarget; + NewArcingInfo.PreviousTargets.Length = 1; + NewArcingInfo.PreviousTargets[0] = InitialTarget; + NewArcingInfo.ArcTime = FireMode.GetPropertyValue(151); + NewArcingInfo.RemainingArcTime = NewArcingInfo.ArcTime; + m_ArcingList.AddItem(NewArcingInfo); + m_bIsArcing = true; + TriggerArcsInArcingList(0.0000000); + } + //return; +} + +function EndArcing(int Index) +{ + // End:0x1A + if(Index >= m_ArcingList.Length) + { + return; + } + m_ArcingList[Index].PreviousArcTarget = none; + m_ArcingList[Index].PreviousTargets.Length = 0; + m_ArcingList[Index].JumpsRemaining = 0; + m_ArcingList[Index].ArcFiremode = none; + m_ArcingList.Remove(Index, 1); + //return; +} + +function TriggerArc(int Index) +{ + local ImpactInfo Impact; + local Actor Target; + + // End:0x1A + if(Index >= m_ArcingList.Length) + { + return; + } + // End:0xC3 + if(((m_ArcingList[Index].PreviousArcTarget == none) || m_ArcingList[Index].ArcFiremode == none) || m_ArcingList[Index].JumpsRemaining <= 0) + { + EndArcing(Index); + m_bIsArcing = false; + return; + } + Target = DetermineNextTarget(Index); + // End:0x110 + if(Target == none) + { + EndArcing(Index); + m_bIsArcing = false; + return; + } + Impact.HitActor = Target; + Impact.bDirectHit = false; + Impact.DeviceModeReference = m_ArcingList[Index].ArcFiremode; + Impact.HitLocation = Target.Location; + Impact.HitNormal = Normal(m_ArcingList[Index].PreviousArcTarget.Location - Target.Location); + m_ArcingList[Index].ArcFiremode.ApplyHit(Impact, Instigator); + // End:0x32C + if(m_ArcingList[Index].PreviousTargets.Find(Target) == -1) + { + m_ArcingList[Index].ArcFiremode.ApplyHitSpecial(Target, Impact, 10693); + } + TgPawn(Instigator).FlashArcing(r_nDeviceInstanceId, int(CurrentFireMode), Impact.HitActor.Location, m_ArcingList[Index].PreviousArcTarget.Location, m_ArcingList[Index].PreviousArcTarget, int(r_eEquippedAt), m_nSocketIndex, true); + TgPawn(Instigator).FlashArcing(r_nDeviceInstanceId, int(CurrentFireMode), Impact.HitActor.Location, m_ArcingList[Index].PreviousArcTarget.Location, Impact.HitActor, int(r_eEquippedAt), m_nSocketIndex, false); + m_ArcingList[Index].PreviousArcTarget = Target; + m_ArcingList[Index].PreviousTargets.AddItem(Target); + m_ArcingList[Index].JumpsRemaining--; + m_ArcingList[Index].RemainingArcTime = m_ArcingList[Index].ArcTime; + //return; +} + +defaultproperties +{ + m_nMaxNumArcsPerTarget=4 + m_bProcAsIfHandDevice=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_AssertDominance.uc b/exported/TgGame/Classes/TgDevice_AssertDominance.uc new file mode 100755 index 00000000..316e27ad --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_AssertDominance.uc @@ -0,0 +1,122 @@ +class TgDevice_AssertDominance extends TgDevice_Leap + native(ChampFlak) + hidecategories(Navigation); + +// Export UTgDevice_AssertDominance::execGetCachedFiringPostHitDelay(FFrame&, void* const) +native function float GetCachedFiringPostHitDelay(); + +// Export UTgDevice_AssertDominance::execShouldLiftInterrupt(FFrame&, void* const) +native function bool ShouldLiftInterrupt(); + +reliable client simulated event ClientInterrupt() +{ + LockInput(false); + super(TgDevice).ClientInterrupt(); + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x0F + if(IsFiring()) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool ShouldMountCancelFiring() +{ + return false; + //return ReturnValue; +} + +simulated function bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +simulated event DeliverHit(ImpactInfo Impact) +{ + local TgDeviceFire FireMode; + local TgDevice RallyHereCard; + local TgPawn TgPOwner; + + TgPOwner = TgPawn(Owner); + FireMode = GetCurrentFire(); + RallyHereCard = TgPOwner.GetDeviceById(18416); + // End:0xEB + if(((FireMode != none) && Impact.HitActor != none) && RallyHereCard != none) + { + FireMode.ApplyHitSpecial(Impact.HitActor, Impact); + } + else + { + // End:0x14F + if((FireMode != none) && Impact.HitActor != none) + { + FireMode.ApplyHit(Impact, Instigator); + } + } + //return; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgPawn_Flak pFlak; + + super.StartFiringLogic(); + pFlak = TgPawn_Flak(Instigator); + // End:0x75 + if(pFlak != none) + { + pFlak.StartZTracking(); + pFlak.m_bUseShoulderBashZoom = false; + } + //return; + } + + simulated function FirePreHitDelay() + { + local TgPawn_Flak pFlak; + local TgDeviceForm_Dominance DeviceForm; + + super.FirePreHitDelay(); + LockInput(true); + pFlak = TgPawn_Flak(Instigator); + // End:0xDC + if(pFlak != none) + { + // End:0x73 + if(int(Role) == int(ROLE_Authority)) + { + pFlak.SpawnFlagDeployable(); + } + DeviceForm = TgDeviceForm_Dominance(c_DeviceForm); + // End:0xBD + if(DeviceForm != none) + { + DeviceForm.HideFlag(); + } + pFlak.ResetGravTimers(); + } + //return; + } + + simulated function FirePostHitDelay() + { + LockInput(false); + super.FirePostHitDelay(); + //return; + } + stop; +} + +defaultproperties +{ + m_bAbilityRequiresInhandResync=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_AstralCycle.uc b/exported/TgGame/Classes/TgDevice_AstralCycle.uc new file mode 100755 index 00000000..d19b340b --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_AstralCycle.uc @@ -0,0 +1,3 @@ +class TgDevice_AstralCycle extends TgDevice + native(ChampAstro) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_AstralMark.uc b/exported/TgGame/Classes/TgDevice_AstralMark.uc new file mode 100755 index 00000000..8d1750de --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_AstralMark.uc @@ -0,0 +1,80 @@ +class TgDevice_AstralMark extends TgDevice + native(ChampAstro) + hidecategories(Navigation); + +// Export UTgDevice_AstralMark::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated function InterruptOtherDevices(TgPawn TgP) +{ + super.InterruptOtherDevices(TgP); + // End:0x5F + if(int(Role) == int(ROLE_Authority)) + { + // End:0x5F + if(TgP != none) + { + TgP.InterruptDeviceFiringByClass(Class'TgGame.TgDevice_Lightspeed', true); + } + } + //return; +} + +simulated event DeliverQueuedPendingHits() +{ + // End:0x1C + if(PendingImpactList.Length != 0) + { + StartCooldown(); + } + super.DeliverQueuedPendingHits(); + //return; +} + +simulated event DeliverHit(ImpactInfo Impact) +{ + local TgPawn_Astro pAstro; + local TgPawn pPawn; + + super.DeliverHit(Impact); + pAstro = TgPawn_Astro(Instigator); + pPawn = TgPawn(Impact.HitActor); + // End:0x110 + if((pAstro != none) && pPawn != none) + { + pAstro.r_HitAstralTarget = pPawn.GetPRI(); + pAstro.bNetDirty = true; + // End:0x110 + if(int(Role) == int(ROLE_Authority)) + { + pAstro.AddAstralMarkTarget(); + } + } + //return; +} + +simulated event bool ShouldCooldownAfterFire() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StopFiringLogic() + { + local TgPawn_Astro pAstro; + + super.StopFiringLogic(); + pAstro = TgPawn_Astro(Owner); + // End:0x96 + if(pAstro != none) + { + pAstro.r_HitAstralTarget = none; + pAstro.r_RemoveAstralTarget = none; + pAstro.bNetDirty = true; + } + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_AstroInhand.uc b/exported/TgGame/Classes/TgDevice_AstroInhand.uc new file mode 100755 index 00000000..4c17088b --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_AstroInhand.uc @@ -0,0 +1,30 @@ +class TgDevice_AstroInhand extends TgDevice + native(ChampAstro) + hidecategories(Navigation); + +simulated event bool StartReload(optional bool bIgnoreCurrentAmmo = false) +{ + local TgPawn_Astro pAstro; + + pAstro = TgPawn_Astro(Instigator); + // End:0x8B + if(pAstro != none) + { + // End:0x8B + if(pAstro.HasDeviceCached(19186)) + { + pAstro.m_LightSpeedDevice.InterruptFiring(); + } + } + return super.StartReload(bIgnoreCurrentAmmo); + //return ReturnValue; +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAltFireEnabled=true + m_fMeshFOV=77.0000000 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_AstroInhand' + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Princess.DeviceInhand' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_AstroQ.uc b/exported/TgGame/Classes/TgDevice_AstroQ.uc new file mode 100755 index 00000000..2bec9272 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_AstroQ.uc @@ -0,0 +1,103 @@ +class TgDevice_AstroQ extends TgDevice + native(ChampAstro) + hidecategories(Navigation); + +var bool m_bApplyCooldown; + +// Export UTgDevice_AstroQ::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated event DeliverHit(ImpactInfo Impact) +{ + local TgPawn_Astro pAstro; + local TgDeviceFire pFireMode; + + super.DeliverHit(Impact); + pAstro = TgPawn_Astro(Owner); + // End:0xE3 + if(pAstro != none) + { + pFireMode = GetCurrentFire(); + // End:0xE3 + if(pFireMode.IsValidTarget(Impact.HitActor)) + { + pAstro.m_HitGravityLiftTarget = TgPawn_Character(Impact.HitActor); + m_bApplyCooldown = true; + } + } + //return; +} + +simulated function InterruptOtherDevices(TgPawn TgP) +{ + super.InterruptOtherDevices(TgP); + // End:0x5F + if(int(Role) == int(ROLE_Authority)) + { + // End:0x5F + if(TgP != none) + { + TgP.InterruptDeviceFiringByClass(Class'TgGame.TgDevice_Lightspeed', true); + } + } + //return; +} + +simulated event DeliverQueuedPendingHits() +{ + // End:0x1A + if(PendingImpactList.Length == 0) + { + InterruptFiring(); + } + super.DeliverQueuedPendingHits(); + //return; +} + +simulated event bool ShouldCooldownAfterFire() +{ + return false; + //return ReturnValue; +} + +function OnInstantShotRejected(ImpactToValidate RejectedPrimaryImpact) +{ + m_bApplyCooldown = false; + //return; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + m_bApplyCooldown = false; + super.StartFiringLogic(); + //return; + } + + simulated function StopFiringLogic() + { + local TgPawn_Astro pAstro; + local TgDevice pDeadSpaceCard; + + super.StopFiringLogic(); + pAstro = TgPawn_Astro(Owner); + // End:0x97 + if(pAstro != none) + { + pDeadSpaceCard = pAstro.GetDeviceByClass(Class'TgGame.TgDevice_DeadSpace'); + // End:0x97 + if(pDeadSpaceCard != none) + { + pAstro.m_bDeadSpaceTimerActive = true; + } + } + // End:0xC6 + if(m_bApplyCooldown && int(Role) == int(ROLE_Authority)) + { + StartCooldown(); + } + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_Aura.uc b/exported/TgGame/Classes/TgDevice_Aura.uc new file mode 100755 index 00000000..549c3f8d --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Aura.uc @@ -0,0 +1,235 @@ +class TgDevice_Aura extends TgDevice + abstract + native(Devices) + hidecategories(Navigation); + +var repnotify float r_fRadiusScale; +var array m_TouchingActors; +var array m_AffectedActors; +var bool m_bIsAuraActive; +var float m_fLastBlockedByBlockersTime; +var float m_fMinBlockedByBlockersTime; +var array m_BlockedActors; +var TgCollisionProxy_Cylinder m_CollisionProxy; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_fRadiusScale; +} + +// Export UTgDevice_Aura::execSetFireMode(FFrame&, void* const) +native function SetFireMode(int nFireModeNum, optional bool ForceSet = false); + +// Export UTgDevice_Aura::execApplyEffects(FFrame&, void* const) +native function ApplyEffects(Actor Target); + +// Export UTgDevice_Aura::execRemoveEffects(FFrame&, void* const) +native function RemoveEffects(Actor Target); + +// Export UTgDevice_Aura::execGetCurrentRadius(FFrame&, void* const) +native function float GetCurrentRadius(); + +// Export UTgDevice_Aura::execGetDistanceToTarget(FFrame&, void* const) +native function float GetDistanceToTarget(Actor Target); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return false; + //return ReturnValue; +} + +function OnProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgDeviceFire FireMode; + + // End:0x89 + if(m_TouchingActors.Find(Other) == -1) + { + FireMode = GetCurrentFire(); + // End:0x89 + if((FireMode != none) && FireMode.IsValidTarget(Other)) + { + m_TouchingActors.AddItem(Other); + } + } + //return; +} + +function OnProxyUnTouch(Actor Other) +{ + // End:0x36 + if(m_TouchingActors.Find(Other) != -1) + { + m_TouchingActors.RemoveItem(Other); + } + // End:0x7F + if(m_AffectedActors.Find(Other) != -1) + { + RemoveEffects(Other); + m_AffectedActors.RemoveItem(Other); + } + //return; +} + +simulated event ClearAllAffected() +{ + local Actor NextActor; + + J0x00: + // End:0x57 [Loop If] + if(m_AffectedActors.Length > 0) + { + NextActor = m_AffectedActors[0]; + // End:0x47 + if(NextActor != none) + { + RemoveEffects(NextActor); + } + m_AffectedActors.Remove(0, 1); + // [Loop Continue] + goto J0x00; + } + //return; +} + +simulated event ClearAllTouched() +{ + ClearAllAffected(); + m_TouchingActors.Remove(0, m_TouchingActors.Length); + //return; +} + +simulated function DeviceShutDown(optional bool bDeactiveMode, optional bool bResetCooldowns) +{ + DisableAura(); + super.DeviceShutDown(bDeactiveMode, bResetCooldowns); + //return; +} + +simulated event Destroyed() +{ + ClearAllTouched(); + // End:0x3C + if(m_CollisionProxy != none) + { + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + super.Destroyed(); + //return; +} + +event SpawnCollisionProxy() +{ + local TgDeviceFire FireMode; + local float Radius; + + // End:0x226 + if((int(Role) == int(ROLE_Authority)) && Owner != none) + { + m_bIsAuraActive = false; + // End:0x6D + if(m_CollisionProxy != none) + { + ClearAllTouched(); + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + FireMode = GetCurrentFire(); + // End:0x226 + if(FireMode != none) + { + m_CollisionProxy = Spawn(Class'TgGame.TgCollisionProxy_Cylinder', Owner,, Owner.Location,,, true); + // End:0x226 + if(m_CollisionProxy != none) + { + m_CollisionProxy.SetCollision(false, false, true); + m_CollisionProxy.SetBase(Owner); + m_CollisionProxy.__ProxyTouch__Delegate = OnProxyTouch; + m_CollisionProxy.__ProxyUnTouch__Delegate = OnProxyUnTouch; + Radius = FireMode.GetDamageRadius() * r_fRadiusScale; + m_CollisionProxy.m_CollisionCylinder.SetCylinderSize(Radius, 2.0000000 * Radius); + m_CollisionProxy.DelegatesUpdated(); + } + } + } + //return; +} + +event ScaleCollisionProxy() +{ + local TgDeviceFire FireMode; + local float Radius; + + // End:0x1C + if(m_CollisionProxy == none) + { + SpawnCollisionProxy(); + } + else + { + // End:0xF3 + if(int(Role) == int(ROLE_Authority)) + { + FireMode = GetCurrentFire(); + // End:0xF3 + if(FireMode != none) + { + Radius = FireMode.GetDamageRadius() * r_fRadiusScale; + m_CollisionProxy.m_CollisionCylinder.SetCylinderSize(Radius, 2.0000000 * Radius); + m_CollisionProxy.DelegatesUpdated(); + } + } + } + //return; +} + +event EnableAura() +{ + local TgDeviceFire FireMode; + + m_bIsAuraActive = true; + // End:0xBF + if(m_CollisionProxy != none) + { + m_CollisionProxy.SetCollision(true, false, false); + // End:0xBF + if(m_TouchingActors.Find(Owner) == -1) + { + FireMode = GetCurrentFire(); + // End:0xBF + if((FireMode != none) && FireMode.IsValidTarget(Owner)) + { + m_TouchingActors.AddItem(Owner); + } + } + } + //return; +} + +event DisableAura() +{ + m_bIsAuraActive = false; + // End:0x36 + if(m_CollisionProxy != none) + { + m_CollisionProxy.SetCollision(false, false, true); + } + ClearAllTouched(); + //return; +} + +simulated event bool CanJumpWhileFiring() +{ + return true; + //return ReturnValue; +} + +defaultproperties +{ + r_fRadiusScale=1.0000000 + m_fLastBlockedByBlockersTime=-0.2500000 + m_fMinBlockedByBlockersTime=0.2500000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_AuraPerTarget.uc b/exported/TgGame/Classes/TgDevice_AuraPerTarget.uc new file mode 100755 index 00000000..3d6c4377 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_AuraPerTarget.uc @@ -0,0 +1,5 @@ +class TgDevice_AuraPerTarget extends TgDevice_PassiveAura + native(Devices) + hidecategories(Navigation); + +var int m_nAppliedStacks; diff --git a/exported/TgGame/Classes/TgDevice_AutoHealing2.uc b/exported/TgGame/Classes/TgDevice_AutoHealing2.uc new file mode 100755 index 00000000..921bd2fb --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_AutoHealing2.uc @@ -0,0 +1,17 @@ +class TgDevice_AutoHealing2 extends TgDevice + native(Devices) + hidecategories(Navigation); + +var bool m_bIsApplied; +var bool m_bForceRemoval; +var TgPawn m_CachedPawnOwner; +var float m_fLastLowHealthSoundTime; +var float m_fPrevHealthPct; + +// Export UTgDevice_AutoHealing2::execDeviceAdjustHeal(FFrame&, void* const) +native function DeviceAdjustHeal(const out ImpactInfo Impact, out float fHeal, int nPropertyId); + +defaultproperties +{ + m_fLastLowHealthSoundTime=-100.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_BarikInhand.uc b/exported/TgGame/Classes/TgDevice_BarikInhand.uc new file mode 100755 index 00000000..42b31ec1 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_BarikInhand.uc @@ -0,0 +1,47 @@ +class TgDevice_BarikInhand extends TgDevice + hidecategories(Navigation); + +simulated function InterruptOtherDevices(TgPawn TgP) +{ + super.InterruptOtherDevices(TgP); + // End:0x5F + if(int(Role) == int(ROLE_Authority)) + { + // End:0x5F + if(TgP != none) + { + TgP.InterruptDeviceFiringByClass(Class'TgGame.TgDevice_RocketBoots'); + } + } + //return; +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_bConsolidateMultipleShots=true + m_vMeshViewOffset=(X=17.0000000,Y=0.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_fMeshFOV=77.0000000 + m_vProjectileSpawnOffset=(X=30.0000000,Y=9.0000000,Z=-10.0000000) + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetVert[1]=(KeyframeName="V100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetVert[2]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[2]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftlowx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[2]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[1]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[1]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.HeavyForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Barrage.uc b/exported/TgGame/Classes/TgDevice_Barrage.uc new file mode 100755 index 00000000..223c5792 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Barrage.uc @@ -0,0 +1,156 @@ +class TgDevice_Barrage extends TgDevice + native(ChampViktor) + hidecategories(Navigation); + +var TgDevice_BarrageFire m_BarrageFireDevice; + +// Export UTgDevice_Barrage::execGetRequiredEnergyToFire(FFrame&, void* const) +native function float GetRequiredEnergyToFire(); + +// Export UTgDevice_Barrage::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +// Export UTgDevice_Barrage::execUsesTargetingMode(FFrame&, void* const) +native function bool UsesTargetingMode(); + +// Export UTgDevice_Barrage::execTickTargetingMode(FFrame&, void* const) +native function TickTargetingMode(float DeltaSeconds); + +// Export UTgDevice_Barrage::execExitTargetingMode(FFrame&, void* const) +native function ExitTargetingMode(); + +simulated event bool CanBeCanceled() +{ + // End:0x61 + if(super.CanBeCanceled()) + { + // End:0x5F + if((IsTimerActive('FirePreHitDelay') || IsTimerActive('LastShotCancelTimer')) || GetTimerCount('FirePostHitDelay') < 0.2000000) + { + return false; + } + return true; + } + return false; + //return ReturnValue; +} + +simulated function CustomFire() +{ + local AimData Aim; + + UpdateIndex(); + GetCachedAim(Aim); + TgPawn(Instigator).FlashFire(r_nDeviceInstanceId, int(CurrentFireMode), Aim.EndTrace, int(r_eEquippedAt), m_nSocketIndex, false, GetRefireTime()); + // End:0x10A + if(c_DeviceForm != none) + { + c_DeviceForm.Fire(Aim.EndTrace, int(CurrentFireMode), int(r_eEquippedAt), m_nSocketIndex, false, GetRefireTime()); + } + // End:0x13E + if(int(Role) == int(ROLE_Authority)) + { + GetCurrentFire().CustomFire(); + } + //return; +} + +simulated function bool ShouldConsumePowerPoolOnStartFire() +{ + return true; + //return ReturnValue; +} + +// Export UTgDevice_Barrage::execCanFireIfLeftMouseDown(FFrame&, void* const) +native function bool CanFireIfLeftMouseDown(); + +simulated event bool ShouldInterruptReloadOnFire() +{ + return true; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x2A + if((Current != none) && Current == m_BarrageFireDevice) + { + return false; + } + // End:0x87 + if(!super.ShouldLockFiring(Current)) + { + return (IsFiring()) || (WorldInfo.TimeSeconds - m_EndOfLastFireTimeStamp) < (GetLockoutExtensionTime()); + } + return true; + //return ReturnValue; +} + +simulated function float GetLockoutExtensionTime() +{ + return GetCurrentFire().GetCustomValue1(); + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return super.CanBeInterrupted() || IsFiring(); + //return ReturnValue; +} + +simulated function LastShotCancelTimer() +{ + // End:0x35 + if(IsTimerActive('FirePostHitDelay')) + { + ClearTimer('FirePostHitDelay'); + FirePostHitDelay(); + } + //return; +} + +simulated function bool IsToggleDevice() +{ + return true; + //return ReturnValue; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x72 + case 14462: + m_BarrageFireDevice = TgDevice_BarrageFire(Dev); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated state DeviceFiring +{ + simulated function FirePostHitDelay() + { + super.FirePostHitDelay(); + ClearTimer('LastShotCancelTimer'); + //return; + } + stop; +} + +defaultproperties +{ + m_eCastModeOverride=ECastMode.CM_Instant + c_bUsesTargetingReticle=false + m_bUseCustomCastMode=true + m_nLinkedDeviceIDs[0]=14462 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_BarrageFire.uc b/exported/TgGame/Classes/TgDevice_BarrageFire.uc new file mode 100755 index 00000000..3c270bda --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_BarrageFire.uc @@ -0,0 +1,186 @@ +class TgDevice_BarrageFire extends TgDevice + native(ChampViktor) + hidecategories(Navigation); + +var int m_nChainedBarrageNum; +var TgDevice_Barrage m_BarrageDevice; + +// Export UTgDevice_BarrageFire::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +// Export UTgDevice_BarrageFire::execGetConePullbackDistance(FFrame&, void* const) +native function float GetConePullbackDistance(); + +// Export UTgDevice_BarrageFire::execValidateReceivedAim(FFrame&, void* const) +native function AimData ValidateReceivedAim(float ClientMovementTimeStamp, AimData Aim); + +// Export UTgDevice_BarrageFire::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +// Export UTgDevice_BarrageFire::execGetCurrentShotCost(FFrame&, void* const) +native function float GetCurrentShotCost(); + +// Export UTgDevice_BarrageFire::execUpdateUltChargePercent(FFrame&, void* const) +native function bool UpdateUltChargePercent(); + +simulated function ResetBarrage() +{ + m_nChainedBarrageNum = 3; + bPendingFire = false; + //return; +} + +simulated function bool InterceptLeftMousePressed(TgPlayerController TgController) +{ + local TgPawn_Character TgPC; + + // End:0x95 + if(m_BarrageDevice.IsTimerActive('FirePostHitDelay')) + { + // End:0x93 + if(!Use()) + { + TgPC = TgPawn_Character(Instigator); + // End:0x93 + if(TgPC != none) + { + TgPC.FxReactivateGroupSelf('ViktorBarrageFailure', 0); + } + } + return true; + } + return false; + //return ReturnValue; +} + +simulated function bool InterceptLeftMouseReleased(TgPlayerController TgController) +{ + // End:0x38 + if(m_BarrageDevice.IsTimerActive('FirePostHitDelay')) + { + StopFire(); + return true; + } + return false; + //return ReturnValue; +} + +simulated function bool ShouldConsumePowerPoolOnStartFire() +{ + return false; + //return ReturnValue; +} + +simulated function bool ShouldConsumePowerPoolAfterFire() +{ + return true; + //return ReturnValue; +} + +simulated function CustomFire() +{ + local AimData Aim; + + UpdateIndex(); + GetCachedAim(Aim); + TgPawn(Instigator).FlashFireNoSim(r_nDeviceInstanceId, int(CurrentFireMode), Aim.EndTrace, int(r_eEquippedAt), m_nSocketIndex, false, GetRefireTime()); + // End:0x107 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x107 + if(Aim.HitActor != none) + { + GetCurrentFire().DeployAtActor(Aim.HitActor); + } + } + //return; +} + +simulated function HandleDeviceFormStartFire(int nDeviceModeNum, float fRefireTime, const out AimData Aim) +{ + TgPawn(Instigator).FlashStartFire(r_nDeviceInstanceId, nDeviceModeNum, fRefireTime, Aim.HitActor, m_nChainedBarrageNum); + // End:0xCD + if(c_DeviceForm != none) + { + c_DeviceForm.StartFire(nDeviceModeNum, fRefireTime, Aim.HitActor, m_nChainedBarrageNum); + } + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0xA4 + case 14351: + m_BarrageDevice = TgDevice_Barrage(Dev); + Dev.RegisterDelegate(2, ResetBarrage); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x88 + case 14351: + Dev.UnregisterDelegate(2, ResetBarrage); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated state DeviceFiring +{ + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + // End:0x50 + if(m_nChainedBarrageNum == 1) + { + m_BarrageDevice.SetTimer(GetRemainingTimeForTimer('FirePostHitDelay'), false, 'LastShotCancelTimer'); + } + //return; + } + + simulated function FirePostHitDelay() + { + m_nChainedBarrageNum -= 1; + super.FirePostHitDelay(); + //return; + } + + simulated function bool ShouldRefire(TgDeviceFire FireMode, const out AimData Aim) + { + local TgObject.EDeviceFailType failType; + + return (bPendingFire || s_nNumClientRefires > s_nNumServerRefires) && CanDeviceFireNow(CurrentFireMode, Aim, LogDebugInfo(), failType); + //return ReturnValue; + } + stop; +} + +defaultproperties +{ + m_nLinkedDeviceIDs[0]=14351 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_BarricadeDome.uc b/exported/TgGame/Classes/TgDevice_BarricadeDome.uc new file mode 100755 index 00000000..d0b8f0fc --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_BarricadeDome.uc @@ -0,0 +1,137 @@ +class TgDevice_BarricadeDome extends TgDevice + native(ChampBarik) + hidecategories(Navigation); + +var Vector m_TurretSpawnLocation; +var int m_FlameTurretID; + +// Export UTgDevice_BarricadeDome::execGetCachedAim(FFrame&, void* const) +native function GetCachedAim(out AimData Aim); + +// Export UTgDevice_BarricadeDome::execGetPetIDOverride(FFrame&, void* const) +native function int GetPetIDOverride(int PetIndex); + +function InitMaxHealth() +{ + local TgPawn TgPOwner; + local TgEffectManager em; + local TgDevice CardDevice; + local TgEffect HealthBonusEffect; + local int I, J; + local float baseHealth, extraHealth, maxHealth; + + TgPOwner = TgPawn(Owner); + // End:0x4AE + if(TgPOwner != none) + { + // End:0x63 + if(r_Deployable != none) + { + baseHealth = r_Deployable.GetMaxHealth(); + } + extraHealth = 0.0000000; + em = TgPOwner.r_EffectManager; + // End:0x318 + if(em != none) + { + I = 0; + J0xB4: + + // End:0x318 [Loop If] + if(I < em.s_AppliedEffectGroups.Length) + { + // End:0x30A + if((em.s_AppliedEffectGroups[I] != none) && em.s_AppliedEffectGroups[I].m_nType == 261) + { + J = 0; + J0x163: + + // End:0x30A [Loop If] + if(J < em.s_AppliedEffectGroups[I].m_Effects.Length) + { + HealthBonusEffect = em.s_AppliedEffectGroups[I].m_Effects[J]; + // End:0x2FC + if((HealthBonusEffect != none) && HealthBonusEffect.m_nPropertyId == 304) + { + CardDevice = TgPOwner.GetDeviceById(em.s_AppliedEffectGroups[I].m_nSourceItemId); + // End:0x2FC + if((CardDevice != none) && CardDevice.IsCard()) + { + extraHealth += HealthBonusEffect.GetProratedValue(); + } + } + ++J; + // [Loop Continue] + goto J0x163; + } + } + ++I; + // [Loop Continue] + goto J0xB4; + } + } + maxHealth = baseHealth + extraHealth; + // End:0x4AE + if(r_Deployable.GetMaxHealth() != maxHealth) + { + // End:0x4AE + if(r_Deployable.r_DRI != none) + { + r_Deployable.r_DRI.r_nHealthMaximum = int(maxHealth); + r_Deployable.r_DRI.r_nHealthCurrent = int(maxHealth); + r_Deployable.r_nHealth = r_Deployable.r_DRI.r_nHealthMaximum; + r_Deployable.bNetDirty = true; + r_Deployable.r_DRI.bNetDirty = true; + } + } + } + //return; +} + +simulated function InterruptOtherDevices(TgPawn TgP) +{ + super.InterruptOtherDevices(TgP); + // End:0x5F + if(int(Role) == int(ROLE_Authority)) + { + // End:0x5F + if(TgP != none) + { + TgP.InterruptDeviceFiringByClass(Class'TgGame.TgDevice_RocketBoots'); + } + } + //return; +} + +simulated state DeviceFiring +{ + simulated function FirePreHitDelay() + { + local TgPawn TgPOwner; + + super.FirePreHitDelay(); + // End:0x62 + if(int(Role) == int(ROLE_Authority)) + { + TgPOwner = TgPawn(Owner); + // End:0x62 + if(r_Deployable != none) + { + // End:0x62 + if(TgPOwner != none) + { + InitMaxHealth(); + } + } + } + //return; + } + stop; +} + +defaultproperties +{ + m_FlameTurretID=2230 + m_bDeployAtFeetOnFailure=true + m_fBottomlessPitCheck=5000.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_BarricadeMod.uc b/exported/TgGame/Classes/TgDevice_BarricadeMod.uc new file mode 100755 index 00000000..ec0dd5b1 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_BarricadeMod.uc @@ -0,0 +1,6 @@ +class TgDevice_BarricadeMod extends TgDevice + native(Devices) + hidecategories(Navigation); + +// Export UTgDevice_BarricadeMod::execApplyTouchEffect(FFrame&, void* const) +native function ApplyTouchEffect(Actor Target); diff --git a/exported/TgGame/Classes/TgDevice_Barrier.uc b/exported/TgGame/Classes/TgDevice_Barrier.uc new file mode 100755 index 00000000..68dc1970 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Barrier.uc @@ -0,0 +1,127 @@ +class TgDevice_Barrier extends TgDevice + hidecategories(Navigation); + +function InitMaxHealth() +{ + local TgPawn TgPOwner; + local TgEffectManager em; + local TgDevice CardDevice; + local TgEffect HealthBonusEffect; + local int I, J; + local float baseHealth, extraHealth, maxHealth; + + TgPOwner = TgPawn(Owner); + // End:0x4AE + if(TgPOwner != none) + { + // End:0x63 + if(r_Deployable != none) + { + baseHealth = r_Deployable.GetMaxHealth(); + } + extraHealth = 0.0000000; + em = TgPOwner.r_EffectManager; + // End:0x318 + if(em != none) + { + I = 0; + J0xB4: + + // End:0x318 [Loop If] + if(I < em.s_AppliedEffectGroups.Length) + { + // End:0x30A + if((em.s_AppliedEffectGroups[I] != none) && em.s_AppliedEffectGroups[I].m_nType == 261) + { + J = 0; + J0x163: + + // End:0x30A [Loop If] + if(J < em.s_AppliedEffectGroups[I].m_Effects.Length) + { + HealthBonusEffect = em.s_AppliedEffectGroups[I].m_Effects[J]; + // End:0x2FC + if((HealthBonusEffect != none) && HealthBonusEffect.m_nPropertyId == 304) + { + CardDevice = TgPOwner.GetDeviceById(em.s_AppliedEffectGroups[I].m_nSourceItemId); + // End:0x2FC + if((CardDevice != none) && CardDevice.IsCard()) + { + extraHealth += HealthBonusEffect.GetProratedValue(); + } + } + ++J; + // [Loop Continue] + goto J0x163; + } + } + ++I; + // [Loop Continue] + goto J0xB4; + } + } + maxHealth = baseHealth + extraHealth; + // End:0x4AE + if(r_Deployable.GetMaxHealth() != maxHealth) + { + // End:0x4AE + if(r_Deployable.r_DRI != none) + { + r_Deployable.r_DRI.r_nHealthMaximum = int(maxHealth); + r_Deployable.r_DRI.r_nHealthCurrent = int(maxHealth); + r_Deployable.r_nHealth = r_Deployable.r_DRI.r_nHealthMaximum; + r_Deployable.bNetDirty = true; + r_Deployable.r_DRI.bNetDirty = true; + } + } + } + //return; +} + +simulated function InterruptOtherDevices(TgPawn TgP) +{ + super.InterruptOtherDevices(TgP); + // End:0x5F + if(int(Role) == int(ROLE_Authority)) + { + // End:0x5F + if(TgP != none) + { + TgP.InterruptDeviceFiringByClass(Class'TgGame.TgDevice_RocketBoots'); + } + } + //return; +} + +simulated state DeviceFiring +{ + simulated function FirePreHitDelay() + { + local TgPawn TgPOwner; + + super.FirePreHitDelay(); + // End:0x62 + if(int(Role) == int(ROLE_Authority)) + { + TgPOwner = TgPawn(Owner); + // End:0x62 + if(r_Deployable != none) + { + // End:0x62 + if(TgPOwner != none) + { + InitMaxHealth(); + } + } + } + //return; + } + stop; +} + +defaultproperties +{ + m_bDeployAtFeetOnFailure=true + m_bCooldownAfterDeployDeath=true + m_fBottomlessPitCheck=5000.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_BarrierReef.uc b/exported/TgGame/Classes/TgDevice_BarrierReef.uc new file mode 100755 index 00000000..842700a7 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_BarrierReef.uc @@ -0,0 +1,8 @@ +class TgDevice_BarrierReef extends TgDevice_ShellShieldMod + native(Devices) + hidecategories(Navigation); + +var int m_nHitsNeededOnCooldown; + +// Export UTgDevice_BarrierReef::execApplyDamageTakenEffect(FFrame&, void* const) +native function int ApplyDamageTakenEffect(int totalDamage); diff --git a/exported/TgGame/Classes/TgDevice_BarrierTankInhand.uc b/exported/TgGame/Classes/TgDevice_BarrierTankInhand.uc new file mode 100755 index 00000000..9f22571c --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_BarrierTankInhand.uc @@ -0,0 +1,229 @@ +class TgDevice_BarrierTankInhand extends TgDevice + native(ChampBarrierTank) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var TgPawn_BarrierTank m_CachedBarrierTankPawn; +var Vector m_vProjectileSpawnOffset2; +var Vector m_vProjectileSpawnOffset3; +//var delegate __InterruptFiringDelegate__Delegate; + +// Export UTgDevice_BarrierTankInhand::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +// Export UTgDevice_BarrierTankInhand::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +simulated event Vector GetProjectileSpawnOffset() +{ + // End:0x1C + if(m_nBurstShotsRemaining == 0) + { + return m_vProjectileSpawnOffset3; + } + else + { + // End:0x38 + if(m_nBurstShotsRemaining == 1) + { + return m_vProjectileSpawnOffset2; + } + else + { + return m_vProjectileSpawnOffset; + } + } + //return ReturnValue; +} + +simulated function int GetProjectileIDOverride(int ProjectileIndex) +{ + // End:0x18 + if(m_nBurstShotsRemaining == 0) + { + return 628; + } + else + { + // End:0x30 + if(m_nBurstShotsRemaining == 1) + { + return 627; + } + else + { + return 620; + } + } + //return ReturnValue; +} + +simulated event SetAmmo(int AmmoCount, optional int ClipSize = -1, optional bool bShouldValidate = false, optional int ValidationIDOverride = 0) +{ + super.SetAmmo(AmmoCount, ClipSize); + // End:0x9E + if((int(Role) == int(ROLE_Authority)) && HasCachedBarrierTankPawn()) + { + m_CachedBarrierTankPawn.r_nInhandAmmoRemaining = GetCurrentAmmoAmount(); + m_CachedBarrierTankPawn.bNetDirty = true; + } + //return; +} + +simulated function bool HasCachedBarrierTankPawn() +{ + // End:0x2B + if(m_CachedBarrierTankPawn == none) + { + m_CachedBarrierTankPawn = TgPawn_BarrierTank(Instigator); + } + return m_CachedBarrierTankPawn != none; + //return ReturnValue; +} + +simulated function InterruptLockoutTime() +{ + //return; +} + +simulated delegate InterruptFiringDelegate() +{ + local TgDeviceFire FireMode; + local float fTruePostHitDelay; + + // End:0xD6 + if((IsFiring()) && m_nBurstShotsRemaining > 0) + { + // End:0x3C + if(int(Role) == int(ROLE_AutonomousProxy)) + { + ClientInterrupt(); + } + InterruptFiring(); + m_nBurstShotsRemaining = 0; + FireMode = GetCurrentFire(); + // End:0x9D + if(FireMode != none) + { + fTruePostHitDelay = FireMode.GetPostHitDelay(); + } + // End:0xBF + if(fTruePostHitDelay <= 0.0000000) + { + fTruePostHitDelay = 0.8000000; + } + SetTimer(fTruePostHitDelay, false, 'InterruptLockoutTime'); + } + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x54 + case 16251: + // End:0x5C + case 16250: + // End:0x64 + case 16248: + // End:0xA1 + case 16252: + Dev.RegisterDelegate(2, InterruptFiringDelegate); + // End:0xA4 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x54 + case 16251: + // End:0x5C + case 16250: + // End:0x64 + case 16248: + // End:0xA1 + case 16252: + Dev.UnregisterDelegate(2, InterruptFiringDelegate); + // End:0xA4 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated function SelfSlowTimer() +{ + //return; +} + +simulated state DeviceFiring +{ + simulated function FirePreHitDelay() + { + local TgDeviceFire FireMode; + local float fDuration; + + super.FirePreHitDelay(); + FireMode = GetCurrentFire(); + // End:0x6D + if(FireMode != none) + { + fDuration = FireMode.GetCustomValue4(); + SetTimer(fDuration, false, 'SelfSlowTimer'); + } + //return; + } + stop; +} + +defaultproperties +{ + m_vProjectileSpawnOffset2=(X=30.0000000,Y=16.0000000,Z=-8.0000000) + m_vProjectileSpawnOffset3=(X=30.0000000,Y=9.6000000,Z=-9.6000000) + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_ReticuleType=EReticuleType.RETICULE_Precise + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_bUsesBurstFire=true + m_bOnlyFirstBurstCostsAmmo=true + m_vMeshViewOffset=(X=17.0000000,Y=0.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_fMeshFOV=90.0000000 + m_vProjectileSpawnOffset=(X=30.0000000,Y=11.2000000,Z=-6.4000000) + m_fAltFireLockOutTime=0.0000000 + m_nBurstTotalShots=3 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_BarrierTankInhand' + m_nLinkedDeviceIDs[0]=16251 + m_nLinkedDeviceIDs[1]=16250 + m_nLinkedDeviceIDs[2]=16248 + m_nLinkedDeviceIDs[3]=16252 + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ftLowMag",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H200ftLowMag",Distance=3200.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Inara.DeviceInhand' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.BasicForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Billow.uc b/exported/TgGame/Classes/TgDevice_Billow.uc new file mode 100755 index 00000000..bb914ac8 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Billow.uc @@ -0,0 +1,79 @@ +class TgDevice_Billow extends TgDevice + native(ChampDarklord) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; + +// Export UTgDevice_Billow::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +simulated event bool CanBeCanceled() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldMountCancelFiring() +{ + return true; + //return ReturnValue; +} + +simulated event bool CanJumpWhileFiring() +{ + return true; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x39 + if((IsFiring()) && Current.m_nDeviceType == 11077) + { + return true; + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} + +simulated function UpdateOutroLockoutTime() +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x4C + if(FireMode != none) + { + m_fOutroLockoutTime = FireMode.GetCustomValue1(); + } + //return; +} + +simulated state DeviceFiring +{ + simulated function EndState(name NextStateName) + { + super.EndState(NextStateName); + // End:0x59 + if(Instigator != none) + { + Instigator.Velocity.Z = 0.0000000; + } + //return; + } + stop; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit + m_bUsesOutroLockout=true + m_fOutroLockoutTime=0.4000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_BladesInhand.uc b/exported/TgGame/Classes/TgDevice_BladesInhand.uc new file mode 100755 index 00000000..ed5184e1 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_BladesInhand.uc @@ -0,0 +1,78 @@ +class TgDevice_BladesInhand extends TgDevice + native(ChampBlades) + hidecategories(Navigation); + +var bool m_bFirstShotInBurst; + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x65 + if(Current.m_bHandDevice && ((IsFiring()) || IsTimerActive('FirePreHitDelay')) || IsTimerActive('FirePostHitDelay')) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated function FireAmmunition() +{ + super.FireAmmunition(); + m_bFirstShotInBurst = false; + //return; +} + +simulated function int GetProjectileIDOverride(int ProjectileIndex) +{ + // End:0x15 + if(!m_bFirstShotInBurst) + { + return 624; + } + return 0; + //return ReturnValue; +} + +state DeviceFiring +{ + simulated function StartFiringLogic() + { + m_bFirstShotInBurst = true; + super.StartFiringLogic(); + //return; + } + stop; +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_ReticuleType=EReticuleType.RETICULE_Maeve + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_bUsesBurstFire=true + m_vMeshViewOffset=(X=15.0000000,Y=0.0000000,Z=-4.0000000) + m_fWeaponBob=0.0000000 + m_fMeshFOV=77.0000000 + m_vProjectileSpawnOffset=(X=21.0000000,Y=0.0000000,Z=-4.0000000) + m_nBurstTotalShots=2 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_SkyeInHand' + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[2]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[2]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[1]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[1]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.BasicForceFeedback' + m_ForceFeedbackStopReload=ForceFeedbackWaveform'gp_forcefeedback.StandardReload' + m_AccuracySettings=(bUsesAdvancedAccuracy=true,fMaxAccuracy=1.0000000,fMinAccuracy=0.9000000,fAccuracyLossPerShot=0.0100000,fAccuracyGainPerSec=0.6000000,fAccuracyGainDelay=0.2000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_BladesInhandAltFire.uc b/exported/TgGame/Classes/TgDevice_BladesInhandAltFire.uc new file mode 100755 index 00000000..0ac511d8 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_BladesInhandAltFire.uc @@ -0,0 +1,23 @@ +class TgDevice_BladesInhandAltFire extends TgDevice + native(ChampBlades) + hidecategories(Navigation); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x65 + if(Current.m_bHandDevice && ((IsFiring()) || IsTimerActive('FirePreHitDelay')) || IsTimerActive('FirePostHitDelay')) + { + return true; + } + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_ReticuleType=EReticuleType.RETICULE_Precise + m_bAimThroughReticule=true + m_vMeshViewOffset=(X=15.0000000,Y=0.0000000,Z=-4.0000000) + m_fWeaponBob=0.0000000 + m_vProjectileSpawnOffset=(X=10.0000000,Y=8.0000000,Z=-7.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_BlastShot.uc b/exported/TgGame/Classes/TgDevice_BlastShot.uc new file mode 100755 index 00000000..0108bab7 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_BlastShot.uc @@ -0,0 +1,55 @@ +class TgDevice_BlastShot extends TgDevice + native(ChampCassie) + hidecategories(Navigation); + +event ScaleAbilityRadius() +{ + local TgPawn_Cassie cassieOwner; + local TgDeviceFire FireMode; + local TgProperty EffectRadiusProperty, EffectiveRadiusProperty; + local float EffectRadius, EffectiveRadius, radiusScale; + + radiusScale = 1.0000000; + FireMode = GetCurrentFire(); + // End:0x215 + if((FireMode != none) && radiusScale > 0.0000000) + { + EffectRadiusProperty = FireMode.GetProperty(6); + EffectiveRadiusProperty = FireMode.GetProperty(343); + // End:0x193 + if(EffectRadiusProperty != none) + { + EffectRadius = EffectRadiusProperty.m_fBase * radiusScale; + // End:0x193 + if(EffectRadius > 0.0000000) + { + FireMode.SetProperty(6, EffectRadius); + cassieOwner = TgPawn_Cassie(Owner); + // End:0x193 + if(cassieOwner != none) + { + cassieOwner.r_fRadiusForBlastShotFX = EffectRadius; + cassieOwner.bNetDirty = true; + } + } + } + // End:0x215 + if(EffectiveRadiusProperty != none) + { + EffectiveRadius = EffectiveRadiusProperty.m_fBase * radiusScale; + // End:0x215 + if(EffectiveRadius > 0.0000000) + { + FireMode.SetProperty(343, EffectiveRadius); + } + } + } + //return; +} + +defaultproperties +{ + m_bAimThroughReticule=true + m_vProjectileSpawnOffset=(X=15.0000000,Y=7.0000000,Z=-13.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Cassie.DeviceBlastShot' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Blink.uc b/exported/TgGame/Classes/TgDevice_Blink.uc new file mode 100755 index 00000000..39a41634 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Blink.uc @@ -0,0 +1,149 @@ +class TgDevice_Blink extends TgDevice + native(ChampEvie) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var Vector r_vPreviousLocation; +var bool c_bWaitingForServerTeleport; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_vPreviousLocation; +} + +// Export UTgDevice_Blink::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +// Export UTgDevice_Blink::execCanBeCrippled(FFrame&, void* const) +native function bool CanBeCrippled(); + +// Export UTgDevice_Blink::execMustBeOnGroundToFire(FFrame&, void* const) +native function bool MustBeOnGroundToFire(); + +// Export UTgDevice_Blink::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +simulated function DeviceRestart() +{ + super.DeviceRestart(); + r_vPreviousLocation = vect(0.0000000, 0.0000000, 0.0000000); + //return; +} + +function AuthStartCooldown(optional int nMode = -1, optional float fCooldownTimeOverride = -1.0000000) +{ + super.AuthStartCooldown(nMode, fCooldownTimeOverride); + r_vPreviousLocation = vect(0.0000000, 0.0000000, 0.0000000); + bNetDirty = true; + //return; +} + +simulated function InterruptOtherDevices(TgPawn TgP) +{ + super.InterruptOtherDevices(TgP); + // End:0x5F + if(int(Role) == int(ROLE_Authority)) + { + // End:0x5F + if(TgP != none) + { + TgP.InterruptDeviceFiringByClass(Class'TgGame.TgDevice_IceBlock'); + } + } + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x4A + if(((IsFiring()) && Current != none) && Current.m_nDeviceType == 11077) + { + return true; + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} + +function RequireHardReset() +{ + InterruptFiring(); + // End:0x41 + if(m_bIsSecondaryFire) + { + ClearTimer('AlternateStartCooldown'); + m_bIsSecondaryFire = false; + AlternateStartCooldown(); + } + c_bWaitingForServerTeleport = false; + //return; +} + +// Export UTgDevice_Blink::execCanFireIfLeftMouseDown(FFrame&, void* const) +native function bool CanFireIfLeftMouseDown(); + +simulated function int GetAimAssistPriority() +{ + // End:0x10 + if(IsInTargetingMode()) + { + return 3; + } + return 0; + //return ReturnValue; +} + +simulated event bool CanDeviceStartFiringNow(byte FireModeNum, AimData Aim, bool bDebugRelevant, optional out TgObject.EDeviceFailType failType) +{ + // End:0x10 + if(c_bWaitingForServerTeleport) + { + return false; + } + return super.CanDeviceStartFiringNow(FireModeNum, Aim, bDebugRelevant, failType); + //return ReturnValue; +} + +simulated function OnServerTeleportTimeout() +{ + c_bWaitingForServerTeleport = false; + //return; +} + +reliable client simulated event ClientOnServerTeleported() +{ + c_bWaitingForServerTeleport = false; + ClearTimer('OnServerTeleportTimeout'); + //return; +} + +simulated state DeviceFiring +{ + simulated function EndState(name NextStateName) + { + super.EndState(NextStateName); + // End:0x65 + if((int(Role) == int(ROLE_Authority)) && !IsTimerActive('AlternateStartCooldown')) + { + r_vPreviousLocation = vect(0.0000000, 0.0000000, 0.0000000); + bNetDirty = true; + } + //return; + } + stop; +} + +defaultproperties +{ + m_fDeployZForgiveness=580.0000000 + m_fBottomlessPitCheck=5000.0000000 + m_AimAssistKeyframesMagnetVert=none + m_AimAssistKeyframesMagnetHoriz=none + m_AimAssistKeyframesFriction=none + m_AimAssistKeyframesTrackingAccHoriz=none + m_AimAssistKeyframesTrackingAngleHoriz=none + m_AimAssistKeyframesTrackingAccVert=none + m_AimAssistKeyframesTrackingAngleVert=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Blossom.uc b/exported/TgGame/Classes/TgDevice_Blossom.uc new file mode 100755 index 00000000..0a927fc2 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Blossom.uc @@ -0,0 +1,2 @@ +class TgDevice_Blossom extends TgDevice_PassiveAura + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_BombKingDetonator.uc b/exported/TgGame/Classes/TgDevice_BombKingDetonator.uc new file mode 100755 index 00000000..ac8ec2df --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_BombKingDetonator.uc @@ -0,0 +1,66 @@ +class TgDevice_BombKingDetonator extends TgDevice + native(ChampBombKing) + hidecategories(Navigation); + +var bool m_bDetonatePoppyBombs; +var bool m_bInFalseFireRetryPeriod; +var float m_fFalseFireRetryStart; +var const float m_fFalseFireRetryTime; + +// Export UTgDevice_BombKingDetonator::execGetCurrentFire(FFrame&, void* const) +native function TgDeviceFire GetCurrentFire(); + +// Export UTgDevice_BombKingDetonator::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated function bool ShouldInterruptMount() +{ + return true; + //return ReturnValue; +} + +simulated event HandleFalseFireRecory() +{ + local TgPawn PawnOwner; + local TgDevice_BombKingInhand inhandDev; + + // End:0xEB + if(m_bInFalseFireRetryPeriod && (m_fFalseFireRetryStart + m_fFalseFireRetryTime) <= WorldInfo.TimeSeconds) + { + super.HandleFalseFireRecory(); + PawnOwner = TgPawn(Owner); + // End:0xDC + if(PawnOwner != none) + { + inhandDev = TgDevice_BombKingInhand(PawnOwner.GetDeviceByEqPoint(1)); + // End:0xDC + if(inhandDev != none) + { + inhandDev.ServerRestoreBombs(); + } + } + m_bInFalseFireRetryPeriod = false; + } + else + { + m_bInFalseFireRetryPeriod = true; + m_fFalseFireRetryStart = WorldInfo.TimeSeconds; + } + //return; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + m_bInFalseFireRetryPeriod = false; + super.StartFiringLogic(); + //return; + } + stop; +} + +defaultproperties +{ + m_fFalseFireRetryTime=0.3000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_BombKingInhand.uc b/exported/TgGame/Classes/TgDevice_BombKingInhand.uc new file mode 100755 index 00000000..9db3954f --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_BombKingInhand.uc @@ -0,0 +1,854 @@ +class TgDevice_BombKingInhand extends TgDevice_DualWield + native(ChampBombKing) + hidecategories(Navigation); + +struct native StickyBombPendingDetonate +{ + var int nProjID; + var int nDeployID; + var Vector vExplodeLocation; + + structdefaultproperties + { + nProjID=0 + nDeployID=0 + vExplodeLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +var bool r_bHasActiveProjectile; +var bool m_bInDetonationMode; +var array m_PendingDetonations; +var array m_PendingProjectileConversions; +var const float m_fValidationTolerance; +//var delegate __DetonatorFiringDelegate__Delegate; + +replication +{ + // Pos:0x000 + if(((int(Role) == int(ROLE_Authority)) && bNetDirty) && !bNetInitial) + r_bHasActiveProjectile; +} + +// Export UTgDevice_BombKingInhand::execValidateStickyBombExplosion(FFrame&, void* const) +native function bool ValidateStickyBombExplosion(TgProj_BombKingStickyBomb Proj, TgDeploy_BombKingStickyBomb dep, Vector vExplodeLocation, Vector vVelocity); + +simulated function RemovePendingConversion(TgProjectile Proj, int deployID) +{ + local int I, J, K; + local TgPawn PawnOwner; + local TgProj_BombKingStickyBomb StickyBombProj; + local TgRepInfo_Player PRI; + local TgDeploy_BombKingStickyBomb StickyBombDeployable; + + PawnOwner = TgPawn(Owner); + // End:0x377 + if(PawnOwner != none) + { + I = m_PendingProjectileConversions.Length - 1; + J0x42: + + // End:0x377 [Loop If] + if(I >= 0) + { + // End:0x85 + if(m_PendingProjectileConversions[I] == none) + { + m_PendingProjectileConversions.Remove(I, 1); + goto J0x369; + } + else + { + // End:0x369 + if(m_PendingProjectileConversions[I] == Proj) + { + StickyBombProj = TgProj_BombKingStickyBomb(Proj); + J = m_PendingDetonations.Length - 1; + J0xD9: + + // End:0x323 [Loop If] + if(J >= 0) + { + // End:0x315 + if((StickyBombProj != none) && m_PendingDetonations[J].nProjID == StickyBombProj.m_nClientFireRequestId) + { + m_PendingDetonations[J].nDeployID = deployID; + PRI = PawnOwner.GetPRI(); + // End:0x315 + if(PRI != none) + { + K = 0; + J0x1B5: + + // End:0x315 [Loop If] + if(K < PRI.m_DRIArray.Length) + { + // End:0x307 + if((PRI.m_DRIArray[K].r_DeployableOwner != none) && PRI.m_DRIArray[K].r_DeployableOwner.r_nDeployableId == deployID) + { + StickyBombDeployable = TgDeploy_BombKingStickyBomb(PRI.m_DRIArray[I].r_DeployableOwner); + // End:0x307 + if(StickyBombDeployable != none) + { + StickyBombDeployable.c_bSuppressExplosion = true; + } + } + K++; + // [Loop Continue] + goto J0x1B5; + } + } + } + J--; + // [Loop Continue] + goto J0xD9; + } + // End:0x351 + if(StickyBombProj != none) + { + StickyBombProj.SpecialHideProjectile(); + } + m_PendingProjectileConversions.Remove(I, 1); + } + } + J0x369: + + I--; + // [Loop Continue] + goto J0x42; + } + } + //return; +} + +simulated function ClientProcessBombDetonation(TgProj_BombKingStickyBomb stickyBomb) +{ + local int I; + local StickyBombPendingDetonate newPendingDetonation; + local bool bNeedsNewRecord; + + // End:0x2B + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + return; + } + // End:0x20D + if(stickyBomb != none) + { + bNeedsNewRecord = true; + I = m_PendingDetonations.Length - 1; + J0x5D: + + // End:0xD2 [Loop If] + if(I >= 0) + { + // End:0xC4 + if(m_PendingDetonations[I].nProjID == stickyBomb.m_nClientFireRequestId) + { + bNeedsNewRecord = false; + // [Explicit Break] + goto J0xD2; + } + I--; + // [Loop Continue] + goto J0x5D; + } + J0xD2: + + // End:0x189 + if(bNeedsNewRecord) + { + newPendingDetonation.nProjID = stickyBomb.m_nClientFireRequestId; + newPendingDetonation.nDeployID = 0; + newPendingDetonation.vExplodeLocation = stickyBomb.Location; + m_PendingDetonations.AddItem(newPendingDetonation); + } + stickyBomb.AltFireDetonate(); + ServerExplodeAtLocation(stickyBomb.m_nClientFireRequestId, 0, stickyBomb.Location, stickyBomb.Velocity); + } + //return; +} + +simulated function ClientTriggerBombDetonation() +{ + local int I; + local TgPawn PawnOwner; + local TgRepInfo_Player PRI; + local TgProj_BombKingStickyBomb StickyBombProj; + local TgDeploy_BombKingStickyBomb StickyBombDeployable; + + PawnOwner = TgPawn(Owner); + // End:0x378 + if(PawnOwner != none) + { + I = m_FiredProjectiles.Length - 1; + J0x42: + + // End:0xCD [Loop If] + if(I >= 0) + { + StickyBombProj = TgProj_BombKingStickyBomb(m_FiredProjectiles[I]); + // End:0xBF + if((StickyBombProj != none) && !StickyBombProj.m_bSuppressDeployableSpawn) + { + ClientProcessBombDetonation(StickyBombProj); + } + I--; + // [Loop Continue] + goto J0x42; + } + I = m_PendingProjectileConversions.Length - 1; + J0xE4: + + // End:0x184 [Loop If] + if(I >= 0) + { + StickyBombProj = TgProj_BombKingStickyBomb(m_PendingProjectileConversions[I]); + // End:0x176 + if((StickyBombProj != none) && !StickyBombProj.m_bSuppressDeployableSpawn) + { + m_PendingProjectileConversions.Remove(I, 1); + ClientProcessBombDetonation(StickyBombProj); + } + I--; + // [Loop Continue] + goto J0xE4; + } + UpdateActiveProjectiles(); + PRI = PawnOwner.GetPRI(); + // End:0x378 + if(PRI != none) + { + I = 0; + J0x1D2: + + // End:0x378 [Loop If] + if(I < PRI.m_DRIArray.Length) + { + StickyBombDeployable = TgDeploy_BombKingStickyBomb(PRI.m_DRIArray[I].r_DeployableOwner); + // End:0x36A + if(StickyBombDeployable != none) + { + // End:0x36A + if(!StickyBombDeployable.m_bInDestroyedState) + { + ServerExplodeAtLocation(0, PRI.m_DRIArray[I].r_nUniqueDeployableId, StickyBombDeployable.Location, StickyBombDeployable.Velocity); + // End:0x36A + if(StickyBombDeployable.c_Mesh != none) + { + StickyBombDeployable.c_Mesh.FxDeactivateGroup('AlwaysOn', 0); + } + } + } + I++; + // [Loop Continue] + goto J0x1D2; + } + } + } + //return; +} + +function ServerTriggerBombDetonation() +{ + local int I, J; + local TgPawn PawnOwner; + local TgRepInfo_Player PRI; + local TgProj_BombKingStickyBomb StickyBombProj; + local TgDeploy_BombKingStickyBomb StickyBombDep; + + m_bInDetonationMode = true; + PawnOwner = TgPawn(Owner); + // End:0x60 + if(PawnOwner != none) + { + PRI = PawnOwner.GetPRI(); + } + I = m_PendingDetonations.Length - 1; + J0x77: + + // End:0x3DF [Loop If] + if(I >= 0) + { + // End:0x28D + if((m_PendingDetonations[I].nDeployID > 0) && PRI != none) + { + J = 0; + J0xCE: + + // End:0x28A [Loop If] + if(J < PRI.m_DRIArray.Length) + { + StickyBombDep = TgDeploy_BombKingStickyBomb(PRI.m_DRIArray[J].r_DeployableOwner); + // End:0x27C + if(((StickyBombDep != none) && !StickyBombDep.m_bInDestroyedState) && m_PendingDetonations[I].nDeployID == PRI.m_DRIArray[J].r_nUniqueDeployableId) + { + SpecialInstantFire(m_PendingDetonations[I].vExplodeLocation); + StickyBombDep.r_bDetonated = true; + StickyBombDep.bNetDirty = true; + StickyBombDep.DestroyIt(); + } + J++; + // [Loop Continue] + goto J0xCE; + } + } + else + { + // End:0x3BC + if(m_PendingDetonations[I].nProjID > 0) + { + J = m_FiredProjectiles.Length - 1; + J0x2D0: + + // End:0x3BC [Loop If] + if(J >= 0) + { + StickyBombProj = TgProj_BombKingStickyBomb(m_FiredProjectiles[J]); + // End:0x3AE + if((StickyBombProj != none) && StickyBombProj.m_nClientFireRequestId == m_PendingDetonations[I].nProjID) + { + SpecialInstantFire(m_PendingDetonations[I].vExplodeLocation); + StickyBombProj.AltFireDetonate(); + } + J--; + // [Loop Continue] + goto J0x2D0; + } + } + } + m_PendingDetonations.Remove(I, 1); + I--; + // [Loop Continue] + goto J0x77; + } + UpdateActiveProjectiles(); + //return; +} + +reliable server function ServerExplodeAtLocation(int projID, int deployID, Vector explodeLocation, Vector vVelocity) +{ + local int I, J; + local TgPawn PawnOwner; + local TgDevice detonatorDev; + local TgRepInfo_Player PRI; + local TgProj_BombKingStickyBomb StickyBombProj; + local TgDeploy_BombKingStickyBomb StickyBombDeployable; + local StickyBombPendingDetonate newPendingDetonation; + local bool bNeedsNewRecord, bFoundProjectileRecord; + + PawnOwner = TgPawn(Owner); + bFoundProjectileRecord = false; + // End:0x660 + if((deployID > 0) || projID > 0) + { + // End:0x660 + if(PawnOwner != none) + { + PRI = PawnOwner.GetPRI(); + // End:0x660 + if(PRI != none) + { + I = 0; + J0x9A: + + // End:0x660 [Loop If] + if(I < PRI.m_DRIArray.Length) + { + StickyBombDeployable = TgDeploy_BombKingStickyBomb(PRI.m_DRIArray[I].r_DeployableOwner); + // End:0x652 + if((StickyBombDeployable != none) && !StickyBombDeployable.m_bInDestroyedState) + { + // End:0x37A + if(deployID > 0) + { + // End:0x377 + if(PRI.m_DRIArray[I].r_nUniqueDeployableId == deployID) + { + bNeedsNewRecord = true; + J = m_PendingDetonations.Length - 1; + J0x1C9: + + // End:0x229 [Loop If] + if(J >= 0) + { + // End:0x21B + if(m_PendingDetonations[J].nDeployID == deployID) + { + bNeedsNewRecord = false; + // [Explicit Break] + goto J0x229; + } + J--; + // [Loop Continue] + goto J0x1C9; + } + J0x229: + + // End:0x377 + if(bNeedsNewRecord) + { + newPendingDetonation.nProjID = 0; + newPendingDetonation.nDeployID = PRI.m_DRIArray[I].r_nUniqueDeployableId; + // End:0x300 + if(ValidateStickyBombExplosion(none, StickyBombDeployable, explodeLocation, vVelocity)) + { + newPendingDetonation.vExplodeLocation = explodeLocation; + } + else + { + newPendingDetonation.vExplodeLocation = StickyBombDeployable.Location; + } + newPendingDetonation.vExplodeLocation = explodeLocation; + m_PendingDetonations.AddItem(newPendingDetonation); + } + } + } + else + { + // End:0x652 + if(projID > 0) + { + // End:0x652 + if(StickyBombDeployable.r_nOriginalProjectileID == projID) + { + bFoundProjectileRecord = true; + bNeedsNewRecord = true; + J = m_PendingDetonations.Length - 1; + J0x3E4: + + // End:0x522 [Loop If] + if(J >= 0) + { + // End:0x46D + if(m_PendingDetonations[J].nDeployID == PRI.m_DRIArray[I].r_nUniqueDeployableId) + { + bNeedsNewRecord = false; + // [Explicit Break] + goto J0x522; + } + else + { + // End:0x514 + if(m_PendingDetonations[J].nProjID == projID) + { + m_PendingDetonations[J].nDeployID = PRI.m_DRIArray[I].r_nUniqueDeployableId; + bNeedsNewRecord = false; + // [Explicit Break] + goto J0x522; + } + } + J--; + // [Loop Continue] + goto J0x3E4; + } + J0x522: + + // End:0x652 + if(bNeedsNewRecord) + { + newPendingDetonation.nProjID = projID; + newPendingDetonation.nDeployID = PRI.m_DRIArray[I].r_nUniqueDeployableId; + // End:0x601 + if(ValidateStickyBombExplosion(none, StickyBombDeployable, explodeLocation, vVelocity)) + { + newPendingDetonation.vExplodeLocation = explodeLocation; + } + else + { + newPendingDetonation.vExplodeLocation = StickyBombDeployable.Location; + } + m_PendingDetonations.AddItem(newPendingDetonation); + } + } + } + } + } + I++; + // [Loop Continue] + goto J0x9A; + } + } + } + } + // End:0x8A6 + if((projID > 0) && !bFoundProjectileRecord) + { + I = m_FiredProjectiles.Length - 1; + J0x697: + + // End:0x8A6 [Loop If] + if(I >= 0) + { + StickyBombProj = TgProj_BombKingStickyBomb(m_FiredProjectiles[I]); + // End:0x898 + if((StickyBombProj != none) && StickyBombProj.m_nClientFireRequestId == projID) + { + bNeedsNewRecord = true; + J = m_PendingDetonations.Length - 1; + J0x72C: + + // End:0x798 [Loop If] + if(J >= 0) + { + // End:0x78A + if(m_PendingDetonations[J].nProjID == projID) + { + bNeedsNewRecord = false; + bFoundProjectileRecord = true; + // [Explicit Break] + goto J0x798; + } + J--; + // [Loop Continue] + goto J0x72C; + } + J0x798: + + // End:0x898 + if(bNeedsNewRecord) + { + newPendingDetonation.nProjID = projID; + newPendingDetonation.nDeployID = 0; + // End:0x83B + if(ValidateStickyBombExplosion(StickyBombProj, none, explodeLocation, vVelocity)) + { + newPendingDetonation.vExplodeLocation = explodeLocation; + } + else + { + newPendingDetonation.vExplodeLocation = StickyBombProj.Location; + } + m_PendingDetonations.AddItem(newPendingDetonation); + bFoundProjectileRecord = true; + } + } + I--; + // [Loop Continue] + goto J0x697; + } + } + // End:0x92C + if(PawnOwner != none) + { + detonatorDev = PawnOwner.GetDeviceByEqPoint(16); + // End:0x92C + if(m_bInDetonationMode || (detonatorDev != none) && detonatorDev.IsFiring()) + { + ServerTriggerBombDetonation(); + } + } + //return; +} + +simulated event SpecialInstantFire(Vector explodeLocation) +{ + local AimData Aim; + local TgDeviceFire currDevFire; + local TgRepInfo_Game GRI; + local int I; + + PendingImpactList.Length = 0; + Aim.StartTrace = explodeLocation; + Aim.EndTrace = explodeLocation; + currDevFire = m_FireMode[1]; + // End:0x132 + if(currDevFire != none) + { + GRI = TgRepInfo_Game(WorldInfo.GRI); + currDevFire.CalcWeaponModeFire(Instigator, Aim, PendingImpactList, false, ((GRI != none) && GRI.r_bUseInstantFireMeshTrace) && m_bDoNotAllowHeadShots); + } + I = 0; + J0x13D: + + // End:0x1CA [Loop If] + if(I < PendingImpactList.Length) + { + // End:0x1BC + if(PendingImpactList[I].HitActor != none) + { + currDevFire.ApplyHit(PendingImpactList[I], Instigator); + } + I++; + // [Loop Continue] + goto J0x13D; + } + UpdateIndex(); + //return; +} + +reliable client simulated function ClientRestoreBombs() +{ + local TgPawn PawnOwner; + local TgRepInfo_Player PRI; + local TgProj_BombKingStickyBomb StickyBombProj; + local TgDeploy_BombKingStickyBomb StickyBombDeployable; + local int I, J; + + // End:0x461 + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + I = m_PendingDetonations.Length - 1; + J0x40: + + // End:0x461 [Loop If] + if(I >= 0) + { + J = m_FiredProjectiles.Length - 1; + J0x66: + + // End:0x1D4 [Loop If] + if(J >= 0) + { + StickyBombProj = TgProj_BombKingStickyBomb(m_FiredProjectiles[J]); + // End:0x1C6 + if(((StickyBombProj != none) && !StickyBombProj.m_bIsShutDown) && StickyBombProj.m_nClientFireRequestId == m_PendingDetonations[I].nProjID) + { + // End:0x1C6 + if((StickyBombProj.c_Mesh != none) && StickyBombProj.m_bSuppressDeployableSpawn) + { + StickyBombProj.m_bSuppressDeployableSpawn = false; + StickyBombProj.c_Mesh.FxActivateGroup('AlwaysOn', 0); + } + } + J--; + // [Loop Continue] + goto J0x66; + } + PawnOwner = TgPawn(Owner); + // End:0x43E + if(PawnOwner != none) + { + PRI = PawnOwner.GetPRI(); + // End:0x43E + if(PRI != none) + { + J = 0; + J0x242: + + // End:0x43E [Loop If] + if(J < PRI.m_DRIArray.Length) + { + StickyBombDeployable = TgDeploy_BombKingStickyBomb(PRI.m_DRIArray[J].r_DeployableOwner); + // End:0x430 + if(((StickyBombDeployable != none) && !StickyBombDeployable.m_bInDestroyedState) && StickyBombDeployable.c_Mesh != none) + { + // End:0x430 + if((PRI.m_DRIArray[J].r_nUniqueDeployableId == m_PendingDetonations[I].nDeployID) || StickyBombDeployable.r_nOriginalProjectileID == m_PendingDetonations[I].nProjID) + { + StickyBombDeployable.c_bSuppressExplosion = false; + StickyBombDeployable.c_Mesh.FxActivateGroup('AlwaysOn', 0); + } + } + J++; + // [Loop Continue] + goto J0x242; + } + } + } + m_PendingDetonations.Remove(I, 1); + I--; + // [Loop Continue] + goto J0x40; + } + } + //return; +} + +function ServerRestoreBombs() +{ + ClientRestoreBombs(); + J0x0A: + + // End:0x2A [Loop If] + if(m_PendingDetonations.Length > 0) + { + m_PendingDetonations.Remove(0, 1); + // [Loop Continue] + goto J0x0A; + } + m_bInDetonationMode = false; + //return; +} + +simulated function AddProjectileWaitingForDeployable(TgProj_BombKingStickyBomb stickyBomb) +{ + // End:0x96 + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + // End:0x96 + if(((stickyBomb != none) && !stickyBomb.c_bReadyToHide) && m_PendingProjectileConversions.Find(stickyBomb) == -1) + { + m_PendingProjectileConversions.AddItem(stickyBomb); + } + } + //return; +} + +simulated function UpdateActiveProjectiles(optional TgProjectile Proj) +{ + local int I, J; + local TgProj_BombKingStickyBomb stickyBomb; + + m_FiredProjectiles.AddItem(Proj); + I = 0; + J0x22: + + // End:0x220 [Loop If] + if(I < m_FiredProjectiles.Length) + { + // End:0x212 + if((((m_FiredProjectiles[I] == none) || m_FiredProjectiles[I].m_bHasExploded) || m_FiredProjectiles[I].bDeleteMe) || m_FiredProjectiles[I].m_bIsShutDown) + { + // End:0x1FB + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + stickyBomb = TgProj_BombKingStickyBomb(m_FiredProjectiles[I]); + // End:0x1FB + if(stickyBomb != none) + { + J = m_PendingDetonations.Length - 1; + J0x152: + + // End:0x1FB [Loop If] + if(J >= 0) + { + // End:0x1ED + if((m_PendingDetonations[J].nDeployID == 0) && stickyBomb.m_nClientFireRequestId == m_PendingDetonations[J].nProjID) + { + m_PendingDetonations.Remove(J, 1); + } + J--; + // [Loop Continue] + goto J0x152; + } + } + } + m_FiredProjectiles.Remove(I--, 1); + } + I++; + // [Loop Continue] + goto J0x22; + } + // End:0x25A + if(m_FiredProjectiles.Length > 0) + { + // End:0x257 + if(!r_bHasActiveProjectile) + { + r_bHasActiveProjectile = true; + bNetDirty = true; + } + } + else + { + // End:0x27F + if(r_bHasActiveProjectile) + { + r_bHasActiveProjectile = false; + bNetDirty = true; + } + } + //return; +} + +simulated delegate DetonatorFiringDelegate() +{ + // End:0x36 + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + ClientTriggerBombDetonation(); + } + else + { + // End:0x6C + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + ServerTriggerBombDetonation(); + } + else + { + m_bInDetonationMode = true; + ClientTriggerBombDetonation(); + } + } + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super(TgDevice).LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x89 + case 14309: + Dev.RegisterDelegate(2, DetonatorFiringDelegate); + // End:0x8C + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super(TgDevice).LinkedDeviceUnequipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x89 + case 14309: + Dev.UnregisterDelegate(2, DetonatorFiringDelegate); + // End:0x8C + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + m_bInDetonationMode = false; + super.StartFiringLogic(); + //return; + } + stop; +} + +defaultproperties +{ + m_fValidationTolerance=48.0000000 + m_vProjectileSpawnOffset2=(X=30.0000000,Y=-9.0000000,Z=-10.0000000) + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAltFireEnabled=true + m_bUseDeviceMeshWhenTargeting=true + m_bPlayPutAway=true + m_bLogServerFireFailures=true + m_fWeaponBob=0.0000000 + m_fMeshFOV=65.0000000 + m_vProjectileSpawnOffset=(X=30.0000000,Y=9.0000000,Z=-10.0000000) + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_BombKingInhand' + m_nLinkedDeviceIDs[0]=14309 + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ftLowMag",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H200ftLowMag",Distance=3200.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_BombKing.DeviceStickyBomb' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.BasicForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_BombKingStickyBombExplosionDevice.uc b/exported/TgGame/Classes/TgDevice_BombKingStickyBombExplosionDevice.uc new file mode 100755 index 00000000..55cf27a1 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_BombKingStickyBombExplosionDevice.uc @@ -0,0 +1,7 @@ +class TgDevice_BombKingStickyBombExplosionDevice extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_BombKing.DeviceStickyBomb' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Booster.uc b/exported/TgGame/Classes/TgDevice_Booster.uc new file mode 100755 index 00000000..ab8df739 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Booster.uc @@ -0,0 +1,41 @@ +class TgDevice_Booster extends TgDevice + native(ChampDrogoz) + hidecategories(Navigation); + +// Export UTgDevice_Booster::execCanBeCrippled(FFrame&, void* const) +native function bool CanBeCrippled(); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return true; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return false; + //return ReturnValue; +} + +simulated event bool IsToggleDevice() +{ + return true; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + ClearTimer('FirePostHitDelay'); + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_BuckInhand.uc b/exported/TgGame/Classes/TgDevice_BuckInhand.uc new file mode 100755 index 00000000..6e691994 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_BuckInhand.uc @@ -0,0 +1,257 @@ +class TgDevice_BuckInhand extends TgDevice + hidecategories(Navigation); + +enum ReloadAnimType +{ + RAT_FirstShell, // 0 + RAT_LoopingShells, // 1 + RAT_PostReload, // 2 + RAT_MAX // 3 +}; + +var float m_fReloadScaleUsed; +var float m_fStartReloadTimestamp; +var float m_fFirstShellReloadTime; +var float m_fShellReloadTime; +var float m_fPostReloadTime; +var float m_fReloadTimer; +var int m_nProgressiveReloadTransactionID; +var bool m_bIsReloadingFirstShell; +var bool s_bPendingServerEndReload; + +simulated event bool Use() +{ + // End:0x88 + if(IsTimerActive('PreReloadTimer') && !m_bIsReloadingFirstShell) + { + ClearTimer('PreReloadTimer'); + PlayReloadAnim(2, m_fPostReloadTime * m_fReloadScaleUsed); + SetTimer(m_fPostReloadTime * m_fReloadScaleUsed, false, 'PostReloadTimer'); + ServerEndReloadForInhandFire(); + } + return super.Use(); + //return ReturnValue; +} + +reliable server function ServerEndReloadForInhandFire() +{ + // End:0x8B + if(IsTimerActive('PreReloadTimer')) + { + // End:0x7F + if(!m_bIsReloadingFirstShell) + { + ClearTimer('PreReloadTimer'); + PlayReloadAnim(2, m_fPostReloadTime * m_fReloadScaleUsed); + SetTimer(m_fPostReloadTime * m_fReloadScaleUsed, false, 'PostReloadTimer'); + } + else + { + s_bPendingServerEndReload = true; + } + } + //return; +} + +simulated event bool StartReload(optional bool bIgnoreCurrentAmmo = false) +{ + local TgDeviceFire FireMode; + local TgPawn TgP; + + // End:0x76 + if((((IsReloading()) || !bIgnoreCurrentAmmo && (GetCurrentAmmoAmount()) >= r_nMaxAmmoClipCount) || Instigator == none) || !Instigator.IsAliveAndWell()) + { + return false; + } + FireMode = GetCurrentFire(); + // End:0x9B + if(FireMode == none) + { + return false; + } + TgP = TgPawn(Instigator); + m_fReloadScaleUsed = ((TgP != none) ? TgP.GetReloadScale() : 1.0000000); + m_nProgressiveReloadTransactionID = GiveAmmoDelayedWithValidationRegen(0); + m_fStartReloadTimestamp = WorldInfo.TimeSeconds; + m_fShellReloadTime = FireMode.m_fAmmoClipPreReloadTime; + m_fFirstShellReloadTime = FireMode.GetCustomValue1(); + m_fPostReloadTime = FireMode.m_fAmmoClipPostReloadTime + ((int(Role) < int(ROLE_Authority)) ? 0.1000000 : 0.0000000); + m_bIsReloadingFirstShell = true; + // End:0x1FB + if(int(Role) < int(ROLE_Authority)) + { + ServerStartReload(); + } + else + { + s_bPendingServerEndReload = false; + } + m_fTotalReloadTime = ((m_fFirstShellReloadTime + (float(Max(0, (r_nMaxAmmoClipCount - (GetCurrentAmmoAmount())) - 1)) * m_fShellReloadTime)) + m_fPostReloadTime) * m_fReloadScaleUsed; + // End:0x396 + if(m_fTotalReloadTime > float(0)) + { + // End:0x2F3 + if((TgP != none) && TgP.m_WeaponMesh != none) + { + TgP.m_WeaponMesh.PlayReload(int(r_eEquippedAt), m_fTotalReloadTime, GetCurrentAmmoAmount()); + } + SetTimer(m_fTotalReloadTime, false, 'FullReloadTimer'); + PlayReloadAnim(0, m_fFirstShellReloadTime * m_fReloadScaleUsed); + // End:0x36D + if((m_fFirstShellReloadTime * m_fReloadScaleUsed) > 0.0000000) + { + SetTimer(m_fFirstShellReloadTime * m_fReloadScaleUsed, false, 'PreReloadTimer'); + } + else + { + PreReloadTimer(); + } + PlayNextSimulatedForceFeedbackWaveform(none, m_ForceFeedbackStartReload, m_fReloadScaleUsed); + } + NotifyDeviceEvent(1); + return true; + //return ReturnValue; +} + +simulated function PreReloadTimer() +{ + local TgDeviceFire FireMode; + local TgPawn_Character TgP; + local float fReloadTimeRemaining; + + FireMode = GetCurrentFire(); + m_bIsReloadingFirstShell = false; + // End:0x1AD + if(FireMode != none) + { + // End:0x8E + if(int(Role) == int(ROLE_Authority)) + { + TgP = TgPawn_Character(Instigator); + // End:0x8E + if(TgP != none) + { + TgP.DeviceOnReload(self); + } + } + PlayNextSimulatedForceFeedbackWaveform(m_ForceFeedbackStartReload, m_ForceFeedbackStopReload); + UpdateDelayedAmmoTransactionRegen(m_nProgressiveReloadTransactionID, 1); + // End:0x16B + if(((GetCurrentAmmoAmount()) >= r_nMaxAmmoClipCount) || (int(Role) == int(ROLE_Authority)) && s_bPendingServerEndReload) + { + fReloadTimeRemaining = m_fPostReloadTime * m_fReloadScaleUsed; + PlayReloadAnim(2, fReloadTimeRemaining); + // End:0x15E + if(fReloadTimeRemaining > 0.0000000) + { + SetTimer(fReloadTimeRemaining, false, 'PostReloadTimer'); + } + else + { + PostReloadTimer(); + } + } + else + { + SetTimer(m_fShellReloadTime * m_fReloadScaleUsed, false, 'PreReloadTimer'); + PlayReloadAnim(1, m_fShellReloadTime * m_fReloadScaleUsed); + } + } + //return; +} + +simulated function PlayReloadAnim(TgDevice_BuckInhand.ReloadAnimType rat, float ReloadTime) +{ + local TgPawn_Character TgP; + + TgP = TgPawn_Character(Instigator); + // End:0x106 + if(TgP != none) + { + // End:0xAC + if(TgP.m_WeaponMesh != none) + { + TgP.m_WeaponMesh.PlayReload(int(r_eEquippedAt), ReloadTime, GetCurrentAmmoAmount(), int(rat)); + } + // End:0x106 + if(int(Role) == int(ROLE_Authority)) + { + TgP.FlashReload(r_nDeviceInstanceId, ReloadTime, GetCurrentAmmoAmount(), int(rat)); + } + } + //return; +} + +simulated function PostReloadTimer() +{ + // End:0x5D + if(((int(Role) < int(ROLE_Authority)) && Instigator != none) && Instigator.IsLocallyControlled()) + { + ValidateDelayedAmmoTransactionRegen(m_nProgressiveReloadTransactionID, false); + } + //return; +} + +reliable server function ServerStartReload() +{ + // End:0x49 + if(!StartReload()) + { + GiveAmmoDelayedWithValidationRegen(0); + // End:0x49 + if(!IsReloading()) + { + ClientInterruptReload((GetCurrentAmmoAmount()) >= r_nMaxAmmoClipCount); + } + } + //return; +} + +reliable client simulated function ClientInterruptReload(optional bool bAllowAmmoFill = false) +{ + // End:0x12 + if(LogDebugInfo()) + { + } + // End:0x4A + if(self.IsTimerActive('PostReloadTimer')) + { + ValidateDelayedAmmoTransactionRegen(m_nProgressiveReloadTransactionID); + } + ClearTimer('PreReloadTimer'); + ClearTimer('PostReloadTimer'); + ClearTimer('FullReloadTimer'); + //return; +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_bConsolidateMultipleShots=true + m_vMeshViewOffset=(X=17.0000000,Y=0.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_fMeshFOV=77.0000000 + m_vProjectileSpawnOffset=(X=0.0000000,Y=15.0000000,Z=-20.0000000) + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_BuckInhand' + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetVert[1]=(KeyframeName="V100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetVert[2]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[2]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftlowx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[2]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[1]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[1]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Buck.DeviceInhand' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.HeavyForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Bunker.uc b/exported/TgGame/Classes/TgDevice_Bunker.uc new file mode 100755 index 00000000..6ce22d9b --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Bunker.uc @@ -0,0 +1,3 @@ +class TgDevice_Bunker extends TgDevice_BarricadeMod + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_Carapace.uc b/exported/TgGame/Classes/TgDevice_Carapace.uc new file mode 100755 index 00000000..beb1982a --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Carapace.uc @@ -0,0 +1,3 @@ +class TgDevice_Carapace extends TgDevice_ShellShieldMod + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_CassieInhand.uc b/exported/TgGame/Classes/TgDevice_CassieInhand.uc new file mode 100755 index 00000000..86a5fb8f --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_CassieInhand.uc @@ -0,0 +1,20 @@ +class TgDevice_CassieInhand extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_ReticuleType=EReticuleType.RETICULE_Precise + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=12.0000000,Y=1.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_fMeshFOV=77.0000000 + m_vProjectileSpawnOffset=(X=15.0000000,Y=7.0000000,Z=-13.0000000) + m_fAltFireLockOutTime=0.0000000 + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ftLowMag",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H200ftLowMag",Distance=3200.0000000) + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.BasicForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ChainLightning.uc b/exported/TgGame/Classes/TgDevice_ChainLightning.uc new file mode 100755 index 00000000..1bc66926 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ChainLightning.uc @@ -0,0 +1,54 @@ +class TgDevice_ChainLightning extends TgDevice_ArcingBeam + hidecategories(Navigation); + +var TgDevice m_CachedInhand; + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + local TgPawn TgP; + + // End:0x64 + if(m_CachedInhand == none) + { + TgP = TgPawn(Owner); + // End:0x64 + if(TgP != none) + { + m_CachedInhand = TgP.GetDeviceByEqPoint(1); + } + } + // End:0x94 + if(m_CachedInhand != none) + { + m_CachedInhand.SetFireMode(1, true); + } + super.BeginState(PreviousStateName); + //return; + } + + simulated function EndState(name NextStateName) + { + local TgPawn TgP; + + // End:0x64 + if(m_CachedInhand == none) + { + TgP = TgPawn(Owner); + // End:0x64 + if(TgP != none) + { + m_CachedInhand = TgP.GetDeviceByEqPoint(1); + } + } + // End:0x94 + if(m_CachedInhand != none) + { + m_CachedInhand.SetFireMode(0, true); + } + super.EndState(NextStateName); + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_ChainSequence.uc b/exported/TgGame/Classes/TgDevice_ChainSequence.uc new file mode 100755 index 00000000..5c0e54d1 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ChainSequence.uc @@ -0,0 +1,59 @@ +class TgDevice_ChainSequence extends TgDevice + abstract + native(Devices) + hidecategories(Navigation); + +var int m_nChainCount; +var float m_fChainResetTimer; +var const float m_fChainResetDuration; + +simulated event int GetChainMax() +{ + return 1; + //return ReturnValue; +} + +simulated function FireAmmunition() +{ + local int nChainMax; + + super.FireAmmunition(); + nChainMax = GetChainMax(); + // End:0x77 + if(nChainMax > 1) + { + m_nChainCount++; + // End:0x64 + if(m_nChainCount >= nChainMax) + { + m_nChainCount = 0; + OnChainReset(); + } + m_fChainResetTimer = m_fChainResetDuration; + } + //return; +} + +simulated function UpdateDesiredFireMode() +{ + // End:0x28 + if((GetChainMax()) > 1) + { + m_nDesiredFireMode = byte(m_nChainCount); + } + else + { + super.UpdateDesiredFireMode(); + } + //return; +} + +simulated event OnChainReset() +{ + //return; +} + +defaultproperties +{ + m_fChainResetDuration=5.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Charge.uc b/exported/TgGame/Classes/TgDevice_Charge.uc new file mode 100755 index 00000000..ef90ef01 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Charge.uc @@ -0,0 +1,514 @@ +class TgDevice_Charge extends TgDevice_ChainSequence + native(Devices) + hidecategories(Navigation); + +enum ChargeFiringType +{ + CFT_Fire, // 0 + CFT_PreFire, // 1 + CFT_PostFire, // 2 + CFT_MAX // 3 +}; + +enum ChargeStopOnHitType +{ + CSHT_None, // 0 + CSHT_AnyValidTarget, // 1 + CSHT_GodOnly, // 2 + CSHT_NotGod, // 3 + CSHT_MAX // 4 +}; + +var TgPawn.EChargeState m_eChargeState; +var TgDevice_Charge.ChargeStopOnHitType m_bStopOnHitType; +var TgDevice_Charge.ChargeFiringType m_ChargeTimingType; +var bool m_bUsePhysFlying; +var bool m_bUseDamageRadiusForHitProxy; +var bool m_bIgnoreHumanoids; +var bool m_bHitOnce; +var bool m_bApplyHitOnTouch; +var bool m_bApplyHitSpecialOnTouch; +var bool m_bIgnoreRange; +var bool m_bCharging; +var bool m_bStopOnAttachedForcefield; +var bool m_bInterruptDeviceIfChargeEnds; +var bool m_bUseDirectHitSpecial; +var bool m_bChargeBackward; +var bool m_bCanLeftClickCancel; +var bool m_bIgnoreMovementCorrection; +var TgCollisionProxy_Cylinder m_HitProxy; +var Vector m_vHitProxyRelativeLocation; +var Vector m_vHitProxySizeOffset; +var float s_fServerValidationSizeMultiplier; +var Rotator m_rLastChargeDirection; +var array s_AppliedList; +var array s_HitActors; + +// Export UTgDevice_Charge::execSetFireMode(FFrame&, void* const) +native function SetFireMode(int nFireModeNum, optional bool ForceSet = false); + +// Export UTgDevice_Charge::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +// Export UTgDevice_Charge::execServerValidateChargeHit(FFrame&, void* const) +native function bool ServerValidateChargeHit(Actor Other); + +simulated event ChargeTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + //return; +} + +simulated event ChargeUnTouch(Actor Other) +{ + //return; +} + +simulated event StartCharge() +{ + //return; +} + +simulated event EndCharge() +{ + //return; +} + +simulated event bool CanBeCanceled() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return true; + //return ReturnValue; +} + +simulated event float GetChargeRange() +{ + return ((m_bIgnoreRange) ? 0.0000000 : GetRange()); + //return ReturnValue; +} + +simulated event float GetChargeTime() +{ + local float fChargeTime; + + fChargeTime = 0.0000000; + switch(m_ChargeTimingType) + { + // End:0x3F + case 0: + fChargeTime = GetRefireTime(); + // End:0x7C + break; + // End:0x5C + case 1: + fChargeTime = GetFiringPreHitDelay(); + // End:0x7C + break; + // End:0x79 + case 2: + fChargeTime = GetFiringPostHitDelay(); + // End:0x7C + break; + // End:0xFFFF + default: + break; + } + return fChargeTime; + //return ReturnValue; +} + +simulated function float GetChargeSpeed() +{ + local float fRange, fChargeTime; + + fChargeTime = GetChargeTime(); + // End:0x50 + if(fChargeTime > 0.0000000) + { + fRange = GetChargeRange(); + return fRange / fChargeTime; + } + return 500.0000000; + //return ReturnValue; +} + +simulated function bool ShouldStopOnThisHit(Actor Other) +{ + local TgPawn OtherPawn; + + // End:0x29 + if((TgDeploy_ShieldFernando(Other) != none) && m_bStopOnAttachedForcefield) + { + return true; + } + switch(m_bStopOnHitType) + { + // End:0x46 + case 1: + return true; + // End:0xF5 + break; + // End:0x9B + case 2: + OtherPawn = TgPawn(Other); + return (OtherPawn != none) && OtherPawn.IsGod(); + // End:0xF5 + break; + // End:0xF2 + case 3: + OtherPawn = TgPawn(Other); + return (OtherPawn == none) || !OtherPawn.IsGod(); + // End:0xF5 + break; + // End:0xFFFF + default: + break; + } + return false; + //return ReturnValue; +} + +event ApplyDamageReduction(out ImpactInfo Impact) +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x84 + if((FireMode != none) && Instigator != none) + { + FireMode.AddEffectiveRangeReduction(Impact, Instigator, Instigator.Location); + } + //return; +} + +simulated function OnValidTargetTouched(Actor Other) +{ + //return; +} + +simulated function OnStoppedChargeOnHit(Actor Other) +{ + //return; +} + +simulated function Rotator GetChargeDirection() +{ + local AimData Aim; + + GetCachedAim(Aim); + // End:0x44 + if(m_bChargeBackward) + { + return Rotator(-Aim.AimVector); + } + else + { + return Rotator(Aim.AimVector); + } + //return ReturnValue; +} + +simulated function EnableCorrection() +{ + local TgPlayerController pController; + + pController = TgPlayerController(Instigator.Controller); + // End:0x61 + if(pController != none) + { + pController.bAcceptSendCorrections = true; + } + //return; +} + +function ApplyTouchHit(TgPawn InstigatorPawn, Vector vHitLocation, Vector vHitNormal, Actor Target) +{ + local ImpactInfo Impact; + local TgDeviceFire FireMode; + + // End:0x291 + if(m_bApplyHitSpecialOnTouch || m_bApplyHitOnTouch) + { + FireMode = GetCurrentFire(); + Impact.bDirectHit = m_bUseDirectHitSpecial; + Impact.DeviceModeReference = FireMode; + Impact.HitActor = Target; + Impact.HitLocation = vHitLocation; + Impact.HitNormal = vHitNormal; + Impact.StartTrace = ((Instigator != none) ? Instigator.Location : vect(0.0000000, 0.0000000, 0.0000000)); + Impact.RayDir = -Impact.HitNormal; + // End:0x1DA + if(m_bApplyHitSpecialOnTouch) + { + FireMode.ApplyHitSpecial(Target, Impact); + s_AppliedList.AddItem(Target); + } + // End:0x291 + if(m_bApplyHitOnTouch) + { + // End:0x291 + if(!m_bHitOnce || s_HitActors.Find(Target) == -1) + { + Impact.bDirectHit = true; + ApplyDamageReduction(Impact); + FireMode.ApplyHit(Impact, Instigator); + s_HitActors.AddItem(Target); + } + } + } + //return; +} + +simulated event bool CanFiringBeCanceledByLeftMouse() +{ + return m_bCanLeftClickCancel && CanBeCanceled(); + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x2A + if(Current.m_nDeviceType == 11077) + { + return false; + } + return super(TgDevice).ShouldLockFiring(Current); + //return ReturnValue; +} + +simulated state DeviceFiring +{ + ignores OnValidTargetTouched; + + simulated function RestartFireLoop(bool bRefire) + { + super.RestartFireLoop(bRefire); + // End:0x79 + if(((!bRefire && IsFiring()) && (int(m_ChargeTimingType) == int(0)) || int(m_ChargeTimingType) == int(1)) && !m_bIsFireHoldDevice) + { + StartCharge(); + } + //return; + } + + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + // End:0x19 + if(m_bIsFireHoldDevice) + { + return; + } + // End:0x3A + if(int(m_ChargeTimingType) == int(1)) + { + EndCharge(); + } + else + { + // End:0x58 + if(int(m_ChargeTimingType) == int(2)) + { + StartCharge(); + } + } + //return; + } + + simulated function StopFiringLogic() + { + EndCharge(); + super.StopFiringLogic(); + //return; + } + + simulated event StartCharge() + { + local TgPawn InstigatorPawn; + local float fSpeed, fRange, fChargeTime; + + s_AppliedList.Length = 0; + s_HitActors.Length = 0; + InstigatorPawn = TgPawn(Instigator); + fChargeTime = GetChargeTime(); + // End:0x8A + if(m_bIgnoreMovementCorrection && InstigatorPawn != none) + { + InstigatorPawn.DisableMovementCorrection(5.0000000); + } + // End:0x230 + if((InstigatorPawn != none) && fChargeTime > 0.0000000) + { + m_bCharging = true; + fRange = GetChargeRange(); + fSpeed = GetChargeSpeed(); + m_rLastChargeDirection = GetChargeDirection(); + InstigatorPawn.StartPhysCharge(m_eChargeState, m_rLastChargeDirection,, fSpeed, fRange, m_bIgnoreHumanoids, m_bUsePhysFlying); + // End:0x230 + if(m_HitProxy != none) + { + m_HitProxy.SetTickIsDisabled(false); + // End:0x215 + if(m_HitProxy.Base != InstigatorPawn) + { + m_HitProxy.SetBase(InstigatorPawn); + m_HitProxy.SetHardAttach(true); + m_HitProxy.SetRelativeLocation(m_vHitProxyRelativeLocation); + } + m_HitProxy.SetCollision(true, false, false); + } + } + //return; + } + + simulated event EndCharge() + { + local TgPawn InstigatorPawn; + local TgDeviceFire FireMode; + local Actor IteratorA; + + // End:0x11 + if(!m_bCharging) + { + return; + } + InstigatorPawn = TgPawn(Instigator); + // End:0x6F + if(m_bIgnoreMovementCorrection && InstigatorPawn != none) + { + InstigatorPawn.DisableMovementCorrection(0.3000000); + } + // End:0xA7 + if(InstigatorPawn != none) + { + InstigatorPawn.EndPhysCharge(m_IsBeingInterrupted); + } + // End:0xF1 + if(m_HitProxy != none) + { + m_HitProxy.SetTickIsDisabled(true); + m_HitProxy.SetCollision(false, false, false); + } + // End:0x184 + if(int(Role) == int(ROLE_Authority)) + { + FireMode = GetCurrentFire(); + // End:0x16C + if(FireMode != none) + { + // End:0x16B + foreach s_AppliedList(IteratorA) + { + FireMode.RemoveHitSpecial(IteratorA, true); + } + } + s_AppliedList.Length = 0; + s_HitActors.Length = 0; + } + m_bCharging = false; + //return; + } + + simulated function Tick(float DeltaSeconds) + { + local TgPawn InstigatorPawn; + + super(Actor).Tick(DeltaSeconds); + InstigatorPawn = TgPawn(Instigator); + // End:0xBB + if(((((int(Role) == int(ROLE_Authority)) && m_bCharging) && m_bInterruptDeviceIfChargeEnds) && InstigatorPawn != none) && int(InstigatorPawn.r_eChargeState) != int(m_eChargeState)) + { + // End:0xB1 + if(LogDebugInfo()) + { + } + InterruptFiring(); + } + //return; + } + + simulated event ChargeTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) + { + local TgDeviceFire FireMode; + local TgPawn InstigatorPawn; + local bool bValidHitLocation; + + FireMode = GetCurrentFire(); + InstigatorPawn = TgPawn(Instigator); + // End:0x15A + if(((InstigatorPawn != none) && FireMode != none) && FireMode.IsValidTarget(Other)) + { + bValidHitLocation = InstigatorPawn.VerifyChargeHit(HitLocation, HitNormal, Other.Location, Other); + // End:0x15A + if(bValidHitLocation) + { + ApplyTouchHit(InstigatorPawn, HitLocation, HitNormal, Other); + OnValidTargetTouched(Other); + // End:0x15A + if(ShouldStopOnThisHit(Other)) + { + OnStoppedChargeOnHit(Other); + } + } + } + //return; + } + + simulated event ChargeUnTouch(Actor Other) + { + local int nIndex; + local TgDeviceFire FireMode; + + // End:0xB9 + if((int(Role) == int(ROLE_Authority)) && m_bApplyHitSpecialOnTouch) + { + nIndex = s_AppliedList.Find(Other); + // End:0xB9 + if(nIndex != -1) + { + FireMode = GetCurrentFire(); + // End:0xA4 + if(FireMode != none) + { + FireMode.RemoveHitSpecial(Other, true); + } + s_AppliedList.Remove(nIndex, 1); + } + } + //return; + } + + simulated function OnStoppedChargeOnHit(Actor Other) + { + // End:0x21 + if(int(Role) < int(ROLE_Authority)) + { + ClientInterrupt(); + } + else + { + InterruptFiring(); + } + //return; + } + stop; +} + +defaultproperties +{ + m_eChargeState=EChargeState.CHARGE_NoTurn + m_bUseDamageRadiusForHitProxy=true + m_bIgnoreHumanoids=true + m_bHitOnce=true + m_bApplyHitOnTouch=true + m_bInterruptDeviceIfChargeEnds=true + m_bCanLeftClickCancel=true + s_fServerValidationSizeMultiplier=2.0000000 + m_bConsumePowerPoolOnStartFire=true + m_bAlwaysStartCooldown=true + m_bForce3PViewWhileFiring=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ChargeBackward.uc b/exported/TgGame/Classes/TgDevice_ChargeBackward.uc new file mode 100755 index 00000000..5d21b924 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ChargeBackward.uc @@ -0,0 +1,9 @@ +class TgDevice_ChargeBackward extends TgDevice_Charge + native(Devices) + hidecategories(Navigation); + +defaultproperties +{ + m_ChargeTimingType=ChargeFiringType.CFT_PostFire + m_bChargeBackward=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ChargeBurst.uc b/exported/TgGame/Classes/TgDevice_ChargeBurst.uc new file mode 100755 index 00000000..2d6d24bb --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ChargeBurst.uc @@ -0,0 +1,52 @@ +class TgDevice_ChargeBurst extends TgDevice + native(ChampLazarus) + hidecategories(Navigation); + +// Export UTgDevice_ChargeBurst::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgPawn_Lazarus pLazarus; + + pLazarus = TgPawn_Lazarus(Instigator); + // End:0x53 + if(pLazarus != none) + { + m_nBurstTotalShots = pLazarus.m_nChargeNumber; + } + super.StartFiringLogic(); + //return; + } + + simulated function StopFiringLogic() + { + local TgPawn_Lazarus pLazarus; + local TgDeviceFire pFireMode; + + pFireMode = GetCurrentFire(); + pLazarus = TgPawn_Lazarus(Instigator); + // End:0xDD + if(pLazarus != none) + { + // End:0xDD + if(m_nBurstTotalShots > 1) + { + pLazarus.r_fAccumulatedDamage -= (float(m_nBurstTotalShots - 1) * pFireMode.GetCustomValue2()); + pLazarus.UpdateChargeNumber(); + pLazarus.bNetDirty = true; + } + } + //return; + } + stop; +} + +defaultproperties +{ + m_bCarryPreFireToPostFire=false + m_bUsesBurstFire=true + m_nBurstTotalShots=1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ChargeFernando.uc b/exported/TgGame/Classes/TgDevice_ChargeFernando.uc new file mode 100755 index 00000000..852575ed --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ChargeFernando.uc @@ -0,0 +1,40 @@ +class TgDevice_ChargeFernando extends TgDevice_Charge + hidecategories(Navigation); + +var float m_fCooldownReduction; + +simulated event bool CanBeCanceled() +{ + local float firePostHitTime; + + // End:0x4A + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0x4A + if(firePostHitTime > 0.5000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +function AuthStartCooldown(optional int nMode = -1, optional float fCooldownTimeOverride = -1.0000000) +{ + super(TgDevice).AuthStartCooldown(nMode, GetCurrentFire().GetCooldownTime() * (1.0000000 - m_fCooldownReduction)); + m_fCooldownReduction = 0.0000000; + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x3B + if((Current != none) && Current.r_nDeviceId == 11059) + { + return false; + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_CombatSlide.uc b/exported/TgGame/Classes/TgDevice_CombatSlide.uc new file mode 100755 index 00000000..1970f25a --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_CombatSlide.uc @@ -0,0 +1,120 @@ +class TgDevice_CombatSlide extends TgDevice_Charge + native(ChampLex) + hidecategories(Navigation); + +var(Slide) int m_nEyeheightAdjustmentWhileSliding; +var float m_fEyeHeightSmoothFactor; + +simulated event bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +// Export UTgDevice_CombatSlide::execShouldBlockReload(FFrame&, void* const) +native function bool ShouldBlockReload(TgDevice Dev, bool bIsAutoReload); + +simulated event bool CanBeCanceled() +{ + local float firePostHitTime, fLockOutTime; + local TgDeviceFire FireMode; + + // End:0xA9 + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + fLockOutTime = 0.5000000; + FireMode = GetCurrentFire(); + // End:0x90 + if(FireMode != none) + { + fLockOutTime = FireMode.GetCustomValue3(); + } + // End:0xA9 + if(firePostHitTime < fLockOutTime) + { + return false; + } + } + return true; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated event StartCharge() + { + local TgPawn_Character TgPC; + local TgDeviceFire FireMode; + + super.StartCharge(); + // End:0x125 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPawn_Character(Instigator); + // End:0x125 + if(TgPC != none) + { + // End:0x9B + if(m_nEyeheightAdjustmentWhileSliding != 0) + { + TgPC.BaseEyeHeight += float(m_nEyeheightAdjustmentWhileSliding); + } + else + { + FireMode = GetCurrentFire(); + // End:0xFD + if(FireMode != none) + { + TgPC.BaseEyeHeight += FireMode.GetCustomValue1(); + } + } + TgPC.m_fEyeHeightSmoothFactor = m_fEyeHeightSmoothFactor; + } + } + //return; + } + + simulated event EndCharge() + { + local TgPawn_Character TgPC; + local TgDeviceFire FireMode; + + super.EndCharge(); + // End:0x13A + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPawn_Character(Instigator); + // End:0x13A + if(TgPC != none) + { + // End:0x9B + if(m_nEyeheightAdjustmentWhileSliding != 0) + { + TgPC.BaseEyeHeight -= float(m_nEyeheightAdjustmentWhileSliding); + } + else + { + FireMode = GetCurrentFire(); + // End:0xFD + if(FireMode != none) + { + TgPC.BaseEyeHeight -= FireMode.GetCustomValue1(); + } + } + TgPC.m_fEyeHeightSmoothFactor = Class'TgGame.TgPawn'.default.m_fEyeHeightSmoothFactor; + } + } + //return; + } + stop; +} + +defaultproperties +{ + m_fEyeHeightSmoothFactor=4.0000000 + m_eChargeState=EChargeState.CHARGE_NoTurn_RotPawn + m_bCanLeftClickCancel=false + m_bForce3PViewWhileFiring=false + m_bMustBeOnGroundToFire=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Compensator.uc b/exported/TgGame/Classes/TgDevice_Compensator.uc new file mode 100755 index 00000000..e8b2fff2 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Compensator.uc @@ -0,0 +1,64 @@ +class TgDevice_Compensator extends TgDevice + hidecategories(Navigation); + +simulated function ApplyRecoilReduction(TgDevice Dev, bool bShouldApply) +{ + local TgDevice_ViktorInhand inhand; + + inhand = TgDevice_ViktorInhand(Dev); + // End:0x7E + if(inhand != none) + { + inhand.m_fADSRecoilMultiplier = ((bShouldApply) ? GetCurrentFire().GetCustomValue1() : 1.0000000); + } + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x6B + case 14127: + ApplyRecoilReduction(Dev, true); + // End:0x6E + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x6B + case 14127: + ApplyRecoilReduction(Dev, false); + // End:0x6E + break; + // End:0xFFFF + default: + break; + } + //return; +} + +defaultproperties +{ + m_nLinkedDeviceIDs[0]=14127 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_CosmicGrace.uc b/exported/TgGame/Classes/TgDevice_CosmicGrace.uc new file mode 100755 index 00000000..858cebc1 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_CosmicGrace.uc @@ -0,0 +1,9 @@ +class TgDevice_CosmicGrace extends TgDevice + native(ChampAstro) + hidecategories(Navigation); + +simulated event bool CanBeInterrupted() +{ + return true; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_Counter.uc b/exported/TgGame/Classes/TgDevice_Counter.uc new file mode 100755 index 00000000..78c4f31e --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Counter.uc @@ -0,0 +1,80 @@ +class TgDevice_Counter extends TgDevice + native(ChampDarklord) + hidecategories(Navigation); + +var bool r_bInterruptAfterCounterAttack; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bInterruptAfterCounterAttack; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x3C + if((Current != none) && int(Current.r_eEquippedAt) == int(18)) + { + return false; + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} + +event bool CanTriggerCounterAttack() +{ + return IsTimerActive('FirePreHitDelay') && !IsTimerActive('CounterDelay'); + //return ReturnValue; +} + +function CounterDelay() +{ + //return; +} + +simulated function UpdateOutroLockoutTime() +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x4C + if(FireMode != none) + { + m_fOutroLockoutTime = FireMode.GetCustomValue4(); + } + //return; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgDeviceFire FireMode; + + super.StartFiringLogic(); + FireMode = GetCurrentFire(); + // End:0x5A + if(FireMode != none) + { + SetTimer(FireMode.GetCustomValue1(), false, 'CounterDelay'); + } + //return; + } + + simulated function StopFiringLogic() + { + super.StopFiringLogic(); + ClearTimer('CounterDelay'); + //return; + } + stop; +} + +defaultproperties +{ + r_bInterruptAfterCounterAttack=true + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PreHit + m_bAlwaysStartCooldown=true + m_bUsesOutroLockout=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_CounterAttack.uc b/exported/TgGame/Classes/TgDevice_CounterAttack.uc new file mode 100755 index 00000000..ac2ad337 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_CounterAttack.uc @@ -0,0 +1,33 @@ +class TgDevice_CounterAttack extends TgDevice + native(ChampDarklord) + hidecategories(Navigation); + +simulated state DeviceFiring +{ + simulated function StopFiringLogic() + { + local TgPawn PawnOwner; + local TgDevice_Counter counterDevice; + + super.StopFiringLogic(); + PawnOwner = TgPawn(Owner); + // End:0xDC + if(PawnOwner != none) + { + counterDevice = TgDevice_Counter(PawnOwner.GetDeviceByEqPoint(16)); + // End:0xDC + if((counterDevice != none) && counterDevice.r_bInterruptAfterCounterAttack) + { + counterDevice.InterruptFiring(); + counterDevice.StartCooldown(); + } + } + //return; + } + stop; +} + +defaultproperties +{ + m_bDisableLagCompensation=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_CripplingThrow.uc b/exported/TgGame/Classes/TgDevice_CripplingThrow.uc new file mode 100755 index 00000000..73254fbc --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_CripplingThrow.uc @@ -0,0 +1,3 @@ +class TgDevice_CripplingThrow extends TgDevice + native(ChampGrover) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_DarkConvergence.uc b/exported/TgGame/Classes/TgDevice_DarkConvergence.uc new file mode 100755 index 00000000..1bf8906b --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_DarkConvergence.uc @@ -0,0 +1,9 @@ +class TgDevice_DarkConvergence extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_bAimThroughReticule=true + m_vProjectileSpawnOffset=(X=40.0000000,Y=-9.0000000,Z=0.0000000) + m_fDeployZOffset=40.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_DarklordInhand.uc b/exported/TgGame/Classes/TgDevice_DarklordInhand.uc new file mode 100755 index 00000000..1ac69baf --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_DarklordInhand.uc @@ -0,0 +1,23 @@ +class TgDevice_DarklordInhand extends TgDevice_ChainSequence + native(ChampDarklord) + hidecategories(Navigation); + +simulated event int GetChainMax() +{ + return 3; + //return ReturnValue; +} + +defaultproperties +{ + m_fChainResetDuration=2.0000000 + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_ReticuleType=EReticuleType.RETICULE_Wide + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=12.0000000,Y=1.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_fMeshFOV=90.0000000 + m_vProjectileSpawnOffset=(X=15.0000000,Y=10.0000000,Z=-9.0000000) + m_fAltFireLockOutTime=0.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_DeadSpace.uc b/exported/TgGame/Classes/TgDevice_DeadSpace.uc new file mode 100755 index 00000000..fecb1832 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_DeadSpace.uc @@ -0,0 +1,3 @@ +class TgDevice_DeadSpace extends TgDevice + native(ChampAstro) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_DecoyMod.uc b/exported/TgGame/Classes/TgDevice_DecoyMod.uc new file mode 100755 index 00000000..f74ed4ff --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_DecoyMod.uc @@ -0,0 +1,3 @@ +class TgDevice_DecoyMod extends TgDevice + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_DemonInhand.uc b/exported/TgGame/Classes/TgDevice_DemonInhand.uc new file mode 100755 index 00000000..5ecf771b --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_DemonInhand.uc @@ -0,0 +1,79 @@ +class TgDevice_DemonInhand extends TgDevice + native(ChampDemon) + hidecategories(Navigation); + +var bool m_bUltIsActive; + +// Export UTgDevice_DemonInhand::execCheckAutoReload(FFrame&, void* const) +native function bool CheckAutoReload(); + +// Export UTgDevice_DemonInhand::execRequiresAmmoToFire(FFrame&, void* const) +native function bool RequiresAmmoToFire(); + +// Export UTgDevice_DemonInhand::execShouldShowAmmoCount(FFrame&, void* const) +native function bool ShouldShowAmmoCount(); + +simulated event SetAmmo(int AmmoCount, optional int ClipSize = -1, optional bool bShouldValidate = false, optional int ValidationIDOverride = 0) +{ + super.SetAmmo(AmmoCount, ClipSize, bShouldValidate, ValidationIDOverride); + // End:0x7A + if(c_DeviceForm != none) + { + c_DeviceForm.SetAmmoBlendNodesAmount(AmmoCount); + } + //return; +} + +simulated function TgGameplayCurvesSet_RecoilSimple GetRecoilCurve() +{ + local int I; + local TgGameplayCurves GPCurves; + local TgGameplayCurvesSet_RecoilSimple recoilCurves; + + GPCurves = GetCurrentGameplayCurves(); + // End:0x25 + if(GPCurves == none) + { + return none; + } + I = 0; + J0x30: + + // End:0x1AD [Loop If] + if(I < GPCurves.CurveSets.Length) + { + // End:0x19F + if((GPCurves.CurveSets[I] != none) && int(GPCurves.CurveSets[I].CurveSetType) == int(2)) + { + recoilCurves = TgGameplayCurvesSet_RecoilSimple(GPCurves.CurveSets[I]); + // End:0x19F + if((recoilCurves != none) && (!m_bUltIsActive && int(recoilCurves.RecoilType) == int(0)) || m_bUltIsActive && int(recoilCurves.RecoilType) == int(2)) + { + return recoilCurves; + } + } + I++; + // [Loop Continue] + goto J0x30; + } + return none; + //return ReturnValue; +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_ReticuleType=EReticuleType.RETICULE_Precise + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=17.0000000,Y=0.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_fMeshFOV=77.0000000 + m_vProjectileSpawnOffset=(X=30.0000000,Y=9.0000000,Z=-10.0000000) + m_fAltFireLockOutTime=0.0000000 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_DemonInhand' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.LightForceFeedback' + m_AccuracySettings=(bUsesAdvancedAccuracy=true,fMaxAccuracy=1.0000000,fMinAccuracy=0.9500000,fAccuracyLossPerShot=0.0200000,fAccuracyGainPerSec=2.0000000,fAccuracyGainDelay=0.1500000,nNumFreeShots=5) + m_fReticleBloomScale=0.5000000 + m_RecoilSettings=(bUsesRecoil=true,fRecoilReductionPerSec=100.0000000,fRecoilCenterDelay=0.1200000,fRecoilSmoothRate=7.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_DemonTeleport.uc b/exported/TgGame/Classes/TgDevice_DemonTeleport.uc new file mode 100755 index 00000000..5161c1ce --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_DemonTeleport.uc @@ -0,0 +1,336 @@ +class TgDevice_DemonTeleport extends TgDevice + native(ChampDemon) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var bool m_bCancelled; +var bool m_bPhaseApplied; +var float m_fTeleportDelayTimer; + +// Export UTgDevice_DemonTeleport::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +// Export UTgDevice_DemonTeleport::execShouldForce3P(FFrame&, void* const) +native function bool ShouldForce3P(TgDeviceForm DeviceForm, optional bool bOnlyCheckDeviceForm = false); + +// Export UTgDevice_DemonTeleport::execIsDeviceFiringForUI(FFrame&, void* const) +native function bool IsDeviceFiringForUI(); + +simulated function bool ShouldTeleportOnTimeout() +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x50 + if((FireMode != none) && FireMode.GetCustomValue4() > 0.0000000) + { + return false; + } + return true; + //return ReturnValue; +} + +simulated event bool ShouldCooldownAfterFire() +{ + return false; + //return ReturnValue; +} + +simulated function bool CanFiringBeCanceledByLeftMouse() +{ + return false; + //return ReturnValue; +} + +simulated function bool InterceptSlotPressed(TgPlayerController TgController) +{ + // End:0x32 + if(IsFiring()) + { + // End:0x30 + if(CanBeCanceled()) + { + m_bCancelled = true; + InterruptFiring(); + } + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + // End:0x1E + if(m_bCancelled && super.CanBeInterrupted()) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + local float firePostHitTime; + local TgPawn_Demon OwnerPawn; + + OwnerPawn = TgPawn_Demon(Owner); + // End:0x7C + if((OwnerPawn != none) && OwnerPawn.r_bCrippled || int(OwnerPawn.r_eCurrentStunType) != int(0)) + { + return false; + } + // End:0xC6 + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0xC6 + if(firePostHitTime > 0.5000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +event OnDeployableDestroyed(TgDeployable deployable) +{ + // End:0x39 + if(deployable == r_Deployable) + { + r_Deployable = none; + // End:0x39 + if(IsFiring()) + { + InterruptFiring(); + } + } + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + local float firePostHitTime; + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x30 + if(IsTimerActive('FirePreHitDelay')) + { + return true; + } + else + { + // End:0x4C + if(IsTimerActive('FinishPhaseIn')) + { + return true; + } + else + { + // End:0xC3 + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0xC1 + if((FireMode != none) && firePostHitTime > FireMode.GetCustomValue1()) + { + return false; + } + return true; + } + } + } + return false; + //return ReturnValue; +} + +simulated event bool CanTeleportNow() +{ + local TgPawn_Demon OwnerPawn; + + OwnerPawn = TgPawn_Demon(Owner); + // End:0x51 + if((OwnerPawn != none) && OwnerPawn.r_bIsUltActive) + { + return false; + } + return true; + //return ReturnValue; +} + +simulated event DoTeleport() +{ + local bool bShouldTeleport, bShouldDestroyDeployable; + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + bShouldTeleport = (ShouldTeleportOnTimeout()) || m_bCancelled; + bShouldDestroyDeployable = false; + // End:0x13B + if(r_Deployable != none) + { + // End:0xEB + if(bShouldTeleport) + { + // End:0xB0 + if(CanTeleportNow()) + { + bShouldDestroyDeployable = true; + TeleportToDeployable(r_Deployable.Location); + StartCooldown(); + } + else + { + // End:0xE8 + if(FireMode != none) + { + m_fTeleportDelayTimer = FireMode.GetCustomValue3(); + } + } + } + else + { + bShouldDestroyDeployable = true; + } + // End:0x13B + if(bShouldDestroyDeployable) + { + r_Deployable.DestroyIt(); + r_Deployable = none; + bNetDirty = true; + } + } + //return; +} + +reliable server function ServerTeleportToDeployable(Vector vDest) +{ + TeleportToDeployable(vDest); + StartCooldown(); + //return; +} + +simulated function TeleportToDeployable(Vector vDest) +{ + local TgPawn_Demon OwnerPawn; + local AimData Aim; + local TeleportParams TelParams; + + OwnerPawn = TgPawn_Demon(Owner); + // End:0x175 + if(OwnerPawn != none) + { + GetCachedAim(Aim); + TelParams.vTargetLocation = vDest; + TelParams.rTargetRotation = Rotator(Aim.AimVector); + TelParams.bPlayFx = true; + TelParams.fMovementCorrectionDisableTime = 0.3000000; + // End:0x175 + if(OwnerPawn.AdvancedTeleport(TelParams)) + { + OwnerPawn.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + // End:0x175 + if(int(Role) < int(ROLE_Authority)) + { + ServerTeleportToDeployable(OwnerPawn.Location); + } + } + } + StartPhaseIn(); + //return; +} + +simulated function StartPhaseIn() +{ + local TgDeviceFire FireMode; + local ImpactInfo Impact; + + // End:0x132 + if(!m_bPhaseApplied) + { + m_bPhaseApplied = true; + FireMode = GetCurrentFire(); + // End:0x132 + if(FireMode != none) + { + // End:0x105 + if((int(Role) == int(ROLE_Authority)) && Owner != none) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = FireMode; + Impact.HitActor = Owner; + FireMode.ApplyHitSpecial(Owner, Impact, 10693); + } + SetTimer(FireMode.GetCustomValue2(), false, 'FinishPhaseIn'); + } + } + //return; +} + +simulated function FinishPhaseIn() +{ + local TgDeviceFire FireMode; + + // End:0x81 + if(m_bPhaseApplied) + { + m_bPhaseApplied = false; + FireMode = GetCurrentFire(); + // End:0x81 + if((int(Role) == int(ROLE_Authority)) && Owner != none) + { + FireMode.RemoveHitSpecial(Owner, true, 10693); + } + } + //return; +} + +simulated event float GetCustomTimerBarCurrentTime() +{ + // End:0x4E + if(r_Deployable != none) + { + return r_Deployable.r_fTimeToDeploySecs - r_Deployable.LifeSpan; + } + return 0.0000000; + //return ReturnValue; +} + +simulated event float GetCustomTimerBarMaxTime() +{ + // End:0x2E + if(r_Deployable != none) + { + return r_Deployable.r_fTimeToDeploySecs; + } + return 0.0000000; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + m_bCancelled = false; + m_bPhaseApplied = false; + super.StartFiringLogic(); + //return; + } + + simulated function StopFiringLogic() + { + super.StopFiringLogic(); + DoTeleport(); + //return; + } + stop; +} + +defaultproperties +{ + m_bDeployAtFeetOnFailure=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_DemonUlt.uc b/exported/TgGame/Classes/TgDevice_DemonUlt.uc new file mode 100755 index 00000000..ad21ceea --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_DemonUlt.uc @@ -0,0 +1,70 @@ +class TgDevice_DemonUlt extends TgDevice_Stim + hidecategories(Navigation); + +simulated event bool CanBeCanceled() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return false; + //return ReturnValue; +} + +simulated function TransitionOut() +{ + //return; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgPawn_Demon PawnOwner; + local TgDevice_DemonInhand inhandDev; + + super.StartFiringLogic(); + PawnOwner = TgPawn_Demon(Owner); + // End:0x159 + if(PawnOwner != none) + { + PawnOwner.r_bIsUltActive = true; + inhandDev = TgDevice_DemonInhand(PawnOwner.GetDeviceByEqPoint(1)); + // End:0x159 + if(inhandDev != none) + { + // End:0xF9 + if(inhandDev.IsReloading()) + { + inhandDev.InterruptReload(); + inhandDev.ClientInterruptReload(); + } + // End:0x159 + if(inhandDev.IsFiring()) + { + inhandDev.InterruptFiring(); + inhandDev.ClientInterrupt(); + } + } + } + //return; + } + + simulated function StopFiringLogic() + { + local TgPawn_Demon PawnOwner; + + super.StopFiringLogic(); + PawnOwner = TgPawn_Demon(Owner); + // End:0x56 + if(PawnOwner != none) + { + PawnOwner.r_bIsUltActive = false; + } + SetTimer(GetCurrentFire().GetCustomValue1(), false, 'TransitionOut'); + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_DimensionalLink.uc b/exported/TgGame/Classes/TgDevice_DimensionalLink.uc new file mode 100755 index 00000000..cc255c90 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_DimensionalLink.uc @@ -0,0 +1,360 @@ +class TgDevice_DimensionalLink extends TgDevice + native(ChampYing) + hidecategories(Navigation); + +struct native DLTeleportTargets +{ + var Vector TargetPosition; + var Rotator TargetRotation; + var Actor TargetIllusion; + + structdefaultproperties + { + TargetPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000) + TargetRotation=(Pitch=0,Yaw=0,Roll=0) + TargetIllusion=none + } +}; + +struct native DLDeadTeleportTargets +{ + var Vector TargetPosition; + var Rotator TargetRotation; + var float ValidTimeRemaining; + + structdefaultproperties + { + TargetPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000) + TargetRotation=(Pitch=0,Yaw=0,Roll=0) + ValidTimeRemaining=0.0000000 + } +}; + +struct native DLRewindTargets +{ + var Vector RewindPosition; + var Rotator RewindRotation; + + structdefaultproperties + { + RewindPosition=(X=0.0000000,Y=0.0000000,Z=0.0000000) + RewindRotation=(Pitch=0,Yaw=0,Roll=0) + } +}; + +var TgPawn_Ying m_CachedYingPawn; +var Actor s_CycleTargets[10]; +var int s_nNumCycleTargets; +var int s_nCurrentCycleTargetIndex; +var array m_TeleportTargets; +var array m_DeadTeleportTargets; +var DLRewindTargets m_RewindTargets[30]; +var int m_CurrentRewindIndex; +var int m_ValidRewindIndex1; +var int m_ValidRewindIndex2; +var int m_nNumPrevRewindsToCheck; +var float m_fRewindMinTargetDist; +var float m_fRewindMinNextPointDist; +var float m_fLastRewindTimestamp; +var bool m_bRequiresReset; +var bool m_bSwappingPeriodEnded; +var Actor r_nCurrentCycleTarget; +var TgDevice_Rewind m_CachedCardRewind; +//var delegate __PawnEvent__Delegate; + +replication +{ + // Pos:0x000 + if(bNetDirty && int(Role) == int(ROLE_Authority)) + r_nCurrentCycleTarget; +} + +// Export UTgDevice_DimensionalLink::execValidateReceivedAim(FFrame&, void* const) +native function AimData ValidateReceivedAim(float ClientMovementTimeStamp, AimData Aim); + +// Export UTgDevice_DimensionalLink::execTickTargetingMode(FFrame&, void* const) +native function TickTargetingMode(float DeltaSeconds); + +// Export UTgDevice_DimensionalLink::execIsTargetingModeReady(FFrame&, void* const) +native function bool IsTargetingModeReady(optional out TgObject.EDeviceFailType failType); + +// Export UTgDevice_DimensionalLink::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +// Export UTgDevice_DimensionalLink::execUsesCachedAim(FFrame&, void* const) +native function bool UsesCachedAim(); + +// Export UTgDevice_DimensionalLink::execHasCachedYingPawn(FFrame&, void* const) +native function bool HasCachedYingPawn(); + +// Export UTgDevice_DimensionalLink::execCreateTeleportTargetDeployable(FFrame&, void* const) +native function Actor CreateTeleportTargetDeployable(Vector TargetLocation, Rotator TargetRotation); + +// Export UTgDevice_DimensionalLink::execGenerateCycleTargets(FFrame&, void* const) +native function GenerateCycleTargets(); + +simulated function FireAmmunition() +{ + // End:0x2F + if(m_CachedCardRewind != none) + { + m_CachedCardRewind.DoRewindCardLogic(self); + } + super.FireAmmunition(); + //return; +} + +simulated event bool ShouldCooldownAfterFire() +{ + return m_bSwappingPeriodEnded; + //return ReturnValue; +} + +delegate PawnEvent(TgPawn DeadPawn) +{ + //return; +} + +function IllusionDied(Actor illusion) +{ + local int I; + + // End:0x167 + if(!m_bSwappingPeriodEnded && illusion != none) + { + I = 0; + J0x2B: + + // End:0x167 [Loop If] + if(I < s_nNumCycleTargets) + { + // End:0x159 + if(s_CycleTargets[I] == illusion) + { + s_CycleTargets[I] = CreateTeleportTargetDeployable(illusion.Location, illusion.Rotation); + // End:0xFD + if(r_nCurrentCycleTarget == illusion) + { + r_nCurrentCycleTarget = s_CycleTargets[I]; + bNetDirty = true; + } + // End:0x157 + if(m_CachedAim.HitActor == illusion) + { + m_CachedAim.HitActor = s_CycleTargets[I]; + } + return; + } + I++; + // [Loop Continue] + goto J0x2B; + } + } + //return; +} + +simulated function EndSwappingPeriod() +{ + local int I; + + s_nNumCycleTargets = 0; + s_nCurrentCycleTargetIndex = 0; + r_nCurrentCycleTarget = none; + bNetDirty = true; + m_bSwappingPeriodEnded = true; + // End:0x13D + if(!IsFiring()) + { + // End:0x122 + if(int(Role) == int(ROLE_Authority)) + { + I = 0; + J0x67: + + // End:0x122 [Loop If] + if(I < 10) + { + // End:0x114 + if((s_CycleTargets[I] != none) && EqualEqual_InterfaceInterface(TgInterface_YingIllusion(s_CycleTargets[I]), TgInterface_YingIllusion(none))) + { + // End:0x114 + if(s_CycleTargets[I].IsA('TgPawn_Illusion')) + { + s_CycleTargets[I].Destroy(); + } + } + I++; + // [Loop Continue] + goto J0x67; + } + } + // End:0x13D + if(!m_bRequiresReset) + { + StartCooldown(); + } + } + //return; +} + +simulated function IsFullyReset() +{ + m_bRequiresReset = false; + //return; +} + +function SetRequiresReset() +{ + m_bRequiresReset = true; + ClearTimer('EndSwappingPeriod'); + // End:0x37 + if(IsFiring()) + { + InterruptFiring(); + } + EndSwappingPeriod(); + ClientSetRequiresReset(); + //return; +} + +reliable client simulated function ClientSetRequiresReset() +{ + ClearTimer('EndSwappingPeriod'); + EndSwappingPeriod(); + m_bRequiresReset = true; + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x54 + case 13414: + // End:0x5C + case 14041: + // End:0x64 + case 14042: + // End:0x8B + case 14043: + m_CachedCardRewind = TgDevice_Rewind(Dev); + // End:0x8E + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local int I; + local TgInterface_YingIllusion illusion; + + // End:0x22A + if(m_bSwappingPeriodEnded && !IsTimerActive('EndSwappingPeriod')) + { + // End:0x1D6 + if(int(Role) == int(ROLE_Authority)) + { + GenerateCycleTargets(); + // End:0xFB + if(s_CycleTargets[0] != none) + { + m_CachedAim.HitActor = s_CycleTargets[0]; + m_CachedAim.EndTrace = s_CycleTargets[0].Location; + m_CachedAim.AimVector = Vector(s_CycleTargets[0].Rotation); + } + s_nCurrentCycleTargetIndex = 1; + r_nCurrentCycleTarget = s_CycleTargets[s_nCurrentCycleTargetIndex]; + bNetDirty = true; + I = 0; + J0x13A: + + // End:0x1D6 [Loop If] + if(I < s_nNumCycleTargets) + { + illusion = TgInterface_YingIllusion(s_CycleTargets[I]); + // End:0x1C8 + if(NotEqual_InterfaceInterface(illusion, TgInterface_YingIllusion(none))) + { + illusion.AddOnDestroyDelegate(IllusionDied); + } + I++; + // [Loop Continue] + goto J0x13A; + } + } + m_bSwappingPeriodEnded = false; + SetTimer((((GetCurrentFire()) != none) ? GetCurrentFire().GetPersistTime() : 4.0000000), false, 'EndSwappingPeriod'); + } + else + { + // End:0x288 + if(int(Role) == int(ROLE_Authority)) + { + s_nCurrentCycleTargetIndex = (s_nCurrentCycleTargetIndex + 1) % s_nNumCycleTargets; + r_nCurrentCycleTarget = s_CycleTargets[s_nCurrentCycleTargetIndex]; + bNetDirty = true; + } + } + super.StartFiringLogic(); + //return; + } + + simulated function StopFiringLogic() + { + local int I; + + super.StopFiringLogic(); + // End:0xF3 + if(m_bSwappingPeriodEnded && int(Role) == int(ROLE_Authority)) + { + I = 0; + J0x38: + + // End:0xF3 [Loop If] + if(I < 10) + { + // End:0xE5 + if((s_CycleTargets[I] != none) && EqualEqual_InterfaceInterface(TgInterface_YingIllusion(s_CycleTargets[I]), TgInterface_YingIllusion(none))) + { + // End:0xE5 + if(s_CycleTargets[I].IsA('TgPawn_Illusion')) + { + s_CycleTargets[I].Destroy(); + } + } + I++; + // [Loop Continue] + goto J0x38; + } + } + //return; + } + stop; +} + +defaultproperties +{ + m_nNumPrevRewindsToCheck=10 + m_fRewindMinTargetDist=313600.0000000 + m_fRewindMinNextPointDist=6400.0000000 + m_fLastRewindTimestamp=-100.0000000 + m_bRequiresReset=true + m_bSwappingPeriodEnded=true + m_bDisableLagCompensation=true + m_nLinkedDeviceIDs[0]=13414 + m_nLinkedDeviceIDs[1]=14041 + m_nLinkedDeviceIDs[2]=14042 + m_nLinkedDeviceIDs[3]=14043 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Disengage.uc b/exported/TgGame/Classes/TgDevice_Disengage.uc new file mode 100755 index 00000000..e074bfb0 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Disengage.uc @@ -0,0 +1,8 @@ +class TgDevice_Disengage extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_bAimThroughReticule=true + m_vProjectileSpawnOffset=(X=15.0000000,Y=7.0000000,Z=-13.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_DoubleCharge.uc b/exported/TgGame/Classes/TgDevice_DoubleCharge.uc new file mode 100755 index 00000000..cdf5c64c --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_DoubleCharge.uc @@ -0,0 +1,245 @@ +class TgDevice_DoubleCharge extends TgDevice_Charge + native(Devices) + hidecategories(Navigation); + +var int m_nTotalNumShots; +var int m_nShotsFired; +var bool m_bSetAsTargetingDeviceForMultiFire; + +// Export UTgDevice_DoubleCharge::execUpdateTargetingModeStatus(FFrame&, void* const) +native function UpdateTargetingModeStatus(const out AimData Aim); + +simulated event bool CanBeCanceled() +{ + return !IsFiring() || IsTimerActive('RefireTimer'); + //return ReturnValue; +} + +simulated event bool Use() +{ + local TgObject.EDeviceFailType failType; + + // End:0x2D + if(!CanDeviceFireNow(CurrentFireMode, m_CachedAim, false, failType)) + { + return false; + } + // End:0x54 + if(!IsTimerActive('RefireTimer')) + { + return super(TgDevice).Use(); + } + else + { + return RefireTimer(true); + } + //return ReturnValue; +} + +simulated function bool RefireTimer(optional bool bRefire) +{ + return false; + //return ReturnValue; +} + +reliable server function bool ServerRefireTimer(optional bool bRefire, optional AimData ClientAim, optional float EndTraceX = -10000000.0000000, optional float EndTraceY = -10000000.0000000) +{ + // End:0xCE + if(IsFiring()) + { + s_ReceivedAim = ClientAim; + // End:0xCE + if((EndTraceX > -10000000.0000000) && EndTraceY > -10000000.0000000) + { + s_ReceivedAim.EndTrace.X = EndTraceX; + s_ReceivedAim.EndTrace.Y = EndTraceY; + } + } + return RefireTimer(bRefire); + //return ReturnValue; +} + +simulated function DeviceConsumePowerPool(byte FireModeNum) +{ + // End:0x22 + if(m_nShotsFired <= 1) + { + super(TgDevice).DeviceConsumePowerPool(FireModeNum); + } + //return; +} + +simulated function int GetTotalNumberOfShots() +{ + return m_nTotalNumShots; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + m_nShotsFired = 0; + super.BeginState(PreviousStateName); + //return; + } + + simulated function EndState(name NextStateName) + { + ClearTimer('RefireTimer'); + super.EndState(NextStateName); + //return; + } + + simulated function bool RefireTimer(optional bool bRefire) + { + local AimData Aim; + local TgPawn TgP; + + ClearTimer('RefireTimer'); + // End:0x8D + if(bRefire) + { + TgP = TgPawn(Instigator); + // End:0x8D + if(TgP != none) + { + // End:0x8D + if(int(Role) == int(ROLE_Authority)) + { + // End:0x8D + if(ShouldInterruptReloadOnFire()) + { + TgP.InterruptInhandReload(); + } + } + } + } + UpdateAimWhileFiring(m_CachedAim); + GetCachedAim(Aim); + // End:0x252 + if(Aim.bResult && bRefire) + { + // End:0x168 + if(int(Role) < int(ROLE_Authority)) + { + ServerRefireTimer(true, Aim, Aim.EndTrace.X, Aim.EndTrace.Y); + } + // End:0x19D + if(IsTimerActive('FirePreHitDelay')) + { + ClearTimer('FirePreHitDelay'); + FirePreHitDelay(); + } + // End:0x1D2 + if(IsTimerActive('FirePostHitDelay')) + { + ClearTimer('FirePostHitDelay'); + FirePostHitDelay(); + } + // End:0x1FD + if(IsTimerActive('RefireTimer')) + { + ClearTimer('RefireTimer'); + } + // End:0x245 + if(IsInState('DeviceFiring')) + { + m_fFiringTimer = WorldInfo.TimeSeconds; + RestartFireLoop(false); + return true; + } + else + { + InterruptFiring(); + } + } + else + { + m_nShotsFired = GetTotalNumberOfShots(); + GotoState('Active'); + } + return false; + //return ReturnValue; + } + + simulated function RestartFireLoop(bool bRefire) + { + m_nShotsFired++; + super.RestartFireLoop(bRefire); + //return; + } + + simulated function bool CanFireAgain() + { + return m_nShotsFired < (GetTotalNumberOfShots()); + //return ReturnValue; + } + + simulated function FirePostHitDelay() + { + local AimData Aim; + local TgDeviceFire FireMode; + local WeaponMeshSwapStrategy SwapStrategy; + local float fRefireTime; + + // End:0x0D + if(LogDebugInfo()) + { + } + FireMode = GetCurrentFire(); + FireMode.RemoveEffectType(Instigator, false, 10456); + // End:0x80 + if(!FireMode.m_bContinuousFire) + { + bPendingFire = false; + } + UpdateAimWhileFiring(m_CachedAim); + GetCachedAim(Aim); + // End:0x1D8 + if(CanFireAgain()) + { + EndCharge(); + // End:0xFC + if(m_bSetAsTargetingDeviceForMultiFire) + { + TgPawn(Instigator).SetTargetingDevice(self, SwapStrategy); + } + TgPawn(Instigator).FlashStopFire(r_nDeviceInstanceId, int(CurrentFireMode)); + // End:0x171 + if(c_DeviceForm != none) + { + c_DeviceForm.StopFire(int(CurrentFireMode)); + } + fRefireTime = FireMode.GetPropertyValue(53); + // End:0x1BE + if(fRefireTime <= 0.0000000) + { + fRefireTime = 1.5000000; + } + SetTimer(fRefireTime, false, 'RefireTimer'); + } + else + { + // End:0x22C + if(((int(Role) == int(ROLE_Authority)) && bPendingFire) && FireMode.m_bContinuousFire) + { + InterruptFiring(); + } + else + { + GotoState('Active'); + } + } + SendDeviceChangeEvent(6); + //return; + } + stop; +} + +defaultproperties +{ + m_nTotalNumShots=2 + m_bSetAsTargetingDeviceForMultiFire=true + m_IndividualOffhandCooldownTime=0.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Drag.uc b/exported/TgGame/Classes/TgDevice_Drag.uc new file mode 100755 index 00000000..c54e705b --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Drag.uc @@ -0,0 +1,488 @@ +class TgDevice_Drag extends TgDevice + native(ChampMakoa) + hidecategories(Navigation); + +const DRAG_END_LOCATION_LOCK_DIST_SQ = 16384; + +var TgPawn m_PullTarget; +var Rotator m_TargetInitialRotation; +var float m_fPullStartTime; +var TgPawn m_StunnedTarget; +var TgPawn r_ClientPullTarget; +var float m_fTruePostfireTime; +var float m_fPullVelocityBreakFactor; +var const float m_fPullVerticalEndOffset; +var const float m_fMaxPullTime; +var float m_fPrePullTime; +var float m_fPullEndOffset; +var float m_fPullSpeed; +var float m_fPullEndStunDuration; +var float m_fPullInterruptDistance; +var bool m_bCanStillPull; +var bool m_bNeedsDelayedServerEndPull; +var bool m_bNeedsDelayedClientEndPull; +var bool m_bHasPulledOnce; +var bool m_bSpecialUnlockInterrupt; +var Vector m_vEndLocation; +var TgPawn m_CachedPawnOwner; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_ClientPullTarget; +} + +simulated event bool StartFire() +{ + // End:0x4B + if(HasRemoteOwner() && IsFiring()) + { + // End:0x3C + if(DeviceSpawnsClientProjectilesFirst()) + { + ClientRemoveSpawnedProjectile(m_CachedFireRequestId); + } + InterruptFiring(); + return false; + } + else + { + return super.StartFire(); + } + //return ReturnValue; +} + +function bool PullTarget(Actor Target, Vector HitLocation) +{ + local TgPawn PawnTarget; + local TgPawn_Character charPawnTarget; + local TgDeviceFire FireMode; + + // End:0x33 + if(((m_PullTarget != none) || !IsFiring()) || !m_bCanStillPull) + { + return false; + } + // End:0x74 + if((m_CachedPawnOwner == none) || !m_CachedPawnOwner.IsAliveAndWell()) + { + InterruptFiring(); + return false; + } + PawnTarget = TgPawn(Target); + FireMode = GetCurrentFire(); + // End:0x15E + if(((((PawnTarget == none) || !PawnTarget.CanBePulled()) || FireMode == none) || !FireMode.IsValidTarget(Target)) || PawnTarget.SpecialAOEImmunity(HitLocation, FireMode)) + { + MissInvalidTarget(); + return false; + } + SetPullTarget(PawnTarget); + m_bHasPulledOnce = false; + SetTimer(m_fPrePullTime, false, 'PrePullTimer'); + // End:0x1C5 + if(m_CachedPawnOwner != none) + { + m_CachedPawnOwner.FlashPlayEmote(13, 0); + } + charPawnTarget = TgPawn_Character(PawnTarget); + // End:0x265 + if(charPawnTarget != none) + { + charPawnTarget.AddForcedViewTarget(m_CachedPawnOwner, 0.4000000, 3.0000000, self); + // End:0x265 + if(charPawnTarget.IsJoined()) + { + charPawnTarget.AbortJoin(); + } + } + return true; + //return ReturnValue; +} + +function PrePullTimer() +{ + // End:0x11 + if(!m_bCanStillPull) + { + return; + } + // End:0x40 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic1(); + } + // End:0x84 + if(m_CachedPawnOwner != none) + { + m_CachedPawnOwner.FlashGeneric1(r_nDeviceInstanceId, int(CurrentFireMode)); + } + //return; +} + +function MissPull() +{ + // End:0x11 + if(!m_bCanStillPull) + { + return; + } + // End:0x40 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic2(); + } + // End:0x84 + if(m_CachedPawnOwner != none) + { + m_CachedPawnOwner.FlashGeneric2(r_nDeviceInstanceId, int(CurrentFireMode)); + } + ClearPullTarget(); + ServerEndPull(); + //return; +} + +function MissInvalidTarget() +{ + // End:0x11 + if(!m_bCanStillPull) + { + return; + } + // End:0x40 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic3(); + } + // End:0x84 + if(m_CachedPawnOwner != none) + { + m_CachedPawnOwner.FlashGeneric3(r_nDeviceInstanceId, int(CurrentFireMode)); + } + ClearPullTarget(); + ServerEndPull(); + //return; +} + +event BreakPull() +{ + local TgDeviceFire FireMode; + + // End:0x61 + if(m_PullTarget != none) + { + FireMode = GetCurrentFire(); + // End:0x61 + if(FireMode != none) + { + FireMode.ApplyHitSpecial(m_PullTarget,, 10693); + } + } + MissInvalidTarget(); + //return; +} + +event EndPull() +{ + // End:0x82 + if(m_PullTarget != none) + { + // End:0x3E + if(c_DeviceForm != none) + { + c_DeviceForm.Generic4(); + } + // End:0x82 + if(m_CachedPawnOwner != none) + { + m_CachedPawnOwner.FlashGeneric4(r_nDeviceInstanceId, int(CurrentFireMode)); + } + } + ClearPullTarget(); + m_bSpecialUnlockInterrupt = true; + ServerEndPull(); + //return; +} + +function ServerEndPull() +{ + // End:0x3B + if(IsTimerActive('FirePostHitDelay')) + { + SetTimer(m_fTruePostfireTime, false, 'FirePostHitDelay'); + ClientEndPull(); + } + else + { + // End:0x54 + if(IsFiring()) + { + m_bNeedsDelayedServerEndPull = true; + } + } + m_bCanStillPull = false; + m_bHasPulledOnce = false; + m_vEndLocation = vect(0.0000000, 0.0000000, 0.0000000); + //return; +} + +reliable client simulated function ClientEndPull() +{ + // End:0x31 + if(IsTimerActive('FirePostHitDelay')) + { + SetTimer(m_fTruePostfireTime, false, 'FirePostHitDelay'); + } + else + { + // End:0x4A + if(IsFiring()) + { + m_bNeedsDelayedClientEndPull = true; + } + } + m_bCanStillPull = false; + m_bHasPulledOnce = false; + m_vEndLocation = vect(0.0000000, 0.0000000, 0.0000000); + //return; +} + +function SetPullTargetNoServerCorrectCameraSmoothing(bool bDisallowSmoothing) +{ + local TgPlayerController TgPC; + + // End:0x79 + if(m_PullTarget != none) + { + TgPC = TgPlayerController(m_PullTarget.Controller); + // End:0x79 + if(TgPC != none) + { + TgPC.SetNoSmoothedMovementCorrection(bDisallowSmoothing, true); + } + } + //return; +} + +function SetPullTarget(TgPawn Target) +{ + local TgDeviceFire FireMode; + local ImpactInfo Impact; + local TgEffectManager pEffectManager; + + // End:0x245 + if(Target != none) + { + SetPullTargetNoServerCorrectCameraSmoothing(false); + m_PullTarget = Target; + SetPullTargetNoServerCorrectCameraSmoothing(true); + m_PullTarget.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + m_TargetInitialRotation = m_PullTarget.Rotation; + m_fPullStartTime = WorldInfo.TimeSeconds; + r_ClientPullTarget = m_PullTarget; + bNetDirty = true; + FireMode = GetCurrentFire(); + // End:0x194 + if(FireMode != none) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = FireMode; + Impact.HitActor = m_PullTarget; + FireMode.ApplyHitSpecial(m_PullTarget, Impact); + } + // End:0x1E7 + if((m_CachedPawnOwner != none) && TgPawn_Makoa(m_CachedPawnOwner) != none) + { + TgPawn_Makoa(m_CachedPawnOwner).r_bAbility1CanEmote = true; + } + pEffectManager = Target.GetEffectManager(); + // End:0x245 + if(pEffectManager != none) + { + pEffectManager.RemoveEffectGroupsByCategory(16657); + } + } + //return; +} + +function ClearPullTarget() +{ + local TgPawn_Character charPawnTarget; + + // End:0xDB + if(m_PullTarget != none) + { + SetPullTargetNoServerCorrectCameraSmoothing(false); + m_PullTarget.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + m_StunnedTarget = m_PullTarget; + // End:0x86 + if(m_fPullEndStunDuration > 0.0000000) + { + SetTimer(m_fPullEndStunDuration, false, 'EndPostPullStun'); + } + else + { + EndPostPullStun(); + } + charPawnTarget = TgPawn_Character(m_PullTarget); + // End:0xDB + if(charPawnTarget != none) + { + charPawnTarget.RemoveForcedViewTarget(self); + } + } + m_PullTarget = none; + r_ClientPullTarget = none; + bNetDirty = true; + // End:0x150 + if((m_CachedPawnOwner != none) && TgPawn_Makoa(m_CachedPawnOwner) != none) + { + TgPawn_Makoa(m_CachedPawnOwner).r_bAbility1CanEmote = false; + } + //return; +} + +event EndPostPullStun() +{ + local TgDeviceFire FireMode; + + // End:0x7E + if((int(Role) == int(ROLE_Authority)) && m_StunnedTarget != none) + { + FireMode = GetCurrentFire(); + // End:0x73 + if(FireMode != none) + { + FireMode.RemoveHitSpecial(m_StunnedTarget, true); + } + m_StunnedTarget = none; + } + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x0F + if(m_bSpecialUnlockInterrupt) + { + return false; + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x54 + case 14191: + // End:0x5C + case 14602: + // End:0x64 + case 14843: + // End:0xA1 + case 14844: + Dev.RegisterDelegate(2, InterruptFiring); + // End:0xA4 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x54 + case 14191: + // End:0x5C + case 14602: + // End:0x64 + case 14843: + // End:0xA1 + case 14844: + Dev.UnregisterDelegate(2, InterruptFiring); + // End:0xA4 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated state DeviceFiring +{ + simulated function FirePreHitDelay() + { + m_bCanStillPull = true; + super.FirePreHitDelay(); + // End:0x39 + if(m_bNeedsDelayedServerEndPull) + { + m_bNeedsDelayedServerEndPull = false; + ServerEndPull(); + } + // End:0x5C + if(m_bNeedsDelayedClientEndPull) + { + m_bNeedsDelayedClientEndPull = false; + ClientEndPull(); + } + //return; + } + + simulated function StartFiringLogic() + { + m_bSpecialUnlockInterrupt = false; + super.StartFiringLogic(); + //return; + } + + simulated function StopFiringLogic() + { + m_bSpecialUnlockInterrupt = false; + super.StopFiringLogic(); + ClearTimer('FirePostHitDelay'); + ClearPullTarget(); + //return; + } + stop; +} + +defaultproperties +{ + m_fTruePostfireTime=0.3000000 + m_fPullVelocityBreakFactor=0.1000000 + m_fPullVerticalEndOffset=16.0000000 + m_fMaxPullTime=1.5000000 + m_fPrePullTime=0.5000000 + m_fPullEndOffset=7.0000000 + m_fPullSpeed=1000.0000000 + m_fPullEndStunDuration=0.2000000 + m_fPullInterruptDistance=200.0000000 + m_bAimThroughReticule=true + m_vProjectileSpawnOffset=(X=39.2000000,Y=-33.6000000,Z=42.5000000) + m_nLinkedDeviceIDs[0]=14182 + m_nLinkedDeviceIDs[1]=14191 + m_nLinkedDeviceIDs[2]=14602 + m_nLinkedDeviceIDs[3]=14843 + m_nLinkedDeviceIDs[4]=14844 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_DragonSlam.uc b/exported/TgGame/Classes/TgDevice_DragonSlam.uc new file mode 100755 index 00000000..b8cffd8f --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_DragonSlam.uc @@ -0,0 +1,265 @@ +class TgDevice_DragonSlam extends TgDevice + native(ChampDrogoz) + hidecategories(Navigation); + +var bool m_bHasHitTarget; +var TgPawn_Drogoz m_CachedDrogozOwner; +var TgCollisionProxy_Cylinder m_CollisionProxy; + +simulated function bool InterceptRightMousePressed(TgPlayerController TgController) +{ + // End:0x30 + if(IsFiring()) + { + TgController.bPressingRightMouseButton = false; + return true; + } + return false; + //return ReturnValue; +} + +simulated function CustomFire() +{ + local AimData Aim; + + UpdateIndex(); + GetCachedAim(Aim); + PlayClientFireFx(Aim.EndTrace, m_nSocketIndex, false, GetRefireTime()); + // End:0x8C + if(int(Role) == int(ROLE_Authority)) + { + GetCurrentFire().CustomFire(); + } + //return; +} + +function OnProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn PawnTarget; + local TgDeviceFire FireMode; + local float fPostHitDelay; + + FireMode = GetCurrentFire(); + // End:0x194 + if(((!m_bHasHitTarget && FireMode != none) && Other != none) && FireMode.IsValidTarget(Other)) + { + PawnTarget = TgPawn(Other); + // End:0xF1 + if((PawnTarget != none) && (PawnTarget.GetPropCurrentValue(132) > float(0)) || PawnTarget.IsImmuneToDamage()) + { + return; + } + ClearTimer('FirePostHitDelay'); + m_bHasHitTarget = true; + fPostHitDelay = FireMode.GetCustomValue5(); + // End:0x165 + if(fPostHitDelay > float(0)) + { + SetTimer(fPostHitDelay, false, 'FirePostHitDelay'); + } + else + { + FirePostHitDelay(); + } + ServerImpactTarget(Other, HitLocation, HitNormal); + } + //return; +} + +reliable client simulated function ClientImpactTarget() +{ + local TgDeviceFire FireMode; + local float fPostHitDelay; + + ClearTimer('FirePostHitDelay'); + m_bHasHitTarget = true; + FireAmmunition(); + FireMode = GetCurrentFire(); + // End:0x76 + if(FireMode != none) + { + fPostHitDelay = FireMode.GetCustomValue5(); + } + // End:0xA1 + if(fPostHitDelay > float(0)) + { + SetTimer(fPostHitDelay, false, 'FirePostHitDelay'); + } + else + { + FirePostHitDelay(); + } + //return; +} + +reliable server function ServerImpactTarget(Actor Target, Vector HitLocation, Vector HitNormal) +{ + local TgDeviceFire FireMode; + local ImpactInfo Impact; + + m_bHasHitTarget = true; + FireMode = GetCurrentFire(); + // End:0x180 + if(((FireMode != none) && Target != none) && FireMode.IsValidTarget(Target)) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = FireMode; + Impact.HitActor = Target; + Impact.HitLocation = HitLocation; + Impact.HitNormal = HitNormal; + Impact.RayDir = -HitNormal; + FireMode.ApplyHit(Impact, m_CachedDrogozOwner); + } + ClientImpactTarget(); + //return; +} + +function RefundEnergy() +{ + local TgDeviceFire FireMode; + local ImpactInfo Impact; + + FireMode = GetCurrentFire(); + // End:0xC1 + if(FireMode != none) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = FireMode; + Impact.HitActor = Instigator; + FireMode.ApplyHitSpecial(Instigator, Impact); + } + //return; +} + +simulated event Destroyed() +{ + // End:0x32 + if(m_CollisionProxy != none) + { + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + super.Destroyed(); + //return; +} + +simulated event SpawnCollisionProxy() +{ + local float Height, Radius; + + // End:0x1C9 + if(m_CachedDrogozOwner != none) + { + // End:0x41 + if(m_CollisionProxy != none) + { + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + m_CollisionProxy = Spawn(Class'TgGame.TgCollisionProxy_Cylinder', self,, m_CachedDrogozOwner.Location,,, true); + // End:0x1C9 + if(m_CollisionProxy != none) + { + m_CollisionProxy.SetBase(m_CachedDrogozOwner); + m_CollisionProxy.__ProxyTouch__Delegate = OnProxyTouch; + m_CollisionProxy.DelegatesUpdated(); + Height = m_CachedDrogozOwner.NativeGetCollisionHeight() * 0.9000000; + Radius = m_CachedDrogozOwner.NativeGetCollisionRadius() * 1.4000000; + m_CollisionProxy.m_CollisionCylinder.SetCylinderSize(Radius, Height); + m_CollisionProxy.ForceProximityScan(); + } + } + //return; +} + +simulated function FireAmmunition() +{ + // End:0x19 + if(!m_bHasHitTarget) + { + super.FireAmmunition(); + } + //return; +} + +simulated event bool CanBeCanceled() +{ + // End:0x2A + if(IsTimerActive('FirePostHitDelay') && !m_bHasHitTarget) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x93 + if(((IsFiring()) && Current != none) && (Current.m_bHandDevice || Current.IsAbility()) || Current.m_nDeviceType == 11077) + { + return true; + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} + +simulated event bool ShouldMountCancelFiring() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + super.BeginState(PreviousStateName); + // End:0x43 + if(m_CachedDrogozOwner != none) + { + m_CachedDrogozOwner.m_bDragonSlamIsBlocking = true; + } + //return; + } + + simulated function FirePreHitDelay() + { + m_bHasHitTarget = false; + super.FirePreHitDelay(); + // End:0x2F + if(m_CollisionProxy == none) + { + SpawnCollisionProxy(); + } + //return; + } + + simulated function EndState(name NextStateName) + { + // End:0x32 + if(m_CollisionProxy != none) + { + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + // End:0x61 + if((int(Role) == int(ROLE_Authority)) && !m_bHasHitTarget) + { + RefundEnergy(); + } + // End:0x91 + if(m_CachedDrogozOwner != none) + { + m_CachedDrogozOwner.m_bDragonSlamIsBlocking = false; + } + super.EndState(NextStateName); + //return; + } + stop; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_DreadSerpent.uc b/exported/TgGame/Classes/TgDevice_DreadSerpent.uc new file mode 100755 index 00000000..7ed6ea26 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_DreadSerpent.uc @@ -0,0 +1,138 @@ +class TgDevice_DreadSerpent extends TgDevice + hidecategories(Navigation); + +var bool s_bQueueVoodooDeploy; + +simulated function bool TryDeployVoodoo() +{ + local int I; + local bool bSuccessfulDeploy; + + // End:0x11 + if(!IsFiring()) + { + return false; + } + I = 0; + J0x1C: + + // End:0x125 [Loop If] + if(I < m_FiredProjectiles.Length) + { + // End:0x117 + if(((m_FiredProjectiles[I] != none) && !m_FiredProjectiles[I].m_bHasExploded) && !m_FiredProjectiles[I].m_bIsShutDown) + { + m_FiredProjectiles[I].Explode(m_FiredProjectiles[I].Location, vect(0.0000000, 0.0000000, 1.0000000)); + bSuccessfulDeploy = true; + } + I++; + // [Loop Continue] + goto J0x1C; + } + // End:0x152 + if((int(Role) < int(ROLE_Authority)) && bSuccessfulDeploy) + { + ServerDeployVoodoo(); + } + // End:0x196 + if(bSuccessfulDeploy && IsTimerActive('FirePostHitDelay')) + { + ClearTimer('FirePostHitDelay'); + FirePostHitDelay(); + } + return bSuccessfulDeploy; + //return ReturnValue; +} + +simulated function UpdateActiveProjectiles(optional TgProjectile Proj) +{ + super.UpdateActiveProjectiles(Proj); + // End:0x5B + if((m_FiredProjectiles.Length == 0) && IsTimerActive('FirePostHitDelay')) + { + ClearTimer('FirePostHitDelay'); + FirePostHitDelay(); + } + //return; +} + +reliable server event ServerDeployVoodoo() +{ + // End:0x2A + if(!TryDeployVoodoo() && IsFiring()) + { + s_bQueueVoodooDeploy = true; + } + //return; +} + +reliable server event InterruptFiring() +{ + TryDeployVoodoo(); + super.InterruptFiring(); + //return; +} + +reliable client simulated event ClientInterrupt() +{ + TryDeployVoodoo(); + super.ClientInterrupt(); + //return; +} + +simulated function bool InterceptLeftMousePressed(TgPlayerController TgController) +{ + // End:0x0F + if(TryDeployVoodoo()) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated function bool InterceptSlotPressed(TgPlayerController TgController) +{ + // End:0x0F + if(TryDeployVoodoo()) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated function float GetLockoutExtensionTime() +{ + return super.GetLockoutExtensionTime() + GetCurrentFire().GetCustomValue1(); + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + s_bQueueVoodooDeploy = false; + super.StartFiringLogic(); + //return; + } + + simulated function Tick(float DeltaTime) + { + // End:0x17 + if(s_bQueueVoodooDeploy) + { + TryDeployVoodoo(); + } + super(Actor).Tick(DeltaTime); + //return; + } + + simulated function FirePostHitDelay() + { + TryDeployVoodoo(); + super.FirePostHitDelay(); + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_DrogozInhand.uc b/exported/TgGame/Classes/TgDevice_DrogozInhand.uc new file mode 100755 index 00000000..ab66f88a --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_DrogozInhand.uc @@ -0,0 +1,230 @@ +class TgDevice_DrogozInhand extends TgDevice + native(ChampDrogoz) + hidecategories(Navigation); + +var TgPawn_Drogoz m_CachedDrogozPawn; +var Vector m_vSalvoProjectileSpawnOffset; +var bool m_bStartedSalvo; +var TgDevice m_SalvoDevice; +var int m_nSalvoRockets; + +// Export UTgDevice_DrogozInhand::execCanReload(FFrame&, void* const) +native function bool CanReload(optional bool bIsAutoReload = false); + +// Export UTgDevice_DrogozInhand::execShouldAutoFire(FFrame&, void* const) +native function bool ShouldAutoFire(); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x60 + if((((int(CurrentFireMode) == int(1)) && Current != none) && Current.m_nDeviceType != 11070) && ShouldAutoFire()) + { + return true; + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} + +simulated function FireAmmunition() +{ + // End:0x28 + if(int(CurrentFireMode) == int(1)) + { + m_nSalvoRockets = GetCurrentAmmoAmount(); + } + super.FireAmmunition(); + // End:0x64 + if((int(CurrentFireMode) == int(1)) && (GetCurrentAmmoAmount()) == 0) + { + NotifyDeviceEvent(4); + } + //return; +} + +simulated function bool HasCachedDrogozPawn() +{ + // End:0x2B + if(m_CachedDrogozPawn == none) + { + m_CachedDrogozPawn = TgPawn_Drogoz(Instigator); + } + return m_CachedDrogozPawn != none; + //return ReturnValue; +} + +simulated event SetAmmo(int AmmoCount, optional int ClipSize = -1, optional bool bShouldValidate = false, optional int ValidationIDOverride = 0) +{ + super.SetAmmo(AmmoCount, ClipSize); + // End:0x9E + if((int(Role) == int(ROLE_Authority)) && HasCachedDrogozPawn()) + { + m_CachedDrogozPawn.r_nInhandAmmoRemaining = GetCurrentAmmoAmount(); + m_CachedDrogozPawn.bNetDirty = true; + } + //return; +} + +simulated event Vector GetProjectileSpawnOffset() +{ + // End:0x1E + if(int(CurrentFireMode) == int(1)) + { + return m_vSalvoProjectileSpawnOffset; + } + return m_vProjectileSpawnOffset; + //return ReturnValue; +} + +simulated function PrimeSalvo() +{ + SetFireMode(1, true); + m_bStartedSalvo = false; + // End:0x46 + if(HasCachedDrogozPawn()) + { + m_CachedDrogozPawn.r_bSalvoActiveFlag = true; + } + //return; +} + +simulated function EndSalvo() +{ + // End:0x56 + if(Instigator.IsLocallyControlled()) + { + SetAmmo(r_nMaxAmmoClipCount,, true); + // End:0x56 + if(int(Role) < int(ROLE_Authority)) + { + ServerStartSalvoReload(); + } + } + // End:0x7D + if(int(CurrentFireMode) == int(1)) + { + SetTimer(1.0000000, false, 'SalvoPostFireTimer'); + } + SetFireMode(0, true); + m_nSalvoRockets = 0; + // End:0xC2 + if(HasCachedDrogozPawn()) + { + m_CachedDrogozPawn.r_bSalvoActiveFlag = false; + } + //return; +} + +function SalvoPostFireTimer() +{ + //return; +} + +reliable server function ServerStartSalvoReload() +{ + local bool bIsSalvoReloadAllowed; + + bIsSalvoReloadAllowed = (int(CurrentFireMode) == int(1)) || IsTimerActive('SalvoPostFireTimer'); + SetAmmo(((bIsSalvoReloadAllowed) ? r_nMaxAmmoClipCount : GetCurrentAmmoAmount()),, true); + NotifyDeviceEvent(4); + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0xF0 + case 11041: + // End:0xEE + if(Dev.IsA('TgDevice_Salvo')) + { + m_SalvoDevice = Dev; + Dev.RegisterDelegate(2, PrimeSalvo); + Dev.RegisterDelegate(3, EndSalvo); + } + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0xDB + case 11041: + // End:0xDB + if(Dev.IsA('TgDevice_Salvo')) + { + Dev.UnregisterDelegate(2, PrimeSalvo); + Dev.UnregisterDelegate(3, EndSalvo); + } + // End:0xFFFF + default: + //return; + break; + } +} + +simulated function Projectile ProjectileFire(optional int ProjectileIndex = 0) +{ + local TgProj_DrogozRocket drogozProj; + + drogozProj = TgProj_DrogozRocket(super.ProjectileFire(ProjectileIndex)); + // End:0x7F + if((m_nSalvoRockets > 0) || m_CachedDrogozPawn.r_bSalvoActiveFlag) + { + drogozProj.m_bWasFromSalvo = true; + } + return drogozProj; + //return ReturnValue; +} + +state DeviceFiring +{ + simulated function StartFiringLogic() + { + super.StartFiringLogic(); + // End:0x2A + if(int(CurrentFireMode) == int(1)) + { + m_bStartedSalvo = true; + } + //return; + } + stop; +} + +defaultproperties +{ + m_vSalvoProjectileSpawnOffset=(X=0.0000000,Y=4.5000000,Z=-6.0000000) + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=10.0000000,Y=2.0000000,Z=-2.0000000) + m_fWeaponBob=0.0000000 + m_vProjectileSpawnOffset=(X=0.0000000,Y=15.0000000,Z=-7.5000000) + m_fAltFireLockOutTime=0.0000000 + m_nLinkedDeviceTypes[0]=11041 + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ftLowMag",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H200ftLowMag",Distance=3200.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Drogoz.DeviceRocketLauncher' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.HeavyForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_DualFire.uc b/exported/TgGame/Classes/TgDevice_DualFire.uc new file mode 100755 index 00000000..69e7c96d --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_DualFire.uc @@ -0,0 +1,64 @@ +class TgDevice_DualFire extends TgDevice_ToggleWithLockout + hidecategories(Navigation); + +//var delegate __InterruptFiringDelegate__Delegate; + +simulated delegate InterruptFiringDelegate() +{ + // End:0x1E + if(int(Role) == int(ROLE_AutonomousProxy)) + { + ClientInterrupt(); + } + InterruptFiring(); + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x89 + case 13218: + Dev.RegisterDelegate(2, InterruptFiringDelegate); + // End:0x8C + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x89 + case 13218: + Dev.UnregisterDelegate(2, InterruptFiringDelegate); + // End:0x8C + break; + // End:0xFFFF + default: + break; + } + //return; +} + +defaultproperties +{ + m_nLinkedDeviceIDs[0]=13218 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_DualWield.uc b/exported/TgGame/Classes/TgDevice_DualWield.uc new file mode 100755 index 00000000..fed5f1aa --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_DualWield.uc @@ -0,0 +1,42 @@ +class TgDevice_DualWield extends TgDevice + native(Devices) + hidecategories(Navigation); + +var() Vector m_vProjectileSpawnOffset2; +var bool m_bFireLeftWeapon; + +simulated event Vector GetProjectileSpawnOffset() +{ + // End:0x1A + if(m_bFireLeftWeapon) + { + return m_vProjectileSpawnOffset2; + } + else + { + return m_vProjectileSpawnOffset; + } + //return ReturnValue; +} + +simulated function FireAmmunition() +{ + super.FireAmmunition(); + SetLeftFire(!m_bFireLeftWeapon); + //return; +} + +simulated function SetLeftFire(bool bLeftFire) +{ + m_bFireLeftWeapon = bLeftFire; + //return; +} + +defaultproperties +{ + m_vProjectileSpawnOffset2=(X=30.0000000,Y=-20.0000000,Z=-10.0000000) + m_bAimThroughReticule=true + m_vMeshViewOffset=(X=17.0000000,Y=0.0000000,Z=-5.0000000) + m_fMeshFOV=45.0000000 + m_vProjectileSpawnOffset=(X=30.0000000,Y=20.0000000,Z=-10.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_EarthenGuard.uc b/exported/TgGame/Classes/TgDevice_EarthenGuard.uc new file mode 100755 index 00000000..49e6b6a0 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_EarthenGuard.uc @@ -0,0 +1,15 @@ +class TgDevice_EarthenGuard extends TgDevice + hidecategories(Navigation); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return IsTimerActive('FirePreHitDelay') || IsTimerActive('OutroLockoutTime'); + //return ReturnValue; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit + m_bUsesOutroLockout=true + m_fOutroLockoutTime=0.1000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_EbbAndFlow.uc b/exported/TgGame/Classes/TgDevice_EbbAndFlow.uc new file mode 100755 index 00000000..7ce758ea --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_EbbAndFlow.uc @@ -0,0 +1,39 @@ +class TgDevice_EbbAndFlow extends TgDevice + native(ChampMakoa) + hidecategories(Navigation); + +var TgDevice m_ShellSpinDevice; + +simulated event bool StartFire() +{ + local TgTimerManager TimerManager; + + m_ShellSpinDevice = TgPawn(Owner).GetDeviceByEqPoint(4); + TimerManager = m_ShellSpinDevice.GetCooldownTimerManager(); + // End:0x8D + if(TimerManager.IsActiveTimers()) + { + return super.StartFire(); + } + else + { + return false; + } + //return ReturnValue; +} + +simulated event bool ShouldCooldownAfterFire() +{ + m_ShellSpinDevice = TgPawn(Owner).GetDeviceByEqPoint(4); + // End:0x7F + if(m_ShellSpinDevice.m_bCooldownWasModified == true) + { + m_ShellSpinDevice.m_bCooldownWasModified = false; + return true; + } + else + { + return false; + } + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_EmergencyExit.uc b/exported/TgGame/Classes/TgDevice_EmergencyExit.uc new file mode 100755 index 00000000..5cb2703a --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_EmergencyExit.uc @@ -0,0 +1,17 @@ +class TgDevice_EmergencyExit extends TgDevice + native(ChampSkye) + hidecategories(Navigation); + +simulated event bool StartFire() +{ + // End:0x40 + if(int(TgPawn(Owner).r_eIsStealthed) == int(0)) + { + return super.StartFire(); + } + else + { + return false; + } + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_Emitter.uc b/exported/TgGame/Classes/TgDevice_Emitter.uc new file mode 100755 index 00000000..8d694bf4 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Emitter.uc @@ -0,0 +1,225 @@ +class TgDevice_Emitter extends TgDevice + native(ChampRuckus) + hidecategories(Navigation); + +var array m_PawnsInRange; +var TgCollisionProxy_Cylinder m_CollisionProxy; +var bool m_bHasProjector; +var bool m_bIsOnOwner; +var float m_fProjectorPercent; +var TgPawn m_CachedPawnOwner; + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return false; + //return ReturnValue; +} + +simulated event bool CanJumpWhileFiring() +{ + return true; + //return ReturnValue; +} + +simulated function bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +function OnProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgDevice_EmitterMod modDevice; + local int I; + + // End:0x27 + if(!Other.IsA('TgPawn')) + { + return; + } + // End:0x13B + if(m_PawnsInRange.Find(Other) == -1) + { + m_PawnsInRange.AddItem(Other); + // End:0x13B + if(m_bHasProjector && m_CachedPawnOwner != none) + { + I = 0; + J0x86: + + // End:0x13B [Loop If] + if(I < 33) + { + modDevice = TgDevice_EmitterMod(m_CachedPawnOwner.m_EquippedDevices[I]); + // End:0x12D + if((modDevice != none) && modDevice.m_bIsOnOthers) + { + modDevice.ApplyTouchEffect(Other, self); + } + ++I; + // [Loop Continue] + goto J0x86; + } + } + } + //return; +} + +function OnProxyUnTouch(Actor Other) +{ + local TgDevice_EmitterMod modDevice; + local int I; + + // End:0x114 + if(m_PawnsInRange.Find(Other) != -1) + { + // End:0xFE + if(m_bHasProjector && m_CachedPawnOwner != none) + { + I = 0; + J0x49: + + // End:0xFE [Loop If] + if(I < 33) + { + modDevice = TgDevice_EmitterMod(m_CachedPawnOwner.m_EquippedDevices[I]); + // End:0xF0 + if((modDevice != none) && modDevice.m_bIsOnOthers) + { + modDevice.RemoveTouchEffect(Other, self); + } + ++I; + // [Loop Continue] + goto J0x49; + } + } + m_PawnsInRange.RemoveItem(Other); + } + //return; +} + +simulated event ClearAllTouched() +{ + J0x00: + // End:0x73 [Loop If] + if(m_PawnsInRange.Length > 0) + { + // End:0x70 + if(m_PawnsInRange[0] != none) + { + OnProxyUnTouch(m_PawnsInRange[0]); + // End:0x70 + if(m_PawnsInRange.Find(m_PawnsInRange[0]) != -1) + { + m_PawnsInRange.RemoveItem(m_PawnsInRange[0]); + } + } + // [Loop Continue] + goto J0x00; + } + //return; +} + +simulated event SpawnCollisionProxy() +{ + local TgDeviceFire FireMode; + local float Radius; + + FireMode = GetCurrentFire(); + // End:0x1F9 + if((FireMode != none) && Owner != none) + { + // End:0x70 + if(m_CollisionProxy != none) + { + ClearAllTouched(); + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + m_CollisionProxy = Spawn(Class'TgGame.TgCollisionProxy_Cylinder', Owner,, Owner.Location,,, true); + // End:0x1F9 + if(m_CollisionProxy != none) + { + m_CollisionProxy.SetBase(Owner); + m_CollisionProxy.__ProxyTouch__Delegate = OnProxyTouch; + m_CollisionProxy.__ProxyUnTouch__Delegate = OnProxyUnTouch; + m_CollisionProxy.DelegatesUpdated(); + Radius = FireMode.GetDamageRadius(); + m_CollisionProxy.m_CollisionCylinder.SetCylinderSize(Radius, Radius); + m_CollisionProxy.ForceProximityScan(); + } + } + //return; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PrevStateName) + { + local TgPawn_Ruckus TgP; + local TgDeviceFire FireMode; + local ImpactInfo selfImpact; + + // End:0xA3 + if((int(WorldInfo.NetMode) == int(NM_DedicatedServer)) || int(WorldInfo.NetMode) == int(NM_Standalone)) + { + TgP = TgPawn_Ruckus(Instigator); + // End:0xA3 + if(TgP != none) + { + TgP.m_fDamageAccumulator = 0.0000000; + } + } + SpawnCollisionProxy(); + // End:0x19A + if(!m_bIsOnOwner) + { + FireMode = GetCurrentFire(); + // End:0x19A + if((FireMode != none) && Owner != none) + { + selfImpact.bDirectHit = true; + selfImpact.DeviceModeReference = FireMode; + selfImpact.HitActor = Owner; + FireMode.ApplyHitSpecial(Owner, selfImpact); + m_bIsOnOwner = true; + } + } + super.BeginState(PrevStateName); + //return; + } + + simulated function EndState(name NextStateName) + { + local TgDeviceFire FireMode; + + super.EndState(NextStateName); + // End:0x8B + if(m_bIsOnOwner) + { + FireMode = GetCurrentFire(); + // End:0x8B + if((FireMode != none) && Owner != none) + { + FireMode.RemoveHitSpecial(Owner, true); + m_bIsOnOwner = false; + } + } + ClearAllTouched(); + // End:0xC7 + if(m_CollisionProxy != none) + { + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + //return; + } + stop; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit + m_bPostFireShouldInterruptStealth=false + m_bAbilityRequiresInhandResync=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_EmitterMod.uc b/exported/TgGame/Classes/TgDevice_EmitterMod.uc new file mode 100755 index 00000000..cb8908b3 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_EmitterMod.uc @@ -0,0 +1,12 @@ +class TgDevice_EmitterMod extends TgDevice + native(Devices) + hidecategories(Navigation); + +var bool m_bIsOnOthers; +var bool m_bIsOnOwner; + +// Export UTgDevice_EmitterMod::execApplyTouchEffect(FFrame&, void* const) +native function ApplyTouchEffect(Actor Target, TgDevice_Emitter Emitter); + +// Export UTgDevice_EmitterMod::execRemoveTouchEffect(FFrame&, void* const) +native function RemoveTouchEffect(Actor Target, TgDevice_Emitter Emitter); diff --git a/exported/TgGame/Classes/TgDevice_Emote.uc b/exported/TgGame/Classes/TgDevice_Emote.uc new file mode 100755 index 00000000..77c253f5 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Emote.uc @@ -0,0 +1,217 @@ +class TgDevice_Emote extends TgDevice + native(Devices) + hidecategories(Navigation); + +var TgPawn m_CachedPawnOwner; +var bool m_bAccelerationInterruptsDevice; +var bool m_bJumpingInterruptsDevice; +var Class m_DefaultCameraModuleClass; +var Class m_FiringCameraModuleClass; +var TgCameraModule m_FiringCameraModule; +var float m_fCameraTweenInTime; +var float m_fCameraTweenOutTime; +var Vector m_vFiringCameraOffset; + +// Export UTgDevice_Emote::execShouldBlockReload(FFrame&, void* const) +native function bool ShouldBlockReload(TgDevice Dev, bool bIsAutoReload); + +// Export UTgDevice_Emote::execMustBeOnGroundToFire(FFrame&, void* const) +native function bool MustBeOnGroundToFire(); + +// Export UTgDevice_Emote::execCanFiringBeLocked(FFrame&, void* const) +native function bool CanFiringBeLocked(); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x3C + if((Current != none) && int(Current.r_eEquippedAt) == int(23)) + { + return false; + } + return IsInState('DeviceBuildup') || IsInState('DeviceFiring') && IsTimerActive('FirePreHitDelay'); + //return ReturnValue; +} + +simulated event bool CanJumpWhileFiring() +{ + return super.CanJumpWhileFiring(); + //return ReturnValue; +} + +simulated event bool CanFiringBeCanceledByRightMouse() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanFiringBeCanceledByReactivation() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeFiredWhileTweening() +{ + return false; + //return ReturnValue; +} + +simulated function bool ShouldInterruptMount() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldInterruptReloadOnFire() +{ + return true; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return true; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return true; + //return ReturnValue; +} + +simulated function TurnOnSpecialCamera() +{ + local TgPlayerController PC; + local TgPlayerCamera Cam; + local Vector NewOffset; + + // End:0xF2 + if((m_vFiringCameraOffset == vect(0.0000000, 0.0000000, 0.0000000)) && (GetCurrentFire()) != none) + { + m_vFiringCameraOffset.X = -80.0000000 + GetCurrentFire().GetCustomValue1(); + m_vFiringCameraOffset.Y = GetCurrentFire().GetCustomValue2(); + m_vFiringCameraOffset.Z = -43.0000000 + GetCurrentFire().GetCustomValue3(); + } + // End:0x2E2 + if((m_FiringCameraModuleClass != none) && Instigator != none) + { + PC = TgPlayerController(Instigator.Controller); + Cam = ((PC != none) ? TgPlayerCamera(PC.PlayerCamera) : none); + // End:0x2E2 + if(((PC != none) && PC.IsLocalPlayerController()) && Cam != none) + { + m_DefaultCameraModuleClass = Cam.CurrentCameraMod.Class; + NewOffset = TgCameraModule_ThirdPerson(Cam.CurrentCameraMod).CameraOffset; + NewOffset += m_vFiringCameraOffset; + m_FiringCameraModule = Cam.SwitchCameras(m_FiringCameraModuleClass, m_fCameraTweenInTime); + TgCameraModule_ThirdPerson(Cam.CurrentCameraMod).CameraOffset = NewOffset; + } + } + //return; +} + +simulated function TurnOffSpecialCamera() +{ + local TgPlayerController PC; + local TgPlayerCamera Cam; + + // End:0x153 + if(((m_FiringCameraModule != none) && m_DefaultCameraModuleClass != none) && Instigator != none) + { + PC = TgPlayerController(Instigator.Controller); + Cam = ((PC != none) ? TgPlayerCamera(PC.PlayerCamera) : none); + // End:0x153 + if((((PC != none) && PC.IsLocalPlayerController()) && Cam != none) && Cam.CurrentCameraMod == m_FiringCameraModule) + { + Cam.SwitchCameras(m_DefaultCameraModuleClass, m_fCameraTweenOutTime); + m_DefaultCameraModuleClass = none; + } + } + //return; +} + +simulated function TgPawn GetCachedPawnOwner() +{ + local TgPawn PawnOwner; + + // End:0x4D + if(m_CachedPawnOwner == none) + { + PawnOwner = TgPawn(Instigator); + // End:0x4D + if(PawnOwner != none) + { + m_CachedPawnOwner = PawnOwner; + } + } + return m_CachedPawnOwner; + //return ReturnValue; +} + +simulated function Tick(float DeltaSeconds) +{ + super(Actor).Tick(DeltaSeconds); + // End:0xC9 + if(((int(Role) == int(ROLE_Authority)) && IsFiring()) && !IsTimerActive('FirePreHitDelay')) + { + // End:0xC9 + if((m_bAccelerationInterruptsDevice && VSizeSq(GetCachedPawnOwner().Acceleration) >= 0.5000000) || m_bJumpingInterruptsDevice && GetCachedPawnOwner().r_bIsJumping) + { + InterruptFiring(); + } + } + //return; +} + +simulated state DeviceBuildup +{ + simulated function BeginState(name PreviousStateName) + { + super.BeginState(PreviousStateName); + LockRotation(true); + TurnOnSpecialCamera(); + //return; + } + + simulated function EndState(name NextStateName) + { + super.EndState(NextStateName); + //return; + } + stop; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + super.BeginState(PreviousStateName); + //return; + } + + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + //return; + } + + simulated function EndState(name NextStateName) + { + super.EndState(NextStateName); + LockRotation(false); + TurnOffSpecialCamera(); + //return; + } + stop; +} + +defaultproperties +{ + m_bAccelerationInterruptsDevice=true + m_bJumpingInterruptsDevice=true + m_FiringCameraModuleClass=Class'TgGame.TgCameraModule_ThirdPersonVariableHeight' + m_fCameraTweenInTime=0.1000000 + m_fCameraTweenOutTime=0.1000000 + m_bForce3PViewWhileFiring=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Enlightenment.uc b/exported/TgGame/Classes/TgDevice_Enlightenment.uc new file mode 100755 index 00000000..254d237e --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Enlightenment.uc @@ -0,0 +1,198 @@ +class TgDevice_Enlightenment extends TgDevice + native(ChampPrincess) + hidecategories(Navigation); + +var TgPawn_Princess m_CachedPrincess; + +simulated function bool HasCachedPrincess() +{ + // End:0x2B + if(m_CachedPrincess == none) + { + m_CachedPrincess = TgPawn_Princess(Instigator); + } + return m_CachedPrincess != none; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + // End:0x12 + if(IsInState('DeviceBuildup')) + { + return false; + } + // End:0x21 + if(IsFiring()) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x36 + if(IsFiring()) + { + return Current.m_nDeviceType != 15052; + } + else + { + return false; + } + //return ReturnValue; +} + +simulated function StartTimeOut() +{ + local TgDeviceFire FireMode; + local float fDuration; + + FireMode = GetCurrentFire(); + // End:0x7D + if(FireMode != none) + { + fDuration = FireMode.GetCustomValue1(); + SetTimer(((fDuration > 0.0000000) ? fDuration : 2.0000000), false, 'TimeOut'); + } + //return; +} + +simulated function TimeOut() +{ + local bool bEndFiring; + + bEndFiring = true; + // End:0xD6 + if((HasCachedPrincess()) && m_CachedPrincess.HasCachedEnlightenmentGun()) + { + // End:0xD6 + if(m_CachedPrincess.m_CachedEnlightenmentGun.m_bAutoFireAfterPostHitDelay) + { + // End:0xD6 + if(m_CachedPrincess.HasCachedEnlightenmentGun()) + { + bEndFiring = false; + m_CachedPrincess.m_CachedEnlightenmentGun.Use(); + } + } + } + // End:0xF6 + if(bEndFiring) + { + SetTimer(0.1000000, false, 'FirePostHitDelay'); + } + //return; +} + +simulated function StartWaitForResultOfFireTimer() +{ + local float fPostFireDelay; + local TgDeviceFire enlightenmentFireMode; + + // End:0xEA + if((HasCachedPrincess()) && m_CachedPrincess.HasCachedEnlightenmentGun()) + { + // End:0xEA + if(m_CachedPrincess.HasCachedEnlightenmentGun()) + { + enlightenmentFireMode = m_CachedPrincess.m_CachedEnlightenmentGun.GetCurrentFire(); + // End:0xEA + if(enlightenmentFireMode != none) + { + fPostFireDelay = enlightenmentFireMode.GetPreHitDelay() + enlightenmentFireMode.GetPostHitDelay(); + } + } + } + SetTimer(((fPostFireDelay > 0.0000000) ? fPostFireDelay : 0.1000000), false, 'WaitForResultOfFire'); + //return; +} + +simulated function WaitForResultOfFire() +{ + local float fTimeout; + local TgDeviceFire enlightenmentFireMode; + local bool bEndFiring; + local int nAmmoCount; + + bEndFiring = true; + // End:0x1AB + if(HasCachedPrincess()) + { + // End:0x1AB + if(m_CachedPrincess.HasCachedEnlightenmentGun()) + { + nAmmoCount = m_CachedPrincess.m_CachedEnlightenmentGun.GetCurrentAmmoAmount(); + // End:0xD7 + if(nAmmoCount > 0) + { + m_CachedPrincess.m_CachedEnlightenmentGun.m_bAutoFireAfterPostHitDelay = true; + StartTimeOut(); + bEndFiring = false; + } + else + { + enlightenmentFireMode = m_CachedPrincess.m_CachedEnlightenmentGun.GetCurrentFire(); + // End:0x16E + if(enlightenmentFireMode != none) + { + fTimeout = enlightenmentFireMode.GetPreHitDelay() + enlightenmentFireMode.GetPostHitDelay(); + } + SetTimer(((fTimeout > 0.0000000) ? fTimeout : 0.1000000), false, 'FirePostHitDelay'); + bEndFiring = false; + } + } + } + // End:0x1CB + if(bEndFiring) + { + SetTimer(0.1000000, false, 'FirePostHitDelay'); + } + //return; +} + +simulated state DeviceBuildup +{ + simulated function BeginState(name PreviousStateName) + { + super.BeginState(PreviousStateName); + ClearTimer('TimeOut'); + //return; + } + stop; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + // End:0x2D + if(HasCachedPrincess()) + { + m_CachedPrincess.ToggleEnlightenmentGun(true); + } + StartTimeOut(); + super.StartFiringLogic(); + //return; + } + + simulated function FirePostHitDelay() + { + super.FirePostHitDelay(); + //return; + } + + simulated function StopFiringLogic() + { + // End:0x2D + if(HasCachedPrincess()) + { + m_CachedPrincess.ToggleEnlightenmentGun(false); + } + super.StopFiringLogic(); + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_EnlightenmentGun.uc b/exported/TgGame/Classes/TgDevice_EnlightenmentGun.uc new file mode 100755 index 00000000..fee7c196 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_EnlightenmentGun.uc @@ -0,0 +1,57 @@ +class TgDevice_EnlightenmentGun extends TgDevice + native(ChampPrincess) + hidecategories(Navigation); + +var TgPawn_Princess m_CachedPrincess; +var bool m_bAutoFireAfterPostHitDelay; + +// Export UTgDevice_EnlightenmentGun::execRequiresAmmoToFire(FFrame&, void* const) +native function bool RequiresAmmoToFire(); + +simulated function bool HasCachedPrincess() +{ + // End:0x2B + if(m_CachedPrincess == none) + { + m_CachedPrincess = TgPawn_Princess(Instigator); + } + return m_CachedPrincess != none; + //return ReturnValue; +} + +simulated event bool UsesSimulatedAmmo() +{ + return false; + //return ReturnValue; +} + +simulated function bool ShouldSwitchBackToBasicAttackTargeting(TgClientSettings.ECastMode CastMode) +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + m_bAutoFireAfterPostHitDelay = false; + // End:0xEE + if(HasCachedPrincess()) + { + // End:0xEE + if(m_CachedPrincess.HasCachedEnlightenment()) + { + // End:0xBA + if(m_CachedPrincess.m_CachedEnlightenment.IsTimerActive('TimeOut')) + { + m_CachedPrincess.m_CachedEnlightenment.ClearTimer('TimeOut'); + } + m_CachedPrincess.m_CachedEnlightenment.StartWaitForResultOfFireTimer(); + } + } + super.StartFiringLogic(); + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_EvieInhand.uc b/exported/TgGame/Classes/TgDevice_EvieInhand.uc new file mode 100755 index 00000000..c58e1bc4 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_EvieInhand.uc @@ -0,0 +1,47 @@ +class TgDevice_EvieInhand extends TgDevice + hidecategories(Navigation); + +simulated function InterruptOtherDevices(TgPawn TgP) +{ + super.InterruptOtherDevices(TgP); + // End:0x5F + if(int(Role) == int(ROLE_Authority)) + { + // End:0x5F + if(TgP != none) + { + TgP.InterruptDeviceFiringByClass(Class'TgGame.TgDevice_IceBlock'); + } + } + //return; +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=17.0000000,Y=0.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_vProjectileSpawnOffset=(X=21.0000000,Y=8.0000000,Z=-10.0000000) + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_IceStaff' + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetVert[1]=(KeyframeName="V100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetVert[2]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[2]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="trackang100fthighx",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[2]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[1]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[1]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Evie.DeviceIceStaff' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.HeavyForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_EvilMojo.uc b/exported/TgGame/Classes/TgDevice_EvilMojo.uc new file mode 100755 index 00000000..58632b9a --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_EvilMojo.uc @@ -0,0 +1,7 @@ +class TgDevice_EvilMojo extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_vProjectileSpawnOffset=(X=0.0000000,Y=18.0000000,Z=-20.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ExitStrategy.uc b/exported/TgGame/Classes/TgDevice_ExitStrategy.uc new file mode 100755 index 00000000..9db02d5f --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ExitStrategy.uc @@ -0,0 +1,2 @@ +class TgDevice_ExitStrategy extends TgDevice + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_ExplosiveFlask.uc b/exported/TgGame/Classes/TgDevice_ExplosiveFlask.uc new file mode 100755 index 00000000..89e73f0f --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ExplosiveFlask.uc @@ -0,0 +1,9 @@ +class TgDevice_ExplosiveFlask extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_bDeployAtFeetOnFailure=true + m_vProjectileSpawnOffset=(X=30.0000000,Y=7.0000000,Z=-15.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Pip.DeviceExplosiveFlask' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_FaeFlight.uc b/exported/TgGame/Classes/TgDevice_FaeFlight.uc new file mode 100755 index 00000000..17a81228 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_FaeFlight.uc @@ -0,0 +1,106 @@ +class TgDevice_FaeFlight extends TgDevice + native(ChampFairy) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; + +// Export UTgDevice_FaeFlight::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x73 + if(Current != none) + { + // End:0x45 + if(Current.m_nDeviceType == 11077) + { + return IsFiring(); + } + else + { + // End:0x73 + if(Current.IsA('TgDevice_Flutter')) + { + return IsFiring(); + } + } + } + return IsTimerActive('FirePreHitDelay') || IsTimerActive('OutroLockoutTime'); + //return ReturnValue; +} + +simulated event bool ShouldMountCancelFiring() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgPawn_Fairy Fairy; + local float fCustomValue; + + fCustomValue = 0.0000000; + Fairy = TgPawn_Fairy(Instigator); + // End:0x1CE + if(Fairy != none) + { + fCustomValue = GetCurrentFire().GetCustomValue2(); + // End:0x9F + if(fCustomValue > 0.0000000) + { + Fairy.m_fFairyFlySpeedModifier = fCustomValue; + } + fCustomValue = GetCurrentFire().GetCustomValue3(); + // End:0x104 + if(fCustomValue > 0.0000000) + { + Fairy.m_fFlightAccelerationPerSecond = fCustomValue; + } + fCustomValue = GetCurrentFire().GetCustomValue4(); + // End:0x169 + if(fCustomValue > 0.0000000) + { + Fairy.m_fFlightDecelerationPerSecond = fCustomValue; + } + fCustomValue = GetCurrentFire().GetCustomValue5(); + // End:0x1CE + if(fCustomValue > 0.0000000) + { + Fairy.m_fAscentDecelerationPerSecond = fCustomValue; + } + } + super.StartFiringLogic(); + //return; + } + + simulated function StopFiringLogic() + { + local TgPawn_Fairy Fairy; + + Fairy = TgPawn_Fairy(Instigator); + // End:0x4F + if(Fairy != none) + { + Fairy.m_fFairyFlySpeedModifier = 1.0000000; + } + super.StopFiringLogic(); + //return; + } + stop; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Failsafe.uc b/exported/TgGame/Classes/TgDevice_Failsafe.uc new file mode 100755 index 00000000..15a327a1 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Failsafe.uc @@ -0,0 +1,39 @@ +class TgDevice_Failsafe extends TgDevice + native(ChampBarik) + hidecategories(Navigation); + +var TgDevice m_RocketBootsDevice; + +simulated event bool StartFire() +{ + local TgTimerManager TimerManager; + + m_RocketBootsDevice = TgPawn(Owner).GetDeviceByEqPoint(4); + TimerManager = m_RocketBootsDevice.GetCooldownTimerManager(); + // End:0x8D + if(TimerManager.IsActiveTimers()) + { + return super.StartFire(); + } + else + { + return false; + } + //return ReturnValue; +} + +simulated event bool ShouldCooldownAfterFire() +{ + m_RocketBootsDevice = TgPawn(Owner).GetDeviceByEqPoint(4); + // End:0x7C + if(m_RocketBootsDevice.m_bCooldownWasModified) + { + m_RocketBootsDevice.m_bCooldownWasModified = false; + return true; + } + else + { + return false; + } + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_FairyInhand.uc b/exported/TgGame/Classes/TgDevice_FairyInhand.uc new file mode 100755 index 00000000..b1fbb163 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_FairyInhand.uc @@ -0,0 +1,36 @@ +class TgDevice_FairyInhand extends TgDevice + native(ChampFairy) + hidecategories(Navigation); + +// Export UTgDevice_FairyInhand::execDeviceAdjustDamage(FFrame&, void* const) +native function DeviceAdjustDamage(const out ImpactInfo Impact, out float fDamage, int nPropertyId); + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=17.0000000,Y=0.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_vProjectileSpawnOffset=(X=21.0000000,Y=8.0000000,Z=-10.0000000) + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_IceStaff' + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetVert[1]=(KeyframeName="V100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetVert[2]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[2]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[2]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[1]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[1]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Willo.DeviceInhand' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.HeavyForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_FernandoImmortal.uc b/exported/TgGame/Classes/TgDevice_FernandoImmortal.uc new file mode 100755 index 00000000..90b7b3de --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_FernandoImmortal.uc @@ -0,0 +1,67 @@ +class TgDevice_FernandoImmortal extends TgDevice_ActiveAura + hidecategories(Navigation); + +simulated event bool CanBeCanceled() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return IsInState('DeviceBuildup') || IsInState('DeviceFiring') && IsTimerActive('EndLockOutEarly') || (Current != none) && !Current.m_bHandDevice; + //return ReturnValue; +} + +simulated event bool CanJumpWhileFiring() +{ + return false; + //return ReturnValue; +} + +simulated function EndLockOutEarly() +{ + ClearTimer('EndLockOutEarly'); + LockInput(false); + //return; +} + +simulated state DeviceFiring +{ + simulated function RestartFireLoop(bool bRefire) + { + local TgDeviceFire FireMode; + local float fLockOutTime; + + super.RestartFireLoop(bRefire); + // End:0xAB + if(IsFiring()) + { + FireMode = GetCurrentFire(); + fLockOutTime = ((FireMode != none) ? FireMode.GetCustomValue1() : 0.0000000); + // End:0xA1 + if(fLockOutTime > 0.0000000) + { + SetTimer(fLockOutTime, false, 'EndLockOutEarly'); + } + else + { + EndLockOutEarly(); + } + } + //return; + } + + simulated function EndState(name NextStateName) + { + super.EndState(NextStateName); + ClearTimer('EndLockOutEarly'); + //return; + } + stop; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_FernandoInhand.uc b/exported/TgGame/Classes/TgDevice_FernandoInhand.uc new file mode 100755 index 00000000..b07ea79b --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_FernandoInhand.uc @@ -0,0 +1,38 @@ +class TgDevice_FernandoInhand extends TgDevice + native(ChampFernando) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; + +// Export UTgDevice_FernandoInhand::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_ReticuleType=EReticuleType.RETICULE_Wide + m_bAltFireEnabled=true + m_bCanReloadEarly=false + m_vMeshViewOffset=(X=0.0000000,Y=0.0000000,Z=-8.0000000) + m_fWeaponBob=0.0000000 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_Lance' + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetVert[1]=(KeyframeName="V100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetVert[2]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftxlow",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[2]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[2]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[1]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[1]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.LightForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_FireInAir.uc b/exported/TgGame/Classes/TgDevice_FireInAir.uc new file mode 100755 index 00000000..fa5607b9 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_FireInAir.uc @@ -0,0 +1,11 @@ +class TgDevice_FireInAir extends TgDevice + native(Devices) + hidecategories(Navigation); + +// Export UTgDevice_FireInAir::execMustBeOnGroundToFire(FFrame&, void* const) +native function bool MustBeOnGroundToFire(); + +defaultproperties +{ + m_bDeployAtFeetOnFailure=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_FireSpit.uc b/exported/TgGame/Classes/TgDevice_FireSpit.uc new file mode 100755 index 00000000..f57bf7c2 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_FireSpit.uc @@ -0,0 +1,36 @@ +class TgDevice_FireSpit extends TgDevice + hidecategories(Navigation); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x54 + if(((Current != none) && Current.r_nDeviceId == 13328) && IsTimerActive('FirePostHitDelay')) + { + return false; + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} + +simulated function int GetAimAssistPriority() +{ + // End:0x32 + if((IsFiring()) || self.m_FiredProjectiles.Length != 0) + { + return 1000; + } + return -1; + //return ReturnValue; +} + +defaultproperties +{ + m_AimAssistKeyframesMagnetVert=none + m_AimAssistKeyframesMagnetHoriz=none + m_AimAssistKeyframesFriction=none + m_AimAssistKeyframesTrackingAccHoriz=none + m_AimAssistKeyframesTrackingAngleHoriz=none + m_AimAssistKeyframesTrackingAccVert=none + m_AimAssistKeyframesTrackingAngleVert=none + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Drogoz.DeviceFireSpit' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Fireball.uc b/exported/TgGame/Classes/TgDevice_Fireball.uc new file mode 100755 index 00000000..38f028b0 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Fireball.uc @@ -0,0 +1,7 @@ +class TgDevice_Fireball extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_vProjectileSpawnOffset=(X=30.0000000,Y=20.0000000,Z=-10.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_FlakInhand.uc b/exported/TgGame/Classes/TgDevice_FlakInhand.uc new file mode 100755 index 00000000..bbbd2b4f --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_FlakInhand.uc @@ -0,0 +1,77 @@ +class TgDevice_FlakInhand extends TgDevice + native(ChampFlak) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var TgDevice_KineticBurst m_KineticDevice; + +// Export UTgDevice_FlakInhand::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +// Export UTgDevice_FlakInhand::execHasKineticDevice(FFrame&, void* const) +native function bool HasKineticDevice(); + +simulated function FireAmmunition() +{ + super.FireAmmunition(); + // End:0x6B + if(HasKineticDevice()) + { + // End:0x6B + if(int(CurrentFireMode) == int(1)) + { + m_KineticDevice.InterruptFiring(); + m_KineticDevice.StartCooldown(); + } + } + //return; +} + +simulated event bool CanBeInterrupted() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function FirePostHitDelay() + { + // End:0x20 + if(int(CurrentFireMode) == int(1)) + { + SetFireMode(0, true); + } + super.FirePostHitDelay(); + //return; + } + + simulated function StopFiringLogic() + { + super.StopFiringLogic(); + // End:0x2A + if(int(CurrentFireMode) == int(1)) + { + SetFireMode(0, true); + } + //return; + } + stop; +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAltFireEnabled=true + m_fMeshFOV=77.0000000 + m_vProjectileSpawnOffset=(X=0.0000000,Y=15.0000000,Z=-7.5000000) + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_FlakInhand' + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Flak.DeviceInhand' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Flutter.uc b/exported/TgGame/Classes/TgDevice_Flutter.uc new file mode 100755 index 00000000..7554e231 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Flutter.uc @@ -0,0 +1,13 @@ +class TgDevice_Flutter extends TgDevice_Charge + native(ChampFairy) + hidecategories(Navigation); + +// Export UTgDevice_Flutter::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +defaultproperties +{ + m_eChargeState=EChargeState.CHARGE_Fairy + m_ChargeTimingType=ChargeFiringType.CFT_PostFire + m_bUsePhysFlying=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Fortify.uc b/exported/TgGame/Classes/TgDevice_Fortify.uc new file mode 100755 index 00000000..80b5859b --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Fortify.uc @@ -0,0 +1,3 @@ +class TgDevice_Fortify extends TgDevice_BarricadeMod + native(ChampBarik) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_FragGrenade.uc b/exported/TgGame/Classes/TgDevice_FragGrenade.uc new file mode 100755 index 00000000..f5a9dd52 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_FragGrenade.uc @@ -0,0 +1,347 @@ +class TgDevice_FragGrenade extends TgDevice + native(ChampViktor) + hidecategories(Navigation); + +var TgPawn_Viktor m_CachedViktor; +var bool m_bEndCook; +var bool m_bThrownGrenade; +var bool s_bCanPickUpNuggetRefills; +var bool s_bFullCook; + +// Export UTgDevice_FragGrenade::execRequiresAmmoToFire(FFrame&, void* const) +native function bool RequiresAmmoToFire(); + +simulated function SetThrowSpeedMultiplier(float Mult) +{ + local TgRepInfo_Player PRI; + local TgDeviceFire FireMode; + + // End:0xDD + if(Instigator != none) + { + PRI = TgRepInfo_Player(Instigator.PlayerReplicationInfo); + FireMode = GetCurrentFire(); + // End:0xDD + if((PRI != none) && FireMode != none) + { + PRI.SetSimProjSpeed(FireMode.m_nId, FireMode.GetPropertyValue(46) * Mult); + } + } + //return; +} + +simulated function DropGrenade() +{ + // End:0x28 + if(!m_bThrownGrenade) + { + SetThrowSpeedMultiplier(0.0500000); + FireAmmunition(); + } + //return; +} + +simulated function FireAmmunition() +{ + // End:0x19 + if(!m_bThrownGrenade) + { + super.FireAmmunition(); + } + m_bThrownGrenade = true; + //return; +} + +function CooldownTimerExpired(int nTimerId, TgTimerManager.TGT_EVENT eEvent, optional bool bNoBecomeActive) +{ + super.CooldownTimerExpired(nTimerId, eEvent, bNoBecomeActive); + // End:0xC2 + if(int(Role) == int(ROLE_Authority)) + { + // End:0xC2 + if(s_bCanPickUpNuggetRefills && !IsDeviceCoolingDown()) + { + // End:0xC2 + if(HasCachedViktor()) + { + m_CachedViktor.SetProperty(31, float(Max(0, int(m_CachedViktor.GetPropCurrentValue(31) - 1.0000000)))); + s_bCanPickUpNuggetRefills = false; + } + } + } + //return; +} + +simulated function StartThrowValidation() +{ + s_bFullCook = true; + //return; +} + +simulated function StartThrow() +{ + local float fPreHitDelay; + + // End:0x1F + if(!m_bEndCook) + { + SetGrenadeCookTime(1.0000000, true); + } + m_bEndCook = true; + ClearTimer('StartThrow'); + NotifyDeviceEvent(5); + fPreHitDelay = GetFiringPreHitDelay(); + m_fFiringTimer = WorldInfo.TimeSeconds + (fPreHitDelay / CustomTimeDilation); + m_fTimeStampAccountedFor = WorldInfo.TimeSeconds; + m_fTimeAccountedFor = 0.0000000; + SetTimer(fPreHitDelay, false, 'FirePreHitDelay'); + // End:0x183 + if(HasCachedViktor()) + { + m_CachedViktor.FlashGeneric1(r_nDeviceInstanceId, int(CurrentFireMode)); + // End:0x183 + if(int(Role) < int(ROLE_Authority)) + { + m_CachedViktor.c_EquipForm[int(r_eEquippedAt)].Generic1(); + } + } + //return; +} + +simulated function SetGrenadeCookTime(float fCookAmt, optional bool bSendToServer = false) +{ + local float fExplodeTime; + + // End:0x39 + if(int(Role) < int(ROLE_Authority)) + { + // End:0x39 + if(bSendToServer) + { + ServerEndCook(fCookAmt); + } + } + // End:0x127 + if(HasCachedViktor()) + { + fExplodeTime = Lerp(GetCurrentFire().GetCustomValue2(), GetCurrentFire().GetCustomValue3(), FClamp(fCookAmt + 0.0010000, 0.0000000, 1.0000000)); + m_CachedViktor.r_fFragGrenadeExplodeTime = fExplodeTime; + m_CachedViktor.r_bFragGrenadeExplodeOnTouch = fCookAmt >= 1.0000000; + m_CachedViktor.bNetDirty = true; + } + //return; +} + +simulated function bool InterceptSlotReleased(TgPlayerController TgController) +{ + // End:0x84 + if((IsInState('DeviceBuildup') || IsTimerActive('StartThrow')) && !m_bEndCook) + { + m_bEndCook = true; + // End:0x74 + if(IsTimerActive('StartThrow')) + { + SetAndSendGrenadeTimingsViaStartThrowTimer(); + StartThrow(); + } + else + { + SetGrenadeCookTime(0.0000000, true); + } + } + return true; + //return ReturnValue; +} + +simulated function SetAndSendGrenadeTimingsViaStartThrowTimer() +{ + local float fCookTimerRate, fCookTimerCount, fCookTime; + + fCookTimerRate = GetTimerRate('StartThrow'); + fCookTimerCount = GetTimerCount('StartThrow'); + // End:0x85 + if((fCookTimerRate > 0.0000000) && fCookTimerCount >= 0.0000000) + { + fCookTime = fCookTimerCount / fCookTimerRate; + } + else + { + fCookTime = 1.0000000; + } + SetGrenadeCookTime(fCookTime, true); + //return; +} + +reliable server function ServerEndCook(float fCookPct) +{ + local float fCookTimerRate, fCookTimerCount, fServerCookPct; + + m_bEndCook = true; + fCookPct = FClamp(fCookPct, 0.0000000, 1.0000000); + fCookTimerRate = GetTimerRate('StartThrowValidation'); + fCookTimerCount = GetTimerCount('StartThrowValidation'); + // End:0xBC + if((fCookTimerRate > 0.0000000) && fCookTimerCount >= 0.0000000) + { + fServerCookPct = FClamp(fCookTimerCount / fCookTimerRate, 0.0000000, 1.0000000); + } + else + { + // End:0xDB + if(s_bFullCook) + { + fServerCookPct = 1.0000000; + } + else + { + fServerCookPct = 0.0000000; + } + } + // End:0x13F + if(((fCookPct + 0.2000000) > fServerCookPct) && (fCookPct - 0.2000000) < fServerCookPct) + { + SetGrenadeCookTime(fCookPct); + } + else + { + SetGrenadeCookTime(fServerCookPct); + } + ClearTimer('InterruptFiring'); + // End:0x1AB + if(IsTimerActive('StartThrowValidation') || s_bFullCook) + { + ClearTimer('StartThrowValidation'); + StartThrow(); + } + //return; +} + +simulated function bool HasCachedViktor() +{ + // End:0x38 + if(m_CachedViktor == none) + { + m_CachedViktor = TgPawn_Viktor(Instigator); + return m_CachedViktor != none; + } + return true; + //return ReturnValue; +} + +reliable server event InterruptFiring() +{ + // End:0x1A + if(IsInState('DeviceFiring')) + { + DropGrenade(); + } + super.InterruptFiring(); + m_bEndCook = false; + //return; +} + +reliable client simulated event ClientInterrupt() +{ + // End:0x1A + if(IsInState('DeviceFiring')) + { + DropGrenade(); + } + super.ClientInterrupt(); + m_bEndCook = false; + //return; +} + +simulated event bool CanBeInterrupted() +{ + return super.CanBeInterrupted() || IsInState('DeviceFiring'); + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return !IsInState('DeviceBuildup') && super.CanBeCanceled(); + //return ReturnValue; +} + +simulated event bool ShouldCooldownAfterFire() +{ + return true; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function RestartFireLoop(bool bRefire) + { + super.RestartFireLoop(bRefire); + SetThrowSpeedMultiplier(1.0000000); + m_bThrownGrenade = false; + s_bFullCook = false; + // End:0x14F + if(!m_bEndCook && Instigator.IsHumanControlled()) + { + ClearTimer('FirePreHitDelay'); + // End:0xD6 + if(Instigator.IsLocallyControlled()) + { + SetTimer(GetCurrentFire().GetCustomValue1(), false, 'StartThrow'); + } + else + { + SetTimer(GetCurrentFire().GetCustomValue1(), false, 'StartThrowValidation'); + SetTimer(FMax(GetCurrentFire().GetCustomValue1() * 2.0000000, 2.0000000), false, 'InterruptFiring'); + } + NotifyDeviceEvent(4); + } + else + { + // End:0x1E6 + if(HasCachedViktor()) + { + m_CachedViktor.FlashGeneric1(r_nDeviceInstanceId, int(CurrentFireMode)); + // End:0x1E6 + if(int(Role) < int(ROLE_Authority)) + { + m_CachedViktor.c_EquipForm[int(r_eEquippedAt)].Generic1(); + } + } + } + //return; + } + + simulated function EndState(name NextStateName) + { + m_bEndCook = false; + super.EndState(NextStateName); + // End:0xB1 + if(int(Role) == int(ROLE_Authority)) + { + // End:0xB1 + if(!s_bCanPickUpNuggetRefills && IsDeviceCoolingDown()) + { + // End:0xB1 + if(HasCachedViktor()) + { + m_CachedViktor.SetProperty(31, m_CachedViktor.GetPropCurrentValue(31) + float(1)); + s_bCanPickUpNuggetRefills = true; + } + } + } + //return; + } + stop; +} + +defaultproperties +{ + m_AimAssistKeyframesMagnetVert=none + m_AimAssistKeyframesMagnetHoriz=none + m_AimAssistKeyframesFriction=none + m_AimAssistKeyframesTrackingAccHoriz=none + m_AimAssistKeyframesTrackingAngleHoriz=none + m_AimAssistKeyframesTrackingAccVert=none + m_AimAssistKeyframesTrackingAngleVert=none + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Viktor.DeviceFragGrenade' + m_nAimAssistPriorityWhileFiring=2 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_FragGrenadeModWhileCook.uc b/exported/TgGame/Classes/TgDevice_FragGrenadeModWhileCook.uc new file mode 100755 index 00000000..442c7bb5 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_FragGrenadeModWhileCook.uc @@ -0,0 +1,87 @@ +class TgDevice_FragGrenadeModWhileCook extends TgDevice + hidecategories(Navigation); + +function ApplyHitSpecial() +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x5F + if((FireMode != none) && Instigator != none) + { + FireMode.ApplyHitSpecial(Instigator); + } + //return; +} + +function RemoveHitSpecial() +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x5F + if((FireMode != none) && Instigator != none) + { + FireMode.RemoveHitSpecial(Instigator, true); + } + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0xCF + case 14149: + // End:0xCC + if(int(Role) == int(ROLE_Authority)) + { + Dev.RegisterDelegate(4, ApplyHitSpecial); + Dev.RegisterDelegate(5, RemoveHitSpecial); + } + // End:0xD2 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0xCF + case 14149: + // End:0xCC + if(int(Role) == int(ROLE_Authority)) + { + Dev.UnregisterDelegate(4, ApplyHitSpecial); + Dev.UnregisterDelegate(5, RemoveHitSpecial); + } + // End:0xD2 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +defaultproperties +{ + m_nLinkedDeviceIDs[0]=14149 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_GaeBolg.uc b/exported/TgGame/Classes/TgDevice_GaeBolg.uc new file mode 100755 index 00000000..1ff99dea --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_GaeBolg.uc @@ -0,0 +1,9 @@ +class TgDevice_GaeBolg extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_bForce3PViewWhileFiring=true + m_bUsesOutroLockout=true + m_vProjectileSpawnOffset=(X=0.0000000,Y=10.0000000,Z=-30.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_GauntletInhand.uc b/exported/TgGame/Classes/TgDevice_GauntletInhand.uc new file mode 100755 index 00000000..68001bcc --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_GauntletInhand.uc @@ -0,0 +1,102 @@ +class TgDevice_GauntletInhand extends TgDevice + native(ChampGauntlet) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var TgPawn_Gauntlet m_CachedGauntletPawn; + +// Export UTgDevice_GauntletInhand::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +simulated function ImpactInfo CalcWeaponFire(AimData Aim, optional out array ImpactList) +{ + local ImpactInfo Impact; + + Impact = super.CalcWeaponFire(Aim, ImpactList); + UpdateInhandTargetInfo(Impact.HitActor, Impact.HitLocation); + return Impact; + //return ReturnValue; +} + +function OnInstantShotVerified(ImpactInfo VerifiedPrimaryImpact) +{ + UpdateInhandTargetInfo(VerifiedPrimaryImpact.HitActor, VerifiedPrimaryImpact.HitLocation); + //return; +} + +simulated function UpdateInhandTargetInfo(Actor HitActor, Vector HitLocation) +{ + // End:0x103 + if(HasCachedGauntlet()) + { + // End:0x61 + if(m_CachedGauntletPawn.r_InhandTarget != HitActor) + { + m_CachedGauntletPawn.r_InhandTarget = HitActor; + } + // End:0xE2 + if(m_CachedGauntletPawn.r_InhandTarget != none) + { + m_CachedGauntletPawn.r_InhandHitOffset = HitLocation - m_CachedGauntletPawn.r_InhandTarget.Location; + } + m_CachedGauntletPawn.bNetDirty = true; + } + //return; +} + +simulated function bool HasCachedGauntlet() +{ + // End:0x2B + if(m_CachedGauntletPawn == none) + { + m_CachedGauntletPawn = TgPawn_Gauntlet(Instigator); + } + return m_CachedGauntletPawn != none; + //return ReturnValue; +} + +simulated function StopFire() +{ + // End:0x4E + if(HasCachedGauntlet()) + { + m_CachedGauntletPawn.r_InhandTarget = none; + m_CachedGauntletPawn.bNetDirty = true; + } + super.StopFire(); + //return; +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_bDisableLagCompensation=true + m_bDoNotAllowHeadShots=true + m_vMeshViewOffset=(X=10.0000000,Y=2.0000000,Z=-2.0000000) + m_fWeaponBob=0.0000000 + m_fMeshFOV=90.0000000 + m_vProjectileSpawnOffset=(X=0.0000000,Y=4.0000000,Z=-9.0000000) + m_fAltFireLockOutTime=0.0000000 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_GauntletInhand' + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetVert[1]=(KeyframeName="V100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetVert[2]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[2]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[2]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[1]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[1]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.LightForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_GeometryBarrierTank.uc b/exported/TgGame/Classes/TgDevice_GeometryBarrierTank.uc new file mode 100755 index 00000000..35bafc62 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_GeometryBarrierTank.uc @@ -0,0 +1,286 @@ +class TgDevice_GeometryBarrierTank extends TgDevice + native(ChampBarrierTank) + hidecategories(Navigation); + +const IMPASSE_POST_TARGET_LOCKOUT_TIME = 0.7f; + +var float r_fTremorsCooldownReduction; +var float m_fCachedWallHealthPercent; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_fTremorsCooldownReduction; +} + +// Export UTgDevice_GeometryBarrierTank::execGetGroundTargetAim(FFrame&, void* const) +native function GetGroundTargetAim(out AimData Aim); + +// Export UTgDevice_GeometryBarrierTank::execMustBeOnGroundToFire(FFrame&, void* const) +native function bool MustBeOnGroundToFire(); + +// Export UTgDevice_GeometryBarrierTank::execShouldAltFireOnTick(FFrame&, void* const) +native function bool ShouldAltFireOnTick(); + +// Export UTgDevice_GeometryBarrierTank::execUpdateTargetingModeStatus(FFrame&, void* const) +native function UpdateTargetingModeStatus(const out AimData Aim); + +simulated function bool InterceptSlotPressed(TgPlayerController TgController) +{ + local TgPawn PawnOwner; + local WeaponMeshSwapStrategy SwapStrategy; + + // End:0x27 + if(IsFiring()) + { + // End:0x24 + if(CanBeCanceled()) + { + InterruptFiring(); + } + } + else + { + // End:0xEE + if(!m_bInTargetingMode && IsActive()) + { + PawnOwner = TgPawn(Owner); + // End:0xEE + if(PawnOwner != none) + { + // End:0xEE + if(PawnOwner.StartAction(self)) + { + PawnOwner.SetTargetingDevice(self, SwapStrategy); + // End:0xEE + if(PawnOwner.c_CurrentTargetingDevice != self) + { + InterruptFiring(); + } + } + } + } + } + return true; + //return ReturnValue; +} + +simulated function bool InterceptSlotReleased(TgPlayerController TgController) +{ + local AimData Aim; + + // End:0x72 + if(IsInState('DeviceBuildup') && m_bInTargetingMode) + { + GetTargetingAim(Aim); + // End:0x5F + if(Aim.bResult) + { + EndCustomTargeting(); + } + else + { + InterceptRightMousePressed(TgController); + } + } + return true; + //return ReturnValue; +} + +simulated function bool InterceptLeftMousePressed(TgPlayerController TgController) +{ + local AimData Aim; + + // End:0x95 + if(IsInState('DeviceBuildup') && m_bInTargetingMode) + { + GetTargetingAim(Aim); + // End:0x5F + if(Aim.bResult) + { + EndCustomTargeting(); + } + else + { + InterceptRightMousePressed(TgController); + } + TgController.bPressingLeftMouseButton = false; + return true; + } + return false; + //return ReturnValue; +} + +simulated event EndCustomTargeting() +{ + local TgPawn PawnOwner; + local WeaponMeshSwapStrategy SwapStrategy; + + ClearTimer('DeviceBuildupTimer'); + DeviceBuildupTimer(); + PawnOwner = TgPawn(Owner); + // End:0x91 + if(PawnOwner != none) + { + PawnOwner.SetTargetingDevice(PawnOwner.GetDeviceByEqPoint(1), SwapStrategy); + } + ServerEndCustomTargeting(); + //return; +} + +reliable server function ServerEndCustomTargeting() +{ + // End:0x2E + if(IsInState('DeviceBuildup')) + { + ClearTimer('DeviceBuildupTimer'); + DeviceBuildupTimer(); + } + //return; +} + +simulated event bool CanFireWithoutAimResult() +{ + return true; + //return ReturnValue; +} + +simulated event OnDeployableSpawned(TgDeployable deployable) +{ + r_OverrideUsesTargetingModeAsFalse = true; + m_fCachedWallHealthPercent = -1.0000000; + //return; +} + +event OnDeployableDestroyed(TgDeployable deployable) +{ + // End:0x7A + if(deployable == r_Deployable) + { + m_fCachedWallHealthPercent = r_Deployable.GetHealthPercent(); + r_Deployable = none; + r_OverrideUsesTargetingModeAsFalse = false; + // End:0x6E + if(IsFiring()) + { + InterruptFiring(); + } + StartCooldown(); + } + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + local float firePostHitTime; + + // End:0x4C + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0x4A + if(firePostHitTime > 0.7000000) + { + return false; + } + return true; + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + local float firePostHitTime; + + // End:0x4A + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0x4A + if(firePostHitTime > 0.5000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated function int GetAimAssistPriority() +{ + // End:0x13 + if(IsInState('DeviceBuildup')) + { + return 2; + } + return 0; + //return ReturnValue; +} + +simulated state DeviceBuildup +{ + simulated function BeginState(name PreviousStateName) + { + super.BeginState(PreviousStateName); + ClearTimer('DeviceBuildupTimer'); + //return; + } + + simulated function EndState(name NextStateName) + { + CacheAim(); + m_fFiringTimer = WorldInfo.TimeSeconds; + super.EndState(NextStateName); + //return; + } + stop; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgPawn PawnOwner; + local WeaponMeshSwapStrategy SwapStrategy; + + super.StartFiringLogic(); + PawnOwner = TgPawn(Owner); + // End:0x7D + if(PawnOwner != none) + { + PawnOwner.SetTargetingDevice(PawnOwner.GetDeviceByEqPoint(1), SwapStrategy); + } + //return; + } + + simulated function StopFiringLogic() + { + super.StopFiringLogic(); + // End:0x44 + if(r_Deployable != none) + { + r_Deployable.DestroyIt(); + r_Deployable = none; + } + r_OverrideUsesTargetingModeAsFalse = false; + //return; + } + stop; +} + +defaultproperties +{ + r_fTremorsCooldownReduction=-1.0000000 + m_fCachedWallHealthPercent=-1.0000000 + m_DeviceEmoteAt=DeviceEmoteAt.DEA_StartFire + m_bAimThroughReticule=true + m_AimAssistKeyframesMagnetVert=none + m_AimAssistKeyframesMagnetHoriz=none + m_AimAssistKeyframesFriction=none + m_AimAssistKeyframesTrackingAccHoriz=none + m_AimAssistKeyframesTrackingAngleHoriz=none + m_AimAssistKeyframesTrackingAccVert=none + m_AimAssistKeyframesTrackingAngleVert=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_GhostWalk.uc b/exported/TgGame/Classes/TgDevice_GhostWalk.uc new file mode 100755 index 00000000..ad4bffab --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_GhostWalk.uc @@ -0,0 +1,33 @@ +class TgDevice_GhostWalk extends TgDevice + hidecategories(Navigation); + +simulated event bool CanBeCanceled() +{ + local float firePostHitTime; + + // End:0x4A + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0x4A + if(firePostHitTime > 0.5000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated function bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit + m_bPostFireShouldInterruptStealth=false + m_fEnterCombatDuration=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_GourdMod.uc b/exported/TgGame/Classes/TgDevice_GourdMod.uc new file mode 100755 index 00000000..becc669e --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_GourdMod.uc @@ -0,0 +1,15 @@ +class TgDevice_GourdMod extends TgDevice + native(ChampMalDamba) + hidecategories(Navigation); + +var array m_ImmuneTargets; +var array m_ImmuneTimes; + +// Export UTgDevice_GourdMod::execApplyOnTouchEffect(FFrame&, void* const) +native function ApplyOnTouchEffect(Actor Target); + +// Export UTgDevice_GourdMod::execApplyEffect(FFrame&, void* const) +native function ApplyEffect(TgDeploy_Gourd gourd, Actor Target); + +// Export UTgDevice_GourdMod::execRemoveEffect(FFrame&, void* const) +native function RemoveEffect(TgDeploy_Gourd gourd, Actor Target); diff --git a/exported/TgGame/Classes/TgDevice_GrohkInhand.uc b/exported/TgGame/Classes/TgDevice_GrohkInhand.uc new file mode 100755 index 00000000..61e81aad --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_GrohkInhand.uc @@ -0,0 +1,110 @@ +class TgDevice_GrohkInhand extends TgDevice_ArcingBeam + native(ChampGrohk) + hidecategories(Navigation); + +var TgPawn_Grohk m_CachedGrohkPawn; + +// Export UTgDevice_GrohkInhand::execDeviceAdjustDamage(FFrame&, void* const) +native function DeviceAdjustDamage(const out ImpactInfo Impact, out float fDamage, int nPropertyId); + +// Export UTgDevice_GrohkInhand::execIsValidArcTarget(FFrame&, void* const) +native function bool IsValidArcTarget(Actor TestActor, ArcingInfo Info); + +simulated function bool HasCachedGrohkPawn() +{ + // End:0x2B + if(m_CachedGrohkPawn == none) + { + m_CachedGrohkPawn = TgPawn_Grohk(Instigator); + } + return m_CachedGrohkPawn != none; + //return ReturnValue; +} + +simulated function ImpactInfo CalcWeaponFire(AimData Aim, optional out array ImpactList) +{ + local ImpactInfo Impact; + + Impact = super(TgDevice).CalcWeaponFire(Aim, ImpactList); + UpdateInhandTargetInfo(Impact.HitActor, Impact.HitLocation); + return Impact; + //return ReturnValue; +} + +function OnInstantShotVerified(ImpactInfo VerifiedPrimaryImpact) +{ + UpdateInhandTargetInfo(VerifiedPrimaryImpact.HitActor, VerifiedPrimaryImpact.HitLocation); + //return; +} + +simulated function UpdateInhandTargetInfo(Actor HitActor, Vector HitLocation) +{ + local TgDeployable deployTarget; + + // End:0x224 + if(HasCachedGrohkPawn()) + { + // End:0x82 + if(m_CachedGrohkPawn.r_InhandTarget != HitActor) + { + m_CachedGrohkPawn.r_InhandTarget = HitActor; + m_CachedGrohkPawn.bNetDirty = true; + } + // End:0x203 + if(m_CachedGrohkPawn.r_InhandTarget != none) + { + deployTarget = TgDeployable(HitActor); + // End:0x190 + if((deployTarget != none) && int(deployTarget.m_CollisionSettings.mCollisionMode) != int(0)) + { + m_CachedGrohkPawn.r_InhandHitOffset = HitLocation - m_CachedGrohkPawn.r_InhandTarget.Location; + m_CachedGrohkPawn.bNetDirty = true; + } + else + { + // End:0x203 + if(!IsZero(m_CachedGrohkPawn.r_InhandHitOffset)) + { + m_CachedGrohkPawn.r_InhandHitOffset = vect(0.0000000, 0.0000000, 0.0000000); + m_CachedGrohkPawn.bNetDirty = true; + } + } + } + m_CachedGrohkPawn.bNetDirty = true; + } + //return; +} + +defaultproperties +{ + m_nMaxNumArcsPerTarget=0 + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_bCanReloadEarly=false + m_bDoNotAllowHeadShots=true + m_vMeshViewOffset=(X=10.0000000,Y=2.0000000,Z=-2.0000000) + m_fWeaponBob=0.0000000 + m_vProjectileSpawnOffset=(X=0.0000000,Y=4.0000000,Z=-9.0000000) + m_fAltFireLockOutTime=0.0000000 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_Orb' + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetVert[1]=(KeyframeName="V100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetVert[2]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[2]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftlowx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[2]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[1]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[1]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Grohk.DeviceInhand' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.LightForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_GroverInhand.uc b/exported/TgGame/Classes/TgDevice_GroverInhand.uc new file mode 100755 index 00000000..ac3ae6d7 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_GroverInhand.uc @@ -0,0 +1,81 @@ +class TgDevice_GroverInhand extends TgDevice + native(ChampGrover) + hidecategories(Navigation); + +var int m_nProjectilesRemaining; +var int m_nProjectileCount; +var float m_fMultiProjectileDelay; + +simulated function FireNext() +{ + local TgPawn TgP; + local Projectile Proj; + + TgP = TgPawn(Owner); + // End:0x105 + if(TgP != none) + { + // End:0x105 + if(m_nProjectilesRemaining > 0) + { + Proj = ProjectileFire(); + // End:0xA9 + if((Proj != none) && TgProjectile(Proj) != none) + { + TgP.ProjectileOnFire(TgProjectile(Proj)); + } + // End:0xDD + if(TgProjectile(Proj) != none) + { + UpdateActiveProjectiles(TgProjectile(Proj)); + } + // End:0x105 + if(--m_nProjectilesRemaining > 0) + { + SetTimer(m_fMultiProjectileDelay, false, 'FireNext'); + } + } + } + //return; +} + +simulated state DeviceFiring +{ + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + // End:0x6A + if(m_nProjectileCount > 0) + { + ClearTimer('FireNext'); + m_nProjectilesRemaining += (m_nProjectileCount - 1); + // End:0x6A + if(m_nProjectilesRemaining > 1) + { + SetTimer(m_fMultiProjectileDelay, false, 'FireNext'); + } + } + //return; + } + stop; +} + +defaultproperties +{ + m_nProjectileCount=3 + m_fMultiProjectileDelay=0.1000000 + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_ReticuleType=EReticuleType.RETICULE_Wide + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=12.0000000,Y=1.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_vProjectileSpawnOffset=(X=15.0000000,Y=1.0000000,Z=-9.0000000) + m_fAltFireLockOutTime=0.0000000 + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ftLowMag",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H200ftLowMag",Distance=3200.0000000) + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.HeavyForceFeedback' + m_ForceFeedbackStopReload=ForceFeedbackWaveform'gp_forcefeedback.StandardReload' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_GroverInhandAxe.uc b/exported/TgGame/Classes/TgDevice_GroverInhandAxe.uc new file mode 100755 index 00000000..f1d07f03 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_GroverInhandAxe.uc @@ -0,0 +1,15 @@ +class TgDevice_GroverInhandAxe extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_ReticuleType=EReticuleType.RETICULE_Wide + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=12.0000000,Y=1.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_vProjectileSpawnOffset=(X=15.0000000,Y=10.0000000,Z=-9.0000000) + m_fAltFireLockOutTime=0.0000000 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_GroverInhandAxe' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_GrumpyBomb.uc b/exported/TgGame/Classes/TgDevice_GrumpyBomb.uc new file mode 100755 index 00000000..4d7c0dd0 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_GrumpyBomb.uc @@ -0,0 +1,106 @@ +class TgDevice_GrumpyBomb extends TgDevice + native(ChampBombKing) + hidecategories(Navigation); + +var() float m_fPostTargetingLockInDuration; + +// Export UTgDevice_GrumpyBomb::execUsesTargetingMode(FFrame&, void* const) +native function bool UsesTargetingMode(); + +// Export UTgDevice_GrumpyBomb::execEnterTargetingMode(FFrame&, void* const) +native function EnterTargetingMode(); + +// Export UTgDevice_GrumpyBomb::execIsTargetingModeReady(FFrame&, void* const) +native function bool IsTargetingModeReady(optional out TgObject.EDeviceFailType failType); + +// Export UTgDevice_GrumpyBomb::execDeviceAdjustDamage(FFrame&, void* const) +native function DeviceAdjustDamage(const out ImpactInfo Impact, out float fDamage, int nPropertyId); + +// Export UTgDevice_GrumpyBomb::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated function bool InterceptRightMousePressed(TgPlayerController TgController) +{ + local TgPawn TgP; + + // End:0x8B + if(m_bUseCustomCastMode) + { + TgP = TgPawn(Instigator); + // End:0x8B + if((TgP != none) && TgP.c_CurrentTargetingDevice == self) + { + TgController.bPressingRightMouseButton = false; + PutAway(); + return true; + } + } + return false; + //return ReturnValue; +} + +simulated function PutAway() +{ + local TgPawn TgP; + local WeaponMeshSwapStrategy SwapStrategy; + + TgP = TgPawn(Instigator); + // End:0xC7 + if((TgP != none) && TgP.c_CurrentTargetingDevice == self) + { + // End:0xC7 + if(!IsFiring()) + { + SwapStrategy.bPlayPutAway = true; + TgP.SetTargetingDevice(TgP.GetDeviceByEqPoint(1), SwapStrategy); + } + } + //return; +} + +simulated event bool ShouldInterruptReloadOnBeginTargeting() +{ + return true; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + // End:0x2E + if(super.CanBeInterrupted()) + { + // End:0x29 + if(IsTimerActive('FirePreHitDelay')) + { + return false; + } + else + { + return true; + } + } + else + { + return false; + } + //return ReturnValue; +} + +simulated function bool CanToggleTargetingOff() +{ + return (m_bCanToggleTargeting && !IsFiring()) && !IsTimerActive('PostTargetingLockIn'); + //return ReturnValue; +} + +simulated function PostTargetingLockIn() +{ + //return; +} + +defaultproperties +{ + m_eCastModeOverride=ECastMode.CM_Instant + m_bUseCustomCastMode=true + m_bDisableLagCompensation=true + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_BombKing.DeviceGrumpyBomb' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Headhunter.uc b/exported/TgGame/Classes/TgDevice_Headhunter.uc new file mode 100755 index 00000000..cdda0be8 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Headhunter.uc @@ -0,0 +1,126 @@ +class TgDevice_Headhunter extends TgDevice_Stim + hidecategories(Navigation); + +var TgDevice_KinessaInhand m_CachedInhandDevice; +var TgDevice_SniperMode m_CachedSniperModeDevice; +var bool m_bCamFXEnabled; + +simulated function OnStartFireRequestSent() +{ + super(TgDevice).OnStartFireRequestSent(); + // End:0x39 + if(HasCachedInhandDevice()) + { + m_CachedInhandDevice.GiveAmmo(5, true); + } + //return; +} + +simulated function Tick(float DeltaTime) +{ + super(Actor).Tick(DeltaTime); + // End:0x9A + if((HasCachedSniperDevice()) && IsFiring()) + { + // End:0x8F + if(m_CachedSniperModeDevice.IsFiring() && !m_CachedSniperModeDevice.IsTimerActive('FirePreHitDelay')) + { + ToggleCamFX(true); + } + else + { + ToggleCamFX(false); + } + } + //return; +} + +simulated function ToggleCamFX(bool bEnable) +{ + local TgPawn_Kinessa kinessaOwner; + + kinessaOwner = TgPawn_Kinessa(Owner); + // End:0xDD + if(((kinessaOwner != none) && (GetCurrentFire()) != none) && bEnable != m_bCamFXEnabled) + { + // End:0x98 + if(bEnable) + { + GetCurrentFire().ApplyHitSpecial(kinessaOwner,, 10694); + } + else + { + GetCurrentFire().RemoveHitSpecial(kinessaOwner, true, 10694); + } + m_bCamFXEnabled = bEnable; + } + //return; +} + +simulated function bool HasCachedInhandDevice() +{ + local TgPawn_Kinessa kinessaOwner; + + // End:0x71 + if(m_CachedInhandDevice == none) + { + kinessaOwner = TgPawn_Kinessa(Owner); + // End:0x71 + if(kinessaOwner != none) + { + m_CachedInhandDevice = TgDevice_KinessaInhand(kinessaOwner.GetDeviceById(12872)); + } + } + return m_CachedInhandDevice != none; + //return ReturnValue; +} + +simulated function bool HasCachedSniperDevice() +{ + local TgPawn_Kinessa kinessaOwner; + + // End:0x71 + if(m_CachedSniperModeDevice == none) + { + kinessaOwner = TgPawn_Kinessa(Owner); + // End:0x71 + if(kinessaOwner != none) + { + m_CachedSniperModeDevice = TgDevice_SniperMode(kinessaOwner.GetDeviceById(13142)); + } + } + return m_CachedSniperModeDevice != none; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + // End:0x5B + if((HasCachedSniperDevice()) && m_CachedSniperModeDevice.IsFiring()) + { + m_CachedSniperModeDevice.RefreshZoomState(true); + } + // End:0xAB + if((HasCachedInhandDevice()) && m_CachedInhandDevice.IsReloading()) + { + m_CachedInhandDevice.InterruptReload(); + } + //return; + } + + simulated function FirePostHitDelay() + { + super.FirePostHitDelay(); + // End:0x5B + if((HasCachedSniperDevice()) && m_CachedSniperModeDevice.IsFiring()) + { + m_CachedSniperModeDevice.RefreshZoomState(true); + } + ToggleCamFX(false); + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_HealingPotion.uc b/exported/TgGame/Classes/TgDevice_HealingPotion.uc new file mode 100755 index 00000000..d15cb629 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_HealingPotion.uc @@ -0,0 +1,226 @@ +class TgDevice_HealingPotion extends TgDevice + hidecategories(Navigation); + +var bool s_bQueueDetonation; +var bool m_bAttemptingToDetonate; + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return IsTimerActive('FirePreHitDelay') || IsTimerActive('LockOutOtherDevices'); + //return ReturnValue; +} + +simulated function LockOutOtherDevices() +{ + //return; +} + +simulated function DetonationGracePeriod() +{ + //return; +} + +simulated function FireAmmunition() +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x7D + if(FireMode != none) + { + SetTimer(FireMode.GetCustomValue1(), false, 'LockOutOtherDevices'); + SetTimer(FireMode.GetCustomValue2(), false, 'DetonationGracePeriod'); + } + ScaleAbilityRadius(); + super.FireAmmunition(); + //return; +} + +reliable client simulated event ClientStartCooldown(int nMode, float fCooldownTimeOverride) +{ + super.ClientStartCooldown(nMode, fCooldownTimeOverride); + //return; +} + +reliable client simulated event ClientEndCooldown() +{ + super.ClientEndCooldown(); + //return; +} + +simulated function UpdateActiveProjectiles(optional TgProjectile Proj) +{ + super.UpdateActiveProjectiles(Proj); + // End:0x5B + if((m_FiredProjectiles.Length == 0) && IsTimerActive('FirePostHitDelay')) + { + ClearTimer('FirePostHitDelay'); + FirePostHitDelay(); + } + //return; +} + +simulated function bool InterceptSlotPressed(TgPlayerController TgController) +{ + local TgPawn TgP; + + TgP = TgPawn(Instigator); + // End:0x4D + if(TgP.IsAliveAndWell()) + { + // End:0x4D + if(TryDetonate()) + { + return true; + } + } + return false; + //return ReturnValue; +} + +singular simulated function bool TryDetonate() +{ + local int I; + local bool bSuccessfulDetonation; + + // End:0x11 + if(!IsFiring()) + { + return false; + } + // End:0x43 + if(IsTimerActive('FirePreHitDelay') || IsTimerActive('DetonationGracePeriod')) + { + return false; + } + // End:0x52 + if(IsDeviceCoolingDown()) + { + return false; + } + I = 0; + J0x5D: + + // End:0x166 [Loop If] + if(I < m_FiredProjectiles.Length) + { + // End:0x158 + if(((m_FiredProjectiles[I] != none) && !m_FiredProjectiles[I].m_bHasExploded) && !m_FiredProjectiles[I].m_bIsShutDown) + { + m_FiredProjectiles[I].Explode(m_FiredProjectiles[I].Location, vect(0.0000000, 0.0000000, 1.0000000)); + bSuccessfulDetonation = true; + } + I++; + // [Loop Continue] + goto J0x5D; + } + // End:0x1C6 + if(bSuccessfulDetonation) + { + // End:0x191 + if(int(Role) < int(ROLE_Authority)) + { + ServerTryDetonate(); + } + // End:0x1C6 + if(IsTimerActive('FirePostHitDelay')) + { + ClearTimer('FirePostHitDelay'); + FirePostHitDelay(); + } + } + return bSuccessfulDetonation; + //return ReturnValue; +} + +reliable server event ServerTryDetonate() +{ + // End:0x2A + if(!TryDetonate() && IsFiring()) + { + s_bQueueDetonation = true; + } + //return; +} + +reliable server event InterruptFiring() +{ + TryDetonate(); + super.InterruptFiring(); + //return; +} + +reliable client simulated event ClientInterrupt() +{ + TryDetonate(); + super.ClientInterrupt(); + //return; +} + +function ScaleAbilityRadius() +{ + local TgPawn_Pip pipOwner; + local TgDeviceFire FireMode; + local TgProperty EffectRadiusProperty; + local float fEffectRadius; + + FireMode = GetCurrentFire(); + // End:0x143 + if(FireMode != none) + { + EffectRadiusProperty = FireMode.GetProperty(6); + // End:0x143 + if(EffectRadiusProperty != none) + { + fEffectRadius = EffectRadiusProperty.m_fRaw; + // End:0x143 + if(fEffectRadius > 0.0000000) + { + pipOwner = TgPawn_Pip(Owner); + // End:0x143 + if((pipOwner != none) && Abs(pipOwner.r_fRadiusForHealingPotionFX - fEffectRadius) > 0.0010000) + { + pipOwner.r_fRadiusForHealingPotionFX = fEffectRadius; + pipOwner.bNetDirty = true; + } + } + } + } + //return; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + s_bQueueDetonation = false; + super.StartFiringLogic(); + //return; + } + + simulated function Tick(float DeltaTime) + { + // End:0x17 + if(s_bQueueDetonation) + { + TryDetonate(); + } + super(Actor).Tick(DeltaTime); + //return; + } + + simulated function FirePostHitDelay() + { + TryDetonate(); + super.FirePostHitDelay(); + //return; + } + stop; +} + +defaultproperties +{ + m_bAimThroughReticule=true + m_IndividualOffhandCooldownTime=0.5000000 + m_vProjectileSpawnOffset=(X=0.0000000,Y=-35.0000000,Z=-20.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_HealingRain.uc b/exported/TgGame/Classes/TgDevice_HealingRain.uc new file mode 100755 index 00000000..4bf9c7aa --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_HealingRain.uc @@ -0,0 +1,3 @@ +class TgDevice_HealingRain extends TgDevice_TotemMod + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_HealingStation.uc b/exported/TgGame/Classes/TgDevice_HealingStation.uc new file mode 100755 index 00000000..4ace7319 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_HealingStation.uc @@ -0,0 +1,6 @@ +class TgDevice_HealingStation extends TgDevice_TurretMod + native(Devices) + hidecategories(Navigation); + +var float m_fFireTimer; +var TgPawn m_CachedPawnOwner; diff --git a/exported/TgGame/Classes/TgDevice_HealingTotem.uc b/exported/TgGame/Classes/TgDevice_HealingTotem.uc new file mode 100755 index 00000000..4b26d0b2 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_HealingTotem.uc @@ -0,0 +1,14 @@ +class TgDevice_HealingTotem extends TgDevice + hidecategories(Navigation); + +simulated function bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_bDeployAtFeetOnFailure=true + m_fBottomlessPitCheck=70.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_HeatHaze.uc b/exported/TgGame/Classes/TgDevice_HeatHaze.uc new file mode 100755 index 00000000..1902e559 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_HeatHaze.uc @@ -0,0 +1,111 @@ +class TgDevice_HeatHaze extends TgDevice + hidecategories(Navigation); + +const InhandBow = 14891; + +simulated function InhandFired() +{ + local TgDeviceFire FireMode; + + // End:0x59 + if(IsFiring()) + { + FireMode = GetCurrentFire(); + // End:0x59 + if(FireMode != none) + { + CacheAim(); + FireMode.Deploy(); + } + } + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0xB9 + if(IsFiring()) + { + // End:0x77 + if((Current != none) && Current.r_nDeviceId == 14988) + { + // End:0x75 + if(HasRemoteOwner() && GetRemainingTimeForTimer('FirePostHitDelay') < 0.1000000) + { + return false; + } + return true; + } + // End:0xA4 + if(HasRemoteOwner()) + { + // End:0xA4 + if(GetRemainingTimeForTimer('FirePreHitDelay') < 0.1000000) + { + return false; + } + } + return IsTimerActive('FirePreHitDelay'); + } + return false; + //return ReturnValue; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x8A + if(Dev != none) + { + super.LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x87 + case 14891: + Dev.RegisterDelegate(0, InhandFired); + // End:0x8A + break; + // End:0xFFFF + default: + break; + } + } + else + { + //return; + } +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x8A + if(Dev != none) + { + super.LinkedDeviceUnequipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x87 + case 14891: + Dev.UnregisterDelegate(0, InhandFired); + // End:0x8A + break; + // End:0xFFFF + default: + break; + } + } + else + { + //return; + } +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit + m_bBuildupShouldInterruptStealth=false + m_bPreFireShouldInterruptStealth=false + m_bFireShouldInterruptStealth=false + m_bPostFireShouldInterruptStealth=false + m_bCancelingShouldInterruptStealth=false + m_nLinkedDeviceIDs[0]=14891 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_HeatTransfer.uc b/exported/TgGame/Classes/TgDevice_HeatTransfer.uc new file mode 100755 index 00000000..3d998fb3 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_HeatTransfer.uc @@ -0,0 +1,9 @@ +class TgDevice_HeatTransfer extends TgDevice_ShieldMod + native(Devices) + hidecategories(Navigation); + +var int m_nAccumulatedDamage; +var int m_nActivationDamage; + +// Export UTgDevice_HeatTransfer::execRespondToDamageTaken(FFrame&, void* const) +native function RespondToDamageTaken(int Damage); diff --git a/exported/TgGame/Classes/TgDevice_HeroicLeap.uc b/exported/TgGame/Classes/TgDevice_HeroicLeap.uc new file mode 100755 index 00000000..c8e4d846 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_HeroicLeap.uc @@ -0,0 +1,63 @@ +class TgDevice_HeroicLeap extends TgDevice_Leap + hidecategories(Navigation); + +simulated function SetLeapParams(out float scaleLateral, out float scaleVertical, out float additiveLateral, out float additiveVertical) +{ + local TgPawn TgPOwner; + local TgDevice_LegDay DevLegDay; + local int I; + + super.SetLeapParams(scaleLateral, scaleVertical, additiveLateral, additiveVertical); + TgPOwner = TgPawn(Instigator); + // End:0x5B + if(TgPOwner == none) + { + return; + } + I = 0; + J0x66: + + // End:0x114 [Loop If] + if(I < 33) + { + DevLegDay = TgDevice_LegDay(TgPOwner.m_EquippedDevices[I]); + // End:0x106 + if(DevLegDay != none) + { + DevLegDay.ModifyLeapParams(scaleLateral, scaleVertical, additiveLateral, additiveVertical); + // [Explicit Break] + goto J0x114; + } + I++; + // [Loop Continue] + goto J0x66; + } + J0x114: + + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldMountCancelFiring() +{ + return false; + //return ReturnValue; +} + +simulated function bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_bAlwaysStartCooldown=true + m_bForce3PViewWhileFiring=false + m_bAbilityRequiresInhandResync=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_HexaFire.uc b/exported/TgGame/Classes/TgDevice_HexaFire.uc new file mode 100755 index 00000000..a51a1b65 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_HexaFire.uc @@ -0,0 +1,195 @@ +class TgDevice_HexaFire extends TgDevice_HitPulse + native(ChampRuckus) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var() Vector m_vProjectileSpawnOffset2; +var bool m_bFireLeftWeapon; +var TgPawn_Ruckus m_CachedRuckus; + +// Export UTgDevice_HexaFire::execGetCachedAim(FFrame&, void* const) +native function GetCachedAim(out AimData Aim); + +// Export UTgDevice_HexaFire::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +simulated function bool HasCachedRuckus() +{ + // End:0x2B + if(m_CachedRuckus == none) + { + m_CachedRuckus = TgPawn_Ruckus(Instigator); + } + return m_CachedRuckus != none; + //return ReturnValue; +} + +simulated event Vector GetProjectileSpawnOffset() +{ + // End:0x1A + if(m_bFireLeftWeapon) + { + return m_vProjectileSpawnOffset2; + } + else + { + return m_vProjectileSpawnOffset; + } + //return ReturnValue; +} + +simulated event bool CanJumpWhileFiring() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return (IsFiring()) && !IsTimerActive('FirePreHitDelay'); + //return ReturnValue; +} + +simulated function FireAmmunition() +{ + super(TgDevice).FireAmmunition(); + m_bFireLeftWeapon = !m_bFireLeftWeapon; + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x3B + if((Current != none) && Current.r_nDeviceId == 13219) + { + return false; + } + // End:0x54 + if(IsTimerActive('FirePreHitDelay')) + { + return true; + } + // End:0x171 + if((IsFiring()) && Current != none) + { + // End:0x16F + if(HasCachedRuckus()) + { + // End:0xCF + if(m_CachedRuckus.HasCachedHexaFireGuns()) + { + // End:0xCF + if(Current == m_CachedRuckus.m_CachedHexaFireGuns) + { + return false; + } + } + // End:0x11F + if(m_CachedRuckus.HasCachedEmitter()) + { + // End:0x11F + if(Current == m_CachedRuckus.m_CachedEmitter) + { + return false; + } + } + // End:0x16F + if(m_CachedRuckus.HasCachedRepulsorField()) + { + // End:0x16F + if(Current == m_CachedRuckus.m_CachedRepulsorField) + { + return false; + } + } + } + return true; + } + return false; + //return ReturnValue; +} + +simulated function bool ShouldInterruptReloadOnFire() +{ + return true; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + // End:0x85 + if(HasCachedRuckus()) + { + m_CachedRuckus.PlayHexaFireEffects(true); + // End:0x85 + if(m_CachedRuckus.HasCachedRuckusInhand()) + { + m_CachedRuckus.m_cachedRuckusInhand.m_bHexaFireSpinning = true; + } + } + super.StartFiringLogic(); + //return; + } + + simulated function FirePreHitDelay() + { + local TgPawn PawnOwner; + local TgDevice hexaFireGunsDevice; + + super.FirePreHitDelay(); + PawnOwner = TgPawn(Instigator); + // End:0x8B + if(PawnOwner != none) + { + hexaFireGunsDevice = PawnOwner.c_CurrentTargetingDevice; + // End:0x8B + if(hexaFireGunsDevice != none) + { + hexaFireGunsDevice.StartFire(); + } + } + //return; + } + + simulated function PulseHit() + { + local float fPersistPulseTime, pulseVariance; + + super.PulseHit(); + ClearTimer('PulseHit'); + fPersistPulseTime = GetPersistPulseHitTime(); + pulseVariance = (FRand() * fPersistPulseTime) - (fPersistPulseTime / 2.0000000); + SetTimer(fPersistPulseTime + pulseVariance, true, 'PulseHit'); + //return; + } + + simulated function StopFiringLogic() + { + // End:0x85 + if(HasCachedRuckus()) + { + m_CachedRuckus.PlayHexaFireEffects(false); + // End:0x85 + if(m_CachedRuckus.HasCachedRuckusInhand()) + { + m_CachedRuckus.m_cachedRuckusInhand.m_bHexaFireSpinning = false; + } + } + super.StopFiringLogic(); + //return; + } + stop; +} + +defaultproperties +{ + m_vProjectileSpawnOffset2=(X=30.0000000,Y=-30.0000000,Z=15.0000000) + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PersistTime + m_bAlwaysStartCooldown=false + m_bAimThroughReticule=true + m_vProjectileSpawnOffset=(X=30.0000000,Y=30.0000000,Z=15.0000000) + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.LightForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_HexaFireGuns.uc b/exported/TgGame/Classes/TgDevice_HexaFireGuns.uc new file mode 100755 index 00000000..2425a26d --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_HexaFireGuns.uc @@ -0,0 +1,119 @@ +class TgDevice_HexaFireGuns extends TgDevice_QuadWield + hidecategories(Navigation); + +var TgPawn_Ruckus m_CachedRuckusOwner; + +simulated function bool InterceptLeftMousePressed(TgPlayerController TgController) +{ + // End:0x42 + if((IsFiring()) || (HasCachedRuckusOwner()) && m_CachedRuckusOwner.r_bHexaFireFiring) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated function bool InterceptLeftMouseReleased(TgPlayerController TgController) +{ + // End:0x42 + if((IsFiring()) || (HasCachedRuckusOwner()) && m_CachedRuckusOwner.r_bHexaFireFiring) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated function bool InterceptRightMousePressed(TgPlayerController TgController) +{ + // End:0x42 + if((IsFiring()) || (HasCachedRuckusOwner()) && m_CachedRuckusOwner.r_bHexaFireFiring) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated function bool InterceptRightMouseReleased(TgPlayerController TgController) +{ + // End:0x42 + if((IsFiring()) || (HasCachedRuckusOwner()) && m_CachedRuckusOwner.r_bHexaFireFiring) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated function bool HasCachedRuckusOwner() +{ + // End:0x2B + if(m_CachedRuckusOwner == none) + { + m_CachedRuckusOwner = TgPawn_Ruckus(Owner); + } + return m_CachedRuckusOwner != none; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x3B + if((Current != none) && Current.r_nDeviceId == 11434) + { + return false; + } + return super(TgDevice).ShouldLockFiring(Current); + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgPawn_Ruckus Ruckus; + + Ruckus = TgPawn_Ruckus(Instigator); + // End:0xAA + if(Ruckus != none) + { + // End:0xAA + if(Ruckus.m_WeaponMesh != none) + { + Ruckus.m_WeaponMesh.SetFireLoopDisplayGroup('HexaFire', Class'TgGame.TgSkeletalMeshComponent_Weapon'.default.m_nmFireLoopTailSound); + } + } + super.StartFiringLogic(); + //return; + } + + simulated function StopFiringLogic() + { + local TgPawn_Ruckus Ruckus; + + Ruckus = TgPawn_Ruckus(Instigator); + // End:0x83 + if(Ruckus != none) + { + // End:0x83 + if(Ruckus.m_WeaponMesh != none) + { + Ruckus.m_WeaponMesh.ResetFireLoopDisplayGroup(); + } + } + super.StopFiringLogic(); + //return; + } + stop; +} + +defaultproperties +{ + m_vProjectileSpawnOffset3=(X=5.0000000,Y=2.0000000,Z=11.0000000) + m_vProjectileSpawnOffset4=(X=5.0000000,Y=-2.0000000,Z=11.0000000) + m_nWeaponFireNumber=1 + m_vProjectileSpawnOffset2=(X=5.0000000,Y=-6.0000000,Z=5.0000000) + m_vProjectileSpawnOffset=(X=5.0000000,Y=6.0000000,Z=5.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_HitPulse.uc b/exported/TgGame/Classes/TgDevice_HitPulse.uc new file mode 100755 index 00000000..29ca1533 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_HitPulse.uc @@ -0,0 +1,263 @@ +class TgDevice_HitPulse extends TgDevice + native(Devices) + hidecategories(Navigation); + +var bool s_ShouldPayCostPerPulse; +var bool s_bCostPaid; +var bool m_bConsumeAmmoOnEachPulse; +var int m_CurrentPulseIndex; + +// Export UTgDevice_HitPulse::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated function bool ApplyGlobalOffhandCooldown() +{ + return false; + //return ReturnValue; +} + +simulated function PersistTimer() +{ + local TgDeviceFire FireMode; + + // End:0x30 + if(LogDebugInfo()) + { + FireMode = GetCurrentFire(); + // End:0x30 + if(FireMode != none) + { + } + } + bPendingFire = false; + FirePostHitDelay(); + ClearTimer('PersistTimer'); + ClearTimer('PulseHit'); + //return; +} + +simulated event float GetRefireTime(optional int nMode = -1) +{ + return GetPersistPulseHitTime(nMode); + //return ReturnValue; +} + +simulated function PulseHit() +{ + //return; +} + +simulated event float GetPersistTime(optional int nMode = -1) +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x63 + if((nMode >= 0) && nMode < m_FireMode.Length) + { + FireMode = m_FireMode[nMode]; + } + return FireMode.GetPropertyValue(150); + //return ReturnValue; +} + +simulated event float GetPersistPulseHitTime(optional int nMode = -1) +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x63 + if((nMode >= 0) && nMode < m_FireMode.Length) + { + FireMode = m_FireMode[nMode]; + } + return FireMode.GetPropertyValue(151); + //return ReturnValue; +} + +reliable server event InterruptFiring() +{ + m_IsBeingInterrupted = true; + // End:0x102 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x2D + if(LogDebugInfo()) + { + } + // End:0xDB + if(IsFiring()) + { + TgPawn(Instigator).FlashInterrupt(r_nDeviceInstanceId); + // End:0xCE + if(((c_DeviceForm != none) && Instigator.IsLocallyControlled()) && !HasRemoteOwner()) + { + c_DeviceForm.DoInterrupt(); + } + PersistTimer(); + } + else + { + GotoState('Active'); + } + m_fLastDeviceCanFireTimeStamp = 0.0000000; + ClientInterrupt(); + } + m_IsBeingInterrupted = false; + //return; +} + +reliable client simulated event ClientInterrupt() +{ + m_IsBeingInterrupted = true; + // End:0x19 + if(LogDebugInfo()) + { + } + // End:0x56 + if((c_DeviceForm != none) && IsFiring()) + { + c_DeviceForm.DoInterrupt(); + } + // End:0x70 + if(IsFiring()) + { + PersistTimer(); + } + else + { + GotoState('Active'); + } + m_fLastDeviceCanFireTimeStamp = 0.0000000; + m_IsBeingInterrupted = false; + //return; +} + +simulated function bool ShouldConsumePowerPoolOnStartFire() +{ + return !s_ShouldPayCostPerPulse; + //return ReturnValue; +} + +simulated function bool ShouldConsumePowerPoolAfterFire() +{ + return s_ShouldPayCostPerPulse; + //return ReturnValue; +} + +simulated function int GetAmmoToConsume() +{ + // End:0x3E + if(m_bConsumeAmmoOnEachPulse || !HasAlreadyFiredOnce) + { + return GetCurrentFire().m_nAmmoCostPerShot; + } + return 0; + //return ReturnValue; +} + +simulated function float GetLockoutExtensionTime() +{ + // End:0x36 + if((IsOffhand()) || IsPurchasedAbility()) + { + // End:0x36 + if(int(Role) < int(ROLE_Authority)) + { + return 0.1000000; + } + } + return 0.0000000; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + s_bCostPaid = false; + m_CurrentPulseIndex = 0; + super.BeginState(PreviousStateName); + HasAlreadyFiredOnce = true; + //return; + } + + simulated function EndState(name NextStateName) + { + super.EndState(NextStateName); + ClearTimer('PersistTimer'); + ClearTimer('PulseHit'); + m_CurrentPulseIndex = 0; + //return; + } + + simulated function PulseHit() + { + local AimData Aim; + + UpdateAimWhileFiring(m_CachedAim); + GetCachedAim(Aim); + // End:0x6B + if((int(GetTargetingMode()) == int(7)) && !Aim.bResult) + { + PersistTimer(); + return; + } + ++m_CurrentPulseIndex; + // End:0xA9 + if(s_ShouldPayCostPerPulse && !HasEnoughPowerPool(CurrentFireMode)) + { + PersistTimer(); + return; + } + HasAlreadyFiredOnce = true; + FireAmmunition(); + c_fCachedManaAtStartFire = ((TgPawn(Instigator) != none) ? TgPawn(Instigator).GetMana() : 0.0000000); + //return; + } + + simulated function FirePreHitDelay() + { + local float fPersistTime, fPersistPulseTime, fTimingError, fPulseToPersist; + + // End:0x0D + if(LogDebugInfo()) + { + } + // End:0x4B + if(s_WhileFiringDeviceMode != none) + { + s_WhileFiringDeviceMode.RemoveEffectType(Instigator, false, 10455); + } + FireAmmunition(); + HasAlreadyFiredOnce = true; + fPersistTime = GetPersistTime(); + fPersistPulseTime = GetPersistPulseHitTime(); + fPulseToPersist = fPersistPulseTime / fPersistTime; + fTimingError = WorldInfo.TimeSeconds - m_fFiringTimer; + m_fFiringTimer = (WorldInfo.TimeSeconds + (fPersistTime / CustomTimeDilation)) - fTimingError; + m_fTimeStampAccountedFor = WorldInfo.TimeSeconds; + m_fTimeAccountedFor = 0.0000000; + fPersistTime = FMax(0.0000000, fPersistTime - (fTimingError * CustomTimeDilation)); + fPersistPulseTime = fPersistTime * fPulseToPersist; + // End:0x1B7 + if(LogDebugInfo()) + { + } + ClearTimer('PulseHit'); + SetTimer(fPersistPulseTime, true, 'PulseHit'); + ClearTimer('PersistTimer'); + // End:0x21E + if(fPersistTime > float(0)) + { + SetTimer(fPersistTime, false, 'PersistTimer'); + } + //return; + } + stop; +} + +defaultproperties +{ + m_bAlwaysStartCooldown=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Hover.uc b/exported/TgGame/Classes/TgDevice_Hover.uc new file mode 100755 index 00000000..af33ee55 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Hover.uc @@ -0,0 +1,124 @@ +class TgDevice_Hover extends TgDevice + native(ChampRuckus) + hidecategories(Navigation); + +// Export UTgDevice_Hover::execCanBeCrippled(FFrame&, void* const) +native function bool CanBeCrippled(); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0xB6 + if(super.ShouldLockFiring(Current)) + { + // End:0xB4 + if(Current != none) + { + // End:0x52 + if(Current.r_nDeviceId == 11434) + { + return false; + } + else + { + // End:0x8A + if(Current.r_nDeviceId == 11460) + { + return !IsInhandOverrideActive(); + } + else + { + // End:0xB4 + if(Current.r_nDeviceId == 14582) + { + return false; + } + } + } + } + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + local float firePostHitTime; + + // End:0x4A + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0x4A + if(firePostHitTime > 0.5000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return super.CanBeInterrupted() || IsInState('DeviceFiring'); + //return ReturnValue; +} + +function OnCripple() +{ + InterruptFiring(); + //return; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgDeviceFire FireMode; + local TgPawn_Ruckus Ruckus; + + Ruckus = TgPawn_Ruckus(Instigator); + // End:0x248 + if(Ruckus != none) + { + Ruckus.bHoverWallClimb = false; + FireMode = GetCurrentFire(); + // End:0x248 + if(FireMode != none) + { + Ruckus.m_fDesiredHeight = ((FireMode.GetCustomValue1() > 0.0000000) ? FireMode.GetCustomValue1() * float(16) : Ruckus.m_fDesiredHeight); + Ruckus.m_fKx = ((FireMode.GetCustomValue2() > 0.0000000) ? FireMode.GetCustomValue2() : Ruckus.m_fKx); + Ruckus.m_fKv = ((FireMode.GetCustomValue3() >= 0.0000000) ? FireMode.GetCustomValue3() : Ruckus.m_fKv); + Ruckus.m_fHoverAccelMultiplier = FireMode.GetCustomValue4(); + } + } + super.StartFiringLogic(); + //return; + } + + simulated function EndState(name NextStateName) + { + local TgPawn_Ruckus Ruckus; + + Ruckus = TgPawn_Ruckus(Instigator); + // End:0x4F + if(Ruckus != none) + { + Ruckus.m_fHoverAccelMultiplier = 1.0000000; + } + super.EndState(NextStateName); + // End:0xA8 + if(Instigator != none) + { + Instigator.Velocity.Z = 0.0000000; + } + //return; + } + stop; +} + +defaultproperties +{ + m_bPostFireShouldInterruptStealth=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_HunterRoll.uc b/exported/TgGame/Classes/TgDevice_HunterRoll.uc new file mode 100755 index 00000000..bdfdaf74 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_HunterRoll.uc @@ -0,0 +1,35 @@ +class TgDevice_HunterRoll extends TgDevice_Charge + hidecategories(Navigation); + +var bool m_bRolledBackward; + +simulated function Rotator GetChargeDirection() +{ + // End:0x96 + if((Instigator.Acceleration.X == float(0)) && Instigator.Acceleration.Y == float(0)) + { + return Instigator.Rotation; + } + else + { + return Rotator(Normal2D(Instigator.Acceleration)); + } + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated event StartCharge() + { + m_bRolledBackward = (Normal2D(Instigator.Acceleration) Dot Normal2D(Vector(Instigator.Rotation))) < -0.7000000; + super.StartCharge(); + //return; + } + stop; +} + +defaultproperties +{ + m_bCanLeftClickCancel=false + m_bPostFireShouldInterruptStealth=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_HuntersMark.uc b/exported/TgGame/Classes/TgDevice_HuntersMark.uc new file mode 100755 index 00000000..24068e86 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_HuntersMark.uc @@ -0,0 +1,38 @@ +class TgDevice_HuntersMark extends TgDevice + native(ChampTyra) + hidecategories(Navigation); + +// Export UTgDevice_HuntersMark::execGetConePullbackDistance(FFrame&, void* const) +native function float GetConePullbackDistance(); + +// Export UTgDevice_HuntersMark::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +// Export UTgDevice_HuntersMark::execValidateReceivedAim(FFrame&, void* const) +native function AimData ValidateReceivedAim(float ClientMovementTimeStamp, AimData Aim); + +simulated function ImpactInfo CalcWeaponFire(AimData Aim, optional out array ImpactList) +{ + local ImpactInfo Impact; + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x1E6 + if((FireMode != none) && Aim.bResult == true) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = FireMode; + Impact.StartTrace = Aim.StartTrace; + Impact.HitActor = Aim.HitActor; + Impact.HitLocation = Aim.EndTrace; + Impact.RayDir = Normal(Impact.HitLocation - Aim.StartTrace); + Impact.HitNormal = -Impact.RayDir; + ImpactList.AddItem(Impact); + } + else + { + Impact.HitActor = none; + } + return Impact; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_Hustle.uc b/exported/TgGame/Classes/TgDevice_Hustle.uc new file mode 100755 index 00000000..2c102a2f --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Hustle.uc @@ -0,0 +1,224 @@ +class TgDevice_Hustle extends TgDevice + native(ChampViktor) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var() float m_fMinSprintSpeedSq; +var() float m_fAllowableSprintAngle; +var() float m_fSprintFailSafetyTime; +var float m_fSprintFailTimeAccumulator; + +// Export UTgDevice_Hustle::execShouldBlockReload(FFrame&, void* const) +native function bool ShouldBlockReload(TgDevice Dev, bool bIsAutoReload); + +// Export UTgDevice_Hustle::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +// Export UTgDevice_Hustle::execIsDeviceFiringLockedForUI(FFrame&, void* const) +native function bool IsDeviceFiringLockedForUI(); + +// Export UTgDevice_Hustle::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +// Export UTgDevice_Hustle::execShouldInterruptLift(FFrame&, void* const) +native function bool ShouldInterruptLift(); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x5D + if(((Current != none) && Current.m_bHandDevice) && (IsFiring()) || IsTimerActive('FiringEndTransition')) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return true; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return true; + //return ReturnValue; +} + +function OnCripple() +{ + super.OnCripple(); + InterruptFiring(); + //return; +} + +simulated event bool CanFiringBeCanceledByReactivation() +{ + return !IsTimerActive('CancelSafetyTimer'); + //return ReturnValue; +} + +simulated function bool InterceptSlotReleased(TgPlayerController TgController) +{ + return IsTimerActive('CancelSafetyTimer'); + //return ReturnValue; +} + +simulated event bool ShouldInterruptReloadOnFire() +{ + return true; + //return ReturnValue; +} + +simulated event bool CanSprint() +{ + return ((Instigator != none) && VSizeSq2D(Instigator.Velocity) > m_fMinSprintSpeedSq) && (Normal2D(Instigator.Velocity) Dot Normal2D(Vector(Instigator.Rotation))) > m_fAllowableSprintAngle; + //return ReturnValue; +} + +simulated function FiringEndTransition() +{ + //return; +} + +simulated function CancelSafetyTimer() +{ + //return; +} + +simulated function CompleteInterrupt() +{ + // End:0x33 + if((!CanBeCanceled() && !CanBeInterrupted()) || !IsFiring()) + { + return; + } + // End:0x51 + if(int(Role) < int(ROLE_Authority)) + { + ClientInterrupt(); + } + InterruptFiring(); + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0x86 + case 10828: + Dev.RegisterDelegate(1, AsynchronusInterrupt); + // End:0x8E + case 11041: + // End:0x96 + case 11070: + // End:0xD2 + case 15052: + Dev.RegisterDelegate(2, AsynchronusInterrupt); + return; + // End:0x10E + case 11077: + Dev.RegisterDelegate(2, CompleteInterrupt); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0x86 + case 10828: + Dev.UnregisterDelegate(1, AsynchronusInterrupt); + // End:0x8E + case 11041: + // End:0x96 + case 11070: + // End:0xD2 + case 15052: + Dev.UnregisterDelegate(2, AsynchronusInterrupt); + return; + // End:0x10E + case 11077: + Dev.UnregisterDelegate(2, CompleteInterrupt); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated state DeviceFiring +{ + simulated function RestartFireLoop(bool bRefire) + { + ClearTimer('FiringEndTransition'); + SetTimer(0.5000000, false, 'CancelSafetyTimer'); + m_fSprintFailTimeAccumulator = 0.0000000; + super.RestartFireLoop(bRefire); + //return; + } + + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + ClearTimer('FirePostHitDelay'); + //return; + } + + simulated function Tick(float DeltaSeconds) + { + super(Actor).Tick(DeltaSeconds); + // End:0x7E + if(Instigator != none) + { + // End:0x7E + if((Normal2D(Instigator.Acceleration) Dot Normal2D(Vector(Instigator.Rotation))) < m_fAllowableSprintAngle) + { + AsynchronusInterrupt(); + } + } + //return; + } + + simulated function EndState(name NextStateName) + { + SetTimer(GetFiringPostHitDelay(), false, 'FiringEndTransition'); + ClearTimer('CancelSafetyTimer'); + super.EndState(NextStateName); + //return; + } + stop; +} + +defaultproperties +{ + m_fMinSprintSpeedSq=30000.0000000 + m_fAllowableSprintAngle=0.5000000 + m_fSprintFailSafetyTime=0.2500000 + m_nLinkedDeviceTypes[0]=10828 + m_nLinkedDeviceTypes[1]=11041 + m_nLinkedDeviceTypes[2]=11070 + m_nLinkedDeviceTypes[3]=15052 + m_nLinkedDeviceTypes[4]=11077 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_HyperBeam.uc b/exported/TgGame/Classes/TgDevice_HyperBeam.uc new file mode 100755 index 00000000..29bf63f7 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_HyperBeam.uc @@ -0,0 +1,79 @@ +class TgDevice_HyperBeam extends TgDevice + native(ChampGauntlet) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; + +// Export UTgDevice_HyperBeam::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +simulated event bool CanBeCanceled() +{ + return false; + //return ReturnValue; +} + +simulated event bool IsFunctionallyToggleDevice() +{ + return true; + //return ReturnValue; +} + +simulated function bool ShouldStopActionOnOffhandSlotReleased() +{ + return false; + //return ReturnValue; +} + +simulated function FiringDuration() +{ + // End:0x1E + if(int(Role) == int(ROLE_Authority)) + { + InterruptFiring(); + } + //return; +} + +simulated function bool ShouldConsumePowerPoolOnStartFire() +{ + return false; + //return ReturnValue; +} + +simulated function bool ShouldConsumePowerPoolAfterFire() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + SetTimer(GetCurrentFire().GetPersistTime(), false, 'FiringDuration'); + super.StartFiringLogic(); + //return; + } + + simulated function StopFiringLogic() + { + ClearTimer('FiringTimer'); + // End:0x3B + if(int(Role) == int(ROLE_Authority)) + { + DeviceConsumePowerPool(CurrentFireMode); + } + super.StopFiringLogic(); + //return; + } + stop; +} + +defaultproperties +{ + m_AimAssistKeyframesMagnetVert=none + m_AimAssistKeyframesMagnetHoriz=none + m_nAimAssistPriorityWhileFiring=2 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_IceBlock.uc b/exported/TgGame/Classes/TgDevice_IceBlock.uc new file mode 100755 index 00000000..bf90b1f2 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_IceBlock.uc @@ -0,0 +1,26 @@ +class TgDevice_IceBlock extends TgDevice + hidecategories(Navigation); + +simulated event bool CanBeCanceled() +{ + local float firePostHitTime; + + // End:0x4A + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0x4A + if(firePostHitTime > 0.5000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit + m_bPostFireShouldInterruptStealth=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_IceStorm.uc b/exported/TgGame/Classes/TgDevice_IceStorm.uc new file mode 100755 index 00000000..b9e0f591 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_IceStorm.uc @@ -0,0 +1,7 @@ +class TgDevice_IceStorm extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_bDisableLagCompensation=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Illusion.uc b/exported/TgGame/Classes/TgDevice_Illusion.uc new file mode 100755 index 00000000..74084e69 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Illusion.uc @@ -0,0 +1,33 @@ +class TgDevice_Illusion extends TgDevice_Pet + native(ChampYing) + hidecategories(Navigation); + +// Export UTgDevice_Illusion::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +// Export UTgDevice_Illusion::execSpawnIllusionAtLocation(FFrame&, void* const) +native function TgPawn SpawnIllusionAtLocation(Vector pos, Rotator Rot); + +// Export UTgDevice_Illusion::execMustBeOnGroundToFire(FFrame&, void* const) +native function bool MustBeOnGroundToFire(); + +simulated function CustomFire() +{ + local AimData Aim; + + UpdateIndex(); + GetCachedAim(Aim); + TgPawn(Instigator).FlashFireNoSim(r_nDeviceInstanceId, int(CurrentFireMode), Aim.EndTrace, int(r_eEquippedAt), m_nSocketIndex, false, GetRefireTime()); + // End:0xED + if(int(Role) == int(ROLE_Authority)) + { + SpawnIllusionAtLocation(Aim.EndTrace, Rotator(Aim.AimVector)); + } + //return; +} + +defaultproperties +{ + m_bDeployAtFeetOnFailure=true + m_bAbilityRequiresInhandResync=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_IllusoryRift.uc b/exported/TgGame/Classes/TgDevice_IllusoryRift.uc new file mode 100755 index 00000000..272a87dc --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_IllusoryRift.uc @@ -0,0 +1,24 @@ +class TgDevice_IllusoryRift extends TgDevice + native(ChampYing) + hidecategories(Navigation); + +// Export UTgDevice_IllusoryRift::execApplyHealingToAllies(FFrame&, void* const) +native function ApplyHealingToAllies(); + +simulated function FireAmmunition() +{ + super.FireAmmunition(); + ApplyHealingToAllies(); + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ImpalerArrow.uc b/exported/TgGame/Classes/TgDevice_ImpalerArrow.uc new file mode 100755 index 00000000..5f545714 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ImpalerArrow.uc @@ -0,0 +1,55 @@ +class TgDevice_ImpalerArrow extends TgDevice + native(ChampLongbow) + hidecategories(Navigation); + +var TgPawn_Longbow m_CachedLongbow; + +// Export UTgDevice_ImpalerArrow::execShouldAltFireOnTick(FFrame&, void* const) +native function bool ShouldAltFireOnTick(); + +// Export UTgDevice_ImpalerArrow::execIsDeviceFiringForUI(FFrame&, void* const) +native function bool IsDeviceFiringForUI(); + +simulated event bool ShouldCooldownAfterFire() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldInterruptInhand() +{ + return false; + //return ReturnValue; +} + +simulated event bool HasCachedLongbow() +{ + // End:0x38 + if(m_CachedLongbow == none) + { + m_CachedLongbow = TgPawn_Longbow(Instigator); + return m_CachedLongbow != none; + } + return true; + //return ReturnValue; +} + +simulated function FireAmmunition() +{ + super.FireAmmunition(); + // End:0x57 + if(HasCachedLongbow()) + { + m_CachedLongbow.ToggleImpalerArrow(!m_CachedLongbow.r_bImpalerArrowIsActive); + } + //return; +} + +defaultproperties +{ + m_bBuildupShouldInterruptStealth=false + m_bPreFireShouldInterruptStealth=false + m_bFireShouldInterruptStealth=false + m_bPostFireShouldInterruptStealth=false + m_bCancelingShouldInterruptStealth=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ImpasseMod.uc b/exported/TgGame/Classes/TgDevice_ImpasseMod.uc new file mode 100755 index 00000000..6fe524c1 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ImpasseMod.uc @@ -0,0 +1,3 @@ +class TgDevice_ImpasseMod extends TgDevice + native(ChampBarrierTank) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_Impede.uc b/exported/TgGame/Classes/TgDevice_Impede.uc new file mode 100755 index 00000000..601e04cb --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Impede.uc @@ -0,0 +1,3 @@ +class TgDevice_Impede extends TgDevice_BarricadeMod + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_InPursuit.uc b/exported/TgGame/Classes/TgDevice_InPursuit.uc new file mode 100755 index 00000000..45029668 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_InPursuit.uc @@ -0,0 +1,135 @@ +class TgDevice_InPursuit extends TgDevice + native(ChampLex) + hidecategories(Navigation); + +var bool m_bRecalculateTarget; +var TgPawn_Character m_CurrentMark; +var Actor m_PursuitTarget; +var TgDevice_LexInhand m_CachedInhand; + +// Export UTgDevice_InPursuit::execShouldBlockReload(FFrame&, void* const) +native function bool ShouldBlockReload(TgDevice Dev, bool bIsAutoReload); + +simulated event bool CanBeCanceled() +{ + local float fFirePostHitTime, fPostHitCancelSafetyPeriod; + local TgDeviceFire FireMode; + + // End:0x12 + if(IsInState('DeviceBuildup')) + { + return false; + } + // End:0x2B + if(IsTimerActive('FirePreHitDelay')) + { + return false; + } + // End:0xFF + if(IsTimerActive('FirePostHitDelay')) + { + fFirePostHitTime = GetTimerCount('FirePostHitDelay'); + fPostHitCancelSafetyPeriod = 0.5000000; + FireMode = GetCurrentFire(); + // End:0xE6 + if(FireMode != none) + { + fPostHitCancelSafetyPeriod -= FireMode.GetBuildupTime(); + fPostHitCancelSafetyPeriod -= FireMode.GetPreHitDelay(); + } + // End:0xFF + if(fFirePostHitTime < fPostHitCancelSafetyPeriod) + { + return false; + } + } + return true; + //return ReturnValue; +} + +simulated function TruePostFire() +{ + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0x73 + case 10828: + m_CachedInhand = TgDevice_LexInhand(Dev); + // End:0x76 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x95 + if((IsFiring()) && Current != none) + { + // End:0x70 + if(Current.r_nDeviceId == 16530) + { + return IsInState('DeviceBuildup') || IsTimerActive('TruePostFire'); + } + else + { + // End:0x95 + if(Current.IsA('TgDevice_CombatSlide')) + { + return false; + } + } + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + // End:0x70 + if(m_CachedInhand != none) + { + m_CachedInhand.AsynchronusInterrupt(); + m_CachedInhand.SetFireMode(1, true); + m_CachedInhand.m_bShouldAutoFire = true; + } + super.BeginState(PreviousStateName); + //return; + } + + simulated function EndState(name NextStateName) + { + // End:0x70 + if(m_CachedInhand != none) + { + m_CachedInhand.AsynchronusInterrupt(); + m_CachedInhand.SetFireMode(0, true); + m_CachedInhand.m_bShouldAutoFire = false; + } + SetTimer(GetCurrentFire().GetCustomValue1() - ((HasRemoteOwner()) ? 0.1000000 : 0.0000000), false, 'TruePostFire'); + super.EndState(NextStateName); + //return; + } + stop; +} + +defaultproperties +{ + m_bRecalculateTarget=true + m_nLinkedDeviceTypes[0]=10828 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_IronSights.uc b/exported/TgGame/Classes/TgDevice_IronSights.uc new file mode 100755 index 00000000..d217b372 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_IronSights.uc @@ -0,0 +1,193 @@ +class TgDevice_IronSights extends TgDevice_ToggleWithLockout + native(ChampViktor) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var TgDevice_ViktorInhand m_CachedViktorInhand; +var bool m_bDelayMoveSpeedPenalty; +var bool m_bIsZoomed; +var TgDevice_Hustle m_CachedHustleDevice; + +// Export UTgDevice_IronSights::execShouldAltFireOnTick(FFrame&, void* const) +native function bool ShouldAltFireOnTick(); + +// Export UTgDevice_IronSights::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +// Export UTgDevice_IronSights::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return false; + //return ReturnValue; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0xA4 + case 10828: + Dev.RegisterDelegate(1, CompleteInterrupt); + m_CachedViktorInhand = TgDevice_ViktorInhand(Dev); + return; + // End:0xC8 + case 11070: + m_CachedHustleDevice = TgDevice_Hustle(Dev); + // End:0xD0 + case 11041: + // End:0xD8 + case 15052: + // End:0x114 + case 11077: + Dev.RegisterDelegate(2, CompleteInterrupt); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0x88 + case 10828: + Dev.UnregisterDelegate(1, CompleteInterrupt); + return; + // End:0x90 + case 11041: + // End:0x98 + case 11070: + // End:0xA0 + case 15052: + // End:0xDC + case 11077: + Dev.UnregisterDelegate(2, CompleteInterrupt); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated function bool IsPlayerToggleZoomSet() +{ + local TgPawn TgP; + local TgPlayerController TgPC; + + TgP = TgPawn(Instigator); + // End:0x94 + if(TgP != none) + { + TgPC = TgPlayerController(TgP.Controller); + // End:0x94 + if((TgPC != none) && TgPC.r_bToggleZoom == true) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated function CompleteInterrupt() +{ + m_bIsZoomed = false; + super.CompleteInterrupt(); + //return; +} + +simulated function bool InterceptSlotReleased(TgPlayerController TgController) +{ + // End:0x3E + if(IsPlayerToggleZoomSet()) + { + m_bIsZoomed = !m_bIsZoomed; + // End:0x3E + if(m_bIsZoomed == false) + { + StopFire(); + } + } + return super(TgDevice).InterceptSlotReleased(TgController); + //return ReturnValue; +} + +simulated event bool IsFunctionallyToggleDevice() +{ + // End:0x0F + if(IsPlayerToggleZoomSet()) + { + return true; + } + return super(TgDevice).IsFunctionallyToggleDevice(); + //return ReturnValue; +} + +simulated function bool ShouldStopActionOnOffhandSlotReleased() +{ + // End:0x0F + if(IsPlayerToggleZoomSet()) + { + return false; + } + return super(TgDevice).ShouldStopActionOnOffhandSlotReleased(); + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgPawn TgP; + + TgP = TgPawn(Instigator); + // End:0x59 + if(TgP != none) + { + // End:0x59 + if(TgP.r_bIsJumping) + { + m_bDelayMoveSpeedPenalty = true; + } + } + super.StartFiringLogic(); + //return; + } + stop; +} + +defaultproperties +{ + m_bBuildupShouldInterruptStealth=false + m_bPreFireShouldInterruptStealth=false + m_bFireShouldInterruptStealth=false + m_bCancelingShouldInterruptStealth=false + m_nLinkedDeviceTypes[0]=11077 + m_nLinkedDeviceTypes[1]=10828 + m_nLinkedDeviceTypes[2]=11041 + m_nLinkedDeviceTypes[3]=11070 + m_nLinkedDeviceTypes[4]=15052 + m_nLinkedDeviceTypes[5]=11077 + m_AimAssistKeyframesMagnetVert=none + m_AimAssistKeyframesMagnetHoriz=none + m_nAimAssistPriorityWhileFiring=3 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ItemStoreBeacon.uc b/exported/TgGame/Classes/TgDevice_ItemStoreBeacon.uc new file mode 100755 index 00000000..28be299e --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ItemStoreBeacon.uc @@ -0,0 +1,47 @@ +class TgDevice_ItemStoreBeacon extends TgDevice_TeamDevice + native(Devices) + hidecategories(Navigation); + +// Export UTgDevice_ItemStoreBeacon::execGetBeaconExit(FFrame&, void* const) +native final function TgRespawnBeaconExit GetBeaconExit(); + +// Export UTgDevice_ItemStoreBeacon::execIsBeaconEnabled(FFrame&, void* const) +native final function bool IsBeaconEnabled(); + +// Export UTgDevice_ItemStoreBeacon::execIsTeamBeaconActive(FFrame&, void* const) +native final function bool IsTeamBeaconActive(); + +// Export UTgDevice_ItemStoreBeacon::execIsTargetingModeReady(FFrame&, void* const) +native function bool IsTargetingModeReady(optional out TgObject.EDeviceFailType failType); + +// Export UTgDevice_ItemStoreBeacon::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated function CustomFire() +{ + local AimData Aim; + local TgRespawnBeaconExit Exit; + + // End:0xF2 + if(int(Role) == int(ROLE_Authority)) + { + GetCachedAim(Aim); + Exit = GetBeaconExit(); + // End:0xF2 + if(Aim.bResult && Exit != none) + { + // End:0x99 + if(IsTeamBeaconActive()) + { + Exit.DestroyIt(false); + } + Exit.PlaceAtLocation(Aim.EndTrace, Rotator(Aim.AimVector)); + } + } + //return; +} + +defaultproperties +{ + m_fBottomlessPitCheck=48.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_KinessaInhand.uc b/exported/TgGame/Classes/TgDevice_KinessaInhand.uc new file mode 100755 index 00000000..bd2e8d7b --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_KinessaInhand.uc @@ -0,0 +1,86 @@ +class TgDevice_KinessaInhand extends TgDevice + native(ChampKinessa) + hidecategories(Navigation); + +var() Vector m_vSniperProjectileSpawnOffset; +var ForceFeedbackWaveform m_ForceFeedbackStartFireScout; +var ForceFeedbackWaveform m_ForceFeedbackStartFireSniper; + +// Export UTgDevice_KinessaInhand::execSetFireMode(FFrame&, void* const) +native function SetFireMode(int nFireModeNum, optional bool ForceSet = false); + +// Export UTgDevice_KinessaInhand::execRequiresAmmoToFire(FFrame&, void* const) +native function bool RequiresAmmoToFire(); + +simulated function StartSteadyInhandEffects() +{ + local TgDeviceFire sniperFiremode; + + sniperFiremode = GetCurrentFire(); + // End:0x44 + if(sniperFiremode != none) + { + sniperFiremode.m_bRequireLOS = false; + } + //return; +} + +simulated function EndSteadyInhandEffects() +{ + local TgDeviceFire sniperFiremode; + + sniperFiremode = GetCurrentFire(); + // End:0x44 + if(sniperFiremode != none) + { + sniperFiremode.m_bRequireLOS = true; + } + //return; +} + +simulated state DeviceFiring +{ + simulated function FirePostHitDelay() + { + local TgPawn_Kinessa Kinessa; + + super.FirePostHitDelay(); + // End:0xAF + if(int(Role) == int(ROLE_Authority)) + { + // End:0xAF + if(int(CurrentFireMode) != int(0)) + { + Kinessa = TgPawn_Kinessa(Instigator); + // End:0xAF + if(Kinessa != none) + { + Kinessa.m_fZoomChargeTimestamp = Kinessa.WorldInfo.TimeSeconds; + } + } + } + //return; + } + stop; +} + +defaultproperties +{ + m_vSniperProjectileSpawnOffset=(X=30.0000000,Y=0.0000000,Z=-3.0000000) + m_ForceFeedbackStartFireScout=ForceFeedbackWaveform'gp_forcefeedback.LightForceFeedback' + m_ForceFeedbackStartFireSniper=ForceFeedbackWaveform'gp_forcefeedback.HeavyForceFeedback' + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_ReticuleType=EReticuleType.RETICULE_None + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=17.0000000,Y=0.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_vProjectileSpawnOffset=(X=30.0000000,Y=9.0000000,Z=-10.0000000) + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_Sniper' + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ftLowMag",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H200ftLowMag",Distance=3200.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Kinessa.DeviceInhand' + m_AccuracySettings=(bUsesAdvancedAccuracy=true,fMaxAccuracy=0.9800000,fMinAccuracy=0.8500000,fAccuracyLossPerShot=0.0400000,fAccuracyGainPerSec=0.5000000,fAccuracyGainDelay=0.2000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_KineticBurst.uc b/exported/TgGame/Classes/TgDevice_KineticBurst.uc new file mode 100755 index 00000000..cb465b59 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_KineticBurst.uc @@ -0,0 +1,59 @@ +class TgDevice_KineticBurst extends TgDevice + native(ChampFlak) + hidecategories(Navigation); + +var TgDevice_FlakInhand m_CachedInhand; + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x19 + if(IsTimerActive('FirePreHitDelay')) + { + return true; + } + return false; + //return ReturnValue; +} + +// Export UTgDevice_KineticBurst::execHasCachedInhand(FFrame&, void* const) +native function bool HasCachedInhand(); + +simulated function FireAmmunition() +{ + super.FireAmmunition(); + // End:0x38 + if(HasCachedInhand()) + { + m_CachedInhand.SetFireMode(1, true); + } + //return; +} + +simulated event bool ShouldCooldownAfterFire() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldMountCancelFiring() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldInterruptInhand() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + ClearTimer('FirePostHitDelay'); + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_KingBomb.uc b/exported/TgGame/Classes/TgDevice_KingBomb.uc new file mode 100755 index 00000000..42a020ae --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_KingBomb.uc @@ -0,0 +1,258 @@ +class TgDevice_KingBomb extends TgDevice_Charge + native(ChampBombKing) + hidecategories(Navigation); + +var(Lockout) float m_fEndFireZoomDurationOverride; + +// Export UTgDevice_KingBomb::execShouldInstigatorCollideWith(FFrame&, void* const) +native function bool ShouldInstigatorCollideWith(Actor Other); + +simulated function float GetChargeSpeed() +{ + local float CV1; + local TgDeviceFire FireMode; + local TgPawn_Character TgP; + local float BaseSpeed; + + FireMode = GetCurrentFire(); + // End:0x12E + if(FireMode != none) + { + CV1 = FireMode.GetCustomValue1(); + // End:0x12E + if(CV1 > 0.0000000) + { + TgP = TgPawn_Character(Instigator); + // End:0x124 + if(TgP != none) + { + BaseSpeed = TgP.GetBaseSpeed(); + // End:0x124 + if((TgP.GroundSpeed > 0.0000000) && BaseSpeed > 0.0000000) + { + CV1 *= (TgP.GroundSpeed / BaseSpeed); + } + } + return CV1; + } + } + return super.GetChargeSpeed(); + //return ReturnValue; +} + +simulated event float GetChargeRange() +{ + local float CV1; + local TgDeviceFire FireMode; + local float fChargeTime; + + FireMode = GetCurrentFire(); + // End:0x88 + if(FireMode != none) + { + CV1 = FireMode.GetCustomValue1(); + // End:0x88 + if(CV1 > 0.0000000) + { + fChargeTime = GetChargeTime(); + return CV1 * fChargeTime; + } + } + return super.GetChargeRange(); + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + // End:0x32 + if(IsTimerActive('FirePreHitDelay') || IsTimerActive('FirePostHitDelay')) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated function FireAmmunition() +{ + super(TgDevice_ChainSequence).FireAmmunition(); + // End:0x28 + if(int(Role) == int(ROLE_Authority)) + { + ApplyPostExplodeKnockback(); + } + //return; +} + +simulated function OutroLockoutTime() +{ + local TgPawn_BombKing BombKing; + + BombKing = TgPawn_BombKing(Instigator); + // End:0x70 + if(BombKing != none) + { + BombKing.m_fZoomDurationOverride = 0.0000000; + BombKing.m_bForced3PDuringKingBomb = false; + } + //return; +} + +function ApplyPostExplodeKnockback() +{ + local TgDeviceFire FireMode; + local ImpactInfo Impact; + + FireMode = GetCurrentFire(); + // End:0x12C + if(FireMode != none) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = FireMode; + Impact.HitActor = Instigator; + Instigator.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + Impact.HitNormal = Normal2D(Vector(Instigator.Rotation)); + FireMode.ApplyHitSpecial(Instigator, Impact); + } + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x19 + if(IsTimerActive('OutroLockoutTime')) + { + return true; + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} + +simulated function ImpactInfo CalcWeaponFire(AimData Aim, optional out array ImpactList) +{ + Aim.EndTrace = Instigator.Location; + return super(TgDevice).CalcWeaponFire(Aim, ImpactList); + //return ReturnValue; +} + +simulated state DeviceBuildup +{ + simulated function BeginState(name PreviousStateName) + { + local TgPawn PawnOwner; + + super.BeginState(PreviousStateName); + LockInput(true); + PawnOwner = TgPawn(Owner); + // End:0x68 + if(PawnOwner != none) + { + PawnOwner.SwitchBackToInhandInstantly(); + } + //return; + } + + simulated function EndState(name NextStateName) + { + super.EndState(NextStateName); + LockInput(false); + //return; + } + stop; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + local TgPawn_BombKing BombKing; + + super.BeginState(PreviousStateName); + BombKing = TgPawn_BombKing(Instigator); + // End:0x5F + if(BombKing != none) + { + BombKing.m_bForced3PDuringKingBomb = true; + } + //return; + } + + simulated function bool ShouldStopOnThisHit(Actor Other) + { + return super(TgDevice_Charge).ShouldStopOnThisHit(Other) && ShouldInstigatorCollideWith(Other); + //return ReturnValue; + } + + simulated function OnStoppedChargeOnHit(Actor Other) + { + // End:0x56 + if(IsTimerActive('FirePreHitDelay')) + { + // End:0x38 + if(int(Role) < int(ROLE_Authority)) + { + ClientInitiatedInterrupt(); + } + else + { + InterruptFiring(); + } + ClearTimer('FirePreHitDelay'); + } + //return; + } + + simulated function EndState(name NextStateName) + { + local TgPawn TgP; + local TgPawn_BombKing BombKing; + + super.EndState(NextStateName); + TgP = TgPawn(Instigator); + // End:0x66 + if(TgP != none) + { + TgP.m_fZoomDurationOverride = m_fEndFireZoomDurationOverride; + } + BombKing = TgPawn_BombKing(Instigator); + // End:0xD6 + if(BombKing != none) + { + BombKing.m_fZoomDurationOverride = 0.0000000; + BombKing.m_bForced3PDuringKingBomb = false; + } + //return; + } + + simulated function OnInterruptEvent() + { + // End:0x21 + if(IsTimerActive('FirePreHitDelay')) + { + FireAmmunition(); + } + super(TgDevice).OnInterruptEvent(); + //return; + } + stop; +} + +defaultproperties +{ + m_fEndFireZoomDurationOverride=0.1000000 + m_eChargeState=EChargeState.CHARGE_Turn + m_bStopOnHitType=ChargeStopOnHitType.CSHT_GodOnly + m_ChargeTimingType=ChargeFiringType.CFT_PreFire + m_bUseDamageRadiusForHitProxy=false + m_bIgnoreHumanoids=false + m_bApplyHitOnTouch=false + m_vHitProxyRelativeLocation=(X=15.0000000,Y=0.0000000,Z=0.0000000) + m_vHitProxySizeOffset=(X=20.0000000,Y=10.0000000,Z=0.0000000) + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PreHit + m_bCarryPreFireToPostFire=false + m_bForce3PViewWhileFiring=false + m_bDisableLagCompensation=true + m_bUsesOutroLockout=true + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_BombKing.DeviceKingBomb' + m_fOutroLockoutTime=0.7500000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_LazarusInhand.uc b/exported/TgGame/Classes/TgDevice_LazarusInhand.uc new file mode 100755 index 00000000..7ea90a39 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_LazarusInhand.uc @@ -0,0 +1,19 @@ +class TgDevice_LazarusInhand extends TgDevice_ChainSequence + native(ChampLazarus) + hidecategories(Navigation); + +simulated event int GetChainMax() +{ + return 2; + //return ReturnValue; +} + +defaultproperties +{ + m_fChainResetDuration=3.0000000 + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_ReticuleType=EReticuleType.RETICULE_Wide + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_fAltFireLockOutTime=0.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Leap.uc b/exported/TgGame/Classes/TgDevice_Leap.uc new file mode 100755 index 00000000..fceb002c --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Leap.uc @@ -0,0 +1,131 @@ +class TgDevice_Leap extends TgDevice + native(Devices) + hidecategories(Navigation); + +var bool m_bLeapInLookDirection; +var bool m_bDidJustLeap; + +// Export UTgDevice_Leap::execGetFiringPreHitDelay(FFrame&, void* const) +native function float GetFiringPreHitDelay(optional int nMode = -1); + +// Export UTgDevice_Leap::execMustBeOnGroundToFire(FFrame&, void* const) +native function bool MustBeOnGroundToFire(); + +simulated event bool CanBeCanceled() +{ + return false; + //return ReturnValue; +} + +simulated function SetLeapParams(out float scaleLateral, out float scaleVertical, out float additiveLateral, out float additiveVertical) +{ + local TgDeviceFire deviceFire; + + deviceFire = GetCurrentFire(); + // End:0x25 + if(deviceFire == none) + { + return; + } + scaleLateral = deviceFire.GetCustomValue4(); + scaleVertical = deviceFire.GetCustomValue3(); + additiveLateral = deviceFire.GetCustomValue2(); + additiveVertical = deviceFire.GetCustomValue1(); + //return; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local Rotator JumpRotator; + local Vector JumpVelocity, PawnRotation; + local TgPawn TgInstigator; + local float scaleLateral, scaleVertical, additiveLateral, additiveVertical; + + super.StartFiringLogic(); + TgInstigator = TgPawn(Instigator); + // End:0x37 + if(TgInstigator == none) + { + return; + } + // End:0x73 + if(ShouldInterruptLift()) + { + // End:0x73 + if(TgInstigator != none) + { + TgInstigator.InterruptLift(); + } + } + SetLeapParams(scaleLateral, scaleVertical, additiveLateral, additiveVertical); + // End:0x243 + if(m_bLeapInLookDirection && (scaleLateral != float(0)) || scaleVertical != float(0)) + { + JumpRotator = Instigator.GetAdjustedAimFor(self, TgInstigator.GetWeaponStartTraceLocation(self)); + JumpRotator.Pitch = Clamp(NormalizeRotAxis(JumpRotator.Pitch), 4096, 16383); + JumpRotator.Pitch += int(float(16383 - JumpRotator.Pitch) * 0.3000000); + JumpVelocity = Vector(JumpRotator); + JumpVelocity.X *= scaleLateral; + JumpVelocity.Y *= scaleLateral; + JumpVelocity.Z *= scaleVertical; + } + PawnRotation = Vector(Instigator.Rotation); + JumpVelocity.X += (PawnRotation.X * additiveLateral); + JumpVelocity.Y += (PawnRotation.Y * additiveLateral); + JumpVelocity.Z += additiveVertical; + // End:0x3AB + if((int(TgInstigator.Physics) == int(2)) && TgInstigator.r_bIsJumping) + { + TgInstigator.r_bIsJumping = false; + TgInstigator.ClientCancelJump(); + } + // End:0x3EF + if(TgInstigator.r_bIsKnockedBack) + { + TgInstigator.Knock(false); + } + TgInstigator.SetPhysics(2); + TgInstigator.m_bIsLeaping = true; + TgInstigator.Velocity = JumpVelocity; + m_bDidJustLeap = true; + SetTimer(0.2000000, false, 'EndLeapDelay'); + //return; + } + + simulated function Tick(float DeltaSeconds) + { + super(Actor).Tick(DeltaSeconds); + // End:0xBA + if((!m_bDidJustLeap && self.IsTimerActive('FirePreHitDelay')) && int(Instigator.Physics) == int(1)) + { + TgPawn(Instigator).m_bIsLeaping = false; + SetTimer(0.0000000, false, 'FirePreHitDelay'); + FirePreHitDelay(); + } + //return; + } + + simulated function StopFiringLogic() + { + super.StopFiringLogic(); + m_bDidJustLeap = false; + SetTimer(0.0000000, false, 'EndLeapDelay'); + //return; + } + + simulated function EndLeapDelay() + { + m_bDidJustLeap = false; + //return; + } + stop; +} + +defaultproperties +{ + m_bLeapInLookDirection=true + m_bCarryPreFireToPostFire=false + m_bForce3PViewWhileFiring=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_LegDay.uc b/exported/TgGame/Classes/TgDevice_LegDay.uc new file mode 100755 index 00000000..60c47919 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_LegDay.uc @@ -0,0 +1,18 @@ +class TgDevice_LegDay extends TgDevice + hidecategories(Navigation); + +function ModifyLeapParams(out float scaleLateral, out float scaleVertical, out float additiveLateral, out float additiveVertical) +{ + local TgDeviceFire deviceFire; + + deviceFire = GetCurrentFire(); + // End:0xDC + if(IsActive() && deviceFire != none) + { + scaleLateral *= deviceFire.GetCustomValue4(); + scaleVertical *= deviceFire.GetCustomValue3(); + additiveLateral *= deviceFire.GetCustomValue2(); + additiveVertical *= deviceFire.GetCustomValue1(); + } + //return; +} diff --git a/exported/TgGame/Classes/TgDevice_LexInhand.uc b/exported/TgGame/Classes/TgDevice_LexInhand.uc new file mode 100755 index 00000000..d81bec53 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_LexInhand.uc @@ -0,0 +1,105 @@ +class TgDevice_LexInhand extends TgDevice + native(ChampLex) + hidecategories(Navigation); + +var TgPawn_Lex m_CachedLexPawn; +var TgDevice_InPursuit m_CachedInPursuitDevice; +var TgDevice_Vengeance_Lex m_CachedVengeanceDevice; +var bool m_bShouldAutoFire; +var float m_fQueueFireTime; +var const float m_fQueueFireTimeThreshold; + +// Export UTgDevice_LexInhand::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +// Export UTgDevice_LexInhand::execValidateReceivedAim(FFrame&, void* const) +native function AimData ValidateReceivedAim(float ClientMovementTimeStamp, AimData Aim); + +// Export UTgDevice_LexInhand::execCanFireIfLeftMouseDown(FFrame&, void* const) +native function bool CanFireIfLeftMouseDown(); + +// Export UTgDevice_LexInhand::execShouldAutoFire(FFrame&, void* const) +native function bool ShouldAutoFire(); + +// Export UTgDevice_LexInhand::execDeviceAdjustDamage(FFrame&, void* const) +native function DeviceAdjustDamage(const out ImpactInfo Impact, out float fDamage, int nPropertyId); + +simulated function bool InterceptLeftMousePressed(TgPlayerController TgController) +{ + // End:0x40 + if(IsFiring()) + { + m_fQueueFireTime = WorldInfo.TimeSeconds + m_fQueueFireTimeThreshold; + } + return false; + //return ReturnValue; +} + +simulated event SetAmmo(int AmmoCount, optional int ClipSize = -1, optional bool bShouldValidate = false, optional int ValidationIDOverride = 0) +{ + super.SetAmmo(AmmoCount, ClipSize); + // End:0xE9 + if((int(Role) == int(ROLE_Authority)) && HasCachedLexPawn()) + { + m_CachedLexPawn.r_nInhandAmmoRemaining = GetCurrentAmmoAmount(); + // End:0xC8 + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + m_CachedLexPawn.OnAmmoChange(); + } + else + { + m_CachedLexPawn.bNetDirty = true; + } + } + //return; +} + +simulated function bool HasCachedLexPawn() +{ + // End:0x2B + if(m_CachedLexPawn == none) + { + m_CachedLexPawn = TgPawn_Lex(Instigator); + } + return m_CachedLexPawn != none; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function RestartFireLoop(bool bRefire) + { + m_fQueueFireTime = -1.0000000; + super.RestartFireLoop(bRefire); + //return; + } + + simulated function bool ShouldRefire(TgDeviceFire FireMode, const out AimData Aim) + { + local TgObject.EDeviceFailType failType; + + // End:0x72 + if(int(Role) < int(ROLE_Authority)) + { + return (m_fQueueFireTime > WorldInfo.TimeSeconds) && CanDeviceFireNow(CurrentFireMode, Aim, LogDebugInfo(), failType); + } + return super.ShouldRefire(FireMode, Aim); + //return ReturnValue; + } + stop; +} + +defaultproperties +{ + m_fQueueFireTime=-1.0000000 + m_fQueueFireTimeThreshold=0.2500000 + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAltFireEnabled=true + m_fMeshFOV=77.0000000 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_LexInhand' + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Lex.DeviceInhand' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.HeavyForceFeedback' + m_AccuracySettings=(bUsesAdvancedAccuracy=true,fMaxAccuracy=1.0800000,fMinAccuracy=0.7800000,fAccuracyLossPerShot=0.0500000,fAccuracyGainPerSec=0.6000000,fAccuracyGainDelay=0.3000000) + m_RecoilSettings=(bUsesRecoil=true,fRecoilReductionPerSec=15.0000000,fRecoilSmoothRate=40.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Lifelike.uc b/exported/TgGame/Classes/TgDevice_Lifelike.uc new file mode 100755 index 00000000..f1d78658 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Lifelike.uc @@ -0,0 +1,3 @@ +class TgDevice_Lifelike extends TgDevice + native(ChampYing) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_Lightspeed.uc b/exported/TgGame/Classes/TgDevice_Lightspeed.uc new file mode 100755 index 00000000..7c2ded65 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Lightspeed.uc @@ -0,0 +1,93 @@ +class TgDevice_Lightspeed extends TgDevice + native(ChampAstro) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; + +// Export UTgDevice_Lightspeed::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +// Export UTgDevice_Lightspeed::execShouldInterruptLift(FFrame&, void* const) +native function bool ShouldInterruptLift(); + +// Export UTgDevice_Lightspeed::execShouldBlockReload(FFrame&, void* const) +native function bool ShouldBlockReload(TgDevice Dev, bool bIsAutoReload); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x44 + if(((Current != none) && Current.m_bHandDevice) && IsFiring()) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return !IsTimerActive('CancelSafetyTimer'); + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return true; + //return ReturnValue; +} + +simulated event bool CanFiringBeCanceledByReactivation() +{ + return !IsTimerActive('CancelSafetyTimer'); + //return ReturnValue; +} + +simulated function bool InterceptSlotReleased(TgPlayerController TgController) +{ + return IsTimerActive('CancelSafetyTimer'); + //return ReturnValue; +} + +simulated event bool ShouldInterruptReloadOnFire() +{ + return true; + //return ReturnValue; +} + +simulated function CancelSafetyTimer() +{ + //return; +} + +simulated state DeviceFiring +{ + simulated function RestartFireLoop(bool bRefire) + { + local TgDeviceFire pDeviceFire; + + pDeviceFire = GetCurrentFire(); + // End:0x50 + if(pDeviceFire != none) + { + SetTimer(pDeviceFire.GetCustomValue1(), false, 'CancelSafetyTimer'); + } + super.RestartFireLoop(bRefire); + //return; + } + + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + ClearTimer('FirePostHitDelay'); + //return; + } + + simulated function EndState(name NextStateName) + { + ClearTimer('CancelSafetyTimer'); + super.EndState(NextStateName); + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_Lockdown.uc b/exported/TgGame/Classes/TgDevice_Lockdown.uc new file mode 100755 index 00000000..41e9e4cb --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Lockdown.uc @@ -0,0 +1,8 @@ +class TgDevice_Lockdown extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_bDeployAtFeetOnFailure=true + m_fBottomlessPitCheck=70.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_LongReach.uc b/exported/TgGame/Classes/TgDevice_LongReach.uc new file mode 100755 index 00000000..ee993a41 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_LongReach.uc @@ -0,0 +1,211 @@ +class TgDevice_LongReach extends TgDevice + native(Devices) + hidecategories(Navigation); + +struct native NuggetPullVals +{ + var Actor nugget; + var float fPullTime; + var float fCheckTime; + + structdefaultproperties + { + nugget=none + fPullTime=0.0000000 + fCheckTime=0.0000000 + } +}; + +var float m_fMinPullSpeed; +var float m_fMaxPullSpeed; +var float m_fTimeToMaxPullSpeed; +var float m_fPullSpeedInterpExp; +var TgPawn m_CachedTgP; +var array s_TouchingNuggets; +var float m_fBlockedByBlockersRecheckTime; +var TgCollisionProxy_Cylinder s_CollisionProxy; +var bool s_bIsAuraActive; +var bool m_bAutoActivateAura; + +// Export UTgDevice_LongReach::execIsNuggetValid(FFrame&, void* const) +native function bool IsNuggetValid(Actor Target); + +function OnProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local NuggetPullVals newNugget; + local TgDeploy_HealthNugget nugget; + local int I; + + nugget = TgDeploy_HealthNugget(Other); + // End:0x78 + if((nugget == none) || !nugget.IsFriendlyWithLocalPawn() && nugget.IsA('TgDeploy_HealthNugget_TeamOnly')) + { + return; + } + I = 0; + J0x83: + + // End:0xDF [Loop If] + if(I < s_TouchingNuggets.Length) + { + // End:0xD1 + if(s_TouchingNuggets[I].nugget == nugget) + { + return; + } + I++; + // [Loop Continue] + goto J0x83; + } + nugget.bUpdateSimulatedPosition = true; + newNugget.nugget = nugget; + newNugget.fPullTime = ((IsNuggetValid(nugget)) ? 0.0000000 : -1.0000000); + newNugget.fCheckTime = m_fBlockedByBlockersRecheckTime; + s_TouchingNuggets.AddItem(newNugget); + //return; +} + +function OnProxyUnTouch(Actor Other) +{ + local int I; + + I = 0; + J0x0B: + + // End:0xF1 [Loop If] + if(I < s_TouchingNuggets.Length) + { + // End:0xE3 + if(s_TouchingNuggets[I].nugget == Other) + { + // End:0xCC + if(s_TouchingNuggets[I].nugget != none) + { + s_TouchingNuggets[I].nugget.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + } + s_TouchingNuggets.Remove(I, 1); + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function ClearAllTouched() +{ + local int I; + + I = 0; + J0x0B: + + // End:0xA6 [Loop If] + if(I < s_TouchingNuggets.Length) + { + // End:0x98 + if(s_TouchingNuggets[I].nugget != none) + { + s_TouchingNuggets[I].nugget.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + } + I++; + // [Loop Continue] + goto J0x0B; + } + s_TouchingNuggets.Remove(0, s_TouchingNuggets.Length); + //return; +} + +simulated function DeviceShutDown(optional bool bDeactiveMode, optional bool bResetCooldowns) +{ + DisableAura(); + super.DeviceShutDown(bDeactiveMode, bResetCooldowns); + //return; +} + +simulated event Destroyed() +{ + ClearAllTouched(); + // End:0x3C + if(s_CollisionProxy != none) + { + s_CollisionProxy.Destroy(); + s_CollisionProxy = none; + } + super.Destroyed(); + //return; +} + +event SpawnCollisionProxy() +{ + local TgDeviceFire FireMode; + + // End:0x23F + if((int(Role) == int(ROLE_Authority)) && Owner != none) + { + s_bIsAuraActive = false; + // End:0x6D + if(s_CollisionProxy != none) + { + ClearAllTouched(); + s_CollisionProxy.Destroy(); + s_CollisionProxy = none; + } + FireMode = GetCurrentFire(); + // End:0x23F + if(FireMode != none) + { + s_CollisionProxy = Spawn(Class'TgGame.TgCollisionProxy_Cylinder', Owner,, Owner.Location,,, true); + // End:0x23F + if(s_CollisionProxy != none) + { + s_CollisionProxy.m_bForwardOwnerOnly = true; + s_CollisionProxy.SetCollision(false, false, true); + s_CollisionProxy.SetBase(Owner); + s_CollisionProxy.__ProxyTouch__Delegate = OnProxyTouch; + s_CollisionProxy.__ProxyUnTouch__Delegate = OnProxyUnTouch; + s_CollisionProxy.m_CollisionCylinder.SetCylinderSize(FireMode.GetDamageRadius(), 2.0000000 * FireMode.GetDamageRadius()); + s_CollisionProxy.DelegatesUpdated(); + } + } + } + //return; +} + +event EnableAura() +{ + s_bIsAuraActive = true; + // End:0x25 + if(s_CollisionProxy == none) + { + SpawnCollisionProxy(); + } + // End:0x4F + if(s_CollisionProxy != none) + { + s_CollisionProxy.SetCollision(true, false, false); + } + //return; +} + +event DisableAura() +{ + s_bIsAuraActive = false; + // End:0x36 + if(s_CollisionProxy != none) + { + s_CollisionProxy.SetCollision(false, false, true); + } + ClearAllTouched(); + //return; +} + +defaultproperties +{ + m_fMinPullSpeed=256.0000000 + m_fMaxPullSpeed=1024.0000000 + m_fTimeToMaxPullSpeed=1.0000000 + m_fPullSpeedInterpExp=2.0000000 + m_fBlockedByBlockersRecheckTime=0.2500000 + m_bAutoActivateAura=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_LongbowInhand.uc b/exported/TgGame/Classes/TgDevice_LongbowInhand.uc new file mode 100755 index 00000000..771c02e4 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_LongbowInhand.uc @@ -0,0 +1,203 @@ +class TgDevice_LongbowInhand extends TgDevice + native(ChampLongbow) + hidecategories(Navigation); + +var TgPawn_Longbow m_CachedLongbow; +var float s_fLastFireHoldPct; +var float m_fFireReleasePercent; +var float m_fImpalerReticleAnimationTimer; +var(Reticle) float m_fReticleReleaseAnimationDuration; +var(Reticle) float m_fImpalerReticleFadeInDuration; +var(Reticle) float m_fImpalerReticleFadeOutDuration; +var(Reticle) float m_fImpalerReticleGrowth; +var() Vector m_vProjectileSpawnOffsetPlanted; + +// Export UTgDevice_LongbowInhand::execShouldAutoFire(FFrame&, void* const) +native function bool ShouldAutoFire(); + +// Export UTgDevice_LongbowInhand::execHasCachedLongbow(FFrame&, void* const) +native function bool HasCachedLongbow(); + +simulated event Vector GetProjectileSpawnOffset() +{ + // End:0x1E + if(int(CurrentFireMode) == int(1)) + { + return m_vProjectileSpawnOffsetPlanted; + } + return m_vProjectileSpawnOffset; + //return ReturnValue; +} + +// Export UTgDevice_LongbowInhand::execCanFireIfLeftMouseDown(FFrame&, void* const) +native function bool CanFireIfLeftMouseDown(); + +simulated function bool ReleaseHoldOnRightMouseReleased() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return false; + //return ReturnValue; +} + +simulated function Projectile ProjectileFire(optional int ProjectileIndex = 0) +{ + local Projectile Proj; + local TgDevice_ImpalerArrow impalerArrowDevice; + + Proj = super.ProjectileFire(ProjectileIndex); + // End:0x13A + if((HasCachedLongbow()) && m_CachedLongbow.r_bImpalerArrowIsActive) + { + m_CachedLongbow.ToggleImpalerArrow(false); + impalerArrowDevice = TgDevice_ImpalerArrow(m_CachedLongbow.GetDeviceById(14928)); + // End:0x13A + if(impalerArrowDevice != none) + { + // End:0x119 + if(impalerArrowDevice.IsFiring()) + { + impalerArrowDevice.InterruptFiring(); + impalerArrowDevice.ClientInterrupt(); + } + impalerArrowDevice.StartCooldown(); + } + } + return Proj; + //return ReturnValue; +} + +simulated function int GetProjectileIDOverride(int ProjectileIndex) +{ + // End:0x37 + if((HasCachedLongbow()) && m_CachedLongbow.r_bImpalerArrowIsActive) + { + return 609; + } + return 0; + //return ReturnValue; +} + +simulated function SetFireHoldAmt(float fFireHoldTime) +{ + local TgRepInfo_Player PRI; + local TgDeviceFire FireMode; + + // End:0x199 + if(Instigator != none) + { + PRI = TgRepInfo_Player(Instigator.PlayerReplicationInfo); + FireMode = GetCurrentFire(); + // End:0x186 + if((PRI != none) && FireMode != none) + { + PRI.SetSimProjSpeed(FireMode.m_nId, Lerp(FireMode.GetCustomValue4(), FireMode.GetProjectileSpeed() / float(16), fFireHoldTime)); + PRI.SetSimProjGravityScale(FireMode.m_nId, Lerp(FireMode.GetCustomValue2(), FireMode.GetCustomValue3(), fFireHoldTime)); + } + s_fLastFireHoldPct = fFireHoldTime; + } + //return; +} + +simulated function AdjustSpawnedProjectile(out TgProj_Simulated SpawnedProjectile) +{ + super.AdjustSpawnedProjectile(SpawnedProjectile); + // End:0x8D + if((int(Role) == int(ROLE_Authority)) && m_bIsFireHoldDevice) + { + // End:0x7E + if(SpawnedProjectile != none) + { + SpawnedProjectile.m_fBaseDamageMultiplier = Lerp(GetFireHoldDamageLow(), 1.0000000, s_fLastFireHoldPct); + } + s_fLastFireHoldPct = 0.0000000; + } + //return; +} + +simulated function ReleaseFireHoldInternal() +{ + // End:0xAB + if(m_bFireHoldFull || IsTimerActive('FireHoldTimer')) + { + // End:0x55 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic1(); + } + // End:0x97 + if(HasCachedLongbow()) + { + m_CachedLongbow.FlashGeneric1(r_nDeviceInstanceId, int(CurrentFireMode), true); + } + m_fFireReleasePercent = GetFireHoldPct(); + } + super.ReleaseFireHoldInternal(); + //return; +} + +simulated function bool StartFireHold() +{ + local float fFireHoldTime; + + // End:0x11 + if(!super.StartFireHold()) + { + return false; + } + fFireHoldTime = (GetFireHoldTime()) / (GetFireHoldRate()); + // End:0x6E + if(c_DeviceForm != none) + { + c_DeviceForm.PlayToggleTransitionAnimations(0.0000000, fFireHoldTime, true); + } + // End:0xBC + if(HasCachedLongbow()) + { + m_CachedLongbow.FlashTransitionIn(r_nDeviceInstanceId, int(CurrentFireMode), 0.0000000, fFireHoldTime); + } + return true; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return (IsFiring()) && !IsTimerActive('FirePostHitDelay'); + //return ReturnValue; +} + +defaultproperties +{ + m_fReticleReleaseAnimationDuration=0.1500000 + m_fImpalerReticleFadeInDuration=0.1000000 + m_fImpalerReticleFadeOutDuration=0.1000000 + m_fImpalerReticleGrowth=10.0000000 + m_vProjectileSpawnOffsetPlanted=(X=15.0000000,Y=5.0000000,Z=-45.0000000) + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_ReticuleType=EReticuleType.RETICULE_ShaLin + m_bBuildupShouldInterruptStealth=false + m_bPreFireShouldInterruptStealth=false + m_bPostFireShouldInterruptStealth=false + m_bStartFireShouldEnterCombat=false + m_bAimThroughReticule=true + m_bNoReticleBloom=true + m_bAltFireEnabled=true + m_bIsFireHoldDevice=true + m_vMeshViewOffset=(X=12.0000000,Y=1.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_fMeshFOV=90.0000000 + m_vProjectileSpawnOffset=(X=15.0000000,Y=0.0000000,Z=-5.0000000) + m_fAltFireLockOutTime=0.0000000 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_LongbowInhand' + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ftLowMag",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H200ftLowMag",Distance=3200.0000000) + m_ForceFeedbackStopHold=ForceFeedbackWaveform'gp_forcefeedback.HeavyForceFeedback' + m_ForceFeedbackStopReload=ForceFeedbackWaveform'gp_forcefeedback.StandardReload' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_LongbowPlanted.uc b/exported/TgGame/Classes/TgDevice_LongbowPlanted.uc new file mode 100755 index 00000000..1e99196e --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_LongbowPlanted.uc @@ -0,0 +1,141 @@ +class TgDevice_LongbowPlanted extends TgDevice_Stim + hidecategories(Navigation); + +var TgPawn_Longbow m_CachedLongbow; +var TgDevice_LongbowInhand m_CachedInhand; + +simulated event bool CanBeCanceled() +{ + return IsTimerActive('FirePostHitDelay'); + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return true; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x98 + if((Current != none) && Current.m_bHandDevice) + { + // End:0x69 + if(!IsTimerActive('FirePreHitDelay') && !IsTimerActive('TransitionOut')) + { + return false; + } + // End:0x98 + if(HasRemoteOwner() && GetRemainingTimeForTimer('FirePreHitDelay') < 0.1000000) + { + return false; + } + } + // End:0xA7 + if(IsFiring()) + { + return true; + } + // End:0xD0 + if(HasRemoteOwner()) + { + return GetRemainingTimeForTimer('TransitionOut') > 0.1000000; + } + return IsTimerActive('TransitionOut'); + //return ReturnValue; +} + +simulated function TransitionOut() +{ + //return; +} + +simulated function bool HasCachedLongbow() +{ + // End:0x11 + if(m_CachedLongbow != none) + { + return true; + } + m_CachedLongbow = TgPawn_Longbow(Instigator); + return m_CachedLongbow != none; + //return ReturnValue; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super(TgDevice).LinkedDeviceEquipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0x73 + case 10828: + m_CachedInhand = TgDevice_LongbowInhand(Dev); + // End:0x76 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated function bool RequireMovementForAimAssist() +{ + return !NativeIsFiring(); + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + // End:0xC0 + if(m_CachedInhand != none) + { + m_CachedInhand.AsynchronusInterrupt(); + m_CachedInhand.SetFireMode(1, true); + m_CachedInhand.m_bIsFireHoldDevice = false; + m_CachedInhand.SetFireHoldAmt(1.0000000); + // End:0xC0 + if(HasCachedLongbow()) + { + m_CachedLongbow.ClearImpalerArrow(); + } + } + super.BeginState(PreviousStateName); + //return; + } + + simulated function EndState(name NextStateName) + { + // End:0xAB + if(m_CachedInhand != none) + { + m_CachedInhand.AsynchronusInterrupt(); + m_CachedInhand.SetFireMode(0, true); + m_CachedInhand.m_bIsFireHoldDevice = true; + SetTimer(self.GetCurrentFire().GetCustomValue1(), false, 'TransitionOut'); + } + super.EndState(NextStateName); + //return; + } + stop; +} + +defaultproperties +{ + m_bBuildupShouldInterruptStealth=false + m_bPreFireShouldInterruptStealth=false + m_bFireShouldInterruptStealth=false + m_bCancelingShouldInterruptStealth=false + m_nLinkedDeviceTypes[0]=10828 + m_AimAssistKeyframesMagnetVert=none + m_AimAssistKeyframesMagnetHoriz=none + m_nAimAssistPriorityWhileFiring=2 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_MakoaInhand.uc b/exported/TgGame/Classes/TgDevice_MakoaInhand.uc new file mode 100755 index 00000000..2e255683 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_MakoaInhand.uc @@ -0,0 +1,31 @@ +class TgDevice_MakoaInhand extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=10.0000000,Y=2.0000000,Z=-2.0000000) + m_fMeshFOV=90.0000000 + m_vProjectileSpawnOffset=(X=0.0000000,Y=10.0000000,Z=-8.0000000) + m_fAltFireLockOutTime=0.0000000 + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetVert[1]=(KeyframeName="V100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetVert[2]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[2]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[2]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[1]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[1]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.HeavyForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_MalDambaInhand.uc b/exported/TgGame/Classes/TgDevice_MalDambaInhand.uc new file mode 100755 index 00000000..974c3807 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_MalDambaInhand.uc @@ -0,0 +1,35 @@ +class TgDevice_MalDambaInhand extends TgDevice + native(ChampMalDamba) + hidecategories(Navigation); + +simulated function PreReloadTimer() +{ + NotifyDeviceEvent(4); + super.PreReloadTimer(); + //return; +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_fMeshFOV=77.0000000 + m_vProjectileSpawnOffset=(X=45.0000000,Y=12.0000000,Z=0.0000000) + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[2]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[2]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[1]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[1]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.BasicForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_MarkAndRecall.uc b/exported/TgGame/Classes/TgDevice_MarkAndRecall.uc new file mode 100755 index 00000000..d31e5d9f --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_MarkAndRecall.uc @@ -0,0 +1,32 @@ +class TgDevice_MarkAndRecall extends TgDevice + hidecategories(Navigation); + +var Vector m_markedLocation; +var Rotator m_markedRotation; +var bool m_bMarked; + +simulated function FireAmmunition() +{ + // End:0x7D + if(!m_bMarked) + { + // End:0x6E + if(Instigator != none) + { + m_markedLocation = Instigator.Location; + m_markedRotation = Instigator.Rotation; + } + m_bMarked = true; + } + else + { + // End:0xCE + if(Instigator != none) + { + Instigator.SetLocation(m_markedLocation); + Instigator.SetRotation(m_markedRotation); + } + m_bMarked = false; + } + //return; +} diff --git a/exported/TgGame/Classes/TgDevice_MarkShot.uc b/exported/TgGame/Classes/TgDevice_MarkShot.uc new file mode 100755 index 00000000..ff42f1fb --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_MarkShot.uc @@ -0,0 +1,18 @@ +class TgDevice_MarkShot extends TgDevice + native(ChampLex) + hidecategories(Navigation); + +var bool m_bRecalculateMark; +var TgPawn_Character m_CurrentMark; + +simulated event bool StartFire() +{ + m_bRecalculateMark = true; + return super.StartFire(); + //return ReturnValue; +} + +defaultproperties +{ + m_bRecalculateMark=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_MegaTurret.uc b/exported/TgGame/Classes/TgDevice_MegaTurret.uc new file mode 100755 index 00000000..44531d33 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_MegaTurret.uc @@ -0,0 +1,3 @@ +class TgDevice_MegaTurret extends TgDevice_TurretMod + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_Meteor.uc b/exported/TgGame/Classes/TgDevice_Meteor.uc new file mode 100755 index 00000000..8498c53b --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Meteor.uc @@ -0,0 +1,20 @@ +class TgDevice_Meteor extends TgDevice + native(Devices) + hidecategories(Navigation); + +// Export UTgDevice_Meteor::execGetAnActiveLanePusher(FFrame&, void* const) +native final function TgPawn_LanePusher GetAnActiveLanePusher(); + +// Export UTgDevice_Meteor::execGetAnActiveCapturePoint(FFrame&, void* const) +native final function TgChaosCapturePoint GetAnActiveCapturePoint(); + +// Export UTgDevice_Meteor::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +// Export UTgDevice_Meteor::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +defaultproperties +{ + r_OverrideUsesTargetingModeAsFalse=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Midnight.uc b/exported/TgGame/Classes/TgDevice_Midnight.uc new file mode 100755 index 00000000..caa1fc9a --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Midnight.uc @@ -0,0 +1,21 @@ +class TgDevice_Midnight extends TgDevice + native(ChampBlades) + hidecategories(Navigation); + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgPawn_Blades Blades; + + Blades = TgPawn_Blades(Instigator); + // End:0x4C + if(Blades != none) + { + Blades.SetGemEmissiveAnim(6); + } + super.StartFiringLogic(); + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_MinigunSpinUp.uc b/exported/TgGame/Classes/TgDevice_MinigunSpinUp.uc new file mode 100755 index 00000000..c70141a9 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_MinigunSpinUp.uc @@ -0,0 +1,91 @@ +class TgDevice_MinigunSpinUp extends TgDevice + hidecategories(Navigation); + +var TgDevice_RuckusInhand m_cachedRuckusInhand; + +simulated function bool IsToggleDevice() +{ + return true; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x38 + if(IsFiring()) + { + // End:0x38 + if(int(Current.r_eEquippedAt) == int(23)) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated function StartSpinningInhand() +{ + CacheRuckusInhand(); + // End:0x3A + if(m_cachedRuckusInhand != none) + { + m_cachedRuckusInhand.m_bAltFireSpinning = true; + } + //return; +} + +simulated function StopSpinningInhand() +{ + CacheRuckusInhand(); + // End:0x3A + if(m_cachedRuckusInhand != none) + { + m_cachedRuckusInhand.m_bAltFireSpinning = false; + } + //return; +} + +simulated function CacheRuckusInhand() +{ + local TgPawn_Character TgPC; + + // End:0x6D + if(m_cachedRuckusInhand == none) + { + TgPC = TgPawn_Character(Instigator); + // End:0x6D + if(TgPC != none) + { + m_cachedRuckusInhand = TgDevice_RuckusInhand(TgPC.GetDeviceByEqPoint(1)); + } + } + //return; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + super.BeginState(PreviousStateName); + StartSpinningInhand(); + //return; + } + + simulated function EndState(name NextStateName) + { + super.EndState(NextStateName); + StopSpinningInhand(); + //return; + } + stop; +} + +defaultproperties +{ + m_bBuildupShouldInterruptStealth=false + m_bPreFireShouldInterruptStealth=false + m_bFireShouldInterruptStealth=false + m_bPostFireShouldInterruptStealth=false + m_bCancelingShouldInterruptStealth=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Molotov.uc b/exported/TgGame/Classes/TgDevice_Molotov.uc new file mode 100755 index 00000000..5fed0d90 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Molotov.uc @@ -0,0 +1,7 @@ +class TgDevice_Molotov extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_vProjectileSpawnOffset=(X=30.0000000,Y=-9.0000000,Z=-10.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_MonolithTotem.uc b/exported/TgGame/Classes/TgDevice_MonolithTotem.uc new file mode 100755 index 00000000..da6e36db --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_MonolithTotem.uc @@ -0,0 +1,3 @@ +class TgDevice_MonolithTotem extends TgDevice_TotemMod + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_Mount.uc b/exported/TgGame/Classes/TgDevice_Mount.uc new file mode 100755 index 00000000..1274ce00 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Mount.uc @@ -0,0 +1,441 @@ +class TgDevice_Mount extends TgDevice_Toggle + native(Devices) + hidecategories(Navigation); + +const TG_DOT_GUARD_MOUNTING = false; + +var bool m_bForceFireDueToRespawn; +var bool m_bPostureChange; +var bool m_bDismountProtection; +var() float m_fZoomDurationOverride; +var int m_nAutoReloadTransactionID; +var TgDevice m_CachedInhand; +var float m_fAutoMountDismountProtectionDuration; + +// Export UTgDevice_Mount::execGetFiringPreHitDelay(FFrame&, void* const) +native function float GetFiringPreHitDelay(optional int nMode = -1); + +// Export UTgDevice_Mount::execIsDeviceFiringLockedForUI(FFrame&, void* const) +native function bool IsDeviceFiringLockedForUI(); + +// Export UTgDevice_Mount::execMustBeOnGroundToFire(FFrame&, void* const) +native function bool MustBeOnGroundToFire(); + +// Export UTgDevice_Mount::execRequiresAmmoToFire(FFrame&, void* const) +native function bool RequiresAmmoToFire(); + +// Export UTgDevice_Mount::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +// Export UTgDevice_Mount::execIsAnyDeviceOverridingDismount(FFrame&, void* const) +native function bool IsAnyDeviceOverridingDismount(int DamageAmt); + +simulated function OnOwnerRespawn() +{ + super(TgDevice).OnOwnerRespawn(); + SetAllowMountServerTimer(); + //return; +} + +function SetAllowMountServerTimer() +{ + // End:0x3C + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + SetTimer(5.0000000, false, 'AllowMountServer'); + } + //return; +} + +function AllowMountServer() +{ + //return; +} + +reliable client simulated function ClientStartMount() +{ + Use(); + //return; +} + +event ServerForceMount() +{ + local TgPawn PawnOwner; + + PawnOwner = TgPawn(Owner); + // End:0x4B + if(PawnOwner != none) + { + PawnOwner.InterruptAllDevices(true); + } + SetAllowMountServerTimer(); + ClientStartMount(); + //return; +} + +function DismountOnDamage(int DamageAmt) +{ + // End:0x33 + if(!IsAnyDeviceOverridingDismount(DamageAmt) && !IsItemShopVolumeBlockingDismounting()) + { + InterruptFiring(); + } + //return; +} + +simulated function EndDismountProtection() +{ + m_bDismountProtection = false; + //return; +} + +simulated event bool CanBeCanceled() +{ + return (IsFiring()) && !IsItemShopVolumeBlockingDismounting(); + //return ReturnValue; +} + +simulated event bool CanFiringBeCanceledByReactivation() +{ + return (CanBeCanceled()) && !m_bDismountProtection; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return (IsFiring()) && !IsItemShopVolumeBlockingDismounting(); + //return ReturnValue; +} + +simulated function bool IsItemShopVolumeBlockingDismounting() +{ + local TgPawn TgP; + + TgP = TgPawn(Instigator); + // End:0x2D + if(TgP == none) + { + return false; + } + return TgP.IsInItemShop(); + //return ReturnValue; +} + +simulated event bool CanFiringBeCanceledByRightMouse() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldMountCancelFiring() +{ + return false; + //return ReturnValue; +} + +simulated function FireAmmunition() +{ + EndEnteringMount(); + super.FireAmmunition(); + //return; +} + +simulated function OnStartFireRequestSent() +{ + local TgDeviceFire InhandFireMode; + + m_nAutoReloadTransactionID = 0; + // End:0xFB + if((m_CachedInhand != none) && m_CachedInhand.RequiresAmmoToFire()) + { + InhandFireMode = m_CachedInhand.GetCurrentFire(); + // End:0xFB + if(InhandFireMode != none) + { + m_nAutoReloadTransactionID = m_CachedInhand.SetAmmoDelayedWithValidation(m_CachedInhand.r_nMaxAmmoClipCount, InhandFireMode.m_fAmmoClipPreReloadTime + InhandFireMode.m_fAmmoClipPostReloadTime); + } + } + super(TgDevice).OnStartFireRequestSent(); + //return; +} + +simulated function OnInterruptEvent() +{ + // End:0x53 + if((m_nAutoReloadTransactionID != 0) && m_CachedInhand != none) + { + m_CachedInhand.CancelSetAmmoDelayed(m_nAutoReloadTransactionID); + m_nAutoReloadTransactionID = 0; + } + super(TgDevice).OnInterruptEvent(); + //return; +} + +simulated function bool IsOwnerOnGround() +{ + local TgPawn TgP; + + TgP = TgPawn(Instigator); + return (TgP == none) || int(TgP.Physics) == int(1); + //return ReturnValue; +} + +function AuthStartCooldown(optional int nMode = -1, optional float fCooldownTimeOverride = -1.0000000) +{ + // End:0x6F + if(!TgRepInfo_Game(WorldInfo.GRI).AllowPlayerMounting()) + { + super(TgDevice).AuthStartCooldown(nMode, 0.0000000); + } + else + { + super(TgDevice).AuthStartCooldown(nMode, fCooldownTimeOverride); + } + //return; +} + +simulated function AutoDismount() +{ + // End:0x17 + if(IsFiring()) + { + InterruptFiring(); + } + //return; +} + +simulated function OutroLockoutTime() +{ + local TgPawn TgP; + + TgP = TgPawn(Instigator); + // End:0x4F + if(TgP != none) + { + TgP.m_fZoomDurationOverride = 0.0000000; + } + //return; +} + +simulated function SetMountedCollision(bool IsActive) +{ + local TgPawn_Character OwningCharacter; + + OwningCharacter = TgPawn_Character(Instigator); + // End:0x54 + if(OwningCharacter != none) + { + OwningCharacter.SetMountedCollision(IsActive); + } + //return; +} + +simulated function EndEnteringMount(optional bool bEndingFireLoop) +{ + local TgPawn TgP; + + TgP = TgPawn(Instigator); + // End:0x4D + if(TgP != none) + { + TgP.m_bIsEnteringMount = false; + } + //return; +} + +simulated function InterruptOtherDevices(TgPawn TgP) +{ + local TgDevice Dev; + local int I; + + super(TgDevice).InterruptOtherDevices(TgP); + // End:0xE3 + if(int(Role) == int(ROLE_Authority)) + { + // End:0xE3 + if(TgP != none) + { + I = 1; + J0x41: + + // End:0xE3 [Loop If] + if(I < 33) + { + Dev = TgP.m_EquippedDevices[I]; + // End:0xD5 + if((Dev != none) && Dev.ShouldMountCancelFiring()) + { + Dev.InterruptFiring(); + } + I++; + // [Loop Continue] + goto J0x41; + } + } + } + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + local float firePreHitTime; + + // End:0x4A + if(IsTimerActive('FirePreHitDelay')) + { + firePreHitTime = GetTimerCount('FirePreHitDelay'); + // End:0x4A + if(firePreHitTime < 0.5000000) + { + return true; + } + } + // End:0x94 + if(((Current != none) && Current.m_nDeviceType == 10828) && IsFiring()) + { + return true; + } + // End:0xAD + if(IsTimerActive('OutroLockoutTime')) + { + return true; + } + return super(TgDevice).ShouldLockFiring(Current); + //return ReturnValue; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super(TgDevice).LinkedDeviceEquipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0x6A + case 10828: + m_CachedInhand = Dev; + // End:0x6D + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated state DeviceBuildup +{ + simulated function BeginState(name PreviousStateName) + { + // End:0x20 + if(IsOwnerOnGround()) + { + super.BeginState(PreviousStateName); + } + //return; + } + + simulated function Tick(float DeltaSeconds) + { + // End:0x20 + if(IsOwnerOnGround()) + { + BeginState('Active'); + } + //return; + } + stop; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PrevStateName) + { + local TgPawn TgP; + local bool bAllowPlayerMounting; + + bAllowPlayerMounting = TgRepInfo_Game(WorldInfo.GRI).AllowPlayerMounting(); + // End:0x63 + if(!bAllowPlayerMounting) + { + m_bForceFireDueToRespawn = true; + } + TgP = TgPawn(Instigator); + // End:0xEB + if(TgP != none) + { + TgP.r_bUseMountPosture = m_bPostureChange; + TgP.OnMountBegin(m_bForceFireDueToRespawn, m_bPostureChange); + } + SetMountedCollision(true); + InterruptOtherDevices(TgP); + m_bDismountProtection = true; + // End:0x13C + if(m_bForceFireDueToRespawn) + { + SetTimer(m_fAutoMountDismountProtectionDuration, false, 'EndDismountProtection'); + } + else + { + SetTimer(0.5000000, false, 'EndDismountProtection'); + } + super.BeginState(PrevStateName); + //return; + } + + simulated function EndState(name NextStateName) + { + local TgPlayerController TgPC; + local TgAIController TgAIC; + local TgPawn TgP; + + super.EndState(NextStateName); + TgPC = TgPlayerController(Instigator.Controller); + // End:0x74 + if(TgPC != none) + { + TgPC.bRun = 0; + } + TgP = TgPawn(Instigator); + // End:0x175 + if(TgP != none) + { + EndEnteringMount(true); + TgP.StopMountingEffects(true, m_bPostureChange); + TgP.OnDismount(); + TgAIC = TgAIController(Instigator.Controller); + // End:0x175 + if(TgAIC != none) + { + TgP.r_bIsMounted = false; + TgP.bNetDirty = true; + } + } + // End:0x1AC + if(TgP != none) + { + TgP.m_fZoomDurationOverride = m_fZoomDurationOverride; + } + m_bForceFireDueToRespawn = false; + SetMountedCollision(false); + ClearTimer('EndDismountProtection'); + m_bDismountProtection = false; + //return; + } + stop; +} + +defaultproperties +{ + m_bPostureChange=true + m_fZoomDurationOverride=0.1000000 + m_fAutoMountDismountProtectionDuration=2.0000000 + m_bAlwaysStartCooldown=true + m_bMustBeOnGroundToFire=true + m_bUsesOutroLockout=true + m_nLinkedDeviceTypes[0]=10828 + m_fOutroLockoutTime=0.3000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_MountMorph.uc b/exported/TgGame/Classes/TgDevice_MountMorph.uc new file mode 100755 index 00000000..c7dc73b2 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_MountMorph.uc @@ -0,0 +1,41 @@ +class TgDevice_MountMorph extends TgDevice_Mount + hidecategories(Navigation); + +simulated state DeviceFiring +{ + simulated function BeginState(name PrevStateName) + { + local TgPawn TgP; + + super.BeginState(PrevStateName); + TgP = TgPawn(Instigator); + // End:0x96 + if((TgP != none) && int(Role) == int(ROLE_Authority)) + { + TgP.r_bMorphMounted = true; + TgP.bNetDirty = true; + } + //return; + } + + simulated function EndState(name NextStateName) + { + local TgPawn TgP; + + super.EndState(NextStateName); + TgP = TgPawn(Instigator); + // End:0x96 + if((TgP != none) && int(Role) == int(ROLE_Authority)) + { + TgP.r_bMorphMounted = false; + TgP.bNetDirty = true; + } + //return; + } + stop; +} + +defaultproperties +{ + m_bPostureChange=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_MountNoHorse.uc b/exported/TgGame/Classes/TgDevice_MountNoHorse.uc new file mode 100755 index 00000000..b1c64bb2 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_MountNoHorse.uc @@ -0,0 +1,7 @@ +class TgDevice_MountNoHorse extends TgDevice_Mount + hidecategories(Navigation); + +defaultproperties +{ + m_bPostureChange=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_NetShot.uc b/exported/TgGame/Classes/TgDevice_NetShot.uc new file mode 100755 index 00000000..fb725e05 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_NetShot.uc @@ -0,0 +1,8 @@ +class TgDevice_NetShot extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_bAimThroughReticule=true + m_vProjectileSpawnOffset=(X=0.0000000,Y=5.0000000,Z=0.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_NetherStep.uc b/exported/TgGame/Classes/TgDevice_NetherStep.uc new file mode 100755 index 00000000..3b0d58cc --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_NetherStep.uc @@ -0,0 +1,96 @@ +class TgDevice_NetherStep extends TgDevice_DoubleCharge + native(ChampAndroxus) + hidecategories(Navigation); + +// Export UTgDevice_NetherStep::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +// Export UTgDevice_NetherStep::execShouldInterruptStealth(FFrame&, void* const) +native function bool ShouldInterruptStealth(); + +// Export UTgDevice_NetherStep::execSetFireMode(FFrame&, void* const) +native function SetFireMode(int nFireModeNum, optional bool ForceSet = false); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x2A + if(Current.m_nDeviceType == 11077) + { + return false; + } + return m_bCharging; + //return ReturnValue; +} + +simulated function int GetTotalNumberOfShots() +{ + local int nTotalNumShots; + local TgDeviceFire deviceFire; + + nTotalNumShots = 0; + deviceFire = GetCurrentFire(); + // End:0x59 + if(deviceFire != none) + { + nTotalNumShots = int(deviceFire.GetCustomValue1()); + } + return nTotalNumShots; + //return ReturnValue; +} + +simulated event bool CanFiringBeCanceledByLeftMouse() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanFiringBeCanceledByRightMouse() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanFiringBeCanceledByReactivation() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated event EndCharge() + { + local TgDeviceFire deviceFire; + + super.EndCharge(); + // End:0x87 + if(Instigator != none) + { + Instigator.Velocity.X = 0.0000000; + Instigator.Velocity.Y = 0.0000000; + } + // End:0xED + if(m_nShotsFired < (GetTotalNumberOfShots())) + { + deviceFire = GetCurrentFire(); + // End:0xED + if(deviceFire != none) + { + deviceFire.ApplyHitSpecial(Instigator); + } + } + //return; + } + stop; +} + +defaultproperties +{ + m_nTotalNumShots=3 + m_bSetAsTargetingDeviceForMultiFire=false + m_bStopOnHitType=ChargeStopOnHitType.CSHT_GodOnly + m_bUsePhysFlying=true + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_RefireTime + s_bIgnoreReceivedAim=true + m_bForce3PViewWhileFiring=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_NineLives.uc b/exported/TgGame/Classes/TgDevice_NineLives.uc new file mode 100755 index 00000000..7aaf9878 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_NineLives.uc @@ -0,0 +1,21 @@ +class TgDevice_NineLives extends TgDevice + native(ChampBlades) + hidecategories(Navigation); + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgPawn_Blades Blades; + + Blades = TgPawn_Blades(Instigator); + // End:0x4C + if(Blades != none) + { + Blades.SetGemEmissiveAnim(5); + } + super.StartFiringLogic(); + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_OppressorMine.uc b/exported/TgGame/Classes/TgDevice_OppressorMine.uc new file mode 100755 index 00000000..62d9c435 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_OppressorMine.uc @@ -0,0 +1,66 @@ +class TgDevice_OppressorMine extends TgDevice + native(ChampKinessa) + hidecategories(Navigation); + +var array m_NewTargetSFXRecentTargets; +var array m_NewTargetSFXTargetTime; +var float m_fMinNewTargetSFXDelay; + +reliable client simulated function ClientPlayOppressorMineNewTargetSound(Actor Target) +{ + local TgPawn_Character TgPC; + local int Index; + + // End:0x11 + if(Target == none) + { + return; + } + // End:0x83 + if(m_NewTargetSFXRecentTargets.Find(Target) == -1) + { + m_NewTargetSFXRecentTargets.AddItem(Target); + m_NewTargetSFXTargetTime.AddItem(WorldInfo.TimeSeconds - (float(2) * m_fMinNewTargetSFXDelay)); + } + Index = m_NewTargetSFXRecentTargets.Find(Target); + // End:0x1A7 + if((Index != -1) && (m_NewTargetSFXTargetTime[Index] + m_fMinNewTargetSFXDelay) <= WorldInfo.TimeSeconds) + { + TgPC = TgPawn_Character(Owner); + // End:0x1A7 + if((TgPC != none) && TgPC.IsAliveAndWell()) + { + TgPC.FxReactivateGroupSelf('KinessaOppressorMineNewTarget', 0); + m_NewTargetSFXTargetTime[Index] = WorldInfo.TimeSeconds; + } + } + //return; +} + +event PlayOppressorMineNewTargetSound(Actor Target) +{ + ClientPlayOppressorMineNewTargetSound(Target); + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x18 + if(super.ShouldLockFiring(Current)) + { + return true; + } + // End:0x62 + if(((Current != none) && Current.r_nDeviceId == 13142) && IsFiring()) + { + return true; + } + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_fMinNewTargetSFXDelay=3.0000000 + m_vProjectileSpawnOffset=(X=32.0000000,Y=8.0000000,Z=0.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_OppressorMineMod.uc b/exported/TgGame/Classes/TgDevice_OppressorMineMod.uc new file mode 100755 index 00000000..181e9ce3 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_OppressorMineMod.uc @@ -0,0 +1,14 @@ +class TgDevice_OppressorMineMod extends TgDevice + native(Devices) + hidecategories(Navigation); + +var array m_MinesInRage; + +// Export UTgDevice_OppressorMineMod::execApplyEffect(FFrame&, void* const) +native function ApplyEffect(TgDeploy_OppressorMine mine, Actor Target); + +// Export UTgDevice_OppressorMineMod::execRemoveEffect(FFrame&, void* const) +native function RemoveEffect(TgDeploy_OppressorMine mine, Actor Target); + +// Export UTgDevice_OppressorMineMod::execCheckOwnerEffect(FFrame&, void* const) +native function CheckOwnerEffect(TgDeploy_OppressorMine mine); diff --git a/exported/TgGame/Classes/TgDevice_OracleInhand.uc b/exported/TgGame/Classes/TgDevice_OracleInhand.uc new file mode 100755 index 00000000..e4264e80 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_OracleInhand.uc @@ -0,0 +1,31 @@ +class TgDevice_OracleInhand extends TgDevice_ToggleInhand + native(ChampOracle) + hidecategories(Navigation); + +simulated event DeliverHit(ImpactInfo Impact) +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + super(TgDevice).DeliverHit(Impact); + // End:0xA0 + if((FireMode != none) && Impact.HitActor != none) + { + FireMode.ApplyHitSpecial(Impact.HitActor, Impact); + } + //return; +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=10.0000000,Y=2.0000000,Z=-2.0000000) + m_fWeaponBob=0.0000000 + m_fMeshFOV=90.0000000 + m_vProjectileSpawnOffset=(X=25.0000000,Y=12.0000000,Z=-6.0000000) + m_fAltFireLockOutTime=0.0000000 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_OracleInhand' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.LightForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Outreach.uc b/exported/TgGame/Classes/TgDevice_Outreach.uc new file mode 100755 index 00000000..b6c5d77a --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Outreach.uc @@ -0,0 +1,3 @@ +class TgDevice_Outreach extends TgDevice_TotemMod + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_OverGrowth.uc b/exported/TgGame/Classes/TgDevice_OverGrowth.uc new file mode 100755 index 00000000..1b988e7a --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_OverGrowth.uc @@ -0,0 +1,39 @@ +class TgDevice_OverGrowth extends TgDevice + native(ChampGrover) + hidecategories(Navigation); + +var TgDevice m_VineDevice; + +simulated event bool StartFire() +{ + local TgTimerManager TimerManager; + + m_VineDevice = TgPawn(Owner).GetDeviceByEqPoint(4); + TimerManager = m_VineDevice.GetCooldownTimerManager(); + // End:0x8D + if(TimerManager.IsActiveTimers()) + { + return super.StartFire(); + } + else + { + return false; + } + //return ReturnValue; +} + +simulated event bool ShouldCooldownAfterFire() +{ + m_VineDevice = TgPawn(Owner).GetDeviceByEqPoint(4); + // End:0x7C + if(m_VineDevice.m_bCooldownWasModified) + { + m_VineDevice.m_bCooldownWasModified = false; + return true; + } + else + { + return false; + } + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_OverTheMoon.uc b/exported/TgGame/Classes/TgDevice_OverTheMoon.uc new file mode 100755 index 00000000..4efb8d9e --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_OverTheMoon.uc @@ -0,0 +1,2 @@ +class TgDevice_OverTheMoon extends TgDevice + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_OwlFlare.uc b/exported/TgGame/Classes/TgDevice_OwlFlare.uc new file mode 100755 index 00000000..752f73b7 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_OwlFlare.uc @@ -0,0 +1,7 @@ +class TgDevice_OwlFlare extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_vProjectileSpawnOffset=(X=20.0000000,Y=12.0000000,Z=-8.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_OwlFlashbang.uc b/exported/TgGame/Classes/TgDevice_OwlFlashbang.uc new file mode 100755 index 00000000..00a1c949 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_OwlFlashbang.uc @@ -0,0 +1,7 @@ +class TgDevice_OwlFlashbang extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_vProjectileSpawnOffset=(X=29.0000000,Y=-3.0000000,Z=-3.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_OwlInhand.uc b/exported/TgGame/Classes/TgDevice_OwlInhand.uc new file mode 100755 index 00000000..c9ea9d3d --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_OwlInhand.uc @@ -0,0 +1,153 @@ +class TgDevice_OwlInhand extends TgDevice + native(ChampOwl) + hidecategories(Navigation); + +var TgDevice m_CachedSwapDevice; +var TgDevice m_CachedScopeDevice; +var bool bUsePerfectAccuracy; + +// Export UTgDevice_OwlInhand::execGetAccuracy(FFrame&, void* const) +native function float GetAccuracy(optional int nMode = -1); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x37 + if(((IsFiring()) || IsReloading()) && Current == m_CachedScopeDevice) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated function ShowReticle(bool bShow) +{ + local TgPlayerController TgPC; + + TgPC = TgPlayerController(Instigator.Controller); + // End:0x6A + if(TgPC != none) + { + TgPC.SetReticleVisibility(bShow, true); + } + //return; +} + +simulated function ApplyScopeEffects() +{ + ClearTimer('RemoveAccuracyDelayed'); + bUsePerfectAccuracy = true; + ShowReticle(true); + //return; +} + +simulated function RemoveScopeEffects() +{ + SetTimer(0.1000000, false, 'RemoveAccuracyDelayed'); + // End:0x53 + if((m_CachedSwapDevice != none) && !m_CachedSwapDevice.IsFiring()) + { + ShowReticle(false); + } + //return; +} + +simulated function RemoveAccuracyDelayed() +{ + bUsePerfectAccuracy = false; + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0x129 + case 11041: + // End:0xF1 + if(Dev.IsA('TgDevice_Scope')) + { + m_CachedScopeDevice = Dev; + Dev.RegisterDelegate(0, ApplyScopeEffects); + Dev.RegisterDelegate(3, RemoveScopeEffects); + } + else + { + // End:0x127 + if(Dev.IsA('TgDevice_WeaponSwap')) + { + m_CachedSwapDevice = Dev; + } + } + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0x119 + case 11041: + // End:0xE9 + if(Dev.IsA('TgDevice_Scope')) + { + m_CachedScopeDevice = none; + Dev.UnregisterDelegate(0, ApplyScopeEffects); + Dev.UnregisterDelegate(3, RemoveScopeEffects); + } + else + { + // End:0x117 + if(Dev.IsA('TgDevice_WeaponSwap')) + { + m_CachedSwapDevice = none; + } + } + return; + // End:0xFFFF + default: + //return; + break; + } +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_ReticuleType=EReticuleType.RETICULE_Precise + m_bPostFireShouldInterruptStealth=false + m_bReloadingShouldInterruptStealth=false + m_bCancelingShouldInterruptStealth=false + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=17.0000000,Y=0.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_fMeshFOV=77.0000000 + m_vProjectileSpawnOffset=(X=30.0000000,Y=9.0000000,Z=-10.0000000) + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_OwlInhand' + m_nLinkedDeviceTypes[0]=11041 + m_AimAssistKeyframesMagnetVert=none + m_AimAssistKeyframesMagnetHoriz=none + m_AimAssistKeyframesFriction=none + m_AimAssistKeyframesTrackingAccHoriz=none + m_AimAssistKeyframesTrackingAngleHoriz=none + m_AimAssistKeyframesTrackingAccVert=none + m_AimAssistKeyframesTrackingAngleVert=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_OwlSidearm.uc b/exported/TgGame/Classes/TgDevice_OwlSidearm.uc new file mode 100755 index 00000000..2f73eb4d --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_OwlSidearm.uc @@ -0,0 +1,87 @@ +class TgDevice_OwlSidearm extends TgDevice + native(ChampOwl) + hidecategories(Navigation); + +var float m_fQueueFireTime; +var const float m_fQueueFireTimeThreshold; + +// Export UTgDevice_OwlSidearm::execEnterTargetingMode(FFrame&, void* const) +native function EnterTargetingMode(); + +// Export UTgDevice_OwlSidearm::execCanFireIfLeftMouseDown(FFrame&, void* const) +native function bool CanFireIfLeftMouseDown(); + +simulated function bool InterceptLeftMousePressed(TgPlayerController TgController) +{ + // End:0x40 + if(IsFiring()) + { + m_fQueueFireTime = WorldInfo.TimeSeconds + m_fQueueFireTimeThreshold; + } + return false; + //return ReturnValue; +} + +simulated function StopFire() +{ + // End:0x2E + if(m_fQueueFireTime > WorldInfo.TimeSeconds) + { + return; + } + super.StopFire(); + //return; +} + +simulated function bool CanEnterCombat() +{ + return true; + //return ReturnValue; +} + +simulated function float GetMinAccuracy() +{ + return 1.0000000 - GetCurrentFire().GetCustomValue1(); + //return ReturnValue; +} + +simulated function float GetRecoilMultiplier() +{ + return GetCurrentFire().GetCustomValue2(); + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function RestartFireLoop(bool bRefire) + { + m_fQueueFireTime = -1.0000000; + super.RestartFireLoop(bRefire); + //return; + } + + simulated function bool ShouldRefire(TgDeviceFire FireMode, const out AimData Aim) + { + local TgObject.EDeviceFailType failType; + + // End:0x72 + if(int(Role) < int(ROLE_Authority)) + { + return (m_fQueueFireTime > WorldInfo.TimeSeconds) && CanDeviceFireNow(CurrentFireMode, Aim, LogDebugInfo(), failType); + } + return super.ShouldRefire(FireMode, Aim); + //return ReturnValue; + } + stop; +} + +defaultproperties +{ + m_fQueueFireTime=-1.0000000 + m_fQueueFireTimeThreshold=0.2500000 + m_bPostFireShouldInterruptStealth=false + m_bReloadingShouldInterruptStealth=false + m_bCancelingShouldInterruptStealth=false + m_AccuracySettings=(bUsesAdvancedAccuracy=true,fMaxAccuracy=1.0000000,fMinAccuracy=0.7500000,fAccuracyLossPerShot=0.0500000,fAccuracyGainPerSec=0.5000000,fAccuracyGainDelay=0.1000000) + m_RecoilSettings=(bUsesRecoil=true,fRecoilReductionPerSec=10.0000000,fRecoilCenterDelay=0.1000000,fRecoilSmoothRate=10.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_OwlStealth.uc b/exported/TgGame/Classes/TgDevice_OwlStealth.uc new file mode 100755 index 00000000..76b6ab16 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_OwlStealth.uc @@ -0,0 +1,193 @@ +class TgDevice_OwlStealth extends TgDevice + native(ChampOwl) + hidecategories(Navigation); + +var TgPawn_Owl m_CachedOwl; +var TgDevice_Roost m_RoostCard; +var bool c_bAlreadyConsumedStealthJuice; + +// Export UTgDevice_OwlStealth::execShouldBlockReload(FFrame&, void* const) +native function bool ShouldBlockReload(TgDevice Dev, bool bIsAutoReload); + +// Export UTgDevice_OwlStealth::execGetStealthJuicePerSec(FFrame&, void* const) +native function float GetStealthJuicePerSec(); + +simulated event DeviceConsumePowerPool(byte FireModeNum) +{ + return; + //return; +} + +simulated event bool CanDeviceStartFiringNow(byte FireModeNum, AimData Aim, bool bDebugRelevant, optional out TgObject.EDeviceFailType failType) +{ + // End:0x80 + if(m_CachedOwl != none) + { + // End:0x3B + if(int(m_CachedOwl.r_eIsStealthed) != int(0)) + { + return false; + } + // End:0x80 + if(m_CachedOwl.m_fOwlStealthJuice < GetCurrentFire().GetCustomValue5()) + { + return false; + } + } + return super.CanDeviceStartFiringNow(FireModeNum, Aim, bDebugRelevant, failType); + //return ReturnValue; +} + +simulated function ConsumeStealthJuiceOnFire() +{ + // End:0x75 + if((m_CachedOwl != none) && !c_bAlreadyConsumedStealthJuice) + { + c_bAlreadyConsumedStealthJuice = true; + m_CachedOwl.ModifyStealthJuice(int(-GetCurrentFire().GetShotPowerCost(10013)), false); + } + //return; +} + +reliable client simulated function ClientConsumeStealthJuiceOnFire(int nAmtModified) +{ + // End:0x54 + if((m_CachedOwl != none) && !c_bAlreadyConsumedStealthJuice) + { + c_bAlreadyConsumedStealthJuice = true; + m_CachedOwl.ClientModifyStealthJuice(nAmtModified); + } + //return; +} + +simulated event bool CanFiringBeCanceledByReactivation() +{ + return super.CanFiringBeCanceledByReactivation() && !IsInState('DeviceBuildup'); + //return ReturnValue; +} + +simulated event bool IsFunctionallyToggleDevice() +{ + return true; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return false; + //return ReturnValue; +} + +simulated function bool ShouldCancelStealth() +{ + return false; + //return ReturnValue; +} + +simulated function bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + super.LinkedDeviceUnequipped(Dev); + // End:0x35 + if(m_RoostCard == Dev) + { + m_RoostCard = none; + } + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + local TgDevice_Roost roost; + + super.LinkedDeviceEquipped(Dev); + roost = TgDevice_Roost(Dev); + // End:0x51 + if(roost != none) + { + m_RoostCard = roost; + } + //return; +} + +simulated event OnLinkDevice(TgPawn TgP) +{ + m_CachedOwl = TgPawn_Owl(TgP); + // End:0x8A + if(m_CachedOwl != none) + { + m_CachedOwl.m_fMaxOwlStealthJuice = GetCurrentFire().GetCustomValue1(); + m_CachedOwl.m_CachedOwlStealth = self; + } + super.OnLinkDevice(TgP); + //return; +} + +simulated event OnUnlinkDevice(TgPawn TgP) +{ + m_CachedOwl = none; + m_CachedOwl.m_CachedOwlStealth = none; + OnLinkDevice(TgP); + //return; +} + +simulated state DeviceBuildup +{ + simulated function BeginState(name PreviousStateName) + { + super.BeginState(PreviousStateName); + c_bAlreadyConsumedStealthJuice = false; + //return; + } + stop; +} + +state DeviceFiring +{ + simulated function StartFiringLogic() + { + // End:0x48 + if((int(Role) == int(ROLE_Authority)) && m_CachedOwl != none) + { + m_CachedOwl.ApplyStealthServer(3); + } + ConsumeStealthJuiceOnFire(); + super.StartFiringLogic(); + //return; + } + + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + ClearTimer('FirePostHitDelay'); + //return; + } + + simulated function StopFiringLogic() + { + // End:0x48 + if((int(Role) == int(ROLE_Authority)) && m_CachedOwl != none) + { + m_CachedOwl.ApplyStealthServer(0); + } + super.StopFiringLogic(); + //return; + } + stop; +} + +defaultproperties +{ + m_bBuildupShouldInterruptStealth=false + m_bPreFireShouldInterruptStealth=false + m_bFireShouldInterruptStealth=false + m_bPostFireShouldInterruptStealth=false + m_bCancelingShouldInterruptStealth=false + m_nLinkedDeviceTypes[0]=15189 + m_nLinkedDeviceTypes[1]=15188 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_PassiveAura.uc b/exported/TgGame/Classes/TgDevice_PassiveAura.uc new file mode 100755 index 00000000..a6b50111 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_PassiveAura.uc @@ -0,0 +1,6 @@ +class TgDevice_PassiveAura extends TgDevice_Aura + native(Devices) + hidecategories(Navigation); + +// Export UTgDevice_PassiveAura::execShouldAuraBeActive(FFrame&, void* const) +native function bool ShouldAuraBeActive(); diff --git a/exported/TgGame/Classes/TgDevice_Pet.uc b/exported/TgGame/Classes/TgDevice_Pet.uc new file mode 100755 index 00000000..e11acea9 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Pet.uc @@ -0,0 +1,3 @@ +class TgDevice_Pet extends TgDevice + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_PipInhand.uc b/exported/TgGame/Classes/TgDevice_PipInhand.uc new file mode 100755 index 00000000..f0b4ebb7 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_PipInhand.uc @@ -0,0 +1,48 @@ +class TgDevice_PipInhand extends TgDevice + hidecategories(Navigation); + +simulated function bool AltFireDetonate() +{ + local TgPawn TgP; + + // End:0x7F + if(super.AltFireDetonate()) + { + TgP = TgPawn(Instigator); + // End:0x7D + if(TgP != none) + { + TgP.ConsumePowerPool(self, 10013, GetCurrentFire().GetCustomValue3()); + } + return true; + } + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=10.0000000,Y=0.0000000,Z=-3.5000000) + m_fWeaponBob=0.0000000 + m_vProjectileSpawnOffset=(X=30.0000000,Y=7.0000000,Z=-15.0000000) + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_PotionLauncher' + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[2]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[2]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[1]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[1]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Pip.DevicePotionLauncher' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.HeavyForceFeedback' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_PoisonBolts.uc b/exported/TgGame/Classes/TgDevice_PoisonBolts.uc new file mode 100755 index 00000000..a79fcc7e --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_PoisonBolts.uc @@ -0,0 +1,31 @@ +class TgDevice_PoisonBolts extends TgDevice + native(ChampSkye) + hidecategories(Navigation); + +var TgDevice_SkyeInhand m_CachedInhand; + +// Export UTgDevice_PoisonBolts::execCanReload(FFrame&, void* const) +native function bool CanReload(optional bool bIsAutoReload = false); + +simulated event bool CanBeCanceled() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_ReticuleType=EReticuleType.RETICULE_Precise + m_bAimThroughReticule=true + m_bUsesBurstFire=true + m_vMeshViewOffset=(X=15.0000000,Y=0.0000000,Z=-4.0000000) + m_fWeaponBob=0.0000000 + m_vProjectileSpawnOffset=(X=10.0000000,Y=8.0000000,Z=-7.0000000) + m_nBurstTotalShots=3 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_PoppyBomb.uc b/exported/TgGame/Classes/TgDevice_PoppyBomb.uc new file mode 100755 index 00000000..be685634 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_PoppyBomb.uc @@ -0,0 +1,283 @@ +class TgDevice_PoppyBomb extends TgDevice + native(ChampBombKing) + hidecategories(Navigation); + +var bool r_bHasActiveProjectile; + +replication +{ + // Pos:0x000 + if(((int(Role) == int(ROLE_Authority)) && bNetDirty) && !bNetInitial) + r_bHasActiveProjectile; +} + +// Export UTgDevice_PoppyBomb::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated function UpdateActiveProjectiles(optional TgProjectile Proj) +{ + local int I; + + m_FiredProjectiles.AddItem(Proj); + I = 0; + J0x22: + + // End:0x102 [Loop If] + if(I < m_FiredProjectiles.Length) + { + // End:0xF4 + if((((m_FiredProjectiles[I] == none) || m_FiredProjectiles[I].m_bHasExploded) || m_FiredProjectiles[I].bDeleteMe) || m_FiredProjectiles[I].m_bIsShutDown) + { + m_FiredProjectiles.Remove(I--, 1); + } + I++; + // [Loop Continue] + goto J0x22; + } + // End:0x13C + if(m_FiredProjectiles.Length > 0) + { + // End:0x139 + if(!r_bHasActiveProjectile) + { + r_bHasActiveProjectile = true; + bNetDirty = true; + } + } + else + { + // End:0x161 + if(r_bHasActiveProjectile) + { + r_bHasActiveProjectile = false; + bNetDirty = true; + } + } + //return; +} + +simulated event bool ShouldCooldownAfterFire() +{ + // End:0x16 + if(int(CurrentFireMode) == int(1)) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool HasActivePoppyBomb() +{ + local TgPawn TgP; + local TgRepInfo_Player PRI; + local int I; + local TgDeployable deployable; + + // End:0x2B + if((m_FiredProjectiles.Length > 0) || IsTimerActive('SpawnQueuedSimulatedProjectile')) + { + return true; + } + TgP = TgPawn(Owner); + // End:0x164 + if(TgP != none) + { + PRI = TgP.GetPRI(); + // End:0x164 + if(PRI != none) + { + I = 0; + J0x99: + + // End:0x164 [Loop If] + if(I < PRI.m_DRIArray.Length) + { + deployable = PRI.m_DRIArray[I].r_DeployableOwner; + // End:0x156 + if(deployable.IsA('TgDeploy_PoppyBomb')) + { + // End:0x156 + if(!deployable.m_bInDestroyedState) + { + return true; + } + } + I++; + // [Loop Continue] + goto J0x99; + } + } + } + return false; + //return ReturnValue; +} + +simulated function DetonatePoppyBomb() +{ + local TgPawn TgP; + local TgRepInfo_Player PRI; + local int I; + local TgDeploy_PoppyBomb PoppyBombDeployable; + + // End:0x1E + if(int(Role) < int(ROLE_Authority)) + { + ServerDetonatePoppyBomb(); + } + I = m_FiredProjectiles.Length - 1; + J0x35: + + // End:0x94 [Loop If] + if(I >= 0) + { + // End:0x86 + if(m_FiredProjectiles[I] != none) + { + m_FiredProjectiles[I].AltFireDetonate(); + } + I--; + // [Loop Continue] + goto J0x35; + } + UpdateActiveProjectiles(); + TgP = TgPawn(Owner); + // End:0x24C + if(TgP != none) + { + PRI = TgP.GetPRI(); + // End:0x24C + if(PRI != none) + { + I = 0; + J0x10D: + + // End:0x24C [Loop If] + if(I < PRI.m_DRIArray.Length) + { + PoppyBombDeployable = TgDeploy_PoppyBomb(PRI.m_DRIArray[I].r_DeployableOwner); + // End:0x23E + if(PoppyBombDeployable != none) + { + // End:0x23E + if(!PoppyBombDeployable.m_bInDestroyedState) + { + PoppyBombDeployable.InstantFireDeployable(); + PoppyBombDeployable.r_bDetonated = true; + PoppyBombDeployable.bNetDirty = true; + PoppyBombDeployable.DestroyIt(); + } + } + I++; + // [Loop Continue] + goto J0x10D; + } + } + } + PlayPoppyDetonateAnim(); + StartCooldown(); + //return; +} + +reliable server function ServerDetonatePoppyBomb() +{ + DetonatePoppyBomb(); + //return; +} + +simulated function HandleDeviceFormStartFire(int nDeviceModeNum, float fRefireTime, const out AimData Aim) +{ + local TgPawn_BombKing BombKing; + local TgWeaponMeshActor_BombKingInhand BKWeaponMeshActor; + + BombKing = TgPawn_BombKing(Owner); + // End:0x8C + if(BombKing != none) + { + BKWeaponMeshActor = TgWeaponMeshActor_BombKingInhand(BombKing.m_WeaponMesh); + // End:0x8C + if(BKWeaponMeshActor != none) + { + BKWeaponMeshActor.m_bPlayPoppyDetonateAnimation = false; + } + } + super.HandleDeviceFormStartFire(nDeviceModeNum, fRefireTime, Aim); + //return; +} + +simulated function PlayPoppyDetonateAnim() +{ + local TgPawn_BombKing BombKing; + local TgWeaponMeshActor_BombKingInhand BKWeaponMeshActor; + local AimData Aim; + + BombKing = TgPawn_BombKing(Owner); + // End:0x8C + if(BombKing != none) + { + BKWeaponMeshActor = TgWeaponMeshActor_BombKingInhand(BombKing.m_WeaponMesh); + // End:0x8C + if(BKWeaponMeshActor != none) + { + BKWeaponMeshActor.m_bPlayPoppyDetonateAnimation = true; + } + } + GetCachedAim(Aim); + HandleDeviceFormStartFire(int(CurrentFireMode), GetRefireTime(), Aim); + //return; +} + +simulated event bool Use() +{ + // End:0x5C + if(((HasActivePoppyBomb()) && !IsTimerActive('FirePostHitDelay')) && !IsTimerActive('FirePreHitDelay')) + { + PlayPoppyDetonateAnim(); + DetonatePoppyBomb(); + return true; + } + else + { + return super.Use(); + } + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function FirePostHitDelay() + { + local TgDeviceFire deviceFire; + local TgPawn TgP; + local TgPlayerController TgPC; + + super.FirePostHitDelay(); + // End:0xDB + if(HasActivePoppyBomb()) + { + deviceFire = GetCurrentFire(); + // End:0xDB + if(deviceFire != none) + { + TgP = TgPawn(Instigator); + // End:0xDB + if(TgP != none) + { + TgPC = TgPlayerController(TgP.Controller); + // End:0xDB + if(TgPC != none) + { + // End:0xDB + if(TgPC.bPressingMovementButton) + { + PlayPoppyDetonateAnim(); + DetonatePoppyBomb(); + } + } + } + } + } + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_PortalMod.uc b/exported/TgGame/Classes/TgDevice_PortalMod.uc new file mode 100755 index 00000000..0e64a17e --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_PortalMod.uc @@ -0,0 +1,6 @@ +class TgDevice_PortalMod extends TgDevice + native(Devices) + hidecategories(Navigation); + +// Export UTgDevice_PortalMod::execApplyEffect(FFrame&, void* const) +native function ApplyEffect(); diff --git a/exported/TgGame/Classes/TgDevice_Pounce.uc b/exported/TgGame/Classes/TgDevice_Pounce.uc new file mode 100755 index 00000000..2cb56a8e --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Pounce.uc @@ -0,0 +1,185 @@ +class TgDevice_Pounce extends TgDevice_Charge + native(ChampBlades) + hidecategories(Navigation); + +var TgPawn_Blades m_CachedBlades; +var bool m_bHasBounced; + +// Export UTgDevice_Pounce::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +simulated function bool HasCachedBlades() +{ + // End:0x38 + if(m_CachedBlades == none) + { + m_CachedBlades = TgPawn_Blades(Instigator); + return m_CachedBlades != none; + } + return true; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x2A + if(Current.m_nDeviceType == 11077) + { + return false; + } + return (IsFiring()) || IsPostHitLockOutActive(); + //return ReturnValue; +} + +simulated function bool IsPostHitLockOutActive() +{ + return IsTimerActive('PostHitLockOut'); + //return ReturnValue; +} + +simulated function PostHitLockOut() +{ + //return; +} + +reliable server function ServerBounceOff(Actor Other) +{ + // End:0x0F + if(m_bHasBounced) + { + return; + } + // End:0xC0 + if(ServerValidateChargeHit(Other)) + { + // End:0xAC + if(HasCachedBlades()) + { + ApplyTouchHit(m_CachedBlades, Other.Location, Normal(m_CachedBlades.Location - Other.Location), Other); + } + BounceOff(); + InterruptFiring(); + } + //return; +} + +reliable client simulated function ClientBounceOff() +{ + // End:0x19 + if(!m_bHasBounced) + { + BounceOff(); + } + //return; +} + +simulated function BounceOff() +{ + local Vector NewVel; + local Rotator adjustedDir; + local float Angle; + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x20D + if((HasCachedBlades()) && FireMode != none) + { + m_bHasBounced = true; + SetTimer(FireMode.GetCustomValue5(), false, 'PostHitLockOut'); + // End:0xA0 + if(int(m_DeviceEmoteAt) == int(2)) + { + m_CachedBlades.PlayDeviceEmoteAll(self); + } + adjustedDir = Rotator(-Vector(m_rLastChargeDirection)); + Angle = (90.0000000 * float(adjustedDir.Pitch)) / float(16384); + Angle = float(Clamp(int(Angle + FireMode.GetCustomValue2()), -90, 90)); + adjustedDir.Pitch = int((Angle / 90.0000000) * 16384.0000000); + NewVel = Vector(adjustedDir); + NewVel *= FireMode.GetCustomValue1(); + m_CachedBlades.QueueBounceCustom(NewVel, FireMode.GetCustomValue3(), FireMode.GetCustomValue4()); + } + //return; +} + +simulated state DeviceFiring +{ + simulated function OnStoppedChargeOnHit(Actor Other) + { + super.OnStoppedChargeOnHit(Other); + // End:0x58 + if((int(Role) < int(ROLE_Authority)) && !m_bHasBounced) + { + ServerBounceOff(Other); + BounceOff(); + } + else + { + // End:0x80 + if(int(Role) == int(ROLE_Authority)) + { + BounceOff(); + ClientBounceOff(); + } + } + //return; + } + + simulated event StartCharge() + { + // End:0x92 + if(HasCachedBlades()) + { + m_CachedBlades.SetGemEmissiveAnim(2); + m_CachedBlades.FlashGeneric1(r_nDeviceInstanceId, int(CurrentFireMode), true); + // End:0x92 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic1(); + } + } + SetTimer((GetChargeTime()) * 0.8000000, false, 'PreStopCharge'); + m_bHasBounced = false; + super.StartCharge(); + //return; + } + + simulated function PreStopCharge() + { + // End:0x71 + if(HasCachedBlades()) + { + m_CachedBlades.FlashGeneric2(r_nDeviceInstanceId, int(CurrentFireMode), true); + // End:0x71 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic2(); + } + } + //return; + } + + simulated event EndCharge() + { + // End:0x35 + if(IsTimerActive('PreStopCharge')) + { + ClearTimer('PreStopCharge'); + PreStopCharge(); + } + super.EndCharge(); + //return; + } + stop; +} + +defaultproperties +{ + m_bStopOnHitType=ChargeStopOnHitType.CSHT_GodOnly + m_ChargeTimingType=ChargeFiringType.CFT_PreFire + m_bUsePhysFlying=true + m_bIgnoreHumanoids=false + m_vHitProxySizeOffset=(X=0.0000000,Y=12.0000000,Z=0.0000000) + m_DeviceEmoteAt=DeviceEmoteAt.DEA_Custom + m_bForce3PViewWhileFiring=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Presence.uc b/exported/TgGame/Classes/TgDevice_Presence.uc new file mode 100755 index 00000000..c15a1057 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Presence.uc @@ -0,0 +1,2 @@ +class TgDevice_Presence extends TgDevice + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_PrincessF.uc b/exported/TgGame/Classes/TgDevice_PrincessF.uc new file mode 100755 index 00000000..ba350e8e --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_PrincessF.uc @@ -0,0 +1,125 @@ +class TgDevice_PrincessF extends TgDevice_Charge + hidecategories(Navigation); + +var TgDevice m_cachedSupportDevice; +var(dash) int m_nEyeheightAdjustmentWhileSliding; +var float m_fEyeHeightSmoothFactor; + +simulated function bool HasCachedSupportDevice() +{ + local TgPawn TgP; + + // End:0x65 + if(m_cachedSupportDevice == none) + { + TgP = TgPawn(Instigator); + // End:0x65 + if(TgP != none) + { + m_cachedSupportDevice = TgP.GetDeviceByEqPoint(18); + } + } + return m_cachedSupportDevice != none; + //return ReturnValue; +} + +simulated function Rotator GetChargeDirection() +{ + // End:0x96 + if((Instigator.Acceleration.X == float(0)) && Instigator.Acceleration.Y == float(0)) + { + return Instigator.Rotation; + } + else + { + return Rotator(Normal2D(Instigator.Acceleration)); + } + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated event StartCharge() + { + local TgPawn_Character TgPC; + local TgDeviceFire FireMode; + + super.StartCharge(); + // End:0x125 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPawn_Character(Instigator); + // End:0x125 + if(TgPC != none) + { + // End:0x9B + if(m_nEyeheightAdjustmentWhileSliding != 0) + { + TgPC.BaseEyeHeight += float(m_nEyeheightAdjustmentWhileSliding); + } + else + { + FireMode = GetCurrentFire(); + // End:0xFD + if(FireMode != none) + { + TgPC.BaseEyeHeight += FireMode.GetCustomValue1(); + } + } + TgPC.m_fEyeHeightSmoothFactor = m_fEyeHeightSmoothFactor; + } + } + //return; + } + + simulated event EndCharge() + { + local TgPawn_Character TgPC; + local TgDeviceFire FireMode; + + super.EndCharge(); + // End:0x13A + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPawn_Character(Instigator); + // End:0x13A + if(TgPC != none) + { + // End:0x9B + if(m_nEyeheightAdjustmentWhileSliding != 0) + { + TgPC.BaseEyeHeight -= float(m_nEyeheightAdjustmentWhileSliding); + } + else + { + FireMode = GetCurrentFire(); + // End:0xFD + if(FireMode != none) + { + TgPC.BaseEyeHeight -= FireMode.GetCustomValue1(); + } + } + TgPC.m_fEyeHeightSmoothFactor = Class'TgGame.TgPawn'.default.m_fEyeHeightSmoothFactor; + } + } + //return; + } + + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + // End:0x36 + if(HasCachedSupportDevice()) + { + m_cachedSupportDevice.StartFire(); + } + //return; + } + stop; +} + +defaultproperties +{ + m_fEyeHeightSmoothFactor=4.0000000 + m_bCanLeftClickCancel=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_PrincessFSupport.uc b/exported/TgGame/Classes/TgDevice_PrincessFSupport.uc new file mode 100755 index 00000000..6d2b56b7 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_PrincessFSupport.uc @@ -0,0 +1,84 @@ +class TgDevice_PrincessFSupport extends TgDevice + native(ChampPrincess) + hidecategories(Navigation); + +var TgPawn_Princess m_CachedLian; + +// Export UTgDevice_PrincessFSupport::execCanFiringBeLocked(FFrame&, void* const) +native function bool CanFiringBeLocked(); + +// Export UTgDevice_PrincessFSupport::execUsesCachedAim(FFrame&, void* const) +native function bool UsesCachedAim(); + +// Export UTgDevice_PrincessFSupport::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +simulated function bool HasCachedLian() +{ + // End:0x2B + if(m_CachedLian == none) + { + m_CachedLian = TgPawn_Princess(Instigator); + } + return m_CachedLian != none; + //return ReturnValue; +} + +simulated function ImpactInfo CalcWeaponFire(AimData Aim, optional out array ImpactList) +{ + local int I, nNumTargetsFound; + local ImpactInfo ii, toReturn; + local TgCombatActor TgCA; + + toReturn = super.CalcWeaponFire(Aim, ImpactList); + // End:0x17F + if(HasCachedLian()) + { + I = 0; + J0x3F: + + // End:0x87 [Loop If] + if(I < 15) + { + m_CachedLian.r_GraceTargets[I] = none; + I++; + // [Loop Continue] + goto J0x3F; + } + nNumTargetsFound = 0; + I = 0; + J0x9D: + + // End:0x17F [Loop If] + if(I < ImpactList.Length) + { + ii = ImpactList[I]; + TgCA = TgCombatActor(ii.HitActor); + // End:0x171 + if(NotEqual_InterfaceInterface(TgCA, TgCombatActor(none))) + { + // End:0x134 + if(nNumTargetsFound >= 15) + { + // [Explicit Break] + goto J0x17F; + } + m_CachedLian.r_GraceTargets[nNumTargetsFound] = TgCA; + nNumTargetsFound++; + } + I++; + // [Loop Continue] + goto J0x9D; + } + } + J0x17F: + + return toReturn; + //return ReturnValue; +} + +defaultproperties +{ + m_bDisableLagCompensation=true + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Princess.DeviceInhand' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_PrincessInhand.uc b/exported/TgGame/Classes/TgDevice_PrincessInhand.uc new file mode 100755 index 00000000..3e7daa02 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_PrincessInhand.uc @@ -0,0 +1,12 @@ +class TgDevice_PrincessInhand extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAltFireEnabled=true + m_fMeshFOV=77.0000000 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_LianInhand' + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Princess.DeviceInhand' + m_RecoilSettings=(bUsesRecoil=true,fRecoilReductionPerSec=8.0000000,fRecoilCenterDelay=0.6000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_PrincessRMB.uc b/exported/TgGame/Classes/TgDevice_PrincessRMB.uc new file mode 100755 index 00000000..fefa0bac --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_PrincessRMB.uc @@ -0,0 +1,18 @@ +class TgDevice_PrincessRMB extends TgDevice + hidecategories(Navigation); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x0F + if(IsFiring()) + { + return true; + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} + +defaultproperties +{ + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Princess.DeviceInhand' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Projector.uc b/exported/TgGame/Classes/TgDevice_Projector.uc new file mode 100755 index 00000000..c85f0ed8 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Projector.uc @@ -0,0 +1,9 @@ +class TgDevice_Projector extends TgDevice_EmitterMod + native(Devices) + hidecategories(Navigation); + +// Export UTgDevice_Projector::execApplyTouchEffect(FFrame&, void* const) +native function ApplyTouchEffect(Actor Target, TgDevice_Emitter Emitter); + +// Export UTgDevice_Projector::execRemoveTouchEffect(FFrame&, void* const) +native function RemoveTouchEffect(Actor Target, TgDevice_Emitter Emitter); diff --git a/exported/TgGame/Classes/TgDevice_Protection.uc b/exported/TgGame/Classes/TgDevice_Protection.uc new file mode 100755 index 00000000..a20f5fe3 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Protection.uc @@ -0,0 +1,36 @@ +class TgDevice_Protection extends TgDevice + native(ChampGauntlet) + hidecategories(Navigation); + +var TgPawn_Gauntlet m_Gauntlet; + +// Export UTgDevice_Protection::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated event DeliverQueuedPendingHits() +{ + // End:0x1C + if(PendingImpactList.Length != 0) + { + StartCooldown(); + } + super.DeliverQueuedPendingHits(); + //return; +} + +simulated event bool ShouldCooldownAfterFire() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x5F + if((Current != none) && Current.m_bHandDevice || Current.r_nDeviceId == 15794) + { + return false; + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_Prowl.uc b/exported/TgGame/Classes/TgDevice_Prowl.uc new file mode 100755 index 00000000..33505eb5 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Prowl.uc @@ -0,0 +1,171 @@ +class TgDevice_Prowl extends TgDevice_Stim + native(ChampBlades) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +//var delegate __InterruptFiringDelegate__Delegate; + +// Export UTgDevice_Prowl::execShouldInterruptLift(FFrame&, void* const) +native function bool ShouldInterruptLift(); + +simulated event bool CanBeInterrupted() +{ + return true; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + local float firePostHitTime; + + // End:0x4A + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0x4A + if(firePostHitTime > 0.5000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated event bool CanFiringBeCanceledByReactivation() +{ + return true; + //return ReturnValue; +} + +// Export UTgDevice_Prowl::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +simulated delegate InterruptFiringDelegate() +{ + // End:0x1E + if(int(Role) == int(ROLE_AutonomousProxy)) + { + ClientInterrupt(); + } + InterruptFiring(); + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super(TgDevice).LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x54 + case 16218: + // End:0x5C + case 16229: + // End:0x64 + case 16235: + // End:0x6C + case 16241: + // End:0xA9 + case 16306: + Dev.RegisterDelegate(2, InterruptFiringDelegate); + // End:0xAC + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super(TgDevice).LinkedDeviceUnequipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x54 + case 16218: + // End:0x5C + case 16229: + // End:0x64 + case 16235: + // End:0x6C + case 16241: + // End:0xA9 + case 16306: + Dev.UnregisterDelegate(2, InterruptFiringDelegate); + // End:0xAC + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgDeviceFire FireMode; + local TgPawn_Blades Blades; + + Blades = TgPawn_Blades(Instigator); + // End:0x225 + if(Blades != none) + { + FireMode = GetCurrentFire(); + // End:0x225 + if(FireMode != none) + { + Blades.r_bProwlActive = true; + Blades.r_fProwlAccelMultiplier = FireMode.GetCustomValue1(); + Blades.r_fProwlGroundSpeedMultiplier = FireMode.GetCustomValue2(); + Blades.r_fProwlJumpHeightMultiplier = FireMode.GetCustomValue3(); + Blades.r_fProwlAirControlMultiplier = FireMode.GetCustomValue4(); + Blades.r_fProwlFadeOutDuration = FireMode.GetCustomValue5(); + Blades.m_fProwlFadeOutTimer = FireMode.GetCustomValue5(); + Blades.bNetDirty = true; + Blades.SetGemEmissiveAnim(3); + } + } + super.StartFiringLogic(); + //return; + } + + simulated function EndState(name NextStateName) + { + local TgPawn_Blades Blades; + + Blades = TgPawn_Blades(Instigator); + // End:0x8E + if(Blades != none) + { + Blades.r_bProwlActive = false; + Blades.bNetDirty = true; + Blades.SetGemEmissiveEndAnim(3); + } + super.EndState(NextStateName); + //return; + } + stop; +} + +defaultproperties +{ + m_nLinkedDeviceIDs[0]=16218 + m_nLinkedDeviceIDs[1]=16229 + m_nLinkedDeviceIDs[2]=16235 + m_nLinkedDeviceIDs[3]=16241 + m_nLinkedDeviceIDs[4]=16306 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Pursuit.uc b/exported/TgGame/Classes/TgDevice_Pursuit.uc new file mode 100755 index 00000000..0097f23c --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Pursuit.uc @@ -0,0 +1,5 @@ +class TgDevice_Pursuit extends TgDevice_DecoyMod + native(Devices) + hidecategories(Navigation); + +var float m_fShatterBaseSpeed; diff --git a/exported/TgGame/Classes/TgDevice_QuadWield.uc b/exported/TgGame/Classes/TgDevice_QuadWield.uc new file mode 100755 index 00000000..7b432485 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_QuadWield.uc @@ -0,0 +1,49 @@ +class TgDevice_QuadWield extends TgDevice_DualWield + hidecategories(Navigation); + +var() Vector m_vProjectileSpawnOffset3; +var() Vector m_vProjectileSpawnOffset4; +var int m_nWeaponFireNumber; + +simulated event Vector GetProjectileSpawnOffset() +{ + switch(m_nWeaponFireNumber) + { + // End:0x21 + case 1: + return m_vProjectileSpawnOffset; + // End:0x30 + case 2: + return m_vProjectileSpawnOffset2; + // End:0x3F + case 3: + return m_vProjectileSpawnOffset3; + // End:0x4E + case 4: + return m_vProjectileSpawnOffset4; + // End:0xFFFF + default: + return super.GetProjectileSpawnOffset(); + break; + } + //return ReturnValue; +} + +simulated function FireAmmunition() +{ + super.FireAmmunition(); + m_nWeaponFireNumber++; + // End:0x30 + if(m_nWeaponFireNumber > 4) + { + m_nWeaponFireNumber = 1; + } + //return; +} + +defaultproperties +{ + m_vProjectileSpawnOffset3=(X=30.0000000,Y=20.0000000,Z=10.0000000) + m_vProjectileSpawnOffset4=(X=30.0000000,Y=-20.0000000,Z=-10.0000000) + m_vProjectileSpawnOffset2=(X=30.0000000,Y=-20.0000000,Z=10.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Rattle.uc b/exported/TgGame/Classes/TgDevice_Rattle.uc new file mode 100755 index 00000000..3a909f27 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Rattle.uc @@ -0,0 +1,6 @@ +class TgDevice_Rattle extends TgDevice_ShieldMod + native(Devices) + hidecategories(Navigation); + +// Export UTgDevice_Rattle::execApplyTouchEffect(FFrame&, void* const) +native function ApplyTouchEffect(Actor Target); diff --git a/exported/TgGame/Classes/TgDevice_ReachOut.uc b/exported/TgGame/Classes/TgDevice_ReachOut.uc new file mode 100755 index 00000000..3b6b72d8 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ReachOut.uc @@ -0,0 +1,11 @@ +class TgDevice_ReachOut extends TgDevice_LongReach + native(ChampFernando) + hidecategories(Navigation); + +// Export UTgDevice_ReachOut::execIsNuggetValid(FFrame&, void* const) +native function bool IsNuggetValid(Actor Target); + +defaultproperties +{ + m_bAutoActivateAura=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Recharge.uc b/exported/TgGame/Classes/TgDevice_Recharge.uc new file mode 100755 index 00000000..fdf379f1 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Recharge.uc @@ -0,0 +1,151 @@ +class TgDevice_Recharge extends TgDevice + native(ChampGauntlet) + hidecategories(Navigation); + +var TgPawn_Gauntlet m_CachedGauntletPawn; + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x3B + if((Current != none) && Current.r_nDeviceId == 15793) + { + return false; + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} + +simulated event bool IsFunctionallyToggleDevice() +{ + return true; + //return ReturnValue; +} + +simulated function bool ShouldStopActionOnOffhandSlotReleased() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return super.CanBeCanceled() && !IsTimerActive('CancelSafetyTimer'); + //return ReturnValue; +} + +simulated function CancelSafetyTimer() +{ + //return; +} + +function StartCooldownTimer() +{ + SetTimer(GetCurrentFire().GetPersistTime(), false, 'CooldownTimer'); + ClientStartCooldownTimer(); + //return; +} + +reliable client simulated function ClientStartCooldownTimer() +{ + SetTimer(GetCurrentFire().GetPersistTime(), false, 'CooldownTimer'); + //return; +} + +simulated function CooldownTimer() +{ + // End:0x1E + if(int(Role) == int(ROLE_Authority)) + { + InterruptFiring(); + } + //return; +} + +simulated function ImpactInfo CalcWeaponFire(AimData Aim, optional out array ImpactList) +{ + local ImpactInfo Impact; + + Impact = super.CalcWeaponFire(Aim, ImpactList); + UpdateHitTargetInfo(Impact.HitActor, Impact.HitLocation); + return Impact; + //return ReturnValue; +} + +function OnInstantShotVerified(ImpactInfo VerifiedPrimaryImpact) +{ + UpdateHitTargetInfo(VerifiedPrimaryImpact.HitActor, VerifiedPrimaryImpact.HitLocation); + //return; +} + +simulated function UpdateHitTargetInfo(Actor HitActor, Vector HitLocation) +{ + local TgDeployable deployTarget; + + // End:0x1C1 + if(HasCachedGauntlet()) + { + // End:0x61 + if(m_CachedGauntletPawn.r_RechargeTarget != HitActor) + { + m_CachedGauntletPawn.r_RechargeTarget = HitActor; + } + // End:0x1A0 + if(m_CachedGauntletPawn.r_RechargeTarget != none) + { + deployTarget = TgDeployable(HitActor); + // End:0x14E + if((deployTarget != none) && int(deployTarget.m_CollisionSettings.mCollisionMode) != int(0)) + { + m_CachedGauntletPawn.r_RechargeHitOffset = HitLocation - m_CachedGauntletPawn.r_RechargeTarget.Location; + } + else + { + // End:0x1A0 + if(!IsZero(m_CachedGauntletPawn.r_RechargeHitOffset)) + { + m_CachedGauntletPawn.r_RechargeHitOffset = vect(0.0000000, 0.0000000, 0.0000000); + } + } + } + m_CachedGauntletPawn.bNetDirty = true; + } + //return; +} + +simulated function bool HasCachedGauntlet() +{ + // End:0x2B + if(m_CachedGauntletPawn == none) + { + m_CachedGauntletPawn = TgPawn_Gauntlet(Instigator); + } + return m_CachedGauntletPawn != none; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + // End:0x46 + if((Instigator != none) && Instigator.IsLocallyControlled()) + { + SetTimer(0.5000000, false, 'CancelSafetyTimer'); + } + // End:0x7F + if((int(Role) == int(ROLE_Authority)) && !IsTimerActive('CooldownTimer')) + { + StartCooldownTimer(); + } + super.StartFiringLogic(); + //return; + } + + simulated function StopFiringLogic() + { + ClearTimer('CooldownTimer'); + super.StopFiringLogic(); + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_Recovery.uc b/exported/TgGame/Classes/TgDevice_Recovery.uc new file mode 100755 index 00000000..20dc4d81 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Recovery.uc @@ -0,0 +1,18 @@ +class TgDevice_Recovery extends TgDevice_Stim + hidecategories(Navigation); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x31 + if(super.ShouldLockFiring(Current)) + { + // End:0x2F + if(IsTimerActive('FirePostHitDelay')) + { + return false; + } + return true; + } + return false; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_RendSoul.uc b/exported/TgGame/Classes/TgDevice_RendSoul.uc new file mode 100755 index 00000000..c4905e6f --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_RendSoul.uc @@ -0,0 +1,36 @@ +class TgDevice_RendSoul extends TgDevice + native(ChampOracle) + hidecategories(Navigation); + +var bool m_bApplyCooldown; + +// Export UTgDevice_RendSoul::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated event bool ShouldCooldownAfterFire() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + super.StartFiringLogic(); + m_bApplyCooldown = false; + //return; + } + + simulated function StopFiringLogic() + { + super.StopFiringLogic(); + // End:0x39 + if(m_bApplyCooldown && int(Role) == int(ROLE_Authority)) + { + StartCooldown(); + } + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_RepulsorField.uc b/exported/TgGame/Classes/TgDevice_RepulsorField.uc new file mode 100755 index 00000000..83414b8c --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_RepulsorField.uc @@ -0,0 +1,24 @@ +class TgDevice_RepulsorField extends TgDevice_ActiveAura + native(ChampRuckus) + hidecategories(Navigation); + +var float r_fAtTheReadyRadius; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_fAtTheReadyRadius; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return false; + //return ReturnValue; +} + +simulated function bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_Requip.uc b/exported/TgGame/Classes/TgDevice_Requip.uc new file mode 100755 index 00000000..b5afa899 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Requip.uc @@ -0,0 +1,21 @@ +class TgDevice_Requip extends TgDevice + native(ChampLex) + hidecategories(Navigation); + +var TgDevice m_InhandWeapon; + +simulated event bool ShouldCooldownAfterFire() +{ + m_InhandWeapon = TgPawn(Owner).GetDeviceByEqPoint(1); + // End:0x7B + if(m_InhandWeapon.m_bAmmoWasGiven) + { + m_InhandWeapon.m_bAmmoWasGiven = false; + return true; + } + else + { + return false; + } + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_RespawnBeacon.uc b/exported/TgGame/Classes/TgDevice_RespawnBeacon.uc new file mode 100755 index 00000000..6a087c95 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_RespawnBeacon.uc @@ -0,0 +1,164 @@ +class TgDevice_RespawnBeacon extends TgDevice + hidecategories(Navigation); + +var TgRespawnBeaconExit s_BeaconExit; +var repnotify bool r_bHasBeacon; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bHasBeacon; +} + +simulated event ReplicatedEvent(name VarName) +{ + local TgPawn TgP; + local WeaponMeshSwapStrategy SwapStrategy; + + // End:0x9A + if(VarName == 'r_bHasBeacon') + { + TgP = TgPawn(Instigator); + // End:0x9A + if(TgP != none) + { + TgP.SetTargetingDevice(((r_bHasBeacon) ? self : TgP.GetDeviceByEqPoint(1)), SwapStrategy); + } + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x0F + if(IsFiring()) + { + return true; + } + // End:0x59 + if(r_bHasBeacon) + { + // End:0x57 + if((Current != none) && Current.m_nDeviceType == 11077) + { + return false; + } + return true; + } + return false; + //return ReturnValue; +} + +simulated function bool InterceptLeftMousePressed(TgPlayerController TgController) +{ + super.InterceptLeftMousePressed(TgController); + // End:0x52 + if(r_bHasBeacon && TgController != none) + { + TgController.OnRespawnBeaconButtonPressed(); + return true; + } + return false; + //return ReturnValue; +} + +simulated function bool InterceptLeftMouseReleased(TgPlayerController TgController) +{ + super.InterceptLeftMouseReleased(TgController); + // End:0x52 + if(r_bHasBeacon && TgController != none) + { + TgController.OnRespawnBeaconButtonReleased(); + return true; + } + return false; + //return ReturnValue; +} + +simulated function bool ShouldInterruptMount() +{ + return r_bHasBeacon; + //return ReturnValue; +} + +simulated function FireAmmunition() +{ + local TgPawn TgP; + + super.FireAmmunition(); + // End:0xD8 + if(int(Role) == int(ROLE_Authority)) + { + // End:0xCD + if(!r_bHasBeacon) + { + TgP = TgPawn(Instigator); + // End:0x5A + if(TgP == none) + { + return; + } + s_BeaconExit = TgP.GetTouchingRespawnBeacon(); + // End:0x94 + if(s_BeaconExit == none) + { + return; + } + // End:0xCA + if(s_BeaconExit.Pickup(TgP)) + { + HandlePickUpAndDrop(true); + } + } + else + { + HandlePickUpAndDrop(false); + } + } + //return; +} + +function HandlePickUpAndDrop(bool bPickedUp) +{ + local TgPawn TgP; + + r_OverrideUsesTargetingModeAsFalse = !bPickedUp; + r_bHasBeacon = bPickedUp; + SetFireMode(((bPickedUp) ? 1 : 0)); + ((bPickedUp) ? EnterTargetingMode() : ExitTargetingMode()); + TgP = TgPawn(Instigator); + // End:0xBF + if(TgP != none) + { + TgP.UpdateHasRespawnBeacon(r_bHasBeacon); + } + //return; +} + +simulated function bool ShouldSwitchBackToBasicAttackTargeting(TgClientSettings.ECastMode CastMode) +{ + return !r_bHasBeacon; + //return ReturnValue; +} + +simulated function DeviceShutDown(optional bool bDeactiveMode, optional bool bResetCooldowns) +{ + super.DeviceShutDown(bDeactiveMode, bResetCooldowns); + // End:0x8A + if(((int(Role) == int(ROLE_Authority)) && r_bHasBeacon) && s_BeaconExit != none) + { + s_BeaconExit.DestroyIt(); + s_BeaconExit = none; + HandlePickUpAndDrop(false); + } + //return; +} + +defaultproperties +{ + r_OverrideUsesTargetingModeAsFalse=true + m_bDisableLagCompensation=true + m_fBottomlessPitCheck=48.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Restock.uc b/exported/TgGame/Classes/TgDevice_Restock.uc new file mode 100755 index 00000000..7cc5401c --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Restock.uc @@ -0,0 +1,21 @@ +class TgDevice_Restock extends TgDevice + native(ChampLex) + hidecategories(Navigation); + +var TgDevice m_InhandWeapon; + +simulated event bool ShouldCooldownAfterFire() +{ + m_InhandWeapon = TgPawn(Owner).GetDeviceByEqPoint(1); + // End:0x7B + if(m_InhandWeapon.m_bAmmoWasGiven) + { + m_InhandWeapon.m_bAmmoWasGiven = false; + return true; + } + else + { + return false; + } + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_RestoreSoul.uc b/exported/TgGame/Classes/TgDevice_RestoreSoul.uc new file mode 100755 index 00000000..e767bb1c --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_RestoreSoul.uc @@ -0,0 +1,285 @@ +class TgDevice_RestoreSoul extends TgDevice + native(ChampOracle) + hidecategories(Navigation); + +var TgPawn_Oracle m_CachedOraclePawn; +var ImpactInfo m_CachedImpact; +var bool m_bApplyCooldown; + +// Export UTgDevice_RestoreSoul::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated event bool CanBeCanceled() +{ + local float firePostHitTime; + + // End:0x4A + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0x4A + if(firePostHitTime > 0.5000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + // End:0x0F + if(m_bPreventInterrupt) + { + return false; + } + // End:0x1E + if(IsFiring()) + { + return true; + } + return super.CanBeInterrupted(); + //return ReturnValue; +} + +simulated function bool HasCachedOracle() +{ + // End:0x2B + if(m_CachedOraclePawn == none) + { + m_CachedOraclePawn = TgPawn_Oracle(Instigator); + } + return m_CachedOraclePawn != none; + //return ReturnValue; +} + +simulated event DeliverQueuedPendingHits() +{ + // End:0x1A + if(PendingImpactList.Length == 0) + { + InterruptFiring(); + } + super.DeliverQueuedPendingHits(); + //return; +} + +simulated event bool ShouldCooldownAfterFire() +{ + return false; + //return ReturnValue; +} + +simulated event DeliverHit(ImpactInfo Impact) +{ + local TgDeviceFire_RestoreSoul FireMode; + + FireMode = TgDeviceFire_RestoreSoul(GetCurrentFire()); + m_CachedImpact = Impact; + // End:0x93 + if((m_CachedImpact.HitActor != none) && FireMode != none) + { + SetTimer(FireMode.GetCustomValue2(), false, 'DelayedDeliverHit'); + } + else + { + InterruptFiring(); + } + //return; +} + +simulated function DelayedDeliverHit() +{ + local TgDeviceFire_RestoreSoul FireMode; + local TgDevice talentDevice; + local TgDeviceFire talentFire; + local TgPawn TargetPawn; + + FireMode = TgDeviceFire_RestoreSoul(GetCurrentFire()); + DeliverHit(m_CachedImpact); + TargetPawn = TgPawn(m_CachedImpact.HitActor); + // End:0x288 + if(((((FireMode != none) && TargetPawn != none) && TargetPawn.IsAliveAndWell()) && HasCachedOracle()) && !FireMode.CheckTeamPassThrough(TargetPawn, m_CachedImpact.RayDir)) + { + m_bApplyCooldown = true; + FireMode.ApplyHitSpecial(m_CachedImpact.HitActor, m_CachedImpact); + m_CachedOraclePawn.r_RestoreSoulTarget = m_CachedImpact.HitActor; + m_CachedOraclePawn.bNetDirty = true; + // End:0x285 + if(FireMode.IsAbyssalFuryActive()) + { + talentDevice = m_CachedOraclePawn.GetDeviceByEqPoint(26); + // End:0x285 + if(talentDevice != none) + { + talentFire = talentDevice.GetCurrentFire(); + // End:0x285 + if(talentFire != none) + { + talentFire.ApplyHitSpecial(m_CachedImpact.HitActor, m_CachedImpact); + } + } + } + } + else + { + InterruptFiring(); + } + //return; +} + +simulated function ImpactInfo CalcWeaponFire(AimData Aim, optional out array ImpactList) +{ + local ImpactInfo Impact; + + Impact = super.CalcWeaponFire(Aim, ImpactList); + UpdateHitTargetInfo(Impact.HitActor, Impact.HitLocation); + return Impact; + //return ReturnValue; +} + +function OnInstantShotVerified(ImpactInfo VerifiedPrimaryImpact) +{ + UpdateHitTargetInfo(VerifiedPrimaryImpact.HitActor, VerifiedPrimaryImpact.HitLocation); + //return; +} + +function OnInstantShotRejected(ImpactToValidate RejectedPrimaryImpact) +{ + UpdateHitTargetInfo(none, RejectedPrimaryImpact.Impact.HitLocation); + m_bApplyCooldown = false; + //return; +} + +simulated function UpdateHitTargetInfo(Actor HitActor, Vector HitLocation) +{ + // End:0xF8 + if(HasCachedOracle()) + { + // End:0x61 + if(m_CachedOraclePawn.r_RestoreSoulTarget != HitActor) + { + m_CachedOraclePawn.r_RestoreSoulTarget = HitActor; + } + // End:0xD7 + if(m_CachedOraclePawn.r_RestoreSoulTarget != none) + { + // End:0xD7 + if(!IsZero(m_CachedOraclePawn.r_RestoreSoulHitOffset)) + { + m_CachedOraclePawn.r_RestoreSoulHitOffset = vect(0.0000000, 0.0000000, 0.0000000); + } + } + m_CachedOraclePawn.bNetDirty = true; + } + //return; +} + +simulated state DeviceFiring +{ + simulated function Tick(float DeltaTime) + { + local TgPawn Pawn; + + super(Actor).Tick(DeltaTime); + // End:0x90 + if(HasCachedOracle()) + { + Pawn = TgPawn(m_CachedOraclePawn.r_RestoreSoulTarget); + // End:0x90 + if((Pawn == none) || !Pawn.IsAliveAndWell()) + { + InterruptFiring(); + } + } + //return; + } + + simulated function StartFiringLogic() + { + local TgDeviceForm_OracleInhand inhandDeviceForm; + + super.StartFiringLogic(); + m_bApplyCooldown = false; + // End:0x12B + if(HasCachedOracle()) + { + m_CachedOraclePawn.r_bRestoreSoulActive = true; + m_CachedOraclePawn.bNetDirty = true; + // End:0x12B + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + inhandDeviceForm = TgDeviceForm_OracleInhand(m_CachedOraclePawn.c_EquipForm[1]); + // End:0x12B + if(inhandDeviceForm != none) + { + inhandDeviceForm.UpdateAmmoCountFx(inhandDeviceForm.m_fPreviousAmmoPerc, inhandDeviceForm.m_fCurrentAmmoPerc); + } + } + } + //return; + } + + simulated function StopFiringLogic() + { + local TgDeviceFire_RestoreSoul FireMode; + local TgDevice talentDevice; + local TgDeviceFire talentFire; + local TgDeviceForm_OracleInhand inhandDeviceForm; + + FireMode = TgDeviceFire_RestoreSoul(GetCurrentFire()); + super.StopFiringLogic(); + // End:0x19A + if((FireMode != none) && HasCachedOracle()) + { + FireMode.RemoveHitSpecial(m_CachedOraclePawn.r_RestoreSoulTarget, true); + // End:0x159 + if(FireMode.IsAbyssalFuryActive()) + { + talentDevice = m_CachedOraclePawn.GetDeviceByEqPoint(26); + // End:0x159 + if(talentDevice != none) + { + talentFire = talentDevice.GetCurrentFire(); + // End:0x159 + if(talentFire != none) + { + talentFire.RemoveHitSpecial(m_CachedOraclePawn.r_RestoreSoulTarget, true); + } + } + } + m_CachedOraclePawn.r_RestoreSoulTarget = none; + m_CachedOraclePawn.bNetDirty = true; + } + ClearTimer('DelayedDeliverHit'); + // End:0x1DD + if(m_bApplyCooldown && int(Role) == int(ROLE_Authority)) + { + StartCooldown(); + } + // End:0x2F2 + if(HasCachedOracle()) + { + m_CachedOraclePawn.r_bRestoreSoulActive = false; + m_CachedOraclePawn.bNetDirty = true; + // End:0x2F2 + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + inhandDeviceForm = TgDeviceForm_OracleInhand(m_CachedOraclePawn.c_EquipForm[1]); + // End:0x2F2 + if(inhandDeviceForm != none) + { + inhandDeviceForm.UpdateAmmoCountFx(inhandDeviceForm.m_fPreviousAmmoPerc, inhandDeviceForm.m_fCurrentAmmoPerc); + } + } + } + //return; + } + stop; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Reversal.uc b/exported/TgGame/Classes/TgDevice_Reversal.uc new file mode 100755 index 00000000..5fc93f9e --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Reversal.uc @@ -0,0 +1,147 @@ +class TgDevice_Reversal extends TgDevice + native(ChampAndroxus) + hidecategories(Navigation); + +var float m_fAccumulatedDamage; +var float m_fVengeanceDamage; + +// Export UTgDevice_Reversal::execGetCachedAim(FFrame&, void* const) +native function GetCachedAim(out AimData Aim); + +// Export UTgDevice_Reversal::execGetTargetingMode(FFrame&, void* const) +native function TgObject.DeviceTargetMode GetTargetingMode(); + +// Export UTgDevice_Reversal::execMustBeOnGroundToFire(FFrame&, void* const) +native function bool MustBeOnGroundToFire(); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x48 + if((IsFiring()) && Current != none) + { + // End:0x48 + if(Current.r_nDeviceId == 12658) + { + return true; + } + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} + +simulated function TgDeviceFire GetFireModeForFiringProjectile() +{ + return m_FireMode[1]; + //return ReturnValue; +} + +simulated event float GetCurrentDamageAmount() +{ + local TgDeviceFire FireMode; + local float fMinDamage, fDamageScale; + + FireMode = GetCurrentFire(); + fMinDamage = 0.0000000; + // End:0x5B + if(FireMode != none) + { + fMinDamage = FireMode.GetCustomValue3(); + } + fDamageScale = FireMode.GetCustomValue1() / 100.0000000; + // End:0xAD + if(fDamageScale <= 0.0000000) + { + fDamageScale = 1.0000000; + } + return FMax((m_fAccumulatedDamage * fDamageScale) + m_fVengeanceDamage, fMinDamage); + //return ReturnValue; +} + +simulated function Projectile ProjectileFire(optional int ProjectileIndex = 0) +{ + local Projectile Proj; + + // End:0x1B + if((GetCurrentDamageAmount()) <= 0.0000000) + { + return none; + } + Proj = super.ProjectileFire(ProjectileIndex); + // End:0xB5 + if(((Proj != none) && TgPawn(Owner) != none) && TgProjectile(Proj) != none) + { + TgPawn(Owner).ProjectileOnFire(TgProjectile(Proj)); + } + return Proj; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return true; + //return ReturnValue; +} + +function InterruptFiringOnServerInternal(optional bool bSendClientInterrupt = true) +{ + // End:0x34 + if(r_Deployable != none) + { + r_Deployable.DestroyIt(); + } + super.InterruptFiringOnServerInternal(bSendClientInterrupt); + //return; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + m_fAccumulatedDamage = 0.0000000; + super.BeginState(PreviousStateName); + //return; + } + + simulated function FirePostHitDelay() + { + local TgDeviceFire FireMode; + local TgProj_Reversal ReversalProjectile; + local float fDamageAmount; + + FireMode = GetCurrentFire(); + // End:0xED + if(FireMode != none) + { + fDamageAmount = GetCurrentDamageAmount(); + // End:0xC2 + if(fDamageAmount > 0.0000000) + { + // End:0xA4 + if(int(Role) == int(ROLE_Authority)) + { + ReversalProjectile = TgProj_Reversal(ProjectileFire()); + ReversalProjectile.m_fDamageOverride = fDamageAmount; + } + m_fAccumulatedDamage = 0.0000000; + m_fVengeanceDamage = 0.0000000; + } + FireMode.ApplyHitSpecial(Owner); + } + // End:0x11C + if(r_Deployable != none) + { + r_Deployable.DestroyIt(); + } + super.FirePostHitDelay(); + //return; + } + stop; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit + m_bAimThroughReticule=true + m_bForce3PViewWhileFiring=true + m_fDeployZOffset=-30.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ReversalMod.uc b/exported/TgGame/Classes/TgDevice_ReversalMod.uc new file mode 100755 index 00000000..3cfc2d97 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ReversalMod.uc @@ -0,0 +1,3 @@ +class TgDevice_ReversalMod extends TgDevice + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_Rewind.uc b/exported/TgGame/Classes/TgDevice_Rewind.uc new file mode 100755 index 00000000..ad491f3c --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Rewind.uc @@ -0,0 +1,87 @@ +class TgDevice_Rewind extends TgDevice + hidecategories(Navigation); + +var TgDevice_Illusion m_CachedIllusionDevice; + +function DoRewindCardLogic(TgDevice_DimensionalLink dimensionalLinkDevice) +{ + local int I; + local TgPawn newIllusion; + local TgPawn_Illusion newIllusionDecoyPawn; + local TgDeviceFire FireMode; + + // End:0x41C + if(((int(Role) == int(ROLE_Authority)) && IsActive()) && m_CachedIllusionDevice != none) + { + // End:0x41C + if((dimensionalLinkDevice.m_CachedAim.HitActor != none) && dimensionalLinkDevice.m_CachedAim.HitActor.IsA('TgDeployable')) + { + newIllusion = m_CachedIllusionDevice.SpawnIllusionAtLocation(dimensionalLinkDevice.m_CachedAim.HitActor.Location, dimensionalLinkDevice.m_CachedAim.HitActor.Rotation); + // End:0x41C + if(newIllusion != none) + { + I = 0; + J0x189: + + // End:0x256 [Loop If] + if(I < dimensionalLinkDevice.s_nNumCycleTargets) + { + // End:0x248 + if(dimensionalLinkDevice.s_CycleTargets[I] == dimensionalLinkDevice.m_CachedAim.HitActor) + { + dimensionalLinkDevice.s_CycleTargets[I] = newIllusion; + // [Explicit Break] + goto J0x256; + } + I++; + // [Loop Continue] + goto J0x189; + } + J0x256: + + dimensionalLinkDevice.m_CachedAim.HitActor.Destroy(); + dimensionalLinkDevice.m_CachedAim.HitActor = newIllusion; + FireMode = GetCurrentFire(); + // End:0x355 + if(FireMode != none) + { + newIllusion.SetHealth(int(newIllusion.GetMaxHealth() * FireMode.GetCustomValue1())); + } + newIllusionDecoyPawn = TgPawn_Illusion(newIllusion); + // End:0x41C + if((newIllusionDecoyPawn != none) && newIllusionDecoyPawn.s_OnDeathDelegates.Find(dimensionalLinkDevice.IllusionDied) == -1) + { + newIllusionDecoyPawn.s_OnDeathDelegates.AddItem(dimensionalLinkDevice.IllusionDied); + } + } + } + } + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x73 + case 10335: + m_CachedIllusionDevice = TgDevice_Illusion(Dev); + // End:0x76 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +defaultproperties +{ + m_nLinkedDeviceIDs[0]=10335 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_RipenedGourd.uc b/exported/TgGame/Classes/TgDevice_RipenedGourd.uc new file mode 100755 index 00000000..d5506051 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_RipenedGourd.uc @@ -0,0 +1,3 @@ +class TgDevice_RipenedGourd extends TgDevice_GourdMod + native(ChampMalDamba) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_RocketBoots.uc b/exported/TgGame/Classes/TgDevice_RocketBoots.uc new file mode 100755 index 00000000..726f454e --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_RocketBoots.uc @@ -0,0 +1,68 @@ +class TgDevice_RocketBoots extends TgDevice_Charge + native(ChampBarik) + hidecategories(Navigation); + +simulated function float GetChargeSpeed() +{ + local float CV1; + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x69 + if(FireMode != none) + { + CV1 = FireMode.GetCustomValue1(); + // End:0x69 + if(CV1 > 0.0000000) + { + return CV1; + } + } + return super.GetChargeSpeed(); + //return ReturnValue; +} + +simulated event float GetChargeRange() +{ + local float CV1; + local TgDeviceFire FireMode; + local float fChargeTime; + + FireMode = GetCurrentFire(); + // End:0x88 + if(FireMode != none) + { + CV1 = FireMode.GetCustomValue1(); + // End:0x88 + if(CV1 > 0.0000000) + { + fChargeTime = GetChargeTime(); + return CV1 * fChargeTime; + } + } + return super.GetChargeRange(); + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + local float firePostHitTime; + + // End:0x4A + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0x4A + if(firePostHitTime > 0.3000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_eChargeState=EChargeState.CHARGE_Turn +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_RocketLauncher.uc b/exported/TgGame/Classes/TgDevice_RocketLauncher.uc new file mode 100755 index 00000000..1b3fd10a --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_RocketLauncher.uc @@ -0,0 +1,83 @@ +class TgDevice_RocketLauncher extends TgDevice + native(ChampRuckus) + hidecategories(Navigation); + +var() Vector m_vProjectileSpawnOffset2; +var int m_nFireCount; + +// Export UTgDevice_RocketLauncher::execGetAdjustedAim(FFrame&, void* const) +native function GetAdjustedAim(out AimData Aim, out float UsedRandomValue1, out float UsedRandomValue2, optional float RandomValueOverride1 = -1.0000000, optional float RandomValueOverride2 = -1.0000000); + +simulated event Vector GetProjectileSpawnOffset() +{ + // End:0x1C + if(m_nFireCount <= 0) + { + return m_vProjectileSpawnOffset2; + } + else + { + return m_vProjectileSpawnOffset; + } + //return ReturnValue; +} + +simulated function Projectile ProjectileFire(optional int ProjectileIndex = 0) +{ + local Projectile pProjectile; + + pProjectile = super.ProjectileFire(ProjectileIndex); + m_nFireCount++; + return pProjectile; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgPawn pPawn; + + m_nFireCount = 0; + pPawn = TgPawn(Instigator); + // End:0x9C + if(pPawn != none) + { + pPawn.FlashGeneric1(r_nDeviceInstanceId, int(CurrentFireMode), true, 1); + // End:0x9C + if(c_DeviceForm != none) + { + c_DeviceForm.Generic1(1); + } + } + super.StartFiringLogic(); + //return; + } + + simulated function FirePreHitDelay() + { + local TgPawn pPawn; + + pPawn = TgPawn(Instigator); + // End:0x91 + if(pPawn != none) + { + pPawn.FlashGeneric1(r_nDeviceInstanceId, int(CurrentFireMode), true, 1); + // End:0x91 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic1(0); + } + } + super.FirePreHitDelay(); + //return; + } + stop; +} + +defaultproperties +{ + m_vProjectileSpawnOffset2=(X=0.0000000,Y=-25.0000000,Z=48.0000000) + m_bAimThroughReticule=true + m_vProjectileSpawnOffset=(X=0.0000000,Y=25.0000000,Z=48.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Roost.uc b/exported/TgGame/Classes/TgDevice_Roost.uc new file mode 100755 index 00000000..deaa7b4d --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Roost.uc @@ -0,0 +1,55 @@ +class TgDevice_Roost extends TgDevice + native(ChampOwl) + hidecategories(Navigation); + +var TgDevice m_ScopeDevice; + +// Export UTgDevice_Roost::execGetStealthJuiceDiscount(FFrame&, void* const) +native function float GetStealthJuiceDiscount(); + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x69 + case 19111: + m_ScopeDevice = Dev; + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x61 + case 19111: + m_ScopeDevice = none; + return; + // End:0xFFFF + default: + //return; + break; + } +} + +defaultproperties +{ + m_nLinkedDeviceIDs[0]=19111 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_RuckusInhand.uc b/exported/TgGame/Classes/TgDevice_RuckusInhand.uc new file mode 100755 index 00000000..c41c9d00 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_RuckusInhand.uc @@ -0,0 +1,249 @@ +class TgDevice_RuckusInhand extends TgDevice_DualWield + native(ChampRuckus) + hidecategories(Navigation); + +var float m_fSpinAmount; +var float m_fCurrentSpinScale; +var(Spin) float m_fStartingSpinRate; +var(Spin) float m_fMaxSpinRate; +var(Spin) float m_fDurationToMaxSpin; +var(Spin) float m_fSpinDownRate; +var(Spin) float m_fSlowestFireDelay; +var float m_fFiringMoveSpeedModifier; +var bool m_bLeftMouseMovePenalty; +var bool m_bInFireLoop; +var bool m_bAltFireSpinning; +var bool m_bHexaFireSpinning; +var(MovePenalty) float m_fMoveSpeedDecreaseInterpolationDuration; +var(MovePenalty) float m_fMoveSpeedIncreaseInterpolationDuration; +var float r_fRecyclerPercent; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_fRecyclerPercent; +} + +simulated function bool ShouldConsumeAmmo(int nFireRequestID, optional array Impacts) +{ + local int I; + + // End:0x135 + if(r_fRecyclerPercent > 0.0000000) + { + // End:0x128 + if(((Instigator != none) && !Instigator.IsLocallyControlled()) && UsesSimulatedAmmo()) + { + // End:0x8B + if((Impacts.Length == 0) && !m_CachedMissedInstantFire) + { + ClientSyncAmmoGivenFromServer(-1); + } + else + { + // End:0x128 + if((Impacts.Length > 0) && m_CachedMissedInstantFire) + { + I = 0; + J0xB5: + + // End:0x128 [Loop If] + if(I < Impacts.Length) + { + // End:0x11A + if(Impacts[I].Impact.HitActor != none) + { + ClientSyncAmmoGivenFromServer(1); + // [Explicit Break] + goto J0x128; + } + ++I; + // [Loop Continue] + goto J0xB5; + } + } + } + } + J0x128: + + return !m_CachedMissedInstantFire; + } + return super(TgDevice).ShouldConsumeAmmo(nFireRequestID); + //return ReturnValue; +} + +reliable server function SetLeftMouseMovePenalty(bool bLeftMouseMovePenalty) +{ + m_bLeftMouseMovePenalty = bLeftMouseMovePenalty; + //return; +} + +simulated function Tick(float DeltaTime) +{ + local float fPreFireTimeRemaining, fLocalTimeRemaining; + local bool bInFireLoop; + local float spinFactor; + local TgPawn_Ruckus Ruckus; + local TgDeviceFire CurrFireMode; + local TgPlayerController TgPC; + local bool bLeftMouseDown; + + super(Actor).Tick(DeltaTime); + bInFireLoop = m_bInFireLoop && !IsReloading(); + // End:0x16A + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + bLeftMouseDown = false; + Ruckus = TgPawn_Ruckus(Instigator); + CurrFireMode = GetCurrentFire(); + // End:0x128 + if((Ruckus != none) && CurrFireMode != none) + { + TgPC = TgPlayerController(Ruckus.Controller); + // End:0x128 + if(TgPC != none) + { + bLeftMouseDown = TgPC.bPressingLeftMouseButton; + } + } + // End:0x16A + if(m_bLeftMouseMovePenalty != bLeftMouseDown) + { + m_bLeftMouseMovePenalty = bLeftMouseDown; + SetLeftMouseMovePenalty(m_bLeftMouseMovePenalty); + } + } + // End:0x3B2 + if(((bInFireLoop || m_bAltFireSpinning) || m_bHexaFireSpinning) || m_bLeftMouseMovePenalty && IsReloading()) + { + // End:0x1E8 + if(m_fDurationToMaxSpin <= 0.0000000) + { + m_fSpinAmount += (DeltaTime * m_fMaxSpinRate); + } + else + { + m_fSpinAmount += ((DeltaTime * m_fCurrentSpinScale) * m_fMaxSpinRate); + // End:0x231 + if(m_bHexaFireSpinning) + { + SetCurrentSpinScale(1.0000000); + } + else + { + SetCurrentSpinScale(FMin(m_fCurrentSpinScale + (DeltaTime / m_fDurationToMaxSpin), 1.0000000)); + } + } + // End:0x357 + if(m_bInFireLoop) + { + // End:0x357 + if((m_fCurrentSpinScale > 0.0000000) && m_fMaxSpinRate > 0.0000000) + { + fPreFireTimeRemaining = GetTimerRate('FirePreHitDelay') - GetTimerCount('FirePreHitDelay'); + // End:0x357 + if(fPreFireTimeRemaining > 0.2000000) + { + spinFactor = m_fStartingSpinRate + ((1.0000000 - m_fStartingSpinRate) * m_fCurrentSpinScale); + fLocalTimeRemaining = (1.0000000 - m_fSpinAmount) / (spinFactor * m_fMaxSpinRate); + fLocalTimeRemaining = FMax(fLocalTimeRemaining, 0.1000000); + } + } + } + // End:0x3AF + if((m_fMoveSpeedDecreaseInterpolationDuration > 0.0000000) && m_fFiringMoveSpeedModifier > 0.0000000) + { + m_fFiringMoveSpeedModifier = FMax(m_fFiringMoveSpeedModifier - (DeltaTime / m_fMoveSpeedDecreaseInterpolationDuration), 0.0000000); + } + } + else + { + m_fSpinAmount = 0.0000000; + SetCurrentSpinScale(FMax(m_fCurrentSpinScale - (DeltaTime * m_fSpinDownRate), 0.0000000)); + // End:0x449 + if((m_fMoveSpeedIncreaseInterpolationDuration > 0.0000000) && m_fFiringMoveSpeedModifier < 1.0000000) + { + m_fFiringMoveSpeedModifier = FMin(m_fFiringMoveSpeedModifier + (DeltaTime / m_fMoveSpeedIncreaseInterpolationDuration), 1.0000000); + } + } + //return; +} + +simulated function SetCurrentSpinScale(float fCurrentSpinScale) +{ + local float RefireTime; + local TgPawn_Ruckus Ruckus; + local TgGameplayCurves GPCurves; + + m_fCurrentSpinScale = fCurrentSpinScale; + Ruckus = TgPawn_Ruckus(Instigator); + // End:0xBA + if(Ruckus != none) + { + Ruckus.r_fBarrelSpinFactor = fCurrentSpinScale; + Ruckus.r_fBarrelSpinRate = fCurrentSpinScale * m_fMaxSpinRate; + Ruckus.bNetDirty = true; + } + GetCurrentFire().m_fFirePostHitDelay = m_fSlowestFireDelay; + GPCurves = GetCurrentGameplayCurves(); + // End:0x165 + if(GPCurves != none) + { + // End:0x165 + if(GPCurves.GetPrimaryDistributionValueByType(8, m_fCurrentSpinScale, RefireTime)) + { + GetCurrentFire().m_fFirePostHitDelay = RefireTime; + } + } + //return; +} + +simulated function bool RequireMovementForAimAssist() +{ + return !m_bHexaFireSpinning; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + m_bInFireLoop = true; + super.BeginState(PreviousStateName); + //return; + } + + simulated function EndState(name NextStateName) + { + m_bInFireLoop = false; + ClearTimer('FirePreHitDelay'); + super.EndState(NextStateName); + //return; + } + stop; +} + +defaultproperties +{ + m_fStartingSpinRate=0.0010000 + m_fMaxSpinRate=20.0000000 + m_fDurationToMaxSpin=1.0000000 + m_fSpinDownRate=1.0000000 + m_fSlowestFireDelay=0.3000000 + m_fFiringMoveSpeedModifier=1.0000000 + m_fMoveSpeedDecreaseInterpolationDuration=0.5000000 + m_fMoveSpeedIncreaseInterpolationDuration=0.5000000 + m_vProjectileSpawnOffset2=(X=5.0000000,Y=-18.0000000,Z=-7.0000000) + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAltFireEnabled=true + m_bParentAnimComponent1PHead=true + m_vMeshViewOffset=(X=10.0000000,Y=0.0000000,Z=-3.0000000) + m_fWeaponBob=0.0000000 + m_fMeshFOV=90.0000000 + m_vProjectileSpawnOffset=(X=5.0000000,Y=18.0000000,Z=-7.0000000) + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_RuckusInhand' + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Ruckus.DeviceInhand' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.LightForceFeedback' + m_AccuracySettings=(bUsesAdvancedAccuracy=true,fMaxAccuracy=0.9900000,fMinAccuracy=0.9400000,fAccuracyLossPerShot=0.0050000,fAccuracyGainPerSec=0.3500000,fAccuracyGainDelay=0.2000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Rush.uc b/exported/TgGame/Classes/TgDevice_Rush.uc new file mode 100755 index 00000000..b7752fd4 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Rush.uc @@ -0,0 +1,159 @@ +class TgDevice_Rush extends TgDevice_Charge + native(ChampLazarus) + hidecategories(Navigation); + +var TgPawn r_PawnTarget; +var float m_fWalkableFloorZ; +var float m_fZoomDurationOverride; +var bool m_bHitWall; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_PawnTarget; +} + +// Export UTgDevice_Rush::execTurnTargetToOwner(FFrame&, void* const) +native function TurnTargetToOwner(); + +// Export UTgDevice_Rush::execPredictChargeInterrupt(FFrame&, void* const) +native function bool PredictChargeInterrupt(Vector StartLocation, Vector endLocation); + +// Export UTgDevice_Rush::execMoveTargetToSafeArea(FFrame&, void* const) +native function MoveTargetToSafeArea(TgPawn pPawnTarget); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x2A + if(Current.m_nDeviceType == 11077) + { + return false; + } + return (IsFiring()) || IsTimerActive('OutroLockoutTime'); + //return ReturnValue; +} + +simulated function OutroLockoutTime() +{ + local TgPawn TgP; + + TgP = TgPawn(Instigator); + // End:0x4F + if(TgP != none) + { + TgP.m_fZoomDurationOverride = 0.0000000; + } + //return; +} + +simulated event bool CanFiringBeCanceledByReactivation() +{ + return true; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return true; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function OnValidTargetTouched(Actor Other) + { + local TgPawn TargetPawn, InstigatorPawn; + local float fChargeTimeRemaining; + local Vector vLocationOffset; + local Rotator rRotationOffset; + local TgDeviceFire FireMode; + local ImpactInfo Impact; + + m_bHitWall = false; + // End:0x407 + if((((int(Role) == int(ROLE_Authority)) && r_PawnTarget == none) && Other != none) && Instigator != none) + { + TargetPawn = TgPawn(Other); + InstigatorPawn = TgPawn(Instigator); + fChargeTimeRemaining = GetRemainingTimeForTimer('FirePostHitDelay'); + FireMode = GetCurrentFire(); + // End:0x407 + if((((TargetPawn != none) && InstigatorPawn != none) && fChargeTimeRemaining > 0.0000000) && FireMode != none) + { + // End:0x1A6 + if(TargetPawn.IsCrowdControlImmune() || TargetPawn.SpecialAOEImmunity(m_HitProxy.Location, FireMode)) + { + // End:0x1A3 + if(TargetPawn.GetPropCurrentValue(116) == float(0)) + { + InterruptFiring(); + } + } + else + { + // End:0x407 + if(TargetPawn.CanBeGrabbed()) + { + vLocationOffset = Normal(InstigatorPawn.GetChargeDirection()); + vLocationOffset *= (1.1000000 * (InstigatorPawn.NativeGetCollisionRadius() + TargetPawn.NativeGetCollisionRadius())); + vLocationOffset.Z = InstigatorPawn.NativeGetCollisionHeight() * 0.6600000; + rRotationOffset = Rotator(vect(-1.0000000, 0.0000000, 0.0000000)); + r_PawnTarget = TargetPawn; + bNetDirty = true; + // End:0x407 + if(!PredictChargeInterrupt(r_PawnTarget.Location, InstigatorPawn.Location + vLocationOffset)) + { + r_PawnTarget.StartPhysGrab(InstigatorPawn, fChargeTimeRemaining, 2,, vLocationOffset, rRotationOffset); + Impact.bDirectHit = m_bUseDirectHitSpecial; + Impact.DeviceModeReference = FireMode; + Impact.HitActor = r_PawnTarget; + FireMode.ApplyHitSpecial(r_PawnTarget, Impact, 10693); + } + } + } + } + } + //return; + } + + simulated event EndCharge() + { + local TgDeviceFire FireMode; + local ImpactInfo Impact; + + super.EndCharge(); + // End:0x1C4 + if((int(Role) == int(ROLE_Authority)) && r_PawnTarget != none) + { + r_PawnTarget.EndPhysGrab(); + FireMode = GetCurrentFire(); + // End:0x19A + if(FireMode != none) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = FireMode; + Impact.HitActor = r_PawnTarget; + Impact.HitNormal = Normal(Instigator.Location - r_PawnTarget.Location); + FireMode.ApplyHit(Impact, Instigator); + FireMode.RemoveHitSpecial(r_PawnTarget, true, 10693); + } + MoveTargetToSafeArea(r_PawnTarget); + r_PawnTarget = none; + bNetDirty = true; + } + //return; + } + stop; +} + +defaultproperties +{ + m_fWalkableFloorZ=0.7000000 + m_fZoomDurationOverride=0.1000000 + m_ChargeTimingType=ChargeFiringType.CFT_PostFire + m_bApplyHitOnTouch=false + m_vHitProxyRelativeLocation=(X=30.0000000,Y=0.0000000,Z=0.0000000) + m_bUsesOutroLockout=true + m_fOutroLockoutTime=0.3000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Salvo.uc b/exported/TgGame/Classes/TgDevice_Salvo.uc new file mode 100755 index 00000000..d7a5fb2b --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Salvo.uc @@ -0,0 +1,129 @@ +class TgDevice_Salvo extends TgDevice + native(ChampDrogoz) + hidecategories(Navigation); + +var TgDevice_DrogozInhand m_CachedInhand; + +// Export UTgDevice_Salvo::execShouldInterruptStealth(FFrame&, void* const) +native function bool ShouldInterruptStealth(); + +// Export UTgDevice_Salvo::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x3B + if((Current != none) && Current.m_nDeviceType == 11070) + { + return false; + } + // End:0x54 + if(IsTimerActive('FirePreHitDelay')) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return !IsTimerActive('FirePreHitDelay'); + //return ReturnValue; +} + +simulated event bool ShouldMountCancelFiring() +{ + return m_CachedInhand.m_bStartedSalvo; + //return ReturnValue; +} + +simulated function HandleDeviceFormStartFire(int nDeviceModeNum, float fRefireTime, const out AimData Aim) +{ + local int inhandAmmo; + + inhandAmmo = 0; + // End:0x43 + if(m_CachedInhand != none) + { + inhandAmmo = m_CachedInhand.GetCurrentAmmoAmount(); + } + TgPawn(Instigator).FlashStartFire(r_nDeviceInstanceId, nDeviceModeNum, fRefireTime, Aim.HitActor, inhandAmmo); + // End:0x110 + if(c_DeviceForm != none) + { + c_DeviceForm.StartFire(nDeviceModeNum, fRefireTime, Aim.HitActor, inhandAmmo); + } + //return; +} + +simulated function EndSalvo() +{ + // End:0x55 + if((IsFiring()) && !IsTimerActive('FirePostHitDelay')) + { + SetTimer(GetCurrentFire().m_fAmmoClipPreReloadTime, false, 'FirePostHitDelay'); + } + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0xA4 + case 10828: + m_CachedInhand = TgDevice_DrogozInhand(Dev); + Dev.RegisterDelegate(4, EndSalvo); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0x93 + case 10828: + m_CachedInhand = none; + Dev.UnregisterDelegate(4, EndSalvo); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated state DeviceFiring +{ + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + PlayClientFireFx(Owner.Location, 0, false, 0.0000000); + ClearTimer('FirePostHitDelay'); + //return; + } + stop; +} + +defaultproperties +{ + m_nLinkedDeviceTypes[0]=10828 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Scope.uc b/exported/TgGame/Classes/TgDevice_Scope.uc new file mode 100755 index 00000000..2208cce9 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Scope.uc @@ -0,0 +1,237 @@ +class TgDevice_Scope extends TgDevice_ToggleWithLockout + native(ChampOwl) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var bool m_bDelayMoveSpeedPenalty; +var bool m_bIsZoomed; + +// Export UTgDevice_Scope::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x4A + if(((IsFiring()) && Current != none) && Current.m_nDeviceType == 15205) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated function StartFireDescopeTimer() +{ + m_bIsZoomed = false; + // End:0x6D + if(IsFiring()) + { + // End:0x63 + if(!IsTimerActive('FirePreHitDelay')) + { + SetTimer(GetCurrentFire().GetCustomValue2(), false, 'FireDescopeTimer'); + } + else + { + FireDescopeTimer(); + } + } + //return; +} + +simulated function FireDescopeTimer() +{ + // End:0x1E + if(int(Role) < int(ROLE_Authority)) + { + ClientInterrupt(); + } + InterruptFiring(); + //return; +} + +simulated event bool CanBeCanceled() +{ + return !IsTimerActive('FireDescopeTimer'); + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return (IsFiring()) && !IsTimerActive('FireDescopeTimer'); + //return ReturnValue; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0xBA + case 10828: + Dev.RegisterDelegate(1, CompleteInterrupt); + Dev.RegisterDelegate(0, StartFireDescopeTimer); + return; + // End:0x14B + case 11041: + Dev.RegisterDelegate(2, CompleteInterrupt); + // End:0x149 + if(Dev.IsA('TgDevice_OwlStealth')) + { + Dev.RegisterDelegate(3, CompleteInterrupt); + } + return; + // End:0x187 + case 15052: + Dev.RegisterDelegate(2, CompleteInterrupt); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0xBA + case 10828: + Dev.UnregisterDelegate(1, CompleteInterrupt); + Dev.UnregisterDelegate(0, StartFireDescopeTimer); + return; + // End:0x14B + case 11041: + Dev.UnregisterDelegate(2, CompleteInterrupt); + // End:0x149 + if(Dev.IsA('TgDevice_OwlStealth')) + { + Dev.UnregisterDelegate(3, CompleteInterrupt); + } + return; + // End:0x187 + case 15052: + Dev.UnregisterDelegate(2, CompleteInterrupt); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated function bool IsPlayerToggleZoomSet() +{ + local TgPawn TgP; + local TgPlayerController TgPC; + + TgP = TgPawn(Instigator); + // End:0x94 + if(TgP != none) + { + TgPC = TgPlayerController(TgP.Controller); + // End:0x94 + if((TgPC != none) && TgPC.r_bToggleZoom == true) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated function CompleteInterrupt() +{ + m_bIsZoomed = false; + super.CompleteInterrupt(); + //return; +} + +simulated function bool InterceptSlotReleased(TgPlayerController TgController) +{ + local TgPawn_Owl TgP; + + TgP = TgPawn_Owl(Instigator); + // End:0x81 + if((IsPlayerToggleZoomSet()) && TgP.m_bUseSecondWeapon == false) + { + m_bIsZoomed = !m_bIsZoomed; + // End:0x81 + if(m_bIsZoomed == false) + { + StopFire(); + } + } + return super(TgDevice).InterceptSlotReleased(TgController); + //return ReturnValue; +} + +simulated event bool IsFunctionallyToggleDevice() +{ + // End:0x0F + if(IsPlayerToggleZoomSet()) + { + return true; + } + return super(TgDevice).IsFunctionallyToggleDevice(); + //return ReturnValue; +} + +simulated function bool ShouldStopActionOnOffhandSlotReleased() +{ + // End:0x0F + if(IsPlayerToggleZoomSet()) + { + return false; + } + return super(TgDevice).ShouldStopActionOnOffhandSlotReleased(); + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgPawn TgP; + + TgP = TgPawn(Instigator); + // End:0x59 + if(TgP != none) + { + // End:0x59 + if(TgP.r_bIsJumping) + { + m_bDelayMoveSpeedPenalty = true; + } + } + super.StartFiringLogic(); + //return; + } + stop; +} + +defaultproperties +{ + m_nLinkedDeviceTypes[0]=11077 + m_nLinkedDeviceTypes[1]=10828 + m_nLinkedDeviceTypes[2]=11041 + m_nLinkedDeviceTypes[3]=15052 + m_AimAssistKeyframesMagnetVert=none + m_AimAssistKeyframesMagnetHoriz=none + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftlowx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_nAimAssistPriorityWhileFiring=2 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Scout.uc b/exported/TgGame/Classes/TgDevice_Scout.uc new file mode 100755 index 00000000..314bf8f9 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Scout.uc @@ -0,0 +1,20 @@ +class TgDevice_Scout extends TgDevice + native(ChampCassie) + hidecategories(Navigation); + +var TgPawn m_CachedPawnOwner; +var TgRepInfo_TaskForce m_CachedAllyTaskForce; +var TgRepInfo_TaskForce m_CachedEnemyTaskForce; +var array m_AlliesScouted; +var array m_EnemiesScouted; + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Scramble.uc b/exported/TgGame/Classes/TgDevice_Scramble.uc new file mode 100755 index 00000000..5bddfa4c --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Scramble.uc @@ -0,0 +1,55 @@ +class TgDevice_Scramble extends TgDevice + native(ChampViktor) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var TgDevice_Hustle m_CachedHustleDevice; +var float m_fSprintEndTimestamp; + +// Export UTgDevice_Scramble::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +reliable client simulated function ClientStartSpeedBoost() +{ + m_fSprintEndTimestamp = WorldInfo.TimeSeconds + GetCurrentFire().GetCustomValue1(); + //return; +} + +event CheckStartSprintBoost() +{ + // End:0xE0 + if(((((int(Role) == int(ROLE_Authority)) && IsActive()) && m_CachedHustleDevice != none) && m_CachedHustleDevice.NativeIsFiring()) && !m_CachedHustleDevice.IsTimerActive('FirePreHitDelay')) + { + m_fSprintEndTimestamp = WorldInfo.TimeSeconds + GetCurrentFire().GetCustomValue1(); + StartCooldown(); + } + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x73 + case 14148: + m_CachedHustleDevice = TgDevice_Hustle(Dev); + // End:0x76 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +defaultproperties +{ + m_nLinkedDeviceIDs[0]=14148 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_SecondWind.uc b/exported/TgGame/Classes/TgDevice_SecondWind.uc new file mode 100755 index 00000000..c9c96495 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_SecondWind.uc @@ -0,0 +1,72 @@ +class TgDevice_SecondWind extends TgDevice + native(ChampViktor) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var TgDevice_Hustle m_CachedHustleDevice; +var float m_fSprintEndTimestamp; + +// Export UTgDevice_SecondWind::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +simulated function CheckStartSprintBoost() +{ + // End:0x65 + if(IsActive()) + { + m_fSprintEndTimestamp = WorldInfo.TimeSeconds + GetCurrentFire().GetCustomValue1(); + StartCooldown(); + } + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0xA5 + case 14148: + Dev.RegisterDelegate(2, CheckStartSprintBoost); + m_CachedHustleDevice = TgDevice_Hustle(Dev); + // End:0xA8 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x89 + case 14148: + Dev.UnregisterDelegate(2, CheckStartSprintBoost); + // End:0x8C + break; + // End:0xFFFF + default: + break; + } + //return; +} + +defaultproperties +{ + m_nLinkedDeviceIDs[0]=14148 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Seedling.uc b/exported/TgGame/Classes/TgDevice_Seedling.uc new file mode 100755 index 00000000..7a26e395 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Seedling.uc @@ -0,0 +1,10 @@ +class TgDevice_Seedling extends TgDevice + native(ChampFairy) + hidecategories(Navigation); + +defaultproperties +{ + m_bDisableLagCompensation=true + m_vProjectileSpawnOffset=(X=15.0000000,Y=-10.0000000,Z=-10.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Willo.DeviceSeedling' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_SelfResurrection.uc b/exported/TgGame/Classes/TgDevice_SelfResurrection.uc new file mode 100755 index 00000000..cb509cb7 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_SelfResurrection.uc @@ -0,0 +1,138 @@ +class TgDevice_SelfResurrection extends TgDevice + native(ChampLazarus) + hidecategories(Navigation); + +enum ResurrectionState +{ + RS_NONE, // 0 + RS_STANDBY, // 1 + RS_BUILDUP, // 2 + RS_ACTIVE, // 3 + RS_END, // 4 + RS_MAX // 5 +}; + +var repnotify TgDevice_SelfResurrection.ResurrectionState r_mCurrentState; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_mCurrentState; +} + +// Export UTgDevice_SelfResurrection::execCanFiringBeLocked(FFrame&, void* const) +native function bool CanFiringBeLocked(); + +// Export UTgDevice_SelfResurrection::execCanFireWhileMounted(FFrame&, void* const) +native function bool CanFireWhileMounted(); + +// Export UTgDevice_SelfResurrection::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +// Export UTgDevice_SelfResurrection::execEnterBuildupState(FFrame&, void* const) +native function EnterBuildupState(); + +// Export UTgDevice_SelfResurrection::execSuicide(FFrame&, void* const) +native function Suicide(); + +// Export UTgDevice_SelfResurrection::execFinishResurrection(FFrame&, void* const) +native function FinishResurrection(); + +// Export UTgDevice_SelfResurrection::execApplyActiveEffects(FFrame&, void* const) +native function ApplyActiveEffects(); + +// Export UTgDevice_SelfResurrection::execUpdateState(FFrame&, void* const) +native function UpdateState(byte NewState); + +// Export UTgDevice_SelfResurrection::execOnBecomeActive(FFrame&, void* const) +native function OnBecomeActive(); + +simulated event ReplicatedEvent(name VarName) +{ + switch(VarName) + { + // End:0x35 + case 'r_mCurrentState': + UpdateState(r_mCurrentState); + // End:0x4B + break; + // End:0xFFFF + default: + super.ReplicatedEvent(VarName); + break; + } + //return; +} + +simulated function bool ShouldInterruptMount() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return false; + //return ReturnValue; +} + +simulated function FireAmmunition() +{ + local TgPawn_Lazarus pLazarus; + + super.FireAmmunition(); + pLazarus = TgPawn_Lazarus(Instigator); + // End:0xAA + if(int(r_mCurrentState) == int(2)) + { + pLazarus.TermRagdoll(); + // End:0xAA + if(int(Role) == int(ROLE_Authority)) + { + ClearTimer('Suicide'); + UpdateState(ROLE_Authority); + ApplyActiveEffects(); + SetTimer(3.0000000, false, 'FinishResurrection'); + } + } + //return; +} + +simulated function bool ShouldConsumePowerPoolOnStartFire() +{ + return false; + //return ReturnValue; +} + +simulated function bool ShouldConsumePowerPoolAfterFire() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StopFiringLogic() + { + local TgPawn_Lazarus pLazarus; + + super.StopFiringLogic(); + pLazarus = TgPawn_Lazarus(Instigator); + // End:0xA5 + if((int(Role) == int(ROLE_Authority)) && int(r_mCurrentState) == int(0)) + { + DeviceConsumePowerPool(CurrentFireMode); + pLazarus.r_bShouldRez = false; + pLazarus.bNetDirty = true; + } + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_ShadowTravel.uc b/exported/TgGame/Classes/TgDevice_ShadowTravel.uc new file mode 100755 index 00000000..d36281f6 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ShadowTravel.uc @@ -0,0 +1,65 @@ +class TgDevice_ShadowTravel extends TgDevice + native(ChampOracle) + hidecategories(Navigation); + +simulated event bool CanBeCanceled() +{ + local float firePostHitTime; + + // End:0x4A + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0x4A + if(firePostHitTime > 0.5000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated function bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +// Export UTgDevice_ShadowTravel::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +simulated state DeviceFiring +{ + simulated function FirePreHitDelay() + { + local TgPawn_Oracle Oracle; + local TgDevice inhand; + + Oracle = TgPawn_Oracle(Owner); + // End:0x102 + if(Oracle != none) + { + inhand = Oracle.GetDeviceByEqPoint(1); + // End:0x102 + if(inhand != none) + { + inhand.InterruptReload(); + inhand.ClientInterruptReload(); + inhand.SetAmmo(inhand.r_nMaxAmmoClipCount); + Oracle.ForceUpdateAmmoAnim(); + } + } + super.FirePreHitDelay(); + //return; + } + stop; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit + m_bPostFireShouldInterruptStealth=false + m_bUsesOutroLockout=true + m_fEnterCombatDuration=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Shatter.uc b/exported/TgGame/Classes/TgDevice_Shatter.uc new file mode 100755 index 00000000..2071ff9a --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Shatter.uc @@ -0,0 +1,51 @@ +class TgDevice_Shatter extends TgDevice + native(ChampYing) + hidecategories(Navigation); + +var TgPawn_Ying m_CachedYingPawn; + +// Export UTgDevice_Shatter::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated function CustomFire() +{ + local int I; + local float fTimeUntilShatter; + local TgDeviceFire FireMode; + local byte bHasShatterableIllusions; + + // End:0x56 + if((!HasYingPawn() || !m_CachedYingPawn.PopulateActiveDecoyList(bHasShatterableIllusions)) || int(bHasShatterableIllusions) == int(0)) + { + return; + } + FireMode = GetCurrentFire(); + // End:0xA2 + if(FireMode != none) + { + fTimeUntilShatter = FireMode.GetCustomValue1(); + } + I = 0; + J0xAD: + + // End:0x130 [Loop If] + if(I < m_CachedYingPawn.m_ActiveIllusions.Length) + { + m_CachedYingPawn.m_ActiveIllusions[I].TriggerShatter(fTimeUntilShatter); + I++; + // [Loop Continue] + goto J0xAD; + } + //return; +} + +simulated function bool HasYingPawn() +{ + // End:0x2B + if(m_CachedYingPawn == none) + { + m_CachedYingPawn = TgPawn_Ying(Owner); + } + return m_CachedYingPawn != none; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_ShellShield.uc b/exported/TgGame/Classes/TgDevice_ShellShield.uc new file mode 100755 index 00000000..5ba56d12 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ShellShield.uc @@ -0,0 +1,189 @@ +class TgDevice_ShellShield extends TgDevice + native(ChampMakoa) + hidecategories(Navigation); + +var bool r_bHasHalfshell; +var bool c_bHalfShellFXOn; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bHasHalfshell; +} + +// Export UTgDevice_ShellShield::execSetFireMode(FFrame&, void* const) +native function SetFireMode(int nFireModeNum, optional bool ForceSet = false); + +simulated event OnDeployableSpawned(TgDeployable deployable) +{ + local TgDeviceFire FireMode; + local ImpactInfo selfImpact; + + // End:0x113 + if(r_bHasHalfshell && deployable == r_Deployable) + { + // End:0x113 + if(!c_bHalfShellFXOn && Owner != none) + { + FireMode = GetCurrentFire(); + // End:0x113 + if(FireMode != none) + { + selfImpact.bDirectHit = true; + selfImpact.DeviceModeReference = FireMode; + selfImpact.HitActor = Owner; + FireMode.ApplyHitSpecial(Owner, selfImpact); + c_bHalfShellFXOn = true; + } + } + } + //return; +} + +event OnDeployableDestroyed(TgDeployable deployable) +{ + local TgDeviceFire FireMode; + local TgPawn PawnOwner; + + // End:0x138 + if(deployable == r_Deployable) + { + // End:0x12E + if(r_bHasHalfshell) + { + // End:0x9C + if(c_bHalfShellFXOn && Owner != none) + { + FireMode = GetCurrentFire(); + // End:0x9C + if(FireMode != none) + { + FireMode.RemoveHitSpecial(Owner, true); + c_bHalfShellFXOn = false; + } + } + // End:0xCB + if(c_DeviceForm != none) + { + c_DeviceForm.Generic1(); + } + PawnOwner = TgPawn(Owner); + // End:0x12B + if(PawnOwner != none) + { + PawnOwner.FlashGeneric1(r_nDeviceInstanceId, int(CurrentFireMode)); + } + } + else + { + InterruptFiring(); + } + } + super.OnDeployableDestroyed(deployable); + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x67 + if((Current != none) && Current.r_nDeviceId == 14191) + { + return IsTimerActive('FirePreHitDelay') || IsTimerActive('ShellShieldFireLockout'); + } + return (IsFiring()) || IsTimerActive('ShellShieldFireLockout'); + //return ReturnValue; +} + +simulated function ShellShieldFireLockout() +{ + //return; +} + +simulated event bool CanBeInterrupted() +{ + return true; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return IsTimerActive('FirePostHitDelay'); + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + local TgPawn_Makoa makoaOwner; + + // End:0xF3 + if(!r_bHasHalfshell) + { + makoaOwner = TgPawn_Makoa(Instigator); + // End:0xF3 + if(makoaOwner != none) + { + makoaOwner.m_fShellShieldSpeedModifier = GetCurrentFire().GetCustomValue1(); + makoaOwner.m_fShellShieldZoomOverride = 1.5000000; + // End:0xF3 + if(int(Role) == int(ROLE_Authority)) + { + makoaOwner.r_bShellShieldIsActive = true; + makoaOwner.bNetDirty = true; + } + } + } + super.BeginState(PreviousStateName); + //return; + } + + simulated function EndState(name NextStateName) + { + local TgPawn_Makoa makoaOwner; + local float fLockOutTime; + + makoaOwner = TgPawn_Makoa(Instigator); + // End:0xC9 + if(makoaOwner != none) + { + makoaOwner.m_fShellShieldSpeedModifier = 1.0000000; + makoaOwner.m_fShellShieldZoomOverride = 0.0000000; + // End:0xC9 + if(int(Role) == int(ROLE_Authority)) + { + makoaOwner.r_bShellShieldIsActive = false; + makoaOwner.bNetDirty = true; + } + } + super.EndState(NextStateName); + // End:0x130 + if((int(Role) == int(ROLE_Authority)) && !r_bHasHalfshell) + { + // End:0x130 + if(r_Deployable != none) + { + r_Deployable.DestroyIt(); + } + } + fLockOutTime = GetCurrentFire().GetCustomValue2(); + // End:0x184 + if(fLockOutTime > 0.0000000) + { + SetTimer(fLockOutTime, false, 'ShellShieldFireLockout'); + } + //return; + } + stop; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit + m_bDeployAtFeetOnFailure=true + m_bCooldownAfterDeployDeath=true + m_fDeployZForgiveness=0.0000000 + m_fBottomlessPitCheck=0.0000000 + m_fDeployZOffset=-40.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ShellShieldMod.uc b/exported/TgGame/Classes/TgDevice_ShellShieldMod.uc new file mode 100755 index 00000000..5d3c038c --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ShellShieldMod.uc @@ -0,0 +1,9 @@ +class TgDevice_ShellShieldMod extends TgDevice + native(Devices) + hidecategories(Navigation); + +// Export UTgDevice_ShellShieldMod::execApplyTouchEffect(FFrame&, void* const) +native function ApplyTouchEffect(Actor Target); + +// Export UTgDevice_ShellShieldMod::execApplyDamageTakenEffect(FFrame&, void* const) +native function int ApplyDamageTakenEffect(int totalDamage); diff --git a/exported/TgGame/Classes/TgDevice_ShellSpin.uc b/exported/TgGame/Classes/TgDevice_ShellSpin.uc new file mode 100755 index 00000000..b73d9ae5 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ShellSpin.uc @@ -0,0 +1,213 @@ +class TgDevice_ShellSpin extends TgDevice_Charge + native(ChampMakoa) + hidecategories(Navigation); + +var TgPawn r_PawnTarget; +var float m_fWalkableFloorZ; +var float m_fZoomDurationOverride; +var bool m_bCarryEnemies; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_PawnTarget; +} + +// Export UTgDevice_ShellSpin::execTurnTargetToOwner(FFrame&, void* const) +native function TurnTargetToOwner(); + +// Export UTgDevice_ShellSpin::execPredictChargeInterrupt(FFrame&, void* const) +native function bool PredictChargeInterrupt(Vector StartLocation, Vector endLocation); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x2A + if(Current.m_nDeviceType == 11077) + { + return false; + } + return (IsFiring()) || IsTimerActive('OutroLockoutTime'); + //return ReturnValue; +} + +simulated function OutroLockoutTime() +{ + local TgPawn TgP; + + TgP = TgPawn(Instigator); + // End:0x4F + if(TgP != none) + { + TgP.m_fZoomDurationOverride = 0.0000000; + } + //return; +} + +simulated state DeviceFiring +{ + simulated function OnValidTargetTouched(Actor Other) + { + local TgPawn TargetPawn, InstigatorPawn; + local float fChargeTimeRemaining; + local Vector vLocationOffset; + local Rotator rRotationOffset; + local TgDeviceFire FireMode; + local ImpactInfo Impact; + + // End:0x404 + if(m_bCarryEnemies) + { + // End:0x404 + if((((int(Role) == int(ROLE_Authority)) && r_PawnTarget == none) && Other != none) && Instigator != none) + { + TargetPawn = TgPawn(Other); + InstigatorPawn = TgPawn(Instigator); + fChargeTimeRemaining = GetRemainingTimeForTimer('FirePostHitDelay'); + FireMode = GetCurrentFire(); + // End:0x404 + if((((TargetPawn != none) && InstigatorPawn != none) && fChargeTimeRemaining > 0.0000000) && FireMode != none) + { + // End:0x1A7 + if(TargetPawn.IsCrowdControlImmune() || TargetPawn.SpecialAOEImmunity(m_HitProxy.Location, FireMode)) + { + // End:0x1A4 + if(TargetPawn.GetPropCurrentValue(116) == float(0)) + { + InterruptFiring(); + } + } + else + { + // End:0x404 + if(TargetPawn.CanBeGrabbed()) + { + vLocationOffset = Normal(InstigatorPawn.GetChargeDirection()); + vLocationOffset *= (1.1000000 * (InstigatorPawn.NativeGetCollisionRadius() + TargetPawn.NativeGetCollisionRadius())); + vLocationOffset.Z = InstigatorPawn.NativeGetCollisionHeight() * 0.6600000; + rRotationOffset = Rotator(vect(-1.0000000, 0.0000000, 0.0000000)); + r_PawnTarget = TargetPawn; + bNetDirty = true; + // End:0x404 + if(!PredictChargeInterrupt(r_PawnTarget.Location, InstigatorPawn.Location + vLocationOffset)) + { + r_PawnTarget.StartPhysGrab(InstigatorPawn, fChargeTimeRemaining, 1,, vLocationOffset, rRotationOffset); + Impact.bDirectHit = m_bUseDirectHitSpecial; + Impact.DeviceModeReference = FireMode; + Impact.HitActor = r_PawnTarget; + FireMode.ApplyHitSpecial(r_PawnTarget, Impact); + } + } + } + } + } + } + //return; + } + + simulated event ChargeTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) + { + local TgDeviceFire FireMode; + local ImpactInfo Impact; + + // End:0x22F + if(int(Role) == int(ROLE_Authority)) + { + // End:0x54 + if(r_PawnTarget == none) + { + super.ChargeTouch(Other, OtherComp, HitLocation, HitNormal); + } + else + { + // End:0x22F + if(Other != r_PawnTarget) + { + // End:0x22F + if(m_bCarryEnemies) + { + FireMode = GetCurrentFire(); + // End:0x22F + if((FireMode != none) && FireMode.IsValidTarget(Other)) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = FireMode; + Impact.HitActor = Other; + Impact.HitLocation = HitLocation; + Impact.HitNormal = HitNormal; + Impact.StartTrace = Owner.Location; + Impact.RayDir = -Impact.HitNormal; + FireMode.ApplyHitSpecial(Other, Impact, 10693); + } + } + } + } + } + //return; + } + + simulated event EndCharge() + { + local TgDeviceFire FireMode; + + // End:0xB7 + if((int(Role) == int(ROLE_Authority)) && r_PawnTarget != none) + { + // End:0xB7 + if(m_bCarryEnemies) + { + r_PawnTarget.EndPhysGrab(); + FireMode = GetCurrentFire(); + // End:0xA0 + if(FireMode != none) + { + FireMode.RemoveHitSpecial(r_PawnTarget, true); + } + r_PawnTarget = none; + bNetDirty = true; + } + } + super.EndCharge(); + //return; + } + + simulated function StartFiringLogic() + { + local TgPawn_Makoa makoaOwner; + + super.StartFiringLogic(); + makoaOwner = TgPawn_Makoa(Instigator); + // End:0x59 + if(makoaOwner != none) + { + makoaOwner.m_fShellSpinZoomOverride = 1.5000000; + } + //return; + } + + simulated function EndState(name NextStateName) + { + local TgPawn_Makoa makoaOwner; + + super.EndState(NextStateName); + makoaOwner = TgPawn_Makoa(Instigator); + // End:0x8A + if(makoaOwner != none) + { + makoaOwner.m_fZoomDurationOverride = m_fZoomDurationOverride; + makoaOwner.m_fShellSpinZoomOverride = 0.0000000; + } + //return; + } + stop; +} + +defaultproperties +{ + m_fWalkableFloorZ=0.7000000 + m_fZoomDurationOverride=0.1000000 + m_ChargeTimingType=ChargeFiringType.CFT_PostFire + m_vHitProxyRelativeLocation=(X=30.0000000,Y=0.0000000,Z=0.0000000) + m_bUsesOutroLockout=true + m_fOutroLockoutTime=0.3000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ShieldFernando.uc b/exported/TgGame/Classes/TgDevice_ShieldFernando.uc new file mode 100755 index 00000000..921c04b5 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ShieldFernando.uc @@ -0,0 +1,189 @@ +class TgDevice_ShieldFernando extends TgDevice_Toggle + native(ChampFernando) + hidecategories(Navigation); + +// Export UTgDevice_ShieldFernando::execHasEnoughPowerPool(FFrame&, void* const) +native function bool HasEnoughPowerPool(byte FireModeNum); + +// Export UTgDevice_ShieldFernando::execMustBeOnGroundToFire(FFrame&, void* const) +native function bool MustBeOnGroundToFire(); + +function InitMaxHealth() +{ + local TgPawn TgPOwner; + local TgEffectManager em; + local TgDeploy_ShieldFernando ShieldDeployable; + local TgDeviceFire ShieldDeviceFire; + local TgDevice CardDevice; + local TgEffect HealthBonusEffect; + local int I, J; + local float baseHealth, extraHealth, maxHealth; + + TgPOwner = TgPawn(Owner); + // End:0x522 + if(TgPOwner != none) + { + ShieldDeviceFire = GetCurrentFire(); + // End:0x77 + if(ShieldDeviceFire != none) + { + baseHealth = ShieldDeviceFire.GetCustomValue1(); + } + extraHealth = 0.0000000; + em = TgPOwner.r_EffectManager; + // End:0x32C + if(em != none) + { + I = 0; + J0xC8: + + // End:0x32C [Loop If] + if(I < em.s_AppliedEffectGroups.Length) + { + // End:0x31E + if((em.s_AppliedEffectGroups[I] != none) && em.s_AppliedEffectGroups[I].m_nType == 261) + { + J = 0; + J0x177: + + // End:0x31E [Loop If] + if(J < em.s_AppliedEffectGroups[I].m_Effects.Length) + { + HealthBonusEffect = em.s_AppliedEffectGroups[I].m_Effects[J]; + // End:0x310 + if((HealthBonusEffect != none) && HealthBonusEffect.m_nPropertyId == 304) + { + CardDevice = TgPOwner.GetDeviceById(em.s_AppliedEffectGroups[I].m_nSourceItemId); + // End:0x310 + if((CardDevice != none) && CardDevice.IsCard()) + { + extraHealth += HealthBonusEffect.GetProratedValue(); + } + } + ++J; + // [Loop Continue] + goto J0x177; + } + } + ++I; + // [Loop Continue] + goto J0xC8; + } + } + ShieldDeployable = TgDeploy_ShieldFernando(r_Deployable); + // End:0x3AD + if(ShieldDeployable != none) + { + extraHealth += float(ShieldDeployable.r_nToweringBarrierHealth); + extraHealth += float(ShieldDeployable.r_nAegisBonusHealth); + } + maxHealth = baseHealth + extraHealth; + // End:0x522 + if(r_Deployable.GetMaxHealth() != maxHealth) + { + // End:0x522 + if(r_Deployable.r_DRI != none) + { + r_Deployable.r_DRI.r_nHealthMaximum = int(maxHealth); + r_Deployable.r_DRI.r_nHealthCurrent = int(maxHealth); + r_Deployable.r_nHealth = r_Deployable.r_DRI.r_nHealthMaximum; + r_Deployable.r_DRI.bNetDirty = true; + } + } + } + //return; +} + +function CancelSafetyPeriodTimer() +{ + //return; +} + +simulated event bool CanBeCanceled() +{ + // End:0x32 + if(IsTimerActive('FirePostHitDelay')) + { + // End:0x32 + if(!IsTimerActive('CancelSafetyPeriodTimer')) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PrevStateName) + { + local TgPawn TgPOwner; + local TgPawn_Fernando Fernando; + + super.BeginState(PrevStateName); + // End:0x4F + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + SetTimer(0.5000000, false, 'CancelSafetyPeriodTimer'); + } + // End:0xF1 + if(int(Role) == int(ROLE_Authority)) + { + TgPOwner = TgPawn(Owner); + // End:0xA7 + if(r_Deployable != none) + { + // End:0xA7 + if(TgPOwner != none) + { + InitMaxHealth(); + } + } + Fernando = TgPawn_Fernando(Owner); + // End:0xF1 + if(Fernando != none) + { + Fernando.ShowShield(); + } + } + //return; + } + + simulated function EndState(name NextStateName) + { + super.EndState(NextStateName); + // End:0x50 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + ClearTimer('CancelSafetyPeriodTimer'); + } + //return; + } + + simulated event OnDeployableDestroyed(TgDeployable deployable) + { + local TgPawn_Fernando Fernando; + + // End:0x21 + if(deployable == r_Deployable) + { + InterruptFiring(); + } + Fernando = TgPawn_Fernando(Owner); + // End:0x6B + if(Fernando != none) + { + Fernando.HideShield(); + } + super(TgDevice).OnDeployableDestroyed(deployable); + //return; + } + stop; +} + +defaultproperties +{ + m_bForce3PViewWhileFiring=true + m_fDeployZOffset=-30.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ShieldMod.uc b/exported/TgGame/Classes/TgDevice_ShieldMod.uc new file mode 100755 index 00000000..1bcc0ea7 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ShieldMod.uc @@ -0,0 +1,3 @@ +class TgDevice_ShieldMod extends TgDevice + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_ShockPulse.uc b/exported/TgGame/Classes/TgDevice_ShockPulse.uc new file mode 100755 index 00000000..c3b7f23d --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ShockPulse.uc @@ -0,0 +1,11 @@ +class TgDevice_ShockPulse extends TgDevice + native(ChampGrohk) + hidecategories(Navigation); + +// Export UTgDevice_ShockPulse::execIsReloading(FFrame&, void* const) +native function bool IsReloading(); + +defaultproperties +{ + m_vProjectileSpawnOffset=(X=0.0000000,Y=4.0000000,Z=-9.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ShoulderBash.uc b/exported/TgGame/Classes/TgDevice_ShoulderBash.uc new file mode 100755 index 00000000..e6289ad6 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ShoulderBash.uc @@ -0,0 +1,158 @@ +class TgDevice_ShoulderBash extends TgDevice_Charge + native(ChampFlak) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var bool m_bHasHitTarget; + +// Export UTgDevice_ShoulderBash::execUsesTargetingMode(FFrame&, void* const) +native function bool UsesTargetingMode(); + +// Export UTgDevice_ShoulderBash::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +reliable server function ValidateChargeHit(Actor Other) +{ + // End:0x0F + if(m_bHasHitTarget) + { + return; + } + // End:0xB2 + if(ServerValidateChargeHit(Other)) + { + ApplyTouchHit(TgPawn(Instigator), Other.Location, Normal(Instigator.Location - Other.Location), Other); + InterruptFiring(); + } + //return; +} + +function ApplyTouchHit(TgPawn InstigatorPawn, Vector vHitLocation, Vector vHitNormal, Actor Target) +{ + local ImpactInfo Impact; + local TgDeviceFire FireMode; + local Vector chargeDirection; + + FireMode = GetCurrentFire(); + chargeDirection = Vector(GetChargeDirection()); + Impact.bDirectHit = false; + Impact.DeviceModeReference = FireMode; + Impact.HitActor = Target; + Impact.HitLocation = Target.Location - chargeDirection; + Impact.HitNormal = vHitNormal; + Impact.StartTrace = ((Instigator != none) ? Instigator.Location : vect(0.0000000, 0.0000000, 0.0000000)); + Impact.RayDir = -Impact.HitNormal; + // End:0x220 + if(!m_bHitOnce || s_HitActors.Find(Target) == -1) + { + ApplyDamageReduction(Impact); + FireMode.ApplyHit(Impact, Instigator); + s_HitActors.AddItem(Target); + } + //return; +} + +simulated function bool ShouldStopOnThisHit(Actor Other) +{ + local TgPawn pPawn; + + pPawn = TgPawn(Other); + // End:0x56 + if(pPawn != none) + { + // End:0x56 + if(int(pPawn.r_eChargeState) != int(0)) + { + return false; + } + } + return super.ShouldStopOnThisHit(Other); + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function OnStoppedChargeOnHit(Actor Other) + { + local TgPawn_Flak pFlak; + + super.OnStoppedChargeOnHit(Other); + // End:0x5A + if((int(Role) < int(ROLE_Authority)) && !m_bHasHitTarget) + { + ValidateChargeHit(Other); + m_bHasHitTarget = true; + } + else + { + // End:0x7A + if(int(Role) == int(ROLE_Authority)) + { + m_bHasHitTarget = true; + } + } + // End:0xD5 + if(Other != none) + { + pFlak = TgPawn_Flak(Instigator); + // End:0xD5 + if(pFlak != none) + { + pFlak.m_bUseShoulderBashRetrieve = true; + } + } + //return; + } + + simulated event StartCharge() + { + local TgPawn_Flak pFlak; + + pFlak = TgPawn_Flak(Instigator); + // End:0x4C + if(pFlak != none) + { + pFlak.m_bUseShoulderBashZoom = true; + } + m_bHasHitTarget = false; + super.StartCharge(); + //return; + } + + simulated event ChargeTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) + { + local TgDeviceFire FireMode; + local TgPawn InstigatorPawn; + local bool bValidHitLocation; + + FireMode = GetCurrentFire(); + InstigatorPawn = TgPawn(Instigator); + // End:0x15A + if(((InstigatorPawn != none) && FireMode != none) && FireMode.IsValidTarget(Other)) + { + bValidHitLocation = InstigatorPawn.VerifyChargeHit(HitLocation, HitNormal, Other.Location, Other); + // End:0x15A + if(bValidHitLocation) + { + OnValidTargetTouched(Other); + // End:0x15A + if(ShouldStopOnThisHit(Other)) + { + OnStoppedChargeOnHit(Other); + ApplyTouchHit(InstigatorPawn, HitLocation, HitNormal, Other); + } + } + } + //return; + } + stop; +} + +defaultproperties +{ + m_bStopOnHitType=ChargeStopOnHitType.CSHT_AnyValidTarget + m_ChargeTimingType=ChargeFiringType.CFT_PostFire + m_bApplyHitOnTouch=false + m_bIgnoreMovementCorrection=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_SiegeUnit.uc b/exported/TgGame/Classes/TgDevice_SiegeUnit.uc new file mode 100755 index 00000000..61c656dd --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_SiegeUnit.uc @@ -0,0 +1,28 @@ +class TgDevice_SiegeUnit extends TgDevice + native(ChampFlak) + hidecategories(Navigation); + +// Export UTgDevice_SiegeUnit::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +// Export UTgDevice_SiegeUnit::execMustBeOnGroundToFire(FFrame&, void* const) +native function bool MustBeOnGroundToFire(); + +simulated event bool ShouldCooldownAfterFire() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldInterruptInhand() +{ + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_bDeployAtFeetOnFailure=true + m_fBottomlessPitCheck=5000.0000000 + m_fDeployZOffset=25.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_SkyeInhand.uc b/exported/TgGame/Classes/TgDevice_SkyeInhand.uc new file mode 100755 index 00000000..67f154e4 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_SkyeInhand.uc @@ -0,0 +1,37 @@ +class TgDevice_SkyeInhand extends TgDevice + native(ChampSkye) + hidecategories(Navigation); + +// Export UTgDevice_SkyeInhand::execShouldInterruptStealth(FFrame&, void* const) +native function bool ShouldInterruptStealth(); + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=15.0000000,Y=0.0000000,Z=-4.0000000) + m_fWeaponBob=0.0000000 + m_vProjectileSpawnOffset=(X=21.0000000,Y=6.0000000,Z=-4.0000000) + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_SkyeInHand' + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetVert[1]=(KeyframeName="V100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetVert[2]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[2]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[2]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[1]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[1]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Skye.DeviceInhand' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.LightForceFeedback' + m_AccuracySettings=(bUsesAdvancedAccuracy=true,fMaxAccuracy=1.0000000,fMinAccuracy=0.9400000,fAccuracyLossPerShot=0.0100000,fAccuracyGainPerSec=0.6000000,fAccuracyGainDelay=0.2000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_SleightOfHand.uc b/exported/TgGame/Classes/TgDevice_SleightOfHand.uc new file mode 100755 index 00000000..a5e04fd4 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_SleightOfHand.uc @@ -0,0 +1,21 @@ +class TgDevice_SleightOfHand extends TgDevice + native(ChampAndroxus) + hidecategories(Navigation); + +var TgDevice m_InhandWeapon; + +simulated event bool ShouldCooldownAfterFire() +{ + m_InhandWeapon = TgPawn(Owner).GetDeviceByEqPoint(1); + // End:0x7B + if(m_InhandWeapon.m_bAmmoWasGiven) + { + m_InhandWeapon.m_bAmmoWasGiven = false; + return true; + } + else + { + return false; + } + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_SmokeScreen.uc b/exported/TgGame/Classes/TgDevice_SmokeScreen.uc new file mode 100755 index 00000000..615229c3 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_SmokeScreen.uc @@ -0,0 +1,6 @@ +class TgDevice_SmokeScreen extends TgDevice + native(ChampSkye) + hidecategories(Navigation); + +// Export UTgDevice_SmokeScreen::execShouldInterruptStealth(FFrame&, void* const) +native function bool ShouldInterruptStealth(); diff --git a/exported/TgGame/Classes/TgDevice_SmokeScreenMod.uc b/exported/TgGame/Classes/TgDevice_SmokeScreenMod.uc new file mode 100755 index 00000000..7372ce56 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_SmokeScreenMod.uc @@ -0,0 +1,18 @@ +class TgDevice_SmokeScreenMod extends TgDevice + native(Devices) + hidecategories(Navigation); + +var array m_ImmuneTargets; +var array m_ImmuneTimes; + +// Export UTgDevice_SmokeScreenMod::execApplyOnTouchEffect(FFrame&, void* const) +native function ApplyOnTouchEffect(Actor Target); + +// Export UTgDevice_SmokeScreenMod::execApplyOwnerTouchEffect(FFrame&, void* const) +native function ApplyOwnerTouchEffect(Actor Target); + +// Export UTgDevice_SmokeScreenMod::execApplyEffect(FFrame&, void* const) +native function ApplyEffect(TgDeploy_SmokeScreen smokeScreen, Actor Target); + +// Export UTgDevice_SmokeScreenMod::execRemoveEffect(FFrame&, void* const) +native function RemoveEffect(TgDeploy_SmokeScreen smokeScreen, Actor Target); diff --git a/exported/TgGame/Classes/TgDevice_Smother.uc b/exported/TgGame/Classes/TgDevice_Smother.uc new file mode 100755 index 00000000..55e66dad --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Smother.uc @@ -0,0 +1,3 @@ +class TgDevice_Smother extends TgDevice_SmokeScreenMod + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_SnakeToss.uc b/exported/TgGame/Classes/TgDevice_SnakeToss.uc new file mode 100755 index 00000000..c7b52eec --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_SnakeToss.uc @@ -0,0 +1,87 @@ +class TgDevice_SnakeToss extends TgDevice + native(ChampMalDamba) + hidecategories(Navigation); + +var int r_nAmmoCharge; +var TgDevice_MalDambaInhand m_CachedInhand; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_nAmmoCharge; +} + +simulated event bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +simulated function UpdateAmmoCharge() +{ + local TgDeviceFire FireMode; + + // End:0xC2 + if(m_CachedInhand != none) + { + FireMode = m_CachedInhand.GetCurrentFire(); + // End:0xC2 + if((FireMode != none) && (FireMode.m_nAmmoClipSize - (GetCurrentAmmoAmount())) > 0) + { + r_nAmmoCharge = FireMode.m_nAmmoClipSize - m_CachedInhand.GetCurrentAmmoAmount(); + } + } + //return; +} + +simulated function UseNow() +{ + // End:0x3D + if((Instigator != none) && Instigator.IsLocallyControlled()) + { + Use(); + } + //return; +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + // End:0xB0 + if(Dev.m_nDeviceType == 10828) + { + Dev.UnregisterDelegate(4, UseNow); + Dev.UnregisterDelegate(1, UpdateAmmoCharge); + } + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + // End:0xCC + if(Dev.m_nDeviceType == 10828) + { + m_CachedInhand = TgDevice_MalDambaInhand(Dev); + Dev.RegisterDelegate(4, UseNow); + Dev.RegisterDelegate(1, UpdateAmmoCharge); + } + //return; +} + +defaultproperties +{ + m_vProjectileSpawnOffset=(X=50.0000000,Y=12.0000000,Z=0.0000000) + m_nLinkedDeviceTypes[0]=10828 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_SniperMode.uc b/exported/TgGame/Classes/TgDevice_SniperMode.uc new file mode 100755 index 00000000..482c3ab3 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_SniperMode.uc @@ -0,0 +1,247 @@ +class TgDevice_SniperMode extends TgDevice_ToggleModeWithLockout + native(ChampKinessa) + hidecategories(Navigation); + +var TgPawn_Kinessa m_CachedKinessaOwner; +var TgDevice_KinessaInhand m_CachedKinessaInhandDev; +var bool m_bIsZoomed; + +// Export UTgDevice_SniperMode::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated function bool ShouldInterruptMount() +{ + return true; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return true; + //return ReturnValue; +} + +simulated event bool ShouldInterruptInhand() +{ + return false; + //return ReturnValue; +} + +simulated function RefreshZoomState(bool bZoomOn) +{ + local TgDeviceFire FireMode; + local float NewFOV, speedMult, chargeDelay; + + // End:0x1F2 + if(bZoomOn) + { + FireMode = GetCurrentFire(); + // End:0x89 + if(FireMode != none) + { + NewFOV = FireMode.GetCustomValue1(); + speedMult = FireMode.GetCustomValue2() / 100.0000000; + } + NewFOV = ((NewFOV > float(0)) ? NewFOV : 20.0000000); + // End:0xDF + if(m_CachedKinessaOwner == none) + { + m_CachedKinessaOwner = TgPawn_Kinessa(Owner); + } + // End:0x1EF + if(m_CachedKinessaOwner != none) + { + // End:0x161 + if(m_CachedKinessaInhandDev != none) + { + // End:0x161 + if(m_CachedKinessaInhandDev.GetCurrentFire() != none) + { + chargeDelay = m_CachedKinessaInhandDev.GetCurrentFire().GetCustomValue1(); + } + } + m_CachedKinessaOwner.SetZoomState(true, ((speedMult > 0.0000000) ? speedMult : 1.0000000), ((chargeDelay > 0.0000000) ? chargeDelay : 1.0000000)); + m_CachedKinessaOwner.SetWeaponZoom(NewFOV); + } + } + else + { + // End:0x24F + if(m_CachedKinessaOwner != none) + { + m_CachedKinessaOwner.SetZoomState(false, 1.0000000, 0.0000000); + m_CachedKinessaOwner.SetWeaponZoom(0.0000000); + } + } + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0xA4 + case 10828: + Dev.RegisterDelegate(1, CompleteInterrupt); + m_CachedKinessaInhandDev = TgDevice_KinessaInhand(Dev); + return; + // End:0xAC + case 11070: + // End:0xE8 + case 11041: + Dev.RegisterDelegate(2, CompleteInterrupt); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super(TgDevice_ToggleWithLockout).LinkedDeviceUnequipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0x88 + case 10828: + Dev.UnregisterDelegate(1, CompleteInterrupt); + return; + // End:0x90 + case 11070: + // End:0xCC + case 11041: + Dev.UnregisterDelegate(2, CompleteInterrupt); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated function bool IsPlayerToggleZoomSet() +{ + local TgPawn TgP; + local TgPlayerController TgPC; + + TgP = TgPawn(Instigator); + // End:0x94 + if(TgP != none) + { + TgPC = TgPlayerController(TgP.Controller); + // End:0x94 + if((TgPC != none) && TgPC.r_bToggleZoom == true) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated function CompleteInterrupt() +{ + m_bIsZoomed = false; + super(TgDevice_ToggleWithLockout).CompleteInterrupt(); + //return; +} + +simulated function bool InterceptSlotReleased(TgPlayerController TgController) +{ + // End:0x3E + if(IsPlayerToggleZoomSet()) + { + m_bIsZoomed = !m_bIsZoomed; + // End:0x3E + if(m_bIsZoomed == false) + { + StopFire(); + } + } + return super(TgDevice).InterceptSlotReleased(TgController); + //return ReturnValue; +} + +simulated event bool IsFunctionallyToggleDevice() +{ + // End:0x0F + if(IsPlayerToggleZoomSet()) + { + return true; + } + return super(TgDevice).IsFunctionallyToggleDevice(); + //return ReturnValue; +} + +simulated function bool ShouldStopActionOnOffhandSlotReleased() +{ + // End:0x0F + if(IsPlayerToggleZoomSet()) + { + return false; + } + return super(TgDevice).ShouldStopActionOnOffhandSlotReleased(); + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + // End:0x42 + if(m_CachedKinessaInhandDev != none) + { + m_CachedKinessaInhandDev.m_AimVectorAssistMaxAssistanceDegrees = vect2d(0.0000000, 0.0000000); + } + super.BeginState(PreviousStateName); + //return; + } + + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + RefreshZoomState(true); + //return; + } + + simulated function EndState(name NextStateName) + { + // End:0x61 + if(m_CachedKinessaInhandDev != none) + { + m_CachedKinessaInhandDev.m_AimVectorAssistMaxAssistanceDegrees = m_CachedKinessaInhandDev.Class.default.m_AimVectorAssistMaxAssistanceDegrees; + } + RefreshZoomState(false); + super.EndState(NextStateName); + //return; + } + stop; +} + +defaultproperties +{ + m_bBuildupShouldInterruptStealth=false + m_bPreFireShouldInterruptStealth=false + m_bFireShouldInterruptStealth=false + m_bCancelingShouldInterruptStealth=false + m_nLinkedDeviceTypes[0]=11077 + m_nLinkedDeviceTypes[1]=10828 + m_nLinkedDeviceTypes[2]=10828 + m_nLinkedDeviceTypes[3]=11041 + m_nLinkedDeviceTypes[4]=11070 + m_AimAssistKeyframesMagnetVert=none + m_AimAssistKeyframesMagnetHoriz=none + m_nAimAssistPriorityWhileFiring=2 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Soar.uc b/exported/TgGame/Classes/TgDevice_Soar.uc new file mode 100755 index 00000000..12ca9d56 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Soar.uc @@ -0,0 +1,73 @@ +class TgDevice_Soar extends TgDevice + native(ChampEvie) + hidecategories(Navigation); + +simulated event bool CanBeCanceled() +{ + local float firePostHitTime; + + // End:0x4A + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0x4A + if(firePostHitTime > 0.5000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return super.CanBeInterrupted() || IsInState('DeviceFiring'); + //return ReturnValue; +} + +simulated event bool ShouldMountCancelFiring() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x39 + if((IsFiring()) && Current.m_nDeviceType == 11077) + { + return true; + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function EndState(name NextStateName) + { + super.EndState(NextStateName); + // End:0x59 + if(Instigator != none) + { + Instigator.Velocity.Z = 0.0000000; + } + //return; + } + stop; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit + m_bPostFireShouldInterruptStealth=false + m_AimAssistKeyframesMagnetVert=none + m_AimAssistKeyframesMagnetHoriz=none + m_AimAssistKeyframesFriction=none + m_AimAssistKeyframesTrackingAccHoriz=none + m_AimAssistKeyframesTrackingAngleHoriz=none + m_AimAssistKeyframesTrackingAccVert=none + m_AimAssistKeyframesTrackingAngleVert=none + m_nAimAssistPriorityWhileFiring=2 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Somersault.uc b/exported/TgGame/Classes/TgDevice_Somersault.uc new file mode 100755 index 00000000..cde3e605 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Somersault.uc @@ -0,0 +1,39 @@ +class TgDevice_Somersault extends TgDevice + native(ChampCassie) + hidecategories(Navigation); + +var TgDevice m_DodgeRollDevice; + +simulated event bool StartFire() +{ + local TgTimerManager TimerManager; + + m_DodgeRollDevice = TgPawn(Owner).GetDeviceByEqPoint(4); + TimerManager = m_DodgeRollDevice.GetCooldownTimerManager(); + // End:0x8D + if(TimerManager.IsActiveTimers()) + { + return super.StartFire(); + } + else + { + return false; + } + //return ReturnValue; +} + +simulated event bool ShouldCooldownAfterFire() +{ + m_DodgeRollDevice = TgPawn(Owner).GetDeviceByEqPoint(4); + // End:0x7C + if(m_DodgeRollDevice.m_bCooldownWasModified) + { + m_DodgeRollDevice.m_bCooldownWasModified = false; + return true; + } + else + { + return false; + } + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_SpaceJam.uc b/exported/TgGame/Classes/TgDevice_SpaceJam.uc new file mode 100755 index 00000000..9b1eccdb --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_SpaceJam.uc @@ -0,0 +1,3 @@ +class TgDevice_SpaceJam extends TgDevice + native(ChampAstro) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_SpaceTime.uc b/exported/TgGame/Classes/TgDevice_SpaceTime.uc new file mode 100755 index 00000000..d569b2ec --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_SpaceTime.uc @@ -0,0 +1,248 @@ +class TgDevice_SpaceTime extends TgDevice + native(ChampAstro) + hidecategories(Navigation); + +var TgCollisionProxy_Mesh m_BeamCollisionProxy; +var array m_ActorsInRange; + +simulated event bool CanBeCanceled() +{ + return false; + //return ReturnValue; +} + +simulated event bool IsFunctionallyToggleDevice() +{ + return true; + //return ReturnValue; +} + +simulated function bool ShouldStopActionOnOffhandSlotReleased() +{ + return false; + //return ReturnValue; +} + +simulated event DeliverHit(ImpactInfo Impact) +{ + return; + //return; +} + +simulated function HandleDeviceFormStartFire(int nDeviceModeNum, float fRefireTime, const out AimData Aim) +{ + local TgPawn_Astro pAstro; + + // End:0x9D + if(int(Role) == int(ROLE_Authority)) + { + pAstro = TgPawn_Astro(Owner); + // End:0x9D + if(pAstro != none) + { + pAstro.r_mUltimateAimRotation = Rotator(Aim.AimVector); + pAstro.bNetDirty = true; + } + } + super.HandleDeviceFormStartFire(nDeviceModeNum, fRefireTime, Aim); + //return; +} + +simulated function InterruptOtherDevices(TgPawn TgP) +{ + super.InterruptOtherDevices(TgP); + // End:0x5F + if(int(Role) == int(ROLE_Authority)) + { + // End:0x5F + if(TgP != none) + { + TgP.InterruptDeviceFiringByClass(Class'TgGame.TgDevice_Lightspeed', true); + } + } + //return; +} + +simulated function FireAmmunition() +{ + local TgPawn pHitActor; + local TgDeviceFire FireMode; + local ImpactInfo pImpact; + local int I; + + FireMode = GetCurrentFire(); + // End:0x126 + if(FireMode != none) + { + I = 0; + J0x2E: + + // End:0x11C [Loop If] + if(I < m_ActorsInRange.Length) + { + pHitActor = m_ActorsInRange[I]; + // End:0x10E + if(pHitActor != none) + { + pImpact.bDirectHit = true; + pImpact.DeviceModeReference = FireMode; + pImpact.HitActor = pHitActor; + FireMode.ApplyHit(pImpact, Instigator); + } + I++; + // [Loop Continue] + goto J0x2E; + } + ClearTouchedActors(); + } + super.FireAmmunition(); + //return; +} + +function OnProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgDeviceFire pFireMode; + local ImpactInfo Impact; + + pFireMode = GetCurrentFire(); + // End:0x13F + if((pFireMode != none) && pFireMode.IsValidTarget(Other)) + { + // End:0x13F + if(Other != none) + { + // End:0x13F + if(m_ActorsInRange.Find(Other) == -1) + { + m_ActorsInRange.AddItem(TgPawn(Other)); + Impact.bDirectHit = true; + Impact.DeviceModeReference = pFireMode; + Impact.HitActor = Other; + pFireMode.ApplyHitSpecial(Other, Impact); + } + } + } + //return; +} + +function OnProxyUnTouch(Actor Other) +{ + local TgDeviceFire pFireMode; + + pFireMode = GetCurrentFire(); + // End:0xC3 + if((pFireMode != none) && pFireMode.IsValidTarget(Other)) + { + // End:0xC3 + if(Other != none) + { + // End:0xC3 + if(m_ActorsInRange.Find(Other) != -1) + { + m_ActorsInRange.RemoveItem(Other); + pFireMode.RemoveHitSpecial(Other, true); + } + } + } + //return; +} + +simulated function ClearTouchedActors() +{ + local TgPawn pPawn; + local TgDeviceFire pFireMode; + + pFireMode = GetCurrentFire(); + // End:0x9B + if(pFireMode != none) + { + J0x23: + + // End:0x9B [Loop If] + if(m_ActorsInRange.Length > 0) + { + pPawn = m_ActorsInRange[0]; + // End:0x82 + if(pPawn != none) + { + pFireMode.RemoveHitSpecial(pPawn, true); + } + m_ActorsInRange.RemoveItem(pPawn); + // [Loop Continue] + goto J0x23; + } + } + //return; +} + +simulated event SpawnCollisionProxy() +{ + local AimData Aim; + local TgPawn_Astro pAstro; + local TgDeviceFire pFireMode; + local Vector NewScale, SpawnOffset; + + pAstro = TgPawn_Astro(Instigator); + pFireMode = GetCurrentFire(); + GetCachedAim(Aim); + // End:0x2C1 + if((int(Role) == int(ROLE_Authority)) && pAstro != none) + { + SpawnOffset = Aim.AimVector * 60.0000000; + m_BeamCollisionProxy = Spawn(Class'TgGame.TgCollisionProxy_Mesh', self,, Instigator.Location + SpawnOffset, Rotator(Aim.AimVector),, true); + m_BeamCollisionProxy.SpawnMesh(8086); + // End:0x21E + if(m_BeamCollisionProxy != none) + { + // End:0x21E + if(pFireMode != none) + { + NewScale.X = pFireMode.GetRange(); + NewScale.Y = pFireMode.GetCustomValue1() * float(16); + NewScale.Z = NewScale.Y; + m_BeamCollisionProxy.ScaleCollisionMesh(NewScale); + } + } + m_BeamCollisionProxy.SetBase(Instigator); + m_BeamCollisionProxy.__ProxyTouch__Delegate = OnProxyTouch; + m_BeamCollisionProxy.__ProxyUnTouch__Delegate = OnProxyUnTouch; + m_BeamCollisionProxy.DelegatesUpdated(); + } + //return; +} + +simulated function DestroyCollisionProxy() +{ + m_BeamCollisionProxy.Destroy(); + m_BeamCollisionProxy = none; + //return; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + super.StartFiringLogic(); + Instigator.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + Instigator.Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + SpawnCollisionProxy(); + //return; + } + + simulated function StopFiringLogic() + { + super.StopFiringLogic(); + DestroyCollisionProxy(); + ClearTouchedActors(); + //return; + } + stop; +} + +defaultproperties +{ + m_bAimThroughReticule=true + m_AimAssistKeyframesMagnetVert=none + m_AimAssistKeyframesMagnetHoriz=none + m_nAimAssistPriorityWhileFiring=2 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Spite.uc b/exported/TgGame/Classes/TgDevice_Spite.uc new file mode 100755 index 00000000..d61882ca --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Spite.uc @@ -0,0 +1,606 @@ +class TgDevice_Spite extends TgDevice_Charge + native(ChampDarklord) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +enum SpiteAnimState +{ + SAS_Intro, // 0 + SAS_HitChain, // 1 + SAS_MissOutro, // 2 + SAS_BounceOffOutro, // 3 + SAS_InterruptOutro, // 4 + SAS_MAX // 5 +}; + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var TgPawn_Darklord m_CachedDarklord; +var bool m_bWaitingForServerHit; +var bool m_bHasStartedChainAttacks; +var bool m_bHasBounced; +var bool m_bHasRefundedEnergy; +var bool r_bApplyPercentDamage; +var int m_nNumHits; +var TgPawn_Character m_HitCharacter; +var const float m_fJoinViewLerpTime; +var const float m_fJoinSeparationDistance; +var const float m_fJoinMoveTweenTime; +var const float m_fJoinMinGroundOffset; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bApplyPercentDamage; +} + +// Export UTgDevice_Spite::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +// Export UTgDevice_Spite::execShouldForce3P(FFrame&, void* const) +native function bool ShouldForce3P(TgDeviceForm DeviceForm, optional bool bOnlyCheckDeviceForm = false); + +// Export UTgDevice_Spite::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +// Export UTgDevice_Spite::execShouldLiftInterrupt(FFrame&, void* const) +native function bool ShouldLiftInterrupt(); + +// Export UTgDevice_Spite::execGetCachedFiringPostHitDelay(FFrame&, void* const) +native function float GetCachedFiringPostHitDelay(); + +simulated function bool HasCachedDarklord() +{ + // End:0x38 + if(m_CachedDarklord == none) + { + m_CachedDarklord = TgPawn_Darklord(Instigator); + return m_CachedDarklord != none; + } + return true; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x2A + if(Current.m_nDeviceType == 11077) + { + return false; + } + return (IsFiring()) || IsTimerActive('ApplyChainHit'); + //return ReturnValue; +} + +simulated function bool ShouldAbortChainAttacks() +{ + // End:0x248 + if((HasCachedDarklord()) && m_bHasStartedChainAttacks) + { + // End:0x129 + if(((((((m_HitCharacter == none) || !m_HitCharacter.IsAliveAndWell()) || int(m_HitCharacter.r_eCurrentStunType) == int(0)) || m_HitCharacter.IsDebuffImmune()) || m_HitCharacter.GetPropCurrentValue(132) > 0.0000000) || m_HitCharacter.GetPropCurrentValue(60) > 0.0000000) || m_HitCharacter.GetPropCurrentValue(61) > 0.0000000) + { + return true; + } + // End:0x248 + if((((((!m_CachedDarklord.IsAliveAndWell() || m_CachedDarklord.r_JoinTarget != m_HitCharacter) || int(m_CachedDarklord.r_eCurrentStunType) != int(0)) || m_CachedDarklord.r_bSilenced) || int(m_CachedDarklord.r_CurrentPolymorph) != int(0)) || m_CachedDarklord.GetPropCurrentValue(132) > 0.0000000) || m_CachedDarklord.r_bIsLifted) + { + return true; + } + } + return false; + //return ReturnValue; +} + +reliable server function ServerStartChainAttacks(Actor Other) +{ + // End:0x0F + if(m_bHasStartedChainAttacks) + { + return; + } + // End:0x4B + if(ServerValidateChargeHit(Other)) + { + StartChainAttacks(Other); + ClientStartChainAttacks(Other); + } + //return; +} + +simulated function OnInterruptEvent() +{ + // End:0x17 + if(ShouldAbortChainAttacks()) + { + AbortChainAttacks(); + } + super(TgDevice).OnInterruptEvent(); + //return; +} + +function AbortChainAttacks() +{ + // End:0xD7 + if((int(Role) == int(ROLE_Authority)) && m_bHasStartedChainAttacks) + { + m_CachedDarklord.FlashGeneric5(r_nDeviceInstanceId, int(CurrentFireMode), true); + // End:0x87 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic5(); + } + // End:0xD7 + if(m_HitCharacter != none) + { + FinishChainAttacks(false, false); + // End:0xD7 + if(int(WorldInfo.NetMode) != int(NM_Standalone)) + { + ClientFinishChainAttacks(false, false); + } + } + } + //return; +} + +function CheckForRefund() +{ + // End:0x4C + if(((int(Role) == int(ROLE_Authority)) && !m_bHasStartedChainAttacks) && !m_bHasRefundedEnergy) + { + m_bHasRefundedEnergy = true; + RefundEnergy(); + } + //return; +} + +simulated function BounceOff() +{ + local Vector NewVel; + local Rotator adjustedDir; + local float Angle; + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x2DB + if(((HasCachedDarklord()) && m_HitCharacter != none) && FireMode != none) + { + m_bHasBounced = true; + NewVel = m_CachedDarklord.Location - m_HitCharacter.Location; + NewVel.Z = 0.0000000; + NewVel = Normal(NewVel); + adjustedDir = Rotator(NewVel); + Angle = (90.0000000 * float(adjustedDir.Pitch)) / float(16384); + Angle = float(Clamp(int(Angle + FireMode.GetCustomValue2()), -90, 90)); + adjustedDir.Pitch = int((Angle / 90.0000000) * 16384.0000000); + NewVel = Vector(adjustedDir); + NewVel *= FireMode.GetCustomValue1(); + // End:0x21B + if(m_CachedDarklord.IsAliveAndWell()) + { + m_CachedDarklord.QueueBounce(NewVel); + } + NewVel.X = -NewVel.X; + NewVel.Y = -NewVel.Y; + // End:0x2DB + if(m_HitCharacter.IsAliveAndWell()) + { + m_HitCharacter.QueueBounce(NewVel); + } + } + //return; +} + +reliable client simulated function ClientStartChainAttacks(Actor Other) +{ + // End:0x5A + if(!m_bHasStartedChainAttacks) + { + m_bWaitingForServerHit = false; + ClearTimer('FirePostHitDelay'); + StartChainAttacks(Other); + SetTimer(GetCachedFiringPostHitDelay(), false, 'FirePostHitDelay'); + } + //return; +} + +simulated function StartChainAttacks(Actor Other) +{ + local TgDeviceFire FireMode; + local Vector vBackDir, vSelfLocation, vTargetLocation, vGroundLocation, vGroundNormal; + + // End:0x0F + if(m_bHasStartedChainAttacks) + { + return; + } + m_bHasStartedChainAttacks = true; + FireMode = GetCurrentFire(); + // End:0x44A + if((HasCachedDarklord()) && FireMode != none) + { + m_HitCharacter = TgPawn_Character(Other); + ApplyStunHit(); + SetTimer(FireMode.GetCustomValue5(), true, 'ApplyChainHit'); + vBackDir = -Vector(m_rLastChargeDirection); + vBackDir.Z = 0.0000000; + vBackDir = Normal(vBackDir); + vTargetLocation = m_CachedDarklord.Location; + vSelfLocation = vTargetLocation + (m_fJoinSeparationDistance * vBackDir); + // End:0x217 + if(m_HitCharacter.FindGround(vTargetLocation, vGroundLocation, vGroundNormal, m_fJoinMinGroundOffset, 1.5000000)) + { + // End:0x217 + if(vTargetLocation.Z < (vGroundLocation.Z + m_fJoinMinGroundOffset)) + { + vTargetLocation.Z = vGroundLocation.Z + m_fJoinMinGroundOffset; + } + } + // End:0x2EF + if(m_CachedDarklord.FindGround(vSelfLocation, vGroundLocation, vGroundNormal, m_fJoinMinGroundOffset, 1.5000000)) + { + // End:0x2EF + if(vSelfLocation.Z < (vGroundLocation.Z + m_fJoinMinGroundOffset)) + { + vSelfLocation.Z = vGroundLocation.Z + m_fJoinMinGroundOffset; + } + } + // End:0x368 + if(vTargetLocation.Z < vSelfLocation.Z) + { + vTargetLocation.Z = vSelfLocation.Z; + } + else + { + vSelfLocation.Z = vTargetLocation.Z; + } + m_CachedDarklord.JoinToTarget(m_HitCharacter, vSelfLocation, vTargetLocation, m_fJoinMoveTweenTime); + m_CachedDarklord.FlashGeneric3(r_nDeviceInstanceId, int(CurrentFireMode), true, 1); + // End:0x44A + if(c_DeviceForm != none) + { + c_DeviceForm.Generic3(1); + } + } + //return; +} + +function ApplyHitToTarget(int nHitSpecialSituationalType) +{ + local ImpactInfo Impact; + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x1F8 + if(((HasCachedDarklord()) && m_HitCharacter != none) && FireMode != none) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = GetCurrentFire(); + Impact.HitActor = m_HitCharacter; + Impact.HitLocation = m_HitCharacter.Location; + Impact.HitNormal = Normal(m_HitCharacter.Location - m_CachedDarklord.Location); + Impact.StartTrace = m_HitCharacter.Location; + Impact.RayDir = -Impact.HitNormal; + FireMode.ApplyHitSpecial(m_HitCharacter, Impact, nHitSpecialSituationalType); + } + //return; +} + +simulated function ApplyStunHit() +{ + ApplyHitToTarget(10693); + //return; +} + +function RemoveStunHit() +{ + local TgDeviceFire FireMode; + + // End:0x6E + if((HasCachedDarklord()) && m_HitCharacter != none) + { + m_CachedDarklord.RemoveForcedViewTarget(m_CachedDarklord); + m_HitCharacter.RemoveForcedViewTarget(m_CachedDarklord); + } + FireMode = GetCurrentFire(); + // End:0xE0 + if(((HasCachedDarklord()) && m_HitCharacter != none) && FireMode != none) + { + FireMode.RemoveHitSpecial(m_HitCharacter, true, 10693); + } + //return; +} + +simulated function ApplyChainHit() +{ + local TgDeviceFire FireMode; + + // End:0x4D + if((((int(Role) == int(ROLE_Authority)) && HasCachedDarklord()) && m_bHasStartedChainAttacks) && ShouldAbortChainAttacks()) + { + AbortChainAttacks(); + return; + } + FireMode = GetCurrentFire(); + // End:0xF3 + if((HasCachedDarklord()) && FireMode != none) + { + m_nNumHits++; + // End:0xA9 + if(r_bApplyPercentDamage) + { + ApplyHitToTarget(11081); + } + else + { + ApplyHitToTarget(10694); + } + // End:0xF3 + if(float(m_nNumHits) >= FireMode.GetCustomValue4()) + { + FinishChainAttacks(true, true); + } + } + //return; +} + +reliable client simulated function ClientAbortWaitingForServerHit() +{ + // End:0x23 + if(m_bWaitingForServerHit) + { + m_bWaitingForServerHit = false; + InterruptFiring(); + } + //return; +} + +reliable client simulated function ClientFinishChainAttacks(bool bBounceOff, bool bApplyFinalHit) +{ + // End:0x2B + if(m_bHasStartedChainAttacks) + { + FinishChainAttacks(bBounceOff, bApplyFinalHit); + } + //return; +} + +simulated function FinishChainAttacks(bool bBounceOff, bool bApplyFinalHit) +{ + local bool bTargetDied; + + RemoveStunHit(); + bTargetDied = !m_HitCharacter.IsAliveAndWell(); + // End:0x4F + if(bTargetDied) + { + bBounceOff = false; + } + // End:0x66 + if(bBounceOff) + { + BounceOff(); + } + m_bHasStartedChainAttacks = false; + m_CachedDarklord.UnjoinFromTarget(); + // End:0xA8 + if(bApplyFinalHit) + { + ApplyFinalHit(); + } + InterruptFiring(); + ClearTimer('ApplyChainHit'); + m_HitCharacter = none; + // End:0x1F2 + if(HasCachedDarklord()) + { + m_CachedDarklord.FlashGeneric3(r_nDeviceInstanceId, int(CurrentFireMode), true, byte(((bBounceOff) ? 3 : 4))); + // End:0x16A + if(c_DeviceForm != none) + { + c_DeviceForm.Generic3(byte(((bBounceOff) ? 3 : 4))); + } + m_CachedDarklord.FlashGeneric4(r_nDeviceInstanceId, int(CurrentFireMode), true, ((bTargetDied) ? 1 : 0)); + // End:0x1F2 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic4(((bTargetDied) ? 1 : 0)); + } + } + //return; +} + +simulated function ApplyFinalHit() +{ + ApplyHitToTarget(11080); + //return; +} + +function RefundEnergy() +{ + local TgDeviceFire FireMode; + local ImpactInfo Impact; + + FireMode = GetCurrentFire(); + // End:0xC5 + if(FireMode != none) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = FireMode; + Impact.HitActor = Instigator; + FireMode.ApplyHitSpecial(Instigator, Impact, 11082); + } + //return; +} + +simulated state DeviceBuildup +{ + simulated function BeginState(name PreviousStateName) + { + m_bHasBounced = false; + m_bHasStartedChainAttacks = false; + m_bHasRefundedEnergy = false; + m_nNumHits = 0; + super.BeginState(PreviousStateName); + // End:0xB5 + if(HasCachedDarklord()) + { + m_CachedDarklord.FlashGeneric3(r_nDeviceInstanceId, int(CurrentFireMode), true, 0); + // End:0xB5 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic3(0); + } + } + //return; + } + stop; +} + +simulated state DeviceFiring +{ + simulated function OnStoppedChargeOnHit(Actor Other) + { + // End:0xDB + if(!m_bHasStartedChainAttacks) + { + // End:0x67 + if(((int(Role) < int(ROLE_Authority)) && !m_bWaitingForServerHit) && !m_bHasStartedChainAttacks) + { + ServerStartChainAttacks(Other); + m_bWaitingForServerHit = true; + } + else + { + // End:0xDB + if((int(Role) == int(ROLE_Authority)) && !m_bHasStartedChainAttacks) + { + StartChainAttacks(Other); + // End:0xDB + if(int(WorldInfo.NetMode) != int(NM_Standalone)) + { + ClientStartChainAttacks(Other); + } + } + } + } + ClearTimer('FirePreHitDelay'); + FirePreHitDelay(); + //return; + } + + simulated event StartCharge() + { + // End:0x71 + if(HasCachedDarklord()) + { + m_CachedDarklord.FlashGeneric1(r_nDeviceInstanceId, int(CurrentFireMode), true); + // End:0x71 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic1(); + } + } + SetTimer((GetChargeTime()) * 0.8000000, false, 'PreStopCharge'); + super.StartCharge(); + //return; + } + + simulated function PreStopCharge() + { + // End:0x71 + if(HasCachedDarklord()) + { + m_CachedDarklord.FlashGeneric2(r_nDeviceInstanceId, int(CurrentFireMode), true); + // End:0x71 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic2(); + } + } + //return; + } + + simulated event EndCharge() + { + // End:0x11 + if(!m_bCharging) + { + return; + } + // End:0x46 + if(IsTimerActive('PreStopCharge')) + { + ClearTimer('PreStopCharge'); + PreStopCharge(); + } + // End:0x64 + if(int(Role) == int(ROLE_Authority)) + { + CheckForRefund(); + } + // End:0xF9 + if(((HasCachedDarklord()) && !m_bHasStartedChainAttacks) && !m_bWaitingForServerHit) + { + m_CachedDarklord.FlashGeneric3(r_nDeviceInstanceId, int(CurrentFireMode), true, 2); + // End:0xF9 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic3(2); + } + } + super.EndCharge(); + //return; + } + + simulated function FirePostHitDelay() + { + // End:0x17 + if(m_bWaitingForServerHit) + { + AbortChainAttacks(); + } + super.FirePostHitDelay(); + //return; + } + + simulated function Tick(float DeltaSeconds) + { + super.Tick(DeltaSeconds); + // End:0x5E + if((((int(Role) == int(ROLE_Authority)) && HasCachedDarklord()) && m_bHasStartedChainAttacks) && ShouldAbortChainAttacks()) + { + AbortChainAttacks(); + } + //return; + } + + simulated function OnInterruptEvent() + { + // End:0x17 + if(ShouldAbortChainAttacks()) + { + AbortChainAttacks(); + } + super(TgDevice).OnInterruptEvent(); + //return; + } + stop; +} + +defaultproperties +{ + m_fJoinViewLerpTime=0.4000000 + m_fJoinSeparationDistance=75.0000000 + m_fJoinMoveTweenTime=0.2500000 + m_fJoinMinGroundOffset=160.0000000 + m_bStopOnHitType=ChargeStopOnHitType.CSHT_GodOnly + m_ChargeTimingType=ChargeFiringType.CFT_PreFire + m_bUsePhysFlying=true + m_bIgnoreHumanoids=false + m_bIgnoreMovementCorrection=true + m_vHitProxySizeOffset=(X=0.0000000,Y=12.0000000,Z=0.0000000) + s_fServerValidationSizeMultiplier=3.0000000 + s_bIgnoreReceivedAim=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Spray.uc b/exported/TgGame/Classes/TgDevice_Spray.uc new file mode 100755 index 00000000..c9734028 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Spray.uc @@ -0,0 +1,85 @@ +class TgDevice_Spray extends TgDevice + hidecategories(Navigation); + +var bool m_bMissedSpray; + +simulated event bool ShouldCooldownAfterFire() +{ + return true; + //return ReturnValue; +} + +function AuthStartCooldown(optional int nMode = -1, optional float fCooldownTimeOverride = -1.0000000) +{ + local TgDeviceFire FireMode; + + // End:0x95 + if(m_bMissedSpray && fCooldownTimeOverride < 0.0000000) + { + // End:0x63 + if(nMode >= 0) + { + FireMode = GetDeviceFire(nMode); + } + else + { + FireMode = GetCurrentFire(); + } + // End:0x95 + if(FireMode != none) + { + fCooldownTimeOverride = 0.2500000; + } + } + super.AuthStartCooldown(nMode, fCooldownTimeOverride); + //return; +} + +simulated function PlayClientFireFx(Vector HitLocation, int nSocketIndex, bool bSuccessfulHit, float fRefireTime) +{ + local TgDeviceForm_Spray sprayForm; + + super.PlayClientFireFx(HitLocation, nSocketIndex, bSuccessfulHit, fRefireTime); + // End:0xD5 + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + m_bMissedSpray = !bSuccessfulHit; + // End:0xD2 + if(!bSuccessfulHit) + { + sprayForm = TgDeviceForm_Spray(c_DeviceForm); + // End:0xD2 + if(sprayForm != none) + { + sprayForm.PlaySprayFX(bSuccessfulHit); + } + } + } + else + { + // End:0x14E + if((int(Role) < int(ROLE_Authority)) && !bSuccessfulHit) + { + sprayForm = TgDeviceForm_Spray(c_DeviceForm); + // End:0x14E + if(sprayForm != none) + { + sprayForm.PlaySprayFX(bSuccessfulHit); + } + } + } + //return; +} + +function OnInstantShotVerified(ImpactInfo VerifiedPrimaryImpact) +{ + super.OnInstantShotVerified(VerifiedPrimaryImpact); + m_bMissedSpray = VerifiedPrimaryImpact.HitLocation == vect(0.0000000, 0.0000000, 0.0000000); + //return; +} + +defaultproperties +{ + m_bStartFireShouldEnterCombat=false + m_bFireShouldEnterCombat=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_StarSeeker.uc b/exported/TgGame/Classes/TgDevice_StarSeeker.uc new file mode 100755 index 00000000..43381127 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_StarSeeker.uc @@ -0,0 +1,3 @@ +class TgDevice_StarSeeker extends TgDevice + native(ChampAstro) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_Stealth.uc b/exported/TgGame/Classes/TgDevice_Stealth.uc new file mode 100755 index 00000000..9dfa7fdf --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Stealth.uc @@ -0,0 +1,112 @@ +class TgDevice_Stealth extends TgDevice + native(ChampSkye) + hidecategories(Navigation); + +var bool m_bIsInCombat; +var bool m_bCanFireInCombat; + +// Export UTgDevice_Stealth::execShouldInterruptStealth(FFrame&, void* const) +native function bool ShouldInterruptStealth(); + +// Export UTgDevice_Stealth::execCanFireWhileMounted(FFrame&, void* const) +native function bool CanFireWhileMounted(); + +// Export UTgDevice_Stealth::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated event bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +simulated event bool StartFire() +{ + local bool bReturn; + local TgPawn TgP; + local TgPawn_Character TgPChar; + local TgPawn TgPOwner; + + // End:0x63 + if(int(Role) == int(ROLE_Authority)) + { + TgPOwner = TgPawn(Owner); + // End:0x63 + if(TgPOwner != none) + { + TgPOwner.s_fDamageTakenDuringStealth = 0.0000000; + } + } + bReturn = super.StartFire(); + TgP = TgPawn(Instigator); + // End:0xE6 + if((TgP != none) && TgP.r_bCanStartStealthInCombat) + { + TgP.ExitCombat(); + } + TgPChar = TgPawn_Character(Instigator); + // End:0x130 + if(TgPChar != none) + { + TgPChar.RemoveStickyBombs(); + } + return bReturn; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + local float firePostHitTime; + + // End:0x4A + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0x4A + if(firePostHitTime > 0.5000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x20 + if((IsFiring()) && !CanBeCanceled()) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated function bool ShouldCancelStealth() +{ + return false; + //return ReturnValue; +} + +simulated function bool ShouldInterruptMount() +{ + return true; + //return ReturnValue; +} + +simulated event bool ShouldMountCancelFiring() +{ + // End:0x0F + if(CanFireWhileMounted()) + { + return false; + } + return super.ShouldMountCancelFiring(); + //return ReturnValue; +} + +defaultproperties +{ + m_bCanFireInCombat=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Stim.uc b/exported/TgGame/Classes/TgDevice_Stim.uc new file mode 100755 index 00000000..b8cb7d0f --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Stim.uc @@ -0,0 +1,28 @@ +class TgDevice_Stim extends TgDevice + native(Devices) + hidecategories(Navigation); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return false; + //return ReturnValue; +} + +simulated function bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldInterruptInhand() +{ + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit + m_bPostFireShouldInterruptStealth=false + m_bAbilityRequiresInhandResync=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Survival.uc b/exported/TgGame/Classes/TgDevice_Survival.uc new file mode 100755 index 00000000..ff45a4ec --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Survival.uc @@ -0,0 +1,39 @@ +class TgDevice_Survival extends TgDevice + native(ChampDrogoz) + hidecategories(Navigation); + +var TgDevice m_ThrustDevice; + +simulated event bool StartFire() +{ + local TgTimerManager TimerManager; + + m_ThrustDevice = TgPawn(Owner).GetDeviceByEqPoint(4); + TimerManager = m_ThrustDevice.GetCooldownTimerManager(); + // End:0x8D + if(TimerManager.IsActiveTimers()) + { + return super.StartFire(); + } + else + { + return false; + } + //return ReturnValue; +} + +simulated event bool ShouldCooldownAfterFire() +{ + m_ThrustDevice = TgPawn(Owner).GetDeviceByEqPoint(4); + // End:0x7C + if(m_ThrustDevice.m_bCooldownWasModified) + { + m_ThrustDevice.m_bCooldownWasModified = false; + return true; + } + else + { + return false; + } + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_TeamDevice.uc b/exported/TgGame/Classes/TgDevice_TeamDevice.uc new file mode 100755 index 00000000..1e2be0a4 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_TeamDevice.uc @@ -0,0 +1,403 @@ +class TgDevice_TeamDevice extends TgDevice + native(Devices) + hidecategories(Navigation); + +// Export UTgDevice_TeamDevice::execGetCooldownTimerManager(FFrame&, void* const) +native function TgTimerManager GetCooldownTimerManager(); + +// Export UTgDevice_TeamDevice::execGetTaskForce(FFrame&, void* const) +native function TgRepInfo_TaskForce GetTaskForce(); + +// Export UTgDevice_TeamDevice::execCheckAndUpdateCooldown(FFrame&, void* const) +native function CheckAndUpdateCooldown(); + +function FlashCooldown(byte nMode) +{ + local TgPawn TgPawn; + + TgPawn = TgPawn(Instigator); + // End:0x5E + if(TgPawn != none) + { + TgPawn.FlashCooldown(r_nDeviceInstanceId, int(nMode)); + } + //return; +} + +event ToggleCooldownEffects(bool bOnCooldown) +{ + // End:0xAF + if((int(Role) == int(ROLE_Authority)) && int(r_eEquippedAt) == int(5)) + { + // End:0xAF + if((Instigator != none) && TgRepInfo_Player(Instigator.PlayerReplicationInfo) != none) + { + TgRepInfo_Player(Instigator.PlayerReplicationInfo).UpdateUltimateIsReady(GetCooldownRemaining()); + } + } + //return; +} + +function AuthStartCooldown(optional int nMode = -1, optional float fCooldownTimeOverride = -1.0000000) +{ + local TgTimerManager TimerManager; + local float fCooldownTime; + local TgPawn TgPawn; + local int AbilityCooldownTimerIndex; + + // End:0x36 + if(nMode < 0) + { + nMode = int(CurrentFireMode); + } + AbilityCooldownTimerIndex = 0; + // End:0x77 + if(int(Role) == int(ROLE_Authority)) + { + AbilityCooldownTimerIndex = (nMode << 24) | r_nDeviceId; + } + // End:0x84 + if(LogDebugInfo()) + { + } + TgPawn = TgPawn(Instigator); + // End:0xE6 + if(TgPawn != none) + { + // End:0xD3 + if(TgPawn.m_bCheatNoRecharge) + { + return; + } + TeamFlashCooldown(CurrentFireMode); + } + TimerManager = GetCooldownTimerManager(); + fCooldownTime = 0.0000000; + // End:0x21A + if(!TimerManager.IsSet(AbilityCooldownTimerIndex)) + { + fCooldownTime = ((fCooldownTimeOverride >= float(0)) ? fCooldownTimeOverride : m_FireMode[int(CurrentFireMode)].GetCooldownTime()); + // End:0x1FE + if(fCooldownTime > float(0)) + { + TimerManager.RegisterForEvents(AbilityCooldownTimerIndex, self, 'TeamCooldownTimerExpired'); + TimerManager.Start(AbilityCooldownTimerIndex, fCooldownTime); + } + TeamCooldownStart(nMode, fCooldownTime); + } + // End:0x25C + if(!TimerManager.IsSet(AbilityCooldownTimerIndex)) + { + TeamCooldownTimerExpired(nMode, 0); + } + //return; +} + +event ResetCooldown(int nMode, optional float fCooldownTimeOverride = -1.0000000) +{ + local TgTimerManager TimerManager; + local float fCooldownTime; + local int AbilityCooldownTimerIndex; + + AbilityCooldownTimerIndex = 0; + // End:0x4A + if(int(Role) == int(ROLE_Authority)) + { + AbilityCooldownTimerIndex = (nMode << 24) | r_nDeviceId; + } + // End:0x57 + if(LogDebugInfo()) + { + } + TimerManager = GetCooldownTimerManager(); + fCooldownTime = ((fCooldownTimeOverride >= 0.0000000) ? fCooldownTimeOverride : m_FireMode[int(CurrentFireMode)].GetCooldownTime()); + // End:0x157 + if(fCooldownTime > 0.0000000) + { + // End:0x121 + if(!TimerManager.IsSet(AbilityCooldownTimerIndex)) + { + StartCooldown(int(CurrentFireMode), fCooldownTime); + return; + } + else + { + TimerManager.Update(AbilityCooldownTimerIndex, fCooldownTime); + } + } + else + { + // End:0x1C0 + if(TimerManager.IsSet(AbilityCooldownTimerIndex)) + { + TimerManager.Close(AbilityCooldownTimerIndex, false); + TeamCooldownTimerExpired(nMode, 0); + } + } + TeamCooldownReset(nMode, fCooldownTime); + //return; +} + +simulated event EndCooldown() +{ + local TgTimerManager TimerManager; + local int AbilityCooldownTimerIndex; + + AbilityCooldownTimerIndex = 0; + // End:0x32 + if(int(Role) == int(ROLE_Authority)) + { + AbilityCooldownTimerIndex = r_nDeviceId; + } + TimerManager = GetCooldownTimerManager(); + // End:0xC0 + if((TimerManager != none) && TimerManager.IsSet(AbilityCooldownTimerIndex)) + { + TimerManager.Close(AbilityCooldownTimerIndex, false); + TeamCooldownTimerExpired(AbilityCooldownTimerIndex, 0); + } + TeamCooldownEnd(); + //return; +} + +function TeamCooldownTimerExpired(int nTimerId, TgTimerManager.TGT_EVENT eEvent) +{ + local TgRepInfo_Player PRI; + local TgDevice theDevice; + local TgRepInfo_TaskForce Taskforce; + local int I; + + Taskforce = GetTaskForce(); + // End:0x59 + if((int(Role) < int(ROLE_Authority)) || Taskforce == none) + { + CooldownTimerExpired(nTimerId, eEvent); + } + else + { + I = 0; + J0x64: + + // End:0x18E [Loop If] + if(I < Taskforce.GetPlayerCount()) + { + PRI = Taskforce.GetPlayer(I); + // End:0x180 + if((PRI != none) && PRI.r_PawnOwner != none) + { + theDevice = PRI.r_PawnOwner.GetDeviceById(r_nDeviceId); + // End:0x180 + if(theDevice != none) + { + theDevice.CooldownTimerExpired(nTimerId, eEvent); + } + } + I++; + // [Loop Continue] + goto J0x64; + } + } + //return; +} + +function TeamCooldownStart(int nMode, float fCooldownTime) +{ + local TgRepInfo_Player PRI; + local TgDevice_TeamDevice theDevice; + local TgRepInfo_TaskForce Taskforce; + local int I; + + Taskforce = GetTaskForce(); + // End:0x65 + if((int(Role) < int(ROLE_Authority)) || Taskforce == none) + { + ToggleCooldownEffects(true); + ClientStartCooldown(int(CurrentFireMode), fCooldownTime); + } + else + { + I = 0; + J0x70: + + // End:0x1C4 [Loop If] + if(I < Taskforce.GetPlayerCount()) + { + PRI = Taskforce.GetPlayer(I); + // End:0x1B6 + if((PRI != none) && PRI.r_PawnOwner != none) + { + theDevice = TgDevice_TeamDevice(PRI.r_PawnOwner.GetDeviceById(r_nDeviceId)); + // End:0x1B6 + if(theDevice != none) + { + theDevice.ToggleCooldownEffects(true); + theDevice.ClientStartCooldown(int(CurrentFireMode), fCooldownTime); + } + } + I++; + // [Loop Continue] + goto J0x70; + } + } + //return; +} + +function TeamCooldownReset(int nMode, float fCooldownTime) +{ + local TgRepInfo_Player PRI; + local TgDevice theDevice; + local TgRepInfo_TaskForce Taskforce; + local int I; + + Taskforce = GetTaskForce(); + // End:0x5A + if((int(Role) < int(ROLE_Authority)) || Taskforce == none) + { + ClientResetCooldown(int(CurrentFireMode), fCooldownTime); + } + else + { + I = 0; + J0x65: + + // End:0x190 [Loop If] + if(I < Taskforce.GetPlayerCount()) + { + PRI = Taskforce.GetPlayer(I); + // End:0x182 + if((PRI != none) && PRI.r_PawnOwner != none) + { + theDevice = PRI.r_PawnOwner.GetDeviceById(r_nDeviceId); + // End:0x182 + if(theDevice != none) + { + theDevice.ClientResetCooldown(int(CurrentFireMode), fCooldownTime); + } + } + I++; + // [Loop Continue] + goto J0x65; + } + } + //return; +} + +function TeamCooldownEnd() +{ + local TgRepInfo_Player PRI; + local TgDevice theDevice; + local TgRepInfo_TaskForce Taskforce; + local int I; + + Taskforce = GetTaskForce(); + // End:0x46 + if((int(Role) < int(ROLE_Authority)) || Taskforce == none) + { + ClientEndCooldown(); + } + else + { + I = 0; + J0x51: + + // End:0x168 [Loop If] + if(I < Taskforce.GetPlayerCount()) + { + PRI = Taskforce.GetPlayer(I); + // End:0x15A + if((PRI != none) && PRI.r_PawnOwner != none) + { + theDevice = PRI.r_PawnOwner.GetDeviceById(r_nDeviceId); + // End:0x15A + if(theDevice != none) + { + theDevice.ClientEndCooldown(); + } + } + I++; + // [Loop Continue] + goto J0x51; + } + } + //return; +} + +function TeamGotoState(name NewState) +{ + local TgRepInfo_Player PRI; + local TgDevice theDevice; + local TgRepInfo_TaskForce Taskforce; + local int I; + + Taskforce = GetTaskForce(); + // End:0x4A + if((int(Role) < int(ROLE_Authority)) || Taskforce == none) + { + GotoState(NewState); + } + else + { + I = 0; + J0x55: + + // End:0x170 [Loop If] + if(I < Taskforce.GetPlayerCount()) + { + PRI = Taskforce.GetPlayer(I); + // End:0x162 + if((PRI != none) && PRI.r_PawnOwner != none) + { + theDevice = PRI.r_PawnOwner.GetDeviceById(r_nDeviceId); + // End:0x162 + if(theDevice != none) + { + theDevice.GotoState(NewState); + } + } + I++; + // [Loop Continue] + goto J0x55; + } + } + //return; +} + +function TeamFlashCooldown(byte nMode) +{ + local TgRepInfo_Player PRI; + local TgDevice_TeamDevice theDevice; + local TgRepInfo_TaskForce Taskforce; + local int I; + + Taskforce = GetTaskForce(); + // End:0x4F + if((int(Role) < int(ROLE_Authority)) || Taskforce == none) + { + FlashCooldown(nMode); + } + else + { + I = 0; + J0x5A: + + // End:0x183 [Loop If] + if(I < Taskforce.GetPlayerCount()) + { + PRI = Taskforce.GetPlayer(I); + // End:0x175 + if((PRI != none) && PRI.r_PawnOwner != none) + { + theDevice = TgDevice_TeamDevice(PRI.r_PawnOwner.GetDeviceById(r_nDeviceId)); + // End:0x175 + if(theDevice != none) + { + theDevice.FlashCooldown(nMode); + } + } + I++; + // [Loop Continue] + goto J0x5A; + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgDevice_Telepunch.uc b/exported/TgGame/Classes/TgDevice_Telepunch.uc new file mode 100755 index 00000000..7c39d76c --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Telepunch.uc @@ -0,0 +1,491 @@ +class TgDevice_Telepunch extends TgDevice + native(ChampDemon) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var TgPawn_Demon m_CachedDemon; +var TgPawn_Character m_HitCharacter; +var bool m_bLiftApplied; +var bool m_bStealthApplied; +var float m_fLerpTime; +var float m_fTeleportPreferedDistance; +var float m_fTargetLockTime; + +// Export UTgDevice_Telepunch::execGetRequiredEnergyToFire(FFrame&, void* const) +native function float GetRequiredEnergyToFire(); + +// Export UTgDevice_Telepunch::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +// Export UTgDevice_Telepunch::execShouldForce3P(FFrame&, void* const) +native function bool ShouldForce3P(TgDeviceForm DeviceForm, optional bool bOnlyCheckDeviceForm = false); + +// Export UTgDevice_Telepunch::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +simulated function bool ShouldConsumePowerPoolOnStartFire() +{ + return true; + //return ReturnValue; +} + +simulated function bool HasCachedDemon() +{ + // End:0x38 + if(m_CachedDemon == none) + { + m_CachedDemon = TgPawn_Demon(Instigator); + return m_CachedDemon != none; + } + return true; + //return ReturnValue; +} + +simulated function ImpactInfo CalcWeaponFire(AimData Aim, optional out array ImpactList) +{ + local ImpactInfo Impact; + + // End:0xC5 + if(((HasCachedDemon()) && m_CachedDemon.m_TelepunchTarget != none) && !m_CachedDemon.m_TelepunchTarget.IsAliveAndWell() || m_CachedDemon.m_TelepunchTarget.IsCrowdControlImmune()) + { + return super.CalcWeaponFire(Aim, ImpactList); + } + Impact.bDirectHit = true; + Impact.DeviceModeReference = GetCurrentFire(); + Impact.HitActor = m_CachedDemon.m_TelepunchTarget; + Impact.HitLocation = m_CachedDemon.m_TelepunchTarget.Location; + Impact.HitNormal = Normal(m_CachedDemon.Location - m_CachedDemon.m_TelepunchTarget.Location); + Impact.StartTrace = m_CachedDemon.m_TelepunchTarget.Location; + Impact.RayDir = -Impact.HitNormal; + ImpactList.AddItem(Impact); + return Impact; + //return ReturnValue; +} + +simulated event DeliverHit(ImpactInfo Impact) +{ + local TeleportParams TelParams; + local AimData Aim; + local float fCollisionRadius, fLerpTime; + local TgDeviceFire FireMode; + local Vector vTemp, vTeleportLocation; + local TgPawn_Character Target; + local bool bValidTeleportLocation; + + FireMode = GetCurrentFire(); + Target = TgPawn_Character(Impact.HitActor); + // End:0x557 + if((((m_HitCharacter == none) && FireMode != none) && Target != none) && HasCachedDemon()) + { + // End:0x557 + if(int(Role) == int(ROLE_Authority)) + { + GetCachedAim(Aim); + fCollisionRadius = m_CachedDemon.GetCollisionRadius(); + vTemp = Impact.HitActor.Location - m_CachedDemon.Location; + vTemp.Z = 0.0000000; + vTemp = Normal(vTemp); + TelParams.vTargetLocation = Target.Location - ((vTemp * m_fTeleportPreferedDistance) * float(16)); + TelParams.vTargetLocation.Z += (m_fTeleportPreferedDistance / 6.0000000); + TelParams.rTargetRotation = Rotator(vTemp); + TelParams.bPlayFx = true; + TelParams.bDoBackTrace = true; + TelParams.vBackTraceDir = Normal(Impact.HitActor.Location - TelParams.vTargetLocation); + TelParams.fBackTraceIncrement = fCollisionRadius; + TelParams.fBackTraceMaxDist = fCollisionRadius * 20.0000000; + TelParams.fMovementCorrectionDisableTime = 0.3000000; + bValidTeleportLocation = m_CachedDemon.AdvancedTeleport(TelParams, vTeleportLocation, true); + // End:0x3EB + if(!bValidTeleportLocation) + { + bValidTeleportLocation = true; + vTeleportLocation = Target.Location + (TelParams.vBackTraceDir * 0.1000000); + } + // End:0x4ED + if(bValidTeleportLocation) + { + m_CachedDemon.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + m_HitCharacter = Target; + fLerpTime = GetLerpToTargetTime(vTeleportLocation); + LerpToTarget(m_HitCharacter, vTeleportLocation, fLerpTime); + // End:0x4C7 + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + ClientLerpToTarget(m_HitCharacter, vTeleportLocation, fLerpTime); + } + ApplyLift(m_HitCharacter); + ApplyStealth(m_CachedDemon); + } + m_CachedDemon.ConsumePowerPool(self, 10014, m_CachedDemon.GetMaxEnergy() - FireMode.GetShotPowerCost(10014)); + } + } + //return; +} + +simulated function float GetLerpToTargetTime(Vector vTargetLocation) +{ + local TgDeviceFire FireMode; + local float fDist, fTime, fMinTime, fMaxTime, fMinDist, fMaxDist; + + FireMode = GetCurrentFire(); + // End:0x1BD + if((HasCachedDemon()) && FireMode != none) + { + fMinTime = FireMode.GetCustomValue1(); + fMaxTime = FireMode.GetCustomValue2(); + fMinDist = FireMode.GetCustomValue3(); + fMaxDist = FireMode.GetCustomValue4(); + fDist = VSize(m_CachedDemon.Location - vTargetLocation) / float(16); + // End:0x13E + if(fDist <= fMinTime) + { + fTime = fMinTime; + } + else + { + // End:0x16B + if(fDist >= fMaxDist) + { + fTime = fMaxTime; + } + else + { + fTime = Lerp(fMinTime, fMaxTime, (fDist - fMinDist) / (fMaxDist - fMinDist)); + } + } + return fTime; + } + return 0.5000000; + //return ReturnValue; +} + +simulated function LerpToTarget(TgPawn_Character Target, Vector vTargetLocation, float fLerpTime) +{ + local TgDeviceFire FireMode; + + m_fLerpTime = fLerpTime; + SetTimer(m_fLerpTime - 0.2500000, false, 'FadeOutUltFx'); + FireMode = GetCurrentFire(); + // End:0x162 + if(((HasCachedDemon()) && Target != none) && FireMode != none) + { + ClearTimer('AltFirePostHitDelay'); + SetTimer(m_fLerpTime + FireMode.GetCustomValue5(), false, 'AltFirePostHitDelay'); + SetTimer(0.0100000, false, 'ResetPostHitDelay'); + SetTimer(m_fLerpTime, false, 'PostTeleportPreHit'); + m_CachedDemon.AddForcedViewTarget(Target, 0.2500000, 0.2500000 + m_fLerpTime, self, 0.0000000); + m_CachedDemon.StartPhysTween(vTargetLocation, m_fLerpTime, 2, false, true); + } + //return; +} + +simulated function FadeOutUltFx() +{ + m_CachedDemon.FlashGeneric2(r_nDeviceInstanceId, int(CurrentFireMode), true, 0); + // End:0x66 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic2(0); + } + //return; +} + +simulated function AltFirePostHitDelay() +{ + //return; +} + +reliable client simulated function ClientLerpToTarget(TgPawn_Character Target, Vector vTargetLocation, float fLerpTime) +{ + LerpToTarget(Target, vTargetLocation, fLerpTime); + //return; +} + +simulated function ResetPostHitDelay() +{ + ClearTimer('FirePostHitDelay'); + SetTimer(GetTimerRate('AltFirePostHitDelay') - GetTimerCount('AltFirePostHitDelay'), false, 'FirePostHitDelay'); + ClearTimer('AltFirePostHitDelay'); + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x2A + if(Current.m_nDeviceType == 11077) + { + return false; + } + return ((IsFiring()) || IsPostTeleportPreHitActive()) || IsPostTeleportLockOutActive(); + //return ReturnValue; +} + +simulated function bool IsPostTeleportPreHitActive() +{ + return IsTimerActive('PostTeleportPreHit'); + //return ReturnValue; +} + +simulated function PostTeleportPreHit() +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x7C + if(((HasCachedDemon()) && m_HitCharacter != none) && FireMode != none) + { + RemoveLift(m_HitCharacter); + RemoveStealth(m_CachedDemon); + SetTimer(0.0100000, false, 'DelayedSlam'); + } + SetTimer(FireMode.GetCustomValue5() + 0.0100000, false, 'PostTeleportLockOut'); + //return; +} + +simulated function bool IsPostTeleportLockOutActive() +{ + return IsTimerActive('PostTeleportLockOut'); + //return ReturnValue; +} + +simulated function PostTeleportLockOut() +{ + // End:0x9F + if(HasCachedDemon()) + { + m_HitCharacter = none; + m_CachedDemon.RemoveForcedViewTarget(self); + // End:0x9F + if(m_CachedDemon.IsAliveAndWell() && int(m_CachedDemon.Physics) == int(13)) + { + m_CachedDemon.SetPhysics(2); + } + } + //return; +} + +function ApplyLift(TgPawn_Character Target) +{ + local TgDeviceFire FireMode; + + // End:0xC0 + if(!m_bLiftApplied) + { + m_bLiftApplied = true; + ApplyHitToTarget(Target, 10693); + FireMode = GetCurrentFire(); + // End:0xC0 + if((Target != none) && FireMode != none) + { + Target.AddForcedViewTarget(m_CachedDemon, 0.2500000, m_fLerpTime + FireMode.GetCustomValue5(), self); + } + } + //return; +} + +function RemoveLift(TgPawn_Character Target) +{ + // End:0x31 + if(m_bLiftApplied) + { + m_bLiftApplied = false; + RemoveHitFromTarget(Target, 10693); + } + //return; +} + +function ApplyStealth(TgPawn_Character Target) +{ + // End:0x33 + if(!m_bStealthApplied) + { + m_bStealthApplied = true; + ApplyHitToTarget(Target, 11080); + } + //return; +} + +function RemoveStealth(TgPawn_Character Target) +{ + // End:0x31 + if(m_bStealthApplied) + { + m_bStealthApplied = false; + RemoveHitFromTarget(Target, 11080); + } + //return; +} + +function DelayedSlam() +{ + ApplySlam(m_HitCharacter); + //return; +} + +function ApplySlam(TgPawn_Character Target) +{ + ApplyHitToTarget(Target, 10694); + //return; +} + +function ApplyHitToTarget(TgPawn_Character Target, int nHitSpecialSituationalType) +{ + local ImpactInfo Impact; + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x20E + if((((int(Role) == int(ROLE_Authority)) && HasCachedDemon()) && Target != none) && FireMode != none) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = GetCurrentFire(); + Impact.HitActor = Target; + Impact.HitLocation = Target.Location; + Impact.HitNormal = Normal(m_CachedDemon.Location - Target.Location); + Impact.StartTrace = Target.Location; + Impact.RayDir = -Impact.HitNormal; + FireMode.ApplyHitSpecial(Target, Impact, nHitSpecialSituationalType); + } + //return; +} + +function RemoveHitFromTarget(TgPawn_Character Target, int nHitSpecialSituationalType) +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x8C + if((((int(Role) == int(ROLE_Authority)) && HasCachedDemon()) && Target != none) && FireMode != none) + { + FireMode.RemoveHitSpecial(Target, true, nHitSpecialSituationalType); + } + //return; +} + +simulated function ConfirmTelepunchTarget() +{ + // End:0x4A + if(HasCachedDemon()) + { + m_CachedDemon.ServerNotifyTelepunchTarget(m_CachedDemon.m_TelepunchTarget); + } + //return; +} + +simulated function OnInterruptEvent() +{ + AbortTelepunch(); + super.OnInterruptEvent(); + //return; +} + +simulated function AbortTelepunch() +{ + RemoveLift(m_HitCharacter); + // End:0xFC + if(HasCachedDemon()) + { + RemoveStealth(m_CachedDemon); + m_CachedDemon.RemoveForcedViewTarget(self); + // End:0xBA + if(m_CachedDemon.IsAliveAndWell() && int(m_CachedDemon.Physics) == int(13)) + { + m_CachedDemon.SetPhysics(2); + } + m_CachedDemon.r_bIsUltTargeting = false; + m_CachedDemon.bNetDirty = true; + } + ClearTimer('PostTeleportPreHit'); + ClearTimer('FirePostHitDelay'); + ClearTimer('PostTeleportLockOut'); + //return; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgDeviceFire FireMode; + + // End:0x217 + if(HasCachedDemon()) + { + m_CachedDemon.m_bUseTelepunchZoom = true; + m_CachedDemon.FlashGeneric1(r_nDeviceInstanceId, int(CurrentFireMode), true, 1); + // End:0x94 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic1(1); + } + m_CachedDemon.FlashGeneric2(r_nDeviceInstanceId, int(CurrentFireMode), true, 1); + // End:0xFA + if(c_DeviceForm != none) + { + c_DeviceForm.Generic2(1); + } + m_CachedDemon.m_TelepunchTarget = none; + m_CachedDemon.ServerNotifyTelepunchTarget(none); + m_CachedDemon.r_bIsUltTargeting = true; + m_CachedDemon.bNetDirty = true; + m_CachedDemon.OnUltStarted(); + FireMode = GetCurrentFire(); + // End:0x217 + if((FireMode != none) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + SetTimer((GetFiringPreHitDelay(int(CurrentFireMode))) - m_fTargetLockTime, false, 'ConfirmTelepunchTarget'); + } + } + super.StartFiringLogic(); + //return; + } + + simulated function StopFiringLogic() + { + // End:0x6E + if(HasCachedDemon()) + { + m_CachedDemon.m_bUseTelepunchZoom = false; + m_CachedDemon.bNetDirty = true; + m_CachedDemon.OnUltFinished(); + } + m_HitCharacter = none; + super.StopFiringLogic(); + //return; + } + + simulated function FirePreHitDelay() + { + // End:0xB5 + if(HasCachedDemon()) + { + m_CachedDemon.FlashGeneric1(r_nDeviceInstanceId, int(CurrentFireMode), true, 0); + // End:0x73 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic1(0); + } + m_CachedDemon.r_bIsUltTargeting = false; + m_CachedDemon.bNetDirty = true; + } + CacheAim(); + super.FirePreHitDelay(); + //return; + } + + simulated function OnInterruptEvent() + { + AbortTelepunch(); + super(TgDevice).OnInterruptEvent(); + //return; + } + stop; +} + +defaultproperties +{ + m_fTeleportPreferedDistance=6.0000000 + m_fTargetLockTime=0.2500000 + s_bIgnoreReceivedAim=true + m_bDisableLagCompensation=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Tempest.uc b/exported/TgGame/Classes/TgDevice_Tempest.uc new file mode 100755 index 00000000..e82eed38 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Tempest.uc @@ -0,0 +1,185 @@ +class TgDevice_Tempest extends TgDevice_HitPulse + native(ChampGrohk) + hidecategories(Navigation); + +// Export UTgDevice_Tempest::execCanFireIfLeftMouseDown(FFrame&, void* const) +native function bool CanFireIfLeftMouseDown(); + +simulated event bool CanBeInterrupted() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return GetTimerCount('PersistTimer') > 0.5000000; + //return ReturnValue; +} + +simulated event DeliverQueuedPendingHits() +{ + local TgDeviceFire FireMode; + local TgPawn_Character TgP; + local int I; + + // End:0x184 + if(PendingImpactList.Length > 0) + { + TgP = TgPawn_Character(Owner); + FireMode = GetCurrentFire(); + // End:0x184 + if((TgP != none) && FireMode != none) + { + I = 0; + J0x6B: + + // End:0x184 [Loop If] + if(I < PendingImpactList.Length) + { + // End:0x176 + if(PendingImpactList[I].HitActor != none) + { + TgP.FlashArcing(r_nDeviceInstanceId, int(CurrentFireMode), PendingImpactList[I].HitActor.Location, TgP.Location, PendingImpactList[I].HitActor, int(r_eEquippedAt), m_nSocketIndex, false); + } + ++I; + // [Loop Continue] + goto J0x6B; + } + } + } + super(TgDevice).DeliverQueuedPendingHits(); + //return; +} + +simulated function PersistTimer() +{ + local float fTimingError, fPostHitDelay; + local TgDeviceFire FireMode; + + // End:0x19 + if(m_IsBeingInterrupted) + { + super.PersistTimer(); + return; + } + // End:0x49 + if(LogDebugInfo()) + { + FireMode = GetCurrentFire(); + // End:0x49 + if(FireMode != none) + { + } + } + ClearTimer('PersistTimer'); + ClearTimer('PulseHit'); + // End:0xB4 + if(m_bCarryPreFireToPostFire) + { + fTimingError = WorldInfo.TimeSeconds - m_fFiringTimer; + } + else + { + fTimingError = 0.0000000; + } + fPostHitDelay = GetCachedFiringPostHitDelay(); + m_fFiringTimer = (WorldInfo.TimeSeconds + (fPostHitDelay / CustomTimeDilation)) - fTimingError; + m_fTimeStampAccountedFor = WorldInfo.TimeSeconds; + m_fTimeAccountedFor = 0.0000000; + fPostHitDelay = FMax(0.0000000, fPostHitDelay - (fTimingError * CustomTimeDilation)); + // End:0x194 + if(LogDebugInfo()) + { + } + // End:0x1D2 + if(s_WhileFiringDeviceMode != none) + { + s_WhileFiringDeviceMode.ApplyEffectType(Instigator, 10456); + } + // End:0x1FF + if(fPostHitDelay > 0.0000000) + { + SetTimer(fPostHitDelay, false, 'FirePostHitDelay'); + } + else + { + bPendingFire = false; + FirePostHitDelay(); + } + //return; +} + +simulated function bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + local TgPawn TgP; + + super.BeginState(PreviousStateName); + TgP = TgPawn_Character(Instigator); + // End:0x8A + if(TgP != none) + { + TgP.m_fZoomDistOverride = self.GetCurrentFire().GetCustomValue1(); + } + //return; + } + + simulated function bool ShouldRefire(TgDeviceFire FireMode, const out AimData Aim) + { + return false; + //return ReturnValue; + } + + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + // End:0x73 + if(s_WhileFiringDeviceMode != none) + { + s_WhileFiringDeviceMode.RemoveEffectType(Instigator, false, 10455); + s_WhileFiringDeviceMode.ApplyHitSpecial(Instigator); + } + //return; + } + + simulated function StopFiringLogic() + { + // End:0x3A + if(s_WhileFiringDeviceMode != none) + { + s_WhileFiringDeviceMode.RemoveHitSpecial(Instigator, true); + } + super.StopFiringLogic(); + //return; + } + + simulated function EndState(name NextStateName) + { + local TgPawn TgP; + + super.EndState(NextStateName); + TgP = TgPawn(Instigator); + // End:0x62 + if(TgP != none) + { + TgP.m_fZoomDistOverride = 0.0000000; + } + //return; + } + stop; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PersistTime + m_bAlwaysStartCooldown=false + m_bDisableLagCompensation=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_TheLaw.uc b/exported/TgGame/Classes/TgDevice_TheLaw.uc new file mode 100755 index 00000000..f4002c63 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_TheLaw.uc @@ -0,0 +1,11 @@ +class TgDevice_TheLaw extends TgDevice + native(ChampLex) + hidecategories(Navigation); + +var float m_ExecutePercentage; +var Rotator AimRotation; + +defaultproperties +{ + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Lex.DeviceTheLaw' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Thrust.uc b/exported/TgGame/Classes/TgDevice_Thrust.uc new file mode 100755 index 00000000..29342c72 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Thrust.uc @@ -0,0 +1,87 @@ +class TgDevice_Thrust extends TgDevice_Charge + native(ChampDrogoz) + hidecategories(Navigation); + +// Export UTgDevice_Thrust::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x35 + if((Current != none) && Current.m_bHandDevice) + { + return false; + } + return super.ShouldLockFiring(Current); + //return ReturnValue; +} + +simulated event float GetChargeRange() +{ + local float upwardsDistUU, forwardsDistUU; + + upwardsDistUU = GetCurrentFire().GetCustomValue2() * float(16); + forwardsDistUU = GetCurrentFire().GetCustomValue1() * float(16); + return Sqrt((upwardsDistUU * upwardsDistUU) + (forwardsDistUU * forwardsDistUU)); + //return ReturnValue; +} + +simulated function bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgPawn_Drogoz drogozOwner; + + drogozOwner = TgPawn_Drogoz(Owner); + // End:0x4C + if(drogozOwner != none) + { + drogozOwner.m_bThrusterIsBlocking = true; + } + super.StartFiringLogic(); + //return; + } + + simulated function StopFiringLogic() + { + local TgPawn_Drogoz drogozOwner; + + drogozOwner = TgPawn_Drogoz(Owner); + // End:0x4C + if(drogozOwner != none) + { + drogozOwner.m_bThrusterIsBlocking = false; + } + super.StopFiringLogic(); + //return; + } + + simulated event EndCharge() + { + local TgPawn PawnOwner; + + super.EndCharge(); + PawnOwner = TgPawn(Owner); + // End:0x4F + if(PawnOwner != none) + { + PawnOwner.SetPhysics(2); + } + //return; + } + stop; +} + +defaultproperties +{ + m_bUsePhysFlying=true + m_bIgnoreRange=true + m_bForce3PViewWhileFiring=false + m_bAbilityRequiresInhandResync=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Tinkerin.uc b/exported/TgGame/Classes/TgDevice_Tinkerin.uc new file mode 100755 index 00000000..d297377e --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Tinkerin.uc @@ -0,0 +1,2 @@ +class TgDevice_Tinkerin extends TgDevice + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_Toggle.uc b/exported/TgGame/Classes/TgDevice_Toggle.uc new file mode 100755 index 00000000..cdfe8c06 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Toggle.uc @@ -0,0 +1,98 @@ +class TgDevice_Toggle extends TgDevice + native(Devices) + hidecategories(Navigation); + +var bool m_bIsToggle; + +// Export UTgDevice_Toggle::execUpdateUIToggleState(FFrame&, void* const) +native function UpdateUIToggleState(); + +// Export UTgDevice_Toggle::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated function bool CanDeviceFireInTargetingMode() +{ + return true; + //return ReturnValue; +} + +simulated function FireAmmunition() +{ + // End:0x19 + if(r_Deployable == none) + { + super.FireAmmunition(); + } + //return; +} + +simulated event bool StartFire() +{ + // End:0x0D + if(LogDebugInfo()) + { + } + // End:0x3B + if((IsFiring()) && m_nDeviceType != 11077) + { + StopFire(); + return true; + } + return super.StartFire(); + //return ReturnValue; +} + +simulated function ConsumeAmmoFromFiring(optional int nAmmoConsumptionOverride = -1, optional int nFireRequestIDOverride = -1) +{ + //return; +} + +simulated event bool IsToggleDevice() +{ + return m_bIsToggle; + //return ReturnValue; +} + +simulated function bool ShouldInterruptReload() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function RefireCheckTimer() + { + bPendingFire = true; + super(TgDevice).RefireCheckTimer(); + //return; + } + + simulated function BeginState(name PrevStateName) + { + UpdateUIToggleState(); + super.BeginState(PrevStateName); + //return; + } + + simulated function EndState(name NextStateName) + { + super.EndState(NextStateName); + // End:0x4C + if(r_Deployable != none) + { + r_Deployable.SpawningDeviceToggledOff(); + r_Deployable = none; + } + ConsumeAmmo(); + SetTimer(0.1000000, false, 'UpdateUIToggleState'); + //return; + } + stop; +} + +defaultproperties +{ + m_bIsToggle=true + m_bPostFireShouldInterruptStealth=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ToggleInhand.uc b/exported/TgGame/Classes/TgDevice_ToggleInhand.uc new file mode 100755 index 00000000..54e41ec9 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ToggleInhand.uc @@ -0,0 +1,274 @@ +class TgDevice_ToggleInhand extends TgDevice + native(Devices) + hidecategories(Navigation); + +var TgPawn m_CachedTgP; +var float m_fCurrentTransitionPct; +var int m_nProjectilesFired; + +simulated function TgPawn GetCachedTgP() +{ + // End:0x1C + if(m_CachedTgP != none) + { + return m_CachedTgP; + } + else + { + m_CachedTgP = TgPawn(Instigator); + return m_CachedTgP; + } + //return ReturnValue; +} + +// Export UTgDevice_ToggleInhand::execGetBuildupTime(FFrame&, void* const) +native simulated function float GetBuildupTime(); + +// Export UTgDevice_ToggleInhand::execGetFiringPreHitDelay(FFrame&, void* const) +native simulated function float GetFiringPreHitDelay(optional int nMode = -1); + +// Export UTgDevice_ToggleInhand::execGetFiringPostHitDelay(FFrame&, void* const) +native simulated function float GetFiringPostHitDelay(optional int nMode = -1); + +simulated function float GetBaseBuildupTime() +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x42 + if(FireMode != none) + { + return FireMode.m_fBuildupTime; + } + return 0.0000000; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return true; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return true; + //return ReturnValue; +} + +simulated function bool CanToggleDeviceStopFiring() +{ + return m_nProjectilesFired > 0; + //return ReturnValue; +} + +simulated event bool IsToggleDevice() +{ + return true; + //return ReturnValue; +} + +simulated function FireAmmunition() +{ + super.FireAmmunition(); + m_nProjectilesFired++; + //return; +} + +simulated function StartIntroTimer(float fDuration) +{ + local TgPawn TgP; + + ClearTimer('OutroTimer'); + SetTimer(fDuration, false, 'IntroTimer'); + // End:0x6C + if(c_DeviceForm != none) + { + c_DeviceForm.PlayToggleTransitionAnimations(m_fCurrentTransitionPct, fDuration, true); + } + TgP = GetCachedTgP(); + // End:0xD4 + if(TgP != none) + { + TgP.FlashTransitionIn(r_nDeviceInstanceId, int(CurrentFireMode), m_fCurrentTransitionPct, fDuration); + } + //return; +} + +simulated function StartOutroTimer(float fDuration) +{ + local TgPawn TgP; + + ClearTimer('IntroTimer'); + SetTimer(fDuration, false, 'OutroTimer'); + // End:0x6C + if(c_DeviceForm != none) + { + c_DeviceForm.PlayToggleTransitionAnimations(m_fCurrentTransitionPct, fDuration, false); + } + TgP = GetCachedTgP(); + // End:0xD4 + if(TgP != none) + { + TgP.FlashTransitionOut(r_nDeviceInstanceId, int(CurrentFireMode), m_fCurrentTransitionPct, fDuration); + } + //return; +} + +simulated function IntroTimer() +{ + // End:0x2F + if(c_DeviceForm != none) + { + c_DeviceForm.SetToggleState(true); + } + //return; +} + +simulated function OutroTimer() +{ + // End:0x2F + if(c_DeviceForm != none) + { + c_DeviceForm.SetToggleState(false); + } + //return; +} + +simulated function InitialFirePreHitDelay() +{ + //return; +} + +reliable server event InterruptFiring() +{ + UpdateTransitionPct(1.0000000); + super.InterruptFiring(); + //return; +} + +reliable client simulated event ClientInterrupt() +{ + UpdateTransitionPct(1.0000000); + super.ClientInterrupt(); + //return; +} + +simulated function StopFire() +{ + UpdateTransitionPct(1.0000000); + super.StopFire(); + //return; +} + +simulated event UpdateTransitionPct(optional float fDefaultPct = 0.0000000) +{ + local float timerRate, timerCount, BuildupTime; + + BuildupTime = GetBaseBuildupTime(); + // End:0x14B + if(BuildupTime > 0.0000000) + { + timerRate = GetTimerRate('OutroTimer'); + // End:0xC1 + if(timerRate > float(0)) + { + timerCount = GetTimerCount('OutroTimer'); + m_fCurrentTransitionPct = 1.0000000 - ((1.0000000 - (timerRate / BuildupTime)) + (timerCount / BuildupTime)); + return; + } + timerRate = GetTimerRate('IntroTimer'); + // End:0x14B + if(timerRate > float(0)) + { + timerCount = GetTimerCount('IntroTimer'); + m_fCurrentTransitionPct = (1.0000000 - (timerRate / BuildupTime)) + (timerCount / BuildupTime); + return; + } + } + m_fCurrentTransitionPct = fDefaultPct; + //return; +} + +simulated state DeviceBuildup +{ + simulated function BeginState(name PreviousStateName) + { + local float fBuildupTime; + + fBuildupTime = GetBuildupTime(); + // End:0x3A + if(fBuildupTime > 0.0000000) + { + StartIntroTimer(fBuildupTime); + } + m_nProjectilesFired = 0; + super.BeginState(PreviousStateName); + //return; + } + + simulated function EndState(name NextStateName) + { + local float timerCount; + + // End:0x91 + if(NextStateName != 'DeviceFiring') + { + timerCount = ((GetBaseBuildupTime()) - GetTimerRate('IntroTimer')) + GetTimerCount('IntroTimer'); + // End:0x7E + if(timerCount > float(0)) + { + StartOutroTimer(timerCount); + } + else + { + StartOutroTimer(timerCount); + } + } + super.EndState(NextStateName); + //return; + } + stop; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + super.StartFiringLogic(); + ClearTimer('InitialFirePreHitDelay'); + //return; + } + + simulated function EndState(name NextStateName) + { + local float fPostHitRate, fPostHitCount, fPreHitRate, fPreHitCount, fNewPreHit; + + fNewPreHit = 0.0000000; + fPostHitRate = GetTimerRate('FirePostHitDelay'); + fPostHitCount = GetTimerCount('FirePostHitDelay'); + // End:0x91 + if(fPostHitRate > 0.0000000) + { + fNewPreHit += (fPostHitRate - fPostHitCount); + ClearTimer('FirePostHitDelay'); + } + fPreHitRate = GetTimerRate('FirePreHitDelay'); + fPreHitCount = GetTimerCount('FirePreHitDelay'); + // End:0x113 + if(fPreHitRate > 0.0000000) + { + fNewPreHit += (fPreHitRate - fPreHitCount); + ClearTimer('FirePreHitDelay'); + } + // End:0x14A + if(fNewPreHit > 0.0000000) + { + self.SetTimer(fNewPreHit, false, 'InitialFirePreHitDelay'); + } + StartOutroTimer(GetBaseBuildupTime()); + super.EndState(NextStateName); + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_ToggleInhandFiremode.uc b/exported/TgGame/Classes/TgDevice_ToggleInhandFiremode.uc new file mode 100755 index 00000000..7ca1f66d --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ToggleInhandFiremode.uc @@ -0,0 +1,84 @@ +class TgDevice_ToggleInhandFiremode extends TgDevice + hidecategories(Navigation); + +var TgDevice m_CachedInhand; + +simulated function bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x3E + if((Current != none) && Current.m_bHandDevice) + { + return IsFiring(); + } + return false; + //return ReturnValue; +} + +simulated function bool ShouldStopActionOnOffhandSlotReleased() +{ + return false; + //return ReturnValue; +} + +simulated function FireAmmunition() +{ + local int DesiredFireMode; + + super.FireAmmunition(); + // End:0x11B + if((HasCachedInhand()) && m_CachedInhand.m_FireMode.Length >= 2) + { + // End:0x8E + if(m_CachedInhand.m_IsPendingSetFireMode) + { + DesiredFireMode = int(m_CachedInhand.m_PendingFireMode); + } + else + { + DesiredFireMode = int(m_CachedInhand.CurrentFireMode); + } + // End:0xF2 + if(++DesiredFireMode >= m_CachedInhand.m_FireMode.Length) + { + DesiredFireMode = 0; + } + m_CachedInhand.SetFireMode(DesiredFireMode); + } + //return; +} + +simulated function bool HasCachedInhand() +{ + local TgPawn PawnOwner; + + // End:0x64 + if(m_CachedInhand == none) + { + PawnOwner = TgPawn(Owner); + // End:0x64 + if(PawnOwner != none) + { + m_CachedInhand = PawnOwner.GetDeviceByEqPoint(1); + } + } + return m_CachedInhand != none; + //return ReturnValue; +} + +simulated event bool ShouldCooldownAfterFire() +{ + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_bFireShouldInterruptStealth=false + m_bPostFireShouldInterruptStealth=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ToggleModeWithLockout.uc b/exported/TgGame/Classes/TgDevice_ToggleModeWithLockout.uc new file mode 100755 index 00000000..8ad2d38a --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ToggleModeWithLockout.uc @@ -0,0 +1,59 @@ +class TgDevice_ToggleModeWithLockout extends TgDevice_ToggleWithLockout + native(Devices) + hidecategories(Navigation); + +var TgDevice m_CachedInhand; + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0x6A + case 10828: + m_CachedInhand = Dev; + // End:0x6D + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + // End:0x30 + if(m_CachedInhand != none) + { + m_CachedInhand.SetFireMode(1, true); + } + super.BeginState(PreviousStateName); + //return; + } + + simulated function EndState(name NextStateName) + { + // End:0x30 + if(m_CachedInhand != none) + { + m_CachedInhand.SetFireMode(0, true); + } + super.EndState(NextStateName); + //return; + } + stop; +} + +defaultproperties +{ + m_nLinkedDeviceTypes[0]=11077 + m_nLinkedDeviceTypes[1]=10828 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ToggleWithLockout.uc b/exported/TgGame/Classes/TgDevice_ToggleWithLockout.uc new file mode 100755 index 00000000..863e6eff --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ToggleWithLockout.uc @@ -0,0 +1,258 @@ +class TgDevice_ToggleWithLockout extends TgDevice_Stim + native(Devices) + hidecategories(Navigation); + +var TgPawn m_CachedTgP; +var float m_fCurrentTransitionPct; + +// Export UTgDevice_ToggleWithLockout::execCanDeviceFireNow(FFrame&, void* const) +native function bool CanDeviceFireNow(byte FireModeNum, AimData Aim, bool bDeviceFailLog, out TgObject.EDeviceFailType failType); + +simulated function TgPawn GetCachedTgP() +{ + // End:0x1C + if(m_CachedTgP != none) + { + return m_CachedTgP; + } + else + { + m_CachedTgP = TgPawn(Instigator); + return m_CachedTgP; + } + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x67 + if(((Current != none) && Current.m_bHandDevice) && IsTimerActive('FirePreHitDelay') || IsTimerActive('FiringEndTransition')) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return true; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return IsFiring(); + //return ReturnValue; +} + +simulated event bool IsToggleDevice() +{ + return true; + //return ReturnValue; +} + +simulated function FiringEndTransition() +{ + local TgPawn TgP; + + // End:0x2F + if(c_DeviceForm != none) + { + c_DeviceForm.SetToggleState(false); + } + TgP = GetCachedTgP(); + // End:0x87 + if(TgP != none) + { + TgP.FlashGeneric1(r_nDeviceInstanceId, int(CurrentFireMode), true); + } + //return; +} + +simulated function SetTransitionPct() +{ + local float timerRate, timerCount; + + m_fCurrentTransitionPct = 1.0000000; + timerRate = GetTimerRate('FirePreHitDelay'); + // End:0x94 + if(timerRate > float(0)) + { + timerCount = GetTimerCount('FirePreHitDelay'); + m_fCurrentTransitionPct = ((GetFiringPreHitDelay()) - (timerRate - timerCount)) / (GetFiringPreHitDelay()); + } + //return; +} + +reliable server event InterruptFiring() +{ + SetTransitionPct(); + super(TgDevice).InterruptFiring(); + //return; +} + +reliable client simulated event ClientInterrupt() +{ + SetTransitionPct(); + super(TgDevice).ClientInterrupt(); + //return; +} + +simulated function StopFire() +{ + SetTransitionPct(); + super(TgDevice).StopFire(); + //return; +} + +simulated function CompleteInterrupt() +{ + // End:0x33 + if((!CanBeCanceled() && !CanBeInterrupted()) || !IsFiring()) + { + return; + } + // End:0x51 + if(int(Role) == int(ROLE_AutonomousProxy)) + { + ClientInterrupt(); + } + InterruptFiring(); + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super(TgDevice).LinkedDeviceEquipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0x88 + case 11077: + Dev.RegisterDelegate(2, CompleteInterrupt); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super(TgDevice).LinkedDeviceUnequipped(Dev); + switch(Dev.m_nDeviceType) + { + // End:0x88 + case 11077: + Dev.UnregisterDelegate(2, CompleteInterrupt); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated function CustomFire() +{ + local AimData Aim; + + UpdateIndex(); + GetCachedAim(Aim); + PlayClientFireFx(Aim.EndTrace, m_nSocketIndex, false, GetRefireTime()); + // End:0x8C + if(int(Role) == int(ROLE_Authority)) + { + GetCurrentFire().CustomFire(); + } + //return; +} + +simulated state DeviceFiring +{ + simulated function RestartFireLoop(bool bRefire) + { + local TgPawn TgP; + local float fModifiedPreHitDelay, fPreHitDelay; + + super.RestartFireLoop(bRefire); + fPreHitDelay = GetFiringPreHitDelay(); + // End:0xE6 + if(IsTimerActive('FirePreHitDelay')) + { + fModifiedPreHitDelay = fPreHitDelay * (float(1) - m_fCurrentTransitionPct); + // End:0xB2 + if(fModifiedPreHitDelay > float(0)) + { + SetTimer(fPreHitDelay * (float(1) - m_fCurrentTransitionPct), false, 'FirePreHitDelay'); + ClearTimer('FiringEndTransition'); + } + else + { + ClearTimer('FirePreHitDelay'); + ClearTimer('FiringEndTransition'); + FirePreHitDelay(); + return; + } + } + // End:0x127 + if(c_DeviceForm != none) + { + c_DeviceForm.PlayToggleTransitionAnimations(m_fCurrentTransitionPct, fPreHitDelay, true); + } + TgP = GetCachedTgP(); + // End:0x18F + if(TgP != none) + { + TgP.FlashTransitionIn(r_nDeviceInstanceId, int(CurrentFireMode), m_fCurrentTransitionPct, fPreHitDelay); + } + //return; + } + + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + ClearTimer('FirePostHitDelay'); + //return; + } + + simulated function EndState(name NextStateName) + { + local TgPawn TgP; + local float fPostHitDelay; + + SetTimer((GetFiringPostHitDelay()) * m_fCurrentTransitionPct, false, 'FiringEndTransition'); + ClearTimer('FirePreHitDelay'); + fPostHitDelay = GetFiringPostHitDelay(); + // End:0x8E + if(c_DeviceForm != none) + { + c_DeviceForm.PlayToggleTransitionAnimations(m_fCurrentTransitionPct, fPostHitDelay, false); + } + TgP = GetCachedTgP(); + // End:0xF6 + if(TgP != none) + { + TgP.FlashTransitionOut(r_nDeviceInstanceId, int(CurrentFireMode), m_fCurrentTransitionPct, fPostHitDelay); + } + super.EndState(NextStateName); + //return; + } + stop; +} + +defaultproperties +{ + m_nLinkedDeviceTypes[0]=11077 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_TotemMod.uc b/exported/TgGame/Classes/TgDevice_TotemMod.uc new file mode 100755 index 00000000..9598d347 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_TotemMod.uc @@ -0,0 +1,3 @@ +class TgDevice_TotemMod extends TgDevice + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_ToweringBarrier.uc b/exported/TgGame/Classes/TgDevice_ToweringBarrier.uc new file mode 100755 index 00000000..b60dcd23 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ToweringBarrier.uc @@ -0,0 +1,3 @@ +class TgDevice_ToweringBarrier extends TgDevice_ShieldMod + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_ToweringBarrier_Old.uc b/exported/TgGame/Classes/TgDevice_ToweringBarrier_Old.uc new file mode 100755 index 00000000..fbf45410 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ToweringBarrier_Old.uc @@ -0,0 +1,3 @@ +class TgDevice_ToweringBarrier_Old extends TgDevice_ShieldMod + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_ToxicTimeBomb.uc b/exported/TgGame/Classes/TgDevice_ToxicTimeBomb.uc new file mode 100755 index 00000000..de8bae1c --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ToxicTimeBomb.uc @@ -0,0 +1,9 @@ +class TgDevice_ToxicTimeBomb extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_bDeployAtFeetOnFailure=true + m_vProjectileSpawnOffset=(X=30.0000000,Y=-10.0000000,Z=-12.0000000) + m_fBottomlessPitCheck=70.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Transporter.uc b/exported/TgGame/Classes/TgDevice_Transporter.uc new file mode 100755 index 00000000..e3603b3b --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Transporter.uc @@ -0,0 +1,162 @@ +class TgDevice_Transporter extends TgDevice + native(ChampKinessa) + hidecategories(Navigation); + +var float m_fDowntraceDistance; +var Vector c_vCurrentTargeting2Location; + +// Export UTgDevice_Transporter::execGetGroundTargetAim(FFrame&, void* const) +native function GetGroundTargetAim(out AimData Aim); + +// Export UTgDevice_Transporter::execTickTargetingMode(FFrame&, void* const) +native function TickTargetingMode(float DeltaSeconds); + +// Export UTgDevice_Transporter::execMustBeOnGroundToFire(FFrame&, void* const) +native function bool MustBeOnGroundToFire(); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x18 + if(super.ShouldLockFiring(Current)) + { + return true; + } + // End:0x54 + if((Current != none) && int(Current.r_eEquippedAt) == int(23)) + { + return false; + } + return m_bInTargetingMode || IsFiring(); + //return ReturnValue; +} + +event OnDeployableDestroyed(TgDeployable deployable) +{ + // End:0x43 + if(deployable == r_Deployable) + { + r_Deployable = none; + ClientPlayTransporterDestroyedSound(); + // End:0x43 + if(IsFiring()) + { + InterruptFiring(); + } + } + //return; +} + +reliable client simulated function ClientPlayTransporterDestroyedSound() +{ + local TgPawn_Character TgPC; + + TgPC = TgPawn_Character(Owner); + // End:0x7C + if((TgPC != none) && TgPC.IsAliveAndWell()) + { + TgPC.FxReactivateGroupSelf('KinessaTransporterDestroyed', 0); + } + //return; +} + +simulated state DeviceFiring +{ + simulated function BeginState(name PreviousStateName) + { + local AimData Aim; + local Rotator rSpawnRotation; + local TgDeviceFire FireMode; + local TgDeploy_Transporter transporter; + local TgPawn_Kinessa Kinessa; + local float fPreHitTime, fPostHitTime; + + super.BeginState(PreviousStateName); + GetGroundTargetAim(Aim); + // End:0x3B8 + if(Aim.bResult) + { + FireMode = GetCurrentFire(); + // End:0x3B8 + if(FireMode != none) + { + rSpawnRotation = Rotator(Aim.AimVector); + rSpawnRotation.Pitch = 0; + FireMode.DeployAtLocation(Aim.StartTrace + m_vProjectileSpawnOffset, rSpawnRotation); + // End:0x204 + if(r_Deployable != none) + { + transporter = TgDeploy_Transporter(r_Deployable); + // End:0x204 + if(transporter != none) + { + transporter.r_TeleportLocation = Aim.EndTrace; + transporter.m_ProjectileEndLocation = transporter.r_TeleportLocation + ((vect(0.0000000, 0.0000000, 1.0000000) * transporter.m_fProjectileHeight) * float(16)); + transporter.SpawnDeployFX(); + } + } + Kinessa = TgPawn_Kinessa(Owner); + // End:0x3B8 + if(Kinessa != none) + { + fPreHitTime = FireMode.GetPreHitDelay(); + Kinessa.r_fTeleportOverlayUpRate = ((fPreHitTime > 0.0000000) ? 1.0000000 / fPreHitTime : 10000.0000000); + fPostHitTime = FireMode.GetPostHitDelay(); + Kinessa.r_fTeleportOverlayDownRate = ((fPostHitTime > 0.0000000) ? 1.0000000 / fPostHitTime : 10000.0000000); + Kinessa.r_bTeleportOverlayActive = true; + Kinessa.r_fTeleportOverlayMaxStrength = 1.0000000; + Kinessa.bNetDirty = true; + Kinessa.FlashTeleportFx(5, Kinessa.Location); + } + } + } + //return; + } + + simulated function FirePreHitDelay() + { + local TgPawn_Kinessa Kinessa; + + super.FirePreHitDelay(); + Kinessa = TgPawn_Kinessa(Instigator); + // End:0xCA + if(Kinessa != none) + { + Kinessa.r_bTeleportOverlayActive = false; + Kinessa.bNetDirty = true; + // End:0xCA + if(int(Role) == int(ROLE_Authority)) + { + Kinessa.FlashTeleportFx(6, Kinessa.Location); + } + } + //return; + } + + simulated function EndState(name NextStateName) + { + local TgPawn_Kinessa Kinessa; + + Kinessa = TgPawn_Kinessa(Instigator); + // End:0x6D + if(Kinessa != none) + { + Kinessa.r_bTeleportOverlayActive = false; + Kinessa.bNetDirty = true; + } + super.EndState(NextStateName); + // End:0xAF + if(r_Deployable != none) + { + r_Deployable.DestroyIt(); + } + //return; + } + stop; +} + +defaultproperties +{ + m_fDowntraceDistance=4096.0000000 + c_bUsesTargetingReticle=false + m_vProjectileSpawnOffset=(X=15.0000000,Y=1.0000000,Z=-9.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Turret.uc b/exported/TgGame/Classes/TgDevice_Turret.uc new file mode 100755 index 00000000..27ea53d5 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Turret.uc @@ -0,0 +1,138 @@ +class TgDevice_Turret extends TgDevice_Pet + native(ChampBarik) + hidecategories(Navigation); + +var int m_FlameTurretID; +var int m_MegaTurretID; +var int m_LockdownTurretID; +var Vector m_SpawnLocationOverride; +var bool m_bLockdownIsOn; +var bool m_bHasFlamethrowerTurret; +var bool m_bHasMegaTurret; + +// Export UTgDevice_Turret::execUpgradeActiveTurrets(FFrame&, void* const) +native function UpgradeActiveTurrets(); + +// Export UTgDevice_Turret::execToggleLockdownMode(FFrame&, void* const) +native function ToggleLockdownMode(); + +// Export UTgDevice_Turret::execGetCachedAim(FFrame&, void* const) +native function GetCachedAim(out AimData Aim); + +// Export UTgDevice_Turret::execGetPetIDOverride(FFrame&, void* const) +native function int GetPetIDOverride(int PetIndex); + +simulated function InterruptOtherDevices(TgPawn TgP) +{ + super(TgDevice).InterruptOtherDevices(TgP); + // End:0x5F + if(int(Role) == int(ROLE_Authority)) + { + // End:0x5F + if(TgP != none) + { + TgP.InterruptDeviceFiringByClass(Class'TgGame.TgDevice_RocketBoots'); + } + } + //return; +} + +simulated event ArmFlamethrowerMode(bool bEnable) +{ + // End:0x1E + if(m_bLockdownIsOn || m_bHasMegaTurret) + { + return; + } + // End:0x3A + if(bEnable) + { + SetFireMode(1); + } + else + { + RevertFiremode(); + } + UpgradeActiveTurrets(); + //return; +} + +simulated event ArmMegaTurretMode(bool bEnable) +{ + // End:0x0F + if(m_bLockdownIsOn) + { + return; + } + // End:0x2C + if(bEnable) + { + SetFireMode(2); + } + else + { + RevertFiremode(); + } + UpgradeActiveTurrets(); + //return; +} + +simulated event ArmLockdownMode(bool bEnable) +{ + m_bLockdownIsOn = bEnable; + // End:0x32 + if(m_bLockdownIsOn) + { + SetFireMode(3); + } + else + { + RevertFiremode(); + } + // End:0x62 + if(m_bHasFlamethrowerTurret || m_bHasMegaTurret) + { + UpgradeActiveTurrets(); + } + ToggleLockdownMode(); + //return; +} + +simulated function RevertFiremode() +{ + // End:0x1D + if(m_bLockdownIsOn) + { + SetFireMode(3); + } + else + { + // End:0x3A + if(m_bHasMegaTurret) + { + SetFireMode(2); + } + else + { + // End:0x56 + if(m_bHasFlamethrowerTurret) + { + SetFireMode(1); + } + else + { + SetFireMode(0); + } + } + } + //return; +} + +defaultproperties +{ + m_FlameTurretID=2230 + m_MegaTurretID=2260 + m_LockdownTurretID=2151 + m_bDeployAtFeetOnFailure=true + m_fBottomlessPitCheck=70.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_TurretMod.uc b/exported/TgGame/Classes/TgDevice_TurretMod.uc new file mode 100755 index 00000000..441ab0fb --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_TurretMod.uc @@ -0,0 +1,3 @@ +class TgDevice_TurretMod extends TgDevice + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_TurretShot.uc b/exported/TgGame/Classes/TgDevice_TurretShot.uc new file mode 100755 index 00000000..f93553c8 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_TurretShot.uc @@ -0,0 +1,7 @@ +class TgDevice_TurretShot extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_vProjectileSpawnOffset=(X=25.0000000,Y=0.0000000,Z=-18.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_TurtlePower.uc b/exported/TgGame/Classes/TgDevice_TurtlePower.uc new file mode 100755 index 00000000..59f74e3d --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_TurtlePower.uc @@ -0,0 +1,119 @@ +class TgDevice_TurtlePower extends TgDevice_Toggle + hidecategories(Navigation); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x5D + if((Current != none) && Current.r_nDeviceId == 14844) + { + return (IsFiring()) || IsTimerActive('OutroLockoutTime'); + } + return (IsTimerActive('FirePreHitDelay') || IsTimerActive('CancelSafetyPeriodTimer')) || IsTimerActive('OutroLockoutTime'); + //return ReturnValue; +} + +function CancelSafetyPeriodTimer() +{ + //return; +} + +simulated event bool CanBeCanceled() +{ + // End:0x32 + if(IsTimerActive('FirePostHitDelay')) + { + // End:0x32 + if(!IsTimerActive('CancelSafetyPeriodTimer')) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated function InterruptOtherAbilities() +{ + local TgPawn PawnOwner; + local TgDevice Dev; + local int I; + + PawnOwner = TgPawn(Owner); + // End:0x115 + if(PawnOwner != none) + { + I = 0; + J0x36: + + // End:0x115 [Loop If] + if(I < 33) + { + Dev = PawnOwner.GetDeviceByEqPoint(I); + // End:0x107 + if(((Dev != none) && Dev != self) && Dev.IsAbility() || int(Dev.r_eEquippedAt) == int(16)) + { + Dev.InterruptFiring(); + } + I++; + // [Loop Continue] + goto J0x36; + } + } + //return; +} + +simulated state DeviceFiring +{ + simulated function FirePreHitDelay() + { + // End:0x3C + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + SetTimer(0.5000000, false, 'CancelSafetyPeriodTimer'); + } + super.FirePreHitDelay(); + //return; + } + + simulated function StartFiringLogic() + { + local TgPawn_Makoa makoaOwner; + + InterruptOtherAbilities(); + super.StartFiringLogic(); + makoaOwner = TgPawn_Makoa(Instigator); + // End:0x5F + if(makoaOwner != none) + { + makoaOwner.PlayAncientRageEffects(true); + } + //return; + } + + simulated function StopFiringLogic() + { + local TgPawn_Makoa makoaOwner; + + super.StopFiringLogic(); + makoaOwner = TgPawn_Makoa(Instigator); + // End:0x55 + if(makoaOwner != none) + { + makoaOwner.PlayAncientRageEffects(false); + } + // End:0x92 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + ClearTimer('CancelSafetyPeriodTimer'); + } + //return; + } + stop; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit + m_bUsesOutroLockout=true + m_fOutroLockoutTime=0.6000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_TurtlePowerSmash.uc b/exported/TgGame/Classes/TgDevice_TurtlePowerSmash.uc new file mode 100755 index 00000000..c69ad453 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_TurtlePowerSmash.uc @@ -0,0 +1,42 @@ +class TgDevice_TurtlePowerSmash extends TgDevice + hidecategories(Navigation); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return false; + //return ReturnValue; +} + +simulated event OnLinkDevice(TgPawn TgP) +{ + local TgPawn_Makoa makoaOwner; + + super.OnLinkDevice(TgP); + makoaOwner = TgPawn_Makoa(TgP); + // End:0xAA + if(((makoaOwner != none) && !makoaOwner.bDeleteMe) && !makoaOwner.bPendingDelete) + { + makoaOwner.m_AncientRageInHand = self; + } + //return; +} + +simulated event OnUnlinkDevice(TgPawn TgP) +{ + local TgPawn_Makoa makoaOwner; + + super.OnUnlinkDevice(TgP); + makoaOwner = TgPawn_Makoa(TgP); + // End:0xD0 + if((((makoaOwner != none) && !makoaOwner.bDeleteMe) && !makoaOwner.bPendingDelete) && makoaOwner.m_AncientRageInHand == self) + { + makoaOwner.m_AncientRageInHand = none; + } + //return; +} + +simulated event bool PlayHitReactionOverride() +{ + return true; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgDevice_TyraAltFire.uc b/exported/TgGame/Classes/TgDevice_TyraAltFire.uc new file mode 100755 index 00000000..c7a27cb5 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_TyraAltFire.uc @@ -0,0 +1,8 @@ +class TgDevice_TyraAltFire extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_vProjectileSpawnOffset=(X=30.0000000,Y=9.0000000,Z=-10.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Tyra.DeviceAltFire' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_TyraInhand.uc b/exported/TgGame/Classes/TgDevice_TyraInhand.uc new file mode 100755 index 00000000..c6b5784b --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_TyraInhand.uc @@ -0,0 +1,80 @@ +class TgDevice_TyraInhand extends TgDevice + native(ChampTyra) + hidecategories(Navigation); + +var bool m_bUltIsActive; + +// Export UTgDevice_TyraInhand::execCheckAutoReload(FFrame&, void* const) +native function bool CheckAutoReload(); + +// Export UTgDevice_TyraInhand::execRequiresAmmoToFire(FFrame&, void* const) +native function bool RequiresAmmoToFire(); + +// Export UTgDevice_TyraInhand::execShouldShowAmmoCount(FFrame&, void* const) +native function bool ShouldShowAmmoCount(); + +simulated event SetAmmo(int AmmoCount, optional int ClipSize = -1, optional bool bShouldValidate = false, optional int ValidationIDOverride = 0) +{ + super.SetAmmo(AmmoCount, ClipSize, bShouldValidate, ValidationIDOverride); + // End:0x7A + if(c_DeviceForm != none) + { + c_DeviceForm.SetAmmoBlendNodesAmount(AmmoCount); + } + //return; +} + +simulated function TgGameplayCurvesSet_RecoilSimple GetRecoilCurve() +{ + local int I; + local TgGameplayCurves GPCurves; + local TgGameplayCurvesSet_RecoilSimple recoilCurves; + + GPCurves = GetCurrentGameplayCurves(); + // End:0x25 + if(GPCurves == none) + { + return none; + } + I = 0; + J0x30: + + // End:0x1AD [Loop If] + if(I < GPCurves.CurveSets.Length) + { + // End:0x19F + if((GPCurves.CurveSets[I] != none) && int(GPCurves.CurveSets[I].CurveSetType) == int(2)) + { + recoilCurves = TgGameplayCurvesSet_RecoilSimple(GPCurves.CurveSets[I]); + // End:0x19F + if((recoilCurves != none) && (!m_bUltIsActive && int(recoilCurves.RecoilType) == int(0)) || m_bUltIsActive && int(recoilCurves.RecoilType) == int(2)) + { + return recoilCurves; + } + } + I++; + // [Loop Continue] + goto J0x30; + } + return none; + //return ReturnValue; +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_ReticuleType=EReticuleType.RETICULE_Precise + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=17.0000000,Y=0.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_fMeshFOV=77.0000000 + m_vProjectileSpawnOffset=(X=30.0000000,Y=9.0000000,Z=-10.0000000) + m_fAltFireLockOutTime=0.0000000 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_TyraInhand' + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Tyra.DeviceInhand' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.LightForceFeedback' + m_AccuracySettings=(bUsesAdvancedAccuracy=true,fMaxAccuracy=1.0000000,fMinAccuracy=0.8900000,fAccuracyLossPerShot=0.0300000,fAccuracyGainPerSec=2.0000000,fAccuracyGainDelay=0.1500000,nNumFreeShots=5) + m_fReticleBloomScale=0.5000000 + m_RecoilSettings=(bUsesRecoil=true,fRecoilReductionPerSec=100.0000000,fRecoilCenterDelay=0.1000000,fRecoilSmoothRate=7.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_TyraUlt.uc b/exported/TgGame/Classes/TgDevice_TyraUlt.uc new file mode 100755 index 00000000..07a27dd7 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_TyraUlt.uc @@ -0,0 +1,81 @@ +class TgDevice_TyraUlt extends TgDevice_Stim + hidecategories(Navigation); + +simulated event bool CanBeCanceled() +{ + return IsTimerActive('FirePostHitDelay'); + //return ReturnValue; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0x49 + if(HasRemoteOwner()) + { + return (GetRemainingTimeForTimer('FirePreHitDelay') > 0.1000000) || GetRemainingTimeForTimer('TransitionOut') > 0.1000000; + } + return IsTimerActive('FirePreHitDelay') || IsTimerActive('TransitionOut'); + //return ReturnValue; +} + +simulated function TransitionOut() +{ + //return; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgPawn PawnOwner; + local TgDevice_TyraInhand inhandDev; + + super.StartFiringLogic(); + PawnOwner = TgPawn(Owner); + // End:0x159 + if(PawnOwner != none) + { + inhandDev = TgDevice_TyraInhand(PawnOwner.GetDeviceByEqPoint(1)); + // End:0x159 + if(inhandDev != none) + { + inhandDev.m_bUltIsActive = true; + // End:0xF9 + if(inhandDev.IsReloading()) + { + inhandDev.InterruptReload(); + inhandDev.ClientInterruptReload(); + } + // End:0x159 + if(inhandDev.IsFiring()) + { + inhandDev.InterruptFiring(); + inhandDev.ClientInterrupt(); + } + } + } + //return; + } + + simulated function StopFiringLogic() + { + local TgPawn PawnOwner; + local TgDevice_TyraInhand inhandDev; + + super.StopFiringLogic(); + PawnOwner = TgPawn(Owner); + // End:0x98 + if(PawnOwner != none) + { + inhandDev = TgDevice_TyraInhand(PawnOwner.GetDeviceByEqPoint(1)); + // End:0x98 + if(inhandDev != none) + { + inhandDev.m_bUltIsActive = false; + } + } + SetTimer(GetCurrentFire().GetCustomValue1(), false, 'TransitionOut'); + //return; + } + stop; +} diff --git a/exported/TgGame/Classes/TgDevice_Uppercut.uc b/exported/TgGame/Classes/TgDevice_Uppercut.uc new file mode 100755 index 00000000..55080cb6 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Uppercut.uc @@ -0,0 +1,71 @@ +class TgDevice_Uppercut extends TgDevice_Charge + native(ChampDemon) + hidecategories(Navigation); + +// Export UTgDevice_Uppercut::execGetTargetingAim(FFrame&, void* const) +native function GetTargetingAim(out AimData Aim); + +simulated function bool IsUltActive() +{ + local TgPawn_Demon PawnOwner; + + PawnOwner = TgPawn_Demon(Owner); + // End:0x4B + if(PawnOwner != none) + { + return PawnOwner.r_bIsUltActive; + } + return false; + //return ReturnValue; +} + +simulated event DeliverHit(ImpactInfo Impact) +{ + local ImpactInfo ModifiedImpact; + local AimData Aim; + + ModifiedImpact = Impact; + GetTargetingAim(Aim); + ModifiedImpact.HitNormal = -Aim.AimVector; + super(TgDevice).DeliverHit(ModifiedImpact); + //return; +} + +simulated event bool CanBeInterrupted() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function OnStoppedChargeOnHit(Actor Other) + { + ClearTimer('FirePreHitDelay'); + FirePreHitDelay(); + //return; + } + + simulated event EndCharge() + { + local TgDeviceFire FireMode; + + super.EndCharge(); + FireMode = GetCurrentFire(); + // End:0x7D + if((Owner != none) && FireMode != none) + { + Owner.Velocity *= FireMode.GetCustomValue1(); + } + //return; + } + stop; +} + +defaultproperties +{ + m_bStopOnHitType=ChargeStopOnHitType.CSHT_GodOnly + m_ChargeTimingType=ChargeFiringType.CFT_PreFire + m_bApplyHitOnTouch=false + m_bForce3PViewWhileFiring=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Vengeance.uc b/exported/TgGame/Classes/TgDevice_Vengeance.uc new file mode 100755 index 00000000..9c57f81b --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Vengeance.uc @@ -0,0 +1,3 @@ +class TgDevice_Vengeance extends TgDevice_ReversalMod + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_Vengeance_Lex.uc b/exported/TgGame/Classes/TgDevice_Vengeance_Lex.uc new file mode 100755 index 00000000..0d545091 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Vengeance_Lex.uc @@ -0,0 +1,75 @@ +class TgDevice_Vengeance_Lex extends TgDevice + native(ChampLex) + hidecategories(Navigation); + +const DISCOVERY_DEVICE_ID = 16914; + +var repnotify TgRepInfo_Player r_MarkedPlayer; +var TgPawn s_PreviouslyMarkedPlayer; +var array m_EnemyPawns; +var bool s_bRevealApplied; +var TgDevice s_DiscoveryDevice; + +replication +{ + // Pos:0x000 + if((bNetOwner && bNetInitial || bNetDirty) && int(Role) == int(ROLE_Authority)) + r_MarkedPlayer; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x21 + if(VarName == 'r_MarkedPlayer') + { + UpdateMarkedPlayer(); + } + super.ReplicatedEvent(VarName); + //return; +} + +// Export UTgDevice_Vengeance_Lex::execMarkRandomPlayer(FFrame&, void* const) +native function MarkRandomPlayer(); + +// Export UTgDevice_Vengeance_Lex::execUpdateMarkedPlayer(FFrame&, void* const) +native function UpdateMarkedPlayer(); + +// Export UTgDevice_Vengeance_Lex::execSetMarkedPlayer(FFrame&, void* const) +native function SetMarkedPlayer(TgRepInfo_Player Target); + +// Export UTgDevice_Vengeance_Lex::execCalculateBounty(FFrame&, void* const) +native function int CalculateBounty(); + +simulated function FireAmmunition() +{ + super.FireAmmunition(); + MarkRandomPlayer(); + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + super.LinkedDeviceEquipped(Dev); + // End:0x5F + if((Dev != none) && Dev.r_nDeviceId == 16914) + { + s_DiscoveryDevice = Dev; + } + //return; +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + super.LinkedDeviceUnequipped(Dev); + // End:0x57 + if((Dev != none) && Dev.r_nDeviceId == 16914) + { + s_DiscoveryDevice = none; + } + //return; +} + +defaultproperties +{ + m_nLinkedDeviceIDs[0]=16914 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_VenomousGourd.uc b/exported/TgGame/Classes/TgDevice_VenomousGourd.uc new file mode 100755 index 00000000..f6fa824a --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_VenomousGourd.uc @@ -0,0 +1,8 @@ +class TgDevice_VenomousGourd extends TgDevice + hidecategories(Navigation); + +defaultproperties +{ + m_bAimThroughReticule=true + m_vProjectileSpawnOffset=(X=40.0000000,Y=-9.0000000,Z=0.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_ViktorAmmoRefill.uc b/exported/TgGame/Classes/TgDevice_ViktorAmmoRefill.uc new file mode 100755 index 00000000..baa8ade2 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ViktorAmmoRefill.uc @@ -0,0 +1,26 @@ +class TgDevice_ViktorAmmoRefill extends TgDevice + hidecategories(Navigation); + +simulated function FireAmmunition() +{ + local TgPawn_Viktor Viktor; + + super.FireAmmunition(); + // End:0xDB + if(int(Role) == int(ROLE_Authority)) + { + Viktor = TgPawn_Viktor(Instigator); + // End:0xDB + if(Viktor != none) + { + Viktor.r_nAmmoRefreshSound++; + Viktor.bNetDirty = true; + // End:0xDB + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + Viktor.PlayLocalPawnFX('ViktorRefreshAmmo'); + } + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgDevice_ViktorInhand.uc b/exported/TgGame/Classes/TgDevice_ViktorInhand.uc new file mode 100755 index 00000000..51169d4f --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_ViktorInhand.uc @@ -0,0 +1,225 @@ +class TgDevice_ViktorInhand extends TgDevice + native(ChampViktor) + hidecategories(Navigation); + +var bool m_bIsADS; +var() Vector m_vADSProjectileSpawnOffset; +var(Recoil) float m_fADSRecoilMultiplier; +var float m_fMinAccuracyDefault; +var float m_fMinAccuracyADS; +var float m_fAccuracyLossPerShotDefault; +var float m_fAccuracyLossPerShotADS; +var TgPawn_Character m_CachedPawnOwner; + +simulated event Vector GetProjectileSpawnOffset() +{ + return ((m_bIsADS) ? m_vADSProjectileSpawnOffset : m_vProjectileSpawnOffset); + //return ReturnValue; +} + +simulated event SetAmmo(int AmmoCount, optional int ClipSize = -1, optional bool bShouldValidate = false, optional int ValidationIDOverride = 0) +{ + super.SetAmmo(AmmoCount, ClipSize, bShouldValidate, ValidationIDOverride); + // End:0x7A + if(c_DeviceForm != none) + { + c_DeviceForm.SetAmmoBlendNodesAmount(AmmoCount); + } + //return; +} + +simulated function ShowReticle(bool bShow) +{ + local TgPlayerController TgPC; + + TgPC = TgPlayerController(Instigator.Controller); + // End:0x73 + if(TgPC != none) + { + TgPC.SetReticleVisibility(bShow, bShow); + } + //return; +} + +simulated function StartADSBonuses() +{ + // End:0xAF + if(!m_bIsADS) + { + m_fMinAccuracyDefault = m_AccuracySettings[0].fMinAccuracy; + m_fAccuracyLossPerShotDefault = m_AccuracySettings[0].fAccuracyLossPerShot; + m_AccuracySettings[0].fMinAccuracy = m_fMinAccuracyADS; + m_AccuracySettings[0].fAccuracyLossPerShot = m_fAccuracyLossPerShotADS; + } + m_bIsADS = true; + // End:0xFF + if((m_CachedPawnOwner == none) || m_CachedPawnOwner.r_nWeaponSkinId != 19265) + { + ShowReticle(false); + } + // End:0x12D + if(HasCachedCharacter()) + { + m_CachedPawnOwner.m_bAirAccuracyPenalty = false; + } + m_fCurrentAdvancedAccuracy = FMax(m_fMinAccuracyADS, m_fCurrentAdvancedAccuracy); + m_fLastMinAccuracy = m_fCurrentAdvancedAccuracy; + //return; +} + +simulated function EndADSBonuses() +{ + // End:0x5D + if(m_bIsADS) + { + m_AccuracySettings[0].fMinAccuracy = m_fMinAccuracyDefault; + m_AccuracySettings[0].fAccuracyLossPerShot = m_fAccuracyLossPerShotDefault; + } + m_bIsADS = false; + ShowReticle(true); + // End:0xA2 + if(HasCachedCharacter()) + { + m_CachedPawnOwner.m_bAirAccuracyPenalty = true; + } + //return; +} + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0xBA + case 14157: + Dev.RegisterDelegate(0, StartADSBonuses); + Dev.RegisterDelegate(3, EndADSBonuses); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceUnequipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0xBA + case 14157: + Dev.UnregisterDelegate(0, StartADSBonuses); + Dev.UnregisterDelegate(3, EndADSBonuses); + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated function bool HasCachedCharacter() +{ + // End:0x2B + if(m_CachedPawnOwner == none) + { + m_CachedPawnOwner = TgPawn_Character(Instigator); + } + return m_CachedPawnOwner != none; + //return ReturnValue; +} + +simulated function TgGameplayCurvesSet_RecoilSimple GetRecoilCurve() +{ + local int I; + local TgGameplayCurves GPCurves; + local TgGameplayCurvesSet_RecoilSimple recoilCurves; + + GPCurves = GetCurrentGameplayCurves(); + // End:0x25 + if(GPCurves == none) + { + return none; + } + I = 0; + J0x30: + + // End:0x1AD [Loop If] + if(I < GPCurves.CurveSets.Length) + { + // End:0x19F + if((GPCurves.CurveSets[I] != none) && int(GPCurves.CurveSets[I].CurveSetType) == int(2)) + { + recoilCurves = TgGameplayCurvesSet_RecoilSimple(GPCurves.CurveSets[I]); + // End:0x19F + if((recoilCurves != none) && (!m_bIsADS && int(recoilCurves.RecoilType) == int(0)) || m_bIsADS && int(recoilCurves.RecoilType) == int(1)) + { + return recoilCurves; + } + } + I++; + // [Loop Continue] + goto J0x30; + } + return none; + //return ReturnValue; +} + +simulated function float GetRecoilMultiplier() +{ + local TgPawn_Character PawnOwner; + local TgDevice ADS; + local float fBaseMultiplier; + + fBaseMultiplier = super.GetRecoilMultiplier(); + PawnOwner = TgPawn_Character(Instigator); + // End:0xA7 + if(PawnOwner != none) + { + ADS = PawnOwner.GetDeviceByEqPoint(16); + // End:0xA7 + if((ADS != none) && ADS.IsFiring()) + { + return m_fADSRecoilMultiplier; + } + } + return fBaseMultiplier; + //return ReturnValue; +} + +defaultproperties +{ + m_vADSProjectileSpawnOffset=(X=30.0000000,Y=0.0000000,Z=-3.0000000) + m_fADSRecoilMultiplier=1.0000000 + m_fMinAccuracyADS=1.0000000 + m_fAccuracyLossPerShotADS=0.0090000 + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_ReticuleType=EReticuleType.RETICULE_Precise + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_vMeshViewOffset=(X=17.0000000,Y=0.0000000,Z=-5.0000000) + m_fWeaponBob=0.0000000 + m_vProjectileSpawnOffset=(X=30.0000000,Y=9.0000000,Z=-10.0000000) + m_fAltFireLockOutTime=0.0000000 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_ViktorInhand' + m_nLinkedDeviceIDs[0]=14157 + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ftLowMag",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H200ftLowMag",Distance=3200.0000000) + m_GameplayCurvesDeprecated=TgGameplayCurves'GP_Viktor.DeviceInhand' + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.LightForceFeedback' + m_AccuracySettings=(bUsesAdvancedAccuracy=true,fMaxAccuracy=1.0000000,fMinAccuracy=0.8400000,fAccuracyLossPerShot=0.0300000,fAccuracyGainPerSec=0.4800000,fAccuracyGainDelay=0.2000000) + m_RecoilSettings=(bUsesRecoil=true,fRecoilReductionPerSec=6.0000000,fRecoilCenterDelay=0.3000000,fRecoilSmoothRate=15.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Vine.uc b/exported/TgGame/Classes/TgDevice_Vine.uc new file mode 100755 index 00000000..32e55aa5 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Vine.uc @@ -0,0 +1,259 @@ +class TgDevice_Vine extends TgDevice + native(ChampGrover) + hidecategories(Navigation); + +var Actor m_PullTarget; +var Vector m_vPullLocation; +var float m_fPullSpeed; +var float m_fTruePostfireTime; +var float m_fPullEndOffset; +var bool m_bCanBeCanceled; +var bool m_bMissedPull; +var bool m_bIsPulling; +var bool m_bHasPulledOnce; +var bool m_bTeleportedAfterFiring; +var float m_fMomentumAfterPull; + +event PullToTarget(Actor Target, Vector targetPos) +{ + local TgDeviceFire FireMode; + local TgPawn TgP; + + m_PullTarget = Target; + m_vPullLocation = targetPos; + TgP = TgPawn(Instigator); + FireMode = GetCurrentFire(); + // End:0x114 + if(((((TgP == none) || !TgP.IsAliveAndWell()) || m_bTeleportedAfterFiring) || !IsFiring()) || (TgPawn(m_PullTarget) != none) && (FireMode == none) || !FireMode.IsValidTarget(m_PullTarget)) + { + MissPull(); + return; + } + SetIsPullingHitSpecial(true); + m_bIgnoreSecondaryFireLogic = false; + m_bMissedPull = false; + TgP.AirSpeed = m_fPullSpeed; + TgP.SetProperty(32, TgP.GetPropCurrentValue(32) + float(1)); + m_bHasPulledOnce = false; + m_bIsPulling = true; + //return; +} + +event MissPull() +{ + m_bMissedPull = true; + m_bIgnoreSecondaryFireLogic = true; + // End:0x33 + if(!m_bIsSecondaryFire) + { + HasAlreadyFiredOnce = false; + } + m_PullTarget = none; + EndPull(); + //return; +} + +function EndPull() +{ + local TgPawn TgP; + + TgP = TgPawn(Instigator); + // End:0x60 + if(TgP != none) + { + TgP.FlashGeneric1(r_nDeviceInstanceId, int(CurrentFireMode)); + } + // End:0xDA + if(m_bIsPulling) + { + // End:0xC3 + if(TgP != none) + { + TgP.SetProperty(32, TgP.GetPropCurrentValue(32) - float(1)); + } + SetIsPullingHitSpecial(false); + m_bIsPulling = false; + } + m_PullTarget = none; + LockInput(false); + ClientEndPull(); + SetTimer(m_fTruePostfireTime, false, 'FirePostHitDelay'); + //return; +} + +reliable client simulated function ClientEndPull() +{ + m_bIsPulling = false; + m_PullTarget = none; + LockInput(false); + // End:0x57 + if(IsTimerActive('FirePreHitDelay')) + { + ClearTimer('FirePreHitDelay'); + FirePreHitDelay(); + } + SetTimer(m_fTruePostfireTime, false, 'FirePostHitDelay'); + //return; +} + +function SetIsPullingHitSpecial(bool bIsPulling) +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x89 + if(FireMode != none) + { + // End:0x5E + if(bIsPulling) + { + FireMode.ApplyHitSpecial(Instigator); + } + else + { + FireMode.RemoveHitSpecial(Instigator, false); + } + } + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + super(Actor).Tick(DeltaSeconds); + //return; +} + +simulated event bool ShouldCooldownAfterFire() +{ + return true; + //return ReturnValue; +} + +function AuthStartCooldown(optional int nMode = -1, optional float fCooldownTimeOverride = -1.0000000) +{ + local TgDeviceFire FireMode; + + // End:0xAF + if(m_bMissedPull && fCooldownTimeOverride < 0.0000000) + { + // End:0x63 + if(nMode >= 0) + { + FireMode = GetDeviceFire(nMode); + } + else + { + FireMode = GetCurrentFire(); + } + // End:0xAF + if(FireMode != none) + { + fCooldownTimeOverride = FireMode.GetCustomValue5(); + } + } + super.AuthStartCooldown(nMode, fCooldownTimeOverride); + //return; +} + +simulated event bool CanBeCanceled() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function FirePreHitDelay() + { + LockInput(true); + m_bTeleportedAfterFiring = false; + super.FirePreHitDelay(); + //return; + } + + simulated function Tick(float DeltaSeconds) + { + local TgPawn TgP; + local TgDeviceFire FireMode; + + super(Actor).Tick(DeltaSeconds); + // End:0x2D8 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x27D + if(m_bIsPulling) + { + FireMode = GetCurrentFire(); + // End:0xC0 + if(((m_PullTarget != none) && FireMode != none) && FireMode.IsValidTarget(m_PullTarget)) + { + m_vPullLocation = m_PullTarget.Location; + } + TgP = TgPawn(Instigator); + // End:0x27A + if(TgP != none) + { + // End:0x190 + if(VSizeSq(m_vPullLocation - TgP.Location) < (((m_fPullEndOffset * m_fPullEndOffset) * float(16)) * float(16))) + { + TgP.Velocity = TgP.Velocity * m_fMomentumAfterPull; + EndPull(); + } + else + { + // End:0x217 + if((m_bHasPulledOnce && (((m_fPullSpeed * m_fPullSpeed) * 0.2000000) * 0.2000000) > VSizeSq(TgP.Velocity)) || TgP.bJustTeleported) + { + EndPull(); + } + else + { + m_bHasPulledOnce = true; + TgP.Velocity = -Normal(TgP.Location - m_vPullLocation) * m_fPullSpeed; + } + } + } + } + else + { + TgP = TgPawn(Instigator); + // End:0x2D8 + if((TgP != none) && TgP.bJustTeleported) + { + m_bTeleportedAfterFiring = true; + } + } + } + //return; + } + + simulated function StopFiringLogic() + { + local TgPawn TgP; + + super.StopFiringLogic(); + LockInput(false); + // End:0xA0 + if(m_bIsPulling) + { + TgP = TgPawn(Instigator); + // End:0x94 + if(TgP != none) + { + TgP.SetProperty(32, TgP.GetPropCurrentValue(32) - float(1)); + } + m_bIsPulling = false; + } + m_PullTarget = none; + //return; + } + stop; +} + +defaultproperties +{ + m_fPullSpeed=2000.0000000 + m_fTruePostfireTime=0.3000000 + m_fPullEndOffset=7.0000000 + m_fMomentumAfterPull=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_WYRMJets.uc b/exported/TgGame/Classes/TgDevice_WYRMJets.uc new file mode 100755 index 00000000..5c56a2fc --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_WYRMJets.uc @@ -0,0 +1,47 @@ +class TgDevice_WYRMJets extends TgDevice + native(ChampDrogoz) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var TgDevice m_CachedBoosterDevice; + +// Export UTgDevice_WYRMJets::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +simulated event LinkedDeviceEquipped(TgDevice Dev) +{ + // End:0x11 + if(Dev == none) + { + return; + } + super.LinkedDeviceEquipped(Dev); + switch(Dev.r_nDeviceId) + { + // End:0x69 + case 13333: + m_CachedBoosterDevice = Dev; + return; + // End:0xFFFF + default: + //return; + break; + } +} + +simulated event LinkedDeviceUnequipped(TgDevice Dev) +{ + super.LinkedDeviceUnequipped(Dev); + // End:0x35 + if(Dev == m_CachedBoosterDevice) + { + m_CachedBoosterDevice = none; + } + //return; +} + +defaultproperties +{ + m_nLinkedDeviceIDs[0]=13333 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_WardersField.uc b/exported/TgGame/Classes/TgDevice_WardersField.uc new file mode 100755 index 00000000..9379335b --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_WardersField.uc @@ -0,0 +1,107 @@ +class TgDevice_WardersField extends TgDevice + hidecategories(Navigation); + +const WARDERSFIELD_POST_DEPLOY_LOCKOUT_TIME = 0.3f; + +simulated function bool InterceptSlotPressed(TgPlayerController TgController) +{ + // End:0x26 + if(IsFiring()) + { + // End:0x24 + if(CanBeCanceled()) + { + InterruptFiring(); + } + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + local float firePostHitTime; + + // End:0x4A + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0x4A + if(firePostHitTime > 0.5000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +event OnDeployableDestroyed(TgDeployable deployable) +{ + // End:0x45 + if(deployable == r_Deployable) + { + r_Deployable = none; + // End:0x39 + if(IsFiring()) + { + InterruptFiring(); + } + StartCooldown(); + } + //return; +} + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + local float firePostHitTime; + + // End:0x1C + if(IsTimerActive('FirePreHitDelay')) + { + return true; + } + else + { + // End:0xA3 + if(IsTimerActive('FirePostHitDelay')) + { + // End:0x6E + if((Current != none) && Current.r_nDeviceId == 16251) + { + return false; + } + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0xA1 + if(firePostHitTime > 0.3000000) + { + return false; + } + return true; + } + } + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StopFiringLogic() + { + super.StopFiringLogic(); + // End:0x44 + if(r_Deployable != none) + { + r_Deployable.DestroyIt(); + r_Deployable = none; + } + //return; + } + stop; +} + +defaultproperties +{ + m_bDeployAtFeetOnFailure=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_WarpStep.uc b/exported/TgGame/Classes/TgDevice_WarpStep.uc new file mode 100755 index 00000000..456791ea --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_WarpStep.uc @@ -0,0 +1,85 @@ +class TgDevice_WarpStep extends TgDevice + hidecategories(Navigation); + +var bool m_bRolledBackward; + +simulated event bool ShouldCooldownAfterFire() +{ + return false; + //return ReturnValue; +} + +simulated function bool IsUltActive() +{ + local TgPawn_Demon PawnOwner; + + PawnOwner = TgPawn_Demon(Owner); + // End:0x4B + if(PawnOwner != none) + { + return PawnOwner.r_bIsUltActive; + } + return false; + //return ReturnValue; +} + +simulated function UpdateDesiredFireMode() +{ + m_nDesiredFireMode = ((IsUltActive()) ? 1 : 0); + //return; +} + +simulated function Rotator GetChargeDirection() +{ + // End:0x96 + if((Instigator.Acceleration.X == float(0)) && Instigator.Acceleration.Y == float(0)) + { + return Instigator.Rotation; + } + else + { + return Rotator(Normal2D(Instigator.Acceleration)); + } + //return ReturnValue; +} + +simulated function FireAmmunition() +{ + local TgDeviceFire FireMode; + local TgPawn_Demon PawnOwner; + local float fRange; + local TeleportParams TelParams; + + super.FireAmmunition(); + FireMode = GetCurrentFire(); + PawnOwner = TgPawn_Demon(Owner); + // End:0x32A + if((PawnOwner != none) && FireMode != none) + { + fRange = FireMode.GetRange(); + TelParams.vTargetLocation = PawnOwner.Location + (Vector(GetChargeDirection()) * fRange); + TelParams.rTargetRotation = PawnOwner.Rotation; + TelParams.bPlayFx = true; + TelParams.bDoBackTrace = true; + TelParams.vBackTraceDir = -Vector(GetChargeDirection()); + TelParams.fBackTraceIncrement = PawnOwner.GetCollisionRadius(); + TelParams.fBackTraceMaxDist = fRange * 0.5000000; + TelParams.bLookForGround = true; + TelParams.fGroundSearchHeight = FireMode.GetCustomValue1() * float(16); + TelParams.fGroundSearchRayRadius = PawnOwner.GetCollisionRadius(); + TelParams.bCheckLineOfSight = true; + TelParams.fMovementCorrectionDisableTime = 0.3000000; + // End:0x32A + if(PawnOwner.AdvancedTeleport(TelParams)) + { + PawnOwner.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + StartCooldown(); + } + } + //return; +} + +defaultproperties +{ + m_IndividualOffhandCooldownTime=0.3000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Watchtower.uc b/exported/TgGame/Classes/TgDevice_Watchtower.uc new file mode 100755 index 00000000..ec73491f --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Watchtower.uc @@ -0,0 +1,3 @@ +class TgDevice_Watchtower extends TgDevice + native(ChampFlak) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_WeaponSwap.uc b/exported/TgGame/Classes/TgDevice_WeaponSwap.uc new file mode 100755 index 00000000..3047ad71 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_WeaponSwap.uc @@ -0,0 +1,113 @@ +class TgDevice_WeaponSwap extends TgDevice + native(ChampOwl) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + // End:0xC2 + if(((Current != none) && Current.IsAbility() || Current.m_bHandDevice) && (GetRemainingTimeForTimer('FirePreHitDelay') > ((HasRemoteOwner()) ? 0.1000000 : 0.0000000)) || GetRemainingTimeForTimer('FiringEndTransition') > ((HasRemoteOwner()) ? 0.1000000 : 0.0000000)) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return super.CanBeCanceled() && !TgPawn(Instigator).AreAnyOtherOffhandsLockingFiring(self); + //return ReturnValue; +} + +simulated event bool IsFunctionallyToggleDevice() +{ + return true; + //return ReturnValue; +} + +// Export UTgDevice_WeaponSwap::execNotifyWeaponSwap(FFrame&, void* const) +native function NotifyWeaponSwap(float fSwapTime); + +simulated function HandleDeviceFormStartFire(int nDeviceModeNum, float fRefireTime, const out AimData Aim) +{ + super.HandleDeviceFormStartFire(nDeviceModeNum, GetFiringPreHitDelay(nDeviceModeNum), Aim); + //return; +} + +simulated function FiringEndTransition() +{ + TgPawn_Owl(Instigator).FinishedWeaponSwap(); + //return; +} + +// Export UTgDevice_WeaponSwap::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + ClearTimer('FiringEndTransition'); + TgPawn_Owl(Instigator).SwapToSecondWeapon(true); + NotifyWeaponSwap(GetFiringPreHitDelay(int(CurrentFireMode))); + super.StartFiringLogic(); + //return; + } + + simulated function FirePreHitDelay() + { + super.FirePreHitDelay(); + TgPawn_Owl(Instigator).FinishedWeaponSwap(); + ClearTimer('FirePostHitDelay'); + //return; + } + + simulated function StopFiringLogic() + { + local float fTransitionTime; + + fTransitionTime = GetFiringPostHitDelay(); + SetTimer(fTransitionTime, false, 'FiringEndTransition'); + NotifyWeaponSwap(fTransitionTime); + TgPawn_Owl(Instigator).SwapToSecondWeapon(false); + // End:0x9D + if(ShouldInterruptReloadOnFire()) + { + TgPawn_Owl(Instigator).InterruptInhandReload(); + } + TgPawn(Instigator).FlashStartFire(r_nDeviceInstanceId, int(CurrentFireMode), fTransitionTime, none, GetCurrentAmmoAmount()); + // End:0x13A + if(c_DeviceForm != none) + { + c_DeviceForm.StartFire(int(CurrentFireMode), fTransitionTime, none, GetCurrentAmmoAmount()); + } + super.StopFiringLogic(); + //return; + } + stop; +} + +defaultproperties +{ + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetVert[1]=(KeyframeName="V100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetVert[2]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[2]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftlowx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[2]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[1]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[1]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_nAimAssistPriorityWhileFiring=3 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Weightless.uc b/exported/TgGame/Classes/TgDevice_Weightless.uc new file mode 100755 index 00000000..b5ecda94 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Weightless.uc @@ -0,0 +1,119 @@ +class TgDevice_Weightless extends TgDevice + native(ChampPip) + hidecategories(Navigation); + +var float r_fSprintHorizontalSpeedMod; +var float r_fSprintJumpSpeedMod; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_fSprintHorizontalSpeedMod, r_fSprintJumpSpeedMod; +} + +// Export UTgDevice_Weightless::execShouldInterruptLift(FFrame&, void* const) +native function bool ShouldInterruptLift(); + +simulated function float GetHorizontalSpeedMultiplier() +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x51 + if(FireMode != none) + { + return FMax(FireMode.GetCustomValue1() / 100.0000000, 0.0000000); + } + return 0.0000000; + //return ReturnValue; +} + +simulated function float GetJumpSpeedMultiplier() +{ + local TgDeviceFire FireMode; + + FireMode = GetCurrentFire(); + // End:0x51 + if(FireMode != none) + { + return FMax(FireMode.GetCustomValue2() / 100.0000000, 0.0000000); + } + return 0.0000000; + //return ReturnValue; +} + +final simulated function float CalcWeightlessHorizontalMultiplier() +{ + return (1.0000000 + (GetHorizontalSpeedMultiplier())) + r_fSprintHorizontalSpeedMod; + //return ReturnValue; +} + +final simulated function float CalcWeightlessJumpMultiplier() +{ + return (1.0000000 + (GetJumpSpeedMultiplier())) + r_fSprintJumpSpeedMod; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + local float firePostHitTime; + + // End:0x4A + if(IsTimerActive('FirePostHitDelay')) + { + firePostHitTime = GetTimerCount('FirePostHitDelay'); + // End:0x4A + if(firePostHitTime > 0.5000000) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated function bool ShouldInterruptReloadOnFire() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgPawn_Pip Pip; + + Pip = TgPawn_Pip(Instigator); + // End:0x5E + if(Pip != none) + { + Pip.StartWeightless(CalcWeightlessHorizontalMultiplier(), CalcWeightlessJumpMultiplier()); + } + super.StartFiringLogic(); + //return; + } + + simulated function StopFiringLogic() + { + local TgPawn_Pip Pip; + + Pip = TgPawn_Pip(Instigator); + // End:0x4A + if(Pip != none) + { + Pip.EndWeightless(); + } + super.StopFiringLogic(); + //return; + } + stop; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit + m_bPostFireShouldInterruptStealth=false + m_bAbilityRequiresInhandResync=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Whirl.uc b/exported/TgGame/Classes/TgDevice_Whirl.uc new file mode 100755 index 00000000..6c23b859 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Whirl.uc @@ -0,0 +1,45 @@ +class TgDevice_Whirl extends TgDevice_Charge + hidecategories(Navigation); + +simulated function Rotator GetChargeDirection() +{ + return Instigator.Rotation; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated event StartCharge() + { + local TgPawn_Darklord darklord; + + darklord = TgPawn_Darklord(Instigator); + // End:0x4C + if(darklord != none) + { + darklord.m_bUseWhirlZoom = true; + } + super.StartCharge(); + //return; + } + + simulated event EndCharge() + { + local TgPawn_Darklord darklord; + + darklord = TgPawn_Darklord(Instigator); + // End:0x4C + if(darklord != none) + { + darklord.m_bUseWhirlZoom = false; + } + super.EndCharge(); + //return; + } + stop; +} + +defaultproperties +{ + m_bCanLeftClickCancel=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Whirlwind.uc b/exported/TgGame/Classes/TgDevice_Whirlwind.uc new file mode 100755 index 00000000..105cc797 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Whirlwind.uc @@ -0,0 +1,170 @@ +class TgDevice_Whirlwind extends TgDevice_HitPulse + native(ChampGrover) + hidecategories(Navigation); + +// Export UTgDevice_Whirlwind::execMustBeOnGroundToFire(FFrame&, void* const) +native function bool MustBeOnGroundToFire(); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return IsFiring(); + //return ReturnValue; +} + +// Export UTgDevice_Whirlwind::execCanFireIfLeftMouseDown(FFrame&, void* const) +native function bool CanFireIfLeftMouseDown(); + +simulated event bool CanBeInterrupted() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return GetTimerCount('PersistTimer') > 0.5000000; + //return ReturnValue; +} + +simulated event bool CanJumpWhileFiring() +{ + return false; + //return ReturnValue; +} + +simulated event bool CancelledByJumping() +{ + return false; + //return ReturnValue; +} + +simulated function PersistTimer() +{ + local TgPawn TgP; + local float fTimingError, fPostHitDelay; + local TgDeviceFire FireMode; + + TgP = TgPawn(Instigator); + // End:0x9B + if(TgP != none) + { + TgP.m_fZoomDistOverride = 0.0000000; + TgP.m_fZoomDurationOverride = self.GetCurrentFire().GetCustomValue3(); + } + // End:0xD5 + if(s_WhileFiringDeviceMode != none) + { + s_WhileFiringDeviceMode.RemoveHitSpecial(Instigator, true); + } + // End:0x104 + if(c_DeviceForm != none) + { + c_DeviceForm.Generic1(); + } + // End:0x13E + if(TgP != none) + { + TgP.FlashGeneric1(r_nDeviceInstanceId, 0); + } + // End:0x157 + if(m_IsBeingInterrupted) + { + super.PersistTimer(); + return; + } + // End:0x187 + if(LogDebugInfo()) + { + FireMode = GetCurrentFire(); + // End:0x187 + if(FireMode != none) + { + } + } + ClearTimer('PersistTimer'); + ClearTimer('PulseHit'); + // End:0x1F2 + if(m_bCarryPreFireToPostFire) + { + fTimingError = WorldInfo.TimeSeconds - m_fFiringTimer; + } + else + { + fTimingError = 0.0000000; + } + fPostHitDelay = GetCachedFiringPostHitDelay(); + m_fFiringTimer = (WorldInfo.TimeSeconds + (fPostHitDelay / CustomTimeDilation)) - fTimingError; + m_fTimeStampAccountedFor = WorldInfo.TimeSeconds; + m_fTimeAccountedFor = 0.0000000; + fPostHitDelay = FMax(0.0000000, fPostHitDelay - (fTimingError * CustomTimeDilation)); + // End:0x2D2 + if(LogDebugInfo()) + { + } + // End:0x310 + if(s_WhileFiringDeviceMode != none) + { + s_WhileFiringDeviceMode.ApplyEffectType(Instigator, 10456); + } + // End:0x33D + if(fPostHitDelay > 0.0000000) + { + SetTimer(fPostHitDelay, false, 'FirePostHitDelay'); + } + else + { + bPendingFire = false; + FirePostHitDelay(); + } + //return; +} + +simulated state DeviceFiring +{ + simulated function bool ShouldRefire(TgDeviceFire FireMode, const out AimData Aim) + { + return false; + //return ReturnValue; + } + + simulated function FirePreHitDelay() + { + local TgPawn TgP; + + super.FirePreHitDelay(); + TgP = TgPawn(Instigator); + // End:0x81 + if(TgP != none) + { + TgP.m_fZoomDistOverride = self.GetCurrentFire().GetCustomValue2(); + } + // End:0xBB + if(s_WhileFiringDeviceMode != none) + { + s_WhileFiringDeviceMode.ApplyHitSpecial(Instigator); + } + //return; + } + + simulated function StopFiringLogic() + { + local TgPawn TgP; + + super.StopFiringLogic(); + TgP = TgPawn(Instigator); + // End:0x7D + if(TgP != none) + { + TgP.m_fZoomDistOverride = 0.0000000; + TgP.m_fZoomDurationOverride = 0.0000000; + } + //return; + } + stop; +} + +defaultproperties +{ + m_bAlwaysStartCooldown=false + m_bDisableLagCompensation=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Whirlwind2.uc b/exported/TgGame/Classes/TgDevice_Whirlwind2.uc new file mode 100755 index 00000000..3241eb70 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Whirlwind2.uc @@ -0,0 +1,19 @@ +class TgDevice_Whirlwind2 extends TgDevice_ActiveAura + hidecategories(Navigation); + +simulated event bool ShouldLockFiring(TgDevice Current) +{ + return IsFiring(); + //return ReturnValue; +} + +simulated event bool CanBeCanceled() +{ + return GetTimerCount('FirePostHitDelay') > 0.5000000; + //return ReturnValue; +} + +defaultproperties +{ + m_DeviceTimerBarType=DeviceTimerBarType.DTBT_PostHit +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_WindTotem.uc b/exported/TgGame/Classes/TgDevice_WindTotem.uc new file mode 100755 index 00000000..6e74abb8 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_WindTotem.uc @@ -0,0 +1,3 @@ +class TgDevice_WindTotem extends TgDevice_TotemMod + native(Devices) + hidecategories(Navigation); diff --git a/exported/TgGame/Classes/TgDevice_Withdraw.uc b/exported/TgGame/Classes/TgDevice_Withdraw.uc new file mode 100755 index 00000000..96ca94c5 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Withdraw.uc @@ -0,0 +1,47 @@ +class TgDevice_Withdraw extends TgDevice_ChargeBackward + native(ChampLongbow) + hidecategories(Navigation); + +// Export UTgDevice_Withdraw::execMustBeOnGroundToFire(FFrame&, void* const) +native function bool MustBeOnGroundToFire(); + +simulated event bool ShouldInterruptInhand() +{ + return false; + //return ReturnValue; +} + +simulated state DeviceFiring +{ + simulated function StartFiringLogic() + { + local TgPawn PawnOwner; + local TgDevice plantedDev; + + PawnOwner = TgPawn(Owner); + // End:0xA6 + if(PawnOwner != none) + { + plantedDev = PawnOwner.GetDeviceById(14988); + // End:0xA6 + if(plantedDev != none) + { + plantedDev.InterruptFiring(); + plantedDev.ClientInterrupt(); + } + } + super.StartFiringLogic(); + //return; + } + stop; +} + +defaultproperties +{ + m_bBuildupShouldInterruptStealth=false + m_bPreFireShouldInterruptStealth=false + m_bFireShouldInterruptStealth=false + m_bPostFireShouldInterruptStealth=false + m_bCancelingShouldInterruptStealth=false + m_bForce3PViewWhileFiring=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_YingInhand.uc b/exported/TgGame/Classes/TgDevice_YingInhand.uc new file mode 100755 index 00000000..fe0b9215 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_YingInhand.uc @@ -0,0 +1,139 @@ +class TgDevice_YingInhand extends TgDevice + native(ChampYing) + hidecategories(Navigation); + +var TgPawn_Ying m_CachedYingPawn; + +// Export UTgDevice_YingInhand::execCanReload(FFrame&, void* const) +native function bool CanReload(optional bool bIsAutoReload = false); + +simulated event bool CanBeCanceled() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldCooldownAfterFire() +{ + return false; + //return ReturnValue; +} + +simulated function bool HasCachedYingPawn() +{ + // End:0x2B + if(m_CachedYingPawn == none) + { + m_CachedYingPawn = TgPawn_Ying(Instigator); + } + return m_CachedYingPawn != none; + //return ReturnValue; +} + +simulated function ImpactInfo CalcWeaponFire(AimData Aim, optional out array ImpactList) +{ + local ImpactInfo Impact; + + Impact = super.CalcWeaponFire(Aim, ImpactList); + UpdateInhandTargetInfo(Impact.HitActor, Impact.HitLocation); + return Impact; + //return ReturnValue; +} + +function OnInstantShotVerified(ImpactInfo VerifiedPrimaryImpact) +{ + UpdateInhandTargetInfo(VerifiedPrimaryImpact.HitActor, VerifiedPrimaryImpact.HitLocation); + //return; +} + +simulated function UpdateInhandTargetInfo(Actor HitActor, Vector HitLocation) +{ + local TgDeployable deployTarget; + + // End:0x195 + if(HasCachedYingPawn()) + { + m_CachedYingPawn.r_InhandTarget = HitActor; + // End:0x174 + if(m_CachedYingPawn.r_InhandTarget != none) + { + deployTarget = TgDeployable(HitActor); + // End:0x122 + if((deployTarget != none) && int(deployTarget.m_CollisionSettings.mCollisionMode) != int(0)) + { + m_CachedYingPawn.r_InhandHitOffset = HitLocation - m_CachedYingPawn.r_InhandTarget.Location; + } + else + { + // End:0x174 + if(!IsZero(m_CachedYingPawn.r_InhandHitOffset)) + { + m_CachedYingPawn.r_InhandHitOffset = vect(0.0000000, 0.0000000, 0.0000000); + } + } + } + m_CachedYingPawn.bNetDirty = true; + } + //return; +} + +function HandleClientReportedInstantShot(AimData InServerAim, AimData InClientAim, ImpactToValidate InPrimaryImpact, array InClientImpacts) +{ + local ImpactInfo VerifiedPrimaryImpact; + local array hitRanges; + + PendingImpactList.Length = 0; + // End:0x129 + if(ValidateClientInstantHit(VerifiedPrimaryImpact, PendingImpactList, InServerAim, InClientAim, InPrimaryImpact, InClientImpacts, hitRanges)) + { + // End:0xA0 + if(HasCachedYingPawn()) + { + m_CachedYingPawn.r_InhandTarget = VerifiedPrimaryImpact.HitActor; + } + PlayClientFireFx(VerifiedPrimaryImpact.HitLocation, m_nSocketIndex, Class'TgGame.TgDevice'.static.IsSuccessfulHitImpact(VerifiedPrimaryImpact.HitActor), GetRefireTime()); + DeliverQueuedPendingHits(); + UpdateIndex(); + } + //return; +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_bUsesBurstFire=true + m_bOnlyFirstBurstCostsAmmo=true + m_bDoNotAllowHeadShots=true + m_vMeshViewOffset=(X=10.0000000,Y=2.0000000,Z=-2.0000000) + m_fWeaponBob=0.0000000 + m_vProjectileSpawnOffset=(X=0.0000000,Y=4.0000000,Z=-9.0000000) + m_fAltFireLockOutTime=0.0000000 + m_nBurstTotalShots=5 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_YingInhand' + m_AimAssistKeyframesMagnetVert[0]=(KeyframeName="V10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetVert[1]=(KeyframeName="V100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetVert[2]=(KeyframeName="V150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesMagnetHoriz[0]=(KeyframeName="H10ft",Distance=160.0000000) + m_AimAssistKeyframesMagnetHoriz[1]=(KeyframeName="H50ft",Distance=800.0000000) + m_AimAssistKeyframesMagnetHoriz[2]=(KeyframeName="H100ft",Distance=1600.0000000) + m_AimAssistKeyframesMagnetHoriz[3]=(KeyframeName="H150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccHoriz[0]=(KeyframeName="trackacc10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAccHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccHoriz[2]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[0]=(KeyframeName="trackang10ftx",Distance=160.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[1]=(KeyframeName="BasicX",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleHoriz[2]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAccVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAccVert[1]=(KeyframeName="trackacc150ftnull",Distance=2400.0000000) + m_AimAssistKeyframesTrackingAngleVert[0]=(KeyframeName="BasicY",Distance=1600.0000000) + m_AimAssistKeyframesTrackingAngleVert[1]=(KeyframeName="trackang150ftnull",Distance=2400.0000000) + m_ForceFeedbackStartFire=ForceFeedbackWaveform'gp_forcefeedback.FireYing' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_YingInhandProj.uc b/exported/TgGame/Classes/TgDevice_YingInhandProj.uc new file mode 100755 index 00000000..ea7a2ef9 --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_YingInhandProj.uc @@ -0,0 +1,64 @@ +class TgDevice_YingInhandProj extends TgDevice + native(ChampYing) + hidecategories(Navigation); + +// Export UTgDevice_YingInhandProj::execCanReload(FFrame&, void* const) +native function bool CanReload(optional bool bIsAutoReload = false); + +simulated event bool CanBeCanceled() +{ + return false; + //return ReturnValue; +} + +simulated event bool CanBeInterrupted() +{ + return false; + //return ReturnValue; +} + +simulated event bool ShouldCooldownAfterFire() +{ + return false; + //return ReturnValue; +} + +simulated function HandleDeviceFormStartFire(int nDeviceModeNum, float fRefireTime, const out AimData Aim) +{ + local float totalBurstTime; + + // End:0xF9 + if(m_bIsFirstBurstShot) + { + totalBurstTime = GetEstimatedTotalBurstTime(m_nBurstShotsRemaining); + TgPawn(Instigator).FlashStartFire(r_nDeviceInstanceId, nDeviceModeNum, totalBurstTime, Aim.HitActor, GetCurrentAmmoAmount()); + // End:0xF9 + if(c_DeviceForm != none) + { + c_DeviceForm.StartFire(nDeviceModeNum, totalBurstTime, Aim.HitActor, GetCurrentAmmoAmount()); + } + } + //return; +} + +simulated function float GetEstimatedTotalBurstTime(int nShotsRemaining) +{ + return (FMax(0.0000000, float(nShotsRemaining - 1)) * GetCurrentFire().GetCustomValue1()) + GetCurrentFire().m_fFirePostHitDelay; + //return ReturnValue; +} + +defaultproperties +{ + m_AltFireType=EAltFireType.ALTFIRE_AlternateDevice + m_bAimThroughReticule=true + m_bAltFireEnabled=true + m_bUsesBurstFire=true + m_bOnlyFirstBurstCostsAmmo=true + m_bDoNotAllowHeadShots=true + m_vMeshViewOffset=(X=10.0000000,Y=2.0000000,Z=-2.0000000) + m_fWeaponBob=0.0000000 + m_vProjectileSpawnOffset=(X=55.0000000,Y=10.0000000,Z=-15.0000000) + m_fAltFireLockOutTime=0.0000000 + m_nBurstTotalShots=3 + m_WeaponMeshActorClass=Class'TgGame.TgWeaponMeshActor_YingInhandProj' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDevice_Zodiac.uc b/exported/TgGame/Classes/TgDevice_Zodiac.uc new file mode 100755 index 00000000..28549cbd --- /dev/null +++ b/exported/TgGame/Classes/TgDevice_Zodiac.uc @@ -0,0 +1,22 @@ +class TgDevice_Zodiac extends TgDevice + native(ChampAstro) + hidecategories(Navigation) + implements(TgDeviceInterface_MoveSpeedMultiplier); + +var private native const noexport Pointer VfTable_ITgDeviceInterface_MoveSpeedMultiplier; +var array m_EffectRemainingTime; + +// Export UTgDevice_Zodiac::execApplyBuff(FFrame&, void* const) +native function ApplyBuff(); + +// Export UTgDevice_Zodiac::execRemoveBuff(FFrame&, void* const) +native function RemoveBuff(); + +simulated event bool CanBeInterrupted() +{ + return true; + //return ReturnValue; +} + +// Export UTgDevice_Zodiac::execGetMoveSpeedMultiplier(FFrame&, void* const) +native function float GetMoveSpeedMultiplier(); diff --git a/exported/TgGame/Classes/TgDistributionFloatLitParticleBrightness.uc b/exported/TgGame/Classes/TgDistributionFloatLitParticleBrightness.uc new file mode 100755 index 00000000..46eaa2a8 --- /dev/null +++ b/exported/TgGame/Classes/TgDistributionFloatLitParticleBrightness.uc @@ -0,0 +1,11 @@ +class TgDistributionFloatLitParticleBrightness extends DistributionFloatConstant + native + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +defaultproperties +{ + Constant=12.0000000 + bCanBeBaked=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDistributionFloatSoundAttenuation.uc b/exported/TgGame/Classes/TgDistributionFloatSoundAttenuation.uc new file mode 100755 index 00000000..435d2544 --- /dev/null +++ b/exported/TgGame/Classes/TgDistributionFloatSoundAttenuation.uc @@ -0,0 +1,60 @@ +class TgDistributionFloatSoundAttenuation extends DistributionFloat + native + config(Engine) + editinlinenew + collapsecategories + hidecategories(Object,Object); + +enum SoundAttenuationType +{ + TG_ATTENUATION_None, // 0 + TG_ATTENUATION_Sm_foley, // 1 + TG_ATTENUATION_Lg_foley, // 2 + TG_ATTENUATION_Melee_Hit, // 3 + TG_ATTENUATION_Sm_gun, // 4 + TG_ATTENUATION_Med_gun, // 5 + TG_ATTENUATION_Lg_gun, // 6 + TG_ATTENUATION_Sm_exp, // 7 + TG_ATTENUATION_Med_exp, // 8 + TG_ATTENUATION_Lg_exp, // 9 + TG_ATTENUATION_MAX // 10 +}; + +struct native AttenuationGroup +{ + var name GroupName; + var float AttenuationDistance; + + structdefaultproperties + { + GroupName="None" + AttenuationDistance=0.0000000 + } +}; + +var TgDistributionFloatSoundAttenuation.SoundAttenuationType AttenuationType; +var config float Attenuation_Sm_foley; +var config float Attenuation_Lg_foley; +var config float Attenuation_Melee_hit; +var config float Attenuation_Sm_gun; +var config float Attenuation_Med_gun; +var config float Attenuation_Lg_gun; +var config float Attenuation_Sm_exp; +var config float Attenuation_Med_exp; +var config float Attenuation_Lg_exp; +var() name GroupName; +var config array AttenuationGroups; + +defaultproperties +{ + AttenuationGroups[0]=(GroupName="Sm_foley",AttenuationDistance=1600.0000000) + AttenuationGroups[1]=(GroupName="Lg_foley",AttenuationDistance=3200.0000000) + AttenuationGroups[2]=(GroupName="Melee_hit",AttenuationDistance=6400.0000000) + AttenuationGroups[3]=(GroupName="Sm_gun",AttenuationDistance=4800.0000000) + AttenuationGroups[4]=(GroupName="Med_gun",AttenuationDistance=12800.0000000) + AttenuationGroups[5]=(GroupName="Lg_gun",AttenuationDistance=48000.0000000) + AttenuationGroups[6]=(GroupName="Sm_exp",AttenuationDistance=14400.0000000) + AttenuationGroups[7]=(GroupName="Med_exp",AttenuationDistance=80000.0000000) + AttenuationGroups[8]=(GroupName="Lg_exp",AttenuationDistance=144000.0000000) + bCanBeBaked=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDoorMarker.uc b/exported/TgGame/Classes/TgDoorMarker.uc new file mode 100755 index 00000000..88b42c76 --- /dev/null +++ b/exported/TgGame/Classes/TgDoorMarker.uc @@ -0,0 +1,322 @@ +class TgDoorMarker extends TgTeamBlocker + native(Navigation) + placeable + hidecategories(Navigation); + +enum DoorStatus +{ + TGD_NONE, // 0 + TGD_LOCKED, // 1 + TGD_OPEN, // 2 + TGD_CLOSE, // 3 + TGD_MAX // 4 +}; + +var repnotify TgDoorMarker.DoorStatus r_eStatus; +var() TgDoorMarker.DoorStatus m_eInitStatus; +var TgCollisionProxy s_CollisionProxy; +var() float m_fProximity; +var() int m_nTeamThatControlsDoor; +var() int m_nMeshAssemblyId; +var() export editinline SkeletalMeshComponent m_DoorSMC; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_eStatus; +} + +// Export UTgDoorMarker::execLoadMesh(FFrame&, void* const) +native function LoadMesh(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x23 + if(VarName == 'r_eStatus') + { + ClientOnStatusChange(); + return; + } + super(Actor).ReplicatedEvent(VarName); + //return; +} + +simulated function PostBeginPlay() +{ + LoadMesh(); + super(TgMeshAssembly).PostBeginPlay(); + //return; +} + +simulated function ClientOnStatusChange() +{ + local AnimNodeSequence AnimNode; + local float AnimStartTime; + + // End:0x2A8 + if(m_DoorSMC != none) + { + AnimNode = AnimNodeSequence(m_DoorSMC.Animations); + // End:0xED + if((AnimNode == none) && m_DoorSMC.Animations.IsA('AnimTree')) + { + AnimNode = AnimNodeSequence(AnimTree(m_DoorSMC.Animations).Children[0].Anim); + } + // End:0x1BF + if(int(r_eStatus) == int(2)) + { + m_Mesh.FxActivateGroup('DoorOpening', 0); + // End:0x1BC + if(AnimNode != none) + { + AnimStartTime = ((AnimNode.bPlaying) ? AnimNode.CurrentTime : 0.0000000); + AnimNode.PlayAnim(false, 1.0000000, AnimStartTime); + } + } + else + { + // End:0x2A8 + if(int(r_eStatus) == int(3)) + { + m_Mesh.FxActivateGroup('DoorClosing', 0); + // End:0x2A8 + if(AnimNode != none) + { + AnimStartTime = ((AnimNode.bPlaying) ? AnimNode.CurrentTime : AnimNode.GetAnimPlaybackLength()); + AnimNode.PlayAnim(false, -1.0000000, AnimStartTime); + } + } + } + } + //return; +} + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + CalculateDoorStatus(); + //return; +} + +event UnTouch(Actor Other) +{ + CalculateDoorStatus(); + //return; +} + +function bool ShouldDoorBeOpened() +{ + local bool bShouldOpen; + local array NearByPlayerTaskforces; + local int I; + + // End:0x1E + if(m_nTeamThatControlsDoor == 0) + { + bShouldOpen = true; + } + else + { + // End:0x56 + if(s_CollisionProxy != none) + { + s_CollisionProxy.GetNearByPlayersTaskforce(NearByPlayerTaskforces); + } + I = 0; + J0x61: + + // End:0xB7 [Loop If] + if(I < NearByPlayerTaskforces.Length) + { + // End:0xA9 + if(NearByPlayerTaskforces[I] == m_nTeamThatControlsDoor) + { + bShouldOpen = true; + // [Explicit Break] + goto J0xB7; + } + I++; + // [Loop Continue] + goto J0x61; + } + } + J0xB7: + + return bShouldOpen; + //return ReturnValue; +} + +function bool ShouldDoorBeClosed() +{ + local bool bShouldClose; + local array NearByPlayerTaskforces; + local int I; + + // End:0x38 + if(s_CollisionProxy != none) + { + s_CollisionProxy.GetNearByPlayersTaskforce(NearByPlayerTaskforces); + } + bShouldClose = true; + // End:0x6E + if(m_nTeamThatControlsDoor == 0) + { + bShouldClose = NearByPlayerTaskforces.Length == 0; + } + else + { + I = 0; + J0x79: + + // End:0xCF [Loop If] + if(I < NearByPlayerTaskforces.Length) + { + // End:0xC1 + if(NearByPlayerTaskforces[I] == m_nTeamThatControlsDoor) + { + bShouldClose = false; + // [Explicit Break] + goto J0xCF; + } + I++; + // [Loop Continue] + goto J0x79; + } + } + J0xCF: + + return bShouldClose; + //return ReturnValue; +} + +function CalculateDoorStatus() +{ + // End:0x16 + if(int(r_eStatus) == int(1)) + { + return; + } + // End:0x46 + if(int(r_eStatus) != int(2)) + { + // End:0x43 + if(ShouldDoorBeOpened()) + { + SetDoorStatus(2); + } + } + else + { + // End:0x73 + if(int(r_eStatus) != int(3)) + { + // End:0x73 + if(ShouldDoorBeClosed()) + { + SetDoorStatus(3); + } + } + } + //return; +} + +function SetDoorStatus(TgDoorMarker.DoorStatus eStatus) +{ + local int nStatusEventIndex; + local AnimNodeSequence AnimNode; + local float AnimStartTime; + + nStatusEventIndex = -1; + // End:0x2C + if(int(r_eStatus) == int(eStatus)) + { + return; + } + // End:0x119 + if(m_DoorSMC != none) + { + AnimNode = AnimNodeSequence(m_DoorSMC.Animations); + // End:0x119 + if((AnimNode == none) && m_DoorSMC.Animations.IsA('AnimTree')) + { + AnimNode = AnimNodeSequence(AnimTree(m_DoorSMC.Animations).Children[0].Anim); + } + } + r_eStatus = eStatus; + ForceNetRelevant(); + switch(eStatus) + { + // End:0x1EA + case 2: + nStatusEventIndex = 0; + // End:0x1E7 + if(AnimNode != none) + { + AnimStartTime = ((AnimNode.bPlaying) ? AnimNode.CurrentTime : 0.0000000); + AnimNode.PlayAnim(false, 1.0000000, AnimStartTime); + } + // End:0x2AB + break; + // End:0x2A5 + case 3: + nStatusEventIndex = 1; + // End:0x2A2 + if(AnimNode != none) + { + AnimStartTime = ((AnimNode.bPlaying) ? AnimNode.CurrentTime : AnimNode.GetAnimPlaybackLength()); + AnimNode.PlayAnim(false, -1.0000000, AnimStartTime); + } + // End:0x2AB + break; + // End:0xFFFF + default: + // End:0x2AB + break; + break; + } + // End:0x2DD + if(nStatusEventIndex > -1) + { + TriggerEventClass(Class'TgGame.TgSeqEvent_DoorStatusChanged', self, nStatusEventIndex, false); + } + // End:0x310 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + ClientOnStatusChange(); + } + //return; +} + +defaultproperties +{ + m_nMeshAssemblyId=-1 + // Reference: SkeletalMeshComponent'TgGame.Default__TgDoorMarker.DoorSMC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DoorSMC' + begin object name="DoorSMC" class=Engine.SkeletalMeshComponent + Animations=AnimNodeSequence'TgGame.Default__TgDoorMarker.AnimNodeSeq0' + ReplacementPrimitive=none + RBChannel=ERBCollisionChannel.RBCC_GameplayPhysics + CollideActors=true + BlockActors=true + BlockZeroExtent=true + BlockNonZeroExtent=true + BlockRigidBody=true + RBCollideWithChannels=(Default=true,GameplayPhysics=true,EffectPhysics=true) + end object + m_DoorSMC=DoorSMC + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgDoorMarker.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgTeamBlocker.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + m_LightEnvironment=MyLightEnvironment + Components[0]=none + Components[1]=MyLightEnvironment + Components[2]=DoorSMC + bCollideActors=true + bBlockActors=true + CollisionComponent=DoorSMC + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDropShadowDecalComponent.uc b/exported/TgGame/Classes/TgDropShadowDecalComponent.uc new file mode 100755 index 00000000..2f4059f3 --- /dev/null +++ b/exported/TgGame/Classes/TgDropShadowDecalComponent.uc @@ -0,0 +1,24 @@ +class TgDropShadowDecalComponent extends StaticMeshComponent + native(Pawns) + editinlinenew + hidecategories(Object); + +var transient float LastCachedZ; +var transient Vector LastOwnerPos; + +// Export UTgDropShadowDecalComponent::execUpdatePosition(FFrame&, void* const) +native function UpdatePosition(TgPawn TgPOwner, const out Vector OwnerOffset, optional bool bIsInitial = false); + +defaultproperties +{ + ReplacementPrimitive=none + bAcceptsStaticDecals=false + CollideActors=false + BlockActors=false + BlockZeroExtent=false + BlockNonZeroExtent=false + BlockRigidBody=false + AlwaysLoadOnServer=false + AbsoluteRotation=true + TranslucencySortPriority=-1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgDroppedItem.uc b/exported/TgGame/Classes/TgDroppedItem.uc new file mode 100755 index 00000000..498dd857 --- /dev/null +++ b/exported/TgGame/Classes/TgDroppedItem.uc @@ -0,0 +1,191 @@ +class TgDroppedItem extends Actor + native(Inventory) + notplaceable + hidecategories(Navigation); + +var float m_fLifeSpan; +var bool m_bFadeOut; +var name m_nmPickUpState; +var repnotify int r_nItemId; +var export editinline MeshComponent c_Mesh; +var array s_EffectGroupList; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_nItemId; +} + +// Export UTgDroppedItem::execGetEffectGroup(FFrame&, void* const) +native function TgEffectGroup GetEffectGroup(int nType, out int nIndex); + +// Export UTgDroppedItem::execApplyItemSetup(FFrame&, void* const) +native function bool ApplyItemSetup(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x2F + if(VarName == 'r_nItemId') + { + ApplyItemSetup(); + GotoState(m_nmPickUpState); + } + super.ReplicatedEvent(VarName); + //return; +} + +function GiveTo(TgPawn P) +{ + local TgEffectGroup eg; + local int nIndex; + + J0x00: + // End:0x94 [Loop If] + if(nIndex >= 0) + { + eg = GetEffectGroup(264, nIndex); + // End:0x83 + if(eg != none) + { + P.r_EffectManager.ProcessEffect(eg); + } + else + { + // [Explicit Break] + goto J0x94; + } + nIndex++; + // [Loop Continue] + goto J0x00; + } + J0x94: + + Destroy(); + //return; +} + +state Pickup +{ + function bool ValidTouch(Pawn Other) + { + // End:0x83 + if(((Other == none) || !Other.bCanPickupInventory) || (Other.DrivenVehicle == none) && Other.Controller == none) + { + return false; + } + // End:0xAD + if(Other.IsInState('Dying')) + { + return false; + } + else + { + // End:0xF6 + if((TgPawn(Other) != none) && !TgPawn(Other).CanPickupDroppedItem()) + { + return false; + } + } + // End:0x14B + if(((int(Physics) == int(2)) && Other == Instigator) && Velocity.Z > float(0)) + { + return false; + } + // End:0x191 + if(!FastTrace(Other.Location, Location)) + { + SetTimer(0.5000000, false, 'RecheckValidTouch'); + return false; + } + return true; + //return ReturnValue; + } + + event RecheckValidTouch() + { + CheckTouching(); + //return; + } + + event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) + { + local TgPawn P; + + P = TgPawn(Other); + // End:0x56 + if((P != none) && ValidTouch(P)) + { + GiveTo(P); + } + //return; + } + + event Timer() + { + GotoState('FadeOut'); + //return; + } + + function CheckTouching() + { + local Pawn P; + + // End:0x43 + foreach TouchingActors(Class'Engine.Pawn', P) + { + Touch(P, none, Location, vect(0.0000000, 0.0000000, 1.0000000)); + } + //return; + } + + event BeginState(name PreviousStateName) + { + SetTimer(m_fLifeSpan - float(1), false); + SetPhysics(2); + //return; + } +Begin: + + CheckTouching(); + stop; +} + +state FadeOut extends Pickup +{ + simulated event BeginState(name PreviousStateName) + { + m_bFadeOut = true; + RotationRate.Yaw = 60000; + SetPhysics(5); + LifeSpan = 1.0000000; + //return; + } + stop; +} + +defaultproperties +{ + m_fLifeSpan=120.0000000 + m_nmPickUpState="Pickup" + // Reference: CylinderComponent'TgGame.Default__TgDroppedItem.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=20.0000000 + CollisionRadius=30.0000000 + ReplacementPrimitive=none + CollideActors=true + end object + Components[0]=CollisionCylinder + RemoteRole=ENetRole.ROLE_SimulatedProxy + CollisionType=ECollisionType.COLLIDE_TouchAll + bPushedByEncroachers=false + bAlwaysRelevant=true + bOnlyDirtyReplication=true + bCollideActors=true + bCollideWorld=true + NetUpdateFrequency=8.0000000 + NetPriority=1.4000000 + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffect.uc b/exported/TgGame/Classes/TgEffect.uc new file mode 100755 index 00000000..337bd004 --- /dev/null +++ b/exported/TgGame/Classes/TgEffect.uc @@ -0,0 +1,83 @@ +class TgEffect extends Object + native(Effects); + +const TGCM_NA = 119; +const TGCM_ADD = 67; +const TGCM_SUBTRACT = 70; +const TGCM_PERC_INCREASE = 68; +const TGCM_PERC_DECREASE = 69; +const TGCM_SET = 11042; +const TGCM_SET_PERC = 11043; +const TGCM_ADD_PERC_MAX_HEALTH = 15033; +const TG_ROOT_GROUNDSPEED = 10000; + +var TgEffectGroup m_EffectGroup; +var int m_nPropertyId; +var int m_nCalcMethodCode; +var bool m_bUseOnInterval; +var bool m_bRemovable; +var bool m_bAllowStacking; +var bool m_bApplyToProperty; +var int m_nPropertyValueId; +var float m_fCurrent; +var float m_fBase; +var float m_fMinimum; +var float m_fMaximum; +var float m_fScalingFactor; +var float m_fStaticValueOffset; +var float m_MaxKnockbackZ; +var float m_MinKnockbackZ; +var float m_KnockbackZMultiplier; + +// Export UTgEffect::execCloneEffect(FFrame&, void* const) +native function TgEffect CloneEffect(); + +// Export UTgEffect::execCanBeApplied(FFrame&, void* const) +native function bool CanBeApplied(Actor Target); + +// Export UTgEffect::execSetProperty(FFrame&, void* const) +native function SetProperty(Actor Target, int nPropertyId, float fNewValue); + +// Export UTgEffect::execApplyEffect(FFrame&, void* const) +native function bool ApplyEffect(Actor Target, optional ImpactInfo Impact, optional bool bLatent); + +// Export UTgEffect::execApplyStacks(FFrame&, void* const) +native function bool ApplyStacks(Actor Target, int nNumStacks); + +// Export UTgEffect::execRemoveStacks(FFrame&, void* const) +native function bool RemoveStacks(Actor Target, int nNumStacks); + +// Export UTgEffect::execApplyToProperty(FFrame&, void* const) +native function ApplyToProperty(Actor Target, int nPropertyId, float fProratedAmount, optional bool bRemove = false); + +// Export UTgEffect::execGetProratedValue(FFrame&, void* const) +native function float GetProratedValue(); + +// Export UTgEffect::execReapply(FFrame&, void* const) +native function Reapply(Actor Target); + +// Export UTgEffect::execRemove(FFrame&, void* const) +native function Remove(Actor Target, optional bool bResetToFollow); + +// Export UTgEffect::execTrackStats(FFrame&, void* const) +native function TrackStats(TgPawn Instigator, Actor Target, ImpactInfo Impact, float fDamage, int iTargetDeviceModeId, bool bIsEnemy, optional float fMissingHealth = -1.0000000, optional float fMitigatedDamage = -1.0000000); + +// Export UTgEffect::execGetTopMostDevice(FFrame&, void* const) +native function int GetTopMostDevice(TgDeviceFire devFire); + +// Export UTgEffect::execApplyEnterCombatRules(FFrame&, void* const) +native function ApplyEnterCombatRules(Actor Instigator, Actor Target); + +// Export UTgEffect::execGetTargetProperty(FFrame&, void* const) +native function TgProperty GetTargetProperty(Actor Target, int nPropertyId); + +// Export UTgEffect::execGetDeviceIdFromMode(FFrame&, void* const) +native static function int GetDeviceIdFromMode(TgDeviceFire DeviceFireMode); + +defaultproperties +{ + m_bRemovable=true + m_MaxKnockbackZ=600.0000000 + m_MinKnockbackZ=200.0000000 + m_KnockbackZMultiplier=1.3000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectDamage.uc b/exported/TgGame/Classes/TgEffectDamage.uc new file mode 100755 index 00000000..cd853ee3 --- /dev/null +++ b/exported/TgGame/Classes/TgEffectDamage.uc @@ -0,0 +1,48 @@ +class TgEffectDamage extends TgEffect + native(Effects); + +var int m_nSimplifiedPropertyId; +var Class m_DamageTypeClass; +var Class m_DefaultDamageTypeClass; +var float m_fDamageInitial; +var float m_fBonusDamageToShields; +var bool m_bAllowLifeSteal; +var bool m_bCanBeBuffed; + +// Export UTgEffectDamage::execCloneEffect(FFrame&, void* const) +native function TgEffect CloneEffect(); + +// Export UTgEffectDamage::execPostDamageHandler(FFrame&, void* const) +native function PostDamageHandler(Actor pTarget, TgPawn pInstigator, ImpactInfo Impact, float fPrevHealth, float fHealthChange, float fBuffedDamage, float fMitigatedDamage, const out ExtraDamageInfo ExtraInfo); + +// Export UTgEffectDamage::execSendDamageMessages(FFrame&, void* const) +native function SendDamageMessages(Actor Source, Actor Target, float fDamage, float fMitigated, ImpactInfo thisImpact, const out ExtraDamageInfo ExtraInfo); + +// Export UTgEffectDamage::execCanBeApplied(FFrame&, void* const) +native function bool CanBeApplied(Actor Target); + +// Export UTgEffectDamage::execApplyEffect(FFrame&, void* const) +native function bool ApplyEffect(Actor Target, optional ImpactInfo Impact, optional bool bLatent); + +// Export UTgEffectDamage::execPerformLifeSteal(FFrame&, void* const) +native function PerformLifeSteal(TgPawn InstigatorPawn, ImpactInfo Impact, float fDamageAmount); + +// Export UTgEffectDamage::execApplyStacks(FFrame&, void* const) +native function bool ApplyStacks(Actor Target, int nNumStacks); + +// Export UTgEffectDamage::execRemoveStacks(FFrame&, void* const) +native function bool RemoveStacks(Actor Target, int nNumStacks); + +// Export UTgEffectDamage::execApplyOnThisInterval(FFrame&, void* const) +native function bool ApplyOnThisInterval(); + +// Export UTgEffectDamage::execGetProratedValue(FFrame&, void* const) +native function float GetProratedValue(); + +defaultproperties +{ + m_DefaultDamageTypeClass=Class'TgGame.TgDamageType' + m_fDamageInitial=-1.0000000 + m_bAllowLifeSteal=true + m_bCanBeBuffed=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectDamage_AstroDOT.uc b/exported/TgGame/Classes/TgEffectDamage_AstroDOT.uc new file mode 100755 index 00000000..caf5cbe7 --- /dev/null +++ b/exported/TgGame/Classes/TgEffectDamage_AstroDOT.uc @@ -0,0 +1,35 @@ +class TgEffectDamage_AstroDOT extends TgEffectDamage + native(Effects); + +struct native EffectInstanceInfo +{ + var float fTimestamp; + var float fDamageValue; + + structdefaultproperties + { + fTimestamp=0.0000000 + fDamageValue=0.0000000 + } +}; + +var array m_EffectTimeStamps; +var array m_EffectDamageValues; +var native Pointer m_EffectInfo; + +// Export UTgEffectDamage_AstroDOT::execApplyEffect(FFrame&, void* const) +native function bool ApplyEffect(Actor Target, optional ImpactInfo Impact, optional bool bLatent); + +// Export UTgEffectDamage_AstroDOT::execAddDamageStamp(FFrame&, void* const) +native function AddDamageStamp(float Damage); + +// Export UTgEffectDamage_AstroDOT::execCloneEffect(FFrame&, void* const) +native function TgEffect CloneEffect(); + +// Export UTgEffectDamage_AstroDOT::execInitializeEffectInfo(FFrame&, void* const) +native function InitializeEffectInfo(); + +defaultproperties +{ + m_bCanBeBuffed=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectDamage_Execute.uc b/exported/TgGame/Classes/TgEffectDamage_Execute.uc new file mode 100755 index 00000000..af86ee6e --- /dev/null +++ b/exported/TgGame/Classes/TgEffectDamage_Execute.uc @@ -0,0 +1,11 @@ +class TgEffectDamage_Execute extends TgEffectDamage + native(Effects); + +var bool m_bApplied; +var bool m_bExecute; + +// Export UTgEffectDamage_Execute::execApplyEffect(FFrame&, void* const) +native function bool ApplyEffect(Actor Target, optional ImpactInfo Impact, optional bool bLatent); + +// Export UTgEffectDamage_Execute::execGetProratedValue(FFrame&, void* const) +native function float GetProratedValue(); diff --git a/exported/TgGame/Classes/TgEffectDamage_NoLifeSteal.uc b/exported/TgGame/Classes/TgEffectDamage_NoLifeSteal.uc new file mode 100755 index 00000000..da656a5e --- /dev/null +++ b/exported/TgGame/Classes/TgEffectDamage_NoLifeSteal.uc @@ -0,0 +1,6 @@ +class TgEffectDamage_NoLifeSteal extends TgEffectDamage; + +defaultproperties +{ + m_bAllowLifeSteal=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectDamage_PresenceDoT.uc b/exported/TgGame/Classes/TgEffectDamage_PresenceDoT.uc new file mode 100755 index 00000000..2fe905ba --- /dev/null +++ b/exported/TgGame/Classes/TgEffectDamage_PresenceDoT.uc @@ -0,0 +1,24 @@ +class TgEffectDamage_PresenceDoT extends TgEffectDamage + native(Effects); + +struct native PresenceDoTInstanceInfo +{ + var float fTimestamp; + var float fDamageValue; + + structdefaultproperties + { + fTimestamp=0.0000000 + fDamageValue=0.0000000 + } +}; + +var array m_EffectTimeStamps; +var array m_EffectDamageValues; +var native Pointer m_DamageInstances; + +// Export UTgEffectDamage_PresenceDoT::execApplyEffect(FFrame&, void* const) +native function bool ApplyEffect(Actor Target, optional ImpactInfo Impact, optional bool bLatent); + +// Export UTgEffectDamage_PresenceDoT::execCloneEffect(FFrame&, void* const) +native function TgEffect CloneEffect(); diff --git a/exported/TgGame/Classes/TgEffectForm.uc b/exported/TgGame/Classes/TgEffectForm.uc new file mode 100755 index 00000000..50b1337c --- /dev/null +++ b/exported/TgGame/Classes/TgEffectForm.uc @@ -0,0 +1,55 @@ +class TgEffectForm extends Object + native(Effects); + +var int c_nEffectGroupId; +var int c_nType; +var Actor c_Owner; +var native Pointer c_pwzEffectName; +var native Pointer c_pwzDescription; +var int c_nEffectIconId; +var array c_AppliedFxArray; +var bool c_bHiddenDueToStealth; +var bool c_bHiddenDueToFirstPerson; +var bool c_bMICApplied; +var bool m_bSpawnAtHitLocation; +var bool c_bIsDebuff; +var bool c_bIsCrit; +var bool c_bLocal; +var TgPawn.TG_POSTURE c_Posture; +var int c_PostureID; +var MaterialInstanceConstant m_MaterialInstanceConstant; +var TgPawn m_OwnerPawn; +var Vector m_HitLocation; +var Vector m_HitNormal; +var int c_nSkinId; +var TgEmitter_CameraEffect c_CameraEffect; +var int c_nStackCount; + +// Export UTgEffectForm::execRecalculateFx(FFrame&, void* const) +native function RecalculateFx(); + +// Export UTgEffectForm::execShowEffectForm(FFrame&, void* const) +native function ShowEffectForm(bool bLocal); + +// Export UTgEffectForm::execHideEffectForm(FFrame&, void* const) +native function HideEffectForm(); + +// Export UTgEffectForm::execAttach(FFrame&, void* const) +native function Attach(Actor pOwner); + +// Export UTgEffectForm::execReattach(FFrame&, void* const) +native function Reattach(); + +// Export UTgEffectForm::execDetach(FFrame&, void* const) +native function Detach(); + +// Export UTgEffectForm::execAdjustHidden(FFrame&, void* const) +native function AdjustHidden(); + +// Export UTgEffectForm::execShouldShowEffectForm(FFrame&, void* const) +native function bool ShouldShowEffectForm(); + +defaultproperties +{ + c_bLocal=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectForm_BuffBelt.uc b/exported/TgGame/Classes/TgEffectForm_BuffBelt.uc new file mode 100755 index 00000000..4c724a7f --- /dev/null +++ b/exported/TgGame/Classes/TgEffectForm_BuffBelt.uc @@ -0,0 +1,14 @@ +class TgEffectForm_BuffBelt extends TgEffectForm + native(Effects); + +var private native const noexport Pointer VfTable_FTickableObject; +var float m_OrbitAngleYawOffset; +var float m_OrbitHeightOffset; +var bool m_bFirstUpdate; +var float m_OrbitRotationSpeed; + +defaultproperties +{ + m_bFirstUpdate=true + m_OrbitRotationSpeed=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectForm_DisablePawn.uc b/exported/TgGame/Classes/TgEffectForm_DisablePawn.uc new file mode 100755 index 00000000..5b486104 --- /dev/null +++ b/exported/TgGame/Classes/TgEffectForm_DisablePawn.uc @@ -0,0 +1,15 @@ +class TgEffectForm_DisablePawn extends TgEffectForm + native(Effects); + +var bool m_bPauseAnims; + +// Export UTgEffectForm_DisablePawn::execShowEffectForm(FFrame&, void* const) +native function ShowEffectForm(bool bLocal); + +// Export UTgEffectForm_DisablePawn::execHideEffectForm(FFrame&, void* const) +native function HideEffectForm(); + +defaultproperties +{ + m_bPauseAnims=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectForm_Freeze.uc b/exported/TgGame/Classes/TgEffectForm_Freeze.uc new file mode 100755 index 00000000..d18cae9b --- /dev/null +++ b/exported/TgGame/Classes/TgEffectForm_Freeze.uc @@ -0,0 +1,12 @@ +class TgEffectForm_Freeze extends TgEffectForm_DisablePawn + native(Effects); + +var int m_BurstingIceFXId; + +// Export UTgEffectForm_Freeze::execHideEffectForm(FFrame&, void* const) +native function HideEffectForm(); + +defaultproperties +{ + m_BurstingIceFXId=1945 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectForm_Maeve_Midnight.uc b/exported/TgGame/Classes/TgEffectForm_Maeve_Midnight.uc new file mode 100755 index 00000000..8b820c91 --- /dev/null +++ b/exported/TgGame/Classes/TgEffectForm_Maeve_Midnight.uc @@ -0,0 +1,19 @@ +class TgEffectForm_Maeve_Midnight extends TgEffectForm + native(ChampBlades); + +var int m_nEndFXId; +var TgSpecialFx m_pEndFX; +var TgEmitter_CameraEffect m_pCameraEffect; +var float m_fEndFXKillTime; + +// Export UTgEffectForm_Maeve_Midnight::execHideEffectForm(FFrame&, void* const) +native function HideEffectForm(); + +// Export UTgEffectForm_Maeve_Midnight::execKillEndFX(FFrame&, void* const) +native function KillEndFX(); + +defaultproperties +{ + m_nEndFXId=7588 + m_fEndFXKillTime=2.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectForm_Maldamba_Slither.uc b/exported/TgGame/Classes/TgEffectForm_Maldamba_Slither.uc new file mode 100755 index 00000000..c0c53f9a --- /dev/null +++ b/exported/TgGame/Classes/TgEffectForm_Maldamba_Slither.uc @@ -0,0 +1,9 @@ +class TgEffectForm_Maldamba_Slither extends TgEffectForm + native(Effects); + +var int m_nMaterialGroupID; + +defaultproperties +{ + m_nMaterialGroupID=1758 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectForm_Oracle_SoulStacks.uc b/exported/TgGame/Classes/TgEffectForm_Oracle_SoulStacks.uc new file mode 100755 index 00000000..0a5d99ea --- /dev/null +++ b/exported/TgGame/Classes/TgEffectForm_Oracle_SoulStacks.uc @@ -0,0 +1,2 @@ +class TgEffectForm_Oracle_SoulStacks extends TgEffectForm + native(ChampOracle); diff --git a/exported/TgGame/Classes/TgEffectForm_WithMeshes.uc b/exported/TgGame/Classes/TgEffectForm_WithMeshes.uc new file mode 100755 index 00000000..4197dd74 --- /dev/null +++ b/exported/TgGame/Classes/TgEffectForm_WithMeshes.uc @@ -0,0 +1,59 @@ +class TgEffectForm_WithMeshes extends TgEffectForm + native(Effects); + +struct native EffectMeshInfo +{ + var export editinline MeshComponent Mesh; + var int nMeshId; + var name DisplayGroup; + var bool AbsoluteTranslation; + var bool AbsoluteRotation; + var bool AbsoluteScale; + var bool bWillSelfDestruct; + var Vector vAdditiveTranslation; + var Rotator rAdditiveRotation; + var float fScaleMultipler; + + structdefaultproperties + { + Mesh=none + nMeshId=0 + DisplayGroup="None" + AbsoluteTranslation=false + AbsoluteRotation=false + AbsoluteScale=false + bWillSelfDestruct=false + vAdditiveTranslation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + rAdditiveRotation=(Pitch=0,Yaw=0,Roll=0) + fScaleMultipler=0.0000000 + } +}; + +var array m_EffectMeshInfos; + +// Export UTgEffectForm_WithMeshes::execRecalculateFx(FFrame&, void* const) +native function RecalculateFx(); + +// Export UTgEffectForm_WithMeshes::execShowEffectForm(FFrame&, void* const) +native function ShowEffectForm(bool bLocal); + +// Export UTgEffectForm_WithMeshes::execHideEffectForm(FFrame&, void* const) +native function HideEffectForm(); + +// Export UTgEffectForm_WithMeshes::execAttach(FFrame&, void* const) +native function Attach(Actor pOwner); + +// Export UTgEffectForm_WithMeshes::execReattach(FFrame&, void* const) +native function Reattach(); + +// Export UTgEffectForm_WithMeshes::execDetach(FFrame&, void* const) +native function Detach(); + +// Export UTgEffectForm_WithMeshes::execAdjustHidden(FFrame&, void* const) +native function AdjustHidden(); + +// Export UTgEffectForm_WithMeshes::execAttachMeshes(FFrame&, void* const) +native function AttachMeshes(Actor pOwner); + +// Export UTgEffectForm_WithMeshes::execDetachMeshes(FFrame&, void* const) +native function DetachMeshes(); diff --git a/exported/TgGame/Classes/TgEffectGroup.uc b/exported/TgGame/Classes/TgEffectGroup.uc new file mode 100755 index 00000000..2f98ca1b --- /dev/null +++ b/exported/TgGame/Classes/TgEffectGroup.uc @@ -0,0 +1,279 @@ +class TgEffectGroup extends Object + native(Effects); + +const TGEGT_STACKING = 155; +const TGEGT_STACKING_REFRESH = 15440; +const TGEGT_STRONGEST_WINS = 157; +const TGEGT_STRONGEST_MASKS = 15416; +const TGEGT_REFRESH = 10257; +const TGEGC_LOCAL = 302; +const TGEGC_REMOVE_EFFECT = 877; +const TGEGC_BLEEDING = 15026; +const TGEGC_CARD_EQUIP_STATS = 15373; +const TGEGC_CC_IMMUNE = 15053; +const TGEGC_CONFUSED = 15011; +const TGEGC_CRIPPLE = 10585; +const TGEGC_DAZE = 15009; +const TGEGC_DISARM = 10423; +const TGEGC_FEAR = 10051; +const TGEGC_FROZEN = 15017; +const TGEGC_JUMP_PENALTY = 11068; +const TGEGC_KNOCKBACK = 10052; +const TGEGC_KNOCKUP = 15014; +const TGEGC_MARKED = 15012; +const TGEGC_MARKED_WITH_UI = 15294; +const TGEGC_MOUNT_SPEED_BUFF = 15063; +const TGEGC_MOVEMENT_SPEED_BUFF = 15062; +const TGEGC_ON_FIRE = 10858; +const TGEGC_POISONED = 10859; +const TGEGC_POLYMORPH = 15051; +const TGEGC_REDUCED_HEALING = 15368; +const TGEGC_REVEALED = 15184; +const TGEGC_ROOT = 10050; +const TGEGC_SHIELD_SPECIAL = 15291; +const TGEGC_SILENCE = 10053; +const TGEGC_SLOW = 10048; +const TGEGC_STEALTH = 10863; +const TGEGC_STUN = 10049; +const TGEGC_STUN_TAUNT = 10649; +const TGEGC_WALLHACK = 10966; +const TGEGC_WEAKEN = 15071; +const TGEGC_LEX_REVEAL = 15506; +const TGEGC_SOUL_ORB_STACK = 15547; +const TGEGC_MESMERIZE = 16608; +const TGEGC_ASTRO_DOT = 16620; +const TGEGC_ASTRO_HEAL = 16627; +const TGEGC_ASTRO_BUFF = 16628; +const TGEGC_PRESENCE_DOT = 16637; +const TGEGC_FLASH_BANG = 16658; +const TGEGC_LIFT = 16657; +const TIMER_INTERVAL = 0; +const TIMER_LIFEDONE = 1; +const DEFAULT_MAX_EFFECT_STACKS = 100; +const TGST_HIGHEST_VALUE = 10130; +const TGST_IN_HAND = 10131; +const TGST_ITEM_POWER = 10552; +const TGST_TOTAL_POWER = 10553; +const TGST_BASE_POWER = 10625; +const TG_MESMERIZE_MIN_DURATION = 0.5f; + +enum AttackType +{ + TGAT_None, // 0 + TGAT_Range, // 1 + TGAT_AOE, // 2 + TGAT_Falling, // 3 + TGAT_MAX // 4 +}; + +struct native LifeTimeCalcInfo +{ + var bool bInitialized; + var float fReductionFromPawnProtections; + var float fReductionFromCCProtectionsPerc; + var float fReductionFromDoTProtections; + var float fReductionFromDoTProtectionsPerc; + var int nCrowdControlCount; + var bool bCrowdControlImmune; + var float m_fCalculatedLifeTime; + + structdefaultproperties + { + bInitialized=false + fReductionFromPawnProtections=0.0000000 + fReductionFromCCProtectionsPerc=0.0000000 + fReductionFromDoTProtections=0.0000000 + fReductionFromDoTProtectionsPerc=0.0000000 + nCrowdControlCount=0 + bCrowdControlImmune=false + m_fCalculatedLifeTime=0.0000000 + } +}; + +var int m_nType; +var Actor m_Target; +var Actor m_Instigator; +var int m_nEffectGroupId; +var float m_fLifeTime; +var float m_fModLifeTime; +var float m_fLifeTimeIncreaseFromInstigator; +var float m_fApplyInterval; +var array m_Effects; +var int m_nDamageType; +var TgEffectGroup.AttackType m_eAttackType; +var Controller.EStunType m_StunType; +var bool m_bIsManaged; +var bool m_bHasSlowEffect; +var bool m_bHasStealthEffect; +var bool m_bHasSlowToHaltEffect; +var bool m_bDoesDamage; +var bool m_bDoesDamageOverTime; +var bool m_bContagious; +var bool s_bActiveFlag; +var bool s_bCriticalHitFlag; +var bool m_bDeviceSpecificFlag; +var bool m_bHasVisual; +var float m_fPercAbsorbedDamage; +var int m_nApplicationType; +var float m_fApplicationValue; +var float m_fApplicationChance; +var int m_nApplicationCategoryCode; +var int m_nBehaviorCategoryCode; +var int m_nReqDeviceInstanceId; +var float m_fBuffValue; +var float m_fPhysicalPowerScaling; +var float m_fMagicalPowerScaling; +var float m_fLifetimeScaling; +var float m_fLifetimeMax; +var int m_nScalingType; +var int m_nTargetType; +var int m_nTargetAffectsType; +var int m_nHitSpecialSituationalType; +var int m_nNumStacks; +var int m_nNumMaxStacks; +var TgEffectGroup s_NonContagiousEffectGroup; +var ImpactInfo m_Impact; +var int m_nPosture; +var int m_nFxAppliedId; +var name m_nmDisplayGroup; +var int s_ManagedEffectListIndex; +var TgEffectManager s_OwnerEffectManager; +var name m_nmDamageTypeClass; +var int m_nSourceDeviceInstId; +var int m_nSourceItemId; +var float s_fEGShieldHealth; +var float s_fEGShieldHealthMax; +var ForceFeedbackWaveform m_Waveform; +var native Pointer m_pEffectGroupSetup; +var LifeTimeCalcInfo m_LastLifeTimeCalcInfo; + +// Export UTgEffectGroup::execCloneEffectGroup(FFrame&, void* const) +native function TgEffectGroup CloneEffectGroup(optional bool bCloneAllEffects); + +// Export UTgEffectGroup::execRemoveEffects(FFrame&, void* const) +native function RemoveEffects(optional bool bClearTimers = true); + +// Export UTgEffectGroup::execTotalPropertyEffectAmt(FFrame&, void* const) +native function float TotalPropertyEffectAmt(int nPropertyId); + +// Export UTgEffectGroup::execQueryFxTransitionTime(FFrame&, void* const) +native function float QueryFxTransitionTime(); + +// Export UTgEffectGroup::execEffectExists(FFrame&, void* const) +native function bool EffectExists(int nPropId); + +// Export UTgEffectGroup::execGetProperty(FFrame&, void* const) +native function TgProperty GetProperty(Actor Target, int nPropertyId); + +// Export UTgEffectGroup::execCalcCategoryProtection(FFrame&, void* const) +native function float CalcCategoryProtection(Actor Target, float fValue, out float fPercReduction); + +// Export UTgEffectGroup::execCalcDoTLifeTimeProtection(FFrame&, void* const) +native function float CalcDoTLifeTimeProtection(Actor Target, float fValue, out float fDirectReduction, out float fPercReduction); + +// Export UTgEffectGroup::execIsBuff(FFrame&, void* const) +native function bool IsBuff(); + +// Export UTgEffectGroup::execPersistsThroughDeath(FFrame&, void* const) +native function bool PersistsThroughDeath(); + +// Export UTgEffectGroup::execIsInstantaneous(FFrame&, void* const) +native function bool IsInstantaneous(); + +// Export UTgEffectGroup::execIsSlow(FFrame&, void* const) +native function bool IsSlow(); + +// Export UTgEffectGroup::execIsStealth(FFrame&, void* const) +native function bool IsStealth(); + +// Export UTgEffectGroup::execIsSlowToHalt(FFrame&, void* const) +native function bool IsSlowToHalt(); + +// Export UTgEffectGroup::execIsCrit(FFrame&, void* const) +native function bool IsCrit(); + +// Export UTgEffectGroup::execIsDot(FFrame&, void* const) +native function bool IsDot(); + +// Export UTgEffectGroup::execIsDebuff(FFrame&, void* const) +native function bool IsDebuff(); + +// Export UTgEffectGroup::execIsSuperiorCrowdControl(FFrame&, void* const) +native function bool IsSuperiorCrowdControl(); + +// Export UTgEffectGroup::execIsCrowdControl(FFrame&, void* const) +native function bool IsCrowdControl(); + +// Export UTgEffectGroup::execAppliesDiminishingReturns(FFrame&, void* const) +native function bool AppliesDiminishingReturns(); + +// Export UTgEffectGroup::execReceivesDiminishingReturns(FFrame&, void* const) +native function bool ReceivesDiminishingReturns(); + +// Export UTgEffectGroup::execDoesDamage(FFrame&, void* const) +native function bool DoesDamage(); + +// Export UTgEffectGroup::execHasCategoryCode(FFrame&, void* const) +native function bool HasCategoryCode(int nCategoryCode, optional bool bBehaviorOnly); + +// Export UTgEffectGroup::execIsActive(FFrame&, void* const) +native function bool IsActive(); + +// Export UTgEffectGroup::execSetActive(FFrame&, void* const) +native function SetActive(bool bActive, optional bool bRemoving = false); + +// Export UTgEffectGroup::execHandleStatusEffects(FFrame&, void* const) +native function HandleStatusEffects(bool bRemoving); + +// Export UTgEffectGroup::execGetTimeElapsed(FFrame&, void* const) +native function float GetTimeElapsed(); + +// Export UTgEffectGroup::execGetTimeRemaining(FFrame&, void* const) +native function float GetTimeRemaining(); + +// Export UTgEffectGroup::execGetPercentTimeRemaining(FFrame&, void* const) +native function float GetPercentTimeRemaining(); + +// Export UTgEffectGroup::execGetIntervalTimeRemaining(FFrame&, void* const) +native function float GetIntervalTimeRemaining(); + +// Export UTgEffectGroup::execApplyEffects(FFrame&, void* const) +native function bool ApplyEffects(); + +// Export UTgEffectGroup::execApplyInterval(FFrame&, void* const) +native function ApplyInterval(); + +// Export UTgEffectGroup::execLifeDone(FFrame&, void* const) +native function LifeDone(); + +// Export UTgEffectGroup::execGetLifeTime(FFrame&, void* const) +native function float GetLifeTime(optional bool bModifiers = false, optional out LifeTimeCalcInfo CalcInfo); + +// Export UTgEffectGroup::execGetUtilityPower(FFrame&, void* const) +native function float GetUtilityPower(); + +// Export UTgEffectGroup::execQueueRemovalOnManagerTick(FFrame&, void* const) +native function QueueRemovalOnManagerTick(); + +// Export UTgEffectGroup::execHasShield(FFrame&, void* const) +native function bool HasShield(); + +// Export UTgEffectGroup::execGetShieldHealth(FFrame&, void* const) +native function float GetShieldHealth(); + +// Export UTgEffectGroup::execGetShieldMaxHealth(FFrame&, void* const) +native function float GetShieldMaxHealth(); + +// Export UTgEffectGroup::execDamageShield(FFrame&, void* const) +native function float DamageShield(float fDamage); + +// Export UTgEffectGroup::execHealShield(FFrame&, void* const) +native function float HealShield(float fHeal); + +defaultproperties +{ + m_StunType=EStunType.STUN_TYPE_NORMAL + m_fApplicationChance=1.0000000 + m_nNumMaxStacks=100 + s_ManagedEffectListIndex=-1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectHeal.uc b/exported/TgGame/Classes/TgEffectHeal.uc new file mode 100755 index 00000000..268f5b31 --- /dev/null +++ b/exported/TgGame/Classes/TgEffectHeal.uc @@ -0,0 +1,24 @@ +class TgEffectHeal extends TgEffect + native(Effects); + +var float m_fMissingHealthInitial; +var int m_nIntervalCount; +var int m_nSimplifiedPropertyId; + +// Export UTgEffectHeal::execCanBeApplied(FFrame&, void* const) +native function bool CanBeApplied(Actor Target); + +// Export UTgEffectHeal::execApplyEffect(FFrame&, void* const) +native function bool ApplyEffect(Actor Target, optional ImpactInfo Impact, optional bool bLatent); + +// Export UTgEffectHeal::execApplyStacks(FFrame&, void* const) +native function bool ApplyStacks(Actor Target, int nNumStacks); + +// Export UTgEffectHeal::execRemoveStacks(FFrame&, void* const) +native function bool RemoveStacks(Actor Target, int nNumStacks); + +// Export UTgEffectHeal::execPostHealHandler(FFrame&, void* const) +native function PostHealHandler(Actor pTarget, TgPawn pInstigator, ImpactInfo Impact, float fHealthChange, float fHealAmount); + +// Export UTgEffectHeal::execCloneEffect(FFrame&, void* const) +native function TgEffect CloneEffect(); diff --git a/exported/TgGame/Classes/TgEffectManager.uc b/exported/TgGame/Classes/TgEffectManager.uc new file mode 100755 index 00000000..e0381a8c --- /dev/null +++ b/exported/TgGame/Classes/TgEffectManager.uc @@ -0,0 +1,493 @@ +class TgEffectManager extends Actor + native(Effects) + nativereplication + notplaceable + hidecategories(Navigation); + +const TGEA_MAX_EFFECTS = 16; +const TGEA_MAX_EFFECTS_QUEUE = 16; +const TGEGS_EMPTY = 0; +const TGEGS_ACTIVE_REP = 1; +const TGEGS_ACTIVE = 2; +const TGEGS_FLASH_REP = 3; +const TGEGS_EMPTY_REP = 4; +const REFRESH_NONE = 0; +const REFRESH_REUSE = 1; +const REFRESH_ADD = 2; +const AIE_DAMAGE = 0; +const AIE_HEALTH = 1; +const AIE_MANA = 2; +const AIE_STASIS = 4; +const AIE_STUN = 5; +const AIE_PROPERTY = 6; +const AIE_PROPERTY_PERC = 7; +const AIE_ENERGY = 8; +const AIE_STUN_PROXY_EFFECT_GROUP_ID = 33431; +const CONTRIBUTION_BUFFER = 0.75f; +const CONTRIBUTION_BUFFEE = 0.25f; +const TG_DEFAULTSPAWNGUARDTIME = 3.0f; +const WALL_STUN_CHECK_HEIGHT = 62.0f; +const WALL_STUN_CHECK_DISTANCE = 96.0f; + +enum EDiminshingReturnsStackType +{ + DRST_None, // 0 + DRST_CrowdControl, // 1 + DRST_SuperiorCrowdControl, // 2 + DRST_Stun, // 3 + DRST_MAX // 4 +}; + +struct native EffectQueueEntry +{ + var int nEffectGroupID; + var int nExtraInfo; + var Vector vHitLocation; + var Rotator rHitNormal; + + structdefaultproperties + { + nEffectGroupID=0 + nExtraInfo=0 + vHitLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + rHitNormal=(Pitch=0,Yaw=0,Roll=0) + } +}; + +struct native EffectListEntry +{ + var int nEffectGroupID; + var byte byNumStacks; + var float fInitTimeRemaining; + var int nExtraInfo; + + structdefaultproperties + { + nEffectGroupID=0 + byNumStacks=0 + fInitTimeRemaining=0.0000000 + nExtraInfo=0 + } +}; + +struct native StunStackEntry +{ + var TgEffect Effect; + var Controller.EStunType StunType; + + structdefaultproperties + { + Effect=none + StunType=EStunType.STUN_TYPE_NONE + } +}; + +struct native EnergyStunStackEntry +{ + var TgEffect Effect; + + structdefaultproperties + { + Effect=none + } +}; + +struct native ReduceActiveCooldownEntry +{ + var int nDeviceId; + var float fValue; + var bool bPercent; + var float fApplicationTime; + var float fCooldownFloor; + + structdefaultproperties + { + nDeviceId=0 + fValue=0.0000000 + bPercent=false + fApplicationTime=0.0000000 + fCooldownFloor=0.0000000 + } +}; + +struct native DiminishingReturnsStackInfo +{ + var TgEffectManager.EDiminshingReturnsStackType StackType; + var init array DevicesApplyingThisTick; + var init array Timestamps; + var int nStackCount; + var float fRelevancyTime; + + structdefaultproperties + { + StackType=EDiminshingReturnsStackType.DRST_None + DevicesApplyingThisTick=none + Timestamps=none + nStackCount=0 + fRelevancyTime=7.0000000 + } +}; + +var repnotify EffectListEntry r_ManagedEffectList[16]; +var byte c_byCounterList[16]; +var Controller.EStunType s_eCachedStunType; +var float m_fTimeRemaining[16]; +var TgEffectForm c_Forms[16]; +var bool c_ActiveTimers; +var repnotify bool r_bRelevancyNotify; +var EffectQueueEntry r_EventQueue[16]; +var repnotify int r_nNextQueueIndex; +var repnotify int r_nFirstValidQueueIndex; +var int c_nLastQueueIndex; +var array s_AppliedEffectGroups; +var repnotify Actor r_Owner; +var TgEffectGroup m_ApplyDamageEffectGroup; +var TgEffect m_ApplyDamageEffect; +var TgEffectGroup m_ApplyHealthEffectGroup; +var TgEffect m_ApplyHealthEffect; +var TgEffectGroup m_ApplyManaEffectGroup; +var TgEffect m_ApplyManaEffect; +var TgEffectGroup m_ApplyEnergyEffectGroup; +var TgEffect m_ApplyEnergyEffect; +var array s_StunStack; +var array s_EnergyStunStack; +var array s_ReduceActiveCooldownEffects; +var float m_fMaxReduceActiveCooldownDelay; +var int s_nSilenceCount; +var int s_nDisarmCount; +var int s_nCrippleCount; +var int s_nStealthCount; +var int s_nDazeCount; +var int s_nMarkedCount; +var int s_nSlowCount; +var int s_bStealthDisabledCount; +var int s_nOnFireCount; +var int s_nCCImmuneCount; +var int s_nBleedingCount; +var int s_nKnockbackCount; +var int s_nRootCount; +var int s_nPoisonedCount; +var int s_nBoostCount; +var int s_nStealthInCombatCount; +var int s_nWallHackCount; +var int s_nForceOutOfCombatCount; +var int s_nPolymorphCount; +var int s_nRevealedCount; +var int s_nFlashCount; +var float s_fSpawnGuardTime; +var array s_InstigatorWallReveals; +var array s_nInstigatorWallRevealCount; +var array s_InstigatorStealthReveals; +var array s_nInstigatorStealthRevealCount; +var array s_SlowCaps; +var array s_MaxHPDamageCaps; +var array s_CurHPDamageCaps; +var int s_FreezeBehaviorCount; +var array s_DiminishingReturnsStacks; +var const int m_nDiminishingReturnMaxStacks; +var array s_ActiveDamageDeviceIntercepts; +var array s_ActiveDamageMitigationIntercepts; +var array s_ActiveOnLandedIntercepts; +var array s_ActiveWallStuns; + +replication +{ + // Pos:0x000 + if(((int(Role) == int(ROLE_Authority)) && !bDemoRecording) && (bNetInitial || bNetTimelapseInit) || bNetTimelapsePost) + r_nFirstValidQueueIndex; + + // Pos:0x04F + if((int(Role) == int(ROLE_Authority)) && bDemoRecording || !(bNetInitial || bNetTimelapseInit) || bNetTimelapsePost) + r_EventQueue, r_nNextQueueIndex; + + // Pos:0x09E + if(int(Role) == int(ROLE_Authority)) + r_ManagedEffectList, r_Owner, + r_bRelevancyNotify; +} + +// Export UTgEffectManager::execSetEffectRep(FFrame&, void* const) +native function int SetEffectRep(TgEffectGroup eg, int nSkinId); + +// Export UTgEffectManager::execUpdateEffectRep(FFrame&, void* const) +native function UpdateEffectRep(TgEffectGroup eg); + +// Export UTgEffectManager::execClearEffectRep(FFrame&, void* const) +native function ClearEffectRep(TgEffectGroup Group); + +// Export UTgEffectManager::execUpdateEffectForms(FFrame&, void* const) +native function UpdateEffectForms(); + +// Export UTgEffectManager::execUpdateQueueEffectForms(FFrame&, void* const) +native function UpdateQueueEffectForms(); + +// Export UTgEffectManager::execUpdateManagedEffectForms(FFrame&, void* const) +native function UpdateManagedEffectForms(); + +// Export UTgEffectManager::execRemoveEffectGroupById(FFrame&, void* const) +native function bool RemoveEffectGroupById(int nEffectGroupID, optional int nNumStacks = 0, const optional Actor theInstigator); + +// Export UTgEffectManager::execRemoveEffectGroupsByCategory(FFrame&, void* const) +native function bool RemoveEffectGroupsByCategory(int nCategoryCode, optional int nNumStacks = 0, const optional Actor theInstigator); + +// Export UTgEffectManager::execRemoveAllEffectGroups(FFrame&, void* const) +native function bool RemoveAllEffectGroups(TgEffectGroup eg); + +// Export UTgEffectManager::execResetEffectGroupLifeTimeById(FFrame&, void* const) +native function bool ResetEffectGroupLifeTimeById(int nEffectGroupID, float Lifetime); + +// Export UTgEffectManager::execResetEffectGroupLifeTimeByCategory(FFrame&, void* const) +native function bool ResetEffectGroupLifeTimeByCategory(int nCategoryCode, float Lifetime); + +// Export UTgEffectManager::execRemoveAllDebuff(FFrame&, void* const) +native function RemoveAllDebuff(); + +// Export UTgEffectManager::execRemoveAllSuperiorCrowdControl(FFrame&, void* const) +native function RemoveAllSuperiorCrowdControl(); + +// Export UTgEffectManager::execRemoveAllCrowdControl(FFrame&, void* const) +native function RemoveAllCrowdControl(); + +// Export UTgEffectManager::execIsStrongest(FFrame&, void* const) +native function bool IsStrongest(TgEffectGroup eg, bool bConsiderLifetime, out TgEffectGroup prevStrongest); + +// Export UTgEffectManager::execGetNextStrongest(FFrame&, void* const) +native function TgEffectGroup GetNextStrongest(TgEffectGroup eg); + +// Export UTgEffectManager::execRemoveAllEffects(FFrame&, void* const) +native function RemoveAllEffects(); + +// Export UTgEffectManager::execRemoveAllEffectsOnDeath(FFrame&, void* const) +native function RemoveAllEffectsOnDeath(); + +// Export UTgEffectManager::execRemoveAllStealthEffects(FFrame&, void* const) +native function RemoveAllStealthEffects(); + +// Export UTgEffectManager::execRemoveAllMesmerizeEffects(FFrame&, void* const) +native function RemoveAllMesmerizeEffects(); + +// Export UTgEffectManager::execGetEffectGroup(FFrame&, void* const) +native function TgEffectGroup GetEffectGroup(int nEffectGroupID, const optional Actor theInstigator); + +// Export UTgEffectManager::execGetEffectGroupByCategory(FFrame&, void* const) +native function TgEffectGroup GetEffectGroupByCategory(int nCategoryCode, const optional Actor theInstigator); + +// Export UTgEffectManager::execUpdateEffectFormVisibility(FFrame&, void* const) +native function UpdateEffectFormVisibility(); + +// Export UTgEffectManager::execClearAllClientEffectForms(FFrame&, void* const) +native function ClearAllClientEffectForms(); + +// Export UTgEffectManager::execIsSpawnGuarded(FFrame&, void* const) +native function bool IsSpawnGuarded(); + +// Export UTgEffectManager::execIsStunned(FFrame&, void* const) +native function bool IsStunned(); + +// Export UTgEffectManager::execIsSlowed(FFrame&, void* const) +native function bool IsSlowed(); + +// Export UTgEffectManager::execIsDazed(FFrame&, void* const) +native function bool IsDazed(); + +// Export UTgEffectManager::execRecalculateFx(FFrame&, void* const) +native function RecalculateFx(); + +// Export UTgEffectManager::execRecalculateBeltFx(FFrame&, void* const) +native function RecalculateBeltFx(); + +// Export UTgEffectManager::execHandleOnLandedIntercepts(FFrame&, void* const) +native function HandleOnLandedIntercepts(); + +// Export UTgEffectManager::execApplyDamage(FFrame&, void* const) +native function ApplyDamage(int nDamage, optional Actor aInstigator, optional int nAttackType, optional int nDamageType, optional ImpactInfo Impact, optional int nEffectGroupCategory); + +// Export UTgEffectManager::execApplyHealth(FFrame&, void* const) +native function ApplyHealth(int nHealth, optional Actor aInstigator, optional int nAttackType, optional int nDamageType, optional ImpactInfo Impact, optional int nEffectGroupCategory); + +// Export UTgEffectManager::execApplyMana(FFrame&, void* const) +native function ApplyMana(int nMana, optional Actor aInstigator, optional int nAttackType, optional int nDamageType, optional ImpactInfo Impact, optional int nEffectGroupCategory); + +// Export UTgEffectManager::execApplyEnergy(FFrame&, void* const) +native function ApplyEnergy(int nEnergy, optional Actor aInstigator, optional int nAttackType, optional int nDamageType, optional ImpactInfo Impact, optional int nEffectGroupCategory); + +// Export UTgEffectManager::execApplyStun(FFrame&, void* const) +native function ApplyStun(float fDuration, optional Actor aInstigator, optional int nAttackType, optional int nDamageType, optional ImpactInfo Impact, optional Controller.EStunType StunType); + +// Export UTgEffectManager::execApplySpawnGuard(FFrame&, void* const) +native function ApplySpawnGuard(); + +// Export UTgEffectManager::execRemoveSpawnGuard(FFrame&, void* const) +native function RemoveSpawnGuard(); + +// Export UTgEffectManager::execApplyStasis(FFrame&, void* const) +native function ApplyStasis(int nValue, optional Actor aInstigator, optional int nAttackType, optional int nDamageType, optional ImpactInfo Impact, optional int nEffectGroupCategory); + +// Export UTgEffectManager::execReduceActiveCooldown(FFrame&, void* const) +native function ReduceActiveCooldown(ReduceActiveCooldownEntry effectEntry, optional bool bInitialApplication = true); + +// Export UTgEffectManager::execAddDelayedReduceActiveCooldownEffect(FFrame&, void* const) +native function AddDelayedReduceActiveCooldownEffect(ReduceActiveCooldownEntry effectEntry); + +// Export UTgEffectManager::execRemoveDelayedReduceActiveCooldownEffect(FFrame&, void* const) +native function RemoveDelayedReduceActiveCooldownEffect(ReduceActiveCooldownEntry effectEntry); + +// Export UTgEffectManager::execProcessReduceActiveCooldownEffects(FFrame&, void* const) +native function ProcessReduceActiveCooldownEffects(); + +// Export UTgEffectManager::execApplyProperty(FFrame&, void* const) +native function TgEffectGroup ApplyProperty(float nValue, int nPropId, optional Actor aInstigator, optional ImpactInfo Impact, optional int nCategory = 0, optional bool bApplyAsPercent = false); + +// Export UTgEffectManager::execRemoveProperty(FFrame&, void* const) +native function RemoveProperty(TgEffectGroup EffectGroup); + +// Export UTgEffectManager::execProcessEffect(FFrame&, void* const) +native function TgEffectGroup ProcessEffect(TgEffectGroup EffectGroup, optional Actor aInstigator, optional int nNumStacks = 1, optional ImpactInfo Impact); + +// Export UTgEffectManager::execGetStackCountFromEffectGroupId(FFrame&, void* const) +native function int GetStackCountFromEffectGroupId(int nEffectGroupID, optional Actor aInstigator); + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x5D + if(int(Role) == int(ROLE_Authority)) + { + r_bRelevancyNotify = true; + // End:0x5D + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + UpdateEffectForms(); + } + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x23 + if(VarName == 'r_nFirstValidQueueIndex') + { + UpdateFirstValidQueueIndex(); + return; + } + // End:0x53 + if(VarName == 'r_nNextQueueIndex') + { + // End:0x51 + if(r_bRelevancyNotify) + { + UpdateQueueEffectForms(); + } + return; + } + // End:0x83 + if(VarName == 'r_ManagedEffectList') + { + // End:0x81 + if(r_bRelevancyNotify) + { + UpdateManagedEffectForms(); + } + return; + } + // End:0xA6 + if(VarName == 'r_bRelevancyNotify') + { + UpdateEffectForms(); + return; + } + // End:0xE7 + if(VarName == 'r_Owner') + { + // End:0xE5 + if((r_Owner != none) && r_bRelevancyNotify) + { + UpdateEffectForms(); + } + return; + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated event UpdateFirstValidQueueIndex() +{ + c_nLastQueueIndex = r_nFirstValidQueueIndex - 1; + //return; +} + +simulated event PostDemoRewind() +{ + ClearAllClientEffectForms(); + //return; +} + +function int ShieldTakeDamage(int nDamage) +{ + local TgEffectGroup eg; + local bool bHasShieldSpecial; + + // End:0x15B + if(nDamage > 0) + { + // End:0xCA + foreach s_AppliedEffectGroups(eg) + { + // End:0xC9 + if(eg.HasShield()) + { + // End:0xBD + if(!eg.HasCategoryCode(15291)) + { + nDamage = int(eg.DamageShield(float(nDamage))); + // End:0xBA + if(nDamage <= 0) + { + return 0; + } + } + else + { + bHasShieldSpecial = true; + } + } + } + // End:0x15B + if(bHasShieldSpecial) + { + // End:0x15A + foreach s_AppliedEffectGroups(eg) + { + // End:0x159 + if(eg.HasShield()) + { + nDamage = int(eg.DamageShield(float(nDamage))); + // End:0x159 + if(nDamage <= 0) + { + return 0; + } + } + } + } + } + return nDamage; + //return ReturnValue; +} + +defaultproperties +{ + r_nNextQueueIndex=-1 + c_nLastQueueIndex=-1 + m_fMaxReduceActiveCooldownDelay=4.0000000 + s_DiminishingReturnsStacks[0]=(StackType=EDiminshingReturnsStackType.DRST_CrowdControl,DevicesApplyingThisTick=none,Timestamps=none,nStackCount=0,fRelevancyTime=7.0000000) + s_DiminishingReturnsStacks[1]=(StackType=EDiminshingReturnsStackType.DRST_SuperiorCrowdControl,DevicesApplyingThisTick=none,Timestamps=none,nStackCount=0,fRelevancyTime=7.0000000) + s_DiminishingReturnsStacks[2]=(StackType=EDiminshingReturnsStackType.DRST_Stun,DevicesApplyingThisTick=none,Timestamps=none,nStackCount=0,fRelevancyTime=7.0000000) + m_nDiminishingReturnMaxStacks=3 + RemoteRole=ENetRole.ROLE_SimulatedProxy + bHidden=true + bReplicateInstigator=true + bReplicateMovement=false + NetPriority=1.1000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectModifyDeployable.uc b/exported/TgGame/Classes/TgEffectModifyDeployable.uc new file mode 100755 index 00000000..00f693ff --- /dev/null +++ b/exported/TgGame/Classes/TgEffectModifyDeployable.uc @@ -0,0 +1,23 @@ +class TgEffectModifyDeployable extends TgEffect + native(Effects); + +// Export UTgEffectModifyDeployable::execCanBeApplied(FFrame&, void* const) +native function bool CanBeApplied(Actor Target); + +// Export UTgEffectModifyDeployable::execSetProperty(FFrame&, void* const) +native function SetProperty(Actor Target, int nPropertyId, float fNewValue); + +// Export UTgEffectModifyDeployable::execApplyEffect(FFrame&, void* const) +native function bool ApplyEffect(Actor Target, optional ImpactInfo Impact, optional bool bLatent); + +// Export UTgEffectModifyDeployable::execApplyToProperty(FFrame&, void* const) +native function ApplyToProperty(Actor Target, int nPropertyId, float fProratedAmount, optional bool bRemove = false); + +// Export UTgEffectModifyDeployable::execGetProratedValue(FFrame&, void* const) +native function float GetProratedValue(); + +// Export UTgEffectModifyDeployable::execRemove(FFrame&, void* const) +native function Remove(Actor Target, optional bool bResetToFollow); + +// Export UTgEffectModifyDeployable::execGetTargetProperty(FFrame&, void* const) +native function TgProperty GetTargetProperty(Actor Target, int nPropertyId); diff --git a/exported/TgGame/Classes/TgEffectModifyEffect.uc b/exported/TgGame/Classes/TgEffectModifyEffect.uc new file mode 100755 index 00000000..ac9e44e9 --- /dev/null +++ b/exported/TgGame/Classes/TgEffectModifyEffect.uc @@ -0,0 +1,23 @@ +class TgEffectModifyEffect extends TgEffect + native(Effects); + +// Export UTgEffectModifyEffect::execCanBeApplied(FFrame&, void* const) +native function bool CanBeApplied(Actor Target); + +// Export UTgEffectModifyEffect::execSetProperty(FFrame&, void* const) +native function SetProperty(Actor Target, int nPropertyId, float fNewValue); + +// Export UTgEffectModifyEffect::execApplyEffect(FFrame&, void* const) +native function bool ApplyEffect(Actor Target, optional ImpactInfo Impact, optional bool bLatent); + +// Export UTgEffectModifyEffect::execApplyToProperty(FFrame&, void* const) +native function ApplyToProperty(Actor Target, int nPropertyId, float fProratedAmount, optional bool bRemove = false); + +// Export UTgEffectModifyEffect::execGetProratedValue(FFrame&, void* const) +native function float GetProratedValue(); + +// Export UTgEffectModifyEffect::execRemove(FFrame&, void* const) +native function Remove(Actor Target, optional bool bResetToFollow); + +// Export UTgEffectModifyEffect::execGetTargetProperty(FFrame&, void* const) +native function TgProperty GetTargetProperty(Actor Target, int nPropertyId); diff --git a/exported/TgGame/Classes/TgEffectModifyProperty.uc b/exported/TgGame/Classes/TgEffectModifyProperty.uc new file mode 100755 index 00000000..7dd4cabd --- /dev/null +++ b/exported/TgGame/Classes/TgEffectModifyProperty.uc @@ -0,0 +1,30 @@ +class TgEffectModifyProperty extends TgEffect + abstract + native(Effects); + +var TgDeviceFire m_TargetDeviceFire; +var int m_eEquipPointTarget; +var array m_fStaticValueOffsets; + +// Export UTgEffectModifyProperty::execCanBeApplied(FFrame&, void* const) +native function bool CanBeApplied(Actor Target); + +// Export UTgEffectModifyProperty::execSetProperty(FFrame&, void* const) +native function SetProperty(Actor Target, int nPropertyId, float fNewValue); + +// Export UTgEffectModifyProperty::execApplyEffect(FFrame&, void* const) +native function bool ApplyEffect(Actor Target, optional ImpactInfo Impact, optional bool bLatent); + +// Export UTgEffectModifyProperty::execApplyToProperty(FFrame&, void* const) +native function ApplyToProperty(Actor Target, int nPropertyId, float fProratedAmount, optional bool bRemove = false); + +// Export UTgEffectModifyProperty::execRemove(FFrame&, void* const) +native function Remove(Actor Target, optional bool bResetToFollow); + +// Export UTgEffectModifyProperty::execGetTargetProperty(FFrame&, void* const) +native function TgProperty GetTargetProperty(Actor Target, int nPropertyId); + +defaultproperties +{ + m_bApplyToProperty=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectModifyProperty_Ability1.uc b/exported/TgGame/Classes/TgEffectModifyProperty_Ability1.uc new file mode 100755 index 00000000..7fc23e71 --- /dev/null +++ b/exported/TgGame/Classes/TgEffectModifyProperty_Ability1.uc @@ -0,0 +1,6 @@ +class TgEffectModifyProperty_Ability1 extends TgEffectModifyProperty; + +defaultproperties +{ + m_eEquipPointTarget=2 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectModifyProperty_Ability2.uc b/exported/TgGame/Classes/TgEffectModifyProperty_Ability2.uc new file mode 100755 index 00000000..81fca29a --- /dev/null +++ b/exported/TgGame/Classes/TgEffectModifyProperty_Ability2.uc @@ -0,0 +1,6 @@ +class TgEffectModifyProperty_Ability2 extends TgEffectModifyProperty; + +defaultproperties +{ + m_eEquipPointTarget=3 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectModifyProperty_AltFire.uc b/exported/TgGame/Classes/TgEffectModifyProperty_AltFire.uc new file mode 100755 index 00000000..efbe3dd1 --- /dev/null +++ b/exported/TgGame/Classes/TgEffectModifyProperty_AltFire.uc @@ -0,0 +1,7 @@ +class TgEffectModifyProperty_AltFire extends TgEffectModifyProperty + native(Effects); + +defaultproperties +{ + m_eEquipPointTarget=16 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectModifyProperty_Child.uc b/exported/TgGame/Classes/TgEffectModifyProperty_Child.uc new file mode 100755 index 00000000..118c70b0 --- /dev/null +++ b/exported/TgGame/Classes/TgEffectModifyProperty_Child.uc @@ -0,0 +1,2 @@ +class TgEffectModifyProperty_Child extends TgEffectModifyProperty + native(Effects); diff --git a/exported/TgGame/Classes/TgEffectModifyProperty_Inhand.uc b/exported/TgGame/Classes/TgEffectModifyProperty_Inhand.uc new file mode 100755 index 00000000..4b4ea979 --- /dev/null +++ b/exported/TgGame/Classes/TgEffectModifyProperty_Inhand.uc @@ -0,0 +1,6 @@ +class TgEffectModifyProperty_Inhand extends TgEffectModifyProperty; + +defaultproperties +{ + m_eEquipPointTarget=1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffectModifyProperty_Movement.uc b/exported/TgGame/Classes/TgEffectModifyProperty_Movement.uc new file mode 100755 index 00000000..f47a5d6e --- /dev/null +++ b/exported/TgGame/Classes/TgEffectModifyProperty_Movement.uc @@ -0,0 +1,6 @@ +class TgEffectModifyProperty_Movement extends TgEffectModifyProperty; + +defaultproperties +{ + m_eEquipPointTarget=4 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEffect_Lift.uc b/exported/TgGame/Classes/TgEffect_Lift.uc new file mode 100755 index 00000000..5b17f689 --- /dev/null +++ b/exported/TgGame/Classes/TgEffect_Lift.uc @@ -0,0 +1,22 @@ +class TgEffect_Lift extends TgEffect + native(Effects); + +var bool m_bApplyKnockup; +var bool m_bRemoveCripple; +var bool m_bRemoveRoot; +var float m_fZHeight; + +// Export UTgEffect_Lift::execApplyEffect(FFrame&, void* const) +native function bool ApplyEffect(Actor Target, optional ImpactInfo Impact, optional bool bLatent); + +// Export UTgEffect_Lift::execCloneEffect(FFrame&, void* const) +native function TgEffect CloneEffect(); + +// Export UTgEffect_Lift::execRemove(FFrame&, void* const) +native function Remove(Actor Target, optional bool bResetToFollow); + +defaultproperties +{ + m_bRemoveCripple=true + m_fZHeight=-99999.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgElevatingVolume.uc b/exported/TgGame/Classes/TgElevatingVolume.uc new file mode 100755 index 00000000..e997762c --- /dev/null +++ b/exported/TgGame/Classes/TgElevatingVolume.uc @@ -0,0 +1,23 @@ +class TgElevatingVolume extends PhysicsVolume + hidecategories(Navigation,Object,Movement,Display); + +defaultproperties +{ + ZoneVelocity=(X=0.0000000,Y=0.0000000,Z=20.0000000) + bVelocityAffectsWalking=false + bEntryPain=false + m_bIsElevating=true + m_bClampPawnVelocity=true + TerminalVelocity=300.0000000 + m_fClampedPawnVelocity=(X=20.0000000,Y=20.0000000) + // Reference: BrushComponent'TgGame.Default__TgElevatingVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__PhysicsVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter.uc b/exported/TgGame/Classes/TgEmitter.uc new file mode 100755 index 00000000..824515d4 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter.uc @@ -0,0 +1,67 @@ +class TgEmitter extends Emitter + native(FX) + hidecategories(Navigation); + +var repnotify name BoneName; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + BoneName; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x86 + if(VarName == 'BoneName') + { + // End:0x83 + if((Pawn(Base) != none) && Pawn(Base).Mesh != none) + { + AttachTo(Pawn(Base), BoneName); + } + } + else + { + super.ReplicatedEvent(VarName); + } + //return; +} + +function AttachTo(Pawn P, name NewBoneName) +{ + BoneName = NewBoneName; + // End:0x67 + if((int(WorldInfo.NetMode) == int(NM_DedicatedServer)) || NewBoneName == 'None') + { + SetBase(P); + } + else + { + SetBase(P,, P.Mesh, BoneName); + } + //return; +} + +simulated function ScaleEmitter(float ScaleFactor) +{ + SetDrawScale(ScaleFactor); + //return; +} + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'Engine.Default__Emitter.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + bDestroyOnSystemFinish=true + Components[0]=ParticleSystemComponent0 + bNoDelete=false + LifeSpan=60.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitterCrashlanding.uc b/exported/TgGame/Classes/TgEmitterCrashlanding.uc new file mode 100755 index 00000000..dde5a81a --- /dev/null +++ b/exported/TgGame/Classes/TgEmitterCrashlanding.uc @@ -0,0 +1,114 @@ +class TgEmitterCrashlanding extends TgEmitterSpawnable + hidecategories(Navigation); + +var export editinline StaticMeshComponent m_PrimaryMesh; +var export editinline StaticMeshComponent m_SecondaryMesh; +var float ParticleDurationAfterImpact; +var export editinline LensFlareComponent m_LensFlare; +var export editinline AudioComponent m_AudioComponent; + +simulated function SetPrimaryMesh(StaticMesh StaticMeshToSet) +{ + m_PrimaryMesh.SetStaticMesh(StaticMeshToSet); + //return; +} + +simulated function SetSecondaryMesh(StaticMesh StaticMeshToSet) +{ + m_SecondaryMesh.SetStaticMesh(StaticMeshToSet); + //return; +} + +simulated function SetAudio(SoundCue SoundCueToSet) +{ + // End:0x56 + if(m_AudioComponent != none) + { + m_AudioComponent.SoundCue = SoundCueToSet; + m_AudioComponent.Play(); + } + //return; +} + +simulated function OnImpact() +{ + m_PrimaryMesh.SetHidden(true); + m_SecondaryMesh.SetHidden(true); + m_LensFlare.SetHidden(true); + // End:0x8D + if(ParticleDurationAfterImpact != 0.0000000) + { + SetTimer(ParticleDurationAfterImpact, false, 'PostImpactComplete'); + } + else + { + PostImpactComplete(); + } + //return; +} + +simulated function PostImpactComplete() +{ + // End:0x2E + if(ParticleSystemComponent != none) + { + ParticleSystemComponent.DeactivateSystem(); + } + // End:0x5D + if(m_AudioComponent != none) + { + m_AudioComponent.Stop(); + } + bCurrentlyActive = false; + LifeSpan = 2.0000000; + //return; +} + +defaultproperties +{ + // Reference: StaticMeshComponent'TgGame.Default__TgEmitterCrashlanding.Primary' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Primary' + begin object name="Primary" class=Engine.StaticMeshComponent + ReplacementPrimitive=none + end object + m_PrimaryMesh=Primary + // Reference: StaticMeshComponent'TgGame.Default__TgEmitterCrashlanding.Secondary' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Secondary' + begin object name="Secondary" class=Engine.StaticMeshComponent + ReplacementPrimitive=none + end object + m_SecondaryMesh=Secondary + ParticleDurationAfterImpact=5.0000000 + // Reference: LensFlareComponent'TgGame.Default__TgEmitterCrashlanding.LF' + // TemplateOwnerClass: none + // TemplateOwnerName: 'LF' + begin object name="LF" class=Engine.LensFlareComponent + ReplacementPrimitive=none + end object + m_LensFlare=LF + // Reference: AudioComponent'TgGame.Default__TgEmitterCrashlanding.AC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AC' + begin object name="AC" class=Engine.AudioComponent + bStopWhenOwnerDestroyed=true + bShouldRemainActiveIfDropped=true + end object + m_AudioComponent=AC + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitterCrashlanding.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitterSpawnable.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=none + Components[1]=ParticleSystemComponent0 + Components[2]=none + Components[3]=Primary + Components[4]=Secondary + Components[5]=LF + Components[6]=AC +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitterSpawnable.uc b/exported/TgGame/Classes/TgEmitterSpawnable.uc new file mode 100755 index 00000000..14a893d8 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitterSpawnable.uc @@ -0,0 +1,21 @@ +class TgEmitterSpawnable extends Emitter + native(FX) + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitterSpawnable.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'Engine.Default__Emitter.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + SecondsBeforeInactive=0.0000000 + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + bDestroyOnSystemFinish=true + Components[0]=none + Components[1]=ParticleSystemComponent0 + Components[2]=none + bNoDelete=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitterSpawnable_TeamColor.uc b/exported/TgGame/Classes/TgEmitterSpawnable_TeamColor.uc new file mode 100755 index 00000000..a2f4f93c --- /dev/null +++ b/exported/TgGame/Classes/TgEmitterSpawnable_TeamColor.uc @@ -0,0 +1,20 @@ +class TgEmitterSpawnable_TeamColor extends TgEmitter_TeamColor + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitterSpawnable_TeamColor.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_TeamColor.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + SecondsBeforeInactive=0.0000000 + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + bDestroyOnSystemFinish=true + Components[0]=none + Components[1]=ParticleSystemComponent0 + Components[2]=none + bNoDelete=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect.uc new file mode 100755 index 00000000..730c9bba --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect.uc @@ -0,0 +1,102 @@ +class TgEmitter_CameraEffect extends TgEmitter + native(FX) + hidecategories(Navigation); + +var() protected float m_fDistFromCamera; +var() bool m_bShowOnlyIn1P; +var bool m_bIsIn1P; +var bool m_bIsCameraEffectActive; +var array m_SoundList; + +function Destroyed() +{ + local TgPlayerCamera CameraOwner; + + CameraOwner = TgPlayerCamera(Owner); + // End:0x4B + if(CameraOwner != none) + { + CameraOwner.RemoveCameraEffect(self); + } + super(Actor).Destroyed(); + //return; +} + +simulated function Activate() +{ + super(Emitter).Activate(); + m_bIsCameraEffectActive = true; + PlaySounds(); + //return; +} + +simulated function Deactivate() +{ + super(Emitter).Deactivate(); + m_bIsCameraEffectActive = false; + StopSounds(); + //return; +} + +simulated event Reactivate() +{ + // End:0x17 + if(m_bIsCameraEffectActive) + { + Deactivate(); + } + Activate(); + //return; +} + +simulated event SetCameraEffectActive(bool bActive) +{ + // End:0x3D + if(bActive != m_bIsCameraEffectActive) + { + // End:0x33 + if(bActive) + { + Activate(); + } + else + { + Deactivate(); + } + } + //return; +} + +simulated function SetSoundList(array SoundList) +{ + m_SoundList = SoundList; + //return; +} + +// Export UTgEmitter_CameraEffect::execPlaySounds(FFrame&, void* const) +native simulated function PlaySounds(); + +// Export UTgEmitter_CameraEffect::execStopSounds(FFrame&, void* const) +native simulated function StopSounds(); + +// Export UTgEmitter_CameraEffect::execUpdateLocation(FFrame&, void* const) +native function UpdateLocation(const out Vector CamLoc, const out Rotator CamRot, float CamFOVDeg); + +defaultproperties +{ + m_fDistFromCamera=225.0000000 + m_bShowOnlyIn1P=true + m_bIsIn1P=true + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + ReplacementPrimitive=none + DepthPriorityGroup=ESceneDepthPriorityGroup.SDPG_Foreground + end object + ParticleSystemComponent=ParticleSystemComponent0 + bDestroyOnSystemFinish=false + Components[0]=ParticleSystemComponent0 + LifeSpan=0.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Bleed.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Bleed.uc new file mode 100755 index 00000000..bcaaf843 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Bleed.uc @@ -0,0 +1,16 @@ +class TgEmitter_CameraEffect_Bleed extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Bleed.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'fx_generic_status.Particles.FX_Gen_Stat_Bleed_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_CCImmune.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_CCImmune.uc new file mode 100755 index 00000000..afdda07b --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_CCImmune.uc @@ -0,0 +1,16 @@ +class TgEmitter_CameraEffect_CCImmune extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_CCImmune.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'fx_generic_status.Particles.FX_Gen_Stat_Cleanse_Loop_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Cripple.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Cripple.uc new file mode 100755 index 00000000..95b112f5 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Cripple.uc @@ -0,0 +1,16 @@ +class TgEmitter_CameraEffect_Cripple extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Cripple.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'fx_generic_status.Particles.FX_Gen_Stat_Crippled_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBase.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBase.uc new file mode 100755 index 00000000..c7602e43 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBase.uc @@ -0,0 +1,63 @@ +class TgEmitter_CameraEffect_DamageBase extends TgEmitter_CameraEffect + abstract + native(FX) + hidecategories(Navigation); + +enum EDamageEffectScreenLocation +{ + DESL_Right, // 0 + DESL_TopRight, // 1 + DESL_Top, // 2 + DESL_TopLeft, // 3 + DESL_Left, // 4 + DESL_BottomLeft, // 5 + DESL_Bottom, // 6 + DESL_BottomRight, // 7 + DESL_MAX // 8 +}; + +var const TgEmitter_CameraEffect_DamageBase.EDamageEffectScreenLocation ScreenLocation; + +function SetDamageIntensity(float fDamageIntensity, bool bCritical) +{ + fDamageIntensity = FClamp(fDamageIntensity, 0.0000000, 1.0000000); + ParticleSystemComponent.SetFloatParameter('Crit', ((bCritical) ? 1.0000000 : 0.0000000)); + ParticleSystemComponent.SetFloatParameter('Intensity', fDamageIntensity); + //return; +} + +simulated function Activate() +{ + // End:0x85 + if(ParticleSystemComponent != none) + { + // End:0x52 + if(!ParticleSystemComponent.bWasDeactivated) + { + ParticleSystemComponent.DeactivateSystem(); + } + ParticleSystemComponent.ActivateSystem(); + LifeSpan = default.LifeSpan; + } + //return; +} + +// Export UTgEmitter_CameraEffect_DamageBase::execUpdateLocation(FFrame&, void* const) +native function UpdateLocation(const out Vector CamLoc, const out Rotator CamRot, float CamFOVDeg); + +defaultproperties +{ + m_fDistFromCamera=500.0000000 + m_bShowOnlyIn1P=false + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageBase.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + bAutoActivate=false + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 + LifeSpan=10.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBottom.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBottom.uc new file mode 100755 index 00000000..3d413d66 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBottom.uc @@ -0,0 +1,17 @@ +class TgEmitter_CameraEffect_DamageBottom extends TgEmitter_CameraEffect_DamageBase + hidecategories(Navigation); + +defaultproperties +{ + ScreenLocation=EDamageEffectScreenLocation.DESL_Bottom + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageBottom.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageBase.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'FX_Generic_Combat.Particles.FX_Gen_Cbt_Screen_Hit_CAM_Sides' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBottomLeft.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBottomLeft.uc new file mode 100755 index 00000000..cd0dc506 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBottomLeft.uc @@ -0,0 +1,17 @@ +class TgEmitter_CameraEffect_DamageBottomLeft extends TgEmitter_CameraEffect_DamageBase + hidecategories(Navigation); + +defaultproperties +{ + ScreenLocation=EDamageEffectScreenLocation.DESL_BottomLeft + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageBottomLeft.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageBase.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'FX_Generic_Combat.Particles.FX_Gen_Cbt_Screen_Hit_Corner_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBottomRight.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBottomRight.uc new file mode 100755 index 00000000..f03badb7 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageBottomRight.uc @@ -0,0 +1,17 @@ +class TgEmitter_CameraEffect_DamageBottomRight extends TgEmitter_CameraEffect_DamageBase + hidecategories(Navigation); + +defaultproperties +{ + ScreenLocation=EDamageEffectScreenLocation.DESL_BottomRight + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageBottomRight.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageBase.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'FX_Generic_Combat.Particles.FX_Gen_Cbt_Screen_Hit_Corner_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageLeft.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageLeft.uc new file mode 100755 index 00000000..e77d0fb1 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageLeft.uc @@ -0,0 +1,17 @@ +class TgEmitter_CameraEffect_DamageLeft extends TgEmitter_CameraEffect_DamageBase + hidecategories(Navigation); + +defaultproperties +{ + ScreenLocation=EDamageEffectScreenLocation.DESL_Left + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageLeft.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageBase.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'FX_Generic_Combat.Particles.FX_Gen_Cbt_Screen_Hit_CAM_Sides' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageRight.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageRight.uc new file mode 100755 index 00000000..452dc54f --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageRight.uc @@ -0,0 +1,16 @@ +class TgEmitter_CameraEffect_DamageRight extends TgEmitter_CameraEffect_DamageBase + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageRight.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageBase.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'FX_Generic_Combat.Particles.FX_Gen_Cbt_Screen_Hit_CAM_Sides' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageTop.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageTop.uc new file mode 100755 index 00000000..6d9dd940 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageTop.uc @@ -0,0 +1,17 @@ +class TgEmitter_CameraEffect_DamageTop extends TgEmitter_CameraEffect_DamageBase + hidecategories(Navigation); + +defaultproperties +{ + ScreenLocation=EDamageEffectScreenLocation.DESL_Top + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageTop.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageBase.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'FX_Generic_Combat.Particles.FX_Gen_Cbt_Screen_Hit_Top_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageTopLeft.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageTopLeft.uc new file mode 100755 index 00000000..2ae1327d --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageTopLeft.uc @@ -0,0 +1,17 @@ +class TgEmitter_CameraEffect_DamageTopLeft extends TgEmitter_CameraEffect_DamageBase + hidecategories(Navigation); + +defaultproperties +{ + ScreenLocation=EDamageEffectScreenLocation.DESL_TopLeft + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageTopLeft.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageBase.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'FX_Generic_Combat.Particles.FX_Gen_Cbt_Screen_Hit_Corner_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageTopRight.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageTopRight.uc new file mode 100755 index 00000000..b68cd8c1 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_DamageTopRight.uc @@ -0,0 +1,17 @@ +class TgEmitter_CameraEffect_DamageTopRight extends TgEmitter_CameraEffect_DamageBase + hidecategories(Navigation); + +defaultproperties +{ + ScreenLocation=EDamageEffectScreenLocation.DESL_TopRight + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageTopRight.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_DamageBase.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'FX_Generic_Combat.Particles.FX_Gen_Cbt_Screen_Hit_Corner_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Daze.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Daze.uc new file mode 100755 index 00000000..4fd87092 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Daze.uc @@ -0,0 +1,16 @@ +class TgEmitter_CameraEffect_Daze extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Daze.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'fx_generic_status.Particles.FX_Gen_Stat_Daze_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Fire.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Fire.uc new file mode 100755 index 00000000..d7c8311f --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Fire.uc @@ -0,0 +1,16 @@ +class TgEmitter_CameraEffect_Fire extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Fire.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'fx_generic_status.Particles.FX_Gen_Stat_OnFire_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Freeze.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Freeze.uc new file mode 100755 index 00000000..9197f43e --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Freeze.uc @@ -0,0 +1,16 @@ +class TgEmitter_CameraEffect_Freeze extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Freeze.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'fx_generic_status.Particles.FX_Gen_Stat_Frozen_Active_CAM_A' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Heal.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Heal.uc new file mode 100755 index 00000000..f4a1527e --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Heal.uc @@ -0,0 +1,24 @@ +class TgEmitter_CameraEffect_Heal extends TgEmitter_CameraEffect + hidecategories(Navigation); + +function SetHealIntensity(float fHealIntensity, bool bCritical) +{ + fHealIntensity = FClamp(fHealIntensity, 0.0000000, 1.0000000); + ParticleSystemComponent.SetFloatParameter('Intensity', fHealIntensity); + ParticleSystemComponent.SetFloatParameter('Crit', ((bCritical) ? 1.0000000 : 0.0000000)); + //return; +} + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Heal.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'fx_generic_status.Particles.FX_Gen_Stat_Healing_Loop_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Hidden.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Hidden.uc new file mode 100755 index 00000000..a536fc3e --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Hidden.uc @@ -0,0 +1,32 @@ +class TgEmitter_CameraEffect_Hidden extends TgEmitter_CameraEffect + hidecategories(Navigation); + +simulated function ChangeTemplate(ParticleSystem NewTemplate) +{ + // End:0x37 + if(NewTemplate == none) + { + NewTemplate = default.ParticleSystemComponent.Template; + } + // End:0x9C + if((ParticleSystemComponent != none) && ParticleSystemComponent.Template != NewTemplate) + { + ParticleSystemComponent.SetTemplate(NewTemplate); + } + //return; +} + +defaultproperties +{ + m_bShowOnlyIn1P=false + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Hidden.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'FX_Env_Atmosphere.Particles.FX_Hidden_1P_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Knockback.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Knockback.uc new file mode 100755 index 00000000..43de47a6 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Knockback.uc @@ -0,0 +1,16 @@ +class TgEmitter_CameraEffect_Knockback extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Knockback.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'fx_generic_status.Particles.FX_Gen_Stat_Knockback_1P_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Mark.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Mark.uc new file mode 100755 index 00000000..2cc4f275 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Mark.uc @@ -0,0 +1,16 @@ +class TgEmitter_CameraEffect_Mark extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Mark.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'fx_generic_status.Particles.FX_Gen_Stat_Mark_of_Death_CAM_A' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Poison.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Poison.uc new file mode 100755 index 00000000..935b1dc5 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Poison.uc @@ -0,0 +1,16 @@ +class TgEmitter_CameraEffect_Poison extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Poison.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'fx_generic_status.Particles.FX_Gen_Stat_Poison_Loop_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_PreTeleport.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_PreTeleport.uc new file mode 100755 index 00000000..d27cec8c --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_PreTeleport.uc @@ -0,0 +1,17 @@ +class TgEmitter_CameraEffect_PreTeleport extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_PreTeleport.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'FX_NPC_Beacon.Particles.FX_In_Phasing_To_Out_CAM_A' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + bDestroyOnSystemFinish=true + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Revealed.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Revealed.uc new file mode 100755 index 00000000..7c2ecd85 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Revealed.uc @@ -0,0 +1,16 @@ +class TgEmitter_CameraEffect_Revealed extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Revealed.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'fx_generic_status.Particles.FX_Scouted_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Root.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Root.uc new file mode 100755 index 00000000..983686de --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Root.uc @@ -0,0 +1,16 @@ +class TgEmitter_CameraEffect_Root extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Root.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'fx_generic_status.Particles.FX_Gen_Stat_Rooted_1P_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Slow.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Slow.uc new file mode 100755 index 00000000..e214f741 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Slow.uc @@ -0,0 +1,16 @@ +class TgEmitter_CameraEffect_Slow extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Slow.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'fx_generic_status.Particles.FX_Gen_Stat_Slowed_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Stun.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Stun.uc new file mode 100755 index 00000000..44a839f3 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Stun.uc @@ -0,0 +1,16 @@ +class TgEmitter_CameraEffect_Stun extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Stun.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'fx_generic_status.Particles.FX_Gen_Stat_Stun_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Teleport.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Teleport.uc new file mode 100755 index 00000000..f41fa6da --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Teleport.uc @@ -0,0 +1,18 @@ +class TgEmitter_CameraEffect_Teleport extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + m_bShowOnlyIn1P=false + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Teleport.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'FX_Generic_Combat.Particles.FX_Gen_Cbt_Teleported_A_CAM' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + bDestroyOnSystemFinish=true + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_CameraEffect_Venom.uc b/exported/TgGame/Classes/TgEmitter_CameraEffect_Venom.uc new file mode 100755 index 00000000..d679a703 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_CameraEffect_Venom.uc @@ -0,0 +1,16 @@ +class TgEmitter_CameraEffect_Venom extends TgEmitter_CameraEffect + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect_Venom.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'TgGame.Default__TgEmitter_CameraEffect.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + Template=ParticleSystem'fx_generic_status.Particles.FX_Status_Venom_CAM_A' + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=ParticleSystemComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEmitter_TeamColor.uc b/exported/TgGame/Classes/TgEmitter_TeamColor.uc new file mode 100755 index 00000000..9ed75628 --- /dev/null +++ b/exported/TgGame/Classes/TgEmitter_TeamColor.uc @@ -0,0 +1,32 @@ +class TgEmitter_TeamColor extends Emitter + native(FX) + hidecategories(Navigation); + +var() int nTaskForce; +var() ParticleChannelContainer DefaultParticleChannels; + +// Export UTgEmitter_TeamColor::execSetPSCChannels(FFrame&, void* const) +native function SetPSCChannels(); + +simulated function NotifyLocalPlayerTeamReceived() +{ + super(Actor).NotifyLocalPlayerTeamReceived(); + SetPSCChannels(); + //return; +} + +defaultproperties +{ + DefaultParticleChannels=(bInitialized=true,Default=true,Friendly=true,Enemy=false,LocalOwner=false,Channel5=false,Channel6=false,Channel7=false,Channel8=false,VerticalTargeter=false,Filter2=false,NotLocalOwner=false,CustomFilter1=false,CustomFilter2=false,CustomFilter3=false,CustomFilter4=false,CustomFilter5=false,CustomFilter6=false,CustomFilter7=false) + // Reference: ParticleSystemComponent'TgGame.Default__TgEmitter_TeamColor.ParticleSystemComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ParticleSystemComponent0' + // Archetype: ParticleSystemComponent'Engine.Default__Emitter.ParticleSystemComponent0' + begin object name="ParticleSystemComponent0" + ReplacementPrimitive=none + end object + ParticleSystemComponent=ParticleSystemComponent0 + Components[0]=none + Components[1]=ParticleSystemComponent0 + Components[2]=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgEndOfWorldVolume.uc b/exported/TgGame/Classes/TgEndOfWorldVolume.uc new file mode 100755 index 00000000..d5da38a5 --- /dev/null +++ b/exported/TgGame/Classes/TgEndOfWorldVolume.uc @@ -0,0 +1,18 @@ +class TgEndOfWorldVolume extends BlockingVolume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +defaultproperties +{ + bCuttingBrush=true + // Reference: BrushComponent'TgGame.Default__TgEndOfWorldVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__BlockingVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgExplosionLight.uc b/exported/TgGame/Classes/TgExplosionLight.uc new file mode 100755 index 00000000..03a39333 --- /dev/null +++ b/exported/TgGame/Classes/TgExplosionLight.uc @@ -0,0 +1,55 @@ +class TgExplosionLight extends PointLightComponent + native + editinlinenew + hidecategories(Object); + +struct native LightValues +{ + var float StartTime; + var float Radius; + var float Brightness; + var Color LightColor; + var Color EnemyLightColor; + var Color LocalLightColor; + + structdefaultproperties + { + StartTime=0.0000000 + Radius=0.0000000 + Brightness=0.0000000 + LightColor=(R=0,G=0,B=0,A=0) + EnemyLightColor=(R=0,G=0,B=0,A=0) + LocalLightColor=(R=0,G=0,B=0,A=0) + } +}; + +var bool bCheckFrameRate; +var bool bInitialized; +var() bool bIsEnemy; +var() bool bIsLocal; +var bool bIsLooping; +var float HighDetailFrameTime; +var float Lifetime; +var int TimeShiftIndex; +var() array TimeShift; +var() int LoopIndex; +//var delegate __OnLightFinished__Delegate; + +// Export UTgExplosionLight::execResetLight(FFrame&, void* const) +native final function ResetLight(); + +delegate OnLightFinished(TgExplosionLight Light) +{ + //return; +} + +defaultproperties +{ + bCheckFrameRate=true + HighDetailFrameTime=0.0150000 + LoopIndex=-1 + Radius=256.0000000 + Brightness=8.0000000 + LightColor=(R=255,G=255,B=255,A=255) + CastShadows=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgFatalityFactory.uc b/exported/TgGame/Classes/TgFatalityFactory.uc new file mode 100755 index 00000000..b108c5d7 --- /dev/null +++ b/exported/TgGame/Classes/TgFatalityFactory.uc @@ -0,0 +1,22 @@ +class TgFatalityFactory extends Actor + placeable + hidecategories(Navigation); + +var TgFatalityMeshActor m_FatalityMeshActor; +var() LightingChannelContainer m_LightingChannels; + +simulated function PlayEpicFatality(int MeshAsmId) +{ + m_FatalityMeshActor = Spawn(Class'TgGame.TgFatalityMeshActor', self,,,,, true); + m_FatalityMeshActor.Initialize(MeshAsmId, 1); + m_FatalityMeshActor.m_Mesh.SetLightingChannels(m_LightingChannels); + //return; +} + +defaultproperties +{ + m_LightingChannels=(bInitialized=false,BSP=false,Static=false,Dynamic=false,CompositeDynamic=false,Skybox=false,Unnamed_1=false,Unnamed_2=false,Unnamed_3=false,Unnamed_4=false,Unnamed_5=false,Unnamed_6=true,Cinematic_1=false,Cinematic_2=false,Cinematic_3=false,Cinematic_4=false,Cinematic_5=false,Cinematic_6=false,Cinematic_7=false,Cinematic_8=false,Cinematic_9=false,Cinematic_10=false,Gameplay_1=false,Gameplay_2=false,Gameplay_3=false,Gameplay_4=false,Crowd=false) + Components[0]=none + bStatic=true + bNoDelete=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgFatalityMeshActor.uc b/exported/TgGame/Classes/TgFatalityMeshActor.uc new file mode 100755 index 00000000..8353a550 --- /dev/null +++ b/exported/TgGame/Classes/TgFatalityMeshActor.uc @@ -0,0 +1,33 @@ +class TgFatalityMeshActor extends Actor + native + notplaceable + hidecategories(Navigation); + +var() int m_nTaskForceId; +var() export editinline TgSkeletalMeshComponent m_Mesh; + +// Export UTgFatalityMeshActor::execInitialize(FFrame&, void* const) +native function Initialize(int MeshAssemblyId, int TaskForceId); + +defaultproperties +{ + // Reference: TgSkeletalMeshComponent'TgGame.Default__TgFatalityMeshActor.SkelMesh' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkelMesh' + begin object name="SkelMesh" class=TgGame.TgSkeletalMeshComponent + Animations=AnimNodeSequence'TgGame.Default__TgFatalityMeshActor.AnimNodeSeq0' + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgFatalityMeshActor.MyLightEnvironment' + CastShadow=false + end object + m_Mesh=SkelMesh + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgFatalityMeshActor.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + begin object name="MyLightEnvironment" class=Engine.DynamicLightEnvironmentComponent + bSynthesizeSHLight=true + bIsCharacterLightEnvironment=true + end object + Components[0]=MyLightEnvironment + Components[1]=SkelMesh +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgFlagContentData.uc b/exported/TgGame/Classes/TgFlagContentData.uc new file mode 100755 index 00000000..b915959f --- /dev/null +++ b/exported/TgGame/Classes/TgFlagContentData.uc @@ -0,0 +1,86 @@ +class TgFlagContentData extends Object + native; + +enum FlagContentDataType +{ + FCDT_None, // 0 + FCDT_Egyptian_Lobby, // 1 + FCDT_Egyptian_Wall, // 2 + FCDT_Norse_Lobby, // 3 + FCDT_Norse_Wall, // 4 + FCDT_Greek_Lobby, // 5 + FCDT_Greek_Wall, // 6 + FCDT_Roman_Lobby, // 7 + FCDT_Roman_Wall, // 8 + FCDT_Chinese_Lobby, // 9 + FCDT_Chinese_Wall, // 10 + FCDT_Mayan_Lobby, // 11 + FCDT_Mayan_Wall, // 12 + FCDT_Hindu_Lobby, // 13 + FCDT_Hindu_Wall, // 14 + FCDT_MAX // 15 +}; + +struct native FlagMeshData +{ + var TgFlagContentData.FlagContentDataType ContentDataType; + var TgMenuMeshInfo MainMeshInfo; + + structdefaultproperties + { + ContentDataType=FlagContentDataType.FCDT_None + MainMeshInfo=none + } +}; + +var array m_MeshData; + +function Init() +{ + //return; +} + +event GetMeshData(TgFlagContentData.FlagContentDataType ContentDataType, out FlagMeshData Data) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x88 [Loop If] + if(I < m_MeshData.Length) + { + // End:0x7A + if(int(ContentDataType) == int(m_MeshData[I].ContentDataType)) + { + Data = m_MeshData[I]; + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function PreloadTextures(float ForceDuration) +{ + local int I; + + I = 0; + J0x0B: + + // End:0xA2 [Loop If] + if(I < m_MeshData.Length) + { + // End:0x94 + if(m_MeshData[I].MainMeshInfo != none) + { + m_MeshData[I].MainMeshInfo.PreloadTextures(ForceDuration); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} diff --git a/exported/TgGame/Classes/TgFogOfWarBarrier.uc b/exported/TgGame/Classes/TgFogOfWarBarrier.uc new file mode 100755 index 00000000..8dd32f45 --- /dev/null +++ b/exported/TgGame/Classes/TgFogOfWarBarrier.uc @@ -0,0 +1,32 @@ +class TgFogOfWarBarrier extends StaticMeshActor + native + hidecategories(Navigation); + +var() bool m_bOneDirectional; +var() float m_fBlockMinimumDistance; + +defaultproperties +{ + m_fBlockMinimumDistance=480.0000000 + // Reference: StaticMeshComponent'TgGame.Default__TgFogOfWarBarrier.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__StaticMeshActor.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + ReplacementPrimitive=none + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: TgSilhouetteComponent'TgGame.Default__TgFogOfWarBarrier.MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__StaticMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=StaticMeshComponent'TgGame.Default__TgFogOfWarBarrier.StaticMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + Components[0]=StaticMeshComponent0 + Components[1]=MySilhouette + Components[2]=none + bWorldGeometry=false + bBlockActors=false + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgFortressVolume.uc b/exported/TgGame/Classes/TgFortressVolume.uc new file mode 100755 index 00000000..b36ac70b --- /dev/null +++ b/exported/TgGame/Classes/TgFortressVolume.uc @@ -0,0 +1,63 @@ +class TgFortressVolume extends Volume + native + hidecategories(Navigation,Object,Movement,Display); + +var() int TaskforceIndex; + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn OtherPawn; + + OtherPawn = TgPawn(Other); + // End:0x53 + if(OtherPawn != none) + { + OtherPawn.r_nInsideTaskForceBase = TaskforceIndex; + } + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + //return; +} + +event UnTouch(Actor Other) +{ + local TgPawn OtherPawn; + + OtherPawn = TgPawn(Other); + // End:0x4B + if(OtherPawn != none) + { + OtherPawn.r_nInsideTaskForceBase = 0; + } + super(Actor).UnTouch(Other); + //return; +} + +event PostBeginPlay() +{ + local TgGame Game; + + super.PostBeginPlay(); + Game = TgGame(WorldInfo.Game); + // End:0x83 + if((int(Role) == int(ROLE_Authority)) && Game != none) + { + Game.s_FortressVolumes.AddItem(self); + } + //return; +} + +defaultproperties +{ + TaskforceIndex=-1 + // Reference: BrushComponent'TgGame.Default__TgFortressVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionType=ECollisionType.COLLIDE_NoCollision + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame.UPKG b/exported/TgGame/Classes/TgGame.UPKG new file mode 100755 index 00000000..29cb1564 --- /dev/null +++ b/exported/TgGame/Classes/TgGame.UPKG @@ -0,0 +1,4 @@ +[Flags] +AllowDownload=True +ClientOptional=False +ServerSideOnly=False diff --git a/exported/TgGame/Classes/TgGame.uc b/exported/TgGame/Classes/TgGame.uc new file mode 100755 index 00000000..0beba7a3 --- /dev/null +++ b/exported/TgGame/Classes/TgGame.uc @@ -0,0 +1,1076 @@ +class TgGame extends FrameworkGame + abstract + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +const UNKNOWN_PROJECTILE_INSTANCE_ID = 0; +const FIRST_VALID_PROJECTILE_INSTANCE_ID = 1; +const BASE_RESPAWN_TIME_SEC = 5; +const DEFAULT_MOUNT = 11512; + +struct native PlayOfTheGameInfo +{ + var TgRepInfo_Player PRI; + var float Rating; + + structdefaultproperties + { + PRI=none + Rating=0.0000000 + } +}; + +struct native PlayOfTheGameEventConfig +{ + var TgObject.EPlayOfTheGameEventType EventType; + var float BaseRating; + var float MultMod; + var float MaxTimeDiff; + var bool ScaleByTimeDiff; + var int MaxMultInstances; + var float Threshold; + var float ThresholdTimeOut; + + structdefaultproperties + { + EventType=EPlayOfTheGameEventType.POTG_ScoreKill + BaseRating=0.0000000 + MultMod=0.0000000 + MaxTimeDiff=0.0000000 + ScaleByTimeDiff=true + MaxMultInstances=999 + Threshold=0.0000000 + ThresholdTimeOut=10000.0000000 + } +}; + +struct native TgAIBotPlayersToSpawn +{ + var init string fsName; + var int nBotId; + var int nTaskForceId; + var int nSpawnTableDetailId; + + structdefaultproperties + { + fsName="" + nBotId=0 + nTaskForceId=0 + nSpawnTableDetailId=0 + } +}; + +var Class m_ContentPackageReference; +var TgObject.GAME_WIN_STATE m_GameWinState; +var TgObject.TG_GAME_TYPE m_GameType; +var float m_fSpawnProtectionTime; +var float m_fMaxRepawnTime; +var float m_fUnpauseCountdownRemaining; +var int s_nBotPlayerCount; +var bool s_bGameInitialized; +var bool s_bGameEndMissionProcessed; +var bool s_bMissionSealed; +var const bool m_bForceUsePRISpawnPoint; +var bool m_bRewardCalculated; +var bool m_bStatsCanTie; +var bool m_bStatsIsSymmetric; +var protected bool m_bIsTutorialGametype; +var protected bool m_bIsPracticeGametype; +var globalconfig bool m_bEnableHeadShots; +var bool m_bPlayOfTheGameLocked; +var protected int s_nNextActorInstanceId; +var protected int s_nNextProjectileInstanceId; +var init array s_AIVolumes; +var init array s_Taskforce1AIVolumesIndices; +var init array s_Taskforce2AIVolumesIndices; +var init array s_FortressVolumes; +var init native map{VOID,VOID} s_AIAnnotations; +var init array s_DeviceVolumes; +var array s_ActorFactories; +var float s_fXPModifier; +var const config float m_fGlobalCooldownTime; +var init array m_ClientLogins; +var config float m_fOcclusionCalcPeriod; +var config float m_fOcclusionMaxDeviation; +var PlayOfTheGameInfo m_PlayOfTheGame; +var float m_fPlayOfTheGameLength; +var float m_fPlayOfTheGameIntroBufferLength; +var float m_fPlayOfTheGameOuttroBufferLength; +var array m_PlayOfTheGameEventConfigs; +var array m_PlayerSpawnExits; + +// Export UTgGame::execLoadGameConfig(FFrame&, void* const) +native function LoadGameConfig(); + +// Export UTgGame::execInitGameRepInfo(FFrame&, void* const) +native function InitGameRepInfo(); + +// Export UTgGame::execSpawnPlayerCharacter(FFrame&, void* const) +native function TgPawn SpawnPlayerCharacter(Controller C, Vector vLocation); + +// Export UTgGame::execGetWinningTaskforce(FFrame&, void* const) +native function int GetWinningTaskforce(); + +// Export UTgGame::execBeginEndMission(FFrame&, void* const) +native function bool BeginEndMission(optional bool bClearNextMapGame = false, optional Actor EndMissionFocus, optional float fDelayOverride = 0.0000000); + +// Export UTgGame::execFinishEndMission(FFrame&, void* const) +native function bool FinishEndMission(); + +// Export UTgGame::execSpawnBotById(FFrame&, void* const) +native function TgPawn SpawnBotById(int nBotId, int nSkinId, int nHeadId, int nWeaponSkinId, Vector vLocation, Rotator rRotation, TgBotFactory pFactory, optional bool bIgnoreCollision = false, optional TgPawn pOwnerPawn, optional TgDeviceFire deviceFire, optional float fDeployAnimLength = 0.0000000, optional name ControllerClassName, optional name BehaviorTreeName); + +// Export UTgGame::execSpawnBotPawn(FFrame&, void* const) +native function TgPawn SpawnBotPawn(TgAIController pTgAI, Vector vLocation, Rotator rRotation, optional bool bIgnoreCollision = false, optional TgPawn pOwnerPawn, optional float fDeploySecs); + +// Export UTgGame::execSpawnTemplatePlayer(FFrame&, void* const) +native function TgPawn SpawnTemplatePlayer(TgPlayerController pTgPC, int nProfileId, optional int nSkinId = 0, optional int nWeaponSkinId = 0, optional int nHeadSkinId = 0); + +// Export UTgGame::execEnsureBotPrecache(FFrame&, void* const) +native function EnsureBotPrecache(int nBotId, int nSkinId, int nHeadId, int nDeviceSkinId); + +// Export UTgGame::execEnsureDevicePrecache(FFrame&, void* const) +native function EnsureDevicePrecache(int nDeviceId, int nDeviceSkinId); + +// Export UTgGame::execEnsureHeadPrecache(FFrame&, void* const) +native function EnsureHeadPrecache(int nHeadId); + +// Export UTgGame::execSwapToNewAIController(FFrame&, void* const) +native function bool SwapToNewAIController(Controller C, TgPawn_Character TgPawn); + +// Export UTgGame::execSpawnDefaultBotPlayers(FFrame&, void* const) +native function bool SpawnDefaultBotPlayers(out array BotPlayersToSpawn, optional bool bStartPaused = true); + +// Export UTgGame::execPlayerDied(FFrame&, void* const) +native function PlayerDied(TgPlayerController PC); + +// Export UTgGame::execBotDied(FFrame&, void* const) +native function BotDied(TgAIController aic); + +// Export UTgGame::execGetActualRespawnTime(FFrame&, void* const) +native final function float GetActualRespawnTime(int TaskForceNum); + +// Export UTgGame::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +// Export UTgGame::execGetGameVersion(FFrame&, void* const) +native static function string GetGameVersion(); + +// Export UTgGame::execNotifyPostCommitMapChange(FFrame&, void* const) +native function NotifyPostCommitMapChange(); + +// Export UTgGame::execResetStats(FFrame&, void* const) +native function ResetStats(); + +// Export UTgGame::execAllowPausing(FFrame&, void* const) +native function bool AllowPausing(optional PlayerController PC); + +// Export UTgGame::execBeginUnpauseCountdown(FFrame&, void* const) +native function BeginUnpauseCountdown(float fSeconds); + +// Export UTgGame::execEndUnpauseCountdown(FFrame&, void* const) +native function EndUnpauseCountdown(); + +// Export UTgGame::execSendPauseNotification(FFrame&, void* const) +native function SendPauseNotification(optional PlayerController PC); + +// Export UTgGame::execCanSpoolCredits(FFrame&, void* const) +native function bool CanSpoolCredits(); + +// Export UTgGame::execConsiderForBestPlayOfTheGame(FFrame&, void* const) +native function bool ConsiderForBestPlayOfTheGame(TgRepInfo_Player PRI); + +// Export UTgGame::execGetWeightedPlayOfTheGameEventRating(FFrame&, void* const) +native function float GetWeightedPlayOfTheGameEventRating(TgRepInfo_Player PRI, int nIndex); + +// Export UTgGame::execCachePlayOfTheGame(FFrame&, void* const) +native function CachePlayOfTheGame(); + +// Export UTgGame::execResetPlayOfTheGame(FFrame&, void* const) +native function ResetPlayOfTheGame(); + +// Export UTgGame::execLockPlayOfTheGame(FFrame&, void* const) +native function LockPlayOfTheGame(bool bLocked); + +// Export UTgGame::execInitPlayOfTheGameConfig(FFrame&, void* const) +native function InitPlayOfTheGameConfig(); + +event PreBeginPlay() +{ + super(GameInfo).PreBeginPlay(); + ResetStats(); + //return; +} + +event PostBeginPlay() +{ + local TgSpawnTeleporterExit SpawnTeleExit; + + super(GameInfo).PostBeginPlay(); + s_bGameInitialized = true; + m_ContentPackageReference = Class(DynamicLoadObject("TgGameContent.TgKeepContentPackageLoaded", Class'Core.Class')); + // End:0xBB + foreach WorldInfo.AllActors(Class'TgGame.TgSpawnTeleporterExit', SpawnTeleExit) + { + // End:0xBA + if(SpawnTeleExit != none) + { + m_PlayerSpawnExits.AddItem(SpawnTeleExit); + } + } + //return; +} + +function InitGameReplicationInfo() +{ + local TgRepInfo_Game TgGRI; + + InitGameRepInfo(); + super(GameInfo).InitGameReplicationInfo(); + TgGRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x68 + if(TgGRI != none) + { + TgGRI.SetEnableHeadshots(m_bEnableHeadShots); + } + //return; +} + +event int GetNextActorInstanceId() +{ + return ++s_nNextActorInstanceId; + //return ReturnValue; +} + +event int GetNextProjectileInstanceId() +{ + // End:0x20 + if(++s_nNextProjectileInstanceId >= (1 << 24)) + { + s_nNextProjectileInstanceId = 1; + } + return s_nNextProjectileInstanceId; + //return ReturnValue; +} + +function Reset() +{ + local Controller C; + + super(GameInfo).Reset(); + // End:0xB1 + foreach WorldInfo.AllControllers(Class'Engine.Controller', C) + { + // End:0xB0 + if((C.PlayerReplicationInfo != none) && !C.PlayerReplicationInfo.bOnlySpectator) + { + RestartPlayer(C); + } + } + //return; +} + +event InitGame(string Options, out string ErrorMessage) +{ + LoadGameConfig(); + InitPlayOfTheGameConfig(); + super(GameInfo).InitGame(Options, ErrorMessage); + //return; +} + +function StartBots() +{ + //return; +} + +function Pawn SpawnDefaultPawnFor(Controller NewPlayer, NavigationPoint StartSpot) +{ + local Pawn ResultPawn; + local TgAIController AI; + local TgPlayerController PC; + + AI = TgAIController(NewPlayer); + // End:0x8A + if(AI != none) + { + ResultPawn = SpawnBotPawn(AI, StartSpot.Location, StartSpot.Rotation); + } + else + { + PC = TgPlayerController(NewPlayer); + // End:0xB5 + if(PC == none) + { + } + // End:0xD9 + if(PC.Player == none) + { + } + // End:0x138 + if((PC.PlayerReplicationInfo != none) && PC.PlayerReplicationInfo.bOnlySpectator) + { + return none; + } + // End:0x165 + if(NetConnection(PC.Player) == none) + { + } + ResultPawn = SpawnPlayerCharacter(PC, StartSpot.Location); + } + return ResultPawn; + //return ReturnValue; +} + +event AllPlayersEndGame(Actor EndGameFocus) +{ + local Controller C; + local TgPawn P; + local bool IsWinner; + + IsWinner = false; + // End:0xFE + foreach WorldInfo.AllControllers(Class'Engine.Controller', C) + { + P = TgPawn(C.Pawn); + // End:0xCB + if(P != none) + { + // End:0xBF + if(int(P.GetTaskForceNumber()) == (GetWinningTaskforce())) + { + IsWinner = true; + } + else + { + IsWinner = false; + } + } + C.GameHasEnded(EndGameFocus, IsWinner); + } + //return; +} + +function RestartPlayer(Controller aPlayer) +{ + local TgPlayerController PC; + local bool bHadPawn; + local NavigationPoint np; + + PC = TgPlayerController(aPlayer); + // End:0x168 + if(((PC != none) && PC.Player != none) && !PC.PlayerReplicationInfo.bOnlySpectator) + { + aPlayer.PlayerReplicationInfo.bReadyToPlay = false; + PC.ClientSetReadyState(false); + aPlayer.GotoState('PlayerWaiting'); + // End:0x165 + if(!PC.IsReadyForStart()) + { + PlayerController(aPlayer).ClientGotoState('Dead', 'Begin'); + return; + } + } + else + { + // End:0x1D0 + if(PC != none) + { + PC.ClientSetReadyState(false); + // End:0x1D0 + if(PC.PlayerReplicationInfo.bOnlySpectator) + { + return; + } + } + } + bHadPawn = aPlayer.Pawn != none; + super(GameInfo).RestartPlayer(aPlayer); + // End:0x2E0 + if(bHadPawn) + { + np = FindPlayerStart(PC); + // End:0x2E0 + if(np != none) + { + PC.Pawn.SetLocation(np.Location); + PC.Pawn.SetRotation(np.Rotation); + } + } + TgPawn(PC.Pawn).PostPawnSetupServer(); + // End:0x3E3 + if(PC.s_fWaitForSpawnSecs > 0.0000000) + { + // End:0x3A6 + if(PC.Pawn.GetStateName() == 'Dying') + { + PC.GotoState('Dead'); + } + else + { + TgPawn(PC.Pawn).DespawnOnReconnect(); + } + } + //return; +} + +function AddDefaultInventory(Pawn PlayerPawn) +{ + //return; +} + +function SetPlayerDefaults(Pawn PlayerPawn) +{ + //return; +} + +event NavigationPoint FindPlayerStartPoint(Controller Player, optional string SpawnTagName) +{ + return FindPlayerStart(Player, 0, SpawnTagName); + //return ReturnValue; +} + +event NavigationPoint GetReviveLocation(Controller Player, out Vector OutLocation, out Rotator OutRotation) +{ + local NavigationPoint RestartNavPoint; + local Vector Forward; + + RestartNavPoint = FindPlayerStart(Player); + // End:0x81 + if(RestartNavPoint != none) + { + OutLocation = RestartNavPoint.Location; + OutRotation = RestartNavPoint.Rotation; + } + else + { + // End:0x122 + if(Player.Pawn != none) + { + OutLocation = Player.Pawn.Location; + OutRotation = Player.Pawn.Rotation; + } + else + { + // End:0x181 + if(Player != none) + { + OutLocation = Player.Location; + OutRotation = Player.Rotation; + } + } + } + Forward = Vector(OutRotation); + // End:0x1D6 + if(Forward.Z < 1.0000000) + { + OutRotation = Rotator(Normal2D(Forward)); + } + else + { + OutRotation = MakeRotator(0, 0, 0); + } + return RestartNavPoint; + //return ReturnValue; +} + +function NavigationPoint FindPlayerStart(Controller Player, optional byte InTeam, optional string IncomingName) +{ + local NavigationPoint Start; + local TgStartPoint PS; + + // End:0x85 + if(m_bForceUsePRISpawnPoint) + { + Start = ((TgRepInfo_Player(Player.PlayerReplicationInfo) != none) ? TgRepInfo_Player(Player.PlayerReplicationInfo).r_SpawnPoint : none); + } + // End:0xC3 + if(Start == none) + { + Start = super(GameInfo).FindPlayerStart(Player, InTeam, IncomingName); + } + // End:0xFA + if(Start == none) + { + Start = Player.StartSpot; + } + PS = TgStartPoint(Start); + // End:0x144 + if(PS != none) + { + PS.AdjustRating(); + } + return Start; + //return ReturnValue; +} + +function NavigationPoint FindPlayerGroupStart(Controller Player, int groupNumber, optional byte InTeam, optional string IncomingName) +{ + local NavigationPoint Start; + local TgStartPoint PS; + local float NewRating, BestRating; + + // End:0xD3 + foreach WorldInfo.AllNavigationPoints(Class'TgGame.TgStartPoint', PS) + { + // End:0xD2 + if(PS.GetStartGroupNumber() == groupNumber) + { + NewRating = PS.GetRating(Player); + // End:0xD2 + if(NewRating > BestRating) + { + BestRating = NewRating; + Start = PS; + } + } + } + PS = TgStartPoint(Start); + // End:0x11E + if(PS != none) + { + PS.AdjustRating(); + } + // End:0x12D + if(Start != none) + { + } + return Start; + //return ReturnValue; +} + +event float RatePlayerStartPoint(PlayerStart P, Controller Player) +{ + return RatePlayerStart(P, 0, Player); + //return ReturnValue; +} + +function float RatePlayerStart(PlayerStart P, byte Team, Controller Player) +{ + local TgStartPoint PS; + + PS = TgStartPoint(P); + // End:0x54 + if(PS != none) + { + return PS.GetRating(Player); + } + return super(GameInfo).RatePlayerStart(P, Team, Player); + //return ReturnValue; +} + +function bool ChangeTeam(Controller Other, int Num, bool bNewTeam) +{ + return false; + //return ReturnValue; +} + +function bool ShouldSpawnAtStartSpot(Controller Player) +{ + local TgRepInfo_Player PRI; + + PRI = ((Player != none) ? TgRepInfo_Player(Player.PlayerReplicationInfo) : none); + return super(GameInfo).ShouldSpawnAtStartSpot(Player) && (((PRI == none) || WorldInfo == none) || int(PRI.GetTaskForceNumber()) == int(0)) || int(PRI.GetTaskForceNumber()) == int(255); + //return ReturnValue; +} + +function GotoGameRunningState() +{ + GotoState('GameRunning'); + //return; +} + +function StartMatch() +{ + local TgPlayerController P; + + GotoGameRunningState(); + super(GameInfo).StartMatch(); + // End:0x8D + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', P) + { + // End:0x8C + if(P.IsInState('PlayerWaiting')) + { + P.EnterStartState(); + } + } + //return; +} + +function AddInactivePRI(PlayerReplicationInfo PRI, PlayerController PC) +{ + local int I; + local TgRepInfo_Player NewPRI, CurrentPRI; + + // End:0x207 + if(!PRI.bFromPreviousLevel && !PRI.bOnlySpectator) + { + NewPRI = TgRepInfo_Player(PRI.Duplicate()); + WorldInfo.GRI.RemovePRI(NewPRI); + I = 0; + J0xC4: + + // End:0x1E9 [Loop If] + if(I < InactivePRIArray.Length) + { + CurrentPRI = TgRepInfo_Player(InactivePRIArray[I]); + // End:0x1DB + if((((CurrentPRI == none) || CurrentPRI.bDeleteMe) || CurrentPRI.r_nPlayerId == NewPRI.r_nPlayerId) || CurrentPRI.r_nPawnId == NewPRI.r_nPawnId) + { + InactivePRIArray.Remove(I, 1); + I--; + } + I++; + // [Loop Continue] + goto J0xC4; + } + InactivePRIArray[InactivePRIArray.Length] = NewPRI; + } + PRI.Destroy(); + //return; +} + +function bool FindInactivePRI(PlayerController PC) +{ + local int I; + local PlayerReplicationInfo OldPRI, CurrentPRI; + local TgPlayerController TgPC; + + TgPC = TgPlayerController(PC); + // End:0x66 + if((TgPC == none) || TgPC.PlayerReplicationInfo.bOnlySpectator) + { + return false; + } + I = 0; + J0x71: + + // End:0x3B0 [Loop If] + if(I < InactivePRIArray.Length) + { + CurrentPRI = InactivePRIArray[I]; + // End:0xFC + if((CurrentPRI == none) || CurrentPRI.bDeleteMe) + { + InactivePRIArray.Remove(I, 1); + I--; + } + else + { + // End:0x3A2 + if(TgRepInfo_Player(CurrentPRI).r_nPlayerId == TgRepInfo_Player(TgPC.PlayerReplicationInfo).r_nPlayerId) + { + OldPRI = PC.PlayerReplicationInfo; + PC.PlayerReplicationInfo = CurrentPRI; + PC.PlayerReplicationInfo.SetOwner(PC); + PC.PlayerReplicationInfo.RemoteRole = ROLE_SimulatedProxy; + PC.PlayerReplicationInfo.LifeSpan = 0.0000000; + OverridePRI(PC, OldPRI); + WorldInfo.GRI.AddPRI(PC.PlayerReplicationInfo); + InactivePRIArray.Remove(I, 1); + OldPRI.bIsInactive = true; + OldPRI.Destroy(); + TgRepInfo_Player(CurrentPRI).SetTaskForceNumber(TgRepInfo_Player(CurrentPRI).GetTaskForceNumber(), true); + TgPlayerController(PC).CachedPRI = TgRepInfo_Player(CurrentPRI); + return true; + } + } + I++; + // [Loop Continue] + goto J0x71; + } + return false; + //return ReturnValue; +} + +event PostLogin(PlayerController NewPlayer) +{ + super(GameInfo).PostLogin(NewPlayer); + // End:0x53 + if(TgSpectatorController(NewPlayer) != none) + { + TgSpectatorController(NewPlayer).ForwardToSpectatingMatch(); + } + //return; +} + +event PostCommitMapChange() +{ + NotifyPostCommitMapChange(); + //return; +} + +simulated function bool CanSpectate(PlayerController Viewer, PlayerReplicationInfo ViewTarget) +{ + local bool bViewTargetIsSpectator, bIsFriendlyWithTarget; + local TgRepInfo_Player viewerPRI, targetPRI; + + // End:0x11 + if(ViewTarget == none) + { + return false; + } + bViewTargetIsSpectator = ViewTarget.bOnlySpectator || ViewTarget.bIsSpectator; + bIsFriendlyWithTarget = true; + viewerPRI = TgRepInfo_Player(Viewer.PlayerReplicationInfo); + targetPRI = TgRepInfo_Player(ViewTarget); + // End:0x11A + if((targetPRI.r_PawnOwner != none) && targetPRI.r_PawnOwner.IsInState('Dying')) + { + return false; + } + // End:0x1A9 + if((viewerPRI != none) && targetPRI != none) + { + bIsFriendlyWithTarget = (viewerPRI.r_TaskForce == targetPRI.r_TaskForce) && viewerPRI.r_TaskForce != none; + } + return !bViewTargetIsSpectator && bIsFriendlyWithTarget; + //return ReturnValue; +} + +function bool PreventDeath(Pawn KilledPawn, Controller Killer, Class DamageType, Vector HitLocation) +{ + // End:0x63 + if((KilledPawn.Controller != none) && KilledPawn.Controller.IsA('TgPlayerController')) + { + return true; + } + else + { + // End:0xC6 + if((KilledPawn.Controller != none) && KilledPawn.Controller.IsA('TgAIController_BehaviorGod')) + { + return true; + } + else + { + // End:0x129 + if((KilledPawn.Controller != none) && KilledPawn.Controller.IsA('TgAIController_Manitcore')) + { + return true; + } + else + { + return false; + } + } + } + //return ReturnValue; +} + +function bool SetPause(PlayerController PC, optional delegate CanUnpauseDelegate = CanUnpause) +{ + local bool bWasPaused; + + bWasPaused = (WorldInfo.Pauser != none) && m_fUnpauseCountdownRemaining <= float(0); + // End:0xA6 + if(super(GameInfo).SetPause(PC, CanUnpauseDelegate)) + { + // End:0x95 + if(!bWasPaused) + { + SendPauseNotification(PC); + } + m_fUnpauseCountdownRemaining = 0.0000000; + return true; + } + return false; + //return ReturnValue; +} + +event ClearPause() +{ + local int Index; + local delegate CanUnpauseCriteriaMet; + + // End:0x2E + if(!AllowPausing() && Pausers.Length > 0) + { + Pausers.Length = 0; + } + Index = 0; + J0x39: + + // End:0xBA [Loop If] + if(Index < Pausers.Length) + { + CanUnpauseCriteriaMet = Pausers[Index]; + // End:0xAC + if(CanUnpauseCriteriaMet == none || CanUnpause()) + { + Pausers.Remove(Index--, 1); + } + Index++; + // [Loop Continue] + goto J0x39; + } + // End:0x108 + if(Pausers.Length == 0) + { + // End:0xF9 + if(WorldInfo.IsPlayInEditor()) + { + ClearPauseAfterCountdown(); + } + else + { + BeginUnpauseCountdown(3.0000000); + } + } + //return; +} + +event ClearPauseAfterCountdown() +{ + WorldInfo.Pauser = none; + //return; +} + +event KickIdler(PlayerController PC) +{ + local TgPlayerController aPC; + + aPC = TgPlayerController(PC); + // End:0x4B + if(aPC != none) + { + aPC.Logoff(true); + } + //return; +} + +function SetEnableHeadshots(bool bEnable) +{ + local TgRepInfo_Game TgGRI; + + m_bEnableHeadShots = bEnable; + TgGRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x69 + if(TgGRI != none) + { + TgGRI.SetEnableHeadshots(bEnable); + } + //return; +} + +function int GetGameSpawnPhase(TgPawn TgP) +{ + return -1; + //return ReturnValue; +} + +function int GetCurrentLane() +{ + return -1; + //return ReturnValue; +} + +function bool FindValidSpawnPoints(TgPawn TgP, out array ValidExits) +{ + local TgSpawnTeleporterExit Exit; + local bool bFoundAny; + local int nGamePhase, nCurrentLane; + + // End:0x11 + if(TgP == none) + { + return false; + } + nCurrentLane = GetCurrentLane(); + nGamePhase = GetGameSpawnPhase(TgP); + J0x42: + + // End:0x143 [Loop If] + if(!bFoundAny && nGamePhase >= 0) + { + // End:0x134 + foreach m_PlayerSpawnExits(Exit) + { + // End:0x133 + if((Exit.PawnCanUse(TgP) && Exit.nGamePhase == nGamePhase) && (nCurrentLane < 0) || Exit.nLane == nCurrentLane) + { + ValidExits.AddItem(Exit); + bFoundAny = true; + } + } + nGamePhase--; + // [Loop Continue] + goto J0x42; + } + // End:0x1B8 + if(!bFoundAny) + { + // End:0x1B7 + foreach m_PlayerSpawnExits(Exit) + { + // End:0x1B6 + if(Exit.PawnCanUse(TgP)) + { + ValidExits.AddItem(Exit); + bFoundAny = true; + } + } + } + return bFoundAny; + //return ReturnValue; +} + +function PlayerStart FindPlayerStartForCapturePoint(TgChaosCapturePoint CapPoint, Controller Player, optional bool bUseAttackingForwardSpawn = true) +{ + local TgRepInfo_Game GRI; + local PlayerStart BestStart; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x14A + if((GRI != none) && CapPoint != none) + { + // End:0x118 + if((bUseAttackingForwardSpawn && GRI.r_AttackingTaskForce != none) && int(GRI.r_AttackingTaskForce.GetTeamNum()) == (GetTaskForceForPlayer(Player))) + { + BestStart = FindBestPlayerStart(CapPoint.m_PlayerRespawnPoints, Player); + // End:0x118 + if(BestStart != none) + { + return BestStart; + } + } + return FindBestPlayerStart(CapPoint.m_PlayerBaseSpawnPoints, Player); + } + return none; + //return ReturnValue; +} + +function PlayerStart FindBestPlayerStart(out array PlayerStartPoints, Controller Player) +{ + local PlayerStart BestStart; + local int I, nTaskForce; + local float BestRating, NewRating; + + nTaskForce = GetTaskForceForPlayer(Player); + I = 0; + J0x28: + + // End:0x122 [Loop If] + if(I < PlayerStartPoints.Length) + { + // End:0x5C + if(PlayerStartPoints[I] == none) + { + } + else + { + // End:0x114 + if(nTaskForce == PlayerStartPoints[I].TeamIndex) + { + NewRating = RatePlayerStart(PlayerStartPoints[I], byte(nTaskForce), Player); + // End:0x114 + if(NewRating > BestRating) + { + BestRating = NewRating; + BestStart = PlayerStartPoints[I]; + } + } + } + I++; + // [Loop Continue] + goto J0x28; + } + return BestStart; + //return ReturnValue; +} + +static function int GetTaskForceForPlayer(Controller Player) +{ + // End:0x44 + if(TgPlayerController(Player) != none) + { + return TgPlayerController(Player).GetTaskForceNumber(); + } + else + { + // End:0x85 + if(TgAIController(Player) != none) + { + return TgAIController(Player).GetTaskForceNumber(); + } + } + return -1; + //return ReturnValue; +} + +event AddPotGEventToAllPlayers(TgObject.EPlayOfTheGameEventType potgEvent) +{ + local TgRepInfo_Game TgGRI; + + TgGRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x53 + if(TgGRI != none) + { + TgGRI.AddPotGEventToAllPlayers(potgEvent); + } + //return; +} + +auto state PrepGameStart +{ + function Timer() + { + global.Timer(); + //return; + } +Begin: + + StartMatch(); + stop; +} + +state GameRunning +{ + function BeginState(name PreviousStateName) + { + local PlayerReplicationInfo PRI; + + // End:0x5E + if(PreviousStateName != 'RoundOver') + { + // End:0x51 + foreach DynamicActors(Class'Engine.PlayerReplicationInfo', PRI) + { + PRI.StartTime = 0; + } + bWaitingToStartMatch = false; + } + //return; + } + + function Timer() + { + global.Timer(); + //return; + } + stop; +} + +defaultproperties +{ + m_fSpawnProtectionTime=3.0000000 + m_fMaxRepawnTime=60.0000000 + m_bEnableHeadShots=true + s_nNextActorInstanceId=1 + s_nNextProjectileInstanceId=1 + s_fXPModifier=1.0000000 + m_fGlobalCooldownTime=1.0000000 + m_fOcclusionCalcPeriod=0.1000000 + m_fPlayOfTheGameLength=13.0000000 + m_fPlayOfTheGameIntroBufferLength=2.0000000 + m_fPlayOfTheGameOuttroBufferLength=2.0000000 + bRestartLevel=false + bDelayedStart=false + DefaultPawnClass=Class'TgGame.TgPawn_Character' + HUDType=Class'TgGame.TgHUD' + PlayerControllerClass=Class'TgGame.TgPlayerController' + PlayerReplicationInfoClass=Class'TgGame.TgRepInfo_Player' + GameReplicationInfoClass=Class'TgGame.TgRepInfo_Game' + OnlineGameSettingsClass=Class'TgGame.TgOnlineGameSettings' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameEngine.uc b/exported/TgGame/Classes/TgGameEngine.uc new file mode 100755 index 00000000..6ecb6647 --- /dev/null +++ b/exported/TgGame/Classes/TgGameEngine.uc @@ -0,0 +1,4 @@ +class TgGameEngine extends PComGameEngine + transient + native + config(Engine); diff --git a/exported/TgGame/Classes/TgGameTipManager.uc b/exported/TgGame/Classes/TgGameTipManager.uc new file mode 100755 index 00000000..bf39badd --- /dev/null +++ b/exported/TgGame/Classes/TgGameTipManager.uc @@ -0,0 +1,359 @@ +class TgGameTipManager extends Actor + native(Game) + config(GameTips) + notplaceable + hidecategories(Navigation); + +const GT_CapturePointObjective = 99; +const GT_Dismounted = 100; +const GT_CardsOnCooldown = 101; +const GT_LeveledUp = 102; +const GT_SiegeEnginePower = 103; +const GT_CapturingPoints = 104; +const GT_Abilities = 105; +const GT_CardTypes = 106; +const GT_Level6 = 107; +const GT_HealthNugget = 108; +const GT_ChampionOverview = 109; +const GT_PushObjectiveAttack = 110; +const GT_PushObjectiveDefend = 111; +const GT_PushObjectiveEnded = 112; +const GT_FriendlySiegeEngine = 113; +const GT_EnemySiegeEngine = 114; +const GT_AssaultGameMode = 115; +const GT_CaptureThePointGameMode = 116; +const GT_ProgressPayload = 117; +const GT_ContestPayloadAttackers = 118; +const GT_ContestPayloadDefenders = 119; +const GT_PayloadTipBackwards = 120; +const GT_CheckpiointsAttackers = 121; +const GT_CheckpointsDefenders = 122; +const GT_RespawnBeacon = 123; +const GT_SurvivalMatchStarted = 124; +const GT_SurvivalFogConverging = 125; +const GT_RoundEndSurvivalOrSiege = 126; +const GT_SiegeCapturePhase = 127; +const GT_SiegeCapturedPoint = 129; +const GT_SiegeLostPoint = 130; +const GT_RoundLostSurvivalOrSiege = 131; +const GT_SiegePointSpawned = 132; +const GT_DieToCassie = 133; +const GT_DieToEvie = 134; +const GT_DieToFernando = 135; +const GT_DieToGrover = 136; +const GT_DieToKinessa = 137; +const GT_DieToPip = 138; +const GT_DieToBarikTurret = 139; +const GT_DieToRuckus = 140; +const GT_DieToSkye = 141; +const GT_DieToAndroxusDefiance = 142; +const GT_DieToAndroxusReversal = 143; +const GT_DieToBombKingSticky = 144; +const GT_DieToBombKingGrumpy = 145; +const GT_DieToBuckNetShot = 146; +const GT_DieToDrogozSalvo = 147; +const GT_DieToDrogozFireSpit = 148; +const GT_DieToGrohkChainLightning = 149; +const GT_DieToGroverAxeThrow = 150; +const GT_DieToRuckusDualFire = 151; +const GT_DieToSkyePoisonBolts = 152; +const GT_DieToYingShatter = 153; +const GT_DieToYingIllusion = 154; +const GT_DieToViktorFragGrenade = 155; +const GT_DieToUltimate = 156; +const GT_PayloadCheckpoint1ReachedAttackers = 157; +const GT_PayloadCheckpoint1ReachedDefenders = 158; +const GT_DieToDeathFog = 159; +const GT_SiegeCapturingPoint = 160; +const GT_SiegeContestingPoint = 161; +const GT_SiegeContestingPayload = 162; +const GT_SiegePayloadBackingUp = 163; +const GT_Tutorial_AimUsingMouse = 164; +const GT_Tutorial_MoveForwardsBackwards = 165; +const GT_Tutorial_MoveLeftRight = 166; +const GT_Tutorial_SpaceToJump = 167; +const GT_Tutorial_MoveOnMount = 168; +const GT_Tutorial_DismountedOnDamage = 169; +const GT_Tutorial_ChampionsRegenerateHealth = 170; +const GT_Tutorial_LMBToFire = 171; +const GT_Tutorial_RToReload = 172; +const GT_Tutorial_QToFrag = 173; +const GT_Tutorial_FToHustle = 174; +const GT_Tutorial_RMBToIronSights = 175; +const GT_Tutorial_EToUlt = 176; +const GT_Tutorial_UToLoadout = 177; +const GT_Tutorial_SelectItemTab = 178; +const GT_Tutorial_OneCardPerCategory = 179; +const GT_Tutorial_UpgradeItems = 190; +const GT_Tutorial_ItemsLastMatch = 191; +const GT_Tutorial_ActiveObjectiveMarker = 192; +const GT_Tutorial_StandToCapture = 193; +const GT_Tutorial_SuccessfulCapture = 194; +const GT_Tutorial_ProgressPayload = 195; +const GT_Tutorial_EnemiesHaltPayload = 196; +const GT_DieToAnchor = 187; +const GT_DieToMakoa = 188; +const GT_DieToMalDamba = 189; +const GT_CounteringTorvald = 198; +const GT_AutoPurchaseItems = 199; +const GT_OnslaughtGameMode = 202; +const GTP_CapturePointObjective = 1801; +const GTP_Dismounted = 1800; +const GTP_CardsOnCooldown = 1802; +const GTP_LeveledUp = 1803; +const GTP_SiegeEnginePower = 1804; +const GTP_CapturingPoints = 1805; +const GTP_Abilities = 1806; +const GTP_CardTypes = 1807; +const GTP_Level6 = 1808; +const GTP_HealthNugget = 1809; +const GTP_ChampionOverview = 1824; +const GTP_PushObjectiveAttack = 1829; +const GTP_PushObjectiveDefend = 1830; +const GTP_PushObjectiveEnded = 1831; +const GTP_FriendlySiegeEngine = 1833; +const GTP_EnemySiegeEngine = 1834; +const GTP_AssaultGameMode = 1835; +const GTP_CaptureThePointGameMode = 1836; +const GTP_ProgressPayload = 1842; +const GTP_ContestPayloadAttackers = 1843; +const GTP_ContestPayloadDefenders = 1844; +const GTP_PayloadTipBackwards = 1845; +const GTP_CheckpiointsAttackers = 1846; +const GTP_CheckpointsDefenders = 1847; +const GTP_RespawnBeacon = 1849; +const GTP_SurvivalMatchStarted = 1850; +const GTP_SurvivalFogConverging = 1851; +const GTP_RoundEndSurvivalOrSiege = 1902; +const GTP_SiegeCapturePhase = 1903; +const GTP_SiegeCapturedPoint = 1906; +const GTP_SiegeLostPoint = 1907; +const GTP_RoundLostSurvivalOrSiege = 1908; +const GTP_SiegePointSpawned = 1909; +const GTP_DieToCassie = 1910; +const GTP_DieToEvie = 1911; +const GTP_DieToFernando = 1912; +const GTP_DieToGrover = 1913; +const GTP_DieToKinessa = 1914; +const GTP_DieToPip = 1915; +const GTP_DieToBarikTurret = 1916; +const GTP_DieToRuckus = 1917; +const GTP_DieToSkye = 1918; +const GTP_DieToAndroxusDefiance = 1919; +const GTP_DieToAndroxusReversal = 1920; +const GTP_DieToBombKingSticky = 1921; +const GTP_DieToBombKingGrumpy = 1922; +const GTP_DieToBuckNetShot = 1923; +const GTP_DieToDrogozSalvo = 1924; +const GTP_DieToDrogozFireSpit = 1925; +const GTP_DieToGrohkChainLightning = 1926; +const GTP_DieToGroverAxeThrow = 1927; +const GTP_DieToRuckusDualFire = 1928; +const GTP_DieToSkyePoisonBolts = 1929; +const GTP_DieToYingShatter = 1930; +const GTP_DieToYingIllusion = 1931; +const GTP_DieToViktorFragGrenade = 1932; +const GTP_DieToUltimate = 1933; +const GTP_PayloadCheckpoint1ReachedAttackers = 1934; +const GTP_PayloadCheckpoint1ReachedDefenders = 1935; +const GTP_DieToDeathFog = 1936; +const GTP_SiegeCapturingPoint = 1937; +const GTP_SiegeContestingPoint = 1938; +const GTP_SiegeContestingPayload = 1939; +const GTP_SiegePayloadBackingUp = 1940; +const GTP_Tutorial = 1953; +const GTP_DieToAnchor = 1956; +const GTP_DieToMakoa = 1957; +const GTP_DieToMalDamba = 1958; +const GTP_CounteringTorvald = 2018; +const GTP_AutoPurchaseItems = 2021; +const GTP_OnslaughtGameMode = 2026; +const TFT_ENEMY = 10133; +const TFT_FRIENDLY = 10132; +const LOW_PRIORITY_REMINDERS_SECS = 120.f; +const MIN_TIME_ON_TOP = 5.f; +const GTT_HUD = 10634; +const GTT_HUD_POPUP = 10742; +const GTT_WORLD_TIP = 15029; +const GTT_HUD_SPECIAL = 15101; +const GTT_HUD_POPUP_NO_TITLE = 15136; + +struct native TipSavedState +{ + var int nTipId; + var int nMatchVisibleCount; + var int nTotalVisibleCount; + var float fLastVisibleTime; + var bool nCompletedCount; + var bool bSuppressed; + + structdefaultproperties + { + nTipId=0 + nMatchVisibleCount=0 + nTotalVisibleCount=0 + fLastVisibleTime=0.0000000 + nCompletedCount=false + bSuppressed=false + } +}; + +struct native GameTipInfo +{ + var int nTipId; + var int nPriority; + var bool bSelfSuppress; + var float fDuration; + var float fRemainingTime; + var float fTimeOnTop; + var float fMinSecondsBetweenVisible; + var bool bRemoveOnTimer; + var bool bDismissed; + var bool bWaitForDismiss; + var bool bDisplayAlways; + var bool bPopupDisplay; + var SoundCue PopupSoundCue; + var TgHelpTipActor HelpTipActor; + var int PropertyId; + + structdefaultproperties + { + nTipId=0 + nPriority=0 + bSelfSuppress=false + fDuration=0.0000000 + fRemainingTime=0.0000000 + fTimeOnTop=0.0000000 + fMinSecondsBetweenVisible=0.0000000 + bRemoveOnTimer=false + bDismissed=false + bWaitForDismiss=false + bDisplayAlways=false + bPopupDisplay=false + PopupSoundCue=none + HelpTipActor=none + PropertyId=0 + } +}; + +var globalconfig array m_TipSavedState; +var array m_GameTipQueue; +var array m_GameTipWorldQueue; +var array m_GameTipSpecialQueue; +var bool m_bIsActive; +var export editinline TgAudioComponent m_AudioComponent; +var int m_nActiveTip; +var int m_nPlaySoundTip; + +// Export UTgGameTipManager::execIsSuppressed(FFrame&, void* const) +native function bool IsSuppressed(int nGameTipId); + +// Export UTgGameTipManager::execRequestHelpText(FFrame&, void* const) +native function bool RequestHelpText(int nGameTipId, optional bool bIsFriend = true, optional bool bWaitForDismiss = false, optional Vector SpawnLocation, optional out TgHelpTipActor OutHelpTipActor); + +// Export UTgGameTipManager::execDismissHelpText(FFrame&, void* const) +native function DismissHelpText(int nGameTipId, optional bool bDoNotSuppress); + +// Export UTgGameTipManager::execRemoveHelpText(FFrame&, void* const) +private native final function RemoveHelpText(int nGameTipId, bool bDoNotSuppress); + +// Export UTgGameTipManager::execSuppressHelpText(FFrame&, void* const) +native function SuppressHelpText(int nGameTipId); + +// Export UTgGameTipManager::execCompleteHelpText(FFrame&, void* const) +native function CompleteHelpText(int nGameTipId); + +// Export UTgGameTipManager::execUnsuppressAllGameTips(FFrame&, void* const) +native function UnsuppressAllGameTips(); + +// Export UTgGameTipManager::execSetActive(FFrame&, void* const) +native function SetActive(); + +// Export UTgGameTipManager::execClearSavedDataForNewRound(FFrame&, void* const) +native function ClearSavedDataForNewRound(); + +event SortGameTipQueue(int nGameTipType) +{ + switch(nGameTipType) + { + // End:0x3C + case 15029: + m_GameTipWorldQueue.Sort(GameTipQueueSort); + // End:0xA1 + break; + // End:0x65 + case 15101: + m_GameTipSpecialQueue.Sort(GameTipQueueSort); + // End:0xA1 + break; + // End:0x6D + case 10634: + // End:0x75 + case 10742: + // End:0x7D + case 15136: + // End:0xFFFF + default: + m_GameTipQueue.Sort(GameTipQueueSort); + // End:0xA1 + break; + break; + } + //return; +} + +function PostBeginPlay() +{ + super.PostBeginPlay(); + ClearSavedDataForNewRound(); + //return; +} + +function int GameTipQueueSort(GameTipInfo A, GameTipInfo B) +{ + // End:0x49 + if(A.bPopupDisplay && !B.bPopupDisplay) + { + return 1; + } + else + { + // End:0x96 + if(!A.bPopupDisplay && B.bPopupDisplay) + { + return -1; + } + else + { + // End:0xD8 + if(A.nPriority > B.nPriority) + { + return 1; + } + else + { + // End:0x11B + if(A.nPriority < B.nPriority) + { + return -1; + } + } + return 0; + } + } + //return ReturnValue; +} + +defaultproperties +{ + m_bIsActive=true + // Reference: TgAudioComponent'TgGame.Default__TgGameTipManager.TipAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TipAudioComponent' + begin object name="TipAudioComponent" class=TgGame.TgAudioComponent + bUseOwnerLocation=false + bAllowSpatialization=false + end object + m_AudioComponent=TipAudioComponent + Components[0]=TipAudioComponent +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Arena.uc b/exported/TgGame/Classes/TgGame_Arena.uc new file mode 100755 index 00000000..5c27697a --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Arena.uc @@ -0,0 +1,228 @@ +class TgGame_Arena extends TgGame_Battle + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +var float s_fLastDespawnTime[2]; +var float s_fDespawnNotificationDelay; +var int m_nKillValueHero; +var int m_nKillValueMinion; +var int m_nKillValueTower; +var int m_MinScoreToTrackMinionKills; +var int m_nSpawnWaveTime; +var int m_nSpawnWaveDominatingTime; +var int m_nMaxDominatingPoints; +var transient bool m_bIsCrowdOnFeet; + +// Export UTgGame_Arena::execScoreKillGameType(FFrame&, void* const) +native function ScoreKillGameType(out ScoreKillData Data); + +// Export UTgGame_Arena::execMarkAsReady(FFrame&, void* const) +native function MarkAsReady(Player P); + +// Export UTgGame_Arena::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +// Export UTgGame_Arena::execEndGameBySurrender(FFrame&, void* const) +native function EndGameBySurrender(int SurrenderingTaskForce); + +// Export UTgGame_Arena::execBeginEndMission(FFrame&, void* const) +native function bool BeginEndMission(optional bool bClearNextMapGame = false, optional Actor EndMissionFocus, optional float fDelayOverride = 0.0000000); + +// Export UTgGame_Arena::execApplyTowerImmunity(FFrame&, void* const) +native function ApplyTowerImmunity(); + +// Export UTgGame_Arena::execSendDespawnAlert(FFrame&, void* const) +native function SendDespawnAlert(TgRepInfo_TaskForce tfri); + +function float GetSetupTime() +{ + return 45.0000000; + //return ReturnValue; +} + +function bool StartGameTimer() +{ + m_fGameMissionTime = 14400.0000000; + SetTimer(float(m_nSpawnWaveTime), false, 'SpawnWaveTeam1Timer'); + SetTimer(float(m_nSpawnWaveTime), false, 'SpawnWaveTeam2Timer'); + SetTimer(1.0000000, false, 'ApplyTowerImmunity'); + return super.StartGameTimer(); + //return ReturnValue; +} + +function OnMinionDespawn(int Taskforce) +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce tf; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x2B7 + if(GRI != none) + { + tf = GRI.GetTaskForce(((Taskforce == 2) ? 1 : 2)); + // End:0x2B7 + if(tf != none) + { + tf.r_nScore -= m_nKillValueMinion; + tf.r_nScorePercent = int((float(tf.r_nScore) / float(WorldInfo.Game.GoalScore)) * float(100)); + tf.bNetDirty = true; + // End:0x1A5 + if(tf.r_nScore < 0) + { + tf.r_nScore = 0; + tf.r_nScorePercent = 0; + } + // End:0x1ED + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + tf.ReceivedScoringChanges(); + } + // End:0x2AD + if(WorldInfo.TimeSeconds > (s_fLastDespawnTime[int(tf.r_nTaskForce) - int(1)] + s_fDespawnNotificationDelay)) + { + SendDespawnAlert(tf); + s_fLastDespawnTime[int(tf.r_nTaskForce) - int(1)] = WorldInfo.TimeSeconds; + } + CheckGameState(); + } + } + //return; +} + +event CheckGameState() +{ + local TgRepInfo_Game GRI; + local TgPlayerController PC; + local TgRepInfo_TaskForce TF1, TF2; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x43 + if((GRI == none) || int(m_GameWinState) != int(0)) + { + return; + } + TF1 = GRI.GetTaskForce(1); + TF2 = GRI.GetTaskForce(2); + // End:0x12F + if(TF1.r_nScore <= 0) + { + m_GameWinState = 1; + GRI.r_Winner = GRI.GetTaskForce(2); + GRI.bNetDirty = true; + } + else + { + // End:0x1C0 + if(TF2.r_nScore <= 0) + { + m_GameWinState = 2; + GRI.r_Winner = GRI.GetTaskForce(1); + GRI.bNetDirty = true; + } + } + // End:0x23F + if(int(m_GameWinState) != int(0)) + { + // End:0x231 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', PC) + { + PC.SendClientSetGameWinState(m_GameWinState); + } + BeginEndMission(); + } + //return; +} + +event Actor GetEndFocusActor() +{ + return ((int(m_GameWinState) == int(1)) ? TgMapInfo(WorldInfo.GetMapInfo()).m_EndFocusActor_TF2 : TgMapInfo(WorldInfo.GetMapInfo()).m_EndFocusActor_TF1); + //return ReturnValue; +} + +function SpawnWaveTeam1Timer() +{ + SetTimer(float(m_nSpawnWaveTime) + ((GetTaskForceDominatingFactor(1)) * float(m_nSpawnWaveDominatingTime)), false, 'SpawnWaveTeam1Timer'); + //return; +} + +function SpawnWaveTeam2Timer() +{ + SetTimer(float(m_nSpawnWaveTime) + ((GetTaskForceDominatingFactor(2)) * float(m_nSpawnWaveDominatingTime)), false, 'SpawnWaveTeam2Timer'); + //return; +} + +function float GetTaskForceDominatingFactor(int TaskForceNum) +{ + local float fFactor; + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce TF1, TF2; + local TgPlayerController TgPC; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x31 + if(GRI == none) + { + return 0.0000000; + } + TF1 = GRI.GetTaskForce(1); + TF2 = GRI.GetTaskForce(2); + // End:0xAE + if((TF1 == none) || TF2 == none) + { + return 0.0000000; + } + // End:0x16E + if(((TF1.r_nScore < 50) || TF2.r_nScore < 50) && !m_bIsCrowdOnFeet) + { + // End:0x161 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ArenaCrowdEvent(0); + } + m_bIsCrowdOnFeet = true; + } + // End:0x1D8 + if(TaskForceNum == 2) + { + fFactor = float(TF2.r_nScore - TF1.r_nScore) / float(m_nMaxDominatingPoints); + } + else + { + fFactor = float(TF1.r_nScore - TF2.r_nScore) / float(m_nMaxDominatingPoints); + } + // End:0x246 + if(fFactor < float(0)) + { + return 0.0000000; + } + // End:0x25D + if(fFactor > float(1)) + { + return 1.0000000; + } + return fFactor; + //return ReturnValue; +} + +defaultproperties +{ + s_fDespawnNotificationDelay=10.0000000 + m_nKillValueHero=5 + m_nKillValueMinion=1 + m_nKillValueTower=15 + m_MinScoreToTrackMinionKills=10 + m_nSpawnWaveTime=20 + m_nSpawnWaveDominatingTime=40 + m_nMaxDominatingPoints=150 + m_bRespawnInhibitors=false + m_bEnableCrowdEvents=true + m_fCreditsToGivePerTick=10.0000000 + m_nStartingLevel=3 + m_MinionKillerBonus=0.2500000 + m_fFirstBloodGoldReward=100.0000000 + m_fBasePlayerAssistXpRewardMultipler=1.0000000 + m_fBaseNPCAssistXpRewardMultipler=2.0000000 + m_GameType=TG_GAME_TYPE.TGT_ARENA + GoalScore=500 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Arena_Capture.uc b/exported/TgGame/Classes/TgGame_Arena_Capture.uc new file mode 100755 index 00000000..3f5ee665 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Arena_Capture.uc @@ -0,0 +1,151 @@ +class TgGame_Arena_Capture extends TgGame_Arena + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +var int s_nCaptureHostilePointXP; +var int s_nCaptureHostilePointGold; +var int s_nReclaimPointXP; +var int s_nReclaimPointGold; +var int m_nCurrentActiveCapturePointIndex; +var float m_fNewPointTime; + +event PostBeginPlay() +{ + local TgCapturePoint Point; + + super(TgGame_Mission).PostBeginPlay(); + // End:0x5A + foreach DynamicActors(Class'TgGame.TgCapturePoint', Point) + { + Point.r_RepInfo.r_bIsLocked = true; + } + //return; +} + +event ChangeTimerState(TgObject.GameTimerState eTimerState) +{ + super(TgGame_Battle).ChangeTimerState(eTimerState); + UpdateLockedPointStatus(); + // End:0x31 + if(int(eTimerState) == int(3)) + { + } + //return; +} + +// Export UTgGame_Arena_Capture::execCapturedPoint(FFrame&, void* const) +native function CapturedPoint(TgPawn_Character PC); + +// Export UTgGame_Arena_Capture::execCapturePointReclaimed(FFrame&, void* const) +native function CapturePointReclaimed(TgPawn_Character PC); + +function SpawnNeutralBots() +{ + local TgRepInfo_Game GRI; + local int NewPointIndex, I; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x1EF + if(GRI != none) + { + NewPointIndex = Rand(GRI.m_CPRIArray.Length); + // End:0xB0 + if(NewPointIndex == m_nCurrentActiveCapturePointIndex) + { + NewPointIndex++; + // End:0xB0 + if(NewPointIndex >= GRI.m_CPRIArray.Length) + { + NewPointIndex = 0; + } + } + I = 0; + J0xBB: + + // End:0x189 [Loop If] + if(I < GRI.m_CPRIArray.Length) + { + GRI.m_CPRIArray[I].r_bIsLocked = NewPointIndex != I; + GRI.m_CPRIArray[I].bNetDirty = true; + I++; + // [Loop Continue] + goto J0xBB; + } + GRI.m_CPRIArray[NewPointIndex].r_OwningCapturePoint.SpawnNeutralBot(); + m_nCurrentActiveCapturePointIndex = NewPointIndex; + } + //return; +} + +function OnPointCaptureOwnershipChanged(TgCapturePoint Point, int NewTaskForceOwner, int PreviousTaskForceOwner) +{ + local TgRepInfo_Game GRI; + local int I; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x1E4 + if(GRI != none) + { + // End:0x1E4 + if((NewTaskForceOwner == 1) || NewTaskForceOwner == 2) + { + // End:0x1E1 + if((PreviousTaskForceOwner == 1) || PreviousTaskForceOwner == 2) + { + Point.r_RepInfo.r_nControlledByTaskForce = 0; + Point.r_RepInfo.r_fOwnershipPct = 0.5000000; + Point.OnPointCaptureOwnershipChanged(0, PreviousTaskForceOwner); + SetTimer(m_fNewPointTime, false, 'SpawnNeutralBots'); + I = 0; + J0x126: + + // End:0x1E1 [Loop If] + if(I < GRI.m_CPRIArray.Length) + { + GRI.m_CPRIArray[I].r_bIsLocked = true; + GRI.m_CPRIArray[I].bNetDirty = true; + I++; + // [Loop Continue] + goto J0x126; + } + } + } + } + //return; +} + +function UpdateLockedPointStatus() +{ + local TgRepInfo_Game GRI; + local int I; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xED + if(GRI != none) + { + I = 0; + J0x36: + + // End:0xED [Loop If] + if(I < GRI.m_CPRIArray.Length) + { + // End:0xDF + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + GRI.m_CPRIArray[I].r_OwningCapturePoint.UpdateLockEffects(); + } + I++; + // [Loop Continue] + goto J0x36; + } + } + //return; +} + +defaultproperties +{ + m_nCurrentActiveCapturePointIndex=-1 + m_fNewPointTime=5.0000000 + m_GameType=TG_GAME_TYPE.TGT_ARENA_CAPTURE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Arena_Escort.uc b/exported/TgGame/Classes/TgGame_Arena_Escort.uc new file mode 100755 index 00000000..1b6d008b --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Arena_Escort.uc @@ -0,0 +1,87 @@ +class TgGame_Arena_Escort extends TgGame_Arena + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +var int m_nSpawnEscortTime; +var int m_nEscortSuccessValue; +var TgSeqEvent_SpawnWise s_pEvt[2]; +var TgSeqEvent_Escort_Despawn_Success s_pDespawnEvt[2]; + +// Export UTgGame_Arena_Escort::execSendEscortSpawnAlert(FFrame&, void* const) +native function SendEscortSpawnAlert(TgRepInfo_TaskForce tfri); + +function OnEscortDespawn(int Taskforce) +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce tf; + local TgSeqEvent_Escort_Despawn_Success SeqEvent; + local int Idx, DefenderTF; + local array ActivateIndices; + local array KismetEvents; + + DefenderTF = ((Taskforce == 2) ? 1 : 2); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x387 + if(GRI != none) + { + tf = GRI.GetTaskForce(DefenderTF); + // End:0x387 + if(tf != none) + { + tf.r_nScore -= m_nEscortSuccessValue; + tf.r_nScorePercent = int((float(tf.r_nScore) / float(WorldInfo.Game.GoalScore)) * float(100)); + tf.bNetDirty = true; + // End:0x1B8 + if(tf.r_nScore < 0) + { + tf.r_nScore = 0; + tf.r_nScorePercent = 0; + } + // End:0x37D + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + tf.ReceivedScoringChanges(); + // End:0x31B + if(s_pDespawnEvt[DefenderTF - 1] == none) + { + WorldInfo.GetGameSequence().FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_Escort_Despawn_Success', true, KismetEvents); + Idx = 0; + J0x26F: + + // End:0x31B [Loop If] + if(Idx < KismetEvents.Length) + { + SeqEvent = TgSeqEvent_Escort_Despawn_Success(KismetEvents[Idx]); + // End:0x30D + if((SeqEvent != none) && SeqEvent.DefendersTaskForce == DefenderTF) + { + s_pDespawnEvt[DefenderTF - 1] = SeqEvent; + // [Explicit Break] + goto J0x31B; + } + Idx++; + // [Loop Continue] + goto J0x26F; + } + } + J0x31B: + + // End:0x37D + if(s_pDespawnEvt[DefenderTF - 1] == none) + { + ActivateIndices[0] = 0; + s_pDespawnEvt[DefenderTF - 1].CheckActivate(self, self, false, ActivateIndices); + } + } + CheckGameState(); + } + } + //return; +} + +defaultproperties +{ + m_nEscortSuccessValue=14 + m_GameType=TG_GAME_TYPE.TGT_ARENA_ESCORT +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Arena_Escort_Practice.uc b/exported/TgGame/Classes/TgGame_Arena_Escort_Practice.uc new file mode 100755 index 00000000..2ccd76c9 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Arena_Escort_Practice.uc @@ -0,0 +1,34 @@ +class TgGame_Arena_Escort_Practice extends TgGame_Arena_Escort + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +event ChangeTimerState(TgObject.GameTimerState eTimerState) +{ + local TgObject.GameTimerState OldState; + + OldState = m_eTimerState; + super(TgGame_Battle).ChangeTimerState(eTimerState); + // End:0x81 + if(((int(eTimerState) != int(OldState)) && int(eTimerState) == int(1)) && int(OldState) != int(6)) + { + CheckMercenaries(); + SpawnBots(); + } + //return; +} + +function SpawnBots() +{ + // End:0x2B + if(SpawnDefaultBotPlayers(m_MercsToSpawn, false)) + { + s_nReadyMercs = m_MercsToSpawn.Length; + } + //return; +} + +defaultproperties +{ + m_GameType=TG_GAME_TYPE.TGT_ARENA_ESCORT_PRACTICE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Arena_Practice.uc b/exported/TgGame/Classes/TgGame_Arena_Practice.uc new file mode 100755 index 00000000..4fab73f3 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Arena_Practice.uc @@ -0,0 +1,34 @@ +class TgGame_Arena_Practice extends TgGame_Arena + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +event ChangeTimerState(TgObject.GameTimerState eTimerState) +{ + local TgObject.GameTimerState OldState; + + OldState = m_eTimerState; + super(TgGame_Battle).ChangeTimerState(eTimerState); + // End:0x81 + if(((int(eTimerState) != int(OldState)) && int(eTimerState) == int(1)) && int(OldState) != int(6)) + { + CheckMercenaries(); + SpawnBots(); + } + //return; +} + +function SpawnBots() +{ + // End:0x2B + if(SpawnDefaultBotPlayers(m_MercsToSpawn, false)) + { + s_nReadyMercs = m_MercsToSpawn.Length; + } + //return; +} + +defaultproperties +{ + m_GameType=TG_GAME_TYPE.TGT_ARENA_PRACTICE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Battle.uc b/exported/TgGame/Classes/TgGame_Battle.uc new file mode 100755 index 00000000..1e0aa195 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Battle.uc @@ -0,0 +1,228 @@ +class TgGame_Battle extends TgGame_Mission + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +const MAX_GENERAL_PHYSICAL_STAT = 180.0f; +const MAX_GENERAL_MAGICAL_STAT = 540.0f; +const MAX_GENERAL_DEFENSE_STAT = 228.0f; +const MAX_GENERAL_UTILITY_STAT = 318.0f; + +var float m_MultiLaneXpBonus; +var bool m_bRespawnInhibitors; +var bool m_bEnableCrowdEvents; +var bool m_bRestrictStoreInteractions; +var bool m_bWinGameOnNexusDestroyed; +var int m_nBumbasMaskId; +var int m_nSupportStarterId; +var array m_MercsToSpawn; +var int m_nPIESpawnTable; +var int m_nTargetPlayerCountForMercs; + +// Export UTgGame_Battle::execUpdateGameWinState(FFrame&, void* const) +native function UpdateGameWinState(TgPawn nexus); + +// Export UTgGame_Battle::execSendBonusMinionAlerts(FFrame&, void* const) +native function SendBonusMinionAlerts(TgRepInfo_TaskForce tf, int nLane); + +// Export UTgGame_Battle::execSendGameStartAlert(FFrame&, void* const) +native function SendGameStartAlert(); + +// Export UTgGame_Battle::execStructureDied(FFrame&, void* const) +native function StructureDied(TgPawn_Structure theStructure); + +// Export UTgGame_Battle::execPlayerDied(FFrame&, void* const) +native function PlayerDied(TgPlayerController PC); + +// Export UTgGame_Battle::execBotDied(FFrame&, void* const) +native function BotDied(TgAIController aic); + +// Export UTgGame_Battle::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +// Export UTgGame_Battle::execApplyTowerImmunity(FFrame&, void* const) +native function ApplyTowerImmunity(); + +// Export UTgGame_Battle::execGetNextVulnerableTowerId(FFrame&, void* const) +native function int GetNextVulnerableTowerId(int nBotId); + +// Export UTgGame_Battle::execCheckTeamAce(FFrame&, void* const) +native function CheckTeamAce(Controller Killer, Controller Killed); + +// Export UTgGame_Battle::execSetInhibitorRespawn(FFrame&, void* const) +native function SetInhibitorRespawn(bool bRespawn); + +// Export UTgGame_Battle::execShouldSpawnSuperMinions(FFrame&, void* const) +native function bool ShouldSpawnSuperMinions(TgBotFactory_Minions minionFactory); + +// Export UTgGame_Battle::execCheckMercenaries(FFrame&, void* const) +native function CheckMercenaries(); + +// Export UTgGame_Battle::execForceLoadMercenaries(FFrame&, void* const) +native function ForceLoadMercenaries(int SpawnTableID); + +// Export UTgGame_Battle::execScoreKillGameType(FFrame&, void* const) +native function ScoreKillGameType(out ScoreKillData Data); + +// Export UTgGame_Battle::execSendLanePusherSpawnAlert(FFrame&, void* const) +native function SendLanePusherSpawnAlert(int Taskforce); + +// Export UTgGame_Battle::execCalcWeakestLane(FFrame&, void* const) +native function int CalcWeakestLane(TgRepInfo_TaskForce tf); + +event NexusWasDestroyed(TgPawn nexus) +{ + UpdateGameWinState(nexus); + BeginEndMission(); + //return; +} + +event OnBossMonsterKilled(TgPawn BossMonster, TgPawn KillerPawn) +{ + //return; +} + +event TriggerBonusMinions(TgRepInfo_TaskForce tf, int nLane) +{ + //return; +} + +function bool StartGameTimer() +{ + // End:0x36 + if(super.StartGameTimer()) + { + SetTimer(1.0000000, false, 'ApplyTowerImmunity'); + SetInhibitorRespawn(m_bRespawnInhibitors); + return true; + } + return false; + //return ReturnValue; +} + +event ChangeTimerState(TgObject.GameTimerState eTimerState) +{ + local TgObject.GameTimerState OldState; + local TgPlayerController TgPC; + + OldState = m_eTimerState; + super.ChangeTimerState(eTimerState); + // End:0xDB + if(((int(eTimerState) != int(OldState)) && int(eTimerState) == int(3)) && int(OldState) != int(6)) + { + SendGameStartAlert(); + // End:0xDB + if(m_bEnableCrowdEvents) + { + // End:0xDA + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ArenaCrowdEvent(3); + } + } + } + //return; +} + +function CreateMinimapManagers(Class managerClass) +{ + local TgRepInfo_TaskForce tfri; + local TgRepInfo_Game GRI; + + super.CreateMinimapManagers(managerClass); + GRI = TgRepInfo_Game(GameReplicationInfo); + tfri = GRI.GetTaskForce(3); + tfri.CreateMinimap(2, managerClass); + // End:0xDF + if(tfri.s_MinimapManager != none) + { + tfri.s_MinimapManager.m_bSkipWorldGeometryLOS = true; + } + //return; +} + +event int GetPlayerCount() +{ + local TgPlayerController TgPC; + local int PlayerCount; + + PlayerCount = 0; + // End:0x70 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + // End:0x6F + if(!TgPC.IsA('TgSpectatorController')) + { + ++PlayerCount; + } + } + return PlayerCount; + //return ReturnValue; +} + +function SpawnBots() +{ + SpawnDefaultBotPlayers(m_MercsToSpawn, false); + //return; +} + +simulated event SendLanePusherUpdateAlert(bool isAlive, int tf) +{ + local int I; + local array KismetEvents; + local TgSeqEvent_UpdateLanePusherCount SeqEvent; + local array ActivateIndices; + + // End:0x149 + if(int(Role) == int(ROLE_Authority)) + { + WorldInfo.GetGameSequence().FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_UpdateLanePusherCount', true, KismetEvents); + I = 0; + J0x67: + + // End:0x149 [Loop If] + if(I < KismetEvents.Length) + { + SeqEvent = TgSeqEvent_UpdateLanePusherCount(KismetEvents[I]); + // End:0x13B + if((SeqEvent != none) && SeqEvent.Taskforce == tf) + { + // End:0xFF + if(isAlive) + { + ActivateIndices[0] = 1; + } + else + { + ActivateIndices[0] = 0; + } + SeqEvent.CheckActivate(self, self, false, ActivateIndices); + // [Explicit Break] + goto J0x149; + } + I++; + // [Loop Continue] + goto J0x67; + } + } + J0x149: + + //return; +} + +defaultproperties +{ + m_MultiLaneXpBonus=0.5000000 + m_bRespawnInhibitors=true + m_nBumbasMaskId=8987 + m_nSupportStarterId=9089 + m_nStartingCurrency=1500 + m_nWinPlayerXp=20 + m_nLosePlayerXp=20 + m_fGodXpCoefficient=0.2000000 + m_fGodXpCoefficientLoss=0.2000000 + m_fGodXpWinBonus=4.0000000 + m_fBaseTokens=1.5000000 + m_GameType=TG_GAME_TYPE.TGT_BATTLE + m_bStatsIsSymmetric=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Battle_Aram.uc b/exported/TgGame/Classes/TgGame_Battle_Aram.uc new file mode 100755 index 00000000..97e073de --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Battle_Aram.uc @@ -0,0 +1,18 @@ +class TgGame_Battle_Aram extends TgGame_Battle_Conquest + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +// Export UTgGame_Battle_Aram::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +defaultproperties +{ + m_bRestrictStoreInteractions=true + m_nStartingCurrency=3000 + m_nStartingLevel=5 + m_fGodXpCoefficient=0.2000000 + m_fGodXpCoefficientLoss=0.2000000 + m_fGodXpWinBonus=4.0000000 + m_GameType=TG_GAME_TYPE.TGT_BATTLE_ARAM +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Battle_Aram_Practice.uc b/exported/TgGame/Classes/TgGame_Battle_Aram_Practice.uc new file mode 100755 index 00000000..a8d492d8 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Battle_Aram_Practice.uc @@ -0,0 +1,24 @@ +class TgGame_Battle_Aram_Practice extends TgGame_Battle_Aram + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +event ChangeTimerState(TgObject.GameTimerState eTimerState) +{ + local TgObject.GameTimerState OldState; + + OldState = m_eTimerState; + super(TgGame_Battle).ChangeTimerState(eTimerState); + // End:0x81 + if(((int(eTimerState) != int(OldState)) && int(eTimerState) == int(1)) && int(OldState) != int(6)) + { + CheckMercenaries(); + SpawnBots(); + } + //return; +} + +defaultproperties +{ + m_GameType=TG_GAME_TYPE.TGT_BATTLE_ARAM_PRACTICE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Battle_Casual.uc b/exported/TgGame/Classes/TgGame_Battle_Casual.uc new file mode 100755 index 00000000..5b6ae88d --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Battle_Casual.uc @@ -0,0 +1,22 @@ +class TgGame_Battle_Casual extends TgGame_Battle + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +// Export UTgGame_Battle_Casual::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +// Export UTgGame_Battle_Casual::execShouldSpawnSuperMinions(FFrame&, void* const) +native function bool ShouldSpawnSuperMinions(TgBotFactory_Minions minionFactory); + +// Export UTgGame_Battle_Casual::execStructureDied(FFrame&, void* const) +native function StructureDied(TgPawn_Structure theStructure); + +defaultproperties +{ + m_bRespawnInhibitors=false + m_nStartingCurrency=3000 + m_MinionKillerBonus=0.0000000 + m_BasePlayerGoldReward=45.0000000 + m_GameType=TG_GAME_TYPE.TGT_BATTLE_CASUAL +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Battle_Conquest.uc b/exported/TgGame/Classes/TgGame_Battle_Conquest.uc new file mode 100755 index 00000000..6d52211b --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Battle_Conquest.uc @@ -0,0 +1,12 @@ +class TgGame_Battle_Conquest extends TgGame_Battle + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + m_fGodXpCoefficient=0.2500000 + m_fGodXpCoefficientLoss=0.2500000 + m_fGodXpWinBonus=5.0000000 + m_BasePlayerGoldReward=150.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Battle_Conquest_Erez.uc b/exported/TgGame/Classes/TgGame_Battle_Conquest_Erez.uc new file mode 100755 index 00000000..c25e3d6e --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Battle_Conquest_Erez.uc @@ -0,0 +1,94 @@ +class TgGame_Battle_Conquest_Erez extends TgGame_Battle_Conquest + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +const LANE_PUSHER_BOT_ID = 2004; + +var int m_nSpawnSiegeWeaponThreshold; + +// Export UTgGame_Battle_Conquest_Erez::execGetNextVulnerableTowerId(FFrame&, void* const) +native function int GetNextVulnerableTowerId(int nBotId); + +// Export UTgGame_Battle_Conquest_Erez::execScoreKillGameType(FFrame&, void* const) +native function ScoreKillGameType(out ScoreKillData Data); + +// Export UTgGame_Battle_Conquest_Erez::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +event PostBeginPlay() +{ + local int I; + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce tf; + + super(TgGame_Mission).PostBeginPlay(); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xC0 + if(GRI != none) + { + I = 1; + J0x40: + + // End:0xC0 [Loop If] + if(I <= 2) + { + tf = GRI.GetTaskForce(I); + // End:0xB2 + if(tf != none) + { + tf.r_nScorePercent = 0; + } + I++; + // [Loop Continue] + goto J0x40; + } + } + //return; +} + +event TriggerLanePusher(TgRepInfo_TaskForce tf, int nLane) +{ + local TgBotFactory_Minions Factory; + local int I; + + // End:0x17E + if(tf != none) + { + I = 0; + J0x1A: + + // End:0x17E [Loop If] + if(I < tf.GetMinionFactoryCount()) + { + Factory = tf.GetMinionFactory(I); + // End:0x170 + if(Factory.nLane == nLane) + { + // End:0xF6 + if(int(tf.r_nTaskForce) == int(1)) + { + Factory.SpawnBotId(2004, 0); + } + else + { + Factory.SpawnBotId(2004, 0); + } + SendLanePusherSpawnAlert(int(tf.r_nTaskForce)); + SendLanePusherUpdateAlert(true, int(tf.r_nTaskForce)); + } + ++I; + // [Loop Continue] + goto J0x1A; + } + } + //return; +} + +defaultproperties +{ + m_nSpawnSiegeWeaponThreshold=100 + m_MultiLaneXpBonus=0.0000000 + m_nStartingCurrency=2000 + m_nStartingLevel=3 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Battle_Conquest_Practice.uc b/exported/TgGame/Classes/TgGame_Battle_Conquest_Practice.uc new file mode 100755 index 00000000..855f2a02 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Battle_Conquest_Practice.uc @@ -0,0 +1,24 @@ +class TgGame_Battle_Conquest_Practice extends TgGame_Battle_Conquest + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +event ChangeTimerState(TgObject.GameTimerState eTimerState) +{ + local TgObject.GameTimerState OldState; + + OldState = m_eTimerState; + super(TgGame_Battle).ChangeTimerState(eTimerState); + // End:0x81 + if(((int(eTimerState) != int(OldState)) && int(eTimerState) == int(1)) && int(OldState) != int(6)) + { + CheckMercenaries(); + SpawnBots(); + } + //return; +} + +defaultproperties +{ + m_GameType=TG_GAME_TYPE.TGT_BATTLE_PRACTICE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Battle_Conquest_Tc.uc b/exported/TgGame/Classes/TgGame_Battle_Conquest_Tc.uc new file mode 100755 index 00000000..39aa9929 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Battle_Conquest_Tc.uc @@ -0,0 +1,12 @@ +class TgGame_Battle_Conquest_Tc extends TgGame_Battle_Conquest + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +// Export UTgGame_Battle_Conquest_Tc::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +defaultproperties +{ + m_GameType=TG_GAME_TYPE.TGT_BATTLE_TC +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Battle_Expert.uc b/exported/TgGame/Classes/TgGame_Battle_Expert.uc new file mode 100755 index 00000000..3f63cb8c --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Battle_Expert.uc @@ -0,0 +1,38 @@ +class TgGame_Battle_Expert extends TgGame_Battle + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +event TriggerBonusMinions(TgRepInfo_TaskForce tf, int nLane) +{ + local TgBotFactory_Minions Factory; + local int I; + + // End:0x10C + if(tf != none) + { + I = 0; + J0x1A: + + // End:0xF0 [Loop If] + if(I < tf.GetMinionFactoryCount()) + { + Factory = tf.GetMinionFactory(I); + // End:0xE2 + if(Factory.nLane == nLane) + { + Factory.m_fLastBonusActivationTime = WorldInfo.TimeSeconds; + } + ++I; + // [Loop Continue] + goto J0x1A; + } + SendBonusMinionAlerts(tf, nLane); + } + //return; +} + +defaultproperties +{ + m_GameType=TG_GAME_TYPE.TGT_BATTLE_EXPERT +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Battle_Joust.uc b/exported/TgGame/Classes/TgGame_Battle_Joust.uc new file mode 100755 index 00000000..56f45f56 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Battle_Joust.uc @@ -0,0 +1,34 @@ +class TgGame_Battle_Joust extends TgGame_Battle + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +const AUTO_FORFEIT_TIME_SEC = 120.0f; + +// Export UTgGame_Battle_Joust::execGetNextVulnerableTowerId(FFrame&, void* const) +native function int GetNextVulnerableTowerId(int nBotId); + +// Export UTgGame_Battle_Joust::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +// Export UTgGame_Battle_Joust::execMarkAsReady(FFrame&, void* const) +native function MarkAsReady(Player P); + +// Export UTgGame_Battle_Joust::execCheckTeamAce(FFrame&, void* const) +native function CheckTeamAce(Controller Killer, Controller Killed); + +// Export UTgGame_Battle_Joust::execAutoForfeit(FFrame&, void* const) +native function AutoForfeit(); + +function float GetSetupTime() +{ + return 45.0000000; + //return ReturnValue; +} + +defaultproperties +{ + m_bEnableCrowdEvents=true + m_nStartingLevel=3 + m_GameType=TG_GAME_TYPE.TGT_BATTLE_JOUST +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Battle_Joust_3v3.uc b/exported/TgGame/Classes/TgGame_Battle_Joust_3v3.uc new file mode 100755 index 00000000..2cdcbd3f --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Battle_Joust_3v3.uc @@ -0,0 +1,13 @@ +class TgGame_Battle_Joust_3v3 extends TgGame_Battle + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +// Export UTgGame_Battle_Joust_3v3::execGetNextVulnerableTowerId(FFrame&, void* const) +native function int GetNextVulnerableTowerId(int nBotId); + +defaultproperties +{ + m_nStartingLevel=3 + m_GameType=TG_GAME_TYPE.TGT_BATTLE_JOUST +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Battle_Practice.uc b/exported/TgGame/Classes/TgGame_Battle_Practice.uc new file mode 100755 index 00000000..f9fc6ce0 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Battle_Practice.uc @@ -0,0 +1,43 @@ +class TgGame_Battle_Practice extends TgGame_Battle + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +// Export UTgGame_Battle_Practice::execGetNextVulnerableTowerId(FFrame&, void* const) +native function int GetNextVulnerableTowerId(int nBotId); + +// Export UTgGame_Battle_Practice::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +// Export UTgGame_Battle_Practice::execMarkAsReady(FFrame&, void* const) +native function MarkAsReady(Player P); + +// Export UTgGame_Battle_Practice::execCheckTeamAce(FFrame&, void* const) +native function CheckTeamAce(Controller Killer, Controller Killed); + +function float GetSetupTime() +{ + return 45.0000000; + //return ReturnValue; +} + +event ChangeTimerState(TgObject.GameTimerState eTimerState) +{ + local TgObject.GameTimerState OldState; + + OldState = m_eTimerState; + super.ChangeTimerState(eTimerState); + // End:0x81 + if(((int(eTimerState) != int(OldState)) && int(eTimerState) == int(1)) && int(OldState) != int(6)) + { + CheckMercenaries(); + SpawnBots(); + } + //return; +} + +defaultproperties +{ + m_nStartingLevel=3 + m_GameType=TG_GAME_TYPE.TGT_BATTLE_PRACTICE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Battle_Training.uc b/exported/TgGame/Classes/TgGame_Battle_Training.uc new file mode 100755 index 00000000..8172019e --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Battle_Training.uc @@ -0,0 +1,36 @@ +class TgGame_Battle_Training extends TgGame_Battle_Practice + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +var bool m_bNewTutorial; +var array m_StartingItems; +var int m_StartingSkills[4]; +var array m_RecommendedItems; + +// Export UTgGame_Battle_Training::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +// Export UTgGame_Battle_Training::execSpawnPlayerCharacter(FFrame&, void* const) +native function TgPawn SpawnPlayerCharacter(Controller C, Vector vLocation); + +function float GetSetupTime() +{ + return 10.0000000; + //return ReturnValue; +} + +function SpawnBots() +{ + //return; +} + +defaultproperties +{ + m_bNewTutorial=true + m_RecommendedItems[0]=7573 + m_bAllowAutoUpgrades=false + m_nStartingLevel=1 + m_GameType=TG_GAME_TYPE.TGT_BATTLE_TRAINING + m_fMaxRepawnTime=10.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_CTF.uc b/exported/TgGame/Classes/TgGame_CTF.uc new file mode 100755 index 00000000..7743cdde --- /dev/null +++ b/exported/TgGame/Classes/TgGame_CTF.uc @@ -0,0 +1,234 @@ +class TgGame_CTF extends TgGame_Mission + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +var transient TgCTFFlagBase m_FlagBases[2]; +var float m_fRoundTime; +var float m_fRoundSetupTime; +var float m_fEndOfRoundTime; +var transient int m_nCurrentRound; +var int m_nNumRounds; +var int m_nSpawnWaveTime; + +// Export UTgGame_CTF::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +// Export UTgGame_CTF::execScoreKillGameType(FFrame&, void* const) +native function ScoreKillGameType(out ScoreKillData Data); + +function float GetSetupTime() +{ + return m_fRoundSetupTime; + //return ReturnValue; +} + +function bool StartGameTimer() +{ + m_fGameMissionTime = m_fRoundTime; + return super.StartGameTimer(); + //return ReturnValue; +} + +event ChangeTimerState(TgObject.GameTimerState eTimerState) +{ + ScriptTrace(); + super.ChangeTimerState(eTimerState); + // End:0x76 + if(int(eTimerState) == int(3)) + { + m_FlagBases[0].SpawnFlag(); + m_FlagBases[1].SpawnFlag(); + } + else + { + // End:0xCC + if(int(eTimerState) == int(2)) + { + m_FlagBases[0].DestroyFlag(); + m_FlagBases[1].DestroyFlag(); + } + } + //return; +} + +event MissionTimer() +{ + local TgPlayerController TgPC; + local TgRepInfo_Game GRI; + + SendMissionTimerNotify(0, 0.0000000); + // End:0x75 + if(int(m_eTimerState) == int(2)) + { + SetMissionTime(m_fGameMissionTime); + MissionTimerStart(); + ChangeTimerState(3); + SendMissionTimerEvent(1); + SetTimer(float(m_nSpawnWaveTime), true, 'SpawnWaveTimer'); + } + else + { + // End:0x204 + if((m_nCurrentRound < m_nNumRounds) && int(m_eTimerState) == int(3)) + { + SetMissionTime(m_fEndOfRoundTime); + ChangeTimerState(8); + MissionTimerStart(); + // End:0x166 + if((m_FlagBases[0].m_SpawnedFlag != none) && m_FlagBases[0].m_SpawnedFlag.m_Holder != none) + { + m_FlagBases[0].m_SpawnedFlag.Drop(); + } + // End:0x201 + if((m_FlagBases[1].m_SpawnedFlag != none) && m_FlagBases[1].m_SpawnedFlag.m_Holder != none) + { + m_FlagBases[1].m_SpawnedFlag.Drop(); + } + } + else + { + // End:0x479 + if(int(m_eTimerState) == int(8)) + { + m_nCurrentRound++; + SetMissionTime(GetSetupTime()); + ChangeTimerState(2); + MissionTimerStart(); + // End:0x46A + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ResetPlayer(); + // End:0x386 + if(m_nCurrentRound == 2) + { + TgPC.SetLevel(15); + TgPC.r_nCurrency += 2500; + TgPC.bNetDirty = true; + // End:0x383 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && TgPC.IsLocalPlayerController()) + { + TgPC.SendUICurrencyChange(); + } + // End:0x469 + continue; + } + // End:0x469 + if(m_nCurrentRound == 3) + { + TgPC.SetLevel(20); + TgPC.r_nCurrency += 2500; + TgPC.bNetDirty = true; + // End:0x469 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && TgPC.IsLocalPlayerController()) + { + TgPC.SendUICurrencyChange(); + } + } + } + SendMissionTimerEvent(0); + } + else + { + // End:0x49A + if(int(m_eTimerState) == int(1)) + { + AllPlayersReady(); + } + else + { + // End:0x6FE + if(int(m_eTimerState) == int(3)) + { + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x6FE + if(GRI != none) + { + // End:0x59A + if(GRI.GetTaskForce(1).r_nScore > GRI.GetTaskForce(2).r_nScore) + { + m_GameWinState = 2; + GRI.r_Winner = GRI.GetTaskForce(1); + } + else + { + // End:0x65C + if(GRI.GetTaskForce(1).r_nScore < GRI.GetTaskForce(2).r_nScore) + { + m_GameWinState = 1; + GRI.r_Winner = GRI.GetTaskForce(2); + } + else + { + m_GameWinState = 3; + } + } + GRI.bNetDirty = true; + // End:0x6E6 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.SendClientSetGameWinState(m_GameWinState); + } + UpdateMissionTimerEventWinVar(); + BeginEndMission(); + } + } + } + } + } + } + //return; +} + +function RegisterFlagBase(TgCTFFlagBase FlagBase) +{ + // End:0x3C + if(FlagBase.m_nDefenderTaskForce == 1) + { + m_FlagBases[0] = FlagBase; + } + else + { + // End:0x79 + if(FlagBase.m_nDefenderTaskForce == 2) + { + m_FlagBases[1] = FlagBase; + } + } + //return; +} + +function ScoreFlag(TgPawn_Character FlagCarrier) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x6A + if(GRI != none) + { + GRI.GetTaskForceFor(FlagCarrier).r_nScore++; + } + //return; +} + +function SpawnWaveTimer() +{ + //return; +} + +defaultproperties +{ + m_fRoundTime=300.0000000 + m_fRoundSetupTime=45.0000000 + m_fEndOfRoundTime=5.0000000 + m_nCurrentRound=1 + m_nNumRounds=3 + m_nSpawnWaveTime=60 + m_nStartingCurrency=5000 + m_nStartingLevel=10 + m_nWinPlayerXp=20 + m_nLosePlayerXp=20 + m_fBaseTokens=1.5000000 + m_fFirstBloodGoldReward=100.0000000 + m_GameType=TG_GAME_TYPE.TGT_POINTCAPTURE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Domination.uc b/exported/TgGame/Classes/TgGame_Domination.uc new file mode 100755 index 00000000..2930fbc8 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Domination.uc @@ -0,0 +1,138 @@ +class TgGame_Domination extends TgGame_PointCapture + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +var float m_fRespawnTime; + +// Export UTgGame_Domination::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +function UpdateLockedPointStatus() +{ + local TgRepInfo_Game GRI; + local int I; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x134 + if(GRI != none) + { + I = 0; + J0x36: + + // End:0x134 [Loop If] + if(I < GRI.m_CPRIArray.Length) + { + CheckPointLocked(GRI.m_CPRIArray[I].r_OwningCapturePoint); + // End:0x126 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + GRI.m_CPRIArray[I].r_OwningCapturePoint.UpdateLockEffects(); + } + I++; + // [Loop Continue] + goto J0x36; + } + } + //return; +} + +function CheckPointLocked(TgCapturePoint Point) +{ + local TgRepInfo_Game GRI; + local int TaskforceIndex, I, WinningTaskForceNum; + local bool bAllOwnedBySameTaskForce; + local TgCapturePoint CCWNeighborPoint, CWNeighborPoint; + + // End:0xA7 + if(Point.r_RepInfo.r_nControlledByTaskForce == 0) + { + Point.r_RepInfo.r_bIsLocked = false; + Point.r_RepInfo.bNetDirty = true; + return; + } + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x2D3 + if((GRI != none) && GRI.m_CPRIArray.Length > 0) + { + TaskforceIndex = GRI.m_CPRIArray[0].r_nControlledByTaskForce; + bAllOwnedBySameTaskForce = true; + I = 1; + J0x14F: + + // End:0x1E4 [Loop If] + if(I < GRI.m_CPRIArray.Length) + { + // End:0x1D6 + if(TaskforceIndex != GRI.m_CPRIArray[I].r_nControlledByTaskForce) + { + bAllOwnedBySameTaskForce = false; + // [Explicit Break] + goto J0x1E4; + } + I++; + // [Loop Continue] + goto J0x14F; + } + J0x1E4: + + // End:0x2D3 + if(bAllOwnedBySameTaskForce) + { + WinningTaskForceNum = GRI.m_CPRIArray[0].r_nControlledByTaskForce; + // End:0x2D3 + if(WinningTaskForceNum != 0) + { + m_GameWinState = ((WinningTaskForceNum == 1) ? 2 : 1); + GRI.r_Winner = GRI.GetTaskForce(WinningTaskForceNum); + GRI.bNetDirty = true; + CheckWinState(); + return; + } + } + } + // End:0x3B9 + if(Point.m_CapturePointIndex == 0) + { + CCWNeighborPoint = GRI.m_CPRIArray[GRI.m_CPRIArray.Length - 1].r_OwningCapturePoint; + CWNeighborPoint = GRI.m_CPRIArray[Point.m_CapturePointIndex + 1].r_OwningCapturePoint; + } + else + { + // End:0x49F + if(Point.m_CapturePointIndex == (GRI.m_CPRIArray.Length - 1)) + { + CCWNeighborPoint = GRI.m_CPRIArray[Point.m_CapturePointIndex - 1].r_OwningCapturePoint; + CWNeighborPoint = GRI.m_CPRIArray[0].r_OwningCapturePoint; + } + else + { + CCWNeighborPoint = GRI.m_CPRIArray[Point.m_CapturePointIndex - 1].r_OwningCapturePoint; + CWNeighborPoint = GRI.m_CPRIArray[Point.m_CapturePointIndex + 1].r_OwningCapturePoint; + } + } + // End:0x671 + if((CCWNeighborPoint.r_RepInfo.r_nControlledByTaskForce != Point.r_RepInfo.r_nControlledByTaskForce) && CCWNeighborPoint.r_RepInfo.r_nControlledByTaskForce != 0) + { + Point.r_RepInfo.r_bIsLocked = false; + Point.r_RepInfo.bNetDirty = true; + return; + } + // End:0x785 + if((CWNeighborPoint.r_RepInfo.r_nControlledByTaskForce != Point.r_RepInfo.r_nControlledByTaskForce) && CWNeighborPoint.r_RepInfo.r_nControlledByTaskForce != 0) + { + Point.r_RepInfo.r_bIsLocked = false; + Point.r_RepInfo.bNetDirty = true; + return; + } + Point.r_RepInfo.r_bIsLocked = true; + Point.r_RepInfo.bNetDirty = true; + //return; +} + +defaultproperties +{ + m_fRespawnTime=20.0000000 + m_GameType=TG_GAME_TYPE.TGT_DOMINATION + GoalScore=500 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Idol.uc b/exported/TgGame/Classes/TgGame_Idol.uc new file mode 100755 index 00000000..dbdd7de3 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Idol.uc @@ -0,0 +1,52 @@ +class TgGame_Idol extends TgGame_Mission + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +var transient TgIdol m_Idols[2]; +var int m_nSpawnWaveTime; + +// Export UTgGame_Idol::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +// Export UTgGame_Idol::execScoreKillGameType(FFrame&, void* const) +native function ScoreKillGameType(out ScoreKillData Data); + +function float GetSetupTime() +{ + return 45.0000000; + //return ReturnValue; +} + +function bool StartGameTimer() +{ + m_fGameMissionTime = 14400.0000000; + return super.StartGameTimer(); + //return ReturnValue; +} + +event MissionTimer() +{ + // End:0x2D + if(int(m_eTimerState) == int(2)) + { + SetTimer(float(m_nSpawnWaveTime), true, 'SpawnWaveTimer'); + } + super.MissionTimer(); + //return; +} + +function SpawnWaveTimer() +{ + //return; +} + +defaultproperties +{ + m_nSpawnWaveTime=60 + m_nStartingCurrency=5000 + m_nWinPlayerXp=20 + m_nLosePlayerXp=20 + m_fBaseTokens=1.5000000 + m_GameType=TG_GAME_TYPE.TGT_IDOL +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_JeffPrototype.uc b/exported/TgGame/Classes/TgGame_JeffPrototype.uc new file mode 100755 index 00000000..67d58061 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_JeffPrototype.uc @@ -0,0 +1,18 @@ +class TgGame_JeffPrototype extends TgGame_Paladins_Siege + config(Game) + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + m_nWinningScore=3 + m_fWinningTickets=300.0000000 + m_bAutoMountAtRoundBegin=false + m_bResetPlayersNotInSpawnRoom=false + m_fTicketsPerCaptureTick=1.0000000 + m_fTicketsBonusPerMultiCapture=0.2500000 + m_fTicketsPerPointCapture=150.0000000 + m_fObjectivePickTime=15.0000000 + m_fSetupObjectivePickTime=15.0000000 + m_fSpawnGateOpenTime=15.0000000 + m_fSetupSpawnGateOpenTime=15.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Mission.uc b/exported/TgGame/Classes/TgGame_Mission.uc new file mode 100755 index 00000000..df83231f --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Mission.uc @@ -0,0 +1,657 @@ +class TgGame_Mission extends TgGame + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +const SURRENDER_TIME_SECS = 60.0; +const SURRENDER_TIME_BETWEEN = 180.0; +const MISSION_TIME_SETUP_SECS = 90.0; +const PLAYER_END_GAME_DELAY = 10.0f; +const FINISH_END_MISSION_DELAY = 300.0; +const PRE_GUARDIAN_PHASE_START = 7110.0f; +const GUARDIAN_PHASE_START = 7200.0f; +const PRE_MATCH_FROZEN_TIME_SECS = 3.0f; + +struct native SurrenderVote +{ + var int nPlayerId; + var bool bSurrender; + + structdefaultproperties + { + nPlayerId=0 + bSurrender=false + } +}; + +struct native SurrenderData +{ + var float fLastSurrenderTime; + var array SurrenderVotes; + var int nSurrenderTotal; + var int nSurrenderNeeded; + var int nSurrenderVoteCount; + var int nNoSurrenderVoteCount; + + structdefaultproperties + { + fLastSurrenderTime=0.0000000 + SurrenderVotes=none + nSurrenderTotal=0 + nSurrenderNeeded=0 + nSurrenderVoteCount=0 + nNoSurrenderVoteCount=0 + } +}; + +var bool m_bSpawnInTaskForceArea; +var bool s_bPreGuardianPhasePulsed; +var bool s_bGuardianPhasePulsed; +var bool s_bWasSurrendered; +var bool m_bSurrenderAvailable; +var bool m_bFirstBloodAwarded; +var bool m_bAllowAutoUpgrades; +var bool m_bUsePlayerCharacterIntros; +var bool m_bUseKillEmotes; +var bool m_bNotifyKillCombos; +var TgObject.GameTimerState m_eTimerState; +var TgObject.GameTimerState m_eTimerStatePaused; +var float m_fMissionTime; +var float m_fSecondaryMissionTime; +var private const float m_fWaitingForPlayersTime; +var config float m_fSetupTime; +var float m_fPausedAtTime; +var float m_fGameMissionTime; +var float s_MissionTimeAccumulator; +var array s_ReadyPlayers; +var int s_nReadyMercs; +var config float m_fTickCreditsFreq; +var config float m_fCreditsToGivePerTick; +var int m_nStartingCurrency; +var int m_nStartingLevel; +var int m_nWinBonusXp; +var int m_nWinPlayerXp; +var int m_nLosePlayerXp; +var float m_fGodXpCoefficient; +var float m_fGodXpCoefficientLoss; +var float m_fGodXpWinBonus; +var float m_fFreeVIPWinPoints; +var float m_fFreeVIPLossPoints; +var float m_fPaidVIPWinPoints; +var float m_fPaidVIPLossPoints; +var float m_fBaseTokens; +var Class m_MinimapManagerClass; +var SurrenderData s_SurrenderData[2]; +var float m_fSurrenderTime; +var int m_XPRadius; +var float m_MinionKillerBonus; +var float m_BasePlayerGoldReward; +var float m_fFirstBloodGoldReward; +var float m_fBasePlayerAssistGoldRewardMultipler; +var float m_fBasePlayerAssistXpRewardMultipler; +var float m_fBaseNPCAssistGoldRewardMultipler; +var float m_fBaseNPCAssistXpRewardMultipler; +var transient array m_MinionGoals; + +// Export UTgGame_Mission::execBeginEndMission(FFrame&, void* const) +native function bool BeginEndMission(optional bool bClearNextMapGame = false, optional Actor EndMissionFocus, optional float fDelayOverride = 0.0000000); + +// Export UTgGame_Mission::execLoadGameConfig(FFrame&, void* const) +native function LoadGameConfig(); + +// Export UTgGame_Mission::execSpoolCredits(FFrame&, void* const) +native function SpoolCredits(); + +// Export UTgGame_Mission::execSpawnPlayerCharacter(FFrame&, void* const) +native function TgPawn SpawnPlayerCharacter(Controller C, Vector vLocation); + +// Export UTgGame_Mission::execSendMissionTimerEvent(FFrame&, void* const) +native function SendMissionTimerEvent(int nEventId); + +// Export UTgGame_Mission::execUpdateMissionTimerEventWinVar(FFrame&, void* const) +native function UpdateMissionTimerEventWinVar(); + +// Export UTgGame_Mission::execMissionTimeRemaining(FFrame&, void* const) +native function float MissionTimeRemaining(); + +// Export UTgGame_Mission::execMissionTimeElapsed(FFrame&, void* const) +native function float MissionTimeElapsed(); + +// Export UTgGame_Mission::execMarkAsReady(FFrame&, void* const) +native function MarkAsReady(Player P); + +// Export UTgGame_Mission::execAllPlayersRevive(FFrame&, void* const) +native function AllPlayersRevive(); + +// Export UTgGame_Mission::execAllPlayersFullVitals(FFrame&, void* const) +native function AllPlayersFullVitals(); + +// Export UTgGame_Mission::execAllPlayersRecall(FFrame&, void* const) +native function AllPlayersRecall(); + +// Export UTgGame_Mission::execPlayerSurrender(FFrame&, void* const) +native function PlayerSurrender(int nPlayerId, optional bool bSurrender = true); + +// Export UTgGame_Mission::execSurrenderCompleteTimer1(FFrame&, void* const) +native function SurrenderCompleteTimer1(); + +// Export UTgGame_Mission::execSurrenderCompleteTimer2(FFrame&, void* const) +native function SurrenderCompleteTimer2(); + +// Export UTgGame_Mission::execSurrenderComplete(FFrame&, void* const) +native function SurrenderComplete(int nTaskForce); + +// Export UTgGame_Mission::execEndGameBySurrender(FFrame&, void* const) +native function EndGameBySurrender(int SurrenderingTaskForce); + +// Export UTgGame_Mission::execCapturedPoint(FFrame&, void* const) +native function CapturedPoint(TgPawn_Character PC); + +// Export UTgGame_Mission::execCapturePointReclaimed(FFrame&, void* const) +native function CapturePointReclaimed(TgPawn_Character PC); + +// Export UTgGame_Mission::execGetMinIntroWait(FFrame&, void* const) +native final function float GetMinIntroWait(); + +// Export UTgGame_Mission::execScoreKill(FFrame&, void* const) +native function ScoreKill(Controller Killer, Controller Other); + +// Export UTgGame_Mission::execScoreKillCommon(FFrame&, void* const) +native function ScoreKillCommon(out ScoreKillData Data); + +// Export UTgGame_Mission::execScoreKillGameType(FFrame&, void* const) +native function ScoreKillGameType(out ScoreKillData Data); + +// Export UTgGame_Mission::execScoreKillAchievements(FFrame&, void* const) +native function ScoreKillAchievements(out ScoreKillData Data); + +// Export UTgGame_Mission::execGetScoreKillData(FFrame&, void* const) +native function bool GetScoreKillData(Controller Killer, Controller Other, out ScoreKillData Data); + +// Export UTgGame_Mission::execNativeUpdateTimerState(FFrame&, void* const) +native function NativeUpdateTimerState(); + +// Export UTgGame_Mission::execIsFlankKill(FFrame&, void* const) +native function bool IsFlankKill(out ScoreKillData Data); + +event PostBeginPlay() +{ + local TgMinionGoal Goal; + + super.PostBeginPlay(); + CreateMinimapManagers(m_MinimapManagerClass); + // End:0x4D + foreach AllActors(Class'TgGame.TgMinionGoal', Goal) + { + m_MinionGoals.AddItem(Goal); + } + //return; +} + +function CreateMinimapManagers(Class managerClass) +{ + local TgRepInfo_TaskForce tfri; + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + tfri = GRI.GetTaskForce(1); + tfri.CreateMinimap(0, managerClass); + tfri = GRI.GetTaskForce(2); + tfri.CreateMinimap(1, managerClass); + //return; +} + +event PostLogin(PlayerController NewPlayer) +{ + StartGameTimer(); + super.PostLogin(NewPlayer); + //return; +} + +function StartMatch() +{ + super.StartMatch(); + SetTimer(m_fTickCreditsFreq, true, 'SpoolCredits'); + //return; +} + +function AddObjectiveScore(PlayerReplicationInfo Scorer, int Score) +{ + //return; +} + +function OnPointCaptureOwnershipChanged(TgCapturePoint Point, int NewTaskForceOwner, int PreviousTaskForceOwner) +{ + //return; +} + +function UpdateLockedPointStatus() +{ + //return; +} + +function bool CheckScore(PlayerReplicationInfo Scorer) +{ + return false; + //return ReturnValue; +} + +event QuickEndGame(int nWinnerTF) +{ + local TgRepInfo_Game GRI; + local TgPlayerController TgPC; + + GRI = TgRepInfo_Game(GameReplicationInfo); + GRI.r_Winner = GRI.GetTaskForce(nWinnerTF); + // End:0x83 + if(nWinnerTF == 2) + { + m_GameWinState = 1; + } + else + { + m_GameWinState = 2; + } + // End:0xEC + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.SendClientSetGameWinState(m_GameWinState); + } + UpdateMissionTimerEventWinVar(); + BeginEndMission(); + //return; +} + +event TgTimer(out string sTimerCommand) +{ + local int Time; + local bool bTimerIsPaused; + local int oldTime; + + oldTime = int(MissionTimeRemaining()); + bTimerIsPaused = m_fPausedAtTime > float(0); + Time = int(sTimerCommand); + // End:0x73 + if(Time != 0) + { + MissionTimerModify(bTimerIsPaused, Time); + } + else + { + // End:0xC4 + if((InStr(sTimerCommand, "start") > 0) || InStr(sTimerCommand, "unpause") > 0) + { + MissionTimerModify(false, oldTime); + } + else + { + // End:0x112 + if((InStr(sTimerCommand, "stop") > 0) || InStr(sTimerCommand, "pause") > 0) + { + MissionTimerModify(true, oldTime); + } + } + } + //return; +} + +function bool StartGameTimer() +{ + local float fPlayerWaitTime; + + // End:0x85 + if((m_fGameMissionTime > 0.0000000) && int(m_eTimerState) == int(0)) + { + fPlayerWaitTime = GetPlayerWaitTime(); + SetMissionTime(fPlayerWaitTime); + ChangeTimerState(1); + UpdateMissionTimerEventWinVar(); + MissionTimerStart(); + SetTimer(1.0000000, true, 'KeepClientsInSync'); + return true; + } + return false; + //return ReturnValue; +} + +function KeepClientsInSync() +{ + SendMissionTimerNotify(TgRepInfo_Game(GameReplicationInfo).r_nMissionTimerState, MissionTimeRemaining()); + //return; +} + +event SetMissionTime(float fTime) +{ + m_fMissionTime = fTime; + //return; +} + +event SetSecondaryMissionTime(float fTime) +{ + m_fSecondaryMissionTime = fTime; + //return; +} + +event MissionTimerStart() +{ + local float fTime; + + // End:0x91 + if(m_fMissionTime > 0.0000000) + { + fTime = ((m_fPausedAtTime > float(0)) ? m_fPausedAtTime : m_fMissionTime); + ClearTimer('MissionTimer'); + SetTimer(fTime, false, 'MissionTimer'); + m_fPausedAtTime = 0.0000000; + SendMissionTimerNotify(1, fTime); + } + // End:0xB8 + if(int(m_eTimerState) == int(6)) + { + ChangeTimerState(m_eTimerStatePaused); + } + //return; +} + +event MissionTimerStop() +{ + ClearTimer('MissionTimer'); + m_fPausedAtTime = 0.0000000; + // End:0x4A + if(int(m_eTimerState) == int(6)) + { + ChangeTimerState(m_eTimerStatePaused); + } + MissionTimer(); + //return; +} + +event MissionTimerPause() +{ + // End:0xA7 + if(IsTimerActive('MissionTimer')) + { + m_fPausedAtTime = GetTimerRate('MissionTimer') - GetTimerCount('MissionTimer'); + ClearTimer('MissionTimer'); + SendMissionTimerNotify(2, m_fPausedAtTime); + // End:0x9B + if(int(m_eTimerState) != int(6)) + { + m_eTimerStatePaused = m_eTimerState; + } + ChangeTimerState(6); + } + //return; +} + +event MissionTimer() +{ + SendMissionTimerNotify(0, 0.0000000); + // End:0x5C + if(int(m_eTimerState) == int(2)) + { + SetMissionTime(m_fGameMissionTime); + MissionTimerStart(); + ChangeTimerState(3); + SendMissionTimerEvent(1); + } + else + { + // End:0x7A + if(int(m_eTimerState) == int(1)) + { + AllPlayersReady(); + } + } + //return; +} + +event AllPlayersReady() +{ + local TgPlayerController PC; + local float fSetupTime; + + // End:0x86 + if(m_bUsePlayerCharacterIntros) + { + // End:0x85 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', PC) + { + // End:0x84 + if(!PC.IsSpectating()) + { + PC.SetupIntro(); + } + } + } + TgRepInfo_Game(GameReplicationInfo).r_bIntroPlayed = true; + // End:0x101 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgRepInfo_Game(GameReplicationInfo).UpdateGameTransitionUI(); + } + // End:0x17C + if((m_fGameMissionTime > 0.0000000) && int(m_eTimerState) == int(1)) + { + fSetupTime = GetSetupTime(); + SetMissionTime(fSetupTime); + ChangeTimerState(2); + UpdateMissionTimerEventWinVar(); + MissionTimerStart(); + SendMissionTimerEvent(0); + } + //return; +} + +event ChangeTimerState(TgObject.GameTimerState eTimerState) +{ + local TgRepInfo_Game GRI; + local TgObject.GameTimerState oldTimerState, newTimerState; + + oldTimerState = m_eTimerState; + newTimerState = eTimerState; + // End:0x43 + if(int(oldTimerState) == int(newTimerState)) + { + return; + } + GRI = TgRepInfo_Game(GameReplicationInfo); + m_eTimerState = eTimerState; + GRI.r_eGameTimerState = eTimerState; + // End:0xE2 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + GRI.GameStateChanged(); + } + NativeUpdateTimerState(); + //return; +} + +event bool MissionTimerActive() +{ + return (IsTimerActive('MissionTimer') || m_fPausedAtTime > 0.0000000) || (int(m_eTimerState) > int(2)) && int(m_eTimerState) < int(5); + //return ReturnValue; +} + +event float ElapsedTime() +{ + // End:0x2C + if(IsTimerActive('MissionTimer')) + { + return GetTimerCount('MissionTimer'); + } + return 0.0000000; + //return ReturnValue; +} + +event MissionTimerModify(bool bPause, int nNewTime) +{ + // End:0x8D + if(m_fPausedAtTime > float(0)) + { + // End:0x71 + if(nNewTime > 0) + { + m_fPausedAtTime = float(nNewTime); + SendMissionTimerNotify(TgRepInfo_Game(GameReplicationInfo).r_nMissionTimerState, float(nNewTime)); + } + // End:0x8A + if(!bPause) + { + MissionTimerStart(); + } + } + else + { + // End:0x119 + if(m_fPausedAtTime == float(0)) + { + // End:0x102 + if(nNewTime > 0) + { + SetTimer(float(nNewTime), false, 'MissionTimer'); + SendMissionTimerNotify(TgRepInfo_Game(GameReplicationInfo).r_nMissionTimerState, float(nNewTime)); + } + // End:0x119 + if(bPause) + { + MissionTimerPause(); + } + } + } + //return; +} + +event MissionTimeIncrement(float fInc) +{ + local float fTime; + + // End:0x26 + if(!MissionTimerActive() || fInc <= 0.0000000) + { + return; + } + // End:0x65 + if(m_fPausedAtTime > 0.0000000) + { + m_fPausedAtTime += fInc; + SendMissionTimerNotify(2, m_fPausedAtTime); + } + else + { + fTime = 0.0000000; + // End:0x9D + if(int(m_eTimerState) != int(4)) + { + fTime += (MissionTimeRemaining()); + } + fTime += fInc; + ClearTimer('MissionTimer'); + SetTimer(fTime, false, 'MissionTimer'); + SendMissionTimerNotify(1, fTime); + } + // End:0x138 + if(int(m_eTimerState) != int(7)) + { + // End:0x125 + if(m_fPausedAtTime > float(0)) + { + ChangeTimerState(6); + } + else + { + ChangeTimerState(m_eTimerState); + } + } + //return; +} + +event SendMissionTimerNotify(TgRepInfo_Game.MissionTimerState eState, float fRemainingSecs) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x10B + if(GRI != none) + { + GRI.r_fMissionTime = m_fMissionTime; + GRI.r_nMissionTimerState = eState; + GRI.r_fMissionRemainingTime = fRemainingSecs; + GRI.r_nMissionTimerStateChange++; + // End:0x10B + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + GRI.InitMissionTime(); + } + } + //return; +} + +event SendSecondaryMissionTimerNotify(TgRepInfo_Game.MissionTimerState eState, float fRemainingSecs) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x10B + if(GRI != none) + { + GRI.r_fSecondaryTime = m_fSecondaryMissionTime; + GRI.r_nSecondaryTimerState = eState; + GRI.r_fSecondaryRemainingTime = fRemainingSecs; + GRI.r_nSecondaryTimerStateChange++; + // End:0x10B + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + GRI.InitSecondaryMissionTime(); + } + } + //return; +} + +function float GetSetupTime() +{ + return m_fSetupTime; + //return ReturnValue; +} + +private final function float GetPlayerWaitTime() +{ + return m_fWaitingForPlayersTime; + //return ReturnValue; +} + +event TgObject.GameTimerState GetMissionTimerStatus() +{ + return m_eTimerState; + //return ReturnValue; +} + +defaultproperties +{ + m_bSpawnInTaskForceArea=true + m_bSurrenderAvailable=true + m_bAllowAutoUpgrades=true + m_bUsePlayerCharacterIntros=true + m_bUseKillEmotes=true + m_bNotifyKillCombos=true + m_fWaitingForPlayersTime=90.0000000 + m_fSetupTime=90.0000000 + m_fGameMissionTime=14400.0000000 + m_fTickCreditsFreq=1.0000000 + m_fCreditsToGivePerTick=1.0000000 + m_nStartingLevel=1 + m_fFreeVIPWinPoints=2700.0000000 + m_fFreeVIPLossPoints=1350.0000000 + m_fPaidVIPWinPoints=8100.0000000 + m_fPaidVIPLossPoints=3240.0000000 + m_MinimapManagerClass=Class'TgGame.TgMinimapManager' + m_fSurrenderTime=600.0000000 + m_XPRadius=1280 + m_MinionKillerBonus=0.5000000 + m_BasePlayerGoldReward=300.0000000 + m_fFirstBloodGoldReward=200.0000000 + m_fBasePlayerAssistGoldRewardMultipler=0.5000000 + m_fBasePlayerAssistXpRewardMultipler=0.5000000 + m_fBaseNPCAssistGoldRewardMultipler=1.0000000 + m_fBaseNPCAssistXpRewardMultipler=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins.uc b/exported/TgGame/Classes/TgGame_Paladins.uc new file mode 100755 index 00000000..fd7916a3 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins.uc @@ -0,0 +1,445 @@ +class TgGame_Paladins extends TgGame_Battle + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +const GAMEEVENT_PALADINS_PLAYER_KILL = 1001; +const GAMEEVENT_PALADINS_PLAYER_DEATH = 1002; +const GAMEEVENT_PALADINS_PLAYER_KILL_SUICIDE = 2001; +const GAMEEVENT_PALADINS_PLAYER_KILL_NORMAL = 2002; +const GAMEEVENT_PALADINS_PLAYER_KILL_ASSIST = 2003; +const GAMEEVENT_MATCH_STARTED = 0; +const GAMEEVENT_MATCH_ENDED = 1; +const GAMEEVENT_ROUND_STARTED = 2; +const GAMEEVENT_ROUND_ENDED = 3; +const GAMEEVENT_GAME_CLASS = 6; +const GAMEEVENT_GAME_OPTION_URL = 7; +const GAMEEVENT_GAME_MAPNAME = 8; +const GAMEEVENT_MEMORYUSAGE_POLL = 35; +const GAMEEVENT_FRAMERATE_POLL = 36; +const GAMEEVENT_NETWORKUSAGEIN_POLL = 37; +const GAMEEVENT_NETWORKUSAGEOUT_POLL = 38; +const GAMEEVENT_PING_POLL = 39; +const GAMEEVENT_RENDERTHREAD_POLL = 40; +const GAMEEVENT_GAMETHREAD_POLL = 41; +const GAMEEVENT_GPUFRAMETIME_POLL = 42; +const GAMEEVENT_FRAMETIME_POLL = 43; +const GAMEEVENT_TEAM_CREATED = 50; +const GAMEEVENT_TEAM_GAME_SCORE = 51; +const GAMEEVENT_TEAM_MATCH_WON = 4; +const GAMEEVENT_TEAM_ROUND_WON = 5; +const GAMEEVENT_TEAM_ROUND_STALEMATE = 52; +const GAMEEVENT_PLAYER_LOGIN = 100; +const GAMEEVENT_PLAYER_LOGOUT = 101; +const GAMEEVENT_PLAYER_SPAWN = 102; +const GAMEEVENT_PLAYER_MATCH_WON = 103; +const GAMEEVENT_PLAYER_KILL = 104; +const GAMEEVENT_PLAYER_LOCATION_POLL = 105; +const GAMEEVENT_PLAYER_TEAMCHANGE = 106; +const GAMEEVENT_PLAYER_KILL_STREAK = 107; +const GAMEEVENT_PLAYER_DEATH = 108; +const GAMEEVENT_PLAYER_ROUND_WON = 109; +const GAMEEVENT_PLAYER_ROUND_STALEMATE = 110; +const GAMEEVENT_WEAPON_DAMAGE = 150; +const GAMEEVENT_WEAPON_DAMAGE_MELEE = 151; +const GAMEEVENT_WEAPON_FIRED = 152; +const GAMEEVENT_PLAYER_KILL_NORMAL = 200; +const GAMEEVENT_GENERIC_PARAM_LIST_START = 300; +const GAMEEVENT_GENERIC_PARAM_LIST_END = 400; +const GAMEEVENT_GAME_SPECIFIC = 1000; +const GAMEEVENT_MAX_EVENTID = 0x0000FFFF; + +struct native TeamDifficultyData +{ + var TgAIController_Behavior.EBotDifficultyLevel CurrentBotDifficultyLevel; + var float TeamSkillLevel; + + structdefaultproperties + { + CurrentBotDifficultyLevel=EBotDifficultyLevel.AIDifficulty_Practice + TeamSkillLevel=0.0000000 + } +}; + +var config int m_nGoalScore; +var config bool m_bCanPurchaseItemsAnywhere; +var config bool m_bAutoMountOnRespawn; +var config bool m_bDropHealthNuggetOnDeath; +var bool m_bRespawnBots; +var config bool m_bDisableKillcam; +var config bool m_bCanApplyCardEquipStats; +var config bool m_bTalentsEnabled; +var config bool m_bDeckSwappingAlwaysEnabled; +var bool m_bDiminishingReturnsOnCCEnabled; +var const float m_fPlayerWaitTime; +var int m_nHealthNuggetDeployableId; +var int m_nHealthNuggetTeamOnlyDeployableId; +var int m_fHealthNuggetPersistTime; +var config float m_fPlayerViewDistance; +var config float m_fVisibilityVolumeViewDistance; +var float m_fCardCooldownIncrease; +var config float m_fCardCooldownMultiplier; +var config float m_fGameTypeReminderTime; +var config float m_fRespawnBeaconLifeSpan; +var config float m_fBaseRespawnTime; +var const float m_fMapLaneChangeDelay; +var config int m_nStartingCredits; +var config int m_nMaxCredits; +var config string m_GameplayEventsWriterClassName; +var GameplayEventsWriter GameplayEventsWriter; +var TeamDifficultyData DifficultyData[2]; +var TgAIDirector AIDirector; + +// Export UTgGame_Paladins::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +// Export UTgGame_Paladins::execScoreKillGameType(FFrame&, void* const) +native function ScoreKillGameType(out ScoreKillData Data); + +// Export UTgGame_Paladins::execGetScoreKillData(FFrame&, void* const) +native function bool GetScoreKillData(Controller Killer, Controller Other, out ScoreKillData Data); + +// Export UTgGame_Paladins::execScoreKillCommon(FFrame&, void* const) +native function ScoreKillCommon(out ScoreKillData Data); + +// Export UTgGame_Paladins::execOnBeaconReset(FFrame&, void* const) +native function OnBeaconReset(int nTaskForce, Controller Killer); + +// Export UTgGame_Paladins::execBeginEndMission(FFrame&, void* const) +native function bool BeginEndMission(optional bool bClearNextMapGame = false, optional Actor EndMissionFocus, optional float fDelayOverride = 0.0000000); + +// Export UTgGame_Paladins::execTriggerMapLaneChange(FFrame&, void* const) +native function TriggerMapLaneChange(); + +// Export UTgGame_Paladins::execBeginGameStatsLogging(FFrame&, void* const) +native function BeginGameStatsLogging(); + +// Export UTgGame_Paladins::execEndGameStatsLogging(FFrame&, void* const) +native function EndGameStatsLogging(); + +event FadeAllClients() +{ + local TgPlayerController TgPC; + + // End:0x80 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientSetCameraFade(true, MakeColor(0, 0, 0), vect2d(0.0000000, 1.0000000), 0.0100000); + } + //return; +} + +event PostBeginPlay() +{ + local TgRepInfo_Game GRI; + + super(TgGame_Mission).PostBeginPlay(); + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0xF6 + if(GRI != none) + { + GRI.r_fPlayerViewDistance = m_fPlayerViewDistance; + GRI.r_fVisibilityVolumeViewDistance = m_fVisibilityVolumeViewDistance; + GRI.r_eTalentsEnabled = ((m_bTalentsEnabled) ? 2 : 1); + GRI.r_bBlockKillCam = m_bDisableKillcam; + } + // End:0x120 + if(m_fGameTypeReminderTime > 0.0000000) + { + SetTimer(m_fGameTypeReminderTime, true, 'ShowGameTypeHelpTip'); + } + AIDirector = Spawn(Class'TgGame.TgAIDirector'); + BeginGameStatsLogging(); + //return; +} + +function RestartPlayer(Controller aPlayer) +{ + local TgPawn TgP; + + super(TgGame).RestartPlayer(aPlayer); + // End:0x165 + if((GameplayEventsWriter != none) && GameplayEventsWriter.IsSessionInProgress()) + { + TgP = TgPawn(aPlayer.Pawn); + // End:0x107 + if(TgP != none) + { + GameplayEventsWriter.LogPlayerSpawnEvent(102, aPlayer, aPlayer.Pawn.Class, int(TgP.GetTaskForceNumber())); + } + else + { + GameplayEventsWriter.LogPlayerSpawnEvent(102, aPlayer, aPlayer.Pawn.Class, 1); + } + } + //return; +} + +function InitializeCreditsFor(TgPaladinsController TgPC) +{ + SetCredits(TgPC, m_nStartingCredits); + //return; +} + +event SetCredits(TgPaladinsController TgPC, int nCreditsAmount) +{ + nCreditsAmount = Min(nCreditsAmount, m_nMaxCredits); + TgPC.SetCredits(nCreditsAmount); + //return; +} + +event GiveCredits(TgPaladinsController TgPC, int nCreditsAmount) +{ + local int nCurrentCredits; + + nCurrentCredits = TgPC.GetCredits(); + nCurrentCredits = Min(nCurrentCredits + nCreditsAmount, m_nMaxCredits); + nCurrentCredits = Max(nCurrentCredits, 0); + TgPC.SetCredits(nCurrentCredits); + //return; +} + +event TakeCredits(TgPaladinsController TgPC, int nCreditsAmount) +{ + local int nCurrentCredits; + + nCurrentCredits = TgPC.GetCredits(); + nCurrentCredits = Max(nCurrentCredits - nCreditsAmount, 0); + nCurrentCredits = Min(nCurrentCredits, m_nMaxCredits); + TgPC.SetCredits(nCurrentCredits); + //return; +} + +function ResetCreditsForAllPlayers() +{ + local Controller TheController; + local TgPaladinsController TgPC; + + // End:0x84 + foreach WorldInfo.AllControllers(Class'Engine.Controller', TheController) + { + TgPC = TgPaladinsController(TheController); + // End:0x83 + if(NotEqual_InterfaceInterface(TgPC, TgPaladinsController(none))) + { + InitializeCreditsFor(TgPC); + } + } + //return; +} + +function ResetKillstreaksForAllPlayers() +{ + local Controller TheController; + local TgPaladinsController TgPC; + local TgPawn TgP; + local TgRepInfo_Player PRI; + + // End:0x12B + foreach WorldInfo.AllControllers(Class'Engine.Controller', TheController) + { + TgPC = TgPaladinsController(TheController); + // End:0x12A + if(NotEqual_InterfaceInterface(TgPC, TgPaladinsController(none))) + { + TgP = TgPC.GetTgPawn(); + // End:0x12A + if(TgP != none) + { + PRI = TgRepInfo_Player(TgP.PlayerReplicationInfo); + // End:0x12A + if(PRI != none) + { + PRI.r_nKillstreak = 0; + PRI.bNetDirty = true; + } + } + } + } + //return; +} + +function ResetUltForAllPlayers() +{ + local Controller TheController; + local TgPaladinsController TgPC; + + // End:0x91 + foreach WorldInfo.AllControllers(Class'Engine.Controller', TheController) + { + TgPC = TgPaladinsController(TheController); + // End:0x90 + if(NotEqual_InterfaceInterface(TgPC, TgPaladinsController(none))) + { + TgPC.ResetUlt(); + } + } + //return; +} + +function int GetGameTypeHelpTipIndex(TgPlayerController TgPC) +{ + return -1; + //return ReturnValue; +} + +function ShowGameTypeHelpTip() +{ + local TgPlayerController TgPC; + local int HelpTipIndex; + + // End:0x8D + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + HelpTipIndex = GetGameTypeHelpTipIndex(TgPC); + // End:0x8C + if(HelpTipIndex != -1) + { + TgPC.ClientRequestHelpText(HelpTipIndex); + } + } + //return; +} + +function SendClientsRequestHelpText(int GameTipId) +{ + local TgPlayerController TgPC; + local int HelpTipIndex; + + HelpTipIndex = GameTipId; + // End:0x95 + if((GameTipId > 0) && GameTipId != -1) + { + // End:0x94 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientRequestHelpText(HelpTipIndex); + } + } + //return; +} + +function Killed(Controller Killer, Controller KilledPlayer, Pawn KilledPawn, Class DamageType) +{ + local TgRepInfo_Player KillerPRI, KilledPRI; + + super(GameInfo).Killed(Killer, KilledPlayer, KilledPawn, DamageType); + // End:0x6E + if(Killer != none) + { + KillerPRI = TgRepInfo_Player(Killer.PlayerReplicationInfo); + } + // End:0xAE + if(KilledPawn != none) + { + KilledPRI = TgRepInfo_Player(KilledPawn.PlayerReplicationInfo); + } + // End:0xE5 + if(KilledPRI != none) + { + KilledPRI.s_LastKillerPRI = KillerPRI; + } + //return; +} + +function OnPawnDied(TgPawn Victim) +{ + //return; +} + +function OnKillConfirmed(TgRepInfo_Player PRI, TgRepInfo_TaskForce Taskforce, optional int bonusScore = 0) +{ + //return; +} + +function UpdateTgPawnMetaGameState(TgPawn CurPawn, optional TgPawn.EMetaGameState NewState = 0) +{ + //return; +} + +function UpdateAllPawnsMetaGameState(optional TgPawn.EMetaGameState NewState = 0) +{ + //return; +} + +function float GetPlayerWaitTime() +{ + return m_fPlayerWaitTime; + //return ReturnValue; +} + +event CheckGameState() +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce TF1, TF2; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x43 + if((GRI == none) || int(m_GameWinState) != int(0)) + { + return; + } + TF1 = GRI.GetTaskForce(1); + TF2 = GRI.GetTaskForce(2); + // End:0x137 + if(TF1.r_nScore >= m_nGoalScore) + { + m_GameWinState = 1; + GRI.r_Winner = GRI.GetTaskForce(2); + GRI.bNetDirty = true; + } + else + { + // End:0x1D0 + if(TF2.r_nScore >= m_nGoalScore) + { + m_GameWinState = 2; + GRI.r_Winner = GRI.GetTaskForce(1); + GRI.bNetDirty = true; + } + } + // End:0x1EE + if(int(m_GameWinState) != int(0)) + { + EndTheGame(); + } + //return; +} + +function EndTheGame() +{ + local TgPlayerController PC; + + // End:0x5D + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', PC) + { + PC.SendClientSetGameWinState(m_GameWinState); + } + BeginEndMission(); + UpdateAllPawnsMetaGameState(0); + //return; +} + +defaultproperties +{ + m_nGoalScore=100 + m_bRespawnBots=true + m_bTalentsEnabled=true + m_bDiminishingReturnsOnCCEnabled=true + m_fPlayerWaitTime=20.0000000 + m_nHealthNuggetDeployableId=643 + m_nHealthNuggetTeamOnlyDeployableId=754 + m_fHealthNuggetPersistTime=30 + m_fPlayerViewDistance=7200.0000000 + m_fVisibilityVolumeViewDistance=256.0000000 + m_fCardCooldownMultiplier=1.0000000 + m_fRespawnBeaconLifeSpan=120.0000000 + m_fBaseRespawnTime=12.0000000 + m_fMapLaneChangeDelay=8.0000000 + m_nStartingCredits=400 + m_nMaxCredits=7500 + m_GameplayEventsWriterClassName="TgGame.TgGameplayEventsWriter" + DifficultyData[0]=(CurrentBotDifficultyLevel=EBotDifficultyLevel.AIDifficulty_Easy1,TeamSkillLevel=0.0000000) + DifficultyData[1]=(CurrentBotDifficultyLevel=EBotDifficultyLevel.AIDifficulty_Easy1,TeamSkillLevel=0.0000000) + m_fSetupTime=0.1000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_PaladinsExtended.uc b/exported/TgGame/Classes/TgGame_PaladinsExtended.uc new file mode 100755 index 00000000..12a28fd2 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_PaladinsExtended.uc @@ -0,0 +1,3619 @@ +class TgGame_PaladinsExtended extends TgGame_Paladins + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +enum ETeamStatus +{ + TEAM_WINNING, // 0 + TEAM_LOSING, // 1 + TEAM_TIED, // 2 + TEAM_MAX // 3 +}; + +enum EVictoryType +{ + EVT_Default, // 0 + EVT_Capture, // 1 + EVT_Defend, // 2 + EVT_Payload, // 3 + EVT_Siege, // 4 + EVT_Survival, // 5 + EVT_Kill, // 6 + EVT_Ticket, // 7 + EVT_TimeLimit, // 8 + EVT_MAX // 9 +}; + +var transient int m_nTF1Score; +var transient int m_nTF2Score; +var config transient int m_nWinningScore; +var config float m_fWinningTickets; +var config bool m_bTicketsPersist; +var bool m_bScoringEnabled; +var const config bool m_bKillLanePusherOnWallDestroyed; +var bool m_bKeepThisPointForNextRound; +var bool m_bConvergeCompletely; +var bool m_bCanCaptureDuringSurvival; +var const config bool m_bCanAutoPushForward; +var bool m_bCanSpoolCredits; +var bool m_bConvergeCompletelyAfterDelay; +var bool m_bOverrideSpawnTableID; +var config bool m_bActivateSpawnGatesAtStart; +var config bool m_bRevivePlayersWhenSiegeEngineDies; +var bool m_bStasisTimerOn; +var config bool m_bActivateAllCapturePoints; +var bool m_bPointContested; +var bool m_bPointCaptureOvertime; +var bool m_bCapturePointContestDurationEnabled; +var bool m_bTF1Backsliding; +var bool m_bTF2Backsliding; +var bool m_bEndRoundWhenPointCaptured; +var bool m_bSpawnLanePusherWhenPointCaptured; +var bool m_bCaptureSpawnAlerts; +var bool m_bResetPlayersNotInSpawnRoomDisabled; +var config bool m_bAutoMountAtRoundBegin; +var config bool m_bResetPlayersNotInSpawnRoom; +var config float m_fTicketsForKill; +var config float m_fTicketsPerCaptureTick; +var config float m_fTicketsBonusPerMultiCapture; +var config float m_fTicketsPerPointCapture; +var float m_fTF1Tickets; +var float m_fTF2Tickets; +var config float m_fTicketsPerTicketDisparity; +var config float m_fSecondsPerTicketDisparity; +var config float m_fMaximumDisparitySeconds; +var config float m_fObjectiveRepickTickets; +var float m_fLastObjectiveRepickTickets; +var config float m_fRoundLimitDuration; +var float s_fRoundLimitElapsed; +var config int m_nPointsForReachingTicketMax; +var config int m_nPointsForReachingRoundTimeLimit; +var config float m_fSecondaryGoalScore; +var const config float m_fSecondaryScoreAmount; +var const config float m_fObjectivePickTime; +var const config float m_fSetupObjectivePickTime; +var const config float m_fSpawnGateOpenTime; +var const config float m_fAttackersSpawnGateOpenTime; +var const config float m_fDefendersSpawnGateOpenTime; +var const config float m_fSetupSpawnGateOpenTime; +var const float m_fObjectiveActivationTime; +var int m_SpawnTableIndex; +var TgChaosCapturePoint m_CapturedPoint; +var TgChaosCapturePoint m_LastActiveCapturePoint; +var array m_CapturePointQueue; +var int s_nCurrentCapturePointQueueIndex; +var array m_CardVendor; +var const config int m_nRegLanePusherHPScaling; +var const config int m_nRegLanePusherPowerScaling; +var const config int m_nGuardianHPScaling; +var const config int m_nGuardianPowerScaling; +var const config int m_nOuterGateHPScaling; +var const config int m_nInnerGateHPScaling; +var const config int m_nBaseObjectiveHPScaling; +var TgPawn_SiegeWall m_TF1InnerWall; +var TgPawn_SiegeWall m_TF1OuterWall; +var TgPawn_SiegeWall m_TF1BaseObjective; +var TgPawn_SiegeWall m_TF2InnerWall; +var TgPawn_SiegeWall m_TF2OuterWall; +var TgPawn_SiegeWall m_TF2BaseObjective; +var int m_nForcedObjectiveIndex; +var int m_nCountdown; +var protected float m_fSpeedScale; +var config float m_fRespawnIncreaseOverTime; +var config float m_fDefenseRespawnIncrease; +var config float m_fAttackRespawnIncrease; +var config float m_fRespawnTimeCap; +var config float m_fNoSiegeEngineRespawnModification; +var const name m_AttackDefendState; +var const TgObject.EGameMode m_DefaultGameMode; +var() config float m_fConvergeStartDistance; +var() config float m_fConvergeRate; +var() config float m_fStartConvergeTime; +var() config float m_fConvergeSafeDistance; +var TgDevice ConvergeDevice; +var const config float m_fAutoPushForwardDelay; +var const config float m_fAutoPushForwardSpeedScale; +var const config float m_fStopAutoPushDelay; +var config int m_nCreditsForHoldingObjective; +var config int m_nCreditsBonusPerContested; +var config int m_nCreditsForHoldingPayload; +var float m_fFogCompleteConvergeDelay; +var config float m_fCapturePointsPerSecond1; +var config float m_fCapturePointsPerSecond2; +var config float m_fCapturePointsPerSecond3; +var config float m_fCapturePointsPerSecond4; +var config float m_fCapturePointsPerSecond5; +var config float m_fPointContestDuration; +var config float m_fPointOvertimeDuration; +var config float m_fPointOvertimeDrainPercPerSec; +var config float m_fPointClaimDuration; +var float m_fOvertimeActiveTime; +var config float m_fBackslidePercent; +var config float m_fBackslideDelay; +var config float m_fBackslideRate; +var int s_nCurrentActivePointIndex; +var int m_nAttackingTaskforce; +var config float m_fFlankerSoloKillRewardDistance; +var config float m_fDamageRoleMultiplier; +var config float m_fFlankRoleMultiplier; +var config float m_fFrontLineRoleMultiplier; +var config float m_fSupportRoleMultiplier; +var Vector m_SnappedWaypointIndicatorOffset; +var float m_fGamePauseDelay; + +// Export UTgGame_PaladinsExtended::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +// Export UTgGame_PaladinsExtended::execScoreObjectiveHold(FFrame&, void* const) +native function ScoreObjectiveHold(TgPawn ScorePawn, int NumContested); + +// Export UTgGame_PaladinsExtended::execScorePayloadHold(FFrame&, void* const) +native function ScorePayloadHold(TgPawn ScorePawn, int NumContested); + +// Export UTgGame_PaladinsExtended::execBotDied(FFrame&, void* const) +native function BotDied(TgAIController aic); + +// Export UTgGame_PaladinsExtended::execLoadCardVendor(FFrame&, void* const) +native function LoadCardVendor(); + +// Export UTgGame_PaladinsExtended::execCaptureSpawnAlert(FFrame&, void* const) +native function CaptureSpawnAlert(float TimeRemaining); + +// Export UTgGame_PaladinsExtended::execSiegeEnginePreDamageMitigation(FFrame&, void* const) +native function SiegeEnginePreDamageMitigation(TgPawn attacker, TgEffectGroup eg, out float fDamage, int nPropertyId); + +// Export UTgGame_PaladinsExtended::execSiegeEngineAdjustDamage(FFrame&, void* const) +native function SiegeEngineAdjustDamage(const out AdjustDamageParams Params, out float fDamage); + +// Export UTgGame_PaladinsExtended::execCacheConvergeDevice(FFrame&, void* const) +native function CacheConvergeDevice(); + +// Export UTgGame_PaladinsExtended::execCanSpoolCredits(FFrame&, void* const) +native function bool CanSpoolCredits(); + +// Export UTgGame_PaladinsExtended::execTickOvertime(FFrame&, void* const) +native function TickOvertime(float DeltaSeconds); + +// Export UTgGame_PaladinsExtended::execGetRewardScale(FFrame&, void* const) +native function float GetRewardScale(Actor Rewardee, TgObject.ERewardValueType RewardType, optional bool bFlankKill = false); + +// Export UTgGame_PaladinsExtended::execIsFlankKill(FFrame&, void* const) +native function bool IsFlankKill(out ScoreKillData Data); + +// Export UTgGame_PaladinsExtended::execGetTaskForceObjectiveTime(FFrame&, void* const) +native function int GetTaskForceObjectiveTime(int TaskForceNum); + +// Export UTgGame_PaladinsExtended::execSendStartRoundOnePointFromWinningAlert(FFrame&, void* const) +native function SendStartRoundOnePointFromWinningAlert(int nTaskForceNum); + +event PostBeginPlay() +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce Taskforce1, Taskforce2; + + super.PostBeginPlay(); + m_nTF1Score = m_nWinningScore; + m_nTF2Score = m_nWinningScore; + SetTickets(1, m_fWinningTickets); + SetTickets(2, m_fWinningTickets); + m_fLastObjectiveRepickTickets = 0.0000000; + SetTimer(1.0000000, true, 'ManageCapturePointScore'); + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x298 + if(GRI != none) + { + GRI.r_bUltimatesLocked = true; + GRI.r_bKillCamEnabled = false; + GRI.r_bAttackersKillCamEnabled = false; + GRI.r_bDefendersKillCamEnabled = false; + GRI.bNetDirty = true; + Taskforce1 = GRI.GetTaskForce(1); + // End:0x1E3 + if(Taskforce1 != none) + { + Taskforce1.r_nScore = m_nTF1Score; + Taskforce1.bNetDirty = true; + } + Taskforce2 = GRI.GetTaskForce(2); + // End:0x267 + if(Taskforce2 != none) + { + Taskforce2.r_nScore = m_nTF2Score; + Taskforce2.bNetDirty = true; + } + // End:0x298 + if(m_fRoundLimitDuration > float(0)) + { + s_fRoundLimitElapsed = 0.0000000; + SendRoundLimitTimerNotify(0, 0.0000000); + } + } + LoadCardVendor(); + // End:0x2B9 + if(m_bActivateSpawnGatesAtStart) + { + CloseSpawnGates(); + } + //return; +} + +function int GetScore(int nTaskForce) +{ + switch(nTaskForce) + { + // End:0x21 + case 1: + return m_nTF1Score; + // End:0x30 + case 2: + return m_nTF2Score; + // End:0xFFFF + default: + return 0; + break; + } + //return ReturnValue; +} + +function SetScore(int nTaskForce, int nScore) +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce Taskforce; + + // End:0x11 + if(!m_bScoringEnabled) + { + return; + } + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x84 + if(GRI != none) + { + Taskforce = GRI.GetTaskForce(nTaskForce); + } + switch(nTaskForce) + { + // End:0xD9 + case 1: + // End:0xD6 + if(SetTaskforceScore(Taskforce, nScore, m_nTF1Score)) + { + NotifyClientsOfTF1ScoreChange(nScore); + } + // End:0x11F + break; + // End:0x11C + case 2: + // End:0x119 + if(SetTaskforceScore(Taskforce, nScore, m_nTF2Score)) + { + NotifyClientsOfTF2ScoreChange(nScore); + } + // End:0x11F + break; + // End:0xFFFF + default: + break; + } + //return; +} + +function bool SetTaskforceScore(TgRepInfo_TaskForce Taskforce, int nScore, out int nStoredScore) +{ + local bool bUpdated; + + // End:0xF5 + if(nStoredScore != nScore) + { + nStoredScore = nScore; + // End:0xBC + if((Taskforce != none) && Taskforce.r_nScore != nScore) + { + Taskforce.r_nScore = nStoredScore; + Taskforce.bNetDirty = true; + bUpdated = true; + } + // End:0xF5 + if(nStoredScore <= 0) + { + TaskforceWin(Taskforce.r_nTeamId, 0); + } + } + return bUpdated; + //return ReturnValue; +} + +function GainPoints(int nTaskForce, int numPoints, TgGame_PaladinsExtended.EVictoryType VictoryType) +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce Taskforce; + + // End:0x11 + if(!m_bScoringEnabled) + { + return; + } + switch(nTaskForce) + { + // End:0x12D + case 1: + m_nTF1Score -= numPoints; + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0xFF + if(GRI != none) + { + Taskforce = GRI.GetTaskForce(1); + // End:0xFF + if(Taskforce != none) + { + Taskforce.r_nScore = m_nTF1Score; + Taskforce.bNetDirty = true; + } + } + // End:0x12A + if(m_nTF1Score <= 0) + { + TaskforceWin(nTaskForce, VictoryType); + } + // End:0x23B + break; + // End:0x238 + case 2: + m_nTF2Score -= numPoints; + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x20A + if(GRI != none) + { + Taskforce = GRI.GetTaskForce(2); + // End:0x20A + if(Taskforce != none) + { + Taskforce.r_nScore = m_nTF2Score; + Taskforce.bNetDirty = true; + } + } + // End:0x235 + if(m_nTF2Score <= 0) + { + TaskforceWin(nTaskForce, VictoryType); + } + // End:0x23B + break; + // End:0xFFFF + default: + break; + } + //return; +} + +function TaskforceWin(int nTaskForce, TgGame_PaladinsExtended.EVictoryType VictoryType) +{ + local TgRepInfo_Game GRI; + + m_GameWinState = ((nTaskForce == 1) ? 2 : 1); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xB3 + if(GRI != none) + { + GRI.r_Winner = GRI.GetTaskForce(nTaskForce); + GRI.bNetDirty = true; + } + BeginEndMission(); + //return; +} + +function NotifyClientsOfTF1ScoreChange(int nScore) +{ + local TgPlayerController TgPC; + + // End:0x5D + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientUpdateTF1Score(nScore); + } + //return; +} + +function NotifyClientsOfTF2ScoreChange(int nScore) +{ + local TgPlayerController TgPC; + + // End:0x5D + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientUpdateTF2Score(nScore); + } + //return; +} + +event SendRoundLimitTimerNotify(TgRepInfo_Game.MissionTimerState eState, float fElapsedSecs) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xA3 + if(GRI != none) + { + GRI.r_fRoundLimitElapsed = fElapsedSecs; + GRI.r_nRoundLimitTimerState = eState; + GRI.r_fRoundLimitDuration = m_fRoundLimitDuration; + } + //return; +} + +event RoundTimeLimitReached() +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce TF1, TF2; + local int WinningTF; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xC2 + if(GRI != none) + { + TF1 = GRI.GetTaskForce(1); + TF2 = GRI.GetTaskForce(2); + GRI.r_nRemainingObjectiveTime = 0; + GRI.r_nTotalObjectiveTime = 0; + } + ClearTimer('UpdateObjectiveTimer'); + WinningTF = -1; + // End:0x141 + if(m_fWinningTickets > float(0)) + { + // End:0x11B + if(m_fTF1Tickets < m_fTF2Tickets) + { + WinningTF = 1; + } + else + { + // End:0x13E + if(m_fTF2Tickets < m_fTF1Tickets) + { + WinningTF = 2; + } + } + } + else + { + // End:0x1FD + if((TF1 != none) && TF2 != none) + { + // End:0x1B0 + if(TF1.r_fSecondaryScore > TF2.r_fSecondaryScore) + { + WinningTF = 1; + } + else + { + // End:0x1FD + if(TF2.r_fSecondaryScore > TF1.r_fSecondaryScore) + { + WinningTF = 2; + } + } + } + } + // End:0x224 + if(WinningTF == -1) + { + WinningTF = ResolveTie(); + } + GainPoints(WinningTF, m_nPointsForReachingRoundTimeLimit, 8); + // End:0x2C3 + if(GRI != none) + { + GRI.r_nLastRoundWinner = byte(WinningTF); + GRI.UpdateAttackingTaskforce(GRI.GetTaskForce(WinningTF)); + } + OnRoundEnded(); + TransitionToNextRound(); + //return; +} + +function int ResolveTie() +{ + local int tf1Time, tf2Time; + + tf1Time = GetTaskForceObjectiveTime(1); + tf2Time = GetTaskForceObjectiveTime(2); + // End:0x47 + if(tf1Time > tf2Time) + { + return 1; + } + else + { + // End:0x64 + if(tf1Time < tf2Time) + { + return 2; + } + else + { + return Rand(2) + 1; + } + } + //return ReturnValue; +} + +function BeginPlayConverge() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0xA1 + if(GRI != none) + { + GRI.SetGameMode(1); + GRI.SetGameRespawnRule(2); + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_SurvivalGameBegin', self); + CacheConvergeDevice(); + } + //return; +} + +function EndPlayConverge() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x89 + if(GRI != none) + { + GRI.SetGameMode(m_DefaultGameMode); + GRI.SetGameRespawnRule(0); + } + //return; +} + +event CheckCorePower(optional TgChaosCapturePoint capturePoint) +{ + local int nTaskForce; + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce TF1, TF2; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x44 + if((GRI == none) || int(m_GameWinState) != int(0)) + { + return; + } + TF1 = GRI.GetTaskForce(1); + TF2 = GRI.GetTaskForce(2); + // End:0x224 + if((TF1.r_fSecondaryScore >= m_fSecondaryGoalScore) || TF2.r_fSecondaryScore >= m_fSecondaryGoalScore) + { + nTaskForce = ((TF1.r_fSecondaryScore >= m_fSecondaryGoalScore) ? 1 : 2); + RewardPointCapture(nTaskForce); + GRI.UpdateAttackingTaskforce(((TF1.r_fSecondaryScore >= m_fSecondaryGoalScore) ? TF1 : TF2)); + m_CapturedPoint = capturePoint; + // End:0x206 + if(GRI.r_AttackingTaskForce != none) + { + GRI.PlaySoundBase(AkEvent'WW_UI_Default.UI_InGame_Alert_Point_Captured_1P_Play', false, false, false); + } + NotifyPlayersOfPointCapture(); + PointCaptured(nTaskForce); + } + //return; +} + +function RewardPointCapture(int nTaskForce) +{ + //return; +} + +function NotifyPlayersOfPointCapture() +{ + local TgPlayerController TgPC; + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xDF + if(GRI != none) + { + // End:0xDE + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientPlayPointCapturedEffects(m_CapturedPoint, TgPC.GetTaskForceNumber() == int(GRI.r_AttackingTaskForce.r_nTaskForce)); + } + } + //return; +} + +function float GetPointCaptureScoreMultiplier(int nTaskForce) +{ + local float CaptureRateModifier; + + // End:0x33 + if(int(GetTeamStatus(byte(nTaskForce), CaptureRateModifier)) == int(1)) + { + return CaptureRateModifier; + } + return 1.0000000; + //return ReturnValue; +} + +event TgGame_PaladinsExtended.ETeamStatus GetTeamStatus(byte TaskForceNum, optional out float CaptureRateModifier) +{ + local bool bIsTF1OuterWallUp, bIsTF1InnerWallUp, bIsTF2OuterWallUp, bIsTF2InnerWallUp; + + CaptureRateModifier = 1.0000000; + bIsTF1OuterWallUp = (m_TF1OuterWall != none) && m_TF1OuterWall.IsAliveAndWell(); + bIsTF1InnerWallUp = (m_TF1InnerWall != none) && m_TF1InnerWall.IsAliveAndWell(); + bIsTF2OuterWallUp = (m_TF2OuterWall != none) && m_TF2OuterWall.IsAliveAndWell(); + bIsTF2InnerWallUp = (m_TF2InnerWall != none) && m_TF2InnerWall.IsAliveAndWell(); + // End:0x1C5 + if(int(TaskForceNum) == int(1)) + { + // End:0x133 + if(bIsTF1OuterWallUp) + { + // End:0x12D + if(bIsTF2OuterWallUp) + { + return 2; + } + return 0; + } + else + { + // End:0x17B + if(bIsTF1InnerWallUp) + { + // End:0x162 + if(bIsTF2OuterWallUp) + { + CaptureRateModifier = 1.5000000; + return 1; + } + else + { + // End:0x175 + if(bIsTF2InnerWallUp) + { + return 2; + } + else + { + return 0; + } + } + } + else + { + // End:0x19D + if(bIsTF2OuterWallUp) + { + CaptureRateModifier = 2.0000000; + return 1; + } + else + { + // End:0x1BF + if(bIsTF2InnerWallUp) + { + CaptureRateModifier = 1.5000000; + return 1; + } + else + { + return 2; + } + } + } + } + } + else + { + // End:0x1EB + if(bIsTF2OuterWallUp) + { + // End:0x1E5 + if(bIsTF1OuterWallUp) + { + return 2; + } + else + { + return 0; + } + } + else + { + // End:0x233 + if(bIsTF2InnerWallUp) + { + // End:0x21A + if(bIsTF1OuterWallUp) + { + CaptureRateModifier = 1.5000000; + return 1; + } + else + { + // End:0x22D + if(bIsTF1InnerWallUp) + { + return 2; + } + else + { + return 0; + } + } + } + else + { + // End:0x255 + if(bIsTF1OuterWallUp) + { + CaptureRateModifier = 2.0000000; + return 1; + } + else + { + // End:0x277 + if(bIsTF1InnerWallUp) + { + CaptureRateModifier = 1.5000000; + return 1; + } + else + { + return 2; + } + } + } + } + } + return 2; + //return ReturnValue; +} + +function bool IsSurivivalMode() +{ + return int(TgRepInfo_Game(GameReplicationInfo).r_GameMode) == int(1); + //return ReturnValue; +} + +function Pawn SpawnDefaultPawnFor(Controller NewPlayer, NavigationPoint StartSpot) +{ + local Pawn P; + + P = super(TgGame).SpawnDefaultPawnFor(NewPlayer, StartSpot); + // End:0x77 + if((TgPawn(P) != none) && m_bStasisTimerOn) + { + TgPawn(P).r_bIsInStasis = true; + } + return P; + //return ReturnValue; +} + +event AllPlayersReady() +{ + super(TgGame_Mission).AllPlayersReady(); + // End:0x45 + if(m_bStasisTimerOn && !IsTimerActive('EndStasisTimer')) + { + SetTimer(3.0000000, false, 'EndStasisTimer'); + } + //return; +} + +function ContestPoint() +{ + m_bPointContested = true; + SetTimer(FMin(GetOvertimeDuration(), m_fPointContestDuration), false, 'PointContestEnd'); + //return; +} + +function PointContestEnd() +{ + m_bPointContested = false; + //return; +} + +function SetCapturePointOvertimeEnabled(bool bEnabled) +{ + // End:0x72 + if(m_bCapturePointContestDurationEnabled != bEnabled) + { + m_bCapturePointContestDurationEnabled = bEnabled; + // End:0x72 + if(!m_bCapturePointContestDurationEnabled) + { + // End:0x72 + if(IsTimerActive('PointOvertimeEnd')) + { + ClearTimer('PointOvertimeEnd'); + PointOvertimeEnd(); + } + } + } + //return; +} + +function float GetOvertimeDuration() +{ + return FMax(1.0000000, m_fPointOvertimeDuration - ((m_fPointOvertimeDuration * (m_fPointOvertimeDrainPercPerSec / 100.0000000)) * m_fOvertimeActiveTime)); + //return ReturnValue; +} + +function BeginPointOvertime() +{ + local TgRepInfo_Game GRI; + local TgChaosCapturePoint currentCapturePoint; + local float fOvertimeDuration; + + m_bPointContested = false; + ClearTimer('PointContested'); + currentCapturePoint = GetCurrentCapturePoint(); + // End:0x8B + if(currentCapturePoint != none) + { + currentCapturePoint.m_fTF1TouchedPointTimer = 0.0000000; + currentCapturePoint.m_fTF2TouchedPointTimer = 0.0000000; + } + m_bPointCaptureOvertime = true; + fOvertimeDuration = GetOvertimeDuration(); + SetTimer(fOvertimeDuration, false, 'PointOvertimeEnd'); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x178 + if(GRI != none) + { + GRI.r_bCapturePointOvertime = true; + GRI.r_fCapturePointOvertimeStartDuration = GetOvertimeDuration(); + GRI.r_nCapturePointOvertimeStateChange++; + GRI.bNetDirty = true; + } + //return; +} + +function RestartPointOvertime() +{ + local TgRepInfo_Game GRI; + + m_bPointCaptureOvertime = true; + SetTimer(GetOvertimeDuration(), false, 'PointOvertimeEnd'); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xDA + if(GRI != none) + { + GRI.r_bCapturePointOvertime = true; + GRI.r_fCapturePointOvertimeStartDuration = GetOvertimeDuration(); + GRI.r_nCapturePointOvertimeStateChange++; + GRI.bNetDirty = true; + } + //return; +} + +function PointOvertimeEnd() +{ + local TgRepInfo_Game GRI; + + m_bPointCaptureOvertime = false; + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x99 + if(GRI != none) + { + GRI.r_bCapturePointOvertime = false; + GRI.r_nCapturePointOvertimeStateChange++; + GRI.bNetDirty = true; + } + //return; +} + +function TgChaosCapturePoint GetCurrentCapturePoint() +{ + // End:0x6B + if(!IsInState(m_AttackDefendState)) + { + // End:0x61 + if((m_LastActiveCapturePoint == none) || m_LastActiveCapturePoint == m_CapturedPoint) + { + // End:0x5E + if(m_CapturePointQueue.Length > 0) + { + return m_CapturePointQueue[s_nCurrentCapturePointQueueIndex]; + } + } + else + { + return m_LastActiveCapturePoint; + } + } + return m_CapturedPoint; + //return ReturnValue; +} + +function bool ShouldHandlePointCaptureBacksliding() +{ + return m_fBackslideRate > 0.0000000; + //return ReturnValue; +} + +function BackslideDelayTF1() +{ + m_bTF1Backsliding = true; + //return; +} + +function BackslideDelayTF2() +{ + m_bTF2Backsliding = true; + //return; +} + +function ManageCapturePointScore() +{ + local TgRepInfo_TaskForce Taskforce; + local array CapturePoints; + local TgChaosCapturePoint capturePoint; + local int I; + + // End:0x56 + if(m_bActivateAllCapturePoints) + { + // End:0x52 + foreach WorldInfo.DynamicActors(Class'TgGame.TgChaosCapturePoint', capturePoint) + { + CapturePoints.AddItem(capturePoint); + } + } + else + { + CapturePoints.AddItem(GetCurrentCapturePoint()); + } + I = 0; + J0x78: + + // End:0x40B [Loop If] + if(I < CapturePoints.Length) + { + capturePoint = CapturePoints[I]; + // End:0x3FD + if(capturePoint != none) + { + capturePoint.UpdateOccupationStatus(); + // End:0x3FD + if(ShouldHandlePointCaptureBacksliding()) + { + // End:0x146 + if(capturePoint.m_nNumTF1OnPoint > 0) + { + m_bTF1Backsliding = false; + // End:0x143 + if(IsTimerActive('BackslideDelayTF1')) + { + ClearTimer('BackslideDelayTF1'); + } + } + else + { + // End:0x242 + if(m_bTF1Backsliding) + { + Taskforce = TgRepInfo_Game(GameReplicationInfo).GetTaskForce(1); + // End:0x23F + if(Taskforce != none) + { + // End:0x23F + if((Taskforce.r_fSecondaryScore > m_fBackslidePercent) && Taskforce.r_fSecondaryScore < 100.0000000) + { + Taskforce.r_fSecondaryScore = FMax(Taskforce.r_fSecondaryScore - m_fBackslideRate, m_fBackslidePercent); + } + } + } + else + { + // End:0x272 + if(!IsTimerActive('BackslideDelayTF1')) + { + SetTimer(m_fBackslideDelay, false, 'BackslideDelayTF1'); + } + } + } + // End:0x2D0 + if(capturePoint.m_nNumTF2OnPoint > 0) + { + m_bTF2Backsliding = false; + // End:0x2CD + if(IsTimerActive('BackslideDelayTF2')) + { + ClearTimer('BackslideDelayTF2'); + } + } + else + { + // End:0x3CD + if(m_bTF2Backsliding) + { + Taskforce = TgRepInfo_Game(GameReplicationInfo).GetTaskForce(2); + // End:0x3CA + if(Taskforce != none) + { + // End:0x3CA + if((Taskforce.r_fSecondaryScore > m_fBackslidePercent) && Taskforce.r_fSecondaryScore < 100.0000000) + { + Taskforce.r_fSecondaryScore = FMax(Taskforce.r_fSecondaryScore - m_fBackslideRate, m_fBackslidePercent); + } + } + } + else + { + // End:0x3FD + if(!IsTimerActive('BackslideDelayTF2')) + { + SetTimer(m_fBackslideDelay, false, 'BackslideDelayTF2'); + } + } + } + } + } + I++; + // [Loop Continue] + goto J0x78; + } + //return; +} + +function CheckAwardObjectiveScore(byte TaskForceNum, TgChaosCapturePoint capturePoint, int NumOnPoint, int NumContested) +{ + local TgRepInfo_TaskForce Taskforce; + local TgPawn_Character TgP; + local float ScoreAmount; + local TgRepInfo_Game GRI; + local int I; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0xD0 + if(((((int(m_GameWinState) != int(0)) || GRI == none) || int(TaskForceNum) == int(0)) || (int(GRI.r_GameMode) == int(1)) && !m_bCanCaptureDuringSurvival) || !GRI.r_bSpawnGatesOpen) + { + return; + } + // End:0xE9 + if(NumContested > 0) + { + ContestPoint(); + } + // End:0x102 + if(IsTimerActive('PointOvertimeEnd')) + { + return; + } + // End:0x4AE + if((capturePoint.m_nTaskForce == 0) || capturePoint.m_nTaskForce == int(TaskForceNum)) + { + Taskforce = TgRepInfo_Game(GameReplicationInfo).GetTaskForce(int(TaskForceNum)); + // End:0x485 + if(Taskforce != none) + { + // End:0x3B2 + if(NumContested == 0) + { + TgRepInfo_Game(GameReplicationInfo).r_CapturingTaskForce = Taskforce; + ScoreAmount = 0.0000000; + switch(NumOnPoint) + { + // End:0x234 + case 0: + TgRepInfo_Game(GameReplicationInfo).r_CapturingTaskForce = none; + return; + // End:0x24E + case 1: + ScoreAmount = m_fCapturePointsPerSecond1; + // End:0x2BD + break; + // End:0x269 + case 2: + ScoreAmount = m_fCapturePointsPerSecond2; + // End:0x2BD + break; + // End:0x284 + case 3: + ScoreAmount = m_fCapturePointsPerSecond3; + // End:0x2BD + break; + // End:0x29F + case 4: + ScoreAmount = m_fCapturePointsPerSecond4; + // End:0x2BD + break; + // End:0x2BA + case 5: + ScoreAmount = m_fCapturePointsPerSecond5; + // End:0x2BD + break; + // End:0xFFFF + default: + break; + } + ScoreAmount *= (GetPointCaptureScoreMultiplier(int(TaskForceNum))); + Taskforce.r_fSecondaryScore = FMin(m_fSecondaryGoalScore, Taskforce.r_fSecondaryScore + ScoreAmount); + // End:0x3AF + if((Taskforce.r_fSecondaryScore >= m_fSecondaryGoalScore) && ShouldGoIntoOvertimeOnPointCapture(int(TaskForceNum))) + { + Taskforce.r_fSecondaryScore = m_fSecondaryGoalScore - 1.0000000; + BeginPointOvertime(); + } + } + else + { + TgRepInfo_Game(GameReplicationInfo).r_CapturingTaskForce = none; + } + I = 0; + J0x3E6: + + // End:0x46F [Loop If] + if(I < capturePoint.m_TouchingChampions.Length) + { + TgP = capturePoint.m_TouchingChampions[I]; + ScoreObjectiveHold(TgP, NumContested); + I++; + // [Loop Continue] + goto J0x3E6; + } + CheckCorePower(capturePoint); + } + else + { + TgRepInfo_Game(GameReplicationInfo).r_CapturingTaskForce = none; + } + } + //return; +} + +function bool CapturePointContestDurationEnabled() +{ + return m_bCapturePointContestDurationEnabled; + //return ReturnValue; +} + +function bool ShouldGoIntoOvertimeOnPointCapture(int TaskForceNum) +{ + local TgChaosCapturePoint currentCapturePoint; + + // End:0xB5 + if(CapturePointContestDurationEnabled()) + { + currentCapturePoint = GetCurrentCapturePoint(); + // End:0xAA + if(currentCapturePoint != none) + { + // End:0x6E + if((TaskForceNum == 1) && currentCapturePoint.m_fTF2TouchedPointTimer > 0.0000000) + { + return true; + } + else + { + // End:0xAA + if((TaskForceNum == 2) && currentCapturePoint.m_fTF1TouchedPointTimer > 0.0000000) + { + return true; + } + } + } + return m_bPointContested; + } + return false; + //return ReturnValue; +} + +event GoalReached() +{ + //return; +} + +function bool CanGoToObjectiveActiveState() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + return GRI.r_LanePusher == none; + //return ReturnValue; +} + +function bool CanGoToObjectiveInactiveState() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + return GRI.r_LanePusher == none; + //return ReturnValue; +} + +function UpdateObjectiveStates() +{ + local TgRepInfo_Game GRI; + local TgObjective Objective; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x43 + if((int(m_eTimerState) != int(3)) || GRI == none) + { + return; + } + EnableUltWhenObjectiveStateUpdated(); + EnableCreditSpoolingWhenObjectiveStateUpdated(); + // End:0x183 + foreach WorldInfo.DynamicActors(Class'TgGame.TgObjective', Objective) + { + // End:0xD3 + if((int(Objective.r_eStatus) == int(2)) && CanGoToObjectiveActiveState()) + { + SetCapturePointActive(Objective); + // End:0x182 + continue; + } + // End:0x12B + if(int(Objective.r_eStatus) != int(0)) + { + Objective.SetStatus(0); + UpdateAllPawnsMetaGameState(); + // End:0x182 + continue; + } + // End:0x182 + if(int(Objective.r_eStatus) == int(2)) + { + // End:0x182 + if(CanGoToObjectiveInactiveState()) + { + Objective.SetStatus(0); + } + } + } + //return; +} + +function EnableUltWhenObjectiveStateUpdated() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x6D + if(GRI != none) + { + GRI.r_bUltimatesLocked = false; + GRI.bNetDirty = true; + } + //return; +} + +function EnableCreditSpoolingWhenObjectiveStateUpdated() +{ + m_bCanSpoolCredits = true; + //return; +} + +function bool ShouldNextRoundBeASurvivalRound() +{ + return false; + //return ReturnValue; +} + +function SetCapturePointActive(TgObjective Objective) +{ + local TgChaosCapturePoint CaptureObjective; + + CaptureObjective = TgChaosCapturePoint(Objective); + // End:0x68 + if((ShouldNextRoundBeASurvivalRound()) || (CaptureObjective != none) && CaptureObjective.m_bForceSurvival) + { + BeginPlayConverge(); + } + Objective.SetStatus(1); + m_LastActiveCapturePoint = TgChaosCapturePoint(Objective); + UpdateAllPawnsMetaGameState(2); + //return; +} + +function int GetNextSpawnTableId() +{ + return 215; + //return ReturnValue; +} + +function PickNextObjective() +{ + local array CapPoints; + local TgChaosCapturePoint capturePoint; + + // End:0x85 + if(m_bActivateAllCapturePoints) + { + // End:0x81 + foreach WorldInfo.DynamicActors(Class'TgGame.TgChaosCapturePoint', capturePoint) + { + // End:0x80 + if(capturePoint.m_nTaskForce == 0) + { + capturePoint.SetStatus(2); + } + } + } + else + { + // End:0xEE + foreach WorldInfo.DynamicActors(Class'TgGame.TgChaosCapturePoint', capturePoint) + { + // End:0xED + if(capturePoint.m_nTaskForce == 0) + { + CapPoints.AddItem(capturePoint); + } + } + // End:0x125 + if(CapPoints.Length == 1) + { + CapPoints[0].SetStatus(2); + } + else + { + // End:0x17C + if((m_nForcedObjectiveIndex >= 0) && m_nForcedObjectiveIndex < CapPoints.Length) + { + CapPoints[m_nForcedObjectiveIndex].SetStatus(2); + } + else + { + // End:0x226 + if(m_CapturePointQueue.Length == 0) + { + // End:0x1C9 + foreach CapPoints(capturePoint) + { + m_CapturePointQueue.InsertItem(Rand(m_CapturePointQueue.Length + 1), capturePoint); + } + // End:0x21B + if(m_CapturePointQueue[0] == m_LastActiveCapturePoint) + { + m_CapturePointQueue.InsertItem(Rand(m_CapturePointQueue.Length - 1) + 2, m_CapturePointQueue[0]); + m_CapturePointQueue.Remove(0, 1); + } + s_nCurrentCapturePointQueueIndex = 0; + } + m_CapturePointQueue[s_nCurrentCapturePointQueueIndex].SetStatus(2); + s_nCurrentActivePointIndex = m_CapturePointQueue.Find(m_CapturePointQueue[s_nCurrentCapturePointQueueIndex]); + // End:0x2B8 + if(!m_bKeepThisPointForNextRound) + { + s_nCurrentCapturePointQueueIndex++; + // End:0x2B8 + if(s_nCurrentCapturePointQueueIndex >= m_CapturePointQueue.Length) + { + s_nCurrentCapturePointQueueIndex = 0; + } + } + } + } + } + UpdateObjectiveStates(); + // End:0x2DF + if(m_fObjectiveRepickTickets < 1.0000000) + { + EndBroadcastTimer(); + } + //return; +} + +function PreFillCapturePointQueue() +{ + local array CapPoints; + local TgChaosCapturePoint capturePoint; + + // End:0x69 + foreach WorldInfo.DynamicActors(Class'TgGame.TgChaosCapturePoint', capturePoint) + { + // End:0x68 + if(capturePoint.m_nTaskForce == 0) + { + CapPoints.AddItem(capturePoint); + } + } + // End:0xAA + if((CapPoints.Length == 1) || (m_nForcedObjectiveIndex >= 0) && m_nForcedObjectiveIndex < CapPoints.Length) + { + return; + } + else + { + // End:0x154 + if(m_CapturePointQueue.Length == 0) + { + // End:0xF7 + foreach CapPoints(capturePoint) + { + m_CapturePointQueue.InsertItem(Rand(m_CapturePointQueue.Length + 1), capturePoint); + } + // End:0x149 + if(m_CapturePointQueue[0] == m_LastActiveCapturePoint) + { + m_CapturePointQueue.InsertItem(Rand(m_CapturePointQueue.Length - 1) + 2, m_CapturePointQueue[0]); + m_CapturePointQueue.Remove(0, 1); + } + s_nCurrentCapturePointQueueIndex = 0; + } + } + //return; +} + +function PointCaptured(int nTaskForce, optional bool bSuppressPointsForCapture) +{ + //return; +} + +function OpenSpawnGates() +{ + local TgRepInfo_Game GRI; + local TgSpawnGate SpawnGate; + local TgPlayerController TgPC; + local TgPawn TgP; + local TgRepInfo_TaskForce TF1, TF2; + + m_bCanSpoolCredits = true; + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_SpawnGateDeactivate', self); + // End:0x6F + foreach WorldInfo.DynamicActors(Class'TgGame.TgSpawnGate', SpawnGate) + { + SpawnGate.Deactivate(); + } + // End:0x11B + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientDeactivateSpawnGates(); + TgP = TgPC.GetTgPawn(); + // End:0x11A + if(TgP != none) + { + TgP.OnSpawnGatesOpened(); + } + } + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x2C4 + if(GRI != none) + { + GRI.r_bSpawnGatesOpenedAtLeastOnce = true; + GRI.r_bUltimatesLocked = false; + GRI.r_bSpawnGatesOpen = true; + GRI.r_bKillCamEnabled = true; + GRI.bNetDirty = true; + TF1 = GRI.GetTaskForce(1); + // End:0x257 + if((TF1 != none) && TF1.r_nScore <= 1) + { + SendStartRoundOnePointFromWinningAlert(1); + } + TF2 = GRI.GetTaskForce(2); + // End:0x2C4 + if((TF2 != none) && TF2.r_nScore <= 1) + { + SendStartRoundOnePointFromWinningAlert(2); + } + } + // End:0x2E6 + if(m_fRoundLimitDuration > float(0)) + { + SendRoundLimitTimerNotify(1, 0.0000000); + } + //return; +} + +function CloseSpawnGates() +{ + local TgRepInfo_Game GRI; + local TgSpawnGate SpawnGate; + local TgPlayerController TgPC; + + // End:0x4E + foreach WorldInfo.DynamicActors(Class'TgGame.TgSpawnGate', SpawnGate) + { + SpawnGate.Activate(); + } + // End:0xA3 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientActivateSpawnGates(); + } + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x1B6 + if(GRI != none) + { + GRI.r_bSpawnGatesOpen = false; + GRI.r_bAttackersSpawnGatesOpen = false; + GRI.r_bDefendersSpawnGatesOpen = false; + GRI.r_bKillCamEnabled = false; + GRI.r_bAttackersKillCamEnabled = false; + GRI.r_bDefendersKillCamEnabled = false; + GRI.bNetDirty = true; + } + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_SpawnGateActivate', self); + //return; +} + +function PayloadCheckpointReached(TgSplineActor_Payload Checkpoint) +{ + //return; +} + +function EndPreRoundSetup() +{ + //return; +} + +function StartBroadcastTimer() +{ + ClearTimer('StartBroadcastTimer'); + BroadcastTimer(); + SetTimer(1.0000000, true, 'BroadcastTimer'); + //return; +} + +function EndBroadcastTimer() +{ + ClearTimer('BroadcastTimer'); + //return; +} + +function BroadcastTimer() +{ + local TgPlayerController TgPC; + local float TimeRemaining; + + TimeRemaining = GetTimerRate('PickNextObjective') - GetTimerCount('PickNextObjective'); + // End:0xAE + if(IsTimerActive('PickNextObjective')) + { + // End:0xAD + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientUpdateRoundSetupTimer(TimeRemaining + float(1)); + } + } + CaptureSpawnAlert(TimeRemaining); + //return; +} + +function float GetPickNextObjectiveTime() +{ + return m_fSetupObjectivePickTime; + //return ReturnValue; +} + +function float GetSpawnGateOpenTime() +{ + // End:0x1E + if(m_fSetupSpawnGateOpenTime <= 0.0000000) + { + return GetPickNextObjectiveTime(); + } + return m_fSetupSpawnGateOpenTime; + //return ReturnValue; +} + +function StartStasisTimer() +{ + local TgPawn TgP; + + // End:0x0F + if(m_bStasisTimerOn) + { + return; + } + m_bStasisTimerOn = true; + // End:0x73 + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn', TgP) + { + TgP.r_bIsInStasis = true; + } + //return; +} + +function EndStasisTimer() +{ + local TgPawn TgP; + + // End:0x11 + if(!m_bStasisTimerOn) + { + return; + } + m_bStasisTimerOn = false; + // End:0x75 + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn', TgP) + { + TgP.r_bIsInStasis = false; + } + //return; +} + +event OnBotDied(TgAIController TgAIC) +{ + local TgPawn_SiegeWall SiegeWall; + local TgPawn_LanePusher SiegeMachine; + local TgRepInfo_Game GRI; + local TgPawn_Character TgP; + local TgPlayerController TgPC; + local int nDestroyedTF; + local float fPercent, ModifiedHealth; + + // End:0x37 + if((TgAIC == none) || TgAIC.Pawn == none) + { + return; + } + fPercent = 0.0500000; + SiegeWall = TgPawn_SiegeWall(TgAIC.Pawn); + // End:0x396 + if(SiegeWall != none) + { + nDestroyedTF = int(SiegeWall.GetTaskForceNumber()); + // End:0x1BB + if(nDestroyedTF > 0) + { + // End:0x1BA + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + // End:0x125 + if(TgPC.GetTaskForceNumber() == nDestroyedTF) + { + continue; + } + TgP = TgPawn_Character(TgPC.Pawn); + // End:0x169 + if(TgP == none) + { + continue; + } + // End:0x195 + if(TgP.m_fWallDamagePercent > fPercent) + { + } + TgP.m_fWallDamagePercent = 0.0000000; + } + } + KillSiegeWallTowers(nDestroyedTF); + // End:0x21E + if(SiegeWall.IsA('TgPawn_SiegeWall_Outer')) + { + OpenOuterGates(SiegeWall.GetTaskForceNumber(), true); + } + else + { + // End:0x26B + if(SiegeWall.IsA('TgPawn_SiegeWall_Inner')) + { + OpenInnerGates(SiegeWall.GetTaskForceNumber(), true); + } + } + // End:0x396 + if(KillLanePusherWhenGateIsDestroyed()) + { + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x396 + if(((GRI != none) && GRI.r_LanePusher != none) && TgAIC.IsEnemy(GRI.r_LanePusher)) + { + ModifiedHealth = FMax(GRI.r_LanePusher.GetHealth() / 2.0000000, 1.0000000); + GRI.r_LanePusher.SetProperty(19, ModifiedHealth); + } + } + } + nDestroyedTF = 0; + SiegeMachine = TgPawn_LanePusher(TgAIC.Pawn); + // End:0x40C + if(SiegeMachine != none) + { + nDestroyedTF = int(SiegeMachine.GetTaskForceNumber()); + } + // End:0x516 + if(nDestroyedTF > 0) + { + // End:0x515 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + // End:0x480 + if(TgPC.GetTaskForceNumber() == nDestroyedTF) + { + continue; + } + TgP = TgPawn_Character(TgPC.Pawn); + // End:0x4C4 + if(TgP == none) + { + continue; + } + // End:0x4F0 + if(TgP.m_fSiegeDamagePercent > fPercent) + { + } + TgP.m_fSiegeDamagePercent = 0.0000000; + } + } + //return; +} + +function KillSiegeWallTowers(int nTaskForce) +{ + local TgPawn_Tower_FA Tower; + local array InnerTowers; + local bool bDestroyedOuterTower; + local int I; + + // End:0x120 + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn_Tower_FA', Tower) + { + // End:0x11F + if((int(Tower.GetTaskForceNumber()) == nTaskForce) && Tower.IsAliveAndWell()) + { + // End:0xE0 + if(int(Tower.m_TowerType) == int(2)) + { + Tower.Suicide(); + bDestroyedOuterTower = true; + // End:0x11F + continue; + } + // End:0x11F + if(int(Tower.m_TowerType) == int(1)) + { + InnerTowers.AddItem(Tower); + } + } + } + // End:0x19A + if(!bDestroyedOuterTower) + { + // End:0x19A + if(InnerTowers.Length > 0) + { + I = 0; + J0x14B: + + // End:0x19A [Loop If] + if(I < InnerTowers.Length) + { + InnerTowers[I].Suicide(); + I++; + // [Loop Continue] + goto J0x14B; + } + } + } + //return; +} + +function ConsoleEvent(name EventName) +{ + local array AllConsoleEvents; + local SeqEvent_Console ConsoleEvt; + local Sequence GameSeq; + local int Idx; + + GameSeq = WorldInfo.GetGameSequence(); + // End:0x13B + if((GameSeq != none) && EventName != 'None') + { + GameSeq.FindSeqObjectsByClass(Class'Engine.SeqEvent_Console', true, AllConsoleEvents); + Idx = 0; + J0x8E: + + // End:0x13B [Loop If] + if(Idx < AllConsoleEvents.Length) + { + ConsoleEvt = SeqEvent_Console(AllConsoleEvents[Idx]); + // End:0x12D + if((ConsoleEvt != none) && EventName == ConsoleEvt.ConsoleEventName) + { + ConsoleEvt.CheckActivate(self, self); + } + Idx++; + // [Loop Continue] + goto J0x8E; + } + } + //return; +} + +function OpenInnerGates(byte TaskForceNum, bool bOpen) +{ + // End:0xB0 + if(int(TaskForceNum) == int(1)) + { + ((bOpen) ? ConsoleEvent('TF1_DoorInner_Open') : ConsoleEvent('TF1_DoorInner_Close')); + // End:0xAD + if((m_TF1InnerWall != none) && m_TF1InnerWall.IsAliveAndWell()) + { + m_TF1InnerWall.SetCollision(!bOpen, !bOpen); + } + } + else + { + // End:0x15D + if(int(TaskForceNum) == int(2)) + { + ((bOpen) ? ConsoleEvent('TF2_DoorInner_Open') : ConsoleEvent('TF2_DoorInner_Close')); + // End:0x15D + if((m_TF2InnerWall != none) && m_TF2InnerWall.IsAliveAndWell()) + { + m_TF2InnerWall.SetCollision(!bOpen, !bOpen); + } + } + } + //return; +} + +function OpenOuterGates(byte TaskForceNum, bool bOpen) +{ + // End:0xB0 + if(int(TaskForceNum) == int(1)) + { + ((bOpen) ? ConsoleEvent('TF1_DoorOuter_Open') : ConsoleEvent('TF1_DoorOuter_Close')); + // End:0xAD + if((m_TF1OuterWall != none) && m_TF1OuterWall.IsAliveAndWell()) + { + m_TF1OuterWall.SetCollision(!bOpen, !bOpen); + } + } + else + { + // End:0x15D + if(int(TaskForceNum) == int(2)) + { + ((bOpen) ? ConsoleEvent('TF2_DoorOuter_Open') : ConsoleEvent('TF2_DoorOuter_Close')); + // End:0x15D + if((m_TF2OuterWall != none) && m_TF2OuterWall.IsAliveAndWell()) + { + m_TF2OuterWall.SetCollision(!bOpen, !bOpen); + } + } + } + //return; +} + +function OpenAllAliveGates(bool bOpen) +{ + local TgRepInfo_Game GRI; + local TgPawn_SiegeWall SiegeWall; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x348 + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn_SiegeWall', SiegeWall) + { + // End:0x347 + if(SiegeWall.IsAliveAndWell()) + { + // End:0x158 + if(SiegeWall.IsA('TgPawn_SiegeWall_Inner')) + { + // End:0x102 + if(int(SiegeWall.GetTaskForceNumber()) == int(1)) + { + m_TF1InnerWall = SiegeWall; + OpenInnerGates(1, bOpen); + } + else + { + // End:0x155 + if(int(SiegeWall.GetTaskForceNumber()) == int(2)) + { + m_TF2InnerWall = SiegeWall; + OpenInnerGates(2, bOpen); + } + } + // End:0x347 + continue; + } + // End:0x251 + if(SiegeWall.IsA('TgPawn_SiegeWall_Outer')) + { + // End:0x1FB + if(int(SiegeWall.GetTaskForceNumber()) == int(1)) + { + m_TF1OuterWall = SiegeWall; + OpenOuterGates(1, bOpen); + GRI.r_pSiegeWallTF1[0] = SiegeWall; + } + else + { + // End:0x24E + if(int(SiegeWall.GetTaskForceNumber()) == int(2)) + { + m_TF2OuterWall = SiegeWall; + OpenOuterGates(2, bOpen); + } + } + // End:0x347 + continue; + } + // End:0x347 + if(SiegeWall.IsA('TgPawn_SiegeWall_Base')) + { + // End:0x2DF + if(int(SiegeWall.GetTaskForceNumber()) == int(1)) + { + m_TF1BaseObjective = SiegeWall; + GRI.r_pSiegeWallTF1[2] = SiegeWall; + // End:0x347 + continue; + } + // End:0x347 + if(int(SiegeWall.GetTaskForceNumber()) == int(2)) + { + m_TF2BaseObjective = SiegeWall; + GRI.r_pSiegeWallTF2[2] = SiegeWall; + } + } + } + } + GRI.bNetDirty = true; + //return; +} + +function GlobalRespawnTimeUpdate(float fRespawnTime, bool bEnsureRespawnTimeDoesntIncrease) +{ + local TgPlayerController TgPC; + local TgAIController_BehaviorGod TgAI; + local TgPawn TgP; + + // End:0x95 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgP = TgPawn(TgPC.Pawn); + GlobalRespawnTimeUpdateHelper(TgPC, TgP, fRespawnTime, bEnsureRespawnTimeDoesntIncrease); + } + // End:0x12B + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + TgP = TgPawn(TgAI.Pawn); + GlobalRespawnTimeUpdateHelper(TgAI, TgP, fRespawnTime, bEnsureRespawnTimeDoesntIncrease); + } + //return; +} + +function GlobalRespawnTimeUpdateHelper(Controller C, TgPawn TgP, float fRespawnTime, bool bEnsureRespawnTimeDoesntIncrease) +{ + local float fCurrentTimeToSpawn; + + // End:0x147 + if((TgP != none) && TgP.IsGod()) + { + // End:0x147 + if(!TgP.IsAliveAndWell()) + { + fCurrentTimeToSpawn = TgP.GetTimerRate('Revive') - TgP.GetTimerCount('Revive'); + // End:0x147 + if(!bEnsureRespawnTimeDoesntIncrease || fCurrentTimeToSpawn > fRespawnTime) + { + // End:0x11F + if(fRespawnTime > 0.0000000) + { + C.SetTimer(fRespawnTime, false, 'Revive'); + } + else + { + C.SetTimer(0.1000000, false, 'Revive'); + } + } + } + } + //return; +} + +event RespawnAllPlayers(bool bResetLivingPlayers, optional bool bResetDeadPlayers = true, optional bool bResetHealth = true, optional bool bResetDevices = false) +{ + local Controller TheController; + local TgPaladinsController TgPC; + local TgPawn TgP; + local bool bAlive; + local int I; + + // End:0x263 + foreach WorldInfo.AllControllers(Class'Engine.Controller', TheController) + { + TgPC = TgPaladinsController(TheController); + // End:0x262 + if(NotEqual_InterfaceInterface(TgPC, TgPaladinsController(none))) + { + TgP = TgPC.GetTgPawn(); + // End:0x262 + if((TgP != none) && TgP.IsGod()) + { + bAlive = TgP.IsAliveAndWell(); + // End:0x159 + if(bResetLivingPlayers && bAlive) + { + TgPC.LiveRespawn(bResetHealth, bResetDevices); + } + else + { + // End:0x239 + if(bResetDeadPlayers && !bAlive) + { + // End:0x219 + if(bResetDevices) + { + I = 1; + J0x18F: + + // End:0x219 [Loop If] + if(I < 33) + { + // End:0x20B + if(TgP.m_EquippedDevices[I] != none) + { + TgP.m_EquippedDevices[I].EndCooldown(); + } + I++; + // [Loop Continue] + goto J0x18F; + } + } + TgPC.Revive(); + } + } + TgP.KillAllOwnedPets(); + KillAllProjectiles(); + } + } + } + //return; +} + +function ResetAllPlayersNotInSpawnRoom() +{ + ResetPlayersNotInSpawnRoom(true, true); + //return; +} + +function ResetAttackersNotInSpawnRoom() +{ + ResetPlayersNotInSpawnRoom(true, false); + //return; +} + +function ResetDefendersNotInSpawnRoom() +{ + ResetPlayersNotInSpawnRoom(false, true); + //return; +} + +function ResetPlayersNotInSpawnRoom(bool bResetAttackers, bool bResetDefenders) +{ + local TgPawn TgP; + local TgPlayerController TgPC; + local TgAIController_BehaviorGod TgAI; + local int AttackingTaskForceNum; + + // End:0x11 + if(!m_bResetPlayersNotInSpawnRoom) + { + return; + } + // End:0x20 + if(m_bResetPlayersNotInSpawnRoomDisabled) + { + return; + } + AttackingTaskForceNum = -1; + // End:0xBF + if((TgRepInfo_Game(GameReplicationInfo) != none) && TgRepInfo_Game(GameReplicationInfo).r_AttackingTaskForce != none) + { + AttackingTaskForceNum = int(TgRepInfo_Game(GameReplicationInfo).r_AttackingTaskForce.GetTeamNum()); + } + // End:0x262 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + // End:0x261 + if((bResetAttackers && TgPC.GetTaskForceNumber() == AttackingTaskForceNum) || bResetDefenders && TgPC.GetTaskForceNumber() != AttackingTaskForceNum) + { + TgP = TgPawn(TgPC.Pawn); + // End:0x261 + if((TgP != none) && !TgP.IsInItemShop()) + { + // End:0x219 + if(TgP.IsAliveAndWell()) + { + TgPC.LiveRespawn(false, false); + } + else + { + TgPC.Revive(); + } + TgP.KillAllOwnedPets(); + KillAllProjectiles(); + } + } + } + // End:0x406 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + // End:0x405 + if((bResetAttackers && TgAI.GetTaskForceNumber() == AttackingTaskForceNum) || bResetDefenders && TgAI.GetTaskForceNumber() != AttackingTaskForceNum) + { + TgP = TgPawn(TgAI.Pawn); + // End:0x405 + if((TgP != none) && !TgP.IsInItemShop()) + { + // End:0x3BD + if(TgP.IsAliveAndWell()) + { + TgAI.LiveRespawn(false, false); + } + else + { + TgPC.Revive(); + } + TgP.KillAllOwnedPets(); + KillAllProjectiles(); + } + } + } + //return; +} + +function KillAllProjectiles() +{ + local TgRepInfo_Game GRI; + local TgProjectile Proj; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x78 + if(GRI != none) + { + // End:0x77 + foreach GRI.m_Projectiles(Proj) + { + Proj.ShutDown(); + } + } + //return; +} + +function RemoveAllBurnCards() +{ + local TgPlayerController TgPC; + local TgAIController_BehaviorGod TgAI; + local TgPawn TgP; + + // End:0x103 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgP = TgPawn(TgPC.Pawn); + // End:0x102 + if((TgP != none) && TgP.IsGod()) + { + // End:0x102 + if(TgInventoryManager_Player(TgP.InvManager) != none) + { + TgInventoryManager_Player(TgP.InvManager).RemoveBurnCards(); + } + } + } + // End:0x207 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + TgP = TgPawn(TgAI.Pawn); + // End:0x206 + if((TgP != none) && TgP.IsGod()) + { + // End:0x206 + if(TgInventoryManager_Player(TgP.InvManager) != none) + { + TgInventoryManager_Player(TgP.InvManager).RemoveBurnCards(); + } + } + } + //return; +} + +function PlayLanePusherHelpText() +{ + local TgPlayerController TgPC; + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x53 + if((GRI == none) || GRI.r_LanePusher == none) + { + return; + } + // End:0x107 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientRequestHelpText(((TgPC.GetTaskForceNumber() == int(GRI.r_LanePusher.GetTaskForceNumber())) ? 113 : 114)); + } + //return; +} + +event LanePusherReachedOuterWall(TgPawn_LanePusher LanePusher) +{ + //return; +} + +event LanePusherReachedInnerWall(TgPawn_LanePusher LanePusher) +{ + //return; +} + +event LanePusherReachedBaseObjective(TgPawn_LanePusher LanePusher) +{ + //return; +} + +function RevivePlayers(optional TgRepInfo_TaskForce ReviveTF) +{ + local TgPlayerController TgPC; + local TgPawn TgP; + + // End:0x138 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgP = TgPawn(TgPC.Pawn); + // End:0x137 + if((((TgP != none) && TgP.IsGod()) && !TgP.IsAliveAndWell()) && (ReviveTF == none) || int(TgP.GetTaskForceNumber()) == int(ReviveTF.r_nTaskForce)) + { + TgPC.Revive(); + } + } + //return; +} + +function TransitionToNextRound() +{ + // End:0x78 + if(int(m_GameWinState) == int(0)) + { + StartNewObjectiveRound(false); + StartBroadcastTimer(); + // End:0x4A + if(m_bRevivePlayersWhenSiegeEngineDies) + { + RevivePlayers(GetDefendingTaskForce()); + } + ResetScores(); + UpdateAttackingTaskforceForRoundTransition(); + ChangeTimerState(3); + GotoState('GameRunning'); + } + //return; +} + +function UpdateAttackingTaskforceForRoundTransition() +{ + TgRepInfo_Game(GameReplicationInfo).UpdateAttackingTaskforce(none); + //return; +} + +function ResetScores() +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce DefendingTaskforce; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xEF + if(GRI != none) + { + // End:0x88 + if(GRI.r_AttackingTaskForce != none) + { + GRI.r_AttackingTaskForce.r_fSecondaryScore = 0.0000000; + } + DefendingTaskforce = GetDefendingTaskForce(); + // End:0xCF + if(DefendingTaskforce != none) + { + DefendingTaskforce.r_fSecondaryScore = 0.0000000; + } + GRI.r_CapturingTaskForce = none; + } + //return; +} + +function GotoGameRunningState() +{ + // End:0x24 + if(int(m_eTimerState) <= int(2)) + { + GotoState('PreRoundSetup'); + return; + } + super(TgGame).GotoGameRunningState(); + //return; +} + +event ChangeTimerState(TgObject.GameTimerState eTimerState) +{ + local TgRepInfo_Player pPRI; + local TgAIController_BehaviorGodDisconnected TgDPC; + local TgPlayerController TgPC; + local TgObject.GameTimerState OldState; + + OldState = m_eTimerState; + // End:0x30 + if(int(m_eTimerState) == int(eTimerState)) + { + return; + } + super(TgGame_Battle).ChangeTimerState(eTimerState); + // End:0x1B0 + if((int(eTimerState) != int(OldState)) && int(OldState) != int(6)) + { + switch(m_eTimerState) + { + // End:0xA3 + case 1: + CheckMercenaries(); + SpawnBots(); + // End:0x1B0 + break; + // End:0x197 + case 2: + // End:0xFD + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientOnRoundSetupStarted(true); + } + // End:0x193 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGodDisconnected', TgDPC) + { + pPRI = TgRepInfo_Player(TgDPC.PlayerReplicationInfo); + // End:0x192 + if(pPRI != none) + { + pPRI.DrawNewCards(); + } + } + // End:0x1B0 + break; + // End:0x1AD + case 3: + GotoState('GameRunning'); + // End:0x1B0 + break; + // End:0xFFFF + default: + break; + } + } + else + { + //return; + } +} + +function SendClientRoundObjectivesCompleted() +{ + local TgPlayerController TgPC; + + // End:0x73 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientOnRoundObjectivesCompleted(); + TgPC.ServerSkipKillCam(); + } + //return; +} + +function SendClientRoundEnded() +{ + local TgPlayerController TgPC; + + // End:0x54 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientOnRoundEnded(); + } + //return; +} + +function AutoMountPlayersOnTaskForce(optional int nTaskForceNum = -1, optional bool bInvertTaskForce = false) +{ + local TgPawn TgP; + local TgPlayerController TgPC; + local TgAIController_BehaviorGod TgAI; + local TgDevice_Mount MountDevice; + + // End:0x191 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + // End:0x190 + if(((nTaskForceNum < 0) || !bInvertTaskForce && TgPC.GetTaskForceNumber() == nTaskForceNum) || bInvertTaskForce && TgPC.GetTaskForceNumber() != nTaskForceNum) + { + TgP = TgPawn(TgPC.Pawn); + // End:0x190 + if(TgP != none) + { + MountDevice = TgDevice_Mount(TgP.GetDeviceByEqPoint(23)); + // End:0x190 + if(MountDevice != none) + { + MountDevice.SetAllowMountServerTimer(); + MountDevice.ClientStartMount(); + } + } + } + } + // End:0x315 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + // End:0x314 + if(((nTaskForceNum < 0) || !bInvertTaskForce && TgAI.GetTaskForceNumber() == nTaskForceNum) || bInvertTaskForce && TgAI.GetTaskForceNumber() != nTaskForceNum) + { + TgP = TgPawn(TgAI.Pawn); + // End:0x314 + if(TgP != none) + { + MountDevice = TgDevice_Mount(TgP.GetDeviceByEqPoint(23)); + // End:0x314 + if(MountDevice != none) + { + MountDevice.SetAllowMountServerTimer(); + MountDevice.ClientStartMount(); + } + } + } + } + //return; +} + +function AutoMountAllPlayers() +{ + ResetPlayersNotInSpawnRoom(true, true); + AutoMountPlayersOnTaskForce(); + //return; +} + +function AutoMountAttackers() +{ + local TgRepInfo_Game GRI; + + ResetPlayersNotInSpawnRoom(true, false); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x9E + if((GRI != none) && GRI.r_AttackingTaskForce != none) + { + AutoMountPlayersOnTaskForce(int(GRI.r_AttackingTaskForce.GetTeamNum())); + } + //return; +} + +function AutoMountDefenders() +{ + local TgRepInfo_Game GRI; + + ResetPlayersNotInSpawnRoom(false, true); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x9E + if((GRI != none) && GRI.r_AttackingTaskForce != none) + { + AutoMountPlayersOnTaskForce(int(GRI.r_AttackingTaskForce.GetTeamNum()), true); + } + //return; +} + +function StartNewObjectiveRound(bool bFirstRound) +{ + local TgRepInfo_Game GRI; + local TgPlayerController TgPC; + + GRI = TgRepInfo_Game(GameReplicationInfo); + SetTimer(GetPickNextObjectiveTime(), false, 'PickNextObjective'); + SetSpawnGateTimers(bFirstRound); + SetResetEscapedPlayersTimers(bFirstRound); + // End:0x7D + if(m_bAutoMountAtRoundBegin) + { + SetAutoMountTimers(bFirstRound); + } + GRI.m_fPurchaseTimer = 60.0000000; + GRI.bNetDirty = true; + // End:0x117 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientOnRoundSetupStarted(false); + } + GRI.r_bIsFirstRound = bFirstRound; + // End:0x173 + if(m_fRoundLimitDuration > float(0)) + { + s_fRoundLimitElapsed = 0.0000000; + SendRoundLimitTimerNotify(0, 0.0000000); + } + //return; +} + +function SetSpawnGateTimers(bool bFirstRound) +{ + local float SpawnGateOpenTime; + + SpawnGateOpenTime = GetSpawnGateOpenTime(); + SetTimer(SpawnGateOpenTime, false, 'OpenSpawnGates'); + //return; +} + +function SetAutoMountTimers(bool bFirstRound) +{ + local float SpawnGateOpenTime; + + SpawnGateOpenTime = GetSpawnGateOpenTime(); + // End:0x4F + if((SpawnGateOpenTime - 2.0000000) > 0.0000000) + { + SetTimer(SpawnGateOpenTime - 2.0000000, false, 'AutoMountAllPlayers'); + } + else + { + AutoMountAllPlayers(); + } + //return; +} + +function SetResetEscapedPlayersTimers(bool bFirstRound) +{ + local float SpawnGateOpenTime; + + SpawnGateOpenTime = GetSpawnGateOpenTime(); + // End:0x4F + if((SpawnGateOpenTime - 3.0000000) > 0.0000000) + { + SetTimer(SpawnGateOpenTime - 3.0000000, false, 'ResetAllPlayersNotInSpawnRoom'); + } + else + { + ResetAllPlayersNotInSpawnRoom(); + } + //return; +} + +function StartGameMode() +{ + StartNewObjectiveRound(true); + StartBroadcastTimer(); + SetTimer(m_fGamePauseDelay, false, 'PauseDelay'); + //return; +} + +event bool IsInGrimReaperMode() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + return ((GRI != none) && int(GRI.r_GameRespawnRule) == int(2)) && !IsTimerActive('PickNextObjective'); + //return ReturnValue; +} + +final function TgRepInfo_TaskForce GetAttackingTaskForce() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + return ((GRI != none) ? GRI.super(TgGame_PaladinsExtended).GetAttackingTaskForce() : none); + //return ReturnValue; +} + +final function TgRepInfo_TaskForce GetDefendingTaskForce() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + return ((GRI != none) ? GRI.super(TgGame_PaladinsExtended).GetDefendingTaskForce() : none); + //return ReturnValue; +} + +function OnRoundEnded() +{ + CleanupTicketsForRound(); + // End:0x30 + if(m_fRoundLimitDuration > float(0)) + { + SendRoundLimitTimerNotify(0, m_fRoundLimitDuration); + } + //return; +} + +function CleanupTicketsForRound() +{ + // End:0x47 + if(!m_bTicketsPersist) + { + SetTickets(1, m_fWinningTickets); + SetTickets(2, m_fWinningTickets); + m_fLastObjectiveRepickTickets = 0.0000000; + } + //return; +} + +function ResetGameMode() +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce TF1, TF2; + local TgChaosCapturePoint capturePoint; + local TgPawn_LanePusher LanePusher; + + GRI = TgRepInfo_Game(GameReplicationInfo); + TF1 = GRI.GetTaskForce(1); + TF2 = GRI.GetTaskForce(2); + TF1.r_fSecondaryScore = 0.0000000; + TF2.r_fSecondaryScore = 0.0000000; + GRI.r_CapturingTaskForce = none; + // End:0x18E + foreach WorldInfo.DynamicActors(Class'TgGame.TgChaosCapturePoint', capturePoint) + { + capturePoint.SetStatus(0); + capturePoint.r_nDefenderTaskForceIndex = 0; + capturePoint.r_nControllingTaskForceIndex = 0; + capturePoint.r_nContestingTaskForceIndex = 0; + } + // End:0x1E5 + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn_LanePusher', LanePusher) + { + LanePusher.Suicide(); + } + GRI.UpdateAttackingTaskforce(none); + GRI.r_nTotalObjectiveTime = 0; + GRI.r_nRemainingObjectiveTime = 0; + ClearTimer('PickNextObjective'); + ClearTimer('BroadcastTimer'); + StartGameMode(); + GotoState('GameRunning'); + //return; +} + +function UpdateObjectiveTimer() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x2D + if(GRI == none) + { + return; + } + // End:0x88 + if(GRI.r_nTotalObjectiveTime <= 0) + { + GRI.r_nRemainingObjectiveTime = 0; + ClearTimer('UpdateObjectiveTimer'); + } + else + { + GRI.r_nRemainingObjectiveTime = Max(GRI.r_nRemainingObjectiveTime - 1, 0); + } + //return; +} + +function UpdateTgPawnMetaGameState(TgPawn CurPawn, optional TgPawn.EMetaGameState NewState = 0) +{ + local TgRepInfo_Game GRI; + local int TaskForceNumber; + local TgObjective Objective; + local int NumActiveObjectives; + + // End:0x45 + if(int(NewState) != int(0)) + { + CurPawn.UpdateMetaGameState(NewState); + } + else + { + NumActiveObjectives = 0; + // End:0xDE + foreach WorldInfo.DynamicActors(Class'TgGame.TgObjective', Objective) + { + // End:0xDD + if((int(Objective.r_eStatus) == int(2)) || int(Objective.r_eStatus) == int(1)) + { + NumActiveObjectives++; + } + } + // End:0x111 + if(NumActiveObjectives > 0) + { + CurPawn.UpdateMetaGameState(2); + return; + } + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x207 + if(GRI.r_LanePusher != none) + { + TaskForceNumber = int(CurPawn.GetTaskForceNumber()); + // End:0x1E3 + if(TaskForceNumber == int(GRI.r_AttackingTaskForce.r_nTaskForce)) + { + CurPawn.UpdateMetaGameState(3); + } + else + { + CurPawn.UpdateMetaGameState(4); + } + } + else + { + CurPawn.UpdateMetaGameState(1); + } + } + //return; +} + +function UpdateAllPawnsMetaGameState(optional TgPawn.EMetaGameState NewState = 0) +{ + local TgAIController_Behavior TgAIC; + local TgObjective Objective; + local int NumActiveObjectives, NumFoundControllers; + local TgRepInfo_Game GRI; + + // End:0x8D + if(int(NewState) != int(0)) + { + // End:0x89 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_Behavior', TgAIC) + { + UpdateTgPawnMetaGameState(TgPawn(TgAIC.Pawn), NewState); + } + } + else + { + NumActiveObjectives = 0; + // End:0xFB + foreach WorldInfo.DynamicActors(Class'TgGame.TgObjective', Objective) + { + // End:0xFA + if(int(Objective.r_eStatus) == int(2)) + { + NumActiveObjectives++; + } + } + // End:0x177 + if(NumActiveObjectives > 0) + { + // End:0x173 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_Behavior', TgAIC) + { + UpdateTgPawnMetaGameState(TgPawn(TgAIC.Pawn), 2); + } + } + else + { + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x223 + if(GRI.r_LanePusher == none) + { + // End:0x21F + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_Behavior', TgAIC) + { + UpdateTgPawnMetaGameState(TgPawn(TgAIC.Pawn), 1); + } + } + else + { + // End:0x292 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_Behavior', TgAIC) + { + UpdateTgPawnMetaGameState(TgPawn(TgAIC.Pawn), NewState); + } + } + } + } + NumFoundControllers = 0; + // End:0x2DE + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_Behavior', TgAIC) + { + NumFoundControllers++; + } + // End:0x2EE + if(NumFoundControllers == 0) + { + } + //return; +} + +function bool KillLanePusherWhenGateIsDestroyed() +{ + return m_bKillLanePusherOnWallDestroyed; + //return ReturnValue; +} + +function StartFogConverging() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + m_LastActiveCapturePoint.SetFogActive(true); + m_bConvergeCompletely = false; + SetTimer(GRI.r_fFogConvergeInterval, true, 'ConvergeFog'); + //return; +} + +function ResumeConvergeCompletely() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + SetTimer(GRI.r_fFogConvergeInterval, true, 'ConvergeFog'); + //return; +} + +function ConvergeFog() +{ + local TgRepInfo_Game GRI; + local TgPawn TgP; + local TgDeviceFire FireMode; + local ImpactInfo Impact; + local int I; + local TgDeployable TgD; + local float FogTolerance; + local TgChaosCapturePoint_ParticleStorm CapPoint; + + CapPoint = TgChaosCapturePoint_ParticleStorm(m_LastActiveCapturePoint); + GRI = TgRepInfo_Game(GameReplicationInfo); + FireMode = ConvergeDevice.GetDeviceFire(0); + // End:0x84 + if((GRI == none) || FireMode == none) + { + return; + } + // End:0x250 + if(!IsTimerActive('ResumeConvergeCompletely')) + { + // End:0x131 + if(CapPoint != none) + { + GRI.r_fConvergeDistance = float(Max(int(((m_bConvergeCompletely) ? 0.0000000 : m_fConvergeSafeDistance)), int(GRI.r_fConvergeDistance - CapPoint.m_fFogConvergeSpeed))); + } + else + { + GRI.r_fConvergeDistance = float(Max(int(((m_bConvergeCompletely) ? 0.0000000 : m_fConvergeSafeDistance)), int(GRI.r_fConvergeDistance - m_fConvergeRate))); + } + // End:0x1E3 + if(!GRI.r_bFogConverging) + { + GRI.r_bFogConverging = true; + } + // End:0x250 + if((GRI.r_fConvergeDistance <= m_fConvergeSafeDistance) && !m_bConvergeCompletely) + { + // End:0x250 + if(m_bConvergeCompletelyAfterDelay) + { + m_bConvergeCompletely = true; + SetTimer(m_fFogCompleteConvergeDelay, false, 'ResumeConvergeCompletely'); + } + } + } + GRI.bNetDirty = true; + FogTolerance = 0.0000000; + // End:0x2C2 + if(!m_bConvergeCompletely) + { + FogTolerance = m_fConvergeRate * GRI.r_fFogConvergeInterval; + } + // End:0x541 + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn', TgP) + { + // End:0x540 + if((((TgP != none) && FireMode.IsValidTarget(TgP)) && VSizeSq(m_LastActiveCapturePoint.Location - TgP.Location) > ((GRI.r_fConvergeDistance + FogTolerance) * (GRI.r_fConvergeDistance + FogTolerance))) && ConvergeDevice != none) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = FireMode; + Impact.HitActor = TgP; + Impact.HitLocation = TgP.Location; + Impact.HitNormal = vect(0.0000000, 0.0000000, 0.0000000); + Impact.RayDir = vect(0.0000000, 0.0000000, 0.0000000); + FireMode.ApplyHit(Impact, TgP); + TgP.EnterCombat(TgP, TgP); + } + } + I = 0; + J0x54D: + + // End:0x7D0 [Loop If] + if(I < GRI.m_Deployables.Length) + { + TgD = GRI.m_Deployables[I]; + // End:0x7C2 + if((((TgD != none) && FireMode.IsValidTarget(TgD)) && VSizeSq(m_LastActiveCapturePoint.Location - TgD.Location) > ((GRI.r_fConvergeDistance + FogTolerance) * (GRI.r_fConvergeDistance + FogTolerance))) && ConvergeDevice != none) + { + Impact.bDirectHit = true; + Impact.DeviceModeReference = FireMode; + Impact.HitActor = TgD; + Impact.HitLocation = TgD.Location; + Impact.HitNormal = vect(0.0000000, 0.0000000, 0.0000000); + Impact.RayDir = vect(0.0000000, 0.0000000, 0.0000000); + FireMode.ApplyHit(Impact, TgD); + } + I++; + // [Loop Continue] + goto J0x54D; + } + //return; +} + +simulated function float GetTotalSplineDist(SplineActor Spline) +{ + local float totalDist; + local editinline SplineComponent SplineComp; + + // End:0x3C + if((Spline == none) || Spline.Connections.Length < 1) + { + return 0.0000000; + } + totalDist = 0.0000000; + SplineComp = Spline.Connections[0].SplineComponent; + J0x88: + + // End:0x177 [Loop If] + if(SplineComp != none) + { + totalDist += SplineComp.GetSplineLength(); + Spline = Spline.Connections[0].ConnectTo; + // End:0x137 + if((Spline == none) || Spline.Connections.Length < 1) + { + // [Explicit Break] + goto J0x177; + } + SplineComp = Spline.Connections[0].SplineComponent; + // [Loop Continue] + goto J0x88; + } + J0x177: + + return totalDist; + //return ReturnValue; +} + +function ScorePayload() +{ + local TgPawn TgP; + local TgRepInfo_Player PRI; + local TgRepInfo_Game GRI; + local TgPawn_SiegeEngine_Payload Pusher; + local bool bContested; + + GRI = TgRepInfo_Game(GameReplicationInfo); + Pusher = ((GRI != none) ? TgPawn_SiegeEngine_Payload(GRI.r_LanePusher) : none); + // End:0x184 + if(Pusher != none) + { + bContested = Pusher.IsContested(); + // End:0x183 + foreach Pusher.m_VisiblePlayers(TgP) + { + PRI = TgP.GetPRI(); + // End:0x182 + if((PRI != none) && !PRI.IsBot()) + { + // End:0x182 + if(!Pusher.IsEnemy(PRI) || bContested) + { + ScorePayloadHold(TgP, ((bContested) ? 1 : 0)); + } + } + } + } + //return; +} + +function InitGameReplicationInfo() +{ + local TgRepInfo_Game GRI; + + super(TgGame).InitGameReplicationInfo(); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x85 + if(GRI != none) + { + GRI.r_fSpeedScale = m_fSpeedScale; + GRI.SetGameMode(m_DefaultGameMode); + } + //return; +} + +function SetLanePusherSpeedScale(float fNewSpeedScale) +{ + local TgRepInfo_Game GRI; + + m_fSpeedScale = fNewSpeedScale; + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x66 + if(GRI != none) + { + GRI.r_fSpeedScale = m_fSpeedScale; + } + //return; +} + +function SetTickets(int nTaskForce, float fNumTickets) +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce Taskforce; + + switch(nTaskForce) + { + // End:0xCF + case 1: + m_fTF1Tickets = fNumTickets; + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0xCC + if(GRI != none) + { + Taskforce = GRI.GetTaskForce(1); + // End:0xCC + if(Taskforce != none) + { + Taskforce.r_fTickets = m_fTF1Tickets; + } + } + // End:0x190 + break; + // End:0x18D + case 2: + m_fTF2Tickets = fNumTickets; + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x18A + if(GRI != none) + { + Taskforce = GRI.GetTaskForce(2); + // End:0x18A + if(Taskforce != none) + { + Taskforce.r_fTickets = m_fTF2Tickets; + } + } + // End:0x190 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +function GainTickets(int nTaskForce, float fNumTickets, TgGame_PaladinsExtended.EVictoryType VictoryType) +{ + local bool bReachedTicketLimit; + local TgChaosCapturePoint capturePoint; + local int gainedTF1Tickets, gainedTF2Tickets; + + // End:0x15 + if(m_fWinningTickets <= 0.0000000) + { + return; + } + bReachedTicketLimit = false; + switch(nTaskForce) + { + // End:0x93 + case 1: + SetTickets(1, m_fTF1Tickets - fNumTickets); + // End:0x90 + if(m_fTF1Tickets <= float(0)) + { + ReachTicketLimit(nTaskForce, VictoryType); + bReachedTicketLimit = true; + } + // End:0xF7 + break; + // End:0xF4 + case 2: + SetTickets(2, m_fTF2Tickets - fNumTickets); + // End:0xF1 + if(m_fTF2Tickets <= float(0)) + { + ReachTicketLimit(nTaskForce, VictoryType); + bReachedTicketLimit = true; + } + // End:0xF7 + break; + // End:0xFFFF + default: + break; + } + // End:0x2A6 + if(!bReachedTicketLimit) + { + gainedTF1Tickets = int(m_fWinningTickets - m_fTF1Tickets); + gainedTF2Tickets = int(m_fWinningTickets - m_fTF2Tickets); + // End:0x2A6 + if((m_fObjectiveRepickTickets > float(0)) && (float(gainedTF1Tickets + gainedTF2Tickets) - m_fLastObjectiveRepickTickets) >= m_fObjectiveRepickTickets) + { + m_fLastObjectiveRepickTickets = float(gainedTF1Tickets + gainedTF2Tickets) - (float(gainedTF1Tickets + gainedTF2Tickets) % m_fObjectiveRepickTickets); + // End:0x27E + foreach WorldInfo.DynamicActors(Class'TgGame.TgChaosCapturePoint', capturePoint) + { + capturePoint.SetStatus(0); + capturePoint.r_nDefenderTaskForceIndex = 0; + capturePoint.r_nControllingTaskForceIndex = 0; + capturePoint.r_nContestingTaskForceIndex = 0; + } + SetTimer(GetPickNextObjectiveTime(), false, 'PickNextObjective'); + SendClientsRequestHelpText(1801); + } + } + //return; +} + +function ReachTicketLimit(int nTaskForce, TgGame_PaladinsExtended.EVictoryType VictoryType) +{ + local TgRepInfo_Game GRI; + + // End:0x2D + if(m_nPointsForReachingTicketMax > 0) + { + GainPoints(nTaskForce, m_nPointsForReachingTicketMax, 7); + } + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x82 + if(GRI != none) + { + GRI.r_nLastRoundWinner = byte(nTaskForce); + } + OnRoundEnded(); + //return; +} + +function OnPawnDied(TgPawn Victim) +{ + local TgRepInfo_Game GRI; + local int killerTaskForce; + + super.OnPawnDied(Victim); + // End:0xCA + if(m_fTicketsForKill > float(0)) + { + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xCA + if((GRI != none) && Victim.IsGod()) + { + killerTaskForce = ((int(Victim.GetTaskForceNumber()) == int(1)) ? 2 : 1); + GainTickets(killerTaskForce, m_fTicketsForKill, 6); + } + } + //return; +} + +function UpdateOccupationStatus(TgChaosCapturePoint capturePoint, int nNumTF1, int nNumTF2) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x122 + if((GRI == none) || GRI.r_bSpawnGatesOpen) + { + // End:0x122 + if(m_fTicketsPerCaptureTick > 0.0000000) + { + // End:0xC3 + if((nNumTF1 > 0) && !nNumTF2 > 0) + { + GainTickets(1, m_fTicketsPerCaptureTick + ((float(nNumTF1 - 1) * m_fTicketsPerCaptureTick) * m_fTicketsBonusPerMultiCapture), 1); + } + else + { + // End:0x122 + if((nNumTF2 > 0) && !nNumTF1 > 0) + { + GainTickets(2, m_fTicketsPerCaptureTick + ((float(nNumTF2 - 1) * m_fTicketsPerCaptureTick) * m_fTicketsBonusPerMultiCapture), 1); + } + } + } + } + //return; +} + +function bool AllowPausing(optional PlayerController PC) +{ + // End:0x45 + if(super(TgGame).AllowPausing(PC)) + { + // End:0x43 + if(IsTimerActive('PauseDelay')) + { + NotifyPauseDelay(PC); + return false; + } + return true; + } + return false; + //return ReturnValue; +} + +function PauseDelay() +{ + //return; +} + +// Export UTgGame_PaladinsExtended::execNotifyPauseDelay(FFrame&, void* const) +native function NotifyPauseDelay(PlayerController PC); + +state AttackDefend +{ + ignores UpdateObjectiveStates; + + event BeginState(name PreviousStateName) + { + local TgRepInfo_Game GRI; + local TgObjective Objective; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x43 + if((GRI == none) || int(m_GameWinState) != int(0)) + { + return; + } + OpenAllAliveGates(false); + // End:0x8E + if(int(GRI.r_GameMode) == int(0)) + { + // End:0x8E + if(m_bSpawnLanePusherWhenPointCaptured) + { + SpawnLanePusher(); + } + } + // End:0x108 + if(int(GRI.r_GameMode) == int(0)) + { + // End:0x107 + foreach WorldInfo.DynamicActors(Class'TgGame.TgObjective', Objective) + { + Objective.SetStatus(0); + } + } + // End:0x13F + if(int(GRI.r_GameRespawnRule) == int(2)) + { + RespawnAllPlayers(false); + } + UpdateAllPawnsMetaGameState(); + //return; + } + + function float GetPickNextObjectiveTime() + { + return m_fObjectivePickTime; + //return ReturnValue; + } + + function float GetSpawnGateOpenTime() + { + // End:0x1E + if(m_fSpawnGateOpenTime <= 0.0000000) + { + return GetPickNextObjectiveTime(); + } + return m_fSpawnGateOpenTime; + //return ReturnValue; + } + + function bool DestroyNextTower() + { + local TgRepInfo_Game GRI; + local TgPawn_Tower_FA Tower; + local array InnerTowers; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x2D + if(GRI == none) + { + return false; + } + // End:0x170 + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn_Tower_FA', Tower) + { + // End:0x16F + if((int(Tower.GetTaskForceNumber()) != int(GRI.r_AttackingTaskForce.r_nTaskForce)) && Tower.IsAliveAndWell()) + { + // End:0x130 + if(int(Tower.m_TowerType) == int(2)) + { + Tower.Suicide(); + return true; + // End:0x16F + continue; + } + // End:0x16F + if(int(Tower.m_TowerType) == int(1)) + { + InnerTowers.AddItem(Tower); + } + } + } + // End:0x1A4 + if(InnerTowers.Length > 0) + { + InnerTowers[0].Suicide(); + return true; + } + return false; + //return ReturnValue; + } + + function TgChaosCapturePoint GetCapturePointToSpawnSiegeEngineAt() + { + local TgChaosCapturePoint capturePoint; + local array CapturePoints; + + // End:0x1C + if(m_CapturedPoint != none) + { + return m_CapturedPoint; + } + else + { + // End:0x61 + foreach WorldInfo.DynamicActors(Class'TgGame.TgChaosCapturePoint', capturePoint) + { + CapturePoints.AddItem(capturePoint); + } + return CapturePoints[Rand(CapturePoints.Length)]; + } + //return ReturnValue; + } + + function SpawnLanePusher() + { + local TgRepInfo_Game GRI; + local TgChaosCapturePoint CapturePointToSpawn; + local TgSplineActor StartSpline; + local array Factories; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x69 + if(((GRI == none) || GRI.r_AttackingTaskForce == none) || int(m_GameWinState) != int(0)) + { + return; + } + CapturePointToSpawn = GetCapturePointToSpawnSiegeEngineAt(); + // End:0x347 + if(CapturePointToSpawn != none) + { + Factories = ((int(GRI.r_AttackingTaskForce.GetTeamNum()) == int(2)) ? CapturePointToSpawn.m_Taskforce2Factories : CapturePointToSpawn.m_Taskforce1Factories); + // End:0x347 + if(Factories[0] != none) + { + // End:0x15C + if(m_bOverrideSpawnTableID) + { + Factories[0].nSpawnTableId = GetNextSpawnTableId(); + } + Factories[0].ResetQueue(); + GRI.r_LanePusher = TgPawn_LanePusher(Factories[0].UseSpawnTable()); + // End:0x2C8 + if(GRI.r_LanePusher != none) + { + StartSpline = ((int(GRI.r_AttackingTaskForce.GetTeamNum()) == int(2)) ? CapturePointToSpawn.m_Taskforce2PathStart : CapturePointToSpawn.m_Taskforce1PathStart); + // End:0x2BE + if(StartSpline != none) + { + GRI.r_LanePusher.SetSpline(StartSpline, true); + } + PlayLanePusherHelpText(); + } + SendLanePusherSpawnAlert(int(GRI.r_AttackingTaskForce.r_nTaskForce)); + SendLanePusherUpdateAlert(true, int(GRI.r_AttackingTaskForce.r_nTaskForce)); + } + } + //return; + } + + function UpdateAttackTimeRemaining() + { + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x43 + if((GRI == none) || int(m_GameWinState) != int(0)) + { + return; + } + GRI.r_nChaosRemainingAttackDefendTime = Max(GRI.r_nChaosRemainingAttackDefendTime - 1, 0); + //return; + } + + function NavigationPoint FindPlayerStart(Controller Player, optional byte InTeam, optional string IncomingName) + { + local PlayerStart Start; + + Start = FindPlayerStartForCapturePoint(m_CapturedPoint, Player); + // End:0x42 + if(Start != none) + { + return Start; + } + return super(TgGame).FindPlayerStart(Player, InTeam, IncomingName); + //return ReturnValue; + } + + event bool IsInGrimReaperMode() + { + return false; + //return ReturnValue; + } + + function EndAttackDefend() + { + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x2D + if(GRI == none) + { + return; + } + GRI.r_nRemainingObjectiveTime = 0; + GRI.r_nTotalObjectiveTime = 0; + ClearTimer('UpdateObjectiveTimer'); + TransitionToNextRound(); + //return; + } + + simulated event SendLanePusherUpdateAlert(bool isAlive, int tf) + { + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + global.SendLanePusherUpdateAlert(isAlive, tf); + // End:0x8E + if((!isAlive && GRI != none) && int(GRI.r_GameMode) == int(0)) + { + EndAttackDefend(); + } + //return; + } + stop; +} + +state PreRoundSetup +{ + function BeginState(name PreviousStateName) + { + super(Object).BeginState(PreviousStateName); + StartBroadcastTimer(); + ResetScores(); + TgRepInfo_Game(GameReplicationInfo).UpdateAttackingTaskforce(none); + PreFillCapturePointQueue(); + // End:0xAF + if(m_CapturePointQueue.Length > 0) + { + // End:0xAF + if((m_CapturePointQueue[0] != none) && !m_bActivateAllCapturePoints) + { + m_CapturePointQueue[0].SetStatus(2); + } + } + RespawnAllPlayers(true, true, true, true); + //return; + } + + function EndState(name NextStateName) + { + super(Object).EndState(NextStateName); + // End:0x34 + if(NextStateName == 'GameRunning') + { + StartGameMode(); + } + //return; + } + stop; +} + +state GameRunning +{ + function BeginState(name PreviousStateName) + { + m_fOvertimeActiveTime = 0.0000000; + OpenAllAliveGates(false); + UpdateAllPawnsMetaGameState(1); + super.BeginState(PreviousStateName); + //return; + } + + function PointCaptured(int nTaskForce, optional bool bSuppressPointsForCapture) + { + local TgRepInfo_Game GRI; + + m_fOvertimeActiveTime = 0.0000000; + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x5B + if(GRI != none) + { + GRI.r_CapturingTaskForce = none; + } + // End:0xAE + if(m_bEndRoundWhenPointCaptured) + { + // End:0xA1 + if(GRI != none) + { + GRI.r_nLastRoundWinner = byte(nTaskForce); + } + OnRoundEnded(); + } + else + { + m_nAttackingTaskforce = nTaskForce; + GotoState(m_AttackDefendState); + } + // End:0xFE + if(m_fTicketsPerPointCapture > float(0)) + { + GainTickets(nTaskForce, m_fTicketsPerPointCapture, 1); + } + //return; + } + stop; +} + +defaultproperties +{ + m_nWinningScore=1 + m_bScoringEnabled=true + m_bKillLanePusherOnWallDestroyed=true + m_bConvergeCompletelyAfterDelay=true + m_bActivateSpawnGatesAtStart=true + m_bRevivePlayersWhenSiegeEngineDies=true + m_bStasisTimerOn=true + m_bCapturePointContestDurationEnabled=true + m_bSpawnLanePusherWhenPointCaptured=true + m_bCaptureSpawnAlerts=true + m_nPointsForReachingTicketMax=1 + m_nPointsForReachingRoundTimeLimit=1 + m_fSecondaryGoalScore=100.0000000 + m_fSecondaryScoreAmount=2.0000000 + m_fObjectivePickTime=20.0000000 + m_fSetupObjectivePickTime=40.0000000 + m_fObjectiveActivationTime=1.0000000 + m_nRegLanePusherHPScaling=4840 + m_nGuardianHPScaling=6200 + m_nOuterGateHPScaling=1620 + m_nInnerGateHPScaling=3240 + m_nBaseObjectiveHPScaling=4860 + m_nForcedObjectiveIndex=-1 + m_nCountdown=30 + m_fSpeedScale=1.0000000 + m_fRespawnTimeCap=30.0000000 + m_fNoSiegeEngineRespawnModification=-5.0000000 + m_AttackDefendState="AttackDefend" + m_fConvergeStartDistance=13000.0000000 + m_fConvergeRate=208.0000000 + m_fStartConvergeTime=10.0000000 + m_fConvergeSafeDistance=400.0000000 + m_fAutoPushForwardDelay=2.0000000 + m_fAutoPushForwardSpeedScale=0.5000000 + m_nCreditsForHoldingObjective=2 + m_nCreditsBonusPerContested=2 + m_nCreditsForHoldingPayload=2 + m_fFogCompleteConvergeDelay=60.0000000 + m_fPointContestDuration=6.0000000 + m_fPointOvertimeDuration=6.0000000 + m_fPointOvertimeDrainPercPerSec=3.2000000 + m_fPointClaimDuration=6.0000000 + s_nCurrentActivePointIndex=-1 + m_fFlankerSoloKillRewardDistance=100.0000000 + m_fDamageRoleMultiplier=2.0000000 + m_fFlankRoleMultiplier=1.3000000 + m_fFrontLineRoleMultiplier=1.0000000 + m_fSupportRoleMultiplier=2.0000000 + m_fGamePauseDelay=10.0000000 + m_bAutoMountOnRespawn=true + m_fGameTypeReminderTime=60.0000000 + m_bRespawnInhibitors=false + m_nWinBonusXp=15000 + m_nWinPlayerXp=2750 + m_nLosePlayerXp=2750 + m_fBaseTokens=4.0000000 + m_fFirstBloodGoldReward=100.0000000 + m_fBasePlayerAssistXpRewardMultipler=1.0000000 + m_fBaseNPCAssistXpRewardMultipler=2.0000000 + m_GameType=TG_GAME_TYPE.TGT_CHAOS + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Assault.uc b/exported/TgGame/Classes/TgGame_Paladins_Assault.uc new file mode 100755 index 00000000..5f22311f --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Assault.uc @@ -0,0 +1,346 @@ +class TgGame_Paladins_Assault extends TgGame_Paladins_Siege + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +var config float m_fAttackDuration; +var const config float m_fAttackPhaseOvertimeDuration; +var config float m_fAttackCaptureRateMultiplier; +var TgChaosCapturePoint m_AttackPoint; +var bool m_bInAttackPhaseOvertime; +var float m_fTakeoverSecondPhaseInstructionDelay; + +// Export UTgGame_Paladins_Assault::execSendAssaultPointCapturedAlert(FFrame&, void* const) +native function SendAssaultPointCapturedAlert(int Taskforce); + +function ActivateTaskforceSpecificCapturePoint(int TaskForceId) +{ + local TgChaosCapturePoint capturePoint; + + // End:0xC7 + foreach WorldInfo.DynamicActors(Class'TgGame.TgChaosCapturePoint', capturePoint) + { + // End:0xC6 + if((capturePoint.m_nTaskForce == TaskForceId) && capturePoint.m_nLaneNumber == m_CapturedPoint.m_nLaneNumber) + { + m_AttackPoint = capturePoint; + SetCapturePointActive(capturePoint); + // End:0xC7 + break; + } + } + //return; +} + +function float GetPointCaptureScoreMultiplier(int nTaskForce) +{ + local float CaptureRateModifier; + local TgRepInfo_Game GRI; + + CaptureRateModifier = super.GetPointCaptureScoreMultiplier(nTaskForce); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xC8 + if(((GRI != none) && GRI.r_AttackingTaskForce != none) && int(GRI.r_AttackingTaskForce.GetTeamNum()) == nTaskForce) + { + CaptureRateModifier *= m_fAttackCaptureRateMultiplier; + } + return CaptureRateModifier; + //return ReturnValue; +} + +function NotifyPlayersOfPointCapture() +{ + local TgPlayerController TgPC; + local TgRepInfo_Game GRI; + + // End:0x108 + if(!IsInState('AttackDefend')) + { + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x108 + if(GRI != none) + { + // End:0xF0 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientPlayPointCapturedEffects(m_CapturedPoint, TgPC.GetTaskForceNumber() == int(GRI.r_AttackingTaskForce.r_nTaskForce)); + } + SetTimer(m_fTakeoverSecondPhaseInstructionDelay, false, 'InstructClientsOnTakeoverSecondPhase'); + } + } + //return; +} + +function InstructClientsOnTakeoverSecondPhase() +{ + local TgPlayerController TgPC; + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xD6 + if(GRI != none) + { + // End:0xD5 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientPlayTakeoverSecondPhaseInstructions(TgPC.GetTaskForceNumber() == int(GRI.r_AttackingTaskForce.r_nTaskForce)); + } + } + //return; +} + +function bool ShouldHandlePointCaptureBacksliding() +{ + return IsInState('AttackDefend'); + //return ReturnValue; +} + +function TgChaosCapturePoint GetCurrentCapturePoint() +{ + // End:0x5C + if((m_LastActiveCapturePoint != none) && m_LastActiveCapturePoint == m_AttackPoint) + { + // End:0x45 + if(IsInState('AttackDefend')) + { + return m_AttackPoint; + } + else + { + return m_CapturePointQueue[s_nCurrentCapturePointQueueIndex]; + } + } + else + { + return super.GetCurrentCapturePoint(); + } + //return ReturnValue; +} + +function CaptureAndPayloadRoundEnded() +{ + super.CaptureAndPayloadRoundEnded(); + // End:0x45 + if(m_AttackPoint != none) + { + m_AttackPoint.SetStatus(0); + m_AttackPoint = none; + } + m_bEndRoundWhenPointCaptured = false; + //return; +} + +function bool AttackersOnPoint() +{ + // End:0x3C + if((m_AttackPoint == none) || int(m_AttackPoint.r_eStatus) != int(1)) + { + return false; + } + // End:0x70 + if(m_nAttackingTaskforce == 1) + { + return m_AttackPoint.m_nNumTF1OnPoint > 0; + } + else + { + return m_AttackPoint.m_nNumTF2OnPoint > 0; + } + //return ReturnValue; +} + +state GameRunning +{ + function PointCaptured(int nTaskForce, optional bool bSuppressPointsForCapture) + { + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce TF1, TF2; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xF5 + if(GRI != none) + { + GRI.r_nLastRoundWinner = byte(nTaskForce); + TF1 = GRI.GetTaskForce(1); + TF2 = GRI.GetTaskForce(2); + TF1.r_fSecondaryScore = 0.0000000; + TF2.r_fSecondaryScore = 0.0000000; + } + SendAssaultPointCapturedAlert(int(GRI.r_AttackingTaskForce.r_nTaskForce)); + super.PointCaptured(nTaskForce, bSuppressPointsForCapture); + //return; + } + stop; +} + +state AttackDefend +{ + event BeginState(name PreviousStateName) + { + super.BeginState(PreviousStateName); + ActivateTaskforceSpecificCapturePoint(m_nAttackingTaskforce); + m_bEndRoundWhenPointCaptured = true; + SetAttackPhaseTimer(m_fAttackDuration, false); + //return; + } + + function bool CapturePointContestDurationEnabled() + { + return false; + //return ReturnValue; + } + + function PointCaptured(int nTaskForce, optional bool bSuppressPointsForCapture) + { + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce TF1, TF2; + + ClearTimer('DefenseWin'); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x109 + if(GRI != none) + { + GRI.r_nLastRoundWinner = byte(nTaskForce); + TF1 = GRI.GetTaskForce(1); + TF2 = GRI.GetTaskForce(2); + TF1.r_fSecondaryScore = 0.0000000; + TF2.r_fSecondaryScore = 0.0000000; + } + GainPoints(nTaskForce, m_nPointsForCapturing, 1); + OnRoundEnded(); + //return; + } + + function SetAttackPhaseTimer(float fDuration, bool overtime) + { + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x2D + if(GRI == none) + { + return; + } + // End:0x60 + if(overtime) + { + m_bInAttackPhaseOvertime = true; + SetTimer(fDuration, false, 'OvertimeExpired'); + } + else + { + m_bInPayloadOvertime = false; + ClearTimer('OvertimeExpired'); + SetTimer(fDuration, false, 'DefenseWin'); + } + GRI.r_bCapturePointOvertime = m_bInAttackPhaseOvertime; + GRI.r_fCapturePointOvertimeStartDuration = m_fPointOvertimeDuration; + GRI.r_nCapturePointOvertimeStateChange++; + GRI.bNetDirty = true; + //return; + } + + event Tick(float DeltaTime) + { + super.Tick(DeltaTime); + // End:0x41 + if(m_bInAttackPhaseOvertime) + { + // End:0x41 + if(AttackersOnPoint()) + { + SetAttackPhaseTimer(m_fAttackPhaseOvertimeDuration, true); + } + } + //return; + } + + function OvertimeExpired() + { + DefenseWin(true); + //return; + } + + function DefenseWin(optional bool bForce) + { + local TgRepInfo_Game GRI; + local int currentScore, localPointsForDefending; + + ClearTimer('DefenseWin'); + // End:0x4A + if(!bForce && AttackersOnPoint()) + { + SetAttackPhaseTimer(m_fAttackPhaseOvertimeDuration, true); + } + else + { + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x126 + if(GRI != none) + { + // End:0xFC + if(GRI.r_AttackingTaskForce != none) + { + GRI.r_nLastRoundWinner = ((int(GRI.r_AttackingTaskForce.r_nTaskForce) == int(1)) ? 2 : 1); + } + TriggerSuccessfulDefense(int(GRI.r_nLastRoundWinner)); + } + currentScore = ((int(GRI.r_nLastRoundWinner) == int(1)) ? m_nTF1Score : m_nTF2Score); + // End:0x1B1 + if(!m_bCanWinOnDefense && (currentScore - m_nPointsForDefending) <= 0) + { + localPointsForDefending = currentScore - 1; + } + else + { + localPointsForDefending = m_nPointsForDefending; + } + // End:0x208 + if(localPointsForDefending > 0) + { + GainPoints(int(GRI.r_nLastRoundWinner), localPointsForDefending, 2); + } + OnRoundEnded(); + } + //return; + } + + function EndState(name NextStateName) + { + local TgRepInfo_Game GRI; + + m_bInAttackPhaseOvertime = false; + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xBB + if(GRI != none) + { + // End:0xBB + if(GRI.r_bCapturePointOvertime) + { + GRI.r_bCapturePointOvertime = false; + GRI.r_nCapturePointOvertimeStateChange++; + GRI.bNetDirty = true; + } + } + super.EndState(NextStateName); + //return; + } + stop; +} + +defaultproperties +{ + m_fAttackDuration=180.0000000 + m_fAttackPhaseOvertimeDuration=6.0000000 + m_fAttackCaptureRateMultiplier=2.0000000 + m_fTakeoverSecondPhaseInstructionDelay=3.0000000 + m_fPayloadDuration=180.0000000 + m_nWinningScore=5 + m_bSpawnLanePusherWhenPointCaptured=false + m_fSetupObjectivePickTime=30.0000000 + m_fSpawnGateOpenTime=30.0000000 + m_fSetupSpawnGateOpenTime=30.0000000 + m_fBackslidePercent=75.0000000 + m_fBackslideDelay=5.0000000 + m_fBackslideRate=2.5000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Assault_Practice.uc b/exported/TgGame/Classes/TgGame_Paladins_Assault_Practice.uc new file mode 100755 index 00000000..a5e81eea --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Assault_Practice.uc @@ -0,0 +1,10 @@ +class TgGame_Paladins_Assault_Practice extends TgGame_Paladins_Assault + config(Game) + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + m_nPIESpawnTable=387 + m_nTargetPlayerCountForMercs=10 + m_bIsPracticeGametype=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Assault_Ranked.uc b/exported/TgGame/Classes/TgGame_Paladins_Assault_Ranked.uc new file mode 100755 index 00000000..3659ed04 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Assault_Ranked.uc @@ -0,0 +1,3 @@ +class TgGame_Paladins_Assault_Ranked extends TgGame_Paladins_Assault + config(Game) + hidecategories(Navigation,Movement,Collision); diff --git a/exported/TgGame/Classes/TgGame_Paladins_CaptureOnly.uc b/exported/TgGame/Classes/TgGame_Paladins_CaptureOnly.uc new file mode 100755 index 00000000..3b11f0d6 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_CaptureOnly.uc @@ -0,0 +1,13 @@ +class TgGame_Paladins_CaptureOnly extends TgGame_Paladins_Siege + config(Game) + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + m_nWinningScore=2 + m_bEndRoundWhenPointCaptured=true + m_fObjectivePickTime=15.0000000 + m_fSetupObjectivePickTime=15.0000000 + m_fSpawnGateOpenTime=15.0000000 + m_fSetupSpawnGateOpenTime=15.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Halloween2017.uc b/exported/TgGame/Classes/TgGame_Paladins_Halloween2017.uc new file mode 100755 index 00000000..d388e3b8 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Halloween2017.uc @@ -0,0 +1,50 @@ +class TgGame_Paladins_Halloween2017 extends TgGame_Paladins_Siege + config(Game) + hidecategories(Navigation,Movement,Collision); + +event AllPlayersReady() +{ + super(TgGame_PaladinsExtended).AllPlayersReady(); + UpdateSilhouetteRendering(); + SetTimer(1.0000000, true, 'UpdateSilhouetteRendering'); + //return; +} + +function UpdateSilhouetteRendering() +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce Taskforce; + local array TF1PRIs, TF2PRIs; + local TgRepInfo_Player PRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x1A6 + if(GRI != none) + { + Taskforce = GRI.GetTaskForce(1); + // End:0xE8 + if(Taskforce != none) + { + Taskforce.GetPlayers(TF1PRIs); + // End:0xE7 + foreach TF1PRIs(PRI) + { + PRI.r_bSilhouettesBlocked = true; + PRI.r_bExtendedSilhouetteRange = false; + } + } + Taskforce = GRI.GetTaskForce(2); + // End:0x1A6 + if(Taskforce != none) + { + Taskforce.GetPlayers(TF2PRIs); + // End:0x1A5 + foreach TF2PRIs(PRI) + { + PRI.r_bSilhouettesBlocked = false; + PRI.r_bExtendedSilhouetteRange = true; + } + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgGame_Paladins_Onslaught.uc b/exported/TgGame/Classes/TgGame_Paladins_Onslaught.uc new file mode 100755 index 00000000..e1971553 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Onslaught.uc @@ -0,0 +1,37 @@ +class TgGame_Paladins_Onslaught extends TgGame_Paladins_Siege + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +// Export UTgGame_Paladins_Onslaught::execSendStartRoundOnePointFromWinningAlert(FFrame&, void* const) +native function SendStartRoundOnePointFromWinningAlert(int nTaskForceNum); + +function int GetGameTypeHelpTipIndex(TgPlayerController TgPC) +{ + return 202; + //return ReturnValue; +} + +defaultproperties +{ + m_nWinningScore=1 + m_fWinningTickets=400.0000000 + m_fTicketsForKill=5.0000000 + m_fTicketsPerCaptureTick=1.0000000 + m_fTicketsPerTicketDisparity=10.0000000 + m_fSecondsPerTicketDisparity=1.0000000 + m_fMaximumDisparitySeconds=4.0000000 + m_fRoundLimitDuration=600.0000000 + m_nCreditsForHoldingObjective=4 + m_nCreditsBonusPerContested=0 + m_fCapturePointsPerSecond1=0.0000000 + m_fCapturePointsPerSecond2=0.0000000 + m_fCapturePointsPerSecond3=0.0000000 + m_fCapturePointsPerSecond4=0.0000000 + m_fCapturePointsPerSecond5=0.0000000 + m_SnappedWaypointIndicatorOffset=(X=0.0000000,Y=10.0000000,Z=0.0000000) + m_fGameTypeReminderTime=15.0000000 + m_fBaseRespawnTime=8.0000000 + m_fCreditsToGivePerTick=5.0000000 + m_GameType=TG_GAME_TYPE.TGT_CHAOS_ONSLAUGHT +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Onslaught_Practice.uc b/exported/TgGame/Classes/TgGame_Paladins_Onslaught_Practice.uc new file mode 100755 index 00000000..86e39eec --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Onslaught_Practice.uc @@ -0,0 +1,11 @@ +class TgGame_Paladins_Onslaught_Practice extends TgGame_Paladins_Onslaught + config(Game) + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + m_nPIESpawnTable=426 + m_nTargetPlayerCountForMercs=10 + m_GameType=TG_GAME_TYPE.TGT_CHAOS_CAPTUREANDPAYLOAD_PRACTICE + m_bIsPracticeGametype=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Payload.uc b/exported/TgGame/Classes/TgGame_Paladins_Payload.uc new file mode 100755 index 00000000..6dd40183 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Payload.uc @@ -0,0 +1,883 @@ +class TgGame_Paladins_Payload extends TgGame_Paladins_Siege + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +const TG_DISTANCE_CAP = 100000.0f; + +var float s_fCurrentTF1FarthestPushDistance; +var float s_fCurrentTF2FarthestPushDistance; +var float s_fCurrentPushTimer; +var float s_fCurrentTF1FarthestPushDistanceTimestamp; +var float s_fCurrentTF2FarthestPushDistanceTimestamp; +var float s_fTimeTF1HadToPush; +var int m_nPayloadOnlyCurrentAttackingTeam; +var int s_nCurrentTurn; +var Vector s_vPayloadGhostLocation; +var() Vector s_vPayloadGhostOffset; +var Rotator s_PayloadGhostRotation; +var int m_nPayloadGhostID; +var TgDeployable m_PayloadGhost; + +// Export UTgGame_Paladins_Payload::execSpawnPayloadGhost(FFrame&, void* const) +native function SpawnPayloadGhost(); + +// Export UTgGame_Paladins_Payload::execSendStartRoundOnePointFromWinningAlert(FFrame&, void* const) +native function SendStartRoundOnePointFromWinningAlert(int nTaskForceNum); + +function StartGameMode() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x73 + if(GRI != none) + { + GRI.UpdateAttackingTaskforce(GRI.GetTaskForce(m_nPayloadOnlyCurrentAttackingTeam)); + } + super(TgGame_PaladinsExtended).StartGameMode(); + //return; +} + +function SetSpawnGateTimers(bool bFirstRound) +{ + local float AttackersSpawnGateOpenTime, DefendersSpawnGateOpenTime; + + AttackersSpawnGateOpenTime = (GetAttackersSpawnGateOpenTime()) + ((bFirstRound) ? 0.0000000 : m_fRoundEndRespawnDelay); + DefendersSpawnGateOpenTime = (GetDefendersSpawnGateOpenTime()) + ((bFirstRound) ? 0.0000000 : m_fRoundEndRespawnDelay); + SetTimer(AttackersSpawnGateOpenTime, false, 'OpenAttackersSpawnGates'); + SetTimer(DefendersSpawnGateOpenTime, false, 'OpenDefendersSpawnGates'); + //return; +} + +function OpenAttackersSpawnGates() +{ + local TgRepInfo_Game GRI; + local TgSpawnGate SpawnGate; + local TgPlayerController TgPC; + + SendClientsRequestHelpText(127); + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_CaptureAndPayloadRoundBegin', self); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xC9 + if(GRI != none) + { + GRI.r_bUltimatesLocked = false; + GRI.UpdateAttackingTaskforce(GRI.GetTaskForce(m_nPayloadOnlyCurrentAttackingTeam)); + PointCaptured(m_nPayloadOnlyCurrentAttackingTeam, true); + } + m_bCanSpoolCredits = true; + // End:0x1A1 + foreach WorldInfo.DynamicActors(Class'TgGame.TgSpawnGate', SpawnGate) + { + // End:0x1A0 + if(int(SpawnGate.m_eSpawnGateType) == int(1)) + { + SpawnGate.Deactivate(); + // End:0x19F + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientDeactivateAttackersSpawnGates(); + } + } + } + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_SpawnGateDeactivate_Attackers', self); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x245 + if(GRI != none) + { + GRI.r_bAttackersSpawnGatesOpen = true; + GRI.r_bAttackersKillCamEnabled = true; + GRI.bNetDirty = true; + } + //return; +} + +function OpenDefendersSpawnGates() +{ + local TgRepInfo_Game GRI; + local TgSpawnGate SpawnGate; + local TgPlayerController TgPC; + + // End:0xCC + foreach WorldInfo.DynamicActors(Class'TgGame.TgSpawnGate', SpawnGate) + { + // End:0xCB + if(int(SpawnGate.m_eSpawnGateType) == int(2)) + { + SpawnGate.Deactivate(); + // End:0xCA + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientDeactivateDefendersSpawnGates(); + } + } + } + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_SpawnGateDeactivate_Defenders', self); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x170 + if(GRI != none) + { + GRI.r_bDefendersSpawnGatesOpen = true; + GRI.r_bDefendersKillCamEnabled = true; + GRI.bNetDirty = true; + } + //return; +} + +function float GetAttackersSpawnGateOpenTime() +{ + // End:0x1E + if(m_fAttackersSpawnGateOpenTime <= 0.0000000) + { + return GetSpawnGateOpenTime(); + } + return m_fAttackersSpawnGateOpenTime; + //return ReturnValue; +} + +function float GetDefendersSpawnGateOpenTime() +{ + // End:0x1E + if(m_fDefendersSpawnGateOpenTime <= 0.0000000) + { + return GetSpawnGateOpenTime(); + } + return m_fDefendersSpawnGateOpenTime; + //return ReturnValue; +} + +function SetAutoMountTimers(bool bFirstRound) +{ + local float AttackersSpawnGateOpenTime, DefendersSpawnGateOpenTime; + + AttackersSpawnGateOpenTime = (GetAttackersSpawnGateOpenTime()) + ((bFirstRound) ? 0.0000000 : m_fRoundEndRespawnDelay); + DefendersSpawnGateOpenTime = (GetDefendersSpawnGateOpenTime()) + ((bFirstRound) ? 0.0000000 : m_fRoundEndRespawnDelay); + // End:0xA1 + if((AttackersSpawnGateOpenTime - 2.0000000) > 0.0000000) + { + SetTimer(AttackersSpawnGateOpenTime - 2.0000000, false, 'AutoMountAttackers'); + } + else + { + AutoMountAttackers(); + } + // End:0xE6 + if((DefendersSpawnGateOpenTime - 2.0000000) > 0.0000000) + { + SetTimer(DefendersSpawnGateOpenTime - 2.0000000, false, 'AutoMountDefenders'); + } + else + { + AutoMountDefenders(); + } + //return; +} + +function SetResetEscapedPlayersTimers(bool bFirstRound) +{ + local float AttackersSpawnGateOpenTime, DefendersSpawnGateOpenTime; + + AttackersSpawnGateOpenTime = (GetAttackersSpawnGateOpenTime()) + ((bFirstRound) ? 0.0000000 : m_fRoundEndRespawnDelay); + DefendersSpawnGateOpenTime = (GetDefendersSpawnGateOpenTime()) + ((bFirstRound) ? 0.0000000 : m_fRoundEndRespawnDelay); + // End:0xA1 + if((AttackersSpawnGateOpenTime - 3.0000000) > 0.0000000) + { + SetTimer(AttackersSpawnGateOpenTime - 3.0000000, false, 'ResetAttackersNotInSpawnRoom'); + } + else + { + ResetAttackersNotInSpawnRoom(); + } + // End:0xE6 + if((DefendersSpawnGateOpenTime - 3.0000000) > 0.0000000) + { + SetTimer(DefendersSpawnGateOpenTime - 3.0000000, false, 'ResetDefendersNotInSpawnRoom'); + } + else + { + ResetDefendersNotInSpawnRoom(); + } + //return; +} + +event LanePusherReachedOuterWall(TgPawn_LanePusher LanePusher) +{ + // End:0x44 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x35 + if(m_nPayloadOnlyCurrentAttackingTeam == 1) + { + s_fCurrentTF1FarthestPushDistance = 100000.0000000; + } + else + { + s_fCurrentTF2FarthestPushDistance = 100000.0000000; + } + } + super.LanePusherReachedOuterWall(LanePusher); + //return; +} + +function BroadcastTimer() +{ + local TgPlayerController TgPC; + local float timeTotal, TimeRemaining; + + timeTotal = GetTimerRate('OpenAttackersSpawnGates'); + TimeRemaining = timeTotal - GetTimerCount('OpenAttackersSpawnGates'); + // End:0xC1 + if(IsTimerActive('PickNextObjective')) + { + // End:0xC0 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientUpdateRoundSetupTimer(TimeRemaining + float(1)); + } + } + CaptureSpawnAlert(TimeRemaining); + //return; +} + +function UpdateAttackingTaskforceForRoundTransition() +{ + //return; +} + +event UpdatePayloadProgress() +{ + local TgRepInfo_Game GRI; + local float fSplineLength; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x53 + if((GRI == none) || GRI.r_LanePusher == none) + { + return; + } + fSplineLength = GetDistanceToEndOfSpline(); + // End:0x1B7 + if(fSplineLength > 0.0000000) + { + // End:0x129 + if(int(GRI.r_AttackingTaskForce.GetTeamNum()) == int(1)) + { + // End:0xF3 + if(s_fCurrentTF1FarthestPushDistance >= 100000.0000000) + { + GRI.r_fPayloadProgressPercent = 1.0000000; + } + else + { + GRI.r_fPayloadProgressPercent = s_fCurrentTF1FarthestPushDistance / fSplineLength; + } + } + else + { + // End:0x163 + if(s_fCurrentTF2FarthestPushDistance >= 100000.0000000) + { + GRI.r_fPayloadProgressPercent = 1.0000000; + } + else + { + GRI.r_fPayloadProgressPercent = s_fCurrentTF2FarthestPushDistance / fSplineLength; + } + } + GRI.bNetDirty = true; + } + //return; +} + +function float GetDistanceToEndOfSpline() +{ + // End:0x6A + if((m_LastActiveCapturePoint != none) && m_LastActiveCapturePoint.m_Taskforce1PathStart != none) + { + return m_LastActiveCapturePoint.m_Taskforce1PathStart.DistanceToEndOfSplineChain(); + } + return 0.0000000; + //return ReturnValue; +} + +function TF2PushesPastTF1() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x79 + if((GRI != none) && GRI.r_LanePusher != none) + { + LanePusherReachedOuterWall(GRI.r_LanePusher); + } + //return; +} + +function TF2ReachesTF1Faster() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x79 + if((GRI != none) && GRI.r_LanePusher != none) + { + LanePusherReachedOuterWall(GRI.r_LanePusher); + } + //return; +} + +function TF2TakesLongerThanTF1() +{ + local TgRepInfo_Game GRI; + local TgPawn_SiegeEngine_Payload Payload; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x2D + if(GRI == none) + { + return; + } + GRI.r_bOvertime = false; + GRI.r_nLastRoundWinner = 0; + // End:0xF9 + if(GRI.r_AttackingTaskForce != none) + { + GRI.r_nLastRoundWinner = ((int(GRI.r_AttackingTaskForce.r_nTaskForce) == int(1)) ? 2 : 1); + } + else + { + Payload = TgPawn_SiegeEngine_Payload(GRI.r_LanePusher); + // End:0x188 + if(Payload != none) + { + GRI.r_nLastRoundWinner = ((int(Payload.GetTaskForceNumber()) == int(1)) ? 2 : 1); + } + } + // End:0x1B4 + if(int(GRI.r_nLastRoundWinner) == int(0)) + { + } + else + { + TriggerSuccessfulDefense(int(GRI.r_nLastRoundWinner)); + GainPoints(int(GRI.r_nLastRoundWinner), m_nPointsForDefending, 2); + } + OnRoundEnded(); + //return; +} + +function ManageComparativeScoring() +{ + // End:0x98 + if(s_fCurrentTF1FarthestPushDistance == s_fCurrentTF2FarthestPushDistance) + { + // End:0x3F + if(s_fCurrentTF1FarthestPushDistanceTimestamp < s_fCurrentTF2FarthestPushDistanceTimestamp) + { + GainPoints(1, 1, 3); + } + else + { + // End:0x68 + if(s_fCurrentTF2FarthestPushDistanceTimestamp < s_fCurrentTF1FarthestPushDistanceTimestamp) + { + GainPoints(2, 1, 3); + } + else + { + // End:0x86 + if((Rand(2) + 1) == 1) + { + GainPoints(1, 1, 3); + } + else + { + GainPoints(2, 1, 3); + } + } + } + } + else + { + // End:0xC0 + if(s_fCurrentTF1FarthestPushDistance > s_fCurrentTF2FarthestPushDistance) + { + GainPoints(1, 1, 3); + } + else + { + GainPoints(2, 1, 3); + } + } + //return; +} + +function OnRoundEnded() +{ + local TgSplineActor_Payload PayloadSplineActor; + local TgRepInfo_Game GRI; + + // End:0x16 + if(int(Role) != int(ROLE_Authority)) + { + return; + } + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x9C + if((GRI != none) && GRI.r_LanePusher != none) + { + GRI.r_LanePusher.DestroyIt(); + } + // End:0x136 + if(m_bRoundTreatment && s_nCurrentTurn == 1) + { + m_bKeepThisPointForNextRound = false; + AddPotGEventToAllPlayers(5); + PointCapturePhaseCleanup(); + PayloadPhaseCleanup(); + SendClientRoundObjectivesCompleted(); + // End:0x11D + if(m_fRoundEndRespawnDelay > 0.0000000) + { + SetTimer(m_fRoundEndRespawnDelay, false, 'CaptureAndPayloadRoundEnded'); + } + else + { + CaptureAndPayloadRoundEnded(); + } + s_nCurrentTurn = 2; + } + else + { + m_bKeepThisPointForNextRound = true; + ManageComparativeScoring(); + super.OnRoundEnded(); + s_fCurrentTF1FarthestPushDistance = 0.0000000; + s_fCurrentTF2FarthestPushDistance = 0.0000000; + s_nCurrentTurn = 1; + } + // End:0x1CF + foreach WorldInfo.DynamicActors(Class'TgGame.TgSplineActor_Payload', PayloadSplineActor) + { + PayloadSplineActor.m_bReached = false; + } + ClearCheckpointsReached(); + //return; +} + +function OvertimeExpired() +{ + //return; +} + +function PayloadExpired() +{ + //return; +} + +function float GetPayloadTimer() +{ + // End:0x38 + if(m_bInPayloadOvertime) + { + return GetTimerRate('OvertimeExpired') - GetTimerCount('OvertimeExpired'); + } + return GetTimerRate('PayloadExpired') - GetTimerCount('PayloadExpired'); + //return ReturnValue; +} + +function PayloadCheckpointReached(TgSplineActor_Payload Checkpoint) +{ + // End:0x8C + if(Checkpoint.m_fSecondsToAdd > 0.0000000) + { + SetPayloadTimer(((!m_bInPayloadOvertime) ? (GetPayloadTimer()) + Checkpoint.m_fSecondsToAdd : Checkpoint.m_fSecondsToAdd), false); + } + // End:0xC2 + if(int(Checkpoint.m_ActionPoint) == int(4)) + { + SetCheckpoint1Reached(); + } + else + { + // End:0xF5 + if(int(Checkpoint.m_ActionPoint) == int(5)) + { + SetCheckpoint2Reached(); + } + } + //return; +} + +simulated function SetCheckpoint1Reached() +{ + local TgRepInfo_Game GRI; + local TgPlayerController TgPC; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x2D + if(GRI == none) + { + return; + } + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_PayloadCP1Reached', self); + GRI.r_bCheckpoint1Reached = true; + GRI.r_bCheckpoint2Reached = false; + // End:0x156 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + // End:0x134 + if(GRI.GetAttackingTaskForce().r_nTeamId == TgPC.GetTaskForceNumber()) + { + TgPC.ClientRequestHelpText(157); + // End:0x155 + continue; + } + TgPC.ClientRequestHelpText(158); + } + //return; +} + +simulated function SetCheckpoint2Reached() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x2D + if(GRI == none) + { + return; + } + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_PayloadCP2Reached', self); + GRI.r_bCheckpoint1Reached = true; + GRI.r_bCheckpoint2Reached = true; + //return; +} + +simulated function ClearCheckpointsReached() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x2D + if(GRI == none) + { + return; + } + GRI.r_bCheckpoint1Reached = false; + GRI.r_bCheckpoint2Reached = false; + //return; +} + +function ToggleAttackingTaskforce() +{ + local TgRepInfo_Game GRI; + local TgPlayerController TgPC; + + m_nPayloadOnlyCurrentAttackingTeam = ((m_nPayloadOnlyCurrentAttackingTeam == 1) ? 2 : 1); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x91 + if(GRI != none) + { + GRI.UpdateAttackingTaskforce(GRI.GetTaskForce(m_nPayloadOnlyCurrentAttackingTeam)); + } + // End:0xE5 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientToggleSpawnGateTeamColors(); + } + //return; +} + +function CaptureAndPayloadRoundEnded() +{ + local TgRepInfo_Game GRI; + + ToggleAttackingTaskforce(); + super.CaptureAndPayloadRoundEnded(); + // End:0xA2 + if(m_bRoundTreatment) + { + // End:0xA2 + if(int(Role) == int(ROLE_Authority)) + { + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xA2 + if(GRI != none) + { + GRI.r_bFadeOutAtRoundEnd = false; + GRI.bNetDirty = true; + } + } + } + RemoveAllBurnCards(); + ResetUltForAllPlayers(); + ResetCreditsForAllPlayers(); + ResetKillstreaksForAllPlayers(); + //return; +} + +state GameRunning +{ + function NavigationPoint FindPlayerStart(Controller Player, optional byte InTeam, optional string IncomingName) + { + local PlayerStart Start; + local TgChaosCapturePoint PointToSpawnAt; + + // End:0x44 + if(s_nCurrentTurn == 1) + { + // End:0x41 + if(m_CapturePointQueue.Length > 0) + { + PointToSpawnAt = m_CapturePointQueue[s_nCurrentCapturePointQueueIndex]; + } + } + else + { + // End:0x67 + if(s_nCurrentTurn == 2) + { + PointToSpawnAt = m_LastActiveCapturePoint; + } + } + // End:0xB6 + if(PointToSpawnAt != none) + { + Start = FindPlayerStartForCapturePoint(PointToSpawnAt, Player); + // End:0xB6 + if(Start != none) + { + return Start; + } + } + return super(TgGame_Paladins_Siege).FindPlayerStart(Player, InTeam, IncomingName); + //return ReturnValue; + } + + function PointCaptured(int nTaskForce, optional bool bSuppressPointsForCapture) + { + super.PointCaptured(nTaskForce, bSuppressPointsForCapture); + m_nPayloadOnlyCurrentAttackingTeam = nTaskForce; + //return; + } + stop; +} + +state AttackDefend +{ + function BeginState(name PreviousStateName) + { + local TgRepInfo_Game GRI; + local float fSplineLength; + + // End:0x15D + if(m_nPayloadOnlyCurrentAttackingTeam != 1) + { + s_fTimeTF1HadToPush = s_fCurrentPushTimer; + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x150 + if(GRI != none) + { + fSplineLength = GetDistanceToEndOfSpline(); + // End:0x150 + if(fSplineLength > 0.0000000) + { + GRI.r_fTF1PayloadPushDistance = s_fCurrentTF1FarthestPushDistance / fSplineLength; + GRI.r_fTF1PayloadPushDistance = FMin(GRI.r_fTF1PayloadPushDistance, 1.0000000); + GRI.r_fTF1PayloadPushDistance = FMax(GRI.r_fTF1PayloadPushDistance, 0.0000000); + GRI.bNetDirty = true; + } + } + SpawnPayloadGhost(); + } + else + { + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x233 + if((GRI != none) && GRI.r_LanePusher != none) + { + s_vPayloadGhostLocation = GRI.r_LanePusher.Location + s_vPayloadGhostOffset; + s_PayloadGhostRotation = GRI.r_LanePusher.Rotation; + } + } + super.BeginState(PreviousStateName); + s_fCurrentPushTimer = 0.0000000; + //return; + } + + function float GetPayloadStartingDuration() + { + // End:0x1D + if(m_nPayloadOnlyCurrentAttackingTeam == 1) + { + return super.GetPayloadStartingDuration(); + } + else + { + // End:0x3D + if(s_fCurrentTF1FarthestPushDistance >= 100000.0000000) + { + return s_fCurrentTF1FarthestPushDistanceTimestamp; + } + else + { + // End:0x5B + if(s_fTimeTF1HadToPush > float(0)) + { + return s_fTimeTF1HadToPush; + } + else + { + return super.GetPayloadStartingDuration(); + } + } + } + //return ReturnValue; + } + + function float GetOvertimeDuration() + { + // End:0x18 + if(m_nPayloadOnlyCurrentAttackingTeam == 1) + { + return 0.0000000; + } + else + { + return 0.0000000; + } + //return ReturnValue; + } + + function bool OvertimePreventsPayloadExpiring() + { + // End:0x14 + if(m_nPayloadOnlyCurrentAttackingTeam == 1) + { + return false; + } + else + { + return false; + } + //return ReturnValue; + } + + function TgChaosCapturePoint GetCapturePointToSpawnSiegeEngineAt() + { + // End:0x19 + if(m_LastActiveCapturePoint != none) + { + return m_LastActiveCapturePoint; + } + return super.GetCapturePointToSpawnSiegeEngineAt(); + //return ReturnValue; + } + + function NavigationPoint FindPlayerStart(Controller Player, optional byte InTeam, optional string IncomingName) + { + local PlayerStart Start; + + Start = FindPlayerStartForCapturePoint(m_LastActiveCapturePoint, Player); + // End:0x42 + if(Start != none) + { + return Start; + } + return super.FindPlayerStart(Player, InTeam, IncomingName); + //return ReturnValue; + } + + function Tick(float DeltaTime) + { + local TgRepInfo_Game GRI; + local float fDist; + + super.Tick(DeltaTime); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x66 + if((GRI == none) || GRI.r_LanePusher == none) + { + return; + } + s_fCurrentPushTimer += DeltaTime; + // End:0xBD + if(m_nPayloadOnlyCurrentAttackingTeam != 1) + { + // End:0xBD + if(s_fCurrentTF1FarthestPushDistance >= 100000.0000000) + { + // End:0xBD + if(s_fCurrentPushTimer > s_fCurrentTF1FarthestPushDistanceTimestamp) + { + TF2TakesLongerThanTF1(); + } + } + } + fDist = (GetDistanceToEndOfSpline()) - GRI.r_LanePusher.GetDistanceToEndOfSpline(); + // End:0x1DB + if(m_nPayloadOnlyCurrentAttackingTeam == 1) + { + // End:0x1D8 + if(fDist > s_fCurrentTF1FarthestPushDistance) + { + s_fCurrentTF1FarthestPushDistance = fDist; + s_fCurrentTF1FarthestPushDistanceTimestamp = s_fCurrentPushTimer; + s_vPayloadGhostLocation = GRI.r_LanePusher.Location + s_vPayloadGhostOffset; + s_PayloadGhostRotation = GRI.r_LanePusher.Rotation; + } + } + else + { + // End:0x28B + if(fDist > s_fCurrentTF2FarthestPushDistance) + { + s_fCurrentTF2FarthestPushDistance = fDist; + s_fCurrentTF2FarthestPushDistanceTimestamp = s_fCurrentPushTimer; + // End:0x23C + if(s_fCurrentTF2FarthestPushDistance > s_fCurrentTF1FarthestPushDistance) + { + TF2PushesPastTF1(); + } + else + { + // End:0x28B + if(((s_fCurrentTF2FarthestPushDistance == s_fCurrentTF1FarthestPushDistance) && s_fCurrentTF1FarthestPushDistance < 100000.0000000) && s_fCurrentTF2FarthestPushDistanceTimestamp < s_fCurrentTF1FarthestPushDistanceTimestamp) + { + TF2ReachesTF1Faster(); + } + } + } + s_fCurrentTF2FarthestPushDistance = float(Max(int(s_fCurrentTF2FarthestPushDistance), int(fDist))); + } + //return; + } + stop; +} + +defaultproperties +{ + m_nPayloadOnlyCurrentAttackingTeam=1 + s_nCurrentTurn=1 + s_vPayloadGhostOffset=(X=0.0000000,Y=0.0000000,Z=-60.0000000) + m_nPayloadGhostID=828 + m_nPointsForCapturing=0 + m_nPointsForPayload=0 + m_nPointsForDefending=0 + m_bFadeOutAtRoundEnd=true + m_fPayloadDuration=420.0000000 + m_nWinningScore=1 + m_bKeepThisPointForNextRound=true + m_fObjectivePickTime=50.0000000 + m_fSetupObjectivePickTime=50.0000000 + m_fSpawnGateOpenTime=50.0000000 + m_fAttackersSpawnGateOpenTime=50.0000000 + m_fDefendersSpawnGateOpenTime=10.0000000 + m_fSpeedScale=0.4000000 + m_nStartingCredits=1000 + m_fCreditsToGivePerTick=2.0000000 + m_GameType=TG_GAME_TYPE.TGT_CHAOS_PAYLOAD + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Payload_Practice.uc b/exported/TgGame/Classes/TgGame_Paladins_Payload_Practice.uc new file mode 100755 index 00000000..11ce79a4 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Payload_Practice.uc @@ -0,0 +1,11 @@ +class TgGame_Paladins_Payload_Practice extends TgGame_Paladins_Payload + config(Game) + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + m_nPIESpawnTable=402 + m_nTargetPlayerCountForMercs=10 + m_GameType=TG_GAME_TYPE.TGT_CHAOS_PAYLOAD_PRACTICE + m_bIsPracticeGametype=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Prototype1.uc b/exported/TgGame/Classes/TgGame_Paladins_Prototype1.uc new file mode 100755 index 00000000..4b0f670c --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Prototype1.uc @@ -0,0 +1,21 @@ +class TgGame_Paladins_Prototype1 extends TgGame_Paladins_Siege + config(Game) + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + m_nWinningScore=1 + m_fWinningTickets=400.0000000 + m_fTicketsForKill=5.0000000 + m_fTicketsPerCaptureTick=2.0000000 + m_fSetupObjectivePickTime=30.0000000 + m_fSpawnGateOpenTime=30.0000000 + m_fSetupSpawnGateOpenTime=30.0000000 + m_fCapturePointsPerSecond1=0.0000000 + m_fCapturePointsPerSecond2=0.0000000 + m_fCapturePointsPerSecond3=0.0000000 + m_fCapturePointsPerSecond4=0.0000000 + m_fCapturePointsPerSecond5=0.0000000 + m_fBaseRespawnTime=10.0000000 + m_fCreditsToGivePerTick=4.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Prototype2.uc b/exported/TgGame/Classes/TgGame_Paladins_Prototype2.uc new file mode 100755 index 00000000..27af26dc --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Prototype2.uc @@ -0,0 +1,21 @@ +class TgGame_Paladins_Prototype2 extends TgGame_Paladins_Siege + config(Game) + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + m_bDoNotSwitchPoints=false + m_nWinningScore=1 + m_fWinningTickets=500.0000000 + m_fTicketsForKill=3.0000000 + m_fTicketsPerCaptureTick=1.0000000 + m_fTicketsBonusPerMultiCapture=0.2500000 + m_fObjectiveRepickTickets=100.0000000 + m_fCapturePointsPerSecond1=0.0000000 + m_fCapturePointsPerSecond2=0.0000000 + m_fCapturePointsPerSecond3=0.0000000 + m_fCapturePointsPerSecond4=0.0000000 + m_fCapturePointsPerSecond5=0.0000000 + m_bDeckSwappingAlwaysEnabled=true + m_fBaseRespawnTime=10.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Prototype3.uc b/exported/TgGame/Classes/TgGame_Paladins_Prototype3.uc new file mode 100755 index 00000000..2a0f0239 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Prototype3.uc @@ -0,0 +1,22 @@ +class TgGame_Paladins_Prototype3 extends TgGame_Paladins_Siege + config(Game) + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + m_nWinningScore=1 + m_fWinningTickets=500.0000000 + m_fTicketsForKill=5.0000000 + m_fTicketsPerCaptureTick=2.0000000 + m_fSetupObjectivePickTime=30.0000000 + m_fSpawnGateOpenTime=30.0000000 + m_fSetupSpawnGateOpenTime=30.0000000 + m_fCapturePointsPerSecond1=0.0000000 + m_fCapturePointsPerSecond2=0.0000000 + m_fCapturePointsPerSecond3=0.0000000 + m_fCapturePointsPerSecond4=0.0000000 + m_fCapturePointsPerSecond5=0.0000000 + m_bDisableKillcam=true + m_fBaseRespawnTime=5.0000000 + m_fCreditsToGivePerTick=4.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Prototype4.uc b/exported/TgGame/Classes/TgGame_Paladins_Prototype4.uc new file mode 100755 index 00000000..4def5752 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Prototype4.uc @@ -0,0 +1,3 @@ +class TgGame_Paladins_Prototype4 extends TgGame_Paladins_Siege + config(Game) + hidecategories(Navigation,Movement,Collision); diff --git a/exported/TgGame/Classes/TgGame_Paladins_Prototype5.uc b/exported/TgGame/Classes/TgGame_Paladins_Prototype5.uc new file mode 100755 index 00000000..6f96de77 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Prototype5.uc @@ -0,0 +1,3 @@ +class TgGame_Paladins_Prototype5 extends TgGame_Paladins_Siege + config(Game) + hidecategories(Navigation,Movement,Collision); diff --git a/exported/TgGame/Classes/TgGame_Paladins_PvE.uc b/exported/TgGame/Classes/TgGame_Paladins_PvE.uc new file mode 100755 index 00000000..c287b062 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_PvE.uc @@ -0,0 +1,15 @@ +class TgGame_Paladins_PvE extends TgGame_Paladins_Siege + config(Game) + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + m_nPointsForDefending=0 + m_nWinningScore=2 + m_bEndRoundWhenPointCaptured=true + m_nStartingCredits=3200 + m_nPIESpawnTable=418 + m_nTargetPlayerCountForMercs=10 + m_GameType=TG_GAME_TYPE.TGT_CHAOS_PVE + m_bIsPracticeGametype=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_PvE_Survival.uc b/exported/TgGame/Classes/TgGame_Paladins_PvE_Survival.uc new file mode 100755 index 00000000..442183f5 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_PvE_Survival.uc @@ -0,0 +1,12 @@ +class TgGame_Paladins_PvE_Survival extends TgGame_Paladins_Survival + config(Game) + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + m_nStartingCredits=2000 + m_nPIESpawnTable=395 + m_nTargetPlayerCountForMercs=10 + m_GameType=TG_GAME_TYPE.TGT_CHAOS_PVE_SURVIVAL + m_bIsPracticeGametype=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_ShootingRange.uc b/exported/TgGame/Classes/TgGame_Paladins_ShootingRange.uc new file mode 100755 index 00000000..8cddb059 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_ShootingRange.uc @@ -0,0 +1,13 @@ +class TgGame_Paladins_ShootingRange extends TgGame_Paladins + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + m_bDeckSwappingAlwaysEnabled=true + m_fBaseRespawnTime=3.0000000 + m_nStartingCredits=9999 + m_fCreditsToGivePerTick=2.0000000 + m_GameType=TG_GAME_TYPE.TGT_CHAOS_SHOOTINGRANGE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Siege.uc b/exported/TgGame/Classes/TgGame_Paladins_Siege.uc new file mode 100755 index 00000000..16b283f8 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Siege.uc @@ -0,0 +1,1143 @@ +class TgGame_Paladins_Siege extends TgGame_PaladinsExtended + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +var config transient int m_nPointsForCapturing; +var config transient int m_nPointsForPayload; +var config transient int m_nPointsForDefending; +var config transient int m_nPointsForPayloadCheckpoint; +var config int m_nCreditsForWinningARound; +var config int m_nCreditsForCapturingPoint; +var config int m_nCreditsForSuccessfulDefend; +var config int m_nCreditsForSuccessfulPush; +var config bool m_bRespawnDeadPlayersAfterRound; +var config bool m_bRespawnLivePlayersAfterRound; +var config bool m_bRoundTreatment; +var config bool m_bCanWinOnDefense; +var bool m_bInCapturePointOvertime; +var bool m_bInPayloadOvertime; +var bool m_bDestroyPayloadCartAfterPayloadPhase; +var config bool m_bDoNotSwitchPoints; +var transient bool m_bHasHitCheckpoint; +var config bool m_bFadeOutAtRoundEnd; +var config float m_fLosingCaptureRateModifier; +var config float m_fDurationUntilCaptureOvertime; +var config float m_fCaptureOvertimeWarningDuration; +var const config float m_fPayloadDuration; +var const config float m_fPayloadOvertimeDuration; +var const config float m_fPayloadDurationCheckpoint; +var const config float m_fRoundEndRespawnDelay; +var int s_nCurrentRound; + +// Export UTgGame_Paladins_Siege::execTrackPushAttempt(FFrame&, void* const) +native function TrackPushAttempt(TgRepInfo_TaskForce Taskforce); + +// Export UTgGame_Paladins_Siege::execTrackPushSuccess(FFrame&, void* const) +native function TrackPushSuccess(TgRepInfo_TaskForce Taskforce); + +// Export UTgGame_Paladins_Siege::execTrackMapLane(FFrame&, void* const) +native function TrackMapLane(int laneID); + +// Export UTgGame_Paladins_Siege::execTickOvertime(FFrame&, void* const) +native function TickOvertime(float DeltaSeconds); + +function PostBeginPlay() +{ + local TgRepInfo_Game GRI; + + super.PostBeginPlay(); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x80 + if(GRI != none) + { + GRI.r_bFadeOutAtRoundEnd = m_bFadeOutAtRoundEnd; + GRI.bNetDirty = true; + } + //return; +} + +function TaskforceWin(int nTaskForce, TgGame_PaladinsExtended.EVictoryType VictoryType) +{ + // End:0x5C + if((GameplayEventsWriter != none) && GameplayEventsWriter.IsSessionInProgress()) + { + GameplayEventsWriter.LogGameIntEvent(1, nTaskForce); + } + // End:0x86 + if(int(VictoryType) == int(3)) + { + TriggerPayloadVictory(nTaskForce); + } + else + { + TriggerCapturePointVictory(); + } + super.TaskforceWin(nTaskForce, VictoryType); + //return; +} + +function SetOvertime(float fOvertime, float fOvertimeWarning) +{ + m_fDurationUntilCaptureOvertime = fOvertime; + // End:0x4A + if(fOvertimeWarning >= 0.0000000) + { + m_fCaptureOvertimeWarningDuration = float(Min(int(fOvertimeWarning), int(fOvertime))); + } + //return; +} + +function float GetPointCaptureScoreMultiplier(int nTaskForce) +{ + // End:0x62 + if(nTaskForce == 1) + { + // End:0x2F + if(m_nTF1Score < m_nTF2Score) + { + return 1.0000000; + } + else + { + return 1.0000000 + ((float(m_nTF1Score - m_nTF2Score) / 100.0000000) * m_fLosingCaptureRateModifier); + } + } + else + { + // End:0x82 + if(m_nTF2Score < m_nTF1Score) + { + return 1.0000000; + } + else + { + return 1.0000000 + ((float(m_nTF2Score - m_nTF1Score) / 100.0000000) * m_fLosingCaptureRateModifier); + } + } + //return ReturnValue; +} + +function RewardPointCapture(int nTaskForce) +{ + local Controller TheController; + local TgPaladinsController TgPC; + + super.RewardPointCapture(nTaskForce); + // End:0xD0 + if(m_nCreditsForCapturingPoint > 0) + { + // End:0xCF + foreach WorldInfo.AllControllers(Class'Engine.Controller', TheController) + { + TgPC = TgPaladinsController(TheController); + // End:0xCE + if(TgPC.GetTaskForceNumber() == nTaskForce) + { + TgPC.SetRewardValues(m_nCreditsForCapturingPoint, 0, self, 10); + } + } + } + //return; +} + +function TgChaosCapturePoint GetCurrentCapturePoint() +{ + // End:0x28 + if(m_bDoNotSwitchPoints && m_LastActiveCapturePoint != none) + { + return m_LastActiveCapturePoint; + } + return super.GetCurrentCapturePoint(); + //return ReturnValue; +} + +function PickNextObjective() +{ + local float fDurationUntilCaptureOvertime; + + // End:0x2D + if(!m_bDoNotSwitchPoints || m_LastActiveCapturePoint == none) + { + super.PickNextObjective(); + } + else + { + m_LastActiveCapturePoint.SetStatus(2); + UpdateObjectiveStates(); + // End:0x75 + if(m_fObjectiveRepickTickets < 1.0000000) + { + EndBroadcastTimer(); + } + } + SendClientsRequestHelpText(132); + fDurationUntilCaptureOvertime = m_fDurationUntilCaptureOvertime - m_fCaptureOvertimeWarningDuration; + // End:0xC9 + if(fDurationUntilCaptureOvertime > 0.0000000) + { + SetTimer(fDurationUntilCaptureOvertime, false, 'FogOvertimeWarning'); + } + //return; +} + +function EnableUltWhenObjectiveStateUpdated() +{ + //return; +} + +function EnableCreditSpoolingWhenObjectiveStateUpdated() +{ + //return; +} + +final function TgPawn_SiegeEngine_Payload GetSiegeEnginePush() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x53 + if(GRI != none) + { + return TgPawn_SiegeEngine_Payload(GRI.r_LanePusher); + } + return none; + //return ReturnValue; +} + +event LanePusherReachedInnerWall(TgPawn_LanePusher LanePusher) +{ + local int nTaskForce; + + // End:0x89 + if((LanePusher != none) && !m_bHasHitCheckpoint) + { + m_bHasHitCheckpoint = true; + nTaskForce = int(LanePusher.GetTaskForceNumber()); + GainPoints(nTaskForce, m_nPointsForPayloadCheckpoint, 3); + SetPayloadTimer(m_fPayloadDurationCheckpoint, false); + } + //return; +} + +event LanePusherReachedOuterWall(TgPawn_LanePusher LanePusher) +{ + local int nTaskForce; + local TgRepInfo_Game GRI; + + // End:0x18F + if(LanePusher != none) + { + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x62 + if(GRI != none) + { + TrackPushSuccess(GRI.r_AttackingTaskForce); + } + LanePusher.r_TargetActor = none; + nTaskForce = int(LanePusher.GetTaskForceNumber()); + GainPoints(nTaskForce, m_nPointsForPayload, 3); + GRI.r_nLastRoundWinner = byte(nTaskForce); + OnRoundEnded(); + // End:0x14E + if(int(Role) == int(ROLE_Authority)) + { + TriggerSuccessfulPush(nTaskForce); + GRI.r_nTaskForcePushSuccessful = nTaskForce; + } + GRI.bNetDirty = true; + LanePusher.DestroyIt(); + } + //return; +} + +function SetPayloadTimer(float fDuration, bool overtime) +{ + //return; +} + +function OnRoundEnded() +{ + local TgRepInfo_Game GRI; + + super.OnRoundEnded(); + // End:0x1CF + if(int(Role) == int(ROLE_Authority)) + { + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xF1 + if(GRI != none) + { + // End:0x6D + if(GRI.r_AttackingTaskForce == none) + { + } + GRI.r_nLastRoundAttacker = ((GRI.r_AttackingTaskForce != none) ? GRI.r_AttackingTaskForce.r_nTaskForce : 1); + AwardTPOnRoundEnded(); + } + AddPotGEventToAllPlayers(5); + PointCapturePhaseCleanup(); + PayloadPhaseCleanup(); + // End:0x193 + if(m_bRoundTreatment) + { + // End:0x193 + if(GRI != none) + { + // End:0x193 + if(GRI.r_Winner == none) + { + GRI.r_bRoundEnding = true; + GRI.bNetDirty = true; + } + } + } + SendClientRoundObjectivesCompleted(); + SetTimer(m_fRoundEndRespawnDelay, false, 'CaptureAndPayloadRoundEnded'); + // End:0x1CF + if(m_bEndRoundWhenPointCaptured) + { + GotoState('RoundEnded'); + } + } + //return; +} + +function AwardTPOnRoundEnded() +{ + local TgPlayerController WinningPlayer; + local TgAIController_BehaviorGod WinningAI; + local TgRepInfo_Player PRI; + local array WinningPRIs; + local TgRepInfo_TaskForce WinningTF; + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x58 + if((GRI == none) || int(GRI.r_nLastRoundWinner) == int(0)) + { + return; + } + WinningTF = GRI.GetTaskForce(int(GRI.r_nLastRoundWinner)); + // End:0xB3 + if(WinningTF == none) + { + return; + } + WinningTF.GetPlayers(WinningPRIs); + // End:0x384 + foreach WinningPRIs(PRI) + { + WinningPlayer = TgPlayerController(PRI.Owner); + WinningAI = TgAIController_BehaviorGod(PRI.Owner); + // End:0x1DE + if(m_nCreditsForWinningARound > 0) + { + // End:0x1A2 + if(WinningPlayer != none) + { + WinningPlayer.SetRewardValues(m_nCreditsForWinningARound, 0, self, 16); + } + else + { + // End:0x1DE + if(WinningAI != none) + { + WinningAI.SetRewardValues(m_nCreditsForWinningARound, 0, self, 16); + } + } + } + // End:0x2B2 + if((m_nCreditsForSuccessfulPush > 0) && int(GRI.r_nLastRoundAttacker) == int(WinningTF.r_nTaskForce)) + { + // End:0x273 + if(WinningPlayer != none) + { + WinningPlayer.SetRewardValues(m_nCreditsForSuccessfulPush, 0, self, 18); + } + else + { + // End:0x2AF + if(WinningAI != none) + { + WinningAI.SetRewardValues(m_nCreditsForSuccessfulPush, 0, self, 18); + } + } + } + else + { + // End:0x383 + if((m_nCreditsForSuccessfulDefend > 0) && int(GRI.r_nLastRoundAttacker) != int(WinningTF.r_nTaskForce)) + { + // End:0x347 + if(WinningPlayer != none) + { + WinningPlayer.SetRewardValues(m_nCreditsForSuccessfulDefend, 0, self, 17); + } + else + { + // End:0x383 + if(WinningAI != none) + { + WinningAI.SetRewardValues(m_nCreditsForSuccessfulDefend, 0, self, 17); + } + } + } + } + } + //return; +} + +function bool ShouldSelectNextCapturePointForLoading() +{ + // End:0x1A + if(m_bDoNotSwitchPoints) + { + return m_LastActiveCapturePoint == none; + } + return true; + //return ReturnValue; +} + +function CaptureAndPayloadRoundEnded() +{ + local TgRepInfo_Game GRI; + + // End:0x5D + if((GameplayEventsWriter != none) && GameplayEventsWriter.IsSessionInProgress()) + { + GameplayEventsWriter.LogGameIntEvent(3, s_nCurrentRound); + } + s_nCurrentRound++; + // End:0x161 + if(m_bRoundTreatment) + { + CloseSpawnGates(); + // End:0x161 + if(int(Role) == int(ROLE_Authority)) + { + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x161 + if(GRI != none) + { + GRI.r_bUltimatesLocked = true; + GRI.r_bRoundEnding = false; + GRI.r_nTaskForcePushSuccessful = 0; + GRI.r_nTaskForceDefenseSuccessful = 0; + GRI.bNetDirty = true; + } + } + } + // End:0x19D + if(m_bRespawnLivePlayersAfterRound || m_bRespawnDeadPlayersAfterRound) + { + RespawnAllPlayers(m_bRespawnLivePlayersAfterRound, m_bRespawnDeadPlayersAfterRound, true, true); + } + // End:0x200 + if((m_CapturePointQueue.Length > 0) && ShouldSelectNextCapturePointForLoading()) + { + // End:0x200 + if(m_CapturePointQueue[s_nCurrentCapturePointQueueIndex] != none) + { + m_CapturePointQueue[s_nCurrentCapturePointQueueIndex].SetStatus(2); + } + } + m_bCanSpoolCredits = false; + SendClientRoundEnded(); + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_CaptureAndPayloadRoundEnd', self); + ResetScores(); + // End:0x24C + if(m_bEndRoundWhenPointCaptured) + { + TransitionToNextRound(); + } + //return; +} + +function OpenSpawnGates() +{ + // End:0x5D + if((GameplayEventsWriter != none) && GameplayEventsWriter.IsSessionInProgress()) + { + GameplayEventsWriter.LogGameIntEvent(2, s_nCurrentRound); + } + super.OpenSpawnGates(); + SendClientsRequestHelpText(127); + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_CaptureAndPayloadRoundBegin', self); + //return; +} + +function BroadcastTimer() +{ + local TgPlayerController TgPC; + local float timeTotal, TimeRemaining; + + timeTotal = GetTimerRate('OpenSpawnGates'); + TimeRemaining = timeTotal - GetTimerCount('OpenSpawnGates'); + // End:0xC1 + if(IsTimerActive('PickNextObjective')) + { + // End:0xC0 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientUpdateRoundSetupTimer(TimeRemaining + float(1)); + } + } + CaptureSpawnAlert(TimeRemaining); + //return; +} + +function PointCapturePhaseCleanup() +{ + ClearTimer('FogOvertimeWarning'); + ClearTimer('FogOvertime'); + ClearTimer('ResumeConvergeCompletely'); + ClearTimer('StartFogConverging'); + ClearTimer('ConvergeFog'); + ClearTimer('ResumeConvergeCompletely'); + // End:0x8F + if(m_bInCapturePointOvertime) + { + FogOvertimeEnd(); + } + //return; +} + +function PayloadPhaseCleanup() +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce Taskforce1, Taskforce2; + + ClearTimer('OvertimeExpired'); + ClearTimer('PayloadExpired'); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x414 + if(GRI != none) + { + Taskforce1 = GRI.GetTaskForce(1); + // End:0xCF + if(Taskforce1 != none) + { + Taskforce1.r_bIsAttacking = false; + Taskforce1.bNetDirty = true; + } + Taskforce2 = GRI.GetTaskForce(2); + // End:0x14C + if(Taskforce2 != none) + { + Taskforce2.r_bIsAttacking = false; + Taskforce2.bNetDirty = true; + } + // End:0x264 + if(m_bDestroyPayloadCartAfterPayloadPhase) + { + // End:0x1B1 + if(GRI.r_LanePusher != none) + { + GRI.r_LanePusher.Suicide(); + } + // End:0x209 + if(GRI.r_LanePusher1 != none) + { + GRI.r_LanePusher1.Suicide(); + } + // End:0x261 + if(GRI.r_LanePusher2 != none) + { + GRI.r_LanePusher2.Suicide(); + } + } + else + { + // End:0x2F4 + if(GRI.r_LanePusher != none) + { + GRI.r_LanePusher.r_bAsleep = true; + GRI.r_LanePusher.bNetDirty = true; + } + // End:0x384 + if(GRI.r_LanePusher1 != none) + { + GRI.r_LanePusher1.r_bAsleep = true; + GRI.r_LanePusher1.bNetDirty = true; + } + // End:0x414 + if(GRI.r_LanePusher2 != none) + { + GRI.r_LanePusher2.r_bAsleep = true; + GRI.r_LanePusher2.bNetDirty = true; + } + } + } + //return; +} + +function NavigationPoint FindPlayerStart(Controller Player, optional byte InTeam, optional string IncomingName) +{ + local PlayerStart Start; + + Start = FindPlayerStartForCapturePoint(GetCurrentCapturePoint(), Player, false); + // End:0x46 + if(Start != none) + { + return Start; + } + return super(TgGame).FindPlayerStart(Player, InTeam, IncomingName); + //return ReturnValue; +} + +function TriggerSuccessfulDefense(int nTaskForce) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xD1 + if(GRI != none) + { + GRI.r_nTaskForceDefenseSuccessful = nTaskForce; + // End:0xD1 + if((GameplayEventsWriter != none) && GameplayEventsWriter.IsSessionInProgress()) + { + GameplayEventsWriter.LogTeamIntEvent(51, GRI.GetTaskForce(nTaskForce), 1); + } + } + //return; +} + +function TriggerSuccessfulPush(int nTaskForce) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xD1 + if(GRI != none) + { + GRI.r_nTaskForcePushSuccessful = nTaskForce; + // End:0xD1 + if((GameplayEventsWriter != none) && GameplayEventsWriter.IsSessionInProgress()) + { + GameplayEventsWriter.LogTeamIntEvent(51, GRI.GetTaskForce(nTaskForce), 1); + } + } + //return; +} + +simulated function TriggerCapturePointVictory() +{ + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_CaptureAndPayloadCapturePointVictory', self); + //return; +} + +simulated function TriggerPayloadVictory(int nTaskForce) +{ + // End:0x27 + if(nTaskForce == 1) + { + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_CaptureAndPayloadWinTF1', self); + } + else + { + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_CaptureAndPayloadWinTF2', self); + } + //return; +} + +function FogOvertimeWarning() +{ + // End:0x2F + if(m_LastActiveCapturePoint != none) + { + m_LastActiveCapturePoint.r_nFogAboutToBeActive++; + } + // End:0x5C + if(m_fCaptureOvertimeWarningDuration > 0.0000000) + { + SetTimer(m_fCaptureOvertimeWarningDuration, false, 'FogOvertime'); + } + else + { + FogOvertime(); + } + //return; +} + +function FogOvertime() +{ + local TgRepInfo_Game GRI; + + BeginPlayConverge(); + RespawnAllPlayers(false, true, true, false); + m_bInCapturePointOvertime = true; + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xC0 + if(GRI != none) + { + GRI.r_fConvergeStartDistance = m_fConvergeStartDistance; + GRI.r_fConvergeDistance = m_fConvergeStartDistance; + GRI.bNetDirty = true; + } + StartFogConverging(); + //return; +} + +function FogOvertimeEnd() +{ + GlobalRespawnTimeUpdate(m_fBaseRespawnTime, true); + m_bInCapturePointOvertime = false; + ClearTimer('ConvergeFog'); + ClearTimer('ResumeConvergeCompletely'); + EndPlayConverge(); + //return; +} + +function int GetGameSpawnPhase(TgPawn TgP) +{ + // End:0x5F + if(IsInState(m_AttackDefendState) && int(GetAttackingTaskForce().GetTeamNum()) == int(TgP.GetTaskForceNumber())) + { + return 1; + } + else + { + return 0; + } + //return ReturnValue; +} + +function int GetCurrentLane() +{ + return ((m_LastActiveCapturePoint != none) ? m_LastActiveCapturePoint.m_nLaneNumber : 0); + //return ReturnValue; +} + +state AttackDefend +{ + event BeginState(name PreviousStateName) + { + local TgRepInfo_Game GRI; + + super.BeginState(PreviousStateName); + m_bHasHitCheckpoint = false; + SetPayloadTimer(GetPayloadStartingDuration(), false); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x87 + if(GRI != none) + { + TrackPushAttempt(GRI.r_AttackingTaskForce); + } + //return; + } + + function float GetPayloadStartingDuration() + { + return ((ShouldUsePayloadCheckpointDuration()) ? m_fPayloadDurationCheckpoint : m_fPayloadDuration); + //return ReturnValue; + } + + function bool ShouldUsePayloadCheckpointDuration() + { + local int I; + local array Splines; + local TgSplineActor TgSpline; + local TgPawn_SiegeEngine_Payload LanePusher; + + LanePusher = GetSiegeEnginePush(); + // End:0x119 + if((LanePusher != none) && LanePusher.r_StartSpline != none) + { + LanePusher.r_StartSpline.GetAllConnectedSplineActors(Splines); + I = 0; + J0x91: + + // End:0x119 [Loop If] + if(I < Splines.Length) + { + TgSpline = TgSplineActor(Splines[I]); + // End:0x10B + if((TgSpline != none) && int(TgSpline.m_ActionPoint) == int(2)) + { + return true; + } + I++; + // [Loop Continue] + goto J0x91; + } + } + return false; + //return ReturnValue; + } + + function float GetOvertimeDuration() + { + return FMax(1.0000000, m_fPayloadOvertimeDuration - ((m_fPayloadOvertimeDuration * (m_fPointOvertimeDrainPercPerSec / 100.0000000)) * m_fOvertimeActiveTime)); + //return ReturnValue; + } + + function float GetPickNextObjectiveTime() + { + return super.GetPickNextObjectiveTime() + m_fRoundEndRespawnDelay; + //return ReturnValue; + } + + function float GetSpawnGateOpenTime() + { + return super.GetSpawnGateOpenTime() + m_fRoundEndRespawnDelay; + //return ReturnValue; + } + + function EndState(name NextStateName) + { + local TgRepInfo_Game GRI; + + m_fOvertimeActiveTime = 0.0000000; + m_bInPayloadOvertime = false; + SendSecondaryMissionTimerNotify(0, 0.0000000); + super(Object).EndState(NextStateName); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x8B + if(GRI != none) + { + GRI.r_bOvertime = false; + } + //return; + } + + function TgBotFactory_Minions GetCurrentBotFactory(TgChaosCapturePoint CapturePointToSpawn) + { + local TgRepInfo_Game GRI; + local array Factories; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x2D + if(GRI == none) + { + return none; + } + Factories = ((int(GRI.r_AttackingTaskForce.GetTeamNum()) == int(2)) ? CapturePointToSpawn.m_Taskforce2Factories : CapturePointToSpawn.m_Taskforce1Factories); + // End:0xC9 + if(Factories.Length < 1) + { + return none; + } + else + { + // End:0xE9 + if(Factories.Length < 2) + { + return Factories[0]; + } + else + { + return Factories[1]; + } + } + //return ReturnValue; + } + + function SpawnLanePusher() + { + local TgRepInfo_Game GRI; + local TgChaosCapturePoint CapturePointToSpawn; + local TgSplineActor StartSpline; + local TgBotFactory_Minions Factory; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x69 + if(((GRI == none) || GRI.r_AttackingTaskForce == none) || int(m_GameWinState) != int(0)) + { + return; + } + CapturePointToSpawn = GetCapturePointToSpawnSiegeEngineAt(); + // End:0x309 + if(CapturePointToSpawn != none) + { + Factory = GetCurrentBotFactory(CapturePointToSpawn); + // End:0x309 + if(Factory != none) + { + // End:0xEE + if(m_bOverrideSpawnTableID) + { + Factory.nSpawnTableId = GetNextSpawnTableId(); + } + Factory.ResetQueue(); + GRI.r_LanePusher = TgPawn_LanePusher(Factory.UseSpawnTable()); + StartSpline = ((int(GRI.r_AttackingTaskForce.GetTeamNum()) == int(2)) ? CapturePointToSpawn.m_Taskforce2PathStart : CapturePointToSpawn.m_Taskforce1PathStart); + GRI.r_LanePusher.SetSpline(StartSpline, true); + // End:0x309 + if((GameplayEventsWriter != none) && GameplayEventsWriter.IsSessionInProgress()) + { + GameplayEventsWriter.LogPlayerSpawnEvent(102, GRI.r_LanePusher.Controller, GRI.r_LanePusher.Class, int(GRI.r_AttackingTaskForce.GetTeamNum())); + } + } + } + SendLanePusherSpawnAlert(int(GRI.r_AttackingTaskForce.r_nTaskForce)); + SendLanePusherUpdateAlert(true, int(GRI.r_AttackingTaskForce.r_nTaskForce)); + //return; + } + + event Tick(float DeltaTime) + { + local TgPawn_SiegeEngine_Payload Payload; + local bool bAlliesNearby; + + super(Actor).Tick(DeltaTime); + Payload = GetSiegeEnginePush(); + // End:0x60 + if(Payload != none) + { + bAlliesNearby = Payload.HasFriendlyPlayersNearby(); + } + // End:0xC4 + if(m_bInPayloadOvertime) + { + // End:0xC4 + if(((Payload != none) && Payload.IsAliveAndWell()) && bAlliesNearby) + { + SetPayloadTimer(GetOvertimeDuration(), true); + } + } + //return; + } + + function SetPayloadTimer(float fDuration, bool overtime) + { + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x2D + if(GRI == none) + { + return; + } + // End:0x13D + if(overtime) + { + m_bInPayloadOvertime = true; + SetTimer(fDuration, false, 'OvertimeExpired'); + // End:0x13A + if((GRI.r_bOvertime != true) || GRI.r_fPayloadOvertimeStartDuration != fDuration) + { + GRI.r_bOvertime = true; + GRI.r_fPayloadOvertimeStartDuration = fDuration; + GRI.r_nPayloadOvertimeStateChange++; + GRI.bNetDirty = true; + } + } + else + { + m_bInPayloadOvertime = false; + ClearTimer('OvertimeExpired'); + SetTimer(fDuration, false, 'PayloadExpired'); + // End:0x1FB + if(GRI.r_bOvertime != false) + { + GRI.r_bOvertime = false; + GRI.r_nPayloadOvertimeStateChange++; + GRI.bNetDirty = true; + } + } + SetSecondaryMissionTime(fDuration); + SendSecondaryMissionTimerNotify(1, fDuration); + //return; + } + + function bool OvertimePreventsPayloadExpiring() + { + local TgRepInfo_Game GRI; + local TgPawn_SiegeEngine_Payload Payload; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x8B + if(GRI != none) + { + Payload = TgPawn_SiegeEngine_Payload(GRI.r_LanePusher); + // End:0x8B + if(Payload != none) + { + return Payload.HasFriendlyPlayersNearby(); + } + } + return false; + //return ReturnValue; + } + + function PayloadExpired(optional bool bForce) + { + local TgRepInfo_Game GRI; + local TgPawn_SiegeEngine_Payload Payload; + local int currentScore, localPointsForDefending; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x2E + if(GRI == none) + { + return; + } + Payload = TgPawn_SiegeEngine_Payload(GRI.r_LanePusher); + // End:0x2B4 + if(Payload != none) + { + // End:0xA4 + if(!bForce && OvertimePreventsPayloadExpiring()) + { + SetPayloadTimer(GetOvertimeDuration(), true); + } + else + { + GRI.r_bOvertime = false; + // End:0x14F + if(GRI.r_AttackingTaskForce != none) + { + GRI.r_nLastRoundWinner = ((int(GRI.r_AttackingTaskForce.r_nTaskForce) == int(1)) ? 2 : 1); + } + else + { + GRI.r_nLastRoundWinner = ((int(Payload.GetTaskForceNumber()) == int(1)) ? 2 : 1); + } + TriggerSuccessfulDefense(int(GRI.r_nLastRoundWinner)); + currentScore = ((int(GRI.r_nLastRoundWinner) == int(1)) ? m_nTF1Score : m_nTF2Score); + // End:0x253 + if(!m_bCanWinOnDefense && (currentScore - m_nPointsForDefending) <= 0) + { + localPointsForDefending = currentScore - 1; + } + else + { + localPointsForDefending = m_nPointsForDefending; + } + // End:0x2AA + if(localPointsForDefending > 0) + { + GainPoints(int(GRI.r_nLastRoundWinner), localPointsForDefending, 2); + } + OnRoundEnded(); + } + } + //return; + } + + function OvertimeExpired() + { + PayloadExpired(true); + //return; + } + + function KeepClientsInSync() + { + local float fTimeRemaining; + + super(TgGame_Mission).KeepClientsInSync(); + fTimeRemaining = ((m_bInPayloadOvertime) ? GetRemainingTimeForTimer('OvertimeExpired') : GetRemainingTimeForTimer('PayloadExpired')); + SendSecondaryMissionTimerNotify(TgRepInfo_Game(GameReplicationInfo).r_nSecondaryTimerState, fTimeRemaining); + //return; + } + + function Timer() + { + super(GameInfo).Timer(); + ScorePayload(); + //return; + } + stop; +} + +state RoundEnded +{ stop; +} + +state GameRunning +{ + function PointCaptured(int nTaskForce, optional bool bSuppressPointsForCapture) + { + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce Taskforce1, Taskforce2; + local TgPlayerController TgPC; + + TrackMapLane(GetCurrentLane()); + PointCapturePhaseCleanup(); + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x20E + if(GRI != none) + { + Taskforce1 = GRI.GetTaskForce(1); + // End:0xE6 + if(Taskforce1 != none) + { + Taskforce1.r_bIsAttacking = nTaskForce == 1; + Taskforce1.bNetDirty = true; + } + Taskforce2 = GRI.GetTaskForce(2); + // End:0x16F + if(Taskforce2 != none) + { + Taskforce2.r_bIsAttacking = nTaskForce == 2; + Taskforce2.bNetDirty = true; + } + GRI.bNetDirty = true; + // End:0x20E + if((GameplayEventsWriter != none) && GameplayEventsWriter.IsSessionInProgress()) + { + GameplayEventsWriter.LogTeamIntEvent(51, GRI.GetTaskForce(nTaskForce), 1); + } + } + // End:0x2B5 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + // End:0x293 + if(TgPC.GetTaskForceNumber() == nTaskForce) + { + TgPC.ClientRequestHelpText(129); + // End:0x2B4 + continue; + } + TgPC.ClientRequestHelpText(130); + } + // End:0x2E3 + if(!bSuppressPointsForCapture) + { + GainPoints(nTaskForce, m_nPointsForCapturing, 1); + } + super.PointCaptured(nTaskForce); + //return; + } + stop; +} + +defaultproperties +{ + m_nPointsForCapturing=1 + m_nPointsForPayload=1 + m_nPointsForDefending=1 + m_nPointsForPayloadCheckpoint=1 + m_nCreditsForCapturingPoint=300 + m_bRespawnDeadPlayersAfterRound=true + m_bRespawnLivePlayersAfterRound=true + m_bRoundTreatment=true + m_bDestroyPayloadCartAfterPayloadPhase=true + m_bDoNotSwitchPoints=true + m_fLosingCaptureRateModifier=15.0000000 + m_fPayloadDuration=150.0000000 + m_fPayloadOvertimeDuration=6.0000000 + m_fPayloadDurationCheckpoint=120.0000000 + m_fRoundEndRespawnDelay=5.0000000 + s_nCurrentRound=1 + m_nWinningScore=4 + m_bCanCaptureDuringSurvival=true + m_bRevivePlayersWhenSiegeEngineDies=false + m_bAutoMountAtRoundBegin=true + m_bResetPlayersNotInSpawnRoom=true + m_fObjectivePickTime=30.0000000 + m_fSetupObjectivePickTime=25.0000000 + m_fSpawnGateOpenTime=40.0000000 + m_fSetupSpawnGateOpenTime=50.0000000 + m_fDefenseRespawnIncrease=2.0000000 + m_fAttackRespawnIncrease=-4.0000000 + m_fCapturePointsPerSecond1=3.0000000 + m_fCapturePointsPerSecond2=3.0000000 + m_fCapturePointsPerSecond3=3.0000000 + m_fCapturePointsPerSecond4=3.0000000 + m_fCapturePointsPerSecond5=3.0000000 + m_GameType=TG_GAME_TYPE.TGT_CHAOS_CAPTUREANDPAYLOAD + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Siege_Practice.uc b/exported/TgGame/Classes/TgGame_Paladins_Siege_Practice.uc new file mode 100755 index 00000000..8c6f6375 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Siege_Practice.uc @@ -0,0 +1,11 @@ +class TgGame_Paladins_Siege_Practice extends TgGame_Paladins_Siege + config(Game) + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + m_nPIESpawnTable=402 + m_nTargetPlayerCountForMercs=10 + m_GameType=TG_GAME_TYPE.TGT_CHAOS_CAPTUREANDPAYLOAD_PRACTICE + m_bIsPracticeGametype=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Siege_Ranked.uc b/exported/TgGame/Classes/TgGame_Paladins_Siege_Ranked.uc new file mode 100755 index 00000000..5fe42074 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Siege_Ranked.uc @@ -0,0 +1,3 @@ +class TgGame_Paladins_Siege_Ranked extends TgGame_Paladins_Siege + config(Game) + hidecategories(Navigation,Movement,Collision); diff --git a/exported/TgGame/Classes/TgGame_Paladins_Survival.uc b/exported/TgGame/Classes/TgGame_Paladins_Survival.uc new file mode 100755 index 00000000..d6b8eefa --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Survival.uc @@ -0,0 +1,178 @@ +class TgGame_Paladins_Survival extends TgGame_Paladins_Siege + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +var int m_nWinningTaskforceThisRound; +var float m_fRoundStartTime; + +// Export UTgGame_Paladins_Survival::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +// Export UTgGame_Paladins_Survival::execSendStartRoundOnePointFromWinningAlert(FFrame&, void* const) +native function SendStartRoundOnePointFromWinningAlert(int nTaskForceNum); + +event PostBeginPlay() +{ + super.PostBeginPlay(); + BeginPlayConverge(); + m_fRoundStartTime = WorldInfo.TimeSeconds; + //return; +} + +function CheckAwardObjectiveScore(byte TaskForceNum, TgChaosCapturePoint capturePoint, int NumOnPoint, int NumContested) +{ + //return; +} + +function bool ShouldNextRoundBeASurvivalRound() +{ + return true; + //return ReturnValue; +} + +function float GetSpawnGateOpenTime() +{ + // End:0x5C + if((m_nTF1Score == m_nWinningScore) && m_nTF2Score == m_nWinningScore) + { + return ((m_fSetupSpawnGateOpenTime > 0.0000000) ? m_fSetupSpawnGateOpenTime : GetPickNextObjectiveTime()); + } + else + { + return ((m_fSpawnGateOpenTime > 0.0000000) ? m_fSpawnGateOpenTime : GetPickNextObjectiveTime()); + } + //return ReturnValue; +} + +function float GetPickNextObjectiveTime() +{ + // End:0x3D + if((m_nTF1Score == m_nWinningScore) && m_nTF2Score == m_nWinningScore) + { + return m_fSetupObjectivePickTime; + } + else + { + return m_fObjectivePickTime; + } + //return ReturnValue; +} + +function OnPawnDied(TgPawn Victim) +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce VictimTaskForce, killerTaskForce; + + super(TgGame_PaladinsExtended).OnPawnDied(Victim); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x1E5 + if(((GRI != none) && Victim.IsGod()) && !IsTimerActive('SurvivalModeRoundEnded')) + { + VictimTaskForce = GRI.GetTaskForce(int(Victim.GetTaskForceNumber())); + killerTaskForce = GRI.GetTaskForce(((int(Victim.GetTaskForceNumber()) == int(1)) ? 2 : 1)); + // End:0x1E5 + if((VictimTaskForce.GetNumAlivePlayers() == 0) && killerTaskForce.GetNumAlivePlayers() > 0) + { + SurvivalModeRoundWon(((int(VictimTaskForce.r_nTaskForce) == int(1)) ? GRI.GetTaskForce(2) : GRI.GetTaskForce(1))); + } + } + //return; +} + +function SurvivalModeRoundWon(TgRepInfo_TaskForce RoundWinningTF) +{ + local TgRepInfo_Game GRI; + local int nWinningTaskForce; + + // End:0x3A + if(RoundWinningTF != none) + { + nWinningTaskForce = int(RoundWinningTF.GetTeamNum()); + } + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xD1 + if(GRI != none) + { + GRI.r_nLastRoundWinner = byte(nWinningTaskForce); + GRI.r_bFogEnded = true; + GRI.r_bFogConverging = false; + } + EndPlayConverge(); + m_nWinningTaskforceThisRound = nWinningTaskForce; + ClearTimer('StartFogConverging'); + ClearTimer('ConvergeFog'); + ClearTimer('ResumeConvergeCompletely'); + SurvivalModeRoundEnded(); + // End:0x164 + if(m_LastActiveCapturePoint != none) + { + m_LastActiveCapturePoint.SetStatus(0); + } + //return; +} + +function SurvivalModeRoundEnded() +{ + SendClientRoundEnded(); + GainPoints(m_nWinningTaskforceThisRound, m_nPointsForCapturing, 5); + OnRoundEnded(); + //return; +} + +function bool ShouldSelectNextCapturePointForLoading() +{ + return true; + //return ReturnValue; +} + +function TaskforceWin(int nTaskForce, TgGame_PaladinsExtended.EVictoryType VictoryType) +{ + super.TaskforceWin(nTaskForce, VictoryType); + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_SurvivalGameEnd', self); + //return; +} + +function StartNewObjectiveRound(bool bFirstRound) +{ + local TgChaosCapturePoint_ParticleStorm CapPoint; + + // End:0x4E + foreach WorldInfo.DynamicActors(Class'TgGame.TgChaosCapturePoint_ParticleStorm', CapPoint) + { + CapPoint.ResetFog(); + } + m_fRoundStartTime = WorldInfo.TimeSeconds; + super(TgGame_PaladinsExtended).StartNewObjectiveRound(bFirstRound); + //return; +} + +function SetCapturePointActive(TgObjective Objective) +{ + local TgRepInfo_Game GRI; + local TgChaosCapturePoint_ParticleStorm SurvivalCaptureObjective; + + GRI = TgRepInfo_Game(GameReplicationInfo); + SurvivalCaptureObjective = TgChaosCapturePoint_ParticleStorm(Objective); + // End:0xA5 + if((GRI != none) && SurvivalCaptureObjective != none) + { + GRI.bNetDirty = true; + SetTimer(SurvivalCaptureObjective.m_fSecondsBeforeFogConverge, false, 'StartFogConverging'); + } + super(TgGame_PaladinsExtended).SetCapturePointActive(Objective); + //return; +} + +defaultproperties +{ + m_nWinningScore=5 + m_bEndRoundWhenPointCaptured=true + m_fSetupObjectivePickTime=30.0000000 + m_fSpawnGateOpenTime=0.0000000 + m_fSetupSpawnGateOpenTime=0.0000000 + m_nStartingCredits=1500 + m_fCreditsToGivePerTick=2.0000000 + m_GameType=TG_GAME_TYPE.TGT_CHAOS_SURVIVAL + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Survival_Practice.uc b/exported/TgGame/Classes/TgGame_Paladins_Survival_Practice.uc new file mode 100755 index 00000000..6917acae --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Survival_Practice.uc @@ -0,0 +1,11 @@ +class TgGame_Paladins_Survival_Practice extends TgGame_Paladins_Survival + config(Game) + hidecategories(Navigation,Movement,Collision); + +defaultproperties +{ + m_nPIESpawnTable=395 + m_nTargetPlayerCountForMercs=10 + m_GameType=TG_GAME_TYPE.TGT_CHAOS_SURVIVAL_PRACTICE + m_bIsPracticeGametype=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_TeamDeathMatch.uc b/exported/TgGame/Classes/TgGame_Paladins_TeamDeathMatch.uc new file mode 100755 index 00000000..6412c4c3 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_TeamDeathMatch.uc @@ -0,0 +1,39 @@ +class TgGame_Paladins_TeamDeathMatch extends TgGame_Paladins_Siege + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +var int m_lastPointTF; + +// Export UTgGame_Paladins_TeamDeathMatch::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +function OpenSpawnGates() +{ + local TgRepInfo_Game TgGRI; + + super.OpenSpawnGates(); + TgGRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x37 + if(TgGRI == none) + { + return; + } + TgGRI.r_bKillCamEnabled = false; + TgGRI.r_bAttackersKillCamEnabled = false; + TgGRI.r_bDefendersKillCamEnabled = false; + //return; +} + +defaultproperties +{ + m_lastPointTF=1 + m_nWinningScore=1 + m_fWinningTickets=50.0000000 + m_fTicketsForKill=1.0000000 + m_bCanPurchaseItemsAnywhere=true + m_bAutoMountOnRespawn=false + m_fBaseRespawnTime=5.0000000 + m_fCreditsToGivePerTick=5.0000000 + m_GameType=TG_GAME_TYPE.TGT_CHAOS_TEAM_DEATH_MATCH +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Paladins_Tutorial.uc b/exported/TgGame/Classes/TgGame_Paladins_Tutorial.uc new file mode 100755 index 00000000..fb8e4746 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Paladins_Tutorial.uc @@ -0,0 +1,2375 @@ +class TgGame_Paladins_Tutorial extends TgGame_Paladins_Siege + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +const PALADINS_ACTIVITY_WELL_TRAINED = 1975; + +enum ETutorialState +{ + ETutState_Invalid, // 0 + ETutState_TutorialIntro, // 1 + ETutState_MoveForwardBackward, // 2 + ETutState_MoveRightLeft, // 3 + ETutState_PlayerApproachBot, // 4 + ETutState_PlayerMoveToShootingRange,// 5 + ETutState_HealthBar, // 6 + ETutState_AutoAbility, // 7 + ETutState_AutoAbilityMultipleEnemies,// 8 + ETutState_BattleAbility, // 9 + ETutState_CooldownExplain, // 10 + ETutState_MovementAbility, // 11 + ETutState_PlayerMoveToUltimateShootingRange,// 12 + ETutState_AltAbility, // 13 + ETutState_UltimateAbilityCharge,// 14 + ETutState_UltimateAbility, // 15 + ETutState_Mount, // 16 + ETutState_PlayerMovingToJumpArea,// 17 + ETutState_Jump, // 18 + ETutState_PlayerMovingToObjective,// 19 + ETutState_CapturingObjective, // 20 + ETutState_ContestingObjective, // 21 + ETutState_PayloadSpawn, // 22 + ETutState_PayloadContest, // 23 + ETutState_PayloadPush, // 24 + ETutState_TutorialComplete, // 25 + ETutState_MAX // 26 +}; + +enum ETutorialAnnouncerLine +{ + Announcer_Line_Tutorial_A_PortalRoom_010,// 0 + Announcer_Line_Tutorial_A_PortalRoom_020,// 1 + Announcer_Line_Tutorial_A_PortalRoom_030,// 2 + Announcer_Line_Tutorial_A_PortalRoom_040,// 3 + Announcer_Line_Tutorial_A_PortalRoom_050,// 4 + Announcer_Line_Tutorial_A_PortalRoom_060,// 5 + Announcer_Line_Tutorial_A_PortalRoom_070,// 6 + Announcer_Line_Tutorial_A_PortalRoom_080,// 7 + Announcer_Line_Tutorial_A_PortalRoom_090,// 8 + Announcer_Line_Tutorial_A_PortalRoom_100,// 9 + Announcer_Line_Tutorial_A_PortalRoom_110,// 10 + Announcer_Line_Tutorial_B_BasicTraining_020,// 11 + Announcer_Line_Tutorial_B_BasicTraining_030,// 12 + Announcer_Line_Tutorial_B_BasicTraining_050,// 13 + Announcer_Line_Tutorial_B_BasicTraining_060,// 14 + Announcer_Line_Tutorial_B_BasicTraining_070,// 15 + Announcer_Line_Tutorial_B_BasicTraining_080,// 16 + Announcer_Line_Tutorial_B_BasicTraining_090,// 17 + Announcer_Line_Tutorial_B_BasicTraining_110,// 18 + Announcer_Line_Tutorial_B_BasicTraining_120,// 19 + Announcer_Line_Tutorial_B_BasicTraining_130,// 20 + Announcer_Line_Tutorial_B_BasicTraining_140,// 21 + Announcer_Line_Tutorial_B_BasicTraining_150,// 22 + Announcer_Line_Tutorial_B_BasicTraining_160,// 23 + Announcer_Line_Tutorial_B_BasicTraining_170,// 24 + Announcer_Line_Tutorial_B_BasicTraining_180,// 25 + Announcer_Line_Tutorial_B_BasicTraining_190,// 26 + Announcer_Line_Tutorial_B_BasicTraining_200,// 27 + Announcer_Line_Tutorial_B_BasicTraining_210,// 28 + Announcer_Line_Tutorial_B_BasicTraining_220,// 29 + Announcer_Line_Tutorial_B_BasicTraining_230,// 30 + Announcer_Line_Tutorial_B_BasicTraining_240,// 31 + Announcer_Line_Tutorial_B_BasicTraining_250,// 32 + Announcer_Line_Tutorial_B_BasicTraining_260,// 33 + Announcer_Line_Tutorial_B_BasicTraining_270,// 34 + Announcer_Line_Tutorial_B_BasicTraining_280,// 35 + Announcer_Line_Tutorial_B_BasicTraining_290,// 36 + Announcer_Line_Tutorial_B_BasicTraining_300,// 37 + Announcer_Line_Tutorial_B_BasicTraining_310,// 38 + Announcer_Line_Tutorial_B_BasicTraining_320,// 39 + Announcer_Line_Tutorial_B_BasicTraining_330,// 40 + Announcer_Line_Tutorial_B_BasicTraining_340,// 41 + Announcer_Line_Tutorial_B_BasicTraining_350,// 42 + Announcer_Line_Tutorial_B_BasicTraining_360,// 43 + Announcer_Line_Tutorial_B_BasicTraining_370,// 44 + Announcer_Line_Tutorial_B_BasicTraining_380,// 45 + Announcer_Line_Tutorial_B_BasicTraining_390,// 46 + Announcer_Line_Tutorial_B_BasicTraining_400,// 47 + Announcer_Line_Tutorial_B_BasicTraining_410,// 48 + Announcer_Line_Tutorial_B_BasicTraining_420,// 49 + Announcer_Line_Tutorial_B_BasicTraining_430,// 50 + Announcer_Line_Tutorial_B_BasicTraining_440,// 51 + Announcer_Line_Tutorial_B_BasicTraining_450,// 52 + Announcer_Line_Tutorial_B_BasicTraining_460,// 53 + Announcer_Line_Tutorial_B_BasicTraining_470,// 54 + Announcer_Line_Tutorial_C_PortalRoom2_010,// 55 + Announcer_Line_Tutorial_C_PortalRoom2_020,// 56 + Announcer_Line_Tutorial_C_PortalRoom2_030,// 57 + Announcer_Line_Tutorial_C_PortalRoom2_040,// 58 + Announcer_Line_Tutorial_C_PortalRoom2_050,// 59 + Announcer_Line_Tutorial_C_PortalRoom2_060,// 60 + Announcer_Line_Tutorial_C_PortalRoom2_070,// 61 + Announcer_Line_Tutorial_C_PortalRoom2_080,// 62 + Announcer_Line_Tutorial_C_PortalRoom2_085,// 63 + Announcer_Line_Tutorial_C_PortalRoom2_090,// 64 + Announcer_Line_Tutorial_C_PortalRoom2_100,// 65 + Announcer_Line_Tutorial_C_PortalRoom2_110,// 66 + Announcer_Line_Tutorial_D_Objective_012,// 67 + Announcer_Line_Tutorial_D_Objective_015,// 68 + Announcer_Line_Tutorial_D_Objective_018,// 69 + Announcer_Line_Tutorial_D_Objective_020,// 70 + Announcer_Line_Tutorial_D_Objective_022,// 71 + Announcer_Line_Tutorial_D_Objective_025,// 72 + Announcer_Line_Tutorial_D_Objective_028,// 73 + Announcer_Line_Tutorial_D_Objective_030,// 74 + Announcer_Line_Tutorial_D_Objective_040,// 75 + Announcer_Line_Tutorial_D_Objective_050,// 76 + Announcer_Line_Tutorial_D_Objective_060,// 77 + Announcer_Line_Tutorial_D_Objective_065,// 78 + Announcer_Line_Tutorial_D_Objective_070,// 79 + Announcer_Line_Tutorial_D_Objective_080,// 80 + Announcer_Line_Tutorial_D_Objective_090,// 81 + Announcer_Line_Tutorial_D_Objective_100,// 82 + Announcer_Line_Tutorial_D_Objective_110,// 83 + Announcer_Line_Tutorial_D_Objective_120,// 84 + Announcer_Line_Tutorial_D_Objective_130,// 85 + Announcer_Line_Tutorial_D_Objective_140,// 86 + Announcer_Line_Tutorial_D_Objective_150,// 87 + Announcer_Line_Tutorial_D_Objective_160,// 88 + Announcer_Line_Tutorial_D_Objective_170,// 89 + Announcer_Line_Tutorial_MAX // 90 +}; + +enum ETutorialUI +{ + ETUI_Health, // 0 + ETUI_Auto, // 1 + ETUI_BattleAbility, // 2 + ETUI_MovementAbility, // 3 + ETUI_Alt, // 4 + ETUI_Ultimate, // 5 + ETUI_CapturePoint, // 6 + ETUI_Payload, // 7 + ETUI_ScoreSection, // 8 + ETUI_PushTime, // 9 + ETUI_Cards, // 10 + ETUI_Prompt, // 11 + ETUI_Killfeed, // 12 + ETUI_MAX // 13 +}; + +var transient TgGame_Paladins_Tutorial.ETutorialState m_eCurrentState; +var private transient TgTutorialInfo TutorialInfo; +var float m_fSetupPauseTime; +var bool m_bSetupTimerPaused; +var transient bool m_bReceivedMovementAbility; +var transient bool m_bReachedJumpLowerArea; +var transient bool m_bReachedJumpUpperArea; +var transient bool m_bDamagedWithAlt; +var transient bool m_bDamagedWithBattle; +var transient bool m_bDamagedWithUlt; +var transient bool m_bPointCaptured; +var transient bool m_bWaitingForUIReady; +var transient float m_fReceivedMoveForwardSeconds; +var transient float m_fReceivedMoveBackwardSeconds; +var transient float m_fReceivedMoveLeftSeconds; +var transient float m_fReceivedMoveRightSeconds; +var transient float m_fVolumeStandTime; +var transient float m_fLastFrameDeltaTime; +var AkEvent m_EndAnnouncerAudioEvent; + +// Export UTgGame_Paladins_Tutorial::execEnableTutorialUI(FFrame&, void* const) +native exec function EnableTutorialUI(TgGame_Paladins_Tutorial.ETutorialUI TutUIElement, bool bEnable, optional float fFadeTime = 0.5000000); + +// Export UTgGame_Paladins_Tutorial::execAwardAchievement(FFrame&, void* const) +native function AwardAchievement(); + +// Export UTgGame_Paladins_Tutorial::execGetWinningTaskforce(FFrame&, void* const) +native function int GetWinningTaskforce(); + +// Export UTgGame_Paladins_Tutorial::execHideWorldOverlays(FFrame&, void* const) +native function HideWorldOverlays(); + +// Export UTgGame_Paladins_Tutorial::execIsUIReady(FFrame&, void* const) +native function bool IsUIReady(); + +// Export UTgGame_Paladins_Tutorial::execGetObjectiveMsg(FFrame&, void* const) +native function int GetObjectiveMsg(); + +// Export UTgGame_Paladins_Tutorial::execGetGamepadObjectiveMsg(FFrame&, void* const) +native function int GetGamepadObjectiveMsg(); + +// Export UTgGame_Paladins_Tutorial::execGetAnnouncerSTM(FFrame&, void* const) +native function int GetAnnouncerSTM(TgGame_Paladins_Tutorial.ETutorialAnnouncerLine eLine); + +function StartMatch() +{ + local TgPawn TgP; + local TgPlayerController TgPC; + local TgRepInfo_Game GRI; + + TgPC = GetLocalTgPlayerController(); + // End:0x1AE + if(TgPC != none) + { + TgPC.ConsoleCommand("switchclass Viktor", true); + TgPC.SetAllInputAllowed(false); + TgPC.bGodMode = true; + TgP = TgPawn(TgPC.Pawn); + // End:0x141 + if(TgP != none) + { + TgP.PrepareIntro(); + TgP.SetTaskForceNumber(1); + TgP.s_bHasInteractedWithStore = true; + } + TgPC.SetCanPurchaseFlag(false); + TgPC.m_bShowChampionOverviewTip = false; + TgPC.ClearTimer('ShowChampionOverviewTip'); + } + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x233 + if(GRI != none) + { + GRI.r_bBlockCreditGain = true; + GRI.r_bBlockEnergyGain = true; + } + super(TgGame_Mission).StartMatch(); + //return; +} + +function StartGameMode() +{ + // End:0x13 + if((GetTutorialInfo()) == none) + { + } + else + { + GotoState('TutorialIntro'); + } + //return; +} + +function LocalPlayerInputReceived(TgPlayerController.EPlayerInputType InputType) +{ + //return; +} + +event LocalPlayerDeviceOnDamaged(out OnDamagedParams Params) +{ + //return; +} + +function PointCaptured(int nTaskForce, optional bool bSuppressPointsForCapture) +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce Taskforce1; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x61 + if(GRI != none) + { + GRI.r_CapturingTaskForce = none; + } + // End:0x106 + if(nTaskForce == 1) + { + m_bPointCaptured = true; + Taskforce1 = GRI.GetTaskForce(1); + // End:0x103 + if(Taskforce1 != none) + { + Taskforce1.r_bIsAttacking = nTaskForce == 1; + Taskforce1.bNetDirty = true; + } + } + //return; +} + +function bool IsAllAudioFinished() +{ + return (((!IsTimerActive('Audio1') && !IsTimerActive('Audio2')) && !IsTimerActive('Audio3')) && !IsTimerActive('Audio4')) && !IsTimerActive('Audio5'); + //return ReturnValue; +} + +function HaltAllAudio() +{ + PlayAK(m_EndAnnouncerAudioEvent); + TryClearTimer('Audio1'); + TryClearTimer('Audio2'); + TryClearTimer('Audio3'); + TryClearTimer('Audio4'); + TryClearTimer('Audio5'); + //return; +} + +function float GetRepeatInstructionTime() +{ + return GetTutorialInfo().fRepeatInstructionTime; + //return ReturnValue; +} + +function StartRepeatInstructions() +{ + SetTimer(GetRepeatInstructionTime(), false, 'RepeatInstructions'); + //return; +} + +function StopRepeatInstructions() +{ + // End:0x2B + if(IsTimerActive('RepeatInstructions')) + { + ClearTimer('RepeatInstructions'); + } + //return; +} + +function RepeatInstructions() +{ + StartRepeatInstructions(); + //return; +} + +function DisableUI() +{ + local int X; + + X = 0; + J0x0B: + + // End:0x44 [Loop If] + if(X < 13) + { + EnableTutorialUI(byte(X), false, 0.0500000); + X++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function SpawnCurrentBots() +{ + local TgBotFactory Factory; + + Factory = GetCurrentBotFactory(); + // End:0x61 + if(Factory != none) + { + Factory.ResetQueue(); + Factory.SpawnNextBot(); + } + //return; +} + +event bool CurrentBotsDead() +{ + local TgBotFactory Factory; + + Factory = GetCurrentBotFactory(); + return (Factory == none) || (Factory.nCurrentCount == 0) && Factory.m_SpawnQueue.Length == 0; + //return ReturnValue; +} + +function TgBotFactory GetCurrentBotFactory() +{ + return none; + //return ReturnValue; +} + +function KillHelper() +{ + GetTutorialInfo().DestroyHelperBot(); + //return; +} + +function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() +{ + return 0; + //return ReturnValue; +} + +event Tick(float DeltaSeconds) +{ + super(Actor).Tick(DeltaSeconds); + m_fLastFrameDeltaTime = DeltaSeconds; + m_eCurrentState = GetTutorialState(); + //return; +} + +function float GetPointCaptureScoreMultiplier(int nTaskForce) +{ + // End:0x65 + if((nTaskForce == 1) && (IsInState('CapturingObjective') || IsInState('BotMovingToContestObjective')) || IsInState('ContestingObjective')) + { + return GetTutorialInfo().fPlayerTeamCaptureMultiplier; + } + return 0.0000000; + //return ReturnValue; +} + +function PauseSetupTimerAt(float TimeRemaining) +{ + // End:0xCB + if(((TimeRemaining > 0.0000000) && !m_bSetupTimerPaused) && IsTimerActive('OpenSpawnGates')) + { + // End:0xCB + if((GetTimerRate('OpenSpawnGates') - GetTimerCount('OpenSpawnGates')) > TimeRemaining) + { + m_fSetupPauseTime = TimeRemaining; + SetTimer((GetTimerRate('OpenSpawnGates') - GetTimerCount('OpenSpawnGates')) - m_fSetupPauseTime, false, 'PauseSetupTimer'); + } + } + //return; +} + +function PauseSetupTimer() +{ + ClearTimer('PauseSetupTimer'); + m_bSetupTimerPaused = true; + // End:0x4B + if(IsTimerActive('StartBroadcastTimer')) + { + ClearTimer('StartBroadcastTimer'); + } + // End:0x76 + if(IsTimerActive('BroadcastTimer')) + { + ClearTimer('BroadcastTimer'); + } + // End:0xA2 + if(IsTimerActive('PickNextObjective')) + { + PauseTimer(true, 'PickNextObjective'); + } + // End:0xCE + if(IsTimerActive('OpenSpawnGates')) + { + PauseTimer(true, 'OpenSpawnGates'); + } + // End:0xFA + if(IsTimerActive('AutoMountAllPlayers')) + { + PauseTimer(true, 'AutoMountAllPlayers'); + } + // End:0x126 + if(IsTimerActive('AutoMountAttackers')) + { + PauseTimer(true, 'AutoMountAttackers'); + } + // End:0x152 + if(IsTimerActive('AutoMountDefenders')) + { + PauseTimer(true, 'AutoMountDefenders'); + } + //return; +} + +function UnpauseSetupTimer() +{ + // End:0x1E0 + if(m_bSetupTimerPaused) + { + // End:0x39 + if(IsTimerActive('StartBroadcastTimer')) + { + PauseTimer(false, 'StartBroadcastTimer'); + } + // End:0x65 + if(IsTimerActive('BroadcastTimer')) + { + PauseTimer(false, 'BroadcastTimer'); + } + // End:0x91 + if(IsTimerActive('PickNextObjective')) + { + PauseTimer(false, 'PickNextObjective'); + } + // End:0xBD + if(IsTimerActive('OpenSpawnGates')) + { + PauseTimer(false, 'OpenSpawnGates'); + } + // End:0xE9 + if(IsTimerActive('AutoMountAllPlayers')) + { + PauseTimer(false, 'AutoMountAllPlayers'); + } + // End:0x115 + if(IsTimerActive('AutoMountAttackers')) + { + PauseTimer(false, 'AutoMountAttackers'); + } + // End:0x141 + if(IsTimerActive('AutoMountDefenders')) + { + PauseTimer(false, 'AutoMountDefenders'); + } + // End:0x16D + if(IsTimerActive('ResetAllPlayersNotInSpawnRoom')) + { + PauseTimer(false, 'ResetAllPlayersNotInSpawnRoom'); + } + // End:0x199 + if(IsTimerActive('ResetAttackersNotInSpawnRoom')) + { + PauseTimer(false, 'ResetAttackersNotInSpawnRoom'); + } + // End:0x1C5 + if(IsTimerActive('ResetDefendersNotInSpawnRoom')) + { + PauseTimer(false, 'ResetDefendersNotInSpawnRoom'); + } + m_fSetupPauseTime = -1.0000000; + m_bSetupTimerPaused = false; + } + //return; +} + +function TrySetTimer(float fLength, optional bool bLoop = false, optional name FunctionToCall = 'Timer') +{ + // End:0x4B + if(!IsTimerActive(FunctionToCall)) + { + SetTimer(fLength, bLoop, FunctionToCall); + } + //return; +} + +function TryClearTimer(name TimerName) +{ + // End:0x2B + if(IsTimerActive(TimerName)) + { + ClearTimer(TimerName); + } + //return; +} + +function TgPlayerController GetLocalTgPlayerController() +{ + return TgPlayerController(GetALocalPlayerController()); + //return ReturnValue; +} + +function TgPawn GetLocalPlayerPawn() +{ + local TgPlayerController TgPC; + + TgPC = GetLocalTgPlayerController(); + // End:0x4B + if(TgPC != none) + { + return TgPawn(TgPC.Pawn); + } + //return ReturnValue; +} + +function TgDevice GetLocalPlayerDevice(TgObject.TG_EQUIP_POINT eqp) +{ + local TgPawn TgP; + + TgP = GetLocalPlayerPawn(); + // End:0x4E + if(TgP != none) + { + return TgP.GetDeviceByEqPoint(int(eqp)); + } + return none; + //return ReturnValue; +} + +function TgTutorialInfo GetTutorialInfo() +{ + local TgTutorialInfo FoundInfo; + + // End:0x73 + if(TutorialInfo == none) + { + // End:0x72 + foreach WorldInfo.AllActors(Class'TgGame.TgTutorialInfo', FoundInfo) + { + // End:0x71 + if(FoundInfo != none) + { + // End:0x71 + if(TutorialInfo == none) + { + TutorialInfo = FoundInfo; + // End:0x71 + continue; + } + } + } + } + return TutorialInfo; + //return ReturnValue; +} + +function PlayAK(AkBaseSoundObject AKObj, optional float fLength, optional name NextFunction = 'None') +{ + local TgPlayerController TgPC; + + TgPC = GetLocalTgPlayerController(); + // End:0x59 + if(TgPC != none) + { + TgPC.ClientPlaySoundBase(AKObj); + } + // End:0x9C + if((fLength > 0.0000000) && NextFunction != 'None') + { + SetTimer(fLength, false, NextFunction); + } + //return; +} + +function PlayAnnouncer(TgGame_Paladins_Tutorial.ETutorialAnnouncerLine eAnnouncerLine, optional float fLength, optional name NextFunction = 'None') +{ + local TgPlayerController TgPC; + local int nAnnouncerSTM; + + nAnnouncerSTM = GetAnnouncerSTM(eAnnouncerLine); + // End:0x10E + if(nAnnouncerSTM > 0) + { + TgPC = GetLocalTgPlayerController(); + // End:0xCB + if((TgPC != none) && TgPC.c_SubtitledMessages != none) + { + TgPC.c_SubtitledMessages.PlaySubtitledMessage(nAnnouncerSTM, true, true, m_EndAnnouncerAudioEvent); + } + // End:0x10E + if((fLength > 0.0000000) && NextFunction != 'None') + { + SetTimer(fLength, false, NextFunction); + } + } + //return; +} + +function GainPoints(int nTaskForce, int numPoints, TgGame_PaladinsExtended.EVictoryType VictoryType) +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce Taskforce; + + switch(nTaskForce) + { + // End:0x2E + case 1: + m_nTF1Score -= numPoints; + // End:0x4D + break; + // End:0x4A + case 2: + m_nTF2Score -= numPoints; + // End:0x4D + break; + // End:0xFFFF + default: + break; + } + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x122 + if(GRI != none) + { + Taskforce = GRI.GetTaskForce(nTaskForce); + // End:0x122 + if(Taskforce != none) + { + Taskforce.r_nScore = GetScore(nTaskForce); + Taskforce.bNetDirty = true; + } + } + //return; +} + +event CheckGameState() +{ + local TgRepInfo_Game GRI; + local TgPlayerController PC; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x43 + if((GRI == none) || int(m_GameWinState) != int(0)) + { + return; + } + m_GameWinState = 2; + GRI.r_Winner = GRI.GetTaskForce(1); + GRI.bNetDirty = true; + // End:0x12F + if(int(m_GameWinState) != int(0)) + { + // End:0x121 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', PC) + { + PC.SendClientSetGameWinState(m_GameWinState); + } + BeginEndMission(); + } + //return; +} + +state TutorialIntro +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 1; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + local TgPawn_Character TgP; + local TgPlayerController TgPC; + + TgPC = GetLocalTgPlayerController(); + // End:0x101 + if(TgPC != none) + { + TgPC.SetAllInputAllowed(false); + TgPC.HideMeshes(true, false); + TgP = TgPawn_Character(TgPC.Pawn); + // End:0x101 + if(TgP != none) + { + TgP.PlayIntroAnims(); + TgP.m_fEnergyChargeMultiplier = GetTutorialInfo().fEnergyChargeMultiplier; + } + } + CloseSpawnGates(); + m_bWaitingForUIReady = true; + //return; + } + + event Tick(float DeltaSeconds) + { + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0x94 + if(m_bWaitingForUIReady && IsUIReady()) + { + m_bWaitingForUIReady = false; + Class'TgGame.TgSeqEvent_Tutorial'.static.TriggerGlobal(self, 0); + DisableUI(); + SetTimer(0.5000000, false, 'DisableUI'); + PlayAnnouncer(0, 4.0000000, 'Audio1'); + } + //return; + } + + function Audio1() + { + SetTimer(GetTutorialInfo().fIntroExtensionTime, false, 'IntroDelay'); + //return; + } + + function IntroDelay() + { + GotoState('MoveForwardBackward'); + //return; + } + stop; +} + +state MoveForwardBackward +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 2; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + local TgPlayerController TgPC; + + TgPC = GetLocalTgPlayerController(); + // End:0x155 + if(TgPC != none) + { + TgPC.SetInputAllowed(6, true); + TgPC.SetInputAllowed(7, true); + TgPC.SetInputAllowed(4, true); + TgPC.SetInputAllowed(5, true); + TgPC.SetInputAllowed(0, true); + TgPC.SetInputAllowed(1, true); + TgPC.SetInputAllowed(3, true); + TgPC.SetInputAllowed(2, true); + TgPC.SetInputAllowed(14, true); + } + PlayAnnouncer(5, 2.0000000, 'Audio1'); + //return; + } + + function LocalPlayerInputReceived(TgPlayerController.EPlayerInputType InputType) + { + switch(InputType) + { + // End:0x2F + case 0: + m_fReceivedMoveForwardSeconds += m_fLastFrameDeltaTime; + // End:0x4E + break; + // End:0x4B + case 1: + m_fReceivedMoveBackwardSeconds += m_fLastFrameDeltaTime; + // End:0x4E + break; + // End:0xFFFF + default: + break; + } + //return; + } + + event Tick(float DeltaSeconds) + { + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0x91 + if((m_fReceivedMoveForwardSeconds >= GetTutorialInfo().fButtonHoldTime) && m_fReceivedMoveBackwardSeconds >= GetTutorialInfo().fButtonHoldTime) + { + HaltAllAudio(); + StopRepeatInstructions(); + GotoState('MoveRightLeft'); + } + //return; + } + + function Audio1() + { + PlayAnnouncer(6, 4.0000000, 'Audio2'); + //return; + } + + function Audio2() + { + StartRepeatInstructions(); + //return; + } + + function RepeatInstructions() + { + PlayAnnouncer(6, 4.0000000, 'Audio2'); + //return; + } + stop; +} + +state MoveRightLeft +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 3; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + PlayAnnouncer(7, 3.0000000, 'Audio1'); + //return; + } + + function LocalPlayerInputReceived(TgPlayerController.EPlayerInputType InputType) + { + switch(InputType) + { + // End:0x2F + case 3: + m_fReceivedMoveLeftSeconds += m_fLastFrameDeltaTime; + // End:0x4E + break; + // End:0x4B + case 2: + m_fReceivedMoveRightSeconds += m_fLastFrameDeltaTime; + // End:0x4E + break; + // End:0xFFFF + default: + break; + } + //return; + } + + event Tick(float DeltaSeconds) + { + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0x91 + if((m_fReceivedMoveLeftSeconds >= GetTutorialInfo().fButtonHoldTime) && m_fReceivedMoveRightSeconds >= GetTutorialInfo().fButtonHoldTime) + { + HaltAllAudio(); + StopRepeatInstructions(); + GotoState('PlayerApproachBot'); + } + //return; + } + + function Audio1() + { + StartRepeatInstructions(); + //return; + } + + function RepeatInstructions() + { + PlayAnnouncer(7, 3.0000000, 'Audio1'); + //return; + } + stop; +} + +state PlayerApproachBot +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 4; + //return ReturnValue; + } + + function TgBotFactory GetCurrentBotFactory() + { + return GetTutorialInfo().HelperBotFactory; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + GetTutorialInfo().SpawnHelperBot(); + Class'TgGame.TgSeqEvent_Tutorial'.static.TriggerGlobal(self, 1); + PlayAK(AkEvent'WW_VGS_Ying.Ying_VGS_Other_G_H_Play', 1.5000000, 'Audio1'); + //return; + } + + function RepeatInstructions() + { + PlayAnnouncer(13, 2.5000000, 'Audio2'); + //return; + } + + function Audio1() + { + RepeatInstructions(); + //return; + } + + function Audio2() + { + StartRepeatInstructions(); + //return; + } + + event Tick(float DeltaSeconds) + { + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0x94 + if((GetTutorialInfo().ApproachHelperArea != none) && GetTutorialInfo().ApproachHelperArea.m_bHasLocalPawn) + { + HaltAllAudio(); + StopRepeatInstructions(); + GotoState('PlayerMoveToShootingRange'); + } + //return; + } + stop; +} + +state PlayerMoveToShootingRange +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 5; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + OpenSpawnGates(); + Class'TgGame.TgSeqEvent_Tutorial'.static.TriggerGlobal(self, 2); + m_fVolumeStandTime = 0.0000000; + SetTimer(0.2500000, false, 'MoveBotToNextArea'); + //return; + } + + function MoveBotToNextArea() + { + GetTutorialInfo().MoveHelperToActor(GetTutorialInfo().HelperMoveTargetAutoRange); + PlayAK(AkEvent'WW_VGS_Ying.Ying_VGS_Other_V_F_Play', 1.5000000, 'Audio1'); + //return; + } + + event Tick(float DeltaSeconds) + { + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0xF7 + if((GetTutorialInfo().AutoShootingRangeStandingTargetArea != none) && GetTutorialInfo().AutoShootingRangeStandingTargetArea.m_bHasLocalPawn) + { + m_fVolumeStandTime += m_fLastFrameDeltaTime; + // End:0xF7 + if(m_fVolumeStandTime > GetTutorialInfo().fVolumeStandTime) + { + HaltAllAudio(); + StopRepeatInstructions(); + Class'TgGame.TgSeqEvent_Tutorial'.static.TriggerGlobal(self, 3); + GotoState('HealthBar'); + } + } + // End:0x193 + if(!IsTimerActive('MoveBotToNextArea')) + { + // End:0x193 + if(!GetTutorialInfo().HelperIsNavigatingToOrAtDestination(GetTutorialInfo().HelperMoveTargetAutoRange)) + { + GetTutorialInfo().MoveHelperToActor(GetTutorialInfo().HelperMoveTargetAutoRange); + } + } + //return; + } + + function RepeatInstructions() + { + PlayAnnouncer(13, 2.5000000, 'Audio1'); + //return; + } + + function Audio1() + { + StartRepeatInstructions(); + //return; + } + stop; +} + +state HealthBar +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 6; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + EnableTutorialUI(0, true); + PlayAnnouncer(15, 6.0000000, 'Audio1'); + //return; + } + + function Audio1() + { + PlayAnnouncer(16, 6.0000000, 'Audio2'); + //return; + } + + function Audio2() + { + PlayAnnouncer(17, 5.0000000, 'Audio3'); + //return; + } + + function Audio3() + { + GotoState('AutoAbility'); + //return; + } + stop; +} + +state AutoAbility +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 7; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + local TgPawn TgP; + local TgPlayerController TgPC; + + TgPC = GetLocalTgPlayerController(); + // End:0x105 + if(TgPC != none) + { + TgPC.SetInputAllowed(8, true); + TgPC.SetInputAllowed(13, true); + TgPC.HideMeshes(false, false); + TgP = GetLocalPlayerPawn(); + // End:0x105 + if((TgP != none) && TgP.m_WeaponMesh != none) + { + TgP.m_WeaponMesh.PlayWeaponQuickRetrieve(); + } + } + EnableTutorialUI(1, true); + PlayAnnouncer(18, 2.5000000, 'Audio1'); + //return; + } + + function Audio1() + { + PlayAnnouncer(19, 3.5000000, 'Audio2'); + //return; + } + + function Audio2() + { + PlayAK(AkEvent'WW_VGS_Ying.Ying_VGS_Other_G_R_Play', 1.5000000, 'Audio3'); + //return; + } + + function Audio3() + { + SpawnCurrentBots(); + StartRepeatInstructions(); + //return; + } + + function Audio4() + { + StartRepeatInstructions(); + //return; + } + + event Tick(float DeltaSeconds) + { + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0x82 + if(!IsTimerActive('GoToNext') && CurrentBotsDead()) + { + HaltAllAudio(); + StopRepeatInstructions(); + TrySetTimer(GetTutorialInfo().fBotTargetsKilledWaitTime, false, 'GoToNext'); + } + //return; + } + + function GoToNext() + { + GotoState('AutoAbilityMultipleEnemies'); + //return; + } + + function TgBotFactory GetCurrentBotFactory() + { + return GetTutorialInfo().AutoBotFactory; + //return ReturnValue; + } + + function RepeatInstructions() + { + PlayAnnouncer(20, 3.0000000, 'Audio4'); + //return; + } + stop; +} + +state AutoAbilityMultipleEnemies +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 8; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + PlayAnnouncer(21, 1.5000000, 'Audio1'); + //return; + } + + function Audio1() + { + PlayAnnouncer(22, 3.5000000, 'Audio2'); + //return; + } + + function Audio2() + { + PlayAK(AkEvent'WW_VGS_Ying.Ying_VGS_OK_Play', 1.5000000, 'Audio3'); + //return; + } + + function Audio3() + { + SpawnCurrentBots(); + PlayAnnouncer(23, 4.0000000, 'Audio4'); + //return; + } + + function Audio4() + { + StartRepeatInstructions(); + //return; + } + + event Tick(float DeltaSeconds) + { + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0x82 + if(!IsTimerActive('GoToNext') && CurrentBotsDead()) + { + HaltAllAudio(); + StopRepeatInstructions(); + TrySetTimer(GetTutorialInfo().fBotTargetsKilledWaitTime, false, 'GoToNext'); + } + //return; + } + + function TgBotFactory GetCurrentBotFactory() + { + return GetTutorialInfo().MultipleAutoBotFactory; + //return ReturnValue; + } + + simulated function GoToNext() + { + GotoState('BattleAbility'); + //return; + } + + function RepeatInstructions() + { + PlayAnnouncer(20, 4.0000000, 'Audio4'); + //return; + } + stop; +} + +state BattleAbility +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 9; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + PlayAnnouncer(27, 3.5000000, 'Audio1'); + //return; + } + + function Audio1() + { + local TgPlayerController TgPC; + + TgPC = GetLocalTgPlayerController(); + // End:0x45 + if(TgPC != none) + { + TgPC.SetInputAllowed(10, true); + } + EnableTutorialUI(2, true); + PlayAnnouncer(28, 4.5000000, 'Audio2'); + //return; + } + + function Audio2() + { + SpawnCurrentBots(); + PlayAnnouncer(29, 4.5000000, 'Audio3'); + //return; + } + + function Audio3() + { + StartRepeatInstructions(); + //return; + } + + function Audio4() + { + StartRepeatInstructions(); + //return; + } + + event Tick(float DeltaSeconds) + { + local TgDevice BattleDevice; + + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0x9C + if(!IsTimerActive('GoToNext') && CurrentBotsDead()) + { + // End:0x92 + if(m_bDamagedWithBattle) + { + HaltAllAudio(); + StopRepeatInstructions(); + TrySetTimer(GetTutorialInfo().fBotTargetsKilledWaitTime, false, 'GoToNext'); + } + else + { + SpawnCurrentBots(); + } + } + // End:0x122 + if(!IsTimerActive('GoToNext')) + { + BattleDevice = GetLocalPlayerDevice(3); + // End:0x122 + if((BattleDevice != none) && BattleDevice.GetCooldownRemaining() > float(0)) + { + BattleDevice.EndCooldown(); + } + } + //return; + } + + function TgBotFactory GetCurrentBotFactory() + { + return GetTutorialInfo().BattleAbilityBotFactory; + //return ReturnValue; + } + + event LocalPlayerDeviceOnDamaged(out OnDamagedParams Params) + { + // End:0x39 + if(Params.Dev == (GetLocalPlayerDevice(3))) + { + m_bDamagedWithBattle = true; + } + //return; + } + + function RepeatInstructions() + { + PlayAnnouncer(29, 3.0000000, 'Audio4'); + //return; + } + + simulated function GoToNext() + { + GotoState('CooldownExplain'); + //return; + } + stop; +} + +state CooldownExplain +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 10; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + local TgDevice BattleDevice; + + BattleDevice = GetLocalPlayerDevice(3); + // End:0x6C + if((BattleDevice != none) && !BattleDevice.IsDeviceCoolingDown()) + { + BattleDevice.StartCooldown(); + } + PlayAnnouncer(31, 2.0000000, 'Audio1'); + //return; + } + + function Audio1() + { + PlayAnnouncer(32, 5.0000000, 'Audio2'); + //return; + } + + function Audio2() + { + GotoState('MovementAbility'); + //return; + } + stop; +} + +state MovementAbility +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 11; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + local TgPlayerController TgPC; + + TgPC = GetLocalTgPlayerController(); + // End:0x45 + if(TgPC != none) + { + TgPC.SetInputAllowed(11, true); + } + EnableTutorialUI(3, true); + Class'TgGame.TgSeqEvent_Tutorial'.static.TriggerGlobal(self, 4); + m_fVolumeStandTime = 0.0000000; + PlayAnnouncer(34, 2.5000000, 'Audio1'); + SetTimer(GetTutorialInfo().fBotDelayTravelToMovementTime, false, 'MoveBotToNextArea'); + //return; + } + + event Tick(float DeltaSeconds) + { + local TgDevice MovementDevice; + + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0x77 + if(!m_bReceivedMovementAbility) + { + MovementDevice = GetLocalPlayerDevice(4); + // End:0x77 + if((MovementDevice != none) && MovementDevice.NativeIsFiring()) + { + m_bReceivedMovementAbility = true; + } + } + // End:0xA6 + if(m_bReceivedMovementAbility) + { + HaltAllAudio(); + StopRepeatInstructions(); + GotoState('PlayerMoveToUltimateShootingRange'); + } + // End:0x142 + if(!IsTimerActive('MoveBotToNextArea')) + { + // End:0x142 + if(!GetTutorialInfo().HelperIsNavigatingToOrAtDestination(GetTutorialInfo().HelperMoveTargetMovementAbility)) + { + GetTutorialInfo().MoveHelperToActor(GetTutorialInfo().HelperMoveTargetMovementAbility); + } + } + //return; + } + + function MoveBotToNextArea() + { + GetTutorialInfo().MoveHelperToActor(GetTutorialInfo().HelperMoveTargetMovementAbility); + //return; + } + + function Audio1() + { + RepeatInstructions(); + //return; + } + + function RepeatInstructions() + { + // End:0x29 + if(!m_bReceivedMovementAbility) + { + PlayAnnouncer(35, 5.0000000, 'Audio2'); + } + //return; + } + + function Audio2() + { + StartRepeatInstructions(); + //return; + } + stop; +} + +state PlayerMoveToUltimateShootingRange +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 12; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + m_fVolumeStandTime = 0.0000000; + Class'TgGame.TgSeqEvent_Tutorial'.static.TriggerGlobal(self, 5); + SetTimer(GetTutorialInfo().fBotDelayTravelToUltRangeTime, false, 'MoveBotToNextArea'); + PlayAnnouncer(13, 2.5000000, 'Audio1'); + //return; + } + + function MoveBotToNextArea() + { + GetTutorialInfo().MoveHelperToActor(GetTutorialInfo().HelperMoveTargetUltRange); + //return; + } + + function float GetRepeatInstructionTime() + { + return GetTutorialInfo().fExtendedRepeatInstructionTime; + //return ReturnValue; + } + + function RepeatInstructions() + { + PlayAnnouncer(13, 2.5000000, 'Audio2'); + //return; + } + + function Audio1() + { + PlayAK(AkEvent'WW_VGS_Ying.Ying_VGS_Other_V_F_Play', 1.5000000, 'Audio2'); + //return; + } + + function Audio2() + { + StartRepeatInstructions(); + //return; + } + + event Tick(float DeltaSeconds) + { + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0x136 + if((GetTutorialInfo().UltimateShootingRangeStandingTargetArea != none) && GetTutorialInfo().UltimateShootingRangeStandingTargetArea.m_bHasLocalPawn) + { + m_fVolumeStandTime += m_fLastFrameDeltaTime; + // End:0x136 + if(m_fVolumeStandTime > GetTutorialInfo().fVolumeStandTime) + { + Class'TgGame.TgSeqEvent_Tutorial'.static.TriggerGlobal(self, 6); + HaltAllAudio(); + StopRepeatInstructions(); + GotoState('AltAbility'); + GetTutorialInfo().TeleportHelperToActor(GetTutorialInfo().HelperMoveTargetUltRange); + } + } + // End:0x1D2 + if(!IsTimerActive('MoveBotToNextArea')) + { + // End:0x1D2 + if(!GetTutorialInfo().HelperIsNavigatingToOrAtDestination(GetTutorialInfo().HelperMoveTargetUltRange)) + { + GetTutorialInfo().MoveHelperToActor(GetTutorialInfo().HelperMoveTargetUltRange); + } + } + //return; + } + stop; +} + +state AltAbility +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 13; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + local TgPlayerController TgPC; + + TgPC = GetLocalTgPlayerController(); + // End:0x45 + if(TgPC != none) + { + TgPC.SetInputAllowed(9, true); + } + EnableTutorialUI(4, true); + PlayAnnouncer(36, 4.5000000, 'Audio1'); + //return; + } + + function Audio1() + { + PlayAnnouncer(37, 4.0000000, 'Audio2'); + //return; + } + + function Audio2() + { + PlayAnnouncer(38, 5.0000000, 'Audio3'); + SpawnCurrentBots(); + //return; + } + + function Audio3() + { + StartRepeatInstructions(); + //return; + } + + function RepeatInstructions() + { + PlayAnnouncer(37, 4.0000000, 'Audio3'); + //return; + } + + event Tick(float DeltaSeconds) + { + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0x9C + if(!IsTimerActive('GoToNext') && CurrentBotsDead()) + { + // End:0x92 + if(m_bDamagedWithAlt) + { + HaltAllAudio(); + StopRepeatInstructions(); + TrySetTimer(GetTutorialInfo().fBotTargetsKilledWaitTime, false, 'GoToNext'); + } + else + { + SpawnCurrentBots(); + } + } + //return; + } + + function TgBotFactory GetCurrentBotFactory() + { + return GetTutorialInfo().AltAbilityBotFactory; + //return ReturnValue; + } + + event LocalPlayerDeviceOnDamaged(out OnDamagedParams Params) + { + local TgDevice_ViktorInhand Device; + + Device = TgDevice_ViktorInhand(Params.Dev); + // End:0x8A + if(((Device != none) && Device == (GetLocalPlayerDevice(1))) && Device.m_bIsADS) + { + m_bDamagedWithAlt = true; + } + //return; + } + + function GoToNext() + { + GotoState('UltimateAbilityCharge'); + //return; + } + stop; +} + +state UltimateAbilityCharge +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 14; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + local TgRepInfo_Game GRI; + + EnableTutorialUI(5, true); + PlayAnnouncer(39, 1.5000000, 'Audio1'); + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x89 + if(GRI != none) + { + GRI.r_bBlockEnergyGain = false; + } + //return; + } + + function Audio1() + { + PlayAnnouncer(40, 5.5000000, 'Audio2'); + //return; + } + + function Audio2() + { + PlayAnnouncer(41, 6.5000000, 'Audio3'); + //return; + } + + function Audio3() + { + PlayAnnouncer(42, 4.5000000, 'Audio4'); + //return; + } + + function Audio4() + { + SpawnCurrentBots(); + RepeatInstructions(); + //return; + } + + function Audio5() + { + StartRepeatInstructions(); + //return; + } + + function RepeatInstructions() + { + PlayAnnouncer(44, 4.0000000, 'Audio5'); + //return; + } + + event Tick(float DeltaSeconds) + { + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0x42 + if(CurrentBotsDead()) + { + HaltAllAudio(); + StopRepeatInstructions(); + GotoState('UltimateAbility'); + } + //return; + } + + function TgBotFactory GetCurrentBotFactory() + { + return GetTutorialInfo().UltimateChargeBotFactory; + //return ReturnValue; + } + stop; +} + +state UltimateAbility +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 15; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + local TgPlayerController TgPC; + + TgPC = GetLocalTgPlayerController(); + // End:0x45 + if(TgPC != none) + { + TgPC.SetInputAllowed(12, true); + } + SetUltState(true); + SpawnCurrentBots(); + PlayAnnouncer(49, 5.5000000, 'Audio1'); + //return; + } + + function EndState(name NextStateName) + { + SetUltState(false); + //return; + } + + event Tick(float DeltaSeconds) + { + local TgPawn TgP; + + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0x11D + if(!IsTimerActive('GoToNext')) + { + // End:0xBC + if(CurrentBotsDead()) + { + // End:0xB2 + if(m_bDamagedWithUlt) + { + Class'TgGame.TgSeqEvent_Tutorial'.static.TriggerGlobal(self, 7); + HaltAllAudio(); + StopRepeatInstructions(); + TrySetTimer(GetTutorialInfo().fBotTargetsKilledWaitTime, false, 'GoToNext'); + } + else + { + SpawnCurrentBots(); + } + } + TgP = GetLocalPlayerPawn(); + // End:0x11D + if(TgP != none) + { + TgP.GiveEnergy(TgP.GetMaxEnergy()); + } + } + //return; + } + + function TgBotFactory GetCurrentBotFactory() + { + return GetTutorialInfo().UltimateAbilityBotFactory; + //return ReturnValue; + } + + event LocalPlayerDeviceOnDamaged(out OnDamagedParams Params) + { + // End:0x5D + if((Params.Dev != none) && Params.Dev == (GetLocalPlayerDevice(18))) + { + m_bDamagedWithUlt = true; + } + //return; + } + + function RepeatInstructions() + { + PlayAnnouncer(49, 5.5000000, 'Audio1'); + //return; + } + + function Audio1() + { + StartRepeatInstructions(); + //return; + } + + function GoToNext() + { + GotoState('Mount'); + //return; + } + + function SetUltState(bool bForceStayOpen) + { + local TgDevice TgD; + + TgD = GetLocalPlayerDevice(2); + // End:0xCB + if(TgD != none) + { + TgD.m_bPreventInterrupt = bForceStayOpen; + TgD.m_bPreventCancel = bForceStayOpen; + // End:0xCB + if(!bForceStayOpen && TgD.NativeIsFiring()) + { + TgD.InterruptFiring(); + } + } + //return; + } + stop; +} + +state Mount +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 16; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + PlayAnnouncer(12, 5.0000000, 'Audio1'); + //return; + } + + function Audio1() + { + local TgPlayerController TgPC; + + TgPC = GetLocalTgPlayerController(); + // End:0x45 + if(TgPC != none) + { + TgPC.SetInputAllowed(15, true); + } + PickNextObjective(); + AutoMountLocalPlayer(); + GotoState('PlayerMovingToJumpArea'); + PlayAK(AkEvent'WW_VGS_Ying.Ying_VGS_Other_G_B_Play', 1.5000000, 'KillHelper'); + //return; + } + + function AutoMountLocalPlayer() + { + local TgDevice_Mount MountDevice; + + MountDevice = TgDevice_Mount(GetLocalPlayerDevice(23)); + // End:0x6C + if(MountDevice != none) + { + MountDevice.SetAllowMountServerTimer(); + MountDevice.ClientStartMount(); + } + //return; + } + stop; +} + +state PlayerMovingToJumpArea +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 17; + //return ReturnValue; + } + + event Tick(float DeltaSeconds) + { + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0xA2 + if((GetTutorialInfo().JumpLowerArea != none) && GetTutorialInfo().JumpLowerArea.m_bHasSeenLocalPawnBefore) + { + Class'TgGame.TgSeqEvent_Tutorial'.static.TriggerGlobal(self, 8); + GotoState('Jump'); + } + //return; + } + stop; +} + +state Jump +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 18; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + PlayAnnouncer(11, 4.0000000, 'Audio1'); + //return; + } + + function Audio1() + { + StartRepeatInstructions(); + //return; + } + + function RepeatInstructions() + { + PlayAnnouncer(11, 4.0000000, 'Audio1'); + //return; + } + + event Tick(float DeltaSeconds) + { + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0xB6 + if((GetTutorialInfo().JumpUpperArea != none) && GetTutorialInfo().JumpUpperArea.m_bHasSeenLocalPawnBefore) + { + Class'TgGame.TgSeqEvent_Tutorial'.static.TriggerGlobal(self, 9); + HaltAllAudio(); + StopRepeatInstructions(); + GotoState('PlayerMovingToObjective'); + } + //return; + } + stop; +} + +state PlayerMovingToObjective +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 19; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + PlayAnnouncer(70, 1.5000000, 'Audio1'); + //return; + } + + function Audio1() + { + StartRepeatInstructions(); + //return; + } + + function RepeatInstructions() + { + PlayAnnouncer(70, 1.5000000, 'Audio1'); + //return; + } + + event Tick(float DeltaSeconds) + { + local TgPlayerController TgPC; + local TgPawn_Character TgP; + + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + TgPC = GetLocalTgPlayerController(); + // End:0xDE + if(TgPC != none) + { + TgP = TgPawn_Character(TgPC.Pawn); + // End:0xDE + if((TgP != none) && TgP.r_bNearCapturePoint) + { + Class'TgGame.TgSeqEvent_Tutorial'.static.TriggerGlobal(self, 10); + HaltAllAudio(); + StopRepeatInstructions(); + GotoState('CapturingObjective'); + } + } + //return; + } + stop; +} + +state CapturingObjective +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 20; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + local TgPawn TgP; + + TgP = GetLocalPlayerPawn(); + // End:0x9C + if(TgP != none) + { + TgP.AutoMount(false); + // End:0x9C + if(TgP.m_WeaponMesh != none) + { + TgP.m_WeaponMesh.PlayWeaponQuickRetrieve(); + } + } + EnableTutorialUI(6, true); + PlayAnnouncer(74, 3.5000000, 'Audio1'); + //return; + } + + function Audio1() + { + PlayAnnouncer(76, 6.0000000, 'Audio2'); + //return; + } + + function Audio2() + { + PlayAnnouncer(77, 3.5000000, 'Audio3'); + //return; + } + + function Audio3() + { + GotoState('ContestingObjective'); + //return; + } + stop; +} + +state ContestingObjective +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 21; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + SpawnCurrentBots(); + Class'TgGame.TgSeqEvent_Tutorial'.static.TriggerGlobal(self, 11); + PlayAnnouncer(80, 9.0000000, 'Audio1'); + //return; + } + + function Audio1() + { + RepeatInstructions(); + //return; + } + + function Audio2() + { + StartRepeatInstructions(); + //return; + } + + function RepeatInstructions() + { + // End:0x29 + if(!CurrentBotsDead()) + { + PlayAnnouncer(81, 7.5000000, 'Audio2'); + } + //return; + } + + event Tick(float DeltaSeconds) + { + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0x51 + if(m_bPointCaptured && CurrentBotsDead()) + { + HaltAllAudio(); + StopRepeatInstructions(); + GotoState('PayloadSpawn'); + } + //return; + } + + function TgBotFactory GetCurrentBotFactory() + { + return GetTutorialInfo().ContestCapturePointBotFactory; + //return ReturnValue; + } + stop; +} + +state PayloadSpawn +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 22; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + local TgObjective Objective; + + GainPoints(1, m_nPointsForCapturing, 1); + SpawnLanePusher(); + // End:0x70 + foreach WorldInfo.DynamicActors(Class'TgGame.TgObjective', Objective) + { + Objective.SetStatus(0); + } + EnableTutorialUI(7, true); + SetTimer(1.0000000, false, 'Audio1'); + //return; + } + + function Audio1() + { + PlayAnnouncer(82, 7.5000000, 'Audio2'); + //return; + } + + function Audio2() + { + RepeatInstructions(); + //return; + } + + function Audio3() + { + StartRepeatInstructions(); + //return; + } + + function RepeatInstructions() + { + PlayAnnouncer(83, 7.0000000, 'Audio3'); + //return; + } + + event Tick(float DeltaSeconds) + { + local TgRepInfo_Game GRI; + + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0xB9 + if((GRI != none) && GRI.r_fPayloadProgressPercent >= GetTutorialInfo().fPayloadContestPercent) + { + HaltAllAudio(); + StopRepeatInstructions(); + GotoState('PayloadContest'); + } + //return; + } + + function SpawnLanePusher() + { + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x69 + if(((GRI == none) || GRI.r_AttackingTaskForce == none) || int(m_GameWinState) != int(0)) + { + return; + } + // End:0x393 + if(m_CapturedPoint != none) + { + // End:0x393 + if(m_CapturedPoint.m_Taskforce1Factories[0] != none) + { + // End:0xEB + if(m_bOverrideSpawnTableID) + { + m_CapturedPoint.m_Taskforce1Factories[0].nSpawnTableId = GetNextSpawnTableId(); + } + m_CapturedPoint.m_Taskforce1Factories[0].ResetQueue(); + GRI.r_LanePusher = TgPawn_LanePusher(m_CapturedPoint.m_Taskforce1Factories[0].UseSpawnTable()); + // End:0x314 + if(GRI.r_LanePusher != none) + { + GRI.r_LanePusher.m_bFadeOutOnLifeAfterDeathTimerExpired = false; + GRI.r_LanePusher.m_fLifeAfterDeathSecs = 0.1000000; + GRI.r_LanePusher.m_bAllowBackpeddling = false; + // End:0x2BF + if(m_CapturedPoint.m_Taskforce1PathStart != none) + { + GRI.r_LanePusher.SetSpline(m_CapturedPoint.m_Taskforce1PathStart, true); + } + GRI.r_LanePusher.SetProperty(8, GetTutorialInfo().fLanePusherGroundSpeed); + } + SendLanePusherSpawnAlert(int(GRI.r_AttackingTaskForce.r_nTaskForce)); + SendLanePusherUpdateAlert(true, int(GRI.r_AttackingTaskForce.r_nTaskForce)); + } + } + //return; + } + stop; +} + +state PayloadContest +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 23; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + SpawnCurrentBots(); + Class'TgGame.TgSeqEvent_Tutorial'.static.TriggerGlobal(self, 11); + PlayAnnouncer(84, 5.5000000, 'Audio1'); + //return; + } + + function Audio1() + { + PlayAnnouncer(86, 5.0000000, 'Audio2'); + //return; + } + + function Audio2() + { + RepeatInstructions(); + //return; + } + + function RepeatInstructions() + { + PlayAnnouncer(87, 3.5000000, 'Audio3'); + //return; + } + + function Audio3() + { + StartRepeatInstructions(); + //return; + } + + event Tick(float DeltaSeconds) + { + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + // End:0x42 + if(CurrentBotsDead()) + { + HaltAllAudio(); + StopRepeatInstructions(); + GotoState('PayloadPush'); + } + //return; + } + + function TgBotFactory GetCurrentBotFactory() + { + return GetTutorialInfo().ContestPayloadBotsFactory; + //return ReturnValue; + } + stop; +} + +state PayloadPush +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 24; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + PlayAnnouncer(88, 3.5000000, 'Audio1'); + //return; + } + + function Audio1() + { + StartRepeatInstructions(); + //return; + } + + function RepeatInstructions() + { + PlayAnnouncer(88, 3.5000000, 'Audio1'); + //return; + } + + event Tick(float DeltaSeconds) + { + local TgRepInfo_Game GRI; + + super(TgGame_Paladins_Tutorial).Tick(DeltaSeconds); + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x8A + if((GRI != none) && GRI.r_fPayloadProgressPercent >= 1.0000000) + { + HaltAllAudio(); + StopRepeatInstructions(); + GotoState('TutorialComplete'); + } + //return; + } + stop; +} + +state TutorialComplete +{ + function TgGame_Paladins_Tutorial.ETutorialState GetTutorialState() + { + return 25; + //return ReturnValue; + } + + function BeginState(name PreviousStateName) + { + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x9A + if((GRI != none) && GRI.r_LanePusher != none) + { + GRI.r_LanePusher.Suicide(); + } + GainPoints(1, m_nPointsForPayload, 3); + PlayAnnouncer(89, 5.0000000, 'Audio1'); + Class'TgGame.TgSeqEvent_Tutorial'.static.TriggerGlobal(self, 13); + AwardAchievement(); + HideWorldOverlays(); + //return; + } + + function Audio1() + { + CheckGameState(); + AllPlayersEndGame(GetTutorialInfo().EndGameFocus); + //return; + } + stop; +} + +defaultproperties +{ + m_fSetupPauseTime=-1.0000000 + m_EndAnnouncerAudioEvent=AkEvent'WW_VOX_Announcer_Tutorial.Tutorial_Announcer_KillVox_Stop' + m_nWinningScore=2 + m_bCaptureSpawnAlerts=false + m_bRespawnBots=false + m_bRestrictStoreInteractions=true + m_bFirstBloodAwarded=true + m_bUsePlayerCharacterIntros=false + m_bUseKillEmotes=false + m_bNotifyKillCombos=false + m_GameType=TG_GAME_TYPE.TGT_CHAOS_TUTORIAL + m_fSpawnProtectionTime=0.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_PointCapture.uc b/exported/TgGame/Classes/TgGame_PointCapture.uc new file mode 100755 index 00000000..87a2fa4a --- /dev/null +++ b/exported/TgGame/Classes/TgGame_PointCapture.uc @@ -0,0 +1,395 @@ +class TgGame_PointCapture extends TgGame_Battle + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +var float s_TicketCheckInterval; +var int s_nCaptureHostilePointXP; +var int s_nCaptureHostilePointGold; +var int s_nReclaimPointXP; +var int s_nReclaimPointGold; +var transient int s_nCurrentPhase; +var int s_nPhase2Threshold; +var int s_nPhase3Threshold; +var int m_nSpawnWaveTime; +var int m_nSpawnWaveDominatingTime; +var int m_nMaxDominatingPoints; +var int s_nAboutToLoseThreshold; + +// Export UTgGame_PointCapture::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +// Export UTgGame_PointCapture::execMarkAsReady(FFrame&, void* const) +native function MarkAsReady(Player P); + +// Export UTgGame_PointCapture::execEndGameBySurrender(FFrame&, void* const) +native function EndGameBySurrender(int SurrenderingTaskForce); + +// Export UTgGame_PointCapture::execBeginEndMission(FFrame&, void* const) +native function bool BeginEndMission(optional bool bClearNextMapGame = false, optional Actor EndMissionFocus, optional float fDelayOverride = 0.0000000); + +// Export UTgGame_PointCapture::execScoreKillGameType(FFrame&, void* const) +native function ScoreKillGameType(out ScoreKillData Data); + +// Export UTgGame_PointCapture::execCapturedPoint(FFrame&, void* const) +native function CapturedPoint(TgPawn_Character PC); + +// Export UTgGame_PointCapture::execCapturePointReclaimed(FFrame&, void* const) +native function CapturePointReclaimed(TgPawn_Character PC); + +// Export UTgGame_PointCapture::execAlertAboutToLose(FFrame&, void* const) +native function AlertAboutToLose(int nTaskForce); + +// Export UTgGame_PointCapture::execUpdateGameWinState(FFrame&, void* const) +native function UpdateGameWinState(TgPawn nexus); + +// Export UTgGame_PointCapture::execSendBonusMinionAlerts(FFrame&, void* const) +native function SendBonusMinionAlerts(TgRepInfo_TaskForce tf, int nLane); + +// Export UTgGame_PointCapture::execStructureDied(FFrame&, void* const) +native function StructureDied(TgPawn_Structure theStructure); + +// Export UTgGame_PointCapture::execApplyTowerImmunity(FFrame&, void* const) +native function ApplyTowerImmunity(); + +// Export UTgGame_PointCapture::execGetNextVulnerableTowerId(FFrame&, void* const) +native function int GetNextVulnerableTowerId(int nBotId); + +// Export UTgGame_PointCapture::execShouldSpawnSuperMinions(FFrame&, void* const) +native function bool ShouldSpawnSuperMinions(TgBotFactory_Minions minionFactory); + +event Actor GetEndFocusActor() +{ + return ((int(m_GameWinState) == int(1)) ? TgMapInfo(WorldInfo.GetMapInfo()).m_EndFocusActor_TF2 : TgMapInfo(WorldInfo.GetMapInfo()).m_EndFocusActor_TF1); + //return ReturnValue; +} + +function float GetSetupTime() +{ + return 45.0000000; + //return ReturnValue; +} + +function bool StartGameTimer() +{ + m_fGameMissionTime = 14400.0000000; + SetTimer(float(m_nSpawnWaveTime), false, 'SpawnWaveTeam1Timer'); + SetTimer(float(m_nSpawnWaveTime), false, 'SpawnWaveTeam2Timer'); + return super.StartGameTimer(); + //return ReturnValue; +} + +function SpawnNeutralBots() +{ + local TgRepInfo_Game GRI; + local int Idx; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x107 + if(GRI != none) + { + Idx = 0; + J0x36: + + // End:0x107 [Loop If] + if(Idx < GRI.m_CPRIArray.Length) + { + // End:0xF9 + if(GRI.m_CPRIArray[Idx].r_OwningCapturePoint != none) + { + GRI.m_CPRIArray[Idx].r_OwningCapturePoint.SpawnNeutralBot(); + } + Idx++; + // [Loop Continue] + goto J0x36; + } + } + //return; +} + +event ChangeTimerState(TgObject.GameTimerState eTimerState) +{ + super.ChangeTimerState(eTimerState); + UpdateLockedPointStatus(); + // End:0x52 + if(int(eTimerState) == int(3)) + { + SpawnNeutralBots(); + SetTimer(s_TicketCheckInterval, true, 'CheckTickets'); + } + //return; +} + +function CheckTickets() +{ + local TgRepInfo_Game GRI; + local int Idx, ScoreToSubTF1, ScoreToSubTF2, OldScore; + local TgRepInfo_TaskForce TF1, TF2; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x661 + if(GRI != none) + { + Idx = 0; + J0x36: + + // End:0x111 [Loop If] + if(Idx < GRI.m_CPRIArray.Length) + { + // End:0xB4 + if(GRI.m_CPRIArray[Idx].r_nControlledByTaskForce == 1) + { + ScoreToSubTF1++; + } + else + { + // End:0x103 + if(GRI.m_CPRIArray[Idx].r_nControlledByTaskForce == 2) + { + ScoreToSubTF2++; + } + } + Idx++; + // [Loop Continue] + goto J0x36; + } + // End:0x136 + if(ScoreToSubTF1 > ScoreToSubTF2) + { + ScoreToSubTF2 = 0; + } + else + { + // End:0x15B + if(ScoreToSubTF2 > ScoreToSubTF1) + { + ScoreToSubTF1 = 0; + } + else + { + ScoreToSubTF1 = 0; + ScoreToSubTF2 = 0; + } + } + // End:0x661 + if((ScoreToSubTF1 > 1) || ScoreToSubTF2 > 1) + { + TF1 = GRI.GetTaskForce(1); + // End:0x375 + if(TF1 != none) + { + OldScore = TF1.r_nScore; + TF1.r_nScore = Max(0, TF1.r_nScore - ScoreToSubTF2); + TF1.r_nScorePercent = int((float(TF1.r_nScore) / float(WorldInfo.Game.GoalScore)) * float(100)); + TF1.bNetDirty = true; + // End:0x325 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TF1.ReceivedScoringChanges(); + } + // End:0x375 + if((OldScore > s_nAboutToLoseThreshold) && TF1.r_nScore < s_nAboutToLoseThreshold) + { + AlertAboutToLose(1); + } + } + TF2 = GRI.GetTaskForce(2); + // End:0x55B + if(TF2 != none) + { + OldScore = TF2.r_nScore; + TF2.r_nScore = Max(0, TF2.r_nScore - ScoreToSubTF1); + TF2.r_nScorePercent = int((float(TF2.r_nScore) / float(WorldInfo.Game.GoalScore)) * float(100)); + TF2.bNetDirty = true; + // End:0x50A + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TF2.ReceivedScoringChanges(); + } + // End:0x55B + if((OldScore > s_nAboutToLoseThreshold) && TF2.r_nScore < s_nAboutToLoseThreshold) + { + AlertAboutToLose(2); + } + } + CheckWinCondition(); + // End:0x5DF + if((s_nCurrentPhase <= 1) && (TF1.r_nScore <= s_nPhase2Threshold) || TF2.r_nScore <= s_nPhase2Threshold) + { + s_nCurrentPhase = 2; + } + else + { + // End:0x657 + if((s_nCurrentPhase == 2) && (TF1.r_nScore <= s_nPhase3Threshold) || TF2.r_nScore <= s_nPhase3Threshold) + { + s_nCurrentPhase = 3; + } + } + CheckWinState(); + } + } + //return; +} + +function CheckWinCondition() +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce TF1, TF2; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x355 + if(GRI != none) + { + TF1 = GRI.GetTaskForce(1); + TF2 = GRI.GetTaskForce(2); + // End:0x22F + if((TF1.r_nScore <= 0) && TF2.r_nScore <= 0) + { + // End:0x17D + if(TF1.r_nScore > TF2.r_nScore) + { + m_GameWinState = 2; + GRI.r_Winner = GRI.GetTaskForce(1); + GRI.bNetDirty = true; + } + else + { + // End:0x22C + if(TF2.r_nScore > TF1.r_nScore) + { + m_GameWinState = 1; + GRI.r_Winner = GRI.GetTaskForce(2); + GRI.bNetDirty = true; + } + } + } + else + { + // End:0x2C3 + if(TF2.r_nScore <= 0) + { + m_GameWinState = 2; + GRI.r_Winner = GRI.GetTaskForce(1); + GRI.bNetDirty = true; + } + else + { + // End:0x355 + if(TF1.r_nScore <= 0) + { + m_GameWinState = 1; + GRI.r_Winner = GRI.GetTaskForce(2); + GRI.bNetDirty = true; + } + } + } + } + //return; +} + +event CheckWinState() +{ + local TgPlayerController PC; + + // End:0x9D + if(int(m_GameWinState) != int(0)) + { + ClearTimer('CheckTickets'); + // End:0x85 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', PC) + { + PC.SendClientSetGameWinState(m_GameWinState); + } + UpdateMissionTimerEventWinVar(); + BeginEndMission(); + } + //return; +} + +function SpawnWaveTeam1Timer() +{ + SetTimer(float(m_nSpawnWaveTime) + ((GetTaskForceDominatingFactor(1)) * float(m_nSpawnWaveDominatingTime)), false, 'SpawnWaveTeam1Timer'); + //return; +} + +function SpawnWaveTeam2Timer() +{ + SetTimer(float(m_nSpawnWaveTime) + ((GetTaskForceDominatingFactor(2)) * float(m_nSpawnWaveDominatingTime)), false, 'SpawnWaveTeam2Timer'); + //return; +} + +function float GetTaskForceDominatingFactor(int TaskForceNum) +{ + local float fFactor; + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce TF1, TF2; + local int ScoreTF1, ScoreTF2; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x31 + if(GRI == none) + { + return 0.0000000; + } + TF1 = GRI.GetTaskForce(1); + TF2 = GRI.GetTaskForce(2); + // End:0xAE + if((TF1 == none) || TF2 == none) + { + return 0.0000000; + } + ScoreTF1 = Max(100, TF1.r_nScore); + ScoreTF2 = Max(100, TF2.r_nScore); + // End:0x146 + if(TaskForceNum == 2) + { + fFactor = float(ScoreTF2 - ScoreTF1) / float(m_nMaxDominatingPoints); + } + else + { + fFactor = float(ScoreTF1 - ScoreTF2) / float(m_nMaxDominatingPoints); + } + // End:0x18A + if(fFactor < float(0)) + { + return 0.0000000; + } + // End:0x1A1 + if(fFactor > float(1)) + { + return 1.0000000; + } + return fFactor; + //return ReturnValue; +} + +function UpdateLockedPointStatus() +{ + //return; +} + +function OnPointCaptureOwnershipChanged(TgCapturePoint Point, int NewTaskForceOwner, int PreviousTaskForceOwner) +{ + //return; +} + +defaultproperties +{ + s_TicketCheckInterval=3.6000000 + s_nCaptureHostilePointXP=65 + s_nCaptureHostilePointGold=20 + s_nReclaimPointXP=65 + s_nReclaimPointGold=20 + s_nCurrentPhase=1 + s_nPhase2Threshold=200 + m_nSpawnWaveTime=20 + m_nSpawnWaveDominatingTime=40 + m_nMaxDominatingPoints=150 + s_nAboutToLoseThreshold=100 + m_fCreditsToGivePerTick=5.0000000 + m_nStartingLevel=3 + m_fFirstBloodGoldReward=100.0000000 + m_GameType=TG_GAME_TYPE.TGT_POINTCAPTURE + GoalScore=400 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_Siege.uc b/exported/TgGame/Classes/TgGame_Siege.uc new file mode 100755 index 00000000..0fd71bd2 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_Siege.uc @@ -0,0 +1,91 @@ +class TgGame_Siege extends TgGame_Battle + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +enum SIEGE_TIER +{ + SGT_NONE, // 0 + SGT_TOWERA, // 1 + SGT_TOWERB, // 2 + SGT_CASTLE, // 3 + SGT_MAX // 4 +}; + +function float GetSetupTime() +{ + return 45.0000000; + //return ReturnValue; +} + +function bool StartGameTimer() +{ + m_fGameMissionTime = 14400.0000000; + return super.StartGameTimer(); + //return ReturnValue; +} + +event ReachedCheckpoint(int Taskforce, int Tier) +{ + switch(Tier) + { + // End:0x2E + case 1: + DestroyTower(Taskforce, 0); + // End:0x6B + break; + // End:0x4A + case 2: + DestroyTower(Taskforce, 1); + // End:0x6B + break; + // End:0x65 + case 3: + WinGame(Taskforce); + // End:0x6B + break; + // End:0xFFFF + default: + // End:0x6B + break; + break; + } + //return; +} + +function DestroyTower(int Taskforce, int Index) +{ + //return; +} + +function WinGame(int WinningTaskForce) +{ + local TgRepInfo_Game GRI; + local TgPlayerController PC; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x43 + if((GRI == none) || int(m_GameWinState) != int(0)) + { + return; + } + m_GameWinState = ((WinningTaskForce == 1) ? 2 : 1); + GRI.r_Winner = GRI.GetTaskForce(WinningTaskForce); + GRI.bNetDirty = true; + // End:0x128 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', PC) + { + PC.SendClientSetGameWinState(m_GameWinState); + } + BeginEndMission(); + //return; +} + +defaultproperties +{ + m_bRespawnInhibitors=false + m_nStartingCurrency=2000 + m_nStartingLevel=3 + m_MinionKillerBonus=0.2500000 + m_GameType=TG_GAME_TYPE.TGT_SIEGE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGame_SinglePointCaptureAndHold.uc b/exported/TgGame/Classes/TgGame_SinglePointCaptureAndHold.uc new file mode 100755 index 00000000..1b80fc23 --- /dev/null +++ b/exported/TgGame/Classes/TgGame_SinglePointCaptureAndHold.uc @@ -0,0 +1,190 @@ +class TgGame_SinglePointCaptureAndHold extends TgGame_PointCapture + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +var int m_nCurrentActiveCapturePointIndex; +var int m_nNumTicketsForCapturingPoint; +var int m_nNumTicketsForHoldingPoint; +var float m_fNewPointTime; +var float m_fDefendingTeamRespawnTime; + +// Export UTgGame_SinglePointCaptureAndHold::execGetRespawnTime(FFrame&, void* const) +native function float GetRespawnTime(int TaskForceNum); + +function SpawnNeutralBots() +{ + local TgRepInfo_Game GRI; + local int NewPointIndex, I; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x1EF + if(GRI != none) + { + NewPointIndex = Rand(GRI.m_CPRIArray.Length); + // End:0xB0 + if(NewPointIndex == m_nCurrentActiveCapturePointIndex) + { + NewPointIndex++; + // End:0xB0 + if(NewPointIndex >= GRI.m_CPRIArray.Length) + { + NewPointIndex = 0; + } + } + I = 0; + J0xBB: + + // End:0x189 [Loop If] + if(I < GRI.m_CPRIArray.Length) + { + GRI.m_CPRIArray[I].r_bIsLocked = NewPointIndex != I; + GRI.m_CPRIArray[I].bNetDirty = true; + I++; + // [Loop Continue] + goto J0xBB; + } + GRI.m_CPRIArray[NewPointIndex].r_OwningCapturePoint.SpawnNeutralBot(); + m_nCurrentActiveCapturePointIndex = NewPointIndex; + } + //return; +} + +function OnPointCaptureOwnershipChanged(TgCapturePoint Point, int NewTaskForceOwner, int PreviousTaskForceOwner) +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce tf; + local int I; + local TgPlayerController TgPC; + local float RespawnTime; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x3D2 + if(GRI != none) + { + // End:0x3D2 + if((NewTaskForceOwner == 1) || NewTaskForceOwner == 2) + { + tf = GRI.GetTaskForce(((NewTaskForceOwner == 1) ? 2 : 1)); + // End:0xEE + if(tf != none) + { + tf.r_nScore = Max(0, tf.r_nScore - m_nNumTicketsForCapturingPoint); + CheckWinCondition(); + } + // End:0x3CF + if((PreviousTaskForceOwner == 1) || PreviousTaskForceOwner == 2) + { + // End:0x25A + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + // End:0x18F + if(TgPC.GetTaskForceNumber() == NewTaskForceOwner) + { + TgPC.GivePlayerFullVitals(); + } + RespawnTime = TgPC.GetTimerRate('Revive') - GetTimerCount('Revive'); + // End:0x259 + if(RespawnTime > 0.0000000) + { + RespawnTime = RespawnTime / 2.0000000; + TgPC.SetTimer(RespawnTime, false, 'Revive'); + TgPC.UpdateReviveTimeRemaining(RespawnTime); + } + } + Point.r_RepInfo.r_nControlledByTaskForce = 0; + Point.r_RepInfo.r_fOwnershipPct = 0.5000000; + Point.OnPointCaptureOwnershipChanged(0, PreviousTaskForceOwner); + SetTimer(m_fNewPointTime, false, 'SpawnNeutralBots'); + I = 0; + J0x314: + + // End:0x3CF [Loop If] + if(I < GRI.m_CPRIArray.Length) + { + GRI.m_CPRIArray[I].r_bIsLocked = true; + GRI.m_CPRIArray[I].bNetDirty = true; + I++; + // [Loop Continue] + goto J0x314; + } + } + } + } + //return; +} + +function CheckTickets() +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce tf; + local int CurrentTaskForceNum, OpposingTaskForceNum, OldScore; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0x2AB + if(GRI != none) + { + CurrentTaskForceNum = GRI.m_CPRIArray[m_nCurrentActiveCapturePointIndex].r_nControlledByTaskForce; + // End:0x2AB + if((CurrentTaskForceNum == 1) || CurrentTaskForceNum == 2) + { + OpposingTaskForceNum = ((CurrentTaskForceNum == 1) ? 2 : 1); + tf = GRI.GetTaskForce(OpposingTaskForceNum); + OldScore = tf.r_nScore; + tf.r_nScore = Max(0, tf.r_nScore - m_nNumTicketsForHoldingPoint); + tf.r_nScorePercent = int((float(tf.r_nScore) / float(WorldInfo.Game.GoalScore)) * 100.0000000); + tf.bNetDirty = true; + // End:0x23F + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + tf.ReceivedScoringChanges(); + } + // End:0x297 + if((OldScore > s_nAboutToLoseThreshold) && tf.r_nScore < s_nAboutToLoseThreshold) + { + AlertAboutToLose(OpposingTaskForceNum); + } + CheckWinCondition(); + CheckWinState(); + } + } + //return; +} + +function UpdateLockedPointStatus() +{ + local TgRepInfo_Game GRI; + local int I; + + GRI = TgRepInfo_Game(GameReplicationInfo); + // End:0xED + if(GRI != none) + { + I = 0; + J0x36: + + // End:0xED [Loop If] + if(I < GRI.m_CPRIArray.Length) + { + // End:0xDF + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + GRI.m_CPRIArray[I].r_OwningCapturePoint.UpdateLockEffects(); + } + I++; + // [Loop Continue] + goto J0x36; + } + } + //return; +} + +defaultproperties +{ + m_nCurrentActiveCapturePointIndex=-1 + m_nNumTicketsForHoldingPoint=1 + m_fNewPointTime=5.0000000 + m_fDefendingTeamRespawnTime=40.0000000 + m_GameType=TG_GAME_TYPE.TGT_SINGLEPOINTCAPTUREANDHOLD + GoalScore=100 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurveOwner.uc b/exported/TgGame/Classes/TgGameplayCurveOwner.uc new file mode 100755 index 00000000..7e33d46a --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurveOwner.uc @@ -0,0 +1,9 @@ +interface TgGameplayCurveOwner extends Interface + abstract + native(GameplayCurves); + +// Export UTgGameplayCurveOwner::execGetCurrentGameplayCurveSet(FFrame&, void* const) +native function TgGameplayCurvesSet GetCurrentGameplayCurveSet(TgGameplayCurvesSet.ECurveSetTypes Type); + +// Export UTgGameplayCurveOwner::execUseRangeFalloffCurve(FFrame&, void* const) +native function bool UseRangeFalloffCurve(); diff --git a/exported/TgGame/Classes/TgGameplayCurves.uc b/exported/TgGame/Classes/TgGameplayCurves.uc new file mode 100755 index 00000000..321f6c2a --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurves.uc @@ -0,0 +1,15 @@ +class TgGameplayCurves extends Object + native(GameplayCurves) + editinlinenew; + +var() noclear editinline array CurveSets; +var() noclear editinlineuse array InheritedCurves; +var() editoronly transient bool bShowInheritedCurves; +var() editoronly transient bool bInheritedCurvesShareEditorTab; +var export InterpCurveEdSetup CurveEdSetup; + +// Export UTgGameplayCurves::execGetCurvesSetByType(FFrame&, void* const) +native function TgGameplayCurvesSet GetCurvesSetByType(TgGameplayCurvesSet.ECurveSetTypes curveType); + +// Export UTgGameplayCurves::execGetPrimaryDistributionValueByType(FFrame&, void* const) +native function bool GetPrimaryDistributionValueByType(TgGameplayCurvesSet.ECurveSetTypes curveType, float T, out float Value); diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet.uc b/exported/TgGame/Classes/TgGameplayCurvesSet.uc new file mode 100755 index 00000000..f86d4b17 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet.uc @@ -0,0 +1,45 @@ +class TgGameplayCurvesSet extends Object + abstract + native(GameplayCurves) + editinlinenew + hidecategories(Object); + +enum ECurveSetTypes +{ + CST_None, // 0 + CST_Recoil, // 1 + CST_RecoilSimple, // 2 + CST_AccuracyBloom, // 3 + CST_DamageFalloff, // 4 + CST_DamageFalloffAOE, // 5 + CST_DamagePerShotHit, // 6 + CST_SpreadTendency, // 7 + CST_RuckusSpinUpControl, // 8 + CST_GravityFromZVelocity, // 9 + CST_AirControlFromZVelocity, // 10 + CST_WallRunVerticalMovement, // 11 + CST_AimAssist, // 12 + CST_AimAssistKeyframes, // 13 + CST_AimAcceleration, // 14 + CST_TargetTracking, // 15 + CST_HitMarkerScaleByDamage, // 16 + CST_GravityFromCustom, // 17 + CST_ProjectileSpeedOverTime, // 18 + CST_FlakInhandSlow, // 19 + CST_FlakInhandKnockback, // 20 + CST_ThreatLevelByRange, // 21 + CST_AimAssistBoundsScale, // 22 + CST_ProjFrictionOverTime, // 23 + CST_ProjGravityOverTime, // 24 + CST_ScopeWeaponFOV, // 25 + CST_AimAssistBoundsByFOV, // 26 + CST_MAX // 27 +}; + +var(CurveSet) const editconst TgGameplayCurvesSet.ECurveSetTypes CurveSetType; + +// Export UTgGameplayCurvesSet::execGetDistributionValue(FFrame&, void* const) +native function float GetDistributionValue(const out RawDistributionFloat Distribution, float T); + +// Export UTgGameplayCurvesSet::execGetPrimaryDistributionValue(FFrame&, void* const) +native function bool GetPrimaryDistributionValue(float T, out float Value); diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_Accuracy.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_Accuracy.uc new file mode 100755 index 00000000..35e1b1df --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_Accuracy.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_Accuracy extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Accuracy.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="AccuracyOverTime" + PrimaryCurveName="AccuracyOverTime" + CurveSetType=ECurveSetTypes.CST_AccuracyBloom +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_AimAcceleration.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_AimAcceleration.uc new file mode 100755 index 00000000..1c162246 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_AimAcceleration.uc @@ -0,0 +1,14 @@ +class TgGameplayCurvesSet_AimAcceleration extends TgGameplayCurvesSet + native(GameplayCurves) + editinlinenew + hidecategories(Object); + +var(CurveSet) noclear editinline array AimAccelerationCurves; + +// Export UTgGameplayCurvesSet_AimAcceleration::execUpdateAimAcceleration(FFrame&, void* const) +native simulated function UpdateAimAcceleration(out float TurnSpeedX, out float TurnSpeedY, out float aTurn, out float aLookUp, float DeltaTime, int CurveSetToUse, int AccelerationBoost, int Algorithm); + +defaultproperties +{ + CurveSetType=ECurveSetTypes.CST_AimAcceleration +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_AimAssistBounds.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_AimAssistBounds.uc new file mode 100755 index 00000000..a987b0c5 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_AimAssistBounds.uc @@ -0,0 +1,38 @@ +class TgGameplayCurvesSet_AimAssistBounds extends TgGameplayCurvesSet + native(GameplayCurves) + editinlinenew + hidecategories(Object); + +var(CurveSet) RawDistributionFloat BoundsScaleHorizByDistance; +var(CurveSet) RawDistributionFloat BoundsScaleVertByDistance; +var(CurveSet) bool bUseHorizCurveForVert; +var(CurveSet) float fBaseHorizMultiplier; +var(CurveSet) float fBaseVertMultiplier; + +simulated function GetBoundsScale(float fDistance, out float fHorizBoundsScale, out float fVertBoundsScale) +{ + fHorizBoundsScale = GetDistributionValue(BoundsScaleHorizByDistance, fDistance / 16.0000000); + fVertBoundsScale = ((bUseHorizCurveForVert) ? fHorizBoundsScale : GetDistributionValue(BoundsScaleVertByDistance, fDistance / 16.0000000)); + fHorizBoundsScale *= fBaseHorizMultiplier; + fVertBoundsScale *= fBaseVertMultiplier; + //return; +} + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_AimAssistBounds.DistributionBoundsScaleHorizByDistance' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionBoundsScaleHorizByDistance' + begin object name="DistributionBoundsScaleHorizByDistance" class=Engine.DistributionFloatConstantCurve + end object + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_AimAssistBounds.DistributionBoundsScaleVertByDistance' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionBoundsScaleVertByDistance' + begin object name="DistributionBoundsScaleVertByDistance" class=Engine.DistributionFloatConstantCurve + end object + BoundsScaleHorizByDistance=(Distribution=Distribution=DistributionBoundsScaleHorizByDistance,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + BoundsScaleVertByDistance=(Distribution=Distribution=DistributionBoundsScaleVertByDistance,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + fBaseHorizMultiplier=1.0000000 + fBaseVertMultiplier=1.0000000 + CurveSetType=ECurveSetTypes.CST_AimAssistBoundsScale +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_AimAssistBoundsByFOV.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_AimAssistBoundsByFOV.uc new file mode 100755 index 00000000..19ec6df0 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_AimAssistBoundsByFOV.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_AimAssistBoundsByFOV extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_AimAssistBoundsByFOV.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="AimAssistBoundsByFOV" + PrimaryCurveName="AimAssistBoundsByFOV" + CurveSetType=ECurveSetTypes.CST_AimAssistBoundsByFOV +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_AimAssistKeyframes.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_AimAssistKeyframes.uc new file mode 100755 index 00000000..aa32af8b --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_AimAssistKeyframes.uc @@ -0,0 +1,240 @@ +class TgGameplayCurvesSet_AimAssistKeyframes extends TgGameplayCurvesSet + native(GameplayCurves) + editinlinenew + hidecategories(Object); + +struct native AimAssistKeyframeDebugVals +{ + var int DebugState; + var name curveMin[7]; + var name curveMax[7]; + var float valMin[7]; + var float valMax[7]; + var float valInterp[7]; + var float valFinal[7]; + + structdefaultproperties + { + DebugState=0 + curveMin[0]="None" + curveMin[1]="None" + curveMin[2]="None" + curveMin[3]="None" + curveMin[4]="None" + curveMin[5]="None" + curveMin[6]="None" + curveMax[0]="None" + curveMax[1]="None" + curveMax[2]="None" + curveMax[3]="None" + curveMax[4]="None" + curveMax[5]="None" + curveMax[6]="None" + valMin[0]=0.0000000 + valMin[1]=0.0000000 + valMin[2]=0.0000000 + valMin[3]=0.0000000 + valMin[4]=0.0000000 + valMin[5]=0.0000000 + valMin[6]=0.0000000 + valMax[0]=0.0000000 + valMax[1]=0.0000000 + valMax[2]=0.0000000 + valMax[3]=0.0000000 + valMax[4]=0.0000000 + valMax[5]=0.0000000 + valMax[6]=0.0000000 + valInterp[0]=0.0000000 + valInterp[1]=0.0000000 + valInterp[2]=0.0000000 + valInterp[3]=0.0000000 + valInterp[4]=0.0000000 + valInterp[5]=0.0000000 + valInterp[6]=0.0000000 + valFinal[0]=0.0000000 + valFinal[1]=0.0000000 + valFinal[2]=0.0000000 + valFinal[3]=0.0000000 + valFinal[4]=0.0000000 + valFinal[5]=0.0000000 + valFinal[6]=0.0000000 + } +}; + +var transient AimAssistKeyframeDebugVals DebugVals; +var transient bool bSaveDebugVals; +var(CurveSet) noclear editinline array HorizMagnetKeyframes; +var(CurveSet) noclear editinline array VertMagnetKeyframes; +var(CurveSet) noclear editinline array FrictionKeyframes; +var(CurveSet) noclear editinline array TrackingByAccuracyKeyframes; +var(CurveSet) noclear editinline array TrackingByAngleKeyframes; + +simulated function float GetHorizMagnetValue(float assistValue, float Distance, const out array MagnetHorizKeyframeData) +{ + return GetAimAssistValue(assistValue, Distance, MagnetHorizKeyframeData, HorizMagnetKeyframes); + //return ReturnValue; +} + +simulated function float GetVertMagnetValue(float assistValue, float Distance, const out array MagnetVertKeyframeData) +{ + return GetAimAssistValue(assistValue, Distance, MagnetVertKeyframeData, VertMagnetKeyframes); + //return ReturnValue; +} + +simulated function float GetFrictionValue(float assistValue, float Distance, const out array FrictionKeyframeData) +{ + return GetAimAssistValue(assistValue, Distance, FrictionKeyframeData, FrictionKeyframes); + //return ReturnValue; +} + +simulated function float GetHorizTrackingValue(float assistValue, float DesiredTurnAmtPerSec, float Distance, const out array HorizTrackingByAccuracyKeyframeData, const out array HorizTrackingByAngleKeyframeData) +{ + local float fAccuracyTrackingAmt, fAngleTrackingAmt; + + fAccuracyTrackingAmt = GetAimAssistValue(assistValue, Distance, HorizTrackingByAccuracyKeyframeData, TrackingByAccuracyKeyframes); + fAngleTrackingAmt = GetAimAssistValue(DesiredTurnAmtPerSec, Distance, HorizTrackingByAngleKeyframeData, TrackingByAngleKeyframes); + return fAccuracyTrackingAmt * fAngleTrackingAmt; + //return ReturnValue; +} + +simulated function float GetVertTrackingValue(float assistValue, float DesiredTurnAmtPerSec, float Distance, const out array VertTrackingByAccuracyKeyframeData, const out array VertTrackingByAngleKeyframeData) +{ + local float fAccuracyTrackingAmt, fAngleTrackingAmt; + + fAccuracyTrackingAmt = GetAimAssistValue(assistValue, Distance, VertTrackingByAccuracyKeyframeData, TrackingByAccuracyKeyframes); + fAngleTrackingAmt = GetAimAssistValue(DesiredTurnAmtPerSec, Distance, VertTrackingByAngleKeyframeData, TrackingByAngleKeyframes); + return fAccuracyTrackingAmt * fAngleTrackingAmt; + //return ReturnValue; +} + +simulated function SaveDebugInfo(bool bShouldSave) +{ + //return; +} + +private final simulated function float GetAimAssistValue(float assistValue, float Distance, const out array keyframeData, const out array keyframesToCheck) +{ + local float interpAmt, keyframe1Dist, keyframe2Dist, keyframe1Val, keyframe2Val; + + local TgAimAssistKeyframe keyframe1, keyframe2; + + // End:0x28 + if((keyframeData.Length == 0) || keyframesToCheck.Length == 0) + { + return 0.0000000; + } + // End:0x7C + if(!GetKeyframesToUse(Distance, keyframeData, keyframesToCheck, keyframe1, keyframe2, keyframe1Dist, keyframe2Dist)) + { + return 0.0000000; + } + interpAmt = GetInterpValBetweenFrames(Distance, keyframe1Dist, keyframe2Dist); + keyframe1Val = GetKeyframeDistributionValue(keyframe1, assistValue); + keyframe2Val = GetKeyframeDistributionValue(keyframe2, assistValue); + return Lerp(keyframe1Val, keyframe2Val, interpAmt); + //return ReturnValue; +} + +private final simulated function float GetKeyframeDistributionValue(const out TgAimAssistKeyframe keyframe, float T) +{ + // End:0x37 + if(keyframe.bMirrored) + { + T = Abs(T); + } + return GetDistributionValue(keyframe.AimAssistCurve, T); + //return ReturnValue; +} + +private final simulated function bool GetKeyframesToUse(float Distance, const out array keyframeData, const out array keyframesToCheck, out TgAimAssistKeyframe keyframe1, out TgAimAssistKeyframe keyframe2, out float keyframe1Dist, out float keyframe2Dist) +{ + local int I; + + keyframe1 = none; + keyframe2 = none; + keyframe1Dist = 0.0000000; + keyframe2Dist = 0.0000000; + // End:0x58 + if((keyframesToCheck.Length == 0) || keyframeData.Length == 0) + { + return false; + } + I = 0; + J0x63: + + // End:0x218 [Loop If] + if(I < keyframeData.Length) + { + // End:0x15E + if((keyframeData[I].Distance <= Distance) || keyframe1 == none) + { + // End:0x15B + if(GetKeyframeByName(keyframeData[I].KeyframeName, keyframesToCheck, keyframe1)) + { + keyframe2 = keyframe1; + keyframe1Dist = keyframeData[I].Distance; + keyframe2Dist = keyframe1Dist; + } + } + else + { + // End:0x20A + if(GetKeyframeByName(keyframeData[I].KeyframeName, keyframesToCheck, keyframe2)) + { + keyframe2Dist = keyframeData[I].Distance; + // End:0x208 + if(keyframe1 == none) + { + keyframe1 = keyframe2; + keyframe1Dist = keyframe2Dist; + } + return true; + } + } + I++; + // [Loop Continue] + goto J0x63; + } + return (keyframe1 != none) && keyframe2 != none; + //return ReturnValue; +} + +private final simulated function bool GetKeyframeByName(name KeyframeName, const out array keyframesToCheck, out TgAimAssistKeyframe outKeyframe) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x86 [Loop If] + if(I < keyframesToCheck.Length) + { + // End:0x78 + if(keyframesToCheck[I].KeyframeName == KeyframeName) + { + outKeyframe = keyframesToCheck[I]; + return true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +private final simulated function float GetInterpValBetweenFrames(float Time, float inKeyTime, float outKeyTime) +{ + // End:0x1D + if(inKeyTime >= outKeyTime) + { + return 0.0000000; + } + return FClamp(FPctByRange(Time, inKeyTime, outKeyTime), 0.0000000, 1.0000000); + //return ReturnValue; +} + +defaultproperties +{ + CurveSetType=ECurveSetTypes.CST_AimAssistKeyframes +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_AirControlFromZVelocity.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_AirControlFromZVelocity.uc new file mode 100755 index 00000000..facf2845 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_AirControlFromZVelocity.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_AirControlFromZVelocity extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_AirControlFromZVelocity.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="AirControlFromZVelocity" + PrimaryCurveName="AirControlFromZVelocity" + CurveSetType=ECurveSetTypes.CST_AirControlFromZVelocity +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_DamageFalloff.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_DamageFalloff.uc new file mode 100755 index 00000000..1344fa98 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_DamageFalloff.uc @@ -0,0 +1,19 @@ +class TgGameplayCurvesSet_DamageFalloff extends TgGameplayCurvesSet + native(GameplayCurves) + editinlinenew + hidecategories(Object); + +var(CurveSet) RawDistributionFloat DamageFalloff; +var(CurveSet) bool bIsRangeNormalized; +var(CurveSet) bool bExcludeEffectiveRange; + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_DamageFalloff.DistributionDamageFalloff' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDamageFalloff' + begin object name="DistributionDamageFalloff" class=Engine.DistributionFloatConstantCurve + end object + DamageFalloff=(Distribution=Distribution=DistributionDamageFalloff,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + CurveSetType=ECurveSetTypes.CST_DamageFalloff +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_DamageFalloffAOE.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_DamageFalloffAOE.uc new file mode 100755 index 00000000..461cb98b --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_DamageFalloffAOE.uc @@ -0,0 +1,19 @@ +class TgGameplayCurvesSet_DamageFalloffAOE extends TgGameplayCurvesSet + native(GameplayCurves) + editinlinenew + hidecategories(Object); + +var(CurveSet) RawDistributionFloat DamageFalloff; +var(CurveSet) bool bIsRangeNormalized; +var(CurveSet) bool bExcludeEffectiveRange; + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_DamageFalloffAOE.DistributionDamageFalloff' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionDamageFalloff' + begin object name="DistributionDamageFalloff" class=Engine.DistributionFloatConstantCurve + end object + DamageFalloff=(Distribution=Distribution=DistributionDamageFalloff,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + CurveSetType=ECurveSetTypes.CST_DamageFalloffAOE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_DamagePerShotHit.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_DamagePerShotHit.uc new file mode 100755 index 00000000..b8dc19e8 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_DamagePerShotHit.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_DamagePerShotHit extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_DamagePerShotHit.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="DamagePerShotHit" + PrimaryCurveName="DamagePerShotHit" + CurveSetType=ECurveSetTypes.CST_DamagePerShotHit +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_FlakInhandKnockback.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_FlakInhandKnockback.uc new file mode 100755 index 00000000..caa34eb6 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_FlakInhandKnockback.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_FlakInhandKnockback extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_FlakInhandKnockback.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="FlakInhandKnockback" + PrimaryCurveName="FlakInhandKnockback" + CurveSetType=ECurveSetTypes.CST_FlakInhandKnockback +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_FlakInhandSlow.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_FlakInhandSlow.uc new file mode 100755 index 00000000..ba60f1f2 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_FlakInhandSlow.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_FlakInhandSlow extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_FlakInhandSlow.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="FlakInhandSlow" + PrimaryCurveName="FlakInhandSlow" + CurveSetType=ECurveSetTypes.CST_FlakInhandSlow +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_GravityFromCustom.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_GravityFromCustom.uc new file mode 100755 index 00000000..1ad2d8bf --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_GravityFromCustom.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_GravityFromCustom extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_GravityFromCustom.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="GravityFromCustom" + PrimaryCurveName="GravityFromCustom" + CurveSetType=ECurveSetTypes.CST_GravityFromCustom +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_GravityFromZVelocity.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_GravityFromZVelocity.uc new file mode 100755 index 00000000..57eeb758 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_GravityFromZVelocity.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_GravityFromZVelocity extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_GravityFromZVelocity.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="GravityFromZVelocity" + PrimaryCurveName="GravityFromZVelocity" + CurveSetType=ECurveSetTypes.CST_GravityFromZVelocity +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_HitMarkerScaleByDamage.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_HitMarkerScaleByDamage.uc new file mode 100755 index 00000000..11786238 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_HitMarkerScaleByDamage.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_HitMarkerScaleByDamage extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_HitMarkerScaleByDamage.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="HitMarkerScaleByDamage" + PrimaryCurveName="HitMarkerScaleByDamage" + CurveSetType=ECurveSetTypes.CST_HitMarkerScaleByDamage +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_ProjFrictionOverTime.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_ProjFrictionOverTime.uc new file mode 100755 index 00000000..6411ed52 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_ProjFrictionOverTime.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_ProjFrictionOverTime extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_ProjFrictionOverTime.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="ProjFrictionOverTime" + PrimaryCurveName="ProjFrictionOverTime" + CurveSetType=ECurveSetTypes.CST_ProjFrictionOverTime +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_ProjGravityOverTime.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_ProjGravityOverTime.uc new file mode 100755 index 00000000..d2ecc539 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_ProjGravityOverTime.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_ProjGravityOverTime extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_ProjGravityOverTime.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="ProjGravityOverTime" + PrimaryCurveName="ProjGravityOverTime" + CurveSetType=ECurveSetTypes.CST_ProjGravityOverTime +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_ProjectileSpeedOverTime.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_ProjectileSpeedOverTime.uc new file mode 100755 index 00000000..c98e2600 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_ProjectileSpeedOverTime.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_ProjectileSpeedOverTime extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_ProjectileSpeedOverTime.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="ProjectileSpeedOverTime" + PrimaryCurveName="ProjectileSpeedOverTime" + CurveSetType=ECurveSetTypes.CST_ProjectileSpeedOverTime +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_Recoil.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_Recoil.uc new file mode 100755 index 00000000..794e66a1 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_Recoil.uc @@ -0,0 +1,88 @@ +class TgGameplayCurvesSet_Recoil extends TgGameplayCurvesSet + native(GameplayCurves) + editinlinenew + hidecategories(Object); + +enum EPaladinsRecoilType +{ + PRT_Normal, // 0 + PRT_AimDownSights, // 1 + PRT_StimActive, // 2 + PRT_MAX // 3 +}; + +var(CurveSet) noclear editinline array HorizRecoil; +var(CurveSet) noclear editinline array VertRecoil; +var(CurveSet) TgGameplayCurvesSet_Recoil.EPaladinsRecoilType RecoilType; + +simulated function bool GetHorizRecoilValue(float firingTime, float randInput, out float recoilAmt) +{ + return GetRecoilValue(firingTime, randInput, recoilAmt, HorizRecoil); + //return ReturnValue; +} + +simulated function bool GetVertRecoilValue(float firingTime, float randInput, out float recoilAmt) +{ + return GetRecoilValue(firingTime, randInput, recoilAmt, VertRecoil); + //return ReturnValue; +} + +private final simulated function bool GetRecoilValue(float firingTime, float randInput, out float recoilAmt, const out array keyframesToCheck) +{ + local int I, inKeyIndex, outKeyIndex; + local float interpAmt; + + // End:0x12 + if(keyframesToCheck.Length == 0) + { + return false; + } + inKeyIndex = -1; + outKeyIndex = -1; + I = 0; + J0x3B: + + // End:0x107 [Loop If] + if(I < keyframesToCheck.Length) + { + // End:0xB2 + if(keyframesToCheck[I].firingTime <= firingTime) + { + inKeyIndex = I; + outKeyIndex = I; + } + else + { + inKeyIndex = ((inKeyIndex == -1) ? outKeyIndex : inKeyIndex); + outKeyIndex = I; + // [Explicit Break] + goto J0x107; + } + I++; + // [Loop Continue] + goto J0x3B; + } + J0x107: + + interpAmt = GetInterpValBetweenFrames(firingTime, keyframesToCheck[inKeyIndex].firingTime, keyframesToCheck[outKeyIndex].firingTime); + randInput = FClamp(randInput, 0.0000000, 1.0000000); + recoilAmt = Lerp(GetDistributionValue(keyframesToCheck[inKeyIndex].RecoilPerShot, randInput), GetDistributionValue(keyframesToCheck[outKeyIndex].RecoilPerShot, randInput), interpAmt); + return true; + //return ReturnValue; +} + +private final simulated function float GetInterpValBetweenFrames(float Time, float inKeyTime, float outKeyTime) +{ + // End:0x1D + if(inKeyTime >= outKeyTime) + { + return 0.0000000; + } + return FClamp(FPctByRange(Time, inKeyTime, outKeyTime), 0.0000000, 1.0000000); + //return ReturnValue; +} + +defaultproperties +{ + CurveSetType=ECurveSetTypes.CST_Recoil +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_RecoilSimple.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_RecoilSimple.uc new file mode 100755 index 00000000..89d48f9e --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_RecoilSimple.uc @@ -0,0 +1,51 @@ +class TgGameplayCurvesSet_RecoilSimple extends TgGameplayCurvesSet + native(GameplayCurves) + editinlinenew + hidecategories(Object); + +var(CurveSet) RawDistributionFloat HorizRecoil1; +var(CurveSet) RawDistributionFloat HorizRecoil2; +var(CurveSet) RawDistributionFloat VertRecoil1; +var(CurveSet) RawDistributionFloat VertRecoil2; +var(CurveSet) TgGameplayCurvesSet_Recoil.EPaladinsRecoilType RecoilType; + +simulated function float GetHorizRecoilValue(float firingTime, float randInput) +{ + return Lerp(GetDistributionValue(HorizRecoil1, firingTime), GetDistributionValue(HorizRecoil2, firingTime), randInput); + //return ReturnValue; +} + +simulated function float GetVertRecoilValue(float firingTime, float randInput) +{ + return Lerp(GetDistributionValue(VertRecoil1, firingTime), GetDistributionValue(VertRecoil2, firingTime), randInput); + //return ReturnValue; +} + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_RecoilSimple.DistributionHorizRecoil1' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionHorizRecoil1' + begin object name="DistributionHorizRecoil1" class=Engine.DistributionFloatConstantCurve + end object + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_RecoilSimple.DistributionHorizRecoil2' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionHorizRecoil2' + begin object name="DistributionHorizRecoil2" class=Engine.DistributionFloatConstantCurve + end object + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_RecoilSimple.DistributionVertRecoil1' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionVertRecoil1' + begin object name="DistributionVertRecoil1" class=Engine.DistributionFloatConstantCurve + end object + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_RecoilSimple.DistributionVertRecoil2' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionVertRecoil2' + begin object name="DistributionVertRecoil2" class=Engine.DistributionFloatConstantCurve + end object + HorizRecoil1=(Distribution=Distribution=DistributionHorizRecoil1,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + HorizRecoil2=(Distribution=Distribution=DistributionHorizRecoil2,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + VertRecoil1=(Distribution=Distribution=DistributionVertRecoil1,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + VertRecoil2=(Distribution=Distribution=DistributionVertRecoil2,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + CurveSetType=ECurveSetTypes.CST_RecoilSimple +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_RuckusSpinUpControl.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_RuckusSpinUpControl.uc new file mode 100755 index 00000000..41f37720 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_RuckusSpinUpControl.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_RuckusSpinUpControl extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_RuckusSpinUpControl.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="RuckusSpinUpControl" + PrimaryCurveName="RuckusSpinUpControl" + CurveSetType=ECurveSetTypes.CST_RuckusSpinUpControl +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_ScopeWeaponFOV.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_ScopeWeaponFOV.uc new file mode 100755 index 00000000..f9ac9786 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_ScopeWeaponFOV.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_ScopeWeaponFOV extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_ScopeWeaponFOV.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="ScopeWeaponFOV" + PrimaryCurveName="ScopeWeaponFOV" + CurveSetType=ECurveSetTypes.CST_ScopeWeaponFOV +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_Simple.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_Simple.uc new file mode 100755 index 00000000..4766456e --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_Simple.uc @@ -0,0 +1,24 @@ +class TgGameplayCurvesSet_Simple extends TgGameplayCurvesSet + abstract + native(GameplayCurves) + editinlinenew + hidecategories(Object,Object); + +var(CurveSet) RawDistributionFloat PrimaryCurve; +var const name PrimaryCurveTabName; +var const name PrimaryCurveName; + +// Export UTgGameplayCurvesSet_Simple::execGetPrimaryDistributionValue(FFrame&, void* const) +native function bool GetPrimaryDistributionValue(float T, out float Value); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" class=Engine.DistributionFloatConstantCurve + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + PrimaryCurveTabName="PrimaryCurve" + PrimaryCurveName="PrimaryCurve" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_SpreadTendency.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_SpreadTendency.uc new file mode 100755 index 00000000..06037d63 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_SpreadTendency.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_SpreadTendency extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_SpreadTendency.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="SpreadTendency" + PrimaryCurveName="SpreadTendency" + CurveSetType=ECurveSetTypes.CST_SpreadTendency +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_TargetAimTracking.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_TargetAimTracking.uc new file mode 100755 index 00000000..a33d0ae4 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_TargetAimTracking.uc @@ -0,0 +1,97 @@ +class TgGameplayCurvesSet_TargetAimTracking extends TgGameplayCurvesSet + native(GameplayCurves) + editinlinenew + hidecategories(Object); + +struct native TargetAimTrackingDebugVals +{ + var int DebugState; + var name trackingCurveSetName; + var float strengthMultiplier[2]; + var float strengthByAccuracy[2]; + var float strengthByDesiredAngle[2]; + var float strengthFinal[2]; + var float rawDesiredTurnAmt[2]; + var float rawDesiredTurnAmtPerSec[2]; + + structdefaultproperties + { + DebugState=0 + trackingCurveSetName="None" + strengthMultiplier[0]=0.0000000 + strengthMultiplier[1]=0.0000000 + strengthByAccuracy[0]=0.0000000 + strengthByAccuracy[1]=0.0000000 + strengthByDesiredAngle[0]=0.0000000 + strengthByDesiredAngle[1]=0.0000000 + strengthFinal[0]=0.0000000 + strengthFinal[1]=0.0000000 + rawDesiredTurnAmt[0]=0.0000000 + rawDesiredTurnAmt[1]=0.0000000 + rawDesiredTurnAmtPerSec[0]=0.0000000 + rawDesiredTurnAmtPerSec[1]=0.0000000 + } +}; + +var(CurveSet) noclear editinline array TargetTrackingCurves; +var transient TargetAimTrackingDebugVals DebugVals; +var transient bool bSaveDebugVals; + +simulated function float GetTargetTrackingPercX(float HorizAssistAmt, float DesiredTurnAmt, int CurveSetToUse, int TargetTrackingStrength, float DeltaTime) +{ + local TgTargetAimTrackingCurves AimTrackingCurvesToUse; + + // End:0x40 + if(((CurveSetToUse < 0) || CurveSetToUse >= TargetTrackingCurves.Length) || TargetTrackingStrength <= 0) + { + return 0.0000000; + } + AimTrackingCurvesToUse = TargetTrackingCurves[CurveSetToUse]; + // End:0x72 + if(AimTrackingCurvesToUse == none) + { + return 0.0000000; + } + return GetTargetTrackingStrength(HorizAssistAmt, (0.0000959 * DesiredTurnAmt) / DeltaTime, AimTrackingCurvesToUse.StrengthByAccuracyX, AimTrackingCurvesToUse.StrengthByDesiredAngleX, TargetTrackingStrength); + //return ReturnValue; +} + +simulated function float GetTargetTrackingPercY(float VertAssistAmt, float DesiredTurnAmt, int CurveSetToUse, int TargetTrackingStrength, float DeltaTime) +{ + local TgTargetAimTrackingCurves AimTrackingCurvesToUse; + + // End:0x40 + if(((CurveSetToUse < 0) || CurveSetToUse >= TargetTrackingCurves.Length) || TargetTrackingStrength <= 0) + { + return 0.0000000; + } + AimTrackingCurvesToUse = TargetTrackingCurves[CurveSetToUse]; + // End:0x72 + if(AimTrackingCurvesToUse == none) + { + return 0.0000000; + } + return GetTargetTrackingStrength(VertAssistAmt, (0.0000959 * DesiredTurnAmt) / DeltaTime, AimTrackingCurvesToUse.StrengthByAccuracyY, AimTrackingCurvesToUse.StrengthByDesiredAngleY, TargetTrackingStrength); + //return ReturnValue; +} + +simulated function float GetTargetTrackingStrength(float AssistAmt, float DesiredTurnAmtPerSec, const out RawDistributionFloat StrengthByAccuracyCurve, const out RawDistributionFloat StrengthByDesiredAngleCurve, int TargetTrackingStrength) +{ + local float strengthMultiplier, StrengyByAccuracy, StrengthByAngle; + + strengthMultiplier = FClamp(float(TargetTrackingStrength) / 10.0000000, 0.0000000, 1.0000000); + StrengyByAccuracy = GetDistributionValue(StrengthByAccuracyCurve, Abs(AssistAmt)); + StrengthByAngle = GetDistributionValue(StrengthByDesiredAngleCurve, Abs(DesiredTurnAmtPerSec)); + return (StrengyByAccuracy * StrengthByAngle) * strengthMultiplier; + //return ReturnValue; +} + +simulated function SaveDebugInfo(bool bShouldSave) +{ + //return; +} + +defaultproperties +{ + CurveSetType=ECurveSetTypes.CST_TargetTracking +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_ThreatLevelByRange.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_ThreatLevelByRange.uc new file mode 100755 index 00000000..4f4f9aec --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_ThreatLevelByRange.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_ThreatLevelByRange extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_ThreatLevelByRange.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="ThreatLevelByRange" + PrimaryCurveName="ThreatLevelByRange" + CurveSetType=ECurveSetTypes.CST_ThreatLevelByRange +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayCurvesSet_WallRunVerticalMovement.uc b/exported/TgGame/Classes/TgGameplayCurvesSet_WallRunVerticalMovement.uc new file mode 100755 index 00000000..5f6de5b6 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayCurvesSet_WallRunVerticalMovement.uc @@ -0,0 +1,17 @@ +class TgGameplayCurvesSet_WallRunVerticalMovement extends TgGameplayCurvesSet_Simple + editinlinenew + hidecategories(Object,Object); + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_WallRunVerticalMovement.DistributionPrimaryCurve' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionPrimaryCurve' + // Archetype: DistributionFloatConstantCurve'TgGame.Default__TgGameplayCurvesSet_Simple.DistributionPrimaryCurve' + begin object name="DistributionPrimaryCurve" + end object + PrimaryCurve=(Distribution=Distribution=DistributionPrimaryCurve) + PrimaryCurveTabName="WallRunVerticalMovement" + PrimaryCurveName="WallRunVerticalMovement" + CurveSetType=ECurveSetTypes.CST_WallRunVerticalMovement +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgGameplayEventsWriter.uc b/exported/TgGame/Classes/TgGameplayEventsWriter.uc new file mode 100755 index 00000000..bcf32ed6 --- /dev/null +++ b/exported/TgGame/Classes/TgGameplayEventsWriter.uc @@ -0,0 +1,13 @@ +class TgGameplayEventsWriter extends GameplayEventsWriter + native(GameStats); + +// Export UTgGameplayEventsWriter::execResolvePlayerIndex(FFrame&, void* const) +native function int ResolvePlayerIndex(Controller Player); + +// Export UTgGameplayEventsWriter::execLogPaladinsPlayerKillDeath(FFrame&, void* const) +native function LogPaladinsPlayerKillDeath(int EventID, int KillType, Controller Killer, Class dmgType, Controller Dead); + +defaultproperties +{ + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgHUD.uc b/exported/TgGame/Classes/TgHUD.uc new file mode 100755 index 00000000..bd95e72a --- /dev/null +++ b/exported/TgGame/Classes/TgHUD.uc @@ -0,0 +1,102 @@ +class TgHUD extends HUD + transient + native + config(Game) + hidecategories(Navigation); + +var TgPlayerController m_TgPlayerController; + +// Export UTgHUD::execDeviceChangeEvent(FFrame&, void* const) +native function DeviceChangeEvent(TgDevice Dev, TgDevice.EDeviceChangeEvent Event); + +// Export UTgHUD::execUpdateGameClockUI(FFrame&, void* const) +native function bool UpdateGameClockUI(); + +// Export UTgHUD::execUpdateGameScoreUI(FFrame&, void* const) +native function bool UpdateGameScoreUI(); + +// Export UTgHUD::execUpdateGameCapturePointsUI(FFrame&, void* const) +native function bool UpdateGameCapturePointsUI(); + +// Export UTgHUD::execUpdatePlayerInfoUI(FFrame&, void* const) +native function bool UpdatePlayerInfoUI(TgRepInfo_Player PRI); + +// Export UTgHUD::execUpdatePlayerVitalsUI(FFrame&, void* const) +native function bool UpdatePlayerVitalsUI(TgPlayerController PC); + +// Export UTgHUD::execUpdatePlayerStatUI(FFrame&, void* const) +native function bool UpdatePlayerStatUI(TgPawn changedPawn); + +// Export UTgHUD::execPlayTakeHit(FFrame&, void* const) +native function PlayTakeHit(Rotator HitDir, int nDamage, Class DamageType); + +// Export UTgHUD::execUpdateReleaseTimeRemaining(FFrame&, void* const) +native function UpdateReleaseTimeRemaining(float fTimeRemaining); + +// Export UTgHUD::execUpdateScoreboard(FFrame&, void* const) +native function UpdateScoreboard(); + +// Export UTgHUD::execUpdateItemStoreItems(FFrame&, void* const) +native function bool UpdateItemStoreItems(TgRepInfo_Player PRI); + +// Export UTgHUD::execEndMission(FFrame&, void* const) +native function EndMission(bool bPlayerAttacker, TgObject.GAME_WIN_STATE finalWinState); + +// Export UTgHUD::execOnPingInfoUpdate(FFrame&, void* const) +native function OnPingInfoUpdate(TgRepInfo_Player updatedPri); + +// Export UTgHUD::execPingWorldLocation(FFrame&, void* const) +native function PingWorldLocation(Vector PingLocation, TgObject.PING_TYPE Type); + +// Export UTgHUD::execShowGameTip(FFrame&, void* const) +native function ShowGameTip(int nTipId, optional bool bNoSound = false, optional bool bPopup = false); + +// Export UTgHUD::execHideGameTip(FFrame&, void* const) +native function HideGameTip(optional bool bNoSound = false); + +// Export UTgHUD::execTutorialMessage(FFrame&, void* const) +native function TutorialMessage(int msgId, bool bTips); + +// Export UTgHUD::execShowCursor(FFrame&, void* const) +native function ShowCursor(bool bShow); + +// Export UTgHUD::execShowHit(FFrame&, void* const) +native function ShowHit(Actor Target, float fDamageAmount, bool bIsShieldHit, const out ExtraDamageInfo ExtraInfo); + +// Export UTgHUD::execMapOutroFinished(FFrame&, void* const) +native function MapOutroFinished(); + +event CommitClassSelectionChange() +{ + //return; +} + +function ShowTargetingMap(bool bShow) +{ + //return; +} + +function PlayDeviceFailResponse(TgObject.EDeviceFailType failType, bool IsAbility) +{ + //return; +} + +function OnRoundSetupStarted() +{ + //return; +} + +function UpdateRoundEndedTimer(float RoundEndTimeRemaining, float RoundEndTotalTime) +{ + //return; +} + +function UpdateRoundSetupTimer(float SetupTimeRemaining, float TimeStamp) +{ + //return; +} + +function bool FinishIntro() +{ + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgHavokNavigationHandleAudio.uc b/exported/TgGame/Classes/TgHavokNavigationHandleAudio.uc new file mode 100755 index 00000000..f3264ff1 --- /dev/null +++ b/exported/TgGame/Classes/TgHavokNavigationHandleAudio.uc @@ -0,0 +1,6 @@ +class TgHavokNavigationHandleAudio extends HavokNavigationHandle within Actor; + +defaultproperties +{ + PathingNavMeshType=EHavokNavigationMeshType.HavokNavMesh_Obstacle +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgHeadShotComponent.uc b/exported/TgGame/Classes/TgHeadShotComponent.uc new file mode 100755 index 00000000..9983cdad --- /dev/null +++ b/exported/TgGame/Classes/TgHeadShotComponent.uc @@ -0,0 +1,15 @@ +class TgHeadShotComponent extends CylinderComponent + native(Pawns) + editinlinenew + collapsecategories; + +var export editinline TgSkeletalMeshComponent m_SkelComp; +var name m_HeadBone; +var Vector m_vHeadOffset; + +defaultproperties +{ + ReplacementPrimitive=none + CollideActors=true + BlockNonZeroExtent=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgHeightFog.uc b/exported/TgGame/Classes/TgHeightFog.uc new file mode 100755 index 00000000..9d570ed4 --- /dev/null +++ b/exported/TgGame/Classes/TgHeightFog.uc @@ -0,0 +1,15 @@ +class TgHeightFog extends Info + native(Volumes) + hidecategories(Navigation,Movement,Collision); + +var export editinline HeightFogComponent FogComponent; + +defaultproperties +{ + // Reference: HeightFogComponent'TgGame.Default__TgHeightFog.HeightFogComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'HeightFogComponent0' + begin object name="HeightFogComponent0" class=Engine.HeightFogComponent + end object + FogComponent=HeightFogComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgHelpAlertVolume.uc b/exported/TgGame/Classes/TgHelpAlertVolume.uc new file mode 100755 index 00000000..0f2bdb94 --- /dev/null +++ b/exported/TgGame/Classes/TgHelpAlertVolume.uc @@ -0,0 +1,67 @@ +class TgHelpAlertVolume extends Volume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +var() int TaskForceNumber; +var() array GameTipIdList; + +// Export UTgHelpAlertVolume::execAddGameTips(FFrame&, void* const) +native function AddGameTips(TgPlayerController aPC); + +// Export UTgHelpAlertVolume::execRemoveGameTips(FFrame&, void* const) +native function RemoveGameTips(TgPlayerController aPC); + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn aPawn; + local TgPlayerController aPC; + + aPawn = TgPawn(Other); + // End:0x7E + if(aPawn != none) + { + aPC = TgPlayerController(aPawn.Controller); + // End:0x7E + if(aPC != none) + { + AddGameTips(aPC); + } + } + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + //return; +} + +simulated event UnTouch(Actor Other) +{ + local TgPawn aPawn; + local TgPlayerController aPC; + + aPawn = TgPawn(Other); + // End:0x7E + if(aPawn != none) + { + aPC = TgPlayerController(aPawn.Controller); + // End:0x7E + if(aPC != none) + { + RemoveGameTips(aPC); + } + } + super(Actor).UnTouch(Other); + //return; +} + +defaultproperties +{ + bLocalPawnsOnly=true + // Reference: BrushComponent'TgGame.Default__TgHelpAlertVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgHelpTipActor.uc b/exported/TgGame/Classes/TgHelpTipActor.uc new file mode 100755 index 00000000..3338ad95 --- /dev/null +++ b/exported/TgGame/Classes/TgHelpTipActor.uc @@ -0,0 +1,31 @@ +class TgHelpTipActor extends Actor + native(Game) + notplaceable + hidecategories(Navigation); + +var string m_strTitle; +var string m_strTip; +var int m_nGameTipId; +var transient float m_fAlpha; +var float m_fAlphaNearDistanceSq; +var float m_fAlphaFarDistanceSq; + +event Remove(bool bSuppress) +{ + local TgPlayerController TgPC; + + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x9B + if((TgPC != none) && TgPC.c_GameTipManager != none) + { + TgPC.c_GameTipManager.DismissHelpText(m_nGameTipId, !bSuppress); + } + Destroy(); + //return; +} + +defaultproperties +{ + m_fAlphaNearDistanceSq=160000.0000000 + m_fAlphaFarDistanceSq=490000.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgHoldSpot.uc b/exported/TgGame/Classes/TgHoldSpot.uc new file mode 100755 index 00000000..b3ab4d7f --- /dev/null +++ b/exported/TgGame/Classes/TgHoldSpot.uc @@ -0,0 +1,46 @@ +class TgHoldSpot extends TgDefensePoint + hidecategories(Navigation,Lighting,LightColor,Force); + +var Vehicle HoldVehicle; + +function Actor GetMoveTarget() +{ + // End:0x3E + if(HoldVehicle != none) + { + // End:0x3E + if(HoldVehicle.Health <= 0) + { + HoldVehicle = none; + } + } + return self; + //return ReturnValue; +} + +function FreePoint() +{ + Destroy(); + //return; +} + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgHoldSpot.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgDefensePoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + bStatic=false + bNoDelete=false + bCollideWhenPlacing=false + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgIdol.uc b/exported/TgGame/Classes/TgIdol.uc new file mode 100755 index 00000000..83bcd167 --- /dev/null +++ b/exported/TgGame/Classes/TgIdol.uc @@ -0,0 +1,32 @@ +class TgIdol extends Actor + placeable + hidecategories(Navigation); + +var transient int r_nDefenderTaskForce; +var transient TgPawn_Character m_Holder; +var repnotify transient TgRepInfo_Player r_HolderPRI; +var transient TgPawn_Character m_OldHolder; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_HolderPRI, r_nDefenderTaskForce; +} + +defaultproperties +{ + // Reference: StaticMeshComponent'TgGame.Default__TgIdol.FlagMesh' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FlagMesh' + begin object name="FlagMesh" class=Engine.StaticMeshComponent + ReplacementPrimitive=none + Translation=(X=0.0000000,Y=0.0000000,Z=-45.0000000) + end object + Components[0]=FlagMesh + RemoteRole=ENetRole.ROLE_SimulatedProxy + bIgnoreRigidBodyPawns=true + bAlwaysRelevant=true + bUpdateSimulatedPosition=true + NetPriority=2.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgImpactFx.uc b/exported/TgGame/Classes/TgImpactFx.uc new file mode 100755 index 00000000..74cfb43b --- /dev/null +++ b/exported/TgGame/Classes/TgImpactFx.uc @@ -0,0 +1,161 @@ +class TgImpactFx extends Object + native(FX); + +const TGIFGT_FOOTSTEP_RUN = 760; +const TGIFGT_FOOTSTEP_WALK = 815; +const TGIFGT_FOOTSTEP_SCUFF = 816; +const TGIFGT_GRENADE_BOUNCE = 761; +const TGIFGT_WEAPON_IMPACT = 762; + +struct native IMPACT_FX +{ + var name nmMaterialType; + var SoundCue Sound; + var MaterialInterface DecalMaterial; + var float fDecalWidth; + var float fDecalHeight; + var bool bRandomRotation; + var ParticleSystem Particles; + var TgSpecialFx SpecialFx; + + structdefaultproperties + { + nmMaterialType="None" + Sound=none + DecalMaterial=none + fDecalWidth=0.0000000 + fDecalHeight=0.0000000 + bRandomRotation=true + Particles=none + SpecialFx=none + } +}; + +var float c_fMaxFxDistance; +var bool c_bAlignToSurfaceNormal; +var IMPACT_FX c_EmptyImpact; +var array c_Impacts; + +function bool IsEffectRelevant(Actor Viewer, Vector HitLocation) +{ + return Viewer.EffectIsRelevant(HitLocation, false, c_fMaxFxDistance); + //return ReturnValue; +} + +function IMPACT_FX GetImpactFx(optional PhysicalMaterial HitMaterial) +{ + local int I; + local TgPhysicalMaterialProperty PhysicalProperty; + + // End:0x4B + if(HitMaterial != none) + { + PhysicalProperty = TgPhysicalMaterialProperty(HitMaterial.GetPhysicalMaterialProperty(Class'TgGame.TgPhysicalMaterialProperty')); + } + // End:0x94 + if((PhysicalProperty == none) || PhysicalProperty.MaterialType == 'None') + { + return c_Impacts[0]; + } + I = 0; + J0x9F: + + // End:0x122 [Loop If] + if(I < c_Impacts.Length) + { + // End:0x114 + if(c_Impacts[I].nmMaterialType == PhysicalProperty.MaterialType) + { + return c_Impacts[I]; + } + I++; + // [Loop Continue] + goto J0x9F; + } + return c_EmptyImpact; + //return ReturnValue; +} + +function ApplyImpact(Actor Instigator, Actor HitActor, Vector HitLocation, Vector HitNormal, optional IMPACT_FX Impact) +{ + local editinline MeshComponent HitComponent; + + // End:0x46 + if(Impact == c_EmptyImpact && c_Impacts.Length > 0) + { + Impact = c_Impacts[0]; + } + // End:0x273 + if(Impact.DecalMaterial != none) + { + // End:0xBF + if(HitActor.IsA('TgDestructible')) + { + HitComponent = TgDestructible(HitActor).SkeletalMeshComponent; + } + else + { + // End:0x116 + if(HitActor.IsA('StaticMeshActor')) + { + HitComponent = StaticMeshActor(HitActor).StaticMeshComponent; + } + else + { + // End:0x16A + if(HitActor.IsA('SkeletalMeshActor')) + { + HitComponent = SkeletalMeshActor(HitActor).SkeletalMeshComponent; + } + } + } + HitActor.WorldInfo.MyDecalManager.SpawnDecal(true, Impact.DecalMaterial, HitLocation, Rotator(-HitNormal), Impact.fDecalWidth, Impact.fDecalHeight, 10.0000000, false, ((Impact.bRandomRotation) ? FRand() * 360.0000000 : 0.0000000), HitComponent, true, true, 'None', -1, 0); + } + // End:0x2B7 + if(!c_bAlignToSurfaceNormal) + { + HitNormal = Normal(HitLocation - Instigator.Location); + } + // End:0x5AE + if(Impact.SpecialFx != none) + { + // End:0x372 + if((HitActor != none) && HitComponent != none) + { + Impact.SpecialFx.c_OwnerMesh = HitComponent; + Impact.SpecialFx.c_Owner = HitActor; + } + else + { + // End:0x4F2 + if(Instigator != none) + { + // End:0x43B + if(Instigator.IsA('TgProjectile')) + { + Impact.SpecialFx.c_OwnerMesh = TgProjectile(Instigator).c_Mesh; + Impact.SpecialFx.c_Owner = Instigator; + } + else + { + // End:0x4F2 + if(Instigator.IsA('TgPawn')) + { + Impact.SpecialFx.c_OwnerMesh = TgPawn(Instigator).Mesh; + Impact.SpecialFx.c_Owner = Instigator; + } + } + } + } + Impact.SpecialFx.SpawnEmitter(HitLocation, HitNormal); + Impact.SpecialFx.c_Owner = HitActor; + Impact.SpecialFx.PlaySoundAt(HitLocation); + } + return; + //return; +} + +defaultproperties +{ + c_EmptyImpact=(nmMaterialType="None",Sound=none,DecalMaterial=none,fDecalWidth=0.0000000,fDecalHeight=0.0000000,bRandomRotation=true,Particles=none,SpecialFx=none) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInteractiveAudio.uc b/exported/TgGame/Classes/TgInteractiveAudio.uc new file mode 100755 index 00000000..c9f625d8 --- /dev/null +++ b/exported/TgGame/Classes/TgInteractiveAudio.uc @@ -0,0 +1,3 @@ +interface TgInteractiveAudio extends Interface + abstract + native(InteractiveAudio); diff --git a/exported/TgGame/Classes/TgInterface_YingIllusion.uc b/exported/TgGame/Classes/TgInterface_YingIllusion.uc new file mode 100755 index 00000000..f208f86a --- /dev/null +++ b/exported/TgGame/Classes/TgInterface_YingIllusion.uc @@ -0,0 +1,39 @@ +interface TgInterface_YingIllusion extends Interface + abstract + native; + +delegate DestroyedEvent(Actor destroyedActor) +{ + //return; +} + +function AddOnDestroyDelegate(delegate delDestroy) +{ + //return; +} + +simulated function TriggerShatter(float fDelay) +{ + //return; +} + +event Shatter() +{ + //return; +} + +simulated function PlayDimensionalLinkFX() +{ + //return; +} + +// Export UTgInterface_YingIllusion::execIsNotDestroyed(FFrame&, void* const) +native function bool IsNotDestroyed(); + +// Export UTgInterface_YingIllusion::execGetActorFromInterface(FFrame&, void* const) +native function Actor GetActorFromInterface(); + +function TgPawn_Ying GetOwningYing() +{ + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgInterpolatingCameraActor.uc b/exported/TgGame/Classes/TgInterpolatingCameraActor.uc new file mode 100755 index 00000000..70e5dc63 --- /dev/null +++ b/exported/TgGame/Classes/TgInterpolatingCameraActor.uc @@ -0,0 +1,82 @@ +class TgInterpolatingCameraActor extends CameraActor + hidecategories(Navigation); + +struct InterpolatingCameraInfo +{ + var() bool m_bInterpLocation; + var() bool m_bInterpRotation; + var() bool m_bInterpFOVAngle; + var() Vector m_BaseLocation; + var() Vector m_TargetLocation; + var() Rotator m_BaseRotation; + var() Rotator m_TargetRotation; + var() float m_fBaseFOVAngle; + var() float m_fTargetFOVAngle; + var() float m_fInterpSpeed; + + structdefaultproperties + { + m_bInterpLocation=true + m_bInterpRotation=true + m_bInterpFOVAngle=true + m_BaseLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + m_TargetLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + m_BaseRotation=(Pitch=0,Yaw=0,Roll=0) + m_TargetRotation=(Pitch=0,Yaw=0,Roll=0) + m_fBaseFOVAngle=0.0000000 + m_fTargetFOVAngle=0.0000000 + m_fInterpSpeed=8.0000000 + } +}; + +var() array m_CameraArray; +var() int m_nCurrentCameraIndex; +var float m_fCurrentInterpValue; +var() float m_fTargetInterpValue; + +simulated event GetActorEyesViewPoint(out Vector out_Location, out Rotator out_Rotation) +{ + // End:0x4E + if(!(m_CameraArray.Length > 0) && m_nCurrentCameraIndex <= (m_CameraArray.Length - 1)) + { + super(Actor).GetActorEyesViewPoint(out_Location, out_Rotation); + } + else + { + out_Location = ((m_CameraArray[m_nCurrentCameraIndex].m_bInterpLocation) ? m_CameraArray[m_nCurrentCameraIndex].m_BaseLocation + ((m_CameraArray[m_nCurrentCameraIndex].m_TargetLocation - m_CameraArray[m_nCurrentCameraIndex].m_BaseLocation) * m_fCurrentInterpValue) : Location); + out_Rotation = ((m_CameraArray[m_nCurrentCameraIndex].m_bInterpRotation) ? m_CameraArray[m_nCurrentCameraIndex].m_BaseRotation + ((m_CameraArray[m_nCurrentCameraIndex].m_TargetRotation - m_CameraArray[m_nCurrentCameraIndex].m_BaseRotation) * m_fCurrentInterpValue) : Rotation); + } + //return; +} + +simulated function GetCameraView(float DeltaTime, out TPOV OutPOV) +{ + // End:0x4E + if(!(m_CameraArray.Length > 0) && m_nCurrentCameraIndex <= (m_CameraArray.Length - 1)) + { + super.GetCameraView(DeltaTime, OutPOV); + } + else + { + GetActorEyesViewPoint(OutPOV.Location, OutPOV.Rotation); + OutPOV.FOV = ((m_CameraArray[m_nCurrentCameraIndex].m_bInterpFOVAngle) ? m_CameraArray[m_nCurrentCameraIndex].m_fBaseFOVAngle + ((m_CameraArray[m_nCurrentCameraIndex].m_fTargetFOVAngle - m_CameraArray[m_nCurrentCameraIndex].m_fBaseFOVAngle) * m_fCurrentInterpValue) : FOVAngle); + FOVAngle = OutPOV.FOV; + } + //return; +} + +event Tick(float DeltaTime) +{ + super(Actor).Tick(DeltaTime); + // End:0x95 + if((m_CameraArray.Length > 0) && m_nCurrentCameraIndex <= (m_CameraArray.Length - 1)) + { + m_fCurrentInterpValue = FInterpTo(m_fCurrentInterpValue, m_fTargetInterpValue, DeltaTime, m_CameraArray[m_nCurrentCameraIndex].m_fInterpSpeed); + } + //return; +} + +defaultproperties +{ + Physics=EPhysics.PHYS_None +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInvListener.uc b/exported/TgGame/Classes/TgInvListener.uc new file mode 100755 index 00000000..522f074a --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener.uc @@ -0,0 +1,2 @@ +class TgInvListener extends TgInventoryObject_Device + native(Inventory); diff --git a/exported/TgGame/Classes/TgInvListener_ActiveDeployableEffect.uc b/exported/TgGame/Classes/TgInvListener_ActiveDeployableEffect.uc new file mode 100755 index 00000000..d57d43d7 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_ActiveDeployableEffect.uc @@ -0,0 +1,2 @@ +class TgInvListener_ActiveDeployableEffect extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInvListener_ActiveWhileWeaponSwap.uc b/exported/TgGame/Classes/TgInvListener_ActiveWhileWeaponSwap.uc new file mode 100755 index 00000000..9e0aa2fb --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_ActiveWhileWeaponSwap.uc @@ -0,0 +1,6 @@ +class TgInvListener_ActiveWhileWeaponSwap extends TgInvListener + native(ChampOwl); + +var TgPawn_Owl m_CachedOwlPawn; +var bool m_bActivateWhileInhandActive; +var bool m_bIsActive; diff --git a/exported/TgGame/Classes/TgInvListener_AddDamageMissingHealthPercent.uc b/exported/TgGame/Classes/TgInvListener_AddDamageMissingHealthPercent.uc new file mode 100755 index 00000000..d11ac04a --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_AddDamageMissingHealthPercent.uc @@ -0,0 +1,2 @@ +class TgInvListener_AddDamageMissingHealthPercent extends TgInventoryObject_Listen_AddDamage + native(Inventory); diff --git a/exported/TgGame/Classes/TgInvListener_AerialAssault.uc b/exported/TgGame/Classes/TgInvListener_AerialAssault.uc new file mode 100755 index 00000000..ac87f59d --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_AerialAssault.uc @@ -0,0 +1,2 @@ +class TgInvListener_AerialAssault extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(ChampRuckus); diff --git a/exported/TgGame/Classes/TgInvListener_AffectedByDeviceApplyEffect.uc b/exported/TgGame/Classes/TgInvListener_AffectedByDeviceApplyEffect.uc new file mode 100755 index 00000000..6ad99f59 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_AffectedByDeviceApplyEffect.uc @@ -0,0 +1,2 @@ +class TgInvListener_AffectedByDeviceApplyEffect extends TgInventoryObject_Listen_AffectedByDevice + native(Inventory); diff --git a/exported/TgGame/Classes/TgInvListener_ApplyHitSpecialOnKill.uc b/exported/TgGame/Classes/TgInvListener_ApplyHitSpecialOnKill.uc new file mode 100755 index 00000000..472a900f --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_ApplyHitSpecialOnKill.uc @@ -0,0 +1,2 @@ +class TgInvListener_ApplyHitSpecialOnKill extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInvListener_Combustible.uc b/exported/TgGame/Classes/TgInvListener_Combustible.uc new file mode 100755 index 00000000..39169865 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_Combustible.uc @@ -0,0 +1,2 @@ +class TgInvListener_Combustible extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(ChampDrogoz); diff --git a/exported/TgGame/Classes/TgInvListener_CooledMags.uc b/exported/TgGame/Classes/TgInvListener_CooledMags.uc new file mode 100755 index 00000000..c2b02943 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_CooledMags.uc @@ -0,0 +1,12 @@ +class TgInvListener_CooledMags extends TgInvListener + native(ChampOwl); + +var TgPawn_Owl m_CachedOwlPawn; +var TgDevice m_CachedSidearm; +var TgDevice m_CachedInhand; +var float m_fAmmoFillTime; + +defaultproperties +{ + m_fAmmoFillTime=9999999.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInvListener_Counter.uc b/exported/TgGame/Classes/TgInvListener_Counter.uc new file mode 100755 index 00000000..caac522e --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_Counter.uc @@ -0,0 +1,4 @@ +class TgInvListener_Counter extends TgInvListener + native(ChampDarklord); + +var float m_fLastCounterTime; diff --git a/exported/TgGame/Classes/TgInvListener_CounterLegendary.uc b/exported/TgGame/Classes/TgInvListener_CounterLegendary.uc new file mode 100755 index 00000000..9ee5f4e5 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_CounterLegendary.uc @@ -0,0 +1,2 @@ +class TgInvListener_CounterLegendary extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(ChampDarklord); diff --git a/exported/TgGame/Classes/TgInvListener_CrackShot.uc b/exported/TgGame/Classes/TgInvListener_CrackShot.uc new file mode 100755 index 00000000..4e5e93d8 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_CrackShot.uc @@ -0,0 +1,16 @@ +class TgInvListener_CrackShot extends TgInvListener + native(ChampOwl); + +struct native CrackShotBonusDamageTarget +{ + var Actor pTarget; + var float fBonusDamageEndTime; + + structdefaultproperties + { + pTarget=none + fBonusDamageEndTime=0.0000000 + } +}; + +var array m_Targets; diff --git a/exported/TgGame/Classes/TgInvListener_Demolition.uc b/exported/TgGame/Classes/TgInvListener_Demolition.uc new file mode 100755 index 00000000..54689526 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_Demolition.uc @@ -0,0 +1,2 @@ +class TgInvListener_Demolition extends TgInventoryObject_Listen_HitWithDevice + native(ChampBombKing); diff --git a/exported/TgGame/Classes/TgInvListener_Enlightenment.uc b/exported/TgGame/Classes/TgInvListener_Enlightenment.uc new file mode 100755 index 00000000..aad586e1 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_Enlightenment.uc @@ -0,0 +1,4 @@ +class TgInvListener_Enlightenment extends TgInvListener + native(ChampPrincess); + +var bool m_bCanRefundEnergy; diff --git a/exported/TgGame/Classes/TgInvListener_ExtraDamageAboveHealthPercent.uc b/exported/TgGame/Classes/TgInvListener_ExtraDamageAboveHealthPercent.uc new file mode 100755 index 00000000..708cac2c --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_ExtraDamageAboveHealthPercent.uc @@ -0,0 +1,7 @@ +class TgInvListener_ExtraDamageAboveHealthPercent extends TgInventoryObject_Listen_AddDamage + native(Inventory); + +defaultproperties +{ + m_bAutoProcOnInhand=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInvListener_ExtraDamageBelowHealthPercent.uc b/exported/TgGame/Classes/TgInvListener_ExtraDamageBelowHealthPercent.uc new file mode 100755 index 00000000..5bf08d90 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_ExtraDamageBelowHealthPercent.uc @@ -0,0 +1,7 @@ +class TgInvListener_ExtraDamageBelowHealthPercent extends TgInventoryObject_Listen_AddDamage + native(Inventory); + +defaultproperties +{ + m_bAutoProcOnInhand=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInvListener_Firefight.uc b/exported/TgGame/Classes/TgInvListener_Firefight.uc new file mode 100755 index 00000000..3a40c200 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_Firefight.uc @@ -0,0 +1,2 @@ +class TgInvListener_Firefight extends TgInvListener + native(ChampViktor); diff --git a/exported/TgGame/Classes/TgInvListener_GuerillaTactics.uc b/exported/TgGame/Classes/TgInvListener_GuerillaTactics.uc new file mode 100755 index 00000000..079b45c0 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_GuerillaTactics.uc @@ -0,0 +1,4 @@ +class TgInvListener_GuerillaTactics extends TgInvListener + native(ChampOwl); + +var TgPawn_Owl m_CachedOwlPawn; diff --git a/exported/TgGame/Classes/TgInvListener_Gunnery.uc b/exported/TgGame/Classes/TgInvListener_Gunnery.uc new file mode 100755 index 00000000..da4ecffc --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_Gunnery.uc @@ -0,0 +1,2 @@ +class TgInvListener_Gunnery extends TgInvListener_Firefight + native(ChampViktor); diff --git a/exported/TgGame/Classes/TgInvListener_Halfshell.uc b/exported/TgGame/Classes/TgInvListener_Halfshell.uc new file mode 100755 index 00000000..16412bf1 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_Halfshell.uc @@ -0,0 +1,2 @@ +class TgInvListener_Halfshell extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(ChampMakoa); diff --git a/exported/TgGame/Classes/TgInvListener_HitSelfOnHeadshot.uc b/exported/TgGame/Classes/TgInvListener_HitSelfOnHeadshot.uc new file mode 100755 index 00000000..abf23a0f --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_HitSelfOnHeadshot.uc @@ -0,0 +1,2 @@ +class TgInvListener_HitSelfOnHeadshot extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInvListener_HitWithDeviceFiremode.uc b/exported/TgGame/Classes/TgInvListener_HitWithDeviceFiremode.uc new file mode 100755 index 00000000..b340c5d5 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_HitWithDeviceFiremode.uc @@ -0,0 +1,2 @@ +class TgInvListener_HitWithDeviceFiremode extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInvListener_ImpasseEffect.uc b/exported/TgGame/Classes/TgInvListener_ImpasseEffect.uc new file mode 100755 index 00000000..ff60b57c --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_ImpasseEffect.uc @@ -0,0 +1,2 @@ +class TgInvListener_ImpasseEffect extends TgInvListener + native(ChampBarrierTank); diff --git a/exported/TgGame/Classes/TgInvListener_KillVengeanceTarget.uc b/exported/TgGame/Classes/TgInvListener_KillVengeanceTarget.uc new file mode 100755 index 00000000..a70dd6ef --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_KillVengeanceTarget.uc @@ -0,0 +1,4 @@ +class TgInvListener_KillVengeanceTarget extends TgInvListener + native(ChampLex); + +var TgDevice_Vengeance_Lex m_CachedVengeance; diff --git a/exported/TgGame/Classes/TgInvListener_MegaPotion.uc b/exported/TgGame/Classes/TgInvListener_MegaPotion.uc new file mode 100755 index 00000000..67b83fe8 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_MegaPotion.uc @@ -0,0 +1,2 @@ +class TgInvListener_MegaPotion extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(ChampPip); diff --git a/exported/TgGame/Classes/TgInvListener_NearVengeanceTarget.uc b/exported/TgGame/Classes/TgInvListener_NearVengeanceTarget.uc new file mode 100755 index 00000000..c92f37f4 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_NearVengeanceTarget.uc @@ -0,0 +1,5 @@ +class TgInvListener_NearVengeanceTarget extends TgInvListener + native(ChampLex); + +var bool m_bIsActive; +var TgDevice_Vengeance_Lex m_CachedVengeance; diff --git a/exported/TgGame/Classes/TgInvListener_Recycler.uc b/exported/TgGame/Classes/TgInvListener_Recycler.uc new file mode 100755 index 00000000..3aa67262 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_Recycler.uc @@ -0,0 +1,2 @@ +class TgInvListener_Recycler extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(ChampRuckus); diff --git a/exported/TgGame/Classes/TgInvListener_ReplaceCurveSets.uc b/exported/TgGame/Classes/TgInvListener_ReplaceCurveSets.uc new file mode 100755 index 00000000..817ad2e7 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_ReplaceCurveSets.uc @@ -0,0 +1,2 @@ +class TgInvListener_ReplaceCurveSets extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(Inventory); diff --git a/exported/TgGame/Classes/TgInvListener_SetChildFiremode.uc b/exported/TgGame/Classes/TgInvListener_SetChildFiremode.uc new file mode 100755 index 00000000..78a1f24f --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_SetChildFiremode.uc @@ -0,0 +1,2 @@ +class TgInvListener_SetChildFiremode extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(Inventory); diff --git a/exported/TgGame/Classes/TgInvListener_SetPetFiremode.uc b/exported/TgGame/Classes/TgInvListener_SetPetFiremode.uc new file mode 100755 index 00000000..508ebb0b --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_SetPetFiremode.uc @@ -0,0 +1,2 @@ +class TgInvListener_SetPetFiremode extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(Inventory); diff --git a/exported/TgGame/Classes/TgInvListener_SoulChargesActive.uc b/exported/TgGame/Classes/TgInvListener_SoulChargesActive.uc new file mode 100755 index 00000000..0d5c958f --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_SoulChargesActive.uc @@ -0,0 +1,5 @@ +class TgInvListener_SoulChargesActive extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +var bool m_bIsListenerActive; +var bool m_bIsCardLogicActive; diff --git a/exported/TgGame/Classes/TgInvListener_SoulChargesConsumed.uc b/exported/TgGame/Classes/TgInvListener_SoulChargesConsumed.uc new file mode 100755 index 00000000..4f7e1204 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_SoulChargesConsumed.uc @@ -0,0 +1,5 @@ +class TgInvListener_SoulChargesConsumed extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +var bool m_bIsListenerActive; +var int m_nNumSoulCharges; diff --git a/exported/TgGame/Classes/TgInvListener_SpiritsChosen.uc b/exported/TgGame/Classes/TgInvListener_SpiritsChosen.uc new file mode 100755 index 00000000..0a05c7f9 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_SpiritsChosen.uc @@ -0,0 +1,2 @@ +class TgInvListener_SpiritsChosen extends TgInventoryObject_Listen_MendingSpiritsActive + native(ChampMalDamba); diff --git a/exported/TgGame/Classes/TgInvListener_SpiteLegendary.uc b/exported/TgGame/Classes/TgInvListener_SpiteLegendary.uc new file mode 100755 index 00000000..195d34f9 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_SpiteLegendary.uc @@ -0,0 +1,2 @@ +class TgInvListener_SpiteLegendary extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(ChampDarklord); diff --git a/exported/TgGame/Classes/TgInvListener_SteadyAim.uc b/exported/TgGame/Classes/TgInvListener_SteadyAim.uc new file mode 100755 index 00000000..1f4e8b04 --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_SteadyAim.uc @@ -0,0 +1,10 @@ +class TgInvListener_SteadyAim extends TgInvListener + native(ChampKinessa); + +var int m_nSteadyAimStackCount; +var float m_fFullyChargedHitTime; + +defaultproperties +{ + m_fFullyChargedHitTime=-1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInvListener_Tremors.uc b/exported/TgGame/Classes/TgInvListener_Tremors.uc new file mode 100755 index 00000000..cbe543fb --- /dev/null +++ b/exported/TgGame/Classes/TgInvListener_Tremors.uc @@ -0,0 +1,2 @@ +class TgInvListener_Tremors extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(ChampBarrierTank); diff --git a/exported/TgGame/Classes/TgInventoryManager.uc b/exported/TgGame/Classes/TgInventoryManager.uc new file mode 100755 index 00000000..2054586b --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryManager.uc @@ -0,0 +1,191 @@ +class TgInventoryManager extends InventoryManager + native(Inventory) + hidecategories(Navigation); + +struct native transient InventoryData +{ + var init int nInvId; + var init int nItemId; + var init int nPower; + var init int nInstanceCount; + var init bool bBoundFlag; + var init float fAcquiredDatetime; + var init int nEquipSlotValueId; + + structdefaultproperties + { + nInvId=0 + nItemId=0 + nPower=0 + nInstanceCount=0 + bBoundFlag=false + fAcquiredDatetime=0.0000000 + nEquipSlotValueId=0 + } +}; + +var int r_ItemCount; +var int m_nPreviousDeviceInstanceId; +var bool m_bNeedsInvUpdate; +var Weapon m_PreviousWeapon; +var init native map{VOID,VOID} m_InventoryMap; +var init native map{VOID,VOID} s_ReplicateMap; +var init native map{VOID,VOID} s_DeletionMap; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetOwner) + r_ItemCount; +} + +// Export UTgInventoryManager::execRequestInventory(FFrame&, void* const) +native function RequestInventory(); + +// Export UTgInventoryManager::execAddDevice(FFrame&, void* const) +native function TgDevice AddDevice(int nDeviceId, int nEquipPoint, optional TgDevice parentDevice, optional bool bReplaceIfOccupied, optional int nPower); + +// Export UTgInventoryManager::execRemoveDevice(FFrame&, void* const) +native function RemoveDevice(TgInventoryObject_Device pInv); + +// Export UTgInventoryManager::execSwapDevices(FFrame&, void* const) +native function SwapDevices(TgInventoryObject_Device pInv, int nEquipPoint); + +// Export UTgInventoryManager::execGetDeviceByInstanceId(FFrame&, void* const) +native function TgDevice GetDeviceByInstanceId(int nDeviceInstanceId); + +// Export UTgInventoryManager::execGetInventoryById(FFrame&, void* const) +native function TgInventoryObject GetInventoryById(int nInventoryId); + +// Export UTgInventoryManager::execGetInventoryByEquipPoint(FFrame&, void* const) +native function TgInventoryObject GetInventoryByEquipPoint(TgObject.TG_EQUIP_POINT ePoint, int nItemType); + +// Export UTgInventoryManager::execGetInventoryByName(FFrame&, void* const) +native function TgInventoryObject GetInventoryByName(string sName); + +// Export UTgInventoryManager::execIsValid(FFrame&, void* const) +native function bool IsValid(); + +// Export UTgInventoryManager::execSetInventoryDirty(FFrame&, void* const) +native function SetInventoryDirty(); + +// Export UTgInventoryManager::execApplyAllPassiveItemEffects(FFrame&, void* const) +native function ApplyAllPassiveItemEffects(bool bRemove); + +// Export UTgInventoryManager::execTestShowInventory(FFrame&, void* const) +native function TestShowInventory(); + +// Export UTgInventoryManager::execInventoryCleanup(FFrame&, void* const) +native function InventoryCleanup(); + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + Instigator = Pawn(Owner); + // End:0x90 + if(((int(Role) != int(ROLE_Authority)) && WorldInfo != none) && !WorldInfo.IsPlayingDemo()) + { + m_bNeedsInvUpdate = true; + SetTimer(1.0000000, true, 'RequestInventory'); + } + //return; +} + +event Destroyed() +{ + InventoryCleanup(); + super.Destroyed(); + //return; +} + +reliable server event ServerTestShowInventory() +{ + TestShowInventory(); + //return; +} + +reliable server event ServerSetInventoryDirty() +{ + SetInventoryDirty(); + //return; +} + +simulated function SetPendingWeapon(Weapon DesiredWeapon) +{ + local TgDevice PrevWeapon, CurrentPending; + + // End:0x3F + if(Instigator == none) + { + // End:0x23 + if(Owner == none) + { + return; + } + else + { + Instigator = Pawn(Owner); + } + } + PrevWeapon = TgDevice(Instigator.Weapon); + CurrentPending = TgDevice(PendingWeapon); + // End:0x1EB + if(((PrevWeapon == none) || PrevWeapon.AllowSwitchTo(DesiredWeapon)) && (CurrentPending == none) || CurrentPending.AllowSwitchTo(DesiredWeapon)) + { + // End:0x19D + if((DesiredWeapon != none) && DesiredWeapon == Instigator.Weapon) + { + // End:0x19A + if(PendingWeapon != none) + { + PendingWeapon = none; + TgDevice(Instigator.Weapon).CancelUnequip(); + } + } + else + { + PendingWeapon = DesiredWeapon; + // End:0x1E1 + if(PrevWeapon != none) + { + PrevWeapon.TryPutDown(); + } + else + { + ChangedWeapon(); + } + } + } + //return; +} + +simulated function SetCurrentWeapon(TgDevice DesiredWeapon) +{ + SetPendingWeapon(DesiredWeapon); + // End:0x3A + if(int(Role) < int(ROLE_Authority)) + { + ServerSetCurrentWeapon(DesiredWeapon); + } + //return; +} + +reliable server event ServerSetCurrentWeapon(TgDevice NewWeapon) +{ + SetCurrentWeapon(NewWeapon); + //return; +} + +simulated function ChangedWeapon() +{ + m_PreviousWeapon = Instigator.Weapon; + super.ChangedWeapon(); + //return; +} + +defaultproperties +{ + r_ItemCount=-1 + s_bThrottleNetRelevancy=true + bAlwaysTick=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryManager_Player.uc b/exported/TgGame/Classes/TgInventoryManager_Player.uc new file mode 100755 index 00000000..9c88e488 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryManager_Player.uc @@ -0,0 +1,9 @@ +class TgInventoryManager_Player extends TgInventoryManager + native(Inventory) + hidecategories(Navigation); + +// Export UTgInventoryManager_Player::execRemoveBurnCards(FFrame&, void* const) +native final function RemoveBurnCards(); + +// Export UTgInventoryManager_Player::execCountFilledBurnCardSlots(FFrame&, void* const) +native final function int CountFilledBurnCardSlots(); diff --git a/exported/TgGame/Classes/TgInventoryObject.uc b/exported/TgGame/Classes/TgInventoryObject.uc new file mode 100755 index 00000000..017474b2 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject.uc @@ -0,0 +1,59 @@ +class TgInventoryObject extends Object + native(Inventory); + +enum EReplicatedState +{ + IORS_Ok, // 0 + IORS_Edited, // 1 + IORS_Deleted, // 2 + IORS_MAX // 3 +}; + +struct native sInventoryReq +{ + var bool m_bLevelFail; + var bool m_bSkillFail; + var int m_nSkillLevelReq; + var int m_nSkillIdReq; + var bool m_bFlairFail; + var bool m_bLocationFail; + + structdefaultproperties + { + m_bLevelFail=false + m_bSkillFail=false + m_nSkillLevelReq=0 + m_nSkillIdReq=0 + m_bFlairFail=false + m_bLocationFail=false + } +}; + +var protected InventoryData m_InventoryData; +var int m_nRefData; +var TgInventoryManager m_InvManager; +var bool m_bTemporary; +var TgInventoryObject.EReplicatedState s_ReplicatedState; +var native const Pointer m_pAmItem; +var int c_nNbrAcquired; +var float c_fTimeAcquired; + +// Export UTgInventoryObject::execIsUsableType(FFrame&, void* const) +native function bool IsUsableType(); + +// Export UTgInventoryObject::execIsEquippableType(FFrame&, void* const) +native function bool IsEquippableType(); + +// Export UTgInventoryObject::execGetInventoryData(FFrame&, void* const) +native function InventoryData GetInventoryData(); + +// Export UTgInventoryObject::execSetInstanceCount(FFrame&, void* const) +native function SetInstanceCount(int nInstanceCount); + +// Export UTgInventoryObject::execGetInstanceCount(FFrame&, void* const) +native function int GetInstanceCount(); + +defaultproperties +{ + m_InventoryData=(nInvId=0,nItemId=0,nPower=0,nInstanceCount=1,bBoundFlag=false,fAcquiredDatetime=0.0000000,nEquipSlotValueId=0) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Device.uc b/exported/TgGame/Classes/TgInventoryObject_Device.uc new file mode 100755 index 00000000..437da441 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Device.uc @@ -0,0 +1,14 @@ +class TgInventoryObject_Device extends TgInventoryObject + native(Inventory); + +var TgDevice s_Device; +var int m_nDeviceInstanceId; +var int c_nNumFindDeviceFails; +var int m_nStackCount; +var native const Pointer m_pAmDevice; + +// Export UTgInventoryObject_Device::execSetInstanceCount(FFrame&, void* const) +native function SetInstanceCount(int nInstanceCount); + +// Export UTgInventoryObject_Device::execIsCard(FFrame&, void* const) +native final function bool IsCard(); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Ability.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Ability.uc new file mode 100755 index 00000000..393fe592 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Ability.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Ability extends TgInventoryObject_Listen_AbilityInstant + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityEnd.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityEnd.uc new file mode 100755 index 00000000..a519638e --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityEnd.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_AbilityEnd extends TgInventoryObject_Listen_AbilityInstant + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityEndTargetFiremodeOnly.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityEndTargetFiremodeOnly.uc new file mode 100755 index 00000000..83a154d8 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityEndTargetFiremodeOnly.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_AbilityEndTargetFiremodeOnly extends TgInventoryObject_Listen_AbilityEnd + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityInstant.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityInstant.uc new file mode 100755 index 00000000..c9deb00c --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityInstant.uc @@ -0,0 +1,3 @@ +class TgInventoryObject_Listen_AbilityInstant extends TgInventoryObject_Listen_AbilityProcBase + abstract + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityProcBase.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityProcBase.uc new file mode 100755 index 00000000..ed59d461 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityProcBase.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_AbilityProcBase extends TgInvListener + abstract + native(Inventory); + +var const int m_nAbilitySlotRestriction; +var const int m_nAbilityTypeRestriction; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityProcDeployables.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityProcDeployables.uc new file mode 100755 index 00000000..05195e2a --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityProcDeployables.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_AbilityProcDeployables extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityShieldDamage.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityShieldDamage.uc new file mode 100755 index 00000000..dc205b93 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityShieldDamage.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_AbilityShieldDamage extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityStart.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityStart.uc new file mode 100755 index 00000000..32a75b60 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityStart.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_AbilityStart extends TgInventoryObject_Listen_AbilityInstant + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityStart_LowHealth.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityStart_LowHealth.uc new file mode 100755 index 00000000..3ca1508c --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AbilityStart_LowHealth.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_AbilityStart_LowHealth extends TgInventoryObject_Listen_AbilityStart + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Accelerant.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Accelerant.uc new file mode 100755 index 00000000..da86cef0 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Accelerant.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Accelerant extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Acrobatics.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Acrobatics.uc new file mode 100755 index 00000000..c188e0d6 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Acrobatics.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Acrobatics extends TgInventoryObject_Listen_UseWhileCCed + native(ChampPip); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringAbility.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringAbility.uc new file mode 100755 index 00000000..4f59a22f --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringAbility.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_ActiveDuringAbility extends TgInventoryObject_Listen_DuringAbility + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringAbility_NotFiringInhand.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringAbility_NotFiringInhand.uc new file mode 100755 index 00000000..c76e4a3c --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringAbility_NotFiringInhand.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_ActiveDuringAbility_NotFiringInhand extends TgInventoryObject_Listen_ActiveDuringAbility + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringAbility_WhileOutOfCombat.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringAbility_WhileOutOfCombat.uc new file mode 100755 index 00000000..5a8e22b0 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringAbility_WhileOutOfCombat.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_ActiveDuringAbility_WhileOutOfCombat extends TgInventoryObject_Listen_ActiveDuringAbility + native(Inventory); + +var bool m_bPawnInCombat; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringDimensionalLink.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringDimensionalLink.uc new file mode 100755 index 00000000..e3f5e16c --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringDimensionalLink.uc @@ -0,0 +1,5 @@ +class TgInventoryObject_Listen_ActiveDuringDimensionalLink extends TgInvListener + native(Inventory); + +var TgDevice_DimensionalLink m_CachedLinkDevice; +var bool m_bCardIsActive; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPassive.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPassive.uc new file mode 100755 index 00000000..64866c62 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPassive.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_ActiveDuringPassive extends TgInventoryObject_Listen_ActiveDuringAbility; + +defaultproperties +{ + m_nAbilityTypeRestriction=10964 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPassive_WhileOutOfCombat.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPassive_WhileOutOfCombat.uc new file mode 100755 index 00000000..9ab587fa --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPassive_WhileOutOfCombat.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_ActiveDuringPassive_WhileOutOfCombat extends TgInventoryObject_Listen_ActiveDuringAbility_WhileOutOfCombat; + +defaultproperties +{ + m_nAbilityTypeRestriction=10964 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPostFire.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPostFire.uc new file mode 100755 index 00000000..fd96766b --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPostFire.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_ActiveDuringPostFire extends TgInventoryObject_Listen_ActiveDuringAbility; + +defaultproperties +{ + m_eDuringType=EDuringAbilityType.DURINGABILITY_POSTFIRE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPreFire.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPreFire.uc new file mode 100755 index 00000000..691d904a --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveDuringPreFire.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_ActiveDuringPreFire extends TgInventoryObject_Listen_ActiveDuringAbility; + +defaultproperties +{ + m_eDuringType=EDuringAbilityType.DURINGABILITY_PREFIRE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveMovementHit.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveMovementHit.uc new file mode 100755 index 00000000..ccf1d43f --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveMovementHit.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_ActiveMovementHit extends TgInventoryObject_Listen_ActiveDuringAbility + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileDeployableActive.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileDeployableActive.uc new file mode 100755 index 00000000..75c2d14d --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileDeployableActive.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_ActiveWhileDeployableActive extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(Inventory); + +var int m_nActiveDeployableCount; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileDeployableInactive.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileDeployableInactive.uc new file mode 100755 index 00000000..dfc59f15 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileDeployableInactive.uc @@ -0,0 +1,9 @@ +class TgInventoryObject_Listen_ActiveWhileDeployableInactive extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(Inventory); + +var int m_nActiveDeployableCount; + +defaultproperties +{ + m_nActiveDeployableCount=-1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileInGrass.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileInGrass.uc new file mode 100755 index 00000000..d560e7fd --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileInGrass.uc @@ -0,0 +1,5 @@ +class TgInventoryObject_Listen_ActiveWhileInGrass extends TgInvListener + native(Inventory); + +var bool m_bCachedIsInGrass; +var float s_fExitTimestamp; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileOffCooldown.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileOffCooldown.uc new file mode 100755 index 00000000..dc7093c3 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ActiveWhileOffCooldown.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_ActiveWhileOffCooldown extends TgInvListener + native(Inventory); + +var bool m_bIsActive; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AddDamage.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AddDamage.uc new file mode 100755 index 00000000..2666d81a --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AddDamage.uc @@ -0,0 +1,10 @@ +class TgInventoryObject_Listen_AddDamage extends TgInvListener + native(Inventory); + +var bool m_bAutoProcOnInhand; +var bool m_bCheckIsValidTarget; + +defaultproperties +{ + m_bCheckIsValidTarget=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AddDamageMaxHealthPercent.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AddDamageMaxHealthPercent.uc new file mode 100755 index 00000000..08902b7d --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AddDamageMaxHealthPercent.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_AddDamageMaxHealthPercent extends TgInventoryObject_Listen_AddDamage + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AddDamagePerTarget.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AddDamagePerTarget.uc new file mode 100755 index 00000000..90956955 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AddDamagePerTarget.uc @@ -0,0 +1,7 @@ +class TgInventoryObject_Listen_AddDamagePerTarget extends TgInventoryObject_Listen_AddDamage + native(Inventory); + +defaultproperties +{ + m_bAutoProcOnInhand=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AddShieldDamage.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AddShieldDamage.uc new file mode 100755 index 00000000..5583cc12 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AddShieldDamage.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_AddShieldDamage extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDevice.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDevice.uc new file mode 100755 index 00000000..bfa3a285 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDevice.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_AffectedByDevice extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceActiveWhile.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceActiveWhile.uc new file mode 100755 index 00000000..789ff39f --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceActiveWhile.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_AffectedByDeviceActiveWhile extends TgInventoryObject_Listen_AffectedByDevice + native(Inventory); + +var bool m_bIsCardActive; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceDamage.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceDamage.uc new file mode 100755 index 00000000..c8ab489a --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceDamage.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_AffectedByDeviceDamage extends TgInventoryObject_Listen_AffectedByDevice + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceKill.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceKill.uc new file mode 100755 index 00000000..33ec7c41 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceKill.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_AffectedByDeviceKill extends TgInventoryObject_Listen_AffectedByDevice + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceLifesteal.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceLifesteal.uc new file mode 100755 index 00000000..eea39680 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceLifesteal.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_AffectedByDeviceLifesteal extends TgInventoryObject_Listen_AffectedByDevice + native(Inventory); + +var TgDeviceFire_MirrorDamageToHeal m_CachedFiremode; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceTarget.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceTarget.uc new file mode 100755 index 00000000..01dde7f9 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AffectedByDeviceTarget.uc @@ -0,0 +1,5 @@ +class TgInventoryObject_Listen_AffectedByDeviceTarget extends TgInventoryObject_Listen_AffectedByDevice + native(Inventory); + +var bool m_bIsCardActive; +var array m_HitActors; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AirBlast.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AirBlast.uc new file mode 100755 index 00000000..20a3e33e --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AirBlast.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_AirBlast extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ArcingBeam.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ArcingBeam.uc new file mode 100755 index 00000000..830787d3 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ArcingBeam.uc @@ -0,0 +1,97 @@ +class TgInventoryObject_Listen_ArcingBeam extends TgInvListener + native(Inventory); + +var int m_nDeviceId; +var array m_MarkedTargets; + +simulated event AddUIMarks(Actor Target, int nNumMarks) +{ + local TgRepInfo_Player targetPRI, sourcePRI; + local TgPawn TargetPawn, sourcePawn; + + // End:0x1DA + if(s_Device != none) + { + sourcePawn = TgPawn(s_Device.Owner); + TargetPawn = TgPawn(Target); + // End:0x1DA + if((sourcePawn != none) && TargetPawn != none) + { + sourcePRI = sourcePawn.GetPRI(); + targetPRI = TargetPawn.GetPRI(); + // End:0x1DA + if((sourcePRI != none) && targetPRI != none) + { + targetPRI.AddMarkedTarget(sourcePRI.r_nPawnId, nNumMarks); + // End:0x1DA + if(s_Device.GetCurrentFire() != none) + { + sourcePawn.ClearTimer('ExpireUIMarks'); + sourcePawn.SetTimer(s_Device.GetCurrentFire().GetCustomValue1(), false, 'ExpireUIMarks', self); + } + } + } + } + //return; +} + +simulated event RemoveUIMarks(Actor Target, int nNumMarks) +{ + local TgRepInfo_Player targetPRI, sourcePRI; + local TgPawn TargetPawn, sourcePawn; + + // End:0x134 + if(s_Device != none) + { + sourcePawn = TgPawn(s_Device.Owner); + TargetPawn = TgPawn(Target); + // End:0x134 + if((sourcePawn != none) && TargetPawn != none) + { + sourcePRI = sourcePawn.GetPRI(); + targetPRI = TargetPawn.GetPRI(); + // End:0x134 + if((sourcePRI != none) && targetPRI != none) + { + targetPRI.RemoveMarkedTarget(sourcePRI.r_nPawnId, nNumMarks); + } + } + } + //return; +} + +simulated function ExpireUIMarks() +{ + local Actor Actor; + + // End:0x2C + foreach m_MarkedTargets(Actor) + { + RemoveUIMarks(Actor, 1); + } + m_MarkedTargets.Remove(0, m_MarkedTargets.Length); + //return; +} + +function int CountMarksForActor(Actor Actor) +{ + local int Count; + local Actor iter; + + // End:0x3A + foreach m_MarkedTargets(iter) + { + // End:0x39 + if(iter == Actor) + { + Count++; + } + } + return Count; + //return ReturnValue; +} + +defaultproperties +{ + m_nDeviceId=14475 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AtTheReady.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AtTheReady.uc new file mode 100755 index 00000000..fb112075 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AtTheReady.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_AtTheReady extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AugmentPetHit.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AugmentPetHit.uc new file mode 100755 index 00000000..217e5c89 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AugmentPetHit.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_AugmentPetHit extends TgInventoryObject_Listen_PetAbility + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AuraMod.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AuraMod.uc new file mode 100755 index 00000000..6fff23fc --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AuraMod.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_AuraMod extends TgInvListener + native(Inventory); + +var array m_AffectedActors; +var bool m_bAuraIsActive; +var TgDevice_Aura m_CachedAuraDevice; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_AuraNearObjective.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_AuraNearObjective.uc new file mode 100755 index 00000000..798592c7 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_AuraNearObjective.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_AuraNearObjective extends TgInventoryObject_Listen_NearObjective + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Backstab.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Backstab.uc new file mode 100755 index 00000000..24df1355 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Backstab.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Backstab extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_BackstabExtraDamage.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_BackstabExtraDamage.uc new file mode 100755 index 00000000..1a8bdb1c --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_BackstabExtraDamage.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_BackstabExtraDamage extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_BarricadeEffect.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_BarricadeEffect.uc new file mode 100755 index 00000000..90b4c664 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_BarricadeEffect.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_BarricadeEffect extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_BarrierReef.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_BarrierReef.uc new file mode 100755 index 00000000..25074f05 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_BarrierReef.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_BarrierReef extends TgInventoryObject_Listen_ShellShieldEffect + native(ChampDrogoz); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_BigGame.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_BigGame.uc new file mode 100755 index 00000000..b6e33e6e --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_BigGame.uc @@ -0,0 +1,5 @@ +class TgInventoryObject_Listen_BigGame extends TgInvListener + native(ChampCassie); + +var float m_fDisengageHitTime; +var Actor m_DisengageHitTarget; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_BlastShotHitEffect.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_BlastShotHitEffect.uc new file mode 100755 index 00000000..373afa2d --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_BlastShotHitEffect.uc @@ -0,0 +1,10 @@ +class TgInventoryObject_Listen_BlastShotHitEffect extends TgInvListener + native(Inventory); + +var array m_PreviouslyHitActors; +var const int m_nTargetType; + +defaultproperties +{ + m_nTargetType=3 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_BlastShotHitSelfEffect.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_BlastShotHitSelfEffect.uc new file mode 100755 index 00000000..45b0314f --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_BlastShotHitSelfEffect.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_BlastShotHitSelfEffect extends TgInventoryObject_Listen_BlastShotHitEffect; + +defaultproperties +{ + m_nTargetType=1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_BowlingBall.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_BowlingBall.uc new file mode 100755 index 00000000..5aa0da29 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_BowlingBall.uc @@ -0,0 +1,11 @@ +class TgInventoryObject_Listen_BowlingBall extends TgInventoryObject_Listen_ActiveDuringAbility + native(Inventory); + +var float m_fRocketBootsEndTime; +var float m_fPostRocketBootsTime; + +defaultproperties +{ + m_fRocketBootsEndTime=-4.0000000 + m_fPostRocketBootsTime=4.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_CatBurglar.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_CatBurglar.uc new file mode 100755 index 00000000..069af9a8 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_CatBurglar.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_CatBurglar extends TgInventoryObject_Listen_FirstShotDuringOrAfterMovementAbility + native(ChampBlades); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_CombatRepair.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_CombatRepair.uc new file mode 100755 index 00000000..2e8a6490 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_CombatRepair.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_CombatRepair extends TgInvListener + native(Inventory); + +var TgPawn m_CachedPawnOwner; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo.uc new file mode 100755 index 00000000..fd81e97f --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo.uc @@ -0,0 +1,52 @@ +class TgInventoryObject_Listen_Combo extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +simulated event AddUIMarks(Actor Target, int nNumMarks) +{ + local TgRepInfo_Player targetPRI, sourcePRI; + local TgPawn TargetPawn, sourcePawn; + + // End:0x134 + if(s_Device != none) + { + sourcePawn = TgPawn(s_Device.Owner); + TargetPawn = TgPawn(Target); + // End:0x134 + if((sourcePawn != none) && TargetPawn != none) + { + sourcePRI = sourcePawn.GetPRI(); + targetPRI = TargetPawn.GetPRI(); + // End:0x134 + if((sourcePRI != none) && targetPRI != none) + { + targetPRI.AddMarkedTarget(sourcePRI.r_nPawnId, nNumMarks); + } + } + } + //return; +} + +simulated event RemoveUIMarks(Actor Target, int nNumMarks) +{ + local TgRepInfo_Player targetPRI, sourcePRI; + local TgPawn TargetPawn, sourcePawn; + + // End:0x134 + if(s_Device != none) + { + sourcePawn = TgPawn(s_Device.Owner); + TargetPawn = TgPawn(Target); + // End:0x134 + if((sourcePawn != none) && TargetPawn != none) + { + sourcePRI = sourcePawn.GetPRI(); + targetPRI = TargetPawn.GetPRI(); + // End:0x134 + if((sourcePRI != none) && targetPRI != none) + { + targetPRI.RemoveMarkedTarget(sourcePRI.r_nPawnId, nNumMarks); + } + } + } + //return; +} diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Androxus.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Androxus.uc new file mode 100755 index 00000000..19fdb245 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Androxus.uc @@ -0,0 +1,10 @@ +class TgInventoryObject_Listen_Combo_Androxus extends TgInventoryObject_Listen_Combo + native(Inventory); + +var int m_DefianceHitCount; +var int m_DefianceHitsToActivate; + +defaultproperties +{ + m_DefianceHitsToActivate=3 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Barik.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Barik.uc new file mode 100755 index 00000000..2b791123 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Barik.uc @@ -0,0 +1,56 @@ +class TgInventoryObject_Listen_Combo_Barik extends TgInventoryObject_Listen_Combo + native(Inventory); + +struct native ComboInfo +{ + var Actor Target; + var Actor Instigator; + var float fMarkTime; + + structdefaultproperties + { + Target=none + Instigator=none + fMarkTime=0.0000000 + } +}; + +struct native UIMarkInfo +{ + var Actor Target; + var int nUIMarkCount; + + structdefaultproperties + { + Target=none + nUIMarkCount=0 + } +}; + +struct native BurningMarkInfo +{ + var Actor Target; + var int nMarkCount; + + structdefaultproperties + { + Target=none + nMarkCount=0 + } +}; + +var array m_ComboInfoList; +var array m_UIMarkInfoList; +var array m_BurningMarks; + +// Export UTgInventoryObject_Listen_Combo_Barik::execTouchedBarricade(FFrame&, void* const) +native function TouchedBarricade(Actor Target, Actor barricade); + +// Export UTgInventoryObject_Listen_Combo_Barik::execUpdateExpiredComboInfos(FFrame&, void* const) +native function UpdateExpiredComboInfos(); + +// Export UTgInventoryObject_Listen_Combo_Barik::execUpdateUIMarks(FFrame&, void* const) +native function UpdateUIMarks(); + +// Export UTgInventoryObject_Listen_Combo_Barik::execTriggerBurningMarks(FFrame&, void* const) +native function TriggerBurningMarks(Actor Target); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_BombKing.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_BombKing.uc new file mode 100755 index 00000000..de0f9cd9 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_BombKing.uc @@ -0,0 +1,19 @@ +class TgInventoryObject_Listen_Combo_BombKing extends TgInventoryObject_Listen_Combo + native(Inventory); + +const BOMBKING_COMBO_DEVICE_ID_AUTO = 14308; +const BOMBKING_COMBO_DEVICE_ID_DETONATOR = 14309; + +struct native StickyHitInfo +{ + var Actor HitActor; + var int NumHits; + + structdefaultproperties + { + HitActor=none + NumHits=0 + } +}; + +var array m_HitActors; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Buck.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Buck.uc new file mode 100755 index 00000000..b11acc85 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Buck.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Combo_Buck extends TgInventoryObject_Listen_Combo + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Cassie.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Cassie.uc new file mode 100755 index 00000000..1ffd9a6a --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Cassie.uc @@ -0,0 +1,7 @@ +class TgInventoryObject_Listen_Combo_Cassie extends TgInventoryObject_Listen_Combo + native(Inventory); + +var float m_fDodgeRollFireTime; +var float m_fDisengageHitTime; +var TgPawn m_DisengageHitPawn; +var TgPawn_Cassie m_CachedCassiePawn; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Drogoz.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Drogoz.uc new file mode 100755 index 00000000..e24af987 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Drogoz.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_Combo_Drogoz extends TgInventoryObject_Listen_Combo + native(Inventory); + +var float m_fLastThrustTime; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Evie.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Evie.uc new file mode 100755 index 00000000..c9e63aab --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Evie.uc @@ -0,0 +1,13 @@ +class TgInventoryObject_Listen_Combo_Evie extends TgInventoryObject_Listen_Combo + native(Inventory); + +const EVIE_COMBO_DEVICE_ID_BLINK = 10315; +const EVIE_COMBO_DEVICE_ID_ICE_BLOCK = 11414; +const EVIE_COMBO_DEVICE_ID_ICE_BLOCK_SUB = 14403; + +var array m_MarkedTargets; +var float m_fBlinkTimestamp; +var float m_fIceBlockTimestamp; + +// Export UTgInventoryObject_Listen_Combo_Evie::execMarksExpired(FFrame&, void* const) +native function MarksExpired(); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Fernando.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Fernando.uc new file mode 100755 index 00000000..1d4ee0b5 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Fernando.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_Combo_Fernando extends TgInventoryObject_Listen_Combo + native(Inventory); + +const FERNANDO_COMBO_DEVICE_ID_FIREBALL = 11481; + +var int m_nNumContacts; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Grohk.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Grohk.uc new file mode 100755 index 00000000..0e9090bf --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Grohk.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_Combo_Grohk extends TgInventoryObject_Listen_Combo + native(Inventory); + +var float m_fFirstHitThisTickTimestamp; +var int m_nHitsThisChain; +var bool m_bBonusActive; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Grover.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Grover.uc new file mode 100755 index 00000000..3c266c51 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Grover.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_Combo_Grover extends TgInventoryObject_Listen_Combo + native(Inventory); + +const GROVER_COMBO_DEVICE_ID_AUTO = 13026; + +var Vector m_vAxeStartingLocation; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Kinessa.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Kinessa.uc new file mode 100755 index 00000000..c55bef14 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Kinessa.uc @@ -0,0 +1,5 @@ +class TgInventoryObject_Listen_Combo_Kinessa extends TgInventoryObject_Listen_Combo + native(Inventory); + +// Export UTgInventoryObject_Listen_Combo_Kinessa::execIsOppressorMineTarget(FFrame&, void* const) +native function bool IsOppressorMineTarget(Actor TgP); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Makoa.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Makoa.uc new file mode 100755 index 00000000..8bb65709 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Makoa.uc @@ -0,0 +1,5 @@ +class TgInventoryObject_Listen_Combo_Makoa extends TgInventoryObject_Listen_Combo + native(Inventory); + +var array m_MarkedTargetsHook; +var array m_fMarkedTimesHook; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Pip.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Pip.uc new file mode 100755 index 00000000..1809c45b --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Pip.uc @@ -0,0 +1,7 @@ +class TgInventoryObject_Listen_Combo_Pip extends TgInventoryObject_Listen_Combo + native(Inventory); + +var array m_Projectiles; +var array m_SpawnLocations; +var array m_MarkedTargetsFlask; +var array m_fMarkedTimesFlask; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Ruckus.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Ruckus.uc new file mode 100755 index 00000000..1b27a346 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Ruckus.uc @@ -0,0 +1,11 @@ +class TgInventoryObject_Listen_Combo_Ruckus extends TgInventoryObject_Listen_Combo + native(Inventory); + +var TgPawn_Ruckus m_CachedRuckusOwner; +var int m_nDamageReductionStacks; +var int m_nBonusDamageStacks; +var float m_fDamageReductionStackTime; +var float m_fBonusDamageStackTime; +var bool m_bEmitterActive; +var bool m_bComboEffectsOn; +var float m_fComboBonusTime; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Skye.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Skye.uc new file mode 100755 index 00000000..7b929fa4 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Skye.uc @@ -0,0 +1,7 @@ +class TgInventoryObject_Listen_Combo_Skye extends TgInventoryObject_Listen_Combo + native(Inventory); + +var float m_fLastStealthTime; +var bool m_bComboActive; +var bool m_bCanTriggerCombo; +var int m_nHitStacks; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Viktor.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Viktor.uc new file mode 100755 index 00000000..23bf618a --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Viktor.uc @@ -0,0 +1,16 @@ +class TgInventoryObject_Listen_Combo_Viktor extends TgInventoryObject_Listen_Combo + native(Inventory); + +struct native TimedMarkedTarget +{ + var Actor Target; + var float EndTimestamp; + + structdefaultproperties + { + Target=none + EndTimestamp=0.0000000 + } +}; + +var array m_MarkedTargets; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Ying.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Ying.uc new file mode 100755 index 00000000..bc7ed3d6 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Combo_Ying.uc @@ -0,0 +1,16 @@ +class TgInventoryObject_Listen_Combo_Ying extends TgInventoryObject_Listen_Combo + native(Inventory); + +var float m_fCombo1MaxDuration; +var float m_fCombo1BonusDamagePercent; +var float m_fCombo2BonusDamage; +var array m_MarkedTargets; +var array m_fMarkTimes; +var Actor m_InhandTarget; +var int m_nInhandHits; +var int m_nCombo1DeviceId; + +defaultproperties +{ + m_nCombo1DeviceId=13284 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Compensate.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Compensate.uc new file mode 100755 index 00000000..3a0c915c --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Compensate.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Compensate extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Conduit.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Conduit.uc new file mode 100755 index 00000000..034768db --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Conduit.uc @@ -0,0 +1,12 @@ +class TgInventoryObject_Listen_Conduit extends TgInvListener + native(Inventory); + +var int m_nDeviceIdShockPulseMain; +var int m_nDeviceIdShockPulseSupport; +var array m_EnemiesHitThisPulse; + +defaultproperties +{ + m_nDeviceIdShockPulseMain=14475 + m_nDeviceIdShockPulseSupport=14476 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayAbility1.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayAbility1.uc new file mode 100755 index 00000000..03dfbbb0 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayAbility1.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_CooldownDelayAbility1 extends TgInventoryObject_Listen_CooldownDelayer; + +defaultproperties +{ + m_nAbilitySlotRestriction=2 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayAbility2.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayAbility2.uc new file mode 100755 index 00000000..eee6b2da --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayAbility2.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_CooldownDelayAbility2 extends TgInventoryObject_Listen_CooldownDelayer; + +defaultproperties +{ + m_nAbilitySlotRestriction=3 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayMovementAbility.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayMovementAbility.uc new file mode 100755 index 00000000..198e69ac --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayMovementAbility.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_CooldownDelayMovementAbility extends TgInventoryObject_Listen_CooldownDelayer; + +defaultproperties +{ + m_nAbilityTypeRestriction=11070 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayer.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayer.uc new file mode 100755 index 00000000..59b0f0e0 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_CooldownDelayer.uc @@ -0,0 +1,18 @@ +class TgInventoryObject_Listen_CooldownDelayer extends TgInventoryObject_Listen_AbilityInstant + native(Inventory); + +enum TG_FIRE_FX_DUMMY_ON +{ + TARGET_NEVER, // 0 + TARGET_STARTFIRE, // 1 + TARGET_STOPFIRE, // 2 + TARGET_MAX // 3 +}; + +var float m_fDelayTime; +var TgInventoryObject_Listen_CooldownDelayer.TG_FIRE_FX_DUMMY_ON m_FireFxDummyOn; + +defaultproperties +{ + m_fDelayTime=-1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_DeepRoots.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_DeepRoots.uc new file mode 100755 index 00000000..0d33b452 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_DeepRoots.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_DeepRoots extends TgInvListener + native(ChampGrover); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_DefianceHit.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_DefianceHit.uc new file mode 100755 index 00000000..65f96fdb --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_DefianceHit.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_DefianceHit extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnAbility.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnAbility.uc new file mode 100755 index 00000000..287a982e --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnAbility.uc @@ -0,0 +1,17 @@ +class TgInventoryObject_Listen_DeployOnAbility extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +enum EDeployOnAbilityType +{ + DEPLOYON_STARTFIRE, // 0 + DEPLOYON_FIRE, // 1 + DEPLOYON_STOPFIRE, // 2 + DEPLOYON_MAX // 3 +}; + +var const TgInventoryObject_Listen_DeployOnAbility.EDeployOnAbilityType m_eDeployType; + +defaultproperties +{ + m_eDeployType=EDeployOnAbilityType.DEPLOYON_FIRE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnAbilityEnd.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnAbilityEnd.uc new file mode 100755 index 00000000..47773969 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnAbilityEnd.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_DeployOnAbilityEnd extends TgInventoryObject_Listen_DeployOnAbility; + +defaultproperties +{ + m_eDeployType=EDeployOnAbilityType.DEPLOYON_STOPFIRE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnAbilityStart.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnAbilityStart.uc new file mode 100755 index 00000000..71797ecf --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnAbilityStart.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_DeployOnAbilityStart extends TgInventoryObject_Listen_DeployOnAbility; + +defaultproperties +{ + m_eDeployType=EDeployOnAbilityType.DEPLOYON_STARTFIRE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnDeployable.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnDeployable.uc new file mode 100755 index 00000000..9d27a724 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnDeployable.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_DeployOnDeployable extends TgInvListener + native(Inventory); + +var array m_ValidDeployableIds; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnDeviceHit.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnDeviceHit.uc new file mode 100755 index 00000000..c4795391 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployOnDeviceHit.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_DeployOnDeviceHit extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_DeployWithProjectile.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployWithProjectile.uc new file mode 100755 index 00000000..54b52d8a --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployWithProjectile.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_DeployWithProjectile extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_DeployedDuringAbility.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployedDuringAbility.uc new file mode 100755 index 00000000..b0029414 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployedDuringAbility.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_DeployedDuringAbility extends TgInventoryObject_Listen_DuringAbility + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_DeployedWhileMounted.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployedWhileMounted.uc new file mode 100755 index 00000000..97e4f05d --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_DeployedWhileMounted.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_DeployedWhileMounted extends TgInventoryObject_Listen_DeployedDuringAbility; + +defaultproperties +{ + m_nAbilityTypeRestriction=11077 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_DirectHit.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_DirectHit.uc new file mode 100755 index 00000000..a3dfd4a1 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_DirectHit.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_DirectHit extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_DoubleTap.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_DoubleTap.uc new file mode 100755 index 00000000..981e2de0 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_DoubleTap.uc @@ -0,0 +1,12 @@ +class TgInventoryObject_Listen_DoubleTap extends TgInvListener + native(Inventory); + +var float m_fBaseWeaponDamage; +var float m_fDoubleTapDelay; +var array m_PendingDoubleTapActors; +var array m_PendingDoubleTapTimes; + +defaultproperties +{ + m_fDoubleTapDelay=0.2000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_DuringAbility.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_DuringAbility.uc new file mode 100755 index 00000000..3e1f901e --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_DuringAbility.uc @@ -0,0 +1,20 @@ +class TgInventoryObject_Listen_DuringAbility extends TgInventoryObject_Listen_AbilityProcBase + abstract + native(Inventory); + +enum EDuringAbilityType +{ + DURINGABILITY_PREFIRE, // 0 + DURINGABILITY_FIRE, // 1 + DURINGABILITY_POSTFIRE, // 2 + DURINGABILITY_MAX // 3 +}; + +var bool m_bAbilityInActiveState; +var bool m_bIsActive; +var const TgInventoryObject_Listen_DuringAbility.EDuringAbilityType m_eDuringType; + +defaultproperties +{ + m_eDuringType=EDuringAbilityType.DURINGABILITY_FIRE +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_EarthenGuard.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_EarthenGuard.uc new file mode 100755 index 00000000..01429538 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_EarthenGuard.uc @@ -0,0 +1,5 @@ +class TgInventoryObject_Listen_EarthenGuard extends TgInvListener + native(ChampBarrierTank); + +// Export UTgInventoryObject_Listen_EarthenGuard::execIsValidDeployable(FFrame&, void* const) +native function bool IsValidDeployable(TgDeployable deployable); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_EmitterEffect.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_EmitterEffect.uc new file mode 100755 index 00000000..2c7f4eb3 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_EmitterEffect.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_EmitterEffect extends TgInventoryObject_Listen_DuringAbility + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_EnergyCharge.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_EnergyCharge.uc new file mode 100755 index 00000000..62e13833 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_EnergyCharge.uc @@ -0,0 +1,14 @@ +class TgInventoryObject_Listen_EnergyCharge extends TgInvListener + native(Inventory); + +var TgPawn m_CachedTgPawn; +var float m_fChargeMultiplierDamageDealt; +var float m_fChargeMultiplierDamageTaken; +var float m_fChargeMultiplierPetDamage; + +defaultproperties +{ + m_fChargeMultiplierDamageDealt=1.0000000 + m_fChargeMultiplierDamageTaken=1.0000000 + m_fChargeMultiplierPetDamage=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_EquivalentExchange.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_EquivalentExchange.uc new file mode 100755 index 00000000..2e8a39fe --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_EquivalentExchange.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_EquivalentExchange extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Exaction.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Exaction.uc new file mode 100755 index 00000000..9939a873 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Exaction.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_Exaction extends TgInventoryObject_Listen_FirstShotAfterMovementAbility + native(Inventory); + +var TgDeviceFire_MirrorDamageToHeal m_CachedFiremode; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Exhilarate.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Exhilarate.uc new file mode 100755 index 00000000..cc9d04c2 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Exhilarate.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Exhilarate extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Featherlite.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Featherlite.uc new file mode 100755 index 00000000..4856a174 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Featherlite.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Featherlite extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(ChampBlades); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Featherweight.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Featherweight.uc new file mode 100755 index 00000000..a30531fc --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Featherweight.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Featherweight extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FireInsteadOfDeath.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FireInsteadOfDeath.uc new file mode 100755 index 00000000..2caa813f --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FireInsteadOfDeath.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FireInsteadOfDeath extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnDamageInterruptedStealth.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnDamageInterruptedStealth.uc new file mode 100755 index 00000000..c8e373ef --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnDamageInterruptedStealth.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FireOnDamageInterruptedStealth extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnElimination.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnElimination.uc new file mode 100755 index 00000000..0ac31e21 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnElimination.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FireOnElimination extends TgInventoryObject_Listen_FireOnKill + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnKill.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnKill.uc new file mode 100755 index 00000000..cb961d4a --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnKill.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FireOnKill extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnKillWithChildDevice.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnKillWithChildDevice.uc new file mode 100755 index 00000000..e1817099 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnKillWithChildDevice.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FireOnKillWithChildDevice extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnLandAfterLeap.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnLandAfterLeap.uc new file mode 100755 index 00000000..070362be --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnLandAfterLeap.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FireOnLandAfterLeap extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnLowHealth.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnLowHealth.uc new file mode 100755 index 00000000..b1be56a6 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnLowHealth.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FireOnLowHealth extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnMiss.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnMiss.uc new file mode 100755 index 00000000..17a334a0 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnMiss.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FireOnMiss extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnTeleport.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnTeleport.uc new file mode 100755 index 00000000..4a79d1cc --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FireOnTeleport.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FireOnTeleport extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FireWithDeployable.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FireWithDeployable.uc new file mode 100755 index 00000000..c27e7443 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FireWithDeployable.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FireWithDeployable extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FireWithProjectile.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FireWithProjectile.uc new file mode 100755 index 00000000..75fa800a --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FireWithProjectile.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FireWithProjectile extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FiringDuringAbility.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FiringDuringAbility.uc new file mode 100755 index 00000000..d3ed3fe8 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FiringDuringAbility.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FiringDuringAbility extends TgInventoryObject_Listen_DuringAbility + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FiringDuringAbilityAltMode.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FiringDuringAbilityAltMode.uc new file mode 100755 index 00000000..f9420b85 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FiringDuringAbilityAltMode.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FiringDuringAbilityAltMode extends TgInventoryObject_Listen_FiringDuringAbility + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FirstAidKit.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FirstAidKit.uc new file mode 100755 index 00000000..66584282 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FirstAidKit.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FirstAidKit extends TgInventoryObject_Listen_SpawnTeamHealthNugget + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FirstShotAfterMovementAbility.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FirstShotAfterMovementAbility.uc new file mode 100755 index 00000000..c15ac6f6 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FirstShotAfterMovementAbility.uc @@ -0,0 +1,12 @@ +class TgInventoryObject_Listen_FirstShotAfterMovementAbility extends TgInvListener + native(Inventory); + +var float m_fLastMovementAbilityTime; +var bool m_bJustFinishedMovementAbility; +var int m_nNumApplicationsRemaining; +var float m_fLastAppliedTime; + +defaultproperties +{ + m_fLastMovementAbilityTime=-10.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FirstShotDuringOrAfterMovementAbility.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FirstShotDuringOrAfterMovementAbility.uc new file mode 100755 index 00000000..076e5745 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FirstShotDuringOrAfterMovementAbility.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_FirstShotDuringOrAfterMovementAbility extends TgInventoryObject_Listen_FirstShotAfterMovementAbility + native(Inventory); + +var bool m_bMovementAbilityActive; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FirstShotDuringOrAfterStealth.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FirstShotDuringOrAfterStealth.uc new file mode 100755 index 00000000..ccdb75e5 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FirstShotDuringOrAfterStealth.uc @@ -0,0 +1,10 @@ +class TgInventoryObject_Listen_FirstShotDuringOrAfterStealth extends TgInvListener + native(Inventory); + +var bool m_bWasStealthed; +var float m_fLastStealthTime; + +defaultproperties +{ + m_fLastStealthTime=10.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FragGrenade.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FragGrenade.uc new file mode 100755 index 00000000..e06588e6 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FragGrenade.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FragGrenade extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_FrigidField.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_FrigidField.uc new file mode 100755 index 00000000..749e8f2d --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_FrigidField.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_FrigidField extends TgInventoryObject_Listen_DeployedDuringAbility + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Get_Nugget.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Get_Nugget.uc new file mode 100755 index 00000000..d9995496 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Get_Nugget.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Get_Nugget extends TgInventoryObject_Listen_Stack + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_GiftGiver.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_GiftGiver.uc new file mode 100755 index 00000000..460435c2 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_GiftGiver.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_GiftGiver extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +var bool m_bHasActivated; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_GourdEffect.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_GourdEffect.uc new file mode 100755 index 00000000..e01e0610 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_GourdEffect.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_GourdEffect extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Headhunter.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Headhunter.uc new file mode 100755 index 00000000..c31c804c --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Headhunter.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Headhunter extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_HealthByPercent.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_HealthByPercent.uc new file mode 100755 index 00000000..8ee282ca --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_HealthByPercent.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_HealthByPercent extends TgInvListener + native(Inventory); + +var int m_iAppliedStacks; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_HealthPCT_In_Range.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_HealthPCT_In_Range.uc new file mode 100755 index 00000000..ce6b3373 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_HealthPCT_In_Range.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_HealthPCT_In_Range extends TgInvListener + native(Inventory); + +var bool m_bApplied; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_HitAirborne.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_HitAirborne.uc new file mode 100755 index 00000000..133600c4 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_HitAirborne.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_HitAirborne extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_HitAirborneOwner.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_HitAirborneOwner.uc new file mode 100755 index 00000000..14733f18 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_HitAirborneOwner.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_HitAirborneOwner extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_HitOnHeadshot.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_HitOnHeadshot.uc new file mode 100755 index 00000000..24506222 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_HitOnHeadshot.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_HitOnHeadshot extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_HitStealthTarget.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_HitStealthTarget.uc new file mode 100755 index 00000000..c17c5ab8 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_HitStealthTarget.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_HitStealthTarget extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDevice.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDevice.uc new file mode 100755 index 00000000..42b0235f --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDevice.uc @@ -0,0 +1,9 @@ +class TgInventoryObject_Listen_HitWithDevice extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +var bool m_bIgnoreChildDevice; +var bool m_bAutoProcOnInhand; +var bool m_bAutoProcOnAsIfInhand; +var bool m_bSkipActiveCheck; +var bool m_bSkipStartCooldown; +var bool m_bUseAllyTargets; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceAllyTarget.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceAllyTarget.uc new file mode 100755 index 00000000..bd71d2aa --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceAllyTarget.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_HitWithDeviceAllyTarget extends TgInventoryObject_Listen_HitWithDevice; + +defaultproperties +{ + m_bUseAllyTargets=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceAsIfInhand.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceAsIfInhand.uc new file mode 100755 index 00000000..bb7e91f9 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceAsIfInhand.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_HitWithDeviceAsIfInhand extends TgInventoryObject_Listen_HitWithDeviceInhand; + +defaultproperties +{ + m_bAutoProcOnAsIfInhand=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceInhand.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceInhand.uc new file mode 100755 index 00000000..639075c4 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceInhand.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_HitWithDeviceInhand extends TgInventoryObject_Listen_HitWithDevice; + +defaultproperties +{ + m_bAutoProcOnInhand=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceInhandOnly.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceInhandOnly.uc new file mode 100755 index 00000000..9fc2816a --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceInhandOnly.uc @@ -0,0 +1,7 @@ +class TgInventoryObject_Listen_HitWithDeviceInhandOnly extends TgInventoryObject_Listen_HitWithDevice; + +defaultproperties +{ + m_bIgnoreChildDevice=true + m_bAutoProcOnInhand=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceSpecial.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceSpecial.uc new file mode 100755 index 00000000..a9ebdf65 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithDeviceSpecial.uc @@ -0,0 +1,5 @@ +class TgInventoryObject_Listen_HitWithDeviceSpecial extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +var bool m_bSkipActiveCheck; +var bool m_bSkipStartCooldown; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithInhandWhileDeviceFiring.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithInhandWhileDeviceFiring.uc new file mode 100755 index 00000000..f9ba0f69 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithInhandWhileDeviceFiring.uc @@ -0,0 +1,7 @@ +class TgInventoryObject_Listen_HitWithInhandWhileDeviceFiring extends TgInventoryObject_Listen_HitWithDevice + native(Inventory); + +defaultproperties +{ + m_bAutoProcOnInhand=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithPetDevice.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithPetDevice.uc new file mode 100755 index 00000000..244f476a --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_HitWithPetDevice.uc @@ -0,0 +1,5 @@ +class TgInventoryObject_Listen_HitWithPetDevice extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +var bool m_bSkipActiveCheck; +var bool m_bSkipStartCooldown; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Hustle.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Hustle.uc new file mode 100755 index 00000000..667d8fae --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Hustle.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Hustle extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ImpalerArrowHit.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ImpalerArrowHit.uc new file mode 100755 index 00000000..8f6a7c0c --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ImpalerArrowHit.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_ImpalerArrowHit extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_InHand_HitMissStacker.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_InHand_HitMissStacker.uc new file mode 100755 index 00000000..c18b9b71 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_InHand_HitMissStacker.uc @@ -0,0 +1,10 @@ +class TgInventoryObject_Listen_InHand_HitMissStacker extends TgInvListener + native(Inventory); + +var float m_fLastStackTime; +var int m_nAppliedStacks; + +defaultproperties +{ + m_fLastStackTime=-1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Jolt.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Jolt.uc new file mode 100755 index 00000000..c536dfaf --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Jolt.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Jolt extends TgInvListener_SetChildFiremode + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Kindling.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Kindling.uc new file mode 100755 index 00000000..9dc12ff3 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Kindling.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Kindling extends TgInventoryObject_Listen_AbilityStart + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_LastStand.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_LastStand.uc new file mode 100755 index 00000000..22e53830 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_LastStand.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_LastStand extends TgInventoryObject_Listen_ActiveDuringAbility + native(Inventory); + +var bool m_bHealthInActiveRange; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_LazarusResurrect.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_LazarusResurrect.uc new file mode 100755 index 00000000..e5a4a12d --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_LazarusResurrect.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_LazarusResurrect extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_LiftOff.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_LiftOff.uc new file mode 100755 index 00000000..0f7c8329 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_LiftOff.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_LiftOff extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_LoogieExploded.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_LoogieExploded.uc new file mode 100755 index 00000000..c1b135b6 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_LoogieExploded.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_LoogieExploded extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_LoogieExplodedHit.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_LoogieExplodedHit.uc new file mode 100755 index 00000000..35676aad --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_LoogieExplodedHit.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_LoogieExplodedHit extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +var bool m_bNeedToApplyCooldown; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_LoogieHit.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_LoogieHit.uc new file mode 100755 index 00000000..ea3b0da9 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_LoogieHit.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_LoogieHit extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +const DEVICE_ID_FIRE_SPIT = 13327; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Marksman.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Marksman.uc new file mode 100755 index 00000000..39638ef8 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Marksman.uc @@ -0,0 +1,10 @@ +class TgInventoryObject_Listen_Marksman extends TgInvListener + native(Inventory); + +var int m_nHitCombo; +var int m_nComboToActivate; + +defaultproperties +{ + m_nComboToActivate=3 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_MendingSpiritsActive.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_MendingSpiritsActive.uc new file mode 100755 index 00000000..23d08772 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_MendingSpiritsActive.uc @@ -0,0 +1,8 @@ +class TgInventoryObject_Listen_MendingSpiritsActive extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +const MENDING_SPIRITS_DEVICE_ID = 14822; +const MENDING_SPIRITS_EFFECT_GROUP_ID = 55837; + +var array m_PawnTargets; +var bool m_bEffectsAreActive; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_MirrorDamageToHeal.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_MirrorDamageToHeal.uc new file mode 100755 index 00000000..a39d6829 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_MirrorDamageToHeal.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_MirrorDamageToHeal extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +var TgDeviceFire_MirrorDamageToHeal m_CachedFiremode; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_MirrorDamageToHealBlock.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_MirrorDamageToHealBlock.uc new file mode 100755 index 00000000..02551e4c --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_MirrorDamageToHealBlock.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_MirrorDamageToHealBlock extends TgInvListener + native(Inventory); + +var TgDeviceFire_MirrorDamageToHealBlock m_CachedFiremode; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_MirrorInhandDamageToHeal.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_MirrorInhandDamageToHeal.uc new file mode 100755 index 00000000..fa42054c --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_MirrorInhandDamageToHeal.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_MirrorInhandDamageToHeal extends TgInventoryObject_Listen_MirrorDamageToHeal + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_MirrorPetDamageToHeal.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_MirrorPetDamageToHeal.uc new file mode 100755 index 00000000..5509fbd2 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_MirrorPetDamageToHeal.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_MirrorPetDamageToHeal extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +var TgDeviceFire_MirrorDamageToHeal m_CachedFiremode; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_MoraleBoost.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_MoraleBoost.uc new file mode 100755 index 00000000..1fb61a46 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_MoraleBoost.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_MoraleBoost extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Mount.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Mount.uc new file mode 100755 index 00000000..f1ce6388 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Mount.uc @@ -0,0 +1,8 @@ +class TgInventoryObject_Listen_Mount extends TgInventoryObject_Listen_ActiveDuringAbility + native(Inventory); + +defaultproperties +{ + m_eDuringType=EDuringAbilityType.DURINGABILITY_POSTFIRE + m_nAbilityTypeRestriction=11077 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_MountEnd.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_MountEnd.uc new file mode 100755 index 00000000..1a86490d --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_MountEnd.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_MountEnd extends TgInventoryObject_Listen_AbilityEnd; + +defaultproperties +{ + m_nAbilityTypeRestriction=11077 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_MountShield.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_MountShield.uc new file mode 100755 index 00000000..6ebbaade --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_MountShield.uc @@ -0,0 +1,10 @@ +class TgInventoryObject_Listen_MountShield extends TgInventoryObject_Listen_Mount + native(Inventory); + +var float m_fNextMountShieldTime; +var const float m_fMinMountShieldTime; + +defaultproperties +{ + m_fMinMountShieldTime=10.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_NearObjective.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_NearObjective.uc new file mode 100755 index 00000000..db9d1477 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_NearObjective.uc @@ -0,0 +1,5 @@ +class TgInventoryObject_Listen_NearObjective extends TgInvListener + native(Inventory); + +var bool m_bIsActive; +var TgPawn_Character m_CachedCharacterPawn; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_NearOwnTurret.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_NearOwnTurret.uc new file mode 100755 index 00000000..5bc766fc --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_NearOwnTurret.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_NearOwnTurret extends TgInvListener + native(Inventory); + +var bool m_bIsActive; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_OppressorMineEffect.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_OppressorMineEffect.uc new file mode 100755 index 00000000..b1e87492 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_OppressorMineEffect.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_OppressorMineEffect extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_OutOfCombat.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_OutOfCombat.uc new file mode 100755 index 00000000..7b19b062 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_OutOfCombat.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_OutOfCombat extends TgInvListener + native(Inventory); + +var bool m_bEffectIsApplied; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_PetAbility.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_PetAbility.uc new file mode 100755 index 00000000..965a8cec --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_PetAbility.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_PetAbility extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_PetAbilityWhileDeployableActive.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_PetAbilityWhileDeployableActive.uc new file mode 100755 index 00000000..abd76414 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_PetAbilityWhileDeployableActive.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_PetAbilityWhileDeployableActive extends TgInventoryObject_Listen_PetAbility + native(Inventory); + +var int m_nActiveDeployableCount; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_PetAbility_Deploy.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_PetAbility_Deploy.uc new file mode 100755 index 00000000..9cadbd7d --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_PetAbility_Deploy.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_PetAbility_Deploy extends TgInventoryObject_Listen_PetAbility + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_PetDied.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_PetDied.uc new file mode 100755 index 00000000..d7575a2d --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_PetDied.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_PetDied extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_PipConsequential.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_PipConsequential.uc new file mode 100755 index 00000000..88d46969 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_PipConsequential.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_PipConsequential extends TgInvListener + native(Inventory); + +var int s_nHitCounter; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_PoisonBolts.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_PoisonBolts.uc new file mode 100755 index 00000000..e00b587a --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_PoisonBolts.uc @@ -0,0 +1,24 @@ +class TgInventoryObject_Listen_PoisonBolts extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +struct native PoisonBoltInfo +{ + var TgPawn PawnTarget; + var TgDeployable DeployableTarget; + var bool bEffectActive; + + structdefaultproperties + { + PawnTarget=none + DeployableTarget=none + bEffectActive=false + } +}; + +var array m_PoisonBoltTargets; +var const int m_EffectGroupID; + +defaultproperties +{ + m_EffectGroupID=55144 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Proximity.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Proximity.uc new file mode 100755 index 00000000..eeb430fd --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Proximity.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Proximity extends TgInventoryObject_Listen_ActiveDuringAbility + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_RainOfFire.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_RainOfFire.uc new file mode 100755 index 00000000..3c050557 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_RainOfFire.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_RainOfFire extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ReachOut.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ReachOut.uc new file mode 100755 index 00000000..72a6f829 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ReachOut.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_ReachOut extends TgInventoryObject_Listen_NearObjective + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceInhandSelfDamage.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceInhandSelfDamage.uc new file mode 100755 index 00000000..f97c8cc6 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceInhandSelfDamage.uc @@ -0,0 +1,5 @@ +class TgInventoryObject_Listen_ReduceInhandSelfDamage extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(Inventory); + +var float m_fCachedBaseDamage; +var float m_fCachedBaseKnockback; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceOtherCooldownOnHit.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceOtherCooldownOnHit.uc new file mode 100755 index 00000000..46bcef55 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceOtherCooldownOnHit.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_ReduceOtherCooldownOnHit extends TgInventoryObject_Listen_HitWithDevice + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceOtherCooldownOnStartFire.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceOtherCooldownOnStartFire.uc new file mode 100755 index 00000000..f9c2a2da --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceOtherCooldownOnStartFire.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_ReduceOtherCooldownOnStartFire extends TgInventoryObject_Listen_AbilityStart + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceOtherCooldownOnStopFire.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceOtherCooldownOnStopFire.uc new file mode 100755 index 00000000..8e8db4f8 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceOtherCooldownOnStopFire.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_ReduceOtherCooldownOnStopFire extends TgInventoryObject_Listen_AbilityEnd + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceSelfDamageDeployable.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceSelfDamageDeployable.uc new file mode 100755 index 00000000..5e0c57f4 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceSelfDamageDeployable.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_ReduceSelfDamageDeployable extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceSelfDamageProjectile.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceSelfDamageProjectile.uc new file mode 100755 index 00000000..73d638ce --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ReduceSelfDamageProjectile.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_ReduceSelfDamageProjectile extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ReloadCard.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ReloadCard.uc new file mode 100755 index 00000000..04d5fc31 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ReloadCard.uc @@ -0,0 +1,5 @@ +class TgInventoryObject_Listen_ReloadCard extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +var int m_StacksNeededOnCooldown; +var int m_nPendingHitCounter; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ReversalEffect.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ReversalEffect.uc new file mode 100755 index 00000000..1783d5fa --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ReversalEffect.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_ReversalEffect extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_SalvoExplode.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_SalvoExplode.uc new file mode 100755 index 00000000..556eeec4 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_SalvoExplode.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_SalvoExplode extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Scramble.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Scramble.uc new file mode 100755 index 00000000..2ff7db7f --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Scramble.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_Scramble extends TgInvListener + native(Inventory); + +var TgDevice_Scramble m_CachedScrambleDevice; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ShellShieldEffect.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ShellShieldEffect.uc new file mode 100755 index 00000000..df60f287 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ShellShieldEffect.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_ShellShieldEffect extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_ShieldEffect.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_ShieldEffect.uc new file mode 100755 index 00000000..c5d5f10e --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_ShieldEffect.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_ShieldEffect extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_SizeOfTheFight.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_SizeOfTheFight.uc new file mode 100755 index 00000000..7df5fb03 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_SizeOfTheFight.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_SizeOfTheFight extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_SmokeScreenEffect.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_SmokeScreenEffect.uc new file mode 100755 index 00000000..2e492ada --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_SmokeScreenEffect.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_SmokeScreenEffect extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_SpawnTeamHealthNugget.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_SpawnTeamHealthNugget.uc new file mode 100755 index 00000000..334c3fe6 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_SpawnTeamHealthNugget.uc @@ -0,0 +1,15 @@ +class TgInventoryObject_Listen_SpawnTeamHealthNugget extends TgInvListener + native(Inventory); + +var TgSpecialFx m_NuggetSpawnFX; +var int m_NuggetSpawnFXID; +var bool m_bUseCV1ForSpawnChance; + +// Export UTgInventoryObject_Listen_SpawnTeamHealthNugget::execSpawnTeamHealthNugget(FFrame&, void* const) +native function SpawnTeamHealthNugget(TgPawn Target, Vector SpawnDirection); + +defaultproperties +{ + m_NuggetSpawnFXID=6488 + m_bUseCV1ForSpawnChance=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Spite.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Spite.uc new file mode 100755 index 00000000..bb063774 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Spite.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_Spite extends TgInvListener + native(Inventory); + +var int m_nHitCombo; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Spitfire.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Spitfire.uc new file mode 100755 index 00000000..2ab032a1 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Spitfire.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Spitfire extends TgInvListener + native(ChampDrogoz); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_SpringBloom.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_SpringBloom.uc new file mode 100755 index 00000000..d13207e1 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_SpringBloom.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_SpringBloom extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Sprint.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Sprint.uc new file mode 100755 index 00000000..692f8022 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Sprint.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Sprint extends TgInventoryObject_Listen_ActiveWhileOffCooldown + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Stack.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Stack.uc new file mode 100755 index 00000000..7de63bfc --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Stack.uc @@ -0,0 +1,5 @@ +class TgInventoryObject_Listen_Stack extends TgInvListener + native(Inventory); + +// Export UTgInventoryObject_Listen_Stack::execAddStackCount(FFrame&, void* const) +native function AddStackCount(int nStackCount); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_StackPerPetAlive.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_StackPerPetAlive.uc new file mode 100755 index 00000000..4f117837 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_StackPerPetAlive.uc @@ -0,0 +1,5 @@ +class TgInventoryObject_Listen_StackPerPetAlive extends TgInventoryObject_Listen_Stack + native(Inventory); + +// Export UTgInventoryObject_Listen_StackPerPetAlive::execUpdatePetCountStacks(FFrame&, void* const) +native function UpdatePetCountStacks(optional bool bEmptyStacks = false); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_StandingStill.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_StandingStill.uc new file mode 100755 index 00000000..0e9b0867 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_StandingStill.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_StandingStill extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_StandingStillSelfEffect.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_StandingStillSelfEffect.uc new file mode 100755 index 00000000..88b2175c --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_StandingStillSelfEffect.uc @@ -0,0 +1,11 @@ +class TgInventoryObject_Listen_StandingStillSelfEffect extends TgInvListener + native(Inventory); + +var float m_fRestTime; +var bool m_bIsApplied; +var TgPawn m_CachedPawnOwner; + +defaultproperties +{ + m_fRestTime=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_StatusIsOnTarget.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_StatusIsOnTarget.uc new file mode 100755 index 00000000..0eaecaf6 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_StatusIsOnTarget.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_StatusIsOnTarget extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_StickyBombDetonate.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_StickyBombDetonate.uc new file mode 100755 index 00000000..e96d5e9d --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_StickyBombDetonate.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_StickyBombDetonate extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_TagForLifesteal.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_TagForLifesteal.uc new file mode 100755 index 00000000..43a99165 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_TagForLifesteal.uc @@ -0,0 +1,6 @@ +class TgInventoryObject_Listen_TagForLifesteal extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +var array m_TagActors; +var array m_TagTimes; +var TgDeviceFire_MirrorDamageToHeal m_CachedFiremode; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Thunderstruck.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Thunderstruck.uc new file mode 100755 index 00000000..dd3e431f --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Thunderstruck.uc @@ -0,0 +1,5 @@ +class TgInventoryObject_Listen_Thunderstruck extends TgInventoryObject_Listen_AbilityProcBase + native(Inventory); + +var array m_UniqueTargets; +var bool m_bCachedIsArcing; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_TotemEffect.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_TotemEffect.uc new file mode 100755 index 00000000..3ab89cb6 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_TotemEffect.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_TotemEffect extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_TripWire.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_TripWire.uc new file mode 100755 index 00000000..833e41c7 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_TripWire.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_TripWire extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_TrueGrit.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_TrueGrit.uc new file mode 100755 index 00000000..3c9a786e --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_TrueGrit.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_TrueGrit extends TgInvListener + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Undying.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Undying.uc new file mode 100755 index 00000000..57aeeae7 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Undying.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Undying extends TgInventoryObject_Listen_ActiveDuringAbility + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Unveil.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Unveil.uc new file mode 100755 index 00000000..6f5b45a9 --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Unveil.uc @@ -0,0 +1,2 @@ +class TgInventoryObject_Listen_Unveil extends TgInventoryObject_Listen_AugmentPetHit + native(Inventory); diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_UseWhileCCed.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_UseWhileCCed.uc new file mode 100755 index 00000000..261fb76b --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_UseWhileCCed.uc @@ -0,0 +1,4 @@ +class TgInventoryObject_Listen_UseWhileCCed extends TgInventoryObject_Listen_Ability + native(Inventory); + +var bool m_bIsActive; diff --git a/exported/TgGame/Classes/TgInventoryObject_Listen_Weaken.uc b/exported/TgGame/Classes/TgInventoryObject_Listen_Weaken.uc new file mode 100755 index 00000000..6fa4245b --- /dev/null +++ b/exported/TgGame/Classes/TgInventoryObject_Listen_Weaken.uc @@ -0,0 +1,13 @@ +class TgInventoryObject_Listen_Weaken extends TgInventoryObject_Listen_HitWithDevice + native(Inventory); + +var int m_nAppliedCategoryCodeToCheck; + +defaultproperties +{ + m_nAppliedCategoryCodeToCheck=15071 + m_bAutoProcOnInhand=true + m_bAutoProcOnAsIfInhand=true + m_bSkipActiveCheck=true + m_bSkipStartCooldown=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgItemShopVolume.uc b/exported/TgGame/Classes/TgItemShopVolume.uc new file mode 100755 index 00000000..0ffd7fe3 --- /dev/null +++ b/exported/TgGame/Classes/TgItemShopVolume.uc @@ -0,0 +1,149 @@ +class TgItemShopVolume extends Volume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +var() int TaskforceIndex; + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn pPawn; + + pPawn = TgPawn(Other); + // End:0x4A + if(pPawn != none) + { + pPawn.OnEnterItemShop(); + } + SetPurchaseFlag(Other, true); + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + //return; +} + +event UnTouch(Actor Other) +{ + local TgPawn pPawn; + + pPawn = TgPawn(Other); + // End:0x4A + if(pPawn != none) + { + pPawn.OnLeaveItemShop(); + } + SetPurchaseFlag(Other, false); + super(Actor).UnTouch(Other); + //return; +} + +simulated function int GetSupportedTaskforce() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x154 + if(GRI != none) + { + // End:0x14A + if((GRI.GameClass == Class'TgGame.TgGame_Paladins_Payload') || GRI.GameClass == Class'TgGame.TgGame_Paladins_Payload_Practice') + { + // End:0x14A + if(GRI.r_AttackingTaskForce != none) + { + // End:0x106 + if(TaskforceIndex == 1) + { + return int(GRI.r_AttackingTaskForce.r_nTaskForce); + } + else + { + return ((int(GRI.r_AttackingTaskForce.r_nTaskForce) == int(1)) ? 2 : 1); + } + } + } + return TaskforceIndex; + } + //return ReturnValue; +} + +event SetPurchaseFlag(Actor Other, bool bCanPurchase) +{ + local TgAIController_BehaviorGod AIController; + local TgPlayerController pController; + local TgPawn aPawn; + local TgGame_Paladins TgG; + local TgRepInfo_Game GRI; + local int I, supportedTaskforce; + + aPawn = TgPawn(Other); + supportedTaskforce = GetSupportedTaskforce(); + // End:0x378 + if((aPawn != none) && (int(aPawn.GetTaskForceNumber()) == supportedTaskforce) || supportedTaskforce == 0) + { + pController = TgPlayerController(aPawn.Controller); + // End:0x30E + if(pController != none) + { + TgG = TgGame_Paladins(WorldInfo.Game); + // End:0x211 + if((bCanPurchase || TgG == none) || !TgG.m_bCanPurchaseItemsAnywhere) + { + pController.SetCanPurchaseFlag(bCanPurchase); + // End:0x211 + if(!bCanPurchase) + { + I = 0; + J0x179: + + // End:0x211 [Loop If] + if(I < 26) + { + pController.r_LastPurchasedItems[I].nItemId = 0; + pController.r_LastPurchasedItems[I].nCount = 0; + I++; + // [Loop Continue] + goto J0x179; + } + } + } + // End:0x2B0 + if(bCanPurchase) + { + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x2AD + if((GRI == none) || !GRI.r_bSpawnGatesOpenedAtLeastOnce) + { + pController.SetCanChangeLoadout(bCanPurchase); + } + } + else + { + // End:0x30E + if((TgG == none) || !TgG.m_bDeckSwappingAlwaysEnabled) + { + pController.SetCanChangeLoadout(bCanPurchase); + } + } + } + AIController = TgAIController_BehaviorGod(aPawn.Controller); + // End:0x378 + if(AIController != none) + { + AIController.bCanPurchaseItems = bCanPurchase; + } + } + //return; +} + +defaultproperties +{ + bPawnsOnly=true + // Reference: BrushComponent'TgGame.Default__TgItemShopVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgKActorSpawnable.uc b/exported/TgGame/Classes/TgKActorSpawnable.uc new file mode 100755 index 00000000..78a3526b --- /dev/null +++ b/exported/TgGame/Classes/TgKActorSpawnable.uc @@ -0,0 +1,35 @@ +class TgKActorSpawnable extends KActorSpawnable + native; + +defaultproperties +{ + // Reference: TgStaticMeshComponent'TgGame.Default__TgKActorSpawnable.StaticMeshComp' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComp' + begin object name="StaticMeshComp" class=TgGame.TgStaticMeshComponent + WireframeColor=(R=0,G=255,B=128,A=255) + ReplacementPrimitive=none + RBChannel=ERBCollisionChannel.RBCC_GameplayPhysics + RBCollideWithChannels=(Default=true,GameplayPhysics=true,EffectPhysics=true) + end object + StaticMeshComponent=StaticMeshComp + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgKActorSpawnable.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__KActorSpawnable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + // Reference: StaticMeshComponent'TgGame.Default__TgKActorSpawnable.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__KActorSpawnable.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgKActorSpawnable.MyLightEnvironment' + end object + Components[1]=StaticMeshComponent0 + Components[2]=StaticMeshComp + CollisionComponent=StaticMeshComp +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgKAssetSpawnable.uc b/exported/TgGame/Classes/TgKAssetSpawnable.uc new file mode 100755 index 00000000..11b1b66a --- /dev/null +++ b/exported/TgGame/Classes/TgKAssetSpawnable.uc @@ -0,0 +1,43 @@ +class TgKAssetSpawnable extends KAssetSpawnable + native + hidecategories(Navigation); + +defaultproperties +{ + // Reference: TgSkeletalMeshComponent'TgGame.Default__TgKAssetSpawnable.SkelMeshComp' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkelMeshComp' + begin object name="SkelMeshComp" class=TgGame.TgSkeletalMeshComponent + PhysicsWeight=1.0000000 + bSkipAllUpdateWhenPhysicsAsleep=true + bHasPhysicsAssetInstance=true + bUpdateKinematicBonesFromAnimation=false + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgKAssetSpawnable.MyLightEnvironment' + RBChannel=ERBCollisionChannel.RBCC_GameplayPhysics + CollideActors=true + BlockActors=true + BlockZeroExtent=true + BlockRigidBody=true + RBCollideWithChannels=(Default=true,GameplayPhysics=true,EffectPhysics=true) + end object + SkeletalMeshComponent=SkelMeshComp + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgKAssetSpawnable.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__KAssetSpawnable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + Components[0]=MyLightEnvironment + // Reference: SkeletalMeshComponent'TgGame.Default__TgKAssetSpawnable.KAssetSkelMeshComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'KAssetSkelMeshComponent' + // Archetype: SkeletalMeshComponent'Engine.Default__KAssetSpawnable.KAssetSkelMeshComponent' + begin object name="KAssetSkelMeshComponent" + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgKAssetSpawnable.MyLightEnvironment' + end object + Components[1]=KAssetSkelMeshComponent + Components[2]=SkelMeshComp + CollisionComponent=SkelMeshComp +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgKAsset_ClientSideSim.uc b/exported/TgGame/Classes/TgKAsset_ClientSideSim.uc new file mode 100755 index 00000000..3752e129 --- /dev/null +++ b/exported/TgGame/Classes/TgKAsset_ClientSideSim.uc @@ -0,0 +1,79 @@ +class TgKAsset_ClientSideSim extends KAsset + native + hidecategories(Navigation); + +var() float m_fDamageImpulse; +var export editinline ArrowComponent m_Arrow; +var export editinline SpriteComponent m_ForceSprite; +var(Wind) bool m_bEnableWind; +var(Wind) bool m_bEnableGusts; +var() bool bAnimates; +var(Wind) float m_fWindForceMin; +var(Wind) float m_fWindForceMax; +var float m_fWindForceStrength; +var float m_fWindForceTargetStrength; +var(Wind) float m_fWindFrequency; +var float m_fWindForceRemainingTime; +var(Wind) Vector m_vWindDirection; +var(Wind) float m_fForceDistance; +var(Wind) float m_fForceZOffsetMultiplier; +var(Wind) float m_fGustActiveTime; +var(Wind) Vector2D m_vTimeBetweenGusts; +var float m_fGustActiveRemainingTime; +var float m_fTimeTillNextGust; +var(WindManager) Vector2D m_WindFrequencyMultiplier; +var(WindManager) Vector2D m_WindForceMultiplier; + +// Export UTgKAsset_ClientSideSim::execOnHit(FFrame&, void* const) +native function OnHit(Vector HitLocation, Vector HitNormal, optional Actor SourceActor, optional TraceHitInfo HitInfo); + +defaultproperties +{ + m_fDamageImpulse=500.0000000 + // Reference: SpriteComponent'TgGame.Default__TgKAsset_ClientSideSim.Sprite' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Sprite' + begin object name="Sprite" class=Engine.SpriteComponent + ReplacementPrimitive=none + AlwaysLoadOnClient=false + AlwaysLoadOnServer=false + end object + m_ForceSprite=Sprite + m_fWindForceMax=10.0000000 + m_fWindFrequency=2.0000000 + m_vWindDirection=(X=0.0000000,Y=1.0000000,Z=0.0000000) + m_fForceDistance=300.0000000 + m_fForceZOffsetMultiplier=1.2000000 + m_fGustActiveTime=4.0000000 + m_vTimeBetweenGusts=(X=4.0000000,Y=8.0000000) + m_WindFrequencyMultiplier=(X=0.8000000,Y=1.1000000) + m_WindForceMultiplier=(X=0.8000000,Y=1.1000000) + // Reference: SkeletalMeshComponent'TgGame.Default__TgKAsset_ClientSideSim.KAssetSkelMeshComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'KAssetSkelMeshComponent' + // Archetype: SkeletalMeshComponent'Engine.Default__KAsset.KAssetSkelMeshComponent' + begin object name="KAssetSkelMeshComponent" + bUpdateSkelWhenNotRendered=false + bSyncActorLocationToRootRigidBody=false + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgKAsset_ClientSideSim.MyLightEnvironment' + CanBlockCamera=false + end object + SkeletalMeshComponent=KAssetSkelMeshComponent + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgKAsset_ClientSideSim.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__KAsset.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + Components[0]=MyLightEnvironment + Components[1]=KAssetSkelMeshComponent + Components[2]=none + Components[3]=Sprite + RemoteRole=ENetRole.ROLE_None + CollisionType=ECollisionType.COLLIDE_TouchWeapons + bReplicateMovement=false + bSkipActorPropertyReplication=true + BlockRigidBody=true + CollisionComponent=KAssetSkelMeshComponent +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgKismetTestActor.uc b/exported/TgGame/Classes/TgKismetTestActor.uc new file mode 100755 index 00000000..2f7524dd --- /dev/null +++ b/exported/TgGame/Classes/TgKismetTestActor.uc @@ -0,0 +1,179 @@ +class TgKismetTestActor extends DynamicSMActor + hidecategories(Navigation); + +var() int m_nTestCount; +var() repnotify int r_nCurrentTest; +var repnotify int r_nPassCount; +var repnotify int r_nFailCount; +var() array c_aTextures; +var() SoundCue c_PassSound; +var() SoundCue c_FailSound; +var() array c_aResultActors; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_nCurrentTest, r_nFailCount, + r_nPassCount; +} + +simulated function OnTestResult(TgSeqAct_TestResult Action) +{ + // End:0x97 + if(Action.InputLinks[0].bHasImpulse) + { + r_nCurrentTest = SeqVar_Int(Action.VariableLinks[1].LinkedVariables[0]).IntValue; + } + else + { + // End:0xDC + if(Action.InputLinks[1].bHasImpulse) + { + r_nPassCount++; + } + else + { + // End:0x11F + if(Action.InputLinks[2].bHasImpulse) + { + r_nFailCount++; + } + } + } + //return; +} + +simulated function PlayerController GetLocalPlayer() +{ + local PlayerController PC; + + // End:0x2B + foreach LocalPlayerControllers(Class'Engine.PlayerController', PC) + { + return PC; + } + //return ReturnValue; +} + +unreliable client simulated function SetTestColor(int Num, LinearColor Col) +{ + local InterpActor act; + local MaterialInstanceConstant MI, MIC; + + act = c_aResultActors[Num]; + // End:0x2E + if(act == none) + { + return; + } + MI = MaterialInstanceConstant(act.StaticMeshComponent.Materials[0]); + // End:0x134 + if(MI != none) + { + MIC = new (none) Class'Engine.MaterialInstanceConstant'; + MIC.SetVectorParameterValue('TestColor', Col); + MIC.SetParent(MI); + act.StaticMeshComponent.SetMaterial(0, MIC); + } + //return; +} + +simulated event PostBeginPlay() +{ + local int I; + + I = 1; + J0x0B: + + // End:0x62 [Loop If] + if(I <= c_aResultActors.Length) + { + SetTestColor(I, MakeLinearColor(0.1000000, 0.1000000, 0.1000000, 1.0000000)); + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +unreliable client simulated function PassTest(int Num) +{ + GetLocalPlayer().ClientPlaySound(c_PassSound); + SetTestColor(Num, MakeLinearColor(0.0000000, 0.8000000, 0.0000000, 1.0000000)); + //return; +} + +unreliable client simulated function FailTest(int Num) +{ + GetLocalPlayer().ClientPlaySound(c_FailSound); + SetTestColor(Num, MakeLinearColor(0.8000000, 0.0000000, 0.0000000, 1.0000000)); + //return; +} + +unreliable client simulated function StartTest(int Num) +{ + local MaterialInstanceConstant MIC; + + MIC = MaterialInstanceConstant(StaticMeshComponent.Materials[0]); + MIC.SetTextureParameterValue('TestBillboard', c_aTextures[r_nCurrentTest]); + SetTestColor(Num, MakeLinearColor(0.0000000, 0.0000000, 1.0000000, 1.0000000)); + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x2D + if(VarName == 'r_nPassCount') + { + PassTest(r_nCurrentTest); + } + else + { + // End:0x5A + if(VarName == 'r_nFailCount') + { + FailTest(r_nCurrentTest); + } + else + { + // End:0x87 + if(VarName == 'r_nCurrentTest') + { + StartTest(r_nCurrentTest); + } + else + { + super.ReplicatedEvent(VarName); + } + } + } + //return; +} + +defaultproperties +{ + // Reference: StaticMeshComponent'TgGame.Default__TgKismetTestActor.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__DynamicSMActor.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + WireframeColor=(R=255,G=0,B=255,A=255) + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgKismetTestActor.MyLightEnvironment' + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgKismetTestActor.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__DynamicSMActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Components[0]=MyLightEnvironment + Components[1]=StaticMeshComponent0 + bNoDelete=true + bAlwaysRelevant=true + NetPriority=1.4000000 + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgLanePylon.uc b/exported/TgGame/Classes/TgLanePylon.uc new file mode 100755 index 00000000..78ce4197 --- /dev/null +++ b/exported/TgGame/Classes/TgLanePylon.uc @@ -0,0 +1,26 @@ +class TgLanePylon extends Pylon + native(Navigation) + hidecategories(Navigation,Lighting,LightColor,Force,Lighting,LightColor,Force); + +var() int m_nLane; + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgLanePylon.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Pylon.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + Components[5]=none + Components[6]=none + Components[7]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgLevelStreamingSpectator.uc b/exported/TgGame/Classes/TgLevelStreamingSpectator.uc new file mode 100755 index 00000000..f23f4bb6 --- /dev/null +++ b/exported/TgGame/Classes/TgLevelStreamingSpectator.uc @@ -0,0 +1,18 @@ +class TgLevelStreamingSpectator extends LevelStreaming + native + editinlinenew; + +enum SpectatorStreamingMethod +{ + SSM_OnlyLoadIfSpectating, // 0 + SSM_OnlyLoadIfNotSpectating, // 1 + SSM_AlwaysLoad, // 2 + SSM_MAX // 3 +}; + +var() TgLevelStreamingSpectator.SpectatorStreamingMethod m_LoadingMethod; + +defaultproperties +{ + m_LoadingMethod=SpectatorStreamingMethod.SSM_AlwaysLoad +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgLevelStreamingWorldDetail.uc b/exported/TgGame/Classes/TgLevelStreamingWorldDetail.uc new file mode 100755 index 00000000..844c455a --- /dev/null +++ b/exported/TgGame/Classes/TgLevelStreamingWorldDetail.uc @@ -0,0 +1,15 @@ +class TgLevelStreamingWorldDetail extends LevelStreaming + native + editinlinenew; + +var(WorldDetail) int MinimumWorldDetailLevel; +var(WorldDetail) int MaximumWorldDetailLevel; +var transient byte CachedDetailCheck; +var transient int LastUpdateTime; + +defaultproperties +{ + MinimumWorldDetailLevel=1 + MaximumWorldDetailLevel=-1 + LastUpdateTime=-1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgLian.uc b/exported/TgGame/Classes/TgLian.uc new file mode 100755 index 00000000..2b43bbb3 --- /dev/null +++ b/exported/TgGame/Classes/TgLian.uc @@ -0,0 +1,4 @@ +class TgLian extends Object + native(ChampPrincess); + +const MAX_GRACE_TARGETS = 15; diff --git a/exported/TgGame/Classes/TgLobbyCamera.uc b/exported/TgGame/Classes/TgLobbyCamera.uc new file mode 100755 index 00000000..417ff94c --- /dev/null +++ b/exported/TgGame/Classes/TgLobbyCamera.uc @@ -0,0 +1,200 @@ +class TgLobbyCamera extends CameraActor + native(View) + hidecategories(Navigation); + +enum ELobbyCameraTag +{ + LobbyCam_Login, // 0 + LobbyCam_TitleHome, // 1 + LobbyCam_TitlePlay, // 2 + LobbyCam_SearchingForMatch, // 3 + LobbyCam_MatchLobby, // 4 + LobbyCam_TitleChampions, // 5 + LobbyCam_ViewAllChampions, // 6 + LobbyCam_ViewChampion, // 7 + LobbyCam_TitleChests, // 8 + LobbyCam_LootChest, // 9 + LobbyCam_Store, // 10 + LobbyCam_StoreDetail, // 11 + LobbyCam_EndOfMatchLobby, // 12 + LobbyCam_WisdomDetail, // 13 + LobbyCam_ViewChampionWeapon, // 14 + LobbyCam_TeamMatchLobby, // 15 + LobbyCam_MAX // 16 +}; + +var(CameraActor) TgSkeletalMeshActor_Lobby m_ViewTarget; +var(CameraActor) array m_FriendlyTargets; +var(CameraActor) array m_EnemyTargets; +var(CameraActor) Vector m_RenderCenterPointOffset; +var transient bool m_bActive; +var() bool m_bAdjustCameraToTarget; +var bool m_bFirstCameraEyeCheck; +var transient int m_nPosition; +var float m_fRemainingTweenTime; +var float m_fTotalTweenTime; +var transient TPOV m_TweenSourcePOV; +var() float m_fLateralOffsetMultiplier; +var() float m_fHorizontalOffsetMultiplier; +var() float m_fViewLateralOffsetMultiplier; +var() float m_fViewHorizontalOffsetMultiplier; +var() float m_fMaxAdjustSpeedTranslation; +var() float m_fMaxAdjustSpeedRotation; +var() Vector m_vViewOffset; +var float m_fFirstCameraEyeCheckTimestamp; +var(CameraActor) TgLobbyCamera.ELobbyCameraTag m_CameraTag; + +// Export UTgLobbyCamera::execSetActive(FFrame&, void* const) +native function SetActive(bool bActive); + +// Export UTgLobbyCamera::execClearFriendlyTargets(FFrame&, void* const) +native function ClearFriendlyTargets(); + +// Export UTgLobbyCamera::execClearEnemyTargets(FFrame&, void* const) +native function ClearEnemyTargets(); + +event TriggerKismetActivationEvent(bool bActive, optional int nPosition = 0) +{ + TriggerEventClass(Class'TgGame.TgSeqEvent_LobbyCameraSetActive', none, ((bActive) ? 1 + nPosition : 0)); + //return; +} + +event SetPosition(int nPosition) +{ + // End:0x56 + if(m_bActive && m_nPosition != nPosition) + { + m_nPosition = nPosition; + TriggerKismetActivationEvent(m_bActive, m_nPosition); + } + //return; +} + +simulated function StartTween(float TweenTime) +{ + m_fRemainingTweenTime = TweenTime; + m_fTotalTweenTime = TweenTime; + m_TweenSourcePOV = GetALocalPlayerController().PlayerCamera.CameraCache.POV; + //return; +} + +simulated event GetActorEyesViewPoint(out Vector out_Location, out Rotator out_Rotation) +{ + local Vector vCurrentLocation, vCurrentRotation, vTargetForward, vDesiredLocation, vInterpolatedLocation, vDesiredRotation, + vToDesiredRotation, vOrthogonalRotationVector; + + local Rotator rInterpolatedRotation; + local editinline CylinderComponent pCylinder; + local float fHeight, fRadius; + + // End:0x5CD + if(m_bAdjustCameraToTarget) + { + vCurrentLocation = out_Location; + vCurrentRotation = Vector(out_Rotation); + // End:0x2B1 + if(m_ViewTarget != none) + { + vTargetForward = Vector(((m_ViewTarget.m_bCanBeRotated) ? m_ViewTarget.m_rOriginalRotation : m_ViewTarget.Rotation)); + vTargetForward.Z = 0.0000000; + vTargetForward = Normal(vTargetForward); + vCurrentLocation -= (m_vViewOffset >> Rotator(-vTargetForward)); + pCylinder = CylinderComponent(m_ViewTarget.CollisionComponent); + // End:0x19E + if(pCylinder != none) + { + fHeight = pCylinder.CollisionHeight; + fRadius = pCylinder.CollisionRadius; + } + else + { + // End:0x290 + if(m_ViewTarget.m_ChildMeshes.Length > 0) + { + fHeight = m_ViewTarget.m_ChildMeshes[0].Bounds.BoxExtent.Z; + fRadius = m_ViewTarget.m_ChildMeshes[0].Bounds.BoxExtent.Y; + } + else + { + fHeight = -1.0000000; + fRadius = -1.0000000; + } + } + } + else + { + fHeight = -1.0000000; + } + // End:0x362 + if((m_ViewTarget != none) && fHeight > 0.0000000) + { + vDesiredLocation = m_ViewTarget.Location + ((vTargetForward * m_fLateralOffsetMultiplier) * fHeight); + vDesiredLocation.Z += (m_fHorizontalOffsetMultiplier * fHeight); + } + else + { + super(Actor).GetActorEyesViewPoint(vDesiredLocation, out_Rotation); + } + vInterpolatedLocation = VInterpTo(vCurrentLocation, vDesiredLocation, WorldInfo.DeltaSeconds, m_fMaxAdjustSpeedTranslation); + // End:0x4CF + if((m_ViewTarget != none) && fHeight > 0.0000000) + { + vDesiredRotation = m_ViewTarget.Location - vInterpolatedLocation; + // End:0x49A + if((m_fViewLateralOffsetMultiplier != 0.0000000) && fRadius > 0.0000000) + { + vOrthogonalRotationVector = Normal(vect(0.0000000, 0.0000000, 1.0000000) Cross -vDesiredRotation); + vDesiredRotation += ((vOrthogonalRotationVector * m_fViewLateralOffsetMultiplier) * fRadius); + } + vDesiredRotation.Z += (m_fViewHorizontalOffsetMultiplier * fHeight); + } + else + { + vDesiredRotation = Vector(out_Rotation); + } + vToDesiredRotation = vDesiredRotation - vCurrentRotation; + // End:0x56B + if((m_fMaxAdjustSpeedRotation > 0.0000000) && VSizeSq(vToDesiredRotation) > (m_fMaxAdjustSpeedRotation * m_fMaxAdjustSpeedRotation)) + { + rInterpolatedRotation = Rotator(vCurrentRotation + (Normal(vToDesiredRotation) * m_fMaxAdjustSpeedRotation)); + } + else + { + rInterpolatedRotation = Rotator(vDesiredRotation); + } + vInterpolatedLocation += (m_vViewOffset >> Rotator(-vTargetForward)); + out_Location = vInterpolatedLocation; + out_Rotation = rInterpolatedRotation; + } + else + { + super(Actor).GetActorEyesViewPoint(out_Location, out_Rotation); + } + // End:0x62A + if(m_bFirstCameraEyeCheck) + { + m_bFirstCameraEyeCheck = false; + m_fFirstCameraEyeCheckTimestamp = WorldInfo.TimeSeconds; + } + //return; +} + +simulated function GetCameraView(float DeltaTime, out TPOV OutPOV) +{ + GetActorEyesViewPoint(OutPOV.Location, OutPOV.Rotation); + OutPOV.FOV = (57.2957800 * Atan(Tan((0.0174533 * FOVAngle) / 2.0000000) * AspectRatio)) * 2.0000000; + //return; +} + +defaultproperties +{ + m_bFirstCameraEyeCheck=true + m_TweenSourcePOV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000)) + m_fLateralOffsetMultiplier=3.0000000 + m_fHorizontalOffsetMultiplier=2.0000000 + m_fViewLateralOffsetMultiplier=1.0000000 + m_fViewHorizontalOffsetMultiplier=1.0000000 + m_fMaxAdjustSpeedTranslation=10000.0000000 + m_fMaxAdjustSpeedRotation=10000.0000000 + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgLobbyCaptureActor.uc b/exported/TgGame/Classes/TgLobbyCaptureActor.uc new file mode 100755 index 00000000..8394ea14 --- /dev/null +++ b/exported/TgGame/Classes/TgLobbyCaptureActor.uc @@ -0,0 +1,27 @@ +class TgLobbyCaptureActor extends SceneCapture2DActor + native(View) + hidecategories(Navigation); + +var(CameraActor) TgSkeletalMeshActor_Lobby m_ViewTarget; + +defaultproperties +{ + // Reference: DrawFrustumComponent'TgGame.Default__TgLobbyCaptureActor.DrawFrust0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DrawFrust0' + // Archetype: DrawFrustumComponent'Engine.Default__SceneCapture2DActor.DrawFrust0' + begin object name="DrawFrust0" + ReplacementPrimitive=none + end object + DrawFrustum=DrawFrust0 + // Reference: SceneCapture2DComponent'TgGame.Default__TgLobbyCaptureActor.SceneCapture2DComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SceneCapture2DComponent0' + // Archetype: SceneCapture2DComponent'Engine.Default__SceneCapture2DActor.SceneCapture2DComponent0' + begin object name="SceneCapture2DComponent0" + end object + SceneCapture=SceneCapture2DComponent0 + Components[0]=SceneCapture2DComponent0 + Components[1]=none + Components[2]=DrawFrust0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgLocalPlayer.uc b/exported/TgGame/Classes/TgLocalPlayer.uc new file mode 100755 index 00000000..841dd2b9 --- /dev/null +++ b/exported/TgGame/Classes/TgLocalPlayer.uc @@ -0,0 +1,54 @@ +class TgLocalPlayer extends LocalPlayer within Engine + transient + native + config(Engine); + +var float m_fViewScale; +var Vector m_vViewPan; +var bool m_bEnableOutlineEffect; +var bool m_bEnableColorBlindEffect; +var bool m_bColorBlindSimulate; +var bool m_bBlurForeground; +var float m_fHitOnlyAlpha; +var float m_fHealthOnlyAlpha; +var float m_fHealthPPAlpha; +var float m_fDeathDesatPPAlpha; +var int m_eColorBlindEffectType; +var float m_fTargetBlurAmount; +var float m_fBlurAmount; +var float m_fBlurInterpSpeed; +var float m_fBlurKernelSize; +var DOFAndBloomEffect.EDOFType m_eCurrentDOFType; + +// Export UTgLocalPlayer::execInitMaterialEffects(FFrame&, void* const) +native function InitMaterialEffects(); + +// Export UTgLocalPlayer::execEnableOutlineEffect(FFrame&, void* const) +native function EnableOutlineEffect(optional bool bEnable = true); + +// Export UTgLocalPlayer::execEnableColorBlindEffect(FFrame&, void* const) +native function EnableColorBlindEffect(optional bool bEnable = false, optional int Type = 1, optional bool bSimulateMode = false); + +// Export UTgLocalPlayer::execUpdateLowHealthEffect(FFrame&, void* const) +native function UpdateLowHealthEffect(float DeltaSeconds, optional float fHealthPCT = 1.0000000, optional float fHealthLostPCT = 0.0000000, optional bool bDeathVision = false); + +// Export UTgLocalPlayer::execSetBlurAmount(FFrame&, void* const) +native function SetBlurAmount(float TargetBlurAmount, float InterpSpeed, float BlurKernelSize, optional bool bForeground = false); + +event PostProcessEffect GetPostProcessEffect(name EffectName) +{ + // End:0x38 + if(PlayerPostProcess != none) + { + return PlayerPostProcess.FindPostProcessEffect(EffectName); + } + return none; + //return ReturnValue; +} + +defaultproperties +{ + m_fViewScale=1.0000000 + m_eColorBlindEffectType=1 + m_fBlurKernelSize=16.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgManifestGroup.uc b/exported/TgGame/Classes/TgManifestGroup.uc new file mode 100755 index 00000000..0a127f40 --- /dev/null +++ b/exported/TgGame/Classes/TgManifestGroup.uc @@ -0,0 +1,21 @@ +class TgManifestGroup extends Object + native; + +var private native const noexport Pointer VfTable_FCallbackEventDevice; +var init native array m_ManifestList; +var init array m_pObjectReferencers; +var Object m_OwningObject; +var bool m_bIsInCallback; +var bool m_bInitialized; +var bool m_bResetOnMapLoad; +//var delegate __OnAllManifestsLoaded__Delegate; + +delegate OnAllManifestsLoaded() +{ + //return; +} + +defaultproperties +{ + m_bResetOnMapLoad=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMapBoundsVolume.uc b/exported/TgGame/Classes/TgMapBoundsVolume.uc new file mode 100755 index 00000000..953880ba --- /dev/null +++ b/exported/TgGame/Classes/TgMapBoundsVolume.uc @@ -0,0 +1,36 @@ +class TgMapBoundsVolume extends Volume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +var() Texture2D MinimapImage; + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPlayerController PC; + + // End:0x81 + if(TgPawn(Other) != none) + { + PC = TgPlayerController(TgPawn(Other).Controller); + // End:0x81 + if(PC != none) + { + PC.UpdateMinimap(self); + } + } + //return; +} + +defaultproperties +{ + // Reference: BrushComponent'TgGame.Default__TgMapBoundsVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMapInfo.uc b/exported/TgGame/Classes/TgMapInfo.uc new file mode 100755 index 00000000..788e2b2c --- /dev/null +++ b/exported/TgGame/Classes/TgMapInfo.uc @@ -0,0 +1,89 @@ +class TgMapInfo extends MapInfo + native + editinlinenew; + +var() Actor m_EndFocusActor_TF1; +var() Actor m_EndFocusActor_TF2; +var() TgFatalityFactory m_FatalityFactory_TF1_1; +var() TgFatalityFactory m_FatalityFactory_TF1_2; +var() TgFatalityFactory m_FatalityFactory_TF1_3; +var() TgFatalityFactory m_FatalityFactory_TF2_1; +var() TgFatalityFactory m_FatalityFactory_TF2_2; +var() TgFatalityFactory m_FatalityFactory_TF2_3; +var() StaticMeshActor m_OverlayPathMesh; +var() Vector2D m_vMapCenter; +var() Vector2D m_vTaskForce1BaseLocation; +var() Vector2D m_vTaskForce2BaseLocation; +var() float m_fLockViewBufferZoneSize; +var() bool m_bSupportsGuardianThrone; +var() float m_LitParticleBrightness; + +simulated function TgFatalityFactory GetEmptyFatalityFactory(byte TaskForceNumber) +{ + switch(TaskForceNumber) + { + // End:0x189 + case 2: + // End:0x93 + if((m_FatalityFactory_TF1_1 != none) && (m_FatalityFactory_TF1_1.m_FatalityMeshActor == none) || m_FatalityFactory_TF1_1.m_FatalityMeshActor.IsPendingKill()) + { + return m_FatalityFactory_TF1_1; + } + else + { + // End:0x10E + if((m_FatalityFactory_TF1_2 != none) && (m_FatalityFactory_TF1_2.m_FatalityMeshActor == none) || m_FatalityFactory_TF1_2.m_FatalityMeshActor.IsPendingKill()) + { + return m_FatalityFactory_TF1_2; + } + else + { + // End:0x186 + if((m_FatalityFactory_TF1_3 != none) && (m_FatalityFactory_TF1_3.m_FatalityMeshActor == none) || m_FatalityFactory_TF1_3.m_FatalityMeshActor.IsPendingKill()) + { + return m_FatalityFactory_TF1_3; + } + } + } + // End:0x302 + break; + // End:0x2FF + case 1: + // End:0x209 + if((m_FatalityFactory_TF2_1 != none) && (m_FatalityFactory_TF2_1.m_FatalityMeshActor == none) || m_FatalityFactory_TF2_1.m_FatalityMeshActor.IsPendingKill()) + { + return m_FatalityFactory_TF2_1; + } + else + { + // End:0x284 + if((m_FatalityFactory_TF2_2 != none) && (m_FatalityFactory_TF2_2.m_FatalityMeshActor == none) || m_FatalityFactory_TF2_2.m_FatalityMeshActor.IsPendingKill()) + { + return m_FatalityFactory_TF2_2; + } + else + { + // End:0x2FC + if((m_FatalityFactory_TF2_3 != none) && (m_FatalityFactory_TF2_3.m_FatalityMeshActor == none) || m_FatalityFactory_TF2_3.m_FatalityMeshActor.IsPendingKill()) + { + return m_FatalityFactory_TF2_3; + } + } + } + // End:0x302 + break; + // End:0xFFFF + default: + break; + } + return none; + //return ReturnValue; +} + +defaultproperties +{ + m_vTaskForce1BaseLocation=(X=-10500.0000000,Y=0.0000000) + m_vTaskForce2BaseLocation=(X=10500.0000000,Y=0.0000000) + m_fLockViewBufferZoneSize=1500.0000000 + m_LitParticleBrightness=12.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMarkComponent.uc b/exported/TgGame/Classes/TgMarkComponent.uc new file mode 100755 index 00000000..f7c34a48 --- /dev/null +++ b/exported/TgGame/Classes/TgMarkComponent.uc @@ -0,0 +1,54 @@ +class TgMarkComponent extends ActorComponent + native; + +struct native TargetMark +{ + var Actor Target; + var float fTimeLeft; + var int nNumMarks; + var init array AppliedEffects; + + structdefaultproperties + { + Target=none + fTimeLeft=0.0000000 + nNumMarks=0 + AppliedEffects=none + } +}; + +var init transient array s_MarkList; +var init transient array s_MarkEffectGroup; +var const int m_nHostItemId; +var const bool m_bStackEffects; +var const bool m_bRemoveMarksOnDeath; +var const float m_fMarkDuration; +var const int m_nMaxMarks; +var const int m_nPhysicalType; + +// Export UTgMarkComponent::execAddMark(FFrame&, void* const) +native function AddMark(Actor Target); + +// Export UTgMarkComponent::execRemoveAllMarksByActor(FFrame&, void* const) +native function RemoveAllMarksByActor(Actor Target); + +// Export UTgMarkComponent::execRemoveMarkByActor(FFrame&, void* const) +native function RemoveMarkByActor(Actor Target); + +// Export UTgMarkComponent::execRemoveAllMarksByIndex(FFrame&, void* const) +native function RemoveAllMarksByIndex(int nIndex); + +// Export UTgMarkComponent::execRemoveMarkByIndex(FFrame&, void* const) +native function RemoveMarkByIndex(int nIndex); + +// Export UTgMarkComponent::execRemoveAllMarks(FFrame&, void* const) +native function RemoveAllMarks(); + +// Export UTgMarkComponent::execGetNumMarksFor(FFrame&, void* const) +native function int GetNumMarksFor(Actor Target); + +defaultproperties +{ + m_bRemoveMarksOnDeath=true + m_nPhysicalType=860 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMenuContentData.uc b/exported/TgGame/Classes/TgMenuContentData.uc new file mode 100755 index 00000000..3de7d33f --- /dev/null +++ b/exported/TgGame/Classes/TgMenuContentData.uc @@ -0,0 +1,99 @@ +class TgMenuContentData extends Object + native; + +enum MenuContentDataType +{ + MCDT_None, // 0 + MCDT_Login, // 1 + MCDT_MainMenu, // 2 + MCDT_MainMenu_Featured_1, // 3 + MCDT_MainMenu_Featured_2, // 4 + MCDT_MainMenu_Featured_3, // 5 + MCDT_MainMenu_Featured_4, // 6 + MCDT_MainMenu_Featured_5, // 7 + MCDT_MainMenu_Featured_6, // 8 + MCDT_MainMenu_BetaPromo, // 9 + MCDT_MainMenu_GodPack, // 10 + MCDT_MainMenu_FacebookPromo, // 11 + MCDT_MainMenu_TwitterPromo, // 12 + MCDT_MainMenu_NewPlayer_Feature_1,// 13 + MCDT_MainMenu_NewPlayer_Feature_2,// 14 + MCDT_MainMenu_NewPlayer_Feature_3,// 15 + MCDT_Play, // 16 + MCDT_Store, // 17 + MCDT_Social_Friends, // 18 + MCDT_Social_Followers, // 19 + MCDT_Social_Blocked, // 20 + MCDT_Settings, // 21 + MCDT_Lobby, // 22 + MCDT_MAX // 23 +}; + +struct native MeshData +{ + var TgMenuContentData.MenuContentDataType ContentDataType; + var TgMenuMeshInfo MainMeshInfo; + var name CameraName; + + structdefaultproperties + { + ContentDataType=MenuContentDataType.MCDT_None + MainMeshInfo=none + CameraName="None" + } +}; + +var array m_MeshData; +var SoundCue m_LoginMusic; +var SoundCue m_GodSelectionMusic; +var SoundCue m_BattleReadyMusic; + +function Init() +{ + //return; +} + +event GetMeshData(TgMenuContentData.MenuContentDataType ContentDataType, out MeshData Data) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x88 [Loop If] + if(I < m_MeshData.Length) + { + // End:0x7A + if(int(ContentDataType) == int(m_MeshData[I].ContentDataType)) + { + Data = m_MeshData[I]; + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function PreloadTextures(float ForceDuration) +{ + local int I; + + I = 0; + J0x0B: + + // End:0xA2 [Loop If] + if(I < m_MeshData.Length) + { + // End:0x94 + if(m_MeshData[I].MainMeshInfo != none) + { + m_MeshData[I].MainMeshInfo.PreloadTextures(ForceDuration); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} diff --git a/exported/TgGame/Classes/TgMenuMeshInfo.uc b/exported/TgGame/Classes/TgMenuMeshInfo.uc new file mode 100755 index 00000000..5bd43cde --- /dev/null +++ b/exported/TgGame/Classes/TgMenuMeshInfo.uc @@ -0,0 +1,98 @@ +class TgMenuMeshInfo extends Object + native + editinlinenew + hidecategories(Object); + +struct native LobbyMeshInfo +{ + var() Vector Translation; + var() Rotator Rotation; + var() float Scale; + var() SkeletalMesh SkelMesh; + var() PhysicsAsset PhysAsset; + var() AnimTree AnimTreeTemplate; + var() array AnimSets; + var() MorphTargetSet MorphTargetSet; + var() bool bOnlySelfShadow; + var() array MaterialOverrides; + var() bool bUseIndividualLightEnvironment; + var() bool bUseOverlayMesh; + + structdefaultproperties + { + Translation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Rotation=(Pitch=0,Yaw=0,Roll=0) + Scale=1.0000000 + SkelMesh=none + PhysAsset=none + AnimTreeTemplate=none + AnimSets=none + MorphTargetSet=none + bOnlySelfShadow=false + MaterialOverrides=none + bUseIndividualLightEnvironment=true + bUseOverlayMesh=true + } +}; + +struct native ParticleSystemInfo +{ + var() ParticleSystem ParticleSystem; + var() name SocketName; + + structdefaultproperties + { + ParticleSystem=none + SocketName="None" + } +}; + +var() LobbyMeshInfo MeshInfo; +var() editinline array Children; +var name ParentSocketName; +var() array AttachedParticleSystems; + +// Export UTgMenuMeshInfo::execConfigureMesh(FFrame&, void* const) +native function ConfigureMesh(TgSkeletalMeshActor_Loader lobbyOwner); + +// Export UTgMenuMeshInfo::execSetupMeshFromMeshInfo(FFrame&, void* const) +native function SetupMeshFromMeshInfo(TgSkeletalMeshComponent SkelComp); + +// Export UTgMenuMeshInfo::execAddFxAttachments(FFrame&, void* const) +native function AddFxAttachments(TgSkeletalMeshComponent SkelComp); + +// Export UTgMenuMeshInfo::execIsFullyConfigured(FFrame&, void* const) +native function bool IsFullyConfigured(); + +function PreloadTextures(float ForceDuration) +{ + local TgMenuMeshInfo Child; + local int I; + + // End:0xD8 + if(MeshInfo.SkelMesh != none) + { + I = 0; + J0x2D: + + // End:0xD8 [Loop If] + if(I < MeshInfo.SkelMesh.Materials.Length) + { + MeshInfo.SkelMesh.Materials[I].SetForceMipLevelsToBeResident(true, true, ForceDuration); + I++; + // [Loop Continue] + goto J0x2D; + } + } + // End:0x118 + foreach Children(Child) + { + Child.PreloadTextures(ForceDuration); + } + //return; +} + +defaultproperties +{ + MeshInfo=(Translation=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),Scale=1.0000000,SkelMesh=none,PhysAsset=none,AnimTreeTemplate=none,AnimSets=none,MorphTargetSet=none,bOnlySelfShadow=false,MaterialOverrides=none,bUseIndividualLightEnvironment=true,bUseOverlayMesh=true) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMenuTransitionActor.uc b/exported/TgGame/Classes/TgMenuTransitionActor.uc new file mode 100755 index 00000000..21c55767 --- /dev/null +++ b/exported/TgGame/Classes/TgMenuTransitionActor.uc @@ -0,0 +1,47 @@ +class TgMenuTransitionActor extends Actor + notplaceable + hidecategories(Navigation); + +var export editinline ParticleSystemComponent m_IntroPSC; +var export editinline ParticleSystemComponent m_LoopPSC; +var export editinline ParticleSystemComponent m_OutroPSC; + +simulated function PlayIntro() +{ + // End:0x2F + if(m_IntroPSC != none) + { + m_IntroPSC.ActivateSystem(); + } + //return; +} + +simulated function PlayOutro() +{ + // End:0x2F + if(m_OutroPSC != none) + { + m_OutroPSC.ActivateSystem(); + } + //return; +} + +simulated function PlayLoop() +{ + // End:0x2F + if(m_LoopPSC != none) + { + m_LoopPSC.ActivateSystem(); + } + //return; +} + +simulated function StopLoop() +{ + // End:0x2E + if(m_LoopPSC != none) + { + m_LoopPSC.DeactivateSystem(); + } + //return; +} diff --git a/exported/TgGame/Classes/TgMeshAssembly.uc b/exported/TgGame/Classes/TgMeshAssembly.uc new file mode 100755 index 00000000..d6badb63 --- /dev/null +++ b/exported/TgGame/Classes/TgMeshAssembly.uc @@ -0,0 +1,43 @@ +class TgMeshAssembly extends Actor + native + placeable + hidecategories(Navigation); + +var() int m_nMeshAsmId; +var() int m_nTeam; +var export editinline transient MeshComponent m_Mesh; +var const editconst export editinline LightEnvironmentComponent m_LightEnvironment; + +// Export UTgMeshAssembly::execLoadMesh(FFrame&, void* const) +native function LoadMesh(); + +// Export UTgMeshAssembly::execRecalculateTeamColor(FFrame&, void* const) +native function RecalculateTeamColor(); + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + LoadMesh(); + //return; +} + +simulated function NotifyLocalPlayerTeamReceived() +{ + RecalculateTeamColor(); + //return; +} + +defaultproperties +{ + m_nMeshAsmId=-1 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgMeshAssembly.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + begin object name="MyLightEnvironment" class=Engine.DynamicLightEnvironmentComponent + bDynamic=false + end object + m_LightEnvironment=MyLightEnvironment + Components[0]=none + Components[1]=MyLightEnvironment + bNoDelete=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMidnightFogVolumeDensityInfo.uc b/exported/TgGame/Classes/TgMidnightFogVolumeDensityInfo.uc new file mode 100755 index 00000000..e6b6baac --- /dev/null +++ b/exported/TgGame/Classes/TgMidnightFogVolumeDensityInfo.uc @@ -0,0 +1,176 @@ +class TgMidnightFogVolumeDensityInfo extends FogVolumeSphericalDensityInfo + hidecategories(Navigation,Collision) + autoexpandcategories(FogVolumeDensityInfo); + +var bool m_bFogOn; +var bool m_bFogUpdateNeeded; +var bool m_bIsFadingOut; +var float m_fCurrentStartDistance; +var float m_fFadeOutDuration; +var float m_fFadeOutTimer; +var float m_fTargetMaxDensity; +var float m_fDestroyTimer; +var export editinline FogVolumeSphericalDensityComponent SphericalDensityComponent; + +simulated event PostBeginPlay() +{ + super(FogVolumeDensityInfo).PostBeginPlay(); + // End:0xA8 + if(SphericalDensityComponent != none) + { + SphericalDensityComponent.SetViewOriginOverride(Location, SphericalDensityComponent.bUseViewOriginOverride); + // End:0xA8 + if(!SphericalDensityComponent.bEnabled) + { + SphericalDensityComponent.MaxDensity = 0.0000000; + } + } + m_bFogOn = bEnabled; + //return; +} + +simulated function ToggleFog(bool bOn) +{ + // End:0x7B + if(m_bFogOn != bOn) + { + // End:0x51 + if(SphericalDensityComponent != none) + { + SphericalDensityComponent.SetEnabled(bOn); + } + bEnabled = bOn; + m_bFogOn = bOn; + } + //return; +} + +simulated function SetOrigin(Vector vOrigin) +{ + // End:0x6E + if(SphericalDensityComponent != none) + { + SetLocation(vOrigin); + SphericalDensityComponent.SetViewOriginOverride(vOrigin, SphericalDensityComponent.bUseViewOriginOverride); + m_bFogUpdateNeeded = true; + } + //return; +} + +simulated function SetStartDistance(float fNewStartDistance) +{ + fNewStartDistance *= 0.9000000; + // End:0x7F + if((SphericalDensityComponent != none) && m_fCurrentStartDistance != fNewStartDistance) + { + m_fCurrentStartDistance = fNewStartDistance; + SphericalDensityComponent.StartDistance = m_fCurrentStartDistance; + m_bFogUpdateNeeded = true; + } + //return; +} + +simulated function FadeOut(float fFadeTime) +{ + m_bIsFadingOut = true; + m_fFadeOutDuration = fFadeTime; + m_fFadeOutTimer = fFadeTime; + m_fDestroyTimer = fFadeTime * 1.2500000; + //return; +} + +simulated function Tick(float DeltaTime) +{ + local float fFadeOutPerc, fFadeOutAlpha; + + // End:0xB0 + if(m_bIsFadingOut) + { + m_fFadeOutTimer -= DeltaTime; + // End:0x4F + if(m_fFadeOutTimer <= 0.0000000) + { + m_fFadeOutTimer = 0.0000000; + m_bIsFadingOut = false; + } + fFadeOutPerc = m_fFadeOutTimer / m_fFadeOutDuration; + fFadeOutAlpha = fFadeOutPerc; + SetAlpha(fFadeOutAlpha); + // End:0xB0 + if(!m_bIsFadingOut) + { + ToggleFog(false); + Destroy(); + } + } + // End:0x12F + if((SphericalDensityComponent != none) && SphericalDensityComponent.bEnabled) + { + SetOrigin(Location); + // End:0x12F + if(m_bFogUpdateNeeded) + { + m_bFogUpdateNeeded = false; + SphericalDensityComponent.ForceUpdate(false); + } + } + // End:0x16C + if(m_fDestroyTimer > 0.0000000) + { + m_fDestroyTimer -= DeltaTime; + // End:0x16C + if(m_fDestroyTimer <= 0.0000000) + { + Destroy(); + } + } + //return; +} + +simulated function SetAlpha(float fNewAlpha) +{ + // End:0x5E + if(SphericalDensityComponent != none) + { + m_bFogUpdateNeeded = true; + SphericalDensityComponent.MaxDensity = Lerp(0.0000000, m_fTargetMaxDensity, fNewAlpha * fNewAlpha); + } + //return; +} + +defaultproperties +{ + m_bFogUpdateNeeded=true + m_fCurrentStartDistance=13000.0000000 + m_fTargetMaxDensity=0.0450000 + m_fDestroyTimer=15.0000000 + // Reference: FogVolumeSphericalDensityComponent'TgGame.Default__TgMidnightFogVolumeDensityInfo.FogVolumeComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FogVolumeComponent0' + // Archetype: FogVolumeSphericalDensityComponent'Engine.Default__FogVolumeSphericalDensityInfo.FogVolumeComponent0' + begin object name="FogVolumeComponent0" + MaxDensity=0.0450000 + FogMaterial=MaterialInstanceConstant'FX_Gen_Materials.Materials.MIC_FogVolumeMaterial' + bAffectsTranslucency=false + bUseViewOriginOverride=true + SimpleLightColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + ApproxFogLightColor=(R=0.0000000,G=0.0000000,B=0.0000000,A=1.0000000) + StartDistance=13000.0000000 + end object + SphericalDensityComponent=FogVolumeComponent0 + DensityComponent=FogVolumeComponent0 + // Reference: StaticMeshComponent'TgGame.Default__TgMidnightFogVolumeDensityInfo.AutomaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AutomaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__FogVolumeSphericalDensityInfo.AutomaticMeshComponent0' + begin object name="AutomaticMeshComponent0" + ReplacementPrimitive=none + end object + AutomaticMeshComponent=AutomaticMeshComponent0 + Components[0]=none + Components[1]=AutomaticMeshComponent0 + Components[2]=none + Components[3]=FogVolumeComponent0 + DrawScale=156.0000000 + bNoDelete=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMinimapManager.uc b/exported/TgGame/Classes/TgMinimapManager.uc new file mode 100755 index 00000000..5d6a6dba --- /dev/null +++ b/exported/TgGame/Classes/TgMinimapManager.uc @@ -0,0 +1,86 @@ +class TgMinimapManager extends Object + native(Game); + +struct native MiniMapServerEntity +{ + var Vector vLocation; + var TgObject.MiniMapEntityType eType; + var int nSubType; + var int nProfileId; + var TgObject.TgMapTeam Team; + var int nVisionRange; + var bool bIsDead; + var ReplicationInfo RepInfo; + var int nIdx; + var bool bMarked; + var byte bVisibleOnMap; + var byte bVisibleBySentinel; + var bool bVisibleByDetector; + var float fLastPingTime; + var bool bRequireLOS; + var bool bDetector; + var bool bSentinel; + var byte byVisionMask; + var float fHealthPCT; + var Actor FogOfWarArea; + var bool FogOfWarAreaRevealed; + + structdefaultproperties + { + vLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + eType=MiniMapEntityType.MMap_LocalSpectator + nSubType=0 + nProfileId=0 + Team=TgMapTeam.MAPTEAM_1 + nVisionRange=0 + bIsDead=false + RepInfo=none + nIdx=0 + bMarked=false + bVisibleOnMap=0 + bVisibleBySentinel=0 + bVisibleByDetector=false + fLastPingTime=0.0000000 + bRequireLOS=false + bDetector=false + bSentinel=false + byVisionMask=0 + fHealthPCT=0.0000000 + FogOfWarArea=none + FogOfWarAreaRevealed=false + } +}; + +var TgObject.TgMapTeam m_LocalTeam; +var private native const transient map{VOID,VOID} m_EntityMap; +var bool m_bShouldDisableVisionRange; +var bool m_bSkipWorldGeometryLOS; +var bool m_bRequiresVisionUpdate; +var float m_fFogOfWarAreaRevealTime; +var float m_fUpdateTimer; +var float m_fLastEntityUpdateTime; +var init array m_ReferencedRepInfos; + +// Export UTgMinimapManager::execUpdate(FFrame&, void* const) +native function Update(optional bool bForce = true); + +// Export UTgMinimapManager::execUpdateThreaded(FFrame&, void* const) +native function UpdateThreaded(); + +// Export UTgMinimapManager::execRemoveAllEntities(FFrame&, void* const) +native function RemoveAllEntities(); + +// Export UTgMinimapManager::execForceUpdate(FFrame&, void* const) +native function ForceUpdate(ReplicationInfo ri); + +event InitForTaskforce(TgRepInfo_TaskForce tf) +{ + m_LocalTeam = tf.r_MapTeam; + //return; +} + +defaultproperties +{ + m_fFogOfWarAreaRevealTime=1.0000000 + m_fUpdateTimer=0.1000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMinionGoal.uc b/exported/TgGame/Classes/TgMinionGoal.uc new file mode 100755 index 00000000..cb0c77cd --- /dev/null +++ b/exported/TgGame/Classes/TgMinionGoal.uc @@ -0,0 +1,52 @@ +class TgMinionGoal extends NavigationPoint + native(AI) + hidecategories(Navigation,Lighting,LightColor,Force); + +var() int m_nLaneNum; +var() int m_nTaskForce; +var() TgActionPoint m_EndPoint; +var() bool m_bUseForFinalDestination; + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn TgP; + local TgAIController_BehaviorLaneNpc LaneNpc; + + TgP = TgPawn(Other); + // End:0xBD + if((TgP != none) && int(TgP.GetTaskForceNumber()) == m_nTaskForce) + { + LaneNpc = TgAIController_BehaviorLaneNpc(TgP.Controller); + // End:0xBD + if(LaneNpc != none) + { + LaneNpc.bDespawnOnLoseCombatTarget = true; + } + } + //return; +} + +defaultproperties +{ + m_bUseForFinalDestination=true + // Reference: CylinderComponent'TgGame.Default__TgMinionGoal.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + CollisionHeight=100.0000000 + CollisionRadius=300.0000000 + ReplacementPrimitive=none + CollideActors=true + BlockZeroExtent=false + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + Components[5]=none + bCollideActors=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMinionGoal_Aphrodite.uc b/exported/TgGame/Classes/TgMinionGoal_Aphrodite.uc new file mode 100755 index 00000000..77a410b1 --- /dev/null +++ b/exported/TgGame/Classes/TgMinionGoal_Aphrodite.uc @@ -0,0 +1,29 @@ +class TgMinionGoal_Aphrodite extends TgMinionGoal + native(AI) + hidecategories(Navigation,Lighting,LightColor,Force); + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + //return; +} + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgMinionGoal_Aphrodite.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgMinionGoal.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + Components[5]=none + bStatic=false + bNoDelete=false + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMissionListVolume.uc b/exported/TgGame/Classes/TgMissionListVolume.uc new file mode 100755 index 00000000..f79b5056 --- /dev/null +++ b/exported/TgGame/Classes/TgMissionListVolume.uc @@ -0,0 +1,22 @@ +class TgMissionListVolume extends Volume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +var(Object) editconst int m_nMapObjectId; +var() int s_nQueueTableId; +var() int s_nQueueTableMsgId; +var() Teleporter m_Teleporter; + +defaultproperties +{ + // Reference: BrushComponent'TgGame.Default__TgMissionListVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMobileAmbientSound.uc b/exported/TgGame/Classes/TgMobileAmbientSound.uc new file mode 100755 index 00000000..c6c59ae6 --- /dev/null +++ b/exported/TgGame/Classes/TgMobileAmbientSound.uc @@ -0,0 +1,7 @@ +class TgMobileAmbientSound extends AkAmbientSound + hidecategories(Navigation); + +defaultproperties +{ + bStatic=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgModifyPawnPropertiesVolume.uc b/exported/TgGame/Classes/TgModifyPawnPropertiesVolume.uc new file mode 100755 index 00000000..67af5800 --- /dev/null +++ b/exported/TgGame/Classes/TgModifyPawnPropertiesVolume.uc @@ -0,0 +1,83 @@ +class TgModifyPawnPropertiesVolume extends Volume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +var(Object) editconst int m_nMapObjectId; +var() bool m_bDisableJump; +var() bool m_bDisableBlockActors; +var() bool m_bDisableHanging; +var() bool m_bDisableAllDevices; +var() bool m_bTriggerUseEvent; +var() bool m_bOneWayMovement; +var Rotator m_vOnewWay; +var export editinline ArrowComponent m_DirArrow; +var() int s_nLootTableId; + +// Export UTgModifyPawnPropertiesVolume::execLoadObjectConfig(FFrame&, void* const) +native function LoadObjectConfig(); + +// Export UTgModifyPawnPropertiesVolume::execUsed(FFrame&, void* const) +native function Used(Actor Other); + +event PostBeginPlay() +{ + super.PostBeginPlay(); + LoadObjectConfig(); + //return; +} + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn Pawn; + + Pawn = TgPawn(Other); + // End:0x77 + if(Pawn != none) + { + Pawn.ModifyPawnPropertiesVolumeChanged(); + // End:0x77 + if(m_bTriggerUseEvent) + { + Pawn.m_CurrentUseActor = self; + } + } + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + //return; +} + +simulated event UnTouch(Actor Other) +{ + local TgPawn Pawn; + + Pawn = TgPawn(Other); + // End:0x77 + if(Pawn != none) + { + Pawn.ModifyPawnPropertiesVolumeChanged(); + // End:0x77 + if(m_bTriggerUseEvent) + { + Pawn.m_CurrentUseActor = none; + } + } + super(Actor).UnTouch(Other); + //return; +} + +defaultproperties +{ + // Reference: BrushComponent'TgGame.Default__TgModifyPawnPropertiesVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + Components[1]=none + RemoteRole=ENetRole.ROLE_SimulatedProxy + bSkipActorPropertyReplication=false + CollisionComponent=BrushComponent0 + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMuzzleFlash.uc b/exported/TgGame/Classes/TgMuzzleFlash.uc new file mode 100755 index 00000000..bbb97d95 --- /dev/null +++ b/exported/TgGame/Classes/TgMuzzleFlash.uc @@ -0,0 +1,13 @@ +class TgMuzzleFlash extends TgExplosionLight + editinlinenew + hidecategories(Object); + +defaultproperties +{ + HighDetailFrameTime=0.0200000 + TimeShift[0]=(StartTime=0.0000000,Radius=256.0000000,Brightness=8.0000000,LightColor=(R=255,G=255,B=255,A=255),EnemyLightColor=(R=255,G=255,B=255,A=255),LocalLightColor=(R=255,G=255,B=255,A=255)) + TimeShift[1]=(StartTime=0.1000000,Radius=128.0000000,Brightness=8.0000000,LightColor=(R=128,G=128,B=255,A=255),EnemyLightColor=(R=255,G=128,B=128,A=255),LocalLightColor=(R=255,G=255,B=128,A=255)) + TimeShift[2]=(StartTime=0.1500000,Radius=128.0000000,Brightness=0.0000000,LightColor=(R=64,G=64,B=255,A=255),EnemyLightColor=(R=255,G=64,B=64,A=255),LocalLightColor=(R=255,G=255,B=64,A=255)) + Radius=192.0000000 + bAffectCompositeShadowDirection=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMuzzleFlash_Bow.uc b/exported/TgGame/Classes/TgMuzzleFlash_Bow.uc new file mode 100755 index 00000000..864cd76d --- /dev/null +++ b/exported/TgGame/Classes/TgMuzzleFlash_Bow.uc @@ -0,0 +1,10 @@ +class TgMuzzleFlash_Bow extends TgMuzzleFlash + editinlinenew + hidecategories(Object); + +defaultproperties +{ + TimeShift[0]=(StartTime=0.0000000,Radius=256.0000000,Brightness=8.0000000,LightColor=(R=255,G=255,B=255,A=255),EnemyLightColor=(R=255,G=255,B=255,A=255),LocalLightColor=(R=255,G=255,B=255,A=255)) + TimeShift[1]=(StartTime=0.1000000,Radius=128.0000000,Brightness=8.0000000,LightColor=(R=128,G=128,B=255,A=255),EnemyLightColor=(R=255,G=128,B=128,A=255),LocalLightColor=(R=0,G=255,B=255,A=255)) + TimeShift[2]=(StartTime=0.1500000,Radius=128.0000000,Brightness=0.0000000,LightColor=(R=64,G=64,B=255,A=255),EnemyLightColor=(R=255,G=64,B=64,A=255),LocalLightColor=(R=0,G=128,B=128,A=255)) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMuzzleFlash_IceStaff.uc b/exported/TgGame/Classes/TgMuzzleFlash_IceStaff.uc new file mode 100755 index 00000000..b8632f70 --- /dev/null +++ b/exported/TgGame/Classes/TgMuzzleFlash_IceStaff.uc @@ -0,0 +1,10 @@ +class TgMuzzleFlash_IceStaff extends TgMuzzleFlash + editinlinenew + hidecategories(Object); + +defaultproperties +{ + TimeShift[0]=(StartTime=0.0000000,Radius=256.0000000,Brightness=8.0000000,LightColor=(R=255,G=255,B=255,A=255),EnemyLightColor=(R=255,G=255,B=255,A=255),LocalLightColor=(R=255,G=255,B=255,A=255)) + TimeShift[1]=(StartTime=0.1000000,Radius=128.0000000,Brightness=8.0000000,LightColor=(R=128,G=128,B=255,A=255),EnemyLightColor=(R=255,G=128,B=128,A=255),LocalLightColor=(R=128,G=128,B=255,A=255)) + TimeShift[2]=(StartTime=0.1500000,Radius=128.0000000,Brightness=0.0000000,LightColor=(R=64,G=64,B=255,A=255),EnemyLightColor=(R=255,G=64,B=64,A=255),LocalLightColor=(R=64,G=64,B=255,A=255)) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMuzzleFlash_Lance.uc b/exported/TgGame/Classes/TgMuzzleFlash_Lance.uc new file mode 100755 index 00000000..ea30fa71 --- /dev/null +++ b/exported/TgGame/Classes/TgMuzzleFlash_Lance.uc @@ -0,0 +1,11 @@ +class TgMuzzleFlash_Lance extends TgMuzzleFlash + editinlinenew + hidecategories(Object); + +defaultproperties +{ + TimeShift[0]=(StartTime=0.0000000,Radius=128.0000000,Brightness=8.0000000,LightColor=(R=255,G=255,B=255,A=255),EnemyLightColor=(R=255,G=255,B=255,A=255),LocalLightColor=(R=255,G=255,B=255,A=255)) + TimeShift[1]=(StartTime=0.1000000,Radius=256.0000000,Brightness=8.0000000,LightColor=(R=255,G=200,B=128,A=255),EnemyLightColor=(R=255,G=200,B=128,A=255),LocalLightColor=(R=255,G=200,B=128,A=255)) + TimeShift[2]=(StartTime=0.2000000,Radius=128.0000000,Brightness=0.0000000,LightColor=(R=255,G=100,B=64,A=255),EnemyLightColor=(R=255,G=100,B=64,A=255),LocalLightColor=(R=255,G=100,B=64,A=255)) + LoopIndex=1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMuzzleFlash_Orb.uc b/exported/TgGame/Classes/TgMuzzleFlash_Orb.uc new file mode 100755 index 00000000..860c0a4b --- /dev/null +++ b/exported/TgGame/Classes/TgMuzzleFlash_Orb.uc @@ -0,0 +1,11 @@ +class TgMuzzleFlash_Orb extends TgMuzzleFlash + editinlinenew + hidecategories(Object); + +defaultproperties +{ + TimeShift[0]=(StartTime=0.0000000,Radius=256.0000000,Brightness=8.0000000,LightColor=(R=255,G=255,B=255,A=255),EnemyLightColor=(R=255,G=255,B=255,A=255),LocalLightColor=(R=255,G=255,B=255,A=255)) + TimeShift[1]=(StartTime=0.2000000,Radius=128.0000000,Brightness=8.0000000,LightColor=(R=128,G=128,B=255,A=255),EnemyLightColor=(R=255,G=128,B=128,A=255),LocalLightColor=(R=128,G=128,B=255,A=255)) + TimeShift[2]=(StartTime=0.2500000,Radius=128.0000000,Brightness=0.0000000,LightColor=(R=64,G=64,B=255,A=255),EnemyLightColor=(R=255,G=64,B=64,A=255),LocalLightColor=(R=64,G=64,B=255,A=255)) + LoopIndex=1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMuzzleFlash_PotionLauncher.uc b/exported/TgGame/Classes/TgMuzzleFlash_PotionLauncher.uc new file mode 100755 index 00000000..754fff23 --- /dev/null +++ b/exported/TgGame/Classes/TgMuzzleFlash_PotionLauncher.uc @@ -0,0 +1,10 @@ +class TgMuzzleFlash_PotionLauncher extends TgMuzzleFlash + editinlinenew + hidecategories(Object); + +defaultproperties +{ + TimeShift[0]=(StartTime=0.0000000,Radius=256.0000000,Brightness=8.0000000,LightColor=(R=255,G=255,B=255,A=255),EnemyLightColor=(R=255,G=255,B=255,A=255),LocalLightColor=(R=255,G=255,B=255,A=255)) + TimeShift[1]=(StartTime=0.1000000,Radius=128.0000000,Brightness=8.0000000,LightColor=(R=128,G=128,B=255,A=255),EnemyLightColor=(R=255,G=128,B=128,A=255),LocalLightColor=(R=0,G=200,B=255,A=255)) + TimeShift[2]=(StartTime=0.1500000,Radius=128.0000000,Brightness=0.0000000,LightColor=(R=64,G=64,B=255,A=255),EnemyLightColor=(R=255,G=64,B=64,A=255),LocalLightColor=(R=0,G=100,B=128,A=255)) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMuzzleFlash_SkyeInHand.uc b/exported/TgGame/Classes/TgMuzzleFlash_SkyeInHand.uc new file mode 100755 index 00000000..7d88f72e --- /dev/null +++ b/exported/TgGame/Classes/TgMuzzleFlash_SkyeInHand.uc @@ -0,0 +1,10 @@ +class TgMuzzleFlash_SkyeInHand extends TgMuzzleFlash + editinlinenew + hidecategories(Object); + +defaultproperties +{ + TimeShift[0]=(StartTime=0.0000000,Radius=256.0000000,Brightness=8.0000000,LightColor=(R=255,G=255,B=255,A=255),EnemyLightColor=(R=255,G=255,B=255,A=255),LocalLightColor=(R=255,G=255,B=255,A=255)) + TimeShift[1]=(StartTime=0.1000000,Radius=128.0000000,Brightness=8.0000000,LightColor=(R=128,G=128,B=255,A=255),EnemyLightColor=(R=255,G=128,B=128,A=255),LocalLightColor=(R=255,G=100,B=255,A=255)) + TimeShift[2]=(StartTime=0.1500000,Radius=128.0000000,Brightness=0.0000000,LightColor=(R=64,G=64,B=255,A=255),EnemyLightColor=(R=255,G=64,B=64,A=255),LocalLightColor=(R=255,G=0,B=255,A=255)) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgMuzzleFlash_Sniper.uc b/exported/TgGame/Classes/TgMuzzleFlash_Sniper.uc new file mode 100755 index 00000000..962cce3a --- /dev/null +++ b/exported/TgGame/Classes/TgMuzzleFlash_Sniper.uc @@ -0,0 +1,10 @@ +class TgMuzzleFlash_Sniper extends TgMuzzleFlash + editinlinenew + hidecategories(Object); + +defaultproperties +{ + TimeShift[0]=(StartTime=0.0000000,Radius=256.0000000,Brightness=8.0000000,LightColor=(R=255,G=255,B=255,A=255),EnemyLightColor=(R=255,G=255,B=255,A=255),LocalLightColor=(R=255,G=255,B=255,A=255)) + TimeShift[1]=(StartTime=0.1000000,Radius=128.0000000,Brightness=8.0000000,LightColor=(R=128,G=128,B=255,A=255),EnemyLightColor=(R=255,G=128,B=128,A=255),LocalLightColor=(R=128,G=128,B=255,A=255)) + TimeShift[2]=(StartTime=0.1500000,Radius=128.0000000,Brightness=0.0000000,LightColor=(R=64,G=64,B=255,A=255),EnemyLightColor=(R=255,G=64,B=64,A=255),LocalLightColor=(R=64,G=64,B=255,A=255)) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgNavMeshPath_AlongLane.uc b/exported/TgGame/Classes/TgNavMeshPath_AlongLane.uc new file mode 100755 index 00000000..a2dbebc7 --- /dev/null +++ b/exported/TgGame/Classes/TgNavMeshPath_AlongLane.uc @@ -0,0 +1,31 @@ +class TgNavMeshPath_AlongLane extends NavMeshPathConstraint + native(Navigation); + +var int m_nLane; + +static function bool AlongLane(NavigationHandle NavHandle, int nLane) +{ + local TgNavMeshPath_AlongLane Con; + + // End:0xBC + if((NavHandle != none) && nLane > 0) + { + Con = TgNavMeshPath_AlongLane(NavHandle.CreatePathConstraint(default.Class)); + // End:0xBC + if(Con != none) + { + Con.m_nLane = nLane; + NavHandle.AddPathConstraint(Con); + return true; + } + } + return false; + //return ReturnValue; +} + +function Recycle() +{ + super.Recycle(); + m_nLane = 0; + //return; +} diff --git a/exported/TgGame/Classes/TgNavRouteIndicator.uc b/exported/TgGame/Classes/TgNavRouteIndicator.uc new file mode 100755 index 00000000..6c564e5b --- /dev/null +++ b/exported/TgGame/Classes/TgNavRouteIndicator.uc @@ -0,0 +1,284 @@ +class TgNavRouteIndicator extends TgSkeletalMeshActorSpawnable + native(Navigation) + hidecategories(Navigation) + implements(Interface_NavigationHandle); + +const TG_NAV_ROUTE_INDICATOR_SPINUP_FX_ID = 0; +const TG_NAV_ROUTE_INDICATOR_PATHING_FX_ID = 2276; +const TG_NAV_ROUTE_INDICATOR_SPINDOWN_FX_ID = 0; + +enum eSetRouteResult +{ + SetRoute_Failed, // 0 + SetRoute_OK, // 1 + SetRoute_AtDestination, // 2 + SetRoute_MAX // 3 +}; + +var private native const noexport Pointer VfTable_IInterface_NavigationHandle; +var init array WayPoints; +var int Position; +var float m_fPositionStartTime; +var float m_fPositionMaxSeekTime; +var float m_fSpinUpTime; +var float m_fSpinDownTime; +var TgSpecialFx m_SpinUpFx; +var TgSpecialFx m_PathingFx; +var TgSpecialFx m_SpinDownFx; +var editinline NavigationHandle NavigationHandle; + +// Export UTgNavRouteIndicator::execActivateSpinUpFx(FFrame&, void* const) +native function ActivateSpinUpFx(); + +// Export UTgNavRouteIndicator::execActivateSpinDownFx(FFrame&, void* const) +native function ActivateSpinDownFx(); + +// Export UTgNavRouteIndicator::execActivatePathingFx(FFrame&, void* const) +native function ActivatePathingFx(); + +// Export UTgNavRouteIndicator::execDeactivateFx(FFrame&, void* const) +native function DeactivateFx(); + +// Export UTgNavRouteIndicator::execDeactivatePathingFx(FFrame&, void* const) +native function DeactivatePathingFx(); + +// Export UTgNavRouteIndicator::execSetRoute(FFrame&, void* const) +native function TgNavRouteIndicator.eSetRouteResult SetRoute(Actor destActor); + +// Export UTgNavRouteIndicator::execGetCurrentWayPoint(FFrame&, void* const) +native function Vector GetCurrentWayPoint(); + +// Export UTgNavRouteIndicator::execAdvanceWayPoint(FFrame&, void* const) +native function bool AdvanceWayPoint(); + +// Export UTgNavRouteIndicator::execUpdateRotation(FFrame&, void* const) +native function UpdateRotation(float fDeltaSeconds); + +simulated event PostBeginPlay() +{ + super(SkeletalMeshActor).PostBeginPlay(); + NavigationHandle = new (self) Class'Engine.NavigationHandle'; + //return; +} + +simulated function Destroyed() +{ + super(SkeletalMeshActor).Destroyed(); + DeactivateFx(); + //return; +} + +simulated function TgNavRouteIndicator.eSetRouteResult SetRouteTo(Actor destActor) +{ + // End:0x23 + if(destActor != none) + { + return SetRoute(destActor); + } + return 0; + //return ReturnValue; +} + +simulated event FindNavHandlePath(Actor destActor, float Dist) +{ + NavigationHandle.SetFinalDestination(destActor.Location, destActor); + NavigationHandle.FindPath(); + //return; +} + +simulated function StartSeeking() +{ + local Rotator Rot; + + // End:0x1E + if(WayPoints.Length >= 1) + { + SetLocation(WayPoints[0]); + } + // End:0x7D + if(WayPoints.Length >= 2) + { + Rot = Rotator(WayPoints[1] - WayPoints[0]); + Rot.Roll = 0; + SetRotation(Rot); + } + GotoState('SpinUp'); + //return; +} + +simulated function StartNextPath() +{ + local Pawn OwnerPawn; + local float fDist; + + // End:0x20 + if(!AdvanceWayPoint()) + { + GotoState('SpinDown'); + } + else + { + OwnerPawn = ((PlayerController(Owner) != none) ? PlayerController(Owner).Pawn : none); + // End:0xF7 + if((Position == 0) && OwnerPawn != none) + { + SetRotation(OwnerPawn.Rotation); + SetLocation(OwnerPawn.Location + (Vector(OwnerPawn.Rotation) * 60.0000000)); + } + fDist = VSize((GetCurrentWayPoint()) - Location); + m_fPositionStartTime = WorldInfo.TimeSeconds; + // End:0x199 + if((fDist > float(0)) && VSize(Velocity) > float(0)) + { + m_fPositionMaxSeekTime = fDist / VSize(Velocity); + m_fPositionMaxSeekTime *= 1.5000000; + } + else + { + m_fPositionMaxSeekTime = 0.0000000; + } + GotoState('Pathing'); + } + //return; +} + +function float GetMaxSpeed() +{ + local Pawn OwnerPawn; + + OwnerPawn = ((PlayerController(Owner) != none) ? PlayerController(Owner).Pawn : none); + // End:0x81 + if(OwnerPawn != none) + { + return OwnerPawn.GroundSpeed + 60.0000000; + } + return 200.0000000; + //return ReturnValue; +} + +event NotifyPathChanged() +{ + //return; +} + +state SpinUp +{ + simulated function BeginState(name PrevStateName) + { + // End:0x35 + if(m_fSpinUpTime > float(0)) + { + SetTimer(m_fSpinUpTime, false, 'StartNextPath'); + ActivateSpinUpFx(); + } + else + { + StartNextPath(); + ActivateSpinUpFx(); + } + ActivatePathingFx(); + //return; + } + stop; +} + +state SpinDown +{ + simulated function BeginState(name PrevStateName) + { + ActivateSpinDownFx(); + LifeSpan = ((m_fSpinDownTime > float(0)) ? m_fSpinDownTime : 2.0000000); + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + SetPhysics(0); + //return; + } + stop; +} + +state Pathing +{ + simulated function Tick(float DeltaTime) + { + local float MaxSpeed; + + UpdateRotation(DeltaTime); + MaxSpeed = GetMaxSpeed(); + Velocity = Vector(Rotation) * MaxSpeed; + // End:0x7C + if(VSize((GetCurrentWayPoint()) - Location) < FMax(30.0000000, 0.0000000)) + { + StartNextPath(); + } + else + { + // End:0xD2 + if((m_fPositionMaxSeekTime > float(0)) && Abs(WorldInfo.TimeSeconds - m_fPositionStartTime) > m_fPositionMaxSeekTime) + { + StartNextPath(); + } + } + //return; + } + + simulated function BeginState(name PreviousStateName) + { + SetPhysics(6); + //return; + } + + simulated function EndState(name NextStateName) + { + DeactivatePathingFx(); + //return; + } + stop; +} + +defaultproperties +{ + Position=-1 + m_fSpinUpTime=2.0000000 + m_fSpinDownTime=60.0000000 + c_bLoadMeshAssetts=false + // Reference: SkeletalMeshComponent'TgGame.Default__TgNavRouteIndicator.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'TgGame.Default__TgNavRouteIndicator.SkeletalMeshComponent0.AnimNodeSeq0_7' + // Archetype: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActorSpawnable.SkeletalMeshComponent0.AnimNodeSeq0_6' + begin object name="AnimNodeSeq0_7" + end object + Animations=AnimNodeSeq0_7 + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgNavRouteIndicator.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgNavRouteIndicator.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'TgGame.Default__TgNavRouteIndicator.MySilhouette' + // Archetype: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'TgGame.Default__TgNavRouteIndicator.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'TgGame.Default__TgNavRouteIndicator.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + LifeSpan=60.0000000 + CollisionComponent=SkeletalMeshComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgNavigationPoint.uc b/exported/TgGame/Classes/TgNavigationPoint.uc new file mode 100755 index 00000000..ea06fa81 --- /dev/null +++ b/exported/TgGame/Classes/TgNavigationPoint.uc @@ -0,0 +1,24 @@ +class TgNavigationPoint extends NavigationPoint + abstract + native(Navigation) + hidecategories(Navigation,Lighting,LightColor,Force); + +var(Object) editconst int m_nMapObjectId; + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgNavigationPoint.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__NavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgNavigationPointSpawnable.uc b/exported/TgGame/Classes/TgNavigationPointSpawnable.uc new file mode 100755 index 00000000..5315bcb2 --- /dev/null +++ b/exported/TgGame/Classes/TgNavigationPointSpawnable.uc @@ -0,0 +1,23 @@ +class TgNavigationPointSpawnable extends TgNavigationPoint + native(Navigation) + hidecategories(Navigation,Lighting,LightColor,Force); + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgNavigationPointSpawnable.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgNavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + bStatic=false + bNoDelete=false + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgNearObjectiveVolume.uc b/exported/TgGame/Classes/TgNearObjectiveVolume.uc new file mode 100755 index 00000000..99dbe0bb --- /dev/null +++ b/exported/TgGame/Classes/TgNearObjectiveVolume.uc @@ -0,0 +1,45 @@ +class TgNearObjectiveVolume extends Volume + hidecategories(Navigation,Object,Movement,Display); + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn TgP; + + TgP = TgPawn(Other); + // End:0x4B + if(TgP != none) + { + TgP.m_NearObjectiveVolume = self; + } + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + //return; +} + +event UnTouch(Actor Other) +{ + local TgPawn TgP; + + TgP = TgPawn(Other); + // End:0x4B + if(TgP != none) + { + TgP.m_NearObjectiveVolume = none; + } + super(Actor).UnTouch(Other); + //return; +} + +defaultproperties +{ + bPawnsOnly=true + // Reference: BrushComponent'TgGame.Default__TgNearObjectiveVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgNewUserSettings.uc b/exported/TgGame/Classes/TgNewUserSettings.uc new file mode 100755 index 00000000..f663b5d0 --- /dev/null +++ b/exported/TgGame/Classes/TgNewUserSettings.uc @@ -0,0 +1,5 @@ +class TgNewUserSettings extends Object + native + config(Game); + +var() globalconfig array WatchedVideoIds; diff --git a/exported/TgGame/Classes/TgObject.uc b/exported/TgGame/Classes/TgObject.uc new file mode 100755 index 00000000..ceb81294 --- /dev/null +++ b/exported/TgGame/Classes/TgObject.uc @@ -0,0 +1,1250 @@ +class TgObject extends Object + native; + +const FEET_TO_UNREAL_UNITS = 16; +const UNREAL_UNITS_TO_FEET = 0.0625; +const MAX_DECK_SIZE = 15; +const MIN_FOV = 80; +const MAX_FOV = 120; +const DODM_HIDE = 0; +const DODM_SHOW_OWNED_INDICATOR = 1; +const DODM_SHOW_FRIENDLY_INDICATOR = 2; +const DODM_SHOW_ENEMY_INDICATOR = 4; +const DODM_SHOW_OWNED_HEALTHBAR = 8; +const DODM_SHOW_FRIENDLY_HEALTHBAR = 16; +const DODM_SHOW_ENEMY_HEALTHBAR = 32; +const DODM_SHOW_OWNED_SILHOUETTE = 64; +const DODM_SHOW_FRIENDLY_SILHOUETTE = 128; +const DODM_SHOW_ENEMY_SILHOUETTE = 256; +const DODM_SHOW_OWNED_HEALING_INDICATOR = 256; +const DODM_SHOW_FRIENDLY_HEALING_INDICATOR = 512; +const DODM_SHOW_ENEMY_PROJECTILE_RING = 1024; +const DODM_BLINK_ON_PROJECTILE_RING = 2048; +const DODM_SHOW_PROJECTILE_AS_DEPLOYABLE = 4096; +const DODM_SHOW_FRIENDLY_PLAYER_ICON = 8192; +const DODM_SHOW_ENEMY_PLAYER_ICON = 16384; +const DODM_MODIFIER_ALWAYS_SHOW = 32768; +const DODM_MODIFIER_FULL_SCALE = 65536; +const DODM_SHOW_OWNED_ALL_OVERLAYS = 73; +const DODM_SHOW_FRIENDLY_ALL_OVERLAYS = 146; +const DODM_SHOW_ENEMY_ALL_OVERLAYS = 292; +const DODM_SHOW_ALL_INDICATORS = 7; +const DODM_SHOW_ALL_HEALTHBAR = 56; +const DODM_SHOW_ALL_SILHOUETTE = 448; +const DODM_SHOW_EVERYTHING = 511; +const EQ_MAX_LOAD_DEVICE = 15; +const TG_EQP_POINT_MAX = 33; +const CONTEXT_NOTIFY_ATTACK = 116959; +const CONTEXT_NOTIFY_DEFEND = 116960; +const CONTEXT_NOTIFY_BE_CAREFUL = 116961; +const CONTEXT_NOTIFY_PING = 117584; +const CONTEXT_NOTIFY_ENEMY = 117670; +const CONTEXT_NOTIFY_MIA = 117676; +const CONTEXT_NOTIFY_GANK = 117671; +const CONTEXT_NOTIFY_HELP = 117672; +const CONTEXT_NOTIFY_INCOMING = 117673; +const CONTEXT_NOTIFY_RETREAT = 117674; +const CONTEXT_NOTIFY_RETURNED = 117675; +const CONTEXT_NOTIFY_SELF_ATTACK = 118524; +const CONTEXT_NOTIFY_SELF_DEFEND = 118525; +const CONTEXT_NOTIFY_SELF_GANK = 118526; +const CONTEXT_NOTIFY_SELF_RETURNED = 118527; +const CONTEXT_NOTIFY_SELF_RETREAT = 118528; +const CONTEXT_NOTIFY_WARD_HERE = 122294; +const ITEM_QUALITY_EPIC = 1162; +const ITEM_QUALITY_RARE = 1163; +const ITEM_QUALITY_UNCOMMON = 1164; +const ITEM_QUALITY_COMMON = 1165; +const VV_BOT_RANK_FAMILIAR = 10425; +const VV_BOT_RANK_MINION = 10123; +const VV_BOT_RANK_TOWER = 10127; +const VV_BOT_RANK_GUARDIAN = 10124; +const VV_BOT_RANK_PHOENIX = 10125; +const VV_BOT_RANK_GOD = 10126; +const VV_BOT_RANK_MONSTER = 10085; +const VV_BOT_RANK_BUFFMONSTER = 10178; +const VV_BOT_RANK_NEUTRAL_BOSS = 10270; +const VV_BOT_RANK_DECOY = 10679; +const VV_BOT_RANK_DEPLOYABLE = 10678; +const VV_BOT_RANK_ELITE_MINION = 10787; +const VV_BOT_RANK_SIEGE_WALL = 11104; +const VV_BOT_RANK_TURRET = 15115; +const TGPAWN_GENERIC_EFFECT_GROUP_SITUATIONAL_01 = 10693; +const TGPAWN_GENERIC_EFFECT_GROUP_SITUATIONAL_02 = 10694; +const TGPAWN_GENERIC_EFFECT_GROUP_SITUATIONAL_03 = 11080; +const TGPAWN_GENERIC_EFFECT_GROUP_SITUATIONAL_04 = 11081; +const TGPAWN_GENERIC_EFFECT_GROUP_SITUATIONAL_05 = 11082; +const TGPAWN_GENERIC_EFFECT_GROUP_SITUATIONAL_06 = 11083; +const EFFECT_GROUP_SITUATIONAL_BOOST = 10915; +const TGPAWN_ON_LANDED = 15043; +const TG_BACK_HIT_ANGLE = 120.0; +const BOT_ID_BARIK_TURRET = 2151; +const BOT_ID_YING_ILLUSION = 2273; +const CHAMPION_ID_BARIK = 2073; +const CHAMPION_ID_CASSIE = 2092; +const CHAMPION_ID_EVIE = 2094; +const CHAMPION_ID_FERNANDO = 2071; +const CHAMPION_ID_GROHK = 2093; +const CHAMPION_ID_BUCK = 2147; +const CHAMPION_ID_PIP = 2056; +const CHAMPION_ID_RUCKUS = 2149; +const CHAMPION_ID_SKYE = 2057; +const CHAMPION_ID_ANDROXUS = 2205; +const CHAMPION_ID_GROVER = 2254; +const CHAMPION_ID_KINESSA = 2249; +const CHAMPION_ID_YING = 2267; +const CHAMPION_ID_DROGOZ = 2277; +const CHAMPION_ID_BOMBKING = 2281; +const CHAMPION_ID_VIKTOR = 2285; +const CHAMPION_ID_MAKOA = 2288; +const CHAMPION_ID_MALDAMBA = 2303; +const CHAMPION_ID_SHALIN = 2307; +const CHAMPION_ID_TYRA = 2314; +const CHAMPION_ID_MAEVE = 2338; +const CHAMPION_ID_TORVALD = 2322; +const CHAMPION_ID_INARA = 2348; +const CHAMPION_ID_LEX = 2362; +const CHAMPION_ID_ORACLE = 2372; +const CHAMPION_ID_WILLO = 2393; +const CHAMPION_ID_FLAK = 2404; +const CHAMPION_ID_DARKLORD = 2420; +const CHAMPION_ID_PRINCESS = 2417; +const CHAMPION_ID_ASTRO = 2431; +const CHAMPION_ID_OWL = 2438; +const CHAMPION_ID_DEMON = 2472; +const CHAMPION_ID_LAZARUS = 2477; +const CHAMPION_ID_PVE_BARIK_TURRET1 = 2326; +const CHAMPION_ID_PVE_BARIK_TURRET2 = 2337; +const CHAMPION_ID_PVE_FERNANDO_SHIELD = 2331; +const CHAMPION_ID_PVE_GROVER_HEALS = 2333; +const CHAMPION_ID_PVE_MAKOA_ULT = 2324; +const CHAMPION_ID_PVE_MAKOA_HOOK = 2245; +const CHAMPION_ID_PVE_MAKOA_SPIN = 2243; +const CHAMPION_ID_PVE_MAKOA_SHIELD = 2323; +const CHAMPION_ID_PVE_PIP_HEALS = 2339; +const CHAMPION_ID_PVE_VIKTOR_GRENADE1 = 2354; +const CHAMPION_ID_PVE_VIKTOR_GRENADE2 = 2356; +const CHAMPION_ID_PVE_VIKTOR_GRENADE3 = 2357; +const CHAMPION_ID_PVE_TORVALD_ROOT1 = 2342; +const CHAMPION_ID_PVE_TORVALD_ROOT2 = 2373; +const CHAMPION_ID_PVE_FERNANDO_FB1 = 2328; +const CHAMPION_ID_PVE_FERNANDO_FB2 = 2330; +const CHAMPION_ID_PVE_FERNANDO_FB3 = 2329; +const CHAMPION_ID_PVE_FERNANDO_FB4 = 2367; +const CHAMPION_ID_PVE_BUCK_LEAP1 = 2352; +const CHAMPION_ID_PVE_BUCK_LEAP2 = 2351; +const CHAMPION_ID_PVE_BUCK_LEAP3 = 2366; +const CHAMPION_ID_PVE_BUCK_NET1 = 2349; +const CHAMPION_ID_PVE_BUCK_NET2 = 2353; +const CHAMPION_ID_PVE_PIP_POLY1 = 2361; +const CHAMPION_ID_PVE_SKYE_POISON = 2336; +const STARTER_DECK_BARIK = 769; +const STARTER_DECK_CASSIE = 770; +const STARTER_DECK_EVIE = 772; +const STARTER_DECK_FERNANDO = 771; +const STARTER_DECK_GROHK = 773; +const STARTER_DECK_BUCK = 774; +const STARTER_DECK_PIP = 775; +const STARTER_DECK_RUCKUS = 776; +const STARTER_DECK_SKYE = 777; +const STARTER_DECK_ANDROXUS = 783; +const COMPLETE_DECK_BARIK = 757; +const COMPLETE_DECK_CASSIE = 758; +const COMPLETE_DECK_EVIE = 760; +const COMPLETE_DECK_FERNANDO = 759; +const COMPLETE_DECK_GROHK = 765; +const COMPLETE_DECK_BUCK = 764; +const COMPLETE_DECK_PIP = 761; +const COMPLETE_DECK_RUCKUS = 762; +const COMPLETE_DECK_SKYE = 763; +const COMPLETE_DECK_ANDROXUS = 782; +const COMPLETE_DECK_GROVER = 796; +const COMPLETE_DECK_KINESSA = 793; +const LOCAL_SILHOUETTE_RED = 1.0f; +const LOCAL_SILHOUETTE_GREEN = 0.7f; +const LOCAL_SILHOUETTE_BLUE = 0.1875f; +const LOCAL_SILHOUETTE_ALPHA = 0.25f; +const FRIENDLY_SILHOUETTE_RED = 0.0f; +const FRIENDLY_SILHOUETTE_GREEN = 1.0f; +const FRIENDLY_SILHOUETTE_BLUE = 1.0f; +const FRIENDLY_SILHOUETTE_ALPHA = 0.25f; +const ENEMY_SILHOUETTE_RED = 1.0f; +const ENEMY_SILHOUETTE_GREEN = 0.0f; +const ENEMY_SILHOUETTE_BLUE = 0.0f; +const ENEMY_SILHOUETTE_ALPHA = 0.25f; +const WALL_HACK_DIST_SQ = 64000000; +const SIMPROJ_VECTOR_MUNGE_FACTOR = 100; + +enum INITIALIZEABLE_BOOL +{ + IBOOL_UNINITIALIZED, // 0 + IBOOL_FALSE, // 1 + IBOOL_TRUE, // 2 + IBOOL_MAX // 3 +}; + +enum GAME_WIN_STATE +{ + GWS_NONE, // 0 + GWS_TASKFORCE_TWO_WON, // 1 + GWS_TASKFORCE_ONE_WON, // 2 + GWS_TIE, // 3 + GWS_MAX // 4 +}; + +enum TG_GAME_TYPE +{ + TGT_UNSET, // 0 + TGT_CITY, // 1 + TGT_ARENA, // 2 + TGT_ARENA_PRACTICE, // 3 + TGT_ARENA_CAPTURE, // 4 + TGT_ARENA_ESCORT, // 5 + TGT_ARENA_ESCORT_PRACTICE, // 6 + TGT_BATTLE, // 7 + TGT_BATTLE_EXPERT, // 8 + TGT_BATTLE_PRACTICE, // 9 + TGT_BATTLE_JOUST, // 10 + TGT_BATTLE_CASUAL, // 11 + TGT_BATTLE_TRAINING, // 12 + TGT_BATTLE_ARAM, // 13 + TGT_BATTLE_ARAM_PRACTICE, // 14 + TGT_POINTCAPTURE, // 15 + TGT_DOMINATION, // 16 + TGT_SINGLEPOINTCAPTUREANDHOLD, // 17 + TGT_IDOL, // 18 + TGT_SIEGE, // 19 + TGT_BATTLE_TC, // 20 + TGT_BATTLE_SHOOTINGRANGE, // 21 + TGT_CHAOS, // 22 + TGT_CHAOS_PRACTICE, // 23 + TGT_CHAOSRACE, // 24 + TGT_CHAOS_PUSH, // 25 + TGT_CHAOS_PAYLOAD, // 26 + TGT_CHAOS_PAYLOAD_PRACTICE, // 27 + TGT_CHAOS_CAPTUREANDPAYLOAD, // 28 + TGT_CHAOS_CAPTUREANDPAYLOAD_PRACTICE,// 29 + TGT_CHAOS_CAPTUREPOINT, // 30 + TGT_CHAOS_CAPTUREPOINT_PRACTICE,// 31 + TGT_CHAOS_SURVIVAL, // 32 + TGT_CHAOS_SURVIVAL_PRACTICE, // 33 + TGT_CHAOS_SHOOTINGRANGE, // 34 + TGT_CHAOS_TUTORIAL, // 35 + TGT_CHAOS_PVE, // 36 + TGT_CHAOS_PVE_SURVIVAL, // 37 + TGT_CHAOS_TEAM_DEATH_MATCH, // 38 + TGT_CHAOS_ONSLAUGHT, // 39 + TGT_MAX // 40 +}; + +enum GameTimerState +{ + TGMTS_UNSET, // 0 + TGMTS_WAITING_FOR_PLAYERS, // 1 + TGMTS_SETUP, // 2 + TGMTS_MISSION_RUNNING, // 3 + TGMTS_MISSION_OVERTIME, // 4 + TGMTS_MISSION_COMPLETE, // 5 + TGMTS_MISSION_PAUSED, // 6 + TGMTS_CUSTOM, // 7 + TGMTS_ROUND_COMPLETE, // 8 + TGMTS_MAX // 9 +}; + +enum DeviceTargetMode +{ + TGDTM_Self, // 0 + TGDTM_Reticle, // 1 + TGDTM_Projectile, // 2 + TGDTM_AOE, // 3 + TGDTM_Ground, // 4 + TGDTM_Cone, // 5 + TGDTM_Linear, // 6 + TGDTM_LockOn, // 7 + TGDTM_SpawnPoint, // 8 + TGDTM_WorldMap, // 9 + TGDTM_ReticleFindSpot, // 10 + TGDTM_MAX // 11 +}; + +enum DAMAGE_INFO_TYPE +{ + DIT_None, // 0 + DIT_Death, // 1 + DIT_Damage, // 2 + DIT_Status, // 3 + DIT_Healing, // 4 + DIT_ManaBurn, // 5 + DIT_ManaRestore, // 6 + DIT_Objective, // 7 + DIT_Experience, // 8 + DIT_Currency, // 9 + DIT_Level, // 10 + DIT_CritDamage, // 11 + DIT_HeadShot, // 12 + DIT_Backstab, // 13 + DIT_KillingBlow, // 14 + DIT_Assist, // 15 + DIT_KillingBlowWrath, // 16 + DIT_ShieldDamage, // 17 + DIT_MAX // 18 +}; + +enum ITEM_EVENT_TYPE +{ + IET_None, // 0 + IET_CastStart, // 1 + IET_CastComplete, // 2 + IET_CastInterrupt, // 3 + IET_ItemPurchase, // 4 + IET_ItemSell, // 5 + IET_AbilityPurchase, // 6 + IET_MAX // 7 +}; + +enum PLAYER_COMBAT_EVENT_TYPE +{ + PCET_None, // 0 + PCET_Spawn, // 1 + PCET_MAX // 2 +}; + +enum TgMapTeam +{ + MAPTEAM_1, // 0 + MAPTEAM_2, // 1 + MAPTEAM_NEUTRAL, // 2 + MAPTEAM_MAX // 3 +}; + +enum MiniMapEntityType +{ + MMap_LocalSpectator, // 0 + MMap_LocalPlayer, // 1 + MMap_Player, // 2 + MMap_Bot, // 3 + MMap_Factory, // 4 + MMap_Deployable, // 5 + MMap_CapturePoint, // 6 + MMap_ChaosCapturePoint, // 7 + MMap_MAX // 8 +}; + +enum ETargetingLineStyle +{ + TLS_None, // 0 + TLS_MAX // 1 +}; + +enum ETargetingPreviewStyle +{ + TPS_None, // 0 + TPS_MAX // 1 +}; + +enum ETargetingReticleStyle +{ + TRS_None, // 0 + TRS_MAX // 1 +}; + +enum ETargetingHighlightStyle +{ + THS_None, // 0 + THS_Highlight, // 1 + THS_HighlightAndMark, // 2 + THS_HighlightAndBracket, // 3 + THS_HighlightAndBracketWorld, // 4 + THS_MAX // 5 +}; + +enum AlertPriority +{ + APT_Minimal, // 0 + APT_Normal, // 1 + APT_High, // 2 + APT_Critical, // 3 + APT_MAX // 4 +}; + +enum AlertType +{ + ATT_Regular, // 0 + ATT_Beneficial, // 1 + ATT_Detrimental, // 2 + ATT_Spectator, // 3 + ATT_Important, // 4 + ATT_MAX // 5 +}; + +enum OverlayType +{ + OT_UNKNOWN, // 0 + OT_LOCALPLAYER, // 1 + OT_PLAYER, // 2 + OT_DEPLOYABLE, // 3 + OT_MAX // 4 +}; + +enum MinimapFactoryType +{ + MMF_None, // 0 + MMF_Speed, // 1 + MMF_Damage, // 2 + MMF_Protection, // 3 + MMF_Mana, // 4 + MMF_Cooldown, // 5 + MMF_HealthRegen, // 6 + MMF_BonusMinions, // 7 + MMF_Tower, // 8 + MMF_Phoenix, // 9 + MMF_CapturePoint, // 10 + MMF_MinorSpawn, // 11 + MMF_GoldFury, // 12 + MMF_SiegeSpawner, // 13 + MMF_MAX // 14 +}; + +enum DeployableOverlayIcon +{ + DOI_BLANK, // 0 + DOI_TURRET, // 1 + DOI_GRUMPY_BOMB, // 2 + DOI_ILLUSION, // 3 + DOI_ILLUSION_ULT, // 4 + DOI_TIME_BOMB, // 5 + DOI_POPPY_BOMB, // 6 + DOI_MEGA_TURRET, // 7 + DOI_OPPRESSOR_MINE, // 8 + DOI_STICKY_BOMB, // 9 + DOI_FRAG_GRENADE, // 10 + DOI_DYNAMIC, // 11 + DOI_DARK_CONVERGENCE, // 12 + DOI_SEEDLING, // 13 + DOI_MAX // 14 +}; + +enum DeployableOverlayState +{ + DOS_IDLE, // 0 + DOS_ACTIVE, // 1 + DOS_FINISHED, // 2 + DOS_MAX // 3 +}; + +enum ENPCVoices +{ + NPCVOICE_VendorMale01, // 0 + NPCVOICE_VendorMale02, // 1 + NPCVOICE_VendorMale03, // 2 + NPCVOICE_VendorMale04, // 3 + NPCVOICE_VendorMale05, // 4 + NPCVOICE_VendorMale06, // 5 + NPCVOICE_VendorMale07, // 6 + NPCVOICE_VendorMale08, // 7 + NPCVOICE_VendorMale09, // 8 + NPCVOICE_VendorMale10, // 9 + NPCVOICE_VendorFemale01, // 10 + NPCVOICE_VendorFemale02, // 11 + NPCVOICE_VendorFemale03, // 12 + NPCVOICE_VendorFemale04, // 13 + NPCVOICE_VendorFemale05, // 14 + NPCVOICE_VendorFemale06, // 15 + NPCVOICE_VendorFemale07, // 16 + NPCVOICE_VendorFemale08, // 17 + NPCVOICE_VendorFemale09, // 18 + NPCVOICE_VendorFemale10, // 19 + NPCVOICE_MAX // 20 +}; + +enum TgSupportedAspectRatios +{ + TgAR_4x3, // 0 + TgAR_5x4, // 1 + TgAR_16x9, // 2 + TgAR_16x10, // 3 + TgAR_Other, // 4 + TgAR_MAX // 5 +}; + +enum eTutorialForceableElements +{ + ETBUI_Skills, // 0 + ETBUI_ItemShop, // 1 + ETBUI_ItemShopButton, // 2 + ETBUI_Intro, // 3 + ETBUI_ItemShopWalkthrough, // 4 + ETBUI_ActiveItems, // 5 + ETBUI_ConsumableItems, // 6 + ETBUI_Escape, // 7 + ETBUI_MAX // 8 +}; + +enum TG_EQUIP_POINT +{ + EQP_NONE, // 0 + EQP_AUTO, // 1 + EQP_OFFHAND_1, // 2 + EQP_OFFHAND_2, // 3 + EQP_OFFHAND_3, // 4 + EQP_CARD_1, // 5 + EQP_RECALL, // 6 + EQP_EMOTE, // 7 + EQP_BURN_CARD_1, // 8 + EQP_BURN_CARD_2, // 9 + EQP_BURN_CARD_3, // 10 + EQP_BURN_CARD_4, // 11 + EQP_SUPPORT_2, // 12 + EQP_REGEN, // 13 + EQP_EXHAUSTED, // 14 + EQP_ULT_CHARGE, // 15 + EQP_ALT_FIRE, // 16 + EQP_UNUSED_7, // 17 + EQP_SUPPORT, // 18 + EQP_CARD_2, // 19 + EQP_CARD_3, // 20 + EQP_CARD_4, // 21 + EQP_CARD_5, // 22 + EQP_MOUNT, // 23 + EQP_COMBO, // 24 + EQP_MVPPOSE, // 25 + EQP_TALENT, // 26 + EQP_ITEM_STORE_9, // 27 + EQP_ITEM_STORE_10, // 28 + EQP_ITEM_STORE_11, // 29 + EQP_ITEM_STORE_12, // 30 + EQP_ITEM_STORE_13, // 31 + EQP_ITEM_STORE_14, // 32 + EQP_MAX // 33 +}; + +enum EDeviceFailType +{ + DFT_None, // 0 + DFT_Unspecified, // 1 + DFT_Custom, // 2 + DFT_NotEnoughPower, // 3 + DFT_OnCooldown, // 4 + DFT_CannotPlace, // 5 + DFT_Stunned, // 6 + DFT_Silenced, // 7 + DFT_Disarmed, // 8 + DFT_Crippled, // 9 + DFT_FireLockout, // 10 + DFT_InCombat, // 11 + DFT_FullHealth, // 12 + DFT_NotOnGround, // 13 + DFT_NoAmmo, // 14 + DFT_TransitioningTo1p, // 15 + DFT_MAX // 16 +}; + +enum EUISettingUpdate +{ + UISU_All, // 0 + UISU_AudioVideo, // 1 + UISU_Interface, // 2 + UISU_Control, // 3 + UISU_Targeting, // 4 + UISU_Gamepad, // 5 + UISU_MAX // 6 +}; + +enum PING_TYPE +{ + PT_NORMAL, // 0 + PT_NORMAL_ENEMY, // 1 + PT_RETREAT, // 2 + PT_RETREAT_ENEMY, // 3 + PT_ALERT, // 4 + PT_ALERT_ENEMY, // 5 + PT_SENTINEL, // 6 + PT_SENTINEL_ENEMY, // 7 + PT_ALERT_SILENT, // 8 + PT_MAX // 9 +}; + +enum RecoilHitDir +{ + RECOIL_DIR_FromFront, // 0 + RECOIL_DIR_FromBack, // 1 + RECOIL_DIR_FromLeft, // 2 + RECOIL_DIR_FromRight, // 3 + RECOIL_DIR_MAX // 4 +}; + +enum HitReactionMoveType +{ + HIT_MOVE_TYPE_ALL, // 0 + HIT_MOVE_TYPE_IDLE, // 1 + HIT_MOVE_TYPE_MOVING, // 2 + HIT_MOVE_TYPE_MAX // 3 +}; + +enum GOD_PANTHEON +{ + PANTHEON_None, // 0 + PANTHEON_Egyptian, // 1 + PANTHEON_Norse, // 2 + PANTHEON_Greek, // 3 + PANTHEON_Roman, // 4 + PANTHEON_Chinese, // 5 + PANTHEON_Mayan, // 6 + PANTHEON_Hindu, // 7 + PANTHEON_MAX // 8 +}; + +enum ERewardValueType +{ + RVT_None, // 0 + RVT_Initial, // 1 + RVT_Spool, // 2 + RVT_Kill, // 3 + RVT_Assist, // 4 + RVT_Taken, // 5 + RVT_Healing, // 6 + RVT_Mitigated, // 7 + RVT_Damage, // 8 + RVT_Objective, // 9 + RVT_Captured, // 10 + RVT_Capturing, // 11 + RVT_Contesting, // 12 + RVT_Destroyed, // 13 + RVT_PushingPayload, // 14 + RVT_ContestingPayload, // 15 + RVT_RoundWon, // 16 + RVT_SuccessfulDefense, // 17 + RVT_SuccessfulPush, // 18 + RVT_Cheat, // 19 + RVT_Bounty, // 20 + RVT_MAX // 21 +}; + +enum EPurchaseFailure +{ + TGPF_None, // 0 + TGPF_UnknownItem, // 1 + TGPF_UnavailableItem, // 2 + TGPF_UnknownOwner, // 3 + TGPF_NotEnoughCurrency, // 4 + TGPF_AtStackLimit, // 5 + TGPF_AlreadyPurchased, // 6 + TGPF_NoAvailableSlots, // 7 + TGPF_InvalidUpgrade, // 8 + TGPF_CannotSell, // 9 + TGPF_CannotSellInUse, // 10 + TGPF_Unknown, // 11 + TGPF_MAX // 12 +}; + +enum EReticuleType +{ + RETICULE_None, // 0 + RETICULE_Circle, // 1 + RETICULE_Drop, // 2 + RETICULE_Precise, // 3 + RETICULE_Wide, // 4 + RETICULE_Chain, // 5 + RETICULE_ShaLin, // 6 + RETICULE_Cross, // 7 + RETICULE_Maeve, // 8 + RETICULE_MAX // 9 +}; + +enum EAbilityInfoSlot +{ + SLOT_Ability1, // 0 + SLOT_Ability2, // 1 + SLOT_Ability3, // 2 + SLOT_Perk1, // 3 + SLOT_Perk2, // 4 + SLOT_Perk3, // 5 + SLOT_Perk4, // 6 + SLOT_Perk5, // 7 + SLOT_Perk6, // 8 + SLOT_Perk7, // 9 + SLOT_Perk8, // 10 + SLOT_Perk9, // 11 + SLOT_Perk10, // 12 + SLOT_Perk11, // 13 + SLOT_Perk12, // 14 + SLOT_Perk13, // 15 + SLOT_Perk14, // 16 + SLOT_MAX // 17 +}; + +enum ECardOwner +{ + CARDOWNER_NONE, // 0 + CARDOWNER_FREE, // 1 + CARDOWNER_SELF, // 2 + CARDOWNER_TEAM, // 3 + CARDOWNER_MAX // 4 +}; + +enum EUITargetingType +{ + UITARGETING_None, // 0 + UITARGETING_PendingRocketLockOn,// 1 + UITARGETING_RocketLockOn, // 2 + UITARGETING_MAX // 3 +}; + +enum ELanePusherActionPoint +{ + LPAP_None, // 0 + LPAP_OuterWall, // 1 + LPAP_InnerWall, // 2 + LPAP_BaseObjective, // 3 + LPAP_Checkpoint1, // 4 + LPAP_Checkpoint2, // 5 + LPAP_Goal, // 6 + LPAP_PayloadBegin, // 7 + LPAP_MAX // 8 +}; + +enum ELobbyAnimState +{ + LobbyAnimState_None, // 0 + LobbyAnimState_Intro, // 1 + LobbyAnimState_Emote, // 2 + LobbyAnimState_MVP, // 3 + LobbyAnimState_MAX // 4 +}; + +enum EMountType +{ + MOUNT_None, // 0 + MOUNT_Horse, // 1 + MOUNT_HorseTest, // 2 + MOUNT_MAX // 3 +}; + +enum EGameEnvironmentRule +{ + GameEnvRule_Normal, // 0 + GameEnvRule_Chill, // 1 + GameEnvRule_Foggy, // 2 + GameEnvRule_HeatWave, // 3 + GameEnvRule_MAX // 4 +}; + +enum EGameRespawnRule +{ + GameRespawnRule_Normal, // 0 + GameRespawnRule_Phoenix, // 1 + GameRespawnRule_GrimReaper, // 2 + GameRespawnRule_MAX // 3 +}; + +enum EGameMode +{ + GameMode_Siege, // 0 + GameMode_Survival, // 1 + GameMode_CapturePoint, // 2 + GameMode_MAX // 3 +}; + +enum EPolymorphType +{ + Polymorph_None, // 0 + Polymorph_Chicken, // 1 + Polymorph_MAX // 2 +}; + +enum EPetPhase +{ + PETPHASE_Default, // 0 + PETPHASE_CodeOverride, // 1 + PETPHASE_Heel, // 2 + PETPHASE_Follow, // 3 + PETPHASE_Guard, // 4 + PETPHASE_MAX // 5 +}; + +enum EPetPosition +{ + PETPOS_Default, // 0 + PETPOS_Front, // 1 + PETPOS_FrontRight, // 2 + PETPOS_Right, // 3 + PETPOS_BackRight, // 4 + PETPOS_Back, // 5 + PETPOS_BackLeft, // 6 + PETPOS_Left, // 7 + PETPOS_FrontLeft, // 8 + PETPOS_MAX // 9 +}; + +enum EPlayOfTheGameEventType +{ + POTG_ScoreKill, // 0 + POTG_ScoreAssist, // 1 + POTG_MovementAbility, // 2 + POTG_OvertimeStarted, // 3 + POTG_Died, // 4 + POTG_RoundEnded, // 5 + POTG_Healing, // 6 + POTG_HealingSelf, // 7 + POTG_Damage, // 8 + POTG_EnvironmentKill, // 9 + POTG_Shielding, // 10 + POTG_DamagePrevented, // 11 + POTG_DamagePreventedSelf, // 12 + POTG_HeadShot, // 13 + POTG_ContestTime, // 14 + POTG_ObjectiveTime, // 15 + POTG_CrowdControlSoft, // 16 + POTG_CrowdControlHard, // 17 + POTG_MAX // 18 +}; + +enum EThreatLevel +{ + ThreatLevel_Invalid, // 0 + ThreatLevel_None, // 1 + ThreatLevel_Low, // 2 + ThreatLevel_Medium, // 3 + ThreatLevel_High, // 4 + ThreatLevel_MAX // 5 +}; + +enum EPedestalType +{ + PEDESTAL_FrontLine, // 0 + PEDESTAL_Flank, // 1 + PEDESTAL_Support, // 2 + PEDESTAL_Damager, // 3 + PEDESTAL_MAX // 4 +}; + +enum EModelHighlightType +{ + HIGHLIGHT_None, // 0 + HIGHLIGHT_Body, // 1 + HIGHLIGHT_Head, // 2 + HIGHLIGHT_Weapon, // 3 + HIGHLIGHT_MAX // 4 +}; + +enum EWeaponMeshSwapRetrieveStrategy +{ + WMSRS_None, // 0 + WMSRS_Normal, // 1 + WMSRS_PostFire, // 2 + WMSRS_MAX // 3 +}; + +enum EDamageLocationType +{ + DamageLocationType_None, // 0 + DamageLocationType_Torso, // 1 + DamageLocationType_LLeg, // 2 + DamageLocationType_RLeg, // 3 + DamageLocationType_LArm, // 4 + DamageLocationType_RArm, // 5 + DamageLocationType_Head, // 6 + DamageLocationType_MAX // 7 +}; + +struct native EquipDeviceInfo +{ + var int nDeviceId; + var int nDeviceInstanceId; + var int nMode; + + structdefaultproperties + { + nDeviceId=0 + nDeviceInstanceId=0 + nMode=0 + } +}; + +struct native AimData +{ + var Vector StartTrace; + var Vector EndTrace; + var Vector AimVector; + var Actor HitActor; + var float ClientMovementTimeStamp; + var bool bResult; + + structdefaultproperties + { + StartTrace=(X=0.0000000,Y=0.0000000,Z=0.0000000) + EndTrace=(X=0.0000000,Y=0.0000000,Z=0.0000000) + AimVector=(X=0.0000000,Y=0.0000000,Z=0.0000000) + HitActor=none + ClientMovementTimeStamp=0.0000000 + bResult=false + } +}; + +struct native ObjectiveMICInfo +{ + var int MyTeam; + var float AmountFilled; + var int ObjStatus; + var int IsContested; + var int Flip; + + structdefaultproperties + { + MyTeam=0 + AmountFilled=0.0000000 + ObjStatus=0 + IsContested=0 + Flip=0 + } +}; + +struct native MeshAssets +{ + var() string m_sSkeletalMesh; + var() string m_sPhysicsAsset; + var() string m_sAnimTreeTemplate; + var() string m_sAnimSets; + + structdefaultproperties + { + m_sSkeletalMesh="" + m_sPhysicsAsset="" + m_sAnimTreeTemplate="" + m_sAnimSets="" + } +}; + +struct native RewardInfo +{ + var const int RequestedReward; + var int BoostReward; + var int ActualReward; + var int ActualRewardAccum; + var int BoostRewardAccum; + var int ErrorMessage; + + structdefaultproperties + { + RequestedReward=0 + BoostReward=0 + ActualReward=0 + ActualRewardAccum=0 + BoostRewardAccum=0 + ErrorMessage=0 + } +}; + +struct native DateTimeWrapper +{ + var QWord qTime; + + structdefaultproperties + { + qTime=() + } +}; + +struct native TG_HUD_INFO +{ + var bool bEnemy; + var bool bShowNameplate; + var bool bShowOverlays; + var bool bIsTargeted; + var bool bLocalPlayerHasLOS; + + structdefaultproperties + { + bEnemy=false + bShowNameplate=false + bShowOverlays=false + bIsTargeted=false + bLocalPlayerHasLOS=false + } +}; + +struct native ScoreKillData +{ + var Controller Killer; + var TgRepInfo_Player KillerPRI; + var TgPawn KillerPawn; + var native Pointer KillerBotAssembly; + var bool bKillerIsGod; + var bool bKillerIsMinion; + var bool bKillerIsTower; + var Controller Victim; + var TgPawn VictimPawn; + var TgRepInfo_Player VictimPRI; + var TgRepInfo_TaskForce VictimTaskForce; + var native Pointer VictimBotAssembly; + var bool VictimCanScore; + var bool bVictimIsGod; + var bool bVictimIsMinion; + var bool bVictimIsTower; + var Controller Scorer; + var TgPawn ScorerPawn; + var TgRepInfo_Player ScorerPRI; + var TgRepInfo_TaskForce ScorerTaskForce; + var bool ScorerCanScore; + var bool bSuicide; + var init array AssistingPlayers; + + structdefaultproperties + { + Killer=none + KillerPRI=none + KillerPawn=none + bKillerIsGod=false + bKillerIsMinion=false + bKillerIsTower=false + Victim=none + VictimPawn=none + VictimPRI=none + VictimTaskForce=none + VictimCanScore=false + bVictimIsGod=false + bVictimIsMinion=false + bVictimIsTower=false + Scorer=none + ScorerPawn=none + ScorerPRI=none + ScorerTaskForce=none + ScorerCanScore=false + bSuicide=false + AssistingPlayers=none + } +}; + +struct native OffhandAnimation +{ + var name m_OffhandUseType; + var() name m_AnimName; + var() bool m_bFullBody; + + structdefaultproperties + { + m_OffhandUseType="None" + m_AnimName="None" + m_bFullBody=false + } +}; + +struct native sPingInfo +{ + var TgRepInfo_Player pingedPri; + var float fStartTime; + var Vector vPingedLoc; + var bool bPinging; + var TgObject.PING_TYPE eType; + + structdefaultproperties + { + pingedPri=none + fStartTime=0.0000000 + vPingedLoc=(X=0.0000000,Y=0.0000000,Z=0.0000000) + bPinging=false + eType=PING_TYPE.PT_NORMAL + } +}; + +struct native ExtraDamageInfo +{ + var bool bCritical; + var bool bHeadShot; + var bool bKillingBlow; + var bool bCombo; + var bool bLatent; + var bool bMarked; + var bool bNoInstigator; + + structdefaultproperties + { + bCritical=false + bHeadShot=false + bKillingBlow=false + bCombo=false + bLatent=false + bMarked=false + bNoInstigator=false + } +}; + +struct native OnDamagedParams +{ + var TgPawn attacker; + var TgDevice Dev; + var TgEffectGroup eg; + var ImpactInfo Impact; + var float fBuffedDamage; + var float fMitigatedDamage; + var float fPreDamageHealth; + var ExtraDamageInfo ExtraInfo; + var int nPropertyId; + + structdefaultproperties + { + attacker=none + Dev=none + eg=none + Impact=(HitActor=none,HitLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitNormal=(X=0.0000000,Y=0.0000000,Z=0.0000000),RayDir=(X=0.0000000,Y=0.0000000,Z=0.0000000),StartTrace=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitInfo=(Material=none,PhysMaterial=none,Item=0,LevelIndex=0,BoneName="None",HitComponent=none),PercAbsorbedDamage=0.0000000,DeviceModeReference=none,Projectile=none,bDirectHit=false,nFiringInstance=0,nShotsHit=0) + fBuffedDamage=0.0000000 + fMitigatedDamage=0.0000000 + fPreDamageHealth=0.0000000 + ExtraInfo=(bCritical=false,bHeadShot=false,bKillingBlow=false,bCombo=false,bLatent=false,bMarked=false,bNoInstigator=false) + nPropertyId=0 + } +}; + +struct native OnHealedParams +{ + var TgPawn Healer; + var TgDevice Dev; + var TgEffectGroup eg; + var ImpactInfo Impact; + var float fHealAmount; + var float fHealthChange; + var int nPropertyId; + var bool bPlayCameraHealEffect; + + structdefaultproperties + { + Healer=none + Dev=none + eg=none + Impact=(HitActor=none,HitLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitNormal=(X=0.0000000,Y=0.0000000,Z=0.0000000),RayDir=(X=0.0000000,Y=0.0000000,Z=0.0000000),StartTrace=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitInfo=(Material=none,PhysMaterial=none,Item=0,LevelIndex=0,BoneName="None",HitComponent=none),PercAbsorbedDamage=0.0000000,DeviceModeReference=none,Projectile=none,bDirectHit=false,nFiringInstance=0,nShotsHit=0) + fHealAmount=0.0000000 + fHealthChange=0.0000000 + nPropertyId=0 + bPlayCameraHealEffect=false + } +}; + +struct native AdjustDamageParams +{ + var TgDevice Dev; + var ImpactInfo Impact; + var float fBaseDamage; + var int nPropertyId; + var bool bCritical; + + structdefaultproperties + { + Dev=none + Impact=(HitActor=none,HitLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitNormal=(X=0.0000000,Y=0.0000000,Z=0.0000000),RayDir=(X=0.0000000,Y=0.0000000,Z=0.0000000),StartTrace=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitInfo=(Material=none,PhysMaterial=none,Item=0,LevelIndex=0,BoneName="None",HitComponent=none),PercAbsorbedDamage=0.0000000,DeviceModeReference=none,Projectile=none,bDirectHit=false,nFiringInstance=0,nShotsHit=0) + fBaseDamage=0.0000000 + nPropertyId=0 + bCritical=false + } +}; + +struct native AdjustHealParams +{ + var TgDevice Dev; + var ImpactInfo Impact; + var float fBaseHeal; + var int nPropertyId; + + structdefaultproperties + { + Dev=none + Impact=(HitActor=none,HitLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitNormal=(X=0.0000000,Y=0.0000000,Z=0.0000000),RayDir=(X=0.0000000,Y=0.0000000,Z=0.0000000),StartTrace=(X=0.0000000,Y=0.0000000,Z=0.0000000),HitInfo=(Material=none,PhysMaterial=none,Item=0,LevelIndex=0,BoneName="None",HitComponent=none),PercAbsorbedDamage=0.0000000,DeviceModeReference=none,Projectile=none,bDirectHit=false,nFiringInstance=0,nShotsHit=0) + fBaseHeal=0.0000000 + nPropertyId=0 + } +}; + +struct native ChargeHitInfo +{ + var Actor HitActor; + var float TimeStamp; + + structdefaultproperties + { + HitActor=none + TimeStamp=0.0000000 + } +}; + +struct native TgAbilityInfo +{ + var int DeviceIds[EAbilityInfoSlot]; + + structdefaultproperties + { + DeviceIds[0]=0 + DeviceIds[1]=0 + DeviceIds[2]=0 + DeviceIds[3]=0 + DeviceIds[4]=0 + DeviceIds[5]=0 + DeviceIds[6]=0 + DeviceIds[7]=0 + DeviceIds[8]=0 + DeviceIds[9]=0 + DeviceIds[10]=0 + DeviceIds[11]=0 + DeviceIds[12]=0 + DeviceIds[13]=0 + DeviceIds[14]=0 + DeviceIds[15]=0 + DeviceIds[16]=0 + } +}; + +struct native CardInfo +{ + var int Id; + var int Count; + var int Owner; + var init string sOwner; + + structdefaultproperties + { + Id=0 + Count=0 + Owner=0 + sOwner="" + } +}; + +struct native WeaponMeshSwapStrategy +{ + var bool bPlayPutAway; + var TgObject.EWeaponMeshSwapRetrieveStrategy RetrieveStrategy; + var bool bClearEquipPoint; + + structdefaultproperties + { + bPlayPutAway=false + RetrieveStrategy=EWeaponMeshSwapRetrieveStrategy.WMSRS_None + bClearEquipPoint=true + } +}; + +event IsFriendlyWithLocalPawn() +{ + //return; +} + +event SortDamageDisplay() +{ + //return; +} + +event InitializeDefaultProps() +{ + //return; +} + +event SetTaskForceNumber() +{ + //return; +} + +event StartFire() +{ + //return; +} + +// Export UTgObject::execScriptGetLocalTGPlayerController(FFrame&, void* const) +native static function TgPlayerController ScriptGetLocalTGPlayerController(); diff --git a/exported/TgGame/Classes/TgObjectReferencer.uc b/exported/TgGame/Classes/TgObjectReferencer.uc new file mode 100755 index 00000000..5f413cbe --- /dev/null +++ b/exported/TgGame/Classes/TgObjectReferencer.uc @@ -0,0 +1,4 @@ +class TgObjectReferencer extends ObjectReferencer + native; + +var private native Pointer m_Manifest; diff --git a/exported/TgGame/Classes/TgObjective.uc b/exported/TgGame/Classes/TgObjective.uc new file mode 100755 index 00000000..849a7212 --- /dev/null +++ b/exported/TgGame/Classes/TgObjective.uc @@ -0,0 +1,184 @@ +class TgObjective extends Actor + native(Game) + placeable + hidecategories(Navigation); + +const OBJECTIVE_NEUTRAL_SPECIALFX = 2954; +const OBJECTIVE_FRIENDLY_SPECIALFX = 2929; +const OBJECTIVE_ENEMY_SPECIALFX = 2928; +const OBJECTIVE_PENDING_SPECIALFX = 2930; +const OBJECTIVE_NEUTRAL_FOREGROUND_SPECIALFX = 6286; +const OBJECTIVE_FRIENDLY_FOREGROUND_SPECIALFX = 6289; +const OBJECTIVE_ENEMY_FOREGROUND_SPECIALFX = 6287; +const OBJECTIVE_PENDING_FOREGROUND_SPECIALFX = 6288; +const MIN_CAPTURE_FX_RENDER_DISTANCE = 750; + +enum EObjectiveStatus +{ + Status_Inactive, // 0 + Status_Active, // 1 + Status_PendingActive, // 2 + Status_MAX // 3 +}; + +var byte r_nDefenderTaskForceIndex; +var byte r_nControllingTaskForceIndex; +var repnotify byte r_nContestingTaskForceIndex; +var repnotify TgObjective.EObjectiveStatus r_eStatus; +var TgSpecialFx m_InWordIndicatorFX; +var TgSpecialFx m_ForegroundIndicatorFX; +var() int m_nActiveAlertId; +var() int m_nPendingActiveAlertId; +var() int m_nInactiveAlertId; +var() int m_nWaypointMessageOverride; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_eStatus, r_nContestingTaskForceIndex, + r_nControllingTaskForceIndex, r_nDefenderTaskForceIndex; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x2F + if(VarName == 'r_eStatus') + { + SetStatus(r_eStatus); + return; + } + else + { + // End:0x52 + if(VarName == 'r_nContestingTaskForceIndex') + { + OnContestedStatusChanged(); + return; + } + } + super.ReplicatedEvent(VarName); + //return; +} + +// Export UTgObjective::execSetStatus(FFrame&, void* const) +native function SetStatus(TgObjective.EObjectiveStatus NewStatus); + +simulated event OnSetStatus() +{ + // End:0x88 + if(int(Role) == int(ROLE_Authority)) + { + switch(r_eStatus) + { + // End:0x46 + case 0: + TriggerEventClass(Class'TgGame.TgSeqEvent_ChaosObjectiveActive', self, 0); + // End:0x88 + break; + // End:0x65 + case 1: + TriggerEventClass(Class'TgGame.TgSeqEvent_ChaosObjectiveActive', self, 1); + // End:0x88 + break; + // End:0x85 + case 2: + TriggerEventClass(Class'TgGame.TgSeqEvent_ChaosObjectiveActive', self, 2); + // End:0x88 + break; + // End:0xFFFF + default: + break; + } + } + else + { + //return; + } +} + +simulated event OnContestedStatusChanged() +{ + local array Events; + local TgSeqEvent_ChaosObjectiveStatus Evt; + local TgPlayerController TgPC; + local bool bFriendlyOwned; + local Sequence Seq; + local int Idx, tf; + local array Indices; + + // End:0x2E3 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x5D + if(int(r_nContestingTaskForceIndex) == int(3)) + { + Indices.AddItem(0); + tf = -1; + } + else + { + // End:0xAD + if((int(r_nContestingTaskForceIndex) == int(1)) || int(r_nContestingTaskForceIndex) == int(2)) + { + Indices.AddItem(1); + tf = int(r_nContestingTaskForceIndex); + } + else + { + Indices.AddItem(2); + tf = 0; + } + } + TgPC = TgPlayerController(GetALocalPlayerController()); + bFriendlyOwned = false; + // End:0x1BE + if(TgPC != none) + { + // End:0x13B + if(WorldInfo.IsPlayingDemo()) + { + bFriendlyOwned = tf == 1; + } + else + { + bFriendlyOwned = ((TgPC.IsConfused()) ? TgPC.GetTaskForceNumber() != tf : TgPC.GetTaskForceNumber() == tf); + } + } + Seq = WorldInfo.GetGameSequence(); + // End:0x2E3 + if(Seq != none) + { + Seq.FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_ChaosObjectiveStatus', true, Events); + Idx = 0; + J0x233: + + // End:0x2E3 [Loop If] + if(Idx < Events.Length) + { + Evt = TgSeqEvent_ChaosObjectiveStatus(Events[Idx]); + // End:0x2D5 + if(Evt != none) + { + Evt.CheckActivate(self, self,, Indices); + Evt.UpdateLinkedVars(bFriendlyOwned); + } + Idx++; + // [Loop Continue] + goto J0x233; + } + } + } + //return; +} + +defaultproperties +{ + Components[0]=none + RemoteRole=ENetRole.ROLE_SimulatedProxy + bNoDelete=true + bAlwaysRelevant=true + bOnlyDirtyReplication=true + NetPriority=2.0000000 + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgObjectiveVolume.uc b/exported/TgGame/Classes/TgObjectiveVolume.uc new file mode 100755 index 00000000..ecbad60c --- /dev/null +++ b/exported/TgGame/Classes/TgObjectiveVolume.uc @@ -0,0 +1,67 @@ +class TgObjectiveVolume extends Volume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +// Export UTgObjectiveVolume::execIsObjective(FFrame&, void* const) +native function bool IsObjective(Actor Other); + +// Export UTgObjectiveVolume::execSetCurrentObjective(FFrame&, void* const) +native function SetCurrentObjective(Actor Other); + +// Export UTgObjectiveVolume::execClearCurrentObjective(FFrame&, void* const) +native function ClearCurrentObjective(); + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn aPawn; + local TgPlayerController aPC; + + aPawn = TgPawn(Other); + // End:0x7E + if(aPawn != none) + { + aPC = TgPlayerController(aPawn.Controller); + // End:0x7E + if(aPC != none) + { + SetCurrentObjective(Other); + } + } + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + //return; +} + +simulated event UnTouch(Actor Other) +{ + local TgPawn aPawn; + local TgPlayerController aPC; + + aPawn = TgPawn(Other); + // End:0x75 + if(aPawn != none) + { + aPC = TgPlayerController(aPawn.Controller); + // End:0x75 + if(aPC != none) + { + ClearCurrentObjective(); + } + } + super(Actor).UnTouch(Other); + //return; +} + +defaultproperties +{ + bPawnsOnly=true + // Reference: BrushComponent'TgGame.Default__TgObjectiveVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgObserver_ViewTargetChanged.uc b/exported/TgGame/Classes/TgObserver_ViewTargetChanged.uc new file mode 100755 index 00000000..1610f147 --- /dev/null +++ b/exported/TgGame/Classes/TgObserver_ViewTargetChanged.uc @@ -0,0 +1,6 @@ +interface TgObserver_ViewTargetChanged extends Interface + abstract + native(View); + +// Export UTgObserver_ViewTargetChanged::execOnViewTargetChanged(FFrame&, void* const) +native function OnViewTargetChanged(optional Actor aNewViewTarget); diff --git a/exported/TgGame/Classes/TgOnlineGameSettings.uc b/exported/TgGame/Classes/TgOnlineGameSettings.uc new file mode 100755 index 00000000..1c38f4b0 --- /dev/null +++ b/exported/TgGame/Classes/TgOnlineGameSettings.uc @@ -0,0 +1,6 @@ +class TgOnlineGameSettings extends OnlineGameSettings; + +defaultproperties +{ + NumPublicConnections=10 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgOverviewCameraActor.uc b/exported/TgGame/Classes/TgOverviewCameraActor.uc new file mode 100755 index 00000000..19d04c62 --- /dev/null +++ b/exported/TgGame/Classes/TgOverviewCameraActor.uc @@ -0,0 +1,5 @@ +class TgOverviewCameraActor extends CameraActor + native(View) + hidecategories(Navigation); + +var() bool m_bFlipped; diff --git a/exported/TgGame/Classes/TgPaladinsController.uc b/exported/TgGame/Classes/TgPaladinsController.uc new file mode 100755 index 00000000..b0f60f36 --- /dev/null +++ b/exported/TgGame/Classes/TgPaladinsController.uc @@ -0,0 +1,39 @@ +interface TgPaladinsController extends Interface + abstract + native(Pawns); + +function int GetCredits() +{ + //return ReturnValue; +} + +function SetCredits(int nCreditsAmount) +{ + //return; +} + +function ResetUlt() +{ + //return; +} + +// Export UTgPaladinsController::execSetRewardValues(FFrame&, void* const) +native function SetRewardValues(int XP, int Currency, Actor Source, TgObject.ERewardValueType RewardType, optional bool bFlankKill = false); + +function LiveRespawn(bool bResetHealth, bool bResetDevices) +{ + //return; +} + +event Revive() +{ + //return; +} + +function TgPawn GetTgPawn() +{ + //return ReturnValue; +} + +// Export UTgPaladinsController::execGetTaskForceNumber(FFrame&, void* const) +native function int GetTaskForceNumber(); diff --git a/exported/TgGame/Classes/TgParticleModuleTypeDataLight.uc b/exported/TgGame/Classes/TgParticleModuleTypeDataLight.uc new file mode 100755 index 00000000..0e978dba --- /dev/null +++ b/exported/TgGame/Classes/TgParticleModuleTypeDataLight.uc @@ -0,0 +1,21 @@ +class TgParticleModuleTypeDataLight extends ParticleModuleTypeDataBase + native(FX) + editinlinenew + collapsecategories + hidecategories(Object,Object,Object); + +var(TgLight) export editinline PointLightComponent m_PointLightComponent; +var export editinline PointLightComponent m_PLCDuplicate; + +defaultproperties +{ + // Reference: PointLightComponent'TgGame.Default__TgParticleModuleTypeDataLight.PointLightComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PointLightComponent0' + begin object name="PointLightComponent0" class=Engine.PointLightComponent + CastDynamicShadows=false + UseDirectLightMap=true + LightAffectsClassification=ELightAffectsClassification.LAC_STATIC_AFFECTING + end object + m_PointLightComponent=PointLightComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgParticleSystemComponent.uc b/exported/TgGame/Classes/TgParticleSystemComponent.uc new file mode 100755 index 00000000..ff247da0 --- /dev/null +++ b/exported/TgGame/Classes/TgParticleSystemComponent.uc @@ -0,0 +1,12 @@ +class TgParticleSystemComponent extends ParticleSystemComponent + native + editinlinenew + hidecategories(Object,Physics,Collision); + +var() export editinline SkeletalMeshComponent m_AttachedToSkelMesh; +var bool m_bReenableAfterTeleport; + +defaultproperties +{ + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPathPreviewActor.uc b/exported/TgGame/Classes/TgPathPreviewActor.uc new file mode 100755 index 00000000..d03fc721 --- /dev/null +++ b/exported/TgGame/Classes/TgPathPreviewActor.uc @@ -0,0 +1,24 @@ +class TgPathPreviewActor extends Actor + native(Navigation) + placeable + hidecategories(Navigation) + implements(Interface_NavigationHandle); + +var private native const noexport Pointer VfTable_IInterface_NavigationHandle; +var() TgPathPreviewActor m_Destination; +var TgPathPreviewActor m_Source; +var HavokNavigationHandle m_NavigationHandle; +var() editinline NavMeshPathParams m_NavMeshPathParams; + +event NotifyPathChanged() +{ + //return; +} + +defaultproperties +{ + m_NavMeshPathParams=(bCanMantle=false,bNeedsMantleValidityTest=false,bAbleToSearch=true,SearchExtent=(X=50.0000000,Y=50.0000000,Z=100.0000000),SearchLaneMultiplier=0.0000000,SearchStart=(X=0.0000000,Y=0.0000000,Z=0.0000000),MaxDropHeight=500.0000000,MinWalkableZ=0.7000000,MaxHoverDistance=10.0000000,MaxPathLength=0.0000000) + Components[0]=none + Components[1]=none + bUpdateHavokPos=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPathPreviewRenderingComponent.uc b/exported/TgGame/Classes/TgPathPreviewRenderingComponent.uc new file mode 100755 index 00000000..b4fa96b8 --- /dev/null +++ b/exported/TgGame/Classes/TgPathPreviewRenderingComponent.uc @@ -0,0 +1,9 @@ +class TgPathPreviewRenderingComponent extends PrimitiveComponent + native(Navigation) + editinlinenew + hidecategories(Object); + +defaultproperties +{ + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPathfinder.uc b/exported/TgGame/Classes/TgPathfinder.uc new file mode 100755 index 00000000..88d57b4f --- /dev/null +++ b/exported/TgGame/Classes/TgPathfinder.uc @@ -0,0 +1,120 @@ +class TgPathfinder extends Actor + native(Navigation) + notplaceable + hidecategories(Navigation) + implements(Interface_NavigationHandle); + +var private native const noexport Pointer VfTable_IInterface_NavigationHandle; +var() float m_fMaxSpeed; +var init array m_vWaypoints; +var float m_fPathCheckRadius; +var HavokNavigationHandle m_NavigationHandle; +var SplineActor m_Spline; +var SplineActor m_CurrentSpline; +var float m_fCurrentSplineDist; +var() editinline NavMeshPathParams m_NavMeshPathParams; +var array m_ActiveWalkers; +var float m_WalkerLifeSpan; +//var delegate __OnFinishedPathing__Delegate; + +delegate OnFinishedPathing(TgPathfinder Pathfinder) +{ + //return; +} + +// Export UTgPathfinder::execSetRouteTo(FFrame&, void* const) +native function bool SetRouteTo(Actor destActor, optional bool bDrawDebugPath = false); + +event NotifyPathChanged() +{ + //return; +} + +simulated function SetupPathProperties(float PathCheckRadius, float PathSpeed) +{ + m_fPathCheckRadius = PathCheckRadius; + m_fMaxSpeed = PathSpeed; + //return; +} + +simulated event Destroyed() +{ + local array Path; + local int I; + + // End:0x9F + if(m_Spline != none) + { + m_Spline.GetAllConnectedSplineActors(Path); + I = Path.Length; + J0x4B: + + // End:0x9F [Loop If] + if(I > 0) + { + I--; + Path[I].Destroy(); + Path[I] = none; + // [Loop Continue] + goto J0x4B; + } + } + super.Destroyed(); + //return; +} + +function StartWalkerStream(float StreamTime, float WalkerPulseTime, float WalkerLifetime, float WalkerSpeed) +{ + m_fMaxSpeed = WalkerSpeed; + m_WalkerLifeSpan = WalkerLifetime; + SpawnWalker(); + SetTimer(WalkerPulseTime, true, 'SpawnWalker'); + SetTimer(StreamTime, false, 'StopWalkerStream'); + //return; +} + +function StopWalkerStream() +{ + ClearTimer('SpawnWalker'); + //return; +} + +function SpawnWalker() +{ + local TgPathfinderWalker PathfinderWalker; + local TgSpecialFx PathfinderFX; + + PathfinderWalker = Spawn(Class'TgGame.TgPathfinderWalker', Owner,, Location); + PathfinderWalker.SetPathfinder(self); + PathfinderWalker.__OnFinishedPathing__Delegate = OnPathfinderWalkerFinishedPathing; + PathfinderWalker.LifeSpan = m_WalkerLifeSpan; + PathfinderFX = Class'TgGame.TgPawn'.static.GetSpecialFx(6334); + // End:0x152 + if(PathfinderFX != none) + { + PathfinderFX.AttachToOwner(PathfinderWalker); + PathfinderFX.SetDepthPriorityGroup(3); + PathfinderFX.Activate(); + } + m_ActiveWalkers.AddItem(PathfinderWalker); + //return; +} + +function OnPathfinderWalkerFinishedPathing(TgPathfinderWalker Walker) +{ + m_ActiveWalkers.RemoveItem(Walker); + // End:0x44 + if((m_ActiveWalkers.Length == 0) && !IsTimerActive('StopWalkerStream')) + { + Destroy(); + } + //return; +} + +defaultproperties +{ + m_fMaxSpeed=200.0000000 + m_NavMeshPathParams=(bCanMantle=false,bNeedsMantleValidityTest=false,bAbleToSearch=true,SearchExtent=(X=50.0000000,Y=50.0000000,Z=100.0000000),SearchLaneMultiplier=0.0000000,SearchStart=(X=0.0000000,Y=0.0000000,Z=0.0000000),MaxDropHeight=500.0000000,MinWalkableZ=0.7000000,MaxHoverDistance=10.0000000,MaxPathLength=0.0000000) + Physics=EPhysics.PHYS_Custom + bUpdateHavokPos=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPathfinderWalker.uc b/exported/TgGame/Classes/TgPathfinderWalker.uc new file mode 100755 index 00000000..b360172a --- /dev/null +++ b/exported/TgGame/Classes/TgPathfinderWalker.uc @@ -0,0 +1,29 @@ +class TgPathfinderWalker extends Actor + native(Navigation) + notplaceable + hidecategories(Navigation); + +var TgPathfinder m_Pathfinder; +var SplineActor m_CurrentSpline; +var float m_fCurrentSplineDist; +//var delegate __OnFinishedPathing__Delegate; + +delegate OnFinishedPathing(TgPathfinderWalker PathfinderWalker) +{ + //return; +} + +// Export UTgPathfinderWalker::execSetPathfinder(FFrame&, void* const) +native function SetPathfinder(TgPathfinder Pathfinder); + +function Destroyed() +{ + OnFinishedPathing(self); + super.Destroyed(); + //return; +} + +defaultproperties +{ + Physics=EPhysics.PHYS_Custom +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn.uc b/exported/TgGame/Classes/TgPawn.uc new file mode 100755 index 00000000..8ce9aca3 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn.uc @@ -0,0 +1,15764 @@ +class TgPawn extends GamePawn + abstract + native(Pawns) + nativereplication + config(Game) + hidecategories(Navigation) + implements(TgSkinnableInterface,TgCombatActor,TgObserver_ViewTargetChanged,TgInteractiveAudio); + +const TG_MAX_FLASH_EVENTS = 32; +const TG_MIN_RELOAD_SCALE = 0.4f; +const TG_PHYSICALITY_NON_STRUCTURES = 860; +const TG_PHYSICALITY_STRUCTURES = 861; +const TG_PHYSICALITY_PLAYERS = 10034; +const TG_PHYSICALITY_MECHANICALS = 10035; +const TG_PHYSICALITY_DECOYS = 15046; +const TG_PHYSICALITY_PLAYERS_AND_DECOYS = 15047; +const TG_PHYSICALITY_MECHANICALS_AND_DECOYS = 15050; +const TG_SPAWNFX_VALID_DURATION = 5; +const TG_VOLUME_STEALTH_FADE_TIME = 1.0f; +const TG_DISTANCE_FADE_TIME = 1.0f; +const TG_DEFAULT_WINE_MIC = 2430; +const TG_COMBAT_DURATION = 5.0; +const TG_STILL_THRESHOLD = 1.0; +const TG_STILL_DURATION = 5.0; +const TG_CARD_COOLDOWN_ON_DEATH = false; +const MAX_OBSCURING_DEPLOYABLES = 10; +const MAX_BLINDING_DEPLOYABLES = 10; +const MAX_VISIBLE_THROUGH_WALL_INSTIGATORS = 12; +const MAX_VISIBLE_THROUGH_STEALTH_INSTIGATORS = 12; +const TG_PAWN_POLYMORPH_CHICKEN_MESH_ID = 5599; +const TG_PAWN_POLYMORPH_OUT_FX_ID = 6674; +const TG_PAWN_POLYMORPH_IN_FX_ID = 6675; +const PHYS_TWEEN_FLAG_COLLIDE_WITH_WORLD = 1; +const PHYS_TWEEN_FLAG_ROTATE_TOWARDS_TARGET = 2; +const TG_EQP_POINT_MAX = 33; +const GLOBAL_OFFHAND_COOLDOWN = 5.0; +const GLOBAL_OFFHAND_CLIENT_COOLDOWN = 5.1; +const MAX_DEVICE_EQPOINT = 15; +const MAX_NUM_DEPLOYED_BOTS = 3; +const MAX_NUM_PETS = 8; +const TG_ASSIST_TIMEOUT = 5; +const TG_ASSIST_TIMEOUT_OBJ = 10; +const PLAYER_NOT_TAGGED = -1; +const GAMEEVENT_PALADINS_PLAYER_KILL = 1001; +const GAMEEVENT_PALADINS_PLAYER_DEATH = 1002; +const GAMEEVENT_PALADINS_PLAYER_KILL_SUICIDE = 2001; +const GAMEEVENT_PALADINS_PLAYER_KILL_NORMAL = 2002; +const GAMEEVENT_PALADINS_PLAYER_KILL_ASSIST = 2003; +const GAMEEVENT_MATCH_STARTED = 0; +const GAMEEVENT_MATCH_ENDED = 1; +const GAMEEVENT_ROUND_STARTED = 2; +const GAMEEVENT_ROUND_ENDED = 3; +const GAMEEVENT_GAME_CLASS = 6; +const GAMEEVENT_GAME_OPTION_URL = 7; +const GAMEEVENT_GAME_MAPNAME = 8; +const GAMEEVENT_MEMORYUSAGE_POLL = 35; +const GAMEEVENT_FRAMERATE_POLL = 36; +const GAMEEVENT_NETWORKUSAGEIN_POLL = 37; +const GAMEEVENT_NETWORKUSAGEOUT_POLL = 38; +const GAMEEVENT_PING_POLL = 39; +const GAMEEVENT_RENDERTHREAD_POLL = 40; +const GAMEEVENT_GAMETHREAD_POLL = 41; +const GAMEEVENT_GPUFRAMETIME_POLL = 42; +const GAMEEVENT_FRAMETIME_POLL = 43; +const GAMEEVENT_TEAM_CREATED = 50; +const GAMEEVENT_TEAM_GAME_SCORE = 51; +const GAMEEVENT_TEAM_MATCH_WON = 4; +const GAMEEVENT_TEAM_ROUND_WON = 5; +const GAMEEVENT_TEAM_ROUND_STALEMATE = 52; +const GAMEEVENT_PLAYER_LOGIN = 100; +const GAMEEVENT_PLAYER_LOGOUT = 101; +const GAMEEVENT_PLAYER_SPAWN = 102; +const GAMEEVENT_PLAYER_MATCH_WON = 103; +const GAMEEVENT_PLAYER_KILL = 104; +const GAMEEVENT_PLAYER_LOCATION_POLL = 105; +const GAMEEVENT_PLAYER_TEAMCHANGE = 106; +const GAMEEVENT_PLAYER_KILL_STREAK = 107; +const GAMEEVENT_PLAYER_DEATH = 108; +const GAMEEVENT_PLAYER_ROUND_WON = 109; +const GAMEEVENT_PLAYER_ROUND_STALEMATE = 110; +const GAMEEVENT_WEAPON_DAMAGE = 150; +const GAMEEVENT_WEAPON_DAMAGE_MELEE = 151; +const GAMEEVENT_WEAPON_FIRED = 152; +const GAMEEVENT_PLAYER_KILL_NORMAL = 200; +const GAMEEVENT_GENERIC_PARAM_LIST_START = 300; +const GAMEEVENT_GENERIC_PARAM_LIST_END = 400; +const GAMEEVENT_GAME_SPECIFIC = 1000; +const GAMEEVENT_MAX_EVENTID = 0x0000FFFF; + +enum ETweenState +{ + TWEEN_None, // 0 + TWEEN_Default, // 1 + TWEEN_DefaultImmune, // 2 + TWEEN_TimedKnockup, // 3 + TWEEN_Damagable, // 4 + TWEEN_MAX // 5 +}; + +enum EGrabState +{ + GRAB_None, // 0 + GRAB_ShellSpin, // 1 + GRAB_LazarusRush, // 2 + GRAB_MAX // 3 +}; + +enum EChargeState +{ + CHARGE_None, // 0 + CHARGE_NoTurn, // 1 + CHARGE_NoTurn_RotPawn, // 2 + CHARGE_NoTurnBackwards, // 3 + CHARGE_Turn, // 4 + CHARGE_Fairy, // 5 + CHARGE_MAX // 6 +}; + +enum EEmote +{ + EMOTE_None, // 0 + EMOTE_Taunt, // 1 + EMOTE_Joke, // 2 + EMOTE_Laugh, // 3 + EMOTE_Health_Low, // 4 + EMOTE_Kill_Streak, // 5 + EMOTE_Intro, // 6 + EMOTE_Death, // 7 + EMOTE_DeathGrunt, // 8 + EMOTE_DeathFall, // 9 + EMOTE_FirstBlood, // 10 + EMOTE_Weapon_1, // 11 + EMOTE_Weapon_2, // 12 + EMOTE_Ability1, // 13 + EMOTE_Ability2, // 14 + EMOTE_Ability3, // 15 + EMOTE_AbilityUltimate, // 16 + EMOTE_Mount, // 17 + EMOTE_SetOnFire, // 18 + EMOTE_StunnedOrFrozen, // 19 + EMOTE_Kill, // 20 + EMOTE_KillSiegeEngine, // 21 + EMOTE_KillGate, // 22 + EMOTE_LevelUp, // 23 + EMOTE_Victory, // 24 + EMOTE_Defeat, // 25 + EMOTE_PickWeaponCard, // 26 + EMOTE_PickArmorCard, // 27 + EMOTE_PickAbilityCard, // 28 + EMOTE_KillAssist, // 29 + EMOTE_UniqueCombat, // 30 + EMOTE_KillAbility1, // 31 + EMOTE_KillAbility2, // 32 + EMOTE_CapturePoint, // 33 + EMOTE_TakingDamage, // 34 + EMOTE_EnemyCapturingPoint, // 35 + EMOTE_OnPointAndFiring, // 36 + EMOTE_HealedByTeammate, // 37 + EMOTE_AbilityOnCooldown, // 38 + EMOTE_Mastery1, // 39 + EMOTE_Mastery9, // 40 + EMOTE_Mastery12, // 41 + EMOTE_Mastery15, // 42 + EMOTE_Train, // 43 + EMOTE_GruntHit, // 44 + EMOTE_GruntJump, // 45 + EMOTE_BehindUs, // 46 + EMOTE_AboveUs, // 47 + EMOTE_Sniper, // 48 + EMOTE_MAX // 49 +}; + +enum EEmoteCategory +{ + EMOTECAT_None, // 0 + EMOTECAT_PlayerVGS, // 1 + EMOTECAT_AbilityOnCooldown, // 2 + EMOTECAT_TakingDamage, // 3 + EMOTECAT_Celebration, // 4 + EMOTECAT_Kills, // 5 + EMOTECAT_Action, // 6 + EMOTECAT_Context, // 7 + EMOTECAT_Ultimate, // 8 + EMOTECAT_Override, // 9 + EMOTECAT_Movement, // 10 + EMOTECAT_MAX // 11 +}; + +enum EHitAudioCue +{ + CUEHIT_None, // 0 + CUEHIT_Pain, // 1 + CUEHIT_FromAbove, // 2 + CUEHIT_FromBehind, // 3 + CUEHIT_Sniper, // 4 + CUEHIT_MAX // 5 +}; + +enum TG_DEATH_REASON +{ + DR_NORMAL, // 0 + DR_DESPAWN, // 1 + DR_RECONNECT, // 2 + DR_FREEZE_GIB, // 3 + DR_LEX_EXECUTE, // 4 + DR_MAX // 5 +}; + +enum TG_REP_DEVICE_STATE +{ + RDS_INACTIVE, // 0 + RDS_FIRING, // 1 + RDS_GENERIC1, // 2 + RDS_GENERIC2, // 3 + RDS_MAX // 4 +}; + +enum STEALTH_TYPE +{ + STEALTH_TYPE_NONE, // 0 + STEALTH_TYPE_PULSED, // 1 + STEALTH_TYPE_FADING, // 2 + STEALTH_TYPE_INSTANT, // 3 + STEALTH_TYPE_NO_REVEAL, // 4 + STEALTH_TYPE_MAX // 5 +}; + +enum TG_POSTURE +{ + TG_POSTURE_DEFAULT, // 0 + TG_POSTURE_REST, // 1 + TG_POSTURE_FUSSY, // 2 + TG_POSTURE_INTRO, // 3 + TG_POSTURE_ENRAGED, // 4 + TG_POSTURE_PATROL, // 5 + TG_POSTURE_GENERICFIRE1, // 6 + TG_POSTURE_GENERICFIRE2, // 7 + TG_POSTURE_GENERICFIRE3, // 8 + TG_POSTURE_DEAD, // 9 + TG_POSTURE_SEARCHING, // 10 + TG_POSTURE_FALLING, // 11 + TG_POSTURE_MOUNT, // 12 + TG_POSTURE_STASIS, // 13 + TG_POSTURE_KNOCKBACK, // 14 + TG_POSTURE_MESMERIZE, // 15 + TG_POSTURE_DISARMED, // 16 + TG_POSTURE_SCARED, // 17 + TG_POSTURE_STUNNED, // 18 + TG_POSTURE_PULLED, // 19 + TG_POSTURE_NONE, // 20 + TG_POSTURE_MAX // 21 +}; + +enum TG_PlaySpecialEffect +{ + PLAYFX_Heal, // 0 + PLAYFX_RUberLaser, // 1 + PLAYFX_LUberLaser, // 2 + PLAYFX_SiegeWallImpact, // 3 + PLAYFX_GAMMARAY_BUILDUP, // 4 + PLAYFX_GAMMARAY_FIRE, // 5 + PLAYFX_Jump, // 6 + PLAYFX_SpecialJump, // 7 + PLAYFX_Land, // 8 + PLAYFX_Teleport, // 9 + PLAYFX_PreTeleport, // 10 + PLAYFX_Flourish, // 11 + PLAYFX_MAX // 12 +}; + +enum TG_TELEPORT_STATE +{ + TELEPORT_NONE, // 0 + TELEPORT_ENTER, // 1 + TELEPORT_EXIT, // 2 + TELEPORT_ENTER_BLINK, // 3 + TELEPORT_EXIT_BLINK, // 4 + TELEPORT_KINESSA_TRANSPORTER_ENTER,// 5 + TELEPORT_KINESSA_TRANSPORTER_EXIT,// 6 + TELEPORT_MAX // 7 +}; + +enum OverlayMICType +{ + OMT_None, // 0 + OMT_Execute, // 1 + OMT_Shield, // 2 + OMT_CCImmune, // 3 + OMT_CharacterCustom1, // 4 + OMT_Freeze, // 5 + OMT_MAX // 6 +}; + +enum OverlayState +{ + OMS_Normal, // 0 + OMS_ForceVisible, // 1 + OMS_ForceHidden, // 2 + OMS_MAX // 3 +}; + +enum EForcedSilhouetteVisibility +{ + FSV_None, // 0 + FSV_Visible, // 1 + FSV_Hidden, // 2 + FSV_MAX // 3 +}; + +enum EHitReactionType +{ + HIT_REACTION_Anim, // 0 + HIT_Reaction_Procedural, // 1 + HIT_MAX // 2 +}; + +enum EMetaGameState +{ + GAMESTATE_NONE, // 0 + GAMESTATE_NEUTRAL, // 1 + GAMESTATE_ACTIVE_POINT, // 2 + GAMESTATE_ATTACKING, // 3 + GAMESTATE_DEFENDING, // 4 + GAMESTATE_TITAN_BATTLE, // 5 + GAMESTATE_MAX // 6 +}; + +enum EBotBehaviorState +{ + BEHAVIORSTATE_IDLE, // 0 + BEHAVIORSTATE_ENGAGING, // 1 + BEHAVIORSTATE_FALLBACK, // 2 + BEHAVIORSTATE_MAX // 3 +}; + +enum LocalViewerRangeState +{ + LVRS_EffectiveRange, // 0 + LVRS_MaxRange, // 1 + LVRS_BeyondRange, // 2 + LVRS_MAX // 3 +}; + +struct native EEmoteCategoryChance +{ + var float fDefault; + var float fPlayerVGS; + var float fAbilityOnCooldown; + var float fTakingDamage; + var float fCelebration; + var float fKills; + var float fAction; + var float fContext; + var float fUltimate; + var float fOverride; + var float fMovement; + + structdefaultproperties + { + fDefault=0.0000000 + fPlayerVGS=0.0000000 + fAbilityOnCooldown=0.0000000 + fTakingDamage=0.0000000 + fCelebration=0.0000000 + fKills=0.0000000 + fAction=0.0000000 + fContext=0.0000000 + fUltimate=0.0000000 + fOverride=0.0000000 + fMovement=0.0000000 + } +}; + +struct native EEmoteAbilityChance +{ + var float fDefault; + var float fAbility1; + var float fAbility2; + var float fAbility3; + var float fMount; + + structdefaultproperties + { + fDefault=0.0000000 + fAbility1=0.0000000 + fAbility2=0.0000000 + fAbility3=0.0000000 + fMount=0.0000000 + } +}; + +struct native TGEQUIP_SLOTS_STRUCT +{ + var int SlotIndices[33]; + var int MiscItems[33]; + + structdefaultproperties + { + SlotIndices[0]=0 + SlotIndices[1]=0 + SlotIndices[2]=0 + SlotIndices[3]=0 + SlotIndices[4]=0 + SlotIndices[5]=0 + SlotIndices[6]=0 + SlotIndices[7]=0 + SlotIndices[8]=0 + SlotIndices[9]=0 + SlotIndices[10]=0 + SlotIndices[11]=0 + SlotIndices[12]=0 + SlotIndices[13]=0 + SlotIndices[14]=0 + SlotIndices[15]=0 + SlotIndices[16]=0 + SlotIndices[17]=0 + SlotIndices[18]=0 + SlotIndices[19]=0 + SlotIndices[20]=0 + SlotIndices[21]=0 + SlotIndices[22]=0 + SlotIndices[23]=0 + SlotIndices[24]=0 + SlotIndices[25]=0 + SlotIndices[26]=0 + SlotIndices[27]=0 + SlotIndices[28]=0 + SlotIndices[29]=0 + SlotIndices[30]=0 + SlotIndices[31]=0 + SlotIndices[32]=0 + MiscItems[0]=0 + MiscItems[1]=0 + MiscItems[2]=0 + MiscItems[3]=0 + MiscItems[4]=0 + MiscItems[5]=0 + MiscItems[6]=0 + MiscItems[7]=0 + MiscItems[8]=0 + MiscItems[9]=0 + MiscItems[10]=0 + MiscItems[11]=0 + MiscItems[12]=0 + MiscItems[13]=0 + MiscItems[14]=0 + MiscItems[15]=0 + MiscItems[16]=0 + MiscItems[17]=0 + MiscItems[18]=0 + MiscItems[19]=0 + MiscItems[20]=0 + MiscItems[21]=0 + MiscItems[22]=0 + MiscItems[23]=0 + MiscItems[24]=0 + MiscItems[25]=0 + MiscItems[26]=0 + MiscItems[27]=0 + MiscItems[28]=0 + MiscItems[29]=0 + MiscItems[30]=0 + MiscItems[31]=0 + MiscItems[32]=0 + } +}; + +struct native DeathInfo +{ + var bool bDead; + var Vector Momentum; + var Class dmgType; + var Vector HitLoc; + + structdefaultproperties + { + bDead=false + Momentum=(X=0.0000000,Y=0.0000000,Z=0.0000000) + dmgType=none + HitLoc=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct native PostureStack +{ + var array GUIDs; + var array Postures; + var int NewPostureGUID; + + structdefaultproperties + { + GUIDs=none + Postures=none + NewPostureGUID=0 + } +}; + +struct native PawnDamagerStruct +{ + var TgPawn DamagerPawn; + var float fTimestamp; + + structdefaultproperties + { + DamagerPawn=none + fTimestamp=0.0000000 + } +}; + +struct native OverlayMICList +{ + var init array MICs; + + structdefaultproperties + { + MICs=none + } +}; + +struct native OverlayInfo +{ + var export editinline TgSkeletalMeshComponent OverlayMesh; + var export editinline SkeletalMeshComponent ParentMesh; + var bool bIs1POverlay; + var bool bIsVisible; + var OverlayMICList OverlayMICInstances[OverlayMICType]; + + structdefaultproperties + { + OverlayMesh=none + ParentMesh=none + bIs1POverlay=false + bIsVisible=false + OverlayMICInstances[0]=(MICs=none) + OverlayMICInstances[1]=(MICs=none) + OverlayMICInstances[2]=(MICs=none) + OverlayMICInstances[3]=(MICs=none) + OverlayMICInstances[4]=(MICs=none) + OverlayMICInstances[5]=(MICs=none) + } +}; + +struct SilhouetteInfo +{ +}; + +struct native HealingInfo +{ + var float HealAmount; + var float TimeStamp; + + structdefaultproperties + { + HealAmount=0.0000000 + TimeStamp=0.0000000 + } +}; + +struct native RigidBodyImpactInfo +{ + var float LastImpactTime; + var PhysicalMaterial PhysMat; + + structdefaultproperties + { + LastImpactTime=0.0000000 + PhysMat=none + } +}; + +var private native const noexport Pointer VfTable_ITgSkinnableInterface; +var private native const noexport Pointer VfTable_ITgCombatActor; +var private native const noexport Pointer VfTable_ITgObserver_ViewTargetChanged; +var private native const noexport Pointer VfTable_ITgInteractiveAudio; +var Vector r_vPhysTweenTarget; +var repnotify TgPawn.ETweenState r_eTweenState; +var TgPawn.ETweenState m_eLocalTweenState; +var byte s_BitPackedHitReaction; +var repnotify TgPawn.EGrabState r_eGrabState; +var TgPawn.EGrabState m_eLocalGrabState; +var repnotify TgPawn.EChargeState r_eChargeState; +var TgPawn.TG_DEATH_REASON r_eDeathReason; +var repnotify TgPawn.TG_REP_DEVICE_STATE r_ReplicatedDeviceState[33]; +var repnotify TgObject.TG_EQUIP_POINT r_eDesiredInHand; +var TgObject.TG_EQUIP_POINT m_eEquippedInHand; +var byte r_nPackedFireMultiRanges[20]; +var TgObject.TG_EQUIP_POINT r_eDesiredAIDevice; +var repnotify TgPawn.STEALTH_TYPE r_eIsStealthed; +var TgPawn.STEALTH_TYPE c_eIsStealthed; +var byte r_nInCombatNonce; +var byte c_nInCombatNonceAck; +var const TgObject.DeployableOverlayIcon m_InitHUDOverlayIcon; +var const TgObject.DeployableOverlayState m_InitHUDOverlayState; +var TgPawn.TG_POSTURE m_ePosture; +var repnotify Controller.EStunType r_eCurrentStunType; +var byte c_nLocalRespawnBeaconHUDState; +var private TgPawn.OverlayMICType m_OverlayCurrentTypeBody; +var private TgPawn.OverlayMICType m_OverlayCurrentTypeWeapon; +var const Scene.ESceneDepthPriorityGroup m_eCharacterCustom1OverlayDepthGroup; +var() TgPawn.EForcedSilhouetteVisibility m_eForcedSilhouetteVisibility; +var() TgPawn.EHitReactionType m_HitReactionType; +var TgObject.EUITargetingType c_UITargetingType; +var protected TgPawn.EMetaGameState m_eMetaGameState; +var protected TgPawn.EBotBehaviorState m_eBotBehaviorState; +var byte m_nIsInIntroState; +var transient TgObject.EPolymorphType c_LocalPolymorph; +var repnotify TgObject.EPolymorphType r_CurrentPolymorph; +var TgObject.EThreatLevel c_ThreatLevel; +var TgObject.EThreatLevel c_LastThreatLevel; +var const TgPawn.LocalViewerRangeState m_RangeStateFromLocalViewer; +var TgPawn.EEmote c_eCurrentAudioEmotePlaying; +var float m_fPhysTweenDist; +var float r_fPhysTweenDuration; +var int m_nPhysTweenPostureId; +var bool r_bPhysTweenInterrupted; +var bool s_bIsInGrass; +var bool r_bGrabInterrupted; +var bool m_PreGrabCollideActors; +var bool m_PreGrabBlockActors; +var bool m_PreGrabCollideWorld; +var bool m_PreGrabCollideComplex; +var bool r_bUsePhysFlyingForCharge; +var bool r_bChargeIgnoreHumanoidBlocking; +var bool m_bWantsCharge; +var bool m_bCanJumpWhileCharging; +var bool m_bCanChargeInAir; +var bool m_bEndChargeInFalling; +var bool m_bIgnoreFriendlyBlocking; +var bool m_bIgnoreEnemyBlocking; +var const bool m_bHasDestroyedMesh; +var bool m_bDefaultPropsInitialized; +var bool m_bAffectedByVortices; +var bool s_LoadMeshServerSide; +var bool c_bDeviceHiddenDueToFullBodyAnim; +var bool c_bMeshHiddenDueToDeath; +var bool c_bHideMeshFromCameraPenetration; +var bool c_bHideMeshFromKismet; +var bool r_bInGlobalOffhandCooldown; +var bool bInGlobalOffhandCooldownClient; +var bool m_bInFireLock; +var bool c_bUpdatesWeaponMesh; +var bool c_bIsStealthMaterialOn; +var repnotify bool r_bIsVolumeStealthed; +var repnotify bool r_bIsVolumeStealthFading; +var bool m_bDisableVolumeStealth; +var repnotify bool r_bDisableVolumeStealth; +var const bool m_bCannotBeVolumeStealthed; +var bool m_bPlayingStealth; +var bool m_bPlayingDetected; +var bool c_bHiddenDueToStealth; +var bool c_bHiddenDueToObscuringDeployable; +var bool r_bCanStartStealthInCombat; +var const bool m_bIsVisionBlocker; +var const bool m_bIsAIVisionBlocker; +var bool m_bApplyDistanceFade; +var bool r_bIsBot; +var bool s_bInvisibleToPets; +var bool s_bCanSeePets; +var transient bool c_bIsFrametestZombie; +var bool r_bIsAnimInStrafeMode; +var bool m_ReachedTargetSoKillRootMotion; +var bool s_bCanApplyEffects; +var bool m_bInitialized; +var bool m_bUseInterrupted; +var bool c_bIgnoreInterruption; +var bool r_bNoEnergyCost; +var bool m_bCheatUseNoEnergy; +var bool m_bCheatNoRecharge; +var bool m_bIsInvisibleToAI; +var repnotify bool r_bInCombatFlag; +var bool s_bIsStill; +var bool m_bHitWallThisTick; +var bool r_bIsAFK; +var bool c_bHandIKEnabledFromAnimSet; +var bool c_bCanDoTurnInPlaceAnim; +var bool c_bIsPlayingTurnInPlaceAnim; +var bool m_bShouldApplyCCImmuneOverlay; +var bool m_bCanBeKnockedBack; +var bool m_bCausesPushblock; +var bool m_bPushblockAffectsFriendlies; +var bool m_bPushblockAffectsEnemies; +var bool m_bIsCrowdControlImmuneKismet; +var bool m_bUseSmoothNetReceiveRotation; +var bool m_bForceSmoothCorrection; +var const bool m_bAlwaysUseAccurateRotation; +var bool r_bHasAccurateRotation; +var bool c_bUpdateSkelMeshWhenNotRendered; +var bool c_bUpdateSkelMeshWhenNotRenderedServer; +var bool r_bSilenced; +var bool r_bDisarmed; +var repnotify bool r_bCrippled; +var bool r_bIsInStasis; +var bool r_bCanBePulled; +var bool s_bHasCrippleEffect; +var bool c_bEnemyMatLoaded; +var repnotify bool r_bIsFlashBang; +var bool r_bIsJumping; +var bool r_bIsShortJump; +var bool m_bIsLanding; +var bool m_bAllowHigherWallJumping; +var bool m_bIgnorePhysCheckForJump; +var bool m_bHasPlayedDeathAnimation; +var bool m_bForceDeathAnim; +var repnotify bool r_bHasRespawnBeacon; +var bool m_bDestroyOnOwnerDeathFlag; +var repnotify bool r_bNeedPlaySpawnFx; +var bool c_bSpawnFxPlayed; +var bool c_bTargeted; +var bool c_bTargetedLightup; +var bool c_bShowDecalRing; +var bool c_bShowTargetedRing; +var bool c_bTargetedRingActive; +var bool c_bApplyDropShadow; +var bool m_bShowNameplate; +var bool r_bInitialIsEnemy; +var bool c_bNeedsAssetLoad; +var bool r_bDebugShowAIDebug; +var bool m_SwapToDestroyedMeshOnTick; +var() bool m_bBlockCamera; +var bool m_bOverlaysEnabled; +var bool m_b1POverlaysActive; +var bool m_bSilhouettesVisible; +var() const bool m_bUseSilhouettes; +var() bool m_bIgnoreTearOffMomentum; +var() bool m_bAcceptsHitReactions; +var bool m_bIsFadingOut; +var bool m_bUseDamageTypeForDeathAnim; +var bool r_bDemoCanPurchaseItems; +var bool s_bHasInteractedWithStore; +var bool m_bDoSmoothCorrectionThisTick; +var bool m_bOnlyTakeHeadshotDamage; +var repnotify bool r_bIsMounted; +var bool r_bUseMountPosture; +var bool m_bIsEnteringMount; +var const bool m_bUpdateEyeHeight; +var bool m_bJustLanded; +var bool m_bLandRecovery; +var bool r_bJustJumped; +var bool m_bStunEnergyRegen; +var bool c_bHealAkEventPlaying; +var bool m_bPainAkEventPlaying; +var repnotify bool r_bIsDazed; +var repnotify bool r_bIsMarked; +var repnotify bool r_bIsBleeding; +var repnotify bool r_bIsOnFire; +var repnotify bool r_bIsRooted; +var repnotify bool r_bIsKnockedBack; +var repnotify bool r_bIsPoisoned; +var repnotify bool r_bIsSlowed; +var repnotify bool r_bIsFrozen; +var repnotify bool r_bIsCCImmune; +var bool r_bIsRevealed; +var bool r_bIsWallHacking; +var bool r_bIsInSelfKnockBack; +var() bool m_bUseOutlines; +var bool m_bIsLeaping; +var bool m_bCanSpawnHealthNuggetsOnDeath; +var bool m_bCanAutoMountOnRespawn; +var bool c_bShowingDisarm; +var bool r_bFirstSpawnWave; +var bool m_bWaitForIntroAnimToEnd; +var bool m_bIntroAnimFinished; +var bool m_bAllowIntroWhiteOut; +var bool m_bIntroWhiteOutActive; +var bool m_bAirAccuracyPenalty; +var bool m_bCanBeHeadShot; +var(Mount) bool c_bHide3PWeaponMeshWhileMounted; +var(Mount) bool r_bMorphMounted; +var transient bool m_bShouldBeFirstPersonLastFrame; +var bool m_bFadeOutOnLifeAfterDeathTimerExpired; +var bool m_bUsesRecoil; +var bool m_bUsingSecondaryPhysicsAsset; +var transient bool m_bWasKilledByEnvironment; +var bool m_bShouldSmoothEyeHeight; +var bool m_bHasAstroBuff; +var bool r_bIsLifted; +var int r_nPhysTweenFlags; +var() string m_sGameplayPackage; +var TgInteractiveAudio m_AsInteractiveAudio; +var TgPawn r_GrabSource; +var float r_fGrabDuration; +var name r_GrabAttachSocket; +var Vector r_vGrabLocationOffset; +var Rotator r_rGrabRotationOffset; +var Vector m_vGrabDestRelLocation; +var Rotator m_rGrabDestRelRotation; +var int m_nPhysGrabPostureId; +var array s_GrabbedTargets; +var int r_nCannotBeGrabSource; +var array m_TeleportNotifyList; +var float r_fChargeInitialYaw; +var float r_fChargeInitialPitch; +var Vector r_vChargeInitialLocation; +var float r_fChargeSpeed; +var float r_fChargeRange; +var const int m_nBodyMeshAsmId; +var native const Pointer m_BodyMeshAssembly; +var native const Pointer m_DestroyedMeshAssembly; +var int m_n1PHeadMeshId; +var int r_nPawnId; +var float c_fLastUpdateTime; +var repnotify TgEffectManager r_EffectManager; +var array m_Properties; +var repnotify float r_CurrentPropValues[TG_PAWN_PROPERTIES]; +var float m_LocalPropValues[TG_PAWN_PROPERTIES]; +var float s_PropValuesRepResolution[TG_PAWN_PROPERTIES]; +var float s_DefaultPropValues[TG_PAWN_PROPERTIES]; +var repnotify float r_fCachedMaxHealth; +var TgAkActorUnoccluded m_AkActorUnoccluded; +var AkEvent c_AkAttackedFromBehind; +var AkEvent c_AkAttackedFromAbove; +var AkEvent c_AkAttackedFromSniper; +var config EEmoteCategoryChance m_EmoteChances; +var config EEmoteAbilityChance m_EmoteChancesAbility; +var int c_nEmoteCameraStackId; +var transient float m_fLastEmoteTime; +var float m_fEmoteGlobalCooldown; +var array m_fLastEmoteCatTimes; +var array m_fLastPlayerVGSEmoteTimes; +var float m_fEmoteNonLocalCooldown; +var float m_fLastNonLocalEmoteTime; +var float m_fSoftLandVelocityCutoff; +var float m_fHardLandVelocityCutoff; +var float s_nSpawnTime; +var int r_nPhysicalType; +var float r_fReconnectTime; +var array m_CurrentVortexList; +var array m_CurrentBlackHoleList; +var Class m_DeathDamageType; +var Vector m_DeathHitLocation; +var repnotify EquipDeviceInfo r_EquipDeviceInfo[33]; +var TgDevice m_EquippedDevices[33]; +var TgDeviceForm c_EquipForm[33]; +var name c_EquipFormState[33]; +var name c_nmInHandSocket; +var TgDevice c_CurrentTargetingDevice; +var TgDevice c_CurrentStartActionDevice; +var float c_fShouldStartActionTimeStamp; +var TgDevice m_CurrentInHandDevice; +var int c_nLockInHandToTargetingDevice; +var TgSpecialFx c_WorldBracketFX; +var int c_nLastProcessedFlashEventIdx; +var int r_nFirstValidFlashEventIdx; +var repnotify int r_nFlashQueIndex; +var int r_nFlashEvent[32]; +var Vector r_vFlashLocation[32]; +var Vector r_vFlashRayDir[32]; +var float r_vFlashRefireTime[32]; +var Actor r_pFlashTarget[32]; +var Class r_pFlashDamageType[32]; +var int r_nFlashFireInfo[32]; +var float r_fFireMultiMaxRange; +var int r_nFireMultiSeed; +var float r_fFireMultiSpreadAngle; +var float s_fTauntAmount; +var float m_fLastPainSound; +var() const export editinline LightEnvironmentComponent LightEnvironment; +var Vector FireLocationOffsets[33]; +var float BotTurnAcceleration; +var float BotTurnSpeed; +var float m_fMaxAimAssistStacks; +var float r_fStealthFadeRate; +var TgVisibilityVolume r_CurrentVisibilityVolumes[2]; +var repnotify TgDeployable r_ObscuringDeployables[10]; +var repnotify TgDeployable r_BlindingDeployables[10]; +var Actor r_VisibleThroughWallsInstigators[12]; +var Actor r_VisibleThroughStealthInstigators[12]; +var const float m_fVolumeStealthDisableTime; +var transient float c_fVolumeFadeValue; +var transient float c_fDistanceFadeValue; +var transient float c_fStealthFadeValue; +var transient float c_fObscuringDeployableFadeValue; +var transient float c_fBlindingDeployableFadeValue; +var transient float c_fCurrentFadeValue; +var transient float c_fDistanceLastCollidingVisionRange; +var float c_fLocalStealthFadeRate; +var TgSpecialFx c_TeleporterEnterFX; +var TgSpecialFx c_TeleporterExitFX; +var TgSpecialFx c_BlinkEnterFX; +var TgSpecialFx c_BlinkExitFX; +var TgSpecialFx c_DetectedFx; +var TgSpecialFx c_PetSuccessfulHitFx; +var const float c_fFxScaleSize; +var float m_fLifeAfterDeathSecs; +var Actor r_aDebugTarget; +var Actor r_aDebugDestination; +var Actor r_aDebugNextNav; +var Vector r_vDebugNextNavMeshPoint; +var Vector r_vDebugSpreadoutLocation; +var int r_nDebugHearingRange; +var int r_nDebugSightRange; +var int r_nDebugFOV; +var string r_sDebugAction; +var string r_sDebugName; +var string r_sDebugFactory; +var Vector s_vOneWayMovement; +var Vector r_vDown; +var float m_fExhaustedPercent; +var float m_fExhaustedPropModifier; +var float m_fExhaustedMinPropModifier; +var float m_fMountFrictionMultiplier; +var float m_fBackpedalPct; +var float m_fMountBackpedalPct; +var repnotify Actor r_TargetActor; +var Actor r_LockedTarget; +var int c_TargetMethod; +var TgPawn s_Pets[8]; +var TgPawn m_PetOwner; +var int c_ActivePets; +var Actor s_LastAttacker; +var Actor s_LastAttacked; +var Actor m_CurrentMeleeTarget; +var TgPawn r_Owner; +var int s_nSpawnerDeviceInstId; +var int s_nSpawnerDeviceModeId; +var repnotify DeathInfo r_DeathInfo; +var repnotify int r_nResetCharacter; +var repnotify int r_nLiveRespawn; +var name DyingStateName; +var int m_nSpawnLocationId; +var int m_nSpawnTableId; +var int m_nSpawnTableDetailId; +var PlayerStart m_LastPlayerStart; +var float m_fStandingHeight; +var float m_fStandingRadius; +var float m_fTargetCylinderHeight; +var float m_fTargetCylinderRadius; +var int r_nPacingType; +var Actor m_CurrentUseActor; +var float m_fBaseTranslationOffset; +var float m_fCrouchTranslationOffset; +var float r_fInCombatTime; +var float m_fInCombatTime; +var float m_fPhaseChangeTime; +var float m_fPhaseChangedTimeStamp; +var float m_PhaseChangeRemainingTime; +var repnotify int r_nPhase; +var int c_PreviousPhase; +var const int m_nInitHUDOverlayDisplayMask; +var const float m_InitHUDOverlayEnemyViewDist; +var array m_SimpleTransitionerNodes; +var array m_StanceTransitionerNodes; +var array m_FireBlendNodes; +var array m_CombatWarinessBlendNodes; +var array m_PostureBlendNodes; +var array m_HitOrMissBlendNodes; +var array m_AnimNodeEmoteSwitches; +var array m_EmoteBlendNodes; +var array m_EmoteSequenceNodes; +var array m_AnimNodeBlendByIntroductions; +var array m_AnimNodeBlendByHitReactions; +var array m_DeviceModeBlendNodes; +var array m_SkelControlLocks; +var array m_SkelControlLockNames; +var TgAnimNodeSlot m_UpperBodyAnimNode; +var AnimNodeSequence m_UpperBodyAnimNodeSequence; +var TgAnimNodeSlot m_FullBodyAnimNode; +var const transient int m_nYawOffset; +var PostureStack m_PostureStack; +var float m_fKnockbackMultiplier; +var transient TgBotFactorySpawnable s_PetBotFactory; +var transient array s_PetLocationList; +var float m_fTimeBetweenPetSpawns; +var array m_DeployPetsSocketNames; +var float m_ValidPetSpawnPointDistance; +var() float m_fRBPushStrengthMultiplier; +var() Vector2D m_fRBPushStrengthRange; +var Rotator m_PreviousNetReceiveRotation; +var Rotator m_TargetNetReceiveRotation; +var float m_RotationInterpRate; +var int m_nNetRotationCount; +var int m_nSmoothedRemoteViewPitch; +var int m_nPreviousReceivedRemoteViewPitch; +var int m_nTargetRemoteViewPitch; +var float m_PitchInterpRate; +var int m_nNetViewPitchCount; +var() float m_fSmoothCorrectionRate; +var int m_UnpackedRemoteViewPitch; +var int r_nPackedPitchYawForSpectate; +var native Pointer m_pStatsTracker; +var TgPawn m_LastDamager; +var int m_LastDamagerTimeStamp; +var array s_Damagers; +var float m_fJumpLandingTime; +var config float m_fCeilingTraceDistForWallJumping; +var const float m_fHorseJumpHeightIncrease; +var float m_fDazedStartTime; +var float m_fDazedDuration; +var float m_fDazedInterval; +var const int m_iDazedOrder; +var int m_iDazedNumControlPoints; +var array m_DazedKnots; +var array m_DazedRotatorControl; +var Vector2D m_vDazedMaxRotator; +var float m_fDazedStrafeStartDirection; +var array m_DazedStrafeChangeTimes; +var Vector2D m_vDazedMinMaxStrafeDuration; +var MaterialInstanceConstant m_DazedWineMIC; +var Actor r_StunTauntTarget; +var array m_LocalTouchingRespawnBeacons; +var TgPlayerController c_LocalPC; +var export editinline TgDropShadowDecalComponent c_PlayerCircle; +var MaterialInstanceConstant c_PlayerCircleMIC; +var Material c_CircleTemplate; +var Material c_CircleTemplateSpectator; +var export editinline TgDropShadowDecalComponent c_PlayerDropShadow; +var Material c_PlayerDropShadowTemplate; +var MaterialInstanceConstant c_PlayerDropShadowMIC; +var transient float c_fPlayerDropShadowFade; +var name c_PlayerDropShadowSocketName; +var const Class DefaultControlModuleClass; +var float m_fFaceRotationInterpTime; +var float m_fRemainingFaceRotationInterpTime; +var repnotify int r_nBigTeleportCount; +var int c_nTickCheckingState; +var export editinline TgManifestGroup c_AssetManifestGroup; +var TgSpecialFx c_LevelUpFX; +var int c_nLevelUpFxId; +var int s_nKillCombo; +var int s_nKillStreak; +var repnotify int r_nProfileId; +var repnotify int r_nSettingsOverrideId; +var repnotify int r_nSkinId; +var repnotify int r_nHeadSkinId; +var repnotify int r_nWeaponSkinId; +var repnotify int r_nMountSkinId; +var int r_nWardSkinId; +var native const Pointer m_pAmBot; +var native const Pointer m_pAmSkin; +var native const Pointer m_pAmHead; +var native const Pointer m_pAmWeaponSkin; +var native const Pointer m_pAmMountSkin; +var native const array m_pAmAllSkins; +var int c_StunnedPostureID; +var int c_FearedPostureID; +var int c_DisarmedPostureID; +var array s_Viewers; +var transient TgCarriedFlag m_CurrentFlag; +var transient float m_fLastCTFVolumeTimestamp; +var float m_fDamageTakenRTPC; +var float m_fDamageTakenMax; +var float m_fDamageTakenMaxSustainDuration; +var float m_fDamageTakenRTPCSustainDuration; +var() array m_OverlayInfosBody; +var() array m_OverlayInfosWeapon; +var const MaterialInstanceConstant m_ExecuteOverlayMaterialFriend; +var const MaterialInstanceConstant m_ExecuteOverlayMaterialEnemy; +var const MaterialInstanceConstant m_ShieldOverlayMaterialFriend; +var const MaterialInstanceConstant m_ShieldOverlayMaterialEnemy; +var const MaterialInstanceConstant m_ImmortalOverlayMaterialFriend; +var const MaterialInstanceConstant m_ImmortalOverlayMaterialEnemy; +var const MaterialInstanceConstant m_CharacterCustom1OverlayMaterial; +var const MaterialInstanceConstant m_FreezeOverlayMaterial; +var transient array m_SilhouetteInfos; +var() Class m_SilhouetteClass; +var array m_IgnoredHitPulseIndicies; +var() float m_fHitReactionAIPauseTime; +var() float m_fHitReactionBlendOutTime; +var() float m_fHitReactionTweenTime; +var() float m_fFadeOutTime; +var() float m_fFadeOutSpeed; +var TgSpecialFx m_DeathAnimFX; +var array m_HitReactionSkelControls; +var float m_fRemainingHitReactionPulseTime; +var() float m_fHitReactionPulseTime; +var() float m_fDisorientSpinRate; +var float m_fMaxSmoothNetUpdateDist; +var float m_fNoSmoothNetUpdateDist; +var float m_fSmoothNetUpdateTime; +var Vector m_vMeshTranslationOffset; +var float m_fInitialHealthPercent; +var float c_fHUDHealthPercent; +var float m_fDamageDealtPercentAI; +var float m_fDamageTakenPercentAI; +var array m_RecentHealList; +var const float m_fRecentHealExpireTime; +var int m_nCloneExpirationAttacksCount; +var float m_fCloneLeashRange; +var float m_fCloneExpirationTime; +var TgRepInfo_Player r_CloneParentPRI; +var TgAnimNodeBlendList m_SprintBlendNode; +var TgWeaponMeshActor m_WeaponMesh; +var export editinline TgSkeletalMeshComponent m_HeadMesh; +var int m_HeadSilhouetteIndex; +var int m_HeadOverlayIndex; +var repnotify int r_nBodyMeshOverride; +var repnotify int r_nHeadMeshOverride; +var int c_nCurrentHeadMeshID; +var() const float m_BobFootstepFactor; +var float Bob; +var float LandBob; +var float JumpBob; +var float AppliedBob; +var float BobTime; +var Vector WalkBob; +var float m_fOldZ; +var Vector AimSpot; +var Vector AimNoise; +var float m_fAimSpotsetLastRefresh; +var float m_fAimNoiseLastRefresh; +var float m_fAimPitch; +var export editinline AudioComponent m_TakeHitAudioComponent; +var export editinline AudioComponent m_PainAudioComponent; +var AkEvent m_TakeHitAkEvent; +var AkEvent m_TakeHeadShotAkEvent; +var AkEvent c_HealPlayAkEvent; +var AkEvent c_HealStopAkEvent; +var AkEvent m_PainAkEvent; +var float m_fLastPainEvent; +var float m_fPainEventCooldown; +var TgAnimNodePlayFireAnim m_FireAnimNode; +var TgEffectGroup m_StealthPulseEffectGroup; +var float m_fStealthPulseTime; +var float r_fKnockedBackFrictionOverride; +var Vector r_vKnockedBackVelocityOverride; +var int r_nIncomingImpactCount; +var float r_fReloadScale; +var float r_fRefireSpeed; +var TgPawn r_HealTarget; +var() export editinline TgParticleSystemComponent c_HealingBeamPSC; +var export editinline transient TgSkeletalMeshComponent m_OutlineMesh; +var MaterialInstanceConstant m_OutlineMaterial; +var TgNearObjectiveVolume m_NearObjectiveVolume; +var float r_fLeapAirControl; +var float m_fBaseLeapAirControl; +var float m_fKnockAirControl; +var array m_HomeguardVolumes; +var float m_LastHomeguardTime; +var export editinline TgSkeletalMeshComponent m_MountMesh; +var int m_nMountPostureId; +var float s_fEndStealthDamage; +var float s_fDamageTakenDuringStealth; +var() float m_fHUDOverlayZOffset; +var() float m_fHUDOverlayMorphMountedZOffset; +var int m_lastDamageSourceSlot; +var float m_fLastMoveTime; +var TgDeployable s_AttachedProjBlocker; +var() float m_fScaleMesh; +var() float m_fScaleMeshChangePerSecond; +var() float m_fScaleCollisionHeight; +var() float m_fScaleCollisionHeightChangePerSecond; +var() float m_fScaleCollisionRadius; +var() float m_fScaleCollisionRadiusChangePerSecond; +var int m_IntroPostureID; +var float r_fIntroTime; +var repnotify float r_fIntroOffset; +var float s_fIntroStartTime; +var float m_fIntroProgress; +var repnotify name r_ReplicatedState; +var array m_RespawnNodes; +var array m_BuffCampIntroNodes; +var name m_IntialIntroState; +var name m_nmIntroWhiteOutParamName; +var float m_fIntroWhiteOutScale; +var float m_fIntroWhiteOutUpTime; +var float m_fIntroWhiteOutDownTime; +var int r_nInsideTaskForceBase; +var TgSpecialFx m_HealFX3P; +var TgSpecialFx m_ShieldFX3P; +var float c_fNextTakeHitDisplayGroupTimestamp; +var float c_fNextTakeHitDisplayDelay; +var repnotify Actor r_PolymorphInstigator; +var int m_PrePolymorphHealth; +var int m_PolymorphMaxHealth; +var array m_RigidBodyImpacts; +var float c_fServerTimeStamp; +var float m_fZoomDistOverride; +var float m_fZoomDurationOverride; +var float c_fThreatBehind; +var float c_fThreatInEffectiveRange; +var float c_fThreatDistanceSquared; +var float c_fThreatDistance; +var float c_fThreatFocused; +var float c_fThreatFocusTarget; +var float c_fThreatSeenBy; +var float c_fThreatDamaged; +var float c_fThreatOcclusion; +var float c_fThreatBinnedOcclusion; +var float c_fThreatShotAt; +var float c_fThreatUlt; +var float c_fThreatLevelValue; +var float c_fThreatDecayResidual; +var float c_fLastThreatLevelValue; +var float c_fDBGThreatDistanceFeet; +var TgGameplayCurves m_GameplayCurves; +var int m_nSuccessfulHitSpecialFXId; +var array LLegBoneNames; +var array RLegBoneNames; +var array LArmBoneNames; +var array RArmBoneNames; +var array HeadBoneNames; +var name m_HeadShotComponentBoneName; +var export editinline TgHeadShotComponent m_HeadShotComponent; +var(Mount) float m_fMountScaleOverride; +var TgCameraShake m_LandCameraShake; +var TgCameraShake m_JumpCameraShake; +var float m_f1PTransitionFireDelay; +var transient float m_f1PTransitionFireDelayRemaining; +var float m_fEnergyChargeMultiplier; +var float c_fRecreateTrackedProjectilesTimer; +var float m_fRecoilSmoothRate; +var Rotator m_rCurrentRecoil; +var Rotator m_rSmoothedRecoil; +var float m_fSettleDelay; +var float m_fSettleSpeed; +var private float m_fRecoilSettleDeltaTimeOverflow; +var private float m_fRecoilSmoothDeltaTimeOverflow; +var int r_nVoicePackId; +var array m_bPendingWallStunNormals; +var float m_fTimeOnNonBaseableSurface; +var float m_fNonBaseableSurfaceAirControlDuration; +var float m_fNonBaseableSurfaceLerpTime; +var float m_fNonBaseableSurfaceRampUpMult; +var float m_fNonBaseableSurfaceMaxMoveAmount; +var float m_fNonBaseableSurfaceGraceTime; +var float m_fNonBaseableSurfaceExitMaxVelocity; +var float m_fNonBaseableSurfaceControlPercent; +var array m_OriginalMaterialsBody; +var array m_OriginalMaterialsHead; +var array m_OriginalMaterialsWeapon; +var array m_ReplacementMICsBody; +var array m_ReplacementMICsHead; +var array m_ReplacementMICsWeapon; +var float m_fEyeHeightSmoothFactor; +var float m_ExecutionMaterialFadeOutTimer; +var float m_ExecutionMaterialFadeOutDuration; +var ForceFeedbackWaveform m_DeathFFWaveform; +var TgDevice m_BuffDevice; +var TgDevice m_PrincessPresenceDebuffDevice; +var TgDevice m_PrincessPresenceBuffDevice; +var float m_fFlourishTimeout; +var int c_nCurrentVGSPlaying; +var array< delegate > m_SingleUseOn3pTransitionDelegates; +//var delegate __On3pTransitionEvent__Delegate; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetInitial) + r_bFirstSpawnWave, r_bIsBot, + r_bNeedPlaySpawnFx, r_fIntroOffset, + r_fIntroTime, r_nHeadSkinId, + r_nMountSkinId, r_nPacingType, + r_nPawnId, r_nPhysicalType, + r_nProfileId, r_nSettingsOverrideId, + r_nSkinId, r_nWardSkinId, + r_nWeaponSkinId, s_DefaultPropValues; + + // Pos:0x020 + if(((int(Role) == int(ROLE_Authority)) && !bDemoRecording) && (bNetInitial || bNetTimelapseInit) || bNetTimelapsePost) + r_nFirstValidFlashEventIdx; + + // Pos:0x06F + if((int(Role) == int(ROLE_Authority)) && bDemoRecording || !(bNetInitial || bNetTimelapseInit) || bNetTimelapsePost) + r_fFireMultiMaxRange, r_fFireMultiSpreadAngle, + r_nFireMultiSeed, r_nFlashEvent, + r_nFlashFireInfo, r_nFlashQueIndex, + r_nPackedFireMultiRanges, r_pFlashDamageType, + r_pFlashTarget, r_vFlashLocation, + r_vFlashRayDir, r_vFlashRefireTime; + + // Pos:0x0BE + if((int(Role) == int(ROLE_Authority)) && (!bNetOwner || bDemoRecording) || bNetTimelapsePost) + r_EquipDeviceInfo, r_bHasRespawnBeacon, + r_bInitialIsEnemy, r_bIsJumping, + r_bIsShortJump, r_eDesiredInHand; + + // Pos:0x0FE + if((int(Role) == int(ROLE_Authority)) && !bNetOwner || bDemoRecording) + r_CurrentVisibilityVolumes, r_bIsVolumeStealthFading, + r_bIsVolumeStealthed; + + // Pos:0x12F + if((int(Role) == int(ROLE_Authority)) && ((bNetOwner || bDemoRecording) || bNetTimelapse) || bNetTimelapsePost) + r_LockedTarget, r_StunTauntTarget, + r_bCanBePulled, r_bCanStartStealthInCombat, + r_bCrippled, r_bDisarmed, + r_bInGlobalOffhandCooldown, r_bIsBleeding, + r_bIsCCImmune, r_bIsDazed, + r_bIsFlashBang, r_bIsFrozen, + r_bIsInSelfKnockBack, r_bIsInStasis, + r_bIsKnockedBack, r_bIsMarked, + r_bIsOnFire, r_bIsPoisoned, + r_bIsRevealed, r_bIsRooted, + r_bIsSlowed, r_bIsWallHacking, + r_bNoEnergyCost, r_bSilenced, + r_fKnockedBackFrictionOverride, r_fLeapAirControl, + r_nIncomingImpactCount, r_vKnockedBackVelocityOverride; + + // Pos:0x17C + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_BlindingDeployables, r_CurrentPropValues, + r_DeathInfo, r_EffectManager, + r_HealTarget, r_ObscuringDeployables, + r_Owner, r_ReplicatedDeviceState, + r_TargetActor, r_VisibleThroughStealthInstigators, + r_VisibleThroughWallsInstigators, r_aDebugDestination, + r_aDebugNextNav, r_aDebugTarget, + r_bDebugShowAIDebug, r_bDisableVolumeStealth, + r_bInCombatFlag, r_bIsAFK, + r_bIsAnimInStrafeMode, r_bIsLifted, + r_bIsMounted, r_bMorphMounted, + r_eCurrentStunType, r_eDeathReason, + r_eIsStealthed, r_fCachedMaxHealth, + r_fInCombatTime, r_fStealthFadeRate, + r_nBigTeleportCount, r_nDebugFOV, + r_nDebugHearingRange, r_nDebugSightRange, + r_nInCombatNonce, r_nInsideTaskForceBase, + r_nLiveRespawn, r_nPhase, + r_nResetCharacter, r_sDebugAction, + r_sDebugFactory, r_sDebugName, + r_vDebugNextNavMeshPoint, r_vDebugSpreadoutLocation, + r_vDown; + + // Pos:0x19C + if(int(Role) == int(ROLE_Authority)) + r_CloneParentPRI, r_CurrentPolymorph, + r_GrabAttachSocket, r_GrabSource, + r_PolymorphInstigator, r_ReplicatedState, + r_bChargeIgnoreHumanoidBlocking, r_bGrabInterrupted, + r_bJustJumped, r_bPhysTweenInterrupted, + r_bUseMountPosture, r_bUsePhysFlyingForCharge, + r_eChargeState, r_eGrabState, + r_eTweenState, r_fChargeInitialPitch, + r_fChargeInitialYaw, r_fChargeRange, + r_fChargeSpeed, r_fGrabDuration, + r_fPhysTweenDuration, r_fRefireSpeed, + r_fReloadScale, r_nBodyMeshOverride, + r_nCannotBeGrabSource, r_nHeadMeshOverride, + r_nPhysTweenFlags, r_nVoicePackId, + r_rGrabRotationOffset, r_vChargeInitialLocation, + r_vGrabLocationOffset, r_vPhysTweenTarget; + + // Pos:0x1AD + if((int(Role) == int(ROLE_Authority)) && bDemoRecording) + r_bDemoCanPurchaseItems; + + // Pos:0x1CD + if(((((bDemoRecording || bNetTimelapse) || m_bAlwaysUseAccurateRotation) && !bSkipActorPropertyReplication || bNetInitial) && bReplicateMovement) && (int(RemoteRole) == int(ROLE_SimulatedProxy)) && bNetInitial || bUpdateSimulatedPosition) + r_bHasAccurateRotation, r_nPackedPitchYawForSpectate; + + // Pos:0x258 + if(((((int(Role) == int(ROLE_Authority)) && bNetDirty) && !bNetInitial) && !bNetTimelapse) && !bDemoRecording) + r_fReconnectTime; +} + +simulated delegate On3pTransitionEvent() +{ + //return; +} + +// Export UTgPawn::execGetTurnRotatorOverride(FFrame&, void* const) +native function bool GetTurnRotatorOverride(out int nYawOffset); + +// Export UTgPawn::execOnViewTargetChanged(FFrame&, void* const) +native function OnViewTargetChanged(optional Actor aNewViewTarget); + +// Export UTgPawn::execGetUISkillEqpSlotOverride(FFrame&, void* const) +native function int GetUISkillEqpSlotOverride(int nEquipSlot, optional bool bAltSlot = false); + +// Export UTgPawn::execGetLagPredictionTime(FFrame&, void* const) +native final function float GetLagPredictionTime(); + +// Export UTgPawn::execGetUnclampedLagPredictionTime(FFrame&, void* const) +native final function float GetUnclampedLagPredictionTime(); + +// Export UTgPawn::execGetTargetActor(FFrame&, void* const) +native function Actor GetTargetActor(); + +// Export UTgPawn::execGetTargetPawn(FFrame&, void* const) +native function TgPawn GetTargetPawn(); + +// Export UTgPawn::execSetTargetActor(FFrame&, void* const) +native function SetTargetActor(Actor Target); + +// Export UTgPawn::execUpdateShieldFX(FFrame&, void* const) +native function UpdateShieldFX(); + +// Export UTgPawn::execAreAnyOtherOffhandsLockingFiring(FFrame&, void* const) +native function bool AreAnyOtherOffhandsLockingFiring(TgDevice CurrentDevice); + +// Export UTgPawn::execUpdateClientDevices(FFrame&, void* const) +native function UpdateClientDevices(optional bool bForce = false); + +// Export UTgPawn::execGetDeviceByEqPoint(FFrame&, void* const) +native function TgDevice GetDeviceByEqPoint(int eEqPoint); + +// Export UTgPawn::execCreateDeviceForm(FFrame&, void* const) +native function TgDeviceForm CreateDeviceForm(EquipDeviceInfo Info); + +// Export UTgPawn::execDeviceFormChanged(FFrame&, void* const) +native function DeviceFormChanged(optional bool bForceReload = false); + +// Export UTgPawn::execApplyPawnSetup(FFrame&, void* const) +native function bool ApplyPawnSetup(); + +// Export UTgPawn::execInitializeDefaultProps(FFrame&, void* const) +native function InitializeDefaultProps(); + +// Export UTgPawn::execAddProperty(FFrame&, void* const) +native function AddProperty(int nPropId, float fBase, float fRaw, float FMin, float FMax); + +// Export UTgPawn::execGetProperty(FFrame&, void* const) +native function TgProperty GetProperty(int nPropIndex); + +// Export UTgPawn::execGetPropertyById(FFrame&, void* const) +native function TgProperty GetPropertyById(int nPropId); + +// Export UTgPawn::execSetProperty(FFrame&, void* const) +native function SetProperty(int nPropIndex, float fNewValue); + +// Export UTgPawn::execSetPropCurrentValue(FFrame&, void* const) +native function SetPropCurrentValue(int nPropIndex, float nNewValue); + +// Export UTgPawn::execResetProperties(FFrame&, void* const) +native function ResetProperties(); + +// Export UTgPawn::execGetSlowDiminishing(FFrame&, void* const) +native function float GetSlowDiminishing(); + +// Export UTgPawn::execIsDebuffImmune(FFrame&, void* const) +native function bool IsDebuffImmune(); + +// Export UTgPawn::execIsDamageOverTimeImmune(FFrame&, void* const) +native function bool IsDamageOverTimeImmune(); + +// Export UTgPawn::execIsSuperiorCrowdControlImmune(FFrame&, void* const) +native function bool IsSuperiorCrowdControlImmune(); + +// Export UTgPawn::execIsCrowdControlImmune(FFrame&, void* const) +native function bool IsCrowdControlImmune(); + +// Export UTgPawn::execCrowdControlBreak(FFrame&, void* const) +native function CrowdControlBreak(); + +// Export UTgPawn::execSpecialAOEImmunity(FFrame&, void* const) +native function bool SpecialAOEImmunity(Vector AOECenter, TgDeviceFire instigatingFiremode); + +// Export UTgPawn::execDrawScaledString(FFrame&, void* const) +native static final function int DrawScaledString(Canvas CanvasToUse, float StartX, float StartY, string NameString, Font NameFont, Color NameColor, float Scale); + +// Export UTgPawn::execDrawNameText(FFrame&, void* const) +native static final function int DrawNameText(Canvas CanvasToUse, float StartX, float StartY, string NameString, Font NameFont, Color NameColor, float Scale); + +// Export UTgPawn::execNativeCanvasProject(FFrame&, void* const) +native static final function Vector NativeCanvasProject(Canvas CanvasToUse, Vector vLocation); + +// Export UTgPawn::execFlashResetReplication(FFrame&, void* const) +native function FlashResetReplication(); + +// Export UTgPawn::execFlashFireMode(FFrame&, void* const) +native function FlashFireMode(int nDeviceInstanceId, int nFireModeNum); + +// Export UTgPawn::execFlashTargeting(FFrame&, void* const) +native function FlashTargeting(int nDeviceInstanceId, int nFireModeNum, optional int nEquipSlot, optional int nSocketIndex, optional bool bSuccessfulHit); + +// Export UTgPawn::execFlashBuildUp(FFrame&, void* const) +native function FlashBuildUp(int nDeviceInstanceId, int nFireModeNum, optional int nEquipSlot, optional int nSocketIndex, optional float fBuildupTime = 0.0000000); + +// Export UTgPawn::execFlashPlayEmote(FFrame&, void* const) +native function FlashPlayEmote(TgPawn.EEmote Emote, int ExtraInfo); + +// Export UTgPawn::execFlashPlayEmoteExcludeOwner(FFrame&, void* const) +native function FlashPlayEmoteExcludeOwner(TgPawn.EEmote Emote, int ExtraInfo); + +// Export UTgPawn::execFlashFire(FFrame&, void* const) +native function FlashFire(int nDeviceInstanceId, int nFireModeNum, Vector vNewLoc, optional int nEquipSlot, optional int nSocketIndex, optional bool bsuccesfulhit, optional float RefireTime); + +// Export UTgPawn::execFlashFireMulti(FFrame&, void* const) +native function FlashFireMulti(int nDeviceInstanceId, int nFireModeNum, Vector vAimStart, Vector vAimDir, array hitRanges, float fMaxRange, int nSeed, float fSpreadAngle, optional int nEquipSlot, optional int nSocketIndex, optional bool bsuccesfulhit, optional float RefireTime); + +// Export UTgPawn::execFlashFireNoSim(FFrame&, void* const) +native function FlashFireNoSim(int nDeviceInstanceId, int nFireModeNum, Vector vNewLoc, optional int nEquipSlot, optional int nSocketIndex, optional bool bsuccesfulhit, optional float RefireTime); + +// Export UTgPawn::execFlashArcing(FFrame&, void* const) +native function FlashArcing(int nDeviceInstanceId, int nFireModeNum, Vector vNewLoc, Vector vOldLoc, Actor Target, optional int nEquipSlot, optional int nSocketIndex, optional bool bsuccesfulhit); + +// Export UTgPawn::execFlashStopFire(FFrame&, void* const) +native function FlashStopFire(int nDeviceInstanceId, int nFireModeNum); + +// Export UTgPawn::execFlashStartFire(FFrame&, void* const) +native function FlashStartFire(int nDeviceInstanceId, int nFireModeNum, float RefireTime, Actor Target, optional int nAmmoRemaining = 0); + +// Export UTgPawn::execFlashReload(FFrame&, void* const) +native function FlashReload(int nDeviceInstanceId, float fReloadTime, optional int nAmmoRemaining = 0, optional int nReloadAnimType = 0); + +// Export UTgPawn::execFlashCooldown(FFrame&, void* const) +native function FlashCooldown(int nDeviceInstanceId, int nFireModeNum); + +// Export UTgPawn::execFlashCooldownDone(FFrame&, void* const) +native function FlashCooldownDone(int nDeviceInstanceId, int nFireModeNum); + +// Export UTgPawn::execFlashBlock(FFrame&, void* const) +native function FlashBlock(int nDeviceInstanceId, int nFireModeNum); + +// Export UTgPawn::execFlashBlockFx(FFrame&, void* const) +native function FlashBlockFx(int nDeviceInstanceId, int nFireModeNum); + +// Export UTgPawn::execFlashBlockDone(FFrame&, void* const) +native function FlashBlockDone(int nDeviceInstanceId, int nFireModeNum); + +// Export UTgPawn::execFlashInterrupt(FFrame&, void* const) +native function FlashInterrupt(int nDeviceInstanceId); + +// Export UTgPawn::execFlashSuccessfulHit(FFrame&, void* const) +native function FlashSuccessfulHit(int nDeviceInstanceId, int nFireModeNum, Actor Target, float DamageAmount, Vector HitLocation, Vector HitNormal, optional ExtraDamageInfo ExtraInfo); + +// Export UTgPawn::execFlashEventUpdate(FFrame&, void* const) +native function FlashEventUpdate(); + +// Export UTgPawn::execFlashModeEquipDone(FFrame&, void* const) +native function FlashModeEquipDone(int nDeviceInstanceId, int nFireModeNum); + +// Export UTgPawn::execFlashHitReaction(FFrame&, void* const) +native function FlashHitReaction(); + +// Export UTgPawn::execFlashDestruct(FFrame&, void* const) +native function FlashDestruct(int nDeviceInstanceId, Vector vLocation); + +// Export UTgPawn::execFlashChangeMesh(FFrame&, void* const) +native function FlashChangeMesh(); + +// Export UTgPawn::execFlashTeleportFx(FFrame&, void* const) +native function FlashTeleportFx(int nTeleportState, Vector vLocation); + +// Export UTgPawn::execFlashLevelupFx(FFrame&, void* const) +native function FlashLevelupFx(); + +// Export UTgPawn::execFlashPlaySpecialEffect(FFrame&, void* const) +native function FlashPlaySpecialEffect(int PlaySpecialEffectIndex, optional Vector vLocation, optional Vector vHitNormal, optional Actor inActor); + +// Export UTgPawn::execFlashSpawnSpecialFX(FFrame&, void* const) +native function FlashSpawnSpecialFX(int nFxID, Vector vLocation, optional Vector vNormal); + +// Export UTgPawn::execFlashPetSuccessfulHit(FFrame&, void* const) +native function FlashPetSuccessfulHit(int nFxID); + +// Export UTgPawn::execFlashGeneric1(FFrame&, void* const) +native function FlashGeneric1(int nDeviceInstanceId, int nFireModeNum, optional bool bIsSimulated = false, optional byte byExtraData = 0); + +// Export UTgPawn::execFlashGeneric2(FFrame&, void* const) +native function FlashGeneric2(int nDeviceInstanceId, int nFireModeNum, optional bool bIsSimulated = false, optional byte byExtraData = 0); + +// Export UTgPawn::execFlashGeneric3(FFrame&, void* const) +native function FlashGeneric3(int nDeviceInstanceId, int nFireModeNum, optional bool bIsSimulated = false, optional byte byExtraData = 0); + +// Export UTgPawn::execFlashGeneric4(FFrame&, void* const) +native function FlashGeneric4(int nDeviceInstanceId, int nFireModeNum, optional bool bIsSimulated = false, optional byte byExtraData = 0); + +// Export UTgPawn::execFlashGeneric5(FFrame&, void* const) +native function FlashGeneric5(int nDeviceInstanceId, int nFireModeNum, optional bool bIsSimulated = false, optional byte byExtraData = 0); + +// Export UTgPawn::execFlashTransitionIn(FFrame&, void* const) +native function FlashTransitionIn(int nDeviceInstanceId, int nFireModeNum, float fTransitionPercent, float fTotalTransitionTime); + +// Export UTgPawn::execFlashTransitionOut(FFrame&, void* const) +native function FlashTransitionOut(int nDeviceInstanceId, int nFireModeNum, float fTransitionPercent, float fTotalTransitionTime); + +// Export UTgPawn::execFlashHitDirection(FFrame&, void* const) +native function FlashHitDirection(Vector vLocation, int nDamageAmount, Class DamageType, const out ExtraDamageInfo ExtraInfo); + +// Export UTgPawn::execFlashKillOrAssist(FFrame&, void* const) +native function FlashKillOrAssist(Actor Target, bool bIsKill); + +// Export UTgPawn::execReapplyLevelEffectGroups(FFrame&, void* const) +native function ReapplyLevelEffectGroups(optional int nPrevLevel = 0, optional int nCurrentLevel = 0, optional bool bPreserveParams = false); + +// Export UTgPawn::execReapplyLoadoutEffects(FFrame&, void* const) +native function ReapplyLoadoutEffects(optional bool bKeepFiringMount); + +// Export UTgPawn::execbIsEditor(FFrame&, void* const) +native function bool bIsEditor(); + +// Export UTgPawn::execDrawClientDebug(FFrame&, void* const) +native function DrawClientDebug(); + +// Export UTgPawn::execShowCombo(FFrame&, void* const) +native function ShowCombo(int nPawnId, optional bool bCrit = false); + +// Export UTgPawn::execOnSpawnGatesOpened(FFrame&, void* const) +native function OnSpawnGatesOpened(); + +// Export UTgPawn::execTermRagdoll(FFrame&, void* const) +native function bool TermRagdoll(); + +// Export UTgPawn::execCancelEmote(FFrame&, void* const) +native function CancelEmote(optional bool bVerifyNoRelevantEmotes, optional TgAnimNodeEmoteSequence Exclude); + +// Export UTgPawn::execAddRemoveAnimSetList(FFrame&, void* const) +native function AddRemoveAnimSetList(array AnimSetList, bool bAdd); + +// Export UTgPawn::execGetGravityZ(FFrame&, void* const) +native function float GetGravityZ(); + +// Export UTgPawn::execIsJumpDisabled(FFrame&, void* const) +native function bool IsJumpDisabled(); + +// Export UTgPawn::execCanSeeActor(FFrame&, void* const) +native function bool CanSeeActor(Actor Other); + +// Export UTgPawn::execSetMeshVisibility(FFrame&, void* const) +native function SetMeshVisibility(bool bVisible); + +// Export UTgPawn::execGetSpecialFx(FFrame&, void* const) +native static function TgSpecialFx GetSpecialFx(int nSpecialFxId); + +// Export UTgPawn::execCreateMeshComponent(FFrame&, void* const) +native static function MeshComponent CreateMeshComponent(int nMeshId, optional MeshComponent DestComponent, optional bool bPartialFixup = false); + +// Export UTgPawn::execAddPet(FFrame&, void* const) +native function AddPet(TgPawn PetPawn); + +// Export UTgPawn::execSetPetOwner(FFrame&, void* const) +native function SetPetOwner(TgPawn petOwner); + +// Export UTgPawn::execKillPet(FFrame&, void* const) +native function KillPet(TgPawn PetPawn); + +// Export UTgPawn::execKillPets(FFrame&, void* const) +native function KillPets(); + +// Export UTgPawn::execIsMyPet(FFrame&, void* const) +native function bool IsMyPet(Actor Other); + +// Export UTgPawn::execReportPetDeath(FFrame&, void* const) +native function ReportPetDeath(TgPawn PetPawn); + +// Export UTgPawn::execKillOwnedBots(FFrame&, void* const) +native function KillOwnedBots(); + +// Export UTgPawn::execAdjustMeshTranslation(FFrame&, void* const) +native function AdjustMeshTranslation(); + +// Export UTgPawn::execSetTaskForceNumber(FFrame&, void* const) +native function SetTaskForceNumber(int nTaskForce); + +// Export UTgPawn::execGetTaskForceNumber(FFrame&, void* const) +native function byte GetTaskForceNumber(); + +// Export UTgPawn::execGetPRI(FFrame&, void* const) +native function TgRepInfo_Player GetPRI(); + +// Export UTgPawn::execGetAccuracyModifier(FFrame&, void* const) +native function float GetAccuracyModifier(optional float ClientMovementTimeStamp); + +// Export UTgPawn::execModifyAccuracyForReticleBloom(FFrame&, void* const) +native function ModifyAccuracyForReticleBloom(out float fAccuracy); + +// Export UTgPawn::execValidateStatsTracker(FFrame&, void* const) +native function ValidateStatsTracker(); + +// Export UTgPawn::execStatsCleanup(FFrame&, void* const) +native function StatsCleanup(); + +// Export UTgPawn::execBeginStats(FFrame&, void* const) +native function BeginStats(); + +// Export UTgPawn::execEndStats(FFrame&, void* const) +native function EndStats(); + +// Export UTgPawn::execTrackDamagedPlayer(FFrame&, void* const) +native function TrackDamagedPlayer(TgPawn TargetPawn, int nDeviceModeID, int nDamage, int nDamageType, bool bInHand); + +// Export UTgPawn::execTrackDamagedBot(FFrame&, void* const) +native function TrackDamagedBot(TgPawn TargetPawn, int nDeviceModeID, int nDamage, int nDamageType, optional bool bIsGod); + +// Export UTgPawn::execTrackKilledPlayer(FFrame&, void* const) +native function TrackKilledPlayer(int nDeviceModeID); + +// Export UTgPawn::execTrackFromPlayerDeath(FFrame&, void* const) +native function TrackFromPlayerDeath(int nDeviceModeID); + +// Export UTgPawn::execTrackKilledBot(FFrame&, void* const) +native function TrackKilledBot(int nDeviceModeID); + +// Export UTgPawn::execTrackHealing(FFrame&, void* const) +native function TrackHealing(int nDeviceModeID, float fDamage, float fMissingHealth, int nMaxHealth); + +// Export UTgPawn::execTrackSelfHealing(FFrame&, void* const) +native function TrackSelfHealing(float fHealing, float fMissingHealth, int nMaxHealth); + +// Export UTgPawn::execTrackBotHealing(FFrame&, void* const) +native function TrackBotHealing(int nDeviceModeID, float fDamage, float fMissingHealth, int nMaxHealth); + +// Export UTgPawn::execTrackFired(FFrame&, void* const) +native function TrackFired(int nDeviceModeID); + +// Export UTgPawn::execTrackCompleteKillInfo(FFrame&, void* const) +native function TrackCompleteKillInfo(int nKillerCharacterID, int nKillerDeviceModeID, int nVictimCharacterID, int nVictimDeviceModeID, Vector KillerLocation, Vector VictimLocation, Vector PetLocation, bool bPetKill); + +// Export UTgPawn::execRemoveTrackFired(FFrame&, void* const) +native function RemoveTrackFired(int nDeviceModeID); + +// Export UTgPawn::execTrackHit(FFrame&, void* const) +native function TrackHit(int nDeviceModeID, float fDistance, bool bHitPlayer); + +// Export UTgPawn::execTrackReleaseTime(FFrame&, void* const) +native function TrackReleaseTime(int nDeviceModeID, float fReleaseTime); + +// Export UTgPawn::execTrackTeamDamage(FFrame&, void* const) +native function TrackTeamDamage(int nDeviceModeID, int nDamage); + +// Export UTgPawn::execTrackSelfDamage(FFrame&, void* const) +native function TrackSelfDamage(int nDeviceModeID, int nDamage); + +// Export UTgPawn::execTrackTeamKill(FFrame&, void* const) +native function TrackTeamKill(int nDeviceModeID); + +// Export UTgPawn::execTrackSelfKill(FFrame&, void* const) +native function TrackSelfKill(int nDeviceModeID); + +// Export UTgPawn::execTrackDamageTaken(FFrame&, void* const) +native function TrackDamageTaken(TgPawn theInstigator, int nDamage, int nDamageType); + +// Export UTgPawn::execTrackDamageMitigated(FFrame&, void* const) +native function TrackDamageMitigated(int nAmount); + +// Export UTgPawn::execUpdateDamagers(FFrame&, void* const) +native function UpdateDamagers(TgPawn Damager); + +// Export UTgPawn::execUpdateEnemyAssists(FFrame&, void* const) +native function UpdateEnemyAssists(TgPawn Assister); + +// Export UTgPawn::execTrackKill(FFrame&, void* const) +native function TrackKill(TgPawn Killer); + +// Export UTgPawn::execTrackDeath(FFrame&, void* const) +native function TrackDeath(); + +// Export UTgPawn::execUpdateHUDScores(FFrame&, void* const) +native function UpdateHUDScores(); + +// Export UTgPawn::execSetPhase(FFrame&, void* const) +native function SetPhase(int nNewPhase); + +// Export UTgPawn::execPlaySoundCue(FFrame&, void* const) +native function PlaySoundCue(int nSoundCueId); + +// Export UTgPawn::execShouldPawnMeshBeHiddenThisTick(FFrame&, void* const) +native function bool ShouldPawnMeshBeHiddenThisTick(); + +// Export UTgPawn::execShouldInHandDeviceBeHiddenThisTick(FFrame&, void* const) +native function bool ShouldInHandDeviceBeHiddenThisTick(); + +// Export UTgPawn::execIsInvisibleToAI(FFrame&, void* const) +native function bool IsInvisibleToAI(); + +// Export UTgPawn::execIsHittable(FFrame&, void* const) +native function bool IsHittable(); + +// Export UTgPawn::execCalcVolumeFadeValue(FFrame&, void* const) +native function CalcVolumeFadeValue(float fDeltaTime); + +// Export UTgPawn::execCalcDistanceFadeValue(FFrame&, void* const) +native function CalcDistanceFadeValue(float fDeltaTime); + +// Export UTgPawn::execCalcStealthFadeValue(FFrame&, void* const) +native function CalcStealthFadeValue(float fDeltaTime); + +// Export UTgPawn::execCalcObscuringDeployableFadeValue(FFrame&, void* const) +native function CalcObscuringDeployableFadeValue(float fDeltaTime); + +// Export UTgPawn::execCalcBlindingDeployableFadeValue(FFrame&, void* const) +native function CalcBlindingDeployableFadeValue(float fDeltaTime); + +// Export UTgPawn::execOverrideDistanceFadeRange(FFrame&, void* const) +native function bool OverrideDistanceFadeRange(); + +// Export UTgPawn::execShouldShowHudOverlay(FFrame&, void* const) +native function bool ShouldShowHudOverlay(TgPawn PlayerPawn); + +// Export UTgPawn::execCanBeAffectedByVortices(FFrame&, void* const) +native function bool CanBeAffectedByVortices(); + +// Export UTgPawn::execForceRecalculateMaterial(FFrame&, void* const) +native function ForceRecalculateMaterial(); + +// Export UTgPawn::execRecalculateMaterial(FFrame&, void* const) +native function RecalculateMaterial(bool bIsFriendlyWithLocalPawn, optional bool bForce); + +// Export UTgPawn::execUpdateDropShadow(FFrame&, void* const) +native function UpdateDropShadow(); + +// Export UTgPawn::execUpdateStealthMaterialBasedOnNearbyEnemies(FFrame&, void* const) +native function UpdateStealthMaterialBasedOnNearbyEnemies(); + +// Export UTgPawn::execSetScalarMaterialParamOnMesh(FFrame&, void* const) +native function SetScalarMaterialParamOnMesh(MeshComponent MeshComp, string sName, float fValue, optional int nMaterialIndex = -1); + +// Export UTgPawn::execGetTerminalVelocity(FFrame&, void* const) +native function float GetTerminalVelocity(); + +// Export UTgPawn::execPlayCurrencyFx(FFrame&, void* const) +native function PlayCurrencyFx(TgRepInfo_Player sourcePRI, int nCurrency, int nMsgId); + +// Export UTgPawn::execPlayTeleportFx(FFrame&, void* const) +native function PlayTeleportFx(int nTeleportState, Vector vLoc); + +// Export UTgPawn::execPlaySpecialEffectEvent(FFrame&, void* const) +native function PlaySpecialEffectEvent(int PlaySpecialEffectIndex, Vector vLoc, Vector vHitNormal, optional Actor inActor); + +simulated function PrepareIntro() +{ + //return; +} + +simulated function PlaySpawnFx() +{ + //return; +} + +// Export UTgPawn::execOnPawnDied(FFrame&, void* const) +native function OnPawnDied(); + +// Export UTgPawn::execUpdatePhysicsAsset(FFrame&, void* const) +native function UpdatePhysicsAsset(); + +// Export UTgPawn::execGetDeviceByInstanceId(FFrame&, void* const) +native function TgDevice GetDeviceByInstanceId(int nDeviceInstanceId); + +// Export UTgPawn::execGetDeviceById(FFrame&, void* const) +native function TgDevice GetDeviceById(int nDeviceId); + +// Export UTgPawn::execShouldBlockFiringFrom1pSwitch(FFrame&, void* const) +native function bool ShouldBlockFiringFrom1pSwitch(); + +// Export UTgPawn::execGetCurrentInhandDevice(FFrame&, void* const) +native function TgDevice GetCurrentInhandDevice(); + +// Export UTgPawn::execIsStealthed(FFrame&, void* const) +native function bool IsStealthed(TgRepInfo_Player Viewer); + +// Export UTgPawn::execIsHardStealthed(FFrame&, void* const) +native function bool IsHardStealthed(); + +// Export UTgPawn::execIsHardRevealed(FFrame&, void* const) +native function bool IsHardRevealed(TgRepInfo_Player Viewer); + +// Export UTgPawn::execIsDetector(FFrame&, void* const) +native function bool IsDetector(); + +// Export UTgPawn::execPlayDetectedFx(FFrame&, void* const) +native function PlayDetectedFx(); + +// Export UTgPawn::execRemoveDetectedFx(FFrame&, void* const) +native function RemoveDetectedFx(); + +// Export UTgPawn::execNumVisibilityVolumesTouching(FFrame&, void* const) +native function int NumVisibilityVolumesTouching(); + +// Export UTgPawn::execFindVisibilityVolume(FFrame&, void* const) +native function int FindVisibilityVolume(TgVisibilityVolume VisVolume); + +// Export UTgPawn::execIsInSameVisibilityVolume(FFrame&, void* const) +native function bool IsInSameVisibilityVolume(TgPawn Other); + +// Export UTgPawn::execIsInSameVisibilityVolumeBeacon(FFrame&, void* const) +native function bool IsInSameVisibilityVolumeBeacon(TgRespawnBeaconExit Other); + +// Export UTgPawn::execGetATouchingVisibilityVolume(FFrame&, void* const) +native function TgVisibilityVolume GetATouchingVisibilityVolume(); + +// Export UTgPawn::execIsInFriendlyObscuringDeployable(FFrame&, void* const) +native final function bool IsInFriendlyObscuringDeployable(); + +// Export UTgPawn::execIsInCommonEnemyObscuringDeployable(FFrame&, void* const) +native final function bool IsInCommonEnemyObscuringDeployable(TgPawn Viewer); + +// Export UTgPawn::execIsInEnemyObscuringDeployable(FFrame&, void* const) +native final function bool IsInEnemyObscuringDeployable(TgPawn Viewer); + +// Export UTgPawn::execIsDeployableObscuredFrom(FFrame&, void* const) +native final function bool IsDeployableObscuredFrom(TgPawn Viewer); + +// Export UTgPawn::execIsDeployableBlindedFrom(FFrame&, void* const) +native final function bool IsDeployableBlindedFrom(Actor Viewer); + +// Export UTgPawn::execLocalPlayerHasLOS(FFrame&, void* const) +native function bool LocalPlayerHasLOS(); + +// Export UTgPawn::execGetLocation(FFrame&, void* const) +native function Vector GetLocation(); + +// Export UTgPawn::execKillDeployables(FFrame&, void* const) +native function KillDeployables(bool bAll); + +// Export UTgPawn::execSetMeshScalarValue(FFrame&, void* const) +native function SetMeshScalarValue(name ScalarParam, float ScalarValue); + +// Export UTgPawn::execSetMeshVectorValue(FFrame&, void* const) +native function SetMeshVectorValue(name ScalarParam, const out LinearColor ColorValue); + +// Export UTgPawn::execSetMeshComponentScalarValue(FFrame&, void* const) +native function SetMeshComponentScalarValue(MeshComponent theMesh, name ScalarParam, float ScalarValue); + +// Export UTgPawn::execSetMeshComponentVectorValue(FFrame&, void* const) +native function SetMeshComponentVectorValue(MeshComponent theMesh, name ScalarParam, const out LinearColor ColorValue); + +// Export UTgPawn::execGetHealthPercent(FFrame&, void* const) +native function float GetHealthPercent(); + +// Export UTgPawn::execGetManaPercent(FFrame&, void* const) +native function float GetManaPercent(); + +// Export UTgPawn::execSyncMana(FFrame&, void* const) +native function SyncMana(); + +// Export UTgPawn::execRegainPools(FFrame&, void* const) +native function RegainPools(float fDelta); + +// Export UTgPawn::execRegainManaPool(FFrame&, void* const) +native function RegainManaPool(float fDelta); + +// Export UTgPawn::execRegainEnergyPool(FFrame&, void* const) +native function RegainEnergyPool(float fDelta); + +// Export UTgPawn::execIsFriendlyWithLocalPawn(FFrame&, void* const) +native final function bool IsFriendlyWithLocalPawn(); + +// Export UTgPawn::execPlayFullBodyAnim(FFrame&, void* const) +native function bool PlayFullBodyAnim(name AnimName, float Rate, float BlendInTime, float BlendOutTime, bool bLooping, bool bOverride, optional bool bBlendOutIfVelocityIsGreaterThanZero, optional bool bHideInHandDevice); + +// Export UTgPawn::execPlayFullBodyLoopingAnimWithTransition(FFrame&, void* const) +native function float PlayFullBodyLoopingAnimWithTransition(name TransitionAnimName, name LoopingAnimName, float Rate, float BlendInTime, float BlendOutTime); + +// Export UTgPawn::execPlayUpperBodyAnim(FFrame&, void* const) +native function PlayUpperBodyAnim(name AnimName, float Rate, float BlendInTime, float BlendOutTime, bool bLooping); + +// Export UTgPawn::execCanMove(FFrame&, void* const) +native function bool CanMove(); + +// Export UTgPawn::execIsNonCombat(FFrame&, void* const) +native function bool IsNonCombat(); + +// Export UTgPawn::execLoadDazedMIC(FFrame&, void* const) +native function LoadDazedMIC(int FxId); + +// Export UTgPawn::execDazedStrafeOffset(FFrame&, void* const) +native function float DazedStrafeOffset(float OffsetFromWorldTime); + +// Export UTgPawn::execDazedRotatorOffset(FFrame&, void* const) +native function Vector2D DazedRotatorOffset(float OffsetFromWorldTime); + +// Export UTgPawn::execPlayCustomAnimation(FFrame&, void* const) +native function PlayCustomAnimation(int nAnimResId, bool bFullBody, float fTime); + +// Export UTgPawn::execUpdatePlayerStatUI(FFrame&, void* const) +native function UpdatePlayerStatUI(); + +// Export UTgPawn::execUpdateSpectatorStatUI(FFrame&, void* const) +native function UpdateSpectatorStatUI(); + +// Export UTgPawn::execForceUpdateComponents(FFrame&, void* const) +native function ForceUpdateComponents(optional bool bCollisionUpdate = false, optional bool bTransformOnly = true); + +// Export UTgPawn::execAdjustRespawnTime(FFrame&, void* const) +native function float AdjustRespawnTime(float InRespawnTime); + +// Export UTgPawn::execIsGod(FFrame&, void* const) +native function bool IsGod(); + +// Export UTgPawn::execIsGodDecoy(FFrame&, void* const) +native function bool IsGodDecoy(); + +// Export UTgPawn::execIsStatTrackable(FFrame&, void* const) +native function bool IsStatTrackable(); + +// Export UTgPawn::execTweenRelRotation(FFrame&, void* const) +native function Rotator TweenRelRotation(float fDeltaSeconds, Rotator currRel, Rotator targetRel); + +// Export UTgPawn::execResetSkelControls(FFrame&, void* const) +native function ResetSkelControls(SkeletalMeshComponent SkelComp); + +// Export UTgPawn::execIsGrabBreakable(FFrame&, void* const) +native function bool IsGrabBreakable(TgPawn.EGrabState tweenState); + +// Export UTgPawn::execIsInOffensiveGrab(FFrame&, void* const) +native function bool IsInOffensiveGrab(); + +// Export UTgPawn::execIsPerformingOffensiveGrab(FFrame&, void* const) +native function bool IsPerformingOffensiveGrab(); + +// Export UTgPawn::execIsTweenBreakable(FFrame&, void* const) +native function bool IsTweenBreakable(TgPawn.ETweenState tweenState); + +// Export UTgPawn::execIsInOffensiveTween(FFrame&, void* const) +native function bool IsInOffensiveTween(); + +// Export UTgPawn::execIsConfused(FFrame&, void* const) +native final function bool IsConfused(); + +// Export UTgPawn::execShouldBeFirstPersonThisTick(FFrame&, void* const) +native function bool ShouldBeFirstPersonThisTick(); + +// Export UTgPawn::execGiveEnergy(FFrame&, void* const) +native function GiveEnergy(float energy); + +// Export UTgPawn::execAllowBoostedJump(FFrame&, void* const) +native function bool AllowBoostedJump(); + +// Export UTgPawn::execUpdateRespawnBeaconReticule(FFrame&, void* const) +native final function UpdateRespawnBeaconReticule(optional bool bForce); + +// Export UTgPawn::execTryToPlayPainAkEvent(FFrame&, void* const) +private native final function TryToPlayPainAkEvent(); + +// Export UTgPawn::execSmoothCorrectionTranslationTick(FFrame&, void* const) +native function SmoothCorrectionTranslationTick(float DeltaSeconds, optional bool bForce); + +// Export UTgPawn::execSetUncompressedRemoteViewPitch(FFrame&, void* const) +native final function SetUncompressedRemoteViewPitch(int Pitch); + +// Export UTgPawn::execForceUpdateUncompressedRemoteYaw(FFrame&, void* const) +native final function ForceUpdateUncompressedRemoteYaw(); + +// Export UTgPawn::execReloadMeshAssemblies(FFrame&, void* const) +native function ReloadMeshAssemblies(); + +// Export UTgPawn::execGetChargeDirection(FFrame&, void* const) +native function Vector GetChargeDirection(); + +// Export UTgPawn::execTraceWorldPhysicalGeometry(FFrame&, void* const) +native simulated function PhysicalMaterial TraceWorldPhysicalGeometry(Vector StartLoc, Vector EndLoc, out Vector TraceHitLocation); + +// Export UTgPawn::execMySpawnGatesAreOpen(FFrame&, void* const) +native function bool MySpawnGatesAreOpen(); + +// Export UTgPawn::execSetAkPlayerHealthPercent(FFrame&, void* const) +native function SetAkPlayerHealthPercent(float fPercent); + +// Export UTgPawn::execUpdateReverbVolume(FFrame&, void* const) +native function UpdateReverbVolume(Vector WorldLocation, optional ReverbVolume VolumeTouched); + +// Export UTgPawn::execGetCurrentReverbVolume(FFrame&, void* const) +native function ReverbVolume GetCurrentReverbVolume(); + +// Export UTgPawn::execGettReverbVolumeForAudioAltitude(FFrame&, void* const) +native function ReverbVolume GettReverbVolumeForAudioAltitude(); + +// Export UTgPawn::execPostAkEvent(FFrame&, void* const) +native function PostAkEvent(AkEvent InAkEvent); + +// Export UTgPawn::execPostEmoteAkEvent(FFrame&, void* const) +native function PostEmoteAkEvent(AkEvent InAkEvent, TgPawn.EEmote Emote); + +// Export UTgPawn::execIsCinematicMode(FFrame&, void* const) +native function bool IsCinematicMode(); + +// Export UTgPawn::execGetHealth(FFrame&, void* const) +native function float GetHealth(); + +// Export UTgPawn::execGetMaxHealth(FFrame&, void* const) +native function float GetMaxHealth(); + +// Export UTgPawn::execGetMana(FFrame&, void* const) +native function float GetMana(); + +// Export UTgPawn::execGetMaxMana(FFrame&, void* const) +native function float GetMaxMana(); + +// Export UTgPawn::execGetShieldHealth(FFrame&, void* const) +native function float GetShieldHealth(); + +// Export UTgPawn::execGetMaxShield(FFrame&, void* const) +native function float GetMaxShield(); + +// Export UTgPawn::execCanTakeHealthDamage(FFrame&, void* const) +native function bool CanTakeHealthDamage(); + +// Export UTgPawn::execCanDealHeadShots(FFrame&, void* const) +native function bool CanDealHeadShots(); + +// Export UTgPawn::execCanTakeHeadShots(FFrame&, void* const) +native function bool CanTakeHeadShots(); + +// Export UTgPawn::execOnlyTakeHeadShots(FFrame&, void* const) +native function bool OnlyTakeHeadShots(); + +// Export UTgPawn::execIsImmuneToDamage(FFrame&, void* const) +native function bool IsImmuneToDamage(); + +// Export UTgPawn::execCanBeExecuted(FFrame&, void* const) +native function bool CanBeExecuted(); + +// Export UTgPawn::execIsImmuneToHealing(FFrame&, void* const) +native function bool IsImmuneToHealing(); + +// Export UTgPawn::execBuffDamage(FFrame&, void* const) +native function BuffDamage(Actor Target, TgEffectDamage Effect, ImpactInfo Impact, float fBaseDamage, out float fProratedAmount, out ExtraDamageInfo ExtraInfo); + +// Export UTgPawn::execGetSpecialDamageDealtPercentAI(FFrame&, void* const) +native function float GetSpecialDamageDealtPercentAI(); + +// Export UTgPawn::execGetSpecialDamageTakenPercentAI(FFrame&, void* const) +native function float GetSpecialDamageTakenPercentAI(); + +// Export UTgPawn::execMitigateHealthDamage(FFrame&, void* const) +native function MitigateHealthDamage(TgPawn pInstigator, TgEffectDamage Effect, ImpactInfo Impact, out float NewValue, out float fPercReduction); + +// Export UTgPawn::execGetDamageReductionPerc(FFrame&, void* const) +native function float GetDamageReductionPerc(TgDevice damageDev, TgEffectGroup eg); + +// Export UTgPawn::execTakeHealthDamage(FFrame&, void* const) +native function TakeHealthDamage(float fDamage, Controller InstigatedBy, Class DamageType, ImpactInfo Impact, ExtraDamageInfo ExtraInfo, optional Actor DamageCauser); + +// Export UTgPawn::execWillHitSuccessfully(FFrame&, void* const) +native function bool WillHitSuccessfully(Actor aInstigator, ImpactInfo Impact); + +// Export UTgPawn::execCanBeLifestealInstigator(FFrame&, void* const) +native function bool CanBeLifestealInstigator(); + +// Export UTgPawn::execCanBeLifestealTarget(FFrame&, void* const) +native function bool CanBeLifestealTarget(); + +// Export UTgPawn::execCanTakeManaDamage(FFrame&, void* const) +native function bool CanTakeManaDamage(); + +// Export UTgPawn::execTakeManaDamage(FFrame&, void* const) +native function TakeManaDamage(float fDamage, Controller InstigatedBy, Class DamageType, ImpactInfo Impact, ExtraDamageInfo ExtraInfo, optional Actor DamageCauser); + +// Export UTgPawn::execCanTakeShieldDamage(FFrame&, void* const) +native function bool CanTakeShieldDamage(); + +// Export UTgPawn::execCanUsePersonalShield(FFrame&, void* const) +native function bool CanUsePersonalShield(); + +// Export UTgPawn::execTakePersonalShieldDamage(FFrame&, void* const) +native function int TakePersonalShieldDamage(float fDamage, Controller InstigatedBy, Class DamageType, ImpactInfo Impact, ExtraDamageInfo ExtraInfo, optional Actor DamageCauser); + +// Export UTgPawn::execShieldDamageAppliesToHealth(FFrame&, void* const) +native function bool ShieldDamageAppliesToHealth(); + +// Export UTgPawn::execTakeStealthDamage(FFrame&, void* const) +native function TakeStealthDamage(float fDamage); + +// Export UTgPawn::execGetDamageToLeaveStealth(FFrame&, void* const) +native function float GetDamageToLeaveStealth(); + +// Export UTgPawn::execHandleNotificationsForAI(FFrame&, void* const) +native function HandleNotificationsForAI(float fStatChange, TgPawn InstigatorPawn); + +// Export UTgPawn::execGetPropCurrentValue(FFrame&, void* const) +native function float GetPropCurrentValue(int nPropIndex); + +// Export UTgPawn::execGetPropCurrentValueByName(FFrame&, void* const) +native function float GetPropCurrentValueByName(string propName); + +// Export UTgPawn::execGetPropIndex(FFrame&, void* const) +native function int GetPropIndex(int nPropId); + +// Export UTgPawn::execGetMarkedPercent(FFrame&, void* const) +native function float GetMarkedPercent(Actor InstigatorPawn); + +// Export UTgPawn::execGetMarkedPercentInhand(FFrame&, void* const) +native function float GetMarkedPercentInhand(Actor InstigatorPawn); + +// Export UTgPawn::execIsMarkedForMarkShot(FFrame&, void* const) +native function bool IsMarkedForMarkShot(); + +// Export UTgPawn::execGetEffectManager(FFrame&, void* const) +native function TgEffectManager GetEffectManager(); + +// Export UTgPawn::execGetDesignType(FFrame&, void* const) +native function TgCombatActor.GameplayDesignType GetDesignType(); + +// Export UTgPawn::execIsPet(FFrame&, void* const) +native function bool IsPet(); + +// Export UTgPawn::execGetPetOwner(FFrame&, void* const) +native function Actor GetPetOwner(); + +// Export UTgPawn::execCheckUiVolumeTriggers(FFrame&, void* const) +native function CheckUiVolumeTriggers(); + +// Export UTgPawn::execGetTargetCenter(FFrame&, void* const) +native function Vector GetTargetCenter(); + +// Export UTgPawn::execNativeReplicatedEvent(FFrame&, void* const) +native function bool NativeReplicatedEvent(name VarName); + +// Export UTgPawn::execOnLevelUp(FFrame&, void* const) +native function OnLevelUp(); + +// Export UTgPawn::execOnProjectileExploded(FFrame&, void* const) +native function OnProjectileExploded(TgProjectile ExplodedProjectile, Actor HitActor, Vector HitLocation, Vector HitNormal); + +// Export UTgPawn::execOnProjectileHitTarget(FFrame&, void* const) +native function OnProjectileHitTarget(TgProjectile HittingProjectile, Vector HitLocation, Vector HitNormal, out byte bDestroyProjectile); + +// Export UTgPawn::execOnPostureChange(FFrame&, void* const) +native function OnPostureChange(); + +// Export UTgPawn::execNativeGetCollisionHeight(FFrame&, void* const) +native function float NativeGetCollisionHeight(); + +// Export UTgPawn::execNativeGetCollisionRadius(FFrame&, void* const) +native function float NativeGetCollisionRadius(); + +// Export UTgPawn::execOnSetPlayerLevel(FFrame&, void* const) +native function OnSetPlayerLevel(TgSeqAct_SetPlayerLevel Action); + +// Export UTgPawn::execGetAirControl(FFrame&, void* const) +native function float GetAirControl(); + +// Export UTgPawn::execCanKnockbackAffectAC(FFrame&, void* const) +native function bool CanKnockbackAffectAC(); + +// Export UTgPawn::execIsInFireLock(FFrame&, void* const) +native function bool IsInFireLock(); + +// Export UTgPawn::execConsumePowerPool(FFrame&, void* const) +native function ConsumePowerPool(TgDevice Dev, int nPacingType, float fAmount); + +// Export UTgPawn::execGetCurrentPowerPoolValue(FFrame&, void* const) +native function float GetCurrentPowerPoolValue(int nPacingType); + +// Export UTgPawn::execGetMaxPowerPoolValue(FFrame&, void* const) +native function float GetMaxPowerPoolValue(int nPacingType); + +// Export UTgPawn::execServerUpdateLockedTarget(FFrame&, void* const) +reliable server native function bool ServerUpdateLockedTarget(Actor Locked); + +// Export UTgPawn::execHasDeathPostureAnimation(FFrame&, void* const) +native exec function bool HasDeathPostureAnimation(); + +// Export UTgPawn::execUpdateMountScale(FFrame&, void* const) +native function UpdateMountScale(bool bIsMounted); + +// Export UTgPawn::execGetPhysicalPower(FFrame&, void* const) +native function float GetPhysicalPower(); + +// Export UTgPawn::execGetMagicalPower(FFrame&, void* const) +native function float GetMagicalPower(); + +// Export UTgPawn::execGetUtilityPower(FFrame&, void* const) +native function float GetUtilityPower(); + +// Export UTgPawn::execGetPhysicalPowerBot(FFrame&, void* const) +native function float GetPhysicalPowerBot(); + +// Export UTgPawn::execGetMagicalPowerBot(FFrame&, void* const) +native function float GetMagicalPowerBot(); + +// Export UTgPawn::execGetUtilityPowerBot(FFrame&, void* const) +native function float GetUtilityPowerBot(); + +// Export UTgPawn::execGetPhysicalPowerItem(FFrame&, void* const) +native function float GetPhysicalPowerItem(); + +// Export UTgPawn::execGetMagicalPowerItem(FFrame&, void* const) +native function float GetMagicalPowerItem(); + +// Export UTgPawn::execGetUtilityPowerItem(FFrame&, void* const) +native function float GetUtilityPowerItem(); + +// Export UTgPawn::execGetLifeSteal(FFrame&, void* const) +native function float GetLifeSteal(); + +// Export UTgPawn::execGetLifeStealInstigatorOnly(FFrame&, void* const) +native function float GetLifeStealInstigatorOnly(TgPawn InstigatorPawn); + +// Export UTgPawn::execGetVengeanceLifesteal(FFrame&, void* const) +native function float GetVengeanceLifesteal(TgPawn Target); + +// Export UTgPawn::execGetCombatDurationReduction(FFrame&, void* const) +native function float GetCombatDurationReduction(); + +// Export UTgPawn::execGetHealthRegen(FFrame&, void* const) +native function float GetHealthRegen(); + +// Export UTgPawn::execGetManaRegen(FFrame&, void* const) +native function float GetManaRegen(); + +// Export UTgPawn::execGetEnergyRegen(FFrame&, void* const) +native function float GetEnergyRegen(); + +// Export UTgPawn::execGetEnergy(FFrame&, void* const) +native function float GetEnergy(); + +// Export UTgPawn::execGetMaxEnergy(FFrame&, void* const) +native function float GetMaxEnergy(); + +// Export UTgPawn::execGetMaxHealthWithoutPercentBuff(FFrame&, void* const) +native function float GetMaxHealthWithoutPercentBuff(); + +// Export UTgPawn::execGetMaxShieldHealth(FFrame&, void* const) +native function float GetMaxShieldHealth(); + +// Export UTgPawn::execGetVisionRange(FFrame&, void* const) +native function float GetVisionRange(); + +// Export UTgPawn::execGetHealingTakenPerc(FFrame&, void* const) +native function float GetHealingTakenPerc(); + +// Export UTgPawn::execGetHealingTakenOthersPerc(FFrame&, void* const) +native function float GetHealingTakenOthersPerc(); + +// Export UTgPawn::execApplyDamageTakenScaling(FFrame&, void* const) +native function float ApplyDamageTakenScaling(float Value); + +// Export UTgPawn::execGetProtectionCC(FFrame&, void* const) +native function float GetProtectionCC(); + +// Export UTgPawn::execGetDamageTakenPerc(FFrame&, void* const) +native function float GetDamageTakenPerc(); + +// Export UTgPawn::execGetDamageTakenPercInhand(FFrame&, void* const) +native function float GetDamageTakenPercInhand(); + +// Export UTgPawn::execGetDamageTakenPercAOE(FFrame&, void* const) +native function float GetDamageTakenPercAOE(); + +// Export UTgPawn::execGetDamageTakenPercDirect(FFrame&, void* const) +native function float GetDamageTakenPercDirect(); + +// Export UTgPawn::execGetDamageTakenPercPhys(FFrame&, void* const) +native function float GetDamageTakenPercPhys(); + +// Export UTgPawn::execGetDamageCapPercMaxHP(FFrame&, void* const) +native function float GetDamageCapPercMaxHP(); + +// Export UTgPawn::execGetDamageCapPercCurHP(FFrame&, void* const) +native function float GetDamageCapPercCurHP(); + +// Export UTgPawn::execGetDamageDealtPerc(FFrame&, void* const) +native function float GetDamageDealtPerc(); + +// Export UTgPawn::execGetDamageDealtPercBasicAttack(FFrame&, void* const) +native function float GetDamageDealtPercBasicAttack(); + +// Export UTgPawn::execGetDamageDealtPercPhysical(FFrame&, void* const) +native function float GetDamageDealtPercPhysical(); + +// Export UTgPawn::execGetDamageDealtPercMagical(FFrame&, void* const) +native function float GetDamageDealtPercMagical(); + +// Export UTgPawn::execGetDamageDealtPercDeployableTarget(FFrame&, void* const) +native function float GetDamageDealtPercDeployableTarget(); + +// Export UTgPawn::execGetDamageDealtPercShieldTarget(FFrame&, void* const) +native function float GetDamageDealtPercShieldTarget(); + +// Export UTgPawn::execGetDamageDealtFlat(FFrame&, void* const) +native function float GetDamageDealtFlat(); + +// Export UTgPawn::execGetHealBlock(FFrame&, void* const) +native function float GetHealBlock(); + +// Export UTgPawn::execGetMinimapRequireLOS(FFrame&, void* const) +native function bool GetMinimapRequireLOS(); + +// Export UTgPawn::execGetBackpedalPercent(FFrame&, void* const) +native function float GetBackpedalPercent(); + +// Export UTgPawn::execGetUIGroundSpeed(FFrame&, void* const) +native function float GetUIGroundSpeed(); + +// Export UTgPawn::execGetProcChanceMultiplier(FFrame&, void* const) +native function float GetProcChanceMultiplier(); + +// Export UTgPawn::execSetSpawnHealth(FFrame&, void* const) +native function SetSpawnHealth(); + +// Export UTgPawn::execSetSpawnMana(FFrame&, void* const) +native function SetSpawnMana(); + +// Export UTgPawn::execSetSpawnEnergy(FFrame&, void* const) +native function SetSpawnEnergy(); + +// Export UTgPawn::execPawnOnDamaged(FFrame&, void* const) +native function PawnOnDamaged(out OnDamagedParams Params); + +// Export UTgPawn::execPawnOnPreDamageMitigation(FFrame&, void* const) +native function PawnOnPreDamageMitigation(TgPawn attacker, TgEffectGroup eg, out float fDamage, int nPropertyId); + +// Export UTgPawn::execPawnOnDamageMitigation(FFrame&, void* const) +native function PawnOnDamageMitigation(TgPawn attacker, TgEffectGroup eg, out float fDamage, int nPropertyId); + +// Export UTgPawn::execPawnOnHealed(FFrame&, void* const) +native function PawnOnHealed(out OnHealedParams Params); + +// Export UTgPawn::execPawnOnKilled(FFrame&, void* const) +native function PawnOnKilled(Actor pVictim); + +// Export UTgPawn::execPawnOnAssisted(FFrame&, void* const) +native function PawnOnAssisted(Actor pVictim); + +// Export UTgPawn::execPawnOnRevive(FFrame&, void* const) +native function PawnOnRevive(); + +// Export UTgPawn::execPawnOnEnterCombat(FFrame&, void* const) +native function PawnOnEnterCombat(); + +// Export UTgPawn::execPawnOnExitCombat(FFrame&, void* const) +native function PawnOnExitCombat(); + +// Export UTgPawn::execPawnOnBecomeStill(FFrame&, void* const) +native function PawnOnBecomeStill(); + +// Export UTgPawn::execPawnOnEndStill(FFrame&, void* const) +native function PawnOnEndStill(); + +// Export UTgPawn::execPawnOnXp(FFrame&, void* const) +native function PawnOnXp(out int nXp, Actor Source); + +// Export UTgPawn::execPawnOnCurrency(FFrame&, void* const) +native function PawnOnCurrency(out int nCurrency, Actor Source); + +// Export UTgPawn::execPawnOnTaskforceRemove(FFrame&, void* const) +native function PawnOnTaskforceRemove(TgRepInfo_TaskForce tf); + +// Export UTgPawn::execPawnOnTaskforceAdd(FFrame&, void* const) +native function PawnOnTaskforceAdd(TgRepInfo_TaskForce tf); + +// Export UTgPawn::execPawnOnModifyEffectLifeTime(FFrame&, void* const) +native function PawnOnModifyEffectLifeTime(TgEffectGroup eg, out float fLifeTime); + +// Export UTgPawn::execPawnCanDisplayImmuneMessage(FFrame&, void* const) +native function bool PawnCanDisplayImmuneMessage(); + +// Export UTgPawn::execPawnOnStartSprint(FFrame&, void* const) +native function PawnOnStartSprint(); + +// Export UTgPawn::execPawnOnEndSprint(FFrame&, void* const) +native function PawnOnEndSprint(); + +// Export UTgPawn::execPawnOnPetSuccessfulHit(FFrame&, void* const) +native function PawnOnPetSuccessfulHit(int nFxID); + +// Export UTgPawn::execPawnOnLand(FFrame&, void* const) +native function PawnOnLand(); + +// Export UTgPawn::execPawnOnLandAfterJump(FFrame&, void* const) +native function PawnOnLandAfterJump(); + +// Export UTgPawn::execPawnOnLandAfterLeap(FFrame&, void* const) +native function PawnOnLandAfterLeap(); + +// Export UTgPawn::execPawnOnDamageInterruptedStealth(FFrame&, void* const) +native function PawnOnDamageInterruptedStealth(); + +// Export UTgPawn::execPawnOnPetAdded(FFrame&, void* const) +native function PawnOnPetAdded(TgPawn Pet, TgPawn petOwner); + +// Export UTgPawn::execPawnOnPetDied(FFrame&, void* const) +native function PawnOnPetDied(TgPawn Pet, TgPawn petOwner); + +// Export UTgPawn::execPawnOnTeleported(FFrame&, void* const) +native function PawnOnTeleported(TgSpawnTeleporterEntrance From, TgSpawnTeleporterExit To, Vector OriginalPawnLocation); + +// Export UTgPawn::execDeviceOnStartBuildup(FFrame&, void* const) +native function DeviceOnStartBuildup(TgDevice Dev); + +// Export UTgPawn::execDeviceOnStopBuildup(FFrame&, void* const) +native function DeviceOnStopBuildup(TgDevice Dev, optional bool WasInterrupted = false); + +// Export UTgPawn::execDeviceOnFire(FFrame&, void* const) +native function DeviceOnFire(TgDevice Dev); + +// Export UTgPawn::execProjectileOnFire(FFrame&, void* const) +native function ProjectileOnFire(TgProjectile Proj); + +// Export UTgPawn::execDeviceOnStartFire(FFrame&, void* const) +native function DeviceOnStartFire(TgDevice Dev); + +// Export UTgPawn::execDeviceOnStopFire(FFrame&, void* const) +native function DeviceOnStopFire(TgDevice Dev, optional bool WasInterrupted = false); + +// Export UTgPawn::execDeviceOnStartCooldown(FFrame&, void* const) +native function DeviceOnStartCooldown(TgDevice Dev, float fCooldownTime); + +// Export UTgPawn::execDeviceOnStopCooldown(FFrame&, void* const) +native function DeviceOnStopCooldown(TgDevice Dev); + +// Export UTgPawn::execDeviceOnPostHit(FFrame&, void* const) +native function DeviceOnPostHit(TgDevice Dev); + +// Export UTgPawn::execDeviceOnHit(FFrame&, void* const) +native function DeviceOnHit(TgDevice Dev, const out ImpactInfo Impact); + +// Export UTgPawn::execDeviceOnHitSpecial(FFrame&, void* const) +native function DeviceOnHitSpecial(TgDevice Dev, const out ImpactInfo Impact, int nHitSpecialSituationalType); + +// Export UTgPawn::execDeviceOnDamaged(FFrame&, void* const) +native function DeviceOnDamaged(out OnDamagedParams Params); + +// Export UTgPawn::execDeviceOnHealed(FFrame&, void* const) +native function DeviceOnHealed(out OnHealedParams Params); + +// Export UTgPawn::execDeviceOnKilled(FFrame&, void* const) +native function DeviceOnKilled(TgDevice Dev, const out ImpactInfo Impact, float fDamage); + +// Export UTgPawn::execDeviceAdjustDamage(FFrame&, void* const) +native function DeviceAdjustDamage(out AdjustDamageParams Params, out float fDamage); + +// Export UTgPawn::execDeviceAdjustHeal(FFrame&, void* const) +native function DeviceAdjustHeal(const out AdjustHealParams Params, out float fHeal); + +// Export UTgPawn::execDeviceHasEnoughPowerPool(FFrame&, void* const) +native function bool DeviceHasEnoughPowerPool(TgDevice Dev, byte FireModeNum); + +// Export UTgPawn::execDeviceOnSetFireMode(FFrame&, void* const) +native function DeviceOnSetFireMode(TgDevice Dev); + +// Export UTgPawn::execDeployableOnDeployed(FFrame&, void* const) +native function DeployableOnDeployed(TgDeployable dep); + +// Export UTgPawn::execDeployableOnDestroyed(FFrame&, void* const) +native function DeployableOnDestroyed(TgDeployable dep); + +// Export UTgPawn::execDeployableOnApplyEffect(FFrame&, void* const) +native function DeployableOnApplyEffect(TgDeployable dep, Actor HitActor); + +// Export UTgPawn::execDeployableOnRemoveEffect(FFrame&, void* const) +native function DeployableOnRemoveEffect(TgDeployable dep, Actor HitActor); + +// Export UTgPawn::execEffectGroupOnSetActive(FFrame&, void* const) +native function EffectGroupOnSetActive(bool bActive, bool bRemoving, TgEffectGroup EffectGroup); + +// Export UTgPawn::execRetouchAllVolumes(FFrame&, void* const) +native function RetouchAllVolumes(); + +// Export UTgPawn::execSwapToDestroyedMesh(FFrame&, void* const) +native function SwapToDestroyedMesh(); + +// Export UTgPawn::execSwapToLiveMesh(FFrame&, void* const) +native function SwapToLiveMesh(); + +// Export UTgPawn::execOnMeshSwapped(FFrame&, void* const) +native function OnMeshSwapped(); + +// Export UTgPawn::execPostPawnSetupServer(FFrame&, void* const) +native function PostPawnSetupServer(); + +// Export UTgPawn::execCacheHitReactionSkelControls(FFrame&, void* const) +native function CacheHitReactionSkelControls(); + +// Export UTgPawn::execInitializeOverlayMeshComponent(FFrame&, void* const) +native function int InitializeOverlayMeshComponent(SkeletalMeshComponent InMesh, optional bool bIs1POverlay); + +// Export UTgPawn::execInitializeOverlayIndexBody(FFrame&, void* const) +native function int InitializeOverlayIndexBody(SkeletalMeshComponent ParentMesh, bool bIs1POverlay); + +// Export UTgPawn::execInitializeOverlayIndexWeapon(FFrame&, void* const) +native function int InitializeOverlayIndexWeapon(SkeletalMeshComponent ParentMesh, bool bIs1POverlay); + +// Export UTgPawn::execInitializeOverlayInfo(FFrame&, void* const) +native function MaterialInstanceConstant InitializeOverlayInfo(TgPawn.OverlayMICType Type, Texture NormalMap, Texture MaskMap); + +// Export UTgPawn::execGetOverlayMaterial(FFrame&, void* const) +native function MaterialInstanceConstant GetOverlayMaterial(TgPawn.OverlayMICType Type); + +// Export UTgPawn::execGetOverlayDepthPriority(FFrame&, void* const) +native function Scene.ESceneDepthPriorityGroup GetOverlayDepthPriority(TgPawn.OverlayMICType Type); + +// Export UTgPawn::execIs1PBodyOverlay(FFrame&, void* const) +native function bool Is1PBodyOverlay(TgPawn.OverlayMICType Type); + +// Export UTgPawn::execIs1PWeaponOverlay(FFrame&, void* const) +native function bool Is1PWeaponOverlay(TgPawn.OverlayMICType Type); + +// Export UTgPawn::execIs3PBodyOverlay(FFrame&, void* const) +native function bool Is3PBodyOverlay(TgPawn.OverlayMICType Type); + +// Export UTgPawn::execIs3PWeaponOverlay(FFrame&, void* const) +native function bool Is3PWeaponOverlay(TgPawn.OverlayMICType Type); + +// Export UTgPawn::execReinitializeOverlays(FFrame&, void* const) +native function ReinitializeOverlays(); + +// Export UTgPawn::execRemoveOverlayInfo(FFrame&, void* const) +native function bool RemoveOverlayInfo(SkeletalMeshComponent ParentMesh); + +// Export UTgPawn::execSwapOverlayMICsBody(FFrame&, void* const) +native function SwapOverlayMICsBody(TgPawn.OverlayMICType Type); + +// Export UTgPawn::execSwapOverlayMICsWeapon(FFrame&, void* const) +native function SwapOverlayMICsWeapon(TgPawn.OverlayMICType Type); + +// Export UTgPawn::execUpdateOverlayVisibilityBody(FFrame&, void* const) +native function UpdateOverlayVisibilityBody(); + +// Export UTgPawn::execUpdateOverlayVisibilityWeapon(FFrame&, void* const) +native function UpdateOverlayVisibilityWeapon(); + +// Export UTgPawn::execToggleOverlay1P3P(FFrame&, void* const) +native function ToggleOverlay1P3P(bool bActivate1P); + +// Export UTgPawn::execShouldForceHideOverlaysBody(FFrame&, void* const) +native function bool ShouldForceHideOverlaysBody(); + +// Export UTgPawn::execShouldForceHideOverlaysWeapon(FFrame&, void* const) +native function bool ShouldForceHideOverlaysWeapon(); + +// Export UTgPawn::execReplaceMaterial(FFrame&, void* const) +native function ReplaceMaterial(MaterialInstanceConstant materialToUse, optional float ParamValue = 0.0000000); + +// Export UTgPawn::execClearReplacementMaterial(FFrame&, void* const) +native function ClearReplacementMaterial(); + +// Export UTgPawn::execInitializeSilhouetteComponent(FFrame&, void* const) +native function int InitializeSilhouetteComponent(MeshComponent InMesh); + +// Export UTgPawn::execReinitializeSilhouettes(FFrame&, void* const) +native function ReinitializeSilhouettes(); + +// Export UTgPawn::execFindSilhouetteInfo(FFrame&, void* const) +native function int FindSilhouetteInfo(MeshComponent ParentMesh); + +// Export UTgPawn::execRemoveSilhouetteInfo(FFrame&, void* const) +native function bool RemoveSilhouetteInfo(MeshComponent ParentMesh); + +// Export UTgPawn::execSetSilhouetteState(FFrame&, void* const) +native function SetSilhouetteState(MeshComponent ParentMesh, TgPawn.OverlayState NewState); + +// Export UTgPawn::execToggleSilhouetteVisibility(FFrame&, void* const) +native function ToggleSilhouetteVisibility(bool bVisible, optional bool bDead); + +// Export UTgPawn::execDropHealthNugget(FFrame&, void* const) +native function DropHealthNugget(optional Vector SpawnVelocity, optional float fHealOverride = -1.0000000, optional float fHoTOverride = -1.0000000); + +// Export UTgPawn::execDropHealthNuggetTeamOnly(FFrame&, void* const) +native function DropHealthNuggetTeamOnly(int nTaskForce, optional Vector SpawnVelocity, optional float fHealOverride = -1.0000000, optional float fHoTOverride = -1.0000000); + +// Export UTgPawn::execFxActivateGroupAllMesh(FFrame&, void* const) +native function FxActivateGroupAllMesh(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm, optional bool bSkipWeaponMesh); + +// Export UTgPawn::execFxDeactivateGroupAllMesh(FFrame&, void* const) +native function FxDeactivateGroupAllMesh(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bSkipWeaponMesh); + +// Export UTgPawn::execFxActivateGroupSelf(FFrame&, void* const) +native function FxActivateGroupSelf(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm); + +// Export UTgPawn::execFxReactivateGroupSelf(FFrame&, void* const) +native function FxReactivateGroupSelf(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm); + +// Export UTgPawn::execFxDeactivateGroupSelf(FFrame&, void* const) +native function FxDeactivateGroupSelf(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgPawn::execFxActivateGroupBody(FFrame&, void* const) +native function Object FxActivateGroupBody(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm); + +// Export UTgPawn::execFxReactivateGroupBody(FFrame&, void* const) +native function Object FxReactivateGroupBody(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm); + +// Export UTgPawn::execFxDeactivateGroupBody(FFrame&, void* const) +native function FxDeactivateGroupBody(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgPawn::execFxActivateGroupHead(FFrame&, void* const) +native function Object FxActivateGroupHead(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm); + +// Export UTgPawn::execFxReactivateGroupHead(FFrame&, void* const) +native function Object FxReactivateGroupHead(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm); + +// Export UTgPawn::execFxDeactivateGroupHead(FFrame&, void* const) +native function FxDeactivateGroupHead(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgPawn::execFxActivateGroupWeapon(FFrame&, void* const) +native function FxActivateGroupWeapon(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm); + +// Export UTgPawn::execFxReactivateGroupWeapon(FFrame&, void* const) +native function FxReactivateGroupWeapon(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm); + +// Export UTgPawn::execFxDeactivateGroupWeapon(FFrame&, void* const) +native function FxDeactivateGroupWeapon(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgPawn::execFxActivateGroupWeapon1P(FFrame&, void* const) +native function Object FxActivateGroupWeapon1P(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm); + +// Export UTgPawn::execFxReactivateGroupWeapon1P(FFrame&, void* const) +native function Object FxReactivateGroupWeapon1P(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm); + +// Export UTgPawn::execFxDeactivateGroupWeapon1P(FFrame&, void* const) +native function FxDeactivateGroupWeapon1P(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgPawn::execFxActivateGroupWeapon3P(FFrame&, void* const) +native function Object FxActivateGroupWeapon3P(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm); + +// Export UTgPawn::execFxReactivateGroupWeapon3P(FFrame&, void* const) +native function Object FxReactivateGroupWeapon3P(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm); + +// Export UTgPawn::execFxDeactivateGroupWeapon3P(FFrame&, void* const) +native function FxDeactivateGroupWeapon3P(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgPawn::execBeginLocalKillRTPC(FFrame&, void* const) +native function BeginLocalKillRTPC(); + +// Export UTgPawn::execEndLocalKillRTPC(FFrame&, void* const) +native function EndLocalKillRTPC(); + +// Export UTgPawn::execBeginLocalDeathRTPC(FFrame&, void* const) +native function BeginLocalDeathRTPC(); + +// Export UTgPawn::execEndLocalDeathRTPC(FFrame&, void* const) +native function EndLocalDeathRTPC(); + +// Export UTgPawn::execOnEnterItemShop(FFrame&, void* const) +native function OnEnterItemShop(); + +// Export UTgPawn::execOnLeaveItemShop(FFrame&, void* const) +native function OnLeaveItemShop(); + +// Export UTgPawn::execOnDismount(FFrame&, void* const) +native function OnDismount(); + +simulated event int PushPosture(TgPawn.TG_POSTURE Posture) +{ + local int I, NewPostureGUID; + local bool WasInserted; + + WasInserted = false; + NewPostureGUID = m_PostureStack.NewPostureGUID; + ++m_PostureStack.NewPostureGUID; + I = 0; + J0x5B: + + // End:0x13F [Loop If] + if(I < m_PostureStack.Postures.Length) + { + // End:0x131 + if(int(m_PostureStack.Postures[I]) > int(Posture)) + { + m_PostureStack.Postures.InsertItem(I, Posture); + m_PostureStack.GUIDs.InsertItem(I, NewPostureGUID); + WasInserted = true; + // [Explicit Break] + goto J0x13F; + } + ++I; + // [Loop Continue] + goto J0x5B; + } + J0x13F: + + // End:0x1BD + if(!WasInserted) + { + m_PostureStack.Postures.AddItem(Posture); + m_PostureStack.GUIDs.AddItem(NewPostureGUID); + m_ePosture = Posture; + OnPostureChange(); + } + return NewPostureGUID; + //return ReturnValue; +} + +simulated event bool PopPosture(int PostureID) +{ + local int Index; + local bool Success; + + Success = false; + Index = m_PostureStack.GUIDs.Find(PostureID); + // End:0x13E + if(Index != -1) + { + m_PostureStack.GUIDs.Remove(Index, 1); + m_PostureStack.Postures.Remove(Index, 1); + // End:0x119 + if(m_PostureStack.Postures.Length > 0) + { + m_ePosture = m_PostureStack.Postures[m_PostureStack.Postures.Length - 1]; + OnPostureChange(); + } + else + { + m_ePosture = 0; + OnPostureChange(); + } + Success = true; + } + else + { + Success = false; + } + return Success; + //return ReturnValue; +} + +simulated function GetAimAssistBounds(const out Vector ObserverLocation, out float Width, out float Height, out Vector Center) +{ + local TgGameplayCurvesSet_AimAssistBounds BoundsCurves; + local float fBoundsScaleX, fBoundsScaleY; + + GetAimFrictionExtent(Width, Height, Center); + // End:0xE6 + if(m_GameplayCurves != none) + { + BoundsCurves = TgGameplayCurvesSet_AimAssistBounds(m_GameplayCurves.GetCurvesSetByType(22)); + // End:0xE6 + if(BoundsCurves != none) + { + BoundsCurves.GetBoundsScale(VSize(ObserverLocation - Center), fBoundsScaleX, fBoundsScaleY); + Width *= fBoundsScaleX; + Height *= fBoundsScaleY; + } + } + //return; +} + +simulated function Actor GetActorFromCombatActor() +{ + return self; + //return ReturnValue; +} + +function PossessedBy(Controller C, bool bVehicleTransition) +{ + local TgRepInfo_Player TgPRI; + + super(Pawn).PossessedBy(C, bVehicleTransition); + // End:0x30 + if(BotRankId == -1) + { + } + // End:0x81 + if((TgAIController(C) == none) && !bVehicleTransition) + { + C.SetBotRankId(BotRankId); + } + // End:0xB8 + if(PlayerReplicationInfo != none) + { + PlayerReplicationInfo.SetBotRankId(BotRankId); + } + TgPRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x1AE + if(TgPRI != none) + { + TgPRI.UpdateHealth(Health, int(GetMaxHealth())); + TgPRI.r_PawnOwner = self; + // End:0x186 + if(TgPRI.r_nPawnId == 0) + { + TgPRI.r_nPawnId = r_nPawnId; + } + else + { + r_nPawnId = TgPRI.r_nPawnId; + } + } + // End:0x22F + if(((int(Role) == int(ROLE_Authority)) && TgPRI != none) && !TgPRI.bOnlySpectator) + { + ValidateStatsTracker(); + m_LastDamager = none; + m_LastDamagerTimeStamp = 0; + s_Damagers.Remove(0, s_Damagers.Length); + } + // End:0x286 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && C.IsLocalPlayerController()) + { + TgPawnControllerSet(); + } + //return; +} + +function UnPossessed() +{ + local TgRepInfo_Player PRI; + + // End:0x55 + if(TgAIController(Controller) == none) + { + Controller.SetBotRankId(Controller.default.BotRankId); + } + // End:0xA1 + if(PlayerReplicationInfo != none) + { + PlayerReplicationInfo.SetBotRankId(Controller.BotRankId); + } + PRI = GetPRI(); + // End:0xE4 + if(PRI != none) + { + PRI.r_PawnOwner = none; + } + // End:0x103 + if(int(Role) == int(ROLE_Authority)) + { + SetUncompressedRemoteViewPitch(0); + } + StopFiringAllDevices(false, false); + super(Pawn).UnPossessed(); + //return; +} + +simulated function OnGetTeamIndex(TgSeqAct_GetTeamIndex Action) +{ + local TeamInfo Team; + + Team = GetPRI().r_TaskForce; + SeqVar_Int(Action.VariableLinks[1].LinkedVariables[0]).IntValue = ((Team == none) ? 255 : Team.TeamIndex); + //return; +} + +simulated function OnGetTaskForceNumber(TgSeqAct_GetTaskForceNumber Action) +{ + SeqVar_Int(Action.VariableLinks[1].LinkedVariables[0]).IntValue = int(GetTaskForceNumber()); + //return; +} + +simulated function OnSetTaskforce(TgSeqAct_SetTaskforce Action) +{ + SetTaskForceNumber(Action.TaskForceNumber); + //return; +} + +simulated function OnUIAlert(TgSeqAct_UIAlert Action) +{ + local TgPlayerController PC; + + PC = TgPlayerController(Controller); + // End:0x72 + if(PC != none) + { + PC.AddAlertScript(1, 0, 5.0000000, Action.nMsgId); + } + //return; +} + +function OnSetCrowdControlImmune(TgSeqAct_SetCrowdControlImmune inAction) +{ + // End:0x46 + if(inAction.InputLinks[0].bHasImpulse) + { + m_bIsCrowdControlImmuneKismet = true; + } + else + { + // End:0x8C + if(inAction.InputLinks[1].bHasImpulse) + { + m_bIsCrowdControlImmuneKismet = false; + } + else + { + m_bIsCrowdControlImmuneKismet = !m_bIsCrowdControlImmuneKismet; + } + } + //return; +} + +event CollisionChanged() +{ + super(Actor).CollisionChanged(); + ModifyPawnPropertiesVolumeChanged(); + //return; +} + +event Falling() +{ + local TgAIController aic; + + aic = TgAIController(Controller); + // End:0x4A + if(aic != none) + { + aic.Falling(); + } + //return; +} + +simulated function OnKillpawns(TgSeqAct_Killpawns Action) +{ + // End:0x1C + if(!IsInState('Dying')) + { + Suicide(); + } + //return; +} + +function OnDespawnBots(TgSeqAct_DespawnBots inAction) +{ + // End:0x1A + if(!IsHumanControlled()) + { + Despawn(); + } + //return; +} + +simulated event PostInitAnimTree(SkeletalMeshComponent SkelComp) +{ + local editinline TgSkeletalMeshComponent smcomp; + local int I; + + super(Pawn).PostInitAnimTree(SkelComp); + // End:0x41 + if(Mesh == none) + { + smcomp = TgSkeletalMeshComponent(SkelComp); + } + else + { + smcomp = TgSkeletalMeshComponent(Mesh); + } + // End:0x147 + if(smcomp != none) + { + CacheMainMeshReferences(smcomp); + ClearMultiMeshAnimNodeReferences(); + CacheMultiMeshAnimNodeReferences(smcomp); + // End:0xD3 + if(m_WeaponMesh != none) + { + m_WeaponMesh.FixUpReferencesToPawnMesh(smcomp); + } + I = 0; + J0xDE: + + // End:0x147 [Loop If] + if(I < 33) + { + // End:0x139 + if(c_EquipForm[I] != none) + { + c_EquipForm[I].Cache3PAnimNodes(smcomp); + } + I++; + // [Loop Continue] + goto J0xDE; + } + } + //return; +} + +simulated function CacheMainMeshReferences(TgSkeletalMeshComponent smcomp) +{ + local TgAnimNodePlayFireAnim FireNode; + + // End:0x152 + if(smcomp != none) + { + m_UpperBodyAnimNode = TgAnimNodeSlot(smcomp.Animations.FindAnimNode('UpperBody')); + m_FullBodyAnimNode = TgAnimNodeSlot(smcomp.Animations.FindAnimNode('FullBody')); + m_SprintBlendNode = TgAnimNodeBlendList(smcomp.Animations.FindAnimNode('MountBlend')); + // End:0x147 + foreach smcomp.AllAnimNodes(Class'TgGame.TgAnimNodePlayFireAnim', FireNode) + { + m_FireAnimNode = FireNode; + } + CacheHitReactionSkelControls(); + } + //return; +} + +simulated function ClearMultiMeshAnimNodeReferences() +{ + m_StanceTransitionerNodes.Length = 0; + m_SimpleTransitionerNodes.Length = 0; + m_FireBlendNodes.Length = 0; + m_DeviceModeBlendNodes.Length = 0; + m_CombatWarinessBlendNodes.Length = 0; + m_PostureBlendNodes.Length = 0; + m_HitOrMissBlendNodes.Length = 0; + m_AnimNodeEmoteSwitches.Length = 0; + m_EmoteBlendNodes.Length = 0; + m_EmoteSequenceNodes.Length = 0; + m_AnimNodeBlendByIntroductions.Length = 0; + m_AnimNodeBlendByHitReactions.Length = 0; + m_BuffCampIntroNodes.Length = 0; + m_SkelControlLocks.Length = 0; + //return; +} + +simulated function CacheMultiMeshAnimNodeReferences(TgSkeletalMeshComponent smcomp) +{ + local array StanceTransitionerNodes, FireBlendNodes, DeviceModeBlendNodes, CombatWarinessBlendNodes, BlendByPostureNodes, HitOrMissBlendNodes, + AnimNodeEmoteSwitches, AnimNodeEmoteBlendNodes, AnimNodeEmoteSequenceNodes, AnimNodeBlendByIntroductions, AnimNodeBlendByHitReactions, + AnimNodeBlendByBuffCampIntro; + + local AnimNode AnimNodeSearchIterator; + + // End:0x6C0 + if(smcomp != none) + { + smcomp.Animations.GetNodesByClassWrapper(StanceTransitionerNodes, Class'TgGame.TgAnimNodeStanceTransitioner'); + // End:0x8C + foreach StanceTransitionerNodes(AnimNodeSearchIterator) + { + m_StanceTransitionerNodes.AddItem(TgAnimNodeStanceTransitioner(AnimNodeSearchIterator)); + } + StanceTransitionerNodes.Length = 0; + smcomp.Animations.GetNodesByClassWrapper(StanceTransitionerNodes, Class'TgGame.TgAnimNodeSimpleTransitioner'); + // End:0x116 + foreach StanceTransitionerNodes(AnimNodeSearchIterator) + { + m_SimpleTransitionerNodes.AddItem(TgAnimNodeSimpleTransitioner(AnimNodeSearchIterator)); + } + smcomp.Animations.GetNodesByClassWrapper(FireBlendNodes, Class'TgGame.TgAnimBlendByFire'); + // End:0x194 + foreach FireBlendNodes(AnimNodeSearchIterator) + { + m_FireBlendNodes.AddItem(TgAnimBlendByFire(AnimNodeSearchIterator)); + } + smcomp.Animations.GetNodesByClassWrapper(DeviceModeBlendNodes, Class'TgGame.TgAnimBlendByFireMode'); + // End:0x212 + foreach DeviceModeBlendNodes(AnimNodeSearchIterator) + { + m_DeviceModeBlendNodes.AddItem(TgAnimBlendByFireMode(AnimNodeSearchIterator)); + } + smcomp.Animations.GetNodesByClassWrapper(CombatWarinessBlendNodes, Class'TgGame.TgAnimNodeBlendByCombatWariness'); + // End:0x290 + foreach CombatWarinessBlendNodes(AnimNodeSearchIterator) + { + m_CombatWarinessBlendNodes.AddItem(TgAnimNodeBlendByCombatWariness(AnimNodeSearchIterator)); + } + smcomp.Animations.GetNodesByClassWrapper(BlendByPostureNodes, Class'TgGame.TgAnimBlendByPosture'); + // End:0x30E + foreach BlendByPostureNodes(AnimNodeSearchIterator) + { + m_PostureBlendNodes.AddItem(TgAnimBlendByPosture(AnimNodeSearchIterator)); + } + smcomp.Animations.GetNodesByClassWrapper(HitOrMissBlendNodes, Class'Engine.AnimNodeBlendList'); + // End:0x3B8 + foreach HitOrMissBlendNodes(AnimNodeSearchIterator) + { + // End:0x3B7 + if(AnimNodeSearchIterator.NodeName == 'HitOrMissBlendList') + { + m_HitOrMissBlendNodes.AddItem(AnimNodeBlendList(AnimNodeSearchIterator)); + } + } + smcomp.Animations.GetNodesByClassWrapper(AnimNodeEmoteSwitches, Class'TgGame.TgAnimNodeEmoteSwitch'); + // End:0x436 + foreach AnimNodeEmoteSwitches(AnimNodeSearchIterator) + { + m_AnimNodeEmoteSwitches.AddItem(TgAnimNodeEmoteSwitch(AnimNodeSearchIterator)); + } + smcomp.Animations.GetNodesByClassWrapper(AnimNodeEmoteBlendNodes, Class'TgGame.TgAnimBlendByEmote'); + // End:0x4B4 + foreach AnimNodeEmoteBlendNodes(AnimNodeSearchIterator) + { + m_EmoteBlendNodes.AddItem(TgAnimBlendByEmote(AnimNodeSearchIterator)); + } + smcomp.Animations.GetNodesByClassWrapper(AnimNodeEmoteSequenceNodes, Class'TgGame.TgAnimNodeEmoteSequence'); + // End:0x532 + foreach AnimNodeEmoteSequenceNodes(AnimNodeSearchIterator) + { + m_EmoteSequenceNodes.AddItem(TgAnimNodeEmoteSequence(AnimNodeSearchIterator)); + } + smcomp.Animations.GetNodesByClassWrapper(AnimNodeBlendByIntroductions, Class'TgGame.TgAnimNodeBlendByIntroduction'); + // End:0x5B0 + foreach AnimNodeBlendByIntroductions(AnimNodeSearchIterator) + { + m_AnimNodeBlendByIntroductions.AddItem(TgAnimNodeBlendByIntroduction(AnimNodeSearchIterator)); + } + smcomp.Animations.GetNodesByClassWrapper(AnimNodeBlendByHitReactions, Class'TgGame.TgAnimNodeBlendByHitReaction'); + // End:0x62E + foreach AnimNodeBlendByHitReactions(AnimNodeSearchIterator) + { + m_AnimNodeBlendByHitReactions.AddItem(TgAnimNodeBlendByHitReaction(AnimNodeSearchIterator)); + } + smcomp.Animations.GetNodesByClassWrapper(AnimNodeBlendByBuffCampIntro, Class'TgGame.TgAnimBlendByBuffMonsterIntro'); + // End:0x6AC + foreach AnimNodeBlendByBuffCampIntro(AnimNodeSearchIterator) + { + m_BuffCampIntroNodes.AddItem(TgAnimBlendByBuffMonsterIntro(AnimNodeSearchIterator)); + } + CacheSkelControlLocks(smcomp); + } + //return; +} + +simulated function CacheSkelControlLocks(TgSkeletalMeshComponent smcomp) +{ + local name SkelConName; + local SkelControlBase SkelCon; + + // End:0x7F + if(smcomp != none) + { + // End:0x7E + foreach m_SkelControlLockNames(SkelConName) + { + SkelCon = smcomp.FindSkelControl(SkelConName); + // End:0x7D + if(SkelCon != none) + { + m_SkelControlLocks.AddItem(SkelCon); + } + } + } + //return; +} + +simulated function ToggleSkelControlLocks(bool bOn) +{ + local SkelControlBase SkelCon; + + // End:0x41 + foreach m_SkelControlLocks(SkelCon) + { + SkelCon.SetSkelControlActive(bOn); + } + //return; +} + +// Export UTgPawn::execAllManifestsLoaded(FFrame&, void* const) +native simulated function AllManifestsLoaded(); + +simulated event PreBeginPlay() +{ + super(Pawn).PreBeginPlay(); + c_AssetManifestGroup.__OnAllManifestsLoaded__Delegate = AllManifestsLoaded; + //return; +} + +simulated function SetLocalPlayer() +{ + local TgPlayerController PC; + + // End:0x23 + foreach LocalPlayerControllers(Class'TgGame.TgPlayerController', PC) + { + // End:0x23 + break; + } + c_LocalPC = PC; + //return; +} + +simulated function PostBeginPlay() +{ + local Rotator R; + + super(Pawn).PostBeginPlay(); + // End:0x28 + if(int(Role) < int(ROLE_Authority)) + { + FlashResetReplication(); + } + // End:0x5B + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + SetLocalPlayer(); + } + // End:0x104 + if((int(Role) == int(ROLE_Authority)) && TgGame(WorldInfo.Game) != none) + { + r_nPawnId = TgGame(WorldInfo.Game).GetNextActorInstanceId(); + SetTimer(5.0000000, false, 'ClearSpawnFxTimer'); + r_bNeedPlaySpawnFx = true; + } + // End:0x198 + if((int(Role) == int(ROLE_Authority)) && r_EffectManager == none) + { + r_EffectManager = Spawn(Class'TgGame.TgEffectManager', self,, vect(0.0000000, 0.0000000, 0.0000000)); + r_EffectManager.r_Owner = self; + r_EffectManager.Instigator = self; + } + R.Yaw = Rotation.Yaw; + SetRotation(R); + InitializeDefaultProps(); + UpdateHUDScores(); + //return; +} + +function ClearSpawnFxTimer() +{ + r_bNeedPlaySpawnFx = false; + //return; +} + +function SetupPIEMesh(GameInfo.PIEPawnMeshTypes PIEPawnType, int BotId) +{ + r_nProfileId = BotId; + r_nSkinId = 0; + r_nHeadSkinId = 0; + r_nWeaponSkinId = 0; + r_nMountSkinId = 0; + //return; +} + +function CrushedBy(Pawn OtherPawn) +{ + //return; +} + +simulated event bool PostPawnSetup() +{ + local TgPlayerController PC; + + // End:0x22 + if(int(Role) == int(ROLE_SimulatedProxy)) + { + DeviceFormChanged(true); + } + else + { + MissionTimeUpdate(); + } + // End:0xC2 + if(Mesh != none) + { + Mesh.SetRBChannel(2); + Mesh.SetRBCollidesWithChannel(2, true); + Mesh.SetRBCollidesWithChannel(16, false); + Mesh.SetRBCollidesWithChannel(15, true); + } + SetUsePhysicsWithAnimation(!WorldInfo.IsPlayingDemo() && TgPlayerController(GetALocalPlayerController()).AllowRagdoll()); + // End:0x140 + if(IsAliveAndWell()) + { + FxActivateGroupSelf('WhileAlive', 0); + } + // End:0x16E + if(!WorldInfo.IsPlayingDemo()) + { + CheckUiVolumeTriggers(); + } + // End:0x22C + if(WorldInfo.IsPlayingTimelapse()) + { + PC = TgPlayerController(GetALocalPlayerController()); + // End:0x22C + if((((r_nPawnId > 0) && PC != none) && PC.m_nKillCamTargetId == r_nPawnId) && !bTearOff) + { + PC.ForceKillCamViewTargetChange(self); + } + } + return true; + //return ReturnValue; +} + +reliable server function MissionTimeUpdate() +{ + TgRepInfo_Game(WorldInfo.GRI).MissionTimeUpdateAllClients(); + //return; +} + +simulated event bool IsCustomCharacter() +{ + return false; + //return ReturnValue; +} + +simulated function PreRender(Canvas Canvas) +{ + //return; +} + +function SetDeathZoomInfo(TgPawn theKiller, TgRepInfo_Player theKillerPRI, int nHealthPct, int nDeviceId, optional TgRepInfo_Player OwnerPRI) +{ + //return; +} + +event Suicide() +{ + SetDeathZoomInfo(self, TgRepInfo_Player(PlayerReplicationInfo), Health, 0); + super(Pawn).Suicide(); + //return; +} + +event Despawn() +{ + r_eDeathReason = 1; + Suicide(); + //return; +} + +event DespawnOnReconnect() +{ + r_eDeathReason = 2; + ModifyHealthProp(int(GetHealth())); + Health = 0; + Died(none, none, Location); + //return; +} + +simulated function OnJoinTeam(TgSeqAct_JoinTeam Action) +{ + local TgPawn leader; + local TgAIController aic; + local TgRepInfo_Player PRI; + + leader = TgPawn(Action.TeamLeader); + aic = TgAIController(Controller); + // End:0x128 + if((leader != none) && aic != none) + { + PRI = TgRepInfo_Player(aic.PlayerReplicationInfo); + // End:0x128 + if(PRI != none) + { + PRI.SetTeam(leader.GetPRI().r_TaskForce); + aic.m_pOwner = leader; + } + } + //return; +} + +simulated function TakeFallingDamage() +{ + //return; +} + +event UpdateDeathReason() +{ + // End:0x78 + if((int(r_eDeathReason) != int(1)) && int(r_eDeathReason) != int(2)) + { + // End:0x78 + if(r_EffectManager != none) + { + // End:0x6C + if(r_EffectManager.s_FreezeBehaviorCount > 0) + { + r_eDeathReason = 3; + } + else + { + r_eDeathReason = 0; + } + } + } + //return; +} + +event bool ShouldScoreKill() +{ + return true; + //return ReturnValue; +} + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + local TgDevice Dev; + local int I; + local TgRepInfo_Player killerPlayerRep; + local TgRepInfo_TaskForce killerTaskForce; + local TgGame_Paladins TgG; + local TgPlayerController TgPC; + local TgPawn TgKillerPawn; + local TgGameplayEventsWriter TgEventWriter; + + // End:0x2A + if(dmgType == Class'Engine.DmgType_Suicided') + { + dmgType = Class'TgGame.TgDamageType'; + } + // End:0x5E + if((int(r_eDeathReason) != int(1)) && int(r_eDeathReason) != int(2)) + { + TrackDeath(); + } + // End:0x9E + if(Killer != none) + { + killerPlayerRep = TgRepInfo_Player(Killer.PlayerReplicationInfo); + } + // End:0xE4 + if(killerPlayerRep != none) + { + killerTaskForce = killerPlayerRep.r_TaskForce; + // End:0xE4 + if(killerTaskForce == none) + { + } + } + // End:0x10B + if(dmgType == Class'TgGame.TgDamageType_FallOutOfWorld') + { + PlayEmoteAtWorldLocation(9); + } + else + { + // End:0x131 + if(dmgType == Class'TgGame.TgDamageType_PaladinsExecute') + { + r_eDeathReason = 4; + } + else + { + PlayEmoteAtWorldLocation(7); + } + } + I = 0; + J0x149: + + // End:0x1D4 [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0x1C6 + if(Dev != none) + { + // End:0x1C6 + if(Dev.r_bConsumedOnDeath) + { + Dev.ConsumeDevice(); + } + } + I++; + // [Loop Continue] + goto J0x149; + } + InterruptInhandReload(); + // End:0x227 + if(TgAIController(Controller) != none) + { + TgAIController(Controller).NotifyKilledBy(Killer); + } + // End:0x24B + if(m_bIgnoreTearOffMomentum) + { + TearOffMomentum = vect(0.0000000, 0.0000000, 0.0000000); + } + bReplicateMovement = false; + TgPC = TgPlayerController(Controller); + // End:0x349 + if(TgPC != none) + { + TgPC.ClientPlayForceFeedbackWaveform(m_DeathFFWaveform); + // End:0x349 + if((Killer != none) && WorldInfo.IsRecordingTimelapse()) + { + TgKillerPawn = TgPawn(Killer.Pawn); + // End:0x349 + if(TgKillerPawn != none) + { + TgPC.SetKillCamTarget(TgKillerPawn); + } + } + } + // End:0x3F0 + if(!super(Pawn).Died(Killer, dmgType, HitLocation)) + { + Health--; + // End:0x3D1 + if(ShouldScoreKill()) + { + WorldInfo.Game.ScoreKill(Killer, Controller); + } + PlayDying(dmgType, HitLocation); + } + else + { + bPlayedDeath = true; + bTearOff = true; + } + // End:0x472 + if(TgRepInfo_Player(PlayerReplicationInfo) != none) + { + TgRepInfo_Player(PlayerReplicationInfo).bForceNetUpdate = true; + TgRepInfo_Player(PlayerReplicationInfo).UpdatePlayerLocation(); + } + // End:0x4A2 + if((int(Role) == int(ROLE_Authority)) && r_bIsKnockedBack) + { + Knock(false); + } + // End:0x4C2 + if(int(Role) == int(ROLE_Authority)) + { + SetHUDOverlayState(ROLE_AutonomousProxy); + } + // End:0x4F1 + if(r_Owner != none) + { + r_Owner.ReportPetDeath(self); + } + TgG = TgGame_Paladins(WorldInfo.Game); + // End:0x746 + if(TgG != none) + { + TgG.OnPawnDied(self); + // End:0x5A3 + if((!TgG.m_bRespawnBots && Controller != none) && TgAIController_BehaviorGod(Controller) != none) + { + Destroy(); + } + // End:0x746 + if((TgG.GameplayEventsWriter != none) && TgG.GameplayEventsWriter.IsSessionInProgress()) + { + TgEventWriter = TgGameplayEventsWriter(TgG.GameplayEventsWriter); + // End:0x6F3 + if(TgEventWriter != none) + { + // End:0x6AF + if((Killer == none) || Killer == Controller) + { + TgEventWriter.LogPaladinsPlayerKillDeath(1002, 2001, Controller, dmgType, Controller); + } + else + { + TgEventWriter.LogPaladinsPlayerKillDeath(1002, 2002, Controller, dmgType, Killer); + } + } + TgG.GameplayEventsWriter.LogPlayerKillDeath(108, 200, Controller, dmgType, Killer); + } + } + // End:0x860 + if(m_WeaponMesh != none) + { + // End:0x7AE + if(m_WeaponMesh.m_WeaponMesh1P != none) + { + m_WeaponMesh.m_WeaponMesh1P.SetHidden(true); + } + // End:0x807 + if(m_WeaponMesh.m_HandsMesh != none) + { + m_WeaponMesh.m_HandsMesh.SetHidden(true); + } + // End:0x860 + if(m_WeaponMesh.m_HeadMesh1P != none) + { + m_WeaponMesh.m_HeadMesh1P.SetHidden(true); + } + } + return true; + //return ReturnValue; +} + +simulated event Destroyed() +{ + local TgDevice Dev; + local int I; + local TgPlayerController PC; + + StatsCleanup(); + KillAllOwnedPets(); + // End:0x2E + if(r_TargetActor != none) + { + r_TargetActor = none; + } + // End:0x60 + if(m_WeaponMesh != none) + { + m_WeaponMesh.Destroy(); + m_WeaponMesh = none; + } + // End:0x10C + if(int(Role) == int(ROLE_Authority)) + { + I = 0; + J0x7F: + + // End:0x10C [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0xFE + if((Dev != none) && Dev.r_bConsumedOnDeath) + { + Dev.ConsumeDevice(); + } + I++; + // [Loop Continue] + goto J0x7F; + } + } + // End:0x13A + if(c_CurrentTargetingDevice != none) + { + c_CurrentTargetingDevice.ExitTargetingMode(); + } + // End:0x18B + if(r_EffectManager != none) + { + r_EffectManager.ClearAllClientEffectForms(); + r_EffectManager.Destroy(); + r_EffectManager = none; + } + // End:0x1B2 + if(s_PetBotFactory != none) + { + s_PetBotFactory.Destroy(); + } + I = 0; + J0x1BD: + + // End:0x205 [Loop If] + if(I < s_PetLocationList.Length) + { + s_PetLocationList[I].Destroy(); + I++; + // [Loop Continue] + goto J0x1BD; + } + // End:0x25B + if((AIController(Controller) != none) && !Controller.IsPendingKill()) + { + Controller.Destroy(); + } + // End:0x360 + if(WorldInfo.IsPlayingTimelapse()) + { + PC = TgPlayerController(GetALocalPlayerController()); + // End:0x360 + if((((PC != none) && PC.Pawn != self) && !PC.bDeleteMe || PC.bPendingDelete) && PC.GetViewTarget() == self) + { + PC.ForceKillCamViewTargetChange(); + } + } + super(Pawn).Destroyed(); + // End:0x39D + if(m_AkActorUnoccluded != none) + { + m_AkActorUnoccluded.LifeSpan = 2.0000000; + } + //return; +} + +simulated event KillAllOwnedPets() +{ + // End:0x33 + if(int(Role) == int(ROLE_Authority)) + { + KillDeployables(true); + KillPets(); + KillOwnedBots(); + } + //return; +} + +simulated function bool CanChangeInHandDeviceOrMode() +{ + // End:0x12 + if(IsInState('KnockedDown')) + { + return false; + } + return true; + //return ReturnValue; +} + +simulated event PutInHandDeviceAwayFast(TgDeviceForm form) +{ + // End:0x3F + if(int(m_eEquippedInHand) != int(0)) + { + c_EquipForm[int(m_eEquippedInHand)].EndDevicePuttingDown(); + } + m_eEquippedInHand = 0; + //return; +} + +exec function ShowAnimSets() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x46 [Loop If] + if(I < Mesh.AnimSets.Length) + { + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated function EquipPendingDeviceTimer(optional bool SkipPlayAnim = false) +{ + // End:0x4B + if(c_EquipForm[int(m_eEquippedInHand)] != none) + { + c_EquipForm[int(m_eEquippedInHand)].EndDevicePuttingDown(); + } + m_eEquippedInHand = r_eDesiredInHand; + // End:0xB0 + if(c_EquipForm[int(m_eEquippedInHand)] != none) + { + c_EquipForm[int(m_eEquippedInHand)].BeginDeviceTakingOut(!SkipPlayAnim); + } + //return; +} + +function OnDeviceFormEnteredTargetingMode(TgDeviceForm form) +{ + //return; +} + +function OnDeviceFormExitedTargetingMode(TgDeviceForm form) +{ + //return; +} + +exec function UIH() +{ + DeviceFormChanged(); + //return; +} + +simulated event AnimSwapDevice() +{ + // End:0x46 + if(c_EquipForm[int(m_eEquippedInHand)] != none) + { + c_EquipForm[int(m_eEquippedInHand)].DeviceAnimNotify(); + } + //return; +} + +simulated event bool StartAction(TgDevice Dev, optional out TgObject.EDeviceFailType failType, optional bool bUpdateTimeStamp = true) +{ + local TgDevice altFireInhandDev; + local bool bSuccess; + local TgClientSettings Settings; + local TgPlayerController TgPC; + + // End:0x17 + if(Dev == none) + { + return false; + } + bSuccess = false; + TgPC = TgPlayerController(Controller); + // End:0x1B3 + if(int(Dev.r_eEquippedAt) == int(16)) + { + altFireInhandDev = m_EquippedDevices[1]; + // End:0x1B0 + if((altFireInhandDev != none) && altFireInhandDev.m_bAltFireEnabled) + { + switch(altFireInhandDev.m_AltFireType) + { + // End:0x129 + case 3: + bSuccess = Dev.Use(); + altFireInhandDev.Use(); + // End:0x1B0 + break; + // End:0x15B + case 2: + bSuccess = Dev.Use(); + // End:0x1B0 + break; + // End:0x160 + case 1: + // End:0xFFFF + default: + altFireInhandDev.AltUse(true); + bSuccess = altFireInhandDev.IsFiring(); + // End:0x1B0 + break; + break; + } + } + } + else + { + bSuccess = Dev.Use(); + } + // End:0x245 + if(((TgPC != none) && bSuccess) && int(Dev.r_eEquippedAt) == int(5)) + { + TgPC.PlayEventFX(); + } + c_CurrentStartActionDevice = none; + // End:0x40F + if(!bSuccess && int(Dev.m_eCachedDeviceFailType) != int(0)) + { + failType = Dev.m_eCachedDeviceFailType; + // End:0x40F + if(TgPC != none) + { + Settings = TgPC.GetClientSettings(); + // End:0x40F + if(((Settings != none) && int(Settings.GetCastMode(r_nProfileId, c_CurrentTargetingDevice.r_eEquippedAt)) != int(0)) && Settings.bUseCastQueueing) + { + // End:0x40F + if((int(failType) == int(10)) && int(Dev.r_eEquippedAt) != int(1)) + { + c_CurrentStartActionDevice = Dev; + failType = 0; + bSuccess = true; + // End:0x40F + if(bUpdateTimeStamp) + { + c_fShouldStartActionTimeStamp = WorldInfo.TimeSeconds; + } + } + } + } + } + // End:0x4BA + if(!bSuccess) + { + // End:0x4BA + if(Dev.IsAbility() && Dev.IsDeviceCoolingDown()) + { + // End:0x4BA + if((Dev.m_EndOfLastFireTimeStamp + 3.0000000) <= WorldInfo.TimeSeconds) + { + PlayEmoteSelfOnly(38); + } + } + } + return bSuccess; + //return ReturnValue; +} + +simulated event StopAction(TgDevice Dev) +{ + local TgDevice altFireInhandDev; + local TgPlayerController TgPC; + local TgControlModule_StunTaunted StunTauntControlModule; + + // End:0x11 + if(Dev == none) + { + return; + } + // End:0x2B + if(TgDevice_HitPulse(Dev) != none) + { + return; + } + TgPC = TgPlayerController(Controller); + // End:0xE0 + if(TgPC != none) + { + StunTauntControlModule = TgControlModule_StunTaunted(TgPC.ControlModule); + // End:0xE0 + if(((StunTauntControlModule != none) && StunTauntControlModule.m_bIsActive) && Dev.m_bHandDevice) + { + return; + } + } + // End:0x29E + if(int(Dev.r_eEquippedAt) == int(16)) + { + altFireInhandDev = m_EquippedDevices[1]; + // End:0x29B + if((altFireInhandDev != none) && altFireInhandDev.m_bAltFireEnabled) + { + switch(altFireInhandDev.m_AltFireType) + { + // End:0x17E + case 3: + // End:0x270 + case 2: + // End:0x208 + if(Dev.IsFunctionallyToggleDevice()) + { + // End:0x205 + if(Dev.CanBeCanceled()) + { + Dev.OnCanceled(); + Dev.StopFire(); + } + } + else + { + // End:0x26D + if(Dev.IsFiring() && Dev.bPendingFire) + { + Dev.StopFire(); + } + } + // End:0x29B + break; + // End:0x275 + case 1: + // End:0xFFFF + default: + altFireInhandDev.AltUse(false); + // End:0x29B + break; + break; + } + } + } + else + { + Dev.StopFire(); + } + //return; +} + +simulated event StopFiringAllDevices(optional bool bClearEquipEffectFlag, optional bool bResetCooldowns, optional bool bKeepFiringMount, optional bool bServerDeviceLockout = false) +{ + local int I; + local TgDevice Dev; + local bool bWasActive; + + I = 1; + J0x13: + + // End:0x1A0 [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0x192 + if(Dev != none) + { + // End:0xCF + if((I != 23) || !bKeepFiringMount) + { + Dev.DeviceShutDown(bClearEquipEffectFlag, bResetCooldowns); + // End:0xCF + if(bServerDeviceLockout) + { + Dev.StopFiringServerDeviceLockout(); + } + } + // End:0x192 + if(bClearEquipEffectFlag) + { + bWasActive = Dev.IsActive(); + Dev.m_bEquipEffectsApplied = false; + // End:0x192 + if((bWasActive && int(Role) == int(ROLE_Authority)) && !Dev.IsCard()) + { + Dev.CeaseActive(true); + } + } + } + I++; + // [Loop Continue] + goto J0x13; + } + // End:0x1D1 + if((int(RemoteRole) == int(ROLE_AutonomousProxy)) && bServerDeviceLockout) + { + ClientStopFiringAllDevices(true, true, true, true); + } + //return; +} + +function PutAllCardsOnCooldown() +{ + local int I; + local TgDevice Dev; + + // End:0x9E + if(false) + { + I = 1; + J0x0F: + + // End:0x9E [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0x90 + if((Dev != none) && Dev.IsCard()) + { + Dev.StartCooldown(); + } + I++; + // [Loop Continue] + goto J0x0F; + } + } + //return; +} + +reliable client simulated function ClientStopFiringAllDevices(optional bool bClearEquipEffectFlag, optional bool bResetCooldowns, optional bool bKeepFiringMount, optional bool bServerDeviceLockout = false) +{ + StopFiringAllDevices(bClearEquipEffectFlag, bResetCooldowns, bKeepFiringMount, bServerDeviceLockout); + //return; +} + +simulated event RestartAllDevices() +{ + local TgDevice Dev; + local int I; + + I = 1; + J0x0B: + + // End:0x74 [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0x66 + if(Dev != none) + { + Dev.DeviceRestart(); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +// Export UTgPawn::execSwapEquippedDevices(FFrame&, void* const) +native function SwapEquippedDevices(TgDevice newDev, int nEqpSlot); + +// Export UTgPawn::execSyncDeviceTimers(FFrame&, void* const) +native function SyncDeviceTimers(TgDevice SourceDevice, TgDevice DestinationDevice); + +simulated function OnDeviceFormBuildup(int nEquipSlot, float fBuildupTime) +{ + local TgAnimBlendByFire IteratorA; + local TgDeviceForm form; + + form = c_EquipForm[nEquipSlot]; + // End:0x80 + if(form != none) + { + // End:0x7F + foreach m_FireBlendNodes(IteratorA) + { + IteratorA.OnDeviceFormBuildup(c_EquipForm[nEquipSlot], fBuildupTime); + } + } + // End:0xB7 + if(m_WeaponMesh != none) + { + m_WeaponMesh.PlayBuildupEffects(nEquipSlot); + } + //return; +} + +simulated function OnDeviceFormStartFire(int nEquipSlot, float FireDuration, int nFireMode, optional int nAmmoRemaining) +{ + local TgAnimBlendByFire IteratorC; + local TgAnimNodeBlendByCombatWariness IteratorD; + local TgAnimBlendByFireMode IteratorE; + local TgDemoRecSpectator DemoController; + local TgDeviceForm form; + local TgDevice Device; + + form = c_EquipForm[nEquipSlot]; + // End:0x2A0 + if(form != none) + { + switch(nEquipSlot) + { + // End:0x163 + case 1: + Device = GetDeviceByEqPoint(nEquipSlot); + // End:0x160 + if((Device != none) && Device.r_nMaxAmmoClipCount > 0) + { + SetRTPCValue('AmmoAmountPercentage', FClamp((float(nAmmoRemaining) / float(Device.r_nMaxAmmoClipCount)) * 100.0000000, 0.0000000, 100.0000000)); + // End:0x160 + if(m_WeaponMesh != none) + { + m_WeaponMesh.SetRTPCValue('AmmoAmountPercentage', FClamp((float(nAmmoRemaining) / float(Device.r_nMaxAmmoClipCount)) * 100.0000000, 0.0000000, 100.0000000)); + } + } + // End:0x1A5 + break; + // End:0x1A2 + case 17: + // End:0x19F + if(m_FireAnimNode != none) + { + m_FireAnimNode.PlayFireAnim('melee'); + } + // End:0x1A5 + break; + // End:0xFFFF + default: + break; + } + // End:0x213 + foreach m_DeviceModeBlendNodes(IteratorE) + { + // End:0x212 + if(int(IteratorE.m_EquipPoint) == nEquipSlot) + { + IteratorE.SelectFireMode(nFireMode); + } + } + // End:0x267 + foreach m_FireBlendNodes(IteratorC) + { + IteratorC.OnDeviceFormStartFire(c_EquipForm[nEquipSlot], FireDuration); + } + // End:0x29F + foreach m_CombatWarinessBlendNodes(IteratorD) + { + IteratorD.BecomeWary(); + } + } + // End:0x43A + if(WorldInfo.IsPlayingDemo()) + { + DemoController = TgDemoRecSpectator(GetALocalPlayerController()); + // End:0x43A + if(DemoController != none) + { + // End:0x43A + if(((DemoController != none) && DemoController.m_ActionListener != none) && VSizeSq(DemoController.m_ActionListener.Location - Location) < (DemoController.m_ActionListener.m_CollisionCylinder.CollisionRadius * DemoController.m_ActionListener.m_CollisionCylinder.CollisionRadius)) + { + DemoController.m_ActionListener.ForwardDeviceOnStartFire(self, nEquipSlot); + } + } + } + // End:0x483 + if(m_WeaponMesh != none) + { + m_WeaponMesh.PlayFireEffects(nEquipSlot, FireDuration, nFireMode); + } + //return; +} + +simulated function OnDeviceFormFire(int nEquipSlot, float fRefireTime, int nFireMode) +{ + // End:0x58 + if(nEquipSlot == 6) + { + // End:0x58 + if((Controller != none) && Controller.IsLocalPlayerController()) + { + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_LocalPlayerRecalled', self); + } + } + // End:0xA1 + if(m_WeaponMesh != none) + { + m_WeaponMesh.PlayDeviceFiredEffects(nEquipSlot, fRefireTime, nFireMode); + } + //return; +} + +simulated function OnDeviceFormHit(int nEquipSlot, Actor Target, float DamageAmount, Vector HitLocation, Vector HitNormal, const out ExtraDamageInfo ExtraInfo) +{ + //return; +} + +simulated function PostRecallTimerToKillParticles() +{ + local editinline ParticleSystemComponent PSC; + + // End:0xBE + foreach Mesh.AttachedComponents(Class'Engine.ParticleSystemComponent', PSC) + { + switch(PSC.Template.Name) + { + // End:0x7D + case 'FX_XBAL_ABILITY04_ENEMY_FOG': + // End:0x89 + case 'FX_XBAL_ABILITY04_FOG': + // End:0x98 + case 'FX_XBAL_ABILITY04_FOG_END': + // End:0xBD + break; + // End:0xFFFF + default: + PSC.KillParticlesForced(); + // End:0xBD + break; + break; + } + } + //return; +} + +simulated function OnDeviceFormStopFire(int nEquipSlot) +{ + local TgAnimBlendByFire IteratorA; + local TgDeviceForm DeviceForm; + + DeviceForm = c_EquipForm[nEquipSlot]; + // End:0x77 + if(DeviceForm != none) + { + // End:0x76 + foreach m_FireBlendNodes(IteratorA) + { + IteratorA.OnDeviceFormStopFire(c_EquipForm[nEquipSlot]); + } + } + // End:0x9A + if(nEquipSlot == 6) + { + SetTimer(0.1000000, false, 'PostRecallTimerToKillParticles'); + } + // End:0xE7 + if(ShouldStopWeaponMeshFireEffectsOnDeviceFormStopFire(nEquipSlot)) + { + // End:0xE7 + if(m_WeaponMesh != none) + { + m_WeaponMesh.StopFireEffects(nEquipSlot); + } + } + //return; +} + +simulated function bool ShouldStopWeaponMeshFireEffectsOnDeviceFormStopFire(int nEquipSlot) +{ + return true; + //return ReturnValue; +} + +simulated function OnDeviceFormInterruptFire(int nEquipSlot) +{ + local TgAnimBlendByFire IteratorA; + local TgDeviceForm form; + + form = c_EquipForm[nEquipSlot]; + // End:0x77 + if(form != none) + { + // End:0x76 + foreach m_FireBlendNodes(IteratorA) + { + IteratorA.OnDeviceFormInterruptFire(c_EquipForm[nEquipSlot]); + } + } + //return; +} + +event bool CanApplyEffects() +{ + local TgGame TgG; + + TgG = TgGame(WorldInfo.Game); + // End:0x6D + if((TgG != none) && int(TgG.m_GameWinState) != int(0)) + { + return false; + } + return s_bCanApplyEffects; + //return ReturnValue; +} + +simulated function ForceUpdate1PMeshes() +{ + local int I; + + // End:0x2A0 + if(m_WeaponMesh != none) + { + // End:0xEA + if(m_WeaponMesh.m_HandsMesh != none) + { + I = 0; + J0x3E: + + // End:0xEA [Loop If] + if(I < m_OverlayInfosBody.Length) + { + // End:0xDC + if(m_OverlayInfosBody[I].ParentMesh == m_WeaponMesh.m_HandsMesh) + { + m_OverlayInfosBody[I].OverlayMesh.ForceUpdate(true); + } + I++; + // [Loop Continue] + goto J0x3E; + } + } + // End:0x1C5 + if(m_WeaponMesh.m_WeaponMesh1P != none) + { + I = 0; + J0x119: + + // End:0x1C5 [Loop If] + if(I < m_OverlayInfosWeapon.Length) + { + // End:0x1B7 + if(m_OverlayInfosWeapon[I].ParentMesh == m_WeaponMesh.m_WeaponMesh1P) + { + m_OverlayInfosWeapon[I].OverlayMesh.ForceUpdate(true); + } + I++; + // [Loop Continue] + goto J0x119; + } + } + // End:0x2A0 + if(m_WeaponMesh.m_HeadMesh1P != none) + { + I = 0; + J0x1F4: + + // End:0x2A0 [Loop If] + if(I < m_OverlayInfosBody.Length) + { + // End:0x292 + if(m_OverlayInfosBody[I].ParentMesh == m_WeaponMesh.m_HeadMesh1P) + { + m_OverlayInfosBody[I].OverlayMesh.ForceUpdate(true); + } + I++; + // [Loop Continue] + goto J0x1F4; + } + } + } + //return; +} + +simulated function IncrementFlashCount(Weapon Who, byte FireModeNum) +{ + //return; +} + +simulated function ClearFlashCount(Weapon Who) +{ + //return; +} + +function ClearFlashLocation(Weapon Who) +{ + //return; +} + +simulated function StopPlayFiring() +{ + //return; +} + +function RememberPlayerAttackerExpired() +{ + //return; +} + +simulated event PlayHeal3P() +{ + // End:0x43 + if(m_HealFX3P != none) + { + m_HealFX3P.Activate(); + SetTimer(1.0000000, false, 'EndHeal3P'); + } + //return; +} + +simulated function EndHeal3P() +{ + // End:0x2F + if(m_HealFX3P != none) + { + m_HealFX3P.Deactivate(true); + } + //return; +} + +simulated event PlayHitReactionMaterialPulse() +{ + // End:0x22 + if(!IsFirstPerson()) + { + m_fRemainingHitReactionPulseTime = m_fHitReactionPulseTime; + } + //return; +} + +simulated function PlayTakeHit(Vector Direction, int Damage, Class dmgType, const out ExtraDamageInfo ExtraInfo, TgPawn.EHitAudioCue eCue) +{ + local TgPlayerController TgPC; + local Class TgDmgType; + local TgAkActor TakeHitSoundActor; + local Vector Dir; + local TgPawn.EEmote eHitCue; + + m_fLastPainSound = WorldInfo.TimeSeconds; + // End:0x456 + if(Damage > 0) + { + Dir = Normal(Direction); + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x456 + if((((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && IsLocallyControlled()) && TgPC != none) && TgPC.GetViewTarget() == self) + { + TakeHitSoundActor = Spawn(Class'TgGame.TgAkActor', TgPC,, TgPC.PlayerCamera.CameraCache.POV.Location + (Dir * 16.0000000)); + TakeHitSoundActor.SetRTPCValue('DamageTaken', m_fDamageTakenRTPC); + TakeHitSoundActor.SetBase(self); + TakeHitSoundActor.bIgnoreBaseRotation = true; + TakeHitSoundActor.m_bCanCheckOcclusion = false; + TgDmgType = Class(dmgType); + eHitCue = 44; + switch(eCue) + { + // End:0x24C + case 0: + eHitCue = 0; + // End:0x29F + break; + // End:0x260 + case 1: + eHitCue = 44; + // End:0x29F + break; + // End:0x274 + case 2: + eHitCue = 47; + // End:0x29F + break; + // End:0x288 + case 3: + eHitCue = 46; + // End:0x29F + break; + // End:0x29C + case 4: + eHitCue = 48; + // End:0x29F + break; + // End:0xFFFF + default: + break; + } + // End:0x42E + if(int(eHitCue) == int(44)) + { + // End:0x382 + if(ExtraInfo.bHeadShot) + { + // End:0x348 + if((TgDmgType != none) && TgDmgType.default.m_TakeHeadShotAkEvent != none) + { + TakeHitSoundActor.PostAkEvent(TgDmgType.default.m_TakeHeadShotAkEvent); + } + else + { + // End:0x37F + if(m_TakeHeadShotAkEvent != none) + { + TakeHitSoundActor.PostAkEvent(m_TakeHeadShotAkEvent); + } + } + } + else + { + // End:0x3F7 + if((TgDmgType != none) && TgDmgType.default.m_TakeHitAkEvent != none) + { + TakeHitSoundActor.PostAkEvent(TgDmgType.default.m_TakeHitAkEvent); + } + else + { + // End:0x42E + if(m_TakeHitAkEvent != none) + { + TakeHitSoundActor.PostAkEvent(m_TakeHitAkEvent); + } + } + } + } + // End:0x456 + if(int(eHitCue) != int(0)) + { + PlayEmoteAtWorldLocation(eHitCue); + } + } + } + //return; +} + +event SendNotifyTakeHit(Controller InstigatedBy, Vector HitLocation, int Damage, Class DamageType, Vector Momentum) +{ + NotifyTakeHit(InstigatedBy, HitLocation, Damage, DamageType, Momentum, none); + //return; +} + +function NotifyTakeHit(Controller InstigatedBy, Vector HitLocation, int Damage, Class DamageType, Vector Momentum, Actor DamageCauser) +{ + super(Pawn).NotifyTakeHit(InstigatedBy, HitLocation, Damage, DamageType, Momentum, DamageCauser); + //return; +} + +simulated event DrawAIDebug(Canvas Canvas, Vector ScreenLoc) +{ + local string sGoalString; + local float XD, YD; + + sGoalString = ("Pawn: " $ r_sDebugName) $ "\n"; + sGoalString $= (("Type: " $ PlayerReplicationInfo.PlayerName) $ "\n"); + sGoalString $= (("Nav. Action: " $ r_sDebugAction) $ "\n"); + // End:0x15B + if((Pawn(r_aDebugTarget) != none) && Pawn(r_aDebugTarget).PlayerReplicationInfo != none) + { + sGoalString $= (("Target(1): " $ Pawn(r_aDebugTarget).PlayerReplicationInfo.PlayerName) $ "\n"); + } + else + { + sGoalString $= (("Target(2): " $ string(r_aDebugTarget)) $ "\n"); + } + sGoalString $= (("Destination: " $ string(r_aDebugDestination)) $ "\n"); + // End:0x276 + if(r_aDebugNextNav == none) + { + sGoalString $= (((((("Next Point: (" $ string(int(r_vDebugNextNavMeshPoint.X))) $ ",") $ string(int(r_vDebugNextNavMeshPoint.Y))) $ ",") $ string(int(r_vDebugNextNavMeshPoint.Z))) $ ")\n"); + } + else + { + sGoalString $= (("Next Path: " $ string(r_aDebugNextNav)) $ "\n"); + } + Canvas.Font = Class'Engine.Engine'.static.GetSmallFont(); + Canvas.SetDrawColor(255, 0, 0, 255); + Canvas.StrLen(sGoalString, XD, YD); + DrawMultiLineText(Canvas, sGoalString, int(ScreenLoc.X - (0.4000000 * XD)), int((ScreenLoc.Y - (1.2000000 * YD)) - float(2 * 20)), 16); + DrawClientDebug(); + //return; +} + +event TakeDamage(int Damage, Controller InstigatedBy, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + local TgAIController aic; + local TgDevice_Mount MountDevice; + local int nPreviousHealth, nActualDamage; + local Class TgDamage; + + HitDamageType = DamageType; + nPreviousHealth = Health; + TgDamage = Class(DamageType); + // End:0x114 + if(TgDamage != none) + { + Momentum = RandRange(TgDamage.default.m_bMinImpulse, TgDamage.default.m_bMaxImpulse) * Normal(Momentum); + Momentum.Z += RandRange(TgDamage.default.m_bMinUpKick, TgDamage.default.m_bMaxUpKick); + } + // End:0x151 + if(Damage >= Health) + { + r_DeathInfo.Momentum = Momentum; + } + super(Pawn).TakeDamage(Damage, InstigatedBy, HitLocation, Momentum, DamageType, HitInfo); + // End:0x1E1 + if(Health <= 0) + { + NotifyTakeHit(InstigatedBy, HitLocation, Damage, DamageType, Momentum, DamageCauser); + } + // End:0x2E5 + if(Controller != none) + { + // End:0x258 + if(!Controller.bGodMode) + { + nActualDamage = nPreviousHealth - Health; + Health = nPreviousHealth; + ModifyHealthProp(nActualDamage); + } + // End:0x2CE + if(float(Damage) >= m_fDamageTakenMax) + { + m_fDamageTakenMax = float(Damage); + m_fDamageTakenRTPC = float(Damage); + SetRTPCValue('DamageTaken', m_fDamageTakenRTPC); + SetTimer(m_fDamageTakenMaxSustainDuration, false, 'DamageTakenMaxReset'); + } + SetTimer(m_fDamageTakenRTPCSustainDuration, false, 'DamageTakenRTPCReset'); + } + // End:0x31A + if(Health <= 0) + { + r_DeathInfo.Momentum = Momentum; + } + // End:0x344 + if((r_EffectManager != none) && Health > 0) + { + PulseStealth(); + } + aic = TgAIController(Controller); + // End:0x3E5 + if((aic != none) && aic.m_pFactory != none) + { + aic.m_pFactory.OnBotDamaged(self, InstigatedBy, DamageType, Damage); + } + // End:0x409 + if(!ClassIsChildOf(DamageType, Class'TgGame.TgDamageType_AbilityCost')) + { + InterruptUse(); + } + // End:0x4B0 + if((nPreviousHealth != Health) && int(Role) == int(ROLE_Authority)) + { + MountDevice = TgDevice_Mount(GetDeviceByEqPoint(23)); + // End:0x4B0 + if((MountDevice != none) && MountDevice.IsFiring()) + { + MountDevice.DismountOnDamage(Damage); + } + } + //return; +} + +event int TakeShieldDamage(int fDamage, Class DamageType) +{ + local TgDevice_Mount MountDevice; + local float fPostShieldDamage; + + // End:0x159 + if((r_EffectManager != none) && (Class(DamageType) == none) || !Class(DamageType).default.m_bIgnorePersonalShields) + { + fPostShieldDamage = float(r_EffectManager.ShieldTakeDamage(fDamage)); + // End:0x144 + if((fPostShieldDamage < float(fDamage)) && int(Role) == int(ROLE_Authority)) + { + MountDevice = TgDevice_Mount(GetDeviceByEqPoint(23)); + // End:0x144 + if((MountDevice != none) && MountDevice.IsFiring()) + { + MountDevice.DismountOnDamage(int(float(fDamage) - fPostShieldDamage)); + } + } + fDamage = int(fPostShieldDamage); + } + return fDamage; + //return ReturnValue; +} + +event TakeHealing(float fHealAmount) +{ + local float fHealCap, fNewHealth; + + // End:0x97 + if((GetHealth()) < (GetMaxHealth())) + { + fNewHealth = (GetHealth()) + fHealAmount; + fHealCap = FMax((GetMaxHealth()) - (GetHealBlock()), 0.0000000); + fNewHealth = FClamp(fNewHealth, 0.0000000, fHealCap); + SetProperty(19, fNewHealth); + } + //return; +} + +function PulseStealth() +{ + //return; +} + +singular event EndPulseStealth() +{ + // End:0x53 + if((r_EffectManager != none) && m_StealthPulseEffectGroup != none) + { + r_EffectManager.RemoveProperty(m_StealthPulseEffectGroup); + m_StealthPulseEffectGroup = none; + } + //return; +} + +function AdjustDamage(out int InDamage, out Vector Momentum, Controller InstigatedBy, Vector HitLocation, Class DamageType, TraceHitInfo HitInfo, Actor DamageCauser) +{ + super(Pawn).AdjustDamage(InDamage, Momentum, InstigatedBy, HitLocation, DamageType, HitInfo, DamageCauser); + // End:0x85 + if(ClassIsChildOf(DamageType, Class'TgGame.TgDamageType_AbilityCost')) + { + InDamage = Max(Min(InDamage, Health - 1), 0); + } + // End:0x15D + if(int(TgRepInfo_Game(WorldInfo.GRI).r_GameType) == int(12)) + { + // End:0x15D + if(r_nPawnId == GetLocalPlayerPawn().r_nPawnId) + { + InDamage -= int(float(InDamage) * (float(Health / HealthMax) / 100.0000000)); + // End:0x15D + if(InDamage >= Health) + { + InDamage = Health - 1; + } + } + } + //return; +} + +function SetHealth(int NewHealth) +{ + local TgRepInfo_Player TgPRI; + + SetProperty(19, float(Min(NewHealth, int(GetMaxHealth())))); + TgPRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x84 + if(TgPRI != none) + { + TgPRI.UpdateHealth(NewHealth, int(GetMaxHealth())); + } + //return; +} + +event ModifyHealthProp(int nDamage) +{ + local TgRepInfo_Player TgPRI; + + SetProperty(19, (GetHealth()) - float(nDamage)); + TgPRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x85 + if(TgPRI != none) + { + TgPRI.UpdateHealth(int(GetHealth()), int(GetMaxHealth())); + } + //return; +} + +simulated event DrawMultiLineText(Canvas Canvas, string Text, int X, int Y, int LineHeight) +{ + local string RemainingText; + local int StringLength, LineLength, LineNum; + local FontRenderInfo FontInfo; + + RemainingText = Text; + StringLength = Len(Text); + LineNum = 0; + J0x33: + + // End:0x175 [Loop If] + if(StringLength > 0) + { + LineNum++; + LineLength = InStr(RemainingText, "\n"); + // End:0x8E + if(LineLength == -1) + { + LineLength = StringLength; + } + Canvas.SetPos(float(X), float(Y + (LineHeight * LineNum))); + FontInfo.bClipText = true; + Canvas.DrawText(Left(RemainingText, LineLength), false,,, FontInfo); + RemainingText = Mid(RemainingText, LineLength + 1); + StringLength -= (LineLength + 1); + // [Loop Continue] + goto J0x33; + } + //return; +} + +simulated function bool LoadPlayerIcons() +{ + return true; + //return ReturnValue; +} + +function DamageTakenMaxReset() +{ + m_fDamageTakenMax = 0.0000000; + //return; +} + +function DamageTakenRTPCReset() +{ + m_fDamageTakenRTPC = 0.0000000; + SetRTPCValue('DamageTaken', m_fDamageTakenRTPC); + //return; +} + +simulated function TgPawn GetLocalPlayerPawn() +{ + local TgPlayerController PC; + + // End:0x23 + foreach LocalPlayerControllers(Class'TgGame.TgPlayerController', PC) + { + // End:0x23 + break; + } + // End:0x53 + if(PC != none) + { + return PC.GetTgPawn(); + } + return none; + //return ReturnValue; +} + +simulated function int GetX1CoordBasedOnIndex(int nIndex) +{ + return (GetX2CoordBasedOnIndex(nIndex)) - 50; + //return ReturnValue; +} + +simulated function int GetY1CoordBasedOnIndex(int nIndex) +{ + return (GetY2CoordBasedOnIndex(nIndex)) - 50; + //return ReturnValue; +} + +simulated function int GetX2CoordBasedOnIndex(int nIndex) +{ + return (GetColumnBasedOnIndex(nIndex)) * 51; + //return ReturnValue; +} + +simulated function int GetY2CoordBasedOnIndex(int nIndex) +{ + return ((GetRowBasedOnIndex(nIndex)) * 51) - 1; + //return ReturnValue; +} + +simulated function int GetRowBasedOnIndex(int nIndex) +{ + return ((nIndex - 1) / 5) + 1; + //return ReturnValue; +} + +simulated function int GetColumnBasedOnIndex(int nIndex) +{ + return nIndex - (((GetRowBasedOnIndex(nIndex)) - 1) * 5); + //return ReturnValue; +} + +simulated function NotifyTeamChanged() +{ + OnGroupChange(); + super(Pawn).NotifyTeamChanged(); + //return; +} + +simulated function NotifyLocalPlayerTeamReceived() +{ + RecalculateMaterial(IsFriendlyWithLocalPawn()); + TriggerKismetPlayerInitialized(); + //return; +} + +simulated event OnGroupChange() +{ + local TgPawn LocalPawn; + local TgRepInfo_Player TgPRI; + local TgPlayerController TgPC; + + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0x62 + if(PlayerReplicationInfo != none) + { + TgRepInfo_Player(PlayerReplicationInfo).CheckMembership(); + } + LocalPawn = GetLocalPlayerPawn(); + // End:0x1A1 + if((LocalPawn == self) && LocalPawn != none) + { + TgPRI = TgRepInfo_Player(LocalPawn.PlayerReplicationInfo); + // End:0xF5 + if(TgPRI != none) + { + TgPRI.RecalculateTeamColor(); + } + TgPC = TgPlayerController(Controller); + // End:0x19E + if((TgPC != none) && TgPC.m_OverlayPathMaterial != none) + { + TgPC.m_OverlayPathMaterial.SetScalarParameterValue('Team', float(((int(GetTaskForceNumber()) == int(1)) ? 0 : 1))); + } + } + else + { + NotifyLocalPlayerTeamReceived(); + // End:0x1D9 + if(m_WeaponMesh != none) + { + m_WeaponMesh.NotifyLocalPlayerTeamReceived(); + } + } + //return; +} + +simulated function Color GetTargetBoxColor(TgPawn LocalPlayerPawn) +{ + local Color TargetColor; + + // End:0x76 + if(IsEnemy(LocalPlayerPawn)) + { + TargetColor.R = 255; + TargetColor.G = 0; + TargetColor.B = 0; + } + else + { + TargetColor.R = 0; + TargetColor.G = 255; + TargetColor.B = 0; + } + TargetColor.A = 255; + return TargetColor; + //return ReturnValue; +} + +simulated event string GetPlayerNameForRender() +{ + local TgRepInfo_Player myInfo; + + // End:0x4C + if(PlayerReplicationInfo != none) + { + myInfo = TgRepInfo_Player(PlayerReplicationInfo); + return myInfo.GetPlayerNameForMsgDisplay(); + } + return ""; + //return ReturnValue; +} + +simulated event string GetPlayerTagForRender() +{ + local string toReturn; + + toReturn = ""; + return toReturn; + //return ReturnValue; +} + +simulated event float GetPlayerHealthForRender() +{ + return float(Health); + //return ReturnValue; +} + +simulated event BecomeViewTarget(PlayerController PC) +{ + local TgPlayerController TgPC; + local TgPlayerCamera PlayerCamera; + + TgPC = TgPlayerController(PC); + PlayerCamera = ((TgPC != none) ? TgPlayerCamera(TgPC.PlayerCamera) : none); + // End:0xA7 + if((TgPC != none) && PlayerCamera != none) + { + PlayerCamera.BecomeViewTarget(TgPC); + } + super(Pawn).BecomeViewTarget(PC); + // End:0x101 + if((TgPC != none) && s_Viewers.Find(TgPC) == -1) + { + s_Viewers.AddItem(TgPC); + } + SetRTPCValue('IsPosition3D', 0.0000000); + // End:0x272 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && PlayerCamera != none) + { + PlayBleedEffects(r_bIsBleeding); + PlayDazeEffects(r_bIsDazed); + PlayCCImmuneEffects(r_bIsCCImmune); + PlayOnFireEffects(r_bIsOnFire); + PlayFreezeEffects(r_bIsFrozen); + PlayKnockbackEffects(r_bIsKnockedBack); + PlayMarkEffects(r_bIsMarked); + PlayRootEffects(r_bIsRooted); + PlayPoisonedEffects(r_bIsPoisoned); + PlayCrippledEffects(r_bCrippled); + PlaySlowEffects(r_bIsSlowed); + PlayFlashBangEffects(r_bIsFlashBang); + // End:0x272 + if(Controller != PC) + { + ClientPlayGrassEffects(false); + ClientPlayHiddenEffects(false); + } + } + //return; +} + +simulated event EndViewTarget(PlayerController PC) +{ + local TgPlayerController TgPC; + local int Idx; + + TgPC = TgPlayerController(PC); + // End:0xA0 + if((TgPC != none) && TgPlayerCamera(TgPC.PlayerCamera) != none) + { + TgPlayerCamera(TgPC.PlayerCamera).EndViewTarget(TgPC); + } + Idx = 0; + J0xAB: + + // End:0x114 [Loop If] + if(Idx < 33) + { + // End:0x106 + if(c_EquipForm[Idx] != none) + { + c_EquipForm[Idx].OnEndViewTarget(PC); + } + Idx++; + // [Loop Continue] + goto J0xAB; + } + CleanUpScreenCapturePostProcess(); + super(Actor).EndViewTarget(PC); + SetRTPCValue('IsPosition3D', 1.0000000); + // End:0x16E + if(TgPC != none) + { + s_Viewers.RemoveItem(TgPC); + } + //return; +} + +simulated function bool CalcCamera(float fDeltaTime, out Vector out_CamLoc, out Rotator out_CamRot, out float out_FOV) +{ + return false; + //return ReturnValue; +} + +simulated function GetCameraZoomOverride(out float fZoom, out float fZoomDuration) +{ + // End:0x1C + if(ShouldBeFirstPersonThisTick()) + { + fZoom = 0.0000000; + } + //return; +} + +simulated function bool IgnoreFaceRotationWithInterp() +{ + return false; + //return ReturnValue; +} + +simulated function InterceptInputDeltaRotation(out Rotator rDeltaRotation) +{ + // End:0x27D + if(m_bUsesRecoil) + { + // End:0x145 + if((m_rCurrentRecoil.Pitch * rDeltaRotation.Pitch) < 0) + { + // End:0xED + if(Abs(float(m_rCurrentRecoil.Pitch)) > Abs(float(rDeltaRotation.Pitch))) + { + m_rCurrentRecoil.Pitch += rDeltaRotation.Pitch; + rDeltaRotation.Pitch = 0; + } + else + { + rDeltaRotation.Pitch += m_rCurrentRecoil.Pitch; + m_rCurrentRecoil.Pitch = 0; + } + } + // End:0x27D + if((m_rCurrentRecoil.Yaw * rDeltaRotation.Yaw) < 0) + { + // End:0x225 + if(Abs(float(m_rCurrentRecoil.Yaw)) > Abs(float(rDeltaRotation.Yaw))) + { + m_rCurrentRecoil.Yaw += rDeltaRotation.Yaw; + rDeltaRotation.Yaw = 0; + } + else + { + rDeltaRotation.Yaw += m_rCurrentRecoil.Yaw; + m_rCurrentRecoil.Yaw = 0; + } + } + } + //return; +} + +simulated function FaceRotation(Rotator NewRotation, float DeltaTime) +{ + local Rotator RotationDelta; + + // End:0x23 + if(IgnoreFaceRotationWithInterp()) + { + m_fRemainingFaceRotationInterpTime = m_fFaceRotationInterpTime; + } + else + { + // End:0x85 + if(m_fRemainingFaceRotationInterpTime > 0.0000000) + { + NewRotation = RLerp(NewRotation, Rotation, m_fRemainingFaceRotationInterpTime / m_fFaceRotationInterpTime, true); + m_fRemainingFaceRotationInterpTime -= DeltaTime; + } + // End:0x215 + if(int(Physics) == int(16)) + { + // End:0xD9 + if((int(r_eChargeState) == int(1)) || int(r_eChargeState) == int(3)) + { + NewRotation = Rotation; + } + else + { + // End:0x215 + if(int(r_eChargeState) == int(4)) + { + NewRotation.Pitch = 0; + NewRotation = Normalize(NewRotation); + RotationDelta = NewRotation - Rotation; + RotationDelta = Normalize(RotationDelta); + RotationDelta.Yaw = Clamp(RotationDelta.Yaw, int(-GetChargeTurnRate() * DeltaTime), int((GetChargeTurnRate()) * DeltaTime)); + RotationDelta = Normalize(RotationDelta); + NewRotation = Normalize(Rotation + RotationDelta); + } + } + } + NewRotation.Pitch = 0; + // End:0x256 + if(Rotation != NewRotation) + { + SetRotation(NewRotation); + } + } + ForceUpdateUncompressedRemoteYaw(); + //return; +} + +simulated event PostureTransitionEnded(TgPawn.TG_POSTURE PostureThatEnded) +{ + //return; +} + +function string GetDebugName() +{ + // End:0x12 + if(PlayerReplicationInfo != none) + { + return ""; + } + return GetItemName(string(self)); + //return ReturnValue; +} + +simulated event PlayJumpSound() +{ + local array JumpFxList; + local TgSpecialFx JumpFx; + local int I; + + // End:0x11 + if(Mesh == none) + { + return; + } + JumpFxList = Mesh.FxGetAll('Jump', 0); + I = 0; + J0x52: + + // End:0xEC [Loop If] + if(I < JumpFxList.Length) + { + JumpFx = TgSpecialFx(JumpFxList[I]); + // End:0xDE + if(JumpFx != none) + { + JumpFx.c_Owner = self; + JumpFx.PlaySound(); + } + I++; + // [Loop Continue] + goto J0x52; + } + PlayEmoteAtWorldLocation(45); + //return; +} + +simulated event PlayPreTeleportEffects() +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0xA4 + if((TgPC != none) && Controller == TgPC) + { + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xA4 + if(TgCamera != none) + { + TgCamera.PlayPreTeleportFX(); + } + } + //return; +} + +simulated event PlayTeleportEffects(Vector OriginLocation) +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + local TgSpecialFx TeleportFX1p, TeleportFX3p; + local Vector SocketLocation; + local Rotator SocketRotation; + + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x10B + if((TgPC != none) && Controller == TgPC) + { + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xA4 + if(TgCamera != none) + { + TgCamera.PlayTeleportFx(); + } + TeleportFX1p = GetSpecialFx(6407); + // End:0x10B + if(TeleportFX1p != none) + { + TeleportFX1p.c_Owner = self; + TeleportFX1p.PlaySound(); + } + } + // End:0x27B + if(Mesh != none) + { + Mesh.GetSocketWorldLocationAndRotation('CSO_COG', SocketLocation, SocketRotation); + TeleportFX3p = GetSpecialFx(6693); + // End:0x27B + if((TeleportFX3p != none) && !IsFirstPerson()) + { + TeleportFX3p.c_Owner = self; + TeleportFX3p.SpawnEmitter(SocketLocation, vect(0.0000000, 0.0000000, 1.0000000)); + TeleportFX3p.SpawnEmitter(OriginLocation, vect(0.0000000, 0.0000000, 1.0000000)); + // End:0x253 + if(!IsLocallyControlled()) + { + TeleportFX3p.PlaySoundAt(Location); + } + TeleportFX3p.PlaySoundAt(OriginLocation); + } + } + //return; +} + +simulated event PlayJumpFx() +{ + // End:0x65 + if((Mesh != none) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + FxActivateGroupSelf('Jump', 0); + SetTimer(0.5000000, false, 'StopJumpFx'); + } + //return; +} + +simulated event StopJumpFx() +{ + // End:0x50 + if((Mesh != none) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + FxDeactivateGroupSelf('Jump', 0); + } + //return; +} + +simulated event PlaySpecialJumpFx() +{ + // End:0x65 + if((Mesh != none) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + FxActivateGroupSelf('Jump_Special', 0); + SetTimer(0.5000000, false, 'StopSpecialJumpFx'); + } + //return; +} + +simulated event StopSpecialJumpFx() +{ + // End:0x50 + if((Mesh != none) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + FxDeactivateGroupSelf('Jump_Special', 0); + } + //return; +} + +simulated function CalculateMaterialSwitch(Vector TraceStart, Vector TraceEnd) +{ + local Vector HitLocation; + local PhysicalMaterial TracedMaterial; + local name TracedMaterialType; + local TgPlayerController TgPC; + + TracedMaterialType = 'Default'; + TracedMaterial = TraceWorldPhysicalGeometry(TraceStart, TraceEnd, HitLocation); + // End:0xBA + if((!IsZero(HitLocation) && TracedMaterial != none) && TracedMaterial.MaterialTypeName != 'None') + { + TracedMaterialType = TracedMaterial.MaterialTypeName; + } + SetSwitch('MaterialType', TracedMaterialType); + TgPC = TgPlayerController(Controller); + // End:0x125 + if((TgPC != none) && TgPC.c_bShowFootstepInfoDebug) + { + } + //return; +} + +simulated event PlayLandingSound(Vector LandingVelocity) +{ + local array LandFxList; + local TgSpecialFx LandFx; + local int I; + local TgPlayerController LocalTgPC; + + // End:0x3C + if((Mesh == none) || int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + CalculateMaterialSwitch(Location + ((GetCollisionHeight()) * vect(0.0000000, 0.0000000, -0.5000000)), Location + ((GetCollisionHeight()) * vect(0.0000000, 0.0000000, -1.5000000))); + LandFxList = Mesh.FxGetAll('Land', 0); + I = 0; + J0xCF: + + // End:0x169 [Loop If] + if(I < LandFxList.Length) + { + LandFx = TgSpecialFx(LandFxList[I]); + // End:0x15B + if(LandFx != none) + { + LandFx.c_Owner = self; + LandFx.PlaySound(); + } + I++; + // [Loop Continue] + goto J0xCF; + } + LocalTgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x255 + if((LocalTgPC != none) && LocalTgPC.GetTgPawn() == self) + { + m_LandCameraShake.m_fShakeScale = FClamp(FPctByRange(Abs(LandingVelocity.Z), 0.0000000, Abs(m_fHardLandVelocityCutoff)), 0.1000000, 1.0000000); + LocalTgPC.PlayTgCameraShake(m_LandCameraShake, vect(0.0000000, 0.0000000, 0.0000000), self); + } + //return; +} + +simulated event PlayFootStepSound(int FootDown, Pawn.EFootstepTypes FootStepType) +{ + local array FootstepFxList; + local TgSpecialFx FootstepFx; + local int I, J; + local name DisplayGroupName, DisplayGroupOverride; + + DisplayGroupName = 'FootstepDefault'; + DisplayGroupOverride = GetFootStepOverride(); + // End:0x51 + if(DisplayGroupOverride != 'None') + { + DisplayGroupName = DisplayGroupOverride; + } + // End:0xA3 + if(((Mesh == none) || int(WorldInfo.NetMode) == int(NM_DedicatedServer)) || int(r_CurrentPolymorph) != int(0)) + { + return; + } + CalculateMaterialSwitch(Location + ((GetCollisionHeight()) * vect(0.0000000, 0.0000000, -0.5000000)), Location + ((GetCollisionHeight()) * vect(0.0000000, 0.0000000, -1.5000000))); + FootstepFxList = Mesh.FxGetAll(DisplayGroupName, 0); + I = 0; + J0x136: + + // End:0x475 [Loop If] + if(I < FootstepFxList.Length) + { + FootstepFx = TgSpecialFx(FootstepFxList[I]); + // End:0x467 + if(FootstepFx != none) + { + // End:0x308 + if(IsFirstPerson()) + { + J = 0; + J0x19B: + + // End:0x305 [Loop If] + if(J < FootstepFx.c_SoundList.Length) + { + // End:0x256 + if(FootstepFx.c_SoundList[J].c_AkEvent != none) + { + PlayAkEvent(FootstepFx.c_SoundList[J].c_AkEvent); + } + else + { + // End:0x2F7 + if(FootstepFx.c_SoundList[J].c_SoundObject != none) + { + GetALocalPlayerController().PlaySoundBase(FootstepFx.c_SoundList[J].c_SoundObject); + } + } + J++; + // [Loop Continue] + goto J0x19B; + } + } + else + { + J = 0; + J0x313: + + // End:0x467 [Loop If] + if(J < FootstepFx.c_SoundList.Length) + { + // End:0x3CE + if(FootstepFx.c_SoundList[J].c_AkEvent != none) + { + PlayAkEvent(FootstepFx.c_SoundList[J].c_AkEvent); + } + else + { + // End:0x459 + if(FootstepFx.c_SoundList[J].c_SoundObject != none) + { + PlaySoundBase(FootstepFx.c_SoundList[J].c_SoundObject); + } + } + J++; + // [Loop Continue] + goto J0x313; + } + } + } + I++; + // [Loop Continue] + goto J0x136; + } + //return; +} + +simulated function name GetFootStepOverride() +{ + return 'None'; + //return ReturnValue; +} + +reliable client simulated event ClientTriggerGlobalEventClass(Class InEventClass, Actor InInstigator, optional int ActivateIndex = -1) +{ + TriggerGlobalEventClass(InEventClass, InInstigator, ActivateIndex); + //return; +} + +simulated function bool IsFiringMelee() +{ + local TgDevice MeleeDevice; + + MeleeDevice = GetDeviceByEqPoint(17); + // End:0x45 + if(MeleeDevice != none) + { + return MeleeDevice.IsFiring(); + } + return false; + //return ReturnValue; +} + +simulated function PlayDying(Class dmgType, Vector HitLoc) +{ + local int I; + local TgDevice Dev; + local TgPlayerController TgPC; + + EndPhysTween(true); + EndPhysGrab(true); + PlayPolymorphEffects(true); + ToggleSilhouetteVisibility(false, true); + m_DeathDamageType = Class(dmgType); + m_DeathHitLocation = HitLoc; + // End:0x94 + if((int(r_eIsStealthed) != int(0)) && int(Role) == int(ROLE_Authority)) + { + ApplyStealthServer(ROLE_None); + } + // End:0xC8 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + ApplyStealthClient(); + } + StopFiringAllDevices(true, false); + PutAllCardsOnCooldown(); + KillDeployables(false); + KillOwnedBots(); + // End:0x162 + if(Mesh != none) + { + Mesh.FxDeactivateGroup('Phase', -1); + Mesh.FxDeactivateGroup('Posture', -1); + } + // End:0x20E + if(int(Role) < int(ROLE_Authority)) + { + I = 0; + J0x181: + + // End:0x20E [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0x200 + if((Dev != none) && Dev.r_bConsumedOnDeath) + { + Dev.ConsumeDevice(); + } + I++; + // [Loop Continue] + goto J0x181; + } + } + // End:0x2D4 + if(int(Role) == int(ROLE_Authority)) + { + r_DeathInfo.bDead = true; + r_DeathInfo.dmgType = dmgType; + r_DeathInfo.HitLoc = HitLoc; + r_nResetCharacter = 0; + // End:0x2C8 + if(PlayerReplicationInfo != none) + { + PlayerReplicationInfo.Deaths += 1; + } + bReplicateMovement = false; + } + PlayDyingEffects(); + // End:0x351 + if(((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && Controller != none) && Controller.IsLocalPlayerController()) + { + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_LocalPlayerDied', self); + } + bPlayedDeath = true; + HitDamageType = dmgType; + TakeHitLocation = HitLoc; + GotoState(DyingStateName); + ExitCombat(); + // End:0x459 + if((((int(Role) == int(ROLE_Authority)) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && Controller != none) && Controller.IsLocalPlayerController()) + { + TgPC = TgPlayerController(Controller); + // End:0x459 + if(TgPC != none) + { + TgPC.UpdatePlayerVitalsUI(); + } + } + //return; +} + +simulated function FindNewTargetTimer() +{ + local TgDemoRecSpectator DemoPC; + + DemoPC = TgDemoRecSpectator(GetALocalPlayerController()); + // End:0x72 + if((DemoPC != none) && DemoPC.GetViewTarget() == self) + { + DemoPC.FindNextClosestAssistedViewTarget(); + } + //return; +} + +simulated function PlayDyingEffects() +{ + local Vector FXLocation; + local Rotator FXRotation; + local TgSpecialFx DyingSpecialFX; + + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + SetTimer(2.0000000, false, 'FindNewTargetTimer'); + // End:0x3F7 + if(Mesh != none) + { + Mesh.FxDeactivateGroup('WhileAlive', 0); + // End:0x1A4 + if(int(r_eDeathReason) == int(1)) + { + DyingSpecialFX = TgSpecialFx(Mesh.FxGet('Despawned', 0)); + // End:0x196 + if(DyingSpecialFX != none) + { + // End:0x155 + if(!Mesh.GetSocketWorldLocationAndRotation(DyingSpecialFX.c_nmSocket, FXLocation, FXRotation)) + { + FXLocation = Location; + FXRotation = Rotation; + } + Mesh.FxActivateIndependant('Despawned', 0, FXLocation, Vector(FXRotation)); + } + SetMeshVisibility(false); + } + else + { + // End:0x1C6 + if(int(r_eDeathReason) == int(2)) + { + SetMeshVisibility(false); + } + else + { + // End:0x251 + if(int(r_eDeathReason) == int(3)) + { + SetMeshVisibility(false); + c_bMeshHiddenDueToDeath = true; + DyingSpecialFX = GetSpecialFx(6283); + // End:0x24E + if(DyingSpecialFX != none) + { + DyingSpecialFX.SpawnEmitter(Location, Vector(Rotation)); + } + } + else + { + // End:0x2D9 + if(int(r_eDeathReason) == int(4)) + { + Mesh.bNoSkeletonUpdate = true; + AttachDeathAnimationFX(m_DeathDamageType.default.m_nDeathSpecialFXId, m_DeathDamageType.default.m_nmDeathSpecialFXSocket); + PlayDeathAnimation(); + } + else + { + PlayHitReactionMaterialPulse(); + PlayDeathAnimation(); + DyingSpecialFX = TgSpecialFx(Mesh.FxGet('PawnDied', 0)); + // End:0x3F7 + if(DyingSpecialFX != none) + { + // End:0x3B6 + if(!Mesh.GetSocketWorldLocationAndRotation(DyingSpecialFX.c_nmSocket, FXLocation, FXRotation)) + { + FXLocation = Location; + FXRotation = Rotation; + } + Mesh.FxActivateIndependant('PawnDied', 0, FXLocation, Vector(FXRotation)); + } + } + } + } + } + } + // End:0x440 + if(TgPlayerController(Controller) != none) + { + TgPlayerController(Controller).SetSoundMode('GA_Death'); + } + // End:0x457 + if(IsLocallyControlled()) + { + BeginLocalDeathRTPC(); + } + //return; +} + +simulated function bool AllowRagdoll() +{ + return false; + //return ReturnValue; +} + +simulated event PlayDeathAnimation() +{ + local Vector AngVelocity, TraceEnd; + local int I; + local MaterialInstanceConstant OverrideMaterial, OldMaterial; + local Texture Diffuse, Normal, Specular, Mask; + local LinearColor DIF_Color1, DIF_Color2, SPC_Multiplier, SPC_Power, DIF_Power; + + local bool bHarvestMaterials, bForceAnimation; + local SkelControlBase SkelControl; + local name AnimName; + + // End:0x0F + if(m_bHasPlayedDeathAnimation) + { + return; + } + m_bHasPlayedDeathAnimation = true; + TraceEnd = Location; + TraceEnd.Z -= ((GetCollisionHeight()) + 8.0000000); + // End:0xC84 + if(Mesh != none) + { + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + Mesh.MinDistFactorForKinematicUpdate = 0.0000000; + // End:0xCC + if(int(r_eDeathReason) == int(1)) + { + c_bMeshHiddenDueToDeath = true; + return; + } + else + { + bForceAnimation = AllowRagdoll(); + // End:0x22B + if((HasDeathPostureAnimation()) && int(r_eDeathReason) == int(0)) + { + // End:0x153 + if((!m_bForceDeathAnim && int(Physics) == int(2)) && FastTrace(TraceEnd, Location)) + { + m_bHasPlayedDeathAnimation = false; + return; + } + PlayFullBodyAnim(GetDeathAnimName(), 1.0000000, 0.0000000, -1.0000000, false, true); + // End:0x21D + if(((m_DeathDamageType != none) && m_DeathDamageType.default.m_bCanPlayDeathSpecialFXOnDefaultDeath) && m_DeathDamageType.default.m_nDeathSpecialFXId != -1) + { + AttachDeathAnimationFX(m_DeathDamageType.default.m_nDeathSpecialFXId, m_DeathDamageType.default.m_nmDeathSpecialFXSocket); + } + ToggleSkelControlLocks(true); + } + else + { + // End:0xB5A + if((m_bUseDamageTypeForDeathAnim && m_DeathDamageType != none) && Mesh.FindAnimSequence('Death_Generic_01') != none) + { + // End:0x39D + if(m_DeathDamageType.default.m_bImpulseMesh && !bForceAnimation) + { + InitRagdoll(); + AngVelocity = Vector(Rotation) * RandRange(m_DeathDamageType.default.m_fMinAngularVelocity, m_DeathDamageType.default.m_fMaxAngularVelocity); + Mesh.SetRBAngularVelocity(AngVelocity, true); + Mesh.AddImpulse(r_DeathInfo.Momentum); + Mesh.SetNotifyRigidBodyCollision(true); + } + else + { + // End:0x3EC + if((!m_bForceDeathAnim && int(Physics) == int(2)) && FastTrace(TraceEnd, Location)) + { + m_bHasPlayedDeathAnimation = false; + return; + } + Mesh.PhysicsWeight = 0.0000000; + SetPhysics(0); + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + PlayFullBodyAnim(m_DeathDamageType.static.GetRandomDeathAnimName(), 1.0000000, 0.0000000, -1.0000000, false, true); + I = 0; + J0x473: + + // End:0x537 [Loop If] + if(I < m_DeathDamageType.default.ActivateSkelControlListOnDeath.Length) + { + SkelControl = Mesh.FindSkelControl(m_DeathDamageType.default.ActivateSkelControlListOnDeath[I]); + // End:0x529 + if(SkelControl != none) + { + SkelControl.SetSkelControlStrength(1.0000000, 0.0000000); + } + I++; + // [Loop Continue] + goto J0x473; + } + } + // End:0x5A5 + if(m_DeathDamageType.default.m_nDeathSpecialFXId != -1) + { + AttachDeathAnimationFX(m_DeathDamageType.default.m_nDeathSpecialFXId, m_DeathDamageType.default.m_nmDeathSpecialFXSocket); + } + // End:0xA98 + if(m_DeathDamageType.default.m_OverrideMaterial != none) + { + I = 0; + J0x5D4: + + // End:0xA98 [Loop If] + if(I < Mesh.GetNumElements()) + { + OldMaterial = MaterialInstanceConstant(Mesh.GetMaterial(I)); + bHarvestMaterials = m_DeathDamageType.default.m_bHarvestMaterialParameters && OldMaterial != none; + // End:0x83D + if(bHarvestMaterials) + { + OldMaterial.GetTextureParameterValue('Diffuse', Diffuse); + OldMaterial.GetTextureParameterValue('Normal', Normal); + OldMaterial.GetTextureParameterValue('Specular', Specular); + OldMaterial.GetTextureParameterValue('Mask', Mask); + OldMaterial.GetVectorParameterValue('DIF_Color1', DIF_Color1); + OldMaterial.GetVectorParameterValue('DIF_Color2', DIF_Color2); + OldMaterial.GetVectorParameterValue('SPC_Multiplier', SPC_Multiplier); + OldMaterial.GetVectorParameterValue('SPC_Power', SPC_Power); + OldMaterial.GetVectorParameterValue('DIF_Power', DIF_Power); + } + Mesh.SetMaterial(I, m_DeathDamageType.default.m_OverrideMaterial); + OverrideMaterial = Mesh.CreateAndSetMaterialInstanceConstant(I); + // End:0xA8A + if(bHarvestMaterials) + { + // End:0xA8A + if(OverrideMaterial != none) + { + OverrideMaterial.SetTextureParameterValue('Diffuse', Diffuse); + OverrideMaterial.SetTextureParameterValue('Normal', Normal); + OverrideMaterial.SetTextureParameterValue('Specular', Specular); + OverrideMaterial.SetTextureParameterValue('Mask', Mask); + OverrideMaterial.SetVectorParameterValue('DIF_Color1', DIF_Color1); + OverrideMaterial.SetVectorParameterValue('DIF_Color2', DIF_Color2); + OverrideMaterial.SetVectorParameterValue('SPC_Multiplier', SPC_Multiplier); + OverrideMaterial.SetVectorParameterValue('SPC_Power', SPC_Power); + OverrideMaterial.SetVectorParameterValue('DIF_Power', DIF_Power); + } + } + I++; + // [Loop Continue] + goto J0x5D4; + } + } + // End:0xADB + if(m_DeathDamageType.default.m_bFreezeAnimsOnDeath) + { + Mesh.bNoSkeletonUpdate = true; + } + // End:0xB57 + if(m_DeathDamageType.default.m_fLifeAfterDeathSeconds > 0.0000000) + { + m_fLifeAfterDeathSecs = m_DeathDamageType.default.m_fLifeAfterDeathSeconds; + SetTimer(m_DeathDamageType.default.m_fLifeAfterDeathSeconds, false, 'OnLifeAfterDeathTimerExpired'); + } + } + else + { + // End:0xB74 + if(m_bHasDestroyedMesh) + { + OnSwapToDestroyedMesh(); + } + else + { + // End:0xC64 + if(bForceAnimation) + { + // End:0xBD0 + if((!m_bForceDeathAnim && int(Physics) == int(2)) && FastTrace(TraceEnd, Location)) + { + m_bHasPlayedDeathAnimation = false; + return; + } + Mesh.PhysicsWeight = 0.0000000; + SetPhysics(0); + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + AnimName = GetDeathAnimName(); + // End:0xC61 + if(AnimName != 'None') + { + PlayFullBodyAnim(AnimName, 1.0000000, 0.0000000, -1.0000000, false, true); + } + } + else + { + // End:0xC84 + if((GetPropCurrentValue(145)) <= 0.0000000) + { + RagdollPawn(); + } + } + } + } + } + } + } + //return; +} + +simulated function RagdollPawn() +{ + Mesh.MinDistFactorForKinematicUpdate = 0.0000000; + InitRagdoll(); + Mesh.AddImpulse(r_DeathInfo.Momentum, Location); + //return; +} + +simulated event name GetDeathAnimName() +{ + return 'Death'; + //return ReturnValue; +} + +// Export UTgPawn::execAttachDeathAnimationFX(FFrame&, void* const) +native function AttachDeathAnimationFX(int SpecialFXId, name SocketName); + +simulated function OnSwapToDestroyedMesh() +{ + // End:0xAC + if(TgPlayerController(GetALocalPlayerController()).AllowRagdoll()) + { + Mesh.MinDistFactorForKinematicUpdate = 0.0000000; + SwapToDestroyedMesh(); + Mesh.MinDistFactorForKinematicUpdate = 0.0000000; + Mesh.UpdateRBBonesFromSpaceBases(true, true); + InitRagdoll(); + } + else + { + c_bMeshHiddenDueToDeath = true; + } + //return; +} + +simulated function CleanUpDyingEffects() +{ + //return; +} + +reliable server function RemoveAllEffectsOnDeath() +{ + // End:0x2E + if(r_EffectManager != none) + { + r_EffectManager.RemoveAllEffectsOnDeath(); + } + //return; +} + +simulated event Vector GetPhysTweenTargetLocation() +{ + return r_vPhysTweenTarget; + //return ReturnValue; +} + +simulated event StartPhysTween(Vector Target, float fTime, TgPawn.ETweenState tweenState, optional bool bCollideWithWorld = false, optional bool bRotateTowardsTarget = false) +{ + // End:0x20 + if((GetHealth()) <= 0.0000000) + { + return; + } + // End:0x3F + if(int(m_eLocalTweenState) != int(0)) + { + EndPhysTween(true); + } + // End:0x5E + if(int(m_eLocalGrabState) != int(0)) + { + EndPhysGrab(true); + } + // End:0x98 + if(int(Role) >= int(ROLE_AutonomousProxy)) + { + r_vPhysTweenTarget = Target; + r_fPhysTweenDuration = fTime; + } + m_fPhysTweenDist = VSize((GetPhysTweenTargetLocation()) - Location); + BeginTween(tweenState, bCollideWithWorld); + m_eLocalTweenState = tweenState; + // End:0x168 + if(int(Role) == int(ROLE_Authority)) + { + r_eTweenState = tweenState; + r_nPhysTweenFlags = 0; + r_nPhysTweenFlags = r_nPhysTweenFlags | ((bCollideWithWorld) ? 1 : 0); + r_nPhysTweenFlags = r_nPhysTweenFlags | ((bRotateTowardsTarget) ? 2 : 0); + } + // End:0x193 + if(r_fPhysTweenDuration > float(0)) + { + SetTimer(r_fPhysTweenDuration, false, 'EndPhysTween'); + } + else + { + EndPhysTween(); + } + //return; +} + +final simulated event UpdatePhysTweenTargetLocation(Vector NewTarget, float updatedTime) +{ + // End:0x3A + if(int(Role) >= int(ROLE_AutonomousProxy)) + { + r_vPhysTweenTarget = NewTarget; + r_fPhysTweenDuration = updatedTime; + } + m_fPhysTweenDist = VSize((GetPhysTweenTargetLocation()) - Location); + //return; +} + +final simulated event EndPhysTween(optional bool bInterrupted = false) +{ + local TgPawn.ETweenState oldTweenState; + + ClearTimer('EndPhysTween'); + // End:0xBD + if(int(m_eLocalTweenState) != int(0)) + { + oldTweenState = m_eLocalTweenState; + r_vPhysTweenTarget = GetPhysTweenTargetLocation(); + m_eLocalTweenState = 0; + r_bPhysTweenInterrupted = bInterrupted; + // End:0xA0 + if(int(Role) == int(ROLE_Authority)) + { + r_eTweenState = 0; + r_nPhysTweenFlags = 0; + } + EndTween(oldTweenState, bInterrupted); + } + //return; +} + +protected simulated function BeginTween(TgPawn.ETweenState newTweenState, optional bool bCollideWithWorld = false) +{ + switch(newTweenState) + { + // End:0x42 + case 2: + s_bCanApplyEffects = false; + DefaultTweenStart(true,, bCollideWithWorld); + // End:0x14E + break; + // End:0x60 + case 1: + DefaultTweenStart(,,, bCollideWithWorld); + // End:0x14E + break; + // End:0x12D + case 3: + m_bIsInvisibleToAI = true; + InterruptUse(); + InterruptAllDevices(); + DefaultTweenStart(,,, bCollideWithWorld); + m_nPhysTweenPostureId = PushPosture(11); + Velocity.X = 0.0000000; + Velocity.Y = 0.0000000; + Velocity.Z = -GetGravityZ() * r_fPhysTweenDuration; + // End:0x14E + break; + // End:0x14B + case 4: + DefaultTweenStart(true, true, bCollideWithWorld); + // End:0x14E + break; + // End:0xFFFF + default: + break; + } + switch(newTweenState) + { + // End:0xFFFF + default: + ForceAllGrabTargetsDetach(); + TeleportNotify(); + // End:0x17C + break; + break; + } + //return; +} + +final simulated function DefaultTweenStart(optional bool bCanBeHit = false, optional bool bRemoveRoots = false, optional bool bCollideWithWorld = false) +{ + SetCollision(bCanBeHit, bCanBeHit, !bCanBeHit); + bCollideWorld = bCollideWithWorld; + // End:0x65 + if(int(Physics) == int(10)) + { + TermRagdoll(); + } + SetPhysics(15); + bIgnoreForces = true; + // End:0xA9 + if(bRemoveRoots) + { + r_EffectManager.RemoveEffectGroupsByCategory(10050); + } + //return; +} + +event SendHitReaction(byte HitDirection) +{ + local byte Counter; + + Counter = byte(int(s_BitPackedHitReaction) & int(15)); + Counter++; + // End:0x48 + if(int(Counter) > int(15)) + { + Counter = 0; + } + s_BitPackedHitReaction = 0; + s_BitPackedHitReaction = byte(int(s_BitPackedHitReaction) << int(6)); + HitDirection = byte(int(HitDirection) << int(4)); + s_BitPackedHitReaction = byte(int(s_BitPackedHitReaction) | int(HitDirection)); + s_BitPackedHitReaction = byte(int(s_BitPackedHitReaction) | int(Counter)); + // End:0x114 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + PlayHitReaction(int(s_BitPackedHitReaction)); + } + FlashHitReaction(); + //return; +} + +simulated event PlayHitReaction(int BitPackedHitReaction) +{ + local byte Dir; + local bool bMoving; + local name HitReactionAnimName; + local int I; + local TgObject.RecoilHitDir RecoilDir; + local Vector CamLoc; + local Rotator CamRot; + local PlayerController PC; + + return; + // End:0x18 + if((GetHealth()) <= 0.0000000) + { + return; + } + Dir = byte((BitPackedHitReaction & 48) >> 4); + // End:0x2A7 + if(int(m_HitReactionType) == int(1)) + { + PC = GetALocalPlayerController(); + // End:0x2A4 + if(PC != none) + { + PC.GetPlayerViewPoint(CamLoc, CamRot); + // End:0x2A4 + if(VSizeSq(CamLoc - Location) < float(4000000)) + { + // End:0xE2 + if(int(Dir) == int(0)) + { + RecoilDir = 0; + } + else + { + // End:0x105 + if(int(Dir) == int(1)) + { + RecoilDir = 1; + } + else + { + // End:0x128 + if(int(Dir) == int(2)) + { + RecoilDir = 2; + } + else + { + RecoilDir = 3; + } + } + } + bMoving = VSizeSq2D(Velocity) > 0.0000000; + I = 0; + J0x164: + + // End:0x2A4 [Loop If] + if(I < m_HitReactionSkelControls.Length) + { + // End:0x296 + if(((int(m_HitReactionSkelControls[I].m_MoveType) == int(0)) || (int(m_HitReactionSkelControls[I].m_MoveType) == int(1)) && !bMoving) || (int(m_HitReactionSkelControls[I].m_MoveType) == int(2)) && bMoving) + { + m_HitReactionSkelControls[I].SetRecoilDir(RecoilDir); + m_HitReactionSkelControls[I].bPlayRecoil = true; + } + I++; + // [Loop Continue] + goto J0x164; + } + } + } + } + else + { + // End:0x2E8 + if(int(Dir) == int(0)) + { + HitReactionAnimName = ((FRand() > 0.5000000) ? 'HitReaction_FromFront_Ranged' : 'HitReaction_FromFront_Ranged_02'); + } + else + { + // End:0x312 + if(int(Dir) == int(1)) + { + HitReactionAnimName = 'HitReaction_FromFront_Ranged'; + } + else + { + // End:0x33C + if(int(Dir) == int(2)) + { + HitReactionAnimName = 'HitReaction_FromFront_Ranged'; + } + else + { + HitReactionAnimName = 'HitReaction_FromFront_Ranged'; + } + } + } + PlayFullBodyAnim(HitReactionAnimName, 1.0000000, 0.0000000, m_fHitReactionBlendOutTime, false, true); + } + //return; +} + +protected simulated function EndTween(TgPawn.ETweenState endingTweenState, bool bInterrupted) +{ + switch(endingTweenState) + { + // End:0x3B + case 2: + s_bCanApplyEffects = true; + DefaultTweenEnd(bInterrupted); + // End:0x122 + break; + // End:0x57 + case 1: + DefaultTweenEnd(bInterrupted); + // End:0x122 + break; + // End:0x103 + case 3: + m_bIsInvisibleToAI = false; + DefaultTweenEnd(bInterrupted); + PopPosture(m_nPhysTweenPostureId); + m_nPhysTweenPostureId = 0; + // End:0x103 + if(DynamicLightEnvironmentComponent(LightEnvironment) != none) + { + DynamicLightEnvironmentComponent(LightEnvironment).bDynamic = DynamicLightEnvironmentComponent(default.LightEnvironment).bDynamic; + } + // End:0x11F + case 4: + DefaultTweenEnd(bInterrupted); + // End:0x122 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +final simulated function DefaultTweenEnd(bool bInterrupted) +{ + local Vector Destination; + + bCollideWorld = true; + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + bIgnoreForces = default.bIgnoreForces; + // End:0x8B + if(!bInterrupted) + { + SetLocation(GetPhysTweenTargetLocation()); + SetPhysics(1); + Landed(vect(0.0000000, 0.0000000, 1.0000000), none); + } + else + { + Destination = Location; + // End:0xE9 + if(FindSpot(GetCollisionExtent(), Destination)) + { + // End:0xE1 + if(Destination != Location) + { + SetLocation(Destination); + } + SetPhysics(2); + } + else + { + SetLocation(GetPhysTweenTargetLocation()); + SetPhysics(1); + Landed(vect(0.0000000, 0.0000000, 1.0000000), none); + } + } + // End:0x14B + if(IsAliveAndWell()) + { + SetCollisionType(CollisionType); + SetCollision(bCollideActors, bBlockActors, false); + } + //return; +} + +final simulated event StartPhysGrab(TgPawn Source, float fTime, TgPawn.EGrabState grabState, optional name grabSocket, optional Vector grabLocOffset, optional Rotator grabRotOffset) +{ + // End:0x1C + if((GetHealth()) <= 0.0000000) + { + return; + } + else + { + // End:0x4E + if((int(Role) >= int(ROLE_AutonomousProxy)) && !IsGrabSourceValid(Source)) + { + return; + } + } + // End:0x6D + if(int(m_eLocalTweenState) != int(0)) + { + EndPhysTween(true); + } + // End:0x8C + if(int(m_eLocalGrabState) != int(0)) + { + EndPhysGrab(true); + } + // End:0xFF + if(int(Role) >= int(ROLE_AutonomousProxy)) + { + r_GrabSource = Source; + r_fGrabDuration = fTime; + r_GrabAttachSocket = grabSocket; + r_vGrabLocationOffset = grabLocOffset; + r_rGrabRotationOffset = grabRotOffset; + } + // End:0x137 + if(r_GrabSource != none) + { + r_GrabSource.OnGrabTargetAttach(grabState, self); + } + BeginGrab(grabState); + m_eLocalGrabState = grabState; + // End:0x184 + if(int(Role) == int(ROLE_Authority)) + { + r_eGrabState = grabState; + } + // End:0x1B1 + if(r_fGrabDuration > 0.0000000) + { + SetTimer(r_fGrabDuration, false, 'EndPhysGrab'); + } + else + { + // End:0x1CF + if(r_fGrabDuration == 0.0000000) + { + EndPhysGrab(); + } + } + //return; +} + +final simulated event EndPhysGrab(optional bool bInterrupted = false) +{ + local TgPawn.EGrabState oldGrabState; + + ClearTimer('EndPhysGrab'); + // End:0xE0 + if(int(m_eLocalGrabState) != int(0)) + { + oldGrabState = m_eLocalGrabState; + m_eLocalGrabState = 0; + r_bGrabInterrupted = bInterrupted; + // End:0x81 + if(int(Role) == int(ROLE_Authority)) + { + r_eGrabState = 0; + } + // End:0xC3 + if(r_GrabSource != none) + { + r_GrabSource.OnGrabTargetDetach(oldGrabState, self, bInterrupted); + } + EndGrab(oldGrabState, bInterrupted); + } + //return; +} + +final event ForceAllGrabTargetsDetach(optional TgPawn.EGrabState State) +{ + local int I; + local TgPawn AttachedPawn; + local bool bShouldDetachThisState; + + // End:0x26C + if(int(Role) == int(ROLE_Authority)) + { + I = Attached.Length - 1; + J0x2C: + + // End:0x145 [Loop If] + if(I >= 0) + { + AttachedPawn = TgPawn(Attached[I]); + // End:0x137 + if(AttachedPawn != none) + { + bShouldDetachThisState = ((int(State) == int(0)) ? int(AttachedPawn.m_eLocalGrabState) > int(0) : int(State) == int(AttachedPawn.m_eLocalGrabState)); + // End:0x137 + if(bShouldDetachThisState && AttachedPawn.r_GrabSource == self) + { + AttachedPawn.EndPhysGrab(true); + } + } + I--; + // [Loop Continue] + goto J0x2C; + } + I = s_GrabbedTargets.Length - 1; + J0x15C: + + // End:0x26C [Loop If] + if(I >= 0) + { + AttachedPawn = s_GrabbedTargets[I]; + // End:0x25E + if(AttachedPawn != none) + { + bShouldDetachThisState = ((int(State) == int(0)) ? int(AttachedPawn.m_eLocalGrabState) > int(0) : int(State) == int(AttachedPawn.m_eLocalGrabState)); + // End:0x25E + if(bShouldDetachThisState && AttachedPawn.r_GrabSource == self) + { + AttachedPawn.EndPhysGrab(true); + } + } + I--; + // [Loop Continue] + goto J0x15C; + } + } + //return; +} + +protected simulated function OnGrabTargetAttach(TgPawn.EGrabState newGrabState, TgPawn Target) +{ + //return; +} + +protected simulated function OnGrabTargetDetach(TgPawn.EGrabState endingGrabState, TgPawn Target, bool bInterrupted) +{ + //return; +} + +final simulated event bool ShouldGrabBreakStealth(TgPawn.EGrabState grabState) +{ + return false; + //return ReturnValue; +} + +final simulated event bool IsBaselessGrab(TgPawn.EGrabState grabState) +{ + return false; + //return ReturnValue; +} + +protected simulated function BeginGrab(TgPawn.EGrabState newGrabState) +{ + switch(newGrabState) + { + // End:0x7E + case 1: + InterruptUse(); + InterruptAllDevices(); + DefaultGrabStart(true); + // End:0x5D + if(m_nPhysGrabPostureId < 0) + { + m_nPhysGrabPostureId = PushPosture(18); + } + SetCollision(false, false); + bCollideWorld = false; + bCollideComplex = false; + // End:0xEC + break; + // End:0xE9 + case 2: + InterruptUse(); + InterruptAllDevices(); + DefaultGrabStart(true); + // End:0xC8 + if(m_nPhysGrabPostureId < 0) + { + m_nPhysGrabPostureId = PushPosture(18); + } + SetCollision(false, false); + bCollideWorld = false; + bCollideComplex = false; + // End:0xEC + break; + // End:0xFFFF + default: + break; + } + // End:0x132 + if(ShouldGrabBreakStealth(newGrabState) && r_EffectManager != none) + { + r_EffectManager.RemoveAllStealthEffects(); + } + //return; +} + +protected simulated function EndGrab(TgPawn.EGrabState endingGrabState, bool bInterrupted) +{ + switch(endingGrabState) + { + // End:0x8B + case 1: + DefaultGrabEnd(bInterrupted); + // End:0x5D + if(m_nPhysGrabPostureId >= 0) + { + PopPosture(m_nPhysGrabPostureId); + m_nPhysGrabPostureId = -1; + } + // End:0x70 + if(IsAliveAndWell()) + { + SetCollision(true, true); + } + bCollideWorld = true; + bCollideComplex = false; + // End:0x106 + break; + // End:0x103 + case 2: + DefaultGrabEnd(bInterrupted); + // End:0xD5 + if(m_nPhysGrabPostureId >= 0) + { + PopPosture(m_nPhysGrabPostureId); + m_nPhysGrabPostureId = -1; + } + // End:0xE8 + if(IsAliveAndWell()) + { + SetCollision(true, true); + } + bCollideWorld = true; + bCollideComplex = false; + // End:0x106 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +final simulated function DefaultGrabStart(optional bool bRemoveRoots = false) +{ + local SkeletalMeshSocket Socket; + local Vector WorldLoc; + local Rotator WorldRot; + + m_PreGrabCollideActors = bCollideActors; + m_PreGrabBlockActors = bBlockActors; + m_PreGrabCollideWorld = bCollideWorld; + m_PreGrabCollideComplex = bCollideComplex; + // End:0x89 + if(int(Role) >= int(ROLE_AutonomousProxy)) + { + // End:0x89 + if(r_GrabSource == none) + { + EndPhysGrab(); + return; + } + } + m_bCausesPushblock = false; + bIgnoreForces = true; + m_bCanBeKnockedBack = false; + SetCollision(false, false, false); + WorldLoc = r_GrabSource.Location + r_vGrabLocationOffset; + WorldRot = r_GrabSource.Rotation + r_rGrabRotationOffset; + SetLocation(WorldLoc); + SetRotation(WorldRot); + // End:0x143 + if(r_GrabSource == none) + { + return; + } + SetPhysics(0); + SetHardAttach(true); + // End:0x2AD + if(r_GrabSource.Mesh != none) + { + Socket = r_GrabSource.Mesh.GetSocketByName(r_GrabAttachSocket); + // End:0x275 + if(Socket != none) + { + m_vGrabDestRelLocation = Socket.RelativeLocation; + m_rGrabDestRelRotation = Socket.RelativeRotation; + SetBase(r_GrabSource, vect(0.0000000, 0.0000000, 1.0000000), r_GrabSource.Mesh, Socket.BoneName); + } + else + { + SetBase(r_GrabSource); + m_vGrabDestRelLocation = RelativeLocation; + m_rGrabDestRelRotation = RelativeRotation; + } + } + else + { + SetBase(r_GrabSource); + m_vGrabDestRelLocation = RelativeLocation; + m_rGrabDestRelRotation = RelativeRotation; + } + SetPhysics(0); + SetCollision(m_PreGrabCollideActors, m_PreGrabBlockActors); + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + // End:0x360 + if(bRemoveRoots) + { + r_EffectManager.RemoveEffectGroupsByCategory(10050); + } + //return; +} + +final simulated function DefaultGrabEnd(bool bInterrupted) +{ + local Vector dismountAdjust; + + SetBase(none); + SetHardAttach(false); + // End:0x128 + if((int(Role) == int(ROLE_Authority)) && SetLocation(r_GrabSource.Location + r_vGrabLocationOffset)) + { + SetRotation(r_GrabSource.Rotation + r_rGrabRotationOffset); + // End:0x128 + if(!IsLocallyControlled() && PlayerController(Controller) != none) + { + PlayerController(Controller).ClientSetLocation(r_GrabSource.Location + r_vGrabLocationOffset, r_GrabSource.Rotation + r_rGrabRotationOffset); + } + } + dismountAdjust = -Vector(Rotation); + dismountAdjust.Z = 1.0000000; + m_bCausesPushblock = true; + bIgnoreForces = default.bIgnoreForces; + m_bCanBeKnockedBack = default.m_bCanBeKnockedBack; + // End:0x1B0 + if(int(Physics) == int(0)) + { + SetPhysics(2); + } + AddVelocity(dismountAdjust * float(200), Location, none); + // End:0x1F3 + if(int(Role) >= int(ROLE_AutonomousProxy)) + { + r_GrabSource = none; + } + //return; +} + +final simulated function BaselessGrabStart(optional bool bRemoveRoots = false) +{ + // End:0x35 + if(int(Role) >= int(ROLE_AutonomousProxy)) + { + // End:0x35 + if(r_GrabSource == none) + { + EndPhysGrab(); + return; + } + } + // End:0x81 + if(int(r_GrabSource.Role) == int(ROLE_Authority)) + { + r_GrabSource.s_GrabbedTargets.AddItem(self); + } + // End:0xB4 + if(bRemoveRoots) + { + r_EffectManager.RemoveEffectGroupsByCategory(10050); + } + //return; +} + +final simulated function BaselessGrabEnd(bool bInterrupted) +{ + // End:0x4C + if(int(r_GrabSource.Role) == int(ROLE_Authority)) + { + r_GrabSource.s_GrabbedTargets.RemoveItem(self); + } + // End:0x6B + if(int(Role) >= int(ROLE_AutonomousProxy)) + { + r_GrabSource = none; + } + //return; +} + +event AddVelocity(Vector NewVelocity, Vector HitLocation, Class DamageType, optional TraceHitInfo HitInfo) +{ + // End:0x3A + if((int(Physics) == int(2)) && r_bIsJumping) + { + r_bIsJumping = false; + ClientCancelJump(); + } + super(Pawn).AddVelocity(NewVelocity, HitLocation, DamageType, HitInfo); + //return; +} + +simulated function bool CanBeBaseForPawn(Pawn aPawn) +{ + local TgPawn TgPawn; + + TgPawn = TgPawn(aPawn); + return super(Pawn).CanBeBaseForPawn(aPawn) || (TgPawn != none) && TgPawn.r_GrabSource == self; + //return ReturnValue; +} + +function SetMovementPhysics() +{ + // End:0x2C + if((int(m_eLocalGrabState) > int(0)) && int(Physics) == int(0)) + { + return; + } + super(Pawn).SetMovementPhysics(); + //return; +} + +simulated function TickGrab(float DeltaSeconds) +{ + local Vector tweenLoc; + local Rotator tweenRot; + + // End:0x41 + if((int(Physics) != int(0)) && !IsBaselessGrab(m_eLocalGrabState)) + { + BeginGrab(m_eLocalGrabState); + } + // End:0x7E + if((int(Role) >= int(ROLE_AutonomousProxy)) && !IsGrabSourceValid(r_GrabSource)) + { + EndPhysGrab(true); + return; + } + // End:0x11F + if(!IsBaselessGrab(m_eLocalGrabState)) + { + tweenLoc = VInterpTo(RelativeLocation, m_vGrabDestRelLocation, DeltaSeconds, 20.0000000); + tweenRot = TweenRelRotation(DeltaSeconds, RelativeRotation, m_rGrabDestRelRotation); + SetRelativeLocation(tweenLoc); + SetRelativeRotation(tweenRot); + } + //return; +} + +event IncrementCannotBeGrabSource(optional bool bBreakGrabs = true) +{ + // End:0x4D + if(int(Role) == int(ROLE_Authority)) + { + // End:0x42 + if((r_nCannotBeGrabSource == 0) && bBreakGrabs) + { + ForceAllGrabTargetsDetach(); + } + r_nCannotBeGrabSource++; + } + //return; +} + +event DecrementCannotBeGrabSource() +{ + // End:0x2D + if(int(Role) == int(ROLE_Authority)) + { + r_nCannotBeGrabSource = Max(r_nCannotBeGrabSource - 1, 0); + } + //return; +} + +simulated event bool IsGrabSourceValid(TgPawn Target, optional bool bAllowTurrets = false, optional bool bAllowStealthed = false) +{ + // End:0x1E + if(Target == none) + { + return false; + } + else + { + // End:0x47 + if(!Target.IsAliveAndWell()) + { + return false; + } + else + { + // End:0x75 + if(int(Target.m_eLocalGrabState) != int(0)) + { + return false; + } + else + { + // End:0xB7 + if(Target.IsStealthed(GetPRI()) && !bAllowStealthed) + { + return false; + } + else + { + // End:0xC8 + if(r_nCannotBeGrabSource > 0) + { + return false; + } + } + } + } + } + switch(Target.m_eLocalTweenState) + { + // End:0xFA + case 0: + return true; + // End:0x102 + break; + // End:0xFFFF + default: + return false; + break; + } + // Failed to format nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x102 + //return ReturnValue; + // Failed to format nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x102 + // Failed to format nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x102 + // Failed to format remaining nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x102 +} + +simulated function float GetChargeTurnRate() +{ + return 16383.0000000; + //return ReturnValue; +} + +final simulated event StartPhysCharge(TgPawn.EChargeState newChargeType, Rotator InitialDirection, optional Vector InitialLocation, optional float fChargeSpeed = 0.0000000, optional float fChargeRange = 0.0000000, optional bool bIngoreHumanoidBlocking = false, optional bool bUsePhysFlyingForCharge) +{ + // End:0x2F + if((GetHealth()) <= 0.0000000) + { + return; + } + // End:0x160 + if(int(Role) >= int(ROLE_AutonomousProxy)) + { + r_eChargeState = newChargeType; + r_fChargeInitialYaw = float(InitialDirection.Yaw); + r_fChargeInitialPitch = float(InitialDirection.Pitch); + r_bUsePhysFlyingForCharge = bUsePhysFlyingForCharge; + // End:0xE2 + if(!IsZero(InitialLocation)) + { + r_vChargeInitialLocation = InitialLocation; + } + else + { + r_vChargeInitialLocation = Location; + } + r_fChargeSpeed = fChargeSpeed; + r_fChargeRange = fChargeRange; + r_bChargeIgnoreHumanoidBlocking = bIngoreHumanoidBlocking; + // End:0x160 + if((int(Role) == int(ROLE_Authority)) && r_bIsKnockedBack) + { + Knock(false); + } + } + // End:0x18F + if((int(Physics) == int(WalkingPhysics)) || m_bCanChargeInAir) + { + SetPhysics(16); + } + m_bWantsCharge = true; + //return; +} + +final simulated event EndPhysCharge(bool bInterrupted) +{ + // End:0x73 + if(int(Role) >= int(ROLE_AutonomousProxy)) + { + r_eChargeState = 0; + r_fChargeInitialYaw = 0.0000000; + r_fChargeInitialPitch = 0.0000000; + r_vChargeInitialLocation = vect(0.0000000, 0.0000000, 0.0000000); + r_fChargeSpeed = 0.0000000; + r_fChargeRange = 0.0000000; + } + // End:0x88 + if(m_bEndChargeInFalling) + { + SetPhysics(2); + } + else + { + // End:0xA1 + if(int(Physics) == int(16)) + { + SetPhysics(1); + } + } + m_bWantsCharge = false; + //return; +} + +simulated function GetHitLocationForProximityTouch(Actor Target, out Vector HitLocation, out Vector HitNormal) +{ + local Vector accHitLocation, accHitNormal; + + // End:0xB7 + if(TraceComponent(accHitLocation, accHitNormal, Target.CollisionComponent, Target.Location, HitLocation, vect(0.0000000, 0.0000000, 0.0000000),, Target.bCollideComplex)) + { + HitLocation = accHitLocation; + HitNormal = accHitNormal; + } + //return; +} + +simulated event bool PredictChargeHit(Vector ChargeDir, Vector ChargeStart, float fChargeRange, Vector HitLocation, Vector HitNormal, Vector TargetLocation, Actor Other) +{ + local Vector accHitLocation, accHitNormal; + + accHitLocation = HitLocation; + accHitNormal = HitNormal; + GetHitLocationForProximityTouch(Other, accHitLocation, accHitNormal); + // End:0x78 + if((Normal2D(TargetLocation - HitLocation) Dot ChargeDir) <= -0.2000000) + { + return false; + } + // End:0xB9 + if((fChargeRange > float(0)) && VSize2D(accHitLocation - ChargeStart) > fChargeRange) + { + return false; + } + return true; + //return ReturnValue; +} + +simulated event bool VerifyChargeHit(Vector HitLocation, Vector HitNormal, Vector TargetLocation, Actor Other) +{ + local TgPawn pTgPawn; + local Rotator chargeForward; + local Vector accHitLocation, accHitNormal; + + // End:0x1E0 + if(int(r_eChargeState) != int(0)) + { + accHitLocation = HitLocation; + accHitNormal = HitNormal; + GetHitLocationForProximityTouch(Other, accHitLocation, accHitNormal); + chargeForward = Rotation; + // End:0xEC + if((int(r_eChargeState) == int(1)) || int(r_eChargeState) == int(2)) + { + chargeForward.Yaw = int(r_fChargeInitialYaw); + chargeForward.Pitch = int(r_fChargeInitialPitch); + } + // End:0x11B + if((Normal2D(TargetLocation - Location) Dot Vector(chargeForward)) <= -0.2000000) + { + return false; + } + // End:0x186 + if((int(r_eChargeState) == int(1)) || int(r_eChargeState) == int(2)) + { + // End:0x186 + if((r_fChargeRange > float(0)) && VSize2D(accHitLocation - r_vChargeInitialLocation) > r_fChargeRange) + { + return false; + } + } + pTgPawn = TgPawn(Other); + // End:0x1DE + if((pTgPawn != none) && pTgPawn.GetPropCurrentValue(132) > float(0)) + { + return false; + } + return true; + } + return false; + //return ReturnValue; +} + +simulated function StopAllAnimations() +{ + local AnimNodeSequence SeqNode; + + // End:0x56 + foreach Mesh.AllAnimNodes(Class'Engine.AnimNodeSequence', SeqNode) + { + SeqNode.bPlaying = false; + } + //return; +} + +simulated function TimerDestroy() +{ + //return; +} + +event EquipBestInHandDevice(optional bool bForceFastClear) +{ + local TgDevice TgD; + + // End:0x27 + if(m_EquippedDevices[1] != none) + { + TgD = m_EquippedDevices[1]; + } + SetActiveWeapon(TgD, bForceFastClear); + //return; +} + +singular simulated function OnRespawn() +{ + local TgPlayerController localPC; + local int I; + local TgDevice TgD; + + // End:0x4C + if(Mesh != none) + { + Mesh.SetAnimTreeTemplate(Mesh.AnimTreeTemplate); + } + // End:0xF7 + if((IsLocallyControlled() && m_WeaponMesh != none) && m_WeaponMesh.m_WeaponMesh1P != none) + { + m_WeaponMesh.m_WeaponMesh1P.SetAnimTreeTemplate(m_WeaponMesh.m_WeaponMesh1P.AnimTreeTemplate); + } + TermRagdoll(); + // End:0x174 + if(TgPlayerController(Controller) != none) + { + TgPlayerController(Controller).bDuck = 0; + TgPlayerController(Controller).SetSoundMode('Default'); + } + SwapToLiveMesh(); + ToggleSkelControlLocks(false); + localPC = TgPlayerController(GetALocalPlayerController()); + // End:0x20D + if(WorldInfo.IsPlayingDemo() || (localPC != none) && !localPC.AllowRagdoll()) + { + SetUsePhysicsWithAnimation(false); + } + else + { + SetUsePhysicsWithAnimation(true); + } + FxActivateGroupSelf('WhileAlive', 0); + GotoState('Auto'); + m_PostureStack.Postures.Remove(0, m_PostureStack.Postures.Length); + m_PostureStack.GUIDs.Remove(0, m_PostureStack.GUIDs.Length); + // End:0x2EC + if(TgPlayerController(Controller) != none) + { + c_StunnedPostureID = -1; + c_FearedPostureID = -1; + } + m_ePosture = 0; + bPlayedDeath = false; + OnPostureChange(); + m_RecentHealList.Remove(0, m_RecentHealList.Length); + EquipBestInHandDevice(true); + TgD = GetDeviceByEqPoint(4); + // End:0x398 + if(TgD != none) + { + TgD.ResetCooldown(int(TgD.CurrentFireMode), 0.0000000); + } + BlendToAnimTreeDeviceType(); + RemoveDeathEffects(); + c_bMeshHiddenDueToDeath = false; + r_eDeathReason = 0; + m_bHasPlayedDeathAnimation = false; + m_bForceDeathAnim = false; + m_ExecutionMaterialFadeOutTimer = m_ExecutionMaterialFadeOutDuration; + ClearReplacementMaterial(); + ApplyPawnShadows(true); + r_bJustJumped = false; + I = 0; + J0x41B: + + // End:0x484 [Loop If] + if(I < 33) + { + TgD = GetDeviceByEqPoint(I); + // End:0x476 + if(TgD != none) + { + TgD.OnOwnerRespawn(); + } + I++; + // [Loop Continue] + goto J0x41B; + } + // End:0x4B8 + if(int(Role) == int(ROLE_Authority)) + { + m_bWasKilledByEnvironment = false; + SyncClientEnergy(GetEnergy()); + } + // End:0x5D2 + if(m_WeaponMesh != none) + { + // End:0x520 + if(m_WeaponMesh.m_WeaponMesh1P != none) + { + m_WeaponMesh.m_WeaponMesh1P.SetHidden(false); + } + // End:0x579 + if(m_WeaponMesh.m_HandsMesh != none) + { + m_WeaponMesh.m_HandsMesh.SetHidden(false); + } + // End:0x5D2 + if(m_WeaponMesh.m_HeadMesh1P != none) + { + m_WeaponMesh.m_HeadMesh1P.SetHidden(false); + } + } + // End:0x5F7 + if(r_bIsMounted) + { + PlayMountingEffects(false, r_bUseMountPosture); + } + else + { + // End:0x61B + if(m_MountMesh != none) + { + StopMountingEffects(false, r_bUseMountPosture); + } + } + PlayPolymorphEffects(); + SetMountOnRespawn(); + PawnOnRevive(); + // End:0x651 + if(IsLocallyControlled()) + { + EndLocalDeathRTPC(); + } + //return; +} + +simulated function OnLiveRespawn() +{ + local int I; + local TgDevice TgD; + + // End:0x4C + if(Mesh != none) + { + Mesh.SetAnimTreeTemplate(Mesh.AnimTreeTemplate); + } + // End:0xF7 + if((IsLocallyControlled() && m_WeaponMesh != none) && m_WeaponMesh.m_WeaponMesh1P != none) + { + m_WeaponMesh.m_WeaponMesh1P.SetAnimTreeTemplate(m_WeaponMesh.m_WeaponMesh1P.AnimTreeTemplate); + } + TermRagdoll(); + // End:0x121 + if(int(Role) == int(ROLE_Authority)) + { + m_bWasKilledByEnvironment = false; + } + I = 0; + J0x12C: + + // End:0x1EB [Loop If] + if(I < 33) + { + TgD = GetDeviceByEqPoint(I); + // End:0x1DD + if(TgD != none) + { + // End:0x1A9 + if(TgD.m_bHandDevice) + { + TgD.ReloadAmmoWithSynchronization(); + } + // End:0x1DD + if(int(Role) == int(ROLE_Authority)) + { + TgD.r_nProjectiles = 0; + } + } + I++; + // [Loop Continue] + goto J0x12C; + } + SetMountOnRespawn(); + //return; +} + +simulated function SetMountOnRespawn() +{ + local Class GameClass; + local TgRepInfo_Game GRI; + local TgPlayerController TgPC; + + // End:0x37 + if((WorldInfo == none) || WorldInfo.GRI == none) + { + return; + } + // End:0x8D + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0x8D + if(TgPC != none) + { + return; + } + } + // End:0xB1 + if(WorldInfo.IsPlayingTimelapse()) + { + return; + } + GameClass = Class(WorldInfo.GRI.GameClass); + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x14A + if((GameClass == none) || GRI == none) + { + return; + } + AutoMount((GameClass.default.m_bAutoMountOnRespawn && MySpawnGatesAreOpen()) && !GRI.r_bRoundEnding); + //return; +} + +simulated event AutoMount(bool bShouldBeMounted, optional bool bToggleMount = false) +{ + local TgDevice_Mount MountDevice; + + MountDevice = TgDevice_Mount(GetDeviceByEqPoint(23)); + // End:0x170 + if(MountDevice != none) + { + // End:0x6F + if(bToggleMount) + { + bShouldBeMounted = !MountDevice.IsFiring(); + } + else + { + // End:0x9F + if(MountDevice.IsFiring() == bShouldBeMounted) + { + return; + } + } + // End:0x151 + if(bShouldBeMounted) + { + // End:0xED + if(MountDevice.IsDeviceCoolingDown()) + { + MountDevice.EndCooldown(); + } + MountDevice.m_bForceFireDueToRespawn = true; + MountDevice.Use(); + MountDevice.m_bForceFireDueToRespawn = false; + } + else + { + MountDevice.AutoDismount(); + } + } + //return; +} + +function LiveRespawn(bool bResetHealth, bool bResetDevices) +{ + // End:0x16 + if(int(Role) < int(ROLE_Authority)) + { + return; + } + // End:0x2D + if(r_bInCombatFlag) + { + ExitCombat(); + } + // End:0x53 + if(bResetDevices) + { + StopFiringAllDevices(true, true, true, true); + ReapplyLoadoutEffects(true); + } + // End:0x74 + if(bResetHealth) + { + SetSpawnHealth(); + SetSpawnMana(); + } + m_LastDamager = none; + s_Damagers.Remove(0, s_Damagers.Length); + r_nLiveRespawn++; + bNetDirty = true; + OnLiveRespawn(); + //return; +} + +reliable client simulated function SyncClientEnergy(float energy) +{ + SetProperty(2, energy); + //return; +} + +simulated function RemoveDeathEffects() +{ + // End:0x18 + if(m_bInitialized) + { + SetMeshVisibility(true); + } + //return; +} + +simulated function SetPawnState(name NewState) +{ + GotoState(NewState); + //return; +} + +simulated event bool IsInItemShop() +{ + local TgItemShopVolume ItemShop; + + // End:0x1C + foreach TouchingActors(Class'TgGame.TgItemShopVolume', ItemShop) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated event bool IsInFriendlyItemShop() +{ + local TgItemShopVolume ItemShop; + + // End:0x4B + foreach TouchingActors(Class'TgGame.TgItemShopVolume', ItemShop) + { + // End:0x4A + if(ItemShop.TaskforceIndex == int(GetTaskForceNumber())) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated event bool SetActiveWeapon(Weapon NewWeapon, optional bool bForceFastClear = false) +{ + local TgDevice Dev; + local WeaponMeshSwapStrategy SwapStrategy; + + // End:0x8E + if(InvManager != none) + { + Dev = TgDevice(NewWeapon); + // End:0x8E + if(Dev != none) + { + TgInventoryManager(InvManager).SetPendingWeapon(Dev); + SetTargetingDevice(Dev, SwapStrategy); + return true; + } + } + return false; + //return ReturnValue; +} + +simulated event SetTargetingDevice(TgDevice Dev, WeaponMeshSwapStrategy SwapStrategy) +{ + local TgDevice PreviousTargetingDevice; + local TgObject.TG_EQUIP_POINT eqp; + + PreviousTargetingDevice = c_CurrentTargetingDevice; + // End:0x95 + if(((Dev != none) && c_nLockInHandToTargetingDevice > 0) && int(Dev.r_eEquippedAt) != int(1)) + { + // End:0x80 + if(Dev.LogDebugInfo()) + { + } + Dev = GetDeviceByEqPoint(1); + } + // End:0xFD + if(((PreviousTargetingDevice != none) && PreviousTargetingDevice.LogDebugInfo()) || (Dev != none) && Dev.LogDebugInfo()) + { + } + // End:0x25C + if(c_CurrentTargetingDevice != Dev) + { + // End:0x1AC + if(c_CurrentTargetingDevice != none) + { + // End:0x18D + if(!c_CurrentTargetingDevice.IsFunctionallyToggleDevice() && !c_CurrentTargetingDevice.IsA('TgDevice_HitPulse')) + { + c_CurrentTargetingDevice.StopFire(); + } + c_CurrentTargetingDevice.ExitTargetingMode(); + } + c_CurrentTargetingDevice = Dev; + // End:0x25C + if(c_CurrentTargetingDevice != none) + { + c_CurrentTargetingDevice.EnterTargetingMode(); + // End:0x25C + if(m_WeaponMesh != none) + { + eqp = GetEquipSlotOfDevice(Dev); + m_WeaponMesh.PlayMeshTransitionAnimation(SwapStrategy, eqp, PreviousTargetingDevice, Dev); + } + } + } + //return; +} + +simulated function TgObject.TG_EQUIP_POINT GetEquipSlotOfDevice(TgDevice Dev) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x56 [Loop If] + if(I < 33) + { + // End:0x48 + if(m_EquippedDevices[I] == Dev) + { + return byte(I); + } + I++; + // [Loop Continue] + goto J0x0B; + } + return 0; + //return ReturnValue; +} + +event LockTargetingDeviceToInHand(bool bEnable) +{ + local WeaponMeshSwapStrategy SwapStrategy; + + c_nLockInHandToTargetingDevice += ((bEnable) ? 1 : -1); + c_nLockInHandToTargetingDevice = Max(c_nLockInHandToTargetingDevice, 0); + // End:0x63 + if(c_nLockInHandToTargetingDevice > 0) + { + SetTargetingDevice(GetDeviceByEqPoint(1), SwapStrategy); + } + //return; +} + +simulated function name GetDefaultCameraMode(PlayerController RequestedBy) +{ + // End:0x82 + if(((RequestedBy != none) && RequestedBy.PlayerCamera != none) && RequestedBy.PlayerCamera.CameraStyle == 'Fixed') + { + return 'Fixed'; + } + return 'ThirdPerson'; + //return ReturnValue; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + local int I, J; + local editinline PrimitiveComponent P; + local string S; + local float XL, YL; + local ReverbVolume ReverbVolume; + + super(Pawn).DisplayDebug(HUD, out_YL, out_YPos); + // End:0x19F + if(HUD.ShouldDisplayDebug('Speed')) + { + HUD.Canvas.DrawText("Speed:" @ string(VSize(Velocity))); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + HUD.Canvas.DrawText("Velocity:" @ string(Velocity)); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + } + // End:0x1CA + if(HUD.ShouldDisplayDebug('footsteps')) + { + } + // End:0x384 + if(HUD.ShouldDisplayDebug('Reverb')) + { + ReverbVolume = GetCurrentReverbVolume(); + // End:0x329 + if(ReverbVolume != none) + { + HUD.Canvas.DrawText("Reverb Volume:" @ string(ReverbVolume)); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + HUD.Canvas.DrawText("AUX:" @ string(ReverbVolume.AuxBusName)); + } + else + { + HUD.Canvas.DrawText("Not currently in a reverb volume"); + } + } + // End:0xAA1 + if(HUD.ShouldDisplayDebug('PawnComponent')) + { + HUD.Canvas.SetDrawColor(255, 255, 128, 255); + I = 0; + J0x3F6: + + // End:0xA30 [Loop If] + if(I < Mesh.Attachments.Length) + { + HUD.Canvas.SetPos(4.0000000, out_YPos); + S = "" $ string(Mesh.Attachments[I].Component); + HUD.Canvas.StrLen(S, XL, YL); + J = Len(S); + J0x515: + + // End:0x5EA [Loop If] + if((XL > (HUD.Canvas.ClipX * 0.5000000)) && J > 10) + { + J--; + S = Right(S, J); + HUD.Canvas.StrLen(S, XL, YL); + // [Loop Continue] + goto J0x515; + } + HUD.Canvas.DrawText(((("Attachment" @ string(I)) @ " = ") @ string(Mesh.Attachments[I].BoneName)) @ S); + out_YPos += out_YL; + P = PrimitiveComponent(Mesh.Attachments[I].Component); + // End:0xA22 + if(P != none) + { + HUD.Canvas.SetPos(24.0000000, out_YPos); + HUD.Canvas.DrawText(((("Component = " @ string(P.Owner)) @ string(P.HiddenGame)) @ string(P.bOnlyOwnerSee)) @ string(P.bOwnerNoSee)); + out_YPos += out_YL; + S = "" $ string(P); + HUD.Canvas.StrLen(S, XL, YL); + J = Len(S); + J0x8A4: + + // End:0x979 [Loop If] + if((XL > (HUD.Canvas.ClipX * 0.5000000)) && J > 10) + { + J--; + S = Right(S, J); + HUD.Canvas.StrLen(S, XL, YL); + // [Loop Continue] + goto J0x8A4; + } + HUD.Canvas.SetPos(24.0000000, out_YPos); + HUD.Canvas.DrawText("Component = " @ S); + out_YPos += out_YL; + } + I++; + // [Loop Continue] + goto J0x3F6; + } + out_YPos += (out_YL * float(2)); + HUD.Canvas.SetPos(24.0000000, out_YPos); + out_YPos += out_YL; + } + //return; +} + +simulated function TgPawnControllerSet() +{ + local TgPlayerController TgPC; + + UpdatePlayerStatUI(); + TgPC = TgPlayerController(Controller); + // End:0x54 + if(TgPC != none) + { + TgPC.UpdatePlayerVitalsUI(); + } + //return; +} + +simulated event UpdateWeaponMesh() +{ + local int DeviceID; + local Class WeaponClass; + local WeaponMeshSwapStrategy SwapStrategy; + local TgDeviceForm_Inhand InhandForm; + + // End:0x248 + if(((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && c_bUpdatesWeaponMesh) && c_EquipForm[1] != none) + { + // End:0x9D + if(m_WeaponMesh != none) + { + m_WeaponMesh.SetHidden(true); + m_WeaponMesh.Destroy(); + m_WeaponMesh = none; + } + DeviceID = c_EquipForm[1].c_EquipDeviceInfo.nDeviceId; + // End:0x1B1 + if((m_WeaponMesh == none) && DeviceID > 0) + { + WeaponClass = Class(DynamicLoadObject(Class'TgGame.TgWeaponMeshActor'.static.GetWeaponClassById(DeviceID), Class'Core.Class')); + m_WeaponMesh = Spawn(WeaponClass.default.m_WeaponMeshActorClass, self,, Location, Rotation,, true); + m_WeaponMesh.m_OwningPawn = self; + } + // End:0x1FC + if(m_WeaponMesh != none) + { + m_WeaponMesh.SetActiveWeapon(1, DeviceID, WeaponClass, SwapStrategy); + } + InhandForm = TgDeviceForm_Inhand(c_EquipForm[1]); + // End:0x248 + if(InhandForm != none) + { + InhandForm.OnWeaponMeshUpdated(); + } + } + //return; +} + +simulated event UpdateFirstValidFlashEventIdx() +{ + c_nLastProcessedFlashEventIdx = r_nFirstValidFlashEventIdx - 1; + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x18 + if(NativeReplicatedEvent(VarName)) + { + return; + } + // End:0x5A + if(VarName == 'r_ReplicatedDeviceState') + { + // End:0x55 + if(c_bJustStartedTimelapsePlayback || c_bJustEndedTimelapsePlayback) + { + OnStartTimelapseNewDeviceState(); + } + return; + } + else + { + // End:0x118 + if(VarName == 'r_bIsMounted') + { + // End:0x115 + if(((!IsLocallyControlled() || c_bJustStartedTimelapsePlayback) || c_bJustEndedTimelapsePlayback) || WorldInfo.IsPlayingTimelapse()) + { + ((r_bIsMounted) ? PlayMountingEffects(false, r_bUseMountPosture) : StopMountingEffects(!c_bJustStartedTimelapsePlayback || c_bJustEndedTimelapsePlayback, r_bUseMountPosture)); + } + } + else + { + // End:0x1D1 + if(VarName == 'r_eTweenState') + { + // End:0x1A7 + if((int(r_eTweenState) != int(0)) && r_vPhysTweenTarget != vect(0.0000000, 0.0000000, 0.0000000)) + { + StartPhysTween(r_vPhysTweenTarget, r_fPhysTweenDuration, r_eTweenState, (r_nPhysTweenFlags & 1) != 0, (r_nPhysTweenFlags & 2) != 0); + } + else + { + // End:0x1CF + if(int(r_eTweenState) == int(0)) + { + EndPhysTween(r_bPhysTweenInterrupted); + } + } + return; + } + } + } + // End:0x278 + if(VarName == 'r_eGrabState') + { + // End:0x250 + if((int(r_eGrabState) != int(0)) && r_GrabSource != none) + { + StartPhysGrab(r_GrabSource, r_fGrabDuration, r_eGrabState, r_GrabAttachSocket, r_vGrabLocationOffset, r_rGrabRotationOffset); + } + else + { + // End:0x278 + if(int(r_eGrabState) == int(0)) + { + EndPhysGrab(r_bGrabInterrupted); + } + } + } + // End:0x29B + if(VarName == 'r_nBigTeleportCount') + { + PostBigTeleport(); + return; + } + // End:0x2E4 + if(VarName == 'r_nPhase') + { + OnPhaseEnded(c_PreviousPhase); + OnPhaseChange(); + c_PreviousPhase = r_nPhase; + return; + } + // End:0x311 + if(VarName == 'r_bIsMarked') + { + PlayMarkEffects(r_bIsMarked); + return; + } + // End:0x33E + if(VarName == 'r_bIsDazed') + { + PlayDazeEffects(r_bIsDazed); + return; + } + // End:0x36B + if(VarName == 'r_bIsCCImmune') + { + PlayCCImmuneEffects(r_bIsCCImmune); + return; + } + // End:0x398 + if(VarName == 'r_bIsBleeding') + { + PlayBleedEffects(r_bIsBleeding); + return; + } + // End:0x3C5 + if(VarName == 'r_bIsOnFire') + { + PlayOnFireEffects(r_bIsOnFire); + return; + } + // End:0x3F2 + if(VarName == 'r_bIsFrozen') + { + PlayFreezeEffects(r_bIsFrozen); + return; + } + // End:0x41F + if(VarName == 'r_bIsRooted') + { + PlayRootEffects(r_bIsRooted); + return; + } + // End:0x44C + if(VarName == 'r_bIsKnockedBack') + { + PlayKnockbackEffects(r_bIsKnockedBack); + return; + } + // End:0x479 + if(VarName == 'r_bIsPoisoned') + { + PlayPoisonedEffects(r_bIsPoisoned); + return; + } + // End:0x4A9 + if(VarName == 'r_bCrippled') + { + PlayCrippledEffects(r_bCrippled); + return; + } + else + { + // End:0x4D6 + if(VarName == 'r_bIsFlashBang') + { + PlayFlashBangEffects(r_bIsFlashBang); + return; + } + } + // End:0x503 + if(VarName == 'r_bIsSlowed') + { + PlaySlowEffects(r_bIsSlowed); + return; + } + // End:0x540 + if(VarName == 'r_bDisarmed') + { + // End:0x534 + if(r_bDisarmed) + { + PlayDisarmFX(); + } + else + { + StopDisarmFX(); + } + return; + } + // End:0x56D + if(VarName == 'r_bHasRespawnBeacon') + { + UpdateHasRespawnBeacon(r_bHasRespawnBeacon); + return; + } + // End:0x590 + if(VarName == 'r_eCurrentStunType') + { + ClientSetStun(); + return; + } + // End:0x5C0 + if(VarName == 'r_nFlashQueIndex') + { + // End:0x5C0 + if(m_bInitialized) + { + FlashEventUpdate(); + return; + } + } + // End:0x609 + if(VarName == 'r_eDesiredInHand') + { + // End:0x607 + if((int(Role) == int(ROLE_SimulatedProxy)) && m_bInitialized == true) + { + UpdateWeaponMesh(); + } + return; + } + // End:0x65F + if(((VarName == 'r_eIsStealthed') || VarName == 'r_bIsVolumeStealthed') || VarName == 'r_bIsVolumeStealthFading') + { + ApplyStealthClient(); + return; + } + // End:0x69A + if(VarName == 'r_bDisableVolumeStealth') + { + // End:0x690 + if(r_bDisableVolumeStealth) + { + DisableVolumeStealth(); + } + else + { + EnableVolumeStealth(); + } + } + // End:0x755 + if(VarName == 'r_DeathInfo') + { + // End:0x713 + if(r_DeathInfo.bDead) + { + PlayDying(r_DeathInfo.dmgType, r_DeathInfo.HitLoc); + } + // End:0x753 + if(TgPlayerController(Controller) != none) + { + TgPlayerController(Controller).UpdatePlayerVitalsUI(); + } + return; + } + // End:0x78B + if(VarName == 'r_nResetCharacter') + { + // End:0x789 + if(r_nResetCharacter > 0) + { + GotoState('Auto'); + } + return; + } + // End:0x7BD + if(VarName == 'r_nLiveRespawn') + { + // End:0x7BB + if(r_nLiveRespawn > 0) + { + OnLiveRespawn(); + } + return; + } + // End:0x7D6 + if(VarName == 'r_TargetActor') + { + return; + } + // End:0x7FA + if(VarName == 'Controller') + { + TgPawnControllerSet(); + } + else + { + // End:0x81E + if(VarName == 'r_CurrentPropValues') + { + ReceivedPropValues(); + } + else + { + // End:0x842 + if(VarName == 'r_fCachedMaxHealth') + { + ReceivedCachedMaxHealth(); + } + else + { + // End:0x87C + if(VarName == 'r_ReplicatedState') + { + // End:0x879 + if(!IsInState('Dying')) + { + GotoState(r_ReplicatedState); + } + } + else + { + // End:0x8C3 + if((VarName == 'r_fIntroOffset') || VarName == 'r_fIntroTime') + { + SetupIntroAnimNodesAndTimers(); + SetWhiteOutStartTimer(); + } + else + { + // End:0x8E8 + if(VarName == 'r_CurrentPolymorph') + { + PlayPolymorphEffects(); + } + else + { + // End:0x92C + if(VarName == 'r_PolymorphInstigator') + { + ReloadMeshAssemblies(); + SwapToLiveMesh(); + OnPolymorphChanged(!IsAliveAndWell()); + } + else + { + // End:0x950 + if(VarName == 'r_ObscuringDeployables') + { + UpdateObscuringDeployableState(); + } + else + { + // End:0x974 + if(VarName == 'r_BlindingDeployables') + { + UpdateBlindingDeployableState(); + } + else + { + // End:0x9A2 + if(VarName == 'r_nBodyMeshOverride') + { + ReloadMeshAssemblies(); + SwapToLiveMesh(); + } + else + { + // End:0x9D8 + if(VarName == 'r_bInCombatFlag') + { + SetRTPCValue('InCombatState', float(r_bInCombatFlag)); + } + } + } + } + } + } + } + } + } + } + } + super(Pawn).ReplicatedEvent(VarName); + //return; +} + +simulated event ReceivedPropValues() +{ + //return; +} + +simulated event ReceivedCachedMaxHealth() +{ + //return; +} + +event ApplyStealthServer(TgPawn.STEALTH_TYPE eStealthed, optional float fRate = 9999.0000000, optional bool bForce = false) +{ + local TgRepInfo_TaskForce tfri; + + // End:0x1CB + if(int(r_eIsStealthed) != int(eStealthed)) + { + r_eIsStealthed = eStealthed; + TgRepInfo_Player(PlayerReplicationInfo).r_bIsStealthed = int(eStealthed) > int(1); + fRate = ((fRate >= 0.0000000) ? fRate : 9999.0000000); + r_fStealthFadeRate = ((int(eStealthed) == int(0)) ? 0.0000000 : FMax(fRate, r_fStealthFadeRate)); + // End:0x105 + if(int(eStealthed) != int(0)) + { + ForceAllGrabTargetsDetach(); + TeleportNotify(); + } + // End:0x196 + foreach WorldInfo.DynamicActors(Class'TgGame.TgRepInfo_TaskForce', tfri) + { + // End:0x195 + if(tfri.s_MinimapManager != none) + { + tfri.s_MinimapManager.ForceUpdate(GetPRI()); + } + } + // End:0x1CB + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + ApplyStealthClient(); + } + } + //return; +} + +event InterruptStealth(optional TgDevice OriginatingDevice) +{ + local TgDevice stealthDevice; + + // End:0x17 + if((GetPropCurrentValue(24)) > float(0)) + { + return; + } + // End:0x45 + if(r_EffectManager != none) + { + r_EffectManager.RemoveAllStealthEffects(); + } + stealthDevice = GetDeviceByClass(Class'TgGame.TgDevice_Stealth'); + // End:0x90 + if(stealthDevice != none) + { + stealthDevice.InterruptFiring(); + } + s_fDamageTakenDuringStealth = 0.0000000; + ClearTimer('ClearStealthDamage'); + DisableVolumeStealth(); + //return; +} + +event InterruptLift(optional TgDevice OriginatingDevice) +{ + // End:0x36 + if(r_EffectManager != none) + { + r_EffectManager.RemoveEffectGroupsByCategory(16657); + } + //return; +} + +simulated function bool ShouldShowAsStealthed(bool bDetected) +{ + local PlayerController PC; + local bool bShowAsStealthed; + + PC = GetALocalPlayerController(); + // End:0x25 + if(PC == none) + { + return false; + } + // End:0x181 + if(!IsFriendlyWithLocalPawn() && !PC.IsSpectating()) + { + // End:0x87 + if((IsHardStealthed()) && !bDetected) + { + bShowAsStealthed = true; + } + else + { + // End:0xD0 + if(((int(r_eIsStealthed) == int(2)) && !bDetected) && c_fStealthFadeValue >= 1.0000000) + { + bShowAsStealthed = true; + } + else + { + // End:0x10E + if((r_bIsVolumeStealthed && r_bIsVolumeStealthFading) && c_fVolumeFadeValue >= float(1)) + { + bShowAsStealthed = true; + } + else + { + // End:0x12E + if(c_fDistanceFadeValue == float(1)) + { + bShowAsStealthed = true; + } + else + { + // End:0x150 + if(c_fObscuringDeployableFadeValue >= 1.0000000) + { + bShowAsStealthed = true; + } + else + { + // End:0x172 + if(c_fBlindingDeployableFadeValue >= 1.0000000) + { + bShowAsStealthed = true; + } + else + { + bShowAsStealthed = false; + } + } + } + } + } + } + } + else + { + // End:0x1C9 + if(!PC.IsSpectating() && c_fBlindingDeployableFadeValue >= 1.0000000) + { + bShowAsStealthed = true; + } + else + { + bShowAsStealthed = false; + } + } + return bShowAsStealthed; + //return ReturnValue; +} + +simulated event ApplyStealthClient(optional bool bForce = false) +{ + local bool bShowStealthed, bStealthed, bDetected, bIsHardRevealed; + local TgRepInfo_Player localpri; + local TgPlayerController localPC; + local name stealthGroup; + + localPC = TgPlayerController(GetALocalPlayerController()); + localpri = ((localPC != none) ? localPC.CachedPRI : none); + bStealthed = ((((int(r_eIsStealthed) > int(1)) || r_bIsVolumeStealthed) || c_fDistanceFadeValue == float(1)) || c_fObscuringDeployableFadeValue == float(1)) || c_fBlindingDeployableFadeValue == float(1); + bDetected = bStealthed && !IsStealthed(localpri); + bShowStealthed = bStealthed && ShouldShowAsStealthed(bDetected); + bIsHardRevealed = IsHardRevealed(localpri); + // End:0x1E9 + if(m_bPlayingStealth != bShowStealthed) + { + c_bHiddenDueToStealth = bShowStealthed; + ApplyPawnShadows(c_bHiddenDueToStealth); + // End:0x1AB + if(r_EffectManager != none) + { + r_EffectManager.UpdateEffectFormVisibility(); + } + SetHidden(c_bHiddenDueToStealth); + RecalculateMaterial(IsFriendlyWithLocalPawn()); + m_bPlayingStealth = bShowStealthed; + } + // End:0x313 + if(!bIsHardRevealed && int(r_eIsStealthed) != int(0)) + { + // End:0x259 + if((localPC != none) && localPC.Pawn == self) + { + stealthGroup = 'StealthLocal'; + } + else + { + // End:0x292 + if(localPC.IsEnemy(self)) + { + stealthGroup = 'StealthEnemy'; + } + else + { + stealthGroup = 'Stealth'; + } + } + FxActivateGroupAllMesh(stealthGroup, 0); + // End:0x2FA + if(m_MountMesh != none) + { + m_MountMesh.FxActivateGroup(stealthGroup, 0); + } + c_bIsStealthMaterialOn = true; + UpdateStealthMaterialBasedOnNearbyEnemies(); + } + else + { + // End:0x35E + if((localPC != none) && localPC.Pawn == self) + { + stealthGroup = 'StealthLocal'; + } + else + { + // End:0x397 + if(localPC.IsEnemy(self)) + { + stealthGroup = 'StealthEnemy'; + } + else + { + stealthGroup = 'Stealth'; + } + } + FxDeactivateGroupAllMesh(stealthGroup, 0); + // End:0x3FB + if(m_MountMesh != none) + { + m_MountMesh.FxDeactivateGroup(stealthGroup, 0); + } + // End:0x470 + if((m_WeaponMesh != none) && m_WeaponMesh.m_WeaponMesh1P != none) + { + m_WeaponMesh.m_WeaponMesh1P.FxDeactivateGroup(stealthGroup, 0); + } + c_bIsStealthMaterialOn = false; + } + // End:0x67A + if(Mesh != none) + { + // End:0x584 + if((int(c_eIsStealthed) == int(0)) && int(r_eIsStealthed) != int(0)) + { + Mesh.FxActivateIndependant('Stealth_Start', 0, Location, Vector(Rotation)); + // End:0x581 + if((m_WeaponMesh != none) && m_WeaponMesh.m_WeaponMesh1P != none) + { + m_WeaponMesh.m_WeaponMesh1P.FxActivateIndependant('Stealth_Start', 0, Location, Vector(Rotation)); + } + } + else + { + // End:0x67A + if((int(c_eIsStealthed) != int(0)) && int(r_eIsStealthed) == int(0)) + { + Mesh.FxActivateIndependant('Stealth_End', 0, Location, Vector(Rotation)); + // End:0x67A + if((m_WeaponMesh != none) && m_WeaponMesh.m_WeaponMesh1P != none) + { + m_WeaponMesh.m_WeaponMesh1P.FxActivateIndependant('Stealth_End', 0, Location, Vector(Rotation)); + } + } + } + } + // End:0x6DB + if((bDetected != m_bPlayingDetected) && IsLocallyControlled()) + { + // End:0x6BC + if(bDetected) + { + PlayDetectedFx(); + } + else + { + RemoveDetectedFx(); + } + m_bPlayingDetected = bDetected; + } + c_eIsStealthed = r_eIsStealthed; + //return; +} + +event FixUpVisibilityVolumes() +{ + local int I; + local TgVisibilityVolume Vol; + + I = 0; + J0x0B: + + // End:0x3E [Loop If] + if(I < 2) + { + r_CurrentVisibilityVolumes[I] = none; + I++; + // [Loop Continue] + goto J0x0B; + } + r_bIsVolumeStealthed = false; + r_bIsVolumeStealthFading = false; + VolumeStealthOff(); + GrassOff(); + // End:0x96 + foreach TouchingActors(Class'TgGame.TgVisibilityVolume', Vol) + { + AddVisibilityVolume(Vol); + } + UpdateObscuringDeployableState(); + //return; +} + +function AddVisibilityVolume(TgVisibilityVolume Vol) +{ + local int I; + local bool bSuccessfulAdd; + + // End:0x0F + if(m_bCannotBeVolumeStealthed) + { + return; + } + // End:0xFF + if(((Vol != none) && (NumVisibilityVolumesTouching()) < 2) && (FindVisibilityVolume(Vol)) == -1) + { + I = 0; + J0x5B: + + // End:0xBE [Loop If] + if(I < 2) + { + // End:0xB0 + if(r_CurrentVisibilityVolumes[I] == none) + { + r_CurrentVisibilityVolumes[I] = Vol; + bSuccessfulAdd = true; + // [Explicit Break] + goto J0xBE; + } + I++; + // [Loop Continue] + goto J0x5B; + } + J0xBE: + + // End:0xFF + if(bSuccessfulAdd) + { + // End:0xFF + if(!r_bIsVolumeStealthFading && !m_bDisableVolumeStealth) + { + VolumeStealthOn(Vol, true); + } + } + } + //return; +} + +function RemoveVisibilityVolume(TgVisibilityVolume Vol) +{ + local int VolumeIndex; + + // End:0x0F + if(m_bCannotBeVolumeStealthed) + { + return; + } + // End:0x87 + if(Vol != none) + { + VolumeIndex = FindVisibilityVolume(Vol); + // End:0x87 + if(VolumeIndex != -1) + { + r_CurrentVisibilityVolumes[VolumeIndex] = none; + // End:0x87 + if((NumVisibilityVolumesTouching()) == 0) + { + VolumeStealthOff(); + GrassOff(); + } + } + } + //return; +} + +function VolumeStealthFadeComplete() +{ + r_bIsVolumeStealthed = (NumVisibilityVolumesTouching()) > 0; + r_bIsVolumeStealthFading = r_bIsVolumeStealthed; + GetPRI().r_bIsVolumeStealthed = r_bIsVolumeStealthed; + // End:0x8C + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + ApplyStealthClient(); + } + //return; +} + +function VolumeStealthOn(TgVisibilityVolume Vol, optional bool bFull) +{ + ClearTimer('ClearStealthDamage'); + r_bIsVolumeStealthFading = true; + GrassOn(Vol); + // End:0x59 + if(!bFull) + { + SetTimer(1.0000000, false, 'VolumeStealthFadeComplete'); + } + else + { + VolumeStealthFadeComplete(); + } + // End:0x12B + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && !WorldInfo.IsPlayingTimelapse()) + { + ApplyStealthClient(); + // End:0x12B + if((Controller != none) && Controller.IsLocalPlayerController()) + { + ClientPlayHiddenEffects(true, ((Vol != none) ? Vol.m_PlayerCameraInvisibleParticleSystem : none)); + } + } + //return; +} + +function VolumeStealthOff() +{ + ClearTimer('VolumeStealthFadeComplete'); + r_bIsVolumeStealthed = false; + r_bIsVolumeStealthFading = false; + GrassOff(); + // End:0x68 + if((GetPRI()) != none) + { + GetPRI().r_bIsVolumeStealthed = false; + } + // End:0xA4 + if((int(Role) == int(ROLE_Authority)) && s_fDamageTakenDuringStealth > 0.0000000) + { + SetTimer(1.0000000, false, 'ClearStealthDamage'); + } + // End:0x150 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && (m_bDisableVolumeStealth || !IsInFriendlyObscuringDeployable()) || WorldInfo.IsPlayingTimelapse()) + { + // End:0x150 + if((Controller != none) && Controller.IsLocalPlayerController()) + { + ClientPlayHiddenEffects(false); + } + } + //return; +} + +function ClearStealthDamage() +{ + s_fDamageTakenDuringStealth = 0.0000000; + //return; +} + +function GrassOn(TgVisibilityVolume Vol) +{ + // End:0xBD + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && !WorldInfo.IsPlayingTimelapse()) + { + // End:0xBD + if((Controller != none) && Controller.IsLocalPlayerController()) + { + ClientPlayGrassEffects(true, ((Vol != none) ? Vol.m_PlayerCameraParticleSystem : none)); + } + } + // End:0xDD + if(int(Role) == int(ROLE_Authority)) + { + s_bIsInGrass = true; + } + //return; +} + +function GrassOff() +{ + // End:0x68 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x68 + if((Controller != none) && Controller.IsLocalPlayerController()) + { + ClientPlayGrassEffects(false); + } + } + // End:0x88 + if(int(Role) == int(ROLE_Authority)) + { + s_bIsInGrass = false; + } + //return; +} + +function DisableVolumeStealth() +{ + // End:0x20 + if(int(Role) == int(ROLE_Authority)) + { + r_bDisableVolumeStealth = true; + } + // End:0x4F + if(!m_bDisableVolumeStealth) + { + m_bDisableVolumeStealth = true; + VolumeStealthOff(); + UpdateObscuringDeployableState(); + } + // End:0x7C + if(m_fVolumeStealthDisableTime > 0.0000000) + { + SetTimer(m_fVolumeStealthDisableTime, false, 'EnableVolumeStealth'); + } + else + { + EnableVolumeStealth(); + } + //return; +} + +function EnableVolumeStealth() +{ + ClearTimer('EnableVolumeStealth'); + // End:0x34 + if(int(Role) == int(ROLE_Authority)) + { + r_bDisableVolumeStealth = false; + } + m_bDisableVolumeStealth = false; + // End:0x76 + if(((NumVisibilityVolumesTouching()) > 0) && !r_bDisableVolumeStealth) + { + VolumeStealthOn(GetATouchingVisibilityVolume(), true); + } + UpdateObscuringDeployableState(); + //return; +} + +function UpdateObscuringDeployableState() +{ + local bool bShouldPlayFxs; + + // End:0x75 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && !r_bIsVolumeStealthFading) + { + bShouldPlayFxs = IsInFriendlyObscuringDeployable() && !m_bDisableVolumeStealth; + ClientPlayHiddenEffects(bShouldPlayFxs); + } + //return; +} + +function UpdateBlindingDeployableState() +{ + //return; +} + +unreliable client simulated event ClientEnterCombat(Actor aInstigator, Actor ATarget, optional float fLength) +{ + EnterCombat(aInstigator, ATarget, fLength); + //return; +} + +event BeginMoving() +{ + // End:0x23 + if(s_bIsStill) + { + s_bIsStill = false; + PawnOnEndStill(); + } + ClearTimer('IsStillTimer'); + // End:0x5C + if(5.0000000 > 0.0000000) + { + SetTimer(5.0000000, false, 'IsStillTimer'); + } + else + { + IsStillTimer(); + } + //return; +} + +function IsStillTimer() +{ + // End:0x25 + if(!s_bIsStill) + { + s_bIsStill = true; + PawnOnBecomeStill(); + } + //return; +} + +simulated event EnterCombat(Actor aInstigator, Actor ATarget, optional float fLength) +{ + local bool bWasInCombat; + local TgPlayerController TgPC; + local float combatDurationReduction; + + // End:0x38 + if((r_EffectManager != none) && r_EffectManager.s_nForceOutOfCombatCount > 0) + { + return; + } + bWasInCombat = r_bInCombatFlag; + // End:0x60 + if(true) + { + fLength = 5.0000000; + } + combatDurationReduction = FClamp((GetCombatDurationReduction()) / 100.0000000, 0.0000000, 1.0000000); + fLength -= (fLength * combatDurationReduction); + TgPC = TgPlayerController(Controller); + // End:0xEF + if((TgPC != none) && !IsTimerActive('InCombatTimer')) + { + } + else + { + // End:0x14B + if((Controller != none) && Controller.IsA('TgAIController')) + { + TgAIController(Controller).OnEnterCombat(); + } + } + r_bInCombatFlag = true; + m_LastHomeguardTime = 0.0000000; + // End:0x18B + if(ATarget == self) + { + s_LastAttacker = aInstigator; + } + else + { + s_LastAttacked = ATarget; + } + Combat(true); + // End:0x1C2 + if(!bWasInCombat) + { + PawnOnEnterCombat(); + } + m_fInCombatTime = fLength; + ClearTimer('InCombatTimer'); + // End:0x216 + if(m_fInCombatTime > 0.0000000) + { + SetTimer(m_fInCombatTime, false, 'InCombatTimer'); + } + else + { + InCombatTimer(); + } + r_nInCombatNonce += 1; + bNetDirty = true; + //return; +} + +simulated event ExitCombat() +{ + // End:0x2B + if(r_bInCombatFlag) + { + ClearTimer('InCombatTimer'); + InCombatTimer(); + } + //return; +} + +simulated function InCombatTimer() +{ + local TgPlayerController TgPC; + + TgPC = TgPlayerController(Controller); + r_bInCombatFlag = false; + m_fInCombatTime = 0.0000000; + r_nInCombatNonce += 1; + s_LastAttacker = none; + s_LastAttacked = none; + Combat(false); + PawnOnExitCombat(); + // End:0x81 + if(TgPC != none) + { + } + else + { + // End:0xDD + if((Controller != none) && Controller.IsA('TgAIController')) + { + TgAIController(Controller).OnExitCombat(); + } + } + bNetDirty = true; + //return; +} + +simulated event Combat(bool bInCombat) +{ + //return; +} + +event bool InCombat() +{ + return r_bInCombatFlag; + //return ReturnValue; +} + +simulated event float GetEnergyPercent() +{ + return ((((GetEnergy()) > float(0)) && (GetMaxEnergy()) > 0.0000000) ? (GetEnergy()) / (GetMaxEnergy()) : 0.0000000); + //return ReturnValue; +} + +simulated function ApplyPawnShadows(bool bOn) +{ + // End:0x39 + if(Mesh != none) + { + Mesh.CastShadow = bOn; + } + //return; +} + +simulated event bool IsDying() +{ + return IsInState('Dying') || !Health > 0; + //return ReturnValue; +} + +event Landed(Vector HitNormal, Actor FloorActor) +{ + local TgPlayerController TgPC; + local TgCameraModule_ThirdPerson CamMod; + local Vector landingFXLocation, LandingVelocity; + + LandingVelocity = Velocity; + // End:0x13D + if(Mesh != none) + { + landingFXLocation = Location; + landingFXLocation.Z -= ((GetCollisionHeight()) / 2.0000000); + // End:0xD2 + if(Velocity.Z <= m_fHardLandVelocityCutoff) + { + Mesh.FxActivateIndependant('Landing_Hard', 0, landingFXLocation, Vector(Rotation)); + } + else + { + // End:0x13D + if(Velocity.Z <= m_fSoftLandVelocityCutoff) + { + Mesh.FxActivateIndependant('Landing_Soft', 0, landingFXLocation, Vector(Rotation)); + } + } + } + TgPC = TgPlayerController(Controller); + // End:0x21C + if(((TgPC != none) && TgPC.m_bBehindView) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + CamMod = TgCameraModule_ThirdPerson(TgPC.GetCurrentCameraModule()); + // End:0x21C + if(CamMod != none) + { + CamMod.f3pViewPaddingRemainingTime = 0.1000000; + } + } + // End:0x261 + if(((int(Role) == int(ROLE_Authority)) && r_bIsKnockedBack) && r_fKnockedBackFrictionOverride < 0.0000000) + { + Knock(false); + } + super(Pawn).Landed(HitNormal, FloorActor); + PawnOnLand(); + // End:0x2D2 + if(r_bIsJumping) + { + r_bIsJumping = false; + m_fJumpLandingTime = WorldInfo.TimeSeconds; + PawnOnLandAfterJump(); + } + // End:0x33E + if((r_bJustJumped && IsAliveAndWell()) && (GetPropCurrentValue(63)) <= float(0)) + { + r_bJustJumped = false; + // End:0x33E + if(!m_bAllowHigherWallJumping) + { + m_bIsLanding = true; + SetTimer(0.8000000, false, 'OnJumpPenaltyEnded'); + } + } + // End:0x38B + if(!r_bIsMounted) + { + PlayLandingSound(LandingVelocity); + // End:0x38B + if(int(Role) == int(ROLE_Authority)) + { + FlashPlaySpecialEffect(8, LandingVelocity); + } + } + // End:0x3C4 + if(m_bIsLeaping || (GetPropCurrentValue(135)) > float(0)) + { + m_bIsLeaping = false; + PawnOnLandAfterLeap(); + } + // End:0x3F2 + if(r_EffectManager != none) + { + r_EffectManager.HandleOnLandedIntercepts(); + } + // End:0x45B + if((Velocity.Z < float(-200)) && m_bUpdateEyeHeight) + { + m_fOldZ = Location.Z; + m_bJustLanded = true; + } + //return; +} + +function OnJumpPenaltyEnded() +{ + ClearTimer('OnJumpPenaltyEnded'); + m_bIsLanding = false; + //return; +} + +function PlayHit(float Damage, Controller InstigatedBy, Vector HitLocation, Class dmgType, Vector Momentum, TraceHitInfo HitInfo) +{ + local Class dmgClass; + + dmgClass = Class(dmgType); + // End:0x47 + if((dmgClass == none) || ClassIsChildOf(dmgClass, Class'TgGame.TgDamageType_AbilityCost')) + { + return; + } + super(Pawn).PlayHit(Damage, InstigatedBy, HitLocation, dmgClass, Momentum, HitInfo); + // End:0xD1 + if((Damage <= float(0)) && (Controller == none) || !Controller.bGodMode) + { + return; + } + // End:0xF2 + if(!EffectIsRelevant(HitLocation, true, 0.0000000)) + { + return; + } + CheckHitInfo(HitInfo, Mesh, Normal(Momentum), HitLocation); + //return; +} + +exec function FlushDebug() +{ + FlushPersistentDebugLines(); + //return; +} + +simulated event FellOutOfWorld(Class dmgType) +{ + // End:0x2A + if(dmgType == Class'Engine.KillZDamageType') + { + dmgType = Class'TgGame.TgDamageType_FallOutOfWorld'; + } + // End:0xAC + if(int(Role) == int(ROLE_Authority)) + { + Health = -1; + m_bWasKilledByEnvironment = true; + Died(Controller, dmgType, Location); + // End:0xAC + if(dmgType == none) + { + SetPhysics(0); + LifeSpan = FMin(LifeSpan, 1.0000000); + } + } + //return; +} + +singular simulated event OutsideWorldBounds() +{ + // End:0x2B + if(int(Role) == int(ROLE_Authority)) + { + m_bWasKilledByEnvironment = true; + KilledBy(self); + } + SetPhysics(0); + LifeSpan = FMin(LifeSpan, 1.0000000); + //return; +} + +event KilledBy(Pawn EventInstigator) +{ + ModifyHealthProp(Health); + super(Pawn).KilledBy(EventInstigator); + //return; +} + +simulated function TurnOff() +{ + SetCollision(true, false); + bNoWeaponFiring = true; + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + SetPhysics(0); + bIgnoreForces = true; + // End:0x68 + if(Weapon != none) + { + Weapon.StopFire(); + } + //return; +} + +// Export UTgPawn::execInitRagdoll(FFrame&, void* const) +native simulated function bool InitRagdoll(); + +// Export UTgPawn::execDelayedRagdollConstraintBreak(FFrame&, void* const) +native function DelayedRagdollConstraintBreak(); + +simulated event HoldFlag(TgCarriedFlag NewFlag) +{ + m_CurrentFlag = NewFlag; + m_CurrentFlag.SetHardAttach(true); + m_CurrentFlag.SetBase(self); + //return; +} + +event DropFlag(optional Controller C) +{ + local TgRepInfo_Player PRI; + + PRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x54 + if((PRI == none) || !PRI.r_bHasFlag) + { + return; + } + PRI.s_CarriedFlag.Drop(C); + //return; +} + +simulated function BeginFadeOut() +{ + local TgSpecialFx FadeOutSpecialFX; + + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0x9F + if(Mesh != none) + { + Mesh.PutRigidBodyToSleep(); + Mesh.bNoSkeletonUpdate = true; + Mesh.PhysicsWeight = 0.0000000; + } + m_bIsFadingOut = true; + LifeSpan = m_fFadeOutTime; + // End:0x19F + if((m_bUseDamageTypeForDeathAnim && m_DeathDamageType != none) && m_DeathDamageType.default.m_nFadeOutSpecialFXId != -1) + { + FadeOutSpecialFX = GetSpecialFx(m_DeathDamageType.default.m_nFadeOutSpecialFXId); + // End:0x19F + if(FadeOutSpecialFX != none) + { + FadeOutSpecialFX.c_Owner = self; + FadeOutSpecialFX.SpawnEmitter(Location, Vector(Rotation)); + Destroy(); + } + } + //return; +} + +simulated function OnLifeAfterDeathTimerExpired() +{ + //return; +} + +simulated function UpdateHealingBeamEffects() +{ + local TgSpecialFx HealingFX; + local int I; + + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0x25F + if(r_HealTarget != none) + { + // End:0x137 + if(c_HealingBeamPSC == none) + { + HealingFX = TgSpecialFx(Mesh.FxGet('Healing Beam', 0)); + // End:0x99 + if(HealingFX == none) + { + return; + } + c_HealingBeamPSC = new Class'TgGame.TgParticleSystemComponent'; + c_HealingBeamPSC.SetTickGroup(5); + c_HealingBeamPSC.SetTemplate(HealingFX.c_PSCList[0].c_PSCTemplate); + AttachComponent(c_HealingBeamPSC); + } + // End:0x25C + if(c_HealingBeamPSC != none) + { + // End:0x18A + if(!c_HealingBeamPSC.bIsActive) + { + c_HealingBeamPSC.ActivateSystem(); + } + c_HealingBeamPSC.SetVectorParameter('beamEnd', r_HealTarget.Location); + I = 0; + J0x1DB: + + // End:0x25C [Loop If] + if(I < c_HealingBeamPSC.EmitterInstances.Length) + { + c_HealingBeamPSC.SetBeamEndPoint(I, r_HealTarget.Location); + I++; + // [Loop Continue] + goto J0x1DB; + } + } + } + else + { + // End:0x28D + if(c_HealingBeamPSC != none) + { + c_HealingBeamPSC.DeactivateSystem(); + } + } + //return; +} + +simulated event DetachDevice() +{ + //return; +} + +simulated event AttachDevice() +{ + //return; +} + +simulated event PropertySet(int nPropertyId, float fPreviousValue, float fNewValue) +{ + //return; +} + +simulated event HandleClientPostPawnSetup() +{ + PostPawnSetup(); + m_bInitialized = true; + OnPawnInitialized(); + OnWaitingForPawnDone(); + //return; +} + +simulated event WaitForInventoryThenDoPostPawnSetup() +{ + local bool bHasBotData, bAlive, bHasInvData, bHasEffectManager; + + ClearTimer('WaitForInventoryThenDoPostPawnSetup'); + // End:0x150 + if(!m_bInitialized) + { + bHasBotData = ((((r_nProfileId > 0) && r_nSkinId >= 0) && r_nWeaponSkinId >= 0) && r_nMountSkinId >= 0) && Mesh != none; + bAlive = !IsInState('Dying') && Health > 0; + bHasInvData = ((InvManager != none) || !bNetOwner) || WorldInfo.IsPlayingDemo(); + bHasEffectManager = r_EffectManager != none; + // End:0x150 + if(((bHasBotData && bAlive) && bHasInvData) && bHasEffectManager) + { + HandleClientPostPawnSetup(); + } + } + // End:0x172 + if(!m_bInitialized) + { + SetTimer(0.1000000, false, 'WaitForInventoryThenDoPostPawnSetup'); + } + //return; +} + +simulated function OnWaitingForPawnDone() +{ + // End:0x4D + if(r_EffectManager != none) + { + r_EffectManager.UpdateEffectForms(); + r_EffectManager.UpdateEffectFormVisibility(); + } + RecalculateMaterial(IsFriendlyWithLocalPawn()); + DeviceFormChanged(false); + CalcDistanceFadeValue(10.0000000); + c_fCurrentFadeValue = FMax(c_fDistanceFadeValue, FMax(c_fVolumeFadeValue, c_fStealthFadeValue)); + c_fCurrentFadeValue = FMax(c_fCurrentFadeValue, c_fObscuringDeployableFadeValue); + // End:0xF7 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + ApplyStealthClient(); + } + //return; +} + +simulated event OnPawnInitialized() +{ + // End:0x69 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x5E + if(r_bNeedPlaySpawnFx) + { + // End:0x5B + if(!c_bSpawnFxPlayed) + { + PlayInitialSpawnFX(); + c_bSpawnFxPlayed = true; + } + } + else + { + SetMeshVisibility(true); + } + } + SetRTPCValue('InCombatState', float(r_bInCombatFlag)); + TriggerKismetPlayerInitialized(); + //return; +} + +simulated function TriggerKismetPlayerInitialized() +{ + local int Idx; + local TgSeqEvent_PlayerInitialized InitializedEvent; + local array Events; + local bool bHumanControlled; + local TgPlayerController TgPC; + + // End:0x42 + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + bHumanControlled = IsHumanControlled(); + } + else + { + TgPC = TgPlayerController(GetALocalPlayerController()); + bHumanControlled = ((TgPC != none) ? TgPC.GetTgPawn() == self : IsHumanControlled()); + } + // End:0x1F7 + if(WorldInfo.GetGameSequence() != none) + { + WorldInfo.GetGameSequence().FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_PlayerInitialized', true, Events); + Idx = 0; + J0x120: + + // End:0x1F7 [Loop If] + if(Idx < Events.Length) + { + InitializedEvent = TgSeqEvent_PlayerInitialized(Events[Idx]); + // End:0x1E9 + if((InitializedEvent != none) && (InitializedEvent.bLocalPlayerOnly == false) || bHumanControlled) + { + // End:0x1E9 + if(InitializedEvent.CheckActivate(self, self)) + { + InitializedEvent.PopulateLinkedVariableValues(); + } + } + Idx++; + // [Loop Continue] + goto J0x120; + } + } + //return; +} + +simulated function PlayInitialSpawnFX() +{ + FxActivateGroupSelf('Spawned', 0, 0, 0, true); + //return; +} + +simulated function DrawConeComponent AttachConeComponent(DrawConeComponent ConeComponent, float fRadius, float fAngle) +{ + // End:0x16C + if(ConeComponent == none) + { + ConeComponent = new Class'Engine.DrawConeComponent'; + ConeComponent.SetHidden(false); + ConeComponent.ConeColor.R = 200; + ConeComponent.ConeColor.G = 0; + ConeComponent.ConeColor.B = 0; + ConeComponent.ConeColor.A = 255; + ConeComponent.ConeSides = 16; + ConeComponent.SetTranslation((GetPawnViewLocation()) - Location); + } + ConeComponent.ConeRadius = fRadius; + ConeComponent.ConeAngle = fAngle; + // End:0x1F3 + if(!ConeComponent.bAttached) + { + AttachComponent(ConeComponent); + } + return ConeComponent; + //return ReturnValue; +} + +simulated function DetachConeComponent(DrawConeComponent ConeComponent) +{ + // End:0x46 + if((ConeComponent != none) && ConeComponent.bAttached) + { + DetachComponent(ConeComponent); + } + //return; +} + +function gibbedBy(Actor Other) +{ + return; + //return; +} + +simulated event OnAnimPlay(AnimNodeSequence SeqNode) +{ + //return; +} + +simulated event OnAnimEnd(AnimNodeSequence SeqNode, float PlayedTime, float ExcessTime) +{ + // End:0x49 + if((SeqNode != none) && SeqNode.NodeName == 'FullBodyCustomAnimSeqNode') + { + c_bDeviceHiddenDueToFullBodyAnim = false; + } + //return; +} + +simulated function StopFullBodyAnimation(optional float BlendOutTime = 0.1500000) +{ + // End:0x64 + if((m_FullBodyAnimNode != none) && m_FullBodyAnimNode.bIsPlayingCustomAnim) + { + m_FullBodyAnimNode.StopCustomAnim(BlendOutTime); + } + //return; +} + +simulated function ClientSetStun() +{ + local bool bDead, bChangePhysics; + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + bDead = IsInState('Dying') || bPlayedDeath; + bChangePhysics = (!bDead && int(r_eCurrentStunType) != int(0)) && int(r_eCurrentStunType) != int(5); + TgPC = TgPlayerController(Controller); + // End:0xCE + if((TgPC != none) && bChangePhysics) + { + bChangePhysics = TgPC.ShouldStunChangePhysics(); + } + // End:0x109 + if(bChangePhysics) + { + Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + } + // End:0x129 + if(!bDead) + { + PlayCustomAnimation(0, false, 0.0000000); + } + // End:0x1D8 + if((Controller != none) && !Controller.IsInState('Dead')) + { + // End:0x1AF + if((int(r_eCurrentStunType) == int(0)) || int(r_eCurrentStunType) == int(5)) + { + Controller.Stun(false); + } + else + { + Controller.Stun(true, r_eCurrentStunType); + } + } + // End:0x218 + if(int(r_eCurrentStunType) == int(6)) + { + // End:0x215 + if(c_StunnedPostureID == -1) + { + c_StunnedPostureID = PushPosture(18); + } + } + else + { + // End:0x258 + if(int(r_eCurrentStunType) == int(4)) + { + // End:0x255 + if(c_StunnedPostureID == -1) + { + c_StunnedPostureID = PushPosture(13); + } + } + else + { + // End:0x298 + if(int(r_eCurrentStunType) == int(9)) + { + // End:0x295 + if(c_FearedPostureID == -1) + { + c_FearedPostureID = PushPosture(17); + } + } + else + { + PopPosture(c_StunnedPostureID); + c_StunnedPostureID = -1; + PopPosture(c_FearedPostureID); + c_FearedPostureID = -1; + } + } + } + // End:0x398 + if((TgPC != none) && TgPC.GetViewTarget() == self) + { + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0x398 + if(TgCamera != none) + { + TgCamera.PlayStun((int(r_eCurrentStunType) != int(0)) && int(r_eCurrentStunType) != int(5)); + } + } + //return; +} + +function ResetStunnedBehavior(TgPlayerController PC, TgAIController aic) +{ + // End:0x201 + if((PC != none) && int(PC.m_eCurrentStunType) != int(TgPawn(PC.Pawn).r_eCurrentStunType)) + { + // End:0x149 + if((int(TgPawn(PC.Pawn).r_eCurrentStunType) == int(0)) || int(TgPawn(PC.Pawn).r_eCurrentStunType) == int(5)) + { + PC.Stun(false); + PC.ClientResetStunnedBehavior(false); + } + else + { + PC.Stun(true, TgPawn(PC.Pawn).r_eCurrentStunType); + PC.ClientResetStunnedBehavior(true, TgPawn(PC.Pawn).r_eCurrentStunType); + } + } + // End:0x385 + if((aic != none) && int(aic.m_eCurrentStunType) != int(TgPawn(aic.Pawn).r_eCurrentStunType)) + { + // End:0x329 + if((int(TgPawn(aic.Pawn).r_eCurrentStunType) == int(0)) || int(TgPawn(PC.Pawn).r_eCurrentStunType) == int(5)) + { + aic.Stun(false); + } + else + { + aic.Stun(true, TgPawn(aic.Pawn).r_eCurrentStunType); + } + } + //return; +} + +event Silence(bool bSilenced) +{ + local TgDevice Dev; + local int I; + + r_bSilenced = bSilenced; + // End:0x12B + if(r_bSilenced) + { + Dev = none; + I = 0; + J0x38: + + // End:0xE9 [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0xDB + if(((Dev != none) && Dev.CanBeSilenced()) && Dev.CanBeInterrupted()) + { + Dev.InterruptFiring(); + } + I++; + // [Loop Continue] + goto J0x38; + } + // End:0x12B + if(int(r_eIsStealthed) != int(0)) + { + // End:0x12B + if(r_EffectManager != none) + { + r_EffectManager.RemoveAllStealthEffects(); + } + } + } + //return; +} + +event Disarm(bool bDisarmed) +{ + local TgDevice Dev; + local int I; + + r_bDisarmed = bDisarmed; + // End:0x10A + if(r_bDisarmed) + { + Dev = none; + I = 0; + J0x38: + + // End:0xE9 [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0xDB + if(((Dev != none) && Dev.CanBeDisarmed()) && Dev.CanBeInterrupted()) + { + Dev.InterruptFiring(); + } + I++; + // [Loop Continue] + goto J0x38; + } + // End:0x107 + if(int(Role) == int(ROLE_Authority)) + { + PlayDisarmFX(); + } + } + else + { + // End:0x128 + if(int(Role) == int(ROLE_Authority)) + { + StopDisarmFX(); + } + } + //return; +} + +simulated function PlayDisarmFX() +{ + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0x74 + if(!c_bShowingDisarm) + { + FxActivateGroupSelf('Disarmed', 0); + c_bShowingDisarm = true; + c_DisarmedPostureID = PushPosture(16); + } + //return; +} + +simulated function StopDisarmFX() +{ + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0x7A + if(c_bShowingDisarm) + { + FxDeactivateGroupSelf('Disarmed', 0); + c_bShowingDisarm = false; + self.PopPosture(c_DisarmedPostureID); + } + //return; +} + +event Knock(bool bKnocked, optional float fKnockbackFrictionOverride = -1.0000000, optional Vector vKnockbackVelocityOverride = vect(0.0000000, 0.0000000, 0.0000000)) +{ + local TgDevice Dev; + local int I; + + r_bIsKnockedBack = bKnocked && !IsCrowdControlImmune(); + r_fKnockedBackFrictionOverride = fKnockbackFrictionOverride; + r_vKnockedBackVelocityOverride = vKnockbackVelocityOverride; + // End:0xF2 + if(r_bIsKnockedBack) + { + Dev = none; + I = 0; + J0x89: + + // End:0xF2 [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0xE4 + if(Dev != none) + { + Dev.OnKnock(); + } + I++; + // [Loop Continue] + goto J0x89; + } + } + //return; +} + +event Cripple(bool bCrippled) +{ + local TgDevice Dev; + local int I; + + s_bHasCrippleEffect = bCrippled; + r_bCrippled = (bCrippled && !IsCrowdControlImmune()) && (GetProtectionCC()) < 100.0000000; + // End:0xDD + if(r_bCrippled) + { + Dev = none; + I = 0; + J0x74: + + // End:0xDD [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0xCF + if(Dev != none) + { + Dev.OnCripple(); + } + I++; + // [Loop Continue] + goto J0x74; + } + } + //return; +} + +event FlashBang(bool bIsFlashBang) +{ + r_bIsFlashBang = (bIsFlashBang && !IsCrowdControlImmune()) && (GetProtectionCC()) < 100.0000000; + bNetDirty = true; + PlayFlashBangEffects(r_bIsFlashBang); + //return; +} + +event Stasis(bool bStasised) +{ + local TgDevice Dev; + local int I; + + // End:0x5A + if(bStasised) + { + EndPhysTween(false); + // End:0x5A + if(int(r_eIsStealthed) != int(0)) + { + // End:0x5A + if(r_EffectManager != none) + { + r_EffectManager.RemoveAllStealthEffects(); + } + } + } + r_bIsInStasis = bStasised; + // End:0x11D + if(r_bIsInStasis) + { + Dev = none; + I = 0; + J0x92: + + // End:0x11D [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0x10F + if(Dev != none) + { + // End:0x10F + if(Dev.CanBeInterrupted()) + { + Dev.InterruptFiring(); + } + } + I++; + // [Loop Continue] + goto J0x92; + } + } + //return; +} + +event Daze(bool bDazed, optional float Duration = 8.0000000, optional int FxId = 2430) +{ + // End:0xCB + if(int(Role) == int(ROLE_Authority)) + { + r_bIsDazed = bDazed; + // End:0x5D + if(Duration <= 0.0000000) + { + Duration = 8.0000000; + } + ClientDaze(bDazed, Duration, FxId); + // End:0xCB + if(r_bIsDazed) + { + m_fDazedStartTime = WorldInfo.TimeSeconds; + m_fDazedDuration = Duration; + } + } + //return; +} + +reliable client simulated function ClientDaze(bool bDazed, optional float Duration = 8.0000000, optional int FxId = 2430) +{ + r_bIsDazed = bDazed; + m_fDazedDuration = Duration; + // End:0x82 + if(r_bIsDazed) + { + m_fDazedStartTime = WorldInfo.TimeSeconds; + LoadDazedMIC(FxId); + } + //return; +} + +simulated function DrawHUD(HUD H) +{ + local float U; + + super(Pawn).DrawHUD(H); + // End:0x158 + if(r_bIsDazed && m_DazedWineMIC != none) + { + U = (WorldInfo.TimeSeconds - m_fDazedStartTime) / m_fDazedDuration; + m_DazedWineMIC.SetScalarParameterValue('WineFlow', U); + H.Canvas.DrawMaterialTile(m_DazedWineMIC, H.Canvas.ClipX, H.Canvas.ClipY, 0.0000000, 0.0000000, 1.0000000, 1.0000000); + } + //return; +} + +event bool CanBePulled() +{ + return r_bCanBePulled && !IsCrowdControlImmune(); + //return ReturnValue; +} + +event bool CanBeGrabbed() +{ + return ((GetPropCurrentValue(116)) == float(0)) && !IsCrowdControlImmune(); + //return ReturnValue; +} + +event HitWall(Vector HitNormal, Actor Wall, PrimitiveComponent WallComp) +{ + m_bHitWallThisTick = true; + super(Actor).HitWall(HitNormal, Wall, WallComp); + //return; +} + +simulated event EnableFootControls(int foot, bool bDisable) +{ + //return; +} + +simulated event InterruptUse() +{ + m_bUseInterrupted = true; + //return; +} + +simulated event bool IsUseInterrupted() +{ + return m_bUseInterrupted; + //return ReturnValue; +} + +simulated event InterruptAllDevices(optional bool bForceInterrupt = false) +{ + local TgDevice Dev; + local int I; + + Dev = none; + I = 0; + J0x1B: + + // End:0xB5 [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0xA7 + if(Dev != none) + { + // End:0xA7 + if(bForceInterrupt || Dev.CanBeInterrupted()) + { + Dev.InterruptFiring(); + } + } + I++; + // [Loop Continue] + goto J0x1B; + } + //return; +} + +simulated function SetTriggerToUse(TgTrigger_Use Trigger, bool bEnable) +{ + // End:0x23 + if(bEnable) + { + m_CurrentUseActor = Trigger; + } + else + { + // End:0x45 + if(m_CurrentUseActor == Trigger) + { + m_CurrentUseActor = none; + } + } + m_bUseInterrupted = false; + // End:0xE6 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0xBC + if(bEnable) + { + ClientSetTriggerMessage(Trigger, Trigger.GetMsgIdToDisplay()); + } + else + { + ClientSetTriggerMessage(none, Trigger.GetMsgIdToDisplay()); + } + } + //return; +} + +simulated function ClientSetTriggerMessage(TgTrigger_Use newTrigger, int msgId) +{ + //return; +} + +event CheckUseDuration(out float fDuration) +{ + //return; +} + +simulated function DisplayWeaponSwitchProgressBar(float Duration) +{ + //return; +} + +simulated function HideWeaponSwitchProgressBar() +{ + //return; +} + +simulated event Vector GetWeaponStartTraceLocation(TgDevice Dev) +{ + return (GetPawnViewLocation()) + (Dev.GetProjectileSpawnOffset() >> (GetBaseAimRotation(Dev))); + //return ReturnValue; +} + +simulated event Vector GetWeaponStartTraceLocationAlt(Vector Offset) +{ + return (GetPawnViewLocation()) + (Offset >> (GetBaseAimRotation(none))); + //return ReturnValue; +} + +simulated event GetBaseAimRotationNative(Weapon W, bool bIgnoreAutoLock, out Rotator Rot) +{ + Rot = GetBaseAimRotation(W, bIgnoreAutoLock); + //return; +} + +simulated event GetAdjustedAimNative(Weapon W, Vector StartFireLoc, out Rotator Rot) +{ + local TgPlayerController TgPlayerController; + + Rot = GetAdjustedAimFor(W, StartFireLoc); + TgPlayerController = TgPlayerController(Controller); + // End:0x98 + if(TgPlayerController != none) + { + Rot = TgPlayerController.ApplyAimVectorModification(TgDevice(W), Rot); + } + else + { + Rot.Pitch = int(m_fAimPitch); + } + //return; +} + +singular simulated function Rotator GetBaseAimRotation(Weapon W, optional bool bIgnoreAutoLock) +{ + local Vector POVLoc; + local Rotator POVRot; + local TgPlayerController PC; + + PC = TgPlayerController(Controller); + // End:0xA6 + if((PC != none) && PC.ControlModule != none) + { + POVRot = PC.ControlModule.GetBaseAimRotation(W, bIgnoreAutoLock); + } + else + { + // End:0xFA + if((Controller != none) && !InFreeCam()) + { + Controller.GetPlayerViewPoint(POVLoc, POVRot); + } + else + { + POVRot = Rotation; + // End:0x155 + if(POVRot.Pitch == 0) + { + POVRot.Pitch = m_nSmoothedRemoteViewPitch; + } + } + } + // End:0x179 + if(m_bUsesRecoil) + { + return ApplyRecoilToRotation(POVRot); + } + else + { + return POVRot; + } + //return ReturnValue; +} + +simulated function float ApplyPitchLimit(float fPitch) +{ + return FClamp(fPitch, -16000.0000000, 16000.0000000); + //return ReturnValue; +} + +simulated event EndCrouch(float HeightAdjust) +{ + super(Pawn).EndCrouch(HeightAdjust); + AdjustMeshTranslation(); + //return; +} + +simulated event StartCrouch(float HeightAdjust) +{ + super(Pawn).StartCrouch(HeightAdjust); + AdjustMeshTranslation(); + //return; +} + +simulated event TriggerJump() +{ + DoJump(true); + //return; +} + +reliable server function ServerCancelJump() +{ + r_bIsJumping = false; + ClientCancelJump(); + Velocity.Z = 0.0000000; + //return; +} + +unreliable client simulated event ClientCancelJump() +{ + r_bIsJumping = false; + //return; +} + +function bool DoJump(bool bUpdating, optional float JumpZSpeed = 0.0000000) +{ + local TgPlayerController TgPC; + local bool bWasWalking; + local float fHeightIncrease; + + TgPC = TgPlayerController(Controller); + // End:0x5A + if((TgPC != none) && TgPC.IsDeviceLockingInput()) + { + return false; + } + // End:0x69 + if(r_bIsRooted) + { + return false; + } + // End:0x8F + if(JumpZSpeed == 0.0000000) + { + JumpZSpeed = JumpZ; + } + // End:0xCC + if(!r_bIsMounted && m_bIsLanding) + { + JumpZSpeed *= 0.6000000; + r_bIsShortJump = true; + } + else + { + r_bIsShortJump = false; + } + // End:0x35E + if(bJumpCapable && m_bIgnorePhysCheckForJump || CheckPhysicsStateForJumping()) + { + bWasWalking = int(Physics) == int(WalkingPhysics); + JumpZSpeed *= (GetJumpSpeedMultiplier()); + fHeightIncrease = GetJumpHeightMultiplier(); + // End:0x178 + if(fHeightIncrease > 0.0000000) + { + JumpZSpeed *= Sqrt(fHeightIncrease); + } + // End:0x1AD + if(int(Physics) == int(8)) + { + Velocity = JumpZSpeed * Floor; + } + else + { + // End:0x1E6 + if(int(Physics) == int(9)) + { + Velocity.Z = 0.0000000; + } + else + { + // End:0x21C + if(bIsWalking) + { + Velocity.Z = JumpZSpeed; + } + else + { + Velocity.Z = JumpZSpeed; + } + } + } + // End:0x303 + if(((Base != none) && !Base.bWorldGeometry) && Base.Velocity.Z > 0.0000000) + { + Velocity.Z += Base.Velocity.Z; + } + SetPhysics(2); + // End:0x337 + if(bWasWalking && int(Physics) == int(2)) + { + r_bIsJumping = true; + } + r_bJustJumped = true; + // End:0x35C + if(!r_bIsMounted) + { + FlashJumpEffects(); + } + return true; + } + return false; + //return ReturnValue; +} + +simulated function FlashJumpEffects() +{ + FlashPlaySpecialEffect(6); + //return; +} + +simulated function float GetJumpHeightMultiplier() +{ + local float fHeightIncrease; + + fHeightIncrease = 1.0000000; + // End:0x33 + if(r_bIsMounted) + { + fHeightIncrease += m_fHorseJumpHeightIncrease; + } + else + { + fHeightIncrease *= (GetPropCurrentValue(11)); + } + // End:0x6E + if(AllowBoostedJump()) + { + fHeightIncrease += (GetPropCurrentValue(4)); + } + return fHeightIncrease; + //return ReturnValue; +} + +simulated function float GetJumpSpeedMultiplier() +{ + return 1.0000000; + //return ReturnValue; +} + +simulated function OnTeleport(SeqAct_Teleport Action) +{ + local Vector StartLocation; + local TgPlayerController TgPC; + + StartLocation = Location; + TgPC = TgPlayerController(Controller); + // End:0x5F + if(TgPC != none) + { + TgPC.SetNoSmoothedMovementCorrection(true, false); + } + super(Pawn).OnTeleport(Action); + // End:0xAB + if(Action.bResetVelocity) + { + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + } + ApplyTeleportEffects(StartLocation); + //return; +} + +simulated event ApplyTeleportEffects(Vector StartLocation) +{ + local TgDevice_PortalMod modPortal; + local int I; + + FlashPlaySpecialEffect(9, StartLocation); + // End:0x118 + if(int(Role) == int(ROLE_Authority)) + { + I = 0; + J0x36: + + // End:0x118 [Loop If] + if(I < 33) + { + // End:0x10A + if((self.m_EquippedDevices[I] != none) && self.m_EquippedDevices[I].IsActive()) + { + modPortal = TgDevice_PortalMod(self.m_EquippedDevices[I]); + // End:0x10A + if(modPortal != none) + { + modPortal.ApplyEffect(); + } + } + ++I; + // [Loop Continue] + goto J0x36; + } + } + //return; +} + +reliable server function ServerSetVar(int varId) +{ + local Vector V; + + V = vect(10.0000000, 10.0000000, 10.0000000); + V.X = float(varId); + AddVelocity(V, vect(0.0000000, 0.0000000, 0.0000000), none); + //return; +} + +exec function SetVar(int varId) +{ + ServerSetVar(varId); + //return; +} + +simulated function BlendToAnimTreeDeviceType() +{ + // End:0x24 + if(TgDevice(Weapon) != none) + { + r_bIsAnimInStrafeMode = true; + } + //return; +} + +simulated function TgPawn FindLocalPlayerPawn() +{ + local PlayerController PC; + + PC = GetALocalPlayerController(); + // End:0x4B + if(PC != none) + { + return TgPawn(PC.Pawn); + } + return none; + //return ReturnValue; +} + +simulated exec event SetUsePhysicsWithAnimation(bool Enable) +{ + local RB_BodySetup RigidBodySetupIterator; + local bool NeedsPhysicsAssetInstance; + + // End:0x11 + if(Mesh == none) + { + return; + } + Mesh.SetHasPhysicsAssetInstance(false); + // End:0x94 + if(Mesh.PhysicsAssetInstance != none) + { + Mesh.PhysicsAssetInstance.SetFullAnimWeightBonesFixed(true, Mesh); + } + return; + NeedsPhysicsAssetInstance = false; + // End:0x2B1 + if(Mesh != none) + { + Mesh.bEnableFullAnimWeightBodies = Enable; + // End:0x136 + if(Enable && Mesh.MinDistFactorForKinematicUpdate == 0.0000000) + { + Mesh.MinDistFactorForKinematicUpdate = 0.1400000; + } + // End:0x2B1 + if(Mesh.PhysicsAsset != none) + { + // End:0x1F2 + if(Mesh.PhysicsAssetInstance == none) + { + // End:0x1F1 + foreach Mesh.PhysicsAsset.BodySetup(RigidBodySetupIterator) + { + // End:0x1F0 + if(RigidBodySetupIterator.bAlwaysFullAnimWeight) + { + NeedsPhysicsAssetInstance = true; + } + else + { + } + } + } + // End:0x244 + if(NeedsPhysicsAssetInstance) + { + // End:0x244 + if(!Mesh.bHasPhysicsAssetInstance) + { + Mesh.SetHasPhysicsAssetInstance(true); + } + } + // End:0x2B1 + if(Mesh.PhysicsAssetInstance != none) + { + Mesh.PhysicsAssetInstance.SetFullAnimWeightBonesFixed(!Enable, Mesh); + } + } + } + //return; +} + +simulated event OnRigidBodySpringOverextension(RB_BodyInstance BodyInstance) +{ + super(Actor).OnRigidBodySpringOverextension(BodyInstance); + //return; +} + +event ModifyPawnPropertiesVolumeChanged() +{ + local TgModifyPawnPropertiesVolume Vol; + local bool bNewDisableAllDevices; + + bNewDisableAllDevices = false; + s_vOneWayMovement = vect(0.0000000, 0.0000000, 0.0000000); + // End:0xC1 + foreach TouchingActors(Class'TgGame.TgModifyPawnPropertiesVolume', Vol) + { + bNewDisableAllDevices = bNewDisableAllDevices || Vol.m_bDisableAllDevices; + // End:0xC0 + if(Vol.m_bOneWayMovement) + { + s_vOneWayMovement = Vector(Vol.m_vOnewWay); + } + } + //return; +} + +simulated function DisplayMessage(string sMessage) +{ + // End:0x5A + if(Controller != none) + { + // End:0x5A + if(TgPlayerController(Controller) != none) + { + TgPlayerController(Controller).ClientMessage(sMessage); + } + } + //return; +} + +event bool ShouldRecharge() +{ + // End:0x21 + if(IsInState('Dying') || m_bStunEnergyRegen) + { + return false; + } + return true; + //return ReturnValue; +} + +simulated function TickFriendlyPush() +{ + local TgPawn buddy; + local Vector Dir; + local int I; + + I = 0; + J0x0B: + + // End:0xD0 [Loop If] + if(I < Touching.Length) + { + buddy = TgPawn(Touching[I]); + // End:0xC2 + if(buddy != none) + { + Dir = Location - buddy.Location; + Dir = Normal(Dir); + AddVelocity(Dir, vect(0.0000000, 0.0000000, 0.0000000), none); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated function DoubleCheckSimulatedProxy() +{ + local bool bWrong; + + bWrong = false; + // End:0x33 + if(int(r_eDesiredInHand) != int(m_eEquippedInHand)) + { + bWrong = true; + } + // End:0x70 + if((c_EquipForm[int(m_eEquippedInHand)] == none) && int(m_eEquippedInHand) != int(0)) + { + bWrong = true; + } + // End:0x101 + if(c_EquipForm[int(m_eEquippedInHand)] != none) + { + // End:0x101 + if(c_EquipForm[int(m_eEquippedInHand)].c_EquipDeviceInfo.nDeviceInstanceId != r_EquipDeviceInfo[int(m_eEquippedInHand)].nDeviceInstanceId) + { + bWrong = true; + } + } + // End:0x158 + if((c_EquipForm[int(m_eEquippedInHand)] == none) && r_EquipDeviceInfo[int(m_eEquippedInHand)].nDeviceInstanceId != 0) + { + bWrong = true; + } + // End:0x1AF + if(bWrong == true) + { + // End:0x186 + if(c_EquipForm[int(m_eEquippedInHand)] != none) + { + } + DeviceFormChanged(); + // End:0x1AF + if(c_EquipForm[int(m_eEquippedInHand)] != none) + { + } + } + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + local TgDevice Dev; + local bool bShouldBeFirstPersonThisFrame; + + // End:0x12 + if(c_nTickCheckingState == 2) + { + return; + } + // End:0x2B + if(m_bHitWallThisTick) + { + m_bHitWallThisTick = false; + } + super(Actor).Tick(DeltaSeconds); + // End:0x65 + if(int(Role) == int(ROLE_Authority)) + { + RegainPools(DeltaSeconds); + } + // End:0x8C + if(int(m_eLocalGrabState) > int(0)) + { + TickGrab(DeltaSeconds); + } + // End:0x143 + if((int(Role) == int(ROLE_Authority)) && int(r_eCurrentStunType) == int(7)) + { + Dev = GetDeviceByEqPoint(1); + // End:0x143 + if(((Dev != none) && Dev.m_bHandDevice) && !Dev.IsFiring()) + { + Dev.StartFire(); + } + } + UpdateHealingBeamEffects(); + bShouldBeFirstPersonThisFrame = ShouldBeFirstPersonThisTick(); + // End:0x1A8 + if(bShouldBeFirstPersonThisFrame != m_bShouldBeFirstPersonLastFrame) + { + // End:0x19E + if(bShouldBeFirstPersonThisFrame) + { + m_f1PTransitionFireDelayRemaining = m_f1PTransitionFireDelay; + } + else + { + Invoke3pTransitionDelegates(); + } + } + m_bShouldBeFirstPersonLastFrame = bShouldBeFirstPersonThisFrame; + // End:0x1E2 + if(m_f1PTransitionFireDelayRemaining > float(0)) + { + m_f1PTransitionFireDelayRemaining -= DeltaSeconds; + } + TickScale(DeltaSeconds); + // End:0x21D + if(int(Role) != int(ROLE_Authority)) + { + c_fServerTimeStamp += DeltaSeconds; + } + UpdateStealthMaterialBasedOnNearbyEnemies(); + // End:0x247 + if(m_bUsesRecoil) + { + UpdateRecoil(DeltaSeconds); + } + //return; +} + +simulated event UpdateRecoil(float DeltaTime) +{ + local Rotator m_rNewRecoil; + + // End:0x22 + if(!m_bUsesRecoil || Weapon == none) + { + return; + } + m_fSettleDelay -= DeltaTime; + // End:0x11D + if(m_fSettleDelay < float(0)) + { + // End:0x10E + if(m_rCurrentRecoil != MakeRotator(0, 0, 0)) + { + m_rNewRecoil = RInterpTo(m_rCurrentRecoil, MakeRotator(0, 0, 0), -m_fSettleDelay + m_fRecoilSettleDeltaTimeOverflow, m_fSettleSpeed, true); + // End:0xDA + if(m_rNewRecoil == m_rCurrentRecoil) + { + m_fRecoilSettleDeltaTimeOverflow += DeltaTime; + } + else + { + m_fRecoilSettleDeltaTimeOverflow = 0.0000000; + m_rCurrentRecoil = m_rNewRecoil; + } + m_fSettleDelay = 0.0000000; + } + else + { + m_fRecoilSettleDeltaTimeOverflow = 0.0000000; + } + } + // End:0x1CB + if(m_rSmoothedRecoil != m_rCurrentRecoil) + { + m_rNewRecoil = RInterpTo(m_rSmoothedRecoil, m_rCurrentRecoil, DeltaTime + m_fRecoilSmoothDeltaTimeOverflow, m_fRecoilSmoothRate); + // End:0x1A6 + if(m_rNewRecoil == m_rSmoothedRecoil) + { + m_fRecoilSmoothDeltaTimeOverflow += DeltaTime; + } + else + { + m_fRecoilSmoothDeltaTimeOverflow = 0.0000000; + m_rSmoothedRecoil = m_rNewRecoil; + } + } + else + { + m_fRecoilSmoothDeltaTimeOverflow = 0.0000000; + } + //return; +} + +function AddRecoil(Rotator rNewRecoil, float fRecoilSmoothRate, float fSettleDelay, float fSettleSpeed) +{ + // End:0x11 + if(!m_bUsesRecoil) + { + return; + } + m_rCurrentRecoil = Normalize(m_rCurrentRecoil + rNewRecoil); + m_fRecoilSmoothRate = fRecoilSmoothRate; + m_fSettleDelay = fSettleDelay; + m_fSettleSpeed = fSettleSpeed * 182.0444000; + //return; +} + +simulated function float TickScaleVariable(float fDesiredValue, float fOldValue, float fScaleChangePerSecond, float DeltaSeconds) +{ + local float fNewValue; + + fNewValue = fOldValue; + // End:0xE1 + if(fDesiredValue > 0.0000000) + { + // End:0xE1 + if(fOldValue != fDesiredValue) + { + // End:0x5F + if(fScaleChangePerSecond < 0.0000000) + { + fScaleChangePerSecond = 1.0000000; + } + // End:0xAD + if(fOldValue > fDesiredValue) + { + fNewValue = FMax(fOldValue - (fScaleChangePerSecond * DeltaSeconds), fDesiredValue); + } + else + { + fNewValue = FMin(fOldValue + (fScaleChangePerSecond * DeltaSeconds), fDesiredValue); + } + } + } + return fNewValue; + //return ReturnValue; +} + +simulated function TickScale(float DeltaSeconds) +{ + local float fNewScale, fOldScaleCollisionHeight, fOldScaleCollisionRadius, fCurrentScaleCollisionHeightDifference, fCurrentScaleCollisionRadiusDifference; + + // End:0xC5 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + fNewScale = GetPropCurrentValue(118); + // End:0xC5 + if(fNewScale != m_fScaleMesh) + { + m_fScaleMesh = TickScaleVariable(fNewScale, m_fScaleMesh, m_fScaleMeshChangePerSecond, DeltaSeconds); + // End:0xC5 + if(Mesh != none) + { + Mesh.SetScale(m_fScaleMesh); + } + } + } + fNewScale = GetPropCurrentValue(119); + fOldScaleCollisionHeight = m_fScaleCollisionHeight; + // End:0x13D + if(fNewScale != m_fScaleCollisionHeight) + { + m_fScaleCollisionHeight = TickScaleVariable(fNewScale, m_fScaleCollisionHeight, m_fScaleCollisionHeightChangePerSecond, DeltaSeconds); + } + fNewScale = GetPropCurrentValue(120); + fOldScaleCollisionRadius = m_fScaleCollisionRadius; + // End:0x1B5 + if(fNewScale != m_fScaleCollisionRadius) + { + m_fScaleCollisionRadius = TickScaleVariable(fNewScale, m_fScaleCollisionRadius, m_fScaleCollisionRadiusChangePerSecond, DeltaSeconds); + } + fCurrentScaleCollisionHeightDifference = 1.0000000; + fCurrentScaleCollisionRadiusDifference = 1.0000000; + // End:0x204 + if(fOldScaleCollisionHeight > 0.0000000) + { + fCurrentScaleCollisionHeightDifference = m_fScaleCollisionHeight / fOldScaleCollisionHeight; + } + // End:0x235 + if(fOldScaleCollisionRadius > 0.0000000) + { + fCurrentScaleCollisionRadiusDifference = m_fScaleCollisionRadius / fOldScaleCollisionRadius; + } + // End:0x2CE + if((fCurrentScaleCollisionHeightDifference != 1.0000000) || fCurrentScaleCollisionRadiusDifference != 1.0000000) + { + CylinderComponent.SetCylinderSize(CylinderComponent.CollisionRadius * fCurrentScaleCollisionRadiusDifference, CylinderComponent.CollisionHeight * fCurrentScaleCollisionHeightDifference); + } + //return; +} + +simulated function UpdateBob(float DeltaSeconds) +{ + local Vector X, Y, Z; + local float Speed2D, Alpha, OldBobTime; + local TgPlayerController TgPC; + local TgPlayerCamera PlayerCamera; + local TgCameraModule_ThirdPerson CamMod; + local int M, N; + + Alpha = 1.0000000; + TgPC = TgPlayerController(Controller); + // End:0x133 + if(TgPC != none) + { + PlayerCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0x133 + if(PlayerCamera != none) + { + CamMod = TgCameraModule_ThirdPerson(PlayerCamera.CurrentCameraMod); + // End:0x133 + if((CamMod != none) && CamMod.fZoomMax > 0.0000000) + { + Alpha = 1.0000000 - (CamMod.fZoomFactorInterp / CamMod.fZoomMax); + } + } + } + OldBobTime = BobTime; + // End:0x414 + if(int(Physics) == int(1)) + { + GetAxes(Controller.Rotation, X, Y, Z); + Speed2D = VSize(Velocity); + // End:0x1ED + if((Speed2D < float(10)) || GroundSpeed < float(1)) + { + BobTime += (0.2000000 * DeltaSeconds); + } + else + { + BobTime += (DeltaSeconds * (0.3000000 + ((0.7000000 * Speed2D) / GroundSpeed))); + } + WalkBob = ((vect(0.0000000, 1.0000000, 0.0000000) * Bob) * Speed2D) * Sin(8.0000000 * BobTime); + AppliedBob = AppliedBob * (float(1) - FMin(1.0000000, 16.0000000 * DeltaSeconds)); + WalkBob.Z = AppliedBob; + // End:0x33A + if(Speed2D > 10.0000000) + { + WalkBob.Z = WalkBob.Z + (((0.7500000 * Bob) * Speed2D) * Sin(16.0000000 * BobTime)); + } + WalkBob *= Alpha; + // End:0x414 + if(((int(Physics) == int(1)) && IsFirstPerson()) && Speed2D > 10.0000000) + { + M = int((0.5000000 * 3.1415930) + ((m_BobFootstepFactor * OldBobTime) / 3.1415930)); + N = int((0.5000000 * 3.1415930) + ((m_BobFootstepFactor * BobTime) / 3.1415930)); + // End:0x414 + if(M != N) + { + PlayFootStepSound(0, 0); + } + } + } + //return; +} + +simulated event TickTargeting(float DeltaSeconds) +{ + local bool bTickedTargeting, bDead, bCinematic; + local TgPlayerController TgPC; + local TgClientSettings Settings; + local WeaponMeshSwapStrategy SwapStrategy; + + // End:0x48 + if(WorldInfo.IsPlayingDemo() || WorldInfo.IsPlayingTimelapse()) + { + return; + } + bTickedTargeting = false; + bDead = IsInState('Dying'); + bCinematic = IsCinematicMode(); + TgPC = TgPlayerController(Controller); + // End:0x2F6 + if(TgPC != none) + { + // End:0x160 + if((c_CurrentStartActionDevice == none) || int(c_CurrentStartActionDevice.r_eEquippedAt) == int(0)) + { + c_CurrentStartActionDevice = none; + // End:0x15D + if(((c_CurrentTargetingDevice != none) && TgPC.bPressingLeftMouseButton) && c_CurrentTargetingDevice.CanFireIfLeftMouseDown()) + { + StartAction(c_CurrentTargetingDevice); + } + } + else + { + // End:0x2F6 + if((c_CurrentStartActionDevice != none) && !c_CurrentStartActionDevice.IsFiring()) + { + Settings = TgPC.GetClientSettings(); + // End:0x2F6 + if(((Settings != none) && int(Settings.GetCastMode(r_nProfileId, c_CurrentStartActionDevice.r_eEquippedAt)) != int(0)) && Settings.bUseCastQueueing) + { + StartAction(c_CurrentStartActionDevice,, false); + // End:0x2F6 + if((Settings.CastQueueTime > float(0)) && (c_fShouldStartActionTimeStamp + Settings.CastQueueTime) <= WorldInfo.TimeSeconds) + { + SetTargetingDevice(GetDeviceByEqPoint(1), SwapStrategy); + c_CurrentStartActionDevice = none; + } + } + } + } + } + // End:0x3E1 + if((c_CurrentTargetingDevice != none) && !c_CurrentTargetingDevice.m_bHandDevice) + { + // End:0x38B + if(bDead || bCinematic) + { + // End:0x388 + if(c_CurrentTargetingDevice.IsInTargetingMode()) + { + c_CurrentTargetingDevice.ExitTargetingMode(); + } + } + else + { + // End:0x3E1 + if(c_CurrentTargetingDevice.UsesTargetingMode()) + { + c_CurrentTargetingDevice.TickTargetingMode(DeltaSeconds); + bTickedTargeting = true; + } + } + } + // End:0x420 + if(!bTickedTargeting && TgPC != none) + { + TgPC.ClearTargetingList(); + } + //return; +} + +simulated event bool IsTargetWithInCone(Actor Target) +{ + local Vector vTargetDir, vPawnFacingDir; + local bool bTargetInFrontOfMe; + local float fOrientation, fAngle; + + vPawnFacingDir = Vector(Rotation); + vTargetDir = Normal(Target.Location - Location); + bTargetInFrontOfMe = (((vPawnFacingDir Dot vTargetDir) > float(0)) ? true : false); + // End:0xE3 + if(bTargetInFrontOfMe) + { + fOrientation = vPawnFacingDir Dot vTargetDir; + fAngle = Acos(fOrientation); + fAngle *= (float(180) / 3.1415930); + return fAngle <= float(45); + } + return false; + //return ReturnValue; +} + +// Export UTgPawn::execIsTalentEquipped(FFrame&, void* const) +native function bool IsTalentEquipped(int nTalentDeviceId); + +// Export UTgPawn::execWasPlayerSpawned(FFrame&, void* const) +native function bool WasPlayerSpawned(); + +// Export UTgPawn::execGetCurrentOwnerPawn(FFrame&, void* const) +native function TgPawn GetCurrentOwnerPawn(); + +// Export UTgPawn::execTeleportTraceCheck(FFrame&, void* const) +native function bool TeleportTraceCheck(Vector vTestLoc, Vector vDestLoc); + +// Export UTgPawn::execIsAboveNonbaseableSurface(FFrame&, void* const) +native function bool IsAboveNonbaseableSurface(Vector vTestLoc, float fTestDist, out Actor HitActor, out Vector HitNormal); + +simulated event bool Teleport(Vector vDest, Rotator rDest, bool bPlayFx, optional int TeleportEnterState, optional int TeleportExitState, optional bool bFailOnNoSafeSpot, optional out Vector vTeleportLocation, optional bool bFakeTeleport = false) +{ + local Vector Extent, Loc, NewLocation; + local Rotator NewRotation; + local TgPlayerController TgPC; + local Actor NonBaseableHitActor; + local Vector NonBaseableHitNormal; + local bool bFoundSafeSpot; + + Extent.X = GetCollisionRadius(); + Extent.Y = Extent.X; + Extent.Z = GetCollisionHeight(); + Loc = vDest; + NewLocation = vDest; + // End:0x118 + if(FindSpot(Extent, Loc) && TeleportTraceCheck(Loc, vDest)) + { + NewLocation = Loc; + bFoundSafeSpot = true; + } + else + { + bFoundSafeSpot = false; + // End:0x13C + if(bFailOnNoSafeSpot) + { + return bFoundSafeSpot; + } + } + // End:0x19D + if(!bFakeTeleport) + { + PreTeleport(none); + PlayTeleportEffect(false, true); + // End:0x19D + if(bPlayFx) + { + FlashTeleportFx(((TeleportEnterState == 0) ? 1 : TeleportEnterState), Location); + } + } + vTeleportLocation = NewLocation; + // End:0x2D6 + if(!bFakeTeleport && SetLocation(NewLocation)) + { + NewRotation = rDest; + NewRotation.Pitch = 0; + NewRotation.Roll = 0; + SetRotation(NewRotation); + // End:0x2D3 + if(Controller != none) + { + TgPC = TgPlayerController(Controller); + // End:0x286 + if(TgPC != none) + { + TgPC.SetNoSmoothedMovementCorrection(true, false); + } + // End:0x2D3 + if(IsAboveNonbaseableSurface(NewLocation + vect(0.0000000, 0.0000000, 30.0000000), 2.0000000 * (NativeGetCollisionHeight()), NonBaseableHitActor, NonBaseableHitNormal)) + { + SetPhysics(2); + } + } + } + else + { + // End:0x2F7 + if(bFakeTeleport && bFoundSafeSpot) + { + return true; + } + else + { + // End:0x306 + if(!bFakeTeleport) + { + } + bFoundSafeSpot = false; + // End:0x32A + if(bFailOnNoSafeSpot) + { + return bFoundSafeSpot; + } + } + } + // End:0x38C + if(!bFakeTeleport) + { + PostTeleport(none); + PlayTeleportEffect(true, true); + // End:0x38C + if(bPlayFx) + { + FlashTeleportFx(((TeleportExitState == 0) ? 2 : TeleportExitState), Location); + } + } + return bFoundSafeSpot; + //return ReturnValue; +} + +simulated function bool CanApplyAimAssist(TgPlayerController LocalPlayerController, TgPawn LocalPawn) +{ + local bool bCanApplyAimAssist, bInSameVolume; + local TgRepInfo_Player TgRepInfo_Player; + + bInSameVolume = false; + bCanApplyAimAssist = true; + TgRepInfo_Player = GetPRI(); + bCanApplyAimAssist = (TgRepInfo_Player != none) && IsAliveAndWell(); + // End:0xC0 + if((bCanApplyAimAssist && (NumVisibilityVolumesTouching()) > 0) && r_bIsVolumeStealthed) + { + bInSameVolume = LocalPawn.IsInSameVisibilityVolume(self); + bCanApplyAimAssist = bInSameVolume; + } + // End:0x177 + if(bCanApplyAimAssist) + { + // End:0xF0 + if(int(r_eIsStealthed) == int(1)) + { + bCanApplyAimAssist = true; + } + else + { + // End:0x16B + if(!TgRepInfo_Player.IsStealthedClient() || (!TgRepInfo_Player.IsHardStealthedClient() && bInSameVolume) && c_fCurrentFadeValue < float(1)) + { + bCanApplyAimAssist = true; + } + else + { + bCanApplyAimAssist = false; + } + } + } + return bCanApplyAimAssist; + //return ReturnValue; +} + +simulated event Stun(bool bStunController, optional Controller.EStunType eType) +{ + local TgDevice Dev; + local int I; + local Controller.EStunType OldStunType; + + OldStunType = r_eCurrentStunType; + r_eCurrentStunType = eType; + // End:0x123 + if((int(r_eCurrentStunType) != int(0)) && int(r_eCurrentStunType) != int(5)) + { + EndPhysTween(false); + Dev = none; + I = 0; + J0x72: + + // End:0x123 [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0x115 + if(((Dev != none) && Dev.CanBeStunned()) && Dev.CanBeInterrupted()) + { + Dev.InterruptFiring(); + } + I++; + // [Loop Continue] + goto J0x72; + } + } + // End:0x164 + if(Controller != none) + { + Controller.Stun(bStunController, eType); + } + // End:0x1E2 + if(int(r_eCurrentStunType) == int(7)) + { + Dev = GetDeviceByEqPoint(1); + // End:0x1DF + if((Dev != none) && Dev.m_bHandDevice) + { + Dev.StartFire(); + } + } + else + { + // End:0x25D + if(int(OldStunType) == int(7)) + { + Dev = GetDeviceByEqPoint(1); + // End:0x25D + if((Dev != none) && Dev.m_bHandDevice) + { + Dev.StopFire(); + } + } + } + // End:0x290 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + ClientSetStun(); + } + //return; +} + +event UpdateCooldownsOnDevices() +{ + local int I; + + // End:0x90 + if((int(Role) == int(ROLE_Authority)) && InvManager != none) + { + I = 1; + J0x30: + + // End:0x90 [Loop If] + if(I < 33) + { + // End:0x82 + if(m_EquippedDevices[I] != none) + { + m_EquippedDevices[I].CheckAndUpdateCooldown(); + } + I++; + // [Loop Continue] + goto J0x30; + } + } + //return; +} + +event SaveDeathInfoForZoomCam(TgPawn KillerOwner, TgPawn Killer, int DeviceID, bool bPetKill) +{ + local TgPlayerController PC; + local TgRepInfo_Player KillerPRI, OwnerPRI; + local int nKillerHealthPct; + local float killerMaxHealth; + + PC = TgPlayerController(Controller); + // End:0x1A9 + if(PC != none) + { + // End:0xA6 + if((Killer != none) && Killer.r_Owner != none) + { + OwnerPRI = TgRepInfo_Player(Killer.r_Owner.PlayerReplicationInfo); + } + // End:0xDE + if(Killer != none) + { + KillerPRI = Killer.GetPRI(); + } + // End:0x163 + if((Killer != none) && KillerPRI != none) + { + killerMaxHealth = Killer.GetMaxHealth(); + nKillerHealthPct = (100 * Killer.Health) / int(killerMaxHealth); + } + else + { + nKillerHealthPct = -1; + } + SetDeathZoomInfo(Killer, KillerPRI, nKillerHealthPct, DeviceID, OwnerPRI); + } + return; + //return; +} + +simulated function bool IsValidMeleeTarget(TgPawn ProspectiveMeleeTarget) +{ + local bool bIsValidTarget; + + bIsValidTarget = true; + // End:0x2A + if(ProspectiveMeleeTarget == none) + { + bIsValidTarget = false; + } + else + { + // End:0x54 + if(!IsEnemy(ProspectiveMeleeTarget) == true) + { + bIsValidTarget = false; + } + else + { + // End:0x73 + if(IsInState('Dying')) + { + bIsValidTarget = false; + } + else + { + // End:0xD6 + if((int(Controller.m_eCurrentStunType) != int(0)) || int(Controller.m_eCurrentStunType) != int(0)) + { + bIsValidTarget = false; + } + else + { + // End:0x12E + if(ProspectiveMeleeTarget.IsInState('Dying') || ProspectiveMeleeTarget.IsInState('KnockedDown')) + { + bIsValidTarget = false; + } + } + } + } + } + return bIsValidTarget; + //return ReturnValue; +} + +simulated function bool CanPickupDroppedItem() +{ + // End:0x12 + if(IsInState('Dying')) + { + return false; + } + return true; + //return ReturnValue; +} + +event BaseChange() +{ + local SpeedTreeActor SpeedTree; + + super(Pawn).BaseChange(); + SpeedTree = SpeedTreeActor(Base); + // End:0x3F + if(SpeedTree != none) + { + JumpOffPawn(); + } + //return; +} + +simulated event OnPhaseEnded(int nPhaseThatEnded) +{ + //return; +} + +simulated event OnPhaseChange() +{ + ClearTimer('OnPhaseTransitionComplete'); + SetTimer(m_fPhaseChangeTime, false, 'OnPhaseTransitionComplete'); + FxDeactivateGroupSelf('Phase', -1); + FxActivateGroupSelf('Phase', r_nPhase); + //return; +} + +simulated function OnPhaseTransitionComplete() +{ + //return; +} + +exec function Perf2(bool bEnabled) +{ + local TgPawn P; + + // End:0x7D + foreach AllActors(Class'TgGame.TgPawn', P) + { + // End:0x7C + if(P.Mesh != none) + { + P.Mesh.bUpdateSkelWhenNotRendered = bEnabled; + } + } + //return; +} + +exec function ChangePhase(int NewPhase) +{ + SetPhase(NewPhase); + ServerChangePhase(NewPhase); + //return; +} + +reliable server function ServerChangePhase(int NewPhase) +{ + SetPhase(NewPhase); + //return; +} + +event AddToTeleportNotify(Actor ToBeNotified) +{ + // End:0x2A + if(int(Role) == int(ROLE_Authority)) + { + m_TeleportNotifyList.AddItem(ToBeNotified); + } + //return; +} + +event RemoveFromTeleportNotify(Actor RemoveActor) +{ + // End:0x2A + if(int(Role) == int(ROLE_Authority)) + { + m_TeleportNotifyList.RemoveItem(RemoveActor); + } + //return; +} + +final event TeleportNotify() +{ + local int I; + local TgPawn NotifyPawn; + local TgDevice NotifyDevice; + + I = m_TeleportNotifyList.Length - 1; + J0x17: + + // End:0xE1 [Loop If] + if(I >= 0) + { + NotifyPawn = TgPawn(m_TeleportNotifyList[I]); + NotifyDevice = TgDevice(m_TeleportNotifyList[I]); + // End:0xA4 + if(NotifyPawn != none) + { + NotifyPawn.OnTeleportNotify(self); + } + else + { + // End:0xD3 + if(NotifyDevice != none) + { + NotifyDevice.OnTeleportNotify(self); + } + } + I--; + // [Loop Continue] + goto J0x17; + } + //return; +} + +function OnTeleportNotify(Actor TeleportingActor) +{ + //return; +} + +function bool PreTeleport(Teleporter InTeleporter) +{ + local bool bFail; + + bFail = super(Actor).PreTeleport(InTeleporter); + // End:0x77 + if(!bFail) + { + // End:0x62 + if(int(Role) == int(ROLE_Authority)) + { + EndPhysTween(true); + EndPhysGrab(true); + EndPhysCharge(true); + } + ForceAllGrabTargetsDetach(); + TeleportNotify(); + } + // End:0xAA + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + HaltFXForTeleport(); + } + return bFail; + //return ReturnValue; +} + +simulated function HaltFXForTeleport() +{ + local editinline TgParticleSystemComponent PSC; + + // End:0x12F + if(Mesh != none) + { + // End:0x12E + foreach Mesh.AttachedComponents(Class'TgGame.TgParticleSystemComponent', PSC) + { + // End:0x12D + if((PSC != none) && PSC.Template != none) + { + switch(PSC.Template.Name) + { + // End:0x12A + case 'FX_Gen_Stat_Zombie_Loop_3P': + // End:0x127 + if(!PSC.bWasDeactivated) + { + PSC.m_bReenableAfterTeleport = true; + PSC.SetActive(false); + } + // End:0x12D + break; + // End:0xFFFF + default: + break; + } + } + else + { + }/* !MISMATCHING REMOVE, tried ForEach got Type:Else Position:0x12D! */ + }/* !MISMATCHING REMOVE, tried If got Type:ForEach Position:0x00F! */ + //return; + }/* !MISMATCHING REMOVE, tried Else got Type:If Position:0x000! */ +} + +simulated function ResumeFXFromTeleport() +{ + local editinline TgParticleSystemComponent PSC; + + // End:0x12D + if(Mesh != none) + { + // End:0x12C + foreach Mesh.AttachedComponents(Class'TgGame.TgParticleSystemComponent', PSC) + { + // End:0x12B + if((PSC != none) && PSC.Template != none) + { + switch(PSC.Template.Name) + { + // End:0x128 + case 'FX_Gen_Stat_Zombie_Loop_3P': + // End:0x125 + if(PSC.m_bReenableAfterTeleport) + { + PSC.SetActive(true); + PSC.m_bReenableAfterTeleport = false; + } + // End:0x12B + break; + // End:0xFFFF + default: + break; + } + } + else + { + }/* !MISMATCHING REMOVE, tried ForEach got Type:Else Position:0x12B! */ + }/* !MISMATCHING REMOVE, tried If got Type:ForEach Position:0x00F! */ + //return; + }/* !MISMATCHING REMOVE, tried Else got Type:If Position:0x000! */ +} + +simulated function PostTeleport(Teleporter OutTeleporter) +{ + super(Actor).PostTeleport(OutTeleporter); + r_nBigTeleportCount++; + PostBigTeleport(); + // End:0x5B + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + ResumeFXFromTeleport(); + } + //return; +} + +simulated function PostBigTeleport() +{ + HaltFXForTeleport(); + ForceUpdateComponents(); + // End:0x46 + if(Mesh != none) + { + Mesh.UpdateRBBonesFromSpaceBases(true, true); + } + ResumeFXFromTeleport(); + //return; +} + +// Export UTgPawn::execGetPerCharacterAltEquipPoint(FFrame&, void* const) +native simulated function TgObject.TG_EQUIP_POINT GetPerCharacterAltEquipPoint(); + +// Export UTgPawn::execGetBotId(FFrame&, void* const) +native function int GetBotId(); + +// Export UTgPawn::execGetBotName(FFrame&, void* const) +native function string GetBotName(); + +// Export UTgPawn::execGetEmoteSoundCue(FFrame&, void* const) +native final function SoundCue GetEmoteSoundCue(int BotId, TgPawn.EEmote Emote, int ExtraInfo); + +// Export UTgPawn::execGetEmoteAkEvent(FFrame&, void* const) +native final function AkEvent GetEmoteAkEvent(int BotId, TgPawn.EEmote Emote, int ExtraInfo); + +// Export UTgPawn::execGetVoxKillAkEvent(FFrame&, void* const) +native final function AkEvent GetVoxKillAkEvent(int BotId, TgPawn.EEmote Emote, int ExtraInfo); + +// Export UTgPawn::execGetEmoteSuffix(FFrame&, void* const) +native static final function string GetEmoteSuffix(TgPawn.EEmote Emote, int ExtraInfo); + +// Export UTgPawn::execGetEmoteCustomSuffix(FFrame&, void* const) +native function string GetEmoteCustomSuffix(TgPawn.EEmote Emote, int ExtraInfo); + +// Export UTgPawn::execGetVGSCustomSuffix(FFrame&, void* const) +native function string GetVGSCustomSuffix(); + +function TgPawn.EEmote GetDeviceEmoteType(TgDevice Dev) +{ + // End:0x62 + if(Dev != none) + { + switch(Dev.r_eEquippedAt) + { + // End:0x3F + case 2: + return 16; + // End:0x47 + case 3: + return 14; + // End:0x4F + case 4: + return 15; + // End:0x57 + case 16: + return 13; + // End:0x5F + case 23: + return 17; + // End:0xFFFF + default: + break; + } + } + else + { + return 0; + //return ReturnValue; + } +} + +event PlayDeviceEmoteAll(TgDevice Dev, optional bool bCallOnOwner = false) +{ + local TgPawn.EEmote DeviceEmote; + + // End:0x125 + if(((Dev != none) && PlayerReplicationInfo != none) && !PlayerReplicationInfo.IsBot()) + { + DeviceEmote = GetDeviceEmoteType(Dev); + // End:0x125 + if(int(DeviceEmote) != int(0)) + { + // End:0xC8 + if(int(Role) == int(ROLE_Authority)) + { + // End:0xB4 + if(bCallOnOwner) + { + FlashPlayEmote(DeviceEmote, 0); + } + else + { + FlashPlayEmoteExcludeOwner(DeviceEmote, 0); + } + } + // End:0x125 + if((!bCallOnOwner && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && IsLocallyControlled()) + { + ClientPlayEmote(DeviceEmote); + } + } + } + //return; +} + +event PlayEmote(TgPawn.EEmote Emote, optional int nExtraInfo) +{ + // End:0x54 + if(((!IsAliveAndWell() && int(Emote) != int(7)) && int(Emote) != int(8)) && int(Emote) != int(9)) + { + return; + } + FlashPlayEmote(Emote, nExtraInfo); + //return; +} + +unreliable server function ServerPlayEmote(TgPawn.EEmote Emote, optional int nExtraInfo) +{ + PlayEmote(Emote, nExtraInfo); + //return; +} + +exec event PlayEmoteAtWorldLocation(TgPawn.EEmote Emote, optional int nExtraInfo) +{ + ServerPlayEmote(Emote, nExtraInfo); + //return; +} + +unreliable client simulated event PlayEmoteSelfOnly(TgPawn.EEmote Emote, optional int nExtraInfo) +{ + // End:0x3A + if(IsLocallyControlled() && IsHumanControlled()) + { + ClientPlayEmote(Emote, nExtraInfo); + } + //return; +} + +simulated event ClientPlayEmote(TgPawn.EEmote Emote, optional int nExtraInfo) +{ + local TgAnimNodeEmoteSwitch AnimNodeIterator; + local TgAnimBlendByEmote EmoteBlendIterator; + local bool bEmoteSuccessful; + local AkEvent EmoteAkEvent, VoxKillAkEvent; + local SoundCue EmoteSoundCue; + + // End:0x413 + if((((!IsEmoteOnInternalCooldown(Emote) && !RespectsEmoteGlobalCooldown(Emote) || !AreEmotesOnGlobalCooldown()) && !RespectsEmoteGlobalCooldown(Emote) || !IsEmoteOnNonLocalCooldown(Emote)) && !WorldInfo.IsPlayingTimelapse() || CanEmoteDuringTimelapse(Emote)) && EmoteDiceRoll(Emote)) + { + // End:0x413 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x124 + if(int(Emote) == int(7)) + { + // End:0x124 + if(AreEmotesOnGlobalCooldown()) + { + Emote = 8; + } + } + EmoteAkEvent = GetEmoteAkEvent(GetBotId(), Emote, nExtraInfo); + // End:0x1E4 + if(EmoteShouldKillAllOtherVox(Emote)) + { + VoxKillAkEvent = GetVoxKillAkEvent(GetBotId(), Emote, nExtraInfo); + PostAkEvent(VoxKillAkEvent); + // End:0x1E4 + if(m_AkActorUnoccluded != none) + { + m_AkActorUnoccluded.PostAkEvent(VoxKillAkEvent); + } + } + // End:0x212 + if(EmoteAkEvent != none) + { + PostEmoteAkEvent(EmoteAkEvent, Emote); + } + else + { + EmoteSoundCue = GetEmoteSoundCue(GetBotId(), Emote, nExtraInfo); + // End:0x2B6 + if(EmoteSoundCue != none) + { + // End:0x29E + if(IsLocallyControlled() && IsHumanControlled()) + { + Controller.PlaySound(EmoteSoundCue); + } + else + { + PlaySound(EmoteSoundCue); + } + } + } + // End:0x2F6 + foreach m_AnimNodeEmoteSwitches(AnimNodeIterator) + { + AnimNodeIterator.PlayEmote(Emote); + } + // End:0x358 + foreach m_EmoteBlendNodes(EmoteBlendIterator) + { + bEmoteSuccessful = (EmoteBlendIterator.PlayEmote(Emote) > 0.0000000) || bEmoteSuccessful; + } + // End:0x3AF + if(!bEmoteSuccessful) + { + // End:0x3A0 + foreach m_EmoteBlendNodes(EmoteBlendIterator) + { + EmoteBlendIterator.CancelEmote(true); + } + SetEmote3PCamera(false); + } + else + { + // End:0x3D0 + if(EmoteShouldForce3P(Emote)) + { + SetEmote3PCamera(true); + } + } + PlayEmoteSilhouetteEffect(Emote, nExtraInfo); + RecordInternalEmoteTime(Emote); + RecordGlobalEmoteTime(); + RecordNonLocalEmoteTime(); + } + } + //return; +} + +simulated event PlayEmoteSilhouetteEffect(TgPawn.EEmote Emote, optional int nExtraInfo) +{ + //return; +} + +simulated event bool CanEmoteDuringTimelapse(TgPawn.EEmote Emote) +{ + local TgPlayerController PC; + local TgPawn.EEmoteCategory EmoteCat; + + EmoteCat = GetEmoteCategory(Emote); + switch(EmoteCat) + { + // End:0x3A + case 8: + return true; + // End:0x40 + break; + // End:0xFFFF + default: + // End:0x40 + break; + break; + } + PC = TgPlayerController(GetALocalPlayerController()); + // End:0xC0 + if(PC != none) + { + // End:0x9A + if(PC.m_nKillCamTargetId == r_nPawnId) + { + return true; + } + // End:0xC0 + if(PC.Pawn == self) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated event TgPawn.EEmoteCategory GetEmoteCategory(TgPawn.EEmote Emote) +{ + switch(Emote) + { + // End:0x1E + case 38: + return 2; + // End:0x14D + break; + // End:0x23 + case 1: + // End:0x28 + case 2: + // End:0x33 + case 3: + return 1; + // End:0x14D + break; + // End:0x38 + case 44: + // End:0x43 + case 34: + return 3; + // End:0x14D + break; + // End:0x48 + case 11: + // End:0x4D + case 12: + // End:0x52 + case 13: + // End:0x57 + case 14: + // End:0x5C + case 15: + // End:0x61 + case 17: + // End:0x66 + case 26: + // End:0x6B + case 27: + // End:0x70 + case 28: + // End:0x7B + case 30: + return 6; + // End:0x14D + break; + // End:0x80 + case 5: + // End:0x85 + case 10: + // End:0x8A + case 21: + // End:0x8F + case 22: + // End:0x94 + case 23: + // End:0x99 + case 29: + // End:0xA4 + case 33: + return 4; + // End:0x14D + break; + // End:0xA9 + case 20: + // End:0xAE + case 31: + // End:0xB9 + case 32: + return 5; + // End:0x14D + break; + // End:0xBE + case 18: + // End:0xC3 + case 19: + // End:0xC8 + case 35: + // End:0xCD + case 36: + // End:0xD2 + case 4: + // End:0xD7 + case 48: + // End:0xDC + case 47: + // End:0xE1 + case 46: + // End:0xEC + case 37: + return 7; + // End:0x14D + break; + // End:0xF7 + case 16: + return 8; + // End:0x14D + break; + // End:0xFC + case 6: + // End:0x101 + case 7: + // End:0x106 + case 8: + // End:0x10B + case 9: + // End:0x110 + case 24: + // End:0x11B + case 25: + return 9; + // End:0x14D + break; + // End:0x126 + case 45: + return 10; + // End:0x14D + break; + // End:0x12B + case 0: + // End:0x130 + case 39: + // End:0x135 + case 40: + // End:0x13A + case 41: + // End:0x13F + case 42: + // End:0x144 + case 43: + // End:0xFFFF + default: + return 0; + break; + } + // Failed to format nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x14D + //return ReturnValue; + // Failed to format nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x14D + // Failed to format nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x14D + // Failed to format remaining nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x14D +} + +simulated event int GetEmotePriority(TgPawn.EEmote Emote) +{ + local TgPawn.EEmoteCategory EmoteCat; + + EmoteCat = GetEmoteCategory(Emote); + switch(EmoteCat) + { + // End:0x35 + case 1: + // End:0x3F + case 2: + return 0; + // End:0x83 + break; + // End:0x44 + case 3: + // End:0x49 + case 4: + // End:0x4E + case 5: + // End:0x53 + case 6: + // End:0x5D + case 7: + return 1; + // End:0x83 + break; + // End:0x62 + case 8: + // End:0x6D + case 9: + return 2; + // End:0x83 + break; + // End:0x72 + case 10: + // End:0x77 + case 0: + // End:0xFFFF + default: + return -1; + break; + } + // Failed to format nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x083 + //return ReturnValue; + // Failed to format nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x083 + // Failed to format nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x083 + // Failed to format remaining nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x083 +} + +simulated event float GetAbilityEmoteChance(TgPawn.EEmote Emote) +{ + switch(Emote) + { + // End:0x38 + case 13: + return m_EmoteChancesAbility.fAbility1; + // End:0xAA + break; + // End:0x5D + case 14: + return m_EmoteChancesAbility.fAbility2; + // End:0xAA + break; + // End:0x82 + case 15: + return m_EmoteChancesAbility.fAbility3; + // End:0xAA + break; + // End:0xA7 + case 17: + return m_EmoteChancesAbility.fMount; + // End:0xAA + break; + // End:0xFFFF + default: + break; + } + return m_EmoteChancesAbility.fDefault; + //return ReturnValue; +} + +simulated event float GetEmoteChance(TgPawn.EEmote Emote) +{ + local TgPawn.EEmoteCategory EmoteCat; + + EmoteCat = GetEmoteCategory(Emote); + switch(EmoteCat) + { + // End:0x55 + case 1: + return m_EmoteChances.fPlayerVGS; + // End:0x22C + break; + // End:0x7A + case 2: + return m_EmoteChances.fAbilityOnCooldown; + // End:0x22C + break; + // End:0x9F + case 3: + return m_EmoteChances.fTakingDamage; + // End:0x22C + break; + // End:0xE1 + case 4: + // End:0xC1 + if(int(Emote) == int(29)) + { + return 0.3300000; + // [Explicit Continue] + goto J0x22C; + } + return m_EmoteChances.fCelebration; + // End:0x22C + break; + // End:0x106 + case 5: + return m_EmoteChances.fKills; + // End:0x22C + break; + // End:0x195 + case 6: + // End:0x175 + if((((int(Emote) == int(13)) || int(Emote) == int(14)) || int(Emote) == int(15)) || int(Emote) == int(17)) + { + return GetAbilityEmoteChance(Emote); + } + return m_EmoteChances.fAction; + // End:0x22C + break; + // End:0x1BA + case 7: + return m_EmoteChances.fContext; + // End:0x22C + break; + // End:0x1DF + case 8: + return m_EmoteChances.fUltimate; + // End:0x22C + break; + // End:0x204 + case 9: + return m_EmoteChances.fOverride; + // End:0x22C + break; + // End:0x229 + case 10: + return m_EmoteChances.fMovement; + // End:0x22C + break; + // End:0xFFFF + default: + break; + } + J0x22C: + + return m_EmoteChances.fDefault; + //return ReturnValue; +} + +simulated event bool EmoteDiceRoll(TgPawn.EEmote Emote) +{ + return RandRange(0.0000000, 1.0000000) <= (GetEmoteChance(Emote)); + //return ReturnValue; +} + +simulated event bool TriggersEmoteGlobalCooldown(TgPawn.EEmote Emote) +{ + local TgPawn.EEmoteCategory EmoteCat; + + EmoteCat = GetEmoteCategory(Emote); + switch(EmoteCat) + { + // End:0x35 + case 3: + // End:0x3A + case 4: + // End:0x3F + case 5: + // End:0x44 + case 6: + // End:0x49 + case 7: + // End:0x4E + case 8: + // End:0x58 + case 9: + return true; + // End:0x74 + break; + // End:0x5D + case 1: + // End:0x62 + case 2: + // End:0x67 + case 10: + // End:0x6C + case 0: + // End:0xFFFF + default: + return false; + break; + } + // Failed to format nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x074 + //return ReturnValue; + // Failed to format nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x074 + // Failed to format nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x074 + // Failed to format remaining nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x074 +} + +simulated event bool RespectsEmoteGlobalCooldown(TgPawn.EEmote Emote) +{ + local TgPawn.EEmoteCategory EmoteCat; + + EmoteCat = GetEmoteCategory(Emote); + switch(EmoteCat) + { + // End:0x35 + case 8: + // End:0x3A + case 9: + // End:0x44 + case 10: + return false; + // End:0x74 + break; + // End:0x49 + case 1: + // End:0x4E + case 3: + // End:0x53 + case 2: + // End:0x58 + case 4: + // End:0x5D + case 5: + // End:0x62 + case 6: + // End:0x67 + case 7: + // End:0x6C + case 0: + // End:0xFFFF + default: + return true; + break; + } + // Failed to format nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x074 + //return ReturnValue; + // Failed to format nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x074 + // Failed to format nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x074 + // Failed to format remaining nests!:System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) + at UELib.Core.UStruct.UByteCodeDecompiler.DecompileNests(Boolean outputAllRemainingNests) + at UELib.Core.UStruct.UByteCodeDecompiler.Decompile() + // 1 & Type:Switch Position:0x074 +} + +simulated event float GetEmoteInternalCooldown(TgPawn.EEmote Emote) +{ + local TgPlayerController PC; + local TgPawn.EEmoteCategory EmoteCat; + local float fInternalCooldown; + + EmoteCat = GetEmoteCategory(Emote); + switch(EmoteCat) + { + // End:0x47 + case 1: + fInternalCooldown = 10.0000000; + // End:0xD6 + break; + // End:0x5E + case 2: + fInternalCooldown = 3.0000000; + // End:0xD6 + break; + // End:0x75 + case 3: + fInternalCooldown = 45.0000000; + // End:0xD6 + break; + // End:0x7A + case 4: + // End:0x7F + case 5: + // End:0x84 + case 6: + // End:0x9B + case 7: + fInternalCooldown = 30.0000000; + // End:0xD6 + break; + // End:0xB2 + case 10: + fInternalCooldown = 5.0000000; + // End:0xD6 + break; + // End:0xB7 + case 8: + // End:0xBC + case 9: + // End:0xC1 + case 0: + // End:0xFFFF + default: + fInternalCooldown = 0.0000000; + // End:0xD6 + break; + break; + } + PC = TgPlayerController(GetALocalPlayerController()); + // End:0x138 + if((PC != none) && PC.Pawn != self) + { + fInternalCooldown *= 2.0000000; + } + return fInternalCooldown; + //return ReturnValue; +} + +simulated event RecordInternalEmoteTime(TgPawn.EEmote Emote) +{ + local TgPawn.EEmoteCategory EmoteCat; + + EmoteCat = GetEmoteCategory(Emote); + // End:0x3F + if(m_fLastEmoteCatTimes.Length < int(11)) + { + m_fLastEmoteCatTimes.Length = int(11); + } + switch(EmoteCat) + { + // End:0x93 + case 1: + m_fLastPlayerVGSEmoteTimes.InsertItem(0, WorldInfo.TimeSeconds); + m_fLastPlayerVGSEmoteTimes.Length = 3; + // End:0x96 + break; + // End:0xFFFF + default: + break; + } + m_fLastEmoteCatTimes[int(EmoteCat)] = WorldInfo.TimeSeconds; + //return; +} + +simulated event RecordGlobalEmoteTime() +{ + m_fLastEmoteTime = WorldInfo.TimeSeconds; + //return; +} + +simulated event RecordNonLocalEmoteTime() +{ + local TgPlayerController localPC; + local TgPawn LocalPawn; + + localPC = TgPlayerController(GetALocalPlayerController()); + // End:0xB8 + if(localPC != none) + { + LocalPawn = TgPawn(localPC.Pawn); + // End:0xB8 + if(LocalPawn != none) + { + // End:0xB8 + if(LocalPawn != self) + { + LocalPawn.m_fLastNonLocalEmoteTime = WorldInfo.TimeSeconds; + } + } + } + //return; +} + +simulated event float GetLastEmoteTime(TgPawn.EEmote Emote) +{ + local TgPawn.EEmoteCategory EmoteCat; + + EmoteCat = GetEmoteCategory(Emote); + // End:0x3F + if(m_fLastEmoteCatTimes.Length < int(11)) + { + m_fLastEmoteCatTimes.Length = int(11); + } + switch(EmoteCat) + { + // End:0x74 + case 1: + m_fLastPlayerVGSEmoteTimes.Length = 3; + return m_fLastPlayerVGSEmoteTimes[2]; + // End:0x77 + break; + // End:0xFFFF + default: + break; + } + return m_fLastEmoteCatTimes[int(EmoteCat)]; + //return ReturnValue; +} + +simulated event bool IsEmoteOnInternalCooldown(TgPawn.EEmote Emote) +{ + local float fLastEmoteTime, fInternalCooldownTime; + + fLastEmoteTime = GetLastEmoteTime(Emote); + fInternalCooldownTime = GetEmoteInternalCooldown(Emote); + return (fLastEmoteTime + fInternalCooldownTime) >= WorldInfo.TimeSeconds; + //return ReturnValue; +} + +simulated event bool AreEmotesOnGlobalCooldown() +{ + local bool bGlobalCooldown; + + bGlobalCooldown = (m_fLastEmoteTime + m_fEmoteGlobalCooldown) >= WorldInfo.TimeSeconds; + return bGlobalCooldown; + //return ReturnValue; +} + +simulated event bool IsEmoteOnNonLocalCooldown(TgPawn.EEmote Emote) +{ + local TgPlayerController localPC; + local TgPawn LocalPawn; + + localPC = TgPlayerController(GetALocalPlayerController()); + // End:0xC5 + if(localPC != none) + { + LocalPawn = TgPawn(localPC.Pawn); + // End:0xC5 + if(LocalPawn != none) + { + // End:0xC5 + if(LocalPawn != self) + { + return (LocalPawn.m_fLastNonLocalEmoteTime + m_fEmoteNonLocalCooldown) >= WorldInfo.TimeSeconds; + } + } + } + return false; + //return ReturnValue; +} + +simulated event bool EmoteShouldKillAllOtherVox(TgPawn.EEmote Emote) +{ + local TgDevice dev_ult; + local TgPawn.EEmoteCategory EmoteCat; + + EmoteCat = GetEmoteCategory(Emote); + switch(EmoteCat) + { + // End:0xE7 + case 9: + switch(GetBotId()) + { + // End:0x51 + case 2094: + // End:0x59 + case 2056: + // End:0x61 + case 2057: + // End:0xDF + case 2267: + dev_ult = GetDeviceByEqPoint(2); + // End:0xDC + if((dev_ult != none) && (dev_ult.r_Deployable != none) || dev_ult.r_nProjectiles > 0) + { + return false; + } + // End:0xE2 + break; + // End:0xFFFF + default: + break; + } + return true; + // End:0xEA + break; + // End:0xFFFF + default: + break; + } + return false; + //return ReturnValue; +} + +function bool EmoteShouldForce3P(TgPawn.EEmote Emote) +{ + switch(Emote) + { + // End:0x18 + case 1: + // End:0x1D + case 2: + // End:0x22 + case 3: + // End:0x27 + case 39: + // End:0x2C + case 40: + // End:0x31 + case 41: + // End:0x36 + case 42: + // End:0x40 + case 43: + return true; + // End:0x43 + break; + // End:0xFFFF + default: + break; + } + return false; + //return ReturnValue; +} + +event SetEmote3PCamera(bool bOn) +{ + local TgPlayerController PC; + + PC = TgPlayerController(Controller); + // End:0x53 + if((PC == none) || !PC.IsLocalPlayerController()) + { + return; + } + // End:0x74 + if((c_nEmoteCameraStackId != -1) == bOn) + { + return; + } + // End:0xAF + if(bOn) + { + c_nEmoteCameraStackId = PC.PushCameraPosture(1); + } + else + { + // End:0xE9 + if(PC.PopCameraPosture(c_nEmoteCameraStackId)) + { + c_nEmoteCameraStackId = -1; + } + } + //return; +} + +simulated event bool AnimNotifySound(SoundCue Cue) +{ + return false; + //return ReturnValue; +} + +simulated event PreDemoRewind() +{ + // End:0x2E + if(r_EffectManager != none) + { + r_EffectManager.ClearAllClientEffectForms(); + } + //return; +} + +simulated event PostDemoRewind() +{ + local editinline SkeletalMeshComponent SkelComp; + local int I; + + // End:0x4D + if(r_EffectManager != none) + { + r_EffectManager.UpdateEffectForms(); + r_EffectManager.UpdateEffectFormVisibility(); + } + // End:0x114 + if(Mesh != none) + { + // End:0x114 + if((GetHealth()) > 0.0000000) + { + Mesh.bNoSkeletonUpdate = false; + Mesh.bPauseAnims = false; + // End:0x114 + if((m_FullBodyAnimNode != none) && m_FullBodyAnimNode.GetPlayedAnimation() == 'Death') + { + m_FullBodyAnimNode.StopCustomAnim(0.0000000); + } + } + } + // End:0x147 + foreach ComponentList(Class'Engine.SkeletalMeshComponent', SkelComp) + { + ResetSkelControls(SkelComp); + } + I = 1; + J0x153: + + // End:0x3BA [Loop If] + if(I < 33) + { + // End:0x3AC + if((c_EquipForm[I] != none) && c_EquipForm[I].FormState != c_EquipFormState[I]) + { + switch(c_EquipFormState[I]) + { + // End:0x1E7 + case 'None': + // End:0x2B8 + case 'Active': + // End:0x256 + if(c_EquipForm[I].FormState == 'DeviceFiring') + { + c_EquipForm[I].StopFire(0); + } + else + { + // End:0x2B5 + if(c_EquipForm[I].FormState != 'Active') + { + c_EquipForm[I].BeginActive(); + } + } + // End:0x3AC + break; + // End:0x2F0 + case 'DeviceOutOfHand': + c_EquipForm[I].EndDevicePuttingDown(); + // End:0x3AC + break; + // End:0x334 + case 'DeviceBuildup': + c_EquipForm[I].BuildUp(0, I, 0); + // End:0x3AC + break; + // End:0x370 + case 'DeviceFiring': + c_EquipForm[I].StartFire(0); + // End:0x3AC + break; + // End:0x3A9 + case 'DeviceCoolDown': + c_EquipForm[I].Cooldown(0); + // End:0x3AC + break; + // End:0xFFFF + default: + break; + } + } + else + { + I++; + // [Loop Continue] + goto J0x153; + }/* !MISMATCHING REMOVE, tried Loop got Type:Else Position:0x3AC! */ + ReinitializeOverlays(); + //return; + }/* !MISMATCHING REMOVE, tried Else got Type:Loop Position:0x153! */ +} + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + // End:0x77 + if((Other != none) && Other.IsA('TgPlayerBlockingVolume')) + { + ForceAllGrabTargetsDetach(); + TeleportNotify(); + } + //return; +} + +function AdjustDevicesForNewDilation(float fPrevDilation, float fNewDilation) +{ + local int I; + local TgDevice Dev; + + I = 1; + J0x0B: + + // End:0x86 [Loop If] + if(I < 33) + { + Dev = m_EquippedDevices[I]; + // End:0x78 + if(Dev != none) + { + Dev.AdjustForNewDilation(fPrevDilation, fNewDilation); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated event bool CanFlyWithoutHover() +{ + return false; + //return ReturnValue; +} + +function bool CheckPhysicsStateForJumping() +{ + return (((int(Physics) == int(1)) || int(Physics) == int(9)) || int(Physics) == int(8)) || (int(Physics) == int(16)) && m_bCanJumpWhileCharging; + //return ReturnValue; +} + +function bool IsFiringAny() +{ + local int I; + local TgDevice Dev; + + I = 1; + J0x0B: + + // End:0x7B [Loop If] + if(I < 33) + { + Dev = m_EquippedDevices[I]; + // End:0x6D + if((Dev != none) && Dev.IsFiring()) + { + return true; + } + ++I; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +function bool CannotJumpNow() +{ + local TgDevice Dev; + local int I; + + // End:0x0F + if(IsJumpDisabled()) + { + return true; + } + I = 1; + J0x1A: + + // End:0xB0 [Loop If] + if(I < 33) + { + Dev = m_EquippedDevices[I]; + // End:0xA2 + if(((Dev != none) && Dev.IsFiring()) && !Dev.CanJumpWhileFiring()) + { + return true; + } + I++; + // [Loop Continue] + goto J0x1A; + } + // End:0xCE + if(r_bIsLifted && m_bIgnorePhysCheckForJump) + { + return false; + } + // End:0xFA + if((int(r_eCurrentStunType) != int(0)) && int(r_eCurrentStunType) != int(5)) + { + return true; + } + // End:0x10D + if(GroundSpeed == float(0)) + { + return true; + } + // End:0x12F + if(!m_bIgnorePhysCheckForJump && !CheckPhysicsStateForJumping()) + { + return true; + } + // End:0x15F + if(((GetPropCurrentValue(32)) > 0.0000000) || (GetPropCurrentValue(33)) > 0.0000000) + { + return true; + } + // End:0x16E + if(r_bIsRooted) + { + return true; + } + // End:0x17D + if(m_bIsLeaping) + { + return true; + } + return super(Pawn).CannotJumpNow(); + //return ReturnValue; +} + +simulated event bool IsInJumpLanding() +{ + // End:0x66 + if((Controller != none) && !Controller.IsLocalPlayerController()) + { + return WorldInfo.TimeSeconds < (m_fJumpLandingTime + 0.1500000); + } + return WorldInfo.TimeSeconds < (m_fJumpLandingTime + 0.3000000); + //return ReturnValue; +} + +function InterruptInhand() +{ + local TgDevice inhand; + + inhand = GetDeviceByEqPoint(1); + // End:0xA1 + if((((int(Role) == int(ROLE_Authority)) && inhand != none) && inhand.IsFiring()) && inhand.CanBeInterrupted()) + { + inhand.InterruptFiring(); + } + //return; +} + +function TgObject.TG_EQUIP_POINT OverrideOffhandSlot(TgObject.TG_EQUIP_POINT eqp) +{ + return eqp; + //return ReturnValue; +} + +simulated function SetMeshDepthPriority(Scene.ESceneDepthPriorityGroup NewDepth) +{ + Mesh.SetDepthPriorityGroup(NewDepth); + //return; +} + +event bool CanPlayHitReaction() +{ + return m_bAcceptsHitReactions && !IsImmuneToDamage(); + //return ReturnValue; +} + +function KillCloneTimer() +{ + // End:0x1A + if(Health > 0) + { + KilledBy(self); + } + //return; +} + +simulated event OnCameraCutAnimNotify(TgAnimNotify_CameraCut CameraCutNotify) +{ + //return; +} + +simulated function bool IsInputLocked() +{ + return r_bIsInStasis; + //return ReturnValue; +} + +simulated function bool InputLockedDueToFiring() +{ + local TgPlayerController PC; + local TgAIController_Behavior AI; + + PC = TgPlayerController(Controller); + // End:0x4B + if(PC != none) + { + return PC.IsDeviceLockingInput(); + } + AI = TgAIController_Behavior(Controller); + // End:0x96 + if(AI != none) + { + return AI.bIsRotationLocked; + } + return false; + //return ReturnValue; +} + +simulated function bool IsRotationLocked() +{ + local TgPlayerController PC; + + PC = TgPlayerController(Controller); + // End:0x4B + if(PC != none) + { + return PC.IsDeviceLockingRotation(); + } + return false; + //return ReturnValue; +} + +simulated function bool IsCameraLocked() +{ + return false; + //return ReturnValue; +} + +event bool CanApplyShield() +{ + return true; + //return ReturnValue; +} + +function bool OnMountCancelOffhandSlotPressed(TgDevice newDev) +{ + local TgDevice Mount; + + // End:0x10E + if((newDev == none) || newDev.ShouldInterruptMount()) + { + Mount = GetDeviceByEqPoint(23); + // End:0x10E + if((Mount != none) && Mount.CanBeCanceled()) + { + Mount.InterruptFiring(); + Mount.ClientInterrupt(); + Mount.OnCanceled(); + // End:0x10C + if((newDev != none) && newDev.LogDebugInfo()) + { + } + return true; + } + } + return false; + //return ReturnValue; +} + +simulated function PlayMountingEffects(bool bPlayMountAnim, bool bPostureChange) +{ + local TgAnimNodeSlot MountFullBodyAnimNode; + local int MeshId1P, MeshId3P; + local float SummonAnimTime; + local TgDeviceForm_Mount MountDeviceForm; + local TgPlayerController localPC; + local name stealthGroup; + + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0x4F + if(m_MountMesh != none) + { + StopMountingEffects(false, r_bUseMountPosture); + } + Class'TgGame.TgWeaponMeshActor'.static.GetMeshAsmIds(r_EquipDeviceInfo[23].nDeviceId, MeshId1P, MeshId3P); + // End:0x32E + if(MeshId3P > 0) + { + m_MountMesh = TgSkeletalMeshComponent(CreateMeshComponent(MeshId3P)); + UpdateMountScale(true); + AttachComponent(m_MountMesh); + m_MountMesh.SetLightEnvironment(LightEnvironment); + m_MountMesh.SetShadowParent(Mesh); + m_MountMesh.SetTranslation(Mesh.Translation); + InitializeSilhouetteComponent(m_MountMesh); + // End:0x203 + if(!TgRepInfo_Game(WorldInfo.GRI).AllowPlayerMounting()) + { + m_MountMesh.FxActivateGroup('Mount', 0); + } + // End:0x32E + if(bPlayMountAnim) + { + MountFullBodyAnimNode = TgAnimNodeSlot(m_MountMesh.Animations.FindAnimNode('FullBody')); + // End:0x32E + if(MountFullBodyAnimNode != none) + { + SummonAnimTime = MountFullBodyAnimNode.PlayCustomAnim('Summon', 1.0000000 / (GetPropCurrentValue(13)), 0.0000000, 0.2000000, false, true); + MountDeviceForm = TgDeviceForm_Mount(c_EquipForm[23]); + // End:0x32E + if((SummonAnimTime > 0.0000000) && MountDeviceForm != none) + { + MountDeviceForm.PlaySummonEffects(SummonAnimTime, false); + } + } + } + } + // End:0x395 + if((m_FullBodyAnimNode != none) && bPlayMountAnim) + { + m_FullBodyAnimNode.PlayCustomAnim('MountSummon', 1.0000000 / (GetPropCurrentValue(13)), 0.0000000, 0.2000000, false, true); + } + // End:0x3B8 + if(bPostureChange) + { + m_nMountPostureId = PushPosture(12); + } + FxActivateGroupSelf('Mount', 1); + // End:0x4D6 + if((m_MountMesh != none) && int(r_eIsStealthed) != int(0)) + { + localPC = TgPlayerController(GetALocalPlayerController()); + // End:0x45D + if((localPC != none) && localPC.Pawn == self) + { + stealthGroup = 'StealthLocal'; + } + else + { + // End:0x496 + if(localPC.IsEnemy(self)) + { + stealthGroup = 'StealthEnemy'; + } + else + { + stealthGroup = 'Stealth'; + } + } + m_MountMesh.FxActivateGroup(stealthGroup, 0); + } + //return; +} + +simulated function StopMountingEffects(bool bPlayDismount, bool bPostureChange) +{ + local TgAnimNodeSlot MountFullBodyAnimNode; + local float MountDismountTime; + local TgDeviceForm_Mount MountDeviceForm; + local bool bPlayedDismount; + local Vector MeshTranslation; + + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + UpdateMountScale(false); + ClearTimer('DetachMountMesh'); + // End:0x2E8 + if(!r_bIsMounted && r_bMorphMounted) + { + // End:0x270 + if(m_MountMesh != none) + { + // End:0x270 + if(bPlayDismount) + { + MountFullBodyAnimNode = TgAnimNodeSlot(m_MountMesh.Animations.FindAnimNode('FullBody')); + // End:0x270 + if(MountFullBodyAnimNode != none) + { + MountDismountTime = MountFullBodyAnimNode.PlayCustomAnim('Dismount', 1.0000000 / (GetPropCurrentValue(13)), 0.1000000, 0.0000000, false, true); + // End:0x270 + if(MountDismountTime > 0.0000000) + { + bPlayedDismount = true; + SetTimer(MountDismountTime, false, 'DetachMountMesh'); + m_MountMesh.SetAbsolute(true, true); + MeshTranslation = Location; + MeshTranslation.Z -= (GetCollisionHeight()); + m_MountMesh.SetTranslation(MeshTranslation); + m_MountMesh.SetRotation(Rotation); + MountDeviceForm = TgDeviceForm_Mount(c_EquipForm[23]); + // End:0x270 + if(MountDeviceForm != none) + { + MountDeviceForm.PlaySummonEffects(MountDismountTime, true); + } + } + } + } + } + // End:0x2E8 + if((bPlayDismount && m_FullBodyAnimNode != none) && !IsDying()) + { + m_FullBodyAnimNode.PlayCustomAnim('MountDismount', 1.0000000 / (GetPropCurrentValue(13)), 0.0000000, 0.2000000, false, true); + } + } + // End:0x301 + if(!bPlayedDismount) + { + DetachMountMesh(); + } + // End:0x321 + if(bPostureChange) + { + PopPosture(m_nMountPostureId); + } + //return; +} + +simulated function DetachMountMesh() +{ + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0x6B + if(m_MountMesh != none) + { + RemoveSilhouetteInfo(m_MountMesh); + DetachComponent(m_MountMesh); + m_MountMesh = none; + } + // End:0xA5 + if(Mesh != none) + { + Mesh.FxDeactivateGroup('Mount', 0); + } + //return; +} + +simulated function OnMountBegin(bool bForceFireDueToRespawn, bool bPostureChange) +{ + local TgAIController TgAIC; + local TgPlayerController TgPC; + + PlayMountingEffects(!bForceFireDueToRespawn, bPostureChange); + m_bIsEnteringMount = true; + TgAIC = TgAIController(Controller); + // End:0x63 + if(TgAIC != none) + { + r_bIsMounted = true; + } + TgPC = TgPlayerController(Controller); + // End:0x10E + if(TgPC != none) + { + TgPC.bRun = 1; + // End:0x10E + if(TgPC.IsLocalPlayerController() && c_CurrentTargetingDevice != none) + { + // End:0x10E + if(c_CurrentTargetingDevice.m_bRemoveTargetingOnMount) + { + SwitchBackToInhandInstantly(); + } + } + } + //return; +} + +simulated function SwitchBackToInhandInstantly() +{ + local TgDevice inhand; + local WeaponMeshSwapStrategy SwapStrategy; + + inhand = GetDeviceByEqPoint(1); + // End:0x48 + if(inhand != c_CurrentTargetingDevice) + { + SetTargetingDevice(inhand, SwapStrategy); + } + //return; +} + +simulated event bool IsFirstPerson() +{ + local TgPlayerController TgPC; + local TgSpectatorController SpecPC; + + TgPC = TgPlayerController(Controller); + // End:0x50 + if(TgPC != none) + { + return !TgPC.m_bBehindView; + } + else + { + SpecPC = TgSpectatorController(GetALocalPlayerController()); + // End:0xF0 + if(SpecPC != none) + { + return (SpecPC.GetViewTarget() == self) && (int(SpecPC.m_CameraMode) == int(3)) || !SpecPC.m_bBehindView; + } + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x165 + if(TgPC != none) + { + return (TgPC.GetViewTarget() == self) && !TgPC.m_bBehindView; + } + } + return false; + //return ReturnValue; +} + +function RemoveStealthEffects() +{ + local TgDevice_Stealth Dev; + local int I; + + I = 0; + J0x0B: + + // End:0x7D [Loop If] + if(I < 33) + { + Dev = TgDevice_Stealth(GetDeviceByEqPoint(I)); + // End:0x6F + if(Dev != none) + { + Dev.InterruptFiring(); + } + I++; + // [Loop Continue] + goto J0x0B; + } + // End:0xAB + if(r_EffectManager != none) + { + r_EffectManager.RemoveAllStealthEffects(); + } + //return; +} + +simulated event PlayBleedEffects(bool bEnabled) +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + // End:0x29 + if(int(Role) == int(ROLE_Authority)) + { + r_bIsBleeding = bEnabled; + } + // End:0x111 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0xA6 + if((TgPC == none) || TgPC.GetViewTarget() != self) + { + return; + } + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xE8 + if(TgCamera == none) + { + return; + } + TgCamera.PlayBleed(r_bIsBleeding); + } + //return; +} + +simulated event PlayDazeEffects(bool bEnabled) +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + // End:0x29 + if(int(Role) == int(ROLE_Authority)) + { + r_bIsDazed = bEnabled; + } + // End:0x111 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0xA6 + if((TgPC == none) || TgPC.GetViewTarget() != self) + { + return; + } + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xE8 + if(TgCamera == none) + { + return; + } + TgCamera.PlayDaze(r_bIsDazed); + } + //return; +} + +simulated event PlayCCImmuneEffects(bool bEnabled) +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + // End:0x29 + if(int(Role) == int(ROLE_Authority)) + { + r_bIsCCImmune = bEnabled; + } + // End:0x111 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0xA6 + if((TgPC == none) || TgPC.GetViewTarget() != self) + { + return; + } + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xE8 + if(TgCamera == none) + { + return; + } + TgCamera.PlayCCImmuneEffects(r_bIsCCImmune); + } + //return; +} + +simulated event PlayOnFireEffects(bool bEnabled) +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + // End:0x29 + if(int(Role) == int(ROLE_Authority)) + { + r_bIsOnFire = bEnabled; + } + // End:0x111 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0xA6 + if((TgPC == none) || TgPC.GetViewTarget() != self) + { + return; + } + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xE8 + if(TgCamera == none) + { + return; + } + TgCamera.PlayOnFire(r_bIsOnFire); + } + //return; +} + +simulated event PlayFreezeEffects(bool bEnabled) +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + // End:0x29 + if(int(Role) == int(ROLE_Authority)) + { + r_bIsFrozen = bEnabled; + } + // End:0x111 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0xA6 + if((TgPC == none) || TgPC.GetViewTarget() != self) + { + return; + } + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xE8 + if(TgCamera == none) + { + return; + } + TgCamera.PlayFreeze(r_bIsFrozen); + } + //return; +} + +simulated event PlayKnockbackEffects(bool bEnabled) +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + // End:0xE8 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0x7D + if((TgPC == none) || TgPC.GetViewTarget() != self) + { + return; + } + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xBF + if(TgCamera == none) + { + return; + } + TgCamera.PlayKnockback(r_bIsKnockedBack); + } + //return; +} + +simulated event PlayMarkEffects(bool bEnabled) +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + // End:0x29 + if(int(Role) == int(ROLE_Authority)) + { + r_bIsMarked = bEnabled; + } + // End:0x111 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0xA6 + if((TgPC == none) || TgPC.GetViewTarget() != self) + { + return; + } + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xE8 + if(TgCamera == none) + { + return; + } + TgCamera.PlayMark(r_bIsMarked); + } + //return; +} + +function ClientPlayGrassEffects(bool bEnabled, optional ParticleSystem Template) +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + // End:0xF2 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0x7E + if((TgPC == none) || TgPC.GetViewTarget() != self) + { + return; + } + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xC0 + if(TgCamera == none) + { + return; + } + TgCamera.PlayGrass(bEnabled, Template); + } + //return; +} + +function ClientPlayHiddenEffects(bool bEnabled, optional ParticleSystem Template) +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + // End:0xF2 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0x7E + if((TgPC == none) || TgPC.GetViewTarget() != self) + { + return; + } + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xC0 + if(TgCamera == none) + { + return; + } + TgCamera.PlayHidden(bEnabled, Template); + } + //return; +} + +simulated event PlayRootEffects(bool bEnabled) +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + // End:0x29 + if(int(Role) == int(ROLE_Authority)) + { + r_bIsRooted = bEnabled; + } + // End:0x111 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0xA6 + if((TgPC == none) || TgPC.GetViewTarget() != self) + { + return; + } + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xE8 + if(TgCamera == none) + { + return; + } + TgCamera.PlayRoot(r_bIsRooted); + } + //return; +} + +simulated event PlayPoisonedEffects(bool bEnabled) +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + // End:0x29 + if(int(Role) == int(ROLE_Authority)) + { + r_bIsPoisoned = bEnabled; + } + // End:0x111 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0xA6 + if((TgPC == none) || TgPC.GetViewTarget() != self) + { + return; + } + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xE8 + if(TgCamera == none) + { + return; + } + TgCamera.PlayPoisoned(r_bIsPoisoned); + } + //return; +} + +simulated event PlayCrippledEffects(bool bEnabled) +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + // End:0xE8 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0x7D + if((TgPC == none) || TgPC.GetViewTarget() != self) + { + return; + } + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xBF + if(TgCamera == none) + { + return; + } + TgCamera.PlayCrippled(bEnabled); + } + //return; +} + +simulated event PlayFlashBangEffects(bool bEnabled) +{ + local TgPlayerController TgPC; + local LocalPlayer LP; + local TgScreenCapturePostEffect TgScreenCapturePostEffect; + local MaterialInstanceTimeVarying NewMaterial; + local PostProcessEffect CurrentEffect; + local bool bFoundPostProcess; + + // End:0x48E + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0x7D + if((TgPC == none) || TgPC.GetViewTarget() != self) + { + return; + } + LP = LocalPlayer(TgPC.Player); + // End:0x48E + if((LP != none) && LP.PlayerPostProcess != none) + { + // End:0x2E7 + foreach LP.PlayerPostProcess.Effects(CurrentEffect) + { + TgScreenCapturePostEffect = TgScreenCapturePostEffect(CurrentEffect); + // End:0x2E6 + if(TgScreenCapturePostEffect != none) + { + NewMaterial = MaterialInstanceTimeVarying(TgScreenCapturePostEffect.Material); + // End:0x2E6 + if(NewMaterial != none) + { + bFoundPostProcess = true; + // End:0x25F + if(bEnabled) + { + NewMaterial.SetTextureParameterValue('OldFrame', TgScreenCapturePostEffect.ScreenCapture); + NewMaterial.SetScalarStartTime('FadeAmount', 100.0000000); + NewMaterial.SetScalarStartTime('WhiteFade', 100.0000000); + ClearTimer('CleanUpScreenCapturePostProcess'); + } + else + { + NewMaterial.SetScalarStartTime('WhiteFade', 0.0000000); + NewMaterial.SetScalarStartTime('FadeAmount', 0.0000000); + SetTimer(NewMaterial.GetMaxDurationFromAllParameters(), false, 'CleanUpScreenCapturePostProcess'); + } + } + } + } + // End:0x48E + if(!bFoundPostProcess && bEnabled) + { + TgScreenCapturePostEffect = new Class'TgGame.TgScreenCapturePostEffect'; + TgScreenCapturePostEffect.InitializeRenderTarget(TgPC); + NewMaterial = new Class'Engine.MaterialInstanceTimeVarying'; + NewMaterial.SetParent(MaterialInstanceTimeVarying'TgPostProcess.MIC_FadeOldFrame'); + NewMaterial.SetTextureParameterValue('OldFrame', TgScreenCapturePostEffect.ScreenCapture); + NewMaterial.SetScalarStartTime('FadeAmount', 100.0000000); + NewMaterial.SetScalarStartTime('WhiteFade', 100.0000000); + TgScreenCapturePostEffect.Material = NewMaterial; + LP.PlayerPostProcess.Effects.AddItem(TgScreenCapturePostEffect); + } + } + } + //return; +} + +simulated function CleanUpScreenCapturePostProcess() +{ + local PlayerController PC; + local LocalPlayer LP; + local TgScreenCapturePostEffect TgScreenCapturePostEffect; + local PostProcessEffect CurrentEffect; + + PC = GetALocalPlayerController(); + // End:0x25 + if(PC == none) + { + return; + } + LP = LocalPlayer(PC.Player); + // End:0x139 + if((LP != none) && LP.PlayerPostProcess != none) + { + // End:0x138 + foreach LP.PlayerPostProcess.Effects(CurrentEffect) + { + TgScreenCapturePostEffect = TgScreenCapturePostEffect(CurrentEffect); + // End:0x137 + if(TgScreenCapturePostEffect != none) + { + TgScreenCapturePostEffect.Cleanup(LP.PlayerPostProcess); + } + else + { + } + } + } + //return; +} + +simulated event PlaySlowEffects(bool bEnabled) +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + // End:0x29 + if(int(Role) == int(ROLE_Authority)) + { + r_bIsSlowed = bEnabled; + } + // End:0x111 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0xA6 + if((TgPC == none) || TgPC.GetViewTarget() != self) + { + return; + } + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xE8 + if(TgCamera == none) + { + return; + } + TgCamera.PlaySlow(r_bIsSlowed); + } + //return; +} + +simulated event PlayRevealedEffects(bool bEnabled) +{ + local TgPlayerController TgPC; + local TgPlayerCamera TgCamera; + + // End:0x29 + if(int(Role) == int(ROLE_Authority)) + { + r_bIsRevealed = bEnabled; + } + // End:0x111 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgPC = TgPlayerController(Controller); + // End:0xA6 + if((TgPC == none) || TgPC.GetViewTarget() != self) + { + return; + } + TgCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xE8 + if(TgCamera == none) + { + return; + } + TgCamera.PlayRevealed(r_bIsRevealed); + } + //return; +} + +simulated function InterruptAllReloads() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x6B [Loop If] + if(I < 33) + { + // End:0x5D + if(m_EquippedDevices[I] != none) + { + m_EquippedDevices[I].InterruptReload(); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated event InterruptInhandReload() +{ + // End:0x58 + if((m_EquippedDevices[1] != none) && m_EquippedDevices[1].m_bCanReloadEarly) + { + m_EquippedDevices[1].InterruptReload(); + } + //return; +} + +event bool HasDeviceByID(int DeviceID) +{ + local TgDevice Dev; + local int I; + + I = 1; + J0x0B: + + // End:0x83 [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0x75 + if(Dev != none) + { + // End:0x75 + if(Dev.r_nDeviceId == DeviceID) + { + return true; + } + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +event bool HasActiveDeviceByID(int DeviceID) +{ + local TgDevice Dev; + local int I; + + I = 1; + J0x0B: + + // End:0xAB [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0x9D + if(((Dev != none) && Dev.r_nDeviceId == DeviceID) && Dev.IsActive()) + { + return true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +event bool HasDeviceByClass(Class DeviceClass) +{ + return GetDeviceByClass(DeviceClass) != none; + //return ReturnValue; +} + +event bool HasActiveDeviceByClass(name DeviceClassName) +{ + return (GetActiveDeviceByClass(DeviceClassName)) != none; + //return ReturnValue; +} + +// Export UTgPawn::execGetDeviceByClass(FFrame&, void* const) +native final event TgDevice GetDeviceByClass(Class DeviceClass); + +event TgDevice GetActiveDeviceByClass(name DeviceClassName) +{ + local TgDevice Dev; + local int I; + + I = 1; + J0x0B: + + // End:0xAA [Loop If] + if(I < 33) + { + Dev = GetDeviceByEqPoint(I); + // End:0x9C + if(((Dev != none) && Dev.IsA(DeviceClassName)) && Dev.IsActive()) + { + return Dev; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return none; + //return ReturnValue; +} + +event InterruptDeviceFiringByClass(Class DeviceClass, optional bool bForce) +{ + local TgDevice Dev; + + Dev = GetDeviceByClass(DeviceClass); + // End:0x7F + if((Dev != none) && bForce || Dev.CanBeInterrupted()) + { + Dev.InterruptFiring(); + } + //return; +} + +event InterruptAllMovementDevices() +{ + local TgDevice Device; + + Device = GetDeviceByEqPoint(16); + // End:0x8C + if(((Device != none) && Device.IsMovementAbility()) && Device.CanBeInterrupted()) + { + Device.InterruptFiring(); + } + Device = GetDeviceByEqPoint(3); + // End:0x118 + if(((Device != none) && Device.IsMovementAbility()) && Device.CanBeInterrupted()) + { + Device.InterruptFiring(); + } + Device = GetDeviceByEqPoint(4); + // End:0x1A4 + if(((Device != none) && Device.IsMovementAbility()) && Device.CanBeInterrupted()) + { + Device.InterruptFiring(); + } + //return; +} + +event float GetDistanceToNearestCapturePoint() +{ + local float shortestDistance, Distance; + local TgChaosCapturePoint capturePoint; + + shortestDistance = -1.0000000; + // End:0xB2 + foreach WorldInfo.DynamicActors(Class'TgGame.TgChaosCapturePoint', capturePoint) + { + Distance = VSize(capturePoint.Location - Location); + // End:0xB1 + if((shortestDistance < 0.0000000) || Distance < shortestDistance) + { + shortestDistance = Distance; + } + } + return shortestDistance; + //return ReturnValue; +} + +simulated event SetUITargetingType(TgObject.EUITargetingType NewTargetingType, optional bool bForceRequiredToSet, optional TgObject.EUITargetingType RequiredToSet) +{ + // End:0x41 + if(!bForceRequiredToSet || int(RequiredToSet) == int(c_UITargetingType)) + { + c_UITargetingType = NewTargetingType; + } + //return; +} + +simulated function AddIncomingImpact(int bNumToAdd) +{ + r_nIncomingImpactCount += bNumToAdd; + //return; +} + +reliable client simulated function ClientSetActiveWeapon(Weapon NewWeapon) +{ + local WeaponMeshSwapStrategy SwapStrategy; + + SetActiveWeapon(NewWeapon); + SetTargetingDevice(TgDevice(NewWeapon), SwapStrategy); + //return; +} + +function UpdateMetaGameState(TgPawn.EMetaGameState NewState) +{ + m_eMetaGameState = NewState; + //return; +} + +function TgPawn.EMetaGameState GetMetaGameState() +{ + return m_eMetaGameState; + //return ReturnValue; +} + +function UpdateBotBehaviorState(TgPawn.EBotBehaviorState NewState) +{ + m_eBotBehaviorState = NewState; + //return; +} + +function TgPawn.EBotBehaviorState GetBotBehaviorState() +{ + return m_eBotBehaviorState; + //return ReturnValue; +} + +// Export UTgPawn::execTestFx(FFrame&, void* const) +native exec function TestFx(float Pct); + +exec function TgSpecialFx TestFx2(int Id) +{ + local TgSpecialFx Fx; + local int I; + + Fx = Class'TgGame.TgPawn'.static.GetSpecialFx(Id); + // End:0x15A + if(Fx != none) + { + I = 0; + J0x4C: + + // End:0x123 [Loop If] + if(I < Fx.c_PSCList.Length) + { + Fx.c_ParticleChannelOverride.bInitialized = true; + Fx.c_ParticleChannelOverride.Friendly = true; + Fx.c_ParticleChannelOverride.Enemy = false; + I++; + // [Loop Continue] + goto J0x4C; + } + Fx.SpawnEmitter(Location, vect(1.0000000, 0.0000000, 0.0000000)); + } + return Fx; + //return ReturnValue; +} + +function UpdateLastPlayerStart(PlayerStart NewLastPlayerStart) +{ + m_LastPlayerStart = NewLastPlayerStart; + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + return ""; + //return ReturnValue; +} + +event AddInstigatorWallReveal(Actor Viewer) +{ + local int I; + + // End:0x96 + if(Viewer != none) + { + I = 0; + J0x1A: + + // End:0x96 [Loop If] + if(I < 12) + { + // End:0x50 + if(r_VisibleThroughWallsInstigators[I] == Viewer) + { + return; + } + else + { + // End:0x88 + if(r_VisibleThroughWallsInstigators[I] == none) + { + r_VisibleThroughWallsInstigators[I] = Viewer; + return; + } + } + I++; + // [Loop Continue] + goto J0x1A; + } + } + //return; +} + +event RemoveInstigatorWallReveal(Actor Viewer) +{ + local int I, J; + + // End:0xCC + if(Viewer != none) + { + I = 0; + J0x1A: + + // End:0xCC [Loop If] + if(I < 12) + { + // End:0xBE + if(r_VisibleThroughWallsInstigators[I] == Viewer) + { + r_VisibleThroughWallsInstigators[I] = none; + J = I + 1; + J0x76: + + // End:0xBE [Loop If] + if(J < 12) + { + r_VisibleThroughWallsInstigators[J - 1] = r_VisibleThroughWallsInstigators[J]; + J++; + // [Loop Continue] + goto J0x76; + } + } + I++; + // [Loop Continue] + goto J0x1A; + } + } + //return; +} + +simulated event bool IsInstigatorWallRevealed(Actor Viewer) +{ + local int I; + + // End:0x5B + if(Viewer != none) + { + I = 0; + J0x1A: + + // End:0x5B [Loop If] + if(I < 12) + { + // End:0x4D + if(r_VisibleThroughWallsInstigators[I] == Viewer) + { + return true; + } + I++; + // [Loop Continue] + goto J0x1A; + } + } + return false; + //return ReturnValue; +} + +event AddInstigatorStealthReveal(Actor Viewer) +{ + local int I; + + // End:0x96 + if(Viewer != none) + { + I = 0; + J0x1A: + + // End:0x96 [Loop If] + if(I < 12) + { + // End:0x50 + if(r_VisibleThroughStealthInstigators[I] == Viewer) + { + return; + } + else + { + // End:0x88 + if(r_VisibleThroughStealthInstigators[I] == none) + { + r_VisibleThroughStealthInstigators[I] = Viewer; + return; + } + } + I++; + // [Loop Continue] + goto J0x1A; + } + } + //return; +} + +event RemoveInstigatorStealthReveal(Actor Viewer) +{ + local int I, J; + + // End:0xCC + if(Viewer != none) + { + I = 0; + J0x1A: + + // End:0xCC [Loop If] + if(I < 12) + { + // End:0xBE + if(r_VisibleThroughStealthInstigators[I] == Viewer) + { + r_VisibleThroughStealthInstigators[I] = none; + J = I + 1; + J0x76: + + // End:0xBE [Loop If] + if(J < 12) + { + r_VisibleThroughStealthInstigators[J - 1] = r_VisibleThroughStealthInstigators[J]; + J++; + // [Loop Continue] + goto J0x76; + } + } + I++; + // [Loop Continue] + goto J0x1A; + } + } + //return; +} + +// Export UTgPawn::execIsInstigatorStealthRevealed(FFrame&, void* const) +native final simulated function bool IsInstigatorStealthRevealed(Actor Viewer); + +event AddObscuringDeployable(TgDeployable deployable) +{ + local int I; + + // End:0x0F + if(m_bCannotBeVolumeStealthed) + { + return; + } + // End:0x89 + if(deployable != none) + { + I = 0; + J0x29: + + // End:0x89 [Loop If] + if(I < 10) + { + // End:0x7B + if(r_ObscuringDeployables[I] == none) + { + r_ObscuringDeployables[I] = deployable; + UpdateObscuringDeployableState(); + return; + } + I++; + // [Loop Continue] + goto J0x29; + } + } + //return; +} + +event RemoveObscuringDeployable(TgDeployable deployable) +{ + local int I; + + // End:0x0F + if(m_bCannotBeVolumeStealthed) + { + return; + } + // End:0x87 + if(deployable != none) + { + I = 0; + J0x29: + + // End:0x7D [Loop If] + if(I < 10) + { + // End:0x6F + if(r_ObscuringDeployables[I] == deployable) + { + r_ObscuringDeployables[I] = none; + } + I++; + // [Loop Continue] + goto J0x29; + } + UpdateObscuringDeployableState(); + } + //return; +} + +event AddBlindingDeployable(TgDeployable deployable) +{ + local int I; + + // End:0x0F + if(m_bCannotBeVolumeStealthed) + { + return; + } + // End:0x89 + if(deployable != none) + { + I = 0; + J0x29: + + // End:0x89 [Loop If] + if(I < 10) + { + // End:0x7B + if(r_BlindingDeployables[I] == none) + { + r_BlindingDeployables[I] = deployable; + UpdateBlindingDeployableState(); + return; + } + I++; + // [Loop Continue] + goto J0x29; + } + } + //return; +} + +event RemoveBlindingDeployable(TgDeployable deployable) +{ + local int I; + + // End:0x0F + if(m_bCannotBeVolumeStealthed) + { + return; + } + // End:0x87 + if(deployable != none) + { + I = 0; + J0x29: + + // End:0x7D [Loop If] + if(I < 10) + { + // End:0x6F + if(r_BlindingDeployables[I] == deployable) + { + r_BlindingDeployables[I] = none; + } + I++; + // [Loop Continue] + goto J0x29; + } + UpdateBlindingDeployableState(); + } + //return; +} + +// Export UTgPawn::execUpdateWhiteOut(FFrame&, void* const) +native function UpdateWhiteOut(); + +// Export UTgPawn::execEndWhiteOut(FFrame&, void* const) +native function EndWhiteOut(); + +function IntroTimer() +{ + //return; +} + +simulated function SetWhiteOutStartTimer() +{ + //return; +} + +simulated function BeginWhiteOutScaleUp() +{ + ClearTimer('BeginWhiteOutScaleUp'); + m_bIntroWhiteOutActive = true; + //return; +} + +simulated event bool IsPlayingIntro() +{ + return false; + //return ReturnValue; +} + +event DoIntroduction(bool bUseInitialIntro) +{ + s_fIntroStartTime = WorldInfo.TimeSeconds; + GotoState(((r_bFirstSpawnWave || bUseInitialIntro) ? m_IntialIntroState : 'Intro')); + // End:0xA9 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && IsPlayingIntro()) + { + SetupIntroAnimNodesAndTimers(); + SetWhiteOutStartTimer(); + } + //return; +} + +simulated function SetupIntroAnimNodesAndTimers() +{ + local AnimNodeSequence SeqNode; + local TgAnimBlendByBuffMonsterIntro BuffCampIntro; + local float fIntroOffset; + + // End:0x2A + if(int(Role) < int(ROLE_Authority)) + { + fIntroOffset = r_fIntroOffset; + } + else + { + fIntroOffset = WorldInfo.TimeSeconds - s_fIntroStartTime; + } + // End:0x155 + if((fIntroOffset >= 0.0000000) && r_fIntroTime > 0.0000000) + { + m_fIntroProgress = fIntroOffset; + // End:0xF5 + if(m_BuffCampIntroNodes.Length > 0) + { + // End:0xF1 + foreach m_BuffCampIntroNodes(BuffCampIntro) + { + BuffCampIntro.SetupIntro(r_fIntroTime, fIntroOffset); + } + } + else + { + // End:0x154 + foreach m_RespawnNodes(SeqNode) + { + SeqNode.PlayAnim(false, SeqNode.Rate, fIntroOffset); + } + } + } + //return; +} + +simulated function EnterIntroPosture() +{ + local TgAnimBlendByPosture postureNode; + + // End:0x112 + if(m_IntroPostureID == -1) + { + m_IntroPostureID = PushPosture(3); + // End:0xC2 + foreach m_PostureBlendNodes(postureNode) + { + postureNode.ForcePostureChange(false); + postureNode.SetActiveChild(postureNode.ActiveChildIndex, 0.0000000); + postureNode.ReplayAnim(); + } + // End:0x112 + if(Mesh != none) + { + Mesh.ForceSkelUpdate(); + Mesh.bUpdateSkelWhenNotRendered = true; + } + } + //return; +} + +simulated function ExitIntroPosture(optional bool bForceAnimTreeOut) +{ + local TgAnimBlendByPosture postureNode; + + // End:0x14B + if(m_IntroPostureID != -1) + { + PopPosture(m_IntroPostureID); + m_IntroPostureID = -1; + // End:0x14B + if(Mesh != none) + { + // End:0xEC + if(bForceAnimTreeOut) + { + // End:0xEB + foreach m_PostureBlendNodes(postureNode) + { + postureNode.ForcePostureChange(false); + postureNode.SetActiveChild(postureNode.ActiveChildIndex, 0.0000000); + postureNode.ReplayAnim(); + } + } + Mesh.ForceSkelUpdate(); + Mesh.bUpdateSkelWhenNotRendered = (int(Role) == int(ROLE_AutonomousProxy)) || c_bUpdateSkelMeshWhenNotRendered; + } + } + //return; +} + +simulated event FinishedIntroAnim(AnimNode IntroAnimNode) +{ + //return; +} + +event SetInitialHUDOverlayInfo() +{ + SetHUDOverlayIcon(m_InitHUDOverlayIcon); + SetHUDOverlayDisplayMask(m_nInitHUDOverlayDisplayMask); + SetHUDOverlayState(m_InitHUDOverlayState); + SetHUDOverlayEnemyViewDist(m_InitHUDOverlayEnemyViewDist); + //return; +} + +simulated function TgRespawnBeaconExit GetTouchingRespawnBeacon() +{ + // End:0x12 + if(m_LocalTouchingRespawnBeacons.Length <= 0) + { + return none; + } + return m_LocalTouchingRespawnBeacons[0]; + //return ReturnValue; +} + +function TouchingRespawnBeaconExit(TgRespawnBeaconExit RespawnBeacon, bool IsTouching) +{ + // End:0x28 + if(!IsTouching) + { + m_LocalTouchingRespawnBeacons.RemoveItem(RespawnBeacon); + } + else + { + // End:0x5E + if(m_LocalTouchingRespawnBeacons.Find(RespawnBeacon) == -1) + { + m_LocalTouchingRespawnBeacons.AddItem(RespawnBeacon); + } + } + UpdateRespawnBeaconReticule(); + //return; +} + +singular simulated function UpdateHasRespawnBeacon(bool bHasRespawnBeacon) +{ + // End:0x3D + if(int(Role) >= int(ROLE_AutonomousProxy)) + { + r_bHasRespawnBeacon = bHasRespawnBeacon; + ClientUpdateHasRespawnBeacon(bHasRespawnBeacon); + } + // End:0xBD + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + PlayFXHoldsBeacon(bHasRespawnBeacon); + UpdateRespawnBeaconReticule(); + // End:0xBD + if(m_WeaponMesh != none) + { + m_WeaponMesh.ToggleHoldingBeacon(bHasRespawnBeacon); + } + } + //return; +} + +reliable client simulated function ClientUpdateHasRespawnBeacon(bool bHasRespawnBeacon) +{ + UpdateHasRespawnBeacon(bHasRespawnBeacon); + //return; +} + +simulated function PlayFXHoldsBeacon(bool bShouldPlay) +{ + // End:0x28 + if(bShouldPlay) + { + FxActivateGroupSelf('BeaconCarrier', 0); + } + else + { + FxDeactivateGroupSelf('BeaconCarrier', 0); + } + //return; +} + +final simulated function PlayGenericTakeHit(Vector HitLocation, Vector HitNormal, TgPawn HitInstigator, float fDamageAmount, const out ExtraDamageInfo ExtraInfo) +{ + local TgPlayerController PC; + local bool bDisplayHit; + + // End:0x1F2 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + PC = TgPlayerController(GetALocalPlayerController()); + // End:0x1F2 + if((PC != none) && PC.CachedPRI != none) + { + bDisplayHit = false; + // End:0x14C + if(WorldInfo.TimeSeconds >= c_fNextTakeHitDisplayGroupTimestamp) + { + bDisplayHit = true; + // End:0x119 + if(HitInstigator != none) + { + c_fNextTakeHitDisplayGroupTimestamp = WorldInfo.TimeSeconds + HitInstigator.c_fNextTakeHitDisplayDelay; + } + else + { + c_fNextTakeHitDisplayGroupTimestamp = WorldInfo.TimeSeconds + c_fNextTakeHitDisplayDelay; + } + } + // End:0x1F2 + if(((bDisplayHit && Mesh != none) && PC.GetTgPawn() != self) && !IsEnemy(PC) || !IsStealthed(PC.CachedPRI)) + { + FxReactivateGroupSelf('TakeHit', 0); + } + } + } + //return; +} + +simulated function OnStartTimelapseNewDeviceState() +{ + local int I; + + I = 1; + J0x0B: + + // End:0x7E [Loop If] + if(I < 33) + { + // End:0x70 + if(c_EquipForm[I] != none) + { + c_EquipForm[I].RecoverDeviceState(r_ReplicatedDeviceState[I]); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated function Vector GetCameraOffsetOverride(Vector originalOffset) +{ + local TgDeviceForm_Mount MountDeviceForm; + + // End:0x5A + if(r_bIsMounted) + { + MountDeviceForm = TgDeviceForm_Mount(c_EquipForm[23]); + // End:0x5A + if(MountDeviceForm != none) + { + return MountDeviceForm.m_CameraOffset; + } + } + return originalOffset; + //return ReturnValue; +} + +exec function Polymorph(TgObject.EPolymorphType NewPolymorph) +{ + SetPolymorph(NewPolymorph, none); + //return; +} + +// Export UTgPawn::execSetPolymorph(FFrame&, void* const) +native final function SetPolymorph(TgObject.EPolymorphType NewPolymorph, Actor instigatingActor); + +// Export UTgPawn::execGetPolymorphMeshID(FFrame&, void* const) +native final function int GetPolymorphMeshID(); + +// Export UTgPawn::execPlayPolymorphEffects(FFrame&, void* const) +native function PlayPolymorphEffects(optional bool bForceOff); + +// Export UTgPawn::execSetAux(FFrame&, void* const) +native function SetAux(name AuxBusName, float Level); + +simulated event PreTimeLapse(bool bPlayOfTheGame) +{ + PrepTrackedProjectileRecreation(0.2500000); + // End:0x35 + if(int(c_LocalPolymorph) != int(r_CurrentPolymorph)) + { + PlayPolymorphEffects(); + } + UpdateFirstValidFlashEventIdx(); + super(Actor).PreTimeLapse(bPlayOfTheGame); + ApplyStealthClient(); + //return; +} + +simulated event PostTimeLapse(bool bPlayOfTheGame) +{ + PrepTrackedProjectileRecreation(1.0000000); + // End:0x35 + if(int(c_LocalPolymorph) != int(r_CurrentPolymorph)) + { + PlayPolymorphEffects(); + } + super(Actor).PostTimeLapse(bPlayOfTheGame); + UpdateFirstValidFlashEventIdx(); + ApplyStealthClient(); + //return; +} + +simulated function PrepTrackedProjectileRecreation(float recreateTimeOut) +{ + local int I; + local TgRepInfo_Player PRI; + + PRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x47 + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + return; + } + c_fRecreateTrackedProjectilesTimer = recreateTimeOut; + // End:0xE1 + if(PRI != none) + { + PRI.c_bTrackedProjectileIdsJustChanged = false; + I = 0; + J0x95: + + // End:0xE1 [Loop If] + if(I < 15) + { + PRI.r_TrackedProjectileIds[I] = -1; + I++; + // [Loop Continue] + goto J0x95; + } + } + //return; +} + +simulated event RecreateTrackedProjectiles() +{ + local TgRepInfo_Game GRI; + local int I; + local TgRepInfo_Player PRI; + local TgProj_Simulated Proj; + local bool bExists; + + // End:0x2B + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + return; + } + GRI = TgRepInfo_Game(WorldInfo.GRI); + PRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x646 + if((GRI != none) && PRI != none) + { + I = 0; + J0xA3: + + // End:0x646 [Loop If] + if(I < 15) + { + // End:0x638 + if(PRI.r_TrackedProjectileIds[I] > -1) + { + Proj = GRI.GetSimulatedProjectile(PRI.r_TrackedProjectileIds[I]); + // End:0x259 + if(Proj == none) + { + bExists = false; + Proj = GRI.SpawnSimulatedProjectile(PRI.r_TrackedProjectileIds[I], PRI.r_TrackedProjectilesInitData[I].FireModeID, self, PRI.r_TrackedProjectilesInitData[I].SpawnLocation, PRI.r_TrackedProjectilesInitData[I].SpawnRotation); + } + else + { + bExists = true; + } + // End:0x638 + if(Proj != none) + { + Proj.Velocity = PRI.r_TrackedProjectilesInitData[I].SpawnVelocity; + Proj.m_vSpawnVelocity = PRI.r_TrackedProjectilesInitData[I].SpawnVelocity; + // End:0x3E0 + if(bExists) + { + Proj.SetLocation(PRI.r_TrackedProjectilesInitData[I].SpawnLocation); + Proj.SetRotation(Rotator(PRI.r_TrackedProjectilesInitData[I].SpawnRotation)); + } + else + { + Proj.CompleteInitialization(); + } + // End:0x5D3 + if(Proj.m_fTrackingUpdateRate > 0.0000000) + { + Proj.TickAhead(PRI.r_TrackedProjectilesUpdateData[I].UpdateServerTime - PRI.r_TrackedProjectilesInitData[I].SpawnServerTime); + Proj.SetLocation(PRI.r_TrackedProjectilesUpdateData[I].Location); + Proj.Velocity = PRI.r_TrackedProjectilesUpdateData[I].Velocity; + Proj.TickAhead(c_fServerTimeStamp - PRI.r_TrackedProjectilesUpdateData[I].UpdateServerTime); + } + else + { + Proj.TickAhead(c_fServerTimeStamp - PRI.r_TrackedProjectilesInitData[I].SpawnServerTime); + } + } + } + I++; + // [Loop Continue] + goto J0xA3; + } + } + //return; +} + +simulated event OnPolymorphChanged(bool bDead) +{ + // End:0x27 + if(!bDead) + { + FxActivateGroupSelf('WhileAlive', 0); + } + PlayFXHoldsBeacon(r_bHasRespawnBeacon); + // End:0x7B + if(m_HeadMesh != none) + { + m_HeadMesh.m_bForceHideComponent = int(c_LocalPolymorph) > int(0); + } + // End:0xB3 + if(m_WeaponMesh != none) + { + m_WeaponMesh.OnPolymorphChanged(bDead); + } + //return; +} + +simulated function Rotator ApplyCameraRotationModifier(Rotator rCameraRot) +{ + // End:0x24 + if(m_bUsesRecoil) + { + return ApplyRecoilToRotation(rCameraRot); + } + else + { + return rCameraRot; + } + //return ReturnValue; +} + +simulated function Rotator ApplyRecoilToRotation(Rotator rRot) +{ + // End:0x71 + if(m_bUsesRecoil) + { + rRot += m_rSmoothedRecoil; + rRot.Pitch = Clamp(NormalizeRotAxis(rRot.Pitch), -16383, 16383); + } + return rRot; + //return ReturnValue; +} + +simulated function AllowDeviceToModifyInput(TgPlayerInput tgInput) +{ + //return; +} + +simulated event ForceUpdateAmmoAnim() +{ + //return; +} + +simulated event OnBecameSpectatorViewTarget() +{ + //return; +} + +simulated event OnCeaseSpectatorViewTarget() +{ + //return; +} + +// Export UTgPawn::execSetThreatLevel(FFrame&, void* const) +native function SetThreatLevel(TgObject.EThreatLevel NewThreatLevel); + +// Export UTgPawn::execCheckOcclusion(FFrame&, void* const) +native function float CheckOcclusion(); + +event SetHUDOverlayDisplayMask(int dodm) +{ + local TgRepInfo_Player PRI; + + PRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x2D + if(PRI == none) + { + return; + } + PRI.SetHUDOverlayDisplayMask(dodm); + //return; +} + +event SetHUDOverlayIcon(TgObject.DeployableOverlayIcon doi) +{ + local TgRepInfo_Player PRI; + + PRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x2D + if(PRI == none) + { + return; + } + PRI.SetHUDOverlayIcon(doi); + //return; +} + +event SetHUDOverlayState(TgObject.DeployableOverlayState dos) +{ + local TgRepInfo_Player PRI; + + PRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x2D + if(PRI == none) + { + return; + } + PRI.SetHUDOverlayState(dos); + //return; +} + +event SetHUDOverlayEnemyViewDist(float enemyViewDist) +{ + local TgRepInfo_Player PRI; + + PRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x2D + if(PRI == none) + { + return; + } + PRI.SetHUDOverlayEnemyViewDist(enemyViewDist); + //return; +} + +event UpdateHUDHealthPercent(float fPercent) +{ + local float fDeltaThreshold; + + fDeltaThreshold = 0.0100000; + // End:0x79 + if(!c_bHealAkEventPlaying) + { + // End:0x76 + if(((fPercent > c_fHUDHealthPercent) && Abs((GetHealthPercent()) - fPercent) >= fDeltaThreshold) && IsAliveAndWell()) + { + ToggleHealAkEvent(true); + } + } + else + { + // End:0xD3 + if(((fPercent < c_fHUDHealthPercent) || Abs((GetHealthPercent()) - fPercent) < fDeltaThreshold) || !IsAliveAndWell()) + { + ToggleHealAkEvent(false); + } + } + SetAkPlayerHealthPercent(fPercent); + c_fHUDHealthPercent = fPercent; + //return; +} + +event ToggleHealAkEvent(bool bEnable) +{ + // End:0x64 + if(bEnable != c_bHealAkEventPlaying) + { + // End:0x3C + if(bEnable) + { + PostAkEvent(c_HealPlayAkEvent); + } + else + { + PostAkEvent(c_HealStopAkEvent); + } + c_bHealAkEventPlaying = bEnable; + } + //return; +} + +function SetFaceRotationToController() +{ + local Rotator NewPawnRotation; + + // End:0x88 + if(m_fRemainingFaceRotationInterpTime > 0.0000000) + { + m_fRemainingFaceRotationInterpTime = 0.0000000; + NewPawnRotation.Yaw = Controller.Rotation.Yaw; + FaceRotation(NewPawnRotation, 0.0000000); + } + //return; +} + +simulated function ForwardEffects(ImpactInfo Impact, TgEffectGroup EffectGroup, TgDevice SourceDevice, optional bool bRemove, optional int StackCount = 1) +{ + //return; +} + +simulated function bool CanBeNudged() +{ + return (m_EquippedDevices[7] == none) || !m_EquippedDevices[7].IsFiring(); + //return ReturnValue; +} + +simulated function bool ShouldNudgePlayer(TgPawn PlayerPawn) +{ + return int(GetTaskForceNumber()) == int(PlayerPawn.GetTaskForceNumber()); + //return ReturnValue; +} + +simulated function float GetReloadScale() +{ + return FMax(r_fReloadScale, 0.4000000); + //return ReturnValue; +} + +// Export UTgPawn::execGetEnergyChargeModifier(FFrame&, void* const) +native function float GetEnergyChargeModifier(); + +// Export UTgPawn::execResetUlt(FFrame&, void* const) +native function ResetUlt(); + +simulated function TgDevice GetDeviceForAimAssist() +{ + local int X, nSelectedPriority, nCurrentPriority; + local TgDevice SelectedDevice; + + X = 0; + J0x0B: + + // End:0xBC [Loop If] + if(X < 33) + { + // End:0xAE + if(m_EquippedDevices[X] != none) + { + nCurrentPriority = m_EquippedDevices[X].GetAimAssistPriority(); + // End:0xAE + if(nCurrentPriority > nSelectedPriority) + { + nSelectedPriority = nCurrentPriority; + SelectedDevice = m_EquippedDevices[X]; + } + } + ++X; + // [Loop Continue] + goto J0x0B; + } + return SelectedDevice; + //return ReturnValue; +} + +simulated function float GetMaxAimAssistStacks() +{ + return m_fMaxAimAssistStacks; + //return ReturnValue; +} + +reliable server function ServerStartFlourish() +{ + StartFlourish(); + //return; +} + +simulated function FlourishTimeoutFinished() +{ + //return; +} + +simulated event StartFlourish() +{ + // End:0xB0 + if(!IsTimerActive('FlourishTimeoutFinished')) + { + SetTimer(m_fFlourishTimeout + ((int(Role) < int(ROLE_Authority)) ? 0.2000000 : 0.0000000), false, 'FlourishTimeoutFinished'); + // End:0x80 + if(m_WeaponMesh != none) + { + m_WeaponMesh.PlayFlourish(); + } + // End:0xA1 + if(int(Role) < int(ROLE_Authority)) + { + ServerStartFlourish(); + } + else + { + FlashPlaySpecialEffect(11); + } + } + //return; +} + +simulated event AppliedEffectRemoved(TgEffect RemovedEffect) +{ + //return; +} + +simulated event RegisterFor3pTransitionCB(delegate EventDelegate) +{ + // End:0x36 + if(m_SingleUseOn3pTransitionDelegates.Find(EventDelegate) == -1) + { + m_SingleUseOn3pTransitionDelegates.AddItem(EventDelegate); + } + //return; +} + +simulated function Invoke3pTransitionDelegates() +{ + local delegate onEventDelegate; + + // End:0x3A + foreach m_SingleUseOn3pTransitionDelegates(onEventDelegate) + { + // End:0x39 + if(onEventDelegate != none) + { + On3pTransitionEvent(); + } + } + m_SingleUseOn3pTransitionDelegates.Remove(0, m_SingleUseOn3pTransitionDelegates.Length); + //return; +} + +simulated event DisableMovementCorrection(float fDisableTime) +{ + local TgPlayerController pController; + + ClearTimer('EnableMovementCorrection'); + pController = TgPlayerController(Controller); + // End:0x77 + if(pController != none) + { + pController.bAcceptSendCorrections = false; + SetTimer(fDisableTime, false, 'EnableMovementCorrection'); + } + //return; +} + +simulated event EnableMovementCorrection() +{ + local TgPlayerController pController; + + ClearTimer('EnableMovementCorrection'); + pController = TgPlayerController(Controller); + // End:0x60 + if(pController != none) + { + pController.bAcceptSendCorrections = true; + } + //return; +} + +simulated function bool ShouldUseScopeSensitivity() +{ + return false; + //return ReturnValue; +} + +simulated event OnVGSSoundPlayed(int nVgsId) +{ + c_nCurrentVGSPlaying = nVgsId; + //return; +} + +simulated event OnVGSSoundFinished() +{ + c_nCurrentVGSPlaying = 0; + //return; +} + +simulated event OnEmoteSoundPlayed(TgPawn.EEmote Emote) +{ + c_eCurrentAudioEmotePlaying = Emote; + //return; +} + +simulated event OnEmoteSoundFinished() +{ + c_eCurrentAudioEmotePlaying = 0; + //return; +} + +simulated state Dying +{ + ignores StopPlayFiring, TakeDamage, StopAction, BreathTimer, Falling, PhysicsVolumeChange, + HeadVolumeChange; + + simulated event Landed(Vector HitNormal, Actor FloorActor) + { + // End:0x25 + if(!m_bHasPlayedDeathAnimation) + { + m_bForceDeathAnim = true; + PlayDeathAnimation(); + } + //return; + } + + simulated function OnLifeAfterDeathTimerExpired() + { + // End:0x2F + if(m_DeathAnimFX != none) + { + m_DeathAnimFX.Deactivate(true); + } + // End:0x20F + if(Controller != none) + { + // End:0x1A3 + if(Controller.IsA('AIController') && !Controller.IsA('TgAIController_BehaviorGod')) + { + Controller.Destroy(); + bTearOff = true; + bReplicateMovement = false; + // End:0x19D + if(((((WorldInfo.IsPlayingDemo() && Mesh != none) && !self.IsA('TgPawn_Character')) || !Controller.IsA('TgAIController_BehaviorGod') || Controller.IsA('TgPlayerController')) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && m_bFadeOutOnLifeAfterDeathTimerExpired) + { + BeginFadeOut(); + } + else + { + Destroy(); + } + } + else + { + // End:0x200 + if((Controller.IsA('TgAIController_BehaviorGod') || Controller.IsA('TgPlayerController')) && bTearOff) + { + Destroy(); + } + else + { + c_bMeshHiddenDueToDeath = true; + } + } + } + else + { + // End:0x23A + if((Mesh != none) && m_bFadeOutOnLifeAfterDeathTimerExpired) + { + BeginFadeOut(); + } + else + { + Destroy(); + } + } + //return; + } + + singular simulated event OutsideWorldBounds() + { + SetPhysics(0); + LifeSpan = FMin(LifeSpan, 1.0000000); + //return; + } + + simulated event OnAnimEnd(AnimNodeSequence SeqNode, float PlayedTime, float ExcessTime) + { + local editinline TgSkeletalMeshComponent ActualMesh; + + // End:0x182 + if((SeqNode != none) && SeqNode.AnimSeqName == 'Death') + { + ActualMesh = TgSkeletalMeshComponent(Mesh); + // End:0xAF + if((ActualMesh == none) || ActualMesh.m_nAssemblyId == m_nBodyMeshAsmId) + { + // End:0xAF + if(m_bHasDestroyedMesh) + { + m_SwapToDestroyedMeshOnTick = true; + } + } + // End:0x182 + if(((m_bUseDamageTypeForDeathAnim && m_DeathDamageType != none) && m_DeathDamageType.default.m_bShouldRagdollAfterDeathAnim) && m_DeathDamageType.default.m_nmDeathAnimNames.Find(SeqNode.AnimSeqName) != -1) + { + // End:0x176 + if(TgPlayerController(GetALocalPlayerController()).AllowRagdoll()) + { + InitRagdoll(); + } + else + { + c_bMeshHiddenDueToDeath = true; + } + } + } + //return; + } + + simulated event PreDemoRewind() + { + CleanUpDyingEffects(); + //return; + } + + simulated function Tick(float DeltaTime) + { + global.Tick(DeltaTime); + // End:0x36 + if(m_SwapToDestroyedMeshOnTick) + { + OnSwapToDestroyedMesh(); + m_SwapToDestroyedMeshOnTick = false; + } + m_bShouldBeFirstPersonLastFrame = true; + m_f1PTransitionFireDelayRemaining = -1.0000000; + //return; + } + + simulated function BeginState(name PreviousStateName) + { + local Class ChaosGameClass; + local bool bCanGameModeSpawnHealthNugget; + local TgPlayerController TgPC; + local TgPlayerCamera PlayerCamera; + + // End:0xE2 + if(WorldInfo.IsPlayingTimelapse() && r_DeathInfo.dmgType == Class'TgGame.TgDamageType_FallOutOfWorld') + { + TgPC = TgPlayerController(Controller); + // End:0xE2 + if(TgPC != none) + { + PlayerCamera = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xE2 + if(PlayerCamera != none) + { + PlayerCamera.SwitchCameras(Class'TgGame.TgCameraModule_FallOutOfWorld'); + } + } + } + m_SwapToDestroyedMeshOnTick = false; + DropFlag(); + // End:0x123 + if(m_fLifeAfterDeathSecs > 0.0000000) + { + SetTimer(m_fLifeAfterDeathSecs, false, 'OnLifeAfterDeathTimerExpired'); + } + // End:0x13E + if(Weapon != none) + { + SetActiveWeapon(none, true); + } + // End:0x15C + if(int(Role) == int(ROLE_Authority)) + { + RemoveAllEffectsOnDeath(); + } + // End:0x1B3 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x1B3 + if(r_EffectManager != none) + { + r_EffectManager.UpdateEffectFormVisibility(); + } + } + // End:0x1EE + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && m_bInitialized) + { + } + else + { + // End:0x208 + if(!m_bInitialized) + { + SetMeshVisibility(false); + } + } + bCanClimbLadders = false; + // End:0x265 + if(Controller != none) + { + // End:0x265 + if(Controller.bIsPlayer) + { + Controller.PawnDied(self); + } + } + // End:0x2DF + if((GetPRI()) != none) + { + GetPRI().r_nHealthCurrent = 0; + // End:0x2DF + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + GetPRI().UpdatedHealthCurrent(); + } + } + OnPawnDied(); + SetCollision(false, false, false); + bCanGameModeSpawnHealthNugget = true; + // End:0x3AF + if((WorldInfo != none) && WorldInfo.GRI != none) + { + ChaosGameClass = Class(WorldInfo.GRI.GameClass); + // End:0x3AF + if(ChaosGameClass != none) + { + bCanGameModeSpawnHealthNugget = ChaosGameClass.default.m_bDropHealthNuggetOnDeath; + } + } + // End:0x3D8 + if(m_bCanSpawnHealthNuggetsOnDeath && bCanGameModeSpawnHealthNugget) + { + DropHealthNugget(); + } + PlayDyingSound(); + // End:0x456 + if(Mesh != none) + { + Mesh.SetRBChannel(16); + Mesh.SetRBCollidesWithChannel(2, false); + Mesh.SetRBCollidesWithChannel(16, false); + } + //return; + } + + simulated function EndState(name NextStateName) + { + // End:0x22 + if(bPendingDelete) + { + super(Object).EndState(NextStateName); + return; + } + SetTimer(0.0000000, false, 'OnLifeAfterDeathTimerExpired'); + super(Object).EndState(NextStateName); + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + m_bIsFadingOut = false; + // End:0x9B + if(Mesh != none) + { + Mesh.bNoSkeletonUpdate = false; + } + // End:0xB9 + if(int(Role) != int(ROLE_Authority)) + { + OnRespawn(); + } + bCanClimbLadders = true; + s_vOneWayMovement = vect(0.0000000, 0.0000000, 0.0000000); + SetCollision(true, true, false); + // End:0x156 + if(Mesh != none) + { + Mesh.SetRBChannel(2); + Mesh.SetRBCollidesWithChannel(2, true); + Mesh.SetRBCollidesWithChannel(16, false); + } + // End:0x175 + if(int(Role) == int(ROLE_Authority)) + { + ReapplyLoadoutEffects(); + } + // End:0x1CC + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x1CC + if(r_EffectManager != none) + { + r_EffectManager.UpdateEffectFormVisibility(); + } + } + // End:0x1FF + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + CleanUpDyingEffects(); + } + //return; + } +Begin: + + bBlockActors = false; + stop; +} + +state Intro +{ + simulated function BeginState(name PreviousStateName) + { + m_nIsInIntroState++; + // End:0x2C + if(int(Role) == int(ROLE_Authority)) + { + r_ReplicatedState = GetStateName(); + } + // End:0x4E + if(m_fIntroProgress < 0.0000000) + { + m_fIntroProgress = 0.0000000; + } + FxActivateGroupAllMesh('Intro', 0); + EnterIntroPosture(); + // End:0xC6 + if(int(Role) == int(ROLE_Authority)) + { + // End:0xB2 + if(r_fIntroTime > 0.0000000) + { + SetTimer(r_fIntroTime, false, 'IntroTimer'); + } + else + { + IntroTimer(); + } + SetInitialHUDOverlayInfo(); + } + //return; + } + + simulated function EndState(name NextStateName) + { + local bool bRecentlyRendered; + + ClearTimer('IntroTimer'); + // End:0x3B + if(int(Role) == int(ROLE_Authority)) + { + r_ReplicatedState = 'None'; + } + // End:0xAF + if(m_bAllowIntroWhiteOut) + { + // End:0x68 + if(m_fIntroWhiteOutDownTime <= 0.0000000) + { + EndWhiteOut(); + } + else + { + // End:0xAF + if((m_fIntroWhiteOutScale <= 0.0000000) || !m_bIntroWhiteOutActive) + { + BeginWhiteOutScaleUp(); + m_fIntroWhiteOutScale = 1.0000000; + UpdateWhiteOut(); + } + } + } + FxDeactivateGroupAllMesh('Intro', 0); + bRecentlyRendered = (Mesh != none) && Mesh.bRecentlyRendered; + m_nIsInIntroState--; + // End:0x195 + if((((!m_bWaitForIntroAnimToEnd || m_bIntroAnimFinished) || NextStateName != 'Idle') || int(WorldInfo.NetMode) == int(NM_DedicatedServer)) || !bRecentlyRendered) + { + ExitIntroPosture(!bRecentlyRendered); + } + // End:0x28A + if((((int(Role) == int(ROLE_Authority)) && TgAIController(Controller) != none) && TgAIController(Controller).m_pFactory != none) && TgAIController(Controller).m_pFactory.m_FRI != none) + { + TgAIController(Controller).m_pFactory.m_FRI.s_FactoryState = 2; + } + //return; + } + + simulated event OnAnimEnd(AnimNodeSequence SeqNode, float PlayedTime, float ExcessTime) + { + global.OnAnimEnd(SeqNode, PlayedTime, ExcessTime); + // End:0x6E + if((SeqNode != none) && SeqNode.NodeName == 'Intro') + { + m_bIntroAnimFinished = true; + } + //return; + } + + simulated event FinishedIntroAnim(AnimNode IntroAnimNode) + { + m_bIntroAnimFinished = true; + //return; + } + + simulated event bool IsPlayingIntro() + { + return true; + //return ReturnValue; + } + + function IntroTimer() + { + GotoState('Idle'); + //return; + } + + simulated function SetWhiteOutStartTimer() + { + local float fScaleUpDelay; + + // End:0xD3 + if((m_bAllowIntroWhiteOut && r_fIntroTime > 0.0000000) && m_fIntroWhiteOutUpTime > 0.0000000) + { + fScaleUpDelay = r_fIntroTime - r_fIntroOffset; + // End:0x91 + if(fScaleUpDelay > m_fIntroWhiteOutUpTime) + { + SetTimer(fScaleUpDelay - m_fIntroWhiteOutUpTime, false, 'BeginWhiteOutScaleUp'); + } + else + { + // End:0xC4 + if(fScaleUpDelay > 0.0000000) + { + m_fIntroWhiteOutUpTime = fScaleUpDelay; + BeginWhiteOutScaleUp(); + } + else + { + m_fIntroWhiteOutUpTime = 0.0000000; + } + } + } + //return; + } + + simulated function Tick(float DeltaSeconds) + { + super(TgPawn).Tick(DeltaSeconds); + m_fIntroProgress += DeltaSeconds; + m_bShouldBeFirstPersonLastFrame = true; + m_f1PTransitionFireDelayRemaining = -1.0000000; + //return; + } + stop; +} + +state Idle +{ + simulated function BeginState(name PreviousStateName) + { + GotoState('Auto'); + //return; + } + + simulated function EndState(name NextStateName) + { + m_bIntroAnimFinished = true; + ExitIntroPosture(); + //return; + } + + simulated event OnAnimEnd(AnimNodeSequence SeqNode, float PlayedTime, float ExcessTime) + { + global.OnAnimEnd(SeqNode, PlayedTime, ExcessTime); + // End:0x79 + if((SeqNode != none) && SeqNode.NodeName == 'Intro') + { + m_bIntroAnimFinished = true; + ExitIntroPosture(); + } + //return; + } + + simulated event FinishedIntroAnim(AnimNode IntroAnimNode) + { + m_bIntroAnimFinished = true; + //return; + } + stop; +} + +defaultproperties +{ + m_eCharacterCustom1OverlayDepthGroup=ESceneDepthPriorityGroup.SDPG_World + s_LoadMeshServerSide=true + m_bApplyDistanceFade=true + r_bIsBot=true + s_bCanSeePets=true + s_bCanApplyEffects=true + c_bCanDoTurnInPlaceAnim=true + m_bShouldApplyCCImmuneOverlay=true + m_bCanBeKnockedBack=true + m_bCausesPushblock=true + m_bPushblockAffectsFriendlies=true + m_bUseSmoothNetReceiveRotation=true + r_bHasAccurateRotation=true + r_bCanBePulled=true + m_bAllowHigherWallJumping=true + c_bApplyDropShadow=true + m_bShowNameplate=true + m_bCanSpawnHealthNuggetsOnDeath=true + m_bCanAutoMountOnRespawn=true + m_bAirAccuracyPenalty=true + m_bCanBeHeadShot=true + m_bFadeOutOnLifeAfterDeathTimerExpired=true + m_bShouldSmoothEyeHeight=true + m_nPhysGrabPostureId=-1 + m_n1PHeadMeshId=-1 + s_PropValuesRepResolution[2]=1.0000000 + m_EmoteChances=(fDefault=1.4000000,fPlayerVGS=1.0000000,fAbilityOnCooldown=1.0000000,fTakingDamage=1.0000000,fCelebration=1.0000000,fKills=0.3300000,fAction=1.0000000,fContext=1.0000000,fUltimate=1.0000000,fOverride=1.0000000,fMovement=1.0000000) + m_EmoteChancesAbility=(fDefault=0.3300000,fAbility1=0.3300000,fAbility2=0.3300000,fAbility3=0.3300000,fMount=0.3300000) + c_nEmoteCameraStackId=-1 + m_fEmoteGlobalCooldown=4.0000000 + m_fEmoteNonLocalCooldown=5.0000000 + m_fSoftLandVelocityCutoff=-500.0000000 + m_fHardLandVelocityCutoff=-2000.0000000 + c_nLastProcessedFlashEventIdx=-1 + r_nFlashQueIndex=-1 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + begin object name="MyLightEnvironment" class=Engine.DynamicLightEnvironmentComponent + bSynthesizeSHLight=true + bIsCharacterLightEnvironment=true + end object + LightEnvironment=MyLightEnvironment + m_fMaxAimAssistStacks=1.0000000 + m_fVolumeStealthDisableTime=2.0000000 + c_fFxScaleSize=1.0000000 + r_vDown=(X=0.0000000,Y=0.0000000,Z=-1.0000000) + m_fExhaustedPercent=20.0000000 + m_fExhaustedPropModifier=1.0000000 + m_fExhaustedMinPropModifier=0.1000000 + m_fMountFrictionMultiplier=1.0000000 + m_fBackpedalPct=1.0000000 + m_fMountBackpedalPct=0.2160000 + r_nResetCharacter=1 + DyingStateName="Dying" + m_fCrouchTranslationOffset=-32.0000000 + m_InitHUDOverlayEnemyViewDist=1600.0000000 + m_SkelControlLockNames[0]="Prop_Lock" + m_SkelControlLockNames[1]="Prop1_Lock" + m_SkelControlLockNames[2]="Prop2_Lock" + m_SkelControlLockNames[3]="Prop01_Lock" + m_SkelControlLockNames[4]="Prop02_Lock" + m_fKnockbackMultiplier=1.0000000 + m_fRBPushStrengthMultiplier=0.2500000 + m_fRBPushStrengthRange=(X=20.0000000,Y=200.0000000) + m_RotationInterpRate=15.0000000 + m_PitchInterpRate=15.0000000 + m_fSmoothCorrectionRate=25000.0000000 + m_fHorseJumpHeightIncrease=0.2500000 + m_fDazedDuration=8.0000000 + m_fDazedInterval=0.5000000 + m_iDazedOrder=4 + m_iDazedNumControlPoints=8 + m_vDazedMaxRotator=(X=12288.0000000,Y=8192.0000000) + m_vDazedMinMaxStrafeDuration=(X=1.0000000,Y=2.5000000) + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + begin object name="ShadowDecal" class=TgGame.TgDropShadowDecalComponent + StaticMesh=StaticMesh'GOD_CommonAssets.Meshes.FX_Player_ground_shadow' + ReplacementPrimitive=none + TranslucencySortPriority=1 + end object + c_PlayerDropShadow=ShadowDecal + c_PlayerDropShadowTemplate=Material'GOD_CommonAssets.Materials.FX_Player_MeshShadow' + c_PlayerDropShadowSocketName="CSO_FX_Origin_01" + m_fFaceRotationInterpTime=1.5000000 + // Reference: TgManifestGroup'TgGame.Default__TgPawn.TgManifestGroup0' + begin object name="TgManifestGroup0" class=TgGame.TgManifestGroup + end object + c_AssetManifestGroup=TgManifestGroup0 + c_nLevelUpFxId=1714 + r_nProfileId=2092 + r_nSkinId=-1 + r_nHeadSkinId=-1 + r_nWeaponSkinId=-1 + r_nMountSkinId=-1 + c_StunnedPostureID=-1 + c_FearedPostureID=-1 + m_fDamageTakenMaxSustainDuration=0.1000000 + m_fDamageTakenRTPCSustainDuration=0.7500000 + m_ExecuteOverlayMaterialFriend=MaterialInstanceConstant'FX_WEP_Lawman.Materials.MIC_ULT_Death_Overlay_A' + m_ExecuteOverlayMaterialEnemy=MaterialInstanceConstant'FX_WEP_Lawman.Materials.MIC_ULT_Death_Overlay_B' + m_ShieldOverlayMaterialFriend=MaterialInstanceConstant'fx_generic_status.Materials.MIC_Shield_Overlay_A' + m_ShieldOverlayMaterialEnemy=MaterialInstanceConstant'fx_generic_status.Materials.MIC_Shield_Overlay_A_Enemy' + m_ImmortalOverlayMaterialFriend=MaterialInstanceConstant'fx_generic_status.Materials.MIC_Shield_Overlay_Immortal_A' + m_ImmortalOverlayMaterialEnemy=MaterialInstanceConstant'fx_generic_status.Materials.MIC_Shield_Overlay_Immortal_A_Enemy' + m_FreezeOverlayMaterial=MaterialInstanceConstant'fx_generic_status.MICs.MIC_Ice_Overlay_A' + m_SilhouetteClass=Class'TgGame.TgSilhouetteComponentPaladinsPawn' + m_fHitReactionAIPauseTime=0.6000000 + m_fHitReactionBlendOutTime=0.3000000 + m_fHitReactionTweenTime=0.5000000 + m_fFadeOutTime=8.0000000 + m_fFadeOutSpeed=40.0000000 + m_fHitReactionPulseTime=0.2500000 + m_fDisorientSpinRate=3000.0000000 + m_fMaxSmoothNetUpdateDist=84.0000000 + m_fNoSmoothNetUpdateDist=256.0000000 + m_fSmoothNetUpdateTime=0.1250000 + m_fInitialHealthPercent=1.0000000 + m_fDamageDealtPercentAI=1.0000000 + m_fDamageTakenPercentAI=1.0000000 + m_fRecentHealExpireTime=10.0000000 + m_HeadSilhouetteIndex=-1 + m_HeadOverlayIndex=-1 + m_BobFootstepFactor=8.0000000 + Bob=0.0100000 + // Reference: AudioComponent'TgGame.Default__TgPawn.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + begin object name="TakeHitAC" class=Engine.AudioComponent + bAllowSpatialization=false + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + begin object name="PainAC" class=Engine.AudioComponent + bAllowSpatialization=false + end object + m_PainAudioComponent=PainAC + c_HealPlayAkEvent=AkEvent'WW_PC_Shared.PC_Shared_HealingReceived_1P_Play' + c_HealStopAkEvent=AkEvent'WW_PC_Shared.PC_Shared_HealingReceived_1P_Stop' + m_fPainEventCooldown=3.0000000 + m_fStealthPulseTime=1.0000000 + r_fKnockedBackFrictionOverride=-1.0000000 + r_fReloadScale=1.0000000 + r_fRefireSpeed=100.0000000 + m_OutlineMaterial=MaterialInstanceConstant'FX_Gen_Outline.Materials.MIC_Outline' + r_fLeapAirControl=0.2000000 + m_fBaseLeapAirControl=0.2000000 + m_fKnockAirControl=0.0350000 + s_fEndStealthDamage=500.0000000 + m_fScaleMesh=1.0000000 + m_fScaleMeshChangePerSecond=1.0000000 + m_fScaleCollisionHeight=1.0000000 + m_fScaleCollisionHeightChangePerSecond=1.0000000 + m_fScaleCollisionRadius=1.0000000 + m_fScaleCollisionRadiusChangePerSecond=1.0000000 + m_IntroPostureID=-1 + r_fIntroOffset=-1.0000000 + s_fIntroStartTime=-1.0000000 + m_fIntroProgress=-1.0000000 + m_IntialIntroState="Intro" + c_fNextTakeHitDisplayDelay=0.2500000 + m_PolymorphMaxHealth=1500 + m_GameplayCurves=TgGameplayCurves'GP_BasePawn.BasePawn' + LLegBoneNames[0]="L_Thigh" + LLegBoneNames[1]="L_Calf" + LLegBoneNames[2]="L_Foot" + RLegBoneNames[0]="R_Thigh" + RLegBoneNames[1]="R_Calf" + RLegBoneNames[2]="R_Foot" + LArmBoneNames[0]="L_UpperArm" + LArmBoneNames[1]="L_Forearm" + RArmBoneNames[0]="R_UpperArm" + RArmBoneNames[1]="R_Forearm" + HeadBoneNames[0]="Neck1" + HeadBoneNames[1]="head" + m_HeadShotComponentBoneName="head" + m_fMountScaleOverride=1.0000000 + m_LandCameraShake=TgCameraShake'FX_Gen_Camera.CamShake_Land' + m_JumpCameraShake=TgCameraShake'FX_Gen_Camera.CamShake_Jump' + m_f1PTransitionFireDelay=0.2000000 + m_fEnergyChargeMultiplier=1.0000000 + m_fNonBaseableSurfaceAirControlDuration=1.0000000 + m_fNonBaseableSurfaceLerpTime=1.0000000 + m_fNonBaseableSurfaceRampUpMult=6.0000000 + m_fNonBaseableSurfaceMaxMoveAmount=12.5000000 + m_fNonBaseableSurfaceGraceTime=0.1000000 + m_fNonBaseableSurfaceExitMaxVelocity=350.0000000 + m_fNonBaseableSurfaceControlPercent=0.4000000 + m_fEyeHeightSmoothFactor=1.0000000 + m_ExecutionMaterialFadeOutTimer=1.5000000 + m_ExecutionMaterialFadeOutDuration=1.5000000 + m_DeathFFWaveform=ForceFeedbackWaveform'gp_forcefeedback.DeathForceFeedback' + m_fFlourishTimeout=0.5000000 + MaxStepHeight=26.0000000 + MaxJumpHeight=49.0000000 + bCanCrouch=true + bCanSwim=true + bCanClimbLadders=true + bCanStrafe=true + bCanWalkOffLedges=true + bCanPickupInventory=true + bMuffledHearing=true + bReplicateHealthToAll=true + m_bPhysVolumesOnlyAffectDownwardVelocities=true + CrouchHeight=32.0000000 + CrouchRadius=21.0000000 + SightRadius=1600.0000000 + PeripheralVision=-1.0000000 + Buoyancy=0.9900000 + MeleeRange=20.0000000 + WaterSpeed=220.0000000 + AirSpeed=1000.0000000 + AccelRate=8192.0000000 + JumpZ=425.0000000 + AirControl=0.3500000 + WalkingPct=1.0000000 + CrouchedPct=1.0000000 + BaseEyeHeight=40.0000000 + EyeHeight=40.0000000 + UnderWaterTime=20.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'GameFramework.Default__GamePawn.CollisionCylinder' + begin object name="CollisionCylinder" + CollisionHeight=46.0000000 + CollisionRadius=25.0000000 + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + RBPushRadius=5.0000000 + AlwaysRelevantDistanceSquared=2560000.0000000 + ViewPitchMin=-15800.0000000 + ViewPitchMax=16000.0000000 + InventoryManagerClass=Class'TgGame.TgInventoryManager' + m_TerrainWalkableFloorZ=0.1000000 + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn.PositionHistoryComponent' + begin object name="PositionHistoryComponent" class=PlatformCommon.PComPositionHistoryComponent + end object + Components[6]=PositionHistoryComponent + TickGroup=ETickingGroup.TG_PostAsyncWork + bReplicateRigidBodyLocation=true + NetPriority=4.0000000 + CollisionComponent=CollisionCylinder + RotationRate=(Pitch=0,Yaw=20000,Roll=2048) + m_fOcclusionCheckInterval=1.0000000 + m_fMaxDistForOcclusionPathfinding=5000.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Androxus.uc b/exported/TgGame/Classes/TgPawn_Androxus.uc new file mode 100755 index 00000000..8c523dfe --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Androxus.uc @@ -0,0 +1,386 @@ +class TgPawn_Androxus extends TgPawn_Character + native(ChampAndroxus) + config(Game) + hidecategories(Navigation); + +const TGPAWN_ANDROXUS_SLOWFALL_FX_ID = 6824; + +var bool m_bIsInSlowFall; +var bool m_bForceAccursedArmDevice; +var repnotify bool r_bAccursedArmFiring; +var bool m_bUltimateReadyDisplayGroupOn; +var float m_fAccursedArmSpeedModifier; +var TgDevice m_AccursedArmInHand; +var float m_fDefianceAirControl; +var float m_fAirHangGravityModifier; +var float m_fJumpHoldMaxFallSpeed; +var TgDevice_NetherStep m_NetherStepDevice; +var float r_fFeatherweightAirControl; +var float r_fLiftOffDrift; +var int m_nAccursedArmActiveFX; +var array m_SlowFallAnimNodes; +var repnotify int r_nDesiredSlowFallAnimChild; +var TgSpecialFx m_SlowFallFX; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_fFeatherweightAirControl, r_fLiftOffDrift; + + // Pos:0x011 + if((int(Role) == int(ROLE_Authority)) && ((!bNetOwner || bDemoRecording) || bNetTimelapse) || bNetTimelapsePost) + r_bAccursedArmFiring, r_nDesiredSlowFallAnimChild; +} + +// Export UTgPawn_Androxus::execInitializeSlowFallFX(FFrame&, void* const) +native function bool InitializeSlowFallFX(); + +// Export UTgPawn_Androxus::execGetAirControl(FFrame&, void* const) +native function float GetAirControl(); + +// Export UTgPawn_Androxus::execGetGravityZ(FFrame&, void* const) +native function float GetGravityZ(); + +// Export UTgPawn_Androxus::execShouldForceHideOverlaysWeapon(FFrame&, void* const) +native function bool ShouldForceHideOverlaysWeapon(); + +simulated event ReplicatedEvent(name VarName) +{ + switch(VarName) + { + // End:0x36 + case 'r_bAccursedArmFiring': + PlayAccursedArmEffects(r_bAccursedArmFiring); + // End:0x5B + break; + // End:0x58 + case 'r_nDesiredSlowFallAnimChild': + SetSlowFallAnimationIndex(r_nDesiredSlowFallAnimChild); + // End:0x5B + break; + // End:0xFFFF + default: + break; + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated event bool PostPawnSetup() +{ + local bool Success; + + Success = super.PostPawnSetup(); + // End:0x2C + if(Success) + { + InitializeSlowFallFX(); + } + return Success; + //return ReturnValue; +} + +simulated function CacheMultiMeshAnimNodeReferences(TgSkeletalMeshComponent smcomp) +{ + local array AnimNodesBlendBySlowFall; + local AnimNode AnimNodeSearchIterator; + + super(TgPawn).CacheMultiMeshAnimNodeReferences(smcomp); + // End:0xA0 + if(smcomp != none) + { + smcomp.Animations.GetNodesByClassWrapper(AnimNodesBlendBySlowFall, Class'TgGame.TgAnimNodeBlendBySlowFall'); + // End:0x9F + foreach AnimNodesBlendBySlowFall(AnimNodeSearchIterator) + { + m_SlowFallAnimNodes.AddItem(TgAnimNodeBlendBySlowFall(AnimNodeSearchIterator)); + } + } + //return; +} + +simulated event SetSlowFallAnimationIndex(int nIndex) +{ + local TgAnimNodeBlendBySlowFall AnimNodeSearchIterator; + + // End:0x40 + foreach m_SlowFallAnimNodes(AnimNodeSearchIterator) + { + AnimNodeSearchIterator.SetActiveAnimationIndex(nIndex); + } + r_nDesiredSlowFallAnimChild = nIndex; + // End:0x70 + if(nIndex == 0) + { + StopSlowFallFx(); + } + else + { + PlaySlowFallFx(); + } + bNetDirty = true; + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x4A + case 1: + return "PC_Androxus.Anims.AS_PC_Androxus_3p_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +simulated function ApplyLiftOff() +{ + local TgPlayerController TgPC; + + TgPC = TgPlayerController(Controller); + // End:0x104 + if((TgPC != none) && (int(TgPC.m_JumpHeld) > int(0)) || int(TgPC.m_JumpHeldAlt) > int(0)) + { + // End:0x9A + if(int(Physics) != int(2)) + { + SetPhysics(2); + } + Velocity.X = 0.0000000; + Velocity.Y = 0.0000000; + Velocity.Z = r_fLiftOffDrift; + } + //return; +} + +function ToggleAccursedArm(bool bEnabled, optional float SpeedModifier = 1.0000000) +{ + local TgDevice newFiringDevice; + local WeaponMeshSwapStrategy SwapStrategy; + + // End:0x24 + if(m_bForceAccursedArmDevice == bEnabled) + { + return; + } + m_bForceAccursedArmDevice = bEnabled; + m_fAccursedArmSpeedModifier = ((bEnabled) ? SpeedModifier : 1.0000000); + // End:0xDC + if(bEnabled) + { + newFiringDevice = m_AccursedArmInHand; + // End:0xD9 + if(newFiringDevice != none) + { + newFiringDevice.SetAmmo(newFiringDevice.r_nMaxAmmoClipCount); + ForceUpdateAmmoAnim(); + } + } + else + { + newFiringDevice = GetDeviceByEqPoint(1); + } + // End:0x145 + if(((newFiringDevice != none) && IsLocallyControlled()) && PlayerController(Controller) != none) + { + SetTargetingDevice(newFiringDevice, SwapStrategy); + } + PlayAccursedArmEffects(bEnabled); + //return; +} + +protected simulated function PlayAccursedArmEffects(bool bEnabled) +{ + local TgDeviceForm_AccursedArm accursedArmForm; + + // End:0x29 + if(int(Role) == int(ROLE_Authority)) + { + r_bAccursedArmFiring = bEnabled; + } + // End:0x54 + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + accursedArmForm = TgDeviceForm_AccursedArm(c_EquipForm[2]); + // End:0xAC + if(accursedArmForm != none) + { + accursedArmForm.m_bShouldBeActive = bEnabled; + } + //return; +} + +simulated event SetTargetingDevice(TgDevice Dev, WeaponMeshSwapStrategy SwapStrategy) +{ + // End:0x5D + if((((Dev != none) && Dev == (GetDeviceByEqPoint(1))) && m_bForceAccursedArmDevice) && m_AccursedArmInHand != none) + { + Dev = m_AccursedArmInHand; + } + super(TgPawn).SetTargetingDevice(Dev, SwapStrategy); + //return; +} + +simulated event PlaySlowFallFx() +{ + // End:0x7E + if(m_SlowFallFX != none) + { + StopSlowFallFx(); + // End:0x7E + if(!m_SlowFallFX.c_bActive) + { + m_SlowFallFX.AttachToOwner(self); + m_SlowFallFX.Activate(); + } + } + //return; +} + +simulated event StopSlowFallFx() +{ + // End:0x92 + if(m_SlowFallFX != none) + { + // End:0x51 + if(m_SlowFallFX.c_bActive) + { + m_SlowFallFX.Deactivate(true); + } + // End:0x92 + if(m_SlowFallFX.c_bAttached) + { + m_SlowFallFX.Detach(); + } + } + //return; +} + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + StopSlowFallFx(); + return super.Died(Killer, dmgType, HitLocation); + //return ReturnValue; +} + +simulated function OnRespawn() +{ + super.OnRespawn(); + StopSlowFallFx(); + //return; +} + +simulated event Stun(bool bStunController, optional Controller.EStunType eType) +{ + local TgDevice netherStepDevice; + local TgDeviceFire netherStepFire; + + super(TgPawn).Stun(bStunController, eType); + // End:0xB5 + if(int(r_eCurrentStunType) != int(0)) + { + netherStepDevice = GetDeviceById(12658); + // End:0xB5 + if(netherStepDevice != none) + { + netherStepFire = netherStepDevice.GetCurrentFire(); + // End:0xB5 + if(netherStepFire != none) + { + netherStepFire.RemoveHitSpecial(self, true); + } + } + } + //return; +} + +defaultproperties +{ + m_fAccursedArmSpeedModifier=1.0000000 + m_fDefianceAirControl=0.1200000 + m_fAirHangGravityModifier=0.2000000 + m_fJumpHoldMaxFallSpeed=185.0000000 + m_nAccursedArmActiveFX=7135 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Androxus.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Androxus.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bCanChargeInAir=true + m_bAirAccuracyPenalty=false + m_sGameplayPackage="Androxus" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Androxus.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=1.2000000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Androxus.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Androxus.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Androxus.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Androxus.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Androxus.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Androxus.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Astro.uc b/exported/TgGame/Classes/TgPawn_Astro.uc new file mode 100755 index 00000000..4beda33e --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Astro.uc @@ -0,0 +1,227 @@ +class TgPawn_Astro extends TgPawn_Character + native(ChampAstro) + config(Game) + hidecategories(Navigation); + +const DEVICE_LIGHT_SPEED = 19186; +const DEVICE_GRAVITY_LIFT = 19187; +const DEVICE_ASTRAL_MARK = 17178; +const CARD_ASTRAL_CYCLE = 0; +const CARD_STAR_SEEKER = 1; + +var TgDevice_Lightspeed m_LightSpeedDevice; +var TgDevice_AstroQ m_GravityLiftDevice; +var TgDevice_AstralMark m_AstralMarkDevice; +var TgDevice_AstralCycle m_AstralCycleCard; +var TgDevice_StarSeeker m_StarSeekerCard; +var TgPawn_Character m_AstralTarget; +var TgPawn_Character m_GravityLiftTarget; +var TgPawn_Character m_HitGravityLiftTarget; +var repnotify TgRepInfo_Player r_HitAstralTarget; +var repnotify TgRepInfo_Player r_RemoveAstralTarget; +var array m_AstralMarkTargets; +var float m_fDeadSpaceTimer; +var bool m_bDeadSpaceTimerActive; +var Rotator r_mUltimateAimRotation; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_HitAstralTarget, r_RemoveAstralTarget, + r_mUltimateAimRotation; +} + +simulated event ReplicatedEvent(name VarName) +{ + switch(VarName) + { + // End:0x2C + case 'r_HitAstralTarget': + AddAstralMarkTarget(); + // End:0x5B + break; + // End:0x45 + case 'r_RemoveAstralTarget': + RemoveAstralMarkTarget(); + // End:0x5B + break; + // End:0xFFFF + default: + super.ReplicatedEvent(VarName); + break; + } + //return; +} + +// Export UTgPawn_Astro::execHasDeviceCached(FFrame&, void* const) +native function bool HasDeviceCached(int DeviceID); + +// Export UTgPawn_Astro::execAllowBoostedJump(FFrame&, void* const) +native function bool AllowBoostedJump(); + +// Export UTgPawn_Astro::execCanKnockbackAffectAC(FFrame&, void* const) +native function bool CanKnockbackAffectAC(); + +// Export UTgPawn_Astro::execGlobalOnPlayerDied(FFrame&, void* const) +native function GlobalOnPlayerDied(TgPawn_Character Player); + +// Export UTgPawn_Astro::execOnPawnDied(FFrame&, void* const) +native function OnPawnDied(); + +// Export UTgPawn_Astro::execEffectGroupOnSetActive(FFrame&, void* const) +native function EffectGroupOnSetActive(bool bActive, bool bRemoving, TgEffectGroup EffectGroup); + +// Export UTgPawn_Astro::execGetGravityZ(FFrame&, void* const) +native function float GetGravityZ(); + +// Export UTgPawn_Astro::execShouldBeFirstPersonThisTick(FFrame&, void* const) +native function bool ShouldBeFirstPersonThisTick(); + +// Export UTgPawn_Astro::execGetAirControl(FFrame&, void* const) +native function float GetAirControl(); + +// Export UTgPawn_Astro::execAddAstralMarkTarget(FFrame&, void* const) +native function AddAstralMarkTarget(); + +// Export UTgPawn_Astro::execRemoveAstralMarkTarget(FFrame&, void* const) +native function RemoveAstralMarkTarget(); + +simulated function float GetJumpSpeedMultiplier() +{ + local TgDeviceFire pFireMode; + local TgDevice pSpaceJamCard; + + // End:0xB8 + if(HasDeviceCached(19186)) + { + // End:0xB8 + if(m_LightSpeedDevice.IsFiring()) + { + pSpaceJamCard = GetDeviceByClass(Class'TgGame.TgDevice_SpaceJam'); + // End:0xB8 + if(pSpaceJamCard != none) + { + pFireMode = pSpaceJamCard.GetCurrentFire(); + // End:0xB8 + if(pFireMode != none) + { + return pFireMode.GetCustomValue1(); + } + } + } + } + return 1.0000000; + //return ReturnValue; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x51 + case 1: + return "PC_Astro_Skin00A.Anims.AS_PC_Astro_Skin00A_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +simulated function GetCameraZoomOverride(out float fZoom, out float fZoomDuration) +{ + super.GetCameraZoomOverride(fZoom, fZoomDuration); + // End:0x5F + if(HasDeviceCached(19186)) + { + // End:0x5F + if(m_LightSpeedDevice.IsFiring()) + { + fZoom = 1.5000000; + } + } + //return; +} + +defaultproperties +{ + m_fMountZoomOverride=1.2500000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Astro.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Astro.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bUsesRecoil=true + m_sGameplayPackage="Astro" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Astro.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=0.9500000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Astro.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Astro.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Astro.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Astro.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + BaseEyeHeight=50.0000000 + EyeHeight=50.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Astro.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Astro.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Barik.uc b/exported/TgGame/Classes/TgPawn_Barik.uc new file mode 100755 index 00000000..d045d4ac --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Barik.uc @@ -0,0 +1,106 @@ +class TgPawn_Barik extends TgPawn_Character + native(ChampBarik) + config(Game) + hidecategories(Navigation); + +// Export UTgPawn_Barik::execModifyAccuracyForReticleBloom(FFrame&, void* const) +native function ModifyAccuracyForReticleBloom(out float fAccuracy); + +simulated function float GetChargeTurnRate() +{ + return 163830.0000000; + //return ReturnValue; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x4A + case 1: + return "PC_Engineer.Anims.AS_PC_Engineer_3p_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Barik.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Barik.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bCanJumpWhileCharging=true + m_sGameplayPackage="Barik" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Barik.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=0.9500000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Barik.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Barik.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Barik.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Barik.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Barik.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Barik.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_BarrierTank.uc b/exported/TgGame/Classes/TgPawn_BarrierTank.uc new file mode 100755 index 00000000..78ab4463 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_BarrierTank.uc @@ -0,0 +1,260 @@ +class TgPawn_BarrierTank extends TgPawn_Character + native(ChampBarrierTank) + config(Game) + hidecategories(Navigation); + +const IMPASSE_TOTAL_WALL_SEGMENTS = 5; + +struct native WallPlacementInfo +{ + var bool bIsValidLocation; + var Vector vSpawnLocation; + + structdefaultproperties + { + bIsValidLocation=false + vSpawnLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +var WallPlacementInfo m_WallPlacementInfos[5]; +var const Vector m_vSegmentExtent; +var const Vector m_vOpenSpotExtent; +var const float m_fWallTraceDownDistance; +var const float m_fWallOpenSpotTolerance; +var const float m_fInitialWallScaleZ; +var bool r_bInGaeBolg; +var bool m_bUseGaeBolgRetrieve; +var float m_fGaeBolgJumpZModifier; +var int r_nInhandAmmoRemaining; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && !bNetOwner || bDemoRecording) + r_bInGaeBolg; + + // Pos:0x031 + if(int(Role) == int(ROLE_Authority)) + r_nInhandAmmoRemaining; +} + +// Export UTgPawn_BarrierTank::execUpdateWallPlacementInfos(FFrame&, void* const) +native function UpdateWallPlacementInfos(Vector OriginLocation, Rotator originRotation); + +function StartGaeBolg(float fJumpZMultiplier) +{ + r_bInGaeBolg = true; + m_fGaeBolgJumpZModifier = fJumpZMultiplier; + bNetDirty = true; + //return; +} + +singular function EndGaeBolg() +{ + r_bInGaeBolg = false; + bNetDirty = true; + //return; +} + +simulated function float GetJumpSpeedMultiplier() +{ + // End:0x1A + if(r_bInGaeBolg) + { + return m_fGaeBolgJumpZModifier; + } + else + { + return 1.0000000; + } + //return ReturnValue; +} + +function bool DoJump(bool bUpdating, optional float JumpZSpeed = 0.0000000) +{ + local Vector AccelDir, HorizontalVelocity; + + // End:0x187 + if((r_bInGaeBolg && bJumpCapable) && CheckPhysicsStateForJumping()) + { + // End:0x161 + if(!IsZero(Acceleration)) + { + AccelDir = Normal2D(Acceleration); + HorizontalVelocity = Velocity; + HorizontalVelocity.Z = 0.0000000; + HorizontalVelocity += (AccelDir * GroundSpeed); + // End:0xEF + if(VSize2D(HorizontalVelocity) > GroundSpeed) + { + HorizontalVelocity = Normal2D(HorizontalVelocity) * GroundSpeed; + } + Velocity.X = HorizontalVelocity.X; + Velocity.Y = HorizontalVelocity.Y; + } + // End:0x187 + if(JumpZSpeed == 0.0000000) + { + JumpZSpeed = JumpZ; + } + } + return super.DoJump(bUpdating, JumpZSpeed); + //return ReturnValue; +} + +simulated function OnStartTimelapseNewDeviceState() +{ + local int I; + + super.OnStartTimelapseNewDeviceState(); + I = 1; + J0x15: + + // End:0xD0 [Loop If] + if(I < 33) + { + // End:0xC2 + if(c_EquipForm[I] != none) + { + // End:0xC2 + if(c_EquipForm[I].IsA('TgDeviceForm_GaeBolg')) + { + // End:0x98 + if(int(r_ReplicatedDeviceState[I]) == int(1)) + { + m_bUseGaeBolgRetrieve = true; + } + else + { + // End:0xC2 + if(int(r_ReplicatedDeviceState[I]) == int(0)) + { + m_bUseGaeBolgRetrieve = false; + } + } + } + } + I++; + // [Loop Continue] + goto J0x15; + } + //return; +} + +simulated event SetTargetingDevice(TgDevice Dev, WeaponMeshSwapStrategy SwapStrategy) +{ + local TgDevice_GeometryBarrierTank impasseDevice; + + // End:0x2B + if(c_CurrentTargetingDevice != none) + { + impasseDevice = TgDevice_GeometryBarrierTank(c_CurrentTargetingDevice); + } + super(TgPawn).SetTargetingDevice(Dev, SwapStrategy); + // End:0xB5 + if(((impasseDevice != none) && impasseDevice != c_CurrentTargetingDevice) && impasseDevice.IsInState('DeviceBuildup')) + { + impasseDevice.InterruptFiring(); + } + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x5D + case 1: + return "PC_BarrierTank_Skin00A.Anims.AS_PC_BarrierTank_Skin00A_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + m_vSegmentExtent=(X=64.0000000,Y=102.0000000,Z=224.0000000) + m_vOpenSpotExtent=(X=25.0000000,Y=25.0000000,Z=35.0000000) + m_fWallTraceDownDistance=60.0000000 + m_fWallOpenSpotTolerance=0.4000000 + m_fInitialWallScaleZ=0.0100000 + m_fMountZoomOverride=1.3000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_BarrierTank.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_BarrierTank.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="Inara" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_BarrierTank.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_BarrierTank.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_BarrierTank.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_BarrierTank.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_BarrierTank.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + BaseEyeHeight=55.0000000 + EyeHeight=55.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_BarrierTank.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_BarrierTank.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Biped.uc b/exported/TgGame/Classes/TgPawn_Biped.uc new file mode 100755 index 00000000..b23d2428 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Biped.uc @@ -0,0 +1,259 @@ +class TgPawn_Biped extends TgPawn + native(Pawns) + config(Game) + hidecategories(Navigation); + +var() name m_nmLeftFootBone; +var() name m_nmRightFootBone; +var() name m_nmLeftFootControlName; +var() name m_nmRightFootControlName; +var float m_fOldLocationZ; +var bool m_bEnableRightFootPlacement; +var bool m_bEnableLeftFootPlacement; +var bool m_bMayDisableFootIKFromAnimNodes; +var bool m_bInitializedFootIKCachedNodeList; +var bool m_bApplyLeftHandWeaponIK; +var bool m_bSetHandIKStrengthFromAnimNodes; +var bool m_bInitializedHandIKCachedNodeList; +var bool c_bPlayingRefire; +var bool c_bRefireIsUpperBody; +var const float m_fZSmoothingRate; +var float m_fMaxFootPlacementDistSquared; +var SkelControlFootPlacement m_LeftLegControl; +var SkelControlFootPlacement m_RightLegControl; +var array m_FootIKZeroStrengthAnimNodeNameList; +var array m_FootIKZeroStrengthCachedNodeList; +var Vector m_vPreviousRightFootPosition; +var Vector m_vPreviousLeftFootPosition; +var float m_fCachedRightTracedFloor; +var float m_fCachedLeftTracedFloor; +var float m_fCachedRightFloorNormalZ; +var float m_fCachedLeftFloorNormalZ; +var int m_nCachedLeftFootBoneIndex; +var int m_nCachedRightFootBoneIndex; +var name m_SkelControl_LeftHandName; +var SkelControlLimb m_SkelControl_LeftHand; +var SkelControlSingleBone m_SkelControl_LeftHandRotate; +var name m_SkelControl_RightHandName; +var SkelControlLimb m_SkelControl_RightHand; +var SkelControlSingleBone m_SkelControl_RightHandRotate; +var SkelControlSingleBone m_SkelControl_RightToLeftPropSwitch; +var array m_HandIKFullStrengthAnimNodeNameList; +var array m_HandIKZeroStrengthAnimNodeNameList; +var array m_HandIKFullStengthCachedNodeList; +var array m_HandIKZeroStrengthCachedNodeList; +var MaterialInstanceConstant m_FadeMaterialControllerBody; +var name c_RefireBeginBlendAnimationName; +var name c_RefireEndBlendAnimationName; +var AnimSet c_RefireAnimSet; +var float c_fRefireDuration; +var float c_fRefireEndDuration; + +// Export UTgPawn_Biped::execInitializeLeftHandIKAnimNodes(FFrame&, void* const) +native function bool InitializeLeftHandIKAnimNodes(SkeletalMeshComponent SkelComp); + +// Export UTgPawn_Biped::execInitializeFootIKZeroStrengthAnimNodes(FFrame&, void* const) +native function bool InitializeFootIKZeroStrengthAnimNodes(SkeletalMeshComponent SkelComp); + +// Export UTgPawn_Biped::execBeginRefire(FFrame&, void* const) +native function BeginRefire(); + +// Export UTgPawn_Biped::execEndRefire(FFrame&, void* const) +native function EndRefire(); + +// Export UTgPawn_Biped::execEndRefireTimer(FFrame&, void* const) +native function EndRefireTimer(); + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + //return; +} + +simulated function CacheMainMeshReferences(TgSkeletalMeshComponent smcomp) +{ + super.CacheMainMeshReferences(smcomp); + // End:0x1E5 + if(smcomp != none) + { + m_LeftLegControl = SkelControlFootPlacement(smcomp.FindSkelControl(m_nmLeftFootControlName)); + m_RightLegControl = SkelControlFootPlacement(smcomp.FindSkelControl(m_nmRightFootControlName)); + m_SkelControl_LeftHand = SkelControlLimb(smcomp.FindSkelControl('IKLimb_LeftHand')); + m_SkelControl_LeftHandRotate = SkelControlSingleBone(smcomp.FindSkelControl('IKSingleBone_LeftHand')); + m_SkelControl_RightHand = SkelControlLimb(smcomp.FindSkelControl('IKLimb_RightHand')); + m_SkelControl_RightHandRotate = SkelControlSingleBone(smcomp.FindSkelControl('IKSingleBone_RightHand')); + m_SkelControl_RightToLeftPropSwitch = SkelControlSingleBone(smcomp.FindSkelControl('IKPropSwap')); + InitializeLeftHandIKAnimNodes(smcomp); + InitializeFootIKZeroStrengthAnimNodes(smcomp); + } + //return; +} + +exec function zpivot(float F) +{ + Mesh.SetTranslation(Mesh.Translation + (vect(0.0000000, 0.0000000, 1.0000000) * F)); + //return; +} + +simulated event EnableFootControls(int foot, bool bDisable) +{ + // End:0x55 + if(foot == 0) + { + // End:0x3A + if(bDisable) + { + // End:0x37 + if(m_LeftLegControl != none) + { + m_bEnableLeftFootPlacement = false; + } + } + else + { + // End:0x55 + if(m_LeftLegControl != none) + { + m_bEnableLeftFootPlacement = true; + } + } + } + // End:0xAA + if(foot == 1) + { + // End:0x8F + if(bDisable) + { + // End:0x8C + if(m_RightLegControl != none) + { + m_bEnableRightFootPlacement = false; + } + } + else + { + // End:0xAA + if(m_RightLegControl != none) + { + m_bEnableRightFootPlacement = true; + } + } + } + //return; +} + +exec function SetAimTarget(float X, float Y, float Z) +{ + //return; +} + +simulated function bool CanTrackATarget() +{ + return true; + //return ReturnValue; +} + +event Landed(Vector HitNormal, Actor FloorActor) +{ + super.Landed(HitNormal, FloorActor); + //return; +} + +defaultproperties +{ + m_nmLeftFootBone="L_Foot" + m_nmRightFootBone="R_Foot" + m_nmLeftFootControlName="LeftFootControl" + m_nmRightFootControlName="RightFootControl" + m_bEnableRightFootPlacement=true + m_bEnableLeftFootPlacement=true + m_bMayDisableFootIKFromAnimNodes=true + m_bApplyLeftHandWeaponIK=true + m_bSetHandIKStrengthFromAnimNodes=true + m_fMaxFootPlacementDistSquared=56250000.0000000 + m_FootIKZeroStrengthAnimNodeNameList[0]="EmoteAnim" + m_FootIKZeroStrengthAnimNodeNameList[1]="BlendByFall" + m_nCachedLeftFootBoneIndex=-1 + m_nCachedRightFootBoneIndex=-1 + m_SkelControl_LeftHandName="LeftHandControl" + m_SkelControl_RightHandName="RightHandControl" + m_HandIKFullStrengthAnimNodeNameList[0]="IdleRange" + m_HandIKFullStrengthAnimNodeNameList[1]="MoveRange" + m_HandIKFullStrengthAnimNodeNameList[2]="Device_Fire_Range" + m_HandIKFullStrengthAnimNodeNameList[3]="Device_Fire_Range_Crouch" + m_HandIKFullStrengthAnimNodeNameList[4]="Turn" + m_HandIKFullStrengthAnimNodeNameList[5]="LowerBodyRunAnims" + m_HandIKFullStrengthAnimNodeNameList[6]="UpperBodyRunAnims" + m_HandIKFullStrengthAnimNodeNameList[7]="BlendByFall" + m_HandIKFullStrengthAnimNodeNameList[8]="Landing" + m_HandIKZeroStrengthAnimNodeNameList[0]="Device_Retrieve_Range" + m_HandIKZeroStrengthAnimNodeNameList[1]="Device_Retrieve_Range_Crouch" + m_HandIKZeroStrengthAnimNodeNameList[2]="Device_PutAway_Range" + m_HandIKZeroStrengthAnimNodeNameList[3]="Device_PutAway_Range_Crouch" + m_HandIKZeroStrengthAnimNodeNameList[4]="Device_ModeSwitch_Range" + m_HandIKZeroStrengthAnimNodeNameList[5]="Device_ModeSwitch_Range_Crouch" + m_HandIKZeroStrengthAnimNodeNameList[6]="EmoteAnim" + c_RefireBeginBlendAnimationName="Intro" + c_RefireEndBlendAnimationName="Exit" + c_fRefireEndDuration=0.3000000 + m_bAffectedByVortices=true + s_LoadMeshServerSide=false + c_bShowTargetedRing=true + c_nmInHandSocket="CSO_RHand_01" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Biped.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Biped.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Biped.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Biped.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Biped.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + GroundSpeed=289.0000000 + AccelRate=2048.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Biped.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Biped.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Blades.uc b/exported/TgGame/Classes/TgPawn_Blades.uc new file mode 100755 index 00000000..f852df43 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Blades.uc @@ -0,0 +1,629 @@ +class TgPawn_Blades extends TgPawn_Character + native(ChampBlades) + config(Game) + hidecategories(Navigation); + +const DJ_BLADES_HEAD_SKIN_ID = 19277; +const DJ_BLADES_HEAD_SKIN_LOBBY_ID = 8021; +const MAX_DJ_BLADES_FACES = 8; +const MAX_DJ_BLADES_FACE_PRIORITIES = 3; + +enum GemEmissiveAnim +{ + eGEA_None, // 0 + eGEA_Idle, // 1 + eGEA_Pounce, // 2 + eGEA_Prowl, // 3 + eGEA_AirJump, // 4 + eGEA_NineLives, // 5 + eGEA_Midnight, // 6 + eGEA_MAX // 7 +}; + +enum DjBladesFace +{ + eDBF_Base, // 0 + eDBF_VGS_Positive, // 1 + eDBF_VGS_Negative, // 2 + eDBF_VGS_Silly, // 3 + eDBF_Ability_1, // 4 + eDBF_Ability_2, // 5 + eDBF_CrowdControl, // 6 + eDBF_Death, // 7 + eDBF_MAX // 8 +}; + +enum DjBladesFacePriority +{ + eDBFP_Ability, // 0 + eDBFP_VGS, // 1 + eDBFP_Status, // 2 + eDBFP_MAX // 3 +}; + +struct native DjBladesFaceConfig +{ + var float fShiftX; + var float fShiftY; + + structdefaultproperties + { + fShiftX=0.0000000 + fShiftY=0.0000000 + } +}; + +var float m_fGravityFalloffDuration; +var float m_fGravityFalloffTimer; +var float m_fAirControlReductionDuration; +var float m_fAirControlReductionTimer; +var float m_fAirControlReductionPercent; +var repnotify bool r_bProwlActive; +var float r_fProwlAccelMultiplier; +var float r_fProwlGroundSpeedMultiplier; +var float r_fProwlJumpHeightMultiplier; +var float r_fProwlAirControlMultiplier; +var repnotify float r_fProwlFadeOutDuration; +var float m_fProwlFadeOutTimer; +var float r_fFeatherliteGravityMultiplier; +var repnotify TgPawn_Blades.GemEmissiveAnim r_eGemEmissiveAnim; +var repnotify TgPawn_Blades.GemEmissiveAnim r_eGemEmissiveEndAnim; +var TgPawn_Blades.DjBladesFace c_eCurrentDjBladesFace; +var TgPawn_Blades.DjBladesFace c_eDjBladesFace[3]; +var MaterialInstanceConstant c_pGemEmissiveMIC; +var string m_sGemEmissiveParamName; +var float m_fGemEmissiveBaseValue; +var float m_fGemEmissiveBaseAnimSpeed; +var float c_fGemEmissiveCurrentValue; +var array c_eGemEmissiveAnimType; +var array c_fGemEmissiveTargetValue; +var array c_fGemEmissiveAnimSpeed; +var array c_fGemEmissiveHoldTimer; +var float m_fGemEmissive1PBaseValue; +var float m_fGemEmissive1PAnimSpeedMult; +var float m_fGemEmissive1PValueMult; +var float m_fGemEmissiveGlobalScalar; +var float c_fDjBladesFaceTimeout[3]; +var DjBladesFaceConfig c_DjBladesFaceConfig[8]; +var string c_sDjBladesFaceXParamName; +var string c_sDjBladesFaceYParamName; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_bProwlActive, r_fFeatherliteGravityMultiplier, + r_fProwlAccelMultiplier, r_fProwlAirControlMultiplier, + r_fProwlFadeOutDuration, r_fProwlGroundSpeedMultiplier, + r_fProwlJumpHeightMultiplier; + + // Pos:0x020 + if(((int(Role) == int(ROLE_Authority)) && bNetDirty) && (!bNetOwner || bDemoRecording) || bNetTimelapse) + r_eGemEmissiveAnim, r_eGemEmissiveEndAnim; +} + +// Export UTgPawn_Blades::execGetGravityZ(FFrame&, void* const) +native function float GetGravityZ(); + +// Export UTgPawn_Blades::execGravityFallOff(FFrame&, void* const) +native function GravityFallOff(float fDuration); + +// Export UTgPawn_Blades::execAirControlReduction(FFrame&, void* const) +native function AirControlReduction(float fDuration, float fPercentReduction); + +// Export UTgPawn_Blades::execQueueBounceCustom(FFrame&, void* const) +native function QueueBounceCustom(const out Vector vBounceVelocity, float fDuration, float fPctAirControlReduction); + +// Export UTgPawn_Blades::execDeviceAdjustDamage(FFrame&, void* const) +native function DeviceAdjustDamage(out AdjustDamageParams Params, out float fDamage); + +// Export UTgPawn_Blades::execGetProwlAccelMultiplier(FFrame&, void* const) +native function float GetProwlAccelMultiplier(); + +// Export UTgPawn_Blades::execGetProwlGroundSpeedMultiplier(FFrame&, void* const) +native function float GetProwlGroundSpeedMultiplier(); + +// Export UTgPawn_Blades::execGetProwlJumpHeightMultiplier(FFrame&, void* const) +native function float GetProwlJumpHeightMultiplier(); + +// Export UTgPawn_Blades::execGetProwlAirControlMultiplier(FFrame&, void* const) +native function float GetProwlAirControlMultiplier(); + +// Export UTgPawn_Blades::execResetGemEmissiveParam(FFrame&, void* const) +native simulated function ResetGemEmissiveParam(); + +// Export UTgPawn_Blades::execClearGemEmissiveParam(FFrame&, void* const) +native simulated function ClearGemEmissiveParam(TgPawn_Blades.GemEmissiveAnim eAnim); + +// Export UTgPawn_Blades::execAnimateGemEmissiveParam(FFrame&, void* const) +native simulated function AnimateGemEmissiveParam(TgPawn_Blades.GemEmissiveAnim eAnim, float fTargetValue, float fAnimSpeed, float fHoldTime); + +// Export UTgPawn_Blades::execPawnOnKilled(FFrame&, void* const) +native function PawnOnKilled(Actor pVictim); + +// Export UTgPawn_Blades::execPawnOnAssisted(FFrame&, void* const) +native function PawnOnAssisted(Actor pVictim); + +simulated function SetGemEmissiveAnim(TgPawn_Blades.GemEmissiveAnim eAnim) +{ + // End:0x46 + if(int(Role) == int(ROLE_Authority)) + { + r_eGemEmissiveAnim = eAnim; + bNetDirty = true; + SetTimer(0.3300000, false, 'ClearGemEmissiveAnim'); + } + ApplyGemEmissveAnim(eAnim); + //return; +} + +function ClearGemEmissiveAnim() +{ + r_eGemEmissiveAnim = 0; + bNetDirty = true; + //return; +} + +simulated function SetGemEmissiveEndAnim(TgPawn_Blades.GemEmissiveAnim eEndAnim) +{ + // End:0x46 + if(int(Role) == int(ROLE_Authority)) + { + r_eGemEmissiveEndAnim = eEndAnim; + bNetDirty = true; + SetTimer(0.3300000, false, 'ClearGemEmissiveEndAnim'); + } + ClearGemEmissiveParam(eEndAnim); + //return; +} + +function ClearGemEmissiveEndAnim() +{ + r_eGemEmissiveEndAnim = 0; + bNetDirty = true; + //return; +} + +simulated function ApplyGemEmissveAnim(TgPawn_Blades.GemEmissiveAnim eAnim) +{ + switch(eAnim) + { + // End:0x25 + case 1: + ResetGemEmissiveParam(); + // End:0xFA + break; + // End:0x4F + case 2: + AnimateGemEmissiveParam(eAnim, 28.0000000, 112.0000000, 1.0000000); + // End:0xFA + break; + // End:0x79 + case 3: + AnimateGemEmissiveParam(eAnim, 14.0000000, 28.0000000, 20.0000000); + // End:0xFA + break; + // End:0xA3 + case 4: + AnimateGemEmissiveParam(eAnim, 20.0000000, 112.0000000, 0.2500000); + // End:0xFA + break; + // End:0xCD + case 5: + AnimateGemEmissiveParam(eAnim, 24.0000000, 112.0000000, 0.2500000); + // End:0xFA + break; + // End:0xF7 + case 6: + AnimateGemEmissiveParam(eAnim, 16.0000000, 28.0000000, 8.0000000); + // End:0xFA + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated event float Get1PGemEmissiveMultiplier(TgPawn_Blades.GemEmissiveAnim eAnim) +{ + // End:0x25 + if(int(eAnim) == int(3)) + { + return m_fGemEmissive1PValueMult * 0.5000000; + } + // End:0x3F + if(int(eAnim) == int(4)) + { + return 0.0000000; + } + return m_fGemEmissive1PValueMult; + //return ReturnValue; +} + +simulated event ReplicatedEvent(name VarName) +{ + switch(VarName) + { + // End:0x35 + case 'r_eGemEmissiveAnim': + ApplyGemEmissveAnim(r_eGemEmissiveAnim); + // End:0xB5 + break; + // End:0x57 + case 'r_eGemEmissiveEndAnim': + ClearGemEmissiveParam(r_eGemEmissiveEndAnim); + // End:0xB5 + break; + // End:0x63 + case 'r_bProwlActive': + // End:0xB2 + case 'r_fProwlFadeOutDuration': + // End:0xAF + if((int(Role) == int(ROLE_SimulatedProxy)) && r_fProwlFadeOutDuration > m_fProwlFadeOutTimer) + { + m_fProwlFadeOutTimer = r_fProwlFadeOutDuration; + } + // End:0xB5 + break; + // End:0xFFFF + default: + break; + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x53 + case 1: + return "PC_Blades_Skin00A.Anims.AS_PC_Blades_Skin00A_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +function bool CannotJumpNow() +{ + local TgDevice_Pounce pounce; + + pounce = TgDevice_Pounce(self.GetDeviceByEqPoint(16)); + // End:0x61 + if((pounce != none) && pounce.IsPostHitLockOutActive()) + { + return true; + } + return super.CannotJumpNow(); + //return ReturnValue; +} + +function bool DoJump(bool bUpdating, optional float JumpZSpeed = 0.0000000) +{ + local bool bJumped; + + bJumped = super.DoJump(bUpdating, JumpZSpeed); + // End:0x59 + if(bJumped && m_bAttemptingAirJump) + { + SetGemEmissiveAnim(4); + } + return bJumped; + //return ReturnValue; +} + +simulated function float GetJumpHeightMultiplier() +{ + local float fHeightIncrease; + + fHeightIncrease = super(TgPawn).GetJumpHeightMultiplier(); + fHeightIncrease *= (GetProwlJumpHeightMultiplier()); + return fHeightIncrease; + //return ReturnValue; +} + +simulated event int GetNumAirJumps() +{ + return 1; + //return ReturnValue; +} + +simulated event bool RespectsEmoteGlobalCooldown(TgPawn.EEmote Emote) +{ + switch(Emote) + { + // End:0x1D + case 13: + return false; + // End:0x2D + break; + // End:0x27 + case 31: + return false; + // End:0x2D + break; + // End:0xFFFF + default: + // End:0x2D + break; + break; + } + return super(TgPawn).RespectsEmoteGlobalCooldown(Emote); + //return ReturnValue; +} + +simulated event float GetAbilityEmoteChance(TgPawn.EEmote Emote) +{ + local float fChance; + + fChance = super(TgPawn).GetAbilityEmoteChance(Emote); + // End:0x41 + if(int(Emote) == int(13)) + { + fChance *= 1.2500000; + } + return fChance; + //return ReturnValue; +} + +simulated event float GetEmoteChance(TgPawn.EEmote Emote) +{ + local float fChance; + + fChance = super(TgPawn).GetEmoteChance(Emote); + // End:0x41 + if(int(Emote) == int(31)) + { + fChance *= 2.5000000; + } + return fChance; + //return ReturnValue; +} + +simulated event OnVGSSoundPlayed(int nVgsId) +{ + // End:0x1E + if(int(c_eCurrentAudioEmotePlaying) != int(0)) + { + OnEmoteSoundFinished(); + } + // End:0x37 + if(c_nCurrentVGSPlaying != 0) + { + OnVGSSoundFinished(); + } + super(TgPawn).OnVGSSoundPlayed(nVgsId); + // End:0x143 + if(c_nCurrentVGSPlaying != 0) + { + // End:0xBD + if((((c_nCurrentVGSPlaying == 310) || c_nCurrentVGSPlaying == 299) || c_nCurrentVGSPlaying == 296) || c_nCurrentVGSPlaying == 307) + { + SetDjBladesFace(1, 1); + } + else + { + // End:0x10C + if(((c_nCurrentVGSPlaying == 312) || c_nCurrentVGSPlaying == 302) || c_nCurrentVGSPlaying == 313) + { + SetDjBladesFace(2, 1); + } + else + { + // End:0x143 + if((c_nCurrentVGSPlaying == 308) || c_nCurrentVGSPlaying == 300) + { + SetDjBladesFace(3, 1); + } + } + } + } + //return; +} + +simulated event OnVGSSoundFinished() +{ + // End:0x1E + if(c_nCurrentVGSPlaying != 0) + { + SetDjBladesFace(0, 1); + } + super(TgPawn).OnVGSSoundFinished(); + //return; +} + +simulated event OnEmoteSoundPlayed(TgPawn.EEmote Emote) +{ + // End:0x1E + if(int(c_eCurrentAudioEmotePlaying) != int(0)) + { + OnEmoteSoundFinished(); + } + // End:0x37 + if(c_nCurrentVGSPlaying != 0) + { + OnVGSSoundFinished(); + } + super(TgPawn).OnEmoteSoundPlayed(Emote); + // End:0x99 + if(((int(c_eCurrentAudioEmotePlaying) == int(1)) || int(c_eCurrentAudioEmotePlaying) == int(2)) || int(c_eCurrentAudioEmotePlaying) == int(3)) + { + SetDjBladesFace(3, 1); + } + //return; +} + +simulated event OnEmoteSoundFinished() +{ + // End:0x23 + if(int(c_eCurrentAudioEmotePlaying) != int(0)) + { + SetDjBladesFace(0, 1); + } + super(TgPawn).OnEmoteSoundFinished(); + //return; +} + +simulated event SetDjBladesFace(TgPawn_Blades.DjBladesFace eFace, TgPawn_Blades.DjBladesFacePriority ePriority, optional float fTimeout = 0.0000000) +{ + local int nIndex; + + // End:0x1E + if(r_nHeadSkinId != 19277) + { + return; + } + nIndex = Clamp(int(ePriority), 0, 3 - 1); + // End:0xA4 + if(int(c_eDjBladesFace[nIndex]) != int(eFace)) + { + c_eDjBladesFace[nIndex] = eFace; + c_fDjBladesFaceTimeout[nIndex] = fTimeout; + UpdateDjBladesFace(); + } + //return; +} + +simulated function UpdateDjBladesFace() +{ + local int I; + local TgPawn_Blades.DjBladesFace eFace; + + // End:0x15 + if(r_nHeadSkinId != 19277) + { + return; + } + eFace = 0; + I = 3 - 1; + J0x30: + + // End:0x88 [Loop If] + if(I >= 0) + { + // End:0x7A + if(int(c_eDjBladesFace[I]) != int(0)) + { + eFace = c_eDjBladesFace[I]; + } + I--; + // [Loop Continue] + goto J0x30; + } + // End:0xB6 + if(int(c_eCurrentDjBladesFace) != int(eFace)) + { + ApplyDjBladesFace(eFace); + } + //return; +} + +// Export UTgPawn_Blades::execApplyDjBladesFace(FFrame&, void* const) +native simulated function ApplyDjBladesFace(TgPawn_Blades.DjBladesFace eFace); + +defaultproperties +{ + r_fProwlAccelMultiplier=1.0000000 + r_fFeatherliteGravityMultiplier=1.0000000 + c_eCurrentDjBladesFace=DjBladesFace.eDBF_Death + c_eDjBladesFace[2]=DjBladesFace.eDBF_Death + m_sGemEmissiveParamName="FX_GlowRamp" + m_fGemEmissiveBaseValue=4.0000000 + m_fGemEmissiveBaseAnimSpeed=20.0000000 + m_fGemEmissive1PBaseValue=-1.0000000 + m_fGemEmissive1PAnimSpeedMult=1.3500000 + m_fGemEmissive1PValueMult=0.1153000 + m_fGemEmissiveGlobalScalar=1.3000000 + c_DjBladesFaceConfig[1]=(fShiftX=0.0000000,fShiftY=0.5000000) + c_DjBladesFaceConfig[2]=(fShiftX=0.0000000,fShiftY=0.7500000) + c_DjBladesFaceConfig[3]=(fShiftX=0.5000000,fShiftY=0.0000000) + c_DjBladesFaceConfig[4]=(fShiftX=0.5000000,fShiftY=0.2500000) + c_DjBladesFaceConfig[5]=(fShiftX=0.5000000,fShiftY=0.5000000) + c_DjBladesFaceConfig[6]=(fShiftX=0.5000000,fShiftY=0.7500000) + c_DjBladesFaceConfig[7]=(fShiftX=0.0000000,fShiftY=0.2500000) + c_sDjBladesFaceXParamName="Shift X" + c_sDjBladesFaceYParamName="Shift Y" + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Blades.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Blades.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bCanChargeInAir=true + m_bAirAccuracyPenalty=false + m_sGameplayPackage="Maeve" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Blades.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=0.9500000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Blades.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Blades.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Blades.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Blades.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + JumpZ=460.0000000 + BaseEyeHeight=27.0000000 + EyeHeight=27.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Blades.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Blades.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_BombKing.uc b/exported/TgGame/Classes/TgPawn_BombKing.uc new file mode 100755 index 00000000..d222d28a --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_BombKing.uc @@ -0,0 +1,378 @@ +class TgPawn_BombKing extends TgPawn_Character + native(ChampBombKing) + config(Game) + hidecategories(Navigation); + +enum EWeaponMeshState +{ + WMS_Inhand, // 0 + WMS_Grumpy, // 1 + WMS_Poppy, // 2 + WMS_MAX // 3 +}; + +var(BouncyBomb) float m_fBounceDampingVertMin; +var(BouncyBomb) float m_fBounceDampingVertMax; +var(BouncyBomb) float m_fBounceDampingHorizMin; +var(BouncyBomb) float m_fBounceDampingHorizMax; +var bool c_bRenderKingBombMesh; +var bool m_bForced3PDuringKingBomb; +var int c_nKingBombMeshID; +var() Vector m_fKingBombCameraOffset; +var repnotify TgPawn_BombKing.EWeaponMeshState r_weaponMeshState; +var int m_nInhandID; +var int m_nGrumpyBombID; +var int m_nPoppyBombID; +var float r_fJoltKnockback; +var Class m_InhandClass; +var Class m_GrumpyBombClass; +var Class m_PoppyBombClass; + +replication +{ + // Pos:0x000 + if((bNetDirty && !bNetInitial) && !bNetOwner || bDemoRecording) + r_weaponMeshState; + + // Pos:0x03B + if(bNetDirty && int(Role) == int(ROLE_Authority)) + r_fJoltKnockback; +} + +// Export UTgPawn_BombKing::execReloadMeshAssemblies(FFrame&, void* const) +native function ReloadMeshAssemblies(); + +// Export UTgPawn_BombKing::execShouldBeFirstPersonThisTick(FFrame&, void* const) +native function bool ShouldBeFirstPersonThisTick(); + +// Export UTgPawn_BombKing::execDeviceAdjustDamage(FFrame&, void* const) +native function DeviceAdjustDamage(out AdjustDamageParams Params, out float fDamage); + +// Export UTgPawn_BombKing::execOnPawnDied(FFrame&, void* const) +native function OnPawnDied(); + +simulated function OnRespawn() +{ + super.OnRespawn(); + c_bRenderKingBombMesh = false; + m_bForced3PDuringKingBomb = false; + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + local WeaponMeshSwapStrategy SwapStrategy; + + // End:0x183 + if(VarName == 'r_weaponMeshState') + { + switch(r_weaponMeshState) + { + // End:0x9C + case 0: + // End:0x99 + if(m_WeaponMesh != none) + { + SwapStrategy.RetrieveStrategy = 1; + m_WeaponMesh.SetActiveWeapon(1, m_nInhandID, m_InhandClass, SwapStrategy); + } + // End:0x183 + break; + // End:0x10E + case 1: + // End:0x10B + if(m_WeaponMesh != none) + { + SwapStrategy.RetrieveStrategy = 1; + m_WeaponMesh.SetActiveWeapon(3, m_nGrumpyBombID, m_GrumpyBombClass, SwapStrategy); + } + // End:0x183 + break; + // End:0x180 + case 2: + // End:0x17D + if(m_WeaponMesh != none) + { + SwapStrategy.RetrieveStrategy = 1; + m_WeaponMesh.SetActiveWeapon(4, m_nPoppyBombID, m_PoppyBombClass, SwapStrategy); + } + // End:0x183 + break; + // End:0xFFFF + default: + break; + } + } + else + { + super.ReplicatedEvent(VarName); + //return; + } +} + +simulated function SwapToKingBombMesh() +{ + // End:0x2F + if(!c_bRenderKingBombMesh) + { + c_bRenderKingBombMesh = true; + ReloadMeshAssemblies(); + SwapToLiveMesh(); + } + //return; +} + +simulated function SwapFromKingBombMesh() +{ + // End:0x2D + if(c_bRenderKingBombMesh) + { + c_bRenderKingBombMesh = false; + ReloadMeshAssemblies(); + SwapToLiveMesh(); + } + //return; +} + +reliable server function SwitchToStickyBomb() +{ + r_weaponMeshState = 0; + bNetDirty = true; + //return; +} + +reliable server function SwitchToGrumpyBomb() +{ + r_weaponMeshState = 1; + bNetDirty = true; + //return; +} + +reliable server function SwitchToPoppyBomb() +{ + r_weaponMeshState = 2; + bNetDirty = true; + //return; +} + +simulated event SetTargetingDevice(TgDevice Dev, WeaponMeshSwapStrategy SwapStrategy) +{ + local TgObject.TG_EQUIP_POINT eqp; + + super(TgPawn).SetTargetingDevice(Dev, SwapStrategy); + // End:0x99 + if(int(Role) == int(ROLE_AutonomousProxy)) + { + eqp = GetEquipSlotOfDevice(Dev); + switch(eqp) + { + // End:0x72 + case 1: + SwitchToStickyBomb(); + // End:0x99 + break; + // End:0x84 + case 3: + SwitchToGrumpyBomb(); + // End:0x99 + break; + // End:0x96 + case 4: + SwitchToPoppyBomb(); + // End:0x99 + break; + // End:0xFFFF + default: + break; + } + } + else + { + //return; + } +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x4A + case 1: + return "PC_BombKing.Anims.AS_PC_BombKing_3p_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +simulated function Vector GetCameraOffsetOverride(Vector originalOffset) +{ + // End:0x17 + if(m_bForced3PDuringKingBomb) + { + return m_fKingBombCameraOffset; + } + return super(TgPawn).GetCameraOffsetOverride(originalOffset); + //return ReturnValue; +} + +simulated function PlayDyingEffects() +{ + SwapFromKingBombMesh(); + super(TgPawn).PlayDyingEffects(); + //return; +} + +simulated event PreTimeLapse(bool bPlayOfTheGame) +{ + ReloadMeshAssemblies(); + super.PreTimeLapse(bPlayOfTheGame); + //return; +} + +simulated event PostTimeLapse(bool bPlayOfTheGame) +{ + ReloadMeshAssemblies(); + super(TgPawn).PostTimeLapse(bPlayOfTheGame); + //return; +} + +simulated function SpecialHideStickyBomb(int projID, int deployID) +{ + local TgRepInfo_Game GRI; + local int I; + local TgProj_BombKingStickyBomb Proj; + local TgDevice_BombKingInhand inhandDev; + + // End:0x11 + if(projID <= 0) + { + return; + } + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x1B0 + if(GRI != none) + { + inhandDev = TgDevice_BombKingInhand(GetDeviceByEqPoint(1)); + I = 0; + J0x7A: + + // End:0x1B0 [Loop If] + if(I < GRI.m_Projectiles.Length) + { + Proj = TgProj_BombKingStickyBomb(GRI.m_Projectiles[I]); + // End:0x1A2 + if((Proj != none) && Proj.m_nClientFireRequestId == projID) + { + // End:0x15F + if(inhandDev != none) + { + inhandDev.RemovePendingConversion(Proj, deployID); + } + // End:0x1A2 + if(Proj.c_Mesh != none) + { + Proj.SpecialHideProjectile(); + } + } + ++I; + // [Loop Continue] + goto J0x7A; + } + } + //return; +} + +defaultproperties +{ + m_fBounceDampingVertMin=0.5000000 + m_fBounceDampingVertMax=1.0000000 + m_fBounceDampingHorizMin=0.4000000 + m_fBounceDampingHorizMax=0.7500000 + c_nKingBombMeshID=5861 + m_fKingBombCameraOffset=(X=-160.0000000,Y=0.0000000,Z=15.0000000) + m_nInhandID=14308 + m_nGrumpyBombID=13412 + m_nPoppyBombID=13407 + m_InhandClass=Class'TgGame.TgDevice_BombKingInhand' + m_GrumpyBombClass=Class'TgGame.TgDevice_GrumpyBomb' + m_PoppyBombClass=Class'TgGame.TgDevice_PoppyBomb' + m_fMountZoomOverride=1.3000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_BombKing.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_BombKing.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="BombKing" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_BombKing.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_BombKing.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_BombKing.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_BombKing.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_BombKing.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + m_fMountScaleOverride=0.9000000 + BaseEyeHeight=35.0000000 + EyeHeight=35.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_BombKing.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_BombKing.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Buck.uc b/exported/TgGame/Classes/TgPawn_Buck.uc new file mode 100755 index 00000000..3c7ab9d0 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Buck.uc @@ -0,0 +1,103 @@ +class TgPawn_Buck extends TgPawn_Character + native(ChampBuck) + config(Game) + hidecategories(Navigation); + +// Export UTgPawn_Buck::execModifyAccuracyForReticleBloom(FFrame&, void* const) +native function ModifyAccuracyForReticleBloom(out float fAccuracy); + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x48 + case 1: + return "PC_Warrior.Anims.AS_PC_Warrior_3p_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Buck.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Buck.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="Buck" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Buck.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=1.5000000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Buck.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Buck.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Buck.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Buck.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + r_fLeapAirControl=1.5000000 + m_fBaseLeapAirControl=1.5000000 + BaseEyeHeight=60.0000000 + EyeHeight=60.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Buck.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Buck.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Cassie.uc b/exported/TgGame/Classes/TgPawn_Cassie.uc new file mode 100755 index 00000000..b5d52843 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Cassie.uc @@ -0,0 +1,134 @@ +class TgPawn_Cassie extends TgPawn_Character + native(ChampCassie) + config(Game) + hidecategories(Navigation); + +var float r_fRadiusForBlastShotFX; +var repnotify bool r_bRollBonusActive; +var TgDevice_Scout m_CachedScoutDevice; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bRollBonusActive, r_fRadiusForBlastShotFX; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x21 + if(VarName == 'r_bRollBonusActive') + { + UpdateBonusVisualization(); + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated event UpdateBonusVisualization() +{ + // End:0x40 + if(r_bRollBonusActive) + { + FxActivateGroupWeapon3P('Cassie_BonusActive', 0); + FxActivateGroupWeapon1P('Cassie_BonusActive', 0); + } + else + { + FxDeactivateGroupWeapon3P('Cassie_BonusActive', 0); + FxDeactivateGroupWeapon1P('Cassie_BonusActive', 0); + } + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x53 + case 1: + return "PC_Cassie_Skin00A.Anims.AS_PC_Cassie_Skin00A_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + r_fRadiusForBlastShotFX=20.0000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Cassie.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Cassie.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="Cassie" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Cassie.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Cassie.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Cassie.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Cassie.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Cassie.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Cassie.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Cassie.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Character.uc b/exported/TgGame/Classes/TgPawn_Character.uc new file mode 100755 index 00000000..c613293b --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Character.uc @@ -0,0 +1,1729 @@ +class TgPawn_Character extends TgPawn_Biped + native(Pawns) + config(Game) + hidecategories(Navigation); + +const TGC_REMEMBER_PLAYER_ATTACKED_TIME = 2; +const TGC_KILL_COMBO_MAX_TIME = 5; +const TG_MAX_DISTANCE_FOR_SHARED_VISIBILITY_SQ = 2560000; +const TG_HIT_INDICATOR_POINTS_TO_INSTIGATOR = 1; +const TG_MAX_PLAYER_STUCK_BOMBS = 6; +const TG_ROLE_DAMAGE = 10601; +const TG_ROLE_FLANKER = 10541; +const TG_ROLE_FRONTLINE = 10542; +const TG_ROLE_SUPPORT = 15060; + +enum EUITargeters +{ + TARGETER_KINESSA, // 0 + TARGETER_TYRA, // 1 + TARGETER_TORVALD, // 2 + TARGETER_ORACLE, // 3 + TARGETER_ASTRO, // 4 + TARGETER_YING, // 5 + TARGETER_MAX // 6 +}; + +struct native WeaponDOF +{ + var bool IsActive; + var DOFAndBloomEffect.EDOFType DOFType; + var float Falloff; + var float BlurKernelSize; + var DOFEffect.EFocusType FocusType; + var float FocusInnerRadius; + var float FocusDistance; + var float MaxNearBlurAmount; + var float MinBlurAmount; + var float MaxFarBlurAmount; + + structdefaultproperties + { + IsActive=false + DOFType=EDOFType.DOFType_SimpleDOF + Falloff=0.0000000 + BlurKernelSize=0.0000000 + FocusType=EFocusType.FOCUS_Distance + FocusInnerRadius=0.0000000 + FocusDistance=0.0000000 + MaxNearBlurAmount=0.0000000 + MinBlurAmount=0.0000000 + MaxFarBlurAmount=0.0000000 + } +}; + +struct native ForceFaceTargetActor +{ + var Actor TargetActor; + var float HeightOffset; + var Quat InitialQuat; + var float InterpTime; + var float StartTime; + var float Duration; + var Object ForceRotationInstigator; + + structdefaultproperties + { + TargetActor=none + HeightOffset=0.0000000 + InitialQuat=(X=0.0000000,Y=0.0000000,Z=0.0000000,W=0.0000000) + InterpTime=0.0000000 + StartTime=0.0000000 + Duration=0.0000000 + ForceRotationInstigator=none + } +}; + +struct native TeleportParams +{ + var Vector vTargetLocation; + var Rotator rTargetRotation; + var bool bPlayFx; + var bool bDoBackTrace; + var Vector vBackTraceDir; + var float fBackTraceIncrement; + var float fBackTraceMaxDist; + var bool bLookForGround; + var float fGroundSearchHeight; + var float fGroundSearchRayRadius; + var bool bCheckLineOfSight; + var float fMovementCorrectionDisableTime; + var int nTeleportEnterState; + var int nTeleportExitState; + var bool bFakeTeleport; + + structdefaultproperties + { + vTargetLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + rTargetRotation=(Pitch=0,Yaw=0,Roll=0) + bPlayFx=false + bDoBackTrace=false + vBackTraceDir=(X=0.0000000,Y=0.0000000,Z=0.0000000) + fBackTraceIncrement=0.0000000 + fBackTraceMaxDist=0.0000000 + bLookForGround=false + fGroundSearchHeight=0.0000000 + fGroundSearchRayRadius=0.0000000 + bCheckLineOfSight=false + fMovementCorrectionDisableTime=0.0000000 + nTeleportEnterState=0 + nTeleportExitState=0 + bFakeTeleport=false + } +}; + +var bool c_bUpdatePlayerStatUI; +var bool m_bInHandFiring; +var bool r_bNearCapturePoint; +var bool r_bNearPayload; +var bool r_bNearSiegeMonster; +var bool r_bVisibleToEnemies; +var bool s_bAmmoReloadCheat; +var bool s_bAutomountProtection; +var bool m_bAttemptingAirJump; +var bool m_bDelayingStopSpecialJumpFx; +var bool m_bPendingBounce; +var bool s_bInitiatingJoin; +var const bool s_bReplicateInhandAmmo; +var transient float m_fLastCapturePointReclaimedTime; +var float m_fMinReclaimPointTime; +var transient float m_fInHandStartFireTime; +var transient float m_fInHandStopFireTime; +var float m_fWallDamagePercent; +var float m_fSiegeDamagePercent; +var repnotify float r_fZoomAmt; +var repnotify byte r_nCriticalHit; +var() float m_fMountZoomOverride; +var TgDeploy_BombKingStickyBomb r_StuckBombs[6]; +var int m_nCharacterRole; +var() export editinline TgCustomCharacterComponent m_CustomCharacterComponent; +var() export editinline PrimitiveComponent m_MountedCollisionComponent; +var() export editinline PrimitiveComponent m_MeshEncompassingCollisionComponent; +var array m_CachedMoveSpeedModDevices; +var int m_nAirJumps; +var(Blades) float m_fAirJumpZSpeed; +var Vector m_vBounceVelocity; +var TgPawn_Character m_JoinTargetLocal; +var TgPawn_Character m_JoinSourceLocal; +var repnotify TgPawn_Character r_JoinTarget; +var Vector r_vJoinSourceLocation; +var Vector r_vJoinTargetLocation; +var float r_fJoinTweenDuration; +var repnotify TgPawn_Character r_JoinSource; +var array m_ForceFaceActors; +var repnotify int r_nInHandCurrentAmmo; +var repnotify int r_nInHandMaxAmmo; + +replication +{ + // Pos:0x000 + if(bNetDirty) + r_JoinSource, r_JoinTarget, + r_bNearCapturePoint, r_bNearPayload, + r_bVisibleToEnemies, r_fJoinTweenDuration, + r_nInHandCurrentAmmo, r_nInHandMaxAmmo, + r_vJoinSourceLocation, r_vJoinTargetLocation; + + // Pos:0x00A + if(bNetDirty && (!bNetOwner || bDemoRecording) || bNetTimelapse) + r_fZoomAmt; + + // Pos:0x043 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_StuckBombs, r_nCriticalHit; +} + +// Export UTgPawn_Character::execApplyPawnSetup(FFrame&, void* const) +native function bool ApplyPawnSetup(); + +// Export UTgPawn_Character::execSetSpawnMana(FFrame&, void* const) +native function SetSpawnMana(); + +// Export UTgPawn_Character::execLoadDisconnectedPlayerState(FFrame&, void* const) +native function LoadDisconnectedPlayerState(); + +// Export UTgPawn_Character::execOnHealingWell(FFrame&, void* const) +native function OnHealingWell(bool bTouched); + +// Export UTgPawn_Character::execReapplyLoadoutEffects(FFrame&, void* const) +native function ReapplyLoadoutEffects(optional bool bKeepFiringMount); + +// Export UTgPawn_Character::execApplyItemEffects(FFrame&, void* const) +native function bool ApplyItemEffects(TgInventoryObject pItem, bool bRemove); + +// Export UTgPawn_Character::execApplyMonsterRewardEffects(FFrame&, void* const) +native function bool ApplyMonsterRewardEffects(TgInventoryObject pItem, bool bRemove); + +// Export UTgPawn_Character::execOnPawnDied(FFrame&, void* const) +native function OnPawnDied(); + +// Export UTgPawn_Character::execSpawnGuard(FFrame&, void* const) +native function SpawnGuard(); + +// Export UTgPawn_Character::execPlayMatchStartCue(FFrame&, void* const) +native function PlayMatchStartCue(); + +// Export UTgPawn_Character::execGlobalOnPlayerDied(FFrame&, void* const) +native function GlobalOnPlayerDied(TgPawn_Character Player); + +// Export UTgPawn_Character::execPawnOnDamaged(FFrame&, void* const) +native function PawnOnDamaged(out OnDamagedParams Params); + +// Export UTgPawn_Character::execPawnOnHealed(FFrame&, void* const) +native function PawnOnHealed(out OnHealedParams Params); + +// Export UTgPawn_Character::execPawnOnKilled(FFrame&, void* const) +native function PawnOnKilled(Actor pVictim); + +// Export UTgPawn_Character::execPawnOnAssisted(FFrame&, void* const) +native function PawnOnAssisted(Actor pVictim); + +// Export UTgPawn_Character::execPawnOnRevive(FFrame&, void* const) +native function PawnOnRevive(); + +// Export UTgPawn_Character::execPawnOnEnterCombat(FFrame&, void* const) +native function PawnOnEnterCombat(); + +// Export UTgPawn_Character::execPawnOnExitCombat(FFrame&, void* const) +native function PawnOnExitCombat(); + +// Export UTgPawn_Character::execPawnOnGetHealthNugget(FFrame&, void* const) +native function PawnOnGetHealthNugget(TgDeploy_HealthNugget nugget); + +// Export UTgPawn_Character::execPawnOnEnterCapturePoint(FFrame&, void* const) +native function PawnOnEnterCapturePoint(TgChaosCapturePoint capturePoint); + +// Export UTgPawn_Character::execPawnOnLeaveCapturePoint(FFrame&, void* const) +native function PawnOnLeaveCapturePoint(TgChaosCapturePoint capturePoint); + +// Export UTgPawn_Character::execPawnOnTeleported(FFrame&, void* const) +native function PawnOnTeleported(TgSpawnTeleporterEntrance From, TgSpawnTeleporterExit To, Vector OriginalPawnLocation); + +// Export UTgPawn_Character::execDeviceOnStartBuildup(FFrame&, void* const) +native function DeviceOnStartBuildup(TgDevice Dev); + +// Export UTgPawn_Character::execDeviceOnStopBuildup(FFrame&, void* const) +native function DeviceOnStopBuildup(TgDevice Dev, optional bool WasInterrupted = false); + +// Export UTgPawn_Character::execDeviceOnFire(FFrame&, void* const) +native function DeviceOnFire(TgDevice Dev); + +// Export UTgPawn_Character::execProjectileOnFire(FFrame&, void* const) +native function ProjectileOnFire(TgProjectile Proj); + +// Export UTgPawn_Character::execDeviceOnStartFire(FFrame&, void* const) +native function DeviceOnStartFire(TgDevice Dev); + +// Export UTgPawn_Character::execDeviceOnStopFire(FFrame&, void* const) +native function DeviceOnStopFire(TgDevice Dev, optional bool WasInterrupted = false); + +// Export UTgPawn_Character::execDeviceOnHit(FFrame&, void* const) +native function DeviceOnHit(TgDevice Dev, const out ImpactInfo Impact); + +// Export UTgPawn_Character::execDeviceOnHitSpecial(FFrame&, void* const) +native function DeviceOnHitSpecial(TgDevice Dev, const out ImpactInfo Impact, int nHitSpecialSituationalType); + +// Export UTgPawn_Character::execDeviceOnDamaged(FFrame&, void* const) +native function DeviceOnDamaged(out OnDamagedParams Params); + +// Export UTgPawn_Character::execDeviceOnHealed(FFrame&, void* const) +native function DeviceOnHealed(out OnHealedParams Params); + +// Export UTgPawn_Character::execDeviceOnKilled(FFrame&, void* const) +native function DeviceOnKilled(TgDevice Dev, const out ImpactInfo Impact, float fDamage); + +// Export UTgPawn_Character::execDeviceOnReload(FFrame&, void* const) +native function DeviceOnReload(TgDevice Dev); + +// Export UTgPawn_Character::execDeviceOnMiss(FFrame&, void* const) +native function DeviceOnMiss(TgDevice Dev); + +// Export UTgPawn_Character::execDeviceAdjustDamage(FFrame&, void* const) +native function DeviceAdjustDamage(out AdjustDamageParams Params, out float fDamage); + +// Export UTgPawn_Character::execDeviceAdjustHeal(FFrame&, void* const) +native function DeviceAdjustHeal(const out AdjustHealParams Params, out float fHeal); + +// Export UTgPawn_Character::execDropHealthNugget(FFrame&, void* const) +native function DropHealthNugget(optional Vector SpawnVelocity, optional float fHealOverride = -1.0000000, optional float fHoTOverride = -1.0000000); + +// Export UTgPawn_Character::execDropHealthNuggetTeamOnly(FFrame&, void* const) +native function DropHealthNuggetTeamOnly(int nTaskForce, optional Vector SpawnVelocity, optional float fHealOverride = -1.0000000, optional float fHoTOverride = -1.0000000); + +// Export UTgPawn_Character::execGetBaseSpeed(FFrame&, void* const) +native function float GetBaseSpeed(); + +// Export UTgPawn_Character::execOverrideDistanceFadeRange(FFrame&, void* const) +native function bool OverrideDistanceFadeRange(); + +// Export UTgPawn_Character::execGetDefaultHeadMeshId(FFrame&, void* const) +native function int GetDefaultHeadMeshId(); + +// Export UTgPawn_Character::execGetRole(FFrame&, void* const) +native function int GetRole(); + +// Export UTgPawn_Character::execTakeHealthDamage(FFrame&, void* const) +native function TakeHealthDamage(float fDamage, Controller InstigatedBy, Class DamageType, ImpactInfo Impact, ExtraDamageInfo ExtraInfo, optional Actor DamageCauser); + +// Export UTgPawn_Character::execQueueBounce(FFrame&, void* const) +native function QueueBounce(const out Vector vBounceVelocity); + +// Export UTgPawn_Character::execFindGround(FFrame&, void* const) +native function bool FindGround(const out Vector vSourceLocation, out Vector vGroundLocation, out Vector vGroundNormal, const optional float fCheckDist = 500.0000000, const optional float fCheckRadius = 0.0000000, const optional Vector vRayDir = vect(0.0000000, 0.0000000, -1.0000000)); + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x42 + if(c_LocalPC != none) + { + c_LocalPC.CheckHealthFX(1.0000000, 1.0000000); + } + //return; +} + +simulated function PrepareIntro() +{ + local TgAnimNodeBlendByIntroduction AnimNodeIterator; + + super(TgPawn).PrepareIntro(); + // End:0x41 + foreach m_AnimNodeBlendByIntroductions(AnimNodeIterator) + { + AnimNodeIterator.PrepareIntroduction(); + } + Mesh.ForceSkelUpdate(); + //return; +} + +simulated function PlayIntroAnims() +{ + local TgAnimNodeBlendByIntroduction AnimNodeIterator; + + // End:0x37 + foreach m_AnimNodeBlendByIntroductions(AnimNodeIterator) + { + AnimNodeIterator.PlayIntroduction(); + } + //return; +} + +simulated function PlaySpawnFx() +{ + super(TgPawn).PlaySpawnFx(); + PlayIntroAnims(); + PlayEmoteSelfOnly(6); + SetTimer(25.0000000, false, 'PlayAnnouncerMatchStartCue'); + //return; +} + +simulated function PlayAnnouncerMatchStartCue() +{ + // End:0x22 + if(TgPlayerController(Controller) != none) + { + PlayMatchStartCue(); + } + //return; +} + +event TakeDamage(int Damage, Controller InstigatedBy, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + local TgPawn attackerPawn, PetPawn; + local int I; + + super(TgPawn).TakeDamage(Damage, InstigatedBy, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + // End:0x197 + if(!ClassIsChildOf(DamageType, Class'TgGame.TgDamageType_AbilityCost')) + { + // End:0x197 + if(InstigatedBy != none) + { + attackerPawn = TgPawn(InstigatedBy.Pawn); + // End:0x104 + if(attackerPawn.r_Owner != none) + { + PetPawn = attackerPawn; + attackerPawn = attackerPawn.r_Owner; + } + // End:0x197 + if((attackerPawn != none) && attackerPawn.IsA('TgPawn_Character')) + { + attackerPawn.SetTimer(2.0000000, false, 'RememberPlayerAttackerExpired'); + // End:0x197 + if(PetPawn != none) + { + PetPawn.SetTimer(2.0000000, false, 'RememberPlayerAttackerExpired'); + } + } + } + } + // End:0x22F + if((InstigatedBy == Controller) && int(Role) == int(ROLE_Authority)) + { + I = 0; + J0x1CF: + + // End:0x22F [Loop If] + if(I < 6) + { + // End:0x221 + if(r_StuckBombs[I] != none) + { + r_StuckBombs[I].DetachFromPlayer(); + } + I++; + // [Loop Continue] + goto J0x1CF; + } + } + //return; +} + +function ResetKillCombo() +{ + s_nKillCombo = 0; + //return; +} + +simulated function CharacterPawnControllerSet() +{ + c_bShowDecalRing = Controller == none; + RecalculateMaterial(IsFriendlyWithLocalPawn()); + c_bUpdatePlayerStatUI = true; + //return; +} + +simulated function OnRespawn() +{ + super(TgPawn).OnRespawn(); + SpawnGuard(); + //return; +} + +simulated event bool PostPawnSetup() +{ + local bool Success; + local TgRepInfo_Game GRI; + + Success = super(TgPawn).PostPawnSetup(); + // End:0x2C + if(Success) + { + SpawnGuard(); + } + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x98 + if(GRI != none) + { + // End:0x98 + if(GRI.r_bShowHeadMesh) + { + ShowHeadMesh(); + } + } + return Success; + //return ReturnValue; +} + +simulated function ShowHeadMesh() +{ + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0x5F + if((c_nCurrentHeadMeshID == 0) && r_nHeadMeshOverride == 0) + { + c_nCurrentHeadMeshID = GetDefaultHeadMeshId(); + } + // End:0x2A1 + if((((m_HeadMesh == none) || c_nCurrentHeadMeshID != r_nHeadMeshOverride) || m_HeadMesh.ParentAnimComponent != Mesh) || m_HeadMesh.SkeletalMesh == none) + { + // End:0x11D + if(m_HeadMesh != none) + { + DetachComponent(m_HeadMesh); + m_HeadMesh.SetParentAnimComponent(none); + } + // End:0x13F + if(r_nHeadMeshOverride != 0) + { + c_nCurrentHeadMeshID = r_nHeadMeshOverride; + } + // End:0x29E + if(c_nCurrentHeadMeshID != 0) + { + m_HeadMesh = new (self) Class'TgGame.TgSkeletalMeshComponent'; + m_HeadMesh.SetLightEnvironment(LightEnvironment); + CreateMeshComponent(c_nCurrentHeadMeshID, m_HeadMesh, false); + // End:0x200 + if(m_HeadMesh.SkeletalMesh == none) + { + c_nCurrentHeadMeshID = GetDefaultHeadMeshId(); + CreateMeshComponent(c_nCurrentHeadMeshID, m_HeadMesh, false); + } + AttachComponent(m_HeadMesh); + m_HeadMesh.SetParentAnimComponent(Mesh); + m_HeadMesh.SetShadowParent(Mesh); + m_HeadSilhouetteIndex = InitializeSilhouetteComponent(m_HeadMesh); + m_HeadOverlayIndex = InitializeOverlayMeshComponent(m_HeadMesh, false); + } + } + //return; +} + +simulated function HideHeadMesh() +{ + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0xE0 + if(m_HeadMesh != none) + { + logr((("Hide Head Mesh " @ string(m_HeadMesh.Name)) @ ", ") @ string(m_HeadMesh.bAttached)); + // End:0xD5 + if(m_HeadMesh.bAttached) + { + DetachComponent(m_HeadMesh); + } + m_HeadMesh = none; + } + /* Statement decompilation error: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + + */ + + // End:0x266 + /*@Error*/ + logr((("Detaching Head Silouette " @ string(m_HeadSilhouetteIndex)) @ ", Array Length: ") @ string(m_SilhouetteInfos.Length)); + /* Statement decompilation error: Index was out of range. Must be non-negative and less than the size of the collection. +Parameter name: index + + */ + + /*@Error*/ +} + +simulated event ReceivedPropValues() +{ + // End:0x1B + if(Controller != none) + { + c_bUpdatePlayerStatUI = true; + } + //return; +} + +simulated function bool IsViewPawn() +{ + local TgPlayerController PC; + + PC = TgPlayerController(GetALocalPlayerController()); + // End:0x55 + if((PC != none) && self == PC.GetTgPawn()) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated event ReplicatedEvent(name VarName) +{ + local TgPlayerController TgPC; + local TgDeviceForm_Inhand inhandDeviceForm; + + switch(VarName) + { + // End:0x93 + case 'r_nCriticalHit': + // End:0x90 + if(!c_bJustStartedTimelapsePlayback || c_bJustEndedTimelapsePlayback) + { + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x90 + if((TgPC != none) && TgPC.GetTgPawn() == self) + { + } + } + // End:0x27A + break; + // End:0xB5 + case 'r_fZoomAmt': + SetWeaponZoom(r_fZoomAmt); + // End:0x27A + break; + // End:0xCE + case 'Controller': + CharacterPawnControllerSet(); + // End:0x27A + break; + // End:0xE7 + case 'r_CurrentPropValues': + SyncMana(); + // End:0x27A + break; + // End:0x100 + case 'r_nHeadMeshOverride': + ShowHeadMesh(); + // End:0x27A + break; + // End:0x12D + case 'r_JoinTarget': + // End:0x12A + if(int(Role) < int(ROLE_Authority)) + { + ClientJoinToTarget(); + } + // End:0x27A + break; + // End:0x15A + case 'r_JoinSource': + // End:0x157 + if(int(Role) < int(ROLE_Authority)) + { + UpdateJoinSourceLocal(); + } + // End:0x27A + break; + // End:0x20A + case 'r_nInHandCurrentAmmo': + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x20A + if((TgPC != none) && TgPC.GetTgPawn() == self) + { + TgPC.NotifyUpdatedInhandAmmoCount(r_nInHandCurrentAmmo, GetDeviceByEqPoint(1), r_EquipDeviceInfo[1].nDeviceId); + } + // End:0x277 + case 'r_nInHandMaxAmmo': + inhandDeviceForm = TgDeviceForm_Inhand(c_EquipForm[1]); + // End:0x274 + if(inhandDeviceForm != none) + { + inhandDeviceForm.OnAmmoCountUpdated(r_nInHandCurrentAmmo, r_nInHandMaxAmmo); + } + // End:0x27A + break; + // End:0xFFFF + default: + break; + } + super(TgPawn).ReplicatedEvent(VarName); + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + local TgRepInfo_Game chaosGRI; + local TgDevice inhandDevice, inhand; + local TgDeviceForm_Inhand inhandDeviceForm; + + super(TgPawn).Tick(DeltaSeconds); + // End:0x61 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && c_bUpdatePlayerStatUI) + { + UpdatePlayerStatUI(); + c_bUpdatePlayerStatUI = false; + } + // End:0x2BB + if(int(Role) == int(ROLE_Authority)) + { + chaosGRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x20C + if((((chaosGRI != none) && chaosGRI.r_LanePusher != none) && chaosGRI.r_AttackingTaskForce != none) && chaosGRI.r_LanePusher.IsAliveAndWell()) + { + // End:0x209 + if(int(chaosGRI.r_AttackingTaskForce.r_nTaskForce) == int(GetTaskForceNumber())) + { + // End:0x1F0 + if(VSizeSq(Location - chaosGRI.r_LanePusher.Location) <= Square(40.0000000 * float(16))) + { + // End:0x1ED + if(!r_bNearSiegeMonster) + { + r_bNearSiegeMonster = true; + } + } + else + { + // End:0x209 + if(r_bNearSiegeMonster) + { + r_bNearSiegeMonster = false; + } + } + } + } + else + { + // End:0x225 + if(r_bNearSiegeMonster) + { + r_bNearSiegeMonster = false; + } + } + // End:0x2BB + if(int(Role) <= int(ROLE_AutonomousProxy)) + { + inhandDevice = GetDeviceByEqPoint(1); + // End:0x2BB + if((inhandDevice != none) && inhandDevice.IsFiring()) + { + // End:0x29E + if(r_bNearCapturePoint) + { + PlayEmoteAtWorldLocation(36); + } + else + { + // End:0x2BB + if(!IsA('TgPawn_Cassie')) + { + PlayEmoteAtWorldLocation(30); + } + } + } + } + } + // End:0x2F1 + if(int(Physics) == int(1)) + { + m_nAirJumps = 0; + // End:0x2F1 + if(m_bDelayingStopSpecialJumpFx) + { + StopSpecialJumpFx(); + } + } + // End:0x46E + if(s_bReplicateInhandAmmo) + { + inhand = self.GetDeviceByEqPoint(1); + // End:0x46E + if(inhand != none) + { + // End:0x46E + if((r_nInHandCurrentAmmo != inhand.GetCurrentAmmoAmount()) || r_nInHandMaxAmmo != inhand.r_nMaxAmmoClipCount) + { + r_nInHandCurrentAmmo = inhand.GetCurrentAmmoAmount(); + r_nInHandMaxAmmo = inhand.r_nMaxAmmoClipCount; + bNetDirty = true; + // End:0x46E + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + inhandDeviceForm = TgDeviceForm_Inhand(c_EquipForm[1]); + // End:0x46E + if(inhandDeviceForm != none) + { + inhandDeviceForm.OnAmmoCountUpdated(r_nInHandCurrentAmmo, r_nInHandMaxAmmo); + } + } + } + } + } + //return; +} + +function PossessedBy(Controller C, bool bVehicleTransition) +{ + super(TgPawn).PossessedBy(C, bVehicleTransition); + NotifyTeamChanged(); + LoadDisconnectedPlayerState(); + // End:0x88 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && C.IsLocalPlayerController()) + { + CharacterPawnControllerSet(); + } + //return; +} + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + local int I, CapturePointTaskForce; + local TgRepInfo_Game GRI; + local TgCapturePoint capturePoint; + local TgPawn_Character TgPCharacter; + local bool retValue; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x221 + if((GRI != none) && GRI.m_CPRIArray.Length > 0) + { + I = 0; + J0x72: + + // End:0x221 [Loop If] + if(I < GRI.m_CPRIArray.Length) + { + capturePoint = GRI.m_CPRIArray[I].r_OwningCapturePoint; + CapturePointTaskForce = GRI.m_CPRIArray[I].r_nControlledByTaskForce; + // End:0x213 + if(((((capturePoint != none) && CapturePointTaskForce > 0) && CapturePointTaskForce != int(GetTaskForceNumber())) && VSizeSq2D(capturePoint.Location - Location) <= 2560000.0000000) && capturePoint.m_CurrentBotSpawners[CapturePointTaskForce - 1].nCurrentCount > 0) + { + capturePoint.OnNearbyEnemyPlayerDied(self); + // [Explicit Break] + goto J0x221; + } + I++; + // [Loop Continue] + goto J0x72; + } + } + J0x221: + + retValue = super(TgPawn).Died(Killer, dmgType, HitLocation); + // End:0x303 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x303 + if(r_nPhysicalType == 10034) + { + // End:0x302 + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn_Character', TgPCharacter) + { + // End:0x301 + if((TgPCharacter != none) && TgPCharacter.IsAliveAndWell()) + { + TgPCharacter.GlobalOnPlayerDied(self); + } + } + } + } + return retValue; + //return ReturnValue; +} + +simulated exec function ComposeCharacter(optional int Idx = -1, optional int MeshAsmId = -1) +{ + // End:0xBF + if((((m_CustomCharacterComponent != none) && Idx > -1) && MeshAsmId > -1) && Idx < m_CustomCharacterComponent.m_CompositeParts.Length) + { + m_CustomCharacterComponent.m_CompositeParts[Idx].MeshAsmId = MeshAsmId; + } + m_CustomCharacterComponent.ComposeCharacter(Mesh); + //return; +} + +simulated event SetMountedCollision(bool IsActive) +{ + // End:0x84 + if(m_MountedCollisionComponent != none) + { + m_MountedCollisionComponent.SetTraceBlocking(IsActive, IsActive); + m_MountedCollisionComponent.SetActorCollision(IsActive, false); + m_bCanBeHeadShot = !IsActive; + } + //return; +} + +simulated function GetCameraZoomOverride(out float fZoom, out float fZoomDuration) +{ + super(TgPawn).GetCameraZoomOverride(fZoom, fZoomDuration); + fZoomDuration = m_fZoomDurationOverride; + // End:0x53 + if(m_fZoomDistOverride != float(0)) + { + fZoom = m_fZoomDistOverride; + } + // End:0x74 + if(r_bIsMounted) + { + fZoom *= m_fMountZoomOverride; + } + //return; +} + +simulated function bool AllowRagdoll() +{ + return !TgPlayerController(GetALocalPlayerController()).AllowRagdoll(); + //return ReturnValue; +} + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgChaosCapturePoint capturePoint; + local TgPlayerController TgPC; + local KActor TouchedKActor; + + super(TgPawn).Touch(Other, OtherComp, HitLocation, HitNormal); + TouchedKActor = KActor(Other); + // End:0x78 + if(TouchedKActor != none) + { + TouchedKActor.ClientTouchEffects(); + } + capturePoint = TgChaosCapturePoint(Other); + // End:0x150 + if((capturePoint != none) && int(capturePoint.r_eStatus) == int(1)) + { + TgPC = TgPlayerController(Controller); + // End:0x150 + if((TgPC != none) && TgPC.IsTimerActive('SpawnPathfinder')) + { + TgPC.ClearTimer('SpawnPathfinder'); + } + } + //return; +} + +simulated event ForceUpdateAmmoAnim() +{ + local int I; + local TgRepInfo_Player PRI; + + PRI = GetPRI(); + // End:0x25 + if(PRI == none) + { + return; + } + // End:0x7A + if(int(Role) == int(ROLE_Authority)) + { + PRI.r_nFlashUpdateAmmo++; + PRI.bNetDirty = true; + } + I = 0; + J0x85: + + // End:0x10E [Loop If] + if(I < 33) + { + // End:0x100 + if(c_EquipForm[I] != none) + { + c_EquipForm[I].SetAmmoBlendNodesAmount(PRI.r_PlayerDeviceAmmo[I]); + } + I++; + // [Loop Continue] + goto J0x85; + } + //return; +} + +simulated function SetWeaponZoom(optional float fZoomAmt = 0.0000000) +{ + r_fZoomAmt = fZoomAmt; + bNetDirty = true; + UpdateWeaponZoomEffects(r_fZoomAmt); + //return; +} + +simulated function UpdateWeaponZoomEffects(optional float fZoomAmt = 0.0000000) +{ + local TgPlayerController TgPC; + local TgPlayerCamera Cam; + + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x8D + if((TgPC != none) && TgPC.GetTgPawn() == self) + { + Cam = TgPlayerCamera(TgPC.PlayerCamera); + } + // End:0x109 + if(fZoomAmt > 0.0000000) + { + // End:0xD7 + if(Cam != none) + { + Cam.SetFOV(fZoomAmt); + } + // End:0x106 + if(m_WeaponMesh != none) + { + m_WeaponMesh.SetFOVZoomed(true); + } + } + else + { + // End:0x137 + if(Cam != none) + { + Cam.ResetFOV(); + } + // End:0x166 + if(m_WeaponMesh != none) + { + m_WeaponMesh.SetFOVZoomed(false); + } + } + //return; +} + +simulated function StartWeaponZoomInterpolation(float fZoomAmt, float fInterpTime) +{ + local TgPlayerController TgPC; + local TgPlayerCamera Cam; + + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0xC4 + if((TgPC != none) && TgPC.GetTgPawn() == self) + { + Cam = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xC4 + if(Cam != none) + { + Cam.InterpolateFOV(fZoomAmt, fInterpTime); + } + } + //return; +} + +simulated function OnStartTimelapseNewDeviceState() +{ + local int I; + + super(TgPawn).OnStartTimelapseNewDeviceState(); + I = 1; + J0x15: + + // End:0x10C [Loop If] + if(I < 33) + { + // End:0xFE + if(c_EquipForm[I] != none) + { + // End:0xFE + if(c_EquipForm[I].IsA('TgDeviceForm_ToggleWithLockout')) + { + // End:0xB6 + if(int(r_ReplicatedDeviceState[I]) == int(1)) + { + c_EquipForm[I].Generic2(); + } + else + { + // End:0xFE + if(int(r_ReplicatedDeviceState[I]) == int(0)) + { + c_EquipForm[I].Generic1(); + } + } + } + } + I++; + // [Loop Continue] + goto J0x15; + } + //return; +} + +simulated event PreTimeLapse(bool bPlayOfTheGame) +{ + super(TgPawn).PreTimeLapse(bPlayOfTheGame); + SetWeaponZoom(r_fZoomAmt); + OnStartTimelapseNewDeviceState(); + //return; +} + +simulated event OnBecameSpectatorViewTarget() +{ + super(TgPawn).OnBecameSpectatorViewTarget(); + UpdateWeaponZoomEffects(r_fZoomAmt); + OnStartTimelapseNewDeviceState(); + //return; +} + +simulated event OnCeaseSpectatorViewTarget() +{ + super(TgPawn).OnCeaseSpectatorViewTarget(); + UpdateWeaponZoomEffects(0.0000000); + //return; +} + +event RemoveStickyBombs() +{ + local int X; + + // End:0x7F + if(int(Role) == int(ROLE_Authority)) + { + X = 0; + J0x1F: + + // End:0x7F [Loop If] + if(X < 6) + { + // End:0x71 + if(r_StuckBombs[X] != none) + { + r_StuckBombs[X].DetachFromPlayer(); + } + X++; + // [Loop Continue] + goto J0x1F; + } + } + //return; +} + +event StartAutomountProtectionTimer() +{ + local bool bInItemShop; + local TgItemShopVolume ItemShop; + + bInItemShop = false; + // End:0x58 + foreach AllActors(Class'TgGame.TgItemShopVolume', ItemShop) + { + // End:0x57 + if(ItemShop.Encompasses(self)) + { + bInItemShop = true; + // End:0x58 + break; + } + } + // End:0x87 + if(!bInItemShop) + { + s_bAutomountProtection = true; + SetTimer(5.0000000, false, 'AutomountProtectionTimer'); + } + //return; +} + +function AutomountProtectionTimer() +{ + s_bAutomountProtection = false; + //return; +} + +function bool CannotJumpNow() +{ + local bool oldIgnorePhysCheck, bCannotJump; + + oldIgnorePhysCheck = m_bIgnorePhysCheckForJump; + m_bIgnorePhysCheckForJump = CanAirJump(); + bCannotJump = super(TgPawn).CannotJumpNow(); + m_bIgnorePhysCheckForJump = oldIgnorePhysCheck; + return bCannotJump; + //return ReturnValue; +} + +function bool CheckPhysicsStateForJumping() +{ + return super(TgPawn).CheckPhysicsStateForJumping() || CanAirJump(); + //return ReturnValue; +} + +function bool CanAirJump() +{ + return ((int(Physics) == int(2)) && m_nAirJumps < (GetNumAirJumps())) && !r_bIsMounted; + //return ReturnValue; +} + +function bool DoJump(bool bUpdating, optional float JumpZSpeed = 0.0000000) +{ + local bool bJumpSuccessful, oldAllowHigherWallJumping, oldIgnorePhysCheckForJump; + local float fJumpSpeed; + + fJumpSpeed = JumpZSpeed; + oldAllowHigherWallJumping = m_bAllowHigherWallJumping; + oldIgnorePhysCheckForJump = m_bIgnorePhysCheckForJump; + // End:0xA9 + if(CanAirJump()) + { + // End:0x77 + if(m_fAirJumpZSpeed > float(0)) + { + fJumpSpeed = m_fAirJumpZSpeed; + } + m_bAllowHigherWallJumping = false; + m_bIgnorePhysCheckForJump = true; + m_bAttemptingAirJump = true; + InterruptLift(); + } + else + { + m_bAttemptingAirJump = false; + } + bJumpSuccessful = super(TgPawn).DoJump(bUpdating, fJumpSpeed); + // End:0x11A + if(bJumpSuccessful) + { + r_bIsJumping = true; + m_bIgnorePhysCheckForJump = false; + // End:0x11A + if(m_bAttemptingAirJump) + { + m_nAirJumps++; + } + } + m_bAllowHigherWallJumping = oldAllowHigherWallJumping; + m_bIgnorePhysCheckForJump = oldIgnorePhysCheckForJump; + return bJumpSuccessful; + //return ReturnValue; +} + +simulated function FlashJumpEffects() +{ + // End:0x1F + if(m_bAttemptingAirJump) + { + FlashPlaySpecialEffect(7); + } + else + { + super(TgPawn).FlashJumpEffects(); + } + //return; +} + +simulated event StopSpecialJumpFx() +{ + // End:0x2D + if(int(Physics) == int(1)) + { + m_bDelayingStopSpecialJumpFx = false; + super(TgPawn).StopSpecialJumpFx(); + } + else + { + m_bDelayingStopSpecialJumpFx = true; + } + //return; +} + +simulated event int GetNumAirJumps() +{ + return 0; + //return ReturnValue; +} + +simulated function bool CanAddForcedViewTarget() +{ + return Controller != none; + //return ReturnValue; +} + +reliable client simulated function ClientAddForcedViewTarget(Actor TargetActor, float InterpTime, float Duration, Object ForceRotationInstigator, optional float HeightOffset = 0.0000000) +{ + // End:0x69 + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + AddForcedViewTarget(TargetActor, InterpTime, Duration, ForceRotationInstigator, HeightOffset); + } + //return; +} + +simulated function AddForcedViewTarget(Actor TargetActor, float InterpTime, float Duration, Object ForceRotationInstigator, optional float HeightOffset = 0.0000000) +{ + local ForceFaceTargetActor newForcedTarget; + + // End:0x69 + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + ClientAddForcedViewTarget(TargetActor, InterpTime, Duration, ForceRotationInstigator, HeightOffset); + } + // End:0x7A + if(!CanAddForcedViewTarget()) + { + return; + } + ClearOldForcedViewTargets(); + // End:0x227 + if((TargetActor != none) && Controller != none) + { + newForcedTarget.TargetActor = TargetActor; + newForcedTarget.HeightOffset = HeightOffset; + newForcedTarget.InitialQuat = QuatFromRotator(Controller.Rotation); + newForcedTarget.InterpTime = InterpTime; + newForcedTarget.StartTime = Controller.WorldInfo.TimeSeconds; + Duration = FMax(0.0000000, Duration); + newForcedTarget.Duration = Duration; + newForcedTarget.ForceRotationInstigator = ForceRotationInstigator; + m_ForceFaceActors.AddItem(newForcedTarget); + } + //return; +} + +reliable client simulated function ClientRemoveForcedViewTarget(Object ForceRotationInstigator) +{ + // End:0x3C + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + RemoveForcedViewTarget(ForceRotationInstigator); + } + //return; +} + +simulated function RemoveForcedViewTarget(Object ForceRotationInstigator) +{ + local int I; + + // End:0x3C + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + ClientRemoveForcedViewTarget(ForceRotationInstigator); + } + I = m_ForceFaceActors.Length - 1; + J0x53: + + // End:0xB9 [Loop If] + if(I >= 0) + { + // End:0xAB + if(m_ForceFaceActors[I].ForceRotationInstigator == ForceRotationInstigator) + { + m_ForceFaceActors.Remove(I, 1); + } + --I; + // [Loop Continue] + goto J0x53; + } + //return; +} + +simulated function ClearOldForcedViewTargets() +{ + local int I; + + I = m_ForceFaceActors.Length - 1; + J0x17: + + // End:0xCF [Loop If] + if(I >= 0) + { + // End:0xC1 + if((m_ForceFaceActors[I].StartTime + m_ForceFaceActors[I].Duration) < Controller.WorldInfo.TimeSeconds) + { + m_ForceFaceActors.Remove(I, 1); + } + --I; + // [Loop Continue] + goto J0x17; + } + //return; +} + +simulated function bool HasForcedRotation() +{ + return m_ForceFaceActors.Length > 0; + //return ReturnValue; +} + +simulated event UpdateForcedRotation(float DeltaTime) +{ + local Rotator ForcedCameraRotation; + local Vector Target, toTarget; + local Quat targetQuat, newQuat; + local float fProgress; + + ClearOldForcedViewTargets(); + // End:0x2F4 + if(m_ForceFaceActors.Length > 0) + { + // End:0x2F4 + if(Controller != none) + { + Target = m_ForceFaceActors[0].TargetActor.Location; + Target.Z += m_ForceFaceActors[0].HeightOffset; + toTarget = Target - self.Location; + targetQuat = QuatFromRotator(Rotator(toTarget)); + // End:0x1FB + if(m_ForceFaceActors[0].InterpTime > 0.0000000) + { + fProgress = (Controller.WorldInfo.TimeSeconds - m_ForceFaceActors[0].StartTime) / m_ForceFaceActors[0].InterpTime; + fProgress = FClamp(fProgress, 0.0000000, 1.0000000); + fProgress = 1.0000000 - fProgress; + fProgress *= fProgress; + fProgress = 1.0000000 - fProgress; + } + else + { + fProgress = 1.0000000; + } + newQuat = QuatSlerp(m_ForceFaceActors[0].InitialQuat, targetQuat, fProgress, true); + ForcedCameraRotation = QuatToRotator(newQuat); + ForcedCameraRotation.Roll = 0; + self.SetDesiredRotation(ForcedCameraRotation); + self.FaceRotation(ForcedCameraRotation, 0.0000000); + Controller.SetRotation(ForcedCameraRotation); + } + } + //return; +} + +function bool IsJoined() +{ + return (r_JoinSource != none) || r_JoinTarget != none; + //return ReturnValue; +} + +function AbortJoin() +{ + // End:0x54 + if((r_JoinSource != none) && !r_JoinSource.s_bInitiatingJoin) + { + r_JoinSource.UnjoinFromTarget(); + } + // End:0x7E + if((r_JoinTarget != none) && !s_bInitiatingJoin) + { + UnjoinFromTarget(); + } + //return; +} + +simulated event StartPhysTween(Vector Target, float fTime, TgPawn.ETweenState tweenState, optional bool bCollideWithWorld = false, optional bool bRotateTowardsTarget = false) +{ + // End:0x37 + if((int(Role) == int(ROLE_Authority)) && IsJoined()) + { + AbortJoin(); + } + super(TgPawn).StartPhysTween(Target, fTime, tweenState, bCollideWithWorld, bRotateTowardsTarget); + //return; +} + +function JoinToTarget(TgPawn_Character Target, Vector SourceLocation, Vector TargetLocation, float TweenDuration) +{ + s_bInitiatingJoin = true; + r_JoinTarget = Target; + r_vJoinSourceLocation = SourceLocation; + r_vJoinTargetLocation = TargetLocation; + r_fJoinTweenDuration = TweenDuration; + // End:0xC7 + if(r_JoinTarget != none) + { + r_JoinTarget.r_JoinSource = self; + r_JoinTarget.bNetDirty = true; + r_JoinTarget.UpdateJoinSourceLocal(); + } + bNetDirty = true; + ClientJoinToTarget(); + s_bInitiatingJoin = false; + //return; +} + +function UnjoinFromTarget() +{ + // End:0x4E + if(r_JoinTarget != none) + { + r_JoinTarget.r_JoinSource = none; + r_JoinTarget.UpdateJoinSourceLocal(); + } + r_JoinTarget = none; + bNetDirty = true; + ClientUnjoinFromTarget(); + //return; +} + +simulated function ClientJoinToTarget() +{ + ClientUnjoinFromTarget(); + // End:0x64 + if(r_JoinTarget != none) + { + m_JoinTargetLocal = r_JoinTarget; + // End:0x5A + if(IsViewPawn()) + { + m_JoinTargetLocal.m_eForcedSilhouetteVisibility = 2; + } + TweenForJoin(); + } + //return; +} + +simulated function ClientUnjoinFromTarget() +{ + // End:0x188 + if(m_JoinTargetLocal != none) + { + // End:0x3D + if(IsViewPawn()) + { + m_JoinTargetLocal.m_eForcedSilhouetteVisibility = 0; + } + RemoveJoinForcedView(m_JoinTargetLocal, self); + RemoveJoinForcedView(self, m_JoinTargetLocal); + // End:0xF7 + if(m_JoinTargetLocal.IsAliveAndWell() && (int(m_JoinTargetLocal.Physics) == int(15)) || int(m_JoinTargetLocal.Physics) == int(13)) + { + m_JoinTargetLocal.SetPhysics(2); + } + // End:0x169 + if(self.IsAliveAndWell() && (int(self.Physics) == int(15)) || int(self.Physics) == int(13)) + { + self.SetPhysics(2); + } + m_JoinTargetLocal = none; + ClearTimer('TweenForJoinFinished'); + } + //return; +} + +simulated function TweenForJoin() +{ + // End:0xB7 + if(m_JoinTargetLocal != none) + { + m_JoinTargetLocal.StartPhysTween(r_vJoinTargetLocation, r_fJoinTweenDuration, 4, true, false); + self.StartPhysTween(r_vJoinSourceLocation, r_fJoinTweenDuration, 4, true, false); + SetTimer(r_fJoinTweenDuration + 0.0100000, false, 'TweenForJoinFinished'); + AddJoinForcedView(m_JoinTargetLocal, self); + AddJoinForcedView(self, m_JoinTargetLocal); + } + //return; +} + +simulated function TweenForJoinFinished() +{ + // End:0x81 + if(m_JoinTargetLocal != none) + { + m_JoinTargetLocal.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + m_JoinTargetLocal.Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + m_JoinTargetLocal.SetPhysics(13); + } + self.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + self.Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + self.SetPhysics(13); + //return; +} + +simulated function AddJoinForcedView(TgPawn_Character Source, TgPawn_Character Target) +{ + // End:0x5C + if((Source != none) && Target != none) + { + Source.AddForcedViewTarget(Target, r_fJoinTweenDuration, 100.0000000, self, 0.0000000); + } + //return; +} + +simulated function RemoveJoinForcedView(TgPawn_Character Source, TgPawn_Character Target) +{ + // End:0x40 + if((Source != none) && Target != none) + { + Source.RemoveForcedViewTarget(self); + } + //return; +} + +simulated function UpdateJoinSourceLocal() +{ + // End:0x80 + if(IsViewPawn()) + { + // End:0x3D + if(m_JoinSourceLocal != none) + { + m_JoinSourceLocal.m_eForcedSilhouetteVisibility = 0; + } + m_JoinSourceLocal = r_JoinSource; + // End:0x80 + if(m_JoinSourceLocal != none) + { + m_JoinSourceLocal.m_eForcedSilhouetteVisibility = 2; + } + } + //return; +} + +simulated event bool AdvancedTeleport(const out TeleportParams Params, optional out Vector vTeleportLocation, optional bool bFakeTeleport = false) +{ + local Vector vTargetLocation, vGroundLocation, vGroundNormal, vLosSourceLocation, vTemp; + + local float fBackTraceCurrentDist, fTemp; + local bool bValidLocation; + + fBackTraceCurrentDist = 0.0000000; + J0x15: + + bValidLocation = true; + // End:0x93 + if(Params.bDoBackTrace) + { + vTargetLocation = Params.vTargetLocation + (Params.vBackTraceDir * fBackTraceCurrentDist); + } + else + { + vTargetLocation = Params.vTargetLocation; + } + // End:0x18D + if(Params.bLookForGround) + { + vTemp = vTargetLocation + (vect(0.0000000, 0.0000000, 1.0000000) * Params.fGroundSearchHeight); + // End:0x18D + if(FindGround(vTemp, vGroundLocation, vGroundNormal, Params.fGroundSearchHeight, Params.fGroundSearchRayRadius)) + { + vTargetLocation = vGroundLocation; + } + } + // End:0x27A + if(Params.bCheckLineOfSight) + { + vTemp = self.Location - vTargetLocation; + vTemp.Z = 0.0000000; + fTemp = VSize(vTemp); + vTemp = Normal(vTemp); + vLosSourceLocation = vTargetLocation + (vTemp * fTemp); + // End:0x27A + if(!TeleportTraceCheck(vTargetLocation, vLosSourceLocation)) + { + bValidLocation = false; + } + } + // End:0x383 + if(bValidLocation && Teleport(vTargetLocation, Params.rTargetRotation, Params.bPlayFx, Params.nTeleportEnterState, Params.nTeleportExitState, true, vTeleportLocation, bFakeTeleport)) + { + // End:0x381 + if(!bFakeTeleport && Params.fMovementCorrectionDisableTime > 0.0000000) + { + DisableMovementCorrection(Params.fMovementCorrectionDisableTime); + } + return true; + } + fBackTraceCurrentDist += Params.fBackTraceIncrement; + // End:0x15 + if(!(!Params.bDoBackTrace || fBackTraceCurrentDist >= Params.fBackTraceMaxDist)) + goto J0x15; + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_fMinReclaimPointTime=10.0000000 + m_fMountZoomOverride=1.0000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + begin object name="CustomCharacterInfo" class=TgGame.TgCustomCharacterComponent + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + begin object name="MountedCollision" class=Engine.CylinderComponent + CollisionHeight=70.0000000 + CollisionRadius=35.0000000 + ReplacementPrimitive=none + BlockZeroExtent=false + BlockNonZeroExtent=false + Translation=(X=0.0000000,Y=0.0000000,Z=24.0000000) + end object + m_MountedCollisionComponent=MountedCollision + m_fAirJumpZSpeed=600.0000000 + m_HitReactionType=EHitReactionType.HIT_Reaction_Procedural + c_bUpdatesWeaponMesh=true + c_bUpdateSkelMeshWhenNotRendered=true + c_bShowDecalRing=true + m_bOverlaysEnabled=true + m_bUseSilhouettes=true + m_bAcceptsHitReactions=true + m_bUpdateEyeHeight=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Biped.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + FireLocationOffsets[1]=(X=0.0000000,Y=0.0000000,Z=55.0000000) + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Biped.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Biped.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Biped.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Biped.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + m_fHUDOverlayMorphMountedZOffset=25.0000000 + bDirectHitWall=true + PeripheralVision=0.5000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Biped.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + InventoryManagerClass=Class'TgGame.TgInventoryManager_Player' + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Biped.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + bAlwaysRelevant=true + bIgnoreBaseRotation=true + CollisionComponent=CollisionCylinder + RotationRate=(Pitch=0,Yaw=80000,Roll=2048) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Darklord.uc b/exported/TgGame/Classes/TgPawn_Darklord.uc new file mode 100755 index 00000000..dd3038cd --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Darklord.uc @@ -0,0 +1,192 @@ +class TgPawn_Darklord extends TgPawn_Character + native(ChampDarklord) + config(Game) + hidecategories(Navigation); + +var bool m_bUseWhirlZoom; + +// Export UTgPawn_Darklord::execDeviceAdjustDamage(FFrame&, void* const) +native function DeviceAdjustDamage(out AdjustDamageParams Params, out float fDamage); + +simulated function AddJoinForcedView(TgPawn_Character Source, TgPawn_Character Target) +{ + // End:0x71 + if((Source != none) && Target != none) + { + Source.AddForcedViewTarget(Target, Class'TgGame.TgDevice_Spite'.default.m_fJoinViewLerpTime, 10.0000000, self, 0.0000000); + } + //return; +} + +simulated function RemoveJoinForcedView(TgPawn_Character Source, TgPawn_Character Target) +{ + // End:0x74 + if((Source != none) && Target != none) + { + Source.RemoveForcedViewTarget(self); + Source.AddForcedViewTarget(Target, 0.2000000, 0.2000000, self); + } + //return; +} + +function TgPawn.EEmote GetDeviceEmoteType(TgDevice Dev) +{ + // End:0x4A + if(Dev != none) + { + switch(Dev.r_eEquippedAt) + { + // End:0x3F + case 16: + return 0; + // End:0x47 + case 18: + return 13; + // End:0xFFFF + default: + break; + } + } + else + { + return super(TgPawn).GetDeviceEmoteType(Dev); + //return ReturnValue; + } +} + +simulated function OnDeviceFormStartFire(int nEquipSlot, float FireDuration, int nFireMode, optional int nAmmoRemaining) +{ + local TgDeviceForm form; + + form = c_EquipForm[nEquipSlot]; + // End:0xAA + if(form != none) + { + switch(nEquipSlot) + { + // End:0xA7 + case 1: + SetRTPCValue('DarklordInhandFireModeIndex', float(nFireMode)); + // End:0xA4 + if(m_WeaponMesh != none) + { + m_WeaponMesh.SetRTPCValue('DarklordInhandFireModeIndex', float(nFireMode)); + } + // End:0xAA + break; + // End:0xFFFF + default: + break; + } + } + else + { + super(TgPawn).OnDeviceFormStartFire(nEquipSlot, FireDuration, nFireMode, nAmmoRemaining); + //return; + } +} + +simulated function GetCameraZoomOverride(out float fZoom, out float fZoomDuration) +{ + super.GetCameraZoomOverride(fZoom, fZoomDuration); + // End:0x38 + if(m_bUseWhirlZoom) + { + fZoomDuration = 0.0500000; + } + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x57 + case 1: + return "PC_Darklord_Skin00A.Anims.AS_PC_DarkLord_Skin00A_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + s_bReplicateInhandAmmo=true + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Darklord.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Darklord.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bCanChargeInAir=true + m_bShouldApplyCCImmuneOverlay=false + m_sGameplayPackage="Darklord" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Darklord.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Darklord.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Darklord.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Darklord.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Darklord.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Darklord.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Darklord.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Demon.uc b/exported/TgGame/Classes/TgPawn_Demon.uc new file mode 100755 index 00000000..d41f16ed --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Demon.uc @@ -0,0 +1,173 @@ +class TgPawn_Demon extends TgPawn_Character + native(ChampDemon) + config(Game) + hidecategories(Navigation); + +var() WeaponDOF m_CurrentDOFSettings; +var bool r_bIsUltActive; +var bool r_bIsUltTargeting; +var bool m_bUseTelepunchZoom; +var bool m_bTelepunchTargetLocked; +var TgPawn_Character m_TelepunchTarget; + +replication +{ + // Pos:0x000 + if(bNetDirty) + r_bIsUltActive, r_bIsUltTargeting; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + return ""; + //return ReturnValue; +} + +// Export UTgPawn_Demon::execDeviceOnStartFire(FFrame&, void* const) +native function DeviceOnStartFire(TgDevice Dev); + +simulated function GetCameraZoomOverride(out float fZoom, out float fZoomDuration) +{ + super.GetCameraZoomOverride(fZoom, fZoomDuration); + // End:0x38 + if(m_bUseTelepunchZoom) + { + fZoomDuration = 0.0500000; + } + //return; +} + +reliable server event ServerNotifyTelepunchTarget(TgPawn_Character pTarget) +{ + m_TelepunchTarget = pTarget; + //return; +} + +function OnUltStarted() +{ + r_bIsUltActive = true; + bNetDirty = true; + PauseDeviceTimers(true); + //return; +} + +reliable client simulated function ClientOnUltStarted() +{ + PauseDeviceTimers(true); + //return; +} + +function OnUltFinished() +{ + r_bIsUltActive = false; + bNetDirty = true; + PauseDeviceTimers(false); + //return; +} + +reliable client simulated function ClientOnUltFinished() +{ + PauseDeviceTimers(false); + //return; +} + +simulated function PauseDeviceTimers(bool bPaused) +{ + local TgDevice Device; + + Device = GetDeviceByEqPoint(3); + // End:0x86 + if((Device != none) && Device.IsTimerActive('FirePostHitDelay')) + { + Device.PauseTimer(bPaused, 'FirePostHitDelay'); + } + Device = GetDeviceByEqPoint(4); + // End:0x10C + if((Device != none) && Device.IsTimerActive('FirePostHitDelay')) + { + Device.PauseTimer(bPaused, 'FirePostHitDelay'); + } + //return; +} + +defaultproperties +{ + m_CurrentDOFSettings=(IsActive=false,DOFType=EDOFType.DOFType_SimpleDOF,Falloff=1.0000000,BlurKernelSize=3.0000000,FocusType=EFocusType.FOCUS_Distance,FocusInnerRadius=15.0000000,FocusDistance=60.0000000,MaxNearBlurAmount=1.0000000,MinBlurAmount=1.0000000,MaxFarBlurAmount=0.3300000) + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Demon.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Demon.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bCanChargeInAir=true + m_bUsesRecoil=true + m_sGameplayPackage="Demon" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Demon.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=0.9500000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Demon.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Demon.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Demon.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Demon.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + BaseEyeHeight=50.0000000 + EyeHeight=50.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Demon.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Demon.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Drogoz.uc b/exported/TgGame/Classes/TgPawn_Drogoz.uc new file mode 100755 index 00000000..38b58afb --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Drogoz.uc @@ -0,0 +1,228 @@ +class TgPawn_Drogoz extends TgPawn_Character + native(ChampDrogoz) + config(Game) + hidecategories(Navigation); + +var bool m_bIsInBooster; +var bool m_bThrusterIsBlocking; +var bool m_bDragonSlamIsBlocking; +var bool m_bDragonSlamHasHit; +var bool m_bUseDragonSlamRetrieve; +var bool m_bInBoosterLockout; +var bool r_bSalvoActiveFlag; +var bool r_bCombustibleActive; +var(DrogozBooster) bool m_bBoosterUseConstantSpeedReduction; +var float m_fBoosterEndTime; +var TgDevice m_CachedBoosterDevice; +var float m_fBoosterLockoutTime; +var float m_fBoosterKnockbackLockoutTime; +var float m_fBoosterKnockbackLockoutTimestamp; +var int r_nInhandAmmoRemaining; +var(DrogozBooster) float m_fBoosterSpeedReductionRate; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bCombustibleActive, r_bSalvoActiveFlag, + r_nInhandAmmoRemaining; +} + +// Export UTgPawn_Drogoz::execDeviceOnStartBuildup(FFrame&, void* const) +native function DeviceOnStartBuildup(TgDevice Dev); + +// Export UTgPawn_Drogoz::execShouldBeFirstPersonThisTick(FFrame&, void* const) +native function bool ShouldBeFirstPersonThisTick(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x21 + if(VarName == 'r_bIsKnockedBack') + { + StartKnockbackLockout(); + } + super.ReplicatedEvent(VarName); + //return; +} + +event Knock(bool bKnocked, optional float fKnockbackFrictionOverride = -1.0000000, optional Vector vKnockbackVelocityOverride = vect(0.0000000, 0.0000000, 0.0000000)) +{ + super(TgPawn).Knock(bKnocked, fKnockbackFrictionOverride, vKnockbackVelocityOverride); + // End:0x57 + if(bKnocked) + { + StartKnockbackLockout(); + } + //return; +} + +simulated function StartKnockbackLockout() +{ + m_fBoosterKnockbackLockoutTimestamp = WorldInfo.TimeSeconds + m_fBoosterKnockbackLockoutTime; + //return; +} + +simulated event bool RespectsEmoteGlobalCooldown(TgPawn.EEmote Emote) +{ + switch(Emote) + { + // End:0x1D + case 13: + return false; + // End:0x23 + break; + // End:0xFFFF + default: + // End:0x23 + break; + break; + } + return super(TgPawn).RespectsEmoteGlobalCooldown(Emote); + //return ReturnValue; +} + +simulated event bool CanFlyWithoutHover() +{ + return m_bIsInBooster; + //return ReturnValue; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x46 + case 1: + return "PC_Drogoz.Anims.AS_PC_Drogoz_3p_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +simulated function OnStartTimelapseNewDeviceState() +{ + local int I; + + super.OnStartTimelapseNewDeviceState(); + I = 1; + J0x15: + + // End:0xD0 [Loop If] + if(I < 33) + { + // End:0xC2 + if(c_EquipForm[I] != none) + { + // End:0xC2 + if(c_EquipForm[I].IsA('TgDeviceForm_DragonSlam')) + { + // End:0x98 + if(int(r_ReplicatedDeviceState[I]) == int(1)) + { + m_bUseDragonSlamRetrieve = true; + } + else + { + // End:0xC2 + if(int(r_ReplicatedDeviceState[I]) == int(0)) + { + m_bUseDragonSlamRetrieve = false; + } + } + } + } + I++; + // [Loop Continue] + goto J0x15; + } + //return; +} + +defaultproperties +{ + m_fBoosterEndTime=0.5000000 + m_fBoosterLockoutTime=0.5000000 + m_fBoosterKnockbackLockoutTime=1.0000000 + m_fBoosterSpeedReductionRate=1.0000000 + m_fMountZoomOverride=1.1000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Drogoz.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Drogoz.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bCanChargeInAir=true + m_bEndChargeInFalling=true + m_bAirAccuracyPenalty=false + m_sGameplayPackage="Drogoz" + m_EmoteChancesAbility=(fAbility1=1.0000000,fAbility2=-1.0000000) + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Drogoz.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Drogoz.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Drogoz.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Drogoz.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Drogoz.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + m_fMountScaleOverride=0.9000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Drogoz.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Drogoz.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Evie.uc b/exported/TgGame/Classes/TgPawn_Evie.uc new file mode 100755 index 00000000..f6bc650c --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Evie.uc @@ -0,0 +1,141 @@ +class TgPawn_Evie extends TgPawn_Character + native(ChampEvie) + config(Game) + hidecategories(Navigation); + +simulated event KillAllOwnedPets() +{ + local TgDevice blinkDevice; + + super(TgPawn).KillAllOwnedPets(); + ClearBlink(); + // End:0x6F + if(int(Role) == int(ROLE_Authority)) + { + blinkDevice = GetDeviceById(10315); + // End:0x6F + if(blinkDevice != none) + { + blinkDevice.EndCooldown(); + } + } + //return; +} + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + ClearBlink(); + return super.Died(Killer, dmgType, HitLocation); + //return ReturnValue; +} + +function ClearBlink() +{ + local TgDevice_Blink blinkDevice; + + // End:0x64 + if(int(Role) == int(ROLE_Authority)) + { + blinkDevice = TgDevice_Blink(GetDeviceById(10315)); + // End:0x64 + if(blinkDevice != none) + { + blinkDevice.RequireHardReset(); + } + } + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x42 + case 1: + return "PC_Mage.Anims.AS_PC_Mage_3p_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Evie.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Evie.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="Evie" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Evie.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=0.9000000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Evie.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Evie.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Evie.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Evie.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + BaseEyeHeight=30.0000000 + EyeHeight=30.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Evie.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Evie.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Fairy.uc b/exported/TgGame/Classes/TgPawn_Fairy.uc new file mode 100755 index 00000000..43c2547e --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Fairy.uc @@ -0,0 +1,126 @@ +class TgPawn_Fairy extends TgPawn_Character + native(ChampFairy) + config(Game) + hidecategories(Navigation); + +var float m_fFairyFlySpeedModifier; +var(Fairy) float m_fFlightAccelerationPerSecond; +var(Fairy) float m_fFlightDecelerationPerSecond; +var(Fairy) float m_fFlightMaxRiseSpeed; +var(Fairy) float m_fAscentDecelerationPerSecond; +var(Fairy) float m_fFaeFlightFriction; +var float m_fPreviousAscentVelocity; +var TgDevice_Flutter m_CachedFlutterDevice; +var TgDevice_FaeFlight m_CachedFaeFlightDevice; + +// Export UTgPawn_Fairy::execHasFlutterDevice(FFrame&, void* const) +native function bool HasFlutterDevice(); + +// Export UTgPawn_Fairy::execHasFaeFlightDevice(FFrame&, void* const) +native function bool HasFaeFlightDevice(); + +// Export UTgPawn_Fairy::execGetChargeDirection(FFrame&, void* const) +native function Vector GetChargeDirection(); + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x51 + case 1: + return "PC_Fairy_Skin00A.Anims.AS_PC_Fairy_Skin00A_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + m_fFairyFlySpeedModifier=1.0000000 + m_fFlightAccelerationPerSecond=2000.0000000 + m_fFlightDecelerationPerSecond=1500.0000000 + m_fFlightMaxRiseSpeed=500.0000000 + m_fFaeFlightFriction=1.0000000 + m_fMountZoomOverride=1.1000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Fairy.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Fairy.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bCanChargeInAir=true + m_bEndChargeInFalling=true + m_bAirAccuracyPenalty=false + m_sGameplayPackage="Willo" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Fairy.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=0.9000000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Fairy.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Fairy.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Fairy.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Fairy.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + BaseEyeHeight=30.0000000 + EyeHeight=30.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Fairy.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Fairy.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Fernando.uc b/exported/TgGame/Classes/TgPawn_Fernando.uc new file mode 100755 index 00000000..7eba6478 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Fernando.uc @@ -0,0 +1,322 @@ +class TgPawn_Fernando extends TgPawn_Character + native(ChampFernando) + config(Game) + hidecategories(Navigation); + +const ACTIVE_SHIELD_MASK = 1; +const TOWERING_BARRIER_MASK = 2; +const GENERAL_DEFENSIVE_MASK = 4; + +var repnotify int r_ShieldDisplayType; +var bool c_bShowingShield; + +replication +{ + // Pos:0x000 + if(bNetDirty) + r_ShieldDisplayType; +} + +// Export UTgPawn_Fernando::execSpecialAOEImmunity(FFrame&, void* const) +native function bool SpecialAOEImmunity(Vector AOECenter, TgDeviceFire instigatingFiremode); + +event ShowShield() +{ + local TgDevice ShieldDevice; + local TgDeploy_ShieldFernando ShieldDeployable; + local bool bHasToweringBarrier, bHasDefensiveShieldCard; + + // End:0x147 + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + ShieldDevice = GetDeviceByClass(Class'TgGame.TgDevice_ShieldFernando'); + // End:0x144 + if(ShieldDevice != none) + { + ShieldDeployable = TgDeploy_ShieldFernando(ShieldDevice.r_Deployable); + // End:0x144 + if(ShieldDeployable != none) + { + bHasToweringBarrier = ShieldDeployable.r_nToweringBarrierHealth > 0; + bHasDefensiveShieldCard = ShieldDeployable.r_nAegisBonusHealth > 0; + r_ShieldDisplayType = 0; + // End:0x112 + if(bHasDefensiveShieldCard) + { + r_ShieldDisplayType += 4; + } + // End:0x12C + if(bHasToweringBarrier) + { + r_ShieldDisplayType += 2; + } + r_ShieldDisplayType += 1; + bNetDirty = true; + } + } + } + else + { + // End:0x2A0 + if(int(Role) == int(ROLE_Authority)) + { + ShieldDevice = GetDeviceByClass(Class'TgGame.TgDevice_ShieldFernando'); + // End:0x2A0 + if(ShieldDevice != none) + { + ShieldDeployable = TgDeploy_ShieldFernando(ShieldDevice.r_Deployable); + // End:0x2A0 + if(ShieldDeployable != none) + { + bHasToweringBarrier = ShieldDeployable.r_nToweringBarrierHealth > 0; + bHasDefensiveShieldCard = ShieldDeployable.r_nAegisBonusHealth > 0; + r_ShieldDisplayType = 0; + // End:0x244 + if(bHasDefensiveShieldCard) + { + r_ShieldDisplayType += 4; + } + // End:0x25E + if(bHasToweringBarrier) + { + r_ShieldDisplayType += 2; + } + r_ShieldDisplayType += 1; + bNetDirty = true; + // End:0x296 + if((r_ShieldDisplayType & 2) > 0) + { + PlayLargeShieldFX(); + } + else + { + PlayShieldFX(); + } + } + } + } + } + //return; +} + +event HideShield() +{ + // End:0x43 + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + r_ShieldDisplayType = 0; + bNetDirty = true; + } + else + { + // End:0x61 + if(int(Role) == int(ROLE_Authority)) + { + StopShieldFX(); + } + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + super.ReplicatedEvent(VarName); + switch(VarName) + { + // End:0x7E + case 'r_ShieldDisplayType': + // End:0x71 + if((r_ShieldDisplayType & 1) > 0) + { + // End:0x64 + if((r_ShieldDisplayType & 2) > 0) + { + PlayLargeShieldFX(); + } + else + { + PlayShieldFX(); + } + } + else + { + StopShieldFX(); + } + // End:0x81 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated function PlayShieldFX() +{ + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0x42 + if(c_bShowingShield) + { + StopShieldFX(); + } + // End:0xCC + if(!c_bShowingShield) + { + FxDeactivateGroupSelf('Shield_Despawn', 0); + FxActivateGroupSelf('Generic2', 0); + // End:0xC0 + if((r_ShieldDisplayType & 4) > 0) + { + FxDeactivateGroupSelf('Generic2', 0); + FxActivateGroupSelf('FernandoAegis', 0); + } + c_bShowingShield = true; + } + //return; +} + +simulated function PlayLargeShieldFX() +{ + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0x42 + if(c_bShowingShield) + { + StopShieldFX(); + } + // End:0xCC + if(!c_bShowingShield) + { + FxDeactivateGroupSelf('Shield_Despawn', 0); + FxActivateGroupSelf('Generic3', 0); + // End:0xC0 + if((r_ShieldDisplayType & 4) > 0) + { + FxDeactivateGroupSelf('Generic3', 0); + FxActivateGroupSelf('Generic4', 0); + } + c_bShowingShield = true; + } + //return; +} + +simulated function StopShieldFX() +{ + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0xB4 + if(c_bShowingShield) + { + FxActivateGroupSelf('Shield_Despawn', 0); + FxDeactivateGroupSelf('Generic2', 0); + FxDeactivateGroupSelf('Generic3', 0); + FxDeactivateGroupSelf('Generic4', 0); + FxDeactivateGroupSelf('FernandoAegis', 0); + c_bShowingShield = false; + } + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x46 + case 1: + return "PC_Knight.Anims.AS_PC_Knight_3p_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Fernando.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Fernando.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="Fernando" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Fernando.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=1.2500000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Fernando.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Fernando.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Fernando.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Fernando.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + BaseEyeHeight=60.0000000 + EyeHeight=60.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Fernando.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Fernando.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Flak.uc b/exported/TgGame/Classes/TgPawn_Flak.uc new file mode 100755 index 00000000..3d69bbff --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Flak.uc @@ -0,0 +1,190 @@ +class TgPawn_Flak extends TgPawn_Character + native(ChampFlak) + config(Game) + hidecategories(Navigation); + +var TgDevice_KineticBurst m_CachedKineticBurstDevice; +var TgDevice_SiegeUnit m_CachedSiegeUnitDevice; +var TgDevice_AssertDominance m_CachedUltimateDevice; +var TgDevice_ShoulderBash m_CachedShoulderBashDevice; +var TgSpecialFx m_WepIdleSound; +var float m_PreviousZHeight; +var float m_GravityMultiplier; +var bool m_bUseShoulderBashRetrieve; +var bool m_bUseShoulderBashZoom; + +// Export UTgPawn_Flak::execStartZTracking(FFrame&, void* const) +native function StartZTracking(); + +// Export UTgPawn_Flak::execMaxOutGravity(FFrame&, void* const) +native function MaxOutGravity(); + +// Export UTgPawn_Flak::execGetGravityZ(FFrame&, void* const) +native function float GetGravityZ(); + +// Export UTgPawn_Flak::execSpawnFlagDeployable(FFrame&, void* const) +native function SpawnFlagDeployable(); + +// Export UTgPawn_Flak::execResetGravTimers(FFrame&, void* const) +native function ResetGravTimers(); + +// Export UTgPawn_Flak::execDeployableOnDestroyed(FFrame&, void* const) +native function DeployableOnDestroyed(TgDeployable dep); + +// Export UTgPawn_Flak::execHasCachedKineticBurstDevice(FFrame&, void* const) +native function bool HasCachedKineticBurstDevice(); + +function RampUpTimer() +{ + //return; +} + +function RampDownTimer() +{ + //return; +} + +simulated function OnRespawn() +{ + super.OnRespawn(); + ResetInhandFiremode(); + //return; +} + +simulated function OnLiveRespawn() +{ + super(TgPawn).OnLiveRespawn(); + ResetInhandFiremode(); + //return; +} + +simulated function ResetInhandFiremode() +{ + local TgDevice_FlakInhand pFlakInhand; + local TgDeviceForm_KineticBurst pDeviceForm; + + pFlakInhand = TgDevice_FlakInhand(GetCurrentInhandDevice()); + // End:0x4D + if(pFlakInhand != none) + { + pFlakInhand.SetFireMode(0, true); + } + // End:0x104 + if((HasCachedKineticBurstDevice()) == true) + { + pDeviceForm = TgDeviceForm_KineticBurst(m_CachedKineticBurstDevice.c_DeviceForm); + // End:0x104 + if(pDeviceForm != none) + { + // End:0x104 + if(pDeviceForm.HasCachedMIC() == true) + { + pDeviceForm.GlowMIC.SetScalarParameterValue('FX_GlowRamp', 0.1000000); + } + } + } + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x4F + case 1: + return "PC_Flak_Skin00A.Anims.AS_PC_Flak_Skin00A_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +simulated function GetCameraZoomOverride(out float fZoom, out float fZoomDuration) +{ + super.GetCameraZoomOverride(fZoom, fZoomDuration); + // End:0x38 + if(m_bUseShoulderBashZoom) + { + fZoomDuration = 0.0500000; + } + //return; +} + +defaultproperties +{ + m_GravityMultiplier=1.0000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Flak.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Flak.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="Flak" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Flak.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Flak.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Flak.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Flak.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Flak.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Flak.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Flak.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Gauntlet.uc b/exported/TgGame/Classes/TgPawn_Gauntlet.uc new file mode 100755 index 00000000..c43880ee --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Gauntlet.uc @@ -0,0 +1,137 @@ +class TgPawn_Gauntlet extends TgPawn_Character + native(ChampGauntlet) + config(Game) + hidecategories(Navigation); + +var Actor r_InhandTarget; +var Vector r_InhandHitOffset; +var Vector c_InterpInhandHitOffset; +var float c_fInhandHitOffsetInterpSpeed; +var Actor r_RechargeTarget; +var Vector r_RechargeHitOffset; +var Vector c_InterpRechargeHitOffset; +var TgPawn_Character c_ProtectionTarget; + +replication +{ + // Pos:0x000 + if(bNetDirty) + r_InhandHitOffset, r_InhandTarget, + r_RechargeHitOffset, r_RechargeTarget; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x57 + case 1: + return "PC_Gauntlet_Skin00A.Anims.AS_PC_Gauntlet_Skin00A_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +simulated function Tick(float DeltaSeconds) +{ + super.Tick(DeltaSeconds); + // End:0xFA + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x77 + if((r_InhandTarget != none) && r_InhandTarget != r_TargetActor) + { + c_InterpInhandHitOffset = r_InhandHitOffset; + } + c_InterpInhandHitOffset = VInterpTo(c_InterpInhandHitOffset, r_InhandHitOffset, DeltaSeconds, c_fInhandHitOffsetInterpSpeed); + c_InterpRechargeHitOffset = VInterpTo(c_InterpRechargeHitOffset, r_RechargeHitOffset, DeltaSeconds, c_fInhandHitOffsetInterpSpeed); + r_TargetActor = r_InhandTarget; + } + //return; +} + +// Export UTgPawn_Gauntlet::execIs1PBodyOverlay(FFrame&, void* const) +native function bool Is1PBodyOverlay(TgPawn.OverlayMICType Type); + +defaultproperties +{ + c_fInhandHitOffsetInterpSpeed=10.0000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Gauntlet.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Gauntlet.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="Torvald" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Gauntlet.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=1.4000000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Gauntlet.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Gauntlet.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Gauntlet.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Gauntlet.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + BaseEyeHeight=50.0000000 + EyeHeight=50.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Gauntlet.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Gauntlet.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Grohk.uc b/exported/TgGame/Classes/TgPawn_Grohk.uc new file mode 100755 index 00000000..bc9a7be2 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Grohk.uc @@ -0,0 +1,165 @@ +class TgPawn_Grohk extends TgPawn_Character + native(ChampGrohk) + config(Game) + hidecategories(Navigation); + +const TGPAWN_GROHK_TEMPEST_OVERLY_FX_ID = 6870; + +var Actor r_InhandTarget; +var Vector r_InhandHitOffset; +var bool c_bIsInTempest; +var float c_fTempestOverlayStrength; +var const float c_fTempestRampUpRate; +var const float c_fTempsetRampDownRate; + +replication +{ + // Pos:0x000 + if(bNetDirty) + r_InhandHitOffset, r_InhandTarget; +} + +// Export UTgPawn_Grohk::execGetOverlayMaterial(FFrame&, void* const) +native function MaterialInstanceConstant GetOverlayMaterial(TgPawn.OverlayMICType Type); + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x46 + case 1: + return "PC_Shaman.Anims.AS_PC_Shaman_3p_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +simulated function OnDeviceFormStartFire(int nEquipSlot, float FireDuration, int nFireMode, optional int nAmmoRemaining) +{ + super(TgPawn).OnDeviceFormStartFire(nEquipSlot, FireDuration, nFireMode, nAmmoRemaining); + switch(nEquipSlot) + { + // End:0x56 + case 2: + c_bIsInTempest = true; + // End:0x59 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated function OnDeviceFormStopFire(int nEquipSlot) +{ + super(TgPawn).OnDeviceFormStopFire(nEquipSlot); + switch(nEquipSlot) + { + // End:0x3A + case 2: + c_bIsInTempest = false; + // End:0x3D + break; + // End:0xFFFF + default: + break; + } + //return; +} + +defaultproperties +{ + c_fTempestRampUpRate=3.3300000 + c_fTempsetRampDownRate=3.3300000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Grohk.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + m_CompositeTextures[0]=(CompTexture=none,TextureParamName="Diffuse") + m_CompositeTextures[1]=(CompTexture=none,TextureParamName="Normal") + m_CompositeTextures[2]=(CompTexture=none,TextureParamName="Specular") + m_CompositeTextures[3]=(CompTexture=none,TextureParamName="Mask") + m_nCompositeTextureSizeX=2048 + m_nCompositeTextureSizeY=2048 + m_CompositeParts[0]=(MeshAsmId=5470,DestOffsetX=0,DestOffsetY=0,RegionSizeX=1024,RegionSizeY=2048) + m_CompositeParts[1]=(MeshAsmId=5471,DestOffsetX=1024,DestOffsetY=0,RegionSizeX=1024,RegionSizeY=1024) + m_CompositeParts[2]=(MeshAsmId=5477,DestOffsetX=1024,DestOffsetY=1024,RegionSizeX=512,RegionSizeY=1024) + m_CompositeParts[3]=(MeshAsmId=5475,DestOffsetX=1536,DestOffsetY=1024,RegionSizeX=512,RegionSizeY=512) + m_CompositeParts[4]=(MeshAsmId=5473,DestOffsetX=1536,DestOffsetY=1536,RegionSizeX=512,RegionSizeY=512) + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Grohk.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bShouldApplyCCImmuneOverlay=false + m_sGameplayPackage="Grohk" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Grohk.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=1.4000000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Grohk.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Grohk.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Grohk.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Grohk.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + BaseEyeHeight=50.0000000 + EyeHeight=50.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Grohk.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Grohk.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Grover.uc b/exported/TgGame/Classes/TgPawn_Grover.uc new file mode 100755 index 00000000..a16413fe --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Grover.uc @@ -0,0 +1,103 @@ +class TgPawn_Grover extends TgPawn_Character + native(ChampGrover) + config(Game) + hidecategories(Navigation); + +var TgDevice_Vine m_CachedVine; + +// Export UTgPawn_Grover::execHasCachedVine(FFrame&, void* const) +native function bool HasCachedVine(); + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x46 + case 1: + return "PC_Grover.Anims.AS_PC_Grover_3p_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Grover.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Grover.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="Grover" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Grover.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=1.4000000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Grover.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Grover.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Grover.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Grover.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + BaseEyeHeight=50.0000000 + EyeHeight=50.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Grover.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Grover.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Illusion.uc b/exported/TgGame/Classes/TgPawn_Illusion.uc new file mode 100755 index 00000000..2f25e4d2 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Illusion.uc @@ -0,0 +1,658 @@ +class TgPawn_Illusion extends TgPawn_Ying + native(ChampYing) + config(Game) + hidecategories(Navigation) + implements(TgInterface_YingIllusion); + +const MAX_ILLUSION_TARGETS = 2; +const HEAL_BEAM_FX_ID = 7224; + +enum EDecoyAIState +{ + DAIS_Normal, // 0 + DAIS_Shatter, // 1 + DAIS_Rift, // 2 + DAIS_MAX // 3 +}; + +var private native const noexport Pointer VfTable_ITgInterface_YingIllusion; +var TgPawn_Illusion.EDecoyAIState m_eAIState; +var repnotify TgObject.INITIALIZEABLE_BOOL r_eLifelike; +var float m_fDamageScale; +var float m_fDamageAccumulator; +var float m_fDamageAccumulatorReductionRatePerSec; +var float m_fFlickerDamageMin; +var float m_fFlickerDamageMax; +var float m_fDamageAccumulatorCap; +var float m_fPrevFrameHealth; +var const float m_fTimedDestroyedFXDuration; +var const float m_fTimedDestroyedFXMeshHiddenTime; +var const float m_fEarlyShatterRecheckTime; +var const bool m_bCanShatterEarly; +var bool m_bUsingReplacementMIC; +var bool m_bSpringBloomFlag; +var bool c_BeamsCreated; +var repnotify float r_fShatterDelay; +var TgDevice m_CachedShatterDevice; +var array m_replacementMICs; +var array m_headReplacementMICs; +var array m_weaponReplacementMICs; +var const MaterialInstanceConstant m_ShatterMaterialLocal; +var const MaterialInstanceConstant m_ShatterMaterialFriendly; +var const MaterialInstanceConstant m_ShatterMaterialEnemy; +var const MaterialInstanceConstant m_HitMaterialLocal; +var const MaterialInstanceConstant m_HitMaterialFriendly; +var const MaterialInstanceConstant m_HitMaterialEnemy; +var const MaterialInstanceConstant m_DestroyMaterialLocal; +var const MaterialInstanceConstant m_DestroyMaterialFriendly; +var const MaterialInstanceConstant m_DestroyMaterialEnemy; +var array< delegate > s_OnDeathDelegates; +var repnotify TgPawn_Character r_Targets[2]; +var array c_Beams; +var repnotify int r_nBeamSpawnIterator; +//var delegate __DestroyedEvent__Delegate; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_Targets, r_fShatterDelay; + + // Pos:0x020 + if(((int(Role) == int(ROLE_Authority)) && bNetDirty) && (!bNetOwner || bDemoRecording) || bNetTimelapse) + r_eLifelike, r_nBeamSpawnIterator; +} + +delegate DestroyedEvent(Actor destroyedActor) +{ + //return; +} + +// Export UTgPawn_Illusion::execSetPetOwner(FFrame&, void* const) +native function SetPetOwner(TgPawn petOwner); + +// Export UTgPawn_Illusion::execSpawnGuard(FFrame&, void* const) +native function SpawnGuard(); + +// Export UTgPawn_Illusion::execDropHealthNugget(FFrame&, void* const) +native function DropHealthNugget(optional Vector SpawnVelocity, optional float fHealOverride = -1.0000000, optional float fHoTOverride = -1.0000000); + +// Export UTgPawn_Illusion::execDropHealthNuggetTeamOnly(FFrame&, void* const) +native function DropHealthNuggetTeamOnly(int nTaskForce, optional Vector SpawnVelocity, optional float fHealOverride = -1.0000000, optional float fHoTOverride = -1.0000000); + +// Export UTgPawn_Illusion::execInitializeInhandWeapon(FFrame&, void* const) +native function InitializeInhandWeapon(int DeviceID); + +// Export UTgPawn_Illusion::execDeviceAdjustDamage(FFrame&, void* const) +native function DeviceAdjustDamage(out AdjustDamageParams Params, out float fDamage); + +// Export UTgPawn_Illusion::execDeviceOnHit(FFrame&, void* const) +native function DeviceOnHit(TgDevice Dev, const out ImpactInfo Impact); + +// Export UTgPawn_Illusion::execPostPawnSetupServer(FFrame&, void* const) +native function PostPawnSetupServer(); + +// Export UTgPawn_Illusion::execReplaceMaterial(FFrame&, void* const) +native function ReplaceMaterial(MaterialInstanceConstant materialToUse, optional float ParamValue = 0.0000000); + +// Export UTgPawn_Illusion::execClearReplacementMaterial(FFrame&, void* const) +native function ClearReplacementMaterial(); + +// Export UTgPawn_Illusion::execReplaceWithShatterMaterial(FFrame&, void* const) +native function ReplaceWithShatterMaterial(); + +// Export UTgPawn_Illusion::execReplaceWithHitOverlayMaterial(FFrame&, void* const) +native function ReplaceWithHitOverlayMaterial(); + +// Export UTgPawn_Illusion::execReplaceWithDestroyedMaterial(FFrame&, void* const) +native function ReplaceWithDestroyedMaterial(); + +// Export UTgPawn_Illusion::execCheckEarlyShatter(FFrame&, void* const) +native function CheckEarlyShatter(); + +// Export UTgPawn_Illusion::execIsStatTrackable(FFrame&, void* const) +native function bool IsStatTrackable(); + +// Export UTgPawn_Illusion::execShouldPawnMeshBeHiddenThisTick(FFrame&, void* const) +native function bool ShouldPawnMeshBeHiddenThisTick(); + +// Export UTgPawn_Illusion::execShouldInHandDeviceBeHiddenThisTick(FFrame&, void* const) +native function bool ShouldInHandDeviceBeHiddenThisTick(); + +// Export UTgPawn_Illusion::execIsNonCombat(FFrame&, void* const) +native function bool IsNonCombat(); + +simulated event ReplicatedEvent(name VarName) +{ + switch(VarName) + { + // End:0x7D + case 'r_fShatterDelay': + // End:0x7A + if(((r_fShatterDelay > float(0)) && r_Owner != none) && !r_Owner.IsLocallyControlled()) + { + TriggerShatter(r_fShatterDelay); + } + // End:0xFE + break; + // End:0x96 + case 'r_eLifelike': + ConsiderCreateBeams(); + // End:0xFE + break; + // End:0xB9 + case 'r_Targets': + ConsiderCreateBeams(); + UpdateBeamAttachments(); + // End:0xFE + break; + // End:0xE8 + case 'r_nBeamSpawnIterator': + c_BeamsCreated = false; + ConsiderCreateBeams(); + UpdateBeamAttachments(); + // End:0xFE + break; + // End:0xFFFF + default: + super(TgPawn_Character).ReplicatedEvent(VarName); + break; + } + //return; +} + +simulated event UpdateWeaponMesh() +{ + super(TgPawn).UpdateWeaponMesh(); + // End:0x4A + if(m_WeaponMesh != none) + { + m_WeaponMesh.SetFireLoopDisplayGroup('FireLoopB', 'FireLoopTailSound'); + } + //return; +} + +event bool ShouldScoreKill() +{ + return false; + //return ReturnValue; +} + +simulated function PlayInitialSpawnFX() +{ + // End:0x37 + if(r_fIntroTime > float(0)) + { + SetMeshVisibility(false); + FxActivateGroupSelf('RiftIllusionSpawned', 0, 0, 0, true); + } + else + { + FxActivateGroupSelf('IllusionSpawned', 0, 0, 0, true); + } + //return; +} + +simulated event ConsiderCreateBeams() +{ + // End:0x0F + if(c_BeamsCreated) + { + return; + } + // End:0x45 + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + CreateBeams(); + } + else + { + // End:0x63 + if(int(r_eLifelike) != int(0)) + { + CreateBeams(); + } + } + //return; +} + +simulated event UpdateBeamAttachments() +{ + local int I; + + // End:0xF5 + if((m_WeaponMesh != none) && m_WeaponMesh.m_WeaponMesh3P != none) + { + I = 0; + J0x40: + + // End:0xF2 [Loop If] + if(I < (GetNumNeededBeams())) + { + c_Beams[I].AttachToMesh(m_WeaponMesh.m_WeaponMesh3P, 'WSO_Emit_01'); + c_Beams[I].AttachToTarget(r_Targets[I]); + I++; + // [Loop Continue] + goto J0x40; + } + } + else + { + I = 0; + J0x100: + + // End:0x162 [Loop If] + if(I < (GetNumNeededBeams())) + { + c_Beams[I].AttachToTarget(r_Targets[I]); + I++; + // [Loop Continue] + goto J0x100; + } + } + //return; +} + +simulated function CreateBeams() +{ + local int I; + local TgBeamHelper Beam; + + // End:0x157 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + c_Beams.Length = 0; + I = 0; + J0x40: + + // End:0x157 [Loop If] + if(I < (GetNumNeededBeams())) + { + Beam = Class'TgGame.TgBeamHelper'.static.Create(7224); + Beam.AttachToMesh(m_WeaponMesh.m_WeaponMesh3P, 'WSO_Emit_01'); + Beam.Activate(); + Beam.m_bRequiresTarget = true; + Beam.SetVisible(true); + c_Beams[I] = Beam; + I++; + // [Loop Continue] + goto J0x40; + } + } + c_BeamsCreated = true; + //return; +} + +simulated function int GetNumNeededBeams() +{ + // End:0x1A + if(int(r_eLifelike) == int(2)) + { + return 2; + } + else + { + return 1; + } + //return ReturnValue; +} + +simulated function PlayDyingEffects() +{ + local Vector FXLocation; + local Rotator FXRotation; + local TgSpecialFx DyingSpecialFX; + + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + SetTimer(2.0000000, false, 'FindNewTargetTimer'); + // End:0x336 + if(Mesh != none) + { + Mesh.FxDeactivateGroup('IllusionShatterTrail', 0); + Mesh.FxDeactivateGroup('WhileAlive', 0); + // End:0x1DF + if((int(r_eDeathReason) == int(1)) || r_bHasCompensate) + { + DyingSpecialFX = TgSpecialFx(Mesh.FxGet('IllusionShattered', 0)); + // End:0x1D0 + if(DyingSpecialFX != none) + { + // End:0x18F + if(!Mesh.GetSocketWorldLocationAndRotation(DyingSpecialFX.c_nmSocket, FXLocation, FXRotation)) + { + FXLocation = Location; + FXRotation = Rotation; + } + Mesh.FxActivateIndependant('IllusionShattered', 0, FXLocation, Vector(FXRotation)); + } + c_bMeshHiddenDueToDeath = true; + } + else + { + SetPhysics(4); + SetProperty(32, (GetPropCurrentValue(32)) + float(1)); + DyingSpecialFX = TgSpecialFx(Mesh.FxGet('IllusionDestroyed', 0)); + // End:0x336 + if(DyingSpecialFX != none) + { + // End:0x2CA + if(!Mesh.GetSocketWorldLocationAndRotation(DyingSpecialFX.c_nmSocket, FXLocation, FXRotation)) + { + FXLocation = Location; + FXRotation = Rotation; + } + Mesh.FxActivateIndependant('IllusionDestroyed', 0, FXLocation, Vector(FXRotation)); + PlayDeathAnimation(); + ReplaceWithDestroyedMaterial(); + SetTimer(m_fTimedDestroyedFXDuration, false, 'TimedDestroyedFX'); + } + } + } + // End:0x3AB + if((m_WeaponMesh != none) && m_WeaponMesh.m_WeaponMesh3P != none) + { + m_WeaponMesh.m_WeaponMesh3P.FxDeactivateGroup('MirrorActive', 0); + } + //return; +} + +function bool Died(Controller Killer, Class DamageType, Vector HitLocation) +{ + local TgPawn_Ying yingOwner; + local delegate onEventDelegate; + + // End:0x41 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x40 + foreach s_OnDeathDelegates(onEventDelegate) + { + DestroyedEvent(self); + } + } + // End:0x12E + if(int(r_eDeathReason) != int(1)) + { + yingOwner = TgPawn_Ying(r_Owner); + // End:0x12E + if(((int(Role) == int(ROLE_Authority)) && yingOwner != none) && yingOwner.r_bHasCompensate) + { + m_eAIState = 0; + // End:0xDF + if(m_CachedShatterDevice == none) + { + CacheShatterDevice(); + } + // End:0x12E + if(m_CachedShatterDevice != none) + { + m_CachedShatterDevice.SetFireMode(1, true); + m_CachedShatterDevice.FireAmmunition(); + } + } + } + return super.Died(Killer, DamageType, HitLocation); + //return ReturnValue; +} + +event CacheShatterDevice() +{ + m_CachedShatterDevice = GetDeviceByClass(Class'TgGame.TgDevice_Shatter'); + //return; +} + +simulated function TimedDestroyedFX() +{ + c_bMeshHiddenDueToDeath = true; + //return; +} + +simulated function TriggerShatter(float fDelay) +{ + // End:0xA2 + if(int(Role) == int(ROLE_Authority)) + { + ClearTimer('Suicide'); + SetTimer(fDelay, false, 'Shatter'); + // End:0x6D + if(m_bCanShatterEarly) + { + CheckEarlyShatter(); + SetTimer(m_fEarlyShatterRecheckTime, true, 'CheckEarlyShatter'); + } + m_eAIState = 1; + r_fShatterDelay = fDelay; + bNetDirty = true; + ApplyStartShatterEffects(); + } + // End:0x104 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + SetTimer(fDelay, false, 'Shatter'); + ReplaceWithShatterMaterial(); + FxActivateGroupSelf('IllusionShatterTrail', 0); + } + //return; +} + +function ApplyStartShatterEffects() +{ + // End:0x19 + if(m_CachedShatterDevice == none) + { + CacheShatterDevice(); + } + // End:0x51 + if((m_CachedShatterDevice == none) || m_CachedShatterDevice.m_FireMode.Length <= 1) + { + return; + } + m_CachedShatterDevice.m_FireMode[1].ApplyHitSpecial(self); + //return; +} + +event Suicide() +{ + m_bSpringBloomFlag = false; + super(TgPawn).Suicide(); + //return; +} + +event Shatter() +{ + m_eAIState = 0; + ClearTimer('CheckEarlyShatter'); + ClearTimer('Shatter'); + // End:0x4F + if(!IsAliveAndWell()) + { + Suicide(); + return; + } + // End:0x68 + if(m_CachedShatterDevice == none) + { + CacheShatterDevice(); + } + // End:0x83 + if(m_CachedShatterDevice == none) + { + Suicide(); + return; + } + m_CachedShatterDevice.SetFireMode(1, true); + m_CachedShatterDevice.FireAmmunition(); + Despawn(); + //return; +} + +function ClearDimensionalLink() +{ + //return; +} + +function AddOnDestroyDelegate(delegate delDestroy) +{ + // End:0x36 + if(s_OnDeathDelegates.Find(delDestroy) == -1) + { + s_OnDeathDelegates.AddItem(delDestroy); + } + //return; +} + +// Export UTgPawn_Illusion::execGetActorFromInterface(FFrame&, void* const) +native function Actor GetActorFromInterface(); + +// Export UTgPawn_Illusion::execIsNotDestroyed(FFrame&, void* const) +native function bool IsNotDestroyed(); + +simulated function PlayDimensionalLinkFX() +{ + // End:0x36 + if((Mesh != none) && IsAliveAndWell()) + { + FxReactivateGroupSelf('YingDimensionalLink', 0); + } + //return; +} + +simulated function bool AllowRagdoll() +{ + return true; + //return ReturnValue; +} + +function TgPawn_Ying GetOwningYing() +{ + return TgPawn_Ying(m_PetOwner); + //return ReturnValue; +} + +state Intro +{ + simulated function BeginState(name PreviousStateName) + { + SetCollision(false, false); + ConsiderCreateBeams(); + super.BeginState(PreviousStateName); + //return; + } + + simulated function EndState(name NextStateName) + { + SetCollision(true, true); + super.EndState(NextStateName); + // End:0x63 + if(r_fIntroTime > float(0)) + { + FxDeactivateGroupSelf('RiftIllusionSpawned', 0); + FxActivateGroupSelf('IllusionSpawned', 0, 0, 0, true); + SetMeshVisibility(true); + } + //return; + } + stop; +} + +defaultproperties +{ + m_fDamageScale=1.0000000 + m_fDamageAccumulatorReductionRatePerSec=250.0000000 + m_fFlickerDamageMin=25.0000000 + m_fFlickerDamageMax=75.0000000 + m_fDamageAccumulatorCap=200.0000000 + m_fTimedDestroyedFXDuration=1.0000000 + m_fTimedDestroyedFXMeshHiddenTime=0.4000000 + m_fEarlyShatterRecheckTime=0.2000000 + m_bSpringBloomFlag=true + m_ShatterMaterialLocal=MaterialInstanceConstant'FX_Ying.Materials.MIC_Shatter_Pulse_A' + m_ShatterMaterialFriendly=MaterialInstanceConstant'FX_Ying.Materials.MIC_Shatter_Pulse_B' + m_ShatterMaterialEnemy=MaterialInstanceConstant'FX_Ying.Materials.MIC_Shatter_Pulse_C' + m_HitMaterialLocal=MaterialInstanceConstant'FX_Ying.Materials.MIC_Illusion_Hit_A' + m_HitMaterialFriendly=MaterialInstanceConstant'FX_Ying.Materials.MIC_Illusion_Hit_B' + m_HitMaterialEnemy=MaterialInstanceConstant'FX_Ying.Materials.MIC_Illusion_Hit_C' + m_DestroyMaterialLocal=MaterialInstanceConstant'FX_Ying.Materials.MIC_Illusion_Fade_A' + m_DestroyMaterialFriendly=MaterialInstanceConstant'FX_Ying.Materials.MIC_Illusion_Fade_B' + m_DestroyMaterialEnemy=MaterialInstanceConstant'FX_Ying.Materials.MIC_Illusion_Fade_C' + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Illusion.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Ying.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Illusion.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Ying.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_InitHUDOverlayIcon=DeployableOverlayIcon.DOI_ILLUSION + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Illusion.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Ying.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_fMaxAimAssistStacks=0.1000000 + m_nInitHUDOverlayDisplayMask=73 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Illusion.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Ying.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Illusion.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Ying.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Illusion.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Ying.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Illusion.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Ying.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + m_nSuccessfulHitSpecialFXId=6978 + PeripheralVision=-1.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Illusion.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Ying.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Illusion.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Ying.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Juggernaut.uc b/exported/TgGame/Classes/TgPawn_Juggernaut.uc new file mode 100755 index 00000000..0d22ed0e --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Juggernaut.uc @@ -0,0 +1,147 @@ +class TgPawn_Juggernaut extends TgPawn_LanePusher + native(Pawns) + config(Game) + hidecategories(Navigation); + +var bool m_bNextLaserLeft; +var bool m_bInGenericFirePosture; + +// Export UTgPawn_Juggernaut::execDeviceAdjustDamage(FFrame&, void* const) +native function DeviceAdjustDamage(out AdjustDamageParams Params, out float fDamage); + +// Export UTgPawn_Juggernaut::execIsDebuffImmune(FFrame&, void* const) +native function bool IsDebuffImmune(); + +// Export UTgPawn_Juggernaut::execPawnOnPreDamageMitigation(FFrame&, void* const) +native function PawnOnPreDamageMitigation(TgPawn attacker, TgEffectGroup eg, out float fDamage, int nPropertyId); + +simulated event bool PostPawnSetup() +{ + // End:0x19 + if(super(TgPawn).PostPawnSetup()) + { + ChangeFirePosture(); + return true; + } + return false; + //return ReturnValue; +} + +simulated event ChangeFirePosture() +{ + // End:0x77 + if(Mesh != none) + { + // End:0x4C + if(m_bInGenericFirePosture) + { + Mesh.FxActivateGroup('Generic1', 1); + } + else + { + Mesh.FxDeactivateGroup('Generic1', 0); + } + } + //return; +} + +simulated function OnDeviceFormStartFire(int nEquipSlot, float FireDuration, int nFireMode, optional int nAmmoRemaining) +{ + // End:0x24 + if(m_bInGenericFirePosture) + { + m_bInGenericFirePosture = false; + ChangeFirePosture(); + } + super.OnDeviceFormStartFire(nEquipSlot, FireDuration, nFireMode, nAmmoRemaining); + //return; +} + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + local bool bDied; + local TgPawn KillerPawn; + + bDied = super.Died(Killer, dmgType, HitLocation); + // End:0xA1 + if(Killer != none) + { + KillerPawn = TgPawn(Killer.Pawn); + // End:0xA1 + if(KillerPawn != none) + { + KillerPawn.PlayEmoteAtWorldLocation(21); + } + } + return bDied; + //return ReturnValue; +} + +defaultproperties +{ + m_bInGenericFirePosture=true + // Reference: StaticMeshComponent'TgGame.Default__TgPawn_Juggernaut.CollisionBox' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionBox' + // Archetype: StaticMeshComponent'TgGame.Default__TgPawn_LanePusher.CollisionBox' + begin object name="CollisionBox" + ReplacementPrimitive=none + end object + m_CollisionBox=CollisionBox + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Juggernaut.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_LanePusher.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Juggernaut.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_LanePusher.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Juggernaut.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_LanePusher.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Juggernaut.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_LanePusher.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Juggernaut.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_LanePusher.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Juggernaut.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_LanePusher.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Juggernaut.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_LanePusher.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=CollisionBox + bAlwaysRelevant=true + CollisionComponent=CollisionBox +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Kinessa.uc b/exported/TgGame/Classes/TgPawn_Kinessa.uc new file mode 100755 index 00000000..abfb83f5 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Kinessa.uc @@ -0,0 +1,395 @@ +class TgPawn_Kinessa extends TgPawn_Character + native(ChampKinessa) + config(Game) + hidecategories(Navigation); + +const TGPAWN_KINESSA_OVERLAY_FRIEND_FX_ID = 6861; +const TGPAWN_KINESSA_OVERLAY_ENEMY_FX_ID = 6862; + +var float m_fPreviousPitchMin; +var float m_fPreviousPitchMax; +var repnotify Vector r_vHyperTargetEndLocation; +var repnotify Vector r_vHyperShotEndLocation; +var bool m_bPendingMovementPenaltyOnLanded; +var bool r_bIsZoomed; +var bool m_bIsInInhandPostFire; +var bool c_bHeadHunterFiring; +var bool r_bTeleportOverlayActive; +var float m_fScopedSpeedModifier; +var float m_fZoomChargeTimestamp; +var float r_fFullChargeDelay; +var float r_fTeleportOverlayMaxStrength; +var float c_fTeleportOverlayStrength; +var float r_fTeleportOverlayUpRate; +var float r_fTeleportOverlayDownRate; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bIsZoomed, r_bTeleportOverlayActive, + r_fFullChargeDelay, r_fTeleportOverlayDownRate, + r_fTeleportOverlayMaxStrength, r_fTeleportOverlayUpRate, + r_vHyperShotEndLocation, r_vHyperTargetEndLocation; +} + +// Export UTgPawn_Kinessa::execGetOverlayMaterial(FFrame&, void* const) +native function MaterialInstanceConstant GetOverlayMaterial(TgPawn.OverlayMICType Type); + +// Export UTgPawn_Kinessa::execPlayTeleportFx(FFrame&, void* const) +native function PlayTeleportFx(int nTeleportState, Vector vLoc); + +simulated function SetHyperTargetLocation(Vector beamEnd) +{ + r_vHyperTargetEndLocation = beamEnd; + bNetDirty = true; + // End:0x52 + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + PlayHyperTargetEffects(); + } + //return; +} + +simulated function SetHyperShotLocation(Vector beamEnd) +{ + r_vHyperShotEndLocation = beamEnd; + bNetDirty = true; + // End:0x52 + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + PlayHyperShotEffects(); + } + //return; +} + +simulated function ClearHyperShotLocations() +{ + r_vHyperTargetEndLocation.X = 0.0000000; + r_vHyperTargetEndLocation.Y = 0.0000000; + r_vHyperTargetEndLocation.Z = 0.0000000; + r_vHyperShotEndLocation.X = 0.0000000; + r_vHyperShotEndLocation.Y = 0.0000000; + r_vHyperShotEndLocation.Z = 0.0000000; + bNetDirty = true; + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x35 + if(VarName == 'r_vHyperTargetEndLocation') + { + // End:0x32 + if(!IsZero(r_vHyperTargetEndLocation)) + { + PlayHyperTargetEffects(); + } + } + else + { + // End:0x6A + if(VarName == 'r_vHyperShotEndLocation') + { + // End:0x67 + if(!IsZero(r_vHyperShotEndLocation)) + { + PlayHyperShotEffects(); + } + } + else + { + super.ReplicatedEvent(VarName); + } + } + //return; +} + +simulated function PlayHyperTargetEffects() +{ + local editinline TgSkeletalMeshComponent TgSMC; + local TgSpecialFx Fx; + + // End:0x11E + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgSMC = TgSkeletalMeshComponent(Mesh); + // End:0x11E + if(TgSMC != none) + { + Mesh.FxSpawnEmitter('KinessaHyperTargetEmitters', 0, Location, Normal(r_vHyperTargetEndLocation - Location)); + Fx = TgSpecialFx(Mesh.FxGet('KinessaHyperTarget', 0)); + // End:0x11E + if(Fx != none) + { + Fx.UpdateBeamFx(r_vHyperTargetEndLocation, Location); + } + } + } + //return; +} + +simulated function PlayHyperShotEffects() +{ + local editinline TgSkeletalMeshComponent TgSMC; + local TgSpecialFx Fx; + + // End:0x11E + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgSMC = TgSkeletalMeshComponent(Mesh); + // End:0x11E + if(TgSMC != none) + { + Mesh.FxSpawnEmitter('KinessaHyperShotEmitters', 0, Location, Normal(r_vHyperShotEndLocation - Location)); + Fx = TgSpecialFx(Mesh.FxGet('KinessaHyperShot', 0)); + // End:0x11E + if(Fx != none) + { + Fx.UpdateBeamFx(r_vHyperShotEndLocation, Location); + } + } + } + //return; +} + +simulated function SetZoomState(bool bIsZoomed, float fSpeedModifier, float fChargeDelay) +{ + local TgDevice inhandDevice; + + m_bPendingMovementPenaltyOnLanded = bIsZoomed; + m_fScopedSpeedModifier = ((fSpeedModifier > 0.0000000) ? fSpeedModifier : 1.0000000); + // End:0x161 + if(bIsZoomed) + { + // End:0xD3 + if(!r_bIsZoomed) + { + inhandDevice = GetDeviceByEqPoint(1); + // End:0xD0 + if((inhandDevice != none) && !inhandDevice.IsFiring()) + { + m_fZoomChargeTimestamp = WorldInfo.TimeSeconds; + } + } + else + { + m_fZoomChargeTimestamp = WorldInfo.TimeSeconds - ((GetZoomChargePercentage()) * ((fChargeDelay > 0.0000000) ? fChargeDelay : r_fFullChargeDelay)); + } + r_fFullChargeDelay = ((fChargeDelay > 0.0000000) ? fChargeDelay : r_fFullChargeDelay); + } + r_bIsZoomed = bIsZoomed; + bNetDirty = true; + //return; +} + +simulated event float GetZoomChargePercentage() +{ + // End:0x63 + if(r_bIsZoomed && r_fFullChargeDelay > 0.0000000) + { + return FClamp((WorldInfo.TimeSeconds - m_fZoomChargeTimestamp) / r_fFullChargeDelay, 0.0000000, 1.0000000); + } + return 0.0000000; + //return ReturnValue; +} + +simulated function UpdateWeaponZoomEffects(optional float fZoomAmt = 0.0000000) +{ + local TgPlayerController TgPC; + + super.UpdateWeaponZoomEffects(fZoomAmt); + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0xA7 + if((TgPC != none) && TgPC.GetTgPawn() == self) + { + TgPC.SetHUDOverlay(((fZoomAmt > 0.0000000) ? 1 : 0)); + } + //return; +} + +simulated function OnDeviceFormStopFire(int nEquipSlot) +{ + super(TgPawn).OnDeviceFormStopFire(nEquipSlot); + // End:0x71 + if(nEquipSlot == 1) + { + m_bIsInInhandPostFire = false; + m_fZoomChargeTimestamp = WorldInfo.TimeSeconds; + // End:0x6E + if(r_bIsZoomed) + { + SetScopeChargeSound(true); + } + } + else + { + // End:0x8C + if(nEquipSlot == 16) + { + SetScopeChargeSound(false); + } + } + //return; +} + +simulated function OnDeviceFormFire(int nEquipSlot, float fRefireTime, int nFireMode) +{ + super(TgPawn).OnDeviceFormFire(nEquipSlot, fRefireTime, nFireMode); + // End:0x7A + if(nEquipSlot == 16) + { + // End:0x77 + if(!m_bIsInInhandPostFire) + { + m_fZoomChargeTimestamp = WorldInfo.TimeSeconds; + SetScopeChargeSound(true); + } + } + else + { + // End:0xA0 + if(nEquipSlot == 1) + { + m_bIsInInhandPostFire = true; + SetScopeChargeSound(false); + } + } + //return; +} + +simulated function SetScopeChargeSound(bool IsActive) +{ + local TgPlayerController TgPC; + local array FxList; + local int I; + local TgSpecialFx Fx; + local name FXName; + + FXName = ((IsActive) ? 'KinessaScopeChargeUpStart' : 'KinessaScopeChargeUpStop'); + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x16A + if(((TgPC != none) && TgPC.GetTgPawn() == self) && Mesh != none) + { + FxList = Mesh.FxGetAll(FXName, 0); + I = 0; + J0xD0: + + // End:0x16A [Loop If] + if(I < FxList.Length) + { + Fx = TgSpecialFx(FxList[I]); + // End:0x15C + if(Fx != none) + { + Fx.c_Owner = self; + Fx.PlaySound(); + } + I++; + // [Loop Continue] + goto J0xD0; + } + } + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x48 + case 1: + return "PC_Kinessa.Anims.AS_PC_Kinessa_3p_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +simulated function bool ShouldUseScopeSensitivity() +{ + return r_bIsZoomed; + //return ReturnValue; +} + +defaultproperties +{ + m_fScopedSpeedModifier=1.0000000 + r_fFullChargeDelay=1.0000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Kinessa.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Kinessa.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="Kinessa" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Kinessa.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Kinessa.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Kinessa.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Kinessa.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Kinessa.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + BaseEyeHeight=45.0000000 + EyeHeight=45.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Kinessa.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Kinessa.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_LanePusher.uc b/exported/TgGame/Classes/TgPawn_LanePusher.uc new file mode 100755 index 00000000..534fc5b9 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_LanePusher.uc @@ -0,0 +1,350 @@ +class TgPawn_LanePusher extends TgPawn_LanePusherBase + native(Pawns) + config(Game) + hidecategories(Navigation); + +const TG_PROXIMITY_SPEED_MOD_RADIUS = 20.0f; +const TG_PROXIMITY_SPEED_MAGNITUDE = 20.0f; +const TG_PROXIMITY_SPEED_STACK_MAX = 5; + +enum EDestroyedAnimStages +{ + EngineDestruction_FullHealth_Idle,// 0 + EngineDestruction_FirstDestruction,// 1 + EngineDestruction_SecondDestruction,// 2 + EngineDestruction_MAX // 3 +}; + +var private bool m_bInIntroduction; +var bool r_bIsInsideBase; +var bool m_bHarvestTexturesForFadeMIC; +var bool m_bBroadcastDeath; +var TgPawn_LanePusher.EDestroyedAnimStages c_eDestroyedAnimStage; +var transient TgSpecialFx c_BeamFX; +var() float m_fBaseWheelSpeed; +var const int m_nMaxLevel; +var int m_nFriendlyFadeMaterialFXId; +var int m_nEnemyFadeMaterialFXId; +var array m_FadeMICs; +var float m_fDamageScaleWhileTraveling; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bIsInsideBase; +} + +// Export UTgPawn_LanePusher::execSetInitialLevel(FFrame&, void* const) +native function SetInitialLevel(); + +// Export UTgPawn_LanePusher::execOnPawnDied(FFrame&, void* const) +native function OnPawnDied(); + +// Export UTgPawn_LanePusher::execDropHealthNugget(FFrame&, void* const) +native function DropHealthNugget(optional Vector SpawnVelocity, optional float fHealOverride = -1.0000000, optional float fHoTOverride = -1.0000000); + +// Export UTgPawn_LanePusher::execDropHealthNuggetTeamOnly(FFrame&, void* const) +native function DropHealthNuggetTeamOnly(int nTaskForce, optional Vector SpawnVelocity, optional float fHealOverride = -1.0000000, optional float fHoTOverride = -1.0000000); + +// Export UTgPawn_LanePusher::execPawnOnPreDamageMitigation(FFrame&, void* const) +native function PawnOnPreDamageMitigation(TgPawn attacker, TgEffectGroup eg, out float fDamage, int nPropertyId); + +// Export UTgPawn_LanePusher::execReapplyLevelEffectGroups(FFrame&, void* const) +native function ReapplyLevelEffectGroups(optional int nPrevLevel = 0, optional int nCurrentLevel = 0, optional bool bPreserveParams = false); + +// Export UTgPawn_LanePusher::execCalcDistanceFadeValue(FFrame&, void* const) +native function CalcDistanceFadeValue(float fDeltaTime); + +// Export UTgPawn_LanePusher::execSetSpline(FFrame&, void* const) +native function SetSpline(TgSplineActor NewSpline, optional bool bSnapToStart); + +// Export UTgPawn_LanePusher::execPostPawnSetupServer(FFrame&, void* const) +native function PostPawnSetupServer(); + +// Export UTgPawn_LanePusher::execIsImmuneToDamage(FFrame&, void* const) +native function bool IsImmuneToDamage(); + +simulated function PostBeginPlay() +{ + super(TgPawn_Biped).PostBeginPlay(); + SetTimer(1.2000000, false, 'IntroTimer'); + //return; +} + +// Export UTgPawn_LanePusher::execInitializeFadeInMaterial(FFrame&, void* const) +native function InitializeFadeInMaterial(); + +// Export UTgPawn_LanePusher::execUpdateMaterialFade(FFrame&, void* const) +native function UpdateMaterialFade(); + +simulated function PlayInitialSpawnFX() +{ + super(TgPawn).PlayInitialSpawnFX(); + PlayFullBodyAnim('Deploy', 1.0000000, 0.0000000, 0.1000000, false, true); + InitializeFadeInMaterial(); + //return; +} + +simulated function IntroTimer() +{ + ClearTimer('IntroTimer'); + m_bInIntroduction = false; + UpdateMoving(); + // End:0x66 + if((int(WorldInfo.NetMode) == int(NM_DedicatedServer)) || Mesh == none) + { + return; + } + RecalculateMaterial(IsFriendlyWithLocalPawn(), true); + //return; +} + +event ModifyHealthProp(int nDamage) +{ + super(TgPawn).ModifyHealthProp(nDamage); + //return; +} + +simulated event PostInitAnimTree(SkeletalMeshComponent SkelComp) +{ + super(TgPawn).PostInitAnimTree(SkelComp); + PlayFullBodyAnim('Deploy', 1.0000000, 0.0000000, 0.0000000, false, false); + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + local int I; + local SkelControlWheel Wheel; + local float Speed; + + super.Tick(DeltaSeconds); + // End:0x153 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && Mesh != none) + { + Speed = -Velocity Dot Vector(Rotation); + // End:0x153 + if(Abs(Speed) > 0.0010000) + { + I = 0; + J0x8F: + + // End:0x153 [Loop If] + if(I < Mesh.SkelControlTickArray.Length) + { + Wheel = SkelControlWheel(Mesh.SkelControlTickArray[I]); + // End:0x145 + if(Wheel != none) + { + Wheel.WheelRoll += ((m_fBaseWheelSpeed * Speed) * DeltaSeconds); + } + I++; + // [Loop Continue] + goto J0x8F; + } + } + } + //return; +} + +simulated event ReceivedPropValues() +{ + super(TgPawn).ReceivedPropValues(); + //return; +} + +simulated function PlayDeathAnimation() +{ + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + PlayFullBodyAnim('Death', 1.0000000, 0.0000000, -1.0000000, false, true); + //return; +} + +event TakeDamage(int Damage, Controller InstigatedBy, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + local TgGame_Paladins ChaosGame; + local TgPawn attackerPawn; + local TgPawn_Character TgP; + + super.TakeDamage(Damage, InstigatedBy, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + ChaosGame = TgGame_Paladins(WorldInfo.Game); + // End:0x8D + if(ChaosGame == none) + { + return; + } + attackerPawn = TgPawn(InstigatedBy.Pawn); + // End:0xCF + if(attackerPawn == none) + { + return; + } + TgP = TgPawn_Character(attackerPawn); + // End:0x131 + if(TgP != none) + { + TgP.m_fSiegeDamagePercent += (float(Damage) / (GetMaxHealth())); + } + //return; +} + +event int GetHPScalingValue() +{ + return TgGame_PaladinsExtended(WorldInfo.Game).m_nRegLanePusherHPScaling; + //return ReturnValue; +} + +event int GetPowerScalingValue() +{ + return TgGame_PaladinsExtended(WorldInfo.Game).m_nRegLanePusherPowerScaling; + //return ReturnValue; +} + +simulated function OnDeviceFormStartFire(int nEquipSlot, float FireDuration, int nFireMode, optional int nAmmoRemaining) +{ + super(TgPawn).OnDeviceFormStartFire(nEquipSlot, FireDuration, nFireMode, nAmmoRemaining); + PlayFullBodyAnim('Fire', 1.0000000, 0.0000000, 0.0000000, false, true); + //return; +} + +simulated event Vector GetWeaponStartTraceLocation(TgDevice Dev) +{ + return (GetPawnViewLocation()) + ((Dev.GetProjectileSpawnOffset() + FireLocationOffsets[int(Dev.r_eEquippedAt)]) >> (GetBaseAimRotation(Dev))); + //return ReturnValue; +} + +simulated event Destroyed() +{ + ClearFromGRI(); + super(TgPawn).Destroyed(); + //return; +} + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + local TgPawn_SiegeWall SiegeWall; + local bool bDied; + + // End:0xC6 + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn_SiegeWall', SiegeWall) + { + // End:0xC5 + if(SiegeWall.GetHealth() < (SiegeWall.GetMaxHealth() / float(2))) + { + SiegeWall.SetHealth(int(SiegeWall.GetMaxHealth() / float(2))); + } + } + SetPhysics(0); + bDied = super(TgPawn).Died(Killer, dmgType, HitLocation); + // End:0x113 + if(bDied) + { + ClearFromGRI(); + } + return bDied; + //return ReturnValue; +} + +function ClearFromGRI() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x156 + if((GRI != none) && !GRI.bDeleteMe || GRI.IsPendingKill()) + { + // End:0xCE + if(GRI.r_LanePusher1 == self) + { + GRI.r_LanePusher1 = none; + } + // End:0x112 + if(GRI.r_LanePusher2 == self) + { + GRI.r_LanePusher2 = none; + } + // End:0x156 + if(GRI.r_LanePusher == self) + { + GRI.r_LanePusher = none; + } + } + //return; +} + +defaultproperties +{ + m_bInIntroduction=true + m_bBroadcastDeath=true + m_fBaseWheelSpeed=1.0000000 + m_nMaxLevel=15 + m_nFriendlyFadeMaterialFXId=6511 + m_nEnemyFadeMaterialFXId=6512 + m_fDamageScaleWhileTraveling=0.5000000 + // Reference: StaticMeshComponent'TgGame.Default__TgPawn_LanePusher.CollisionBox' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionBox' + // Archetype: StaticMeshComponent'TgGame.Default__TgPawn_LanePusherBase.CollisionBox' + begin object name="CollisionBox" + ReplacementPrimitive=none + end object + m_CollisionBox=CollisionBox + m_fAcceleration=1.5000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_LanePusher.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_LanePusherBase.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + FireLocationOffsets[1]=(X=130.0000000,Y=4.0000000,Z=20.0000000) + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_LanePusher.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_LanePusherBase.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_LanePusher.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_LanePusherBase.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_LanePusher.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_LanePusherBase.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_LanePusher.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_LanePusherBase.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_LanePusher.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_LanePusherBase.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_LanePusher.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_LanePusherBase.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=CollisionBox + CollisionComponent=CollisionBox +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_LanePusherBase.uc b/exported/TgGame/Classes/TgPawn_LanePusherBase.uc new file mode 100755 index 00000000..7b1f7cb8 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_LanePusherBase.uc @@ -0,0 +1,403 @@ +class TgPawn_LanePusherBase extends TgPawn_Biped + abstract + native(Pawns) + config(Game) + hidecategories(Navigation); + +const TGPM_REMEMBER_PLAYER_ATTACKED_TIME = 4; + +struct native ServerSplineSync +{ + var TgSplineActor Spline; + var float SplineDist; + var bool bMoving; + + structdefaultproperties + { + Spline=none + SplineDist=0.0000000 + bMoving=false + } +}; + +var float s_fSpeedMultiplierToCatchUpToSquad; +var TgPawn_Character s_PlayerAttacker; +var float s_fMaxRelevancyDistanceSquared; +var const TgSplineActor r_StartSpline; +var repnotify const ServerSplineSync r_ServerSync; +var const bool m_bMoving; +var bool c_bServerSync; +var const bool m_bDoNotScaleCollisionBoxWithDatabase; +var const bool m_bApplySplinePitchToActor; +var const bool c_bApplySplinePitchToMesh; +var const bool m_bFullStopWhenNoDesiredSpeed; +var const bool s_bStopBackpeddlingAtCheckpoints; +var bool m_bAllowBackpeddling; +var bool m_bDestroyed; +var bool r_bAsleep; +var private TgSplineActor m_Spline; +var export editinline StaticMeshComponent m_CollisionBox; +var float m_fSplineDist; +var float c_fSplineDistCorrection; +var float c_fClientSideMovementFudgeFactor; +var float c_fClientCorrectionTolerance; +var float c_fClientCorrectionRate; +var float m_fGroundSpeedScaleLastTick; +var float r_fTrackGroundSpeed; +var float m_fAcceleration; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_ServerSync, r_StartSpline, + r_bAsleep, r_fTrackGroundSpeed; +} + +// Export UTgPawn_LanePusherBase::execSetInitialLevel(FFrame&, void* const) +native function SetInitialLevel(); + +// Export UTgPawn_LanePusherBase::execPostPawnSetupServer(FFrame&, void* const) +native function PostPawnSetupServer(); + +// Export UTgPawn_LanePusherBase::execSetTargetActor(FFrame&, void* const) +native function SetTargetActor(Actor Target); + +// Export UTgPawn_LanePusherBase::execSendPing(FFrame&, void* const) +native function SendPing(); + +// Export UTgPawn_LanePusherBase::execSetSpline(FFrame&, void* const) +native function SetSpline(TgSplineActor NewSpline, optional bool bSnapToStart); + +// Export UTgPawn_LanePusherBase::execUpdateMoving(FFrame&, void* const) +native final function UpdateMoving(); + +// Export UTgPawn_LanePusherBase::execUpdateServerSync(FFrame&, void* const) +native final function UpdateServerSync(); + +// Export UTgPawn_LanePusherBase::execReceiveServerSync(FFrame&, void* const) +native function ReceiveServerSync(); + +// Export UTgPawn_LanePusherBase::execSnapToServerSync(FFrame&, void* const) +native function SnapToServerSync(); + +// Export UTgPawn_LanePusherBase::execIsImmuneToDamage(FFrame&, void* const) +native function bool IsImmuneToDamage(); + +// Export UTgPawn_LanePusherBase::execIsImmuneToHealing(FFrame&, void* const) +native function bool IsImmuneToHealing(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x26 + if(VarName == 'r_ServerSync') + { + c_bServerSync = true; + } + else + { + // End:0x47 + if(VarName == 'r_TargetActor') + { + TargetActorUpdated(); + } + } + super(TgPawn).ReplicatedEvent(VarName); + //return; +} + +event Despawn() +{ + local TgGame_Arena TgGA; + + TgGA = TgGame_Arena(WorldInfo.Game); + // End:0x6B + if(TgGA != none) + { + TgGA.OnMinionDespawn(int(GetTaskForceNumber())); + } + super(TgPawn).Despawn(); + //return; +} + +event TakeDamage(int Damage, Controller InstigatedBy, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + local TgPawn_Character attackerPawn; + local Class TgDamage; + + // End:0x1BD + if((InstigatedBy != none) && !ClassIsChildOf(DamageType, Class'TgGame.TgDamageType_AbilityCost')) + { + attackerPawn = TgPawn_Character(InstigatedBy.Pawn); + // End:0xD1 + if((attackerPawn != none) && (s_PlayerAttacker == none) || s_PlayerAttacker == attackerPawn) + { + ClearTimer('RememberPlayerAttackerExpired'); + s_PlayerAttacker = attackerPawn; + SetTimer(4.0000000, false, 'RememberPlayerAttackerExpired'); + } + TgDamage = Class(DamageType); + // End:0x1BD + if(TgDamage != none) + { + Momentum = RandRange(TgDamage.default.m_bMinImpulse, TgDamage.default.m_bMaxImpulse) * Normal(Momentum); + Momentum.Z += RandRange(TgDamage.default.m_bMinUpKick, TgDamage.default.m_bMaxUpKick); + } + } + super(TgPawn).TakeDamage(Damage, InstigatedBy, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + //return; +} + +function RememberPlayerAttackerExpired() +{ + s_PlayerAttacker = none; + //return; +} + +simulated event TargetActorUpdated() +{ + local TgPawn TargetPawn; + + TargetPawn = TgPawn(r_TargetActor); + // End:0x98 + if(((TargetPawn != none) && TargetPawn.Controller != none) && TargetPawn.Controller.IsLocalPlayerController()) + { + ToggleAggroAlert(true); + } + else + { + ToggleAggroAlert(false); + } + //return; +} + +simulated function ToggleAggroAlert(bool bOn) +{ + // End:0x92 + if(TgSkeletalMeshComponent(Mesh) != none) + { + // End:0x5E + if(bOn) + { + TgSkeletalMeshComponent(Mesh).FxActivateGroup('Targeting Beam', 0); + } + else + { + TgSkeletalMeshComponent(Mesh).FxDeactivateGroup('Targeting Beam', 0); + } + } + //return; +} + +simulated function PlayDeathAnimation() +{ + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + // End:0xA2 + if((WorldInfo.IsPlayingDemo() && WorldInfo.DemoPlayTimeDilation > 1.0000000) && int(r_eDeathReason) == int(0)) + { + PlayFullBodyAnim('Death', 1.0000000, 0.0000000, -1.0000000, false, true); + } + else + { + super(TgPawn).PlayDeathAnimation(); + } + //return; +} + +simulated event ClientUpdateMoving() +{ + // End:0x77 + if(Mesh != none) + { + // End:0x4C + if(m_bMoving) + { + Mesh.FxActivateGroup('SiegeEngineMoving', 0); + } + else + { + Mesh.FxDeactivateGroup('SiegeEngineMoving', 0); + } + } + //return; +} + +simulated event PropertySet(int nPropertyId, float fPreviousValue, float fNewValue) +{ + super(TgPawn).PropertySet(nPropertyId, fPreviousValue, fNewValue); + // End:0x48 + if(nPropertyId == 49) + { + r_fTrackGroundSpeed = fNewValue; + } + //return; +} + +function SetMovementPhysics() +{ + SetPhysics(7); + //return; +} + +simulated function Tick(float DeltaTime) +{ + // End:0x14 + if(int(Role) == int(ROLE_Authority)) + { + } + super(TgPawn).Tick(DeltaTime); + //return; +} + +simulated function DestroyIt(optional bool bSkipFx) +{ + // End:0x10 + if(m_bDestroyed) + { + return; + } + bNetDirty = true; + ForceNetRelevant(); + SetCollision(false, false); + SetPhysics(0); + m_bDestroyed = true; + SetHidden(true); + //return; +} + +function float GetDistanceToEndOfSpline() +{ + local float fDist; + + // End:0x4F + if(m_Spline != none) + { + fDist = m_Spline.DistanceToEndOfSplineChain(); + fDist -= m_fSplineDist; + } + else + { + fDist = 0.0000000; + } + return fDist; + //return ReturnValue; +} + +simulated state Dying +{ + simulated function BeginState(name PreviousStateName) + { + super.BeginState(PreviousStateName); + UpdateMoving(); + //return; + } + stop; +} + +defaultproperties +{ + s_fSpeedMultiplierToCatchUpToSquad=1.2000000 + s_fMaxRelevancyDistanceSquared=10240000.0000000 + c_bApplySplinePitchToMesh=true + m_bAllowBackpeddling=true + // Reference: StaticMeshComponent'TgGame.Default__TgPawn_LanePusherBase.CollisionBox' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionBox' + begin object name="CollisionBox" class=Engine.StaticMeshComponent + StaticMesh=StaticMesh'GOD_CommonAssets.Meshes.1_unit_Box_Xaxis' + ReplacementPrimitive=none + HiddenGame=true + bSeenByAI=true + end object + m_CollisionBox=CollisionBox + c_fClientCorrectionTolerance=10.0000000 + r_fTrackGroundSpeed=200.0000000 + m_eForcedSilhouetteVisibility=EForcedSilhouetteVisibility.FSV_Visible + m_bAffectedByVortices=false + m_bCannotBeVolumeStealthed=true + m_bIsAIVisionBlocker=true + m_bCanBeKnockedBack=false + m_bCausesPushblock=false + m_bPushblockAffectsEnemies=true + m_bUseSmoothNetReceiveRotation=false + m_bForceSmoothCorrection=true + r_bHasAccurateRotation=false + c_bUpdateSkelMeshWhenNotRendered=true + c_bUpdateSkelMeshWhenNotRenderedServer=true + m_bUseSilhouettes=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_LanePusherBase.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Biped.MyLightEnvironment' + begin object name="MyLightEnvironment" + bSynthesizeSHLight=false + end object + LightEnvironment=MyLightEnvironment + FireLocationOffsets[1]=(X=30.0000000,Y=4.0000000,Z=25.0000000) + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_LanePusherBase.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Biped.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + Scale=0.7500000 + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_LanePusherBase.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Biped.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + m_fHitReactionAIPauseTime=0.0000000 + m_fHitReactionBlendOutTime=0.0000000 + // Reference: AudioComponent'TgGame.Default__TgPawn_LanePusherBase.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Biped.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_LanePusherBase.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Biped.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + m_fHUDOverlayZOffset=-200.0000000 + bIgnoreForces=true + bCanBeBaseForPawns=true + AirSpeed=0.0000000 + AirControl=0.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_LanePusherBase.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Biped.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + CollideActors=false + BlockActors=false + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_LanePusherBase.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Biped.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=CollisionBox + Physics=EPhysics.PHYS_Interpolating + bReplicateMovement=false + bUpdateSimulatedPosition=false + bCollideWorld=false + bBlocksTeleport=true + bCollideAsEncroacher=true + m_bSupportsRelativeLocationBase=true + CollisionComponent=CollisionBox + RotationRate=(Pitch=0,Yaw=40000,Roll=2048) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_LanePusherRace.uc b/exported/TgGame/Classes/TgPawn_LanePusherRace.uc new file mode 100755 index 00000000..7c450866 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_LanePusherRace.uc @@ -0,0 +1,135 @@ +class TgPawn_LanePusherRace extends TgPawn_LanePusherBase + native(Pawns) + config(Game) + hidecategories(Navigation); + +var const float s_fTotalSplineLength; +var const float s_fPreviousSplineLength; +var const float r_fProgressPercent; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_fProgressPercent; +} + +// Export UTgPawn_LanePusherRace::execPostPawnSetupServer(FFrame&, void* const) +native function PostPawnSetupServer(); + +// Export UTgPawn_LanePusherRace::execSetSpline(FFrame&, void* const) +native function SetSpline(TgSplineActor NewSpline, optional bool bSnapToStart); + +// Export UTgPawn_LanePusherRace::execIsNonCombat(FFrame&, void* const) +native function bool IsNonCombat(); + +// Export UTgPawn_LanePusherRace::execUpdateTeamScore(FFrame&, void* const) +native function UpdateTeamScore(); + +function ClearFromGRI() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x112 + if((GRI != none) && !GRI.bDeleteMe || GRI.IsPendingKill()) + { + // End:0xCE + if(GRI.r_LanePusher1 == self) + { + GRI.r_LanePusher1 = none; + } + // End:0x112 + if(GRI.r_LanePusher2 == self) + { + GRI.r_LanePusher2 = none; + } + } + //return; +} + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + // End:0x34 + if(super(TgPawn).Died(Killer, dmgType, HitLocation)) + { + ClearFromGRI(); + return true; + } + return false; + //return ReturnValue; +} + +simulated event Destroyed() +{ + ClearFromGRI(); + super(TgPawn).Destroyed(); + //return; +} + +defaultproperties +{ + // Reference: StaticMeshComponent'TgGame.Default__TgPawn_LanePusherRace.CollisionBox' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionBox' + // Archetype: StaticMeshComponent'TgGame.Default__TgPawn_LanePusherBase.CollisionBox' + begin object name="CollisionBox" + ReplacementPrimitive=none + end object + m_CollisionBox=CollisionBox + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_LanePusherRace.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_LanePusherBase.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_LanePusherRace.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_LanePusherBase.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_LanePusherRace.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_LanePusherBase.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_LanePusherRace.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_LanePusherBase.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_LanePusherRace.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_LanePusherBase.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_LanePusherRace.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_LanePusherBase.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_LanePusherRace.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_LanePusherBase.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=CollisionBox + CollisionComponent=CollisionBox +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Lazarus.uc b/exported/TgGame/Classes/TgPawn_Lazarus.uc new file mode 100755 index 00000000..39c88087 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Lazarus.uc @@ -0,0 +1,187 @@ +class TgPawn_Lazarus extends TgPawn_Character + native(ChampLazarus) + config(Game) + hidecategories(Navigation); + +var TgDevice_SelfResurrection m_SelfResurrectionDevice; +var TgDevice_AbsorptionField m_AbsorptionFieldDevice; +var TgDevice_ChargeBurst m_ChargeBurstDevice; +var Controller m_Killer; +var repnotify bool r_bShouldRez; +var bool m_bHasAppliedUltimate; +var repnotify float r_fEnergy; +var repnotify float r_fAccumulatedDamage; +var int m_nChargeNumber; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_bShouldRez, r_fAccumulatedDamage, + r_fEnergy; +} + +simulated event ReplicatedEvent(name VarName) +{ + switch(VarName) + { + // End:0x2C + case 'r_fAccumulatedDamage': + UpdateChargeNumber(); + // End:0x42 + break; + // End:0xFFFF + default: + super.ReplicatedEvent(VarName); + break; + } + //return; +} + +// Export UTgPawn_Lazarus::execPawnOnDamaged(FFrame&, void* const) +native function PawnOnDamaged(out OnDamagedParams Params); + +// Export UTgPawn_Lazarus::execHasCachedResurrectionDevice(FFrame&, void* const) +native function bool HasCachedResurrectionDevice(); + +// Export UTgPawn_Lazarus::execHasCachedAbsorptionDevice(FFrame&, void* const) +native function bool HasCachedAbsorptionDevice(); + +// Export UTgPawn_Lazarus::execHasCachedChargeBurstDevice(FFrame&, void* const) +native function bool HasCachedChargeBurstDevice(); + +// Export UTgPawn_Lazarus::execShouldBeFirstPersonThisTick(FFrame&, void* const) +native function bool ShouldBeFirstPersonThisTick(); + +// Export UTgPawn_Lazarus::execIncrementDamageCharge(FFrame&, void* const) +native function IncrementDamageCharge(float pDamageAmt); + +// Export UTgPawn_Lazarus::execUpdateChargeNumber(FFrame&, void* const) +native function UpdateChargeNumber(); + +// Export UTgPawn_Lazarus::execOnPawnDied(FFrame&, void* const) +native function OnPawnDied(); + +// Export UTgPawn_Lazarus::execOnDismount(FFrame&, void* const) +native function OnDismount(); + +event bool ShouldScoreKill() +{ + // End:0x45 + if(r_bShouldRez) + { + // End:0x45 + if(HasCachedResurrectionDevice()) + { + // End:0x45 + if(int(m_SelfResurrectionDevice.r_mCurrentState) == int(1)) + { + return false; + } + } + } + return true; + //return ReturnValue; +} + +simulated event FakeDeath(Controller Killer) +{ + local TgPawn_Character TgPCharacter; + + PlayDyingEffects(); + // End:0x102 + if(int(Role) == int(ROLE_Authority)) + { + // End:0xBC + if(r_nPhysicalType == 10034) + { + // End:0xBB + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn_Character', TgPCharacter) + { + // End:0xBA + if((TgPCharacter != none) && TgPCharacter.IsAliveAndWell()) + { + TgPCharacter.GlobalOnPlayerDied(self); + } + } + } + WorldInfo.Game.ScoreKill(Killer, Controller); + } + //return; +} + +defaultproperties +{ + m_nChargeNumber=1 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Lazarus.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Lazarus.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Lazarus.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Lazarus.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Lazarus.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Lazarus.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Lazarus.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Lazarus.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Lazarus.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Lex.uc b/exported/TgGame/Classes/TgPawn_Lex.uc new file mode 100755 index 00000000..307b5062 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Lex.uc @@ -0,0 +1,310 @@ +class TgPawn_Lex extends TgPawn_Character + native(ChampLex) + config(Game) + hidecategories(Navigation); + +const MAX_THE_LAW_TARGETS = 5; + +enum ETheLawTargetState +{ + ETLTS_WontExecute, // 0 + ETLTS_WillExecute, // 1 + ETLTS_Firing, // 2 + ETLTS_MAX // 3 +}; + +var TgDevice_Vengeance_Lex m_VengeanceDevice; +var TgDevice_CombatSlide m_CombatSlideDevice; +var TgDevice_InPursuit m_InPursuitDevice; +var TgWeaponMeshActor_LexInhand m_WeaponMeshActorLexInhand; +var init array m_TargetList; +var TgPawn m_Target; +var float m_MaxSlideCameraAngle; +var int m_PrevCameraYaw; +var bool c_bUltFiring; +var bool c_bPursuitFiring; +var bool m_bFireLeftWeapon; +var repnotify TgPawn_Character r_Targets[5]; +var repnotify TgPawn_Lex.ETheLawTargetState r_TargetStates[5]; +var repnotify int r_nInhandAmmoRemaining; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_TargetStates, r_Targets; + + // Pos:0x020 + if(int(Role) == int(ROLE_Authority)) + r_nInhandAmmoRemaining; +} + +// Export UTgPawn_Lex::execIsFiringAtMarkShotMark(FFrame&, void* const) +native function bool IsFiringAtMarkShotMark(); + +// Export UTgPawn_Lex::execGlobalOnPlayerDied(FFrame&, void* const) +native function GlobalOnPlayerDied(TgPawn_Character Player); + +// Export UTgPawn_Lex::execGetCachedVengeanceDevice(FFrame&, void* const) +native function TgDevice_Vengeance_Lex GetCachedVengeanceDevice(); + +// Export UTgPawn_Lex::execGetVengeanceLifesteal(FFrame&, void* const) +native function float GetVengeanceLifesteal(TgPawn Target); + +// Export UTgPawn_Lex::execGetTargetActor(FFrame&, void* const) +native function Actor GetTargetActor(); + +// Export UTgPawn_Lex::execGetTurnRotatorOverride(FFrame&, void* const) +native function bool GetTurnRotatorOverride(out int nYawOffset); + +simulated event ReplicatedEvent(name VarName) +{ + switch(VarName) + { + // End:0x2C + case 'r_Targets': + ManageBeams(); + // End:0x5B + break; + // End:0x45 + case 'r_nInhandAmmoRemaining': + OnAmmoChange(); + // End:0x5B + break; + // End:0xFFFF + default: + super.ReplicatedEvent(VarName); + break; + } + //return; +} + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + // End:0x55 + if(m_VengeanceDevice != none) + { + m_VengeanceDevice.SetMarkedPlayer(TgRepInfo_Player(Killer.PlayerReplicationInfo)); + } + return super.Died(Killer, dmgType, HitLocation); + //return ReturnValue; +} + +simulated event PostTimeLapse(bool bPlayOfTheGame) +{ + super(TgPawn).PostTimeLapse(bPlayOfTheGame); + c_bUltFiring = false; + c_bPursuitFiring = false; + //return; +} + +simulated function OnRespawn() +{ + super.OnRespawn(); + c_bUltFiring = false; + c_bPursuitFiring = false; + //return; +} + +simulated function InterceptInputDeltaRotation(out Rotator rDeltaRotation) +{ + local int nNormalizedRot, nNormalizedChargeMin, nNormalizedChargeMax; + + // End:0x8A + if(m_CombatSlideDevice == none) + { + m_CombatSlideDevice = TgDevice_CombatSlide(GetDeviceByClass(Class'TgGame.TgDevice_CombatSlide')); + // End:0x8A + if(m_CombatSlideDevice != none) + { + m_MaxSlideCameraAngle = m_CombatSlideDevice.GetCurrentFire().GetConeAttackAngle() * 182.0444000; + } + } + // End:0x2DA + if((m_CombatSlideDevice != none) && m_CombatSlideDevice.IsFiring()) + { + nNormalizedRot = NormalizeRotAxis(Rotation.Yaw + rDeltaRotation.Yaw); + nNormalizedChargeMin = NormalizeRotAxis(int(r_fChargeInitialYaw - m_MaxSlideCameraAngle)); + nNormalizedChargeMax = NormalizeRotAxis(int(r_fChargeInitialYaw + m_MaxSlideCameraAngle)); + // End:0x20E + if(nNormalizedChargeMin < nNormalizedChargeMax) + { + // End:0x1C2 + if(nNormalizedRot < nNormalizedChargeMin) + { + rDeltaRotation.Yaw += (nNormalizedChargeMin - nNormalizedRot); + } + else + { + // End:0x20B + if(nNormalizedRot > nNormalizedChargeMax) + { + rDeltaRotation.Yaw += (nNormalizedChargeMax - nNormalizedRot); + } + } + } + else + { + // End:0x2DA + if((nNormalizedRot < nNormalizedChargeMin) && nNormalizedRot > nNormalizedChargeMax) + { + // End:0x2A8 + if(Abs(float(nNormalizedChargeMin - nNormalizedRot)) < Abs(float(nNormalizedChargeMax - nNormalizedRot))) + { + rDeltaRotation.Yaw += (nNormalizedChargeMin - nNormalizedRot); + } + else + { + rDeltaRotation.Yaw += (nNormalizedChargeMax - nNormalizedRot); + } + } + } + } + //return; +} + +simulated function OnAmmoChange() +{ + local TgDevice inhand; + local TgDeviceForm_LexInhand LexInhandDeviceForm; + + inhand = GetDeviceByEqPoint(1); + // End:0x83 + if(inhand != none) + { + LexInhandDeviceForm = TgDeviceForm_LexInhand(inhand.c_DeviceForm); + // End:0x83 + if(LexInhandDeviceForm != none) + { + LexInhandDeviceForm.OnAmmoChange(); + } + } + //return; +} + +simulated function SetDualFireParity(bool bLeftFire) +{ + local TgDevice inhand; + local TgDeviceForm_LexInhand LexInhandDeviceForm; + + inhand = GetDeviceByEqPoint(1); + // End:0x8D + if(inhand != none) + { + LexInhandDeviceForm = TgDeviceForm_LexInhand(inhand.c_DeviceForm); + // End:0x8D + if(LexInhandDeviceForm != none) + { + LexInhandDeviceForm.SetDualFireParity(bLeftFire); + } + } + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x53 + case 1: + return "PC_Lawman_Skin00A.Anims.AS_PC_Lawman_Skin00A_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +simulated event ManageBeams() +{ + local TgWeaponMeshActor_LexInhand InhandWeaponMesh; + + InhandWeaponMesh = TgWeaponMeshActor_LexInhand(m_WeaponMesh); + // End:0x4A + if(InhandWeaponMesh != none) + { + InhandWeaponMesh.ManageBeams(); + } + //return; +} + +defaultproperties +{ + m_fMountZoomOverride=1.1000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Lex.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Lex.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bUsesRecoil=true + m_sGameplayPackage="Lex" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Lex.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Lex.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Lex.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Lex.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Lex.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + BaseEyeHeight=45.0000000 + EyeHeight=45.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Lex.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Lex.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Longbow.uc b/exported/TgGame/Classes/TgPawn_Longbow.uc new file mode 100755 index 00000000..6e2e84e8 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Longbow.uc @@ -0,0 +1,215 @@ +class TgPawn_Longbow extends TgPawn_Character + native(ChampLongbow) + config(Game) + hidecategories(Navigation); + +var TgDevice_LongbowInhand m_CachedInhand; +var repnotify bool r_bImpalerArrowIsActive; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bImpalerArrowIsActive; +} + +// Export UTgPawn_Longbow::execUpdateStealthScarfMaterial(FFrame&, void* const) +native function UpdateStealthScarfMaterial(); + +// Export UTgPawn_Longbow::execHasCachedInhandDevice(FFrame&, void* const) +native function bool HasCachedInhandDevice(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x5F + if(VarName == 'r_bImpalerArrowIsActive') + { + // End:0x5C + if(int(Role) != int(ROLE_AutonomousProxy)) + { + // End:0x5C + if(HasCachedInhandDevice()) + { + m_CachedInhand.m_fImpalerReticleAnimationTimer = 1.0000000; + } + } + } + else + { + super.ReplicatedEvent(VarName); + } + //return; +} + +simulated function ToggleImpalerArrow(bool bEnabled) +{ + r_bImpalerArrowIsActive = bEnabled; + bNetDirty = true; + // End:0x52 + if(HasCachedInhandDevice()) + { + m_CachedInhand.m_fImpalerReticleAnimationTimer = 1.0000000; + } + //return; +} + +simulated event ApplyStealthClient(optional bool bForce = false) +{ + // End:0x2A + if(int(c_eIsStealthed) != int(r_eIsStealthed)) + { + UpdateStealthScarfMaterial(); + } + super(TgPawn).ApplyStealthClient(bForce); + //return; +} + +simulated event KillAllOwnedPets() +{ + super(TgPawn).KillAllOwnedPets(); + ClearImpalerArrow(); + //return; +} + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + ClearImpalerArrow(); + return super.Died(Killer, dmgType, HitLocation); + //return ReturnValue; +} + +simulated function ClearImpalerArrow() +{ + ToggleImpalerArrow(false); + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x55 + case 1: + return "PC_LongBow_Skin00A.Anims.AS_PC_LongBow_Skin00A_Mount_Horse"; + // End:0x8E + case 2: + return "MT_Horse_Test.Anims.AS_PC_ShaLin_Test_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +simulated event bool RespectsEmoteGlobalCooldown(TgPawn.EEmote Emote) +{ + // End:0x16 + if(int(Emote) == int(14)) + { + return false; + } + return super(TgPawn).RespectsEmoteGlobalCooldown(Emote); + //return ReturnValue; +} + +simulated event float GetEmoteInternalCooldown(TgPawn.EEmote Emote) +{ + // End:0x1A + if(int(Emote) == int(14)) + { + return 1.0000000; + } + return super(TgPawn).GetEmoteInternalCooldown(Emote); + //return ReturnValue; +} + +simulated event bool CanEmoteDuringTimelapse(TgPawn.EEmote Emote) +{ + // End:0x16 + if(int(Emote) == int(14)) + { + return true; + } + return super(TgPawn).CanEmoteDuringTimelapse(Emote); + //return ReturnValue; +} + +defaultproperties +{ + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Longbow.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Longbow.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="ShaLin" + m_EmoteChancesAbility=(fAbility2=1.0000000) + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Longbow.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Longbow.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Longbow.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Longbow.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Longbow.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + BaseEyeHeight=50.0000000 + EyeHeight=50.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Longbow.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Longbow.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Makoa.uc b/exported/TgGame/Classes/TgPawn_Makoa.uc new file mode 100755 index 00000000..2d044a6a --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Makoa.uc @@ -0,0 +1,230 @@ +class TgPawn_Makoa extends TgPawn_Character + native(ChampMakoa) + config(Game) + hidecategories(Navigation); + +var float m_fSmashSpeedModifier; +var float m_fShellSpinZoomOverride; +var bool r_bShellShieldIsActive; +var repnotify bool r_bAncientRageActive; +var bool r_bAbility1CanEmote; +var float m_fShellShieldSpeedModifier; +var float m_fShellShieldZoomOverride; +var TgSpecialFx m_ShellShieldMovementFX; +var TgDevice m_AncientRageInHand; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bAbility1CanEmote, r_bAncientRageActive, + r_bShellShieldIsActive; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x2E + if(VarName == 'r_bAncientRageActive') + { + PlayAncientRageEffects(r_bAncientRageActive); + } + else + { + super.ReplicatedEvent(VarName); + } + //return; +} + +simulated function PlayAncientRageEffects(bool bEnabled) +{ + local TgDevice newFiringDevice; + local WeaponMeshSwapStrategy SwapStrategy; + + // End:0x29 + if(int(Role) == int(ROLE_Authority)) + { + r_bAncientRageActive = bEnabled; + } + // End:0x4C + if(bEnabled) + { + newFiringDevice = m_AncientRageInHand; + } + else + { + newFiringDevice = GetDeviceByEqPoint(1); + } + // End:0xB5 + if(((newFiringDevice != none) && IsLocallyControlled()) && PlayerController(Controller) != none) + { + SetTargetingDevice(newFiringDevice, SwapStrategy); + } + //return; +} + +simulated event SetTargetingDevice(TgDevice Dev, WeaponMeshSwapStrategy SwapStrategy) +{ + // End:0x5D + if((((Dev != none) && Dev == (GetDeviceByEqPoint(1))) && r_bAncientRageActive) && m_AncientRageInHand != none) + { + Dev = m_AncientRageInHand; + } + super(TgPawn).SetTargetingDevice(Dev, SwapStrategy); + //return; +} + +simulated function GetCameraZoomOverride(out float fZoom, out float fZoomDuration) +{ + super.GetCameraZoomOverride(fZoom, fZoomDuration); + // End:0x62 + if((m_fShellSpinZoomOverride > 0.0000000) || m_fShellShieldZoomOverride > 0.0000000) + { + fZoom = FMax(m_fShellSpinZoomOverride, m_fShellShieldZoomOverride); + } + //return; +} + +simulated event float GetAbilityEmoteChance(TgPawn.EEmote Emote) +{ + local float fAbilityEmoteChance; + + fAbilityEmoteChance = super(TgPawn).GetAbilityEmoteChance(Emote); + // End:0x51 + if(int(Emote) == int(13)) + { + // End:0x4B + if(r_bAbility1CanEmote) + { + return fAbilityEmoteChance; + } + else + { + return -1.0000000; + } + } + return fAbilityEmoteChance; + //return ReturnValue; +} + +simulated function name GetFootStepOverride() +{ + // End:0x17 + if(r_bAncientRageActive) + { + return 'FootstepSpecial1'; + } + return super(TgPawn).GetFootStepOverride(); + //return ReturnValue; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x44 + case 1: + return "PC_Makoa.Anims.AS_PC_Makoa_3p_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +simulated function OnDeviceFormHit(int nEquipSlot, Actor Target, float DamageAmount, Vector HitLocation, Vector HitNormal, const out ExtraDamageInfo ExtraInfo) +{ + local TgDeviceForm DeviceForm; + + DeviceForm = c_EquipForm[nEquipSlot]; + // End:0xB2 + if(((DeviceForm != none) && Target != none) && DamageAmount > 0.0000000) + { + // End:0xB2 + if(nEquipSlot == 18) + { + DeviceForm.DeactivateFxGroup('MakoaSmashHit'); + DeviceForm.ActivateFxGroup('MakoaSmashHit'); + } + } + //return; +} + +defaultproperties +{ + m_fSmashSpeedModifier=1.0000000 + m_fShellShieldSpeedModifier=1.0000000 + m_fMountZoomOverride=1.5000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Makoa.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Makoa.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="Makoa" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Makoa.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Makoa.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Makoa.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Makoa.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Makoa.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Makoa.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Makoa.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_MalDamba.uc b/exported/TgGame/Classes/TgPawn_MalDamba.uc new file mode 100755 index 00000000..6cfdf1f6 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_MalDamba.uc @@ -0,0 +1,97 @@ +class TgPawn_MalDamba extends TgPawn_Character + native(ChampMalDamba) + config(Game) + hidecategories(Navigation); + +var TgDeviceFire_SnakeToss m_CachedSnakeTossDeviceFire; + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x4D + case 1: + return "PC_Maldune.Anims.AS_PC_Maldune_Skin00A_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_MalDamba.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_MalDamba.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="MalDamba" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_MalDamba.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_MalDamba.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_MalDamba.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_MalDamba.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_MalDamba.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_MalDamba.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_MalDamba.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Oracle.uc b/exported/TgGame/Classes/TgPawn_Oracle.uc new file mode 100755 index 00000000..7a8d82fe --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Oracle.uc @@ -0,0 +1,189 @@ +class TgPawn_Oracle extends TgPawn_Character + native(ChampOracle) + config(Game) + hidecategories(Navigation); + +const ORACLE_MAX_STACKS_PER_TARGET = 4; +const ORACLE_MAX_STACK_TARGETS = 10; +const ORACLE_STACK_FX_GROUP_ID = 57644; +const ORACLE_STACK_1P_FX_ID = 7739; +const ORACLE_STACK_3P_FX_ID = 7740; + +var Actor r_RestoreSoulTarget; +var Vector r_RestoreSoulHitOffset; +var bool r_bRestoreSoulActive; +var bool r_bHasAgonyTalent; +var int r_SoulStackTargetPawnId[10]; +var repnotify int r_SoulStackTargetCount[10]; +var int c_CachedSoulStackTargetCount[10]; +var Vector c_InterpRestoreSoulHitOffset; +var float c_fRestoreSoulHitOffsetInterpSpeed; +var() float m_fFrictionMultiplier; +var int m_nStackAddedVictimFxId; +var int m_nStackAddedSourceFxId; +var int m_nMaxStacksVictimFxId; +var int m_nMaxStacksSourceFxId; + +replication +{ + // Pos:0x000 + if(bNetDirty) + r_RestoreSoulHitOffset, r_RestoreSoulTarget, + r_SoulStackTargetCount, r_SoulStackTargetPawnId, + r_bHasAgonyTalent, r_bRestoreSoulActive; +} + +simulated event ReplicatedEvent(name VarName) +{ + local TgDeviceForm_OracleInhand inhandDeviceForm; + + switch(VarName) + { + // End:0x2C + case 'r_SoulStackTargetCount': + OnSoulStacksReplicated(); + // End:0xC6 + break; + // End:0xC3 + case 'r_bRestoreSoulActive': + inhandDeviceForm = TgDeviceForm_OracleInhand(c_EquipForm[1]); + // End:0xC0 + if(inhandDeviceForm != none) + { + inhandDeviceForm.UpdateAmmoCountFx(inhandDeviceForm.m_fPreviousAmmoPerc, inhandDeviceForm.m_fCurrentAmmoPerc); + } + // End:0xC6 + break; + // End:0xFFFF + default: + break; + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + super.Tick(DeltaSeconds); + // End:0xC2 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x77 + if((r_RestoreSoulTarget != none) && r_RestoreSoulTarget != r_TargetActor) + { + c_InterpRestoreSoulHitOffset = r_RestoreSoulHitOffset; + } + c_InterpRestoreSoulHitOffset = VInterpTo(c_InterpRestoreSoulHitOffset, r_RestoreSoulHitOffset, DeltaSeconds, c_fRestoreSoulHitOffsetInterpSpeed); + r_TargetActor = r_RestoreSoulTarget; + } + // End:0xF5 + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + UpdateSoulStacks(); + } + //return; +} + +// Export UTgPawn_Oracle::execUpdateSoulStacks(FFrame&, void* const) +native function UpdateSoulStacks(); + +// Export UTgPawn_Oracle::execOnSoulStacksReplicated(FFrame&, void* const) +native function OnSoulStacksReplicated(); + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x53 + case 1: + return "PC_Oracle_Skin00A.Anims.AS_PC_Oracle_Skin00A_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + m_fFrictionMultiplier=0.2500000 + m_nStackAddedVictimFxId=7884 + m_nStackAddedSourceFxId=7883 + m_nMaxStacksVictimFxId=7849 + m_nMaxStacksSourceFxId=7850 + s_bReplicateInhandAmmo=true + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Oracle.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Oracle.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bShouldApplyCCImmuneOverlay=false + m_sGameplayPackage="Seris" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Oracle.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Oracle.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Oracle.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Oracle.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Oracle.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Oracle.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Oracle.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Owl.uc b/exported/TgGame/Classes/TgPawn_Owl.uc new file mode 100755 index 00000000..c96b460c --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Owl.uc @@ -0,0 +1,268 @@ +class TgPawn_Owl extends TgPawn_Character + native(ChampOwl) + config(Game) + hidecategories(Navigation); + +var bool m_bUseSecondWeapon; +var bool m_bSwappingWeapons; +var bool c_bUseSecondDeathAnim; +var const int m_nAltInhandSlot; +var const int m_nAltAltfireSlot; +var float m_fOwlStealthJuice; +var float m_fMaxOwlStealthJuice; +var TgDevice_OwlStealth m_CachedOwlStealth; + +// Export UTgPawn_Owl::execGetCurrentInhandDevice(FFrame&, void* const) +native function TgDevice GetCurrentInhandDevice(); + +// Export UTgPawn_Owl::execGetUISkillEqpSlotOverride(FFrame&, void* const) +native function int GetUISkillEqpSlotOverride(int nEquipSlot, optional bool bAltSlot = false); + +// Export UTgPawn_Owl::execIsInScope(FFrame&, void* const) +native function bool IsInScope(); + +// Export UTgPawn_Owl::execOnPawnDied(FFrame&, void* const) +native function OnPawnDied(); + +simulated function PlayDying(Class dmgType, Vector HitLoc) +{ + c_bUseSecondDeathAnim = m_bUseSecondWeapon; + super(TgPawn).PlayDying(dmgType, HitLoc); + //return; +} + +simulated event name GetDeathAnimName() +{ + // End:0x17 + if(c_bUseSecondDeathAnim) + { + return 'Pistol_Death'; + } + return 'Death'; + //return ReturnValue; +} + +simulated function SwapToSecondWeapon(bool bSecondWeaponActive) +{ + local WeaponMeshSwapStrategy SwapStrategy; + + m_bUseSecondWeapon = bSecondWeaponActive; + SetTargetingDevice(m_EquippedDevices[((bSecondWeaponActive) ? m_nAltInhandSlot : 1)], SwapStrategy); + ShowReticle(bSecondWeaponActive); + m_bSwappingWeapons = true; + //return; +} + +simulated function FinishedWeaponSwap() +{ + m_bSwappingWeapons = false; + //return; +} + +simulated function ShowReticle(bool bShow) +{ + local TgPlayerController TgPC; + + TgPC = TgPlayerController(Controller); + // End:0x55 + if(TgPC != none) + { + TgPC.SetReticleVisibility(bShow, true); + } + //return; +} + +simulated event SetTargetingDevice(TgDevice Dev, WeaponMeshSwapStrategy SwapStrategy) +{ + // End:0x66 + if(((Dev != none) && int(Dev.r_eEquippedAt) == int(1)) && m_bUseSecondWeapon) + { + Dev = m_EquippedDevices[m_nAltInhandSlot]; + } + super(TgPawn).SetTargetingDevice(Dev, SwapStrategy); + //return; +} + +simulated event InterruptInhandReload() +{ + super(TgPawn).InterruptInhandReload(); + // End:0x7A + if((m_EquippedDevices[m_nAltInhandSlot] != none) && m_EquippedDevices[m_nAltInhandSlot].m_bCanReloadEarly) + { + m_EquippedDevices[m_nAltInhandSlot].InterruptReload(); + } + //return; +} + +simulated event bool StartAction(TgDevice Dev, optional out TgObject.EDeviceFailType failType, optional bool bUpdateTimeStamp = true) +{ + // End:0x17 + if(Dev == none) + { + return false; + } + // End:0xC4 + if(m_bUseSecondWeapon && (int(Dev.r_eEquippedAt) == int(1)) || int(Dev.r_eEquippedAt) == int(16)) + { + Dev = m_EquippedDevices[((Dev.m_bHandDevice) ? m_nAltInhandSlot : m_nAltAltfireSlot)]; + } + return super(TgPawn).StartAction(Dev, failType, bUpdateTimeStamp); + //return ReturnValue; +} + +event InterruptStealth(optional TgDevice OriginatingDevice) +{ + // End:0xC1 + if((OriginatingDevice == none) || !OriginatingDevice.IsA('TgDevice_WeaponSwap') && !OriginatingDevice.IsA('TgDevice_Scope')) + { + // End:0xA0 + if(int(r_eIsStealthed) != int(0)) + { + // End:0xA0 + if(m_CachedOwlStealth != none) + { + m_CachedOwlStealth.InterruptFiring(); + } + } + ApplyStealthServer(0); + super(TgPawn).InterruptStealth(OriginatingDevice); + } + //return; +} + +event ApplyStealthServer(TgPawn.STEALTH_TYPE eStealthed, optional float fRate = 9999.0000000, optional bool bForce = false) +{ + s_fDamageTakenDuringStealth = 0.0000000; + super(TgPawn).ApplyStealthServer(eStealthed, fRate, bForce); + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x4D + case 1: + return "pc_owl_skin00a.Anims.AS_PC_Owl_Skin00A_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +event ModifyStealthJuice(int nAmtModified, optional bool bSendToClient = false) +{ + local float fPrevStealthJuice; + + fPrevStealthJuice = m_fOwlStealthJuice; + m_fOwlStealthJuice = FClamp(m_fOwlStealthJuice + float(nAmtModified), 0.0000000, m_fMaxOwlStealthJuice); + UpdateOwlStealthFX(fPrevStealthJuice, m_fOwlStealthJuice); + // End:0x95 + if(bSendToClient && !IsLocallyControlled()) + { + ClientModifyStealthJuice(nAmtModified); + } + //return; +} + +reliable client simulated function ClientModifyStealthJuice(int nAmtModified) +{ + local float fPrevStealthJuice; + + fPrevStealthJuice = m_fOwlStealthJuice; + m_fOwlStealthJuice = FClamp(m_fOwlStealthJuice + float(nAmtModified), 0.0000000, m_fMaxOwlStealthJuice); + UpdateOwlStealthFX(fPrevStealthJuice, m_fOwlStealthJuice); + //return; +} + +simulated function bool ShouldUseScopeSensitivity() +{ + return IsInScope(); + //return ReturnValue; +} + +// Export UTgPawn_Owl::execUpdateOwlStealthFX(FFrame&, void* const) +native function UpdateOwlStealthFX(float fPrevStealthJuice, float fCurrentStealthJuice); + +defaultproperties +{ + m_nAltInhandSlot=18 + m_nAltAltfireSlot=12 + m_fOwlStealthJuice=100.0000000 + m_fMaxOwlStealthJuice=100.0000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Owl.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Owl.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bUsesRecoil=true + m_sGameplayPackage="Owl" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Owl.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Owl.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Owl.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Owl.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Owl.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Owl.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Owl.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Pet.uc b/exported/TgGame/Classes/TgPawn_Pet.uc new file mode 100755 index 00000000..1dfa7c22 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Pet.uc @@ -0,0 +1,234 @@ +class TgPawn_Pet extends TgPawn + native(Pawns) + config(Game) + hidecategories(Navigation); + +var float m_fOwnerPhysPowerItemPercent; +var float m_fOwnerMagicalPowerItemPercent; +var float m_fOwnerUltilityPowerItemPercent; +var TgObject.EPetPhase s_PetPhase; +var TgObject.EPetPosition s_PetPosition; +var Rotator s_LastPositionAdjustmentRotation; +var Vector s_InterpolatedPetPosition; +var Vector s_InterpolatedPetOwnerPosition; +var float s_fPetPositionDistanceMultiplier; +var float s_fOwnerVelocityTime; +var float s_fSmoothedMaxSpeed; +var transient TgSpecialFx c_BeamFX; +var repnotify Rotator r_InitialOrientation; +var export editinline ParticleSystemComponent c_AimVisibilityMesh; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_InitialOrientation; +} + +// Export UTgPawn_Pet::execGetPhysicalPowerItem(FFrame&, void* const) +native function float GetPhysicalPowerItem(); + +// Export UTgPawn_Pet::execGetMagicalPowerItem(FFrame&, void* const) +native function float GetMagicalPowerItem(); + +// Export UTgPawn_Pet::execGetUtilityPowerItem(FFrame&, void* const) +native function float GetUtilityPowerItem(); + +// Export UTgPawn_Pet::execIsDamageOverTimeImmune(FFrame&, void* const) +native function bool IsDamageOverTimeImmune(); + +// Export UTgPawn_Pet::execGetGiantCollisionCylinderSize(FFrame&, void* const) +native function GetGiantCollisionCylinderSize(out float Radius, out float Height); + +// Export UTgPawn_Pet::execGetSmallCollisionCylinderSize(FFrame&, void* const) +native function GetSmallCollisionCylinderSize(out float Radius, out float Height); + +// Export UTgPawn_Pet::execCorrectLocationWhileChangingSize(FFrame&, void* const) +native function CorrectLocationWhileChangingSize(float HeightDelta); + +// Export UTgPawn_Pet::execGetDefaultMeshScale(FFrame&, void* const) +native function float GetDefaultMeshScale(); + +// Export UTgPawn_Pet::execDirtyAttachmentTransforms(FFrame&, void* const) +native function DirtyAttachmentTransforms(); + +// Export UTgPawn_Pet::execCanSeeActor(FFrame&, void* const) +native function bool CanSeeActor(Actor Other); + +// Export UTgPawn_Pet::execDeviceOnStopFire(FFrame&, void* const) +native function DeviceOnStopFire(TgDevice Dev, optional bool WasInterrupted); + +// Export UTgPawn_Pet::execDeviceOnKilled(FFrame&, void* const) +native function DeviceOnKilled(TgDevice Dev, const out ImpactInfo Impact, float fDamage); + +// Export UTgPawn_Pet::execDeviceAdjustDamage(FFrame&, void* const) +native function DeviceAdjustDamage(out AdjustDamageParams Params, out float fDamage); + +// Export UTgPawn_Pet::execDeviceOnDamaged(FFrame&, void* const) +native function DeviceOnDamaged(out OnDamagedParams Params); + +// Export UTgPawn_Pet::execDeviceOnHit(FFrame&, void* const) +native function DeviceOnHit(TgDevice Dev, const out ImpactInfo Impact); + +function PossessedBy(Controller C, bool bVehicleTransition) +{ + local TgAIController aic; + + super.PossessedBy(C, bVehicleTransition); + aic = TgAIController(C); + // End:0x6C + if(aic != none) + { + aic.SeePawnClearTime = 0.5000000; + } + //return; +} + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + r_InitialOrientation = Rotation; + // End:0x66 + if((int(Role) == int(ROLE_Authority)) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + SetAimVisibilityMesh(); + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + switch(VarName) + { + // End:0x2C + case 'r_InitialOrientation': + SetAimVisibilityMesh(); + // End:0x2F + break; + // End:0xFFFF + default: + break; + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated function SetAimVisibilityMesh() +{ + local Vector translationOffset; + local bool bIsFriendly; + local ParticleChannelContainer PSysChannels; + + bIsFriendly = IsFriendlyWithLocalPawn(); + translationOffset = vect(0.0000000, 0.0000000, 0.0000000); + translationOffset.Z -= (GetCollisionHeight()); + PSysChannels.Friendly = bIsFriendly; + PSysChannels.Enemy = !PSysChannels.Friendly; + // End:0x182 + if(c_AimVisibilityMesh != none) + { + c_AimVisibilityMesh.m_ParticleChannels = PSysChannels; + c_AimVisibilityMesh.ActivateSystem(); + c_AimVisibilityMesh.SetAbsolute(false, true, false); + c_AimVisibilityMesh.SetRotation(r_InitialOrientation); + c_AimVisibilityMesh.SetTranslation(translationOffset); + } + //return; +} + +function bool ShouldScoreKill() +{ + return false; + //return ReturnValue; +} + +simulated function PlayDyingEffects() +{ + super.PlayDyingEffects(); + // End:0x35 + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0x63 + if(c_AimVisibilityMesh != none) + { + c_AimVisibilityMesh.DeactivateSystem(); + } + //return; +} + +simulated function PlayDeathAnimation() +{ + super.PlayDeathAnimation(); + c_bMeshHiddenDueToDeath = true; + //return; +} + +defaultproperties +{ + m_fOwnerPhysPowerItemPercent=1.0000000 + m_fOwnerMagicalPowerItemPercent=1.0000000 + m_fOwnerUltilityPowerItemPercent=1.0000000 + s_fPetPositionDistanceMultiplier=1.5000000 + c_bUpdatesWeaponMesh=true + m_bCanBeKnockedBack=false + m_bIgnoreTearOffMomentum=true + m_bUseOutlines=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Pet.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Pet.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Pet.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Pet.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Pet.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + m_nSuccessfulHitSpecialFXId=4438 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Pet.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Pet.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + CollisionComponent=CollisionCylinder + RotationRate=(Pitch=0,Yaw=40000,Roll=2048) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Pip.uc b/exported/TgGame/Classes/TgPawn_Pip.uc new file mode 100755 index 00000000..86f6ec26 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Pip.uc @@ -0,0 +1,302 @@ +class TgPawn_Pip extends TgPawn_Character + native(ChampPip) + config(Game) + hidecategories(Navigation); + +var bool r_bWeightless; +var bool m_bWeightlessDurationEnded; +var bool r_bAcrobaticsActive; +var bool r_bHasMegaPotion; +var float m_fWeightlessMaxSpeedModifier; +var float m_fWeightlessJumpZModifier; +var float r_fRadiusForHealingPotionFX; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && !bNetOwner || bDemoRecording) + r_bWeightless; + + // Pos:0x031 + if(int(Role) == int(ROLE_Authority)) + r_bAcrobaticsActive, r_bHasMegaPotion, + r_fRadiusForHealingPotionFX; +} + +simulated event PlayJumpSound() +{ + local array JumpFxList; + local TgSpecialFx JumpFx; + local int I; + + // End:0x11 + if(Mesh == none) + { + return; + } + // End:0xFC + if(r_bWeightless) + { + JumpFxList = Mesh.FxGetAll('Jump_Special', 0); + I = 0; + J0x5F: + + // End:0xF9 [Loop If] + if(I < JumpFxList.Length) + { + JumpFx = TgSpecialFx(JumpFxList[I]); + // End:0xEB + if(JumpFx != none) + { + JumpFx.c_Owner = self; + JumpFx.PlaySound(); + } + I++; + // [Loop Continue] + goto J0x5F; + } + } + else + { + super(TgPawn).PlayJumpSound(); + } + //return; +} + +function StartWeightless(float fMaxSpeedMultiplier, float fJumpZMultiplier) +{ + r_bWeightless = true; + m_bWeightlessDurationEnded = false; + m_fWeightlessMaxSpeedModifier = fMaxSpeedMultiplier; + m_fWeightlessJumpZModifier = fJumpZMultiplier; + bNetDirty = true; + DoJump(true); + //return; +} + +singular function EndWeightless() +{ + // End:0x2C + if(int(Physics) != int(2)) + { + r_bWeightless = false; + bNetDirty = true; + } + m_bWeightlessDurationEnded = true; + //return; +} + +simulated function float GetJumpSpeedMultiplier() +{ + // End:0x1A + if(r_bWeightless) + { + return m_fWeightlessJumpZModifier; + } + else + { + return 1.0000000; + } + //return ReturnValue; +} + +function bool DoJump(bool bUpdating, optional float JumpZSpeed = 0.0000000) +{ + local Vector AccelDir, HorizontalVelocity; + local float fWeightlessMaxSpeed; + + // End:0x1A5 + if((r_bWeightless && bJumpCapable) && CheckPhysicsStateForJumping()) + { + // End:0x17F + if(!IsZero(Acceleration)) + { + AccelDir = Normal2D(Acceleration); + fWeightlessMaxSpeed = GroundSpeed * m_fWeightlessMaxSpeedModifier; + HorizontalVelocity = Velocity; + HorizontalVelocity.Z = 0.0000000; + HorizontalVelocity += (AccelDir * fWeightlessMaxSpeed); + // End:0x10D + if(VSize2D(HorizontalVelocity) > fWeightlessMaxSpeed) + { + HorizontalVelocity = Normal2D(HorizontalVelocity) * fWeightlessMaxSpeed; + } + Velocity.X = HorizontalVelocity.X; + Velocity.Y = HorizontalVelocity.Y; + } + // End:0x1A5 + if(JumpZSpeed == 0.0000000) + { + JumpZSpeed = JumpZ; + } + } + return super.DoJump(bUpdating, JumpZSpeed); + //return ReturnValue; +} + +event Landed(Vector HitNormal, Actor FloorActor) +{ + super(TgPawn_Biped).Landed(HitNormal, FloorActor); + // End:0x35 + if(m_bWeightlessDurationEnded) + { + r_bWeightless = false; + } + //return; +} + +simulated function SetPipGlowEnabled(bool bEnabled) +{ + local MaterialInstance theMaterialInstance; + local float fPipGlowValue; + + fPipGlowValue = ((bEnabled) ? 1.0000000 : 0.0000000); + // End:0xA5 + if(Mesh != none) + { + theMaterialInstance = MaterialInstance(Mesh.GetMaterial(0)); + // End:0xA5 + if(theMaterialInstance != none) + { + theMaterialInstance.SetScalarParameterValue('PipGlow', fPipGlowValue); + } + } + // End:0x20C + if(m_WeaponMesh != none) + { + // End:0x160 + if(m_WeaponMesh.m_WeaponMesh1P != none) + { + theMaterialInstance = MaterialInstance(m_WeaponMesh.m_WeaponMesh1P.GetMaterial(0)); + // End:0x160 + if(theMaterialInstance != none) + { + theMaterialInstance.SetScalarParameterValue('PipGlow', fPipGlowValue); + } + } + // End:0x20C + if(m_WeaponMesh.m_WeaponMesh3P != none) + { + theMaterialInstance = MaterialInstance(m_WeaponMesh.m_WeaponMesh3P.GetMaterial(0)); + // End:0x20C + if(theMaterialInstance != none) + { + theMaterialInstance.SetScalarParameterValue('PipGlow', fPipGlowValue); + } + } + } + //return; +} + +simulated function TickScale(float DeltaSeconds) +{ + local float fCurrentScale; + + fCurrentScale = GetPropCurrentValue(118); + // End:0x47 + if(m_fScaleMesh != fCurrentScale) + { + SetPipGlowEnabled(fCurrentScale > 1.1000000); + } + super(TgPawn).TickScale(DeltaSeconds); + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x4C + case 1: + return "PC_Alchemist.Anims.AS_PC_Alchemist_3p_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + m_bWeightlessDurationEnded=true + m_fWeightlessMaxSpeedModifier=1.0000000 + r_fRadiusForHealingPotionFX=25.0000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Pip.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Pip.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="Pip" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Pip.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=1.1000000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Pip.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Pip.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Pip.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Pip.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + m_fScaleMeshChangePerSecond=1.5000000 + m_fScaleCollisionHeightChangePerSecond=1.5000000 + BaseEyeHeight=30.0000000 + EyeHeight=30.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Pip.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Pip.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Princess.uc b/exported/TgGame/Classes/TgPawn_Princess.uc new file mode 100755 index 00000000..d79d6a52 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Princess.uc @@ -0,0 +1,195 @@ +class TgPawn_Princess extends TgPawn_Character + config(Game) + hidecategories(Navigation); + +var TgDevice_Enlightenment m_CachedEnlightenment; +var TgDevice_EnlightenmentGun m_CachedEnlightenmentGun; +var TgCombatActor r_GraceTargets[15]; + +simulated event ReplicatedEvent(name VarName) +{ + switch(VarName) + { + // End:0x2C + case 'r_GraceTargets': + ManageGraceTracers(); + // End:0x42 + break; + // End:0xFFFF + default: + super.ReplicatedEvent(VarName); + break; + } + //return; +} + +simulated event ManageGraceTracers() +{ + local TgWeaponMeshActor_LianInhand InhandWeaponMesh; + + InhandWeaponMesh = TgWeaponMeshActor_LianInhand(m_WeaponMesh); + // End:0x4A + if(InhandWeaponMesh != none) + { + InhandWeaponMesh.ManageGraceTracers(); + } + //return; +} + +function bool HasCachedEnlightenment() +{ + // End:0x2E + if(m_CachedEnlightenment == none) + { + m_CachedEnlightenment = TgDevice_Enlightenment(GetDeviceByEqPoint(2)); + } + return m_CachedEnlightenment != none; + //return ReturnValue; +} + +function bool HasCachedEnlightenmentGun() +{ + // End:0x2E + if(m_CachedEnlightenmentGun == none) + { + m_CachedEnlightenmentGun = TgDevice_EnlightenmentGun(GetDeviceByEqPoint(12)); + } + return m_CachedEnlightenmentGun != none; + //return ReturnValue; +} + +function ToggleEnlightenmentGun(bool bEnabled) +{ + local TgDevice newFiringDevice; + local WeaponMeshSwapStrategy SwapStrategy; + local int nEnlightenmentStartingAmmo; + + // End:0x175 + if(HasCachedEnlightenmentGun()) + { + // End:0x10E + if(bEnabled) + { + newFiringDevice = m_CachedEnlightenmentGun; + // End:0x10B + if(m_CachedEnlightenmentGun != none) + { + nEnlightenmentStartingAmmo = 1; + // End:0xAD + if(m_CachedEnlightenmentGun.GetCurrentFire() != none) + { + nEnlightenmentStartingAmmo = int(m_CachedEnlightenmentGun.GetCurrentFire().GetCustomValue1()); + } + m_CachedEnlightenmentGun.SetAmmo(((nEnlightenmentStartingAmmo > 0) ? nEnlightenmentStartingAmmo : 1)); + m_CachedEnlightenmentGun.m_bAutoFireAfterPostHitDelay = true; + } + } + else + { + newFiringDevice = GetDeviceByEqPoint(1); + } + // End:0x175 + if(newFiringDevice != none) + { + // End:0x175 + if(IsLocallyControlled() && PlayerController(Controller) != none) + { + SetTargetingDevice(newFiringDevice, SwapStrategy); + } + } + } + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x57 + case 1: + return "PC_Princess_Skin00a.Anims.AS_PC_Princess_Skin00A_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Princess.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Princess.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bUsesRecoil=true + m_sGameplayPackage="Princess" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Princess.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Princess.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Princess.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Princess.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Princess.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + m_fRecoilSmoothRate=0.0600000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Princess.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Princess.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Ruckus.uc b/exported/TgGame/Classes/TgPawn_Ruckus.uc new file mode 100755 index 00000000..9736e2b2 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Ruckus.uc @@ -0,0 +1,300 @@ +class TgPawn_Ruckus extends TgPawn_Character + native(ChampRuckus) + config(Game) + hidecategories(Navigation); + +var float m_fDamageAccumulator; +var repnotify bool r_bHexaFireFiring; +var const bool bEnableHoverWallClimb; +var bool bHoverWallClimb; +var bool m_bForceHover; +var bool m_bInstancedGemArmMaterials; +var bool m_bInstancedGemBodyMaterials; +var bool m_bRegisteredAudioCallbacks; +var bool m_bHasBoltGemFX; +var float r_fBarrelSpinRate; +var float r_fBarrelSpinFactor; +var TgDevice_RuckusInhand m_cachedRuckusInhand; +var TgDevice_HexaFireGuns m_CachedHexaFireGuns; +var TgDevice_Emitter m_CachedEmitter; +var TgDevice_RepulsorField m_CachedRepulsorField; +var float m_fDesiredHeight; +var float m_fKx; +var float m_fKv; +var float m_fHoverAccelMultiplier; +var array m_ReplacementArmMICs; +var array m_ReplacementBodyMICs; +var dword m_dwGemFXBusID; +var float m_fVGSMatBlue; +var TgSpecialFx m_IdleFX; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bHexaFireFiring; + + // Pos:0x011 + if(bNetDirty) + r_fBarrelSpinFactor, r_fBarrelSpinRate; +} + +// Export UTgPawn_Ruckus::execPawnOnDamaged(FFrame&, void* const) +native function PawnOnDamaged(out OnDamagedParams Params); + +// Export UTgPawn_Ruckus::execIs1PBodyOverlay(FFrame&, void* const) +native function bool Is1PBodyOverlay(TgPawn.OverlayMICType Type); + +// Export UTgPawn_Ruckus::execIs1PWeaponOverlay(FFrame&, void* const) +native function bool Is1PWeaponOverlay(TgPawn.OverlayMICType Type); + +// Export UTgPawn_Ruckus::execUpdateSkinBlueChannel(FFrame&, void* const) +native function UpdateSkinBlueChannel(); + +// Export UTgPawn_Ruckus::execIsNearAnyObjective(FFrame&, void* const) +native function bool IsNearAnyObjective(); + +// Export UTgPawn_Ruckus::execInstanceBodyMaterials(FFrame&, void* const) +native function bool InstanceBodyMaterials(); + +// Export UTgPawn_Ruckus::execInstanceArmMaterials(FFrame&, void* const) +native function bool InstanceArmMaterials(); + +simulated function bool HasCachedRuckusInhand() +{ + // End:0x35 + if(m_cachedRuckusInhand == none) + { + m_cachedRuckusInhand = TgDevice_RuckusInhand(GetDeviceByClass(Class'TgGame.TgDevice_RuckusInhand')); + } + return m_cachedRuckusInhand != none; + //return ReturnValue; +} + +simulated function bool HasCachedHexaFireGuns() +{ + // End:0x35 + if(m_CachedHexaFireGuns == none) + { + m_CachedHexaFireGuns = TgDevice_HexaFireGuns(GetDeviceByClass(Class'TgGame.TgDevice_HexaFireGuns')); + } + return m_CachedHexaFireGuns != none; + //return ReturnValue; +} + +simulated function bool HasCachedEmitter() +{ + // End:0x35 + if(m_CachedEmitter == none) + { + m_CachedEmitter = TgDevice_Emitter(GetDeviceByClass(Class'TgGame.TgDevice_Emitter')); + } + return m_CachedEmitter != none; + //return ReturnValue; +} + +simulated function bool HasCachedRepulsorField() +{ + // End:0x35 + if(m_CachedRepulsorField == none) + { + m_CachedRepulsorField = TgDevice_RepulsorField(GetDeviceByClass(Class'TgGame.TgDevice_RepulsorField')); + } + return m_CachedRepulsorField != none; + //return ReturnValue; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x2E + if(VarName == 'r_bHexaFireFiring') + { + PlayHexaFireEffects(r_bHexaFireFiring); + } + else + { + super.ReplicatedEvent(VarName); + } + //return; +} + +simulated event bool StartAction(TgDevice Dev, optional out TgObject.EDeviceFailType failType, optional bool bUpdateTimeStamp = true) +{ + // End:0x42 + if((Dev != none) && int(Dev.r_eEquippedAt) == int(18)) + { + return false; + } + return super(TgPawn).StartAction(Dev, failType, bUpdateTimeStamp); + //return ReturnValue; +} + +simulated function PlayHexaFireEffects(bool bEnabled) +{ + local TgDevice newFiringDevice; + local WeaponMeshSwapStrategy SwapStrategy; + + // End:0x29 + if(int(Role) == int(ROLE_Authority)) + { + r_bHexaFireFiring = bEnabled; + } + newFiringDevice = GetDeviceById(13219); + // End:0x98 + if(!bEnabled) + { + // End:0x7F + if(newFiringDevice != none) + { + newFiringDevice.InterruptFiring(); + } + newFiringDevice = GetDeviceById(14581); + } + // End:0xD2 + if((newFiringDevice != none) && IsLocallyControlled()) + { + SetTargetingDevice(newFiringDevice, SwapStrategy); + } + //return; +} + +simulated event SetTargetingDevice(TgDevice Dev, WeaponMeshSwapStrategy SwapStrategy) +{ + local bool bIsInhand; + + bIsInhand = false; + // End:0x38 + if(HasCachedRuckusInhand()) + { + bIsInhand = Dev == m_cachedRuckusInhand; + } + // End:0x67 + if(((Dev != none) && bIsInhand) && r_bHexaFireFiring) + { + return; + } + super(TgPawn).SetTargetingDevice(Dev, SwapStrategy); + //return; +} + +simulated function bool ShouldStopWeaponMeshFireEffectsOnDeviceFormStopFire(int nEquipSlot) +{ + return true; + //return ReturnValue; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x53 + case 1: + return "PC_Ruckus_Skin00A.Anims.AS_PC_Ruckus_Skin00A_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +simulated event BecomeViewTarget(PlayerController PC) +{ + super(TgPawn).BecomeViewTarget(PC); + m_bInstancedGemArmMaterials = false; + m_bInstancedGemBodyMaterials = false; + //return; +} + +defaultproperties +{ + m_bHasBoltGemFX=true + m_fDesiredHeight=208.0000000 + m_fKx=15.0000000 + m_fKv=3.0000000 + m_fHoverAccelMultiplier=1.0000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Ruckus.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Ruckus.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bCanChargeInAir=true + m_bEndChargeInFalling=true + m_bAirAccuracyPenalty=false + m_sGameplayPackage="Ruckus" + m_n1PHeadMeshId=6752 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Ruckus.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=1.5000000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Ruckus.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Ruckus.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Ruckus.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Ruckus.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + c_fNextTakeHitDisplayDelay=0.1000000 + HeadBoneNames[0]="Neck1" + HeadBoneNames[1]="head" + HeadBoneNames[2]="Head_S1" + m_HeadShotComponentBoneName="Head_S1" + BaseEyeHeight=55.0000000 + EyeHeight=55.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Ruckus.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Ruckus.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_SiegeEngine_CaptureAndPayload.uc b/exported/TgGame/Classes/TgPawn_SiegeEngine_CaptureAndPayload.uc new file mode 100755 index 00000000..ff247ddf --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_SiegeEngine_CaptureAndPayload.uc @@ -0,0 +1,98 @@ +class TgPawn_SiegeEngine_CaptureAndPayload extends TgPawn_SiegeEngine_Payload + native(Pawns) + config(Game) + hidecategories(Navigation); + +var private const float r_fMinimumPayloadTravelTime; +var private const float r_fTravelSpeedScaleBeforeBase; +var private const TgObject.ELanePusherActionPoint r_eSpeedScaledTravelPoint; +var private const bool r_bIsPassedSpeedScaledTravelPoint; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_fTravelSpeedScaleBeforeBase; + + // Pos:0x011 + if((int(Role) == int(ROLE_Authority)) && bNetInitial) + r_bIsPassedSpeedScaledTravelPoint, r_eSpeedScaledTravelPoint, + r_fMinimumPayloadTravelTime; +} + +// Export UTgPawn_SiegeEngine_CaptureAndPayload::execSetSpline(FFrame&, void* const) +native function SetSpline(TgSplineActor NewSpline, optional bool bSnapToStart); + +defaultproperties +{ + r_fTravelSpeedScaleBeforeBase=1.0000000 + r_eSpeedScaledTravelPoint=ELanePusherActionPoint.LPAP_Checkpoint1 + r_bIsPassedSpeedScaledTravelPoint=true + m_bHarvestTexturesForFadeMIC=true + m_nFriendlyFadeMaterialFXId=6951 + m_nEnemyFadeMaterialFXId=6952 + s_bStopBackpeddlingAtCheckpoints=false + // Reference: StaticMeshComponent'TgGame.Default__TgPawn_SiegeEngine_CaptureAndPayload.CollisionBox' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionBox' + // Archetype: StaticMeshComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.CollisionBox' + begin object name="CollisionBox" + ReplacementPrimitive=none + end object + m_CollisionBox=CollisionBox + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_SiegeEngine_CaptureAndPayload.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_SiegeEngine_CaptureAndPayload.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_SiegeEngine_CaptureAndPayload.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_SiegeEngine_Payload.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_CaptureAndPayload.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_CaptureAndPayload.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_SiegeEngine_CaptureAndPayload.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_SiegeEngine_CaptureAndPayload.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=CollisionBox + CollisionComponent=CollisionBox +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_SiegeEngine_ImmuneWhileTraveling.uc b/exported/TgGame/Classes/TgPawn_SiegeEngine_ImmuneWhileTraveling.uc new file mode 100755 index 00000000..6753f093 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_SiegeEngine_ImmuneWhileTraveling.uc @@ -0,0 +1,71 @@ +class TgPawn_SiegeEngine_ImmuneWhileTraveling extends TgPawn_Juggernaut + config(Game) + hidecategories(Navigation); + +defaultproperties +{ + m_fDamageScaleWhileTraveling=0.0000000 + // Reference: StaticMeshComponent'TgGame.Default__TgPawn_SiegeEngine_ImmuneWhileTraveling.CollisionBox' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionBox' + // Archetype: StaticMeshComponent'TgGame.Default__TgPawn_Juggernaut.CollisionBox' + begin object name="CollisionBox" + ReplacementPrimitive=none + end object + m_CollisionBox=CollisionBox + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_SiegeEngine_ImmuneWhileTraveling.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Juggernaut.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_SiegeEngine_ImmuneWhileTraveling.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Juggernaut.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_SiegeEngine_ImmuneWhileTraveling.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Juggernaut.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_ImmuneWhileTraveling.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Juggernaut.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_ImmuneWhileTraveling.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Juggernaut.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_SiegeEngine_ImmuneWhileTraveling.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Juggernaut.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_SiegeEngine_ImmuneWhileTraveling.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Juggernaut.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=CollisionBox + CollisionComponent=CollisionBox +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_SiegeEngine_Payload.uc b/exported/TgGame/Classes/TgPawn_SiegeEngine_Payload.uc new file mode 100755 index 00000000..438a50ac --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_SiegeEngine_Payload.uc @@ -0,0 +1,645 @@ +class TgPawn_SiegeEngine_Payload extends TgPawn_Juggernaut + native(Pawns) + config(Game) + hidecategories(Navigation); + +enum EAutoMovePayload +{ + AUTOMOVE_None, // 0 + AUTOMOVE_Forward, // 1 + AUTOMOVE_Backward, // 2 + AUTOMOVE_MAX // 3 +}; + +enum EPayloadControlState +{ + PAYLOADCONTROL_None, // 0 + PAYLOADCONTROL_Ally, // 1 + PAYLOADCONTROL_Enemy, // 2 + PAYLOADCONTROL_Contested, // 3 + PAYLOADCONTROL_MAX // 4 +}; + +var float s_fTotalSplineLength; +var float s_fPreviousSplineLength; +var bool r_bEnable; +var const bool m_bRequireLineOfSightForNearby; +var private repnotify bool r_bMovingBackwards; +var private bool r_bCanAutoPushForward; +var const float m_fBaseSpeedScale; +var const float m_fNearbyProximityDistance; +var TgCollisionProxy m_NearbyCollisionProxy; +var array m_TouchingPlayers; +var array m_VisiblePlayers; +var const float m_fSpeedScaleIncreasePerFriendly; +var const float m_fLineOfSightUpdatePeriod; +var float m_fNextLineOfSightUpdateTime; +var const float s_fTimeUntilMoveBackwards; +var const float m_fMoveBackSpeedScale; +var private repnotify TgPawn_SiegeEngine_Payload.EAutoMovePayload r_eMoveWithoutAllies; +var private TgPawn_SiegeEngine_Payload.EPayloadControlState m_eControlState; +var repnotify byte r_nFriends; +var repnotify byte r_nEnemies; +var private const float m_fAutoPushForwardDelay; +var private const float r_fAutoPushForwardSpeedScale; +var private const float m_fStopAutoPushDelay; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bCanAutoPushForward, r_bEnable, + r_bMovingBackwards, r_eMoveWithoutAllies; + + // Pos:0x011 + if((int(Role) == int(ROLE_Authority)) && bNetInitial) + r_fAutoPushForwardSpeedScale; + + // Pos:0x031 + if((int(Role) == int(ROLE_Authority)) && bDemoRecording || m_bRequireLineOfSightForNearby) + r_nEnemies, r_nFriends; +} + +// Export UTgPawn_SiegeEngine_Payload::execPostPawnSetupServer(FFrame&, void* const) +native function PostPawnSetupServer(); + +// Export UTgPawn_SiegeEngine_Payload::execCreateCollisionProxy(FFrame&, void* const) +native function CreateCollisionProxy(); + +// Export UTgPawn_SiegeEngine_Payload::execSetSpline(FFrame&, void* const) +native function SetSpline(TgSplineActor NewSpline, optional bool bSnapToStart); + +// Export UTgPawn_SiegeEngine_Payload::execUpdatePayloadProgress(FFrame&, void* const) +native function UpdatePayloadProgress(); + +// Export UTgPawn_SiegeEngine_Payload::execIsNonCombat(FFrame&, void* const) +native function bool IsNonCombat(); + +// Export UTgPawn_SiegeEngine_Payload::execNativeIsContested(FFrame&, void* const) +native function bool NativeIsContested(); + +// Export UTgPawn_SiegeEngine_Payload::execNativeIsMovingBackwards(FFrame&, void* const) +native function bool NativeIsMovingBackwards(); + +// Export UTgPawn_SiegeEngine_Payload::execVisibilityCheck(FFrame&, void* const) +native function bool VisibilityCheck(Actor Target); + +// Export UTgPawn_SiegeEngine_Payload::execUpdateFriendEnemyCounts(FFrame&, void* const) +native final function UpdateFriendEnemyCounts(); + +// Export UTgPawn_SiegeEngine_Payload::execIsImmuneToDamage(FFrame&, void* const) +native function bool IsImmuneToDamage(); + +simulated event ReplicatedEvent(name VarName) +{ + switch(VarName) + { + // End:0x2C + case 'r_bEnable': + OnEnableChanged(); + // End:0x9D + break; + // End:0x45 + case 'r_eMoveWithoutAllies': + FullUpdate(); + // End:0x9D + break; + // End:0x74 + case 'r_bMovingBackwards': + ((r_bMovingBackwards) ? StartMovingBackwards() : StopMovingBackwards()); + // End:0x80 + case 'r_nFriends': + // End:0x9A + case 'r_nEnemies': + UpdateAlliesNearbyBehavior(); + // End:0x9D + break; + // End:0xFFFF + default: + break; + } + super(TgPawn_LanePusherBase).ReplicatedEvent(VarName); + //return; +} + +simulated event bool PostPawnSetup() +{ + // End:0x72 + if(super.PostPawnSetup()) + { + // End:0x70 + if((((m_NearbyCollisionProxy == none) && !bDeleteMe) && (GetPRI()) != none) && GetPRI().r_TaskForce != none) + { + CreateCollisionProxy(); + } + return true; + } + return false; + //return ReturnValue; +} + +simulated event OnGroupChange() +{ + super(TgPawn).OnGroupChange(); + // End:0xAD + if(int(Role) < int(ROLE_Authority)) + { + // End:0x93 + if((((m_bInitialized && m_NearbyCollisionProxy == none) && !bDeleteMe) && (GetPRI()) != none) && GetPRI().r_TaskForce != none) + { + CreateCollisionProxy(); + } + else + { + // End:0xAD + if(m_NearbyCollisionProxy != none) + { + UpdateAlliesNearbyBehavior(); + } + } + } + //return; +} + +final function SetEnable(bool bEnable) +{ + // End:0x38 + if(bEnable != r_bEnable) + { + r_bEnable = bEnable; + OnEnableChanged(); + } + //return; +} + +simulated function OnEnableChanged() +{ + UpdateAlliesNearbyBehavior(); + //return; +} + +singular simulated function FullUpdate() +{ + UpdateBackwardsTimers(); + UpdateMoving(); + //return; +} + +final simulated function bool HasFriendlyPlayersNearby() +{ + return (int(m_eControlState) == int(1)) || int(m_eControlState) == int(3); + //return ReturnValue; +} + +final simulated function bool HasEnemyPlayersNearby() +{ + return (int(m_eControlState) == int(2)) || int(m_eControlState) == int(3); + //return ReturnValue; +} + +final simulated function bool IsContested() +{ + return int(m_eControlState) == int(3); + //return ReturnValue; +} + +simulated function ProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + AddNearbyPlayer(Other); + //return; +} + +simulated function ProxyUnTouch(Actor Other) +{ + RemoveNearbyPlayer(Other); + //return; +} + +private final simulated function AddNearbyPlayer(Actor Other) +{ + local TgPawn OtherPawn; + + // End:0x199 + if((int(Role) == int(ROLE_Authority)) || !m_bRequireLineOfSightForNearby) + { + OtherPawn = TgPawn(Other); + // End:0x199 + if(((OtherPawn != none) && OtherPawn.PlayerReplicationInfo != none) && !OtherPawn.PlayerReplicationInfo.IsBot()) + { + m_TouchingPlayers.AddItem(OtherPawn); + // End:0x199 + if(VisibilityCheck(OtherPawn)) + { + m_VisiblePlayers.AddItem(OtherPawn); + ((IsEnemy(OtherPawn)) ? r_nEnemies++ : r_nFriends++); + // End:0x18E + if((int(WorldInfo.NetMode) != int(NM_Client)) && TgPawn_Character(OtherPawn) != none) + { + TgPawn_Character(OtherPawn).r_bNearPayload = true; + } + UpdateAlliesNearbyBehavior(true); + } + } + } + //return; +} + +private final simulated function RemoveNearbyPlayer(Actor Other) +{ + local TgPawn OtherPawn; + local int nIndex; + + OtherPawn = TgPawn(Other); + nIndex = ((OtherPawn != none) ? m_TouchingPlayers.Find(OtherPawn) : -1); + // End:0x168 + if(nIndex != -1) + { + m_TouchingPlayers.Remove(nIndex, 1); + nIndex = m_VisiblePlayers.Find(OtherPawn); + // End:0x168 + if(nIndex != -1) + { + // End:0x11A + if((int(WorldInfo.NetMode) != int(NM_Client)) && TgPawn_Character(OtherPawn) != none) + { + TgPawn_Character(OtherPawn).r_bNearPayload = false; + } + m_VisiblePlayers.Remove(nIndex, 1); + ((IsEnemy(OtherPawn)) ? r_nEnemies-- : r_nFriends--); + UpdateAlliesNearbyBehavior(true); + } + } + //return; +} + +private final simulated function UpdateAlliesNearbyBehavior(optional bool bSkipCountUpdate = false) +{ + local bool bAlliesNearby, bEnemiesNearby; + local TgPawn_SiegeEngine_Payload.EPayloadControlState NextControlState; + + bAlliesNearby = false; + bEnemiesNearby = false; + // End:0x14A + if(r_bEnable) + { + // End:0x90 + if((!bSkipCountUpdate && !WorldInfo.IsPlayingDemo()) && (int(Role) == int(ROLE_Authority)) || !m_bRequireLineOfSightForNearby) + { + UpdateFriendEnemyCounts(); + } + bAlliesNearby = int(r_nFriends) > int(0); + bEnemiesNearby = int(r_nEnemies) > int(0); + NextControlState = 0; + // End:0xFF + if(bEnemiesNearby && bAlliesNearby) + { + NextControlState = 3; + } + else + { + // End:0x11B + if(bAlliesNearby) + { + NextControlState = 1; + } + else + { + // End:0x134 + if(bEnemiesNearby) + { + NextControlState = 2; + } + } + } + SetPayloadControlState(NextControlState); + } + else + { + // End:0x1A9 + if(int(m_eControlState) != int(0)) + { + // End:0x19A + if(!WorldInfo.IsPlayingDemo()) + { + r_nFriends = 0; + r_nEnemies = 0; + } + SetPayloadControlState(0); + } + else + { + // End:0x1E5 + if(!WorldInfo.IsPlayingDemo()) + { + r_nFriends = 0; + r_nEnemies = 0; + } + FullUpdate(); + } + } + //return; +} + +simulated function SetPayloadControlState(TgPawn_SiegeEngine_Payload.EPayloadControlState NextControlState) +{ + // End:0x38 + if(int(m_eControlState) != int(NextControlState)) + { + m_eControlState = NextControlState; + UpdateAutoPushState(); + } + //return; +} + +private final function StartAutoMoveForward(optional bool bSkipUpdate) +{ + SetMoveWithoutAllies(1, bSkipUpdate); + //return; +} + +private final function StopAutoMoveForward(optional bool bSkipUpdate) +{ + SetMoveWithoutAllies(0, bSkipUpdate); + //return; +} + +final function SetMoveWithoutAllies(TgPawn_SiegeEngine_Payload.EAutoMovePayload eMove, optional bool bSkipFullUpdate) +{ + // End:0x48 + if(int(r_eMoveWithoutAllies) != int(eMove)) + { + r_eMoveWithoutAllies = eMove; + // End:0x48 + if(!bSkipFullUpdate) + { + FullUpdate(); + } + } + //return; +} + +private final function UpdateBackwardsTimers() +{ + local bool bAlliesNearby; + + bAlliesNearby = HasFriendlyPlayersNearby(); + // End:0x56 + if((!r_bEnable || bAlliesNearby) || int(r_eMoveWithoutAllies) == int(1)) + { + StopMovingBackwards(); + } + else + { + // End:0xCB + if(!r_bMovingBackwards) + { + // End:0x9B + if((s_fTimeUntilMoveBackwards <= 0.0000000) || int(r_eMoveWithoutAllies) == int(2)) + { + StartMovingBackwards(); + } + else + { + // End:0xCB + if(!IsTimerActive('StartMovingBackwards')) + { + SetTimer(s_fTimeUntilMoveBackwards, false, 'StartMovingBackwards'); + } + } + } + } + //return; +} + +private final simulated function StartMovingBackwards() +{ + ClearTimer('StartMovingBackwards'); + // End:0x9B + if(!r_bMovingBackwards) + { + r_bMovingBackwards = true; + // End:0x9B + if(TgGame_PaladinsExtended(WorldInfo.Game) != none) + { + TgGame_PaladinsExtended(WorldInfo.Game).SendClientsRequestHelpText(163); + } + } + UpdateMoving(); + //return; +} + +private final simulated function StopMovingBackwards() +{ + ClearTimer('StartMovingBackwards'); + // End:0x2D + if(r_bMovingBackwards) + { + r_bMovingBackwards = false; + } + UpdateMoving(); + //return; +} + +final event ToggleCanAutoPushFoward(bool bEnable) +{ + // End:0x38 + if(r_bCanAutoPushForward != bEnable) + { + r_bCanAutoPushForward = bEnable; + UpdateAutoPushState(); + } + //return; +} + +private final function UpdateAutoPushState() +{ + // End:0x164 + if(r_bCanAutoPushForward) + { + switch(m_eControlState) + { + // End:0xB0 + case 1: + ClearTimer('StopAutoMoveForward'); + // End:0xAD + if((int(r_eMoveWithoutAllies) != int(1)) && !IsTimerActive('StartAutoMoveForward')) + { + // End:0xA2 + if(m_fAutoPushForwardDelay > 0.0000000) + { + SetMoveWithoutAllies(0, true); + SetTimer(m_fAutoPushForwardDelay, false, 'StartAutoMoveForward'); + } + else + { + StartAutoMoveForward(true); + } + } + // End:0x161 + break; + // End:0xE0 + case 0: + ClearTimer('StopAutoMoveForward'); + ClearTimer('StartAutoMoveForward'); + // End:0x161 + break; + // End:0xFFFF + default: + ClearTimer('StartAutoMoveForward'); + // End:0x15E + if((int(r_eMoveWithoutAllies) == int(1)) && !IsTimerActive('StopAutoMoveForward')) + { + // End:0x153 + if(m_fStopAutoPushDelay > 0.0000000) + { + SetTimer(m_fAutoPushForwardDelay, false, 'StopAutoMoveForward'); + } + else + { + StopAutoMoveForward(true); + } + } + // End:0x161 + break; + break; + } + } + else + { + // End:0x185 + if(int(r_eMoveWithoutAllies) == int(1)) + { + SetMoveWithoutAllies(0, true); + } + ClearTimer('StartAutoMoveForward'); + ClearTimer('StopAutoMoveForward'); + } + FullUpdate(); + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + super(TgPawn_LanePusher).Tick(DeltaSeconds); + // End:0xB4 + if(((m_bRequireLineOfSightForNearby && int(Role) == int(ROLE_Authority)) && m_TouchingPlayers.Length > 0) && WorldInfo.TimeSeconds >= m_fNextLineOfSightUpdateTime) + { + UpdateAlliesNearbyBehavior(); + m_fNextLineOfSightUpdateTime = WorldInfo.TimeSeconds + m_fLineOfSightUpdatePeriod; + } + //return; +} + +simulated event Destroyed() +{ + local TgPawn Other; + + super(TgPawn_LanePusher).Destroyed(); + // End:0x8E + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + // End:0x8D + foreach m_VisiblePlayers(Other) + { + // End:0x8C + if(TgPawn_Character(Other) != none) + { + TgPawn_Character(Other).r_bNearPayload = false; + } + } + } + m_VisiblePlayers.Length = 0; + m_TouchingPlayers.Length = 0; + // End:0x138 + if(m_NearbyCollisionProxy != none) + { + m_NearbyCollisionProxy.__ProxyTouch__Delegate = None; + m_NearbyCollisionProxy.__ProxyUnTouch__Delegate = None; + m_NearbyCollisionProxy.Destroy(); + m_NearbyCollisionProxy = none; + } + //return; +} + +defaultproperties +{ + r_bEnable=true + m_bRequireLineOfSightForNearby=true + m_fNearbyProximityDistance=600.0000000 + m_fLineOfSightUpdatePeriod=1.0000000 + s_fTimeUntilMoveBackwards=5.0000000 + m_fMoveBackSpeedScale=-0.1600000 + m_fBaseWheelSpeed=1.5000000 + m_fDamageScaleWhileTraveling=0.0000000 + m_bDoNotScaleCollisionBoxWithDatabase=true + m_bFullStopWhenNoDesiredSpeed=true + s_bStopBackpeddlingAtCheckpoints=true + // Reference: StaticMeshComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.CollisionBox' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionBox' + // Archetype: StaticMeshComponent'TgGame.Default__TgPawn_Juggernaut.CollisionBox' + begin object name="CollisionBox" + StaticMesh=StaticMesh'GOD_CommonAssets.Meshes.GoldPayloadCollisionMesh' + ReplacementPrimitive=none + Translation=(X=0.0000000,Y=0.0000000,Z=-70.0000000) + end object + m_CollisionBox=CollisionBox + m_fAcceleration=0.0000000 + m_bShowNameplate=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Juggernaut.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Juggernaut.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_SiegeEngine_Payload.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Juggernaut.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + m_SilhouetteClass=Class'TgGame.TgSilhouetteComponentPayload' + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Juggernaut.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Juggernaut.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Juggernaut.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Juggernaut.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=CollisionBox + CollisionComponent=CollisionBox +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_SiegeEngine_Payload_Crusade.uc b/exported/TgGame/Classes/TgPawn_SiegeEngine_Payload_Crusade.uc new file mode 100755 index 00000000..23d2a788 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_SiegeEngine_Payload_Crusade.uc @@ -0,0 +1,71 @@ +class TgPawn_SiegeEngine_Payload_Crusade extends TgPawn_SiegeEngine_Payload + native(Pawns) + config(Game) + hidecategories(Navigation); + +defaultproperties +{ + // Reference: StaticMeshComponent'TgGame.Default__TgPawn_SiegeEngine_Payload_Crusade.CollisionBox' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionBox' + // Archetype: StaticMeshComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.CollisionBox' + begin object name="CollisionBox" + ReplacementPrimitive=none + end object + m_CollisionBox=CollisionBox + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_SiegeEngine_Payload_Crusade.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_SiegeEngine_Payload_Crusade.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_SiegeEngine_Payload_Crusade.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_SiegeEngine_Payload.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_Payload_Crusade.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_Payload_Crusade.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_SiegeEngine_Payload_Crusade.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_SiegeEngine_Payload_Crusade.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_SiegeEngine_Payload.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=CollisionBox + CollisionComponent=CollisionBox +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_SiegeEngine_Wedge.uc b/exported/TgGame/Classes/TgPawn_SiegeEngine_Wedge.uc new file mode 100755 index 00000000..7fba3da2 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_SiegeEngine_Wedge.uc @@ -0,0 +1,78 @@ +class TgPawn_SiegeEngine_Wedge extends TgPawn_SiegeEngine_CaptureAndPayload + native(Pawns) + config(Game) + hidecategories(Navigation); + +var int m_nCollisionMeshId; + +defaultproperties +{ + m_nCollisionMeshId=5959 + m_bApplySplinePitchToActor=true + c_bApplySplinePitchToMesh=false + // Reference: TgStaticMeshComponent'TgGame.Default__TgPawn_SiegeEngine_Wedge.NewCollisionBox' + // TemplateOwnerClass: none + // TemplateOwnerName: 'NewCollisionBox' + begin object name="NewCollisionBox" class=TgGame.TgStaticMeshComponent + StaticMesh=StaticMesh'GOD_CommonAssets.Meshes.1_unit_Box_Xaxis' + ReplacementPrimitive=none + HiddenGame=true + bSeenByAI=true + end object + m_CollisionBox=NewCollisionBox + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_SiegeEngine_Wedge.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_SiegeEngine_CaptureAndPayload.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_SiegeEngine_Wedge.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_SiegeEngine_CaptureAndPayload.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_SiegeEngine_Wedge.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_SiegeEngine_CaptureAndPayload.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_Wedge.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_CaptureAndPayload.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_Wedge.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_SiegeEngine_CaptureAndPayload.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_SiegeEngine_Wedge.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_SiegeEngine_CaptureAndPayload.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_SiegeEngine_Wedge.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_SiegeEngine_CaptureAndPayload.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=NewCollisionBox + CollisionComponent=NewCollisionBox +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_SiegeWall.uc b/exported/TgGame/Classes/TgPawn_SiegeWall.uc new file mode 100755 index 00000000..13e9db22 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_SiegeWall.uc @@ -0,0 +1,241 @@ +class TgPawn_SiegeWall extends TgPawn_Tower + native(Pawns) + config(Game) + hidecategories(Navigation); + +var() float m_fImpactEffectXRange; +var() float m_fImpactEffectYRange; +var Vector r_vNextImpactEffectLocation; +var() float m_fImpactRecoveryTime; +var float m_fRemainingImpactRecoveryTime; +var() float m_fMaxImpactSize; +var MaterialInstanceConstant m_ImpactMIC; +var bool c_bIsVulnerable; +var bool m_bHasRegisteredObstacle; +var bool m_bSpawnedThisFrame; +var bool m_bQueriedBorderEdges; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_vNextImpactEffectLocation; +} + +// Export UTgPawn_SiegeWall::execIsDebuffImmune(FFrame&, void* const) +native function bool IsDebuffImmune(); + +// Export UTgPawn_SiegeWall::execGenerateNewImpactEffectLocation(FFrame&, void* const) +native function GenerateNewImpactEffectLocation(); + +// Export UTgPawn_SiegeWall::execPlaySpecialEffectEvent(FFrame&, void* const) +native function PlaySpecialEffectEvent(int PlaySpecialEffectIndex, Vector vLoc, Vector vHitNormal, optional Actor inActor); + +// Export UTgPawn_SiegeWall::execSendAttackAlert(FFrame&, void* const) +native function SendAttackAlert(); + +// Export UTgPawn_SiegeWall::execSendDeathAlert(FFrame&, void* const) +native function SendDeathAlert(); + +// Export UTgPawn_SiegeWall::execPostPawnSetupServer(FFrame&, void* const) +native function PostPawnSetupServer(); + +// Export UTgPawn_SiegeWall::execRegisterObstacle(FFrame&, void* const) +native function RegisterObstacle(); + +// Export UTgPawn_SiegeWall::execUnRegisterObstacle(FFrame&, void* const) +native function UnRegisterObstacle(); + +// Export UTgPawn_SiegeWall::execApplyPawnSetup(FFrame&, void* const) +native function bool ApplyPawnSetup(); + +// Export UTgPawn_SiegeWall::execIsVulnerable(FFrame&, void* const) +native final function bool IsVulnerable(); + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + GenerateNewImpactEffectLocation(); + // End:0x3C + if(int(Role) == int(ROLE_Authority)) + { + RegisterWithGRI(); + RegisterObstacle(); + } + //return; +} + +event RegisterWithGRI() +{ + //return; +} + +function UnRegisterWithGRI() +{ + //return; +} + +simulated function name GetWallImpactKismetName() +{ + return 'None'; + //return ReturnValue; +} + +simulated event PlayWallImpact() +{ + local AnimNodePlayCustomAnim CustomAnimNode; + local GameSkelCtrl_Recoil RecoilControl; + local int I; + + // End:0x13F + if(Mesh != none) + { + CustomAnimNode = AnimNodePlayCustomAnim(Mesh.FindAnimNode('CustomAnim')); + // End:0x8E + if(CustomAnimNode != none) + { + CustomAnimNode.PlayCustomAnim('Impact', 1.0000000, 0.0000000); + } + I = 0; + J0x99: + + // End:0x13F [Loop If] + if(I < Mesh.SkelControlTickArray.Length) + { + RecoilControl = GameSkelCtrl_Recoil(Mesh.SkelControlTickArray[I]); + // End:0x131 + if(RecoilControl != none) + { + RecoilControl.bPlayRecoil = true; + } + I++; + // [Loop Continue] + goto J0x99; + } + } + //return; +} + +event int GetHPScalingValue() +{ + return 0; + //return ReturnValue; +} + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + local TgPawn KillerPawn; + + UnRegisterWithGRI(); + UnRegisterObstacle(); + // End:0x85 + if(Killer != none) + { + KillerPawn = TgPawn(Killer.Pawn); + // End:0x85 + if(KillerPawn != none) + { + KillerPawn.PlayEmoteAtWorldLocation(22); + } + } + return super.Died(Killer, dmgType, HitLocation); + //return ReturnValue; +} + +event TakeDamage(int Damage, Controller InstigatedBy, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + local TgPawn_Character TgP; + + super.TakeDamage(Damage, InstigatedBy, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + TgP = TgPawn_Character(InstigatedBy.Pawn); + // End:0xC2 + if(TgP != none) + { + TgP.m_fWallDamagePercent += (float(Damage) / (GetMaxHealth())); + } + //return; +} + +defaultproperties +{ + m_fImpactEffectXRange=150.0000000 + m_fImpactEffectYRange=75.0000000 + m_fImpactRecoveryTime=0.5000000 + m_fMaxImpactSize=100.0000000 + // Reference: TgMarkComponent'TgGame.Default__TgPawn_SiegeWall.TowerDamageScaler' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TowerDamageScaler' + // Archetype: TgMarkComponent'TgGame.Default__TgPawn_Tower.TowerDamageScaler' + begin object name="TowerDamageScaler" + end object + s_DamageScaler=TowerDamageScaler + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_SiegeWall.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Tower.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_SiegeWall.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Tower.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_SiegeWall.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Tower.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeWall.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Tower.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeWall.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Tower.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + m_fHUDOverlayZOffset=-200.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_SiegeWall.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Tower.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_SiegeWall.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Tower.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=TowerDamageScaler + // Reference: StaticMeshComponent'TgGame.Default__TgPawn_SiegeWall.CollisionMesh' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionMesh' + begin object name="CollisionMesh" class=Engine.StaticMeshComponent + StaticMesh=StaticMesh'NPC_SiegeWall.Mesh.bsp_shape_a' + ReplacementPrimitive=none + RBChannel=ERBCollisionChannel.RBCC_GameplayPhysics + HiddenGame=true + RBCollideWithChannels=(Default=true,GameplayPhysics=true,EffectPhysics=true) + Rotation=(Pitch=0,Yaw=16384,Roll=0) + end object + Components[8]=CollisionMesh + bCanBeFrictionedTo=false + CollisionComponent=CollisionMesh +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_SiegeWall_Base.uc b/exported/TgGame/Classes/TgPawn_SiegeWall_Base.uc new file mode 100755 index 00000000..0f752c69 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_SiegeWall_Base.uc @@ -0,0 +1,176 @@ +class TgPawn_SiegeWall_Base extends TgPawn_SiegeWall + native(Pawns) + config(Game) + hidecategories(Navigation); + +var bool m_bHasAlertedLowHealth; +var float m_fLowHealthTrigger; + +// Export UTgPawn_SiegeWall_Base::execSendAttackAlert(FFrame&, void* const) +native function SendAttackAlert(); + +// Export UTgPawn_SiegeWall_Base::execSendLowHealthAlert(FFrame&, void* const) +native function SendLowHealthAlert(); + +simulated function PostBeginPlay() +{ + local TgGame_PaladinsExtended ChaosGame; + + super.PostBeginPlay(); + // End:0xB7 + if(int(Role) == int(ROLE_Authority)) + { + ChaosGame = TgGame_PaladinsExtended(WorldInfo.Game); + // End:0xB7 + if(ChaosGame != none) + { + ((int(GetTaskForceNumber()) == int(1)) ? ChaosGame.m_TF1BaseObjective == self : ChaosGame.m_TF2BaseObjective == self); + } + } + //return; +} + +simulated function name GetWallImpactKismetName() +{ + return ((int(GetTaskForceNumber()) == int(1)) ? 'TF1_DoorBase_Hit' : 'TF2_DoorBase_Hit'); + //return ReturnValue; +} + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + local bool bReturn; + + bReturn = super.Died(Killer, dmgType, HitLocation); + // End:0x9B + if(TgGame_Battle(WorldInfo.Game) != none) + { + TgGame_Battle(WorldInfo.Game).NexusWasDestroyed(self); + } + return bReturn; + //return ReturnValue; +} + +event int GetHPScalingValue() +{ + return TgGame_PaladinsExtended(WorldInfo.Game).m_nBaseObjectiveHPScaling; + //return ReturnValue; +} + +event RegisterWithGRI() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x9E + if(GRI != none) + { + // End:0x7B + if(int(GetTaskForceNumber()) == int(1)) + { + GRI.r_pSiegeWallTF1[2] = self; + } + else + { + GRI.r_pSiegeWallTF2[2] = self; + } + } + //return; +} + +function UnRegisterWithGRI() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x9E + if(GRI != none) + { + // End:0x7B + if(int(GetTaskForceNumber()) == int(1)) + { + GRI.r_pSiegeWallTF1[2] = none; + } + else + { + GRI.r_pSiegeWallTF2[2] = none; + } + } + //return; +} + +defaultproperties +{ + m_fLowHealthTrigger=40.0000000 + // Reference: TgMarkComponent'TgGame.Default__TgPawn_SiegeWall_Base.TowerDamageScaler' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TowerDamageScaler' + // Archetype: TgMarkComponent'TgGame.Default__TgPawn_SiegeWall.TowerDamageScaler' + begin object name="TowerDamageScaler" + end object + s_DamageScaler=TowerDamageScaler + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_SiegeWall_Base.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_SiegeWall.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_SiegeWall_Base.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_SiegeWall.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_SiegeWall_Base.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_SiegeWall.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeWall_Base.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_SiegeWall.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeWall_Base.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_SiegeWall.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_SiegeWall_Base.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_SiegeWall.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_SiegeWall_Base.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_SiegeWall.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=TowerDamageScaler + // Reference: StaticMeshComponent'TgGame.Default__TgPawn_SiegeWall_Base.CollisionMesh' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionMesh' + // Archetype: StaticMeshComponent'TgGame.Default__TgPawn_SiegeWall.CollisionMesh' + begin object name="CollisionMesh" + StaticMesh=StaticMesh'NPC_SiegeWall.Mesh.bsp_shape_b' + ReplacementPrimitive=none + end object + Components[8]=CollisionMesh + CollisionComponent=CollisionMesh + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_SiegeWall_Inner.uc b/exported/TgGame/Classes/TgPawn_SiegeWall_Inner.uc new file mode 100755 index 00000000..dc8ff298 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_SiegeWall_Inner.uc @@ -0,0 +1,154 @@ +class TgPawn_SiegeWall_Inner extends TgPawn_SiegeWall + native(Pawns) + config(Game) + hidecategories(Navigation); + +// Export UTgPawn_SiegeWall_Inner::execSendAttackAlert(FFrame&, void* const) +native function SendAttackAlert(); + +simulated function PostBeginPlay() +{ + local TgGame_PaladinsExtended ChaosGame; + + super.PostBeginPlay(); + // End:0xB7 + if(int(Role) == int(ROLE_Authority)) + { + ChaosGame = TgGame_PaladinsExtended(WorldInfo.Game); + // End:0xB7 + if(ChaosGame != none) + { + ((int(GetTaskForceNumber()) == int(1)) ? ChaosGame.m_TF1InnerWall == self : ChaosGame.m_TF2InnerWall == self); + } + } + //return; +} + +simulated function name GetWallImpactKismetName() +{ + return ((int(GetTaskForceNumber()) == int(1)) ? 'TF1_DoorInner_Hit' : 'TF2_DoorInner_Hit'); + //return ReturnValue; +} + +event int GetHPScalingValue() +{ + return TgGame_PaladinsExtended(WorldInfo.Game).m_nInnerGateHPScaling; + //return ReturnValue; +} + +event RegisterWithGRI() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x9C + if(GRI != none) + { + // End:0x7A + if(int(GetTaskForceNumber()) == int(1)) + { + GRI.r_pSiegeWallTF1[1] = self; + } + else + { + GRI.r_pSiegeWallTF2[1] = self; + } + } + //return; +} + +function UnRegisterWithGRI() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x9C + if(GRI != none) + { + // End:0x7A + if(int(GetTaskForceNumber()) == int(1)) + { + GRI.r_pSiegeWallTF1[1] = none; + } + else + { + GRI.r_pSiegeWallTF2[1] = none; + } + } + //return; +} + +defaultproperties +{ + // Reference: TgMarkComponent'TgGame.Default__TgPawn_SiegeWall_Inner.TowerDamageScaler' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TowerDamageScaler' + // Archetype: TgMarkComponent'TgGame.Default__TgPawn_SiegeWall.TowerDamageScaler' + begin object name="TowerDamageScaler" + end object + s_DamageScaler=TowerDamageScaler + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_SiegeWall_Inner.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_SiegeWall.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_SiegeWall_Inner.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_SiegeWall.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_SiegeWall_Inner.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_SiegeWall.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeWall_Inner.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_SiegeWall.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeWall_Inner.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_SiegeWall.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_SiegeWall_Inner.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_SiegeWall.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_SiegeWall_Inner.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_SiegeWall.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=TowerDamageScaler + // Reference: StaticMeshComponent'TgGame.Default__TgPawn_SiegeWall_Inner.CollisionMesh' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionMesh' + // Archetype: StaticMeshComponent'TgGame.Default__TgPawn_SiegeWall.CollisionMesh' + begin object name="CollisionMesh" + StaticMesh=StaticMesh'NPC_SiegeWall.Mesh.bsp_shape_b' + ReplacementPrimitive=none + end object + Components[8]=CollisionMesh + CollisionComponent=CollisionMesh +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_SiegeWall_Outer.uc b/exported/TgGame/Classes/TgPawn_SiegeWall_Outer.uc new file mode 100755 index 00000000..a00a5f32 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_SiegeWall_Outer.uc @@ -0,0 +1,154 @@ +class TgPawn_SiegeWall_Outer extends TgPawn_SiegeWall + native(Pawns) + config(Game) + hidecategories(Navigation); + +// Export UTgPawn_SiegeWall_Outer::execSendAttackAlert(FFrame&, void* const) +native function SendAttackAlert(); + +simulated function PostBeginPlay() +{ + local TgGame_PaladinsExtended ChaosGame; + + super.PostBeginPlay(); + // End:0xB7 + if(int(Role) == int(ROLE_Authority)) + { + ChaosGame = TgGame_PaladinsExtended(WorldInfo.Game); + // End:0xB7 + if(ChaosGame != none) + { + ((int(GetTaskForceNumber()) == int(1)) ? ChaosGame.m_TF1OuterWall == self : ChaosGame.m_TF2OuterWall == self); + } + } + //return; +} + +simulated function name GetWallImpactKismetName() +{ + return ((int(GetTaskForceNumber()) == int(1)) ? 'TF1_DoorOuter_Hit' : 'TF2_DoorOuter_Hit'); + //return ReturnValue; +} + +event int GetHPScalingValue() +{ + return TgGame_PaladinsExtended(WorldInfo.Game).m_nOuterGateHPScaling; + //return ReturnValue; +} + +event RegisterWithGRI() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x9C + if(GRI != none) + { + // End:0x7A + if(int(GetTaskForceNumber()) == int(1)) + { + GRI.r_pSiegeWallTF1[0] = self; + } + else + { + GRI.r_pSiegeWallTF2[0] = self; + } + } + //return; +} + +function UnRegisterWithGRI() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x9C + if(GRI != none) + { + // End:0x7A + if(int(GetTaskForceNumber()) == int(1)) + { + GRI.r_pSiegeWallTF1[0] = none; + } + else + { + GRI.r_pSiegeWallTF2[0] = none; + } + } + //return; +} + +defaultproperties +{ + // Reference: TgMarkComponent'TgGame.Default__TgPawn_SiegeWall_Outer.TowerDamageScaler' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TowerDamageScaler' + // Archetype: TgMarkComponent'TgGame.Default__TgPawn_SiegeWall.TowerDamageScaler' + begin object name="TowerDamageScaler" + end object + s_DamageScaler=TowerDamageScaler + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_SiegeWall_Outer.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_SiegeWall.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_SiegeWall_Outer.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_SiegeWall.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_SiegeWall_Outer.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_SiegeWall.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeWall_Outer.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_SiegeWall.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_SiegeWall_Outer.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_SiegeWall.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_SiegeWall_Outer.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_SiegeWall.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_SiegeWall_Outer.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_SiegeWall.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=TowerDamageScaler + // Reference: StaticMeshComponent'TgGame.Default__TgPawn_SiegeWall_Outer.CollisionMesh' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionMesh' + // Archetype: StaticMeshComponent'TgGame.Default__TgPawn_SiegeWall.CollisionMesh' + begin object name="CollisionMesh" + StaticMesh=StaticMesh'NPC_SiegeWall.Mesh.bsp_shape_b' + ReplacementPrimitive=none + end object + Components[8]=CollisionMesh + CollisionComponent=CollisionMesh +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Skye.uc b/exported/TgGame/Classes/TgPawn_Skye.uc new file mode 100755 index 00000000..a59c7b79 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Skye.uc @@ -0,0 +1,116 @@ +class TgPawn_Skye extends TgPawn_Character + native(ChampSkye) + config(Game) + hidecategories(Navigation); + +// Export UTgPawn_Skye::execUpdateStealthBoltMaterial(FFrame&, void* const) +native function UpdateStealthBoltMaterial(); + +// Export UTgPawn_Skye::execGetDamageToLeaveStealth(FFrame&, void* const) +native function float GetDamageToLeaveStealth(); + +simulated event ApplyStealthClient(optional bool bForce = false) +{ + // End:0x2A + if(int(c_eIsStealthed) != int(r_eIsStealthed)) + { + UpdateStealthBoltMaterial(); + } + super(TgPawn).ApplyStealthClient(bForce); + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x4A + case 1: + return "PC_Assassin.Anims.AS_PC_Assassin_3p_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Skye.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Skye.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="Skye" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Skye.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=0.9500000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Skye.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Skye.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Skye.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Skye.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + m_fStealthPulseTime=0.5000000 + BaseEyeHeight=45.0000000 + EyeHeight=45.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Skye.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Skye.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Stoker.uc b/exported/TgGame/Classes/TgPawn_Stoker.uc new file mode 100755 index 00000000..7dff835f --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Stoker.uc @@ -0,0 +1,226 @@ +class TgPawn_Stoker extends TgPawn_Viktor + native(ChampViktor) + config(Game) + hidecategories(Navigation); + +var Vector m_vCurrentWallRunNormal; +var bool m_bIsWallRunning; +var bool r_bWantsWallRun; +var bool m_bHasDoubleJumped; +var(Stoker) float m_fWallMagnetMovePerSec; +var(Stoker) float m_fWallRunStickinessDuration; +var float m_fWallRunStickinessTimer; +var(Stoker) float m_fWallRunLockoutJumpDuration; +var float m_fWallRunLockoutJumpTimer; +var(Stoker) float m_fWallJumpZSpeed; +var(Stoker) float m_fDoubleJumpZSpeed; +var(Stoker) float m_fNewWallAllowableRunAngle; +var float m_fWallRunTime; + +function bool DoJump(bool bUpdating, optional float JumpZSpeed = 0.0000000) +{ + local bool bJumpSuccessful, oldAllowHigherWallJumping, oldIgnorePhysCheckForJump, bAttemptingDoubleJump; + local float fJumpSpeed; + + oldAllowHigherWallJumping = m_bAllowHigherWallJumping; + oldIgnorePhysCheckForJump = m_bIgnorePhysCheckForJump; + // End:0x8B + if(m_bIsWallRunning) + { + // End:0x64 + if(m_fWallJumpZSpeed > float(0)) + { + fJumpSpeed = m_fWallJumpZSpeed; + } + m_bAllowHigherWallJumping = false; + m_bIgnorePhysCheckForJump = true; + m_bHasDoubleJumped = false; + } + else + { + // End:0xFB + if((int(Physics) == int(2)) && !m_bHasDoubleJumped) + { + // End:0xD4 + if(m_fDoubleJumpZSpeed > float(0)) + { + fJumpSpeed = m_fDoubleJumpZSpeed; + } + m_bAllowHigherWallJumping = false; + m_bIgnorePhysCheckForJump = true; + bAttemptingDoubleJump = true; + } + else + { + fJumpSpeed = JumpZSpeed; + // End:0x12E + if(int(Physics) == int(1)) + { + m_bHasDoubleJumped = false; + } + } + } + bJumpSuccessful = super(TgPawn_Character).DoJump(bUpdating, fJumpSpeed); + // End:0x1B6 + if(bJumpSuccessful) + { + r_bIsJumping = true; + m_bIsWallRunning = false; + m_fWallRunLockoutJumpTimer = m_fWallRunLockoutJumpDuration; + m_bIgnorePhysCheckForJump = false; + // End:0x1B3 + if(bAttemptingDoubleJump) + { + m_bHasDoubleJumped = true; + } + } + else + { + m_bIgnorePhysCheckForJump = oldIgnorePhysCheckForJump; + } + m_bAllowHigherWallJumping = oldAllowHigherWallJumping; + m_bIgnorePhysCheckForJump = oldIgnorePhysCheckForJump; + return bJumpSuccessful; + //return ReturnValue; +} + +function bool CannotJumpNow() +{ + local bool oldIgnorePhysCheck, bCannotJump; + + oldIgnorePhysCheck = m_bIgnorePhysCheckForJump; + m_bIgnorePhysCheckForJump = m_bIsWallRunning || (int(Physics) == int(2)) && !m_bHasDoubleJumped; + bCannotJump = super(TgPawn_Character).CannotJumpNow(); + m_bIgnorePhysCheckForJump = oldIgnorePhysCheck; + return bCannotJump; + //return ReturnValue; +} + +function UpdateWallRun(bool bWantsWallRun) +{ + local bool bCanWallRun; + + bCanWallRun = (!r_bIsMounted && !r_bCrippled) && int(r_CurrentPolymorph) == int(0); + // End:0x90 + if(((r_bWantsWallRun && m_bIsWallRunning) && bCanWallRun) && !bWantsWallRun) + { + m_fWallRunStickinessTimer = m_fWallRunStickinessDuration; + } + else + { + // End:0xAE + if(!bCanWallRun) + { + m_fWallRunStickinessTimer = 0.0000000; + } + } + r_bWantsWallRun = bWantsWallRun && bCanWallRun; + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + super(TgPawn_Character).Tick(DeltaSeconds); + m_fWallRunStickinessTimer -= DeltaSeconds; + m_fWallRunLockoutJumpTimer -= DeltaSeconds; + // End:0x75 + if((int(Physics) == int(2)) && m_bIsWallRunning) + { + m_fWallRunTime = 0.0000000; + SetPhysics(14); + } + else + { + // End:0xCF + if((int(Physics) == int(14)) && (!r_bWantsWallRun && m_fWallRunStickinessTimer <= float(0)) || !m_bIsWallRunning) + { + m_bIsWallRunning = false; + SetPhysics(2); + } + } + //return; +} + +// Export UTgPawn_Stoker::execGetGravityZ(FFrame&, void* const) +native function float GetGravityZ(); + +defaultproperties +{ + m_fWallMagnetMovePerSec=100.0000000 + m_fWallRunStickinessDuration=0.2500000 + m_fWallRunLockoutJumpDuration=0.3000000 + m_fNewWallAllowableRunAngle=0.7000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Stoker.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Viktor.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Stoker.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Viktor.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Stoker.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Viktor.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Stoker.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Viktor.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + DefaultControlModuleClass=Class'TgGame.TgControlModule_Stoker' + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Stoker.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Viktor.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Stoker.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Viktor.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Stoker.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Viktor.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + m_GameplayCurves=TgGameplayCurves'GP_MeleeAssassin.PawnCurves' + // Reference: CylinderComponent'TgGame.Default__TgPawn_Stoker.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Viktor.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Stoker.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Viktor.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Structure.uc b/exported/TgGame/Classes/TgPawn_Structure.uc new file mode 100755 index 00000000..c978e1ea --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Structure.uc @@ -0,0 +1,164 @@ +class TgPawn_Structure extends TgPawn + native(Pawns) + config(Game) + hidecategories(Navigation); + +var float s_fLastDamageTime; +var float s_fDamageNotificationDelay; + +// Export UTgPawn_Structure::execCanMove(FFrame&, void* const) +native function bool CanMove(); + +function SendAttackAlert() +{ + //return; +} + +function SendDeathAlert() +{ + //return; +} + +event TakeDamage(int Damage, Controller InstigatedBy, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + super.TakeDamage(Damage, InstigatedBy, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + // End:0xA8 + if((WorldInfo.TimeSeconds > (s_fLastDamageTime + s_fDamageNotificationDelay)) && !ClassIsChildOf(DamageType, Class'TgGame.TgDamageType_AbilityCost')) + { + SendAttackAlert(); + } + s_fLastDamageTime = WorldInfo.TimeSeconds; + //return; +} + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + local bool bReturn; + + // End:0x6B + if(TgGame_Battle(WorldInfo.Game) != none) + { + TgGame_Battle(WorldInfo.Game).StructureDied(self); + } + // End:0xA2 + if(TgGame_Battle_Training(WorldInfo.Game) == none) + { + SendDeathAlert(); + } + bReturn = super.Died(Killer, dmgType, HitLocation); + c_bMeshHiddenDueToDeath = true; + return bReturn; + //return ReturnValue; +} + +simulated event PlayDeathAnimation() +{ + super.PlayDeathAnimation(); + c_bMeshHiddenDueToDeath = true; + //return; +} + +simulated event PostDemoRewind() +{ + super.PostDemoRewind(); + // End:0x27 + if(Health <= 0) + { + SetHidden(true); + } + else + { + SetHidden(false); + } + //return; +} + +function SetMovementPhysics() +{ + SetPhysics(0); + //return; +} + +state Intro +{ + function IntroTimer() + { + GotoState('None'); + //return; + } + stop; +} + +defaultproperties +{ + s_fDamageNotificationDelay=10.0000000 + m_bCannotBeVolumeStealthed=true + m_bIsVisionBlocker=true + m_bApplyDistanceFade=false + m_bCanBeKnockedBack=false + m_bUseSmoothNetReceiveRotation=false + c_bApplyDropShadow=false + m_bBlockCamera=true + m_bIgnoreTearOffMomentum=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Structure.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn.MyLightEnvironment' + begin object name="MyLightEnvironment" + bDynamic=false + bIsCharacterLightEnvironment=false + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Structure.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Structure.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Structure.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Structure.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + bSimulateGravity=false + bIgnoreForces=true + // Reference: CylinderComponent'TgGame.Default__TgPawn_Structure.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + BlockNonZeroExtent=false + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Structure.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + bPushedByEncroachers=false + bAlwaysRelevant=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Tower.uc b/exported/TgGame/Classes/TgPawn_Tower.uc new file mode 100755 index 00000000..22275c4b --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Tower.uc @@ -0,0 +1,512 @@ +class TgPawn_Tower extends TgPawn_TowerBase + native(Pawns) + config(Game) + hidecategories(Navigation); + +var float m_TimeSinceDeath; +var array m_DestroyedMICs; +var float m_fFadeOutStartTime; +var float m_fFadeOutEndTime; +var Vector r_vInitialRotation; +var bool m_bUseDestruction; +var bool r_bSide0Destroyed; +var bool r_bSide1Destroyed; +var bool r_bSide2Destroyed; +var bool r_bSide3Destroyed; +var repnotify byte r_PlaySide0Destruction; +var repnotify byte r_PlaySide1Destruction; +var repnotify byte r_PlaySide2Destruction; +var repnotify byte r_PlaySide3Destruction; +var int m_nSide0MeshId; +var int m_nSide1MeshId; +var int m_nSide2MeshId; +var int m_nSide3MeshId; +var int m_nSide0Health; +var int m_nSide1Health; +var int m_nSide2Health; +var int m_nSide3Health; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bSide0Destroyed, r_bSide1Destroyed, + r_bSide2Destroyed, r_bSide3Destroyed, + r_vInitialRotation; + + // Pos:0x011 + if((int(Role) == int(ROLE_Authority)) && !bNetInitial) + r_PlaySide0Destruction, r_PlaySide1Destruction, + r_PlaySide2Destruction, r_PlaySide3Destruction; +} + +// Export UTgPawn_Tower::execSendAttackAlert(FFrame&, void* const) +native function SendAttackAlert(); + +// Export UTgPawn_Tower::execSendDeathAlert(FFrame&, void* const) +native function SendDeathAlert(); + +// Export UTgPawn_Tower::execSendTargetedAlert(FFrame&, void* const) +native function SendTargetedAlert(TgPawn Target); + +// Export UTgPawn_Tower::execSwapToBrokenMesh(FFrame&, void* const) +native function SwapToBrokenMesh(); + +// Export UTgPawn_Tower::execBroadcastDiedToGame(FFrame&, void* const) +native function BroadcastDiedToGame(); + +// Export UTgPawn_Tower::execGetMeshOverrideForScript(FFrame&, void* const) +native function int GetMeshOverrideForScript(int MeshId); + +simulated function PostBeginPlay() +{ + super(TgPawn).PostBeginPlay(); + // End:0x6A + if(int(Role) == int(ROLE_Authority)) + { + r_vInitialRotation = Vector(Rotation); + r_vInitialRotation.Z = 0.0000000; + r_vInitialRotation = Normal(r_vInitialRotation); + } + //return; +} + +simulated event bool PostPawnSetup() +{ + local bool Retval; + + Retval = super(TgPawn).PostPawnSetup(); + CheckSideDestructionSkelControls(); + return Retval; + //return ReturnValue; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x9F + if(m_bUseDestruction) + { + // End:0x31 + if(VarName == 'r_PlaySide0Destruction') + { + PlaySideDestructionAnim(0); + return; + } + // End:0x55 + if(VarName == 'r_PlaySide1Destruction') + { + PlaySideDestructionAnim(1); + return; + } + // End:0x7A + if(VarName == 'r_PlaySide2Destruction') + { + PlaySideDestructionAnim(2); + return; + } + // End:0x9F + if(VarName == 'r_PlaySide3Destruction') + { + PlaySideDestructionAnim(3); + return; + } + } + super(TgPawn).ReplicatedEvent(VarName); + //return; +} + +event TakeDamage(int Damage, Controller InstigatedBy, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + local Vector ForwardDir, LeftDir, HitDir; + local float ForwardPct, LeftPct; + + super(TgPawn_Structure).TakeDamage(Damage, InstigatedBy, HitLocation, Momentum, DamageType, HitInfo); + // End:0x3A6 + if(m_bUseDestruction && !ClassIsChildOf(DamageType, Class'TgGame.TgDamageType_AbilityCost')) + { + ForwardDir = r_vInitialRotation; + LeftDir = ForwardDir Cross vect(0.0000000, 0.0000000, 1.0000000); + HitDir = Location - HitLocation; + HitDir.Z = 0.0000000; + HitDir = Normal(HitDir); + ForwardPct = HitDir Dot ForwardDir; + LeftPct = HitDir Dot LeftDir; + // End:0x277 + if(ForwardPct >= 0.0000000) + { + // End:0x1E8 + if(LeftPct >= 0.0000000) + { + // End:0x1E5 + if(!r_bSide3Destroyed) + { + // End:0x1E5 + if(m_nSide3Health > 0) + { + m_nSide3Health -= Damage; + // End:0x1E5 + if(m_nSide3Health <= 0) + { + // End:0x1CE + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + PlaySideDestructionAnim(3); + } + r_bSide3Destroyed = true; + r_PlaySide3Destruction++; + } + } + } + } + else + { + // End:0x274 + if(!r_bSide1Destroyed) + { + // End:0x274 + if(m_nSide1Health > 0) + { + m_nSide1Health -= Damage; + // End:0x274 + if(m_nSide1Health <= 0) + { + // End:0x25D + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + PlaySideDestructionAnim(1); + } + r_bSide1Destroyed = true; + r_PlaySide1Destruction++; + } + } + } + } + } + else + { + // End:0x31A + if(LeftPct >= 0.0000000) + { + // End:0x317 + if(!r_bSide2Destroyed) + { + // End:0x317 + if(m_nSide2Health > 0) + { + m_nSide2Health -= Damage; + // End:0x317 + if(m_nSide2Health <= 0) + { + // End:0x300 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + PlaySideDestructionAnim(2); + } + r_bSide2Destroyed = true; + r_PlaySide2Destruction++; + } + } + } + } + else + { + // End:0x3A6 + if(!r_bSide0Destroyed) + { + // End:0x3A6 + if(m_nSide0Health > 0) + { + m_nSide0Health -= Damage; + // End:0x3A6 + if(m_nSide0Health <= 0) + { + // End:0x38F + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + PlaySideDestructionAnim(0); + } + r_bSide0Destroyed = true; + r_PlaySide0Destruction++; + } + } + } + } + } + } + //return; +} + +simulated function PlaySideDestructionAnim(int SideIndex) +{ + local TgSkeletalMeshActor_DestructibleTowerChunk TowerChunk; + local Vector SpawnLoc; + + SpawnLoc = Location; + SpawnLoc.Z -= (NativeGetCollisionHeight()); + TowerChunk = Spawn(Class'TgGame.TgSkeletalMeshActor_DestructibleTowerChunk', self,, SpawnLoc, Rotator(r_vInitialRotation),, true); + switch(SideIndex) + { + // End:0xBD + case 0: + TowerChunk.PlayDestruction(GetMeshOverrideForScript(m_nSide0MeshId), self); + // End:0x170 + break; + // End:0xF7 + case 1: + TowerChunk.PlayDestruction(GetMeshOverrideForScript(m_nSide1MeshId), self); + // End:0x170 + break; + // End:0x132 + case 2: + TowerChunk.PlayDestruction(GetMeshOverrideForScript(m_nSide2MeshId), self); + // End:0x170 + break; + // End:0x16D + case 3: + TowerChunk.PlayDestruction(GetMeshOverrideForScript(m_nSide3MeshId), self); + // End:0x170 + break; + // End:0xFFFF + default: + break; + } + CheckSideDestructionSkelControls(SideIndex); + //return; +} + +simulated function CheckSideDestructionSkelControls(optional int ForceSideIndexHidden = -1) +{ + // End:0x2B + if((Mesh == none) || !m_bUseDestruction) + { + return; + } + // End:0x185 + if(ForceSideIndexHidden == -1) + { + SkelControlSingleBone(Mesh.FindSkelControl('Side0')).SetSkelControlActive(r_bSide0Destroyed); + SkelControlSingleBone(Mesh.FindSkelControl('Side1')).SetSkelControlActive(r_bSide1Destroyed); + SkelControlSingleBone(Mesh.FindSkelControl('Side2')).SetSkelControlActive(r_bSide2Destroyed); + SkelControlSingleBone(Mesh.FindSkelControl('Side3')).SetSkelControlActive(r_bSide3Destroyed); + } + else + { + switch(ForceSideIndexHidden) + { + // End:0x1E7 + case 0: + SkelControlSingleBone(Mesh.FindSkelControl('Side0')).SetSkelControlActive(true); + // End:0x2D9 + break; + // End:0x236 + case 1: + SkelControlSingleBone(Mesh.FindSkelControl('Side1')).SetSkelControlActive(true); + // End:0x2D9 + break; + // End:0x286 + case 2: + SkelControlSingleBone(Mesh.FindSkelControl('Side2')).SetSkelControlActive(true); + // End:0x2D9 + break; + // End:0x2D6 + case 3: + SkelControlSingleBone(Mesh.FindSkelControl('Side3')).SetSkelControlActive(true); + // End:0x2D9 + break; + // End:0xFFFF + default: + break; + } + } + //return; +} + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + local bool retValue; + + retValue = super.Died(Killer, dmgType, HitLocation); + BroadcastDiedToGame(); + return retValue; + //return ReturnValue; +} + +simulated function OnSwapToDestroyedMesh() +{ + local int I; + local MaterialInstanceConstant MIC; + local TgAnimBlendByPosture BlendByPostureNode; + + // End:0x77 + if(m_bUseDestruction) + { + // End:0x27 + if(!r_bSide0Destroyed) + { + PlaySideDestructionAnim(0); + } + // End:0x41 + if(!r_bSide1Destroyed) + { + PlaySideDestructionAnim(1); + } + // End:0x5C + if(!r_bSide2Destroyed) + { + PlaySideDestructionAnim(2); + } + // End:0x77 + if(!r_bSide3Destroyed) + { + PlaySideDestructionAnim(3); + } + } + SwapToBrokenMesh(); + SwapToDestroyedMesh(); + // End:0xC2 + foreach m_PostureBlendNodes(BlendByPostureNode) + { + BlendByPostureNode.ReplayAnim(); + } + I = 0; + J0xCE: + + MIC = MaterialInstanceConstant(Mesh.GetMaterial(I)); + // End:0x12E + if(MIC != none) + { + m_DestroyedMICs.AddItem(MIC); + } + ++I; + // End:0xCE + if(!(MIC == none)) + goto J0xCE; + //return; +} + +simulated event PostDemoRewind() +{ + super(TgPawn_Structure).PostDemoRewind(); + CheckSideDestructionSkelControls(); + //return; +} + +simulated state Dying +{ + local bool HasRemovedMesh; + + simulated function Tick(float DeltaSeconds) + { + local MaterialInstanceConstant MIC; + local float HalfFadeOutDuration; + + super.Tick(DeltaSeconds); + HalfFadeOutDuration = (m_fFadeOutEndTime - m_fFadeOutStartTime) * 0.5000000; + m_TimeSinceDeath += DeltaSeconds; + // End:0x160 + foreach m_DestroyedMICs(MIC) + { + // End:0xE1 + if((m_TimeSinceDeath >= m_fFadeOutStartTime) && m_TimeSinceDeath <= (m_fFadeOutStartTime + HalfFadeOutDuration)) + { + MIC.SetScalarParameterValue('addvalue', 1.0000000 - (m_TimeSinceDeath - m_fFadeOutStartTime)); + } + // End:0x15F + if((m_TimeSinceDeath >= (m_fFadeOutStartTime + HalfFadeOutDuration)) && m_TimeSinceDeath <= m_fFadeOutEndTime) + { + MIC.SetScalarParameterValue('subvalue', (m_TimeSinceDeath - m_fFadeOutStartTime) - 1.0000000); + } + } + // End:0x1B3 + if(!HasRemovedMesh && m_TimeSinceDeath >= m_fFadeOutEndTime) + { + DetachComponent(Mesh); + Mesh = none; + HasRemovedMesh = true; + } + //return; + } + + simulated function OnLifeAfterDeathTimerExpired() + { + // End:0x27 + if(Controller != none) + { + Controller.Destroy(); + } + bTearOff = true; + bReplicateMovement = false; + //return; + } + stop; +} + +defaultproperties +{ + m_fFadeOutStartTime=4.0000000 + m_fFadeOutEndTime=6.5000000 + // Reference: TgMarkComponent'TgGame.Default__TgPawn_Tower.TowerDamageScaler' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TowerDamageScaler' + // Archetype: TgMarkComponent'TgGame.Default__TgPawn_TowerBase.TowerDamageScaler' + begin object name="TowerDamageScaler" + end object + s_DamageScaler=TowerDamageScaler + m_nNumGuardianLevels=1 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Tower.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_TowerBase.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + FireLocationOffsets[2]=(X=0.0000000,Y=0.0000000,Z=380.0000000) + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Tower.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_TowerBase.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Tower.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_TowerBase.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Tower.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_TowerBase.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Tower.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_TowerBase.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Tower.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_TowerBase.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Tower.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_TowerBase.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=TowerDamageScaler + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_TowerBase.uc b/exported/TgGame/Classes/TgPawn_TowerBase.uc new file mode 100755 index 00000000..ea29f8c8 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_TowerBase.uc @@ -0,0 +1,160 @@ +class TgPawn_TowerBase extends TgPawn_Structure + native(Pawns) + config(Game) + hidecategories(Navigation); + +struct native NavMeshBorderEdges +{ + var Vector P1; + var Vector P2; + + structdefaultproperties + { + P1=(X=0.0000000,Y=0.0000000,Z=0.0000000) + P2=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +var init array BorderEdges; +var transient TgSpecialFx c_BeamFX; +var export editinline TgMarkComponent s_DamageScaler; +var int m_nNumGuardianLevels; +var bool r_bLocked; +var protected transient bool m_bShouldBeFaded; +var float m_fTransparentFadeSpeed; +var float m_fMaxFadeTransparency; +var float m_fFadeDistance2D; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bLocked; +} + +// Export UTgPawn_TowerBase::execSetTargetActor(FFrame&, void* const) +native function SetTargetActor(Actor Target); + +// Export UTgPawn_TowerBase::execSendTargetedAlert(FFrame&, void* const) +native function SendTargetedAlert(TgPawn Target); + +// Export UTgPawn_TowerBase::execDeviceOnDamaged(FFrame&, void* const) +native function DeviceOnDamaged(out OnDamagedParams Params); + +// Export UTgPawn_TowerBase::execDeviceAdjustDamage(FFrame&, void* const) +native function DeviceAdjustDamage(out AdjustDamageParams Params, out float fDamage); + +// Export UTgPawn_TowerBase::execPawnOnDamageMitigation(FFrame&, void* const) +native function PawnOnDamageMitigation(TgPawn attacker, TgEffectGroup eg, out float fDamage, int nPropertyId); + +// Export UTgPawn_TowerBase::execCalcDistanceFadeValue(FFrame&, void* const) +native function CalcDistanceFadeValue(float fDeltaTime); + +// Export UTgPawn_TowerBase::execSetTransparencyFaded(FFrame&, void* const) +native function SetTransparencyFaded(bool bShouldBeFaded); + +// Export UTgPawn_TowerBase::execQueryBorderEdges(FFrame&, void* const) +native function QueryBorderEdges(Vector BoundsExtent, optional bool bUseObb = false); + +// Export UTgPawn_TowerBase::execGetPositionOnBorderEdge(FFrame&, void* const) +native function Vector GetPositionOnBorderEdge(const Vector FromPosition); + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce TaskForceInfo; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0xDE + if(GRI != none) + { + // End:0x83 + if(int(GetTaskForceNumber()) == int(2)) + { + TaskForceInfo = GRI.GetTaskForce(1, false); + } + else + { + TaskForceInfo = GRI.GetTaskForce(2, false); + } + // End:0xDE + if(TaskForceInfo != none) + { + TaskForceInfo.m_nTowersKilled++; + } + } + return super.Died(Killer, dmgType, HitLocation); + //return ReturnValue; +} + +defaultproperties +{ + // Reference: TgMarkComponent'TgGame.Default__TgPawn_TowerBase.TowerDamageScaler' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TowerDamageScaler' + begin object name="TowerDamageScaler" class=TgGame.TgMarkComponent + m_bStackEffects=true + m_fMarkDuration=3.0000000 + m_nMaxMarks=99 + end object + s_DamageScaler=TowerDamageScaler + m_fTransparentFadeSpeed=10.0000000 + m_fMaxFadeTransparency=0.8000000 + m_fFadeDistance2D=700.0000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_TowerBase.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Structure.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_TowerBase.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Structure.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_TowerBase.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Structure.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_TowerBase.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Structure.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_TowerBase.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Structure.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_TowerBase.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Structure.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_TowerBase.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Structure.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=TowerDamageScaler + bUpdateHavokPos=false + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Tower_FA.uc b/exported/TgGame/Classes/TgPawn_Tower_FA.uc new file mode 100755 index 00000000..9add1a3d --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Tower_FA.uc @@ -0,0 +1,198 @@ +class TgPawn_Tower_FA extends TgPawn_Tower + native(Pawns) + config(Game) + hidecategories(Navigation); + +enum ETowerType +{ + TowerType_Default, // 0 + TowerType_Inner, // 1 + TowerType_Outer, // 2 + TowerType_Upper, // 3 + TowerType_MAX // 4 +}; + +var TgPawn_Tower_FA.ETowerType m_TowerType; +var repnotify Rotator r_InitialOrientation; +var export editinline ParticleSystemComponent c_AimVisibilityMesh; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_InitialOrientation; +} + +// Export UTgPawn_Tower_FA::execCanSeeActor(FFrame&, void* const) +native function bool CanSeeActor(Actor Other); + +simulated function SetAimVisibilityMesh() +{ + local Vector translationOffset; + local bool bIsFriendly; + local ParticleChannelContainer PSysChannels; + + bIsFriendly = IsFriendlyWithLocalPawn(); + translationOffset = vect(0.0000000, 0.0000000, 0.0000000); + translationOffset.Z -= (GetCollisionHeight()); + PSysChannels.Friendly = bIsFriendly; + PSysChannels.Enemy = !PSysChannels.Friendly; + // End:0x182 + if(c_AimVisibilityMesh != none) + { + c_AimVisibilityMesh.m_ParticleChannels = PSysChannels; + c_AimVisibilityMesh.ActivateSystem(); + c_AimVisibilityMesh.SetAbsolute(false, true, false); + c_AimVisibilityMesh.SetRotation(r_InitialOrientation); + c_AimVisibilityMesh.SetTranslation(translationOffset); + } + //return; +} + +simulated function PlayDyingEffects() +{ + super(TgPawn).PlayDyingEffects(); + // End:0x35 + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0x63 + if(c_AimVisibilityMesh != none) + { + c_AimVisibilityMesh.DeactivateSystem(); + } + //return; +} + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + r_InitialOrientation = Rotation; + // End:0x66 + if((int(Role) == int(ROLE_Authority)) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + SetAimVisibilityMesh(); + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + switch(VarName) + { + // End:0x2C + case 'r_InitialOrientation': + SetAimVisibilityMesh(); + // End:0x2F + break; + // End:0xFFFF + default: + break; + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated event Vector GetWeaponStartTraceLocation(TgDevice Dev) +{ + local Vector StartLocation; + + // End:0x51 + if((Mesh != none) && Mesh.GetSocketWorldLocationAndRotation('WSO_Emit_01', StartLocation)) + { + return StartLocation; + } + return super(TgPawn).GetWeaponStartTraceLocation(Dev); + //return ReturnValue; +} + +simulated function OnDeviceFormFire(int nEquipSlot, float fRefireTime, int nFireMode) +{ + local GameSkelCtrl_Recoil FireRecoilNode; + + // End:0x7A + if(Mesh != none) + { + FireRecoilNode = GameSkelCtrl_Recoil(Mesh.FindSkelControl('FireRecoil')); + // End:0x7A + if(FireRecoilNode != none) + { + FireRecoilNode.bPlayRecoil = true; + } + } + super(TgPawn).OnDeviceFormFire(nEquipSlot, fRefireTime, nFireMode); + //return; +} + +defaultproperties +{ + // Reference: TgMarkComponent'TgGame.Default__TgPawn_Tower_FA.TowerDamageScaler' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TowerDamageScaler' + // Archetype: TgMarkComponent'TgGame.Default__TgPawn_Tower.TowerDamageScaler' + begin object name="TowerDamageScaler" + end object + s_DamageScaler=TowerDamageScaler + m_bIsInvisibleToAI=true + c_bUpdateSkelMeshWhenNotRendered=true + c_bUpdateSkelMeshWhenNotRenderedServer=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Tower_FA.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Tower.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Tower_FA.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Tower.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Tower_FA.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Tower.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Tower_FA.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Tower.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Tower_FA.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Tower.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + BaseEyeHeight=0.0000000 + EyeHeight=0.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Tower_FA.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Tower.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + BlockNonZeroExtent=true + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Tower_FA.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Tower.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=TowerDamageScaler + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Tower_Inner.uc b/exported/TgGame/Classes/TgPawn_Tower_Inner.uc new file mode 100755 index 00000000..f9f758bc --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Tower_Inner.uc @@ -0,0 +1,70 @@ +class TgPawn_Tower_Inner extends TgPawn_Tower_FA + config(Game) + hidecategories(Navigation); + +defaultproperties +{ + m_TowerType=ETowerType.TowerType_Inner + // Reference: TgMarkComponent'TgGame.Default__TgPawn_Tower_Inner.TowerDamageScaler' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TowerDamageScaler' + // Archetype: TgMarkComponent'TgGame.Default__TgPawn_Tower_FA.TowerDamageScaler' + begin object name="TowerDamageScaler" + end object + s_DamageScaler=TowerDamageScaler + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Tower_Inner.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Tower_FA.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Tower_Inner.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Tower_FA.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Tower_Inner.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Tower_FA.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Tower_Inner.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Tower_FA.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Tower_Inner.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Tower_FA.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Tower_Inner.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Tower_FA.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Tower_Inner.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Tower_FA.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=TowerDamageScaler + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Tower_Outer.uc b/exported/TgGame/Classes/TgPawn_Tower_Outer.uc new file mode 100755 index 00000000..1fc4823f --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Tower_Outer.uc @@ -0,0 +1,70 @@ +class TgPawn_Tower_Outer extends TgPawn_Tower_FA + config(Game) + hidecategories(Navigation); + +defaultproperties +{ + m_TowerType=ETowerType.TowerType_Outer + // Reference: TgMarkComponent'TgGame.Default__TgPawn_Tower_Outer.TowerDamageScaler' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TowerDamageScaler' + // Archetype: TgMarkComponent'TgGame.Default__TgPawn_Tower_FA.TowerDamageScaler' + begin object name="TowerDamageScaler" + end object + s_DamageScaler=TowerDamageScaler + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Tower_Outer.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Tower_FA.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Tower_Outer.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Tower_FA.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Tower_Outer.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Tower_FA.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Tower_Outer.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Tower_FA.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Tower_Outer.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Tower_FA.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Tower_Outer.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Tower_FA.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Tower_Outer.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Tower_FA.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=TowerDamageScaler + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Tower_Upper.uc b/exported/TgGame/Classes/TgPawn_Tower_Upper.uc new file mode 100755 index 00000000..751a2ba3 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Tower_Upper.uc @@ -0,0 +1,70 @@ +class TgPawn_Tower_Upper extends TgPawn_Tower_FA + config(Game) + hidecategories(Navigation); + +defaultproperties +{ + m_TowerType=ETowerType.TowerType_Upper + // Reference: TgMarkComponent'TgGame.Default__TgPawn_Tower_Upper.TowerDamageScaler' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TowerDamageScaler' + // Archetype: TgMarkComponent'TgGame.Default__TgPawn_Tower_FA.TowerDamageScaler' + begin object name="TowerDamageScaler" + end object + s_DamageScaler=TowerDamageScaler + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Tower_Upper.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Tower_FA.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Tower_Upper.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Tower_FA.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Tower_Upper.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Tower_FA.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Tower_Upper.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Tower_FA.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Tower_Upper.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Tower_FA.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Tower_Upper.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Tower_FA.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Tower_Upper.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Tower_FA.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=TowerDamageScaler + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Turret.uc b/exported/TgGame/Classes/TgPawn_Turret.uc new file mode 100755 index 00000000..b16df10a --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Turret.uc @@ -0,0 +1,186 @@ +class TgPawn_Turret extends TgPawn_Pet + native(Pawns) + config(Game) + hidecategories(Navigation); + +var repnotify bool r_bLockdownIsOn; +var repnotify bool r_bHasHealingStation; +var bool m_bFirstAidNuggetOverride; +var int m_nLockdownPostureID; +var TgDevice m_SpawningDevice; +var AkEvent m_TargetingNotificationAkEvent; +var Actor m_PrevTargetActor; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_bHasHealingStation, r_bLockdownIsOn; +} + +// Export UTgPawn_Turret::execPostPawnSetupServer(FFrame&, void* const) +native function PostPawnSetupServer(); + +// Export UTgPawn_Turret::execDropHealthNuggetTeamOnly(FFrame&, void* const) +native function DropHealthNuggetTeamOnly(int nTaskForce, optional Vector SpawnVelocity, optional float fHealOverride = -1.0000000, optional float fHoTOverride = -1.0000000); + +// Export UTgPawn_Turret::execToggleLockdownMode(FFrame&, void* const) +native function ToggleLockdownMode(bool bSetActive); + +// Export UTgPawn_Turret::execToggleLockdownFX(FFrame&, void* const) +native function ToggleLockdownFX(); + +// Export UTgPawn_Turret::execToggleHealingStationFX(FFrame&, void* const) +native function ToggleHealingStationFX(); + +// Export UTgPawn_Turret::execSetTargetActor(FFrame&, void* const) +native function SetTargetActor(Actor Target); + +// Export UTgPawn_Turret::execPlayTargetingSound(FFrame&, void* const) +native function PlayTargetingSound(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x24 + if(VarName == 'r_bLockdownIsOn') + { + ToggleLockdownFX(); + } + else + { + // End:0x48 + if(VarName == 'r_bHasHealingStation') + { + ToggleHealingStationFX(); + } + else + { + // End:0x69 + if(VarName == 'r_TargetActor') + { + PlayTargetingSound(); + } + } + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated function PlayDeathAnimation() +{ + super.PlayDeathAnimation(); + c_bMeshHiddenDueToDeath = false; + //return; +} + +simulated function RagdollPawn() +{ + local Vector turretImpulseDirection, turretVerticalImpulse; + local float turretHorizontalImpulseScale; + + Mesh.MinDistFactorForKinematicUpdate = 0.0000000; + InitRagdoll(); + // End:0x11E + if(!IsZero(r_DeathInfo.Momentum)) + { + turretImpulseDirection = r_DeathInfo.Momentum; + turretImpulseDirection.Z = 0.0000000; + turretImpulseDirection = Normal(turretImpulseDirection); + turretVerticalImpulse = vect(0.0000000, 0.0000000, 200.0000000); + turretHorizontalImpulseScale = 300.0000000; + Mesh.AddImpulse((turretImpulseDirection * turretHorizontalImpulseScale) + turretVerticalImpulse, Location); + } + //return; +} + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + // End:0x35 + if(super(TgPawn).Died(Killer, dmgType, HitLocation)) + { + ToggleLockdownMode(false); + return true; + } + return false; + //return ReturnValue; +} + +state Intro +{ + simulated function EndState(name NextStateName) + { + super.EndState(NextStateName); + // End:0x4D + if(Mesh != none) + { + Mesh.FxDeactivateGroup('Spawned', 0); + } + //return; + } + stop; +} + +defaultproperties +{ + m_InitHUDOverlayIcon=DeployableOverlayIcon.DOI_TURRET + m_bUseSilhouettes=true + m_bWaitForIntroAnimToEnd=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Turret.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Pet.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + FireLocationOffsets[1]=(X=32.0000000,Y=0.0000000,Z=32.0000000) + m_fMaxAimAssistStacks=0.1000000 + m_nInitHUDOverlayDisplayMask=105 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Turret.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Pet.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Turret.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Pet.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Turret.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Pet.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Turret.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Pet.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + r_fIntroTime=5.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Turret.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Pet.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Turret.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Pet.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Turret_DefaultCone.uc b/exported/TgGame/Classes/TgPawn_Turret_DefaultCone.uc new file mode 100755 index 00000000..612b05ee --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Turret_DefaultCone.uc @@ -0,0 +1,70 @@ +class TgPawn_Turret_DefaultCone extends TgPawn_Turret + config(Game) + hidecategories(Navigation); + +defaultproperties +{ + // Reference: ParticleSystemComponent'TgGame.Default__TgPawn_Turret_DefaultCone.AimPSC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AimPSC' + begin object name="AimPSC" class=Engine.ParticleSystemComponent + bAutoActivate=false + ReplacementPrimitive=none + end object + c_AimVisibilityMesh=AimPSC + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Turret_DefaultCone.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Turret.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Turret_DefaultCone.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Turret.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Turret_DefaultCone.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Turret.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Turret_DefaultCone.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Turret.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Turret_DefaultCone.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Turret.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Turret_DefaultCone.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Turret.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Turret_DefaultCone.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Turret.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=AimPSC + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Turret_Flamethrower.uc b/exported/TgGame/Classes/TgPawn_Turret_Flamethrower.uc new file mode 100755 index 00000000..6410aff3 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Turret_Flamethrower.uc @@ -0,0 +1,63 @@ +class TgPawn_Turret_Flamethrower extends TgPawn_Turret + native(Pawns) + config(Game) + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Turret_Flamethrower.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Turret.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Turret_Flamethrower.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Turret.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Turret_Flamethrower.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Turret.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Turret_Flamethrower.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Turret.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Turret_Flamethrower.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Turret.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + m_nSuccessfulHitSpecialFXId=6977 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Turret_Flamethrower.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Turret.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Turret_Flamethrower.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Turret.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Turret_Mega.uc b/exported/TgGame/Classes/TgPawn_Turret_Mega.uc new file mode 100755 index 00000000..f93701ce --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Turret_Mega.uc @@ -0,0 +1,78 @@ +class TgPawn_Turret_Mega extends TgPawn_Turret + native(Pawns) + config(Game) + hidecategories(Navigation); + +state Intro +{ + simulated function EndState(name NextStateName) + { + super.EndState(NextStateName); + // End:0x4F + if(Mesh != none) + { + Mesh.FxActivateGroup('Generic3', 0); + } + //return; + } + stop; +} + +defaultproperties +{ + m_InitHUDOverlayIcon=DeployableOverlayIcon.DOI_MEGA_TURRET + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Turret_Mega.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Turret.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Turret_Mega.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Turret.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Turret_Mega.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Turret.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Turret_Mega.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Turret.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Turret_Mega.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Turret.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_Turret_Mega.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Turret.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Turret_Mega.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Turret.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Tyra.uc b/exported/TgGame/Classes/TgPawn_Tyra.uc new file mode 100755 index 00000000..e7cc275e --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Tyra.uc @@ -0,0 +1,102 @@ +class TgPawn_Tyra extends TgPawn_Character + native(ChampTyra) + config(Game) + hidecategories(Navigation); + +var() WeaponDOF m_CurrentDOFSettings; + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x51 + case 1: + return "PC_Salty_Skin00A.Anims.AS_PC_Salty_Skin00A_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + m_CurrentDOFSettings=(IsActive=false,DOFType=EDOFType.DOFType_SimpleDOF,Falloff=1.0000000,BlurKernelSize=3.0000000,FocusType=EFocusType.FOCUS_Distance,FocusInnerRadius=15.0000000,FocusDistance=60.0000000,MaxNearBlurAmount=1.0000000,MinBlurAmount=1.0000000,MaxFarBlurAmount=0.3300000) + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Tyra.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Tyra.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bUsesRecoil=true + m_sGameplayPackage="Tyra" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Tyra.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=0.9500000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Tyra.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Tyra.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Tyra.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Tyra.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + BaseEyeHeight=50.0000000 + EyeHeight=50.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Tyra.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Tyra.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Viktor.uc b/exported/TgGame/Classes/TgPawn_Viktor.uc new file mode 100755 index 00000000..df2ceec0 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Viktor.uc @@ -0,0 +1,197 @@ +class TgPawn_Viktor extends TgPawn_Character + native(ChampViktor) + config(Game) + hidecategories(Navigation); + +var float r_fFragGrenadeExplodeTime; +var bool r_bFragGrenadeExplodeOnTouch; +var(Grenade) float m_fBounceDampingVertMin; +var(Grenade) float m_fBounceDampingVertMax; +var(Grenade) float m_fBounceDampingHorizMin; +var(Grenade) float m_fBounceDampingHorizMax; +var repnotify byte r_nGrenadeRefreshSound; +var repnotify byte r_nAmmoRefreshSound; +var() WeaponDOF m_CurrentDOFSettings; +var TgDevice_Hustle m_CachedHustleDevice; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_bFragGrenadeExplodeOnTouch, r_fFragGrenadeExplodeTime; + + // Pos:0x020 + if(((int(Role) == int(ROLE_Authority)) && bNetDirty) && bDemoRecording || !(bNetInitial || bNetTimelapseInit) || bNetTimelapsePost) + r_nAmmoRefreshSound, r_nGrenadeRefreshSound; +} + +simulated event bool StartAction(TgDevice Dev, optional out TgObject.EDeviceFailType failType, optional bool bUpdateTimeStamp = true) +{ + local WeaponMeshSwapStrategy SwapStrategy; + + // End:0x70 + if(super(TgPawn).StartAction(Dev, failType, bUpdateTimeStamp)) + { + // End:0x6E + if(Dev.IsA('TgDevice_Barrage')) + { + SetTargetingDevice(Dev, SwapStrategy); + } + return true; + } + return false; + //return ReturnValue; +} + +simulated event SetTargetingDevice(TgDevice Dev, WeaponMeshSwapStrategy SwapStrategy) +{ + // End:0x83 + if((((c_CurrentTargetingDevice != none) && c_CurrentTargetingDevice.IsA('TgDevice_Barrage')) && c_CurrentTargetingDevice.IsFiring()) && int(SwapStrategy.RetrieveStrategy) != int(2)) + { + return; + } + super(TgPawn).SetTargetingDevice(Dev, SwapStrategy); + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x2F + if(VarName == 'r_nGrenadeRefreshSound') + { + PlayLocalPawnFX('ViktorRefreshGrenade'); + return; + } + else + { + // End:0x5B + if(VarName == 'r_nAmmoRefreshSound') + { + PlayLocalPawnFX('ViktorRefreshAmmo'); + return; + } + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated event PlayLocalPawnFX(name nmDisplayGroup) +{ + local TgPlayerController TgPC; + + // End:0x11 + if(Mesh == none) + { + return; + } + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x7C + if((TgPC != none) && TgPC.GetTgPawn() == self) + { + FxReactivateGroupSelf(nmDisplayGroup, 0); + } + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x46 + case 1: + return "PC_Viktor.Anims.AS_PC_Viktor_3p_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +// Export UTgPawn_Viktor::execGetPerCharacterAltEquipPoint(FFrame&, void* const) +native simulated function TgObject.TG_EQUIP_POINT GetPerCharacterAltEquipPoint(); + +defaultproperties +{ + m_fBounceDampingVertMin=0.1000000 + m_fBounceDampingVertMax=1.0000000 + m_fBounceDampingHorizMin=0.0900000 + m_fBounceDampingHorizMax=0.7500000 + m_CurrentDOFSettings=(IsActive=false,DOFType=EDOFType.DOFType_SimpleDOF,Falloff=1.0000000,BlurKernelSize=3.0000000,FocusType=EFocusType.FOCUS_Distance,FocusInnerRadius=15.0000000,FocusDistance=60.0000000,MaxNearBlurAmount=1.0000000,MinBlurAmount=1.0000000,MaxFarBlurAmount=0.3300000) + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Viktor.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Viktor.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_bUsesRecoil=true + m_sGameplayPackage="Viktor" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Viktor.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + c_fFxScaleSize=0.9500000 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Viktor.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Viktor.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_Viktor.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Viktor.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + BaseEyeHeight=50.0000000 + EyeHeight=50.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Viktor.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Viktor.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_VoodooTotem.uc b/exported/TgGame/Classes/TgPawn_VoodooTotem.uc new file mode 100755 index 00000000..8acdd4f6 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_VoodooTotem.uc @@ -0,0 +1,209 @@ +class TgPawn_VoodooTotem extends TgPawn_Pet + native(Pawns) + config(Game) + hidecategories(Navigation); + +const MAX_VOODOO_LINKS = 5; + +var TgPawn r_linkedEnemies[5]; +var int nBreakDist; +var int m_nBeamFXID; +var TgSpecialFx m_BeamFXs[5]; +var float fDamageAmount; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_linkedEnemies; +} + +// Export UTgPawn_VoodooTotem::execPostPawnSetupServer(FFrame&, void* const) +native function PostPawnSetupServer(); + +// Export UTgPawn_VoodooTotem::execUpdateLinkedEnemies(FFrame&, void* const) +native function UpdateLinkedEnemies(); + +// Export UTgPawn_VoodooTotem::execUpdateAllBeams(FFrame&, void* const) +native function UpdateAllBeams(); + +// Export UTgPawn_VoodooTotem::execPawnOnDamaged(FFrame&, void* const) +native function PawnOnDamaged(out OnDamagedParams Params); + +// Export UTgPawn_VoodooTotem::execShouldShowHudOverlay(FFrame&, void* const) +native function bool ShouldShowHudOverlay(TgPawn PlayerPawn); + +simulated function ForwardEffects(ImpactInfo Impact, TgEffectGroup EffectGroup, TgDevice SourceDevice, optional bool bRemove, optional int StackCount = 1) +{ + local TgPawn Enemy; + local int I; + local TgEffectManager effectManager; + local Actor EffectInstigator; + + I = 0; + J0x11: + + // End:0x92 [Loop If] + if(I < EffectGroup.m_Effects.Length) + { + // End:0x84 + if(EffectGroup.m_Effects[I].m_nPropertyId == 51) + { + return; + } + I++; + // [Loop Continue] + goto J0x11; + } + I = 0; + J0x9D: + + // End:0x251 [Loop If] + if(I < 5) + { + Enemy = r_linkedEnemies[I]; + Impact.DeviceModeReference = GetDeviceByEqPoint(1).GetCurrentFire(); + // End:0x157 + if(SourceDevice.Instigator != none) + { + EffectInstigator = SourceDevice.Instigator; + } + else + { + EffectInstigator = SourceDevice; + } + effectManager = Enemy.r_EffectManager; + // End:0x243 + if(effectManager != none) + { + // End:0x200 + if(bRemove) + { + effectManager.RemoveEffectGroupById(EffectGroup.m_nEffectGroupId, StackCount, EffectInstigator); + } + else + { + effectManager.ProcessEffect(EffectGroup, EffectInstigator, StackCount, Impact); + } + } + I++; + // [Loop Continue] + goto J0x9D; + } + //return; +} + +simulated event DestroyIt(optional bool bSkipFx) +{ + local int I; + + I = 0; + J0x0C: + + // End:0x9B [Loop If] + if(I < 5) + { + // End:0x4A + if(r_linkedEnemies[I] != none) + { + r_linkedEnemies[I] = none; + } + // End:0x8D + if(m_BeamFXs[I] != none) + { + m_BeamFXs[I].Deactivate(true); + } + ++I; + // [Loop Continue] + goto J0x0C; + } + bNetDirty = true; + //return; +} + +function SetMovementPhysics() +{ + return; + //return; +} + +event bool CanBePulled() +{ + return false; + //return ReturnValue; +} + +event bool CanBeGrabbed() +{ + return false; + //return ReturnValue; +} + +simulated function bool ShouldNudgePlayer(TgPawn PlayerPawn) +{ + return int(GetTaskForceNumber()) != int(PlayerPawn.GetTaskForceNumber()); + //return ReturnValue; +} + +defaultproperties +{ + m_nBeamFXID=7218 + m_bIgnoreEnemyBlocking=true + m_bPushblockAffectsFriendlies=false + m_bPushblockAffectsEnemies=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_VoodooTotem.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Pet.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_nInitHUDOverlayDisplayMask=1024 + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_VoodooTotem.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Pet.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_VoodooTotem.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Pet.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: AudioComponent'TgGame.Default__TgPawn_VoodooTotem.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Pet.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_VoodooTotem.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Pet.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + // Reference: CylinderComponent'TgGame.Default__TgPawn_VoodooTotem.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Pet.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_VoodooTotem.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Pet.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPawn_Ying.uc b/exported/TgGame/Classes/TgPawn_Ying.uc new file mode 100755 index 00000000..dcfa4215 --- /dev/null +++ b/exported/TgGame/Classes/TgPawn_Ying.uc @@ -0,0 +1,172 @@ +class TgPawn_Ying extends TgPawn_Character + native(ChampYing) + config(Game) + hidecategories(Navigation); + +var Actor r_InhandTarget; +var Vector r_InhandHitOffset; +var TgPawn_Character m_TeleportTarget; +var bool m_bRetrievedIllusionListThisTick; +var bool m_bHasShatterableIllusionsThisTick; +var bool r_bHasCompensate; +var bool m_bPulledTargetFromList; +var array m_ActiveIllusions; +var() float m_fFrictionMultiplier; +var() float m_fGravityMultiplier; +var() float m_fMaxFallSpeed; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_InhandHitOffset, r_InhandTarget, + r_bHasCompensate; +} + +// Export UTgPawn_Ying::execGetGravityZ(FFrame&, void* const) +native function float GetGravityZ(); + +// Export UTgPawn_Ying::execPopulateActiveDecoyList(FFrame&, void* const) +native function bool PopulateActiveDecoyList(optional out byte bHasShatterableIllusions); + +simulated event KillAllOwnedPets() +{ + super(TgPawn).KillAllOwnedPets(); + ClearDimensionalLink(); + //return; +} + +event bool Died(Controller Killer, Class dmgType, Vector HitLocation) +{ + ClearDimensionalLink(); + return super.Died(Killer, dmgType, HitLocation); + //return ReturnValue; +} + +function ClearDimensionalLink() +{ + local int I; + local TgDevice_DimensionalLink dimensionalLink; + + // End:0x94 + if(int(Role) == int(ROLE_Authority)) + { + I = 1; + J0x1F: + + // End:0x94 [Loop If] + if(I < 33) + { + dimensionalLink = TgDevice_DimensionalLink(m_EquippedDevices[I]); + // End:0x86 + if(dimensionalLink != none) + { + dimensionalLink.SetRequiresReset(); + // [Explicit Break] + goto J0x94; + } + I++; + // [Loop Continue] + goto J0x1F; + } + } + J0x94: + + //return; +} + +simulated function string GetAnimSetString(TgObject.EMountType MountType) +{ + switch(MountType) + { + // End:0x42 + case 1: + return "PC_Ying.Anims.AS_PC_Ying_3p_Mount_Horse"; + // End:0xFFFF + default: + return ""; + break; + } + //return ReturnValue; +} + +defaultproperties +{ + m_fFrictionMultiplier=0.2500000 + m_fGravityMultiplier=0.5000000 + m_fMaxFallSpeed=600.0000000 + // Reference: TgCustomCharacterComponent'TgGame.Default__TgPawn_Ying.CustomCharacterInfo' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CustomCharacterInfo' + // Archetype: TgCustomCharacterComponent'TgGame.Default__TgPawn_Character.CustomCharacterInfo' + begin object name="CustomCharacterInfo" + end object + m_CustomCharacterComponent=CustomCharacterInfo + // Reference: CylinderComponent'TgGame.Default__TgPawn_Ying.MountedCollision' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MountedCollision' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.MountedCollision' + begin object name="MountedCollision" + ReplacementPrimitive=none + end object + m_MountedCollisionComponent=MountedCollision + m_sGameplayPackage="Ying" + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Ying.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgPawn_Character.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Ying.ShadowDecal' + // TemplateOwnerClass: none + // TemplateOwnerName: 'ShadowDecal' + // Archetype: TgDropShadowDecalComponent'TgGame.Default__TgPawn_Character.ShadowDecal' + begin object name="ShadowDecal" + ReplacementPrimitive=none + end object + c_PlayerDropShadow=ShadowDecal + // Reference: TgManifestGroup'TgGame.Default__TgPawn_Ying.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgPawn_Character.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + Bob=0.0000000 + // Reference: AudioComponent'TgGame.Default__TgPawn_Ying.TakeHitAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TakeHitAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.TakeHitAC' + begin object name="TakeHitAC" + end object + m_TakeHitAudioComponent=TakeHitAC + // Reference: AudioComponent'TgGame.Default__TgPawn_Ying.PainAC' + // TemplateOwnerClass: none + // TemplateOwnerName: 'PainAC' + // Archetype: AudioComponent'TgGame.Default__TgPawn_Character.PainAC' + begin object name="PainAC" + end object + m_PainAudioComponent=PainAC + AirControl=0.5000000 + // Reference: CylinderComponent'TgGame.Default__TgPawn_Ying.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPawn_Character.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=none + Components[2]=MyLightEnvironment + Components[3]=CollisionCylinder + Components[4]=TakeHitAC + Components[5]=PainAC + // Reference: PComPositionHistoryComponent'TgGame.Default__TgPawn_Ying.PositionHistoryComponent' + // Archetype: PComPositionHistoryComponent'TgGame.Default__TgPawn_Character.PositionHistoryComponent' + begin object name="PositionHistoryComponent" + end object + Components[6]=PositionHistoryComponent + Components[7]=MountedCollision + Components[8]=CustomCharacterInfo + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPhysAnimTestActor.uc b/exported/TgGame/Classes/TgPhysAnimTestActor.uc new file mode 100755 index 00000000..a5b86695 --- /dev/null +++ b/exported/TgGame/Classes/TgPhysAnimTestActor.uc @@ -0,0 +1,564 @@ +class TgPhysAnimTestActor extends Actor + placeable + hidecategories(Navigation); + +enum EPATAState +{ + PATA_FixedAll, // 0 + PATA_FixedLower, // 1 + PATA_MotorRagdoll, // 2 + PATA_Floppy, // 3 + PATA_Recover, // 4 + PATA_MAX // 5 +}; + +var() array LowerBoneNames; +var() array LinearBoneSpringNames; +var() array AngularBoneSpringNames; +var() export editinline SkeletalMeshComponent SkeletalMeshComponent; +var TgPhysAnimTestActor.EPATAState CurrentState; +var bool bBlendToGetUp; +var bool bBlendingBack; +var bool bRampingDownMotors; +var bool bNextPokeKnocksDown; +var float GetUpBlendStartTime; +var() float GetUpBlendTime; +var() float GetUpToIdleTime; +var() float ActorOriginHeight; +var() float PokePauseTime; +var() float PokeBlendTime; +var float BlendBackStartTime; +var float MotorDownStartTime; +var() float MotorDownTime; +var() float MotorDownAnimTime; +var() float BlendStaggerAnimTime; +var() float StaggerSpeedAdj; +var() float StaggerVel; +var Vector MoveDir; +var() float AngularHipDriveScale; +var() float StaggerMuscleScale; +var AnimNodeBlend BlendNode; +var AnimNodeSequence GetUpNode; +var AnimNodeSequence RunNode; +var RB_BodyInstance HipBody; + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + BlendNode = AnimNodeBlend(SkeletalMeshComponent.FindAnimNode('Blend')); + GetUpNode = AnimNodeSequence(SkeletalMeshComponent.FindAnimNode('GetUp')); + RunNode = AnimNodeSequence(SkeletalMeshComponent.FindAnimNode('Run')); + HipBody = SkeletalMeshComponent.FindBodyInstanceNamed('Hips'); + SetPATAState(0); + //return; +} + +simulated function BoneImpulse(Vector Impulse, name BoneName) +{ + local Vector Loc; + + Loc = SkeletalMeshComponent.GetBoneLocation(BoneName); + SkeletalMeshComponent.AddImpulse(Impulse, Loc, BoneName, true); + //return; +} + +simulated function bool PrePokeActor(Vector PokeDir) +{ + SetPATAState(1); + bBlendingBack = true; + BlendBackStartTime = WorldInfo.TimeSeconds + PokePauseTime; + return true; + //return ReturnValue; +} + +simulated function bool PreGrab() +{ + // End:0x16 + if(int(CurrentState) == int(1)) + { + return false; + } + // End:0x42 + if(int(CurrentState) == int(0)) + { + bNextPokeKnocksDown = true; + SetPATAState(1); + } + return true; + //return ReturnValue; +} + +simulated function EndGrab() +{ + // End:0x48 + if(int(CurrentState) == int(1)) + { + bBlendingBack = true; + BlendBackStartTime = WorldInfo.TimeSeconds; + } + //return; +} + +simulated function SetPATAState(TgPhysAnimTestActor.EPATAState NewState) +{ + // End:0x16 + if(int(CurrentState) == int(4)) + { + return; + } + // End:0x42 + if((int(NewState) == int(4)) && int(CurrentState) != int(3)) + { + return; + } + // End:0x8A + if(int(NewState) == int(0)) + { + RunNode.bPlaying = true; + SetPhysics(7); + SetBodiesFixed(true); + } + else + { + // End:0xE7 + if(int(NewState) == int(1)) + { + RunNode.bPlaying = true; + SetPhysics(7); + SetLowerFixed(); + EnableMotors(true); + SetBoneSprings(true); + } + else + { + // End:0x151 + if(int(NewState) == int(2)) + { + RunNode.bPlaying = true; + SetPhysics(10); + SetBodiesFixed(false); + EnableMotors(true); + bBlendingBack = false; + SetBoneSprings(false); + } + else + { + // End:0x1C5 + if(int(NewState) == int(3)) + { + RunNode.bPlaying = false; + SetPhysics(10); + SetBodiesFixed(false); + EnableMotors(false); + bBlendingBack = false; + SetBoneSprings(false); + DetachAttachments(); + } + else + { + // End:0x1E3 + if(int(NewState) == int(4)) + { + RecoverFromRagdoll(); + } + } + } + } + } + CurrentState = NewState; + //return; +} + +simulated function EnableMotors(bool InEnabled) +{ + SkeletalMeshComponent.PhysicsAssetInstance.SetAllMotorsAngularPositionDrive(InEnabled, InEnabled); + //return; +} + +simulated function SetBodiesFixed(bool InFixed) +{ + SkeletalMeshComponent.PhysicsAssetInstance.SetAllBodiesFixed(InFixed); + //return; +} + +simulated function bool IsLowerBodyName(name InName) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x54 [Loop If] + if(I < LowerBoneNames.Length) + { + // End:0x46 + if(LowerBoneNames[I] == InName) + { + return true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +simulated function DetachAttachments() +{ + local int I; + local Actor A; + local array TempAttachments; + + I = 0; + J0x0B: + + // End:0x58 [Loop If] + if(I < Attached.Length) + { + TempAttachments[I] = Attached[I]; + I++; + // [Loop Continue] + goto J0x0B; + } + I = 0; + J0x63: + + // End:0x120 [Loop If] + if(I < TempAttachments.Length) + { + A = TempAttachments[I]; + // End:0x112 + if(A != none) + { + A.SetBase(none); + A.SetPhysics(10); + A.CollisionComponent.SetBlockRigidBody(true); + } + I++; + // [Loop Continue] + goto J0x63; + } + //return; +} + +simulated function SetLowerFixed() +{ + local RB_BodyInstance BodyInst; + local RB_BodySetup BodySetup; + local int I; + + I = 0; + J0x0B: + + // End:0x157 [Loop If] + if(I < SkeletalMeshComponent.PhysicsAsset.BodySetup.Length) + { + BodyInst = SkeletalMeshComponent.PhysicsAssetInstance.Bodies[I]; + BodySetup = SkeletalMeshComponent.PhysicsAsset.BodySetup[I]; + // End:0x129 + if(IsLowerBodyName(BodySetup.BoneName)) + { + BodyInst.SetFixed(true); + } + else + { + BodyInst.SetFixed(false); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated function bool IsLinearBoneSpringName(name InName) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x54 [Loop If] + if(I < LinearBoneSpringNames.Length) + { + // End:0x46 + if(LinearBoneSpringNames[I] == InName) + { + return true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +simulated function bool IsAngularBoneSpringName(name InName) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x54 [Loop If] + if(I < AngularBoneSpringNames.Length) + { + // End:0x46 + if(AngularBoneSpringNames[I] == InName) + { + return true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +simulated function SetBoneSprings(bool bEnabled) +{ + local RB_BodyInstance BodyInst; + local RB_BodySetup BodySetup; + local int I, BoneIndex; + local bool bEnableLinear, bEnableAngular; + local Matrix BoneMatrix; + + I = 0; + J0x0B: + + // End:0x23E [Loop If] + if(I < SkeletalMeshComponent.PhysicsAsset.BodySetup.Length) + { + BodyInst = SkeletalMeshComponent.PhysicsAssetInstance.Bodies[I]; + BodySetup = SkeletalMeshComponent.PhysicsAsset.BodySetup[I]; + bEnableLinear = IsLinearBoneSpringName(BodySetup.BoneName); + bEnableAngular = IsAngularBoneSpringName(BodySetup.BoneName); + // End:0x230 + if(bEnableLinear || bEnableAngular) + { + BoneIndex = SkeletalMeshComponent.MatchRefBone(BodySetup.BoneName); + BoneMatrix = SkeletalMeshComponent.GetBoneMatrix(BoneIndex); + BodyInst.EnableBoneSpring(bEnabled && bEnableLinear, bEnabled && bEnableAngular, BoneMatrix); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated function RecoverFromRagdoll() +{ + local Vector HitLocation, HitNormal, TraceStart, TraceEnd, HeightVec; + + local Rotator NewRotation; + local bool GetUpFromBack; + + SkeletalMeshComponent.bUpdateKinematicBonesFromAnimation = false; + HeightVec = vect(0.0000000, 0.0000000, 1.0000000) * ActorOriginHeight; + TraceStart = Location + HeightVec; + TraceEnd = Location - HeightVec; + // End:0xD3 + if(Trace(HitLocation, HitNormal, TraceEnd, TraceStart, true, vect(20.0000000, 20.0000000, 0.0000000) + HeightVec) != none) + { + SetLocation(HitLocation); + } + SetPhysics(7); + GetUpFromBack = SkeletalMeshComponent.GetBoneAxis('head', 2).Z > 0.0000000; + NewRotation = Rotation; + NewRotation.Yaw = Rotator(SkeletalMeshComponent.GetBoneAxis('Hips', 4)).Yaw; + // End:0x1C6 + if(GetUpFromBack) + { + NewRotation.Yaw += 32768; + } + SetRotation(NewRotation); + // End:0x20A + if(GetUpFromBack) + { + GetUpNode.SetAnim('feigndeath_getup_back'); + } + else + { + GetUpNode.SetAnim('feigndeath_getup_front'); + } + GetUpNode.SetPosition(0.0000000, false); + BlendNode.SetBlendTarget(1.0000000, 0.0000000); + bBlendToGetUp = true; + GetUpBlendStartTime = WorldInfo.TimeSeconds; + //return; +} + +simulated function SetAllMotorsAngularDriveStrength(float InAngularSpringStrength, float InAngularDampingStrength, float InAngularForceLimitStrength, SkeletalMeshComponent SkelMeshComp) +{ + local float DefSpringScale, DefDampScale, DefForceScale; + + // End:0x11 + if(SkelMeshComp == none) + { + return; + } + DefSpringScale = SkelMeshComp.PhysicsAsset.DefaultInstance.AngularSpringScale; + DefDampScale = SkelMeshComp.PhysicsAsset.DefaultInstance.AngularDampingScale; + DefForceScale = SkelMeshComp.PhysicsAsset.DefaultInstance.AngularForceLimitScale; + SkelMeshComp.PhysicsAssetInstance.SetAngularDriveScale(DefSpringScale * InAngularSpringStrength, DefDampScale * InAngularDampingStrength, DefForceScale * InAngularForceLimitStrength); + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + local float MotorScale; + local int HipIndex; + local Matrix HipMatrix; + + super.Tick(DeltaSeconds); + // End:0x3DF + if(bRampingDownMotors) + { + // End:0x87 + if((MotorDownStartTime + MotorDownAnimTime) > WorldInfo.TimeSeconds) + { + SetLocation(Location + ((DeltaSeconds * StaggerVel) * MoveDir)); + } + else + { + // End:0x30F + if((MotorDownStartTime + MotorDownTime) > WorldInfo.TimeSeconds) + { + // End:0x1FF + if(int(CurrentState) != int(2)) + { + HipIndex = SkeletalMeshComponent.MatchRefBone('Hips'); + HipMatrix = SkeletalMeshComponent.GetBoneMatrix(HipIndex); + SetPATAState(2); + SkeletalMeshComponent.bUpdateKinematicBonesFromAnimation = false; + HipBody.SetBoneSpringParams(50.0000000, 1.0000000, AngularHipDriveScale * 50.0000000, 0.1000000); + HipBody.EnableBoneSpring(true, true, HipMatrix); + SkeletalMeshComponent.SetRBLinearVelocity(MoveDir * StaggerVel, true); + } + MotorScale = 1.0000000 - (WorldInfo.TimeSeconds - ((MotorDownStartTime + MotorDownAnimTime) / (MotorDownTime - MotorDownAnimTime))); + MotorScale = (MotorScale * MotorScale) * MotorScale; + SetAllMotorsAngularDriveStrength(MotorScale * StaggerMuscleScale, MotorScale * StaggerMuscleScale, 1.0000000, SkeletalMeshComponent); + HipBody.SetBoneSpringParams(50.0000000, 1.0000000, (MotorScale * AngularHipDriveScale) * 50.0000000, 0.1000000); + } + else + { + bRampingDownMotors = false; + SkeletalMeshComponent.bUpdateKinematicBonesFromAnimation = true; + SetPATAState(3); + HipBody.EnableBoneSpring(false, false, HipMatrix); + GetUpNode.StopAnim(); + BlendNode.SetBlendTarget(0.0000000, 0.0000000); + SetAllMotorsAngularDriveStrength(1.0000000, 1.0000000, 1.0000000, SkeletalMeshComponent); + } + } + } + else + { + // End:0x4EE + if(bBlendingBack) + { + // End:0x41B + if(BlendBackStartTime > WorldInfo.TimeSeconds) + { + } + else + { + // End:0x4AF + if((BlendBackStartTime + PokeBlendTime) > WorldInfo.TimeSeconds) + { + SkeletalMeshComponent.PhysicsWeight = 1.0000000 - ((WorldInfo.TimeSeconds - BlendBackStartTime) / PokeBlendTime); + } + else + { + bBlendingBack = false; + SetPATAState(0); + SkeletalMeshComponent.PhysicsWeight = 1.0000000; + } + } + } + else + { + // End:0x60A + if(bBlendToGetUp) + { + // End:0x58F + if((GetUpBlendStartTime + GetUpBlendTime) > WorldInfo.TimeSeconds) + { + SkeletalMeshComponent.PhysicsWeight = 1.0000000 - ((WorldInfo.TimeSeconds - GetUpBlendStartTime) / GetUpBlendTime); + } + else + { + bBlendToGetUp = false; + SkeletalMeshComponent.bUpdateKinematicBonesFromAnimation = true; + SkeletalMeshComponent.PhysicsWeight = 1.0000000; + GetUpNode.PlayAnim(false, 1.0000000, 0.0000000); + } + } + } + } + //return; +} + +event OnAnimEnd(AnimNodeSequence SeqNode, float PlayedTime, float ExcessTime) +{ + // End:0xD6 + if(SeqNode.AnimSeqName != 'Stumble_Bwd') + { + SkeletalMeshComponent.bUpdateKinematicBonesFromAnimation = true; + SkeletalMeshComponent.PhysicsWeight = 1.0000000; + RunNode.bPlaying = true; + BlendNode.SetBlendTarget(0.0000000, GetUpToIdleTime); + SetBodiesFixed(true); + CurrentState = 0; + } + //return; +} + +defaultproperties +{ + LowerBoneNames[0]="LeftUpperLeg" + LowerBoneNames[1]="LeftLeg" + LowerBoneNames[2]="LeftAnkle" + LowerBoneNames[3]="RightUpperLeg" + LowerBoneNames[4]="RightLeg" + LowerBoneNames[5]="RightAnkle" + LowerBoneNames[6]="Hips" + LinearBoneSpringNames[0]="LeftHand" + LinearBoneSpringNames[1]="RightHand" + AngularBoneSpringNames[0]="Neck" + // Reference: SkeletalMeshComponent'TgGame.Default__TgPhysAnimTestActor.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" class=Engine.SkeletalMeshComponent + PhysicsWeight=1.0000000 + bHasPhysicsAssetInstance=true + bUpdateJointsFromAnimation=true + ReplacementPrimitive=none + CollideActors=true + BlockZeroExtent=true + BlockRigidBody=true + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + GetUpBlendTime=0.2000000 + GetUpToIdleTime=0.4000000 + ActorOriginHeight=50.0000000 + PokePauseTime=0.7000000 + PokeBlendTime=0.5000000 + MotorDownTime=1.4000000 + MotorDownAnimTime=0.4000000 + BlendStaggerAnimTime=0.1500000 + StaggerSpeedAdj=0.1000000 + StaggerVel=100.0000000 + AngularHipDriveScale=5.0000000 + StaggerMuscleScale=200.0000000 + Components[0]=SkeletalMeshComponent0 + RemoteRole=ENetRole.ROLE_SimulatedProxy + bNoDelete=true + bCollideActors=true + bProjTarget=true + CollisionComponent=SkeletalMeshComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPhysicalMaterialProperty.uc b/exported/TgGame/Classes/TgPhysicalMaterialProperty.uc new file mode 100755 index 00000000..4b5ced69 --- /dev/null +++ b/exported/TgGame/Classes/TgPhysicalMaterialProperty.uc @@ -0,0 +1,7 @@ +class TgPhysicalMaterialProperty extends PhysicalMaterialPropertyBase + native(FX) + editinlinenew + collapsecategories + hidecategories(Object); + +var() name MaterialType; diff --git a/exported/TgGame/Classes/TgPickupFactory.uc b/exported/TgGame/Classes/TgPickupFactory.uc new file mode 100755 index 00000000..e4cdd557 --- /dev/null +++ b/exported/TgGame/Classes/TgPickupFactory.uc @@ -0,0 +1,66 @@ +class TgPickupFactory extends PickupFactory + abstract + native(Inventory) + hidecategories(Navigation,Lighting,LightColor,Force,Display,Collision); + +var bool bRotatingPickup; +var float YawRotationRate; +var Controller TeamOwner[4]; +var export editinline PrimitiveComponent BaseMesh; + +function bool ShouldCamp(TgAIController B, float MaxWait) +{ + return ((ReadyToPickup(MaxWait)) && B.RatePickup(self, InventoryType) > float(0)) && !ReadyToPickup(0.0000000); + //return ReturnValue; +} + +static simulated function UpdateHUD(TgHUD H) +{ + //return; +} + +function RespawnEffect() +{ + //return; +} + +simulated function bool StopsProjectile(Projectile P) +{ + local editinline CylinderComponent CylComp; + local Actor HitActor; + local Vector HitNormal, HitLocation; + + CylComp = CylinderComponent(P.CollisionComponent); + // End:0x134 + if((CylComp != none) && (CylComp.CollisionRadius > float(0)) || CylComp.CollisionHeight > float(0)) + { + HitActor = Trace(HitLocation, HitNormal, P.Location, P.Location - (float(100) * Normal(P.Velocity)), true, vect(0.0000000, 0.0000000, 0.0000000)); + // End:0x134 + if(HitActor != self) + { + return false; + } + } + return bProjTarget || bBlockActors; + //return ReturnValue; +} + +defaultproperties +{ + YawRotationRate=32768.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPickupFactory.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__PickupFactory.CollisionCylinder' + begin object name="CollisionCylinder" + CollisionHeight=44.0000000 + CollisionRadius=34.0000000 + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=CollisionCylinder + Components[3]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPickupFactory_Item.uc b/exported/TgGame/Classes/TgPickupFactory_Item.uc new file mode 100755 index 00000000..e990eb76 --- /dev/null +++ b/exported/TgGame/Classes/TgPickupFactory_Item.uc @@ -0,0 +1,73 @@ +class TgPickupFactory_Item extends TgPickupFactory + abstract + hidecategories(Navigation,Lighting,LightColor,Force,Display,Collision); + +var SoundCue PickupSound; +var const localized string PickupMessage; +var float RespawnTime; + +simulated function InitializePickup() +{ + //return; +} + +static function string GetLocalString(optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2) +{ + return default.PickupMessage; + //return ReturnValue; +} + +function SpawnCopyFor(Pawn Recipient) +{ + Recipient.PlaySound(PickupSound); + // End:0xAC + if(PlayerController(Recipient.Controller) != none) + { + PlayerController(Recipient.Controller).ReceiveLocalizedMessage(MessageClass,,,, Class); + } + //return; +} + +function SetRespawn() +{ + // End:0x45 + if(WorldInfo.Game.ShouldRespawn(self)) + { + StartSleeping(); + } + else + { + GotoState('Disabled'); + } + //return; +} + +function float GetRespawnTime() +{ + return RespawnTime; + //return ReturnValue; +} + +function float BotDesireability(Pawn P) +{ + return 0.0000000; + //return ReturnValue; +} + +defaultproperties +{ + RespawnTime=30.0000000 + // Reference: CylinderComponent'TgGame.Default__TgPickupFactory_Item.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPickupFactory.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=CollisionCylinder + Components[3]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPlayOfTheGameCamera.uc b/exported/TgGame/Classes/TgPlayOfTheGameCamera.uc new file mode 100755 index 00000000..b12878fc --- /dev/null +++ b/exported/TgGame/Classes/TgPlayOfTheGameCamera.uc @@ -0,0 +1,76 @@ +class TgPlayOfTheGameCamera extends CameraActor + native(View) + hidecategories(Navigation); + +var(CameraActor) TgSkeletalMeshActor_Loader m_ViewTarget; +var transient bool m_bActive; +var float m_fRemainingTweenTime; +var float m_fTotalTweenTime; +var transient TPOV m_TweenSourcePOV; +var Vector m_vRelativeLocation; +var Vector m_vRelativeRotation; +var(CameraActor) Vector m_vRelativeLocationOffset; +var(CameraActor) Vector m_vRelativeRotationOffset; + +// Export UTgPlayOfTheGameCamera::execSetActive(FFrame&, void* const) +native function SetActive(bool bActive); + +// Export UTgPlayOfTheGameCamera::execUpdateTransform(FFrame&, void* const) +native function UpdateTransform(); + +simulated function StartTween(float TweenTime) +{ + m_fRemainingTweenTime = TweenTime; + m_fTotalTweenTime = TweenTime; + m_TweenSourcePOV = GetALocalPlayerController().PlayerCamera.CameraCache.POV; + //return; +} + +simulated function GetCameraView(float DeltaTime, out TPOV OutPOV) +{ + GetActorEyesViewPoint(OutPOV.Location, OutPOV.Rotation); + OutPOV.FOV = (57.2957800 * Atan(Tan((0.0174533 * FOVAngle) / 2.0000000) * AspectRatio)) * 2.0000000; + //return; +} + +simulated event ApplyPostProcessOverrides() +{ + CamOverridePostProcessAlpha = 1.0000000; + CamOverridePostProcess.bOverride_EnableDOF = true; + CamOverridePostProcess.bEnableDOF = true; + CamOverridePostProcess.bOverride_DOF_BlurBloomKernelSize = true; + CamOverridePostProcess.DOF_BlurBloomKernelSize = 16.0000000; + CamOverridePostProcess.bOverride_DOF_FalloffExponent = true; + CamOverridePostProcess.DOF_FalloffExponent = 4.0000000; + CamOverridePostProcess.bOverride_DOF_BlurKernelSize = true; + CamOverridePostProcess.DOF_BlurKernelSize = 16.0000000; + CamOverridePostProcess.bOverride_DOF_MaxNearBlurAmount = true; + CamOverridePostProcess.DOF_MaxNearBlurAmount = 0.9000000; + CamOverridePostProcess.bOverride_DOF_MinBlurAmount = true; + CamOverridePostProcess.DOF_MinBlurAmount = 0.0000000; + CamOverridePostProcess.bOverride_DOF_MaxFarBlurAmount = true; + CamOverridePostProcess.DOF_MaxFarBlurAmount = 0.9000000; + CamOverridePostProcess.bOverride_DOF_FocusType = true; + CamOverridePostProcess.DOF_FocusType = 0; + CamOverridePostProcess.bOverride_DOF_FocusInnerRadius = true; + CamOverridePostProcess.DOF_FocusInnerRadius = 500.0000000; + CamOverridePostProcess.bOverride_DOF_FocusDistance = true; + CamOverridePostProcess.DOF_FocusDistance = 0.0000000; + CamOverridePostProcess.bOverride_DOF_FocusPosition = true; + CamOverridePostProcess.DOF_FocusPosition.X = 0.0000000; + CamOverridePostProcess.DOF_FocusPosition.Y = 0.0000000; + CamOverridePostProcess.DOF_FocusPosition.Z = 0.0000000; + CamOverridePostProcess.bOverride_DOF_InterpolationDuration = true; + CamOverridePostProcess.DOF_InterpolationDuration = 1.0000000; + CamOverridePostProcess.bOverride_DOF_BokehTexture = true; + CamOverridePostProcess.DOF_BokehTexture = none; + //return; +} + +defaultproperties +{ + m_TweenSourcePOV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000)) + m_vRelativeLocation=(X=95.0000000,Y=-7.0000000,Z=64.0000000) + m_vRelativeRotation=(X=0.0000000,Y=0.0000000,Z=160.0000000) + FOVAngle=40.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPlayerBlockingVolume.uc b/exported/TgGame/Classes/TgPlayerBlockingVolume.uc new file mode 100755 index 00000000..d8bb130b --- /dev/null +++ b/exported/TgGame/Classes/TgPlayerBlockingVolume.uc @@ -0,0 +1,18 @@ +class TgPlayerBlockingVolume extends BlockingVolume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +defaultproperties +{ + // Reference: BrushComponent'TgGame.Default__TgPlayerBlockingVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__BlockingVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + bCanStepUpOn=false + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPlayerCamera.uc b/exported/TgGame/Classes/TgPlayerCamera.uc new file mode 100755 index 00000000..af5a7733 --- /dev/null +++ b/exported/TgGame/Classes/TgPlayerCamera.uc @@ -0,0 +1,1332 @@ +class TgPlayerCamera extends Camera + transient + native(View) + hidecategories(Navigation); + +struct native PropertyDecayState +{ + var float PropertyLevel; + var float PropertyMax; + var float LastDecayTimestamp; + + structdefaultproperties + { + PropertyLevel=0.0000000 + PropertyMax=0.0000000 + LastDecayTimestamp=0.0000000 + } +}; + +struct native PropertyDecayParams +{ + var float LambdaImpulse; + var float LambdaAccumulation; + var float AccumulationImpulseMix; + + structdefaultproperties + { + LambdaImpulse=0.0000000 + LambdaAccumulation=0.0000000 + AccumulationImpulseMix=0.0000000 + } +}; + +var TgPlayerController PlayerOwner; +var() editinline TgCameraModule CurrentCameraMod; +var Class DefaultCameraModuleClass; +var array CameraModuleList; +var Rotator CamAngle; +var Vector CameraLocationLocalToTarget; +var Quat CameraRotationLocalToTarget; +var bool bTweening; +var bool bInterpolatingFOV; +var bool m_bPlayingHeal; +var float fTweenStart; +var float fTweenDuration; +var TgCameraModule LastCameraMod; +var float fFOVInterpStartTimestamp; +var float fFOVInterpStartValue; +var float fFOVInterpEndTimestamp; +var float fLastAppliedFOV; +var float m_fCollisionTraceExtent; +var TgEmitter_CameraEffect_Bleed m_BleedCameraEffect; +var TgEmitter_CameraEffect_Daze m_DazeCameraEffect; +var TgEmitter_CameraEffect_Fire m_FireCameraEffect; +var TgEmitter_CameraEffect_Freeze m_FreezeCameraEffect; +var TgEmitter_CameraEffect_Heal m_HealCameraEffect; +var TgEmitter_CameraEffect_Knockback m_KnockbackCameraEffect; +var TgEmitter_CameraEffect_Mark m_MarkCameraEffect; +var TgEmitter_CameraEffect_Poison m_PoisonCameraEffect; +var TgEmitter_CameraEffect_Venom m_VenomCameraEffect; +var TgEmitter_CameraEffect_Root m_RootCameraEffect; +var TgEmitter_CameraEffect_Slow m_SlowCameraEffect; +var TgEmitter_CameraEffect_Stun m_StunCameraEffect; +var TgEmitter_CameraEffect_Hidden m_HiddenCameraEffect; +var TgEmitter_CameraEffect_Hidden m_GrassCameraEffect; +var TgEmitter_CameraEffect_Teleport m_TeleportCameraEffect; +var TgEmitter_CameraEffect_PreTeleport m_PreTeleportCameraEffect; +var TgEmitter_CameraEffect_CCImmune m_CCImmuneCameraEffect; +var TgEmitter_CameraEffect_Cripple m_CrippleCameraEffect; +var TgEmitter_CameraEffect_Revealed m_RevealedCameraEffect; +var protected transient array m_CameraEffects; +var int m_nCameraEffectIdCounter; +var Class m_HealthDamageCameraEffectClasses[EDamageEffectScreenLocation]; +var Class m_ShieldDamageCameraEffectClasses[EDamageEffectScreenLocation]; +var PropertyDecayState m_HealthDamageFXState[EDamageEffectScreenLocation]; +var PropertyDecayState m_HealingFXState; +var PropertyDecayParams m_HealthDamageFXParams; +var PropertyDecayParams m_HealingFXParams; +var float m_fAccumulateHealing; +var float m_fSecondsSinceLastHealFXUpdate; +var float m_fHealFXUpdatePeriod; +var float m_fHealingFXHalflifeAccumulation; +var float m_fHealingFXHalflifeImpulse; +var float m_fHealingFXReliefFactor; +var float m_fHealingFXAccumulationMix; +var float m_fHealingFXVisibleThreshold; +var float m_fHealingCritFXThreshold; +var float m_fHealthDamageFXHalflifeAccumulation; +var float m_fHealthDamageFXHalflifeImpulse; +var float m_fHealthDamageFXPainFactor; +var float m_fHealthDamageFXAccumulationMix; +var float m_fHealthDamageCritFXThreshold; +var float m_fHealthDamageCritFXAccumulationMix; + +// Export UTgPlayerCamera::execCameraTrace(FFrame&, void* const) +native function CameraTrace(out Vector HitLocation, out Vector HitNormal, Vector End, Vector Start, Actor Target); + +// Export UTgPlayerCamera::execCheckPenetration(FFrame&, void* const) +native final function CheckPenetration(Vector CheckLocation, float CheckRadius); + +// Export UTgPlayerCamera::execClearPenetrationList(FFrame&, void* const) +native final function ClearPenetrationList(); + +// Export UTgPlayerCamera::execCheckViewTarget(FFrame&, void* const) +native function CheckViewTarget(out TViewTarget VT); + +private final function float LambdaFromHalflife(float fHalflife) +{ + return -((fHalflife <= 0.0001000) ? 99.0000000 : 0.6931500 / fHalflife); + //return ReturnValue; +} + +function PostBeginPlay() +{ + super.PostBeginPlay(); + m_HealthDamageFXParams.LambdaAccumulation = LambdaFromHalflife(m_fHealthDamageFXHalflifeAccumulation); + m_HealthDamageFXParams.LambdaImpulse = LambdaFromHalflife(m_fHealthDamageFXHalflifeImpulse); + m_HealthDamageFXParams.AccumulationImpulseMix = m_fHealthDamageFXAccumulationMix; + m_HealingFXParams.LambdaAccumulation = LambdaFromHalflife(m_fHealingFXHalflifeAccumulation); + m_HealingFXParams.LambdaImpulse = LambdaFromHalflife(m_fHealingFXHalflifeImpulse); + m_HealingFXParams.AccumulationImpulseMix = m_fHealingFXAccumulationMix; + // End:0x179 + if(CurrentCameraMod == none) + { + // End:0x165 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + SwitchCameras(DefaultCameraModuleClass); + } + else + { + SwitchCameras(Class'TgGame.TgCameraModule_Server'); + } + } + //return; +} + +function InitializeFor(PlayerController PC) +{ + super.InitializeFor(PC); + PlayerOwner = TgPlayerController(PC); + // End:0xC9 + if((PlayerOwner != none) && int(PlayerOwner.c_GameWinState) != int(0)) + { + self.FadeAlpha = vect2d(1.0000000, 1.0000000); + self.FadeAmount = 1.0000000; + self.bEnableFading = true; + } + //return; +} + +function ResetFOV() +{ + bLockedFOV = false; + bInterpolatingFOV = false; + //return; +} + +function SetFOV(float NewFOV) +{ + LockedFOV = NewFOV; + bLockedFOV = true; + bInterpolatingFOV = false; + //return; +} + +function InterpolateFOV(float NewFOV, float InterpolationTime) +{ + // End:0x2F + if(bLockedFOV) + { + fFOVInterpStartValue = LockedFOV; + bLockedFOV = false; + } + else + { + fFOVInterpStartValue = fLastAppliedFOV; + } + LockedFOV = NewFOV; + fFOVInterpStartTimestamp = WorldInfo.TimeSeconds; + fFOVInterpEndTimestamp = fFOVInterpStartTimestamp + InterpolationTime; + bInterpolatingFOV = true; + //return; +} + +function float GetFOVAngle() +{ + // End:0x17 + if(bInterpolatingFOV) + { + return fLastAppliedFOV; + } + return super.GetFOVAngle(); + //return ReturnValue; +} + +event TgCameraModule SwitchCameras(Class CameraClass, optional float fTweenTime = 0.0000000) +{ + local TgCameraModule module, NewModule; + + // End:0x2B + if(CameraClass == none) + { + CameraClass = DefaultCameraModuleClass; + } + // End:0x9A + if((CurrentCameraMod != none) && CurrentCameraMod.Class == CameraClass) + { + CurrentCameraMod.OnBecomeActive(CurrentCameraMod); + return CurrentCameraMod; + } + NewModule = none; + // End:0xFF + foreach CameraModuleList(module) + { + // End:0xFE + if(module.Class == CameraClass) + { + NewModule = module; + } + else + { + } + } + // End:0x12C + if(NewModule == none) + { + NewModule = CreateCamera(CameraClass); + } + // End:0x232 + if(NewModule != none) + { + EndLastCameraTween(); + // End:0x1F4 + if(CurrentCameraMod != none) + { + CurrentCameraMod.OnBecomeInActive(NewModule); + LastCameraMod = CurrentCameraMod; + // End:0x1EA + if(fTweenTime > float(0)) + { + bTweening = true; + fTweenStart = WorldInfo.TimeSeconds; + fTweenDuration = fTweenTime; + } + else + { + EndLastCameraTween(); + } + } + NewModule.OnBecomeActive(CurrentCameraMod); + CurrentCameraMod = NewModule; + } + return CurrentCameraMod; + //return ReturnValue; +} + +protected function TgCameraModule CreateCamera(Class CameraClass) +{ + local TgCameraModule NewCam; + + NewCam = new (Outer) CameraClass; + // End:0x8C + if(NewCam != none) + { + NewCam.PlayerCamera = self; + NewCam.Init(); + CameraModuleList[CameraModuleList.Length] = NewCam; + } + return NewCam; + //return ReturnValue; +} + +function UpdateViewTarget(out TViewTarget OutVT, float DeltaTime) +{ + local CameraActor CamActor; + local TViewTarget tweenVT; + local float fTweenPct; + local TgClientSettings Settings; + + // End:0x66 + if(((PendingViewTarget.Target != none) && OutVT == ViewTarget) && BlendParams.bLockOutgoing) + { + return; + } + OutVT.POV.FOV = DefaultFOV; + Settings = PlayerOwner.GetClientSettings(); + // End:0x154 + if(Settings != none) + { + bConstrainAspectRatio = true; + ConstrainedAspectRatio = Settings.GetDesiredAspectRatio(); + // End:0x12E + if(ConstrainedAspectRatio == 0.0000000) + { + ConstrainedAspectRatio = 1.7777800; + } + OutVT.AspectRatio = ConstrainedAspectRatio; + } + CamActor = CameraActor(OutVT.Target); + // End:0x2C8 + if(CamActor != none) + { + CamActor.GetCameraView(DeltaTime, OutVT.POV); + OutVT.POV.FOV = (57.2957800 * Atan(Tan((0.0174533 * OutVT.POV.FOV) / 2.0000000) * CamActor.AspectRatio)) * 2.0000000; + CamOverridePostProcessAlpha = CamActor.CamOverridePostProcessAlpha; + CamPostProcessSettings = CamActor.CamOverridePostProcess; + } + else + { + // End:0x5AB + if((Pawn(OutVT.Target) == none) || !Pawn(OutVT.Target).CalcCamera(DeltaTime, OutVT.POV.Location, OutVT.POV.Rotation, OutVT.POV.FOV)) + { + // End:0x5A9 + if(CurrentCameraMod != none) + { + tweenVT = OutVT; + // End:0x4D9 + if((LastCameraMod != none) && bTweening) + { + fTweenPct = ((fTweenDuration > float(0)) ? (WorldInfo.TimeSeconds - fTweenStart) / fTweenDuration : 1.0000000); + // End:0x47F + if(fTweenPct >= float(1)) + { + EndLastCameraTween(); + } + else + { + LastCameraMod.UpdateCamera(Pawn(tweenVT.Target), self, DeltaTime, tweenVT); + } + } + else + { + // End:0x4FE + if((LastCameraMod == none) == bTweening) + { + EndLastCameraTween(); + } + } + CurrentCameraMod.UpdateCamera(Pawn(OutVT.Target), self, DeltaTime, OutVT); + // End:0x5A6 + if(LastCameraMod != none) + { + OutVT.POV = BlendViewTargets(tweenVT, OutVT, fTweenPct); + } + } + else + { + return; + } + } + } + ApplyCameraModifiers(DeltaTime, OutVT.POV); + //return; +} + +function EndLastCameraTween() +{ + // End:0x2E + if(LastCameraMod != none) + { + LastCameraMod.OnTweenOutEnd(); + } + LastCameraMod = none; + bTweening = false; + //return; +} + +function ProcessInput(PlayerInput PlayerInput, float DeltaTime) +{ + CamAngle.Yaw += int(PlayerInput.aTurn); + CamAngle.Pitch += int(PlayerInput.aLookUp); + // End:0xBC + if(CurrentCameraMod != none) + { + CurrentCameraMod.ProcessInput(PlayerInput, DeltaTime); + } + //return; +} + +function zoomIn() +{ + CurrentCameraMod.zoomIn(); + //return; +} + +function ZoomOut() +{ + CurrentCameraMod.ZoomOut(); + //return; +} + +simulated event UpdateCamera(float DeltaTime) +{ + local Vector ViewLocation; + local Rotator ViewRotation; + local int I; + local TgPlayerController TgPC; + local TgPawn TgP; + local float CamFOV; + + // End:0x4A + if(WorldInfo.IsPlayingDemo()) + { + DeltaTime = WorldInfo.m_fRealDeltaSeconds; + } + // End:0x343 + if((PCOwner.IsLocalPlayerController() || !bUseClientSideCameraUpdates) || bDebugClientSideCamera) + { + DoUpdateCamera(DeltaTime); + // End:0x241 + if(((int(WorldInfo.NetMode) == int(NM_Client)) && bShouldSendClientSideCameraUpdate) && !WorldInfo.IsPlayingDemo()) + { + ViewLocation = CameraCache.POV.Location; + ViewRotation = CameraCache.POV.Rotation; + // End:0x1C1 + if(TgPlayerController(PCOwner) != none) + { + TgPlayerController(PCOwner).GetAimingViewPoint(ViewLocation, ViewRotation); + } + PCOwner.ServerUpdateCamera(ViewLocation, (ViewRotation.Pitch & 65535) + ((ViewRotation.Yaw & 65535) << 16)); + bShouldSendClientSideCameraUpdate = false; + } + TgPC = TgPlayerController(PCOwner); + // End:0x343 + if(TgPC != none) + { + TgP = TgPC.GetTgPawn(); + // End:0x343 + if(((TgP != none) && TgP.m_WeaponMesh != none) && !TgP.m_WeaponMesh.CanUseCameraBone()) + { + TgP.m_WeaponMesh.UpdateTransform(DeltaTime, true); + } + } + } + CamFOV = CameraCache.POV.FOV; + // End:0x411 + if(m_BleedCameraEffect != none) + { + m_BleedCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0x4A6 + if(m_DazeCameraEffect != none) + { + m_DazeCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0x53B + if(m_FireCameraEffect != none) + { + m_FireCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0x5D0 + if(m_CCImmuneCameraEffect != none) + { + m_CCImmuneCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0x665 + if(m_FreezeCameraEffect != none) + { + m_FreezeCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0x6FA + if(m_HealCameraEffect != none) + { + m_HealCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0x78F + if(m_KnockbackCameraEffect != none) + { + m_KnockbackCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0x824 + if(m_MarkCameraEffect != none) + { + m_MarkCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0x8B9 + if(m_TeleportCameraEffect != none) + { + m_TeleportCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0x94E + if(m_PreTeleportCameraEffect != none) + { + m_PreTeleportCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0x9E3 + if(m_HiddenCameraEffect != none) + { + m_HiddenCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0xA78 + if(m_GrassCameraEffect != none) + { + m_GrassCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0xB0D + if(m_PoisonCameraEffect != none) + { + m_PoisonCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0xBA2 + if(m_CrippleCameraEffect != none) + { + m_CrippleCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0xC37 + if(m_RootCameraEffect != none) + { + m_RootCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0xCCC + if(m_SlowCameraEffect != none) + { + m_SlowCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + // End:0xD61 + if(m_RevealedCameraEffect != none) + { + m_RevealedCameraEffect.UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + I = 0; + J0xD6C: + + // End:0xE55 [Loop If] + if(I < m_CameraEffects.Length) + { + // End:0xDB7 + if(m_CameraEffects[I] == none) + { + m_CameraEffects.Remove(I--, 1); + } + else + { + m_CameraEffects[I].UpdateLocation(CameraCache.POV.Location, CameraCache.POV.Rotation, CamFOV); + } + I++; + // [Loop Continue] + goto J0xD6C; + } + //return; +} + +// Export UTgPlayerCamera::execGetViewLocalToTarget(FFrame&, void* const) +native function GetViewLocalToTarget(const Actor InViewTarget, out Vector LocalViewLocation, out Quat LocalViewRotation); + +// Export UTgPlayerCamera::execUpdateCameraLocalToTarget(FFrame&, void* const) +native final function UpdateCameraLocalToTarget(); + +function FillCameraCache(const out TPOV NewPOV) +{ + // End:0x76 + if(WorldInfo.IsPlayingDemo() || CameraCache.TimeStamp != WorldInfo.TimeSeconds) + { + LastFrameCameraCache = CameraCache; + } + CameraCache.TimeStamp = WorldInfo.TimeSeconds; + CameraCache.POV = NewPOV; + ApplyFOVModification(CameraCache.POV.FOV); + UpdateCameraLocalToTarget(); + //return; +} + +function ApplyFOVModification(out float FOV) +{ + local float interpAmt; + + // End:0x128 + if(bInterpolatingFOV) + { + // End:0x6B + if(fFOVInterpEndTimestamp > fFOVInterpStartTimestamp) + { + interpAmt = FPctByRange(WorldInfo.TimeSeconds, fFOVInterpStartTimestamp, fFOVInterpEndTimestamp); + } + else + { + interpAmt = 1.0000000; + } + // End:0xE1 + if(LockedFOV > float(1)) + { + // End:0xB7 + if(interpAmt > float(1)) + { + bInterpolatingFOV = false; + bLockedFOV = true; + } + else + { + FOV = Lerp(fFOVInterpStartValue, LockedFOV, interpAmt); + } + } + else + { + // End:0x101 + if(interpAmt > float(1)) + { + bInterpolatingFOV = false; + } + else + { + FOV = Lerp(fFOVInterpStartValue, FOV, interpAmt); + } + } + } + // End:0x148 + if(bLockedFOV) + { + FOV = LockedFOV; + } + fLastAppliedFOV = FOV; + //return; +} + +function float GetFOVInterpZoomPct() +{ + // End:0x13 + if(bLockedFOV) + { + return 1.0000000; + } + // End:0x28 + if(!bInterpolatingFOV) + { + return 0.0000000; + } + // End:0xD0 + if(fFOVInterpEndTimestamp > fFOVInterpStartTimestamp) + { + // End:0x8E + if(LockedFOV > float(1)) + { + return FPctByRange(WorldInfo.TimeSeconds, fFOVInterpStartTimestamp, fFOVInterpEndTimestamp); + } + else + { + return 1.0000000 - FPctByRange(WorldInfo.TimeSeconds, fFOVInterpStartTimestamp, fFOVInterpEndTimestamp); + } + } + return ((LockedFOV > float(1)) ? 1.0000000 : 0.0000000); + //return ReturnValue; +} + +function PlayBleed(bool bEnabled) +{ + // End:0x61 + if(bEnabled) + { + // End:0x3F + if(m_BleedCameraEffect == none) + { + m_BleedCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Bleed', self); + } + m_BleedCameraEffect.Activate(); + } + else + { + // End:0x8F + if(m_BleedCameraEffect != none) + { + m_BleedCameraEffect.Deactivate(); + } + } + //return; +} + +function PlayOnFire(bool bEnabled) +{ + // End:0x61 + if(bEnabled) + { + // End:0x3F + if(m_FireCameraEffect == none) + { + m_FireCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Fire', self); + } + m_FireCameraEffect.Activate(); + } + else + { + // End:0x8F + if(m_FireCameraEffect != none) + { + m_FireCameraEffect.Deactivate(); + } + } + //return; +} + +function PlayFreeze(bool bEnabled) +{ + // End:0x61 + if(bEnabled) + { + // End:0x3F + if(m_FreezeCameraEffect == none) + { + m_FreezeCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Freeze', self); + } + m_FreezeCameraEffect.Activate(); + } + else + { + // End:0x8F + if(m_FreezeCameraEffect != none) + { + m_FreezeCameraEffect.Deactivate(); + } + } + //return; +} + +function PlayCCImmuneEffects(bool bEnabled) +{ + // End:0x61 + if(bEnabled) + { + // End:0x3F + if(m_CCImmuneCameraEffect == none) + { + m_CCImmuneCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_CCImmune', self); + } + m_CCImmuneCameraEffect.Activate(); + } + else + { + // End:0x8F + if(m_CCImmuneCameraEffect != none) + { + m_CCImmuneCameraEffect.Deactivate(); + } + } + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + local float fHealing; + + super(Actor).Tick(DeltaSeconds); + m_fSecondsSinceLastHealFXUpdate += DeltaSeconds; + // End:0x97 + if(m_HealCameraEffect == none) + { + m_HealCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Heal', self); + m_HealCameraEffect.Deactivate(); + m_bPlayingHeal = false; + m_fSecondsSinceLastHealFXUpdate = m_fHealFXUpdatePeriod; + } + // End:0x1EC + if(m_fSecondsSinceLastHealFXUpdate >= m_fHealFXUpdatePeriod) + { + m_fSecondsSinceLastHealFXUpdate -= m_fHealFXUpdatePeriod; + UpdateDecay(m_HealingFXState, m_HealingFXParams, m_fAccumulateHealing); + fHealing = m_fHealingFXReliefFactor * MixProperty(m_HealingFXState, m_HealingFXParams); + m_fAccumulateHealing = 0.0000000; + m_HealCameraEffect.SetHealIntensity(fHealing, fHealing >= m_fHealingCritFXThreshold); + // End:0x1EC + if((fHealing > m_fHealingFXVisibleThreshold) != m_bPlayingHeal) + { + m_bPlayingHeal = m_bPlayingHeal ^^ true; + // End:0x1CD + if(m_bPlayingHeal) + { + m_HealCameraEffect.Activate(); + } + else + { + m_HealCameraEffect.Deactivate(); + } + } + } + //return; +} + +event PlayHeal(float fHealAmount) +{ + m_fAccumulateHealing += fHealAmount; + //return; +} + +function PlayKnockback(bool bEnabled) +{ + // End:0x61 + if(bEnabled) + { + // End:0x3F + if(m_KnockbackCameraEffect == none) + { + m_KnockbackCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Knockback', self); + } + m_KnockbackCameraEffect.Activate(); + } + else + { + // End:0x8F + if(m_KnockbackCameraEffect != none) + { + m_KnockbackCameraEffect.Deactivate(); + } + } + //return; +} + +function PlayPoisoned(bool bEnabled) +{ + // End:0x61 + if(bEnabled) + { + // End:0x3F + if(m_PoisonCameraEffect == none) + { + m_PoisonCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Poison', self); + } + m_PoisonCameraEffect.Activate(); + } + else + { + // End:0x8F + if(m_PoisonCameraEffect != none) + { + m_PoisonCameraEffect.Deactivate(); + } + } + //return; +} + +function PlayVenom(bool bEnabled) +{ + // End:0x61 + if(bEnabled) + { + // End:0x3F + if(m_VenomCameraEffect == none) + { + m_VenomCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Venom', self); + } + m_VenomCameraEffect.Activate(); + } + else + { + // End:0x8F + if(m_VenomCameraEffect != none) + { + m_VenomCameraEffect.Deactivate(); + } + } + //return; +} + +function PlayCrippled(bool bEnabled) +{ + // End:0x61 + if(bEnabled) + { + // End:0x3F + if(m_CrippleCameraEffect == none) + { + m_CrippleCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Cripple', self); + } + m_CrippleCameraEffect.Activate(); + } + else + { + // End:0x8F + if(m_CrippleCameraEffect != none) + { + m_CrippleCameraEffect.Deactivate(); + } + } + //return; +} + +function PlayRoot(bool bEnabled) +{ + // End:0x61 + if(bEnabled) + { + // End:0x3F + if(m_RootCameraEffect == none) + { + m_RootCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Root', self); + } + m_RootCameraEffect.Activate(); + } + else + { + // End:0x8F + if(m_RootCameraEffect != none) + { + m_RootCameraEffect.Deactivate(); + } + } + //return; +} + +function PlaySlow(bool bEnabled) +{ + // End:0x61 + if(bEnabled) + { + // End:0x3F + if(m_SlowCameraEffect == none) + { + m_SlowCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Slow', self); + } + m_SlowCameraEffect.Activate(); + } + else + { + // End:0x8F + if(m_SlowCameraEffect != none) + { + m_SlowCameraEffect.Deactivate(); + } + } + //return; +} + +function PlayStun(bool bEnabled) +{ + // End:0x61 + if(bEnabled) + { + // End:0x3F + if(m_StunCameraEffect == none) + { + m_StunCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Stun', self); + } + m_StunCameraEffect.Activate(); + } + else + { + // End:0x8F + if(m_StunCameraEffect != none) + { + m_StunCameraEffect.Deactivate(); + } + } + //return; +} + +function PlayDaze(bool bEnabled) +{ + // End:0x61 + if(bEnabled) + { + // End:0x3F + if(m_DazeCameraEffect == none) + { + m_DazeCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Daze', self); + } + m_DazeCameraEffect.Activate(); + } + else + { + // End:0x8F + if(m_DazeCameraEffect != none) + { + m_DazeCameraEffect.Deactivate(); + } + } + //return; +} + +function PlayMark(bool bEnabled) +{ + // End:0x61 + if(bEnabled) + { + // End:0x3F + if(m_MarkCameraEffect == none) + { + m_MarkCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Mark', self); + } + m_MarkCameraEffect.Activate(); + } + else + { + // End:0x8F + if(m_MarkCameraEffect != none) + { + m_MarkCameraEffect.Deactivate(); + } + } + //return; +} + +function PlayPreTeleportFX() +{ + m_PreTeleportCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_PreTeleport', self); + m_PreTeleportCameraEffect.Deactivate(); + m_PreTeleportCameraEffect.Activate(); + //return; +} + +function PlayTeleportFx() +{ + m_TeleportCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Teleport', self); + m_TeleportCameraEffect.Deactivate(); + m_TeleportCameraEffect.Activate(); + //return; +} + +function PlayHidden(bool bEnabled, optional ParticleSystem Template) +{ + // End:0x8A + if(bEnabled) + { + // End:0x40 + if(m_HiddenCameraEffect == none) + { + m_HiddenCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Hidden', self); + } + m_HiddenCameraEffect.ChangeTemplate(Template); + m_HiddenCameraEffect.Activate(); + } + else + { + // End:0xB8 + if(m_HiddenCameraEffect != none) + { + m_HiddenCameraEffect.Deactivate(); + } + } + //return; +} + +function PlayGrass(bool bEnabled, optional ParticleSystem Template) +{ + // End:0x8A + if(bEnabled) + { + // End:0x40 + if(m_GrassCameraEffect == none) + { + m_GrassCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Hidden', self); + } + m_GrassCameraEffect.ChangeTemplate(Template); + m_GrassCameraEffect.Activate(); + } + else + { + // End:0xB8 + if(m_GrassCameraEffect != none) + { + m_GrassCameraEffect.Deactivate(); + } + } + //return; +} + +function PlayRevealed(bool bEnabled) +{ + // End:0x61 + if(bEnabled) + { + // End:0x3F + if(m_RevealedCameraEffect == none) + { + m_RevealedCameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect_Revealed', self); + } + m_RevealedCameraEffect.Activate(); + } + else + { + // End:0x8F + if(m_RevealedCameraEffect != none) + { + m_RevealedCameraEffect.Deactivate(); + } + } + //return; +} + +event TgEmitter_CameraEffect AddCameraEffect(ParticleSystem Template, optional array SoundList) +{ + local TgEmitter_CameraEffect CameraEffect; + local Vector2D ViewportSize; + local Vector Param; + + CameraEffect = Spawn(Class'TgGame.TgEmitter_CameraEffect', self); + CameraEffect.SetTemplate(Template); + CameraEffect.SetSoundList(SoundList); + m_CameraEffects.AddItem(CameraEffect); + LocalPlayer(PlayerOwner.Player).ViewportClient.GetViewportSize(ViewportSize); + Param.X = ViewportSize.X; + Param.Y = ViewportSize.Y; + CameraEffect.ParticleSystemComponent.SetVectorParameter('ScreenSize', Param); + CameraEffect.Activate(); + return CameraEffect; + //return ReturnValue; +} + +event RemoveCameraEffect(TgEmitter_CameraEffect CameraEffect) +{ + m_CameraEffects.RemoveItem(CameraEffect); + // End:0x97 + if(!CameraEffect.bDeleteMe && !CameraEffect.bPendingDelete) + { + CameraEffect.Deactivate(); + CameraEffect.Destroy(); + } + //return; +} + +function TgEmitter_CameraEffect FindCameraEffect(Class CameraEffectClass) +{ + local TgEmitter_CameraEffect CameraEffect; + + // End:0x75 + foreach m_CameraEffects(CameraEffect) + { + // End:0x74 + if(!CameraEffect.bDeleteMe && CameraEffect.Class == CameraEffectClass) + { + return CameraEffect; + } + } + return none; + //return ReturnValue; +} + +private final function PlayDamageCameraEffect(TgEmitter_CameraEffect_DamageBase.EDamageEffectScreenLocation ScreenLocation, float fDamageAmount, bool bCritical) +{ + local TgEmitter_CameraEffect DamageEffect; + + // End:0x124 + if(m_HealthDamageCameraEffectClasses[int(ScreenLocation)] != none) + { + DamageEffect = FindCameraEffect(m_HealthDamageCameraEffectClasses[int(ScreenLocation)]); + // End:0x98 + if(DamageEffect == none) + { + DamageEffect = Spawn(m_HealthDamageCameraEffectClasses[int(ScreenLocation)], self); + m_CameraEffects.AddItem(DamageEffect); + } + // End:0x124 + if(DamageEffect != none) + { + // End:0x105 + if(TgEmitter_CameraEffect_DamageBase(DamageEffect) != none) + { + TgEmitter_CameraEffect_DamageBase(DamageEffect).SetDamageIntensity(fDamageAmount * m_fHealthDamageFXPainFactor, bCritical); + } + DamageEffect.Activate(); + } + } + //return; +} + +private final function UpdateDecay(out PropertyDecayState PropState, const PropertyDecayParams PropParams, float fPropertyCurrent) +{ + local float fImpulsePrev, fAccumulatedPrev, fTimeNow, fdt, fAccumulated, fImpulse; + + fAccumulated = fPropertyCurrent; + fImpulse = fPropertyCurrent; + fImpulsePrev = PropState.PropertyMax; + fAccumulatedPrev = PropState.PropertyLevel; + fTimeNow = WorldInfo.TimeSeconds; + fdt = fTimeNow - PropState.LastDecayTimestamp; + PropState.LastDecayTimestamp = fTimeNow; + fAccumulated += (fAccumulatedPrev * Exp(fdt * PropParams.LambdaAccumulation)); + // End:0x190 + if(fImpulse < fImpulsePrev) + { + fImpulse = FMax(fImpulse, fImpulsePrev * Exp(fdt * PropParams.LambdaImpulse)); + } + PropState.PropertyMax = fImpulse; + PropState.PropertyLevel = fAccumulated; + //return; +} + +private final function float MixProperty(const PropertyDecayState PropState, const PropertyDecayParams PropParams) +{ + return Lerp(PropState.PropertyMax, PropState.PropertyLevel, PropParams.AccumulationImpulseMix); + //return ReturnValue; +} + +private final function bool CheckCrit(int ScreenLocation) +{ + local float fAccumulated, fImpulse; + + fImpulse = m_HealthDamageFXState[ScreenLocation].PropertyMax; + fAccumulated = m_HealthDamageFXState[ScreenLocation].PropertyLevel; + return Lerp(fImpulse, fAccumulated, m_fHealthDamageCritFXAccumulationMix) >= m_fHealthDamageCritFXThreshold; + //return ReturnValue; +} + +event TakeHit(Vector Direction, float fDamageAmount, Class DamageType, const out ExtraDamageInfo ExtraInfo, TgPawn.EHitAudioCue eCue) +{ + local float fYaw; + local Rotator Rot; + local int ScreenLocation, Prev, Next; + local TgPawn TgP; + local Vector LocalDirection; + local TgCameraShake Shake; + local Class TgDmgType; + local TgObject.RecoilHitDir RecoilDir; + local float fDamageIntensity; + local bool bCritical; + + Rot = CameraCache.POV.Rotation; + Rot.Pitch = 0; + Rot.Roll = 0; + LocalDirection = Direction << Rot; + fYaw = Atan2(LocalDirection.X, LocalDirection.Y); + fYaw += (3.1415930 / 4.0000000); + fYaw /= (3.1415930 / 2.0000000); + ScreenLocation = (2 * FFloor(fYaw)) % 8; + ScreenLocation = ((ScreenLocation < 0) ? 8 + ScreenLocation : ScreenLocation); + Prev = (ScreenLocation - 1) % 8; + Prev = ((Prev < 0) ? 8 + Prev : Prev); + Next = (ScreenLocation + 1) % 8; + Next = ((Next < 0) ? 8 + Next : Next); + UpdateDecay(m_HealthDamageFXState[ScreenLocation], m_HealthDamageFXParams, fDamageAmount); + fDamageIntensity = MixProperty(m_HealthDamageFXState[ScreenLocation], m_HealthDamageFXParams); + bCritical = CheckCrit(ScreenLocation); + PlayDamageCameraEffect(byte(Prev), fDamageIntensity, bCritical); + PlayDamageCameraEffect(byte(ScreenLocation), fDamageIntensity, bCritical); + PlayDamageCameraEffect(byte(Next), fDamageIntensity, bCritical); + TgDmgType = Class(DamageType); + // End:0x55A + if(TgDmgType != none) + { + Shake = new Class'TgGame.TgCameraShake'; + switch(ScreenLocation) + { + // End:0x381 + case 4: + Shake = TgDmgType.default.m_LeftCameraShake; + RecoilDir = 2; + // End:0x55A + break; + // End:0x3BC + case 0: + Shake = TgDmgType.default.m_RightCameraShake; + RecoilDir = 3; + // End:0x55A + break; + // End:0x3F8 + case 2: + Shake = TgDmgType.default.m_ForwardCameraShake; + RecoilDir = 0; + // End:0x55A + break; + // End:0x434 + case 6: + Shake = TgDmgType.default.m_BackwardCameraShake; + RecoilDir = 1; + // End:0x55A + break; + // End:0x470 + case 3: + Shake = TgDmgType.default.m_ForwardLeftCameraShake; + RecoilDir = 0; + // End:0x55A + break; + // End:0x4AB + case 1: + Shake = TgDmgType.default.m_ForwardRightCameraShake; + RecoilDir = 0; + // End:0x55A + break; + // End:0x4E7 + case 5: + Shake = TgDmgType.default.m_BackwardLeftCameraShake; + RecoilDir = 1; + // End:0x55A + break; + // End:0x523 + case 7: + Shake = TgDmgType.default.m_BackwardRightCameraShake; + RecoilDir = 1; + // End:0x55A + break; + // End:0xFFFF + default: + Shake = TgDmgType.default.m_ForwardCameraShake; + RecoilDir = 0; + break; + } + } + TgP = PlayerOwner.GetTgPawn(); + // End:0x6DB + if(TgP != none) + { + TgP.PlayTakeHit(Direction, int(fDamageAmount), DamageType, ExtraInfo, eCue); + // End:0x671 + if(Shake != none) + { + Shake.m_fShakeScale = FClamp(fDamageAmount / 400.0000000, 0.2500000, 1.0000000); + PlayerOwner.PlayTgCameraShake(Shake, TgP.Location, self); + } + // End:0x6DB + if(TgP.m_WeaponMesh != none) + { + TgP.m_WeaponMesh.PlayHitReaction(RecoilDir, fDamageAmount); + } + } + //return; +} + +defaultproperties +{ + DefaultCameraModuleClass=Class'TgGame.TgCameraModule_ThirdPerson' + m_fCollisionTraceExtent=24.0000000 + m_HealthDamageCameraEffectClasses[0]=Class'TgGame.TgEmitter_CameraEffect_DamageRight' + m_HealthDamageCameraEffectClasses[1]=Class'TgGame.TgEmitter_CameraEffect_DamageTopRight' + m_HealthDamageCameraEffectClasses[2]=Class'TgGame.TgEmitter_CameraEffect_DamageTop' + m_HealthDamageCameraEffectClasses[3]=Class'TgGame.TgEmitter_CameraEffect_DamageTopLeft' + m_HealthDamageCameraEffectClasses[4]=Class'TgGame.TgEmitter_CameraEffect_DamageLeft' + m_HealthDamageCameraEffectClasses[5]=Class'TgGame.TgEmitter_CameraEffect_DamageBottomLeft' + m_HealthDamageCameraEffectClasses[6]=Class'TgGame.TgEmitter_CameraEffect_DamageBottom' + m_HealthDamageCameraEffectClasses[7]=Class'TgGame.TgEmitter_CameraEffect_DamageBottomRight' + m_fHealFXUpdatePeriod=0.1000000 + m_fHealingFXHalflifeAccumulation=0.3500000 + m_fHealingFXHalflifeImpulse=0.6500000 + m_fHealingFXReliefFactor=0.0100000 + m_fHealingFXAccumulationMix=0.1250000 + m_fHealingFXVisibleThreshold=0.2500000 + m_fHealingCritFXThreshold=2.0000000 + m_fHealthDamageFXHalflifeAccumulation=0.6000000 + m_fHealthDamageFXHalflifeImpulse=1.5000000 + m_fHealthDamageFXPainFactor=0.0012500 + m_fHealthDamageFXAccumulationMix=0.4000000 + m_fHealthDamageCritFXThreshold=1000.0000000 + m_fHealthDamageCritFXAccumulationMix=0.2000000 + ConstrainedAspectRatio=1.7777800 + DefaultAspectRatio=1.7777800 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPlayerController.uc b/exported/TgGame/Classes/TgPlayerController.uc new file mode 100755 index 00000000..4e487861 --- /dev/null +++ b/exported/TgGame/Classes/TgPlayerController.uc @@ -0,0 +1,8561 @@ +class TgPlayerController extends PComPlayerController + native(Pawns) + nativereplication + config(Game) + hidecategories(Navigation) + implements(TgPaladinsController,TgCallbackInterface); + +const MAX_FLASH_SIM_PROJECTILES = 32; +const PING_LENGTH = 4; +const VGS_SPAM_LENGTH = 0.5; +const MAX_LAST_PURCHASED = 26; +const CUE_ATTACKFROMBEHIND_PERIOD = 30.0; +const CUE_ATTACKFROMSNIPER_PERIOD = 30.0; +const CUE_ATTACKFROMABOVE_PERIOD = 30.0; +const CUE_ATTACKANY_PERIOD = 5.0; +const CUE_ATTACKFROMSNIPER_RANGESQR = 1000000; +const RIGHT_CLICK_CANCELING_ENABLED = false; +const ABILITY_ANDROXUS_DEFIANCE = 13324; +const ABILITY_ANDROXUS_REVERSAL = 13251; +const ABILITY_BOMBKING_STICKY = 14308; +const ABILITY_BOMBKING_GRUMPY = 13412; +const ABILITY_BUCK_NETSHOT = 12981; +const ABILITY_DROGOZ_SALVO = 14140; +const ABILITY_DROGOX_FIRESPIT = 13327; +const ABILITY_GROHK_CHAINLIGHTNING = 11510; +const ABILITY_GROVER_AXETHROW = 11490; +const ABILITY_RUCKUS_DUALFIRE = 11460; +const ABILITY_SKYE_POISONBOLTS = 11491; +const ABILITY_VIKTOR_FRAGGRENADE = 14149; +const ABILITY_YING_SHATTER = 13284; +const ABILITY_YING_ILLUSION_AUTO = 13332; +const ABILITY_MAKOA_ANCHOR = 14181; +const DEVICE_DEATH_FOG = 13033; +const PIT_MAX_SIZE = 20; +const GAMEEVENT_PALADINS_PLAYER_KILL = 1001; +const GAMEEVENT_PALADINS_PLAYER_DEATH = 1002; +const GAMEEVENT_PALADINS_PLAYER_KILL_SUICIDE = 2001; +const GAMEEVENT_PALADINS_PLAYER_KILL_NORMAL = 2002; +const GAMEEVENT_PALADINS_PLAYER_KILL_ASSIST = 2003; +const GAMEEVENT_MATCH_STARTED = 0; +const GAMEEVENT_MATCH_ENDED = 1; +const GAMEEVENT_ROUND_STARTED = 2; +const GAMEEVENT_ROUND_ENDED = 3; +const GAMEEVENT_GAME_CLASS = 6; +const GAMEEVENT_GAME_OPTION_URL = 7; +const GAMEEVENT_GAME_MAPNAME = 8; +const GAMEEVENT_MEMORYUSAGE_POLL = 35; +const GAMEEVENT_FRAMERATE_POLL = 36; +const GAMEEVENT_NETWORKUSAGEIN_POLL = 37; +const GAMEEVENT_NETWORKUSAGEOUT_POLL = 38; +const GAMEEVENT_PING_POLL = 39; +const GAMEEVENT_RENDERTHREAD_POLL = 40; +const GAMEEVENT_GAMETHREAD_POLL = 41; +const GAMEEVENT_GPUFRAMETIME_POLL = 42; +const GAMEEVENT_FRAMETIME_POLL = 43; +const GAMEEVENT_TEAM_CREATED = 50; +const GAMEEVENT_TEAM_GAME_SCORE = 51; +const GAMEEVENT_TEAM_MATCH_WON = 4; +const GAMEEVENT_TEAM_ROUND_WON = 5; +const GAMEEVENT_TEAM_ROUND_STALEMATE = 52; +const GAMEEVENT_PLAYER_LOGIN = 100; +const GAMEEVENT_PLAYER_LOGOUT = 101; +const GAMEEVENT_PLAYER_SPAWN = 102; +const GAMEEVENT_PLAYER_MATCH_WON = 103; +const GAMEEVENT_PLAYER_KILL = 104; +const GAMEEVENT_PLAYER_LOCATION_POLL = 105; +const GAMEEVENT_PLAYER_TEAMCHANGE = 106; +const GAMEEVENT_PLAYER_KILL_STREAK = 107; +const GAMEEVENT_PLAYER_DEATH = 108; +const GAMEEVENT_PLAYER_ROUND_WON = 109; +const GAMEEVENT_PLAYER_ROUND_STALEMATE = 110; +const GAMEEVENT_WEAPON_DAMAGE = 150; +const GAMEEVENT_WEAPON_DAMAGE_MELEE = 151; +const GAMEEVENT_WEAPON_FIRED = 152; +const GAMEEVENT_PLAYER_KILL_NORMAL = 200; +const GAMEEVENT_GENERIC_PARAM_LIST_START = 300; +const GAMEEVENT_GENERIC_PARAM_LIST_END = 400; +const GAMEEVENT_GAME_SPECIFIC = 1000; +const GAMEEVENT_MAX_EVENTID = 0x0000FFFF; + +enum EGiveGoldResult +{ + GGR_PlayerNotFound, // 0 + GGR_PlayerNotFriendly, // 1 + GGR_NotEnoughGold, // 2 + GGR_Success, // 3 + GGR_MAX // 4 +}; + +enum EAnnouncerSeries +{ + ANS_TimeRemaining, // 0 + ANS_TotalTimeRemaining, // 1 + ANS_Countdown, // 2 + ANS_Overtime, // 3 + ANS_MAX // 4 +}; + +enum EPlayerInputType +{ + PIT_MoveForward, // 0 + PIT_MoveBackward, // 1 + PIT_MoveRight, // 2 + PIT_MoveLeft, // 3 + PIT_LookLeft, // 4 + PIT_LookRight, // 5 + PIT_LookUp, // 6 + PIT_LookDown, // 7 + PIT_Auto, // 8 + PIT_Alt, // 9 + PIT_BattleAbility, // 10 + PIT_MovementAbility, // 11 + PIT_Ultimate, // 12 + PIT_Reload, // 13 + PIT_Jump, // 14 + PIT_Mount, // 15 + PIT_LoadoutMenu, // 16 + PIT_BurnCardMenu, // 17 + PIT_Emote, // 18 + PIT_Spray, // 19 + PIT_MAX // 20 +}; + +enum TG_CAMERAPOSTURE +{ + TG_CAMERAPOSTURE_None, // 0 + TG_CAMERAPOSTURE_Emote3P, // 1 + TG_CAMERAPOSTURE_Ability3P, // 2 + TG_CAMERAPOSTURE_Force3P, // 3 + TG_CAMERAPOSTURE_Force1P, // 4 + TG_CAMERAPOSTURE_MAX // 5 +}; + +enum EWatchOtherPlayersMode +{ + WOPM_NONE, // 0 + WOPM_PLAYER, // 1 + WOPM_MAX // 2 +}; + +enum EHUDOverlay +{ + HO_None, // 0 + HO_Sniper, // 1 + HO_Binoculars, // 2 + HO_OwlScope, // 3 + HO_MAX // 4 +}; + +struct native TG_LAST_PURCHASE +{ + var int nItemId; + var int nCount; + + structdefaultproperties + { + nItemId=0 + nCount=0 + } +}; + +struct native FLOOD +{ + var int m_nCount; + var float m_fLastUpdate; + + structdefaultproperties + { + m_nCount=0 + m_fLastUpdate=0.0000000 + } +}; + +struct native CameraStackInfo +{ + var TgPlayerController.TG_CAMERAPOSTURE ePosture; + var int nStackId; + + structdefaultproperties + { + ePosture=TG_CAMERAPOSTURE.TG_CAMERAPOSTURE_None + nStackId=0 + } +}; + +struct native InventoryChangeFlags +{ + var bool bDevice; + var bool bComponent; + var bool bEquipped; + var bool bDeviceFailed; + + structdefaultproperties + { + bDevice=false + bComponent=false + bEquipped=false + bDeviceFailed=false + } +}; + +struct native sSimProjectileFireInfo +{ + var int nOwnerFireModeId; + var Vector vLocation; + var Vector vVelocity; + var Vector vDirectionMunged; + var int nActorID; + var int nClientFireRequestId; + var PComStructures.CMTargetType ActorType; + var float fGeneric1; + var float fGeneric2; + + structdefaultproperties + { + nOwnerFireModeId=0 + vLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + vVelocity=(X=0.0000000,Y=0.0000000,Z=0.0000000) + vDirectionMunged=(X=0.0000000,Y=0.0000000,Z=0.0000000) + nActorID=0 + nClientFireRequestId=0 + ActorType=CMTargetType.CMTT_Pawn + fGeneric1=0.0000000 + fGeneric2=0.0000000 + } +}; + +struct native BinocularSettings +{ + var int nTargets; + var Rotator rHeading; + var float fRange; + var float fTimer1; + var float fTimer2; + var float fTimer3; + var float fTimerDuration; + var float fRefireTimerPercent; + var float fDurationPercent; + + structdefaultproperties + { + nTargets=0 + rHeading=(Pitch=0,Yaw=0,Roll=0) + fRange=0.0000000 + fTimer1=0.0000000 + fTimer2=0.0000000 + fTimer3=0.0000000 + fTimerDuration=0.0000000 + fRefireTimerPercent=0.0000000 + fDurationPercent=0.0000000 + } +}; + +var private native const noexport Pointer VfTable_ITgPaladinsController; +var private native const noexport Pointer VfTable_ITgCallbackInterface; +var int m_nAnnouncerSeriesStep[EAnnouncerSeries]; +var int s_nPlayerId; +var QWord s_qwNetAccessFlags; +var repnotify int r_nXp; +var repnotify int r_nCurrency; +var float s_fCurrencyRemainder; +var float s_fXpRemainder; +var repnotify bool r_bCanPurchaseItems; +var repnotify bool r_bCanChangeLoadout; +var repnotify bool r_bAutoPurchase; +var repnotify bool r_bAutoSkillUp; +var repnotify bool r_bToggleZoom; +var bool m_bBlockVGS; +var bool s_bSentAutoKickAlert; +var transient bool s_bAddDeadTimeStatsTracker; +var bool r_bLockYawRotation; +var bool bPressingLeftMouseButton; +var bool bPressingRightMouseButton; +var bool bPressingMovementButton; +var bool m_bPendingReload; +var bool r_bRove; +var bool m_bNoSmoothedMovementCorrection; +var bool c_bProcessedNoSmoothNotification; +var bool s_bNoSmoothedMovementCorrectionRequested; +var bool s_bIsNoSmoothMovementCorrectionManaged; +var bool s_bClearAchievementIgnoreListsOnNextTick; +var bool bDebugProjectileLagCompensation; +var bool c_bAssistModeSublevelLoaded; +var globalconfig bool c_bAllowSpecialMaterialEffects; +var transient bool m_bIgnoreSilhouettes; +var transient bool m_bForceSilhouettesOnVisibleGods; +var transient bool m_bDetailedViewEnabled; +var config bool m_bContextNotifiesEnabled; +var bool m_bShowPlayerCircles; +var bool m_bAllowUndrawnPurchase; +var const bool m_bCanHearStealthPawns; +var bool c_bShowFootstepInfoDebug; +var bool m_bDetailedDeviceLogging; +var bool m_bBehindView; +var() bool m_bOutlineEnemies; +var() bool m_bOutlineFriendlies; +var config bool c_bEnablePathfinderGuide; +var bool m_fPathfinderEnabled; +var bool c_bIsPlayingFallWindSound; +var bool m_bJustDidJumpDoubleTap; +var bool m_bThreatSystemEnabled; +var bool m_bOcclusionSystemEnabled; +var bool m_bDebugThreatSystem; +var bool c_bMatchAlmostWonSwitchPrimed; +var bool m_IsTimeDilationInterpolating; +var bool m_IsDesaturationInterpolating; +var transient bool m_bIsTrackingAimTowardTargetLocation; +var bool bForcedTimelapseRequested; +var bool bForcedPlayOfGameRequested; +var bool m_bRewindMoversForReplaySavedMoves; +var bool m_bShowDebugRewindMovers; +var bool c_bCaptureProgressAkEventPlaying; +var bool m_bShowChampionOverviewTip; +var config bool m_bEnableUltimateAkEventUnocclusion; +var bool c_bIsPlayOfTheGame; +var float c_fLastGoldNagTime; +var int m_nReviveBuybackCost; +var repnotify int r_nStatPoints; +var FLOOD s_VGSFlood; +var FLOOD s_PingFlood; +var Actor c_aLastViewTarget; +var TgPlayerInput m_CachedPlayerInput; +var TgSpectatorInput m_CachedSpectatorInput; +var Actor m_aHoverActor; +var Vector m_vHoverLocation; +var float m_fHoverActorActiveTime; +var Vector m_vWorldMapLocation; +var init transient array m_WorldMapTargetRepInfos; +var transient Vector m_vWorldMouseLocation; +var transient Vector m_vWorldMouseDirection; +var float c_fTimeTillAFK; +var float s_bAutoKickStartTime; +var TG_LAST_PURCHASE r_LastPurchasedItems[26]; +var Pawn s_LastPossessedPawn; +var float m_fRecentLostHealth; +var float m_fLastLostHealthTime; +var array m_TargetedPlayers; +var float s_fWaitForSpawnSecs; +var float c_fRespawnTime; +var float m_fDeathTime; +var int r_bInputEnabled[20]; +var() editinline TgControlModule ControlModule; +var Class DefaultControlModuleClass; +var int c_nCameraYawOffset; +var int m_nDevicesLockingInput; +var int m_nDevicesLockingCamera; +var int m_nDevicesLockingRotation; +var float m_fPendingReloadTime; +var float m_fPendingReloadMaxTime; +var transient Actor m_EndGameFocus; +var float m_fLastVGS; +var Vector m_vLastServerCorrectOrigPos; +var float s_fLastConfirmedSentSmoothedMovementTimestamp; +var float c_fLastRecievedNoSmoothTimestamp; +var byte m_byDesiredMoveSpeedReduction; +var TgPlayerController.TG_CAMERAPOSTURE c_eCameraPosture; +var TgPlayerController.EWatchOtherPlayersMode r_WatchOtherPlayer; +var TgObject.GAME_WIN_STATE c_GameWinState; +var byte m_bOldbRun; +var TgPlayerController.EHUDOverlay c_eCurrentOverlay; +var TgObject.TG_EQUIP_POINT m_eDetailedDeviceEqp; +var TgObject.TG_EQUIP_POINT m_LastEquipPoint; +var transient byte c_LastSentClientRoll; +var input byte m_UltHeld; +var input byte m_JumpHeld; +var input byte m_JumpHeldAlt; +var input byte m_PerCharacterAlt; +var array c_CameraStack; +var int c_nNextCameraStackId; +var const float m_fTimeToViewOthersCamAfterDeath; +var() const float m_fWatchOthersFadeToBlackCamTime; +var() const float m_fWatchOthersFadeFromBlackCamTime; +var array s_Achievements; +var TgAkAudioManagement c_TgAkAudio; +var int r_nFlashProjectile[32]; +var sSimProjectileFireInfo r_FlashProjectileEx[32]; +var repnotify int r_nFirstValidProjIdx; +var repnotify int r_nFlashSimProjIdx; +var int c_nLastFlashSimProjIdx; +var int r_nPerkPointsAvail; +var transient TgGameTipManager c_GameTipManager; +var native Pointer s_pCombatMessages; +var float s_fLastCombatMessageProcess; +var int c_nCurrentLevel; +var TgTutorialAnnouncer c_TutorialAnnouncer; +var repnotify int r_TutorialBlockedClientActions; +var TgSubtitledMessages c_SubtitledMessages; +var transient TgRepInfo_Player CachedPRI; +var MaterialInstanceConstant m_OverlayPathMaterial; +var int m_nContextNotifyGroundTargeterId; +var array m_HiddenPawns; +var export editinline AudioComponent c_AlertAudioComponent; +var AkEvent c_AlertAkEvent; +var array c_KismetLoadedDevices; +var TgContextNotifyActor m_ObjectiveNotify; +var() editinline TgCameraShake m_PreviewCameraShake; +var array m_CapturePoints; +var() float m_fPathfinderStreamTime; +var() float m_fPathfinderPulseTime; +var() float m_fPathfinderLifetime; +var() float m_fPathfinderSpeed; +var() float m_fPathfinderStartDist; +var transient float c_LastSentMoveTimeStamp; +var transient Vector c_LastSentMoveAcceleration; +var transient int c_LastSentMoveCompressedFlags; +var transient Vector c_LastSentClientLoc; +var transient int c_LastSentView; +var AkEvent c_FallWindSoundPlay; +var AkEvent c_FallWindSoundStop; +var transient int m_nKillCamTargetId; +var transient int m_nKillCamTargetBackupId; +var float r_fServerTimeStamp; +var float m_fLastJumpTapTime; +var float m_fMaxJumpDoubleTapTime; +var int m_nVoicePackId; +var array m_PawnsWithThreatLevels; +var TgPathfinder m_Pathfinder; +var config float m_fThreatCoefficientProximity; +var config float m_fThreatCoefficientOcclusion; +var config float m_fThreatCoefficientBinnedOcclusion; +var config float m_fThreatCoefficientUlt; +var config float m_fThreatCoefficientShotAt; +var config float m_fThreatCoefficientSeenBy; +var config float m_fThreatCoefficientDamaged; +var config float m_fThreatCoefficientFocused; +var config float m_fThreatCoefficientFocusTarget; +var config float m_fThreatCoefficientBehind; +var config float m_fThreatCoefficientInEffectiveRange; +var config float m_fThreatDecayCoefficientShotAt; +var config float m_fThreatDecayCoefficientSeenBy; +var config float m_fThreatDecayCoefficientUlt; +var string m_DebugThreatSystemChannel; +var string m_CurrentMusicEventName; +var name m_nameBuyBurnCardsTimer; +var Vector2D m_TimeDilationFromTo; +var float m_TimeDilationInterpolateSeconds; +var float m_TimeDilationUsedSeconds; +var Vector2D m_DesaturationFromTo; +var float m_DesaturationInterpolateSeconds; +var float m_DesaturationUsedSeconds; +var int m_EnergyLastFrame; +var transient Vector m_TrackingTargetLocation; +var transient float m_fTrackingTargetMaxAimDistDiff; +var AkBaseSoundObject m_RoundEndAlert; +var SeqAct_Interp m_CurrentDirectorMatinee; +var AkEvent m_CaptureProgressPlayAkEvent; +var AkEvent m_CaptureProgressStopAkEvent; +var float m_fCachedCaptureProgress; +var AkEvent m_PointGettingCapturedPlayAkEvent; +var int m_nPointGettingCapturedPlayCount; +var float m_fShowChampionOverviewTipDelay; +var float c_fLastAttackAudioCueTimestamp; +var float c_fLastAttackFromBehindAudioCueTimestamp; +var float c_fLastAttackFromAboveAudioCueTimestamp; +var float c_fLastAttackFromSniperAudioCueTimestamp; +var int s_nRoundsIdle; +var float s_fIdleTimeReduction; +var int c_nLeadingTeam; +var int c_nLeadingTeamTicketAmount; +var TgCallbackContainer m_CallbackContainer; + +replication +{ + // Pos:0x000 + if(((int(Role) == int(ROLE_Authority)) && !bDemoRecording) && (bNetInitial || bNetTimelapseInit) || bNetTimelapsePost) + r_nFirstValidProjIdx; + + // Pos:0x04F + if((int(Role) == int(ROLE_Authority)) && bDemoRecording || !(bNetInitial || bNetTimelapseInit) || bNetTimelapsePost) + r_FlashProjectileEx, r_nFlashProjectile, + r_nFlashSimProjIdx; + + // Pos:0x09E + if((int(Role) == int(ROLE_Authority)) && bNetOwner) + r_LastPurchasedItems, r_TutorialBlockedClientActions, + r_WatchOtherPlayer, r_bAutoPurchase, + r_bAutoSkillUp, r_bCanChangeLoadout, + r_bCanPurchaseItems, r_bInputEnabled, + r_bLockYawRotation, r_bRove, + r_bToggleZoom, r_fServerTimeStamp, + r_nCurrency, r_nPerkPointsAvail, + r_nStatPoints, r_nXp; +} + +// Export UTgPlayerController::execSetViewTarget(FFrame&, void* const) +native function SetViewTarget(Actor NewViewTarget, optional ViewTargetTransitionParams TransitionParams); + +// Export UTgPlayerController::execCanDoFullSellback(FFrame&, void* const) +native function CanDoFullSellback(); + +// Export UTgPlayerController::execIsReadyForStart(FFrame&, void* const) +native function bool IsReadyForStart(); + +// Export UTgPlayerController::execQueueReviveTimeChanged(FFrame&, void* const) +native function QueueReviveTimeChanged(); + +// Export UTgPlayerController::execCueAttackedFromBehind(FFrame&, void* const) +native function CueAttackedFromBehind(); + +// Export UTgPlayerController::execCueAttackedFromAbove(FFrame&, void* const) +native function CueAttackedFromAbove(); + +// Export UTgPlayerController::execCueAttackedFromSniper(FFrame&, void* const) +native function CueAttackedFromSniper(); + +// Export UTgPlayerController::execAnnouncerGetStep(FFrame&, void* const) +native function int AnnouncerGetStep(TgPlayerController.EAnnouncerSeries series); + +// Export UTgPlayerController::execAnnouncerReset(FFrame&, void* const) +native function AnnouncerReset(); + +// Export UTgPlayerController::execAnnouncerPlaySeries(FFrame&, void* const) +native function bool AnnouncerPlaySeries(TgPlayerController.EAnnouncerSeries series, optional int Step = 0); + +// Export UTgPlayerController::execPlayPointAlienFX(FFrame&, void* const) +native function PlayPointAlienFX(bool bPointWonLocal); + +// Export UTgPlayerController::execNativeAnnounceEOM(FFrame&, void* const) +native function NativeAnnounceEOM(bool bVictory); + +// Export UTgPlayerController::execLogPerfLeakData(FFrame&, void* const) +native exec function LogPerfLeakData(); + +// Export UTgPlayerController::execTestVGSPOTG(FFrame&, void* const) +native exec function TestVGSPOTG(int nPackId, int nBotId, int nSkinId); + +// Export UTgPlayerController::execGetHudClass(FFrame&, void* const) +native function Class GetHudClass(Class pNewHudType); + +// Export UTgPlayerController::execCanCameraSeePawnCenter(FFrame&, void* const) +native function bool CanCameraSeePawnCenter(TgPawn Other); + +// Export UTgPlayerController::execCanCameraSeeActorCenter(FFrame&, void* const) +native function bool CanCameraSeeActorCenter(Actor Other, optional float ZOffset); + +// Export UTgPlayerController::execServerSetTaskforceLead(FFrame&, void* const) +reliable server native function ServerSetTaskforceLead(string fsName); + +// Export UTgPlayerController::execFriend(FFrame&, void* const) +native exec function Friend(string sCmd, string sName); + +// Export UTgPlayerController::execConfirmMatchLeave(FFrame&, void* const) +native function ConfirmMatchLeave(bool bLeave); + +// Export UTgPlayerController::execMatchLeave(FFrame&, void* const) +native exec function MatchLeave(bool bAsTeam); + +// Export UTgPlayerController::execMatchAccept(FFrame&, void* const) +native event MatchAccept(bool bAccepted); + +// Export UTgPlayerController::execGetClientSettings(FFrame&, void* const) +native static function TgClientSettings GetClientSettings(); + +// Export UTgPlayerController::execBug(FFrame&, void* const) +native exec function Bug(); + +// Export UTgPlayerController::exec_Crash(FFrame&, void* const) +native exec function _Crash(); + +// Export UTgPlayerController::execLogTo(FFrame&, void* const) +native exec function LogTo(string fsHost, optional int nPort = 4040); + +// Export UTgPlayerController::execStopLogTo(FFrame&, void* const) +native exec function StopLogTo(); + +// Export UTgPlayerController::execToggleInHandTargeting(FFrame&, void* const) +native exec function ToggleInHandTargeting(bool bHide); + +// Export UTgPlayerController::execDisableProfanityFilter(FFrame&, void* const) +native exec function DisableProfanityFilter(bool bDisable); + +// Export UTgPlayerController::execSpectateDamage(FFrame&, void* const) +native exec function SpectateDamage(bool bShow); + +// Export UTgPlayerController::execSpectateHeals(FFrame&, void* const) +native exec function SpectateHeals(bool bShow); + +// Export UTgPlayerController::execSpectateCrits(FFrame&, void* const) +native exec function SpectateCrits(bool bShow); + +// Export UTgPlayerController::execSpectateGold(FFrame&, void* const) +native exec function SpectateGold(bool bShow); + +// Export UTgPlayerController::execSpectateXP(FFrame&, void* const) +native exec function SpectateXP(bool bShow); + +// Export UTgPlayerController::execSpectateOutlines(FFrame&, void* const) +native exec function SpectateOutlines(bool bShow); + +// Export UTgPlayerController::execToggleCombatInfo(FFrame&, void* const) +native exec function ToggleCombatInfo(); + +// Export UTgPlayerController::execFinalSave(FFrame&, void* const) +native function FinalSave(); + +// Export UTgPlayerController::execForceRelevant(FFrame&, void* const) +native function ForceRelevant(Actor pActor, optional float fDuration = -1.0000000); + +// Export UTgPlayerController::execbIsEditor(FFrame&, void* const) +native function bool bIsEditor(); + +// Export UTgPlayerController::execGetValue(FFrame&, void* const) +native function GetValue(string fsObject, string fsValue); + +// Export UTgPlayerController::execSetValue(FFrame&, void* const) +native function SetValue(string fsObject, string fsVariable, string fsValue); + +// Export UTgPlayerController::execGetDeviceIdByName(FFrame&, void* const) +native function int GetDeviceIdByName(string sDeviceName); + +// Export UTgPlayerController::execClientLoadDevices(FFrame&, void* const) +native function ClientLoadDevices(TgSeqAct_ClientLoadDevices Action); + +// Export UTgPlayerController::execDumpClassInfoToFile(FFrame&, void* const) +native function DumpClassInfoToFile(string sClassName); + +// Export UTgPlayerController::execSendGameOverEvent(FFrame&, void* const) +native function SendGameOverEvent(TgObject.GAME_WIN_STATE gameWinState, bool bPlayerIsAttacker); + +// Export UTgPlayerController::execGetPlayerControlPawn(FFrame&, void* const) +native function TgPawn GetPlayerControlPawn(); + +// Export UTgPlayerController::execConvertTimeDisplay(FFrame&, void* const) +native function ConvertTimeDisplay(int nMinutes, out string sDisplay); + +// Export UTgPlayerController::execCheckMaxEffectDistance(FFrame&, void* const) +native simulated function bool CheckMaxEffectDistance(PlayerController P, Vector SpawnLocation, optional float CullDistance); + +// Export UTgPlayerController::execBlockVGS(FFrame&, void* const) +native simulated function BlockVGS(bool bBlock); + +// Export UTgPlayerController::execOutputRelevantActors(FFrame&, void* const) +native exec function OutputRelevantActors(); + +// Export UTgPlayerController::execDoClientSidePerfTracking(FFrame&, void* const) +native function DoClientSidePerfTracking(int nLength); + +// Export UTgPlayerController::execToggleTick(FFrame&, void* const) +native exec function ToggleTick(string ClassName, bool bDisable); + +// Export UTgPlayerController::execSetPawnTickState(FFrame&, void* const) +native exec function SetPawnTickState(int nState); + +// Export UTgPlayerController::execTgPerfTrack(FFrame&, void* const) +native exec function TgPerfTrack(bool bStart); + +// Export UTgPlayerController::execDumpPerfTrackData(FFrame&, void* const) +native function DumpPerfTrackData(); + +// Export UTgPlayerController::execSetSoundMode(FFrame&, void* const) +native simulated function SetSoundMode(name NewSoundMode); + +// Export UTgPlayerController::execDebugGetLangMsg(FFrame&, void* const) +native exec function DebugGetLangMsg(int nMsgId); + +// Export UTgPlayerController::execHandleSimulatedProjectile(FFrame&, void* const) +native simulated function HandleSimulatedProjectile(); + +// Export UTgPlayerController::execSendUIXpChange(FFrame&, void* const) +native simulated function SendUIXpChange(); + +// Export UTgPlayerController::execSendUICurrencyChange(FFrame&, void* const) +native simulated function SendUICurrencyChange(); + +// Export UTgPlayerController::execGetDamageAngle(FFrame&, void* const) +native function GetDamageAngle(Rotator HitDir, out float PitchDegrees, out float YawDegrees); + +// Export UTgPlayerController::execAutoPurchase(FFrame&, void* const) +native function AutoPurchase(); + +// Export UTgPlayerController::execAutoSkillUp(FFrame&, void* const) +native function AutoSkillUp(); + +// Export UTgPlayerController::execToggleZoom(FFrame&, void* const) +native function ToggleZoom(); + +// Export UTgPlayerController::execSetAutoPurchaseFlag(FFrame&, void* const) +native function SetAutoPurchaseFlag(bool bOn, optional bool bForce = false); + +// Export UTgPlayerController::execSetAutoSkillUpFlag(FFrame&, void* const) +native function SetAutoSkillUpFlag(bool bOn, optional bool bForce = false); + +// Export UTgPlayerController::execSetToggleZoomFlag(FFrame&, void* const) +native function SetToggleZoomFlag(bool bOn, optional bool bForce = false); + +exec function TgPlayerController.EGiveGoldResult GiveGoldToFriendlyPlayer(int PlayerID, int GoldCount) +{ + return ServerTransferGoldBetweenFriendlyPlayers(PlayerID, GoldCount); + //return ReturnValue; +} + +// Export UTgPlayerController::execServerTransferGoldBetweenFriendlyPlayers(FFrame&, void* const) +reliable server native function TgPlayerController.EGiveGoldResult ServerTransferGoldBetweenFriendlyPlayers(int ReceivingPlayerID, int GoldCount); + +// Export UTgPlayerController::execGetPerkPointsAvailable(FFrame&, void* const) +native function int GetPerkPointsAvailable(); + +// Export UTgPlayerController::execGetPerkPointsSpent(FFrame&, void* const) +native function int GetPerkPointsSpent(); + +// Export UTgPlayerController::execCanAllocateDevicePoint(FFrame&, void* const) +native function bool CanAllocateDevicePoint(int nDeviceId, TgDevice aDevice, optional bool ignorePause = false); + +// Export UTgPlayerController::execGetDevicePointsAvailable(FFrame&, void* const) +native function int GetDevicePointsAvailable(); + +// Export UTgPlayerController::execGetDevicePointsSpent(FFrame&, void* const) +native function int GetDevicePointsSpent(); + +// Export UTgPlayerController::execHaveBasicAbilitiesBeenActivated(FFrame&, void* const) +native function bool HaveBasicAbilitiesBeenActivated(); + +// Export UTgPlayerController::execServerAllocateDevicePoint(FFrame&, void* const) +reliable server native function ServerAllocateDevicePoint(int nDeviceId); + +// Export UTgPlayerController::execClientUpdateUIDeviceState(FFrame&, void* const) +native function bool ClientUpdateUIDeviceState(); + +// Export UTgPlayerController::execClientUpdateTutorialBlockingActions(FFrame&, void* const) +native function ClientUpdateTutorialBlockingActions(); + +// Export UTgPlayerController::execGetTaskForceNumber(FFrame&, void* const) +native function int GetTaskForceNumber(); + +// Export UTgPlayerController::execIsFiringUlt(FFrame&, void* const) +native function bool IsFiringUlt(); + +// Export UTgPlayerController::execServerPurchaseItem(FFrame&, void* const) +reliable server native function ServerPurchaseItem(int nLootTableId, int nLootTableItemId, int nItemCount); + +// Export UTgPlayerController::execServerUpgradeItem(FFrame&, void* const) +reliable server native function ServerUpgradeItem(int nLootTableId, int nLootTableItemId, int nUpgradeInvId); + +// Export UTgPlayerController::execServerSellItem(FFrame&, void* const) +reliable server native function ServerSellItem(int nInventoryId); + +// Export UTgPlayerController::execServerPlayVGS(FFrame&, void* const) +reliable server native function ServerPlayVGS(int nVgsId, optional int usedVPSetting = 0); + +// Export UTgPlayerController::execServerPlayPing(FFrame&, void* const) +reliable server native function ServerPlayPing(float X, float Y, float Z, TgObject.PING_TYPE pingType); + +// Export UTgPlayerController::execFadeHud(FFrame&, void* const) +reliable client native simulated function FadeHud(); + +// Export UTgPlayerController::execClientLogoff(FFrame&, void* const) +reliable client native simulated function ClientLogoff(bool bForced); + +// Export UTgPlayerController::execLogTutorialAction(FFrame&, void* const) +native function LogTutorialAction(int nPlayerAction, int nEventData); + +// Export UTgPlayerController::execTriggerTutorialEvent(FFrame&, void* const) +native function TriggerTutorialEvent(int nTutEvent, int nInfoData); + +// Export UTgPlayerController::execHandleForcedClientTutorialAction(FFrame&, void* const) +native function HandleForcedClientTutorialAction(int nAction, int nActionElement); + +// Export UTgPlayerController::execHandleTutorialHighlighter(FFrame&, void* const) +native function HandleTutorialHighlighter(bool bShow, int highlightedElement); + +// Export UTgPlayerController::execHandleTutorialActionOnServer(FFrame&, void* const) +native function bool HandleTutorialActionOnServer(TgSeqAct_ForceClientTutorialAction inAction); + +// Export UTgPlayerController::execIsTutorialBlockingAction(FFrame&, void* const) +native function bool IsTutorialBlockingAction(TgObject.eTutorialForceableElements Action); + +// Export UTgPlayerController::execOnSceneLoadChange(FFrame&, void* const) +native function OnSceneLoadChange(string SceneName, bool bLoaded); + +// Export UTgPlayerController::execUpdateTargetingList(FFrame&, void* const) +native function UpdateTargetingList(array ImpactList, optional bool bLightUp = true); + +// Export UTgPlayerController::execClearTargetingList(FFrame&, void* const) +native function ClearTargetingList(); + +// Export UTgPlayerController::execToggleMiniMapPing(FFrame&, void* const) +native function ToggleMiniMapPing(bool bStart); + +// Export UTgPlayerController::execUpdatePlayerVitalsUI(FFrame&, void* const) +native function UpdatePlayerVitalsUI(); + +// Export UTgPlayerController::execUpdateTransitionUI(FFrame&, void* const) +native function UpdateTransitionUI(); + +// Export UTgPlayerController::execSetHUDOverlay(FFrame&, void* const) +native function SetHUDOverlay(TgPlayerController.EHUDOverlay eOverlay); + +// Export UTgPlayerController::execSetSniperChargedMeter(FFrame&, void* const) +native function SetSniperChargedMeter(float fPercent); + +// Export UTgPlayerController::execSetBinocularSettings(FFrame&, void* const) +native function SetBinocularSettings(BinocularSettings BinocSettings); + +// Export UTgPlayerController::execShowRespawnBuyback(FFrame&, void* const) +native function ShowRespawnBuyback(int nCost); + +// Export UTgPlayerController::execSendCombatMessage(FFrame&, void* const) +native function SendCombatMessage(CombatMessageInfo msgInfo); + +// Export UTgPlayerController::execKickWarning(FFrame&, void* const) +native event KickWarning(); + +// Export UTgPlayerController::execSpectateGM(FFrame&, void* const) +native exec function SpectateGM(string sPlayerName, optional string sSpectatePassword); + +// Export UTgPlayerController::execSpectate(FFrame&, void* const) +native exec function Spectate(string sPlayerName, optional string sSpectatePassword); + +// Export UTgPlayerController::execSpectateStop(FFrame&, void* const) +native exec function SpectateStop(); + +// Export UTgPlayerController::execIsLocalPlayerController(FFrame&, void* const) +native function bool IsLocalPlayerController(); + +// Export UTgPlayerController::execResetKeysToDefault(FFrame&, void* const) +native exec function ResetKeysToDefault(bool bSpectator); + +// Export UTgPlayerController::execUpdateRuntimeInput(FFrame&, void* const) +native function UpdateRuntimeInput(bool bSpectator); + +// Export UTgPlayerController::execUpdateKeybindsUI(FFrame&, void* const) +native function UpdateKeybindsUI(); + +// Export UTgPlayerController::execStartFX(FFrame&, void* const) +native function StartFX(); + +// Export UTgPlayerController::execPlayEventFX(FFrame&, void* const) +native function PlayEventFX(); + +// Export UTgPlayerController::execCheckHealthFX(FFrame&, void* const) +native function CheckHealthFX(float fCurrent, float fMaximum); + +// Export UTgPlayerController::execClientAddCheats(FFrame&, void* const) +native function ClientAddCheats(); + +// Export UTgPlayerController::execSendContextNotifyVGS(FFrame&, void* const) +native function SendContextNotifyVGS(int ContextId); + +// Export UTgPlayerController::execServerPlayContextNotify(FFrame&, void* const) +unreliable server native function ServerPlayContextNotify(int ContextId, Vector NotifyLocation); + +// Export UTgPlayerController::execServerGiveCard(FFrame&, void* const) +reliable server native function ServerGiveCard(int nDeviceId); + +// Export UTgPlayerController::execServerRequestGraphData(FFrame&, void* const) +reliable server native function ServerRequestGraphData(); + +// Export UTgPlayerController::execAchievementPossess(FFrame&, void* const) +native function AchievementPossess(Pawn aPawn); + +// Export UTgPlayerController::execAchievementUnPossess(FFrame&, void* const) +native function AchievementUnPossess(); + +// Export UTgPlayerController::execAchievementAchievedById(FFrame&, void* const) +native function AchievementAchievedById(int nActivityId); + +// Export UTgPlayerController::execAchievementModifiedHealthProp(FFrame&, void* const) +native function AchievementModifiedHealthProp(int nHealth, int nMaxHealth); + +// Export UTgPlayerController::execSetSelectedTalent(FFrame&, void* const) +native function SetSelectedTalent(int nBotId, int nDeviceIndex); + +// Export UTgPlayerController::execSetSelectedDeck(FFrame&, void* const) +native function SetSelectedDeck(int nBotId, int nIndex); + +// Export UTgPlayerController::execSetRewardValues(FFrame&, void* const) +native function SetRewardValues(int XP, int nCredits, Actor Source, optional TgObject.ERewardValueType RewardType = 0, optional bool bFlankKill = false); + +// Export UTgPlayerController::execOnRequestCard(FFrame&, void* const) +native function bool OnRequestCard(int nDeviceId, int nRank); + +// Export UTgPlayerController::execOnRequestTalent(FFrame&, void* const) +native function OnRequestTalent(int nDeviceId); + +// Export UTgPlayerController::execOnRequestDeck(FFrame&, void* const) +native function OnRequestDeck(int nDeviceId); + +// Export UTgPlayerController::execUIFade(FFrame&, void* const) +native function UIFade(bool bFade, optional float fTime = 0.2500000, optional float fDelay = 0.0000000, optional float FailSafeTime = 5.0000000); + +// Export UTgPlayerController::execUIFadeEndOfRound(FFrame&, void* const) +native function UIFadeEndOfRound(bool bFade, optional float fTime = 0.2500000, optional float fDelay = 0.0000000, optional float FailSafeTime = 5.0000000); + +// Export UTgPlayerController::execOnScoredPoints(FFrame&, void* const) +private native final function OnScoredPoints(int nValue, TgObject.ERewardValueType eType, int nPlayerId); + +// Export UTgPlayerController::execGetBestKillCamTarget(FFrame&, void* const) +native final function Actor GetBestKillCamTarget(); + +// Export UTgPlayerController::execIsConfused(FFrame&, void* const) +native final function bool IsConfused(); + +// Export UTgPlayerController::execShouldHideUIWorldOverlay(FFrame&, void* const) +native final function bool ShouldHideUIWorldOverlay(); + +// Export UTgPlayerController::execWants3P(FFrame&, void* const) +native function bool Wants3P(); + +// Export UTgPlayerController::execRefreshLastActiveTime(FFrame&, void* const) +native final function RefreshLastActiveTime(); + +// Export UTgPlayerController::execShowAutoPurchaseTip(FFrame&, void* const) +native function ShowAutoPurchaseTip(); + +// Export UTgPlayerController::execIsTopMenu(FFrame&, void* const) +native function bool IsTopMenu(string sName); + +// Export UTgPlayerController::execCloseHUDMenus(FFrame&, void* const) +native function CloseHUDMenus(); + +// Export UTgPlayerController::execSetAkWorldTimeDilation(FFrame&, void* const) +native function SetAkWorldTimeDilation(); + +// Export UTgPlayerController::execUpdateMinimap(FFrame&, void* const) +native function UpdateMinimap(TgMapBoundsVolume pMapBoundsVolume); + +// Export UTgPlayerController::execCanPlayKillCam(FFrame&, void* const) +native function bool CanPlayKillCam(bool bPlayOfGame); + +// Export UTgPlayerController::execNextScoreboardDisplayType(FFrame&, void* const) +native exec function NextScoreboardDisplayType(); + +// Export UTgPlayerController::execSetReticleVisibility(FFrame&, void* const) +native function SetReticleVisibility(bool bShowReticle, bool bShowReticleAccessories); + +// Export UTgPlayerController::execNotifyUpdatedInhandAmmoCount(FFrame&, void* const) +native function NotifyUpdatedInhandAmmoCount(int nAmmo, TgDevice pDevice, int nDeviceId); + +// Export UTgPlayerController::execGetMICResource(FFrame&, void* const) +native function MaterialInstanceConstant GetMICResource(int nResourceId); + +// Export UTgPlayerController::execTestCrashReport(FFrame&, void* const) +native function TestCrashReport(); + +// Export UTgPlayerController::execSetNWCondition(FFrame&, void* const) +native function SetNWCondition(int nPktLoss, int nPktLag); + +// Export UTgPlayerController::execStartReviveTimer(FFrame&, void* const) +native function float StartReviveTimer(optional bool bDoNotUpdateStatsTracker); + +// Export UTgPlayerController::execOnRespawnRuleChanged(FFrame&, void* const) +native function bool OnRespawnRuleChanged(); + +// Export UTgPlayerController::execSetLevel(FFrame&, void* const) +native function SetLevel(int nLevel); + +// Export UTgPlayerController::execSetPlayerProfile(FFrame&, void* const) +native function SetPlayerProfile(int nProfileId, int nSkinId, int nWeaponSkinId, int nHeadSkinId, optional int nVoicePackId = 0); + +// Export UTgPlayerController::execSetPlayerWard(FFrame&, void* const) +native function SetPlayerWard(int nWardSkinId); + +// Export UTgPlayerController::execReloadKeybindsForPawn(FFrame&, void* const) +native function ReloadKeybindsForPawn(); + +// Export UTgPlayerController::execSetAudioFriendlyAndLocal(FFrame&, void* const) +native simulated function SetAudioFriendlyAndLocal(); + +// Export UTgPlayerController::execServerMove(FFrame&, void* const) +unreliable server native function ServerMove(float TimeStamp, Vector InAccel, Vector ClientLoc, byte MoveFlags, byte ClientRoll, int View); + +function CallServerMove(SavedMove NewMove, Vector ClientLoc, byte ClientRoll, int View, SavedMove OldMove) +{ + super(PlayerController).CallServerMove(NewMove, ClientLoc, ClientRoll, View, OldMove); + c_LastSentMoveTimeStamp = NewMove.TimeStamp; + c_LastSentMoveAcceleration = NewMove.Acceleration; + c_LastSentMoveCompressedFlags = int(NewMove.CompressedFlags()); + c_LastSentClientLoc = ClientLoc; + c_LastSentClientRoll = ClientRoll; + c_LastSentView = View; + //return; +} + +exec event AllocateDevicePoint(int nDeviceId) +{ + // End:0x2B + if(CanAllocateDevicePoint(nDeviceId, none)) + { + ServerAllocateDevicePoint(nDeviceId); + } + //return; +} + +function Logoff(bool bForced) +{ + ClientLogoff(bForced); + //return; +} + +unreliable client simulated function ClientPlaySound(SoundCue ASound) +{ + PlaySound(ASound); + //return; +} + +unreliable client simulated function ClientPlaySoundBase(AkBaseSoundObject ASound) +{ + PlaySoundBase(ASound); + //return; +} + +reliable client simulated event ClientShowRespawnBuyback(int nCost) +{ + ShowRespawnBuyback(nCost); + //return; +} + +event RequestShowRespawnBuyback() +{ + // End:0x2C + if(!IsTimerActive('ShowRespawnTimerExpired')) + { + ClientShowRespawnBuyback(m_nReviveBuybackCost); + } + //return; +} + +function ShowRespawnTimerExpired() +{ + // End:0x23 + if(IsInState('Dead')) + { + ClientShowRespawnBuyback(m_nReviveBuybackCost); + } + //return; +} + +exec function SetTaskforceLead(string fsName) +{ + ServerSetTaskforceLead(fsName); + //return; +} + +exec function ShowBinoculars(bool bShow) +{ + SetHUDOverlay(((bShow) ? 2 : 0)); + //return; +} + +function SetCanChangeLoadout(bool bCanChangeLoadout) +{ + r_bCanChangeLoadout = bCanChangeLoadout; + //return; +} + +function SetCanPurchaseFlag(bool bCanPurchase) +{ + local TgGame_Battle ActualGame; + local TgPawn aPawn; + + ActualGame = TgGame_Battle(WorldInfo.Game); + aPawn = TgPawn(Pawn); + // End:0x115 + if(ActualGame != none) + { + // End:0xC1 + if(bCanPurchase) + { + // End:0xBE + if(ActualGame.m_bRestrictStoreInteractions) + { + // End:0xBE + if(aPawn != none) + { + // End:0xBE + if(aPawn.s_bHasInteractedWithStore) + { + return; + } + } + } + } + else + { + // End:0x115 + if(ActualGame.m_bRestrictStoreInteractions && aPawn != none) + { + aPawn.s_bHasInteractedWithStore = true; + } + } + } + r_bCanPurchaseItems = bCanPurchase; + // End:0x141 + if(bCanPurchase) + { + AutoPurchase(); + } + // End:0x19E + if(WorldInfo.IsRecordingDemo() && aPawn != none) + { + aPawn.r_bDemoCanPurchaseItems = bCanPurchase; + } + // End:0x1E0 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && IsLocalPlayerController()) + { + OnCanPurchaseItemChange(); + } + //return; +} + +exec event SetAutoPurchase(bool bAutoPurchase) +{ + ServerSetAutoPurchase(bAutoPurchase); + //return; +} + +reliable server function ServerSetAutoPurchase(bool bAutoPurchase) +{ + SetAutoPurchaseFlag(bAutoPurchase); + AutoPurchase(); + //return; +} + +exec event SetAutoSkillUp(bool bAutoSkill) +{ + ServerSetAutoSkillUp(bAutoSkill); + //return; +} + +reliable server function ServerSetAutoSkillUp(bool bAutoSkill) +{ + SetAutoSkillUpFlag(bAutoSkill); + AutoSkillUp(); + //return; +} + +exec event SetToggleZoom(bool bToggleZoom) +{ + ServerSetToggleZoom(bToggleZoom); + //return; +} + +reliable server function ServerSetToggleZoom(bool bToggleZoom) +{ + SetToggleZoomFlag(bToggleZoom); + ToggleZoom(); + //return; +} + +// Export UTgPlayerController::execAddKillAlert(FFrame&, void* const) +native function AddKillAlert(string KilledName, string KillerName, bool KillerWasPlayer); + +// Export UTgPlayerController::execAddAssistAlert(FFrame&, void* const) +native function AddAssistAlert(string KilledName, string KillerName); + +// Export UTgPlayerController::execAddAutoKickAlert(FFrame&, void* const) +native function AddAutoKickAlert(); + +exec function WhereAmI() +{ + LocalPlayer(Player).ViewportClient.ViewportConsole.OutputText("Location = " @ string(GetPlayerControlPawn().Location)); + //return; +} + +exec function TestScreenCapturePostProcess() +{ + local LocalPlayer LocalPlayer; + local TgScreenCapturePostEffect TgScreenCapturePostEffect; + local MaterialInstanceTimeVarying NewMaterial; + + LocalPlayer = LocalPlayer(Player); + ClearTimer('RemoveScreenCapturePostProcess'); + RemoveScreenCapturePostProcess(); + // End:0x1EF + if((LocalPlayer != none) && LocalPlayer.PlayerPostProcess != none) + { + TgScreenCapturePostEffect = new Class'TgGame.TgScreenCapturePostEffect'; + TgScreenCapturePostEffect.InitializeRenderTarget(self); + NewMaterial = new Class'Engine.MaterialInstanceTimeVarying'; + NewMaterial.SetParent(MaterialInstanceTimeVarying'TgPostProcess.MIC_FadeOldFrame'); + NewMaterial.SetTextureParameterValue('OldFrame', TgScreenCapturePostEffect.ScreenCapture); + NewMaterial.SetScalarStartTime('FadeAmount', 0.0000000); + SetTimer(NewMaterial.GetMaxDurationFromAllParameters(), false, 'RemoveScreenCapturePostProcess'); + TgScreenCapturePostEffect.Material = NewMaterial; + LocalPlayer.PlayerPostProcess.Effects.AddItem(TgScreenCapturePostEffect); + } + //return; +} + +function RemoveScreenCapturePostProcess() +{ + local LocalPlayer LocalPlayer; + local TgScreenCapturePostEffect TgScreenCapturePostEffect; + local PostProcessEffect CurrentEffect; + + LocalPlayer = LocalPlayer(Player); + // End:0xFF + if((LocalPlayer != none) && LocalPlayer.PlayerPostProcess != none) + { + // End:0xFE + foreach LocalPlayer.PlayerPostProcess.Effects(CurrentEffect) + { + TgScreenCapturePostEffect = TgScreenCapturePostEffect(CurrentEffect); + // End:0xFD + if(TgScreenCapturePostEffect != none) + { + TgScreenCapturePostEffect.Cleanup(LocalPlayer.PlayerPostProcess); + } + else + { + } + } + } + //return; +} + +simulated exec event CauseClientEvent(optional name EventName) +{ + local array AllConsoleEvents; + local SeqEvent_Console ConsoleEvt; + local Sequence GameSeq; + local int Idx; + local bool bFoundEvt; + + GameSeq = WorldInfo.GetGameSequence(); + // End:0x150 + if((GameSeq != none) && EventName != 'None') + { + GameSeq.FindSeqObjectsByClass(Class'Engine.SeqEvent_Console', true, AllConsoleEvents); + Idx = 0; + J0x8F: + + // End:0x150 [Loop If] + if(Idx < AllConsoleEvents.Length) + { + ConsoleEvt = SeqEvent_Console(AllConsoleEvents[Idx]); + // End:0x142 + if((ConsoleEvt != none) && EventName == ConsoleEvt.ConsoleEventName) + { + bFoundEvt = true; + ConsoleEvt.CheckActivate(self, Pawn); + } + Idx++; + // [Loop Continue] + goto J0x8F; + } + } + // End:0x15F + if(!bFoundEvt) + { + } + //return; +} + +exec function CCE(optional name EventName) +{ + CauseClientEvent(EventName); + //return; +} + +exec function OnLeftMousePressed() +{ + local TgPawn P; + local TgObject.EDeviceFailType failType; + local int I; + local TgDevice Dev; + + InputReceived(8); + // End:0x1F + if(!IsInputAllowed(8)) + { + return; + } + bPressingLeftMouseButton = true; + // End:0x4F + if(WorldInfo.IsPlayingTimelapse()) + { + return; + } + P = TgPawn(Pawn); + // End:0xD7 + if((m_nContextNotifyGroundTargeterId != 0) && P != none) + { + ServerPlayContextNotify(m_nContextNotifyGroundTargeterId, vect(0.0000000, 0.0000000, 0.0000000)); + SendContextNotifyVGS(m_nContextNotifyGroundTargeterId); + EnableContextNotify(0); + bPressingLeftMouseButton = false; + return; + } + // End:0x29F + if(P != none) + { + I = 0; + J0xF1: + + // End:0x175 [Loop If] + if(I < 33) + { + Dev = P.m_EquippedDevices[I]; + // End:0x167 + if(Dev != none) + { + // End:0x167 + if(Dev.InterceptLeftMousePressed(self)) + { + return; + } + } + ++I; + // [Loop Continue] + goto J0xF1; + } + // End:0x29F + if(P.c_CurrentTargetingDevice != none) + { + // End:0x1DB + if(P.OnMountCancelOffhandSlotPressed(P.c_CurrentTargetingDevice)) + { + return; + } + // End:0x290 + if(!P.StartAction(P.c_CurrentTargetingDevice, failType)) + { + TgHUD(myHUD).PlayDeviceFailResponse(failType, P.c_CurrentTargetingDevice.IsAbility()); + } + else + { + m_bPendingReload = false; + } + } + } + //return; +} + +exec function OnLeftMouseReleased() +{ + local int I; + local TgPawn P; + local TgDevice Dev; + + P = TgPawn(Pawn); + // End:0x2D + if(!bPressingLeftMouseButton) + { + return; + } + bPressingLeftMouseButton = false; + // End:0x1EE + if(P != none) + { + I = 0; + J0x53: + + // End:0xD7 [Loop If] + if(I < 33) + { + Dev = P.m_EquippedDevices[I]; + // End:0xC9 + if(Dev != none) + { + // End:0xC9 + if(Dev.InterceptLeftMouseReleased(self)) + { + return; + } + } + ++I; + // [Loop Continue] + goto J0x53; + } + // End:0x1EE + if(P.c_CurrentTargetingDevice != none) + { + // End:0x175 + if(P.c_CurrentTargetingDevice.m_bIsFireHoldDevice) + { + P.c_CurrentTargetingDevice.ReleaseFireHold(); + m_bPendingReload = false; + } + else + { + // End:0x1EB + if(!P.c_CurrentTargetingDevice.IsFunctionallyToggleDevice()) + { + P.StopAction(P.c_CurrentTargetingDevice); + } + } + } + } + //return; +} + +exec function OnRightMousePressed() +{ + local TgPawn P; + local int I; + local TgDevice Dev; + local WeaponMeshSwapStrategy SwapStrategy; + + InputReceived(9); + // End:0x1F + if(!IsInputAllowed(9)) + { + return; + } + bPressingRightMouseButton = true; + // End:0x71 + if(m_nContextNotifyGroundTargeterId != 0) + { + EnableContextNotify(0); + ConsoleCommand("UnloadScene UIHudVGS"); + return; + } + P = TgPawn(Pawn); + // End:0x2DE + if(P != none) + { + I = 0; + J0xA7: + + // End:0x12B [Loop If] + if(I < 33) + { + Dev = P.m_EquippedDevices[I]; + // End:0x11D + if(Dev != none) + { + // End:0x11D + if(Dev.InterceptRightMousePressed(self)) + { + return; + } + } + ++I; + // [Loop Continue] + goto J0xA7; + } + Dev = none; + // End:0x2D2 + if((P.c_CurrentTargetingDevice == none) || ((P.c_CurrentTargetingDevice != none) && int(P.c_CurrentTargetingDevice.r_eEquippedAt) != int(1)) && P.c_CurrentTargetingDevice.ShouldSwitchBackToBasicAttackTargeting(GetClientSettings().GetCastMode(P.r_nProfileId, P.c_CurrentTargetingDevice.r_eEquippedAt))) + { + P.SetTargetingDevice(P.GetDeviceByEqPoint(1), SwapStrategy); + P.c_CurrentStartActionDevice = none; + } + OnOffhandSlotPressed(16); + } + //return; +} + +exec function OnRightMouseReleased() +{ + local TgPawn P; + local TgDevice Dev; + local int I; + + // End:0x11 + if(!bPressingRightMouseButton) + { + return; + } + P = TgPawn(Pawn); + bPressingRightMouseButton = false; + // End:0x23C + if(P != none) + { + I = 0; + J0x53: + + // End:0xD7 [Loop If] + if(I < 33) + { + Dev = P.m_EquippedDevices[I]; + // End:0xC9 + if(Dev != none) + { + // End:0xC9 + if(Dev.InterceptRightMouseReleased(self)) + { + return; + } + } + ++I; + // [Loop Continue] + goto J0x53; + } + Dev = none; + // End:0x230 + if(P.c_CurrentTargetingDevice != none) + { + // End:0x1B7 + if(P.c_CurrentTargetingDevice.m_bIsFireHoldDevice) + { + // End:0x1B4 + if(P.c_CurrentTargetingDevice.ReleaseHoldOnRightMouseReleased()) + { + P.c_CurrentTargetingDevice.ReleaseFireHold(); + m_bPendingReload = false; + } + } + else + { + // End:0x22D + if(!P.c_CurrentTargetingDevice.IsFunctionallyToggleDevice()) + { + P.StopAction(P.c_CurrentTargetingDevice); + } + } + } + OnOffhandSlotReleased(16); + } + //return; +} + +simulated function bool PingMap(Vector WorldLocation, const out array worldActorRepInfos, TgObject.PING_TYPE Type) +{ + local TgDevice targetingDevice; + + // End:0x49 + if(TgPawn(Pawn) != none) + { + targetingDevice = TgPawn(Pawn).c_CurrentTargetingDevice; + } + // End:0xEB + if((targetingDevice != none) && int(targetingDevice.GetTargetingMode()) == int(9)) + { + m_vWorldMapLocation = WorldLocation; + m_WorldMapTargetRepInfos = worldActorRepInfos; + // End:0xD5 + if(int(Type) != int(0)) + { + OnRightMousePressed(); + OnRightMouseReleased(); + } + else + { + OnLeftMousePressed(); + OnLeftMouseReleased(); + } + return true; + } + return false; + //return ReturnValue; +} + +reliable server function ServerSetViewTarget(Actor me) +{ + ResetCameraMode(); + SetViewTarget(me); + ClientSetViewTarget(me); + //return; +} + +function SetCorrectViewTarget() +{ + local Vector Loc; + local Rotator Rot; + + // End:0x52 + if(r_bRove == true) + { + GetPlayerViewPoint(Loc, Rot); + SetRotation(Rot); + SetLocation(Loc); + ServerViewSelf(); + } + else + { + ServerSetViewTarget(Pawn); + } + //return; +} + +exec function StartWatchOthers(optional TgPlayerController.EWatchOtherPlayersMode Mode = 1) +{ + ServerWatchOtherPlayer(Mode); + ServerViewNextPlayer(); + //return; +} + +exec function StopWatchOthers() +{ + ServerWatchOtherPlayer(0); + // End:0x2E + if(Pawn != none) + { + ServerSetViewTarget(Pawn); + } + //return; +} + +reliable server function ServerWatchOtherPlayer(TgPlayerController.EWatchOtherPlayersMode Mode) +{ + r_WatchOtherPlayer = Mode; + //return; +} + +unreliable server function ServerViewSelf(optional ViewTargetTransitionParams TransitionParams) +{ + ServerWatchOtherPlayer(0); + super(PlayerController).ServerViewSelf(); + //return; +} + +exec function ToggleRove() +{ + r_bRove = !r_bRove; + ServerRove(r_bRove); + SetCorrectViewTarget(); + //return; +} + +reliable server function ServerRove(bool bOn) +{ + r_bRove = bOn; + //return; +} + +reliable client simulated event ClientSetRotationAndDesired(Rotator NewRotation, optional bool bResetCamera) +{ + NewRotation.Pitch = NormalizeRotAxis(NewRotation.Pitch); + SetRotation(NewRotation); + // End:0xBC + if(Pawn != none) + { + NewRotation.Pitch = 0; + NewRotation.Roll = 0; + Pawn.SetRotation(NewRotation); + } + //return; +} + +unreliable client simulated function ClientPingMap(Vector WorldLoc, TgObject.PING_TYPE pingType) +{ + // End:0x52 + if(TgHUD(myHUD) != none) + { + TgHUD(myHUD).PingWorldLocation(WorldLoc, pingType); + } + //return; +} + +// Export UTgPlayerController::execAddAlertScript(FFrame&, void* const) +native function AddAlertScript(TgObject.AlertPriority Priority, TgObject.AlertType Type, float fDuration, int nMsgId, optional bool bBlockDuplicates = false); + +// Export UTgPlayerController::execRemoveAlertScript(FFrame&, void* const) +native function RemoveAlertScript(int nMsgId); + +exec function SelfAlert(int nPriority, float fDuration, int nMsgId) +{ + local TgObject.AlertPriority Priority; + + Priority = byte(nPriority); + AddAlertScript(Priority, 0, fDuration, nMsgId); + //return; +} + +exec function ServerProfileScript(string Command) +{ + ServerProfiling(Command); + //return; +} + +reliable server function ServerProfiling(string Command) +{ + TgGame(WorldInfo.Game).ConsoleCommand("PROFILESCRIPT" @ Command); + //return; +} + +exec event PressJump(bool bOn) +{ + local TgPawn P; + + P = TgPawn(Pawn); + // End:0x2D + if(P == none) + { + return; + } + // End:0x6A + if(bOn && IsInputAllowed(14)) + { + PlayerInput.Jump(); + } + //return; +} + +exec event ClientPurchaseItem(int nLootTableId, int nLootTableItemId, int nItemCount) +{ + ServerPurchaseItem(nLootTableId, nLootTableItemId, nItemCount); + //return; +} + +exec event ClientSellItem(int nInventoryId) +{ + ServerSellItem(nInventoryId); + //return; +} + +simulated event Destroyed() +{ + local Pawn ControlledPawn; + local TgGame_Mission TheGame; + local bool bDestroyPawn; + local TgAchievement Achievement; + + // End:0x167 + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + bDestroyPawn = true; + TheGame = TgGame_Mission(WorldInfo.Game); + ControlledPawn = Pawn; + // End:0x9B + if(ControlledPawn == none) + { + ControlledPawn = s_LastPossessedPawn; + } + // End:0x167 + if((ControlledPawn != none) && ControlledPawn.Controller == self) + { + FinalSave(); + // End:0x167 + if((TheGame != none) && TgPawn_Character(ControlledPawn) != none) + { + bDestroyPawn = !TheGame.SwapToNewAIController(self, TgPawn_Character(ControlledPawn)); + // End:0x167 + if(bDestroyPawn) + { + ControlledPawn.Destroy(); + } + } + } + } + // End:0x1A0 + if(c_TutorialAnnouncer != none) + { + c_TutorialAnnouncer.Destroyed(); + c_TutorialAnnouncer = none; + } + // End:0x1D9 + if(c_SubtitledMessages != none) + { + c_SubtitledMessages.Destroyed(); + c_SubtitledMessages = none; + } + // End:0x20B + if(myHUD != none) + { + myHUD.Destroy(); + myHUD = none; + } + // End:0x242 + foreach s_Achievements(Achievement) + { + Achievement.StopTracking(); + } + s_Achievements.Length = 0; + super(PlayerController).Destroyed(); + //return; +} + +function InitPlayerReplicationInfo() +{ + super(Controller).InitPlayerReplicationInfo(); + CachedPRI = TgRepInfo_Player(PlayerReplicationInfo); + //return; +} + +function CleanupPRI() +{ + // End:0x27 + if(!IsInState('RoundEnded')) + { + CachedPRI = none; + super(PlayerController).CleanupPRI(); + } + //return; +} + +event CopyPropertiesTo(Controller C) +{ + local TgPlayerController PC; + local TgAIController_BehaviorGod aic; + local TgRepInfo_Player FromPri, ToPri; + + PC = TgPlayerController(C); + aic = TgAIController_BehaviorGod(C); + // End:0x1F2 + if(PC != none) + { + PC.s_nPlayerId = s_nPlayerId; + PC.r_nXp = r_nXp; + PC.s_fXpRemainder = s_fXpRemainder; + PC.r_nCurrency = r_nCurrency; + PC.s_fCurrencyRemainder = s_fCurrencyRemainder; + FromPri = TgRepInfo_Player(PlayerReplicationInfo); + ToPri = TgRepInfo_Player(PC.PlayerReplicationInfo); + // End:0x1EF + if((FromPri != none) && ToPri != none) + { + FromPri.CopyProperties(ToPri); + FromPri.TransferMinionOwnershipTo(ToPri); + PlayerReplicationInfo = none; + FromPri.Destroy(); + } + } + else + { + // End:0x4D2 + if(aic != none) + { + aic.PlayerID = s_nPlayerId; + aic.CurrentXP = r_nXp; + aic.CurrentXPRemainder = s_fXpRemainder; + aic.CurrentGold = r_nCurrency; + aic.CurrentGoldRemainder = s_fCurrencyRemainder; + FromPri = TgRepInfo_Player(PlayerReplicationInfo); + ToPri = TgRepInfo_Player(aic.PlayerReplicationInfo); + // End:0x4D2 + if((FromPri != none) && ToPri != none) + { + FromPri.CopyProperties(ToPri); + FromPri.TransferMinionOwnershipTo(ToPri); + // End:0x4AF + if(ToPri.r_SpawnPoint != none) + { + aic.m_vSpawnLocation = ToPri.r_SpawnPoint.Location; + aic.m_rSpawnDirection = ToPri.r_SpawnPoint.Rotation; + // End:0x4AF + if(Pawn != none) + { + aic.m_vSpawnLocation.Z += Pawn.GetCollisionHeight(); + } + } + PlayerReplicationInfo = none; + FromPri.Destroy(); + } + } + } + //return; +} + +event PreRender(Canvas Canvas) +{ + // End:0x49 + if(TgPawn(Pawn) != none) + { + TgPawn(Pawn).PreRender(Canvas); + } + //return; +} + +function SetControlModuleOnPossess() +{ + local TgPawn TgP; + + TgP = TgPawn(Pawn); + // End:0xC9 + if(((((TgP != none) && TgP.DefaultControlModuleClass != none) && DefaultControlModuleClass != TgP.DefaultControlModuleClass) && ControlModule != none) && DefaultControlModuleClass == ControlModule.Class) + { + SwitchControl(none); + } + //return; +} + +function AcknowledgePossession(Pawn P) +{ + super.AcknowledgePossession(P); + // End:0x5D + if(Pawn != none) + { + c_nCameraYawOffset = Pawn.Rotation.Yaw; + } + // End:0xB7 + if((P == none) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + WorldInfo.ForceGarbageCollection(); + } + SetControlModuleOnPossess(); + // End:0xF4 + if(PlayerCamera != none) + { + PlayerCamera.UpdateCamera(0.0000000); + } + // End:0x163 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && m_bShowChampionOverviewTip) + { + // End:0x159 + if(m_fShowChampionOverviewTipDelay > 0.0000000) + { + SetTimer(m_fShowChampionOverviewTipDelay, false, 'ShowChampionOverviewTip'); + } + else + { + ShowChampionOverviewTip(); + } + } + //return; +} + +reliable server function ServerAcknowledgePossession(Pawn P) +{ + local TgRepInfo_Player PRI; + + super(PlayerController).ServerAcknowledgePossession(P); + // End:0x97 + if((P != none) && TgGame_Mission(WorldInfo.Game) != none) + { + TgGame_Mission(WorldInfo.Game).MarkAsReady(Player); + } + PRI = CachedPRI; + // End:0x165 + if(PRI != none) + { + PRI.r_bMapHasLoaded = true; + // End:0x122 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + PRI.UpdatePlayerReady(); + } + // End:0x165 + if(PRI.LoadCardDeck()) + { + PRI.DrawNewCards(); + } + } + //return; +} + +event Possess(Pawn aPawn, bool bVehicleTransition) +{ + super(PlayerController).Possess(aPawn, bVehicleTransition); + s_LastPossessedPawn = aPawn; + AchievementPossess(aPawn); + ReloadKeybindsForPawn(); + SetControlModuleOnPossess(); + // End:0xDB + if((CachedPRI != none) && TgInventoryManager(aPawn.InvManager) != none) + { + CachedPRI.UpdateBroadcastedItems(TgInventoryManager(aPawn.InvManager)); + } + //return; +} + +event UnPossess() +{ + local bool bSwitchControl; + local TgPawn TgP; + + TgP = TgPawn(Pawn); + bSwitchControl = ((((TgP != none) && TgP.DefaultControlModuleClass != none) && DefaultControlModuleClass != TgP.DefaultControlModuleClass) && ControlModule != none) && ControlModule.Class == TgP.DefaultControlModuleClass; + AchievementUnPossess(); + super(PlayerController).UnPossess(); + // End:0x140 + if(TgP != none) + { + TgP.r_bIsMounted = false; + TgP.bNetDirty = true; + } + // End:0x158 + if(bSwitchControl) + { + SwitchControl(none); + } + //return; +} + +function NotifyChangedWeapon(Weapon PreviousWeapon, Weapon NewWeapon) +{ + // End:0x50 + if(int(Role) < int(ROLE_Authority)) + { + TgHUD(myHUD).DeviceChangeEvent(TgDevice(NewWeapon), 3); + } + //return; +} + +function NotifyTakeHit(Controller InstigatedBy, Vector HitLocation, int Damage, Class DamageType, Vector Momentum) +{ + super(PlayerController).NotifyTakeHit(InstigatedBy, HitLocation, Damage, DamageType, Momentum); + //return; +} + +unreliable client simulated function ClientPlayTakeHit(Rotator HitDir, int Damage, Class DamageType) +{ + //return; +} + +function NotifyBodyUnderAttack(byte Damage) +{ + //return; +} + +reliable client simulated function ClientNotifyBodyUnderAttack(byte Damage) +{ + //return; +} + +simulated function NotifyInBombRange() +{ + //return; +} + +simulated function CancelInBombRange() +{ + //return; +} + +event RestartPlayerOnTransfer() +{ + // End:0x83 + if(CanRestartPlayer()) + { + WorldInfo.Game.RestartPlayer(self); + // End:0x83 + if(TgPawn(Pawn) != none) + { + TgPawn(Pawn).ReapplyLoadoutEffects(); + } + } + //return; +} + +reliable server function ServerLadderLetGo() +{ + LadderLetGo(); + //return; +} + +function LadderLetGo() +{ + local TgPawn TgPawn; + + TgPawn = TgPawn(Pawn); + // End:0x98 + if(TgPawn != none) + { + // End:0x4B + if(!IsInState('Dead')) + { + GotoState('PlayerWalking'); + } + TgPawn.Velocity = Normal(Vector(Rotation)) * -100.0000000; + TgPawn.SetPhysics(2); + } + //return; +} + +event Revive() +{ + //return; +} + +function LiveRespawn(bool bResetHealth, bool bResetDevices) +{ + local Vector NewLocation; + local Rotator NewRotation; + local TgPawn myPawn; + + TgGame(WorldInfo.Game).GetReviveLocation(self, NewLocation, NewRotation); + SetNoSmoothedMovementCorrection(true, false); + Pawn.SetLocation(NewLocation); + Pawn.SetRotation(NewRotation); + SetRotation(NewRotation); + Pawn.SetDesiredRotation(NewRotation); + ClientSetRotationAndDesired(NewRotation); + myPawn = TgPawn(Pawn); + // End:0x148 + if(myPawn != none) + { + myPawn.LiveRespawn(bResetHealth, bResetDevices); + } + //return; +} + +function ReviveTimer() +{ + //return; +} + +function ViewPlayersTimer() +{ + //return; +} + +simulated function FadeForViewPlayersTimer() +{ + //return; +} + +event DisplayKillingBlowGameTip(CombatMessageInfo Info) +{ + local int GameTipId; + local TgPawn KillerPawn; + + // End:0x79 + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn', KillerPawn) + { + // End:0x78 + if(KillerPawn.r_nPawnId == Info.nSourceId) + { + // End:0x79 + break; + } + } + // End:0x9C + if(KillerPawn == TgPawn(Pawn)) + { + return; + } + GameTipId = -1; + // End:0x10C + if(KillerPawn.r_EquipDeviceInfo[2].nDeviceId == Info.nSourceItemId) + { + GameTipId = 156; + } + // End:0x2C7 + if(GameTipId == -1) + { + switch(Info.nSourceItemId) + { + // End:0x15C + case 13324: + GameTipId = 142; + // End:0x2C7 + break; + // End:0x173 + case 13251: + GameTipId = 143; + // End:0x2C7 + break; + // End:0x18A + case 14308: + GameTipId = 144; + // End:0x2C7 + break; + // End:0x1A1 + case 13412: + GameTipId = 145; + // End:0x2C7 + break; + // End:0x1B8 + case 12981: + GameTipId = 146; + // End:0x2C7 + break; + // End:0x1CF + case 14140: + GameTipId = 147; + // End:0x2C7 + break; + // End:0x1E6 + case 13327: + GameTipId = 148; + // End:0x2C7 + break; + // End:0x1FD + case 11510: + GameTipId = 149; + // End:0x2C7 + break; + // End:0x214 + case 11490: + GameTipId = 150; + // End:0x2C7 + break; + // End:0x22B + case 14181: + GameTipId = 187; + // End:0x2C7 + break; + // End:0x242 + case 11460: + GameTipId = 151; + // End:0x2C7 + break; + // End:0x259 + case 11491: + GameTipId = 152; + // End:0x2C7 + break; + // End:0x270 + case 13284: + GameTipId = 153; + // End:0x2C7 + break; + // End:0x287 + case 13332: + GameTipId = 154; + // End:0x2C7 + break; + // End:0x29E + case 14149: + GameTipId = 155; + // End:0x2C7 + break; + // End:0x2B5 + case 13033: + GameTipId = 159; + // End:0x2C7 + break; + // End:0xFFFF + default: + GameTipId = -1; + break; + } + } + // End:0x4C5 + if(GameTipId == -1) + { + switch(KillerPawn.GetBotId()) + { + // End:0x31A + case 2151: + GameTipId = 139; + // End:0x4C5 + break; + // End:0x331 + case 2273: + GameTipId = 154; + // End:0x4C5 + break; + // End:0x348 + case 2092: + GameTipId = 133; + // End:0x4C5 + break; + // End:0x35F + case 2094: + GameTipId = 134; + // End:0x4C5 + break; + // End:0x376 + case 2071: + GameTipId = 135; + // End:0x4C5 + break; + // End:0x38D + case 2254: + GameTipId = 136; + // End:0x4C5 + break; + // End:0x3A4 + case 2249: + GameTipId = 137; + // End:0x4C5 + break; + // End:0x3BB + case 2288: + GameTipId = 188; + // End:0x4C5 + break; + // End:0x3D2 + case 2303: + GameTipId = 189; + // End:0x4C5 + break; + // End:0x3E9 + case 2056: + GameTipId = 138; + // End:0x4C5 + break; + // End:0x400 + case 2149: + GameTipId = 140; + // End:0x4C5 + break; + // End:0x417 + case 2057: + GameTipId = 141; + // End:0x4C5 + break; + // End:0x431 + case 2073: + GameTipId = -1; + // End:0x4C5 + break; + // End:0x44B + case 2277: + GameTipId = -1; + // End:0x4C5 + break; + // End:0x465 + case 2093: + GameTipId = -1; + // End:0x4C5 + break; + // End:0x47F + case 2147: + GameTipId = -1; + // End:0x4C5 + break; + // End:0x499 + case 2205: + GameTipId = -1; + // End:0x4C5 + break; + // End:0x4B3 + case 2267: + GameTipId = -1; + // End:0x4C5 + break; + // End:0xFFFF + default: + GameTipId = -1; + break; + } + } + // End:0x4EB + if(GameTipId != -1) + { + ClientRequestHelpText(GameTipId); + } + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + local Canvas Canvas; + local Vector CamLoc; + local Rotator CamRot; + + Canvas = HUD.Canvas; + Canvas.SetDrawColor(255, 255, 255, 255); + Canvas.DrawText((("CONTROLLER " $ (GetItemName(string(self)))) $ " Pawn ") $ (GetItemName(string(Pawn)))); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + // End:0x1F4 + if(Pawn == none) + { + // End:0x151 + if(PlayerReplicationInfo == none) + { + Canvas.DrawText("NO PLAYERREPLICATIONINFO", false); + } + else + { + PlayerReplicationInfo.DisplayDebug(HUD, out_YL, out_YPos); + } + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + super(PlayerController).DisplayDebug(HUD, out_YL, out_YPos); + return; + } + // End:0x26A + if((PlayerCamera != none) && HUD.ShouldDisplayDebug('Camera')) + { + PlayerCamera.DisplayDebug(HUD, out_YL, out_YPos); + } + // End:0x3FD + if(HUD.ShouldDisplayDebug('HUD')) + { + myHUD.DisplayDebug(HUD, out_YL, out_YPos); + CamLoc = ViewTarget.Location; + CamRot = ViewTarget.Rotation; + HUD.Canvas.DrawText((((("View Target Location: " $ string(CamLoc)) $ ", Rotation: ") $ string(CamRot)) $ " Controller Rot:") $ string(Rotation)); + out_YPos += out_YL; + Canvas.SetPos(4.0000000, out_YPos); + } + // End:0x458 + if(TgPlayerInput(PlayerInput) != none) + { + TgPlayerInput(PlayerInput).DisplayDebug(HUD, out_YL, out_YPos); + } + //return; +} + +function OnToggleCinematicMode(SeqAct_ToggleCinematicMode Action) +{ + local bool bNewCinematicMode; + + // End:0x46 + if(Action.InputLinks[0].bHasImpulse) + { + bNewCinematicMode = true; + } + else + { + // End:0x8C + if(Action.InputLinks[1].bHasImpulse) + { + bNewCinematicMode = false; + } + else + { + // End:0xDB + if(Action.InputLinks[2].bHasImpulse) + { + bNewCinematicMode = !bCinematicMode; + } + } + } + SetCinematicMode(bNewCinematicMode, Action.bHidePlayer, Action.bHideHUD, Action.bDisableMovement, Action.bDisableTurning, Action.bDisableInput); + //return; +} + +function SetCinematicMode(bool bInCinematicMode, bool bHidePlayer, bool bAffectsHUD, bool bAffectsMovement, bool bAffectsTurning, bool bAffectsButtons) +{ + local bool bAdjustMoveInput, bAdjustLookInput; + + bCinematicMode = bInCinematicMode; + // End:0x63 + if(bCinematicMode) + { + // End:0x60 + if((Pawn != none) && bHidePlayer) + { + Pawn.SetHidden(true); + } + } + else + { + // End:0x92 + if(Pawn != none) + { + Pawn.SetHidden(false); + } + } + bAdjustMoveInput = bAffectsMovement && bCinematicMode != bCinemaDisableInputMove; + bAdjustLookInput = bAffectsTurning && bCinematicMode != bCinemaDisableInputLook; + // End:0x128 + if(bAdjustMoveInput) + { + IgnoreMoveInput(bCinematicMode); + bCinemaDisableInputMove = bCinematicMode; + } + // End:0x15E + if(bAdjustLookInput) + { + IgnoreLookInput(bCinematicMode); + bCinemaDisableInputLook = bCinematicMode; + } + ClientSetCinematicMode(bCinematicMode, bAdjustMoveInput, bAdjustLookInput, bAffectsHUD); + //return; +} + +reliable client simulated function ClientSetCinematicMode(bool bInCinematicMode, bool bAffectsMovement, bool bAffectsTurning, bool bAffectsHUD) +{ + bCinematicMode = bInCinematicMode; + // End:0xAD + if((myHUD != none) && bAffectsHUD) + { + // End:0xAD + if((bInCinematicMode && TgHUD(myHUD).bShowHUD) || !bInCinematicMode && !TgHUD(myHUD).bShowHUD) + { + } + } + // End:0xCE + if(bAffectsMovement) + { + IgnoreMoveInput(bCinematicMode); + } + // End:0xEF + if(bAffectsTurning) + { + IgnoreLookInput(bCinematicMode); + } + //return; +} + +function Reset() +{ + super(PlayerController).Reset(); + // End:0x19 + if(PlayerCamera != none) + { + } + //return; +} + +reliable client simulated event ClientReset() +{ + super(PlayerController).ClientReset(); + // End:0x19 + if(PlayerCamera != none) + { + } + //return; +} + +exec function SetRadius(float NewRadius) +{ + Pawn.SetCollisionSize(NewRadius, Pawn.GetCollisionHeight()); + //return; +} + +function bool UsingFirstPersonCamera() +{ + return false; + //return ReturnValue; +} + +simulated event GetAimingViewPoint(out Vector POVLocation, out Rotator POVRotation) +{ + GetPlayerViewPoint(POVLocation, POVRotation); + // End:0x5C + if(ControlModule != none) + { + ControlModule.AdjustAimingView(POVLocation, POVRotation); + } + //return; +} + +simulated event GetPlayerViewPoint(out Vector POVLocation, out Rotator POVRotation) +{ + super(PlayerController).GetPlayerViewPoint(POVLocation, POVRotation); + //return; +} + +reliable client simulated function ClientSetHUD(Class newHUDType) +{ + local TgHUD TgHUD; + + newHUDType = GetHudClass(newHUDType); + // End:0x3F + if(myHUD == none) + { + super(PlayerController).ClientSetHUD(newHUDType); + } + TgHUD = TgHUD(myHUD); + // End:0xF2 + if(TgHUD != none) + { + TgHUD.m_TgPlayerController = self; + TgHUD.m_TgPlayerController.SendUICurrencyChange(); + TgHUD.m_TgPlayerController.SendUIXpChange(); + } + AddPostRenderActors(); + //return; +} + +function AddPostRenderActors() +{ + local TgObjective TgO; + + // End:0x42 + foreach AllActors(Class'TgGame.TgObjective', TgO) + { + myHUD.AddPostRenderedActor(TgO); + } + //return; +} + +function bool AllowVoiceMessage(name MessageType) +{ + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_Standalone)) + { + return true; + } + return true; + //return ReturnValue; +} + +singular function EnterStartState() +{ + // End:0x64 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x61 + if(!WorldInfo.Game.bWaitingToStartMatch) + { + super(PlayerController).EnterStartState(); + ClientEnterStartState(); + } + } + else + { + // End:0x80 + if(!IsInState('Dead')) + { + super(PlayerController).EnterStartState(); + } + } + //return; +} + +reliable client simulated function ClientEnterStartState() +{ + EnterStartState(); + //return; +} + +function int BlendRot(float DeltaTime, int BlendC, int NewC) +{ + // End:0x5E + if(Abs(float(BlendC - NewC)) > float(32767)) + { + // End:0x4E + if(BlendC > NewC) + { + NewC += 65536; + } + else + { + BlendC += 65536; + } + } + // End:0x98 + if(Abs(float(BlendC - NewC)) > float(4096)) + { + BlendC = NewC; + } + else + { + BlendC = int(float(BlendC) + (float(NewC - BlendC) * FMin(1.0000000, 24.0000000 * DeltaTime))); + } + return BlendC & 65535; + //return ReturnValue; +} + +event float GetFOVAngle() +{ + local CameraActor ca; + local TPOV CamActorPOV; + + ca = CameraActor(ViewTarget); + // End:0x78 + if(ca != none) + { + ca.GetCameraView(0.0000000, CamActorPOV); + return CamActorPOV.FOV; + } + else + { + // End:0xA7 + if(PlayerCamera != none) + { + return PlayerCamera.GetFOVAngle(); + } + } + return FOVAngle; + //return ReturnValue; +} + +unreliable server function ServerViewNextPlayer(optional bool bFriendlyOnly) +{ + ServerViewAPlayer(1, bFriendlyOnly); + //return; +} + +unreliable server function ServerViewPrevPlayer(optional bool bFriendlyOnly) +{ + ServerViewAPlayer(-1, bFriendlyOnly); + //return; +} + +function HandleViewTargetOnAdjustPosition() +{ + // End:0x19 + if(int(r_WatchOtherPlayer) == int(1)) + { + return; + } + else + { + super(PlayerController).HandleViewTargetOnAdjustPosition(); + } + //return; +} + +function ServerViewAPlayer(int Dir, optional bool bFriendlyOnly) +{ + local array PawnList; + local TgPawn P; + local int Index; + local TgRepInfo_Game GRI; + + // End:0x3A2 + if(int(r_WatchOtherPlayer) == int(1)) + { + // End:0xE6 + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn', P) + { + // End:0xE5 + if(P.IsA('TgPawn_Character') && WorldInfo.Game.CanSpectate(self, P.GetPRI())) + { + PawnList[PawnList.Length] = P; + } + } + // End:0x2D5 + if(PawnList.Length == 0) + { + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x2D5 + if(GRI != none) + { + // End:0x1C2 + if((GRI.r_LanePusher != none) && GRI.r_LanePusher.IsAliveAndWell()) + { + PawnList.AddItem(GRI.r_LanePusher); + } + else + { + // End:0x24D + if((GRI.r_LanePusher1 != none) && GRI.r_LanePusher1.IsAliveAndWell()) + { + PawnList.AddItem(GRI.r_LanePusher1); + } + else + { + // End:0x2D5 + if((GRI.r_LanePusher2 != none) && GRI.r_LanePusher2.IsAliveAndWell()) + { + PawnList.AddItem(GRI.r_LanePusher2); + } + } + } + } + } + // End:0x3A2 + if(PawnList.Length > 0) + { + Index = PawnList.Find(GetViewTarget()); + // End:0x324 + if(Index == -1) + { + Index = 0; + } + Index += Dir; + // End:0x35E + if(Index >= PawnList.Length) + { + Index = 0; + } + else + { + // End:0x384 + if(Index < 0) + { + Index = PawnList.Length - 1; + } + } + SetViewTarget(PawnList[Index]); + } + } + //return; +} + +exec function ViewPlayerByName(string PlayerName) +{ + ServerViewPlayerByName(PlayerName); + //return; +} + +exec event DoSetViewTarget(Actor NewTarget) +{ + // End:0x22 + if(NewTarget != none) + { + ServerSetViewTarget(NewTarget); + } + //return; +} + +reliable server function ServerViewPlayerByName(string PlayerName) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x105 [Loop If] + if(I < WorldInfo.GRI.PRIArray.Length) + { + // End:0xF7 + if(WorldInfo.GRI.PRIArray[I].PlayerName ~= PlayerName) + { + SetViewTarget(WorldInfo.GRI.PRIArray[I]); + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +function TgCameraModule GetCurrentCameraModule() +{ + local TgPlayerCamera Cam; + + Cam = TgPlayerCamera(PlayerCamera); + // End:0x4A + if(Cam != none) + { + return Cam.CurrentCameraMod; + } + return none; + //return ReturnValue; +} + +exec function zoomIn() +{ + local TgPlayerCamera Cam; + local TgCameraModule_ThirdPerson camModule; + + Cam = TgPlayerCamera(PlayerCamera); + // End:0xB2 + if(Cam != none) + { + Cam.zoomIn(); + camModule = TgCameraModule_ThirdPerson(Cam.CurrentCameraMod); + // End:0xB2 + if(camModule != none) + { + ServerSetZoomFactor(camModule.fZoomFactor); + } + } + //return; +} + +exec function ZoomOut() +{ + local TgPlayerCamera Cam; + local TgCameraModule_ThirdPerson camModule; + + Cam = TgPlayerCamera(PlayerCamera); + // End:0xB2 + if(Cam != none) + { + Cam.ZoomOut(); + camModule = TgCameraModule_ThirdPerson(Cam.CurrentCameraMod); + // End:0xB2 + if(camModule != none) + { + ServerSetZoomFactor(camModule.fZoomFactor); + } + } + //return; +} + +unreliable server function ServerSetZoomFactor(float fZoom) +{ + local TgPlayerCamera Cam; + local TgCameraModule_ThirdPerson camModule; + + Cam = TgPlayerCamera(PlayerCamera); + // End:0x93 + if(Cam != none) + { + camModule = TgCameraModule_ThirdPerson(Cam.CurrentCameraMod); + // End:0x93 + if(camModule != none) + { + camModule.fZoomFactor = fZoom; + } + } + //return; +} + +exec function ShowPathToNearestPOI() +{ + local TgPointOfInterest POI, nearest; + local float Dist, nearestDist; + + nearestDist = -1.0000000; + nearest = none; + // End:0xF6 + foreach WorldInfo.AllNavigationPoints(Class'TgGame.TgPointOfInterest', POI) + { + // End:0xF5 + if(POI != none) + { + Dist = VSize(POI.Location - Pawn.Location); + // End:0xF5 + if((nearestDist > Dist) || nearest == none) + { + nearest = POI; + nearestDist = Dist; + } + } + } + // End:0x11C + if(nearest != none) + { + ShowPathTo(nearest); + } + else + { + AddNavFailedAlert(); + } + //return; +} + +simulated function OnNavIndicator(TgSeqAct_NavIndicator Action) +{ + // End:0x11 + if(Action == none) + { + return; + } + // End:0x5D + if(Action.m_NavTarget != none) + { + ShowPathTo(Action.m_NavTarget); + } + //return; +} + +simulated function OnPingMinimap(TgSeqAct_PingMinimap Action) +{ + // End:0x4E + if(Action != none) + { + ClientPingMap(Action.m_PingTarget.Location, 0); + } + //return; +} + +simulated event TutorialMessage(int msgId, bool bTip) +{ + local TgHUD TgH; + + // End:0x6C + if(myHUD != none) + { + TgH = TgHUD(myHUD); + // End:0x6C + if(TgH != none) + { + TgH.TutorialMessage(msgId, bTip); + } + } + //return; +} + +reliable client simulated function ClientShowPathTo(Actor destActor) +{ + ShowPathTo(destActor); + //return; +} + +simulated event ShowPathTo(Actor destActor) +{ + local TgNavRouteIndicator navIndicator; + local int setRouteResult; + + // End:0x11 + if(destActor == none) + { + return; + } + // End:0x4F + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + ClientShowPathTo(destActor); + return; + } + navIndicator = Spawn(Class'TgGame.TgNavRouteIndicator', self,, Pawn.Location, Pawn.Rotation,, true); + setRouteResult = int(navIndicator.SetRouteTo(destActor)); + // End:0x111 + if(setRouteResult == 1) + { + navIndicator.StartSeeking(); + } + else + { + AddNavFailedAlert(setRouteResult == 2); + } + //return; +} + +// Export UTgPlayerController::execAddNavFailedAlert(FFrame&, void* const) +native function AddNavFailedAlert(optional bool bAlreadyThere = false); + +exec function GoSpectate() +{ + GotoState('Spectating'); + //return; +} + +function FindGoodView() +{ + //return; +} + +event SendClientSetGameWinState(TgObject.GAME_WIN_STATE gameWinState) +{ + ClientSetGameWinState(gameWinState); + //return; +} + +reliable client simulated function ClientSetGameWinState(TgObject.GAME_WIN_STATE gameWinState) +{ + c_GameWinState = gameWinState; + //return; +} + +simulated function PrepareIntro() +{ + local TgPawn P; + + P = TgPawn(Pawn); + // End:0x4A + if(P != none) + { + P.PrepareIntro(); + } + //return; +} + +simulated function PlayIntro() +{ + local TgPawn P; + + P = TgPawn(Pawn); + // End:0x4A + if(P != none) + { + P.PlaySpawnFx(); + } + //return; +} + +reliable client simulated function ClientPlayIntro() +{ + PrepareIntro(); + SetTimer(1.0000000, false, 'PlayIntro'); + UpdateTransitionUI(); + //return; +} + +reliable client simulated event ClientFinishIntro() +{ + SetTimer(1.0000000, true, 'FinishIntro'); + //return; +} + +function FinishIntro() +{ + local TgHUD HUD; + + HUD = TgHUD(myHUD); + // End:0x63 + if((HUD != none) && HUD.FinishIntro()) + { + ClearTimer('FinishIntro'); + } + //return; +} + +event ResetPlayer() +{ + local Vector NewLocation; + local Rotator NewRotation; + + // End:0x27 + if((int(Role) < int(ROLE_Authority)) || Pawn == none) + { + return; + } + TgGame(WorldInfo.Game).GetReviveLocation(self, NewLocation, NewRotation); + Pawn.SetLocation(NewLocation); + Pawn.SetRotation(NewRotation); + SetRotation(NewRotation); + Pawn.SetDesiredRotation(NewRotation); + ClientSetRotationAndDesired(NewRotation); + //return; +} + +function SetupIntro() +{ + ClientPlayIntro(); + //return; +} + +function EndIntro() +{ + //return; +} + +function GameHasEnded(optional Actor EndGameFocus, optional bool bIsWinner) +{ + m_EndGameFocus = EndGameFocus; + GotoState('RoundEnded'); + ClientGameEnded(EndGameFocus, bIsWinner); + //return; +} + +reliable client simulated function ClientGameEnded(Actor EndGameFocus, bool bIsWinner) +{ + // End:0x4A + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + m_EndGameFocus = EndGameFocus; + GotoState('RoundEnded'); + } + //return; +} + +function float GetOutroTime() +{ + return 7.0000000; + //return ReturnValue; +} + +exec function Talk() +{ + //return; +} + +exec function TeamTalk() +{ + //return; +} + +function SetPlayerTeam(TeamInfo NewTeam) +{ + //return; +} + +// Export UTgPlayerController::execIsForceFeedbackEnabled(FFrame&, void* const) +native function bool IsForceFeedbackEnabled(); + +event InitInputSystem() +{ + PlayerInput = new (self) InputClass; + TgPlayerInput(PlayerInput).c_TgPC = self; + super(PlayerController).InitInputSystem(); + ReloadKeybindsForPawn(); + // End:0x8E + if(ForceFeedbackManager != none) + { + ForceFeedbackManager.bAllowsForceFeedback = IsForceFeedbackEnabled(); + } + //return; +} + +event PlayerTick(float DeltaTime) +{ + local TgPawn ActualPawn; + local float NewTimeDilation, DesaturationT; + + super(PlayerController).PlayerTick(DeltaTime); + ActualPawn = TgPawn(Pawn); + // End:0xA5 + if((WorldInfo.TimeSeconds - LastActiveTime) >= 15.0000000) + { + // End:0xA2 + if((ActualPawn != none) && !ActualPawn.r_bIsAFK) + { + ServerToggleAFK(true); + } + } + else + { + // End:0xE3 + if((ActualPawn != none) && ActualPawn.r_bIsAFK) + { + ServerToggleAFK(false); + } + } + // End:0x29B + if(m_IsTimeDilationInterpolating) + { + m_TimeDilationUsedSeconds += (DeltaTime / WorldInfo.TimeDilation); + // End:0x1D3 + if(!m_TimeDilationFromTo.Y ~= WorldInfo.TimeDilation && m_TimeDilationInterpolateSeconds > float(0)) + { + NewTimeDilation = Lerp(m_TimeDilationFromTo.X, m_TimeDilationFromTo.Y, m_TimeDilationUsedSeconds / m_TimeDilationInterpolateSeconds); + } + else + { + NewTimeDilation = m_TimeDilationFromTo.Y; + m_IsTimeDilationInterpolating = false; + } + // End:0x269 + if(WorldInfo.Game != none) + { + WorldInfo.Game.SetGameSpeed(NewTimeDilation); + } + else + { + WorldInfo.TimeDilation = NewTimeDilation; + } + SetAkWorldTimeDilation(); + } + // End:0x433 + if(m_IsDesaturationInterpolating) + { + m_DesaturationUsedSeconds += (DeltaTime / WorldInfo.TimeDilation); + // End:0x3D9 + if(!m_DesaturationFromTo.Y ~= WorldInfo.DefaultPostProcessSettings.Scene_Desaturation && m_DesaturationInterpolateSeconds > float(0)) + { + DesaturationT = m_DesaturationUsedSeconds / m_DesaturationInterpolateSeconds; + WorldInfo.DefaultPostProcessSettings.Scene_Desaturation = Lerp(m_DesaturationFromTo.X, m_DesaturationFromTo.Y, DesaturationT); + } + else + { + WorldInfo.DefaultPostProcessSettings.Scene_Desaturation = m_DesaturationFromTo.Y; + m_IsDesaturationInterpolating = false; + } + } + // End:0x482 + if(m_bIsTrackingAimTowardTargetLocation && IsTargetInPawnAim(m_TrackingTargetLocation, m_fTrackingTargetMaxAimDistDiff)) + { + m_bIsTrackingAimTowardTargetLocation = false; + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_LookAtReceived', self); + } + //return; +} + +function GoAFKTimer() +{ + // End:0x42 + if(WorldInfo != none) + { + LastActiveTime = WorldInfo.TimeSeconds - c_fTimeTillAFK; + } + //return; +} + +unreliable server function ServerToggleAFK(bool bEnabled) +{ + local TgPawn ThePawn; + + ThePawn = TgPawn(Pawn); + // End:0x6D + if((ThePawn != none) && CanAFK(ThePawn)) + { + ThePawn.r_bIsAFK = bEnabled; + } + //return; +} + +function bool CanAFK(TgPawn ThePawn) +{ + return !IsSpectating(); + //return ReturnValue; +} + +exec function DisplayHiddenActors(optional float Time) +{ + // End:0x21 + if(Time == 0.0000000) + { + DisplayHiddenActorsTimer(); + } + else + { + SetTimer(Time, false, 'DisplayHiddenActorsTimer'); + } + //return; +} + +function DisplayHiddenActorsTimer() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x31 [Loop If] + if(I < HiddenActors.Length) + { + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +reliable client simulated function ClientSetOnlineStatus() +{ + local LocalPlayer LP; + local TgObject.TG_GAME_TYPE GameType; + local string PresenceId; + local int GameModeId; + + LP = LocalPlayer(Player); + GameType = 22; + GameModeId = 0; + // End:0x76 + if(WorldInfo.bIsMenuLevel) + { + PresenceId = "in_lobby"; + SendSessionEnd(); + } + else + { + // End:0xB2 + if(WorldInfo.GRI == none) + { + SetTimer(2.0000000, false, 'ClientSetOnlineStatus'); + return; + } + else + { + GameType = TgRepInfo_Game(WorldInfo.GRI).r_GameType; + GameModeId = 0; + switch(GameType) + { + // End:0x146 + case 29: + PresenceId = "in_siege_training"; + GameModeId = 1; + // End:0x24A + break; + // End:0x179 + case 27: + PresenceId = "in_payload_training"; + GameModeId = 2; + // End:0x24A + break; + // End:0x1A4 + case 35: + PresenceId = "in_training"; + GameModeId = 3; + // End:0x24A + break; + // End:0x1D4 + case 34: + PresenceId = "in_shootingrange"; + GameModeId = 4; + // End:0x24A + break; + // End:0x1FC + case 28: + PresenceId = "in_siege"; + GameModeId = 5; + // End:0x24A + break; + // End:0x226 + case 26: + PresenceId = "in_payload"; + GameModeId = 6; + // End:0x24A + break; + // End:0xFFFF + default: + PresenceId = "in_game"; + GameModeId = 0; + // End:0x24A + break; + break; + } + SendSessionStart(GameModeId); + } + } + // End:0x314 + if(((OnlineSub != none) && NotEqual_InterfaceInterface(OnlineSub.PlayerInterface, OnlinePlayerInterface(none))) && PresenceId != "") + { + OnlineSub.PlayerInterface.SetOnlineStatus(byte(LP.ControllerId), PresenceId, true); + } + //return; +} + +simulated event Rotator ApplyAimVectorModification(TgDevice Device, Rotator InRotation) +{ + local TgPlayerInput TgPlayerInput; + + TgPlayerInput = TgPlayerInput(PlayerInput); + // End:0x60 + if(TgPlayerInput != none) + { + return TgPlayerInput.ApplyAimVectorModification(Device, InRotation); + } + else + { + return InRotation; + } + //return ReturnValue; +} + +simulated function Rotator GetAdjustedAimFor(Weapon W, Vector StartFireLoc) +{ + local Rotator AdjustedAim; + + AdjustedAim = ((Pawn != none) ? Pawn.GetBaseAimRotation(W) : Rotation); + return AdjustedAim; + //return ReturnValue; +} + +function bool IsTargetInFrontOfPawn(Vector TargetLocation) +{ + local Vector FacingDir, LookingDir; + local float Orientation; + + FacingDir = Normal(Vector(Pawn.Rotation)); + LookingDir = Normal(TargetLocation - Pawn.Location); + Orientation = FacingDir Dot LookingDir; + return Orientation >= float(0); + //return ReturnValue; +} + +function bool IsTargetInPawnAim(Vector TargetLocation, float MaxAimFeetOffset) +{ + local Vector PawnAimLocation, PawnAim, TowardTarget; + local float FacingOrientation, AimDistToPoint; + + PawnAimLocation = Pawn.GetPawnViewLocation(); + PawnAim = Vector(Pawn.GetViewRotation()); + TowardTarget = Normal(TargetLocation - PawnAimLocation); + FacingOrientation = PawnAim Dot TowardTarget; + // End:0xA7 + if(FacingOrientation <= 0.0000000) + { + return false; + } + AimDistToPoint = PointDistToLine(TargetLocation, PawnAim, PawnAimLocation) / float(16); + return AimDistToPoint < MaxAimFeetOffset; + //return ReturnValue; +} + +function bool IsTargetDied(Actor TargetActor) +{ + // End:0x38 + if((TargetActor == none) || !TargetActor.IsA('TgPawn')) + { + return true; + } + return TgPawn(TargetActor).Health < 2; + //return ReturnValue; +} + +function bool IsValidTarget(Actor HoverActor) +{ + return ((HoverActor != none) && HoverActor.IsA('Pawn')) && HoverActor != Pawn; + //return ReturnValue; +} + +function TgDeviceFire GetEqPointDevFire() +{ + local TgDevice Dev; + + // End:0x37 + if((Pawn == none) || Pawn.Weapon == none) + { + return none; + } + Dev = TgDevice(Pawn.Weapon); + return Dev.m_FireMode[int(Dev.CurrentFireMode)]; + //return ReturnValue; +} + +function TgDevice GetEqPointDevice(TgObject.TG_EQUIP_POINT eEqPoint) +{ + // End:0x2B + if((Pawn == none) || TgPawn(Pawn) == none) + { + return none; + } + // End:0x57 + if((int(eEqPoint) <= int(0)) || int(eEqPoint) >= int(33)) + { + return none; + } + return TgPawn(Pawn).GetDeviceByEqPoint(int(eEqPoint)); + //return ReturnValue; +} + +simulated function TgObject.TG_EQUIP_POINT GetCurrentEqPoint() +{ + // End:0x72 + if((Pawn != none) && Pawn.Weapon != none) + { + return TgDevice(Pawn.Weapon).r_eEquippedAt; + } + return 0; + //return ReturnValue; +} + +simulated function int GetCurrentDeviceType() +{ + // End:0x72 + if((Pawn != none) && Pawn.Weapon != none) + { + return TgDevice(Pawn.Weapon).m_nDeviceType; + } + return 0; + //return ReturnValue; +} + +reliable server function ServerToggleSceneCaptureState() +{ + // End:0x23 + if(!IsInState('PlayerUpdateMiniMap')) + { + GotoState('PlayerUpdateMiniMap'); + } + else + { + GotoState('PlayerWalking'); + } + //return; +} + +simulated function ShowChampionOverviewTip() +{ + // End:0x0F + if(c_GameTipManager != none) + { + } + //return; +} + +simulated event PostBeginPlay() +{ + local TgMapInfo TgMapInfo; + local StaticMeshActor PathOverlayActor; + local TgGame_Paladins ChaosGame; + local float fNormalize; + + // End:0x71 + if((c_TgAkAudio == none) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + c_TgAkAudio = new (self) Class'TgGame.TgAkAudioManagement'; + c_TgAkAudio.Initialize(); + } + fNormalize = 0.0000000; + fNormalize += m_fThreatCoefficientProximity; + fNormalize += m_fThreatCoefficientOcclusion; + fNormalize += m_fThreatCoefficientBinnedOcclusion; + fNormalize += m_fThreatCoefficientUlt; + fNormalize += m_fThreatCoefficientShotAt; + fNormalize += m_fThreatCoefficientSeenBy; + fNormalize += m_fThreatCoefficientDamaged; + fNormalize += m_fThreatCoefficientFocused; + fNormalize += m_fThreatCoefficientFocusTarget; + fNormalize += m_fThreatCoefficientInEffectiveRange; + fNormalize += m_fThreatCoefficientBehind; + // End:0x189 + if(fNormalize != 0.0000000) + { + fNormalize = 1.0000000 / fNormalize; + } + m_fThreatCoefficientProximity *= fNormalize; + m_fThreatCoefficientOcclusion *= fNormalize; + m_fThreatCoefficientBinnedOcclusion *= fNormalize; + m_fThreatCoefficientUlt *= fNormalize; + m_fThreatCoefficientShotAt *= fNormalize; + m_fThreatCoefficientSeenBy *= fNormalize; + m_fThreatCoefficientDamaged *= fNormalize; + m_fThreatCoefficientFocused *= fNormalize; + m_fThreatCoefficientFocusTarget *= fNormalize; + m_fThreatCoefficientBehind *= fNormalize; + m_fThreatCoefficientInEffectiveRange *= fNormalize; + SetAllInputAllowed(true); + super(PlayerController).PostBeginPlay(); + m_TimeDilationFromTo = vect2d(1.0000000, 1.0000000); + m_TimeDilationInterpolateSeconds = 0.0000000; + m_TimeDilationUsedSeconds = 0.0000000; + SwitchControl(DefaultControlModuleClass); + // End:0x326 + if((c_GameTipManager == none) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + c_GameTipManager = Spawn(Class'TgGame.TgGameTipManager', self); + } + // End:0x397 + if((c_SubtitledMessages == none) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + c_SubtitledMessages = new (self) Class'TgGame.TgSubtitledMessages'; + c_SubtitledMessages.Init(); + } + s_bAddDeadTimeStatsTracker = true; + StartFX(); + AnnouncerReset(); + // End:0x50D + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + TgMapInfo = TgMapInfo(WorldInfo.GetMapInfo()); + // End:0x503 + if((TgMapInfo != none) && TgMapInfo.m_OverlayPathMesh != none) + { + PathOverlayActor = TgMapInfo.m_OverlayPathMesh; + // End:0x503 + if((PathOverlayActor != none) && PathOverlayActor.StaticMeshComponent != none) + { + m_OverlayPathMaterial = PathOverlayActor.StaticMeshComponent.CreateAndSetMaterialInstanceConstant(0); + PathOverlayActor.SetHidden(true); + } + } + UpdateAssistModeSubLevel(); + } + SetRTPCValue('IsPosition3D', 0.0000000); + // End:0x5A2 + if(int(Role) == int(ROLE_Authority)) + { + ChaosGame = TgGame_Paladins(WorldInfo.Game); + // End:0x5A2 + if(ChaosGame != none) + { + ChaosGame.InitializeCreditsFor(TgPaladinsController(self)); + } + } + //return; +} + +simulated function SwitchControl(Class ControlModuleClass) +{ + local TgControlModule NewControlModule; + + // End:0x9D + if(ControlModuleClass == none) + { + // End:0x8A + if((TgPawn(Pawn) != none) && TgPawn(Pawn).DefaultControlModuleClass != none) + { + ControlModuleClass = TgPawn(Pawn).DefaultControlModuleClass; + } + else + { + ControlModuleClass = DefaultControlModuleClass; + } + } + NewControlModule = new (Outer) ControlModuleClass; + NewControlModule.Controller = self; + NewControlModule.Init(); + // End:0x15E + if(ControlModule != none) + { + ControlModule.OnBecomeInActive(NewControlModule); + NewControlModule.OnBecomeActive(ControlModule); + } + else + { + NewControlModule.OnBecomeActive(none); + } + ControlModule = NewControlModule; + //return; +} + +exec function SwitchCamera(string sCamera) +{ + local TgPlayerCamera TgCamera; + local TgCameraModule newCameraMod; + + // End:0x19 + if(PlayerCamera == none) + { + SpawnPlayerCamera(); + } + TgCamera = TgPlayerCamera(PlayerCamera); + switch(sCamera) + { + // End:0xAA + case "third": + newCameraMod = TgCamera.SwitchCameras(Class'TgGame.TgCameraModule_ThirdPerson'); + // End:0xA7 + if(newCameraMod != none) + { + SwitchControl(Class'TgGame.TgControlModule_ThirdPerson'); + } + // End:0x2F8 + break; + // End:0x10B + case "erez": + newCameraMod = TgCamera.SwitchCameras(Class'TgGame.TgCameraModule_ThirdPersonVariableHeight'); + // End:0x108 + if(newCameraMod != none) + { + SwitchControl(Class'TgGame.TgControlModule_ThirdPerson'); + } + // End:0x2F8 + break; + // End:0x16C + case "dead": + newCameraMod = TgCamera.SwitchCameras(Class'TgGame.TgCameraModule_Dead'); + // End:0x169 + if(newCameraMod != none) + { + SwitchControl(Class'TgGame.TgControlModule_Dead'); + } + // End:0x2F8 + break; + // End:0x1D7 + case "falloutofworld": + newCameraMod = TgCamera.SwitchCameras(Class'TgGame.TgCameraModule_FallOutOfWorld'); + // End:0x1D4 + if(newCameraMod != none) + { + SwitchControl(Class'TgGame.TgControlModule_Dead'); + } + // End:0x2F8 + break; + // End:0x232 + case "engine": + newCameraMod = TgCamera.SwitchCameras(none); + // End:0x22F + if(newCameraMod != none) + { + SwitchControl(Class'TgGame.TgControlModule_BaseEngine'); + } + // End:0x2F8 + break; + // End:0x292 + case "iso": + newCameraMod = TgCamera.SwitchCameras(Class'TgGame.TgCameraModule_SpectatorOverview'); + // End:0x28F + if(newCameraMod != none) + { + SwitchControl(Class'TgGame.TgControlModule_SpectatorOverview'); + } + // End:0x2F8 + break; + // End:0x29E + case "default": + // End:0x2A8 + case "reset": + // End:0x2F5 + case "": + newCameraMod = TgCamera.SwitchCameras(none); + // End:0x2F2 + if(newCameraMod != none) + { + SwitchControl(none); + } + // End:0x2F8 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +function int PushCameraPosture(TgPlayerController.TG_CAMERAPOSTURE eCamPosture) +{ + local int I, NewPostureGUID; + local bool WasInserted; + + WasInserted = false; + NewPostureGUID = c_nNextCameraStackId++; + I = 0; + J0x2C: + + // End:0x10E [Loop If] + if(I < c_CameraStack.Length) + { + // End:0x100 + if(int(c_CameraStack[I].ePosture) > int(eCamPosture)) + { + c_CameraStack.Insert(I, 1); + c_CameraStack[I].ePosture = eCamPosture; + c_CameraStack[I].nStackId = NewPostureGUID; + WasInserted = true; + // [Explicit Break] + goto J0x10E; + } + ++I; + // [Loop Continue] + goto J0x2C; + } + J0x10E: + + // End:0x1AE + if(!WasInserted) + { + c_CameraStack.Add(1); + c_CameraStack[c_CameraStack.Length - 1].ePosture = eCamPosture; + c_CameraStack[c_CameraStack.Length - 1].nStackId = NewPostureGUID; + c_eCameraPosture = eCamPosture; + OnCameraPostureChange(); + } + return NewPostureGUID; + //return ReturnValue; +} + +function bool PopCameraPosture(int nStackId) +{ + local int Index; + + Index = c_CameraStack.Find('nStackId', nStackId); + // End:0x124 + if(Index != -1) + { + c_CameraStack.Remove(Index, 1); + // End:0x122 + if(c_CameraStack.Length <= Index) + { + // End:0xF8 + if((c_CameraStack.Length > 0) && int(c_CameraStack[c_CameraStack.Length - 1].ePosture) != int(c_eCameraPosture)) + { + c_eCameraPosture = c_CameraStack[c_CameraStack.Length - 1].ePosture; + OnCameraPostureChange(); + } + else + { + // End:0x122 + if(int(c_eCameraPosture) != int(0)) + { + c_eCameraPosture = 0; + OnCameraPostureChange(); + } + } + } + return true; + } + return false; + //return ReturnValue; +} + +function OnCameraPostureChange() +{ + //return; +} + +simulated event ReceivedPlayer() +{ + local TgClientSettings Settings; + local TgLocalPlayer LP; + local bool bEnableColorBlindEffect; + + super(PlayerController).ReceivedPlayer(); + // End:0x154 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + LP = TgLocalPlayer(Player); + // End:0x7D + if(LP != none) + { + LP.InitPostProcessingChain(); + } + Settings = GetClientSettings(); + // End:0x154 + if(Settings != none) + { + bEnableColorBlindEffect = ((int(Settings.SelectedColorBlindOption) != int(0)) ? true : false); + EnableColorBlindEffect(bEnableColorBlindEffect, int(Settings.SelectedColorBlindOption), Settings.ColorBlindModeShaderSimulateMode); + ServerSetAutoPurchase(Settings.AutoPurchase); + } + } + //return; +} + +simulated event OnSettingsChanged(TgClientSettings Settings, optional int settingsType) +{ + local bool bEnableColorBlindEffect; + + // End:0xF8 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && Settings != none) + { + bEnableColorBlindEffect = ((int(Settings.SelectedColorBlindOption) != int(0)) ? true : false); + EnableColorBlindEffect(bEnableColorBlindEffect, int(Settings.SelectedColorBlindOption), Settings.ColorBlindModeShaderSimulateMode); + ControlModule.OnSettingsChanged(Settings); + UpdateAssistModeSubLevel(); + } + //return; +} + +exec function EnableColorBlindEffect(optional bool bEnable = true, optional int Type = 1, optional bool bSimulate = false) +{ + local TgLocalPlayer LP; + + LP = TgLocalPlayer(Player); + // End:0x76 + if(LP != none) + { + LP.EnableColorBlindEffect(bEnable, Type, bSimulate); + } + //return; +} + +simulated function UpdateAssistModeSubLevel() +{ + local TgClientSettings Settings; + + Settings = GetClientSettings(); + // End:0x107 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && Settings != none) + { + // End:0x97 + if(!c_bAssistModeSublevelLoaded && Settings.LoadAssistModeSubLevel) + { + CauseClientEvent('AssistModeOn'); + } + else + { + // End:0xDD + if(c_bAssistModeSublevelLoaded && !Settings.LoadAssistModeSubLevel) + { + CauseClientEvent('AssistModeOff'); + } + } + c_bAssistModeSublevelLoaded = Settings.LoadAssistModeSubLevel; + } + //return; +} + +event NotifyJumpApex() +{ + //return; +} + +function CheckJumpOrDuck() +{ + local TgPawn TgP; + + TgP = TgPawn(Pawn); + // End:0x78 + if(bPressedJump && TgP != none) + { + TgP.DoJump(true, TgP.JumpZ); + } + //return; +} + +exec function SetReadyToPlay() +{ + ServerSetReadyToPlay(); + ClientSetReadyState(true); + //return; +} + +reliable server function ServerSetReadyToPlay() +{ + PlayerReplicationInfo.bReadyToPlay = true; + EnterStartState(); + //return; +} + +reliable client simulated function ClientSetReadyState(bool bReadyToPlay) +{ + GotoState('PlayerWaiting'); + //return; +} + +function PawnDied(Pawn P) +{ + // End:0x1F + if(GetStateName() != 'RoundEnded') + { + GotoState('Dead'); + } + //return; +} + +simulated function OnCanPurchaseItemChange() +{ + UpdatePlayerVitalsUI(); + //return; +} + +simulated event UpdateFirstValidProjIdx() +{ + c_nLastFlashSimProjIdx = r_nFirstValidProjIdx - 1; + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x23 + if(VarName == 'r_nFirstValidProjIdx') + { + UpdateFirstValidProjIdx(); + return; + } + // End:0x46 + if(VarName == 'r_nFlashSimProjIdx') + { + HandleSimulatedProjectile(); + return; + } + // End:0x69 + if(VarName == 'r_nXp') + { + SendUIXpChange(); + return; + } + // End:0xA5 + if((VarName == 'r_bCanPurchaseItems') || VarName == 'r_nStatPoints') + { + OnCanPurchaseItemChange(); + return; + } + // End:0xC8 + if(VarName == 'r_nCurrency') + { + SendUICurrencyChange(); + return; + } + // End:0xF6 + if(VarName == 'r_bAutoPurchase') + { + SetAutoPurchaseFlag(r_bAutoPurchase); + return; + } + // End:0x124 + if(VarName == 'r_bAutoSkillUp') + { + SetAutoSkillUpFlag(r_bAutoSkillUp); + return; + } + // End:0x152 + if(VarName == 'r_bToggleZoom') + { + SetToggleZoomFlag(r_bToggleZoom); + return; + } + // End:0x175 + if(VarName == 'r_TutorialBlockedClientActions') + { + ClientUpdateTutorialBlockingActions(); + return; + } + // End:0x1A8 + if(VarName == 'PlayerReplicationInfo') + { + CachedPRI = TgRepInfo_Player(PlayerReplicationInfo); + } + super(Controller).ReplicatedEvent(VarName); + //return; +} + +event name GetStateNameEx() +{ + return GetStateName(); + //return ReturnValue; +} + +function ViewObjectiveCamerasTimer() +{ + //return; +} + +reliable client simulated event UpdateReviveTimeRemaining(float fTimeRemaining) +{ + c_fRespawnTime = fTimeRemaining; + QueueReviveTimeChanged(); + //return; +} + +simulated function bool CanUseNow() +{ + local TgPawn P; + + P = TgPawn(Pawn); + // End:0x2D + if(P == none) + { + return false; + } + return !P.IsInFireLock(); + //return ReturnValue; +} + +reliable server function ServerUse() +{ + // End:0x11 + if(!CanUseNow()) + { + return; + } + // End:0x2A + if(!ServerPerformedUseAction()) + { + ClientUse(); + } + //return; +} + +reliable client simulated function ClientUse() +{ + // End:0x11 + if(!CanUseNow()) + { + return; + } + ClientPerformedUseAction(); + //return; +} + +function bool ServerPerformedUseAction() +{ + local TgPawn P; + + P = TgPawn(Pawn); + // End:0x2B + if(PerformedUseAction()) + { + return true; + } + // End:0x3C + if(P == none) + { + return false; + } + // End:0x184 + if(P.m_CurrentUseActor != none) + { + // End:0x104 + if(P.m_CurrentUseActor.IsA('TgTrigger_Use')) + { + TgTrigger_Use(P.m_CurrentUseActor).UsedByPawn(P); + P.m_bUseInterrupted = false; + return true; + } + else + { + // End:0x184 + if(P.m_CurrentUseActor.IsA('TgModifyPawnPropertiesVolume')) + { + TgModifyPawnPropertiesVolume(P.m_CurrentUseActor).Used(P); + return true; + } + } + } + return false; + //return ReturnValue; +} + +function bool ClientPerformedUseAction() +{ + local TgPawn P; + + P = TgPawn(Pawn); + // End:0x2D + if(P == none) + { + return false; + } + return false; + //return ReturnValue; +} + +function OnRestartPlayers(TgSeqAct_RestartPlayers inAction) +{ + // End:0x6A + if(TgGame(WorldInfo.Game) != none) + { + TgGame(WorldInfo.Game).Reset(); + } + //return; +} + +function bool ShouldStunChangePhysics() +{ + local TgPawn TgP; + + TgP = TgPawn(Pawn); + return (TgP != none) && int(TgP.Physics) == int(15); + //return ReturnValue; +} + +reliable client simulated function ClientResetStunnedBehavior(bool bStunController, optional Controller.EStunType eType) +{ + Stun(bStunController, eType); + //return; +} + +simulated function Stun(bool bStunController, optional Controller.EStunType eType = 0) +{ + local Controller.EStunType OldStunType; + + OldStunType = m_eCurrentStunType; + m_eCurrentStunType = eType; + // End:0x3F + if(GetStateName() == 'Dead') + { + return; + } + // End:0x94 + if(bStunController) + { + // End:0x6C + if(!IsInState('Unconscious')) + { + GotoState('Unconscious'); + } + // End:0x91 + if(int(m_eCurrentStunType) != int(OldStunType)) + { + StunTypeChanged(); + } + } + else + { + // End:0xB3 + if(GetStateName() == 'Unconscious') + { + GotoState('PlayerWalking'); + } + } + //return; +} + +function StunTypeChanged() +{ + switch(m_eCurrentStunType) + { + // End:0x2E + case 9: + SwitchControl(Class'TgGame.TgControlModule_Feared'); + // End:0x81 + break; + // End:0x49 + case 7: + SwitchControl(Class'TgGame.TgControlModule_StunTaunted'); + // End:0x81 + break; + // End:0x51 + case 5: + // End:0x81 + break; + // End:0x59 + case 0: + // End:0x81 + break; + // End:0x5E + case 6: + // End:0x63 + case 1: + // End:0x68 + case 4: + // End:0xFFFF + default: + SwitchControl(Class'TgGame.TgControlModule_Stunned'); + // End:0x81 + break; + break; + } + //return; +} + +exec function GotoFly() +{ + ServerGotoFly(); + //return; +} + +reliable server function ServerGotoFly() +{ + GotoState('PlayerFlying'); + //return; +} + +exec function KillPets() +{ + ServerKillPets(); + //return; +} + +reliable server function ServerKillPets() +{ + TgPawn(Pawn).KillPets(); + //return; +} + +reliable client simulated function ClientSetValue(string strObject, string strVariable, string StrValue) +{ + SetValue(strObject, strVariable, StrValue); + //return; +} + +reliable server function ServerSetValue(string strObject, string strVariable, string StrValue) +{ + SetValue(strObject, strVariable, StrValue); + //return; +} + +reliable client simulated function ClientGetValue(string strObject, string strVariable) +{ + GetValue(strObject, strVariable); + //return; +} + +reliable server function ServerGetValue(string strObject, string strVariable) +{ + GetValue(strObject, strVariable); + //return; +} + +exec function SetClientValue(string strObject, string strVariable, string StrValue) +{ + ClientSetValue(strObject, strVariable, StrValue); + //return; +} + +exec function SetServerValue(string strObject, string strVariable, string StrValue) +{ + ServerSetValue(strObject, strVariable, StrValue); + //return; +} + +exec function GetClientValue(string strObject, string strVariable) +{ + ClientGetValue(strObject, strVariable); + //return; +} + +exec function GetServerValue(string strObject, string strVariable) +{ + ServerGetValue(strObject, strVariable); + //return; +} + +exec function StorePlayOfGame(optional float Begin = -5.0000000, optional float End = 2.0000000) +{ + ServerStorePlayOfGame(Begin, End); + //return; +} + +reliable server function ServerStorePlayOfGame(float Begin, float End) +{ + SavePlayOfGame(Begin, End); + //return; +} + +// Export UTgPlayerController::execSavePlayOfGame(FFrame&, void* const) +native function SavePlayOfGame(float Begin, float End); + +exec function StartTimelapse(optional float Begin = -5.0000000, optional float End = 2.0000000, optional bool bPlayOfGame = false, optional bool bForced = true) +{ + ScriptTrace(); + // End:0x5F + if(bForced) + { + bForcedTimelapseRequested = !bPlayOfGame; + bForcedPlayOfGameRequested = bPlayOfGame; + } + ServerStartTimelapse(Begin, End, bPlayOfGame, bForced); + //return; +} + +reliable server function ServerStartTimelapse(float Begin, float End, bool bPlayOfGame, optional bool bForced = false) +{ + // End:0x3E + if(bForced) + { + bForcedTimelapseRequested = !bPlayOfGame; + bForcedPlayOfGameRequested = bPlayOfGame; + } + StartTimelapsePlayback(Begin, End, bPlayOfGame); + //return; +} + +// Export UTgPlayerController::execStartTimelapsePlayback(FFrame&, void* const) +native function StartTimelapsePlayback(float BeginTimeOffset, float EndTimeOffset, optional bool bPlayOfGame); + +function StartPlayOfTheGamePlaybackDelayed() +{ + StartTimelapse(0.0000000, 0.0000000, true, true); + //return; +} + +event StartPlayOfGamePlayback() +{ + SetTimer(2.0000000, false, 'StartPlayOfTheGamePlaybackDelayed'); + //return; +} + +// Export UTgPlayerController::execClientDebugPlayPotg(FFrame&, void* const) +reliable client native simulated function ClientDebugPlayPotg(); + +event ControllerPreTimeLapse() +{ + local Actor KillCamViewTarget; + local array AllTimeLapseEvents; + local TgSeqEvent_TimeLapse TimeLapseEvt; + local Sequence GameSeq; + local int Idx; + local array ActivateIndices; + + DestroySimulatedProjectiles(); + KillCamViewTarget = GetBestKillCamTarget(); + // End:0x41 + if(!CanPlayKillCam(bIsTimelapsePlayOfTheGame)) + { + SkipKillCam(); + } + // End:0x64 + if(KillCamViewTarget != none) + { + SetViewTarget(KillCamViewTarget); + } + TgPlayerCamera(PlayerCamera).SwitchCameras(Class'TgGame.TgCameraModule_SpectatorFirstPerson'); + UIFade(false, m_fWatchOthersFadeFromBlackCamTime); + GameSeq = WorldInfo.GetGameSequence(); + // End:0x1B6 + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_TimeLapse', true, AllTimeLapseEvents); + ActivateIndices.AddItem(0); + Idx = 0; + J0x12F: + + // End:0x1B6 [Loop If] + if(Idx < AllTimeLapseEvents.Length) + { + TimeLapseEvt = TgSeqEvent_TimeLapse(AllTimeLapseEvents[Idx]); + // End:0x1A8 + if(TimeLapseEvt != none) + { + TimeLapseEvt.CheckActivate(self, self, false, ActivateIndices); + } + Idx++; + // [Loop Continue] + goto J0x12F; + } + } + super(PlayerController).ControllerPreTimeLapse(); + OnPreTimeLapse(); + //return; +} + +event ControllerPostTimeLapse() +{ + local TgPlayerCamera Cam; + local array AllTimeLapseEvents; + local TgSeqEvent_TimeLapse TimeLapseEvt; + local Sequence GameSeq; + local int Idx; + local array ActivateIndices; + + DestroySimulatedProjectiles(); + SetViewTarget(Pawn); + SetHUDOverlay(0); + ClearKillCamTarget(); + Cam = TgPlayerCamera(PlayerCamera); + // End:0xA7 + if(Cam != none) + { + Cam.SwitchCameras(Class'TgGame.TgCameraModule_ThirdPerson'); + Cam.ResetFOV(); + } + GameSeq = WorldInfo.GetGameSequence(); + // End:0x1B1 + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_TimeLapse', true, AllTimeLapseEvents); + ActivateIndices.AddItem(1); + Idx = 0; + J0x12A: + + // End:0x1B1 [Loop If] + if(Idx < AllTimeLapseEvents.Length) + { + TimeLapseEvt = TgSeqEvent_TimeLapse(AllTimeLapseEvents[Idx]); + // End:0x1A3 + if(TimeLapseEvt != none) + { + TimeLapseEvt.CheckActivate(self, self, false, ActivateIndices); + } + Idx++; + // [Loop Continue] + goto J0x12A; + } + } + super(PlayerController).ControllerPostTimeLapse(); + OnPostTimeLapse(); + //return; +} + +// Export UTgPlayerController::execOnPreTimeLapse(FFrame&, void* const) +native function OnPreTimeLapse(); + +// Export UTgPlayerController::execOnPostTimeLapse(FFrame&, void* const) +native function OnPostTimeLapse(); + +simulated function DestroySimulatedProjectiles() +{ + local TgRepInfo_Game GRI; + local int I; + + // End:0x2B + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + return; + } + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x152 + if(GRI != none) + { + // End:0x152 + if(GRI.m_Projectiles.Length > 0) + { + I = GRI.m_Projectiles.Length - 1; + J0xBC: + + // End:0x152 [Loop If] + if(I >= 0) + { + // End:0x144 + if(GRI.m_Projectiles[I].IsA('TgProj_Simulated')) + { + GRI.m_Projectiles[I].Destroy(); + } + I--; + // [Loop Continue] + goto J0xBC; + } + } + } + //return; +} + +event NotifyDirectorControl(bool bNowControlling, SeqAct_Interp CurrentMatinee, float fFadeTime) +{ + // End:0x4A + if(bNowControlling) + { + // End:0x34 + if(fFadeTime > 0.0000000) + { + DoFade(true, fFadeTime); + } + m_CurrentDirectorMatinee = CurrentMatinee; + } + else + { + // End:0x71 + if(fFadeTime > 0.0000000) + { + DoFade(false, fFadeTime); + } + m_CurrentDirectorMatinee = none; + } + super(PlayerController).NotifyDirectorControl(bNowControlling, CurrentMatinee, fFadeTime); + //return; +} + +simulated event ClientKillCurrentDirectorMatinee() +{ + KillCurrentDirectorMatinee(); + ServerKillCurrentDirectorMatinee(); + //return; +} + +reliable server function ServerKillCurrentDirectorMatinee() +{ + KillCurrentDirectorMatinee(); + //return; +} + +// Export UTgPlayerController::execKillCurrentDirectorMatinee(FFrame&, void* const) +native simulated function KillCurrentDirectorMatinee(); + +function SetKillCamTarget(TgPawn KillCamTarget) +{ + // End:0x16F + if(int(Role) == int(ROLE_Authority)) + { + m_nKillCamTargetId = ((KillCamTarget != none) ? KillCamTarget.r_nPawnId : default.m_nKillCamTargetId); + // End:0x13F + if((m_nKillCamTargetId != default.m_nKillCamTargetId) && KillCamTarget.IsPet()) + { + J0x91: + + // End:0xE0 [Loop If] + if(KillCamTarget.r_Owner != none) + { + KillCamTarget = KillCamTarget.r_Owner; + // [Loop Continue] + goto J0x91; + } + m_nKillCamTargetBackupId = ((KillCamTarget.r_nPawnId != m_nKillCamTargetId) ? KillCamTarget.r_nPawnId : default.m_nKillCamTargetBackupId); + } + // End:0x16F + if(int(RemoteRole) == int(ROLE_AutonomousProxy)) + { + ClientSetKillCamTarget(m_nKillCamTargetId, m_nKillCamTargetBackupId); + } + } + //return; +} + +reliable client simulated function ClientSetKillCamTarget(int KillCamTargetId, int BackupKillCamTargetId) +{ + m_nKillCamTargetId = KillCamTargetId; + m_nKillCamTargetBackupId = BackupKillCamTargetId; + //return; +} + +function ClearKillCamTarget() +{ + m_nKillCamTargetId = default.m_nKillCamTargetId; + m_nKillCamTargetBackupId = default.m_nKillCamTargetBackupId; + //return; +} + +function ForceKillCamViewTargetChange(optional Actor ForceTarget) +{ + local Actor BestTarget; + + // End:0x26 + if(ForceTarget != none) + { + SetViewTarget(ForceTarget); + return; + } + BestTarget = GetBestKillCamTarget(); + // End:0x69 + if(BestTarget != (GetViewTarget())) + { + SetViewTarget(BestTarget); + } + else + { + SetViewTarget(Pawn); + } + //return; +} + +reliable server function ServerSkipKillCam() +{ + EndTimelapsePlayback(); + //return; +} + +// Export UTgPlayerController::execEndTimelapsePlayback(FFrame&, void* const) +native function EndTimelapsePlayback(); + +exec event SkipKillCam() +{ + // End:0x52 + if(WorldInfo.IsPlayingTimelapse() && !WorldInfo.IsTimelapsePlayOfTheGame()) + { + ServerSkipKillCam(); + } + //return; +} + +exec function ViewNextTeammate() +{ + ServerCycleTeammateView(true); + //return; +} + +exec function ViewPreviousTeammate() +{ + ServerCycleTeammateView(false); + //return; +} + +reliable server function ServerCycleTeammateView(bool bForward) +{ + local TgPawn OldViewTarget; + local TgRepInfo_Player NewViewTargetPRI, PRI; + local TgRepInfo_TaskForce TRI; + local TgPlayerController NewViewTargetPC; + local TgPawn NewViewTargetPawn; + + PRI = CachedPRI; + // End:0x24 + if(PRI == none) + { + return; + } + TRI = PRI.r_TaskForce; + // End:0x5D + if(TRI == none) + { + return; + } + OldViewTarget = TgPawn(GetViewTarget()); + // End:0xA5 + if(OldViewTarget == none) + { + OldViewTarget = TgPawn(Pawn); + } + NewViewTargetPRI = TRI.CycleFrom(OldViewTarget.GetPRI(), bForward); + // End:0x18A + if(NewViewTargetPRI != none) + { + NewViewTargetPC = TgPlayerController(NewViewTargetPRI.Owner); + // End:0x18A + if(NewViewTargetPC != none) + { + NewViewTargetPawn = TgPawn(NewViewTargetPC.Pawn); + ServerSetViewTarget(NewViewTargetPawn); + } + } + //return; +} + +function TgRepInfo_TaskForce GetTFRI() +{ + local TgRepInfo_Player PRI; + + PRI = CachedPRI; + // End:0x41 + if(CachedPRI != none) + { + return PRI.r_TaskForce; + } + return none; + //return ReturnValue; +} + +simulated function bool CanPlayerMove(Pawn P) +{ + return ((P != none) && TgPawn(P) != none) && TgPawn(P).CanMove(); + //return ReturnValue; +} + +exec function TestCrash() +{ + TestCrashReport(); + //return; +} + +exec function DumpClassInfo(string sClassName) +{ + DumpClassInfoToFile(sClassName); + //return; +} + +simulated function SpeakTTS(coerce string S, optional PlayerReplicationInfo PRI) +{ + //return; +} + +private final simulated function bool CanCommunicate() +{ + return true; + //return ReturnValue; +} + +reliable server event ServerUpdateStats() +{ + local TgPawn myPawn; + + myPawn = TgPawn(Pawn); + // End:0x4A + if(myPawn != none) + { + myPawn.UpdateHUDScores(); + } + //return; +} + +event CheatFly(bool bOn) +{ + // End:0x7D + if(!bCheatFlying && bOn) + { + // End:0x6E + if((Pawn != none) && Pawn.CheatGhost()) + { + bCheatFlying = true; + GotoState('PlayerFlying'); + } + else + { + bCollideWorld = false; + } + } + else + { + // End:0xE5 + if(bCheatFlying && !bOn) + { + bCheatFlying = false; + // End:0xE5 + if((Pawn != none) && Pawn.CheatWalk()) + { + Restart(false); + } + } + } + ClientCheatFly(bCheatFlying); + //return; +} + +reliable client simulated function ClientCheatFly(bool bOn) +{ + // End:0x7D + if(!bCheatFlying && bOn) + { + // End:0x6E + if((Pawn != none) && Pawn.CheatGhost()) + { + bCheatFlying = true; + GotoState('PlayerFlying'); + } + else + { + bCollideWorld = false; + } + } + else + { + // End:0xE5 + if(bCheatFlying && !bOn) + { + bCheatFlying = false; + // End:0xE5 + if((Pawn != none) && Pawn.CheatWalk()) + { + Restart(false); + } + } + } + //return; +} + +exec function Camera(name NewMode) +{ + ServerCamera(NewMode); + //return; +} + +reliable server function ServerCamera(name NewMode) +{ + SetCameraMode(NewMode); + ClientSetCameraMode(NewMode); + //return; +} + +reliable client simulated function ClientSetCameraMode(name NewCamMode) +{ + // End:0x37 + if(PlayerCamera != none) + { + PlayerCamera.CameraStyle = NewCamMode; + } + switch(NewCamMode) + { + // End:0xB6 + case 'Rove': + // End:0xB3 + if((CheatManager != none) && CheatManager.IsA('GameCheatManager')) + { + GameCheatManager(CheatManager).EnableDebugCamera(false); + } + // End:0xC8 + break; + // End:0xC5 + case 'Attach': + // End:0xC8 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated function OnClientLoadDevices(TgSeqAct_ClientLoadDevices Action) +{ + // End:0x22 + if(Action != none) + { + ClientLoadDevices(Action); + } + //return; +} + +exec function DoFade(bool bInToGameplay, float Time) +{ + ClientSetCameraFade(true, MakeColor(0, 0, 0), ((bInToGameplay) ? vect2d(1.0000000, 0.0000000) : vect2d(0.0000000, 1.0000000)), Time); + //return; +} + +exec function Cloth(bool bEnabled) +{ + local TgKAsset_ClientSideSim ClothActor; + + // End:0x5E + foreach AllActors(Class'TgGame.TgKAsset_ClientSideSim', ClothActor) + { + // End:0x43 + if(bEnabled) + { + ClothActor.SetPhysics(10); + // End:0x5D + continue; + } + ClothActor.SetPhysics(0); + } + //return; +} + +function OnTgCameraShake(TgSeqAct_TgCameraShake inAction) +{ + // End:0x354 + if(inAction.InputLinks[0].bHasImpulse) + { + // End:0x229 + if(inAction.m_CameraShake.m_bRadialShake) + { + // End:0x224 + if(inAction.m_LocationActor != none) + { + Class'Engine.Camera'.static.PlayWorldCameraShake(inAction.m_CameraShake, inAction.m_LocationActor, inAction.m_LocationActor.Location, inAction.m_CameraShake.m_fRadialShake_InnerRadius, inAction.m_CameraShake.m_fRadialShake_OuterRadius, inAction.m_CameraShake.m_fRadialShake_Falloff, inAction.m_CameraShake.m_bDoControllerVibration, inAction.m_CameraShake.m_bOrientTowardRadialEpicenter); + } + else + { + return; + } + } + else + { + ClientPlayCameraShake(inAction.m_CameraShake, inAction.m_CameraShake.m_fShakeScale, inAction.m_CameraShake.m_bDoControllerVibration, inAction.m_CameraShake.m_PlaySpace, ((inAction.m_LocationActor == none) ? rot(0, 0, 0) : inAction.m_LocationActor.Rotation)); + } + } + else + { + ClientStopCameraShake(inAction.m_CameraShake); + } + //return; +} + +exec function TestTgCameraShake(TgCameraShake CameraShake) +{ + PlayTgCameraShake(CameraShake, vect(0.0000000, 0.0000000, 0.0000000), none); + //return; +} + +event PlayTgCameraShake(TgCameraShake CameraShake, Vector Epicenter, Actor ShakeInstigator) +{ + // End:0xF7 + if(CameraShake.m_bRadialShake) + { + Class'Engine.Camera'.static.PlayWorldCameraShake(CameraShake, ShakeInstigator, Epicenter, CameraShake.m_fRadialShake_InnerRadius, CameraShake.m_fRadialShake_OuterRadius, CameraShake.m_fRadialShake_Falloff, CameraShake.m_bDoControllerVibration, CameraShake.m_bOrientTowardRadialEpicenter); + } + else + { + ClientPlayCameraShake(CameraShake, CameraShake.m_fShakeScale, CameraShake.m_bDoControllerVibration, CameraShake.m_PlaySpace); + } + //return; +} + +event StopTgCameraShake(TgCameraShake CameraShake) +{ + ClientStopCameraShake(CameraShake); + //return; +} + +exec function TestShake(int Index) +{ + // End:0x27 + if(m_PreviewCameraShake == none) + { + m_PreviewCameraShake = new Class'TgGame.TgCameraShake'; + } + PlayTgCameraShake(m_PreviewCameraShake, Pawn.Location, Pawn); + //return; +} + +function OnTutorialPlayerAction(TgSeqAct_LogTutorialAction inAction) +{ + LogTutorialAction(inAction.PlayerAction, inAction.EventData); + //return; +} + +reliable server function ServerNotifyTutorialUIEvent(int Evt, int evtData) +{ + TriggerTutorialEvent(Evt, evtData); + //return; +} + +exec event ClientNotifyTutorialUIEvent(int Evt, int evtData) +{ + ServerNotifyTutorialUIEvent(Evt, evtData); + //return; +} + +function OnForceClientTutorialAction(TgSeqAct_ForceClientTutorialAction inAction) +{ + // End:0x62 + if(!HandleTutorialActionOnServer(inAction)) + { + ClientForceTutorialAction(int(inAction.ForcedAction), int(inAction.GameUIElement)); + } + //return; +} + +function OnTutorialHighlighter(TgSeqAct_TutorialHighlighter inAction) +{ + local bool bShow; + + // End:0x46 + if(inAction.InputLinks[0].bHasImpulse) + { + bShow = true; + } + else + { + // End:0x89 + if(inAction.InputLinks[1].bHasImpulse) + { + bShow = false; + } + } + ClientTutorialHighlighter(bShow, int(inAction.GameUIElement)); + //return; +} + +reliable client simulated function ClientForceTutorialAction(int Action, int ActionElement) +{ + HandleForcedClientTutorialAction(Action, ActionElement); + //return; +} + +reliable client simulated function ClientTutorialHighlighter(bool bShow, int highlightedElement) +{ + HandleTutorialHighlighter(bShow, highlightedElement); + //return; +} + +// Export UTgPlayerController::execGivePlayerFullVitals(FFrame&, void* const) +native function GivePlayerFullVitals(); + +function OnGiveFullVitals(TgSeqAct_GiveFullVitals inAction) +{ + GivePlayerFullVitals(); + //return; +} + +exec function AllocateAbilitySkillPoint(TgObject.TG_EQUIP_POINT eqp) +{ + local TgDevice aDev; + local TgPawn aPawn; + + aPawn = TgPawn(Pawn); + // End:0x96 + if(aPawn != none) + { + aDev = aPawn.GetDeviceByEqPoint(int(eqp)); + // End:0x96 + if(aDev != none) + { + AllocateDevicePoint(aDev.r_nDeviceId); + } + } + return; + //return; +} + +event DeviceOnStartBuildup(TgDevice Device) +{ + //return; +} + +event DeviceOnStopBuildup(TgDevice Device, bool WasInterrupted) +{ + local TgPawn TgPawn; + local WeaponMeshSwapStrategy SwapStrategy; + + TgPawn = TgPawn(Pawn); + // End:0x161 + if(((TgPawn != none) && WasInterrupted) && IsLocalPlayerController()) + { + // End:0x161 + if(Device.ShouldSwitchBackToBasicAttackTargeting(GetClientSettings().GetCastMode(TgPawn.r_nProfileId, Device.r_eEquippedAt))) + { + // End:0x161 + if(!Device.m_bHandDevice && Device == TgPawn.c_CurrentTargetingDevice) + { + TgPawn.SetTargetingDevice(TgPawn.GetDeviceByEqPoint(1), SwapStrategy); + } + } + } + //return; +} + +event DeviceOnStartFire(TgDevice Device) +{ + //return; +} + +event DeviceOnStopFire(TgDevice Device, bool WasInterrupted) +{ + local TgPawn TgPawn; + local WeaponMeshSwapStrategy SwapStrategy; + + TgPawn = TgPawn(Pawn); + // End:0x171 + if((TgPawn != none) && IsLocalPlayerController()) + { + // End:0x171 + if(Device.ShouldSwitchBackToBasicAttackTargeting(GetClientSettings().GetCastMode(TgPawn.r_nProfileId, Device.r_eEquippedAt))) + { + // End:0x171 + if(!Device.m_bHandDevice && Device == TgPawn.c_CurrentTargetingDevice) + { + SwapStrategy.RetrieveStrategy = 2; + TgPawn.SetTargetingDevice(TgPawn.GetDeviceByEqPoint(1), SwapStrategy); + } + } + } + //return; +} + +exec function OnRespawnBeaconButtonPressed() +{ + //return; +} + +exec function OnRespawnBeaconButtonReleased() +{ + //return; +} + +exec function OnFlourish() +{ + local TgPawn TgP; + + TgP = TgPawn(Pawn); + // End:0x4A + if(TgP != none) + { + TgP.StartFlourish(); + } + //return; +} + +exec function OnPerCharacterAltPressed() +{ + local TgPawn TgPawn; + local TgObject.TG_EQUIP_POINT EquipPoint; + + TgPawn = TgPawn(Pawn); + // End:0xC2 + if(TgPawn != none) + { + EquipPoint = TgPawn.GetPerCharacterAltEquipPoint(); + // End:0xC2 + if(int(EquipPoint) != int(0)) + { + m_PerCharacterAlt = byte(int(1) - int(m_PerCharacterAlt)); + // End:0xAF + if(int(m_PerCharacterAlt) == int(1)) + { + OnOffhandSlotPressed(EquipPoint); + } + else + { + OnOffhandSlotReleased(EquipPoint); + } + } + } + //return; +} + +// Export UTgPlayerController::execOnOffhandSlotPressed(FFrame&, void* const) +native exec function bool OnOffhandSlotPressed(TgObject.TG_EQUIP_POINT eqp); + +// Export UTgPlayerController::execOnOffhandSlotReleased(FFrame&, void* const) +native exec function bool OnOffhandSlotReleased(TgObject.TG_EQUIP_POINT eqp); + +exec event bool OnDefaultCastOffhandSlotPressed(TgObject.TG_EQUIP_POINT eqp) +{ + local TgDevice newDev; + local bool Success; + local byte bySuccess; + local TgPawn TgPawn; + local TgObject.EDeviceFailType failType; + local WeaponMeshSwapStrategy SwapStrategy; + + TgPawn = TgPawn(Pawn); + // End:0x76 + if((int(eqp) == int(23)) && !TgRepInfo_Game(WorldInfo.GRI).AllowPlayerMounting()) + { + return false; + } + // End:0x87 + if(TgPawn == none) + { + return false; + } + Success = false; + eqp = TgPawn.OverrideOffhandSlot(eqp); + newDev = TgPawn.GetDeviceByEqPoint(int(eqp)); + // End:0x126 + if(TgPawn.OnMountCancelOffhandSlotPressed(newDev)) + { + return false; + } + // End:0x137 + if(newDev == none) + { + return false; + } + // End:0x15B + if(newDev.m_bHandDevice) + { + return false; + } + // End:0x19B + if(newDev.CheckReactivationToggleLogic(bySuccess)) + { + return int(bySuccess) != int(0); + } + else + { + // End:0x372 + if(newDev.UsesTargetingMode()) + { + // End:0x275 + if(TgPawn.c_CurrentTargetingDevice == newDev) + { + // End:0x272 + if(newDev.CanToggleTargetingOff()) + { + SwapStrategy.bPlayPutAway = true; + TgPawn.SetTargetingDevice(TgPawn.GetDeviceByEqPoint(1), SwapStrategy); + } + } + else + { + // End:0x31E + if(newDev.IsTargetingModeReady(failType)) + { + failType = 0; + SwapStrategy.bPlayPutAway = true; + SwapStrategy.RetrieveStrategy = 1; + TgPawn.SetTargetingDevice(newDev, SwapStrategy); + } + else + { + TgHUD(myHUD).PlayDeviceFailResponse(failType, newDev.IsAbility()); + } + } + } + else + { + // End:0x3B6 + if(TgPawn.StartAction(newDev, failType)) + { + Success = true; + } + else + { + TgHUD(myHUD).PlayDeviceFailResponse(failType, newDev.IsAbility()); + Success = false; + } + } + } + return Success; + //return ReturnValue; +} + +exec event bool OnDefaultCastOffhandSlotReleased(TgObject.TG_EQUIP_POINT eqp) +{ + local TgDevice newDev; + local TgPawn TgPawn; + + TgPawn = TgPawn(Pawn); + // End:0x2D + if(TgPawn == none) + { + return false; + } + eqp = TgPawn.OverrideOffhandSlot(eqp); + newDev = TgPawn.GetDeviceByEqPoint(int(eqp)); + // End:0xA4 + if(newDev == none) + { + return false; + } + // End:0xEE + if(newDev.ShouldStopActionOnOffhandSlotReleased()) + { + TgPawn.StopAction(newDev); + } + return true; + //return ReturnValue; +} + +exec event bool OnQuickCastOffhandSlotPressed(TgObject.TG_EQUIP_POINT eqp) +{ + local TgDevice newDev; + local bool Success; + local byte bySuccess; + local TgPawn TgPawn; + local TgObject.EDeviceFailType failType; + local WeaponMeshSwapStrategy SwapStrategy; + + TgPawn = TgPawn(Pawn); + // End:0x2D + if(TgPawn == none) + { + return false; + } + Success = false; + eqp = TgPawn.OverrideOffhandSlot(eqp); + newDev = TgPawn.GetDeviceByEqPoint(int(eqp)); + // End:0xCC + if(TgPawn.OnMountCancelOffhandSlotPressed(newDev)) + { + return false; + } + // End:0xDD + if(newDev == none) + { + return false; + } + // End:0x102 + if(newDev.InterceptSlotPressed(self)) + { + return true; + } + // End:0x126 + if(newDev.m_bHandDevice) + { + return false; + } + // End:0x166 + if(newDev.CheckReactivationToggleLogic(bySuccess)) + { + return int(bySuccess) != int(0); + } + else + { + // End:0x253 + if(newDev.UsesTargetingMode()) + { + // End:0x1F3 + if(newDev.IsTargetingModeReady(failType)) + { + failType = 0; + TgPawn.SetTargetingDevice(newDev, SwapStrategy); + } + else + { + TgHUD(myHUD).PlayDeviceFailResponse(failType, newDev.IsAbility()); + } + Success = true; + } + else + { + // End:0x297 + if(TgPawn.StartAction(newDev, failType)) + { + Success = true; + } + else + { + TgHUD(myHUD).PlayDeviceFailResponse(failType, newDev.IsAbility()); + Success = false; + } + } + } + return Success; + //return ReturnValue; +} + +exec event bool OnQuickCastOffhandSlotReleased(TgObject.TG_EQUIP_POINT eqp) +{ + local TgDevice newDev; + local bool Success; + local TgPawn TgPawn; + local TgObject.EDeviceFailType failType; + local WeaponMeshSwapStrategy SwapStrategy; + + TgPawn = TgPawn(Pawn); + // End:0x2D + if(TgPawn == none) + { + return false; + } + Success = false; + eqp = TgPawn.OverrideOffhandSlot(eqp); + newDev = TgPawn.GetDeviceByEqPoint(int(eqp)); + // End:0xB0 + if(newDev == none) + { + return false; + } + // End:0xD5 + if(newDev.InterceptSlotReleased(self)) + { + return true; + } + // End:0x2EF + if((TgPawn.c_CurrentTargetingDevice == newDev) && newDev.UsesTargetingMode()) + { + // End:0x276 + if(!TgPawn.StartAction(newDev, failType)) + { + // End:0x20D + if(newDev.ShouldSwitchBackToBasicAttackTargeting(GetClientSettings().GetCastMode(TgPawn.r_nProfileId, eqp))) + { + TgPawn.SetTargetingDevice(TgPawn.GetDeviceByEqPoint(1), SwapStrategy); + } + TgHUD(myHUD).PlayDeviceFailResponse(failType, TgPawn.c_CurrentTargetingDevice.IsAbility()); + } + else + { + // End:0x2EC + if(!TgPawn.c_CurrentTargetingDevice.IsFunctionallyToggleDevice()) + { + TgPawn.StopAction(TgPawn.c_CurrentTargetingDevice); + } + } + } + else + { + // End:0x339 + if(newDev.ShouldStopActionOnOffhandSlotReleased()) + { + TgPawn.StopAction(newDev); + } + } + return Success; + //return ReturnValue; +} + +exec event bool OnInstantCastOffhandSlotPressed(TgObject.TG_EQUIP_POINT eqp) +{ + local TgDevice newDev; + local bool Success; + local byte bySuccess; + local TgPawn TgPawn; + local TgObject.EDeviceFailType failType; + local WeaponMeshSwapStrategy SwapStrategy; + + TgPawn = TgPawn(Pawn); + // End:0x2D + if(TgPawn == none) + { + return false; + } + Success = false; + eqp = TgPawn.OverrideOffhandSlot(eqp); + newDev = TgPawn.GetDeviceByEqPoint(int(eqp)); + // End:0xCC + if(TgPawn.OnMountCancelOffhandSlotPressed(newDev)) + { + return false; + } + // End:0xDD + if(newDev == none) + { + return false; + } + // End:0x101 + if(newDev.m_bHandDevice) + { + return false; + } + // End:0x141 + if(newDev.CheckReactivationToggleLogic(bySuccess)) + { + return int(bySuccess) != int(0); + } + else + { + // End:0x1D1 + if(TgPawn.StartAction(newDev, failType)) + { + Success = true; + // End:0x1CE + if(!newDev.IsFunctionallyToggleDevice()) + { + TgPawn.StopAction(newDev); + } + } + else + { + TgHUD(myHUD).PlayDeviceFailResponse(failType, newDev.IsAbility()); + // End:0x2D3 + if(newDev.ShouldSwitchBackToBasicAttackTargeting(GetClientSettings().GetCastMode(TgPawn.r_nProfileId, eqp))) + { + TgPawn.SetTargetingDevice(TgPawn.GetDeviceByEqPoint(1), SwapStrategy); + } + Success = false; + } + } + return Success; + //return ReturnValue; +} + +exec event ClientPlayVGS(int nId, optional int usedVPSetting = 0) +{ + // End:0x4D + if((m_fLastVGS > float(0)) && (WorldInfo.TimeSeconds - m_fLastVGS) < 0.5000000) + { + return; + } + ServerPlayVGS(nId, usedVPSetting); + m_fLastVGS = WorldInfo.TimeSeconds; + return; + //return; +} + +exec event ClientPlayPing(float X, float Y, float Z, TgObject.PING_TYPE pingType) +{ + ServerPlayPing(X, Y, Z, pingType); + //return; +} + +exec event ClientSurrender(optional bool bSurrender = true) +{ + //return; +} + +reliable server function ServerSurrender(bool bSurrender) +{ + //return; +} + +simulated event UpdateLockedTarget(Actor LockedActor) +{ + local TgPawn P; + + P = TgPawn(Pawn); + // End:0x81 + if((P != none) && P.r_LockedTarget != LockedActor) + { + P.ServerUpdateLockedTarget(LockedActor); + } + //return; +} + +exec function RequestScoreBoard() +{ + ServerRequestScoreBoard(); + TgHUD(myHUD).UpdateScoreboard(); + //return; +} + +exec function SuppressHelpText() +{ + local int nTipId; + + // End:0xFF + if(((c_GameTipManager != none) && c_GameTipManager.m_GameTipQueue.Length > 0) && !c_GameTipManager.m_GameTipQueue[0].bDisplayAlways) + { + nTipId = c_GameTipManager.m_GameTipQueue[0].nTipId; + c_GameTipManager.DismissHelpText(nTipId); + c_GameTipManager.SuppressHelpText(nTipId); + } + //return; +} + +exec function ResetGameTips() +{ + // End:0x2E + if(c_GameTipManager != none) + { + c_GameTipManager.UnsuppressAllGameTips(); + } + //return; +} + +reliable server function ServerRequestScoreBoard() +{ + local TgRepInfo_Player PRI; + + PRI = TgRepInfo_Player(PlayerReplicationInfo); + PRI.UpdateScoreboard(); + //return; +} + +reliable server function ServerToggleAIDebug(Actor Target) +{ + local TgPawn P; + local TgAIController_Behavior behavior_ai; + + P = TgPawn(Target); + // End:0x10A + if(P != none) + { + behavior_ai = TgAIController_Behavior(P.Controller); + // End:0x10A + if(behavior_ai != none) + { + P.r_bDebugShowAIDebug = !P.r_bDebugShowAIDebug; + behavior_ai.bBtDebugClientOverlay = P.r_bDebugShowAIDebug; + behavior_ai.UpdatePawnDebug(); + } + } + //return; +} + +// Export UTgPlayerController::execAllowRagdoll(FFrame&, void* const) +native function bool AllowRagdoll(); + +// Export UTgPlayerController::execAllowRagdollUpdated(FFrame&, void* const) +native function AllowRagdollUpdated(); + +// Export UTgPlayerController::execSetAllowParticleSystems(FFrame&, void* const) +native exec function SetAllowParticleSystems(bool Value); + +// Export UTgPlayerController::execSetAllowAnimationFrameRateLOD(FFrame&, void* const) +native exec function SetAllowAnimationFrameRateLOD(bool Value, optional float lLODDistanceFactor, optional int lLODFrameRate); + +reliable client simulated function PlayTutorialAnnouncement(int SoundIndex, SoundCue OptionalCue, optional bool bPlayImmediately = false, optional bool bFlushOthers = false) +{ + local Class AnnouncerClass; + + // End:0xDC + if((c_TutorialAnnouncer == none) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + AnnouncerClass = Class(DynamicLoadObject("TgGameContent.TgTutorialAnnouncer_Content", Class'Core.Class')); + // End:0xDC + if(AnnouncerClass != none) + { + c_TutorialAnnouncer = new (self) AnnouncerClass; + c_TutorialAnnouncer.Init(); + } + } + // End:0x130 + if(c_TutorialAnnouncer != none) + { + c_TutorialAnnouncer.PlayAnnouncement(SoundIndex, OptionalCue, bPlayImmediately, bFlushOthers); + } + //return; +} + +exec function DropFlag() +{ + ServerDropFlag(); + //return; +} + +reliable server function ServerDropFlag() +{ + local TgPawn_Character TgP; + + TgP = TgPawn_Character(Pawn); + // End:0x4B + if(TgP != none) + { + TgP.DropFlag(); + } + //return; +} + +reliable client simulated event ArenaCrowdEvent(byte EventType) +{ + local Sequence GameSeq; + local array AllCrowdEvents; + local int I; + local array ActivateIndices; + + GameSeq = WorldInfo.GetGameSequence(); + // End:0x6A + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_CrowdEvent', true, AllCrowdEvents); + } + switch(EventType) + { + // End:0x92 + case 0: + ActivateIndices[0] = 0; + // End:0x119 + break; + // End:0xA8 + case 1: + ActivateIndices[0] = 2; + // End:0x119 + break; + // End:0xBE + case 2: + ActivateIndices[0] = 3; + // End:0x119 + break; + // End:0xD4 + case 3: + ActivateIndices[0] = 4; + // End:0x119 + break; + // End:0xEA + case 4: + ActivateIndices[0] = 5; + // End:0x119 + break; + // End:0x100 + case 5: + ActivateIndices[0] = 6; + // End:0x119 + break; + // End:0x116 + case 6: + ActivateIndices[0] = 7; + // End:0x119 + break; + // End:0xFFFF + default: + break; + } + I = 0; + J0x124: + + // End:0x189 [Loop If] + if(I < AllCrowdEvents.Length) + { + SequenceEvent(AllCrowdEvents[I]).CheckActivate(self, none,, ActivateIndices); + I++; + // [Loop Continue] + goto J0x124; + } + //return; +} + +simulated function OnScoreChange(int nTeam) +{ + //return; +} + +exec function IgnoreOverlays(bool bIgnore) +{ + m_bIgnoreSilhouettes = bIgnore; + //return; +} + +reliable client simulated function InsertAdditionalPostProcess(PostProcessChain PP, optional bool bAlterMeshDepth, optional TgPawn OtherDepthTarget) +{ + local LocalPlayer LP; + local TgPawn TgP; + + LP = LocalPlayer(Player); + // End:0x5B + if(LP != none) + { + LP.InsertPostProcessingChain(PP, -1, false); + } + // End:0xEC + if(bAlterMeshDepth) + { + TgP = TgPawn(Pawn); + // End:0xBC + if(TgP != OtherDepthTarget) + { + TgP.SetMeshDepthPriority(4); + } + // End:0xEC + if(OtherDepthTarget != none) + { + OtherDepthTarget.SetMeshDepthPriority(4); + } + } + //return; +} + +reliable client simulated function RemoveAdditionalPostProcess(PostProcessChain PP, optional TgPawn OtherDepthTarget) +{ + local LocalPlayer LP; + local int chainIndex; + local TgPawn TgP; + + LP = LocalPlayer(Player); + // End:0x12C + if(LP != none) + { + chainIndex = 0; + J0x37: + + // End:0x12C [Loop If] + if(chainIndex < LP.PlayerPostProcessChains.Length) + { + // End:0x11E + if((LP.PlayerPostProcessChains[chainIndex] != none) && LP.PlayerPostProcessChains[chainIndex].Name == PP.Name) + { + LP.RemovePostProcessingChain(chainIndex); + return; + } + chainIndex++; + // [Loop Continue] + goto J0x37; + } + } + TgP = TgPawn(Pawn); + // End:0x180 + if(TgP != OtherDepthTarget) + { + TgP.SetMeshDepthPriority(2); + } + // End:0x1B0 + if(OtherDepthTarget != none) + { + OtherDepthTarget.SetMeshDepthPriority(2); + } + //return; +} + +event TgPlayerInput GetPlayerInputClass() +{ + // End:0x38 + if(m_CachedPlayerInput == none) + { + m_CachedPlayerInput = TgPlayerInput(self.PlayerInput); + } + // End:0x89 + if(m_CachedPlayerInput == none) + { + m_CachedPlayerInput = new (self) Class'TgGame.TgPlayerInput'; + m_CachedPlayerInput.c_TgPC = self; + ReloadKeybindsForPawn(); + } + return m_CachedPlayerInput; + //return ReturnValue; +} + +event TgSpectatorInput GetSpectatorInputClass() +{ + // End:0x38 + if(m_CachedPlayerInput == none) + { + m_CachedPlayerInput = TgSpectatorInput(self.PlayerInput); + } + // End:0x7F + if(m_CachedSpectatorInput == none) + { + m_CachedSpectatorInput = new (self) Class'TgGame.TgSpectatorInput'; + m_CachedSpectatorInput.c_TgPC = self; + } + return m_CachedSpectatorInput; + //return ReturnValue; +} + +exec function UnbindCommandPC(bool bSpectator, int nAlternate, string Command) +{ + // End:0x42 + if(bSpectator) + { + GetSpectatorInputClass().UnbindCommand(Command, nAlternate); + } + else + { + GetPlayerInputClass().UnbindCommand(Command, nAlternate); + } + UpdateRuntimeInput(bSpectator); + //return; +} + +exec function UnbindCommandAllPC(bool bSpectator, string Command) +{ + // End:0x39 + if(bSpectator) + { + GetSpectatorInputClass().UnbindCommandAll(Command); + } + else + { + GetPlayerInputClass().UnbindCommandAll(Command); + } + UpdateRuntimeInput(bSpectator); + //return; +} + +exec function SetBindPC(bool bSpectator, string ExtendedBinding, string Command) +{ + // End:0x42 + if(bSpectator) + { + GetSpectatorInputClass().SetBindExtended(ExtendedBinding, Command); + } + else + { + GetPlayerInputClass().SetBindExtended(ExtendedBinding, Command); + } + UpdateRuntimeInput(bSpectator); + //return; +} + +exec event SetCommandBindPC(bool bSpectator, int nAlternate, string ExtendedBinding, string Command) +{ + // End:0x4B + if(bSpectator) + { + GetSpectatorInputClass().SetCommandBind(Command, nAlternate, ExtendedBinding); + } + else + { + GetPlayerInputClass().SetCommandBind(Command, nAlternate, ExtendedBinding); + } + UpdateRuntimeInput(bSpectator); + //return; +} + +event bool IsPawnWithin(Pawn aPawn, float Distance) +{ + local Vector ViewLoc; + local Rotator ViewRot; + + // End:0x11 + if(aPawn == none) + { + return false; + } + GetPlayerViewPoint(ViewLoc, ViewRot); + return VSizeSq(aPawn.Location - ViewLoc) < Distance; + //return ReturnValue; +} + +exec function ToggleDetailedView() +{ + local TgMapInfo TgMapInfo; + + m_bDetailedViewEnabled = !m_bDetailedViewEnabled; + // End:0x10D + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && !WorldInfo.IsPlayingDemo()) + { + TgMapInfo = TgMapInfo(WorldInfo.GetMapInfo()); + // End:0x10D + if((TgMapInfo != none) && TgMapInfo.m_OverlayPathMesh != none) + { + TgMapInfo.m_OverlayPathMesh.SetHidden(!m_bDetailedViewEnabled); + } + } + //return; +} + +reliable client simulated event PlayEpicFatality(byte TaskForceNumber, int MeshAsmId) +{ + local TgMapInfo MapInfo; + local TgFatalityFactory FatalityFactory; + + MapInfo = TgMapInfo(WorldInfo.GetMapInfo()); + // End:0xAA + if(MapInfo != none) + { + FatalityFactory = MapInfo.GetEmptyFatalityFactory(TaskForceNumber); + // End:0xAA + if(FatalityFactory != none) + { + FatalityFactory.PlayEpicFatality(MeshAsmId); + } + } + //return; +} + +event EnableContextNotify(int ContextId) +{ + local TgPawn TgP; + + // End:0x4B + if(m_bContextNotifiesEnabled) + { + TgP = TgPawn(Pawn); + // End:0x4B + if(TgP != none) + { + m_nContextNotifyGroundTargeterId = ContextId; + } + } + //return; +} + +event ReceivedContextNotify(int ContextId, Vector NotifyLocation, bool bEnemy) +{ + //return; +} + +reliable client simulated event ClientPlayRoadkillNotify() +{ + //return; +} + +exec function DoJump() +{ + // End:0x89 + if(IsInputAllowed(14)) + { + bPressedJump = true; + // End:0x61 + if((m_fLastJumpTapTime + m_fMaxJumpDoubleTapTime) >= WorldInfo.TimeSeconds) + { + m_bJustDidJumpDoubleTap = true; + } + else + { + m_fLastJumpTapTime = WorldInfo.TimeSeconds; + } + } + SkipKillCam(); + //return; +} + +exec function HoldJump() +{ + m_JumpHeld = byte(int(1) - int(m_JumpHeld)); + //return; +} + +exec function OnJumpRelease() +{ + m_bJustDidJumpDoubleTap = false; + //return; +} + +exec function OnJumpHeldAltPressed() +{ + m_JumpHeldAlt = byte(int(1) - int(m_JumpHeldAlt)); + //return; +} + +exec function ToggleSprint() +{ + // End:0x44 + if(!TgRepInfo_Game(WorldInfo.GRI).AllowPlayerMounting()) + { + return; + } + InputReceived(15); + // End:0x6B + if(IsInputAllowed(15)) + { + OnDefaultCastOffhandSlotPressed(23); + } + //return; +} + +simulated event SetBehindView(bool bNewBehindView) +{ + local TgCameraModule_ThirdPerson CamMod; + local TgPawn TgP; + local TgDevice TgD; + + CamMod = TgCameraModule_ThirdPerson(GetCurrentCameraModule()); + // End:0xB4 + if((((CamMod != none) && bNewBehindView) && !m_bBehindView) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + CamMod.f3pViewPaddingRemainingTime = CamMod.f3pViewPaddingTime; + } + TgP = TgPawn(Pawn); + // End:0x14C + if(bNewBehindView) + { + // End:0x14C + if(TgP != none) + { + TgD = TgDevice(TgP.Weapon); + // End:0x14C + if(TgD != none) + { + TgD.AltUse(false); + } + } + } + m_bBehindView = bNewBehindView; + // End:0x1D4 + if((TgP != none) && TgP.m_WeaponMesh != none) + { + TgP.m_WeaponMesh.OnBehindViewUpdated(m_bBehindView); + } + //return; +} + +function HandleWalking() +{ + local TgPawn pPawn; + local TgDevice_Mount MountDevice; + + pPawn = TgPawn(Pawn); + // End:0x1D8 + if(pPawn != none) + { + // End:0x125 + if(!pPawn.IsAliveAndWell()) + { + // End:0xE4 + if(int(bRun) == int(1)) + { + MountDevice = TgDevice_Mount(pPawn.GetDeviceByEqPoint(23)); + // End:0xE4 + if(MountDevice != none) + { + MountDevice.InterruptFiring(); + MountDevice.ClientInterrupt(); + } + } + // End:0x125 + if(pPawn.m_bIsLanding) + { + pPawn.OnJumpPenaltyEnded(); + } + } + // End:0x1C5 + if(int(m_bOldbRun) != int(bRun)) + { + ((int(bRun) == int(1)) ? pPawn.PawnOnStartSprint() : pPawn.PawnOnEndSprint()); + pPawn.r_bIsMounted = int(bRun) == int(1); + } + m_bOldbRun = bRun; + } + //return; +} + +simulated exec function ReloadWeapon() +{ + local TgPawn TgP; + + NextScoreboardDisplayType(); + InputReceived(13); + // End:0x29 + if(!IsInputAllowed(13)) + { + return; + } + TgP = TgPawn(Pawn); + // End:0x165 + if(((TgP != none) && TgP.c_CurrentTargetingDevice != none) && !TgP.c_CurrentTargetingDevice.IsReloading()) + { + // End:0x131 + if(TgP.c_CurrentTargetingDevice.CanReload()) + { + TgP.c_CurrentTargetingDevice.StartReload(); + m_bPendingReload = false; + } + else + { + m_bPendingReload = true; + m_fPendingReloadTime = WorldInfo.TimeSeconds; + } + } + //return; +} + +simulated exec function SSF(optional bool bSprint = true, optional bool bMinimapTeamVisibility = false, optional float DamageMultiplier = 1.0000000, optional bool bForce3P = false, optional bool bForce1P = false, optional bool bOutOfCombatSprint = false) +{ + SetServerFlags(bSprint, bMinimapTeamVisibility, DamageMultiplier, bForce3P, bForce1P, bOutOfCombatSprint); + //return; +} + +simulated exec function SetServerFlags(optional bool bSprint = true, optional bool bMinimapTeamVisibility = false, optional float DamageMultiplier = 1.0000000, optional bool bForce3P = false, optional bool bForce1P = false, optional bool bOutOfCombatSprint = false) +{ + ServerSetServerFlags(bSprint, bMinimapTeamVisibility, DamageMultiplier, bForce3P, bForce1P, bOutOfCombatSprint); + //return; +} + +reliable server function ServerSetServerFlags(bool bSprint, bool bMinimapTeamVisibility, float DamageMultiplier, bool bForce3P, bool bForce1P, bool bOutOfCombatSprint) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x13A + if(GRI != none) + { + GRI.r_bServerFlagSprint = bSprint; + GRI.r_bServerFlagMinimapTeamVisibility = bMinimapTeamVisibility; + GRI.r_fServerFlagDamageMultiplier = DamageMultiplier; + GRI.r_bForce3P = bForce3P; + GRI.r_bForce1P = bForce1P; + GRI.r_bForceOutOfCombatSprint = bOutOfCombatSprint; + } + //return; +} + +exec function AutoMelee(bool bEnabled) +{ + ServerAutoMelee(bEnabled); + //return; +} + +reliable server function ServerAutoMelee(bool bEnabled) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x6A + if(GRI != none) + { + GRI.r_bAutoMelee = bEnabled; + } + //return; +} + +reliable server event ServerRequestCard(int nDeviceId, int nRank) +{ + // End:0x30 + if(int(Role) == int(ROLE_Authority)) + { + OnRequestCard(nDeviceId, nRank); + } + //return; +} + +reliable server event ServerRequestTalent(int nDeviceId) +{ + // End:0x27 + if(int(Role) == int(ROLE_Authority)) + { + OnRequestTalent(nDeviceId); + } + //return; +} + +reliable client simulated event ClientChangedTalent(int nBotId, int nDeviceId) +{ + SetSelectedTalent(nBotId, nDeviceId); + //return; +} + +reliable server event ServerRequestDeck(int nIndex) +{ + // End:0x27 + if(int(Role) == int(ROLE_Authority)) + { + OnRequestDeck(nIndex); + } + //return; +} + +reliable client simulated event ClientChangedDeck(int nBotId, int nDeckIndex) +{ + SetSelectedDeck(nBotId, nDeckIndex); + //return; +} + +event OnDeckUpdatedOnServer(int nBotId, int nDeckIndex) +{ + Class'TgGame.TgSeqEvent_LoadoutChanged'.static.TriggerGlobal(Pawn, nDeckIndex); + //return; +} + +event OnCardSelection(TgDevice pDevice) +{ + local TgPawn TgP; + + TgP = TgPawn(Pawn); + // End:0x174 + if((pDevice != none) && TgP != none) + { + // End:0x89 + if(pDevice.m_nDeviceType == 11049) + { + TgP.PlayEmoteSelfOnly(26); + } + else + { + // End:0xD6 + if(pDevice.m_nDeviceType == 11051) + { + TgP.PlayEmoteSelfOnly(27); + } + else + { + // End:0x174 + if(((pDevice.m_nDeviceType == 15000) || pDevice.m_nDeviceType == 15188) || pDevice.m_nDeviceType == 15189) + { + TgP.PlayEmoteSelfOnly(28); + } + } + } + } + //return; +} + +exec event FrontFacingCamera(bool bEnabled) +{ + TgPlayerCamera(PlayerCamera).SwitchCameras(((bEnabled) ? Class'TgGame.TgCameraModule_FrontFacingCamera' : Class'TgGame.TgCameraModule_ThirdPerson'), 0.0000000); + //return; +} + +exec function SetOutlines(bool bFriendly, bool bEnemy) +{ + local TgPawn TgP; + + m_bOutlineEnemies = bEnemy; + m_bOutlineFriendlies = bFriendly; + // End:0x9F + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn', TgP) + { + TgP.InitializeOverlayMeshComponent(TgP.Mesh); + } + //return; +} + +exec function SetJumpZ(float NewJumpZ) +{ + local TgPawn TgP; + + // End:0x3C + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + ServerSetJumpZ(NewJumpZ); + } + // End:0x9B + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn', TgP) + { + TgP.JumpZ = NewJumpZ; + } + //return; +} + +reliable server function ServerSetJumpZ(float NewJumpZ) +{ + SetJumpZ(NewJumpZ); + //return; +} + +reliable client simulated function ClientUpdateRoundEndedTimer(float RoundEndTimeRemaining, float RoundEndTotalTime) +{ + TgHUD(myHUD).UpdateRoundEndedTimer(RoundEndTimeRemaining, RoundEndTotalTime); + //return; +} + +reliable client simulated function ClientUpdateRoundSetupTimer(float SetupTimeRemaining) +{ + TgHUD(myHUD).UpdateRoundSetupTimer(SetupTimeRemaining, WorldInfo.TimeSeconds); + //return; +} + +reliable client simulated function ClientOnRoundEnded() +{ + SetTimeDilation(1.0000000, 0.0000000); + SetDesaturation(0.0000000, 0.0000000); + DoFade(true, 0.5000000); + AnnouncerReset(); + //return; +} + +reliable client simulated function ClientOnRoundObjectivesCompleted() +{ + local TgRepInfo_Game GRI; + local bool bRoundWon; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x1A8 + if(GRI != none) + { + ClientPlaySoundBase(m_RoundEndAlert); + // End:0x90 + if(int(WorldInfo.NetMode) != int(NM_Standalone)) + { + SetTimeDilation(0.2000000, 5.0000000); + } + SetDesaturation(1.0000000, 5.0000000); + // End:0xD8 + if(GRI.r_bFadeOutAtRoundEnd) + { + UIFadeEndOfRound(true, 4.0000000); + } + ClientRequestHelpText(126); + // End:0x1A8 + if((GRI.r_Winner != none) && GRI.r_Winner.r_nTeamId > 0) + { + bRoundWon = GRI.r_Winner.r_nTeamId == (GetTaskForceNumber()); + // End:0x1A8 + if(!bRoundWon) + { + ClientRequestHelpText(131); + } + } + } + //return; +} + +reliable client simulated function SetTimeDilation(float DesiredDilation, float SecondsToInterpolate) +{ + // End:0x78 + if(!bIsEditor()) + { + m_IsTimeDilationInterpolating = true; + m_TimeDilationUsedSeconds = 0.0000000; + m_TimeDilationInterpolateSeconds = SecondsToInterpolate; + m_TimeDilationFromTo = vect2d(WorldInfo.TimeDilation, DesiredDilation); + } + //return; +} + +reliable client simulated function SetDesaturation(float DesiredDesaturation, float SecondsToInterpolate) +{ + local TgRepInfo_Game GRI; + + m_IsDesaturationInterpolating = true; + m_DesaturationUsedSeconds = 0.0000000; + m_DesaturationInterpolateSeconds = SecondsToInterpolate; + m_DesaturationFromTo = vect2d(WorldInfo.DefaultPostProcessSettings.Scene_Desaturation, DesiredDesaturation); + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x270 + if(GRI != none) + { + // End:0x15B + if(int(GRI.r_GameEnvironmentRule) == int(1)) + { + WorldInfo.DefaultPostProcessSettings.bOverride_Scene_Colorize = true; + WorldInfo.DefaultPostProcessSettings.Scene_Colorize = vect(0.9000000, 0.9000000, 1.5000000); + } + else + { + // End:0x1FA + if(int(GRI.r_GameEnvironmentRule) == int(3)) + { + WorldInfo.DefaultPostProcessSettings.bOverride_Scene_Colorize = true; + WorldInfo.DefaultPostProcessSettings.Scene_Colorize = vect(1.3000000, 1.0000000, 1.0000000); + } + else + { + WorldInfo.DefaultPostProcessSettings.bOverride_Scene_Colorize = true; + WorldInfo.DefaultPostProcessSettings.Scene_Colorize = vect(1.0000000, 1.0000000, 1.0000000); + } + } + } + else + { + WorldInfo.DefaultPostProcessSettings.bOverride_Scene_Colorize = true; + WorldInfo.DefaultPostProcessSettings.Scene_Colorize = vect(1.0000000, 1.0000000, 1.0000000); + } + //return; +} + +reliable client simulated function ClientOnRoundSetupStarted(bool bForceOpenCardMenu) +{ + SetTimer(5.0000000, false, 'TorvaldCheck'); + TgHUD(myHUD).OnRoundSetupStarted(); + //return; +} + +simulated function TorvaldCheck() +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce ERI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0xC8 + if(GRI != none) + { + ERI = GRI.GetTaskForce((((GetTaskForceNumber()) == 2) ? 1 : 2)); + // End:0xC8 + if((ERI != none) && ERI.HasBot(Class'TgGame.TgPawn_Gauntlet')) + { + ClientRequestHelpText(198); + } + } + //return; +} + +simulated function OpenUpgradeMenuTimer() +{ + ConsoleCommand("ShowUpgradeMenu"); + //return; +} + +reliable client simulated function ClientPlayPointCapturedEffects(TgChaosCapturePoint CapturedPoint, bool bFriendlyCapture) +{ + local TgSpecialFx Fx; + local TgPawn myPawn; + local int I; + local Vector SpawnLocation; + + Fx = Class'TgGame.TgPawn'.static.GetSpecialFx(6148); + // End:0x1B5 + if(Fx != none) + { + I = 0; + J0x48: + + // End:0x133 [Loop If] + if(I < Fx.c_PSCList.Length) + { + Fx.c_ParticleChannelOverride.bInitialized = true; + Fx.c_ParticleChannelOverride.Friendly = bFriendlyCapture; + Fx.c_ParticleChannelOverride.Enemy = !bFriendlyCapture; + I++; + // [Loop Continue] + goto J0x48; + } + SpawnLocation = CapturedPoint.Location; + SpawnLocation.Z -= 175.0000000; + Fx.SpawnEmitter(SpawnLocation, vect(1.0000000, 0.0000000, 0.0000000)); + } + // End:0x20F + if(bFriendlyCapture) + { + myPawn = TgPawn(Pawn); + // End:0x20F + if(myPawn != none) + { + myPawn.PlayEmoteAtWorldLocation(33); + } + } + PlayPointAlienFX(bFriendlyCapture); + //return; +} + +unreliable client simulated function ClientPlayTakeoverSecondPhaseInstructions(bool bFriendlyCapture) +{ + //return; +} + +function OnControllerChanged(int ControllerId, bool bIsConnected, bool bPauseGame) +{ + local LocalPlayer LP; + local string CurrentMovieName; + + LP = LocalPlayer(Player); + // End:0x1C3 + if((((LP != none) && LP.ControllerId == ControllerId) && WorldInfo.IsConsoleBuild()) && (WorldInfo.Game == none) || !WorldInfo.Game.IsAutomatedPerfTesting()) + { + bIsControllerConnected = bIsConnected; + // End:0x1B9 + if(!bIsConnected) + { + GetCurrentMovie(CurrentMovieName); + LP.ViewportClient.UIController.SceneClient.TgFlushPlayerInput(); + ShowControllerDisconnectedWarning(); + // End:0x1B6 + if((bPauseGame && IsInGame()) && CurrentMovieName == "") + { + ControllerChangedPause(); + } + } + else + { + ControllerChangedUnpause(); + } + } + //return; +} + +// Export UTgPlayerController::execOnLoginStatusChange(FFrame&, void* const) +native function OnLoginStatusChange(OnlineSubsystem.ELoginStatus NewStatus, UniqueNetId NewId); + +// Export UTgPlayerController::execOnConnectionStatusChange(FFrame&, void* const) +native function OnConnectionStatusChange(OnlineSubsystem.EOnlineServerConnectionStatus ConnectionStatus); + +// Export UTgPlayerController::execOnCurrentUserChanged(FFrame&, void* const) +native function OnCurrentUserChanged(byte LocalUserNum, string CurrentUser, string LoggedInUser); + +// Export UTgPlayerController::execOnRemoteTalkerStatusChange(FFrame&, void* const) +native function OnRemoteTalkerStatusChange(UniqueNetId RemoteNetId, bool bIsTalking); + +// Export UTgPlayerController::execShowControllerDisconnectedWarning(FFrame&, void* const) +native function ShowControllerDisconnectedWarning(); + +// Export UTgPlayerController::execShowCurrentUserChangeWarning(FFrame&, void* const) +native function ShowCurrentUserChangeWarning(string CurrentUser, string LoggedInUser); + +// Export UTgPlayerController::execShowNoFriendsForPartyInviteWarning(FFrame&, void* const) +native function ShowNoFriendsForPartyInviteWarning(); + +// Export UTgPlayerController::execShowUnableToReadFriendsListWarning(FFrame&, void* const) +native function ShowUnableToReadFriendsListWarning(); + +// Export UTgPlayerController::execShowPartyFullWarning(FFrame&, void* const) +native function ShowPartyFullWarning(bool bPartySession); + +// Export UTgPlayerController::execShowPartyNoLongerAvailableWarning(FFrame&, void* const) +native function ShowPartyNoLongerAvailableWarning(); + +// Export UTgPlayerController::execShowPackageNotInstalledForPartyInviteWarning(FFrame&, void* const) +native function ShowPackageNotInstalledForPartyInviteWarning(); + +// Export UTgPlayerController::execShowCustomGameDisallowedPopup(FFrame&, void* const) +native function ShowCustomGameDisallowedPopup(); + +// Export UTgPlayerController::execIsInGame(FFrame&, void* const) +native function bool IsInGame(); + +// Export UTgPlayerController::execLogoutPlayer(FFrame&, void* const) +native function LogoutPlayer(); + +// Export UTgPlayerController::execTryAutoLogin(FFrame&, void* const) +native function bool TryAutoLogin(); + +// Export UTgPlayerController::execBlockPartySceneInput(FFrame&, void* const) +native function BlockPartySceneInput(bool bBlockInput); + +// Export UTgPlayerController::execTryOpenPartyUI(FFrame&, void* const) +native function TryOpenPartyUI(); + +// Export UTgPlayerController::execUpdatePartyUI(FFrame&, void* const) +native function UpdatePartyUI(); + +// Export UTgPlayerController::execOnAllMarketplaceProductDetailsRead(FFrame&, void* const) +native function OnAllMarketplaceProductDetailsRead(); + +function ShowPathfinder(bool bEnabled, float interval) +{ + // End:0x31 + if(bEnabled) + { + SpawnPathfinder(); + SetTimer(interval, true, 'SpawnPathfinder'); + } + else + { + ClearTimer('SpawnPathfinder'); + } + //return; +} + +function SpawnPathfinder() +{ + local TgPathfinder Pathfinder; + local Actor TargetActor; + + TargetActor = GetPathfinderTarget(); + // End:0x17A + if(TargetActor != none) + { + Pathfinder = Spawn(Class'TgGame.TgPathfinder', Pawn,, GetPathfinderStartLocation((((Pawn != none) && VSizeSq(Pawn.Velocity) > 0.0000000) ? m_fPathfinderStartDist : m_fPathfinderStartDist / 4.0000000))); + Pathfinder.SetupPathProperties(Pawn.GetCollisionRadius(), m_fPathfinderSpeed); + Pathfinder.SetPhysics(0); + Pathfinder.SetRouteTo(TargetActor, true); + Pathfinder.StartWalkerStream(m_fPathfinderStreamTime, m_fPathfinderPulseTime, m_fPathfinderLifetime, m_fPathfinderSpeed); + } + //return; +} + +function Vector GetPathfinderStartLocation(float StartDist) +{ + local Vector Start, End, HitLocation, HitNormal, Extent, Loc; + + local Rotator Rot; + local float CollisionRadius, CollisionHeight; + + Rot = Pawn.Rotation; + Rot.Pitch = 0; + CollisionRadius = Pawn.GetCollisionRadius(); + CollisionHeight = Pawn.GetCollisionHeight(); + Start = Pawn.Location + (vect(0.0000000, 0.0000000, 1.0000000) * CollisionHeight); + End = Start + (Vector(Rot) * StartDist); + Loc = End; + Extent.X = CollisionRadius; + Extent.Y = CollisionRadius; + Extent.Z = CollisionHeight; + // End:0x1D6 + if(Trace(HitLocation, HitNormal, End, Start,, Extent) != none) + { + Loc = HitLocation; + } + Start = Loc; + End = Loc + ((vect(0.0000000, 0.0000000, -1.0000000) * CollisionHeight) * 3.0000000); + Loc = End; + // End:0x27C + if(Trace(HitLocation, HitNormal, End, Start,, Extent) != none) + { + Loc = HitLocation; + } + return Loc; + //return ReturnValue; +} + +function Actor GetPathfinderTarget() +{ + local TgChaosCapturePoint capturePoint; + local int I; + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x85 + if((GRI != none) && GRI.r_LanePusher != none) + { + return GRI.r_LanePusher; + } + // End:0xC6 + if(m_CapturePoints.Length == 0) + { + // End:0xC5 + foreach DynamicActors(Class'TgGame.TgChaosCapturePoint', capturePoint) + { + m_CapturePoints.AddItem(capturePoint); + } + } + I = 0; + J0xD1: + + // End:0x173 [Loop If] + if(I < m_CapturePoints.Length) + { + // End:0x165 + if((int(m_CapturePoints[I].r_eStatus) == int(1)) || int(m_CapturePoints[I].r_eStatus) == int(2)) + { + return m_CapturePoints[I]; + } + I++; + // [Loop Continue] + goto J0xD1; + } + return none; + //return ReturnValue; +} + +unreliable client simulated event ClientRequestHelpText(int HelpTipId) +{ + // End:0x3B + if(c_GameTipManager != none) + { + c_GameTipManager.RequestHelpText(HelpTipId); + } + //return; +} + +exec function TestHelpTip(int HelpTipId) +{ + local Vector SpawnLocation; + + SpawnLocation = Pawn.Location + (Vector(Pawn.Rotation) * 800.0000000); + c_GameTipManager.RequestHelpText(HelpTipId,,, SpawnLocation); + //return; +} + +exec function SetBlur(float TargetBlurAmount, float InterpSpeed, float BlurKernelSize) +{ + TgLocalPlayer(Player).SetBlurAmount(TargetBlurAmount, InterpSpeed, BlurKernelSize); + //return; +} + +function DebugNextPlayerStart() +{ + local TgBattleCheatManager CM; + + CM = TgBattleCheatManager(CheatManager); + // End:0x57 + if(CM.m_DebugPlayerStarts.Length == 0) + { + ClearTimer('DebugNextPlayerStart'); + return; + } + Pawn.SetLocation(CM.m_DebugPlayerStarts[0].Location); + Pawn.SetRotation(CM.m_DebugPlayerStarts[0].Rotation); + SetRotation(CM.m_DebugPlayerStarts[0].Rotation); + Pawn.SetDesiredRotation(CM.m_DebugPlayerStarts[0].Rotation); + ClientSetRotationAndDesired(CM.m_DebugPlayerStarts[0].Rotation); + CM.m_DebugPlayerStarts.Remove(0, 1); + //return; +} + +function DebugEnableAllAI() +{ + local TgAIController_BehaviorGod TgAI; + local TgPawn TgP; + + // End:0xB9 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + TgP = TgPawn(TgAI.Pawn); + // End:0xB8 + if((TgP != none) && TgP.IsGod()) + { + TgAI.SetTickIsDisabled(false); + } + } + //return; +} + +function DebugDisableAllAI() +{ + local TgAIController_BehaviorGod TgAI; + local TgPawn TgP; + + // End:0xB9 + foreach WorldInfo.AllControllers(Class'TgGame.TgAIController_BehaviorGod', TgAI) + { + TgP = TgPawn(TgAI.Pawn); + // End:0xB8 + if((TgP != none) && TgP.IsGod()) + { + TgAI.SetTickIsDisabled(true); + } + } + //return; +} + +exec function FireDebugConsoleKismetTestNode() +{ + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_DebugConsoleKismetTest', self); + //return; +} + +private unreliable client final simulated event ClientOnScoredPoints(int nValue, TgObject.ERewardValueType eType, int nPlayerId) +{ + local int GameTipId; + + OnScoredPoints(nValue, eType, nPlayerId); + // End:0x13E + if(((WorldInfo.GRI == none) || WorldInfo.GRI.GameClass == none) || !ClassIsChildOf(WorldInfo.GRI.GameClass, Class'TgGame.TgGame_Paladins_Onslaught')) + { + switch(eType) + { + // End:0xF1 + case 11: + GameTipId = 160; + // End:0x12B + break; + // End:0x105 + case 12: + GameTipId = 161; + // End:0x12B + break; + // End:0x119 + case 15: + GameTipId = 162; + // End:0x12B + break; + // End:0xFFFF + default: + GameTipId = -1; + break; + } + ClientRequestHelpText(GameTipId); + } + //return; +} + +final function ShowHit(Actor Target, float DamageAmount, const out ExtraDamageInfo ExtraInfo) +{ + local TgPawn TgPawnTarget, ViewPawn; + local TgDeployable TargetDeployable; + + TgPawnTarget = TgPawn(Target); + ViewPawn = GetTgPawn(); + // End:0x9D + if(((TgPawnTarget != none) && ViewPawn != none) && TgPawnTarget.IsStealthed(TgRepInfo_Player(ViewPawn.PlayerReplicationInfo))) + { + return; + } + // End:0x1C5 + if(((((IsLocalPlayerController()) && TgHUD(myHUD) != none) && Target != none) && Target != ViewPawn) && ViewPawn.IsEnemy(Target)) + { + TargetDeployable = TgDeployable(Target); + TgHUD(myHUD).ShowHit(Target, DamageAmount, ((TargetDeployable != none) ? int(TargetDeployable.m_CollisionSettings.mCollisionMode) == int(1) : false), ExtraInfo); + } + // End:0x232 + if(WorldInfo.IsPlayingTimelapse() || WorldInfo.IsPlayingDemo()) + { + SendProxyDamageMessage(Target, int(DamageAmount), ExtraInfo); + } + //return; +} + +// Export UTgPlayerController::execSendProxyDamageMessage(FFrame&, void* const) +native function SendProxyDamageMessage(Actor TargetActor, int DamageAmount, const out ExtraDamageInfo ExtraInfo); + +reliable client simulated function ClientSendPayloadMissionEvent(int nEventId, byte nAttackingTaskForce, byte nWinningTaskForce) +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x7A + if(GRI != none) + { + GRI.ProcessMissionTimerEvent(nEventId, nAttackingTaskForce, nWinningTaskForce); + } + //return; +} + +// Export UTgPlayerController::execGetTgPawn(FFrame&, void* const) +native function TgPawn GetTgPawn(); + +// Export UTgPlayerController::execGetCurrentPRI(FFrame&, void* const) +native function TgRepInfo_Player GetCurrentPRI(); + +event UpdateClientFOV() +{ + local TgPlayerCamera pCamera; + local TgClientSettings pSettings; + + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + pCamera = TgPlayerCamera(PlayerCamera); + pSettings = GetClientSettings(); + // End:0x7D + if((pSettings == none) || pCamera == none) + { + return; + } + pCamera.DefaultFOV = FClamp(pSettings.DesiredFOV, 80.0000000, 120.0000000); + pCamera.ResetFOV(); + //return; +} + +function ClientUpdatePosition() +{ + local SavedMove CurrentMove; + local int realbRun, realbDuck, realJumpHeld, realUltHeld; + local bool bRealJump, bRealPreciseDestination, bRealForceMaxAccel, bRealRootMotionFromInterpCurve; + local SkeletalMeshComponent.ERootMotionMode RealRootMotionMode; + + bUpdatePosition = false; + // End:0x48 + if((Pawn != none) && int(Pawn.Physics) == int(10)) + { + return; + } + realbRun = int(bRun); + realbDuck = int(bDuck); + bRealJump = bPressedJump; + realJumpHeld = int(m_JumpHeld); + realUltHeld = int(m_UltHeld); + bUpdating = true; + bRealPreciseDestination = bPreciseDestination; + // End:0x172 + if(Pawn != none) + { + bRealForceMaxAccel = Pawn.bForceMaxAccel; + bRealRootMotionFromInterpCurve = Pawn.bRootMotionFromInterpCurve; + RealRootMotionMode = Pawn.Mesh.RootMotionMode; + } + ClearAckedMoves(); + CurrentMove = SavedMoves; + J0x18F: + + // End:0x2DB [Loop If] + if(CurrentMove != none) + { + // End:0x1EE + if((PendingMove == CurrentMove) && Pawn != none) + { + PendingMove.SetInitialPosition(Pawn); + } + CurrentMove.PrepMoveFor(Pawn); + MoveAutonomous(CurrentMove.Delta, CurrentMove.CompressedFlags(), CurrentMove.Acceleration, rot(0, 0, 0)); + CurrentMove.ResetMoveFor(Pawn); + CurrentMove = CurrentMove.NextMove; + // [Loop Continue] + goto J0x18F; + } + bUpdating = false; + bDuck = byte(realbDuck); + bRun = byte(realbRun); + bPressedJump = bRealJump; + m_JumpHeld = byte(realJumpHeld); + m_UltHeld = byte(realUltHeld); + bPreciseDestination = bRealPreciseDestination; + // End:0x405 + if(Pawn != none) + { + Pawn.bForceMaxAccel = bRealForceMaxAccel; + Pawn.bRootMotionFromInterpCurve = bRealRootMotionFromInterpCurve; + Pawn.Mesh.RootMotionMode = RealRootMotionMode; + } + UpdateCameraForServerCorrectionSmoothing(); + //return; +} + +function SavePositionForSmoothServerCorrection() +{ + // End:0x37 + if(Pawn != none) + { + m_vLastServerCorrectOrigPos = Pawn.Location; + } + //return; +} + +function UpdateCameraForServerCorrectionSmoothing() +{ + local TgPlayerCamera Cam; + local TgCameraModule_ThirdPerson camModule; + + Cam = TgPlayerCamera(PlayerCamera); + // End:0x133 + if(Cam != none) + { + camModule = TgCameraModule_ThirdPerson(Cam.CurrentCameraMod); + // End:0x133 + if(camModule != none) + { + // End:0xEA + if(m_bNoSmoothedMovementCorrection) + { + camModule.vServerCorrectionDelta = vect(0.0000000, 0.0000000, 0.0000000); + // End:0xE7 + if(!c_bProcessedNoSmoothNotification) + { + c_bProcessedNoSmoothNotification = true; + ServerAckNoSmoothCorrection(WorldInfo.TimeSeconds); + } + } + else + { + camModule.vServerCorrectionDelta += (Pawn.Location - m_vLastServerCorrectOrigPos); + } + } + } + //return; +} + +function bool ShouldInterpolateMovementCorrections() +{ + return !m_bNoSmoothedMovementCorrection; + //return ReturnValue; +} + +event SetNoSmoothedMovementCorrection(bool bNoSmoothedCorrections, optional bool bManaged = false) +{ + // End:0x3B + if((int(Role) != int(ROLE_Authority)) || s_bIsNoSmoothMovementCorrectionManaged && !bManaged) + { + return; + } + s_bNoSmoothedMovementCorrectionRequested = bNoSmoothedCorrections; + s_bIsNoSmoothMovementCorrectionManaged = bManaged && s_bNoSmoothedMovementCorrectionRequested; + m_bNoSmoothedMovementCorrection = m_bNoSmoothedMovementCorrection || s_bNoSmoothedMovementCorrectionRequested; + //return; +} + +event SendClientAdjustment() +{ + // End:0x8D + if((s_bNoSmoothedMovementCorrectionRequested && AcknowledgedPawn == Pawn) && PendingAdjustment.TimeStamp != float(0)) + { + s_fLastConfirmedSentSmoothedMovementTimestamp = PendingAdjustment.TimeStamp; + // End:0x8D + if(!s_bIsNoSmoothMovementCorrectionManaged) + { + s_bNoSmoothedMovementCorrectionRequested = false; + } + } + super(PlayerController).SendClientAdjustment(); + //return; +} + +unreliable server function ServerAckNoSmoothCorrection(float TimeStamp) +{ + // End:0x2F + if(s_bNoSmoothedMovementCorrectionRequested || TimeStamp <= (s_fLastConfirmedSentSmoothedMovementTimestamp + 0.3000000)) + { + return; + } + m_bNoSmoothedMovementCorrection = false; + //return; +} + +simulated function RecievedServerMovement(float TimeStamp, bool bNoInterp) +{ + // End:0x46 + if(bNoInterp) + { + c_fLastRecievedNoSmoothTimestamp = FMax(c_fLastRecievedNoSmoothTimestamp, TimeStamp); + c_bProcessedNoSmoothNotification = false; + m_bNoSmoothedMovementCorrection = true; + } + else + { + // End:0x78 + if(c_bProcessedNoSmoothNotification && TimeStamp > c_fLastRecievedNoSmoothTimestamp) + { + m_bNoSmoothedMovementCorrection = false; + } + } + //return; +} + +unreliable client simulated function LongClientAdjustPositionNoInterp(float TimeStamp, name NewState, Actor.EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, float NewVelX, float NewVelY, float NewVelZ, Actor NewBase, float NewFloorX, float NewFloorY, float NewFloorZ) +{ + RecievedServerMovement(TimeStamp, true); + LongClientAdjustPosition(TimeStamp, NewState, newPhysics, NewLocX, NewLocY, NewLocZ, NewVelX, NewVelY, NewVelZ, NewBase, NewFloorX, NewFloorY, NewFloorZ); + //return; +} + +unreliable client simulated function LongClientAdjustPosition(float TimeStamp, name NewState, Actor.EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, float NewVelX, float NewVelY, float NewVelZ, Actor NewBase, float NewFloorX, float NewFloorY, float NewFloorZ) +{ + RecievedServerMovement(TimeStamp, false); + super(PlayerController).LongClientAdjustPosition(TimeStamp, NewState, newPhysics, NewLocX, NewLocY, NewLocZ, NewVelX, NewVelY, NewVelZ, NewBase, NewFloorX, NewFloorY, NewFloorZ); + //return; +} + +unreliable client simulated function ClientAdjustPositionNoInterp(float TimeStamp, name NewState, Actor.EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, float NewVelX, float NewVelY, float NewVelZ, Actor NewBase) +{ + RecievedServerMovement(TimeStamp, true); + ClientAdjustPosition(TimeStamp, NewState, newPhysics, NewLocX, NewLocY, NewLocZ, NewVelX, NewVelY, NewVelZ, NewBase); + //return; +} + +unreliable client simulated function ClientAdjustPosition(float TimeStamp, name NewState, Actor.EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, float NewVelX, float NewVelY, float NewVelZ, Actor NewBase) +{ + RecievedServerMovement(TimeStamp, false); + super(PlayerController).ClientAdjustPosition(TimeStamp, NewState, newPhysics, NewLocX, NewLocY, NewLocZ, NewVelX, NewVelY, NewVelZ, NewBase); + //return; +} + +unreliable client simulated function ShortClientAdjustPositionNoInterp(float TimeStamp, name NewState, Actor.EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, Actor NewBase) +{ + RecievedServerMovement(TimeStamp, true); + ShortClientAdjustPosition(TimeStamp, NewState, newPhysics, NewLocX, NewLocY, NewLocZ, NewBase); + //return; +} + +unreliable client simulated function ShortClientAdjustPosition(float TimeStamp, name NewState, Actor.EPhysics newPhysics, float NewLocX, float NewLocY, float NewLocZ, Actor NewBase) +{ + RecievedServerMovement(TimeStamp, false); + super(PlayerController).ShortClientAdjustPosition(TimeStamp, NewState, newPhysics, NewLocX, NewLocY, NewLocZ, NewBase); + //return; +} + +unreliable client simulated function VeryShortClientAdjustPositionNoInterp(float TimeStamp, float NewLocX, float NewLocY, float NewLocZ, Actor NewBase) +{ + RecievedServerMovement(TimeStamp, true); + VeryShortClientAdjustPosition(TimeStamp, NewLocX, NewLocY, NewLocZ, NewBase); + //return; +} + +unreliable client simulated function VeryShortClientAdjustPosition(float TimeStamp, float NewLocX, float NewLocY, float NewLocZ, Actor NewBase) +{ + RecievedServerMovement(TimeStamp, false); + super(PlayerController).VeryShortClientAdjustPosition(TimeStamp, NewLocX, NewLocY, NewLocZ, NewBase); + //return; +} + +unreliable client simulated function ClientAckGoodMoveNoInterp(float TimeStamp) +{ + RecievedServerMovement(TimeStamp, true); + ClientAckGoodMove(TimeStamp); + //return; +} + +unreliable client simulated function ClientAckGoodMove(float TimeStamp) +{ + RecievedServerMovement(TimeStamp, false); + super(PlayerController).ClientAckGoodMove(TimeStamp); + //return; +} + +event MoveAutonomous(float DeltaTime, byte CompressedFlags, Vector newAccel, Rotator DeltaRot) +{ + super(PlayerController).MoveAutonomous(DeltaTime, CompressedFlags, newAccel, DeltaRot); + // End:0x6E + if(TgPawn(Pawn) != none) + { + TgPawn(Pawn).ForceUpdateUncompressedRemoteYaw(); + } + //return; +} + +exec function PlayCameraAnim(CameraAnim CamAnim, optional float Rate = 1.0000000, optional float Scale = 1.0000000, optional float BlendInTime, optional float BlendOutTime, optional bool bLoop, optional bool bRandomStartTime, optional float Duration, optional bool bSingleInstance) +{ + PlayerCamera.PlayCameraAnim(CamAnim, Rate, Scale, BlendInTime, BlendOutTime, bLoop, bRandomStartTime, Duration, bSingleInstance); + //return; +} + +simulated function SetViewportLocationAndScale(Vector2D InOrigin, Vector2D InSize) +{ + local LocalPlayer LocalPlayer; + + LocalPlayer = LocalPlayer(Player); + // End:0x7B + if(LocalPlayer != none) + { + LocalPlayer.Origin = InOrigin; + LocalPlayer.Size = InSize; + } + //return; +} + +exec function ExecSetViewportLocationAndScale(optional float OriginX = 0.0000000, optional float OriginY = 0.0000000, optional float SizeX = 1.0000000, optional float SizeY = 1.0000000) +{ + SetViewportLocationAndScale(vect2d(OriginX, OriginY), vect2d(SizeX, SizeY)); + //return; +} + +simulated function StartBuyBurnCardsTimer() +{ + SetTimer(30.0000000, false, m_nameBuyBurnCardsTimer); + // End:0x46 + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + ClientStartBuyBurnCardsTimer(); + } + //return; +} + +reliable client simulated function ClientStartBuyBurnCardsTimer() +{ + StartBuyBurnCardsTimer(); + //return; +} + +function BuyBurnCards() +{ + //return; +} + +event bool IsPlayerDead() +{ + return IsDead(); + //return ReturnValue; +} + +reliable client simulated exec function HideMeshes(bool bHide1PMesh, bool bHide3PMesh) +{ + local TgPawn_Character Character; + + Character = TgPawn_Character(Pawn); + // End:0x93 + if(Character != none) + { + Character.c_bHideMeshFromKismet = bHide3PMesh; + Character.m_WeaponMesh.SetHidden(bHide1PMesh); + } + //return; +} + +event SendEnergyUpdatedEvent() +{ + local TgPawn ActualPawn; + local float CurrentEnergy; + local int EnergyIndex; + + ActualPawn = TgPawn(Pawn); + // End:0xC3 + if(ActualPawn != none) + { + CurrentEnergy = ActualPawn.GetPropCurrentValue(2); + EnergyIndex = Class'TgGame.TgSeqEvent_EnergyUpdated'.static.GetIndex(CurrentEnergy, float(m_EnergyLastFrame)); + // End:0xC3 + if(EnergyIndex != -1) + { + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_EnergyUpdated', self, EnergyIndex); + } + } + //return; +} + +simulated function bool IsDeviceLockingInput() +{ + return m_nDevicesLockingInput > 0; + //return ReturnValue; +} + +simulated function bool IsDeviceLockingCamera() +{ + return m_nDevicesLockingCamera > 0; + //return ReturnValue; +} + +simulated function bool IsDeviceLockingRotation() +{ + return m_nDevicesLockingRotation > 0; + //return ReturnValue; +} + +// Export UTgPlayerController::execGetInputType(FFrame&, void* const) +native static function TgPlayerController.EPlayerInputType GetInputType(TgObject.TG_EQUIP_POINT eqp); + +// Export UTgPlayerController::execIsInputAllowed(FFrame&, void* const) +native function bool IsInputAllowed(TgPlayerController.EPlayerInputType InputType); + +// Export UTgPlayerController::execSetInputAllowed(FFrame&, void* const) +native exec function SetInputAllowed(TgPlayerController.EPlayerInputType InputType, bool bEnabled); + +simulated function SetAllInputAllowed(bool bEnabled) +{ + local int X; + + X = 0; + J0x0B: + + // End:0x48 [Loop If] + if(X < 20) + { + SetInputAllowed(byte(X), bEnabled); + X++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +event InputReceived(TgPlayerController.EPlayerInputType InputType) +{ + local TgGame_Paladins_Tutorial Tutorial; + + Tutorial = TgGame_Paladins_Tutorial(WorldInfo.Game); + // End:0x68 + if(Tutorial != none) + { + Tutorial.LocalPlayerInputReceived(InputType); + } + Class'TgGame.TgSeqEvent_InputReceived'.static.TriggerGlobal(self, InputType, IsInputAllowed(InputType)); + //return; +} + +event OnBurnCardPurchased(TgDevice BurnCard, int nEquipSlot, int nFilledCardSlots) +{ + local int BurnCardSlots; + + BurnCardSlots = 3; + // End:0x60 + if(BurnCard != none) + { + Class'TgGame.TgSeqEvent_BurnCardPurchased'.static.TriggerGlobal(Pawn, nFilledCardSlots, nFilledCardSlots == BurnCardSlots); + } + //return; +} + +reliable client simulated function ClientUpdateTF1Score(int nScore) +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce TF1; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0xA2 + if(GRI != none) + { + TF1 = GRI.GetTaskForce(1); + // End:0xA2 + if(TF1 != none) + { + TF1.c_nScoreOverride = nScore; + } + } + //return; +} + +reliable client simulated function ClientUpdateTF2Score(int nScore) +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce TF2; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0xA3 + if(GRI != none) + { + TF2 = GRI.GetTaskForce(2); + // End:0xA3 + if(TF2 != none) + { + TF2.c_nScoreOverride = nScore; + } + } + //return; +} + +function int GetCredits() +{ + local TgRepInfo_Player PRI; + + PRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x4A + if(PRI != none) + { + return PRI.r_nCredits; + } + return 0; + //return ReturnValue; +} + +function SetCredits(int nCreditsAmount) +{ + local TgRepInfo_Player PRI; + + PRI = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x108 + if(PRI != none) + { + // End:0xBF + if(nCreditsAmount > PRI.r_nCredits) + { + PRI.r_nEarnedCredits += (nCreditsAmount - PRI.r_nCredits); + PRI.UpdateScoreboard(); + } + PRI.r_nCredits = nCreditsAmount; + PRI.bNetDirty = true; + } + //return; +} + +function ResetUlt() +{ + local TgPawn TgP; + + TgP = TgPawn(Pawn); + // End:0x4A + if(TgP != none) + { + TgP.ResetUlt(); + } + //return; +} + +reliable client simulated function ClientActivateSpawnGates() +{ + local TgSpawnGate SpawnGate; + + // End:0x4E + foreach WorldInfo.DynamicActors(Class'TgGame.TgSpawnGate', SpawnGate) + { + SpawnGate.Activate(); + } + //return; +} + +reliable client simulated function ClientDeactivateSpawnGates() +{ + local TgSpawnGate SpawnGate; + + // End:0x4E + foreach WorldInfo.DynamicActors(Class'TgGame.TgSpawnGate', SpawnGate) + { + SpawnGate.Deactivate(); + } + //return; +} + +reliable client simulated function ClientToggleSpawnGateTeamColors() +{ + local TgSpawnGate SpawnGate; + + // End:0x4E + foreach WorldInfo.DynamicActors(Class'TgGame.TgSpawnGate', SpawnGate) + { + SpawnGate.ToggleTeamColors(); + } + //return; +} + +reliable client simulated function ClientDeactivateAttackersSpawnGates() +{ + local TgSpawnGate SpawnGate; + + // End:0x77 + foreach WorldInfo.DynamicActors(Class'TgGame.TgSpawnGate', SpawnGate) + { + // End:0x76 + if(int(SpawnGate.m_eSpawnGateType) == int(1)) + { + SpawnGate.Deactivate(); + } + } + //return; +} + +reliable client simulated function ClientDeactivateDefendersSpawnGates() +{ + local TgSpawnGate SpawnGate; + + // End:0x77 + foreach WorldInfo.DynamicActors(Class'TgGame.TgSpawnGate', SpawnGate) + { + // End:0x76 + if(int(SpawnGate.m_eSpawnGateType) == int(2)) + { + SpawnGate.Deactivate(); + } + } + //return; +} + +event ToggleCaptureProgressAkEvent(bool bEnable) +{ + // End:0x64 + if(bEnable != c_bCaptureProgressAkEventPlaying) + { + // End:0x3C + if(bEnable) + { + PostAkEvent(m_CaptureProgressPlayAkEvent); + } + else + { + PostAkEvent(m_CaptureProgressStopAkEvent); + } + c_bCaptureProgressAkEventPlaying = bEnable; + } + //return; +} + +simulated exec function SetServerCorrectionCameraInterpVars(float SnapDist, float MinBaseSpeed, float MaxBaseSpeed, float BaseSpeedMult, float NewInfoWeight, float MinCorrectionMod, float MaxCorrectionMod, float CorrectionModMult) +{ + local TgCameraModule_ThirdPerson CamMod; + + CamMod = TgCameraModule_ThirdPerson(GetCurrentCameraModule()); + // End:0x204 + if(CamMod != none) + { + CamMod.CorrectionSmoothing.fServerCorrectSnapDist = SnapDist; + CamMod.CorrectionSmoothing.fMinBaseSpeed = MinBaseSpeed; + CamMod.CorrectionSmoothing.fMaxBaseSpeed = MaxBaseSpeed; + CamMod.CorrectionSmoothing.fBaseSpeedMultiplier = BaseSpeedMult; + CamMod.CorrectionSmoothing.fNewInfoWeight = NewInfoWeight; + CamMod.CorrectionSmoothing.fMinCorrectionModifier = MinCorrectionMod; + CamMod.CorrectionSmoothing.fMaxCorrectionModifier = MaxCorrectionMod; + CamMod.CorrectionSmoothing.fCorrectionModifierMultiplier = CorrectionModMult; + } + //return; +} + +// Export UTgPlayerController::execSwitchChampion(FFrame&, void* const) +native function SwitchChampion(int BotId, int BodySkinId, int HeadSkinId, int WeaponSkinId, int VoicePackId); + +simulated exec function LogLocalPropertyValue(int nPropId) +{ + local TgPawn TgP; + + TgP = GetTgPawn(); + // End:0x23 + if(TgP != none) + { + } + //return; +} + +event ResetCaptureProgressRTPC() +{ + m_fCachedCaptureProgress = 0.0000000; + //return; +} + +exec function FixAll() +{ + local editinline TgSkeletalMeshComponent MeshComp; + + MeshComp = TgPawn(Pawn).m_WeaponMesh.m_WeaponMesh1P; + MeshComp.SetHasPhysicsAssetInstance(true); + MeshComp.PhysicsWeight = 1.0000000; + MeshComp.PhysicsAssetInstance.SetAllBodiesFixed(true); + //return; +} + +exec function Unfix(name BoneName) +{ + local editinline TgSkeletalMeshComponent MeshComp; + local RB_BodyInstance Body; + + MeshComp = TgPawn(Pawn).m_WeaponMesh.m_WeaponMesh1P; + MeshComp.SetHasPhysicsAssetInstance(true); + MeshComp.PhysicsWeight = 1.0000000; + Body = MeshComp.FindBodyInstanceNamed(BoneName); + // End:0xEC + if(Body != none) + { + Body.SetFixed(false); + } + //return; +} + +reliable client simulated event ClientDrawDebugLine(float X, float Y, float Z, float X2, float Y2, float z2, byte R, byte G, byte B) +{ + local Vector P1, P2; + + P1.X = X; + P1.Y = Y; + P1.Z = Z; + P2.X = X2; + P2.Y = Y2; + P2.Z = z2; + DrawDebugLine(P1, P2, R, G, B, true); + //return; +} + +reliable client simulated event ClientDrawDebugBox(float X, float Y, float Z, float extX, float extY, float extZ, byte R, byte G, byte B) +{ + local Vector Center, extents; + + Center.X = X; + Center.Y = Y; + Center.Z = Z; + extents.X = extX; + extents.Y = extY; + extents.Z = extZ; + DrawDebugBox(Center, extents, R, G, B, true); + //return; +} + +reliable client simulated event ClientDrawDebugSphere(float X, float Y, float Z, float Radius, int Segments, byte R, byte G, byte B) +{ + local Vector Center; + + Center.X = X; + Center.Y = Y; + Center.Z = Z; + DrawDebugSphere(Center, Radius, Segments, R, G, B, true); + //return; +} + +exec function EnablePhysics(bool bEnabled) +{ + TgPawn(Pawn).m_WeaponMesh.m_WeaponMesh1P.SetHasPhysicsAssetInstance(true); + TgPawn(Pawn).m_WeaponMesh.m_WeaponMesh1P.PhysicsWeight = ((bEnabled) ? 1.0000000 : 0.0000000); + //return; +} + +exec function SetPhysicsWeight(float Amount) +{ + TgPawn(Pawn).m_WeaponMesh.m_WeaponMesh1P.PhysicsWeight = Amount; + //return; +} + +simulated function bool IsForceFeedbackAllowed() +{ + return (ForceFeedbackManager != none) && ForceFeedbackManager.bAllowsForceFeedback || myHUD.IsA('TgLobbyHUD'); + //return ReturnValue; +} + +state PlayerWalking +{ + ignores Bump, HearNoise, SeePlayer; + + event BeginState(name PreviousStateName) + { + super.BeginState(PreviousStateName); + //return; + } + + function bool NotifyLanded(Vector HitNormal, Actor FloorActor) + { + // End:0x23 + if(int(DoubleClickDir) == int(5)) + { + DoubleClickDir = 6; + } + else + { + DoubleClickDir = 0; + } + // End:0x50 + if(global.NotifyLanded(HitNormal, FloorActor)) + { + return true; + } + return false; + //return ReturnValue; + } + + function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) + { + local Vector PawnX, PawnY, PawnZ; + local float MovementForward, MovementRight; + local bool MovingOnForwardAxis, MovingOnRightAxis; + local float ServerFloatEpsilon; + + ServerFloatEpsilon = 0.0500000; + // End:0x64 + if(ControlModule != none) + { + ControlModule.ProcessMove(DeltaTime, newAccel, DoubleClickMove, DeltaRot); + } + else + { + super.ProcessMove(DeltaTime, newAccel, DoubleClickMove, DeltaRot); + } + // End:0x2D9 + if((int(WorldInfo.NetMode) != int(NM_Client)) && Pawn != none) + { + Pawn.GetAxes(Pawn.Rotation, PawnX, PawnY, PawnZ); + MovementForward = newAccel Dot PawnX; + MovementRight = newAccel Dot PawnY; + MovingOnForwardAxis = Abs(MovementForward) > ServerFloatEpsilon; + MovingOnRightAxis = Abs(MovementRight) > ServerFloatEpsilon; + // End:0x23B + if(MovingOnForwardAxis && !MovingOnRightAxis) + { + // End:0x203 + if(MovementForward > 0.0000000) + { + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_PlayerMoved', self, Class'TgGame.TgSeqEvent_PlayerMoved'.static.GetIndex(0)); + } + else + { + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_PlayerMoved', self, Class'TgGame.TgSeqEvent_PlayerMoved'.static.GetIndex(1)); + } + } + else + { + // End:0x2D9 + if(MovingOnRightAxis && !MovingOnForwardAxis) + { + // End:0x2A4 + if(MovementRight > 0.0000000) + { + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_PlayerMoved', self, Class'TgGame.TgSeqEvent_PlayerMoved'.static.GetIndex(3)); + } + else + { + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_PlayerMoved', self, Class'TgGame.TgSeqEvent_PlayerMoved'.static.GetIndex(2)); + } + } + } + } + //return; + } + + function PlayerMove(float DeltaTime) + { + // End:0x52 + if(TgPlayerCamera(PlayerCamera) != none) + { + TgPlayerCamera(PlayerCamera).ProcessInput(PlayerInput, DeltaTime); + } + // End:0x72 + if(Pawn == none) + { + GotoState('Dead'); + } + else + { + // End:0xAC + if(ControlModule != none) + { + ControlModule.PlayerMove(DeltaTime); + } + else + { + super.PlayerMove(DeltaTime); + } + } + //return; + } + + function UpdateRotation(float DeltaTime) + { + // End:0x3A + if(ControlModule != none) + { + ControlModule.UpdateRotation(DeltaTime); + } + else + { + super(PlayerController).UpdateRotation(DeltaTime); + } + ViewShake(DeltaTime); + //return; + } + stop; +} + +state PlayerClimbing +{ + ignores Bump, HearNoise, SeePlayer; + + exec function OnRightMousePressed() + { + // End:0x2B + if(int(Role) < int(ROLE_Authority)) + { + LadderLetGo(); + ServerLadderLetGo(); + } + else + { + LadderLetGo(); + } + //return; + } + + exec function OnLeftMousePressed() + { + // End:0x70 + if((Pawn.Weapon != none) && TgDevice(Pawn.Weapon).CanFireWhileHanging()) + { + global.OnLeftMousePressed(); + } + //return; + } + + function BeginState(name PreviousStateName) + { + // End:0xB8 + if((Pawn.Weapon != none) && TgDevice(Pawn.Weapon).CanFireWhileHanging() == false) + { + TgPawn(Pawn).StopAction(TgDevice(Pawn.Weapon)); + } + super.BeginState(PreviousStateName); + //return; + } + + function EndState(name NextStateName) + { + Pawn.SetRotation(Rotation); + super.EndState(NextStateName); + //return; + } + + function PlayerMove(float DeltaTime) + { + local Vector X, Y, Z, newAccel; + + // End:0xEF + if(Pawn.OnLadder != none) + { + newAccel = PlayerInput.aForward * Pawn.OnLadder.ClimbDir; + // End:0xEC + if(Pawn.OnLadder.bAllowLadderStrafing) + { + newAccel += (PlayerInput.aStrafe * Y); + } + } + else + { + newAccel = (PlayerInput.aForward * X) + (PlayerInput.aStrafe * Y); + } + newAccel = Pawn.AccelRate * Normal(newAccel); + GetAxes(Pawn.Rotation, X, Y, Z); + c_nCameraYawOffset = NormalizeRotAxis(int(float(c_nCameraYawOffset) + PlayerInput.aTurn)); + UpdateRotation(DeltaTime); + // End:0x24F + if(int(Role) < int(ROLE_Authority)) + { + ReplicateMove(DeltaTime, newAccel, 0, Rotation); + } + else + { + ProcessMove(DeltaTime, newAccel, 0, Rotation); + } + bPressedJump = false; + //return; + } + + function UpdateRotation(float DeltaTime) + { + local Rotator DeltaRot, ViewRotation; + + ViewRotation = Rotation; + Pawn.SetDesiredRotation(ViewRotation); + DeltaRot.Yaw = int(PlayerInput.aTurn); + DeltaRot.Pitch = int(PlayerInput.aLookUp); + ProcessViewRotation(DeltaTime, ViewRotation, DeltaRot); + SetRotation(ViewRotation); + // End:0x12A + if(Pawn != none) + { + Pawn.FaceRotation(ViewRotation, DeltaTime); + } + //return; + } + stop; +} + +state Dead +{ + ignores ServerRestartPlayer, StartFire, SetControlModuleOnPossess, ClientPlayForceFeedbackWaveform, ClientPlayCameraShake, PrevWeapon, + NextWeapon, KilledBy, HearNoise, SeePlayer; + + event Revive() + { + local NavigationPoint RestartNavPoint; + local TgPawn myPawn; + local Vector NewLocation; + local Rotator NewRotation; + local int Idx; + local SeqEvent_PlayerSpawned SpawnedEvent; + local array Events; + local TgRepInfo_Player prep; + local TgGame_Battle bg; + local TgGame_Paladins tgc; + + // End:0x16 + if(int(Role) != int(ROLE_Authority)) + { + return; + } + ClearTimer('ReviveTimer'); + ClearTimer('ViewObjectiveCamerasTimer'); + prep = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x8D + if(prep != none) + { + prep.r_fReviveSecs = 0.0000000; + } + Pawn.bReplicateMovement = true; + TgPawn(Pawn).r_DeathInfo.bDead = false; + TgPawn(Pawn).r_DeathInfo.dmgType = none; + // End:0x13E + if(IsLocalPlayerController()) + { + UpdatePlayerVitalsUI(); + } + RestartNavPoint = TgGame(WorldInfo.Game).GetReviveLocation(self, NewLocation, NewRotation); + SetNoSmoothedMovementCorrection(true, false); + Pawn.SetLocation(NewLocation); + Pawn.SetRotation(NewRotation); + SetRotation(NewRotation); + Pawn.SetDesiredRotation(NewRotation); + ClientSetRotationAndDesired(NewRotation); + GotoState('PlayerWalking'); + TgPawn(Pawn).OnRespawn(); + TgPawn(Pawn).r_nResetCharacter++; + // End:0x3D4 + if(WorldInfo.GetGameSequence() != none) + { + WorldInfo.GetGameSequence().FindSeqObjectsByClass(Class'Engine.SeqEvent_PlayerSpawned', true, Events); + Idx = 0; + J0x309: + + // End:0x3D4 [Loop If] + if(Idx < Events.Length) + { + SpawnedEvent = SeqEvent_PlayerSpawned(Events[Idx]); + // End:0x3C6 + if((SpawnedEvent != none) && SpawnedEvent.CheckActivate(self, self)) + { + SpawnedEvent.SpawnPoint = RestartNavPoint; + SpawnedEvent.PopulateLinkedVariableValues(); + } + Idx++; + // [Loop Continue] + goto J0x309; + } + } + myPawn = TgPawn(Pawn); + // End:0x504 + if(myPawn != none) + { + myPawn.SetSpawnHealth(); + myPawn.SetSpawnMana(); + myPawn.bReplicateMovement = true; + myPawn.m_LastDamager = none; + myPawn.s_Damagers.Remove(0, TgPawn(Pawn).s_Damagers.Length); + myPawn.s_nSpawnTime = WorldInfo.TimeSeconds; + } + bg = TgGame_Battle(WorldInfo.Game); + // End:0x574 + if((bg != none) && bg.m_bEnableCrowdEvents) + { + ArenaCrowdEvent(3); + } + // End:0x5E4 + if(prep != none) + { + prep.bForceNetUpdate = true; + Pawn.bForceNetUpdate = true; + prep.UpdatePlayerLocation(); + } + m_nReviveBuybackCost = 0; + ClientShowRespawnBuyback(m_nReviveBuybackCost); + StartBuyBurnCardsTimer(); + tgc = TgGame_Paladins(WorldInfo.Game); + // End:0x70A + if(((tgc != none) && tgc.GameplayEventsWriter != none) && tgc.GameplayEventsWriter.IsSessionInProgress()) + { + tgc.GameplayEventsWriter.LogPlayerSpawnEvent(102, self, Pawn.Class, GetTaskForceNumber()); + } + //return; + } + + reliable client simulated event ClientSetViewTarget(Actor A, optional ViewTargetTransitionParams TransitionParams) + { + // End:0x1C + if(A == none) + { + ServerVerifyViewTarget(); + return; + } + SetViewTarget(A, TransitionParams); + //return; + } + + function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) + { + // End:0x55 + if(ControlModule != none) + { + ControlModule.ProcessMove(DeltaTime, newAccel, DoubleClickMove, DeltaRot); + } + else + { + super(PlayerController).ProcessMove(DeltaTime, newAccel, DoubleClickMove, DeltaRot); + } + //return; + } + + function PlayerMove(float DeltaTime) + { + // End:0x52 + if(TgPlayerCamera(PlayerCamera) != none) + { + TgPlayerCamera(PlayerCamera).ProcessInput(PlayerInput, DeltaTime); + } + // End:0x8C + if(ControlModule != none) + { + ControlModule.PlayerMove(DeltaTime); + } + else + { + super.PlayerMove(DeltaTime); + } + //return; + } + + function UpdateRotation(float DeltaTime) + { + // End:0x3A + if(ControlModule != none) + { + ControlModule.UpdateRotation(DeltaTime); + } + else + { + super(PlayerController).UpdateRotation(DeltaTime); + } + //return; + } + + exec function OnLeftMousePressed() + { + // End:0x1F + if(int(r_WatchOtherPlayer) > int(0)) + { + ServerViewNextPlayer(true); + } + //return; + } + + exec function OnRightMousePressed() + { + // End:0x1F + if(int(r_WatchOtherPlayer) > int(0)) + { + ServerViewPrevPlayer(true); + } + //return; + } + + simulated function FadeForViewPlayersTimer() + { + // End:0x7E + if(((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && !Pawn.IsAliveAndWell()) && CanPlayKillCam(bIsTimelapsePlayOfTheGame)) + { + UIFade(true, m_fWatchOthersFadeToBlackCamTime); + } + //return; + } + + simulated function ViewPlayersTimer() + { + local array viewerArray; + local TgPlayerController PC; + local int I; + local TgPawn myPawn; + + // End:0x1A5 + if(!CanPlayKillCam(bIsTimelapsePlayOfTheGame)) + { + StartWatchOthers(); + myPawn = TgPawn(Pawn); + // End:0x9A + if((myPawn != none) && myPawn.m_DeathDamageType == Class'TgGame.TgDamageType_FallOutOfWorld') + { + SwitchCamera("falloutofworld"); + } + else + { + SwitchCamera("dead"); + } + // End:0x1A2 + if(int(Role) == int(ROLE_Authority)) + { + myPawn = TgPawn(Pawn); + viewerArray = myPawn.s_Viewers; + I = 0; + J0x10D: + + // End:0x1A2 [Loop If] + if(I < viewerArray.Length) + { + PC = TgPlayerController(viewerArray[I]); + // End:0x194 + if((PC != self) && TgSpectatorController(PC) == none) + { + PC.ServerViewNextPlayer(); + } + I++; + // [Loop Continue] + goto J0x10D; + } + } + } + else + { + // End:0x1CE + if(int(Role) == int(ROLE_Authority)) + { + StartTimelapsePlayback(-7.5000000, -3.0000000); + } + } + //return; + } + + function BeginState(name PreviousStateName) + { + local LocalPlayer LocPlayer; + local float fReviveTime; + local TgRepInfo_Player prep; + local TgPawn aPawn; + + aPawn = TgPawn(Pawn); + // End:0x51 + if((Player == none) || Pawn == none) + { + super.BeginState(PreviousStateName); + return; + } + OnLeftMouseReleased(); + OnRightMouseReleased(); + bPressedJump = false; + m_bJustDidJumpDoubleTap = false; + m_JumpHeld = 0; + m_JumpHeldAlt = 0; + // End:0xAC + if(IsLocalPlayerController()) + { + UpdatePlayerVitalsUI(); + } + // End:0x106 + if((aPawn != none) && aPawn.m_DeathDamageType == Class'TgGame.TgDamageType_FallOutOfWorld') + { + SwitchCamera("falloutofworld"); + } + else + { + // End:0x160 + if(!WorldInfo.IsPlayingDemo() && !WorldInfo.IsPlayingTimelapse()) + { + SwitchCamera("dead"); + } + } + // End:0x1F0 + if((m_fTimeToViewOthersCamAfterDeath > float(0)) && s_fWaitForSpawnSecs == float(0)) + { + SetTimer(m_fTimeToViewOthersCamAfterDeath, false, 'ViewPlayersTimer'); + // End:0x1ED + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + SetTimer((m_fTimeToViewOthersCamAfterDeath - m_fWatchOthersFadeToBlackCamTime) - 0.1000000, false, 'FadeForViewPlayersTimer'); + } + } + else + { + ViewPlayersTimer(); + } + // End:0x257 + if(!WorldInfo.IsPlayingDemo() && !WorldInfo.IsPlayingTimelapse()) + { + SwitchControl(Class'TgGame.TgControlModule_Dead'); + } + Pawn.ShouldCrouch(false); + bDuck = 0; + LocPlayer = LocalPlayer(Player); + // End:0x3BD + if((((LocPlayer != none) && LocPlayer.ViewportClient != none) && LocPlayer.ViewportClient.UIController != none) && LocPlayer.ViewportClient.UIController.SceneClient != none) + { + LocPlayer.ViewportClient.UIController.SceneClient.TgFlushPlayerInput(); + } + CleanOutSavedMoves(); + FOVAngle = DesiredFOV; + Enemy = none; + bFrozen = true; + bPressedJump = false; + m_fDeathTime = WorldInfo.TimeSeconds; + // End:0x4EA + if(int(Role) == int(ROLE_Authority)) + { + fReviveTime = StartReviveTimer(!s_bAddDeadTimeStatsTracker); + s_bAddDeadTimeStatsTracker = true; + UpdateReviveTimeRemaining(fReviveTime); + prep = TgRepInfo_Player(PlayerReplicationInfo); + // End:0x4EA + if(prep != none) + { + prep.OnDeath(); + prep.r_fReviveSecs = fReviveTime; + } + } + CancelInBombRange(); + // End:0x55F + if(TgGame(WorldInfo.Game) != none) + { + TgGame(WorldInfo.Game).PlayerDied(self); + } + // End:0x58F + if(aPawn != none) + { + aPawn.s_bHasInteractedWithStore = false; + } + //return; + } + + function EndState(name NextStateName) + { + local TgPawn TgP; + + TgP = TgPawn(Pawn); + // End:0x58 + if(TgP != none) + { + m_eCurrentStunType = 0; + TgP.r_eCurrentStunType = 0; + } + // End:0x7F + if(int(Role) != int(ROLE_Authority)) + { + SetSoundMode('Default'); + } + UpdateReviveTimeRemaining(0.0000000); + // End:0x14E + if((((NextStateName != 'None') && NextStateName != 'RoundEnded') && NextStateName != 'PlayerMatchOver') && int(Role) == int(ROLE_Authority)) + { + // End:0x14E + if(IsTimerActive('ReviveTimer') || TgPawn(Pawn).r_DeathInfo.bDead) + { + Revive(); + } + } + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + bPressedJump = false; + // End:0x1BC + if(NextStateName != 'RoundEnded') + { + StopWatchOthers(); + SwitchCamera("default"); + } + CleanOutSavedMoves(); + // End:0x224 + if(int(Role) < int(ROLE_Authority)) + { + // End:0x224 + if(Pawn != none) + { + c_nCameraYawOffset = Pawn.Rotation.Yaw; + } + } + // End:0x2BF + if(((!bDeleteMe && !bPendingDelete) && NextStateName != 'PlayerMatchOver') && Pawn != none) + { + Pawn.SetCollision(true, true, false); + Pawn.SetLocation(Pawn.Location); + } + UIFade(false, m_fWatchOthersFadeFromBlackCamTime); + EndTimelapsePlayback(); + //return; + } + + event ControllerPostTimeLapse() + { + local TgPlayerCamera Cam; + local TgPawn TgP; + local array AllTimeLapseEvents; + local TgSeqEvent_TimeLapse TimeLapseEvt; + local Sequence GameSeq; + local int Idx; + local array ActivateIndices; + + TgP = TgPawn(Pawn); + // End:0xE9 + if((TgP != none) && !IsZero(TgP.m_vMeshTranslationOffset) || TgP.m_bDoSmoothCorrectionThisTick) + { + TgP.m_vMeshTranslationOffset = vect(0.0000000, 0.0000000, 0.0000000); + TgP.m_bDoSmoothCorrectionThisTick = false; + TgP.SmoothCorrectionTranslationTick(0.0000000, true); + } + SetHUDOverlay(0); + StartWatchOthers(); + ClearKillCamTarget(); + Cam = TgPlayerCamera(PlayerCamera); + // End:0x17D + if(Cam != none) + { + Cam.ResetFOV(); + Cam.SwitchCameras(Class'TgGame.TgCameraModule_SpectatorFirstPerson'); + } + ServerViewNextPlayer(true); + GameSeq = WorldInfo.GetGameSequence(); + // End:0x292 + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_TimeLapse', true, AllTimeLapseEvents); + ActivateIndices.AddItem(1); + Idx = 0; + J0x20B: + + // End:0x292 [Loop If] + if(Idx < AllTimeLapseEvents.Length) + { + TimeLapseEvt = TgSeqEvent_TimeLapse(AllTimeLapseEvents[Idx]); + // End:0x284 + if(TimeLapseEvt != none) + { + TimeLapseEvt.CheckActivate(self, self, false, ActivateIndices); + } + Idx++; + // [Loop Continue] + goto J0x20B; + } + } + OnPostTimeLapse(); + //return; + } + stop; +} + +auto state PlayerWaiting +{ + ignores ServerSuicide, PlayerMove, Suicide, Jump, StopAltFire, StartAltFire, + StartFire, SwitchToBestWeapon, PrevWeapon, NextWeapon, PhysicsVolumeChange, + TakeDamage, NotifyBump, HearNoise, SeePlayer; + + reliable server function ServerRestartPlayer() + { + super.ServerRestartPlayer(); + // End:0x62 + if(WorldInfo.Game.bWaitingToStartMatch) + { + PlayerReplicationInfo.bReadyToPlay = false; + } + //return; + } + + simulated function BeginState(name PreviousStateName) + { + super.BeginState(PreviousStateName); + c_nCameraYawOffset = 32767; + // End:0x55 + if(PlayerReplicationInfo != none) + { + PlayerReplicationInfo.bReadyToPlay = false; + } + //return; + } + + function EndState(name NextStateName) + { + super.EndState(NextStateName); + //return; + } + stop; +} + +state Spectating +{ + ignores EndState; + + exec function ViewPlayerByName(string PlayerName) + { + ServerViewPlayerByName(PlayerName); + //return; + } + + exec function PrevWeapon() + { + ServerViewPrevPlayer(); + //return; + } + + exec function NextWeapon() + { + ServerViewNextPlayer(); + //return; + } + + exec function OnRightMousePressed() + { + ServerViewSelf(); + //return; + } + stop; +} + +state RoundEnded +{ + ignores EndState, Timer; + + event BeginState(name PreviousStateName) + { + ClearTimer(); + SendSessionEnd(); + FOVAngle = DesiredFOV; + bFire = 0; + // End:0x78 + if(Pawn != none) + { + StopFiring(); + TgPawn(Pawn).s_bCanApplyEffects = false; + } + // End:0xC1 + if(IsLocalPlayerController()) + { + SetTimeDilation(1.0000000, 0.0000000); + SetDesaturation(0.0000000, 0.0000000); + FadeHud(); + BeginFadeOut(); + } + //return; + } + + function BeginFadeOut() + { + local float FadeDuration; + + FadeDuration = 0.2500000; + SetTimer(FadeDuration, false, 'OnFadeOutComplete'); + //return; + } + + function OnFadeOutComplete() + { + local float OutroTime; + + SetTimeDilation(1.0000000, 0.0000000); + SetDesaturation(0.0000000, 0.0000000); + // End:0x65 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + SetViewTarget(m_EndGameFocus); + } + TgPlayerCamera(PlayerCamera).SwitchCameras(Class'TgGame.TgCameraModule_Attached', 0.0000000); + OutroTime = GetOutroTime(); + SetTimer(OutroTime - 2.0000000, false, 'BeginMatchOutroFade'); + SetTimer(OutroTime, false, 'OnFinishedMatchOutro'); + AnnounceEOM(); + //return; + } + + function BeginMatchOutroFade() + { + DoFade(false, 2.0000000); + //return; + } + + function OnFinishedMatchOutro() + { + SendGameOverEvent(c_GameWinState, (GetTaskForceNumber()) == 1); + TgHUD(myHUD).MapOutroFinished(); + //return; + } + + function AnnounceEOM() + { + local TgPawn myPawn; + local bool bAttackerWon, bPlayerIsAttacker; + + SetSoundMode('GA_RoundOver'); + // End:0x13B + if(TgHUD(myHUD) != none) + { + bAttackerWon = int(c_GameWinState) == int(2); + bPlayerIsAttacker = (GetTaskForceNumber()) == 1; + TgHUD(myHUD).EndMission(bPlayerIsAttacker, c_GameWinState); + myPawn = TgPawn(Pawn); + // End:0x13B + if(myPawn != none) + { + // End:0x10E + if(bPlayerIsAttacker == bAttackerWon) + { + myPawn.PlayEmoteSelfOnly(24); + NativeAnnounceEOM(true); + } + else + { + myPawn.PlayEmoteSelfOnly(25); + NativeAnnounceEOM(false); + } + } + } + //return; + } + stop; +} + +simulated state Unconscious extends PlayerWalking +{ + function BeginState(name PreviousStateName) + { + CleanOutSavedMoves(); + // End:0x31 + if(ShouldStunChangePhysics()) + { + Pawn.SetPhysics(1); + } + //return; + } + + function EndState(name NextStateName) + { + CleanOutSavedMoves(); + Pawn.SetRotation(Rotation); + SwitchControl(none); + //return; + } + + function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) + { + // End:0x55 + if(ControlModule != none) + { + ControlModule.ProcessMove(DeltaTime, newAccel, DoubleClickMove, DeltaRot); + } + else + { + super.ProcessMove(DeltaTime, newAccel, DoubleClickMove, DeltaRot); + } + //return; + } + + function PlayerMove(float DeltaTime) + { + // End:0x52 + if(TgPlayerCamera(PlayerCamera) != none) + { + TgPlayerCamera(PlayerCamera).ProcessInput(PlayerInput, DeltaTime); + } + // End:0x8C + if(ControlModule != none) + { + ControlModule.PlayerMove(DeltaTime); + } + else + { + super.PlayerMove(DeltaTime); + } + //return; + } + + function UpdateRotation(float DeltaTime) + { + // End:0x3A + if(ControlModule != none) + { + ControlModule.UpdateRotation(DeltaTime); + } + else + { + super.UpdateRotation(DeltaTime); + } + //return; + } + stop; +} + +defaultproperties +{ + r_bCanChangeLoadout=true + m_bContextNotifiesEnabled=true + m_bShowPlayerCircles=true + m_bAllowUndrawnPurchase=true + m_bOutlineEnemies=true + m_bOutlineFriendlies=true + m_bThreatSystemEnabled=true + m_bOcclusionSystemEnabled=true + m_bRewindMoversForReplaySavedMoves=true + m_bShowChampionOverviewTip=true + m_bEnableUltimateAkEventUnocclusion=true + c_fTimeTillAFK=180.0000000 + m_fLastLostHealthTime=-1.0000000 + m_fDeathTime=-1.0000000 + DefaultControlModuleClass=Class'TgGame.TgControlModule_ThirdPerson' + m_fPendingReloadTime=-0.5000000 + m_fPendingReloadMaxTime=0.5000000 + m_fTimeToViewOthersCamAfterDeath=2.5000000 + m_fWatchOthersFadeToBlackCamTime=0.5000000 + m_fWatchOthersFadeFromBlackCamTime=0.3000000 + r_nFlashSimProjIdx=-1 + c_nLastFlashSimProjIdx=-1 + m_fPathfinderStreamTime=1.0000000 + m_fPathfinderPulseTime=0.5000000 + m_fPathfinderLifetime=2.5000000 + m_fPathfinderSpeed=800.0000000 + m_fPathfinderStartDist=500.0000000 + c_FallWindSoundPlay=AkEvent'WW_PC_Shared.PC_Shared_Fall_Wind_LP_1P_Play' + c_FallWindSoundStop=AkEvent'WW_PC_Shared.PC_Shared_Fall_Wind_LP_1P_Stop' + m_nKillCamTargetId=-1 + m_nKillCamTargetBackupId=-1 + m_fMaxJumpDoubleTapTime=0.2500000 + m_fThreatCoefficientProximity=0.5000000 + m_fThreatCoefficientOcclusion=1.0000000 + m_fThreatCoefficientUlt=4.0000000 + m_fThreatCoefficientShotAt=2.0000000 + m_fThreatCoefficientSeenBy=0.7500000 + m_fThreatCoefficientDamaged=0.2500000 + m_fThreatCoefficientFocused=1.0000000 + m_fThreatCoefficientBehind=0.5000000 + m_fThreatDecayCoefficientShotAt=0.5000000 + m_fThreatDecayCoefficientSeenBy=0.5000000 + m_fThreatDecayCoefficientUlt=0.5000000 + m_nameBuyBurnCardsTimer="BuyBurnCards" + m_RoundEndAlert=AkEvent'WW_UI_Default.UI_InGame_Alert_RoundEnd_1P_Play' + m_CaptureProgressPlayAkEvent=AkEvent'WW_UI_Default.UI_InGame_Alert_PointProgress_LP_1P_Play' + m_CaptureProgressStopAkEvent=AkEvent'WW_UI_Default.UI_InGame_Alert_PointProgress_LP_1P_Stop' + m_PointGettingCapturedPlayAkEvent=AkEvent'WW_UI_Default.UI_InGame_Alert_Point_Getting_Captured_1P_Play' + m_fShowChampionOverviewTipDelay=3.0000000 + s_fIdleTimeReduction=1.0000000 + c_nLeadingTeam=1 + c_nLeadingTeamTicketAmount=15 + m_nMaxPartyPublicConnections=5 + CameraClass=Class'TgGame.TgPlayerCamera' + bCheckSoundOcclusion=true + FOVAngle=100.0000000 + DesiredFOV=100.0000000 + DefaultFOV=100.0000000 + SavedMoveClass=Class'TgGame.TgSavedMove' + CheatClass=Class'TgGame.TgBattleCheatManager' + InputClass=Class'TgGame.TgPlayerInput' + // Reference: CylinderComponent'TgGame.Default__TgPlayerController.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'PlatformCommon.Default__PComPlayerController.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + MinHitWall=0.1000000 + Components[0]=CollisionCylinder + s_bThrottleNetRelevancy=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPlayerCountVolume.uc b/exported/TgGame/Classes/TgPlayerCountVolume.uc new file mode 100755 index 00000000..363aeab3 --- /dev/null +++ b/exported/TgGame/Classes/TgPlayerCountVolume.uc @@ -0,0 +1,51 @@ +class TgPlayerCountVolume extends Volume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +var() int PlayerCountTarget; +var() int TaskForceNumber; +var() int MessageId; +var array Players; +var() bool Enabled; + +// Export UTgPlayerCountVolume::execUpdate(FFrame&, void* const) +native function Update(TgPawn Other); + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn OtherPawn; + + OtherPawn = TgPawn(Other); + // End:0xAF + if(((OtherPawn != none) && TgPlayerController(OtherPawn.Controller) != none) && (TaskForceNumber == 0) || int(OtherPawn.GetTaskForceNumber()) == TaskForceNumber) + { + Update(OtherPawn); + } + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + //return; +} + +simulated event int GetCount() +{ + return Players.Length; + //return ReturnValue; +} + +defaultproperties +{ + PlayerCountTarget=4 + TaskForceNumber=1 + MessageId=37340 + Enabled=true + // Reference: BrushComponent'TgGame.Default__TgPlayerCountVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPlayerInput.uc b/exported/TgGame/Classes/TgPlayerInput.uc new file mode 100755 index 00000000..2992fb76 --- /dev/null +++ b/exported/TgGame/Classes/TgPlayerInput.uc @@ -0,0 +1,990 @@ +class TgPlayerInput extends PComPlayerInput within TgPlayerController + transient + native(Pawns) + config(Input) + hidecategories(Object,UIRoot); + +struct native AimAssistTargetWeight +{ + var TgCombatActor Target; + var float Weight; + var float horizAssistVal; + var float vertAssistVal; + var float lastUpdateTimestamp; + + structdefaultproperties + { + Target=none + Weight=0.0000000 + horizAssistVal=0.0000000 + vertAssistVal=0.0000000 + lastUpdateTimestamp=0.0000000 + } +}; + +struct native AimAssistTargetWeightVars +{ + var float CurrentTargetBonus; + var float NotCurrentTargetPenalty; + var float MinAccuracyBonus; + var float MaxAccuracyBonus; + var float MinInaccuracyPenalty; + var float MaxInaccuracyPenalty; + var float MaxWeight; + + structdefaultproperties + { + CurrentTargetBonus=0.0000000 + NotCurrentTargetPenalty=0.0000000 + MinAccuracyBonus=0.0000000 + MaxAccuracyBonus=0.0000000 + MinInaccuracyPenalty=0.0000000 + MaxInaccuracyPenalty=0.0000000 + MaxWeight=0.0000000 + } +}; + +struct native DebugAimAssist +{ + var Actor lastAimAssistTarget; + var float targetDist; + var float assistValX; + var float assistValY; + var name curveMin[7]; + var name curveMax[7]; + var float curveMinVal[7]; + var float curveMaxVal[7]; + var float curveInterpAmt[7]; + var float rawVal[7]; + var float boundsUsedX; + var float boundsUsedY; + var float trackingScaledStrengthFinalX; + var float trackingScaledStrengthFinalY; + + structdefaultproperties + { + lastAimAssistTarget=none + targetDist=0.0000000 + assistValX=0.0000000 + assistValY=0.0000000 + curveMin[0]="None" + curveMin[1]="None" + curveMin[2]="None" + curveMin[3]="None" + curveMin[4]="None" + curveMin[5]="None" + curveMin[6]="None" + curveMax[0]="None" + curveMax[1]="None" + curveMax[2]="None" + curveMax[3]="None" + curveMax[4]="None" + curveMax[5]="None" + curveMax[6]="None" + curveMinVal[0]=0.0000000 + curveMinVal[1]=0.0000000 + curveMinVal[2]=0.0000000 + curveMinVal[3]=0.0000000 + curveMinVal[4]=0.0000000 + curveMinVal[5]=0.0000000 + curveMinVal[6]=0.0000000 + curveMaxVal[0]=0.0000000 + curveMaxVal[1]=0.0000000 + curveMaxVal[2]=0.0000000 + curveMaxVal[3]=0.0000000 + curveMaxVal[4]=0.0000000 + curveMaxVal[5]=0.0000000 + curveMaxVal[6]=0.0000000 + curveInterpAmt[0]=0.0000000 + curveInterpAmt[1]=0.0000000 + curveInterpAmt[2]=0.0000000 + curveInterpAmt[3]=0.0000000 + curveInterpAmt[4]=0.0000000 + curveInterpAmt[5]=0.0000000 + curveInterpAmt[6]=0.0000000 + rawVal[0]=0.0000000 + rawVal[1]=0.0000000 + rawVal[2]=0.0000000 + rawVal[3]=0.0000000 + rawVal[4]=0.0000000 + rawVal[5]=0.0000000 + rawVal[6]=0.0000000 + boundsUsedX=0.0000000 + boundsUsedY=0.0000000 + trackingScaledStrengthFinalX=0.0000000 + trackingScaledStrengthFinalY=0.0000000 + } +}; + +var TgPlayerController c_TgPC; +var bool c_bASKeyCapture; +var bool c_bASSpecKeyCapture; +var bool c_bMiniMapPinging; +var bool c_bAutoRun; +var config bool bEnableAimAssist; +var transient bool bDebugAimAssist; +var globalconfig float GamepadSensitivityX; +var globalconfig float GamepadSensitivityY; +var globalconfig float fScopeSensitivity; +var float m_fMinScopeSensitivityMult; +var float m_fMaxScopeSensitivityMult; +var globalconfig int nAimAccelerationSet; +var globalconfig int nAimAccelerationBoost; +var transient float fTurnSpeedAccelAmt; +var transient float fLookUpSpeedAccelAmt; +var int nAimAccelerationAlgorithm; +var globalconfig int nInnerDeadZoneSize; +var globalconfig int nOuterDeadZoneSize; +var transient Actor BestAimAssistTarget; +var TgGameplayCurves m_AimAssistCurves; +var transient float aTurnFinalValue; +var transient float aLookUpFinalValue; +var transient array m_AimAssistTargets; +var AimAssistTargetWeightVars TargetWeightVars; +var DebugAimAssist DebugAimAssistVals; +//var delegate __OnRawInputKey__Delegate; +//var delegate __OnInputAxis__Delegate; +//var delegate __OnInputChar__Delegate; + +delegate bool OnRawInputKey(int ControllerId, name Key, Object.EInputEvent Event, float AmountDepressed) +{ + //return ReturnValue; +} + +delegate bool OnInputAxis(int ControllerId, name Key, float Delta, float DeltaTime) +{ + //return ReturnValue; +} + +delegate bool OnInputChar(int ControllerId, string Unicode) +{ + //return ReturnValue; +} + +// Export UTgPlayerInput::execStoreMouseSettings(FFrame&, void* const) +native function StoreMouseSettings(); + +// Export UTgPlayerInput::execReadMouseSettings(FFrame&, void* const) +native function ReadMouseSettings(); + +// Export UTgPlayerInput::execResetKeysToDefault(FFrame&, void* const) +native function ResetKeysToDefault(); + +// Export UTgPlayerInput::execSetKeyCaptureState(FFrame&, void* const) +native exec function SetKeyCaptureState(bool bSpectator, bool bCaptureKey); + +// Export UTgPlayerInput::execGenerateKeybindFromButton(FFrame&, void* const) +native function KeyBind GenerateKeybindFromButton(const name ButtonName); + +// Export UTgPlayerInput::execPreProcessJoystickInput(FFrame&, void* const) +native function PreProcessJoystickInput(float fDeltaTime); + +event bool InputChar(int ControllerId, string Unicode) +{ + // End:0x2A + if(OnInputChar(ControllerId, Unicode)) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated exec function Duck() +{ + return; + //return; +} + +function Actor.EDoubleClickDir CheckForDoubleClickMove(float DeltaTime) +{ + return 0; + //return ReturnValue; +} + +function PreProcessInput(float DeltaTime) +{ + super(PlayerInput).PreProcessInput(DeltaTime); + PreProcessJoystickInput(DeltaTime); + //return; +} + +// Export UTgPlayerInput::execShouldUseAimAssist(FFrame&, void* const) +native final simulated function bool ShouldUseAimAssist(); + +simulated function float GetScopeSensitivity() +{ + // End:0x35 + if(fScopeSensitivity < float(0)) + { + return Lerp(1.0000000, m_fMinScopeSensitivityMult, fScopeSensitivity * -0.1000000); + } + else + { + // End:0x67 + if(fScopeSensitivity > float(0)) + { + return Lerp(1.0000000, m_fMaxScopeSensitivityMult, fScopeSensitivity * 0.1000000); + } + } + return 1.0000000; + //return ReturnValue; +} + +function AdjustMouseSensitivity(float FOVScale) +{ + local TgPawn TgP; + + super(PlayerInput).AdjustMouseSensitivity(FOVScale); + // End:0xA8 + if(c_TgPC != none) + { + TgP = c_TgPC.GetPlayerControlPawn(); + // End:0xA8 + if((TgP != none) && TgP.ShouldUseScopeSensitivity()) + { + aMouseX *= (GetScopeSensitivity()); + aMouseY *= (GetScopeSensitivity()); + } + } + //return; +} + +event PlayerInput(float DeltaTime) +{ + local TgPawn TgP; + local float fJoystickIntensity; + + // End:0x20 + if(aBaseY != float(0)) + { + c_bAutoRun = false; + } + else + { + // End:0x3C + if(c_bAutoRun) + { + aBaseY = 1.0000000; + } + } + super(PlayerInput).PlayerInput(DeltaTime); + // End:0x3BF + if(c_TgPC != none) + { + TgP = c_TgPC.GetPlayerControlPawn(); + // End:0x247 + if(bUsingGamepad) + { + aTurn *= (GamepadSensitivityX * 2.0000000); + aLookUp *= (GamepadSensitivityY * 2.0000000); + // End:0x127 + if((TgP != none) && TgP.ShouldUseScopeSensitivity()) + { + aTurn *= (GetScopeSensitivity()); + aLookUp *= (GetScopeSensitivity()); + } + // End:0x147 + if(ShouldUseAimAssist()) + { + HandleAimAssist(DeltaTime); + } + fJoystickIntensity = FMin(1.0000000, FMin(1.0000000, Abs(RawJoyUp)) + FMin(1.0000000, Abs(RawJoyRight))); + // End:0x1B5 + if(fJoystickIntensity > 0.8500000) + { + c_TgPC.m_byDesiredMoveSpeedReduction = 0; + } + else + { + // End:0x1EC + if(fJoystickIntensity > 0.6500000) + { + c_TgPC.m_byDesiredMoveSpeedReduction = 1; + } + else + { + // End:0x223 + if(fJoystickIntensity > 0.3500000) + { + c_TgPC.m_byDesiredMoveSpeedReduction = 2; + } + else + { + c_TgPC.m_byDesiredMoveSpeedReduction = 3; + } + } + } + } + else + { + c_TgPC.m_byDesiredMoveSpeedReduction = 0; + } + // End:0x297 + if(TgP != none) + { + TgP.AllowDeviceToModifyInput(self); + } + HandleMovementInput(aForward > 0.0000000, 0, aForward); + HandleMovementInput(aForward < 0.0000000, 1, aForward); + HandleMovementInput(aStrafe > 0.0000000, 2, aStrafe); + HandleMovementInput(aStrafe < 0.0000000, 3, aStrafe); + HandleMovementInput(aTurn > 0.0000000, 5, aTurn); + HandleMovementInput(aTurn < 0.0000000, 4, aTurn); + HandleMovementInput(aLookUp > 0.0000000, 6, aLookUp); + HandleMovementInput(aLookUp < 0.0000000, 7, aLookUp); + } + //return; +} + +function HandleMovementInput(bool bIsMatchingInput, TgPlayerController.EPlayerInputType InputType, out float fAxisValue) +{ + // End:0x83 + if(bIsMatchingInput && c_TgPC != none) + { + // End:0x74 + if(c_TgPC.IsInputAllowed(InputType)) + { + c_TgPC.InputReceived(InputType); + } + else + { + fAxisValue = 0.0000000; + } + } + //return; +} + +simulated function DisplayDebug(HUD HUD, out float out_YL, out float out_YPos) +{ + // End:0x934 + if(HUD.ShouldDisplayDebug('ControllerInput')) + { + // End:0x49 + if(!bDebugAimAssist) + { + bDebugAimAssist = true; + } + else + { + HUD.Canvas.DrawText("AIM ASSIST"); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + HUD.Canvas.DrawText("AimAssistTarget: " @ string(DebugAimAssistVals.lastAimAssistTarget)); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + HUD.Canvas.DrawText((("Bounds: " @ string(DebugAimAssistVals.boundsUsedX)) @ ", ") @ string(DebugAimAssistVals.boundsUsedY)); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + // End:0x5C1 + if(DebugAimAssistVals.lastAimAssistTarget != none) + { + HUD.Canvas.DrawText((((("TargetDist: " @ string(DebugAimAssistVals.targetDist)) @ ", AssistVal: ") @ string(DebugAimAssistVals.assistValX)) @ ", ") @ string(DebugAimAssistVals.assistValY)); + out_YPos += out_YL; + DrawAimAssistVals("MagnetX", 0, out_YPos, out_YL, HUD); + DrawAimAssistVals("MagnetY", 1, out_YPos, out_YL, HUD); + DrawAimAssistVals("Friction", 2, out_YPos, out_YL, HUD); + DrawAimAssistVals("TrackAccX", 3, out_YPos, out_YL, HUD); + DrawAimAssistVals("TrackAngleX", 4, out_YPos, out_YL, HUD); + DrawAimAssistVals("TrackAccY", 5, out_YPos, out_YL, HUD); + DrawAimAssistVals("TrackAngleY", 6, out_YPos, out_YL, HUD); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + HUD.Canvas.DrawText((("Tracking: Final:" @ string(DebugAimAssistVals.trackingScaledStrengthFinalX)) @ ", ") @ string(DebugAimAssistVals.trackingScaledStrengthFinalY)); + } + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + HUD.Canvas.DrawText((((((("aTurn: " @ string(RawJoyLookRight)) @ "(raw) *") @ string(fTurnSpeedAccelAmt)) @ "(accel) =") @ string(aTurnFinalValue)) @ "(final) / DeltaTime =") @ string(aTurnFinalValue / Outer.WorldInfo.DeltaSeconds)); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + HUD.Canvas.DrawText((((((("aLookUp: " @ string(RawJoyLookUp)) @ "(raw) *") @ string(fLookUpSpeedAccelAmt)) @ "(accel) =") @ string(aLookUpFinalValue)) @ "(final) / DeltaTime =") @ string(aLookUpFinalValue / Outer.WorldInfo.DeltaSeconds)); + out_YPos += out_YL; + HUD.Canvas.SetPos(4.0000000, out_YPos); + HUD.Canvas.DrawText((((((("Sensitivity X:" @ string(GamepadSensitivityX)) @ " Sensitivity Y:") @ string(GamepadSensitivityY)) @ " Aim Accel:") @ string(nAimAccelerationSet)) @ " Aim Boost:") @ string(nAimAccelerationBoost)); + } + } + else + { + bDebugAimAssist = false; + } + //return; +} + +simulated function DrawAimAssistVals(string assistName, int Index, out float YPos, float YL, HUD HUD) +{ + HUD.Canvas.SetPos(4.0000000, YPos); + HUD.Canvas.DrawText((((((assistName @ ": Raw: ") @ string(DebugAimAssistVals.rawVal[Index])) @ ", MinCurve: ") @ string(DebugAimAssistVals.curveMin[Index])) @ ", MaxCurve: ") @ string(DebugAimAssistVals.curveMax[Index])); + YPos += YL; + HUD.Canvas.SetPos(4.0000000, YPos); + HUD.Canvas.DrawText((((((assistName @ ": MinVal: ") @ string(DebugAimAssistVals.curveMinVal[Index])) @ ", MaxVal: ") @ string(DebugAimAssistVals.curveMaxVal[Index])) @ ", InterpAmt: ") @ string(DebugAimAssistVals.curveInterpAmt[Index])); + YPos += YL; + //return; +} + +function HandleAimAssist(float DeltaTime) +{ + local Rotator PawnRotator; + local Matrix PawnRotationMatrix; + local Vector PawnFwd, PawnRight, PawnUp; + local TgPawn TgP; + local TgDevice AimAssistDevice; + local TgPawn Target; + local float PawnToTargetValue, BestPawnToTargetValue, BestHorizontalAssistAmount, BestVerticalAssistAmount, HorizontalAssistAmount, VerticalAssistAmount, + DistanceToBestTarget; + + local int I; + local bool bUpdatedAimTarget; + + TgP = TgPawn(Outer.Pawn); + // End:0x77 + if(((TgP == none) || TgP.r_bIsMounted) || c_TgPC == none) + { + return; + } + AimAssistDevice = TgP.GetDeviceForAimAssist(); + // End:0xB1 + if(AimAssistDevice == none) + { + return; + } + BestPawnToTargetValue = -1.0000000; + BestHorizontalAssistAmount = 1.0000000; + BestVerticalAssistAmount = 1.0000000; + BestAimAssistTarget = none; + PawnRotator = c_TgPC.Rotation; + PawnRotator.Yaw += int(aTurn); + PawnRotator.Pitch += int(aLookUp); + PawnRotationMatrix = MakeRotationMatrix(PawnRotator); + PawnFwd = MatrixGetAxis(PawnRotationMatrix, 1); + PawnRight = MatrixGetAxis(PawnRotationMatrix, 2); + PawnUp = MatrixGetAxis(PawnRotationMatrix, 4); + // End:0x707 + foreach Outer.WorldInfo.AllPawns(Class'TgGame.TgPawn', Target) + { + // End:0x706 + if((((Target.bCanBeFrictionedTo && Target.Health > 0) && c_TgPC.IsEnemy(Target)) && Target.CanApplyAimAssist(c_TgPC, TgP)) && HandleAimAssistForTarget(TgCombatActor(Target), DeltaTime, PawnFwd, PawnRight, PawnUp, HorizontalAssistAmount, VerticalAssistAmount)) + { + bUpdatedAimTarget = false; + I = 0; + J0x341: + + // End:0x475 [Loop If] + if(I < m_AimAssistTargets.Length) + { + // End:0x467 + if(EqualEqual_InterfaceInterface(m_AimAssistTargets[I].Target, TgCombatActor(Target))) + { + m_AimAssistTargets[I].lastUpdateTimestamp = Outer.WorldInfo.TimeSeconds; + m_AimAssistTargets[I].horizAssistVal = HorizontalAssistAmount; + m_AimAssistTargets[I].vertAssistVal = VerticalAssistAmount; + bUpdatedAimTarget = true; + // [Explicit Break] + goto J0x475; + } + I++; + // [Loop Continue] + goto J0x341; + } + J0x475: + + // End:0x706 + if(((HorizontalAssistAmount > -1.0000000) && HorizontalAssistAmount < 1.0000000) || (VerticalAssistAmount > -1.0000000) && VerticalAssistAmount < 1.0000000) + { + // End:0x60B + if(!bUpdatedAimTarget) + { + I = m_AimAssistTargets.Add(1); + m_AimAssistTargets[I].lastUpdateTimestamp = Outer.WorldInfo.TimeSeconds; + m_AimAssistTargets[I].Weight = 0.0000000; + m_AimAssistTargets[I].Target = TgCombatActor(Target); + m_AimAssistTargets[I].horizAssistVal = HorizontalAssistAmount; + m_AimAssistTargets[I].vertAssistVal = VerticalAssistAmount; + } + PawnToTargetValue = Normal(Target.Location - Outer.Pawn.Location) Dot PawnFwd; + // End:0x706 + if((PawnToTargetValue > BestPawnToTargetValue) && (Abs(HorizontalAssistAmount) <= 0.9900000) || Abs(VerticalAssistAmount) <= 0.9900000) + { + BestAimAssistTarget = Target; + BestPawnToTargetValue = PawnToTargetValue; + BestHorizontalAssistAmount = HorizontalAssistAmount; + BestVerticalAssistAmount = VerticalAssistAmount; + } + } + } + } + UpdateAimAssistTargetWeights(DeltaTime); + SelectBestAimAssistTargetViaWeights(BestHorizontalAssistAmount, BestVerticalAssistAmount); + // End:0x7DB + if(((((AimAssistDevice.RequireLookForAimAssist() && Abs(aTurn) <= 0.0010000) && Abs(aLookUp) <= 0.0010000) && AimAssistDevice.RequireMovementForAimAssist()) && Abs(aBaseY) <= 0.0010000) && Abs(aStrafe) <= 0.0010000) + { + return; + } + // End:0x9D1 + if(BestAimAssistTarget != none) + { + DistanceToBestTarget = VSize(BestAimAssistTarget.Location - Outer.Pawn.Location); + ApplyAimFrictionAndMagnet(DeltaTime, BestHorizontalAssistAmount, BestVerticalAssistAmount, DistanceToBestTarget, AimAssistDevice.m_AimAssistKeyframesMagnetHoriz, AimAssistDevice.m_AimAssistKeyframesMagnetVert, AimAssistDevice.m_AimAssistKeyframesFriction, AimAssistDevice.m_AimAssistMagnetScale, AimAssistDevice.m_AimAssistFrictionScale); + ApplyAimTracking(DeltaTime, BestHorizontalAssistAmount, BestVerticalAssistAmount, DistanceToBestTarget, AimAssistDevice.m_AimAssistKeyframesTrackingAccHoriz, AimAssistDevice.m_AimAssistKeyframesTrackingAngleHoriz, AimAssistDevice.m_AimAssistKeyframesTrackingAccVert, AimAssistDevice.m_AimAssistKeyframesTrackingAngleVert, AimAssistDevice.m_AimAssistTrackingScale); + } + //return; +} + +function SelectBestAimAssistTargetViaWeights(out float BestHorizontalAssistAmount, out float BestVerticalAssistAmount) +{ + local int I; + local float fBestTargetWeight; + + fBestTargetWeight = 0.0000000; + I = m_AimAssistTargets.Length - 1; + J0x26: + + // End:0x25B [Loop If] + if(I >= 0) + { + // End:0x24D + if((Abs(m_AimAssistTargets[I].horizAssistVal) <= 0.9900000) || Abs(m_AimAssistTargets[I].vertAssistVal) <= 0.9900000) + { + // End:0x24D + if((m_AimAssistTargets[I].Weight > fBestTargetWeight) || (m_AimAssistTargets[I].Weight == fBestTargetWeight) && (Abs(m_AimAssistTargets[I].horizAssistVal) + Abs(m_AimAssistTargets[I].vertAssistVal)) < (Abs(BestHorizontalAssistAmount) + Abs(BestVerticalAssistAmount))) + { + fBestTargetWeight = m_AimAssistTargets[I].Weight; + BestHorizontalAssistAmount = m_AimAssistTargets[I].horizAssistVal; + BestVerticalAssistAmount = m_AimAssistTargets[I].vertAssistVal; + BestAimAssistTarget = m_AimAssistTargets[I].Target.GetActorFromCombatActor(); + } + } + I--; + // [Loop Continue] + goto J0x26; + } + //return; +} + +function UpdateAimAssistTargetWeights(float DeltaTime) +{ + local int I; + local float fAvgAssistAmt, fWeightChange; + + I = m_AimAssistTargets.Length - 1; + J0x17: + + // End:0x3B6 [Loop If] + if(I >= 0) + { + // End:0xDB + if(EqualEqual_InterfaceInterface(m_AimAssistTargets[I].Target, TgCombatActor(none)) || m_AimAssistTargets[I].lastUpdateTimestamp != Outer.WorldInfo.TimeSeconds) + { + m_AimAssistTargets.Remove(I, 1); + } + else + { + fWeightChange = 0.0000000; + fWeightChange += ((m_AimAssistTargets[I].Target.GetActorFromCombatActor() == BestAimAssistTarget) ? TargetWeightVars.CurrentTargetBonus : TargetWeightVars.NotCurrentTargetPenalty); + fAvgAssistAmt = (Abs(m_AimAssistTargets[I].horizAssistVal) + Abs(m_AimAssistTargets[I].vertAssistVal)) / 2.0000000; + // End:0x241 + if(fAvgAssistAmt < 1.0000000) + { + fWeightChange += Lerp(TargetWeightVars.MaxAccuracyBonus, TargetWeightVars.MinAccuracyBonus, fAvgAssistAmt); + } + else + { + fWeightChange -= Lerp(TargetWeightVars.MinInaccuracyPenalty, TargetWeightVars.MaxInaccuracyPenalty, (fAvgAssistAmt - 1.0000000) / 5.0000000); + } + m_AimAssistTargets[I].Weight = FClamp(m_AimAssistTargets[I].Weight + (fWeightChange * DeltaTime), 0.0000000, TargetWeightVars.MaxWeight * m_AimAssistTargets[I].Target.GetMaxAimAssistStacks()); + // End:0x3A8 + if(m_AimAssistTargets[I].Weight <= float(0)) + { + m_AimAssistTargets.Remove(I, 1); + } + } + I--; + // [Loop Continue] + goto J0x17; + } + //return; +} + +function ApplyAimTracking(float DeltaTime, float HorizontalAssistAmount, float VerticalAssistAmount, float DistanceToTarget, const out array TrackingAccHorizKeyframeData, const out array TrackingAngleHorizKeyframeData, const out array TrackingAccVertKeyframeData, const out array TrackingAngleVertKeyframeData, const out Vector2D AimAssistTrackingScale) +{ + local TgGameplayCurvesSet_AimAssistKeyframes AimAssistCurvePool; + local float TrackingX, TrackingY, TrackingInterpX, TrackingInterpY; + + // End:0x43 + if(m_AimAssistCurves != none) + { + AimAssistCurvePool = TgGameplayCurvesSet_AimAssistKeyframes(m_AimAssistCurves.GetCurvesSetByType(13)); + } + // End:0x54 + if(AimAssistCurvePool == none) + { + return; + } + GetDesiredTrackingAim(TrackingX, TrackingY, DeltaTime); + TrackingInterpX = ((Abs(HorizontalAssistAmount) < 0.9900000) ? AimAssistCurvePool.GetHorizTrackingValue(HorizontalAssistAmount, (0.0000959 * TrackingX) / DeltaTime, DistanceToTarget, TrackingAccHorizKeyframeData, TrackingAngleHorizKeyframeData) : 0.0000000); + TrackingInterpY = ((Abs(VerticalAssistAmount) < 0.9900000) ? AimAssistCurvePool.GetVertTrackingValue(VerticalAssistAmount, (0.0000959 * TrackingY) / DeltaTime, DistanceToTarget, TrackingAccVertKeyframeData, TrackingAngleVertKeyframeData) : 0.0000000); + aTurn = Lerp(aTurn, TrackingX, TrackingInterpX); + aLookUp = Lerp(aLookUp, TrackingY, TrackingInterpY); + //return; +} + +function ApplyAimFrictionAndMagnet(float DeltaTime, float HorizontalAssistAmount, float VerticalAssistAmount, float DistanceToTarget, const out array MagnetHorizKeyframeData, const out array MagnetVertKeyframeData, const out array FrictionKeyframeData, const out Vector2D AimAssistMagnetScale, const out Vector2D AimAssistFrictionScale) +{ + local float rawFrictionX, rawFrictionY, rawMagnetX, rawMagnetY, ScaledMagnetAmountX, ScaledMagnetAmountY, + ScaledFrictionAmountX, ScaledFrictionAmountY; + + local TgGameplayCurvesSet_AimAssistKeyframes AimAssistCurvePool; + + // End:0x36 + if(((MagnetHorizKeyframeData.Length == 0) || MagnetVertKeyframeData.Length == 0) || FrictionKeyframeData.Length == 0) + { + return; + } + // End:0x79 + if(m_AimAssistCurves != none) + { + AimAssistCurvePool = TgGameplayCurvesSet_AimAssistKeyframes(m_AimAssistCurves.GetCurvesSetByType(13)); + } + // End:0x8A + if(AimAssistCurvePool == none) + { + return; + } + rawFrictionX = ((Abs(HorizontalAssistAmount) < 0.9900000) ? AimAssistCurvePool.GetFrictionValue(HorizontalAssistAmount, DistanceToTarget, FrictionKeyframeData) : 0.0000000); + rawFrictionY = ((Abs(VerticalAssistAmount) < 0.9900000) ? AimAssistCurvePool.GetFrictionValue(VerticalAssistAmount, DistanceToTarget, FrictionKeyframeData) : 0.0000000); + rawMagnetX = ((Abs(HorizontalAssistAmount) < 0.9900000) ? AimAssistCurvePool.GetHorizMagnetValue(HorizontalAssistAmount, DistanceToTarget, MagnetHorizKeyframeData) : 0.0000000); + rawMagnetY = ((Abs(VerticalAssistAmount) < 0.9900000) ? AimAssistCurvePool.GetVertMagnetValue(VerticalAssistAmount, DistanceToTarget, MagnetVertKeyframeData) : 0.0000000); + ScaledFrictionAmountX = rawFrictionX * AimAssistFrictionScale.X; + ScaledFrictionAmountY = rawFrictionY * AimAssistFrictionScale.Y; + aTurn *= (1.0000000 - ScaledFrictionAmountX); + aLookUp *= (1.0000000 - ScaledFrictionAmountY); + ScaledMagnetAmountX = ((rawMagnetX * LookRightScale) * (100.0000000 * DeltaTime)) * AimAssistMagnetScale.X; + // End:0x313 + if(HorizontalAssistAmount < float(0)) + { + ScaledMagnetAmountX *= float(-1); + } + aTurn += ScaledMagnetAmountX; + ScaledMagnetAmountY = ((rawMagnetY * LookUpScale) * (100.0000000 * DeltaTime)) * AimAssistMagnetScale.Y; + aLookUp += ScaledMagnetAmountY; + //return; +} + +function float Sign(float InValue) +{ + // End:0x1C + if(InValue > 0.0000000) + { + return 1.0000000; + } + else + { + // End:0x35 + if(InValue < 0.0000000) + { + return -1.0000000; + } + } + return 0.0000000; + //return ReturnValue; +} + +function GetDesiredTrackingAim(out float TrackingX, out float TrackingY, float DeltaTime) +{ + local Vector PawnToTarget; + local Rotator PawnToTargetRotator; + local float PawnToTargetHeading, CurrentDifferenceX, CurrentDifferenceY, PredictedDifferenceX, PredictedDifferenceY; + + PawnToTarget = Normal(BestAimAssistTarget.Location - Outer.Pawn.Location); + PawnToTargetRotator = Rotator(PawnToTarget); + PawnToTargetHeading = UnwindHeading(float(PawnToTargetRotator.Yaw) * 0.0000959); + CurrentDifferenceX = FindDeltaAngle(UnwindHeading(float(c_TgPC.Rotation.Yaw) * 0.0000959), PawnToTargetHeading); + PawnToTargetHeading = UnwindHeading(float(PawnToTargetRotator.Pitch) * 0.0000959); + CurrentDifferenceY = FindDeltaAngle(UnwindHeading(float(c_TgPC.Rotation.Pitch) * 0.0000959), PawnToTargetHeading); + PawnToTarget = Normal((BestAimAssistTarget.Location + (BestAimAssistTarget.Velocity * DeltaTime)) - (Outer.Pawn.Location + (Outer.Pawn.Velocity * DeltaTime))); + PawnToTargetRotator = Rotator(PawnToTarget); + PawnToTargetHeading = UnwindHeading(float(PawnToTargetRotator.Yaw) * 0.0000959); + PredictedDifferenceX = FindDeltaAngle(UnwindHeading(float(c_TgPC.Rotation.Yaw) * 0.0000959), PawnToTargetHeading); + PawnToTargetHeading = UnwindHeading(float(PawnToTargetRotator.Pitch) * 0.0000959); + PredictedDifferenceY = FindDeltaAngle(UnwindHeading(float(c_TgPC.Rotation.Pitch) * 0.0000959), PawnToTargetHeading); + TrackingX = (PredictedDifferenceX - CurrentDifferenceX) * 10430.3800000; + TrackingY = (PredictedDifferenceY - CurrentDifferenceY) * 10430.3800000; + //return; +} + +function bool HandleAimAssistForTarget(TgCombatActor InTarget, float DeltaTime, const out Vector InPawnFwd, const out Vector InPawnRight, const out Vector InPawnUp, out float HorizontalAssistAmount, out float VerticalAssistAmount) +{ + local float AimWidth, AimHeight; + local Vector AimCenter; + local float fFOVScale; + + // End:0x51 + if(!InTarget.LocalPlayerHasLOS() || InTarget.GetMaxAimAssistStacks() <= float(0)) + { + return false; + } + InTarget.GetAimAssistBounds(Outer.Pawn.Location, AimWidth, AimHeight, AimCenter); + // End:0x133 + if(m_AimAssistCurves.GetPrimaryDistributionValueByType(26, Outer.GetFOVAngle(), fFOVScale)) + { + AimWidth *= fFOVScale; + AimHeight *= fFOVScale; + } + AimCenter += (ProjectOnTo(Outer.WorldInfo.DeltaSeconds * InTarget.GetActorFromCombatActor().Velocity, InPawnRight) * 2.0000000); + HorizontalAssistAmount = DetermineAimAssistCurveTime(InPawnFwd, AimCenter, InPawnRight * AimWidth, InPawnFwd, InPawnRight, InPawnRight); + VerticalAssistAmount = DetermineAimAssistCurveTime(InPawnFwd, AimCenter, InPawnUp * AimHeight, InPawnUp, InPawnFwd, -InPawnUp); + // End:0x2BA + if((Abs(HorizontalAssistAmount) > 1.0000000) && Abs(VerticalAssistAmount) < 1.0000000) + { + VerticalAssistAmount = ((VerticalAssistAmount >= float(0)) ? 1.0000000 : -1.0000000); + } + // End:0x30D + if((Abs(VerticalAssistAmount) > 1.0000000) && Abs(HorizontalAssistAmount) < 1.0000000) + { + HorizontalAssistAmount = ((HorizontalAssistAmount >= float(0)) ? 1.0000000 : -1.0000000); + } + return true; + //return ReturnValue; +} + +function float DetermineAimAssistCurveTime(Vector InPawnFwd, Vector InTargetCenter, Vector InMaxBoundsExtent, Vector InProjectPlaneA, Vector InProjectPlaneB, Vector InDetermineAssistDirectionVector) +{ + local Vector ProjectedPawnFwd, ZeroVector, PawnToTarget, MaxAllowedBounds; + local float PawnFwdDotTarget, MaxAllowedBoundsDotTarget, AssistAmount; + + ProjectedPawnFwd = PointProjectToPlane(InPawnFwd, ZeroVector, InProjectPlaneA, InProjectPlaneB); + ProjectedPawnFwd = Normal(ProjectedPawnFwd); + PawnToTarget = InTargetCenter - Outer.Pawn.Location; + PawnToTarget = PointProjectToPlane(PawnToTarget, ZeroVector, InProjectPlaneA, InProjectPlaneB); + PawnToTarget = Normal(PawnToTarget); + // End:0x112 + if((PawnToTarget Dot InDetermineAssistDirectionVector) > 0.0000000) + { + AssistAmount = 1.0000000; + } + else + { + AssistAmount = -1.0000000; + } + MaxAllowedBounds = (InTargetCenter + (InMaxBoundsExtent * AssistAmount)) - Outer.Pawn.Location; + MaxAllowedBounds = PointProjectToPlane(MaxAllowedBounds, ZeroVector, InProjectPlaneA, InProjectPlaneB); + MaxAllowedBounds = Normal(MaxAllowedBounds); + PawnFwdDotTarget = ProjectedPawnFwd Dot PawnToTarget; + MaxAllowedBoundsDotTarget = MaxAllowedBounds Dot PawnToTarget; + // End:0x26C + if(PawnFwdDotTarget > MaxAllowedBoundsDotTarget) + { + AssistAmount *= GetMappedRangeValue(vect2d(MaxAllowedBoundsDotTarget, 1.0000000), vect2d(1.0000000, 0.0000000), PawnFwdDotTarget); + } + else + { + AssistAmount *= GetMappedRangeValue(vect2d(0.0000000, MaxAllowedBoundsDotTarget), vect2d(10.0000000, 1.0000000), PawnFwdDotTarget); + } + return AssistAmount; + //return ReturnValue; +} + +simulated function Rotator ApplyAimVectorModification(TgDevice InDevice, Rotator InRotation) +{ + local Matrix StartingRotationMatrix; + local Vector StartingFwd, StartingRight, StartingUp; + local Rotator AdjustedAim; + local float AimWidth, AimHeight; + local Vector AimCenter; + local Vector2D AllowedBoundsToUse, MaxAssistanceAngleToUse; + local float HorizontalAssistance, VerticalAssistance; + + AdjustedAim = InRotation; + // End:0x3DF + if((bUsingGamepad && ShouldUseAimAssist()) && BestAimAssistTarget != none) + { + BestAimAssistTarget.GetAimFrictionExtent(AimWidth, AimHeight, AimCenter); + StartingRotationMatrix = MakeRotationMatrix(InRotation); + StartingFwd = MatrixGetAxis(StartingRotationMatrix, 1); + StartingRight = MatrixGetAxis(StartingRotationMatrix, 2); + StartingUp = MatrixGetAxis(StartingRotationMatrix, 4); + AimCenter += (ProjectOnTo(Outer.WorldInfo.DeltaSeconds * BestAimAssistTarget.Velocity, StartingRight) * 2.0000000); + // End:0x1C7 + if(InDevice != none) + { + AllowedBoundsToUse = InDevice.m_AimVectorAssistMaxBoundsScale; + MaxAssistanceAngleToUse = InDevice.m_AimVectorAssistMaxAssistanceDegrees; + } + else + { + AllowedBoundsToUse = Class'TgGame.TgDevice'.default.m_AimVectorAssistMaxBoundsScale; + MaxAssistanceAngleToUse = Class'TgGame.TgDevice'.default.m_AimVectorAssistMaxAssistanceDegrees; + } + HorizontalAssistance = DetermineAimVectorAssistAngleDegrees(BestAimAssistTarget, StartingFwd, AimCenter, (StartingRight * AimWidth) * 0.7500000, (StartingRight * AimWidth) * AllowedBoundsToUse.X, StartingFwd, StartingRight, StartingRight, MaxAssistanceAngleToUse.X, false); + AdjustedAim.Yaw += int(HorizontalAssistance * 182.0444000); + VerticalAssistance = DetermineAimVectorAssistAngleDegrees(BestAimAssistTarget, StartingFwd, AimCenter, (StartingUp * AimHeight) * 0.7500000, (StartingUp * AimHeight) * AllowedBoundsToUse.Y, StartingUp, StartingFwd, StartingUp, MaxAssistanceAngleToUse.Y, true); + AdjustedAim.Pitch += int(VerticalAssistance * 182.0444000); + } + return AdjustedAim; + //return ReturnValue; +} + +simulated function float DetermineAimVectorAssistAngleDegrees(Actor InTarget, Vector InPawnFwd, Vector InTargetCenter, Vector InRealBoundsExtent, Vector InMaxBoundsExtent, Vector InProjectPlaneA, Vector InProjectPlaneB, Vector InDetermineAssistDirectionVector, float MaxAssistanceAngleToUse, bool bIsVertical) +{ + local Vector ProjectedPawnFwd, ZeroVector, PawnToTarget, RealBounds, MaxAllowedBounds; + + local float PawnFwdDotTarget, RealBoundsDotTarget, MaxAllowedBoundsDotTarget, AssistAmount; + local Rotator PawnFwdRotator; + local float PawnFwdAngle; + local Rotator BoundsRotator; + local float BoundsAngle; + + ProjectedPawnFwd = PointProjectToPlane(InPawnFwd, ZeroVector, InProjectPlaneA, InProjectPlaneB); + ProjectedPawnFwd = Normal(ProjectedPawnFwd); + PawnToTarget = InTargetCenter - Outer.Pawn.Location; + PawnToTarget = PointProjectToPlane(PawnToTarget, ZeroVector, InProjectPlaneA, InProjectPlaneB); + PawnToTarget = Normal(PawnToTarget); + // End:0x112 + if((PawnToTarget Dot InDetermineAssistDirectionVector) > 0.0000000) + { + AssistAmount = -1.0000000; + } + else + { + AssistAmount = 1.0000000; + } + RealBounds = (InTargetCenter + (InRealBoundsExtent * AssistAmount)) - Outer.Pawn.Location; + RealBounds = PointProjectToPlane(RealBounds, ZeroVector, InProjectPlaneA, InProjectPlaneB); + RealBounds = Normal(RealBounds); + MaxAllowedBounds = (InTargetCenter + (InMaxBoundsExtent * AssistAmount)) - Outer.Pawn.Location; + MaxAllowedBounds = PointProjectToPlane(MaxAllowedBounds, ZeroVector, InProjectPlaneA, InProjectPlaneB); + MaxAllowedBounds = Normal(MaxAllowedBounds); + PawnFwdDotTarget = ProjectedPawnFwd Dot PawnToTarget; + RealBoundsDotTarget = RealBounds Dot PawnToTarget; + MaxAllowedBoundsDotTarget = MaxAllowedBounds Dot PawnToTarget; + // End:0x307 + if((PawnFwdDotTarget > RealBoundsDotTarget) || MaxAllowedBoundsDotTarget > PawnFwdDotTarget) + { + return 0.0000000; + } + PawnFwdRotator = Rotator(ProjectedPawnFwd); + PawnFwdAngle = float(((bIsVertical) ? PawnFwdRotator.Pitch : PawnFwdRotator.Yaw)); + PawnFwdAngle *= 0.0000959; + PawnFwdAngle = UnwindHeading(PawnFwdAngle); + BoundsRotator = Rotator(RealBounds); + BoundsAngle = float(((bIsVertical) ? BoundsRotator.Pitch : BoundsRotator.Yaw)); + BoundsAngle *= 0.0000959; + BoundsAngle = UnwindHeading(BoundsAngle); + AssistAmount = FindDeltaAngle(PawnFwdAngle, BoundsAngle) * 57.2957800; + return float(Clamp(int(AssistAmount), int(-MaxAssistanceAngleToUse), int(MaxAssistanceAngleToUse))); + //return ReturnValue; +} + +exec function SetAimAccelerationAlgorithm(int Algorithm) +{ + nAimAccelerationAlgorithm = Algorithm; + //return; +} + +exec function SetAimAccelerationSet(int AimSet) +{ + nAimAccelerationSet = AimSet; + //return; +} + +exec function ToggleAutoRun() +{ + c_bAutoRun = !c_bAutoRun; + // End:0x4F + if(c_bAutoRun) + { + Outer.SetTimer(60.0000000, false, 'CancelAutoRun', self); + } + else + { + Outer.ClearTimer('CancelAutoRun', self); + } + //return; +} + +function CancelAutoRun() +{ + c_bAutoRun = false; + //return; +} + +exec function SetGamepadSensitivity(float fAxisX, float fAxisY) +{ + GamepadSensitivityX = fAxisX / float(100); + GamepadSensitivityY = fAxisY / float(100); + // End:0x60 + if(c_TgPC != none) + { + c_TgPC.UpdateKeybindsUI(); + } + //return; +} + +exec function SetMouseInput(bool bInvert, bool bSmooth, float fSensitivity) +{ + super.SetMouseInput(bInvert, bSmooth, fSensitivity); + // End:0x55 + if(c_TgPC != none) + { + c_TgPC.UpdateKeybindsUI(); + } + //return; +} + +function SetBindExtended(const string ExtendedBinding, string Command) +{ + super.SetBindExtended(ExtendedBinding, Command); + // End:0x4A + if(c_TgPC != none) + { + c_TgPC.UpdateKeybindsUI(); + } + //return; +} + +function SetCommandBind(string Command, int nAlternate, const string ExtendedBinding) +{ + super.SetCommandBind(Command, nAlternate, ExtendedBinding); + // End:0x53 + if(c_TgPC != none) + { + c_TgPC.UpdateKeybindsUI(); + } + //return; +} + +exec function UnbindCommandAll(string Command) +{ + super.UnbindCommandAll(Command); + // End:0x41 + if(c_TgPC != none) + { + c_TgPC.UpdateKeybindsUI(); + } + //return; +} + +exec function UnbindCommand(string Command, optional int nAlternate = 0) +{ + super.UnbindCommand(Command, nAlternate); + // End:0x4F + if(c_TgPC != none) + { + c_TgPC.UpdateKeybindsUI(); + } + //return; +} + +defaultproperties +{ + GamepadSensitivityX=0.5000000 + GamepadSensitivityY=0.5000000 + m_fMinScopeSensitivityMult=0.5000000 + m_fMaxScopeSensitivityMult=2.0000000 + nAimAccelerationSet=1 + nAimAccelerationBoost=7 + nInnerDeadZoneSize=2 + nOuterDeadZoneSize=1 + m_AimAssistCurves=TgGameplayCurves'GP_AimAssist.AimAssistCurvePool' + TargetWeightVars=(CurrentTargetBonus=5.0000000,NotCurrentTargetPenalty=-5.0000000,MinAccuracyBonus=2.0000000,MaxAccuracyBonus=7.0000000,MinInaccuracyPenalty=0.0000000,MaxInaccuracyPenalty=20.0000000,MaxWeight=10.0000000) + Bindings=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPointOfInterest.uc b/exported/TgGame/Classes/TgPointOfInterest.uc new file mode 100755 index 00000000..03fd3a28 --- /dev/null +++ b/exported/TgGame/Classes/TgPointOfInterest.uc @@ -0,0 +1,25 @@ +class TgPointOfInterest extends TgNavigationPoint + native(Navigation) + hidecategories(Navigation,Lighting,LightColor,Force); + +var() int m_nNameMsgId; +var() string m_sDebugName; + +defaultproperties +{ + m_sDebugName="Point of Interest" + // Reference: CylinderComponent'TgGame.Default__TgPointOfInterest.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgNavigationPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPortal.uc b/exported/TgGame/Classes/TgPortal.uc new file mode 100755 index 00000000..fc0e2203 --- /dev/null +++ b/exported/TgGame/Classes/TgPortal.uc @@ -0,0 +1,73 @@ +class TgPortal extends Portal + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +var(Teleport) bool bUpdateRotation; +var(Teleport) bool bCheckOverlap; +var(Teleport) bool bResetVelocity; +var(Teleport) bool bCheckTaskForce; +var(Teleport) int nTaskForce; +var(TeleportSound) SoundCue TeleportSoundCue; +var(TeleportSound) float FadeInTime; +var(TeleportSound) float VolumeMultiplier; +var(TeleportSound) float PitchMultiplier; + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local array TeleportDestinations; + local editinline AudioComponent AC; + + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + // End:0x279 + if(IsValidPortal() && !bCheckTaskForce || !IsEnemy(Other)) + { + // End:0x279 + if(Pawn(Other) != none) + { + TeleportDestinations.AddItem(Destination); + // End:0x276 + if(Pawn(Other).HandleTeleport(TeleportDestinations, bUpdateRotation, bCheckOverlap, -1.0000000)) + { + // End:0x11C + if(bResetVelocity) + { + Other.Velocity = vect(0.0000000, 0.0000000, 0.0000000); + } + // End:0x273 + if(TeleportSoundCue != none) + { + AC = Other.CreateAudioComponent(TeleportSoundCue, false, true); + // End:0x273 + if(AC != none) + { + AC.VolumeMultiplier = VolumeMultiplier; + AC.PitchMultiplier = PitchMultiplier; + AC.bAutoDestroy = true; + AC.SubtitlePriority = 10000.0000000; + AC.bSuppressSubtitles = true; + AC.FadeIn(FadeInTime, 1.0000000); + AC.Play(); + } + } + } + } + } + //return; +} + +defaultproperties +{ + bPawnsOnly=true + // Reference: BrushComponent'TgGame.Default__TgPortal.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Portal.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + Components[1]=none + Components[2]=none + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgPostProcessVolume.uc b/exported/TgGame/Classes/TgPostProcessVolume.uc new file mode 100755 index 00000000..932e1661 --- /dev/null +++ b/exported/TgGame/Classes/TgPostProcessVolume.uc @@ -0,0 +1,36 @@ +class TgPostProcessVolume extends PostProcessVolume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display,Advanced,Collision,Volume,Brush,Attachment); + +var() MaterialInterface m_Material; +var() Scene.ESceneDepthPriorityGroup m_SceneDPG; +var MaterialInstanceConstant m_MaterialMIC; +var() float m_FadeInTime; +var() float m_FadeOutTime; +var() name m_FadeScalarParameterName; + +simulated event PostBeginPlay() +{ + super(Volume).PostBeginPlay(); + m_MaterialMIC = new (none) Class'Engine.MaterialInstanceConstant'; + m_MaterialMIC.SetParent(m_Material); + //return; +} + +defaultproperties +{ + m_SceneDPG=ESceneDepthPriorityGroup.SDPG_Foreground + m_FadeInTime=0.5000000 + m_FadeOutTime=1.0000000 + m_FadeScalarParameterName="SCAL_PPFade" + // Reference: BrushComponent'TgGame.Default__TgPostProcessVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__PostProcessVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_BlastShot.uc b/exported/TgGame/Classes/TgProj_BlastShot.uc new file mode 100755 index 00000000..e8a87463 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_BlastShot.uc @@ -0,0 +1,28 @@ +class TgProj_BlastShot extends TgProj_Simulated + native(ChampCassie) + hidecategories(Navigation); + +// Export UTgProj_BlastShot::execGetExplosionFXParams(FFrame&, void* const) +native function GetExplosionFXParams(out array Params); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_BlastShot.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_BlastShot.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_BombKingStickyBomb.uc b/exported/TgGame/Classes/TgProj_BombKingStickyBomb.uc new file mode 100755 index 00000000..118f3d95 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_BombKingStickyBomb.uc @@ -0,0 +1,364 @@ +class TgProj_BombKingStickyBomb extends TgProj_FreeGrenade + native(ChampBombKing) + hidecategories(Navigation); + +var bool m_bExplodedOnShield; +var bool m_bExplodedOnDeployGeomtry; +var bool c_bReadyToHide; +var Actor m_CachedHitTarget; +var Vector m_vCachedHitLocation; +var Vector m_vCachedHitNormal; + +// Export UTgProj_BombKingStickyBomb::execSpawnDeployable(FFrame&, void* const) +native function TgDeployable SpawnDeployable(Vector vLocation, optional Actor TargetActor, optional Vector vNormal); + +simulated function Actor CalculateHitActor(Actor Target, Vector HitLocation, Vector HitNormal, out TraceHitInfo HitInfo) +{ + return Target; + //return ReturnValue; +} + +simulated event ExplodeOnTarget(Actor Target, Vector HitLocation, Vector HitNormal) +{ + local TgPawn_Character ExplodedCharacter; + local TgDeployable deployable; + + // End:0x1AD + if(Target != none) + { + ExplodedCharacter = TgPawn_Character(Target); + // End:0xDC + if(ExplodedCharacter != none) + { + // End:0xD9 + if((((ExplodedCharacter.GetShieldHealth() > float(0)) || ExplodedCharacter.IsImmuneToDamage()) || ExplodedCharacter.IsCrowdControlImmune()) || ExplodedCharacter.IsSuperiorCrowdControlImmune()) + { + m_bExplodedOnShield = true; + } + } + else + { + deployable = TgDeployable(Target); + // End:0x154 + if((deployable != none) && int(deployable.m_CollisionSettings.mCollisionMode) == int(1)) + { + m_bExplodedOnShield = true; + } + else + { + // End:0x1AD + if((deployable != none) && int(deployable.m_CollisionSettings.mCollisionMode) == int(2)) + { + m_bExplodedOnDeployGeomtry = true; + } + } + } + } + m_CachedHitTarget = Target; + m_vCachedHitLocation = HitLocation; + m_vCachedHitNormal = HitNormal; + super(TgProj_Simulated).ExplodeOnTarget(Target, HitLocation, HitNormal); + //return; +} + +simulated function AltFireDetonate() +{ + local array ExplosionParams; + + m_bFlashSpecialExplosion = true; + m_bSuppressDeployableSpawn = true; + c_bReadyToHide = true; + Explode(Location, -Normal(Velocity)); + // End:0xE1 + if(c_Mesh != none) + { + GetExplosionFXParams(ExplosionParams); + c_Mesh.FxActivateIndependant('Generic1', 0, Location, Normal(Velocity) * -1.0000000,,,, ExplosionParams); + c_Mesh.FxDeactivateGroup('AlwaysOn', 0); + } + //return; +} + +function bool ApplyTheHit(TgDeviceFire FireMode, ImpactInfo Impact, Actor DamageInstigator) +{ + return true; + //return ReturnValue; +} + +simulated function SpecialHideProjectile() +{ + c_bReadyToHide = true; + HideProjectile(); + //return; +} + +simulated function HideProjectile() +{ + local Vector vTempLocation; + local Rotator rTempRotation; + local TgPawn PawnOwner; + local TgDevice_BombKingInhand inhandDev; + + HideForNonOwnerClient(); + // End:0x16F + if(((int(WorldInfo.NetMode) == int(NM_Client)) && c_Mesh != none) && !c_bReadyToHide) + { + // End:0xC8 + if(!PredictStickToPlayerSocket(vTempLocation, rTempRotation)) + { + // End:0x91 + if(m_CachedHitTarget != none) + { + m_bDeployOnTarget = true; + } + GetDeployLocationAndRotation(vTempLocation, rTempRotation, m_vCachedHitLocation, m_CachedHitTarget, m_vCachedHitNormal); + } + SetLocation(vTempLocation); + SetRotation(rTempRotation); + PawnOwner = TgPawn(Instigator); + // End:0x16D + if(PawnOwner != none) + { + inhandDev = TgDevice_BombKingInhand(PawnOwner.GetDeviceByEqPoint(1)); + // End:0x16D + if(inhandDev != none) + { + inhandDev.AddProjectileWaitingForDeployable(self); + } + } + return; + } + super(TgProjectile).HideProjectile(); + //return; +} + +simulated function bool PredictStickToPlayerSocket(out Vector outSocketLocation, out Rotator outSocketRotation) +{ + local TgPawn_Character targetCharacter; + local name SocketName, currentName; + local Vector SocketLocation, CurrentLocation; + local array socketUsed; + local int I, J, oldestIndex; + + // End:0x11 + if(m_CachedHitTarget == none) + { + return false; + } + targetCharacter = TgPawn_Character(m_CachedHitTarget); + // End:0x46F + if(targetCharacter != none) + { + oldestIndex = -1; + I = 0; + J0x56: + + // End:0x149 [Loop If] + if(I < 6) + { + // End:0x13B + if(targetCharacter.r_StuckBombs[I] != none) + { + // End:0x13B + if((oldestIndex == -1) || targetCharacter.r_StuckBombs[oldestIndex].m_TimeCreated > targetCharacter.r_StuckBombs[I].m_TimeCreated) + { + oldestIndex = I; + } + } + I++; + // [Loop Continue] + goto J0x56; + } + // End:0x46F + if(targetCharacter.Mesh != none) + { + I = 0; + J0x178: + + // End:0x2DD [Loop If] + if(I < 6) + { + socketUsed[I] = false; + J = 0; + J0x1A8: + + // End:0x2CF [Loop If] + if(J < 6) + { + // End:0x1D2 + if(J == oldestIndex) + { + } + else + { + // End:0x2C1 + if(((targetCharacter.r_StuckBombs[J] != none) && !targetCharacter.r_StuckBombs[J].m_bInDestroyedState) && targetCharacter.r_StuckBombs[J].m_StuckSocket == name("CSO_FX_Sticky_0" $ string(I + 1))) + { + socketUsed[I] = true; + } + } + J++; + // [Loop Continue] + goto J0x1A8; + } + I++; + // [Loop Continue] + goto J0x178; + } + I = 0; + J0x2E8: + + // End:0x406 [Loop If] + if(I < 6) + { + currentName = name("CSO_FX_Sticky_0" $ string(I + 1)); + // End:0x3F8 + if(!socketUsed[I]) + { + // End:0x3F8 + if(targetCharacter.Mesh.GetSocketWorldLocationAndRotation(currentName, CurrentLocation)) + { + // End:0x3F8 + if((SocketName == 'None') || VSizeSq(Location - CurrentLocation) < VSizeSq(Location - SocketLocation)) + { + SocketName = currentName; + SocketLocation = CurrentLocation; + } + } + } + I++; + // [Loop Continue] + goto J0x2E8; + } + // End:0x46F + if(SocketName != 'None') + { + targetCharacter.Mesh.GetSocketWorldLocationAndRotation(currentName, outSocketLocation, outSocketRotation); + return true; + } + } + } + return false; + //return ReturnValue; +} + +simulated event ClientExplodeSpecial(Actor Target, Vector HitLocation, Vector HitNormal) +{ + local TgPlayerController TgPC; + local array ExplosionParams; + + // End:0x12C + if((int(WorldInfo.NetMode) == int(NM_Client)) && !c_bReadyToHide) + { + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x12C + if(((TgPC != none) && TgPC.Pawn != none) && TgPC.Pawn != Instigator) + { + // End:0x12C + if(c_Mesh != none) + { + GetExplosionFXParams(ExplosionParams); + c_Mesh.FxActivateIndependant('Generic1', 0, Location, Normal(Velocity) * -1.0000000,,,, ExplosionParams); + } + } + } + HideForNonOwnerClient(); + //return; +} + +simulated function HideForNonOwnerClient() +{ + local TgPlayerController TgPC; + + // End:0x116 + if((int(WorldInfo.NetMode) == int(NM_Client)) && !c_bReadyToHide) + { + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x116 + if(((TgPC != none) && TgPC.Pawn != none) && TgPC.Pawn != Instigator) + { + m_bSuppressDeployableSpawn = true; + c_bReadyToHide = true; + // End:0x10C + if(c_Mesh != none) + { + c_Mesh.FxDeactivateGroup('AlwaysOn', 0); + } + ShutDown(); + } + } + //return; +} + +simulated function Destroyed() +{ + // End:0x44 + if((int(WorldInfo.NetMode) == int(NM_Client)) && c_Mesh != none) + { + SpecialHideProjectile(); + } + super.Destroyed(); + //return; +} + +simulated function ShutDown() +{ + local TgPawn PawnOwner; + local TgDevice_BombKingInhand inhandDev; + + // End:0x0F + if(m_bIsShutDown) + { + return; + } + super.ShutDown(); + PawnOwner = TgPawn(Instigator); + // End:0xC7 + if(PawnOwner != none) + { + inhandDev = TgDevice_BombKingInhand(PawnOwner.GetDeviceByEqPoint(1)); + // End:0xC7 + if(inhandDev != none) + { + inhandDev.RemovePendingConversion(self, 0); + inhandDev.UpdateActiveProjectiles(); + } + } + // End:0x10B + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && c_Mesh != none) + { + SpecialHideProjectile(); + } + //return; +} + +defaultproperties +{ + m_bExplodeOnTouch=false + m_bExplodeOnGeometry=true + m_bUseGravityZOverride=true + m_fGravityZOverride=-650.0000000 + m_nShadowFXID=7719 + m_fMaxDecalHeight=2000.0000000 + m_bStickToWalls=true + m_bCanSpawnOnClientFirst=true + m_DeployableSpawnOrientation=SpawnDeployableOrientation.SDO_FaceRotation + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_BombKingStickyBomb.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_BombKingStickyBomb.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_DarkConvergence.uc b/exported/TgGame/Classes/TgProj_DarkConvergence.uc new file mode 100755 index 00000000..d8563a7d --- /dev/null +++ b/exported/TgGame/Classes/TgProj_DarkConvergence.uc @@ -0,0 +1,35 @@ +class TgProj_DarkConvergence extends TgProj_FreeGrenade + native(ChampOracle) + hidecategories(Navigation); + +defaultproperties +{ + m_bExplodeOnTouch=false + m_bExplodeOnFloor=true + m_fBounceDamping=0.2000000 + m_fSpeedToActivateBounceFX=80.0000000 + m_bTrackProjectileForTimelapse=true + m_nShadowFXID=7298 + m_fMaxDecalHeight=2000.0000000 + m_fTrackingUpdateRate=0.2000000 + m_bExplodeAtMaxRange=true + m_bDeployOnGround=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_DarkConvergence.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_DarkConvergence.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_DarklordBase.uc b/exported/TgGame/Classes/TgProj_DarklordBase.uc new file mode 100755 index 00000000..24303710 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_DarklordBase.uc @@ -0,0 +1,225 @@ +class TgProj_DarklordBase extends TgProj_SpeedOverRange + native(ChampDarklord) + hidecategories(Navigation); + +struct native TrackedCollision +{ + var bool IsColliding; + var Actor Target; + var export editinline PrimitiveComponent TargetComp; + var int NumTouches; + + structdefaultproperties + { + IsColliding=false + Target=none + TargetComp=none + NumTouches=0 + } +}; + +var TgCollisionProxy_Cylinder m_SecondaryCollisionProxies[2]; +var export editinline ParticleSystemComponent m_SecondaryDebugProximityDistancePSC[2]; +var array m_TrackedCollisions; + +// Export UTgProj_DarklordBase::execCompleteInitialization(FFrame&, void* const) +native function CompleteInitialization(); + +simulated function OnSecondaryProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + HandleSecondaryProxyTouch(Other, OtherComp, HitLocation, HitNormal); + //return; +} + +simulated event OnSecondaryProxyUnTouch(Actor Other) +{ + HandleSecondaryProxyUntouch(Other); + //return; +} + +simulated event ForwardProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + ProxyTouch(Other, OtherComp, HitLocation, HitNormal); + //return; +} + +simulated event ForwardProxyUntouch(Actor Other) +{ + ProxyUnTouch(Other); + //return; +} + +simulated event ProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + HandleSecondaryProxyTouch(Other, OtherComp, HitLocation, HitNormal); + //return; +} + +simulated event ProxyUnTouch(Actor Other) +{ + HandleSecondaryProxyUntouch(Other); + //return; +} + +// Export UTgProj_DarklordBase::execHandleSecondaryProxyTouch(FFrame&, void* const) +native simulated function HandleSecondaryProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal); + +// Export UTgProj_DarklordBase::execHandleSecondaryProxyUntouch(FFrame&, void* const) +native simulated function HandleSecondaryProxyUntouch(Actor Other); + +simulated function Vector GetCollisionOffsetDir() +{ + return MatrixGetAxis(MakeRotationMatrix(Rotation), 2); + //return ReturnValue; +} + +simulated event SpawnSecondaryCollisionProxies() +{ + local int I; + + // End:0x42F + if((m_OwnerFireMode != none) && m_OwnerFireMode.GetCustomValue1() > 0.0000000) + { + I = 0; + J0x45: + + // End:0x42F [Loop If] + if(I < 2) + { + // End:0xA5 + if(m_SecondaryCollisionProxies[I] != none) + { + m_SecondaryCollisionProxies[I].Destroy(); + m_SecondaryCollisionProxies[I] = none; + } + m_SecondaryCollisionProxies[I] = Spawn(Class'TgGame.TgCollisionProxy_Cylinder', self,, self.Location,,, true); + // End:0x421 + if(m_SecondaryCollisionProxies[I] != none) + { + m_SecondaryCollisionProxies[I].SetBase(self); + m_SecondaryCollisionProxies[I].__ProxyTouch__Delegate = OnSecondaryProxyTouch; + m_SecondaryCollisionProxies[I].__ProxyUnTouch__Delegate = OnSecondaryProxyUnTouch; + m_SecondaryCollisionProxies[I].DelegatesUpdated(); + m_SecondaryCollisionProxies[I].m_CollisionCylinder.SetCylinderSize(m_fProximityDistance, m_fProximityDistance); + m_SecondaryCollisionProxies[I].ForceProximityScan(); + // End:0x2AB + if(I == 0) + { + m_SecondaryCollisionProxies[I].SetRelativeLocation((-m_OwnerFireMode.GetCustomValue1() * float(16)) * (GetCollisionOffsetDir())); + } + else + { + m_SecondaryCollisionProxies[I].SetRelativeLocation((m_OwnerFireMode.GetCustomValue1() * float(16)) * (GetCollisionOffsetDir())); + } + // End:0x421 + if(((m_fProximityDistance > float(0)) && TgRepInfo_Game(WorldInfo.GRI).r_bShowProjectileProximityDistance) && (int(r_eEquippedAt) == int(1)) || int(r_eEquippedAt) == int(5)) + { + // End:0x3BB + if(m_SecondaryDebugProximityDistancePSC[I] == none) + { + m_SecondaryDebugProximityDistancePSC[I] = SpawnDebugProximityDistancePSC(); + } + m_SecondaryCollisionProxies[I].AttachComponent(m_SecondaryDebugProximityDistancePSC[I]); + m_SecondaryDebugProximityDistancePSC[I].ActivateSystem(); + } + } + I++; + // [Loop Continue] + goto J0x45; + } + } + //return; +} + +simulated function HideProjectile() +{ + local int I; + + super(TgProjectile).HideProjectile(); + I = 0; + J0x15: + + // End:0x75 [Loop If] + if(I < 2) + { + // End:0x67 + if(m_SecondaryDebugProximityDistancePSC[I] != none) + { + m_SecondaryDebugProximityDistancePSC[I].DeactivateSystem(); + } + I++; + // [Loop Continue] + goto J0x15; + } + //return; +} + +simulated function float GetDecalRotationOffset() +{ + return float(Rand(10)) - 5.0000000; + //return ReturnValue; +} + +simulated function PlayHitTargetFX(Actor Target, Vector HitLocation, Vector HitNormal, bool bExploded) +{ + local Vector vImpactLocation; + local float fImpactDistance; + + // End:0x3A + if(Target != none) + { + vImpactLocation = Target.Location; + } + else + { + vImpactLocation = HitLocation; + } + fImpactDistance = VSize(r_vSpawnLocation - vImpactLocation); + SetRTPCValue('ImpactDistance', fImpactDistance); + super(TgProjectile).PlayHitTargetFX(Target, HitLocation, HitNormal, bExploded); + //return; +} + +simulated event PlayHitWallExplosionFX(Vector HitNormal, Vector HitLocation) +{ + local TgSpecialFx DecalFx; + local float DecalRotation, fImpactDistance; + + fImpactDistance = VSize(r_vSpawnLocation - HitLocation); + SetRTPCValue('ImpactDistance', fImpactDistance); + super(TgProjectile).PlayHitWallExplosionFX(HitNormal, HitLocation); + // End:0x148 + if(c_Mesh != none) + { + DecalFx = TgSpecialFx(c_Mesh.FxGet('Generic1', 0)); + // End:0x148 + if(DecalFx != none) + { + DecalRotation = DecalFx.CalculateOrientedDecalRotation(HitLocation, HitNormal, Normal(m_vSpawnVelocity)); + DecalFx.SpawnDecalAt(HitLocation, -HitNormal, DecalRotation + (GetDecalRotationOffset()), 1.0000000); + } + } + //return; +} + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_DarklordBase.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_SpeedOverRange.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_DarklordBase.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_SpeedOverRange.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_DarklordChain1.uc b/exported/TgGame/Classes/TgProj_DarklordChain1.uc new file mode 100755 index 00000000..47ac45d6 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_DarklordChain1.uc @@ -0,0 +1,25 @@ +class TgProj_DarklordChain1 extends TgProj_DarklordBase + native(ChampDarklord) + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_DarklordChain1.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_DarklordBase.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_DarklordChain1.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_DarklordBase.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_DarklordChain2.uc b/exported/TgGame/Classes/TgProj_DarklordChain2.uc new file mode 100755 index 00000000..c755d535 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_DarklordChain2.uc @@ -0,0 +1,25 @@ +class TgProj_DarklordChain2 extends TgProj_DarklordBase + native(ChampDarklord) + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_DarklordChain2.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_DarklordBase.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_DarklordChain2.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_DarklordBase.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_DarklordChain3.uc b/exported/TgGame/Classes/TgProj_DarklordChain3.uc new file mode 100755 index 00000000..e90d57a6 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_DarklordChain3.uc @@ -0,0 +1,37 @@ +class TgProj_DarklordChain3 extends TgProj_DarklordBase + native(ChampDarklord) + hidecategories(Navigation); + +simulated function float GetDecalRotationOffset() +{ + return super.GetDecalRotationOffset() + 90.0000000; + //return ReturnValue; +} + +simulated function Vector GetCollisionOffsetDir() +{ + return MatrixGetAxis(MakeRotationMatrix(Rotation), 4); + //return ReturnValue; +} + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_DarklordChain3.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_DarklordBase.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_DarklordChain3.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_DarklordBase.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_DemonTeleport.uc b/exported/TgGame/Classes/TgProj_DemonTeleport.uc new file mode 100755 index 00000000..262ca255 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_DemonTeleport.uc @@ -0,0 +1,85 @@ +class TgProj_DemonTeleport extends TgProj_Simulated + native(ChampDemon) + hidecategories(Navigation); + +var bool m_bStopped; +var bool m_bTriggerExplosion; + +function bool ApplyHit(Actor Target, Vector HitLocation, Vector HitNormal, optional int HitItem) +{ + // End:0x3D + if(m_bTriggerExplosion) + { + return super.ApplyHit(Target, HitLocation, HitNormal, HitItem); + } + return false; + //return ReturnValue; +} + +simulated event HitWall(Vector HitNormal, Actor Wall, PrimitiveComponent WallComp) +{ + StopMoving(Location + (HitNormal * m_fProximityDistance)); + //return; +} + +simulated event ExplodeOnTarget(Actor Target, Vector HitLocation, Vector HitNormal) +{ + // End:0x0F + if(bHurtEntry) + { + return; + } + // End:0x44 + if(m_bTriggerExplosion) + { + super.ExplodeOnTarget(Target, HitLocation, HitNormal); + } + else + { + StopMoving(HitLocation + (HitNormal * m_fProximityDistance)); + } + //return; +} + +function RangeReached() +{ + StopMoving(Location); + //return; +} + +simulated function StopMoving(Vector NewLocation) +{ + // End:0x3E + if(!m_bStopped) + { + m_bStopped = true; + SetLocation(NewLocation); + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + } + //return; +} + +defaultproperties +{ + m_bTrackProjectileForTimelapse=true + m_nDeployableOverlayDisplayMask=4097 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_DemonTeleport.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_CollisionSettings=(bExplodeOnShields=true,bExplodeOnBlockers=true,bHitAndPassThrough=true) + // Reference: CylinderComponent'TgGame.Default__TgProj_DemonTeleport.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_Drag.uc b/exported/TgGame/Classes/TgProj_Drag.uc new file mode 100755 index 00000000..bffbbca8 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_Drag.uc @@ -0,0 +1,131 @@ +class TgProj_Drag extends TgProj_Simulated + native(ChampMakoa) + hidecategories(Navigation); + +var TgDeviceForm_Drag m_DragForm; +var float m_fCollisionHeightScale; + +simulated event SpawnFlightEffects() +{ + local TgPawn PawnOwner; + local int I; + + super(TgProjectile).SpawnFlightEffects(); + PawnOwner = TgPawn(Instigator); + // End:0xCA + if(PawnOwner != none) + { + I = 0; + J0x40: + + // End:0xCA [Loop If] + if(I < 33) + { + m_DragForm = TgDeviceForm_Drag(PawnOwner.c_EquipForm[I]); + // End:0xBC + if(m_DragForm != none) + { + m_DragForm.ConnectBeamToTarget(self); + return; + } + I++; + // [Loop Continue] + goto J0x40; + } + } + //return; +} + +function RangeReached() +{ + local TgDevice_Drag dragDevice; + + // End:0xBF + if(((int(WorldInfo.NetMode) != int(NM_Client)) && m_OwnerFireMode != none) && m_OwnerFireMode.m_Owner != none) + { + dragDevice = TgDevice_Drag(m_OwnerFireMode.m_Owner); + // End:0xBF + if(dragDevice != none) + { + dragDevice.MissPull(); + } + } + ServerDetonate(); + //return; +} + +simulated event Fizzle() +{ + local TgDevice_Drag dragDevice; + + // End:0xBF + if(((int(WorldInfo.NetMode) != int(NM_Client)) && m_OwnerFireMode != none) && m_OwnerFireMode.m_Owner != none) + { + dragDevice = TgDevice_Drag(m_OwnerFireMode.m_Owner); + // End:0xBF + if(dragDevice != none) + { + dragDevice.BreakPull(); + } + } + super.Fizzle(); + //return; +} + +simulated event ExplodeOnTarget(Actor Target, Vector HitLocation, Vector HitNormal) +{ + // End:0x3B + if(!m_bHasExploded) + { + // End:0x3B + if(!StartDrag(Target, HitLocation)) + { + Target = none; + } + } + super.ExplodeOnTarget(Target, HitLocation, HitNormal); + //return; +} + +simulated function bool StartDrag(Actor Target, Vector HitLocation) +{ + local TgDevice_Drag dragDevice; + + // End:0xD2 + if(((int(WorldInfo.NetMode) != int(NM_Client)) && m_OwnerFireMode != none) && m_OwnerFireMode.m_Owner != none) + { + dragDevice = TgDevice_Drag(m_OwnerFireMode.m_Owner); + // End:0xD2 + if(dragDevice != none) + { + return dragDevice.PullTarget(Target, HitLocation); + } + } + return false; + //return ReturnValue; +} + +defaultproperties +{ + m_fCollisionHeightScale=2.0000000 + m_bExplodeAtMaxRange=true + m_bCanSpawnOnClientFirst=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Drag.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_Drag.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_DreadSerpent.uc b/exported/TgGame/Classes/TgProj_DreadSerpent.uc new file mode 100755 index 00000000..28581320 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_DreadSerpent.uc @@ -0,0 +1,26 @@ +class TgProj_DreadSerpent extends TgProj_Simulated + hidecategories(Navigation); + +defaultproperties +{ + m_bAlwaysDeployUpwards=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_DreadSerpent.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_CollisionSettings=(bPassThroughEnemies=true,bPassThroughShields=true) + // Reference: CylinderComponent'TgGame.Default__TgProj_DreadSerpent.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_DrogozRocket.uc b/exported/TgGame/Classes/TgProj_DrogozRocket.uc new file mode 100755 index 00000000..734aaebc --- /dev/null +++ b/exported/TgGame/Classes/TgProj_DrogozRocket.uc @@ -0,0 +1,48 @@ +class TgProj_DrogozRocket extends TgProj_Simulated + native(ChampDrogoz) + hidecategories(Navigation); + +var bool m_bWasFromSalvo; + +function bool ApplyTheHit(TgDeviceFire FireMode, ImpactInfo Impact, Actor DamageInstigator) +{ + local TgProj_Loogie loogieTarget; + + // End:0x108 + if((Impact.HitActor != none) && Impact.HitActor.Owner != none) + { + loogieTarget = TgProj_Loogie(Impact.HitActor.Owner); + // End:0x108 + if(loogieTarget != none) + { + loogieTarget.DetonateFromRocket(self, Impact.HitLocation, Impact.HitNormal); + return false; + } + } + return super(TgProjectile).ApplyTheHit(FireMode, Impact, DamageInstigator); + //return ReturnValue; +} + +defaultproperties +{ + m_bExplodeAtMaxRange=true + m_bCountDirectHitForAOE=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_DrogozRocket.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_DrogozRocket.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_Enlightenment.uc b/exported/TgGame/Classes/TgProj_Enlightenment.uc new file mode 100755 index 00000000..7eb1892d --- /dev/null +++ b/exported/TgGame/Classes/TgProj_Enlightenment.uc @@ -0,0 +1,25 @@ +class TgProj_Enlightenment extends TgProj_Simulated + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Enlightenment.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_CollisionSettings=(bExplodeOnShields=true,bExplodeOnBlockers=true,bHitAndPassThrough=true) + // Reference: CylinderComponent'TgGame.Default__TgProj_Enlightenment.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_EvilMojo.uc b/exported/TgGame/Classes/TgProj_EvilMojo.uc new file mode 100755 index 00000000..6cee09c0 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_EvilMojo.uc @@ -0,0 +1,43 @@ +class TgProj_EvilMojo extends TgProj_FreeGrenade + hidecategories(Navigation); + +simulated event bool CheckTeamPassThrough(Actor Other) +{ + local TgDeployable deployTarget; + + deployTarget = TgDeployable(Other); + // End:0x6B + if((deployTarget != none) && int(deployTarget.m_CollisionSettings.mCollisionMode) == int(1)) + { + return true; + } + return super(TgProjectile).CheckTeamPassThrough(Other); + //return ReturnValue; +} + +defaultproperties +{ + m_bExplodeOnGeometry=true + m_bUseGravityZOverride=true + m_fSpeedToActivateBounceFX=100.0000000 + m_fGravityZOverride=-650.0000000 + m_fPostLandDuration=0.6000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_EvilMojo.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_EvilMojo.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_ExplodeAtMaxRange.uc b/exported/TgGame/Classes/TgProj_ExplodeAtMaxRange.uc new file mode 100755 index 00000000..81765f7d --- /dev/null +++ b/exported/TgGame/Classes/TgProj_ExplodeAtMaxRange.uc @@ -0,0 +1,25 @@ +class TgProj_ExplodeAtMaxRange extends TgProj_Simulated + hidecategories(Navigation); + +defaultproperties +{ + m_bExplodeAtMaxRange=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_ExplodeAtMaxRange.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_ExplodeAtMaxRange.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_ExplosiveFlask.uc b/exported/TgGame/Classes/TgProj_ExplosiveFlask.uc new file mode 100755 index 00000000..e4518206 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_ExplosiveFlask.uc @@ -0,0 +1,28 @@ +class TgProj_ExplosiveFlask extends TgProj_FreeGrenade + hidecategories(Navigation); + +defaultproperties +{ + m_bExplodeOnGeometry=true + m_bUseGravityZOverride=true + m_fGravityZOverride=-650.0000000 + m_bExplodeAtMaxRange=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_ExplosiveFlask.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_ExplosiveFlask.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_Fireball.uc b/exported/TgGame/Classes/TgProj_Fireball.uc new file mode 100755 index 00000000..e7a38563 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_Fireball.uc @@ -0,0 +1,25 @@ +class TgProj_Fireball extends TgProj_Simulated + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Fireball.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_CollisionSettings=(bExplodeOnShields=true,bExplodeOnBlockers=true,bHitAndPassThrough=true) + // Reference: CylinderComponent'TgGame.Default__TgProj_Fireball.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_FlakRocket.uc b/exported/TgGame/Classes/TgProj_FlakRocket.uc new file mode 100755 index 00000000..2a52046e --- /dev/null +++ b/exported/TgGame/Classes/TgProj_FlakRocket.uc @@ -0,0 +1,26 @@ +class TgProj_FlakRocket extends TgProj_Simulated + hidecategories(Navigation); + +defaultproperties +{ + m_bExplodeAtMaxRange=true + m_bCountDirectHitForAOE=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FlakRocket.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_FlakRocket.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_Flare.uc b/exported/TgGame/Classes/TgProj_Flare.uc new file mode 100755 index 00000000..3ee4361d --- /dev/null +++ b/exported/TgGame/Classes/TgProj_Flare.uc @@ -0,0 +1,102 @@ +class TgProj_Flare extends TgProj_FreeGrenade + native(ChampOwl) + hidecategories(Navigation); + +var bool m_bStartedPulse; +var float m_fLifetimeForPhysicsSubstep; + +simulated function StartPulse() +{ + // End:0x0F + if(m_bStartedPulse) + { + return; + } + m_bStartedPulse = true; + PulseVisibility(); + SetTimer(m_fPersistHitPulse, true, 'PulseVisibility'); + SetTimer(m_fPersistTime, false, 'ShutDown'); + //return; +} + +event PostProjectileInitialize() +{ + super(TgProjectile).PostProjectileInitialize(); + StartPulse(); + //return; +} + +simulated function PulseVisibility() +{ + local array ImpactInfoList; + local AimData Aim; + local int I; + + // End:0x18D + if(!m_bHasExploded) + { + // End:0x18A + if(m_OwnerFireMode != none) + { + Aim.StartTrace = Location; + Aim.EndTrace = Location; + Aim.AimVector = Vector(Rotation); + m_OwnerFireMode.CalcAoeFire(self, Aim, ImpactInfoList, false, s_fAoeRewindTime); + I = 0; + J0xE2: + + // End:0x18A [Loop If] + if(I < ImpactInfoList.Length) + { + ImpactInfoList[I].Projectile = self; + m_OwnerFireMode.ApplyHitSpecial(ImpactInfoList[I].HitActor, ImpactInfoList[I]); + I++; + // [Loop Continue] + goto J0xE2; + } + } + } + else + { + // End:0x1A6 + if(!m_bIsShutDown) + { + ShutDown(); + } + } + //return; +} + +event bool UseAOE() +{ + return false; + //return ReturnValue; +} + +// Export UTgProj_Flare::execGetGravityZ(FFrame&, void* const) +native function float GetGravityZ(); + +defaultproperties +{ + m_bTrackProjectileForTimelapse=true + m_bRequireAccurateTicksForPrediction=true + m_fTossZ=0.0000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Flare.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_Flare.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_FragGrenade.uc b/exported/TgGame/Classes/TgProj_FragGrenade.uc new file mode 100755 index 00000000..7ba6a017 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_FragGrenade.uc @@ -0,0 +1,104 @@ +class TgProj_FragGrenade extends TgProj_FreeGrenade + native(ChampViktor) + hidecategories(Navigation); + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + SetCookedInfo(); + //return; +} + +simulated function SetCookedInfo() +{ + local TgPawn_Viktor Viktor; + + Viktor = TgPawn_Viktor(Instigator); + // End:0x69 + if((Viktor == none) || Viktor.r_fFragGrenadeExplodeTime == float(0)) + { + SetTimer(3.0000000, false, 'TimerExplode'); + } + else + { + m_bExplodeOnTouch = Viktor.r_bFragGrenadeExplodeOnTouch; + m_bExplodeOnGeometry = Viktor.r_bFragGrenadeExplodeOnTouch; + SetTimer(Viktor.r_fFragGrenadeExplodeTime, false, 'TimerExplode'); + } + // End:0x198 + if(Viktor != none) + { + m_fBounceDampingVertMin = Viktor.m_fBounceDampingVertMin; + m_fBounceDampingVertMax = Viktor.m_fBounceDampingVertMax; + m_fBounceDampingHorizMin = Viktor.m_fBounceDampingHorizMin; + m_fBounceDampingHorizMax = Viktor.m_fBounceDampingHorizMax; + } + //return; +} + +simulated function ApplyBounce(Vector HitNormal, Actor Wall, PrimitiveComponent WallComp) +{ + m_bUseBilinearInterpolationForBounceDamping = !(Wall != none) && Wall.IsA('TgPawn_Character'); + super.ApplyBounce(HitNormal, Wall, WallComp); + // End:0xAE + if(((int(WorldInfo.NetMode) == int(NM_Client)) || m_OwnerFireMode == none) || m_bUseBilinearInterpolationForBounceDamping) + { + return; + } + // End:0x121 + if((Wall != none) && m_OwnerFireMode.IsValidTarget(Wall,,, m_bInvertTeam)) + { + m_OwnerFireMode.ApplyHitSpecial(Wall); + } + //return; +} + +simulated function PlayBounceSound() +{ + // End:0x92 + if(!m_bUseBilinearInterpolationForBounceDamping) + { + // End:0x8F + if((c_Mesh != none) && Speed > m_fSpeedToActivateBounceFX) + { + c_Mesh.FxDeactivateGroup('ProjectileBounceHitCharacter', 0); + c_Mesh.FxActivateGroup('ProjectileBounceHitCharacter', 0); + } + } + else + { + super.PlayBounceSound(); + } + //return; +} + +defaultproperties +{ + m_bExplodeOnTouch=false + m_bUseBilinearInterpolationForBounceDamping=true + m_fBounceDampingVertMin=0.1000000 + m_fBounceDampingVertMax=1.0000000 + m_fBounceDampingHorizMin=0.0900000 + m_fBounceDampingHorizMax=0.7500000 + m_fBounceDamping=0.1000000 + m_nShadowFXID=7068 + m_fMaxDecalHeight=2000.0000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FragGrenade.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_FragGrenade.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_FreeGrenade.uc b/exported/TgGame/Classes/TgProj_FreeGrenade.uc new file mode 100755 index 00000000..d00ed23a --- /dev/null +++ b/exported/TgGame/Classes/TgProj_FreeGrenade.uc @@ -0,0 +1,302 @@ +class TgProj_FreeGrenade extends TgProj_Simulated + native(Projectiles) + hidecategories(Navigation); + +var bool m_bShieldTouched; +var bool m_bExplodeOnTouch; +var bool m_bExplodeOnGeometry; +var bool m_bExplodeOnFloor; +var bool m_bUseBilinearInterpolationForBounceDamping; +var bool m_bUseGravityZOverride; +var TgDeployable m_TouchedShield; +var float m_fToleranceZ; +var float m_fBounceDampingVertMin; +var float m_fBounceDampingVertMax; +var float m_fBounceDampingHorizMin; +var float m_fBounceDampingHorizMax; +var float m_fBounceDamping; +var float m_fSpeedToActivateBounceFX; +var float m_fGravityZOverride; +var int m_nBounceCount; +var int m_nBouncesToExplode; +var float m_fBounceDistinctionDuration; +var int m_fLastBounceTime; +var Vector m_vRecentHitNormal; +var float m_fRecentHitTime; + +// Export UTgProj_FreeGrenade::execGetGravityZ(FFrame&, void* const) +native function float GetGravityZ(); + +simulated function PostBeginPlay() +{ + super(TgProjectile).PostBeginPlay(); + SetTimer(0.1000000, true); + //return; +} + +simulated function ShutDown() +{ + super.ShutDown(); + ClearTimer(); + //return; +} + +simulated function Timer() +{ + // End:0x1A + if(!CheckProjectileRange()) + { + RangeReached(); + } + //return; +} + +simulated event PlayHitWallExplosionFX(Vector HitNormal, Vector HitLocation) +{ + // End:0x71 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && (m_fRecentHitTime + 0.4000000) > WorldInfo.TimeSeconds) + { + HitNormal = m_vRecentHitNormal; + } + super(TgProjectile).PlayHitWallExplosionFX(HitNormal, HitLocation); + //return; +} + +simulated function PlayHitTargetFX(Actor Target, Vector HitLocation, Vector HitNormal, bool bExploded) +{ + local bool bOldHitValidTarget; + + // End:0xC6 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && (m_fRecentHitTime + 0.4000000) > WorldInfo.TimeSeconds) + { + bOldHitValidTarget = m_bHitValidTarget; + m_bHitValidTarget = false; + HitNormal = m_vRecentHitNormal; + PlayHitWallExplosionFX(HitNormal, HitLocation); + m_bHitValidTarget = bOldHitValidTarget; + } + else + { + super(TgProjectile).PlayHitTargetFX(Target, HitLocation, HitNormal, bExploded); + } + //return; +} + +function float GetPostLandDuration() +{ + return m_fPostLandDuration; + //return ReturnValue; +} + +function StartLandExplodeTimer() +{ + // End:0x45 + if(((GetPostLandDuration()) > float(0)) && !IsTimerActive('TimerExplode')) + { + SetTimer(GetPostLandDuration(), false, 'TimerExplode'); + } + //return; +} + +function OnLand() +{ + // End:0x21 + if(m_nBounceCount >= m_nBouncesToExplode) + { + StartLandExplodeTimer(); + } + //return; +} + +simulated event HitWall(Vector HitNormal, Actor Wall, PrimitiveComponent WallComp) +{ + // End:0x49 + if(!ShouldHitBounce(Wall, HitNormal)) + { + super.HitWall(HitNormal, Wall, WallComp); + } + else + { + // End:0xB7 + if((WorldInfo.TimeSeconds - float(m_fLastBounceTime)) >= m_fBounceDistinctionDuration) + { + m_fLastBounceTime = int(WorldInfo.TimeSeconds); + m_nBounceCount++; + } + // End:0xEB + if(HitNormal.Z >= m_fLandZThreshold) + { + OnLand(); + } + ApplyBounce(HitNormal, Wall, WallComp); + // End:0x17F + if(((Speed < float(20)) && Wall.bWorldGeometry) && HitNormal.Z >= 0.7000000) + { + bBounce = false; + SetPhysics(0); + } + // End:0x19D + if(m_bStickToWalls) + { + bBounce = false; + SetPhysics(0); + } + m_fRecentHitTime = WorldInfo.TimeSeconds + ((bBounce) ? 0.0000000 : 100.0000000); + m_vRecentHitNormal = HitNormal; + } + //return; +} + +simulated function bool ShouldHitBounce(Actor Target, Vector HitNormal) +{ + return !m_bExplodeOnGeometry || m_bExplodeOnFloor && HitNormal.Z > m_fToleranceZ; + //return ReturnValue; +} + +simulated function ApplyBounce(Vector HitNormal, Actor Wall, PrimitiveComponent WallComp) +{ + local float wallAngle, bounceAngle, bounceDamping; + + // End:0x119 + if(m_bUseBilinearInterpolationForBounceDamping) + { + wallAngle = Acos(Abs(HitNormal Dot vect(0.0000000, 0.0000000, 1.0000000))) / (3.1415930 / float(2)); + bounceAngle = Acos(Abs(HitNormal Dot Normal(Velocity))) / (3.1415930 / float(2)); + bounceDamping = Lerp(Lerp(m_fBounceDampingHorizMin, m_fBounceDampingHorizMax, bounceAngle), Lerp(m_fBounceDampingVertMin, m_fBounceDampingVertMax, bounceAngle), wallAngle); + Velocity = bounceDamping * ((((Velocity Dot HitNormal) * HitNormal) * -2.0000000) + Velocity); + } + else + { + Velocity = m_fBounceDamping * ((((Velocity Dot HitNormal) * HitNormal) * -2.0000000) + Velocity); + } + PlayBounceSound(); + //return; +} + +simulated function PlayBounceSound() +{ + Speed = VSize(Velocity); + // End:0x95 + if((c_Mesh != none) && Speed > m_fSpeedToActivateBounceFX) + { + c_Mesh.FxDeactivateGroup('ProjectileBounce', 0); + c_Mesh.FxActivateGroup('ProjectileBounce', 0); + } + //return; +} + +simulated function ProcessTouch(Actor Other, Vector HitLocation, Vector HitNormal) +{ + local TgDeployable hitDeployable; + local Vector Vel2D; + + // End:0x18 + if(ForcefieldExclusionCheck(Other)) + { + return; + } + // End:0x4F + if(m_bExplodeOnTouch) + { + super.ProcessTouch(Other, HitLocation, HitNormal); + return; + } + else + { + // End:0x79 + if(HandleOnProjectileHitTarget(Other, HitLocation, HitNormal)) + { + return; + } + } + hitDeployable = TgDeployable(Other); + // End:0x12F + if(hitDeployable != none) + { + // End:0x12D + if(int(hitDeployable.m_CollisionSettings.mCollisionMode) != int(0)) + { + // End:0x10B + if(m_bShieldTouched && hitDeployable == m_TouchedShield) + { + return; + } + else + { + m_TouchedShield = hitDeployable; + m_bShieldTouched = true; + } + } + else + { + return; + } + } + // End:0x160 + if((Other == Instigator) || CheckTeamPassThrough(Other)) + { + return; + } + // End:0x1DD + if((Pawn(Other) != none) && Vehicle(Other) == none) + { + Vel2D = Velocity; + Vel2D.Z = 0.0000000; + // End:0x1DD + if(VSize(Vel2D) < float(200)) + { + return; + } + } + SetLocation(HitLocation); + HitWall(HitNormal, Other, none); + //return; +} + +simulated event Landed(Vector HitNormal, Actor FloorActor) +{ + HitWall(HitNormal, FloorActor, none); + //return; +} + +simulated function Destroyed() +{ + ImpactedActor = self; + super.Destroyed(); + //return; +} + +defaultproperties +{ + m_bExplodeOnTouch=true + m_fToleranceZ=0.7000000 + m_fBounceDamping=0.2500000 + m_fSpeedToActivateBounceFX=200.0000000 + m_fBounceDistinctionDuration=0.1000000 + m_fLastBounceTime=-1000 + m_bCanSpawnOnClientFirst=false + m_fTossZ=200.0000000 + m_nPostRenderIcon=1 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_fExplosionOffsetDistance=1.5000000 + // Reference: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + Physics=EPhysics.PHYS_Falling + bNetTemporary=false + bBounce=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_GaeBolg.uc b/exported/TgGame/Classes/TgProj_GaeBolg.uc new file mode 100755 index 00000000..f58c61c8 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_GaeBolg.uc @@ -0,0 +1,25 @@ +class TgProj_GaeBolg extends TgProj_Simulated + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_GaeBolg.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_CollisionSettings=(bPassThroughShields=true) + // Reference: CylinderComponent'TgGame.Default__TgProj_GaeBolg.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_Greatbow.uc b/exported/TgGame/Classes/TgProj_Greatbow.uc new file mode 100755 index 00000000..3f788999 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_Greatbow.uc @@ -0,0 +1,30 @@ +class TgProj_Greatbow extends TgProj_Simulated + native(ChampLongbow) + hidecategories(Navigation); + +// Export UTgProj_Greatbow::execApplySpawnParams(FFrame&, void* const) +native function ApplySpawnParams(float fProjectileSpeed, float fGravityScale); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Greatbow.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_Greatbow.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + Physics=EPhysics.PHYS_Falling + bNetTemporary=false + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_GrumpyBomb.uc b/exported/TgGame/Classes/TgProj_GrumpyBomb.uc new file mode 100755 index 00000000..95f7c5b6 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_GrumpyBomb.uc @@ -0,0 +1,172 @@ +class TgProj_GrumpyBomb extends TgProj_FreeGrenade + native(ChampBombKing) + hidecategories(Navigation); + +var export editinline TgSilhouetteComponent m_Silhouette; +var bool m_bSilhouetteInitialized; +var bool m_bSilhouetteAllowed; +var float m_fPostLandDurationAccelerant; + +// Export UTgProj_GrumpyBomb::execInitializeSilhouetteComponent(FFrame&, void* const) +native function InitializeSilhouetteComponent(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x21 + if(VarName == 'r_Owner') + { + CheckShowOutline(); + } + super(TgProjectile).ReplicatedEvent(VarName); + //return; +} + +simulated function CheckShowOutline() +{ + local TgPlayerController TgPC; + + // End:0xD7 + if((m_Silhouette != none) && r_Owner != none) + { + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0xD7 + if(((TgPC != none) && TgPC.GetTgPawn() != none) && TgPC.GetTgPawn() == r_Owner.Owner) + { + m_Silhouette.SetEnabled(true); + } + } + //return; +} + +// Export UTgProj_GrumpyBomb::execIsAccelerantEquipped(FFrame&, void* const) +native function bool IsAccelerantEquipped(); + +function float GetPostLandDuration() +{ + // End:0x1A + if(IsAccelerantEquipped()) + { + return m_fPostLandDurationAccelerant; + } + else + { + return super.GetPostLandDuration(); + } + //return ReturnValue; +} + +function StartLandExplodeTimer() +{ + super.StartLandExplodeTimer(); + // End:0x83 + if(c_Mesh != none) + { + // End:0x56 + if(IsAccelerantEquipped()) + { + c_Mesh.FxActivateGroup('GrumpyBombLandAlt', 0); + } + else + { + c_Mesh.FxActivateGroup('GrumpyBombLand', 0); + } + } + //return; +} + +simulated event bool CheckTeamPassThrough(Actor Other) +{ + local TgDeployable deployTarget; + + deployTarget = TgDeployable(Other); + // End:0x6B + if((deployTarget != none) && int(deployTarget.m_CollisionSettings.mCollisionMode) == int(1)) + { + return true; + } + return super(TgProjectile).CheckTeamPassThrough(Other); + //return ReturnValue; +} + +simulated event ProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn pawnOther; + local editinline MeshComponent ComponentIt; + + super(TgProjectile).ProxyTouch(Other, OtherComp, HitLocation, HitNormal); + // End:0x11A + if((((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && !m_bHasExploded) && Other != none) && c_Mesh != none) + { + pawnOther = TgPawn(Other); + // End:0x11A + if((pawnOther != none) && pawnOther.IsLocallyControlled()) + { + // End:0x119 + foreach ComponentList(Class'Engine.MeshComponent', ComponentIt) + { + ComponentIt.SetHidden(true); + } + } + } + //return; +} + +simulated event ProxyUnTouch(Actor Other) +{ + local TgPawn pawnOther; + local editinline MeshComponent ComponentIt; + + super(TgProjectile).ProxyUnTouch(Other); + // End:0xFF + if((((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && !m_bHasExploded) && Other != none) && c_Mesh != none) + { + pawnOther = TgPawn(Other); + // End:0xFF + if((pawnOther != none) && pawnOther.IsLocallyControlled()) + { + // End:0xFE + foreach ComponentList(Class'Engine.MeshComponent', ComponentIt) + { + ComponentIt.SetHidden(false); + } + } + } + //return; +} + +defaultproperties +{ + // Reference: TgSilhouetteComponentPaladins'TgGame.Default__TgProj_GrumpyBomb.MySilhouette' + begin object name="MySilhouette" class=TgGame.TgSilhouetteComponentPaladins + end object + m_Silhouette=MySilhouette + m_fPostLandDurationAccelerant=1.5000000 + m_bExplodeOnTouch=false + m_bUseGravityZOverride=true + m_fSpeedToActivateBounceFX=100.0000000 + m_fGravityZOverride=-650.0000000 + m_bTrackProjectileForTimelapse=true + m_nShadowFXID=7255 + m_fMaxDecalHeight=2000.0000000 + m_fTrackingUpdateRate=0.2000000 + m_fPostLandDuration=3.0000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_GrumpyBomb.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_GrumpyBomb.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + Components[2]=MySilhouette + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_HealingPotion.uc b/exported/TgGame/Classes/TgProj_HealingPotion.uc new file mode 100755 index 00000000..863d9a23 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_HealingPotion.uc @@ -0,0 +1,47 @@ +class TgProj_HealingPotion extends TgProj_FreeGrenade + native(ChampPip) + hidecategories(Navigation); + +// Export UTgProj_HealingPotion::execGetExplosionFXParams(FFrame&, void* const) +native function GetExplosionFXParams(out array Params); + +simulated function PlayAdditionalHitFX(bool bSuccessfulHit, Vector FXLocation, Vector HitNormal, Vector ProjDir, out array ExplosionParams) +{ + local TgPawn_Pip pipOwner; + + super(TgProjectile).PlayAdditionalHitFX(bSuccessfulHit, FXLocation, HitNormal, ProjDir, ExplosionParams); + pipOwner = TgPawn_Pip(r_Owner); + // End:0xDF + if(((c_Mesh != none) && pipOwner != none) && pipOwner.r_bHasMegaPotion) + { + c_Mesh.FxActivateIndependant('Generic1', 0, FXLocation, ProjDir,,,, ExplosionParams); + } + //return; +} + +defaultproperties +{ + m_bExplodeOnGeometry=true + m_bUseGravityZOverride=true + m_fGravityZOverride=-650.0000000 + m_bExplodeAtMaxRange=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_HealingPotion.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_CollisionSettings=(bPassThroughFriends=false,bPassThroughEnemies=true) + // Reference: CylinderComponent'TgGame.Default__TgProj_HealingPotion.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_HexaFireRocket.uc b/exported/TgGame/Classes/TgProj_HexaFireRocket.uc new file mode 100755 index 00000000..a204ee3a --- /dev/null +++ b/exported/TgGame/Classes/TgProj_HexaFireRocket.uc @@ -0,0 +1,35 @@ +class TgProj_HexaFireRocket extends TgProj_Simulated + native(ChampRuckus) + hidecategories(Navigation); + +simulated event ClearPersistTimers() +{ + ClearTimer('TimerPulse'); + ClearTimer('ShutDown'); + m_fPersistHitPulse = 0.0000000; + m_fPersistTime = 0.0000000; + //return; +} + +defaultproperties +{ + m_bCanSpawnOnClientFirst=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_HexaFireRocket.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_HexaFireRocket.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_IceStorm.uc b/exported/TgGame/Classes/TgProj_IceStorm.uc new file mode 100755 index 00000000..4e534926 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_IceStorm.uc @@ -0,0 +1,142 @@ +class TgProj_IceStorm extends TgProj_Simulated + hidecategories(Navigation); + +var bool m_bStopped; +var bool m_bCheckLOSForHit; + +simulated function CompleteInitialization() +{ + local float fTickDuration; + + super.CompleteInitialization(); + // End:0x6D + if(int(Role) == int(ROLE_Authority)) + { + // End:0x6D + if(m_OwnerFireMode != none) + { + fTickDuration = m_OwnerFireMode.GetPersistPulse(); + SetTimer(fTickDuration, true, 'HandleTick'); + } + } + //return; +} + +function HandleTick() +{ + local Actor nextTarget; + local int I; + local bool hitValid; + local Vector blockingLocation; + + I = m_PassThroughTargets.Length - 1; + J0x17: + + // End:0x13A [Loop If] + if(I >= 0) + { + nextTarget = m_PassThroughTargets[I]; + hitValid = true; + // End:0x12C + if(nextTarget != none) + { + // End:0xC2 + if(m_bCheckLOSForHit) + { + TraceWorldPhysicalGeometry(Location, nextTarget.Location, blockingLocation); + // End:0xC2 + if(!IsZero(blockingLocation)) + { + hitValid = false; + } + } + // End:0x12C + if(hitValid) + { + ApplyHit(nextTarget, nextTarget.Location, Normal(nextTarget.Location - Location)); + } + } + I--; + // [Loop Continue] + goto J0x17; + } + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + local Rotator rRotation; + + super.Tick(DeltaSeconds); + // End:0x72 + if(Rotation.Pitch != 0) + { + rRotation = Rotation; + rRotation.Pitch = 0; + SetRotation(rRotation); + } + //return; +} + +simulated event ExplodeOnTarget(Actor Target, Vector HitLocation, Vector HitNormal) +{ + // End:0x84 + if(!m_bStopped && (Target != none) || ImpactedActor != none) + { + m_bStopped = true; + LifeSpan = GetRemainingTime(); + SetLocation(HitLocation - Normal(Velocity)); + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + } + else + { + super.ExplodeOnTarget(Target, HitLocation, HitNormal); + } + //return; +} + +simulated function float GetRemainingTime() +{ + local float fRangeRemaining, fSpeed; + + // End:0x15 + if(!m_bIsInitialized) + { + return 0.0000000; + } + fRangeRemaining = float(Max(0, int(r_fRange - VSize(Location - r_vSpawnLocation)))); + fSpeed = VSize(Velocity); + // End:0x73 + if(fSpeed == float(0)) + { + return 0.0000000; + } + return fRangeRemaining / fSpeed; + //return ReturnValue; +} + +defaultproperties +{ + m_bCheckLOSForHit=true + m_bTrackProjectileForTimelapse=true + m_bCanSpawnOnClientFirst=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_IceStorm.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_CollisionSettings=(bPassThroughShields=true,bPassThroughBlocker=true,bHitAndPassThrough=true,bHitOnTick=true,bOnlyHitOnceOnPassThrough=false) + // Reference: CylinderComponent'TgGame.Default__TgProj_IceStorm.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_ImpalerArrow.uc b/exported/TgGame/Classes/TgProj_ImpalerArrow.uc new file mode 100755 index 00000000..1afa05b0 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_ImpalerArrow.uc @@ -0,0 +1,36 @@ +class TgProj_ImpalerArrow extends TgProj_Greatbow + native(ChampLongbow) + hidecategories(Navigation); + +var float m_fCollisionScale; + +function bool ApplyTheHit(TgDeviceFire FireMode, ImpactInfo Impact, Actor DamageInstigator) +{ + FireMode.ApplyHitSpecial(Impact.HitActor, Impact, 10693); + return FireMode.ApplyHit(Impact, DamageInstigator); + //return ReturnValue; +} + +defaultproperties +{ + m_fCollisionScale=2.0000000 + m_bCanSpawnOnClientFirst=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_ImpalerArrow.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Greatbow.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_ImpalerArrow.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Greatbow.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_KnifeLongRange.uc b/exported/TgGame/Classes/TgProj_KnifeLongRange.uc new file mode 100755 index 00000000..8be84d21 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_KnifeLongRange.uc @@ -0,0 +1,25 @@ +class TgProj_KnifeLongRange extends TgProj_Simulated + hidecategories(Navigation); + +defaultproperties +{ + m_bCanSpawnOnClientFirst=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_KnifeLongRange.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_KnifeLongRange.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_KnifeShortRange.uc b/exported/TgGame/Classes/TgProj_KnifeShortRange.uc new file mode 100755 index 00000000..f6fa8d22 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_KnifeShortRange.uc @@ -0,0 +1,25 @@ +class TgProj_KnifeShortRange extends TgProj_FreeGrenade + hidecategories(Navigation); + +defaultproperties +{ + m_bExplodeOnGeometry=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_KnifeShortRange.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_KnifeShortRange.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_LanepusherCannon.uc b/exported/TgGame/Classes/TgProj_LanepusherCannon.uc new file mode 100755 index 00000000..fb5b6b8a --- /dev/null +++ b/exported/TgGame/Classes/TgProj_LanepusherCannon.uc @@ -0,0 +1,65 @@ +class TgProj_LanepusherCannon extends TgProj_Simulated + hidecategories(Navigation); + +simulated event Vector GetSeekLocation() +{ + local float fDist, fSpeed; + local Vector TargetLocation; + local TgPawn_SiegeWall WallPawn; + + // End:0x39 + if(m_TrackingSettings.mTarget == none) + { + return Location + Vector(Rotation); + } + TargetLocation = m_TrackingSettings.mTarget.Location; + WallPawn = TgPawn_SiegeWall(m_TrackingSettings.mTarget); + // End:0xD5 + if(WallPawn != none) + { + TargetLocation.Z += 100.0000000; + } + fDist = VSize(TargetLocation - Location); + fSpeed = VSize(Velocity); + // End:0x1AA + if((fSpeed > float(0)) && VSizeSq(m_TrackingSettings.mTarget.Velocity) > float(0)) + { + TargetLocation += (m_TrackingSettings.mTarget.Velocity * (fDist / fSpeed)); + } + return TargetLocation; + //return ReturnValue; +} + +simulated function Tick(float fDeltaTime) +{ + super.Tick(fDeltaTime); + // End:0x96 + if(((VSizeSq(Velocity) < 0.1000000) && VSizeSq(Location - (GetSeekLocation())) < 25.0000000) && !m_bHasExploded) + { + ExplodeOnTarget(m_TrackingSettings.mTarget, Location, Vector(Rotation)); + } + //return; +} + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_LanepusherCannon.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_TrackingSettings=(bUsesTracking=true,bIgnoreWorldIfSeeking=true) + // Reference: CylinderComponent'TgGame.Default__TgProj_LanepusherCannon.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_Loogie.uc b/exported/TgGame/Classes/TgProj_Loogie.uc new file mode 100755 index 00000000..fcff808a --- /dev/null +++ b/exported/TgGame/Classes/TgProj_Loogie.uc @@ -0,0 +1,257 @@ +class TgProj_Loogie extends TgProj_Simulated + native(ChampDrogoz) + hidecategories(Navigation); + +var bool m_bWasExplodedByRocket; +var bool m_bIgnoreRocketOwner; + +simulated function HideProjectile() +{ + super(TgProjectile).HideProjectile(); + // End:0x67 + if(c_Mesh != none) + { + // End:0x67 + if(m_bWasExplodedByRocket) + { + c_Mesh.FxActivateIndependant('Loogie_Explosion', 0, Location, Vector(Rotation)); + } + } + //return; +} + +simulated function PlayAdditionalHitFX(bool bSuccessfulHit, Vector FXLocation, Vector HitNormal, Vector ProjDir, out array ExplosionParams) +{ + local TgSpecialFx HitWallFx; + + // End:0xE2 + if(c_Mesh != none) + { + // End:0xE2 + if(!m_bWasExplodedByRocket) + { + c_Mesh.FxActivateIndependant('Loogie_Impact', 0, Location, Vector(Rotation)); + HitWallFx = TgSpecialFx(c_Mesh.FxGet('Loogie_Impact', 0)); + // End:0xE2 + if(HitWallFx != none) + { + HitWallFx.SpawnDecalAt(FXLocation, -HitNormal); + } + } + } + //return; +} + +simulated event ScaleAbilityFX() +{ + local array FxList; + local TgSpecialFx Fx; + local editinline ParticleSystemComponent PSC; + local int I, J; + local float Radius; + + Radius = m_fProximityDistance / float(16); + // End:0x30B + if((Radius > 0.0000000) && c_Mesh != none) + { + FxList = c_Mesh.FxGetAll('AlwaysOn', 0); + I = 0; + J0x7E: + + // End:0x1A4 [Loop If] + if(I < FxList.Length) + { + Fx = TgSpecialFx(FxList[I]); + // End:0x196 + if(Fx != none) + { + J = 0; + J0xD6: + + // End:0x196 [Loop If] + if(J < Fx.c_PSCList.Length) + { + PSC = Fx.c_PSCList[J].c_PSC; + // End:0x188 + if(PSC != none) + { + PSC.SetFloatParameter('DamageRadius', Radius); + } + J++; + // [Loop Continue] + goto J0xD6; + } + } + I++; + // [Loop Continue] + goto J0x7E; + } + FxList = c_Mesh.FxGetAll('Loogie_Explosion', 0); + I = 0; + J0x1E5: + + // End:0x30B [Loop If] + if(I < FxList.Length) + { + Fx = TgSpecialFx(FxList[I]); + // End:0x2FD + if(Fx != none) + { + J = 0; + J0x23D: + + // End:0x2FD [Loop If] + if(J < Fx.c_PSCList.Length) + { + PSC = Fx.c_PSCList[J].c_PSC; + // End:0x2EF + if(PSC != none) + { + PSC.SetFloatParameter('DamageRadius', Radius); + } + J++; + // [Loop Continue] + goto J0x23D; + } + } + I++; + // [Loop Continue] + goto J0x1E5; + } + } + //return; +} + +simulated event ProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgProj_DrogozRocket rocketProjectile; + + // End:0x0F + if(m_bWasExplodedByRocket) + { + return; + } + // End:0x1B0 + if(((Other != none) && Other.Owner != none) && !m_bHasExploded) + { + // End:0x1B0 + if(Other.Owner.IsA('TgProj_DrogozRocket') || Other.Owner.IsA('TgDevice_DragonSlam')) + { + // End:0x1B0 + if((Other.Owner.Instigator == Instigator) || m_bIgnoreRocketOwner) + { + DetonateFromRocket(Other.Owner, HitLocation, HitNormal); + rocketProjectile = TgProj_DrogozRocket(Other.Owner); + // End:0x1B0 + if(rocketProjectile != none) + { + rocketProjectile.ShutDown(); + } + } + } + } + super(TgProjectile).ProxyTouch(Other, OtherComp, HitLocation, HitNormal); + //return; +} + +simulated event ExplodeOnTarget(Actor Target, Vector HitLocation, Vector HitNormal) +{ + // End:0x3F + if(m_bWasExplodedByRocket && m_OwnerFireMode != none) + { + m_OwnerFireMode.m_bIsAOE = true; + } + super.ExplodeOnTarget(Target, HitLocation, HitNormal); + // End:0xA3 + if(m_bWasExplodedByRocket && m_OwnerFireMode != none) + { + m_OwnerFireMode.m_bIsAOE = false; + } + //return; +} + +simulated function DetonateFromRocket(Actor Target, Vector HitLocation, Vector HitNormal) +{ + m_bFlashSpecialExplosion = true; + m_bWasExplodedByRocket = true; + ExplodeOnTarget(Target, HitLocation, HitNormal); + //return; +} + +simulated event ClientExplodeSpecial(Actor Target, Vector HitLocation, Vector HitNormal) +{ + local TgProj_DrogozRocket rocketProjectile; + + m_bWasExplodedByRocket = true; + // End:0xB6 + if((int(WorldInfo.NetMode) == int(NM_Client)) && Target != none) + { + rocketProjectile = TgProj_DrogozRocket(Target); + // End:0xB6 + if((rocketProjectile != none) && !rocketProjectile.m_bIsShutDown) + { + rocketProjectile.ShutDown(); + } + } + super.ClientExplodeSpecial(Target, HitLocation, HitNormal); + //return; +} + +event bool UseAOE() +{ + // End:0x12 + if(m_bWasExplodedByRocket) + { + return true; + } + else + { + return false; + } + //return ReturnValue; +} + +function bool ApplyTheHit(TgDeviceFire FireMode, ImpactInfo Impact, Actor DamageInstigator) +{ + local TgPawn_Drogoz drogozOwner; + + // End:0xEE + if(m_bWasExplodedByRocket) + { + FireMode.ApplyHitSpecial(Impact.HitActor, Impact, 10693); + drogozOwner = TgPawn_Drogoz(r_Owner); + // End:0xEC + if((drogozOwner != none) && drogozOwner.r_bCombustibleActive) + { + FireMode.ApplyHitSpecial(Impact.HitActor, Impact); + } + return true; + } + return FireMode.ApplyHit(Impact, DamageInstigator); + //return ReturnValue; +} + +defaultproperties +{ + m_fGravityScale=0.7000000 + m_nShadowFXID=6883 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Loogie.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_Loogie.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + Physics=EPhysics.PHYS_Falling + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_MalDambaInhand.uc b/exported/TgGame/Classes/TgProj_MalDambaInhand.uc new file mode 100755 index 00000000..7e725596 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_MalDambaInhand.uc @@ -0,0 +1,30 @@ +class TgProj_MalDambaInhand extends TgProj_FreeGrenade + hidecategories(Navigation); + +defaultproperties +{ + m_bExplodeOnGeometry=true + m_bNeedsFrictionOverride=true + m_fGravityScale=1.2000000 + m_fFrictionOverride=0.5000000 + m_nShadowFXID=7299 + m_fMaxDecalHeight=2000.0000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_MalDambaInhand.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_MalDambaInhand.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_Molotov.uc b/exported/TgGame/Classes/TgProj_Molotov.uc new file mode 100755 index 00000000..ec3e5074 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_Molotov.uc @@ -0,0 +1,39 @@ +class TgProj_Molotov extends TgProj_FreeGrenade + native(ChampTyra) + hidecategories(Navigation); + +// Export UTgProj_Molotov::execSpawnDeployable(FFrame&, void* const) +native function TgDeployable SpawnDeployable(Vector vLocation, optional Actor TargetActor, optional Vector vNormal); + +defaultproperties +{ + m_bExplodeOnFloor=true + m_bUseBilinearInterpolationForBounceDamping=true + m_fBounceDampingVertMin=0.1000000 + m_fBounceDampingVertMax=1.0000000 + m_fBounceDampingHorizMin=0.0900000 + m_fBounceDampingHorizMax=0.7500000 + m_fBounceDamping=0.1000000 + m_fGravityScale=1.3000000 + m_bExplodeAtMaxRange=true + m_bDeployOnGround=true + m_bAlwaysDeployUpwards=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Molotov.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_Molotov.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_OppressorMine.uc b/exported/TgGame/Classes/TgProj_OppressorMine.uc new file mode 100755 index 00000000..e7684c26 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_OppressorMine.uc @@ -0,0 +1,60 @@ +class TgProj_OppressorMine extends TgProj_FreeGrenade + native(ChampKinessa) + hidecategories(Navigation); + +// Export UTgProj_OppressorMine::execSpawnDeployable(FFrame&, void* const) +native function TgDeployable SpawnDeployable(Vector vLocation, optional Actor TargetActor, optional Vector vNormal); + +simulated function Actor CalculateHitActor(Actor Target, Vector HitLocation, Vector HitNormal, out TraceHitInfo HitInfo) +{ + return Target; + //return ReturnValue; +} + +simulated function bool ShouldHitBounce(Actor Target, Vector HitNormal) +{ + // End:0x36 + if((Target != none) && Target.IsA('TgPawn_Juggernaut')) + { + return false; + } + // End:0xCE + if((Target != none) && !CheckTeamPassThrough(Target)) + { + // End:0xCE + if((Target.IsA('TgPawn') || Target.IsA('TgDeployable')) || Target.IsA('DynamicBlockingVolume')) + { + return true; + } + } + return super.ShouldHitBounce(Target, HitNormal); + //return ReturnValue; +} + +defaultproperties +{ + m_bExplodeOnTouch=false + m_bExplodeOnGeometry=true + m_fBounceDamping=0.5000000 + m_nShadowFXID=7060 + m_fMaxDecalHeight=2000.0000000 + m_DeployableSpawnOrientation=SpawnDeployableOrientation.SDO_FaceRotation + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_OppressorMine.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_OppressorMine.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_PoppyBomb.uc b/exported/TgGame/Classes/TgProj_PoppyBomb.uc new file mode 100755 index 00000000..be9ffaad --- /dev/null +++ b/exported/TgGame/Classes/TgProj_PoppyBomb.uc @@ -0,0 +1,84 @@ +class TgProj_PoppyBomb extends TgProj_FreeGrenade + native(ChampBombKing) + hidecategories(Navigation); + +// Export UTgProj_PoppyBomb::execSpawnDeployable(FFrame&, void* const) +native function TgDeployable SpawnDeployable(Vector vLocation, optional Actor TargetActor, optional Vector vNormal); + +simulated function AltFireDetonate() +{ + m_bSuppressDeployableSpawn = true; + super(TgProjectile).AltFireDetonate(); + //return; +} + +function bool ApplyHit(Actor Target, Vector HitLocation, Vector HitNormal, optional int HitItem) +{ + // End:0x23 + if(!m_bSuppressDeployableSpawn && s_nSpawnDeployableId != 0) + { + return false; + } + return super(TgProj_Simulated).ApplyHit(Target, HitLocation, HitNormal, HitItem); + //return ReturnValue; +} + +simulated event PlayHitWallExplosionFX(Vector HitNormal, Vector HitLocation) +{ + // End:0x22 + if(!m_bSuppressDeployableSpawn && s_nSpawnDeployableId != 0) + { + return; + } + super.PlayHitWallExplosionFX(HitNormal, HitLocation); + //return; +} + +simulated function PlayHitTargetFX(Actor Target, Vector HitLocation, Vector HitNormal, bool bExploded) +{ + // End:0x22 + if(!m_bSuppressDeployableSpawn && s_nSpawnDeployableId != 0) + { + return; + } + super.PlayHitTargetFX(Target, HitLocation, HitNormal, bExploded); + //return; +} + +simulated event bool CheckTeamPassThrough(Actor Other) +{ + // End:0x6F + if((Other.IsA('TgPawn') || Other.IsA('TgDeployable')) || Other.IsA('DynamicBlockingVolume')) + { + return true; + } + return super(TgProjectile).CheckTeamPassThrough(Other); + //return ReturnValue; +} + +defaultproperties +{ + m_bExplodeOnGeometry=true + m_bUseGravityZOverride=true + m_fGravityZOverride=-650.0000000 + m_bDeployOnCharacter=true + m_DeployableSpawnOrientation=SpawnDeployableOrientation.SDO_FaceRotation + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_PoppyBomb.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_PoppyBomb.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_PotionLauncherProjectile.uc b/exported/TgGame/Classes/TgProj_PotionLauncherProjectile.uc new file mode 100755 index 00000000..526620e0 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_PotionLauncherProjectile.uc @@ -0,0 +1,82 @@ +class TgProj_PotionLauncherProjectile extends TgProj_FreeGrenade + hidecategories(Navigation); + +simulated function PlayAdditionalHitFX(bool bSuccessfulHit, Vector FXLocation, Vector HitNormal, Vector ProjDir, out array ExplosionParams) +{ + local int I; + local TgPawn TgP; + local TgDeviceForm devForm; + + TgP = TgPawn(Instigator); + // End:0x3E + if((TgP == none) || c_Mesh == none) + { + return; + } + I = 0; + J0x49: + + // End:0x20A [Loop If] + if(I < 33) + { + devForm = TgP.c_EquipForm[I]; + // End:0x1FC + if((devForm != none) && devForm.FormState != 'DeviceCoolDown') + { + switch(devForm.c_EquipDeviceInfo.nDeviceId) + { + // End:0x155 + case 12840: + c_Mesh.FxActivateIndependant('PipLauncherMalady', 0, FXLocation, ProjDir,,,, ExplosionParams); + // End:0x1FC + break; + // End:0x1A7 + case 12846: + c_Mesh.FxActivateIndependant('PipLauncherAmbush', 0, FXLocation, ProjDir,,,, ExplosionParams); + // End:0x1FC + break; + // End:0x1F9 + case 12842: + c_Mesh.FxActivateIndependant('PipLauncherBlight', 0, FXLocation, ProjDir,,,, ExplosionParams); + // End:0x1FC + break; + // End:0xFFFF + default: + break; + } + } + else + { + I++; + // [Loop Continue] + goto J0x49; + }/* !MISMATCHING REMOVE, tried Loop got Type:Else Position:0x1FC! */ + //return; + }/* !MISMATCHING REMOVE, tried Else got Type:Loop Position:0x049! */ +} + +defaultproperties +{ + m_bExplodeOnGeometry=true + m_bUseGravityZOverride=true + m_fGravityZOverride=-650.0000000 + m_bExplodeAtMaxRange=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_PotionLauncherProjectile.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_PotionLauncherProjectile.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_PotionLauncherProjectile_HighFireAngleTest.uc b/exported/TgGame/Classes/TgProj_PotionLauncherProjectile_HighFireAngleTest.uc new file mode 100755 index 00000000..be545338 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_PotionLauncherProjectile_HighFireAngleTest.uc @@ -0,0 +1,25 @@ +class TgProj_PotionLauncherProjectile_HighFireAngleTest extends TgProj_PotionLauncherProjectile + hidecategories(Navigation); + +defaultproperties +{ + m_fTossZ=0.0000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_PotionLauncherProjectile_HighFireAngleTest.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_PotionLauncherProjectile.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_PotionLauncherProjectile_HighFireAngleTest.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_PotionLauncherProjectile.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_Reversal.uc b/exported/TgGame/Classes/TgProj_Reversal.uc new file mode 100755 index 00000000..00245407 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_Reversal.uc @@ -0,0 +1,27 @@ +class TgProj_Reversal extends TgProj_Simulated + hidecategories(Navigation); + +var float m_fDamageOverride; + +defaultproperties +{ + m_bCanSpawnOnClientFirst=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Reversal.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_Reversal.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_Seedling.uc b/exported/TgGame/Classes/TgProj_Seedling.uc new file mode 100755 index 00000000..d415a6ba --- /dev/null +++ b/exported/TgGame/Classes/TgProj_Seedling.uc @@ -0,0 +1,210 @@ +class TgProj_Seedling extends TgProj_FreeGrenade + native(ChampFairy) + hidecategories(Navigation); + +var const int m_nSecondaryProjToSpawn; +var int m_nSpawnsRemaining; +var export editinline SkeletalMeshComponent m_CachedSMC; +var TgSkelControlSingleBone m_GrenadeSkelControl; +var TgSkelControlSingleBone m_SpikesSkelControl; +var MaterialInstanceConstant m_fCachedMIC; +var Rotator m_rRotationalVelocity; +var export editinline TgSilhouetteComponent m_Silhouette; +var LinearColor m_LocalSilhouetteColor; +var bool m_bSilhouetteInitialized; +var bool m_bSilhouetteAllowed; +var bool m_bBuildupSoundPlayed; + +// Export UTgProj_Seedling::execGetRotatedAim(FFrame&, void* const) +native function Vector GetRotatedAim(Vector initialAim, int Angle); + +// Export UTgProj_Seedling::execInitializeSilhouetteComponent(FFrame&, void* const) +native function InitializeSilhouetteComponent(); + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + m_rRotationalVelocity.Pitch = -600000; + //return; +} + +simulated event bool CheckTeamPassThrough(Actor Other) +{ + // End:0x26 + if(m_nSpawnsRemaining == 0) + { + return super(TgProjectile).CheckTeamPassThrough(Other); + } + else + { + // End:0x4E + if(Other.IsA('TgPawn_Character')) + { + return true; + } + else + { + return super(TgProjectile).CheckTeamPassThrough(Other); + } + } + //return ReturnValue; +} + +function bool ApplyHit(Actor Target, Vector HitLocation, Vector HitNormal, optional int HitItem) +{ + local int I, RotationAmount; + local Vector StartLoc, initialAim, AimDir; + local TgDevice spawningDevice; + local TgDeviceFire secondaryFiremode; + local Class projClass; + local TgProj_Seedling clusterBomb; + + // End:0x3BD + if((((int(Role) == int(ROLE_Authority)) && m_OwnerFireMode != none) && m_nSpawnsRemaining > 0) && m_nSecondaryProjToSpawn > 0) + { + // End:0xFE + if(m_OwnerFireMode != none) + { + spawningDevice = TgDevice(m_OwnerFireMode.m_Owner); + // End:0xEB + if((spawningDevice != none) && spawningDevice.m_FireMode.Length > 1) + { + secondaryFiremode = spawningDevice.m_FireMode[1]; + } + else + { + secondaryFiremode = m_OwnerFireMode; + } + } + projClass = secondaryFiremode.GetProjectileClass(); + // End:0x3BD + if(projClass != none) + { + StartLoc = Location; + initialAim = m_vSpawnVelocity; + initialAim.Z = 0.0000000; + initialAim = Normal(initialAim) * 0.8660250; + initialAim.Z = 0.5000000; + RotationAmount = 65536 / m_nSecondaryProjToSpawn; + I = 0; + J0x1E1: + + // End:0x3BD [Loop If] + if(I < m_nSecondaryProjToSpawn) + { + AimDir = GetRotatedAim(initialAim, I * RotationAmount); + clusterBomb = TgProj_Seedling(TgRepInfo_Game(WorldInfo.GRI).SpawnSimulatedProjectile(TgGame(WorldInfo.Game).GetNextProjectileInstanceId(), secondaryFiremode.m_nId, Instigator, StartLoc, AimDir)); + // End:0x3AF + if(clusterBomb != none) + { + clusterBomb.m_OwnerFireMode = secondaryFiremode; + clusterBomb.r_vSpawnLocation = clusterBomb.Location; + clusterBomb.m_nSpawnsRemaining = m_nSpawnsRemaining - 1; + clusterBomb.CompleteInitialization(); + } + I++; + // [Loop Continue] + goto J0x1E1; + } + } + } + return super(TgProj_Simulated).ApplyHit(Target, HitLocation, HitNormal, HitItem); + //return ReturnValue; +} + +function float GetPostLandDuration() +{ + local TgDevice spawningDevice; + local TgDeviceFire FireMode; + + // End:0xFF + if(m_OwnerFireMode != none) + { + spawningDevice = TgDevice(m_OwnerFireMode.m_Owner); + // End:0xFF + if(spawningDevice != none) + { + // End:0xFF + if(spawningDevice.m_FireMode.Length > 0) + { + FireMode = spawningDevice.m_FireMode[0]; + // End:0xFF + if(FireMode != none) + { + // End:0xDF + if(m_nSpawnsRemaining > 0) + { + return FireMode.GetCustomValue1(); + } + else + { + return FireMode.GetCustomValue2(); + } + } + } + } + } + return super.GetPostLandDuration(); + //return ReturnValue; +} + +function StartLandExplodeTimer() +{ + super.StartLandExplodeTimer(); + // End:0xF6 + if(!m_bBuildupSoundPlayed) + { + m_bBuildupSoundPlayed = true; + // End:0xF6 + if(c_Mesh != none) + { + // End:0x9E + if(m_nSpawnsRemaining > 0) + { + c_Mesh.FxDeactivateGroup('Seedling_Buildup_Primary', 0); + c_Mesh.FxActivateGroup('Seedling_Buildup_Primary', 0); + } + else + { + c_Mesh.FxDeactivateGroup('Seedling_Buildup_Secondary', 0); + c_Mesh.FxActivateGroup('Seedling_Buildup_Secondary', 0); + } + } + } + //return; +} + +defaultproperties +{ + m_nSecondaryProjToSpawn=4 + m_nSpawnsRemaining=1 + // Reference: TgSilhouetteComponentPaladins'TgGame.Default__TgProj_Seedling.MySilhouette' + begin object name="MySilhouette" class=TgGame.TgSilhouetteComponentPaladins + end object + m_Silhouette=MySilhouette + m_LocalSilhouetteColor=(R=1.0000000,G=0.7000000,B=0.1875000,A=0.2500000) + m_bExplodeOnTouch=false + m_bTrackProjectileForTimelapse=true + m_fTrackingUpdateRate=0.2000000 + m_fPostLandDuration=1.0000000 + m_fTossZ=0.0000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Seedling.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_Seedling.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + Components[2]=MySilhouette + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_SeedlingSecondary.uc b/exported/TgGame/Classes/TgProj_SeedlingSecondary.uc new file mode 100755 index 00000000..88a9276d --- /dev/null +++ b/exported/TgGame/Classes/TgProj_SeedlingSecondary.uc @@ -0,0 +1,34 @@ +class TgProj_SeedlingSecondary extends TgProj_Seedling + native(ChampFairy) + hidecategories(Navigation); + +var bool m_bInitialized; +var float m_fGrowthLifetime; + +defaultproperties +{ + // Reference: TgSilhouetteComponentPaladins'TgGame.Default__TgProj_SeedlingSecondary.MySilhouette' + // Archetype: TgSilhouetteComponentPaladins'TgGame.Default__TgProj_Seedling.MySilhouette' + begin object name="MySilhouette" + end object + m_Silhouette=MySilhouette + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_SeedlingSecondary.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Seedling.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_SeedlingSecondary.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Seedling.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + Components[2]=MySilhouette + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_Simulated.uc b/exported/TgGame/Classes/TgProj_Simulated.uc new file mode 100755 index 00000000..0714bc1c --- /dev/null +++ b/exported/TgGame/Classes/TgProj_Simulated.uc @@ -0,0 +1,546 @@ +class TgProj_Simulated extends TgProjectile + native(Projectiles) + hidecategories(Navigation); + +const LERP_FROM_CLIENT_POSITION_DURATION = 0.2; + +enum eSimProjEvent +{ + Proj_Spawn, // 0 + Proj_Exploded, // 1 + Proj_ExplodedSpecial, // 2 + Proj_Shutdown, // 3 + Proj_Hit, // 4 + Proj_Target, // 5 + Proj_HitWall, // 6 + Proj_HideProjectile, // 7 + Proj_Fizzle, // 8 + Proj_MAX // 9 +}; + +var bool m_bHasFlashedShutdown; +var bool m_bHasFlashExploded; +var bool m_bIgnoreClientHits; +var bool m_bShouldQueueServerHits; +var bool m_bHasQueuedServerHit; +var bool m_bNeedsFrictionOverride; +var bool m_bFlashSpecialExplosion; +var bool m_bTrackProjectileForTimelapse; +var bool s_bTrackingInitialized; +var const bool m_bRequireAccurateTicksForPrediction; +var int m_nProjectileInstanceId; +var int m_nClientFireRequestId; +var Vector m_LerpFromClientOffset; +var float m_LerpTimeRemaining; +var Actor m_QueuedExplodeTarget; +var Vector m_QueuedExplodeLocation; +var Vector m_QueuedExplodeNormal; +var Vector m_vSpawnVelocity; +var Vector m_vSpawnAcceleration; +var Rotator m_rSpawnRotator; +var float m_fAllowedClientMovementTime; +var float m_fSpawnTimeStamp; +var float m_fGravityScale; +var float m_fFrictionOverride; +var array s_InterestedPlayers; +var int m_nShadowFXID; +var TgSpecialFx m_ShadowFX; +var export editinline DecalComponent m_ShadowDecal; +var float m_fShadowBaseWidth; +var float m_fMaxDecalHeight; +var Rotator m_CachedRotation; +var float m_fTrackingUpdateRate; +var float s_fTrackingUpdateTimer; +var TgGameplayCurves m_GameplayCurves; +var int m_nDeployableOverlayDisplayMask; +var TgObject.DeployableOverlayIcon m_eDeployableOverlayIcon; +var TgObject.DeployableOverlayState m_eDeployableOverlayState; +var float m_fDeployableOverlayEnemyViewDist; +var float m_fDeployableActiveLifeTime; + +// Export UTgProj_Simulated::execCompleteInitialization(FFrame&, void* const) +native function CompleteInitialization(); + +// Export UTgProj_Simulated::execFlashNotifySpawn(FFrame&, void* const) +native function FlashNotifySpawn(); + +// Export UTgProj_Simulated::execFlashNotifyShutdown(FFrame&, void* const) +native function FlashNotifyShutdown(); + +// Export UTgProj_Simulated::execFlashNotifyFizzle(FFrame&, void* const) +native function FlashNotifyFizzle(); + +// Export UTgProj_Simulated::execFlashNotifyExploded(FFrame&, void* const) +native function FlashNotifyExploded(Actor Target, Vector HitLocation, Vector HitNormal); + +// Export UTgProj_Simulated::execFlashNotifyExplodedSpecial(FFrame&, void* const) +native function FlashNotifyExplodedSpecial(Actor Target, Vector HitLocation, Vector HitNormal); + +// Export UTgProj_Simulated::execFlashNotifyHit(FFrame&, void* const) +native function FlashNotifyHit(Actor Target, Vector HitLocation, Vector HitNormal); + +// Export UTgProj_Simulated::execFlashNotifyHitWall(FFrame&, void* const) +native function FlashNotifyHitWall(Actor Wall, Vector HitNormal, Vector HitLocation); + +// Export UTgProj_Simulated::execFlashNotifyTarget(FFrame&, void* const) +native function FlashNotifyTarget(Actor TargetActor, Vector TargetLocation); + +// Export UTgProj_Simulated::execSetLocationFromServer(FFrame&, void* const) +native function SetLocationFromServer(Vector InLocation); + +// Export UTgProj_Simulated::execCheckFirstWorldExplosion(FFrame&, void* const) +native function bool CheckFirstWorldExplosion(Vector StartPos, Vector EndPos); + +// Export UTgProj_Simulated::execGetGravityZ(FFrame&, void* const) +native function float GetGravityZ(); + +// Export UTgProj_Simulated::execPredictStartLocationBasedOnPing(FFrame&, void* const) +native function PredictStartLocationBasedOnPing(float Ping); + +// Export UTgProj_Simulated::execGetIndexForTimelapseTracking(FFrame&, void* const) +native function int GetIndexForTimelapseTracking(); + +// Export UTgProj_Simulated::execInitTrackingForTimelapse(FFrame&, void* const) +native function InitTrackingForTimelapse(); + +// Export UTgProj_Simulated::execShutDownTrackingForTimelapse(FFrame&, void* const) +native function ShutDownTrackingForTimelapse(); + +simulated event HandleQueuedFirstWorldExplosion() +{ + HideProjectile(); + //return; +} + +simulated function ProcessTouch(Actor Other, Vector HitLocation, Vector HitNormal) +{ + // End:0x0F + if(m_bIgnoreClientHits) + { + return; + } + super.ProcessTouch(Other, HitLocation, HitNormal); + //return; +} + +simulated function HitPassThroughTarget(Actor Target, Vector HitLocation, Vector HitNormal) +{ + // End:0x24 + if(!m_CollisionSettings.bHitAndPassThrough) + { + return; + } + // End:0x69 + if(m_PassThroughTargets.Find(Target) == -1) + { + m_bHitValidTarget = true; + m_PassThroughTargets.AddItem(Target); + } + else + { + // End:0x8B + if(m_CollisionSettings.bOnlyHitOnceOnPassThrough) + { + return; + } + } + // End:0x146 + if(!m_CollisionSettings.bHitOnTick && m_PassThroughTargets.Find(Target) != -1) + { + // End:0x120 + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + SendExplodeToServer(Target, HitLocation, HitNormal); + } + else + { + ApplyHit(Target, HitLocation, HitNormal); + } + } + //return; +} + +simulated function SendExplodeToServer(Actor Other, Vector HitLocation, Vector HitNormal) +{ + local TgDevice OwningDevice; + local TgPawn HitPawn; + local float HitPawnServerTimeStamp, ProjectileAliveTime; + + // End:0x26B + if(((r_Owner != none) && int(r_Owner.Role) < int(ROLE_Authority)) && m_nProjectileInstanceId == 0) + { + // End:0x26B + if(m_OwnerFireMode != none) + { + OwningDevice = TgDevice(m_OwnerFireMode.m_Owner); + // End:0x26B + if(OwningDevice != none) + { + HitPawn = TgPawn(Other); + // End:0xED + if(HitPawn != none) + { + HitPawnServerTimeStamp = HitPawn.c_fServerTimeStamp; + } + ProjectileAliveTime = WorldInfo.TimeSeconds - m_fSpawnTimeStamp; + // End:0x180 + if(false) + { + m_fAllowedClientMovementTime = 3.0000000; + OwningDevice.ValidateClientProjectileImpact(self, ProjectileAliveTime, Other, HitPawnServerTimeStamp, HitLocation, HitNormal); + } + OwningDevice.ServerQueueProjectileExplode(m_nClientFireRequestId, ProjectileAliveTime, Other, HitPawnServerTimeStamp, HitLocation.X, HitLocation.Y, HitLocation.Z, HitNormal.X, HitNormal.Y, HitNormal.Z); + } + } + } + //return; +} + +simulated event SendSpawnAckToServer() +{ + local TgDevice OwningDevice; + + // End:0xB3 + if(((r_Owner != none) && int(r_Owner.Role) < int(ROLE_Authority)) && m_OwnerFireMode != none) + { + OwningDevice = TgDevice(m_OwnerFireMode.m_Owner); + // End:0xB3 + if(OwningDevice != none) + { + OwningDevice.ServerAckProjectileSpawn(m_nClientFireRequestId); + } + } + //return; +} + +simulated event Explode(Vector HitLocation, Vector HitNormal) +{ + ExplodeOnTarget(none, HitLocation, HitNormal); + //return; +} + +simulated event ClientExplode(Actor Target, Vector HitLocation, Vector HitNormal) +{ + ExplodeOnTarget(Target, HitLocation, HitNormal); + //return; +} + +simulated event ClientExplodeSpecial(Actor Target, Vector HitLocation, Vector HitNormal) +{ + ExplodeOnTarget(Target, HitLocation, HitNormal); + //return; +} + +simulated event SetShouldQueueServerHits(bool bShouldQueue) +{ + m_bShouldQueueServerHits = bShouldQueue; + // End:0x89 + if(!m_bShouldQueueServerHits && m_bHasQueuedServerHit) + { + m_bHasQueuedServerHit = false; + FudgeProjectileHitLocationForShields(m_QueuedExplodeTarget, m_QueuedExplodeLocation, m_QueuedExplodeNormal); + ExplodeOnTarget(m_QueuedExplodeTarget, m_QueuedExplodeLocation, m_QueuedExplodeNormal); + } + //return; +} + +simulated function FudgeProjectileHitLocationForShields(Actor Other, out Vector HitLocation, out Vector HitNormal) +{ + local Vector NewHitLoc, newHitNorm; + local TgDeployable shield; + + // End:0x128 + if(UseAOE()) + { + shield = TgDeployable(Other); + // End:0x128 + if(((shield != none) && shield.CollisionComponent != none) && int(shield.m_CollisionSettings.mCollisionMode) != int(0)) + { + // End:0x128 + if(TraceComponent(NewHitLoc, newHitNorm, shield.CollisionComponent, HitLocation, HitLocation - (Normal(Velocity) * 64.0000000))) + { + HitLocation = NewHitLoc; + HitNormal = newHitNorm; + } + } + } + //return; +} + +simulated event ExplodeOnTarget(Actor Target, Vector HitLocation, Vector HitNormal) +{ + SendExplodeToServer(Target, HitLocation, HitNormal); + // End:0x89 + if(m_bShouldQueueServerHits) + { + // End:0x86 + if(!m_bHasQueuedServerHit) + { + m_bHasQueuedServerHit = true; + m_QueuedExplodeTarget = Target; + m_QueuedExplodeLocation = HitLocation; + m_QueuedExplodeNormal = HitNormal; + } + } + else + { + // End:0xF4 + if(!bHurtEntry) + { + // End:0xCF + if(!m_bFlashSpecialExplosion) + { + FlashNotifyExploded(Target, HitLocation, HitNormal); + } + else + { + FlashNotifyExplodedSpecial(Target, HitLocation, HitNormal); + } + } + super.ExplodeOnTarget(Target, HitLocation, HitNormal); + } + // End:0x153 + if(m_ShadowDecal != none) + { + m_ShadowDecal.SetHidden(true); + m_ShadowDecal = none; + } + //return; +} + +event ClientHitUpdate(Actor Target, Vector HitLocation, Vector HitNormal) +{ + // End:0x4F + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + PlayHitTargetFX(Target, HitLocation, HitNormal, false); + } + //return; +} + +simulated function ShutDown() +{ + // End:0x0F + if(m_bIsShutDown) + { + return; + } + ShutDownTrackingForTimelapse(); + super.ShutDown(); + //return; +} + +simulated event Fizzle() +{ + super.Fizzle(); + FlashNotifyFizzle(); + //return; +} + +simulated function Destroyed() +{ + local TgPlayerController TgPC; + + // End:0x3A + if(m_ShadowDecal != none) + { + m_ShadowDecal.SetHidden(true); + m_ShadowDecal = none; + } + // End:0x74 + if(m_ShadowFX != none) + { + m_ShadowFX.Deactivate(true); + m_ShadowFX = none; + } + // End:0x223 + if(Instigator != none) + { + TgPC = TgPlayerController(Instigator.Controller); + // End:0x223 + if((TgPC != none) && TgPC.bDebugProjectileLagCompensation) + { + // End:0x19B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + TgPC.ClientDrawDebugBox(Location.X, Location.Y, Location.Z, 5.0000000, 5.0000000, 5.0000000, 0, 0, 255); + } + else + { + TgPC.ClientDrawDebugBox(Location.X, Location.Y, Location.Z, 5.0000000, 5.0000000, 5.0000000, 255, 0, 0); + } + } + } + super.Destroyed(); + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + super.Tick(DeltaSeconds); + // End:0x55 + if(m_bIsInitialized && !m_bIsShutDown) + { + // End:0x4B + if(!CheckProjectileRange()) + { + RangeReached(); + } + CheckShieldPassthrough(); + } + //return; +} + +simulated function CheckShieldPassthrough() +{ + local TgRepInfo_Game GRI; + local int I; + local Vector vShieldHitLocation, vShieldHitNormal, vStartTrace; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x1BB + if(GRI != none) + { + vStartTrace = Location - (Normal(Velocity) * 32.0000000); + // End:0xAC + if(((r_vSpawnLocation - vStartTrace) Dot (r_vSpawnLocation - Location)) <= float(0)) + { + vStartTrace = r_vSpawnLocation; + } + I = 0; + J0xB7: + + // End:0x1BB [Loop If] + if(I < GRI.m_MovableProjBlockers.Length) + { + // End:0x1AD + if(TraceComponent(vShieldHitLocation, vShieldHitNormal, GRI.m_MovableProjBlockers[I].CollisionComponent, Location, Location - (Normal(Velocity) * 32.0000000))) + { + ProcessTouch(GRI.m_MovableProjBlockers[I], vShieldHitLocation, vShieldHitNormal); + } + I++; + // [Loop Continue] + goto J0xB7; + } + } + //return; +} + +simulated function bool CheckProjectileRange(optional Vector vLocOverride) +{ + // End:0x13 + if(m_bShouldQueueServerHits) + { + return true; + } + else + { + // End:0x34 + if(m_bIsInitialized) + { + return super.CheckProjectileRange(vLocOverride); + } + } + return true; + //return ReturnValue; +} + +function bool ApplyHit(Actor Target, Vector HitLocation, Vector HitNormal, optional int HitItem) +{ + local bool bRet; + + bRet = super.ApplyHit(Target, HitLocation, HitNormal, HitItem); + FlashNotifyHit(Target, HitLocation, HitNormal); + // End:0xAE + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + PlayHitTargetFX(Target, HitLocation, HitNormal, false); + } + return bRet; + //return ReturnValue; +} + +simulated event HitWall(Vector HitNormal, Actor Wall, PrimitiveComponent WallComp) +{ + local TgDeployable hitDeployable; + + // End:0x36 + if(m_bIgnoreClientHits) + { + // End:0x34 + if(IsZero(c_vHitWallVelocity)) + { + c_vHitWallVelocity = Velocity; + SetPhysics(0); + } + return; + } + hitDeployable = TgDeployable(Wall); + // End:0xB9 + if(((hitDeployable != none) && int(hitDeployable.m_CollisionSettings.mCollisionMode) != int(0)) && CheckTeamPassThrough(hitDeployable)) + { + return; + } + super.HitWall(HitNormal, Wall, WallComp); + //return; +} + +event ClientTargetUpdate(Actor TargetActor, Vector TargetLocation) +{ + SetTarget(TargetActor, TargetLocation); + //return; +} + +event SetTarget(Actor TargetActor, optional Vector TargetLocation) +{ + super.SetTarget(TargetActor, TargetLocation); + FlashNotifyTarget(TargetActor, TargetLocation); + //return; +} + +simulated event DecalComponent SpawnShadowDecal() +{ + local MaterialInstanceTimeVarying MITV_Decal; + + // End:0x1E2 + if((m_ShadowFX != none) && WorldInfo.MyDecalManager != none) + { + MITV_Decal = new Class'Engine.MaterialInstanceTimeVarying'; + MITV_Decal.SetParent(m_ShadowFX.c_DecalList[0].c_MITV); + m_ShadowDecal = WorldInfo.MyDecalManager.SpawnDecal(true, MITV_Decal, Location, rot(-16384, 0, 0), m_ShadowFX.c_DecalList[0].c_fWidth, m_ShadowFX.c_DecalList[0].c_fHeight, m_fMaxDecalHeight, m_ShadowFX.c_DecalList[0].c_bNoClip, 0.0000000,,,,,,, m_ShadowFX.c_DecalList[0].c_fLifetime); + } + return m_ShadowDecal; + //return ReturnValue; +} + +// Export UTgProj_Simulated::execTickAhead(FFrame&, void* const) +native simulated function TickAhead(float tickAmount); + +defaultproperties +{ + m_nClientFireRequestId=-1 + m_fGravityScale=1.0000000 + m_fMaxDecalHeight=4000.0000000 + m_fDeployableOverlayEnemyViewDist=1600.0000000 + m_fDeployableActiveLifeTime=1.5000000 + m_bCanSpawnOnClientFirst=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProjectile.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProjectile.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + RemoteRole=ENetRole.ROLE_None + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_SmokeScreen.uc b/exported/TgGame/Classes/TgProj_SmokeScreen.uc new file mode 100755 index 00000000..ca751d36 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_SmokeScreen.uc @@ -0,0 +1,27 @@ +class TgProj_SmokeScreen extends TgProj_FreeGrenade + hidecategories(Navigation); + +defaultproperties +{ + m_bExplodeOnGeometry=true + m_bExplodeOnFloor=true + m_bAlwaysDeployUpwards=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_SmokeScreen.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_SmokeScreen.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_SnakeToss.uc b/exported/TgGame/Classes/TgProj_SnakeToss.uc new file mode 100755 index 00000000..820d7b0d --- /dev/null +++ b/exported/TgGame/Classes/TgProj_SnakeToss.uc @@ -0,0 +1,27 @@ +class TgProj_SnakeToss extends TgProj_FreeGrenade + hidecategories(Navigation); + +defaultproperties +{ + m_bExplodeOnGeometry=true + m_nShadowFXID=7299 + m_fMaxDecalHeight=2000.0000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_SnakeToss.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_SnakeToss.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_SoulOrb.uc b/exported/TgGame/Classes/TgProj_SoulOrb.uc new file mode 100755 index 00000000..d253f959 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_SoulOrb.uc @@ -0,0 +1,25 @@ +class TgProj_SoulOrb extends TgProj_Fireball + hidecategories(Navigation); + +defaultproperties +{ + m_bTrackProjectileForTimelapse=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_SoulOrb.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Fireball.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_SoulOrb.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Fireball.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_SpeedOverRange.uc b/exported/TgGame/Classes/TgProj_SpeedOverRange.uc new file mode 100755 index 00000000..4f60cc0a --- /dev/null +++ b/exported/TgGame/Classes/TgProj_SpeedOverRange.uc @@ -0,0 +1,25 @@ +class TgProj_SpeedOverRange extends TgProj_SpeedOverTime + native(Projectiles) + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_SpeedOverRange.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_SpeedOverTime.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_SpeedOverRange.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_SpeedOverTime.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_SpeedOverTime.uc b/exported/TgGame/Classes/TgProj_SpeedOverTime.uc new file mode 100755 index 00000000..325310bb --- /dev/null +++ b/exported/TgGame/Classes/TgProj_SpeedOverTime.uc @@ -0,0 +1,25 @@ +class TgProj_SpeedOverTime extends TgProj_Simulated + native(Projectiles) + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_SpeedOverTime.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_SpeedOverTime.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_Telepunch.uc b/exported/TgGame/Classes/TgProj_Telepunch.uc new file mode 100755 index 00000000..a87905a1 --- /dev/null +++ b/exported/TgGame/Classes/TgProj_Telepunch.uc @@ -0,0 +1,47 @@ +class TgProj_Telepunch extends TgProj_Simulated + native(ChampDemon) + hidecategories(Navigation); + +simulated event ExplodeOnTarget(Actor Target, Vector HitLocation, Vector HitNormal) +{ + local TgDevice_Telepunch telepunchDevice; + + // End:0x84 + if(!m_bHasExploded) + { + // End:0x84 + if((m_OwnerFireMode != none) && m_OwnerFireMode.m_Owner != none) + { + telepunchDevice = TgDevice_Telepunch(m_OwnerFireMode.m_Owner); + // End:0x84 + if(telepunchDevice != none) + { + } + } + } + super.ExplodeOnTarget(Target, HitLocation, HitNormal); + //return; +} + +defaultproperties +{ + m_bTrackProjectileForTimelapse=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Telepunch.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_Telepunch.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_TimeBomb.uc b/exported/TgGame/Classes/TgProj_TimeBomb.uc new file mode 100755 index 00000000..29eb048b --- /dev/null +++ b/exported/TgGame/Classes/TgProj_TimeBomb.uc @@ -0,0 +1,26 @@ +class TgProj_TimeBomb extends TgProj_FreeGrenade + hidecategories(Navigation); + +defaultproperties +{ + m_bExplodeOnFloor=true + m_bDeployOnGround=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_TimeBomb.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_TimeBomb.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_Tracer.uc b/exported/TgGame/Classes/TgProj_Tracer.uc new file mode 100755 index 00000000..940feead --- /dev/null +++ b/exported/TgGame/Classes/TgProj_Tracer.uc @@ -0,0 +1,95 @@ +class TgProj_Tracer extends TgProjectile + hidecategories(Navigation); + +var export editinline TgParticleSystemComponent PSC; + +simulated function InitTracer(TgSpecialFx Fx, bool bIsEnemy, bool bConfused) +{ + PSC = new Class'TgGame.TgParticleSystemComponent'; + PSC.SetTickGroup(5); + PSC.bAutoActivate = false; + PSC.SetTemplate(Fx.c_PSCList[0].c_PSCTemplate); + PSC.m_ParticleChannels.Friendly = !bIsEnemy && !bConfused; + PSC.m_ParticleChannels.Enemy = bIsEnemy || bConfused; + AttachComponent(PSC); + PSC.ActivateSystem(); + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + super.Tick(DeltaSeconds); + // End:0x3C + if(!m_bIsShutDown) + { + // End:0x3C + if(!CheckProjectileRange()) + { + RangeReached(); + } + } + //return; +} + +simulated function bool CheckProjectileRange(optional Vector vLocOverride) +{ + local Vector vLoc; + + // End:0x2A + if(VSizeSq(vLocOverride) > float(0)) + { + vLoc = vLocOverride; + } + else + { + vLoc = Location; + } + // End:0x50 + if(r_fRange == float(0)) + { + return true; + } + // End:0x76 + if(VSize(vLoc - r_vSpawnLocation) > r_fRange) + { + return false; + } + return true; + //return ReturnValue; +} + +simulated function ShutDown() +{ + // End:0x2E + if(PSC != none) + { + PSC.DeactivateSystem(); + } + super.ShutDown(); + //return; +} + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Tracer.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProjectile.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + Speed=6750.0000000 + MaxSpeed=30000.0000000 + // Reference: CylinderComponent'TgGame.Default__TgProj_Tracer.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProjectile.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + CollideActors=true + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_VenomousGourd.uc b/exported/TgGame/Classes/TgProj_VenomousGourd.uc new file mode 100755 index 00000000..dc051fcb --- /dev/null +++ b/exported/TgGame/Classes/TgProj_VenomousGourd.uc @@ -0,0 +1,31 @@ +class TgProj_VenomousGourd extends TgProj_FreeGrenade + hidecategories(Navigation); + +defaultproperties +{ + m_bExplodeOnFloor=true + m_fBounceDamping=0.5000000 + m_fSpeedToActivateBounceFX=80.0000000 + m_nShadowFXID=7298 + m_fMaxDecalHeight=2000.0000000 + m_bExplodeAtMaxRange=true + m_bDeployOnGround=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_VenomousGourd.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_FreeGrenade.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: CylinderComponent'TgGame.Default__TgProj_VenomousGourd.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_FreeGrenade.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProj_Vine.uc b/exported/TgGame/Classes/TgProj_Vine.uc new file mode 100755 index 00000000..ba30313a --- /dev/null +++ b/exported/TgGame/Classes/TgProj_Vine.uc @@ -0,0 +1,136 @@ +class TgProj_Vine extends TgProj_Simulated + hidecategories(Navigation); + +var TgDeviceForm_Vine m_VineForm; + +simulated event SpawnFlightEffects() +{ + local TgPawn TgP; + local int I; + + super(TgProjectile).SpawnFlightEffects(); + TgP = TgPawn(Instigator); + // End:0xE0 + if(TgP != none) + { + I = 0; + J0x40: + + // End:0xE0 [Loop If] + if(I < 33) + { + m_VineForm = TgDeviceForm_Vine(TgP.c_EquipForm[I]); + // End:0xD2 + if(m_VineForm != none) + { + m_VineForm.ConnectBeamToTarget(self, self.Location); + return; + } + I++; + // [Loop Continue] + goto J0x40; + } + } + //return; +} + +simulated event ExplodeOnTarget(Actor Target, Vector HitLocation, Vector HitNormal) +{ + // End:0x2B + if(!m_bHasExploded) + { + StartPull(Target, HitLocation); + } + super.ExplodeOnTarget(Target, HitLocation, HitNormal); + //return; +} + +simulated event Fizzle() +{ + // End:0x23 + if(!m_bHasExploded) + { + StartPull(none, Location); + } + super.Fizzle(); + //return; +} + +simulated function StartPull(Actor Target, Vector HitLocation) +{ + local TgPawn TgP; + local TgDevice_Vine vineDev; + local int I; + + TgP = TgPawn(Instigator); + // End:0x14B + if(TgP != none) + { + // End:0x14B + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + I = 0; + J0x5F: + + // End:0x14B [Loop If] + if(I < 33) + { + vineDev = TgDevice_Vine(TgP.m_EquippedDevices[I]); + // End:0x13D + if(vineDev != none) + { + // End:0x11E + if((Target != none) || (ImpactedActor != none) && ImpactedActor != self) + { + vineDev.PullToTarget(Target, HitLocation); + } + else + { + vineDev.MissPull(); + } + } + I++; + // [Loop Continue] + goto J0x5F; + } + } + } + // End:0x1DE + if(m_VineForm != none) + { + // End:0x1BF + if((Target != none) || (ImpactedActor != none) && ImpactedActor != self) + { + m_VineForm.ConnectBeamToTarget(Target, HitLocation); + } + else + { + m_VineForm.DisconnectBeam(); + } + } + //return; +} + +defaultproperties +{ + m_bCanSpawnOnClientFirst=false + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Vine.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgProj_Simulated.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + m_CollisionSettings=(bPassThroughFriends=false,bPassThroughEnemies=true) + // Reference: CylinderComponent'TgGame.Default__TgProj_Vine.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgProj_Simulated.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProjectile.uc b/exported/TgGame/Classes/TgProjectile.uc new file mode 100755 index 00000000..f0b3cd17 --- /dev/null +++ b/exported/TgGame/Classes/TgProjectile.uc @@ -0,0 +1,1906 @@ +class TgProjectile extends Projectile + native(Projectiles) + nativereplication + hidecategories(Navigation) + implements(TgSkinnableInterface,TgObserver_ViewTargetChanged); + +const PROJECTILE_LINE_TRACE_DISTANCE = 32; + +enum SpawnDeployableOrientation +{ + SDO_AlignUpToNormal, // 0 + SDO_FaceRotation, // 1 + SDO_MAX // 2 +}; + +struct native CollisionSettingsProjectile +{ + var bool bPassThroughFriends; + var bool bPassThroughEnemies; + var bool bPassThroughShields; + var bool bPassThroughBlocker; + var bool bExplodeOnShields; + var bool bExplodeOnBlockers; + var bool bHitAndPassThrough; + var bool bHitOnTick; + var bool bOnlyHitOnceOnPassThrough; + + structdefaultproperties + { + bPassThroughFriends=false + bPassThroughEnemies=false + bPassThroughShields=false + bPassThroughBlocker=false + bExplodeOnShields=false + bExplodeOnBlockers=false + bHitAndPassThrough=false + bHitOnTick=false + bOnlyHitOnceOnPassThrough=false + } +}; + +struct native TrackingSettings +{ + var const bool bUsesTracking; + var Actor mTarget; + var float fTurnStrength; + var float fVertTurnStrength; + var bool bIgnoreNonTargets; + var bool bIgnoreWorldIfSeeking; + var bool bIgnoreWorldIfNotSeeking; + + structdefaultproperties + { + bUsesTracking=false + mTarget=none + fTurnStrength=0.0000000 + fVertTurnStrength=0.0000000 + bIgnoreNonTargets=false + bIgnoreWorldIfSeeking=false + bIgnoreWorldIfNotSeeking=false + } +}; + +var private native const noexport Pointer VfTable_ITgSkinnableInterface; +var private native const noexport Pointer VfTable_ITgObserver_ViewTargetChanged; +var TgDeviceFire s_LastDefaultMode; +var repnotify int r_nProjectileId; +var repnotify float r_fDuration; +var float m_fPostLandDuration; +var float m_fLandZThreshold; +var float m_fPersistTime; +var float m_fPersistHitPulse; +var int m_nTargetPhysicalType; +var export editinline MeshComponent c_Mesh; +var TgSpecialFx c_ExplosionFx; +var TgImpactFx c_ImpactFx; +var bool c_bRotationFollowsVelocity; +var bool m_bExplodeAtMaxRange; +var bool m_bDeployOnCharacter; +var bool m_bDeployOnTarget; +var bool m_bDeployOnGround; +var bool m_bAlwaysDeployUpwards; +var bool m_bStickToWalls; +var bool c_bIsAOE; +var bool m_bCountDirectHitForAOE; +var bool m_bUseAOEDirectHit; +var bool m_bHasExploded; +var bool m_bHitValidTarget; +var bool m_bIngoreBehindProjCollisions; +var bool m_bIsInitialized; +var bool m_bIsShutDown; +var bool m_bPIEInitialized; +var bool m_bHasPlayedFizzleFX; +var bool m_bHasPlayedHitWallFX; +var bool m_bHasPlayedHitTargetFX; +var bool m_bSuppressDeployableSpawn; +var bool m_bAltFireHit; +var bool m_bInvertTeam; +var bool m_bFirstShotAfterMovementAbility; +var bool m_bCanSpawnOnClientFirst; +var bool m_bTrackToWorldLocation; +var float r_fAccelRate; +var float m_fTossZ; +var float m_fFireAngle; +var Actor r_Owner; +var repnotify int r_nOwnerFireModeId; +var TgDeviceFire m_OwnerFireMode; +var array m_ExtraFireModes; +var float r_fRange; +var float m_fProximityDistance; +var TgCollisionProxy m_CollisionProxy; +var int s_nSpawnBotId; +var int s_nSpawnDeployableId; +var TgProjectile.SpawnDeployableOrientation m_DeployableSpawnOrientation; +var TgObject.TG_EQUIP_POINT r_eEquippedAt; +var float m_fDamageRadius; +var Vector r_vSpawnLocation; +var Vector m_vSpawnRotation; +var Vector m_vLocationLastTick; +var float m_fMinTravelRange; +var float s_fSpawnTime; +var int m_nPostRenderIcon; +var int m_nUniqueId; +var float m_fBaseDamageMultiplier; +var Vector c_vHitWallVelocity; +var() const editconst export editinline DynamicLightEnvironmentComponent LightEnvironment; +var Vector m_vSpawnPosition; +var export editinline ParticleSystemComponent m_DebugProximityDistancePSC; +var float m_fStandingStillPercent; +var int m_nTargetsHitCount; +var CollisionSettingsProjectile m_CollisionSettings; +var array m_PassThroughTargets; +var TrackingSettings m_TrackingSettings; +var float m_fDelayTrackSeconds; +var float m_fExplosionOffsetDistance; +var float s_fAoeRewindTime; +var TgAkActorUnoccluded m_AkActorUnoccluded; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetInitial) + r_Owner, r_eEquippedAt, + r_fAccelRate, r_fDuration, + r_fRange, r_nOwnerFireModeId, + r_nProjectileId, r_vSpawnLocation; +} + +// Export UTgProjectile::execGetBuffedRange(FFrame&, void* const) +native function float GetBuffedRange(); + +// Export UTgProjectile::execCheckPhysicality(FFrame&, void* const) +native function bool CheckPhysicality(int nPawnType); + +// Export UTgProjectile::execCompleteInitialization(FFrame&, void* const) +native function CompleteInitialization(); + +// Export UTgProjectile::execNativePostRenderFor(FFrame&, void* const) +native simulated function NativePostRenderFor(PlayerController PC, Canvas Canvas, Vector CameraPosition, Vector CameraDir); + +// Export UTgProjectile::execSpawnBot(FFrame&, void* const) +native function TgPawn SpawnBot(Vector vLocation, bool bPet); + +// Export UTgProjectile::execGetBotSpawnLocationAndRotation(FFrame&, void* const) +native function bool GetBotSpawnLocationAndRotation(out Vector OutLocation, out Rotator OutRotation, Vector vLocation, Pointer botSetup); + +// Export UTgProjectile::execSpawnDeployable(FFrame&, void* const) +native function TgDeployable SpawnDeployable(Vector vLocation, optional Actor TargetActor, optional Vector vNormal); + +// Export UTgProjectile::execGetDeployLocationAndRotation(FFrame&, void* const) +native function bool GetDeployLocationAndRotation(out Vector OutLocation, out Rotator OutRotation, Vector vLocation, optional Actor TargetActor, optional Vector vNormal); + +// Export UTgProjectile::execOnViewTargetChanged(FFrame&, void* const) +native function OnViewTargetChanged(optional Actor aNewViewTarget); + +// Export UTgProjectile::execPostAkEvent(FFrame&, void* const) +native function PostAkEvent(AkEvent InAkEvent); + +// Export UTgProjectile::execGetTerminalVelocity(FFrame&, void* const) +native function float GetTerminalVelocity(); + +event bool UseAOE() +{ + return (m_OwnerFireMode != none) && m_OwnerFireMode.m_bIsAOE; + //return ReturnValue; +} + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x50 + if(GetALocalPlayerController() != none) + { + GetALocalPlayerController().myHUD.AddPostRenderedActor(self); + } + m_vSpawnPosition = Location; + // End:0x83 + if(int(Role) < int(ROLE_Authority)) + { + m_bIsInitialized = true; + } + //return; +} + +event PostProjectileInitialize() +{ + // End:0x66 + if(int(Role) == int(ROLE_Authority)) + { + s_fSpawnTime = WorldInfo.TimeSeconds; + // End:0x66 + if(r_fDuration > 0.0000000) + { + SetTimer(r_fDuration, false, 'TimerExplode'); + } + } + //return; +} + +simulated function StartPulse() +{ + // End:0x15 + if(m_fPersistHitPulse == 0.0000000) + { + return; + } + TimerPulse(); + SetTimer(m_fPersistHitPulse, true, 'TimerPulse'); + SetPhysics(0); + HideProjectile(); + SetCollision(false, false); + Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + SetTimer(m_fPersistTime, false, 'ShutDown'); + //return; +} + +simulated event ClientSetExplode() +{ + // End:0x2A + if(r_fDuration > 0.0000000) + { + SetTimer(r_fDuration, false, 'TimerExplode'); + } + //return; +} + +simulated function TimerPulse() +{ + ApplyHit(none, Location, vect(0.0000000, 0.0000000, 0.0000000)); + //return; +} + +simulated function TimerExplode() +{ + local Vector HitNormal; + + ImpactedActor = self; + Explode(Location, HitNormal); + //return; +} + +simulated event Landed(Vector HitNormal, Actor FloorActor) +{ + super(Actor).Landed(HitNormal, FloorActor); + Explode(Location, HitNormal); + //return; +} + +event Init(Vector Direction) +{ + local TgPawn TgP; + local bool bPlayerControlled; + + SetRotation(Rotator(Direction)); + TgP = TgPawn(r_Owner); + // End:0xA3 + if(TgP != none) + { + // End:0xA3 + if((TgP.Controller != none) && TgP.Controller.IsA('PlayerController')) + { + bPlayerControlled = true; + } + } + Velocity = CalculateInitialVelocity(Direction, bPlayerControlled); + SetAcceleration(); + //return; +} + +// Export UTgProjectile::execCalculateInitialVelocity(FFrame&, void* const) +native function Vector CalculateInitialVelocity(Vector vAimDirection, bool bPlayerControlled); + +simulated function bool CheckProjectileRange(optional Vector vLocOverride) +{ + local Vector vActualLocation; + + // End:0x4A + if(m_TrackingSettings.bUsesTracking && m_TrackingSettings.mTarget != none) + { + return true; + } + else + { + // End:0x5D + if(r_fRange == float(0)) + { + return true; + } + } + vActualLocation = ((VSizeSq(vLocOverride) > float(0)) ? vLocOverride : Location); + // End:0xB4 + if(VSize(vActualLocation - r_vSpawnLocation) > r_fRange) + { + return false; + } + return true; + //return ReturnValue; +} + +function RangeReached() +{ + // End:0x1A + if(m_bExplodeAtMaxRange) + { + ServerDetonate(); + } + else + { + ServerFizzle(); + } + //return; +} + +simulated function UpdateSeekingDirection(float fDeltaTime) +{ + local Vector moveVector, TargetLocation; + local float fDist, vertTurnStrength, turnStrength, Pitch; + local Rotator Rot, targetRot; + + Rot = Rotation; + Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + // End:0x2C4 + if(m_TrackingSettings.mTarget != none) + { + TargetLocation = GetSeekLocation(); + moveVector = TargetLocation - Location; + fDist = VSize(moveVector); + // End:0x12C + if(fDist < float(32)) + { + Move(moveVector); + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + ExplodeOnTarget(m_TrackingSettings.mTarget, m_TrackingSettings.mTarget.Location, Normal(moveVector)); + return; + } + targetRot = Rotator(Normal(TargetLocation - Location)); + turnStrength = m_TrackingSettings.fTurnStrength; + vertTurnStrength = m_TrackingSettings.fVertTurnStrength; + // End:0x1D5 + if((fDist > float(1)) && fDist < float(100)) + { + Rot = targetRot; + } + else + { + Pitch = FInterpTo(float(Rot.Pitch), float(targetRot.Pitch), fDeltaTime, vertTurnStrength); + Rot = RInterpTo(Rot, targetRot, fDeltaTime, turnStrength); + Rot.Pitch = int(Pitch); + } + SetRotation(Rot); + Velocity = Vector(Rot) * Speed; + } + //return; +} + +simulated event Vector GetSeekLocation() +{ + local float fDist, fSpeed; + local Vector TargetLocation; + + // End:0x39 + if(m_TrackingSettings.mTarget == none) + { + return Location + Vector(Rotation); + } + TargetLocation = m_TrackingSettings.mTarget.Location; + // End:0x10E + if(m_TrackingSettings.mTarget.CollisionComponent != none) + { + TargetLocation = m_TrackingSettings.mTarget.CollisionComponent.Bounds.Origin; + } + fDist = VSize(TargetLocation - Location); + fSpeed = VSize(Velocity); + // End:0x1E3 + if((fSpeed > float(0)) && VSizeSq(m_TrackingSettings.mTarget.Velocity) > float(0)) + { + TargetLocation += (m_TrackingSettings.mTarget.Velocity * (fDist / fSpeed)); + } + return TargetLocation; + //return ReturnValue; +} + +event SetTarget(Actor TargetActor, optional Vector TargetLocation) +{ + // End:0xAD + if(m_TrackingSettings.bUsesTracking) + { + m_TrackingSettings.mTarget = TargetActor; + // End:0x83 + if(TargetActor != none) + { + bCollideWorld = !m_TrackingSettings.bIgnoreWorldIfSeeking; + } + else + { + bCollideWorld = !m_TrackingSettings.bIgnoreWorldIfNotSeeking; + } + } + //return; +} + +simulated function bool IsValidTarget(Actor A) +{ + local bool bValidTarget; + local TgPawn PawnTarget; + local TgDeployable deployTarget; + local TgDestructible destTarget; + local int nPhysicality; + + bValidTarget = false; + // End:0x5D + if(m_OwnerFireMode != none) + { + bValidTarget = m_OwnerFireMode.IsValidTarget(A,,, m_bInvertTeam); + } + else + { + PawnTarget = TgPawn(A); + deployTarget = TgDeployable(A); + destTarget = TgDestructible(A); + // End:0x303 + if(((PawnTarget != none) || deployTarget != none) || destTarget != none) + { + nPhysicality = 0; + // End:0x187 + if(PawnTarget != none) + { + nPhysicality = PawnTarget.r_nPhysicalType; + // End:0x184 + if((!PawnTarget.IsNonCombat() && IsEnemy(A)) && CheckPhysicality(nPhysicality)) + { + bValidTarget = true; + } + } + else + { + // End:0x248 + if((deployTarget != none) && deployTarget.bProjTarget) + { + nPhysicality = deployTarget.r_nPhysicalType; + // End:0x245 + if((IsEnemy(A) && CheckPhysicality(nPhysicality)) && deployTarget.GetMaxHealth() > float(0)) + { + bValidTarget = true; + } + } + else + { + // End:0x303 + if((destTarget != none) && destTarget.bProjTarget) + { + nPhysicality = destTarget.m_nPhysicalType; + // End:0x303 + if((IsEnemy(A) && CheckPhysicality(nPhysicality)) && destTarget.r_nMaxHealth > 0) + { + bValidTarget = true; + } + } + } + } + } + } + return bValidTarget; + //return ReturnValue; +} + +simulated function GetHitLocationForProximityTouch(Actor Target, out Vector HitLocation, out Vector HitNormal) +{ + local Vector accHitLocation, accHitNormal, StartTrace, EndTrace; + + StartTrace = HitLocation - (Normal(Velocity) * 100.0000000); + EndTrace = HitLocation + (Normal(Velocity) * 100.0000000); + // End:0x106 + if(TraceComponent(accHitLocation, accHitNormal, Target.CollisionComponent, EndTrace, StartTrace, vect(0.0000000, 0.0000000, 0.0000000),, Target.bCollideComplex)) + { + HitLocation = accHitLocation - (Normal(Velocity) * 2.0000000); + HitNormal = accHitNormal; + return; + } + // End:0x257 + if(CylinderComponent(Target.CollisionComponent) != none) + { + StartTrace = HitLocation; + EndTrace = Target.CollisionComponent.Bounds.Origin; + // End:0x257 + if(TraceComponent(accHitLocation, accHitNormal, Target.CollisionComponent, EndTrace, StartTrace, vect(0.0000000, 0.0000000, 0.0000000),, Target.bCollideComplex)) + { + HitLocation = accHitLocation - (Normal(EndTrace - StartTrace) * 2.0000000); + HitNormal = accHitNormal; + } + } + //return; +} + +simulated function bool ProximityReached(Actor A, Vector HitLocation, Vector HitNormal) +{ + local bool bValidTarget; + local Vector ReferencePoint, AccurateHitLocation, MovementDirection; + local TgDeployable deployTarget; + + bValidTarget = (IsValidTarget(A)) && !CheckTeamPassThrough(A); + // End:0x4B + if(m_fProximityDistance <= float(0)) + { + return false; + } + deployTarget = TgDeployable(A); + // End:0x123 + if(((deployTarget != none) && (int(deployTarget.m_CollisionSettings.mCollisionMode) == int(2)) || int(deployTarget.m_CollisionSettings.mCollisionMode) == int(1)) || A.IsA('TgDestructible')) + { + bValidTarget = false; + } + MovementDirection = Normal(Velocity); + // End:0x2C7 + if(bValidTarget) + { + ReferencePoint = m_vLocationLastTick; + // End:0x17A + if(IsZero(ReferencePoint)) + { + ReferencePoint = r_vSpawnLocation; + } + AccurateHitLocation = HitLocation; + GetHitLocationForProximityTouch(A, AccurateHitLocation, HitNormal); + // End:0x203 + if((VSizeSq(r_vSpawnLocation) > 0.0000000) && m_bIngoreBehindProjCollisions) + { + // End:0x203 + if((Normal(AccurateHitLocation - ReferencePoint) Dot MovementDirection) < -0.2000000) + { + return false; + } + } + // End:0x257 + if((m_OwnerFireMode != none) && m_OwnerFireMode.IsBlockedByBlocker(self, A, ReferencePoint, AccurateHitLocation) != none) + { + return false; + } + // End:0x2A0 + if(Abs(1.0000000 - Abs(Normal(AccurateHitLocation - Location) Dot MovementDirection)) > 0.0010000) + { + AccurateHitLocation = Location; + } + ProcessTouch(A, AccurateHitLocation, HitNormal); + return true; + } + return false; + //return ReturnValue; +} + +simulated function SetAcceleration() +{ + Acceleration = Normal(Velocity) * r_fAccelRate; + //return; +} + +simulated function bool IsOutsideMinRange(Vector HitLocation) +{ + local float fDistanceTraveled; + + // End:0x22 + if(m_TrackingSettings.bUsesTracking) + { + return true; + } + fDistanceTraveled = VSize2D(r_vSpawnLocation - HitLocation); + return fDistanceTraveled >= m_fMinTravelRange; + //return ReturnValue; +} + +simulated event HitWall(Vector HitNormal, Actor Wall, PrimitiveComponent WallComp) +{ + local KActorFromStatic NewKActor; + local editinline StaticMeshComponent HitStaticMesh; + local TgDeployable hitDeployable; + + // End:0x30 + if(!IsOutsideMinRange(Location)) + { + bHurtEntry = true; + ShutDown(); + return; + } + hitDeployable = TgDeployable(Wall); + // End:0xB3 + if(((hitDeployable != none) && int(hitDeployable.m_CollisionSettings.mCollisionMode) != int(0)) && CheckTeamPassThrough(hitDeployable)) + { + return; + } + // End:0x108 + if(Wall.IsA('TgFracturedStaticMeshActor')) + { + // End:0x108 + if(m_bIsInitialized) + { + ExplodeOnTarget(Wall, Location, HitNormal); + } + } + TriggerEventClass(Class'Engine.SeqEvent_HitWall', Wall); + // End:0x1EC + if(Wall.bWorldGeometry) + { + HitStaticMesh = StaticMeshComponent(WallComp); + // End:0x1EC + if((HitStaticMesh != none) && HitStaticMesh.CanBecomeDynamic()) + { + NewKActor = Class'Engine.KActorFromStatic'.static.MakeDynamic(HitStaticMesh); + // End:0x1EC + if(NewKActor != none) + { + Wall = NewKActor; + } + } + } + ImpactedActor = Wall; + PlayHitWallExplosionFX(HitNormal, Location); + ExplodeOnTarget(((Wall.bStatic) ? none : Wall), Location, HitNormal); + ImpactedActor = none; + //return; +} + +simulated event FellOutOfWorld(Class dmgType) +{ + Explode(Location, vect(0.0000000, 0.0000000, 1.0000000)); + //return; +} + +simulated event ProcessTouchAsEvent(Actor Other, Vector HitLocation, Vector HitNormal) +{ + ProcessTouch(Other, HitLocation, HitNormal); + //return; +} + +function ShutdownAndNotifyClient() +{ + bHurtEntry = true; + ShutDown(); + //return; +} + +simulated function bool HandleOnProjectileHitTarget(Actor Other, Vector HitLocation, Vector HitNormal) +{ + local TgPawn HitPawn; + local byte bDestroyProjectile; + + HitPawn = TgPawn(Other); + // End:0x9C + if(HitPawn != none) + { + bDestroyProjectile = 0; + HitPawn.OnProjectileHitTarget(self, HitLocation, HitNormal, bDestroyProjectile); + // End:0x9C + if(int(bDestroyProjectile) != int(0)) + { + Fizzle(); + ShutdownAndNotifyClient(); + return true; + } + } + return false; + //return ReturnValue; +} + +simulated function ProcessTouch(Actor Other, Vector HitLocation, Vector HitNormal) +{ + // End:0x217 + if(m_bIsInitialized) + { + // End:0x37 + if((Instigator == none) || Other == Instigator) + { + return; + } + // End:0x4F + if(CheckTeamPassThrough(Other)) + { + return; + } + // End:0x7F + if(!IsOutsideMinRange(HitLocation)) + { + bHurtEntry = true; + ShutDown(); + return; + } + // End:0x99 + if(!CheckProjectileRange(HitLocation)) + { + return; + } + // End:0xB1 + if(ForcefieldExclusionCheck(Other)) + { + return; + } + // End:0xDB + if(HandleOnProjectileHitTarget(Other, HitLocation, HitNormal)) + { + return; + } + // End:0x118 + if(ShouldExplodeOnTouching(Other)) + { + ExplodeOnTarget(Other, HitLocation, HitNormal); + return; + } + // End:0x1AF + if(IsValidTarget(Other)) + { + // End:0x187 + if(!bHurtEntry && m_CollisionSettings.bHitAndPassThrough) + { + HitPassThroughTarget(Other, HitLocation, HitNormal); + } + else + { + ExplodeOnTarget(Other, HitLocation, HitNormal); + } + } + else + { + // End:0x1EE + if((m_OwnerFireMode != none) && !m_bHitValidTarget) + { + m_OwnerFireMode.HandleMiss(); + } + ExplodeOnTarget(Other, HitLocation, -Normal(Velocity)); + } + } + //return; +} + +simulated function bool ForcefieldExclusionCheck(Actor Other) +{ + local TgDeployable deployable; + + deployable = TgDeployable(Other); + // End:0x13A + if(((deployable != none) && int(deployable.m_CollisionSettings.mCollisionMode) != int(0)) && deployable.m_CollisionSettings.fProjectileAllowanceRadius > float(0)) + { + // End:0x13A + if(VSizeSq(deployable.Location - m_vSpawnPosition) <= (deployable.m_CollisionSettings.fProjectileAllowanceRadius * deployable.m_CollisionSettings.fProjectileAllowanceRadius)) + { + return true; + } + } + return false; + //return ReturnValue; +} + +simulated function bool ShouldExplodeOnTouching(Actor Other) +{ + local TgDeployable deployable; + + // End:0x11 + if(Other == none) + { + return false; + } + deployable = TgDeployable(Other); + // End:0x9E + if(((deployable != none) && m_CollisionSettings.bExplodeOnShields) && int(deployable.m_CollisionSettings.mCollisionMode) == int(1)) + { + return true; + } + // End:0x10F + if(((deployable != none) && m_CollisionSettings.bExplodeOnBlockers) && int(deployable.m_CollisionSettings.mCollisionMode) == int(2)) + { + return true; + } + return false; + //return ReturnValue; +} + +simulated function HitPassThroughTarget(Actor Target, Vector HitLocation, Vector HitNormal) +{ + // End:0x24 + if(!m_CollisionSettings.bHitAndPassThrough) + { + return; + } + // End:0x69 + if(m_PassThroughTargets.Find(Target) == -1) + { + m_bHitValidTarget = true; + m_PassThroughTargets.AddItem(Target); + } + else + { + // End:0x8B + if(m_CollisionSettings.bOnlyHitOnceOnPassThrough) + { + return; + } + } + // End:0xF5 + if(!m_CollisionSettings.bHitOnTick && m_PassThroughTargets.Find(Target) != -1) + { + ApplyHit(Target, HitLocation, HitNormal); + } + //return; +} + +simulated event ProxyTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + // End:0x4C + if(Other.bProjTarget) + { + // End:0x4C + if(ProximityReached(Other, HitLocation, HitNormal)) + { + return; + } + } + // End:0x105 + if(m_CollisionSettings.bHitAndPassThrough && m_CollisionSettings.bHitOnTick) + { + // End:0x105 + if(((m_PassThroughTargets.Find(Other) == -1) && m_OwnerFireMode != none) && m_OwnerFireMode.IsValidTarget(Other)) + { + m_PassThroughTargets.AddItem(Other); + } + } + //return; +} + +simulated event ProxyUnTouch(Actor Other) +{ + // End:0x78 + if(m_CollisionSettings.bHitAndPassThrough && m_CollisionSettings.bHitOnTick) + { + // End:0x78 + if(m_PassThroughTargets.Find(Other) != -1) + { + m_PassThroughTargets.RemoveItem(Other); + } + } + //return; +} + +simulated function Tick(float DeltaSeconds) +{ + // End:0x141 + if(m_TrackingSettings.bUsesTracking && m_TrackingSettings.mTarget != none) + { + // End:0xB6 + if((TgPawn(m_TrackingSettings.mTarget) != none) && m_TrackingSettings.mTarget.IsInState('Dying')) + { + ShutDown(); + } + else + { + // End:0x12E + if((TgDeployable(m_TrackingSettings.mTarget) != none) && TgDeployable(m_TrackingSettings.mTarget).m_bInDestroyedState) + { + ShutDown(); + } + else + { + UpdateSeekingDirection(DeltaSeconds); + } + } + } + //return; +} + +simulated event bool CheckTeamPassThrough(Actor Other) +{ + local TgTeamBlocker blocker; + local TgKAsset_ClientSideSim ClientSideKAsset; + local TraceHitInfo HitInfo; + local Vector HitLocation, HitNormal; + local TgPawn TargetPawn; + local TgDeployable TargetDeployable; + local TgPawn OwningPawn; + local TgDeploy_BombKingStickyBomb BKStickyBomb; + + // End:0x11 + if(Other == none) + { + return true; + } + // End:0xBF + if(m_TrackingSettings.bUsesTracking) + { + // End:0xBF + if(m_TrackingSettings.bIgnoreNonTargets && m_TrackingSettings.mTarget != none) + { + // End:0xBD + if(Other != m_TrackingSettings.mTarget) + { + return m_TrackingSettings.bIgnoreNonTargets; + } + return false; + } + } + ClientSideKAsset = TgKAsset_ClientSideSim(Other); + // End:0x182 + if(ClientSideKAsset != none) + { + Trace(HitLocation, HitNormal, Location, Location + (Normal(Velocity) * float(32)), true, vect(0.0000000, 0.0000000, 0.0000000), HitInfo, 1); + ClientSideKAsset.OnHit(Location, Normal(Velocity) * -1.0000000, self, HitInfo); + return true; + } + BKStickyBomb = TgDeploy_BombKingStickyBomb(Other); + // End:0x1DB + if(BKStickyBomb != none) + { + // End:0x1DB + if(BKStickyBomb.r_StuckPlayer == Instigator) + { + return true; + } + } + // End:0x221 + if(m_CollisionSettings.bPassThroughBlocker && Other.bWorldGeometry) + { + return true; + } + blocker = TgTeamBlocker(Other); + // End:0x288 + if(blocker != none) + { + return !blocker.m_bBlockFriendlyFire && !IsEnemy(blocker); + } + OwningPawn = TgPawn(Instigator); + TargetPawn = TgPawn(Other); + TargetDeployable = TgDeployable(Other); + // End:0x42B + if(TargetPawn != none) + { + // End:0x32C + if(TargetPawn.IsA('TgPawn_SiegeWall')) + { + return m_CollisionSettings.bPassThroughBlocker; + } + // End:0x359 + if(TargetPawn.GetPropCurrentValue(132) > 0.0000000) + { + return true; + } + switch(TargetPawn.r_nPhysicalType) + { + // End:0x389 + case 10035: + // End:0x3D2 + case 15046: + // End:0x3CF + if((OwningPawn != none) && OwningPawn.IsMyPet(Other)) + { + return false; + } + // End:0x3D5 + break; + // End:0xFFFF + default: + break; + } + return ((IsEnemy(Other)) ? m_CollisionSettings.bPassThroughEnemies : m_CollisionSettings.bPassThroughFriends); + } + else + { + // End:0x6FC + if(TargetDeployable != none) + { + // End:0x476 + if(TargetDeployable.IsA('TgDeploy_Transporter')) + { + return !IsEnemy(Other); + } + else + { + // End:0x62D + if(int(TargetDeployable.m_CollisionSettings.mCollisionMode) != int(0)) + { + return (((m_CollisionSettings.bPassThroughShields && int(TargetDeployable.m_CollisionSettings.mCollisionMode) == int(1)) || m_CollisionSettings.bPassThroughBlocker && int(TargetDeployable.m_CollisionSettings.mCollisionMode) == int(2)) || !TargetDeployable.m_CollisionSettings.bBlockFriendlyFire && !IsEnemy(TargetDeployable)) || TargetDeployable.m_CollisionSettings.bOnlyBlockShotsFromFront && (Vector(TargetDeployable.Rotation) Dot Velocity) > float(0); + } + } + switch(TargetDeployable.r_nPhysicalType) + { + // End:0x65D + case 10035: + // End:0x6A6 + case 15046: + // End:0x6A3 + if((OwningPawn != none) && OwningPawn.IsMyPet(Other)) + { + return false; + } + // End:0x6A9 + break; + // End:0xFFFF + default: + break; + } + return ((IsEnemy(Other)) ? m_CollisionSettings.bPassThroughEnemies : m_CollisionSettings.bPassThroughFriends); + } + } + return false; + //return ReturnValue; +} + +function bool ApplyTheHit(TgDeviceFire FireMode, ImpactInfo Impact, Actor DamageInstigator) +{ + return FireMode.ApplyHit(Impact, DamageInstigator); + //return ReturnValue; +} + +function bool ApplyHit(Actor Target, Vector HitLocation, Vector HitNormal, optional int HitItem) +{ + local TgDevice DeviceOwner; + local ImpactInfo DirectImpact; + local TraceHitInfo HitInfo; + local array ImpactInfoList; + local int I, J; + local AimData Aim; + local bool bRet; + + // End:0x2C + if(int(WorldInfo.NetMode) == int(NM_Client)) + { + return false; + } + // End:0x3D + if(m_OwnerFireMode == none) + { + return false; + } + // End:0x215 + if((Target != none) && m_OwnerFireMode.IsValidTarget(Target,,, m_bInvertTeam)) + { + DirectImpact.StartTrace = r_vSpawnLocation; + DirectImpact.HitActor = Target; + DirectImpact.HitLocation = HitLocation; + DirectImpact.HitNormal = Normal(-Velocity); + DirectImpact.RayDir = float(-1) * HitNormal; + DirectImpact.HitInfo = HitInfo; + DirectImpact.HitInfo.Item = HitItem; + DirectImpact.bDirectHit = (!UseAOE() || m_bUseAOEDirectHit) || m_bCountDirectHitForAOE; + DirectImpact.Projectile = self; + } + // End:0x3D5 + if(!UseAOE() || m_bUseAOEDirectHit) + { + // End:0x3D5 + if(DirectImpact.HitActor != none) + { + m_OwnerFireMode.AddEffectiveRangeReduction(DirectImpact, self, r_vSpawnLocation); + // End:0x2C8 + if(m_bAltFireHit) + { + m_OwnerFireMode.ApplyHitSpecial(Target, DirectImpact); + } + bRet = ApplyTheHit(m_OwnerFireMode, DirectImpact, self); + I = 0; + J0x2FB: + + // End:0x3CA [Loop If] + if(I < m_ExtraFireModes.Length) + { + // End:0x3BC + if(m_ExtraFireModes[I].IsValidTarget(Target)) + { + ApplyTheHit(m_ExtraFireModes[I], DirectImpact, self); + // End:0x3BC + if(m_bAltFireHit) + { + m_ExtraFireModes[I].ApplyHitSpecial(Target, DirectImpact); + } + } + I++; + // [Loop Continue] + goto J0x2FB; + } + return bRet; + } + } + // End:0x9DA + if(UseAOE()) + { + SetLocation(HitLocation); + Aim.StartTrace = HitLocation; + Aim.EndTrace = HitLocation; + Aim.AimVector = Vector(Rotation); + m_OwnerFireMode.CalcWeaponModeFire(self, Aim, ImpactInfoList, false, false, s_fAoeRewindTime); + // End:0x555 + if((Target != none) && m_bCountDirectHitForAOE) + { + I = 0; + J0x4D2: + + // End:0x555 [Loop If] + if(I < ImpactInfoList.Length) + { + // End:0x547 + if(ImpactInfoList[I].HitActor == Target) + { + ImpactInfoList[I].bDirectHit = true; + } + ++I; + // [Loop Continue] + goto J0x4D2; + } + } + // End:0x5D6 + if((DirectImpact.HitActor != none) && m_OwnerFireMode.ShouldAddToImpactList(DirectImpact.HitActor, ImpactInfoList)) + { + ImpactInfoList.AddItem(DirectImpact); + } + bRet = ((ImpactInfoList.Length > 0) ? true : false); + // End:0x625 + if(ImpactInfoList.Length > 0) + { + m_bHitValidTarget = true; + m_nTargetsHitCount = ImpactInfoList.Length; + } + DeviceOwner = TgDevice(m_OwnerFireMode.m_Owner); + // End:0x715 + if(DeviceOwner != none) + { + J0x665: + + // End:0x6AF [Loop If] + if(DeviceOwner.PendingImpactList.Length > 0) + { + DeviceOwner.PendingImpactList.Remove(0, 1); + // [Loop Continue] + goto J0x665; + } + I = 0; + J0x6BA: + + // End:0x715 [Loop If] + if(I < ImpactInfoList.Length) + { + DeviceOwner.PendingImpactList.AddItem(ImpactInfoList[I]); + I++; + // [Loop Continue] + goto J0x6BA; + } + } + I = 0; + J0x720: + + // End:0x981 [Loop If] + if(I < ImpactInfoList.Length) + { + ImpactInfoList[I].Projectile = self; + ImpactInfoList[I].HitInfo.Item = HitItem; + // End:0x80A + if(m_bAltFireHit) + { + m_OwnerFireMode.ApplyHitSpecial(ImpactInfoList[I].HitActor, ImpactInfoList[I]); + } + bRet = (ApplyTheHit(m_OwnerFireMode, ImpactInfoList[I], self)) || bRet; + J = 0; + J0x856: + + // End:0x973 [Loop If] + if(J < m_ExtraFireModes.Length) + { + // End:0x965 + if(m_ExtraFireModes[J].IsValidTarget(ImpactInfoList[I].HitActor)) + { + // End:0x934 + if(m_bAltFireHit) + { + m_ExtraFireModes[J].ApplyHitSpecial(ImpactInfoList[I].HitActor, ImpactInfoList[I]); + } + ApplyTheHit(m_ExtraFireModes[J], ImpactInfoList[I], self); + } + J++; + // [Loop Continue] + goto J0x856; + } + I++; + // [Loop Continue] + goto J0x720; + } + // End:0x9DA + if(DeviceOwner != none) + { + J0x990: + + // End:0x9DA [Loop If] + if(DeviceOwner.PendingImpactList.Length > 0) + { + DeviceOwner.PendingImpactList.Remove(0, 1); + // [Loop Continue] + goto J0x990; + } + } + } + return bRet; + //return ReturnValue; +} + +simulated function Actor CalculateHitActor(Actor Target, Vector HitLocation, Vector HitNormal, out TraceHitInfo HitInfo) +{ + local Vector velocityDirection, offsetLocation, TraceEnd, TraceStart, HitLocationAfter; + + local Actor HitActor; + + velocityDirection = Normal(Velocity); + offsetLocation = HitLocation + (HitNormal * (m_fExplosionOffsetDistance * float(16))); + TraceEnd = offsetLocation + (velocityDirection * float(32)); + TraceStart = offsetLocation - (velocityDirection * float(32)); + HitActor = Trace(HitLocationAfter, velocityDirection, TraceEnd, TraceStart, true, vect(0.0000000, 0.0000000, 0.0000000), HitInfo, 1); + // End:0x13B + if(Pawn(HitActor) != none) + { + CheckHitInfo(HitInfo, Pawn(HitActor).Mesh, -velocityDirection, HitLocationAfter); + } + // End:0x154 + if(HitActor == none) + { + return Target; + } + return HitActor; + //return ReturnValue; +} + +simulated event Explode(Vector HitLocation, Vector HitNormal) +{ + bForceNetUpdate = true; + ExplodeOnTarget(none, HitLocation, HitNormal); + //return; +} + +simulated event ExplodeOnTarget(Actor Target, Vector HitLocation, Vector HitNormal) +{ + local TraceHitInfo HitInfo; + local IMPACT_FX ImpactFx; + local Actor HitActor; + local TgPawn InstigatorPawn; + local TgDevice parentDevice; + + // End:0x0F + if(bHurtEntry) + { + return; + } + // End:0x49 + if(bTearOff && int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0x98 + if((IsValidTarget(Target)) && Class'TgGame.TgDevice'.static.IsSuccessfulHitImpact(Target)) + { + m_bHitValidTarget = true; + } + bHurtEntry = true; + // End:0x292 + if(!m_bHasExploded) + { + HitActor = CalculateHitActor(Target, HitLocation, HitNormal, HitInfo); + m_bHasExploded = true; + // End:0x166 + if(m_OwnerFireMode != none) + { + parentDevice = TgDevice(m_OwnerFireMode.m_Owner); + // End:0x166 + if(parentDevice != none) + { + parentDevice.UpdateActiveProjectiles(self); + } + } + InstigatorPawn = TgPawn(Instigator); + // End:0x1CC + if(InstigatorPawn != none) + { + InstigatorPawn.OnProjectileExploded(self, HitActor, HitLocation, HitNormal); + } + // End:0x239 + if(s_nSpawnDeployableId > 0) + { + // End:0x236 + if(((int(Role) == int(ROLE_Authority)) && !bTearOff) && !m_bSuppressDeployableSpawn) + { + SpawnDeployable(HitLocation, HitActor, HitNormal); + } + } + else + { + // End:0x292 + if(s_nSpawnBotId > 0) + { + // End:0x292 + if(((int(Role) == int(ROLE_Authority)) && !bTearOff) && !m_bSuppressDeployableSpawn) + { + SpawnBot(HitLocation, true); + } + } + } + } + ApplyHit(Target, HitLocation, HitNormal, HitInfo.Item); + // End:0x327 + if(c_ImpactFx != none) + { + ImpactFx = c_ImpactFx.GetImpactFx(HitInfo.PhysMaterial); + } + // End:0x376 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + PlayHitTargetFX(Target, HitLocation, HitNormal, true); + } + // End:0x3AD + if(ImpactedActor != none) + { + SpawnExplosionEffects(HitLocation, HitNormal, ImpactFx); + } + else + { + // End:0x422 + if((ImpactedActor == none) && int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + ImpactedActor = self; + SpawnExplosionEffects(HitLocation, HitNormal, ImpactFx); + ImpactedActor = none; + } + } + // End:0x43F + if(int(Role) == int(ROLE_Authority)) + { + MakeNoise(1.0000000); + } + // End:0x45F + if(m_fPersistTime == 0.0000000) + { + ShutDown(); + } + else + { + // End:0x49D + if(int(Role) == int(ROLE_Authority)) + { + // End:0x493 + if(m_fPersistHitPulse == 0.0000000) + { + ShutDown(); + } + else + { + StartPulse(); + } + } + SetPhysics(0); + HideProjectile(); + SetCollision(false, false); + Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + } + //return; +} + +simulated event Fizzle() +{ + PlayFizzleFX(vect(0.0000000, 0.0000000, 1.0000000), false); + // End:0x38 + if(m_fPersistTime == 0.0000000) + { + ShutDown(); + } + else + { + // End:0x76 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x6C + if(m_fPersistHitPulse == 0.0000000) + { + ShutDown(); + } + else + { + StartPulse(); + } + } + SetPhysics(0); + HideProjectile(); + SetCollision(false, false); + Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + } + //return; +} + +simulated function ParticleSystemComponent SpawnDebugProximityDistancePSC() +{ + local TgPlayerController TgPC; + local bool bConfused; + local editinline ParticleSystemComponent debugPSC; + + debugPSC = new Class'Engine.ParticleSystemComponent'; + debugPSC.SetTemplate(ParticleSystem'fx_gen_particles.Particles.FX_Debug_Collision_Sphere'); + debugPSC.SetScale(m_fProximityDistance); + // End:0x129 + if(Instigator.IsLocallyControlled()) + { + debugPSC.m_ParticleChannels.Friendly = false; + debugPSC.m_ParticleChannels.Enemy = false; + debugPSC.m_ParticleChannels.LocalOwner = true; + } + else + { + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x185 + if((TgPC != none) && TgPC.IsConfused()) + { + bConfused = true; + } + // End:0x25F + if(bConfused || Instigator.IsEnemy(GetALocalPlayerController())) + { + debugPSC.m_ParticleChannels.Friendly = false; + debugPSC.m_ParticleChannels.Enemy = true; + debugPSC.m_ParticleChannels.LocalOwner = false; + } + else + { + debugPSC.m_ParticleChannels.Friendly = true; + debugPSC.m_ParticleChannels.Enemy = false; + debugPSC.m_ParticleChannels.LocalOwner = false; + } + } + return debugPSC; + //return ReturnValue; +} + +simulated event SpawnFlightEffects() +{ + // End:0xC6 + if(((m_fProximityDistance > float(0)) && TgRepInfo_Game(WorldInfo.GRI).r_bShowProjectileProximityDistance) && (int(r_eEquippedAt) == int(1)) || int(r_eEquippedAt) == int(5)) + { + m_DebugProximityDistancePSC = SpawnDebugProximityDistancePSC(); + AttachComponent(m_DebugProximityDistancePSC); + m_DebugProximityDistancePSC.ActivateSystem(); + } + //return; +} + +simulated function SpawnExplosionEffects(Vector HitLocation, Vector HitNormal, optional IMPACT_FX ImpactFx) +{ + // End:0xD0 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0xBC + if(c_ExplosionFx != none) + { + c_ExplosionFx.SpawnEmitter(HitLocation, HitNormal); + c_ExplosionFx.SpawnSound(HitLocation); + c_ExplosionFx.PlayCameraShake(HitLocation); + } + PlayFizzleFX(HitNormal, true); + } + // End:0x134 + if((c_ImpactFx != none) && ImpactedActor != none) + { + c_ImpactFx.ApplyImpact(self, ImpactedActor, HitLocation, HitNormal, ImpactFx); + } + //return; +} + +simulated function ShutDown() +{ + local TgDevice Dev; + + // End:0x0F + if(m_bIsShutDown) + { + return; + } + // End:0x55 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + PlayFizzleFX(Normal(Velocity) * -1.0000000, false); + } + SetPhysics(0); + HideProjectile(); + SetCollision(false, false); + ClearAllTimers(); + // End:0xA7 + if(m_CollisionProxy != none) + { + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + bHurtEntry = true; + m_bIsShutDown = true; + // End:0x15C + if(m_OwnerFireMode != none) + { + // End:0xFC + if(!m_bHitValidTarget) + { + m_OwnerFireMode.HandleMiss(); + } + Dev = TgDevice(m_OwnerFireMode.m_Owner); + // End:0x15C + if(Dev != none) + { + Dev.OnProjectileShutdown(self); + } + } + LifeSpan = 3.0000000; + //return; +} + +event TornOff() +{ + ShutDown(); + super(Actor).TornOff(); + //return; +} + +simulated function HideProjectile() +{ + local editinline MeshComponent ComponentIt; + + // End:0x82 + foreach ComponentList(Class'Engine.MeshComponent', ComponentIt) + { + ComponentIt.SetHidden(true); + // End:0x81 + if(SkeletalMeshComponent(ComponentIt) != none) + { + SkeletalMeshComponent(ComponentIt).bPauseAnims = true; + } + } + // End:0x12C + if(c_Mesh != none) + { + c_Mesh.FxDeactivateGroup('AlwaysOn', 0); + c_Mesh.FxActivateIndependant('Destroyed', 0, Location, Vector(Rotation)); + // End:0x12C + if(m_DebugProximityDistancePSC != none) + { + m_DebugProximityDistancePSC.DeactivateSystem(); + } + } + //return; +} + +simulated function Destroyed() +{ + local TgDevice Dev; + local Vector HitNormal; + + // End:0x2F + if(m_fPersistTime == 0.0000000) + { + Explode(Location, HitNormal); + } + // End:0xAF + if((m_OwnerFireMode != none) && !m_bIsShutDown) + { + Dev = TgDevice(m_OwnerFireMode.m_Owner); + // End:0xAF + if(Dev != none) + { + Dev.OnProjectileShutdown(self); + } + } + // End:0xE1 + if(m_CollisionProxy != none) + { + m_CollisionProxy.Destroy(); + m_CollisionProxy = none; + } + super(Actor).Destroyed(); + // End:0x11E + if(m_AkActorUnoccluded != none) + { + m_AkActorUnoccluded.LifeSpan = 2.0000000; + } + //return; +} + +simulated function MyOnParticleSystemFinished(ParticleSystemComponent PSC) +{ + //return; +} + +simulated function bool ProjectileCalcCamera(float fDeltaTime, out Vector out_CamLoc, out Rotator out_CamRot, out float out_FOV) +{ + local float CollisionHeight; + + CollisionHeight = ((CylinderComponent(CollisionComponent) != none) ? CylinderComponent(CollisionComponent).CollisionHeight : 0.0000000); + out_CamLoc = Location + (CollisionHeight * vect(0.0000000, 0.0000000, 1.0000000)); + return true; + //return ReturnValue; +} + +event ServerDetonate() +{ + ImpactedActor = self; + Explode(Location, vect(0.0000000, 0.0000000, 0.0000000)); + ImpactedActor = none; + //return; +} + +event ServerFizzle() +{ + Fizzle(); + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + super(Actor).ReplicatedEvent(VarName); + //return; +} + +simulated function PlayFizzleFX(Vector HitNormal, bool bIsExplosionFizzle) +{ + local Vector ProjDir; + + // End:0xE4 + if(((!m_bHasPlayedFizzleFX && !m_bHasPlayedHitWallFX) && !m_bHasPlayedHitTargetFX) && c_Mesh != none) + { + ProjDir = Normal(Velocity); + // End:0x86 + if(IsZero(ProjDir)) + { + ProjDir = Normal(Location - r_vSpawnLocation); + } + c_Mesh.FxActivateIndependant(((bIsExplosionFizzle) ? 'ProjectileExplosionFizzle' : 'ProjectileFizzle'), 0, Location, ProjDir * -1.0000000); + } + m_bHasPlayedFizzleFX = true; + //return; +} + +// Export UTgProjectile::execTraceWorldPhysicalGeometry(FFrame&, void* const) +native simulated function PhysicalMaterial TraceWorldPhysicalGeometry(Vector StartLoc, Vector EndLoc, out Vector TraceHitLocation); + +simulated event PlayHitWallExplosionFX(Vector HitNormal, Vector HitLocation) +{ + local bool bCachedHitTargetFX, bCachedHitValidTarget; + local Vector ProjDir; + local TgSpecialFx HitWallFx; + local array ExplosionParams; + local Vector NewHitLoc, NewHitNormal; + local Actor HitActor; + local TraceHitInfo HitInfo; + local AkEvent HitAkEvent; + local SoundCue HitSoundCue; + local KActor HitKActor; + local editinline ParticleSystemComponent ImpactPSC; + + // End:0x62 + if(m_CollisionSettings.bHitAndPassThrough) + { + bCachedHitTargetFX = m_bHasPlayedHitTargetFX; + bCachedHitValidTarget = m_bHitValidTarget; + m_bHasPlayedHitTargetFX = false; + m_bHitValidTarget = false; + } + // End:0x748 + if((!m_bHitValidTarget && !m_bHasPlayedHitWallFX && !m_bHasPlayedHitTargetFX) && c_Mesh != none) + { + // End:0xFA + if(IsZero(c_vHitWallVelocity)) + { + ProjDir = Normal(Velocity); + // End:0xF7 + if(IsZero(ProjDir)) + { + ProjDir = Normal(HitLocation - r_vSpawnLocation); + } + } + else + { + ProjDir = Normal(c_vHitWallVelocity); + } + GetExplosionFXParams(ExplosionParams); + c_Mesh.FxActivateIndependant('ProjectileExplosionHitWall', 0, HitLocation, ProjDir * -1.0000000,,,, ExplosionParams); + PlayAdditionalHitFX(false, HitLocation, HitNormal, ProjDir * -1.0000000, ExplosionParams); + HitWallFx = TgSpecialFx(c_Mesh.FxGet('ProjectileExplosionHitWall', 0)); + // End:0x229 + if(HitWallFx != none) + { + HitWallFx.SpawnDecalAt(HitLocation, -HitNormal); + } + HitActor = Instigator.Trace(NewHitLoc, NewHitNormal, HitLocation + (ProjDir * float(256)), HitLocation, true,, HitInfo); + // End:0x73C + if(!IsZero(NewHitLoc)) + { + // End:0x73C + if(HitInfo.PhysMaterial != none) + { + // End:0x462 + if(HitActor != none) + { + // End:0x406 + if(HitInfo.PhysMaterial.DeviceImpactSound != none) + { + HitAkEvent = AkEvent(HitInfo.PhysMaterial.DeviceImpactSound); + HitSoundCue = SoundCue(HitInfo.PhysMaterial.DeviceImpactSound); + // End:0x3CA + if(HitAkEvent != none) + { + HitActor.PostAkEvent(HitAkEvent); + } + else + { + // End:0x406 + if(HitSoundCue != none) + { + HitActor.PlaySound(HitSoundCue); + } + } + } + HitKActor = KActor(HitActor); + // End:0x462 + if(HitKActor != none) + { + HitKActor.ClientWeaponHitEffects(NewHitLoc, NewHitNormal); + } + } + // End:0x73C + if(HitInfo.PhysMaterial.ImpactEffect != none) + { + ImpactPSC = new (self) Class'Engine.ParticleSystemComponent'; + ImpactPSC.bAutoActivate = false; + ImpactPSC.SetTemplate(HitInfo.PhysMaterial.ImpactEffect); + ImpactPSC.SetAbsolute(true, true, true); + ImpactPSC.SetTranslation(NewHitLoc); + ImpactPSC.SetRotation(Rotator(NewHitNormal)); + // End:0x71C + if(((r_Owner != none) && r_Owner.WorldInfo != none) && r_Owner.WorldInfo.MyEmitterPool != none) + { + ImpactPSC.__OnSystemFinished__Delegate = r_Owner.WorldInfo.MyEmitterPool.OnParticleSystemFinished; + r_Owner.WorldInfo.MyEmitterPool.AttachComponent(ImpactPSC); + r_Owner.WorldInfo.MyEmitterPool.ActiveComponents.AddItem(ImpactPSC); + } + ImpactPSC.ActivateSystem(true); + } + } + } + m_bHasPlayedHitWallFX = true; + } + // End:0x792 + if(m_CollisionSettings.bHitAndPassThrough) + { + m_bHasPlayedHitTargetFX = bCachedHitTargetFX; + m_bHitValidTarget = bCachedHitValidTarget; + } + //return; +} + +simulated function PlayHitTargetFX(Actor Target, Vector HitLocation, Vector HitNormal, bool bExploded) +{ + local Vector ProjDir, FXLocation; + local array ExplosionParams; + + // End:0x171 + if((m_bHitValidTarget && !bExploded || !m_bHasPlayedHitWallFX && !m_bHasPlayedHitTargetFX) && c_Mesh != none) + { + // End:0x165 + if(!SuppressHitTargetFX(Target, HitLocation, HitNormal, bExploded)) + { + ProjDir = Normal(Velocity); + // End:0xC9 + if(IsZero(ProjDir)) + { + ProjDir = Normal(HitLocation - r_vSpawnLocation); + } + FXLocation = HitLocation; + GetExplosionFXParams(ExplosionParams); + c_Mesh.FxActivateIndependant('ProjectileExplosionHitTarget', 0, FXLocation, ProjDir,,,, ExplosionParams); + PlayAdditionalHitFX(true, FXLocation, HitNormal, ProjDir, ExplosionParams); + } + m_bHasPlayedHitTargetFX = true; + } + // End:0x1F7 + if(m_bExplodeAtMaxRange && IsZero(HitNormal)) + { + // End:0x1F4 + if(c_Mesh != none) + { + GetExplosionFXParams(ExplosionParams); + c_Mesh.FxActivateIndependant('ProjectileExplosionInAir', 0, HitLocation, vect(0.0000000, 0.0000000, 0.0000000)); + } + } + else + { + // End:0x233 + if(!m_bHasPlayedHitWallFX && !m_bHasPlayedHitTargetFX) + { + PlayHitWallExplosionFX(HitNormal, HitLocation); + } + } + //return; +} + +simulated function bool SuppressHitTargetFX(Actor Target, Vector HitLocation, Vector HitNormal, bool bExploded) +{ + local PlayerController PC; + local TgPawn TargetPawn; + local TgRepInfo_Player localpri; + + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return true; + } + // End:0x3A + if(c_bIsAOE) + { + return false; + } + TargetPawn = TgPawn(Target); + // End:0x123 + if(TargetPawn != none) + { + PC = GetALocalPlayerController(); + localpri = ((PC != none) ? TgRepInfo_Player(PC.PlayerReplicationInfo) : none); + return ((localpri != none) && TargetPawn.IsEnemy(localpri)) && TargetPawn.IsStealthed(localpri); + } + return false; + //return ReturnValue; +} + +simulated function PlayAdditionalHitFX(bool bSuccessfulHit, Vector FXLocation, Vector HitNormal, Vector ProjDir, out array ExplosionParams) +{ + //return; +} + +// Export UTgProjectile::execGetExplosionFXParams(FFrame&, void* const) +native function GetExplosionFXParams(out array Params); + +simulated function AltFireDetonate() +{ + m_bAltFireHit = true; + Explode(Location, -Normal(Velocity)); + //return; +} + +simulated event Rotator AlignDeployableByMyRotation(Vector HitNormal) +{ + local Vector X, Y, Z, newY, newZ; + + GetAxes(Rotation, X, Y, Z); + newZ = HitNormal Cross (Z Cross HitNormal); + newZ = Normal(newZ); + newY = newZ Cross HitNormal; + newY = Normal(newY); + return OrthoRotation(HitNormal, newY, newZ); + //return ReturnValue; +} + +// Export UTgProjectile::execCheckOcclusion(FFrame&, void* const) +native function float CheckOcclusion(); + +defaultproperties +{ + m_fLandZThreshold=0.7000000 + c_bRotationFollowsVelocity=true + m_bIngoreBehindProjCollisions=true + m_fBaseDamageMultiplier=-1.0000000 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgProjectile.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + begin object name="MyLightEnvironment" class=Engine.DynamicLightEnvironmentComponent + bEnabled=false + end object + LightEnvironment=MyLightEnvironment + m_CollisionSettings=(bPassThroughFriends=true,bPassThroughEnemies=false,bPassThroughShields=false,bPassThroughBlocker=false,bExplodeOnShields=false,bExplodeOnBlockers=false,bHitAndPassThrough=false,bHitOnTick=false,bOnlyHitOnceOnPassThrough=true) + m_TrackingSettings=(bUsesTracking=false,mTarget=none,fTurnStrength=20.0000000,fVertTurnStrength=20.0000000,bIgnoreNonTargets=false,bIgnoreWorldIfSeeking=false,bIgnoreWorldIfNotSeeking=false) + // Reference: CylinderComponent'TgGame.Default__TgProjectile.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Projectile.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + Components[1]=MyLightEnvironment + bCollideComplex=true + m_bComplexOccluder=true + CollisionComponent=CollisionCylinder + m_fMaxDistForOcclusionPathfinding=1000.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgProperty.uc b/exported/TgGame/Classes/TgProperty.uc new file mode 100755 index 00000000..95169d89 --- /dev/null +++ b/exported/TgGame/Classes/TgProperty.uc @@ -0,0 +1,539 @@ +class TgProperty extends Object + native; + +const TGPT_FLOAT = 137; +const TGPT_INT = 176; +const TGPT_COMBO = 503; +const TGPID_PROJECTILE_SPEED = 46; +const TGPID_PROJECITLE_GRAVITY_OVERRIDE = 1983; +const TGPID_DAMAGE_RADIUS = 6; +const TGPID_REMOTE_ACTIVATION_TIME = 7; +const TGPID_POST_LAND_DURATION = 1693; +const TGPID_PROXIMITY_DISTANCE = 8; +const TGPID_CONE_ATTACK_ANGLE = 64; +const TGPID_CONE_ATTACK_ANGLE_OFFSET = 1627; +const TGPID_EFFECTIVE_RADIUS = 343; +const TGPID_MINIMUM_RADIUS = 1048; +const TGPID_FIRE_LOCK_TIME = 437; +const TGPID_ACCURACY = 10; +const TGPID_RANGE = 5; +const TGPID_MIN_RANGE = 48; +const TGPID_WALL_JUMP_HEIGHT_INCREASE = 1966; +const TGPID_RESPAWN_TIME_REDUCTION_PERC = 1880; +const TGPID_STEALTH_SOFT_REVEAL_DISTANCE = 1881; +const TGPID_AIR_CONTROL = 1952; +const TGPID_GROUND_SPEED = 49; +const TGPID_AIR_SPEED = 70; +const TGPID_JUMP_SPEED_MODIFIER = 1782; +const TGPID_JUMP_HEIGHT_MODIFIER = 1978; +const TGPID_MOUNT_GROUND_SPEED = 1775; +const TGPID_MOUNT_TIME = 1776; +const TGPID_NO_BACKPEDAL_PENALTY = 1524; +const TGPID_KNOCKBACK = 60; +const TGPID_KNOCKUP = 1019; +const TGPID_KNOCKSTRAIGHTUP = 1435; +const TGPID_KNOCKSTRAIGHTBACK = 1761; +const TGPID_KNOCKSTRAIGHT = 2036; +const TGPID_KNOCKBACK_PLUS_GRAVITY = 1507; +const TGPID_KNOCKBACK_PLUS_GRAV_NO_CHARGE = 1961; +const TGPID_PULLIN = 1667; +const TGPID_THREAT = 420; +const TGPID_FORCE_3P_VIEW = 1654; +const TGPID_SCALE_MESH = 1810; +const TGPID_SCALE_COLLISION_HEIGHT = 1813; +const TGPID_SCALE_COLLISION_RADIUS = 1814; +const TGPID_CONFUSED = 1812; +const TGPID_POLYMORPH_CHICKEN = 1841; +const TGPID_MARK_SHOT_MARK = 1991; +const TGPID_MARK_SHOT_FIRING_AT_MARK = 1992; +const TGPID_PURSUIT_FIRING_AT_TARGET = 1999; +const TGPID_ASTRO_BUFF = 2023; +const TGPID_ENERGY_CHARGE_MULTIPLIER = 2027; +const TGPID_VISION_RANGE = 152; +const TGPID_DEVICE_MODE_BUILDUP_TIME = 2; +const TGPID_DEVICE_MODE_FIRE_TIME = 53; +const TGPID_DEVICE_MODE_COOLDOWN_TIME = 4; +const TGPID_DEVICE_MODE_TIME_TO_HOLD_BLOCK = 258; +const TGPID_DEVICE_SHOTS_PER_FIRE = 287; +const TGPID_TIME_TO_DEPLOY_SECS = 279; +const TGPID_FIRE_PRE_HIT_DELAY = 1016; +const TGPID_FIRE_POST_HIT_DELAY = 1017; +const TGPID_TUTORIAL_MAP = 368; +const TGPID_CAPTURE_TIME = 87; +const TGPID_HOLD_TIME = 88; +const TGPID_TICK_TIME = 89; +const TGPID_CAPTURE_SCORE = 97; +const TGPID_TICK_SCORE = 98; +const TGPID_STUN = 166; +const TGPID_FEAR = 1418; +const TGPID_DAZE = 1433; +const TGPID_SILENCE = 1023; +const TGPID_DISARM = 303; +const TGPID_STASIS = 1051; +const TGPID_REVEAL = 1053; +const TGPID_CRIPPLE = 1523; +const TGPID_STUNTAUNT = 1555; +const TGPID_DAMAGE_DEVICE_INTERCEPT = 1823; +const TGPID_DAMAGE_MITIGATE_INTERCEPT = 1848; +const TGPID_ON_LANDED_INTERCEPT = 1826; +const TGPID_SLOW_TO_HALT = 1558; +const TGPID_DISORIENT = 1583; +const TGPID_ENERGY_STUN = 1652; +const TGPID_STEALTH_IN_COMBAT = 1664; +const TGPID_VISIBLE_THROUGH_WALLS = 1707; +const TGPID_VISIBLE_THROUGH_WALLS_INSTIGATOR_ONLY = 1852; +const TGPID_SEE_THROUGH_WALLS = 1771; +const TGPID_VISIBLE_THROUGH_STEALTH = 1861; +const TGPID_VISIBLE_THROUGH_STEALTH_INSTIGATOR_ONLY = 1862; +const TGPID_SEE_THROUGH_STEALTH = 1863; +const TGPID_NUGGET_STEALER_FULL_HP = 1827; +const TGPID_HOVER = 1762; +const TGPID_CUSTOM_FLIGHT = 1941; +const TGPID_NO_FRICTION = 1763; +const TGPID_GRAVITY_SCALE = 1820; +const TGPID_JUMP_HANG = 1882; +const TGPID_WALL_STUN = 1764; +const TGPID_BLEEDING = 1793; +const TGPID_ON_FIRE = 1791; +const TGPID_POISONED = 1792; +const TGPID_FROZEN = 1794; +const TGPID_DECOY_AGGRO = 1944; +const TGPID_APPLY_DOTS_NOW = 1878; +const TGPID_LEAPING = 1899; +const TGPID_FALL_OUT_OF_WORLD = 1945; +const TGPID_MESMERIZE = 2019; +const TGPID_MARKED_FOR_PRESENCE = 2028; +const TGPID_PRESENCE_BUFF = 2029; +const TGPID_FLASH_BANG = 2031; +const TGPID_DISABLE_RAGDOLL = 2044; +const TGPID_REMOVE_EFFECT = 140; +const TGPID_REMOVE_ALL_DEBUFFS = 1795; +const TGPID_PERSIST_TIME = 150; +const TGPID_PERSIST_PULSE = 151; +const TGPID_CHARACTER_VISION_RANGE = 152; +const TGPID_DEVICE_EFFECTIVE_RANGE = 153; +const TGPID_MAX_DEPLOYABLES_OUT = 154; +const INDEX_DISPLAY_TARGET_MINIMAP = 0; +const INDEX_DISPLAY_TARGET_INGAME = 1; +const INDEX_DISPLAY_TARGET_BRACKET = 2; +const INDEX_DISPLAY_TARGET_DISTANCE = 3; +const INDEX_DISPLAY_TARGET_TAGGED = 4; +const INDEX_DISPLAY_SEND_AUDIO_WARNING = 5; +const INDEX_DISPLAY_TARGET_LOW_HEALTH = 6; +const INDEX_SEE_NON_MOVING_ENEMY = 0; +const INDEX_SEE_WALKING_ENEMY = 1; +const INDEX_SEE_MAKING_NOISE_ENEMY = 2; +const INDEX_SEE_FLYING_ENEMY = 3; +const INDEX_SEE_STEALTHED_ENEMY = 4; +const INDEX_SEE_DEPLOYABLES = 5; +const INDEX_SEE_BEACONS = 6; +const INDEX_SEE_BOTS_ONLY = 7; +const TGPID_PHYSICAL_IMMUNITY = 1606; +const TGPID_MAGICAL_IMMUNITY = 1607; +const TGPID_HEALTH_FLOOR = 1838; +const TGPID_BLOCK_DAMAGE_PERC = 1770; +const TGPID_FRONTAL_IMMUNITY = 1954; +const TGPID_PROTECTION_SLOW = 158; +const TGPID_PROTECTION_STUN = 163; +const TGPID_PROTECTION_KNOCKBACK = 233; +const TGPID_PROTECTION_KNOCKUP = 1837; +const TGPID_PROTECTION_FEAR = 1892; +const TGPID_PROTECTION_SILENCE = 1893; +const TGPID_PROTECTION_CC = 1591; +const TGPID_PROTECTION_ON_FIRE = 1661; +const TGPID_PROTECTION_BLEEDING = 1819; +const TGPID_PROTECTION_POISON = 1696; +const TGPID_PROTECTION_PULL = 1360; +const TGPID_PROTECTION_DOT_DURATION = 1868; +const TGPID_PROTECTION_DOT_DURATION_PERC = 1873; +const TGPID_PROTECTION_DOT_DAMAGE_PERC = 1870; +const TGPID_DEBUFF_IMMUNITY = 1796; +const TGPID_REDUCE_DEBUFF_DURATION = 1811; +const TGPID_CC_IMMUNITY = 1417; +const TGPID_CC_IMMUNITY_SUPERIOR = 1894; +const TGPID_SLOW_IMMUNITY = 1746; +const TGPID_JUMP_PENALTY_IMMUNITY = 1753; +const TGPID_TGEFFECTMODIFYEFFECT_LIFETIME = 1950; +const TGPID_TGEFFECTMODIFYEFFECT_APPVALUE = 1951; +const TGPID_TGEFFECTMODIFYEFFECT_MAXSTACK = 1989; +const TGPID_REMOVE_PROTECTION_CC = 1560; +const TGPID_HAS_HEALING_EFFECT_UI_SELF = 1959; +const TGPID_HAS_HEALING_EFFECT_UI_FRIEND = 1960; +const TGPID_MISSING_HEALTH = 211; +const TGPID_ARCING_JUMPS = 309; +const TGPID_ARC_RANGE = 1057; +const TGPID_ARC_MAX_RANGE = 1058; +const TGPID_CONTAGIOUS_RADIUS = 312; +const TGPID_PET_LIFESPAN = 354; +const TGPID_FIRE_ANGLE = 2009; +const TGPID_MAX_TARGET_COUNT = 415; +const TGPID_PROC_CHANCE_MODIFIER = 1815; +const TGPID_DOT_DURATION_PERC = 1879; +const TGPID_NEAR_DAMAGE_PERCENT = 1768; +const TGPID_FAR_DAMAGE_PERCENT = 1769; +const TGPID_AUTO_SPAWN = 170; +const TGPID_RESPAWN = 171; +const TGPID_BOT_COUNT = 172; +const TGPID_RESPAWN_DELAY = 173; +const TGPID_SPAWN_DELAY = 174; +const TGPID_TEAM_NUMBER = 175; +const TGPID_TASK_FORCE_NUMBER = 176; +const TGPID_SELECTION_METHOD = 178; +const TGPID_BOT_SELECTION_LIST = 179; +const TGPID_PLACEMENT_METHOD = 180; +const TGPID_PATROL_LOOP = 181; +const TGPID_GLOBAL_ALARM_NUMBER = 182; +const TGPID_SPAWN_LOCATION_LIST = 183; +const TGPID_PATROL_LOCATION_LIST = 184; +const TGPID_DEPLOYABLE_SELECTION_LIST = 185; +const TGPID_DESTRUCTIBLE_SELECTION_LIST = 188; +const TGPID_INSTANCE_SELECTION_LIST = 229; +const TGPID_DEVICE_SELECTION_LIST = 282; +const TGPID_NAME_SELECTION_LIST = 292; +const TGPID_BULK_SPAWN = 230; +const TGPID_LOOT_TABLE_ID = 332; +const TGPID_SPAWN_TABLE_ID = 340; +const TGPID_TIME_TO_CAPTURE = 288; +const TGPID_CAPTURE_ONLY_ONCE = 289; +const TGPID_ALLOW_AIBOT_INTERACTION = 290; +const TGPID_ALLOW_PLAYERBOT_INTERACTION = 291; +const TGPID_TIME_TO_HOLD = 294; +const TGPID_DEFENDER_RECAP_RATE = 296; +const TGPID_CAPTURE_ACCEL_RATE = 297; +const TGPID_CAPTURE_ACCEL_RATE_CAP = 298; +const TGPID_OBJECTIVE_BOT_ID = 301; +const TGPID_CAPTURE_TIME_EXTENTION = 300; +const TGPID_OVERTIME_RATE_MODIFIER = 317; +const TGPID_END_OT_ON_DEFENDER_PROGRESS = 320; +const TGPID_POINTS_PER_SECOND = 326; +const TGPID_POINTS_TO_WIN = 327; +const TGPID_OBJECTIVE_UNLOCK_DELAY = 331; +const TGPID_BLOCK_FRIENDLY_FIRE = 302; +const TGPID_TAUNT = 305; +const TGPID_BOOST_CHARGE_RATE = 337; +const TGPID_ROOT = 338; +const TGPID_CAPTURE_TIME_RESET = 358; +const TGPID_PRIORITY = 346; +const TGPID_OBJECTIVE_ID = 347; +const TGPID_MIN_AGENTS = 401; +const TGPID_POINTS = 398; +const TGPID_CREDITS = 399; +const TGPID_REWARD_XP = 400; +const TGPID_OBJECTIVE_COOLDOWN_SECONDS = 409; +const TGPID_MINIMUM_LEVEL = 410; +const TGPID_LIFT = 2030; +const TGPID_REDUCE_ACTIVE_COOLDOWN = 1554; +const TGPID_REDUCE_ACTIVE_COOLDOWN_CHILD_DEVICE = 1840; +const TGPID_REDUCE_ACTIVE_COOLDOWN_CHILD_ITEMS = 1942; +const TGPID_AMMO_COUNT = 424; +const TGPID_AMMO_CLIP_PRE_RELOAD_TIME = 435; +const TGPID_AMMO_CLIP_POST_RELOAD_TIME = 425; +const TGPID_AMMO_CLIP_SIZE = 426; +const TGPID_AMMO_REPLENISH = 427; +const TGPID_AMMO_COST_PER_SHOT = 1853; +const TGPID_AMMO_REGEN_PER_SEC = 1854; +const TGPID_DROGOZ_ENERGY = 1886; +const TGPID_DROGOZ_ENERGY_MAX = 1887; +const TGPID_ORACLE_ORB_STACK = 1993; +const TGPID_HEALTH = 51; +const TGPID_HEALTH_MAX = 304; +const TGPID_HEALTH_MAX_PERCENT = 1620; +const TGPID_HP5 = 1011; +const TGPID_HP5_PERCENT = 1565; +const TGPID_HP5_PERCENT_OF_MAX_HEALTH = 1772; +const TGPID_MANA_MAX = 1001; +const TGPID_MANA = 1002; +const TGPID_MP5 = 1003; +const TGPID_ENERGY = 1004; +const TGPID_ENERGY_MAX = 1005; +const TGPID_EP5 = 1006; +const TGPID_SHIELD = 1598; +const TGPID_SHIELD_MAX = 1599; +const TGPID_SHIELD_MAX_INSTIGATOR_SCALE = 1612; +const TGPID_POWER_PHYSICAL_BOT = 1082; +const TGPID_POWER_PHYSICAL_ITEM = 1007; +const TGPID_POWER_PHYSICAL_PERC = 1047; +const TGPID_POWER_MAGICAL_BOT = 1083; +const TGPID_POWER_MAGICAL_ITEM = 1008; +const TGPID_POWER_MAGICAL_PERC = 1046; +const TGPID_POWER_UTILITY_BOT = 1484; +const TGPID_POWER_UTILITY_ITEM = 1485; +const TGPID_LIFESTEAL = 1010; +const TGPID_LIFESTEAL_INSTIGATOR_ONLY = 1898; +const TGPID_LIFESTEAL_VENGEANCE_TARGET = 2006; +const TGPID_HEALTH_COST = 1578; +const TGPID_MANA_COST = 1012; +const TGPID_ENERGY_COST = 1013; +const TGPID_MINIMAP_LOS_IGNORED = 1032; +const TGPID_MINIMAP_DETECTOR = 1033; +const TGPID_HEALTH_PERCENT = 1044; +const TGPID_MANA_PERCENT = 1045; +const TGPID_SHIELD_PERCENT = 1988; +const TGPID_CUSTOM_VALUE_1 = 1049; +const TGPID_CUSTOM_VALUE_2 = 1050; +const TGPID_CUSTOM_VALUE_3 = 1594; +const TGPID_CUSTOM_VALUE_4 = 1595; +const TGPID_CUSTOM_VALUE_5 = 1596; +const TGPID_FIRE_HOLD_TIME = 1757; +const TGPID_FIRE_HOLD_RATE = 1963; +const TGPID_FIRE_HOLD_ACCURACY_PERC_LOW = 1758; +const TGPID_FIRE_HOLD_DAMAGE_PERC_LOW = 1759; +const TGPID_SLOW_DIMINISHING = 1231; +const TGPID_SLOW_CAP_PERC = 1948; +const TGPID_MARKED = 1839; +const TGPID_MARKED_INHAND = 1970; +const TGPID_HEALING_TAKEN_PERC = 1056; +const TGPID_HEALING_TAKEN_OTHERS_PERC = 1947; +const TGPID_DAMAGE_TAKEN_PERC = 316; +const TGPID_DAMAGE_TAKEN_PERC_INHAND = 1665; +const TGPID_DAMAGE_TAKEN_PERC_AOE = 1765; +const TGPID_DAMAGE_TAKEN_PERC_DIRECT = 1949; +const TGPID_DAMAGE_TAKEN_PERC_PHYS = 1630; +const TGPID_DAMAGE_CAP_PERC_MAX_HP = 1857; +const TGPID_DAMAGE_CAP_PERC_CUR_HP = 1858; +const TGPID_DAMAGE_REDUCTION_FLAT = 1874; +const TGPID_DAMAGE_REDUCTION_PERC = 1990; +const TGPID_DAMAGE_REDUCTION_PERC_INHAND = 1997; +const TGPID_DAMAGE_REDUCTION_PERC_AOE = 1996; +const TGPID_DAMAGE_REDUCTION_PERC_DIRECT = 1995; +const TGPID_DAMAGE_REDUCTION_PERC_PHYS = 1994; +const TGPID_DAMAGE_REDUCTION_PERC_MAG = 1998; +const TGPID_DAMAGE_AMP_PERC = 2000; +const TGPID_DAMAGE_AMP_PERC_INHAND = 2005; +const TGPID_DAMAGE_AMP_PERC_AOE = 2002; +const TGPID_DAMAGE_AMP_PERC_DIRECT = 2001; +const TGPID_DAMAGE_AMP_PERC_PHYS = 2003; +const TGPID_DAMAGE_AMP_PERC_MAG = 2004; +const TGPID_DAMAGE_AMP_FAIRY = 2007; +const TGPID_DAMAGE_DEALT_PERC = 65; +const TGPID_DAMAGE_DEALT_PERC_BASIC = 1605; +const TGPID_DAMAGE_DEALT_PERC_PHYSICAL = 1864; +const TGPID_DAMAGE_DEALT_PERC_MAGICAL = 1865; +const TGPID_DAMAGE_DEALT_PERC_DEPLOYABLES = 1859; +const TGPID_DAMAGE_DEALT_PERC_SHIELDS = 1860; +const TGPID_DAMAGE_DEALT_FLAT = 1875; +const TGPID_HEAL_BLOCK = 1877; +const TGPID_STEALTH = 1416; +const TGPID_STEALTH_GUARD = 1832; +const TGPID_STEALTH_WITHFADING = 1597; +const TGPID_STEALTH_DISABLED = 141; +const TGPID_STEALTH_NO_REVEAL = 1660; +const TGPID_BREAK_GRAB = 1556; +const TGPID_GP_SURRENDER_TIME = 1386; +const TGPID_GP_STARTING_GOLD = 1426; +const TGPID_GP_STARTING_LEVEL = 1427; +const TGPID_GP_GOLD_SPOOL = 1500; +const TGPID_GP_XP_SPOOL = 1501; +const TGPID_GP_ENABLE_NEW_FOW = 1568; +const TGPID_GP_MAX_RESPAWN_TIME = 1569; +const TGPID_GP_GOD_XP_COEFFICIENT = 1581; +const TGPID_INHAND_EFFECTIVE_RANGE = 1684; +const TGPID_INHAND_ABSOLUTE_RANGE = 1685; +const TGPID_INHAND_AMMO_CAPACITY = 1687; +const TGPID_INHAND_RELOAD_SPEED = 1688; +const TGPID_INHAND_REFIRE_SPEED = 1699; +const TGPID_INHAND_EFFECTIVE_AOE = 1689; +const TGPID_INHAND_ABSOLUTE_AOE = 1690; +const TGPID_INHAND_RESTORE_AMMO = 1855; +const TGPID_OUT_OF_COMBAT = 1694; +const TGPID_ENTER_COMBAT = 1700; +const TGPID_COMBAT_DURATION_REDUCTION_PERC = 1703; +const TGPID_IGNORE_ACTOR_BLOCKING = 1745; +const TGPID_ETHEREAL = 1821; +const TGPID_INHAND_FIRE_OVERRIDE = 1822; +const TGPID_AI_DEVICE_RANGE = 1486; +const TGPID_AI_DEVICE_RADIUS = 1487; +const TGPID_HEAD_SHOT_DAMAGE = 1905; +const TGPID_AI_ACCURACY_PERC = 1888; +const TGPID_AI_ACCURACY_DEG_MISSED = 1889; +const TGPID_CONFIG_SETTING_GAMEPAD_X_SENSITIVITY = 1971; +const TGPID_CONFIG_SETTING_GAMEPAD_Y_SENSITIVITY = 1972; +const TGPID_CONFIG_SETTING_GAMEPAD_AIM_ACCEL_MODE = 1973; +const TGPID_CONFIG_SETTING_GAMEPAD_AIM_ACCEL_BOOST = 1974; +const TGPID_CONFIG_SETTING_GAMEPAD_AIM_ASSIST_MAGNET = 1975; +const TGPID_CONFIG_SETTING_GAMEPAD_AIM_ASSIST_TRACKING = 1976; +const TGPID_CONFIG_SETTING_GAMEPAD_DEAD_ZONE_INNER = 1984; +const TGPID_CONFIG_SETTING_GAMEPAD_DEAD_ZONE_OUTER = 1985; +const TGPID_CONFIG_SETTING_SCOPE_SENSITIVITY = 2042; +const PROTECTION_IMMUNITY_VALUE = 100; +const PROTECTION_DAMAGE_IMMUNITY_VALUE = 10000; + +enum TG_PAWN_PROPERTIES +{ + TGPIDX_CHARACTER_VISION_RANGE, // 0 + TGPIDX_ENERGY_MAX, // 1 + TGPIDX_ENERGY, // 2 + TGPIDX_EP5, // 3 + TGPIDX_WALL_JUMP_HEIGHT_INCREASE,// 4 + TGPIDX_RESPAWN_TIME_REDUCTION_PERC,// 5 + TGPIDX_STEALTH_SOFT_REVEAL_DISTANCE,// 6 + TGPIDX_AIR_CONTROL, // 7 + TGPIDX_GROUND_SPEED, // 8 + TGPIDX_AIR_SPEED, // 9 + TGPIDX_JUMP_SPEED_MODIFIER, // 10 + TGPIDX_JUMP_HEIGHT_MODIFIER, // 11 + TGPIDX_MOUNT_GROUND_SPEED, // 12 + TGPIDX_MOUNT_TIME, // 13 + TGPIDX_DROGOZ_ENERGY, // 14 + TGPIDX_DROGOZ_ENERGY_MAX, // 15 + TGPIDX_ORACLE_ORB_STACK, // 16 + TGPIDX_HEALTH_MAX, // 17 + TGPIDX_HEALTH_MAX_PERCENT, // 18 + TGPIDX_HEALTH, // 19 + TGPIDX_HP5, // 20 + TGPIDX_MANA_MAX, // 21 + TGPIDX_MANA, // 22 + TGPIDX_MP5, // 23 + TGPIDX_STEALTH_GUARD, // 24 + TGPIDX_VISIBLE_THROUGH_WALLS, // 25 + TGPIDX_VISIBLE_THROUGH_WALLS_INSTIGATOR_ONLY,// 26 + TGPIDX_SEE_THROUGH_WALLS, // 27 + TGPIDX_VISIBLE_THROUGH_STEALTH, // 28 + TGPIDX_VISIBLE_THROUGH_STEALTH_INSTIGATOR_ONLY,// 29 + TGPIDX_SEE_THROUGH_STEALTH, // 30 + TGPIDX_NUGGET_STEALER_FULL_HP, // 31 + TGPIDX_HOVER, // 32 + TGPIDX_CUSTOM_FLIGHT, // 33 + TGPIDX_NO_FRICTION, // 34 + TGPIDX_GRAVITY_SCALE, // 35 + TGPIDX_JUMP_HANG, // 36 + TGPIDX_SHIELD, // 37 + TGPIDX_SHIELD_MAX, // 38 + TGPIDX_LIFESTEAL, // 39 + TGPIDX_LIFESTEAL_INSTIGATOR_ONLY,// 40 + TGPIDX_LIFESTEAL_VENGEANCE_TARGET,// 41 + TGPIDX_POWER_MAGICAL_BOT, // 42 + TGPIDX_POWER_PHYSICAL_BOT, // 43 + TGPIDX_PROTECTION_FEAR, // 44 + TGPIDX_PROTECTION_KNOCKBACK, // 45 + TGPIDX_PROTECTION_KNOCKUP, // 46 + TGPIDX_PROTECTION_SILENCE, // 47 + TGPIDX_PROTECTION_SLOW, // 48 + TGPIDX_PROTECTION_STUN, // 49 + TGPIDX_PROTECTION_PULL, // 50 + TGPIDX_PROTECTION_CC, // 51 + TGPIDX_PROTECTION_ON_FIRE, // 52 + TGPIDX_PROTECTION_BLEEDING, // 53 + TGPIDX_PROTECTION_POISON, // 54 + TGPIDX_PROTECTION_DOT_DURATION, // 55 + TGPIDX_PROTECTION_DOT_DURATION_PERC,// 56 + TGPIDX_PROTECTION_DOT_DAMAGE_PERC,// 57 + TGPIDX_DEBUFF_IMMUNITY, // 58 + TGPIDX_REDUCE_DEBUFF_DURATION, // 59 + TGPIDX_CC_IMMUNITY, // 60 + TGPIDX_CC_IMMUNITY_SUPERIOR, // 61 + TGPIDX_SLOW_IMMUNITY, // 62 + TGPIDX_JUMP_PENALTY_IMMUNITY, // 63 + TGPIDX_TAUNT, // 64 + TGPIDX_POWER_PHYSICAL_PERC, // 65 + TGPIDX_POWER_MAGICAL_PERC, // 66 + TGPIDX_HEALING_TAKEN_PERC, // 67 + TGPIDX_HEALING_TAKEN_OTHERS_PERC,// 68 + TGPIDX_DAMAGE_TAKEN_PERC, // 69 + TGPIDX_DAMAGE_DEALT_PERC, // 70 + TGPIDX_DAMAGE_DEALT_PERC_BASIC, // 71 + TGPIDX_DAMAGE_DEALT_PERC_PHYSICAL,// 72 + TGPIDX_DAMAGE_DEALT_PERC_MAGICAL,// 73 + TGPIDX_DAMAGE_DEALT_PERC_DEPLOYABLES,// 74 + TGPIDX_DAMAGE_DEALT_PERC_SHIELDS,// 75 + TGPIDX_DAMAGE_DEALT_FLAT, // 76 + TGPIDX_POWER_PHYSICAL_ITEM, // 77 + TGPIDX_POWER_MAGICAL_ITEM, // 78 + TGPIDX_POWER_UTILITY_BOT, // 79 + TGPIDX_POWER_UTILITY_ITEM, // 80 + TGPIDX_SLOW_DIMINISHING, // 81 + TGPIDX_MARKED, // 82 + TGPIDX_MARKED_INHAND, // 83 + TGPIDX_MINIMAP_LOS_IGNORED, // 84 + TGPIDX_MINIMAP_DETECTOR, // 85 + TGPIDX_BLOCK_DAMAGE_PERC, // 86 + TGPIDX_FRONTAL_IMMUNITY, // 87 + TGPIDX_NO_BACKPEDAL_PENALTY, // 88 + TGPIDX_HP5_PERC, // 89 + TGPIDX_HP5_PERC_OF_MAX_HEALTH, // 90 + TGPIDX_PHYSICAL_IMMUNITY, // 91 + TGPIDX_MAGICAL_IMMUNITY, // 92 + TGPIDX_DAMAGE_TAKEN_PERC_PHYS, // 93 + TGPIDX_DAMAGE_TAKEN_PERC_INHAND,// 94 + TGPIDX_DAMAGE_TAKEN_PERC_AOE, // 95 + TGPIDX_DAMAGE_TAKEN_PERC_DIRECT,// 96 + TGPIDX_DAMAGE_REDUCTION_FLAT, // 97 + TGPIDX_DAMAGE_REDUCTION_PERC, // 98 + TGPIDX_DAMAGE_REDUCTION_PERC_INHAND,// 99 + TGPIDX_DAMAGE_REDUCTION_PERC_AOE,// 100 + TGPIDX_DAMAGE_REDUCTION_PERC_DIRECT,// 101 + TGPIDX_DAMAGE_REDUCTION_PERC_PHYS,// 102 + TGPIDX_DAMAGE_REDUCTION_PERC_MAG,// 103 + TGPIDX_DAMAGE_AMP_PERC, // 104 + TGPIDX_DAMAGE_AMP_PERC_INHAND, // 105 + TGPIDX_DAMAGE_AMP_PERC_AOE, // 106 + TGPIDX_DAMAGE_AMP_PERC_DIRECT, // 107 + TGPIDX_DAMAGE_AMP_PERC_PHYS, // 108 + TGPIDX_DAMAGE_AMP_PERC_MAG, // 109 + TGPIDX_DAMAGE_AMP_FAIRY, // 110 + TGPIDX_HEAL_BLOCK, // 111 + TGPIDX_INHAND_RELOAD_SPEED, // 112 + TGPIDX_INHAND_AMMO_CAPACITY, // 113 + TGPIDX_INHAND_REFIRE_SPEED, // 114 + TGPIDX_COMBAT_DURATION_REDUCTION_PERC,// 115 + TGPIDX_IGNORE_ACTOR_BLOCKING, // 116 + TGPIDX_FORCE_3P_VIEW, // 117 + TGPIDX_SCALE_MESH, // 118 + TGPIDX_SCALE_COLLISION_HEIGHT, // 119 + TGPIDX_SCALE_COLLISION_RADIUS, // 120 + TGPIDX_CONFUSED, // 121 + TGPIDX_NEAR_DAMAGE_PERCENT, // 122 + TGPIDX_FAR_DAMAGE_PERCENT, // 123 + TGPIDX_BLEEDING, // 124 + TGPIDX_ON_FIRE, // 125 + TGPIDX_POISONED, // 126 + TGPIDX_FROZEN, // 127 + TGPIDX_INHAND_EFFECTIVE_AOE, // 128 + TGPIDX_INHAND_ABSOLUTE_AOE, // 129 + TGPIDX_PROC_CHANCE_MODIFIER, // 130 + TGPIDX_DOT_DURATION_PERC, // 131 + TGPIDX_ETHEREAL, // 132 + TGPIDX_INHAND_FIRE_OVERRIDE, // 133 + TGPIDX_HEALTH_FLOOR, // 134 + TGPIDX_LEAPING, // 135 + TGPIDX_DECOY_AGGRO, // 136 + TGPIDX_HAS_HEALING_EFFECT_UI_SELF,// 137 + TGPIDX_HAS_HEALING_EFFECT_UI_FRIEND,// 138 + TGPIDX_MARK_SHOT_MARK, // 139 + TGPIDX_MARK_SHOT_FIRING_AT_MARK,// 140 + TGPIDX_PURSUIT_FIRING_AT_TARGET,// 141 + TGPIDX_MESMERIZE, // 142 + TGPIDX_MARKED_FOR_PRESENCE, // 143 + TGPIDX_PRESENCE_BUFF, // 144 + TGPIDX_DISABLE_RAGDOLL, // 145 + TGPIDX_MAX // 146 +}; + +var int m_nPropIndex; +var int m_nPropertyId; +var float m_fBase; +var float m_fRaw; +var float m_fMinimum; +var float m_fMaximum; +var float m_fScalingFactor; + +// Export UTgProperty::execGetCurrentValue(FFrame&, void* const) +native function float GetCurrentValue(); + +simulated event Copy(TgProperty pProperty) +{ + m_nPropIndex = pProperty.m_nPropIndex; + m_nPropertyId = pProperty.m_nPropertyId; + m_fBase = pProperty.m_fBase; + m_fRaw = pProperty.m_fBase; + m_fMinimum = pProperty.m_fMinimum; + m_fMaximum = pProperty.m_fMaximum; + m_fScalingFactor = pProperty.m_fScalingFactor; + //return; +} + +// Export UTgProperty::execGetPropIndex(FFrame&, void* const) +native static final function int GetPropIndex(int propId); + +// Export UTgProperty::execGetPropIndexByName(FFrame&, void* const) +native static final function int GetPropIndexByName(string propName); diff --git a/exported/TgGame/Classes/TgRecoilKeyframe.uc b/exported/TgGame/Classes/TgRecoilKeyframe.uc new file mode 100755 index 00000000..f2a823b5 --- /dev/null +++ b/exported/TgGame/Classes/TgRecoilKeyframe.uc @@ -0,0 +1,18 @@ +class TgRecoilKeyframe extends Object + native + editinlinenew + hidecategories(Object) + autoexpandcategories(TgRecoilKeyframe); + +var() float firingTime; +var() RawDistributionFloat RecoilPerShot; + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgRecoilKeyframe.DistributionRecoilPerShot' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionRecoilPerShot' + begin object name="DistributionRecoilPerShot" class=Engine.DistributionFloatConstantCurve + end object + RecoilPerShot=(Distribution=Distribution=DistributionRecoilPerShot,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgRepInfo_CapturePoint.uc b/exported/TgGame/Classes/TgRepInfo_CapturePoint.uc new file mode 100755 index 00000000..0e0a2a30 --- /dev/null +++ b/exported/TgGame/Classes/TgRepInfo_CapturePoint.uc @@ -0,0 +1,148 @@ +class TgRepInfo_CapturePoint extends ReplicationInfo + native(Game) + nativereplication + hidecategories(Navigation,Movement,Collision); + +var TgCapturePoint r_OwningCapturePoint; +var int r_nUniqueCapturePointId; +var repnotify int r_nControlledByTaskForce; +var repnotify float r_fOwnershipPct; +var repnotify byte r_nTransitionDirection; +var repnotify bool r_bIsLocked; +var transient TgSeqEvent_ControlPointOwnershipPercent c_OwnershipPercentKismetNode; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_OwningCapturePoint, r_bIsLocked, + r_fOwnershipPct, r_nControlledByTaskForce, + r_nTransitionDirection, r_nUniqueCapturePointId; +} + +// Export UTgRepInfo_CapturePoint::execGetCurrentLocation(FFrame&, void* const) +native function Vector GetCurrentLocation(); + +simulated event ReplicatedEvent(name VarName) +{ + super(Actor).ReplicatedEvent(VarName); + switch(VarName) + { + // End:0x3F + case 'r_nControlledByTaskForce': + OnTaskForceControlChanged(); + // End:0x98 + break; + // End:0x58 + case 'r_fOwnershipPct': + OnOwnershipPctChanged(); + // End:0x98 + break; + // End:0x95 + case 'r_bIsLocked': + // End:0x92 + if(r_OwningCapturePoint != none) + { + r_OwningCapturePoint.UpdateLockEffects(); + } + // End:0x98 + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated event PostBeginPlay() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x60 + if(GRI != none) + { + GRI.AddCPRI(self); + } + //return; +} + +simulated function OnTaskForceControlChanged() +{ + // End:0x37 + if(r_OwningCapturePoint != none) + { + r_OwningCapturePoint.OnTaskForceControlChanged(r_nControlledByTaskForce); + } + //return; +} + +simulated event OnOwnershipPctChanged() +{ + local TgPlayerController TgPC; + local array KismetEvents; + local TgSeqEvent_ControlPointOwnershipPercent SeqEvent; + local int Idx, PointIndex; + local array ActivateIndices; + + // End:0x115 + if(c_OwnershipPercentKismetNode == none) + { + PointIndex = GetCapturePointIndex(); + WorldInfo.GetGameSequence().FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_ControlPointOwnershipPercent', true, KismetEvents); + Idx = 0; + J0x76: + + // End:0x115 [Loop If] + if(Idx < KismetEvents.Length) + { + SeqEvent = TgSeqEvent_ControlPointOwnershipPercent(KismetEvents[Idx]); + // End:0x107 + if((SeqEvent != none) && SeqEvent.PointIndex == PointIndex) + { + c_OwnershipPercentKismetNode = SeqEvent; + // [Explicit Break] + goto J0x115; + } + Idx++; + // [Loop Continue] + goto J0x76; + } + } + J0x115: + + // End:0x1F9 + if(c_OwnershipPercentKismetNode != none) + { + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x198 + if(TgPC.GetTaskForceNumber() == 1) + { + c_OwnershipPercentKismetNode.OwnershipPercent = 1.0000000 - r_fOwnershipPct; + } + else + { + c_OwnershipPercentKismetNode.OwnershipPercent = r_fOwnershipPct; + } + ActivateIndices[0] = 0; + c_OwnershipPercentKismetNode.CheckActivate(self, self, false, ActivateIndices); + } + //return; +} + +simulated event int GetCapturePointIndex() +{ + // End:0x2F + if(r_OwningCapturePoint != none) + { + return r_OwningCapturePoint.GetCapturePointIndex(); + } + return -1; + //return ReturnValue; +} + +defaultproperties +{ + r_fOwnershipPct=0.5000000 + s_bThrottleNetRelevancy=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgRepInfo_Deployable.uc b/exported/TgGame/Classes/TgRepInfo_Deployable.uc new file mode 100755 index 00000000..c3a8120c --- /dev/null +++ b/exported/TgGame/Classes/TgRepInfo_Deployable.uc @@ -0,0 +1,256 @@ +class TgRepInfo_Deployable extends ReplicationInfo + native(Game) + nativereplication + hidecategories(Navigation,Movement,Collision); + +var int r_nHealthCurrent; +var int r_nHealthMaximum; +var float r_fDeployMaxHealthPCT; +var int r_nDeployableId; +var int r_nUniqueDeployableId; +var float r_fLifespanInitial; +var repnotify float r_fLifespanSync; +var repnotify TgDeployable r_DeployableOwner; +var repnotify TgRepInfo_Player r_InstigatorInfo; +var repnotify TgRepInfo_TaskForce r_TaskforceInfo; +var repnotify bool r_bOwnedByTaskforce; +var bool c_bReceivedOwner; +var bool r_bMinimapOnlyOwnerSee; +var bool r_bInDestroyedState; +var bool c_bShowHUDLifespanTimer; +var Vector r_ApproxLocation; +var TG_HUD_INFO c_HudInfo; +var byte r_bVisibleOnMap[TgMapTeam]; +var TgObject.DeployableOverlayIcon r_eDeployableOverlayIcon; +var TgObject.DeployableOverlayState r_eDeployableOverlayState; +var float r_fVisionRange; +var int r_nDeployableOverlayDisplayMask; +var float r_fDeployableOverlayEnemyViewDist; +var float c_fBarragePercent; + +replication +{ + // Pos:0x000 + if(bNetDirty && int(Role) == int(ROLE_Authority)) + r_ApproxLocation, r_DeployableOwner, + r_InstigatorInfo, r_TaskforceInfo, + r_bInDestroyedState, r_bMinimapOnlyOwnerSee, + r_bOwnedByTaskforce, r_bVisibleOnMap, + r_eDeployableOverlayIcon, r_eDeployableOverlayState, + r_fDeployableOverlayEnemyViewDist, r_fLifespanInitial, + r_fLifespanSync, r_fVisionRange, + r_nDeployableOverlayDisplayMask, r_nHealthCurrent, + r_nHealthMaximum; + + // Pos:0x020 + if(bNetInitial && int(Role) == int(ROLE_Authority)) + r_fDeployMaxHealthPCT, r_nDeployableId, + r_nUniqueDeployableId; +} + +// Export UTgRepInfo_Deployable::execGetTaskForce(FFrame&, void* const) +native function TgRepInfo_TaskForce GetTaskForce(); + +// Export UTgRepInfo_Deployable::execSetTaskForce(FFrame&, void* const) +native function SetTaskForce(TgRepInfo_TaskForce tf); + +// Export UTgRepInfo_Deployable::execGetCurrentLocation(FFrame&, void* const) +native function Vector GetCurrentLocation(); + +// Export UTgRepInfo_Deployable::execGetCurrentHealth(FFrame&, void* const) +native function int GetCurrentHealth(); + +// Export UTgRepInfo_Deployable::execGetCurrentMaxHealth(FFrame&, void* const) +native function int GetCurrentMaxHealth(); + +// Export UTgRepInfo_Deployable::execGetLifespan(FFrame&, void* const) +native function float GetLifespan(); + +// Export UTgRepInfo_Deployable::execGetMaxLifespan(FFrame&, void* const) +native function float GetMaxLifespan(); + +// Export UTgRepInfo_Deployable::execUpdateMapVisibility(FFrame&, void* const) +native function UpdateMapVisibility(TgObject.TgMapTeam MAPTEAM, byte bVisible, float fVisionRange, bool bDetected); + +// Export UTgRepInfo_Deployable::execIsVisibleToAnEnemyTeam(FFrame&, void* const) +native function bool IsVisibleToAnEnemyTeam(); + +// Export UTgRepInfo_Deployable::execIsVisibleToMapTeam(FFrame&, void* const) +native function bool IsVisibleToMapTeam(TgObject.TgMapTeam MAPTEAM); + +// Export UTgRepInfo_Deployable::execIsVisibleToPlayer(FFrame&, void* const) +native function bool IsVisibleToPlayer(TgRepInfo_Player PRI); + +// Export UTgRepInfo_Deployable::execIsVisibleToLocalPlayer(FFrame&, void* const) +native function bool IsVisibleToLocalPlayer(); + +// Export UTgRepInfo_Deployable::execCheckNotifyGroupChanged(FFrame&, void* const) +native function CheckNotifyGroupChanged(); + +simulated event PostBeginPlay() +{ + local TgRepInfo_Game Game; + + Game = TgRepInfo_Game(WorldInfo.GRI); + // End:0x60 + if(Game != none) + { + Game.AddDRI(self); + } + UpdateDeployableLocation(); + SetTimer(0.5000000, true, 'UpdateDeployableLocation'); + //return; +} + +simulated event Destroyed() +{ + local TgRepInfo_Game Game; + + Game = TgRepInfo_Game(WorldInfo.GRI); + // End:0x60 + if(Game != none) + { + Game.RemoveDRI(self); + } + // End:0x8F + if(r_InstigatorInfo != none) + { + r_InstigatorInfo.RemoveMinion(self); + } + super(Actor).Destroyed(); + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x52 + if(VarName == 'r_InstigatorInfo') + { + // End:0x46 + if(r_InstigatorInfo != none) + { + r_InstigatorInfo.AddMinion(self); + } + CheckNotifyGroupChanged(); + return; + } + // End:0x8E + if((VarName == 'r_TaskforceInfo') || VarName == 'r_bOwnedByTaskforce') + { + CheckNotifyGroupChanged(); + return; + } + // End:0xB1 + if(VarName == 'r_DeployableOwner') + { + ReceivedDeployableOwner(); + return; + } + // End:0xD2 + if(VarName == 'r_fLifespanSync') + { + UpdateLifespanTimer(); + } + super(Actor).ReplicatedEvent(VarName); + //return; +} + +simulated function ReceivedDeployableOwner() +{ + // End:0x4B + if(!c_bReceivedOwner && r_DeployableOwner != none) + { + r_DeployableOwner.NotifyGroupChanged(); + c_bReceivedOwner = true; + } + //return; +} + +function UpdateDeployableLocation() +{ + // End:0x29 + if(r_DeployableOwner == none) + { + r_ApproxLocation = vect(0.0000000, 0.0000000, 0.0000000); + } + else + { + r_ApproxLocation = r_DeployableOwner.Location; + } + //return; +} + +function StartLifespanTimer(float fTime) +{ + r_fLifespanInitial = fTime; + SetTimer(r_fLifespanInitial, false, 'LifespanTimer'); + SetTimer(5.0000000, true, 'SyncLifespanTimer'); + SyncLifespanTimer(); + //return; +} + +function SyncLifespanTimer() +{ + r_fLifespanSync = GetRemainingTimeForTimer('LifespanTimer'); + //return; +} + +simulated function UpdateLifespanTimer() +{ + // End:0x53 + if(int(Role) == int(ROLE_SimulatedProxy)) + { + // End:0x3F + if(r_fLifespanSync > float(0)) + { + SetTimer(r_fLifespanSync, false, 'LifespanTimer'); + } + else + { + ClearTimer('LifespanTimer'); + } + } + //return; +} + +simulated function LifespanTimer() +{ + //return; +} + +simulated event SetHUDOverlayDisplayMask(int dodm) +{ + r_nDeployableOverlayDisplayMask = dodm; + bNetDirty = true; + //return; +} + +simulated event SetHUDOverlayIcon(TgObject.DeployableOverlayIcon doi) +{ + r_eDeployableOverlayIcon = doi; + bNetDirty = true; + //return; +} + +simulated event SetHUDOverlayState(TgObject.DeployableOverlayState dos) +{ + r_eDeployableOverlayState = dos; + bNetDirty = true; + //return; +} + +simulated event SetHUDOverlayEnemyViewDist(float enemyViewDist) +{ + r_fDeployableOverlayEnemyViewDist = enemyViewDist; + bNetDirty = true; + //return; +} + +defaultproperties +{ + r_fDeployMaxHealthPCT=1.0000000 + r_fDeployableOverlayEnemyViewDist=1600.0000000 + TickGroup=ETickingGroup.TG_DuringAsyncWork + NetUpdateFrequency=1.0000000 + BotRankId=10678 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgRepInfo_Factory.uc b/exported/TgGame/Classes/TgRepInfo_Factory.uc new file mode 100755 index 00000000..dd812431 --- /dev/null +++ b/exported/TgGame/Classes/TgRepInfo_Factory.uc @@ -0,0 +1,225 @@ +class TgRepInfo_Factory extends ReplicationInfo + native(Game) + hidecategories(Navigation,Movement,Collision); + +enum ReplicatedFactoryState +{ + RFS_None, // 0 + RFS_Vacant, // 1 + RFS_Spawned, // 2 + RFS_OwnedByTF1, // 3 + RFS_OwnedByTF2, // 4 + RFS_MAX // 5 +}; + +var TgRepInfo_Factory.ReplicatedFactoryState s_FactoryState; +var TgRepInfo_Factory.ReplicatedFactoryState r_FactoryState[TgMapTeam]; +var byte r_bVisibleOnMap[TgMapTeam]; +var byte r_bRespawnVisible[TgMapTeam]; +var TgObject.MinimapFactoryType r_MinimapType; +var repnotify TgActorFactory r_FactoryOwner; +var repnotify TgRepInfo_TaskForce r_TaskforceInfo; +var int r_nFactoryId; +var ReplicationInfo r_LastSpawnedRepInfo; +var repnotify float r_fRespawnDelay; +var repnotify float r_fRespawnTimer; + +replication +{ + // Pos:0x000 + if((int(Role) == int(ROLE_Authority)) && bNetInitial) + r_FactoryOwner, r_MinimapType, + r_TaskforceInfo, r_nFactoryId; + + // Pos:0x020 + if(int(Role) == int(ROLE_Authority)) + r_FactoryState, r_LastSpawnedRepInfo, + r_bRespawnVisible, r_bVisibleOnMap, + r_fRespawnDelay, r_fRespawnTimer; +} + +// Export UTgRepInfo_Factory::execUpdateMapVisibility(FFrame&, void* const) +native function UpdateMapVisibility(TgObject.TgMapTeam MAPTEAM, byte bVisible, float fVisionRange, bool bDetected); + +// Export UTgRepInfo_Factory::execIsVisibleToLocalPlayer(FFrame&, void* const) +native function bool IsVisibleToLocalPlayer(); + +// Export UTgRepInfo_Factory::execGetRespawnElapsedPercent(FFrame&, void* const) +native function float GetRespawnElapsedPercent(); + +function InitFor(TgActorFactory Factory) +{ + local TgRepInfo_Game Game; + + Game = TgRepInfo_Game(WorldInfo.GRI); + // End:0xBC + if(Game != none) + { + r_TaskforceInfo = Game.GetTaskForce(int(Factory.s_nTaskForce), true); + // End:0xBC + if(r_TaskforceInfo != none) + { + r_TaskforceInfo.m_Factories.AddItem(self); + } + } + r_MinimapType = Factory.m_MinimapType; + r_nFactoryId = Factory.s_nFactoryId; + r_FactoryOwner = Factory; + //return; +} + +simulated function PostBeginPlay() +{ + super(Actor).PostBeginPlay(); + // End:0x46 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + SetTimer(0.5000000, true, 'UpdateInWorldIndicators'); + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x4E + if(VarName == 'r_TaskforceInfo') + { + // End:0x49 + if(r_TaskforceInfo != none) + { + r_TaskforceInfo.m_Factories.AddItem(self); + } + return; + } + else + { + // End:0xAA + if(VarName == 'r_FactoryOwner') + { + // End:0xA7 + if(r_FactoryOwner != none) + { + r_FactoryOwner.m_FRI = self; + SetTimer(0.5000000, true, 'UpdateInWorldIndicators'); + } + } + else + { + // End:0xF2 + if(VarName == 'r_fRespawnTimer') + { + // End:0xE8 + if(r_fRespawnTimer > float(0)) + { + StartRespawnTimer(r_fRespawnTimer); + } + else + { + StopRespawnTimer(); + } + } + } + } + super(Actor).ReplicatedEvent(VarName); + //return; +} + +simulated event Destroyed() +{ + // End:0x32 + if(r_TaskforceInfo != none) + { + r_TaskforceInfo.m_Factories.RemoveItem(self); + } + super(Actor).Destroyed(); + //return; +} + +simulated function UpdateInWorldIndicators() +{ + local TgPlayerController TgPC; + local int LocalTeamIdx; + local TgRepInfo_Player PRI; + + LocalTeamIdx = -1; + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0xE0 + if(TgPC != none) + { + PRI = TgRepInfo_Player(TgPC.PlayerReplicationInfo); + // End:0xE0 + if((PRI != none) && PRI.r_TaskForce != none) + { + LocalTeamIdx = int(PRI.r_TaskForce.r_MapTeam); + } + } + // End:0xF5 + if(LocalTeamIdx == -1) + { + return; + } + // End:0x292 + if(false) + { + // End:0x292 + if((((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && r_FactoryOwner != none) && r_FactoryOwner.m_WorldIconSprite != none) && r_FactoryOwner.m_WorldIconSprite.Sprite != none) + { + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x292 + if(TgPC != none) + { + LocalTeamIdx = int(TgRepInfo_Player(TgPC.PlayerReplicationInfo).r_TaskForce.r_MapTeam); + r_FactoryOwner.m_WorldIconSprite.SetHidden((int(r_FactoryState[LocalTeamIdx]) != int(2)) || !TgPC.m_bDetailedViewEnabled); + } + } + } + // End:0x34A + if(TgBotFactory(r_FactoryOwner) != none) + { + // End:0x31D + if((int(r_FactoryState[LocalTeamIdx]) == int(1)) && int(r_bRespawnVisible[LocalTeamIdx]) != int(0)) + { + TgBotFactory(r_FactoryOwner).UpdateRespawnTimeIndicator(GetRespawnElapsedPercent()); + } + else + { + TgBotFactory(r_FactoryOwner).UpdateRespawnTimeIndicator(0.0000000); + } + } + //return; +} + +simulated event StartRespawnTimer(float fSeconds) +{ + // End:0x4D + if(int(Role) == int(ROLE_Authority)) + { + r_fRespawnDelay = fSeconds; + r_fRespawnTimer = fSeconds; + SetTimer(5.0000000, true, 'UpdateRespawnTimer'); + } + SetTimer(fSeconds, false, 'StopRespawnTimer'); + //return; +} + +function UpdateRespawnTimer() +{ + r_fRespawnTimer = GetRemainingTimeForTimer('StopRespawnTimer'); + //return; +} + +simulated event StopRespawnTimer() +{ + ClearTimer('UpdateRespawnTimer'); + ClearTimer('StopRespawnTimer'); + //return; +} + +defaultproperties +{ + r_bVisibleOnMap[0]=1 + r_bVisibleOnMap[1]=1 + r_bVisibleOnMap[2]=1 + TickGroup=ETickingGroup.TG_DuringAsyncWork + NetUpdateFrequency=2.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgRepInfo_Game.uc b/exported/TgGame/Classes/TgRepInfo_Game.uc new file mode 100755 index 00000000..56e71a21 --- /dev/null +++ b/exported/TgGame/Classes/TgRepInfo_Game.uc @@ -0,0 +1,1131 @@ +class TgRepInfo_Game extends GameReplicationInfo + native(Game) + config(Game) + hidecategories(Navigation,Movement,Collision); + +const TG_MAX_MAP_OBJECTIVES = 75; +const TG_MAX_CAPTURE_POINTS = 5; + +enum MissionTimerState +{ + MTS_STOPPED, // 0 + MTS_RUNNING, // 1 + MTS_PAUSED, // 2 + MTS_MAX // 3 +}; + +enum MAP_LANE +{ + MAP_LANE_NONE, // 0 + MAP_LANE_LEFT, // 1 + MAP_LANE_MIDDLE, // 2 + MAP_LANE_RIGHT, // 3 + MAP_LANE_MAX // 4 +}; + +enum EFlagState +{ + FLAG_Home, // 0 + FLAG_HeldFriendly, // 1 + FLAG_HeldEnemy, // 2 + FLAG_Down, // 3 + FLAG_MAX // 4 +}; + +struct native GraphData +{ + var int XP; + var int Gold; + var int Time; + + structdefaultproperties + { + XP=0 + Gold=0 + Time=0 + } +}; + +struct native BotDifficultyDebugData +{ + var bool CurrentlyActive; + var bool DisparityDetected; + var bool ChangesLockedOut; + var int TimeBeforeTrigger; + var TgAIController_Behavior.EBotDifficultyLevel TaskForce1BotDifficulty; + var TgAIController_Behavior.EBotDifficultyLevel TaskForce2BotDifficulty; + var float TaskForce1Skill; + var float TaskForce2Skill; + var SkillLevelPercentageData SkillPercentages[2]; + + structdefaultproperties + { + CurrentlyActive=false + DisparityDetected=false + ChangesLockedOut=false + TimeBeforeTrigger=0 + TaskForce1BotDifficulty=EBotDifficultyLevel.AIDifficulty_Practice + TaskForce2BotDifficulty=EBotDifficultyLevel.AIDifficulty_Practice + TaskForce1Skill=0.0000000 + TaskForce2Skill=0.0000000 + SkillPercentages[0]=(NumDeathsPercentage=0.0000000,DamagePercentage=0.0000000,KillsPercentage=0.0000000,SoloKillsPercentage=0.0000000,AssistsPercentage=0.0000000,HealingPercentage=0.0000000,CreditsPercentage=0.0000000,ObjectiveTimePercentage=0.0000000,ShieldingPercentage=0.0000000,KillstreakMultiplier=0.0000000) + SkillPercentages[1]=(NumDeathsPercentage=0.0000000,DamagePercentage=0.0000000,KillsPercentage=0.0000000,SoloKillsPercentage=0.0000000,AssistsPercentage=0.0000000,HealingPercentage=0.0000000,CreditsPercentage=0.0000000,ObjectiveTimePercentage=0.0000000,ShieldingPercentage=0.0000000,KillstreakMultiplier=0.0000000) + } +}; + +var array m_GraphData; +var GraphData r_LastDataPoint; +var float m_GraphUpdateWaitTime; +var repnotify TgObject.TG_GAME_TYPE r_GameType; +var TgObject.INITIALIZEABLE_BOOL r_eTalentsEnabled; +var TgRepInfo_Game.MissionTimerState r_nMissionTimerState; +var repnotify TgObject.GameTimerState r_eGameTimerState; +var TgRepInfo_Game.MissionTimerState r_nRoundLimitTimerState; +var TgRepInfo_Game.MissionTimerState r_nSecondaryTimerState; +var byte r_nLastRoundAttacker; +var byte r_nLastRoundWinner; +var TgRepInfo_Game.EFlagState r_FlagState[2]; +var repnotify TgObject.EGameEnvironmentRule r_GameEnvironmentRule; +var TgObject.EGameRespawnRule r_GameRespawnRule; +var TgObject.EGameMode r_GameMode; +var bool r_bIsMission; +var bool r_bBlockCreditGain; +var bool r_bBlockEnergyGain; +var bool r_bOvertime; +var bool r_bCapturePointOvertime; +var bool r_bRoundEnding; +var bool r_bFadeOutAtRoundEnd; +var repnotify bool r_bIntroPlayed; +var repnotify bool r_bUsePointsMode; +var bool r_bUltimatesLocked; +var bool r_bEnableDistanceFOW; +var repnotify bool r_bSpawnGatesOpen; +var repnotify bool r_bAttackersSpawnGatesOpen; +var repnotify bool r_bDefendersSpawnGatesOpen; +var bool r_bForwardProgress; +var bool r_bServerFlagSprint; +var bool r_bServerFlagMinimapTeamVisibility; +var bool r_bForce3P; +var bool r_bForce1P; +var bool r_bForceOutOfCombatSprint; +var bool r_bAutoMelee; +var bool r_bShowProjectileProximityDistance; +var bool r_bDisableProjectileProximityDistance; +var repnotify bool r_bShowHeadMesh; +var bool m_fFogSettingsSaved; +var config bool r_bUseInstantFireMeshTrace; +var config bool r_bAllowWeaponLagPrediction; +var bool r_bSiegeEngineRequiresAlliesToMove; +var bool r_bSiegeEngineMovementPaused; +var bool r_bSiegeEngineMovementPausedAfterDamagingGate; +var bool r_bFogConverging; +var bool r_bFogEnded; +var bool r_bCheckpoint1Reached; +var bool r_bCheckpoint2Reached; +var private bool r_bEnableHeadshots; +var bool r_bAllowPlayerMounting; +var bool r_bKillCamEnabled; +var bool r_bAttackersKillCamEnabled; +var bool r_bDefendersKillCamEnabled; +var bool r_bBlockKillCam; +var bool r_bIsFirstRound; +var bool r_bGhostMountingEnabled; +var bool r_bSpawnGatesOpenedAtLeastOnce; +var float r_fMissionRemainingTime; +var repnotify int r_nMissionTimerStateChange; +var float r_fMissionTime; +var float c_fMissionTime; +var float c_fMissionTimeSeconds; +var float c_fAIBotDelaySeconds; +var float r_fRoundLimitElapsed; +var float r_fRoundLimitDuration; +var float r_fSecondaryRemainingTime; +var repnotify int r_nSecondaryTimerStateChange; +var float r_fSecondaryTime; +var float c_fSecondaryMissionTime; +var float c_fSecondaryMissionTimeSeconds; +var float r_fCapturePointOvertimeStartDuration; +var repnotify int r_nCapturePointOvertimeStateChange; +var float r_fPayloadOvertimeStartDuration; +var repnotify int r_nPayloadOvertimeStateChange; +var float r_fTF1PayloadPushDistance; +var int r_nPurchaseTime; +var float m_fPurchaseTimer; +var repnotify TgRepInfo_TaskForce r_AttackingTaskForce; +var repnotify TgRepInfo_TaskForce r_CapturingTaskForce; +var int r_nChaosRemainingAttackDefendTime; +var int r_nCapturePoints[5]; +var TgRepInfo_TaskForce r_Winner; +var float r_fPhysicsThreshold; +var string r_sQueueName; +var int r_nPlayOfTheGamePawnId; +var int r_nPlayOfTheGameMapLane; +var float r_fPlayOfTheGameTimeStamp; +var TgPlayOfTheGameCamera c_PlayOfTheGameCamera; +var init transient array m_Deployables; +var init transient array m_Projectiles; +var init transient array m_Destructibles; +var init transient array m_DRIArray; +var init transient array m_CPRIArray; +var init transient array m_CapturePoints; +var init transient array m_MovableProjBlockers; +var repnotify transient int r_nCurrentCheckpoint[2]; +var transient int c_nNextClientOnlyProjectileInstanceId; +var TgPawn_LanePusher r_LanePusher; +var TgPawn_LanePusherBase r_LanePusher1; +var TgPawn_LanePusherBase r_LanePusher2; +var TgPawn r_SquadTarget1; +var TgPawn r_SquadTarget2; +var float r_fLastSquadTargetUpdate1; +var float r_fLastSquadTargetUpdate2; +var float r_fSpeedScale; +var float r_fPayloadProgressPercent; +var float r_fCheckpoint1Percent; +var float r_fCheckpoint2Percent; +var float r_fServerFlagDamageMultiplier; +var float r_fServerFlagGroundSpeedModifier; +var float r_fServerFlagAutoHealingMultiplier; +var TgPawn_SiegeWall r_pSiegeWallTF1[3]; +var TgPawn_SiegeWall r_pSiegeWallTF2[3]; +var float m_fSavedFogDensity; +var float m_fSavedFogStartDistance; +var Color m_SavedFogColor; +var int r_nRemainingObjectiveTime; +var int r_nTotalObjectiveTime; +var float r_fPlayerViewDistance; +var float r_fVisibilityVolumeViewDistance; +var float r_fPushTimer; +var float r_fWeaponMaxLagCompensation; +var float m_fVaultImmuneToSiegeEngineHealth; +var float r_fConvergeDistance; +var float r_fConvergeStartDistance; +var float r_fFogConvergeInterval; +var repnotify int r_nTaskForcePushSuccessful; +var repnotify int r_nTaskForceDefenseSuccessful; +var int r_nMapLane; +var float r_fGlobalFrictionFalling; +var float r_fGlobalFrictionFlying; +var BotDifficultyDebugData r_DifficultyDebugData; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_AttackingTaskForce, r_CapturingTaskForce, + r_DifficultyDebugData, r_FlagState, + r_GameEnvironmentRule, r_GameMode, + r_GameRespawnRule, r_LanePusher, + r_LanePusher1, r_LanePusher2, + r_Winner, r_bAllowPlayerMounting, + r_bAllowWeaponLagPrediction, r_bAttackersKillCamEnabled, + r_bAttackersSpawnGatesOpen, r_bAutoMelee, + r_bBlockCreditGain, r_bBlockKillCam, + r_bCheckpoint1Reached, r_bCheckpoint2Reached, + r_bDefendersKillCamEnabled, r_bDefendersSpawnGatesOpen, + r_bDisableProjectileProximityDistance, r_bEnableDistanceFOW, + r_bEnableHeadshots, r_bFadeOutAtRoundEnd, + r_bFogConverging, r_bFogEnded, + r_bForce1P, r_bForce3P, + r_bForceOutOfCombatSprint, r_bForwardProgress, + r_bIntroPlayed, r_bIsFirstRound, + r_bKillCamEnabled, r_bRoundEnding, + r_bServerFlagMinimapTeamVisibility, r_bServerFlagSprint, + r_bShowHeadMesh, r_bShowProjectileProximityDistance, + r_bSiegeEngineMovementPaused, r_bSiegeEngineMovementPausedAfterDamagingGate, + r_bSiegeEngineRequiresAlliesToMove, r_bSpawnGatesOpen, + r_bSpawnGatesOpenedAtLeastOnce, r_bUltimatesLocked, + r_bUseInstantFireMeshTrace, r_bUsePointsMode, + r_eGameTimerState, r_eTalentsEnabled, + r_fCheckpoint1Percent, r_fCheckpoint2Percent, + r_fConvergeDistance, r_fConvergeStartDistance, + r_fFogConvergeInterval, r_fMissionRemainingTime, + r_fMissionTime, r_fPayloadProgressPercent, + r_fPlayerViewDistance, r_fRoundLimitDuration, + r_fRoundLimitElapsed, r_fSecondaryRemainingTime, + r_fSecondaryTime, r_fSpeedScale, + r_fTF1PayloadPushDistance, r_fWeaponMaxLagCompensation, + r_nChaosRemainingAttackDefendTime, r_nCurrentCheckpoint, + r_nLastRoundAttacker, r_nLastRoundWinner, + r_nMapLane, r_nMissionTimerState, + r_nMissionTimerStateChange, r_nPurchaseTime, + r_nRemainingObjectiveTime, r_nRoundLimitTimerState, + r_nSecondaryTimerState, r_nSecondaryTimerStateChange, + r_nTaskForceDefenseSuccessful, r_nTaskForcePushSuccessful, + r_nTotalObjectiveTime, r_pSiegeWallTF1, + r_pSiegeWallTF2; + + // Pos:0x011 + if(int(Role) == int(ROLE_Authority)) + r_GameType, r_bIsMission, + r_fPhysicsThreshold, r_sQueueName; + + // Pos:0x022 + if((((int(Role) == int(ROLE_Authority)) && !bNetTimelapse) && !bNetTimelapseInit) && !bNetTimelapsePost) + r_fPlayOfTheGameTimeStamp, r_nPlayOfTheGameMapLane, + r_nPlayOfTheGamePawnId; + + // Pos:0x066 + if((int(Role) == int(ROLE_Authority)) && (bNetDirty || bNetTimelapseInit) || bNetTimelapsePost) + r_bCapturePointOvertime, r_bOvertime, + r_fCapturePointOvertimeStartDuration, r_fPayloadOvertimeStartDuration, + r_nCapturePointOvertimeStateChange, r_nPayloadOvertimeStateChange; + + // Pos:0x0A4 + if((int(Role) == int(ROLE_Authority)) && bNetDirty) + r_bGhostMountingEnabled, r_fGlobalFrictionFalling, + r_fGlobalFrictionFlying; +} + +// Export UTgRepInfo_Game::execGetDeployableCount(FFrame&, void* const) +native function int GetDeployableCount(); + +// Export UTgRepInfo_Game::execGetDeployable(FFrame&, void* const) +native function TgDeployable GetDeployable(int nIndex); + +// Export UTgRepInfo_Game::execGetProjectile(FFrame&, void* const) +native function TgProjectile GetProjectile(int nIndex); + +// Export UTgRepInfo_Game::execGetTaskForceFor(FFrame&, void* const) +native function TgRepInfo_TaskForce GetTaskForceFor(const Actor Actor); + +// Export UTgRepInfo_Game::execGetTaskForce(FFrame&, void* const) +native function TgRepInfo_TaskForce GetTaskForce(int nTaskForceNum, optional bool bCreate = false); + +// Export UTgRepInfo_Game::execCreateTaskForce(FFrame&, void* const) +native function TgRepInfo_TaskForce CreateTaskForce(int nTaskForceNum); + +// Export UTgRepInfo_Game::execTaskForceEnumerate(FFrame&, void* const) +native function bool TaskForceEnumerate(out TgRepInfo_TaskForce rpTaskForce, out int rnTaskForceNum, optional bool bPlayerOnly = true); + +// Export UTgRepInfo_Game::execGetNumNearbyPlayers(FFrame&, void* const) +native function int GetNumNearbyPlayers(int nTaskForceNum, Vector vLocation, float fDist); + +// Export UTgRepInfo_Game::execGetOpposingTeamsPawns(FFrame&, void* const) +native function GetOpposingTeamsPawns(const TgPawn instigatingPawn, out array enemyPawns); + +// Export UTgRepInfo_Game::execGetAttackingTaskForce(FFrame&, void* const) +native final function TgRepInfo_TaskForce GetAttackingTaskForce(); + +// Export UTgRepInfo_Game::execGetDefendingTaskForce(FFrame&, void* const) +native final function TgRepInfo_TaskForce GetDefendingTaskForce(); + +// Export UTgRepInfo_Game::execCheckIsEnemy(FFrame&, void* const) +native simulated function bool CheckIsEnemy(const Actor A, const Actor B); + +// Export UTgRepInfo_Game::execUpdateGameClockUI(FFrame&, void* const) +native function UpdateGameClockUI(); + +// Export UTgRepInfo_Game::execUpdateGameScoreUI(FFrame&, void* const) +native function UpdateGameScoreUI(); + +// Export UTgRepInfo_Game::execUpdateGameTransitionUI(FFrame&, void* const) +native function UpdateGameTransitionUI(); + +// Export UTgRepInfo_Game::execGameStateChanged(FFrame&, void* const) +native function GameStateChanged(); + +// Export UTgRepInfo_Game::execGameTypeSet(FFrame&, void* const) +native function GameTypeSet(); + +// Export UTgRepInfo_Game::execSpawnGatesOpenChanged(FFrame&, void* const) +native function SpawnGatesOpenChanged(); + +// Export UTgRepInfo_Game::execAttackersSpawnGatesOpenChanged(FFrame&, void* const) +native function AttackersSpawnGatesOpenChanged(); + +// Export UTgRepInfo_Game::execDefendersSpawnGatesOpenChanged(FFrame&, void* const) +native function DefendersSpawnGatesOpenChanged(); + +// Export UTgRepInfo_Game::execGetClientSpawnedProjectile(FFrame&, void* const) +native final function TgProj_Simulated GetClientSpawnedProjectile(int ClientFireRequestId); + +// Export UTgRepInfo_Game::execGetSimulatedProjectile(FFrame&, void* const) +native final function TgProj_Simulated GetSimulatedProjectile(int nProjectileId); + +// Export UTgRepInfo_Game::execSpawnSimulatedProjectile(FFrame&, void* const) +native function TgProj_Simulated SpawnSimulatedProjectile(int nProjectileInstanceId, int nFireModeId, Actor pOwner, Vector vLocation, Vector vRotation, optional int nProjectileIdOverride = 0, optional bool bPredictStartLocationBasedOnPing = false); + +// Export UTgRepInfo_Game::execGetLane(FFrame&, void* const) +native function TgRepInfo_Game.MAP_LANE GetLane(int nLane, TgRepInfo_TaskForce tfri); + +// Export UTgRepInfo_Game::execSiegeEngineRequiresAlliesToMove(FFrame&, void* const) +native function bool SiegeEngineRequiresAlliesToMove(); + +// Export UTgRepInfo_Game::execRecalcRespawnTimers(FFrame&, void* const) +native final function RecalcRespawnTimers(); + +// Export UTgRepInfo_Game::execAllowHeadShots(FFrame&, void* const) +native final function bool AllowHeadShots(); + +// Export UTgRepInfo_Game::execGetActiveCapturePoint(FFrame&, void* const) +native function TgChaosCapturePoint GetActiveCapturePoint(); + +simulated event ReplicatedEvent(name VarName) +{ + local TgPlayerController TgPC; + local TgInventoryManager tginv; + + // End:0x26 + if(VarName == 'r_nMissionTimerStateChange') + { + InitMissionTime(); + return; + } + else + { + // End:0x4C + if(VarName == 'r_nSecondaryTimerStateChange') + { + InitSecondaryMissionTime(); + return; + } + else + { + // End:0x1AB + if(VarName == 'r_bIntroPlayed') + { + UpdateGameTransitionUI(); + // End:0x1A6 + if((int(WorldInfo.NetMode) == int(NM_Client)) && r_bIntroPlayed) + { + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x1A6 + if(((TgPC != none) && TgPC.Pawn != none) && TgPC.Pawn.InvManager != none) + { + tginv = TgInventoryManager(TgPC.Pawn.InvManager); + // End:0x1A6 + if(tginv != none) + { + tginv.ServerSetInventoryDirty(); + } + } + } + return; + } + else + { + // End:0x1D1 + if(VarName == 'r_eGameTimerState') + { + GameStateChanged(); + return; + } + else + { + // End:0x1F7 + if(VarName == 'r_GameType') + { + GameTypeSet(); + return; + } + else + { + // End:0x226 + if(VarName == 'r_AttackingTaskForce') + { + UpdateAttackingTaskforce(r_AttackingTaskForce); + return; + } + else + { + // End:0x24A + if(VarName == 'r_GameEnvironmentRule') + { + GameEnvironmentRuleUpdated(); + } + else + { + // End:0x26E + if(VarName == 'r_bSpawnGatesOpen') + { + SpawnGatesOpenChanged(); + } + else + { + // End:0x292 + if(VarName == 'r_bAttackersSpawnGatesOpen') + { + AttackersSpawnGatesOpenChanged(); + } + else + { + // End:0x2B6 + if(VarName == 'r_bDefendersSpawnGatesOpen') + { + DefendersSpawnGatesOpenChanged(); + } + else + { + // End:0x31C + if(VarName == 'r_nTaskForcePushSuccessful') + { + // End:0x2F4 + if(r_nTaskForcePushSuccessful == 1) + { + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_CaptureAndPayloadSuccessfulPushTF1', self); + } + else + { + // End:0x319 + if(r_nTaskForcePushSuccessful == 2) + { + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_CaptureAndPayloadSuccessfulPushTF2', self); + } + } + } + else + { + // End:0x382 + if(VarName == 'r_nTaskForceDefenseSuccessful') + { + // End:0x35A + if(r_nTaskForceDefenseSuccessful == 1) + { + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF1', self); + } + else + { + // End:0x37F + if(r_nTaskForceDefenseSuccessful == 2) + { + TriggerGlobalEventClass(Class'TgGame.TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF2', self); + } + } + } + else + { + // End:0x3C0 + if(VarName == 'r_bShowHeadMesh') + { + // End:0x3B3 + if(r_bShowHeadMesh) + { + ShowHeadMesh(); + } + else + { + HideHeadMesh(); + } + } + else + { + // End:0x3FD + if(VarName == 'r_bOvertime') + { + // End:0x3FD + if(r_bOvertime) + { + self.AddPotGEventToAllPlayers(3); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated function ShowHeadMesh() +{ + local TgPawn_Character TgPC; + + // End:0x56 + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn_Character', TgPC) + { + TgPC.ShowHeadMesh(); + } + //return; +} + +simulated function HideHeadMesh() +{ + local TgPawn_Character TgPC; + + // End:0x56 + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn_Character', TgPC) + { + TgPC.HideHeadMesh(); + } + //return; +} + +simulated function SetGameEnvironmentRule(TgObject.EGameEnvironmentRule Rule) +{ + r_GameEnvironmentRule = Rule; + GameEnvironmentRuleUpdated(); + //return; +} + +simulated function SetGameRespawnRule(TgObject.EGameRespawnRule Rule) +{ + local bool bRecalcRespawnTimers; + + bRecalcRespawnTimers = (int(Role) == int(ROLE_Authority)) && int(r_GameRespawnRule) != int(Rule); + r_GameRespawnRule = Rule; + // End:0x63 + if(bRecalcRespawnTimers) + { + RecalcRespawnTimers(); + } + //return; +} + +simulated function SetGameMode(TgObject.EGameMode Mode) +{ + r_GameMode = Mode; + //return; +} + +simulated function OnFogAdded(ExponentialHeightFog Fog) +{ + UpdateFog(Fog); + //return; +} + +simulated function GameEnvironmentRuleUpdated() +{ + UpdateFog(); + //return; +} + +simulated function UpdateFog(optional ExponentialHeightFog Fog) +{ + local ExponentialHeightFog HeightFog; + + // End:0x2C + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return; + } + // End:0x6C + if(Fog == none) + { + // End:0x6B + foreach DynamicActors(Class'Engine.ExponentialHeightFog', HeightFog) + { + Fog = HeightFog; + // End:0x6B + break; + } + } + // End:0x478 + if((Fog != none) && Fog.Component != none) + { + // End:0x33E + if(int(r_GameEnvironmentRule) == int(2)) + { + m_fFogSettingsSaved = true; + m_fSavedFogDensity = Fog.Component.FogDensity; + m_fSavedFogStartDistance = Fog.Component.StartDistance; + m_SavedFogColor = Fog.Component.OppositeLightColor; + Fog.Component.FogDensity = 1.0000000; + Fog.Component.StartDistance = 1500.0000000; + Fog.Component.OppositeLightColor.R *= 0.4000000; + Fog.Component.OppositeLightColor.G *= 0.4000000; + Fog.Component.OppositeLightColor.B *= 0.4000000; + Fog.Component.SetEnabled(false); + Fog.Component.SetEnabled(true); + } + else + { + // End:0x478 + if(m_fFogSettingsSaved) + { + m_fFogSettingsSaved = false; + Fog.Component.FogDensity = m_fSavedFogDensity; + Fog.Component.StartDistance = m_fSavedFogStartDistance; + Fog.Component.OppositeLightColor = m_SavedFogColor; + Fog.Component.SetEnabled(false); + Fog.Component.SetEnabled(true); + } + } + } + //return; +} + +simulated function UpdateAttackingTaskforce(TgRepInfo_TaskForce NewAttackingTaskForce) +{ + // End:0x27 + if(int(Role) == int(ROLE_Authority)) + { + r_AttackingTaskForce = NewAttackingTaskForce; + } + //return; +} + +simulated event PostBeginPlay() +{ + local TgChaosCapturePoint pPoint; + local TgRepInfo_CapturePoint CPRI; + local TgDestructible destructible; + local TgRepInfo_Deployable DRI; + local TgPlayerController TgPC; + local TgPlayOfTheGameCamera PotGCamera; + + super.PostBeginPlay(); + // End:0x37 + foreach DynamicActors(Class'TgGame.TgRepInfo_CapturePoint', CPRI) + { + AddCPRI(CPRI); + } + // End:0x65 + foreach DynamicActors(Class'TgGame.TgChaosCapturePoint', pPoint) + { + AddCapturePoint(pPoint); + } + // End:0x93 + foreach DynamicActors(Class'TgGame.TgDestructible', destructible) + { + AddDestructible(destructible); + } + // End:0xC1 + foreach DynamicActors(Class'TgGame.TgRepInfo_Deployable', DRI) + { + AddDRI(DRI); + } + // End:0xEF + foreach DynamicActors(Class'TgGame.TgPlayOfTheGameCamera', PotGCamera) + { + c_PlayOfTheGameCamera = PotGCamera; + } + // End:0x14F + if(int(Role) != int(ROLE_Authority)) + { + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x14F + if(TgPC != none) + { + TgPC.ServerRequestGraphData(); + } + } + UpdateFog(); + SetRTPCValue('IsPosition3D', 0.0000000); + //return; +} + +simulated function InitMissionTime() +{ + c_fMissionTime = r_fMissionRemainingTime; + c_fMissionTimeSeconds = WorldInfo.TimeSeconds; + // End:0x7B + if((int(r_nMissionTimerState) == int(1)) || int(r_nSecondaryTimerState) == int(1)) + { + SetTimer(0.5000000, false, 'UpdateMissionTimer'); + } + else + { + UpdateMissionTimer(); + ClearTimer('UpdateMissionTimer'); + } + //return; +} + +simulated function InitSecondaryMissionTime() +{ + c_fSecondaryMissionTime = r_fSecondaryRemainingTime; + c_fSecondaryMissionTimeSeconds = WorldInfo.TimeSeconds; + // End:0x7B + if((int(r_nMissionTimerState) == int(1)) || int(r_nSecondaryTimerState) == int(1)) + { + SetTimer(0.5000000, false, 'UpdateMissionTimer'); + } + else + { + UpdateMissionTimer(true); + ClearTimer('UpdateMissionTimer'); + } + //return; +} + +simulated function UpdateMissionTimer(optional bool bForcePrimary, optional bool bForceSecondary) +{ + local float fTimeRemaining; + + // End:0x9A + if((int(r_nMissionTimerState) == int(1)) || bForcePrimary) + { + fTimeRemaining = r_fMissionRemainingTime - (WorldInfo.TimeSeconds - c_fMissionTimeSeconds); + c_fMissionTime = ((fTimeRemaining > 0.0000000) ? fTimeRemaining : 0.0000000); + UpdateGameClockUI(); + } + // End:0x128 + if((int(r_nSecondaryTimerState) == int(1)) || bForceSecondary) + { + fTimeRemaining = r_fSecondaryRemainingTime - (WorldInfo.TimeSeconds - c_fSecondaryMissionTimeSeconds); + c_fSecondaryMissionTime = ((fTimeRemaining > 0.0000000) ? fTimeRemaining : 0.0000000); + } + //return; +} + +function MissionTimeUpdateAllClients() +{ + TgGame_Mission(WorldInfo.Game).SendMissionTimerNotify(r_nMissionTimerState, TgGame_Mission(WorldInfo.Game).MissionTimeRemaining()); + //return; +} + +simulated function AddDRI(TgRepInfo_Deployable DRI) +{ + // End:0xAA + if(m_DRIArray.Find(DRI) < 0) + { + m_DRIArray[m_DRIArray.Length] = DRI; + // End:0xAA + if(int(Role) == int(ROLE_Authority)) + { + DRI.r_nUniqueDeployableId = TgGame(WorldInfo.Game).GetNextActorInstanceId(); + } + } + //return; +} + +simulated function RemoveDRI(TgRepInfo_Deployable DRI) +{ + m_DRIArray.RemoveItem(DRI); + //return; +} + +simulated function AddCPRI(TgRepInfo_CapturePoint CPRI) +{ + // End:0xCB + if(m_CPRIArray.Find(CPRI) < 0) + { + m_CPRIArray[m_CPRIArray.Length] = CPRI; + // End:0xCB + if(int(Role) == int(ROLE_Authority)) + { + CPRI.r_nUniqueCapturePointId = TgGame(WorldInfo.Game).GetNextActorInstanceId(); + CPRI.bNetDirty = true; + } + } + //return; +} + +simulated function RemoveCPRI(TgRepInfo_CapturePoint CPRI) +{ + m_CPRIArray.RemoveItem(CPRI); + //return; +} + +simulated function AddCapturePoint(TgChaosCapturePoint pPoint) +{ + // End:0xCB + if(m_CapturePoints.Find(pPoint) < 0) + { + m_CapturePoints[m_CapturePoints.Length] = pPoint; + // End:0xCB + if(int(Role) == int(ROLE_Authority)) + { + pPoint.r_nUniqueCapturePointId = TgGame(WorldInfo.Game).GetNextActorInstanceId(); + pPoint.bNetDirty = true; + } + } + //return; +} + +simulated function RemoveCapturePoint(TgChaosCapturePoint pPoint) +{ + m_CapturePoints.RemoveItem(pPoint); + //return; +} + +simulated function AddDestructible(TgDestructible Dest) +{ + // End:0xC3 + if(m_Destructibles.Find(Dest) < 0) + { + m_Destructibles.AddItem(Dest); + // End:0xC3 + if(int(Role) == int(ROLE_Authority)) + { + Dest.r_nActorInstanceId = TgGame(WorldInfo.Game).GetNextActorInstanceId(); + Dest.bNetDirty = true; + } + } + //return; +} + +simulated function RemoveDestructible(TgDestructible Dest) +{ + m_Destructibles.RemoveItem(Dest); + //return; +} + +simulated event int GetNextClientOnlyProjectileInstanceId() +{ + // End:0x2B + if(--c_nNextClientOnlyProjectileInstanceId < (-1 * (1 << 23))) + { + c_nNextClientOnlyProjectileInstanceId = -1; + } + return c_nNextClientOnlyProjectileInstanceId; + //return ReturnValue; +} + +function SetFlagHome(int TeamIndex) +{ + r_FlagState[TeamIndex - 1] = 0; + bForceNetUpdate = true; + //return; +} + +simulated function bool FlagIsHome(int TeamIndex) +{ + return int(r_FlagState[TeamIndex - 1]) == int(0); + //return ReturnValue; +} + +simulated function bool FlagsAreHome() +{ + return (int(r_FlagState[0]) == int(0)) && int(r_FlagState[1]) == int(0); + //return ReturnValue; +} + +function SetFlagHeldFriendly(int TeamIndex) +{ + r_FlagState[TeamIndex - 1] = 1; + //return; +} + +simulated function bool FlagIsHeldFriendly(int TeamIndex) +{ + return int(r_FlagState[TeamIndex - 1]) == int(1); + //return ReturnValue; +} + +function SetFlagHeldEnemy(int TeamIndex) +{ + // End:0x2C + if((TeamIndex - 1) < 2) + { + r_FlagState[TeamIndex - 1] = 2; + } + //return; +} + +simulated function bool FlagIsHeldEnemy(int TeamIndex) +{ + return int(r_FlagState[TeamIndex - 1]) == int(2); + //return ReturnValue; +} + +function SetFlagDown(int TeamIndex) +{ + // End:0x2C + if((TeamIndex - 1) < 2) + { + r_FlagState[TeamIndex - 1] = 3; + } + //return; +} + +simulated function bool FlagIsDown(int TeamIndex) +{ + return int(r_FlagState[TeamIndex - 1]) == int(3); + //return ReturnValue; +} + +event SetCheckpoint(int NewCheckpoint, int Taskforce) +{ + local TgGame_Siege SiegeGame; + + r_nCurrentCheckpoint[Taskforce - 1] = NewCheckpoint; + SiegeGame = TgGame_Siege(WorldInfo.Game); + // End:0x91 + if(SiegeGame != none) + { + SiegeGame.ReachedCheckpoint(Taskforce, NewCheckpoint); + } + //return; +} + +function SetUsePointsMode(bool bValue, int nValue) +{ + local int I; + local TgRepInfo_TaskForce pTRI; + + r_bUsePointsMode = bValue; + I = 0; + J0x20: + + // End:0xB4 [Loop If] + if(I < 3) + { + pTRI = GetTaskForce(I); + // End:0xA6 + if(pTRI != none) + { + pTRI.r_nScore = nValue; + pTRI.bNetDirty = true; + } + I++; + // [Loop Continue] + goto J0x20; + } + bNetDirty = true; + //return; +} + +function DecrementPoints(int nTaskForce, int nValue) +{ + local TgRepInfo_TaskForce pTRI; + + pTRI = GetTaskForce(nTaskForce); + // End:0x77 + if(pTRI != none) + { + pTRI.r_nScore -= nValue; + pTRI.bNetDirty = true; + } + //return; +} + +simulated event float GetMissionTime() +{ + local TgGame_Mission Game; + + // End:0xE6 + if(int(Role) == int(ROLE_Authority)) + { + Game = TgGame_Mission(WorldInfo.Game); + // End:0xDD + if(Game != none) + { + // End:0xBD + if(int(Game.m_eTimerState) > int(2)) + { + return Game.m_fMissionTime - Game.MissionTimeRemaining(); + } + return Game.MissionTimeRemaining(); + } + return 0.0000000; + } + else + { + // End:0x10F + if(int(r_eGameTimerState) > int(2)) + { + return r_fMissionTime - c_fMissionTime; + } + return c_fMissionTime; + } + //return ReturnValue; +} + +function SendPayloadMissionEvent(int nEventId, TgRepInfo_TaskForce attackingTaskForce, TgRepInfo_TaskForce WinningTaskForce) +{ + local TgPlayerController TgPC; + local byte nAttacking, nWinning; + + nAttacking = ((attackingTaskForce != none) ? attackingTaskForce.r_nTaskForce : 255); + nWinning = ((WinningTaskForce != none) ? WinningTaskForce.r_nTaskForce : 255); + // End:0x125 + if((int(Role) == int(ROLE_Authority)) && int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + // End:0x124 + foreach WorldInfo.AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientSendPayloadMissionEvent(nEventId, nAttacking, nWinning); + } + } + ProcessMissionTimerEvent(nEventId, nAttacking, nWinning); + //return; +} + +simulated function ProcessMissionTimerEvent(int nEventId, byte nAttackingTaskForce, byte nWinningTaskForce) +{ + local int I; + local Sequence GameSeq; + local array AllSeqEvents; + local array ActivateIndices; + + GameSeq = WorldInfo.GetGameSequence(); + // End:0x165 + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_PayloadMissionEvents', true, AllSeqEvents); + ActivateIndices[0] = nEventId; + I = 0; + J0x8A: + + // End:0x165 [Loop If] + if(I < AllSeqEvents.Length) + { + TgSeqEvent_PayloadMissionEvents(AllSeqEvents[I]).UpdateTaskForceAttackValue(nAttackingTaskForce); + TgSeqEvent_PayloadMissionEvents(AllSeqEvents[I]).UpdateTaskForceWonValue(nWinningTaskForce); + TgSeqEvent_PayloadMissionEvents(AllSeqEvents[I]).CheckActivate(self, self, false, ActivateIndices); + I++; + // [Loop Continue] + goto J0x8A; + } + } + //return; +} + +function SetEnableHeadshots(bool bEnable) +{ + r_bEnableHeadshots = bEnable; + //return; +} + +event AddPotGEventToAllPlayers(TgObject.EPlayOfTheGameEventType potgEvent) +{ + local int I; + local TgRepInfo_Player PRI; + + I = 0; + J0x0B: + + // End:0x8F [Loop If] + if(I < PRIArray.Length) + { + PRI = TgRepInfo_Player(PRIArray[I]); + // End:0x81 + if(PRI != none) + { + PRI.AddPlayOfTheGameEvent(potgEvent); + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +// Export UTgRepInfo_Game::execAllowPlayerMounting(FFrame&, void* const) +native function bool AllowPlayerMounting(); + +defaultproperties +{ + r_bIsMission=true + r_bEnableDistanceFOW=true + r_bServerFlagSprint=true + r_bServerFlagMinimapTeamVisibility=true + r_bAutoMelee=true + r_bShowHeadMesh=true + r_bAllowWeaponLagPrediction=true + r_bKillCamEnabled=true + c_fAIBotDelaySeconds=30.0000000 + r_nPurchaseTime=120 + m_fPurchaseTimer=120.0000000 + r_nPlayOfTheGameMapLane=-1 + c_nNextClientOnlyProjectileInstanceId=-1 + r_fSpeedScale=1.0000000 + r_fServerFlagDamageMultiplier=1.0000000 + r_fServerFlagGroundSpeedModifier=1.0000000 + r_fServerFlagAutoHealingMultiplier=1.0000000 + r_fWeaponMaxLagCompensation=0.3000000 + m_fVaultImmuneToSiegeEngineHealth=1.0000000 + r_fFogConvergeInterval=1.0000000 + r_DifficultyDebugData=(CurrentlyActive=true,DisparityDetected=false,ChangesLockedOut=false,TimeBeforeTrigger=0,TaskForce1BotDifficulty=EBotDifficultyLevel.AIDifficulty_Medium1,TaskForce2BotDifficulty=EBotDifficultyLevel.AIDifficulty_Medium1,TaskForce1Skill=0.0000000,TaskForce2Skill=0.0000000,SkillPercentages=(NumDeathsPercentage=0.0000000,DamagePercentage=0.0000000,KillsPercentage=0.0000000,SoloKillsPercentage=0.0000000,AssistsPercentage=0.0000000,HealingPercentage=0.0000000,CreditsPercentage=0.0000000,ObjectiveTimePercentage=0.0000000,ShieldingPercentage=0.0000000,KillstreakMultiplier=0.0000000),SkillPercentages[1]=(NumDeathsPercentage=0.0000000,DamagePercentage=0.0000000,KillsPercentage=0.0000000,SoloKillsPercentage=0.0000000,AssistsPercentage=0.0000000,HealingPercentage=0.0000000,CreditsPercentage=0.0000000,ObjectiveTimePercentage=0.0000000,ShieldingPercentage=0.0000000,KillstreakMultiplier=0.0000000)) + bReplicateMovement=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgRepInfo_Player.uc b/exported/TgGame/Classes/TgRepInfo_Player.uc new file mode 100755 index 00000000..1fed6c73 --- /dev/null +++ b/exported/TgGame/Classes/TgRepInfo_Player.uc @@ -0,0 +1,1271 @@ +class TgRepInfo_Player extends PlayerReplicationInfo + native(Game) + nativereplication + hidecategories(Navigation,Movement,Collision); + +const MAX_DRAWN_CARDS = 5; +const BASE_DRAWN_CARDS = 3; +const MAX_DECK_SLOTS = 5; +const MAX_MARKED_TARGETS = 5; +const CARD_PROPERTY_START = 1710; +const MAX_TRACKED_PROJECTILES = 15; +const TG_EQP_POINT_MAX = 33; +const TG_MAX_PING_INFO = 4; +const TG_ITEM_STORE_MAX = 6; +const TG_ACTIVE_ITEMS_MAX = 3; +const TG_CONSUMABLE_MAX = 2; +const TG_GENERAL_STATS_MAX = 4; +const TG_PROPS_MAX = 20; +const TG_ITEM_COUNT_MAX = 4; +const TG_SURRENDER_VOTE_NONE = 0x00; +const TG_SURRENDER_VOTE_YES = 0x01; +const TG_SURRENDER_VOTE_NO = 0x02; +const MAX_SIM_PROJ_OVERRIDES = 8; +const MAX_CORE_STATS = 18; +const MAX_STATS_DEVICES = 9; +const NUM_SCORE_TYPES = 22; + +enum SCORE_TYPE +{ + STYPE_REPPTS, // 0 + STYPE_KILLS, // 1 + STYPE_ASSISTS, // 2 + STYPE_DAMAGETAKEN, // 3 + STYPE_DAMAGE, // 4 + STYPE_BUFFVALUE, // 5 + STYPE_HEALING, // 6 + STYPE_DEFENSE, // 7 + STYPE_DEATHS, // 8 + STYPE_OBJS, // 9 + STYPE_KILLS_BOT, // 10 + STYPE_EARNED_XP, // 11 + STYPE_EARNED_GOLD, // 12 + STYPE_CURRENT_GOLD, // 13 + STYPE_GOLD_PER_MIN, // 14 + STYPE_XP_PER_MIN, // 15 + STYPE_PLAYER_DMG, // 16 + STYPE_BOT_DMG, // 17 + STYPE_STRUCT_DMG, // 18 + STYPE_OBJ_ASSISTS, // 19 + STYPE_KILLS_SOLO, // 20 + STYPE_DMG_MITIGATED, // 21 + STYPE_MAX // 22 +}; + +enum DEVICE_STATS +{ + DS_ID, // 0 + DS_DAMAGE, // 1 + DS_HEALING, // 2 + DS_PLAYER_KILLS, // 3 + DS_BOT_KILLS, // 4 + DS_DPM, // 5 + DS_HPM, // 6 + DS_MODE_COUNT, // 7 + DS_BUFF_VALUE, // 8 + DS_MAX // 9 +}; + +enum GAME_MODE_INSTRUCTION +{ + GMI_NONE, // 0 + GMI_CAPTURE_POINT, // 1 + GMI_PUSH_PAYLOAD, // 2 + GMI_DEFEND_AGAINST_PAYLOAD, // 3 + GMI_MAX // 4 +}; + +struct native DeviceTeamInfo +{ + var int Power; + var int CurrentDeviceId; + var int LastKnownDeviceId[TgMapTeam]; + var int CurrentDeviceCount; + var int LastKnownDeviceCount[TgMapTeam]; + + structdefaultproperties + { + Power=0 + CurrentDeviceId=0 + LastKnownDeviceId[0]=0 + LastKnownDeviceId[1]=0 + LastKnownDeviceId[2]=0 + CurrentDeviceCount=0 + LastKnownDeviceCount[0]=0 + LastKnownDeviceCount[1]=0 + LastKnownDeviceCount[2]=0 + } +}; + +struct native SimulatedProjectileOverrides +{ + var int FireModeID; + var float RemoteProximityDist; + var float Range; + var float Speed; + var float GravityScale; + var float FireAngle; + + structdefaultproperties + { + FireModeID=0 + RemoteProximityDist=0.0000000 + Range=0.0000000 + Speed=0.0000000 + GravityScale=1.0000000 + FireAngle=0.0000000 + } +}; + +struct native MarkedTargetInfo +{ + var int PawnId; + var int Count; + + structdefaultproperties + { + PawnId=0 + Count=0 + } +}; + +struct native DeckCardData +{ + var int nDeviceId; + var int nPlayerId; + + structdefaultproperties + { + nDeviceId=0 + nPlayerId=0 + } +}; + +struct native PlayOfTheGameEventData +{ + var TgObject.EPlayOfTheGameEventType EventType; + var float TimeStamp; + var float WeightedRating; + + structdefaultproperties + { + EventType=EPlayOfTheGameEventType.POTG_ScoreKill + TimeStamp=0.0000000 + WeightedRating=0.0000000 + } +}; + +struct native PlayOfTheGameEventCounter +{ + var TgObject.EPlayOfTheGameEventType EventType; + var float Threshold; + var float Counter; + var float TimeOut; + var float Timer; + + structdefaultproperties + { + EventType=EPlayOfTheGameEventType.POTG_ScoreKill + Threshold=0.0000000 + Counter=0.0000000 + TimeOut=0.0000000 + Timer=0.0000000 + } +}; + +struct native TrackedProjectileInitData +{ + var int FireModeID; + var int ProjectileId; + var Vector SpawnLocation; + var Vector SpawnRotation; + var Vector SpawnVelocity; + var float SpawnServerTime; + + structdefaultproperties + { + FireModeID=0 + ProjectileId=0 + SpawnLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + SpawnRotation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + SpawnVelocity=(X=0.0000000,Y=0.0000000,Z=0.0000000) + SpawnServerTime=0.0000000 + } +}; + +struct native TrackedProjectileUpdateData +{ + var Vector Location; + var Vector Velocity; + var float UpdateServerTime; + + structdefaultproperties + { + Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + Velocity=(X=0.0000000,Y=0.0000000,Z=0.0000000) + UpdateServerTime=0.0000000 + } +}; + +var int r_nPlayerId; +var int r_nPawnId; +var int m_nUIDisplayIndex; +var float c_fLastUpdateTime; +var int r_nEquippedTitleId; +var repnotify int r_nHealthCurrent; +var int r_nHealthMaximum; +var int r_nPowerCurrent; +var int r_nPowerMaximum; +var int r_nPacingType; +var int r_nShieldCurrent; +var int r_nShieldMaximum; +var repnotify TgRepInfo_Player r_MasterPrep; +var repnotify TgRepInfo_TaskForce r_TaskForce; +var TgTeamPlayerStart r_SpawnPoint; +var float r_fReviveSecs; +var repnotify bool r_bMapHasLoaded; +var bool r_bHasBeenSeenByEnemyTeam; +var transient bool r_bHasFlag; +var repnotify bool r_bSilhouettesBlocked; +var bool r_bExtendedSilhouetteRange; +var bool c_bSpeaking; +var bool r_bDropped; +var bool r_bForceNotBot; +var bool r_bDisconnected; +var bool c_bIsDying; +var bool r_IsRevealed; +var bool r_bIsStealthed; +var bool r_bIsVolumeStealthed; +var bool r_bUltimateIsReady; +var bool r_bCanUpgradeLegendary; +var bool s_bAutoSelectCards; +var bool c_bTrackedProjectileIdsJustChanged; +var repnotify byte r_nSurrenderVote; +var repnotify byte r_bVisibleOnMap[TgMapTeam]; +var repnotify byte r_nVisibilityMask; +var repnotify byte r_nFlashUpdateAmmo; +var TgObject.DeployableOverlayIcon r_eDeployableOverlayIcon; +var TgObject.DeployableOverlayState r_eDeployableOverlayState; +var TgObject.DeployableOverlayIcon c_eDeployableOverlayIconOverride; +var TgObject.DeployableOverlayState c_eDeployableOverlayStateOverride; +var TgRepInfo_Player.GAME_MODE_INSTRUCTION r_eCurrentGameModeInstruction; +var array m_PRIArray; +var array m_DRIArray; +var TgRepInfo_Player c_PriorMasterPrep; +var TgRepInfo_TaskForce c_PriorTaskForce; +var int c_fLastHealth; +var float c_fLastDamageTime; +var float r_fVisionRange; +var transient TgCarriedFlag s_CarriedFlag; +var init repnotify string r_ClanTag; +var init string c_PlayerNameWithTag; +var float c_fBarragePercent; +var repnotify SimulatedProjectileOverrides r_SimProjOverrides[8]; +var int r_Scores[22]; +var repnotify DeviceTeamInfo r_PlayerDevices[33]; +var int r_PlayerDeviceAmmo[33]; +var MarkedTargetInfo r_MarkedTargets[5]; +var float c_fLastSpeakingTime; +var repnotify int r_nCredits; +var repnotify int r_nEarnedCredits; +var repnotify int r_nXp; +var repnotify int r_nLevel; +var repnotify int r_nPlayerScore; +var repnotify int r_nCardHealth; +var repnotify int r_nCardDamage; +var repnotify int r_nPowerLevel; +var repnotify int r_nPowerLevelCount; +var repnotify int r_nProfileId; +var repnotify int r_nSkinId; +var repnotify int r_nVoicePackId; +var repnotify int r_nKillstreak; +var int r_nHeadSkinId; +var int r_nWeaponSkinId; +var int r_nMountSkinId; +var repnotify int r_nAssistScore; +var TgPawn r_PawnOwner; +var int r_nLaneId; +var int s_KillOrDeathStreakModifier; +var sPingInfo r_PingInfo[4]; +var Vector c_DeathLocation; +var TG_HUD_INFO c_HudInfo; +var float r_fUltReadyInSecs; +var int r_nUltimateCharge; +var int r_nPassiveMode; +var repnotify int r_nPerkCountKit; +var repnotify int r_nPerkCountArmor; +var repnotify int r_nPerkCountWeapon; +var repnotify int r_nPerkCountGeneral; +var int r_nCardsToDraw; +var int r_nDrawnCards[5]; +var int r_nDrawnPlayer[5]; +var float s_fScoreTakenPool; +var float s_fScoreDamagePool; +var float s_fScoreCapturePool; +var float s_fScoreHealingPool; +var float s_fScoreMitigatedPool; +var float s_fScoreTakenThreshold; +var float s_fScoreDamageThreshold; +var float s_fScoreCaptureThreshold; +var float s_fScoreHealingThreshold; +var float s_fScoreMitigatedThreshold; +var array s_CardDeckTier1; +var array s_CardDeckTier2; +var array s_CardDeckTier3; +var array s_CardDeckTier4; +var array s_CardDeckTier5; +var TgAbilityInfo r_GeneralAbilityInfo; +var TgAbilityInfo r_ArmorAbilityInfo; +var TgRepInfo_Player s_LastKillerPRI; +var array s_PlayOfTheGameEventList; +var array s_PlayOfTheGameEventCounters; +var int r_nDeployableOverlayDisplayMask; +var float r_fDeployableOverlayEnemyViewDist; +var int c_nDeployableOverlayDisplayMaskOverride; +var float c_fDeployableOverlayEnemyViewDistOverride; +var repnotify int r_TrackedProjectileIds[15]; +var TrackedProjectileInitData r_TrackedProjectilesInitData[15]; +var TrackedProjectileUpdateData r_TrackedProjectilesUpdateData[15]; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_ArmorAbilityInfo, r_ClanTag, + r_GeneralAbilityInfo, r_IsRevealed, + r_MarkedTargets, r_MasterPrep, + r_PawnOwner, r_PingInfo, + r_PlayerDeviceAmmo, r_PlayerDevices, + r_Scores, r_SimProjOverrides, + r_SpawnPoint, r_TaskForce, + r_bCanUpgradeLegendary, r_bDisconnected, + r_bDropped, r_bExtendedSilhouetteRange, + r_bForceNotBot, r_bHasBeenSeenByEnemyTeam, + r_bHasFlag, r_bIsStealthed, + r_bMapHasLoaded, r_bSilhouettesBlocked, + r_bUltimateIsReady, r_bVisibleOnMap, + r_eCurrentGameModeInstruction, r_eDeployableOverlayIcon, + r_eDeployableOverlayState, r_fDeployableOverlayEnemyViewDist, + r_fReviveSecs, r_fUltReadyInSecs, + r_fVisionRange, r_nAssistScore, + r_nCardDamage, r_nCardHealth, + r_nCardsToDraw, r_nCredits, + r_nDeployableOverlayDisplayMask, r_nDrawnCards, + r_nDrawnPlayer, r_nEarnedCredits, + r_nEquippedTitleId, r_nFlashUpdateAmmo, + r_nHeadSkinId, r_nHealthCurrent, + r_nHealthMaximum, r_nKillstreak, + r_nLaneId, r_nLevel, + r_nMountSkinId, r_nPacingType, + r_nPassiveMode, r_nPawnId, + r_nPerkCountArmor, r_nPerkCountGeneral, + r_nPerkCountKit, r_nPerkCountWeapon, + r_nPlayerId, r_nPlayerScore, + r_nPowerCurrent, r_nPowerLevel, + r_nPowerLevelCount, r_nPowerMaximum, + r_nProfileId, r_nShieldCurrent, + r_nShieldMaximum, r_nSkinId, + r_nSurrenderVote, r_nUltimateCharge, + r_nVisibilityMask, r_nVoicePackId, + r_nWeaponSkinId, r_nXp; + + // Pos:0x011 + if(((int(Role) == int(ROLE_Authority)) && !bNetInitial) && (bDemoOwner || bNetTimelapseInit) || bNetTimelapsePost) + r_TrackedProjectileIds, r_TrackedProjectilesInitData, + r_TrackedProjectilesUpdateData; +} + +// Export UTgRepInfo_Player::execIsFriendlyWithLocalPlayer(FFrame&, void* const) +native function bool IsFriendlyWithLocalPlayer(); + +// Export UTgRepInfo_Player::execIsBot(FFrame&, void* const) +native function bool IsBot(); + +// Export UTgRepInfo_Player::execIsGod(FFrame&, void* const) +native function bool IsGod(); + +// Export UTgRepInfo_Player::execIsGodDecoy(FFrame&, void* const) +native function bool IsGodDecoy(); + +// Export UTgRepInfo_Player::execIsMinionOf(FFrame&, void* const) +native final function bool IsMinionOf(const TgRepInfo_Player PossibleOwner); + +// Export UTgRepInfo_Player::execGetPlayerId(FFrame&, void* const) +native function int GetPlayerId(); + +// Export UTgRepInfo_Player::execUpdateScoreboard(FFrame&, void* const) +native function UpdateScoreboard(); + +// Export UTgRepInfo_Player::execUpdateLevel(FFrame&, void* const) +native function UpdateLevel(); + +// Export UTgRepInfo_Player::execUpdateBroadcastedItems(FFrame&, void* const) +native function UpdateBroadcastedItems(TgInventoryManager InvMgr); + +// Export UTgRepInfo_Player::execSetTeam(FFrame&, void* const) +native function SetTeam(TgRepInfo_TaskForce pNewTeamRep); + +// Export UTgRepInfo_Player::execAddMinion(FFrame&, void* const) +native function AddMinion(ReplicationInfo pRepInfo); + +// Export UTgRepInfo_Player::execRemoveMinion(FFrame&, void* const) +native function RemoveMinion(ReplicationInfo pRepInfo); + +// Export UTgRepInfo_Player::execCheckMembership(FFrame&, void* const) +native function CheckMembership(); + +// Export UTgRepInfo_Player::execGetCurrentHealth(FFrame&, void* const) +native function int GetCurrentHealth(); + +// Export UTgRepInfo_Player::execGetCurrentMaxHealth(FFrame&, void* const) +native function int GetCurrentMaxHealth(); + +// Export UTgRepInfo_Player::execGetCurrentPower(FFrame&, void* const) +native function int GetCurrentPower(); + +// Export UTgRepInfo_Player::execGetCurrentMaxPower(FFrame&, void* const) +native function int GetCurrentMaxPower(); + +// Export UTgRepInfo_Player::execGetCurrentShield(FFrame&, void* const) +native function int GetCurrentShield(); + +// Export UTgRepInfo_Player::execGetCurrentMaxShield(FFrame&, void* const) +native function int GetCurrentMaxShield(); + +// Export UTgRepInfo_Player::execGetCurrentLocation(FFrame&, void* const) +native function Vector GetCurrentLocation(); + +// Export UTgRepInfo_Player::execGetCurrentRotation(FFrame&, void* const) +native function Rotator GetCurrentRotation(); + +// Export UTgRepInfo_Player::execIsStealthedClient(FFrame&, void* const) +native function bool IsStealthedClient(); + +// Export UTgRepInfo_Player::execIsHardStealthedClient(FFrame&, void* const) +native function bool IsHardStealthedClient(); + +// Export UTgRepInfo_Player::execUpdateUltimateIsReady(FFrame&, void* const) +native function UpdateUltimateIsReady(float fCooldownSecs); + +// Export UTgRepInfo_Player::execGetPlayerNameForMsgDisplay(FFrame&, void* const) +native function string GetPlayerNameForMsgDisplay(optional bool bBaseNameOnly = false); + +// Export UTgRepInfo_Player::execUpdateSpectatorUI(FFrame&, void* const) +native function UpdateSpectatorUI(); + +// Export UTgRepInfo_Player::execUpdatePlayerInfoUI(FFrame&, void* const) +native function UpdatePlayerInfoUI(); + +// Export UTgRepInfo_Player::execUpdatePlayerTaskforceUI(FFrame&, void* const) +native function UpdatePlayerTaskforceUI(); + +// Export UTgRepInfo_Player::execUpdateFX(FFrame&, void* const) +native function UpdateFX(); + +// Export UTgRepInfo_Player::execHasBeenSeenByEnemyTeam(FFrame&, void* const) +native function bool HasBeenSeenByEnemyTeam(); + +// Export UTgRepInfo_Player::execIsVisibleToAnEnemyTeam(FFrame&, void* const) +native function bool IsVisibleToAnEnemyTeam(); + +// Export UTgRepInfo_Player::execIsVisibleToMapTeam(FFrame&, void* const) +native function bool IsVisibleToMapTeam(TgObject.TgMapTeam MAPTEAM); + +// Export UTgRepInfo_Player::execIsVisibleToPlayer(FFrame&, void* const) +native function bool IsVisibleToPlayer(TgRepInfo_Player PRI); + +// Export UTgRepInfo_Player::execIsVisibleToLocalPlayer(FFrame&, void* const) +native function bool IsVisibleToLocalPlayer(); + +// Export UTgRepInfo_Player::execCheckPingingList(FFrame&, void* const) +native function CheckPingingList(); + +// Export UTgRepInfo_Player::execUpdatePingInfo(FFrame&, void* const) +native function UpdatePingInfo(TgRepInfo_Player pingedPri, Vector pingedLoc, TgObject.PING_TYPE Type); + +// Export UTgRepInfo_Player::execUpdateMapVisibility(FFrame&, void* const) +native function UpdateMapVisibility(TgObject.TgMapTeam MAPTEAM, byte bVisible, float fVisionRange, bool bDetected); + +// Export UTgRepInfo_Player::execSetTaskForceNumber(FFrame&, void* const) +native function bool SetTaskForceNumber(byte nTaskForce, optional bool bForce = false); + +// Export UTgRepInfo_Player::execClientUpdateItemStoreItems(FFrame&, void* const) +native function ClientUpdateItemStoreItems(); + +// Export UTgRepInfo_Player::execUpdateSurrenderVoting(FFrame&, void* const) +native function UpdateSurrenderVoting(); + +// Export UTgRepInfo_Player::execUpdatePlayerReady(FFrame&, void* const) +native function UpdatePlayerReady(); + +// Export UTgRepInfo_Player::execUpdatePlayerNameWithTag(FFrame&, void* const) +native function UpdatePlayerNameWithTag(); + +// Export UTgRepInfo_Player::execLoadCardDeck(FFrame&, void* const) +native function bool LoadCardDeck(optional bool bDefault = false); + +// Export UTgRepInfo_Player::execDrawNewCards(FFrame&, void* const) +native function DrawNewCards(optional int nPrevPower = -1); + +// Export UTgRepInfo_Player::execAddPlayOfTheGameEvent(FFrame&, void* const) +native function AddPlayOfTheGameEvent(TgObject.EPlayOfTheGameEventType Type, optional float Amount = 1.0000000); + +// Export UTgRepInfo_Player::execAddMarkedTarget(FFrame&, void* const) +native function AddMarkedTarget(int nPawnId, optional int nCount = 1); + +// Export UTgRepInfo_Player::execRemoveMarkedTarget(FFrame&, void* const) +native function RemoveMarkedTarget(int nPawnId, optional int nCount = 0); + +// Export UTgRepInfo_Player::execGetMarkedTargetCount(FFrame&, void* const) +native function int GetMarkedTargetCount(int nPawnId); + +simulated function PostBeginPlay() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x42 [Loop If] + if(I < 15) + { + r_TrackedProjectileIds[I] = -1; + I++; + // [Loop Continue] + goto J0x0B; + } + super.PostBeginPlay(); + SetTimer(0.5000000, true); + UpdatePlayerInfoUI(); + UpdateFX(); + // End:0x84 + if(LoadCardDeck()) + { + DrawNewCards(); + } + //return; +} + +function PopulateGeneralAbilities() +{ + r_GeneralAbilityInfo.DeviceIds[3] = 10534; + r_GeneralAbilityInfo.DeviceIds[4] = 10672; + r_GeneralAbilityInfo.DeviceIds[5] = 10698; + r_GeneralAbilityInfo.DeviceIds[6] = 10671; + r_GeneralAbilityInfo.DeviceIds[7] = 10686; + r_GeneralAbilityInfo.DeviceIds[8] = 10678; + r_GeneralAbilityInfo.DeviceIds[9] = 10688; + //return; +} + +simulated function ClientInitialize(Controller C) +{ + local TgSpectatorController SpectatorController; + + super.ClientInitialize(C); + UpdatePlayerInfoUI(); + RecalculateTeamColor(); + // End:0x93 + if(WorldInfo.IsPlayingDemo()) + { + SpectatorController = TgSpectatorController(C); + // End:0x93 + if(SpectatorController != none) + { + SpectatorController.UpdateBroadcastChannels(); + } + } + //return; +} + +simulated function RecalculateTeamColor() +{ + local Actor A; + + // End:0x39 + foreach AllActors(Class'Engine.Actor', A) + { + A.NotifyLocalPlayerTeamReceived(); + } + //return; +} + +event Timer() +{ + UpdatePlayerLocation(); + UpdateIdAndProfile(); + //return; +} + +event UpdateIdAndProfile() +{ + local TgPawn TgPawn; + + // End:0x52 + if(Controller(Owner) != none) + { + TgPawn = TgPawn(Controller(Owner).Pawn); + } + // End:0x184 + if(TgPawn != none) + { + r_nProfileId = TgPawn.r_nProfileId; + r_nSkinId = TgPawn.r_nSkinId; + r_nVoicePackId = TgPawn.r_nVoicePackId; + r_nHeadSkinId = TgPawn.r_nHeadSkinId; + r_nWeaponSkinId = TgPawn.r_nWeaponSkinId; + r_nMountSkinId = TgPawn.r_nMountSkinId; + // End:0x184 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + UpdatePlayerInfoUI(); + } + } + //return; +} + +function UpdatePlayerLocation() +{ + //return; +} + +event UpdateHealth(int nCurrentHealth, int nMaxHealth) +{ + local Pawn P; + + r_nHealthCurrent = nCurrentHealth; + r_nHealthMaximum = nMaxHealth; + // End:0xE0 + if(Controller(Owner) != none) + { + P = Controller(Owner).Pawn; + // End:0xE0 + if((P != none) && Controller(Owner).IsInState('Dead') || P.IsInState('Dying')) + { + r_nHealthCurrent = 0; + } + } + // End:0x113 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + UpdatedHealthCurrent(); + } + //return; +} + +event UpdatePower(int nCurrentPower, int nMaxPower) +{ + local TgPawn P; + + r_nPowerCurrent = nCurrentPower; + r_nPowerMaximum = nMaxPower; + // End:0x10F + if(Controller(Owner) != none) + { + P = TgPawn(Controller(Owner).Pawn); + // End:0x10F + if(P != none) + { + r_nPacingType = P.r_nPacingType; + // End:0x10F + if(Controller(Owner).IsInState('Dead') || P.IsInState('Dying')) + { + r_nPowerCurrent = 0; + } + } + } + //return; +} + +event UpdateShield(int nCurrentShield, int nMaxShield) +{ + local TgPawn P; + + r_nShieldCurrent = nCurrentShield; + r_nShieldMaximum = nMaxShield; + // End:0x10F + if(Controller(Owner) != none) + { + P = TgPawn(Controller(Owner).Pawn); + // End:0x10F + if(P != none) + { + r_nPacingType = P.r_nPacingType; + // End:0x10F + if(Controller(Owner).IsInState('Dead') || P.IsInState('Dying')) + { + r_nShieldCurrent = 0; + } + } + } + //return; +} + +simulated function byte GetTaskForceNumber() +{ + // End:0x2E + if(r_TaskForce != none) + { + return r_TaskForce.r_nTaskForce; + } + return 0; + //return ReturnValue; +} + +simulated function UpdatedHealthCurrent() +{ + // End:0x32 + if(r_nHealthCurrent == 0) + { + c_bIsDying = true; + c_DeathLocation = GetCurrentLocation(); + } + else + { + c_bIsDying = false; + } + // End:0x8E + if((r_nHealthCurrent < c_fLastHealth) && !c_bIsDying) + { + c_fLastDamageTime = WorldInfo.TimeSeconds; + } + c_fLastHealth = r_nHealthCurrent; + UpdateFX(); + //return; +} + +simulated function UpdatedApproxLocation() +{ + //return; +} + +simulated event UpdatedTaskForce() +{ + local TgPlayerController localPC; + + CheckMembership(); + UpdatePlayerTaskforceUI(); + localPC = TgPlayerController(Owner); + // End:0x49 + if(localPC != none) + { + RecalculateTeamColor(); + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + local TgPawn TgP; + + // End:0x23 + if(VarName == 'r_nHealthCurrent') + { + UpdatedHealthCurrent(); + return; + } + // End:0x6A + if(VarName == 'r_nFlashUpdateAmmo') + { + // End:0x68 + if(r_PawnOwner != none) + { + r_PawnOwner.ForceUpdateAmmoAnim(); + } + return; + } + // End:0x8D + if(VarName == 'r_TaskForce') + { + UpdatedTaskForce(); + return; + } + // End:0xB0 + if(VarName == 'r_MasterPrep') + { + CheckMembership(); + return; + } + // End:0xD3 + if(VarName == 'r_PlayerDevices') + { + ClientUpdateItemStoreItems(); + return; + } + // End:0x18C + if(((((((VarName == 'r_nProfileId') || VarName == 'r_nLevel') || VarName == 'r_nPowerLevel') || VarName == 'r_nPowerLevelCount') || VarName == 'r_nVoicePackId') || VarName == 'r_nSkinId') || VarName == 'r_nAssistScore') + { + UpdatePlayerInfoUI(); + return; + } + // End:0x1AF + if(VarName == 'r_nXp') + { + UpdateSpectatorUI(); + return; + } + // End:0x1D2 + if(VarName == 'r_nPlayerScore') + { + UpdateSpectatorUI(); + return; + } + // End:0x1F5 + if(VarName == 'r_nSurrenderVote') + { + UpdateSurrenderVoting(); + return; + } + // End:0x218 + if(VarName == 'r_bMapHasLoaded') + { + UpdatePlayerReady(); + return; + } + // End:0x23B + if(VarName == 'r_ClanTag') + { + UpdatePlayerInfoUI(); + return; + } + // End:0x2AE + if(VarName == 'r_bVisibleOnMap') + { + // End:0x2AC + if((r_PawnOwner != none) && int(r_PawnOwner.r_eIsStealthed) != int(0)) + { + r_PawnOwner.ApplyStealthClient(); + } + return; + } + // End:0x2C7 + if(VarName == 'r_eCurrentGameModeInstruction') + { + return; + } + // End:0x2EC + if(VarName == 'r_TrackedProjectileIds') + { + c_bTrackedProjectileIdsJustChanged = true; + return; + } + // End:0x37F + if(VarName == 'r_bSilhouettesBlocked') + { + // End:0x37D + if(r_PawnOwner != none) + { + // End:0x37D + if(r_bSilhouettesBlocked) + { + // End:0x37C + foreach AllActors(Class'TgGame.TgPawn', TgP) + { + // End:0x37B + if(TgP.m_bSilhouettesVisible) + { + TgP.ToggleSilhouetteVisibility(false); + } + } + } + } + return; + } + // End:0x3A0 + if(VarName == 'PlayerName') + { + UpdatePlayerInfoUI(); + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated function PlayerController FindLocalController() +{ + local PlayerController PC; + + // End:0x40 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + return PC; + } + return none; + //return ReturnValue; +} + +simulated function TgPawn FindLocalPlayerPawn() +{ + local PlayerController PC; + + // End:0x38 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x38 + break; + } + // End:0x70 + if(PC != none) + { + return TgPawn(PC.Pawn); + } + return none; + //return ReturnValue; +} + +simulated function bool ShouldBroadCastWelcomeMessage(optional bool bExiting) +{ + return false; + //return ReturnValue; +} + +function PlayerReplicationInfo Duplicate() +{ + local PlayerReplicationInfo NewPRI; + + NewPRI = Spawn(Class); + CopyProperties(NewPRI); + return NewPRI; + //return ReturnValue; +} + +function OverrideWith(PlayerReplicationInfo PRI) +{ + super.OverrideWith(PRI); + //return; +} + +function CopyProperties(PlayerReplicationInfo PRI) +{ + local int I; + local TgRepInfo_Player TgPRI; + + super.CopyProperties(PRI); + TgPRI = TgRepInfo_Player(PRI); + TgPRI.r_nPlayerId = r_nPlayerId; + TgPRI.r_nProfileId = r_nProfileId; + TgPRI.r_nPawnId = r_nPawnId; + TgPRI.r_MasterPrep = r_MasterPrep; + TgPRI.r_nLevel = r_nLevel; + TgPRI.r_nCredits = r_nCredits; + TgPRI.r_nPlayerScore = r_nPlayerScore; + TgPRI.r_nPowerLevel = r_nPowerLevel; + TgPRI.r_nPowerLevelCount = r_nPowerLevelCount; + TgPRI.r_nAssistScore = r_nAssistScore; + TgPRI.r_PawnOwner = r_PawnOwner; + TgPRI.r_nPowerMaximum = r_nPowerMaximum; + TgPRI.r_nHealthMaximum = r_nHealthMaximum; + TgPRI.r_nShieldMaximum = r_nShieldMaximum; + TgPRI.r_ClanTag = r_ClanTag; + TgPRI.r_nVisibilityMask = r_nVisibilityMask; + TgPRI.r_bCanUpgradeLegendary = r_bCanUpgradeLegendary; + TgPRI.r_nCardsToDraw = r_nCardsToDraw; + TgPRI.r_nXp = r_nXp; + TgPRI.SetSpawnPoint(r_SpawnPoint); + I = 0; + J0x35C: + + // End:0x3B6 [Loop If] + if(I < 22) + { + TgPRI.r_Scores[I] = r_Scores[I]; + I++; + // [Loop Continue] + goto J0x35C; + } + // End:0x41B + if(TgPRI.s_CardDeckTier1.Length > 0) + { + TgPRI.s_CardDeckTier1.Remove(0, TgPRI.s_CardDeckTier1.Length); + } + // End:0x480 + if(TgPRI.s_CardDeckTier2.Length > 0) + { + TgPRI.s_CardDeckTier2.Remove(0, TgPRI.s_CardDeckTier2.Length); + } + // End:0x4E5 + if(TgPRI.s_CardDeckTier3.Length > 0) + { + TgPRI.s_CardDeckTier3.Remove(0, TgPRI.s_CardDeckTier3.Length); + } + // End:0x54A + if(TgPRI.s_CardDeckTier4.Length > 0) + { + TgPRI.s_CardDeckTier4.Remove(0, TgPRI.s_CardDeckTier4.Length); + } + // End:0x5AF + if(TgPRI.s_CardDeckTier5.Length > 0) + { + TgPRI.s_CardDeckTier5.Remove(0, TgPRI.s_CardDeckTier5.Length); + } + I = 0; + J0x5BA: + + // End:0x615 [Loop If] + if(I < s_CardDeckTier1.Length) + { + TgPRI.s_CardDeckTier1.AddItem(s_CardDeckTier1[I]); + I++; + // [Loop Continue] + goto J0x5BA; + } + I = 0; + J0x620: + + // End:0x67B [Loop If] + if(I < s_CardDeckTier2.Length) + { + TgPRI.s_CardDeckTier2.AddItem(s_CardDeckTier2[I]); + I++; + // [Loop Continue] + goto J0x620; + } + I = 0; + J0x686: + + // End:0x6E1 [Loop If] + if(I < s_CardDeckTier3.Length) + { + TgPRI.s_CardDeckTier3.AddItem(s_CardDeckTier3[I]); + I++; + // [Loop Continue] + goto J0x686; + } + I = 0; + J0x6EC: + + // End:0x747 [Loop If] + if(I < s_CardDeckTier4.Length) + { + TgPRI.s_CardDeckTier4.AddItem(s_CardDeckTier4[I]); + I++; + // [Loop Continue] + goto J0x6EC; + } + I = 0; + J0x752: + + // End:0x7AD [Loop If] + if(I < s_CardDeckTier5.Length) + { + TgPRI.s_CardDeckTier5.AddItem(s_CardDeckTier5[I]); + I++; + // [Loop Continue] + goto J0x752; + } + I = 0; + J0x7B8: + + // End:0x84E [Loop If] + if(I < 5) + { + TgPRI.r_nDrawnCards[I] = r_nDrawnCards[I]; + TgPRI.r_nDrawnPlayer[I] = r_nDrawnPlayer[I]; + I++; + // [Loop Continue] + goto J0x7B8; + } + I = 0; + J0x859: + + // End:0x8B3 [Loop If] + if(I < 8) + { + TgPRI.r_SimProjOverrides[I] = r_SimProjOverrides[I]; + I++; + // [Loop Continue] + goto J0x859; + } + //return; +} + +function TransferMinionOwnershipTo(TgRepInfo_Player NewOwner) +{ + local TgRepInfo_Deployable DRI; + local TgRepInfo_Player PRI; + + J0x00: + // End:0x82 [Loop If] + if(m_DRIArray.Length > 0) + { + DRI = m_DRIArray[0]; + // End:0x72 + if(DRI != none) + { + RemoveMinion(DRI); + NewOwner.AddMinion(DRI); + } + else + { + m_DRIArray.Remove(0, 1); + } + // [Loop Continue] + goto J0x00; + } + J0x82: + + // End:0x104 [Loop If] + if(m_PRIArray.Length > 0) + { + PRI = m_PRIArray[0]; + // End:0xF4 + if(PRI != none) + { + RemoveMinion(PRI); + NewOwner.AddMinion(PRI); + } + else + { + m_PRIArray.Remove(0, 1); + } + // [Loop Continue] + goto J0x82; + } + //return; +} + +function OnDeath() +{ + // End:0x1D + if(s_KillOrDeathStreakModifier > 0) + { + s_KillOrDeathStreakModifier = 0; + } + else + { + --s_KillOrDeathStreakModifier; + } + //return; +} + +function SetFlag(TgCarriedFlag NewFlag) +{ + s_CarriedFlag = NewFlag; + r_bHasFlag = s_CarriedFlag != none; + //return; +} + +event SetSpawnPoint(TgTeamPlayerStart SpawnPoint) +{ + // End:0x19 + if(r_SpawnPoint == SpawnPoint) + { + return; + } + // End:0x4B + if(r_SpawnPoint != none) + { + r_SpawnPoint.s_AssignedPlayers.RemoveItem(self); + } + r_SpawnPoint = SpawnPoint; + // End:0xBF + if((r_SpawnPoint != none) && r_SpawnPoint.s_AssignedPlayers.Find(self) == -1) + { + r_SpawnPoint.s_AssignedPlayers.AddItem(self); + } + //return; +} + +// Export UTgRepInfo_Player::execSetSimProjSpeed(FFrame&, void* const) +native function SetSimProjSpeed(int nFireModeId, float fSpeed); + +// Export UTgRepInfo_Player::execSetSimProjRemoteProximity(FFrame&, void* const) +native function SetSimProjRemoteProximity(int nFireModeId, float fRemoteProximity); + +// Export UTgRepInfo_Player::execSetSimProjDist(FFrame&, void* const) +native function SetSimProjDist(int nFireModeId, float fDist); + +// Export UTgRepInfo_Player::execSetSimProjGravityScale(FFrame&, void* const) +native function SetSimProjGravityScale(int nFireModeId, float fGravityScale); + +// Export UTgRepInfo_Player::execSetSimProjFireAngle(FFrame&, void* const) +native function SetSimProjFireAngle(int nFireModeId, float fFireAngle); + +// Export UTgRepInfo_Player::execFindSimProjOverrideIndex(FFrame&, void* const) +native function int FindSimProjOverrideIndex(int nFireModeId); + +// Export UTgRepInfo_Player::execValidateSimProj(FFrame&, void* const) +native function ValidateSimProj(int nIndex); + +// Export UTgRepInfo_Player::execGetSimProjOverrides(FFrame&, void* const) +native function bool GetSimProjOverrides(int nFireModeId, out float fRange, out float fRemoteProximity, out float fSpeed, out float fGravityScale, out float fFireAngle); + +event SetHUDOverlayDisplayMask(int dodm) +{ + // End:0x36 + if(dodm != r_nDeployableOverlayDisplayMask) + { + r_nDeployableOverlayDisplayMask = dodm; + bNetDirty = true; + } + //return; +} + +event SetHUDOverlayIcon(TgObject.DeployableOverlayIcon doi) +{ + // End:0x3A + if(int(doi) != int(r_eDeployableOverlayIcon)) + { + r_eDeployableOverlayIcon = doi; + bNetDirty = true; + } + //return; +} + +event SetHUDOverlayState(TgObject.DeployableOverlayState dos) +{ + // End:0x3A + if(int(dos) != int(r_eDeployableOverlayState)) + { + r_eDeployableOverlayState = dos; + bNetDirty = true; + } + //return; +} + +event SetHUDOverlayEnemyViewDist(float enemyViewDist) +{ + // End:0x36 + if(enemyViewDist != r_fDeployableOverlayEnemyViewDist) + { + r_fDeployableOverlayEnemyViewDist = enemyViewDist; + bNetDirty = true; + } + //return; +} + +// Export UTgRepInfo_Player::execGetDeployableOverlayDisplayMask(FFrame&, void* const) +native simulated function int GetDeployableOverlayDisplayMask(); + +// Export UTgRepInfo_Player::execGetDeployableOverlayIcon(FFrame&, void* const) +native simulated function TgObject.DeployableOverlayIcon GetDeployableOverlayIcon(); + +// Export UTgRepInfo_Player::execGetDeployableOverlayState(FFrame&, void* const) +native simulated function TgObject.DeployableOverlayState GetDeployableOverlayState(); + +// Export UTgRepInfo_Player::execGetDeployableOverlayEnemyViewDist(FFrame&, void* const) +native simulated function float GetDeployableOverlayEnemyViewDist(); + +defaultproperties +{ + r_eDeployableOverlayIcon=DeployableOverlayIcon.DOI_TURRET + c_fBarragePercent=-1.0000000 + r_SimProjOverrides[0]=(FireModeID=0,RemoteProximityDist=0.0000000,Range=0.0000000,Speed=0.0000000,GravityScale=1.0000000,FireAngle=0.0000000) + r_SimProjOverrides[1]=(FireModeID=0,RemoteProximityDist=0.0000000,Range=0.0000000,Speed=0.0000000,GravityScale=1.0000000,FireAngle=0.0000000) + r_SimProjOverrides[2]=(FireModeID=0,RemoteProximityDist=0.0000000,Range=0.0000000,Speed=0.0000000,GravityScale=1.0000000,FireAngle=0.0000000) + r_SimProjOverrides[3]=(FireModeID=0,RemoteProximityDist=0.0000000,Range=0.0000000,Speed=0.0000000,GravityScale=1.0000000,FireAngle=0.0000000) + r_SimProjOverrides[4]=(FireModeID=0,RemoteProximityDist=0.0000000,Range=0.0000000,Speed=0.0000000,GravityScale=1.0000000,FireAngle=0.0000000) + r_SimProjOverrides[5]=(FireModeID=0,RemoteProximityDist=0.0000000,Range=0.0000000,Speed=0.0000000,GravityScale=1.0000000,FireAngle=0.0000000) + r_SimProjOverrides[6]=(FireModeID=0,RemoteProximityDist=0.0000000,Range=0.0000000,Speed=0.0000000,GravityScale=1.0000000,FireAngle=0.0000000) + r_SimProjOverrides[7]=(FireModeID=0,RemoteProximityDist=0.0000000,Range=0.0000000,Speed=0.0000000,GravityScale=1.0000000,FireAngle=0.0000000) + r_nLevel=1 + r_nPassiveMode=-1 + r_nCardsToDraw=3 + s_fScoreTakenThreshold=6000.0000000 + s_fScoreDamageThreshold=6000.0000000 + s_fScoreCaptureThreshold=4.0000000 + s_fScoreHealingThreshold=6000.0000000 + s_fScoreMitigatedThreshold=6000.0000000 + r_fDeployableOverlayEnemyViewDist=1600.0000000 + bReplicateInstigator=true + bReplicateMovement=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgRepInfo_Portal.uc b/exported/TgGame/Classes/TgRepInfo_Portal.uc new file mode 100755 index 00000000..1cb3f311 --- /dev/null +++ b/exported/TgGame/Classes/TgRepInfo_Portal.uc @@ -0,0 +1,13 @@ +class TgRepInfo_Portal extends TgRepInfo_Deployable + native(Game) + hidecategories(Navigation,Movement,Collision); + +var TgRepInfo_Portal r_TwinDRI; +var bool c_bMasterEntity; + +replication +{ + // Pos:0x000 + if(bNetDirty && int(Role) == int(ROLE_Authority)) + r_TwinDRI; +} diff --git a/exported/TgGame/Classes/TgRepInfo_TaskForce.uc b/exported/TgGame/Classes/TgRepInfo_TaskForce.uc new file mode 100755 index 00000000..d96816e3 --- /dev/null +++ b/exported/TgGame/Classes/TgRepInfo_TaskForce.uc @@ -0,0 +1,444 @@ +class TgRepInfo_TaskForce extends TeamInfo + native(Game) + nativereplication + hidecategories(Navigation,Movement,Collision); + +const TG_MAX_PREMADE_DEPLOYS = 20; +const TG_MAX_PRIMARY_OBJECTIVES = 5; +const TG_MAX_TASK_TEAM_NUMBER = 10; + +struct native TGTEAM_ENTRY +{ + var string fsName; + var string fsMapName; + var int nHealth; + var int nMaxHealth; + var bool bLeader; + var TgRepInfo_Player pPrep; + + structdefaultproperties + { + fsName="" + fsMapName="" + nHealth=0 + nMaxHealth=0 + bLeader=false + pPrep=none + } +}; + +struct native sPredefinedLevelDeployInfo +{ + var int m_Id; + var Vector m_Location; + + structdefaultproperties + { + m_Id=0 + m_Location=(X=0.0000000,Y=0.0000000,Z=0.0000000) + } +}; + +struct native TEAMTIMEMANAGER_ENTRY +{ + var TgTimerManager m_TimerManager; + var int m_nDeviceId; + + structdefaultproperties + { + m_TimerManager=none + m_nDeviceId=0 + } +}; + +struct native GLOBALEFFECT_ENTRY +{ + var TgEffectGroup eg; + var TgPawn pawnInstigator; + + structdefaultproperties + { + eg=none + pawnInstigator=none + } +}; + +var string c_fsName; +var int r_nTeamId; +var repnotify int r_nLeaderPlayerId; +var repnotify byte r_nTaskForce; +var TgObject.TgMapTeam r_MapTeam; +var int s_nTaskForceChatId; +var int s_nStrikeForceId; +var int s_nTaskTeamNum; +var Color m_Color; +var repnotify bool r_bIsSurrendering; +var bool r_bSpectator; +var bool m_bDestroyOnEmpty; +var bool r_bIsAttacking; +var int s_nPlayerStartCount; +var private array m_TeamPlayers; +var private array m_TeamBots; +var array m_Factories; +var private array m_MinionFactories; +var private array s_TeamTimerManagers; +var TgMinimapManager s_MinimapManager; +var repnotify int r_nScore; +var float r_fTickets; +var repnotify float r_fSecondaryScore; +var repnotify int r_nScorePercent; +var int r_nGoldBuffCount; +var int s_nGodVisionMask; +var private array m_GlobalEffectGroups; +var int m_nTowersKilled; +var int m_nPhoenixCount; +var int r_nGodKillCount; +var int m_nLastGodIndex; +var int m_nLastGodList; +var TgRespawnBeaconExit r_RespawnBeaconExit; +var int c_nScoreOverride; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_RespawnBeaconExit, r_bIsSurrendering, + r_nGoldBuffCount, r_nLeaderPlayerId; + + // Pos:0x011 + if((int(Role) == int(ROLE_Authority)) && (bNetDirty || bNetTimelapseInit) || bNetTimelapsePost) + r_bIsAttacking, r_fSecondaryScore, + r_fTickets, r_nScore, + r_nScorePercent; + + // Pos:0x04F + if((int(Role) == int(ROLE_Authority)) && bNetInitial) + r_MapTeam, r_bSpectator, + r_nTaskForce, r_nTeamId; +} + +// Export UTgRepInfo_TaskForce::execCycleFrom(FFrame&, void* const) +native function TgRepInfo_Player CycleFrom(TgRepInfo_Player pFrom, bool bForward); + +// Export UTgRepInfo_TaskForce::execRepEvent(FFrame&, void* const) +native simulated function bool RepEvent(name VarName); + +// Export UTgRepInfo_TaskForce::execGetPlayerCount(FFrame&, void* const) +native function int GetPlayerCount(); + +// Export UTgRepInfo_TaskForce::execGetActivePlayerCount(FFrame&, void* const) +native function int GetActivePlayerCount(); + +// Export UTgRepInfo_TaskForce::execGetBotCount(FFrame&, void* const) +native function int GetBotCount(); + +// Export UTgRepInfo_TaskForce::execGetMinionFactoryCount(FFrame&, void* const) +native function int GetMinionFactoryCount(); + +// Export UTgRepInfo_TaskForce::execGetPlayer(FFrame&, void* const) +native function TgRepInfo_Player GetPlayer(int nIndex); + +// Export UTgRepInfo_TaskForce::execGetPlayerById(FFrame&, void* const) +native function TgRepInfo_Player GetPlayerById(int nPawnId); + +// Export UTgRepInfo_TaskForce::execGetPlayerByPower(FFrame&, void* const) +native function TgRepInfo_Player GetPlayerByPower(int nIndex); + +// Export UTgRepInfo_TaskForce::execGetBot(FFrame&, void* const) +native function TgRepInfo_Player GetBot(int nIndex); + +// Export UTgRepInfo_TaskForce::execGetMinionFactory(FFrame&, void* const) +native function TgBotFactory_Minions GetMinionFactory(int nIndex); + +// Export UTgRepInfo_TaskForce::execIsLeader(FFrame&, void* const) +native function bool IsLeader(TgRepInfo_Player pTgPri); + +// Export UTgRepInfo_TaskForce::execTeamRemoveFrom(FFrame&, void* const) +native function TeamRemoveFrom(Controller Other); + +// Export UTgRepInfo_TaskForce::execUpdateSurrenderTimer(FFrame&, void* const) +native function UpdateSurrenderTimer(); + +// Export UTgRepInfo_TaskForce::execAddGlobalEffectGroup(FFrame&, void* const) +native function AddGlobalEffectGroup(TgEffectGroup eg, TgPawn InstigatorPawn); + +// Export UTgRepInfo_TaskForce::execRemoveGlobalEffectGroup(FFrame&, void* const) +native function RemoveGlobalEffectGroup(int nEffectGroupID); + +// Export UTgRepInfo_TaskForce::execApplyGlobalEffectGroups(FFrame&, void* const) +native function ApplyGlobalEffectGroups(TgPawn_Character aPawn); + +// Export UTgRepInfo_TaskForce::execRemoveGlobalEffectGroups(FFrame&, void* const) +native function RemoveGlobalEffectGroups(TgPawn_Character aPawn); + +// Export UTgRepInfo_TaskForce::execReapplyGlobalEffectGroups(FFrame&, void* const) +native function ReapplyGlobalEffectGroups(); + +// Export UTgRepInfo_TaskForce::execRemoveAllGlobalEffectGroups(FFrame&, void* const) +native function RemoveAllGlobalEffectGroups(); + +// Export UTgRepInfo_TaskForce::execGetGodCount(FFrame&, void* const) +native function int GetGodCount(); + +// Export UTgRepInfo_TaskForce::execGetGod(FFrame&, void* const) +native function TgRepInfo_Player GetGod(int nIndex); + +// Export UTgRepInfo_TaskForce::execResetGodIterator(FFrame&, void* const) +native function ResetGodIterator(); + +// Export UTgRepInfo_TaskForce::execGetNextGod(FFrame&, void* const) +native function TgRepInfo_Player GetNextGod(optional bool bIncrement = true, optional bool bReset = false); + +// Export UTgRepInfo_TaskForce::execLaneOfSiegeWeapon(FFrame&, void* const) +native function int LaneOfSiegeWeapon(); + +// Export UTgRepInfo_TaskForce::execGetASiegeWeapon(FFrame&, void* const) +native function TgPawn GetASiegeWeapon(); + +// Export UTgRepInfo_TaskForce::execHasBot(FFrame&, void* const) +native function bool HasBot(Class PawnClass); + +// Export UTgRepInfo_TaskForce::execGetNumAlivePlayers(FFrame&, void* const) +native function int GetNumAlivePlayers(); + +// Export UTgRepInfo_TaskForce::execGetPlayers(FFrame&, void* const) +native function GetPlayers(out array List); + +// Export UTgRepInfo_TaskForce::execGetPlayersByDistance(FFrame&, void* const) +native function GetPlayersByDistance(Vector fromVector, float dwDist, out array List); + +event PostInit() +{ + local TgBotFactory_Minions MinionFactoryIterator; + + // End:0x75 + foreach WorldInfo.AllActors(Class'TgGame.TgBotFactory_Minions', MinionFactoryIterator) + { + // End:0x74 + if(int(MinionFactoryIterator.s_nTaskForce) == int(r_nTaskForce)) + { + m_MinionFactories.AddItem(MinionFactoryIterator); + } + } + // End:0x13F + if(r_nScore != WorldInfo.Game.GoalScore) + { + r_nScore = WorldInfo.Game.GoalScore; + r_nScorePercent = 100; + bNetDirty = true; + // End:0x13F + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + ReceivedScoringChanges(); + } + } + //return; +} + +simulated event PostDemoRewind() +{ + super(Actor).PostDemoRewind(); + // End:0x38 + if(s_MinimapManager != none) + { + s_MinimapManager.RemoveAllEntities(); + } + //return; +} + +function CreateMinimap(TgObject.TgMapTeam Team, Class managerClass) +{ + s_MinimapManager = new (self) managerClass; + r_MapTeam = Team; + s_MinimapManager.InitForTaskforce(self); + //return; +} + +function RemoveFromTeam(Controller Other) +{ + TeamRemoveFrom(Other); + //return; +} + +simulated function bool HasActivePlayers() +{ + local int Index, Count; + + Count = GetPlayerCount(); + Index = 0; + J0x1F: + + // End:0x8B [Loop If] + if(Index < Count) + { + // End:0x7D + if(GetPlayer(Index).Owner.GetStateName() != 'PlayerMatchOver') + { + return true; + } + Index++; + // [Loop Continue] + goto J0x1F; + } + return false; + //return ReturnValue; +} + +simulated event ReceivedScoringChanges() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x5F + if(GRI != none) + { + GRI.UpdateGameScoreUI(); + } + NotifyScoreChange(); + UpdateKismetOnScore(); + //return; +} + +simulated event ReceivedTaskForceNumber() +{ + local TgPlayerController TgPC; + local TgRepInfo_Player TgPRI; + + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x8B + if(TgPC != none) + { + TgPRI = TgRepInfo_Player(TgPC.PlayerReplicationInfo); + // End:0x8B + if(TgPRI != none) + { + TgPRI.RecalculateTeamColor(); + } + } + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x24 + if(VarName == 'r_bIsSurrendering') + { + UpdateSurrenderTimer(); + } + else + { + // End:0x61 + if((VarName == 'r_nScore') || VarName == 'r_nScorePercent') + { + ReceivedScoringChanges(); + } + else + { + // End:0x85 + if(VarName == 'r_nTaskForce') + { + ReceivedTaskForceNumber(); + } + else + { + // End:0xB0 + if(!RepEvent(VarName)) + { + super.ReplicatedEvent(VarName); + } + } + } + } + //return; +} + +simulated function UpdateKismetOnScore() +{ + local Sequence GameSeq; + local array AllScoreEvents; + local int I; + local array ActivateIndices; + local TgSeqEvent_TaskForceScoreUpdated Event; + + GameSeq = WorldInfo.GetGameSequence(); + // End:0x6A + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_TaskForceScoreUpdated', true, AllScoreEvents); + } + ActivateIndices[0] = 0; + I = 0; + J0x82: + + // End:0x161 [Loop If] + if(I < AllScoreEvents.Length) + { + Event = TgSeqEvent_TaskForceScoreUpdated(AllScoreEvents[I]); + // End:0x153 + if((Event != none) && Event.DefenderTaskForce == int(r_nTaskForce)) + { + Event.currentScore = r_nScore; + Event.CheckActivate(self, none,, ActivateIndices); + } + I++; + // [Loop Continue] + goto J0x82; + } + //return; +} + +simulated function TgPlayerController FindLocalPlayerController() +{ + local PlayerController PC; + + // End:0x38 + foreach WorldInfo.AllControllers(Class'Engine.PlayerController', PC) + { + // End:0x38 + break; + } + // End:0x5B + if(PC != none) + { + return TgPlayerController(PC); + } + return none; + //return ReturnValue; +} + +simulated function NotifyScoreChange() +{ + local TgPlayerController TgPC; + + TgPC = FindLocalPlayerController(); + // End:0x4D + if(TgPC != none) + { + TgPC.OnScoreChange(int(r_nTaskForce)); + } + //return; +} + +function array getTeamPlayers() +{ + return m_TeamPlayers; + //return ReturnValue; +} + +simulated event PostTimeLapse(bool bPlayOfTheGame) +{ + // End:0x22 + if(c_nScoreOverride >= 0) + { + r_nScore = c_nScoreOverride; + } + //return; +} + +defaultproperties +{ + r_MapTeam=TgMapTeam.MAPTEAM_NEUTRAL + m_nPhoenixCount=3 + c_nScoreOverride=-1 + m_bHasThreadedWork=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgRespawnBeaconBase.uc b/exported/TgGame/Classes/TgRespawnBeaconBase.uc new file mode 100755 index 00000000..e039eb6a --- /dev/null +++ b/exported/TgGame/Classes/TgRespawnBeaconBase.uc @@ -0,0 +1,113 @@ +class TgRespawnBeaconBase extends TgDestructible + abstract + native + hidecategories(Navigation,SkeletalMeshActor); + +var() const editconst int m_nMeshAssemblyId; +var export editinline transient MeshComponent m_ActualMeshComponent; +var transient array m_BeaconNodes; +var transient bool c_bEnemyMatLoaded; +var const bool m_bShouldShowSilhouetteToFriends; +var(BeaconExit) float m_fDeployTime; + +// Export UTgRespawnBeaconBase::execForceRecalculateMaterial(FFrame&, void* const) +native function ForceRecalculateMaterial(); + +// Export UTgRespawnBeaconBase::execRecalculateMaterial(FFrame&, void* const) +native function RecalculateMaterial(bool bIsFriendlyWithLocalPawn, optional bool bForce); + +simulated event PostInitAnimTree(SkeletalMeshComponent SkelComp) +{ + local array BeaconNodes; + local AnimNode Node; + + super(Actor).PostInitAnimTree(SkelComp); + // End:0x3D + if((m_ActualMeshComponent != none) && SkelComp != m_ActualMeshComponent) + { + return; + } + m_BeaconNodes.Length = 0; + SkelComp.Animations.GetNodesByClassWrapper(BeaconNodes, Class'TgGame.TgAnimBlendByTeleportBeacon'); + // End:0xC6 + foreach BeaconNodes(Node) + { + m_BeaconNodes.AddItem(TgAnimBlendByTeleportBeacon(Node)); + } + //return; +} + +simulated function NotifyLocalPlayerTeamReceived() +{ + RecalculateMaterial(IsFriendlyWithLocalPawn()); + super(Actor).NotifyLocalPlayerTeamReceived(); + //return; +} + +defaultproperties +{ + m_fDeployTime=5.0000000 + // Reference: SkeletalMeshComponent'TgGame.Default__TgRespawnBeaconBase.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'TgGame.Default__TgDestructible.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + SkeletalMesh=SkeletalMesh'DEV_TeleportBeacon.Meshes.SKL_NPC_TeleportBeacon_Skin0_3p' + // Reference: AnimNodeSequence'TgGame.Default__TgRespawnBeaconBase.SkeletalMeshComponent0.AnimNodeSeq0' + // Archetype: AnimNodeSequence'TgGame.Default__TgDestructible.SkeletalMeshComponent0.AnimNodeSeq0' + begin object name="AnimNodeSeq0" + end object + Animations=AnimNodeSeq0 + AnimSets[0]=AnimSet'DEV_TeleportBeacon.AS_TeleportBeacon' + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgRespawnBeaconBase.MyLightEnvironment' + HiddenGame=true + CollideActors=false + Scale=2.0000000 + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgRespawnBeaconBase.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgDestructible.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'TgGame.Default__TgRespawnBeaconBase.MySilhouette' + // Archetype: TgSilhouetteComponent'TgGame.Default__TgDestructible.MySilhouette' + begin object name="MySilhouette" + MeshComponent=none + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'TgGame.Default__TgRespawnBeaconBase.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'TgGame.Default__TgDestructible.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + // Reference: CylinderComponent'TgGame.Default__TgRespawnBeaconBase.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=45.0000000 + CollisionRadius=55.0000000 + ReplacementPrimitive=none + CollideActors=true + Translation=(X=0.0000000,Y=0.0000000,Z=45.0000000) + end object + Components[4]=CollisionCylinder + RemoteRole=ENetRole.ROLE_SimulatedProxy + CollisionType=ECollisionType.COLLIDE_TouchAll + bServerTickIsDisabled=false + bPushedByEncroachers=false + bAlwaysRelevant=true + bUpdateSimulatedPosition=true + NetPriority=1.4000000 + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgRespawnBeaconEntrance.uc b/exported/TgGame/Classes/TgRespawnBeaconEntrance.uc new file mode 100755 index 00000000..1567ae08 --- /dev/null +++ b/exported/TgGame/Classes/TgRespawnBeaconEntrance.uc @@ -0,0 +1,489 @@ +class TgRespawnBeaconEntrance extends TgRespawnBeaconBase + native + hidecategories(Navigation,SkeletalMeshActor); + +enum ERespawnBeaconChargingState +{ + RBCS_Inactive, // 0 + RBCS_Waiting, // 1 + RBCS_BuildUp, // 2 + RBCS_Active, // 3 + RBCS_MAX // 4 +}; + +struct native PendingTeleportInfo +{ + var Actor PendingActor; + var float TouchTimestamp; + var bool HasPlayedPreTeleport; + + structdefaultproperties + { + PendingActor=none + TouchTimestamp=0.0000000 + HasPlayedPreTeleport=false + } +}; + +var(BeaconEntrance) TgRespawnBeaconExit ExitBeacon; +var(BeaconEntrance) bool r_bEntranceActive; +var repnotify byte r_nPendingTeleport; +var transient TgRespawnBeaconEntrance.ERespawnBeaconChargingState c_LocalChargingState; +var repnotify TgRespawnBeaconEntrance.ERespawnBeaconChargingState r_ChargingState; +var export editinline TgParticleSystemComponent m_TeleportPSC; +var float m_fChargeDelay; +var float m_fTeleportDelay; +var float m_fPreTeleportFXTime; +var float s_fChargeStateTimeStamp; +var array s_PendingTeleports; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_ChargingState, r_bEntranceActive, + r_nPendingTeleport; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x24 + if(VarName == 'r_nPendingTeleport') + { + ClientFlashTeleportFX(); + } + else + { + // End:0x45 + if(VarName == 'r_ChargingState') + { + ChargingStateChangedFX(); + } + } + //return; +} + +simulated event PostBeginPlay() +{ + super(TgDestructible).PostBeginPlay(); + ConnectToExit(); + SetHidden(!r_bEntranceActive); + //return; +} + +simulated function ConnectToExit() +{ + local int FoundIndex; + + // End:0x393 + if(ExitBeacon != none) + { + FoundIndex = ExitBeacon.m_ActiveDel.Find(BeaconSetActive); + // End:0x92 + if(FoundIndex == -1) + { + ExitBeacon.m_ActiveDel.AddItem(BeaconSetActive); + } + FoundIndex = ExitBeacon.m_DeployingDel.Find(EnableBeaconSetupFX); + // End:0x115 + if(FoundIndex == -1) + { + ExitBeacon.m_DeployingDel.AddItem(EnableBeaconSetupFX); + } + FoundIndex = ExitBeacon.m_DestroyedDel.Find(DisableBeaconFX); + // End:0x198 + if(FoundIndex == -1) + { + ExitBeacon.m_DestroyedDel.AddItem(DisableBeaconFX); + } + FoundIndex = ExitBeacon.m_CarriedDel.Find(DisableBeaconFX); + // End:0x21B + if(FoundIndex == -1) + { + ExitBeacon.m_CarriedDel.AddItem(DisableBeaconFX); + } + FoundIndex = ExitBeacon.m_Entrances.Find(self); + // End:0x27E + if(FoundIndex == -1) + { + ExitBeacon.m_Entrances.AddItem(self); + } + m_fDeployTime = ExitBeacon.m_fDeployTime; + // End:0x301 + if((int(ExitBeacon.m_nTaskForce) > int(0)) && int(ExitBeacon.m_nTaskForce) != int(m_nTaskForce)) + { + } + ExitBeacon.m_nTaskForce = m_nTaskForce; + // End:0x393 + if(ExitBeacon.m_bInitialized) + { + // End:0x393 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + ExitBeacon.NotifyLocalPlayerTeamReceived(); + } + } + } + //return; +} + +function OnBeaconEntranceSetActive(TgSeqAct_BeaconEntranceSetActive inAction) +{ + // End:0x41 + if((inAction == none) || r_bEntranceActive == inAction.m_bSetActive) + { + return; + } + r_bEntranceActive = inAction.m_bSetActive; + SetHidden(!r_bEntranceActive); + // End:0x12F + if((!r_bEntranceActive && ExitBeacon != none) && !ExitBeacon.HasAnyEnabledEntrances()) + { + // End:0x10E + if(!ExitBeacon.m_bDestroyed) + { + ExitBeacon.DestroyIt(); + } + else + { + ExitBeacon.SetActiveState(0); + } + } + //return; +} + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + // End:0x27 + if(int(Role) == int(ROLE_Authority)) + { + AddPendingTeleport(Other); + } + //return; +} + +function bool VerifyCanTeleport(TgPawn Other) +{ + // End:0x6F + if(((Other == none) || int(Other.GetTaskForceNumber()) != int(m_nTaskForce)) || int(ExitBeacon.r_ActiveState) != int(3)) + { + return false; + } + return true; + //return ReturnValue; +} + +function bool AddPendingTeleport(Actor Other) +{ + local int I; + local PendingTeleportInfo pti; + local TgPawn TgPOther; + + TgPOther = TgPawn(Other); + // End:0x36 + if(!VerifyCanTeleport(TgPOther)) + { + return false; + } + I = 0; + J0x41: + + // End:0x9D [Loop If] + if(I < s_PendingTeleports.Length) + { + // End:0x8F + if(s_PendingTeleports[I].PendingActor == Other) + { + return false; + } + I++; + // [Loop Continue] + goto J0x41; + } + pti.PendingActor = Other; + pti.TouchTimestamp = WorldInfo.TimeSeconds; + s_PendingTeleports.AddItem(pti); + return true; + //return ReturnValue; +} + +function bool RemovePendingTeleport(Actor Other) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x7C [Loop If] + if(I < s_PendingTeleports.Length) + { + // End:0x6E + if(s_PendingTeleports[I].PendingActor == Other) + { + s_PendingTeleports.Remove(I, 1); + return true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +// Export UTgRespawnBeaconEntrance::execGetNextPendingTeleport(FFrame&, void* const) +native function Actor GetNextPendingTeleport(); + +simulated event PostTouch(Actor Other) +{ + // End:0x22 + if(!r_bEntranceActive || ExitBeacon == none) + { + return; + } + ExitBeacon.AcceptTeleport(TgPawn(Other), self); + FlashTeleportFx(TgPawn(Other)); + SetChargingState(2); + super(Actor).PostTouch(Other); + //return; +} + +simulated event UnTouch(Actor Other) +{ + super(Actor).UnTouch(Other); + RemovePendingTeleport(Other); + //return; +} + +event FlashTeleportFx(TgPawn TgP) +{ + r_nPendingTeleport++; + bNetDirty = true; + // End:0x4A + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + ClientFlashTeleportFX(); + } + // End:0x7D + if(TgP != none) + { + TgP.FlashPlaySpecialEffect(10); + } + //return; +} + +simulated function ClientFlashTeleportFX() +{ + // End:0x3C + if((ExitBeacon == none) || int(ExitBeacon.r_ActiveState) != int(3)) + { + return; + } + // End:0xA3 + if(m_ActualMeshComponent != none) + { + m_ActualMeshComponent.FxDeactivateGroup('TeleportFlash', 0); + m_ActualMeshComponent.FxActivateGroup('TeleportFlash', 0); + } + ExitBeacon.ClientFlashTeleportFX(); + //return; +} + +private final simulated function ChargingStateChangedFX() +{ + local TgAnimBlendByTeleportBeacon Node; + + // End:0x48 + if((int(WorldInfo.NetMode) == int(NM_DedicatedServer)) || int(c_LocalChargingState) == int(r_ChargingState)) + { + return; + } + // End:0x303 + if(m_ActualMeshComponent != none) + { + switch(c_LocalChargingState) + { + // End:0x9D + case 1: + m_ActualMeshComponent.FxDeactivateGroup('TeleportEntranceDeploy', 0); + // End:0x106 + break; + // End:0xD0 + case 2: + m_ActualMeshComponent.FxDeactivateGroup('TeleportEntranceBuildup', 0); + // End:0x106 + break; + // End:0x103 + case 3: + m_ActualMeshComponent.FxDeactivateGroup('TeleportEntranceActive', 0); + // End:0x106 + break; + // End:0xFFFF + default: + break; + } + switch(r_ChargingState) + { + // End:0x15E + case 0: + // End:0x15A + foreach m_BeaconNodes(Node) + { + Node.Undeploy(0.5000000); + } + // End:0x303 + break; + // End:0x1D4 + case 1: + m_ActualMeshComponent.FxActivateGroup('TeleportEntranceDeploy', 0); + // End:0x1D0 + foreach m_BeaconNodes(Node) + { + Node.Deploy(m_fDeployTime); + } + // End:0x303 + break; + // End:0x26A + case 2: + m_ActualMeshComponent.FxActivateGroup('TeleportEntranceBuildup', 0); + // End:0x266 + foreach m_BeaconNodes(Node) + { + // End:0x265 + if(!Node.m_bDeployed) + { + Node.Deploy(0.0000000); + } + } + // End:0x303 + break; + // End:0x300 + case 3: + m_ActualMeshComponent.FxActivateGroup('TeleportEntranceActive', 0); + // End:0x2FC + foreach m_BeaconNodes(Node) + { + // End:0x2FB + if(!Node.m_bDeployed) + { + Node.Deploy(0.0000000); + } + } + // End:0x303 + break; + // End:0xFFFF + default: + break; + } + } + else + { + c_LocalChargingState = r_ChargingState; + //return; + } +} + +private final event SetChargingState(TgRespawnBeaconEntrance.ERespawnBeaconChargingState chargeState) +{ + // End:0x1D + if(int(r_ChargingState) == int(chargeState)) + { + return; + } + s_fChargeStateTimeStamp = WorldInfo.TimeSeconds; + r_ChargingState = chargeState; + bNetDirty = true; + ChargingStateChangedFX(); + //return; +} + +private final function BeaconSetActive() +{ + local TgPawn TgP; + + SetChargingState(2); + // End:0x62 + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + // End:0x61 + foreach TouchingActors(Class'TgGame.TgPawn', TgP) + { + AddPendingTeleport(TgP); + } + } + //return; +} + +private final function EnableBeaconSetupFX() +{ + SetChargingState(1); + //return; +} + +private final function DisableBeaconFX() +{ + SetChargingState(0); + //return; +} + +simulated event bool CanApplyEffects() +{ + return false; + //return ReturnValue; +} + +defaultproperties +{ + r_bEntranceActive=true + m_fChargeDelay=2.0000000 + m_fPreTeleportFXTime=0.5000000 + m_nMeshAssemblyId=5744 + m_bDisplayHealth=false + // Reference: SkeletalMeshComponent'TgGame.Default__TgRespawnBeaconEntrance.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'TgGame.Default__TgRespawnBeaconBase.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'TgGame.Default__TgRespawnBeaconEntrance.SkeletalMeshComponent0.AnimNodeSeq0' + // Archetype: AnimNodeSequence'TgGame.Default__TgRespawnBeaconBase.SkeletalMeshComponent0.AnimNodeSeq0' + begin object name="AnimNodeSeq0" + end object + Animations=AnimNodeSeq0 + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgRespawnBeaconEntrance.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgRespawnBeaconEntrance.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgRespawnBeaconBase.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'TgGame.Default__TgRespawnBeaconEntrance.MySilhouette' + // Archetype: TgSilhouetteComponent'TgGame.Default__TgRespawnBeaconBase.MySilhouette' + begin object name="MySilhouette" + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'TgGame.Default__TgRespawnBeaconEntrance.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'TgGame.Default__TgRespawnBeaconBase.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + // Reference: CylinderComponent'TgGame.Default__TgRespawnBeaconEntrance.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgRespawnBeaconBase.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + Components[4]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgRespawnBeaconExit.uc b/exported/TgGame/Classes/TgRespawnBeaconExit.uc new file mode 100755 index 00000000..9fd9dcc8 --- /dev/null +++ b/exported/TgGame/Classes/TgRespawnBeaconExit.uc @@ -0,0 +1,825 @@ +class TgRespawnBeaconExit extends TgRespawnBeaconBase + native + hidecategories(Navigation,SkeletalMeshActor); + +enum ERespawnBeaconActiveState +{ + RBAS_Inactive, // 0 + RBAS_Carried, // 1 + RBAS_Deploying, // 2 + RBAS_Active, // 3 + RBAS_MAX // 4 +}; + +var(BeaconExit) bool m_bChangesYaw; +var bool c_bHiddenToLocalPlayer; +var(BeaconExit) float m_fPercHealthPerSec; +var(BeaconExit) float m_fHealthRegenLockoutTime; +var int r_nRespawnTime; +var float m_fTimeUntilHealTick; +var Rotator m_rInitialRot; +var Vector m_vInitialPos; +var TgRepInfo_Player r_CarrierRepInfo; +var Actor m_SpawnPointOverride; +var TgVisibilityVolume r_CurrentVisibilityVolumes[2]; +var TgRespawnBeaconExit.ERespawnBeaconActiveState c_LocalActiveState; +var repnotify TgRespawnBeaconExit.ERespawnBeaconActiveState r_ActiveState; +var repnotify byte r_nPlayTakeHit; +var transient array m_Entrances; +var transient array< delegate > m_CarriedDel; +var transient array< delegate > m_DestroyedDel; +var transient array< delegate > m_DeployingDel; +var transient array< delegate > m_ActiveDel; +var Vector r_nDeathLocation; +var Controller m_LastDamager; +//var delegate __BeaconStateChanged__Delegate; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_ActiveState, r_CarrierRepInfo, + r_CurrentVisibilityVolumes, r_nDeathLocation, + r_nPlayTakeHit, r_nRespawnTime; +} + +simulated delegate BeaconStateChanged() +{ + //return; +} + +// Export UTgRespawnBeaconExit::execOnBeaconReset(FFrame&, void* const) +native function OnBeaconReset(); + +// Export UTgRespawnBeaconExit::execHasAnyEnabledEntrances(FFrame&, void* const) +native final function bool HasAnyEnabledEntrances(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x2A + if(VarName == 'r_ActiveState') + { + SetActiveState(r_ActiveState); + } + // End:0x4B + if(VarName == 'r_nPlayTakeHit') + { + PlayTakeHitEffect(); + } + // End:0x8E + if(((VarName == 'r_nHealth') && r_nHealth > 0) && m_bDestroyed) + { + m_bDestroyed = false; + } + super(TgDestructible).ReplicatedEvent(VarName); + //return; +} + +function OnBeaconExitSetRespawn(TgSeqAct_BeaconExitSetRespawn inAction) +{ + // End:0x11 + if(inAction == none) + { + return; + } + m_SpawnPointOverride = inAction.m_RespawnPoint; + // End:0x7C + if(inAction.m_bRespawnImmediately && int(r_ActiveState) != int(1)) + { + DestroyIt(); + } + //return; +} + +function AddVisibilityVolume(TgVisibilityVolume Vol) +{ + local int I, arrayPosCandidate; + + arrayPosCandidate = -1; + I = 0; + J0x1A: + + // End:0x8A [Loop If] + if(I < 2) + { + // End:0x59 + if(r_CurrentVisibilityVolumes[I] == none) + { + arrayPosCandidate = I; + } + else + { + // End:0x7C + if(r_CurrentVisibilityVolumes[I] == Vol) + { + return; + } + } + I++; + // [Loop Continue] + goto J0x1A; + } + // End:0xB6 + if(arrayPosCandidate >= 0) + { + r_CurrentVisibilityVolumes[arrayPosCandidate] = Vol; + } + //return; +} + +function RemoveVisibilityVolume(TgVisibilityVolume Vol) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x61 [Loop If] + if(I < 2) + { + // End:0x53 + if(r_CurrentVisibilityVolumes[I] == Vol) + { + r_CurrentVisibilityVolumes[I] = none; + return; + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated event PostBeginPlay() +{ + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce Taskforce; + + super(TgDestructible).PostBeginPlay(); + m_vInitialPos = Location; + m_rInitialRot = Rotation; + // End:0x118 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x118 + if(WorldInfo != none) + { + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x118 + if(GRI != none) + { + Taskforce = GRI.GetTaskForce(int(m_nTaskForce)); + // End:0x118 + if(Taskforce != none) + { + Taskforce.r_RespawnBeaconExit = self; + Taskforce.bNetDirty = true; + } + } + } + } + //return; +} + +simulated event bool AcceptTeleport(TgPawn Incoming, TgRespawnBeaconEntrance Source) +{ + local Rotator NewRot, oldRot; + local float Mag, HeightOffset; + local Vector oldDir, NewLocation, oldLocation; + local Controller C; + local float fIncomingHeight; + + // End:0x22 + if((Incoming == none) || Source == none) + { + return false; + } + // End:0x38 + if(int(r_ActiveState) != int(3)) + { + return false; + } + oldLocation = Incoming.Location; + NewRot = Incoming.Rotation; + // End:0xF6 + if(m_bChangesYaw) + { + oldRot = Incoming.Rotation; + NewRot.Yaw = Rotation.Yaw; + } + // End:0x18B + if(int(Role) == int(ROLE_Authority)) + { + // End:0x18A + foreach WorldInfo.AllControllers(Class'Engine.Controller', C) + { + // End:0x189 + if(C.Enemy == Incoming) + { + C.EnemyJustTeleported(); + } + } + } + fIncomingHeight = Incoming.NativeGetCollisionHeight(); + HeightOffset = float(Max(int(Incoming.Location.Z - Source.Location.Z), int(fIncomingHeight))); + NewLocation = Location; + NewLocation.Z += HeightOffset; + // End:0x295 + if(!Incoming.SetLocation(NewLocation)) + { + return false; + } + // End:0x338 + if(int(Role) == int(ROLE_Authority)) + { + NewRot.Roll = 0; + Incoming.SetRotation(NewRot); + Incoming.SetViewRotation(NewRot); + Incoming.ClientSetRotation(NewRot); + } + // End:0x3B5 + if(Incoming.Controller != none) + { + Incoming.Controller.MoveTimer = -1.0000000; + Incoming.SetMoveTarget(self); + } + Incoming.FlashPlaySpecialEffect(9, oldLocation); + // End:0x4FD + if(m_bChangesYaw) + { + // End:0x435 + if(int(Incoming.Physics) == int(1)) + { + oldRot.Pitch = 0; + } + oldDir = Vector(oldRot); + Mag = Incoming.Velocity Dot oldDir; + Incoming.Velocity = (Incoming.Velocity - (Mag * oldDir)) + (Mag * Vector(Incoming.Rotation)); + } + return true; + //return ReturnValue; +} + +function SetBeaconCollision(bool IsActive) +{ + SetCollision(IsActive, false); + //return; +} + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn TgP; + + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + TgP = TgPawn(Other); + // End:0x7E + if((TgP == none) || !CanBePickedUp(TgPawn(Other))) + { + return; + } + TgP.TouchingRespawnBeaconExit(self, true); + //return; +} + +simulated event UnTouch(Actor Other) +{ + local TgPawn TgP; + + super(Actor).UnTouch(Other); + TgP = TgPawn(Other); + // End:0x5F + if(TgP != none) + { + TgP.TouchingRespawnBeaconExit(self, false); + } + //return; +} + +simulated function bool IsValidTarget(TgPawn TgP) +{ + return (TgP != none) && int(TgP.GetTaskForceNumber()) == int(m_nTaskForce); + //return ReturnValue; +} + +simulated function bool CanBePickedUp(TgPawn TgP) +{ + return (IsValidTarget(TgP)) && int(r_ActiveState) > int(1); + //return ReturnValue; +} + +function bool Pickup(TgPawn TgP) +{ + local TgPlayerController TgPC; + + // End:0x1A + if(!CanBePickedUp(TgP)) + { + return false; + } + r_CarrierRepInfo = TgP.GetPRI(); + TgPC = TgPlayerController(TgP.Controller); + // End:0xBA + if((TgPC != none) && int(Role) == int(ROLE_Authority)) + { + TgPC.ClientRequestHelpText(123); + } + SetBeaconCollision(false); + SetActiveState(1); + bNetDirty = true; + ClearTimer('Deployed'); + return true; + //return ReturnValue; +} + +function Place(TgPawn TgP) +{ + local Vector NewLoc; + local Rotator NewRot; + + NewLoc = TgP.Location; + NewLoc.Z -= TgP.GetCollisionHeight(); + SetLocation(NewLoc); + NewRot = TgP.Rotation; + NewRot.Roll = 0; + NewRot.Pitch = 0; + SetRotation(NewRot); + PlaceAtLocation(NewLoc, NewRot); + //return; +} + +function PlaceFromDeploy(TgDeploy_RespawnBeacon TgD) +{ + local Vector NewLoc; + local Rotator NewRot; + + NewLoc = TgD.Location; + // End:0x9D + if(TgD.m_TargetComponent != none) + { + NewLoc.Z += TgD.m_TargetComponent.CollisionHeight; + } + NewRot = TgD.Rotation; + NewRot.Pitch = 0; + NewRot.Roll = 0; + PlaceAtLocation(NewLoc, NewRot); + //return; +} + +function PlaceAtLocation(Vector NewLocation, Rotator NewRotation) +{ + r_CarrierRepInfo = none; + SetLocation(NewLocation); + SetRotation(NewRotation); + SetBeaconCollision(true); + SetActiveState(2); + r_nDeathLocation = Location; + m_bDestroyed = false; + r_nHealth = r_nMaxHealth; + // End:0x99 + if(m_fDeployTime > 0.0000000) + { + SetTimer(m_fDeployTime, false, 'Deployed'); + } + else + { + Deployed(); + } + //return; +} + +function Deployed() +{ + local float fDesiredLifeSpan; + + SetBeaconCollision(true); + SetActiveState(3); + fDesiredLifeSpan = GetDesiredLifeSpan(); + // End:0x55 + if(fDesiredLifeSpan > 0.0000000) + { + SetTimer(fDesiredLifeSpan, false, 'DestroyIt'); + } + //return; +} + +simulated function DestroyIt(optional bool bSkipFx) +{ + // End:0x10 + if(m_bDestroyed) + { + return; + } + ClearTimer('DestroyIt'); + super(TgDestructible).DestroyIt(bSkipFx); + // End:0x10E + if(int(Role) == int(ROLE_Authority)) + { + SetBeaconCollision(false); + // End:0xAB + if(m_SpawnPointOverride != none) + { + SetLocation(m_SpawnPointOverride.Location); + SetRotation(m_SpawnPointOverride.Rotation); + } + else + { + SetLocation(m_vInitialPos); + SetRotation(m_rInitialRot); + } + OnBeaconReset(); + r_CarrierRepInfo = none; + SetActiveState(0); + ClearTimer('Deployed'); + BeginRespawnTimer(); + bNetDirty = true; + } + //return; +} + +function float GetDesiredLifeSpan() +{ + local TgGame_Paladins Game; + + Game = TgGame_Paladins(WorldInfo.Game); + return ((Game != none) ? Game.m_fRespawnBeaconLifeSpan : 0.0000000); + //return ReturnValue; +} + +function BeginRespawnTimer() +{ + //return; +} + +function UpdateRespawnTime() +{ + r_nRespawnTime--; + // End:0x24 + if(r_nRespawnTime <= 0) + { + Respawn(); + } + //return; +} + +function Respawn() +{ + ClearTimer('UpdateRespawnTime'); + SetActiveState(2); + SetTimer(m_fDeployTime, false, 'Deployed'); + r_CarrierRepInfo = none; + SetBeaconCollision(true); + ForceNetRelevant(); + SetCollision(true, false); + m_bDestroyed = false; + r_nHealth = r_nMaxHealth; + bNetDirty = true; + //return; +} + +simulated function FXCarried() +{ + local delegate beaconStateChangeDelegate; + + // End:0x40 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x3F + foreach m_CarriedDel(beaconStateChangeDelegate) + { + BeaconStateChanged(); + } + } + // End:0xA7 + if(m_ActualMeshComponent != none) + { + m_ActualMeshComponent.FxDeactivateGroup('TeleportExitPickup', 0); + m_ActualMeshComponent.FxActivateGroup('TeleportExitPickup', 0); + } + m_bDisplayHealth = false; + SetHidden(true); + //return; +} + +simulated function FXDestroyed() +{ + local delegate beaconStateChangeDelegate; + + // End:0x40 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x3F + foreach m_DestroyedDel(beaconStateChangeDelegate) + { + BeaconStateChanged(); + } + } + m_bDisplayHealth = false; + SetHidden(true); + // End:0xD9 + if(m_ActualMeshComponent != none) + { + m_ActualMeshComponent.FxSpawnEmitter('Destroyed', 0, r_nDeathLocation, Vector(Rotation)); + m_ActualMeshComponent.FxSpawnSound('Destroyed', 0, r_nDeathLocation); + } + //return; +} + +simulated function FXDeploying() +{ + local delegate beaconStateChangeDelegate; + local editinline SkeletalMeshComponent SkelComp; + local TgAnimBlendByTeleportBeacon Node; + + // End:0x40 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x3F + foreach m_DeployingDel(beaconStateChangeDelegate) + { + BeaconStateChanged(); + } + } + m_bDisplayHealth = true; + SetHidden(false); + // End:0xFB + if(m_ActualMeshComponent != none) + { + SkelComp = SkeletalMeshComponent(m_ActualMeshComponent); + // End:0xCE + if(SkelComp != none) + { + SkelComp.SetAnimTreeTemplate(SkelComp.AnimTreeTemplate); + } + m_ActualMeshComponent.FxActivateGroup('TeleportExitDeploy', 0); + } + // End:0x13B + foreach m_BeaconNodes(Node) + { + Node.Deploy(m_fDeployTime); + } + //return; +} + +simulated function FXActive() +{ + local delegate beaconStateChangeDelegate; + local TgAnimBlendByTeleportBeacon Node; + + // End:0x40 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x3F + foreach m_ActiveDel(beaconStateChangeDelegate) + { + BeaconStateChanged(); + } + } + m_bDisplayHealth = true; + SetHidden(false); + // End:0x93 + if(m_ActualMeshComponent != none) + { + m_ActualMeshComponent.FxActivateGroup('TeleportExitActive', 0); + } + // End:0xF3 + foreach m_BeaconNodes(Node) + { + // End:0xF2 + if(!Node.m_bDeployed) + { + Node.Deploy(0.0000000); + } + } + //return; +} + +simulated function FXEndDeploying() +{ + // End:0x3A + if(m_ActualMeshComponent != none) + { + m_ActualMeshComponent.FxDeactivateGroup('TeleportExitDeploy', 0); + } + //return; +} + +simulated function FXEndActive() +{ + // End:0x3A + if(m_ActualMeshComponent != none) + { + m_ActualMeshComponent.FxDeactivateGroup('TeleportExitActive', 0); + } + //return; +} + +simulated function PlayTakeHitEffect() +{ + // End:0x92 + if((int(WorldInfo.NetMode) != int(NM_DedicatedServer)) && m_ActualMeshComponent != none) + { + m_ActualMeshComponent.FxDeactivateGroup('TeleportExitHit', 0); + m_ActualMeshComponent.FxActivateGroup('TeleportExitHit', 0); + } + //return; +} + +event TakeDamage(int Damage, Controller EventInstigator, Vector HitLocation, Vector Momentum, Class DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser) +{ + m_LastDamager = EventInstigator; + super(TgDestructible).TakeDamage(Damage, EventInstigator, HitLocation, Momentum, DamageType, HitInfo, DamageCauser); + m_LastDamager = none; + m_fTimeUntilHealTick = m_fHealthRegenLockoutTime; + // End:0xA0 + if(r_nHealth > 0) + { + r_nPlayTakeHit++; + PlayTakeHitEffect(); + } + //return; +} + +simulated function SetActiveState(TgRespawnBeaconExit.ERespawnBeaconActiveState NewState) +{ + local TgPawn P; + + // End:0x44 + if(int(Role) == int(ROLE_Authority)) + { + // End:0x31 + if(int(NewState) == int(r_ActiveState)) + { + return; + } + r_ActiveState = NewState; + } + // End:0x192 + if(int(c_LocalActiveState) != int(NewState)) + { + switch(c_LocalActiveState) + { + // End:0x84 + case 2: + FXEndDeploying(); + // End:0x99 + break; + // End:0x96 + case 3: + FXEndActive(); + // End:0x99 + break; + // End:0xFFFF + default: + break; + } + switch(NewState) + { + // End:0xBE + case 0: + FXDestroyed(); + // End:0xF7 + break; + // End:0xD0 + case 1: + FXCarried(); + // End:0xF7 + break; + // End:0xE2 + case 2: + FXDeploying(); + // End:0xF7 + break; + // End:0xF4 + case 3: + FXActive(); + // End:0xF7 + break; + // End:0xFFFF + default: + break; + } + // End:0x17F + if((int(c_LocalActiveState) > int(1)) != (int(NewState) > int(1))) + { + // End:0x17E + foreach TouchingActors(Class'TgGame.TgPawn', P) + { + // End:0x17D + if(IsValidTarget(P)) + { + P.TouchingRespawnBeaconExit(self, int(NewState) > int(1)); + } + } + } + c_LocalActiveState = NewState; + } + //return; +} + +simulated function ClientFlashTeleportFX() +{ + // End:0x16 + if(int(r_ActiveState) != int(3)) + { + return; + } + // End:0x7D + if(m_ActualMeshComponent != none) + { + m_ActualMeshComponent.FxDeactivateGroup('TeleportFlash', 0); + m_ActualMeshComponent.FxActivateGroup('TeleportFlash', 0); + } + //return; +} + +simulated function SetPendingTeleportFx(bool bIsPendingTeleport) +{ + // End:0x62 + if(bIsPendingTeleport) + { + // End:0x23 + if(int(r_ActiveState) != int(3)) + { + return; + } + // End:0x5F + if(m_ActualMeshComponent != none) + { + m_ActualMeshComponent.FxActivateGroup('TeleportPending', 0); + } + } + else + { + // End:0x9C + if(m_ActualMeshComponent != none) + { + m_ActualMeshComponent.FxDeactivateGroup('TeleportPending', 0); + } + } + //return; +} + +defaultproperties +{ + m_bChangesYaw=true + m_fPercHealthPerSec=0.1500000 + m_fHealthRegenLockoutTime=3.0000000 + m_nMeshAssemblyId=5746 + m_bShouldShowSilhouetteToFriends=true + r_nMaxHealth=1900 + m_bDisplayHealth=false + // Reference: SkeletalMeshComponent'TgGame.Default__TgRespawnBeaconExit.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'TgGame.Default__TgRespawnBeaconBase.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'TgGame.Default__TgRespawnBeaconExit.SkeletalMeshComponent0.AnimNodeSeq0' + // Archetype: AnimNodeSequence'TgGame.Default__TgRespawnBeaconBase.SkeletalMeshComponent0.AnimNodeSeq0' + begin object name="AnimNodeSeq0" + end object + Animations=AnimNodeSeq0 + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgRespawnBeaconExit.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgRespawnBeaconExit.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgRespawnBeaconBase.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'TgGame.Default__TgRespawnBeaconExit.MySilhouette' + // Archetype: TgSilhouetteComponent'TgGame.Default__TgRespawnBeaconBase.MySilhouette' + begin object name="MySilhouette" + SilhouetteColor=(R=0.0780566,G=0.7154654,B=0.8671355,A=0.2500000) + NearThickness=0.5500000 + FarThickness=4.0000000 + ReplacementPrimitive=none + TickGroup=ETickingGroup.TG_PostAsyncWork + end object + Silhouette=MySilhouette + // Reference: AudioComponent'TgGame.Default__TgRespawnBeaconExit.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'TgGame.Default__TgRespawnBeaconBase.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + // Reference: CylinderComponent'TgGame.Default__TgRespawnBeaconExit.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgRespawnBeaconBase.CollisionCylinder' + begin object name="CollisionCylinder" + CollisionHeight=15.0000000 + ReplacementPrimitive=none + Translation=(X=0.0000000,Y=0.0000000,Z=15.0000000) + end object + Components[4]=CollisionCylinder + bHidden=true + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSavedMove.uc b/exported/TgGame/Classes/TgSavedMove.uc new file mode 100755 index 00000000..16db0500 --- /dev/null +++ b/exported/TgGame/Classes/TgSavedMove.uc @@ -0,0 +1,121 @@ +class TgSavedMove extends SavedMove; + +const bJumpHeldBit = 16; +const bUltHeldBit = 4; + +var bool m_bJumpHeld; +var bool m_bUltHeld; +var byte m_byMoveSpeed; + +function Clear() +{ + super.Clear(); + m_bJumpHeld = false; + m_bUltHeld = false; + //return; +} + +function bool CanCombineWith(SavedMove NewMove, Pawn inPawn, float MaxDelta) +{ + local TgSavedMove TrSM; + local bool bRetval; + + bRetval == super.CanCombineWith(NewMove, inPawn, MaxDelta); + TrSM = TgSavedMove(NewMove); + // End:0x67 + if(TrSM == none) + { + return bRetval; + } + return ((bRetval && m_bJumpHeld == TrSM.m_bJumpHeld) && m_bUltHeld == TrSM.m_bUltHeld) && int(m_byMoveSpeed) == int(TrSM.m_byMoveSpeed); + //return ReturnValue; +} + +function SetMoveFor(PlayerController P, float DeltaTime, Vector newAccel, Actor.EDoubleClickDir InDoubleClick) +{ + local TgPlayerController TgPC; + + super.SetMoveFor(P, DeltaTime, newAccel, InDoubleClick); + TgPC = TgPlayerController(P); + // End:0x10E + if(TgPC != none) + { + m_byMoveSpeed = TgPC.m_byDesiredMoveSpeedReduction; + m_bJumpHeld = (int(TgPC.m_JumpHeld) > int(0)) || int(TgPC.m_JumpHeldAlt) > int(0); + m_bUltHeld = int(TgPC.m_UltHeld) > int(0); + } + //return; +} + +function byte CompressedFlags() +{ + local byte Result; + + Result = DoubleClickMove; + // End:0x2F + if(m_bJumpHeld) + { + Result += byte(16); + } + // End:0x4B + if(m_bUltHeld) + { + Result += byte(4); + } + // End:0x65 + if(bPressedJump) + { + Result += 32; + } + Result = byte(int(Result) | ((int(m_byMoveSpeed) & int(3)) << 6)); + return Result; + //return ReturnValue; +} + +static function Actor.EDoubleClickDir SetFlags(byte Flags, PlayerController PC) +{ + local TgPlayerController TgPC; + + TgPC = TgPlayerController(PC); + // End:0xD5 + if(TgPC != none) + { + TgPC.m_JumpHeld = (((int(Flags) & 16) != 0) ? 1 : 0); + TgPC.m_UltHeld = (((int(Flags) & 4) != 0) ? 1 : 0); + TgPC.m_byDesiredMoveSpeedReduction = byte((int(Flags) >> int(6)) & 3); + } + PC.bPressedJump = (int(Flags) & int(32)) != 0; + switch(int(Flags) & int(7)) + { + // End:0x12E + case 0: + return 0; + // End:0x15C + break; + // End:0x138 + case 1: + return 1; + // End:0x15C + break; + // End:0x143 + case 2: + return 2; + // End:0x15C + break; + // End:0x14E + case 3: + return 3; + // End:0x15C + break; + // End:0x159 + case 4: + return 4; + // End:0x15C + break; + // End:0xFFFF + default: + break; + } + return 0; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgScreenCapturePostEffect.uc b/exported/TgGame/Classes/TgScreenCapturePostEffect.uc new file mode 100755 index 00000000..573f0228 --- /dev/null +++ b/exported/TgGame/Classes/TgScreenCapturePostEffect.uc @@ -0,0 +1,19 @@ +class TgScreenCapturePostEffect extends MaterialEffect + native + hidecategories(Object); + +var transient TextureRenderTarget2D ScreenCapture; +var transient bool bIsScreenCaptureReady; + +// Export UTgScreenCapturePostEffect::execInitializeRenderTarget(FFrame&, void* const) +native function InitializeRenderTarget(PlayerController PlayerController); + +// Export UTgScreenCapturePostEffect::execCleanupRenderTarget(FFrame&, void* const) +native function CleanupRenderTarget(); + +function Cleanup(PostProcessChain InPostProcessChain) +{ + InPostProcessChain.Effects.RemoveItem(self); + CleanupRenderTarget(); + //return; +} diff --git a/exported/TgGame/Classes/TgSeqAct_AIFreeze.uc b/exported/TgGame/Classes/TgSeqAct_AIFreeze.uc new file mode 100755 index 00000000..113fc53f --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_AIFreeze.uc @@ -0,0 +1,13 @@ +class TgSeqAct_AIFreeze extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int TaskForceNumber; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Freeze",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Unfreeze",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Freeze" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_AIMoveToActor.uc b/exported/TgGame/Classes/TgSeqAct_AIMoveToActor.uc new file mode 100755 index 00000000..a2d98d41 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_AIMoveToActor.uc @@ -0,0 +1,13 @@ +class TgSeqAct_AIMoveToActor extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() Actor Destination; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Destination",LinkVar="None",PropertyName="Destination",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Move to Actor" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_AIStartFireAt.uc b/exported/TgGame/Classes/TgSeqAct_AIStartFireAt.uc new file mode 100755 index 00000000..013cb237 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_AIStartFireAt.uc @@ -0,0 +1,13 @@ +class TgSeqAct_AIStartFireAt extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() byte ForcedFireMode; + +defaultproperties +{ + ForcedFireMode=255 + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Fire At",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Start Firing At" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_AIStopFire.uc b/exported/TgGame/Classes/TgSeqAct_AIStopFire.uc new file mode 100755 index 00000000..17d67f86 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_AIStopFire.uc @@ -0,0 +1,8 @@ +class TgSeqAct_AIStopFire extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + ObjName="Stop Firing" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_AITargetActor.uc b/exported/TgGame/Classes/TgSeqAct_AITargetActor.uc new file mode 100755 index 00000000..5941e6e0 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_AITargetActor.uc @@ -0,0 +1,13 @@ +class TgSeqAct_AITargetActor extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() Actor CombatTarget; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Combat Target",LinkVar="None",PropertyName="CombatTarget",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Target Actor" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_AddAnimSets.uc b/exported/TgGame/Classes/TgSeqAct_AddAnimSets.uc new file mode 100755 index 00000000..ca70e479 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_AddAnimSets.uc @@ -0,0 +1,13 @@ +class TgSeqAct_AddAnimSets extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() array m_MaleAnimSets; +var() array m_FemaleAnimSets; +var() bool m_bAppendToExisting; + +defaultproperties +{ + m_bAppendToExisting=true + ObjName="Add Anim Sets" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_BeaconEntranceSetActive.uc b/exported/TgGame/Classes/TgSeqAct_BeaconEntranceSetActive.uc new file mode 100755 index 00000000..18b98f2c --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_BeaconEntranceSetActive.uc @@ -0,0 +1,12 @@ +class TgSeqAct_BeaconEntranceSetActive extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var bool m_bSetActive; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="BeaconEntrance",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="ActiveState",LinkVar="None",PropertyName="m_bSetActive",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="BeaconEntranceSetActive" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_BeaconExitSetRespawn.uc b/exported/TgGame/Classes/TgSeqAct_BeaconExitSetRespawn.uc new file mode 100755 index 00000000..a03d5c2a --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_BeaconExitSetRespawn.uc @@ -0,0 +1,14 @@ +class TgSeqAct_BeaconExitSetRespawn extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var Actor m_RespawnPoint; +var bool m_bRespawnImmediately; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="BeaconExit",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="RespawnPoint",LinkVar="None",PropertyName="m_RespawnPoint",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="RespawnImmediately",LinkVar="None",PropertyName="m_bRespawnImmediately",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="BeaconExitSetRespawn" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_BeginWaitForLookAt.uc b/exported/TgGame/Classes/TgSeqAct_BeginWaitForLookAt.uc new file mode 100755 index 00000000..bf43eb19 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_BeginWaitForLookAt.uc @@ -0,0 +1,33 @@ +class TgSeqAct_BeginWaitForLookAt extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() Vector LocationToLookAt; +var() float MinOffsetDistance; + +function Activated() +{ + local TgPlayerController TgPC; + + // End:0xC9 + foreach GetWorldInfo().AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + // End:0xC8 + if(TgPC.IsLocalPlayerController()) + { + TgPC.m_bIsTrackingAimTowardTargetLocation = true; + TgPC.m_TrackingTargetLocation = LocationToLookAt; + TgPC.m_fTrackingTargetMaxAimDistDiff = MinOffsetDistance; + } + } + //return; +} + +defaultproperties +{ + MinOffsetDistance=1.5000000 + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Location To Look At",LinkVar="None",PropertyName="LocationToLookAt",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Min Aim Distance from Location",LinkVar="None",PropertyName="MinOffsetDistance",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Begin Wait For LookAt" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_ChangeScale.uc b/exported/TgGame/Classes/TgSeqAct_ChangeScale.uc new file mode 100755 index 00000000..60caa9a1 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_ChangeScale.uc @@ -0,0 +1,18 @@ +class TgSeqAct_ChangeScale extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() float TargetScale; +var() Vector TargetScale3D; +var() float TransitionTime; + +defaultproperties +{ + TargetScale=1.0000000 + TargetScale3D=(X=1.0000000,Y=1.0000000,Z=1.0000000) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="TargetScale",LinkVar="None",PropertyName="TargetScale",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="TargetScale3D",LinkVar="None",PropertyName="TargetScale3D",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Time",LinkVar="None",PropertyName="TransitionTime",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Change Scale" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_ClientLoadDevices.uc b/exported/TgGame/Classes/TgSeqAct_ClientLoadDevices.uc new file mode 100755 index 00000000..e7f9d2f4 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_ClientLoadDevices.uc @@ -0,0 +1,13 @@ +class TgSeqAct_ClientLoadDevices extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() array m_DeviceIdList; +var() bool m_bClearExistingLoads; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Pawn",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="ClientLoadDevices" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_CloseHUDMenus.uc b/exported/TgGame/Classes/TgSeqAct_CloseHUDMenus.uc new file mode 100755 index 00000000..d99cc045 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_CloseHUDMenus.uc @@ -0,0 +1,27 @@ +class TgSeqAct_CloseHUDMenus extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +function Activated() +{ + local TgPlayerController TgPC; + + // End:0x7A + foreach GetWorldInfo().AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + // End:0x79 + if(TgPC.IsLocalPlayerController()) + { + TgPC.CloseHUDMenus(); + // End:0x7A + break; + } + } + //return; +} + +defaultproperties +{ + ObjName="Close HUD Menus" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_DefenseWaveSpawner.uc b/exported/TgGame/Classes/TgSeqAct_DefenseWaveSpawner.uc new file mode 100755 index 00000000..db16af62 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_DefenseWaveSpawner.uc @@ -0,0 +1,20 @@ +class TgSeqAct_DefenseWaveSpawner extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var int m_nRoundNumber; +var float m_fSpawnFrequency; +var transient float m_fNextSpawnTime; + +defaultproperties +{ + bCallHandler=false + bAutoActivateOutputLinks=false + InputLinks=none + OutputLinks[0]=(Links=none,LinkDesc="Activated",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Round Number",LinkVar="None",PropertyName="m_nRoundNumber",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Spawn Frequency",LinkVar="None",PropertyName="m_fSpawnFrequency",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Bot Factories",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Defense Wave Spawner" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_DespawnBots.uc b/exported/TgGame/Classes/TgSeqAct_DespawnBots.uc new file mode 100755 index 00000000..61d74fca --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_DespawnBots.uc @@ -0,0 +1,9 @@ +class TgSeqAct_DespawnBots extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Factory/Pawn",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Despawn Bots" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_EndMission.uc b/exported/TgGame/Classes/TgSeqAct_EndMission.uc new file mode 100755 index 00000000..56940666 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_EndMission.uc @@ -0,0 +1,4 @@ +class TgSeqAct_EndMission extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); diff --git a/exported/TgGame/Classes/TgSeqAct_FillUltimateEnergy.uc b/exported/TgGame/Classes/TgSeqAct_FillUltimateEnergy.uc new file mode 100755 index 00000000..5439005c --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_FillUltimateEnergy.uc @@ -0,0 +1,27 @@ +class TgSeqAct_FillUltimateEnergy extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +function Activated() +{ + local TgPawn Pawn; + local TgPlayerController TgPC; + + // End:0xB7 + foreach GetWorldInfo().AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + Pawn = TgPawn(TgPC.Pawn); + // End:0xB6 + if(Pawn != none) + { + Pawn.SetPropCurrentValue(2, Pawn.GetPropCurrentValue(1)); + } + } + //return; +} + +defaultproperties +{ + ObjName="Fill Ultimate Energy" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_ForceClientTutorialAction.uc b/exported/TgGame/Classes/TgSeqAct_ForceClientTutorialAction.uc new file mode 100755 index 00000000..09835bdf --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_ForceClientTutorialAction.uc @@ -0,0 +1,22 @@ +class TgSeqAct_ForceClientTutorialAction extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +enum eForcedClientTutorialAction +{ + FCTA_BlockAvl, // 0 + FCTA_UnblockAvl, // 1 + FCTA_Open, // 2 + FCTA_Close, // 3 + FCTA_MAX // 4 +}; + +var() TgSeqAct_ForceClientTutorialAction.eForcedClientTutorialAction ForcedAction; +var() TgObject.eTutorialForceableElements GameUIElement; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Targets",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Force Client Tutorial Action" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_GetBot.uc b/exported/TgGame/Classes/TgSeqAct_GetBot.uc new file mode 100755 index 00000000..b370e12c --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_GetBot.uc @@ -0,0 +1,13 @@ +class TgSeqAct_GetBot extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var int m_nBotNumber; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Factory",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Bot Number",LinkVar="None",PropertyName="m_nBotNumber",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Bot Pawn",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="GetBot" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_GetCharClass.uc b/exported/TgGame/Classes/TgSeqAct_GetCharClass.uc new file mode 100755 index 00000000..bff547b7 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_GetCharClass.uc @@ -0,0 +1,14 @@ +class TgSeqAct_GetCharClass extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bAutoActivateOutputLinks=false + OutputLinks[0]=(Links=none,LinkDesc="Assault",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Infiltrator",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Medic",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Robotics",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Pawn",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="GetCharClass" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_GetLocalPlayerController.uc b/exported/TgGame/Classes/TgSeqAct_GetLocalPlayerController.uc new file mode 100755 index 00000000..da17d995 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_GetLocalPlayerController.uc @@ -0,0 +1,30 @@ +class TgSeqAct_GetLocalPlayerController extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var TgPlayerController LocalPlayerController; + +function Activated() +{ + local TgPlayerController TgPC; + + // End:0x6E + foreach GetWorldInfo().AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + // End:0x6D + if(TgPC.IsLocalPlayerController()) + { + LocalPlayerController = TgPC; + // End:0x6E + break; + } + } + //return; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Local Player Controller",LinkVar="None",PropertyName="LocalPlayerController",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Get Local Player Controller" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_GetMaterialInst.uc b/exported/TgGame/Classes/TgSeqAct_GetMaterialInst.uc new file mode 100755 index 00000000..2036dc1a --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_GetMaterialInst.uc @@ -0,0 +1,15 @@ +class TgSeqAct_GetMaterialInst extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() MaterialInstance MatInst; +var() string MatInstName; +var() int MaterialIndex; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Mesh",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="MaterialInstanceConstant",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="GetMaterialInst" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_GetPlayerCount.uc b/exported/TgGame/Classes/TgSeqAct_GetPlayerCount.uc new file mode 100755 index 00000000..4c80475c --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_GetPlayerCount.uc @@ -0,0 +1,21 @@ +class TgSeqAct_GetPlayerCount extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int m_nTaskForce; +var float m_fPlayerCount; +var float m_fAssaultCount; +var float m_fMedicCount; +var float m_fReconCount; +var float m_fRoboticsCount; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Players",LinkVar="None",PropertyName="m_fPlayerCount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Assault",LinkVar="None",PropertyName="m_fAssaultCount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Medic",LinkVar="None",PropertyName="m_fMedicCount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Recon",LinkVar="None",PropertyName="m_fReconCount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[4]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Robotics",LinkVar="None",PropertyName="m_fRoboticsCount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="GetPlayerCount" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_GetTaskForceCount.uc b/exported/TgGame/Classes/TgSeqAct_GetTaskForceCount.uc new file mode 100755 index 00000000..c476300e --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_GetTaskForceCount.uc @@ -0,0 +1,15 @@ +class TgSeqAct_GetTaskForceCount extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int Taskforce; +var int m_nPlayerCount; +var int m_nBotCount; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Player Count",LinkVar="None",PropertyName="m_nPlayerCount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Bot Count",LinkVar="None",PropertyName="m_nBotCount",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="GetTaskForceCount" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_GetTaskForceNumber.uc b/exported/TgGame/Classes/TgSeqAct_GetTaskForceNumber.uc new file mode 100755 index 00000000..7bc55579 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_GetTaskForceNumber.uc @@ -0,0 +1,10 @@ +class TgSeqAct_GetTaskForceNumber extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Actor",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="TaskForceNumber",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="GetTaskForceNumber" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_GetTeamIndex.uc b/exported/TgGame/Classes/TgSeqAct_GetTeamIndex.uc new file mode 100755 index 00000000..3a37977d --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_GetTeamIndex.uc @@ -0,0 +1,10 @@ +class TgSeqAct_GetTeamIndex extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Pawn",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="TeamIndex",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="GetTeamIndex" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_GiveCredits.uc b/exported/TgGame/Classes/TgSeqAct_GiveCredits.uc new file mode 100755 index 00000000..45db395b --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_GiveCredits.uc @@ -0,0 +1,42 @@ +class TgSeqAct_GiveCredits extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int CreditsToGive; + +function Activated() +{ + local TgGame_Paladins ChaosGame; + local Controller TheController; + local TgPaladinsController TgPC; + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(GetWorldInfo().GRI); + // End:0x13B + if(!GRI.r_bBlockCreditGain) + { + ChaosGame = TgGame_Paladins(GetWorldInfo().Game); + // End:0x13B + if(ChaosGame != none) + { + // End:0x13A + foreach GetWorldInfo().AllControllers(Class'Engine.Controller', TheController) + { + TgPC = TgPaladinsController(TheController); + // End:0x139 + if(NotEqual_InterfaceInterface(TgPC, TgPaladinsController(none))) + { + ChaosGame.GiveCredits(TgPC, CreditsToGive); + } + } + } + } + //return; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Credits to Give",LinkVar="None",PropertyName="CreditsToGive",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Give Credits" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_GiveFullVitals.uc b/exported/TgGame/Classes/TgSeqAct_GiveFullVitals.uc new file mode 100755 index 00000000..bfd5ecbd --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_GiveFullVitals.uc @@ -0,0 +1,10 @@ +class TgSeqAct_GiveFullVitals extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Targets",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Give Full Vitals" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_HackBot.uc b/exported/TgGame/Classes/TgSeqAct_HackBot.uc new file mode 100755 index 00000000..1d1aa95b --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_HackBot.uc @@ -0,0 +1,12 @@ +class TgSeqAct_HackBot extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var Actor m_ControlPawn; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Bots/Factory",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Control Pawn",LinkVar="None",PropertyName="m_ControlPawn",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Hack Bot" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_JoinTeam.uc b/exported/TgGame/Classes/TgSeqAct_JoinTeam.uc new file mode 100755 index 00000000..f850a271 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_JoinTeam.uc @@ -0,0 +1,12 @@ +class TgSeqAct_JoinTeam extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() Actor TeamLeader; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Targets",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="TeamLeader",LinkVar="None",PropertyName="TeamLeader",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="JoinTeam" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_KillBots.uc b/exported/TgGame/Classes/TgSeqAct_KillBots.uc new file mode 100755 index 00000000..5a491d1a --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_KillBots.uc @@ -0,0 +1,9 @@ +class TgSeqAct_KillBots extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Bots/Factory",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Kill Bots" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_KillCurrentSquad.uc b/exported/TgGame/Classes/TgSeqAct_KillCurrentSquad.uc new file mode 100755 index 00000000..a72579fe --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_KillCurrentSquad.uc @@ -0,0 +1,9 @@ +class TgSeqAct_KillCurrentSquad extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Factory",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="KillCurrentSquad" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_Killpawns.uc b/exported/TgGame/Classes/TgSeqAct_Killpawns.uc new file mode 100755 index 00000000..ac87f999 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_Killpawns.uc @@ -0,0 +1,8 @@ +class TgSeqAct_Killpawns extends TgSeqAct_KillBots + hidecategories(Object); + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Pawn(s) To Kill",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Kill Pawn" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_LaunchHomeInstance.uc b/exported/TgGame/Classes/TgSeqAct_LaunchHomeInstance.uc new file mode 100755 index 00000000..c2b221c9 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_LaunchHomeInstance.uc @@ -0,0 +1,8 @@ +class TgSeqAct_LaunchHomeInstance extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + ObjName="Launch Home Instance" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_LogTutorialAction.uc b/exported/TgGame/Classes/TgSeqAct_LogTutorialAction.uc new file mode 100755 index 00000000..c889ade1 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_LogTutorialAction.uc @@ -0,0 +1,13 @@ +class TgSeqAct_LogTutorialAction extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() int PlayerAction; +var() int EventData; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Targets",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="EventData",LinkVar="None",PropertyName="EventData",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Log Tutorial Action" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_MapOutroFinished.uc b/exported/TgGame/Classes/TgSeqAct_MapOutroFinished.uc new file mode 100755 index 00000000..333d6079 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_MapOutroFinished.uc @@ -0,0 +1,9 @@ +class TgSeqAct_MapOutroFinished extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + ObjName="Map Outro Finished" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_MarkSpawnReturn.uc b/exported/TgGame/Classes/TgSeqAct_MarkSpawnReturn.uc new file mode 100755 index 00000000..082b5d76 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_MarkSpawnReturn.uc @@ -0,0 +1,19 @@ +class TgSeqAct_MarkSpawnReturn extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() Teleporter m_Teleporter; + +event Activated() +{ + super(SequenceOp).Activated(); + OutputLinks[0].bHasImpulse = true; + return; + //return; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Player",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Mark Spawn Return" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_NavIndicator.uc b/exported/TgGame/Classes/TgSeqAct_NavIndicator.uc new file mode 100755 index 00000000..dfa99e1e --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_NavIndicator.uc @@ -0,0 +1,13 @@ +class TgSeqAct_NavIndicator extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var Actor m_NavTarget; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Player(s)",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Destination",LinkVar="None",PropertyName="m_NavTarget",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Nav Indicator" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_ParentAnimComponent.uc b/exported/TgGame/Classes/TgSeqAct_ParentAnimComponent.uc new file mode 100755 index 00000000..486b2524 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_ParentAnimComponent.uc @@ -0,0 +1,12 @@ +class TgSeqAct_ParentAnimComponent extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() bool bDetach; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Parent",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Child",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Parent Anim Component" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_PauseSetupTimer.uc b/exported/TgGame/Classes/TgSeqAct_PauseSetupTimer.uc new file mode 100755 index 00000000..8ff19d4b --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_PauseSetupTimer.uc @@ -0,0 +1,34 @@ +class TgSeqAct_PauseSetupTimer extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var(PauseSetupTimer) bool PauseImmediately; +var(PauseSetupTimer) float PauseAtTimeRemaining; + +function Activated() +{ + local TgGame_Paladins_Tutorial TgG; + + TgG = TgGame_Paladins_Tutorial(GetWorldInfo().Game); + // End:0xBE + if((TgG != none) && !TgG.m_bSetupTimerPaused) + { + // End:0x96 + if(PauseImmediately) + { + TgG.PauseSetupTimer(); + } + else + { + TgG.PauseSetupTimerAt(PauseAtTimeRemaining); + } + } + //return; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Pause Immediately",LinkVar="None",PropertyName="PauseImmediately",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Pause At Time Remaining",LinkVar="None",PropertyName="PauseAtTimeRemaining",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Pause Setup Timer" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_PingMinimap.uc b/exported/TgGame/Classes/TgSeqAct_PingMinimap.uc new file mode 100755 index 00000000..55bf104f --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_PingMinimap.uc @@ -0,0 +1,13 @@ +class TgSeqAct_PingMinimap extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var Actor m_PingTarget; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Destination",LinkVar="None",PropertyName="m_PingTarget",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Ping Minimap" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_PlayAnnouncement.uc b/exported/TgGame/Classes/TgSeqAct_PlayAnnouncement.uc new file mode 100755 index 00000000..29ab058e --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_PlayAnnouncement.uc @@ -0,0 +1,38 @@ +class TgSeqAct_PlayAnnouncement extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() bool bPlayImmediately; +var() bool bFlushOthers; +var() int SoundIndex; +var() SoundCue OptionalCue; + +event Activated() +{ + local TgPlayerController CurrPC; + local WorldInfo World; + + World = Class'Engine.WorldInfo'.static.GetWorldInfo(); + // End:0x65 + if((World == none) || int(World.NetMode) == int(NM_Client)) + { + return; + } + // End:0xDF + foreach World.AllControllers(Class'TgGame.TgPlayerController', CurrPC) + { + CurrPC.PlayTutorialAnnouncement(SoundIndex, OptionalCue, bPlayImmediately, bFlushOthers); + } + //return; +} + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + ObjName="Tutorial Announcement" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_PlayCameraAnim.uc b/exported/TgGame/Classes/TgSeqAct_PlayCameraAnim.uc new file mode 100755 index 00000000..c6b69717 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_PlayCameraAnim.uc @@ -0,0 +1,22 @@ +class TgSeqAct_PlayCameraAnim extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() CameraAnim AnimToPlay; +var() float BlendInTime; +var() float BlendOutTime; +var() float Rate; +var() float IntensityScale; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 1; + //return ReturnValue; +} + +defaultproperties +{ + Rate=1.0000000 + IntensityScale=1.0000000 + ObjName="Play Camera Animation" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_PlayFullBodyAnim.uc b/exported/TgGame/Classes/TgSeqAct_PlayFullBodyAnim.uc new file mode 100755 index 00000000..17161a1f --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_PlayFullBodyAnim.uc @@ -0,0 +1,21 @@ +class TgSeqAct_PlayFullBodyAnim extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() name c_AnimName; +var() float c_fRate; +var() float c_fBlendInTime; +var() float c_fBlendOutTime; +var() bool c_bLooping; +var() bool c_bOverride; + +defaultproperties +{ + c_fRate=1.0000000 + c_fBlendInTime=0.2000000 + c_fBlendOutTime=0.2000000 + c_bOverride=true + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Player",LinkVar="None",PropertyName="Targets",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Play Full Body Animation" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_ProgressTo.uc b/exported/TgGame/Classes/TgSeqAct_ProgressTo.uc new file mode 100755 index 00000000..7c73f6cb --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_ProgressTo.uc @@ -0,0 +1,13 @@ +class TgSeqAct_ProgressTo extends SeqAct_Delay + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var TgPawn m_Instigator; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Duration",LinkVar="None",PropertyName="Duration",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Target",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="ProgressTo" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_PushMatinee.uc b/exported/TgGame/Classes/TgSeqAct_PushMatinee.uc new file mode 100755 index 00000000..8acc367b --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_PushMatinee.uc @@ -0,0 +1,14 @@ +class TgSeqAct_PushMatinee extends SeqAct_Interp + native(Kismet) + config(Engine) + forcescriptorder(true) + hidecategories(Object); + +var() const float m_fCheckpoint1Time; +var() const float m_fCheckpoint2Time; +var() const int m_nDefenderTaskForce; + +defaultproperties +{ + ObjName="Push Matinee" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_RequestMission.uc b/exported/TgGame/Classes/TgSeqAct_RequestMission.uc new file mode 100755 index 00000000..b8786494 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_RequestMission.uc @@ -0,0 +1,20 @@ +class TgSeqAct_RequestMission extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +enum EMissionDifficultyLevel +{ + DL_Easy, // 0 + DL_Medium, // 1 + DL_Hard, // 2 + DL_MAX // 3 +}; + +var() int m_nMapGameId; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Player",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Request Mission" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_ResetCooldowns.uc b/exported/TgGame/Classes/TgSeqAct_ResetCooldowns.uc new file mode 100755 index 00000000..237b3493 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_ResetCooldowns.uc @@ -0,0 +1,44 @@ +class TgSeqAct_ResetCooldowns extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +function Activated() +{ + local int X; + local TgDevice Device; + local TgPawn Pawn; + local TgPlayerController TgPC; + + // End:0xFF + foreach GetWorldInfo().AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + Pawn = TgPawn(TgPC.Pawn); + // End:0xFE + if(Pawn != none) + { + X = 0; + J0x80: + + // End:0xFE [Loop If] + if(X < 33) + { + Device = Pawn.GetDeviceByEqPoint(X); + // End:0xF0 + if(Device != none) + { + Device.EndCooldown(); + } + X++; + // [Loop Continue] + goto J0x80; + } + } + } + //return; +} + +defaultproperties +{ + ObjName="Reset Cooldowns" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_RespawnAllPlayers.uc b/exported/TgGame/Classes/TgSeqAct_RespawnAllPlayers.uc new file mode 100755 index 00000000..c4c83609 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_RespawnAllPlayers.uc @@ -0,0 +1,18 @@ +class TgSeqAct_RespawnAllPlayers extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() bool bResetLivingPlayers; +var() bool bResetDeadPlayers; +var() bool bResetHealth; + +defaultproperties +{ + bResetLivingPlayers=true + bResetDeadPlayers=true + bResetHealth=true + bCallHandler=false + VariableLinks=none + ObjName="RespawnAllPlayers" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_RestartPlayers.uc b/exported/TgGame/Classes/TgSeqAct_RestartPlayers.uc new file mode 100755 index 00000000..a52e46c5 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_RestartPlayers.uc @@ -0,0 +1,8 @@ +class TgSeqAct_RestartPlayers extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + ObjName="Restart Players" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SelectBestSpawnPoint.uc b/exported/TgGame/Classes/TgSeqAct_SelectBestSpawnPoint.uc new file mode 100755 index 00000000..8320b292 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SelectBestSpawnPoint.uc @@ -0,0 +1,63 @@ +class TgSeqAct_SelectBestSpawnPoint extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() array Points; +var() Actor PlayerReceived; + +function Activated() +{ + local array Exits; + local Object CurrentPoint; + local TgSpawnTeleporterExit CurrentExit; + local ExitInfo BestExit; + local TgPawn PlayerPawn; + local TgPlayerController TgPC; + local TgAIController TgAIC; + + PlayerPawn = TgPawn(PlayerReceived); + // End:0xDE + if(PlayerPawn == none) + { + TgPC = TgPlayerController(PlayerReceived); + // End:0x82 + if(TgPC != none) + { + PlayerPawn = TgPC.GetTgPawn(); + } + else + { + TgAIC = TgAIController(PlayerReceived); + // End:0xDE + if(TgAIC != none) + { + PlayerPawn = TgPawn(TgAIC.Pawn); + } + } + } + // End:0x137 + foreach Points(CurrentPoint) + { + CurrentExit = TgSpawnTeleporterExit(CurrentPoint); + // End:0x136 + if(CurrentExit != none) + { + Exits.AddItem(CurrentExit); + } + } + BestExit = Class'TgGame.TgSpawnTeleporterEntrance'.static.FindExit(PlayerPawn, Exits); + // End:0x1C7 + if(BestExit.Exit != none) + { + Class'TgGame.TgSpawnTeleporterEntrance'.static.TeleportToExit(PlayerPawn, none, BestExit); + } + //return; +} + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Teleport Pawn",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_ObjectList',LinkedVariables=none,LinkDesc="Spawn Points",LinkVar="None",PropertyName="Points",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Player",LinkVar="None",PropertyName="PlayerReceived",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Teleport Player To Best Spawn Point" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SendPlayerTrackingEvent.uc b/exported/TgGame/Classes/TgSeqAct_SendPlayerTrackingEvent.uc new file mode 100755 index 00000000..422b541b --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SendPlayerTrackingEvent.uc @@ -0,0 +1,14 @@ +class TgSeqAct_SendPlayerTrackingEvent extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int m_nEventId; +var() int m_nSubEventID; +var() string m_ReferenceName; +var() int m_nReferenceValue; + +defaultproperties +{ + ObjName="Send Player Tracking Event" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SetCreditGainBlock.uc b/exported/TgGame/Classes/TgSeqAct_SetCreditGainBlock.uc new file mode 100755 index 00000000..9f6c0835 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SetCreditGainBlock.uc @@ -0,0 +1,12 @@ +class TgSeqAct_SetCreditGainBlock extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var int m_bBlockCreditGain; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Block Credit Gain",LinkVar="None",PropertyName="m_bBlockCreditGain",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Block Credit Gain" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SetCrowdControlImmune.uc b/exported/TgGame/Classes/TgSeqAct_SetCrowdControlImmune.uc new file mode 100755 index 00000000..3104985c --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SetCrowdControlImmune.uc @@ -0,0 +1,11 @@ +class TgSeqAct_SetCrowdControlImmune extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Enable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Disable",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Toggle",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Crowd Control Immune" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SetEnergyGainBlock.uc b/exported/TgGame/Classes/TgSeqAct_SetEnergyGainBlock.uc new file mode 100755 index 00000000..39f1b8dd --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SetEnergyGainBlock.uc @@ -0,0 +1,12 @@ +class TgSeqAct_SetEnergyGainBlock extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int m_bBlockEnergyGain; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Block Energy Gain",LinkVar="None",PropertyName="m_bBlockEnergyGain",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Block Energy Gain" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SetHexState.uc b/exported/TgGame/Classes/TgSeqAct_SetHexState.uc new file mode 100755 index 00000000..69ad32b1 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SetHexState.uc @@ -0,0 +1,12 @@ +class TgSeqAct_SetHexState extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() bool m_bChallengerWon; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Challenger Won",LinkVar="None",PropertyName="m_bChallengerWon",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set Hex State" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SetInputEnabled.uc b/exported/TgGame/Classes/TgSeqAct_SetInputEnabled.uc new file mode 100755 index 00000000..bb2755ca --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SetInputEnabled.uc @@ -0,0 +1,69 @@ +class TgSeqAct_SetInputEnabled extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() bool bEnableMoveForward; +var() bool bEnableMoveBackward; +var() bool bEnableMoveLeft; +var() bool bEnableMoveRight; +var() bool bEnableLookUp; +var() bool bEnableLookDown; +var() bool bEnableLookLeft; +var() bool bEnableLookRight; +var() bool bEnableJumping; +var() bool bEnableMounting; +var() bool bEnableAuto; +var() bool bEnableAlt; +var() bool bEnableBattleAbility; +var() bool bEnableMovementAbility; +var() bool bEnableUltimate; +var() bool bEnableEmote; + +function Activated() +{ + local TgPlayerController TgPC; + + // End:0x2E6 + foreach GetWorldInfo().AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.SetInputAllowed(0, bEnableMoveForward); + TgPC.SetInputAllowed(1, bEnableMoveBackward); + TgPC.SetInputAllowed(3, bEnableMoveLeft); + TgPC.SetInputAllowed(2, bEnableMoveRight); + TgPC.SetInputAllowed(4, bEnableLookLeft); + TgPC.SetInputAllowed(5, bEnableLookRight); + TgPC.SetInputAllowed(6, bEnableLookUp); + TgPC.SetInputAllowed(7, bEnableLookDown); + TgPC.SetInputAllowed(14, bEnableJumping); + TgPC.SetInputAllowed(8, bEnableAuto); + TgPC.SetInputAllowed(9, bEnableAlt); + TgPC.SetInputAllowed(10, bEnableBattleAbility); + TgPC.SetInputAllowed(11, bEnableMovementAbility); + TgPC.SetInputAllowed(12, bEnableUltimate); + TgPC.SetInputAllowed(15, bEnableMounting); + TgPC.SetInputAllowed(18, bEnableEmote); + } + //return; +} + +defaultproperties +{ + bEnableMoveForward=true + bEnableMoveBackward=true + bEnableMoveLeft=true + bEnableMoveRight=true + bEnableLookUp=true + bEnableLookDown=true + bEnableLookLeft=true + bEnableLookRight=true + bEnableJumping=true + bEnableMounting=true + bEnableAuto=true + bEnableAlt=true + bEnableBattleAbility=true + bEnableMovementAbility=true + bEnableUltimate=true + bEnableEmote=true + ObjName="Set Input Enabled/Disabled" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SetMapLane.uc b/exported/TgGame/Classes/TgSeqAct_SetMapLane.uc new file mode 100755 index 00000000..c8f0f1fe --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SetMapLane.uc @@ -0,0 +1,12 @@ +class TgSeqAct_SetMapLane extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var int m_nMapLane; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Map Lane",LinkVar="None",PropertyName="m_nMapLane",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set Map Lane" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SetMissionTime.uc b/exported/TgGame/Classes/TgSeqAct_SetMissionTime.uc new file mode 100755 index 00000000..dc7ab4c8 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SetMissionTime.uc @@ -0,0 +1,21 @@ +class TgSeqAct_SetMissionTime extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() float m_fMissionTimeSecs; +var() float m_fIncrementSecs; +var float m_fMissionTimeRemaining; + +defaultproperties +{ + bLatentExecution=true + InputLinks[0]=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Pause",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[3]=(LinkDesc="Increment",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="Completed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Aborted",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Seconds Remaining",LinkVar="None",PropertyName="m_fMissionTimeRemaining",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Mission Timer" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SetPlayerLevel.uc b/exported/TgGame/Classes/TgSeqAct_SetPlayerLevel.uc new file mode 100755 index 00000000..2393b051 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SetPlayerLevel.uc @@ -0,0 +1,12 @@ +class TgSeqAct_SetPlayerLevel extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int m_nLevel; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Pawn",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="SetPlayerLevel" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SetPlayerMesh.uc b/exported/TgGame/Classes/TgSeqAct_SetPlayerMesh.uc new file mode 100755 index 00000000..890dac65 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SetPlayerMesh.uc @@ -0,0 +1,12 @@ +class TgSeqAct_SetPlayerMesh extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int m_nMeshAsmId; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Pawn",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="SetPlayerMesh" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SetPlayerMeshVisible.uc b/exported/TgGame/Classes/TgSeqAct_SetPlayerMeshVisible.uc new file mode 100755 index 00000000..41908c5e --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SetPlayerMeshVisible.uc @@ -0,0 +1,26 @@ +class TgSeqAct_SetPlayerMeshVisible extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() bool bIs1PMeshVisible; +var() bool bIs3PMeshVisible; + +function Activated() +{ + local TgPlayerController TgPC; + + // End:0x6D + foreach GetWorldInfo().AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.HideMeshes(!bIs1PMeshVisible, !bIs3PMeshVisible); + } + //return; +} + +defaultproperties +{ + bIs1PMeshVisible=true + bIs3PMeshVisible=true + ObjName="Set Player Meshes Enabled/Disabled" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SetSkelPosture.uc b/exported/TgGame/Classes/TgSeqAct_SetSkelPosture.uc new file mode 100755 index 00000000..6e588b79 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SetSkelPosture.uc @@ -0,0 +1,11 @@ +class TgSeqAct_SetSkelPosture extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() TgPawn.TG_POSTURE m_Posture; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="MeshActor",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set Skeletal Posture" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SetTaskforce.uc b/exported/TgGame/Classes/TgSeqAct_SetTaskforce.uc new file mode 100755 index 00000000..7f47807c --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SetTaskforce.uc @@ -0,0 +1,12 @@ +class TgSeqAct_SetTaskforce extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() int TaskForceNumber; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Bots/Factory",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="TaskForceNumber",LinkVar="None",PropertyName="TaskForceNumber",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set Taskforce" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SetUIClock.uc b/exported/TgGame/Classes/TgSeqAct_SetUIClock.uc new file mode 100755 index 00000000..c4d396bf --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SetUIClock.uc @@ -0,0 +1,20 @@ +class TgSeqAct_SetUIClock extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() bool ShowAlarmTexture; +var() bool UseProgressBar; +var() bool IsCountingDown; + +defaultproperties +{ + bAutoActivateOutputLinks=false + InputLinks[0]=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="TurnedOn",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="TurnedOff",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="ClockTime",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Player(s)",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="SetUIClock" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SetUITextBox.uc b/exported/TgGame/Classes/TgSeqAct_SetUITextBox.uc new file mode 100755 index 00000000..98305038 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SetUITextBox.uc @@ -0,0 +1,22 @@ +class TgSeqAct_SetUITextBox extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int TextBox_MessageID; +var() bool TextBox_TargetSecondary; +var() bool TextBox_UseDuration; +var() bool TextBox_AllowEscape; +var() TgObject.AlertType TextBox_MessageType; + +defaultproperties +{ + bAutoActivateOutputLinks=false + InputLinks[0]=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks[0]=(Links=none,LinkDesc="TurnedOn",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="TurnedOff",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Duration",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Player(s)",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="SetUITextBox" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SetUltimateEnergy.uc b/exported/TgGame/Classes/TgSeqAct_SetUltimateEnergy.uc new file mode 100755 index 00000000..a5b597d3 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SetUltimateEnergy.uc @@ -0,0 +1,29 @@ +class TgSeqAct_SetUltimateEnergy extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() float fChargePercent; + +function Activated() +{ + local TgPawn Pawn; + local TgPlayerController TgPC; + + // End:0xC2 + foreach GetWorldInfo().AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + Pawn = TgPawn(TgPC.Pawn); + // End:0xC1 + if(Pawn != none) + { + Pawn.SetPropCurrentValue(2, Pawn.GetPropCurrentValue(1) * fChargePercent); + } + } + //return; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Ultimate Charge %",LinkVar="None",PropertyName="fChargePercent",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set Ultimate Energy" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_ShowGameTip.uc b/exported/TgGame/Classes/TgSeqAct_ShowGameTip.uc new file mode 100755 index 00000000..34cc6378 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_ShowGameTip.uc @@ -0,0 +1,33 @@ +class TgSeqAct_ShowGameTip extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() int GameTipId; +var TgPlayerController TargetPlayer; + +function Activated() +{ + local TgPlayerController TgPC; + + // End:0x3A + if(TargetPlayer != none) + { + TargetPlayer.ClientRequestHelpText(GameTipId); + } + else + { + // End:0x98 + foreach GetWorldInfo().AllControllers(Class'TgGame.TgPlayerController', TgPC) + { + TgPC.ClientRequestHelpText(GameTipId); + } + } + //return; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Game Tip ID",LinkVar="None",PropertyName="GameTipId",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target Player",LinkVar="None",PropertyName="TargetPlayer",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Show Game Tip" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_SpawnProjectile.uc b/exported/TgGame/Classes/TgSeqAct_SpawnProjectile.uc new file mode 100755 index 00000000..6bc65d03 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_SpawnProjectile.uc @@ -0,0 +1,43 @@ +class TgSeqAct_SpawnProjectile extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() Class ProjectileClass; + +event Activated() +{ + local Controller InstigatorController; + local Vector SpawnLoc, TargetLoc; + local Projectile Proj; + + // End:0x11A + if(VariableLinks[2].LinkedVariables.Length > 0) + { + InstigatorController = Controller(SeqVar_Object(VariableLinks[2].LinkedVariables[0]).GetObjectValue()); + // End:0x11A + if((InstigatorController == none) && SeqVar_Object(VariableLinks[2].LinkedVariables[0]).GetObjectValue() != none) + { + ScriptLog(("WARNING: Instigator specified for" @ string(self)) @ "is not a Controller"); + } + } + SpawnLoc = SeqVar_Vector(VariableLinks[0].LinkedVariables[0]).VectValue; + TargetLoc = SeqVar_Vector(VariableLinks[1].LinkedVariables[0]).VectValue; + Proj = GetWorldInfo().Spawn(ProjectileClass,,, SpawnLoc); + // End:0x25F + if(InstigatorController != none) + { + Proj.Instigator = InstigatorController.Pawn; + Proj.InstigatorController = InstigatorController; + } + Proj.Init(Normal(TargetLoc - SpawnLoc)); + //return; +} + +defaultproperties +{ + bCallHandler=false + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Spawn Location",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Vector',LinkedVariables=none,LinkDesc="Target Location",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=1,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Spawn Projectile" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_TemporaryAddDevice.uc b/exported/TgGame/Classes/TgSeqAct_TemporaryAddDevice.uc new file mode 100755 index 00000000..4b1205e1 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_TemporaryAddDevice.uc @@ -0,0 +1,15 @@ +class TgSeqAct_TemporaryAddDevice extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int m_nDeviceId; +var() int m_nEquipPoint; + +defaultproperties +{ + m_nDeviceId=-1 + m_nEquipPoint=-1 + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Players",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Temporary Add Device" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_TemporaryRemoveDevice.uc b/exported/TgGame/Classes/TgSeqAct_TemporaryRemoveDevice.uc new file mode 100755 index 00000000..6341f936 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_TemporaryRemoveDevice.uc @@ -0,0 +1,13 @@ +class TgSeqAct_TemporaryRemoveDevice extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int m_nEquipPoint; + +defaultproperties +{ + m_nEquipPoint=-1 + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Players",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Temporary Remove Device" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_TestResult.uc b/exported/TgGame/Classes/TgSeqAct_TestResult.uc new file mode 100755 index 00000000..089c7259 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_TestResult.uc @@ -0,0 +1,13 @@ +class TgSeqAct_TestResult extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Pass",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Fail",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Test",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Test Result" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_TgCameraShake.uc b/exported/TgGame/Classes/TgSeqAct_TgCameraShake.uc new file mode 100755 index 00000000..e240636b --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_TgCameraShake.uc @@ -0,0 +1,15 @@ +class TgSeqAct_TgCameraShake extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var() TgCameraShake m_CameraShake; +var Actor m_LocationActor; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Location",LinkVar="None",PropertyName="m_LocationActor",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Tg Camera Shake" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_ToggleStaticMeshSilhouette.uc b/exported/TgGame/Classes/TgSeqAct_ToggleStaticMeshSilhouette.uc new file mode 100755 index 00000000..8b46753d --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_ToggleStaticMeshSilhouette.uc @@ -0,0 +1,47 @@ +class TgSeqAct_ToggleStaticMeshSilhouette extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() StaticMeshActor SMA; +var bool bIsEnabled; + +function Activated() +{ + // End:0x176 + if((SMA != none) && SMA.Silhouette != none) + { + // End:0x8F + if(InputLinks[0].bHasImpulse) + { + SMA.Silhouette.SetEnabled(true); + } + else + { + // End:0xE9 + if(InputLinks[1].bHasImpulse) + { + SMA.Silhouette.SetEnabled(false); + } + else + { + // End:0x176 + if(InputLinks[2].bHasImpulse) + { + SMA.Silhouette.SetEnabled(!SMA.Silhouette.bEnabled); + } + } + } + } + //return; +} + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Turn On",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Turn Off",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Toggle",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Static Mesh Actor",LinkVar="None",PropertyName="SMA",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Is Enabled After",LinkVar="None",PropertyName="bIsEnabled",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Toggle Static Mesh Silhouette" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_TrainingAwards.uc b/exported/TgGame/Classes/TgSeqAct_TrainingAwards.uc new file mode 100755 index 00000000..09b20485 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_TrainingAwards.uc @@ -0,0 +1,25 @@ +class TgSeqAct_TrainingAwards extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() float m_fGoldTime; +var() float m_fSilverTime; +var() float m_fBronzeTime; +var() float m_fPassTime; + +defaultproperties +{ + m_fGoldTime=-1.0000000 + m_fSilverTime=-1.0000000 + m_fBronzeTime=-1.0000000 + m_fPassTime=-1.0000000 + InputLinks[0]=(LinkDesc="Auto-Fail",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Auto-Pass",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Auto-Bronze",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[3]=(LinkDesc="Auto-Silver",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[4]=(LinkDesc="Auto-Gold",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + OutputLinks=none + VariableLinks=none + ObjName="Training Awards" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_TriggerBots.uc b/exported/TgGame/Classes/TgSeqAct_TriggerBots.uc new file mode 100755 index 00000000..7de2bc42 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_TriggerBots.uc @@ -0,0 +1,18 @@ +class TgSeqAct_TriggerBots extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() bool bUseDestination; +var() Actor TargetActor; +var() Actor destActor; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Start",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Stop",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Bots/Factory",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="TargetActor",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Destination",LinkVar="None",PropertyName="destActor",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Trigger Bots" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_TriggerInterpActor.uc b/exported/TgGame/Classes/TgSeqAct_TriggerInterpActor.uc new file mode 100755 index 00000000..5a1dc1ea --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_TriggerInterpActor.uc @@ -0,0 +1,12 @@ +class TgSeqAct_TriggerInterpActor extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +var string m_sStateName; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="InterpActor",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="State",LinkVar="None",PropertyName="m_sStateName",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=0,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Trigger InterpActor" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_TutorialHighlighter.uc b/exported/TgGame/Classes/TgSeqAct_TutorialHighlighter.uc new file mode 100755 index 00000000..1bb41ce8 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_TutorialHighlighter.uc @@ -0,0 +1,32 @@ +class TgSeqAct_TutorialHighlighter extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +enum eTutorialHighlighterElement +{ + THE_Ability1, // 0 + THE_ActiveItem, // 1 + THE_ConsumableItem, // 2 + THE_Gold, // 3 + THE_ItemShop_Gold, // 4 + THE_ItemShop_Item, // 5 + THE_ItemShop_Item2, // 6 + THE_ItemShop_Item3, // 7 + THE_ItemShop_Purchase, // 8 + THE_ItemShop_AllItems, // 9 + THE_ItemShop_RemoveOverlay, // 10 + THE_ItemShop_AddBlocker, // 11 + THE_Stats_Display, // 12 + THE_MAX // 13 +}; + +var() TgSeqAct_TutorialHighlighter.eTutorialHighlighterElement GameUIElement; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Show",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Hide",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Targets",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Tutorial Highlighter" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_TutorialInstruction.uc b/exported/TgGame/Classes/TgSeqAct_TutorialInstruction.uc new file mode 100755 index 00000000..b2b4dc57 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_TutorialInstruction.uc @@ -0,0 +1,11 @@ +class TgSeqAct_TutorialInstruction extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int nMsgId; + +defaultproperties +{ + ObjName="Tutorial Instruction" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_TutorialTips.uc b/exported/TgGame/Classes/TgSeqAct_TutorialTips.uc new file mode 100755 index 00000000..8def63e3 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_TutorialTips.uc @@ -0,0 +1,11 @@ +class TgSeqAct_TutorialTips extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int nMsgId; + +defaultproperties +{ + ObjName="Tutorial Tips" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_UIAlert.uc b/exported/TgGame/Classes/TgSeqAct_UIAlert.uc new file mode 100755 index 00000000..d4af95b6 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_UIAlert.uc @@ -0,0 +1,16 @@ +class TgSeqAct_UIAlert extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int nMsgId; +var array Taskforces; +var array Broadcast; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Players",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Taskforces",LinkVar="None",PropertyName="Taskforces",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Broadcast",LinkVar="None",PropertyName="Broadcast",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="UI Alert" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_UIElementVisibility.uc b/exported/TgGame/Classes/TgSeqAct_UIElementVisibility.uc new file mode 100755 index 00000000..21134a6e --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_UIElementVisibility.uc @@ -0,0 +1,17 @@ +class TgSeqAct_UIElementVisibility extends SequenceAction + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() bool ShowElement; +var() string UISceneName; +var() string UIElementName; + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Target",LinkVar="None",PropertyName="Targets",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Show?",LinkVar="None",PropertyName="ShowElement",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="UI Scene Name",LinkVar="None",PropertyName="UISceneName",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="UI Element Name",LinkVar="None",PropertyName="UIElementName",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Show/Hide UI Element" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqAct_UnpauseSetupTimer.uc b/exported/TgGame/Classes/TgSeqAct_UnpauseSetupTimer.uc new file mode 100755 index 00000000..04cb41bb --- /dev/null +++ b/exported/TgGame/Classes/TgSeqAct_UnpauseSetupTimer.uc @@ -0,0 +1,22 @@ +class TgSeqAct_UnpauseSetupTimer extends SequenceAction + forcescriptorder(true) + hidecategories(Object); + +function Activated() +{ + local TgGame_Paladins_Tutorial TgG; + + TgG = TgGame_Paladins_Tutorial(GetWorldInfo().Game); + // End:0x84 + if((TgG != none) && TgG.m_bSetupTimerPaused) + { + TgG.UnpauseSetupTimer(); + } + //return; +} + +defaultproperties +{ + VariableLinks=none + ObjName="Unpause Setup Timer" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqCond_And.uc b/exported/TgGame/Classes/TgSeqCond_And.uc new file mode 100755 index 00000000..7ca0ced4 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqCond_And.uc @@ -0,0 +1,12 @@ +class TgSeqCond_And extends SequenceCondition + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Booleans",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="And" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqCond_CompareDamageType.uc b/exported/TgGame/Classes/TgSeqCond_CompareDamageType.uc new file mode 100755 index 00000000..28d7c6ac --- /dev/null +++ b/exported/TgGame/Classes/TgSeqCond_CompareDamageType.uc @@ -0,0 +1,13 @@ +class TgSeqCond_CompareDamageType extends SequenceCondition + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="A == B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="A != B",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'TgGame.TgSeqVar_DamageType',LinkedVariables=none,LinkDesc="A",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'TgGame.TgSeqVar_DamageType',LinkedVariables=none,LinkDesc="B",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Compare Damage Types" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqCond_CompareDeviceId.uc b/exported/TgGame/Classes/TgSeqCond_CompareDeviceId.uc new file mode 100755 index 00000000..453cb068 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqCond_CompareDeviceId.uc @@ -0,0 +1,16 @@ +class TgSeqCond_CompareDeviceId extends SequenceCondition + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() Object Device; +var() int DeviceID; + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="Device Matches Id",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Device Does Not Match Id",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Device",LinkVar="None",PropertyName="Device",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Device Id",LinkVar="None",PropertyName="DeviceID",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Compare Device Id" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqCond_HasCondition.uc b/exported/TgGame/Classes/TgSeqCond_HasCondition.uc new file mode 100755 index 00000000..033d940c --- /dev/null +++ b/exported/TgGame/Classes/TgSeqCond_HasCondition.uc @@ -0,0 +1,28 @@ +class TgSeqCond_HasCondition extends SequenceCondition + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +enum ConditionType +{ + TGCT_POISON, // 0 + TGCT_DISEASE, // 1 + TGCT_REGENERATION, // 2 + TGCT_STUN, // 3 + TGCT_STEALTH, // 4 + TGCT_EMP_STUN, // 5 + TGCT_IGNITE, // 6 + TGCT_INVULNERABLE, // 7 + TGCT_SLOW, // 8 + TGCT_MAX // 9 +}; + +var() TgSeqCond_HasCondition.ConditionType ConditionList; + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Players",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Has Condition" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqCond_IsHuman.uc b/exported/TgGame/Classes/TgSeqCond_IsHuman.uc new file mode 100755 index 00000000..d5ddeb42 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqCond_IsHuman.uc @@ -0,0 +1,12 @@ +class TgSeqCond_IsHuman extends SequenceCondition + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Players",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Is Human" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqCond_IsSecuring.uc b/exported/TgGame/Classes/TgSeqCond_IsSecuring.uc new file mode 100755 index 00000000..17c94ea7 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqCond_IsSecuring.uc @@ -0,0 +1,11 @@ +class TgSeqCond_IsSecuring extends SequenceCondition + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Is Securing" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqCond_IsSpectating.uc b/exported/TgGame/Classes/TgSeqCond_IsSpectating.uc new file mode 100755 index 00000000..dbae5087 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqCond_IsSpectating.uc @@ -0,0 +1,11 @@ +class TgSeqCond_IsSpectating extends SequenceCondition + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Is Spectating" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqCond_Or.uc b/exported/TgGame/Classes/TgSeqCond_Or.uc new file mode 100755 index 00000000..49db8203 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqCond_Or.uc @@ -0,0 +1,12 @@ +class TgSeqCond_Or extends SequenceCondition + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="True",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="False",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Booleans",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Or" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_BotDied.uc b/exported/TgGame/Classes/TgSeqEvent_BotDied.uc new file mode 100755 index 00000000..bdc5a92b --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_BotDied.uc @@ -0,0 +1,24 @@ +class TgSeqEvent_BotDied extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +event UpdateLinkedVars(Actor Killer) +{ + local SeqVar_Object ObjVar; + + // End:0x50 + foreach LinkedVariables(Class'Engine.SeqVar_Object', ObjVar, "Killer") + { + ObjVar.SetObjectValue(Killer); + } + //return; +} + +defaultproperties +{ + MaxTriggerCount=0 + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Killer",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="TgSeqEvent_BotDied" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_BotSpawned.uc b/exported/TgGame/Classes/TgSeqEvent_BotSpawned.uc new file mode 100755 index 00000000..a05fcd17 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_BotSpawned.uc @@ -0,0 +1,10 @@ +class TgSeqEvent_BotSpawned extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + ObjName="TgSeqEvent_BotSpawned" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_BurnCardPurchased.uc b/exported/TgGame/Classes/TgSeqEvent_BurnCardPurchased.uc new file mode 100755 index 00000000..2864661a --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_BurnCardPurchased.uc @@ -0,0 +1,64 @@ +class TgSeqEvent_BurnCardPurchased extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +var int nFilledSlots; +var bool bAllBurnSlotsFull; + +static function bool TriggerGlobal(Actor InInstigator, int InFilledSlotsCount, bool bInAllBurnSlotsFull) +{ + local array EventsToActivate; + local array ActivateIndices; + local Sequence GameSeq; + local TgSeqEvent_BurnCardPurchased Event; + local bool bResult; + local int I; + + ActivateIndices[0] = 0; + // End:0x27 + if(InInstigator == none) + { + return bResult; + } + GameSeq = InInstigator.WorldInfo.GetGameSequence(); + // End:0x1A9 + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_BurnCardPurchased', true, EventsToActivate); + I = 0; + J0xB1: + + // End:0x1A9 [Loop If] + if(I < EventsToActivate.Length) + { + Event = TgSeqEvent_BurnCardPurchased(EventsToActivate[I]); + // End:0x19B + if(Event != none) + { + Event.nFilledSlots = InFilledSlotsCount; + Event.bAllBurnSlotsFull = bInAllBurnSlotsFull; + // End:0x19B + if(Event.CheckActivate(InInstigator, InInstigator,, ActivateIndices)) + { + bResult = true; + } + } + I++; + // [Loop Continue] + goto J0xB1; + } + } + return bResult; + //return ReturnValue; +} + +defaultproperties +{ + MaxTriggerCount=0 + OutputLinks[0]=(Links=none,LinkDesc="Purchased",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Filled Slots Count",LinkVar="None",PropertyName="nFilledSlots",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Slots Full",LinkVar="None",PropertyName="bAllBurnSlotsFull",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Burn Card Purchased" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadCapturePointVictory.uc b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadCapturePointVictory.uc new file mode 100755 index 00000000..25c8d7a2 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadCapturePointVictory.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_CaptureAndPayloadCapturePointVictory extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Capture Point Victory" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundBegin.uc b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundBegin.uc new file mode 100755 index 00000000..ee2a9002 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundBegin.uc @@ -0,0 +1,10 @@ +class TgSeqEvent_CaptureAndPayloadRoundBegin extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + ObjName="Round Begin" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundEnd.uc b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundEnd.uc new file mode 100755 index 00000000..29a57924 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadRoundEnd.uc @@ -0,0 +1,10 @@ +class TgSeqEvent_CaptureAndPayloadRoundEnd extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + ObjName="Round End" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF1.uc b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF1.uc new file mode 100755 index 00000000..45ed94ac --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF1.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF1 extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Successful Defense - TF1" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF2.uc b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF2.uc new file mode 100755 index 00000000..6f54f98d --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF2.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_CaptureAndPayloadSuccessfulDefenseTF2 extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Successful Defense - TF2" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF1.uc b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF1.uc new file mode 100755 index 00000000..fb50b567 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF1.uc @@ -0,0 +1,10 @@ +class TgSeqEvent_CaptureAndPayloadSuccessfulPushTF1 extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + bClientSideOnly=true + ObjName="Successful Push - TF1" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF2.uc b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF2.uc new file mode 100755 index 00000000..7ac5760a --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadSuccessfulPushTF2.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_CaptureAndPayloadSuccessfulPushTF2 extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Successful Push - TF2" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF1.uc b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF1.uc new file mode 100755 index 00000000..1c3d23b9 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF1.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_CaptureAndPayloadWinTF1 extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Win - TF1" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF2.uc b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF2.uc new file mode 100755 index 00000000..53788ed1 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_CaptureAndPayloadWinTF2.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_CaptureAndPayloadWinTF2 extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Win - TF2" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_ChaosGameEvent.uc b/exported/TgGame/Classes/TgSeqEvent_ChaosGameEvent.uc new file mode 100755 index 00000000..d5057f06 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_ChaosGameEvent.uc @@ -0,0 +1,20 @@ +class TgSeqEvent_ChaosGameEvent extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + bClientSideOnly=true + OutputLinks[0]=(Links=none,LinkDesc="Neutral",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="TaskForce 1 Attacking",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="TaskForce 2 Attacking",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Point Almost Captured",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[4]=(Links=none,LinkDesc="Time Running Out",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[5]=(Links=none,LinkDesc="Overtime",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[6]=(Links=none,LinkDesc="Match Almost Won",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="ChaosGameEvent" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_ChaosObjectiveActive.uc b/exported/TgGame/Classes/TgSeqEvent_ChaosObjectiveActive.uc new file mode 100755 index 00000000..6c86116a --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_ChaosObjectiveActive.uc @@ -0,0 +1,14 @@ +class TgSeqEvent_ChaosObjectiveActive extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Inactive",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Active",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Pending Active",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="ChaosObjectiveActive" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_ChaosObjectiveStatus.uc b/exported/TgGame/Classes/TgSeqEvent_ChaosObjectiveStatus.uc new file mode 100755 index 00000000..27563393 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_ChaosObjectiveStatus.uc @@ -0,0 +1,27 @@ +class TgSeqEvent_ChaosObjectiveStatus extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +function UpdateLinkedVars(bool bFriendlyTaskForce) +{ + local SeqVar_Bool BoolVar; + + // End:0x65 + foreach LinkedVariables(Class'Engine.SeqVar_Bool', BoolVar, "Friendly Controlled") + { + BoolVar.bValue = ((bFriendlyTaskForce) ? 1 : 0); + } + //return; +} + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + bClientSideOnly=true + OutputLinks[0]=(Links=none,LinkDesc="Contested",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Uncontested",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Empty",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="Friendly Controlled",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="ChaosObjectiveStatus" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_ClassSelected.uc b/exported/TgGame/Classes/TgSeqEvent_ClassSelected.uc new file mode 100755 index 00000000..3265067c --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_ClassSelected.uc @@ -0,0 +1,10 @@ +class TgSeqEvent_ClassSelected extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bClientSideOnly=true + ObjName="Class Selected" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_ClientGameOver.uc b/exported/TgGame/Classes/TgSeqEvent_ClientGameOver.uc new file mode 100755 index 00000000..fba2463b --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_ClientGameOver.uc @@ -0,0 +1,15 @@ +class TgSeqEvent_ClientGameOver extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + bClientSideOnly=true + OutputLinks[0]=(Links=none,LinkDesc="Attacker Win",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Attacker Lose",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Defender Win",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Defender Lose",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Client Game Over" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange.uc b/exported/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange.uc new file mode 100755 index 00000000..fd4fbc10 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange.uc @@ -0,0 +1,16 @@ +class TgSeqEvent_ControlPointOwnershipChange extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +var() int PointIndex; + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + bClientSideOnly=true + OutputLinks[0]=(Links=none,LinkDesc="Neutral",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Friendly",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Enemy",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Control Point Ownership Change" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange_Server.uc b/exported/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange_Server.uc new file mode 100755 index 00000000..bbf77e50 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_ControlPointOwnershipChange_Server.uc @@ -0,0 +1,13 @@ +class TgSeqEvent_ControlPointOwnershipChange_Server extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +var() int PointIndex; + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Output",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Control Point Ownership Change (Server Notify)" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_ControlPointOwnershipPercent.uc b/exported/TgGame/Classes/TgSeqEvent_ControlPointOwnershipPercent.uc new file mode 100755 index 00000000..2c8b605b --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_ControlPointOwnershipPercent.uc @@ -0,0 +1,14 @@ +class TgSeqEvent_ControlPointOwnershipPercent extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +var() float OwnershipPercent; +var() int PointIndex; + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + bClientSideOnly=true + ObjName="Control Point Ownership Percent" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_CrowdEvent.uc b/exported/TgGame/Classes/TgSeqEvent_CrowdEvent.uc new file mode 100755 index 00000000..b89534aa --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_CrowdEvent.uc @@ -0,0 +1,21 @@ +class TgSeqEvent_CrowdEvent extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + bClientSideOnly=true + OutputLinks[0]=(Links=none,LinkDesc="CrowdStandingPlay",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="CrowdStandingStop",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="CrowdBooPlay",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="CrowdAwwPlay",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[4]=(Links=none,LinkDesc="CrowdCheerMediumPlay",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[5]=(Links=none,LinkDesc="CrowdCheerLoudPlay",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[6]=(Links=none,LinkDesc="CrowdCheerCrazyPlay",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[7]=(Links=none,LinkDesc="CrowdChantPlay",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[8]=(Links=none,LinkDesc="CrowdChantStop",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="CrowdEvent" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_DebugConsoleKismetTest.uc b/exported/TgGame/Classes/TgSeqEvent_DebugConsoleKismetTest.uc new file mode 100755 index 00000000..362b3c65 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_DebugConsoleKismetTest.uc @@ -0,0 +1,10 @@ +class TgSeqEvent_DebugConsoleKismetTest extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + ObjName="Debug Console Kismet Test" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_DeployableFired.uc b/exported/TgGame/Classes/TgSeqEvent_DeployableFired.uc new file mode 100755 index 00000000..f3cf4482 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_DeployableFired.uc @@ -0,0 +1,14 @@ +class TgSeqEvent_DeployableFired extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Fired",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="DeployableTouched",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="TouchedActor",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="DeployableFired" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_DoorStatusChanged.uc b/exported/TgGame/Classes/TgSeqEvent_DoorStatusChanged.uc new file mode 100755 index 00000000..13906131 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_DoorStatusChanged.uc @@ -0,0 +1,13 @@ +class TgSeqEvent_DoorStatusChanged extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Opened",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Closed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="DoorStatusChanged" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_EnergyUpdated.uc b/exported/TgGame/Classes/TgSeqEvent_EnergyUpdated.uc new file mode 100755 index 00000000..709121c1 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_EnergyUpdated.uc @@ -0,0 +1,68 @@ +class TgSeqEvent_EnergyUpdated extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var int ResultEnergy; + +static event int GetIndex(float CurrentEnergy, float PreviousEnergy) +{ + local int nCurrentEnergy, nPreviousEnergy; + + nCurrentEnergy = int(CurrentEnergy); + nPreviousEnergy = int(PreviousEnergy); + // End:0x50 + if((nPreviousEnergy != 0) && nCurrentEnergy == 0) + { + return 4; + } + else + { + // End:0x78 + if((nPreviousEnergy < 25) && nCurrentEnergy >= 25) + { + return 3; + } + else + { + // End:0xA0 + if((nPreviousEnergy < 50) && nCurrentEnergy >= 50) + { + return 2; + } + else + { + // End:0xC7 + if((nPreviousEnergy < 75) && nCurrentEnergy >= 75) + { + return 1; + } + else + { + // End:0xEE + if((nPreviousEnergy < 100) && nCurrentEnergy >= 100) + { + return 0; + } + else + { + return -1; + } + } + } + } + } + //return ReturnValue; +} + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="100%",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="75%",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="50%",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="25%",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[4]=(Links=none,LinkDesc="0%",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Player Ultimate Energy Updated" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_Escort_Despawn_Success.uc b/exported/TgGame/Classes/TgSeqEvent_Escort_Despawn_Success.uc new file mode 100755 index 00000000..94b742da --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_Escort_Despawn_Success.uc @@ -0,0 +1,14 @@ +class TgSeqEvent_Escort_Despawn_Success extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int DefendersTaskForce; + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + VariableLinks=none + ObjName="Escort_Despawn_Success" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_FactoryEmpty.uc b/exported/TgGame/Classes/TgSeqEvent_FactoryEmpty.uc new file mode 100755 index 00000000..76b241d5 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_FactoryEmpty.uc @@ -0,0 +1,10 @@ +class TgSeqEvent_FactoryEmpty extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + ObjName="TgSeqEvent_FactoryEmpty" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_FiringDevice.uc b/exported/TgGame/Classes/TgSeqEvent_FiringDevice.uc new file mode 100755 index 00000000..cc58c88f --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_FiringDevice.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_FiringDevice extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + ObjName="TgSeqEvent_FiringDevice" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_InputReceived.uc b/exported/TgGame/Classes/TgSeqEvent_InputReceived.uc new file mode 100755 index 00000000..ae1439c1 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_InputReceived.uc @@ -0,0 +1,77 @@ +class TgSeqEvent_InputReceived extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +var() bool bAllowInputDisabling; + +static function bool TriggerGlobal(Actor InInstigator, TgPlayerController.EPlayerInputType InputType, bool bInputEnabled) +{ + local array EventsToActivate; + local array ActivateIndices; + local Sequence GameSeq; + local TgSeqEvent_InputReceived Event; + local bool bResult; + local int I; + + ActivateIndices.AddItem(int(InputType)); + // End:0x49 + if((InInstigator == none) || ActivateIndices[0] == -1) + { + return bResult; + } + GameSeq = InInstigator.WorldInfo.GetGameSequence(); + // End:0x1AE + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_InputReceived', true, EventsToActivate); + I = 0; + J0xD3: + + // End:0x1AE [Loop If] + if(I < EventsToActivate.Length) + { + Event = TgSeqEvent_InputReceived(EventsToActivate[I]); + // End:0x1A0 + if((Event != none) && !Event.bAllowInputDisabling || bInputEnabled) + { + // End:0x1A0 + if(Event.CheckActivate(InInstigator, InInstigator,, ActivateIndices)) + { + bResult = true; + } + } + I++; + // [Loop Continue] + goto J0xD3; + } + } + return bResult; + //return ReturnValue; +} + +defaultproperties +{ + bAllowInputDisabling=true + MaxTriggerCount=0 + OutputLinks[0]=(Links=none,LinkDesc="Move Forward",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Move Backward",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Move Right",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Move Left",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[4]=(Links=none,LinkDesc="Look Left",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[5]=(Links=none,LinkDesc="Look Right",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[6]=(Links=none,LinkDesc="Look Up",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[7]=(Links=none,LinkDesc="Look Down",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[8]=(Links=none,LinkDesc="Auto Ability",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[9]=(Links=none,LinkDesc="Alt Ability",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[10]=(Links=none,LinkDesc="Battle Ability",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[11]=(Links=none,LinkDesc="Movement Ability",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[12]=(Links=none,LinkDesc="Ultimate Ability",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[13]=(Links=none,LinkDesc="Reload",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[14]=(Links=none,LinkDesc="Jump",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[15]=(Links=none,LinkDesc="Mount",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[16]=(Links=none,LinkDesc="Loadout Menu",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[17]=(Links=none,LinkDesc="BurnCard Menu",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[18]=(Links=none,LinkDesc="Emote",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Input Received" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_LevelFadedIn.uc b/exported/TgGame/Classes/TgSeqEvent_LevelFadedIn.uc new file mode 100755 index 00000000..1b32c7dc --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_LevelFadedIn.uc @@ -0,0 +1,12 @@ +class TgSeqEvent_LevelFadedIn extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + bClientSideOnly=true + VariableLinks=none + ObjName="Level Faded In" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_LoadoutChanged.uc b/exported/TgGame/Classes/TgSeqEvent_LoadoutChanged.uc new file mode 100755 index 00000000..d0c9f882 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_LoadoutChanged.uc @@ -0,0 +1,61 @@ +class TgSeqEvent_LoadoutChanged extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +var int DeckIndex; + +static function bool TriggerGlobal(Actor InInstigator, int InDeckIndex) +{ + local array EventsToActivate; + local array ActivateIndices; + local Sequence GameSeq; + local TgSeqEvent_LoadoutChanged LoadoutChangedEvent; + local bool bResult; + local int I; + + ActivateIndices[0] = 0; + // End:0x27 + if(InInstigator == none) + { + return bResult; + } + GameSeq = InInstigator.WorldInfo.GetGameSequence(); + // End:0x17F + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_LoadoutChanged', true, EventsToActivate); + I = 0; + J0xB1: + + // End:0x17F [Loop If] + if(I < EventsToActivate.Length) + { + LoadoutChangedEvent = TgSeqEvent_LoadoutChanged(EventsToActivate[I]); + // End:0x171 + if(LoadoutChangedEvent != none) + { + LoadoutChangedEvent.DeckIndex = InDeckIndex; + // End:0x171 + if(LoadoutChangedEvent.CheckActivate(InInstigator, InInstigator,, ActivateIndices)) + { + bResult = true; + } + } + I++; + // [Loop Continue] + goto J0xB1; + } + } + return bResult; + //return ReturnValue; +} + +defaultproperties +{ + MaxTriggerCount=0 + OutputLinks[0]=(Links=none,LinkDesc="Loadout Changed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Deck Index",LinkVar="None",PropertyName="DeckIndex",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Loadout Changed" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_LobbyCameraSetActive.uc b/exported/TgGame/Classes/TgSeqEvent_LobbyCameraSetActive.uc new file mode 100755 index 00000000..97de6f5a --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_LobbyCameraSetActive.uc @@ -0,0 +1,14 @@ +class TgSeqEvent_LobbyCameraSetActive extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + bClientSideOnly=true + OutputLinks[0]=(Links=none,LinkDesc="Inactive",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Active - 1",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Active - 2",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="LobbyCam Set Active" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_LobbyEvents.uc b/exported/TgGame/Classes/TgSeqEvent_LobbyEvents.uc new file mode 100755 index 00000000..2dbcbffc --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_LobbyEvents.uc @@ -0,0 +1,15 @@ +class TgSeqEvent_LobbyEvents extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Enter Queue",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Champion Locked In",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Everyone Locked In",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Re-enter Lobby",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="Lobby Events" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_LocalPlayerDied.uc b/exported/TgGame/Classes/TgSeqEvent_LocalPlayerDied.uc new file mode 100755 index 00000000..2dd390e6 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_LocalPlayerDied.uc @@ -0,0 +1,11 @@ +class TgSeqEvent_LocalPlayerDied extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bClientSideOnly=true + ObjName="TgSeqEvent_LocalPlayerDied" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_LocalPlayerRecalled.uc b/exported/TgGame/Classes/TgSeqEvent_LocalPlayerRecalled.uc new file mode 100755 index 00000000..54b66a32 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_LocalPlayerRecalled.uc @@ -0,0 +1,11 @@ +class TgSeqEvent_LocalPlayerRecalled extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bClientSideOnly=true + ObjName="TgSeqEvent_LocalPlayerRecalled" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_LocalPlayerScoredKill.uc b/exported/TgGame/Classes/TgSeqEvent_LocalPlayerScoredKill.uc new file mode 100755 index 00000000..89b343a3 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_LocalPlayerScoredKill.uc @@ -0,0 +1,11 @@ +class TgSeqEvent_LocalPlayerScoredKill extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bClientSideOnly=true + ObjName="TgSeqEvent_LocalPlayerScoredKill" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredPhoenixKill.uc b/exported/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredPhoenixKill.uc new file mode 100755 index 00000000..a17ec3b8 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredPhoenixKill.uc @@ -0,0 +1,11 @@ +class TgSeqEvent_LocalPlayersTeamScoredPhoenixKill extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bClientSideOnly=true + ObjName="TgSeqEvent_LocalPlayersTeamScoredPhoenixKill" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredTowerKill.uc b/exported/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredTowerKill.uc new file mode 100755 index 00000000..d58d886f --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_LocalPlayersTeamScoredTowerKill.uc @@ -0,0 +1,11 @@ +class TgSeqEvent_LocalPlayersTeamScoredTowerKill extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bClientSideOnly=true + ObjName="TgSeqEvent_LocalPlayersTeamScoredTowerKill" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_LookAtReceived.uc b/exported/TgGame/Classes/TgSeqEvent_LookAtReceived.uc new file mode 100755 index 00000000..c0877536 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_LookAtReceived.uc @@ -0,0 +1,10 @@ +class TgSeqEvent_LookAtReceived extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + OutputLinks[0]=(Links=none,LinkDesc="Player Looked at Point",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Look At Received" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_MICParameterEvent.uc b/exported/TgGame/Classes/TgSeqEvent_MICParameterEvent.uc new file mode 100755 index 00000000..68c4fdbb --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_MICParameterEvent.uc @@ -0,0 +1,30 @@ +class TgSeqEvent_MICParameterEvent extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +enum eMICEventType +{ + MET_NONE, // 0 + MET_DEFENSE_ALARM, // 1 + MET_MAX // 2 +}; + +var() TgSeqEvent_MICParameterEvent.eMICEventType MICEventType; +var() array AttachedMICs; + +// Export UTgSeqEvent_MICParameterEvent::execSetScalarParameterValue(FFrame&, void* const) +native function SetScalarParameterValue(name ParamName, float fValue); + +// Export UTgSeqEvent_MICParameterEvent::execSetVectorParameterValue(FFrame&, void* const) +native function SetVectorParameterValue(name ParamName, LinearColor Value); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + bClientSideOnly=true + OutputLinks[0]=(Links=none,LinkDesc="Activated",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Deactivated",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="MIC Parameter Event" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_MissionTimeRemaining.uc b/exported/TgGame/Classes/TgSeqEvent_MissionTimeRemaining.uc new file mode 100755 index 00000000..515b1d89 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_MissionTimeRemaining.uc @@ -0,0 +1,14 @@ +class TgSeqEvent_MissionTimeRemaining extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() float SecsRemaining; + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="TimeRemainingReached",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Mission Time Remaining Alert" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_MissionTimer.uc b/exported/TgGame/Classes/TgSeqEvent_MissionTimer.uc new file mode 100755 index 00000000..19341c2a --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_MissionTimer.uc @@ -0,0 +1,23 @@ +class TgSeqEvent_MissionTimer extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +// Export UTgSeqEvent_MissionTimer::execUpdateChallengerWonValue(FFrame&, void* const) +native function UpdateChallengerWonValue(bool bValue); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="SetupStarted",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="MissionStarted",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="PreGuardianPhase",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="GuardianPhase",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[4]=(Links=none,LinkDesc="MissionEnded",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[5]=(Links=none,LinkDesc="RoundReset",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[6]=(Links=none,LinkDesc="RoundEnded",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[7]=(Links=none,LinkDesc="TimedObjectiveUnlock",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Bool',LinkedVariables=none,LinkDesc="ChallengerWon",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Mission Timer Events" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_Named.uc b/exported/TgGame/Classes/TgSeqEvent_Named.uc new file mode 100755 index 00000000..fb238ff0 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_Named.uc @@ -0,0 +1,22 @@ +class TgSeqEvent_Named extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +enum TSE_NAME +{ + TSE_NONE, // 0 + TSE_MENU_CLOSE, // 1 + TSE_MOVIE_DONE, // 2 + TSE_MAX // 3 +}; + +var() TgSeqEvent_Named.TSE_NAME NamedEvent; + +defaultproperties +{ + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Off/Close",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="On/Open",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Named TgSeqEvent" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_PayloadAttackersWin.uc b/exported/TgGame/Classes/TgSeqEvent_PayloadAttackersWin.uc new file mode 100755 index 00000000..4968e34c --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_PayloadAttackersWin.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_PayloadAttackersWin extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Payload Attackers Win" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_PayloadBeginTF1.uc b/exported/TgGame/Classes/TgSeqEvent_PayloadBeginTF1.uc new file mode 100755 index 00000000..c5a7d2d3 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_PayloadBeginTF1.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_PayloadBeginTF1 extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Payload Begin TF1" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_PayloadBeginTF2.uc b/exported/TgGame/Classes/TgSeqEvent_PayloadBeginTF2.uc new file mode 100755 index 00000000..3b28fd7e --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_PayloadBeginTF2.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_PayloadBeginTF2 extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Payload Begin TF2" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_PayloadCP1Reached.uc b/exported/TgGame/Classes/TgSeqEvent_PayloadCP1Reached.uc new file mode 100755 index 00000000..1b47bd8a --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_PayloadCP1Reached.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_PayloadCP1Reached extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Checkpoint 1 Reached" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_PayloadCP2Reached.uc b/exported/TgGame/Classes/TgSeqEvent_PayloadCP2Reached.uc new file mode 100755 index 00000000..7224fc17 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_PayloadCP2Reached.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_PayloadCP2Reached extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Checkpoint 2 Reached" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_PayloadDefendersWin.uc b/exported/TgGame/Classes/TgSeqEvent_PayloadDefendersWin.uc new file mode 100755 index 00000000..411199f6 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_PayloadDefendersWin.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_PayloadDefendersWin extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Payload Defenders Win" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_PayloadEndTF1.uc b/exported/TgGame/Classes/TgSeqEvent_PayloadEndTF1.uc new file mode 100755 index 00000000..4ec09cd4 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_PayloadEndTF1.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_PayloadEndTF1 extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Payload End TF1" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_PayloadEndTF2.uc b/exported/TgGame/Classes/TgSeqEvent_PayloadEndTF2.uc new file mode 100755 index 00000000..2b1ccc31 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_PayloadEndTF2.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_PayloadEndTF2 extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Payload End TF2" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_PayloadGameEvent.uc b/exported/TgGame/Classes/TgSeqEvent_PayloadGameEvent.uc new file mode 100755 index 00000000..2e287816 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_PayloadGameEvent.uc @@ -0,0 +1,19 @@ +class TgSeqEvent_PayloadGameEvent extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + bClientSideOnly=true + OutputLinks[0]=(Links=none,LinkDesc="Neutral",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Checkpoint 1 Reached",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Checkpoint 2 Reached",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Match Almost Over",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[4]=(Links=none,LinkDesc="Overtime",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[5]=(Links=none,LinkDesc="Match Over",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="PayloadGameEvent" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_PayloadMissionEvents.uc b/exported/TgGame/Classes/TgSeqEvent_PayloadMissionEvents.uc new file mode 100755 index 00000000..16e741c0 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_PayloadMissionEvents.uc @@ -0,0 +1,26 @@ +class TgSeqEvent_PayloadMissionEvents extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +// Export UTgSeqEvent_PayloadMissionEvents::execUpdateTaskForceAttackValue(FFrame&, void* const) +native function UpdateTaskForceAttackValue(byte iValue); + +// Export UTgSeqEvent_PayloadMissionEvents::execUpdateTaskForceWonValue(FFrame&, void* const) +native function UpdateTaskForceWonValue(byte iValue); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="SetupStarted",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Waiting for Capture Point",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Capture Point",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Seige Attack",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[4]=(Links=none,LinkDesc="Waiting for Payload",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[5]=(Links=none,LinkDesc="Payload",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[6]=(Links=none,LinkDesc="Game Won",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="TaskForceAttack",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="TaskForceWon",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Payload Mission Events" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_PlaceableDestroyed.uc b/exported/TgGame/Classes/TgSeqEvent_PlaceableDestroyed.uc new file mode 100755 index 00000000..61d4dacc --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_PlaceableDestroyed.uc @@ -0,0 +1,14 @@ +class TgSeqEvent_PlaceableDestroyed extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Destroyed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="PlaceableDestroyed",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="PlaceableDestroyed" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_PlayOfTheGame.uc b/exported/TgGame/Classes/TgSeqEvent_PlayOfTheGame.uc new file mode 100755 index 00000000..f6d5c33d --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_PlayOfTheGame.uc @@ -0,0 +1,24 @@ +class TgSeqEvent_PlayOfTheGame extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +event UpdateLinkedVars(int MapLane) +{ + local SeqVar_Int IntVar; + + // End:0x52 + foreach LinkedVariables(Class'Engine.SeqVar_Int', IntVar, "Map Lane") + { + IntVar.IntValue = MapLane; + } + //return; +} + +defaultproperties +{ + bPlayerOnly=false + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Map Lane",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Play of the Game" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_PlayerCountHit.uc b/exported/TgGame/Classes/TgSeqEvent_PlayerCountHit.uc new file mode 100755 index 00000000..1c71af01 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_PlayerCountHit.uc @@ -0,0 +1,10 @@ +class TgSeqEvent_PlayerCountHit extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + ObjName="TgSeqEvent_PlayerCountHit" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_PlayerInitialized.uc b/exported/TgGame/Classes/TgSeqEvent_PlayerInitialized.uc new file mode 100755 index 00000000..c98dad34 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_PlayerInitialized.uc @@ -0,0 +1,12 @@ +class TgSeqEvent_PlayerInitialized extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +var() bool bLocalPlayerOnly; + +defaultproperties +{ + bClientSideOnly=true + ObjName="Player Initialized" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_PlayerMoved.uc b/exported/TgGame/Classes/TgSeqEvent_PlayerMoved.uc new file mode 100755 index 00000000..6f17a661 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_PlayerMoved.uc @@ -0,0 +1,31 @@ +class TgSeqEvent_PlayerMoved extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +enum EPlayerCardinalDirection +{ + PCD_Forward, // 0 + PCD_Backward, // 1 + PCD_Left, // 2 + PCD_Right, // 3 + PCD_MAX // 4 +}; + +var int ResultEnergy; + +static event int GetIndex(TgSeqEvent_PlayerMoved.EPlayerCardinalDirection MovementDirection) +{ + return int(MovementDirection); + //return ReturnValue; +} + +defaultproperties +{ + MaxTriggerCount=0 + OutputLinks[0]=(Links=none,LinkDesc="Forward",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Backward",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Left",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Right",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Player Moving" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_SetupTimeEnded.uc b/exported/TgGame/Classes/TgSeqEvent_SetupTimeEnded.uc new file mode 100755 index 00000000..e42407ae --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_SetupTimeEnded.uc @@ -0,0 +1,12 @@ +class TgSeqEvent_SetupTimeEnded extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="SetupTimeEnded",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="SetupTimeEnded" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_SiegePush.uc b/exported/TgGame/Classes/TgSeqEvent_SiegePush.uc new file mode 100755 index 00000000..10c6b3f6 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_SiegePush.uc @@ -0,0 +1,14 @@ +class TgSeqEvent_SiegePush extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Forward",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Reverse",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Stop",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="SiegePushEvent" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_SpawnGateActivate.uc b/exported/TgGame/Classes/TgSeqEvent_SpawnGateActivate.uc new file mode 100755 index 00000000..a2a43521 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_SpawnGateActivate.uc @@ -0,0 +1,10 @@ +class TgSeqEvent_SpawnGateActivate extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + ObjName="Spawn Gate Activate" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate.uc b/exported/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate.uc new file mode 100755 index 00000000..31f47410 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate.uc @@ -0,0 +1,10 @@ +class TgSeqEvent_SpawnGateDeactivate extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + ObjName="Spawn Gate Deactivate" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Attackers.uc b/exported/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Attackers.uc new file mode 100755 index 00000000..cd9dcba7 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Attackers.uc @@ -0,0 +1,10 @@ +class TgSeqEvent_SpawnGateDeactivate_Attackers extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + ObjName="Spawn Gate Deactivate (Attackers)" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Defenders.uc b/exported/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Defenders.uc new file mode 100755 index 00000000..09180412 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_SpawnGateDeactivate_Defenders.uc @@ -0,0 +1,10 @@ +class TgSeqEvent_SpawnGateDeactivate_Defenders extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + ObjName="Spawn Gate Deactivate (Defenders)" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_SpawnLanePusher.uc b/exported/TgGame/Classes/TgSeqEvent_SpawnLanePusher.uc new file mode 100755 index 00000000..aedfe7b4 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_SpawnLanePusher.uc @@ -0,0 +1,16 @@ +class TgSeqEvent_SpawnLanePusher extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int Taskforce; + +defaultproperties +{ + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="LeftLane",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="MidLane",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="RightLane",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="Spawn Lanepusher" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_SpawnWise.uc b/exported/TgGame/Classes/TgSeqEvent_SpawnWise.uc new file mode 100755 index 00000000..b4b8f21f --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_SpawnWise.uc @@ -0,0 +1,15 @@ +class TgSeqEvent_SpawnWise extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int Taskforce; + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="TriggerFactory",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="Spawn Wise" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_SpectatorReady.uc b/exported/TgGame/Classes/TgSeqEvent_SpectatorReady.uc new file mode 100755 index 00000000..8caf0bf1 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_SpectatorReady.uc @@ -0,0 +1,55 @@ +class TgSeqEvent_SpectatorReady extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +static function bool TriggerGlobal(TgSpectatorController InInstigator) +{ + local array EventsToActivate; + local array ActivateIndices; + local Sequence GameSeq; + local TgSeqEvent_SpectatorReady Event; + local bool bResult; + local int I; + + ActivateIndices[0] = 0; + // End:0x27 + if(InInstigator == none) + { + return bResult; + } + GameSeq = InInstigator.WorldInfo.GetGameSequence(); + // End:0x157 + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_SpectatorReady', true, EventsToActivate); + I = 0; + J0xB1: + + // End:0x157 [Loop If] + if(I < EventsToActivate.Length) + { + Event = TgSeqEvent_SpectatorReady(EventsToActivate[I]); + // End:0x149 + if(Event != none) + { + // End:0x149 + if(Event.CheckActivate(InInstigator, InInstigator,, ActivateIndices)) + { + bResult = true; + } + } + I++; + // [Loop Continue] + goto J0xB1; + } + } + return bResult; + //return ReturnValue; +} + +defaultproperties +{ + MaxTriggerCount=0 + OutputLinks[0]=(Links=none,LinkDesc="Ready",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Spectator Ready" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_SurvivalGameBegin.uc b/exported/TgGame/Classes/TgSeqEvent_SurvivalGameBegin.uc new file mode 100755 index 00000000..6180875d --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_SurvivalGameBegin.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_SurvivalGameBegin extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Survival Game Begin" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_SurvivalGameEnd.uc b/exported/TgGame/Classes/TgSeqEvent_SurvivalGameEnd.uc new file mode 100755 index 00000000..7588fae8 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_SurvivalGameEnd.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_SurvivalGameEnd extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + ObjName="Survival Game End" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_SurvivalGameEvent.uc b/exported/TgGame/Classes/TgSeqEvent_SurvivalGameEvent.uc new file mode 100755 index 00000000..48ec52cc --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_SurvivalGameEvent.uc @@ -0,0 +1,16 @@ +class TgSeqEvent_SurvivalGameEvent extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + bClientSideOnly=true + OutputLinks[0]=(Links=none,LinkDesc="PreFog",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="FogConverging",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="PostFog",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="SurvivalGameEvent" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_TakeDamage.uc b/exported/TgGame/Classes/TgSeqEvent_TakeDamage.uc new file mode 100755 index 00000000..f9d997ea --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_TakeDamage.uc @@ -0,0 +1,56 @@ +class TgSeqEvent_TakeDamage extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +event HandleDamage(Actor InOriginator, Actor InInstigator, int inAmount, Class inDamageType, TgDevice InDevice) +{ + local SeqVar_Float FloatVar; + local TgSeqVar_DamageType DamageVar; + local SeqVar_Object DeviceVar; + local bool bAlreadyActivatedThisTick; + + PublishLinkedVariableValues(); + // End:0x20F + if(((InOriginator != none) && bEnabled) && !bPlayerOnly || (InInstigator != none) && InInstigator.IsPlayerOwned()) + { + bAlreadyActivatedThisTick = bActive && ActivationTime ~= GetWorldInfo().TimeSeconds; + // End:0x20F + if(CheckActivate(InOriginator, InInstigator, false)) + { + // End:0x167 + foreach LinkedVariables(Class'Engine.SeqVar_Float', FloatVar, "Damage Taken") + { + // End:0x13C + if(bAlreadyActivatedThisTick) + { + FloatVar.FloatValue += float(inAmount); + // End:0x166 + continue; + } + FloatVar.FloatValue = float(inAmount); + } + // End:0x1BD + foreach LinkedVariables(Class'TgGame.TgSeqVar_DamageType', DamageVar, "Damage Type") + { + DamageVar.DamageTypeValue = inDamageType; + } + // End:0x20E + foreach LinkedVariables(Class'Engine.SeqVar_Object', DeviceVar, "Device") + { + DeviceVar.SetObjectValue(InDevice); + } + } + } + //return; +} + +defaultproperties +{ + MaxTriggerCount=0 + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Damage Taken",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'TgGame.TgSeqVar_DamageType',LinkedVariables=none,LinkDesc="Damage Type",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[3]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Device",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Paladins Take Damage" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_TaskForceInactive.uc b/exported/TgGame/Classes/TgSeqEvent_TaskForceInactive.uc new file mode 100755 index 00000000..8d3f2c9f --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_TaskForceInactive.uc @@ -0,0 +1,11 @@ +class TgSeqEvent_TaskForceInactive extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Inactive Task Force",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Task Force Inactive" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_TaskForceScoreUpdated.uc b/exported/TgGame/Classes/TgSeqEvent_TaskForceScoreUpdated.uc new file mode 100755 index 00000000..80872f79 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_TaskForceScoreUpdated.uc @@ -0,0 +1,16 @@ +class TgSeqEvent_TaskForceScoreUpdated extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +var() int DefenderTaskForce; +var() int currentScore; + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + bClientSideOnly=true + OutputLinks[0]=(Links=none,LinkDesc="Score Updated",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="TaskForce Score Updated" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_TeamInactive.uc b/exported/TgGame/Classes/TgSeqEvent_TeamInactive.uc new file mode 100755 index 00000000..f836c61d --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_TeamInactive.uc @@ -0,0 +1,11 @@ +class TgSeqEvent_TeamInactive extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + bPlayerOnly=false + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Inactive Team",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Team Inactive" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_TicketCountUpdated.uc b/exported/TgGame/Classes/TgSeqEvent_TicketCountUpdated.uc new file mode 100755 index 00000000..7335a66b --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_TicketCountUpdated.uc @@ -0,0 +1,13 @@ +class TgSeqEvent_TicketCountUpdated extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Pulse",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Threshold",LinkVar="None",PropertyName="m_fPercentTicketsThreshold",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Ticket Count Updated" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_TimeLapse.uc b/exported/TgGame/Classes/TgSeqEvent_TimeLapse.uc new file mode 100755 index 00000000..8a4a05d0 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_TimeLapse.uc @@ -0,0 +1,14 @@ +class TgSeqEvent_TimeLapse extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + bClientSideOnly=true + OutputLinks[0]=(Links=none,LinkDesc="Pre Time Lapse",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Post Time Lapse",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="TgSeqEvent_TimeLapse" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_Tutorial.uc b/exported/TgGame/Classes/TgSeqEvent_Tutorial.uc new file mode 100755 index 00000000..18a3ffb9 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_Tutorial.uc @@ -0,0 +1,84 @@ +class TgSeqEvent_Tutorial extends SequenceEvent + forcescriptorder(true) + hidecategories(Object); + +enum EPaladinsTutorialEvent +{ + PTE_Started, // 0 + PTE_HelperSpawned, // 1 + PTE_MovingToAutoShootingRange, // 2 + PTE_PlayerReachedAutoShootingRange,// 3 + PTE_WaitingForMovementAbility, // 4 + PTE_ReceivedMovementAbility, // 5 + PTE_PlayerReachedUltimateShootingRange,// 6 + PTE_PlayerUltimateComplete, // 7 + PTE_PlayerReachedLowerJumpArea, // 8 + PTE_PlayerReachedUpperJumpArea, // 9 + PTE_PlayerReachedObjective, // 10 + PTE_MoveBotToCapturePoint, // 11 + PTE_MoveBotToPayload, // 12 + PTE_Complete, // 13 + PTE_MAX // 14 +}; + +static function bool TriggerGlobal(Actor InInstigator, TgSeqEvent_Tutorial.EPaladinsTutorialEvent TutEvent) +{ + local array EventsToActivate; + local array ActivateIndices; + local Sequence GameSeq; + local TgSeqEvent_Tutorial Event; + local bool bResult; + local int I; + + ActivateIndices.AddItem(int(TutEvent)); + // End:0x49 + if((InInstigator == none) || ActivateIndices[0] == -1) + { + return bResult; + } + GameSeq = InInstigator.WorldInfo.GetGameSequence(); + // End:0x17B + if(GameSeq != none) + { + GameSeq.FindSeqObjectsByClass(Class'TgGame.TgSeqEvent_Tutorial', true, EventsToActivate); + I = 0; + J0xD3: + + // End:0x17B [Loop If] + if(I < EventsToActivate.Length) + { + Event = TgSeqEvent_Tutorial(EventsToActivate[I]); + // End:0x16D + if((Event != none) && Event.CheckActivate(InInstigator, InInstigator,, ActivateIndices)) + { + bResult = true; + } + I++; + // [Loop Continue] + goto J0xD3; + } + } + return bResult; + //return ReturnValue; +} + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Tutorial Started",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Helper Bot Spawned",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Moving to Auto Shooting Range",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Player Reached Auto Shooting Range",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[4]=(Links=none,LinkDesc="Waiting for Movement Ability",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[5]=(Links=none,LinkDesc="Received Movement Ability",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[6]=(Links=none,LinkDesc="Player reached Ultimate Shooting Range",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[7]=(Links=none,LinkDesc="Player completed Ultimate",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[8]=(Links=none,LinkDesc="Player reached lower jump area",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[9]=(Links=none,LinkDesc="Player reached upper jump area",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[10]=(Links=none,LinkDesc="Player reached capture point",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[11]=(Links=none,LinkDesc="Move Bot to contest capture point",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[12]=(Links=none,LinkDesc="Move Bot to contest payload",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[13]=(Links=none,LinkDesc="Tutorial Complete",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + ObjName="Paladins Tutorial" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_TutorialEvent.uc b/exported/TgGame/Classes/TgSeqEvent_TutorialEvent.uc new file mode 100755 index 00000000..421826da --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_TutorialEvent.uc @@ -0,0 +1,51 @@ +class TgSeqEvent_TutorialEvent extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +enum TUTORIAL_EVENT +{ + TUTEVT_OPENED_ITEM_SHOP, // 0 + TUTEVT_BOUGHT_ITEM, // 1 + TUTEVT_CLOSED_ITEM_SHOP, // 2 + TUTEVT_OPENED_SKILLS, // 3 + TUTEVT_BOUGHT_SKILL, // 4 + TUTEVT_CLOSED_SKILLS, // 5 + TUTEVT_USED_ABILITY, // 6 + TUTEVT_USED_RECALL, // 7 + TUTEVT_TARGETED, // 8 + TUTEVT_OPENED_INTRO, // 9 + TUTEVT_CLOSED_INTRO, // 10 + TUTEVT_USED_ACTIVE_ITEM, // 11 + TUTEVT_SELECTED_SHOP_ITEM, // 12 + TUTEVT_SELECTED_SHOP_ITEM2, // 13 + TUTEVT_SELECTED_SHOP_ITEM3, // 14 + TUTEVT_USED_CONSUMABLE_ITEM, // 15 + TUTEVT_SELECTED_ALL_ITEMS, // 16 + TUTEVT_MAX // 17 +}; + +enum TUTORIAL_TARGET_TYPE +{ + TUT_TARGET_TOWER, // 0 + TUT_TARGET_PHOENIX, // 1 + TUT_TARGET_GUARDIAN, // 2 + TUT_TARGET_MAX // 3 +}; + +var() TgSeqEvent_TutorialEvent.TUTORIAL_EVENT TutEvent; +var int EventData; + +static event int GetObjClassVersion() +{ + return super(SequenceObject).GetObjClassVersion() + 0; + //return ReturnValue; +} + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="EventData",LinkVar="None",PropertyName="EventData",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Smite Tutorial Events" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_UI_Event.uc b/exported/TgGame/Classes/TgSeqEvent_UI_Event.uc new file mode 100755 index 00000000..78a53185 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_UI_Event.uc @@ -0,0 +1,100 @@ +class TgSeqEvent_UI_Event extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var int mDeckNum; +var int mEmptyItemSlots; + +event DeckUIInitialized(Actor InOriginator, Actor InInstigator) +{ + local array ActivateIndices; + + ActivateIndices[0] = 0; + CheckActivate(InOriginator, InInstigator,, ActivateIndices); + //return; +} + +event ItemUIInitialized(Actor InOriginator, Actor InInstigator) +{ + local array ActivateIndices; + + ActivateIndices[0] = 1; + CheckActivate(InOriginator, InInstigator,, ActivateIndices); + //return; +} + +event DeckMenuOpened(Actor InOriginator, Actor InInstigator) +{ + local array ActivateIndices; + + ActivateIndices[0] = 2; + CheckActivate(InOriginator, InInstigator,, ActivateIndices); + //return; +} + +event DeckChanged(Actor InOriginator, Actor InInstigator, int Deck) +{ + local array ActivateIndices; + + ActivateIndices[0] = 3; + mDeckNum = Deck; + CheckActivate(InOriginator, InInstigator,, ActivateIndices); + //return; +} + +event DeckSelected(Actor InOriginator, Actor InInstigator, int Deck) +{ + local array ActivateIndices; + + ActivateIndices[0] = 4; + mDeckNum = Deck; + CheckActivate(InOriginator, InInstigator,, ActivateIndices); + //return; +} + +event ItemMenuOpened(Actor InOriginator, Actor InInstigator) +{ + local array ActivateIndices; + + ActivateIndices[0] = 5; + CheckActivate(InOriginator, InInstigator,, ActivateIndices); + //return; +} + +event ItemPurchased(Actor InOriginator, Actor InInstigator, int EmptySlots) +{ + local array ActivateIndices; + + ActivateIndices[0] = 6; + mEmptyItemSlots = EmptySlots; + CheckActivate(InOriginator, InInstigator,, ActivateIndices); + //return; +} + +event ItemUpgraded(Actor InOriginator, Actor InInstigator) +{ + local array ActivateIndices; + + ActivateIndices[0] = 7; + CheckActivate(InOriginator, InInstigator,, ActivateIndices); + //return; +} + +defaultproperties +{ + MaxTriggerCount=0 + bClientSideOnly=true + OutputLinks[0]=(Links=none,LinkDesc="Deck UI Initialized",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Item UI Initialized",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[2]=(Links=none,LinkDesc="Deck Menu Opened",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[3]=(Links=none,LinkDesc="Deck Changed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[4]=(Links=none,LinkDesc="Deck Selected",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[5]=(Links=none,LinkDesc="Item Menu Opened",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[6]=(Links=none,LinkDesc="Item Purchased",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[7]=(Links=none,LinkDesc="Item Upgraded",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Deck Number",LinkVar="None",PropertyName="mDeckNum",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Int',LinkedVariables=none,LinkDesc="Empty Item Slots",LinkVar="None",PropertyName="mEmptyItemSlots",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Tutorial UI Event" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_UpdateLanePusherCount.uc b/exported/TgGame/Classes/TgSeqEvent_UpdateLanePusherCount.uc new file mode 100755 index 00000000..1c560575 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_UpdateLanePusherCount.uc @@ -0,0 +1,15 @@ +class TgSeqEvent_UpdateLanePusherCount extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() int Taskforce; + +defaultproperties +{ + bPlayerOnly=false + OutputLinks[0]=(Links=none,LinkDesc="Died",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Spawned",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks=none + ObjName="Update LanePusher Count" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_Used.uc b/exported/TgGame/Classes/TgSeqEvent_Used.uc new file mode 100755 index 00000000..cb366be2 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_Used.uc @@ -0,0 +1,12 @@ +class TgSeqEvent_Used extends SequenceEvent + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + MaxTriggerCount=0 + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Instigator",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Distance",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="TgSeqEvent_Used" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqEvent_VaultLowHealth.uc b/exported/TgGame/Classes/TgSeqEvent_VaultLowHealth.uc new file mode 100755 index 00000000..9fa38c6c --- /dev/null +++ b/exported/TgGame/Classes/TgSeqEvent_VaultLowHealth.uc @@ -0,0 +1,9 @@ +class TgSeqEvent_VaultLowHealth extends SequenceEvent + native + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + ObjName="TgSeqEvent_VaultLowHealth" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqOp_MathCalc.uc b/exported/TgGame/Classes/TgSeqOp_MathCalc.uc new file mode 100755 index 00000000..4a9823c5 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqOp_MathCalc.uc @@ -0,0 +1,18 @@ +class TgSeqOp_MathCalc extends SequenceCondition + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var float m_fResult; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Add",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="Subtract",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[2]=(LinkDesc="Multiply",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[3]=(LinkDesc="Divide",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Initial",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Inputs",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Float',LinkedVariables=none,LinkDesc="Ouput",LinkVar="None",PropertyName="m_fResult",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Math Calc" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqVar_DamageType.uc b/exported/TgGame/Classes/TgSeqVar_DamageType.uc new file mode 100755 index 00000000..1462f596 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqVar_DamageType.uc @@ -0,0 +1,11 @@ +class TgSeqVar_DamageType extends SequenceVariable + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var() Class DamageTypeValue; + +defaultproperties +{ + ObjName="Damage Type" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqVar_Player.uc b/exported/TgGame/Classes/TgSeqVar_Player.uc new file mode 100755 index 00000000..c99baa46 --- /dev/null +++ b/exported/TgGame/Classes/TgSeqVar_Player.uc @@ -0,0 +1,20 @@ +class TgSeqVar_Player extends SeqVar_Player + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +var transient array HumanPlayers; +var transient array BotPlayers; +var transient array PetPlayers; +var() bool bAllBots; +var() bool bAllHumans; +var() bool bAllHumansAndPets; +var() int nTaskForceNumber; + +defaultproperties +{ + bAllHumans=true + nTaskForceNumber=-1 + bAllPlayers=false + ObjName="TgPlayer" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSeqVar_RouteNumber.uc b/exported/TgGame/Classes/TgSeqVar_RouteNumber.uc new file mode 100755 index 00000000..0fb1f7af --- /dev/null +++ b/exported/TgGame/Classes/TgSeqVar_RouteNumber.uc @@ -0,0 +1,10 @@ +class TgSeqVar_RouteNumber extends SeqVar_Int + native(Kismet) + forcescriptorder(true) + hidecategories(Object); + +defaultproperties +{ + IntValue=-1 + ObjName="RouteNumber" +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSiegePushActor.uc b/exported/TgGame/Classes/TgSiegePushActor.uc new file mode 100755 index 00000000..ffb890d8 --- /dev/null +++ b/exported/TgGame/Classes/TgSiegePushActor.uc @@ -0,0 +1,230 @@ +class TgSiegePushActor extends Actor + placeable + hidecategories(Navigation); + +enum EPushState +{ + PushState_Paused, // 0 + PushState_Forward, // 1 + PushState_PendingReverse, // 2 + PushState_Reverse, // 3 + PushState_MAX // 4 +}; + +var TgCollisionProxy_Cylinder s_CollisionProxy; +var() const float m_fCollisionProxyRadius; +var() const float m_fCollisionProxyHeight; +var() export editinline SkeletalMeshComponent m_SkelMesh; +var() export editinline StaticMeshComponent m_RadiusMesh; +var transient int m_nTF1Count; +var transient int m_nTF2Count; +var() int m_nDefenderTaskForce; +var transient TgSiegePushActor.EPushState m_CurrentPushState; +var() float m_fPendingReverseTime; + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x132 + if(int(Role) == int(ROLE_Authority)) + { + s_CollisionProxy = Spawn(Class'TgGame.TgCollisionProxy_Cylinder', self,, Location, Rotation,, true); + s_CollisionProxy.SetBase(self); + s_CollisionProxy.__ProxyTouch__Delegate = CollisionProxyOnTouch; + s_CollisionProxy.__ProxyUnTouch__Delegate = CollisionProxyOnUnTouch; + s_CollisionProxy.DelegatesUpdated(); + s_CollisionProxy.m_CollisionCylinder.SetCylinderSize(m_fCollisionProxyRadius, m_fCollisionProxyHeight); + } + //return; +} + +simulated event CollisionProxyOnTouch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + // End:0x2D + if(Other.IsA('TgPawn_Character')) + { + NearbyPawnsUpdated(); + } + //return; +} + +simulated event CollisionProxyOnUnTouch(Actor Other) +{ + // End:0x2D + if(Other.IsA('TgPawn_Character')) + { + NearbyPawnsUpdated(); + } + //return; +} + +function NearbyPawnsUpdated() +{ + local TgPawn_Character NearByPawn; + local int I; + + m_nTF1Count = 0; + m_nTF2Count = 0; + I = 0; + J0x21: + + // End:0xF8 [Loop If] + if(I < s_CollisionProxy.m_NearByPlayers.Length) + { + NearByPawn = TgPawn_Character(s_CollisionProxy.m_NearByPlayers[I]); + // End:0xEA + if(NearByPawn != none) + { + switch(NearByPawn.GetTaskForceNumber()) + { + // End:0xD4 + case 1: + m_nTF1Count++; + // End:0xEA + break; + // End:0xE7 + case 2: + m_nTF2Count++; + // End:0xEA + break; + // End:0xFFFF + default: + break; + } + } + else + { + I++; + // [Loop Continue] + goto J0x21; + }/* !MISMATCHING REMOVE, tried Loop got Type:Else Position:0x0EA! */ + // End:0x127 + if((m_nTF1Count > 0) && m_nTF2Count > 0) + { + SetCurrentPushState(0); + } + else + { + // End:0x163 + if(m_nDefenderTaskForce == 1) + { + // End:0x154 + if(m_nTF1Count > 0) + { + SetCurrentPushState(1); + } + else + { + SetCurrentPushState(2); + } + } + else + { + // End:0x19D + if(m_nDefenderTaskForce == 2) + { + // End:0x191 + if(m_nTF2Count > 0) + { + SetCurrentPushState(1); + } + else + { + SetCurrentPushState(2); + } + } + } + } + //return; + }/* !MISMATCHING REMOVE, tried Else got Type:Loop Position:0x021! */ +} + +function SetReversePushState() +{ + SetCurrentPushState(3); + //return; +} + +function SetCurrentPushState(TgSiegePushActor.EPushState NewPushState) +{ + // End:0x1D + if(int(m_CurrentPushState) == int(NewPushState)) + { + return; + } + ClearTimer('SetReversePushState'); + switch(NewPushState) + { + // End:0x7B + case 2: + SetTimer(m_fPendingReverseTime, false, 'SetReversePushState'); + TriggerEventClass(Class'TgGame.TgSeqEvent_SiegePush', self, 2); + // End:0xDC + break; + // End:0x9B + case 0: + TriggerEventClass(Class'TgGame.TgSeqEvent_SiegePush', self, 2); + // End:0xDC + break; + // End:0xBA + case 1: + TriggerEventClass(Class'TgGame.TgSeqEvent_SiegePush', self, 0); + // End:0xDC + break; + // End:0xD9 + case 3: + TriggerEventClass(Class'TgGame.TgSeqEvent_SiegePush', self, 1); + // End:0xDC + break; + // End:0xFFFF + default: + break; + } + m_CurrentPushState = NewPushState; + //return; +} + +defaultproperties +{ + m_fCollisionProxyRadius=500.0000000 + m_fCollisionProxyHeight=200.0000000 + // Reference: SkeletalMeshComponent'TgGame.Default__TgSiegePushActor.SiegeEngine' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SiegeEngine' + begin object name="SiegeEngine" class=Engine.SkeletalMeshComponent + ReplacementPrimitive=none + CollideActors=true + BlockActors=true + BlockZeroExtent=true + BlockNonZeroExtent=true + BlockRigidBody=true + Scale=3.0000000 + end object + m_SkelMesh=SiegeEngine + // Reference: StaticMeshComponent'TgGame.Default__TgSiegePushActor.RadiusMesh' + // TemplateOwnerClass: none + // TemplateOwnerName: 'RadiusMesh' + begin object name="RadiusMesh" class=Engine.StaticMeshComponent + ReplacementPrimitive=none + CollideActors=false + BlockActors=false + BlockZeroExtent=false + BlockNonZeroExtent=false + BlockRigidBody=false + end object + m_RadiusMesh=RadiusMesh + m_fPendingReverseTime=5.0000000 + Components[0]=none + Components[1]=SiegeEngine + Components[2]=RadiusMesh + Physics=EPhysics.PHYS_Interpolating + RemoteRole=ENetRole.ROLE_SimulatedProxy + bNoDelete=true + bAlwaysRelevant=true + bCollideActors=true + bBlockActors=true + bProjTarget=true + NetPriority=2.0000000 + CollisionComponent=SiegeEngine + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSilhouetteComponentPaladins.uc b/exported/TgGame/Classes/TgSilhouetteComponentPaladins.uc new file mode 100755 index 00000000..e2d4f9e7 --- /dev/null +++ b/exported/TgGame/Classes/TgSilhouetteComponentPaladins.uc @@ -0,0 +1,92 @@ +class TgSilhouetteComponentPaladins extends TgSilhouetteComponent + native(FX) + hidecategories(Object); + +struct native SilhouetteColorSettings +{ + var bool bUsesMultipleColors; + var bool bUsesEnemyRangeColorVariance; + var const Color BlueColor; + var const Color EnemyColor; + var const Color PurpleColor; + var const Color OrangeColor; + var const Color EnemyTargetedEffectiveRangeColor; + var const Color EnemyTargetedMaxRangeColor; + var const Color RedColor; + + structdefaultproperties + { + bUsesMultipleColors=false + bUsesEnemyRangeColorVariance=false + BlueColor=(R=0,G=0,B=0,A=0) + EnemyColor=(R=0,G=0,B=0,A=0) + PurpleColor=(R=0,G=0,B=0,A=0) + OrangeColor=(R=0,G=0,B=0,A=0) + EnemyTargetedEffectiveRangeColor=(R=0,G=0,B=0,A=0) + EnemyTargetedMaxRangeColor=(R=0,G=0,B=0,A=0) + RedColor=(R=0,G=0,B=0,A=0) + } +}; + +struct native SilhouetteFadeSettings +{ + var bool bUsesDistanceFade; + var const float fAlphaFadeNearDist; + var const float fAlphaFadeNear; + var const float fAlphaFadeFarDist; + var const float fAlphaFadeFar; + + structdefaultproperties + { + bUsesDistanceFade=false + fAlphaFadeNearDist=0.0000000 + fAlphaFadeNear=0.0000000 + fAlphaFadeFarDist=0.0000000 + fAlphaFadeFar=0.0000000 + } +}; + +struct native SilhouettePulseSettings +{ + var bool bUsesPulse; + var bool bUsePulseAlpha; + var bool bPulseMaintainsDistanceDimming; + var Vector2D vPulseAlpha; + var bool bPulseUseCustomColor; + var Color PulseCustomColor; + var bool bUsePulseThicknessMultiplier; + var Vector2D vPulseThicknessMultiplier; + var float fPulseElapsedTime; + var float fPulseDuration; + var float fPulseWaveTime; + + structdefaultproperties + { + bUsesPulse=false + bUsePulseAlpha=false + bPulseMaintainsDistanceDimming=false + vPulseAlpha=(X=0.0000000,Y=0.0000000) + bPulseUseCustomColor=false + PulseCustomColor=(R=0,G=0,B=0,A=0) + bUsePulseThicknessMultiplier=false + vPulseThicknessMultiplier=(X=0.0000000,Y=0.0000000) + fPulseElapsedTime=0.0000000 + fPulseDuration=0.0000000 + fPulseWaveTime=0.0000000 + } +}; + +var(ColorSettings) SilhouetteColorSettings m_ColorSettings; +var(FadeSettings) SilhouetteFadeSettings m_FadeSettings; +var(PulseSettings) SilhouettePulseSettings m_PulseSettings; + +defaultproperties +{ + m_ColorSettings=(bUsesMultipleColors=false,bUsesEnemyRangeColorVariance=false,BlueColor=(R=80,G=219,B=239,A=0),EnemyColor=(R=247,G=149,B=51,A=0),PurpleColor=(R=192,G=22,B=207,A=0),OrangeColor=(R=252,G=122,B=40,A=0),EnemyTargetedEffectiveRangeColor=(R=247,G=51,B=51,A=0),EnemyTargetedMaxRangeColor=(R=255,G=188,B=51,A=0),RedColor=(R=247,G=51,B=51,A=0)) + m_FadeSettings=(bUsesDistanceFade=false,fAlphaFadeNearDist=500.0000000,fAlphaFadeNear=0.2500000,fAlphaFadeFarDist=2000.0000000,fAlphaFadeFar=0.0400000) + SilhouetteColor=(R=0.0780566,G=0.7154654,B=0.8671355,A=0.2500000) + NearThickness=0.5500000 + FarThickness=4.0000000 + ReplacementPrimitive=none + TickGroup=ETickingGroup.TG_PostAsyncWork +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSilhouetteComponentPaladinsDeployable.uc b/exported/TgGame/Classes/TgSilhouetteComponentPaladinsDeployable.uc new file mode 100755 index 00000000..bc21bfda --- /dev/null +++ b/exported/TgGame/Classes/TgSilhouetteComponentPaladinsDeployable.uc @@ -0,0 +1,10 @@ +class TgSilhouetteComponentPaladinsDeployable extends TgSilhouetteComponentPaladins + native(FX) + hidecategories(Object); + +defaultproperties +{ + m_ColorSettings=(bUsesMultipleColors=true,EnemyColor=(R=247,G=51,B=51,A=0)) + m_FadeSettings=(bUsesDistanceFade=true) + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSilhouetteComponentPaladinsPawn.uc b/exported/TgGame/Classes/TgSilhouetteComponentPaladinsPawn.uc new file mode 100755 index 00000000..ddd1e4e1 --- /dev/null +++ b/exported/TgGame/Classes/TgSilhouetteComponentPaladinsPawn.uc @@ -0,0 +1,11 @@ +class TgSilhouetteComponentPaladinsPawn extends TgSilhouetteComponentPaladins + native(FX) + hidecategories(Object); + +defaultproperties +{ + m_ColorSettings=(bUsesMultipleColors=true,bUsesEnemyRangeColorVariance=true) + m_FadeSettings=(bUsesDistanceFade=true) + m_PulseSettings=(bUsesPulse=true,bPulseMaintainsDistanceDimming=true) + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSilhouetteComponentPayload.uc b/exported/TgGame/Classes/TgSilhouetteComponentPayload.uc new file mode 100755 index 00000000..92d28b4d --- /dev/null +++ b/exported/TgGame/Classes/TgSilhouetteComponentPayload.uc @@ -0,0 +1,10 @@ +class TgSilhouetteComponentPayload extends TgSilhouetteComponentPaladins + native(FX) + hidecategories(Object); + +defaultproperties +{ + m_ColorSettings=(bUsesMultipleColors=true,EnemyColor=(R=247,G=51,B=51,A=0)) + SilhouetteColor=(R=0.4800000,G=0.4900000,B=0.1000000,A=0.2500000) + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSilhouetteManager.uc b/exported/TgGame/Classes/TgSilhouetteManager.uc new file mode 100755 index 00000000..f8afdea1 --- /dev/null +++ b/exported/TgGame/Classes/TgSilhouetteManager.uc @@ -0,0 +1,40 @@ +class TgSilhouetteManager extends Actor + native(FX) + notplaceable + hidecategories(Navigation); + +struct TgSilhouetteInfo +{ +}; + +var Actor m_Owner; +var bool m_bSilhouettesEnabled; +var() const bool m_bForceSilhouetteVisible; +var transient array m_SilhouetteInfos; +var() Class m_SilhouetteClass; + +// Export UTgSilhouetteManager::execInitializeSilhouetteComponent(FFrame&, void* const) +native function int InitializeSilhouetteComponent(MeshComponent InMesh, optional float fLifeAfterDeath = -1.0000000); + +// Export UTgSilhouetteManager::execFindSilhouetteInfo(FFrame&, void* const) +native function int FindSilhouetteInfo(MeshComponent ParentMesh); + +// Export UTgSilhouetteManager::execRemoveSilhouetteInfo(FFrame&, void* const) +native function bool RemoveSilhouetteInfo(MeshComponent ParentMesh); + +// Export UTgSilhouetteManager::execClearAllSilhouetteInfos(FFrame&, void* const) +native function ClearAllSilhouetteInfos(); + +// Export UTgSilhouetteManager::execUpdateSilhouetteVisibility(FFrame&, void* const) +native function UpdateSilhouetteVisibility(); + +// Export UTgSilhouetteManager::execShouldAnySilhouettesBeVisible(FFrame&, void* const) +native function bool ShouldAnySilhouettesBeVisible(); + +// Export UTgSilhouetteManager::execTickSilhouettes(FFrame&, void* const) +native function TickSilhouettes(float DeltaSeconds); + +defaultproperties +{ + m_SilhouetteClass=Class'TgGame.TgSilhouetteComponentPaladinsDeployable' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkelCon_AstroSpinner.uc b/exported/TgGame/Classes/TgSkelCon_AstroSpinner.uc new file mode 100755 index 00000000..afe8fec5 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelCon_AstroSpinner.uc @@ -0,0 +1,5 @@ +class TgSkelCon_AstroSpinner extends TgSkelCon_Spinner + native(Anim) + hidecategories(Object,Object,Adjustments,Translation); + +var TgPawn m_PawnOwner; diff --git a/exported/TgGame/Classes/TgSkelCon_CCD_IK_FootPlacement.uc b/exported/TgGame/Classes/TgSkelCon_CCD_IK_FootPlacement.uc new file mode 100755 index 00000000..58517b27 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelCon_CCD_IK_FootPlacement.uc @@ -0,0 +1,50 @@ +class TgSkelCon_CCD_IK_FootPlacement extends SkelControlBase + native(Anim) + hidecategories(Object,Object); + +struct native JointConstraintInformation +{ + var() float AngleConstraint; + var() float StretchConstraint; + + structdefaultproperties + { + AngleConstraint=0.0000000 + StretchConstraint=0.0000000 + } +}; + +var(CCD) int NumBones; +var(CCD) int MaxPerBoneIterations; +var const int IterationsCount; +var(CCD) float Precision; +var(CCD) bool bStartFromTail; +var(CCD) bool bNoTurnOptimization; +var() bool bAllowStretching; +var(FootPlacement) bool bInvertFootUpAxis; +var(FootPlacement) bool bOrientFootToGround; +var(FootPlacement) bool bOnlyEnableForUpAdjustment; +var bool m_bUseCachedFootOffset; +var(CCD) const array JointConstraints; +var(CCD) float MaxAngleSteps; +var(CCD) float MaxStretchSteps; +var(FootPlacement) float FootOffset; +var(FootPlacement) Object.EAxis FootUpAxis; +var(FootPlacement) Rotator FootRotOffset; +var(FootPlacement) float MaxUpAdjustment; +var(FootPlacement) float MaxDownAdjustment; +var(FootPlacement) float MaxFootOrientAdjust; +var Vector EffectorLocation; +var Vector m_vCachedFootOffset; + +defaultproperties +{ + NumBones=2 + MaxPerBoneIterations=3 + Precision=0.1000000 + bOrientFootToGround=true + MaxAngleSteps=0.4000000 + FootUpAxis=EAxis.AXIS_X + MaxUpAdjustment=50.0000000 + MaxFootOrientAdjust=45.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkelCon_ClockworkSpinner.uc b/exported/TgGame/Classes/TgSkelCon_ClockworkSpinner.uc new file mode 100755 index 00000000..cd7abf17 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelCon_ClockworkSpinner.uc @@ -0,0 +1,36 @@ +class TgSkelCon_ClockworkSpinner extends SkelControlSingleBone + native(Anim) + hidecategories(Object,Object); + +var() float m_fInterpTime; +var float m_fRemainingInterpTime; +var() float m_fPauseTime; +var float m_fRemainingPauseTime; +var() Object.EAxis RotationAxis; +var int DeltaRotation; +var() float m_fInterpRotation; +var() bool bLimitedRotation; +var bool bForward; +var() float m_fRotationMin; +var() float m_fRotationMax; +var() float m_fResetInterpTime; +var() float m_fResetPauseTime; +var() float m_fResetRotation; +var float m_fRotatorMin; +var float m_fRotatorMax; +var float RotationsPerSecond; +var float ResetRotationsPerSecond; + +defaultproperties +{ + m_fInterpTime=10.0000000 + m_fPauseTime=1.0000000 + RotationAxis=EAxis.AXIS_Z + bForward=true + m_fRotationMax=1.0000000 + RotationsPerSecond=1.0000000 + ResetRotationsPerSecond=1.0000000 + bApplyRotation=true + bAddRotation=true + BoneRotationSpace=EBoneControlSpace.BCS_BoneSpace +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkelCon_FootPlacement.uc b/exported/TgGame/Classes/TgSkelCon_FootPlacement.uc new file mode 100755 index 00000000..2af66307 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelCon_FootPlacement.uc @@ -0,0 +1,5 @@ +class TgSkelCon_FootPlacement extends SkelControlFootPlacement + native(Anim) + hidecategories(Object,Object,Effector); + +var(FootPlacement) bool bShouldUseWorldDown; diff --git a/exported/TgGame/Classes/TgSkelCon_Gate.uc b/exported/TgGame/Classes/TgSkelCon_Gate.uc new file mode 100755 index 00000000..11531270 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelCon_Gate.uc @@ -0,0 +1,23 @@ +class TgSkelCon_Gate extends SkelControlBase + native(Anim) + hidecategories(Object,Object); + +struct native SkelControlGateChild +{ + var SkelControlBase SkelControl; + var editconst transient float DrawY; + + structdefaultproperties + { + SkelControl=none + DrawY=0.0000000 + } +}; + +var(Gate) array ChildControls; + +defaultproperties +{ + ChildControls[0]=(SkelControl=none,DrawY=0.0000000) + ControlStrength=0.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkelCon_HitReaction.uc b/exported/TgGame/Classes/TgSkelCon_HitReaction.uc new file mode 100755 index 00000000..a2fa6c81 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelCon_HitReaction.uc @@ -0,0 +1,102 @@ +class TgSkelCon_HitReaction extends GameSkelCtrl_Recoil + native(Anim) + hidecategories(Object,Object); + +struct native RecoilInfo +{ + var() RecoilDef Min; + var() RecoilDef Max; + + structdefaultproperties + { + Min=(TimeToGo=0.0000000,TimeDuration=0.3300000,RotAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),RotOffset=(Pitch=0,Yaw=0,Roll=0),LocAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),LocOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000)) + Max=(TimeToGo=0.0000000,TimeDuration=0.3300000,RotAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),RotOffset=(Pitch=0,Yaw=0,Roll=0),LocAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),LocOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000)) + } +}; + +var() private TgObject.RecoilHitDir m_CurrentRecoilDir; +var() TgObject.HitReactionMoveType m_MoveType; +var() RecoilInfo m_RecoilFromFront; +var() RecoilInfo m_RecoilFromBack; +var() RecoilInfo m_RecoilFromLeft; +var() RecoilInfo m_RecoilFromRight; +var() array m_SlaveSkelControlNames; +var transient array m_SlaveSkelControls; +var transient bool m_bInitialized; + +simulated event SetRecoilDir(TgObject.RecoilHitDir NewDir) +{ + m_CurrentRecoilDir = NewDir; + //return; +} + +simulated event SetRecoilParam() +{ + switch(m_CurrentRecoilDir) + { + // End:0x38 + case 0: + Recoil = GenRecoil(m_RecoilFromFront); + // End:0xAA + break; + // End:0x5D + case 1: + Recoil = GenRecoil(m_RecoilFromBack); + // End:0xAA + break; + // End:0x82 + case 2: + Recoil = GenRecoil(m_RecoilFromLeft); + // End:0xAA + break; + // End:0xA7 + case 3: + Recoil = GenRecoil(m_RecoilFromRight); + // End:0xAA + break; + // End:0xFFFF + default: + break; + } + //return; +} + +simulated function Vector VRandRange(Vector v1, Vector v2) +{ + local Vector Result; + + Result.X = RandRange(v1.X, v2.X); + Result.Y = RandRange(v1.Y, v2.Y); + Result.Z = RandRange(v1.Z, v2.Z); + return Result; + //return ReturnValue; +} + +simulated function RecoilDef GenRecoil(RecoilInfo RecoilParam) +{ + local RecoilDef newRecoil; + + newRecoil.LocAmplitude = VRandRange(RecoilParam.Min.LocAmplitude, RecoilParam.Max.LocAmplitude); + newRecoil.LocFrequency = VRandRange(RecoilParam.Min.LocFrequency, RecoilParam.Max.LocFrequency); + newRecoil.LocOffset = VRandRange(RecoilParam.Min.LocOffset, RecoilParam.Max.LocOffset); + newRecoil.LocParams = RecoilParam.Min.LocParams; + newRecoil.LocSinOffset = VRandRange(RecoilParam.Min.LocSinOffset, RecoilParam.Max.LocSinOffset); + newRecoil.RotAmplitude = VRandRange(RecoilParam.Min.RotAmplitude, RecoilParam.Max.RotAmplitude); + newRecoil.RotFrequency = VRandRange(RecoilParam.Min.RotFrequency, RecoilParam.Max.RotFrequency); + newRecoil.RotOffset = Rotator(VRandRange(Vector(RecoilParam.Min.RotOffset), Vector(RecoilParam.Max.RotOffset))); + newRecoil.RotParams = RecoilParam.Min.RotParams; + newRecoil.RotSinOffset = VRandRange(RecoilParam.Min.RotSinOffset, RecoilParam.Max.RotSinOffset); + newRecoil.TimeDuration = RandRange(RecoilParam.Min.TimeDuration, RecoilParam.Max.TimeDuration); + newRecoil.TimeToGo = Recoil.TimeToGo; + return newRecoil; + //return ReturnValue; +} + +defaultproperties +{ + m_RecoilFromFront=(Min=(TimeToGo=0.0000000,TimeDuration=0.3300000,RotAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),RotOffset=(Pitch=0,Yaw=0,Roll=0),LocAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),LocOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000)),Max=(TimeToGo=0.0000000,TimeDuration=0.3300000,RotAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),RotOffset=(Pitch=0,Yaw=0,Roll=0),LocAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),LocOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000))) + m_RecoilFromBack=(Min=(TimeToGo=0.0000000,TimeDuration=0.3300000,RotAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),RotOffset=(Pitch=0,Yaw=0,Roll=0),LocAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),LocOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000)),Max=(TimeToGo=0.0000000,TimeDuration=0.3300000,RotAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),RotOffset=(Pitch=0,Yaw=0,Roll=0),LocAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),LocOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000))) + m_RecoilFromLeft=(Min=(TimeToGo=0.0000000,TimeDuration=0.3300000,RotAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),RotOffset=(Pitch=0,Yaw=0,Roll=0),LocAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),LocOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000)),Max=(TimeToGo=0.0000000,TimeDuration=0.3300000,RotAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),RotOffset=(Pitch=0,Yaw=0,Roll=0),LocAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),LocOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000))) + m_RecoilFromRight=(Min=(TimeToGo=0.0000000,TimeDuration=0.3300000,RotAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),RotOffset=(Pitch=0,Yaw=0,Roll=0),LocAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),LocOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000)),Max=(TimeToGo=0.0000000,TimeDuration=0.3300000,RotAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),RotParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),RotOffset=(Pitch=0,Yaw=0,Roll=0),LocAmplitude=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocFrequency=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocSinOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000),LocParams=(X=ERecoilStart.ERS_Zero,Y=ERecoilStart.ERS_Zero,Z=ERecoilStart.ERS_Zero,Padding=0),LocOffset=(X=0.0000000,Y=0.0000000,Z=0.0000000))) + bIgnoreWhenNotRendered=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkelCon_HookChain.uc b/exported/TgGame/Classes/TgSkelCon_HookChain.uc new file mode 100755 index 00000000..d9e0a359 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelCon_HookChain.uc @@ -0,0 +1,28 @@ +class TgSkelCon_HookChain extends SkelControlSingleBone + native(Anim) + hidecategories(Object,Object); + +const TGSKELCON_HOOKCHAIN_TOTALSEGMENTS = 72; +const TGSKELCON_HOOKCHAIN_STARTOFFSET = 4; + +var float m_fBoneScales[72]; +var TgDeviceForm_Drag m_DragDeviceForm; +var export editinline TgSkeletalMeshComponent m_ChainComponent; + +simulated event float GetAngleToBone(int BoneIndex) +{ + local Vector toBone, toRootBone, BoneLocation, rootBoneLocation, SocketLocation; + + // End:0x13B + if((m_ChainComponent != none) && m_DragDeviceForm != none) + { + SocketLocation = m_DragDeviceForm.GetChainSocketLocation(); + BoneLocation = m_ChainComponent.GetBoneLocation(m_ChainComponent.GetBoneName(BoneIndex), 0); + rootBoneLocation = m_ChainComponent.GetBoneLocation(m_ChainComponent.GetBoneName(4), 0); + toBone = Normal(BoneLocation - SocketLocation); + toRootBone = Normal(rootBoneLocation - SocketLocation); + return toBone Dot toRootBone; + } + return -1.0000000; + //return ReturnValue; +} diff --git a/exported/TgGame/Classes/TgSkelCon_LookAt.uc b/exported/TgGame/Classes/TgSkelCon_LookAt.uc new file mode 100755 index 00000000..f53fab15 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelCon_LookAt.uc @@ -0,0 +1,8 @@ +class TgSkelCon_LookAt extends SkelControlLookAt + native(Anim) + hidecategories(Object,Object); + +var TgPawn m_Owner; +var(AI) bool m_bAimAtEnemyTarget; +var(LookAt) bool m_AlwaysInterpolateTarget; +var bool m_bHadTargetLastTick; diff --git a/exported/TgGame/Classes/TgSkelCon_OscillateBoneScale.uc b/exported/TgGame/Classes/TgSkelCon_OscillateBoneScale.uc new file mode 100755 index 00000000..f8f72fc8 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelCon_OscillateBoneScale.uc @@ -0,0 +1,15 @@ +class TgSkelCon_OscillateBoneScale extends SkelControlSingleBone + native(Anim) + hidecategories(Object,Object); + +var() float OscillationAmplitude; +var() float OscillationFrequency; +var() float OscillationBaseScale; +var transient float Theta; + +defaultproperties +{ + OscillationAmplitude=0.5000000 + OscillationFrequency=1.0000000 + OscillationBaseScale=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkelCon_OscillateRotation.uc b/exported/TgGame/Classes/TgSkelCon_OscillateRotation.uc new file mode 100755 index 00000000..b246925c --- /dev/null +++ b/exported/TgGame/Classes/TgSkelCon_OscillateRotation.uc @@ -0,0 +1,17 @@ +class TgSkelCon_OscillateRotation extends SkelControlSingleBone + native(Anim) + hidecategories(Object,Object); + +var() float OscillationAmplitude; +var() float OscillationFrequency; +var() Vector OscillationAxis; +var() SkelControlBase.EBoneControlSpace OscillationAxisSpace; +var() name OscillationAxisSpaceBoneName; +var transient float Theta; + +defaultproperties +{ + OscillationAmplitude=1.0000000 + OscillationFrequency=1.0000000 + OscillationAxis=(X=0.0000000,Y=0.0000000,Z=1.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkelCon_OscillateTranslation.uc b/exported/TgGame/Classes/TgSkelCon_OscillateTranslation.uc new file mode 100755 index 00000000..ab947049 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelCon_OscillateTranslation.uc @@ -0,0 +1,17 @@ +class TgSkelCon_OscillateTranslation extends SkelControlSingleBone + native(Anim) + hidecategories(Object,Object); + +var() float OscillationAmplitude; +var() float OscillationFrequency; +var() Vector OscillationAxis; +var() SkelControlBase.EBoneControlSpace OscillationAxisSpace; +var() name OscillationAxisSpaceBoneName; +var transient float Theta; + +defaultproperties +{ + OscillationAmplitude=1.0000000 + OscillationFrequency=1.0000000 + OscillationAxis=(X=0.0000000,Y=0.0000000,Z=1.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkelCon_RuckusSpinner.uc b/exported/TgGame/Classes/TgSkelCon_RuckusSpinner.uc new file mode 100755 index 00000000..b9b552b9 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelCon_RuckusSpinner.uc @@ -0,0 +1,3 @@ +class TgSkelCon_RuckusSpinner extends TgSkelCon_Spinner + native(Anim) + hidecategories(Object,Object,Adjustments,Translation); diff --git a/exported/TgGame/Classes/TgSkelCon_SkinGate.uc b/exported/TgGame/Classes/TgSkelCon_SkinGate.uc new file mode 100755 index 00000000..031319d1 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelCon_SkinGate.uc @@ -0,0 +1,27 @@ +class TgSkelCon_SkinGate extends SkelControlBase + native(Anim) + hidecategories(Object,Object); + +struct native SkelControlSkinGateChild +{ + var SkelControlBase SkelControl; + var() int nSkinId; + var() int nSkinLevel; + var editconst transient float DrawY; + + structdefaultproperties + { + SkelControl=none + nSkinId=0 + nSkinLevel=0 + DrawY=0.0000000 + } +}; + +var SkelControlSkinGateChild DefaultChild; +var(Gate) array ChildControls; + +defaultproperties +{ + ControlStrength=0.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkelCon_Spinner.uc b/exported/TgGame/Classes/TgSkelCon_Spinner.uc new file mode 100755 index 00000000..8d464fc3 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelCon_Spinner.uc @@ -0,0 +1,34 @@ +class TgSkelCon_Spinner extends SkelControlSingleBone + native(Anim) + hidecategories(Object,Object,Adjustments,Translation); + +var(Spin) float m_fDegreesPerSecond; +var(Spin) Vector m_vAxis; +var(Spin) editoronly transient bool m_PreviewStartStop; +var bool m_bIsSpinning; +var bool m_bSpinningUp; +var bool m_bSpinningDown; +var bool m_bSpinDownToZero; +var(TargetRotation) bool m_bRotateToTargetRotation; +var(Spin) float m_fSpinUpTime; +var(Spin) float m_fSpinDownTime; +var float m_fCurrentDegreesPerSecond; +var(TargetRotation) Rotator m_TargetRotation; +var(TargetRotation) float m_TimeToInterpToTargetRotation; +var transient int m_nRotationSpeedState; +var(Spin) array m_fRotationSpeedStateMultipliers; + +// Export UTgSkelCon_Spinner::execSpin(FFrame&, void* const) +native function Spin(bool bEnabled); + +// Export UTgSkelCon_Spinner::execSpinToTargetRotation(FFrame&, void* const) +native function SpinToTargetRotation(Rotator TargetRotation, optional float Time, optional bool bReset); + +defaultproperties +{ + m_fDegreesPerSecond=180.0000000 + m_bSpinDownToZero=true + bApplyRotation=true + bAddRotation=true + BoneRotationSpace=EBoneControlSpace.BCS_ActorSpace +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkelCon_Spring.uc b/exported/TgGame/Classes/TgSkelCon_Spring.uc new file mode 100755 index 00000000..053b3c2b --- /dev/null +++ b/exported/TgGame/Classes/TgSkelCon_Spring.uc @@ -0,0 +1,9 @@ +class TgSkelCon_Spring extends SkelControlLookAt + native(Anim) + hidecategories(Object,Object); + +var Vector m_vWorldSpaceGoal; +var(LookAt) Vector m_vInitialWorldSpaceGoalOffset; +var Vector m_vVelocity; +var(Spring) float m_fSpringStiffness; +var(Spring) float m_fSpringDamping; diff --git a/exported/TgGame/Classes/TgSkelControlSingleBone.uc b/exported/TgGame/Classes/TgSkelControlSingleBone.uc new file mode 100755 index 00000000..f6e4de9e --- /dev/null +++ b/exported/TgGame/Classes/TgSkelControlSingleBone.uc @@ -0,0 +1,12 @@ +class TgSkelControlSingleBone extends SkelControlSingleBone + native(Anim) + hidecategories(Object,Object); + +var(Controller) bool SnapStrengthFromAnimNodes; +var(Widescreen) transient bool m_bIsWidescreen; +var(Controller) float SnapStrengthThreshold; +var(Controller) array StrengthEmoteList; +var transient array CachedEmoteSequences; +var(Widescreen) Vector m_WidescreenBoneTranslationOffset; +var(Widescreen) Rotator m_WidescreenBoneRotationOffset; +var(Widescreen) float m_WidescreenBoneScaleOffset; diff --git a/exported/TgGame/Classes/TgSkelControlSingleBone_Ammo.uc b/exported/TgGame/Classes/TgSkelControlSingleBone_Ammo.uc new file mode 100755 index 00000000..1e70ee22 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelControlSingleBone_Ammo.uc @@ -0,0 +1,20 @@ +class TgSkelControlSingleBone_Ammo extends TgSkelControlSingleBone + native(Anim) + hidecategories(Object,Object); + +var TgPawn m_PawnOwner; +var() bool m_bInvertStrengthFromAmmo; +var() float m_fFlatInterpolationRateDecrease; +var() float m_fInterpolationRateDecrease; +var() float m_fFlatInterpolationRateIncrease; +var() float m_fInterpolationRateIncrease; +var() int m_nMaxAmmoFallback; + +defaultproperties +{ + m_fFlatInterpolationRateDecrease=1.0000000 + m_fInterpolationRateDecrease=1.0000000 + m_fFlatInterpolationRateIncrease=1.0000000 + m_fInterpolationRateIncrease=1.0000000 + m_nMaxAmmoFallback=10 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkelControlSingleBone_Ammo_Lex.uc b/exported/TgGame/Classes/TgSkelControlSingleBone_Ammo_Lex.uc new file mode 100755 index 00000000..81a445ab --- /dev/null +++ b/exported/TgGame/Classes/TgSkelControlSingleBone_Ammo_Lex.uc @@ -0,0 +1,18 @@ +class TgSkelControlSingleBone_Ammo_Lex extends TgSkelControlSingleBone + native(AnimNodesLex) + hidecategories(Object,Object); + +var TgPawn_Lex m_Lex; +var() bool m_bLeftGun; +var() float m_fFlatInterpolationRateDecrease; +var() float m_fInterpolationRateDecrease; +var() float m_fFlatInterpolationRateIncrease; +var() float m_fInterpolationRateIncrease; + +defaultproperties +{ + m_fFlatInterpolationRateDecrease=1.0000000 + m_fInterpolationRateDecrease=1.0000000 + m_fFlatInterpolationRateIncrease=1.0000000 + m_fInterpolationRateIncrease=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkelControlSingleBone_DisplayGroup.uc b/exported/TgGame/Classes/TgSkelControlSingleBone_DisplayGroup.uc new file mode 100755 index 00000000..25c98a48 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelControlSingleBone_DisplayGroup.uc @@ -0,0 +1,32 @@ +class TgSkelControlSingleBone_DisplayGroup extends TgSkelControlSingleBone + native(Anim) + hidecategories(Object,Object); + +enum DisplayGroupOnType +{ + DISPLAYGROUP_ON_INACTIVE, // 0 + DISPLAYGROUP_ON_ACTIVE, // 1 + DISPLAYGROUP_ON_STRENGTHABOVE, // 2 + DISPLAYGROUP_ON_STRENGTHBELOW, // 3 + DISPLAYGROUP_ON_MAX // 4 +}; + +struct native DisplayGroupInfo +{ + var() name DisplayGroupName; + var() TgSkelControlSingleBone_DisplayGroup.DisplayGroupOnType WhenDisplayGroupOn; + var() float Strength; + var transient bool bOn; + var() bool ForceOffIfMeshHidden; + + structdefaultproperties + { + DisplayGroupName="None" + WhenDisplayGroupOn=DisplayGroupOnType.DISPLAYGROUP_ON_INACTIVE + Strength=0.0000000 + bOn=false + ForceOffIfMeshHidden=true + } +}; + +var() export editinline array DisplayGroupInfos; diff --git a/exported/TgGame/Classes/TgSkelControlSingleBone_PistonBarrel.uc b/exported/TgGame/Classes/TgSkelControlSingleBone_PistonBarrel.uc new file mode 100755 index 00000000..a89018fb --- /dev/null +++ b/exported/TgGame/Classes/TgSkelControlSingleBone_PistonBarrel.uc @@ -0,0 +1,16 @@ +class TgSkelControlSingleBone_PistonBarrel extends TgSkelControlSingleBone + native(Anim) + hidecategories(Object,Object); + +var float m_nDepressDistance; +var float m_nReturnSpeed; + +// Export UTgSkelControlSingleBone_PistonBarrel::execDepress(FFrame&, void* const) +native function Depress(); + +defaultproperties +{ + m_nDepressDistance=15.0000000 + m_nReturnSpeed=100.0000000 + BoneTranslationSpace=EBoneControlSpace.BCS_BoneSpace +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkelControlSingleBone_Skinned.uc b/exported/TgGame/Classes/TgSkelControlSingleBone_Skinned.uc new file mode 100755 index 00000000..6ae94232 --- /dev/null +++ b/exported/TgGame/Classes/TgSkelControlSingleBone_Skinned.uc @@ -0,0 +1,25 @@ +class TgSkelControlSingleBone_Skinned extends TgSkelControlSingleBone + native(Anim) + hidecategories(Object,Object); + +struct native SkinStrengthOverride +{ + var() int nSkinId; + var() float fDesiredStrength; + + structdefaultproperties + { + nSkinId=0 + fDesiredStrength=0.0000000 + } +}; + +var() float DefaultStrength; +var() export editinline array SkinOverrides; +var bool bInitializedStrength; +var transient float fSkinStrength; + +defaultproperties +{ + DefaultStrength=1.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkeletalMeshActor.uc b/exported/TgGame/Classes/TgSkeletalMeshActor.uc new file mode 100755 index 00000000..f19b238e --- /dev/null +++ b/exported/TgGame/Classes/TgSkeletalMeshActor.uc @@ -0,0 +1,115 @@ +class TgSkeletalMeshActor extends SkeletalMeshActor + native(Pawns) + hidecategories(Navigation); + +var MeshAssets c_MeshAssets; +var() bool c_bLoadMeshAssetts; + +// Export UTgSkeletalMeshActor::execAttachToSocket(FFrame&, void* const) +native function bool AttachToSocket(Actor Attachment, name BoneName); + +// Export UTgSkeletalMeshActor::execCreateSkeletalMeshComponent(FFrame&, void* const) +native function TgSkeletalMeshComponent CreateSkeletalMeshComponent(int MeshAsmId, optional TgSkeletalMeshComponent DestComponent, optional bool bPartialFixup = false); + +// Export UTgSkeletalMeshActor::execCreateStaticMeshComponent(FFrame&, void* const) +native function TgStaticMeshComponent CreateStaticMeshComponent(int MeshAsmId, optional TgStaticMeshComponent DestComponent); + +// Export UTgSkeletalMeshActor::execCreateMeshComponent(FFrame&, void* const) +native function MeshComponent CreateMeshComponent(int MeshAsmId, optional MeshComponent DestComponent, optional bool bPartialFixup = false); + +// Export UTgSkeletalMeshActor::execLoadClientOnlyMeshAssets(FFrame&, void* const) +native function LoadClientOnlyMeshAssets(); + +function OnParentAnimComponent(TgSeqAct_ParentAnimComponent Action) +{ + local array objVars; + local int Idx; + local SkeletalMeshActor Attachment; + + Action.GetObjectVars(objVars, "Child"); + Idx = 0; + J0x3A: + + // End:0x15D [Loop If] + if(Idx < objVars.Length) + { + Attachment = SkeletalMeshActor(objVars[Idx]); + // End:0xD5 + if(Action.bDetach == true) + { + Attachment.SkeletalMeshComponent.SetParentAnimComponent(none); + } + else + { + Attachment.SkeletalMeshComponent.SetParentAnimComponent(SkeletalMeshComponent); + Attachment.SkeletalMeshComponent.SetShadowParent(SkeletalMeshComponent); + } + Idx++; + // [Loop Continue] + goto J0x3A; + } + //return; +} + +function DoKismetAttachment(Actor Attachment, SeqAct_AttachToActor Action) +{ + // End:0x92 + if((SkeletalMeshComponent != none) && Action.BoneName != 'None') + { + // End:0x8F + if(!AttachToSocket(Attachment, Action.BoneName)) + { + super.DoKismetAttachment(Attachment, Action); + } + } + else + { + super.DoKismetAttachment(Attachment, Action); + } + //return; +} + +defaultproperties +{ + c_bLoadMeshAssetts=true + // Reference: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'Engine.Default__SkeletalMeshActor.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActor.SkeletalMeshComponent0.AnimNodeSeq0' + // Archetype: AnimNodeSequence'Engine.Default__SkeletalMeshActor.AnimNodeSeq0' + begin object name="AnimNodeSeq0" + end object + Animations=AnimNodeSeq0 + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActor.MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__SkeletalMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'TgGame.Default__TgSkeletalMeshActor.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'Engine.Default__SkeletalMeshActor.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + CollisionComponent=SkeletalMeshComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkeletalMeshActorSpawnable.uc b/exported/TgGame/Classes/TgSkeletalMeshActorSpawnable.uc new file mode 100755 index 00000000..f446ea7e --- /dev/null +++ b/exported/TgGame/Classes/TgSkeletalMeshActorSpawnable.uc @@ -0,0 +1,48 @@ +class TgSkeletalMeshActorSpawnable extends TgSkeletalMeshActor + native(Pawns) + hidecategories(Navigation); + +defaultproperties +{ + // Reference: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActorSpawnable.SkeletalMeshComponent0.AnimNodeSeq0_6' + // Archetype: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActor.SkeletalMeshComponent0.AnimNodeSeq0' + begin object name="AnimNodeSeq0_6" + end object + Animations=AnimNodeSeq0_6 + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.MySilhouette' + // Archetype: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'TgGame.Default__TgSkeletalMeshActor.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + bNoDelete=false + CollisionComponent=SkeletalMeshComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkeletalMeshActor_DestructibleTowerChunk.uc b/exported/TgGame/Classes/TgSkeletalMeshActor_DestructibleTowerChunk.uc new file mode 100755 index 00000000..a945176b --- /dev/null +++ b/exported/TgGame/Classes/TgSkeletalMeshActor_DestructibleTowerChunk.uc @@ -0,0 +1,120 @@ +class TgSkeletalMeshActor_DestructibleTowerChunk extends TgSkeletalMeshActorSpawnable + hidecategories(Navigation); + +var export editinline TgSkeletalMeshComponent TgSkeletalMeshComp; + +simulated function PlayDestruction(int MeshId, TgPawn_Tower OwningTower) +{ + local AnimNodeSequence DestroyAnimNode; + + CreateSkeletalMeshComponent(MeshId, TgSkeletalMeshComp); + TgSkeletalMeshComp.SetLightEnvironment(OwningTower.Mesh.LightEnvironment); + TgSkeletalMeshComp.SetShadowParent(OwningTower.Mesh); + DestroyAnimNode = AnimNodeSequence(TgSkeletalMeshComp.FindAnimNode('DestroyAnimNode')); + // End:0x123 + if(DestroyAnimNode != none) + { + DestroyAnimNode.PlayAnim(false, 1.0000000, 0.0000000); + } + //return; +} + +event bool PlayParticleEffect(const AnimNotify_PlayParticleEffect AnimNotifyData) +{ + local Vector Loc; + local Rotator Rot; + local editinline ParticleSystemComponent PSC; + local bool bPlayNonExtreme; + + // End:0x2B + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + return true; + } + bPlayNonExtreme = (AnimNotifyData.bIsExtremeContent == true) && WorldInfo.GRI.ShouldShowGore() == false; + // End:0xDB + if((bShouldDoAnimNotifies == false) || bPlayNonExtreme && AnimNotifyData.PSNonExtremeContentTemplate == none) + { + return true; + } + // End:0x15A + if(AnimNotifyData.SocketName != 'None') + { + TgSkeletalMeshComp.GetSocketWorldLocationAndRotation(AnimNotifyData.SocketName, Loc, Rot); + } + else + { + // End:0x223 + if(AnimNotifyData.BoneName != 'None') + { + Loc = TgSkeletalMeshComp.GetBoneLocation(AnimNotifyData.BoneName); + Rot = QuatToRotator(TgSkeletalMeshComp.GetBoneQuaternion(AnimNotifyData.BoneName)); + } + else + { + Loc = Location; + Rot = rot(0, 0, 1); + } + } + PSC = WorldInfo.MyEmitterPool.SpawnEmitter(AnimNotifyData.PSTemplate, Loc, Rot); + // End:0x33B + if((PSC != none) && AnimNotifyData.BoneSocketModuleActorName != 'None') + { + PSC.SetActorParameter(AnimNotifyData.BoneSocketModuleActorName, self); + } + return true; + //return ReturnValue; +} + +defaultproperties +{ + // Reference: TgSkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_DestructibleTowerChunk.TgSkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'TgSkeletalMeshComponent0' + begin object name="TgSkeletalMeshComponent0" class=TgGame.TgSkeletalMeshComponent + ReplacementPrimitive=none + end object + TgSkeletalMeshComp=TgSkeletalMeshComponent0 + // Reference: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_DestructibleTowerChunk.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActor_DestructibleTowerChunk.SkeletalMeshComponent0.AnimNodeSeq0_9' + // Archetype: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActorSpawnable.SkeletalMeshComponent0.AnimNodeSeq0_6' + begin object name="AnimNodeSeq0_9" + end object + Animations=AnimNodeSeq0_9 + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_DestructibleTowerChunk.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_DestructibleTowerChunk.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActor_DestructibleTowerChunk.MySilhouette' + // Archetype: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_DestructibleTowerChunk.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'TgGame.Default__TgSkeletalMeshActor_DestructibleTowerChunk.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + Components[4]=TgSkeletalMeshComponent0 + LifeSpan=5.0000000 + CollisionComponent=SkeletalMeshComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkeletalMeshActor_FlagStand.uc b/exported/TgGame/Classes/TgSkeletalMeshActor_FlagStand.uc new file mode 100755 index 00000000..02056b0e --- /dev/null +++ b/exported/TgGame/Classes/TgSkeletalMeshActor_FlagStand.uc @@ -0,0 +1,111 @@ +class TgSkeletalMeshActor_FlagStand extends TgSkeletalMeshActor_Loader + native(Pawns) + hidecategories(Navigation,SkeletalMeshActor,TgSkeletalMeshActor) + autoexpandcategories(TgSkeletalMeshActor_Loader); + +var string m_FlagContentDataClassName; +var transient TgFlagContentData m_FlagContentData; +var() int m_nGameTaskForce; +var() int m_nTeamIndex; + +// Export UTgSkeletalMeshActor_FlagStand::execChangeTaskForceFlag(FFrame&, void* const) +native function ChangeTaskForceFlag(int nTaskForce, int nTeamIndex); + +simulated event PreBeginPlay() +{ + local Class FlagContentDataClass; + + super.PreBeginPlay(); + FlagContentDataClass = Class(DynamicLoadObject(m_FlagContentDataClassName, Class'Core.Class')); + // End:0x80 + if(FlagContentDataClass != none) + { + m_FlagContentData = new (self) FlagContentDataClass; + m_FlagContentData.Init(); + } + //return; +} + +simulated function PostBeginPlay() +{ + super(SkeletalMeshActor).PostBeginPlay(); + // End:0x6A + if(!WorldInfo.bIsMenuLevel) + { + // End:0x6A + if((m_nGameTaskForce > 0) && m_nTeamIndex >= 0) + { + ChangeTaskForceFlag(m_nGameTaskForce, m_nTeamIndex); + } + } + //return; +} + +defaultproperties +{ + m_FlagContentDataClassName="TgGameContent.TgFlagContentData_Content" + m_nGameTaskForce=-1 + m_nTeamIndex=-1 + // Reference: TgManifestGroup'TgGame.Default__TgSkeletalMeshActor_FlagStand.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgSkeletalMeshActor_Loader.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_FlagStand.AltLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AltLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Loader.AltLightEnvironment' + begin object name="AltLightEnvironment" + end object + m_AlternateLightEnvironmentTemplate=AltLightEnvironment + // Reference: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_FlagStand.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_Loader.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActor_FlagStand.SkeletalMeshComponent0.AnimNodeSeq0_2' + // Archetype: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActor_Loader.SkeletalMeshComponent0.AnimNodeSeq0_1' + begin object name="AnimNodeSeq0_2" + end object + Animations=AnimNodeSeq0_2 + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_FlagStand.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_FlagStand.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Loader.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActor_FlagStand.MySilhouette' + // Archetype: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActor_Loader.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_FlagStand.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'TgGame.Default__TgSkeletalMeshActor_FlagStand.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'TgGame.Default__TgSkeletalMeshActor_Loader.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=MySilhouette + Components[2]=FaceAudioComponent + Components[3]=AltLightEnvironment + Components[4]=none + Components[5]=none + // Reference: CylinderComponent'TgGame.Default__TgSkeletalMeshActor_FlagStand.Cylinder0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Cylinder0' + // Archetype: CylinderComponent'TgGame.Default__TgSkeletalMeshActor_Loader.Cylinder0' + begin object name="Cylinder0" + ReplacementPrimitive=none + end object + Components[6]=Cylinder0 + CollisionComponent=Cylinder0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkeletalMeshActor_Leash.uc b/exported/TgGame/Classes/TgSkeletalMeshActor_Leash.uc new file mode 100755 index 00000000..5cb72409 --- /dev/null +++ b/exported/TgGame/Classes/TgSkeletalMeshActor_Leash.uc @@ -0,0 +1,54 @@ +class TgSkeletalMeshActor_Leash extends TgSkeletalMeshActorSpawnable + native(Pawns) + hidecategories(Navigation); + +var export editinline SkeletalMeshComponent m_StartMesh; +var name m_StartBoneName; +var export editinline SkeletalMeshComponent m_EndMesh; +var name m_EndBoneName; +var SkelControlSingleBone m_StartControl; +var SkelControlSingleBone m_EndControl; + +defaultproperties +{ + // Reference: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_Leash.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActor_Leash.SkeletalMeshComponent0.AnimNodeSeq0_8' + // Archetype: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActorSpawnable.SkeletalMeshComponent0.AnimNodeSeq0_6' + begin object name="AnimNodeSeq0_8" + end object + Animations=AnimNodeSeq0_8 + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Leash.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Leash.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActor_Leash.MySilhouette' + // Archetype: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_Leash.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'TgGame.Default__TgSkeletalMeshActor_Leash.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'TgGame.Default__TgSkeletalMeshActorSpawnable.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + CollisionComponent=SkeletalMeshComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkeletalMeshActor_Loader.uc b/exported/TgGame/Classes/TgSkeletalMeshActor_Loader.uc new file mode 100755 index 00000000..5eef717d --- /dev/null +++ b/exported/TgGame/Classes/TgSkeletalMeshActor_Loader.uc @@ -0,0 +1,282 @@ +class TgSkeletalMeshActor_Loader extends TgSkeletalMeshActor + native(Pawns) + hidecategories(Navigation,SkeletalMeshActor,TgSkeletalMeshActor) + autoexpandcategories(TgSkeletalMeshActor_Loader) + implements(TgSkinnableInterface); + +enum LobbyAnimPose +{ + LAP_Match, // 0 + LAP_Victory, // 1 + LAP_Defeat, // 2 + LAP_InGame, // 3 + LAP_MAX // 4 +}; + +var private native const noexport Pointer VfTable_ITgSkinnableInterface; +var transient TgMenuMeshInfo m_PendingMeshInfo; +var transient TgMenuMeshInfo m_CurrentMeshInfo; +var export editinline TgManifestGroup c_AssetManifestGroup; +var native Pointer m_PendingBot; +var native Pointer m_PendingSkin; +var native Pointer m_PendingHead; +var native Pointer m_PendingDevice; +var native Pointer m_PendingDeviceSkin; +var transient TgSkeletalMeshActor_Loader.LobbyAnimPose m_PendingPose; +var transient TgSkeletalMeshActor_Loader.LobbyAnimPose m_CurrentPose; +var transient TgObject.EModelHighlightType m_HighlightType; +var native Pointer m_PendingMVPDevice; +var native Pointer m_CurrentBot; +var native Pointer m_CurrentSkin; +var native Pointer m_CurrentHead; +var native Pointer m_CurrentDevice; +var native Pointer m_CurrentDeviceSkin; +var native Pointer m_CurrentMVPDevice; +var transient bool m_bWaitingForTextures; +var transient bool m_bIsAsyncLoading; +var() bool m_bAllowOverlays; +var() bool m_bUsesPreviewMesh; +var(Lighting) bool m_bOverrideLightingChannels; +var int m_nAsyncLoadDelayTicksDefault; +var transient int m_nAsyncLoadDelayTicks; +var export editinline transient PointLightComponent m_PointLight; +var export editinline transient array m_ChildMeshes; +var export editinline transient array m_SkinMeshes; +var export editinline transient array m_HeadMeshes; +var export editinline transient array m_WeaponMeshes; +var export editinline transient LightEnvironmentComponent m_AlternateLightEnvironmentTemplate; +var export editinline transient array m_AlternateLightEnvironments; +var MaterialInterface m_OverlayMaterial; +var() export editinline TgCustomCharacterComponent m_CustomCharacterComponent; +var(Lighting) const LightingChannelContainer m_LightingChannels; +var transient array m_EmoteBlendNodes; +var transient array m_EmoteSequenceNodes; +var MaterialInstanceConstant NonHighlightMaterial; +var transient AnimSet m_EmoteAnimSet; +var transient AnimSet m_MVPAnimSet; +var transient float m_fMaterialAnimationValue; +var transient float m_fMaterialAnimationTarget; +var transient float m_fMaterialAnimationTimer; +//var delegate __OnMeshUpdated__Delegate; + +delegate OnMeshUpdated() +{ + //return; +} + +// Export UTgSkeletalMeshActor_Loader::execResetAnims(FFrame&, void* const) +native function ResetAnims(); + +// Export UTgSkeletalMeshActor_Loader::execAllManifestsLoaded(FFrame&, void* const) +native function AllManifestsLoaded(); + +// Export UTgSkeletalMeshActor_Loader::execSetActive(FFrame&, void* const) +native function SetActive(bool bActive); + +// Export UTgSkeletalMeshActor_Loader::execCleanupForAssetSwap(FFrame&, void* const) +native function CleanupForAssetSwap(optional bool bReset = true); + +// Export UTgSkeletalMeshActor_Loader::execForceRecalculateMaterial(FFrame&, void* const) +native function ForceRecalculateMaterial(); + +// Export UTgSkeletalMeshActor_Loader::execRecalculateMaterial(FFrame&, void* const) +native function RecalculateMaterial(bool bIsFriendlyWithLocalPawn, optional bool bForce); + +// Export UTgSkeletalMeshActor_Loader::execPlayLobbyAnim(FFrame&, void* const) +native function PlayLobbyAnim(TgObject.ELobbyAnimState NewAnimState); + +// Export UTgSkeletalMeshActor_Loader::execPlayEmote(FFrame&, void* const) +native function PlayEmote(int nDeviceId); + +// Export UTgSkeletalMeshActor_Loader::execStopEmote(FFrame&, void* const) +native function StopEmote(); + +// Export UTgSkeletalMeshActor_Loader::execPlayMVP(FFrame&, void* const) +native function PlayMVP(int nDeviceId, bool bInstant); + +// Export UTgSkeletalMeshActor_Loader::execStopMVP(FFrame&, void* const) +native function StopMVP(); + +// Export UTgSkeletalMeshActor_Loader::execCancelEmote(FFrame&, void* const) +native function CancelEmote(optional bool bVerifyNoRelevantEmotes, optional TgAnimNodeEmoteSequence Exclude); + +// Export UTgSkeletalMeshActor_Loader::execSetMaterialScalarParameterValue(FFrame&, void* const) +native function SetMaterialScalarParameterValue(name szParameterName, float fValue, optional bool bSkin = true, optional bool bHead = true, optional bool bWeapon = true); + +simulated function PlayEmoteTimer() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x74 [Loop If] + if(I < m_ChildMeshes.Length) + { + // End:0x66 + if(m_ChildMeshes[I] != none) + { + m_ChildMeshes[I].SetHidden(false); + } + I++; + // [Loop Continue] + goto J0x0B; + } + PlayLobbyAnim(2); + //return; +} + +simulated event PlayMVPTimer() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x74 [Loop If] + if(I < m_ChildMeshes.Length) + { + // End:0x66 + if(m_ChildMeshes[I] != none) + { + m_ChildMeshes[I].SetHidden(false); + } + I++; + // [Loop Continue] + goto J0x0B; + } + PlayLobbyAnim(3); + //return; +} + +simulated event PreBeginPlay() +{ + super(Actor).PreBeginPlay(); + c_AssetManifestGroup.__OnAllManifestsLoaded__Delegate = AllManifestsLoaded; + c_AssetManifestGroup.m_OwningObject = self; + //return; +} + +simulated event BeginTransition(optional bool bPlayFx = false) +{ + CleanupForAssetSwap(false); + SetHidden(true); + //return; +} + +simulated event EndTransition() +{ + SetHidden(false); + ResetAnims(); + //return; +} + +event PlayChildAnim(TgSkeletalMeshComponent notifySource, name AnimSeqName) +{ + local editinline TgSkeletalMeshComponent SkelComp; + local TgAnimNodeSlot Slot; + + // End:0x12D + foreach m_ChildMeshes(SkelComp) + { + // End:0x12C + if((SkelComp != notifySource) && SkelComp.Animations != none) + { + Slot = TgAnimNodeSlot(SkelComp.Animations.FindAnimNode('FullBody')); + // End:0x12C + if(Slot != none) + { + // End:0x108 + if(AnimSeqName != 'None') + { + Slot.PlayCustomAnim(AnimSeqName, 1.0000000, 0.0000000, 0.0000000, false, true); + } + else + { + Slot.StopCustomAnim(0.0000000); + } + } + } + } + //return; +} + +event bool PlayParticleEffect(const AnimNotify_PlayParticleEffect AnimNotifyData) +{ + return false; + //return ReturnValue; +} + +defaultproperties +{ + // Reference: TgManifestGroup'TgGame.Default__TgSkeletalMeshActor_Loader.TgManifestGroup0' + begin object name="TgManifestGroup0" class=TgGame.TgManifestGroup + end object + c_AssetManifestGroup=TgManifestGroup0 + m_bUsesPreviewMesh=true + m_nAsyncLoadDelayTicksDefault=2 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Loader.AltLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AltLightEnvironment' + begin object name="AltLightEnvironment" class=Engine.DynamicLightEnvironmentComponent + bSynthesizeSHLight=true + bIsCharacterLightEnvironment=true + end object + m_AlternateLightEnvironmentTemplate=AltLightEnvironment + m_OverlayMaterial=MaterialInstanceConstant'GOD_CommonAssets.RimLight.MIC_RimLight' + m_LightingChannels=(bInitialized=true,BSP=false,Static=false,Dynamic=true,CompositeDynamic=false,Skybox=false,Unnamed_1=false,Unnamed_2=false,Unnamed_3=false,Unnamed_4=false,Unnamed_5=false,Unnamed_6=false,Cinematic_1=false,Cinematic_2=false,Cinematic_3=false,Cinematic_4=false,Cinematic_5=false,Cinematic_6=false,Cinematic_7=false,Cinematic_8=false,Cinematic_9=false,Cinematic_10=false,Gameplay_1=false,Gameplay_2=false,Gameplay_3=false,Gameplay_4=false,Crowd=false) + NonHighlightMaterial=MaterialInstanceConstant'PC_Common.MIC_NonHighlighted' + c_bLoadMeshAssetts=false + // Reference: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_Loader.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActor_Loader.SkeletalMeshComponent0.AnimNodeSeq0_1' + // Archetype: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActor.SkeletalMeshComponent0.AnimNodeSeq0' + begin object name="AnimNodeSeq0_1" + end object + Animations=AnimNodeSeq0_1 + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Loader.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Loader.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + bSynthesizeSHLight=true + bIsCharacterLightEnvironment=true + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActor_Loader.MySilhouette' + // Archetype: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_Loader.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'TgGame.Default__TgSkeletalMeshActor_Loader.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'TgGame.Default__TgSkeletalMeshActor.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=MySilhouette + Components[2]=FaceAudioComponent + Components[3]=AltLightEnvironment + Components[4]=none + Components[5]=none + // Reference: CylinderComponent'TgGame.Default__TgSkeletalMeshActor_Loader.Cylinder0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Cylinder0' + begin object name="Cylinder0" class=Engine.CylinderComponent + ReplacementPrimitive=none + CollideActors=true + end object + Components[6]=Cylinder0 + CollisionComponent=Cylinder0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkeletalMeshActor_Lobby.uc b/exported/TgGame/Classes/TgSkeletalMeshActor_Lobby.uc new file mode 100755 index 00000000..97fc69fa --- /dev/null +++ b/exported/TgGame/Classes/TgSkeletalMeshActor_Lobby.uc @@ -0,0 +1,286 @@ +class TgSkeletalMeshActor_Lobby extends TgSkeletalMeshActor_LobbyBase + native(Pawns) + hidecategories(Navigation,SkeletalMeshActor,TgSkeletalMeshActor,SkeletalMeshActor,TgSkeletalMeshActor) + autoexpandcategories(TgSkeletalMeshActor_Loader,TgSkeletalMeshActor_Lobby); + +enum LobbyMeterBusIntent +{ + LMB_RUCKUSGEM, // 0 + LMB_MAX // 1 +}; + +struct native LobbySMAMeterBus +{ + var dword dwBusID; + var TgSkeletalMeshActor_Lobby.LobbyMeterBusIntent eIntent; + + structdefaultproperties + { + dwBusID=() + eIntent=LobbyMeterBusIntent.LMB_RUCKUSGEM + } +}; + +var float m_fSpawnOffsetYaw; +var float m_fMaxSpawnRotation; +var float m_fMinSpawnRotation; +var() bool m_bAdjustMeshToGround; +var() bool m_bCanBeRotated; +var(Posture) bool m_bEnablePostures; +var transient int m_CardMICBotIdPending; +var transient float m_CardMICTransitionDesiredAlpha; +var transient float m_CardMICTransitionAlpha; +var() TgSkeletalMeshActor_FlagStand m_FlagStandActor; +var() TgSkeletalMeshActor_Pedestal m_PedestalActor; +var() array m_CardMICs; +var array m_MeshReplacementMICs; +var array m_MeterBusses; +var(Posture) repnotify TgPawn.TG_POSTURE r_CurrentPosture; +var transient float m_fRotationAmount; +var transient float m_fDesiredRotationAmount; +var transient Rotator m_rOriginalRotation; +var transient float m_fSelectionGlowRemainingTime; +var float m_fSelectionGlowTotalTime; +var transient array m_PostureBlendNodes; + +// Export UTgSkeletalMeshActor_Lobby::execSetActive(FFrame&, void* const) +native function SetActive(bool bActive); + +// Export UTgSkeletalMeshActor_Lobby::execRotateModel(FFrame&, void* const) +native function RotateModel(float fValue, optional bool bSnap = false); + +// Export UTgSkeletalMeshActor_Lobby::execAdjustMeshToGround(FFrame&, void* const) +native function AdjustMeshToGround(); + +// Export UTgSkeletalMeshActor_Lobby::execAllManifestsLoaded(FFrame&, void* const) +native function AllManifestsLoaded(); + +// Export UTgSkeletalMeshActor_Lobby::execReplaceMaterialInstances(FFrame&, void* const) +native function ReplaceMaterialInstances(); + +// Export UTgSkeletalMeshActor_Lobby::execTeardownMeterBusses(FFrame&, void* const) +native function TeardownMeterBusses(); + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x2C + if(VarName == 'r_CurrentPosture') + { + SetActivePosture(r_CurrentPosture); + return; + } + super(SkeletalMeshActor).ReplicatedEvent(VarName); + //return; +} + +simulated event PreBeginPlay() +{ + super.PreBeginPlay(); + m_rOriginalRotation = Rotation; + //return; +} + +simulated event PostBeginPlay() +{ + local Class transitionClass; + + super.PostBeginPlay(); + // End:0xAC + if(!WorldInfo.IsPlayInEditor()) + { + SetActive(false); + transitionClass = none; + // End:0xAC + if((transitionClass != none) && !WorldInfo.IsPlayInEditor()) + { + m_TransitionActor = Spawn(transitionClass, self,, Location, Rotation,, true); + } + } + InitPostureNodes(); + SetActivePosture(r_CurrentPosture); + //return; +} + +simulated event EndTransition() +{ + // End:0x3B + if(m_bCanBeRotated) + { + m_fDesiredRotationAmount = 0.0000000; + m_fRotationAmount = m_fDesiredRotationAmount; + SetRotation(m_rOriginalRotation); + } + super.EndTransition(); + //return; +} + +simulated event Destroyed() +{ + // End:0x27 + if(m_TransitionActor != none) + { + m_TransitionActor.Destroy(); + } + TeardownMeterBusses(); + super.Destroyed(); + //return; +} + +function float GetSpawnRotation() +{ + local bool bReverse; + local float fValue, fAngle; + + fValue = FRand(); + // End:0x3B + if(fValue > 0.5000000) + { + bReverse = true; + fValue -= 0.5000000; + } + fAngle = m_fMinSpawnRotation + (m_fMaxSpawnRotation * fValue); + return ((bReverse) ? -fAngle : fAngle); + //return ReturnValue; +} + +event PostInitAnimTree(SkeletalMeshComponent SkelComp) +{ + super(Actor).PostInitAnimTree(SkelComp); + // End:0x34 + if(SkelComp == SkeletalMeshComponent) + { + InitPostureNodes(); + } + //return; +} + +simulated event InitPostureNodes() +{ + local array BlendByPostureNodes; + local AnimNode AnimNodeSearchIterator; + local int I; + + m_PostureBlendNodes.Length = 0; + // End:0x11E + if(m_ChildMeshes.Length > 0) + { + I = 0; + J0x27: + + // End:0x11E [Loop If] + if(I < m_ChildMeshes.Length) + { + // End:0x110 + if((m_ChildMeshes[I] != none) && m_ChildMeshes[I].Animations != none) + { + m_ChildMeshes[I].Animations.GetNodesByClassWrapper(BlendByPostureNodes, Class'TgGame.TgAnimBlendByPosture'); + // End:0x10F + foreach BlendByPostureNodes(AnimNodeSearchIterator) + { + m_PostureBlendNodes.AddItem(TgAnimBlendByPosture(AnimNodeSearchIterator)); + } + } + ++I; + // [Loop Continue] + goto J0x27; + } + } + SetActivePosture(r_CurrentPosture); + //return; +} + +simulated function SetActivePosture(TgPawn.TG_POSTURE Posture) +{ + local TgAnimBlendByPosture AnimNodeSearchIterator; + + r_CurrentPosture = Posture; + // End:0x53 + foreach m_PostureBlendNodes(AnimNodeSearchIterator) + { + AnimNodeSearchIterator.m_CurrentPosture = r_CurrentPosture; + } + //return; +} + +simulated event OnSetSkelPosture(TgSeqAct_SetSkelPosture Action) +{ + SetActivePosture(Action.m_Posture); + // End:0x5B + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + ForceNetRelevant(); + } + //return; +} + +defaultproperties +{ + m_fSpawnOffsetYaw=1000.0000000 + m_fMaxSpawnRotation=6000.0000000 + m_fMinSpawnRotation=2000.0000000 + m_CardMICBotIdPending=-1 + m_fSelectionGlowTotalTime=0.6000000 + m_nCharacterMastery=-1 + // Reference: TgManifestGroup'TgGame.Default__TgSkeletalMeshActor_Lobby.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgSkeletalMeshActor_LobbyBase.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Lobby.AltLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AltLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_LobbyBase.AltLightEnvironment' + begin object name="AltLightEnvironment" + end object + m_AlternateLightEnvironmentTemplate=AltLightEnvironment + // Reference: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_Lobby.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_LobbyBase.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActor_Lobby.SkeletalMeshComponent0.AnimNodeSeq0_4' + // Archetype: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActor_LobbyBase.SkeletalMeshComponent0.AnimNodeSeq0_3' + begin object name="AnimNodeSeq0_4" + end object + Animations=AnimNodeSeq0_4 + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Lobby.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Lobby.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_LobbyBase.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActor_Lobby.MySilhouette' + // Archetype: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActor_LobbyBase.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_Lobby.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'TgGame.Default__TgSkeletalMeshActor_Lobby.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'TgGame.Default__TgSkeletalMeshActor_LobbyBase.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=MySilhouette + Components[2]=FaceAudioComponent + Components[3]=AltLightEnvironment + Components[4]=none + Components[5]=none + // Reference: CylinderComponent'TgGame.Default__TgSkeletalMeshActor_Lobby.Cylinder0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Cylinder0' + // Archetype: CylinderComponent'TgGame.Default__TgSkeletalMeshActor_LobbyBase.Cylinder0' + begin object name="Cylinder0" + ReplacementPrimitive=none + end object + Components[6]=Cylinder0 + CollisionComponent=Cylinder0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkeletalMeshActor_LobbyBase.uc b/exported/TgGame/Classes/TgSkeletalMeshActor_LobbyBase.uc new file mode 100755 index 00000000..89e10046 --- /dev/null +++ b/exported/TgGame/Classes/TgSkeletalMeshActor_LobbyBase.uc @@ -0,0 +1,149 @@ +class TgSkeletalMeshActor_LobbyBase extends TgSkeletalMeshActor_Loader + abstract + native(Pawns) + hidecategories(Navigation,SkeletalMeshActor,TgSkeletalMeshActor) + autoexpandcategories(TgSkeletalMeshActor_Loader); + +var transient bool m_bPlayTransitionOutro; +var string m_TransitionActorClassName; +var transient int m_nCharacterMastery; +var transient TgMenuTransitionActor m_TransitionActor; + +simulated event PreBeginPlay() +{ + super.PreBeginPlay(); + c_AssetManifestGroup.__OnAllManifestsLoaded__Delegate = AllManifestsLoaded; + c_AssetManifestGroup.m_OwningObject = self; + //return; +} + +simulated event PostBeginPlay() +{ + local Class transitionClass; + + super(SkeletalMeshActor).PostBeginPlay(); + // End:0xD1 + if(!WorldInfo.IsPlayInEditor()) + { + SetActive(false); + transitionClass = Class(DynamicLoadObject(m_TransitionActorClassName, Class'Core.Class')); + // End:0xD1 + if((transitionClass != none) && !WorldInfo.IsPlayInEditor()) + { + m_TransitionActor = Spawn(transitionClass, self,, Location, Rotation,, true); + } + } + //return; +} + +simulated event BeginTransition(optional bool bPlayFx = false) +{ + // End:0x5F + if(bPlayFx) + { + // End:0x5F + if(m_TransitionActor != none) + { + m_TransitionActor.PlayIntro(); + m_TransitionActor.PlayLoop(); + } + } + m_bPlayTransitionOutro = bPlayFx; + super.BeginTransition(bPlayFx); + //return; +} + +simulated event EndTransition() +{ + // End:0x5A + if(m_TransitionActor != none) + { + m_TransitionActor.StopLoop(); + // End:0x5A + if(m_bPlayTransitionOutro) + { + m_TransitionActor.PlayOutro(); + } + } + m_bPlayTransitionOutro = false; + super.EndTransition(); + //return; +} + +simulated event Destroyed() +{ + // End:0x27 + if(m_TransitionActor != none) + { + m_TransitionActor.Destroy(); + } + super(SkeletalMeshActor).Destroyed(); + //return; +} + +defaultproperties +{ + m_TransitionActorClassName="TgGameContent.TgMenuTransitionActor_Content" + // Reference: TgManifestGroup'TgGame.Default__TgSkeletalMeshActor_LobbyBase.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgSkeletalMeshActor_Loader.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_LobbyBase.AltLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AltLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Loader.AltLightEnvironment' + begin object name="AltLightEnvironment" + end object + m_AlternateLightEnvironmentTemplate=AltLightEnvironment + // Reference: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_LobbyBase.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_Loader.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActor_LobbyBase.SkeletalMeshComponent0.AnimNodeSeq0_3' + // Archetype: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActor_Loader.SkeletalMeshComponent0.AnimNodeSeq0_1' + begin object name="AnimNodeSeq0_3" + end object + Animations=AnimNodeSeq0_3 + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_LobbyBase.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_LobbyBase.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Loader.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActor_LobbyBase.MySilhouette' + // Archetype: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActor_Loader.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_LobbyBase.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'TgGame.Default__TgSkeletalMeshActor_LobbyBase.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'TgGame.Default__TgSkeletalMeshActor_Loader.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=MySilhouette + Components[2]=FaceAudioComponent + Components[3]=AltLightEnvironment + Components[4]=none + Components[5]=none + // Reference: CylinderComponent'TgGame.Default__TgSkeletalMeshActor_LobbyBase.Cylinder0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Cylinder0' + // Archetype: CylinderComponent'TgGame.Default__TgSkeletalMeshActor_Loader.Cylinder0' + begin object name="Cylinder0" + ReplacementPrimitive=none + end object + Components[6]=Cylinder0 + CollisionComponent=Cylinder0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkeletalMeshActor_Pedestal.uc b/exported/TgGame/Classes/TgSkeletalMeshActor_Pedestal.uc new file mode 100755 index 00000000..50a0eca6 --- /dev/null +++ b/exported/TgGame/Classes/TgSkeletalMeshActor_Pedestal.uc @@ -0,0 +1,93 @@ +class TgSkeletalMeshActor_Pedestal extends TgSkeletalMeshActor_Lobby + native(Pawns) + hidecategories(Navigation,SkeletalMeshActor,TgSkeletalMeshActor,SkeletalMeshActor,TgSkeletalMeshActor) + autoexpandcategories(TgSkeletalMeshActor_Loader,TgSkeletalMeshActor_Lobby); + +var native transient Pointer m_DefaultBot; +var(Pedestal) array m_DefaultPedestalActors; +var transient bool m_bUsingDefaultPedestal; +var() TgObject.EPedestalType m_PedestalType; + +// Export UTgSkeletalMeshActor_Pedestal::execSwitchToDefaultPedestal(FFrame&, void* const) +native function SwitchToDefaultPedestal(optional TgSkeletalMeshActor_Loader.LobbyAnimPose animPose = 0); + +simulated event EndTransition() +{ + local Actor PedestalActor; + + // End:0x43 + foreach m_DefaultPedestalActors(PedestalActor) + { + PedestalActor.SetHidden(!m_bUsingDefaultPedestal); + } + super.EndTransition(); + //return; +} + +defaultproperties +{ + m_bUsingDefaultPedestal=true + m_TransitionActorClassName="TgGameContent.TgMenuTransitionActor_Pedestal" + // Reference: TgManifestGroup'TgGame.Default__TgSkeletalMeshActor_Pedestal.TgManifestGroup0' + // Archetype: TgManifestGroup'TgGame.Default__TgSkeletalMeshActor_Lobby.TgManifestGroup0' + begin object name="TgManifestGroup0" + end object + c_AssetManifestGroup=TgManifestGroup0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Pedestal.AltLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AltLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Lobby.AltLightEnvironment' + begin object name="AltLightEnvironment" + end object + m_AlternateLightEnvironmentTemplate=AltLightEnvironment + // Reference: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_Pedestal.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_Lobby.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + // Reference: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActor_Pedestal.SkeletalMeshComponent0.AnimNodeSeq0_5' + // Archetype: AnimNodeSequence'TgGame.Default__TgSkeletalMeshActor_Lobby.SkeletalMeshComponent0.AnimNodeSeq0_4' + begin object name="AnimNodeSeq0_5" + end object + Animations=AnimNodeSeq0_5 + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Pedestal.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Pedestal.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Lobby.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActor_Pedestal.MySilhouette' + // Archetype: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActor_Lobby.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_Pedestal.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'TgGame.Default__TgSkeletalMeshActor_Pedestal.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'TgGame.Default__TgSkeletalMeshActor_Lobby.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=MySilhouette + Components[2]=FaceAudioComponent + Components[3]=AltLightEnvironment + Components[4]=none + Components[5]=none + // Reference: CylinderComponent'TgGame.Default__TgSkeletalMeshActor_Pedestal.Cylinder0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Cylinder0' + // Archetype: CylinderComponent'TgGame.Default__TgSkeletalMeshActor_Lobby.Cylinder0' + begin object name="Cylinder0" + ReplacementPrimitive=none + end object + Components[6]=Cylinder0 + CollisionComponent=Cylinder0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkeletalMeshActor_Posture.uc b/exported/TgGame/Classes/TgSkeletalMeshActor_Posture.uc new file mode 100755 index 00000000..680e3192 --- /dev/null +++ b/exported/TgGame/Classes/TgSkeletalMeshActor_Posture.uc @@ -0,0 +1,127 @@ +class TgSkeletalMeshActor_Posture extends SkeletalMeshActor + hidecategories(Navigation); + +var(Posture) repnotify TgPawn.TG_POSTURE r_CurrentPosture; +var transient array m_PostureBlendNodes; + +replication +{ + // Pos:0x000 + if(int(Role) == int(ROLE_Authority)) + r_CurrentPosture; +} + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + InitPostureNodes(); + SetActivePosture(r_CurrentPosture); + //return; +} + +simulated event ReplicatedEvent(name VarName) +{ + // End:0x2C + if(VarName == 'r_CurrentPosture') + { + SetActivePosture(r_CurrentPosture); + return; + } + super.ReplicatedEvent(VarName); + //return; +} + +simulated function SetActivePosture(TgPawn.TG_POSTURE Posture) +{ + local TgAnimBlendByPosture AnimNodeSearchIterator; + + r_CurrentPosture = Posture; + // End:0x53 + foreach m_PostureBlendNodes(AnimNodeSearchIterator) + { + AnimNodeSearchIterator.m_CurrentPosture = r_CurrentPosture; + } + //return; +} + +event PostInitAnimTree(SkeletalMeshComponent SkelComp) +{ + super(Actor).PostInitAnimTree(SkelComp); + // End:0x34 + if(SkelComp == SkeletalMeshComponent) + { + InitPostureNodes(); + } + //return; +} + +simulated function InitPostureNodes() +{ + local array BlendByPostureNodes; + local AnimNode AnimNodeSearchIterator; + + m_PostureBlendNodes.Length = 0; + // End:0xBF + if((SkeletalMeshComponent != none) && SkeletalMeshComponent.Animations != none) + { + SkeletalMeshComponent.Animations.GetNodesByClassWrapper(BlendByPostureNodes, Class'TgGame.TgAnimBlendByPosture'); + // End:0xBE + foreach BlendByPostureNodes(AnimNodeSearchIterator) + { + m_PostureBlendNodes.AddItem(TgAnimBlendByPosture(AnimNodeSearchIterator)); + } + } + SetActivePosture(r_CurrentPosture); + //return; +} + +simulated event OnSetSkelPosture(TgSeqAct_SetSkelPosture Action) +{ + SetActivePosture(Action.m_Posture); + // End:0x5B + if(int(WorldInfo.NetMode) != int(NM_Client)) + { + ForceNetRelevant(); + } + //return; +} + +defaultproperties +{ + // Reference: SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_Posture.SkeletalMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'SkeletalMeshComponent0' + // Archetype: SkeletalMeshComponent'Engine.Default__SkeletalMeshActor.SkeletalMeshComponent0' + begin object name="SkeletalMeshComponent0" + Animations=none + ReplacementPrimitive=none + LightEnvironment=DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Posture.MyLightEnvironment' + end object + SkeletalMeshComponent=SkeletalMeshComponent0 + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSkeletalMeshActor_Posture.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__SkeletalMeshActor.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + LightEnvironment=MyLightEnvironment + // Reference: TgSilhouetteComponent'TgGame.Default__TgSkeletalMeshActor_Posture.MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__SkeletalMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=SkeletalMeshComponent'TgGame.Default__TgSkeletalMeshActor_Posture.SkeletalMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + // Reference: AudioComponent'TgGame.Default__TgSkeletalMeshActor_Posture.FaceAudioComponent' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FaceAudioComponent' + // Archetype: AudioComponent'Engine.Default__SkeletalMeshActor.FaceAudioComponent' + begin object name="FaceAudioComponent" + end object + FacialAudioComp=FaceAudioComponent + Components[0]=MyLightEnvironment + Components[1]=SkeletalMeshComponent0 + Components[2]=MySilhouette + Components[3]=FaceAudioComponent + CollisionComponent=SkeletalMeshComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkeletalMeshComponent.uc b/exported/TgGame/Classes/TgSkeletalMeshComponent.uc new file mode 100755 index 00000000..135c9f53 --- /dev/null +++ b/exported/TgGame/Classes/TgSkeletalMeshComponent.uc @@ -0,0 +1,172 @@ +class TgSkeletalMeshComponent extends SkeletalMeshComponent + native(Pawns) + editinlinenew + hidecategories(Object); + +struct native AnimNotifyParticleCacheEntry +{ + var bool bCached; + var AnimNotify_PlayParticleEffect Notify; + var export editinline ParticleSystemComponent PSC; + + structdefaultproperties + { + bCached=false + Notify=none + PSC=none + } +}; + +var bool c_bFxApplied; +var bool c_bIsFemale; +var array c_FxList; +var array c_DatabaseFxList; +var int m_nAssemblyId; +var Vector FPCTranslation; +var Rotator FPCRotation; +var Vector FPCScale; +var int c_AudioGroupId; +var int c_nForceUpdateAttachmentsInTick; +var export editinline array c_HeadShotComponents; +var init transient array AnimNotifyPlayParticleEffectEntries; + +// Export UTgSkeletalMeshComponent::execInitRagdoll(FFrame&, void* const) +native final function InitRagdoll(); + +// Export UTgSkeletalMeshComponent::execEndRagdoll(FFrame&, void* const) +native final function EndRagdoll(); + +// Export UTgSkeletalMeshComponent::execFxAdd(FFrame&, void* const) +native function FxAdd(Object Fx); + +// Export UTgSkeletalMeshComponent::execFxRemove(FFrame&, void* const) +native function FxRemove(Object Fx); + +// Export UTgSkeletalMeshComponent::execFxGet(FFrame&, void* const) +native function Object FxGet(name nmGroup, int nMode, optional int nIndex, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgSkeletalMeshComponent::execFxGetAll(FFrame&, void* const) +native function array FxGetAll(name nmGroup, int nMode, optional int nIndex, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgSkeletalMeshComponent::execFxActivateGroup(FFrame&, void* const) +native function Object FxActivateGroup(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm); + +// Export UTgSkeletalMeshComponent::execFxDeactivateGroup(FFrame&, void* const) +native function FxDeactivateGroup(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgSkeletalMeshComponent::execFxDeactivateAll(FFrame&, void* const) +native function FxDeactivateAll(optional int nEquipSlot); + +// Export UTgSkeletalMeshComponent::execFxSpawnTracer(FFrame&, void* const) +native function FxSpawnTracer(name nmGroup, int nMode, Vector HitLocation, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgSkeletalMeshComponent::execFxSpawnEmitter(FFrame&, void* const) +native function FxSpawnEmitter(name nmGroup, int nMode, Vector HitLocation, Vector HitNormal, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgSkeletalMeshComponent::execFxSpawnSound(FFrame&, void* const) +native function FxSpawnSound(name nmGroup, int nMode, Vector SoundLocation, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgSkeletalMeshComponent::execFxActivateIndependant(FFrame&, void* const) +native function Object FxActivateIndependant(name nmGroup, int nMode, Vector HitLocation, Vector HitNormal, optional int nSocketIndex, optional int nEquipSlot, optional bool bUseSocketOverride = true, optional array Params); + +// Export UTgSkeletalMeshComponent::execSetDefaultSkin(FFrame&, void* const) +native function SetDefaultSkin(int nIndex); + +// Export UTgSkeletalMeshComponent::execGetDefaultMaterial(FFrame&, void* const) +native function MaterialInterface GetDefaultMaterial(int nIndex); + +// Export UTgSkeletalMeshComponent::execSwapMaterial(FFrame&, void* const) +native function SwapMaterial(MaterialInterface MI, optional bool bNoParamReaping); + +// Export UTgSkeletalMeshComponent::execGetCurrentDeployPercentage(FFrame&, void* const) +native function float GetCurrentDeployPercentage(); + +// Export UTgSkeletalMeshComponent::execActivateOnWhenDeployedFx(FFrame&, void* const) +native function ActivateOnWhenDeployedFx(bool bOn); + +// Export UTgSkeletalMeshComponent::execActivateWhileAliveFx(FFrame&, void* const) +native function ActivateWhileAliveFx(bool bOn, optional name nmDisplayGroup); + +// Export UTgSkeletalMeshComponent::execRecalculateFx(FFrame&, void* const) +native function RecalculateFx(); + +// Export UTgSkeletalMeshComponent::execOnMeshSetHidden(FFrame&, void* const) +native function OnMeshSetHidden(bool bHidden); + +// Export UTgSkeletalMeshComponent::execGetAnimTree(FFrame&, void* const) +native function AnimTree GetAnimTree(); + +// Export UTgSkeletalMeshComponent::execSetForceUpdateAttachmentsInTick(FFrame&, void* const) +native function SetForceUpdateAttachmentsInTick(bool bSet); + +function bool GetAnimNotifyParticleCacheEntryFor(const AnimNotify_PlayParticleEffect AnimNotifyData, out AnimNotifyParticleCacheEntry CacheEntry) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x84 [Loop If] + if(I < AnimNotifyPlayParticleEffectEntries.Length) + { + // End:0x76 + if(AnimNotifyPlayParticleEffectEntries[I].Notify == AnimNotifyData) + { + CacheEntry = AnimNotifyPlayParticleEffectEntries[I]; + return true; + } + I++; + // [Loop Continue] + goto J0x0B; + } + return false; + //return ReturnValue; +} + +function ParticleSystemComponent GetPSCForPlayParticleEffect(const AnimNotify_PlayParticleEffect AnimNotifyData) +{ + local editinline ParticleSystemComponent PSC; + local AnimNotifyParticleCacheEntry CacheEntry; + + // End:0x78 + if((AnimNotifyData != none) && AnimNotifyData.m_bReuse) + { + // End:0x78 + if(GetAnimNotifyParticleCacheEntryFor(AnimNotifyData, CacheEntry)) + { + PSC = CacheEntry.PSC; + } + } + // End:0xE6 + if(PSC == none) + { + PSC = new (self) Class'Engine.ParticleSystemComponent'; + // End:0xE6 + if(AnimNotifyData.m_bReuse) + { + CachePSC(PSC, CacheEntry, AnimNotifyData); + } + } + return PSC; + //return ReturnValue; +} + +function CachePSC(ParticleSystemComponent PSC, AnimNotifyParticleCacheEntry CacheEntry, const AnimNotify_PlayParticleEffect AnimNotifyData) +{ + CacheEntry.PSC = PSC; + // End:0xA3 + if(!CacheEntry.bCached) + { + CacheEntry.Notify = AnimNotifyData; + CacheEntry.bCached = true; + AnimNotifyPlayParticleEffectEntries.AddItem(CacheEntry); + } + //return; +} + +defaultproperties +{ + c_nOverrideSkinId=-1 + c_nOverrideSkinLevel=-1 + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkeletalMeshComponent_Weapon.uc b/exported/TgGame/Classes/TgSkeletalMeshComponent_Weapon.uc new file mode 100755 index 00000000..39b32bbf --- /dev/null +++ b/exported/TgGame/Classes/TgSkeletalMeshComponent_Weapon.uc @@ -0,0 +1,65 @@ +class TgSkeletalMeshComponent_Weapon extends TgSkeletalMeshComponent + native(Pawns) + editinlinenew + hidecategories(Object); + +var const name m_nmFire; +var const name m_nmFireLoop; +var const name m_nmFireLoopTailSound; +var bool m_bDoNotPlayFireParticlesIfHidden; +var const bool m_bKillFiringLoopParticlesOnHidden; +var const bool m_bCanPlayFireParticles; +var const bool m_bCanPlayFireLoopParticles; +var const bool m_bCanPlayFireSounds; +var const bool m_bCanPlayFireLoopSounds; +var const int m_nFireLoopActiveBitMask; + +// Export UTgSkeletalMeshComponent_Weapon::execCompleteInitialization(FFrame&, void* const) +native function CompleteInitialization(); + +// Export UTgSkeletalMeshComponent_Weapon::execSetFireDisplayGroup(FFrame&, void* const) +native final function SetFireDisplayGroup(name nmFire); + +// Export UTgSkeletalMeshComponent_Weapon::execSetFireLoopDisplayGroup(FFrame&, void* const) +native final function SetFireLoopDisplayGroup(name nmFire, name nmFireLoopTail); + +// Export UTgSkeletalMeshComponent_Weapon::execSetCanPlayParticleFlags(FFrame&, void* const) +native final function SetCanPlayParticleFlags(bool bFire, bool bFireLoop, bool bDoNotPlayIfHidden); + +// Export UTgSkeletalMeshComponent_Weapon::execSetCanPlaySoundFlags(FFrame&, void* const) +native final function SetCanPlaySoundFlags(bool bFire, bool bFireLoop); + +// Export UTgSkeletalMeshComponent_Weapon::execPlayFire(FFrame&, void* const) +native function PlayFire(optional int nEquipSlot = 1, optional int nFireMode); + +// Export UTgSkeletalMeshComponent_Weapon::execStopFire(FFrame&, void* const) +native function StopFire(optional bool bForce, optional int nEquipSlot, optional int nFireMode); + +// Export UTgSkeletalMeshComponent_Weapon::execIsFireLoopActive(FFrame&, void* const) +native final function bool IsFireLoopActive(optional int nEquipSlot = 1, optional int nFireMode); + +// Export UTgSkeletalMeshComponent_Weapon::execIsFireLoopActivated(FFrame&, void* const) +native final function bool IsFireLoopActivated(optional int nEquipSlot = 1); + +// Export UTgSkeletalMeshComponent_Weapon::execGetAllFireLoopParticleSystemComponents(FFrame&, void* const) +native final function GetAllFireLoopParticleSystemComponents(out array FireLoopParticles, optional int nEquipSlot = 1, optional int nFireMode); + +// Export UTgSkeletalMeshComponent_Weapon::execPlayFireLoop(FFrame&, void* const) +native function PlayFireLoop(optional int nEquipSlot = 1, optional int nFireMode); + +// Export UTgSkeletalMeshComponent_Weapon::execStopFireLoop(FFrame&, void* const) +native function StopFireLoop(optional int nEquipSlot = 1, optional int nFireMode); + +defaultproperties +{ + m_nmFire="Fire" + m_nmFireLoop="FireLoop" + m_nmFireLoopTailSound="FireLoopTailSound" + m_bDoNotPlayFireParticlesIfHidden=true + m_bCanPlayFireParticles=true + m_bCanPlayFireLoopParticles=true + LowUpdateFrameRate=0 + AnimationLODFrameRate=0 + bUseTickOptimization=false + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkeletalMeshComponent_WeaponFirstPerson.uc b/exported/TgGame/Classes/TgSkeletalMeshComponent_WeaponFirstPerson.uc new file mode 100755 index 00000000..484f8c00 --- /dev/null +++ b/exported/TgGame/Classes/TgSkeletalMeshComponent_WeaponFirstPerson.uc @@ -0,0 +1,15 @@ +class TgSkeletalMeshComponent_WeaponFirstPerson extends TgSkeletalMeshComponent_Weapon + editinlinenew + hidecategories(Object); + +defaultproperties +{ + m_bCanPlayFireSounds=true + m_bCanPlayFireLoopSounds=true + bOverrideAttachmentOwnerVisibility=true + bOverrideAttachmentDepthPriorityGroup=true + ReplacementPrimitive=none + DepthPriorityGroup=ESceneDepthPriorityGroup.SDPG_Foreground + bOnlyOwnerSee=true + TickGroup=ETickingGroup.TG_DuringAsyncWork +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkeletalMeshComponent_WeaponFirstPersonLance.uc b/exported/TgGame/Classes/TgSkeletalMeshComponent_WeaponFirstPersonLance.uc new file mode 100755 index 00000000..1d3b7fc9 --- /dev/null +++ b/exported/TgGame/Classes/TgSkeletalMeshComponent_WeaponFirstPersonLance.uc @@ -0,0 +1,9 @@ +class TgSkeletalMeshComponent_WeaponFirstPersonLance extends TgSkeletalMeshComponent_WeaponFirstPerson + editinlinenew + hidecategories(Object); + +defaultproperties +{ + bOverrideAttachmentDepthPriorityGroup=false + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSkinnableInterface.uc b/exported/TgGame/Classes/TgSkinnableInterface.uc new file mode 100755 index 00000000..a0707bf0 --- /dev/null +++ b/exported/TgGame/Classes/TgSkinnableInterface.uc @@ -0,0 +1,3 @@ +interface TgSkinnableInterface extends Interface + abstract + native; diff --git a/exported/TgGame/Classes/TgSoundGroup.uc b/exported/TgGame/Classes/TgSoundGroup.uc new file mode 100755 index 00000000..1e86891b --- /dev/null +++ b/exported/TgGame/Classes/TgSoundGroup.uc @@ -0,0 +1,61 @@ +class TgSoundGroup extends Object + native(FX); + +enum eTG_SOUNDS +{ + TGS_FOOTSTEP, // 0 + TGS_DODGE, // 1 + TGS_JUMP, // 2 + TGS_LAND, // 3 + TGS_DOUBLEJUMP, // 4 + TGS_DOUBLELAND, // 5 + TGS_DYING, // 6 + TGS_HIT, // 7 + TGS_MAX // 8 +}; + +struct native FootstepSoundInfo +{ + var name MaterialType; + var SoundCue Sound; + + structdefaultproperties + { + MaterialType="None" + Sound=none + } +}; + +var const array c_SoundCues; +var const array c_FootstepSounds; + +function PlaySound(TgSoundGroup.eTG_SOUNDS eSound, Pawn P) +{ + // End:0x84 + if((int(eSound) >= int(0)) && int(eSound) < c_SoundCues.Length) + { + // End:0x84 + if(c_SoundCues[int(eSound)] != none) + { + P.super(TgSoundGroup).PlaySound(c_SoundCues[int(eSound)], false, true); + } + } + //return; +} + +function PlayFootStepSound(Pawn P, int FootDown, name MaterialType) +{ + local int I; + + I = c_FootstepSounds.Find('MaterialType', MaterialType); + // End:0x54 + if(I == -1) + { + PlaySound(0, P); + } + else + { + P.PlaySound(c_FootstepSounds[I].Sound, false, true); + } + //return; +} diff --git a/exported/TgGame/Classes/TgSoundInsulationVolume.uc b/exported/TgGame/Classes/TgSoundInsulationVolume.uc new file mode 100755 index 00000000..06c0f2f5 --- /dev/null +++ b/exported/TgGame/Classes/TgSoundInsulationVolume.uc @@ -0,0 +1,19 @@ +class TgSoundInsulationVolume extends ReverbVolume + dontsortcategories(ReverbVolume) + hidecategories(Navigation,Object,Movement,Display,Advanced,Attachment,Volume,Toggle); + +defaultproperties +{ + Settings=(bApplyReverb=false) + AmbientZoneSettings=(InsulationDistanceMin=480.0000000,InsulationDistanceMax=800.0000000) + // Reference: BrushComponent'TgGame.Default__TgSoundInsulationVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__ReverbVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSoundNodeAttenuation.uc b/exported/TgGame/Classes/TgSoundNodeAttenuation.uc new file mode 100755 index 00000000..16b15f09 --- /dev/null +++ b/exported/TgGame/Classes/TgSoundNodeAttenuation.uc @@ -0,0 +1,5 @@ +class TgSoundNodeAttenuation extends SoundNodeAttenuation + native + editinlinenew + dontsortcategories(Attenuation,LowPassFilter) + hidecategories(Object,Object); diff --git a/exported/TgGame/Classes/TgSpawnGate.uc b/exported/TgGame/Classes/TgSpawnGate.uc new file mode 100755 index 00000000..c0097f04 --- /dev/null +++ b/exported/TgGame/Classes/TgSpawnGate.uc @@ -0,0 +1,103 @@ +class TgSpawnGate extends DynamicBlockingVolume + native(Volumes) + hidecategories(Navigation,Object,Display); + +enum ESpawnGateType +{ + SPGT_Standard, // 0 + SPGT_Attackers, // 1 + SPGT_Defenders, // 2 + SPGT_MAX // 3 +}; + +var() TgSpawnGate.ESpawnGateType m_eSpawnGateType; +var() Emitter m_StandardEmitter; +var() TgEmitter_TeamColor m_TeamColoredEmitter; +var() bool m_bStartActive; +var bool m_bGateOpen; +var() int m_nCurrentTaskforce; + +// Export UTgSpawnGate::execGetCurrentTaskforce(FFrame&, void* const) +native function int GetCurrentTaskforce(); + +simulated function PostBeginPlay() +{ + super.PostBeginPlay(); + // End:0x24 + if(m_bStartActive) + { + Activate(); + } + else + { + Deactivate(); + } + //return; +} + +simulated function Activate() +{ + // End:0x2E + if(m_StandardEmitter != none) + { + m_StandardEmitter.Activate(); + } + // End:0x5C + if(m_TeamColoredEmitter != none) + { + m_TeamColoredEmitter.Deactivate(); + } + m_bGateOpen = false; + bEnabled = true; + SetCollision(true, true); + //return; +} + +simulated function Deactivate() +{ + // End:0x2E + if(m_StandardEmitter != none) + { + m_StandardEmitter.Deactivate(); + } + // End:0x5C + if(m_TeamColoredEmitter != none) + { + m_TeamColoredEmitter.Activate(); + } + m_bGateOpen = true; + // End:0x8A + if((GetCurrentTaskforce()) <= 0) + { + bEnabled = false; + SetCollision(false, false); + } + //return; +} + +simulated function ToggleTeamColors() +{ + // End:0x76 + if(m_TeamColoredEmitter != none) + { + m_TeamColoredEmitter.nTaskForce = ((m_TeamColoredEmitter.nTaskForce == 1) ? 2 : 1); + m_TeamColoredEmitter.SetPSCChannels(); + } + //return; +} + +defaultproperties +{ + m_bStartActive=true + bColored=true + // Reference: BrushComponent'TgGame.Default__TgSpawnGate.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__DynamicBlockingVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSpawnTeleporterEntrance.uc b/exported/TgGame/Classes/TgSpawnTeleporterEntrance.uc new file mode 100755 index 00000000..9c5a26b8 --- /dev/null +++ b/exported/TgGame/Classes/TgSpawnTeleporterEntrance.uc @@ -0,0 +1,283 @@ +class TgSpawnTeleporterEntrance extends Volume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +const ENEMY_DISTANCE_RADIUS = 800.0f; + +struct native ExitInfo +{ + var TgSpawnTeleporterExit Exit; + var float Rating; + var bool bEnemyHasLOS; + var bool bIsOpenSpot; + + structdefaultproperties + { + Exit=none + Rating=999999.0000000 + bEnemyHasLOS=false + bIsOpenSpot=false + } +}; + +var() bool bEnabled; + +static function int CompareExitInfo(ExitInfo EI1, ExitInfo EI2) +{ + // End:0x6B + if(EI1.bEnemyHasLOS != EI2.bEnemyHasLOS) + { + return ((EI1.bEnemyHasLOS) ? -1 : 1); + } + else + { + // End:0xD6 + if(EI1.bIsOpenSpot != EI2.bIsOpenSpot) + { + return ((EI1.bIsOpenSpot) ? 1 : -1); + } + else + { + // End:0x118 + if(EI1.Rating > EI2.Rating) + { + return 1; + } + else + { + // End:0x15E + if(EI1.Rating < EI2.Rating) + { + return -1; + } + else + { + // End:0x1A9 + if((EI2.Exit == none) || EI1.Exit == none) + { + return 0; + } + else + { + // End:0x215 + if(EI1.Exit.nPriority > EI2.Exit.nPriority) + { + return 1; + } + else + { + // End:0x282 + if(EI1.Exit.nPriority < EI2.Exit.nPriority) + { + return -1; + } + } + } + } + } + } + } + return 0; + //return ReturnValue; +} + +static function bool CanTeleport(Actor Other) +{ + return (Other != none) && TgPawn_Character(Other) != none; + //return ReturnValue; +} + +static function ExitInfo FindExit(TgPawn TgP, out array Exits) +{ + local array EnemyPRIs; + local array ExitData; + local TgRepInfo_Game GRI; + local TgRepInfo_TaskForce EnemyTF; + local TgRepInfo_Player EnemyPRI; + local ExitInfo CurrentExitData; + local TgSpawnTeleporterExit CurrentExit; + local int FriendlyTF; + local float fDistanceFromExit; + + // End:0x4C4 + if((TgP != none) && TgP.WorldInfo != none) + { + FriendlyTF = int(TgP.GetTaskForceNumber()); + GRI = TgRepInfo_Game(TgP.WorldInfo.GRI); + // End:0x4C4 + if(GRI != none) + { + EnemyTF = GRI.GetTaskForce(((FriendlyTF == 1) ? 2 : 1)); + // End:0x4C4 + if(EnemyTF != none) + { + EnemyTF.GetPlayers(EnemyPRIs); + // End:0x2CE + foreach Exits(CurrentExit) + { + // End:0x154 + if(CurrentExit == none) + { + continue; + } + else + { + CurrentExitData.Exit = CurrentExit; + CurrentExitData.Rating = 0.0000000; + CurrentExitData.bEnemyHasLOS = false; + // End:0x2B6 + foreach EnemyPRIs(EnemyPRI) + { + // End:0x21C + if(EnemyPRI.r_PawnOwner == none) + { + CurrentExitData.Rating += 800.0000000; + } + else + { + fDistanceFromExit = VSize2D(EnemyPRI.r_PawnOwner.Location - CurrentExit.Location); + CurrentExitData.Rating += float(Min(int(fDistanceFromExit), 800)); + } + } + ExitData.AddItem(CurrentExitData); + } + } + ExitData.Sort(CompareExitInfo); + // End:0x461 + foreach ExitData(CurrentExitData) + { + // End:0x3B7 + foreach EnemyPRIs(EnemyPRI) + { + // End:0x3B6 + if((EnemyPRI.r_PawnOwner != none) && EnemyPRI.r_PawnOwner.LineOfSightTo(CurrentExitData.Exit)) + { + CurrentExitData.bEnemyHasLOS = true; + } + else + { + } + } + // End:0x460 + if(!CurrentExitData.bEnemyHasLOS) + { + CurrentExitData.bIsOpenSpot = !CurrentExitData.Exit.HasRoomForPawn(TgP); + // End:0x460 + if(CurrentExitData.bIsOpenSpot) + { + return CurrentExitData; + } + } + } + // End:0x4A7 + foreach ExitData(CurrentExitData) + { + // End:0x4A6 + if(!CurrentExitData.bEnemyHasLOS) + { + return CurrentExitData; + } + } + // End:0x4C4 + if(ExitData.Length > 0) + { + return ExitData[0]; + } + } + } + } + CurrentExitData.Exit = none; + CurrentExitData.bEnemyHasLOS = true; + CurrentExitData.Rating = 999999.0000000; + return CurrentExitData; + //return ReturnValue; +} + +static function TeleportToExit(TgPawn TgP, TgSpawnTeleporterEntrance From, ExitInfo To) +{ + local Vector OriginalActorLocation; + local Rotator DesiredRotation, AppliedRotation; + + // End:0x279 + if((TgP != none) && To.Exit != none) + { + OriginalActorLocation = TgP.Location; + TgP.SetLocation(To.Exit.Location); + DesiredRotation = TgP.Rotation; + DesiredRotation.Yaw = To.Exit.Rotation.Yaw; + AppliedRotation = DesiredRotation - TgP.Rotation; + TgP.Velocity = QuatRotateVector(QuatFromRotator(AppliedRotation), TgP.Velocity); + TgP.SetRotation(DesiredRotation); + TgP.ClientSetRotation(DesiredRotation); + TgP.SetViewRotation(DesiredRotation); + TgP.PawnOnTeleported(From, To.Exit, OriginalActorLocation); + } + //return; +} + +simulated function Touch(Actor WantsTeleport, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local ExitInfo Exit; + local TgGame TgG; + local array ValidExits; + local TgPawn TgP; + + super(Actor).Touch(WantsTeleport, OtherComp, HitLocation, HitNormal); + // End:0x14F + if((bEnabled && int(Role) == int(ROLE_Authority)) && CanTeleport(WantsTeleport)) + { + TgP = TgPawn(WantsTeleport); + TgG = TgGame(WorldInfo.Game); + // End:0x14F + if(((TgG != none) && TgP != none) && TgG.FindValidSpawnPoints(TgP, ValidExits)) + { + Exit = FindExit(TgP, ValidExits); + TeleportToExit(TgP, self, Exit); + } + } + //return; +} + +simulated function OnToggle(SeqAct_Toggle Action) +{ + super.OnToggle(Action); + // End:0x59 + if(Action.InputLinks[0].bHasImpulse) + { + bEnabled = true; + } + else + { + // End:0x9F + if(Action.InputLinks[1].bHasImpulse) + { + bEnabled = false; + } + else + { + // End:0xEE + if(Action.InputLinks[2].bHasImpulse) + { + bEnabled = !bEnabled; + } + } + } + //return; +} + +defaultproperties +{ + bEnabled=true + // Reference: BrushComponent'TgGame.Default__TgSpawnTeleporterEntrance.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + Components[1]=none + bStatic=false + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSpawnTeleporterExit.uc b/exported/TgGame/Classes/TgSpawnTeleporterExit.uc new file mode 100755 index 00000000..70810ee2 --- /dev/null +++ b/exported/TgGame/Classes/TgSpawnTeleporterExit.uc @@ -0,0 +1,57 @@ +class TgSpawnTeleporterExit extends Actor + native(Navigation) + placeable + hidecategories(Navigation); + +const TGSPAWNTELEPORTEREXIT_TARGETHEIGHT = 128; + +var() int nTaskForce; +var() int nLane; +var() int nGamePhase; +var() int nPriority; +var() bool bEnabled; + +// Export UTgSpawnTeleporterExit::execHasRoomForPawn(FFrame&, void* const) +native function bool HasRoomForPawn(TgPawn TgP); + +// Export UTgSpawnTeleporterExit::execGetTargetLocation(FFrame&, void* const) +native simulated function Vector GetTargetLocation(optional Actor RequestedBy, optional bool bRequestAlternateLoc); + +simulated function OnToggle(SeqAct_Toggle Action) +{ + // End:0x46 + if(Action.InputLinks[0].bHasImpulse) + { + bEnabled = true; + } + else + { + // End:0x8C + if(Action.InputLinks[1].bHasImpulse) + { + bEnabled = false; + } + else + { + // End:0xDB + if(Action.InputLinks[2].bHasImpulse) + { + bEnabled = !bEnabled; + } + } + } + //return; +} + +function bool PawnCanUse(TgPawn TgP) +{ + return bEnabled && (nTaskForce <= 0) || nTaskForce == int(TgP.GetTaskForceNumber()); + //return ReturnValue; +} + +defaultproperties +{ + bEnabled=true + Components[0]=none + Components[1]=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSpecialFx.uc b/exported/TgGame/Classes/TgSpecialFx.uc new file mode 100755 index 00000000..23a239e2 --- /dev/null +++ b/exported/TgGame/Classes/TgSpecialFx.uc @@ -0,0 +1,645 @@ +class TgSpecialFx extends Object + native(FX); + +const TGFXP_SCALAR = 299; +const TGFXP_VECTOR = 300; +const TGFXP_COLOR = 301; +const TGFXP_TEXTURE = 307; +const TGFXT_NO_PRIORITY = 0; +const TGFXT_PRIORITY_SHIELD = 625; +const TGFXT_PRIORITY_STEALTH = 626; +const TGFXT_PRIORITY_STEALTH_DETECTION = 627; +const TGFXT_PRIORITY_FLAME = 838; +const TGFXT_PRIORITY_SPAWN_SORTORDER = 15; +const TGFXMAT_GENERIC = 615; +const TGFXMAT_HAIR = 616; +const TGFXMAT_HEAD = 617; +const TGFXMAT_BODY = 618; +const TGFXMAT_WEAPON = 16600; +const FX_SCALE_BY_DAMAGE = 745; +const FX_SCALE_BY_RADIUS = 746; +const FX_SCALE_ABSOLUTE = 10677; +const FX_SCALE_BY_RADIUS_SQUARED = 1023; + +enum ELightFxState +{ + LFX_UNMANAGED, // 0 + LFX_ACTIVE, // 1 + LFX_KILLEDBYMGR, // 2 + LFX_DYING, // 3 + LFX_INACTIVE, // 4 + LFX_MAX // 5 +}; + +enum EManagedDecalState +{ + DecalState_Inactive, // 0 + DecalState_Active, // 1 + DecalState_FadingOut, // 2 + DecalState_MAX // 3 +}; + +struct native Fx_Material +{ + var int nFxMatId; + var MaterialInstanceTimeVarying c_MITV; + var int nFxMatTypeCode; + var name nmMIC; + var bool bApplyIfSameTeam; + + structdefaultproperties + { + nFxMatId=0 + c_MITV=none + nFxMatTypeCode=0 + nmMIC="None" + bApplyIfSameTeam=false + } +}; + +struct native Fx_AssemblyData +{ + var name m_nmSocketName; + var name m_nmDisplayGroup; + var int m_nDisplayMode; + var int m_nSpecialFxId; + var int m_nIndex; + var int m_nEquipmentSlot; + var bool m_bAppliesToAllModes; + var bool m_bAttachToGround; + + structdefaultproperties + { + m_nmSocketName="None" + m_nmDisplayGroup="None" + m_nDisplayMode=0 + m_nSpecialFxId=0 + m_nIndex=0 + m_nEquipmentSlot=0 + m_bAppliesToAllModes=false + m_bAttachToGround=false + } +}; + +struct native Fx_PSC +{ + var int c_nId; + var export editinline ParticleSystemComponent c_PSC; + var const ParticleSystem c_PSCTemplate; + var float c_fScale; + var int c_nScaleType; + var bool c_bRunning; + var name c_nmSocketDisplayGrp; + var name c_nmSocket; + var TgEmitter_CameraEffect c_pCameraEffect; + + structdefaultproperties + { + c_nId=0 + c_PSC=none + c_PSCTemplate=none + c_fScale=0.0000000 + c_nScaleType=0 + c_bRunning=false + c_nmSocketDisplayGrp="None" + c_nmSocket="None" + c_pCameraEffect=none + } +}; + +struct native Fx_Sound +{ + var int c_nId; + var AkBaseSoundObject c_SoundObject; + var export editinline AudioComponent c_acSound; + var bool c_bAllowSoundToFinishFlag; + var bool c_bCanHearThroughStealth; + var bool c_bForceAudioComponent; + var AkEvent c_AkEvent; + + structdefaultproperties + { + c_nId=0 + c_SoundObject=none + c_acSound=none + c_bAllowSoundToFinishFlag=false + c_bCanHearThroughStealth=false + c_bForceAudioComponent=false + c_AkEvent=none + } +}; + +struct native Fx_Decal +{ + var int c_nId; + var MaterialInstanceTimeVarying c_MITV; + var float c_fWidth; + var float c_fHeight; + var float c_fThickness; + var bool c_bNoClip; + var bool c_bAttach; + var export editinline DecalComponent c_Decal; + var float c_fLifetime; + var float c_fFadeOutTime; + var TgSpecialFx.EManagedDecalState c_eState; + var float c_fHideAtTimeSeconds; + + structdefaultproperties + { + c_nId=0 + c_MITV=none + c_fWidth=0.0000000 + c_fHeight=0.0000000 + c_fThickness=0.0000000 + c_bNoClip=false + c_bAttach=false + c_Decal=none + c_fLifetime=0.0000000 + c_fFadeOutTime=0.0000000 + c_eState=EManagedDecalState.DecalState_Inactive + c_fHideAtTimeSeconds=0.0000000 + } +}; + +var int c_nFxId; +var export editinline MeshComponent c_OwnerMesh; +var Actor c_Owner; +var bool c_bAttached; +var bool c_bAppliesToAllModes; +var bool c_bSelfManage; +var bool c_bFromEffectForm; +var bool c_bVisualComplete; +var bool c_bAudioComplete; +var bool c_bMuteSound; +var bool c_bIsDebuff; +var bool c_bHasTeamMaterials; +var bool c_bActive; +var bool c_bIsSpawnFx; +var bool c_bUseBeam; +var bool c_bLifetimeManagedExternally; +var init bool c_bLocalPawnIsOwner; +var bool m_bMatLoaded; +var bool m_bMatLoadedFriendly; +var bool m_bMatLoadedLocal; +var bool m_bDecalMatLoaded; +var bool m_bDecalMatLoadedFriendly; +var bool m_bDecalMatLoadedLocal; +var int c_nPriorityType; +var int c_nPrioritySort; +var name c_nmSocket; +var name c_nmDisplayGroup; +var int c_nDisplayMode; +var int c_nIndex; +var int c_nEquipSlot; +var MaterialInstanceConstant c_MIC; +var float c_fTransition; +var int c_nHitEffectBase; +var float c_fMaxEffectDistance; +var ParticleChannelContainer c_ParticleChannelOverride; +var int c_nSortPriorityOverride; +var TgSpecialFx.ELightFxState c_LightComponentState; +var init export editinline LightComponent c_LightComponent; +var init Pointer c_ManagedLightEmitter; +var init array c_SoundList; +var init array c_PSCList; +var init array c_MaterialList; +var init array c_DecalList; +var TgCameraShake c_CameraShake; +var TgTimerManager c_ActiveTimer; + +// Export UTgSpecialFx::execAttachToOwner(FFrame&, void* const) +native function AttachToOwner(optional Actor pOwner); + +// Export UTgSpecialFx::execDetach(FFrame&, void* const) +native function Detach(); + +// Export UTgSpecialFx::execGetEffectLocation(FFrame&, void* const) +native function Vector GetEffectLocation(); + +// Export UTgSpecialFx::execGetOwnerMesh(FFrame&, void* const) +native static function MeshComponent GetOwnerMesh(Actor pOwner); + +// Export UTgSpecialFx::execActivateLocalPlayerFx(FFrame&, void* const) +native function ActivateLocalPlayerFx(ParticleSystemComponent ActivePSC); + +// Export UTgSpecialFx::execSetPSCChannels(FFrame&, void* const) +native function SetPSCChannels(ParticleSystemComponent PSC, optional bool bOnlyAllowNonZeroMask = false, optional ParticleSystem Template); + +// Export UTgSpecialFx::execSpawnActor(FFrame&, void* const) +native function Actor SpawnActor(Class InClass, Vector Location, Rotator Rotation); + +// Export UTgSpecialFx::execSetActiveTime(FFrame&, void* const) +native function SetActiveTime(float Duration, TgPawn Owner); + +// Export UTgSpecialFx::execOnActiveTimeExpired(FFrame&, void* const) +native function OnActiveTimeExpired(); + +// Export UTgSpecialFx::execAdjustHidden(FFrame&, void* const) +native function AdjustHidden(bool bHidden); + +// Export UTgSpecialFx::execSetHidden(FFrame&, void* const) +native function SetHidden(bool bNewHidden); + +// Export UTgSpecialFx::execShouldShowWhenStealthed(FFrame&, void* const) +native function bool ShouldShowWhenStealthed(); + +// Export UTgSpecialFx::execPlaySoundAt(FFrame&, void* const) +native function PlaySoundAt(Vector Location); + +// Export UTgSpecialFx::execResetParticles(FFrame&, void* const) +native function ResetParticles(optional bool bResetInstances = false); + +// Export UTgSpecialFx::execAreAnyPSCRunning(FFrame&, void* const) +native function bool AreAnyPSCRunning(); + +// Export UTgSpecialFx::execSetPSCRunning(FFrame&, void* const) +native function SetPSCRunning(ParticleSystemComponent pPSC, bool bOn); + +// Export UTgSpecialFx::execAreAnySoundsPlaying(FFrame&, void* const) +native function bool AreAnySoundsPlaying(); + +// Export UTgSpecialFx::execUpdateSoundPlaying(FFrame&, void* const) +native function UpdateSoundPlaying(AudioComponent pacSound); + +// Export UTgSpecialFx::execSpawnEmitter(FFrame&, void* const) +native function SpawnEmitter(Vector HitLocation, Vector HitNormal, optional float fScale, optional array Params); + +// Export UTgSpecialFx::execSpawnSound(FFrame&, void* const) +native function SpawnSound(Vector Location); + +// Export UTgSpecialFx::execSpawnDecalAt(FFrame&, void* const) +native function SpawnDecalAt(Vector HitLocation, Vector HitNormal, optional float DecalRotation = -1.0000000, optional float Scale = 1.0000000); + +// Export UTgSpecialFx::execPlayCameraShake(FFrame&, void* const) +native function PlayCameraShake(Vector Epicenter); + +// Export UTgSpecialFx::execSetHitEffectScaleBasedOnDamage(FFrame&, void* const) +native function SetHitEffectScaleBasedOnDamage(int nHealthChange); + +// Export UTgSpecialFx::execIsFxRelevant(FFrame&, void* const) +native function bool IsFxRelevant(Vector SpawnLocation); + +// Export UTgSpecialFx::execFindLocalPlayerController(FFrame&, void* const) +native function TgPlayerController FindLocalPlayerController(); + +// Export UTgSpecialFx::execFindLocalPlayerPawn(FFrame&, void* const) +native function TgPawn FindLocalPlayerPawn(); + +// Export UTgSpecialFx::execAdjustEffectRadius(FFrame&, void* const) +native function AdjustEffectRadius(int nPSCIndex, float fScale); + +// Export UTgSpecialFx::execAdjustFxScaleByRadius(FFrame&, void* const) +native function AdjustFxScaleByRadius(float fScale); + +// Export UTgSpecialFx::execAdjustEffectScale(FFrame&, void* const) +native function AdjustEffectScale(int nPSCIndex, optional float fScale); + +// Export UTgSpecialFx::execAdjustEffectFOV(FFrame&, void* const) +native function AdjustEffectFOV(float NewFOV); + +// Export UTgSpecialFx::execActivate(FFrame&, void* const) +native function float Activate(optional Vector HitLocation, optional bool bSkipRelevantChecking = false); + +// Export UTgSpecialFx::execDeactivate(FFrame&, void* const) +native function Deactivate(bool bForceDeactivate); + +// Export UTgSpecialFx::execOnParticleSystemFinished(FFrame&, void* const) +native function OnParticleSystemFinished(ParticleSystemComponent FinishedComponent); + +// Export UTgSpecialFx::execOnAudioFinishedFX(FFrame&, void* const) +native function OnAudioFinishedFX(AudioComponent FinishedComponent); + +// Export UTgSpecialFx::execCheckDeactivate(FFrame&, void* const) +native function CheckDeactivate(); + +// Export UTgSpecialFx::execPlaySound(FFrame&, void* const) +native function PlaySound(); + +// Export UTgSpecialFx::execStopSound(FFrame&, void* const) +native function StopSound(); + +// Export UTgSpecialFx::execActivateDecal(FFrame&, void* const) +native function ActivateDecal(out Fx_Decal Decal); + +// Export UTgSpecialFx::execDeactivateDecal(FFrame&, void* const) +native function DeactivateDecal(out Fx_Decal Decal); + +// Export UTgSpecialFx::execInitDecalFadeOut(FFrame&, void* const) +native function bool InitDecalFadeOut(out Fx_Decal Decal); + +// Export UTgSpecialFx::execUpdateHiddenDecals(FFrame&, void* const) +native function UpdateHiddenDecals(optional bool bClearAll = false); + +// Export UTgSpecialFx::execGetLocalPlayerPSCChannels(FFrame&, void* const) +native function ParticleChannelContainer GetLocalPlayerPSCChannels(ParticleSystemComponent ActivePSC, optional ParticleSystem Template); + +// Export UTgSpecialFx::execOverridePSCChannels(FFrame&, void* const) +native function OverridePSCChannels(ParticleChannelContainer PSysChannels); + +// Export UTgSpecialFx::execFindMeshWithSocket(FFrame&, void* const) +native static function SkeletalMeshComponent FindMeshWithSocket(name nmSocket, SkeletalMeshComponent first, Actor Second, out name BoneName, out Vector RelativeLocation, out Rotator RelativeRotation, out Vector RelativeScale); + +function bool HasSoundCue() +{ + return c_SoundList.Length > 0; + //return ReturnValue; +} + +function Actor GetHitActor(Vector EffectLocation, Vector HitLocation) +{ + local Vector out_HitLocation, out_HitNormal; + + // End:0x50 + if(c_Owner != none) + { + return c_Owner.Trace(out_HitLocation, out_HitNormal, HitLocation, EffectLocation, true); + } + return none; + //return ReturnValue; +} + +event SpawnTracer(Vector HitLocation, optional Vector HitOrigin = vect(0.0000000, 0.0000000, 0.0000000)) +{ + local Emitter E; + local Vector Dir, EffectLocation; + local Actor HitActor, OriginActor; + local int I, J; + local TgPawn OwnerPawn; + local ParticleChannelContainer newPSysChannels; + + // End:0x2B + if(!IsFxRelevant(HitLocation)) + { + return; + } + // End:0x5C + if(HitOrigin != vect(0.0000000, 0.0000000, 0.0000000)) + { + EffectLocation = HitOrigin; + } + else + { + EffectLocation = GetEffectLocation(); + } + Dir = HitLocation - EffectLocation; + HitActor = GetHitActor(HitLocation - (Normal(Dir) * float(10)), HitLocation + (Normal(Dir) * float(10))); + OriginActor = GetHitActor(EffectLocation + (Normal(Dir) * float(10)), EffectLocation - (Normal(Dir) * float(10))); + OwnerPawn = TgPawn(c_Owner); + // End:0x1A8 + if((OwnerPawn == none) && c_Owner.Instigator != none) + { + OwnerPawn = TgPawn(c_Owner.Instigator); + } + // End:0x50C + if(c_Owner != none) + { + I = 0; + J0x1C2: + + // End:0x50C [Loop If] + if(I < c_PSCList.Length) + { + newPSysChannels = ((c_ParticleChannelOverride.bInitialized) ? c_ParticleChannelOverride : GetLocalPlayerPSCChannels(c_PSCList[I].c_PSC)); + E = c_Owner.Spawn(Class'TgGame.TgEmitter',,, EffectLocation, Rotator(Dir)); + E.ParticleSystemComponent.m_ParticleChannels = newPSysChannels; + E.SetTemplate(c_PSCList[I].c_PSCTemplate, true); + // End:0x35E + if(HitOrigin != vect(0.0000000, 0.0000000, 0.0000000)) + { + // End:0x35B + if(OriginActor != none) + { + E.SetBase(OriginActor); + } + } + else + { + E.SetBase(OwnerPawn); + } + // End:0x4EA + if(E.ParticleSystemComponent != none) + { + E.ParticleSystemComponent.SetVectorParameter('beamEnd', HitLocation); + J = 0; + J0x3F7: + + // End:0x495 [Loop If] + if(J < c_PSCList[I].c_PSC.EmitterInstances.Length) + { + E.ParticleSystemComponent.SetBeamEndPoint(J, HitLocation); + J++; + // [Loop Continue] + goto J0x3F7; + } + // End:0x4EA + if(HitActor != none) + { + E.ParticleSystemComponent.SetActorParameter('BeamEndActor', HitActor); + } + } + AdjustEffectScale(I); + I++; + // [Loop Continue] + goto J0x1C2; + } + } + return; + //return; +} + +event DecalComponent SpawnDecal(WorldInfo WorldInfo, out Fx_Decal Decal, bool bUsePool, optional Vector SpawnLocation, optional Rotator SpawnRotation, optional float DecalRotation = -1.0000000, optional float Scale = 1.0000000) +{ + local editinline DecalComponent Comp; + local MaterialInstance MatInst; + + MatInst = new Class'Engine.MaterialInstanceTimeVarying'; + MatInst.SetParent(Decal.c_MITV); + // End:0xA1 + if(IsZero(SpawnLocation)) + { + SpawnLocation = GetEffectLocation(); + SpawnRotation = rot(-16384, 0, 0); + } + Comp = WorldInfo.MyDecalManager.SpawnDecal(bUsePool, MatInst, SpawnLocation, SpawnRotation, Decal.c_fWidth * Scale, Decal.c_fHeight * Scale, Decal.c_fThickness, Decal.c_bNoClip, DecalRotation,,,,,,, Decal.c_fLifetime); + return Comp; + //return ReturnValue; +} + +event UpdateBeamFx(Vector HitLocation, optional Vector HitOrigin = vect(0.0000000, 0.0000000, 0.0000000), optional Actor targetOverride) +{ + local Vector Dir, EffectLocation; + local Actor HitActor; + local int I, J; + + // End:0x2C + if(!IsFxRelevant(HitLocation)) + { + return; + } + // End:0x4F + if(!c_bActive) + { + Activate(HitLocation); + } + // End:0x80 + if(HitOrigin != vect(0.0000000, 0.0000000, 0.0000000)) + { + EffectLocation = HitOrigin; + } + else + { + EffectLocation = GetEffectLocation(); + } + Dir = HitLocation - EffectLocation; + // End:0x110 + if(targetOverride == none) + { + HitActor = GetHitActor(HitLocation - (Normal(Dir) * float(10)), HitLocation + (Normal(Dir) * float(10))); + } + else + { + HitActor = targetOverride; + } + // End:0x2BF + if(c_Owner != none) + { + I = 0; + J0x13D: + + // End:0x2BF [Loop If] + if(I < c_PSCList.Length) + { + c_PSCList[I].c_PSC.SetVectorParameter('beamEnd', HitLocation); + J = 0; + J0x1AE: + + // End:0x254 [Loop If] + if(J < c_PSCList[I].c_PSC.EmitterInstances.Length) + { + c_PSCList[I].c_PSC.SetBeamEndPoint(J, HitLocation); + J++; + // [Loop Continue] + goto J0x1AE; + } + // End:0x2B1 + if(HitActor != none) + { + c_PSCList[I].c_PSC.SetActorParameter('BeamEndActor', HitActor); + } + I++; + // [Loop Continue] + goto J0x13D; + } + } + return; + //return; +} + +function ListSounds() +{ + local int I; + + // End:0x70 + if(c_SoundList.Length > 0) + { + I = 0; + J0x1B: + + // End:0x6D [Loop If] + if(I < c_SoundList.Length) + { + // End:0x5F + if(c_SoundList[I].c_SoundObject != none) + { + } + I++; + // [Loop Continue] + goto J0x1B; + } + } + //return; +} + +function SetKillOnDeactivate() +{ + local int I, Idx; + + I = 0; + J0x0B: + + // End:0xDA [Loop If] + if(I < c_PSCList.Length) + { + Idx = 0; + J0x2E: + + // End:0xCC [Loop If] + if(Idx < c_PSCList[I].c_PSC.EmitterInstances.Length) + { + c_PSCList[I].c_PSC.SetKillOnDeactivate(Idx, true); + Idx++; + // [Loop Continue] + goto J0x2E; + } + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +event SetDepthPriorityGroup(Scene.ESceneDepthPriorityGroup NewDepthPriorityGroup) +{ + local int I; + + I = 0; + J0x0B: + + // End:0x76 [Loop If] + if(I < c_PSCList.Length) + { + c_PSCList[I].c_PSC.super(TgSpecialFx).SetDepthPriorityGroup(NewDepthPriorityGroup); + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +static function float CalculateOrientedDecalRotation(Vector HitLocation, Vector HitNormal, Vector DecalOrientationDirection) +{ + local float DecalRotation, HitNormalAngle; + local Vector DecalOrientationProjection, RotX, RotY, RotZ; + + HitNormalAngle = Acos(HitNormal Dot vect(0.0000000, 0.0000000, 1.0000000)); + // End:0x7D + if((HitNormalAngle > (3.1415930 / float(3))) && HitNormalAngle < ((float(2) * 3.1415930) / float(3))) + { + DecalOrientationDirection = vect(0.0000000, 0.0000000, 1.0000000); + } + DecalOrientationProjection = Normal(DecalOrientationDirection - (((DecalOrientationDirection Dot HitNormal) / VSizeSq(HitNormal)) * HitNormal)); + GetAxes(Rotator(-HitNormal), RotX, RotY, RotZ); + DecalRotation = (Acos(DecalOrientationProjection Dot RotZ) * float(180)) / 3.1415930; + // End:0x155 + if((RotY Dot DecalOrientationProjection) > float(0)) + { + DecalRotation = 360.0000000 - DecalRotation; + } + return DecalRotation; + //return ReturnValue; +} + +// Export UTgSpecialFx::execIsFriendly(FFrame&, void* const) +native function bool IsFriendly(); + +// Export UTgSpecialFx::execIsLocal(FFrame&, void* const) +native function bool IsLocal(); + +defaultproperties +{ + c_bVisualComplete=true + c_bAudioComplete=true + c_nHitEffectBase=20 + c_fMaxEffectDistance=10000.0000000 + c_ParticleChannelOverride=(bInitialized=false,Default=true,Friendly=false,Enemy=false,LocalOwner=false,Channel5=false,Channel6=false,Channel7=false,Channel8=false,VerticalTargeter=false,Filter2=false,NotLocalOwner=false,CustomFilter1=false,CustomFilter2=false,CustomFilter3=false,CustomFilter4=false,CustomFilter5=false,CustomFilter6=false,CustomFilter7=false) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSpecialFxLightManager.uc b/exported/TgGame/Classes/TgSpecialFxLightManager.uc new file mode 100755 index 00000000..6c86f84c --- /dev/null +++ b/exported/TgGame/Classes/TgSpecialFxLightManager.uc @@ -0,0 +1,66 @@ +class TgSpecialFxLightManager extends Object + native(FX) + config(Game); + +const INVALID_LIGHT_SCORE = 2; +const INVALID_LIGHTARRAY_INDEX = -1; +const TGFXLIGHT_MAX_SETTINGS_VALUE = 5; + +enum SpecialFxLightState +{ + FxLight_Normal, // 0 + FxLight_Dying, // 1 + FxLight_Kill, // 2 + FxLight_MAX // 3 +}; + +struct native TgFxLight +{ + var Pointer m_FxEmitter; + var TgSpecialFx m_OwnerSpecialFx; + var float m_Score; + + structdefaultproperties + { + m_FxEmitter=() + m_OwnerSpecialFx=none + m_Score=0.0000000 + } +}; + +var config bool c_FxLightsEnabled; +var config bool c_FxLightsUnconstrained; +var config int c_FxLightsMaxActive; +var config int c_FxLightsMaxDying; +var init array m_ActiveEmitters; +var init array m_DyingEmitters; +var TgPawn c_LocalPawn; + +// Export UTgSpecialFxLightManager::execInitializeFxLightManager(FFrame&, void* const) +native function InitializeFxLightManager(); + +// Export UTgSpecialFxLightManager::execAddLight(FFrame&, void* const) +native function AddLight(Pointer NewFxEmitter); + +// Export UTgSpecialFxLightManager::execSetLightState(FFrame&, void* const) +native function SetLightState(Pointer ExtantFxEmitter, TgSpecialFxLightManager.SpecialFxLightState NewFxLightState); + +// Export UTgSpecialFxLightManager::execLightKilledElsewhere(FFrame&, void* const) +native function LightKilledElsewhere(Pointer FxEmitterKilled); + +// Export UTgSpecialFxLightManager::execSetLevelInternal(FFrame&, void* const) +native function SetLevelInternal(int LightLevel); + +exec function UserSetLevel(int LightLevel) +{ + SetLevelInternal(LightLevel); + SaveConfig(); + //return; +} + +defaultproperties +{ + c_FxLightsEnabled=true + c_FxLightsMaxActive=1 + c_FxLightsMaxDying=1 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSpectatorCamera.uc b/exported/TgGame/Classes/TgSpectatorCamera.uc new file mode 100755 index 00000000..e35660ee --- /dev/null +++ b/exported/TgGame/Classes/TgSpectatorCamera.uc @@ -0,0 +1,44 @@ +class TgSpectatorCamera extends TgPlayerCamera + transient + native(View) + hidecategories(Navigation); + +var ViewTargetTransitionParams m_DefaultBlendParams; +var ViewTargetTransitionParams m_SnapBlendParams; +var CameraAnim m_CinematicAnim; +var transient CameraAnimInst m_AnimInstance; + +simulated function DoUpdateCamera(float DeltaTime) +{ + DeltaTime = WorldInfo.m_fRealDeltaSeconds; + super(Camera).DoUpdateCamera(DeltaTime); + //return; +} + +simulated function StartCinematicAnim() +{ + // End:0x3C + if(m_AnimInstance == none) + { + m_AnimInstance = PlayCameraAnim(m_CinematicAnim,,, 0.3000000, 0.3000000, true, false,, true); + } + //return; +} + +simulated function EndCinematicAnim() +{ + // End:0x2E + if(m_AnimInstance != none) + { + StopCameraAnim(m_AnimInstance, true); + m_AnimInstance = none; + } + //return; +} + +defaultproperties +{ + m_DefaultBlendParams=(BlendTime=0.3000000,BlendFunction=EViewTargetBlendFunction.VTBlend_Cubic,BlendExp=2.0000000,bLockOutgoing=true) + m_SnapBlendParams=(BlendTime=0.0001000,BlendFunction=EViewTargetBlendFunction.VTBlend_Cubic,BlendExp=2.0000000,bLockOutgoing=true) + DefaultCameraModuleClass=Class'TgGame.TgCameraModule_Spectator' +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSpectatorController.uc b/exported/TgGame/Classes/TgSpectatorController.uc new file mode 100755 index 00000000..befffa63 --- /dev/null +++ b/exported/TgGame/Classes/TgSpectatorController.uc @@ -0,0 +1,1308 @@ +class TgSpectatorController extends TgPlayerController + native(Pawns) + config(Game) + hidecategories(Navigation); + +const MAX_BROADCAST_CHANNELS = 4; + +enum SpectatorCameraMode +{ + SpecCam_None, // 0 + SpecCam_Fly, // 1 + SpecCam_FollowThirdPerson, // 2 + SpecCam_FollowFirstPerson, // 3 + SpecCam_FollowTopDown, // 4 + SpecCam_Camera, // 5 + SpecCam_Overview, // 6 + SpecCam_LockedView, // 7 + SpecCam_MAX // 8 +}; + +enum SpectatorCameraCycle +{ + SpecCycle_None, // 0 + SpecCycle_PlayerFriendly, // 1 + SpecCycle_PlayerEnemy, // 2 + SpecCycle_Player, // 3 + SpecCycle_TowerFriendly, // 4 + SpecCycle_TowerEnemy, // 5 + SpecCycle_Tower, // 6 + SpecCycle_Cinematic, // 7 + SpecCycle_Action, // 8 + SpecCycle_MAX // 9 +}; + +enum SpecFlightMode +{ + SFM_Normal, // 0 + SFM_Heli, // 1 + SFM_HeliNoVert, // 2 + SFM_MAX // 3 +}; + +enum ESpectatorMode +{ + SPECMODE_Manual, // 0 + SPECMODE_Director, // 1 + SPECMODE_Assisted, // 2 + SPECMODE_Broadcast1, // 3 + SPECMODE_Broadcast2, // 4 + SPECMODE_Broadcast3, // 5 + SPECMODE_Broadcast4, // 6 + SPECMODE_MAX // 7 +}; + +enum EZoomState +{ + ZOOM_None, // 0 + ZOOM_In, // 1 + ZOOM_Out, // 2 + ZOOM_MAX // 3 +}; + +struct native SpectatorBookmark +{ + var transient Actor ViewTarget; + var TgSpectatorController.SpectatorCameraMode ViewMode; + var TPOV POV; + + structdefaultproperties + { + ViewTarget=none + ViewMode=SpectatorCameraMode.SpecCam_None + POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000)) + } +}; + +struct native BroadcastChannel +{ + var TgSpectatorController.ESpectatorMode Channel; + var int PlayerID; + + structdefaultproperties + { + Channel=ESpectatorMode.SPECMODE_Manual + PlayerID=0 + } +}; + +var transient TgSpectatorController.SpectatorCameraMode m_CameraMode; +var transient TgSpectatorController.SpectatorCameraCycle m_CurrentCycle; +var transient TgSpectatorController.SpectatorCameraCycle m_PendingCycle; +var transient TgSpectatorController.SpecFlightMode m_eHelicopterFlight; +var transient TgSpectatorController.ESpectatorMode m_CurrentSpectatorMode; +var transient TgSpectatorController.EZoomState m_CurrentZoomState; +var transient TgSpectatorTempCam m_BookmarkCamera; +var transient SpectatorBookmark m_Bookmarks[10]; +var float m_fDefaultTweenTime; +var transient bool m_bOutlineCharacters; +var transient bool m_bIsMapSquashed; +var(Performance) config bool m_bIgnoreCullDistanceVolumes; +var() float m_fNameplateFadeMinDist; +var() float m_fNameplateFadeMaxDist; +var() float m_fNameplateFadeMaxAmount; +var() float m_fNameplateScaleMinDist; +var() float m_fNameplateScaleMaxDist; +var() float m_fNameplateScaleMaxAmount; +var() float m_fInterpolateCameraDistance; +var BroadcastChannel m_BroadcastChannels[4]; +var config Vector c_vMouseClickDeprojectionExtent; +var() config float m_fOverviewCenterpointOffset; +var() config float m_fMouseCursorVisibleTime; +var transient float m_fRemainingCursorVisibleTime; + +// Export UTgSpectatorController::execGetHudClass(FFrame&, void* const) +native function Class GetHudClass(Class pNewHudType); + +// Export UTgSpectatorController::execSetNetTarget(FFrame&, void* const) +native function SetNetTarget(QWord qwId, int nTaskForce); + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + Class'TgGame.TgSeqEvent_SpectatorReady'.static.TriggerGlobal(self); + //return; +} + +simulated function ForwardToSpectatingMatch() +{ + // End:0x20 + if(!IsInState('SpectatingMatch')) + { + GotoState('SpectatingMatch'); + } + // End:0x53 + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + ClientForwardToSpectatingMatch(); + } + //return; +} + +reliable client simulated function ClientForwardToSpectatingMatch() +{ + ForwardToSpectatingMatch(); + //return; +} + +exec function SwitchCamera(string sCamera) +{ + //return; +} + +function SpectatorSetViewTarget(Actor VT, optional ViewTargetTransitionParams TransitionParams) +{ + local QWord qwId; + local TgPawn TgP; + + TgP = TgPawn(GetViewTarget()); + // End:0x4E + if(TgP != none) + { + TgP.m_bUseSmoothNetReceiveRotation = false; + } + SetViewTarget(VT, TransitionParams); + ServerSetViewTarget(VT); + TgP = TgPawn(GetViewTarget()); + // End:0x19F + if(TgP != none) + { + TgP.UpdateSpectatorStatUI(); + TgP.m_bUseSmoothNetReceiveRotation = true; + SetTimer(2.0000000, true, 'UpdateViewTargetUI'); + SetNetTarget(TgP.PlayerReplicationInfo.UniqueId.Uid, int(TgP.GetTaskForceNumber())); + // End:0x19C + if(TgP.IsGod()) + { + SetSpectatorCameraMode(3); + } + } + else + { + ClearTimer('UpdateViewTargetUI'); + SetNetTarget(qwId, 0); + } + //return; +} + +function UpdateViewTargetUI() +{ + local TgPawn TgP; + + TgP = TgPawn(GetViewTarget()); + // End:0x4B + if(TgP != none) + { + TgP.UpdateSpectatorStatUI(); + } + //return; +} + +function bool ShouldFlyFromInput() +{ + // End:0x39 + if(PlayerCamera.PendingViewTarget.Target != none) + { + return false; + } + // End:0x4F + if(int(m_CurrentSpectatorMode) != int(0)) + { + return false; + } + // End:0x65 + if(int(m_CameraMode) == int(7)) + { + return false; + } + // End:0xC5 + if(int(m_CameraMode) == int(4)) + { + return (PlayerInput.aStrafe != float(0)) || PlayerInput.aForward != float(0); + } + // End:0x140 + if(((PlayerInput.aStrafe != float(0)) || PlayerInput.aForward != float(0)) || PlayerInput.aUp != float(0)) + { + return true; + } + else + { + // End:0x1A4 + if((PlayerInput.aTurn != float(0)) || PlayerInput.aLookUp != float(0)) + { + // End:0x1A4 + if(int(m_CameraMode) == int(5)) + { + return true; + } + } + } + return false; + //return ReturnValue; +} + +exec function SetNewSpectatorMode(TgSpectatorController.ESpectatorMode NewMode) +{ + local Vector Loc; + local Rotator Rot; + local TPOV POV; + + // End:0x214 + if(int(m_CurrentSpectatorMode) != int(NewMode)) + { + switch(NewMode) + { + // End:0x117 + case 0: + SetSpectatorCameraMode(1, false); + GetPlayerViewPoint(Loc, Rot); + PlayerCamera.CameraCache.POV.FOV = Class'TgGame.TgCameraModule_SpectatorOverview'.default.FOV; + TgCameraModule_Spectator(TgPlayerCamera(PlayerCamera).CurrentCameraMod).BlendCameraToLocation(Loc, 0.3500000, false); + // End:0x201 + break; + // End:0xFFFF + default: + // End:0x1F4 + if(int(m_CurrentSpectatorMode) == int(0)) + { + Rot = Rotation; + Rot.Yaw = 0; + SetRotation(Rot); + POV = PlayerCamera.CameraCache.POV; + POV.Rotation = Rot; + PlayerCamera.FillCameraCache(POV); + } + SetSpectatorCameraMode(6, false); + break; + } + m_CurrentSpectatorMode = NewMode; + } + //return; +} + +exec function SetSpectatorCameraMode(TgSpectatorController.SpectatorCameraMode Mode, optional bool bCameraTween = false) +{ + local Class camClass; + local bool bClipMap; + local Vector Loc, StartingLocation; + local Rotator Rot; + + // End:0x2D3 + if(int(Mode) != int(m_CameraMode)) + { + m_CameraMode = Mode; + camClass = Class'TgGame.TgCameraModule_Spectator'; + switch(Mode) + { + // End:0x80 + case 2: + bClipMap = false; + camClass = Class'TgGame.TgCameraModule_SpectatorThirdPerson'; + // End:0x237 + break; + // End:0xA7 + case 3: + bClipMap = false; + camClass = Class'TgGame.TgCameraModule_SpectatorFirstPerson'; + // End:0x237 + break; + // End:0xCE + case 4: + bClipMap = true; + camClass = Class'TgGame.TgCameraModule_TopDown'; + // End:0x237 + break; + // End:0xF5 + case 5: + bClipMap = false; + camClass = Class'TgGame.TgCameraModule_Cinematic'; + // End:0x237 + break; + // End:0x175 + case 6: + // End:0x153 + if(CameraActor(GetViewTarget()) != none) + { + GetPlayerViewPoint(Loc, Rot); + SetLocation(Loc); + SetRotation(Rot); + SetViewTarget(self); + } + bClipMap = true; + camClass = Class'TgGame.TgCameraModule_SpectatorOverview'; + // End:0x237 + break; + // End:0x1F5 + case 7: + // End:0x1D3 + if(CameraActor(GetViewTarget()) != none) + { + GetPlayerViewPoint(Loc, Rot); + SetLocation(Loc); + SetRotation(Rot); + SetViewTarget(self); + } + bClipMap = true; + camClass = Class'TgGame.TgCameraModule_SpectatorLockedView'; + // End:0x237 + break; + // End:0x1FA + case 1: + // End:0xFFFF + default: + bClipMap = false; + camClass = Class'TgGame.TgCameraModule_Spectator'; + SetViewTarget(self); + m_CurrentCycle = 0; + // End:0x237 + break; + break; + } + // End:0x2BE + if(camClass != none) + { + // End:0x28C + if(bCameraTween) + { + TgPlayerCamera(PlayerCamera).SwitchCameras(camClass, 0.2000000); + } + else + { + TgPlayerCamera(PlayerCamera).SwitchCameras(camClass); + } + } + m_bIsMapSquashed = bClipMap; + } + // End:0x38F + if(int(Mode) == int(4)) + { + StartingLocation = Location; + StartingLocation.Z = Class'TgGame.TgControlModule_TopDown'.default.DefaultStartHeight; + SetLocation(StartingLocation); + TgCameraModule_TopDown(TgPlayerCamera(PlayerCamera).CurrentCameraMod).BlendToTarget(0.3500000); + } + else + { + // End:0x3EE + if(int(Mode) == int(2)) + { + TgCameraModule_SpectatorThirdPerson(TgPlayerCamera(PlayerCamera).CurrentCameraMod).BlendToTarget(0.0000000); + } + } + //return; +} + +// Export UTgSpectatorController::execToggleSpectatorPlayerIcons(FFrame&, void* const) +native exec function ToggleSpectatorPlayerIcons(); + +reliable client simulated function ClientSetReadyState(bool bReadyToPlay) +{ + GotoState('SpectatingMatch'); + //return; +} + +exec function SetPendingSpecCycle(TgSpectatorController.SpectatorCameraCycle Mode) +{ + m_PendingCycle = Mode; + //return; +} + +exec function ClearPendingSpecCycle() +{ + m_PendingCycle = 0; + //return; +} + +function bool InterceptFlashInput(name ButtonName, Object.EInputEvent Event) +{ + // End:0x41 + if(ControlModule != none) + { + return ControlModule.InterceptFlashInput(ButtonName, Event); + } + return false; + //return ReturnValue; +} + +exec function LockedViewCam(bool bEnabled) +{ + // End:0x1D + if(bEnabled) + { + SetSpectatorCameraMode(7, false); + } + else + { + SetSpectatorCameraMode(1, false); + } + //return; +} + +function SnapViewToHoverTarget(optional bool bUseAltView = false) +{ + local TgPawn P; + local Vector HitLocation, HitNormal, Start, End, Extent; + + local Rotator ViewRotation; + + GetPlayerViewPoint(Start, ViewRotation); + End = Start + (Vector(ViewRotation) * float(5000)); + Extent = vect(30.0000000, 30.0000000, 30.0000000); + // End:0x18A + foreach TraceActors(Class'TgGame.TgPawn', P, HitLocation, HitNormal, End, Start, Extent,, 1) + { + // End:0x189 + if(((int(GetDefaultModeFor(P)) != int(0)) && P.Mesh != none) && P.Mesh.bRecentlyRendered) + { + SpectatorSetViewTarget(P, GetBlendParams(P)); + // End:0x168 + if(bUseAltView) + { + SetSpectatorCameraMode(2); + } + else + { + SetSpectatorCameraMode(GetDefaultModeFor(P)); + } + return; + } + } + //return; +} + +simulated function bool PingMap(Vector WorldLocation, const out array worldActorRepInfo, TgObject.PING_TYPE Type) +{ + SnapViewToLocation(WorldLocation, int(Type) == int(0)); + return true; + //return ReturnValue; +} + +function SetPendingOnDirectorMode() +{ + //return; +} + +function SnapViewToLocation(Vector WorldLocation, bool bUseFocalPoint) +{ + local Vector ViewLoc; + local Rotator ViewRot; + + GetPlayerViewPoint(ViewLoc, ViewRot); + SetViewTarget(self); + // End:0x10E + if(int(m_CameraMode) == int(6)) + { + SetPendingOnDirectorMode(); + TgCameraModule_SpectatorOverview(TgPlayerCamera(PlayerCamera).CurrentCameraMod).BlendCameraToLocation(WorldLocation, ((VSize2D(ViewLoc - WorldLocation) < m_fInterpolateCameraDistance) ? 0.3500000 : 0.0000000), true); + ViewRot = Rotation; + ViewRot.Yaw = 0; + SetRotation(ViewRot); + } + else + { + SetSpectatorCameraMode(1); + TgCameraModule_Spectator(TgPlayerCamera(PlayerCamera).CurrentCameraMod).BlendCameraToLocation(WorldLocation, ((VSize2D(ViewLoc - WorldLocation) < m_fInterpolateCameraDistance) ? 0.3500000 : 0.0000000), bUseFocalPoint); + } + //return; +} + +function CycleNext(optional bool bSkipIfPresent = false, optional bool bReverse = false) +{ + local array potentialViewTargets; + local int nCurrent, I; + local Actor BestTarget; + local float bestTargetVal, val; + local Vector CurrentLocation; + local Rotator CurrentRotation; + + potentialViewTargets = GetViewTargetListForMode(m_CurrentCycle); + // End:0x39 + if(potentialViewTargets.Length == 0) + { + return; + } + nCurrent = potentialViewTargets.Find(GetViewTarget()); + // End:0x1B3 + if(nCurrent == -1) + { + nCurrent = 0; + GetPlayerViewPoint(CurrentLocation, CurrentRotation); + BestTarget = potentialViewTargets[I]; + bestTargetVal = VSizeSq(BestTarget.Location - CurrentLocation); + I = 0; + J0xF1: + + // End:0x1B0 [Loop If] + if(I < potentialViewTargets.Length) + { + val = VSizeSq(potentialViewTargets[I].Location - CurrentLocation); + // End:0x1A2 + if(val < bestTargetVal) + { + BestTarget = potentialViewTargets[I]; + bestTargetVal = val; + nCurrent = I; + } + I++; + // [Loop Continue] + goto J0xF1; + } + } + else + { + // End:0x1C5 + if(bSkipIfPresent) + { + return; + } + else + { + // End:0x1E0 + if(bReverse) + { + nCurrent--; + } + else + { + nCurrent++; + } + } + } + // End:0x211 + if(nCurrent >= potentialViewTargets.Length) + { + nCurrent = 0; + } + else + { + // End:0x235 + if(nCurrent < 0) + { + nCurrent += potentialViewTargets.Length; + } + } + SpectatorSetViewTarget(potentialViewTargets[nCurrent], GetBlendParams(potentialViewTargets[nCurrent])); + SetSpectatorCameraMode(GetDefaultModeFor(GetViewTarget())); + //return; +} + +function array GetViewTargetListForMode(TgSpectatorController.SpectatorCameraCycle cycle) +{ + local array toReturn, tempList; + local Actor A; + local CameraActor C; + + switch(cycle) + { + // End:0x75 + case 3: + tempList = GetPlayerList(); + // End:0x71 + foreach tempList(A) + { + // End:0x70 + if(A != none) + { + toReturn[toReturn.Length] = A; + } + } + // End:0x3A8 + break; + // End:0xFE + case 1: + tempList = GetPlayerList(); + // End:0xFA + foreach tempList(A) + { + // End:0xF9 + if((A != none) && !A.IsEnemy(self)) + { + toReturn[toReturn.Length] = A; + } + } + // End:0x3A8 + break; + // End:0x185 + case 2: + tempList = GetPlayerList(); + // End:0x181 + foreach tempList(A) + { + // End:0x180 + if((A != none) && A.IsEnemy(self)) + { + toReturn[toReturn.Length] = A; + } + } + // End:0x3A8 + break; + // End:0x1E7 + case 6: + tempList = GetOutermostTowerList(); + // End:0x1E3 + foreach tempList(A) + { + // End:0x1E2 + if(A != none) + { + toReturn[toReturn.Length] = A; + } + } + // End:0x3A8 + break; + // End:0x263 + case 4: + tempList = GetOutermostTowerList(); + // End:0x25F + foreach tempList(A) + { + // End:0x25E + if((A != none) && !IsEnemy(A)) + { + toReturn[toReturn.Length] = A; + } + } + // End:0x3A8 + break; + // End:0x2DD + case 5: + tempList = GetOutermostTowerList(); + // End:0x2D9 + foreach tempList(A) + { + // End:0x2D8 + if((A != none) && IsEnemy(A)) + { + toReturn[toReturn.Length] = A; + } + } + // End:0x3A8 + break; + // End:0x2F9 + case 8: + toReturn = GetActionList(); + // End:0x3A8 + break; + // End:0x395 + case 7: + // End:0x391 + foreach WorldInfo.DynamicActors(Class'Engine.CameraActor', C) + { + // End:0x390 + if((C != none) && Left(string(C.Tag), 10) ~= "Cinematic_") + { + toReturn[toReturn.Length] = C; + } + } + // End:0x3A8 + break; + // End:0xFFFF + default: + toReturn[0] = self; + // End:0x3A8 + break; + break; + } + return toReturn; + //return ReturnValue; +} + +function array GetPlayerList() +{ + local array toReturn; + local TgPawn_Character P; + + // End:0x8D + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn_Character', P) + { + // End:0x8C + if((P != none) && !P.IsInState('Dying')) + { + toReturn[toReturn.Length] = P; + } + } + return toReturn; + //return ReturnValue; +} + +function array GetOutermostTowerList() +{ + local array toReturn; + local TgPawn_TowerBase P; + + // End:0xB3 + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn_TowerBase', P) + { + // End:0xB2 + if(((P != none) && !P.IsInState('Dying')) && !P.r_bLocked) + { + toReturn[toReturn.Length] = P; + } + } + return toReturn; + //return ReturnValue; +} + +function array GetActionList() +{ + local array toReturn, tempList; + local TgPawn P; + local TgPawn_Character C; + local Actor A; + local bool bUnderAttack; + + // End:0x11C + foreach WorldInfo.AllPawns(Class'TgGame.TgPawn_Character', C) + { + // End:0x11B + if(C.GetPRI() != none) + { + bUnderAttack = (FMax(WorldInfo.TimeSeconds - C.GetPRI().c_fLastDamageTime, 0.0000000) < float(5)) && WorldInfo.TimeSeconds > float(10); + // End:0x11B + if(bUnderAttack) + { + toReturn[toReturn.Length] = C; + } + } + } + tempList = GetOutermostTowerList(); + // End:0x24A + foreach tempList(A) + { + P = TgPawn(A); + // End:0x249 + if(P.GetPRI() != none) + { + bUnderAttack = (FMax(WorldInfo.TimeSeconds - P.GetPRI().c_fLastDamageTime, 0.0000000) < float(5)) && WorldInfo.TimeSeconds > float(10); + // End:0x249 + if(bUnderAttack) + { + toReturn[toReturn.Length] = P; + } + } + } + return toReturn; + //return ReturnValue; +} + +function TgSpectatorController.SpectatorCameraMode GetDefaultModeFor(Actor Target) +{ + // End:0x4D + if(Target.IsA('TgPawn') && Target.IsInState('Dying')) + { + return 0; + } + // End:0x76 + if(Target.IsA('TgPawn_Structure')) + { + return 4; + } + else + { + // End:0x9F + if(Target.IsA('TgPawn_Character')) + { + return 4; + } + else + { + // End:0xC5 + if(Target.IsA('CameraActor')) + { + return 5; + } + } + } + return 0; + //return ReturnValue; +} + +exec function SpecViewAction() +{ + m_CurrentCycle = 8; + CycleNext(); + //return; +} + +exec function SpecViewPlayer(string PlayerName) +{ + local array PlayerList; + local Actor A; + local TgPawn TgP; + + PlayerList = GetViewTargetListForMode(3); + // End:0x12E + foreach PlayerList(A) + { + TgP = TgPawn(A); + // End:0x12D + if(((TgP != none) && TgP.PlayerReplicationInfo != none) && (TgP.PlayerReplicationInfo.PlayerName ~= PlayerName) || TgRepInfo_Player(TgP.PlayerReplicationInfo).c_PlayerNameWithTag ~= PlayerName) + { + SpectatorSetViewTarget(A, GetSnapBlendParams()); + return; + } + } + //return; +} + +function ViewTargetTransitionParams GetBlendParams(Actor Target) +{ + // End:0x47 + if(Target.IsA('CameraActor') || CanCameraSeeActorCenter(Target)) + { + return GetDefaultBlendParams(); + } + return GetSnapBlendParams(); + //return ReturnValue; +} + +function ViewTargetTransitionParams GetDefaultBlendParams() +{ + return TgSpectatorCamera(PlayerCamera).m_DefaultBlendParams; + //return ReturnValue; +} + +function ViewTargetTransitionParams GetSnapBlendParams() +{ + return TgSpectatorCamera(PlayerCamera).m_SnapBlendParams; + //return ReturnValue; +} + +exec function SetSpectatorBookmark(int nNum) +{ + local Vector ViewLoc; + local Rotator ViewRot; + local TgPawn TgP; + + m_Bookmarks[nNum].ViewMode = m_CameraMode; + m_Bookmarks[nNum].POV.FOV = FOVAngle; + TgP = TgPawn(GetViewTarget()); + // End:0xD2 + if(TgP != none) + { + m_Bookmarks[nNum].ViewTarget = TgP; + } + else + { + GetPlayerViewPoint(ViewLoc, ViewRot); + m_Bookmarks[nNum].POV.Location = ViewLoc; + m_Bookmarks[nNum].POV.Rotation = ViewRot; + } + //return; +} + +exec function RecallSpectatorBookmark(int nNum) +{ + local TgRepInfo_Player PRI; + + // End:0x173 + if(m_Bookmarks[nNum].ViewTarget != none) + { + PRI = TgRepInfo_Player(m_Bookmarks[nNum].ViewTarget); + // End:0xDF + if((PRI != none) && PRI.r_PawnOwner != none) + { + m_Bookmarks[nNum].ViewTarget = PRI.r_PawnOwner; + } + SetSpectatorCameraMode(m_Bookmarks[nNum].ViewMode); + SpectatorSetViewTarget(m_Bookmarks[nNum].ViewTarget, GetBlendParams(m_Bookmarks[nNum].ViewTarget)); + } + else + { + // End:0x2D1 + if(int(m_Bookmarks[nNum].ViewMode) == int(1)) + { + SetSpectatorCameraMode(1); + SetLocation(m_Bookmarks[nNum].POV.Location); + SetRotation(m_Bookmarks[nNum].POV.Rotation); + // End:0x26E + if(m_BookmarkCamera == none) + { + m_BookmarkCamera = Spawn(Class'TgGame.TgSpectatorTempCam', self,, Location, Rotation,, true); + } + else + { + m_BookmarkCamera.SetLocation(Location); + m_BookmarkCamera.SetRotation(Rotation); + } + SpectatorSetViewTarget(self, GetBlendParams(m_BookmarkCamera)); + } + else + { + // End:0x387 + if(int(m_Bookmarks[nNum].ViewMode) == int(6)) + { + SetSpectatorCameraMode(6, false); + SetLocation(m_Bookmarks[nNum].POV.Location); + SetRotation(m_Bookmarks[nNum].POV.Rotation); + } + } + } + Velocity = vect(0.0000000, 0.0000000, 0.0000000); + Acceleration = vect(0.0000000, 0.0000000, 0.0000000); + //return; +} + +exec function SpecSetFlightMode(TgSpectatorController.SpecFlightMode sfm) +{ + m_eHelicopterFlight = sfm; + //return; +} + +exec function GotoCinematicCam(string sCamName) +{ + local array camList; + local Actor Cam; + + camList = GetViewTargetListForMode(7); + // End:0x8E + foreach camList(Cam) + { + // End:0x8D + if(string(Cam.Tag) ~= ("Cinematic_" $ sCamName)) + { + SetSpectatorCameraMode(5); + SpectatorSetViewTarget(Cam); + } + else + { + } + } + //return; +} + +exec function CameraSpeed(float NewSpeed) +{ + SpectatorCameraSpeed = NewSpeed; + //return; +} + +exec function IncreaseCameraSpeeed() +{ + TgCameraModule_Spectator(TgPlayerCamera(PlayerCamera).CurrentCameraMod).IncreaseCameraSpeeed(); + //return; +} + +exec function DecreaseCameraSpeed() +{ + TgCameraModule_Spectator(TgPlayerCamera(PlayerCamera).CurrentCameraMod).DecreaseCameraSpeed(); + //return; +} + +function string StripClanTag(string PlayerName) +{ + return Split(PlayerName, "] ", true); + //return ReturnValue; +} + +exec function ToggleOutlineCharacters() +{ + SpectateOutlines(!GetClientSettings().SpectateOutlines); + //return; +} + +// Export UTgSpectatorController::execSetOutlineCharacters(FFrame&, void* const) +native function SetOutlineCharacters(bool bNewOutlineCharacters); + +event float GetFOVAngle() +{ + local TgCameraModule_Spectator CurrentCameraModule; + local float Angle; + + CurrentCameraModule = TgCameraModule_Spectator(TgPlayerCamera(PlayerCamera).CurrentCameraMod); + // End:0xCA + if(CurrentCameraModule != none) + { + Angle = CurrentCameraModule.GetFOVAngle(); + PlayerCamera.CameraCache.POV.FOV = Angle; + return Angle; + } + return super.GetFOVAngle(); + //return ReturnValue; +} + +exec function SquashMap() +{ + m_bIsMapSquashed = !m_bIsMapSquashed; + //return; +} + +exec function SpecTest() +{ + local TgCameraModule_SpectatorOverview OverviewCameraMod; + + OverviewCameraMod = TgCameraModule_SpectatorOverview(TgPlayerCamera(PlayerCamera).CurrentCameraMod); + // End:0x119 + if(OverviewCameraMod != none) + { + m_bIsMapSquashed = !m_bIsMapSquashed; + // End:0xAF + if(!m_bIsMapSquashed) + { + OverviewCameraMod.WorldViewRotation = Class'TgGame.TgCameraModule_SpectatorOverview'.default.WorldViewRotation; + } + else + { + OverviewCameraMod.WorldViewRotation.Pitch = -6000; + OverviewCameraMod.WorldViewRotation.Yaw = 0; + } + } + //return; +} + +exec function FlipOverviewSides() +{ + // End:0x5A + if(int(m_CameraMode) == int(6)) + { + TgCameraModule_SpectatorOverview(TgPlayerCamera(PlayerCamera).CurrentCameraMod).FlipSides(); + } + //return; +} + +// Export UTgSpectatorController::execGetPawnFrom2DCoordinate(FFrame&, void* const) +native function Pawn GetPawnFrom2DCoordinate(Vector2D Coordinate); + +// Export UTgSpectatorController::execGetActorListFrom2DCoordinate(FFrame&, void* const) +native function GetActorListFrom2DCoordinate(Vector2D Coordinate, out array ActorList); + +exec function SpectateZoomIn(bool bEnabled) +{ + // End:0x1C + if(bEnabled) + { + ChangeZoomState(1); + } + else + { + // End:0x3C + if(int(m_CurrentZoomState) == int(1)) + { + ChangeZoomState(0); + } + } + //return; +} + +exec function SpectateZoomOut(bool bEnabled) +{ + // End:0x1C + if(bEnabled) + { + ChangeZoomState(2); + } + else + { + // End:0x3C + if(int(m_CurrentZoomState) == int(2)) + { + ChangeZoomState(0); + } + } + //return; +} + +function ChangeZoomState(TgSpectatorController.EZoomState NewZoomState) +{ + m_CurrentZoomState = NewZoomState; + //return; +} + +// Export UTgSpectatorController::execUpdateBroadcastChannels(FFrame&, void* const) +native function UpdateBroadcastChannels(); + +exec function SpectatePlayerIndex(int TaskForceNum, int PlayerIndex) +{ + local string PlayerName; + + PlayerName = TgRepInfo_Game(WorldInfo.GRI).GetTaskForce(TaskForceNum).GetPlayer(PlayerIndex).PlayerName; + // End:0xA9 + if(Len(PlayerName) > 0) + { + SpecViewPlayer(PlayerName); + } + //return; +} + +// Export UTgSpectatorController::execGetTgPawn(FFrame&, void* const) +native function TgPawn GetTgPawn(); + +// Export UTgSpectatorController::execSetViewTarget(FFrame&, void* const) +native function SetViewTarget(Actor NewViewTarget, optional ViewTargetTransitionParams TransitionParams); + +state SpectatingMatch extends Spectating +{ + ignores ForwardToSpectatingMatch; + + event BeginState(name PrevStateName) + { + local TgPawn OldPawn; + + OldPawn = TgPawn(Pawn); + super.BeginState(PrevStateName); + ClientSetRotation(rot(0, 0, 0)); + SetOutlineCharacters(GetClientSettings().SpectateOutlines); + // End:0x120 + if(int(WorldInfo.NetMode) == int(NM_DedicatedServer)) + { + // End:0xC1 + if(OldPawn != none) + { + OldPawn.Destroy(); + } + CachedPRI.r_nPawnId = TgGame(WorldInfo.Game).GetNextActorInstanceId(); + } + else + { + CauseClientEvent('end_spectate'); + SetSpectatorCameraMode(default.m_CameraMode); + } + //return; + } + + function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) + { + // End:0x55 + if(ControlModule != none) + { + ControlModule.ProcessMove(DeltaTime, newAccel, DoubleClickMove, DeltaRot); + } + else + { + super(BaseSpectating).ProcessMove(DeltaTime, newAccel, DoubleClickMove, DeltaRot); + } + //return; + } + + function PlayerMove(float DeltaTime) + { + // End:0x52 + if(TgPlayerCamera(PlayerCamera) != none) + { + TgPlayerCamera(PlayerCamera).ProcessInput(PlayerInput, DeltaTime); + } + // End:0x81 + if(ShouldFlyFromInput()) + { + SetSpectatorCameraMode(1); + SpectatorSetViewTarget(self, GetSnapBlendParams()); + } + // End:0xBB + if(ControlModule != none) + { + ControlModule.PlayerMove(DeltaTime); + } + else + { + super(BaseSpectating).PlayerMove(DeltaTime); + } + //return; + } + + function UpdateRotation(float DeltaTime) + { + // End:0x3A + if(ControlModule != none) + { + ControlModule.UpdateRotation(DeltaTime); + } + else + { + super(PlayerController).UpdateRotation(DeltaTime); + } + //return; + } + + function ReplicateMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) + { + super(BaseSpectating).ReplicateMove(DeltaTime, newAccel, DoubleClickMove, DeltaRot); + // End:0x82 + if((PlayerCamera != none) && PlayerCamera.bUseClientSideCameraUpdates) + { + PlayerCamera.bShouldSendClientSideCameraUpdate = true; + } + //return; + } + + exec function OnLeftMousePressed() + { + local TgControlModule_Spectator SpecControlModule; + + SpecControlModule = TgControlModule_Spectator(ControlModule); + // End:0x4A + if(SpecControlModule != none) + { + SpecControlModule.OnLeftMousePressed(); + } + //return; + } + + exec function OnRightMousePressed() + { + global.OnRightMousePressed(); + //return; + } + stop; +} + +state RoundEnded +{ + ignores SpecViewPlayer; + + event BeginState(name PreviousStateName) + { + // End:0x37 + if((int(m_CameraMode) == int(6)) || int(m_CameraMode) == int(7)) + { + SetSpectatorCameraMode(1, false); + } + super.BeginState(PreviousStateName); + //return; + } + stop; +} + +defaultproperties +{ + m_CameraMode=SpectatorCameraMode.SpecCam_Fly + m_eHelicopterFlight=SpecFlightMode.SFM_Heli + m_Bookmarks[0]=(ViewTarget=none,ViewMode=SpectatorCameraMode.SpecCam_None,POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000))) + m_Bookmarks[1]=(ViewTarget=none,ViewMode=SpectatorCameraMode.SpecCam_None,POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000))) + m_Bookmarks[2]=(ViewTarget=none,ViewMode=SpectatorCameraMode.SpecCam_None,POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000))) + m_Bookmarks[3]=(ViewTarget=none,ViewMode=SpectatorCameraMode.SpecCam_None,POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000))) + m_Bookmarks[4]=(ViewTarget=none,ViewMode=SpectatorCameraMode.SpecCam_None,POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000))) + m_Bookmarks[5]=(ViewTarget=none,ViewMode=SpectatorCameraMode.SpecCam_None,POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000))) + m_Bookmarks[6]=(ViewTarget=none,ViewMode=SpectatorCameraMode.SpecCam_None,POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000))) + m_Bookmarks[7]=(ViewTarget=none,ViewMode=SpectatorCameraMode.SpecCam_None,POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000))) + m_Bookmarks[8]=(ViewTarget=none,ViewMode=SpectatorCameraMode.SpecCam_None,POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000))) + m_Bookmarks[9]=(ViewTarget=none,ViewMode=SpectatorCameraMode.SpecCam_None,POV=(Location=(X=0.0000000,Y=0.0000000,Z=0.0000000),Rotation=(Pitch=0,Yaw=0,Roll=0),FOV=90.0000000,HUDOffset=(X=0.0000000,Y=0.0000000))) + m_fDefaultTweenTime=0.3000000 + m_bIgnoreCullDistanceVolumes=true + m_fNameplateFadeMinDist=4000.0000000 + m_fNameplateFadeMaxDist=8000.0000000 + m_fNameplateFadeMaxAmount=0.4000000 + m_fNameplateScaleMinDist=500.0000000 + m_fNameplateScaleMaxDist=4000.0000000 + m_fNameplateScaleMaxAmount=0.6000000 + m_fInterpolateCameraDistance=4000.0000000 + m_BroadcastChannels[0]=(Channel=ESpectatorMode.SPECMODE_Broadcast1,PlayerID=0) + m_BroadcastChannels[1]=(Channel=ESpectatorMode.SPECMODE_Broadcast2,PlayerID=0) + m_BroadcastChannels[2]=(Channel=ESpectatorMode.SPECMODE_Broadcast3,PlayerID=0) + m_BroadcastChannels[3]=(Channel=ESpectatorMode.SPECMODE_Broadcast4,PlayerID=0) + c_vMouseClickDeprojectionExtent=(X=3.0000000,Y=3.0000000,Z=3.0000000) + m_fMouseCursorVisibleTime=2.0000000 + m_bCanHearStealthPawns=true + DefaultControlModuleClass=Class'TgGame.TgControlModule_Spectator' + CameraClass=Class'TgGame.TgSpectatorCamera' + InputClass=Class'TgGame.TgSpectatorInput' + // Reference: CylinderComponent'TgGame.Default__TgSpectatorController.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgPlayerController.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSpectatorDirector.uc b/exported/TgGame/Classes/TgSpectatorDirector.uc new file mode 100755 index 00000000..81ba4dbb --- /dev/null +++ b/exported/TgGame/Classes/TgSpectatorDirector.uc @@ -0,0 +1,204 @@ +class TgSpectatorDirector extends Info + native + hidecategories(Navigation,Movement,Collision); + +struct native ViewTargetInfo +{ + var TgPawn Pawn; + var TgPawn_Tower ClosestEnemyTower; + var int Rating; + var float DistSqToClosestEnemy; + var float DistSqToClosestFriend; + var float DistSqToGoldFury; + var float DistSqToEnemyTower; + var int NumCloseEnemies; + var int NumCloseFriends; + + structdefaultproperties + { + Pawn=none + ClosestEnemyTower=none + Rating=-1 + DistSqToClosestEnemy=-1.0000000 + DistSqToClosestFriend=0.0000000 + DistSqToGoldFury=0.0000000 + DistSqToEnemyTower=0.0000000 + NumCloseEnemies=0 + NumCloseFriends=0 + } +}; + +var private transient bool m_bIsActive; +var private transient bool m_bIsPending; +var transient bool m_bAutoSwitchCameraViews; +var transient bool m_bForceThirdPersonView; +var float m_fRemainingAutoUpdateCheckTime; +var float m_fTimeSinceViewSwitchedTeams; +var float m_fTimeSinceViewSwitchedMode; +var float m_fRemainingAutoReturnCheckTime; +var TgSpectatorController.SpectatorCameraMode m_CurrentCameraMode; +var ViewTargetInfo m_CurrentRatedViewTarget; +var transient ViewTargetInfo m_DemoRewindViewTarget; +var transient Vector2D m_v2dForcedDirectorLocation; +var transient float m_fForcedDirectorLocationTimestamp; + +// Export UTgSpectatorDirector::execOnPlayerMoved(FFrame&, void* const) +native function OnPlayerMoved(); + +// Export UTgSpectatorDirector::execUpdateOverviewCamUI(FFrame&, void* const) +native function UpdateOverviewCamUI(bool bEnable); + +event SetViewTarget(ViewTargetInfo NewViewTarget) +{ + local TgSpectatorController PC; + + PC = TgSpectatorController(Owner); + // End:0x147 + if(PC != none) + { + // End:0xB5 + if(NewViewTarget.Pawn != none) + { + PC.SetViewTarget(NewViewTarget.Pawn); + PC.SetSpectatorCameraMode(m_CurrentCameraMode); + } + else + { + // End:0x147 + if(int(PC.m_CameraMode) != int(6)) + { + PC.SetSpectatorCameraMode(1); + PC.SpectatorSetViewTarget(PC, PC.GetSnapBlendParams()); + } + } + } + //return; +} + +event SetCameraMode(TgSpectatorController.SpectatorCameraMode NewCameraMode) +{ + local TgSpectatorController PC; + + PC = TgSpectatorController(Owner); + // End:0x90 + if((PC != none) && !PC.IsInState('RoundEnded')) + { + PC.SetSpectatorCameraMode(NewCameraMode); + m_CurrentCameraMode = NewCameraMode; + } + //return; +} + +function SetActive(bool bIsActive) +{ + local TgDemoRecSpectator PC; + + PC = TgDemoRecSpectator(Owner); + // End:0x7E + if((bIsActive && PC != none) && int(PC.m_CurrentSpectatorMode) == int(2)) + { + ClearAssistModeTarget(); + m_fRemainingAutoReturnCheckTime = 0.0000000; + } + m_bIsActive = bIsActive; + // End:0x103 + if(!m_bIsActive) + { + PC = TgDemoRecSpectator(Owner); + // End:0x103 + if((PC != none) && int(PC.m_CameraMode) == int(6)) + { + UpdateOverviewCamUI(true); + } + } + //return; +} + +function ResetCamera(TgSpectatorController PC) +{ + local Vector Loc; + local Rotator Rot; + + PC.GetPlayerViewPoint(Loc, Rot); + PC.SetLocation(Loc); + PC.SetRotation(Rot); + PC.SetViewTarget(PC); + //return; +} + +function bool IsCurrentlyViewing() +{ + return m_bIsActive && !m_bIsPending; + //return ReturnValue; +} + +function bool IsActive() +{ + return m_bIsActive; + //return ReturnValue; +} + +function bool IsPending() +{ + return m_bIsPending; + //return ReturnValue; +} + +simulated event PreDemoRewind() +{ + m_DemoRewindViewTarget = m_CurrentRatedViewTarget; + //return; +} + +simulated event PostDemoRewind() +{ + local TgSpectatorController PC; + + super(Actor).PostDemoRewind(); + PC = TgSpectatorController(Owner); + // End:0xC5 + if(PC != none) + { + // End:0x81 + if(int(PC.m_CurrentSpectatorMode) == int(1)) + { + // End:0x7E + if(IsCurrentlyViewing()) + { + SetViewTarget(m_CurrentRatedViewTarget); + } + } + else + { + // End:0xC5 + if((IsCurrentlyViewing()) && m_DemoRewindViewTarget.Pawn != none) + { + SetViewTarget(m_DemoRewindViewTarget); + } + } + } + //return; +} + +event ClearAssistModeTarget() +{ + m_fForcedDirectorLocationTimestamp = 0.0000000; + m_CurrentRatedViewTarget.Pawn = none; + //return; +} + +function SetForcedDirectorLocation(Vector2D NewLocation) +{ + ClearAssistModeTarget(); + m_v2dForcedDirectorLocation = NewLocation; + m_fForcedDirectorLocationTimestamp = WorldInfo.RealTimeSeconds; + m_fRemainingAutoUpdateCheckTime = 0.0000000; + //return; +} + +defaultproperties +{ + m_CurrentCameraMode=SpectatorCameraMode.SpecCam_Overview + m_CurrentRatedViewTarget=(Pawn=none,ClosestEnemyTower=none,Rating=-1,DistSqToClosestEnemy=-1.0000000,DistSqToClosestFriend=0.0000000,DistSqToGoldFury=0.0000000,DistSqToEnemyTower=0.0000000,NumCloseEnemies=0,NumCloseFriends=0) + m_DemoRewindViewTarget=(Pawn=none,ClosestEnemyTower=none,Rating=-1,DistSqToClosestEnemy=-1.0000000,DistSqToClosestFriend=0.0000000,DistSqToGoldFury=0.0000000,DistSqToEnemyTower=0.0000000,NumCloseEnemies=0,NumCloseFriends=0) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSpectatorInput.uc b/exported/TgGame/Classes/TgSpectatorInput.uc new file mode 100755 index 00000000..c56b9678 --- /dev/null +++ b/exported/TgGame/Classes/TgSpectatorInput.uc @@ -0,0 +1,120 @@ +class TgSpectatorInput extends TgPlayerInput within TgPlayerController + transient + native(Pawns) + config(Input) + hidecategories(Object,UIRoot); + +var config float SpectatorSensitivity; + +// Export UTgSpectatorInput::execCheckIdleBreak(FFrame&, void* const) +native function CheckIdleBreak(); + +function AdjustMouseSensitivity(float FOVScale) +{ + aMouseX *= (SpectatorSensitivity * FOVScale); + aMouseY *= (SpectatorSensitivity * FOVScale); + //return; +} + +event PlayerInput(float DeltaTime) +{ + local float FOVScale, TimeScale; + + RawJoyUp = aBaseY; + RawJoyRight = aStrafe; + RawJoyLookRight = aTurn; + RawJoyLookUp = aLookUp; + DeltaTime = Outer.WorldInfo.m_fRealDeltaSeconds; + PreProcessInput(DeltaTime); + TimeScale = 100.0000000 * DeltaTime; + aBaseY *= (TimeScale * MoveForwardSpeed); + aStrafe *= (TimeScale * MoveStrafeSpeed); + aUp *= (TimeScale * MoveStrafeSpeed); + aTurn *= (TimeScale * LookRightScale); + aLookUp *= (TimeScale * LookUpScale); + PostProcessInput(DeltaTime); + ProcessInputMatching(DeltaTime); + CatchDoubleClickInput(); + // End:0x1C1 + if(bEnableFOVScaling) + { + FOVScale = Outer.GetFOVAngle() * 0.0166660; + } + else + { + FOVScale = 1.0000000; + } + AdjustMouseSensitivity(FOVScale); + aMouseX = SmoothMouse(aMouseX, DeltaTime, bXAxis, 0); + aMouseY = SmoothMouse(aMouseY, DeltaTime, bYAxis, 1); + aLookUp *= FOVScale; + aTurn *= FOVScale; + // End:0x2A1 + if(int(bStrafe) > int(0)) + { + aStrafe += (aBaseX + aMouseX); + } + else + { + aTurn += (aBaseX + aMouseX); + } + aLookUp += aMouseY; + // End:0x2F1 + if(bInvertMouse) + { + aLookUp *= -1.0000000; + } + // End:0x30E + if(bInvertTurn) + { + aTurn *= -1.0000000; + } + aForward += aBaseY; + Outer.HandleWalking(); + // End:0x3C3 + if(bLockTurnUntilRelease) + { + // End:0x3B7 + if(RawJoyLookRight != float(0)) + { + aTurn = 0.0000000; + // End:0x3B4 + if(AutoUnlockTurnTime > 0.0000000) + { + AutoUnlockTurnTime -= DeltaTime; + // End:0x3B4 + if(AutoUnlockTurnTime < 0.0000000) + { + bLockTurnUntilRelease = false; + } + } + } + else + { + bLockTurnUntilRelease = false; + } + } + // End:0x412 + if(Outer.IsMoveInputIgnored()) + { + aForward = 0.0000000; + aStrafe = 0.0000000; + aUp = 0.0000000; + } + // End:0x452 + if(Outer.IsLookInputIgnored()) + { + aTurn = 0.0000000; + aLookUp = 0.0000000; + } + CheckIdleBreak(); + //return; +} + +defaultproperties +{ + SpectatorSensitivity=5.0000000 + c_bUseServerBindings=false + m_nKeybindConfigSet=2 + Bindings=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSpectatorTempCam.uc b/exported/TgGame/Classes/TgSpectatorTempCam.uc new file mode 100755 index 00000000..705430d1 --- /dev/null +++ b/exported/TgGame/Classes/TgSpectatorTempCam.uc @@ -0,0 +1,43 @@ +class TgSpectatorTempCam extends DynamicCameraActor + hidecategories(Navigation); + +var bool bIsViewTarget; +var bool bIsBookmark; + +event BecomeViewTarget(PlayerController PC) +{ + super(Actor).BecomeViewTarget(PC); + bIsViewTarget = true; + FOVAngle = PC.FOVAngle; + //return; +} + +event EndViewTarget(PlayerController PC) +{ + super(Actor).EndViewTarget(PC); + bIsViewTarget = false; + DestroyIfNeeded(); + //return; +} + +event SetIsBookmark(bool bBookmark) +{ + bIsBookmark = bBookmark; + DestroyIfNeeded(); + //return; +} + +function DestroyIfNeeded() +{ + // End:0x23 + if(!bIsViewTarget && !bIsBookmark) + { + Destroy(); + } + //return; +} + +defaultproperties +{ + bConstrainAspectRatio=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSplineActor.uc b/exported/TgGame/Classes/TgSplineActor.uc new file mode 100755 index 00000000..37f4369f --- /dev/null +++ b/exported/TgGame/Classes/TgSplineActor.uc @@ -0,0 +1,27 @@ +class TgSplineActor extends SplineActor + native(Navigation) + hidecategories(Navigation); + +var() TgObject.ELanePusherActionPoint m_ActionPoint; +var(Preview) editoronly transient bool m_bPreview; + +// Export UTgSplineActor::execUpdateSplineComponents(FFrame&, void* const) +native function UpdateSplineComponents(); + +// Export UTgSplineActor::execDistanceToEndOfSplineChain(FFrame&, void* const) +native final function float DistanceToEndOfSplineChain(); + +// Export UTgSplineActor::execDistanceToActionPoint(FFrame&, void* const) +native final function float DistanceToActionPoint(TgObject.ELanePusherActionPoint ActionPoint); + +event OnSplineActorReached(TgPawn_LanePusherBase Other) +{ + //return; +} + +defaultproperties +{ + Components[0]=none + Components[1]=none + bNoDelete=true +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSplineActor_Payload.uc b/exported/TgGame/Classes/TgSplineActor_Payload.uc new file mode 100755 index 00000000..73c71e0a --- /dev/null +++ b/exported/TgGame/Classes/TgSplineActor_Payload.uc @@ -0,0 +1,37 @@ +class TgSplineActor_Payload extends TgSplineActor + hidecategories(Navigation); + +var bool m_bReached; +var(Payload) float m_fSecondsToAdd; + +simulated event OnSplineActorReached(TgPawn_LanePusherBase Payload) +{ + local TgGame_PaladinsExtended Gamemode; + + super.OnSplineActorReached(Payload); + // End:0xE2 + if(!m_bReached) + { + m_bReached = true; + // End:0xE2 + if(((int(m_ActionPoint) == int(4)) || int(m_ActionPoint) == int(5)) || int(m_ActionPoint) == int(7)) + { + // End:0xE2 + if(int(Role) == int(ROLE_Authority)) + { + Gamemode = TgGame_PaladinsExtended(WorldInfo.Game); + // End:0xE2 + if(Gamemode != none) + { + Gamemode.PayloadCheckpointReached(self); + } + } + } + } + //return; +} + +defaultproperties +{ + m_fSecondsToAdd=120.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSplineLoftActorSpawnable.uc b/exported/TgGame/Classes/TgSplineLoftActorSpawnable.uc new file mode 100755 index 00000000..68517703 --- /dev/null +++ b/exported/TgGame/Classes/TgSplineLoftActorSpawnable.uc @@ -0,0 +1,17 @@ +class TgSplineLoftActorSpawnable extends SplineLoftActorMovable + native + hidecategories(Navigation); + +defaultproperties +{ + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgSplineLoftActorSpawnable.MyMeshLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyMeshLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'Engine.Default__SplineLoftActorMovable.MyMeshLightEnvironment' + begin object name="MyMeshLightEnvironment" + end object + MeshLightEnvironment=MyMeshLightEnvironment + Components[0]=none + Components[1]=MyMeshLightEnvironment + bNoDelete=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgStartPoint.uc b/exported/TgGame/Classes/TgStartPoint.uc new file mode 100755 index 00000000..001be67a --- /dev/null +++ b/exported/TgGame/Classes/TgStartPoint.uc @@ -0,0 +1,87 @@ +class TgStartPoint extends PlayerStart + native(Navigation) + hidecategories(Navigation,Lighting,LightColor,Force,Collision); + +var(Object) editconst int m_nMapObjectId; +var() int m_nStartGroup; +var() int m_nReturnMapType; +var() float m_fStartRating; +var() float m_fCurrentRating; +var() float m_fResetRating; +var() float m_fDecreaseRate; +var() array< Class > m_ArrayOfFloats; +var() TgTeleporter m_TgTeleporter; + +// Export UTgStartPoint::execLoadObjectConfig(FFrame&, void* const) +native function LoadObjectConfig(); + +simulated function PreBeginPlay() +{ + super(Actor).PreBeginPlay(); + LoadObjectConfig(); + //return; +} + +simulated function float GetRating(Controller Player) +{ + local float Rating; + + // End:0x21 + if(!bEnabled) + { + Rating = 0.0000000; + } + else + { + Rating = m_fCurrentRating; + // End:0x50 + if(bPrimaryStart) + { + Rating += float(100); + } + } + return Rating; + //return ReturnValue; +} + +simulated function AdjustRating() +{ + // End:0x4F + if(m_fDecreaseRate != float(0)) + { + m_fCurrentRating -= m_fDecreaseRate; + // End:0x4F + if(m_fCurrentRating < m_fResetRating) + { + m_fCurrentRating = m_fStartRating; + } + } + //return; +} + +simulated function int GetStartGroupNumber() +{ + return m_nStartGroup; + //return ReturnValue; +} + +defaultproperties +{ + m_fStartRating=90.0000000 + m_fCurrentRating=90.0000000 + m_fResetRating=10.0000000 + // Reference: CylinderComponent'TgGame.Default__TgStartPoint.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__PlayerStart.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgStaticMeshActor.uc b/exported/TgGame/Classes/TgStaticMeshActor.uc new file mode 100755 index 00000000..f601d8a9 --- /dev/null +++ b/exported/TgGame/Classes/TgStaticMeshActor.uc @@ -0,0 +1,26 @@ +class TgStaticMeshActor extends StaticMeshActor + native(Pawns) + hidecategories(Navigation); + +defaultproperties +{ + // Reference: StaticMeshComponent'TgGame.Default__TgStaticMeshActor.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__StaticMeshActor.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + ReplacementPrimitive=none + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: TgSilhouetteComponent'TgGame.Default__TgStaticMeshActor.MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__StaticMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=StaticMeshComponent'TgGame.Default__TgStaticMeshActor.StaticMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + Components[0]=StaticMeshComponent0 + Components[1]=MySilhouette + bWorldGeometry=false + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgStaticMeshActorGrass.uc b/exported/TgGame/Classes/TgStaticMeshActorGrass.uc new file mode 100755 index 00000000..77f65f03 --- /dev/null +++ b/exported/TgGame/Classes/TgStaticMeshActorGrass.uc @@ -0,0 +1,84 @@ +class TgStaticMeshActorGrass extends StaticMeshActor + hidecategories(Navigation); + +var float m_fTargetScale; +var Vector m_TargetScale3D; +var float m_fScaleTransitionTime; + +function OnChangeScale(TgSeqAct_ChangeScale SeqAct_ChangeScale) +{ + m_fTargetScale = SeqAct_ChangeScale.TargetScale; + m_TargetScale3D = SeqAct_ChangeScale.TargetScale3D; + m_fScaleTransitionTime = SeqAct_ChangeScale.TransitionTime; + // End:0xB4 + if(m_fScaleTransitionTime <= 0.0000000) + { + SetDrawScale(m_fTargetScale); + SetDrawScale3D(m_TargetScale3D); + } + else + { + SetTickIsDisabled(false); + } + //return; +} + +event Tick(float DeltaTime) +{ + local Vector NewScale3D; + + super(Actor).Tick(DeltaTime); + // End:0x249 + if(m_fScaleTransitionTime > 0.0000000) + { + // End:0x7C + if(m_fTargetScale != DrawScale) + { + SetDrawScale(FInterpConstantTo(DrawScale, m_fTargetScale, DeltaTime, 1.0000000 / m_fScaleTransitionTime)); + } + // End:0x20E + if(m_TargetScale3D != DrawScale3D) + { + NewScale3D.X = FInterpConstantTo(DrawScale3D.X, m_TargetScale3D.X, DeltaTime, 1.0000000 / m_fScaleTransitionTime); + NewScale3D.Y = FInterpConstantTo(DrawScale3D.Y, m_TargetScale3D.Y, DeltaTime, 1.0000000 / m_fScaleTransitionTime); + NewScale3D.Z = FInterpConstantTo(DrawScale3D.Z, m_TargetScale3D.Z, DeltaTime, 1.0000000 / m_fScaleTransitionTime); + SetDrawScale3D(NewScale3D); + } + // End:0x249 + if((m_fTargetScale == DrawScale) && m_TargetScale3D == DrawScale3D) + { + SetTickIsDisabled(false); + } + } + //return; +} + +defaultproperties +{ + m_fTargetScale=1.0000000 + m_TargetScale3D=(X=1.0000000,Y=1.0000000,Z=1.0000000) + // Reference: StaticMeshComponent'TgGame.Default__TgStaticMeshActorGrass.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__StaticMeshActor.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + ReplacementPrimitive=none + bDisableAllRigidBody=true + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: TgSilhouetteComponent'TgGame.Default__TgStaticMeshActorGrass.MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__StaticMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=StaticMeshComponent'TgGame.Default__TgStaticMeshActorGrass.StaticMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + Components[0]=StaticMeshComponent0 + Components[1]=MySilhouette + CollisionType=ECollisionType.COLLIDE_NoCollision + bStatic=false + bTickIsDisabled=true + bCollideActors=false + bBlockActors=false + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgStaticMeshActorTargeting.uc b/exported/TgGame/Classes/TgStaticMeshActorTargeting.uc new file mode 100755 index 00000000..4192c8f2 --- /dev/null +++ b/exported/TgGame/Classes/TgStaticMeshActorTargeting.uc @@ -0,0 +1,34 @@ +class TgStaticMeshActorTargeting extends StaticMeshActor + native(Pawns) + hidecategories(Navigation); + +defaultproperties +{ + // Reference: StaticMeshComponent'TgGame.Default__TgStaticMeshActorTargeting.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__StaticMeshActor.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + ReplacementPrimitive=none + bAllowApproximateOcclusion=false + bForceDirectLightMap=false + bUsePrecomputedShadows=false + BlockZeroExtent=false + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: TgSilhouetteComponent'TgGame.Default__TgStaticMeshActorTargeting.MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__StaticMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=StaticMeshComponent'TgGame.Default__TgStaticMeshActorTargeting.StaticMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + Components[0]=StaticMeshComponent0 + Components[1]=MySilhouette + bStatic=false + bHidden=true + bTickIsDisabled=true + bWorldGeometry=false + bBlockActors=false + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgStaticMeshActor_CapturePoint.uc b/exported/TgGame/Classes/TgStaticMeshActor_CapturePoint.uc new file mode 100755 index 00000000..453848e9 --- /dev/null +++ b/exported/TgGame/Classes/TgStaticMeshActor_CapturePoint.uc @@ -0,0 +1,86 @@ +class TgStaticMeshActor_CapturePoint extends StaticMeshActor + native(Pawns) + hidecategories(Navigation); + +var(capturePoint) const LinearColor UncontestedCaptureColor; +var(capturePoint) const LinearColor FriendlyCaptureColor; +var(capturePoint) const LinearColor EnemyCaptureColor; +var(capturePoint) const name EmissiveColorParameterName; +var(capturePoint) const name CapturePercentParameterName; +var transient array InitialMaterialList; +var const bool bInstancedAllMaterials; +var int CurrentCaptureStatus; +var float CurrentCapturePercent; + +// Export UTgStaticMeshActor_CapturePoint::execSetEmissiveColor(FFrame&, void* const) +native final function SetEmissiveColor(LinearColor NewColor, float fPercent, optional float fRampTime = 1.0000000); + +// Export UTgStaticMeshActor_CapturePoint::execSetCapturePercent(FFrame&, void* const) +native final function SetCapturePercent(float fNewPercent, optional float bRampTime = 1.0000000); + +final simulated event SetCaptureStatus(int nCaptureStatus, float fPercent) +{ + // End:0xCA + if(nCaptureStatus != CurrentCaptureStatus) + { + switch(nCaptureStatus) + { + // End:0x4E + case 1: + SetEmissiveColor(FriendlyCaptureColor, fPercent); + // End:0xA1 + break; + // End:0x73 + case 2: + SetEmissiveColor(EnemyCaptureColor, fPercent); + // End:0xA1 + break; + // End:0xFFFF + default: + SetEmissiveColor(UncontestedCaptureColor, 0.0000000); + fPercent = 0.0000000; + // End:0xA1 + break; + break; + } + CurrentCaptureStatus = nCaptureStatus; + CurrentCapturePercent = fPercent; + } + else + { + // End:0x119 + if((nCaptureStatus > 0) && fPercent != CurrentCapturePercent) + { + SetCapturePercent(fPercent); + CurrentCapturePercent = fPercent; + } + } + //return; +} + +defaultproperties +{ + UncontestedCaptureColor=(R=0.4100000,G=0.4100000,B=0.4100000,A=1.0000000) + FriendlyCaptureColor=(R=0.0400000,G=0.3300000,B=1.0000000,A=1.0000000) + EnemyCaptureColor=(R=1.2300000,G=0.1200000,B=0.0000000,A=1.0000000) + EmissiveColorParameterName="Emissive_Color" + CapturePercentParameterName="CapturePercent" + // Reference: StaticMeshComponent'TgGame.Default__TgStaticMeshActor_CapturePoint.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__StaticMeshActor.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + ReplacementPrimitive=none + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: TgSilhouetteComponent'TgGame.Default__TgStaticMeshActor_CapturePoint.MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__StaticMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=StaticMeshComponent'TgGame.Default__TgStaticMeshActor_CapturePoint.StaticMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + Components[0]=StaticMeshComponent0 + Components[1]=MySilhouette + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgStaticMeshActor_PantheonMIC.uc b/exported/TgGame/Classes/TgStaticMeshActor_PantheonMIC.uc new file mode 100755 index 00000000..6ae82d33 --- /dev/null +++ b/exported/TgGame/Classes/TgStaticMeshActor_PantheonMIC.uc @@ -0,0 +1,46 @@ +class TgStaticMeshActor_PantheonMIC extends TgStaticMeshActor + native(Pawns) + hidecategories(Navigation); + +var() MaterialInstanceConstant MICOverrides[GOD_PANTHEON]; +var() int m_nGameTaskForce; +var() int m_nTeamIndex; + +// Export UTgStaticMeshActor_PantheonMIC::execChangePantheonMIC(FFrame&, void* const) +native function ChangePantheonMIC(int nTaskForce, int nTeamIndex); + +simulated event PreBeginPlay() +{ + super(StaticMeshActor).PreBeginPlay(); + // End:0x46 + if((m_nGameTaskForce > 0) && m_nTeamIndex >= 0) + { + ChangePantheonMIC(m_nGameTaskForce, m_nTeamIndex); + } + //return; +} + +defaultproperties +{ + m_nGameTaskForce=-1 + m_nTeamIndex=-1 + // Reference: StaticMeshComponent'TgGame.Default__TgStaticMeshActor_PantheonMIC.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'TgGame.Default__TgStaticMeshActor.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + ReplacementPrimitive=none + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: TgSilhouetteComponent'TgGame.Default__TgStaticMeshActor_PantheonMIC.MySilhouette' + // Archetype: TgSilhouetteComponent'TgGame.Default__TgStaticMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=StaticMeshComponent'TgGame.Default__TgStaticMeshActor_PantheonMIC.StaticMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + Components[0]=StaticMeshComponent0 + Components[1]=MySilhouette + bRouteBeginPlayEvenIfStatic=true + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgStaticMeshActor_TeamColor.uc b/exported/TgGame/Classes/TgStaticMeshActor_TeamColor.uc new file mode 100755 index 00000000..034fce81 --- /dev/null +++ b/exported/TgGame/Classes/TgStaticMeshActor_TeamColor.uc @@ -0,0 +1,52 @@ +class TgStaticMeshActor_TeamColor extends StaticMeshActor + native(Pawns) + hidecategories(Navigation); + +var(TeamColoring) const int nTaskForce; +var(TeamColoring) const name TeamColoringParameterName; +var(TeamColoring) const bool bInvertColoringParameter; +var const bool bInstancedAllMaterials; +var byte bFriendlyWithLocalPlayer; +var transient array InitialMaterialList; + +// Export UTgStaticMeshActor_TeamColor::execForceRecalculateMaterial(FFrame&, void* const) +native function ForceRecalculateMaterial(); + +// Export UTgStaticMeshActor_TeamColor::execRecalculateMaterial(FFrame&, void* const) +native function RecalculateMaterial(bool bIsFriendlyWithLocalPawn, optional bool bForce); + +// Export UTgStaticMeshActor_TeamColor::execUpdateFriendlyFlag(FFrame&, void* const) +native final function UpdateFriendlyFlag(); + +simulated function NotifyLocalPlayerTeamReceived() +{ + super(Actor).NotifyLocalPlayerTeamReceived(); + UpdateFriendlyFlag(); + RecalculateMaterial(int(bFriendlyWithLocalPlayer) == int(1)); + //return; +} + +defaultproperties +{ + TeamColoringParameterName="Color_Switch" + bFriendlyWithLocalPlayer=2 + // Reference: StaticMeshComponent'TgGame.Default__TgStaticMeshActor_TeamColor.StaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'StaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__StaticMeshActor.StaticMeshComponent0' + begin object name="StaticMeshComponent0" + ReplacementPrimitive=none + end object + StaticMeshComponent=StaticMeshComponent0 + // Reference: TgSilhouetteComponent'TgGame.Default__TgStaticMeshActor_TeamColor.MySilhouette' + // Archetype: TgSilhouetteComponent'Engine.Default__StaticMeshActor.MySilhouette' + begin object name="MySilhouette" + MeshComponent=StaticMeshComponent'TgGame.Default__TgStaticMeshActor_TeamColor.StaticMeshComponent0' + ReplacementPrimitive=none + end object + Silhouette=MySilhouette + Components[0]=StaticMeshComponent0 + Components[1]=MySilhouette + bAlwaysInformOfTimelapse=true + CollisionComponent=StaticMeshComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgStaticMeshComponent.uc b/exported/TgGame/Classes/TgStaticMeshComponent.uc new file mode 100755 index 00000000..52fa424f --- /dev/null +++ b/exported/TgGame/Classes/TgStaticMeshComponent.uc @@ -0,0 +1,63 @@ +class TgStaticMeshComponent extends StaticMeshComponent + native(Pawns) + editinlinenew + hidecategories(Object); + +var bool c_bFxApplied; +var array c_FxList; +var array c_DatabaseFxList; +var array c_FxAssemblyData; +var int m_nAssemblyId; + +// Export UTgStaticMeshComponent::execFxAdd(FFrame&, void* const) +native function FxAdd(Object Fx); + +// Export UTgStaticMeshComponent::execFxRemove(FFrame&, void* const) +native function FxRemove(Object Fx); + +// Export UTgStaticMeshComponent::execFxGet(FFrame&, void* const) +native function Object FxGet(name nmGroup, int nMode, optional int nIndex, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgStaticMeshComponent::execFxGetAll(FFrame&, void* const) +native function array FxGetAll(name nmGroup, int nMode, optional int nIndex, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgStaticMeshComponent::execFxActivateGroup(FFrame&, void* const) +native function Object FxActivateGroup(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot, optional bool bIgnoreRelevancy, optional bool bFromEffectForm); + +// Export UTgStaticMeshComponent::execFxDeactivateGroup(FFrame&, void* const) +native function FxDeactivateGroup(name nmGroup, int nMode, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgStaticMeshComponent::execFxDeactivateAll(FFrame&, void* const) +native function FxDeactivateAll(optional int nEquipSlot); + +// Export UTgStaticMeshComponent::execFxSpawnTracer(FFrame&, void* const) +native function FxSpawnTracer(name nmGroup, int nMode, Vector HitLocation, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgStaticMeshComponent::execFxSpawnEmitter(FFrame&, void* const) +native function FxSpawnEmitter(name nmGroup, int nMode, Vector HitLocation, Vector HitNormal, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgStaticMeshComponent::execFxSpawnSound(FFrame&, void* const) +native function FxSpawnSound(name nmGroup, int nMode, Vector SoundLocation, optional int nSocketIndex, optional int nEquipSlot); + +// Export UTgStaticMeshComponent::execFxActivateIndependant(FFrame&, void* const) +native function Object FxActivateIndependant(name nmGroup, int nMode, Vector HitLocation, Vector HitNormal, optional int nSocketIndex, optional int nEquipSlot, optional bool bUseSocketOverride = true, optional array Params); + +// Export UTgStaticMeshComponent::execSwapMaterial(FFrame&, void* const) +native function SwapMaterial(MaterialInterface MI, optional bool bNoParamReaping); + +// Export UTgStaticMeshComponent::execSetDefaultSkin(FFrame&, void* const) +native function SetDefaultSkin(int nIndex); + +// Export UTgStaticMeshComponent::execGetDefaultMaterial(FFrame&, void* const) +native function MaterialInterface GetDefaultMaterial(int nIndex); + +// Export UTgStaticMeshComponent::execOnMeshSetHidden(FFrame&, void* const) +native function OnMeshSetHidden(bool bHidden); + +// Export UTgStaticMeshComponent::execRecalculateFx(FFrame&, void* const) +native function RecalculateFx(); + +defaultproperties +{ + ReplacementPrimitive=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSubtitledMessages.uc b/exported/TgGame/Classes/TgSubtitledMessages.uc new file mode 100755 index 00000000..6e8e422a --- /dev/null +++ b/exported/TgGame/Classes/TgSubtitledMessages.uc @@ -0,0 +1,96 @@ +class TgSubtitledMessages extends Object within TgPlayerController + native(Pawns); + +struct native QueuedSubtitle +{ + var bool CurrentlyPlaying; + var int SubtitleMessageId; + var string SubtitleText; + var AkBaseSoundObject SubtitleSound; + var int AkId; + + structdefaultproperties + { + CurrentlyPlaying=false + SubtitleMessageId=0 + SubtitleText="" + SubtitleSound=none + AkId=0 + } +}; + +var QueuedSubtitle CurrentSubtitle; +var array QueuedSubtitles; +var transient TgPlayerController OwnerPC; +var export editinline transient AudioComponent PlayingSubtitleAC; +var bool bFinishedSubtitle; +var float SubtitleFailsafeTime; + +// Export UTgSubtitledMessages::execPlaySubtitledMessage(FFrame&, void* const) +reliable client native simulated function PlaySubtitledMessage(int MessageId, optional bool PlayImmediately = false, optional bool FlushOthers = false, optional AkEvent CustomShutdownEvent); + +// Export UTgSubtitledMessages::execSubtitledCueEnded(FFrame&, void* const) +native function SubtitledCueEnded(AudioComponent AC); + +// Export UTgSubtitledMessages::execSubtitleFailsafe(FFrame&, void* const) +native function SubtitleFailsafe(); + +function Init() +{ + OwnerPC = Outer; + //return; +} + +function Destroyed() +{ + local AkEvent SubtitleEvent; + + // End:0x135 + if(CurrentSubtitle.CurrentlyPlaying && OwnerPC != none) + { + // End:0x96 + if(PlayingSubtitleAC != none) + { + PlayingSubtitleAC.Stop(); + OwnerPC.DetachComponent(PlayingSubtitleAC); + PlayingSubtitleAC = none; + } + else + { + SubtitleEvent = AkEvent(CurrentSubtitle.SubtitleSound); + // End:0x135 + if(SubtitleEvent != none) + { + // End:0x135 + if(SubtitleEvent.m_ShutdownEvent != none) + { + OwnerPC.PostAkEvent(SubtitleEvent.m_ShutdownEvent); + } + } + } + } + Outer.ClearTimer('SubtitleFailsafe'); + OwnerPC = none; + //return; +} + +event PlaySubtitleSoundCue(SoundCue CueToPlay) +{ + // End:0xD9 + if(PlayingSubtitleAC == none) + { + PlayingSubtitleAC = OwnerPC.CreateAudioComponent(CueToPlay, false, true); + PlayingSubtitleAC.bAllowSpatialization = false; + PlayingSubtitleAC.bAutoDestroy = false; + PlayingSubtitleAC.bShouldRemainActiveIfDropped = true; + PlayingSubtitleAC.__OnAudioFinished__Delegate = SubtitledCueEnded; + } + PlayingSubtitleAC.SoundCue = CueToPlay; + PlayingSubtitleAC.Play(); + //return; +} + +defaultproperties +{ + SubtitleFailsafeTime=30.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgSurvivalFogVolumeDensityInfo.uc b/exported/TgGame/Classes/TgSurvivalFogVolumeDensityInfo.uc new file mode 100755 index 00000000..ff1d4b55 --- /dev/null +++ b/exported/TgGame/Classes/TgSurvivalFogVolumeDensityInfo.uc @@ -0,0 +1,168 @@ +class TgSurvivalFogVolumeDensityInfo extends FogVolumeSphericalDensityInfo + hidecategories(Navigation,Collision) + autoexpandcategories(FogVolumeDensityInfo); + +var bool m_bFogOn; +var float m_fTargetStartDistance; +var float m_fPreviousStartDistance; +var float m_fFogUpdateTimestamp; +var float m_fFogUpdateInterval; +var float m_fConvergenceRate; +var float m_fFadeInRate; +var float m_fFadeOutRate; +var export editinline FogVolumeSphericalDensityComponent SphericalDensityComponent; + +event PostBeginPlay() +{ + super(FogVolumeDensityInfo).PostBeginPlay(); + // End:0xA8 + if(SphericalDensityComponent != none) + { + SphericalDensityComponent.SetViewOriginOverride(Location, SphericalDensityComponent.bUseViewOriginOverride); + // End:0xA8 + if(!SphericalDensityComponent.bEnabled) + { + SphericalDensityComponent.MaxDensity = 0.0000000; + } + } + m_bFogOn = bEnabled; + //return; +} + +function ToggleFog(bool bOn) +{ + local bool bShouldDisable; + + // End:0x13E + if(m_bFogOn != bOn) + { + // End:0x76 + if(bOn) + { + // End:0x5E + if(SphericalDensityComponent != none) + { + SphericalDensityComponent.SetEnabled(bOn); + } + bEnabled = bOn; + } + else + { + bShouldDisable = true; + // End:0x112 + if(SphericalDensityComponent != none) + { + bShouldDisable = !SphericalDensityComponent.bEnabled || SphericalDensityComponent.MaxDensity <= 0.0000000; + SphericalDensityComponent.SetEnabled(!bShouldDisable); + } + bEnabled = !bShouldDisable; + } + m_bFogOn = bOn; + } + //return; +} + +function ConvergeFog(float fNewStartDistance, float interval, optional bool bForce) +{ + m_fFogUpdateTimestamp = WorldInfo.TimeSeconds; + m_fFogUpdateInterval = interval; + m_fPreviousStartDistance = m_fTargetStartDistance; + m_fTargetStartDistance = fNewStartDistance; + // End:0x129 + if(((bForce || !bEnabled) && SphericalDensityComponent != none) && SphericalDensityComponent.StartDistance != m_fTargetStartDistance) + { + SphericalDensityComponent.StartDistance = fNewStartDistance; + // End:0x129 + if(SphericalDensityComponent.bEnabled) + { + SphericalDensityComponent.ForceUpdate(false); + } + } + //return; +} + +simulated function Tick(float DeltaTime) +{ + local bool bForceUpdate; + local float fTargetDensity; + + super(Actor).Tick(DeltaTime); + // End:0x295 + if(bEnabled && SphericalDensityComponent != none) + { + // End:0xEF + if((SphericalDensityComponent.StartDistance != m_fTargetStartDistance) && m_fFogUpdateInterval != float(0)) + { + SphericalDensityComponent.StartDistance = Lerp(m_fPreviousStartDistance, m_fTargetStartDistance, FClamp((WorldInfo.TimeSeconds - m_fFogUpdateTimestamp) / m_fFogUpdateInterval, 0.0000000, 1.0000000)); + bForceUpdate = true; + } + fTargetDensity = ((m_bFogOn) ? default.SphericalDensityComponent.MaxDensity : 0.0000000); + // End:0x1FD + if(SphericalDensityComponent.MaxDensity != fTargetDensity) + { + SphericalDensityComponent.MaxDensity = FInterpConstantTo(SphericalDensityComponent.MaxDensity, fTargetDensity, DeltaTime, ((m_bFogOn) ? m_fFadeInRate : m_fFadeOutRate) * default.SphericalDensityComponent.MaxDensity); + bForceUpdate = true; + } + // End:0x265 + if(!m_bFogOn && SphericalDensityComponent.MaxDensity <= 0.0000000) + { + SphericalDensityComponent.SetEnabled(false); + bEnabled = false; + } + else + { + // End:0x292 + if(bForceUpdate) + { + SphericalDensityComponent.ForceUpdate(false); + } + } + } + else + { + // End:0x2FB + if(bEnabled != m_bFogOn) + { + // End:0x2E6 + if(SphericalDensityComponent != none) + { + SphericalDensityComponent.SetEnabled(m_bFogOn); + } + bEnabled = m_bFogOn; + } + } + //return; +} + +defaultproperties +{ + m_fConvergenceRate=1.0000000 + m_fFadeInRate=0.2000000 + m_fFadeOutRate=0.5000000 + // Reference: FogVolumeSphericalDensityComponent'TgGame.Default__TgSurvivalFogVolumeDensityInfo.FogVolumeComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'FogVolumeComponent0' + // Archetype: FogVolumeSphericalDensityComponent'Engine.Default__FogVolumeSphericalDensityInfo.FogVolumeComponent0' + begin object name="FogVolumeComponent0" + MaxDensity=0.0060000 + bEnabled=false + bUseViewOriginOverride=true + StartDistance=13000.0000000 + end object + SphericalDensityComponent=FogVolumeComponent0 + DensityComponent=FogVolumeComponent0 + // Reference: StaticMeshComponent'TgGame.Default__TgSurvivalFogVolumeDensityInfo.AutomaticMeshComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'AutomaticMeshComponent0' + // Archetype: StaticMeshComponent'Engine.Default__FogVolumeSphericalDensityInfo.AutomaticMeshComponent0' + begin object name="AutomaticMeshComponent0" + ReplacementPrimitive=none + end object + AutomaticMeshComponent=AutomaticMeshComponent0 + Components[0]=none + Components[1]=AutomaticMeshComponent0 + Components[2]=none + Components[3]=FogVolumeComponent0 + DrawScale=156.0000000 + bNoDelete=false +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgTargetAimTrackingCurves.uc b/exported/TgGame/Classes/TgTargetAimTrackingCurves.uc new file mode 100755 index 00000000..394208ae --- /dev/null +++ b/exported/TgGame/Classes/TgTargetAimTrackingCurves.uc @@ -0,0 +1,40 @@ +class TgTargetAimTrackingCurves extends Object + native + editinlinenew + hidecategories(Object) + autoexpandcategories(TgTargetAimTrackingCurves); + +var() name SettingsName; +var() RawDistributionFloat StrengthByAccuracyX; +var() RawDistributionFloat StrengthByDesiredAngleX; +var() RawDistributionFloat StrengthByAccuracyY; +var() RawDistributionFloat StrengthByDesiredAngleY; + +defaultproperties +{ + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgTargetAimTrackingCurves.DistributionStrengthByAccuracyX' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStrengthByAccuracyX' + begin object name="DistributionStrengthByAccuracyX" class=Engine.DistributionFloatConstantCurve + end object + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgTargetAimTrackingCurves.DistributionStrengthByDesiredAngleX' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStrengthByDesiredAngleX' + begin object name="DistributionStrengthByDesiredAngleX" class=Engine.DistributionFloatConstantCurve + end object + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgTargetAimTrackingCurves.DistributionStrengthByAccuracyY' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStrengthByAccuracyY' + begin object name="DistributionStrengthByAccuracyY" class=Engine.DistributionFloatConstantCurve + end object + // Reference: DistributionFloatConstantCurve'TgGame.Default__TgTargetAimTrackingCurves.DistributionStrengthByDesiredAngleY' + // TemplateOwnerClass: none + // TemplateOwnerName: 'DistributionStrengthByDesiredAngleY' + begin object name="DistributionStrengthByDesiredAngleY" class=Engine.DistributionFloatConstantCurve + end object + SettingsName="UnnamedSetting" + StrengthByAccuracyX=(Distribution=Distribution=DistributionStrengthByAccuracyX,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StrengthByDesiredAngleX=(Distribution=Distribution=DistributionStrengthByDesiredAngleX,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StrengthByAccuracyY=(Distribution=Distribution=DistributionStrengthByAccuracyY,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) + StrengthByDesiredAngleY=(Distribution=Distribution=DistributionStrengthByDesiredAngleY,Type=0,Op=1,LookupTableNumElements=1,LookupTableChunkSize=1,LookupTable=(0.0000000,0.0000000,0.0000000,0.0000000),LookupTableTimeScale=0.0000000,LookupTableStartTime=0.0000000) +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgTeamBlocker.uc b/exported/TgGame/Classes/TgTeamBlocker.uc new file mode 100755 index 00000000..f854c29a --- /dev/null +++ b/exported/TgGame/Classes/TgTeamBlocker.uc @@ -0,0 +1,21 @@ +class TgTeamBlocker extends TgMeshAssembly + native(Navigation) + placeable + hidecategories(Navigation); + +var() bool m_bBlockFlagCarrier; +var() bool m_bBlockFriendlyFire; + +defaultproperties +{ + m_bBlockFlagCarrier=true + // Reference: DynamicLightEnvironmentComponent'TgGame.Default__TgTeamBlocker.MyLightEnvironment' + // TemplateOwnerClass: none + // TemplateOwnerName: 'MyLightEnvironment' + // Archetype: DynamicLightEnvironmentComponent'TgGame.Default__TgMeshAssembly.MyLightEnvironment' + begin object name="MyLightEnvironment" + end object + m_LightEnvironment=MyLightEnvironment + Components[0]=none + Components[1]=MyLightEnvironment +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgTeamPlayerStart.uc b/exported/TgGame/Classes/TgTeamPlayerStart.uc new file mode 100755 index 00000000..44895195 --- /dev/null +++ b/exported/TgGame/Classes/TgTeamPlayerStart.uc @@ -0,0 +1,139 @@ +class TgTeamPlayerStart extends TgStartPoint + native(Navigation) + hidecategories(Navigation,Lighting,LightColor,Force,Collision); + +const TG_MAX_DISTANCE_FOR_SPAWN_CALCULATION = 1600.0f; + +var() byte m_nTaskForce; +var() int m_nPriority; +var() int nPrevPriority; +var() float m_fMaxDistForEnemyCheckUU; +var() float m_fMaxWeightForEnemyDistanceCheck; +var() float m_fMaxDistForAllyCheckUU; +var() float m_fMinDistForAllyCheckUU; +var() float m_fMaxWeightForAllyDistanceCheck; +var() float m_fRandomRatingWeighting; +var() bool m_bInitialSpawnOnly; +var() bool m_bDisallowEnemyLOS; +var float m_fExtraHeightToTraceTo; +var editconst int m_nMinLevel; +var transient float m_fLastUsedTimeStamp; +var array s_AssignedPlayers; + +// Export UTgTeamPlayerStart::execLoadObjectConfig(FFrame&, void* const) +native function LoadObjectConfig(); + +// Export UTgTeamPlayerStart::execIsAssignedToPlayer(FFrame&, void* const) +native final function bool IsAssignedToPlayer(); + +// Export UTgTeamPlayerStart::execAreaUnoccupied(FFrame&, void* const) +native final function bool AreaUnoccupied(); + +// Export UTgTeamPlayerStart::execNativeGetRating(FFrame&, void* const) +native function float NativeGetRating(Controller Player, float fRating); + +event Destroyed() +{ + local int I; + local TgRepInfo_Player PRI; + + I = s_AssignedPlayers.Length - 1; + J0x17: + + // End:0xF2 [Loop If] + if(I >= 0) + { + PRI = s_AssignedPlayers[I]; + // End:0xE4 + if((((PRI != none) && PRI.r_SpawnPoint == self) && !PRI.bDeleteMe) && !PRI.IsPendingKill()) + { + PRI.SetSpawnPoint(none); + } + I--; + // [Loop Continue] + goto J0x17; + } + s_AssignedPlayers.Length = 0; + super(Actor).Destroyed(); + //return; +} + +event int GetSupportedTaskforce() +{ + local TgRepInfo_Game GRI; + + GRI = TgRepInfo_Game(WorldInfo.GRI); + // End:0x15D + if(GRI != none) + { + // End:0x151 + if((GRI.GameClass == Class'TgGame.TgGame_Paladins_Payload') || GRI.GameClass == Class'TgGame.TgGame_Paladins_Payload_Practice') + { + // End:0x151 + if(GRI.r_AttackingTaskForce != none) + { + // End:0x10B + if(int(m_nTaskForce) == int(1)) + { + return int(GRI.r_AttackingTaskForce.r_nTaskForce); + } + else + { + // End:0x14F + if(int(GRI.r_AttackingTaskForce.r_nTaskForce) == int(1)) + { + return 2; + } + else + { + return 1; + } + } + } + } + return int(m_nTaskForce); + } + //return ReturnValue; +} + +simulated function float GetRating(Controller Player) +{ + return NativeGetRating(Player, super.GetRating(Player)); + //return ReturnValue; +} + +simulated function OnSetTaskforce(TgSeqAct_SetTaskforce Action) +{ + m_nTaskForce = byte(Action.TaskForceNumber); + //return; +} + +defaultproperties +{ + m_nPriority=-1 + nPrevPriority=-1 + m_fMaxDistForEnemyCheckUU=4800.0000000 + m_fMaxWeightForEnemyDistanceCheck=500.0000000 + m_fMaxDistForAllyCheckUU=4800.0000000 + m_fMinDistForAllyCheckUU=256.0000000 + m_fMaxWeightForAllyDistanceCheck=500.0000000 + m_fRandomRatingWeighting=2000.0000000 + m_fExtraHeightToTraceTo=50.0000000 + m_fStartRating=1.0000000 + m_fCurrentRating=1.0000000 + m_fResetRating=1.0000000 + // Reference: CylinderComponent'TgGame.Default__TgTeamPlayerStart.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'TgGame.Default__TgStartPoint.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgTeleportPlayerVolume.uc b/exported/TgGame/Classes/TgTeleportPlayerVolume.uc new file mode 100755 index 00000000..d8cf89fe --- /dev/null +++ b/exported/TgGame/Classes/TgTeleportPlayerVolume.uc @@ -0,0 +1,93 @@ +class TgTeleportPlayerVolume extends Volume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +enum TgTeleportVolumeType +{ + Inactive, // 0 + Respawn, // 1 + TgTeleportVolumeType_MAX // 2 +}; + +var() TgTeleportPlayerVolume.TgTeleportVolumeType TeleportLocation; +var() int nMessageId; +var() bool bTeleportBots; +var() bool bTeleportPlayers; + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn Pawn; + local TgPlayerController PC; + local TgAIController aic; + local NavigationPoint navPoint; + local Rotator Rot; + local Vector Loc; + local bool bTeleport; + + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + bTeleport = false; + Pawn = TgPawn(Other); + // End:0x1AE + if(Pawn != none) + { + PC = TgPlayerController(Pawn.Controller); + aic = TgAIController(Pawn.Controller); + switch(TeleportLocation) + { + // End:0x1AB + case 1: + navPoint = WorldInfo.Game.FindPlayerStart(Pawn.Controller); + // End:0x1A8 + if(navPoint != none) + { + Loc = navPoint.Location; + Rot = navPoint.Rotation; + bTeleport = true; + } + // End:0x1AE + break; + // End:0xFFFF + default: + break; + } + } + else + { + bTeleport = bTeleport && (bTeleportBots && aic != none) || bTeleportPlayers && PC != none; + // End:0x2F7 + if(bTeleport) + { + Pawn.SetLocation(Loc); + Pawn.SetRotation(Rot); + // End:0x2F7 + if(PC != none) + { + Pawn.SetDesiredRotation(Rot); + PC.ClientSetRotationAndDesired(Rot); + // End:0x2F7 + if(nMessageId > 0) + { + PC.AddAlertScript(2, 4, 5.0000000, nMessageId, true); + } + } + } + //return; + } +} + +defaultproperties +{ + TeleportLocation=TgTeleportVolumeType.Respawn + bTeleportBots=true + bTeleportPlayers=true + // Reference: BrushComponent'TgGame.Default__TgTeleportPlayerVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgTeleporter.uc b/exported/TgGame/Classes/TgTeleporter.uc new file mode 100755 index 00000000..9bb2e2a2 --- /dev/null +++ b/exported/TgGame/Classes/TgTeleporter.uc @@ -0,0 +1,117 @@ +class TgTeleporter extends Teleporter + native(Navigation) + hidecategories(Navigation,Lighting,LightColor,Force); + +var(Object) int m_nMapObjectId; +var(MapInstance) int m_nMapId; +var(MapInstance) bool m_nPreload; +var(Taskforce) bool m_bSetTaskForce; +var(Taskforce) bool m_bBalanceTaskForce; +var(Taskforce) bool m_bIgnoreNonMembers; +var(Taskforce) bool m_bUsePlayerStart; +var(Taskforce) bool m_bRequestMission; +var() byte m_nStartGroup; +var(Taskforce) byte m_nTaskForce; + +// Export UTgTeleporter::execHandlePostTouch(FFrame&, void* const) +native function bool HandlePostTouch(Actor Other); + +// Export UTgTeleporter::execLoadObjectConfig(FFrame&, void* const) +native function LoadObjectConfig(); + +simulated function PreBeginPlay() +{ + super(Actor).PreBeginPlay(); + LoadObjectConfig(); + //return; +} + +function PostBeginPlay() +{ + // End:0x3B + if((URL ~= "") && m_bUsePlayerStart) + { + URL = "UsingPlayerStart"; + } + super.PostBeginPlay(); + //return; +} + +simulated function PostTouch(Actor Other) +{ + // End:0x30 + if((InStr(URL, "/") >= 0) || InStr(URL, "#") >= 0) + { + } + // End:0x59 + if(HandlePostTouch(Other)) + { + super.PostTouch(Other); + } + //return; +} + +event bool UsePlayerStart(Actor Other) +{ + local NavigationPoint Start; + local Rotator NewRot; + local Pawn P; + + P = Pawn(Other); + // End:0x2D + if(P == none) + { + return false; + } + // End:0xB6 + if(int(m_nStartGroup) != int(0)) + { + Start = TgGame(WorldInfo.Game).FindPlayerGroupStart(P.Controller, int(m_nStartGroup)); + } + else + { + Start = WorldInfo.Game.FindPlayerStart(P.Controller); + } + // End:0x125 + if(Start == none) + { + return true; + } + NewRot.Yaw = Start.Rotation.Yaw; + // End:0x1B0 + if(!P.SetLocation(Start.Location)) + { + return true; + } + P.SetRotation(NewRot); + P.SetViewRotation(NewRot); + P.ClientSetRotation(NewRot); + // End:0x2CE + if(P.Controller != none) + { + P.Controller.MoveTimer = -1.0000000; + P.SetAnchor(Start); + P.SetMoveTarget(Start); + } + P.PlayTeleportEffect(false, true); + return false; + //return ReturnValue; +} + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgTeleporter.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Teleporter.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgTimeDilationVolume.uc b/exported/TgGame/Classes/TgTimeDilationVolume.uc new file mode 100755 index 00000000..e466871d --- /dev/null +++ b/exported/TgGame/Classes/TgTimeDilationVolume.uc @@ -0,0 +1,158 @@ +class TgTimeDilationVolume extends PhysicsVolume + hidecategories(Navigation,Object,Movement,Display); + +var float m_fTimeMultiplier; +var bool m_bAffectInstigator; +var array m_AffectedActors; +var array m_AffectedPawns; + +simulated event PostBeginPlay() +{ + local Actor Touched; + + super.PostBeginPlay(); + // End:0x42 + foreach Touching(Touched) + { + Touched.SetZone(false); + } + //return; +} + +event ActorEnteredVolume(Actor Other) +{ + // End:0x35 + if((Other == none) || Other.bStatic) + { + return; + } + // End:0xBC + if(((Other != Instigator) || m_bAffectInstigator) && m_AffectedActors.Find(Other) == -1) + { + Other.CustomTimeDilation *= m_fTimeMultiplier; + m_AffectedActors.AddItem(Other); + } + //return; +} + +event ActorLeavingVolume(Actor Other) +{ + // End:0x35 + if((Other == none) || Other.bStatic) + { + return; + } + // End:0xBC + if(((Other != Instigator) || m_bAffectInstigator) && m_AffectedActors.Find(Other) != -1) + { + Other.CustomTimeDilation /= m_fTimeMultiplier; + m_AffectedActors.RemoveItem(Other); + } + //return; +} + +event PawnEnteredVolume(Pawn Other) +{ + local TgPawn OtherTgPawn; + + // End:0x35 + if((Other == none) || Other.bStatic) + { + return; + } + // End:0x14D + if(((Other != Instigator) || m_bAffectInstigator) && m_AffectedPawns.Find(Other) == -1) + { + OtherTgPawn = TgPawn(Other); + // End:0x10E + if(OtherTgPawn != none) + { + OtherTgPawn.AdjustDevicesForNewDilation(OtherTgPawn.CustomTimeDilation, OtherTgPawn.CustomTimeDilation * m_fTimeMultiplier); + } + Other.CustomTimeDilation *= m_fTimeMultiplier; + m_AffectedPawns.AddItem(Other); + } + //return; +} + +event PawnLeavingVolume(Pawn Other) +{ + local TgPawn OtherTgPawn; + + // End:0x35 + if((Other == none) || Other.bStatic) + { + return; + } + // End:0x14D + if(((Other != Instigator) || m_bAffectInstigator) && m_AffectedPawns.Find(Other) != -1) + { + OtherTgPawn = TgPawn(Other); + // End:0x10E + if(OtherTgPawn != none) + { + OtherTgPawn.AdjustDevicesForNewDilation(OtherTgPawn.CustomTimeDilation, OtherTgPawn.CustomTimeDilation / m_fTimeMultiplier); + } + Other.CustomTimeDilation /= m_fTimeMultiplier; + m_AffectedPawns.RemoveItem(Other); + } + //return; +} + +event Destroyed() +{ + local int I; + + I = m_AffectedActors.Length - 1; + J0x17: + + // End:0x51 [Loop If] + if(I >= 0) + { + ActorLeavingVolume(m_AffectedActors[I]); + I--; + // [Loop Continue] + goto J0x17; + } + I = m_AffectedPawns.Length - 1; + J0x68: + + // End:0xA2 [Loop If] + if(I >= 0) + { + PawnLeavingVolume(m_AffectedPawns[I]); + I--; + // [Loop Continue] + goto J0x68; + } + //return; +} + +defaultproperties +{ + m_fTimeMultiplier=0.2500000 + bMoveProjectiles=true + // Reference: BrushComponent'TgGame.Default__TgTimeDilationVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__PhysicsVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + // Reference: CylinderComponent'TgGame.Default__TgTimeDilationVolume.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + begin object name="CollisionCylinder" class=Engine.CylinderComponent + CollisionHeight=200.0000000 + CollisionRadius=480.0000000 + ReplacementPrimitive=none + CollideActors=true + end object + Components[0]=CollisionCylinder + bStatic=false + bNoDelete=false + bReplicateInstigator=true + bSkipActorPropertyReplication=false + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgTimerManager.uc b/exported/TgGame/Classes/TgTimerManager.uc new file mode 100755 index 00000000..2305b81b --- /dev/null +++ b/exported/TgGame/Classes/TgTimerManager.uc @@ -0,0 +1,101 @@ +class TgTimerManager extends Object + native; + +const TGT_MAX_TIMERS = 32; + +enum TGT_EVENT +{ + TGTE_DONE, // 0 + TGTE_START, // 1 + TGTE_UPDATE, // 2 + TGTE_PAUSED, // 3 + TGTE_MAX // 4 +}; + +struct native TGT_REG_LINK +{ + var Pointer NextLink; + var Object RegObject; + var Function RegFunction; + + structdefaultproperties + { + NextLink=() + RegObject=none + RegFunction=none + } +}; + +struct native TgTimerData +{ + var int nIndex; + var byte byTimer; + var float fStartTime; + var float fRemaining; + var bool bRepeat; + var bool bPausedByGame; + var float Rate; + var TGT_REG_LINK CallbackRegistry; + + structdefaultproperties + { + nIndex=0 + byTimer=0 + fStartTime=0.0000000 + fRemaining=0.0000000 + bRepeat=false + bPausedByGame=false + Rate=1.0000000 + CallbackRegistry=(NextLink=(),RegObject=none,RegFunction=none) + } +}; + +var private native const noexport Pointer VfTable_FTickableObject; +var init native map{VOID,VOID} m_TimerMap; +var protected bool m_bActive; +var protected bool m_bGameWasPaused; + +// Export UTgTimerManager::execStart(FFrame&, void* const) +native function bool Start(int byTimerIndex, float fTime, optional bool bRepeat = false, optional bool bPausedByGame = true, optional float Rate = 1.0000000); + +// Export UTgTimerManager::execUpdate(FFrame&, void* const) +native function bool Update(int byTimerIndex, float fTime, optional float fTimeInitial = -1.0000000, optional float Rate = 1.0000000); + +// Export UTgTimerManager::execPause(FFrame&, void* const) +native function bool Pause(int byTimerIndex, float fTime); + +// Export UTgTimerManager::execClose(FFrame&, void* const) +native function bool Close(int byTimerIndex, optional bool bFireEvent = true); + +// Export UTgTimerManager::execIsSet(FFrame&, void* const) +native simulated function bool IsSet(int byTimerIndex); + +// Export UTgTimerManager::execIsPaused(FFrame&, void* const) +native simulated function bool IsPaused(int byTimerIndex); + +// Export UTgTimerManager::execGetTimeElapsed(FFrame&, void* const) +native simulated function float GetTimeElapsed(int byTimerIndex); + +// Export UTgTimerManager::execGetTimeRemaining(FFrame&, void* const) +native simulated function float GetTimeRemaining(int byTimerIndex); + +// Export UTgTimerManager::execGetPercentRemaining(FFrame&, void* const) +native simulated function float GetPercentRemaining(int byTimerIndex); + +// Export UTgTimerManager::execGetTimeInitial(FFrame&, void* const) +native simulated function float GetTimeInitial(int byTimerIndex); + +// Export UTgTimerManager::execSetRate(FFrame&, void* const) +native simulated function SetRate(int TimerIndex, float Rate); + +// Export UTgTimerManager::execRegisterForEvents(FFrame&, void* const) +native simulated function bool RegisterForEvents(int byTimerIndex, Object HostObject, name nmFunc); + +// Export UTgTimerManager::execUnRegisterForEvents(FFrame&, void* const) +native simulated function bool UnRegisterForEvents(int byTimerIndex, Object HostObject); + +// Export UTgTimerManager::execIsActiveTimers(FFrame&, void* const) +native simulated function bool IsActiveTimers(); + +// Export UTgTimerManager::execCloseAllTimers(FFrame&, void* const) +native simulated function CloseAllTimers(optional bool bFireEvent = true); diff --git a/exported/TgGame/Classes/TgTrigger_AIControlledCharacters.uc b/exported/TgGame/Classes/TgTrigger_AIControlledCharacters.uc new file mode 100755 index 00000000..b952c268 --- /dev/null +++ b/exported/TgGame/Classes/TgTrigger_AIControlledCharacters.uc @@ -0,0 +1,25 @@ +class TgTrigger_AIControlledCharacters extends Trigger + native(Kismet) + hidecategories(Navigation); + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgTrigger_AIControlledCharacters.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Trigger.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + // Reference: SpriteComponent'TgGame.Default__TgTrigger_AIControlledCharacters.Sprite' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Sprite' + // Archetype: SpriteComponent'Engine.Default__Trigger.Sprite' + begin object name="Sprite" + ReplacementPrimitive=none + end object + Components[0]=Sprite + Components[1]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgTrigger_Instance.uc b/exported/TgGame/Classes/TgTrigger_Instance.uc new file mode 100755 index 00000000..43a2fdb3 --- /dev/null +++ b/exported/TgGame/Classes/TgTrigger_Instance.uc @@ -0,0 +1,42 @@ +class TgTrigger_Instance extends Trigger + native(Kismet) + hidecategories(Navigation); + +var(MapInstance) editinline int m_nMapId; +var(MapInstance) editinline bool m_nPreload; +var(MapInstance) editinline bool m_nTaskForce; +var(MapInstance) editinline string m_SpawnPointName; + +// Export UTgTrigger_Instance::execHandleTouch(FFrame&, void* const) +native function HandleTouch(Actor Other, Vector HitLocation, Vector HitNormal); + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + super.Touch(Other, OtherComp, HitLocation, HitNormal); + HandleTouch(Other, HitLocation, HitNormal); + //return; +} + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgTrigger_Instance.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Trigger.CollisionCylinder' + begin object name="CollisionCylinder" + CollisionHeight=96.0000000 + CollisionRadius=5000.0000000 + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + // Reference: SpriteComponent'TgGame.Default__TgTrigger_Instance.Sprite' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Sprite' + // Archetype: SpriteComponent'Engine.Default__Trigger.Sprite' + begin object name="Sprite" + ReplacementPrimitive=none + end object + Components[0]=Sprite + Components[1]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgTrigger_PlayerControlledCharacters.uc b/exported/TgGame/Classes/TgTrigger_PlayerControlledCharacters.uc new file mode 100755 index 00000000..f9058e71 --- /dev/null +++ b/exported/TgGame/Classes/TgTrigger_PlayerControlledCharacters.uc @@ -0,0 +1,25 @@ +class TgTrigger_PlayerControlledCharacters extends Trigger + native(Kismet) + hidecategories(Navigation); + +defaultproperties +{ + // Reference: CylinderComponent'TgGame.Default__TgTrigger_PlayerControlledCharacters.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Trigger.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + // Reference: SpriteComponent'TgGame.Default__TgTrigger_PlayerControlledCharacters.Sprite' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Sprite' + // Archetype: SpriteComponent'Engine.Default__Trigger.Sprite' + begin object name="Sprite" + ReplacementPrimitive=none + end object + Components[0]=Sprite + Components[1]=CollisionCylinder + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgTrigger_Use.uc b/exported/TgGame/Classes/TgTrigger_Use.uc new file mode 100755 index 00000000..58635ef8 --- /dev/null +++ b/exported/TgGame/Classes/TgTrigger_Use.uc @@ -0,0 +1,106 @@ +class TgTrigger_Use extends Trigger + native(Kismet) + hidecategories(Navigation); + +var() editinline string m_sDisplayText; +var() editinline string m_sInactiveText; +var() editinline int m_nInteractDistance; +var() editinline bool m_bAimToInteract; +var() editinline int m_nDisplayMsgId; +var() editinline int m_nInactiveMsgId; + +// Export UTgTrigger_Use::execUsedByPawn(FFrame&, void* const) +native function UsedByPawn(TgPawn User); + +// Export UTgTrigger_Use::execIsUsedEnabled(FFrame&, void* const) +native function bool IsUsedEnabled(); + +// Export UTgTrigger_Use::execGetMsgIdToDisplay(FFrame&, void* const) +native function int GetMsgIdToDisplay(); + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPawn P; + local bool bTriggerUsed, foundTouch; + local Actor A; + + foundTouch = false; + // End:0x4B + foreach TouchingActors(Class'Engine.Actor', A) + { + // End:0x4A + if(A == Other) + { + foundTouch = true; + // End:0x4B + break; + } + } + // End:0x5D + if(!foundTouch) + { + return; + } + P = TgPawn(Other); + // End:0x8A + if(P == none) + { + return; + } + bTriggerUsed = true; + // End:0xE8 + if(m_bAimToInteract) + { + bTriggerUsed = P.Controller.IsAimingAt(self, 0.9800000); + } + // End:0x116 + if(bTriggerUsed) + { + P.SetTriggerToUse(self, true); + } + //return; +} + +simulated event UnTouch(Actor Other) +{ + local TgPawn P; + + P = TgPawn(Other); + // End:0x2D + if(P == none) + { + return; + } + // End:0x72 + if(P.m_CurrentUseActor == self) + { + P.SetTriggerToUse(self, false); + } + //return; +} + +defaultproperties +{ + m_bAimToInteract=true + // Reference: CylinderComponent'TgGame.Default__TgTrigger_Use.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__Trigger.CollisionCylinder' + begin object name="CollisionCylinder" + CollisionHeight=96.0000000 + CollisionRadius=128.0000000 + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + // Reference: SpriteComponent'TgGame.Default__TgTrigger_Use.Sprite' + // TemplateOwnerClass: none + // TemplateOwnerName: 'Sprite' + // Archetype: SpriteComponent'Engine.Default__Trigger.Sprite' + begin object name="Sprite" + ReplacementPrimitive=none + end object + Components[0]=Sprite + Components[1]=CollisionCylinder + CollisionComponent=CollisionCylinder + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgTutorialAnnouncer.uc b/exported/TgGame/Classes/TgTutorialAnnouncer.uc new file mode 100755 index 00000000..a03140f4 --- /dev/null +++ b/exported/TgGame/Classes/TgTutorialAnnouncer.uc @@ -0,0 +1,40 @@ +class TgTutorialAnnouncer extends Object within TgPlayerController; + +var array TutorialSounds; +var transient array QueuedSounds; +var export editinline transient AudioComponent CurrentSoundAC; +var transient TgPlayerController OwnerPC; + +function Init() +{ + OwnerPC = Outer; + //return; +} + +function Destroyed() +{ + // End:0x48 + if((CurrentSoundAC != none) && OwnerPC != none) + { + OwnerPC.DetachComponent(CurrentSoundAC); + } + CurrentSoundAC = none; + OwnerPC = none; + //return; +} + +function AudioFinishedPlaying(AudioComponent AC) +{ + // End:0x35 + if(QueuedSounds.Length > 0) + { + PlayAnnouncement(0, QueuedSounds[0]); + QueuedSounds.Remove(0, 1); + } + //return; +} + +function PlayAnnouncement(int SoundIndex, SoundCue OptionalCue, optional bool bPlayImmediately = false, optional bool bFlushOthers = false) +{ + //return; +} diff --git a/exported/TgGame/Classes/TgTutorialInfo.uc b/exported/TgGame/Classes/TgTutorialInfo.uc new file mode 100755 index 00000000..03920d02 --- /dev/null +++ b/exported/TgGame/Classes/TgTutorialInfo.uc @@ -0,0 +1,142 @@ +class TgTutorialInfo extends Actor + placeable + hidecategories(Navigation); + +var() float fButtonHoldTime; +var() float fVolumeStandTime; +var() float fBotRespawnTime; +var() float fBotTargetsKilledWaitTime; +var() float fPlayerTeamCaptureMultiplier; +var() float fRepeatInstructionTime; +var() float fExtendedRepeatInstructionTime; +var() float fIntroExtensionTime; +var() float fBotDelayTravelToMovementTime; +var() float fBotDelayTravelToUltRangeTime; +var() float fPayloadContestPercent; +var() float fLanePusherGroundSpeed; +var() float fEnergyChargeMultiplier; +var() TgTutorialVolume ApproachHelperArea; +var() TgTutorialVolume AutoShootingRangeStandingTargetArea; +var() TgTutorialVolume UltimateShootingRangeStandingTargetArea; +var() TgTutorialVolume JumpLowerArea; +var() TgTutorialVolume JumpUpperArea; +var() TgBotFactory HelperBotFactory; +var() TgBotFactory AutoBotFactory; +var() TgBotFactory MultipleAutoBotFactory; +var() TgBotFactory BattleAbilityBotFactory; +var() TgBotFactory AltAbilityBotFactory; +var() TgBotFactory UltimateChargeBotFactory; +var() TgBotFactory UltimateAbilityBotFactory; +var() TgBotFactory ContestCapturePointBotFactory; +var() TgBotFactory ContestPayloadBotsFactory; +var() Actor HelperMoveTargetAutoRange; +var() Actor HelperMoveTargetMovementAbility; +var() Actor HelperMoveTargetUltRange; +var() Actor EndGameFocus; +var TgAIController_Behavior HelperBotController; + +function SpawnHelperBot() +{ + local TgPawn TgP; + + // End:0xA0 + if(HelperBotFactory != none) + { + HelperBotFactory.ResetQueue(); + TgP = TgPawn(HelperBotFactory.UseSpawnTable()); + // End:0xA0 + if(TgP != none) + { + HelperBotController = TgAIController_Behavior(TgP.Controller); + } + } + //return; +} + +function DestroyHelperBot() +{ + // End:0x83 + if(HelperBotController != none) + { + // End:0x60 + if(HelperBotController.Pawn != none) + { + HelperBotController.Pawn.Destroy(); + } + HelperBotController.Destroy(); + HelperBotController = none; + } + //return; +} + +function bool HelperIsNavigatingToOrAtDestination(Actor Destination) +{ + local Vector ProjectedDestination, PawnX, PawnY, PawnZ; + + // End:0x204 + if(((Destination != none) && HelperBotController != none) && HelperBotController.Pawn != none) + { + GetAxes(HelperBotController.Pawn.Rotation, PawnX, PawnY, PawnZ); + ProjectedDestination = PointProjectToPlane(Destination.Location, HelperBotController.Pawn.Location, HelperBotController.Pawn.Location + PawnX, HelperBotController.Pawn.Location + PawnY); + // End:0x204 + if((VSizeSq(HelperBotController.Pawn.Location - ProjectedDestination) < 5000.0000000) || HelperBotController.CurrentNavigation.TargetActor == Destination) + { + return true; + } + } + return false; + //return ReturnValue; +} + +function MoveHelperToActor(Actor Destination) +{ + local Vector ZeroVector; + + // End:0x15C + if((Destination != none) && HelperBotController != none) + { + HelperBotController.ScriptedMoveTarget = Destination; + HelperBotController.StopNavigation(); + HelperBotController.Focus = GetALocalPlayerController().Pawn; + HelperBotController.EscortActor = GetALocalPlayerController().Pawn; + HelperBotController.SetFocalPoint(ZeroVector); + HelperBotController.AddActorToNavigationQueue(1048581, Destination, true, true, HelperBotController.DeviceRanges[0]); + } + //return; +} + +function TeleportHelperToActor(Actor Destination) +{ + local Pawn HelperPawn; + + // End:0xB2 + if(HelperBotController != none) + { + HelperPawn = HelperBotController.Pawn; + // End:0xB2 + if(HelperPawn != none) + { + HelperPawn.SetLocation(Destination.Location); + HelperPawn.SetRotation(Destination.Rotation); + } + } + //return; +} + +defaultproperties +{ + fButtonHoldTime=0.5000000 + fVolumeStandTime=0.7500000 + fBotRespawnTime=0.7500000 + fBotTargetsKilledWaitTime=0.5000000 + fPlayerTeamCaptureMultiplier=0.8500000 + fRepeatInstructionTime=8.0000000 + fExtendedRepeatInstructionTime=16.0000000 + fIntroExtensionTime=4.2000000 + fBotDelayTravelToMovementTime=1.5000000 + fBotDelayTravelToUltRangeTime=1.5000000 + fPayloadContestPercent=0.6500000 + fLanePusherGroundSpeed=1000.0000000 + fEnergyChargeMultiplier=7.0000000 + Components[0]=none +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgTutorialVolume.uc b/exported/TgGame/Classes/TgTutorialVolume.uc new file mode 100755 index 00000000..67926fd7 --- /dev/null +++ b/exported/TgGame/Classes/TgTutorialVolume.uc @@ -0,0 +1,65 @@ +class TgTutorialVolume extends Volume + hidecategories(Navigation,Object,Movement,Display); + +var bool m_bHasLocalPawn; +var bool m_bHasSeenLocalPawnBefore; + +event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + local TgPlayerController TgPC; + + // End:0x7F + if(!m_bHasLocalPawn) + { + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x7F + if(TgPC != none) + { + // End:0x7F + if(TgPC.Pawn == Other) + { + m_bHasLocalPawn = true; + m_bHasSeenLocalPawnBefore = true; + } + } + } + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + //return; +} + +event UnTouch(Actor Other) +{ + local TgPlayerController TgPC; + + // End:0x71 + if(m_bHasLocalPawn) + { + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x71 + if(TgPC != none) + { + // End:0x71 + if(TgPC.Pawn == Other) + { + m_bHasLocalPawn = false; + } + } + } + super(Actor).UnTouch(Other); + //return; +} + +defaultproperties +{ + bPawnsOnly=true + // Reference: BrushComponent'TgGame.Default__TgTutorialVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgVisibilityVolume.uc b/exported/TgGame/Classes/TgVisibilityVolume.uc new file mode 100755 index 00000000..99adc120 --- /dev/null +++ b/exported/TgGame/Classes/TgVisibilityVolume.uc @@ -0,0 +1,62 @@ +class TgVisibilityVolume extends Volume + native(Volumes) + hidecategories(Navigation,Object,Movement,Display); + +var(PlayerCameraEffects) ParticleSystem m_PlayerCameraParticleSystem; +var(PlayerCameraEffects) ParticleSystem m_PlayerCameraInvisibleParticleSystem; + +simulated event Touch(Actor Other, PrimitiveComponent OtherComp, Vector HitLocation, Vector HitNormal) +{ + super(Actor).Touch(Other, OtherComp, HitLocation, HitNormal); + // End:0x7D + if(Other.IsA('TgPawn')) + { + TgPawn(Other).AddVisibilityVolume(self); + } + else + { + // End:0xC9 + if(Other.IsA('TgRespawnBeaconExit')) + { + TgRespawnBeaconExit(Other).AddVisibilityVolume(self); + } + } + //return; +} + +simulated event UnTouch(Actor Other) +{ + super(Actor).UnTouch(Other); + // End:0x62 + if(Other.IsA('TgPawn')) + { + TgPawn(Other).RemoveVisibilityVolume(self); + } + else + { + // End:0xAE + if(Other.IsA('TgRespawnBeaconExit')) + { + TgRespawnBeaconExit(Other).RemoveVisibilityVolume(self); + } + } + //return; +} + +defaultproperties +{ + m_PlayerCameraParticleSystem=ParticleSystem'FX_Env_Atmosphere.Particles.FX_Hidden_Area_1P_CAM' + m_PlayerCameraInvisibleParticleSystem=ParticleSystem'FX_Env_Atmosphere.Particles.FX_Hidden_1P_CAM' + // Reference: BrushComponent'TgGame.Default__TgVisibilityVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + BlockZeroExtent=true + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 + SupportedEvents=/* Array type was not detected. */ +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgVolume.uc b/exported/TgGame/Classes/TgVolume.uc new file mode 100755 index 00000000..2395b061 --- /dev/null +++ b/exported/TgGame/Classes/TgVolume.uc @@ -0,0 +1,16 @@ +class TgVolume extends Volume + hidecategories(Navigation,Object,Movement,Display); + +defaultproperties +{ + // Reference: BrushComponent'TgGame.Default__TgVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__Volume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgVolumePathNode.uc b/exported/TgGame/Classes/TgVolumePathNode.uc new file mode 100755 index 00000000..27b4b394 --- /dev/null +++ b/exported/TgGame/Classes/TgVolumePathNode.uc @@ -0,0 +1,28 @@ +class TgVolumePathNode extends VolumePathNode + native + hidecategories(Navigation,Lighting,LightColor,Force); + +var() editconst bool m_bIsAboveGround; +var() editconst Vector m_vGroundHitLocation; +var() float m_fGroundTraceDistance; +var export editinline SpriteComponent m_GroundSprite; + +defaultproperties +{ + m_fGroundTraceDistance=999999.0000000 + // Reference: CylinderComponent'TgGame.Default__TgVolumePathNode.CollisionCylinder' + // TemplateOwnerClass: none + // TemplateOwnerName: 'CollisionCylinder' + // Archetype: CylinderComponent'Engine.Default__VolumePathNode.CollisionCylinder' + begin object name="CollisionCylinder" + ReplacementPrimitive=none + end object + CylinderComponent=CollisionCylinder + Components[0]=none + Components[1]=none + Components[2]=none + Components[3]=CollisionCylinder + Components[4]=none + Components[5]=none + CollisionComponent=CollisionCylinder +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWaterVolume.uc b/exported/TgGame/Classes/TgWaterVolume.uc new file mode 100755 index 00000000..93db6e69 --- /dev/null +++ b/exported/TgGame/Classes/TgWaterVolume.uc @@ -0,0 +1,17 @@ +class TgWaterVolume extends WaterVolume + hidecategories(Navigation,Object,Movement,Display); + +defaultproperties +{ + TerminalVelocity=1500.0000000 + // Reference: BrushComponent'TgGame.Default__TgWaterVolume.BrushComponent0' + // TemplateOwnerClass: none + // TemplateOwnerName: 'BrushComponent0' + // Archetype: BrushComponent'Engine.Default__WaterVolume.BrushComponent0' + begin object name="BrushComponent0" + ReplacementPrimitive=none + end object + BrushComponent=BrushComponent0 + Components[0]=BrushComponent0 + CollisionComponent=BrushComponent0 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor.uc b/exported/TgGame/Classes/TgWeaponMeshActor.uc new file mode 100755 index 00000000..3890fa13 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor.uc @@ -0,0 +1,2048 @@ +class TgWeaponMeshActor extends Actor + native + notplaceable + hidecategories(Navigation); + +const TG_EQP_POINT_MAX = 33; + +enum TG_PLAY_FIRE_EFFECT_ON +{ + START_FIRE, // 0 + Fire, // 1 + NEVER, // 2 + TG_PLAY_FIRE_EFFECT_ON_MAX // 3 +}; + +enum EFirstPersonWeaponAttachState +{ + FPAS_NeedsUpdate, // 0 + FPAS_Attached, // 1 + FPAS_Detached, // 2 + FPAS_MAX // 3 +}; + +struct native QueuedImpactEffect +{ + var Vector HitLocation; + var bool bSuccessfulHit; + var Actor HitActor; + var Vector HitNormal; + var Vector FireOrigin; + var int nEquipSlot; + + structdefaultproperties + { + HitLocation=(X=0.0000000,Y=0.0000000,Z=0.0000000) + bSuccessfulHit=false + HitActor=none + HitNormal=(X=0.0000000,Y=0.0000000,Z=0.0000000) + FireOrigin=(X=0.0000000,Y=0.0000000,Z=0.0000000) + nEquipSlot=0 + } +}; + +var TgPawn m_OwningPawn; +var const Class m_WeaponMesh1PClass; +var export editinline TgSkeletalMeshComponent_Weapon m_WeaponMesh1P; +var const Class m_WeaponMesh3PClass; +var export editinline TgSkeletalMeshComponent_Weapon m_WeaponMesh3P; +var array m_SimpleTransitionerNodes1P; +var array m_DeviceModeBlendNodes; +var array m_FitToDurationNodes; +var array m_PaladinsCharacterNodes; +var array m_TriggerCameraAnimNodes; +var TgAnimNodeSlot PoseTransitioner; +var array m_PawnMeshSimpleTransitionerNodes; +var array m_PawnMeshFitToDurationNodes; +var array m_PawnMeshPaladinsCharacterNodes; +var array m_PawnMeshTriggerCameraAnimNodes; +var int m_nEquipSlot; +var int m_nDeviceId; +var int m_MeshAsmId1P; +var int m_MeshAsmId3P; +var Class m_WeaponClass; +var TgWeaponMeshActor.TG_PLAY_FIRE_EFFECT_ON m_PlayFireEffectsOn[33]; +var TgObject.TG_EQUIP_POINT m_ActiveEquipPoint; +var transient TgWeaponMeshActor.EFirstPersonWeaponAttachState Current1pAttachState; +var bool m_bShouldLoopingMuzzleTrace; +var bool m_bUseSocketForCameraAttach; +var bool m_bProceduralBob; +var protected bool m_bIsFOVZoomed; +var bool m_bFlourishBlocked; +var transient bool m_bIsHoldingBeacon; +var bool m_bWasViewTargetLastTick; +var bool m_bUseCameraAnims; +var bool c_bEnemyMatLoaded; +var export editinline TgSkeletalMeshComponent m_HandsMesh; +var export editinline TgSkeletalMeshComponent m_HeadMesh1P; +var Vector2D m_v2WeaponLagAimOffset; +var(WeaponLag) Vector2D m_nMaxWeaponLag; +var(WeaponLag) Vector2D m_v2WeaponLagInterpSpeed; +var(WeaponLag) Vector2D m_v2WeaponLagSmoothingFactor; +var Rotator m_rLastRotation; +var() editinline TgCameraShake m_FireCameraShake; +var int m_nTracerCounter; +var() int m_nTracerFrequency; +var name m_TracerName; +var float m_fTracerLifetime; +var name m_HitTargetName; +var name m_HitWallName; +var() float m_BeamEmitterEndPointOffset; +var const int m_nBeaconMeshId; +var array m_HitReactionSkelControls; +var array m_QueuedImpactEffects; + +// Export UTgWeaponMeshActor::execGetMeshAsmIds(FFrame&, void* const) +native static function GetMeshAsmIds(int DeviceID, out int MeshId1P, out int MeshId3P); + +// Export UTgWeaponMeshActor::execGetWeaponClassById(FFrame&, void* const) +native static function string GetWeaponClassById(int DeviceID); + +// Export UTgWeaponMeshActor::execUpdateReticule(FFrame&, void* const) +native function UpdateReticule(); + +// Export UTgWeaponMeshActor::execUpdateHandsMesh(FFrame&, void* const) +native function UpdateHandsMesh(); + +// Export UTgWeaponMeshActor::execUpdateHeadMesh1P(FFrame&, void* const) +native function UpdateHeadMesh1P(); + +// Export UTgWeaponMeshActor::execNativeInit(FFrame&, void* const) +native function NativeInit(byte EquipPoint, int DeviceID); + +// Export UTgWeaponMeshActor::execGetDefaultDevice(FFrame&, void* const) +native function TgDevice GetDefaultDevice(); + +// Export UTgWeaponMeshActor::execIsFriendlyWithLocalPawn(FFrame&, void* const) +native function bool IsFriendlyWithLocalPawn(); + +// Export UTgWeaponMeshActor::execForceRecalculateMaterial(FFrame&, void* const) +native function ForceRecalculateMaterial(); + +// Export UTgWeaponMeshActor::execRecalculateMaterial(FFrame&, void* const) +native function RecalculateMaterial(bool bIsFriendlyWithLocalPawn, optional bool bForce); + +// Export UTgWeaponMeshActor::execSetLocationForWeapon(FFrame&, void* const) +native final function SetLocationForWeapon(Vector NewLocation, Actor OwningPawn); + +// Export UTgWeaponMeshActor::execCheckOcclusion(FFrame&, void* const) +native function float CheckOcclusion(); + +// Export UTgWeaponMeshActor::execGetFxOverrideFor(FFrame&, void* const) +native function int GetFxOverrideFor(int nBaseFXID); + +simulated event PostBeginPlay() +{ + super.PostBeginPlay(); + c_bEnemyMatLoaded = !IsFriendlyWithLocalPawn(); + //return; +} + +simulated function bool IsFirstPerson() +{ + local TgPawn TgP; + + TgP = TgPawn(Owner); + // End:0x4B + if(TgP != none) + { + return TgP.IsFirstPerson(); + } + return false; + //return ReturnValue; +} + +simulated event Destroyed() +{ + ClearEquipPoint(0); + super.Destroyed(); + //return; +} + +simulated function ClearEquipPoint(byte EquipPoint) +{ + local TgPawn TgP; + + TgP = TgPawn(Owner); + // End:0x55 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.DetachFromAny(); + m_WeaponMesh1P = none; + } + // End:0xED + if(m_WeaponMesh3P != none) + { + // End:0xC3 + if(TgP != none) + { + TgP.RemoveOverlayInfo(m_WeaponMesh3P); + TgP.RemoveSilhouetteInfo(m_WeaponMesh3P); + } + m_WeaponMesh3P.DetachFromAny(); + m_WeaponMesh3P = none; + } + //return; +} + +simulated function InitializeForWeapon(byte EquipPoint, int DeviceID, optional bool bClearEquipPoint = true) +{ + // End:0x25 + if(bClearEquipPoint) + { + ClearEquipPoint(EquipPoint); + } + GetMeshAsmIds(DeviceID, m_MeshAsmId1P, m_MeshAsmId3P); + Initialize1P(EquipPoint, DeviceID); + Initialize3P(EquipPoint, DeviceID); + //return; +} + +simulated function FixUpReferencesToWeaponMesh1P(SkeletalMeshComponent WeaponMesh) +{ + local TgAnimBlendByPaladinsCharacter PaladinsCharNode; + local TgAnimNodeTriggerCameraAnim TriggerCameraAnimNode; + local TgAnimBlendByFireMode FireModeNode; + local TgAnimNodeFitToDuration FitToDurationNode; + local TgAnimNodeSimpleTransitioner SimpleTransitionerNode; + local TgAnimNodeAimOffset AimOffset; + local TgAnimNodeSlot PoseNode; + local AnimNode AnimNode; + + m_SimpleTransitionerNodes1P.Length = 0; + m_FitToDurationNodes.Length = 0; + m_DeviceModeBlendNodes.Length = 0; + m_PaladinsCharacterNodes.Length = 0; + m_TriggerCameraAnimNodes.Length = 0; + PoseTransitioner = none; + // End:0x2AA + foreach WeaponMesh.AllAnimNodes(Class'Engine.AnimNode', AnimNode) + { + PaladinsCharNode = TgAnimBlendByPaladinsCharacter(AnimNode); + TriggerCameraAnimNode = TgAnimNodeTriggerCameraAnim(AnimNode); + SimpleTransitionerNode = TgAnimNodeSimpleTransitioner(AnimNode); + AimOffset = TgAnimNodeAimOffset(AnimNode); + PoseNode = TgAnimNodeSlot(AnimNode); + FireModeNode = TgAnimBlendByFireMode(AnimNode); + FitToDurationNode = TgAnimNodeFitToDuration(AnimNode); + // End:0x167 + if(SimpleTransitionerNode != none) + { + m_SimpleTransitionerNodes1P.AddItem(SimpleTransitionerNode); + // End:0x2A9 + continue; + } + // End:0x1BA + if((PoseNode != none) && PoseNode.NodeName == 'TransitionSlot') + { + PoseTransitioner = PoseNode; + // End:0x2A9 + continue; + } + // End:0x1EC + if(AimOffset != none) + { + AimOffset.m_WeaponMeshActor = self; + // End:0x2A9 + continue; + } + // End:0x214 + if(FireModeNode != none) + { + m_DeviceModeBlendNodes.AddItem(FireModeNode); + // End:0x2A9 + continue; + } + // End:0x23C + if(FitToDurationNode != none) + { + m_FitToDurationNodes.AddItem(FitToDurationNode); + // End:0x2A9 + continue; + } + // End:0x284 + if(PaladinsCharNode != none) + { + PaladinsCharNode.m_WeaponMeshActor = self; + m_PaladinsCharacterNodes.AddItem(PaladinsCharNode); + // End:0x2A9 + continue; + } + // End:0x2A9 + if(TriggerCameraAnimNode != none) + { + m_TriggerCameraAnimNodes.AddItem(TriggerCameraAnimNode); + } + } + CacheHitReactionSkelControls(); + //return; +} + +simulated function FixUpReferencesToPawnMesh(SkeletalMeshComponent PawnMesh) +{ + local TgAnimBlendByPaladinsCharacter PaladinsCharNode; + local TgAnimNodeTriggerCameraAnim TriggerCameraAnimNode; + local TgAnimNodeSimpleTransitioner SimpleTransitionerNode; + local TgAnimNodeFitToDuration FitToDurationNode; + local AnimNode AnimNode; + + m_PawnMeshSimpleTransitionerNodes.Length = 0; + m_PawnMeshFitToDurationNodes.Length = 0; + m_PawnMeshPaladinsCharacterNodes.Length = 0; + m_PawnMeshTriggerCameraAnimNodes.Length = 0; + // End:0x172 + foreach PawnMesh.AllAnimNodes(Class'Engine.AnimNode', AnimNode) + { + SimpleTransitionerNode = TgAnimNodeSimpleTransitioner(AnimNode); + PaladinsCharNode = TgAnimBlendByPaladinsCharacter(AnimNode); + TriggerCameraAnimNode = TgAnimNodeTriggerCameraAnim(AnimNode); + FitToDurationNode = TgAnimNodeFitToDuration(AnimNode); + // End:0xFC + if(SimpleTransitionerNode != none) + { + m_PawnMeshSimpleTransitionerNodes.AddItem(SimpleTransitionerNode); + // End:0x171 + continue; + } + // End:0x124 + if(PaladinsCharNode != none) + { + m_PawnMeshPaladinsCharacterNodes.AddItem(PaladinsCharNode); + // End:0x171 + continue; + } + // End:0x14C + if(TriggerCameraAnimNode != none) + { + m_PawnMeshTriggerCameraAnimNodes.AddItem(TriggerCameraAnimNode); + // End:0x171 + continue; + } + // End:0x171 + if(FitToDurationNode != none) + { + m_PawnMeshFitToDurationNodes.AddItem(FitToDurationNode); + } + } + //return; +} + +simulated function Initialize1P(byte EquipPoint, int DeviceID, optional int MeshAsmId1P = -1) +{ + local int I; + local TgPawn InstPawn; + + // End:0x2B + if(MeshAsmId1P < 0) + { + MeshAsmId1P = m_MeshAsmId1P; + } + // End:0x3C + if(MeshAsmId1P <= 0) + { + return; + } + InstPawn = TgPawn(Instigator); + // End:0x69 + if(InstPawn == none) + { + return; + } + // End:0xD0 + if((m_WeaponMesh1P != none) && m_WeaponMesh1P.Class != m_WeaponMesh1PClass) + { + m_WeaponMesh1P.DetachFromAny(); + m_WeaponMesh1P = none; + } + // End:0x18B + if((m_WeaponMesh1P == none) && m_WeaponMesh1PClass != none) + { + m_WeaponMesh1P = new (self) m_WeaponMesh1PClass; + m_WeaponMesh1P.SetLightEnvironment(TgPawn(Instigator).LightEnvironment); + m_WeaponMesh1P.SetFOV(m_WeaponClass.default.m_fMeshFOV); + } + // End:0x19C + if(m_WeaponMesh1P == none) + { + return; + } + InstPawn.CreateMeshComponent(MeshAsmId1P, m_WeaponMesh1P, true); + NativeInit(EquipPoint, DeviceID); + FixUpReferencesToWeaponMesh1P(m_WeaponMesh1P); + I = 0; + J0x208: + + // End:0x29B [Loop If] + if(I < 33) + { + // End:0x28D + if(InstPawn.c_EquipForm[I] != none) + { + InstPawn.c_EquipForm[I].Cache1PAnimNodes(m_WeaponMesh1P); + } + I++; + // [Loop Continue] + goto J0x208; + } + InstPawn.InitializeOverlayMeshComponent(m_WeaponMesh1P, true); + m_WeaponMesh1P.CompleteInitialization(); + //return; +} + +simulated event PostInitAnimTree(SkeletalMeshComponent SkelComp) +{ + local int I; + local TgPawn InstPawn; + local editinline TgSkeletalMeshComponent TgSkelComp; + + super.PostInitAnimTree(SkelComp); + // End:0x3D + if((m_WeaponMesh1P != none) && m_WeaponMesh1P != SkelComp) + { + return; + } + FixUpReferencesToWeaponMesh1P(SkelComp); + InstPawn = TgPawn(Instigator); + TgSkelComp = TgSkeletalMeshComponent(SkelComp); + // End:0xAA + if((InstPawn == none) || TgSkelComp == none) + { + return; + } + I = 0; + J0xB5: + + // End:0x148 [Loop If] + if(I < 33) + { + // End:0x13A + if(InstPawn.c_EquipForm[I] != none) + { + InstPawn.c_EquipForm[I].Cache1PAnimNodes(TgSkelComp); + } + I++; + // [Loop Continue] + goto J0xB5; + } + //return; +} + +simulated function Initialize3P(byte EquipPoint, int DeviceID) +{ + local TgPawn TgP; + + TgP = TgPawn(Owner); + // End:0x53 + if((TgP == none) || TgP.Mesh == none) + { + return; + } + FixUpReferencesToPawnMesh(TgP.Mesh); + // End:0x124 + if(m_WeaponMesh3P != none) + { + TgP.RemoveOverlayInfo(m_WeaponMesh3P); + TgP.RemoveSilhouetteInfo(m_WeaponMesh3P); + m_WeaponMesh3P.DetachFromAny(); + m_WeaponMesh3P.SetParentAnimComponent(none); + m_WeaponMesh3P = none; + } + // End:0x38A + if((m_WeaponMesh3PClass != none) && m_MeshAsmId3P > 0) + { + m_WeaponMesh3P = new (TgP) m_WeaponMesh3PClass; + TgP.AttachComponent(m_WeaponMesh3P); + m_WeaponMesh3P.bUseBoundsFromParentAnimComponent = false; + // End:0x213 + if(int(TgP.c_LocalPolymorph) == int(0)) + { + m_WeaponMesh3P.SetParentAnimComponent(TgP.Mesh); + } + TgP.CreateMeshComponent(m_MeshAsmId3P, m_WeaponMesh3P); + m_WeaponMesh3P.SetLightEnvironment(TgP.Mesh.LightEnvironment); + m_WeaponMesh3P.SetShadowParent(TgP.Mesh); + m_WeaponMesh3P.m_bForceHideComponent = int(TgP.c_LocalPolymorph) > int(0); + TgP.InitializeSilhouetteComponent(m_WeaponMesh3P); + TgP.InitializeOverlayMeshComponent(m_WeaponMesh3P); + m_WeaponMesh3P.CompleteInitialization(); + } + TgP.AddRemoveAnimSetList(TgP.c_EquipForm[int(EquipPoint)].c_PawnAnimSetOverrideList, true); + //return; +} + +simulated event SetActiveWeapon(byte EquipPoint, int DeviceID, Class WeaponClass, WeaponMeshSwapStrategy SwapStrategy) +{ + // End:0x22 + if(m_WeaponMesh1P != none) + { + DetachComponent(m_WeaponMesh1P); + } + m_nEquipSlot = int(EquipPoint); + m_nDeviceId = DeviceID; + m_WeaponClass = WeaponClass; + InitializeForWeapon(EquipPoint, DeviceID, SwapStrategy.bClearEquipPoint); + // End:0xB8 + if(m_WeaponMesh1P != none) + { + AttachComponent(m_WeaponMesh1P); + } + m_ActiveEquipPoint = EquipPoint; + UpdateReticule(); + // End:0x1F4 + if(m_WeaponClass != none) + { + // End:0x113 + if(m_WeaponClass.default.m_bParentAnimComponentHands) + { + UpdateHandsMesh(); + } + else + { + // End:0x16C + if(m_HandsMesh != none) + { + m_HandsMesh.DetachFromAny(); + m_HandsMesh.SetOwnerNoSee(true); + m_HandsMesh = none; + } + } + // End:0x19B + if(m_WeaponClass.default.m_bParentAnimComponent1PHead) + { + UpdateHeadMesh1P(); + } + else + { + // End:0x1F4 + if(m_HeadMesh1P != none) + { + m_HeadMesh1P.DetachFromAny(); + m_HeadMesh1P.SetOwnerNoSee(true); + m_HeadMesh1P = none; + } + } + } + // End:0x22E + if(int(SwapStrategy.RetrieveStrategy) > int(0)) + { + PlayRetrieve(SwapStrategy); + } + Current1pAttachState = 0; + //return; +} + +simulated function PlayPutaway(TgObject.TG_EQUIP_POINT eqp, int DeviceID, Class WeaponClass) +{ + local TgAnimBlendByPaladinsCharacter PaladinsCharNode; + + // End:0x52 + foreach m_PaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnPutAway(eqp, DeviceID, WeaponClass); + } + // End:0xA5 + foreach m_PawnMeshPaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnPutAway(eqp, DeviceID, WeaponClass); + } + //return; +} + +simulated function PlayRetrieve(WeaponMeshSwapStrategy SwapStrategy) +{ + local TgAnimBlendByPaladinsCharacter PaladinsCharNode; + + // End:0x37 + foreach m_PaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnRetrieve(); + } + //return; +} + +simulated function OnBehindViewUpdated(bool bNewBehindView) +{ + // End:0x86 + if(bNewBehindView) + { + // End:0x47 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.FxDeactivateGroup('AlwaysOn', 0); + } + // End:0x83 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.FxActivateGroup('AlwaysOn', 0); + } + } + else + { + // End:0xC2 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.FxActivateGroup('AlwaysOn', 0); + } + // End:0xFC + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.FxDeactivateGroup('AlwaysOn', 0); + } + } + //return; +} + +// Export UTgWeaponMeshActor::execSet1PAttachState(FFrame&, void* const) +native final simulated function Set1PAttachState(TgWeaponMeshActor.EFirstPersonWeaponAttachState NewAttachState); + +simulated function Toggle1PVisibility(bool bVisible) +{ + local bool bVisibilityChanged; + local TgPawn TgP; + + bVisibilityChanged = false; + // End:0x7C + if(m_WeaponMesh1P != none) + { + bVisibilityChanged = bVisible == m_WeaponMesh1P.bOwnerNoSee; + m_WeaponMesh1P.SetOwnerNoSee(!bVisible); + } + // End:0xB6 + if(m_HandsMesh != none) + { + m_HandsMesh.SetOwnerNoSee(!bVisible); + } + // End:0xF0 + if(m_HeadMesh1P != none) + { + m_HeadMesh1P.SetOwnerNoSee(!bVisible); + } + // End:0x18E + if((bVisible && bVisibilityChanged) && m_bWasViewTargetLastTick) + { + PlayWeaponQuickRetrieve(); + TgP = TgPawn(Owner); + // End:0x18E + if(TgP != none) + { + TgP.UpdateOverlayVisibilityBody(); + TgP.UpdateOverlayVisibilityWeapon(); + } + } + //return; +} + +simulated exec function PlayWeaponQuickRetrieve() +{ + local TgAnimBlendByPaladinsCharacter PaladinsCharNode; + + // End:0x37 + foreach m_PaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnRetrieve(); + } + //return; +} + +simulated function ToggleHoldingBeacon(bool bHolding) +{ + // End:0x168 + if(m_bIsHoldingBeacon != bHolding) + { + // End:0x153 + if(m_nBeaconMeshId > 0) + { + // End:0xB8 + if(bHolding) + { + Initialize1P(byte(m_nEquipSlot), m_nDeviceId, m_nBeaconMeshId); + // End:0xB5 + if(m_HandsMesh != none) + { + m_HandsMesh.DetachFromAny(); + m_HandsMesh.SetParentAnimComponent(none); + m_HandsMesh = none; + } + } + else + { + Initialize1P(byte(m_nEquipSlot), m_nDeviceId); + // End:0x114 + if((m_WeaponClass != none) && m_WeaponClass.default.m_bParentAnimComponentHands) + { + UpdateHandsMesh(); + } + } + // End:0x153 + if((m_WeaponMesh1P != none) && !m_WeaponMesh1P.bOwnerNoSee) + { + PlayWeaponQuickRetrieve(); + } + } + m_bIsHoldingBeacon = bHolding; + } + //return; +} + +simulated function bool CanUseCameraBone() +{ + // End:0x0F + if(m_bUseCameraAnims) + { + return false; + } + // End:0x20 + if(m_WeaponMesh1P == none) + { + return false; + } + // End:0x54 + if(m_WeaponMesh1P.MatchRefBone('Camera_bn') == -1) + { + return false; + } + return true; + //return ReturnValue; +} + +simulated function Tick(float DeltaTime) +{ + super.Tick(DeltaTime); + UpdateTransform(DeltaTime); + //return; +} + +simulated function UpdateTransform(float DeltaTime, optional bool bFromCameraUpdate = false) +{ + local TgPawn TgP; + local Vector WeaponBob, ViewOffset, ViewLoc; + local float BobAmount, PreviewFOV; + local TgPlayerController TgPC, localPC; + local bool bNewOwnerNoSee; + local editinline TgSkeletalMeshComponent CurrentSkelMesh1P; + local Rotator NewRotation; + local int I; + local TgCameraModule_ThirdPerson CameraModule; + + TgP = TgPawn(Owner); + // End:0x43 + if((TgP == none) || m_WeaponMesh1P == none) + { + return; + } + // End:0x98 + if(!WorldInfo.IsPlayingTimelapse()) + { + TgPC = TgPlayerController(TgP.Controller); + } + // End:0xB6 + if(Base == none) + { + SetBase(TgP); + } + CurrentSkelMesh1P = m_WeaponMesh1P; + localPC = TgPlayerController(GetALocalPlayerController()); + // End:0xB5A + if(TgP.ShouldBeFirstPersonThisTick()) + { + // End:0x196 + if(localPC != none) + { + bNewOwnerNoSee = (TgCameraModule_ThirdPerson(localPC.GetCurrentCameraModule()) != none) && TgCameraModule_ThirdPerson(localPC.GetCurrentCameraModule()).fZoomFactorInterp > 0.0500000; + } + Set1PAttachState(1); + Toggle1PVisibility(!bNewOwnerNoSee); + // End:0x269 + filtereditoronly + { + ViewOffset.X += @NULL.X; + ViewOffset.Y += @NULL.Y; + ViewOffset.Z += @NULL.Z; + } + // End:0x2DE + if(!CanUseCameraBone()) + { + NewRotation = localPC.PlayerCamera.CameraCache.POV.Rotation; + } + else + { + // End:0x32D + if(TgPC != none) + { + NewRotation = TgP.Controller.Rotation; + } + else + { + NewRotation = TgP.Rotation; + NewRotation.Pitch = TgP.m_nSmoothedRemoteViewPitch; + } + } + // End:0x3C7 + if(m_WeaponClass != none) + { + BobAmount = m_WeaponClass.default.m_fWeaponBob; + } + AddWeaponLeading(NewRotation, m_rLastRotation, DeltaTime); + m_rLastRotation = NewRotation; + // End:0x545 + if(m_bProceduralBob) + { + // End:0x423 + filtereditoronly + { + BobAmount += @NULL; + } + TgP.UpdateBob(DeltaTime); + WeaponBob = BobAmount * TgP.WalkBob; + ViewOffset.X += WeaponBob.X; + ViewOffset.Y += WeaponBob.Y; + ViewOffset.Z += ((0.4500000 + (0.5500000 * BobAmount)) * WeaponBob.Z); + } + ViewOffset = ViewOffset >> NewRotation; + // End:0x6F2 + filtereditoronly + { + // End:0x6F2 + if(@NULL != float(0)) + { + PreviewFOV = @NULL; + // End:0x5C3 + if(m_WeaponClass != none) + { + PreviewFOV += m_WeaponClass.default.m_fMeshFOV; + } + // End:0x628 + if((m_WeaponMesh1P != none) && m_WeaponMesh1P.FOV != PreviewFOV) + { + m_WeaponMesh1P.SetFOV(PreviewFOV); + } + // End:0x68D + if((m_HandsMesh != none) && m_HandsMesh.FOV != PreviewFOV) + { + m_HandsMesh.SetFOV(PreviewFOV); + } + // End:0x6F2 + if((m_HeadMesh1P != none) && m_HeadMesh1P.FOV != PreviewFOV) + { + m_HeadMesh1P.SetFOV(PreviewFOV); + } + } + } + // End:0x8CD + if(!CanUseCameraBone()) + { + // End:0x8CA + if(bFromCameraUpdate) + { + ViewLoc = localPC.PlayerCamera.CameraCache.POV.Location; + SetLocationForWeapon(ViewLoc + ViewOffset, Owner); + SetRotation(NewRotation); + CurrentSkelMesh1P.ForceUpdate(true); + I = 0; + J0x7CF: + + // End:0x85C [Loop If] + if(I < CurrentSkelMesh1P.Attachments.Length) + { + CurrentSkelMesh1P.Attachments[I].Component.ForceUpdate(true); + I++; + // [Loop Continue] + goto J0x7CF; + } + m_HandsMesh.ForceUpdate(true); + // End:0x8AB + if(m_HeadMesh1P != none) + { + m_HeadMesh1P.ForceUpdate(true); + } + TgP.ForceUpdate1PMeshes(); + } + } + else + { + // End:0x990 + if((m_bUseSocketForCameraAttach && TgP.IsAliveAndWell()) && CanUseCameraBone()) + { + ViewLoc = TgP.Location; + ViewLoc.Z += TgP.BaseEyeHeight; + SetLocationForWeapon(ViewLoc, Owner); + } + else + { + // End:0xAA1 + if(TgPC != none) + { + CameraModule = TgCameraModule_ThirdPerson(TgPC.GetCurrentCameraModule()); + // End:0xA7A + if(CameraModule != none) + { + ViewLoc = (CameraModule.GetCamAttachPoint(TgP) + CameraModule.GetCamLocationOffset(TgPC.Rotation, TgP)) + TgP.WalkBob; + } + SetLocationForWeapon(ViewLoc + ViewOffset, Owner); + } + } + // End:0xADE + if(TgPC != none) + { + SetRotation(ApplyRotationModifier(TgPC.Rotation)); + } + else + { + NewRotation = TgP.Rotation; + NewRotation.Pitch = TgP.m_nSmoothedRemoteViewPitch; + SetRotation(ApplyRotationModifier(NewRotation)); + } + } + } + else + { + Set1PAttachState(2); + Toggle1PVisibility(false); + } + CurrentSkelMesh1P.bUpdateSkelWhenNotRendered = (localPC != none) && localPC.GetViewTarget() == TgP; + CurrentSkelMesh1P.bTickAnimNodesWhenNotRendered = CurrentSkelMesh1P.bUpdateSkelWhenNotRendered; + // End:0xC98 + if(m_HandsMesh != none) + { + m_HandsMesh.bUpdateSkelWhenNotRendered = CurrentSkelMesh1P.bUpdateSkelWhenNotRendered; + m_HandsMesh.bTickAnimNodesWhenNotRendered = CurrentSkelMesh1P.bTickAnimNodesWhenNotRendered; + } + // End:0xD25 + if(m_HeadMesh1P != none) + { + m_HeadMesh1P.bUpdateSkelWhenNotRendered = CurrentSkelMesh1P.bUpdateSkelWhenNotRendered; + m_HeadMesh1P.bTickAnimNodesWhenNotRendered = CurrentSkelMesh1P.bTickAnimNodesWhenNotRendered; + } + UpdateBeamEffects(int(m_ActiveEquipPoint)); + // End:0xD8F + if(localPC != none) + { + m_bWasViewTargetLastTick = (localPC.GetViewTarget() == Owner) && Owner != none; + } + //return; +} + +simulated function Rotator ApplyRotationModifier(Rotator inRot) +{ + return inRot; + //return ReturnValue; +} + +simulated function GetAllFireLoopParticleSystemComponents(out array FireLoopParticles, optional int nEquipSlot = 1) +{ + // End:0x46 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.super(TgWeaponMeshActor).GetAllFireLoopParticleSystemComponents(FireLoopParticles, nEquipSlot); + } + // End:0x87 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.super(TgWeaponMeshActor).GetAllFireLoopParticleSystemComponents(FireLoopParticles, nEquipSlot); + } + //return; +} + +simulated function UpdateBeamEffects(int nEquipSlotToUpdate) +{ + local Vector HitLocation; + local bool bHasEndPoint; + + // End:0x1A + if(!ShouldUpdateBeamEffects(nEquipSlotToUpdate)) + { + return; + } + bHasEndPoint = GetAccurateBeamTarget(HitLocation, nEquipSlotToUpdate); + // End:0x77 + if(!bHasEndPoint) + { + bHasEndPoint = GetSimulatedBeamTarget(HitLocation, nEquipSlotToUpdate); + } + UpdateFireLoopBeamParams(bHasEndPoint, HitLocation, nEquipSlotToUpdate); + //return; +} + +simulated function bool ShouldUpdateBeamEffects(int nEquipSlot) +{ + return ((m_WeaponMesh1P != none) && m_WeaponMesh1P.IsFireLoopActive(nEquipSlot)) || (m_WeaponMesh3P != none) && m_WeaponMesh3P.IsFireLoopActive(nEquipSlot); + //return ReturnValue; +} + +simulated function UpdateFireLoopBeamParams(bool bHasEndPoint, Vector HitLocation, optional int nEquipSlot = 1) +{ + local int I; + local editinline array FireLoopParticles; + local editinline ParticleSystemComponent Particle; + + // End:0xEF + if(bHasEndPoint) + { + GetAllFireLoopParticleSystemComponents(FireLoopParticles, nEquipSlot); + // End:0xEE + foreach FireLoopParticles(Particle) + { + Particle.SetVectorParameter('beamEnd', HitLocation); + I = 0; + J0x81: + + // End:0xED [Loop If] + if(I < Particle.EmitterInstances.Length) + { + Particle.SetBeamEndPoint(I, HitLocation); + I++; + // [Loop Continue] + goto J0x81; + } + } + } + //return; +} + +simulated function bool GetAccurateBeamTarget(out Vector HitLocation, int nEquipSlot) +{ + local AimData Aim; + local Vector POVLoc; + local Rotator POVRot, AimRot; + local TgPawn TgP; + local TgDevice TgD; + + TgP = TgPawn(Owner); + // End:0x2D + if(TgP == none) + { + return false; + } + TgD = TgP.GetDeviceByEqPoint(nEquipSlot); + // End:0x70 + if(TgD == none) + { + return false; + } + // End:0x1C7 + if(m_bShouldLoopingMuzzleTrace) + { + TgD.GetTargetingAim(Aim); + // End:0x1C7 + if(Aim.bResult) + { + Aim.EndTrace = Aim.StartTrace + (VSize(Aim.EndTrace - Aim.StartTrace) * Aim.AimVector); + // End:0x1C7 + if(TgD.GetCurrentFire() != none) + { + HitLocation = TgD.CalcWeaponFire(Aim).HitLocation; + return true; + } + } + } + Aim.StartTrace = TgP.GetWeaponStartTraceLocation(TgD); + TgP.GetAdjustedAimNative(TgD, Aim.StartTrace, AimRot); + // End:0x377 + if((TgP.Controller != none) && TgD.m_bAimThroughReticule) + { + TgP.Controller.GetPlayerViewPoint(POVLoc, POVRot); + Aim.AimVector = Vector(AimRot); + Aim.EndTrace = POVLoc + (Aim.AimVector * TgD.GetRange()); + } + else + { + Aim.AimVector = Vector(AimRot); + Aim.EndTrace = Aim.AimVector * TgD.GetRange(); + } + HitLocation = Aim.EndTrace; + return true; + //return ReturnValue; +} + +simulated function bool GetSimulatedBeamTarget(out Vector HitLocation, optional int nEquipSlot) +{ + local TgDeviceForm DeviceForm; + local Vector HitNormal, fireLoc, EndLoc; + local Rotator FireRot; + local TgPawn TgP; + local editinline TgSkeletalMeshComponent SkelMesh3P; + + TgP = TgPawn(Owner); + SkelMesh3P = Get3PWeaponMesh(); + // End:0x53 + if((SkelMesh3P == none) || TgP == none) + { + return false; + } + SkelMesh3P.GetSocketWorldLocationAndRotation('WSO_Emit_01', fireLoc, FireRot); + DeviceForm = TgP.c_EquipForm[int(m_ActiveEquipPoint)]; + // End:0x244 + if(DeviceForm != none) + { + FireRot = TgP.Rotation; + // End:0x156 + if(FireRot.Pitch == 0) + { + FireRot.Pitch = TgP.m_nSmoothedRemoteViewPitch; + } + EndLoc = fireLoc + (Vector(FireRot) * DeviceForm.ModeDatas[DeviceForm.c_nFireMode].c_fMaxRange); + // End:0x21D + if(!m_bShouldLoopingMuzzleTrace || Trace(HitLocation, HitNormal, EndLoc, fireLoc,,,, 1) == none) + { + HitLocation = EndLoc; + } + HitLocation.Z += m_BeamEmitterEndPointOffset; + } + return true; + //return ReturnValue; +} + +simulated function PlayTargetingEffects(int nEquipSlot) +{ + local TgAnimBlendByPaladinsCharacter PaladinsCharNode; + + // End:0x42 + foreach m_PawnMeshPaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnDeviceTargeting(byte(nEquipSlot)); + } + // End:0x96 + if(nEquipSlot != 7) + { + // End:0x95 + foreach m_PaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnDeviceTargeting(byte(nEquipSlot)); + } + } + //return; +} + +simulated function PlayBuildupEffects(int nEquipSlot) +{ + local TgAnimBlendByPaladinsCharacter PaladinsCharNode; + + // End:0x42 + foreach m_PawnMeshPaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnDeviceBuildup(byte(nEquipSlot)); + } + // End:0x96 + if(nEquipSlot != 7) + { + // End:0x95 + foreach m_PaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnDeviceBuildup(byte(nEquipSlot)); + } + } + // End:0x10D + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.FxDeactivateGroup('BuildUp', nEquipSlot); + m_WeaponMesh1P.FxActivateGroup('BuildUp', nEquipSlot); + } + // End:0x184 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.FxDeactivateGroup('BuildUp', nEquipSlot); + m_WeaponMesh3P.FxActivateGroup('BuildUp', nEquipSlot); + } + //return; +} + +simulated function AttackComboTimeout() +{ + local TgAnimNodeSimpleTransitioner SimpleTransitionerIterator; + local bool bNeedsTransition; + + // End:0x6A + foreach m_SimpleTransitionerNodes1P(SimpleTransitionerIterator) + { + // End:0x69 + if(SimpleTransitionerIterator.ActiveChildIndex == 2) + { + SimpleTransitionerIterator.SetStance(0); + bNeedsTransition = true; + } + } + // End:0xD5 + foreach m_PawnMeshSimpleTransitionerNodes(SimpleTransitionerIterator) + { + // End:0xD4 + if(SimpleTransitionerIterator.ActiveChildIndex == 2) + { + SimpleTransitionerIterator.SetStance(0); + bNeedsTransition = true; + } + } + // End:0x133 + if((PoseTransitioner != none) && bNeedsTransition) + { + PoseTransitioner.PlayCustomAnim('Trans_to_Stance_01', 1.0000000, 0.0000000, 0.1000000, false, true, 0.0000000); + } + //return; +} + +simulated function SetLoopingMuzzleEffects(bool bSetActive, optional int nEquipSlot = 1) +{ + // End:0x85 + if(bSetActive) + { + // End:0x4A + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.PlayFireLoop(nEquipSlot); + } + // End:0x82 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.PlayFireLoop(nEquipSlot); + } + } + else + { + // End:0xBD + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.StopFireLoop(nEquipSlot); + } + // End:0xF5 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.StopFireLoop(nEquipSlot); + } + } + //return; +} + +simulated function bool ShowAsLocallyOwned() +{ + local TgPawn TgP; + local TgPlayerController LocalTgPC; + + TgP = TgPawn(Owner); + LocalTgPC = TgPlayerController(GetALocalPlayerController()); + return ((TgP != none) && LocalTgPC != none) && LocalTgPC.GetTgPawn() == TgP; + //return ReturnValue; +} + +simulated function PlayFireEffects(int nEquipSlot, float fRefireTime, int nFireMode) +{ + local TgAnimNodeSimpleTransitioner SimpleTransitionerIterator; + local TgAnimBlendByFireMode FireModeNodeIterator; + + // End:0x33 + if(PoseTransitioner != none) + { + PoseTransitioner.StopCustomAnim(0.0000000); + } + // End:0xA1 + foreach m_DeviceModeBlendNodes(FireModeNodeIterator) + { + // End:0xA0 + if(int(FireModeNodeIterator.m_EquipPoint) == nEquipSlot) + { + FireModeNodeIterator.SelectFireMode(nFireMode); + } + } + PlayFireAnimation(nEquipSlot, fRefireTime); + // End:0x166 + if(nEquipSlot == 1) + { + // End:0x105 + foreach m_SimpleTransitionerNodes1P(SimpleTransitionerIterator) + { + SimpleTransitionerIterator.Fire(0); + } + // End:0x13E + foreach m_PawnMeshSimpleTransitionerNodes(SimpleTransitionerIterator) + { + SimpleTransitionerIterator.Fire(0); + } + ClearTimer('AttackComboTimeout'); + SetTimer(1.5000000, false, 'AttackComboTimeout'); + } + // End:0x1A0 + if(int(m_PlayFireEffectsOn[nEquipSlot]) == int(0)) + { + PlayFireFx(nEquipSlot, nFireMode); + } + //return; +} + +simulated function PlayFireFx(int nEquipSlot, int nFireMode) +{ + // End:0x40 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.PlayFire(nEquipSlot, nFireMode); + } + // End:0x80 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.PlayFire(nEquipSlot, nFireMode); + } + SetLoopingMuzzleEffects(true, nEquipSlot); + // End:0xAD + if(nEquipSlot == 1) + { + Play3pFireAimedFX(); + } + //return; +} + +simulated function PlayFireAnimation(int nEquipSlot, float fRefireTime) +{ + local TgAnimNodeFitToDuration DurationNodeIterator; + local TgAnimBlendByPaladinsCharacter PaladinsCharNode; + + // End:0x94 + foreach m_FitToDurationNodes(DurationNodeIterator) + { + // End:0x93 + if(!DurationNodeIterator.m_bScaleByReload && int(DurationNodeIterator.m_EquipPoint) == nEquipSlot) + { + DurationNodeIterator.OverrideDuration = fRefireTime; + } + } + // End:0x129 + foreach m_PawnMeshFitToDurationNodes(DurationNodeIterator) + { + // End:0x128 + if(!DurationNodeIterator.m_bScaleByReload && int(DurationNodeIterator.m_EquipPoint) == nEquipSlot) + { + DurationNodeIterator.OverrideDuration = fRefireTime; + } + } + // End:0x175 + foreach m_PawnMeshPaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnDeviceStartFire(byte(nEquipSlot), fRefireTime); + } + // End:0x1D2 + if(nEquipSlot != 7) + { + // End:0x1D1 + foreach m_PaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnDeviceStartFire(byte(nEquipSlot), fRefireTime); + } + } + //return; +} + +simulated function PlayDeviceFiredEffects(int nEquipSlot, float fRefireTime, int nFireMode) +{ + local TgAnimBlendByPaladinsCharacter PaladinsCharNode; + + // End:0x4B + foreach m_PawnMeshPaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnDeviceFire(byte(nEquipSlot), fRefireTime); + } + // End:0xA8 + if(nEquipSlot != 7) + { + // End:0xA7 + foreach m_PaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnDeviceFire(byte(nEquipSlot), fRefireTime); + } + } + // End:0xE2 + if(int(m_PlayFireEffectsOn[nEquipSlot]) == int(1)) + { + PlayFireFx(nEquipSlot, nFireMode); + } + //return; +} + +simulated function Play3pFireAimedFX() +{ + local editinline TgSkeletalMeshComponent SkelMesh3P; + local Vector fireLoc; + local Rotator FireRot; + local TgPawn TgP; + + // End:0x0F + if(IsFirstPerson()) + { + return; + } + TgP = TgPawn(Owner); + // End:0x3C + if(TgP == none) + { + return; + } + SkelMesh3P = TgSkeletalMeshComponent(TgP.Mesh); + // End:0x7E + if(SkelMesh3P == none) + { + return; + } + SkelMesh3P.GetSocketWorldLocationAndRotation('CSO_COG', fireLoc, FireRot); + FireRot.Yaw = TgP.Rotation.Yaw; + FireRot.Roll = 0; + FireRot.Pitch = int(TgP.RemoteViewPitch) << int(8); + SkelMesh3P.FxSpawnEmitter('FireAimed', 0, fireLoc, Vector(FireRot)); + //return; +} + +simulated function TgSkeletalMeshComponent Get3PWeaponMesh() +{ + return ((m_WeaponMesh3P != none) ? m_WeaponMesh3P : TgSkeletalMeshComponent(TgPawn(Owner).Mesh)); + //return ReturnValue; +} + +simulated function PlayTracerEffects(Vector endLocation, optional int nEquipSlot = 0) +{ + local TgSpecialFx TracerFX; + local TgProj_Tracer TracerProjectile; + local Vector fireLoc, FireLocToHitLoc; + local Rotator FireRot; + local int I; + local Emitter TracerBeamEmitter; + local editinline TgSkeletalMeshComponent SkelMesh3P; + local TgPlayerController TgPC; + local bool bConfused, bTracerSpawnFailed; + + bTracerSpawnFailed = false; + // End:0x471 + if(m_nTracerCounter == 0) + { + // End:0x135 + if(IsFirstPerson()) + { + TracerFX = TgSpecialFx(m_WeaponMesh1P.FxGet('Tracer', 0,,, nEquipSlot)); + // End:0xD3 + if((TracerFX == none) && nEquipSlot == 1) + { + TracerFX = TgSpecialFx(m_WeaponMesh1P.FxGet('Tracer', 0)); + } + // End:0x132 + if(TracerFX != none) + { + m_WeaponMesh1P.GetSocketWorldLocationAndRotation(TracerFX.c_nmSocket, fireLoc, FireRot); + } + } + else + { + SkelMesh3P = Get3PWeaponMesh(); + // End:0x25D + if(SkelMesh3P != none) + { + TracerFX = TgSpecialFx(SkelMesh3P.FxGet('Tracer', 0,,, nEquipSlot)); + // End:0x1FE + if((TracerFX == none) && nEquipSlot == 1) + { + TracerFX = TgSpecialFx(SkelMesh3P.FxGet('Tracer', 0)); + } + // End:0x25D + if(TracerFX != none) + { + SkelMesh3P.GetSocketWorldLocationAndRotation(TracerFX.c_nmSocket, fireLoc, FireRot); + } + } + } + // End:0x465 + if(TracerFX != none) + { + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x2C8 + if((TgPC != none) && TgPC.IsConfused()) + { + bConfused = true; + } + FireLocToHitLoc = endLocation - fireLoc; + TracerProjectile = Spawn(Class'TgGame.TgProj_Tracer', Owner,, fireLoc, Rotator(FireLocToHitLoc),, true); + TracerProjectile.InitTracer(TracerFX, !TgPawn(Owner).IsFriendlyWithLocalPawn(), bConfused); + TracerProjectile.r_vSpawnLocation = fireLoc; + TracerProjectile.Instigator = Instigator; + TracerProjectile.r_fRange = VSize(FireLocToHitLoc); + TracerProjectile.Velocity = TracerProjectile.Speed * Normal(FireLocToHitLoc); + TracerProjectile.CompleteInitialization(); + } + else + { + bTracerSpawnFailed = true; + } + } + // End:0x4A9 + if(!bTracerSpawnFailed) + { + m_nTracerCounter++; + m_nTracerCounter = m_nTracerCounter % m_nTracerFrequency; + } + TracerFX = none; + // End:0x5C9 + if(IsFirstPerson()) + { + TracerFX = TgSpecialFx(m_WeaponMesh1P.FxGet(m_TracerName, 0,,, nEquipSlot)); + // End:0x567 + if((TracerFX == none) && nEquipSlot == 1) + { + TracerFX = TgSpecialFx(m_WeaponMesh1P.FxGet(m_TracerName, 0)); + } + // End:0x5C6 + if(TracerFX != none) + { + m_WeaponMesh1P.GetSocketWorldLocationAndRotation(TracerFX.c_nmSocket, fireLoc, FireRot); + } + } + else + { + SkelMesh3P = Get3PWeaponMesh(); + // End:0x6F1 + if(SkelMesh3P != none) + { + TracerFX = TgSpecialFx(SkelMesh3P.FxGet(m_TracerName, 0,,, nEquipSlot)); + // End:0x692 + if((TracerFX == none) && nEquipSlot == 1) + { + TracerFX = TgSpecialFx(SkelMesh3P.FxGet(m_TracerName, 0)); + } + // End:0x6F1 + if(TracerFX != none) + { + SkelMesh3P.GetSocketWorldLocationAndRotation(TracerFX.c_nmSocket, fireLoc, FireRot); + } + } + } + OverrideTracerFireLoc(fireLoc); + // End:0x8E0 + if(TracerFX != none) + { + I = 0; + J0x71E: + + // End:0x8E0 [Loop If] + if(I < TracerFX.c_PSCList.Length) + { + FireLocToHitLoc = endLocation - fireLoc; + TracerBeamEmitter = Spawn(Class'TgGame.TgEmitter', Owner,, fireLoc, Rotator(FireLocToHitLoc),, true); + TracerFX.SetPSCChannels(TracerBeamEmitter.ParticleSystemComponent); + TracerBeamEmitter.LifeSpan = m_fTracerLifetime; + TracerBeamEmitter.SetTemplate(TracerFX.c_PSCList[I].c_PSCTemplate, true); + // End:0x8D2 + if(TracerBeamEmitter.ParticleSystemComponent != none) + { + TracerBeamEmitter.ParticleSystemComponent.SetVectorParameter('beamEnd', endLocation); + } + I++; + // [Loop Continue] + goto J0x71E; + } + } + //return; +} + +simulated function OverrideTracerFireLoc(out Vector fireLoc) +{ + //return; +} + +simulated function QueueInstantHitImpactEffects(Vector HitLocation, bool bSuccessfulHit, Actor HitActor, Vector HitNormal, Vector FireOrigin, int nEquipSlot) +{ + local QueuedImpactEffect NewQueuedImpactEffect; + + NewQueuedImpactEffect.HitLocation = HitLocation; + NewQueuedImpactEffect.bSuccessfulHit = bSuccessfulHit; + NewQueuedImpactEffect.HitActor = HitActor; + NewQueuedImpactEffect.HitNormal = HitNormal; + NewQueuedImpactEffect.FireOrigin = FireOrigin; + NewQueuedImpactEffect.nEquipSlot = nEquipSlot; + m_QueuedImpactEffects.AddItem(NewQueuedImpactEffect); + // End:0x169 + if(!IsTimerActive('PlayQueuedInstantHitImpactEffects')) + { + SetTimer((Class'PlatformCommon.PComUtilityFunctions'.static.GetGDeltaTime() * WorldInfo.TimeDilation) + 0.0010000, false, 'PlayQueuedInstantHitImpactEffects'); + } + //return; +} + +simulated function PlayQueuedInstantHitImpactEffects() +{ + local QueuedImpactEffect CurrentImpactEffect; + + // End:0xCB + foreach m_QueuedImpactEffects(CurrentImpactEffect) + { + PlayInstantHitImpactEffects(CurrentImpactEffect.HitLocation, CurrentImpactEffect.bSuccessfulHit, CurrentImpactEffect.HitActor, CurrentImpactEffect.HitNormal, CurrentImpactEffect.FireOrigin, CurrentImpactEffect.nEquipSlot); + } + m_QueuedImpactEffects.Remove(0, m_QueuedImpactEffects.Length); + //return; +} + +simulated function GetFiringSocketTransform(out Vector fireLoc, out Rotator FireRot) +{ + local editinline TgSkeletalMeshComponent SkelMesh3P; + + // End:0x4B + if(IsFirstPerson()) + { + m_WeaponMesh1P.GetSocketWorldLocationAndRotation('WSO_Emit_01', fireLoc, FireRot); + } + else + { + SkelMesh3P = Get3PWeaponMesh(); + // End:0xA9 + if(SkelMesh3P != none) + { + SkelMesh3P.GetSocketWorldLocationAndRotation('WSO_Emit_01', fireLoc, FireRot); + } + } + // End:0x132 + if(((fireLoc.X == 0.0000000) && fireLoc.Y == 0.0000000) && fireLoc.Z == 0.0000000) + { + fireLoc = Location; + } + //return; +} + +simulated function TgSpecialFx GetMeshFx(name nmDisplayGroupName, optional int nEquipSlot = 0) +{ + local editinline TgSkeletalMeshComponent SkelMesh3P; + + // End:0x53 + if(IsFirstPerson()) + { + return TgSpecialFx(m_WeaponMesh1P.FxGet(nmDisplayGroupName, 0,,, nEquipSlot)); + } + else + { + SkelMesh3P = Get3PWeaponMesh(); + // End:0xB4 + if(SkelMesh3P != none) + { + return TgSpecialFx(SkelMesh3P.FxGet(nmDisplayGroupName, 0,,, nEquipSlot)); + } + } + return none; + //return ReturnValue; +} + +simulated function PlayInstantHitImpactEffects(Vector HitLocation, bool bSuccessfulHit, Actor HitActor, Vector HitNormal, Vector FireOrigin, int nEquipSlot) +{ + local TgSpecialFx ImpactFx; + local TgPawn HitPawn; + local TraceHitInfo HitInfo; + + // End:0x121 + if(bSuccessfulHit) + { + HitPawn = TgPawn(HitActor); + // End:0xC1 + if((HitPawn != none) && HitPawn.IsGod()) + { + HitPawn.CheckHitInfo(HitInfo, HitPawn.Mesh, Normal(HitLocation - FireOrigin), HitLocation); + } + ImpactFx = GetMeshFx(m_HitTargetName, nEquipSlot); + // End:0x11E + if(ImpactFx != none) + { + ImpactFx.PlaySoundAt(HitLocation); + } + } + else + { + // End:0x1C5 + if(HitActor != none) + { + ImpactFx = GetMeshFx(m_HitWallName, nEquipSlot); + // End:0x1C2 + if(ImpactFx != none) + { + ImpactFx.SpawnDecalAt(HitLocation, -HitNormal); + ImpactFx.PlaySoundAt(HitLocation); + } + } + else + { + ImpactFx = GetMeshFx('ProjectileFizzle', nEquipSlot); + } + } + // End:0x2AB + if(ImpactFx != none) + { + // End:0x278 + if(ImpactFx.c_nFxId == 4491) + { + ImpactFx.SpawnEmitter(HitLocation, GetClampedEmitDirection(Normal(FireOrigin - HitLocation), HitNormal)); + } + else + { + ImpactFx.SpawnEmitter(HitLocation, HitNormal); + } + } + //return; +} + +simulated function Vector GetClampedEmitDirection(Vector vInput, Vector vReflect) +{ + local float fAngle, fMinAngle, fMaxAngle; + local Vector vReflectOrtho; + + fMinAngle = 0.3420000; + fMaxAngle = 0.9400000; + fAngle = vInput Dot vReflect; + // End:0xC2 + if(fAngle <= fMinAngle) + { + vReflectOrtho = Normal(vInput - ((vInput Dot vReflect) * vReflect)); + vInput = Normal((vReflect * fMinAngle) + (vReflectOrtho * fMaxAngle)); + } + else + { + // End:0x145 + if(fAngle >= fMaxAngle) + { + vReflectOrtho = Normal(vInput - ((vInput Dot vReflect) * vReflect)); + vInput = Normal((vReflect * fMaxAngle) + (vReflectOrtho * fMinAngle)); + } + } + return -MirrorVectorByNormal(vInput, vReflect); + //return ReturnValue; +} + +simulated function StopFireEffects(int nEquipSlot) +{ + local TgAnimBlendByPaladinsCharacter PaladinsCharNode; + local TgAnimNodeTriggerCameraAnim TriggerCameraAnimNode; + + // End:0x42 + foreach m_PawnMeshPaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnDeviceStopFire(byte(nEquipSlot)); + } + // End:0x96 + if(nEquipSlot != 7) + { + // End:0x95 + foreach m_PaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnDeviceStopFire(byte(nEquipSlot)); + } + } + // End:0xD8 + foreach m_PawnMeshTriggerCameraAnimNodes(TriggerCameraAnimNode) + { + TriggerCameraAnimNode.OnDeviceStopFire(byte(nEquipSlot)); + } + // End:0x11B + foreach m_TriggerCameraAnimNodes(TriggerCameraAnimNode) + { + TriggerCameraAnimNode.OnDeviceStopFire(byte(nEquipSlot)); + } + // End:0x14D + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.StopFire(); + } + // End:0x17E + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.StopFire(); + } + SetLoopingMuzzleEffects(false, nEquipSlot); + //return; +} + +simulated event PlayReload(int nEqpPoint, float ReloadTime, int AmmoRemainingInClip, optional int ReloadType = 0) +{ + local TgAnimBlendByPaladinsCharacter PaladinsCharNode; + local TgAnimNodeFitToDuration FitToDurationNode; + local TgDeviceForm DeviceForm; + local TgPawn TgP; + + TgP = TgPawn(Owner); + // End:0xC2 + if(TgP != none) + { + DeviceForm = TgP.c_EquipForm[nEqpPoint]; + // End:0xC2 + if(DeviceForm != none) + { + DeviceForm.OnReload(ReloadTime); + DeviceForm.SetAmmoBlendNodesAmount(AmmoRemainingInClip); + } + } + // End:0x124 + foreach m_FitToDurationNodes(FitToDurationNode) + { + // End:0x123 + if(FitToDurationNode.m_bScaleByReload) + { + FitToDurationNode.OverrideDuration = ReloadTime; + } + } + // End:0x187 + foreach m_PawnMeshFitToDurationNodes(FitToDurationNode) + { + // End:0x186 + if(FitToDurationNode.m_bScaleByReload) + { + FitToDurationNode.OverrideDuration = ReloadTime; + } + } + // End:0x1C8 + foreach m_PawnMeshPaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnReload(ReloadTime); + } + // End:0x209 + foreach m_PaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnReload(ReloadTime); + } + //return; +} + +simulated event PlayFlourish() +{ + local TgAnimBlendByPaladinsCharacter PaladinsCharNode; + + // End:0x47 + if(!m_bFlourishBlocked) + { + // End:0x46 + foreach m_PaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.OnFlourish(); + } + } + //return; +} + +simulated function BlockFlourish(bool bBlock) +{ + local TgAnimBlendByPaladinsCharacter PaladinsCharNode; + + m_bFlourishBlocked = bBlock; + // End:0x5A + if(m_bFlourishBlocked) + { + // End:0x59 + foreach m_PaladinsCharacterNodes(PaladinsCharNode) + { + PaladinsCharNode.ForceInterruptFlourish(); + } + } + //return; +} + +simulated function SetFOVZoomed(bool bEnabled) +{ + m_bIsFOVZoomed = bEnabled; + UpdateReticule(); + //return; +} + +simulated function SetFireLoopDisplayGroup(name FireLoop, name FireLoopTailSound) +{ + // End:0x40 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.super(TgWeaponMeshActor).SetFireLoopDisplayGroup(FireLoop, FireLoopTailSound); + } + // End:0x80 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.super(TgWeaponMeshActor).SetFireLoopDisplayGroup(FireLoop, FireLoopTailSound); + } + //return; +} + +simulated function ResetFireLoopDisplayGroup() +{ + // End:0x6A + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.SetFireLoopDisplayGroup(m_WeaponMesh1P.default.m_nmFireLoop, m_WeaponMesh1P.default.m_nmFireLoopTailSound); + } + // End:0xD4 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.SetFireLoopDisplayGroup(m_WeaponMesh3P.default.m_nmFireLoop, m_WeaponMesh3P.default.m_nmFireLoopTailSound); + } + //return; +} + +simulated function AddWeaponLeading(Rotator NewRotation, Rotator OldRotation, float DeltaTime) +{ + local float TargetAimOffset, Delta, RotDiff; + + // End:0xA8 + if(ClockwiseFrom_IntInt(NewRotation.Yaw, OldRotation.Yaw)) + { + // End:0xA5 + if(OldRotation.Yaw > NewRotation.Yaw) + { + OldRotation.Yaw -= 65536; + } + } + else + { + // End:0x108 + if(NewRotation.Yaw > OldRotation.Yaw) + { + NewRotation.Yaw -= 65536; + } + } + RotDiff = float(NewRotation.Yaw - OldRotation.Yaw); + TargetAimOffset = FClamp(RotDiff / m_nMaxWeaponLag.X, -1.0000000, 1.0000000); + Delta = Abs(TargetAimOffset - m_v2WeaponLagAimOffset.X); + // End:0x26E + if((Delta > m_v2WeaponLagSmoothingFactor.X) || TargetAimOffset == 0.0000000) + { + m_v2WeaponLagAimOffset.X = FInterpTo(m_v2WeaponLagAimOffset.X, TargetAimOffset, DeltaTime, m_v2WeaponLagInterpSpeed.X); + } + // End:0x316 + if(ClockwiseFrom_IntInt(NewRotation.Pitch, OldRotation.Pitch)) + { + // End:0x313 + if(OldRotation.Pitch > NewRotation.Pitch) + { + OldRotation.Pitch -= 65536; + } + } + else + { + // End:0x376 + if(NewRotation.Pitch > OldRotation.Pitch) + { + NewRotation.Pitch -= 65536; + } + } + RotDiff = float(NewRotation.Pitch - OldRotation.Pitch); + TargetAimOffset = FClamp(RotDiff / m_nMaxWeaponLag.Y, -1.0000000, 1.0000000); + Delta = Abs(TargetAimOffset - m_v2WeaponLagAimOffset.Y); + // End:0x4DC + if((Delta > m_v2WeaponLagSmoothingFactor.Y) || TargetAimOffset == 0.0000000) + { + m_v2WeaponLagAimOffset.Y = FInterpTo(m_v2WeaponLagAimOffset.Y, TargetAimOffset, DeltaTime, m_v2WeaponLagInterpSpeed.Y); + } + //return; +} + +simulated function OnPolymorphChanged(bool bDead) +{ + local TgPawn PawnOwner; + local bool bShouldBeHidden; + + PawnOwner = TgPawn(Owner); + // End:0x91 + if((m_WeaponMesh3P != none) && PawnOwner != none) + { + bShouldBeHidden = int(PawnOwner.c_LocalPolymorph) > int(0); + // End:0x87 + if(bShouldBeHidden) + { + Hide3PWeaponMesh(); + } + else + { + Unhide3PWeaponMesh(); + } + } + // End:0xC9 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.SetHidden(bDead); + } + // End:0x101 + if(m_HandsMesh != none) + { + m_HandsMesh.SetHidden(bDead); + } + // End:0x139 + if(m_HeadMesh1P != none) + { + m_HeadMesh1P.SetHidden(bDead); + } + //return; +} + +simulated function NotifyLocalPlayerTeamReceived() +{ + RecalculateMaterial(IsFriendlyWithLocalPawn()); + //return; +} + +// Export UTgWeaponMeshActor::execCacheHitReactionSkelControls(FFrame&, void* const) +native function CacheHitReactionSkelControls(); + +// Export UTgWeaponMeshActor::execPlayHitReaction(FFrame&, void* const) +native function PlayHitReaction(TgObject.RecoilHitDir Dir, float DamageAmount); + +simulated function Hide3PWeaponMesh() +{ + // End:0x50 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.SetParentAnimComponent(none); + m_WeaponMesh3P.m_bForceHideComponent = true; + } + //return; +} + +simulated function Unhide3PWeaponMesh() +{ + local TgPawn PawnOwner; + + // End:0x98 + if(m_WeaponMesh3P != none) + { + PawnOwner = TgPawn(Owner); + // End:0x77 + if(PawnOwner != none) + { + m_WeaponMesh3P.SetParentAnimComponent(PawnOwner.Mesh); + } + m_WeaponMesh3P.m_bForceHideComponent = false; + } + //return; +} + +simulated function PlayMeshTransitionAnimation(WeaponMeshSwapStrategy SwapStrategy, TgObject.TG_EQUIP_POINT eqp, TgDevice PreviousTargetingDevice, TgDevice NextTargetingDevice) +{ + // End:0xA7 + if((SwapStrategy.bPlayPutAway && PreviousTargetingDevice != none) && PreviousTargetingDevice.m_bPlayPutAway) + { + PlayPutaway(eqp, NextTargetingDevice.r_nDeviceId, NextTargetingDevice.Class); + } + else + { + // End:0x132 + if((NextTargetingDevice != none) && NextTargetingDevice.m_bUseDeviceMeshWhenTargeting) + { + SetActiveWeapon(eqp, NextTargetingDevice.r_nDeviceId, NextTargetingDevice.Class, SwapStrategy); + } + } + //return; +} + +defaultproperties +{ + m_WeaponMesh1PClass=Class'TgGame.TgSkeletalMeshComponent_WeaponFirstPerson' + m_WeaponMesh3PClass=Class'TgGame.TgSkeletalMeshComponent_Weapon' + m_bShouldLoopingMuzzleTrace=true + m_bUseSocketForCameraAttach=true + m_bUseCameraAnims=true + m_nMaxWeaponLag=(X=483.0000000,Y=262.0000000) + m_v2WeaponLagInterpSpeed=(X=6.0000000,Y=4.0000000) + m_v2WeaponLagSmoothingFactor=(X=0.2000000,Y=0.2000000) + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" class=TgGame.TgCameraShake + bSingleInstance=true + OscillationDuration=0.3000000 + OscillationBlendInTime=0.0000000 + OscillationBlendOutTime=0.3000000 + RotOscillation=(Pitch=(Amplitude=10.0000000,Frequency=60.0000000),Yaw=(Amplitude=10.0000000,Frequency=60.0000000),Roll=(Amplitude=50.0000000,Frequency=120.0000000)) + end object + m_FireCameraShake=CameraShake + m_nTracerFrequency=1 + m_TracerName="TracerBeam" + m_fTracerLifetime=1.0000000 + m_HitTargetName="ProjectileExplosionHitTarget" + m_HitWallName="ProjectileExplosionHitWall" + m_BeamEmitterEndPointOffset=25.0000000 + m_nBeaconMeshId=5660 + TickGroup=ETickingGroup.TG_PostUpdateWork +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_AndroxusInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_AndroxusInhand.uc new file mode 100755 index 00000000..fdb911a5 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_AndroxusInhand.uc @@ -0,0 +1,97 @@ +class TgWeaponMeshActor_AndroxusInhand extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +var bool m_bHasFinishedBurst; +var int m_nCachedFireMode; + +simulated function FixUpReferencesToWeaponMesh1P(SkeletalMeshComponent WeaponMesh) +{ + local AnimNode AnimNode; + local TgAnimNodeBlendBySlowFall SlowFallNode; + local TgPawn_Androxus androxus; + + androxus = TgPawn_Androxus(Owner); + // End:0xB7 + if(androxus != none) + { + // End:0xB6 + foreach WeaponMesh.AllAnimNodes(Class'Engine.AnimNode', AnimNode) + { + SlowFallNode = TgAnimNodeBlendBySlowFall(AnimNode); + // End:0xB5 + if(SlowFallNode != none) + { + androxus.m_SlowFallAnimNodes.AddItem(SlowFallNode); + } + } + } + super.FixUpReferencesToWeaponMesh1P(WeaponMesh); + //return; +} + +simulated function PlayFireEffects(int nEquipSlot, float fRefireTime, int nFireMode) +{ + m_nCachedFireMode = nFireMode; + // End:0x43 + if(nEquipSlot == 18) + { + super.PlayFireEffects(1, fRefireTime, nFireMode); + } + else + { + super.PlayFireEffects(nEquipSlot, fRefireTime, nFireMode); + } + // End:0x83 + if(m_nCachedFireMode == 1) + { + m_bHasFinishedBurst = true; + } + //return; +} + +simulated function StopFireEffects(int nEquipSlot) +{ + // End:0x1E + if(nEquipSlot == 18) + { + super.StopFireEffects(1); + } + else + { + super.StopFireEffects(nEquipSlot); + } + // End:0x4C + if(nEquipSlot == 1) + { + m_bHasFinishedBurst = true; + } + //return; +} + +simulated function PlayFireAnimation(int nEquipSlot, float fRefireTime) +{ + // End:0x3E + if((nEquipSlot != 1) || m_nCachedFireMode == 0) + { + super.PlayFireAnimation(nEquipSlot, fRefireTime); + return; + } + // End:0x73 + if(m_bHasFinishedBurst) + { + m_bHasFinishedBurst = false; + super.PlayFireAnimation(nEquipSlot, fRefireTime); + } + //return; +} + +defaultproperties +{ + m_bHasFinishedBurst=true + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_AndroxusInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_AstroInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_AstroInhand.uc new file mode 100755 index 00000000..79d67720 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_AstroInhand.uc @@ -0,0 +1,102 @@ +class TgWeaponMeshActor_AstroInhand extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +simulated function Initialize1P(byte EquipPoint, int DeviceID, optional int MeshAsmId1P = -1) +{ + super.Initialize1P(EquipPoint, DeviceID, MeshAsmId1P); + // End:0x6A + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.FxActivateGroup('Generic4', 0); + } + //return; +} + +simulated function Initialize3P(byte EquipPoint, int DeviceID) +{ + super.Initialize3P(EquipPoint, DeviceID); + // End:0x58 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.FxActivateGroup('Generic4', 0); + } + //return; +} + +simulated function PlayFireFx(int nEquipSlot, int nFireMode) +{ + // End:0x30 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.m_bDoNotPlayFireParticlesIfHidden = false; + } + // End:0x60 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.m_bDoNotPlayFireParticlesIfHidden = false; + } + super.PlayFireFx(nEquipSlot, nFireMode); + // End:0x124 + if(((nEquipSlot == 3) || nEquipSlot == 16) || nEquipSlot == 4) + { + // End:0xEA + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.FxDeactivateGroup('Generic4', 0); + } + // End:0x124 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.FxDeactivateGroup('Generic4', 0); + } + } + //return; +} + +simulated function StopFireEffects(int nEquipSlot) +{ + // End:0x30 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.m_bDoNotPlayFireParticlesIfHidden = true; + } + // End:0x60 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.m_bDoNotPlayFireParticlesIfHidden = true; + } + super.StopFireEffects(nEquipSlot); + // End:0x1DA + if(((nEquipSlot == 3) || nEquipSlot == 16) || nEquipSlot == 4) + { + // End:0x174 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.StopFire(true); + m_WeaponMesh1P.FxActivateGroup('Generic4', 0); + // End:0x174 + if(nEquipSlot == 3) + { + m_WeaponMesh1P.StopFire(true, nEquipSlot); + m_WeaponMesh1P.FxActivateGroup('Generic2', 0, 0, nEquipSlot); + } + } + // End:0x1DA + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.StopFire(true, nEquipSlot); + m_WeaponMesh3P.FxActivateGroup('Generic4', 0); + } + } + //return; +} + +defaultproperties +{ + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_AstroInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_BarrierTankInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_BarrierTankInhand.uc new file mode 100755 index 00000000..714d3317 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_BarrierTankInhand.uc @@ -0,0 +1,47 @@ +class TgWeaponMeshActor_BarrierTankInhand extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +var bool m_bHasFinishedBurst; + +simulated function PlayFireAnimation(int nEquipSlot, float fRefireTime) +{ + // End:0x2D + if(nEquipSlot != 1) + { + super.PlayFireAnimation(nEquipSlot, fRefireTime); + return; + } + // End:0x61 + if(m_bHasFinishedBurst) + { + m_bHasFinishedBurst = false; + super.PlayFireAnimation(nEquipSlot, 0.6000000); + } + else + { + // End:0x80 + if(fRefireTime > 0.3000000) + { + m_bHasFinishedBurst = true; + } + } + //return; +} + +simulated function StopFireEffects(int nEquipSlot) +{ + super.StopFireEffects(nEquipSlot); + m_bHasFinishedBurst = true; + //return; +} + +defaultproperties +{ + m_bHasFinishedBurst=true + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_BarrierTankInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_BombKingInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_BombKingInhand.uc new file mode 100755 index 00000000..350dc6b9 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_BombKingInhand.uc @@ -0,0 +1,15 @@ +class TgWeaponMeshActor_BombKingInhand extends TgWeaponMeshActor + native + notplaceable + hidecategories(Navigation); + +var bool m_bPlayPoppyDetonateAnimation; + +defaultproperties +{ + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_BombKingInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_BuckInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_BuckInhand.uc new file mode 100755 index 00000000..4eaa4eb5 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_BuckInhand.uc @@ -0,0 +1,61 @@ +class TgWeaponMeshActor_BuckInhand extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +var array m_PawnMeshProgressiveReloadNodes; +var array m_ProgressiveReloadNodes; + +simulated function FixUpReferencesToWeaponMesh1P(SkeletalMeshComponent WeaponMesh) +{ + local TgAnimBlendByProgressiveReload AnimNode; + + m_ProgressiveReloadNodes.Length = 0; + // End:0x57 + foreach WeaponMesh.AllAnimNodes(Class'TgGame.TgAnimBlendByProgressiveReload', AnimNode) + { + m_ProgressiveReloadNodes.AddItem(AnimNode); + } + super.FixUpReferencesToWeaponMesh1P(WeaponMesh); + //return; +} + +simulated function FixUpReferencesToPawnMesh(SkeletalMeshComponent PawnMesh) +{ + local TgAnimBlendByProgressiveReload AnimNode; + + m_PawnMeshProgressiveReloadNodes.Length = 0; + // End:0x57 + foreach PawnMesh.AllAnimNodes(Class'TgGame.TgAnimBlendByProgressiveReload', AnimNode) + { + m_PawnMeshProgressiveReloadNodes.AddItem(AnimNode); + } + super.FixUpReferencesToPawnMesh(PawnMesh); + //return; +} + +simulated event PlayReload(int nEquipPoint, float ReloadTime, int AmmoRemainingInClip, optional int ReloadType = 0) +{ + local TgAnimBlendByProgressiveReload ProgressiveReloadNode; + + // End:0x45 + foreach m_PawnMeshProgressiveReloadNodes(ProgressiveReloadNode) + { + ProgressiveReloadNode.SetReloadType(ReloadType); + } + // End:0x86 + foreach m_ProgressiveReloadNodes(ProgressiveReloadNode) + { + ProgressiveReloadNode.SetReloadType(ReloadType); + } + super.PlayReload(nEquipPoint, ReloadTime, AmmoRemainingInClip, ReloadType); + //return; +} + +defaultproperties +{ + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_BuckInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_DemonInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_DemonInhand.uc new file mode 100755 index 00000000..f6c97961 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_DemonInhand.uc @@ -0,0 +1,69 @@ +class TgWeaponMeshActor_DemonInhand extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +var TgPawn_Demon m_CachedDemon; +var() float m_fWeaponZoomFOV; +var() float m_fWeaponFOVDefault; +var() float m_fDoFMultiplier; + +simulated function bool HasCachedDemon() +{ + // End:0x38 + if(m_CachedDemon == none) + { + m_CachedDemon = TgPawn_Demon(Instigator); + return m_CachedDemon != none; + } + return true; + //return ReturnValue; +} + +simulated function UpdateTransform(float DeltaTime, optional bool bFromCameraUpdate = false) +{ + local TgPlayerController TgPC; + local TgPlayerCamera Cam; + local float fZoomPct; + + super.UpdateTransform(DeltaTime, bFromCameraUpdate); + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x87 + if(((TgPC == none) || m_WeaponMesh1P == none) || TgPC.PlayerCamera == none) + { + return; + } + Cam = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xC9 + if(Cam == none) + { + return; + } + // End:0x204 + if(m_WeaponMesh1P != none) + { + fZoomPct = Cam.GetFOVInterpZoomPct(); + // End:0x18C + if(HasCachedDemon()) + { + m_CachedDemon.m_CurrentDOFSettings.IsActive = fZoomPct > 0.0000000; + m_CachedDemon.m_CurrentDOFSettings.MaxNearBlurAmount = fZoomPct; + } + m_WeaponMesh1P.SetFOV(Lerp(m_fWeaponFOVDefault, m_fWeaponZoomFOV, fZoomPct)); + m_HandsMesh.SetFOV(Lerp(m_fWeaponFOVDefault, m_fWeaponZoomFOV, fZoomPct)); + } + //return; +} + +defaultproperties +{ + m_fWeaponZoomFOV=45.0000000 + m_fWeaponFOVDefault=77.0000000 + m_fDoFMultiplier=1.0000000 + m_PlayFireEffectsOn[1]=TG_PLAY_FIRE_EFFECT_ON.Fire + m_PlayFireEffectsOn[16]=TG_PLAY_FIRE_EFFECT_ON.Fire + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_DemonInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_FlakInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_FlakInhand.uc new file mode 100755 index 00000000..d04603d7 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_FlakInhand.uc @@ -0,0 +1,55 @@ +class TgWeaponMeshActor_FlakInhand extends TgWeaponMeshActor + native(ChampFlak) + notplaceable + hidecategories(Navigation); + +simulated function PlayInstantHitImpactEffects(Vector HitLocation, bool bSuccessfulHit, Actor HitActor, Vector HitNormal, Vector FireOrigin, int nEquipSlot) +{ + local TgSpecialFx ImpactFx; + local TgPawn HitPawn; + local TraceHitInfo HitInfo; + local float DistanceToHit, DecalRotation; + + // End:0x121 + if(bSuccessfulHit) + { + HitPawn = TgPawn(HitActor); + // End:0xC1 + if((HitPawn != none) && HitPawn.IsGod()) + { + HitPawn.CheckHitInfo(HitInfo, HitPawn.Mesh, Normal(HitLocation - FireOrigin), HitLocation); + } + ImpactFx = GetMeshFx(m_HitTargetName, nEquipSlot); + // End:0x11E + if(ImpactFx != none) + { + ImpactFx.PlaySoundAt(HitLocation); + } + } + else + { + // End:0x274 + if((HitActor != none) && HitActor.bWorldGeometry) + { + ImpactFx = GetMeshFx(m_HitWallName, nEquipSlot); + // End:0x274 + if(ImpactFx != none) + { + DecalRotation = ImpactFx.CalculateOrientedDecalRotation(HitLocation, HitNormal, Normal(HitLocation - FireOrigin)); + DistanceToHit = VSize(HitLocation - FireOrigin); + ImpactFx.SpawnDecalAt(HitLocation, -HitNormal, DecalRotation, DistanceToHit / (40.0000000 * float(16))); + ImpactFx.PlaySoundAt(HitLocation); + } + } + } + //return; +} + +defaultproperties +{ + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_FlakInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_GauntletInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_GauntletInhand.uc new file mode 100755 index 00000000..96e8dd73 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_GauntletInhand.uc @@ -0,0 +1,254 @@ +class TgWeaponMeshActor_GauntletInhand extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +var TgSpecialFx m_HyperBeamFX; +var Actor m_LastInhandTarget; + +simulated function UpdateTransform(float DeltaTime, optional bool bFromCameraUpdate = false) +{ + super.UpdateTransform(DeltaTime, bFromCameraUpdate); + UpdateBeamEffects(16); + //return; +} + +simulated function bool GetSimulatedBeamTarget(out Vector HitLocation, optional int nEquipSlot) +{ + local TgPawn_Gauntlet TgP; + + TgP = TgPawn_Gauntlet(Owner); + // End:0x181 + if(TgP != none) + { + // End:0xE0 + if((nEquipSlot == 1) || nEquipSlot == 0) + { + // End:0xDB + if(TgP.r_InhandTarget != none) + { + HitLocation = TgP.r_InhandTarget.Location; + HitLocation += TgP.c_InterpInhandHitOffset; + return true; + } + else + { + return false; + } + } + else + { + // End:0x181 + if(nEquipSlot == 16) + { + // End:0x17F + if(TgP.r_RechargeTarget != none) + { + HitLocation = TgP.r_RechargeTarget.Location; + HitLocation += TgP.c_InterpRechargeHitOffset; + return true; + } + else + { + return false; + } + } + } + } + return super.GetSimulatedBeamTarget(HitLocation, nEquipSlot); + //return ReturnValue; +} + +simulated function bool GetAccurateBeamTarget(out Vector HitLocation, int nEquipSlot) +{ + local TgPawn_Gauntlet TgP; + + TgP = TgPawn_Gauntlet(Owner); + // End:0x180 + if(TgP != none) + { + // End:0xDF + if((nEquipSlot == 1) || nEquipSlot == 0) + { + // End:0xDA + if(TgP.r_InhandTarget != none) + { + HitLocation = TgP.r_InhandTarget.Location; + HitLocation += TgP.c_InterpInhandHitOffset; + return true; + } + else + { + return false; + } + } + else + { + // End:0x180 + if(nEquipSlot == 16) + { + // End:0x17E + if(TgP.r_RechargeTarget != none) + { + HitLocation = TgP.r_RechargeTarget.Location; + HitLocation += TgP.c_InterpRechargeHitOffset; + return true; + } + else + { + return false; + } + } + } + } + return super.GetAccurateBeamTarget(HitLocation, nEquipSlot); + //return ReturnValue; +} + +simulated function PlayFireFx(int nEquipSlot, int nFireMode) +{ + local TgPawn_Gauntlet TgP; + + // End:0x78 + if(nEquipSlot == 16) + { + TgP = TgPawn_Gauntlet(Owner); + // End:0x75 + if(TgP != none) + { + // End:0x75 + if(TgP.r_RechargeTarget != none) + { + super.PlayFireFx(nEquipSlot, 1); + return; + } + } + } + else + { + // End:0x18B + if(nEquipSlot == 1) + { + TgP = TgPawn_Gauntlet(Owner); + // End:0x18B + if(TgP != none) + { + // End:0xFA + if(TgP.r_InhandTarget == none) + { + SetLoopingMuzzleEffects(false, nEquipSlot); + ActivateFireLoopFailed(true); + return; + } + else + { + // End:0x13A + if(TgP.r_InhandTarget != m_LastInhandTarget) + { + SetLoopingMuzzleEffects(false, nEquipSlot); + } + m_LastInhandTarget = TgP.r_InhandTarget; + ActivateFireLoopFailed(false); + super.PlayFireFx(nEquipSlot, nFireMode); + return; + } + } + } + } + super.PlayFireFx(nEquipSlot, nFireMode); + //return; +} + +simulated function StopFireEffects(int nEquipSlot) +{ + super.StopFireEffects(nEquipSlot); + ActivateFireLoopFailed(false); + //return; +} + +simulated function ActivateFireLoopFailed(bool bIsActive) +{ + // End:0x88 + if(bIsActive) + { + // End:0x49 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.FxActivateGroup('FireLoopFailed', 0); + } + // End:0x85 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.FxActivateGroup('FireLoopFailed', 0); + } + } + else + { + // End:0xC2 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.FxDeactivateGroup('FireLoopFailed', 0); + } + // End:0xFC + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.FxDeactivateGroup('FireLoopFailed', 0); + } + } + //return; +} + +simulated function UpdateFireLoopBeamParams(bool bHasEndPoint, Vector HitLocation, optional int nEquipSlot = 1) +{ + // End:0x2B + if(!bHasEndPoint) + { + SetLoopingMuzzleEffects(false, nEquipSlot); + } + else + { + super.UpdateFireLoopBeamParams(bHasEndPoint, HitLocation, nEquipSlot); + SetBeamTangent(HitLocation); + } + //return; +} + +simulated function SetBeamTangent(Vector HitLocation, optional int nEquipSlot = 1) +{ + local Vector fireLoc, Tangent; + local Rotator FireRot; + local int I; + local editinline array FireLoopParticles; + local editinline ParticleSystemComponent Particle; + + GetFiringSocketTransform(fireLoc, FireRot); + Tangent = (HitLocation - fireLoc) / float(25); + GetAllFireLoopParticleSystemComponents(FireLoopParticles, nEquipSlot); + // End:0x12B + foreach FireLoopParticles(Particle) + { + I = 0; + J0x83: + + // End:0x12A [Loop If] + if(I < Particle.EmitterInstances.Length) + { + Particle.SetBeamTargetTangent(I, Tangent, 0); + Particle.SetBeamSourceTangent(I, Vector(FireRot) * float(10), 0); + I++; + // [Loop Continue] + goto J0x83; + } + } + //return; +} + +defaultproperties +{ + m_PlayFireEffectsOn[1]=TG_PLAY_FIRE_EFFECT_ON.Fire + m_PlayFireEffectsOn[2]=TG_PLAY_FIRE_EFFECT_ON.Fire + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_GauntletInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_GroverInhandAxe.uc b/exported/TgGame/Classes/TgWeaponMeshActor_GroverInhandAxe.uc new file mode 100755 index 00000000..f89671f8 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_GroverInhandAxe.uc @@ -0,0 +1,71 @@ +class TgWeaponMeshActor_GroverInhandAxe extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +var TgAnimNodeStanceTransitionerSynchronized StanceNode; + +simulated function FixUpReferencesToPawnMesh(SkeletalMeshComponent PawnMesh) +{ + super.FixUpReferencesToPawnMesh(PawnMesh); + StanceNode = none; + // End:0x66 + if(PawnMesh != none) + { + // End:0x65 + foreach PawnMesh.AllAnimNodes(Class'TgGame.TgAnimNodeStanceTransitionerSynchronized', StanceNode) + { + // End:0x65 + break; + } + } + //return; +} + +simulated function Play3pFireAimedFX() +{ + local editinline TgSkeletalMeshComponent SkelMesh3P; + local Vector fireLoc; + local Rotator FireRot; + local TgPawn TgP; + + // End:0x0F + if(IsFirstPerson()) + { + return; + } + TgP = TgPawn(Owner); + // End:0x3C + if(TgP == none) + { + return; + } + SkelMesh3P = TgSkeletalMeshComponent(TgP.Mesh); + // End:0x7E + if(SkelMesh3P == none) + { + return; + } + SkelMesh3P.GetSocketWorldLocationAndRotation('CSO_COG', fireLoc, FireRot); + FireRot.Yaw = TgP.Rotation.Yaw; + FireRot.Roll = 0; + FireRot.Pitch = int(TgP.RemoteViewPitch) << int(8); + // End:0x1DF + if((StanceNode == none) || StanceNode.m_nCurrentStance == 1) + { + SkelMesh3P.FxSpawnEmitter('FireAimed', 0, fireLoc, Vector(FireRot)); + } + else + { + SkelMesh3P.FxSpawnEmitter('FireAimedAlt', 0, fireLoc, Vector(FireRot)); + } + //return; +} + +defaultproperties +{ + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_GroverInhandAxe.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_IceStaff.uc b/exported/TgGame/Classes/TgWeaponMeshActor_IceStaff.uc new file mode 100755 index 00000000..19e92e26 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_IceStaff.uc @@ -0,0 +1,12 @@ +class TgWeaponMeshActor_IceStaff extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_IceStaff.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_Lance.uc b/exported/TgGame/Classes/TgWeaponMeshActor_Lance.uc new file mode 100755 index 00000000..23810152 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_Lance.uc @@ -0,0 +1,13 @@ +class TgWeaponMeshActor_Lance extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + m_WeaponMesh1PClass=Class'TgGame.TgSkeletalMeshComponent_WeaponFirstPersonLance' + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_Lance.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_LexInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_LexInhand.uc new file mode 100755 index 00000000..8fa21da0 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_LexInhand.uc @@ -0,0 +1,257 @@ +class TgWeaponMeshActor_LexInhand extends TgWeaponMeshActor + native(ChampLex) + notplaceable + hidecategories(Navigation); + +const MAX_THE_LAW_TARGETS = 5; +const THE_LAW_TARGETTING_BEAM_FX_ID = 7680; +const THE_LAW_TARGETTING_BEAM_EXECUTE_FX_ID = 7834; +const THE_LAW_HIT_BEAM_FX_ID = 7703; + +enum EBeamState +{ + EBS_Hidden, // 0 + EBS_Targeting, // 1 + EBS_Hitting, // 2 + EBS_MAX // 3 +}; + +var TgPawn_Lex m_CachedLex; +var TgBeamHelper c_Beams[5]; +var TgBeamHelper c_ExecutableBeams[5]; +var array m_LexCharacterNodes1P; +var array m_LexCharacterNodes3P; +var name c_LeftInHandSocket; +var name c_RightInHandSocket; +var bool c_bJustRenderedBeamsForUlt; +var TgWeaponMeshActor_LexInhand.EBeamState c_eBeamState; + +simulated function bool HasCachedLex() +{ + // End:0x2B + if(m_CachedLex == none) + { + m_CachedLex = TgPawn_Lex(m_OwningPawn); + } + return m_CachedLex != none; + //return ReturnValue; +} + +simulated function ShowTargetingBeams() +{ + c_eBeamState = 1; + ManageBeams(); + //return; +} + +simulated function ShowHitBeams() +{ + c_eBeamState = 2; + ClearBeams(); + ManageBeams(); + //return; +} + +simulated function HideBeams() +{ + c_eBeamState = 0; + ClearBeams(); + ManageBeams(); + //return; +} + +simulated function ClearBeams() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x3C [Loop If] + if(I < 5) + { + ClearBeam(I); + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated function ClearBeam(int Index) +{ + ClearNonExecutableBeam(Index); + ClearExecutableBeam(Index); + //return; +} + +simulated function ClearNonExecutableBeam(int Index) +{ + // End:0x58 + if(c_Beams[Index] != none) + { + c_Beams[Index].Deactivate(true); + c_Beams[Index] = none; + } + //return; +} + +simulated function ClearExecutableBeam(int Index) +{ + // End:0x58 + if(c_ExecutableBeams[Index] != none) + { + c_ExecutableBeams[Index].Deactivate(true); + c_ExecutableBeams[Index] = none; + } + //return; +} + +simulated function ManageBeamNonExecutable(int Index) +{ + local TgBeamHelper Beam; + + ClearExecutableBeam(Index); + // End:0x1CD + if(c_Beams[Index] == none) + { + Beam = Class'TgGame.TgBeamHelper'.static.Create(((int(c_eBeamState) == int(2)) ? GetFxOverrideFor(7703) : GetFxOverrideFor(7680))); + Beam.AttachToMesh(((IsFirstPerson()) ? m_WeaponMesh1P : m_CachedLex.Mesh), 'WSO_Emit_05'); + Beam.AttachToTarget(m_CachedLex.r_Targets[Index]); + Beam.Activate(); + Beam.SetVisible(true); + Beam.EnableTangents(); + Beam.m_bRequiresTarget = true; + c_Beams[Index] = Beam; + } + else + { + c_Beams[Index].AttachToMesh(((IsFirstPerson()) ? m_WeaponMesh1P : m_CachedLex.Mesh), 'WSO_Emit_05'); + c_Beams[Index].AttachToTarget(m_CachedLex.r_Targets[Index]); + c_Beams[Index].SetVisible(true); + } + //return; +} + +simulated function ManageBeamExecutable(int Index) +{ + local TgBeamHelper Beam; + + ClearNonExecutableBeam(Index); + // End:0x1CD + if(c_ExecutableBeams[Index] == none) + { + Beam = Class'TgGame.TgBeamHelper'.static.Create(((int(c_eBeamState) == int(2)) ? GetFxOverrideFor(7703) : GetFxOverrideFor(7834))); + Beam.AttachToMesh(((IsFirstPerson()) ? m_WeaponMesh1P : m_CachedLex.Mesh), 'WSO_Emit_05'); + Beam.AttachToTarget(m_CachedLex.r_Targets[Index]); + Beam.Activate(); + Beam.SetVisible(true); + Beam.EnableTangents(); + Beam.m_bRequiresTarget = true; + c_ExecutableBeams[Index] = Beam; + } + else + { + c_ExecutableBeams[Index].AttachToMesh(((IsFirstPerson()) ? m_WeaponMesh1P : m_CachedLex.Mesh), 'WSO_Emit_05'); + c_ExecutableBeams[Index].AttachToTarget(m_CachedLex.r_Targets[Index]); + c_ExecutableBeams[Index].SetVisible(true); + } + //return; +} + +simulated event ManageBeams() +{ + local int I; + local float fTargetHealthPercent; + + // End:0x17E + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0x17E + if(int(c_eBeamState) != int(0)) + { + // End:0x17E + if(HasCachedLex()) + { + I = 0; + J0x55: + + // End:0x17E [Loop If] + if(I < 5) + { + // End:0x15D + if(m_CachedLex.r_Targets[I] != none) + { + fTargetHealthPercent = m_CachedLex.r_Targets[I].GetHealthPercent(); + // End:0x147 + if((fTargetHealthPercent < 65.0000000) && m_CachedLex.r_Targets[I].CanBeExecuted()) + { + ManageBeamExecutable(I); + } + else + { + ManageBeamNonExecutable(I); + } + } + else + { + ClearBeam(I); + } + I++; + // [Loop Continue] + goto J0x55; + } + } + } + } + //return; +} + +simulated function OverrideTracerFireLoc(out Vector fireLoc) +{ + local TgPawn_Lex pLex; + local Rotator FireRot; + + pLex = TgPawn_Lex(Owner); + // End:0x171 + if(pLex != none) + { + // End:0xD6 + if(IsFirstPerson()) + { + // End:0x98 + if(pLex.m_bFireLeftWeapon) + { + m_WeaponMesh1P.GetSocketWorldLocationAndRotation(c_LeftInHandSocket, fireLoc, FireRot); + } + else + { + m_WeaponMesh1P.GetSocketWorldLocationAndRotation(c_RightInHandSocket, fireLoc, FireRot); + } + } + else + { + // End:0x136 + if(pLex.m_bFireLeftWeapon) + { + m_WeaponMesh3P.GetSocketWorldLocationAndRotation(c_LeftInHandSocket, fireLoc, FireRot); + } + else + { + m_WeaponMesh3P.GetSocketWorldLocationAndRotation(c_RightInHandSocket, fireLoc, FireRot); + } + } + } + //return; +} + +defaultproperties +{ + c_LeftInHandSocket="WSO_Emit_01" + c_RightInHandSocket="WSO_Emit_02" + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_LexInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_LianInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_LianInhand.uc new file mode 100755 index 00000000..0f00db78 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_LianInhand.uc @@ -0,0 +1,142 @@ +class TgWeaponMeshActor_LianInhand extends TgWeaponMeshActor + native(ChampPrincess) + notplaceable + hidecategories(Navigation); + +const GRACE_TRACER_FX_ID = 8105; +const GRACE_TRACER_DURATION = 1.0f; + +var TgPawn_Princess m_CachedLian; +var TgBeamHelper c_GraceTracers[15]; +var bool c_bTracersVisible; + +simulated function bool HasCachedLian() +{ + // End:0x2B + if(m_CachedLian == none) + { + m_CachedLian = TgPawn_Princess(m_OwningPawn); + } + return m_CachedLian != none; + //return ReturnValue; +} + +simulated function ShowGraceTracers() +{ + c_bTracersVisible = true; + ManageGraceTracers(); + SetTimer(1.0000000, false, 'HideGraceTracers'); + //return; +} + +simulated function HideGraceTracers() +{ + c_bTracersVisible = false; + ClearGraceTracers(); + ManageGraceTracers(); + //return; +} + +simulated function ClearGraceTracers() +{ + local int I; + + I = 0; + J0x0B: + + // End:0x3C [Loop If] + if(I < 15) + { + ClearGraceTracer(I); + I++; + // [Loop Continue] + goto J0x0B; + } + //return; +} + +simulated function ClearGraceTracer(int Index) +{ + // End:0x58 + if(c_GraceTracers[Index] != none) + { + c_GraceTracers[Index].Deactivate(true); + c_GraceTracers[Index] = none; + } + //return; +} + +simulated event ManageGraceTracer(int Index) +{ + local TgBeamHelper Beam; + + return; + // End:0x29D + if(NotEqual_InterfaceInterface(m_CachedLian.r_GraceTargets[Index], TgCombatActor(none))) + { + // End:0x1A3 + if(c_GraceTracers[Index] == none) + { + Beam = Class'TgGame.TgBeamHelper'.static.Create(8105); + Beam.AttachToMesh(((IsFirstPerson()) ? m_WeaponMesh1P : m_CachedLian.Mesh), 'WSO_Emit_01'); + Beam.SetEndPoint(m_CachedLian.r_GraceTargets[Index].GetLocation()); + Beam.Activate(); + Beam.SetVisible(true); + c_GraceTracers[Index] = Beam; + } + else + { + c_GraceTracers[Index].AttachToMesh(((IsFirstPerson()) ? m_WeaponMesh1P : m_CachedLian.Mesh), 'WSO_Emit_01'); + c_GraceTracers[Index].SetEndPoint(m_CachedLian.r_GraceTargets[Index].GetLocation()); + c_GraceTracers[Index].SetVisible(true); + } + } + //return; +} + +simulated event ManageGraceTracers() +{ + local int I; + + // End:0xD4 + if(int(WorldInfo.NetMode) != int(NM_DedicatedServer)) + { + // End:0xD4 + if(c_bTracersVisible) + { + // End:0xD4 + if(HasCachedLian()) + { + I = 0; + J0x4E: + + // End:0xD4 [Loop If] + if(I < 15) + { + // End:0xB3 + if(NotEqual_InterfaceInterface(m_CachedLian.r_GraceTargets[I], TgCombatActor(none))) + { + ManageGraceTracer(I); + } + else + { + ClearGraceTracer(I); + } + I++; + // [Loop Continue] + goto J0x4E; + } + } + } + } + //return; +} + +defaultproperties +{ + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_LianInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_LongbowInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_LongbowInhand.uc new file mode 100755 index 00000000..5ae74352 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_LongbowInhand.uc @@ -0,0 +1,147 @@ +class TgWeaponMeshActor_LongbowInhand extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +var TgPawn_Longbow m_CachedLongbow; +var bool m_bPlayingPlantedFireSFX; +var bool m_bPlayingUltimateFireSFX; + +simulated function bool HasCachedLongbow() +{ + // End:0x38 + if(m_CachedLongbow == none) + { + m_CachedLongbow = TgPawn_Longbow(Instigator); + return m_CachedLongbow != none; + } + return true; + //return ReturnValue; +} + +simulated function PlayFireEffects(int nEquipSlot, float fRefireTime, int nFireMode) +{ + local bool bIsInPlanted, bIsInUltimate; + + // End:0xF0 + if((HasCachedLongbow()) && nEquipSlot == 1) + { + // End:0x87 + if(m_CachedLongbow.GetDeviceByEqPoint(2) != none) + { + bIsInUltimate = m_CachedLongbow.GetDeviceByEqPoint(2).IsFiring(); + } + // End:0xF0 + if(m_CachedLongbow.GetDeviceByEqPoint(3) != none) + { + bIsInPlanted = m_CachedLongbow.GetDeviceByEqPoint(3).IsFiring(); + } + } + // End:0x114 + if(bIsInUltimate) + { + UseUltimateFireSounds(bIsInUltimate); + } + else + { + // End:0x138 + if(bIsInPlanted) + { + UsePlantedFireSounds(bIsInPlanted); + } + else + { + UseUltimateFireSounds(false); + UsePlantedFireSounds(false); + } + } + super.PlayFireEffects(nEquipSlot, fRefireTime, nFireMode); + //return; +} + +simulated function UsePlantedFireSounds(bool bShouldUse) +{ + // End:0xA7 + if(bShouldUse && !m_bPlayingPlantedFireSFX) + { + m_bPlayingUltimateFireSFX = false; + // End:0x61 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.SetFireDisplayGroup('ShaLinPlantedFire'); + } + // End:0x98 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.SetFireDisplayGroup('ShaLinPlantedFire'); + } + m_bPlayingPlantedFireSFX = true; + } + else + { + // End:0x13F + if(!bShouldUse && m_bPlayingPlantedFireSFX) + { + // End:0xFC + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.SetFireDisplayGroup('Fire'); + } + // End:0x133 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.SetFireDisplayGroup('Fire'); + } + m_bPlayingPlantedFireSFX = false; + } + } + //return; +} + +simulated function UseUltimateFireSounds(bool bShouldUse) +{ + // End:0xA7 + if(bShouldUse && !m_bPlayingUltimateFireSFX) + { + m_bPlayingPlantedFireSFX = false; + // End:0x61 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.SetFireDisplayGroup('ShaLinUltimateFire'); + } + // End:0x98 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.SetFireDisplayGroup('ShaLinUltimateFire'); + } + m_bPlayingUltimateFireSFX = true; + } + else + { + // End:0x13F + if(!bShouldUse && m_bPlayingUltimateFireSFX) + { + // End:0xFC + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.SetFireDisplayGroup('Fire'); + } + // End:0x133 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.SetFireDisplayGroup('Fire'); + } + m_bPlayingUltimateFireSFX = false; + } + } + //return; +} + +defaultproperties +{ + m_PlayFireEffectsOn[1]=TG_PLAY_FIRE_EFFECT_ON.Fire + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_LongbowInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_OracleInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_OracleInhand.uc new file mode 100755 index 00000000..9bf0665d --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_OracleInhand.uc @@ -0,0 +1,252 @@ +class TgWeaponMeshActor_OracleInhand extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +const MAX_BEAM_SEGMENTS = 12; +const BEAM_FADE_START_DIST = 800.0f; +const BEAM_FADE_END_DIST = 3000.0f; +const BEAM_FADE_START_VALUE = 0.0f; +const BEAM_FADE_END_VALUE = 0.7f; + +var Actor m_LastRestoreSoulTarget; + +simulated function UpdateTransform(float DeltaTime, optional bool bFromCameraUpdate = false) +{ + super.UpdateTransform(DeltaTime, bFromCameraUpdate); + UpdateBeamEffects(16); + //return; +} + +simulated function bool GetSimulatedBeamTarget(out Vector HitLocation, optional int nEquipSlot) +{ + local TgPawn_Oracle TgP; + + TgP = TgPawn_Oracle(Owner); + // End:0xCD + if(TgP != none) + { + // End:0xCD + if(nEquipSlot == 16) + { + // End:0xCB + if(TgP.r_RestoreSoulTarget != none) + { + HitLocation = TgP.r_RestoreSoulTarget.Location; + HitLocation += TgP.r_RestoreSoulHitOffset; + return true; + } + else + { + return false; + } + } + } + return super.GetSimulatedBeamTarget(HitLocation, nEquipSlot); + //return ReturnValue; +} + +simulated function bool GetAccurateBeamTarget(out Vector HitLocation, int nEquipSlot) +{ + local TgPawn_Oracle TgP; + + TgP = TgPawn_Oracle(Owner); + // End:0xCC + if(TgP != none) + { + // End:0xCC + if(nEquipSlot == 16) + { + // End:0xCA + if(TgP.r_RestoreSoulTarget != none) + { + HitLocation = TgP.r_RestoreSoulTarget.Location; + HitLocation += TgP.r_RestoreSoulHitOffset; + return true; + } + else + { + return false; + } + } + } + return super.GetAccurateBeamTarget(HitLocation, nEquipSlot); + //return ReturnValue; +} + +simulated function PlayFireFx(int nEquipSlot, int nFireMode) +{ + local TgPawn_Oracle TgP; + + // End:0x114 + if(nEquipSlot == 16) + { + TgP = TgPawn_Oracle(Owner); + // End:0x114 + if(TgP != none) + { + // End:0x83 + if(TgP.r_RestoreSoulTarget == none) + { + SetLoopingMuzzleEffects(false, nEquipSlot); + ActivateFireLoopFailed(true); + return; + } + else + { + // End:0xC3 + if(TgP.r_RestoreSoulTarget != m_LastRestoreSoulTarget) + { + SetLoopingMuzzleEffects(false, nEquipSlot); + } + m_LastRestoreSoulTarget = TgP.r_RestoreSoulTarget; + ActivateFireLoopFailed(false); + super.PlayFireFx(nEquipSlot, nFireMode); + return; + } + } + } + super.PlayFireFx(nEquipSlot, nFireMode); + //return; +} + +simulated function StopFireEffects(int nEquipSlot) +{ + super.StopFireEffects(nEquipSlot); + ActivateFireLoopFailed(false); + //return; +} + +simulated function ActivateFireLoopFailed(bool bIsActive) +{ + // End:0x88 + if(bIsActive) + { + // End:0x49 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.FxActivateGroup('FireLoopFailed', 0); + } + // End:0x85 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.FxActivateGroup('FireLoopFailed', 0); + } + } + else + { + // End:0xC2 + if(m_WeaponMesh1P != none) + { + m_WeaponMesh1P.FxDeactivateGroup('FireLoopFailed', 0); + } + // End:0xFC + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.FxDeactivateGroup('FireLoopFailed', 0); + } + } + //return; +} + +simulated function UpdateFireLoopBeamParams(bool bHasEndPoint, Vector HitLocation, optional int nEquipSlot = 1) +{ + super.UpdateFireLoopBeamParams(bHasEndPoint, HitLocation, nEquipSlot); + // End:0x54 + if(bHasEndPoint) + { + SetBeamTangent(HitLocation, nEquipSlot); + } + //return; +} + +simulated function SetBeamTangent(Vector HitLocation, optional int nEquipSlot = 1) +{ + local Vector fireLoc, TargetDir, Target, Source; + local Quat targetQuat, SourceQuat; + local Rotator FireRot; + local float DistanceToTarget, AngleToTarget, AnglePerc; + local int I, J; + local editinline array FireLoopParticles; + local editinline ParticleSystemComponent Particle; + local float Perc1, Perc2, DistMult1, DistMult2, SegmentDist, FadePerc; + + GetFiringSocketTransform(fireLoc, FireRot); + TargetDir = HitLocation - fireLoc; + DistanceToTarget = VSize(TargetDir); + TargetDir = TargetDir / DistanceToTarget; + Target = TargetDir; + Source = Vector(FireRot); + AngleToTarget = RDiff(FireRot, Rotator(Target)); + AnglePerc = AngleToTarget / 180.0000000; + // End:0x10B + if(IsFirstPerson()) + { + SegmentDist = Lerp(5.0000000, 75.0000000, AnglePerc); + } + else + { + SegmentDist = Lerp(1.0000000, 35.0000000, AnglePerc * AnglePerc); + } + targetQuat = QuatFromRotator(Rotator(Target)); + SourceQuat = QuatFromRotator(Rotator(Source)); + GetAllFireLoopParticleSystemComponents(FireLoopParticles, nEquipSlot); + // End:0x458 + foreach FireLoopParticles(Particle) + { + I = 0; + J0x1B1: + + // End:0x3A8 [Loop If] + if(I < Particle.EmitterInstances.Length) + { + J = 0; + J0x1E9: + + // End:0x39A [Loop If] + if(J < 12) + { + Perc1 = float(J) / float(12 + 1); + Perc2 = float(J + 1) / float(12 + 1); + DistMult1 = Lerp(float(Min(int(SegmentDist), int(DistanceToTarget * 0.3300000))), 1.0000000, Perc1); + DistMult2 = Lerp(float(Min(int(SegmentDist), int(DistanceToTarget * 0.3300000))), 1.0000000, Perc2); + Particle.SetBeamSourceTangent(I, Vector(QuatToRotator(QuatSlerp(SourceQuat, targetQuat, Perc1))) * DistMult1, J); + Particle.SetBeamTargetTangent(I, -Vector(QuatToRotator(QuatSlerp(SourceQuat, targetQuat, Perc2))) * DistMult2, J); + J++; + // [Loop Continue] + goto J0x1E9; + } + I++; + // [Loop Continue] + goto J0x1B1; + } + // End:0x3CD + if(DistanceToTarget <= 800.0000000) + { + FadePerc = 0.0000000; + } + else + { + // End:0x3F2 + if(DistanceToTarget >= 3000.0000000) + { + FadePerc = 1.0000000; + } + else + { + FadePerc = (DistanceToTarget - 800.0000000) / (3000.0000000 - 800.0000000); + } + } + Particle.SetFloatParameter('DistanceFade', Lerp(0.0000000, 0.7000000, FadePerc)); + } + //return; +} + +defaultproperties +{ + m_PlayFireEffectsOn[16]=TG_PLAY_FIRE_EFFECT_ON.Fire + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_OracleInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_Orb.uc b/exported/TgGame/Classes/TgWeaponMeshActor_Orb.uc new file mode 100755 index 00000000..ca7204cd --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_Orb.uc @@ -0,0 +1,103 @@ +class TgWeaponMeshActor_Orb extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +var() float m_fFireGlowFadeTime; +var float m_fRemainingGlowFadeTime; + +simulated function PlayFireEffects(int nEquipSlot, float fRefireTime, int nFireMode) +{ + local MaterialInstanceConstant MIC; + local int I; + + super.PlayFireEffects(nEquipSlot, fRefireTime, nFireMode); + // End:0x111 + if((nEquipSlot == 1) && m_WeaponMesh1P != none) + { + m_fRemainingGlowFadeTime = 0.0000000; + I = 0; + J0x5F: + + // End:0x111 [Loop If] + if(I < m_WeaponMesh1P.GetNumElements()) + { + MIC = MaterialInstanceConstant(m_WeaponMesh1P.GetMaterial(I)); + // End:0x103 + if(MIC != none) + { + MIC.SetScalarParameterValue('ActiveGlow', 1.0000000); + } + I++; + // [Loop Continue] + goto J0x5F; + } + } + //return; +} + +simulated function StopFireEffects(int nEquipSlot) +{ + super.StopFireEffects(nEquipSlot); + m_fRemainingGlowFadeTime = m_fFireGlowFadeTime; + //return; +} + +simulated function Tick(float DeltaTime) +{ + local MaterialInstanceConstant MIC; + local int I; + + super.Tick(DeltaTime); + // End:0x131 + if(m_fRemainingGlowFadeTime > float(0)) + { + m_fRemainingGlowFadeTime = FMax(m_fRemainingGlowFadeTime - DeltaTime, 0.0000000); + // End:0x131 + if(m_WeaponMesh1P != none) + { + I = 0; + J0x63: + + // End:0x131 [Loop If] + if(I < m_WeaponMesh1P.GetNumElements()) + { + MIC = MaterialInstanceConstant(m_WeaponMesh1P.GetMaterial(I)); + // End:0x123 + if(MIC != none) + { + MIC.SetScalarParameterValue('ActiveGlow', FPctByRange(m_fRemainingGlowFadeTime, 0.0000000, m_fFireGlowFadeTime)); + } + I++; + // [Loop Continue] + goto J0x63; + } + } + } + //return; +} + +simulated function bool GetSimulatedBeamTarget(out Vector HitLocation, optional int nEquipSlot) +{ + local TgPawn_Grohk TgP; + + TgP = TgPawn_Grohk(Owner); + // End:0xBA + if((TgP != none) && TgP.r_InhandTarget != none) + { + HitLocation = TgP.r_InhandTarget.Location; + HitLocation += TgP.r_InhandHitOffset; + return true; + } + return super.GetSimulatedBeamTarget(HitLocation, nEquipSlot); + //return ReturnValue; +} + +defaultproperties +{ + m_fFireGlowFadeTime=1.5000000 + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_Orb.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_OwlInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_OwlInhand.uc new file mode 100755 index 00000000..cc480376 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_OwlInhand.uc @@ -0,0 +1,61 @@ +class TgWeaponMeshActor_OwlInhand extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +var TgPawn_Owl m_CachedOwl; + +simulated function PlayInstantHitImpactEffects(Vector HitLocation, bool bSuccessfulHit, Actor HitActor, Vector HitNormal, Vector FireOrigin, int nEquipSlot) +{ + local name nmOldName; + + // End:0xE4 + if((((nEquipSlot == 1) && HasCachedOwl()) && !m_CachedOwl.IsInScope()) && m_CachedOwl.IsFirstPerson()) + { + nmOldName = m_HitWallName; + m_HitWallName = 'ProjectileExplosionHitWall_B'; + super.PlayInstantHitImpactEffects(HitLocation, bSuccessfulHit, HitActor, HitNormal, FireOrigin, nEquipSlot); + m_HitWallName = nmOldName; + return; + } + super.PlayInstantHitImpactEffects(HitLocation, bSuccessfulHit, HitActor, HitNormal, FireOrigin, nEquipSlot); + //return; +} + +simulated function PlayTracerEffects(Vector endLocation, optional int nEquipSlot = 0) +{ + local name nmOldName; + + // End:0xC4 + if((((nEquipSlot == 1) && HasCachedOwl()) && !m_CachedOwl.IsInScope()) && m_CachedOwl.IsFirstPerson()) + { + nmOldName = m_HitWallName; + m_TracerName = 'TracerBeamB'; + super.PlayTracerEffects(endLocation, nEquipSlot); + m_HitWallName = nmOldName; + return; + } + super.PlayTracerEffects(endLocation, nEquipSlot); + //return; +} + +simulated function bool HasCachedOwl() +{ + // End:0x38 + if(m_CachedOwl == none) + { + m_CachedOwl = TgPawn_Owl(m_OwningPawn); + return m_CachedOwl != none; + } + return true; + //return ReturnValue; +} + +defaultproperties +{ + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_OwlInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake + m_fTracerLifetime=2.0000000 +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_PotionLauncher.uc b/exported/TgGame/Classes/TgWeaponMeshActor_PotionLauncher.uc new file mode 100755 index 00000000..9f73528d --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_PotionLauncher.uc @@ -0,0 +1,12 @@ +class TgWeaponMeshActor_PotionLauncher extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_PotionLauncher.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_RuckusInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_RuckusInhand.uc new file mode 100755 index 00000000..45ace103 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_RuckusInhand.uc @@ -0,0 +1,102 @@ +class TgWeaponMeshActor_RuckusInhand extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +var export editinline TgMuzzleFlash m_SecondaryMuzzleFlashLight; + +simulated function InitializeForWeapon(byte EquipPoint, int DeviceID, optional bool bClearEquipPoint = true) +{ + super.InitializeForWeapon(EquipPoint, DeviceID, bClearEquipPoint); + SetFireLoopDisplayGroup('DualFire', Class'TgGame.TgSkeletalMeshComponent_Weapon'.default.m_nmFireLoopTailSound); + //return; +} + +simulated function PlayFireEffects(int nEquipSlot, float fRefireTime, int nFireMode) +{ + // End:0x30 + if(nEquipSlot == 18) + { + super.PlayFireEffects(1, fRefireTime, nFireMode); + } + else + { + super.PlayFireEffects(nEquipSlot, fRefireTime, nFireMode); + } + //return; +} + +simulated function StopFireEffects(int nEquipSlot) +{ + // End:0x1E + if(nEquipSlot == 18) + { + super.StopFireEffects(1); + } + else + { + super.StopFireEffects(nEquipSlot); + } + //return; +} + +simulated function OverrideTracerFireLoc(out Vector fireLoc) +{ + local TgPawn_Ruckus Ruckus; + local TgDevice RuckusInhandDevice; + local TgDeviceForm_RuckusInhand RuckusInhandForm; + local TgDeviceForm_HexaFireGuns RuckusHexaFireForm; + + Ruckus = TgPawn_Ruckus(Owner); + // End:0x1F4 + if(Ruckus != none) + { + // End:0xF8 + if(IsFirstPerson()) + { + // End:0x8B + if(Ruckus.r_bHexaFireFiring) + { + RuckusInhandDevice = Ruckus.GetDeviceById(13219); + } + else + { + RuckusInhandDevice = Ruckus.GetDeviceByEqPoint(1); + } + // End:0xF8 + if(RuckusInhandDevice != none) + { + fireLoc = Ruckus.GetWeaponStartTraceLocation(RuckusInhandDevice); + return; + } + } + // End:0x189 + if(Ruckus.r_bHexaFireFiring) + { + RuckusHexaFireForm = TgDeviceForm_HexaFireGuns(Ruckus.c_EquipForm[18]); + // End:0x186 + if(RuckusHexaFireForm != none) + { + fireLoc = RuckusHexaFireForm.GetTracerSocketLocation(); + } + } + else + { + RuckusInhandForm = TgDeviceForm_RuckusInhand(Ruckus.c_EquipForm[1]); + // End:0x1F4 + if(RuckusInhandForm != none) + { + fireLoc = RuckusInhandForm.GetTracerSocketLocation(); + } + } + } + //return; +} + +defaultproperties +{ + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_RuckusInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_SkyeInHand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_SkyeInHand.uc new file mode 100755 index 00000000..711506c0 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_SkyeInHand.uc @@ -0,0 +1,12 @@ +class TgWeaponMeshActor_SkyeInHand extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +defaultproperties +{ + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_SkyeInHand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_Sniper.uc b/exported/TgGame/Classes/TgWeaponMeshActor_Sniper.uc new file mode 100755 index 00000000..599f807a --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_Sniper.uc @@ -0,0 +1,17 @@ +class TgWeaponMeshActor_Sniper extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +simulated function SetLoopingMuzzleEffects(bool bSetActive, optional int nEquipSlot = 1) +{ + //return; +} + +defaultproperties +{ + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_Sniper.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_TyraInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_TyraInhand.uc new file mode 100755 index 00000000..76665809 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_TyraInhand.uc @@ -0,0 +1,69 @@ +class TgWeaponMeshActor_TyraInhand extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +var TgPawn_Tyra m_CachedTyra; +var() float m_fWeaponZoomFOV; +var() float m_fWeaponFOVDefault; +var() float m_fDoFMultiplier; + +simulated function bool HasCachedTyra() +{ + // End:0x38 + if(m_CachedTyra == none) + { + m_CachedTyra = TgPawn_Tyra(Instigator); + return m_CachedTyra != none; + } + return true; + //return ReturnValue; +} + +simulated function UpdateTransform(float DeltaTime, optional bool bFromCameraUpdate = false) +{ + local TgPlayerController TgPC; + local TgPlayerCamera Cam; + local float fZoomPct; + + super.UpdateTransform(DeltaTime, bFromCameraUpdate); + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x87 + if(((TgPC == none) || m_WeaponMesh1P == none) || TgPC.PlayerCamera == none) + { + return; + } + Cam = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xC9 + if(Cam == none) + { + return; + } + // End:0x204 + if(m_WeaponMesh1P != none) + { + fZoomPct = Cam.GetFOVInterpZoomPct(); + // End:0x18C + if(HasCachedTyra()) + { + m_CachedTyra.m_CurrentDOFSettings.IsActive = fZoomPct > 0.0000000; + m_CachedTyra.m_CurrentDOFSettings.MaxNearBlurAmount = fZoomPct; + } + m_WeaponMesh1P.SetFOV(Lerp(m_fWeaponFOVDefault, m_fWeaponZoomFOV, fZoomPct)); + m_HandsMesh.SetFOV(Lerp(m_fWeaponFOVDefault, m_fWeaponZoomFOV, fZoomPct)); + } + //return; +} + +defaultproperties +{ + m_fWeaponZoomFOV=45.0000000 + m_fWeaponFOVDefault=77.0000000 + m_fDoFMultiplier=1.0000000 + m_PlayFireEffectsOn[1]=TG_PLAY_FIRE_EFFECT_ON.Fire + m_PlayFireEffectsOn[16]=TG_PLAY_FIRE_EFFECT_ON.Fire + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_TyraInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_ViktorInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_ViktorInhand.uc new file mode 100755 index 00000000..06e318d5 --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_ViktorInhand.uc @@ -0,0 +1,107 @@ +class TgWeaponMeshActor_ViktorInhand extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +var TgPawn_Viktor m_CachedViktor; +var() float m_fWeaponZoomFOV; +var() float m_fWeaponFOVDefault; +var() float m_fDoFMultiplier; +var bool m_bPlayingADSFX; + +simulated function Rotator ApplyRotationModifier(Rotator NewRotation) +{ + // End:0x36 + if(HasCachedViktor()) + { + return m_CachedViktor.ApplyRecoilToRotation(NewRotation); + } + return NewRotation; + //return ReturnValue; +} + +simulated function bool HasCachedViktor() +{ + // End:0x38 + if(m_CachedViktor == none) + { + m_CachedViktor = TgPawn_Viktor(Instigator); + return m_CachedViktor != none; + } + return true; + //return ReturnValue; +} + +simulated function UpdateTransform(float DeltaTime, optional bool bFromCameraUpdate = false) +{ + local TgPlayerController TgPC; + local TgPlayerCamera Cam; + local float fZoomPct; + + super.UpdateTransform(DeltaTime, bFromCameraUpdate); + TgPC = TgPlayerController(GetALocalPlayerController()); + // End:0x87 + if(((TgPC == none) || m_WeaponMesh1P == none) || TgPC.PlayerCamera == none) + { + return; + } + Cam = TgPlayerCamera(TgPC.PlayerCamera); + // End:0xC9 + if(Cam == none) + { + return; + } + // End:0x21E + if(m_WeaponMesh1P != none) + { + fZoomPct = Cam.GetFOVInterpZoomPct(); + UseADSFireSounds(fZoomPct > 0.0000000); + // End:0x1A6 + if(HasCachedViktor()) + { + m_CachedViktor.m_CurrentDOFSettings.IsActive = fZoomPct > 0.0000000; + m_CachedViktor.m_CurrentDOFSettings.MaxNearBlurAmount = fZoomPct; + } + m_WeaponMesh1P.SetFOV(Lerp(m_fWeaponFOVDefault, m_fWeaponZoomFOV, fZoomPct)); + m_HandsMesh.SetFOV(Lerp(m_fWeaponFOVDefault, m_fWeaponZoomFOV, fZoomPct)); + } + //return; +} + +simulated function UseADSFireSounds(bool bShouldUse) +{ + // End:0x11 + if(m_WeaponMesh1P == none) + { + return; + } + // End:0xAC + if(bShouldUse && !m_bPlayingADSFX) + { + m_WeaponMesh1P.SetFireDisplayGroup('FireADS'); + m_WeaponMesh1P.SetFireLoopDisplayGroup('FireLoopADS', m_WeaponMesh1P.m_nmFireLoopTailSound); + m_bPlayingADSFX = true; + } + else + { + // End:0x144 + if(!bShouldUse && m_bPlayingADSFX) + { + m_WeaponMesh1P.SetFireDisplayGroup('Fire'); + m_WeaponMesh1P.SetFireLoopDisplayGroup('FireLoop', m_WeaponMesh1P.m_nmFireLoopTailSound); + m_bPlayingADSFX = false; + } + } + //return; +} + +defaultproperties +{ + m_fWeaponZoomFOV=45.0000000 + m_fWeaponFOVDefault=77.0000000 + m_fDoFMultiplier=1.0000000 + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_ViktorInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_YingInhand.uc b/exported/TgGame/Classes/TgWeaponMeshActor_YingInhand.uc new file mode 100755 index 00000000..9841277d --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_YingInhand.uc @@ -0,0 +1,74 @@ +class TgWeaponMeshActor_YingInhand extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +var bool m_bHasFinishedBurst; + +simulated function InitializeForWeapon(byte EquipPoint, int DeviceID, optional bool bClearEquipPoint = true) +{ + super.InitializeForWeapon(EquipPoint, DeviceID, bClearEquipPoint); + // End:0x67 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.FxActivateGroup('MirrorActive', 0); + } + //return; +} + +simulated function bool GetSimulatedBeamTarget(out Vector HitLocation, optional int nEquipSlot) +{ + local TgPawn_Ying TgP; + + TgP = TgPawn_Ying(Owner); + // End:0xBA + if((TgP != none) && TgP.r_InhandTarget != none) + { + HitLocation = TgP.r_InhandTarget.Location; + HitLocation += TgP.r_InhandHitOffset; + return true; + } + return super.GetSimulatedBeamTarget(HitLocation, nEquipSlot); + //return ReturnValue; +} + +simulated function PlayFireAnimation(int nEquipSlot, float fRefireTime) +{ + // End:0x2D + if(nEquipSlot != 1) + { + super.PlayFireAnimation(nEquipSlot, fRefireTime); + return; + } + // End:0x61 + if(m_bHasFinishedBurst) + { + m_bHasFinishedBurst = false; + super.PlayFireAnimation(nEquipSlot, 0.7000000); + } + else + { + // End:0x93 + if(fRefireTime > 0.3000000) + { + m_bHasFinishedBurst = true; + SetTimer(0.3000000, false, 'EndYingLoopingBeam'); + } + } + //return; +} + +simulated function EndYingLoopingBeam() +{ + SetLoopingMuzzleEffects(false); + //return; +} + +defaultproperties +{ + m_bHasFinishedBurst=true + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_YingInhand.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file diff --git a/exported/TgGame/Classes/TgWeaponMeshActor_YingInhandProj.uc b/exported/TgGame/Classes/TgWeaponMeshActor_YingInhandProj.uc new file mode 100755 index 00000000..7dbb562e --- /dev/null +++ b/exported/TgGame/Classes/TgWeaponMeshActor_YingInhandProj.uc @@ -0,0 +1,28 @@ +class TgWeaponMeshActor_YingInhandProj extends TgWeaponMeshActor + notplaceable + hidecategories(Navigation); + +simulated function InitializeForWeapon(byte EquipPoint, int DeviceID, optional bool bClearEquipPoint = true) +{ + super.InitializeForWeapon(EquipPoint, DeviceID, bClearEquipPoint); + // End:0x67 + if(m_WeaponMesh3P != none) + { + m_WeaponMesh3P.FxActivateGroup('MirrorActive', 0); + } + //return; +} + +simulated function SetLoopingMuzzleEffects(bool bSetActive, optional int nEquipSlot = 1) +{ + //return; +} + +defaultproperties +{ + // Reference: TgCameraShake'TgGame.Default__TgWeaponMeshActor_YingInhandProj.CameraShake' + // Archetype: TgCameraShake'TgGame.Default__TgWeaponMeshActor.CameraShake' + begin object name="CameraShake" + end object + m_FireCameraShake=CameraShake +} \ No newline at end of file From fbd8e29b184a5f6d5817ce3ee40f6dbbac650772 Mon Sep 17 00:00:00 2001 From: Tom Ferriere Date: Mon, 3 Aug 2026 07:10:15 +0200 Subject: [PATCH 04/73] add gfxui --- exported/GFxUI/Classes/FlashMovie.uc | 5 + .../GFxUI/Classes/GFxAction_CloseMovie.uc | 20 + .../GFxUI/Classes/GFxAction_GetVariable.uc | 20 + exported/GFxUI/Classes/GFxAction_Invoke.uc | 21 + exported/GFxUI/Classes/GFxAction_OpenMovie.uc | 35 ++ .../GFxUI/Classes/GFxAction_SetCaptureKeys.uc | 15 + .../GFxUI/Classes/GFxAction_SetVariable.uc | 20 + exported/GFxUI/Classes/GFxClikWidget.uc | 104 ++++ exported/GFxUI/Classes/GFxEngine.uc | 26 + exported/GFxUI/Classes/GFxEvent_FSCommand.uc | 16 + exported/GFxUI/Classes/GFxFSCmdHandler.uc | 8 + .../GFxUI/Classes/GFxFSCmdHandler_Kismet.uc | 5 + exported/GFxUI/Classes/GFxInteraction.uc | 26 + exported/GFxUI/Classes/GFxMoviePlayer.uc | 555 ++++++++++++++++++ exported/GFxUI/Classes/GFxObject.uc | 391 ++++++++++++ exported/GFxUI/Classes/GFxRawData.uc | 9 + exported/GFxUI/Classes/GFxUI.UPKG | 4 + exported/GFxUI/Classes/SwfMovie.uc | 32 + 18 files changed, 1312 insertions(+) create mode 100755 exported/GFxUI/Classes/FlashMovie.uc create mode 100755 exported/GFxUI/Classes/GFxAction_CloseMovie.uc create mode 100755 exported/GFxUI/Classes/GFxAction_GetVariable.uc create mode 100755 exported/GFxUI/Classes/GFxAction_Invoke.uc create mode 100755 exported/GFxUI/Classes/GFxAction_OpenMovie.uc create mode 100755 exported/GFxUI/Classes/GFxAction_SetCaptureKeys.uc create mode 100755 exported/GFxUI/Classes/GFxAction_SetVariable.uc create mode 100755 exported/GFxUI/Classes/GFxClikWidget.uc create mode 100755 exported/GFxUI/Classes/GFxEngine.uc create mode 100755 exported/GFxUI/Classes/GFxEvent_FSCommand.uc create mode 100755 exported/GFxUI/Classes/GFxFSCmdHandler.uc create mode 100755 exported/GFxUI/Classes/GFxFSCmdHandler_Kismet.uc create mode 100755 exported/GFxUI/Classes/GFxInteraction.uc create mode 100755 exported/GFxUI/Classes/GFxMoviePlayer.uc create mode 100755 exported/GFxUI/Classes/GFxObject.uc create mode 100755 exported/GFxUI/Classes/GFxRawData.uc create mode 100755 exported/GFxUI/Classes/GFxUI.UPKG create mode 100755 exported/GFxUI/Classes/SwfMovie.uc diff --git a/exported/GFxUI/Classes/FlashMovie.uc b/exported/GFxUI/Classes/FlashMovie.uc new file mode 100755 index 00000000..89dc528c --- /dev/null +++ b/exported/GFxUI/Classes/FlashMovie.uc @@ -0,0 +1,5 @@ +class FlashMovie extends SwfMovie + native + editinlinenew + hidecategories(Object) + autoexpandcategories(Import); diff --git a/exported/GFxUI/Classes/GFxAction_CloseMovie.uc b/exported/GFxUI/Classes/GFxAction_CloseMovie.uc new file mode 100755 index 00000000..f86f012e --- /dev/null +++ b/exported/GFxUI/Classes/GFxAction_CloseMovie.uc @@ -0,0 +1,20 @@ +class GFxAction_CloseMovie extends SequenceAction + native(UISequence) + forcescriptorder(true) + hidecategories(Object); + +var GFxMoviePlayer Movie; +var() bool bUnload; + +event bool IsValidLevelSequenceObject() +{ + return true; + //return ReturnValue; +} + +defaultproperties +{ + bUnload=true + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Movie Player",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Close GFx Movie" +} \ No newline at end of file diff --git a/exported/GFxUI/Classes/GFxAction_GetVariable.uc b/exported/GFxUI/Classes/GFxAction_GetVariable.uc new file mode 100755 index 00000000..dbe119ee --- /dev/null +++ b/exported/GFxUI/Classes/GFxAction_GetVariable.uc @@ -0,0 +1,20 @@ +class GFxAction_GetVariable extends SequenceAction + native(UISequence) + forcescriptorder(true) + hidecategories(Object); + +var GFxMoviePlayer Movie; +var() string Variable; + +event bool IsValidLevelSequenceObject() +{ + return true; + //return ReturnValue; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SequenceVariable',LinkedVariables=none,LinkDesc="Result",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Movie Player",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="GFx GetVariable" +} \ No newline at end of file diff --git a/exported/GFxUI/Classes/GFxAction_Invoke.uc b/exported/GFxUI/Classes/GFxAction_Invoke.uc new file mode 100755 index 00000000..181786fc --- /dev/null +++ b/exported/GFxUI/Classes/GFxAction_Invoke.uc @@ -0,0 +1,21 @@ +class GFxAction_Invoke extends SequenceAction + native(UISequence) + forcescriptorder(true) + hidecategories(Object); + +var GFxMoviePlayer Movie; +var(Invoke) string MethodName; +var(Invoke) array Arguments; + +event bool IsValidLevelSequenceObject() +{ + return true; + //return ReturnValue; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SequenceVariable',LinkedVariables=none,LinkDesc="Result",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Movie Player",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="GFx Invoke ActionScript" +} \ No newline at end of file diff --git a/exported/GFxUI/Classes/GFxAction_OpenMovie.uc b/exported/GFxUI/Classes/GFxAction_OpenMovie.uc new file mode 100755 index 00000000..daff86d7 --- /dev/null +++ b/exported/GFxUI/Classes/GFxAction_OpenMovie.uc @@ -0,0 +1,35 @@ +class GFxAction_OpenMovie extends SequenceAction + native(UISequence) + forcescriptorder(true) + hidecategories(Object); + +var() SwfMovie Movie; +var() Class MoviePlayerClass; +var GFxMoviePlayer MoviePlayer; +var() bool bTakeFocus; +var() bool bCaptureInput; +var() bool bStartPaused; +var bool bEnableGammaCorrection; +var() bool bDisplayWithHudOff; +var() GFxMoviePlayer.GFxRenderTextureMode RenderTextureMode; +var() TextureRenderTarget2D RenderTexture; +var() array CaptureKeys; +var() array FocusIgnoreKeys; + +event bool IsValidLevelSequenceObject() +{ + return true; + //return ReturnValue; +} + +defaultproperties +{ + MoviePlayerClass=Class'GFxUI.GFxMoviePlayer' + bDisplayWithHudOff=true + OutputLinks[0]=(Links=none,LinkDesc="Success",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + OutputLinks[1]=(Links=none,LinkDesc="Failed",bHasImpulse=false,bDisabled=false,bDisabledPIE=false,LinkedOp=none,ActivateDelay=0.0000000,DrawY=0,bHidden=false,bMoving=false,bClampedMax=false,bClampedMin=false,bIsActivated=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="External Interface",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Player Owner",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[2]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Movie Player",LinkVar="None",PropertyName="None",bWriteable=true,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Open GFx Movie" +} \ No newline at end of file diff --git a/exported/GFxUI/Classes/GFxAction_SetCaptureKeys.uc b/exported/GFxUI/Classes/GFxAction_SetCaptureKeys.uc new file mode 100755 index 00000000..4c085254 --- /dev/null +++ b/exported/GFxUI/Classes/GFxAction_SetCaptureKeys.uc @@ -0,0 +1,15 @@ +class GFxAction_SetCaptureKeys extends SequenceAction + native(UISequence) + forcescriptorder(true) + hidecategories(Object); + +var GFxMoviePlayer Movie; +var() array CaptureKeys; + +defaultproperties +{ + InputLinks[0]=(LinkDesc="Activate",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + InputLinks[1]=(LinkDesc="DeActivate",bHasImpulse=false,QueuedActivations=0,bDisabled=false,bDisabledPIE=false,LinkedOp=none,DrawY=0,bHidden=false,ActivateDelay=0.0000000,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Movie Player",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="Set Gfx Captured Keys" +} \ No newline at end of file diff --git a/exported/GFxUI/Classes/GFxAction_SetVariable.uc b/exported/GFxUI/Classes/GFxAction_SetVariable.uc new file mode 100755 index 00000000..a1876151 --- /dev/null +++ b/exported/GFxUI/Classes/GFxAction_SetVariable.uc @@ -0,0 +1,20 @@ +class GFxAction_SetVariable extends SequenceAction + native(UISequence) + forcescriptorder(true) + hidecategories(Object); + +var GFxMoviePlayer Movie; +var() string Variable; + +event bool IsValidLevelSequenceObject() +{ + return true; + //return ReturnValue; +} + +defaultproperties +{ + VariableLinks[0]=(ExpectedType=Class'Engine.SequenceVariable',LinkedVariables=none,LinkDesc="Value",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + VariableLinks[1]=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=none,LinkDesc="Movie Player",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="GFx SetVariable" +} \ No newline at end of file diff --git a/exported/GFxUI/Classes/GFxClikWidget.uc b/exported/GFxUI/Classes/GFxClikWidget.uc new file mode 100755 index 00000000..a3c2ea2c --- /dev/null +++ b/exported/GFxUI/Classes/GFxClikWidget.uc @@ -0,0 +1,104 @@ +class GFxClikWidget extends GFxObject within GFxMoviePlayer; + +struct EventData +{ + var GFxObject _this; + var GFxObject Target; + var string Type; + var int Data; + var int mouseIndex; + var int Button; + var int Index; + var int lastIndex; + + structdefaultproperties + { + _this=none + Target=none + Type="" + Data=0 + mouseIndex=0 + Button=0 + Index=0 + lastIndex=0 + } +}; + +//var delegate __EventListener__Delegate; + +delegate EventListener(EventData Data) +{ + //return; +} + +function AddEventListener(name Type, delegate Listener, optional bool useCapture = false, optional int listenerPriority = 0, optional bool useWeakReference = false) +{ + local GFxObject O, funcobj; + local string TypeString; + + TypeString = GetEventStringFromTypename(Type); + // End:0x14E + if(TypeString != "") + { + O = Outer.CreateObject("Object"); + SetListener(O, TypeString, Listener); + // End:0x129 + if(Outer.GetAVMVersion() == 2) + { + funcobj = O.GetObject(TypeString); + AS3AddEventListener(TypeString, funcobj, useCapture, listenerPriority, useWeakReference); + } + else + { + ASAddEventListener(TypeString, O, TypeString); + } + } + //return; +} + +function RemoveAllEventListeners(string Event) +{ + ASRemoveAllEventListeners(Event); + //return; +} + +private final function string GetEventStringFromTypename(name Typename) +{ + local string TypeString; + + TypeString = string(Typename); + // End:0x4F + if(InStr(TypeString, "CLIK_") >= 0) + { + return Split(TypeString, "CLIK_", true); + } + else + { + return ""; + } + //return ReturnValue; +} + +private final function SetListener(GFxObject O, string Member, delegate Listener) +{ + ActionScriptSetFunctionOn(O, Member); + //return; +} + +private final function ASAddEventListener(string Type, GFxObject O, string func) +{ + ActionScriptVoid("addEventListener"); + //return; +} + +private final function AS3AddEventListener(string Type, GFxObject O, optional bool useCapture = false, optional int listenerPriority = 0, optional bool useWeakReference = true) +{ + ActionScriptVoid("addEventListener"); + //return; +} + +private final function ASRemoveAllEventListeners(string Event) +{ + ActionScriptVoid("removeAllEventListeners"); + //return; +} diff --git a/exported/GFxUI/Classes/GFxEngine.uc b/exported/GFxUI/Classes/GFxEngine.uc new file mode 100755 index 00000000..d72583b6 --- /dev/null +++ b/exported/GFxUI/Classes/GFxEngine.uc @@ -0,0 +1,26 @@ +class GFxEngine extends Object + native + config(Engine); + +struct native GCReference +{ + var const Object m_object; + var int m_count; + var int m_statid; + + structdefaultproperties + { + m_object=none + m_count=0 + m_statid=0 + } +}; + +var private transient array GCReferences; +var private transient int RefCount; +var config array ForceGarbageCollectUponReleaseTextures; + +defaultproperties +{ + RefCount=1 +} \ No newline at end of file diff --git a/exported/GFxUI/Classes/GFxEvent_FSCommand.uc b/exported/GFxUI/Classes/GFxEvent_FSCommand.uc new file mode 100755 index 00000000..791e7a09 --- /dev/null +++ b/exported/GFxUI/Classes/GFxEvent_FSCommand.uc @@ -0,0 +1,16 @@ +class GFxEvent_FSCommand extends SequenceEvent + native(UISequence) + forcescriptorder(true) + hidecategories(Object); + +var() SwfMovie Movie; +var() string FSCommand; +var GFxFSCmdHandler_Kismet Handler; + +defaultproperties +{ + MaxTriggerCount=0 + bPlayerOnly=false + VariableLinks[0]=(ExpectedType=Class'Engine.SeqVar_String',LinkedVariables=none,LinkDesc="Argument",LinkVar="None",PropertyName="None",bWriteable=false,bSequenceNeverReadsOnlyWritesToThisVar=false,bModifiesLinkedObject=false,bHidden=false,MinVars=1,MaxVars=255,DrawX=0,CachedProperty=none,bAllowAnyType=false,bMoving=false,bClampedMax=false,bClampedMin=false) + ObjName="FsCommand" +} \ No newline at end of file diff --git a/exported/GFxUI/Classes/GFxFSCmdHandler.uc b/exported/GFxUI/Classes/GFxFSCmdHandler.uc new file mode 100755 index 00000000..a7f4006d --- /dev/null +++ b/exported/GFxUI/Classes/GFxFSCmdHandler.uc @@ -0,0 +1,8 @@ +class GFxFSCmdHandler extends Object + abstract + native; + +event bool FSCommand(GFxMoviePlayer Movie, GFxEvent_FSCommand Event, string Cmd, string Arg) +{ + //return ReturnValue; +} diff --git a/exported/GFxUI/Classes/GFxFSCmdHandler_Kismet.uc b/exported/GFxUI/Classes/GFxFSCmdHandler_Kismet.uc new file mode 100755 index 00000000..02c26bc3 --- /dev/null +++ b/exported/GFxUI/Classes/GFxFSCmdHandler_Kismet.uc @@ -0,0 +1,5 @@ +class GFxFSCmdHandler_Kismet extends GFxFSCmdHandler + native(UISequence); + +// Export UGFxFSCmdHandler_Kismet::execFSCommand(FFrame&, void* const) +native event bool FSCommand(GFxMoviePlayer Movie, GFxEvent_FSCommand Event, string Cmd, string Arg); diff --git a/exported/GFxUI/Classes/GFxInteraction.uc b/exported/GFxUI/Classes/GFxInteraction.uc new file mode 100755 index 00000000..de18a810 --- /dev/null +++ b/exported/GFxUI/Classes/GFxInteraction.uc @@ -0,0 +1,26 @@ +class GFxInteraction extends Interaction + transient + native + config(Engine) + hidecategories(Object,UIRoot); + +var private native const noexport Pointer VfTable_FCallbackEventDevice; +var bool bFakeMobileTouches; + +// Export UGFxInteraction::execGetFocusMovie(FFrame&, void* const) +native function GFxMoviePlayer GetFocusMovie(int ControllerId); + +// Export UGFxInteraction::execNotifyGameSessionEnded(FFrame&, void* const) +native function NotifyGameSessionEnded(); + +// Export UGFxInteraction::execNotifyPlayerAdded(FFrame&, void* const) +native function NotifyPlayerAdded(int PlayerIndex, LocalPlayer AddedPlayer); + +// Export UGFxInteraction::execNotifyPlayerRemoved(FFrame&, void* const) +native function NotifyPlayerRemoved(int PlayerIndex, LocalPlayer RemovedPlayer); + +// Export UGFxInteraction::execNotifySplitscreenLayoutChanged(FFrame&, void* const) +native function NotifySplitscreenLayoutChanged(); + +// Export UGFxInteraction::execCloseAllMoviePlayers(FFrame&, void* const) +native function CloseAllMoviePlayers(); diff --git a/exported/GFxUI/Classes/GFxMoviePlayer.uc b/exported/GFxUI/Classes/GFxMoviePlayer.uc new file mode 100755 index 00000000..2bfecf57 --- /dev/null +++ b/exported/GFxUI/Classes/GFxMoviePlayer.uc @@ -0,0 +1,555 @@ +class GFxMoviePlayer extends Object + native + config(UI); + +enum GFxTimingMode +{ + TM_Game, // 0 + TM_Real, // 1 + TM_MAX // 2 +}; + +enum GFxRenderTextureMode +{ + RTM_Opaque, // 0 + RTM_Alpha, // 1 + RTM_AlphaComposite, // 2 + RTM_MAX // 3 +}; + +enum ASType +{ + AS_Undefined, // 0 + AS_Null, // 1 + AS_Number, // 2 + AS_Int, // 3 + AS_String, // 4 + AS_Boolean, // 5 + AS_MAX // 6 +}; + +enum GFxScaleMode +{ + SM_NoScale, // 0 + SM_ShowAll, // 1 + SM_ExactFit, // 2 + SM_NoBorder, // 3 + SM_MAX // 4 +}; + +enum GFxAlign +{ + Align_Center, // 0 + Align_TopCenter, // 1 + Align_BottomCenter, // 2 + Align_CenterLeft, // 3 + Align_CenterRight, // 4 + Align_TopLeft, // 5 + Align_TopRight, // 6 + Align_BottomLeft, // 7 + Align_BottomRight, // 8 + Align_MAX // 9 +}; + +struct native ExternalTexture +{ + var() string Resource; + var() Texture Texture; + + structdefaultproperties + { + Resource="" + Texture=none + } +}; + +struct native SoundThemeBinding +{ + var() name ThemeName; + var() UISoundTheme Theme; + var() string ThemeClassName; + + structdefaultproperties + { + ThemeName="None" + Theme=none + ThemeClassName="" + } +}; + +struct native GFxWidgetBinding +{ + var() name WidgetName; + var() Class WidgetClass; + + structdefaultproperties + { + WidgetName="None" + WidgetClass=none + } +}; + +struct native GFxStoredViewportParams +{ + var int X; + var int Y; + var int Width; + var int Height; + var bool bInitialized; + + structdefaultproperties + { + X=0 + Y=0 + Width=0 + Height=0 + bInitialized=false + } +}; + +struct native ASValue +{ + var() GFxMoviePlayer.ASType Type; + var() bool B; + var() float N; + var() int I; + var() init string S; + + structdefaultproperties + { + Type=ASType.AS_Undefined + B=false + N=0.0000000 + I=0 + S="" + } +}; + +var native const transient Pointer pMovie; +var native const transient Pointer pCaptureKeys; +var native const transient Pointer pFocusIgnoreKeys; +var private native const transient map{VOID,VOID} ASUClasses; +var private native const transient map{VOID,VOID} ASUObjects; +var private const transient int NextASUObject; +var SwfMovie MovieInfo; +var const bool bMovieIsOpen; +var bool bDisplayWithHudOff; +var bool bEnableGammaCorrection; +var const transient bool bWidgetsInitializedThisFrame; +var bool bLogUnhandedWidgetInitializations; +var bool bAllowInput; +var bool bAllowFocus; +var bool bAutoPlay; +var bool bPauseGameWhileActive; +var bool bDisableWorldRendering; +var bool bCaptureWorldRendering; +var bool bCloseOnLevelChange; +var bool bOnlyOwnerFocusable; +var bool bForceFullViewport; +var bool bDiscardNonOwnerInput; +var bool bCaptureInput; +var bool bCaptureMouseInput; +var bool bIgnoreMouseInput; +var transient bool bIsSplitscreenLayoutModified; +var bool bShowHardwareMouseCursor; +var bool bBlurLesserMovies; +var bool bHideLesserMovies; +var bool bIsPriorityBlurred; +var bool bIsPriorityHidden; +var bool bIgnoreVisibilityEffect; +var bool bIgnoreBlurEffect; +var() TextureRenderTarget2D RenderTexture; +var transient int LocalPlayerOwnerIndex; +var Object ExternalInterface; +var array CaptureKeys; +var array FocusIgnoreKeys; +var array ExternalTextures; +var() array SoundThemes; +var private GFxMoviePlayer.GFxTimingMode TimingMode; +var GFxMoviePlayer.GFxRenderTextureMode RenderTextureMode; +var private byte Priority; +var array WidgetBindings; +var native const map{VOID,VOID} WidgetPathBindings; +var transient GFxObject SplitscreenLayoutObject; +var config int SplitscreenLayoutYAdjust; +var GFxStoredViewportParams m_StoredViewportParams; +//var delegate __OnPostAdvance__Delegate; + +// Export UGFxMoviePlayer::execStart(FFrame&, void* const) +native event bool Start(optional bool StartPaused = false); + +// Export UGFxMoviePlayer::execAdvance(FFrame&, void* const) +native final function Advance(float Time); + +// Export UGFxMoviePlayer::execPostAdvance(FFrame&, void* const) +native function PostAdvance(float DeltaTime); + +delegate OnPostAdvance(float DeltaTime) +{ + //return; +} + +// Export UGFxMoviePlayer::execSetPause(FFrame&, void* const) +native function SetPause(optional bool bPausePlayback = true); + +// Export UGFxMoviePlayer::execClose(FFrame&, void* const) +native final function Close(optional bool Unload = true); + +event OnClose() +{ + //return; +} + +event OnCleanup() +{ + //return; +} + +final event ConditionalClearPause() +{ + local LocalPlayer LP; + + // End:0x8C + if(bPauseGameWhileActive) + { + LP = GetLP(); + // End:0x8C + if((LP != none) && LP.Actor != none) + { + LP.Actor.SetPause(false); + } + } + //return; +} + +function SetMovieInfo(SwfMovie Data) +{ + MovieInfo = Data; + //return; +} + +// Export UGFxMoviePlayer::execSetTimingMode(FFrame&, void* const) +native function SetTimingMode(GFxMoviePlayer.GFxTimingMode Mode); + +function SetExternalInterface(Object H) +{ + ExternalInterface = H; + //return; +} + +// Export UGFxMoviePlayer::execSetExternalTexture(FFrame&, void* const) +native function bool SetExternalTexture(string Resource, Texture Texture); + +// Export UGFxMoviePlayer::execSetPriority(FFrame&, void* const) +native function SetPriority(byte NewPriority); + +// Export UGFxMoviePlayer::execGetGameViewportClient(FFrame&, void* const) +native final function GameViewportClient GetGameViewportClient(); + +// Export UGFxMoviePlayer::execSetViewport(FFrame&, void* const) +native final function SetViewport(int X, int Y, int Width, int Height); + +// Export UGFxMoviePlayer::execGetViewport(FFrame&, void* const) +native final function GetViewport(out int X, out int Y, out int Width, out int Height); + +// Export UGFxMoviePlayer::execScreenToViewport(FFrame&, void* const) +native final function ScreenToViewport(int X, int Y, out int xOut, out int yOut); + +// Export UGFxMoviePlayer::execViewportToScreen(FFrame&, void* const) +native final function ViewportToScreen(int X, int Y, out int xOut, out int yOut); + +// Export UGFxMoviePlayer::execSetViewScaleMode(FFrame&, void* const) +native final function SetViewScaleMode(GFxMoviePlayer.GFxScaleMode SM); + +// Export UGFxMoviePlayer::execSetAlignment(FFrame&, void* const) +native final function SetAlignment(GFxMoviePlayer.GFxAlign A); + +// Export UGFxMoviePlayer::execGetVisibleFrameRect(FFrame&, void* const) +native final function GetVisibleFrameRect(out float x0, out float y0, out float X1, out float Y1); + +// Export UGFxMoviePlayer::execSetView3D(FFrame&, void* const) +native final function SetView3D(const out Matrix matView); + +// Export UGFxMoviePlayer::execSetPerspective3D(FFrame&, void* const) +native final function SetPerspective3D(const out Matrix matPersp); + +// Export UGFxMoviePlayer::execSetMovieCanReceiveFocus(FFrame&, void* const) +native final function SetMovieCanReceiveFocus(bool bCanReceiveFocus); + +// Export UGFxMoviePlayer::execSetMovieCanReceiveInput(FFrame&, void* const) +native final function SetMovieCanReceiveInput(bool bCanReceiveInput); + +// Export UGFxMoviePlayer::execAddCaptureKey(FFrame&, void* const) +native final function AddCaptureKey(name Key); + +// Export UGFxMoviePlayer::execClearCaptureKeys(FFrame&, void* const) +native final function ClearCaptureKeys(); + +// Export UGFxMoviePlayer::execAddFocusIgnoreKey(FFrame&, void* const) +native final function AddFocusIgnoreKey(name Key); + +// Export UGFxMoviePlayer::execClearFocusIgnoreKeys(FFrame&, void* const) +native final function ClearFocusIgnoreKeys(); + +// Export UGFxMoviePlayer::execFlushPlayerInput(FFrame&, void* const) +native final function FlushPlayerInput(bool capturekeysonly); + +event bool FilterButtonInput(int ControllerId, name ButtonName, Object.EInputEvent InputEvent) +{ + //return ReturnValue; +} + +event bool ShouldBlockKey(int ControllerId, name ButtonName, Object.EInputEvent InputEvent) +{ + //return ReturnValue; +} + +// Export UGFxMoviePlayer::execGetAVMVersion(FFrame&, void* const) +native function int GetAVMVersion(); + +// Export UGFxMoviePlayer::execGetVariable(FFrame&, void* const) +native function ASValue GetVariable(string Path); + +// Export UGFxMoviePlayer::execGetVariableBool(FFrame&, void* const) +native function bool GetVariableBool(string Path); + +// Export UGFxMoviePlayer::execGetVariableNumber(FFrame&, void* const) +native function float GetVariableNumber(string Path); + +// Export UGFxMoviePlayer::execGetVariableInt(FFrame&, void* const) +native function int GetVariableInt(string Path); + +// Export UGFxMoviePlayer::execGetVariableString(FFrame&, void* const) +native function string GetVariableString(string Path); + +// Export UGFxMoviePlayer::execGetVariableObject(FFrame&, void* const) +native function GFxObject GetVariableObject(string Path, optional Class Type); + +// Export UGFxMoviePlayer::execSetVariable(FFrame&, void* const) +native function SetVariable(string Path, ASValue Arg); + +// Export UGFxMoviePlayer::execSetVariableBool(FFrame&, void* const) +native function SetVariableBool(string Path, bool B); + +// Export UGFxMoviePlayer::execSetVariableNumber(FFrame&, void* const) +native function SetVariableNumber(string Path, float F); + +// Export UGFxMoviePlayer::execSetVariableInt(FFrame&, void* const) +native function SetVariableInt(string Path, int I); + +// Export UGFxMoviePlayer::execSetVariableString(FFrame&, void* const) +native function SetVariableString(string Path, string S); + +// Export UGFxMoviePlayer::execSetVariableObject(FFrame&, void* const) +native function SetVariableObject(string Path, GFxObject Object); + +// Export UGFxMoviePlayer::execGetVariableArray(FFrame&, void* const) +native function bool GetVariableArray(string Path, int Index, out array Arg); + +// Export UGFxMoviePlayer::execGetVariableIntArray(FFrame&, void* const) +native function bool GetVariableIntArray(string Path, int Index, out array Arg); + +// Export UGFxMoviePlayer::execGetVariableFloatArray(FFrame&, void* const) +native function bool GetVariableFloatArray(string Path, int Index, out array Arg); + +// Export UGFxMoviePlayer::execGetVariableStringArray(FFrame&, void* const) +native function bool GetVariableStringArray(string Path, int Index, out array Arg); + +// Export UGFxMoviePlayer::execSetVariableArray(FFrame&, void* const) +native function bool SetVariableArray(string Path, int Index, array Arg); + +// Export UGFxMoviePlayer::execSetVariableIntArray(FFrame&, void* const) +native function bool SetVariableIntArray(string Path, int Index, array Arg); + +// Export UGFxMoviePlayer::execSetVariableFloatArray(FFrame&, void* const) +native function bool SetVariableFloatArray(string Path, int Index, array Arg); + +// Export UGFxMoviePlayer::execSetVariableStringArray(FFrame&, void* const) +native function bool SetVariableStringArray(string Path, int Index, array Arg); + +// Export UGFxMoviePlayer::execCreateObject(FFrame&, void* const) +native function GFxObject CreateObject(string ASClass, optional Class Type, optional array args); + +// Export UGFxMoviePlayer::execCreateArray(FFrame&, void* const) +native function GFxObject CreateArray(); + +// Export UGFxMoviePlayer::execActionScriptSetFunction(FFrame&, void* const) +protected native final function ActionScriptSetFunction(GFxObject Object, string Member); + +// Export UGFxMoviePlayer::execInvoke(FFrame&, void* const) +native function ASValue Invoke(string method, array args); + +// Export UGFxMoviePlayer::execActionScriptVoid(FFrame&, void* const) +protected native final function ActionScriptVoid(string Path); + +// Export UGFxMoviePlayer::execActionScriptInt(FFrame&, void* const) +protected native final function int ActionScriptInt(string Path); + +// Export UGFxMoviePlayer::execActionScriptFloat(FFrame&, void* const) +protected native final function float ActionScriptFloat(string Path); + +// Export UGFxMoviePlayer::execActionScriptString(FFrame&, void* const) +protected native final function string ActionScriptString(string Path); + +// Export UGFxMoviePlayer::execActionScriptObject(FFrame&, void* const) +protected native final function GFxObject ActionScriptObject(string Path); + +// Export UGFxMoviePlayer::execActionScriptConstructor(FFrame&, void* const) +protected native final function GFxObject ActionScriptConstructor(string ClassName); + +event bool WidgetInitialized(name WidgetName, name WidgetPath, GFxObject Widget) +{ + //return ReturnValue; +} + +event bool WidgetUnloaded(name WidgetName, name WidgetPath, GFxObject Widget) +{ + //return ReturnValue; +} + +event PostWidgetInit() +{ + //return; +} + +// Export UGFxMoviePlayer::execSetWidgetPathBinding(FFrame&, void* const) +native final function SetWidgetPathBinding(GFxObject WidgetToBind, name Path); + +event Init(optional LocalPlayer LocPlay) +{ + LocalPlayerOwnerIndex = Class'Engine.Engine'.static.GetEngine().GamePlayers.Find(LocPlay); + // End:0x6A + if(LocalPlayerOwnerIndex == -1) + { + LocalPlayerOwnerIndex = 0; + } + // End:0xA0 + if(MovieInfo != none) + { + // End:0xA0 + if(bAutoPlay) + { + Start(); + Advance(0.0000000); + } + } + //return; +} + +event LocalPlayer GetLP() +{ + local Engine Eng; + + Eng = Class'Engine.Engine'.static.GetEngine(); + // End:0x46 + if(LocalPlayerOwnerIndex < 0) + { + LocalPlayerOwnerIndex = 0; + } + else + { + // End:0x75 + if(LocalPlayerOwnerIndex >= Eng.GamePlayers.Length) + { + return none; + } + } + return Eng.GamePlayers[LocalPlayerOwnerIndex]; + //return ReturnValue; +} + +event PlayerController GetPC() +{ + local LocalPlayer LocalPlayerOwner; + + LocalPlayerOwner = GetLP(); + // End:0x25 + if(LocalPlayerOwner == none) + { + return none; + } + return LocalPlayerOwner.Actor; + //return ReturnValue; +} + +function ConsoleCommand(string Command) +{ + local PlayerController PC; + + PC = GetPC(); + // End:0x55 + if(PC != none) + { + PC.ConsoleCommand(Command); + } + //return; +} + +event OnFocusGained(int LocalPlayerIndex) +{ + //return; +} + +event OnFocusLost(int LocalPlayerIndex) +{ + //return; +} + +function PlaySoundFromTheme(name EventName, optional name SoundThemeName = 'Default') +{ + local int ThemeIndex; + local UISoundTheme Theme; + + ThemeIndex = SoundThemes.Find('ThemeName', SoundThemeName); + // End:0xC0 + if(ThemeIndex != -1) + { + Theme = SoundThemes[ThemeIndex].Theme; + // End:0xBD + if(Theme != none) + { + Theme.ProcessSoundEvent(EventName, GetPC()); + } + } + //return; +} + +event ApplyPriorityEffect(bool bRequestedBlurState, bool bRequestedHiddenState) +{ + // End:0x66 + if((bRequestedHiddenState != bIsPriorityHidden) && !bRequestedHiddenState || !bIgnoreVisibilityEffect) + { + ApplyPriorityVisibilityEffect(!bRequestedHiddenState); + bIsPriorityHidden = bRequestedHiddenState; + } + // End:0xCC + if((bRequestedBlurState != bIsPriorityBlurred) && !bRequestedBlurState || !bIgnoreBlurEffect) + { + ApplyPriorityBlurEffect(!bRequestedBlurState); + bIsPriorityBlurred = bRequestedBlurState; + } + //return; +} + +function ApplyPriorityBlurEffect(bool bRemoveEffect) +{ + //return; +} + +function ApplyPriorityVisibilityEffect(bool bRemoveEffect) +{ + //return; +} + +// Export UGFxMoviePlayer::execUpdateSplitscreenLayout(FFrame&, void* const) +native function UpdateSplitscreenLayout(); + +defaultproperties +{ + bDisplayWithHudOff=true + bAllowInput=true + bAllowFocus=true + bCloseOnLevelChange=true + Priority=1 + SplitscreenLayoutYAdjust=-27 +} \ No newline at end of file diff --git a/exported/GFxUI/Classes/GFxObject.uc b/exported/GFxUI/Classes/GFxObject.uc new file mode 100755 index 00000000..bc87e4d7 --- /dev/null +++ b/exported/GFxUI/Classes/GFxObject.uc @@ -0,0 +1,391 @@ +class GFxObject extends Object within GFxMoviePlayer + native; + +struct native ASDisplayInfo +{ + var() float X; + var() float Y; + var() float Z; + var() float Rotation; + var() float XRotation; + var() float YRotation; + var() float XScale; + var() float YScale; + var() float ZScale; + var() float Alpha; + var() bool Visible; + var() bool hasX; + var() bool hasY; + var() bool hasZ; + var() bool hasRotation; + var() bool hasXRotation; + var() bool hasYRotation; + var() bool hasXScale; + var() bool hasYScale; + var() bool hasZScale; + var() bool hasAlpha; + var() bool hasVisible; + + structdefaultproperties + { + X=0.0000000 + Y=0.0000000 + Z=0.0000000 + Rotation=0.0000000 + XRotation=0.0000000 + YRotation=0.0000000 + XScale=0.0000000 + YScale=0.0000000 + ZScale=0.0000000 + Alpha=0.0000000 + Visible=false + hasX=false + hasY=false + hasZ=false + hasRotation=false + hasXRotation=false + hasYRotation=false + hasXScale=false + hasYScale=false + hasZScale=false + hasAlpha=false + hasVisible=false + } +}; + +struct native ASColorTransform +{ + var() LinearColor Multiply; + var() LinearColor Add; + + structdefaultproperties + { + Multiply=(R=1.0000000,G=1.0000000,B=1.0000000,A=1.0000000) + Add=(R=0.0000000,G=0.0000000,B=0.0000000,A=0.0000000) + } +}; + +var private native const noexport Pointer VfTable_FCallbackEventDevice; +var private native const int Value[12]; +var int m_nIndex; +var int m_nFunction; +var bool m_bMuteSound; +var bool m_bHasCallbacksBound; +var float m_fAnimSize; +var float m_fOrigX; +var float m_fOrigY; +var float m_fOrigWidth; +var float m_fOrigHeight; +var float m_fOrigScaleX; +var float m_fOrigScaleY; +var array SubWidgetBindings; + +// Export UGFxObject::execSetColor(FFrame&, void* const) +native function SetColor(float R, float G, float B, optional float A = 0.0000000, optional bool bMaintainMultiplier = false); + +// Export UGFxObject::execSetColorMultiplier(FFrame&, void* const) +native function SetColorMultiplier(float R, float G, float B, optional float A = 1.0000000, optional bool bMaintainAdditive = false); + +// Export UGFxObject::execGet(FFrame&, void* const) +native final function ASValue Get(string Member); + +// Export UGFxObject::execGetBool(FFrame&, void* const) +native final function bool GetBool(string Member); + +// Export UGFxObject::execGetFloat(FFrame&, void* const) +native final function float GetFloat(string Member); + +// Export UGFxObject::execGetInt(FFrame&, void* const) +native final function int GetInt(string Member); + +// Export UGFxObject::execGetString(FFrame&, void* const) +native final function string GetString(string Member); + +// Export UGFxObject::execGetObject(FFrame&, void* const) +native final function GFxObject GetObject(string Member, optional Class Type = Class'GFxUI.GFxObject'); + +// Export UGFxObject::execSet(FFrame&, void* const) +native final function Set(string Member, ASValue Arg); + +// Export UGFxObject::execSetBool(FFrame&, void* const) +native final function SetBool(string Member, bool B); + +// Export UGFxObject::execSetFloat(FFrame&, void* const) +native final function SetFloat(string Member, float F); + +// Export UGFxObject::execSetInt(FFrame&, void* const) +native final function SetInt(string Member, int I); + +// Export UGFxObject::execSetString(FFrame&, void* const) +native final function SetString(string Member, string S, optional TranslationContext InContext); + +// Export UGFxObject::execSetObject(FFrame&, void* const) +native final function SetObject(string Member, GFxObject val); + +// Export UGFxObject::execSetFunction(FFrame&, void* const) +native final function SetFunction(string Member, Object context, name fname); + +// Export UGFxObject::execTranslateString(FFrame&, void* const) +native static function string TranslateString(string StringToTranslate, optional TranslationContext InContext); + +// Export UGFxObject::execGetDisplayInfo(FFrame&, void* const) +native final function ASDisplayInfo GetDisplayInfo(); + +// Export UGFxObject::execGetPosition(FFrame&, void* const) +native final function bool GetPosition(out float X, out float Y); + +// Export UGFxObject::execGetColorTransform(FFrame&, void* const) +native final function ASColorTransform GetColorTransform(); + +// Export UGFxObject::execGetDisplayMatrix(FFrame&, void* const) +native final function Matrix GetDisplayMatrix(); + +// Export UGFxObject::execGetDisplayMatrix3D(FFrame&, void* const) +native final function Matrix GetDisplayMatrix3D(); + +// Export UGFxObject::execSetDisplayInfo(FFrame&, void* const) +native final function SetDisplayInfo(ASDisplayInfo D); + +// Export UGFxObject::execSetPosition(FFrame&, void* const) +native final function SetPosition(float X, float Y); + +// Export UGFxObject::execSetColorTransform(FFrame&, void* const) +native final function SetColorTransform(ASColorTransform cxform); + +// Export UGFxObject::execSetDisplayMatrix(FFrame&, void* const) +native final function SetDisplayMatrix(Matrix M); + +// Export UGFxObject::execSetDisplayMatrix3D(FFrame&, void* const) +native final function SetDisplayMatrix3D(Matrix M); + +// Export UGFxObject::execSetVisible(FFrame&, void* const) +native final function SetVisible(bool Visible); + +// Export UGFxObject::execGetText(FFrame&, void* const) +native final function string GetText(); + +// Export UGFxObject::execSetText(FFrame&, void* const) +native final function SetText(coerce string Text, optional TranslationContext InContext); + +// Export UGFxObject::execGetElement(FFrame&, void* const) +native final function ASValue GetElement(int Index); + +// Export UGFxObject::execGetElementObject(FFrame&, void* const) +native final function GFxObject GetElementObject(int Index, optional Class Type = Class'GFxUI.GFxObject'); + +// Export UGFxObject::execGetElementBool(FFrame&, void* const) +native final function bool GetElementBool(int Index); + +// Export UGFxObject::execGetElementFloat(FFrame&, void* const) +native final function float GetElementFloat(int Index); + +// Export UGFxObject::execGetElementInt(FFrame&, void* const) +native final function int GetElementInt(int Index); + +// Export UGFxObject::execGetElementString(FFrame&, void* const) +native final function string GetElementString(int Index); + +// Export UGFxObject::execSetElement(FFrame&, void* const) +native final function SetElement(int Index, ASValue Arg); + +// Export UGFxObject::execSetElementObject(FFrame&, void* const) +native final function SetElementObject(int Index, GFxObject val); + +// Export UGFxObject::execSetElementBool(FFrame&, void* const) +native final function SetElementBool(int Index, bool B); + +// Export UGFxObject::execSetElementFloat(FFrame&, void* const) +native final function SetElementFloat(int Index, float F); + +// Export UGFxObject::execSetElementInt(FFrame&, void* const) +native final function SetElementInt(int Index, int I); + +// Export UGFxObject::execSetElementString(FFrame&, void* const) +native final function SetElementString(int Index, string S); + +// Export UGFxObject::execGetElementDisplayInfo(FFrame&, void* const) +native final function ASDisplayInfo GetElementDisplayInfo(int Index); + +// Export UGFxObject::execGetElementDisplayMatrix(FFrame&, void* const) +native final function Matrix GetElementDisplayMatrix(int Index); + +// Export UGFxObject::execSetElementDisplayInfo(FFrame&, void* const) +native final function SetElementDisplayInfo(int Index, ASDisplayInfo D); + +// Export UGFxObject::execSetElementDisplayMatrix(FFrame&, void* const) +native final function SetElementDisplayMatrix(int Index, Matrix M); + +// Export UGFxObject::execSetElementVisible(FFrame&, void* const) +native final function SetElementVisible(int Index, bool Visible); + +// Export UGFxObject::execSetElementPosition(FFrame&, void* const) +native final function SetElementPosition(int Index, float X, float Y); + +// Export UGFxObject::execSetElementColorTransform(FFrame&, void* const) +native final function SetElementColorTransform(int Index, ASColorTransform cxform); + +// Export UGFxObject::execGetElementMember(FFrame&, void* const) +native final function ASValue GetElementMember(int Index, string Member); + +// Export UGFxObject::execGetElementMemberObject(FFrame&, void* const) +native final function GFxObject GetElementMemberObject(int Index, string Member, optional Class Type = Class'GFxUI.GFxObject'); + +// Export UGFxObject::execGetElementMemberBool(FFrame&, void* const) +native final function bool GetElementMemberBool(int Index, string Member); + +// Export UGFxObject::execGetElementMemberFloat(FFrame&, void* const) +native final function float GetElementMemberFloat(int Index, string Member); + +// Export UGFxObject::execGetElementMemberInt(FFrame&, void* const) +native final function int GetElementMemberInt(int Index, string Member); + +// Export UGFxObject::execGetElementMemberString(FFrame&, void* const) +native final function string GetElementMemberString(int Index, string Member); + +// Export UGFxObject::execSetElementMember(FFrame&, void* const) +native final function SetElementMember(int Index, string Member, ASValue Arg); + +// Export UGFxObject::execSetElementMemberObject(FFrame&, void* const) +native final function SetElementMemberObject(int Index, string Member, GFxObject val); + +// Export UGFxObject::execSetElementMemberBool(FFrame&, void* const) +native final function SetElementMemberBool(int Index, string Member, bool B); + +// Export UGFxObject::execSetElementMemberFloat(FFrame&, void* const) +native final function SetElementMemberFloat(int Index, string Member, float F); + +// Export UGFxObject::execSetElementMemberInt(FFrame&, void* const) +native final function SetElementMemberInt(int Index, string Member, int I); + +// Export UGFxObject::execSetElementMemberString(FFrame&, void* const) +native final function SetElementMemberString(int Index, string Member, string S); + +// Export UGFxObject::execActionScriptSetFunction(FFrame&, void* const) +protected native final function ActionScriptSetFunction(string Member); + +// Export UGFxObject::execActionScriptSetFunctionOn(FFrame&, void* const) +protected native final function ActionScriptSetFunctionOn(GFxObject Target, string Member); + +// Export UGFxObject::execInvoke(FFrame&, void* const) +native final function ASValue Invoke(string Member, array args); + +// Export UGFxObject::execActionScriptVoid(FFrame&, void* const) +native final function ActionScriptVoid(string method); + +// Export UGFxObject::execActionScriptInt(FFrame&, void* const) +native final function int ActionScriptInt(string method); + +// Export UGFxObject::execActionScriptFloat(FFrame&, void* const) +native final function float ActionScriptFloat(string method); + +// Export UGFxObject::execActionScriptString(FFrame&, void* const) +native final function string ActionScriptString(string method); + +// Export UGFxObject::execActionScriptObject(FFrame&, void* const) +native final function GFxObject ActionScriptObject(string Path); + +// Export UGFxObject::execActionScriptArray(FFrame&, void* const) +native final function array ActionScriptArray(string Path); + +// Export UGFxObject::execGotoAndPlay(FFrame&, void* const) +native final function GotoAndPlay(string frame); + +// Export UGFxObject::execGotoAndPlayI(FFrame&, void* const) +native final function GotoAndPlayI(int frame); + +// Export UGFxObject::execGotoAndStop(FFrame&, void* const) +native final function GotoAndStop(string frame); + +// Export UGFxObject::execGotoAndStopI(FFrame&, void* const) +native final function GotoAndStopI(int frame); + +// Export UGFxObject::execCreateEmptyMovieClip(FFrame&, void* const) +native final function GFxObject CreateEmptyMovieClip(string instancename, optional int Depth = -1, optional Class Type = Class'GFxUI.GFxObject'); + +// Export UGFxObject::execAttachMovie(FFrame&, void* const) +native final function GFxObject AttachMovie(string symbolname, string instancename, optional int Depth = -1, optional Class Type = Class'GFxUI.GFxObject'); + +// Export UGFxObject::execRemoveMovieClip(FFrame&, void* const) +native final function RemoveMovieClip(string PathName); + +// Export UGFxObject::execListChildren(FFrame&, void* const) +native final function ListChildren(); + +event bool WidgetInitialized(name WidgetName, name WidgetPath, GFxObject Widget) +{ + //return ReturnValue; +} + +event bool WidgetUnloaded(name WidgetName, name WidgetPath, GFxObject Widget) +{ + //return ReturnValue; +} + +// Export UGFxObject::execSetX(FFrame&, void* const) +native final function SetX(float fValue); + +// Export UGFxObject::execSetY(FFrame&, void* const) +native final function SetY(float fValue); + +// Export UGFxObject::execSetAlpha(FFrame&, void* const) +native final function SetAlpha(float fValue); + +// Export UGFxObject::execSetWidth(FFrame&, void* const) +native final function SetWidth(float fValue); + +// Export UGFxObject::execSetHeight(FFrame&, void* const) +native final function SetHeight(float fValue); + +// Export UGFxObject::execSetXScale(FFrame&, void* const) +native final function SetXScale(float fValue); + +// Export UGFxObject::execSetYScale(FFrame&, void* const) +native final function SetYScale(float fValue); + +// Export UGFxObject::execSetDisabled(FFrame&, void* const) +native final function SetDisabled(bool bValue); + +// Export UGFxObject::execSetRotation(FFrame&, void* const) +native final function SetRotation(float fValue); + +// Export UGFxObject::execSetXRotation(FFrame&, void* const) +native final function SetXRotation(float fValue); + +// Export UGFxObject::execSetYRotation(FFrame&, void* const) +native final function SetYRotation(float fValue); + +// Export UGFxObject::execGetX(FFrame&, void* const) +native final function float GetX(); + +// Export UGFxObject::execGetY(FFrame&, void* const) +native final function float GetY(); + +// Export UGFxObject::execGetAlpha(FFrame&, void* const) +native final function float GetAlpha(); + +// Export UGFxObject::execGetWidth(FFrame&, void* const) +native final function float GetWidth(); + +// Export UGFxObject::execGetHeight(FFrame&, void* const) +native final function float GetHeight(); + +// Export UGFxObject::execGetXScale(FFrame&, void* const) +native final function float GetXScale(); + +// Export UGFxObject::execGetYScale(FFrame&, void* const) +native final function float GetYScale(); + +// Export UGFxObject::execGetRotation(FFrame&, void* const) +native final function float GetRotation(); + +// Export UGFxObject::execGetXRotation(FFrame&, void* const) +native final function float GetXRotation(); + +// Export UGFxObject::execGetYRotation(FFrame&, void* const) +native final function float GetYRotation(); + +// Export UGFxObject::execGetTextWidth(FFrame&, void* const) +native final function float GetTextWidth(); + +// Export UGFxObject::execGetTextHeight(FFrame&, void* const) +native final function float GetTextHeight(); diff --git a/exported/GFxUI/Classes/GFxRawData.uc b/exported/GFxUI/Classes/GFxRawData.uc new file mode 100755 index 00000000..99b72b9e --- /dev/null +++ b/exported/GFxUI/Classes/GFxRawData.uc @@ -0,0 +1,9 @@ +class GFxRawData extends Object + native + editinlinenew + hidecategories(Object); + +var const array RawData; +var() editconst array ReferencedSwfs; +var() editconst array References; +var() array UserReferences; diff --git a/exported/GFxUI/Classes/GFxUI.UPKG b/exported/GFxUI/Classes/GFxUI.UPKG new file mode 100755 index 00000000..29cb1564 --- /dev/null +++ b/exported/GFxUI/Classes/GFxUI.UPKG @@ -0,0 +1,4 @@ +[Flags] +AllowDownload=True +ClientOptional=False +ServerSideOnly=False diff --git a/exported/GFxUI/Classes/SwfMovie.uc b/exported/GFxUI/Classes/SwfMovie.uc new file mode 100755 index 00000000..9126bc58 --- /dev/null +++ b/exported/GFxUI/Classes/SwfMovie.uc @@ -0,0 +1,32 @@ +class SwfMovie extends GFxRawData + native + editinlinenew + hidecategories(Object) + autoexpandcategories(Import); + +enum FlashTextureRescale +{ + FlashTextureScale_High, // 0 + FlashTextureScale_Low, // 1 + FlashTextureScale_NextLow, // 2 + FlashTextureScale_Mult4, // 3 + FlashTextureScale_None, // 4 + FlashTextureScale_MAX // 5 +}; + +var() bool bUsesFontlib; +var(Import) editconst bool bSetSRGBOnImportedTextures; +var(Import) bool bPackTextures; +var(Import) bool bForceSquarePacking; +var(Import) int PackTextureSize; +var(Import) SwfMovie.FlashTextureRescale TextureRescale; +var(Import) editconst string TextureFormat; +var int RTTextures; +var int RTVideoTextures; + +defaultproperties +{ + TextureRescale=FlashTextureRescale.FlashTextureScale_Mult4 + RTTextures=24 + RTVideoTextures=2 +} \ No newline at end of file From bad73f3b6b061872179766cd4256e034e4ceab27 Mon Sep 17 00:00:00 2001 From: Tom Ferriere Date: Tue, 4 Aug 2026 18:27:59 +0200 Subject: [PATCH 05/73] test package --- Development/Src/TestPackage/Classes/TestPackage.uc | 12 ++++++++++++ UDKGame/Config/DefaultEngine.ini | 1 + 2 files changed, 13 insertions(+) create mode 100644 Development/Src/TestPackage/Classes/TestPackage.uc diff --git a/Development/Src/TestPackage/Classes/TestPackage.uc b/Development/Src/TestPackage/Classes/TestPackage.uc new file mode 100644 index 00000000..b317bc41 --- /dev/null +++ b/Development/Src/TestPackage/Classes/TestPackage.uc @@ -0,0 +1,12 @@ +class TestPackage extends Object; + +struct SpectatorBookmark { + var transient Actor ViewTarget; + var TPOV POV; + structdefaultproperties {} +}; + +state RoundEnded { + event BeginState(name PreviousStateName) { } + stop; +} diff --git a/UDKGame/Config/DefaultEngine.ini b/UDKGame/Config/DefaultEngine.ini index cc19cb7c..1d18fdb4 100644 --- a/UDKGame/Config/DefaultEngine.ini +++ b/UDKGame/Config/DefaultEngine.ini @@ -2,6 +2,7 @@ BasedOn=..\UDKGame\Config\DefaultEngineUDK.ini [UnrealEd.EditorEngine] ++EditPackages=TestPackage ; +EditPackages=AkAudio ; +EditPackages=PlatformCommon ; +EditPackages=TgGame From 6d63ae08c28531cd2db9eda58032b98a71c85d4b Mon Sep 17 00:00:00 2001 From: Tom Ferriere Date: Tue, 4 Aug 2026 18:51:23 +0200 Subject: [PATCH 06/73] more tests --- Development/Src/TestPackage/Classes/Test2.uc | 5 + .../Src/TestPackage/Classes/TestPackage.uc | 8 + .../Classes/TgSpectatorController.uc | 235 ++++++++++++++++++ 3 files changed, 248 insertions(+) create mode 100644 Development/Src/TestPackage/Classes/Test2.uc create mode 100644 Development/Src/TestPackage/Classes/TgSpectatorController.uc diff --git a/Development/Src/TestPackage/Classes/Test2.uc b/Development/Src/TestPackage/Classes/Test2.uc new file mode 100644 index 00000000..6a83f0ee --- /dev/null +++ b/Development/Src/TestPackage/Classes/Test2.uc @@ -0,0 +1,5 @@ +class Test2 extends TestPackage; + +var TestPackage.EZoomState test; + +function ChangeZoomState2(TestPackage.EZoomState NewZoomState) { } \ No newline at end of file diff --git a/Development/Src/TestPackage/Classes/TestPackage.uc b/Development/Src/TestPackage/Classes/TestPackage.uc index b317bc41..08c57c97 100644 --- a/Development/Src/TestPackage/Classes/TestPackage.uc +++ b/Development/Src/TestPackage/Classes/TestPackage.uc @@ -1,11 +1,19 @@ class TestPackage extends Object; +enum EZoomState { + ZOOM_None, // 0 + ZOOM_In, // 1 + ZOOM_Out // 2 +}; + struct SpectatorBookmark { var transient Actor ViewTarget; var TPOV POV; structdefaultproperties {} }; +function ChangeZoomState(EZoomState NewZoomState) { } + state RoundEnded { event BeginState(name PreviousStateName) { } stop; diff --git a/Development/Src/TestPackage/Classes/TgSpectatorController.uc b/Development/Src/TestPackage/Classes/TgSpectatorController.uc new file mode 100644 index 00000000..7ff6a62a --- /dev/null +++ b/Development/Src/TestPackage/Classes/TgSpectatorController.uc @@ -0,0 +1,235 @@ +class TgSpectatorController extends PlayerController native(Pawns) config(Game) hidecategories(Navigation); + +const MAX_BROADCAST_CHANNELS = 4; + +enum SpectatorCameraMode { + SpecCam_None, // 0 + SpecCam_Fly, // 1 + SpecCam_FollowThirdPerson, // 2 + SpecCam_FollowFirstPerson, // 3 + SpecCam_FollowTopDown, // 4 + SpecCam_Camera, // 5 + SpecCam_Overview, // 6 + SpecCam_LockedView, // 7 +}; + +enum SpectatorCameraCycle { + SpecCycle_None, // 0 + SpecCycle_PlayerFriendly, // 1 + SpecCycle_PlayerEnemy, // 2 + SpecCycle_Player, // 3 + SpecCycle_TowerFriendly, // 4 + SpecCycle_TowerEnemy, // 5 + SpecCycle_Tower, // 6 + SpecCycle_Cinematic, // 7 + SpecCycle_Action, // 8 +}; + +enum SpecFlightMode { + SFM_Normal, // 0 + SFM_Heli, // 1 + SFM_HeliNoVert, // 2 +}; + +enum ESpectatorMode { + SPECMODE_Manual, // 0 + SPECMODE_Director, // 1 + SPECMODE_Assisted, // 2 + SPECMODE_Broadcast1, // 3 + SPECMODE_Broadcast2, // 4 + SPECMODE_Broadcast3, // 5 + SPECMODE_Broadcast4, // 6 +}; + +enum EZoomState { + ZOOM_None, // 0 + ZOOM_In, // 1 + ZOOM_Out, // 2 +}; + +struct SpectatorBookmark { + var transient Actor ViewTarget; + var SpectatorCameraMode ViewMode; + var TPOV POV; + structdefaultproperties {} +}; + +struct BroadcastChannel { + var TgSpectatorController.ESpectatorMode Channel; + var int PlayerID; + structdefaultproperties {} +}; + +var transient SpectatorCameraMode m_CameraMode; + +var transient TgSpectatorController.SpectatorCameraCycle m_CurrentCycle; + +var transient TgSpectatorController.SpectatorCameraCycle m_PendingCycle; + +var transient TgSpectatorController.SpecFlightMode m_eHelicopterFlight; + +var transient TgSpectatorController.ESpectatorMode m_CurrentSpectatorMode; + +var transient TgSpectatorController.EZoomState m_CurrentZoomState; + +var transient SpectatorBookmark m_Bookmarks[10]; + +var float m_fDefaultTweenTime; + +var transient bool m_bOutlineCharacters; + +var transient bool m_bIsMapSquashed; + +var (Performance) config bool m_bIgnoreCullDistanceVolumes; + +var () float m_fNameplateFadeMinDist; + +var () float m_fNameplateFadeMaxDist; + +var () float m_fNameplateFadeMaxAmount; + +var () float m_fNameplateScaleMinDist; + +var () float m_fNameplateScaleMaxDist; + +var () float m_fNameplateScaleMaxAmount; + +var () float m_fInterpolateCameraDistance; + +var BroadcastChannel m_BroadcastChannels[4]; + +var config Vector c_vMouseClickDeprojectionExtent; + +var () config float m_fOverviewCenterpointOffset; + +var () config float m_fMouseCursorVisibleTime; + +var transient float m_fRemainingCursorVisibleTime; + +native function Class GetHudClass(Class pNewHudType); // Export UTgSpectatorController::execGetHudClass(FFrame&, void* const) + +native function SetNetTarget(QWord qwId, int nTaskForce); // Export UTgSpectatorController::execSetNetTarget(FFrame&, void* const) + +simulated event PostBeginPlay() { } + +simulated function ForwardToSpectatingMatch() { } + +reliable client simulated function ClientForwardToSpectatingMatch() { } + +exec function SwitchCamera(string sCamera) { } + +function SpectatorSetViewTarget(Actor VT, optional ViewTargetTransitionParams TransitionParams) { } + +function UpdateViewTargetUI() { } + +function bool ShouldFlyFromInput() { } + +exec function SetNewSpectatorMode(TgSpectatorController.ESpectatorMode NewMode) { } + +exec function SetSpectatorCameraMode(TgSpectatorController.SpectatorCameraMode Mode, optional bool bCameraTween=false) { } + +native exec function ToggleSpectatorPlayerIcons(); // Export UTgSpectatorController::execToggleSpectatorPlayerIcons(FFrame&, void* const) + +reliable client simulated function ClientSetReadyState(bool bReadyToPlay) { } + +exec function SetPendingSpecCycle(TgSpectatorController.SpectatorCameraCycle Mode) { } + +exec function ClearPendingSpecCycle() { } + +function bool InterceptFlashInput(name ButtonName, Object.EInputEvent Event) { } + +exec function LockedViewCam(bool bEnabled) { } + +function SnapViewToHoverTarget(optional bool bUseAltView=false) { } + +simulated function bool PingMap(Vector WorldLocation, const out array worldActorRepInfo, Object Type) { } + +function SetPendingOnDirectorMode() { } + +function SnapViewToLocation(Vector WorldLocation, bool bUseFocalPoint) { } + +function CycleNext(optional bool bSkipIfPresent=false, optional bool bReverse=false) { } + +function array GetViewTargetListForMode(TgSpectatorController.SpectatorCameraCycle cycle) { } + +function array GetPlayerList() { } + +function array GetOutermostTowerList() { } + +function array GetActionList() { } + +function TgSpectatorController.SpectatorCameraMode GetDefaultModeFor(Actor Target) { } + +exec function SpecViewAction() { } + +exec function SpecViewPlayer(string PlayerName) { } + +function ViewTargetTransitionParams GetBlendParams(Actor Target) { } + +function ViewTargetTransitionParams GetDefaultBlendParams() { } + +function ViewTargetTransitionParams GetSnapBlendParams() { } + +exec function SetSpectatorBookmark(int nNum) { } + +exec function RecallSpectatorBookmark(int nNum) { } + +exec function SpecSetFlightMode(TgSpectatorController.SpecFlightMode sfm) { } + +exec function GotoCinematicCam(string sCamName) { } + +exec function CameraSpeed(float NewSpeed) { } + +exec function IncreaseCameraSpeeed() { } + +exec function DecreaseCameraSpeed() { } + +function string StripClanTag(string PlayerName) { } + +exec function ToggleOutlineCharacters() { } + +native function SetOutlineCharacters(bool bNewOutlineCharacters); // Export UTgSpectatorController::execSetOutlineCharacters(FFrame&, void* const) + +event float GetFOVAngle() { } + +exec function SquashMap() { } + +exec function SpecTest() { } + +exec function FlipOverviewSides() { } + +native function Pawn GetPawnFrom2DCoordinate(Vector2D Coordinate); // Export UTgSpectatorController::execGetPawnFrom2DCoordinate(FFrame&, void* const) + +native function GetActorListFrom2DCoordinate(Vector2D Coordinate, out array ActorList); // Export UTgSpectatorController::execGetActorListFrom2DCoordinate(FFrame&, void* const) + +exec function SpectateZoomIn(bool bEnabled) { } + +exec function SpectateZoomOut(bool bEnabled) { } + +function ChangeZoomState(TgSpectatorController.EZoomState NewZoomState) { } + +native function UpdateBroadcastChannels(); // Export UTgSpectatorController::execUpdateBroadcastChannels(FFrame&, void* const) + +exec function SpectatePlayerIndex(int TaskForceNum, int PlayerIndex) { } + +native function Pawn GetTgPawn(); // Export UTgSpectatorController::execGetTgPawn(FFrame&, void* const) + +native function SetViewTarget(Actor NewViewTarget, optional ViewTargetTransitionParams TransitionParams); // Export UTgSpectatorController::execSetViewTarget(FFrame&, void* const) + +state SpectatingMatch { + event BeginState(name PrevStateName) { } + function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) { } + function PlayerMove(float DeltaTime) { } + function UpdateRotation(float DeltaTime) { } + function ReplicateMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) { } + exec function OnLeftMousePressed() { } + exec function OnRightMousePressed() { } + stop; +} + +state RoundEnded { + event BeginState(name PreviousStateName) { } + stop; +} + +defaultproperties {} From e4b76ea85e4138c3cc52aabdb74324d141d2b760 Mon Sep 17 00:00:00 2001 From: Tom Ferriere Date: Tue, 4 Aug 2026 19:37:50 +0200 Subject: [PATCH 07/73] more tests --- Development/Src/TestPackage/Classes/Test2.uc | 19 +++++++++++--- .../Src/TestPackage/Classes/TgObject.uc | 25 +++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 Development/Src/TestPackage/Classes/TgObject.uc diff --git a/Development/Src/TestPackage/Classes/Test2.uc b/Development/Src/TestPackage/Classes/Test2.uc index 6a83f0ee..cd84f4e6 100644 --- a/Development/Src/TestPackage/Classes/Test2.uc +++ b/Development/Src/TestPackage/Classes/Test2.uc @@ -1,5 +1,18 @@ -class Test2 extends TestPackage; +interface Test2 extends Interface native(Pawns) + dependson(TgObject); -var TestPackage.EZoomState test; +function int GetCredits() { } -function ChangeZoomState2(TestPackage.EZoomState NewZoomState) { } \ No newline at end of file +function SetCredits(int nCreditsAmount) { } + +function ResetUlt() { } + +native function SetRewardValues(int XP, int Currency, Actor Source, TgObject.ERewardValueType RewardType, optional bool bFlankKill=false); // Export UTgPaladinsController::execSetRewardValues(FFrame&, void* const) + +function LiveRespawn(bool bResetHealth, bool bResetDevices) { } + +event Revive() { } + +function Pawn GetTgPawn() { } + +native function int GetTaskForceNumber(); // Export UTgPaladinsController::execGetTaskForceNumber(FFrame&, void* const) diff --git a/Development/Src/TestPackage/Classes/TgObject.uc b/Development/Src/TestPackage/Classes/TgObject.uc new file mode 100644 index 00000000..55d3cf54 --- /dev/null +++ b/Development/Src/TestPackage/Classes/TgObject.uc @@ -0,0 +1,25 @@ +class TgObject extends Object; + +enum ERewardValueType { + RVT_None, // 0 + RVT_Initial, // 1 + RVT_Spool, // 2 + RVT_Kill, // 3 + RVT_Assist, // 4 + RVT_Taken, // 5 + RVT_Healing, // 6 + RVT_Mitigated, // 7 + RVT_Damage, // 8 + RVT_Objective, // 9 + RVT_Captured, // 10 + RVT_Capturing, // 11 + RVT_Contesting, // 12 + RVT_Destroyed, // 13 + RVT_PushingPayload, // 14 + RVT_ContestingPayload, // 15 + RVT_RoundWon, // 16 + RVT_SuccessfulDefense, // 17 + RVT_SuccessfulPush, // 18 + RVT_Cheat, // 19 + RVT_Bounty, // 20 +}; From 73d91507fa5217fef2c554acf611ec00e7288b2d Mon Sep 17 00:00:00 2001 From: Tom Ferriere Date: Tue, 4 Aug 2026 20:18:18 +0200 Subject: [PATCH 08/73] stubgen --- .gitignore | 2 + tool/__init__.py | 0 tool/stubgen/README.md | 56 ++ tool/stubgen/__init__.py | 55 ++ tool/stubgen/__main__.py | 6 + tool/stubgen/cli.py | 431 +++++++++++++++ tool/stubgen/lexer.py | 149 +++++ tool/stubgen/model.py | 189 +++++++ tool/stubgen/parser.py | 1038 +++++++++++++++++++++++++++++++++++ tool/stubgen/render.py | 151 +++++ tool/stubgen/render_stub.py | 209 +++++++ tool/stubgen/test_sample.sh | 22 + 12 files changed, 2308 insertions(+) create mode 100644 tool/__init__.py create mode 100644 tool/stubgen/README.md create mode 100644 tool/stubgen/__init__.py create mode 100644 tool/stubgen/__main__.py create mode 100644 tool/stubgen/cli.py create mode 100644 tool/stubgen/lexer.py create mode 100644 tool/stubgen/model.py create mode 100644 tool/stubgen/parser.py create mode 100644 tool/stubgen/render.py create mode 100644 tool/stubgen/render_stub.py create mode 100644 tool/stubgen/test_sample.sh diff --git a/.gitignore b/.gitignore index f2e33639..f072fbda 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ !bundle.yaml !filelist.txt !tool.nu +!tool/ +!tool/** !manifest.toml !README.md !exported/ diff --git a/tool/__init__.py b/tool/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tool/stubgen/README.md b/tool/stubgen/README.md new file mode 100644 index 00000000..1b212b9f --- /dev/null +++ b/tool/stubgen/README.md @@ -0,0 +1,56 @@ +# tool/stubgen — UnrealScript parser for the exported Paladins source + +Front end for a planned **stub generator** that will re-emit compile-able `.uc` +files into `Development/Src/`. This stage is **parser + dry-run only** — nothing +is ever written into `Development/Src/`. `dumptree` writes model JSON to a +scratch dir you choose. + +Input: the UE Explorer 0.57 decompiled source under `exported//Classes/` +(CRLF, ASCII, one class/interface per file). All ~3900 files parse clean (0 errors). + +## Usage (from the repo root) + + python3 -m tool.stubgen parse exported/TgGame/Classes/TgProj_Simulated.uc + python3 -m tool.stubgen scan [--root exported] [--only TgGame] [--limit 200] [-v] + python3 -m tool.stubgen dumptree --out /tmp/uc-model [--only Engine] + +- `parse` — parse one file, print the model tree (line anchors, body spans). +- `scan` — parse the whole tree, per-package counts; exits nonzero on errors. +- `dumptree` — write `dataclasses.asdict()` JSON per class to a scratch dir. + +Smoke test: `bash tool/stubgen/test_sample.sh`. + +## Files + +- `lexer.py` — tokenizer (idents, numbers, strings, `'name'` literals, `//` + comments, ops). Note: `>>` is deliberately *not* merged so `array>` + parses; statement bodies are kept raw so the shift op never needs tokenizing. +- `model.py` — dataclasses; every node carries 1-based `(line, col)` anchors and + raw body text, so later editing/re-emission has the original bytes. +- `parser.py` — recursive-descent parser. The interesting bit: function names, + return types and var types are distinguished *structurally* (the name is the + last identifier before `(`/`,`; the type is the type-reference before it), so + modifier keyword lists are tiny. Handles `operator(24) bool ==(...)`, + `native(242)`, `array>`, fixed-size arrays, `replication`, + `state`/`auto state`/`simulated state`, `structdefaultproperties`, `// Export` + comments, and error recovery (one bad member never kills the file). +- `render.py` — tree printer for `parse` / dry runs. +- `cli.py` — argparse entry point. + +## Model at a glance + +`ClassDecl` → ordered `members` (ConstDecl, EnumDecl, StructDecl, VarGroup, +FunctionDecl, ReplicationBlock, StateDecl) + optional `DefaultPropertiesBlock` ++ `errors`. FunctionDecl carries `kind` (function/event/delegate/operator), +`modifiers`, `return_type`, `params` (type/name/default/dim), `signature`, +`body_start/body_end`, raw `body_text`, parsed `locals`, and the attached +`// Export …` comment. VarGroup carries `category`, `modifiers`, `type`, and a +list of `VarDecl` (name, `dim`, `init`). Statement-level body AST is a later +milestone — bodies are preserved raw meanwhile. + +## Next milestone + +Stub generation into `Development/Src/`: emit a compile-able `.uc` skeleton per +exported class (header + var/enum/struct decls + native function declarations), +so UDK can resolve the mod's references to game classes. See `CLAUDE.md` for the +build/bundle pipeline (`tool.nu`, `EditPackages=` in `UDKEngine.ini`). diff --git a/tool/stubgen/__init__.py b/tool/stubgen/__init__.py new file mode 100644 index 00000000..904c6619 --- /dev/null +++ b/tool/stubgen/__init__.py @@ -0,0 +1,55 @@ +"""UnrealScript parser for UE Explorer-decompiled Paladins (UDK 2013) source. + +Front end for the stub generator that will re-emit compile-able .uc files +into Development/Src/. This milestone only parses + reports; nothing is +written into the game source tree. +""" + +from .model import ( + Node, + ClassDecl, + ConstDecl, + EnumDecl, + EnumMember, + VarDecl, + VarGroup, + Param, + LocalDecl, + FunctionDecl, + ReplicationBlock, + ReplicationRule, + StateDecl, + StructDecl, + DefaultPropertiesBlock, + RawStatement, + ParseError, +) +from .parser import Parser, UcParseError + +__all__ = [ + "parse_source", + "Parser", + "UcParseError", + "Node", + "ClassDecl", + "ConstDecl", + "EnumDecl", + "EnumMember", + "VarDecl", + "VarGroup", + "Param", + "LocalDecl", + "FunctionDecl", + "ReplicationBlock", + "ReplicationRule", + "StateDecl", + "StructDecl", + "DefaultPropertiesBlock", + "RawStatement", + "ParseError", +] + + +def parse_source(source, package="", filename=""): + """Parse UnrealScript source text into a ClassDecl.""" + return Parser(source, package=package, filename=filename).parse() diff --git a/tool/stubgen/__main__.py b/tool/stubgen/__main__.py new file mode 100644 index 00000000..dbdd0661 --- /dev/null +++ b/tool/stubgen/__main__.py @@ -0,0 +1,6 @@ +import sys + +from .cli import main + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tool/stubgen/cli.py b/tool/stubgen/cli.py new file mode 100644 index 00000000..c0c47df8 --- /dev/null +++ b/tool/stubgen/cli.py @@ -0,0 +1,431 @@ +"""Command-line entry point. + +Run from the repo root: + + python3 -m tool.stubgen parse exported/TgGame/Classes/TgProj_Simulated.uc + python3 -m tool.stubgen scan [--root exported] [--only TgGame] [--limit 200] + python3 -m tool.stubgen dumptree --out /tmp/uc-model [--root exported] + python3 -m tool.stubgen stub [--file ...] [--root exported] [--all] + +Dry-run only: nothing is ever written into Development/Src/. +""" + +from __future__ import annotations + +import argparse +import json +import os +import re +import sys +from collections import deque +from dataclasses import asdict +from typing import Dict, List, Tuple + +from .model import ( + ClassDecl, + ConstDecl, + EnumDecl, + FunctionDecl, + ReplicationBlock, + StateDecl, + StructDecl, + VarGroup, + ParseError, +) +from .parser import Parser, UcParseError +from .render import render_class +from .render_stub import emit_stub + +DEFAULT_ROOT = os.path.join("exported") + +# Stock packages that are already in another config file (UDK's DefaultEngineUDK.ini) +# These are standard UDK packages, NOT the mod's packages +STOCK_PACKAGES = { + "Core", "Engine", "GameFramework", "GFxUI", "GFxUIEditor", "IpDrv", + "OnlineSubsystemSteamworks", "OnlineSubsystemPC", + "OnlineSubsystemGameCenter", "SubstanceAir", "SubstanceAirEd", + "UDKBase", "UTEditor", "UnrealEd", "WinDrv", +} + + +def iter_uc_files(root: str): + for pkg in sorted(os.listdir(root)): + pkg_dir = os.path.join(root, pkg) + if not os.path.isdir(pkg_dir): + continue + classes_dir = os.path.join(pkg_dir, "Classes") + if not os.path.isdir(classes_dir): + continue + for fn in sorted(os.listdir(classes_dir)): + if fn.endswith(".uc"): + yield pkg, os.path.join(classes_dir, fn) + + +def parse_file(path: str, package: str = "") -> ClassDecl: + with open(path, "r", encoding="utf-8", errors="replace") as fh: + src = fh.read() + try: + return Parser(src, package=package, filename=os.path.basename(path)).parse() + except UcParseError as e: + # Only the header failed; synthesize a minimal model so reporting works. + return ClassDecl( + package=package, filename=os.path.basename(path), kind="?", name="?", + extends=None, within=None, modifiers=[], header_line=e.line, + header_text="", members=[], defaultproperties=None, + errors=[ParseError(line=e.line, message=e.msg)], + ) + + +class Counts: + def __init__(self): + self.files = 0 + self.classes = 0 + self.interfaces = 0 + self.functions = 0 + self.events = 0 + self.delegates = 0 + self.vars = 0 + self.enums = 0 + self.structs = 0 + self.consts = 0 + self.states = 0 + self.replication = 0 + self.errors = 0 + + def add_model(self, c: ClassDecl): + self.files += 1 + if c.kind == "interface": + self.interfaces += 1 + else: + self.classes += 1 + self.errors += len(c.errors) + for m in c.members: + if isinstance(m, FunctionDecl): + if m.kind == "event": + self.events += 1 + elif m.kind == "delegate": + self.delegates += 1 + else: + self.functions += 1 + elif isinstance(m, VarGroup): + self.vars += len(m.vars) + elif isinstance(m, EnumDecl): + self.enums += 1 + elif isinstance(m, StructDecl): + self.structs += 1 + elif isinstance(m, ConstDecl): + self.consts += 1 + elif isinstance(m, ReplicationBlock): + self.replication += 1 + elif isinstance(m, StateDecl): + self.states += 1 + for sub in m.members: + if isinstance(sub, FunctionDecl): + if sub.kind == "event": + self.events += 1 + elif sub.kind == "delegate": + self.delegates += 1 + else: + self.functions += 1 + + def as_row(self) -> List[object]: + return [ + self.files, self.classes, self.interfaces, self.functions, + self.events, self.delegates, self.vars, self.enums, self.structs, + self.consts, self.states, self.replication, self.errors, + ] + + +COLS = ["files", "classes", "ifaces", "funcs", "events", "delegs", + "vars", "enums", "structs", "consts", "states", "repl", "errors"] + + +def cmd_parse(args: argparse.Namespace) -> int: + path = args.file + pkg = args.package or os.path.basename(os.path.dirname(os.path.dirname(os.path.abspath(path)))) + c = parse_file(path, package=pkg) + print(render_class(c)) + return 0 + + +def cmd_scan(args: argparse.Namespace) -> int: + root = args.root + per_pkg: Dict[str, Counts] = {} + totals = Counts() + errored_files: List[Tuple[str, ClassDecl]] = [] + limit = args.limit or 0 + n = 0 + for pkg, path in iter_uc_files(root): + if args.only and pkg != args.only: + continue + c = parse_file(path, package=pkg) + per_pkg.setdefault(pkg, Counts()).add_model(c) + totals.add_model(c) + if c.errors: + errored_files.append((path, c)) + n += 1 + if limit and n >= limit: + break + + # table + rows = [["pkg"] + COLS] + for pkg in sorted(per_pkg): + rows.append([pkg] + per_pkg[pkg].as_row()) + rows.append(["TOTAL"] + totals.as_row()) + widths = [max(len(str(r[i])) for r in rows) for i in range(len(COLS) + 1)] + for r in rows: + print(" ".join(str(x).rjust(widths[i]) for i, x in enumerate(r))) + + print(f"\nparsed {totals.files} files, {totals.errors} parse errors " + f"across {len(errored_files)} files") + if errored_files and args.verbose: + for path, c in errored_files[:40]: + print(f" {path}") + for e in c.errors[:5]: + print(f" L{e.line}: {e.message}") + return 0 if totals.errors == 0 else 1 + + +def cmd_dumptree(args: argparse.Namespace) -> int: + root = args.root + out = args.out + os.makedirs(out, exist_ok=True) + total_bytes = 0 + nfiles = 0 + nerrors = 0 + limit = args.limit or 0 + n = 0 + for pkg, path in iter_uc_files(root): + if args.only and pkg != args.only: + continue + c = parse_file(path, package=pkg) + d = asdict(c) + pkg_out = os.path.join(out, pkg) + os.makedirs(pkg_out, exist_ok=True) + stem = os.path.basename(path)[:-3] + out_path = os.path.join(pkg_out, stem + ".json") + text = json.dumps(d, indent=1, ensure_ascii=False) + with open(out_path, "w", encoding="utf-8") as fh: + fh.write(text) + total_bytes += len(text) + nfiles += 1 + nerrors += len(c.errors) + n += 1 + if limit and n >= limit: + break + print(f"wrote {nfiles} JSON files to {out} ({total_bytes:,} bytes), " + f"{nerrors} parse errors") + return 0 + + +def _resolve_output_dir(args: argparse.Namespace, package: str) -> str: + """Resolve the output directory for a package.""" + if args.out: + return os.path.join(args.out, package, "Classes") + # Default: Development/Src//Classes/ + return os.path.join("Development", "Src", package, "Classes") + + +def _compute_package_order(root: str) -> List[str]: + """Compute topological order of non-stock packages based on extends dependencies.""" + packages = [d for d in sorted(os.listdir(root)) + if os.path.isdir(os.path.join(root, d)) and d not in STOCK_PACKAGES] + + # Map class names to packages + class_to_pkg = {} + for pkg in packages: + classes_dir = os.path.join(root, pkg, "Classes") + if os.path.isdir(classes_dir): + for f in os.listdir(classes_dir): + if f.endswith(".uc"): + class_to_pkg[f[:-3]] = pkg + + # Build dependency graph + pkg_deps = {pkg: set() for pkg in packages} + for pkg in packages: + classes_dir = os.path.join(root, pkg, "Classes") + if not os.path.isdir(classes_dir): + continue + for f in os.listdir(classes_dir): + if not f.endswith(".uc"): + continue + with open(os.path.join(classes_dir, f), "r", encoding="utf-8", errors="replace") as fp: + content = fp.read() + for match in re.finditer(r"class\s+\w+\s+extends\s+([\w.]+)", content): + base = match.group(1) + base_pkg = base.split(".")[0] + if base_pkg in class_to_pkg: + dep_pkg = class_to_pkg[base_pkg] + if dep_pkg != pkg and dep_pkg not in STOCK_PACKAGES: + pkg_deps[pkg].add(dep_pkg) + + # Kahn's algorithm for topological sort + indegree = {pkg: 0 for pkg in packages} + for pkg, deps in pkg_deps.items(): + indegree[pkg] = len(deps) + + rev_adj = {pkg: [] for pkg in packages} + for pkg, deps in pkg_deps.items(): + for dep in deps: + if dep in rev_adj: + rev_adj[dep].append(pkg) + + queue = deque([pkg for pkg, deg in indegree.items() if deg == 0]) + result = [] + while queue: + pkg = queue.popleft() + result.append(pkg) + for dependent in rev_adj.get(pkg, []): + indegree[dependent] -= 1 + if indegree[dependent] == 0: + queue.append(dependent) + + # Add any remaining (cycles) + for pkg in packages: + if pkg not in result: + result.append(pkg) + + return result + + +def _write_editpackages_ini(order: List[str], out_path: str) -> None: + """Write +EditPackages= lines to a config file.""" + os.makedirs(os.path.dirname(out_path), exist_ok=True) + lines = ["[UnrealEd.EditorEngine]"] + for pkg in order: + lines.append(f"+EditPackages={pkg}") + with open(out_path, "w", encoding="utf-8") as fh: + fh.write("\n".join(lines) + "\n") + print(f"wrote {out_path}") + + +def _write_stub_file(c: ClassDecl, out_dir: str, dry_run: bool) -> None: + """Write a single stub file.""" + os.makedirs(out_dir, exist_ok=True) + stem = c.filename[:-3] if c.filename.endswith(".uc") else c.filename + out_path = os.path.join(out_dir, stem + ".uc") + stub_src = emit_stub(c) + if dry_run: + print(f"DRY RUN: would write {out_path} ({len(stub_src)} bytes)") + print("---") + print(stub_src) + print("---") + else: + with open(out_path, "w", encoding="utf-8") as fh: + fh.write(stub_src) + print(f"wrote {out_path}") + + +def cmd_stub(args: argparse.Namespace) -> int: + """Generate stub .uc files with bodies stripped.""" + dry_run = args.dry_run + limit = args.limit or 0 + n = 0 + nerrors = 0 + + if args.file: + # Single file mode + pkg = args.package or os.path.basename(os.path.dirname(os.path.dirname(os.path.abspath(args.file)))) + c = parse_file(args.file, package=pkg) + nerrors += len(c.errors) + out_dir = _resolve_output_dir(args, pkg) + _write_stub_file(c, out_dir, dry_run) + n = 1 + else: + # Directory tree mode + root = args.root + # If --all, compute package order first and process in that order + if args.all: + pkg_order = _compute_package_order(root) + # Filter by --only if specified + if args.only: + pkg_order = [p for p in pkg_order if p == args.only] + + # Build path map for quick lookup + pkg_to_files = {} + for pkg, path in iter_uc_files(root): + pkg_to_files.setdefault(pkg, []).append(path) + + for pkg in pkg_order: + if pkg not in pkg_to_files: + continue + for path in pkg_to_files[pkg]: + if limit and n >= limit: + break + c = parse_file(path, package=pkg) + nerrors += len(c.errors) + out_dir = _resolve_output_dir(args, pkg) + _write_stub_file(c, out_dir, dry_run) + n += 1 + if limit and n >= limit: + break + + # Write EditPackages.ini if not dry-run + if not dry_run and args.editpackages_out: + _write_editpackages_ini(pkg_order, args.editpackages_out) + else: + # Original order (alphabetical by package) + for pkg, path in iter_uc_files(root): + if args.only and pkg != args.only: + continue + if limit and n >= limit: + break + c = parse_file(path, package=pkg) + nerrors += len(c.errors) + out_dir = _resolve_output_dir(args, pkg) + _write_stub_file(c, out_dir, dry_run) + n += 1 + + action = "would write" if dry_run else "wrote" + print(f"{action} {n} stub files, {nerrors} parse errors") + return 0 if nerrors == 0 else 1 + + +def build_arg_parser() -> argparse.ArgumentParser: + p = argparse.ArgumentParser( + prog="tool.stubgen", + description="UnrealScript parser and stub generator for the exported Paladins source.", + ) + sub = p.add_subparsers(dest="cmd", required=True) + + pp = sub.add_parser("parse", help="parse one .uc file and print its model tree") + pp.add_argument("file") + pp.add_argument("--package", default="") + pp.set_defaults(func=cmd_parse) + + ps = sub.add_parser("scan", help="parse the whole exported tree and summarize") + ps.add_argument("--root", default=DEFAULT_ROOT) + ps.add_argument("--only", default=None, help="restrict to one package dir") + ps.add_argument("--limit", type=int, default=0, help="stop after N files") + ps.add_argument("-v", "--verbose", action="store_true", help="print errored files") + ps.set_defaults(func=cmd_scan) + + pd = sub.add_parser("dumptree", help="dump the parsed model as JSON to a scratch dir") + pd.add_argument("--root", default=DEFAULT_ROOT) + pd.add_argument("--out", required=True, help="scratch output directory (never Development/Src/)") + pd.add_argument("--only", default=None) + pd.add_argument("--limit", type=int, default=0) + pd.set_defaults(func=cmd_dumptree) + + pstub = sub.add_parser("stub", help="generate stub .uc files (strip bodies) into Development/Src/") + pstub.add_argument("--file", default=None, help="single .uc file to process (mutually exclusive with --root/--only)") + pstub.add_argument("--package", default="", help="package name for single-file mode (default: inferred from path)") + pstub.add_argument("--root", default=DEFAULT_ROOT, help="exported source root (directory mode)") + pstub.add_argument("--only", default=None, help="restrict to one package dir (directory mode)") + pstub.add_argument("--limit", type=int, default=0, help="stop after N files (directory mode)") + pstub.add_argument("--out", default=None, help="custom output root (default: Development/Src/)") + pstub.add_argument("--dry-run", action="store_true", help="print what would be written without writing") + pstub.add_argument("--all", action="store_true", help="process all packages in dependency order and write EditPackages.ini") + pstub.add_argument("--editpackages-out", default="UDKGame/Config/DefaultEngine.ini", help="path to write EditPackages.ini (default: UDKGame/Config/DefaultEngine.ini)") + pstub.set_defaults(func=cmd_stub) + + return p + + +def main(argv: List[str] | None = None) -> int: + args = build_arg_parser().parse_args(argv) + return args.func(args) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tool/stubgen/lexer.py b/tool/stubgen/lexer.py new file mode 100644 index 00000000..df9a6c6a --- /dev/null +++ b/tool/stubgen/lexer.py @@ -0,0 +1,149 @@ +"""Tokenizer for decompiled UnrealScript. + +Produces a flat token list with 1-based line/col anchors. Token kinds: +ident, number, string ("..."), name ('...'), op, comment (//), newline, eof. + +Notes on the decompiled dialect: +- Line comments are `//`. There are no block comments in UE Explorer output. +- `Class'Engine.Controller'` and `enum'...'` type literals tokenize naturally + as IDENT + NAME, which is fine because those appear in raw-preserved regions. +- `>>` is intentionally NOT merged into one token: `array>` and + `delegate >` must lex as separate `>` ops so the parser can match generics. + Statement bodies are kept raw, so the arithmetic `>>` is never reconstructed + from tokens. +""" + +from __future__ import annotations + +from typing import List + +_KINDS = {"ident", "number", "string", "name", "op", "comment", "newline", "eof"} + +# Multi-char operators that are unambiguous in this dialect. +_MULTI_OPS = ("==", "!=", "<=", ">=", "&&", "||", "+=", "-=", "*=", "/=", "::", "++", "--") +_SINGLE_OPS = set(";(){}[],:=<>+-*/@?&|!#.%") + + +class Tok: + __slots__ = ("kind", "text", "line", "col") + + def __init__(self, kind: str, text: str, line: int, col: int): + assert kind in _KINDS, kind + self.kind = kind + self.text = text + self.line = line + self.col = col + + def __repr__(self) -> str: # pragma: no cover - debug aid + return f"Tok({self.kind},{self.text!r},{self.line}:{self.col})" + + +def tokenize(src: str) -> List[Tok]: + toks: List[Tok] = [] + i = 0 + n = len(src) + line = 1 + col = 1 + + while i < n: + c = src[i] + + if c == "\n": + toks.append(Tok("newline", "\n", line, col)) + i += 1 + line += 1 + col = 1 + continue + + if c in " \t\r": + i += 1 + col += 1 + continue + + if c == "/" and i + 1 < n and src[i + 1] == "/": + j = i + while j < n and src[j] != "\n": + j += 1 + toks.append(Tok("comment", src[i:j], line, col)) + col += j - i + i = j + continue + + if c == '"': + j = i + 1 + while j < n and src[j] != '"': + if src[j] == "\\": + j += 1 + j += 1 + if j < n: + j += 1 # closing quote + toks.append(Tok("string", src[i:j], line, col)) + col += j - i + i = j + continue + + if c == "'": + j = i + 1 + while j < n and src[j] != "'": + if src[j] == "\\": + j += 1 + j += 1 + if j < n: + j += 1 + toks.append(Tok("name", src[i:j], line, col)) + col += j - i + i = j + continue + + if c.isalpha() or c == "_": + j = i + 1 + while j < n and (src[j].isalnum() or src[j] == "_"): + j += 1 + toks.append(Tok("ident", src[i:j], line, col)) + col += j - i + i = j + continue + + if c.isdigit(): + j = i + if src.startswith(("0x", "0X"), i): + j = i + 2 + while j < n and (src[j] in "0123456789abcdefABCDEF"): + j += 1 + else: + while j < n and (src[j].isdigit() or src[j] == "."): + j += 1 + # optional exponent (1.0e+10) — rare, but harmless to accept + if j < n and src[j] in "eE": + k = j + 1 + if k < n and src[k] in "+-": + k += 1 + if k < n and src[k].isdigit(): + while k < n and src[k].isdigit(): + k += 1 + j = k + toks.append(Tok("number", src[i:j], line, col)) + col += j - i + i = j + continue + + if src.startswith(_MULTI_OPS, i): + two = src[i : i + 2] + toks.append(Tok("op", two, line, col)) + i += 2 + col += 2 + continue + + if c in _SINGLE_OPS: + toks.append(Tok("op", c, line, col)) + i += 1 + col += 1 + continue + + # Unknown character — surface as an op token so the parser can report it. + toks.append(Tok("op", c, line, col)) + i += 1 + col += 1 + + toks.append(Tok("eof", "", line, col)) + return toks diff --git a/tool/stubgen/model.py b/tool/stubgen/model.py new file mode 100644 index 00000000..4831bb59 --- /dev/null +++ b/tool/stubgen/model.py @@ -0,0 +1,189 @@ +"""AST model for parsed UnrealScript. + +Every declaration node carries 1-based (line, col) anchors pointing at the +start of the statement. Bodies (function bodies, defaultproperties, state +bodies) keep their raw source text so later editing / re-emission has the +original bytes to work from. The model is deliberately lossless on the +things the stub generator will need (signature lines, body spans, parameter +types, keyword modifiers) and coarse elsewhere (statement-level body AST is +a later milestone; raw text is preserved meanwhile). +""" + +from __future__ import annotations + +from dataclasses import dataclass, field, asdict +from typing import List, Optional, Tuple, Any + + +@dataclass +class Node: + """Base: source anchor (1-based line/col of the statement's first char).""" + + line: int + col: int + + +@dataclass +class ConstDecl(Node): + name: str + value: str + raw: str + leading_comments: List[str] = field(default_factory=list) + + +@dataclass +class EnumMember: + name: str + line: int + value: Optional[str] = None # from `= N` or the `// N` index comment + comment: Optional[str] = None # trailing `// ...` on the member's line + + +@dataclass +class EnumDecl(Node): + name: str + modifiers: List[str] + members: List[EnumMember] + body_start: int + body_end: int + leading_comments: List[str] = field(default_factory=list) + + +@dataclass +class VarDecl: + name: str + dim: Optional[str] = None # e.g. "2" from `x[2]` + init: Optional[str] = None # raw initializer, if any + line: int = 0 + col: int = 0 + + +@dataclass +class VarGroup(Node): + """One `var ...;` statement (may declare several names).""" + + category: Optional[str] # `(BeaconExit)` from `var(BeaconExit)`, None if absent + modifiers: List[str] + type: str # e.g. "bool", "array", "TgObject.EDeviceFailType" + vars: List[VarDecl] + raw: str # the whole statement including `var` and `;` + leading_comments: List[str] = field(default_factory=list) + + +@dataclass +class Param: + modifiers: List[str] # out / optional / const / coerce / init ... + type: str + name: str + default: Optional[str] # raw default value (e.g. "false"), None if absent + dim: Optional[str] = None # fixed array size from `name[10]`, None if absent + line: int = 0 + + +@dataclass +class LocalDecl: + line: int + raw: str + modifiers: List[str] = field(default_factory=list) + type: Optional[str] = None + names: List[str] = field(default_factory=list) + + +@dataclass +class FunctionDecl(Node): + kind: str # "function" | "event" | "delegate" | "operator" | "" (kindless) + modifiers: List[str] # native / final / exec / simulated / reliable / server / client ... + return_type: Optional[str] + name: str + params: List[Param] + is_declaration: bool # True = ends `;` (native/interface decl), False = has a body + signature: str # raw text from decl start through the closing `)` + body_start: Optional[int] + body_end: Optional[int] + body_text: Optional[str] + export_comment: Optional[str] # attached `// Export ...` comment, if any + locals: List[LocalDecl] = field(default_factory=list) + leading_comments: List[str] = field(default_factory=list) + + +@dataclass +class ReplicationRule: + condition: Optional[str] # raw `if(...)` condition, None if absent + reliability: Optional[str] # "reliable" | "unreliable" | None + props: List[str] + line: int + + +@dataclass +class ReplicationBlock(Node): + rules: List[ReplicationRule] + body_start: int + body_end: int + body_text: str + leading_comments: List[str] = field(default_factory=list) + + +@dataclass +class RawStatement(Node): + text: str + + +@dataclass +class StateDecl(Node): + name: str + is_auto: bool + category: Optional[str] + modifiers: List[str] + ignores: List[str] + members: List[Any] # FunctionDecl | RawStatement + body_start: int + body_end: int + body_text: str + leading_comments: List[str] = field(default_factory=list) + + +@dataclass +class StructDecl(Node): + name: str + modifiers: List[str] + members: List[Any] # VarGroup + structdefaultproperties: Optional[Tuple[int, int, str]] # (start, end, text) + body_start: int + body_end: int + leading_comments: List[str] = field(default_factory=list) + + +@dataclass +class DefaultPropertiesBlock(Node): + body_start: int + body_end: int + body_text: str + leading_comments: List[str] = field(default_factory=list) + + +@dataclass +class ParseError: + line: int + message: str + + +@dataclass +class ClassDecl: + package: str + filename: str + kind: str # "class" | "interface" + name: str + extends: Optional[str] + within: Optional[str] + modifiers: List[str] # e.g. "native(Anim)", "hidecategories(...)", "transient" + header_line: int + header_text: str # raw class/interface statement through `;` + members: List[Any] + defaultproperties: Optional[DefaultPropertiesBlock] + errors: List[ParseError] + leading_comments: List[str] = field(default_factory=list) + + +def to_dict(node: Node) -> dict: + """Serialise any model node to a JSON-friendly dict.""" + return asdict(node) diff --git a/tool/stubgen/parser.py b/tool/stubgen/parser.py new file mode 100644 index 00000000..2c8854f3 --- /dev/null +++ b/tool/stubgen/parser.py @@ -0,0 +1,1038 @@ +"""Recursive-descent parser for decompiled UnrealScript. + +Grammar (UE Explorer 0.57 output dialect, Paladins UDK Feb 2013): + + file := class-header member* eof + class-header := ('class'|'interface') NAME ['extends' dotted] ['within' dotted] + (modifier ['(' ... ')'])* ';' + member := const | enum | struct | var | replication | state + | function-like | defaultproperties + function-like := (modifier | 'function'|'event'|'delegate')* [type] NAME '(' params ')' + (';' | '{' body '}') + var := 'var' ['(' cat ')'] (modifier)* type name (',' name)* ';' + state := ['auto'] 'state' NAME '{' state-member* '}' + +The trickiest ambiguity — distinguishing a return type from the function name +or a var's type from its first name — is resolved structurally: the name is +the last identifier before `(` (functions) or before the first `,`/`;`/`[`/`=` +(vars), and the type is the type-reference that precedes it. Modifier keywords +are only needed in the few places where they can't be inferred (params, state +members), so the keyword lists are deliberately small. + +Error recovery: each top-level member is parsed in a try/except; on failure a +ParseError is recorded and the parser re-syncs to the next `;` or balanced +`{...}` group, so one bad declaration doesn't kill the whole file. +""" + +from __future__ import annotations + +import re +from typing import List, Optional, Tuple, Any + +from .lexer import tokenize, Tok +from .model import ( + ClassDecl, + ConstDecl, + EnumDecl, + EnumMember, + VarDecl, + VarGroup, + Param, + LocalDecl, + FunctionDecl, + ReplicationBlock, + ReplicationRule, + StateDecl, + StructDecl, + DefaultPropertiesBlock, + RawStatement, + ParseError, +) + +# Function-kind keywords. Everything else that can lead a function signature +# (native, simulated, exec, reliable, server, client, final, static, ...) is +# handled generically by the "name = last ident before '('" rule, so we only +# need to *name* these to strip them out of the type region. +KINDS = {"function", "event", "delegate", "operator"} + +# Modifiers that can lead a top-level member and therefore route dispatch +# toward a function. Used only for member-level dispatch (a bare `const` that +# is actually `const function ...`, state-member routing, and detecting +# `simulated state X` / `reliable server function ...`). +FUNCTION_MODS = { + "native", "final", "exec", "simulated", "reliable", "unreliable", "server", + "client", "static", "singular", "latent", "coerce", "noexport", "iterator", + "abstract", "private", "protected", "public", "const", "cpptext", +} + +# Parameter modifiers (types can't collide with these in practice). +PARAM_MODS = {"out", "optional", "const", "coerce", "init", "ref"} + +# Keywords whose trailing `(...)` in a function signature is a modifier/priority +# group (native(242), operator(24), preoperator/postoperator) rather than the +# parameter list. +ARG_KEYWORDS = {"native", "operator", "preoperator", "postoperator"} + +_LOCAL_RE = re.compile(r"^\s*local\s+(.+?)\s*;?\s*$") +_COMMENT_VALUE_RE = re.compile(r"//\s*(-?\d+)") +_EXPORT_RE = re.compile(r"^\s*//\s*Export\b") + + +class UcParseError(Exception): + """Recoverable parse failure (records a ParseError, parser re-syncs).""" + + def __init__(self, line: int, msg: str): + super().__init__(f"line {line}: {msg}") + self.line = line + self.msg = msg + + +class Parser: + def __init__(self, source: str, package: str = "", filename: str = ""): + self.src = source + # Split preserving interior content; strip trailing \r from each line + # so (line, col) anchors line up with the tokenizer, which counts \r + # as skipped whitespace at the end of a line. + self.lines = source.split("\n") + if self.lines and self.lines[-1] == "": + self.lines.pop() + self.lines = [ln[:-1] if ln.endswith("\r") else ln for ln in self.lines] + self.package = package + self.filename = filename + self.tokens = tokenize(source) + self.pos = 0 + self.errors: List[ParseError] = [] + + # ------------------------------------------------------------------ # + # token helpers + # ------------------------------------------------------------------ # + + def peek(self) -> Tok: + return self.tokens[self.pos] + + def advance(self) -> Tok: + t = self.tokens[self.pos] + if t.kind != "eof": + self.pos += 1 + return t + + def _peek_sig(self, offset: int = 0) -> Tok: + """Peek the (offset)-th significant token without consuming.""" + i = self.pos + seen = -1 + while i < len(self.tokens): + t = self.tokens[i] + if t.kind not in ("comment", "newline"): + seen += 1 + if seen == offset: + return t + i += 1 + return self.tokens[-1] # eof + + def _is_sig(self, kind: str, text: Optional[str] = None, offset: int = 0) -> bool: + t = self._peek_sig(offset) + if t.kind != kind: + return False + return text is None or t.text == text + + def _advance_sig(self) -> Tok: + """Skip trivia, then consume and return the next significant token.""" + while self.peek().kind in ("comment", "newline"): + self.advance() + return self.advance() + + def _expect(self, kind: str, text: Optional[str] = None) -> Tok: + t = self._peek_sig(0) + if t.kind != kind or (text is not None and t.text != text): + raise UcParseError( + t.line, + f"expected {kind}{' ' + text if text else ''}, got {t.kind} {t.text!r}", + ) + return self._advance_sig() + + def _expect_ident(self) -> Tok: + return self._expect("ident") + + def _collect_comments(self) -> List[str]: + """Skip trivia at a member boundary, collecting comment texts.""" + comments: List[str] = [] + while True: + t = self.peek() + if t.kind == "comment": + comments.append(t.text.strip()) + self.advance() + elif t.kind == "newline": + self.advance() + else: + break + return comments + + # ------------------------------------------------------------------ # + # raw source slicing (line/col anchors) + # ------------------------------------------------------------------ # + + def _raw_span(self, l1: int, c1: int, l2: int, c2: int) -> str: + """Raw source from (l1,c1) inclusive to (l2,c2) exclusive (1-based).""" + if l1 < 1 or l1 > len(self.lines): + return "" + if l2 == l1 and c2 <= c1: + return "" + if l1 == l2: + ln = self.lines[l1 - 1] + return ln[c1 - 1 : c2 - 1] + parts = [self.lines[l1 - 1][c1 - 1 :]] + for ln in range(l1 + 1, l2): + parts.append(self.lines[ln - 1]) + parts.append(self.lines[l2 - 1][: c2 - 1]) + return "\n".join(parts) + + def _raw_toks(self, toks: List[Tok]) -> str: + if not toks: + return "" + a = toks[0] + b = toks[-1] + return self._raw_span(a.line, a.col, b.line, b.col + len(b.text)) + + def _line_comment(self, line_no: int) -> Optional[str]: + if 1 <= line_no <= len(self.lines): + s = self.lines[line_no - 1] + idx = s.find("//") + if idx >= 0: + return s[idx:].strip() + return None + + # ------------------------------------------------------------------ # + # balanced groups + # ------------------------------------------------------------------ # + + def _skip_balanced(self, open_ch: str, close_ch: str) -> Tok: + """Consume from the token after open_ch through the matching close_ch. + + The caller must already have consumed the opening token; depth starts + at 1 so the matching close is the first one that brings it to 0. + """ + depth = 1 + while True: + t = self.advance() + if t.kind == "eof": + raise UcParseError(t.line, f"unterminated '{open_ch}' block") + if t.kind == "op": + if t.text == open_ch: + depth += 1 + elif t.text == close_ch: + depth -= 1 + if depth == 0: + return t + + def _skip_balanced_braces(self) -> Tok: + return self._skip_balanced("{", "}") + + def _skip_balanced_paren(self) -> Tok: + return self._skip_balanced("(", ")") + + def _collect_until(self, stop_texts: Tuple[str, ...]) -> Tuple[List[Tok], Optional[Tok]]: + """Collect significant tokens until a top-level token in stop_texts. + + Returns (tokens, terminator); the terminator is *not* consumed. + """ + toks: List[Tok] = [] + depth = 0 + while True: + t = self._peek_sig(0) + if t.kind == "eof": + return toks, None + if depth == 0 and t.kind == "op" and t.text in stop_texts: + return toks, t + self._advance_sig() + toks.append(t) + if t.kind == "op": + if t.text in ("{", "(", "["): + depth += 1 + elif t.text in ("}", ")", "]"): + depth -= 1 + + # ------------------------------------------------------------------ # + # type-reference detection (shared by var / function / param / local) + # ------------------------------------------------------------------ # + + @staticmethod + def _type_start(region: List[Tok]) -> int: + """Index into `region` where the trailing type-reference starts. + + `region` is the tokens before a name: a run of modifier idents followed + by exactly one type-reference (IDENT, possibly dotted, possibly a + generic like array<...> / delegate<...> / Class<...>). Returns the + index of the type's first token. + """ + if not region: + return 0 + last = region[-1] + if last.kind == "op" and last.text == ">": + # generic: scan backwards from the closing `>`, find the matching + # outermost `<`, then step to the base ident before it + depth = 0 + cand = None + for k in range(len(region) - 1, -1, -1): + t = region[k] + if t.kind == "op" and t.text == ">": + depth += 1 + elif t.kind == "op" and t.text == "<": + depth -= 1 + if depth < 0: # outermost '<' + m = k - 1 + while m >= 0 and region[m].kind != "ident": + m -= 1 + return m if m >= 0 else k + if depth == 0: + m = k - 1 + while m >= 0 and region[m].kind != "ident": + m -= 1 + cand = m if m >= 0 else k + return cand if cand is not None else 0 + if last.kind == "ident": + i = len(region) - 1 + if i - 1 >= 0 and region[i - 1].kind == "op" and region[i - 1].text == ".": + k = i - 2 + while k >= 0 and region[k].kind != "ident": + k -= 1 + return k if k >= 0 else i - 1 + return i + return 0 + + def _parse_type_names(self, toks: List[Tok]) -> Tuple[List[str], str, List[VarDecl]]: + """Parse `modifiers type name, name...` (used by var and local). + + `toks` is the significant token run of one statement (terminator `;` + excluded). Returns (modifiers, type, var-decls). + """ + if not toks: + raise UcParseError(0, "empty declaration") + # first name = first ident followed by , ; [ = or end-of-run + name_idx: Optional[int] = None + for i, t in enumerate(toks): + if t.kind != "ident": + continue + nxt = None + for u in toks[i + 1 :]: + if u.kind not in ("comment", "newline"): + nxt = u + break + if nxt is None or (nxt.kind == "op" and nxt.text in (",", ";", "[", "=")): + name_idx = i + break + if name_idx is None: + raise UcParseError(toks[0].line, "no variable name in declaration") + + region = toks[:name_idx] + ts = self._type_start(region) + mods = [t.text for t in region[:ts] if t.kind == "ident"] + type_raw = self._raw_toks(region[ts:]).strip() + + names: List[VarDecl] = [] + i = name_idx + while i < len(toks): + t = toks[i] + if t.kind != "ident": + i += 1 + continue + name = t.text + dim = None + init = None + i += 1 + if i < len(toks) and toks[i].kind == "op" and toks[i].text == "[": + dim_toks: List[Tok] = [] + i += 1 + while i < len(toks) and not (toks[i].kind == "op" and toks[i].text == "]"): + dim_toks.append(toks[i]) + i += 1 + if i < len(toks): + i += 1 # skip ']' + dim = self._raw_toks(dim_toks).strip() + if i < len(toks) and toks[i].kind == "op" and toks[i].text == "=": + init_toks: List[Tok] = [] + i += 1 + while i < len(toks) and not ( + toks[i].kind == "op" and toks[i].text in (",", ";") + ): + init_toks.append(toks[i]) + i += 1 + init = self._raw_toks(init_toks).strip() + names.append(VarDecl(name=name, dim=dim, init=init, line=t.line, col=t.col)) + if i < len(toks) and toks[i].kind == "op" and toks[i].text == ",": + i += 1 + else: + break + return mods, type_raw, names + + # ------------------------------------------------------------------ # + # members + # ------------------------------------------------------------------ # + + def _parse_const(self, comments: List[str]) -> ConstDecl: + start = self._peek_sig(0) + self._advance_sig() # 'const' + name_tok = self._expect_ident() + self._expect("op", "=") + val_toks, term = self._collect_until((";",)) + if term is None: + raise UcParseError(start.line, "const statement not terminated by ';'") + value = self._raw_toks(val_toks).strip() + raw = self._raw_span(start.line, start.col, term.line, term.col + 1) + self._advance_sig() # consume ';' + return ConstDecl( + line=start.line, col=start.col, name=name_tok.text, value=value, + raw=raw, leading_comments=comments, + ) + + def _parse_enum(self, comments: List[str]) -> EnumDecl: + start = self._peek_sig(0) + self._advance_sig() # 'enum' + head_toks, term = self._collect_until(("{",)) + if term is None: + raise UcParseError(start.line, "enum without '{'") + name = None + for t in reversed(head_toks): + if t.kind == "ident": + name = t.text + break + mods = [t.text for t in head_toks if t.kind == "ident" and t.text != name] + body_start = term.line + self._advance_sig() # '{' + members: List[EnumMember] = [] + while True: + t = self._peek_sig(0) + if t.kind == "op" and t.text == "}": + break + if t.kind == "eof": + raise UcParseError(t.line, "unterminated enum") + name_tok = self._expect_ident() + comment = self._line_comment(name_tok.line) + value = None + nxt = self._peek_sig(0) + if nxt.kind == "op" and nxt.text == "=": + self._advance_sig() + val_toks, term2 = self._collect_until((",", "}")) + value = self._raw_toks(val_toks).strip() or None + nxt = self._peek_sig(0) + if value is None and comment: + m = _COMMENT_VALUE_RE.search(comment) + if m: + value = m.group(1) + members.append( + EnumMember(name=name_tok.text, line=name_tok.line, value=value, comment=comment) + ) + if nxt.kind == "op" and nxt.text == ",": + self._advance_sig() + elif nxt.kind == "op" and nxt.text == "}": + break + else: + raise UcParseError(nxt.line, f"expected ',' or '}}' after enum member, got {nxt.text!r}") + close = self._expect("op", "}") + if self._is_sig("op", ";"): + self._advance_sig() + return EnumDecl( + line=start.line, col=start.col, name=name or "", modifiers=mods, + members=members, body_start=body_start, body_end=close.line, + leading_comments=comments, + ) + + def _parse_struct(self, comments: List[str]) -> StructDecl: + start = self._peek_sig(0) + self._advance_sig() # 'struct' + head_toks, term = self._collect_until(("{",)) + if term is None: + raise UcParseError(start.line, "struct without '{'") + name = None + for t in reversed(head_toks): + if t.kind == "ident": + name = t.text + break + mods = [t.text for t in head_toks if t.kind == "ident" and t.text != name] + body_start = term.line + self._advance_sig() # '{' + members: List[Any] = [] + sdp = None + while True: + t = self._peek_sig(0) + if t.kind == "op" and t.text == "}": + break + if t.kind == "eof": + raise UcParseError(t.line, "unterminated struct") + if t.kind == "ident" and t.text == "structdefaultproperties": + self._advance_sig() + brace = self._expect("op", "{") + close_b = self._skip_balanced_braces() + sdp = ( + brace.line, + close_b.line, + "\n".join(self.lines[brace.line - 1 : close_b.line]), + ) + continue + if t.kind == "ident" and t.text == "var": + members.append(self._parse_var([])) + continue + raise UcParseError(t.line, f"unexpected token in struct: {t.text!r}") + close = self._expect("op", "}") + if self._is_sig("op", ";"): + self._advance_sig() + return StructDecl( + line=start.line, col=start.col, name=name or "", modifiers=mods, + members=members, structdefaultproperties=sdp, body_start=body_start, + body_end=close.line, leading_comments=comments, + ) + + def _parse_var(self, comments: List[str]) -> VarGroup: + start = self._peek_sig(0) + self._advance_sig() # 'var' + category = None + if self._is_sig("op", "("): + cs = self._advance_sig() + ce = self._skip_balanced_paren() + category = self._raw_span(cs.line, cs.col, ce.line, ce.col + 1) + toks, term = self._collect_until((";",)) + if term is None: + raise UcParseError(start.line, "var statement not terminated by ';'") + mods, type_raw, names = self._parse_type_names(toks) + raw = self._raw_span(start.line, start.col, term.line, term.col + 1) + self._advance_sig() # consume ';' + return VarGroup( + line=start.line, col=start.col, category=category, modifiers=mods, + type=type_raw, vars=names, raw=raw, leading_comments=comments, + ) + + def _parse_replication(self, comments: List[str]) -> ReplicationBlock: + start = self._peek_sig(0) + self._advance_sig() # 'replication' + brace = self._expect("op", "{") + rules: List[ReplicationRule] = [] + while True: + t = self._peek_sig(0) + if t.kind == "op" and t.text == "}": + break + if t.kind == "eof": + raise UcParseError(t.line, "unterminated replication block") + reliability = None + if t.kind == "ident" and t.text in ("reliable", "unreliable"): + reliability = t.text + self._advance_sig() + condition = None + t = self._peek_sig(0) + if t.kind == "ident" and t.text == "if": + self._advance_sig() + self._expect("op", "(") + cond_toks, term = self._collect_until((")",)) + if term is None: + raise UcParseError(start.line, "unterminated replication condition") + condition = self._raw_toks(cond_toks).strip() + self._advance_sig() # ')' + props: List[str] = [] + while True: + t = self._peek_sig(0) + if t.kind == "op" and t.text == ";": + self._advance_sig() + break + if t.kind == "op" and t.text == "}": + break # safety (missing ';') + if t.kind == "eof": + break + if t.kind == "ident": + props.append(t.text) + self._advance_sig() + rules.append( + ReplicationRule(condition=condition, reliability=reliability, props=props, line=start.line) + ) + close = self._expect("op", "}") + body_text = "\n".join(self.lines[brace.line - 1 : close.line]) + return ReplicationBlock( + line=start.line, col=start.col, rules=rules, body_start=brace.line, + body_end=close.line, body_text=body_text, leading_comments=comments, + ) + + def _looks_like_state(self) -> bool: + """True if the token stream at self.pos is a state declaration, possibly + preceded by 'auto' and/or function modifiers (e.g. `auto simulated state`). + Non-consuming.""" + i = self.pos + while i < len(self.tokens): + t = self.tokens[i] + if t.kind in ("comment", "newline"): + i += 1 + continue + if t.kind == "ident": + if t.text == "auto" or t.text in FUNCTION_MODS: + i += 1 + continue + if t.text == "state": + return True + return False + return False + + def _parse_state(self, comments: List[str], auto: bool) -> StateDecl: + start = self._peek_sig(0) + mods: List[str] = [] + if auto: + self._advance_sig() # 'auto' + # leading function modifiers, e.g. `simulated state X` / `auto simulated state X` + while self._peek_sig(0).kind == "ident" and self._peek_sig(0).text in FUNCTION_MODS: + mods.append(self._advance_sig().text) + self._advance_sig() # 'state' + category = None + if self._is_sig("op", "("): + cs = self._advance_sig() + ce = self._skip_balanced_paren() + category = self._raw_span(cs.line, cs.col, ce.line, ce.col + 1) + name_tok = self._expect_ident() + while not self._is_sig("op", "{"): + t = self._peek_sig(0) + if t.kind == "eof": + raise UcParseError(t.line, "unterminated state header") + if t.kind == "ident": + mods.append(t.text) + self._advance_sig() + brace = self._expect("op", "{") + body_start = brace.line + members: List[Any] = [] + ignores: List[str] = [] + while True: + t = self._peek_sig(0) + if t.kind == "op" and t.text == "}": + break + if t.kind == "eof": + raise UcParseError(t.line, "unterminated state") + if t.kind != "ident": + self._advance_sig() + continue + w = t.text + if w in KINDS or w in FUNCTION_MODS: + members.append(self._parse_function_like([])) + continue + if w == "ignores": + self._advance_sig() + ign: List[str] = [] + while True: + t2 = self._peek_sig(0) + if t2.kind == "op" and t2.text == ";": + self._advance_sig() + break + if t2.kind == "op" and t2.text == "}": + break + if t2.kind == "ident": + ign.append(t2.text) + self._advance_sig() + ignores = ign + continue + if w == "stop": + st = self._advance_sig() + if self._is_sig("op", ";"): + self._advance_sig() + members.append(RawStatement(line=st.line, col=st.col, text="stop;")) + continue + if w == "begin": + st = self._advance_sig() + if self._is_sig("op", ":"): + self._advance_sig() + members.append(RawStatement(line=st.line, col=st.col, text="begin:")) + continue + nxt = self._peek_sig(1) + if nxt.kind == "op" and nxt.text == ":": + st = self._advance_sig() + self._advance_sig() # ':' + members.append(RawStatement(line=st.line, col=st.col, text=st.text + ":")) + continue + # fallback: a plain statement, consume to ';' (or a nested brace group) + st = self._advance_sig() + raw_toks = [st] + while True: + t2 = self._peek_sig(0) + if t2.kind == "op" and t2.text == ";": + self._advance_sig() + break + if t2.kind == "op" and t2.text == "}": + break + if t2.kind == "eof": + break + if t2.kind == "op" and t2.text == "{": + self._advance_sig() # consume '{' (skip_balanced expects it consumed) + self._skip_balanced_braces() + break + raw_toks.append(self._advance_sig()) + members.append( + RawStatement(line=st.line, col=st.col, text=self._raw_toks(raw_toks).strip()) + ) + close = self._expect("op", "}") + body_text = "\n".join(self.lines[body_start - 1 : close.line]) + return StateDecl( + line=start.line, col=start.col, name=name_tok.text, is_auto=auto, + category=category, modifiers=mods, ignores=ignores, members=members, + body_start=body_start, body_end=close.line, body_text=body_text, + leading_comments=comments, + ) + + def _parse_defaultprops(self, comments: List[str]) -> DefaultPropertiesBlock: + start = self._peek_sig(0) + self._advance_sig() # 'defaultproperties' + brace = self._expect("op", "{") + close = self._skip_balanced_braces() + body_text = "\n".join(self.lines[brace.line - 1 : close.line]) + return DefaultPropertiesBlock( + line=start.line, col=start.col, body_start=brace.line, body_end=close.line, + body_text=body_text, leading_comments=comments, + ) + + # ------------------------------------------------------------------ # + # function-like declarations + # ------------------------------------------------------------------ # + + def _parse_function_like(self, comments: List[str]) -> FunctionDecl: + start = self._peek_sig(0) + + # Collect signature tokens, skipping modifier/priority arg groups: + # native(242) static final operator(24) bool ==(...) + # The parameter-list '(' is the first one NOT attached to a keyword. + toks: List[Tok] = [] + while True: + t = self._peek_sig(0) + if t.kind == "eof": + raise UcParseError(start.line, "function signature without '('") + if t.kind == "op" and t.text == "(": + if toks and toks[-1].kind == "ident" and toks[-1].text in ARG_KEYWORDS: + self._advance_sig() # '(' + self._skip_balanced_paren() + continue + break # this is the parameter list + toks.append(self._advance_sig()) + if not toks: + raise UcParseError(start.line, "empty function signature") + paren_tok = self._peek_sig(0) + + # operator / preoperator / postoperator: the name is the symbol after + # the return type, so it may not be an identifier at all (==, &&, !). + op_kind = None + op_idx = -1 + for i in range(len(toks) - 1, -1, -1): + if toks[i].kind == "ident" and toks[i].text in ("operator", "preoperator", "postoperator"): + op_kind = toks[i].text + op_idx = i + break + + if op_kind is not None: + kind = "operator" + after = toks[op_idx + 1 :] + return_type = None + name_start = None + if after: + if after[0].kind == "ident": + return_type = after[0].text + name_start = after[1] if len(after) > 1 else None + else: + name_start = after[0] + if name_start is None: + raise UcParseError(start.line, "operator declaration without a symbol") + name = self._raw_span(name_start.line, name_start.col, paren_tok.line, paren_tok.col).strip() + mods = [t.text for t in toks[:op_idx] if t.kind == "ident"] + else: + kind = "" + name = None + name_idx = -1 + for i in range(len(toks) - 1, -1, -1): + if toks[i].kind == "ident": + name = toks[i].text + name_idx = i + break + if name is None: + raise UcParseError(start.line, "no function name in signature") + region = toks[:name_idx] + kind_idx = -1 + for i in range(len(region) - 1, -1, -1): + if region[i].kind == "ident" and region[i].text in KINDS: + kind = region[i].text + kind_idx = i + break + return_type = None + if kind: + mods = [t.text for t in region[:kind_idx] if t.kind == "ident"] + type_part = region[kind_idx + 1 :] + if type_part: + ts = self._type_start(type_part) + if ts < len(type_part): + return_type = self._raw_toks(type_part[ts:]).strip() + # any idents between kind and the type are modifiers (rare) + mods += [t.text for t in type_part[:ts] if t.kind == "ident"] + else: + mods = [t.text for t in region if t.kind == "ident"] + + self._advance_sig() # '(' + params, close_paren = self._parse_params() + + signature = self._raw_span(start.line, start.col, close_paren.line, close_paren.col + 1) + export = self._find_export_comment(comments) + + t = self._peek_sig(0) + if t.kind == "op" and t.text == ";": + self._advance_sig() + return FunctionDecl( + line=start.line, col=start.col, kind=kind, modifiers=mods, + return_type=return_type, name=name, params=params, + is_declaration=True, signature=signature, + body_start=None, body_end=None, body_text=None, + export_comment=export, leading_comments=comments, + ) + if t.kind == "op" and t.text == "{": + brace = self._advance_sig() + close_b = self._skip_balanced_braces() + body_text = "\n".join(self.lines[brace.line - 1 : close_b.line]) + locals_ = self._parse_locals(body_text, brace.line) + return FunctionDecl( + line=start.line, col=start.col, kind=kind, modifiers=mods, + return_type=return_type, name=name, params=params, + is_declaration=False, signature=signature, + body_start=brace.line, body_end=close_b.line, body_text=body_text, + export_comment=export, locals=locals_, leading_comments=comments, + ) + raise UcParseError(t.line, f"expected '{{' or ';' after function signature, got {t.text!r}") + + def _parse_params(self) -> Tuple[List[Param], Tok]: + params: List[Param] = [] + while True: + t = self._peek_sig(0) + if t.kind == "op" and t.text == ")": + close = self._advance_sig() + return params, close + params.append(self._parse_param()) + t = self._peek_sig(0) + if t.kind == "op" and t.text == ",": + self._advance_sig() + elif t.kind == "op" and t.text == ")": + continue + else: + raise UcParseError(t.line, f"expected ',' or ')' in parameter list, got {t.text!r}") + + def _parse_param(self) -> Param: + start = self._peek_sig(0) + toks, term = self._collect_until((",", ")")) + if not toks: + raise UcParseError(start.line, "empty parameter") + if term is None: + raise UcParseError(start.line, "unterminated parameter") + + # split on the first top-level '=' (default value) + default = None + decl = toks + for i, t in enumerate(toks): + if t.kind == "op" and t.text == "=": + decl = toks[:i] + default = self._raw_toks(toks[i + 1 :]).strip() + break + if not decl: + raise UcParseError(start.line, "empty parameter declaration") + + name = None + name_idx = -1 + for i in range(len(decl) - 1, -1, -1): + if decl[i].kind == "ident": + name = decl[i].text + name_idx = i + break + if name is None: + raise UcParseError(start.line, "parameter without name") + + region = decl[:name_idx] + mods: List[str] = [] + j = 0 + while j < len(region) and region[j].kind == "ident" and region[j].text in PARAM_MODS: + mods.append(region[j].text) + j += 1 + rest = region[j:] + ptype = "" + if rest: + ts = self._type_start(rest) + if ts < len(rest): + ptype = self._raw_toks(rest[ts:]).strip() + # fixed-size array dim after the name, e.g. `name TrackControllerName[10]` + dim = None + k = name_idx + 1 + while k < len(decl): + if decl[k].kind == "op" and decl[k].text == "[": + dim_toks: List[Tok] = [] + k += 1 + while k < len(decl) and not (decl[k].kind == "op" and decl[k].text == "]"): + dim_toks.append(decl[k]) + k += 1 + dim = self._raw_toks(dim_toks).strip() + break + break + return Param(modifiers=mods, type=ptype, name=name, default=default, dim=dim, line=start.line) + + # ------------------------------------------------------------------ # + # locals + # ------------------------------------------------------------------ # + + def _parse_locals(self, body_text: str, body_line: int) -> List[LocalDecl]: + result: List[LocalDecl] = [] + for idx, line in enumerate(body_text.split("\n")): + m = _LOCAL_RE.match(line) + if not m: + continue + line_no = body_line + idx + raw = line.strip() + decl: Optional[LocalDecl] = None + try: + toks = [t for t in tokenize(m.group(1) + ";") if t.kind not in ("comment", "newline")] + mods, type_raw, names = self._parse_type_names(toks) + decl = LocalDecl( + line=line_no, raw=raw, modifiers=mods, + type=type_raw or None, names=[v.name for v in names], + ) + except UcParseError: + decl = LocalDecl(line=line_no, raw=raw) + result.append(decl) + return result + + @staticmethod + def _find_export_comment(comments: List[str]) -> Optional[str]: + for c in comments: + if _EXPORT_RE.match(c): + return c + return None + + # ------------------------------------------------------------------ # + # class / interface + # ------------------------------------------------------------------ # + + def _parse_header(self) -> ClassDecl: + comments = self._collect_comments() + start = self._peek_sig(0) + if start.kind != "ident" or start.text not in ("class", "interface"): + raise UcParseError(start.line, f"expected 'class' or 'interface', got {start.text!r}") + kind = start.text + self._advance_sig() + name_tok = self._expect_ident() + name = name_tok.text + extends = None + within = None + mods: List[str] = [] + semi = None + while True: + t = self._peek_sig(0) + if t.kind == "op" and t.text == ";": + semi = self._advance_sig() + break + if t.kind == "eof": + raise UcParseError(t.line, "class header not terminated by ';'") + if t.kind == "ident" and t.text == "extends": + self._advance_sig() + parts = [self._expect_ident().text] + while self._is_sig("op", "."): + self._advance_sig() + parts.append(self._expect_ident().text) + extends = ".".join(parts) + continue + if t.kind == "ident" and t.text == "within": + self._advance_sig() + parts = [self._expect_ident().text] + while self._is_sig("op", "."): + self._advance_sig() + parts.append(self._expect_ident().text) + within = ".".join(parts) + continue + if t.kind == "ident": + mod_start = self._advance_sig() + if self._is_sig("op", "("): + cs = self._advance_sig() + ce = self._skip_balanced_paren() + mods.append(self._raw_span(mod_start.line, mod_start.col, ce.line, ce.col + 1)) + else: + mods.append(mod_start.text) + continue + # stray token in header (shouldn't happen) — skip it + self._advance_sig() + if semi is None: + raise UcParseError(start.line, "class header not terminated by ';'") + header_text = self._raw_span(start.line, start.col, semi.line, semi.col + 1) + return ClassDecl( + package=self.package, filename=self.filename, kind=kind, name=name, + extends=extends, within=within, modifiers=mods, header_line=start.line, + header_text=header_text, members=[], defaultproperties=None, + errors=self.errors, leading_comments=comments, + ) + + # ------------------------------------------------------------------ # + # top level + # ------------------------------------------------------------------ # + + def _parse_member(self) -> Any: + comments = self._collect_comments() + t = self._peek_sig(0) + if t.kind == "eof": + return None # trailing comments/blank lines at end of file + if t.kind != "ident": + raise UcParseError(t.line, f"unexpected top-level token {t.kind} {t.text!r}") + w = t.text + + if w == "defaultproperties": + return self._parse_defaultprops(comments) + if w == "const": + nxt = self._peek_sig(1) + if nxt.kind == "ident" and (nxt.text in KINDS or nxt.text in FUNCTION_MODS): + return self._parse_function_like(comments) + return self._parse_const(comments) + if w == "enum": + return self._parse_enum(comments) + if w == "struct": + return self._parse_struct(comments) + if w == "var": + return self._parse_var(comments) + if w == "replication": + return self._parse_replication(comments) + if w == "state": + return self._parse_state(comments, auto=False) + if w == "auto": + if self._looks_like_state(): + return self._parse_state(comments, auto=True) + raise UcParseError(t.line, f"unrecognized top-level declaration: {w!r}") + if w in KINDS or w in FUNCTION_MODS: + if w in FUNCTION_MODS and self._looks_like_state(): + return self._parse_state(comments, auto=False) + return self._parse_function_like(comments) + raise UcParseError(t.line, f"unrecognized top-level declaration: {w!r}") + + def _resync(self) -> None: + """Consume to the next top-level ';' or balanced '{}' group.""" + depth = 0 + while True: + t = self.peek() + if t.kind == "eof": + return + if t.kind == "op": + if t.text in ("{", "(", "["): + depth += 1 + elif t.text in ("}", ")", "]"): + if depth == 0 and t.text == "}": + self.advance() + return + depth = max(0, depth - 1) + elif t.text == ";" and depth == 0: + self.advance() + return + self.advance() + + def parse(self) -> ClassDecl: + header = self._parse_header() + members: List[Any] = [] + while self.peek().kind != "eof": + try: + m = self._parse_member() + if m is not None: + members.append(m) + except UcParseError as e: + self.errors.append(ParseError(line=e.line, message=e.msg)) + self._resync() + # defaultproperties, if present, is the last member + defaultproperties = None + if members and isinstance(members[-1], DefaultPropertiesBlock): + defaultproperties = members[-1] + members = members[:-1] + header.members = members + header.defaultproperties = defaultproperties + header.errors = self.errors + return header diff --git a/tool/stubgen/render.py b/tool/stubgen/render.py new file mode 100644 index 00000000..78edb779 --- /dev/null +++ b/tool/stubgen/render.py @@ -0,0 +1,151 @@ +"""Human-readable tree printer for the parsed model (dry-run output).""" + +from __future__ import annotations + +from typing import Any, List + +from .model import ( + ClassDecl, + ConstDecl, + EnumDecl, + VarGroup, + FunctionDecl, + ReplicationBlock, + StateDecl, + StructDecl, + DefaultPropertiesBlock, + RawStatement, + ParseError, +) + + +def _params_str(fn: FunctionDecl) -> str: + parts = [] + for p in fn.params: + bits = [] + if p.modifiers: + bits.append(" ".join(p.modifiers) + " ") + bits.append(p.type) + bits.append(" " + p.name) + if p.dim is not None: + bits.append(f"[{p.dim}]") + if p.default is not None: + bits.append("=" + p.default) + parts.append("".join(bits)) + return ", ".join(parts) + + +def _var_str(vg: VarGroup) -> str: + bits = ["var"] + if vg.category: + bits.append(vg.category) + if vg.modifiers: + bits.append(" ".join(vg.modifiers)) + bits.append(vg.type) + names = [] + for v in vg.vars: + s = v.name + if v.dim is not None: + s += f"[{v.dim}]" + if v.init is not None: + s += f"={v.init}" + names.append(s) + bits.append(", ".join(names)) + return " ".join(bits) + + +def _fn_str(fn: FunctionDecl) -> str: + mods = " ".join(fn.modifiers) + bits = [] + if mods: + bits.append(mods) + if fn.kind: + bits.append(fn.kind) + if fn.return_type: + bits.append(fn.return_type) + bits.append(f"{fn.name}({_params_str(fn)})") + head = " ".join(bits) + if fn.is_declaration: + return f"{head}; [declaration]" + return f"{head} [body {fn.body_start}..{fn.body_end}]" + + +def _state_str(s: StateDecl) -> str: + auto = "auto " if s.is_auto else "" + mods = " ".join(s.modifiers) + m = (mods + " ") if mods else "" + cat = s.category if s.category else "" + ignores = f" ignores: {', '.join(s.ignores)}" if s.ignores else "" + return f"{auto}state {cat}{m}{s.name}{ignores} [body {s.body_start}..{s.body_end}]" + + +def _member_lines(m: Any) -> List[str]: + if isinstance(m, VarGroup): + return [f"L{m.line:<6} var {_var_str(m)[4:]}" if m.line else _var_str(m)] + if isinstance(m, ConstDecl): + return [f"L{m.line:<6} const {m.name} = {m.value}"] + if isinstance(m, EnumDecl): + head = f"L{m.line:<6} enum {m.name} [{len(m.members)} members, lines {m.body_start}..{m.body_end}]" + lines = [head] + for mem in m.members: + v = f" = {mem.value}" if mem.value else "" + c = f" {mem.comment}" if mem.comment else "" + lines.append(f" {mem.name}{v}{c} (L{mem.line})") + return lines + if isinstance(m, StructDecl): + head = f"L{m.line:<6} struct {m.name} [{len(m.members)} members, lines {m.body_start}..{m.body_end}]" + lines = [head] + for sub in m.members: + for ln in _member_lines(sub): + lines.append(" " + ln) + if m.structdefaultproperties: + s, e, _ = m.structdefaultproperties + lines.append(f" structdefaultproperties [body {s}..{e}]") + return lines + if isinstance(m, FunctionDecl): + export = f" <{m.export_comment}>" if m.export_comment else "" + locals_ = f" [{len(m.locals)} locals]" if m.locals else "" + return [f"L{m.line:<6} {_fn_str(m)}{export}{locals_}"] + if isinstance(m, ReplicationBlock): + lines = [f"L{m.line:<6} replication [{len(m.rules)} rules, lines {m.body_start}..{m.body_end}]"] + for r in m.rules: + rel = f"{r.reliability} " if r.reliability else "" + cond = f"if({r.condition}) " if r.condition else "" + lines.append(f" {rel}{cond}{', '.join(r.props)}") + return lines + if isinstance(m, StateDecl): + head = f"L{m.line:<6} {_state_str(m)}" + lines = [head] + for sub in m.members: + if isinstance(sub, RawStatement): + lines.append(f" {sub.text} (L{sub.line})") + else: + for ln in _member_lines(sub): + lines.append(" " + ln) + return lines + if isinstance(m, DefaultPropertiesBlock): + return [f"L{m.line:<6} defaultproperties [body {m.body_start}..{m.body_end}]"] + return [f"L{m.line:<6} ? {m!r}"] + + +def render_class(c: ClassDecl) -> str: + kind = "interface" if c.kind == "interface" else "class" + header = f"L{c.header_line:<6} {kind} {c.name}" + if c.extends: + header += f" extends {c.extends}" + if c.within: + header += f" within {c.within}" + out = [header] + if c.modifiers: + out.append(f" modifiers: {', '.join(c.modifiers)}") + out.append("") + for m in c.members: + out.extend(_member_lines(m)) + if c.defaultproperties is not None: + out.extend(_member_lines(c.defaultproperties)) + if c.errors: + out.append("") + out.append(" ERRORS:") + for e in c.errors: + out.append(f" L{e.line}: {e.message}") + return "\n".join(out) diff --git a/tool/stubgen/render_stub.py b/tool/stubgen/render_stub.py new file mode 100644 index 00000000..380861d1 --- /dev/null +++ b/tool/stubgen/render_stub.py @@ -0,0 +1,209 @@ +"""Stub emitter — re-emits a compilable .uc skeleton from the parsed model. + +Strips function/event/delegate/operator bodies to empty braces {}. +Strips defaultproperties to empty braces {}. +Preserves vars, consts, enums, structs, replication, state declarations (with their members stripped). +""" + +from __future__ import annotations + +from typing import Any, List, Optional + +from .model import ( + ClassDecl, + ConstDecl, + EnumDecl, + EnumMember, + VarGroup, + FunctionDecl, + ReplicationBlock, + StateDecl, + StructDecl, + DefaultPropertiesBlock, + RawStatement, +) + + +def _params_str(fn: FunctionDecl) -> str: + parts = [] + for p in fn.params: + bits = [] + if p.modifiers: + bits.append(" ".join(p.modifiers) + " ") + bits.append(p.type) + bits.append(" " + p.name) + if p.dim is not None: + bits.append(f"[{p.dim}]") + if p.default is not None: + bits.append("=" + p.default) + parts.append("".join(bits)) + return ", ".join(parts) + + +def _fn_signature(fn: FunctionDecl) -> str: + """Return the function signature (through closing ')') without body.""" + mods = " ".join(fn.modifiers) + bits = [] + if mods: + bits.append(mods) + if fn.kind: + bits.append(fn.kind) + if fn.return_type: + bits.append(fn.return_type) + bits.append(f"{fn.name}({_params_str(fn)})") + return " ".join(bits) + + +def _var_str(vg: VarGroup) -> str: + bits = ["var"] + if vg.category: + bits.append(vg.category) + if vg.modifiers: + bits.append(" ".join(vg.modifiers)) + bits.append(vg.type) + names = [] + for v in vg.vars: + s = v.name + if v.dim is not None: + s += f"[{v.dim}]" + if v.init is not None: + s += f"={v.init}" + names.append(s) + bits.append(", ".join(names)) + return " ".join(bits) + + +def _enum_str(e: EnumDecl) -> str: + # For stubs, omit the _MAX sentinel value (last element) + # Format: enum EName { VAL1, VAL2, VAL3 }; with index comments + head = f"enum {e.name}" + lines = [head + " {"] + members = e.members + if members and members[-1].name.endswith("_MAX"): + members = members[:-1] + for i, mem in enumerate(members): + c = f" // {i}" + lines.append(f" {mem.name},{c}") + lines.append("};") # trailing semicolon + return "\n".join(lines) + + +def _struct_str(s: StructDecl) -> str: + # For stubs, native structs are emitted as normal structs without modifiers + # and with a trailing semicolon after the closing brace + head = f"struct {s.name}" + lines = [head + " {"] + for sub in s.members: + if isinstance(sub, VarGroup): + lines.append(" " + _var_str(sub) + ";") + if s.structdefaultproperties: + lines.append(" structdefaultproperties {}") + lines.append("};") # Native structs end with }; + return "\n".join(lines) + + +def _state_str(st: StateDecl) -> str: + # For stubs, states are simplified to just "state StateName { ... }" + # No auto, category, modifiers, or ignores + auto = "auto " if st.is_auto else "" + head = f"{auto}state {st.name}" + lines = [head + " {"] + for sub in st.members: + if isinstance(sub, FunctionDecl): + # Strip function bodies in states too + lines.append(f" {_fn_signature(sub)} {{ }}") + elif isinstance(sub, RawStatement): + lines.append(f" {sub.text}") + lines.append("}") + return "\n".join(lines) + + +def _replication_str(r: ReplicationBlock) -> str: + lines = ["replication {"] + for rule in r.rules: + rel = f"{rule.reliability} " if rule.reliability else "" + cond = f"if({rule.condition}) " if rule.condition else "" + props = ", ".join(rule.props) + lines.append(f" {rel}{cond}{props}") + lines.append("}") + return "\n".join(lines) + + +def _member_stub(m: Any) -> List[str]: + """Emit a member as stub lines.""" + if isinstance(m, VarGroup): + return [_var_str(m) + ";"] + if isinstance(m, ConstDecl): + return [f"const {m.name} = {m.value};"] + if isinstance(m, EnumDecl): + return [_enum_str(m).split("\n")] + if isinstance(m, StructDecl): + return [_struct_str(m).split("\n")] + if isinstance(m, FunctionDecl): + if m.is_declaration: + # native/interface declarations already end with ; + sig = _fn_signature(m) + export = f" {m.export_comment}" if m.export_comment else "" + return [f"{sig};{export}"] + else: + # Has a body -> strip to empty braces + return [f"{_fn_signature(m)} {{ }}"] + if isinstance(m, ReplicationBlock): + return [_replication_str(m).split("\n")] + if isinstance(m, StateDecl): + return [_state_str(m).split("\n")] + if isinstance(m, DefaultPropertiesBlock): + # Handled separately at class level + return [] + return [] + + +def _flatten(lines: List[Any]) -> List[str]: + """Flatten nested lists of strings.""" + result: List[str] = [] + for item in lines: + if isinstance(item, list): + result.extend(_flatten(item)) + else: + result.append(item) + return result + + +def emit_stub(c: ClassDecl) -> str: + """Emit the full stub source for a class/interface.""" + kind = "interface" if c.kind == "interface" else "class" + lines = [] + + # Class header + header = f"{kind} {c.name}" + if c.extends: + header += f" extends {c.extends}" + if c.within: + header += f" within {c.within}" + if c.modifiers: + # For interfaces, strip "abstract" keyword + mods = [m for m in c.modifiers if not (kind == "interface" and m == "abstract")] + if mods: + header += " " + " ".join(mods) + lines.append(header + ";") + lines.append("") + + # Leading comments on class + for comment in c.leading_comments: + lines.append(comment) + if c.leading_comments: + lines.append("") + + # Members + for m in c.members: + member_lines = _member_stub(m) + if member_lines: + lines.extend(_flatten(member_lines)) + lines.append("") + + # defaultproperties + if c.defaultproperties is not None: + lines.append("defaultproperties {}") + lines.append("") + + return "\n".join(lines).rstrip() + "\n" \ No newline at end of file diff --git a/tool/stubgen/test_sample.sh b/tool/stubgen/test_sample.sh new file mode 100644 index 00000000..8e7ab6af --- /dev/null +++ b/tool/stubgen/test_sample.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# Smoke test: parse representative exported files + run a full scan. +# Assumes CWD is the repo root (or wherever exported/ lives). +set -euo pipefail +cd "$(dirname "$0")/../.." + +for f in \ + exported/TgGame/Classes/TgProj_Simulated.uc \ + exported/TgGame/Classes/TgRespawnBeaconExit.uc \ + exported/TgGame/Classes/TgAnimBlendBySkin.uc \ + exported/TgGame/Classes/TgDevice_AndroxusInhand.uc \ + exported/TgGame/Classes/Interface_AIAnnotation.uc \ + exported/TgClient/Classes/TgGameViewportClient.uc \ + exported/TgGame/Classes/None.uc \ + exported/Core/Classes/Object.uc ; do + echo "== $f" + python3 -m tool.stubgen parse "$f" >/dev/null || { echo "FAILED: $f"; exit 1; } +done + +echo "== full scan" +python3 -m tool.stubgen scan >/dev/null || { echo "scan reported parse errors"; exit 1; } +echo "OK" From 378976f46e89165789a7792693c820d9e440ab4a Mon Sep 17 00:00:00 2001 From: Tom Ferriere Date: Tue, 4 Aug 2026 20:23:06 +0200 Subject: [PATCH 09/73] stock udk project --- Development/Src/Core/Classes/Commandlet.uc | 0 Development/Src/Core/Classes/Component.uc | 0 .../Src/Core/Classes/DistributionFloat.uc | 0 .../Src/Core/Classes/DistributionVector.uc | 0 Development/Src/Core/Classes/Factory.uc | 0 .../Src/Core/Classes/HelpCommandlet.uc | 0 Development/Src/Core/Classes/Interface.uc | 0 Development/Src/Core/Classes/Object.uc | 6 - Development/Src/Core/Classes/Subsystem.uc | 0 Development/Src/Core/Globals.uci | 0 .../Src/Engine/Classes/AICommandBase.uc | 0 .../Src/Engine/Classes/AIController.uc | 0 .../Src/Engine/Classes/AISwitchablePylon.uc | 0 .../Src/Engine/Classes/AccessControl.uc | 0 Development/Src/Engine/Classes/Actor.uc | 0 .../Src/Engine/Classes/ActorComponent.uc | 0 .../Src/Engine/Classes/ActorFactory.uc | 0 .../Src/Engine/Classes/ActorFactoryAI.uc | 0 .../Src/Engine/Classes/ActorFactoryActor.uc | 0 .../Classes/ActorFactoryAmbientSound.uc | 0 .../ActorFactoryAmbientSoundMovable.uc | 0 .../ActorFactoryAmbientSoundNonLoop.uc | 0 ...FactoryAmbientSoundNonLoopingToggleable.uc | 0 .../Classes/ActorFactoryAmbientSoundSimple.uc | 0 ...ctorFactoryAmbientSoundSimpleToggleable.uc | 0 .../Classes/ActorFactoryApexClothing.uc | 0 .../Classes/ActorFactoryApexDestructible.uc | 0 .../Engine/Classes/ActorFactoryArchetype.uc | 0 .../Engine/Classes/ActorFactoryCoverLink.uc | 0 .../Src/Engine/Classes/ActorFactoryDecal.uc | 0 .../Classes/ActorFactoryDecalMovable.uc | 0 .../ActorFactoryDominantDirectionalLight.uc | 0 ...rFactoryDominantDirectionalLightMovable.uc | 0 .../Engine/Classes/ActorFactoryDynamicSM.uc | 0 .../Src/Engine/Classes/ActorFactoryEmitter.uc | 0 ...ctorFactoryFogVolumeConstantDensityInfo.uc | 0 ...toryFogVolumeLinearHalfspaceDensityInfo.uc | 0 ...torFactoryFogVolumeSphericalDensityInfo.uc | 0 .../ActorFactoryFracturedStaticMesh.uc | 0 .../Classes/ActorFactoryInteractiveFoliage.uc | 0 .../Engine/Classes/ActorFactoryLensFlare.uc | 0 .../Src/Engine/Classes/ActorFactoryLight.uc | 0 .../Src/Engine/Classes/ActorFactoryMover.uc | 0 .../Engine/Classes/ActorFactoryPathNode.uc | 0 .../Classes/ActorFactoryPhysicsAsset.uc | 0 .../Engine/Classes/ActorFactoryPlayerStart.uc | 0 .../Src/Engine/Classes/ActorFactoryPylon.uc | 0 .../Engine/Classes/ActorFactoryRigidBody.uc | 0 .../Classes/ActorFactorySkeletalMesh.uc | 0 .../ActorFactorySkeletalMeshCinematic.uc | 0 .../Classes/ActorFactorySkeletalMeshMAT.uc | 0 .../Engine/Classes/ActorFactoryStaticMesh.uc | 0 .../Src/Engine/Classes/ActorFactoryTrigger.uc | 0 .../Src/Engine/Classes/ActorFactoryVehicle.uc | 0 Development/Src/Engine/Classes/Admin.uc | 0 .../Src/Engine/Classes/AdvancedReachSpec.uc | 0 Development/Src/Engine/Classes/AkBank.uc | 12 - .../Src/Engine/Classes/AkBaseSoundObject.uc | 3 - Development/Src/Engine/Classes/AkEvent.uc | 8 - .../Engine/Classes/AmbientOcclusionEffect.uc | 0 .../Src/Engine/Classes/AmbientSound.uc | 0 .../Src/Engine/Classes/AmbientSoundMovable.uc | 0 .../Src/Engine/Classes/AmbientSoundNonLoop.uc | 0 .../AmbientSoundNonLoopingToggleable.uc | 0 .../Src/Engine/Classes/AmbientSoundSimple.uc | 0 .../Classes/AmbientSoundSimpleSpline.uc | 0 .../AmbientSoundSimpleSplineNonLoop.uc | 0 .../Classes/AmbientSoundSimpleToggleable.uc | 0 .../Src/Engine/Classes/AmbientSoundSpline.uc | 0 .../Classes/AmbientSoundSplineMultiCue.uc | 0 .../Src/Engine/Classes/AnalyticEventsBase.uc | 0 .../Src/Engine/Classes/AnimMetaData.uc | 0 .../Classes/AnimMetaData_SkelControl.uc | 0 .../AnimMetaData_SkelControlKeyFrame.uc | 0 Development/Src/Engine/Classes/AnimNode.uc | 0 .../Classes/AnimNodeAdditiveBlending.uc | 0 .../Src/Engine/Classes/AnimNodeAimOffset.uc | 0 .../Src/Engine/Classes/AnimNodeBlend.uc | 0 .../Src/Engine/Classes/AnimNodeBlendBase.uc | 0 .../Src/Engine/Classes/AnimNodeBlendByBase.uc | 0 .../Engine/Classes/AnimNodeBlendByPhysics.uc | 0 .../Engine/Classes/AnimNodeBlendByPosture.uc | 0 .../Engine/Classes/AnimNodeBlendByProperty.uc | 0 .../Engine/Classes/AnimNodeBlendBySpeed.uc | 0 .../Classes/AnimNodeBlendDirectional.uc | 0 .../Src/Engine/Classes/AnimNodeBlendList.uc | 0 .../Engine/Classes/AnimNodeBlendMultiBone.uc | 0 .../Engine/Classes/AnimNodeBlendPerBone.uc | 0 .../Src/Engine/Classes/AnimNodeCrossfader.uc | 0 .../Src/Engine/Classes/AnimNodeFrame.uc | 0 .../Src/Engine/Classes/AnimNodeMirror.uc | 0 .../Engine/Classes/AnimNodePlayCustomAnim.uc | 0 .../Src/Engine/Classes/AnimNodeRandom.uc | 0 .../Engine/Classes/AnimNodeScalePlayRate.uc | 0 .../Classes/AnimNodeScaleRateBySpeed.uc | 0 .../Src/Engine/Classes/AnimNodeSequence.uc | 0 .../Classes/AnimNodeSequenceBlendBase.uc | 0 .../Classes/AnimNodeSequenceBlendByAim.uc | 0 .../Src/Engine/Classes/AnimNodeSlot.uc | 0 .../Src/Engine/Classes/AnimNodeSynch.uc | 0 .../Classes/AnimNode_MultiBlendPerBone.uc | 0 Development/Src/Engine/Classes/AnimNotify.uc | 0 .../Engine/Classes/AnimNotify_CameraEffect.uc | 0 .../AnimNotify_ClothingMaxDistanceScale.uc | 0 .../Src/Engine/Classes/AnimNotify_Footstep.uc | 0 .../Engine/Classes/AnimNotify_Forcefield.uc | 0 .../Src/Engine/Classes/AnimNotify_Kismet.uc | 0 .../Classes/AnimNotify_PawnMaterialParam.uc | 0 .../Classes/AnimNotify_PlayFaceFxAnim.uc | 0 .../Classes/AnimNotify_PlayParticleEffect.uc | 0 .../Src/Engine/Classes/AnimNotify_Rumble.uc | 0 .../Src/Engine/Classes/AnimNotify_Script.uc | 0 .../Src/Engine/Classes/AnimNotify_Scripted.uc | 0 .../Src/Engine/Classes/AnimNotify_Sound.uc | 0 .../Src/Engine/Classes/AnimNotify_Trails.uc | 0 .../Engine/Classes/AnimNotify_ViewShake.uc | 0 Development/Src/Engine/Classes/AnimObject.uc | 0 .../Src/Engine/Classes/AnimSequence.uc | 0 Development/Src/Engine/Classes/AnimSet.uc | 0 Development/Src/Engine/Classes/AnimTree.uc | 0 .../Classes/AnimationCompressionAlgorithm.uc | 0 ...AnimationCompressionAlgorithm_Automatic.uc | 0 ...ompressionAlgorithm_BitwiseCompressOnly.uc | 0 ...onCompressionAlgorithm_LeastDestructive.uc | 0 ...ompressionAlgorithm_PerTrackCompression.uc | 0 ...mpressionAlgorithm_RemoveEverySecondKey.uc | 0 ...onCompressionAlgorithm_RemoveLinearKeys.uc | 0 ...nCompressionAlgorithm_RemoveTrivialKeys.uc | 0 ...imationCompressionAlgorithm_RevertToRaw.uc | 0 Development/Src/Engine/Classes/ApexAsset.uc | 0 .../Src/Engine/Classes/ApexClothingAsset.uc | 0 .../Src/Engine/Classes/ApexComponentBase.uc | 0 .../Engine/Classes/ApexDestructibleActor.uc | 0 .../Classes/ApexDestructibleActorSpawnable.uc | 0 .../Engine/Classes/ApexDestructibleAsset.uc | 0 .../ApexDestructibleDamageParameters.uc | 0 .../Engine/Classes/ApexDynamicComponent.uc | 0 .../Src/Engine/Classes/ApexGenericAsset.uc | 0 .../Src/Engine/Classes/ApexStaticComponent.uc | 0 .../ApexStaticDestructibleComponent.uc | 0 .../Engine/Classes/AppNotificationsBase.uc | 0 .../Src/Engine/Classes/ArrowComponent.uc | 0 .../Src/Engine/Classes/AudioComponent.uc | 0 Development/Src/Engine/Classes/AudioDevice.uc | 0 Development/Src/Engine/Classes/AutoLadder.uc | 0 .../AutoNavMeshPathObstacleUnregister.uc | 0 .../Src/Engine/Classes/AutoTestManager.uc | 0 .../Src/Engine/Classes/BlockingVolume.uc | 0 Development/Src/Engine/Classes/BlurEffect.uc | 0 Development/Src/Engine/Classes/BookMark.uc | 0 Development/Src/Engine/Classes/BookMark2D.uc | 0 .../Src/Engine/Classes/BroadcastHandler.uc | 0 Development/Src/Engine/Classes/Brush.uc | 0 .../Src/Engine/Classes/BrushComponent.uc | 0 Development/Src/Engine/Classes/BrushShape.uc | 0 Development/Src/Engine/Classes/Camera.uc | 0 Development/Src/Engine/Classes/CameraActor.uc | 0 Development/Src/Engine/Classes/CameraAnim.uc | 0 .../Src/Engine/Classes/CameraAnimInst.uc | 0 .../Src/Engine/Classes/CameraConeComponent.uc | 0 .../Src/Engine/Classes/CameraModifier.uc | 0 .../Classes/CameraModifier_CameraShake.uc | 0 Development/Src/Engine/Classes/CameraShake.uc | 0 Development/Src/Engine/Classes/Canvas.uc | 0 .../Src/Engine/Classes/CeilingReachSpec.uc | 0 .../Src/Engine/Classes/CheatManager.uc | 0 .../Src/Engine/Classes/ClipPadEntry.uc | 0 .../Src/Engine/Classes/CloudSaveSystem.uc | 0 .../CloudSaveSystemDataBlobStoreInterface.uc | 0 .../Classes/CloudSaveSystemKVSInterface.uc | 0 .../Src/Engine/Classes/CloudStorageBase.uc | 0 .../CloudStorageBaseCloudSaveSystemKVS.uc | 0 .../Classes/CloudStorageUpgradeHelper.uc | 0 Development/Src/Engine/Classes/CodecMovie.uc | 0 .../Src/Engine/Classes/CodecMovieFallback.uc | 0 .../Src/Engine/Classes/ColorScaleVolume.uc | 0 Development/Src/Engine/Classes/Console.uc | 0 Development/Src/Engine/Classes/Controller.uc | 0 Development/Src/Engine/Classes/CoverGroup.uc | 0 .../Classes/CoverGroupRenderingComponent.uc | 0 Development/Src/Engine/Classes/CoverLink.uc | 0 .../Src/Engine/Classes/CoverMeshComponent.uc | 0 .../Src/Engine/Classes/CoverReplicator.uc | 0 .../Src/Engine/Classes/CoverSlipReachSpec.uc | 0 .../Src/Engine/Classes/CrowdAgentBase.uc | 0 .../Classes/CrowdPopulationManagerBase.uc | 0 .../Src/Engine/Classes/CullDistanceVolume.uc | 0 .../Src/Engine/Classes/CurveEdPresetCurve.uc | 0 .../Classes/CustomPropertyItemHandler.uc | 0 .../Src/Engine/Classes/CylinderComponent.uc | 0 .../Src/Engine/Classes/DOFAndBloomEffect.uc | 0 .../Classes/DOFBloomMotionBlurEffect.uc | 0 Development/Src/Engine/Classes/DOFEffect.uc | 0 Development/Src/Engine/Classes/DamageType.uc | 0 .../Src/Engine/Classes/DataStoreClient.uc | 0 Development/Src/Engine/Classes/DecalActor.uc | 0 .../Src/Engine/Classes/DecalActorBase.uc | 0 .../Src/Engine/Classes/DecalActorMovable.uc | 0 .../Src/Engine/Classes/DecalComponent.uc | 0 .../Src/Engine/Classes/DecalManager.uc | 0 .../Src/Engine/Classes/DecalMaterial.uc | 0 .../Engine/Classes/DefaultPhysicsVolume.uc | 0 .../Src/Engine/Classes/DirectionalLight.uc | 0 .../Classes/DirectionalLightComponent.uc | 0 .../Classes/DirectionalLightToggleable.uc | 0 .../Classes/DistributionFloatConstant.uc | 0 .../Classes/DistributionFloatConstantCurve.uc | 0 .../Classes/DistributionFloatParameterBase.uc | 0 .../DistributionFloatParticleParameter.uc | 0 .../DistributionFloatSoundParameter.uc | 0 .../Classes/DistributionFloatUniform.uc | 0 .../Classes/DistributionFloatUniformCurve.uc | 0 .../Classes/DistributionFloatUniformRange.uc | 0 .../Classes/DistributionVectorConstant.uc | 0 .../DistributionVectorConstantCurve.uc | 0 .../DistributionVectorParameterBase.uc | 0 .../DistributionVectorParticleParameter.uc | 0 .../Classes/DistributionVectorUniform.uc | 0 .../Classes/DistributionVectorUniformCurve.uc | 0 .../Classes/DistributionVectorUniformRange.uc | 0 .../Src/Engine/Classes/DmgType_Crushed.uc | 0 .../Src/Engine/Classes/DmgType_Fell.uc | 0 .../Src/Engine/Classes/DmgType_Suicided.uc | 0 .../Src/Engine/Classes/DmgType_Telefragged.uc | 0 .../Classes/DominantDirectionalLight.uc | 0 .../DominantDirectionalLightComponent.uc | 0 .../DominantDirectionalLightMovable.uc | 0 .../Src/Engine/Classes/DominantPointLight.uc | 0 .../Classes/DominantPointLightComponent.uc | 0 .../Src/Engine/Classes/DominantSpotLight.uc | 0 .../Classes/DominantSpotLightComponent.uc | 0 Development/Src/Engine/Classes/DoorMarker.uc | 0 .../Classes/DownloadableContentEnumerator.uc | 0 .../Classes/DownloadableContentManager.uc | 0 .../Src/Engine/Classes/DrawBoxComponent.uc | 0 .../Engine/Classes/DrawCapsuleComponent.uc | 0 .../Src/Engine/Classes/DrawConeComponent.uc | 0 .../Engine/Classes/DrawCylinderComponent.uc | 0 .../Engine/Classes/DrawFrustumComponent.uc | 0 .../Engine/Classes/DrawLightConeComponent.uc | 0 .../Classes/DrawLightRadiusComponent.uc | 0 .../Classes/DrawPylonRadiusComponent.uc | 0 .../Src/Engine/Classes/DrawQuadComponent.uc | 0 .../Classes/DrawSoundRadiusComponent.uc | 0 .../Src/Engine/Classes/DrawSphereComponent.uc | 0 .../Src/Engine/Classes/DroppedPickup.uc | 0 .../Src/Engine/Classes/DynamicAnchor.uc | 0 .../Engine/Classes/DynamicBlockingVolume.uc | 0 .../Src/Engine/Classes/DynamicCameraActor.uc | 0 .../DynamicLightEnvironmentComponent.uc | 0 .../Engine/Classes/DynamicPhysicsVolume.uc | 0 .../Src/Engine/Classes/DynamicPylon.uc | 0 .../Src/Engine/Classes/DynamicSMActor.uc | 0 .../Classes/DynamicSMActor_Spawnable.uc | 0 .../Engine/Classes/DynamicTriggerVolume.uc | 0 .../Src/Engine/Classes/EdCoordSystem.uc | 0 .../Classes/EditorLinkSelectionInterface.uc | 0 Development/Src/Engine/Classes/Emitter.uc | 0 .../Classes/EmitterCameraLensEffectBase.uc | 0 Development/Src/Engine/Classes/EmitterPool.uc | 0 .../Src/Engine/Classes/EmitterSpawnable.uc | 0 Development/Src/Engine/Classes/Engine.uc | 0 .../Src/Engine/Classes/EngineBaseTypes.uc | 0 Development/Src/Engine/Classes/EngineTypes.uc | 0 .../Src/Engine/Classes/EnvironmentVolume.uc | 0 .../Engine/Classes/ExponentialHeightFog.uc | 0 .../Classes/ExponentialHeightFogComponent.uc | 0 .../Src/Engine/Classes/FaceFXAnimSet.uc | 0 Development/Src/Engine/Classes/FaceFXAsset.uc | 0 .../Src/Engine/Classes/FacebookIntegration.uc | 0 .../Src/Engine/Classes/FailedConnect.uc | 0 Development/Src/Engine/Classes/FileLog.uc | 0 Development/Src/Engine/Classes/FileWriter.uc | 0 .../Engine/Classes/FloorToCeilingReachSpec.uc | 0 .../Src/Engine/Classes/FluidInfluenceActor.uc | 0 .../Engine/Classes/FluidInfluenceComponent.uc | 0 .../Src/Engine/Classes/FluidSurfaceActor.uc | 0 .../Classes/FluidSurfaceActorMovable.uc | 0 .../Engine/Classes/FluidSurfaceComponent.uc | 0 .../Classes/FogVolumeConeDensityComponent.uc | 0 .../Classes/FogVolumeConeDensityInfo.uc | 0 .../FogVolumeConstantDensityComponent.uc | 0 .../Classes/FogVolumeConstantDensityInfo.uc | 0 .../Classes/FogVolumeDensityComponent.uc | 0 .../Engine/Classes/FogVolumeDensityInfo.uc | 0 ...ogVolumeLinearHalfspaceDensityComponent.uc | 0 .../FogVolumeLinearHalfspaceDensityInfo.uc | 0 .../FogVolumeSphericalDensityComponent.uc | 0 .../Classes/FogVolumeSphericalDensityInfo.uc | 0 Development/Src/Engine/Classes/Font.uc | 0 .../Src/Engine/Classes/FontImportOptions.uc | 0 .../Engine/Classes/ForceFeedbackManager.uc | 0 .../Engine/Classes/ForceFeedbackWaveform.uc | 0 .../Src/Engine/Classes/ForceFieldShape.uc | 0 .../Src/Engine/Classes/ForceFieldShapeBox.uc | 0 .../Engine/Classes/ForceFieldShapeCapsule.uc | 0 .../Engine/Classes/ForceFieldShapeSphere.uc | 0 .../Src/Engine/Classes/ForcedLoopSoundNode.uc | 0 .../Src/Engine/Classes/ForcedReachSpec.uc | 0 .../Src/Engine/Classes/FractureManager.uc | 0 .../Src/Engine/Classes/FractureMaterial.uc | 0 .../Engine/Classes/FracturedBaseComponent.uc | 0 .../Classes/FracturedSMActorSpawnable.uc | 0 .../Classes/FracturedSkinnedMeshComponent.uc | 0 .../Classes/FracturedStaticMeshActor.uc | 0 .../FracturedStaticMeshActor_Spawnable.uc | 0 .../Classes/FracturedStaticMeshComponent.uc | 0 .../Engine/Classes/FracturedStaticMeshPart.uc | 0 Development/Src/Engine/Classes/GameEngine.uc | 0 Development/Src/Engine/Classes/GameInfo.uc | 0 Development/Src/Engine/Classes/GameMessage.uc | 0 .../Src/Engine/Classes/GameReplicationInfo.uc | 0 Development/Src/Engine/Classes/GameStats.uci | 0 .../Src/Engine/Classes/GameUISceneClient.uc | 0 .../Src/Engine/Classes/GameViewportClient.uc | 0 .../Src/Engine/Classes/GameplayEvents.uc | 0 .../Engine/Classes/GameplayEventsHandler.uc | 0 .../Engine/Classes/GameplayEventsReader.uc | 0 .../Classes/GameplayEventsUploadAnalytics.uc | 0 .../Engine/Classes/GameplayEventsWriter.uc | 0 .../Classes/GameplayEventsWriterBase.uc | 0 .../Engine/Classes/GeneratedMeshAreaLight.uc | 0 .../Classes/GenericParamListStatEntry.uc | 0 .../Src/Engine/Classes/Goal_AtActor.uc | 0 Development/Src/Engine/Classes/Goal_Null.uc | 0 .../Src/Engine/Classes/GravityVolume.uc | 0 Development/Src/Engine/Classes/HUD.uc | 0 .../Engine/Classes/HeadTrackingComponent.uc | 0 Development/Src/Engine/Classes/HeightFog.uc | 0 .../Src/Engine/Classes/HeightFogComponent.uc | 0 .../Src/Engine/Classes/HttpBaseInterface.uc | 0 Development/Src/Engine/Classes/HttpFactory.uc | 0 .../Engine/Classes/HttpRequestInterface.uc | 0 .../Engine/Classes/HttpResponseInterface.uc | 0 .../Src/Engine/Classes/HttpStatusCodes.uci | 0 .../Classes/ImageBasedReflectionComponent.uc | 0 .../Src/Engine/Classes/ImageReflection.uc | 0 .../Classes/ImageReflectionComponent.uc | 0 .../Classes/ImageReflectionSceneCapture.uc | 0 .../Classes/ImageReflectionShadowPlane.uc | 0 .../ImageReflectionShadowPlaneComponent.uc | 0 .../Src/Engine/Classes/InAppMessageBase.uc | 0 .../Src/Engine/Classes/InGameAdManager.uc | 0 Development/Src/Engine/Classes/Info.uc | 0 .../Src/Engine/Classes/IniLocPatcher.uc | 0 Development/Src/Engine/Classes/Input.uc | 0 .../Engine/Classes/InstancedFoliageActor.uc | 0 .../Classes/InstancedFoliageSettings.uc | 0 .../Classes/InstancedStaticMeshComponent.uc | 0 Development/Src/Engine/Classes/Interaction.uc | 0 .../Engine/Classes/InteractiveFoliageActor.uc | 0 .../Classes/InteractiveFoliageComponent.uc | 0 .../Classes/Interface_NavMeshPathObject.uc | 0 .../Classes/Interface_NavMeshPathObstacle.uc | 0 .../Classes/Interface_NavMeshPathSwitch.uc | 0 .../Classes/Interface_NavigationHandle.uc | 0 .../Interface_PylonGeometryProvider.uc | 0 .../Src/Engine/Classes/Interface_RVO.uc | 0 .../Src/Engine/Classes/Interface_Speaker.uc | 0 Development/Src/Engine/Classes/InterpActor.uc | 0 .../Classes/InterpActor_ForCinematic.uc | 0 .../Src/Engine/Classes/InterpCurveEdSetup.uc | 0 Development/Src/Engine/Classes/InterpData.uc | 0 .../Src/Engine/Classes/InterpFilter.uc | 0 .../Engine/Classes/InterpFilter_Classes.uc | 0 .../Src/Engine/Classes/InterpFilter_Custom.uc | 0 Development/Src/Engine/Classes/InterpGroup.uc | 0 .../Src/Engine/Classes/InterpGroupAI.uc | 0 .../Src/Engine/Classes/InterpGroupCamera.uc | 0 .../Src/Engine/Classes/InterpGroupDirector.uc | 0 .../Src/Engine/Classes/InterpGroupInst.uc | 0 .../Src/Engine/Classes/InterpGroupInstAI.uc | 0 .../Engine/Classes/InterpGroupInstCamera.uc | 0 .../Engine/Classes/InterpGroupInstDirector.uc | 0 Development/Src/Engine/Classes/InterpTrack.uc | 0 .../Engine/Classes/InterpTrackAnimControl.uc | 0 .../Engine/Classes/InterpTrackAudioMaster.uc | 0 .../Src/Engine/Classes/InterpTrackBoolProp.uc | 0 .../Engine/Classes/InterpTrackColorProp.uc | 0 .../Engine/Classes/InterpTrackColorScale.uc | 0 .../Src/Engine/Classes/InterpTrackDirector.uc | 0 .../Src/Engine/Classes/InterpTrackEvent.uc | 0 .../Src/Engine/Classes/InterpTrackFaceFX.uc | 0 .../Src/Engine/Classes/InterpTrackFade.uc | 0 .../Engine/Classes/InterpTrackFloatBase.uc | 0 .../Classes/InterpTrackFloatMaterialParam.uc | 0 .../Classes/InterpTrackFloatParticleParam.uc | 0 .../Engine/Classes/InterpTrackFloatProp.uc | 0 .../Engine/Classes/InterpTrackHeadTracking.uc | 0 .../Src/Engine/Classes/InterpTrackInst.uc | 0 .../Classes/InterpTrackInstAnimControl.uc | 0 .../Classes/InterpTrackInstAudioMaster.uc | 0 .../Engine/Classes/InterpTrackInstBoolProp.uc | 0 .../Classes/InterpTrackInstColorProp.uc | 0 .../Classes/InterpTrackInstColorScale.uc | 0 .../Engine/Classes/InterpTrackInstDirector.uc | 0 .../Engine/Classes/InterpTrackInstEvent.uc | 0 .../Engine/Classes/InterpTrackInstFaceFX.uc | 0 .../Src/Engine/Classes/InterpTrackInstFade.uc | 0 .../InterpTrackInstFloatMaterialParam.uc | 0 .../InterpTrackInstFloatParticleParam.uc | 0 .../Classes/InterpTrackInstFloatProp.uc | 0 .../Classes/InterpTrackInstHeadTracking.uc | 0 .../Classes/InterpTrackInstLinearColorProp.uc | 0 .../Classes/InterpTrackInstMorphWeight.uc | 0 .../Src/Engine/Classes/InterpTrackInstMove.uc | 0 .../Engine/Classes/InterpTrackInstNotify.uc | 0 .../Classes/InterpTrackInstParticleReplay.uc | 0 .../Engine/Classes/InterpTrackInstProperty.uc | 0 .../InterpTrackInstSkelControlScale.uc | 0 .../InterpTrackInstSkelControlStrength.uc | 0 .../Engine/Classes/InterpTrackInstSlomo.uc | 0 .../Engine/Classes/InterpTrackInstSound.uc | 0 .../Engine/Classes/InterpTrackInstToggle.uc | 0 .../InterpTrackInstVectorMaterialParam.uc | 0 .../Classes/InterpTrackInstVectorProp.uc | 0 .../Classes/InterpTrackInstVisibility.uc | 0 .../Classes/InterpTrackLinearColorBase.uc | 0 .../Classes/InterpTrackLinearColorProp.uc | 0 .../Engine/Classes/InterpTrackMorphWeight.uc | 0 .../Src/Engine/Classes/InterpTrackMove.uc | 0 .../Src/Engine/Classes/InterpTrackMoveAxis.uc | 0 .../Src/Engine/Classes/InterpTrackNotify.uc | 0 .../Classes/InterpTrackParticleReplay.uc | 0 .../Classes/InterpTrackSkelControlScale.uc | 0 .../Classes/InterpTrackSkelControlStrength.uc | 0 .../Src/Engine/Classes/InterpTrackSlomo.uc | 0 .../Src/Engine/Classes/InterpTrackSound.uc | 0 .../Src/Engine/Classes/InterpTrackToggle.uc | 0 .../Engine/Classes/InterpTrackVectorBase.uc | 0 .../Classes/InterpTrackVectorMaterialParam.uc | 0 .../Engine/Classes/InterpTrackVectorProp.uc | 0 .../Engine/Classes/InterpTrackVisibility.uc | 0 Development/Src/Engine/Classes/Inventory.uc | 0 .../Src/Engine/Classes/InventoryManager.uc | 0 Development/Src/Engine/Classes/JsonObject.uc | 0 Development/Src/Engine/Classes/KActor.uc | 0 .../Src/Engine/Classes/KActorFromStatic.uc | 0 .../Src/Engine/Classes/KActorSpawnable.uc | 0 Development/Src/Engine/Classes/KAsset.uc | 0 .../Src/Engine/Classes/KAssetSpawnable.uc | 0 Development/Src/Engine/Classes/KMeshProps.uc | 0 Development/Src/Engine/Classes/Keypoint.uc | 0 .../Src/Engine/Classes/KillZDamageType.uc | 0 .../Src/Engine/Classes/KismetBookMark.uc | 0 Development/Src/Engine/Classes/Ladder.uc | 0 .../Src/Engine/Classes/LadderReachSpec.uc | 0 .../Src/Engine/Classes/LadderVolume.uc | 0 Development/Src/Engine/Classes/Landscape.uc | 0 .../Src/Engine/Classes/LandscapeComponent.uc | 0 .../Classes/LandscapeGizmoActiveActor.uc | 0 .../Src/Engine/Classes/LandscapeGizmoActor.uc | 0 .../Classes/LandscapeGizmoRenderComponent.uc | 0 .../LandscapeHeightfieldCollisionComponent.uc | 0 .../Src/Engine/Classes/LandscapeInfo.uc | 0 .../Classes/LandscapeLayerInfoObject.uc | 0 .../LandscapeMaterialInstanceConstant.uc | 0 .../Src/Engine/Classes/LandscapeProxy.uc | 0 Development/Src/Engine/Classes/LensFlare.uc | 0 .../Src/Engine/Classes/LensFlareComponent.uc | 0 .../Src/Engine/Classes/LensFlareSource.uc | 0 .../Src/Engine/Classes/LevelGridVolume.uc | 0 .../LevelGridVolumeRenderingComponent.uc | 0 .../Src/Engine/Classes/LevelStreaming.uc | 2 +- .../Classes/LevelStreamingAlwaysLoaded.uc | 0 .../Engine/Classes/LevelStreamingDistance.uc | 0 .../Engine/Classes/LevelStreamingKismet.uc | 0 .../Classes/LevelStreamingPersistent.uc | 0 .../Engine/Classes/LevelStreamingVolume.uc | 0 Development/Src/Engine/Classes/LiftCenter.uc | 0 Development/Src/Engine/Classes/LiftExit.uc | 0 Development/Src/Engine/Classes/Light.uc | 0 .../Src/Engine/Classes/LightComponent.uc | 0 .../Classes/LightEnvironmentComponent.uc | 0 .../Src/Engine/Classes/LightFunction.uc | 0 .../Classes/LightmappedSurfaceCollection.uc | 0 .../LightmassCharacterIndirectDetailVolume.uc | 0 .../Classes/LightmassImportanceVolume.uc | 0 .../Engine/Classes/LightmassLevelSettings.uc | 0 .../LightmassPrimitiveSettingsObject.uc | 0 .../Src/Engine/Classes/LineBatchComponent.uc | 0 .../Src/Engine/Classes/LocalMessage.uc | 0 Development/Src/Engine/Classes/LocalPlayer.uc | 0 .../Src/Engine/Classes/MantleReachSpec.uc | 0 Development/Src/Engine/Classes/MapInfo.uc | 0 .../Classes/MassiveLODOverrideVolume.uc | 0 Development/Src/Engine/Classes/Material.uc | 0 .../Src/Engine/Classes/MaterialEffect.uc | 0 .../Src/Engine/Classes/MaterialExpression.uc | 0 .../Engine/Classes/MaterialExpressionAbs.uc | 0 .../MaterialExpressionActorWorldPosition.uc | 0 .../Engine/Classes/MaterialExpressionAdd.uc | 0 ...aterialExpressionAntialiasedTextureMask.uc | 0 .../Classes/MaterialExpressionAppendVector.uc | 0 .../Classes/MaterialExpressionBumpOffset.uc | 0 .../Classes/MaterialExpressionCameraVector.uc | 0 .../MaterialExpressionCameraWorldPosition.uc | 0 .../Engine/Classes/MaterialExpressionCeil.uc | 0 .../Engine/Classes/MaterialExpressionClamp.uc | 0 .../Classes/MaterialExpressionComment.uc | 0 .../MaterialExpressionComponentMask.uc | 0 .../Classes/MaterialExpressionConstant.uc | 0 .../MaterialExpressionConstant2Vector.uc | 0 .../MaterialExpressionConstant3Vector.uc | 0 .../MaterialExpressionConstant4Vector.uc | 0 .../MaterialExpressionConstantBiasScale.uc | 0 .../MaterialExpressionConstantClamp.uc | 0 .../Classes/MaterialExpressionCosine.uc | 0 .../Classes/MaterialExpressionCrossProduct.uc | 0 .../Classes/MaterialExpressionCustom.uc | 0 .../MaterialExpressionCustomTexture.uc | 0 .../MaterialExpressionDepthBiasBlend.uc | 0 .../MaterialExpressionDepthBiasedAlpha.uc | 0 .../MaterialExpressionDepthBiasedBlend.uc | 0 .../MaterialExpressionDepthOfFieldFunction.uc | 0 .../MaterialExpressionDeriveNormalZ.uc | 0 .../Classes/MaterialExpressionDesaturation.uc | 0 .../Classes/MaterialExpressionDestColor.uc | 0 .../Classes/MaterialExpressionDestDepth.uc | 0 .../Classes/MaterialExpressionDistance.uc | 0 .../Classes/MaterialExpressionDivide.uc | 0 .../Classes/MaterialExpressionDotProduct.uc | 0 .../MaterialExpressionDynamicParameter.uc | 0 .../MaterialExpressionFlipBookSample.uc | 0 .../Engine/Classes/MaterialExpressionFloor.uc | 0 .../Classes/MaterialExpressionFluidNormal.uc | 0 .../Engine/Classes/MaterialExpressionFmod.uc | 0 ...terialExpressionFoliageImpulseDirection.uc | 0 ...onFoliageNormalizedRotationAxisAndAngle.uc | 0 .../Classes/MaterialExpressionFontSample.uc | 0 .../MaterialExpressionFontSampleParameter.uc | 0 .../Engine/Classes/MaterialExpressionFrac.uc | 0 .../Classes/MaterialExpressionFresnel.uc | 0 .../MaterialExpressionFunctionInput.uc | 0 .../MaterialExpressionFunctionOutput.uc | 0 .../Engine/Classes/MaterialExpressionIf.uc | 0 .../MaterialExpressionLandscapeLayerBlend.uc | 0 .../MaterialExpressionLensFlareIntensity.uc | 0 .../MaterialExpressionLensFlareOcclusion.uc | 0 ...terialExpressionLensFlareRadialDistance.uc | 0 .../MaterialExpressionLensFlareRayDistance.uc | 0 ...terialExpressionLensFlareSourceDistance.uc | 0 .../Classes/MaterialExpressionLightVector.uc | 0 .../Classes/MaterialExpressionLightmapUVs.uc | 0 .../MaterialExpressionLightmassReplace.uc | 0 .../MaterialExpressionLinearInterpolate.uc | 0 .../MaterialExpressionMaterialFunctionCall.uc | 0 ...alExpressionMeshEmitterDynamicParameter.uc | 0 ...aterialExpressionMeshEmitterVertexColor.uc | 0 .../Classes/MaterialExpressionMeshSubUV.uc | 0 .../MaterialExpressionMeshSubUVBlend.uc | 0 .../Classes/MaterialExpressionMultiply.uc | 0 .../Classes/MaterialExpressionNormalize.uc | 0 .../MaterialExpressionObjectOrientation.uc | 0 .../Classes/MaterialExpressionObjectRadius.uc | 0 .../MaterialExpressionObjectWorldPosition.uc | 0 .../MaterialExpressionOcclusionPercentage.uc | 0 .../Classes/MaterialExpressionOneMinus.uc | 0 .../Classes/MaterialExpressionPanner.uc | 0 .../Classes/MaterialExpressionParameter.uc | 0 .../MaterialExpressionParticleMacroUV.uc | 0 .../MaterialExpressionParticleSubUV.uc | 0 .../MaterialExpressionPerInstanceRandom.uc | 0 .../Classes/MaterialExpressionPixelDepth.uc | 0 .../Engine/Classes/MaterialExpressionPower.uc | 0 .../MaterialExpressionQualitySwitch.uc | 0 .../MaterialExpressionReflectionVector.uc | 0 .../MaterialExpressionRotateAboutAxis.uc | 0 .../Classes/MaterialExpressionRotator.uc | 0 .../MaterialExpressionScalarParameter.uc | 0 .../Classes/MaterialExpressionSceneDepth.uc | 0 .../Classes/MaterialExpressionSceneTexture.uc | 0 .../MaterialExpressionScreenPosition.uc | 0 .../Classes/MaterialExpressionScreenSize.uc | 0 .../Engine/Classes/MaterialExpressionSine.uc | 0 .../Classes/MaterialExpressionSphereMask.uc | 0 .../Classes/MaterialExpressionSquareRoot.uc | 0 .../Classes/MaterialExpressionStaticBool.uc | 0 .../MaterialExpressionStaticBoolParameter.uc | 0 ...lExpressionStaticComponentMaskParameter.uc | 0 .../Classes/MaterialExpressionStaticSwitch.uc | 0 ...MaterialExpressionStaticSwitchParameter.uc | 0 .../Classes/MaterialExpressionSubtract.uc | 0 .../MaterialExpressionTerrainLayerCoords.uc | 0 .../MaterialExpressionTerrainLayerSwitch.uc | 0 .../MaterialExpressionTerrainLayerWeight.uc | 0 .../Classes/MaterialExpressionTexelSize.uc | 0 .../MaterialExpressionTextureCoordinate.uc | 0 .../MaterialExpressionTextureObject.uc | 0 ...aterialExpressionTextureObjectParameter.uc | 0 .../MaterialExpressionTextureSample.uc | 0 ...aterialExpressionTextureSampleParameter.uc | 0 ...erialExpressionTextureSampleParameter2D.uc | 0 ...ialExpressionTextureSampleParameterCube.uc | 0 ...xpressionTextureSampleParameterFlipbook.uc | 0 ...pressionTextureSampleParameterMeshSubUV.uc | 0 ...ionTextureSampleParameterMeshSubUVBlend.uc | 0 ...alExpressionTextureSampleParameterMovie.uc | 0 ...lExpressionTextureSampleParameterNormal.uc | 0 ...alExpressionTextureSampleParameterSubUV.uc | 0 .../Engine/Classes/MaterialExpressionTime.uc | 0 .../Classes/MaterialExpressionTransform.uc | 0 .../MaterialExpressionTransformPosition.uc | 0 .../Classes/MaterialExpressionTwoSidedSign.uc | 0 .../MaterialExpressionVectorParameter.uc | 0 .../Classes/MaterialExpressionVertexColor.uc | 0 ...MaterialExpressionWindDirectionAndSpeed.uc | 0 .../Classes/MaterialExpressionWorldNormal.uc | 0 .../MaterialExpressionWorldPosition.uc | 0 .../Src/Engine/Classes/MaterialFunction.uc | 0 .../Src/Engine/Classes/MaterialInstance.uc | 0 .../Engine/Classes/MaterialInstanceActor.uc | 0 .../Classes/MaterialInstanceConstant.uc | 0 .../Classes/MaterialInstanceTimeVarying.uc | 0 .../MaterialInstanceTimeVaryingActor.uc | 0 .../Src/Engine/Classes/MaterialInterface.uc | 0 .../Src/Engine/Classes/MatineeActor.uc | 0 Development/Src/Engine/Classes/MatineePawn.uc | 0 .../Src/Engine/Classes/MeshComponent.uc | 0 .../Engine/Classes/MeshComponentFactory.uc | 0 .../Engine/Classes/MicroTransactionBase.uc | 0 .../Src/Engine/Classes/ModelComponent.uc | 0 .../Src/Engine/Classes/MorphNodeBase.uc | 0 .../Src/Engine/Classes/MorphNodeMultiPose.uc | 0 .../Src/Engine/Classes/MorphNodePose.uc | 0 .../Src/Engine/Classes/MorphNodeWeight.uc | 0 .../Src/Engine/Classes/MorphNodeWeightBase.uc | 0 .../Classes/MorphNodeWeightByBoneAngle.uc | 0 .../Classes/MorphNodeWeightByBoneRotation.uc | 0 Development/Src/Engine/Classes/MorphTarget.uc | 0 .../Src/Engine/Classes/MorphTargetSet.uc | 0 .../Src/Engine/Classes/MorphWeightSequence.uc | 0 .../Src/Engine/Classes/MotionBlurEffect.uc | 0 .../Classes/MultiCueSplineAudioComponent.uc | 0 Development/Src/Engine/Classes/MultiFont.uc | 0 .../Engine/Classes/MultiProviderAnalytics.uc | 0 .../Classes/MusicTrackDataStructures.uc | 0 Development/Src/Engine/Classes/Mutator.uc | 0 .../Src/Engine/Classes/NavMeshBoundsVolume.uc | 0 .../NavMeshGoalFilter_MinPathDistance.uc | 0 .../NavMeshGoalFilter_NotNearOtherAI.uc | 0 .../NavMeshGoalFilter_OutOfViewFrom.uc | 0 ...MeshGoalFilter_OutsideOfDotProductWedge.uc | 0 .../NavMeshGoalFilter_PolyEncompassesAI.uc | 0 .../Src/Engine/Classes/NavMeshGoal_At.uc | 0 .../Classes/NavMeshGoal_ClosestActorInList.uc | 0 .../Src/Engine/Classes/NavMeshGoal_Filter.uc | 0 .../NavMeshGoal_GenericFilterContainer.uc | 0 .../Src/Engine/Classes/NavMeshGoal_Null.uc | 0 .../Classes/NavMeshGoal_PolyEncompassesAI.uc | 0 .../Src/Engine/Classes/NavMeshGoal_Random.uc | 0 .../NavMeshGoal_WithinDistanceEnvelope.uc | 0 .../Src/Engine/Classes/NavMeshObstacle.uc | 0 .../Engine/Classes/NavMeshPathConstraint.uc | 0 .../Classes/NavMeshPathGoalEvaluator.uc | 0 .../Engine/Classes/NavMeshPath_AlongLine.uc | 0 .../Classes/NavMeshPath_EnforceTwoWayEdges.uc | 0 .../NavMeshPath_MinDistBetweenSpecsOfType.uc | 0 .../Classes/NavMeshPath_SameCoverLink.uc | 0 .../Src/Engine/Classes/NavMeshPath_Toward.uc | 0 .../NavMeshPath_WithinDistanceEnvelope.uc | 0 .../NavMeshPath_WithinTraversalDist.uc | 0 .../Classes/NavMeshRenderingComponent.uc | 0 .../Src/Engine/Classes/NavigationHandle.uc | 0 .../Src/Engine/Classes/NavigationPoint.uc | 0 Development/Src/Engine/Classes/Note.uc | 0 .../Engine/Classes/NxCylindricalForceField.uc | 0 .../Classes/NxCylindricalForceFieldCapsule.uc | 0 .../Src/Engine/Classes/NxForceField.uc | 0 .../Engine/Classes/NxForceFieldComponent.uc | 0 .../NxForceFieldCylindricalComponent.uc | 0 .../Src/Engine/Classes/NxForceFieldGeneric.uc | 0 .../Classes/NxForceFieldGenericComponent.uc | 0 .../Src/Engine/Classes/NxForceFieldRadial.uc | 0 .../Classes/NxForceFieldRadialComponent.uc | 0 .../Engine/Classes/NxForceFieldSpawnable.uc | 0 .../Src/Engine/Classes/NxForceFieldTornado.uc | 0 .../Classes/NxForceFieldTornadoComponent.uc | 0 .../Src/Engine/Classes/NxGenericForceField.uc | 0 .../Engine/Classes/NxGenericForceFieldBox.uc | 0 .../Classes/NxGenericForceFieldBrush.uc | 0 .../Classes/NxGenericForceFieldCapsule.uc | 0 .../Classes/NxRadialCustomForceField.uc | 0 .../Src/Engine/Classes/NxRadialForceField.uc | 0 .../Classes/NxTornadoAngularForceField.uc | 0 .../NxTornadoAngularForceFieldCapsule.uc | 0 .../Src/Engine/Classes/NxTornadoForceField.uc | 0 .../Classes/NxTornadoForceFieldCapsule.uc | 0 .../Src/Engine/Classes/ObjectReferencer.uc | 0 .../Engine/Classes/OnlineAccountInterface.uc | 0 .../Src/Engine/Classes/OnlineAuthInterface.uc | 0 .../OnlineCommunityContentInterface.uc | 0 .../Engine/Classes/OnlineContentInterface.uc | 0 .../Engine/Classes/OnlineEventsInterface.uc | 0 .../Src/Engine/Classes/OnlineGameInterface.uc | 0 .../Src/Engine/Classes/OnlineGameSearch.uc | 0 .../Src/Engine/Classes/OnlineGameSettings.uc | 0 .../Engine/Classes/OnlineMatchmakingStats.uc | 0 .../Src/Engine/Classes/OnlineNewsInterface.uc | 0 .../Classes/OnlinePartyChatInterface.uc | 0 .../Engine/Classes/OnlinePlayerInterface.uc | 0 .../Engine/Classes/OnlinePlayerInterfaceEx.uc | 0 .../Src/Engine/Classes/OnlinePlayerStorage.uc | 0 .../Classes/OnlinePlaylistGameTypeProvider.uc | 0 .../Engine/Classes/OnlineProfileSettings.uc | 0 .../Engine/Classes/OnlineRecentPlayersList.uc | 0 .../Engine/Classes/OnlineSocialInterface.uc | 0 Development/Src/Engine/Classes/OnlineStats.uc | 0 .../Engine/Classes/OnlineStatsInterface.uc | 0 .../Src/Engine/Classes/OnlineStatsRead.uc | 0 .../Src/Engine/Classes/OnlineStatsWrite.uc | 0 .../Src/Engine/Classes/OnlineSubsystem.uc | 0 .../Classes/OnlineSuppliedUIInterface.uc | 0 .../Engine/Classes/OnlineSystemInterface.uc | 0 .../Classes/OnlineTitleFileCacheInterface.uc | 0 .../Classes/OnlineTitleFileInterface.uc | 0 .../Engine/Classes/OnlineVoiceInterface.uc | 0 .../Src/Engine/Classes/PBRuleNodeAlternate.uc | 0 .../Src/Engine/Classes/PBRuleNodeBase.uc | 0 .../Src/Engine/Classes/PBRuleNodeComment.uc | 0 .../Src/Engine/Classes/PBRuleNodeCorner.uc | 0 .../Src/Engine/Classes/PBRuleNodeCycle.uc | 0 .../Src/Engine/Classes/PBRuleNodeEdgeAngle.uc | 0 .../Src/Engine/Classes/PBRuleNodeEdgeMesh.uc | 0 .../Classes/PBRuleNodeExtractTopBottom.uc | 0 .../Src/Engine/Classes/PBRuleNodeLODQuad.uc | 0 .../Src/Engine/Classes/PBRuleNodeMesh.uc | 0 .../Src/Engine/Classes/PBRuleNodeOcclusion.uc | 0 .../Src/Engine/Classes/PBRuleNodeQuad.uc | 0 .../Src/Engine/Classes/PBRuleNodeRandom.uc | 0 .../Src/Engine/Classes/PBRuleNodeRepeat.uc | 0 .../Src/Engine/Classes/PBRuleNodeSize.uc | 0 .../Src/Engine/Classes/PBRuleNodeSplit.uc | 0 .../Engine/Classes/PBRuleNodeSubRuleset.uc | 0 .../Src/Engine/Classes/PBRuleNodeTransform.uc | 0 .../Src/Engine/Classes/PBRuleNodeVariation.uc | 0 .../Engine/Classes/PBRuleNodeWindowWall.uc | 0 .../Src/Engine/Classes/ParticleEmitter.uc | 0 .../Engine/Classes/ParticleEventManager.uc | 0 .../Src/Engine/Classes/ParticleLODLevel.uc | 0 .../ParticleLightEnvironmentComponent.uc | 0 .../Src/Engine/Classes/ParticleModule.uc | 0 .../Classes/ParticleModuleAcceleration.uc | 0 .../Classes/ParticleModuleAccelerationBase.uc | 0 .../ParticleModuleAccelerationOverLifetime.uc | 0 .../Classes/ParticleModuleAttractorBase.uc | 0 .../ParticleModuleAttractorBoneSocket.uc | 0 .../Classes/ParticleModuleAttractorLine.uc | 0 .../ParticleModuleAttractorParticle.uc | 0 .../Classes/ParticleModuleAttractorPoint.uc | 0 .../ParticleModuleAttractorSkelVertSurface.uc | 0 .../Engine/Classes/ParticleModuleBeamBase.uc | 0 .../Classes/ParticleModuleBeamModifier.uc | 0 .../Engine/Classes/ParticleModuleBeamNoise.uc | 0 .../Classes/ParticleModuleBeamSource.uc | 0 .../Classes/ParticleModuleBeamTarget.uc | 0 .../Classes/ParticleModuleCameraBase.uc | 0 .../Classes/ParticleModuleCameraOffset.uc | 0 .../Engine/Classes/ParticleModuleCollision.uc | 0 .../Classes/ParticleModuleCollisionActor.uc | 0 .../Classes/ParticleModuleCollisionBase.uc | 0 .../Src/Engine/Classes/ParticleModuleColor.uc | 0 .../Engine/Classes/ParticleModuleColorBase.uc | 0 .../Classes/ParticleModuleColorByParameter.uc | 0 .../Classes/ParticleModuleColorOverLife.uc | 0 .../ParticleModuleColorScaleOverDensity.uc | 0 .../ParticleModuleColorScaleOverLife.uc | 0 .../Classes/ParticleModuleColor_Seeded.uc | 0 .../Engine/Classes/ParticleModuleEventBase.uc | 0 .../Classes/ParticleModuleEventGenerator.uc | 0 .../ParticleModuleEventReceiverBase.uc | 0 ...articleModuleEventReceiverKillParticles.uc | 0 .../ParticleModuleEventReceiverSpawn.uc | 0 .../Classes/ParticleModuleEventSendToGame.uc | 0 .../Engine/Classes/ParticleModuleKillBase.uc | 0 .../Engine/Classes/ParticleModuleKillBox.uc | 0 .../Classes/ParticleModuleKillHeight.uc | 0 .../Engine/Classes/ParticleModuleLifetime.uc | 0 .../Classes/ParticleModuleLifetimeBase.uc | 0 .../Classes/ParticleModuleLifetime_Seeded.uc | 0 .../Engine/Classes/ParticleModuleLocation.uc | 0 .../Classes/ParticleModuleLocationBase.uc | 0 .../ParticleModuleLocationBoneSocket.uc | 0 .../Classes/ParticleModuleLocationDirect.uc | 0 .../Classes/ParticleModuleLocationEmitter.uc | 0 .../ParticleModuleLocationEmitterDirect.uc | 0 .../ParticleModuleLocationPrimitiveBase.uc | 0 ...ParticleModuleLocationPrimitiveCylinder.uc | 0 ...eModuleLocationPrimitiveCylinder_Seeded.uc | 0 .../ParticleModuleLocationPrimitiveSphere.uc | 0 ...cleModuleLocationPrimitiveSphere_Seeded.uc | 0 .../ParticleModuleLocationSkelVertSurface.uc | 0 ...ParticleModuleLocationStaticVertSurface.uc | 0 .../ParticleModuleLocationWorldOffset.uc | 0 ...articleModuleLocationWorldOffset_Seeded.uc | 0 .../Classes/ParticleModuleLocation_Seeded.uc | 0 .../Classes/ParticleModuleMaterialBase.uc | 0 .../ParticleModuleMaterialByParameter.uc | 0 .../Classes/ParticleModuleMeshMaterial.uc | 0 .../Classes/ParticleModuleMeshRotation.uc | 0 .../Classes/ParticleModuleMeshRotationRate.uc | 0 ...ticleModuleMeshRotationRateMultiplyLife.uc | 0 .../ParticleModuleMeshRotationRateOverLife.uc | 0 .../ParticleModuleMeshRotationRate_Seeded.uc | 0 .../ParticleModuleMeshRotation_Seeded.uc | 0 .../Src/Engine/Classes/ParticleModuleOrbit.uc | 0 .../Engine/Classes/ParticleModuleOrbitBase.uc | 0 .../ParticleModuleOrientationAxisLock.uc | 0 .../Classes/ParticleModuleOrientationBase.uc | 0 .../Classes/ParticleModuleParameterBase.uc | 0 .../Classes/ParticleModuleParameterDynamic.uc | 0 .../ParticleModuleParameterDynamic_Seeded.uc | 0 .../Classes/ParticleModulePhysicsVolumes.uc | 0 .../Engine/Classes/ParticleModuleRequired.uc | 0 .../Engine/Classes/ParticleModuleRotation.uc | 0 .../Classes/ParticleModuleRotationBase.uc | 0 .../ParticleModuleRotationOverLifetime.uc | 0 .../Classes/ParticleModuleRotationRate.uc | 0 .../Classes/ParticleModuleRotationRateBase.uc | 0 .../ParticleModuleRotationRateMultiplyLife.uc | 0 .../ParticleModuleRotationRate_Seeded.uc | 0 .../Classes/ParticleModuleRotation_Seeded.uc | 0 .../Src/Engine/Classes/ParticleModuleSize.uc | 0 .../Engine/Classes/ParticleModuleSizeBase.uc | 0 .../Classes/ParticleModuleSizeMultiplyLife.uc | 0 .../ParticleModuleSizeMultiplyVelocity.uc | 0 .../Engine/Classes/ParticleModuleSizeScale.uc | 0 .../Classes/ParticleModuleSizeScaleByTime.uc | 0 .../ParticleModuleSizeScaleOverDensity.uc | 0 .../Classes/ParticleModuleSize_Seeded.uc | 0 .../Classes/ParticleModuleSourceMovement.uc | 0 .../Src/Engine/Classes/ParticleModuleSpawn.uc | 0 .../Engine/Classes/ParticleModuleSpawnBase.uc | 0 .../Classes/ParticleModuleSpawnPerUnit.uc | 0 .../Classes/ParticleModuleStoreSpawnTime.uc | 0 .../ParticleModuleStoreSpawnTimeBase.uc | 0 .../Src/Engine/Classes/ParticleModuleSubUV.uc | 0 .../Engine/Classes/ParticleModuleSubUVBase.uc | 0 .../Classes/ParticleModuleSubUVDirect.uc | 0 .../Classes/ParticleModuleSubUVMovie.uc | 0 .../Classes/ParticleModuleSubUVSelect.uc | 0 .../Engine/Classes/ParticleModuleTrailBase.uc | 0 .../Classes/ParticleModuleTrailSource.uc | 0 .../Classes/ParticleModuleTrailSpawn.uc | 0 .../Classes/ParticleModuleTrailTaper.uc | 0 .../ParticleModuleTypeDataAnimTrail.uc | 0 .../Classes/ParticleModuleTypeDataApex.uc | 0 .../Classes/ParticleModuleTypeDataBase.uc | 0 .../Classes/ParticleModuleTypeDataBeam.uc | 0 .../Classes/ParticleModuleTypeDataBeam2.uc | 0 .../Classes/ParticleModuleTypeDataMesh.uc | 0 .../ParticleModuleTypeDataMeshPhysX.uc | 0 .../Classes/ParticleModuleTypeDataPhysX.uc | 0 .../Classes/ParticleModuleTypeDataRibbon.uc | 0 .../Classes/ParticleModuleTypeDataTrail.uc | 0 .../Classes/ParticleModuleTypeDataTrail2.uc | 0 .../Engine/Classes/ParticleModuleUberBase.uc | 0 .../Classes/ParticleModuleUberLTISIVCL.uc | 0 .../Classes/ParticleModuleUberLTISIVCLIL.uc | 0 .../ParticleModuleUberLTISIVCLILIRSSBLIRR.uc | 0 .../Classes/ParticleModuleUberRainDrops.uc | 0 .../Classes/ParticleModuleUberRainImpacts.uc | 0 .../Classes/ParticleModuleUberRainSplashA.uc | 0 .../Classes/ParticleModuleUberRainSplashB.uc | 0 .../Engine/Classes/ParticleModuleVelocity.uc | 0 .../Classes/ParticleModuleVelocityBase.uc | 0 .../Classes/ParticleModuleVelocityCone.uc | 0 .../ParticleModuleVelocityInheritParent.uc | 0 .../ParticleModuleVelocityOverLifetime.uc | 0 .../Classes/ParticleModuleVelocity_Seeded.uc | 0 .../Classes/ParticleModuleWorldAttractor.uc | 0 .../Classes/ParticleModuleWorldForcesBase.uc | 0 .../Engine/Classes/ParticleSpriteEmitter.uc | 0 .../Src/Engine/Classes/ParticleSystem.uc | 0 .../Engine/Classes/ParticleSystemComponent.uc | 0 .../Engine/Classes/ParticleSystemReplay.uc | 0 .../Src/Engine/Classes/PathBlockingVolume.uc | 0 .../Src/Engine/Classes/PathConstraint.uc | 0 .../Src/Engine/Classes/PathGoalEvaluator.uc | 0 Development/Src/Engine/Classes/PathNode.uc | 0 .../Src/Engine/Classes/PathNode_Dynamic.uc | 0 .../Engine/Classes/PathRenderingComponent.uc | 0 .../Src/Engine/Classes/PathTargetPoint.uc | 0 .../Src/Engine/Classes/Path_AlongLine.uc | 0 .../Classes/Path_AvoidInEscapableNodes.uc | 0 .../Classes/Path_MinDistBetweenSpecsOfType.uc | 0 .../Src/Engine/Classes/Path_TowardGoal.uc | 0 .../Src/Engine/Classes/Path_TowardPoint.uc | 0 .../Classes/Path_WithinDistanceEnvelope.uc | 0 .../Classes/Path_WithinTraversalDist.uc | 0 Development/Src/Engine/Classes/Pawn.uc | 0 .../Src/Engine/Classes/PhysXParticleSystem.uc | 0 .../Src/Engine/Classes/PhysicalMaterial.uc | 0 .../Classes/PhysicalMaterialPropertyBase.uc | 0 .../Src/Engine/Classes/PhysicsAsset.uc | 0 .../Engine/Classes/PhysicsAssetInstance.uc | 0 .../Classes/PhysicsLODVerticalEmitter.uc | 0 .../Src/Engine/Classes/PhysicsVolume.uc | 0 .../Src/Engine/Classes/PickupFactory.uc | 0 .../Src/Engine/Classes/PixelFormatEnum.uci | 0 .../Engine/Classes/PlatformInterfaceBase.uc | 0 .../Classes/PlatformInterfaceWebResponse.uc | 0 Development/Src/Engine/Classes/Player.uc | 0 .../Src/Engine/Classes/PlayerController.uc | 0 Development/Src/Engine/Classes/PlayerInput.uc | 0 .../Classes/PlayerManagerInteraction.uc | 0 .../Engine/Classes/PlayerReplicationInfo.uc | 0 Development/Src/Engine/Classes/PlayerStart.uc | 0 Development/Src/Engine/Classes/PointLight.uc | 0 .../Src/Engine/Classes/PointLightComponent.uc | 0 .../Src/Engine/Classes/PointLightMovable.uc | 0 .../Engine/Classes/PointLightToggleable.uc | 0 .../Src/Engine/Classes/PortalMarker.uc | 0 .../Src/Engine/Classes/PortalTeleporter.uc | 0 .../Src/Engine/Classes/PortalVolume.uc | 0 .../Src/Engine/Classes/PostProcessChain.uc | 0 .../Src/Engine/Classes/PostProcessEffect.uc | 0 .../Src/Engine/Classes/PostProcessVolume.uc | 0 .../Engine/Classes/PotentialClimbWatcher.uc | 0 .../PrecomputedVisibilityOverrideVolume.uc | 0 .../Classes/PrecomputedVisibilityVolume.uc | 0 Development/Src/Engine/Classes/Prefab.uc | 0 .../Src/Engine/Classes/PrefabInstance.uc | 0 .../Src/Engine/Classes/PrefabSequence.uc | 0 .../Engine/Classes/PrefabSequenceContainer.uc | 0 .../Src/Engine/Classes/PrimitiveComponent.uc | 0 .../Classes/PrimitiveComponentFactory.uc | 0 .../Src/Engine/Classes/ProcBuilding.uc | 0 .../Src/Engine/Classes/ProcBuildingRuleset.uc | 0 .../Classes/ProcBuilding_SimpleLODActor.uc | 0 Development/Src/Engine/Classes/Projectile.uc | 0 .../Src/Engine/Classes/ProscribedReachSpec.uc | 0 Development/Src/Engine/Classes/Pylon.uc | 0 Development/Src/Engine/Classes/PylonSeed.uc | 0 .../Src/Engine/Classes/RB_BSJointActor.uc | 0 .../Src/Engine/Classes/RB_BSJointSetup.uc | 0 .../Src/Engine/Classes/RB_BodyInstance.uc | 0 .../Src/Engine/Classes/RB_BodySetup.uc | 0 .../Src/Engine/Classes/RB_ConstraintActor.uc | 0 .../Classes/RB_ConstraintActorSpawnable.uc | 0 .../Classes/RB_ConstraintDrawComponent.uc | 0 .../Engine/Classes/RB_ConstraintInstance.uc | 0 .../Src/Engine/Classes/RB_ConstraintSetup.uc | 0 .../Classes/RB_CylindricalForceActor.uc | 0 .../Engine/Classes/RB_DistanceJointSetup.uc | 0 .../Classes/RB_ForceFieldExcludeVolume.uc | 0 Development/Src/Engine/Classes/RB_Handle.uc | 0 .../Src/Engine/Classes/RB_HingeActor.uc | 0 .../Src/Engine/Classes/RB_HingeSetup.uc | 0 .../Src/Engine/Classes/RB_LineImpulseActor.uc | 0 .../Src/Engine/Classes/RB_PrismaticActor.uc | 0 .../Src/Engine/Classes/RB_PrismaticSetup.uc | 0 .../Src/Engine/Classes/RB_PulleyJointActor.uc | 0 .../Src/Engine/Classes/RB_PulleyJointSetup.uc | 0 .../Src/Engine/Classes/RB_RadialForceActor.uc | 0 .../Engine/Classes/RB_RadialImpulseActor.uc | 0 .../Classes/RB_RadialImpulseComponent.uc | 0 .../Src/Engine/Classes/RB_SkelJointSetup.uc | 0 Development/Src/Engine/Classes/RB_Spring.uc | 0 .../Src/Engine/Classes/RB_StayUprightSetup.uc | 0 Development/Src/Engine/Classes/RB_Thruster.uc | 0 .../Src/Engine/Classes/RadialBlurActor.uc | 0 .../Src/Engine/Classes/RadialBlurComponent.uc | 0 Development/Src/Engine/Classes/ReachSpec.uc | 0 .../Src/Engine/Classes/ReplicationInfo.uc | 0 .../Src/Engine/Classes/ReverbVolume.uc | 0 .../Engine/Classes/ReverbVolumeToggleable.uc | 0 .../Src/Engine/Classes/RigidBodyBase.uc | 0 Development/Src/Engine/Classes/Route.uc | 0 .../Engine/Classes/RouteRenderingComponent.uc | 0 Development/Src/Engine/Classes/SVehicle.uc | 0 .../Src/Engine/Classes/SVehicleSimBase.uc | 0 .../Src/Engine/Classes/SVehicleSimCar.uc | 0 .../Src/Engine/Classes/SVehicleSimTank.uc | 0 .../Src/Engine/Classes/SVehicleWheel.uc | 0 .../Src/Engine/Classes/SaveGameSummary.uc | 0 Development/Src/Engine/Classes/SavedMove.uc | 0 Development/Src/Engine/Classes/Scene.uc | 0 .../Src/Engine/Classes/SceneCapture2DActor.uc | 0 .../Engine/Classes/SceneCapture2DComponent.uc | 0 .../Classes/SceneCapture2DHitMaskComponent.uc | 0 .../Src/Engine/Classes/SceneCaptureActor.uc | 0 .../Engine/Classes/SceneCaptureComponent.uc | 0 .../Classes/SceneCaptureCubeMapActor.uc | 0 .../Classes/SceneCaptureCubeMapComponent.uc | 0 .../Engine/Classes/SceneCapturePortalActor.uc | 0 .../Classes/SceneCapturePortalComponent.uc | 0 .../Classes/SceneCaptureReflectActor.uc | 0 .../Classes/SceneCaptureReflectComponent.uc | 0 Development/Src/Engine/Classes/Scout.uc | 0 .../Engine/Classes/ScriptViewportClient.uc | 0 .../Src/Engine/Classes/ScriptedTexture.uc | 0 .../Classes/SeqAct_AIAbortMoveToActor.uc | 0 .../Engine/Classes/SeqAct_AIMoveToActor.uc | 0 .../Engine/Classes/SeqAct_AccessObjectList.uc | 0 .../Classes/SeqAct_ActivateRemoteEvent.uc | 0 .../Src/Engine/Classes/SeqAct_ActorFactory.uc | 0 .../Engine/Classes/SeqAct_ActorFactoryEx.uc | 0 .../Src/Engine/Classes/SeqAct_AddFloat.uc | 0 .../Src/Engine/Classes/SeqAct_AddInt.uc | 0 .../Classes/SeqAct_AddRemoveFaceFXAnimSet.uc | 0 .../Src/Engine/Classes/SeqAct_AndGate.uc | 0 .../Engine/Classes/SeqAct_ApplySoundNode.uc | 0 .../Engine/Classes/SeqAct_AssignController.uc | 0 .../Engine/Classes/SeqAct_AttachToActor.uc | 0 .../Engine/Classes/SeqAct_AttachToEvent.uc | 0 .../Src/Engine/Classes/SeqAct_CameraFade.uc | 0 .../Src/Engine/Classes/SeqAct_CameraLookAt.uc | 0 .../Src/Engine/Classes/SeqAct_CameraShake.uc | 0 .../Src/Engine/Classes/SeqAct_CastToFloat.uc | 0 .../Src/Engine/Classes/SeqAct_CastToInt.uc | 0 .../Engine/Classes/SeqAct_ChangeCollision.uc | 0 .../Engine/Classes/SeqAct_CommitMapChange.uc | 0 .../Engine/Classes/SeqAct_ConsoleCommand.uc | 0 .../Classes/SeqAct_ControlMovieTexture.uc | 0 .../Engine/Classes/SeqAct_ConvertToString.uc | 0 .../Src/Engine/Classes/SeqAct_Delay.uc | 0 .../Src/Engine/Classes/SeqAct_DelaySwitch.uc | 0 .../Src/Engine/Classes/SeqAct_Destroy.uc | 0 .../Src/Engine/Classes/SeqAct_DivideFloat.uc | 0 .../Src/Engine/Classes/SeqAct_DivideInt.uc | 0 .../Src/Engine/Classes/SeqAct_DrawText.uc | 0 .../Src/Engine/Classes/SeqAct_FeatureTest.uc | 0 .../Engine/Classes/SeqAct_FinishSequence.uc | 0 .../Classes/SeqAct_FlyThroughHasEnded.uc | 0 .../Engine/Classes/SeqAct_ForceFeedback.uc | 0 .../Classes/SeqAct_ForceGarbageCollection.uc | 0 Development/Src/Engine/Classes/SeqAct_Gate.uc | 0 .../Src/Engine/Classes/SeqAct_GetDistance.uc | 0 .../Classes/SeqAct_GetLocationAndRotation.uc | 0 .../Src/Engine/Classes/SeqAct_GetProperty.uc | 0 .../Classes/SeqAct_GetVectorComponents.uc | 0 .../Src/Engine/Classes/SeqAct_GetVelocity.uc | 0 .../Engine/Classes/SeqAct_GiveInventory.uc | 0 .../Classes/SeqAct_HeadTrackingControl.uc | 0 .../Src/Engine/Classes/SeqAct_Interp.uc | 0 .../Engine/Classes/SeqAct_IsInObjectList.uc | 0 .../Src/Engine/Classes/SeqAct_Latent.uc | 0 .../Engine/Classes/SeqAct_LevelStreaming.uc | 0 .../Classes/SeqAct_LevelStreamingBase.uc | 0 .../Engine/Classes/SeqAct_LevelVisibility.uc | 0 Development/Src/Engine/Classes/SeqAct_Log.uc | 0 .../Engine/Classes/SeqAct_MITV_Activate.uc | 0 .../Src/Engine/Classes/SeqAct_ModifyCover.uc | 0 .../Src/Engine/Classes/SeqAct_ModifyHealth.uc | 0 .../Engine/Classes/SeqAct_ModifyObjectList.uc | 0 .../Classes/SeqAct_MultiLevelStreaming.uc | 0 .../Engine/Classes/SeqAct_MultiplyFloat.uc | 0 .../Src/Engine/Classes/SeqAct_MultiplyInt.uc | 0 .../Classes/SeqAct_ParticleEventGenerator.uc | 0 .../Engine/Classes/SeqAct_PlayCameraAnim.uc | 0 .../Engine/Classes/SeqAct_PlayFaceFXAnim.uc | 0 .../Engine/Classes/SeqAct_PlayMusicTrack.uc | 0 .../Src/Engine/Classes/SeqAct_PlaySound.uc | 0 .../Src/Engine/Classes/SeqAct_Possess.uc | 0 .../Engine/Classes/SeqAct_PrepareMapChange.uc | 0 .../Classes/SeqAct_ProjectileFactory.uc | 0 .../Src/Engine/Classes/SeqAct_RandomSwitch.uc | 0 .../Src/Engine/Classes/SeqAct_RangeSwitch.uc | 0 .../Classes/SeqAct_SetActiveAnimChild.uc | 0 .../Classes/SeqAct_SetApexClothingParam.uc | 0 .../Classes/SeqAct_SetBlockRigidBody.uc | 0 .../Src/Engine/Classes/SeqAct_SetBool.uc | 0 .../Engine/Classes/SeqAct_SetCameraTarget.uc | 0 .../Src/Engine/Classes/SeqAct_SetDOFParams.uc | 0 .../Classes/SeqAct_SetDamageInstigator.uc | 0 .../Src/Engine/Classes/SeqAct_SetFloat.uc | 0 .../Src/Engine/Classes/SeqAct_SetInt.uc | 0 .../Src/Engine/Classes/SeqAct_SetLocation.uc | 0 .../Classes/SeqAct_SetMatInstScalarParam.uc | 0 .../Classes/SeqAct_SetMatInstTexParam.uc | 0 .../Classes/SeqAct_SetMatInstVectorParam.uc | 0 .../Src/Engine/Classes/SeqAct_SetMaterial.uc | 0 .../Src/Engine/Classes/SeqAct_SetMesh.uc | 0 .../Classes/SeqAct_SetMotionBlurParams.uc | 0 .../Src/Engine/Classes/SeqAct_SetObject.uc | 0 .../Classes/SeqAct_SetParticleSysParam.uc | 0 .../Src/Engine/Classes/SeqAct_SetPhysics.uc | 0 .../SeqAct_SetRigidBodyIgnoreVehicles.uc | 0 .../Classes/SeqAct_SetSequenceVariable.uc | 0 .../Classes/SeqAct_SetSkelControlTarget.uc | 0 .../Src/Engine/Classes/SeqAct_SetSoundMode.uc | 0 .../Src/Engine/Classes/SeqAct_SetString.uc | 0 .../Src/Engine/Classes/SeqAct_SetVector.uc | 0 .../Classes/SeqAct_SetVectorComponents.uc | 0 .../Src/Engine/Classes/SeqAct_SetVelocity.uc | 0 .../Classes/SeqAct_SetWorldAttractorParam.uc | 0 .../Engine/Classes/SeqAct_StreamInTextures.uc | 0 .../Engine/Classes/SeqAct_SubtractFloat.uc | 0 .../Src/Engine/Classes/SeqAct_SubtractInt.uc | 0 .../Src/Engine/Classes/SeqAct_Switch.uc | 0 .../Src/Engine/Classes/SeqAct_Teleport.uc | 0 .../Src/Engine/Classes/SeqAct_Timer.uc | 0 .../Src/Engine/Classes/SeqAct_Toggle.uc | 0 .../SeqAct_ToggleAffectedByHitEffects.uc | 0 .../Classes/SeqAct_ToggleCinematicMode.uc | 0 .../Classes/SeqAct_ToggleConstraintDrive.uc | 0 .../Engine/Classes/SeqAct_ToggleGodMode.uc | 0 .../Src/Engine/Classes/SeqAct_ToggleHUD.uc | 0 .../Src/Engine/Classes/SeqAct_ToggleHidden.uc | 0 .../Src/Engine/Classes/SeqAct_ToggleInput.uc | 0 .../Src/Engine/Classes/SeqAct_Trace.uc | 0 .../Classes/SeqAct_UpdatePhysBonesFromAnim.uc | 0 .../Classes/SeqAct_WaitForLevelsVisible.uc | 0 .../Src/Engine/Classes/SeqCond_CompareBool.uc | 0 .../Engine/Classes/SeqCond_CompareFloat.uc | 0 .../Src/Engine/Classes/SeqCond_CompareInt.uc | 0 .../Engine/Classes/SeqCond_CompareObject.uc | 0 .../Engine/Classes/SeqCond_GetServerType.uc | 0 .../Src/Engine/Classes/SeqCond_Increment.uc | 0 .../Engine/Classes/SeqCond_IncrementFloat.uc | 0 .../Src/Engine/Classes/SeqCond_IsAlive.uc | 0 .../Engine/Classes/SeqCond_IsBenchmarking.uc | 0 .../Src/Engine/Classes/SeqCond_IsConsole.uc | 0 .../Src/Engine/Classes/SeqCond_IsInCombat.uc | 0 .../Src/Engine/Classes/SeqCond_IsLoggedIn.uc | 0 .../Src/Engine/Classes/SeqCond_IsPIE.uc | 0 .../Src/Engine/Classes/SeqCond_IsSameTeam.uc | 0 .../Engine/Classes/SeqCond_MatureLanguage.uc | 0 .../Src/Engine/Classes/SeqCond_ShowGore.uc | 0 .../Src/Engine/Classes/SeqCond_SwitchBase.uc | 0 .../Src/Engine/Classes/SeqCond_SwitchClass.uc | 0 .../Engine/Classes/SeqCond_SwitchObject.uc | 0 .../Engine/Classes/SeqCond_SwitchPlatform.uc | 0 .../Classes/SeqEvent_AIReachedRouteActor.uc | 0 .../Src/Engine/Classes/SeqEvent_AISeeEnemy.uc | 0 .../Engine/Classes/SeqEvent_AnalogInput.uc | 0 .../Src/Engine/Classes/SeqEvent_AnimNotify.uc | 0 .../Src/Engine/Classes/SeqEvent_Console.uc | 0 .../Classes/SeqEvent_ConstraintBroken.uc | 0 .../Src/Engine/Classes/SeqEvent_Death.uc | 0 .../Src/Engine/Classes/SeqEvent_Destroyed.uc | 0 .../Engine/Classes/SeqEvent_GetInventory.uc | 0 .../Src/Engine/Classes/SeqEvent_HitWall.uc | 0 .../Src/Engine/Classes/SeqEvent_Input.uc | 0 .../Src/Engine/Classes/SeqEvent_LOS.uc | 0 .../Engine/Classes/SeqEvent_LevelBeginning.uc | 0 .../Engine/Classes/SeqEvent_LevelLoaded.uc | 0 .../Engine/Classes/SeqEvent_LevelStartup.uc | 0 .../Engine/Classes/SeqEvent_MobileTouch.uc | 0 .../Src/Engine/Classes/SeqEvent_Mover.uc | 0 .../Engine/Classes/SeqEvent_ParticleEvent.uc | 0 .../Classes/SeqEvent_PickupStatusChange.uc | 0 .../Engine/Classes/SeqEvent_PlayerSpawned.uc | 0 .../Classes/SeqEvent_ProjectileLanded.uc | 0 .../Engine/Classes/SeqEvent_RemoteEvent.uc | 0 .../Classes/SeqEvent_RigidBodyCollision.uc | 0 .../Src/Engine/Classes/SeqEvent_SeeDeath.uc | 0 .../Classes/SeqEvent_SequenceActivated.uc | 0 .../Src/Engine/Classes/SeqEvent_TakeDamage.uc | 0 .../Src/Engine/Classes/SeqEvent_Touch.uc | 0 .../Src/Engine/Classes/SeqEvent_TouchInput.uc | 0 .../Src/Engine/Classes/SeqEvent_Used.uc | 0 Development/Src/Engine/Classes/SeqVar_Bool.uc | 0 Development/Src/Engine/Classes/SeqVar_Byte.uc | 0 .../Src/Engine/Classes/SeqVar_Character.uc | 0 .../Src/Engine/Classes/SeqVar_External.uc | 0 .../Src/Engine/Classes/SeqVar_Float.uc | 0 .../Src/Engine/Classes/SeqVar_Group.uc | 0 Development/Src/Engine/Classes/SeqVar_Int.uc | 0 Development/Src/Engine/Classes/SeqVar_Name.uc | 0 .../Src/Engine/Classes/SeqVar_Named.uc | 0 .../Src/Engine/Classes/SeqVar_Object.uc | 0 .../Src/Engine/Classes/SeqVar_ObjectList.uc | 0 .../Src/Engine/Classes/SeqVar_ObjectVolume.uc | 0 .../Src/Engine/Classes/SeqVar_Player.uc | 0 .../Src/Engine/Classes/SeqVar_RandomFloat.uc | 0 .../Src/Engine/Classes/SeqVar_RandomInt.uc | 0 .../Src/Engine/Classes/SeqVar_String.uc | 0 .../Src/Engine/Classes/SeqVar_Union.uc | 0 .../Src/Engine/Classes/SeqVar_Vector.uc | 0 Development/Src/Engine/Classes/Sequence.uc | 0 .../Src/Engine/Classes/SequenceAction.uc | 0 .../Src/Engine/Classes/SequenceCondition.uc | 0 .../Src/Engine/Classes/SequenceEvent.uc | 0 .../Src/Engine/Classes/SequenceFrame.uc | 0 .../Engine/Classes/SequenceFrameWrapped.uc | 0 .../Src/Engine/Classes/SequenceObject.uc | 0 Development/Src/Engine/Classes/SequenceOp.uc | 0 .../Src/Engine/Classes/SequenceVariable.uc | 0 Development/Src/Engine/Classes/Settings.uc | 0 Development/Src/Engine/Classes/ShadowMap2D.uc | 0 .../Src/Engine/Classes/ShadowMapTexture2D.uc | 0 .../Classes/SharedCloudFileInterface.uc | 0 .../Classes/SimpleSplineAudioComponent.uc | 0 .../SimpleSplineNonLoopAudioComponent.uc | 0 .../Src/Engine/Classes/SkelControlBase.uc | 0 .../Classes/SkelControlFootPlacement.uc | 0 .../Engine/Classes/SkelControlHandlebars.uc | 0 .../Src/Engine/Classes/SkelControlLimb.uc | 0 .../Src/Engine/Classes/SkelControlLookAt.uc | 0 .../Engine/Classes/SkelControlSingleBone.uc | 0 .../Src/Engine/Classes/SkelControlSpline.uc | 0 .../Src/Engine/Classes/SkelControlTrail.uc | 0 .../Src/Engine/Classes/SkelControlWheel.uc | 0 .../Src/Engine/Classes/SkelControl_CCD_IK.uc | 0 .../Engine/Classes/SkelControl_Multiply.uc | 0 .../Engine/Classes/SkelControl_TwistBone.uc | 0 .../Src/Engine/Classes/SkeletalMesh.uc | 0 .../Src/Engine/Classes/SkeletalMeshActor.uc | 0 .../SkeletalMeshActorBasedOnExtremeContent.uc | 0 .../Engine/Classes/SkeletalMeshActorMAT.uc | 0 .../Classes/SkeletalMeshActorMATSpawnable.uc | 0 .../Classes/SkeletalMeshActorMATWalkable.uc | 0 .../Classes/SkeletalMeshActorSpawnable.uc | 0 .../Classes/SkeletalMeshCinematicActor.uc | 0 .../Engine/Classes/SkeletalMeshComponent.uc | 0 .../Src/Engine/Classes/SkeletalMeshSocket.uc | 0 Development/Src/Engine/Classes/SkyLight.uc | 0 .../Src/Engine/Classes/SkyLightComponent.uc | 0 .../Src/Engine/Classes/SkyLightToggleable.uc | 0 .../Src/Engine/Classes/SlotToSlotReachSpec.uc | 0 Development/Src/Engine/Classes/SoundClass.uc | 0 Development/Src/Engine/Classes/SoundCue.uc | 0 Development/Src/Engine/Classes/SoundMode.uc | 0 Development/Src/Engine/Classes/SoundNode.uc | 0 .../Src/Engine/Classes/SoundNodeAmbient.uc | 0 .../Engine/Classes/SoundNodeAmbientNonLoop.uc | 0 .../Classes/SoundNodeAmbientNonLoopToggle.uc | 0 .../Engine/Classes/SoundNodeAttenuation.uc | 0 .../Classes/SoundNodeAttenuationAndGain.uc | 0 .../Engine/Classes/SoundNodeConcatenator.uc | 0 .../Classes/SoundNodeConcatenatorRadio.uc | 0 .../Src/Engine/Classes/SoundNodeDelay.uc | 0 .../Classes/SoundNodeDistanceCrossFade.uc | 0 .../Src/Engine/Classes/SoundNodeDoppler.uc | 0 .../Src/Engine/Classes/SoundNodeEnveloper.uc | 0 .../Src/Engine/Classes/SoundNodeLooping.uc | 0 .../Src/Engine/Classes/SoundNodeMature.uc | 0 .../Src/Engine/Classes/SoundNodeMixer.uc | 0 .../Src/Engine/Classes/SoundNodeModulator.uc | 0 .../Classes/SoundNodeModulatorContinuous.uc | 0 .../Src/Engine/Classes/SoundNodeOscillator.uc | 0 .../Src/Engine/Classes/SoundNodeRandom.uc | 0 .../Src/Engine/Classes/SoundNodeWave.uc | 0 .../Src/Engine/Classes/SoundNodeWaveParam.uc | 0 .../Engine/Classes/SoundNodeWaveStreaming.uc | 0 .../Src/Engine/Classes/SpeechRecognition.uc | 0 Development/Src/Engine/Classes/SpeedTree.uc | 0 .../Src/Engine/Classes/SpeedTreeActor.uc | 0 .../Engine/Classes/SpeedTreeActorFactory.uc | 0 .../Src/Engine/Classes/SpeedTreeComponent.uc | 0 .../Classes/SpeedTreeComponentFactory.uc | 0 .../SphericalHarmonicLightComponent.uc | 0 Development/Src/Engine/Classes/SplineActor.uc | 0 .../Engine/Classes/SplineAudioComponent.uc | 0 .../Src/Engine/Classes/SplineComponent.uc | 0 .../Classes/SplineComponentSimplified.uc | 0 .../Src/Engine/Classes/SplineLoftActor.uc | 0 .../Engine/Classes/SplineLoftActorMovable.uc | 0 .../Src/Engine/Classes/SplineMeshComponent.uc | 0 Development/Src/Engine/Classes/SpotLight.uc | 0 .../Src/Engine/Classes/SpotLightComponent.uc | 0 .../Src/Engine/Classes/SpotLightMovable.uc | 0 .../Src/Engine/Classes/SpotLightToggleable.uc | 0 .../Src/Engine/Classes/SpriteComponent.uc | 0 .../Classes/StaticLightCollectionActor.uc | 0 .../Src/Engine/Classes/StaticMeshActor.uc | 0 .../Src/Engine/Classes/StaticMeshActorBase.uc | 0 .../StaticMeshActorBasedOnExtremeContent.uc | 0 .../Classes/StaticMeshCollectionActor.uc | 0 .../Src/Engine/Classes/StaticMeshComponent.uc | 0 .../Classes/StaticMeshComponentFactory.uc | 0 Development/Src/Engine/Classes/StringsTag.uc | 0 Development/Src/Engine/Classes/Surface.uc | 0 .../Src/Engine/Classes/SwatTurnReachSpec.uc | 0 Development/Src/Engine/Classes/TargetPoint.uc | 0 Development/Src/Engine/Classes/TeamInfo.uc | 0 .../Src/Engine/Classes/TeleportReachSpec.uc | 0 Development/Src/Engine/Classes/Teleporter.uc | 0 Development/Src/Engine/Classes/Terrain.uc | 0 .../Src/Engine/Classes/TerrainComponent.uc | 0 .../Src/Engine/Classes/TerrainLayerSetup.uc | 0 .../Src/Engine/Classes/TerrainMaterial.uc | 0 .../Engine/Classes/TerrainWeightMapTexture.uc | 0 .../Src/Engine/Classes/TestSplittingVolume.uc | 0 Development/Src/Engine/Classes/Texture.uc | 0 Development/Src/Engine/Classes/Texture2D.uc | 0 .../Src/Engine/Classes/Texture2DComposite.uc | 0 .../Src/Engine/Classes/Texture2DDynamic.uc | 0 Development/Src/Engine/Classes/TextureCube.uc | 0 .../Src/Engine/Classes/TextureFlipBook.uc | 0 .../Src/Engine/Classes/TextureMovie.uc | 0 .../Src/Engine/Classes/TextureRenderTarget.uc | 0 .../Engine/Classes/TextureRenderTarget2D.uc | 0 .../Engine/Classes/TextureRenderTargetCube.uc | 0 .../Src/Engine/Classes/TranslationContext.uc | 0 .../Src/Engine/Classes/TranslatorTag.uc | 0 Development/Src/Engine/Classes/Trigger.uc | 0 .../Engine/Classes/TriggerStreamingLevel.uc | 0 .../Src/Engine/Classes/TriggerVolume.uc | 0 .../Src/Engine/Classes/Trigger_Dynamic.uc | 0 Development/Src/Engine/Classes/Trigger_LOS.uc | 0 .../Src/Engine/Classes/Trigger_PawnsOnly.uc | 0 .../Src/Engine/Classes/TriggeredPath.uc | 0 .../Engine/Classes/TwitterIntegrationBase.uc | 0 .../Src/Engine/Classes/UICharacterSummary.uc | 0 .../Src/Engine/Classes/UIDataProvider.uc | 0 .../Engine/Classes/UIDataProvider_MenuItem.uc | 0 .../UIDataProvider_OnlineFriendMessages.uc | 0 .../Classes/UIDataProvider_OnlineFriends.uc | 0 .../UIDataProvider_OnlinePartyChatList.uc | 0 .../UIDataProvider_OnlinePlayerDataBase.uc | 0 .../UIDataProvider_OnlinePlayerStorage.uc | 0 ...UIDataProvider_OnlinePlayerStorageArray.uc | 0 .../UIDataProvider_OnlineProfileSettings.uc | 0 .../UIDataProvider_PlayerAchievements.uc | 0 .../Engine/Classes/UIDataProvider_Settings.uc | 0 .../Classes/UIDataProvider_SettingsArray.uc | 0 Development/Src/Engine/Classes/UIDataStore.uc | 0 .../Engine/Classes/UIDataStorePublisher.uc | 0 .../Engine/Classes/UIDataStoreSubscriber.uc | 0 .../Classes/UIDataStore_DynamicResource.uc | 0 .../Src/Engine/Classes/UIDataStore_Fonts.uc | 0 .../Classes/UIDataStore_GameResource.uc | 0 .../Engine/Classes/UIDataStore_GameState.uc | 0 .../Engine/Classes/UIDataStore_InputAlias.uc | 0 .../Engine/Classes/UIDataStore_MenuItems.uc | 0 .../Classes/UIDataStore_OnlineGameSearch.uc | 0 .../Classes/UIDataStore_OnlineGameSettings.uc | 0 .../Classes/UIDataStore_OnlinePlayerData.uc | 0 .../Engine/Classes/UIDataStore_OnlineStats.uc | 0 .../Engine/Classes/UIDataStore_Registry.uc | 0 .../Src/Engine/Classes/UIDataStore_Remote.uc | 0 .../Engine/Classes/UIDataStore_Settings.uc | 0 .../Classes/UIDataStore_StringAliasMap.uc | 0 .../Engine/Classes/UIDataStore_StringBase.uc | 0 Development/Src/Engine/Classes/UIDev.uci | 0 .../Src/Engine/Classes/UIGameInfoSummary.uc | 0 .../Src/Engine/Classes/UIInteraction.uc | 0 Development/Src/Engine/Classes/UIManager.uc | 0 .../Src/Engine/Classes/UIMapSummary.uc | 0 .../Engine/Classes/UIPropertyDataProvider.uc | 0 .../Classes/UIResourceCombinationProvider.uc | 0 .../Engine/Classes/UIResourceDataProvider.uc | 0 Development/Src/Engine/Classes/UIRoot.uc | 0 .../Src/Engine/Classes/UISceneClient.uc | 0 .../Src/Engine/Classes/UISoundTheme.uc | 0 .../Src/Engine/Classes/UIWeaponSummary.uc | 0 .../Engine/Classes/UberPostProcessEffect.uc | 0 ...erCloudFileCloudSaveSystemDataBlobStore.uc | 0 .../Engine/Classes/UserCloudFileInterface.uc | 0 Development/Src/Engine/Classes/Vehicle.uc | 0 Development/Src/Engine/Classes/Volume.uc | 0 .../Src/Engine/Classes/VolumePathNode.uc | 0 Development/Src/Engine/Classes/VolumeTimer.uc | 0 .../Src/Engine/Classes/WallTransReachSpec.uc | 0 Development/Src/Engine/Classes/WaterVolume.uc | 0 .../Src/Engine/Classes/WaveFormBase.uc | 0 Development/Src/Engine/Classes/Weapon.uc | 0 .../Engine/Classes/WindDirectionalSource.uc | 0 .../Classes/WindDirectionalSourceComponent.uc | 0 .../Src/Engine/Classes/WindPointSource.uc | 0 .../Classes/WindPointSourceComponent.uc | 0 .../Src/Engine/Classes/WorldAttractor.uc | 0 Development/Src/Engine/Classes/WorldInfo.uc | 11 +- Development/Src/Engine/Classes/ZoneInfo.uc | 0 Development/Src/GFxUI/Classes/FlashMovie.uc | 0 .../Src/GFxUI/Classes/GFxAction_CloseMovie.uc | 0 .../GFxUI/Classes/GFxAction_GetVariable.uc | 0 .../Src/GFxUI/Classes/GFxAction_Invoke.uc | 0 .../Src/GFxUI/Classes/GFxAction_OpenMovie.uc | 0 .../GFxUI/Classes/GFxAction_SetCaptureKeys.uc | 0 .../GFxUI/Classes/GFxAction_SetVariable.uc | 0 .../Src/GFxUI/Classes/GFxClikWidget.uc | 0 Development/Src/GFxUI/Classes/GFxEngine.uc | 0 .../Src/GFxUI/Classes/GFxEvent_FsCommand.uc | 0 .../Src/GFxUI/Classes/GFxFSCmdHandler.uc | 0 .../GFxUI/Classes/GFxFSCmdHandler_Kismet.uc | 0 .../Src/GFxUI/Classes/GFxInteraction.uc | 0 .../Src/GFxUI/Classes/GFxMoviePlayer.uc | 0 Development/Src/GFxUI/Classes/GFxObject.uc | 0 Development/Src/GFxUI/Classes/GFxRawData.uc | 0 Development/Src/GFxUI/Classes/SwfMovie.uc | 0 .../Classes/GFxImportCommandlet.uc | 0 .../GFxUIEditor/Classes/GFxMovieFactory.uc | 0 .../Classes/GFxReimportCommandlet.uc | 0 .../Classes/GenericBrowserType_GFxMovie.uc | 0 .../Classes/DebugCameraController.uc | 0 .../GameFramework/Classes/DebugCameraHUD.uc | 0 .../GameFramework/Classes/DebugCameraInput.uc | 0 .../Classes/DynamicGameCrowdDestination.uc | 0 .../Classes/DynamicSpriteComponent.uc | 0 .../GameFramework/Classes/FrameworkGame.uc | 0 .../Classes/GameAICmd_Hover_MoveToGoal.uc | 0 .../GameAICmd_Hover_MoveToGoal_Mesh.uc | 0 .../GameFramework/Classes/GameAICommand.uc | 0 .../GameFramework/Classes/GameAIController.uc | 0 .../GameFramework/Classes/GameCameraBase.uc | 0 .../Classes/GameCameraBlockingVolume.uc | 0 .../GameFramework/Classes/GameCheatManager.uc | 0 .../GameFramework/Classes/GameCrowdAgent.uc | 0 .../Classes/GameCrowdAgentBehavior.uc | 0 .../GameFramework/Classes/GameCrowdAgentSM.uc | 0 .../Classes/GameCrowdAgentSkeletal.uc | 0 .../Classes/GameCrowdBehaviorPoint.uc | 0 .../GameCrowdBehavior_PlayAnimation.uc | 0 .../Classes/GameCrowdBehavior_RunFromPanic.uc | 0 .../Classes/GameCrowdBehavior_WaitForGroup.uc | 0 .../Classes/GameCrowdBehavior_WaitInQueue.uc | 0 .../Classes/GameCrowdDestination.uc | 0 .../Classes/GameCrowdDestinationQueuePoint.uc | 0 .../GameFramework/Classes/GameCrowdGroup.uc | 0 .../Classes/GameCrowdInfoVolume.uc | 0 .../GameCrowdInteractionDestination.uc | 0 .../Classes/GameCrowdInteractionPoint.uc | 0 .../Classes/GameCrowdPopulationManager.uc | 0 .../Classes/GameCrowdReplicationActor.uc | 0 .../Classes/GameCrowdSpawnInterface.uc | 0 .../Classes/GameCrowdSpawnRelativeActor.uc | 0 .../Classes/GameCrowdSpawnerInterface.uc | 0 .../Classes/GameCrowd_ListOfAgents.uc | 0 .../GameDestinationConnRenderingComponent.uc | 0 .../GameFramework/Classes/GameExplosion.uc | 0 .../Classes/GameExplosionActor.uc | 0 .../Classes/GameExplosionContent.uc | 0 .../GameFramework/Classes/GameFixedCamera.uc | 0 .../Classes/GameKActorSpawnableEffect.uc | 0 .../Src/GameFramework/Classes/GamePawn.uc | 0 .../GameFramework/Classes/GamePlayerCamera.uc | 0 .../Classes/GamePlayerController.uc | 0 .../Classes/GameSkelCtrl_Recoil.uc | 0 .../GameFramework/Classes/GameSpecialMove.uc | 0 .../GameFramework/Classes/GameStateObject.uc | 0 .../Classes/GameStatsAggregator.uc | 0 .../Classes/GameThirdPersonCamera.uc | 0 .../Classes/GameThirdPersonCameraMode.uc | 0 .../GameThirdPersonCameraMode_Default.uc | 0 .../Src/GameFramework/Classes/GameTypes.uc | 0 .../GameFramework/Classes/GameWaveForms.uc | 0 .../Classes/MobileDebugCameraController.uc | 0 .../Classes/MobileDebugCameraHUD.uc | 0 .../Classes/MobileDebugCameraInput.uc | 0 .../Src/GameFramework/Classes/MobileHUD.uc | 0 .../GameFramework/Classes/MobileInputZone.uc | 0 .../GameFramework/Classes/MobileMenuBar.uc | 0 .../Classes/MobileMenuBarItem.uc | 0 .../GameFramework/Classes/MobileMenuButton.uc | 0 .../Classes/MobileMenuElement.uc | 0 .../GameFramework/Classes/MobileMenuGame.uc | 0 .../GameFramework/Classes/MobileMenuImage.uc | 0 .../Classes/MobileMenuInventory.uc | 0 .../GameFramework/Classes/MobileMenuLabel.uc | 0 .../GameFramework/Classes/MobileMenuList.uc | 0 .../Classes/MobileMenuListItem.uc | 0 .../GameFramework/Classes/MobileMenuObject.uc | 0 .../Classes/MobileMenuObjectProxy.uc | 0 .../Classes/MobileMenuPlayerController.uc | 0 .../GameFramework/Classes/MobileMenuScene.uc | 0 .../Classes/MobilePlayerInput.uc | 0 .../Classes/MobileSecondaryViewportClient.uc | 0 .../Classes/MobileTouchInputVolume.uc | 0 .../Classes/NavMeshGoal_OutOfViewFrom.uc | 0 ...asAgainstPolysWithinDistanceOfLocations.uc | 0 .../Classes/PMESTG_LeaveADecalBase.uc | 0 .../Classes/PlayerCollectorGame.uc | 0 .../Classes/SecondaryViewportClient.uc | 0 .../Classes/SeqAct_ControlGameMovie.uc | 0 .../GameFramework/Classes/SeqAct_Deproject.uc | 0 ...SeqAct_GameCrowdPopulationManagerToggle.uc | 0 .../Classes/SeqAct_GameCrowdSpawner.uc | 0 .../Classes/SeqAct_MobileAddInputZones.uc | 0 .../Classes/SeqAct_MobileClearInputZones.uc | 0 .../Classes/SeqAct_MobileRemoveInputZone.uc | 0 .../Classes/SeqAct_MobileSaveLoadValue.uc | 0 .../Classes/SeqAct_ModifyProperty.uc | 0 .../Classes/SeqAct_PlayAgentAnimation.uc | 0 .../Classes/SeqAct_ToggleMouseCursor.uc | 0 .../SeqEvent_CrowdAgentReachedDestination.uc | 0 .../Classes/SeqEvent_HudRender.uc | 0 .../Classes/SeqEvent_HudRenderImage.uc | 0 .../Classes/SeqEvent_HudRenderText.uc | 0 .../Classes/SeqEvent_MobileBase.uc | 0 .../Classes/SeqEvent_MobileButton.uc | 0 .../Classes/SeqEvent_MobileInput.uc | 0 .../Classes/SeqEvent_MobileLook.uc | 0 .../Classes/SeqEvent_MobileMotion.uc | 0 .../Classes/SeqEvent_MobileObjectPicker.uc | 0 .../Classes/SeqEvent_MobileRawInput.uc | 0 .../Classes/SeqEvent_MobileSwipe.uc | 0 .../SeqEvent_MobileTouchInputVolume.uc | 0 .../Classes/SeqEvent_MobileZoneBase.uc | 0 .../Classes/TouchableElement3D.uc | 0 Development/Src/GameFramework/Globals.uci | 0 .../Classes/ClientBeaconAddressResolver.uc | 0 Development/Src/IpDrv/Classes/HelloWeb.uc | 0 Development/Src/IpDrv/Classes/ImageServer.uc | 0 Development/Src/IpDrv/Classes/InternetLink.uc | 0 Development/Src/IpDrv/Classes/MCPBase.uc | 0 .../Src/IpDrv/Classes/McpClashMobBase.uc | 0 .../IpDrv/Classes/McpClashMobFileDownload.uc | 0 .../Src/IpDrv/Classes/McpClashMobManager.uc | 0 .../Src/IpDrv/Classes/McpGroupsBase.uc | 0 .../Src/IpDrv/Classes/McpGroupsManager.uc | 0 .../Src/IpDrv/Classes/McpIdMappingBase.uc | 0 .../Src/IpDrv/Classes/McpIdMappingManager.uc | 0 .../IpDrv/Classes/McpManagedValueManager.uc | 0 .../Classes/McpManagedValueManagerBase.uc | 0 .../Src/IpDrv/Classes/McpMessageBase.uc | 0 .../Src/IpDrv/Classes/McpMessageManager.uc | 0 .../Src/IpDrv/Classes/McpServerTimeBase.uc | 0 .../Src/IpDrv/Classes/McpServerTimeManager.uc | 0 .../Src/IpDrv/Classes/McpServiceBase.uc | 0 .../Src/IpDrv/Classes/McpServiceConfig.uc | 0 .../IpDrv/Classes/McpUserCloudFileDownload.uc | 0 .../Src/IpDrv/Classes/McpUserInventoryBase.uc | 0 .../IpDrv/Classes/McpUserInventoryManager.uc | 0 .../Src/IpDrv/Classes/McpUserManager.uc | 0 .../Src/IpDrv/Classes/McpUserManagerBase.uc | 0 Development/Src/IpDrv/Classes/MeshBeacon.uc | 0 .../Src/IpDrv/Classes/MeshBeaconClient.uc | 0 .../Src/IpDrv/Classes/MeshBeaconHost.uc | 0 .../IpDrv/Classes/OnlineAuthInterfaceImpl.uc | 0 .../IpDrv/Classes/OnlineEventsInterfaceMcp.uc | 0 .../IpDrv/Classes/OnlineGameInterfaceImpl.uc | 0 .../IpDrv/Classes/OnlineImageDownloaderWeb.uc | 0 .../IpDrv/Classes/OnlineNewsInterfaceMcp.uc | 0 .../IpDrv/Classes/OnlinePlaylistManager.uc | 0 .../IpDrv/Classes/OnlinePlaylistProvider.uc | 0 .../Classes/OnlineSubsystemCommonImpl.uc | 0 .../Classes/OnlineTitleFileDownloadBase.uc | 0 .../Classes/OnlineTitleFileDownloadMcp.uc | 0 .../Classes/OnlineTitleFileDownloadWeb.uc | 0 Development/Src/IpDrv/Classes/PartyBeacon.uc | 0 .../Src/IpDrv/Classes/PartyBeaconClient.uc | 0 .../Src/IpDrv/Classes/PartyBeaconHost.uc | 0 Development/Src/IpDrv/Classes/TcpLink.uc | 0 .../IpDrv/Classes/TitleFileDownloadCache.uc | 0 .../Classes/UIDataStore_OnlinePlaylists.uc | 0 .../Src/IpDrv/Classes/WebApplication.uc | 0 .../Src/IpDrv/Classes/WebConnection.uc | 0 Development/Src/IpDrv/Classes/WebRequest.uc | 0 Development/Src/IpDrv/Classes/WebResponse.uc | 0 Development/Src/IpDrv/Classes/WebServer.uc | 0 .../Src/MyMod/Classes/DO_NOT_DELETE.TXT | 0 .../Classes/OnlineSubsystemGameCenter.uc | 0 .../Classes/OnlineSuppliedUIGameCenter.uc | 0 .../Classes/OnlineSubsystemPC.uc | 0 .../Classes/OnlineAuthInterfaceSteamworks.uc | 0 .../Classes/OnlineGameInterfaceSteamworks.uc | 0 .../Classes/OnlineLobbyInterfaceSteamworks.uc | 0 .../Classes/OnlineSubsystemSteamworks.uc | 0 .../Src/OnlineSubsystemSteamworks/Globals.uci | 0 .../Classes/InterpTrackInstSubstanceInput.uc | 0 .../Classes/InterpTrackSubstanceInput.uc | 0 .../Classes/SeqAct_SubstanceRender.uc | 0 .../Classes/SeqAct_SubstanceSetInputFloat.uc | 0 .../Classes/SeqAct_SubstanceSetInputImg.uc | 0 .../Classes/SeqAct_SubstanceSetInputInt.uc | 0 .../Classes/SubstanceAirGraphActor.uc | 0 .../Classes/SubstanceAirGraphInstance.uc | 0 .../Classes/SubstanceAirImageInput.uc | 0 .../Classes/SubstanceAirInstanceFactory.uc | 0 .../Classes/SubstanceAirTexture2D.uc | 0 ...icBrowserType_SubstanceAirGraphInstance.uc | 0 ...nericBrowserType_SubstanceAirImageInput.uc | 0 ...BrowserType_SubstanceAirInstanceFactory.uc | 0 ...enericBrowserType_SubstanceAirTexture2D.uc | 0 .../Classes/ImageInputThumbnailRenderer.uc | 0 Development/Src/TestPackage/Classes/Test2.uc | 18 - .../Src/TestPackage/Classes/TestPackage.uc | 20 - .../Src/TestPackage/Classes/TgObject.uc | 25 - .../Classes/TgSpectatorController.uc | 235 - Development/Src/UDKBase/classes/CastleGame.uc | 42 + Development/Src/UDKBase/classes/CastlePC.uc | 989 +++ Development/Src/UDKBase/classes/CloudGame.uc | 0 Development/Src/UDKBase/classes/CloudHUD.uc | 0 .../UDKBase/classes/CloudMenuMicroTrans.uc | 0 Development/Src/UDKBase/classes/CloudPC.uc | 0 .../Src/UDKBase/classes/CloudSaveData.uc | 0 .../UDKBase/classes/MobileGameCrowdAgent.uc | 0 .../Src/UDKBase/classes/MobileHUDExt.uc | 381 + .../Src/UDKBase/classes/MobileMenuBase.uc | 62 + .../Src/UDKBase/classes/MobileMenuControls.uc | 158 + .../Src/UDKBase/classes/MobileMenuDebug.uc | 92 + .../Src/UDKBase/classes/MobileMenuPause.uc | 335 + .../Src/UDKBase/classes/MobileMenuSplash.uc | 103 + .../UDKBase/classes/MobilePlaceablePawn.uc | 0 .../Src/UDKBase/classes/MobileProjectile.uc | 0 .../classes/ParticleModuleTypeDataSnow.uc | 0 .../classes/SeqAct_MobileCrowdSpawner.uc | 0 Development/Src/UDKBase/classes/SimpleGame.uc | 0 Development/Src/UDKBase/classes/SimplePC.uc | 0 Development/Src/UDKBase/classes/SimplePawn.uc | 0 .../UDKBase/classes/UDKAIDecisionComponent.uc | 0 .../Src/UDKBase/classes/UDKAnimBlendBase.uc | 0 .../UDKBase/classes/UDKAnimBlendByDriving.uc | 0 .../Src/UDKBase/classes/UDKAnimBlendByFall.uc | 0 .../UDKBase/classes/UDKAnimBlendByFlying.uc | 0 .../classes/UDKAnimBlendByHoverJump.uc | 0 .../classes/UDKAnimBlendByHoverboardTilt.uc | 0 .../classes/UDKAnimBlendByHoverboardTurn.uc | 0 .../classes/UDKAnimBlendByHoverboarding.uc | 0 .../Src/UDKBase/classes/UDKAnimBlendByIdle.uc | 0 .../UDKBase/classes/UDKAnimBlendByPhysics.uc | 0 .../classes/UDKAnimBlendByPhysicsVolume.uc | 0 .../UDKBase/classes/UDKAnimBlendByPosture.uc | 0 .../classes/UDKAnimBlendBySlotActive.uc | 0 .../UDKBase/classes/UDKAnimBlendBySpeed.uc | 0 .../classes/UDKAnimBlendByTurnInPlace.uc | 0 .../UDKBase/classes/UDKAnimBlendByVehicle.uc | 0 .../UDKBase/classes/UDKAnimBlendByWeapType.uc | 0 .../UDKBase/classes/UDKAnimBlendByWeapon.uc | 0 .../classes/UDKAnimNodeCopyBoneTranslation.uc | 0 .../UDKBase/classes/UDKAnimNodeFramePlayer.uc | 0 .../classes/UDKAnimNodeJumpLeanOffset.uc | 0 .../Src/UDKBase/classes/UDKAnimNodeSeqWeap.uc | 0 .../UDKBase/classes/UDKAnimNodeSequence.uc | 0 .../UDKAnimNodeSequenceByBoneRotation.uc | 0 Development/Src/UDKBase/classes/UDKBot.uc | 0 .../Src/UDKBase/classes/UDKCarriedObject.uc | 0 .../classes/UDKDataStore_GameSearchBase.uc | 0 .../UDKBase/classes/UDKEmitCameraEffect.uc | 0 .../Src/UDKBase/classes/UDKEmitterPool.uc | 0 .../Src/UDKBase/classes/UDKExplosionLight.uc | 0 .../classes/UDKForcedDirectionVolume.uc | 0 Development/Src/UDKBase/classes/UDKGame.uc | 0 .../Src/UDKBase/classes/UDKGameInteraction.uc | 0 .../Src/UDKBase/classes/UDKGameObjective.uc | 0 .../UDKBase/classes/UDKGameSettingsCommon.uc | 0 .../UDKBase/classes/UDKGameViewportClient.uc | 0 Development/Src/UDKBase/classes/UDKHUD.uc | 0 Development/Src/UDKBase/classes/UDKJumpPad.uc | 0 .../UDKBase/classes/UDKJumpPadReachspec.uc | 0 .../Src/UDKBase/classes/UDKKActorBreakable.uc | 0 Development/Src/UDKBase/classes/UDKMapInfo.uc | 0 .../Src/UDKBase/classes/UDKMapMusicInfo.uc | 0 .../Src/UDKBase/classes/UDKMobileInputZone.uc | 0 .../classes/UDKParticleSystemComponent.uc | 0 Development/Src/UDKBase/classes/UDKPawn.uc | 0 .../Src/UDKBase/classes/UDKPickupFactory.uc | 0 .../UDKBase/classes/UDKPlayerController.uc | 0 .../Src/UDKBase/classes/UDKPlayerInput.uc | 0 .../Src/UDKBase/classes/UDKProfileSettings.uc | 0 .../Src/UDKBase/classes/UDKProjectile.uc | 0 Development/Src/UDKBase/classes/UDKScout.uc | 0 .../classes/UDKScriptedNavigationPoint.uc | 0 .../classes/UDKSkelControl_CantileverBeam.uc | 0 .../UDKBase/classes/UDKSkelControl_Damage.uc | 0 .../classes/UDKSkelControl_DamageHinge.uc | 0 .../classes/UDKSkelControl_DamageSpring.uc | 0 .../UDKSkelControl_HoverboardSuspension.uc | 0 .../classes/UDKSkelControl_HoverboardSwing.uc | 0 .../UDKSkelControl_HoverboardVibration.uc | 0 .../classes/UDKSkelControl_HugGround.uc | 0 .../classes/UDKSkelControl_LockRotation.uc | 0 .../UDKBase/classes/UDKSkelControl_LookAt.uc | 0 .../classes/UDKSkelControl_MassBoneScaling.uc | 0 .../classes/UDKSkelControl_PropellerBlade.uc | 0 .../UDKBase/classes/UDKSkelControl_Rotate.uc | 0 .../classes/UDKSkelControl_SpinControl.uc | 0 .../UDKSkelControl_TurretConstrained.uc | 0 .../classes/UDKSkelControl_VehicleFlap.uc | 0 .../classes/UDKSkeletalMeshComponent.uc | 0 Development/Src/UDKBase/classes/UDKSquadAI.uc | 0 .../Src/UDKBase/classes/UDKTeamOwnedInfo.uc | 0 .../Src/UDKBase/classes/UDKTeamPlayerStart.uc | 0 .../Src/UDKBase/classes/UDKTeleporterBase.uc | 0 .../UDKBase/classes/UDKTrajectoryReachspec.uc | 0 .../classes/UDKUIDataProvider_MapInfo.uc | 0 .../classes/UDKUIDataProvider_MenuOption.uc | 0 .../classes/UDKUIDataProvider_SearchResult.uc | 0 .../UDKUIDataProvider_ServerDetails.uc | 0 ...UDKUIDataProvider_SimpleElementProvider.uc | 0 .../classes/UDKUIDataProvider_StringArray.uc | 0 .../classes/UDKUIDataStore_MenuItems.uc | 0 .../UDKBase/classes/UDKUIDataStore_Options.uc | 0 .../UDKUIDataStore_StringAliasBindingMap.uc | 0 .../classes/UDKUIDataStore_StringAliasMap.uc | 0 .../classes/UDKUIDataStore_StringList.uc | 0 .../classes/UDKUIResourceDataProvider.uc | 0 Development/Src/UDKBase/classes/UDKVehicle.uc | 0 .../Src/UDKBase/classes/UDKVehicleBase.uc | 0 .../Src/UDKBase/classes/UDKVehicleFactory.uc | 0 .../classes/UDKVehicleMovementEffect.uc | 0 .../Src/UDKBase/classes/UDKVehicleSimCar.uc | 0 .../UDKBase/classes/UDKVehicleSimChopper.uc | 0 .../Src/UDKBase/classes/UDKVehicleSimHover.uc | 0 .../classes/UDKVehicleSimHoverboard.uc | 0 .../Src/UDKBase/classes/UDKVehicleWheel.uc | 0 Development/Src/UDKBase/classes/UDKWeapon.uc | 0 .../Src/UDKBase/classes/UDKWeaponPawn.uc | 0 .../Src/UDKBase/classes/UDKWeaponShield.uc | 0 .../GenericBrowserType_UTMapMusicInfo.uc | 20 + Development/Src/UTEditor/Classes/UTEditor.uc | 2 - .../Src/UTEditor/Classes/UTUnrealEdEngine.uc | 10 + .../Src/UTGame/Classes/DemoRecSpectator.uc | 302 + .../Src/UTGame/Classes/ForcedDirVolume.uc | 9 + Development/Src/UTGame/Classes/GFxMinimap.uc | 345 + .../Src/UTGame/Classes/GFxMinimapHud.uc | 730 ++ .../Src/UTGame/Classes/GFxProjectedUI.uc | 780 ++ .../Src/UTGame/Classes/GFxUDKFrontEnd.uc | 792 ++ .../UTGame/Classes/GFxUDKFrontEnd_Dialog.uc | 150 + .../Classes/GFxUDKFrontEnd_ErrorDialog.uc | 59 + .../Classes/GFxUDKFrontEnd_FilterDialog.uc | 369 + .../UTGame/Classes/GFxUDKFrontEnd_GameMode.uc | 270 + .../UTGame/Classes/GFxUDKFrontEnd_HostGame.uc | 441 ++ .../Classes/GFxUDKFrontEnd_InfoDialog.uc | 72 + .../Classes/GFxUDKFrontEnd_InstantAction.uc | 85 + .../Classes/GFxUDKFrontEnd_JoinDialog.uc | 209 + .../UTGame/Classes/GFxUDKFrontEnd_JoinGame.uc | 1544 ++++ .../Classes/GFxUDKFrontEnd_LaunchGame.uc | 546 ++ .../UTGame/Classes/GFxUDKFrontEnd_MainMenu.uc | 271 + .../Classes/GFxUDKFrontEnd_MapSelect.uc | 366 + .../Classes/GFxUDKFrontEnd_Multiplayer.uc | 213 + .../UTGame/Classes/GFxUDKFrontEnd_Mutators.uc | 493 ++ .../Classes/GFxUDKFrontEnd_PasswordDialog.uc | 130 + .../UTGame/Classes/GFxUDKFrontEnd_Screen.uc | 150 + .../Classes/GFxUDKFrontEnd_ServerSettings.uc | 403 + .../UTGame/Classes/GFxUDKFrontEnd_Settings.uc | 121 + .../Classes/GFxUDKFrontEnd_SettingsBase.uc | 346 + .../Src/UTGame/Classes/GFxUDKFrontEnd_View.uc | 109 + .../Classes/GFxUIFrontEnd_TitleScreen.uc | 159 + .../Src/UTGame/Classes/GFxUILeaderboard.uc | 695 ++ .../Src/UTGame/Classes/GFxUIScoreboard.uc | 681 ++ Development/Src/UTGame/Classes/GFxUIView.uc | 111 + .../UTGame/Classes/GFxUI_InventoryButton.uc | 42 + .../Src/UTGame/Classes/GFxUI_PauseMenu.uc | 101 + .../Classes/GFxUnitTest_ActionScriptThree.uc | 196 + .../GFxUnitTest_ActionScriptThreeWidget.uc | 591 ++ .../Src/UTGame/Classes/MorphTestActor.uc | 44 + .../Src/UTGame/Classes/PhysAnimTestActor.uc | 545 ++ .../Src/UTGame/Classes/SeqAct_SetPATAState.uc | 15 + .../Classes/SeqAct_SetWheelParticles.uc | 12 + .../UTGame/Classes/SeqAct_UTCrowdSpawner.uc | 13 + .../Src/UTGame/Classes/UTAchievements.uc | 71 + .../Src/UTGame/Classes/UTAchievementsBase.uc | 773 ++ .../Src/UTGame/Classes/UTActorFactoryAI.uc | 74 + .../UTGame/Classes/UTActorFactoryPickup.uc | 43 + .../Classes/UTActorFactoryTeamStaticMesh.uc | 13 + .../UTGame/Classes/UTActorFactoryUTKActor.uc | 11 + .../UTGame/Classes/UTActorFactoryVehicle.uc | 42 + .../Src/UTGame/Classes/UTAirVehicle.uc | 144 + .../UTGame/Classes/UTAmbientSoundComponent.uc | 16 + .../Src/UTGame/Classes/UTAmmoPickupFactory.uc | 135 + .../Src/UTGame/Classes/UTAmmo_LinkGun.uc | 21 + .../UTGame/Classes/UTAmmo_RocketLauncher.uc | 23 + .../Src/UTGame/Classes/UTAmmo_ShockRifle.uc | 21 + .../Src/UTGame/Classes/UTAnimBlendBase.uc | 8 + .../UTGame/Classes/UTAnimBlendByDriving.uc | 5 + .../Src/UTGame/Classes/UTAnimBlendByFall.uc | 5 + .../Src/UTGame/Classes/UTAnimBlendByFlying.uc | 7 + .../UTGame/Classes/UTAnimBlendByHoverJump.uc | 4 + .../Classes/UTAnimBlendByHoverboardTilt.uc | 6 + .../Classes/UTAnimBlendByHoverboardTurn.uc | 6 + .../Classes/UTAnimBlendByHoverboarding.uc | 6 + .../Src/UTGame/Classes/UTAnimBlendByIdle.uc | 4 + .../UTGame/Classes/UTAnimBlendByPhysics.uc | 4 + .../Classes/UTAnimBlendByPhysicsVolume.uc | 4 + .../UTGame/Classes/UTAnimBlendByPosture.uc | 4 + .../UTGame/Classes/UTAnimBlendBySlotActive.uc | 5 + .../Src/UTGame/Classes/UTAnimBlendBySpeed.uc | 6 + .../Classes/UTAnimBlendByTurnInPlace.uc | 5 + .../UTGame/Classes/UTAnimBlendByVehicle.uc | 7 + .../UTGame/Classes/UTAnimBlendByWeapType.uc | 7 + .../Src/UTGame/Classes/UTAnimBlendByWeapon.uc | 5 + .../Classes/UTAnimNodeCopyBoneTranslation.uc | 6 + .../UTGame/Classes/UTAnimNodeFramePlayer.uc | 6 + .../Classes/UTAnimNodeJumpLeanOffset.uc | 6 + .../Src/UTGame/Classes/UTAnimNodeSeqWeap.uc | 7 + .../Src/UTGame/Classes/UTAnimNodeSequence.uc | 5 + .../UTAnimNodeSequenceByBoneRotation.uc | 9 + Development/Src/UTGame/Classes/UTAnnouncer.uc | 223 + .../Src/UTGame/Classes/UTAreaNamingVolume.uc | 8 + .../UTGame/Classes/UTArmorPickupFactory.uc | 148 + .../Src/UTGame/Classes/UTArmorPickupLight.uc | 25 + .../UTGame/Classes/UTAttachment_LinkGun.uc | 559 ++ .../Src/UTGame/Classes/UTAutoCrouchVolume.uc | 74 + .../Src/UTGame/Classes/UTAvoidMarker.uc | 40 + .../Src/UTGame/Classes/UTBeamWeapon.uc | 307 + .../UTGame/Classes/UTBeamWeaponAttachment.uc | 91 + Development/Src/UTGame/Classes/UTBot.uc | 6497 +++++++++++++++++ Development/Src/UTGame/Classes/UTCTFBase.uc | 229 + Development/Src/UTGame/Classes/UTCTFFlag.uc | 492 ++ Development/Src/UTGame/Classes/UTCTFGame.uc | 401 + Development/Src/UTGame/Classes/UTCTFHUD.uc | 136 + .../Src/UTGame/Classes/UTCTFHUDMessage.uc | 60 + .../Src/UTGame/Classes/UTCTFSquadAI.uc | 673 ++ Development/Src/UTGame/Classes/UTCTFTeamAI.uc | 44 + .../Src/UTGame/Classes/UTCarriedObject.uc | 902 +++ .../UTGame/Classes/UTCarriedObjectMessage.uc | 294 + Development/Src/UTGame/Classes/UTCharInfo.uc | 81 + .../Src/UTGame/Classes/UTCheatManager.uc | 437 ++ .../Classes/UTCicadaRocketExplosionLight.uc | 17 + .../UTGame/Classes/UTClientSideWeaponPawn.uc | 37 + Development/Src/UTGame/Classes/UTConsole.uc | 69 + .../Classes/UTConsolePlayerController.uc | 246 + .../UTGame/Classes/UTConsolePlayerInput.uc | 861 +++ Development/Src/UTGame/Classes/UTDMRoster.uc | 29 + Development/Src/UTGame/Classes/UTDMSquad.uc | 269 + .../Src/UTGame/Classes/UTDamageType.uc | 501 ++ .../Classes/UTDataStore_GameSearchDM.uc | 276 + .../UTDataStore_GameSearchFavorites.uc | 33 + .../Classes/UTDataStore_GameSearchHistory.uc | 65 + .../Classes/UTDataStore_GameSearchPersonal.uc | 281 + .../Classes/UTDataStore_GameSettingsDM.uc | 17 + .../Src/UTGame/Classes/UTDeathMessage.uc | 158 + .../Src/UTGame/Classes/UTDeathmatch.uc | 112 + .../Src/UTGame/Classes/UTDecalManager.uc | 15 + .../Src/UTGame/Classes/UTDefensePoint.uc | 143 + .../Src/UTGame/Classes/UTDmgType_Burning.uc | 53 + .../Src/UTGame/Classes/UTDmgType_Drowned.uc | 14 + .../UTGame/Classes/UTDmgType_Encroached.uc | 13 + .../Src/UTGame/Classes/UTDmgType_Grenade.uc | 10 + .../Src/UTGame/Classes/UTDmgType_Instagib.uc | 31 + .../Src/UTGame/Classes/UTDmgType_Lava.uc | 15 + .../Src/UTGame/Classes/UTDmgType_LinkBeam.uc | 77 + .../UTGame/Classes/UTDmgType_LinkPlasma.uc | 22 + .../Src/UTGame/Classes/UTDmgType_Pancake.uc | 19 + .../Src/UTGame/Classes/UTDmgType_RanOver.uc | 53 + .../Src/UTGame/Classes/UTDmgType_Rocket.uc | 49 + .../Classes/UTDmgType_ScorpionSelfDestruct.uc | 28 + .../UTGame/Classes/UTDmgType_SeekingRocket.uc | 10 + .../Src/UTGame/Classes/UTDmgType_ShockBall.uc | 24 + .../UTGame/Classes/UTDmgType_ShockCombo.uc | 32 + .../UTGame/Classes/UTDmgType_ShockPrimary.uc | 27 + .../UTGame/Classes/UTDmgType_SpaceDeath.uc | 11 + .../Src/UTGame/Classes/UTDmgType_Telefrag.uc | 17 + .../Classes/UTDmgType_VehicleCollision.uc | 19 + .../Classes/UTDmgType_VehicleExplosion.uc | 18 + .../Src/UTGame/Classes/UTDroppedItemPickup.uc | 47 + .../Src/UTGame/Classes/UTDroppedPickup.uc | 142 + Development/Src/UTGame/Classes/UTDummyPawn.uc | 131 + .../UTGame/Classes/UTDynamicWaterVolume.uc | 17 + .../Src/UTGame/Classes/UTEmitCameraEffect.uc | 12 + .../Src/UTGame/Classes/UTEmit_BloodSpray.uc | 13 + .../Src/UTGame/Classes/UTEmit_BodyFlame.uc | 16 + .../UTGame/Classes/UTEmit_HeadShotHelmet.uc | 12 + .../Src/UTGame/Classes/UTEmit_HitEffect.uc | 28 + .../Src/UTGame/Classes/UTEmit_ShockCombo.uc | 112 + .../UTGame/Classes/UTEmit_TransLocateOut.uc | 90 + .../Classes/UTEmit_TransLocateOutRed.uc | 11 + .../Src/UTGame/Classes/UTEmit_VehicleHit.uc | 14 + Development/Src/UTGame/Classes/UTEmitter.uc | 94 + Development/Src/UTGame/Classes/UTEntryGame.uc | 61 + Development/Src/UTGame/Classes/UTEntryHUD.uc | 14 + .../UTGame/Classes/UTEntryPlayerController.uc | 214 + .../Src/UTGame/Classes/UTFamilyInfo.uc | 287 + .../UTGame/Classes/UTFamilyInfo_Liandri.uc | 78 + .../Classes/UTFamilyInfo_Liandri_Male.uc | 30 + .../Src/UTGame/Classes/UTFirstBloodMessage.uc | 52 + .../Src/UTGame/Classes/UTGFxHudWrapper.uc | 322 + .../Src/UTGame/Classes/UTGFxTeamHUD.uc | 63 + .../Src/UTGame/Classes/UTGFxTeamHUDWrapper.uc | 46 + .../Classes/UTGFxTweenableMoviePlayer.uc | 157 + Development/Src/UTGame/Classes/UTGame.uc | 3464 +++++++++ .../Src/UTGame/Classes/UTGameInteraction.uc | 9 + .../Src/UTGame/Classes/UTGameObjective.uc | 615 ++ .../UTGame/Classes/UTGameReplicationInfo.uc | 335 + .../Src/UTGame/Classes/UTGameSearchCTF.uc | 20 + .../Src/UTGame/Classes/UTGameSearchCommon.uc | 65 + .../Src/UTGame/Classes/UTGameSearchCustom.uc | 281 + .../Src/UTGame/Classes/UTGameSearchDM.uc | 20 + .../UTGame/Classes/UTGameSearchPersonal.uc | 14 + .../Src/UTGame/Classes/UTGameSearchTDM.uc | 20 + .../Src/UTGame/Classes/UTGameSearchVCTF.uc | 20 + .../Src/UTGame/Classes/UTGameSettingsCTF.uc | 20 + .../UTGame/Classes/UTGameSettingsCommon.uc | 388 + .../Src/UTGame/Classes/UTGameSettingsDM.uc | 15 + .../UTGame/Classes/UTGameSettingsPersonal.uc | 13 + .../Src/UTGame/Classes/UTGameSettingsTDM.uc | 16 + .../Src/UTGame/Classes/UTGameSettingsVCTF.uc | 18 + .../UTGame/Classes/UTGameViewportClient.uc | 278 + Development/Src/UTGame/Classes/UTGib.uc | 487 ++ .../Classes/UTGibSkeletalMeshComponent.uc | 26 + .../Classes/UTGibStaticMeshComponent.uc | 20 + Development/Src/UTGame/Classes/UTGib_Robot.uc | 43 + .../Src/UTGame/Classes/UTGib_RobotArm.uc | 11 + .../Src/UTGame/Classes/UTGib_RobotChunk.uc | 16 + .../Src/UTGame/Classes/UTGib_RobotHand.uc | 11 + .../Src/UTGame/Classes/UTGib_RobotHead.uc | 12 + .../Src/UTGame/Classes/UTGib_RobotLeg.uc | 11 + .../Src/UTGame/Classes/UTGib_RobotTorso.uc | 15 + .../Src/UTGame/Classes/UTGib_Vehicle.uc | 99 + .../Src/UTGame/Classes/UTGib_VehiclePiece.uc | 20 + .../UTGame/Classes/UTGreenMuzzleFlashLight.uc | 17 + Development/Src/UTGame/Classes/UTHUD.uc | 2615 +++++++ Development/Src/UTGame/Classes/UTHUDBase.uc | 587 ++ .../UTGame/Classes/UTHealthPickupFactory.uc | 148 + .../Src/UTGame/Classes/UTHealthPickupLight.uc | 25 + Development/Src/UTGame/Classes/UTHoldSpot.uc | 57 + .../Src/UTGame/Classes/UTHoverWheel.uc | 9 + .../UTGame/Classes/UTHugeExplosionLight.uc | 17 + .../Classes/UTIdleKickWarningMessage.uc | 28 + Development/Src/UTGame/Classes/UTInventory.uc | 57 + .../Src/UTGame/Classes/UTInventoryManager.uc | 773 ++ .../Src/UTGame/Classes/UTItemPickupFactory.uc | 67 + .../Src/UTGame/Classes/UTJumpLiftExit.uc | 69 + Development/Src/UTGame/Classes/UTJumpPad.uc | 47 + .../Src/UTGame/Classes/UTJumpPadReachspec.uc | 4 + Development/Src/UTGame/Classes/UTKActor.uc | 6 + .../Src/UTGame/Classes/UTKillZVolume.uc | 56 + .../Src/UTGame/Classes/UTKillerMessage.uc | 40 + .../UTGame/Classes/UTKillingSpreeMessage.uc | 124 + .../UTGame/Classes/UTKillsRemainingMessage.uc | 60 + .../UTGame/Classes/UTKismetAnnouncement.uc | 27 + .../Src/UTGame/Classes/UTLastSecondMessage.uc | 58 + .../Src/UTGame/Classes/UTLavaVolume.uc | 19 + .../Src/UTGame/Classes/UTLeaderboardRead.uc | 33 + .../Classes/UTLeviathanMuzzleFlashLight.uc | 17 + .../Src/UTGame/Classes/UTLinkBeamLight.uc | 25 + .../Classes/UTLinkGunMuzzleFlashLight.uc | 37 + .../Src/UTGame/Classes/UTLocalMessage.uc | 118 + .../UTGame/Classes/UTLockWarningMessage.uc | 58 + Development/Src/UTGame/Classes/UTMapInfo.uc | 716 ++ .../Src/UTGame/Classes/UTMapMusicInfo.uc | 7 + .../Src/UTGame/Classes/UTMultiKillMessage.uc | 92 + .../Src/UTGame/Classes/UTMusicManager.uc | 467 ++ Development/Src/UTGame/Classes/UTMutator.uc | 76 + .../Src/UTGame/Classes/UTMutator_Arena.uc | 52 + .../Src/UTGame/Classes/UTMutator_BigHead.uc | 21 + .../UTGame/Classes/UTMutator_FriendlyFire.uc | 21 + .../Src/UTGame/Classes/UTMutator_Handicap.uc | 48 + .../Src/UTGame/Classes/UTMutator_LowGrav.uc | 17 + .../UTGame/Classes/UTMutator_NoHoverboard.uc | 16 + .../UTGame/Classes/UTMutator_NoPowerups.uc | 15 + .../Src/UTGame/Classes/UTMutator_Slomo.uc | 17 + .../UTGame/Classes/UTMutator_SlowTimeKills.uc | 58 + .../UTGame/Classes/UTMutator_SpeedFreak.uc | 17 + .../UTGame/Classes/UTMutator_SuperBerserk.uc | 44 + .../Classes/UTMutator_WeaponsRespawn.uc | 13 + .../UTGame/Classes/UTObjectiveAnnouncement.uc | 78 + .../Classes/UTObjectiveSpecificMessage.uc | 85 + .../Src/UTGame/Classes/UTOnlineConstants.uci | 165 + .../Src/UTGame/Classes/UTOnlineStats.uci | 17 + .../Classes/UTParticleSystemComponent.uc | 8 + Development/Src/UTGame/Classes/UTPawn.uc | 5616 ++++++++++++++ .../Src/UTGame/Classes/UTPawnSoundGroup.uc | 206 + .../Classes/UTPawnSoundGroup_Liandri.uc | 28 + .../Classes/UTPhysicalMaterialProperty.uc | 14 + .../Src/UTGame/Classes/UTPickupFactory.uc | 394 + .../Classes/UTPickupFactory_HealthVial.uc | 126 + .../Src/UTGame/Classes/UTPickupInventory.uc | 39 + .../Src/UTGame/Classes/UTPickupMessage.uc | 49 + .../Src/UTGame/Classes/UTPlayerController.uc | 4120 +++++++++++ .../Src/UTGame/Classes/UTPlayerInput.uc | 69 + .../UTGame/Classes/UTPlayerReplicationInfo.uc | 622 ++ .../Src/UTGame/Classes/UTPopulationManager.uc | 12 + Development/Src/UTGame/Classes/UTPortal.uc | 14 + .../UTGame/Classes/UTPowerupPickupFactory.uc | 46 + .../Src/UTGame/Classes/UTProj_Grenade.uc | 115 + .../Src/UTGame/Classes/UTProj_LinkPlasma.uc | 70 + .../UTGame/Classes/UTProj_LinkPowerPlasma.uc | 11 + .../Src/UTGame/Classes/UTProj_LoadedRocket.uc | 110 + .../Src/UTGame/Classes/UTProj_Rocket.uc | 38 + .../Classes/UTProj_ScorpionGlob_Base.uc | 78 + .../UTGame/Classes/UTProj_SeekingRocket.uc | 15 + .../Src/UTGame/Classes/UTProjectile.uc | 595 ++ .../UTGame/Classes/UTQueuedAnnouncement.uc | 12 + .../Src/UTGame/Classes/UTReplicatedEmitter.uc | 33 + .../UTGame/Classes/UTRocketExplosionLight.uc | 17 + .../Src/UTGame/Classes/UTRocketLight.uc | 17 + .../Classes/UTRocketMuzzleFlashLight.uc | 17 + .../UTGame/Classes/UTRotatingDroppedPickup.uc | 31 + .../Src/UTGame/Classes/UTSD_SpawnedKActor.uc | 13 + Development/Src/UTGame/Classes/UTSayMsg.uc | 27 + .../Src/UTGame/Classes/UTScavengerMessage.uc | 27 + Development/Src/UTGame/Classes/UTScout.uc | 34 + .../Src/UTGame/Classes/UTScriptedBotVolume.uc | 17 + .../UTGame/Classes/UTScriptedVoiceMessage.uc | 39 + .../Src/UTGame/Classes/UTSeqAct_AIFreeze.uc | 17 + .../UTGame/Classes/UTSeqAct_AIStartFireAt.uc | 14 + .../Src/UTGame/Classes/UTSeqAct_AIStopFire.uc | 10 + .../UTSeqAct_ActivateRocketBoosters.uc | 10 + .../UTGame/Classes/UTSeqAct_AddNamedBot.uc | 55 + .../Src/UTGame/Classes/UTSeqAct_ChangeTeam.uc | 65 + .../Classes/UTSeqAct_DummyWeaponFire.uc | 135 + .../UTGame/Classes/UTSeqAct_EnterVehicle.uc | 74 + .../UTGame/Classes/UTSeqAct_ExitVehicle.uc | 10 + .../Src/UTGame/Classes/UTSeqAct_GetTeamNum.uc | 34 + .../Classes/UTSeqAct_HoverboardSpinJump.uc | 17 + .../UTGame/Classes/UTSeqAct_InfiniteAmmo.uc | 14 + .../Src/UTGame/Classes/UTSeqAct_PlayAnim.uc | 19 + .../Classes/UTSeqAct_PlayAnnouncement.uc | 24 + .../UTGame/Classes/UTSeqAct_PlayCameraAnim.uc | 47 + .../UTGame/Classes/UTSeqAct_ReturnCTFFlag.uc | 35 + .../Classes/UTSeqAct_ScriptedVoiceMessage.uc | 58 + .../UTGame/Classes/UTSeqAct_SelfDestruct.uc | 13 + .../Classes/UTSeqAct_SetBotsMustComplete.uc | 16 + .../Classes/UTSeqAct_SetVisibilityModifier.uc | 33 + .../Classes/UTSeqAct_SpawnProjectile.uc | 68 + .../UTGame/Classes/UTSeqAct_StopCameraAnim.uc | 29 + .../Classes/UTSeqAct_ToggleAnnouncements.uc | 33 + .../UTGame/Classes/UTSeqAct_UseHoverboard.uc | 31 + .../UTGame/Classes/UTSeqCond_CheckWeapon.uc | 40 + .../UTGame/Classes/UTSeqCond_DoTutorial.uc | 40 + .../UTGame/Classes/UTSeqCond_HasInventory.uc | 46 + .../Classes/UTSeqCond_IsCarryingFlag.uc | 53 + .../Src/UTGame/Classes/UTSeqCond_IsConsole.uc | 18 + .../UTGame/Classes/UTSeqCond_IsUsingWeapon.uc | 48 + .../UTGame/Classes/UTSeqEvent_FlagEvent.uc | 60 + .../UTGame/Classes/UTSeqEvent_GameEnded.uc | 50 + .../Classes/UTSeqEvent_ObjectiveCompleted.uc | 13 + .../Classes/UTSeqEvent_SkipCinematic.uc | 12 + .../Classes/UTSeqEvent_VehicleFactory.uc | 31 + .../Src/UTGame/Classes/UTShockBallLight.uc | 15 + .../Classes/UTShockComboExplosionLight.uc | 18 + .../Src/UTGame/Classes/UTShockImpactLight.uc | 17 + .../UTGame/Classes/UTShockMuzzleFlashLight.uc | 16 + .../Src/UTGame/Classes/UTSimpleDestroyable.uc | 212 + .../Classes/UTSkelControl_CantileverBeam.uc | 6 + .../Classes/UTSkelControl_CicadaEngine.uc | 96 + .../UTGame/Classes/UTSkelControl_Damage.uc | 88 + .../Classes/UTSkelControl_DamageHinge.uc | 87 + .../Classes/UTSkelControl_DamageSpring.uc | 88 + .../UTSkelControl_HoverboardSuspension.uc | 7 + .../Classes/UTSkelControl_HoverboardSwing.uc | 7 + .../UTSkelControl_HoverboardVibration.uc | 7 + .../UTGame/Classes/UTSkelControl_HugGround.uc | 8 + .../Classes/UTSkelControl_JetThruster.uc | 56 + .../Classes/UTSkelControl_LockRotation.uc | 8 + .../UTGame/Classes/UTSkelControl_LookAt.uc | 9 + .../Classes/UTSkelControl_MantaBlade.uc | 5 + .../Classes/UTSkelControl_MantaFlaps.uc | 5 + .../Classes/UTSkelControl_MassBoneScaling.uc | 8 + .../UTGame/Classes/UTSkelControl_Oscillate.uc | 49 + .../UTGame/Classes/UTSkelControl_Rotate.uc | 6 + .../Classes/UTSkelControl_SpinControl.uc | 6 + .../UTSkelControl_TurretConstrained.uc | 6 + .../Src/UTGame/Classes/UTSlimeVolume.uc | 19 + Development/Src/UTGame/Classes/UTSquadAI.uc | 2781 +++++++ .../Src/UTGame/Classes/UTStartupMessage.uc | 98 + .../UTGame/Classes/UTStatsReadAchievements.uc | 39 + .../Classes/UTStatsWriteAchievements.uc | 26 + .../Src/UTGame/Classes/UTStatsWriteCTF.uc | 14 + .../Src/UTGame/Classes/UTStatsWriteDM.uc | 20 + .../Src/UTGame/Classes/UTStatsWriteTDM.uc | 14 + .../Classes/UTStingerMuzzleFlashLight.uc | 17 + Development/Src/UTGame/Classes/UTTeamAI.uc | 584 ++ .../Src/UTGame/Classes/UTTeamDeathMessage.uc | 8 + Development/Src/UTGame/Classes/UTTeamGame.uc | 1397 ++++ .../Src/UTGame/Classes/UTTeamGameMessage.uc | 134 + Development/Src/UTGame/Classes/UTTeamHUD.uc | 153 + Development/Src/UTGame/Classes/UTTeamInfo.uc | 195 + .../Src/UTGame/Classes/UTTeamPlayerStart.uc | 11 + .../Src/UTGame/Classes/UTTeamSayMSg.uc | 12 + .../Src/UTGame/Classes/UTTeamStaticMesh.uc | 72 + .../UTGame/Classes/UTTeleporterCustomMesh.uc | 73 + .../Src/UTGame/Classes/UTTimedPowerup.uc | 254 + .../Src/UTGame/Classes/UTTimerMessage.uc | 99 + .../UTGame/Classes/UTTrajectoryReachSpec.uc | 4 + .../Classes/UTTurretMuzzleFlashLight.uc | 16 + .../Classes/UTUIDataProvider_GameModeInfo.uc | 45 + .../Classes/UTUIDataProvider_KeyBinding.uc | 13 + .../Classes/UTUIDataProvider_MapInfo.uc | 56 + .../Classes/UTUIDataProvider_MenuOption.uc | 8 + .../UTUIDataProvider_MultiplayerMenuItem.uc | 38 + .../Classes/UTUIDataProvider_Mutator.uc | 103 + .../Classes/UTUIDataProvider_SearchResult.uc | 12 + .../Classes/UTUIDataProvider_ServerDetails.uc | 7 + .../UTUIDataProvider_SettingsMenuItem.uc | 19 + .../UTUIDataProvider_SimpleElementProvider.uc | 9 + .../Classes/UTUIDataProvider_StringArray.uc | 7 + .../UTGame/Classes/UTUIDataProvider_Weapon.uc | 25 + .../UTGame/Classes/UTUIDataStore_MenuItems.uc | 15 + .../UTGame/Classes/UTUIDataStore_Options.uc | 8 + .../UTUIDataStore_StringAliasBindingsMap.uc | 8 + .../Classes/UTUIDataStore_StringAliasMap.uc | 7 + .../Classes/UTUIDataStore_StringList.uc | 6 + .../Classes/UTUIResourceDataProvider.uc | 7 + .../Src/UTGame/Classes/UTVWeap_TowCable.uc | 122 + Development/Src/UTGame/Classes/UTVehicle.uc | 6105 ++++++++++++++++ .../Src/UTGame/Classes/UTVehicleBoostPad.uc | 139 + .../Src/UTGame/Classes/UTVehicleCTFGame.uc | 29 + .../Src/UTGame/Classes/UTVehicleCTFHUD.uc | 9 + .../Classes/UTVehicleCantCarryFlagMessage.uc | 43 + .../Src/UTGame/Classes/UTVehicleDeathPiece.uc | 47 + .../Src/UTGame/Classes/UTVehicleFactory.uc | 378 + .../UTGame/Classes/UTVehicleKillMessage.uc | 58 + .../Src/UTGame/Classes/UTVehicleMessage.uc | 84 + .../UTGame/Classes/UTVehicleScorpionWheel.uc | 18 + .../Src/UTGame/Classes/UTVehicleShield.uc | 71 + .../Src/UTGame/Classes/UTVehicleWeapon.uc | 515 ++ .../Src/UTGame/Classes/UTVehicle_Cicada.uc | 336 + .../UTGame/Classes/UTVehicle_Hoverboard.uc | 1771 +++++ .../Src/UTGame/Classes/UTVehicle_Manta.uc | 580 ++ .../Src/UTGame/Classes/UTVehicle_Scorpion.uc | 1366 ++++ .../Src/UTGame/Classes/UTVictimMessage.uc | 71 + .../Src/UTGame/Classes/UTVictoryMessage.uc | 66 + Development/Src/UTGame/Classes/UTVoice.uc | 819 +++ .../Src/UTGame/Classes/UTVoice_Robot.uc | 59 + .../Src/UTGame/Classes/UTWaterVolume.uc | 129 + .../Src/UTGame/Classes/UTWeap_LinkGun.uc | 1307 ++++ .../Src/UTGame/Classes/UTWeap_PhysicsGun.uc | 274 + .../UTGame/Classes/UTWeap_RocketLauncher.uc | 1596 ++++ .../UTGame/Classes/UTWeap_ShockRifleBase.uc | 10 + Development/Src/UTGame/Classes/UTWeapon.uc | 3287 +++++++++ .../Src/UTGame/Classes/UTWeaponAttachment.uc | 728 ++ .../Src/UTGame/Classes/UTWeaponKillMessage.uc | 8 + .../Classes/UTWeaponKillRewardMessage.uc | 53 + .../Src/UTGame/Classes/UTWeaponLocker.uc | 607 ++ .../Classes/UTWeaponLockerPickupLight.uc | 25 + .../Src/UTGame/Classes/UTWeaponPawn.uc | 446 ++ .../UTGame/Classes/UTWeaponPickupFactory.uc | 337 + .../Src/UTGame/Classes/UTWeaponPickupLight.uc | 25 + .../UTGame/Classes/UTWeaponRewardMessage.uc | 54 + .../UTGame/Classes/UTWeaponSwitchMessage.uc | 31 + .../Src/UTGame/Classes/UTWillowWhisp.uc | 202 + .../UTGame/Classes/VehicleMovementEffect.uc | 17 + Development/Src/UTGame/UTStats.uci | 39 + .../Classes/UTArmorPickup_BaseArmor.uc | 50 + .../Classes/UTArmorPickup_ShieldBelt.uc | 73 + .../Classes/UTArmorPickup_ThighPad.uc | 50 + .../Classes/UTAttachment_RocketLauncher.uc | 41 + .../Classes/UTAttachment_ShockRifle.uc | 134 + .../Src/UTGameContent/Classes/UTBerserk.uc | 175 + .../Classes/UTCTFBase_Content.uc | 68 + .../UTGameContent/Classes/UTCTFBlueFlag.uc | 52 + .../Classes/UTCTFBlueFlagBase.uc | 32 + .../Classes/UTCTFGame_Content.uc | 12 + .../Src/UTGameContent/Classes/UTCTFMessage.uc | 62 + .../Src/UTGameContent/Classes/UTCTFRedFlag.uc | 49 + .../UTGameContent/Classes/UTCTFRedFlagBase.uc | 27 + .../Src/UTGameContent/Classes/UTDecoy.uc | 62 + .../Classes/UTDmgType_CicadaLaser.uc | 24 + .../Classes/UTDmgType_CicadaRocket.uc | 26 + .../UTGameContent/Classes/UTDmgType_Fire.uc | 14 + .../Classes/UTDmgType_MantaBolt.uc | 32 + .../Classes/UTDmgType_ScorpionBlade.uc | 15 + .../Classes/UTDmgType_ScorpionGlob.uc | 21 + .../Classes/UTDmgType_ScorpionGlobRed.uc | 12 + .../Classes/UTDroppedShieldBelt.uc | 84 + .../UTGameContent/Classes/UTGameCrowdAgent.uc | 62 + .../Classes/UTGib_ScorpionHatch.uc | 17 + .../UTGameContent/Classes/UTJumpBootEffect.uc | 83 + .../Src/UTGameContent/Classes/UTJumpBoots.uc | 198 + .../Classes/UTPickupFactory_Berserk.uc | 58 + .../Classes/UTPickupFactory_HealthPack.uc | 49 + .../Classes/UTPickupFactory_JumpBoots.uc | 49 + .../Classes/UTPickupFactory_SuperHealth.uc | 71 + .../Classes/UTPickupFactory_UDamage.uc | 84 + .../Classes/UTPowerupRewardMessage.uc | 45 + .../Classes/UTProj_CicadaRocket.uc | 241 + .../UTGameContent/Classes/UTProj_MantaBolt.uc | 44 + .../Classes/UTProj_ScorpionGlob.uc | 15 + .../Classes/UTProj_ScorpionGlob_Red.uc | 14 + .../UTGameContent/Classes/UTProj_ShockBall.uc | 209 + .../Classes/UTTeamScoreMessage.uc | 96 + .../Src/UTGameContent/Classes/UTTeleporter.uc | 82 + .../Src/UTGameContent/Classes/UTUDamage.uc | 144 + .../Classes/UTVWeap_CicadaMissileLauncher.uc | 588 ++ .../Classes/UTVWeap_CicadaTurret.uc | 140 + .../UTGameContent/Classes/UTVWeap_MantaGun.uc | 35 + .../Classes/UTVWeap_ScorpionTurret.uc | 81 + .../Classes/UTVehicleCTFGame_Content.uc | 28 + .../Classes/UTVehicleFactory_Cicada.uc | 23 + .../Classes/UTVehicleFactory_Manta.uc | 21 + .../Classes/UTVehicleFactory_Scorpion.uc | 23 + .../Classes/UTVehicleShockComboLight.uc | 17 + .../Classes/UTVehicle_Cicada_Content.uc | 163 + .../Classes/UTVehicle_Hoverboard_Content.uc | 158 + .../Classes/UTVehicle_Manta_Content.uc | 218 + .../Classes/UTVehicle_Scorpion_Content.uc | 210 + .../Classes/UTWeap_RocketLauncher_Content.uc | 147 + .../Classes/UTWeap_ShockRifle.uc | 396 + .../Classes/UTWeaponLocker_Content.uc | 45 + .../Src/UnrealEd/Classes/ASVSkelComponent.uc | 0 .../Src/UnrealEd/Classes/AnimNodeEditInfo.uc | 0 .../Classes/AnimNodeEditInfo_AimOffset.uc | 0 .../UnrealEd/Classes/AnimSetLabelRenderer.uc | 0 .../Classes/AnimTreeEdSkelComponent.uc | 0 .../UnrealEd/Classes/AnimTreeLabelRenderer.uc | 0 .../Classes/ApexClothingAssetLabelRenderer.uc | 0 .../ApexDestructibleAssetLabelRenderer.uc | 0 .../ApexDestructibleAssetThumbnailRenderer.uc | 0 .../Classes/ApexGenericAssetLabelRenderer.uc | 0 .../Classes/ArchetypeThumbnailRenderer.uc | 0 .../UnrealEd/Classes/BasicStatsVisualizer.uc | 0 .../Src/UnrealEd/Classes/BrowserManager.uc | 0 .../Src/UnrealEd/Classes/BrushBuilder.uc | 0 .../UnrealEd/Classes/CascadeConfiguration.uc | 0 .../Src/UnrealEd/Classes/CascadeOptions.uc | 0 .../Classes/CascadeParticleSystemComponent.uc | 0 .../Classes/CascadePreviewComponent.uc | 0 .../Src/UnrealEd/Classes/ConeBuilder.uc | 0 .../UnrealEd/Classes/ConvertMapToNavMesh.uc | 0 .../Src/UnrealEd/Classes/CubeBuilder.uc | 0 .../Src/UnrealEd/Classes/CurveEdOptions.uc | 0 .../Src/UnrealEd/Classes/CurveEdPresetBase.uc | 0 .../UnrealEd/Classes/CurveEdPreset_CosWave.uc | 0 .../Classes/CurveEdPreset_LinearDecay.uc | 0 .../UnrealEd/Classes/CurveEdPreset_Nothing.uc | 0 .../Classes/CurveEdPreset_SineWave.uc | 0 .../UnrealEd/Classes/CurveEdPreset_UserSet.uc | 0 .../UnrealEd/Classes/CurvedStairBuilder.uc | 0 .../Classes/CustomPropertyItemBindings.uc | 0 .../Src/UnrealEd/Classes/CylinderBuilder.uc | 0 .../Classes/DEditorFontParameterValue.uc | 0 .../UnrealEd/Classes/DEditorParameterValue.uc | 0 .../Classes/DEditorScalarParameterValue.uc | 0 ...EditorStaticComponentMaskParameterValue.uc | 0 .../DEditorStaticSwitchParameterValue.uc | 0 .../Classes/DEditorTextureParameterValue.uc | 0 .../Classes/DEditorVectorParameterValue.uc | 0 .../Classes/DefaultSizedThumbnailRenderer.uc | 0 .../Src/UnrealEd/Classes/EdModeComponent.uc | 0 .../Src/UnrealEd/Classes/EditorComponent.uc | 0 .../Src/UnrealEd/Classes/EditorEngine.uc | 0 .../UnrealEd/Classes/EditorUserSettings.uc | 0 .../UnrealEd/Classes/EditorViewportInput.uc | 0 .../Classes/FaceFXStudioSkelComponent.uc | 0 .../Src/UnrealEd/Classes/FbxImportUI.uc | 0 .../FindUnreferencedFunctionsCommandlet.uc | 0 .../Classes/FontThumbnailLabelRenderer.uc | 0 .../UnrealEd/Classes/FontThumbnailRenderer.uc | 0 .../FracturedStaticMeshLabelRenderer.uc | 0 .../Src/UnrealEd/Classes/GameStatsDatabase.uc | 0 .../Classes/GameStatsDatabaseVisitor.uc | 0 .../UnrealEd/Classes/GameStatsFileReader.uc | 0 .../Src/UnrealEd/Classes/GameStatsReport.uc | 0 .../UnrealEd/Classes/GameStatsVisitorImpl.uc | 0 .../UnrealEd/Classes/GameStatsVisualizer.uc | 0 .../UnrealEd/Classes/GenericBrowserType.uc | 0 .../Classes/GenericBrowserType_All.uc | 0 .../Classes/GenericBrowserType_AnimTree.uc | 0 .../Classes/GenericBrowserType_Animation.uc | 0 .../GenericBrowserType_ApexClothingAsset.uc | 0 ...enericBrowserType_ApexDestructibleAsset.uc | 0 ...erType_ApexDestructibleDamageParameters.uc | 0 .../GenericBrowserType_ApexGenericAsset.uc | 0 .../Classes/GenericBrowserType_Archetype.uc | 0 .../Classes/GenericBrowserType_CameraAnim.uc | 0 .../GenericBrowserType_CurveEdPresetCurve.uc | 0 .../Classes/GenericBrowserType_Custom.uc | 0 .../GenericBrowserType_DecalMaterial.uc | 0 .../GenericBrowserType_FaceFXAnimSet.uc | 0 .../Classes/GenericBrowserType_FaceFXAsset.uc | 0 .../Classes/GenericBrowserType_Font.uc | 0 .../GenericBrowserType_FractureMaterial.uc | 0 .../GenericBrowserType_FracturedStaticMesh.uc | 0 ...ricBrowserType_InstancedFoliageSettings.uc | 0 .../GenericBrowserType_LandscapeLayer.uc | 0 .../Classes/GenericBrowserType_LensFlare.uc | 0 .../Classes/GenericBrowserType_Material.uc | 0 .../GenericBrowserType_MaterialFunction.uc | 0 ...ricBrowserType_MaterialInstanceConstant.uc | 0 ...BrowserType_MaterialInstanceTimeVarying.uc | 0 .../GenericBrowserType_MorphTargetSet.uc | 0 .../GenericBrowserType_MorphWeightSequence.uc | 0 .../GenericBrowserType_ParticleSystem.uc | 0 .../GenericBrowserType_PhysXParticleSystem.uc | 0 .../GenericBrowserType_PhysicalMaterial.uc | 0 .../GenericBrowserType_PhysicsAsset.uc | 0 .../Classes/GenericBrowserType_PostProcess.uc | 0 .../Classes/GenericBrowserType_Prefab.uc | 0 .../GenericBrowserType_ProcBuildingRuleset.uc | 0 .../GenericBrowserType_RenderTexture.uc | 0 .../Classes/GenericBrowserType_Sequence.uc | 0 .../GenericBrowserType_SkeletalMesh.uc | 0 .../Classes/GenericBrowserType_SoundClass.uc | 0 .../Classes/GenericBrowserType_SoundCue.uc | 0 .../Classes/GenericBrowserType_SoundMode.uc | 0 .../Classes/GenericBrowserType_SoundWave.uc | 0 .../Classes/GenericBrowserType_Sounds.uc | 0 .../GenericBrowserType_SpeechRecognition.uc | 0 .../Classes/GenericBrowserType_SpeedTree.uc | 0 .../Classes/GenericBrowserType_StaticMesh.uc | 0 .../GenericBrowserType_TemplateMapMetadata.uc | 0 .../GenericBrowserType_TerrainLayer.uc | 0 .../GenericBrowserType_TerrainMaterial.uc | 0 .../Classes/GenericBrowserType_Texture.uc | 0 .../Classes/GenericBrowserType_TextureCube.uc | 0 .../GenericBrowserType_TextureMovie.uc | 0 .../Classes/GenericParamListVisualizer.uc | 0 .../Classes/GenericThumbnailLabelRenderer.uc | 0 .../Src/UnrealEd/Classes/GeomModifier.uc | 0 .../Src/UnrealEd/Classes/GeomModifier_Clip.uc | 0 .../UnrealEd/Classes/GeomModifier_Create.uc | 0 .../UnrealEd/Classes/GeomModifier_Delete.uc | 0 .../Src/UnrealEd/Classes/GeomModifier_Edit.uc | 0 .../UnrealEd/Classes/GeomModifier_Extrude.uc | 0 .../Src/UnrealEd/Classes/GeomModifier_Flip.uc | 0 .../UnrealEd/Classes/GeomModifier_Lathe.uc | 0 .../UnrealEd/Classes/GeomModifier_Optimize.uc | 0 .../Src/UnrealEd/Classes/GeomModifier_Pen.uc | 0 .../UnrealEd/Classes/GeomModifier_Split.uc | 0 .../Classes/GeomModifier_Triangulate.uc | 0 .../Src/UnrealEd/Classes/GeomModifier_Turn.uc | 0 .../Src/UnrealEd/Classes/GeomModifier_Weld.uc | 0 .../Src/UnrealEd/Classes/GroupActor.uc | 0 .../Src/UnrealEd/Classes/HeatmapVisualizer.uc | 0 .../UnrealEd/Classes/IconThumbnailRenderer.uc | 0 .../Src/UnrealEd/Classes/InterpEdOptions.uc | 0 .../Classes/InterpTrackAnimControlHelper.uc | 0 .../Classes/InterpTrackBoolPropHelper.uc | 0 .../Classes/InterpTrackColorPropHelper.uc | 0 .../Classes/InterpTrackDirectorHelper.uc | 0 .../Classes/InterpTrackEventHelper.uc | 0 .../Classes/InterpTrackFaceFXHelper.uc | 0 .../Classes/InterpTrackFloatPropHelper.uc | 0 .../Classes/InterpTrackHeadTrackingHelper.uc | 0 .../Src/UnrealEd/Classes/InterpTrackHelper.uc | 0 .../InterpTrackLinearColorPropHelper.uc | 0 .../Classes/InterpTrackNotifyHelper.uc | 0 .../InterpTrackParticleReplayHelper.uc | 0 .../Classes/InterpTrackSoundHelper.uc | 0 .../Classes/InterpTrackToggleHelper.uc | 0 .../Classes/InterpTrackVectorPropHelper.uc | 0 .../Classes/InterpTrackVisibilityHelper.uc | 0 .../Src/UnrealEd/Classes/KismetBindings.uc | 0 .../Classes/LandscapeLayerLabelRenderer.uc | 0 .../Classes/LensFlareEditorOptions.uc | 0 .../Classes/LensFlareEditorPropertyWrapper.uc | 0 .../Classes/LensFlarePreviewComponent.uc | 0 .../Classes/LensFlareThumbnailRenderer.uc | 0 .../Classes/LightingChannelsObject.uc | 0 .../Classes/LightmassOptionsObject.uc | 0 .../UnrealEd/Classes/LinearStairBuilder.uc | 0 .../Classes/MaterialEditorInstanceConstant.uc | 0 .../MaterialEditorInstanceTimeVarying.uc | 0 .../Classes/MaterialEditorMeshComponent.uc | 0 .../UnrealEd/Classes/MaterialEditorOptions.uc | 0 .../MaterialEditorSkeletalMeshComponent.uc | 0 .../Classes/MaterialFunctionLabelRenderer.uc | 0 .../Classes/MaterialInstanceLabelRenderer.uc | 0 .../MaterialInstanceThumbnailRenderer.uc | 0 .../Classes/MemCountThumbnailLabelRenderer.uc | 0 .../Classes/ParticleSystemLabelRenderer.uc | 0 .../ParticleSystemThumbnailRenderer.uc | 0 .../UnrealEd/Classes/PerformanceVisualizer.uc | 0 .../Src/UnrealEd/Classes/PhATSimOptions.uc | 0 .../Classes/PhATSkeletalMeshComponent.uc | 0 .../Classes/PhysicsAssetLabelRenderer.uc | 0 .../Classes/PlayerMovementVisualizer.uc | 0 .../Classes/PostProcessLabelRenderer.uc | 0 .../Classes/PrefabThumbnailRenderer.uc | 0 .../Src/UnrealEd/Classes/PreviewMaterial.uc | 0 .../UnrealEd/Classes/SequenceObjectHelper.uc | 0 .../Src/UnrealEd/Classes/SheetBuilder.uc | 0 .../Classes/SkeletalMeshLabelRenderer.uc | 0 .../Classes/SkeletalMeshThumbnailRenderer.uc | 0 .../UnrealEd/Classes/SoundLabelRenderer.uc | 0 .../Src/UnrealEd/Classes/SoundNodeHelper.uc | 0 .../UnrealEd/Classes/SpiralStairBuilder.uc | 0 .../Classes/StaticMeshLabelRenderer.uc | 0 .../Classes/StaticMeshMode_Options.uc | 0 .../Classes/StaticMeshThumbnailRenderer.uc | 0 .../TagSuboptimalTexturesCommandlet.uc | 0 .../UnrealEd/Classes/TemplateMapMetadata.uc | 0 .../UnrealEd/Classes/TerrainEditOptions.uc | 0 .../UnrealEd/Classes/TetrahedronBuilder.uc | 0 .../Classes/TextureCubeThumbnailRenderer.uc | 0 .../Classes/TextureThumbnailRenderer.uc | 0 .../Classes/ThumbnailLabelRenderer.uc | 0 .../Src/UnrealEd/Classes/ThumbnailManager.uc | 0 .../Src/UnrealEd/Classes/ThumbnailRenderer.uc | 0 .../Src/UnrealEd/Classes/UnrealEdEngine.uc | 0 .../UnrealEd/Classes/UnrealEdKeyBindings.uc | 0 .../Src/UnrealEd/Classes/UnrealEdOptions.uc | 0 .../Src/UnrealEd/Classes/UnrealEdTypes.uc | 0 .../Src/UnrealEd/Classes/VolumetricBuilder.uc | 0 .../Src/WinDrv/Classes/FacebookWindows.uc | 0 .../Src/WinDrv/Classes/HttpRequestWindows.uc | 0 .../WinDrv/Classes/HttpRequestWindowsMcp.uc | 0 .../Src/WinDrv/Classes/HttpResponseWindows.uc | 0 UDKGame/Config/DefaultEngine.ini | 2 +- 2356 files changed, 95350 insertions(+), 341 deletions(-) mode change 100755 => 100644 Development/Src/Core/Classes/Commandlet.uc mode change 100755 => 100644 Development/Src/Core/Classes/Component.uc mode change 100755 => 100644 Development/Src/Core/Classes/DistributionFloat.uc mode change 100755 => 100644 Development/Src/Core/Classes/DistributionVector.uc mode change 100755 => 100644 Development/Src/Core/Classes/Factory.uc mode change 100755 => 100644 Development/Src/Core/Classes/HelpCommandlet.uc mode change 100755 => 100644 Development/Src/Core/Classes/Interface.uc mode change 100755 => 100644 Development/Src/Core/Classes/Object.uc mode change 100755 => 100644 Development/Src/Core/Classes/Subsystem.uc mode change 100755 => 100644 Development/Src/Core/Globals.uci mode change 100755 => 100644 Development/Src/Engine/Classes/AICommandBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AIController.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AISwitchablePylon.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AccessControl.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Actor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactory.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryAI.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryAmbientSound.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryAmbientSoundMovable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryAmbientSoundNonLoop.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryAmbientSoundNonLoopingToggleable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryAmbientSoundSimple.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryAmbientSoundSimpleToggleable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryApexClothing.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryApexDestructible.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryArchetype.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryCoverLink.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryDecal.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryDecalMovable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryDominantDirectionalLight.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryDominantDirectionalLightMovable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryDynamicSM.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryEmitter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryFogVolumeConstantDensityInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryFogVolumeLinearHalfspaceDensityInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryFogVolumeSphericalDensityInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryFracturedStaticMesh.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryInteractiveFoliage.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryLensFlare.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryLight.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryMover.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryPathNode.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryPhysicsAsset.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryPlayerStart.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryPylon.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryRigidBody.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactorySkeletalMesh.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactorySkeletalMeshCinematic.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactorySkeletalMeshMAT.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryStaticMesh.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryTrigger.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ActorFactoryVehicle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Admin.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AdvancedReachSpec.uc delete mode 100755 Development/Src/Engine/Classes/AkBank.uc delete mode 100755 Development/Src/Engine/Classes/AkBaseSoundObject.uc delete mode 100755 Development/Src/Engine/Classes/AkEvent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AmbientOcclusionEffect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AmbientSound.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AmbientSoundMovable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AmbientSoundNonLoop.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AmbientSoundNonLoopingToggleable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AmbientSoundSimple.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AmbientSoundSimpleSpline.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AmbientSoundSimpleSplineNonLoop.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AmbientSoundSimpleToggleable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AmbientSoundSpline.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AmbientSoundSplineMultiCue.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnalyticEventsBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimMetaData.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimMetaData_SkelControl.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimMetaData_SkelControlKeyFrame.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNode.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeAdditiveBlending.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeAimOffset.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeBlend.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeBlendBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeBlendByBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeBlendByPhysics.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeBlendByPosture.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeBlendByProperty.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeBlendBySpeed.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeBlendDirectional.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeBlendList.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeBlendMultiBone.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeBlendPerBone.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeCrossfader.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeFrame.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeMirror.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodePlayCustomAnim.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeRandom.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeScalePlayRate.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeScaleRateBySpeed.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeSequence.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeSequenceBlendBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeSequenceBlendByAim.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeSlot.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNodeSynch.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNode_MultiBlendPerBone.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNotify.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNotify_CameraEffect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNotify_ClothingMaxDistanceScale.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNotify_Footstep.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNotify_Forcefield.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNotify_Kismet.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNotify_PawnMaterialParam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNotify_PlayFaceFxAnim.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNotify_PlayParticleEffect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNotify_Rumble.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNotify_Script.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNotify_Scripted.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNotify_Sound.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNotify_Trails.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimNotify_ViewShake.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimObject.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimSequence.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimSet.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimTree.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimationCompressionAlgorithm.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimationCompressionAlgorithm_Automatic.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimationCompressionAlgorithm_BitwiseCompressOnly.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimationCompressionAlgorithm_LeastDestructive.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimationCompressionAlgorithm_PerTrackCompression.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimationCompressionAlgorithm_RemoveEverySecondKey.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimationCompressionAlgorithm_RemoveLinearKeys.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimationCompressionAlgorithm_RemoveTrivialKeys.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AnimationCompressionAlgorithm_RevertToRaw.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ApexAsset.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ApexClothingAsset.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ApexComponentBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ApexDestructibleActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ApexDestructibleActorSpawnable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ApexDestructibleAsset.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ApexDestructibleDamageParameters.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ApexDynamicComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ApexGenericAsset.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ApexStaticComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ApexStaticDestructibleComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AppNotificationsBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ArrowComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AudioComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AudioDevice.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AutoLadder.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AutoNavMeshPathObstacleUnregister.uc mode change 100755 => 100644 Development/Src/Engine/Classes/AutoTestManager.uc mode change 100755 => 100644 Development/Src/Engine/Classes/BlockingVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/BlurEffect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/BookMark.uc mode change 100755 => 100644 Development/Src/Engine/Classes/BookMark2D.uc mode change 100755 => 100644 Development/Src/Engine/Classes/BroadcastHandler.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Brush.uc mode change 100755 => 100644 Development/Src/Engine/Classes/BrushComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/BrushShape.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Camera.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CameraActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CameraAnim.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CameraAnimInst.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CameraConeComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CameraModifier.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CameraModifier_CameraShake.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CameraShake.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Canvas.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CeilingReachSpec.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CheatManager.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ClipPadEntry.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CloudSaveSystem.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CloudSaveSystemDataBlobStoreInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CloudSaveSystemKVSInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CloudStorageBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CloudStorageBaseCloudSaveSystemKVS.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CloudStorageUpgradeHelper.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CodecMovie.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CodecMovieFallback.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ColorScaleVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Console.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Controller.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CoverGroup.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CoverGroupRenderingComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CoverLink.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CoverMeshComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CoverReplicator.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CoverSlipReachSpec.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CrowdAgentBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CrowdPopulationManagerBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CullDistanceVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CurveEdPresetCurve.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CustomPropertyItemHandler.uc mode change 100755 => 100644 Development/Src/Engine/Classes/CylinderComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DOFAndBloomEffect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DOFBloomMotionBlurEffect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DOFEffect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DamageType.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DataStoreClient.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DecalActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DecalActorBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DecalActorMovable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DecalComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DecalManager.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DecalMaterial.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DefaultPhysicsVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DirectionalLight.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DirectionalLightComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DirectionalLightToggleable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DistributionFloatConstant.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DistributionFloatConstantCurve.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DistributionFloatParameterBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DistributionFloatParticleParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DistributionFloatSoundParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DistributionFloatUniform.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DistributionFloatUniformCurve.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DistributionFloatUniformRange.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DistributionVectorConstant.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DistributionVectorConstantCurve.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DistributionVectorParameterBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DistributionVectorParticleParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DistributionVectorUniform.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DistributionVectorUniformCurve.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DistributionVectorUniformRange.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DmgType_Crushed.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DmgType_Fell.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DmgType_Suicided.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DmgType_Telefragged.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DominantDirectionalLight.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DominantDirectionalLightComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DominantDirectionalLightMovable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DominantPointLight.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DominantPointLightComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DominantSpotLight.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DominantSpotLightComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DoorMarker.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DownloadableContentEnumerator.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DownloadableContentManager.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DrawBoxComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DrawCapsuleComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DrawConeComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DrawCylinderComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DrawFrustumComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DrawLightConeComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DrawLightRadiusComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DrawPylonRadiusComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DrawQuadComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DrawSoundRadiusComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DrawSphereComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DroppedPickup.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DynamicAnchor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DynamicBlockingVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DynamicCameraActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DynamicLightEnvironmentComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DynamicPhysicsVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DynamicPylon.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DynamicSMActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DynamicSMActor_Spawnable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/DynamicTriggerVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/EdCoordSystem.uc mode change 100755 => 100644 Development/Src/Engine/Classes/EditorLinkSelectionInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Emitter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/EmitterCameraLensEffectBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/EmitterPool.uc mode change 100755 => 100644 Development/Src/Engine/Classes/EmitterSpawnable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Engine.uc mode change 100755 => 100644 Development/Src/Engine/Classes/EngineBaseTypes.uc mode change 100755 => 100644 Development/Src/Engine/Classes/EngineTypes.uc mode change 100755 => 100644 Development/Src/Engine/Classes/EnvironmentVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ExponentialHeightFog.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ExponentialHeightFogComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FaceFXAnimSet.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FaceFXAsset.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FacebookIntegration.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FailedConnect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FileLog.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FileWriter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FloorToCeilingReachSpec.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FluidInfluenceActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FluidInfluenceComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FluidSurfaceActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FluidSurfaceActorMovable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FluidSurfaceComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FogVolumeConeDensityComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FogVolumeConeDensityInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FogVolumeConstantDensityComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FogVolumeConstantDensityInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FogVolumeDensityComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FogVolumeDensityInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FogVolumeLinearHalfspaceDensityComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FogVolumeLinearHalfspaceDensityInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FogVolumeSphericalDensityComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FogVolumeSphericalDensityInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Font.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FontImportOptions.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ForceFeedbackManager.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ForceFeedbackWaveform.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ForceFieldShape.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ForceFieldShapeBox.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ForceFieldShapeCapsule.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ForceFieldShapeSphere.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ForcedLoopSoundNode.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ForcedReachSpec.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FractureManager.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FractureMaterial.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FracturedBaseComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FracturedSMActorSpawnable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FracturedSkinnedMeshComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FracturedStaticMeshActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FracturedStaticMeshActor_Spawnable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FracturedStaticMeshComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/FracturedStaticMeshPart.uc mode change 100755 => 100644 Development/Src/Engine/Classes/GameEngine.uc mode change 100755 => 100644 Development/Src/Engine/Classes/GameInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/GameMessage.uc mode change 100755 => 100644 Development/Src/Engine/Classes/GameReplicationInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/GameStats.uci mode change 100755 => 100644 Development/Src/Engine/Classes/GameUISceneClient.uc mode change 100755 => 100644 Development/Src/Engine/Classes/GameViewportClient.uc mode change 100755 => 100644 Development/Src/Engine/Classes/GameplayEvents.uc mode change 100755 => 100644 Development/Src/Engine/Classes/GameplayEventsHandler.uc mode change 100755 => 100644 Development/Src/Engine/Classes/GameplayEventsReader.uc mode change 100755 => 100644 Development/Src/Engine/Classes/GameplayEventsUploadAnalytics.uc mode change 100755 => 100644 Development/Src/Engine/Classes/GameplayEventsWriter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/GameplayEventsWriterBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/GeneratedMeshAreaLight.uc mode change 100755 => 100644 Development/Src/Engine/Classes/GenericParamListStatEntry.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Goal_AtActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Goal_Null.uc mode change 100755 => 100644 Development/Src/Engine/Classes/GravityVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/HUD.uc mode change 100755 => 100644 Development/Src/Engine/Classes/HeadTrackingComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/HeightFog.uc mode change 100755 => 100644 Development/Src/Engine/Classes/HeightFogComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/HttpBaseInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/HttpFactory.uc mode change 100755 => 100644 Development/Src/Engine/Classes/HttpRequestInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/HttpResponseInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/HttpStatusCodes.uci mode change 100755 => 100644 Development/Src/Engine/Classes/ImageBasedReflectionComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ImageReflection.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ImageReflectionComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ImageReflectionSceneCapture.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ImageReflectionShadowPlane.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ImageReflectionShadowPlaneComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InAppMessageBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InGameAdManager.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Info.uc mode change 100755 => 100644 Development/Src/Engine/Classes/IniLocPatcher.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Input.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InstancedFoliageActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InstancedFoliageSettings.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InstancedStaticMeshComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Interaction.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InteractiveFoliageActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InteractiveFoliageComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Interface_NavMeshPathObject.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Interface_NavMeshPathObstacle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Interface_NavMeshPathSwitch.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Interface_NavigationHandle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Interface_PylonGeometryProvider.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Interface_RVO.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Interface_Speaker.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpActor_ForCinematic.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpCurveEdSetup.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpData.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpFilter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpFilter_Classes.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpFilter_Custom.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpGroup.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpGroupAI.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpGroupCamera.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpGroupDirector.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpGroupInst.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpGroupInstAI.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpGroupInstCamera.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpGroupInstDirector.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrack.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackAnimControl.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackAudioMaster.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackBoolProp.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackColorProp.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackColorScale.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackDirector.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackEvent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackFaceFX.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackFade.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackFloatBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackFloatMaterialParam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackFloatParticleParam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackFloatProp.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackHeadTracking.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInst.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstAnimControl.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstAudioMaster.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstBoolProp.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstColorProp.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstColorScale.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstDirector.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstEvent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstFaceFX.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstFade.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstFloatMaterialParam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstFloatParticleParam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstFloatProp.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstHeadTracking.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstLinearColorProp.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstMorphWeight.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstMove.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstNotify.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstParticleReplay.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstProperty.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstSkelControlScale.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstSkelControlStrength.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstSlomo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstSound.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstToggle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstVectorMaterialParam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstVectorProp.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackInstVisibility.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackLinearColorBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackLinearColorProp.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackMorphWeight.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackMove.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackMoveAxis.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackNotify.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackParticleReplay.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackSkelControlScale.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackSkelControlStrength.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackSlomo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackSound.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackToggle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackVectorBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackVectorMaterialParam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackVectorProp.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InterpTrackVisibility.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Inventory.uc mode change 100755 => 100644 Development/Src/Engine/Classes/InventoryManager.uc mode change 100755 => 100644 Development/Src/Engine/Classes/JsonObject.uc mode change 100755 => 100644 Development/Src/Engine/Classes/KActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/KActorFromStatic.uc mode change 100755 => 100644 Development/Src/Engine/Classes/KActorSpawnable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/KAsset.uc mode change 100755 => 100644 Development/Src/Engine/Classes/KAssetSpawnable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/KMeshProps.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Keypoint.uc mode change 100755 => 100644 Development/Src/Engine/Classes/KillZDamageType.uc mode change 100755 => 100644 Development/Src/Engine/Classes/KismetBookMark.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Ladder.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LadderReachSpec.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LadderVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Landscape.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LandscapeComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LandscapeGizmoActiveActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LandscapeGizmoActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LandscapeGizmoRenderComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LandscapeHeightfieldCollisionComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LandscapeInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LandscapeLayerInfoObject.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LandscapeMaterialInstanceConstant.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LandscapeProxy.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LensFlare.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LensFlareComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LensFlareSource.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LevelGridVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LevelGridVolumeRenderingComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LevelStreaming.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LevelStreamingAlwaysLoaded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LevelStreamingDistance.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LevelStreamingKismet.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LevelStreamingPersistent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LevelStreamingVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LiftCenter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LiftExit.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Light.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LightComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LightEnvironmentComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LightFunction.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LightmappedSurfaceCollection.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LightmassCharacterIndirectDetailVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LightmassImportanceVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LightmassLevelSettings.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LightmassPrimitiveSettingsObject.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LineBatchComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LocalMessage.uc mode change 100755 => 100644 Development/Src/Engine/Classes/LocalPlayer.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MantleReachSpec.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MapInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MassiveLODOverrideVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Material.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialEffect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpression.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionAbs.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionActorWorldPosition.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionAdd.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionAntialiasedTextureMask.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionAppendVector.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionBumpOffset.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionCameraVector.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionCameraWorldPosition.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionCeil.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionClamp.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionComment.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionComponentMask.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionConstant.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionConstant2Vector.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionConstant3Vector.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionConstant4Vector.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionConstantBiasScale.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionConstantClamp.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionCosine.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionCrossProduct.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionCustom.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionCustomTexture.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionDepthBiasBlend.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionDepthBiasedAlpha.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionDepthBiasedBlend.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionDepthOfFieldFunction.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionDeriveNormalZ.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionDesaturation.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionDestColor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionDestDepth.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionDistance.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionDivide.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionDotProduct.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionDynamicParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionFlipBookSample.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionFloor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionFluidNormal.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionFmod.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionFoliageImpulseDirection.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionFoliageNormalizedRotationAxisAndAngle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionFontSample.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionFontSampleParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionFrac.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionFresnel.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionFunctionInput.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionFunctionOutput.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionIf.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionLandscapeLayerBlend.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionLensFlareIntensity.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionLensFlareOcclusion.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionLensFlareRadialDistance.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionLensFlareRayDistance.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionLensFlareSourceDistance.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionLightVector.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionLightmapUVs.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionLightmassReplace.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionLinearInterpolate.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionMaterialFunctionCall.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionMeshEmitterDynamicParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionMeshEmitterVertexColor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionMeshSubUV.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionMeshSubUVBlend.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionMultiply.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionNormalize.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionObjectOrientation.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionObjectRadius.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionObjectWorldPosition.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionOcclusionPercentage.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionOneMinus.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionPanner.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionParticleMacroUV.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionParticleSubUV.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionPerInstanceRandom.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionPixelDepth.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionPower.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionQualitySwitch.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionReflectionVector.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionRotateAboutAxis.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionRotator.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionScalarParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionSceneDepth.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionSceneTexture.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionScreenPosition.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionScreenSize.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionSine.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionSphereMask.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionSquareRoot.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionStaticBool.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionStaticBoolParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionStaticComponentMaskParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionStaticSwitch.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionStaticSwitchParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionSubtract.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTerrainLayerCoords.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTerrainLayerSwitch.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTerrainLayerWeight.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTexelSize.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTextureCoordinate.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTextureObject.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTextureObjectParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTextureSample.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameter2D.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterCube.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterFlipbook.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterMeshSubUV.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterMeshSubUVBlend.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterMovie.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterNormal.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterSubUV.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTime.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTransform.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTransformPosition.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionTwoSidedSign.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionVectorParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionVertexColor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionWindDirectionAndSpeed.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionWorldNormal.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialExpressionWorldPosition.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialFunction.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialInstance.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialInstanceActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialInstanceConstant.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialInstanceTimeVarying.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialInstanceTimeVaryingActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MaterialInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MatineeActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MatineePawn.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MeshComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MeshComponentFactory.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MicroTransactionBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ModelComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MorphNodeBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MorphNodeMultiPose.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MorphNodePose.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MorphNodeWeight.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MorphNodeWeightBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MorphNodeWeightByBoneAngle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MorphNodeWeightByBoneRotation.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MorphTarget.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MorphTargetSet.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MorphWeightSequence.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MotionBlurEffect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MultiCueSplineAudioComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MultiFont.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MultiProviderAnalytics.uc mode change 100755 => 100644 Development/Src/Engine/Classes/MusicTrackDataStructures.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Mutator.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshBoundsVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshGoalFilter_MinPathDistance.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshGoalFilter_NotNearOtherAI.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshGoalFilter_OutOfViewFrom.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshGoalFilter_OutsideOfDotProductWedge.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshGoalFilter_PolyEncompassesAI.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshGoal_At.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshGoal_ClosestActorInList.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshGoal_Filter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshGoal_GenericFilterContainer.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshGoal_Null.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshGoal_PolyEncompassesAI.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshGoal_Random.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshGoal_WithinDistanceEnvelope.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshObstacle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshPathConstraint.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshPathGoalEvaluator.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshPath_AlongLine.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshPath_EnforceTwoWayEdges.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshPath_MinDistBetweenSpecsOfType.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshPath_SameCoverLink.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshPath_Toward.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshPath_WithinDistanceEnvelope.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshPath_WithinTraversalDist.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavMeshRenderingComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavigationHandle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NavigationPoint.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Note.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxCylindricalForceField.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxCylindricalForceFieldCapsule.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxForceField.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxForceFieldComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxForceFieldCylindricalComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxForceFieldGeneric.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxForceFieldGenericComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxForceFieldRadial.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxForceFieldRadialComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxForceFieldSpawnable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxForceFieldTornado.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxForceFieldTornadoComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxGenericForceField.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxGenericForceFieldBox.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxGenericForceFieldBrush.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxGenericForceFieldCapsule.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxRadialCustomForceField.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxRadialForceField.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxTornadoAngularForceField.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxTornadoAngularForceFieldCapsule.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxTornadoForceField.uc mode change 100755 => 100644 Development/Src/Engine/Classes/NxTornadoForceFieldCapsule.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ObjectReferencer.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineAccountInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineAuthInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineCommunityContentInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineContentInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineEventsInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineGameInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineGameSearch.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineGameSettings.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineMatchmakingStats.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineNewsInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlinePartyChatInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlinePlayerInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlinePlayerInterfaceEx.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlinePlayerStorage.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlinePlaylistGameTypeProvider.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineProfileSettings.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineRecentPlayersList.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineSocialInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineStats.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineStatsInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineStatsRead.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineStatsWrite.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineSubsystem.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineSuppliedUIInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineSystemInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineTitleFileCacheInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineTitleFileInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/OnlineVoiceInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeAlternate.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeComment.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeCorner.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeCycle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeEdgeAngle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeEdgeMesh.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeExtractTopBottom.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeLODQuad.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeMesh.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeOcclusion.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeQuad.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeRandom.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeRepeat.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeSize.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeSplit.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeSubRuleset.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeTransform.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeVariation.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PBRuleNodeWindowWall.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleEmitter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleEventManager.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleLODLevel.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleLightEnvironmentComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModule.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleAcceleration.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleAccelerationBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleAccelerationOverLifetime.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleAttractorBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleAttractorBoneSocket.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleAttractorLine.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleAttractorParticle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleAttractorPoint.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleAttractorSkelVertSurface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleBeamBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleBeamModifier.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleBeamNoise.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleBeamSource.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleBeamTarget.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleCameraBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleCameraOffset.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleCollision.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleCollisionActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleCollisionBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleColor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleColorBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleColorByParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleColorOverLife.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleColorScaleOverDensity.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleColorScaleOverLife.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleColor_Seeded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleEventBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleEventGenerator.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleEventReceiverBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleEventReceiverKillParticles.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleEventReceiverSpawn.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleEventSendToGame.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleKillBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleKillBox.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleKillHeight.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLifetime.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLifetimeBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLifetime_Seeded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocation.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocationBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocationBoneSocket.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocationDirect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocationEmitter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocationEmitterDirect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocationPrimitiveBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocationPrimitiveCylinder.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocationPrimitiveCylinder_Seeded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocationPrimitiveSphere.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocationPrimitiveSphere_Seeded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocationSkelVertSurface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocationStaticVertSurface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocationWorldOffset.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocationWorldOffset_Seeded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleLocation_Seeded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleMaterialBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleMaterialByParameter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleMeshMaterial.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleMeshRotation.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleMeshRotationRate.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleMeshRotationRateMultiplyLife.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleMeshRotationRateOverLife.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleMeshRotationRate_Seeded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleMeshRotation_Seeded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleOrbit.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleOrbitBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleOrientationAxisLock.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleOrientationBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleParameterBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleParameterDynamic.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleParameterDynamic_Seeded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModulePhysicsVolumes.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleRequired.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleRotation.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleRotationBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleRotationOverLifetime.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleRotationRate.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleRotationRateBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleRotationRateMultiplyLife.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleRotationRate_Seeded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleRotation_Seeded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSize.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSizeBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSizeMultiplyLife.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSizeMultiplyVelocity.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSizeScale.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSizeScaleByTime.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSizeScaleOverDensity.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSize_Seeded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSourceMovement.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSpawn.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSpawnBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSpawnPerUnit.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleStoreSpawnTime.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleStoreSpawnTimeBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSubUV.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSubUVBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSubUVDirect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSubUVMovie.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleSubUVSelect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleTrailBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleTrailSource.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleTrailSpawn.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleTrailTaper.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleTypeDataAnimTrail.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleTypeDataApex.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleTypeDataBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleTypeDataBeam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleTypeDataBeam2.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleTypeDataMesh.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleTypeDataMeshPhysX.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleTypeDataPhysX.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleTypeDataRibbon.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleTypeDataTrail.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleTypeDataTrail2.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleUberBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleUberLTISIVCL.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleUberLTISIVCLIL.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleUberLTISIVCLILIRSSBLIRR.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleUberRainDrops.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleUberRainImpacts.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleUberRainSplashA.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleUberRainSplashB.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleVelocity.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleVelocityBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleVelocityCone.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleVelocityInheritParent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleVelocityOverLifetime.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleVelocity_Seeded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleWorldAttractor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleModuleWorldForcesBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleSpriteEmitter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleSystem.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleSystemComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ParticleSystemReplay.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PathBlockingVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PathConstraint.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PathGoalEvaluator.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PathNode.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PathNode_Dynamic.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PathRenderingComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PathTargetPoint.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Path_AlongLine.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Path_AvoidInEscapableNodes.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Path_MinDistBetweenSpecsOfType.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Path_TowardGoal.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Path_TowardPoint.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Path_WithinDistanceEnvelope.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Path_WithinTraversalDist.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Pawn.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PhysXParticleSystem.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PhysicalMaterial.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PhysicalMaterialPropertyBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PhysicsAsset.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PhysicsAssetInstance.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PhysicsLODVerticalEmitter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PhysicsVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PickupFactory.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PixelFormatEnum.uci mode change 100755 => 100644 Development/Src/Engine/Classes/PlatformInterfaceBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PlatformInterfaceWebResponse.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Player.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PlayerController.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PlayerInput.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PlayerManagerInteraction.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PlayerReplicationInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PlayerStart.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PointLight.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PointLightComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PointLightMovable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PointLightToggleable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PortalMarker.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PortalTeleporter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PortalVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PostProcessChain.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PostProcessEffect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PostProcessVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PotentialClimbWatcher.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PrecomputedVisibilityOverrideVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PrecomputedVisibilityVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Prefab.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PrefabInstance.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PrefabSequence.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PrefabSequenceContainer.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PrimitiveComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PrimitiveComponentFactory.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ProcBuilding.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ProcBuildingRuleset.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ProcBuilding_SimpleLODActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Projectile.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ProscribedReachSpec.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Pylon.uc mode change 100755 => 100644 Development/Src/Engine/Classes/PylonSeed.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_BSJointActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_BSJointSetup.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_BodyInstance.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_BodySetup.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_ConstraintActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_ConstraintActorSpawnable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_ConstraintDrawComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_ConstraintInstance.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_ConstraintSetup.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_CylindricalForceActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_DistanceJointSetup.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_ForceFieldExcludeVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_Handle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_HingeActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_HingeSetup.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_LineImpulseActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_PrismaticActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_PrismaticSetup.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_PulleyJointActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_PulleyJointSetup.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_RadialForceActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_RadialImpulseActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_RadialImpulseComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_SkelJointSetup.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_Spring.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_StayUprightSetup.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RB_Thruster.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RadialBlurActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RadialBlurComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ReachSpec.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ReplicationInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ReverbVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ReverbVolumeToggleable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RigidBodyBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Route.uc mode change 100755 => 100644 Development/Src/Engine/Classes/RouteRenderingComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SVehicle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SVehicleSimBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SVehicleSimCar.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SVehicleSimTank.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SVehicleWheel.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SaveGameSummary.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SavedMove.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Scene.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SceneCapture2DActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SceneCapture2DComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SceneCapture2DHitMaskComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SceneCaptureActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SceneCaptureComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SceneCaptureCubeMapActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SceneCaptureCubeMapComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SceneCapturePortalActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SceneCapturePortalComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SceneCaptureReflectActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SceneCaptureReflectComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Scout.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ScriptViewportClient.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ScriptedTexture.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_AIAbortMoveToActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_AIMoveToActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_AccessObjectList.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ActivateRemoteEvent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ActorFactory.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ActorFactoryEx.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_AddFloat.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_AddInt.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_AddRemoveFaceFXAnimSet.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_AndGate.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ApplySoundNode.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_AssignController.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_AttachToActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_AttachToEvent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_CameraFade.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_CameraLookAt.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_CameraShake.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_CastToFloat.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_CastToInt.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ChangeCollision.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_CommitMapChange.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ConsoleCommand.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ControlMovieTexture.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ConvertToString.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_Delay.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_DelaySwitch.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_Destroy.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_DivideFloat.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_DivideInt.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_DrawText.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_FeatureTest.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_FinishSequence.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_FlyThroughHasEnded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ForceFeedback.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ForceGarbageCollection.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_Gate.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_GetDistance.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_GetLocationAndRotation.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_GetProperty.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_GetVectorComponents.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_GetVelocity.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_GiveInventory.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_HeadTrackingControl.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_Interp.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_IsInObjectList.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_Latent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_LevelStreaming.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_LevelStreamingBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_LevelVisibility.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_Log.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_MITV_Activate.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ModifyCover.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ModifyHealth.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ModifyObjectList.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_MultiLevelStreaming.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_MultiplyFloat.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_MultiplyInt.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ParticleEventGenerator.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_PlayCameraAnim.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_PlayFaceFXAnim.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_PlayMusicTrack.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_PlaySound.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_Possess.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_PrepareMapChange.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ProjectileFactory.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_RandomSwitch.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_RangeSwitch.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetActiveAnimChild.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetApexClothingParam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetBlockRigidBody.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetBool.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetCameraTarget.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetDOFParams.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetDamageInstigator.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetFloat.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetInt.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetLocation.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetMatInstScalarParam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetMatInstTexParam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetMatInstVectorParam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetMaterial.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetMesh.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetMotionBlurParams.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetObject.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetParticleSysParam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetPhysics.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetRigidBodyIgnoreVehicles.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetSequenceVariable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetSkelControlTarget.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetSoundMode.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetString.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetVector.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetVectorComponents.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetVelocity.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SetWorldAttractorParam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_StreamInTextures.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SubtractFloat.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_SubtractInt.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_Switch.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_Teleport.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_Timer.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_Toggle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ToggleAffectedByHitEffects.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ToggleCinematicMode.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ToggleConstraintDrive.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ToggleGodMode.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ToggleHUD.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ToggleHidden.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_ToggleInput.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_Trace.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_UpdatePhysBonesFromAnim.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqAct_WaitForLevelsVisible.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_CompareBool.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_CompareFloat.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_CompareInt.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_CompareObject.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_GetServerType.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_Increment.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_IncrementFloat.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_IsAlive.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_IsBenchmarking.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_IsConsole.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_IsInCombat.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_IsLoggedIn.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_IsPIE.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_IsSameTeam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_MatureLanguage.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_ShowGore.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_SwitchBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_SwitchClass.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_SwitchObject.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqCond_SwitchPlatform.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_AIReachedRouteActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_AISeeEnemy.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_AnalogInput.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_AnimNotify.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_Console.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_ConstraintBroken.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_Death.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_Destroyed.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_GetInventory.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_HitWall.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_Input.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_LOS.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_LevelBeginning.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_LevelLoaded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_LevelStartup.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_MobileTouch.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_Mover.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_ParticleEvent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_PickupStatusChange.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_PlayerSpawned.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_ProjectileLanded.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_RemoteEvent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_RigidBodyCollision.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_SeeDeath.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_SequenceActivated.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_TakeDamage.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_Touch.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_TouchInput.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqEvent_Used.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_Bool.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_Byte.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_Character.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_External.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_Float.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_Group.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_Int.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_Name.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_Named.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_Object.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_ObjectList.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_ObjectVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_Player.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_RandomFloat.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_RandomInt.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_String.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_Union.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SeqVar_Vector.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Sequence.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SequenceAction.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SequenceCondition.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SequenceEvent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SequenceFrame.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SequenceFrameWrapped.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SequenceObject.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SequenceOp.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SequenceVariable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Settings.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ShadowMap2D.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ShadowMapTexture2D.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SharedCloudFileInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SimpleSplineAudioComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SimpleSplineNonLoopAudioComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkelControlBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkelControlFootPlacement.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkelControlHandlebars.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkelControlLimb.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkelControlLookAt.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkelControlSingleBone.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkelControlSpline.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkelControlTrail.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkelControlWheel.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkelControl_CCD_IK.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkelControl_Multiply.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkelControl_TwistBone.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkeletalMesh.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkeletalMeshActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkeletalMeshActorBasedOnExtremeContent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkeletalMeshActorMAT.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkeletalMeshActorMATSpawnable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkeletalMeshActorMATWalkable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkeletalMeshActorSpawnable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkeletalMeshCinematicActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkeletalMeshComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkeletalMeshSocket.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkyLight.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkyLightComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SkyLightToggleable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SlotToSlotReachSpec.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundClass.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundCue.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundMode.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNode.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeAmbient.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeAmbientNonLoop.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeAmbientNonLoopToggle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeAttenuation.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeAttenuationAndGain.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeConcatenator.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeConcatenatorRadio.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeDelay.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeDistanceCrossFade.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeDoppler.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeEnveloper.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeLooping.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeMature.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeMixer.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeModulator.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeModulatorContinuous.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeOscillator.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeRandom.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeWave.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeWaveParam.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SoundNodeWaveStreaming.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SpeechRecognition.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SpeedTree.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SpeedTreeActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SpeedTreeActorFactory.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SpeedTreeComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SpeedTreeComponentFactory.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SphericalHarmonicLightComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SplineActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SplineAudioComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SplineComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SplineComponentSimplified.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SplineLoftActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SplineLoftActorMovable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SplineMeshComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SpotLight.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SpotLightComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SpotLightMovable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SpotLightToggleable.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SpriteComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/StaticLightCollectionActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/StaticMeshActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/StaticMeshActorBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/StaticMeshActorBasedOnExtremeContent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/StaticMeshCollectionActor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/StaticMeshComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/StaticMeshComponentFactory.uc mode change 100755 => 100644 Development/Src/Engine/Classes/StringsTag.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Surface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/SwatTurnReachSpec.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TargetPoint.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TeamInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TeleportReachSpec.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Teleporter.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Terrain.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TerrainComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TerrainLayerSetup.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TerrainMaterial.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TerrainWeightMapTexture.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TestSplittingVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Texture.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Texture2D.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Texture2DComposite.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Texture2DDynamic.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TextureCube.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TextureFlipBook.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TextureMovie.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TextureRenderTarget.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TextureRenderTarget2D.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TextureRenderTargetCube.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TranslationContext.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TranslatorTag.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Trigger.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TriggerStreamingLevel.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TriggerVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Trigger_Dynamic.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Trigger_LOS.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Trigger_PawnsOnly.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TriggeredPath.uc mode change 100755 => 100644 Development/Src/Engine/Classes/TwitterIntegrationBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UICharacterSummary.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataProvider.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataProvider_MenuItem.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataProvider_OnlineFriendMessages.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataProvider_OnlineFriends.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataProvider_OnlinePartyChatList.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataProvider_OnlinePlayerDataBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataProvider_OnlinePlayerStorage.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataProvider_OnlinePlayerStorageArray.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataProvider_OnlineProfileSettings.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataProvider_PlayerAchievements.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataProvider_Settings.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataProvider_SettingsArray.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStorePublisher.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStoreSubscriber.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore_DynamicResource.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore_Fonts.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore_GameResource.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore_GameState.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore_InputAlias.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore_MenuItems.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore_OnlineGameSearch.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore_OnlineGameSettings.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore_OnlinePlayerData.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore_OnlineStats.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore_Registry.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore_Remote.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore_Settings.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore_StringAliasMap.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDataStore_StringBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIDev.uci mode change 100755 => 100644 Development/Src/Engine/Classes/UIGameInfoSummary.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIInteraction.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIManager.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIMapSummary.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIPropertyDataProvider.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIResourceCombinationProvider.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIResourceDataProvider.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIRoot.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UISceneClient.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UISoundTheme.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UIWeaponSummary.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UberPostProcessEffect.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UserCloudFileCloudSaveSystemDataBlobStore.uc mode change 100755 => 100644 Development/Src/Engine/Classes/UserCloudFileInterface.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Vehicle.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Volume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/VolumePathNode.uc mode change 100755 => 100644 Development/Src/Engine/Classes/VolumeTimer.uc mode change 100755 => 100644 Development/Src/Engine/Classes/WallTransReachSpec.uc mode change 100755 => 100644 Development/Src/Engine/Classes/WaterVolume.uc mode change 100755 => 100644 Development/Src/Engine/Classes/WaveFormBase.uc mode change 100755 => 100644 Development/Src/Engine/Classes/Weapon.uc mode change 100755 => 100644 Development/Src/Engine/Classes/WindDirectionalSource.uc mode change 100755 => 100644 Development/Src/Engine/Classes/WindDirectionalSourceComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/WindPointSource.uc mode change 100755 => 100644 Development/Src/Engine/Classes/WindPointSourceComponent.uc mode change 100755 => 100644 Development/Src/Engine/Classes/WorldAttractor.uc mode change 100755 => 100644 Development/Src/Engine/Classes/WorldInfo.uc mode change 100755 => 100644 Development/Src/Engine/Classes/ZoneInfo.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/FlashMovie.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/GFxAction_CloseMovie.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/GFxAction_GetVariable.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/GFxAction_Invoke.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/GFxAction_OpenMovie.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/GFxAction_SetCaptureKeys.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/GFxAction_SetVariable.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/GFxClikWidget.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/GFxEngine.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/GFxEvent_FsCommand.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/GFxFSCmdHandler.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/GFxFSCmdHandler_Kismet.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/GFxInteraction.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/GFxMoviePlayer.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/GFxObject.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/GFxRawData.uc mode change 100755 => 100644 Development/Src/GFxUI/Classes/SwfMovie.uc mode change 100755 => 100644 Development/Src/GFxUIEditor/Classes/GFxImportCommandlet.uc mode change 100755 => 100644 Development/Src/GFxUIEditor/Classes/GFxMovieFactory.uc mode change 100755 => 100644 Development/Src/GFxUIEditor/Classes/GFxReimportCommandlet.uc mode change 100755 => 100644 Development/Src/GFxUIEditor/Classes/GenericBrowserType_GFxMovie.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/DebugCameraController.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/DebugCameraHUD.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/DebugCameraInput.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/DynamicGameCrowdDestination.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/DynamicSpriteComponent.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/FrameworkGame.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameAICmd_Hover_MoveToGoal.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameAICmd_Hover_MoveToGoal_Mesh.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameAICommand.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameAIController.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCameraBase.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCameraBlockingVolume.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCheatManager.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdAgent.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdAgentBehavior.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdAgentSM.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdAgentSkeletal.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdBehaviorPoint.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdBehavior_PlayAnimation.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdBehavior_RunFromPanic.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdBehavior_WaitForGroup.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdBehavior_WaitInQueue.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdDestination.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdDestinationQueuePoint.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdGroup.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdInfoVolume.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdInteractionDestination.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdInteractionPoint.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdPopulationManager.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdReplicationActor.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdSpawnInterface.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdSpawnRelativeActor.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowdSpawnerInterface.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameCrowd_ListOfAgents.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameDestinationConnRenderingComponent.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameExplosion.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameExplosionActor.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameExplosionContent.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameFixedCamera.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameKActorSpawnableEffect.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GamePawn.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GamePlayerCamera.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GamePlayerController.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameSkelCtrl_Recoil.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameSpecialMove.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameStateObject.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameStatsAggregator.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameThirdPersonCamera.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameThirdPersonCameraMode.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameThirdPersonCameraMode_Default.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameTypes.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/GameWaveForms.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileDebugCameraController.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileDebugCameraHUD.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileDebugCameraInput.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileHUD.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileInputZone.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileMenuBar.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileMenuBarItem.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileMenuButton.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileMenuElement.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileMenuGame.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileMenuImage.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileMenuInventory.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileMenuLabel.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileMenuList.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileMenuListItem.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileMenuObject.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileMenuObjectProxy.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileMenuPlayerController.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileMenuScene.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobilePlayerInput.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileSecondaryViewportClient.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/MobileTouchInputVolume.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/NavMeshGoal_OutOfViewFrom.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/NavMeshPath_BiasAgainstPolysWithinDistanceOfLocations.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/PMESTG_LeaveADecalBase.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/PlayerCollectorGame.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SecondaryViewportClient.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqAct_ControlGameMovie.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqAct_Deproject.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqAct_GameCrowdPopulationManagerToggle.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqAct_GameCrowdSpawner.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqAct_MobileAddInputZones.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqAct_MobileClearInputZones.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqAct_MobileRemoveInputZone.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqAct_MobileSaveLoadValue.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqAct_ModifyProperty.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqAct_PlayAgentAnimation.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqAct_ToggleMouseCursor.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqEvent_CrowdAgentReachedDestination.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqEvent_HudRender.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqEvent_HudRenderImage.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqEvent_HudRenderText.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqEvent_MobileBase.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqEvent_MobileButton.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqEvent_MobileInput.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqEvent_MobileLook.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqEvent_MobileMotion.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqEvent_MobileObjectPicker.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqEvent_MobileRawInput.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqEvent_MobileSwipe.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqEvent_MobileTouchInputVolume.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/SeqEvent_MobileZoneBase.uc mode change 100755 => 100644 Development/Src/GameFramework/Classes/TouchableElement3D.uc mode change 100755 => 100644 Development/Src/GameFramework/Globals.uci mode change 100755 => 100644 Development/Src/IpDrv/Classes/ClientBeaconAddressResolver.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/HelloWeb.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/ImageServer.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/InternetLink.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/MCPBase.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpClashMobBase.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpClashMobFileDownload.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpClashMobManager.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpGroupsBase.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpGroupsManager.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpIdMappingBase.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpIdMappingManager.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpManagedValueManager.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpManagedValueManagerBase.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpMessageBase.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpMessageManager.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpServerTimeBase.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpServerTimeManager.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpServiceBase.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpServiceConfig.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpUserCloudFileDownload.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpUserInventoryBase.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpUserInventoryManager.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpUserManager.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/McpUserManagerBase.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/MeshBeacon.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/MeshBeaconClient.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/MeshBeaconHost.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/OnlineAuthInterfaceImpl.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/OnlineEventsInterfaceMcp.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/OnlineGameInterfaceImpl.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/OnlineImageDownloaderWeb.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/OnlineNewsInterfaceMcp.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/OnlinePlaylistManager.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/OnlinePlaylistProvider.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/OnlineSubsystemCommonImpl.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/OnlineTitleFileDownloadBase.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/OnlineTitleFileDownloadMcp.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/OnlineTitleFileDownloadWeb.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/PartyBeacon.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/PartyBeaconClient.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/PartyBeaconHost.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/TcpLink.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/TitleFileDownloadCache.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/UIDataStore_OnlinePlaylists.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/WebApplication.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/WebConnection.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/WebRequest.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/WebResponse.uc mode change 100755 => 100644 Development/Src/IpDrv/Classes/WebServer.uc create mode 100644 Development/Src/MyMod/Classes/DO_NOT_DELETE.TXT mode change 100755 => 100644 Development/Src/OnlineSubsystemGameCenter/Classes/OnlineSubsystemGameCenter.uc mode change 100755 => 100644 Development/Src/OnlineSubsystemGameCenter/Classes/OnlineSuppliedUIGameCenter.uc mode change 100755 => 100644 Development/Src/OnlineSubsystemPC/Classes/OnlineSubsystemPC.uc mode change 100755 => 100644 Development/Src/OnlineSubsystemSteamworks/Classes/OnlineAuthInterfaceSteamworks.uc mode change 100755 => 100644 Development/Src/OnlineSubsystemSteamworks/Classes/OnlineGameInterfaceSteamworks.uc mode change 100755 => 100644 Development/Src/OnlineSubsystemSteamworks/Classes/OnlineLobbyInterfaceSteamworks.uc mode change 100755 => 100644 Development/Src/OnlineSubsystemSteamworks/Classes/OnlineSubsystemSteamworks.uc mode change 100755 => 100644 Development/Src/OnlineSubsystemSteamworks/Globals.uci mode change 100755 => 100644 Development/Src/SubstanceAir/Classes/InterpTrackInstSubstanceInput.uc mode change 100755 => 100644 Development/Src/SubstanceAir/Classes/InterpTrackSubstanceInput.uc mode change 100755 => 100644 Development/Src/SubstanceAir/Classes/SeqAct_SubstanceRender.uc mode change 100755 => 100644 Development/Src/SubstanceAir/Classes/SeqAct_SubstanceSetInputFloat.uc mode change 100755 => 100644 Development/Src/SubstanceAir/Classes/SeqAct_SubstanceSetInputImg.uc mode change 100755 => 100644 Development/Src/SubstanceAir/Classes/SeqAct_SubstanceSetInputInt.uc mode change 100755 => 100644 Development/Src/SubstanceAir/Classes/SubstanceAirGraphActor.uc mode change 100755 => 100644 Development/Src/SubstanceAir/Classes/SubstanceAirGraphInstance.uc mode change 100755 => 100644 Development/Src/SubstanceAir/Classes/SubstanceAirImageInput.uc mode change 100755 => 100644 Development/Src/SubstanceAir/Classes/SubstanceAirInstanceFactory.uc mode change 100755 => 100644 Development/Src/SubstanceAir/Classes/SubstanceAirTexture2D.uc mode change 100755 => 100644 Development/Src/SubstanceAirEd/Classes/GenericBrowserType_SubstanceAirGraphInstance.uc mode change 100755 => 100644 Development/Src/SubstanceAirEd/Classes/GenericBrowserType_SubstanceAirImageInput.uc mode change 100755 => 100644 Development/Src/SubstanceAirEd/Classes/GenericBrowserType_SubstanceAirInstanceFactory.uc mode change 100755 => 100644 Development/Src/SubstanceAirEd/Classes/GenericBrowserType_SubstanceAirTexture2D.uc mode change 100755 => 100644 Development/Src/SubstanceAirEd/Classes/ImageInputThumbnailRenderer.uc delete mode 100644 Development/Src/TestPackage/Classes/Test2.uc delete mode 100644 Development/Src/TestPackage/Classes/TestPackage.uc delete mode 100644 Development/Src/TestPackage/Classes/TgObject.uc delete mode 100644 Development/Src/TestPackage/Classes/TgSpectatorController.uc create mode 100644 Development/Src/UDKBase/classes/CastleGame.uc create mode 100644 Development/Src/UDKBase/classes/CastlePC.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/CloudGame.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/CloudHUD.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/CloudMenuMicroTrans.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/CloudPC.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/CloudSaveData.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/MobileGameCrowdAgent.uc create mode 100644 Development/Src/UDKBase/classes/MobileHUDExt.uc create mode 100644 Development/Src/UDKBase/classes/MobileMenuBase.uc create mode 100644 Development/Src/UDKBase/classes/MobileMenuControls.uc create mode 100644 Development/Src/UDKBase/classes/MobileMenuDebug.uc create mode 100644 Development/Src/UDKBase/classes/MobileMenuPause.uc create mode 100644 Development/Src/UDKBase/classes/MobileMenuSplash.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/MobilePlaceablePawn.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/MobileProjectile.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/ParticleModuleTypeDataSnow.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/SeqAct_MobileCrowdSpawner.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/SimpleGame.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/SimplePC.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/SimplePawn.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAIDecisionComponent.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendBase.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendByDriving.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendByFall.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendByFlying.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendByHoverJump.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendByHoverboardTilt.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendByHoverboardTurn.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendByHoverboarding.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendByIdle.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendByPhysics.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendByPhysicsVolume.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendByPosture.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendBySlotActive.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendBySpeed.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendByTurnInPlace.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendByVehicle.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendByWeapType.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimBlendByWeapon.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimNodeCopyBoneTranslation.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimNodeFramePlayer.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimNodeJumpLeanOffset.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimNodeSeqWeap.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimNodeSequence.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKAnimNodeSequenceByBoneRotation.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKBot.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKCarriedObject.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKDataStore_GameSearchBase.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKEmitCameraEffect.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKEmitterPool.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKExplosionLight.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKForcedDirectionVolume.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKGame.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKGameInteraction.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKGameObjective.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKGameSettingsCommon.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKGameViewportClient.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKHUD.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKJumpPad.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKJumpPadReachspec.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKKActorBreakable.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKMapInfo.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKMapMusicInfo.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKMobileInputZone.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKParticleSystemComponent.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKPawn.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKPickupFactory.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKPlayerController.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKPlayerInput.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKProfileSettings.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKProjectile.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKScout.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKScriptedNavigationPoint.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_CantileverBeam.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_Damage.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_DamageHinge.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_DamageSpring.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_HoverboardSuspension.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_HoverboardSwing.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_HoverboardVibration.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_HugGround.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_LockRotation.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_LookAt.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_MassBoneScaling.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_PropellerBlade.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_Rotate.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_SpinControl.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_TurretConstrained.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkelControl_VehicleFlap.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSkeletalMeshComponent.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKSquadAI.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKTeamOwnedInfo.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKTeamPlayerStart.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKTeleporterBase.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKTrajectoryReachspec.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKUIDataProvider_MapInfo.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKUIDataProvider_MenuOption.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKUIDataProvider_SearchResult.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKUIDataProvider_ServerDetails.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKUIDataProvider_SimpleElementProvider.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKUIDataProvider_StringArray.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKUIDataStore_MenuItems.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKUIDataStore_Options.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKUIDataStore_StringAliasBindingMap.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKUIDataStore_StringAliasMap.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKUIDataStore_StringList.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKUIResourceDataProvider.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKVehicle.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKVehicleBase.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKVehicleFactory.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKVehicleMovementEffect.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKVehicleSimCar.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKVehicleSimChopper.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKVehicleSimHover.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKVehicleSimHoverboard.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKVehicleWheel.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKWeapon.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKWeaponPawn.uc mode change 100755 => 100644 Development/Src/UDKBase/classes/UDKWeaponShield.uc create mode 100644 Development/Src/UTEditor/Classes/GenericBrowserType_UTMapMusicInfo.uc delete mode 100644 Development/Src/UTEditor/Classes/UTEditor.uc create mode 100644 Development/Src/UTEditor/Classes/UTUnrealEdEngine.uc create mode 100644 Development/Src/UTGame/Classes/DemoRecSpectator.uc create mode 100644 Development/Src/UTGame/Classes/ForcedDirVolume.uc create mode 100644 Development/Src/UTGame/Classes/GFxMinimap.uc create mode 100644 Development/Src/UTGame/Classes/GFxMinimapHud.uc create mode 100644 Development/Src/UTGame/Classes/GFxProjectedUI.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_Dialog.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_ErrorDialog.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_FilterDialog.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_GameMode.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_HostGame.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_InfoDialog.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_InstantAction.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_JoinDialog.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_JoinGame.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_LaunchGame.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_MainMenu.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_MapSelect.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_Multiplayer.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_Mutators.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_PasswordDialog.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_Screen.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_ServerSettings.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_Settings.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_SettingsBase.uc create mode 100644 Development/Src/UTGame/Classes/GFxUDKFrontEnd_View.uc create mode 100644 Development/Src/UTGame/Classes/GFxUIFrontEnd_TitleScreen.uc create mode 100644 Development/Src/UTGame/Classes/GFxUILeaderboard.uc create mode 100644 Development/Src/UTGame/Classes/GFxUIScoreboard.uc create mode 100644 Development/Src/UTGame/Classes/GFxUIView.uc create mode 100644 Development/Src/UTGame/Classes/GFxUI_InventoryButton.uc create mode 100644 Development/Src/UTGame/Classes/GFxUI_PauseMenu.uc create mode 100644 Development/Src/UTGame/Classes/GFxUnitTest_ActionScriptThree.uc create mode 100644 Development/Src/UTGame/Classes/GFxUnitTest_ActionScriptThreeWidget.uc create mode 100644 Development/Src/UTGame/Classes/MorphTestActor.uc create mode 100644 Development/Src/UTGame/Classes/PhysAnimTestActor.uc create mode 100644 Development/Src/UTGame/Classes/SeqAct_SetPATAState.uc create mode 100644 Development/Src/UTGame/Classes/SeqAct_SetWheelParticles.uc create mode 100644 Development/Src/UTGame/Classes/SeqAct_UTCrowdSpawner.uc create mode 100644 Development/Src/UTGame/Classes/UTAchievements.uc create mode 100644 Development/Src/UTGame/Classes/UTAchievementsBase.uc create mode 100644 Development/Src/UTGame/Classes/UTActorFactoryAI.uc create mode 100644 Development/Src/UTGame/Classes/UTActorFactoryPickup.uc create mode 100644 Development/Src/UTGame/Classes/UTActorFactoryTeamStaticMesh.uc create mode 100644 Development/Src/UTGame/Classes/UTActorFactoryUTKActor.uc create mode 100644 Development/Src/UTGame/Classes/UTActorFactoryVehicle.uc create mode 100644 Development/Src/UTGame/Classes/UTAirVehicle.uc create mode 100644 Development/Src/UTGame/Classes/UTAmbientSoundComponent.uc create mode 100644 Development/Src/UTGame/Classes/UTAmmoPickupFactory.uc create mode 100644 Development/Src/UTGame/Classes/UTAmmo_LinkGun.uc create mode 100644 Development/Src/UTGame/Classes/UTAmmo_RocketLauncher.uc create mode 100644 Development/Src/UTGame/Classes/UTAmmo_ShockRifle.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendBase.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendByDriving.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendByFall.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendByFlying.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendByHoverJump.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendByHoverboardTilt.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendByHoverboardTurn.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendByHoverboarding.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendByIdle.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendByPhysics.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendByPhysicsVolume.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendByPosture.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendBySlotActive.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendBySpeed.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendByTurnInPlace.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendByVehicle.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendByWeapType.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimBlendByWeapon.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimNodeCopyBoneTranslation.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimNodeFramePlayer.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimNodeJumpLeanOffset.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimNodeSeqWeap.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimNodeSequence.uc create mode 100644 Development/Src/UTGame/Classes/UTAnimNodeSequenceByBoneRotation.uc create mode 100644 Development/Src/UTGame/Classes/UTAnnouncer.uc create mode 100644 Development/Src/UTGame/Classes/UTAreaNamingVolume.uc create mode 100644 Development/Src/UTGame/Classes/UTArmorPickupFactory.uc create mode 100644 Development/Src/UTGame/Classes/UTArmorPickupLight.uc create mode 100644 Development/Src/UTGame/Classes/UTAttachment_LinkGun.uc create mode 100644 Development/Src/UTGame/Classes/UTAutoCrouchVolume.uc create mode 100644 Development/Src/UTGame/Classes/UTAvoidMarker.uc create mode 100644 Development/Src/UTGame/Classes/UTBeamWeapon.uc create mode 100644 Development/Src/UTGame/Classes/UTBeamWeaponAttachment.uc create mode 100644 Development/Src/UTGame/Classes/UTBot.uc create mode 100644 Development/Src/UTGame/Classes/UTCTFBase.uc create mode 100644 Development/Src/UTGame/Classes/UTCTFFlag.uc create mode 100644 Development/Src/UTGame/Classes/UTCTFGame.uc create mode 100644 Development/Src/UTGame/Classes/UTCTFHUD.uc create mode 100644 Development/Src/UTGame/Classes/UTCTFHUDMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTCTFSquadAI.uc create mode 100644 Development/Src/UTGame/Classes/UTCTFTeamAI.uc create mode 100644 Development/Src/UTGame/Classes/UTCarriedObject.uc create mode 100644 Development/Src/UTGame/Classes/UTCarriedObjectMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTCharInfo.uc create mode 100644 Development/Src/UTGame/Classes/UTCheatManager.uc create mode 100644 Development/Src/UTGame/Classes/UTCicadaRocketExplosionLight.uc create mode 100644 Development/Src/UTGame/Classes/UTClientSideWeaponPawn.uc create mode 100644 Development/Src/UTGame/Classes/UTConsole.uc create mode 100644 Development/Src/UTGame/Classes/UTConsolePlayerController.uc create mode 100644 Development/Src/UTGame/Classes/UTConsolePlayerInput.uc create mode 100644 Development/Src/UTGame/Classes/UTDMRoster.uc create mode 100644 Development/Src/UTGame/Classes/UTDMSquad.uc create mode 100644 Development/Src/UTGame/Classes/UTDamageType.uc create mode 100644 Development/Src/UTGame/Classes/UTDataStore_GameSearchDM.uc create mode 100644 Development/Src/UTGame/Classes/UTDataStore_GameSearchFavorites.uc create mode 100644 Development/Src/UTGame/Classes/UTDataStore_GameSearchHistory.uc create mode 100644 Development/Src/UTGame/Classes/UTDataStore_GameSearchPersonal.uc create mode 100644 Development/Src/UTGame/Classes/UTDataStore_GameSettingsDM.uc create mode 100644 Development/Src/UTGame/Classes/UTDeathMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTDeathmatch.uc create mode 100644 Development/Src/UTGame/Classes/UTDecalManager.uc create mode 100644 Development/Src/UTGame/Classes/UTDefensePoint.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_Burning.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_Drowned.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_Encroached.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_Grenade.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_Instagib.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_Lava.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_LinkBeam.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_LinkPlasma.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_Pancake.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_RanOver.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_Rocket.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_ScorpionSelfDestruct.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_SeekingRocket.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_ShockBall.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_ShockCombo.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_ShockPrimary.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_SpaceDeath.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_Telefrag.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_VehicleCollision.uc create mode 100644 Development/Src/UTGame/Classes/UTDmgType_VehicleExplosion.uc create mode 100644 Development/Src/UTGame/Classes/UTDroppedItemPickup.uc create mode 100644 Development/Src/UTGame/Classes/UTDroppedPickup.uc create mode 100644 Development/Src/UTGame/Classes/UTDummyPawn.uc create mode 100644 Development/Src/UTGame/Classes/UTDynamicWaterVolume.uc create mode 100644 Development/Src/UTGame/Classes/UTEmitCameraEffect.uc create mode 100644 Development/Src/UTGame/Classes/UTEmit_BloodSpray.uc create mode 100644 Development/Src/UTGame/Classes/UTEmit_BodyFlame.uc create mode 100644 Development/Src/UTGame/Classes/UTEmit_HeadShotHelmet.uc create mode 100644 Development/Src/UTGame/Classes/UTEmit_HitEffect.uc create mode 100644 Development/Src/UTGame/Classes/UTEmit_ShockCombo.uc create mode 100644 Development/Src/UTGame/Classes/UTEmit_TransLocateOut.uc create mode 100644 Development/Src/UTGame/Classes/UTEmit_TransLocateOutRed.uc create mode 100644 Development/Src/UTGame/Classes/UTEmit_VehicleHit.uc create mode 100644 Development/Src/UTGame/Classes/UTEmitter.uc create mode 100644 Development/Src/UTGame/Classes/UTEntryGame.uc create mode 100644 Development/Src/UTGame/Classes/UTEntryHUD.uc create mode 100644 Development/Src/UTGame/Classes/UTEntryPlayerController.uc create mode 100644 Development/Src/UTGame/Classes/UTFamilyInfo.uc create mode 100644 Development/Src/UTGame/Classes/UTFamilyInfo_Liandri.uc create mode 100644 Development/Src/UTGame/Classes/UTFamilyInfo_Liandri_Male.uc create mode 100644 Development/Src/UTGame/Classes/UTFirstBloodMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTGFxHudWrapper.uc create mode 100644 Development/Src/UTGame/Classes/UTGFxTeamHUD.uc create mode 100644 Development/Src/UTGame/Classes/UTGFxTeamHUDWrapper.uc create mode 100644 Development/Src/UTGame/Classes/UTGFxTweenableMoviePlayer.uc create mode 100644 Development/Src/UTGame/Classes/UTGame.uc create mode 100644 Development/Src/UTGame/Classes/UTGameInteraction.uc create mode 100644 Development/Src/UTGame/Classes/UTGameObjective.uc create mode 100644 Development/Src/UTGame/Classes/UTGameReplicationInfo.uc create mode 100644 Development/Src/UTGame/Classes/UTGameSearchCTF.uc create mode 100644 Development/Src/UTGame/Classes/UTGameSearchCommon.uc create mode 100644 Development/Src/UTGame/Classes/UTGameSearchCustom.uc create mode 100644 Development/Src/UTGame/Classes/UTGameSearchDM.uc create mode 100644 Development/Src/UTGame/Classes/UTGameSearchPersonal.uc create mode 100644 Development/Src/UTGame/Classes/UTGameSearchTDM.uc create mode 100644 Development/Src/UTGame/Classes/UTGameSearchVCTF.uc create mode 100644 Development/Src/UTGame/Classes/UTGameSettingsCTF.uc create mode 100644 Development/Src/UTGame/Classes/UTGameSettingsCommon.uc create mode 100644 Development/Src/UTGame/Classes/UTGameSettingsDM.uc create mode 100644 Development/Src/UTGame/Classes/UTGameSettingsPersonal.uc create mode 100644 Development/Src/UTGame/Classes/UTGameSettingsTDM.uc create mode 100644 Development/Src/UTGame/Classes/UTGameSettingsVCTF.uc create mode 100644 Development/Src/UTGame/Classes/UTGameViewportClient.uc create mode 100644 Development/Src/UTGame/Classes/UTGib.uc create mode 100644 Development/Src/UTGame/Classes/UTGibSkeletalMeshComponent.uc create mode 100644 Development/Src/UTGame/Classes/UTGibStaticMeshComponent.uc create mode 100644 Development/Src/UTGame/Classes/UTGib_Robot.uc create mode 100644 Development/Src/UTGame/Classes/UTGib_RobotArm.uc create mode 100644 Development/Src/UTGame/Classes/UTGib_RobotChunk.uc create mode 100644 Development/Src/UTGame/Classes/UTGib_RobotHand.uc create mode 100644 Development/Src/UTGame/Classes/UTGib_RobotHead.uc create mode 100644 Development/Src/UTGame/Classes/UTGib_RobotLeg.uc create mode 100644 Development/Src/UTGame/Classes/UTGib_RobotTorso.uc create mode 100644 Development/Src/UTGame/Classes/UTGib_Vehicle.uc create mode 100644 Development/Src/UTGame/Classes/UTGib_VehiclePiece.uc create mode 100644 Development/Src/UTGame/Classes/UTGreenMuzzleFlashLight.uc create mode 100644 Development/Src/UTGame/Classes/UTHUD.uc create mode 100644 Development/Src/UTGame/Classes/UTHUDBase.uc create mode 100644 Development/Src/UTGame/Classes/UTHealthPickupFactory.uc create mode 100644 Development/Src/UTGame/Classes/UTHealthPickupLight.uc create mode 100644 Development/Src/UTGame/Classes/UTHoldSpot.uc create mode 100644 Development/Src/UTGame/Classes/UTHoverWheel.uc create mode 100644 Development/Src/UTGame/Classes/UTHugeExplosionLight.uc create mode 100644 Development/Src/UTGame/Classes/UTIdleKickWarningMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTInventory.uc create mode 100644 Development/Src/UTGame/Classes/UTInventoryManager.uc create mode 100644 Development/Src/UTGame/Classes/UTItemPickupFactory.uc create mode 100644 Development/Src/UTGame/Classes/UTJumpLiftExit.uc create mode 100644 Development/Src/UTGame/Classes/UTJumpPad.uc create mode 100644 Development/Src/UTGame/Classes/UTJumpPadReachspec.uc create mode 100644 Development/Src/UTGame/Classes/UTKActor.uc create mode 100644 Development/Src/UTGame/Classes/UTKillZVolume.uc create mode 100644 Development/Src/UTGame/Classes/UTKillerMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTKillingSpreeMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTKillsRemainingMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTKismetAnnouncement.uc create mode 100644 Development/Src/UTGame/Classes/UTLastSecondMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTLavaVolume.uc create mode 100644 Development/Src/UTGame/Classes/UTLeaderboardRead.uc create mode 100644 Development/Src/UTGame/Classes/UTLeviathanMuzzleFlashLight.uc create mode 100644 Development/Src/UTGame/Classes/UTLinkBeamLight.uc create mode 100644 Development/Src/UTGame/Classes/UTLinkGunMuzzleFlashLight.uc create mode 100644 Development/Src/UTGame/Classes/UTLocalMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTLockWarningMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTMapInfo.uc create mode 100644 Development/Src/UTGame/Classes/UTMapMusicInfo.uc create mode 100644 Development/Src/UTGame/Classes/UTMultiKillMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTMusicManager.uc create mode 100644 Development/Src/UTGame/Classes/UTMutator.uc create mode 100644 Development/Src/UTGame/Classes/UTMutator_Arena.uc create mode 100644 Development/Src/UTGame/Classes/UTMutator_BigHead.uc create mode 100644 Development/Src/UTGame/Classes/UTMutator_FriendlyFire.uc create mode 100644 Development/Src/UTGame/Classes/UTMutator_Handicap.uc create mode 100644 Development/Src/UTGame/Classes/UTMutator_LowGrav.uc create mode 100644 Development/Src/UTGame/Classes/UTMutator_NoHoverboard.uc create mode 100644 Development/Src/UTGame/Classes/UTMutator_NoPowerups.uc create mode 100644 Development/Src/UTGame/Classes/UTMutator_Slomo.uc create mode 100644 Development/Src/UTGame/Classes/UTMutator_SlowTimeKills.uc create mode 100644 Development/Src/UTGame/Classes/UTMutator_SpeedFreak.uc create mode 100644 Development/Src/UTGame/Classes/UTMutator_SuperBerserk.uc create mode 100644 Development/Src/UTGame/Classes/UTMutator_WeaponsRespawn.uc create mode 100644 Development/Src/UTGame/Classes/UTObjectiveAnnouncement.uc create mode 100644 Development/Src/UTGame/Classes/UTObjectiveSpecificMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTOnlineConstants.uci create mode 100644 Development/Src/UTGame/Classes/UTOnlineStats.uci create mode 100644 Development/Src/UTGame/Classes/UTParticleSystemComponent.uc create mode 100644 Development/Src/UTGame/Classes/UTPawn.uc create mode 100644 Development/Src/UTGame/Classes/UTPawnSoundGroup.uc create mode 100644 Development/Src/UTGame/Classes/UTPawnSoundGroup_Liandri.uc create mode 100644 Development/Src/UTGame/Classes/UTPhysicalMaterialProperty.uc create mode 100644 Development/Src/UTGame/Classes/UTPickupFactory.uc create mode 100644 Development/Src/UTGame/Classes/UTPickupFactory_HealthVial.uc create mode 100644 Development/Src/UTGame/Classes/UTPickupInventory.uc create mode 100644 Development/Src/UTGame/Classes/UTPickupMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTPlayerController.uc create mode 100644 Development/Src/UTGame/Classes/UTPlayerInput.uc create mode 100644 Development/Src/UTGame/Classes/UTPlayerReplicationInfo.uc create mode 100644 Development/Src/UTGame/Classes/UTPopulationManager.uc create mode 100644 Development/Src/UTGame/Classes/UTPortal.uc create mode 100644 Development/Src/UTGame/Classes/UTPowerupPickupFactory.uc create mode 100644 Development/Src/UTGame/Classes/UTProj_Grenade.uc create mode 100644 Development/Src/UTGame/Classes/UTProj_LinkPlasma.uc create mode 100644 Development/Src/UTGame/Classes/UTProj_LinkPowerPlasma.uc create mode 100644 Development/Src/UTGame/Classes/UTProj_LoadedRocket.uc create mode 100644 Development/Src/UTGame/Classes/UTProj_Rocket.uc create mode 100644 Development/Src/UTGame/Classes/UTProj_ScorpionGlob_Base.uc create mode 100644 Development/Src/UTGame/Classes/UTProj_SeekingRocket.uc create mode 100644 Development/Src/UTGame/Classes/UTProjectile.uc create mode 100644 Development/Src/UTGame/Classes/UTQueuedAnnouncement.uc create mode 100644 Development/Src/UTGame/Classes/UTReplicatedEmitter.uc create mode 100644 Development/Src/UTGame/Classes/UTRocketExplosionLight.uc create mode 100644 Development/Src/UTGame/Classes/UTRocketLight.uc create mode 100644 Development/Src/UTGame/Classes/UTRocketMuzzleFlashLight.uc create mode 100644 Development/Src/UTGame/Classes/UTRotatingDroppedPickup.uc create mode 100644 Development/Src/UTGame/Classes/UTSD_SpawnedKActor.uc create mode 100644 Development/Src/UTGame/Classes/UTSayMsg.uc create mode 100644 Development/Src/UTGame/Classes/UTScavengerMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTScout.uc create mode 100644 Development/Src/UTGame/Classes/UTScriptedBotVolume.uc create mode 100644 Development/Src/UTGame/Classes/UTScriptedVoiceMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_AIFreeze.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_AIStartFireAt.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_AIStopFire.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_ActivateRocketBoosters.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_AddNamedBot.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_ChangeTeam.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_DummyWeaponFire.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_EnterVehicle.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_ExitVehicle.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_GetTeamNum.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_HoverboardSpinJump.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_InfiniteAmmo.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_PlayAnim.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_PlayAnnouncement.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_PlayCameraAnim.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_ReturnCTFFlag.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_ScriptedVoiceMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_SelfDestruct.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_SetBotsMustComplete.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_SetVisibilityModifier.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_SpawnProjectile.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_StopCameraAnim.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_ToggleAnnouncements.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqAct_UseHoverboard.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqCond_CheckWeapon.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqCond_DoTutorial.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqCond_HasInventory.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqCond_IsCarryingFlag.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqCond_IsConsole.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqCond_IsUsingWeapon.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqEvent_FlagEvent.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqEvent_GameEnded.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqEvent_ObjectiveCompleted.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqEvent_SkipCinematic.uc create mode 100644 Development/Src/UTGame/Classes/UTSeqEvent_VehicleFactory.uc create mode 100644 Development/Src/UTGame/Classes/UTShockBallLight.uc create mode 100644 Development/Src/UTGame/Classes/UTShockComboExplosionLight.uc create mode 100644 Development/Src/UTGame/Classes/UTShockImpactLight.uc create mode 100644 Development/Src/UTGame/Classes/UTShockMuzzleFlashLight.uc create mode 100644 Development/Src/UTGame/Classes/UTSimpleDestroyable.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_CantileverBeam.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_CicadaEngine.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_Damage.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_DamageHinge.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_DamageSpring.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_HoverboardSuspension.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_HoverboardSwing.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_HoverboardVibration.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_HugGround.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_JetThruster.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_LockRotation.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_LookAt.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_MantaBlade.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_MantaFlaps.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_MassBoneScaling.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_Oscillate.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_Rotate.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_SpinControl.uc create mode 100644 Development/Src/UTGame/Classes/UTSkelControl_TurretConstrained.uc create mode 100644 Development/Src/UTGame/Classes/UTSlimeVolume.uc create mode 100644 Development/Src/UTGame/Classes/UTSquadAI.uc create mode 100644 Development/Src/UTGame/Classes/UTStartupMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTStatsReadAchievements.uc create mode 100644 Development/Src/UTGame/Classes/UTStatsWriteAchievements.uc create mode 100644 Development/Src/UTGame/Classes/UTStatsWriteCTF.uc create mode 100644 Development/Src/UTGame/Classes/UTStatsWriteDM.uc create mode 100644 Development/Src/UTGame/Classes/UTStatsWriteTDM.uc create mode 100644 Development/Src/UTGame/Classes/UTStingerMuzzleFlashLight.uc create mode 100644 Development/Src/UTGame/Classes/UTTeamAI.uc create mode 100644 Development/Src/UTGame/Classes/UTTeamDeathMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTTeamGame.uc create mode 100644 Development/Src/UTGame/Classes/UTTeamGameMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTTeamHUD.uc create mode 100644 Development/Src/UTGame/Classes/UTTeamInfo.uc create mode 100644 Development/Src/UTGame/Classes/UTTeamPlayerStart.uc create mode 100644 Development/Src/UTGame/Classes/UTTeamSayMSg.uc create mode 100644 Development/Src/UTGame/Classes/UTTeamStaticMesh.uc create mode 100644 Development/Src/UTGame/Classes/UTTeleporterCustomMesh.uc create mode 100644 Development/Src/UTGame/Classes/UTTimedPowerup.uc create mode 100644 Development/Src/UTGame/Classes/UTTimerMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTTrajectoryReachSpec.uc create mode 100644 Development/Src/UTGame/Classes/UTTurretMuzzleFlashLight.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataProvider_GameModeInfo.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataProvider_KeyBinding.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataProvider_MapInfo.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataProvider_MenuOption.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataProvider_MultiplayerMenuItem.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataProvider_Mutator.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataProvider_SearchResult.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataProvider_ServerDetails.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataProvider_SettingsMenuItem.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataProvider_SimpleElementProvider.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataProvider_StringArray.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataProvider_Weapon.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataStore_MenuItems.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataStore_Options.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataStore_StringAliasBindingsMap.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataStore_StringAliasMap.uc create mode 100644 Development/Src/UTGame/Classes/UTUIDataStore_StringList.uc create mode 100644 Development/Src/UTGame/Classes/UTUIResourceDataProvider.uc create mode 100644 Development/Src/UTGame/Classes/UTVWeap_TowCable.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicle.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicleBoostPad.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicleCTFGame.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicleCTFHUD.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicleCantCarryFlagMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicleDeathPiece.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicleFactory.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicleKillMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicleMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicleScorpionWheel.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicleShield.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicleWeapon.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicle_Cicada.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicle_Hoverboard.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicle_Manta.uc create mode 100644 Development/Src/UTGame/Classes/UTVehicle_Scorpion.uc create mode 100644 Development/Src/UTGame/Classes/UTVictimMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTVictoryMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTVoice.uc create mode 100644 Development/Src/UTGame/Classes/UTVoice_Robot.uc create mode 100644 Development/Src/UTGame/Classes/UTWaterVolume.uc create mode 100644 Development/Src/UTGame/Classes/UTWeap_LinkGun.uc create mode 100644 Development/Src/UTGame/Classes/UTWeap_PhysicsGun.uc create mode 100644 Development/Src/UTGame/Classes/UTWeap_RocketLauncher.uc create mode 100644 Development/Src/UTGame/Classes/UTWeap_ShockRifleBase.uc create mode 100644 Development/Src/UTGame/Classes/UTWeapon.uc create mode 100644 Development/Src/UTGame/Classes/UTWeaponAttachment.uc create mode 100644 Development/Src/UTGame/Classes/UTWeaponKillMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTWeaponKillRewardMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTWeaponLocker.uc create mode 100644 Development/Src/UTGame/Classes/UTWeaponLockerPickupLight.uc create mode 100644 Development/Src/UTGame/Classes/UTWeaponPawn.uc create mode 100644 Development/Src/UTGame/Classes/UTWeaponPickupFactory.uc create mode 100644 Development/Src/UTGame/Classes/UTWeaponPickupLight.uc create mode 100644 Development/Src/UTGame/Classes/UTWeaponRewardMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTWeaponSwitchMessage.uc create mode 100644 Development/Src/UTGame/Classes/UTWillowWhisp.uc create mode 100644 Development/Src/UTGame/Classes/VehicleMovementEffect.uc create mode 100644 Development/Src/UTGame/UTStats.uci create mode 100644 Development/Src/UTGameContent/Classes/UTArmorPickup_BaseArmor.uc create mode 100644 Development/Src/UTGameContent/Classes/UTArmorPickup_ShieldBelt.uc create mode 100644 Development/Src/UTGameContent/Classes/UTArmorPickup_ThighPad.uc create mode 100644 Development/Src/UTGameContent/Classes/UTAttachment_RocketLauncher.uc create mode 100644 Development/Src/UTGameContent/Classes/UTAttachment_ShockRifle.uc create mode 100644 Development/Src/UTGameContent/Classes/UTBerserk.uc create mode 100644 Development/Src/UTGameContent/Classes/UTCTFBase_Content.uc create mode 100644 Development/Src/UTGameContent/Classes/UTCTFBlueFlag.uc create mode 100644 Development/Src/UTGameContent/Classes/UTCTFBlueFlagBase.uc create mode 100644 Development/Src/UTGameContent/Classes/UTCTFGame_Content.uc create mode 100644 Development/Src/UTGameContent/Classes/UTCTFMessage.uc create mode 100644 Development/Src/UTGameContent/Classes/UTCTFRedFlag.uc create mode 100644 Development/Src/UTGameContent/Classes/UTCTFRedFlagBase.uc create mode 100644 Development/Src/UTGameContent/Classes/UTDecoy.uc create mode 100644 Development/Src/UTGameContent/Classes/UTDmgType_CicadaLaser.uc create mode 100644 Development/Src/UTGameContent/Classes/UTDmgType_CicadaRocket.uc create mode 100644 Development/Src/UTGameContent/Classes/UTDmgType_Fire.uc create mode 100644 Development/Src/UTGameContent/Classes/UTDmgType_MantaBolt.uc create mode 100644 Development/Src/UTGameContent/Classes/UTDmgType_ScorpionBlade.uc create mode 100644 Development/Src/UTGameContent/Classes/UTDmgType_ScorpionGlob.uc create mode 100644 Development/Src/UTGameContent/Classes/UTDmgType_ScorpionGlobRed.uc create mode 100644 Development/Src/UTGameContent/Classes/UTDroppedShieldBelt.uc create mode 100644 Development/Src/UTGameContent/Classes/UTGameCrowdAgent.uc create mode 100644 Development/Src/UTGameContent/Classes/UTGib_ScorpionHatch.uc create mode 100644 Development/Src/UTGameContent/Classes/UTJumpBootEffect.uc create mode 100644 Development/Src/UTGameContent/Classes/UTJumpBoots.uc create mode 100644 Development/Src/UTGameContent/Classes/UTPickupFactory_Berserk.uc create mode 100644 Development/Src/UTGameContent/Classes/UTPickupFactory_HealthPack.uc create mode 100644 Development/Src/UTGameContent/Classes/UTPickupFactory_JumpBoots.uc create mode 100644 Development/Src/UTGameContent/Classes/UTPickupFactory_SuperHealth.uc create mode 100644 Development/Src/UTGameContent/Classes/UTPickupFactory_UDamage.uc create mode 100644 Development/Src/UTGameContent/Classes/UTPowerupRewardMessage.uc create mode 100644 Development/Src/UTGameContent/Classes/UTProj_CicadaRocket.uc create mode 100644 Development/Src/UTGameContent/Classes/UTProj_MantaBolt.uc create mode 100644 Development/Src/UTGameContent/Classes/UTProj_ScorpionGlob.uc create mode 100644 Development/Src/UTGameContent/Classes/UTProj_ScorpionGlob_Red.uc create mode 100644 Development/Src/UTGameContent/Classes/UTProj_ShockBall.uc create mode 100644 Development/Src/UTGameContent/Classes/UTTeamScoreMessage.uc create mode 100644 Development/Src/UTGameContent/Classes/UTTeleporter.uc create mode 100644 Development/Src/UTGameContent/Classes/UTUDamage.uc create mode 100644 Development/Src/UTGameContent/Classes/UTVWeap_CicadaMissileLauncher.uc create mode 100644 Development/Src/UTGameContent/Classes/UTVWeap_CicadaTurret.uc create mode 100644 Development/Src/UTGameContent/Classes/UTVWeap_MantaGun.uc create mode 100644 Development/Src/UTGameContent/Classes/UTVWeap_ScorpionTurret.uc create mode 100644 Development/Src/UTGameContent/Classes/UTVehicleCTFGame_Content.uc create mode 100644 Development/Src/UTGameContent/Classes/UTVehicleFactory_Cicada.uc create mode 100644 Development/Src/UTGameContent/Classes/UTVehicleFactory_Manta.uc create mode 100644 Development/Src/UTGameContent/Classes/UTVehicleFactory_Scorpion.uc create mode 100644 Development/Src/UTGameContent/Classes/UTVehicleShockComboLight.uc create mode 100644 Development/Src/UTGameContent/Classes/UTVehicle_Cicada_Content.uc create mode 100644 Development/Src/UTGameContent/Classes/UTVehicle_Hoverboard_Content.uc create mode 100644 Development/Src/UTGameContent/Classes/UTVehicle_Manta_Content.uc create mode 100644 Development/Src/UTGameContent/Classes/UTVehicle_Scorpion_Content.uc create mode 100644 Development/Src/UTGameContent/Classes/UTWeap_RocketLauncher_Content.uc create mode 100644 Development/Src/UTGameContent/Classes/UTWeap_ShockRifle.uc create mode 100644 Development/Src/UTGameContent/Classes/UTWeaponLocker_Content.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/ASVSkelComponent.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/AnimNodeEditInfo.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/AnimNodeEditInfo_AimOffset.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/AnimSetLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/AnimTreeEdSkelComponent.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/AnimTreeLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/ApexClothingAssetLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/ApexDestructibleAssetLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/ApexDestructibleAssetThumbnailRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/ApexGenericAssetLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/ArchetypeThumbnailRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/BasicStatsVisualizer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/BrowserManager.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/BrushBuilder.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/CascadeConfiguration.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/CascadeOptions.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/CascadeParticleSystemComponent.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/CascadePreviewComponent.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/ConeBuilder.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/ConvertMapToNavMesh.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/CubeBuilder.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/CurveEdOptions.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/CurveEdPresetBase.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/CurveEdPreset_CosWave.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/CurveEdPreset_LinearDecay.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/CurveEdPreset_Nothing.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/CurveEdPreset_SineWave.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/CurveEdPreset_UserSet.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/CurvedStairBuilder.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/CustomPropertyItemBindings.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/CylinderBuilder.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/DEditorFontParameterValue.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/DEditorParameterValue.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/DEditorScalarParameterValue.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/DEditorStaticComponentMaskParameterValue.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/DEditorStaticSwitchParameterValue.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/DEditorTextureParameterValue.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/DEditorVectorParameterValue.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/DefaultSizedThumbnailRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/EdModeComponent.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/EditorComponent.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/EditorEngine.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/EditorUserSettings.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/EditorViewportInput.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/FaceFXStudioSkelComponent.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/FbxImportUI.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/FindUnreferencedFunctionsCommandlet.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/FontThumbnailLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/FontThumbnailRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/FracturedStaticMeshLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GameStatsDatabase.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GameStatsDatabaseVisitor.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GameStatsFileReader.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GameStatsReport.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GameStatsVisitorImpl.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GameStatsVisualizer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_All.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_AnimTree.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_Animation.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_ApexClothingAsset.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_ApexDestructibleAsset.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_ApexDestructibleDamageParameters.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_ApexGenericAsset.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_Archetype.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_CameraAnim.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_CurveEdPresetCurve.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_Custom.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_DecalMaterial.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_FaceFXAnimSet.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_FaceFXAsset.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_Font.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_FractureMaterial.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_FracturedStaticMesh.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_InstancedFoliageSettings.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_LandscapeLayer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_LensFlare.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_Material.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_MaterialFunction.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_MaterialInstanceConstant.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_MaterialInstanceTimeVarying.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_MorphTargetSet.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_MorphWeightSequence.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_ParticleSystem.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_PhysXParticleSystem.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_PhysicalMaterial.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_PhysicsAsset.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_PostProcess.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_Prefab.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_ProcBuildingRuleset.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_RenderTexture.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_Sequence.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_SkeletalMesh.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_SoundClass.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_SoundCue.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_SoundMode.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_SoundWave.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_Sounds.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_SpeechRecognition.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_SpeedTree.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_StaticMesh.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_TemplateMapMetadata.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_TerrainLayer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_TerrainMaterial.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_Texture.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_TextureCube.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericBrowserType_TextureMovie.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericParamListVisualizer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GenericThumbnailLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GeomModifier.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GeomModifier_Clip.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GeomModifier_Create.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GeomModifier_Delete.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GeomModifier_Edit.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GeomModifier_Extrude.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GeomModifier_Flip.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GeomModifier_Lathe.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GeomModifier_Optimize.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GeomModifier_Pen.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GeomModifier_Split.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GeomModifier_Triangulate.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GeomModifier_Turn.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GeomModifier_Weld.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/GroupActor.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/HeatmapVisualizer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/IconThumbnailRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpEdOptions.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackAnimControlHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackBoolPropHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackColorPropHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackDirectorHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackEventHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackFaceFXHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackFloatPropHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackHeadTrackingHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackLinearColorPropHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackNotifyHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackParticleReplayHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackSoundHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackToggleHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackVectorPropHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/InterpTrackVisibilityHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/KismetBindings.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/LandscapeLayerLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/LensFlareEditorOptions.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/LensFlareEditorPropertyWrapper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/LensFlarePreviewComponent.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/LensFlareThumbnailRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/LightingChannelsObject.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/LightmassOptionsObject.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/LinearStairBuilder.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/MaterialEditorInstanceConstant.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/MaterialEditorInstanceTimeVarying.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/MaterialEditorMeshComponent.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/MaterialEditorOptions.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/MaterialEditorSkeletalMeshComponent.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/MaterialFunctionLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/MaterialInstanceLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/MaterialInstanceThumbnailRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/MemCountThumbnailLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/ParticleSystemLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/ParticleSystemThumbnailRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/PerformanceVisualizer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/PhATSimOptions.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/PhATSkeletalMeshComponent.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/PhysicsAssetLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/PlayerMovementVisualizer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/PostProcessLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/PrefabThumbnailRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/PreviewMaterial.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/SequenceObjectHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/SheetBuilder.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/SkeletalMeshLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/SkeletalMeshThumbnailRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/SoundLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/SoundNodeHelper.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/SpiralStairBuilder.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/StaticMeshLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/StaticMeshMode_Options.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/StaticMeshThumbnailRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/TagSuboptimalTexturesCommandlet.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/TemplateMapMetadata.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/TerrainEditOptions.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/TetrahedronBuilder.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/TextureCubeThumbnailRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/TextureThumbnailRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/ThumbnailLabelRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/ThumbnailManager.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/ThumbnailRenderer.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/UnrealEdEngine.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/UnrealEdKeyBindings.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/UnrealEdOptions.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/UnrealEdTypes.uc mode change 100755 => 100644 Development/Src/UnrealEd/Classes/VolumetricBuilder.uc mode change 100755 => 100644 Development/Src/WinDrv/Classes/FacebookWindows.uc mode change 100755 => 100644 Development/Src/WinDrv/Classes/HttpRequestWindows.uc mode change 100755 => 100644 Development/Src/WinDrv/Classes/HttpRequestWindowsMcp.uc mode change 100755 => 100644 Development/Src/WinDrv/Classes/HttpResponseWindows.uc diff --git a/Development/Src/Core/Classes/Commandlet.uc b/Development/Src/Core/Classes/Commandlet.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Core/Classes/Component.uc b/Development/Src/Core/Classes/Component.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Core/Classes/DistributionFloat.uc b/Development/Src/Core/Classes/DistributionFloat.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Core/Classes/DistributionVector.uc b/Development/Src/Core/Classes/DistributionVector.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Core/Classes/Factory.uc b/Development/Src/Core/Classes/Factory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Core/Classes/HelpCommandlet.uc b/Development/Src/Core/Classes/HelpCommandlet.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Core/Classes/Interface.uc b/Development/Src/Core/Classes/Interface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Core/Classes/Object.uc b/Development/Src/Core/Classes/Object.uc old mode 100755 new mode 100644 index 7449f489..7784afc7 --- a/Development/Src/Core/Classes/Object.uc +++ b/Development/Src/Core/Classes/Object.uc @@ -25,12 +25,6 @@ struct {QWORD} qword var() native int A, B; }; -// MOD: Added this from Paladins -struct {DWORD} dword -{ - var() native int A; -}; - //============================================================================= // UObject variables. diff --git a/Development/Src/Core/Classes/Subsystem.uc b/Development/Src/Core/Classes/Subsystem.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Core/Globals.uci b/Development/Src/Core/Globals.uci old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AICommandBase.uc b/Development/Src/Engine/Classes/AICommandBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AIController.uc b/Development/Src/Engine/Classes/AIController.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AISwitchablePylon.uc b/Development/Src/Engine/Classes/AISwitchablePylon.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AccessControl.uc b/Development/Src/Engine/Classes/AccessControl.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Actor.uc b/Development/Src/Engine/Classes/Actor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorComponent.uc b/Development/Src/Engine/Classes/ActorComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactory.uc b/Development/Src/Engine/Classes/ActorFactory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryAI.uc b/Development/Src/Engine/Classes/ActorFactoryAI.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryActor.uc b/Development/Src/Engine/Classes/ActorFactoryActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryAmbientSound.uc b/Development/Src/Engine/Classes/ActorFactoryAmbientSound.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryAmbientSoundMovable.uc b/Development/Src/Engine/Classes/ActorFactoryAmbientSoundMovable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryAmbientSoundNonLoop.uc b/Development/Src/Engine/Classes/ActorFactoryAmbientSoundNonLoop.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryAmbientSoundNonLoopingToggleable.uc b/Development/Src/Engine/Classes/ActorFactoryAmbientSoundNonLoopingToggleable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryAmbientSoundSimple.uc b/Development/Src/Engine/Classes/ActorFactoryAmbientSoundSimple.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryAmbientSoundSimpleToggleable.uc b/Development/Src/Engine/Classes/ActorFactoryAmbientSoundSimpleToggleable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryApexClothing.uc b/Development/Src/Engine/Classes/ActorFactoryApexClothing.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryApexDestructible.uc b/Development/Src/Engine/Classes/ActorFactoryApexDestructible.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryArchetype.uc b/Development/Src/Engine/Classes/ActorFactoryArchetype.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryCoverLink.uc b/Development/Src/Engine/Classes/ActorFactoryCoverLink.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryDecal.uc b/Development/Src/Engine/Classes/ActorFactoryDecal.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryDecalMovable.uc b/Development/Src/Engine/Classes/ActorFactoryDecalMovable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryDominantDirectionalLight.uc b/Development/Src/Engine/Classes/ActorFactoryDominantDirectionalLight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryDominantDirectionalLightMovable.uc b/Development/Src/Engine/Classes/ActorFactoryDominantDirectionalLightMovable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryDynamicSM.uc b/Development/Src/Engine/Classes/ActorFactoryDynamicSM.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryEmitter.uc b/Development/Src/Engine/Classes/ActorFactoryEmitter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryFogVolumeConstantDensityInfo.uc b/Development/Src/Engine/Classes/ActorFactoryFogVolumeConstantDensityInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryFogVolumeLinearHalfspaceDensityInfo.uc b/Development/Src/Engine/Classes/ActorFactoryFogVolumeLinearHalfspaceDensityInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryFogVolumeSphericalDensityInfo.uc b/Development/Src/Engine/Classes/ActorFactoryFogVolumeSphericalDensityInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryFracturedStaticMesh.uc b/Development/Src/Engine/Classes/ActorFactoryFracturedStaticMesh.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryInteractiveFoliage.uc b/Development/Src/Engine/Classes/ActorFactoryInteractiveFoliage.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryLensFlare.uc b/Development/Src/Engine/Classes/ActorFactoryLensFlare.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryLight.uc b/Development/Src/Engine/Classes/ActorFactoryLight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryMover.uc b/Development/Src/Engine/Classes/ActorFactoryMover.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryPathNode.uc b/Development/Src/Engine/Classes/ActorFactoryPathNode.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryPhysicsAsset.uc b/Development/Src/Engine/Classes/ActorFactoryPhysicsAsset.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryPlayerStart.uc b/Development/Src/Engine/Classes/ActorFactoryPlayerStart.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryPylon.uc b/Development/Src/Engine/Classes/ActorFactoryPylon.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryRigidBody.uc b/Development/Src/Engine/Classes/ActorFactoryRigidBody.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactorySkeletalMesh.uc b/Development/Src/Engine/Classes/ActorFactorySkeletalMesh.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactorySkeletalMeshCinematic.uc b/Development/Src/Engine/Classes/ActorFactorySkeletalMeshCinematic.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactorySkeletalMeshMAT.uc b/Development/Src/Engine/Classes/ActorFactorySkeletalMeshMAT.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryStaticMesh.uc b/Development/Src/Engine/Classes/ActorFactoryStaticMesh.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryTrigger.uc b/Development/Src/Engine/Classes/ActorFactoryTrigger.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ActorFactoryVehicle.uc b/Development/Src/Engine/Classes/ActorFactoryVehicle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Admin.uc b/Development/Src/Engine/Classes/Admin.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AdvancedReachSpec.uc b/Development/Src/Engine/Classes/AdvancedReachSpec.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AkBank.uc b/Development/Src/Engine/Classes/AkBank.uc deleted file mode 100755 index a124372e..00000000 --- a/Development/Src/Engine/Classes/AkBank.uc +++ /dev/null @@ -1,12 +0,0 @@ -class AkBank extends Object - native; - -var() bool AutoLoad; -var() bool GenerateDefinition; -var transient bool bIsAsyncLoading; - -defaultproperties -{ - AutoLoad=true - GenerateDefinition=true -} \ No newline at end of file diff --git a/Development/Src/Engine/Classes/AkBaseSoundObject.uc b/Development/Src/Engine/Classes/AkBaseSoundObject.uc deleted file mode 100755 index 22fe0c3c..00000000 --- a/Development/Src/Engine/Classes/AkBaseSoundObject.uc +++ /dev/null @@ -1,3 +0,0 @@ -class AkBaseSoundObject extends Object - abstract - native; diff --git a/Development/Src/Engine/Classes/AkEvent.uc b/Development/Src/Engine/Classes/AkEvent.uc deleted file mode 100755 index df81e8a6..00000000 --- a/Development/Src/Engine/Classes/AkEvent.uc +++ /dev/null @@ -1,8 +0,0 @@ -class AkEvent extends AkBaseSoundObject - native; - -var() AkBank RequiredBank; -var() AkEvent m_FirstPersonEvent; -var() AkEvent m_ShutdownEvent; -var() bool m_bIgnoreOcclusion; -var() bool m_bForce1pAnd3p; diff --git a/Development/Src/Engine/Classes/AmbientOcclusionEffect.uc b/Development/Src/Engine/Classes/AmbientOcclusionEffect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AmbientSound.uc b/Development/Src/Engine/Classes/AmbientSound.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AmbientSoundMovable.uc b/Development/Src/Engine/Classes/AmbientSoundMovable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AmbientSoundNonLoop.uc b/Development/Src/Engine/Classes/AmbientSoundNonLoop.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AmbientSoundNonLoopingToggleable.uc b/Development/Src/Engine/Classes/AmbientSoundNonLoopingToggleable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AmbientSoundSimple.uc b/Development/Src/Engine/Classes/AmbientSoundSimple.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AmbientSoundSimpleSpline.uc b/Development/Src/Engine/Classes/AmbientSoundSimpleSpline.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AmbientSoundSimpleSplineNonLoop.uc b/Development/Src/Engine/Classes/AmbientSoundSimpleSplineNonLoop.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AmbientSoundSimpleToggleable.uc b/Development/Src/Engine/Classes/AmbientSoundSimpleToggleable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AmbientSoundSpline.uc b/Development/Src/Engine/Classes/AmbientSoundSpline.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AmbientSoundSplineMultiCue.uc b/Development/Src/Engine/Classes/AmbientSoundSplineMultiCue.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnalyticEventsBase.uc b/Development/Src/Engine/Classes/AnalyticEventsBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimMetaData.uc b/Development/Src/Engine/Classes/AnimMetaData.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimMetaData_SkelControl.uc b/Development/Src/Engine/Classes/AnimMetaData_SkelControl.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimMetaData_SkelControlKeyFrame.uc b/Development/Src/Engine/Classes/AnimMetaData_SkelControlKeyFrame.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNode.uc b/Development/Src/Engine/Classes/AnimNode.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeAdditiveBlending.uc b/Development/Src/Engine/Classes/AnimNodeAdditiveBlending.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeAimOffset.uc b/Development/Src/Engine/Classes/AnimNodeAimOffset.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeBlend.uc b/Development/Src/Engine/Classes/AnimNodeBlend.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeBlendBase.uc b/Development/Src/Engine/Classes/AnimNodeBlendBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeBlendByBase.uc b/Development/Src/Engine/Classes/AnimNodeBlendByBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeBlendByPhysics.uc b/Development/Src/Engine/Classes/AnimNodeBlendByPhysics.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeBlendByPosture.uc b/Development/Src/Engine/Classes/AnimNodeBlendByPosture.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeBlendByProperty.uc b/Development/Src/Engine/Classes/AnimNodeBlendByProperty.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeBlendBySpeed.uc b/Development/Src/Engine/Classes/AnimNodeBlendBySpeed.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeBlendDirectional.uc b/Development/Src/Engine/Classes/AnimNodeBlendDirectional.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeBlendList.uc b/Development/Src/Engine/Classes/AnimNodeBlendList.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeBlendMultiBone.uc b/Development/Src/Engine/Classes/AnimNodeBlendMultiBone.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeBlendPerBone.uc b/Development/Src/Engine/Classes/AnimNodeBlendPerBone.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeCrossfader.uc b/Development/Src/Engine/Classes/AnimNodeCrossfader.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeFrame.uc b/Development/Src/Engine/Classes/AnimNodeFrame.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeMirror.uc b/Development/Src/Engine/Classes/AnimNodeMirror.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodePlayCustomAnim.uc b/Development/Src/Engine/Classes/AnimNodePlayCustomAnim.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeRandom.uc b/Development/Src/Engine/Classes/AnimNodeRandom.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeScalePlayRate.uc b/Development/Src/Engine/Classes/AnimNodeScalePlayRate.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeScaleRateBySpeed.uc b/Development/Src/Engine/Classes/AnimNodeScaleRateBySpeed.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeSequence.uc b/Development/Src/Engine/Classes/AnimNodeSequence.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeSequenceBlendBase.uc b/Development/Src/Engine/Classes/AnimNodeSequenceBlendBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeSequenceBlendByAim.uc b/Development/Src/Engine/Classes/AnimNodeSequenceBlendByAim.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeSlot.uc b/Development/Src/Engine/Classes/AnimNodeSlot.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNodeSynch.uc b/Development/Src/Engine/Classes/AnimNodeSynch.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNode_MultiBlendPerBone.uc b/Development/Src/Engine/Classes/AnimNode_MultiBlendPerBone.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNotify.uc b/Development/Src/Engine/Classes/AnimNotify.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNotify_CameraEffect.uc b/Development/Src/Engine/Classes/AnimNotify_CameraEffect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNotify_ClothingMaxDistanceScale.uc b/Development/Src/Engine/Classes/AnimNotify_ClothingMaxDistanceScale.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNotify_Footstep.uc b/Development/Src/Engine/Classes/AnimNotify_Footstep.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNotify_Forcefield.uc b/Development/Src/Engine/Classes/AnimNotify_Forcefield.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNotify_Kismet.uc b/Development/Src/Engine/Classes/AnimNotify_Kismet.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNotify_PawnMaterialParam.uc b/Development/Src/Engine/Classes/AnimNotify_PawnMaterialParam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNotify_PlayFaceFxAnim.uc b/Development/Src/Engine/Classes/AnimNotify_PlayFaceFxAnim.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNotify_PlayParticleEffect.uc b/Development/Src/Engine/Classes/AnimNotify_PlayParticleEffect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNotify_Rumble.uc b/Development/Src/Engine/Classes/AnimNotify_Rumble.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNotify_Script.uc b/Development/Src/Engine/Classes/AnimNotify_Script.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNotify_Scripted.uc b/Development/Src/Engine/Classes/AnimNotify_Scripted.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNotify_Sound.uc b/Development/Src/Engine/Classes/AnimNotify_Sound.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNotify_Trails.uc b/Development/Src/Engine/Classes/AnimNotify_Trails.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimNotify_ViewShake.uc b/Development/Src/Engine/Classes/AnimNotify_ViewShake.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimObject.uc b/Development/Src/Engine/Classes/AnimObject.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimSequence.uc b/Development/Src/Engine/Classes/AnimSequence.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimSet.uc b/Development/Src/Engine/Classes/AnimSet.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimTree.uc b/Development/Src/Engine/Classes/AnimTree.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimationCompressionAlgorithm.uc b/Development/Src/Engine/Classes/AnimationCompressionAlgorithm.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_Automatic.uc b/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_Automatic.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_BitwiseCompressOnly.uc b/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_BitwiseCompressOnly.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_LeastDestructive.uc b/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_LeastDestructive.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_PerTrackCompression.uc b/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_PerTrackCompression.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_RemoveEverySecondKey.uc b/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_RemoveEverySecondKey.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_RemoveLinearKeys.uc b/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_RemoveLinearKeys.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_RemoveTrivialKeys.uc b/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_RemoveTrivialKeys.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_RevertToRaw.uc b/Development/Src/Engine/Classes/AnimationCompressionAlgorithm_RevertToRaw.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ApexAsset.uc b/Development/Src/Engine/Classes/ApexAsset.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ApexClothingAsset.uc b/Development/Src/Engine/Classes/ApexClothingAsset.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ApexComponentBase.uc b/Development/Src/Engine/Classes/ApexComponentBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ApexDestructibleActor.uc b/Development/Src/Engine/Classes/ApexDestructibleActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ApexDestructibleActorSpawnable.uc b/Development/Src/Engine/Classes/ApexDestructibleActorSpawnable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ApexDestructibleAsset.uc b/Development/Src/Engine/Classes/ApexDestructibleAsset.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ApexDestructibleDamageParameters.uc b/Development/Src/Engine/Classes/ApexDestructibleDamageParameters.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ApexDynamicComponent.uc b/Development/Src/Engine/Classes/ApexDynamicComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ApexGenericAsset.uc b/Development/Src/Engine/Classes/ApexGenericAsset.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ApexStaticComponent.uc b/Development/Src/Engine/Classes/ApexStaticComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ApexStaticDestructibleComponent.uc b/Development/Src/Engine/Classes/ApexStaticDestructibleComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AppNotificationsBase.uc b/Development/Src/Engine/Classes/AppNotificationsBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ArrowComponent.uc b/Development/Src/Engine/Classes/ArrowComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AudioComponent.uc b/Development/Src/Engine/Classes/AudioComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AudioDevice.uc b/Development/Src/Engine/Classes/AudioDevice.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AutoLadder.uc b/Development/Src/Engine/Classes/AutoLadder.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AutoNavMeshPathObstacleUnregister.uc b/Development/Src/Engine/Classes/AutoNavMeshPathObstacleUnregister.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/AutoTestManager.uc b/Development/Src/Engine/Classes/AutoTestManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/BlockingVolume.uc b/Development/Src/Engine/Classes/BlockingVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/BlurEffect.uc b/Development/Src/Engine/Classes/BlurEffect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/BookMark.uc b/Development/Src/Engine/Classes/BookMark.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/BookMark2D.uc b/Development/Src/Engine/Classes/BookMark2D.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/BroadcastHandler.uc b/Development/Src/Engine/Classes/BroadcastHandler.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Brush.uc b/Development/Src/Engine/Classes/Brush.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/BrushComponent.uc b/Development/Src/Engine/Classes/BrushComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/BrushShape.uc b/Development/Src/Engine/Classes/BrushShape.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Camera.uc b/Development/Src/Engine/Classes/Camera.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CameraActor.uc b/Development/Src/Engine/Classes/CameraActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CameraAnim.uc b/Development/Src/Engine/Classes/CameraAnim.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CameraAnimInst.uc b/Development/Src/Engine/Classes/CameraAnimInst.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CameraConeComponent.uc b/Development/Src/Engine/Classes/CameraConeComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CameraModifier.uc b/Development/Src/Engine/Classes/CameraModifier.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CameraModifier_CameraShake.uc b/Development/Src/Engine/Classes/CameraModifier_CameraShake.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CameraShake.uc b/Development/Src/Engine/Classes/CameraShake.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Canvas.uc b/Development/Src/Engine/Classes/Canvas.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CeilingReachSpec.uc b/Development/Src/Engine/Classes/CeilingReachSpec.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CheatManager.uc b/Development/Src/Engine/Classes/CheatManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ClipPadEntry.uc b/Development/Src/Engine/Classes/ClipPadEntry.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CloudSaveSystem.uc b/Development/Src/Engine/Classes/CloudSaveSystem.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CloudSaveSystemDataBlobStoreInterface.uc b/Development/Src/Engine/Classes/CloudSaveSystemDataBlobStoreInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CloudSaveSystemKVSInterface.uc b/Development/Src/Engine/Classes/CloudSaveSystemKVSInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CloudStorageBase.uc b/Development/Src/Engine/Classes/CloudStorageBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CloudStorageBaseCloudSaveSystemKVS.uc b/Development/Src/Engine/Classes/CloudStorageBaseCloudSaveSystemKVS.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CloudStorageUpgradeHelper.uc b/Development/Src/Engine/Classes/CloudStorageUpgradeHelper.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CodecMovie.uc b/Development/Src/Engine/Classes/CodecMovie.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CodecMovieFallback.uc b/Development/Src/Engine/Classes/CodecMovieFallback.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ColorScaleVolume.uc b/Development/Src/Engine/Classes/ColorScaleVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Console.uc b/Development/Src/Engine/Classes/Console.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Controller.uc b/Development/Src/Engine/Classes/Controller.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CoverGroup.uc b/Development/Src/Engine/Classes/CoverGroup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CoverGroupRenderingComponent.uc b/Development/Src/Engine/Classes/CoverGroupRenderingComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CoverLink.uc b/Development/Src/Engine/Classes/CoverLink.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CoverMeshComponent.uc b/Development/Src/Engine/Classes/CoverMeshComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CoverReplicator.uc b/Development/Src/Engine/Classes/CoverReplicator.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CoverSlipReachSpec.uc b/Development/Src/Engine/Classes/CoverSlipReachSpec.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CrowdAgentBase.uc b/Development/Src/Engine/Classes/CrowdAgentBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CrowdPopulationManagerBase.uc b/Development/Src/Engine/Classes/CrowdPopulationManagerBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CullDistanceVolume.uc b/Development/Src/Engine/Classes/CullDistanceVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CurveEdPresetCurve.uc b/Development/Src/Engine/Classes/CurveEdPresetCurve.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CustomPropertyItemHandler.uc b/Development/Src/Engine/Classes/CustomPropertyItemHandler.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/CylinderComponent.uc b/Development/Src/Engine/Classes/CylinderComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DOFAndBloomEffect.uc b/Development/Src/Engine/Classes/DOFAndBloomEffect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DOFBloomMotionBlurEffect.uc b/Development/Src/Engine/Classes/DOFBloomMotionBlurEffect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DOFEffect.uc b/Development/Src/Engine/Classes/DOFEffect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DamageType.uc b/Development/Src/Engine/Classes/DamageType.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DataStoreClient.uc b/Development/Src/Engine/Classes/DataStoreClient.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DecalActor.uc b/Development/Src/Engine/Classes/DecalActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DecalActorBase.uc b/Development/Src/Engine/Classes/DecalActorBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DecalActorMovable.uc b/Development/Src/Engine/Classes/DecalActorMovable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DecalComponent.uc b/Development/Src/Engine/Classes/DecalComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DecalManager.uc b/Development/Src/Engine/Classes/DecalManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DecalMaterial.uc b/Development/Src/Engine/Classes/DecalMaterial.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DefaultPhysicsVolume.uc b/Development/Src/Engine/Classes/DefaultPhysicsVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DirectionalLight.uc b/Development/Src/Engine/Classes/DirectionalLight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DirectionalLightComponent.uc b/Development/Src/Engine/Classes/DirectionalLightComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DirectionalLightToggleable.uc b/Development/Src/Engine/Classes/DirectionalLightToggleable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DistributionFloatConstant.uc b/Development/Src/Engine/Classes/DistributionFloatConstant.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DistributionFloatConstantCurve.uc b/Development/Src/Engine/Classes/DistributionFloatConstantCurve.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DistributionFloatParameterBase.uc b/Development/Src/Engine/Classes/DistributionFloatParameterBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DistributionFloatParticleParameter.uc b/Development/Src/Engine/Classes/DistributionFloatParticleParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DistributionFloatSoundParameter.uc b/Development/Src/Engine/Classes/DistributionFloatSoundParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DistributionFloatUniform.uc b/Development/Src/Engine/Classes/DistributionFloatUniform.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DistributionFloatUniformCurve.uc b/Development/Src/Engine/Classes/DistributionFloatUniformCurve.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DistributionFloatUniformRange.uc b/Development/Src/Engine/Classes/DistributionFloatUniformRange.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DistributionVectorConstant.uc b/Development/Src/Engine/Classes/DistributionVectorConstant.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DistributionVectorConstantCurve.uc b/Development/Src/Engine/Classes/DistributionVectorConstantCurve.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DistributionVectorParameterBase.uc b/Development/Src/Engine/Classes/DistributionVectorParameterBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DistributionVectorParticleParameter.uc b/Development/Src/Engine/Classes/DistributionVectorParticleParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DistributionVectorUniform.uc b/Development/Src/Engine/Classes/DistributionVectorUniform.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DistributionVectorUniformCurve.uc b/Development/Src/Engine/Classes/DistributionVectorUniformCurve.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DistributionVectorUniformRange.uc b/Development/Src/Engine/Classes/DistributionVectorUniformRange.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DmgType_Crushed.uc b/Development/Src/Engine/Classes/DmgType_Crushed.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DmgType_Fell.uc b/Development/Src/Engine/Classes/DmgType_Fell.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DmgType_Suicided.uc b/Development/Src/Engine/Classes/DmgType_Suicided.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DmgType_Telefragged.uc b/Development/Src/Engine/Classes/DmgType_Telefragged.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DominantDirectionalLight.uc b/Development/Src/Engine/Classes/DominantDirectionalLight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DominantDirectionalLightComponent.uc b/Development/Src/Engine/Classes/DominantDirectionalLightComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DominantDirectionalLightMovable.uc b/Development/Src/Engine/Classes/DominantDirectionalLightMovable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DominantPointLight.uc b/Development/Src/Engine/Classes/DominantPointLight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DominantPointLightComponent.uc b/Development/Src/Engine/Classes/DominantPointLightComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DominantSpotLight.uc b/Development/Src/Engine/Classes/DominantSpotLight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DominantSpotLightComponent.uc b/Development/Src/Engine/Classes/DominantSpotLightComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DoorMarker.uc b/Development/Src/Engine/Classes/DoorMarker.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DownloadableContentEnumerator.uc b/Development/Src/Engine/Classes/DownloadableContentEnumerator.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DownloadableContentManager.uc b/Development/Src/Engine/Classes/DownloadableContentManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DrawBoxComponent.uc b/Development/Src/Engine/Classes/DrawBoxComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DrawCapsuleComponent.uc b/Development/Src/Engine/Classes/DrawCapsuleComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DrawConeComponent.uc b/Development/Src/Engine/Classes/DrawConeComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DrawCylinderComponent.uc b/Development/Src/Engine/Classes/DrawCylinderComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DrawFrustumComponent.uc b/Development/Src/Engine/Classes/DrawFrustumComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DrawLightConeComponent.uc b/Development/Src/Engine/Classes/DrawLightConeComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DrawLightRadiusComponent.uc b/Development/Src/Engine/Classes/DrawLightRadiusComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DrawPylonRadiusComponent.uc b/Development/Src/Engine/Classes/DrawPylonRadiusComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DrawQuadComponent.uc b/Development/Src/Engine/Classes/DrawQuadComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DrawSoundRadiusComponent.uc b/Development/Src/Engine/Classes/DrawSoundRadiusComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DrawSphereComponent.uc b/Development/Src/Engine/Classes/DrawSphereComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DroppedPickup.uc b/Development/Src/Engine/Classes/DroppedPickup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DynamicAnchor.uc b/Development/Src/Engine/Classes/DynamicAnchor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DynamicBlockingVolume.uc b/Development/Src/Engine/Classes/DynamicBlockingVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DynamicCameraActor.uc b/Development/Src/Engine/Classes/DynamicCameraActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DynamicLightEnvironmentComponent.uc b/Development/Src/Engine/Classes/DynamicLightEnvironmentComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DynamicPhysicsVolume.uc b/Development/Src/Engine/Classes/DynamicPhysicsVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DynamicPylon.uc b/Development/Src/Engine/Classes/DynamicPylon.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DynamicSMActor.uc b/Development/Src/Engine/Classes/DynamicSMActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DynamicSMActor_Spawnable.uc b/Development/Src/Engine/Classes/DynamicSMActor_Spawnable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/DynamicTriggerVolume.uc b/Development/Src/Engine/Classes/DynamicTriggerVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/EdCoordSystem.uc b/Development/Src/Engine/Classes/EdCoordSystem.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/EditorLinkSelectionInterface.uc b/Development/Src/Engine/Classes/EditorLinkSelectionInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Emitter.uc b/Development/Src/Engine/Classes/Emitter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/EmitterCameraLensEffectBase.uc b/Development/Src/Engine/Classes/EmitterCameraLensEffectBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/EmitterPool.uc b/Development/Src/Engine/Classes/EmitterPool.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/EmitterSpawnable.uc b/Development/Src/Engine/Classes/EmitterSpawnable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Engine.uc b/Development/Src/Engine/Classes/Engine.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/EngineBaseTypes.uc b/Development/Src/Engine/Classes/EngineBaseTypes.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/EngineTypes.uc b/Development/Src/Engine/Classes/EngineTypes.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/EnvironmentVolume.uc b/Development/Src/Engine/Classes/EnvironmentVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ExponentialHeightFog.uc b/Development/Src/Engine/Classes/ExponentialHeightFog.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ExponentialHeightFogComponent.uc b/Development/Src/Engine/Classes/ExponentialHeightFogComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FaceFXAnimSet.uc b/Development/Src/Engine/Classes/FaceFXAnimSet.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FaceFXAsset.uc b/Development/Src/Engine/Classes/FaceFXAsset.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FacebookIntegration.uc b/Development/Src/Engine/Classes/FacebookIntegration.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FailedConnect.uc b/Development/Src/Engine/Classes/FailedConnect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FileLog.uc b/Development/Src/Engine/Classes/FileLog.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FileWriter.uc b/Development/Src/Engine/Classes/FileWriter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FloorToCeilingReachSpec.uc b/Development/Src/Engine/Classes/FloorToCeilingReachSpec.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FluidInfluenceActor.uc b/Development/Src/Engine/Classes/FluidInfluenceActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FluidInfluenceComponent.uc b/Development/Src/Engine/Classes/FluidInfluenceComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FluidSurfaceActor.uc b/Development/Src/Engine/Classes/FluidSurfaceActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FluidSurfaceActorMovable.uc b/Development/Src/Engine/Classes/FluidSurfaceActorMovable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FluidSurfaceComponent.uc b/Development/Src/Engine/Classes/FluidSurfaceComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FogVolumeConeDensityComponent.uc b/Development/Src/Engine/Classes/FogVolumeConeDensityComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FogVolumeConeDensityInfo.uc b/Development/Src/Engine/Classes/FogVolumeConeDensityInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FogVolumeConstantDensityComponent.uc b/Development/Src/Engine/Classes/FogVolumeConstantDensityComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FogVolumeConstantDensityInfo.uc b/Development/Src/Engine/Classes/FogVolumeConstantDensityInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FogVolumeDensityComponent.uc b/Development/Src/Engine/Classes/FogVolumeDensityComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FogVolumeDensityInfo.uc b/Development/Src/Engine/Classes/FogVolumeDensityInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FogVolumeLinearHalfspaceDensityComponent.uc b/Development/Src/Engine/Classes/FogVolumeLinearHalfspaceDensityComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FogVolumeLinearHalfspaceDensityInfo.uc b/Development/Src/Engine/Classes/FogVolumeLinearHalfspaceDensityInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FogVolumeSphericalDensityComponent.uc b/Development/Src/Engine/Classes/FogVolumeSphericalDensityComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FogVolumeSphericalDensityInfo.uc b/Development/Src/Engine/Classes/FogVolumeSphericalDensityInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Font.uc b/Development/Src/Engine/Classes/Font.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FontImportOptions.uc b/Development/Src/Engine/Classes/FontImportOptions.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ForceFeedbackManager.uc b/Development/Src/Engine/Classes/ForceFeedbackManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ForceFeedbackWaveform.uc b/Development/Src/Engine/Classes/ForceFeedbackWaveform.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ForceFieldShape.uc b/Development/Src/Engine/Classes/ForceFieldShape.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ForceFieldShapeBox.uc b/Development/Src/Engine/Classes/ForceFieldShapeBox.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ForceFieldShapeCapsule.uc b/Development/Src/Engine/Classes/ForceFieldShapeCapsule.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ForceFieldShapeSphere.uc b/Development/Src/Engine/Classes/ForceFieldShapeSphere.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ForcedLoopSoundNode.uc b/Development/Src/Engine/Classes/ForcedLoopSoundNode.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ForcedReachSpec.uc b/Development/Src/Engine/Classes/ForcedReachSpec.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FractureManager.uc b/Development/Src/Engine/Classes/FractureManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FractureMaterial.uc b/Development/Src/Engine/Classes/FractureMaterial.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FracturedBaseComponent.uc b/Development/Src/Engine/Classes/FracturedBaseComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FracturedSMActorSpawnable.uc b/Development/Src/Engine/Classes/FracturedSMActorSpawnable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FracturedSkinnedMeshComponent.uc b/Development/Src/Engine/Classes/FracturedSkinnedMeshComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FracturedStaticMeshActor.uc b/Development/Src/Engine/Classes/FracturedStaticMeshActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FracturedStaticMeshActor_Spawnable.uc b/Development/Src/Engine/Classes/FracturedStaticMeshActor_Spawnable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FracturedStaticMeshComponent.uc b/Development/Src/Engine/Classes/FracturedStaticMeshComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/FracturedStaticMeshPart.uc b/Development/Src/Engine/Classes/FracturedStaticMeshPart.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GameEngine.uc b/Development/Src/Engine/Classes/GameEngine.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GameInfo.uc b/Development/Src/Engine/Classes/GameInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GameMessage.uc b/Development/Src/Engine/Classes/GameMessage.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GameReplicationInfo.uc b/Development/Src/Engine/Classes/GameReplicationInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GameStats.uci b/Development/Src/Engine/Classes/GameStats.uci old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GameUISceneClient.uc b/Development/Src/Engine/Classes/GameUISceneClient.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GameViewportClient.uc b/Development/Src/Engine/Classes/GameViewportClient.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GameplayEvents.uc b/Development/Src/Engine/Classes/GameplayEvents.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GameplayEventsHandler.uc b/Development/Src/Engine/Classes/GameplayEventsHandler.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GameplayEventsReader.uc b/Development/Src/Engine/Classes/GameplayEventsReader.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GameplayEventsUploadAnalytics.uc b/Development/Src/Engine/Classes/GameplayEventsUploadAnalytics.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GameplayEventsWriter.uc b/Development/Src/Engine/Classes/GameplayEventsWriter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GameplayEventsWriterBase.uc b/Development/Src/Engine/Classes/GameplayEventsWriterBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GeneratedMeshAreaLight.uc b/Development/Src/Engine/Classes/GeneratedMeshAreaLight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GenericParamListStatEntry.uc b/Development/Src/Engine/Classes/GenericParamListStatEntry.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Goal_AtActor.uc b/Development/Src/Engine/Classes/Goal_AtActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Goal_Null.uc b/Development/Src/Engine/Classes/Goal_Null.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/GravityVolume.uc b/Development/Src/Engine/Classes/GravityVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/HUD.uc b/Development/Src/Engine/Classes/HUD.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/HeadTrackingComponent.uc b/Development/Src/Engine/Classes/HeadTrackingComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/HeightFog.uc b/Development/Src/Engine/Classes/HeightFog.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/HeightFogComponent.uc b/Development/Src/Engine/Classes/HeightFogComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/HttpBaseInterface.uc b/Development/Src/Engine/Classes/HttpBaseInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/HttpFactory.uc b/Development/Src/Engine/Classes/HttpFactory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/HttpRequestInterface.uc b/Development/Src/Engine/Classes/HttpRequestInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/HttpResponseInterface.uc b/Development/Src/Engine/Classes/HttpResponseInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/HttpStatusCodes.uci b/Development/Src/Engine/Classes/HttpStatusCodes.uci old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ImageBasedReflectionComponent.uc b/Development/Src/Engine/Classes/ImageBasedReflectionComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ImageReflection.uc b/Development/Src/Engine/Classes/ImageReflection.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ImageReflectionComponent.uc b/Development/Src/Engine/Classes/ImageReflectionComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ImageReflectionSceneCapture.uc b/Development/Src/Engine/Classes/ImageReflectionSceneCapture.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ImageReflectionShadowPlane.uc b/Development/Src/Engine/Classes/ImageReflectionShadowPlane.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ImageReflectionShadowPlaneComponent.uc b/Development/Src/Engine/Classes/ImageReflectionShadowPlaneComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InAppMessageBase.uc b/Development/Src/Engine/Classes/InAppMessageBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InGameAdManager.uc b/Development/Src/Engine/Classes/InGameAdManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Info.uc b/Development/Src/Engine/Classes/Info.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/IniLocPatcher.uc b/Development/Src/Engine/Classes/IniLocPatcher.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Input.uc b/Development/Src/Engine/Classes/Input.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InstancedFoliageActor.uc b/Development/Src/Engine/Classes/InstancedFoliageActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InstancedFoliageSettings.uc b/Development/Src/Engine/Classes/InstancedFoliageSettings.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InstancedStaticMeshComponent.uc b/Development/Src/Engine/Classes/InstancedStaticMeshComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Interaction.uc b/Development/Src/Engine/Classes/Interaction.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InteractiveFoliageActor.uc b/Development/Src/Engine/Classes/InteractiveFoliageActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InteractiveFoliageComponent.uc b/Development/Src/Engine/Classes/InteractiveFoliageComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Interface_NavMeshPathObject.uc b/Development/Src/Engine/Classes/Interface_NavMeshPathObject.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Interface_NavMeshPathObstacle.uc b/Development/Src/Engine/Classes/Interface_NavMeshPathObstacle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Interface_NavMeshPathSwitch.uc b/Development/Src/Engine/Classes/Interface_NavMeshPathSwitch.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Interface_NavigationHandle.uc b/Development/Src/Engine/Classes/Interface_NavigationHandle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Interface_PylonGeometryProvider.uc b/Development/Src/Engine/Classes/Interface_PylonGeometryProvider.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Interface_RVO.uc b/Development/Src/Engine/Classes/Interface_RVO.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Interface_Speaker.uc b/Development/Src/Engine/Classes/Interface_Speaker.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpActor.uc b/Development/Src/Engine/Classes/InterpActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpActor_ForCinematic.uc b/Development/Src/Engine/Classes/InterpActor_ForCinematic.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpCurveEdSetup.uc b/Development/Src/Engine/Classes/InterpCurveEdSetup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpData.uc b/Development/Src/Engine/Classes/InterpData.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpFilter.uc b/Development/Src/Engine/Classes/InterpFilter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpFilter_Classes.uc b/Development/Src/Engine/Classes/InterpFilter_Classes.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpFilter_Custom.uc b/Development/Src/Engine/Classes/InterpFilter_Custom.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpGroup.uc b/Development/Src/Engine/Classes/InterpGroup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpGroupAI.uc b/Development/Src/Engine/Classes/InterpGroupAI.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpGroupCamera.uc b/Development/Src/Engine/Classes/InterpGroupCamera.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpGroupDirector.uc b/Development/Src/Engine/Classes/InterpGroupDirector.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpGroupInst.uc b/Development/Src/Engine/Classes/InterpGroupInst.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpGroupInstAI.uc b/Development/Src/Engine/Classes/InterpGroupInstAI.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpGroupInstCamera.uc b/Development/Src/Engine/Classes/InterpGroupInstCamera.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpGroupInstDirector.uc b/Development/Src/Engine/Classes/InterpGroupInstDirector.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrack.uc b/Development/Src/Engine/Classes/InterpTrack.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackAnimControl.uc b/Development/Src/Engine/Classes/InterpTrackAnimControl.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackAudioMaster.uc b/Development/Src/Engine/Classes/InterpTrackAudioMaster.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackBoolProp.uc b/Development/Src/Engine/Classes/InterpTrackBoolProp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackColorProp.uc b/Development/Src/Engine/Classes/InterpTrackColorProp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackColorScale.uc b/Development/Src/Engine/Classes/InterpTrackColorScale.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackDirector.uc b/Development/Src/Engine/Classes/InterpTrackDirector.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackEvent.uc b/Development/Src/Engine/Classes/InterpTrackEvent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackFaceFX.uc b/Development/Src/Engine/Classes/InterpTrackFaceFX.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackFade.uc b/Development/Src/Engine/Classes/InterpTrackFade.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackFloatBase.uc b/Development/Src/Engine/Classes/InterpTrackFloatBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackFloatMaterialParam.uc b/Development/Src/Engine/Classes/InterpTrackFloatMaterialParam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackFloatParticleParam.uc b/Development/Src/Engine/Classes/InterpTrackFloatParticleParam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackFloatProp.uc b/Development/Src/Engine/Classes/InterpTrackFloatProp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackHeadTracking.uc b/Development/Src/Engine/Classes/InterpTrackHeadTracking.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInst.uc b/Development/Src/Engine/Classes/InterpTrackInst.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstAnimControl.uc b/Development/Src/Engine/Classes/InterpTrackInstAnimControl.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstAudioMaster.uc b/Development/Src/Engine/Classes/InterpTrackInstAudioMaster.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstBoolProp.uc b/Development/Src/Engine/Classes/InterpTrackInstBoolProp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstColorProp.uc b/Development/Src/Engine/Classes/InterpTrackInstColorProp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstColorScale.uc b/Development/Src/Engine/Classes/InterpTrackInstColorScale.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstDirector.uc b/Development/Src/Engine/Classes/InterpTrackInstDirector.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstEvent.uc b/Development/Src/Engine/Classes/InterpTrackInstEvent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstFaceFX.uc b/Development/Src/Engine/Classes/InterpTrackInstFaceFX.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstFade.uc b/Development/Src/Engine/Classes/InterpTrackInstFade.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstFloatMaterialParam.uc b/Development/Src/Engine/Classes/InterpTrackInstFloatMaterialParam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstFloatParticleParam.uc b/Development/Src/Engine/Classes/InterpTrackInstFloatParticleParam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstFloatProp.uc b/Development/Src/Engine/Classes/InterpTrackInstFloatProp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstHeadTracking.uc b/Development/Src/Engine/Classes/InterpTrackInstHeadTracking.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstLinearColorProp.uc b/Development/Src/Engine/Classes/InterpTrackInstLinearColorProp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstMorphWeight.uc b/Development/Src/Engine/Classes/InterpTrackInstMorphWeight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstMove.uc b/Development/Src/Engine/Classes/InterpTrackInstMove.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstNotify.uc b/Development/Src/Engine/Classes/InterpTrackInstNotify.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstParticleReplay.uc b/Development/Src/Engine/Classes/InterpTrackInstParticleReplay.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstProperty.uc b/Development/Src/Engine/Classes/InterpTrackInstProperty.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstSkelControlScale.uc b/Development/Src/Engine/Classes/InterpTrackInstSkelControlScale.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstSkelControlStrength.uc b/Development/Src/Engine/Classes/InterpTrackInstSkelControlStrength.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstSlomo.uc b/Development/Src/Engine/Classes/InterpTrackInstSlomo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstSound.uc b/Development/Src/Engine/Classes/InterpTrackInstSound.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstToggle.uc b/Development/Src/Engine/Classes/InterpTrackInstToggle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstVectorMaterialParam.uc b/Development/Src/Engine/Classes/InterpTrackInstVectorMaterialParam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstVectorProp.uc b/Development/Src/Engine/Classes/InterpTrackInstVectorProp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackInstVisibility.uc b/Development/Src/Engine/Classes/InterpTrackInstVisibility.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackLinearColorBase.uc b/Development/Src/Engine/Classes/InterpTrackLinearColorBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackLinearColorProp.uc b/Development/Src/Engine/Classes/InterpTrackLinearColorProp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackMorphWeight.uc b/Development/Src/Engine/Classes/InterpTrackMorphWeight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackMove.uc b/Development/Src/Engine/Classes/InterpTrackMove.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackMoveAxis.uc b/Development/Src/Engine/Classes/InterpTrackMoveAxis.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackNotify.uc b/Development/Src/Engine/Classes/InterpTrackNotify.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackParticleReplay.uc b/Development/Src/Engine/Classes/InterpTrackParticleReplay.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackSkelControlScale.uc b/Development/Src/Engine/Classes/InterpTrackSkelControlScale.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackSkelControlStrength.uc b/Development/Src/Engine/Classes/InterpTrackSkelControlStrength.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackSlomo.uc b/Development/Src/Engine/Classes/InterpTrackSlomo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackSound.uc b/Development/Src/Engine/Classes/InterpTrackSound.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackToggle.uc b/Development/Src/Engine/Classes/InterpTrackToggle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackVectorBase.uc b/Development/Src/Engine/Classes/InterpTrackVectorBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackVectorMaterialParam.uc b/Development/Src/Engine/Classes/InterpTrackVectorMaterialParam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackVectorProp.uc b/Development/Src/Engine/Classes/InterpTrackVectorProp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InterpTrackVisibility.uc b/Development/Src/Engine/Classes/InterpTrackVisibility.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Inventory.uc b/Development/Src/Engine/Classes/Inventory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/InventoryManager.uc b/Development/Src/Engine/Classes/InventoryManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/JsonObject.uc b/Development/Src/Engine/Classes/JsonObject.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/KActor.uc b/Development/Src/Engine/Classes/KActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/KActorFromStatic.uc b/Development/Src/Engine/Classes/KActorFromStatic.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/KActorSpawnable.uc b/Development/Src/Engine/Classes/KActorSpawnable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/KAsset.uc b/Development/Src/Engine/Classes/KAsset.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/KAssetSpawnable.uc b/Development/Src/Engine/Classes/KAssetSpawnable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/KMeshProps.uc b/Development/Src/Engine/Classes/KMeshProps.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Keypoint.uc b/Development/Src/Engine/Classes/Keypoint.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/KillZDamageType.uc b/Development/Src/Engine/Classes/KillZDamageType.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/KismetBookMark.uc b/Development/Src/Engine/Classes/KismetBookMark.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Ladder.uc b/Development/Src/Engine/Classes/Ladder.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LadderReachSpec.uc b/Development/Src/Engine/Classes/LadderReachSpec.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LadderVolume.uc b/Development/Src/Engine/Classes/LadderVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Landscape.uc b/Development/Src/Engine/Classes/Landscape.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LandscapeComponent.uc b/Development/Src/Engine/Classes/LandscapeComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LandscapeGizmoActiveActor.uc b/Development/Src/Engine/Classes/LandscapeGizmoActiveActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LandscapeGizmoActor.uc b/Development/Src/Engine/Classes/LandscapeGizmoActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LandscapeGizmoRenderComponent.uc b/Development/Src/Engine/Classes/LandscapeGizmoRenderComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LandscapeHeightfieldCollisionComponent.uc b/Development/Src/Engine/Classes/LandscapeHeightfieldCollisionComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LandscapeInfo.uc b/Development/Src/Engine/Classes/LandscapeInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LandscapeLayerInfoObject.uc b/Development/Src/Engine/Classes/LandscapeLayerInfoObject.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LandscapeMaterialInstanceConstant.uc b/Development/Src/Engine/Classes/LandscapeMaterialInstanceConstant.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LandscapeProxy.uc b/Development/Src/Engine/Classes/LandscapeProxy.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LensFlare.uc b/Development/Src/Engine/Classes/LensFlare.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LensFlareComponent.uc b/Development/Src/Engine/Classes/LensFlareComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LensFlareSource.uc b/Development/Src/Engine/Classes/LensFlareSource.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LevelGridVolume.uc b/Development/Src/Engine/Classes/LevelGridVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LevelGridVolumeRenderingComponent.uc b/Development/Src/Engine/Classes/LevelGridVolumeRenderingComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LevelStreaming.uc b/Development/Src/Engine/Classes/LevelStreaming.uc old mode 100755 new mode 100644 index 81006627..22f4303b --- a/Development/Src/Engine/Classes/LevelStreaming.uc +++ b/Development/Src/Engine/Classes/LevelStreaming.uc @@ -12,7 +12,7 @@ class LevelStreaming extends Object native; /** Name of the level package name used for loading. */ -var() name PackageName; // HACK: un-const'd for paladins +var() editconst const name PackageName; /** Pointer to Level object if currently loaded/ streamed in. */ var transient const level LoadedLevel; diff --git a/Development/Src/Engine/Classes/LevelStreamingAlwaysLoaded.uc b/Development/Src/Engine/Classes/LevelStreamingAlwaysLoaded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LevelStreamingDistance.uc b/Development/Src/Engine/Classes/LevelStreamingDistance.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LevelStreamingKismet.uc b/Development/Src/Engine/Classes/LevelStreamingKismet.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LevelStreamingPersistent.uc b/Development/Src/Engine/Classes/LevelStreamingPersistent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LevelStreamingVolume.uc b/Development/Src/Engine/Classes/LevelStreamingVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LiftCenter.uc b/Development/Src/Engine/Classes/LiftCenter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LiftExit.uc b/Development/Src/Engine/Classes/LiftExit.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Light.uc b/Development/Src/Engine/Classes/Light.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LightComponent.uc b/Development/Src/Engine/Classes/LightComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LightEnvironmentComponent.uc b/Development/Src/Engine/Classes/LightEnvironmentComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LightFunction.uc b/Development/Src/Engine/Classes/LightFunction.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LightmappedSurfaceCollection.uc b/Development/Src/Engine/Classes/LightmappedSurfaceCollection.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LightmassCharacterIndirectDetailVolume.uc b/Development/Src/Engine/Classes/LightmassCharacterIndirectDetailVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LightmassImportanceVolume.uc b/Development/Src/Engine/Classes/LightmassImportanceVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LightmassLevelSettings.uc b/Development/Src/Engine/Classes/LightmassLevelSettings.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LightmassPrimitiveSettingsObject.uc b/Development/Src/Engine/Classes/LightmassPrimitiveSettingsObject.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LineBatchComponent.uc b/Development/Src/Engine/Classes/LineBatchComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LocalMessage.uc b/Development/Src/Engine/Classes/LocalMessage.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/LocalPlayer.uc b/Development/Src/Engine/Classes/LocalPlayer.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MantleReachSpec.uc b/Development/Src/Engine/Classes/MantleReachSpec.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MapInfo.uc b/Development/Src/Engine/Classes/MapInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MassiveLODOverrideVolume.uc b/Development/Src/Engine/Classes/MassiveLODOverrideVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Material.uc b/Development/Src/Engine/Classes/Material.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialEffect.uc b/Development/Src/Engine/Classes/MaterialEffect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpression.uc b/Development/Src/Engine/Classes/MaterialExpression.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionAbs.uc b/Development/Src/Engine/Classes/MaterialExpressionAbs.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionActorWorldPosition.uc b/Development/Src/Engine/Classes/MaterialExpressionActorWorldPosition.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionAdd.uc b/Development/Src/Engine/Classes/MaterialExpressionAdd.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionAntialiasedTextureMask.uc b/Development/Src/Engine/Classes/MaterialExpressionAntialiasedTextureMask.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionAppendVector.uc b/Development/Src/Engine/Classes/MaterialExpressionAppendVector.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionBumpOffset.uc b/Development/Src/Engine/Classes/MaterialExpressionBumpOffset.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionCameraVector.uc b/Development/Src/Engine/Classes/MaterialExpressionCameraVector.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionCameraWorldPosition.uc b/Development/Src/Engine/Classes/MaterialExpressionCameraWorldPosition.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionCeil.uc b/Development/Src/Engine/Classes/MaterialExpressionCeil.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionClamp.uc b/Development/Src/Engine/Classes/MaterialExpressionClamp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionComment.uc b/Development/Src/Engine/Classes/MaterialExpressionComment.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionComponentMask.uc b/Development/Src/Engine/Classes/MaterialExpressionComponentMask.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionConstant.uc b/Development/Src/Engine/Classes/MaterialExpressionConstant.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionConstant2Vector.uc b/Development/Src/Engine/Classes/MaterialExpressionConstant2Vector.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionConstant3Vector.uc b/Development/Src/Engine/Classes/MaterialExpressionConstant3Vector.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionConstant4Vector.uc b/Development/Src/Engine/Classes/MaterialExpressionConstant4Vector.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionConstantBiasScale.uc b/Development/Src/Engine/Classes/MaterialExpressionConstantBiasScale.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionConstantClamp.uc b/Development/Src/Engine/Classes/MaterialExpressionConstantClamp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionCosine.uc b/Development/Src/Engine/Classes/MaterialExpressionCosine.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionCrossProduct.uc b/Development/Src/Engine/Classes/MaterialExpressionCrossProduct.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionCustom.uc b/Development/Src/Engine/Classes/MaterialExpressionCustom.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionCustomTexture.uc b/Development/Src/Engine/Classes/MaterialExpressionCustomTexture.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionDepthBiasBlend.uc b/Development/Src/Engine/Classes/MaterialExpressionDepthBiasBlend.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionDepthBiasedAlpha.uc b/Development/Src/Engine/Classes/MaterialExpressionDepthBiasedAlpha.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionDepthBiasedBlend.uc b/Development/Src/Engine/Classes/MaterialExpressionDepthBiasedBlend.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionDepthOfFieldFunction.uc b/Development/Src/Engine/Classes/MaterialExpressionDepthOfFieldFunction.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionDeriveNormalZ.uc b/Development/Src/Engine/Classes/MaterialExpressionDeriveNormalZ.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionDesaturation.uc b/Development/Src/Engine/Classes/MaterialExpressionDesaturation.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionDestColor.uc b/Development/Src/Engine/Classes/MaterialExpressionDestColor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionDestDepth.uc b/Development/Src/Engine/Classes/MaterialExpressionDestDepth.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionDistance.uc b/Development/Src/Engine/Classes/MaterialExpressionDistance.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionDivide.uc b/Development/Src/Engine/Classes/MaterialExpressionDivide.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionDotProduct.uc b/Development/Src/Engine/Classes/MaterialExpressionDotProduct.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionDynamicParameter.uc b/Development/Src/Engine/Classes/MaterialExpressionDynamicParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionFlipBookSample.uc b/Development/Src/Engine/Classes/MaterialExpressionFlipBookSample.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionFloor.uc b/Development/Src/Engine/Classes/MaterialExpressionFloor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionFluidNormal.uc b/Development/Src/Engine/Classes/MaterialExpressionFluidNormal.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionFmod.uc b/Development/Src/Engine/Classes/MaterialExpressionFmod.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionFoliageImpulseDirection.uc b/Development/Src/Engine/Classes/MaterialExpressionFoliageImpulseDirection.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionFoliageNormalizedRotationAxisAndAngle.uc b/Development/Src/Engine/Classes/MaterialExpressionFoliageNormalizedRotationAxisAndAngle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionFontSample.uc b/Development/Src/Engine/Classes/MaterialExpressionFontSample.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionFontSampleParameter.uc b/Development/Src/Engine/Classes/MaterialExpressionFontSampleParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionFrac.uc b/Development/Src/Engine/Classes/MaterialExpressionFrac.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionFresnel.uc b/Development/Src/Engine/Classes/MaterialExpressionFresnel.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionFunctionInput.uc b/Development/Src/Engine/Classes/MaterialExpressionFunctionInput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionFunctionOutput.uc b/Development/Src/Engine/Classes/MaterialExpressionFunctionOutput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionIf.uc b/Development/Src/Engine/Classes/MaterialExpressionIf.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionLandscapeLayerBlend.uc b/Development/Src/Engine/Classes/MaterialExpressionLandscapeLayerBlend.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionLensFlareIntensity.uc b/Development/Src/Engine/Classes/MaterialExpressionLensFlareIntensity.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionLensFlareOcclusion.uc b/Development/Src/Engine/Classes/MaterialExpressionLensFlareOcclusion.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionLensFlareRadialDistance.uc b/Development/Src/Engine/Classes/MaterialExpressionLensFlareRadialDistance.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionLensFlareRayDistance.uc b/Development/Src/Engine/Classes/MaterialExpressionLensFlareRayDistance.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionLensFlareSourceDistance.uc b/Development/Src/Engine/Classes/MaterialExpressionLensFlareSourceDistance.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionLightVector.uc b/Development/Src/Engine/Classes/MaterialExpressionLightVector.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionLightmapUVs.uc b/Development/Src/Engine/Classes/MaterialExpressionLightmapUVs.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionLightmassReplace.uc b/Development/Src/Engine/Classes/MaterialExpressionLightmassReplace.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionLinearInterpolate.uc b/Development/Src/Engine/Classes/MaterialExpressionLinearInterpolate.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionMaterialFunctionCall.uc b/Development/Src/Engine/Classes/MaterialExpressionMaterialFunctionCall.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionMeshEmitterDynamicParameter.uc b/Development/Src/Engine/Classes/MaterialExpressionMeshEmitterDynamicParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionMeshEmitterVertexColor.uc b/Development/Src/Engine/Classes/MaterialExpressionMeshEmitterVertexColor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionMeshSubUV.uc b/Development/Src/Engine/Classes/MaterialExpressionMeshSubUV.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionMeshSubUVBlend.uc b/Development/Src/Engine/Classes/MaterialExpressionMeshSubUVBlend.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionMultiply.uc b/Development/Src/Engine/Classes/MaterialExpressionMultiply.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionNormalize.uc b/Development/Src/Engine/Classes/MaterialExpressionNormalize.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionObjectOrientation.uc b/Development/Src/Engine/Classes/MaterialExpressionObjectOrientation.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionObjectRadius.uc b/Development/Src/Engine/Classes/MaterialExpressionObjectRadius.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionObjectWorldPosition.uc b/Development/Src/Engine/Classes/MaterialExpressionObjectWorldPosition.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionOcclusionPercentage.uc b/Development/Src/Engine/Classes/MaterialExpressionOcclusionPercentage.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionOneMinus.uc b/Development/Src/Engine/Classes/MaterialExpressionOneMinus.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionPanner.uc b/Development/Src/Engine/Classes/MaterialExpressionPanner.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionParameter.uc b/Development/Src/Engine/Classes/MaterialExpressionParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionParticleMacroUV.uc b/Development/Src/Engine/Classes/MaterialExpressionParticleMacroUV.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionParticleSubUV.uc b/Development/Src/Engine/Classes/MaterialExpressionParticleSubUV.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionPerInstanceRandom.uc b/Development/Src/Engine/Classes/MaterialExpressionPerInstanceRandom.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionPixelDepth.uc b/Development/Src/Engine/Classes/MaterialExpressionPixelDepth.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionPower.uc b/Development/Src/Engine/Classes/MaterialExpressionPower.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionQualitySwitch.uc b/Development/Src/Engine/Classes/MaterialExpressionQualitySwitch.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionReflectionVector.uc b/Development/Src/Engine/Classes/MaterialExpressionReflectionVector.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionRotateAboutAxis.uc b/Development/Src/Engine/Classes/MaterialExpressionRotateAboutAxis.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionRotator.uc b/Development/Src/Engine/Classes/MaterialExpressionRotator.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionScalarParameter.uc b/Development/Src/Engine/Classes/MaterialExpressionScalarParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionSceneDepth.uc b/Development/Src/Engine/Classes/MaterialExpressionSceneDepth.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionSceneTexture.uc b/Development/Src/Engine/Classes/MaterialExpressionSceneTexture.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionScreenPosition.uc b/Development/Src/Engine/Classes/MaterialExpressionScreenPosition.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionScreenSize.uc b/Development/Src/Engine/Classes/MaterialExpressionScreenSize.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionSine.uc b/Development/Src/Engine/Classes/MaterialExpressionSine.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionSphereMask.uc b/Development/Src/Engine/Classes/MaterialExpressionSphereMask.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionSquareRoot.uc b/Development/Src/Engine/Classes/MaterialExpressionSquareRoot.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionStaticBool.uc b/Development/Src/Engine/Classes/MaterialExpressionStaticBool.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionStaticBoolParameter.uc b/Development/Src/Engine/Classes/MaterialExpressionStaticBoolParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionStaticComponentMaskParameter.uc b/Development/Src/Engine/Classes/MaterialExpressionStaticComponentMaskParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionStaticSwitch.uc b/Development/Src/Engine/Classes/MaterialExpressionStaticSwitch.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionStaticSwitchParameter.uc b/Development/Src/Engine/Classes/MaterialExpressionStaticSwitchParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionSubtract.uc b/Development/Src/Engine/Classes/MaterialExpressionSubtract.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTerrainLayerCoords.uc b/Development/Src/Engine/Classes/MaterialExpressionTerrainLayerCoords.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTerrainLayerSwitch.uc b/Development/Src/Engine/Classes/MaterialExpressionTerrainLayerSwitch.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTerrainLayerWeight.uc b/Development/Src/Engine/Classes/MaterialExpressionTerrainLayerWeight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTexelSize.uc b/Development/Src/Engine/Classes/MaterialExpressionTexelSize.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTextureCoordinate.uc b/Development/Src/Engine/Classes/MaterialExpressionTextureCoordinate.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTextureObject.uc b/Development/Src/Engine/Classes/MaterialExpressionTextureObject.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTextureObjectParameter.uc b/Development/Src/Engine/Classes/MaterialExpressionTextureObjectParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTextureSample.uc b/Development/Src/Engine/Classes/MaterialExpressionTextureSample.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameter.uc b/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameter2D.uc b/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameter2D.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterCube.uc b/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterCube.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterFlipbook.uc b/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterFlipbook.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterMeshSubUV.uc b/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterMeshSubUV.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterMeshSubUVBlend.uc b/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterMeshSubUVBlend.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterMovie.uc b/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterMovie.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterNormal.uc b/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterNormal.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterSubUV.uc b/Development/Src/Engine/Classes/MaterialExpressionTextureSampleParameterSubUV.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTime.uc b/Development/Src/Engine/Classes/MaterialExpressionTime.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTransform.uc b/Development/Src/Engine/Classes/MaterialExpressionTransform.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTransformPosition.uc b/Development/Src/Engine/Classes/MaterialExpressionTransformPosition.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionTwoSidedSign.uc b/Development/Src/Engine/Classes/MaterialExpressionTwoSidedSign.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionVectorParameter.uc b/Development/Src/Engine/Classes/MaterialExpressionVectorParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionVertexColor.uc b/Development/Src/Engine/Classes/MaterialExpressionVertexColor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionWindDirectionAndSpeed.uc b/Development/Src/Engine/Classes/MaterialExpressionWindDirectionAndSpeed.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionWorldNormal.uc b/Development/Src/Engine/Classes/MaterialExpressionWorldNormal.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialExpressionWorldPosition.uc b/Development/Src/Engine/Classes/MaterialExpressionWorldPosition.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialFunction.uc b/Development/Src/Engine/Classes/MaterialFunction.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialInstance.uc b/Development/Src/Engine/Classes/MaterialInstance.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialInstanceActor.uc b/Development/Src/Engine/Classes/MaterialInstanceActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialInstanceConstant.uc b/Development/Src/Engine/Classes/MaterialInstanceConstant.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialInstanceTimeVarying.uc b/Development/Src/Engine/Classes/MaterialInstanceTimeVarying.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialInstanceTimeVaryingActor.uc b/Development/Src/Engine/Classes/MaterialInstanceTimeVaryingActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MaterialInterface.uc b/Development/Src/Engine/Classes/MaterialInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MatineeActor.uc b/Development/Src/Engine/Classes/MatineeActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MatineePawn.uc b/Development/Src/Engine/Classes/MatineePawn.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MeshComponent.uc b/Development/Src/Engine/Classes/MeshComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MeshComponentFactory.uc b/Development/Src/Engine/Classes/MeshComponentFactory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MicroTransactionBase.uc b/Development/Src/Engine/Classes/MicroTransactionBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ModelComponent.uc b/Development/Src/Engine/Classes/ModelComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MorphNodeBase.uc b/Development/Src/Engine/Classes/MorphNodeBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MorphNodeMultiPose.uc b/Development/Src/Engine/Classes/MorphNodeMultiPose.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MorphNodePose.uc b/Development/Src/Engine/Classes/MorphNodePose.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MorphNodeWeight.uc b/Development/Src/Engine/Classes/MorphNodeWeight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MorphNodeWeightBase.uc b/Development/Src/Engine/Classes/MorphNodeWeightBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MorphNodeWeightByBoneAngle.uc b/Development/Src/Engine/Classes/MorphNodeWeightByBoneAngle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MorphNodeWeightByBoneRotation.uc b/Development/Src/Engine/Classes/MorphNodeWeightByBoneRotation.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MorphTarget.uc b/Development/Src/Engine/Classes/MorphTarget.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MorphTargetSet.uc b/Development/Src/Engine/Classes/MorphTargetSet.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MorphWeightSequence.uc b/Development/Src/Engine/Classes/MorphWeightSequence.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MotionBlurEffect.uc b/Development/Src/Engine/Classes/MotionBlurEffect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MultiCueSplineAudioComponent.uc b/Development/Src/Engine/Classes/MultiCueSplineAudioComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MultiFont.uc b/Development/Src/Engine/Classes/MultiFont.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MultiProviderAnalytics.uc b/Development/Src/Engine/Classes/MultiProviderAnalytics.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/MusicTrackDataStructures.uc b/Development/Src/Engine/Classes/MusicTrackDataStructures.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Mutator.uc b/Development/Src/Engine/Classes/Mutator.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshBoundsVolume.uc b/Development/Src/Engine/Classes/NavMeshBoundsVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshGoalFilter_MinPathDistance.uc b/Development/Src/Engine/Classes/NavMeshGoalFilter_MinPathDistance.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshGoalFilter_NotNearOtherAI.uc b/Development/Src/Engine/Classes/NavMeshGoalFilter_NotNearOtherAI.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshGoalFilter_OutOfViewFrom.uc b/Development/Src/Engine/Classes/NavMeshGoalFilter_OutOfViewFrom.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshGoalFilter_OutsideOfDotProductWedge.uc b/Development/Src/Engine/Classes/NavMeshGoalFilter_OutsideOfDotProductWedge.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshGoalFilter_PolyEncompassesAI.uc b/Development/Src/Engine/Classes/NavMeshGoalFilter_PolyEncompassesAI.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshGoal_At.uc b/Development/Src/Engine/Classes/NavMeshGoal_At.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshGoal_ClosestActorInList.uc b/Development/Src/Engine/Classes/NavMeshGoal_ClosestActorInList.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshGoal_Filter.uc b/Development/Src/Engine/Classes/NavMeshGoal_Filter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshGoal_GenericFilterContainer.uc b/Development/Src/Engine/Classes/NavMeshGoal_GenericFilterContainer.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshGoal_Null.uc b/Development/Src/Engine/Classes/NavMeshGoal_Null.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshGoal_PolyEncompassesAI.uc b/Development/Src/Engine/Classes/NavMeshGoal_PolyEncompassesAI.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshGoal_Random.uc b/Development/Src/Engine/Classes/NavMeshGoal_Random.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshGoal_WithinDistanceEnvelope.uc b/Development/Src/Engine/Classes/NavMeshGoal_WithinDistanceEnvelope.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshObstacle.uc b/Development/Src/Engine/Classes/NavMeshObstacle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshPathConstraint.uc b/Development/Src/Engine/Classes/NavMeshPathConstraint.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshPathGoalEvaluator.uc b/Development/Src/Engine/Classes/NavMeshPathGoalEvaluator.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshPath_AlongLine.uc b/Development/Src/Engine/Classes/NavMeshPath_AlongLine.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshPath_EnforceTwoWayEdges.uc b/Development/Src/Engine/Classes/NavMeshPath_EnforceTwoWayEdges.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshPath_MinDistBetweenSpecsOfType.uc b/Development/Src/Engine/Classes/NavMeshPath_MinDistBetweenSpecsOfType.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshPath_SameCoverLink.uc b/Development/Src/Engine/Classes/NavMeshPath_SameCoverLink.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshPath_Toward.uc b/Development/Src/Engine/Classes/NavMeshPath_Toward.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshPath_WithinDistanceEnvelope.uc b/Development/Src/Engine/Classes/NavMeshPath_WithinDistanceEnvelope.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshPath_WithinTraversalDist.uc b/Development/Src/Engine/Classes/NavMeshPath_WithinTraversalDist.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavMeshRenderingComponent.uc b/Development/Src/Engine/Classes/NavMeshRenderingComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavigationHandle.uc b/Development/Src/Engine/Classes/NavigationHandle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NavigationPoint.uc b/Development/Src/Engine/Classes/NavigationPoint.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Note.uc b/Development/Src/Engine/Classes/Note.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxCylindricalForceField.uc b/Development/Src/Engine/Classes/NxCylindricalForceField.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxCylindricalForceFieldCapsule.uc b/Development/Src/Engine/Classes/NxCylindricalForceFieldCapsule.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxForceField.uc b/Development/Src/Engine/Classes/NxForceField.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxForceFieldComponent.uc b/Development/Src/Engine/Classes/NxForceFieldComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxForceFieldCylindricalComponent.uc b/Development/Src/Engine/Classes/NxForceFieldCylindricalComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxForceFieldGeneric.uc b/Development/Src/Engine/Classes/NxForceFieldGeneric.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxForceFieldGenericComponent.uc b/Development/Src/Engine/Classes/NxForceFieldGenericComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxForceFieldRadial.uc b/Development/Src/Engine/Classes/NxForceFieldRadial.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxForceFieldRadialComponent.uc b/Development/Src/Engine/Classes/NxForceFieldRadialComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxForceFieldSpawnable.uc b/Development/Src/Engine/Classes/NxForceFieldSpawnable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxForceFieldTornado.uc b/Development/Src/Engine/Classes/NxForceFieldTornado.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxForceFieldTornadoComponent.uc b/Development/Src/Engine/Classes/NxForceFieldTornadoComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxGenericForceField.uc b/Development/Src/Engine/Classes/NxGenericForceField.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxGenericForceFieldBox.uc b/Development/Src/Engine/Classes/NxGenericForceFieldBox.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxGenericForceFieldBrush.uc b/Development/Src/Engine/Classes/NxGenericForceFieldBrush.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxGenericForceFieldCapsule.uc b/Development/Src/Engine/Classes/NxGenericForceFieldCapsule.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxRadialCustomForceField.uc b/Development/Src/Engine/Classes/NxRadialCustomForceField.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxRadialForceField.uc b/Development/Src/Engine/Classes/NxRadialForceField.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxTornadoAngularForceField.uc b/Development/Src/Engine/Classes/NxTornadoAngularForceField.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxTornadoAngularForceFieldCapsule.uc b/Development/Src/Engine/Classes/NxTornadoAngularForceFieldCapsule.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxTornadoForceField.uc b/Development/Src/Engine/Classes/NxTornadoForceField.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/NxTornadoForceFieldCapsule.uc b/Development/Src/Engine/Classes/NxTornadoForceFieldCapsule.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ObjectReferencer.uc b/Development/Src/Engine/Classes/ObjectReferencer.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineAccountInterface.uc b/Development/Src/Engine/Classes/OnlineAccountInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineAuthInterface.uc b/Development/Src/Engine/Classes/OnlineAuthInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineCommunityContentInterface.uc b/Development/Src/Engine/Classes/OnlineCommunityContentInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineContentInterface.uc b/Development/Src/Engine/Classes/OnlineContentInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineEventsInterface.uc b/Development/Src/Engine/Classes/OnlineEventsInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineGameInterface.uc b/Development/Src/Engine/Classes/OnlineGameInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineGameSearch.uc b/Development/Src/Engine/Classes/OnlineGameSearch.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineGameSettings.uc b/Development/Src/Engine/Classes/OnlineGameSettings.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineMatchmakingStats.uc b/Development/Src/Engine/Classes/OnlineMatchmakingStats.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineNewsInterface.uc b/Development/Src/Engine/Classes/OnlineNewsInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlinePartyChatInterface.uc b/Development/Src/Engine/Classes/OnlinePartyChatInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlinePlayerInterface.uc b/Development/Src/Engine/Classes/OnlinePlayerInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlinePlayerInterfaceEx.uc b/Development/Src/Engine/Classes/OnlinePlayerInterfaceEx.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlinePlayerStorage.uc b/Development/Src/Engine/Classes/OnlinePlayerStorage.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlinePlaylistGameTypeProvider.uc b/Development/Src/Engine/Classes/OnlinePlaylistGameTypeProvider.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineProfileSettings.uc b/Development/Src/Engine/Classes/OnlineProfileSettings.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineRecentPlayersList.uc b/Development/Src/Engine/Classes/OnlineRecentPlayersList.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineSocialInterface.uc b/Development/Src/Engine/Classes/OnlineSocialInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineStats.uc b/Development/Src/Engine/Classes/OnlineStats.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineStatsInterface.uc b/Development/Src/Engine/Classes/OnlineStatsInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineStatsRead.uc b/Development/Src/Engine/Classes/OnlineStatsRead.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineStatsWrite.uc b/Development/Src/Engine/Classes/OnlineStatsWrite.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineSubsystem.uc b/Development/Src/Engine/Classes/OnlineSubsystem.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineSuppliedUIInterface.uc b/Development/Src/Engine/Classes/OnlineSuppliedUIInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineSystemInterface.uc b/Development/Src/Engine/Classes/OnlineSystemInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineTitleFileCacheInterface.uc b/Development/Src/Engine/Classes/OnlineTitleFileCacheInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineTitleFileInterface.uc b/Development/Src/Engine/Classes/OnlineTitleFileInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/OnlineVoiceInterface.uc b/Development/Src/Engine/Classes/OnlineVoiceInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeAlternate.uc b/Development/Src/Engine/Classes/PBRuleNodeAlternate.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeBase.uc b/Development/Src/Engine/Classes/PBRuleNodeBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeComment.uc b/Development/Src/Engine/Classes/PBRuleNodeComment.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeCorner.uc b/Development/Src/Engine/Classes/PBRuleNodeCorner.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeCycle.uc b/Development/Src/Engine/Classes/PBRuleNodeCycle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeEdgeAngle.uc b/Development/Src/Engine/Classes/PBRuleNodeEdgeAngle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeEdgeMesh.uc b/Development/Src/Engine/Classes/PBRuleNodeEdgeMesh.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeExtractTopBottom.uc b/Development/Src/Engine/Classes/PBRuleNodeExtractTopBottom.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeLODQuad.uc b/Development/Src/Engine/Classes/PBRuleNodeLODQuad.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeMesh.uc b/Development/Src/Engine/Classes/PBRuleNodeMesh.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeOcclusion.uc b/Development/Src/Engine/Classes/PBRuleNodeOcclusion.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeQuad.uc b/Development/Src/Engine/Classes/PBRuleNodeQuad.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeRandom.uc b/Development/Src/Engine/Classes/PBRuleNodeRandom.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeRepeat.uc b/Development/Src/Engine/Classes/PBRuleNodeRepeat.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeSize.uc b/Development/Src/Engine/Classes/PBRuleNodeSize.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeSplit.uc b/Development/Src/Engine/Classes/PBRuleNodeSplit.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeSubRuleset.uc b/Development/Src/Engine/Classes/PBRuleNodeSubRuleset.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeTransform.uc b/Development/Src/Engine/Classes/PBRuleNodeTransform.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeVariation.uc b/Development/Src/Engine/Classes/PBRuleNodeVariation.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PBRuleNodeWindowWall.uc b/Development/Src/Engine/Classes/PBRuleNodeWindowWall.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleEmitter.uc b/Development/Src/Engine/Classes/ParticleEmitter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleEventManager.uc b/Development/Src/Engine/Classes/ParticleEventManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleLODLevel.uc b/Development/Src/Engine/Classes/ParticleLODLevel.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleLightEnvironmentComponent.uc b/Development/Src/Engine/Classes/ParticleLightEnvironmentComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModule.uc b/Development/Src/Engine/Classes/ParticleModule.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleAcceleration.uc b/Development/Src/Engine/Classes/ParticleModuleAcceleration.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleAccelerationBase.uc b/Development/Src/Engine/Classes/ParticleModuleAccelerationBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleAccelerationOverLifetime.uc b/Development/Src/Engine/Classes/ParticleModuleAccelerationOverLifetime.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleAttractorBase.uc b/Development/Src/Engine/Classes/ParticleModuleAttractorBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleAttractorBoneSocket.uc b/Development/Src/Engine/Classes/ParticleModuleAttractorBoneSocket.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleAttractorLine.uc b/Development/Src/Engine/Classes/ParticleModuleAttractorLine.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleAttractorParticle.uc b/Development/Src/Engine/Classes/ParticleModuleAttractorParticle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleAttractorPoint.uc b/Development/Src/Engine/Classes/ParticleModuleAttractorPoint.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleAttractorSkelVertSurface.uc b/Development/Src/Engine/Classes/ParticleModuleAttractorSkelVertSurface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleBeamBase.uc b/Development/Src/Engine/Classes/ParticleModuleBeamBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleBeamModifier.uc b/Development/Src/Engine/Classes/ParticleModuleBeamModifier.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleBeamNoise.uc b/Development/Src/Engine/Classes/ParticleModuleBeamNoise.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleBeamSource.uc b/Development/Src/Engine/Classes/ParticleModuleBeamSource.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleBeamTarget.uc b/Development/Src/Engine/Classes/ParticleModuleBeamTarget.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleCameraBase.uc b/Development/Src/Engine/Classes/ParticleModuleCameraBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleCameraOffset.uc b/Development/Src/Engine/Classes/ParticleModuleCameraOffset.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleCollision.uc b/Development/Src/Engine/Classes/ParticleModuleCollision.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleCollisionActor.uc b/Development/Src/Engine/Classes/ParticleModuleCollisionActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleCollisionBase.uc b/Development/Src/Engine/Classes/ParticleModuleCollisionBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleColor.uc b/Development/Src/Engine/Classes/ParticleModuleColor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleColorBase.uc b/Development/Src/Engine/Classes/ParticleModuleColorBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleColorByParameter.uc b/Development/Src/Engine/Classes/ParticleModuleColorByParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleColorOverLife.uc b/Development/Src/Engine/Classes/ParticleModuleColorOverLife.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleColorScaleOverDensity.uc b/Development/Src/Engine/Classes/ParticleModuleColorScaleOverDensity.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleColorScaleOverLife.uc b/Development/Src/Engine/Classes/ParticleModuleColorScaleOverLife.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleColor_Seeded.uc b/Development/Src/Engine/Classes/ParticleModuleColor_Seeded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleEventBase.uc b/Development/Src/Engine/Classes/ParticleModuleEventBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleEventGenerator.uc b/Development/Src/Engine/Classes/ParticleModuleEventGenerator.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleEventReceiverBase.uc b/Development/Src/Engine/Classes/ParticleModuleEventReceiverBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleEventReceiverKillParticles.uc b/Development/Src/Engine/Classes/ParticleModuleEventReceiverKillParticles.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleEventReceiverSpawn.uc b/Development/Src/Engine/Classes/ParticleModuleEventReceiverSpawn.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleEventSendToGame.uc b/Development/Src/Engine/Classes/ParticleModuleEventSendToGame.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleKillBase.uc b/Development/Src/Engine/Classes/ParticleModuleKillBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleKillBox.uc b/Development/Src/Engine/Classes/ParticleModuleKillBox.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleKillHeight.uc b/Development/Src/Engine/Classes/ParticleModuleKillHeight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLifetime.uc b/Development/Src/Engine/Classes/ParticleModuleLifetime.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLifetimeBase.uc b/Development/Src/Engine/Classes/ParticleModuleLifetimeBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLifetime_Seeded.uc b/Development/Src/Engine/Classes/ParticleModuleLifetime_Seeded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocation.uc b/Development/Src/Engine/Classes/ParticleModuleLocation.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocationBase.uc b/Development/Src/Engine/Classes/ParticleModuleLocationBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocationBoneSocket.uc b/Development/Src/Engine/Classes/ParticleModuleLocationBoneSocket.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocationDirect.uc b/Development/Src/Engine/Classes/ParticleModuleLocationDirect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocationEmitter.uc b/Development/Src/Engine/Classes/ParticleModuleLocationEmitter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocationEmitterDirect.uc b/Development/Src/Engine/Classes/ParticleModuleLocationEmitterDirect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocationPrimitiveBase.uc b/Development/Src/Engine/Classes/ParticleModuleLocationPrimitiveBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocationPrimitiveCylinder.uc b/Development/Src/Engine/Classes/ParticleModuleLocationPrimitiveCylinder.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocationPrimitiveCylinder_Seeded.uc b/Development/Src/Engine/Classes/ParticleModuleLocationPrimitiveCylinder_Seeded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocationPrimitiveSphere.uc b/Development/Src/Engine/Classes/ParticleModuleLocationPrimitiveSphere.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocationPrimitiveSphere_Seeded.uc b/Development/Src/Engine/Classes/ParticleModuleLocationPrimitiveSphere_Seeded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocationSkelVertSurface.uc b/Development/Src/Engine/Classes/ParticleModuleLocationSkelVertSurface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocationStaticVertSurface.uc b/Development/Src/Engine/Classes/ParticleModuleLocationStaticVertSurface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocationWorldOffset.uc b/Development/Src/Engine/Classes/ParticleModuleLocationWorldOffset.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocationWorldOffset_Seeded.uc b/Development/Src/Engine/Classes/ParticleModuleLocationWorldOffset_Seeded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleLocation_Seeded.uc b/Development/Src/Engine/Classes/ParticleModuleLocation_Seeded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleMaterialBase.uc b/Development/Src/Engine/Classes/ParticleModuleMaterialBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleMaterialByParameter.uc b/Development/Src/Engine/Classes/ParticleModuleMaterialByParameter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleMeshMaterial.uc b/Development/Src/Engine/Classes/ParticleModuleMeshMaterial.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleMeshRotation.uc b/Development/Src/Engine/Classes/ParticleModuleMeshRotation.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleMeshRotationRate.uc b/Development/Src/Engine/Classes/ParticleModuleMeshRotationRate.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleMeshRotationRateMultiplyLife.uc b/Development/Src/Engine/Classes/ParticleModuleMeshRotationRateMultiplyLife.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleMeshRotationRateOverLife.uc b/Development/Src/Engine/Classes/ParticleModuleMeshRotationRateOverLife.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleMeshRotationRate_Seeded.uc b/Development/Src/Engine/Classes/ParticleModuleMeshRotationRate_Seeded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleMeshRotation_Seeded.uc b/Development/Src/Engine/Classes/ParticleModuleMeshRotation_Seeded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleOrbit.uc b/Development/Src/Engine/Classes/ParticleModuleOrbit.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleOrbitBase.uc b/Development/Src/Engine/Classes/ParticleModuleOrbitBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleOrientationAxisLock.uc b/Development/Src/Engine/Classes/ParticleModuleOrientationAxisLock.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleOrientationBase.uc b/Development/Src/Engine/Classes/ParticleModuleOrientationBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleParameterBase.uc b/Development/Src/Engine/Classes/ParticleModuleParameterBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleParameterDynamic.uc b/Development/Src/Engine/Classes/ParticleModuleParameterDynamic.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleParameterDynamic_Seeded.uc b/Development/Src/Engine/Classes/ParticleModuleParameterDynamic_Seeded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModulePhysicsVolumes.uc b/Development/Src/Engine/Classes/ParticleModulePhysicsVolumes.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleRequired.uc b/Development/Src/Engine/Classes/ParticleModuleRequired.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleRotation.uc b/Development/Src/Engine/Classes/ParticleModuleRotation.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleRotationBase.uc b/Development/Src/Engine/Classes/ParticleModuleRotationBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleRotationOverLifetime.uc b/Development/Src/Engine/Classes/ParticleModuleRotationOverLifetime.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleRotationRate.uc b/Development/Src/Engine/Classes/ParticleModuleRotationRate.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleRotationRateBase.uc b/Development/Src/Engine/Classes/ParticleModuleRotationRateBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleRotationRateMultiplyLife.uc b/Development/Src/Engine/Classes/ParticleModuleRotationRateMultiplyLife.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleRotationRate_Seeded.uc b/Development/Src/Engine/Classes/ParticleModuleRotationRate_Seeded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleRotation_Seeded.uc b/Development/Src/Engine/Classes/ParticleModuleRotation_Seeded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSize.uc b/Development/Src/Engine/Classes/ParticleModuleSize.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSizeBase.uc b/Development/Src/Engine/Classes/ParticleModuleSizeBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSizeMultiplyLife.uc b/Development/Src/Engine/Classes/ParticleModuleSizeMultiplyLife.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSizeMultiplyVelocity.uc b/Development/Src/Engine/Classes/ParticleModuleSizeMultiplyVelocity.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSizeScale.uc b/Development/Src/Engine/Classes/ParticleModuleSizeScale.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSizeScaleByTime.uc b/Development/Src/Engine/Classes/ParticleModuleSizeScaleByTime.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSizeScaleOverDensity.uc b/Development/Src/Engine/Classes/ParticleModuleSizeScaleOverDensity.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSize_Seeded.uc b/Development/Src/Engine/Classes/ParticleModuleSize_Seeded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSourceMovement.uc b/Development/Src/Engine/Classes/ParticleModuleSourceMovement.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSpawn.uc b/Development/Src/Engine/Classes/ParticleModuleSpawn.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSpawnBase.uc b/Development/Src/Engine/Classes/ParticleModuleSpawnBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSpawnPerUnit.uc b/Development/Src/Engine/Classes/ParticleModuleSpawnPerUnit.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleStoreSpawnTime.uc b/Development/Src/Engine/Classes/ParticleModuleStoreSpawnTime.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleStoreSpawnTimeBase.uc b/Development/Src/Engine/Classes/ParticleModuleStoreSpawnTimeBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSubUV.uc b/Development/Src/Engine/Classes/ParticleModuleSubUV.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSubUVBase.uc b/Development/Src/Engine/Classes/ParticleModuleSubUVBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSubUVDirect.uc b/Development/Src/Engine/Classes/ParticleModuleSubUVDirect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSubUVMovie.uc b/Development/Src/Engine/Classes/ParticleModuleSubUVMovie.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleSubUVSelect.uc b/Development/Src/Engine/Classes/ParticleModuleSubUVSelect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleTrailBase.uc b/Development/Src/Engine/Classes/ParticleModuleTrailBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleTrailSource.uc b/Development/Src/Engine/Classes/ParticleModuleTrailSource.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleTrailSpawn.uc b/Development/Src/Engine/Classes/ParticleModuleTrailSpawn.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleTrailTaper.uc b/Development/Src/Engine/Classes/ParticleModuleTrailTaper.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleTypeDataAnimTrail.uc b/Development/Src/Engine/Classes/ParticleModuleTypeDataAnimTrail.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleTypeDataApex.uc b/Development/Src/Engine/Classes/ParticleModuleTypeDataApex.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleTypeDataBase.uc b/Development/Src/Engine/Classes/ParticleModuleTypeDataBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleTypeDataBeam.uc b/Development/Src/Engine/Classes/ParticleModuleTypeDataBeam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleTypeDataBeam2.uc b/Development/Src/Engine/Classes/ParticleModuleTypeDataBeam2.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleTypeDataMesh.uc b/Development/Src/Engine/Classes/ParticleModuleTypeDataMesh.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleTypeDataMeshPhysX.uc b/Development/Src/Engine/Classes/ParticleModuleTypeDataMeshPhysX.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleTypeDataPhysX.uc b/Development/Src/Engine/Classes/ParticleModuleTypeDataPhysX.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleTypeDataRibbon.uc b/Development/Src/Engine/Classes/ParticleModuleTypeDataRibbon.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleTypeDataTrail.uc b/Development/Src/Engine/Classes/ParticleModuleTypeDataTrail.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleTypeDataTrail2.uc b/Development/Src/Engine/Classes/ParticleModuleTypeDataTrail2.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleUberBase.uc b/Development/Src/Engine/Classes/ParticleModuleUberBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleUberLTISIVCL.uc b/Development/Src/Engine/Classes/ParticleModuleUberLTISIVCL.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleUberLTISIVCLIL.uc b/Development/Src/Engine/Classes/ParticleModuleUberLTISIVCLIL.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleUberLTISIVCLILIRSSBLIRR.uc b/Development/Src/Engine/Classes/ParticleModuleUberLTISIVCLILIRSSBLIRR.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleUberRainDrops.uc b/Development/Src/Engine/Classes/ParticleModuleUberRainDrops.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleUberRainImpacts.uc b/Development/Src/Engine/Classes/ParticleModuleUberRainImpacts.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleUberRainSplashA.uc b/Development/Src/Engine/Classes/ParticleModuleUberRainSplashA.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleUberRainSplashB.uc b/Development/Src/Engine/Classes/ParticleModuleUberRainSplashB.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleVelocity.uc b/Development/Src/Engine/Classes/ParticleModuleVelocity.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleVelocityBase.uc b/Development/Src/Engine/Classes/ParticleModuleVelocityBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleVelocityCone.uc b/Development/Src/Engine/Classes/ParticleModuleVelocityCone.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleVelocityInheritParent.uc b/Development/Src/Engine/Classes/ParticleModuleVelocityInheritParent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleVelocityOverLifetime.uc b/Development/Src/Engine/Classes/ParticleModuleVelocityOverLifetime.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleVelocity_Seeded.uc b/Development/Src/Engine/Classes/ParticleModuleVelocity_Seeded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleWorldAttractor.uc b/Development/Src/Engine/Classes/ParticleModuleWorldAttractor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleModuleWorldForcesBase.uc b/Development/Src/Engine/Classes/ParticleModuleWorldForcesBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleSpriteEmitter.uc b/Development/Src/Engine/Classes/ParticleSpriteEmitter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleSystem.uc b/Development/Src/Engine/Classes/ParticleSystem.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleSystemComponent.uc b/Development/Src/Engine/Classes/ParticleSystemComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ParticleSystemReplay.uc b/Development/Src/Engine/Classes/ParticleSystemReplay.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PathBlockingVolume.uc b/Development/Src/Engine/Classes/PathBlockingVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PathConstraint.uc b/Development/Src/Engine/Classes/PathConstraint.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PathGoalEvaluator.uc b/Development/Src/Engine/Classes/PathGoalEvaluator.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PathNode.uc b/Development/Src/Engine/Classes/PathNode.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PathNode_Dynamic.uc b/Development/Src/Engine/Classes/PathNode_Dynamic.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PathRenderingComponent.uc b/Development/Src/Engine/Classes/PathRenderingComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PathTargetPoint.uc b/Development/Src/Engine/Classes/PathTargetPoint.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Path_AlongLine.uc b/Development/Src/Engine/Classes/Path_AlongLine.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Path_AvoidInEscapableNodes.uc b/Development/Src/Engine/Classes/Path_AvoidInEscapableNodes.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Path_MinDistBetweenSpecsOfType.uc b/Development/Src/Engine/Classes/Path_MinDistBetweenSpecsOfType.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Path_TowardGoal.uc b/Development/Src/Engine/Classes/Path_TowardGoal.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Path_TowardPoint.uc b/Development/Src/Engine/Classes/Path_TowardPoint.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Path_WithinDistanceEnvelope.uc b/Development/Src/Engine/Classes/Path_WithinDistanceEnvelope.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Path_WithinTraversalDist.uc b/Development/Src/Engine/Classes/Path_WithinTraversalDist.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Pawn.uc b/Development/Src/Engine/Classes/Pawn.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PhysXParticleSystem.uc b/Development/Src/Engine/Classes/PhysXParticleSystem.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PhysicalMaterial.uc b/Development/Src/Engine/Classes/PhysicalMaterial.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PhysicalMaterialPropertyBase.uc b/Development/Src/Engine/Classes/PhysicalMaterialPropertyBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PhysicsAsset.uc b/Development/Src/Engine/Classes/PhysicsAsset.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PhysicsAssetInstance.uc b/Development/Src/Engine/Classes/PhysicsAssetInstance.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PhysicsLODVerticalEmitter.uc b/Development/Src/Engine/Classes/PhysicsLODVerticalEmitter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PhysicsVolume.uc b/Development/Src/Engine/Classes/PhysicsVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PickupFactory.uc b/Development/Src/Engine/Classes/PickupFactory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PixelFormatEnum.uci b/Development/Src/Engine/Classes/PixelFormatEnum.uci old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PlatformInterfaceBase.uc b/Development/Src/Engine/Classes/PlatformInterfaceBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PlatformInterfaceWebResponse.uc b/Development/Src/Engine/Classes/PlatformInterfaceWebResponse.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Player.uc b/Development/Src/Engine/Classes/Player.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PlayerController.uc b/Development/Src/Engine/Classes/PlayerController.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PlayerInput.uc b/Development/Src/Engine/Classes/PlayerInput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PlayerManagerInteraction.uc b/Development/Src/Engine/Classes/PlayerManagerInteraction.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PlayerReplicationInfo.uc b/Development/Src/Engine/Classes/PlayerReplicationInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PlayerStart.uc b/Development/Src/Engine/Classes/PlayerStart.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PointLight.uc b/Development/Src/Engine/Classes/PointLight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PointLightComponent.uc b/Development/Src/Engine/Classes/PointLightComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PointLightMovable.uc b/Development/Src/Engine/Classes/PointLightMovable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PointLightToggleable.uc b/Development/Src/Engine/Classes/PointLightToggleable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PortalMarker.uc b/Development/Src/Engine/Classes/PortalMarker.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PortalTeleporter.uc b/Development/Src/Engine/Classes/PortalTeleporter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PortalVolume.uc b/Development/Src/Engine/Classes/PortalVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PostProcessChain.uc b/Development/Src/Engine/Classes/PostProcessChain.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PostProcessEffect.uc b/Development/Src/Engine/Classes/PostProcessEffect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PostProcessVolume.uc b/Development/Src/Engine/Classes/PostProcessVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PotentialClimbWatcher.uc b/Development/Src/Engine/Classes/PotentialClimbWatcher.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PrecomputedVisibilityOverrideVolume.uc b/Development/Src/Engine/Classes/PrecomputedVisibilityOverrideVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PrecomputedVisibilityVolume.uc b/Development/Src/Engine/Classes/PrecomputedVisibilityVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Prefab.uc b/Development/Src/Engine/Classes/Prefab.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PrefabInstance.uc b/Development/Src/Engine/Classes/PrefabInstance.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PrefabSequence.uc b/Development/Src/Engine/Classes/PrefabSequence.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PrefabSequenceContainer.uc b/Development/Src/Engine/Classes/PrefabSequenceContainer.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PrimitiveComponent.uc b/Development/Src/Engine/Classes/PrimitiveComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PrimitiveComponentFactory.uc b/Development/Src/Engine/Classes/PrimitiveComponentFactory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ProcBuilding.uc b/Development/Src/Engine/Classes/ProcBuilding.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ProcBuildingRuleset.uc b/Development/Src/Engine/Classes/ProcBuildingRuleset.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ProcBuilding_SimpleLODActor.uc b/Development/Src/Engine/Classes/ProcBuilding_SimpleLODActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Projectile.uc b/Development/Src/Engine/Classes/Projectile.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ProscribedReachSpec.uc b/Development/Src/Engine/Classes/ProscribedReachSpec.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Pylon.uc b/Development/Src/Engine/Classes/Pylon.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/PylonSeed.uc b/Development/Src/Engine/Classes/PylonSeed.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_BSJointActor.uc b/Development/Src/Engine/Classes/RB_BSJointActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_BSJointSetup.uc b/Development/Src/Engine/Classes/RB_BSJointSetup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_BodyInstance.uc b/Development/Src/Engine/Classes/RB_BodyInstance.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_BodySetup.uc b/Development/Src/Engine/Classes/RB_BodySetup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_ConstraintActor.uc b/Development/Src/Engine/Classes/RB_ConstraintActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_ConstraintActorSpawnable.uc b/Development/Src/Engine/Classes/RB_ConstraintActorSpawnable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_ConstraintDrawComponent.uc b/Development/Src/Engine/Classes/RB_ConstraintDrawComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_ConstraintInstance.uc b/Development/Src/Engine/Classes/RB_ConstraintInstance.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_ConstraintSetup.uc b/Development/Src/Engine/Classes/RB_ConstraintSetup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_CylindricalForceActor.uc b/Development/Src/Engine/Classes/RB_CylindricalForceActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_DistanceJointSetup.uc b/Development/Src/Engine/Classes/RB_DistanceJointSetup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_ForceFieldExcludeVolume.uc b/Development/Src/Engine/Classes/RB_ForceFieldExcludeVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_Handle.uc b/Development/Src/Engine/Classes/RB_Handle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_HingeActor.uc b/Development/Src/Engine/Classes/RB_HingeActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_HingeSetup.uc b/Development/Src/Engine/Classes/RB_HingeSetup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_LineImpulseActor.uc b/Development/Src/Engine/Classes/RB_LineImpulseActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_PrismaticActor.uc b/Development/Src/Engine/Classes/RB_PrismaticActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_PrismaticSetup.uc b/Development/Src/Engine/Classes/RB_PrismaticSetup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_PulleyJointActor.uc b/Development/Src/Engine/Classes/RB_PulleyJointActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_PulleyJointSetup.uc b/Development/Src/Engine/Classes/RB_PulleyJointSetup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_RadialForceActor.uc b/Development/Src/Engine/Classes/RB_RadialForceActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_RadialImpulseActor.uc b/Development/Src/Engine/Classes/RB_RadialImpulseActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_RadialImpulseComponent.uc b/Development/Src/Engine/Classes/RB_RadialImpulseComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_SkelJointSetup.uc b/Development/Src/Engine/Classes/RB_SkelJointSetup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_Spring.uc b/Development/Src/Engine/Classes/RB_Spring.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_StayUprightSetup.uc b/Development/Src/Engine/Classes/RB_StayUprightSetup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RB_Thruster.uc b/Development/Src/Engine/Classes/RB_Thruster.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RadialBlurActor.uc b/Development/Src/Engine/Classes/RadialBlurActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RadialBlurComponent.uc b/Development/Src/Engine/Classes/RadialBlurComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ReachSpec.uc b/Development/Src/Engine/Classes/ReachSpec.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ReplicationInfo.uc b/Development/Src/Engine/Classes/ReplicationInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ReverbVolume.uc b/Development/Src/Engine/Classes/ReverbVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ReverbVolumeToggleable.uc b/Development/Src/Engine/Classes/ReverbVolumeToggleable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RigidBodyBase.uc b/Development/Src/Engine/Classes/RigidBodyBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Route.uc b/Development/Src/Engine/Classes/Route.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/RouteRenderingComponent.uc b/Development/Src/Engine/Classes/RouteRenderingComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SVehicle.uc b/Development/Src/Engine/Classes/SVehicle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SVehicleSimBase.uc b/Development/Src/Engine/Classes/SVehicleSimBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SVehicleSimCar.uc b/Development/Src/Engine/Classes/SVehicleSimCar.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SVehicleSimTank.uc b/Development/Src/Engine/Classes/SVehicleSimTank.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SVehicleWheel.uc b/Development/Src/Engine/Classes/SVehicleWheel.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SaveGameSummary.uc b/Development/Src/Engine/Classes/SaveGameSummary.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SavedMove.uc b/Development/Src/Engine/Classes/SavedMove.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Scene.uc b/Development/Src/Engine/Classes/Scene.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SceneCapture2DActor.uc b/Development/Src/Engine/Classes/SceneCapture2DActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SceneCapture2DComponent.uc b/Development/Src/Engine/Classes/SceneCapture2DComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SceneCapture2DHitMaskComponent.uc b/Development/Src/Engine/Classes/SceneCapture2DHitMaskComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SceneCaptureActor.uc b/Development/Src/Engine/Classes/SceneCaptureActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SceneCaptureComponent.uc b/Development/Src/Engine/Classes/SceneCaptureComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SceneCaptureCubeMapActor.uc b/Development/Src/Engine/Classes/SceneCaptureCubeMapActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SceneCaptureCubeMapComponent.uc b/Development/Src/Engine/Classes/SceneCaptureCubeMapComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SceneCapturePortalActor.uc b/Development/Src/Engine/Classes/SceneCapturePortalActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SceneCapturePortalComponent.uc b/Development/Src/Engine/Classes/SceneCapturePortalComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SceneCaptureReflectActor.uc b/Development/Src/Engine/Classes/SceneCaptureReflectActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SceneCaptureReflectComponent.uc b/Development/Src/Engine/Classes/SceneCaptureReflectComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Scout.uc b/Development/Src/Engine/Classes/Scout.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ScriptViewportClient.uc b/Development/Src/Engine/Classes/ScriptViewportClient.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ScriptedTexture.uc b/Development/Src/Engine/Classes/ScriptedTexture.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_AIAbortMoveToActor.uc b/Development/Src/Engine/Classes/SeqAct_AIAbortMoveToActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_AIMoveToActor.uc b/Development/Src/Engine/Classes/SeqAct_AIMoveToActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_AccessObjectList.uc b/Development/Src/Engine/Classes/SeqAct_AccessObjectList.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ActivateRemoteEvent.uc b/Development/Src/Engine/Classes/SeqAct_ActivateRemoteEvent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ActorFactory.uc b/Development/Src/Engine/Classes/SeqAct_ActorFactory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ActorFactoryEx.uc b/Development/Src/Engine/Classes/SeqAct_ActorFactoryEx.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_AddFloat.uc b/Development/Src/Engine/Classes/SeqAct_AddFloat.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_AddInt.uc b/Development/Src/Engine/Classes/SeqAct_AddInt.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_AddRemoveFaceFXAnimSet.uc b/Development/Src/Engine/Classes/SeqAct_AddRemoveFaceFXAnimSet.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_AndGate.uc b/Development/Src/Engine/Classes/SeqAct_AndGate.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ApplySoundNode.uc b/Development/Src/Engine/Classes/SeqAct_ApplySoundNode.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_AssignController.uc b/Development/Src/Engine/Classes/SeqAct_AssignController.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_AttachToActor.uc b/Development/Src/Engine/Classes/SeqAct_AttachToActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_AttachToEvent.uc b/Development/Src/Engine/Classes/SeqAct_AttachToEvent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_CameraFade.uc b/Development/Src/Engine/Classes/SeqAct_CameraFade.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_CameraLookAt.uc b/Development/Src/Engine/Classes/SeqAct_CameraLookAt.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_CameraShake.uc b/Development/Src/Engine/Classes/SeqAct_CameraShake.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_CastToFloat.uc b/Development/Src/Engine/Classes/SeqAct_CastToFloat.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_CastToInt.uc b/Development/Src/Engine/Classes/SeqAct_CastToInt.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ChangeCollision.uc b/Development/Src/Engine/Classes/SeqAct_ChangeCollision.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_CommitMapChange.uc b/Development/Src/Engine/Classes/SeqAct_CommitMapChange.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ConsoleCommand.uc b/Development/Src/Engine/Classes/SeqAct_ConsoleCommand.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ControlMovieTexture.uc b/Development/Src/Engine/Classes/SeqAct_ControlMovieTexture.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ConvertToString.uc b/Development/Src/Engine/Classes/SeqAct_ConvertToString.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_Delay.uc b/Development/Src/Engine/Classes/SeqAct_Delay.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_DelaySwitch.uc b/Development/Src/Engine/Classes/SeqAct_DelaySwitch.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_Destroy.uc b/Development/Src/Engine/Classes/SeqAct_Destroy.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_DivideFloat.uc b/Development/Src/Engine/Classes/SeqAct_DivideFloat.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_DivideInt.uc b/Development/Src/Engine/Classes/SeqAct_DivideInt.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_DrawText.uc b/Development/Src/Engine/Classes/SeqAct_DrawText.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_FeatureTest.uc b/Development/Src/Engine/Classes/SeqAct_FeatureTest.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_FinishSequence.uc b/Development/Src/Engine/Classes/SeqAct_FinishSequence.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_FlyThroughHasEnded.uc b/Development/Src/Engine/Classes/SeqAct_FlyThroughHasEnded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ForceFeedback.uc b/Development/Src/Engine/Classes/SeqAct_ForceFeedback.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ForceGarbageCollection.uc b/Development/Src/Engine/Classes/SeqAct_ForceGarbageCollection.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_Gate.uc b/Development/Src/Engine/Classes/SeqAct_Gate.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_GetDistance.uc b/Development/Src/Engine/Classes/SeqAct_GetDistance.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_GetLocationAndRotation.uc b/Development/Src/Engine/Classes/SeqAct_GetLocationAndRotation.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_GetProperty.uc b/Development/Src/Engine/Classes/SeqAct_GetProperty.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_GetVectorComponents.uc b/Development/Src/Engine/Classes/SeqAct_GetVectorComponents.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_GetVelocity.uc b/Development/Src/Engine/Classes/SeqAct_GetVelocity.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_GiveInventory.uc b/Development/Src/Engine/Classes/SeqAct_GiveInventory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_HeadTrackingControl.uc b/Development/Src/Engine/Classes/SeqAct_HeadTrackingControl.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_Interp.uc b/Development/Src/Engine/Classes/SeqAct_Interp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_IsInObjectList.uc b/Development/Src/Engine/Classes/SeqAct_IsInObjectList.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_Latent.uc b/Development/Src/Engine/Classes/SeqAct_Latent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_LevelStreaming.uc b/Development/Src/Engine/Classes/SeqAct_LevelStreaming.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_LevelStreamingBase.uc b/Development/Src/Engine/Classes/SeqAct_LevelStreamingBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_LevelVisibility.uc b/Development/Src/Engine/Classes/SeqAct_LevelVisibility.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_Log.uc b/Development/Src/Engine/Classes/SeqAct_Log.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_MITV_Activate.uc b/Development/Src/Engine/Classes/SeqAct_MITV_Activate.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ModifyCover.uc b/Development/Src/Engine/Classes/SeqAct_ModifyCover.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ModifyHealth.uc b/Development/Src/Engine/Classes/SeqAct_ModifyHealth.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ModifyObjectList.uc b/Development/Src/Engine/Classes/SeqAct_ModifyObjectList.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_MultiLevelStreaming.uc b/Development/Src/Engine/Classes/SeqAct_MultiLevelStreaming.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_MultiplyFloat.uc b/Development/Src/Engine/Classes/SeqAct_MultiplyFloat.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_MultiplyInt.uc b/Development/Src/Engine/Classes/SeqAct_MultiplyInt.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ParticleEventGenerator.uc b/Development/Src/Engine/Classes/SeqAct_ParticleEventGenerator.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_PlayCameraAnim.uc b/Development/Src/Engine/Classes/SeqAct_PlayCameraAnim.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_PlayFaceFXAnim.uc b/Development/Src/Engine/Classes/SeqAct_PlayFaceFXAnim.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_PlayMusicTrack.uc b/Development/Src/Engine/Classes/SeqAct_PlayMusicTrack.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_PlaySound.uc b/Development/Src/Engine/Classes/SeqAct_PlaySound.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_Possess.uc b/Development/Src/Engine/Classes/SeqAct_Possess.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_PrepareMapChange.uc b/Development/Src/Engine/Classes/SeqAct_PrepareMapChange.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ProjectileFactory.uc b/Development/Src/Engine/Classes/SeqAct_ProjectileFactory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_RandomSwitch.uc b/Development/Src/Engine/Classes/SeqAct_RandomSwitch.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_RangeSwitch.uc b/Development/Src/Engine/Classes/SeqAct_RangeSwitch.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetActiveAnimChild.uc b/Development/Src/Engine/Classes/SeqAct_SetActiveAnimChild.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetApexClothingParam.uc b/Development/Src/Engine/Classes/SeqAct_SetApexClothingParam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetBlockRigidBody.uc b/Development/Src/Engine/Classes/SeqAct_SetBlockRigidBody.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetBool.uc b/Development/Src/Engine/Classes/SeqAct_SetBool.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetCameraTarget.uc b/Development/Src/Engine/Classes/SeqAct_SetCameraTarget.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetDOFParams.uc b/Development/Src/Engine/Classes/SeqAct_SetDOFParams.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetDamageInstigator.uc b/Development/Src/Engine/Classes/SeqAct_SetDamageInstigator.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetFloat.uc b/Development/Src/Engine/Classes/SeqAct_SetFloat.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetInt.uc b/Development/Src/Engine/Classes/SeqAct_SetInt.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetLocation.uc b/Development/Src/Engine/Classes/SeqAct_SetLocation.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetMatInstScalarParam.uc b/Development/Src/Engine/Classes/SeqAct_SetMatInstScalarParam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetMatInstTexParam.uc b/Development/Src/Engine/Classes/SeqAct_SetMatInstTexParam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetMatInstVectorParam.uc b/Development/Src/Engine/Classes/SeqAct_SetMatInstVectorParam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetMaterial.uc b/Development/Src/Engine/Classes/SeqAct_SetMaterial.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetMesh.uc b/Development/Src/Engine/Classes/SeqAct_SetMesh.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetMotionBlurParams.uc b/Development/Src/Engine/Classes/SeqAct_SetMotionBlurParams.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetObject.uc b/Development/Src/Engine/Classes/SeqAct_SetObject.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetParticleSysParam.uc b/Development/Src/Engine/Classes/SeqAct_SetParticleSysParam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetPhysics.uc b/Development/Src/Engine/Classes/SeqAct_SetPhysics.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetRigidBodyIgnoreVehicles.uc b/Development/Src/Engine/Classes/SeqAct_SetRigidBodyIgnoreVehicles.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetSequenceVariable.uc b/Development/Src/Engine/Classes/SeqAct_SetSequenceVariable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetSkelControlTarget.uc b/Development/Src/Engine/Classes/SeqAct_SetSkelControlTarget.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetSoundMode.uc b/Development/Src/Engine/Classes/SeqAct_SetSoundMode.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetString.uc b/Development/Src/Engine/Classes/SeqAct_SetString.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetVector.uc b/Development/Src/Engine/Classes/SeqAct_SetVector.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetVectorComponents.uc b/Development/Src/Engine/Classes/SeqAct_SetVectorComponents.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetVelocity.uc b/Development/Src/Engine/Classes/SeqAct_SetVelocity.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SetWorldAttractorParam.uc b/Development/Src/Engine/Classes/SeqAct_SetWorldAttractorParam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_StreamInTextures.uc b/Development/Src/Engine/Classes/SeqAct_StreamInTextures.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SubtractFloat.uc b/Development/Src/Engine/Classes/SeqAct_SubtractFloat.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_SubtractInt.uc b/Development/Src/Engine/Classes/SeqAct_SubtractInt.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_Switch.uc b/Development/Src/Engine/Classes/SeqAct_Switch.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_Teleport.uc b/Development/Src/Engine/Classes/SeqAct_Teleport.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_Timer.uc b/Development/Src/Engine/Classes/SeqAct_Timer.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_Toggle.uc b/Development/Src/Engine/Classes/SeqAct_Toggle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ToggleAffectedByHitEffects.uc b/Development/Src/Engine/Classes/SeqAct_ToggleAffectedByHitEffects.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ToggleCinematicMode.uc b/Development/Src/Engine/Classes/SeqAct_ToggleCinematicMode.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ToggleConstraintDrive.uc b/Development/Src/Engine/Classes/SeqAct_ToggleConstraintDrive.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ToggleGodMode.uc b/Development/Src/Engine/Classes/SeqAct_ToggleGodMode.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ToggleHUD.uc b/Development/Src/Engine/Classes/SeqAct_ToggleHUD.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ToggleHidden.uc b/Development/Src/Engine/Classes/SeqAct_ToggleHidden.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_ToggleInput.uc b/Development/Src/Engine/Classes/SeqAct_ToggleInput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_Trace.uc b/Development/Src/Engine/Classes/SeqAct_Trace.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_UpdatePhysBonesFromAnim.uc b/Development/Src/Engine/Classes/SeqAct_UpdatePhysBonesFromAnim.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqAct_WaitForLevelsVisible.uc b/Development/Src/Engine/Classes/SeqAct_WaitForLevelsVisible.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_CompareBool.uc b/Development/Src/Engine/Classes/SeqCond_CompareBool.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_CompareFloat.uc b/Development/Src/Engine/Classes/SeqCond_CompareFloat.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_CompareInt.uc b/Development/Src/Engine/Classes/SeqCond_CompareInt.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_CompareObject.uc b/Development/Src/Engine/Classes/SeqCond_CompareObject.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_GetServerType.uc b/Development/Src/Engine/Classes/SeqCond_GetServerType.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_Increment.uc b/Development/Src/Engine/Classes/SeqCond_Increment.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_IncrementFloat.uc b/Development/Src/Engine/Classes/SeqCond_IncrementFloat.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_IsAlive.uc b/Development/Src/Engine/Classes/SeqCond_IsAlive.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_IsBenchmarking.uc b/Development/Src/Engine/Classes/SeqCond_IsBenchmarking.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_IsConsole.uc b/Development/Src/Engine/Classes/SeqCond_IsConsole.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_IsInCombat.uc b/Development/Src/Engine/Classes/SeqCond_IsInCombat.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_IsLoggedIn.uc b/Development/Src/Engine/Classes/SeqCond_IsLoggedIn.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_IsPIE.uc b/Development/Src/Engine/Classes/SeqCond_IsPIE.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_IsSameTeam.uc b/Development/Src/Engine/Classes/SeqCond_IsSameTeam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_MatureLanguage.uc b/Development/Src/Engine/Classes/SeqCond_MatureLanguage.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_ShowGore.uc b/Development/Src/Engine/Classes/SeqCond_ShowGore.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_SwitchBase.uc b/Development/Src/Engine/Classes/SeqCond_SwitchBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_SwitchClass.uc b/Development/Src/Engine/Classes/SeqCond_SwitchClass.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_SwitchObject.uc b/Development/Src/Engine/Classes/SeqCond_SwitchObject.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqCond_SwitchPlatform.uc b/Development/Src/Engine/Classes/SeqCond_SwitchPlatform.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_AIReachedRouteActor.uc b/Development/Src/Engine/Classes/SeqEvent_AIReachedRouteActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_AISeeEnemy.uc b/Development/Src/Engine/Classes/SeqEvent_AISeeEnemy.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_AnalogInput.uc b/Development/Src/Engine/Classes/SeqEvent_AnalogInput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_AnimNotify.uc b/Development/Src/Engine/Classes/SeqEvent_AnimNotify.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_Console.uc b/Development/Src/Engine/Classes/SeqEvent_Console.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_ConstraintBroken.uc b/Development/Src/Engine/Classes/SeqEvent_ConstraintBroken.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_Death.uc b/Development/Src/Engine/Classes/SeqEvent_Death.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_Destroyed.uc b/Development/Src/Engine/Classes/SeqEvent_Destroyed.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_GetInventory.uc b/Development/Src/Engine/Classes/SeqEvent_GetInventory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_HitWall.uc b/Development/Src/Engine/Classes/SeqEvent_HitWall.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_Input.uc b/Development/Src/Engine/Classes/SeqEvent_Input.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_LOS.uc b/Development/Src/Engine/Classes/SeqEvent_LOS.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_LevelBeginning.uc b/Development/Src/Engine/Classes/SeqEvent_LevelBeginning.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_LevelLoaded.uc b/Development/Src/Engine/Classes/SeqEvent_LevelLoaded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_LevelStartup.uc b/Development/Src/Engine/Classes/SeqEvent_LevelStartup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_MobileTouch.uc b/Development/Src/Engine/Classes/SeqEvent_MobileTouch.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_Mover.uc b/Development/Src/Engine/Classes/SeqEvent_Mover.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_ParticleEvent.uc b/Development/Src/Engine/Classes/SeqEvent_ParticleEvent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_PickupStatusChange.uc b/Development/Src/Engine/Classes/SeqEvent_PickupStatusChange.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_PlayerSpawned.uc b/Development/Src/Engine/Classes/SeqEvent_PlayerSpawned.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_ProjectileLanded.uc b/Development/Src/Engine/Classes/SeqEvent_ProjectileLanded.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_RemoteEvent.uc b/Development/Src/Engine/Classes/SeqEvent_RemoteEvent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_RigidBodyCollision.uc b/Development/Src/Engine/Classes/SeqEvent_RigidBodyCollision.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_SeeDeath.uc b/Development/Src/Engine/Classes/SeqEvent_SeeDeath.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_SequenceActivated.uc b/Development/Src/Engine/Classes/SeqEvent_SequenceActivated.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_TakeDamage.uc b/Development/Src/Engine/Classes/SeqEvent_TakeDamage.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_Touch.uc b/Development/Src/Engine/Classes/SeqEvent_Touch.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_TouchInput.uc b/Development/Src/Engine/Classes/SeqEvent_TouchInput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqEvent_Used.uc b/Development/Src/Engine/Classes/SeqEvent_Used.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_Bool.uc b/Development/Src/Engine/Classes/SeqVar_Bool.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_Byte.uc b/Development/Src/Engine/Classes/SeqVar_Byte.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_Character.uc b/Development/Src/Engine/Classes/SeqVar_Character.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_External.uc b/Development/Src/Engine/Classes/SeqVar_External.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_Float.uc b/Development/Src/Engine/Classes/SeqVar_Float.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_Group.uc b/Development/Src/Engine/Classes/SeqVar_Group.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_Int.uc b/Development/Src/Engine/Classes/SeqVar_Int.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_Name.uc b/Development/Src/Engine/Classes/SeqVar_Name.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_Named.uc b/Development/Src/Engine/Classes/SeqVar_Named.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_Object.uc b/Development/Src/Engine/Classes/SeqVar_Object.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_ObjectList.uc b/Development/Src/Engine/Classes/SeqVar_ObjectList.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_ObjectVolume.uc b/Development/Src/Engine/Classes/SeqVar_ObjectVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_Player.uc b/Development/Src/Engine/Classes/SeqVar_Player.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_RandomFloat.uc b/Development/Src/Engine/Classes/SeqVar_RandomFloat.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_RandomInt.uc b/Development/Src/Engine/Classes/SeqVar_RandomInt.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_String.uc b/Development/Src/Engine/Classes/SeqVar_String.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_Union.uc b/Development/Src/Engine/Classes/SeqVar_Union.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SeqVar_Vector.uc b/Development/Src/Engine/Classes/SeqVar_Vector.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Sequence.uc b/Development/Src/Engine/Classes/Sequence.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SequenceAction.uc b/Development/Src/Engine/Classes/SequenceAction.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SequenceCondition.uc b/Development/Src/Engine/Classes/SequenceCondition.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SequenceEvent.uc b/Development/Src/Engine/Classes/SequenceEvent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SequenceFrame.uc b/Development/Src/Engine/Classes/SequenceFrame.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SequenceFrameWrapped.uc b/Development/Src/Engine/Classes/SequenceFrameWrapped.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SequenceObject.uc b/Development/Src/Engine/Classes/SequenceObject.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SequenceOp.uc b/Development/Src/Engine/Classes/SequenceOp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SequenceVariable.uc b/Development/Src/Engine/Classes/SequenceVariable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Settings.uc b/Development/Src/Engine/Classes/Settings.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ShadowMap2D.uc b/Development/Src/Engine/Classes/ShadowMap2D.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/ShadowMapTexture2D.uc b/Development/Src/Engine/Classes/ShadowMapTexture2D.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SharedCloudFileInterface.uc b/Development/Src/Engine/Classes/SharedCloudFileInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SimpleSplineAudioComponent.uc b/Development/Src/Engine/Classes/SimpleSplineAudioComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SimpleSplineNonLoopAudioComponent.uc b/Development/Src/Engine/Classes/SimpleSplineNonLoopAudioComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkelControlBase.uc b/Development/Src/Engine/Classes/SkelControlBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkelControlFootPlacement.uc b/Development/Src/Engine/Classes/SkelControlFootPlacement.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkelControlHandlebars.uc b/Development/Src/Engine/Classes/SkelControlHandlebars.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkelControlLimb.uc b/Development/Src/Engine/Classes/SkelControlLimb.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkelControlLookAt.uc b/Development/Src/Engine/Classes/SkelControlLookAt.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkelControlSingleBone.uc b/Development/Src/Engine/Classes/SkelControlSingleBone.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkelControlSpline.uc b/Development/Src/Engine/Classes/SkelControlSpline.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkelControlTrail.uc b/Development/Src/Engine/Classes/SkelControlTrail.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkelControlWheel.uc b/Development/Src/Engine/Classes/SkelControlWheel.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkelControl_CCD_IK.uc b/Development/Src/Engine/Classes/SkelControl_CCD_IK.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkelControl_Multiply.uc b/Development/Src/Engine/Classes/SkelControl_Multiply.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkelControl_TwistBone.uc b/Development/Src/Engine/Classes/SkelControl_TwistBone.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkeletalMesh.uc b/Development/Src/Engine/Classes/SkeletalMesh.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkeletalMeshActor.uc b/Development/Src/Engine/Classes/SkeletalMeshActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkeletalMeshActorBasedOnExtremeContent.uc b/Development/Src/Engine/Classes/SkeletalMeshActorBasedOnExtremeContent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkeletalMeshActorMAT.uc b/Development/Src/Engine/Classes/SkeletalMeshActorMAT.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkeletalMeshActorMATSpawnable.uc b/Development/Src/Engine/Classes/SkeletalMeshActorMATSpawnable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkeletalMeshActorMATWalkable.uc b/Development/Src/Engine/Classes/SkeletalMeshActorMATWalkable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkeletalMeshActorSpawnable.uc b/Development/Src/Engine/Classes/SkeletalMeshActorSpawnable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkeletalMeshCinematicActor.uc b/Development/Src/Engine/Classes/SkeletalMeshCinematicActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkeletalMeshComponent.uc b/Development/Src/Engine/Classes/SkeletalMeshComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkeletalMeshSocket.uc b/Development/Src/Engine/Classes/SkeletalMeshSocket.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkyLight.uc b/Development/Src/Engine/Classes/SkyLight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkyLightComponent.uc b/Development/Src/Engine/Classes/SkyLightComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SkyLightToggleable.uc b/Development/Src/Engine/Classes/SkyLightToggleable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SlotToSlotReachSpec.uc b/Development/Src/Engine/Classes/SlotToSlotReachSpec.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundClass.uc b/Development/Src/Engine/Classes/SoundClass.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundCue.uc b/Development/Src/Engine/Classes/SoundCue.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundMode.uc b/Development/Src/Engine/Classes/SoundMode.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNode.uc b/Development/Src/Engine/Classes/SoundNode.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeAmbient.uc b/Development/Src/Engine/Classes/SoundNodeAmbient.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeAmbientNonLoop.uc b/Development/Src/Engine/Classes/SoundNodeAmbientNonLoop.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeAmbientNonLoopToggle.uc b/Development/Src/Engine/Classes/SoundNodeAmbientNonLoopToggle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeAttenuation.uc b/Development/Src/Engine/Classes/SoundNodeAttenuation.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeAttenuationAndGain.uc b/Development/Src/Engine/Classes/SoundNodeAttenuationAndGain.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeConcatenator.uc b/Development/Src/Engine/Classes/SoundNodeConcatenator.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeConcatenatorRadio.uc b/Development/Src/Engine/Classes/SoundNodeConcatenatorRadio.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeDelay.uc b/Development/Src/Engine/Classes/SoundNodeDelay.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeDistanceCrossFade.uc b/Development/Src/Engine/Classes/SoundNodeDistanceCrossFade.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeDoppler.uc b/Development/Src/Engine/Classes/SoundNodeDoppler.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeEnveloper.uc b/Development/Src/Engine/Classes/SoundNodeEnveloper.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeLooping.uc b/Development/Src/Engine/Classes/SoundNodeLooping.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeMature.uc b/Development/Src/Engine/Classes/SoundNodeMature.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeMixer.uc b/Development/Src/Engine/Classes/SoundNodeMixer.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeModulator.uc b/Development/Src/Engine/Classes/SoundNodeModulator.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeModulatorContinuous.uc b/Development/Src/Engine/Classes/SoundNodeModulatorContinuous.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeOscillator.uc b/Development/Src/Engine/Classes/SoundNodeOscillator.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeRandom.uc b/Development/Src/Engine/Classes/SoundNodeRandom.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeWave.uc b/Development/Src/Engine/Classes/SoundNodeWave.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeWaveParam.uc b/Development/Src/Engine/Classes/SoundNodeWaveParam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SoundNodeWaveStreaming.uc b/Development/Src/Engine/Classes/SoundNodeWaveStreaming.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SpeechRecognition.uc b/Development/Src/Engine/Classes/SpeechRecognition.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SpeedTree.uc b/Development/Src/Engine/Classes/SpeedTree.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SpeedTreeActor.uc b/Development/Src/Engine/Classes/SpeedTreeActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SpeedTreeActorFactory.uc b/Development/Src/Engine/Classes/SpeedTreeActorFactory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SpeedTreeComponent.uc b/Development/Src/Engine/Classes/SpeedTreeComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SpeedTreeComponentFactory.uc b/Development/Src/Engine/Classes/SpeedTreeComponentFactory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SphericalHarmonicLightComponent.uc b/Development/Src/Engine/Classes/SphericalHarmonicLightComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SplineActor.uc b/Development/Src/Engine/Classes/SplineActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SplineAudioComponent.uc b/Development/Src/Engine/Classes/SplineAudioComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SplineComponent.uc b/Development/Src/Engine/Classes/SplineComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SplineComponentSimplified.uc b/Development/Src/Engine/Classes/SplineComponentSimplified.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SplineLoftActor.uc b/Development/Src/Engine/Classes/SplineLoftActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SplineLoftActorMovable.uc b/Development/Src/Engine/Classes/SplineLoftActorMovable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SplineMeshComponent.uc b/Development/Src/Engine/Classes/SplineMeshComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SpotLight.uc b/Development/Src/Engine/Classes/SpotLight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SpotLightComponent.uc b/Development/Src/Engine/Classes/SpotLightComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SpotLightMovable.uc b/Development/Src/Engine/Classes/SpotLightMovable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SpotLightToggleable.uc b/Development/Src/Engine/Classes/SpotLightToggleable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SpriteComponent.uc b/Development/Src/Engine/Classes/SpriteComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/StaticLightCollectionActor.uc b/Development/Src/Engine/Classes/StaticLightCollectionActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/StaticMeshActor.uc b/Development/Src/Engine/Classes/StaticMeshActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/StaticMeshActorBase.uc b/Development/Src/Engine/Classes/StaticMeshActorBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/StaticMeshActorBasedOnExtremeContent.uc b/Development/Src/Engine/Classes/StaticMeshActorBasedOnExtremeContent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/StaticMeshCollectionActor.uc b/Development/Src/Engine/Classes/StaticMeshCollectionActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/StaticMeshComponent.uc b/Development/Src/Engine/Classes/StaticMeshComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/StaticMeshComponentFactory.uc b/Development/Src/Engine/Classes/StaticMeshComponentFactory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/StringsTag.uc b/Development/Src/Engine/Classes/StringsTag.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Surface.uc b/Development/Src/Engine/Classes/Surface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/SwatTurnReachSpec.uc b/Development/Src/Engine/Classes/SwatTurnReachSpec.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TargetPoint.uc b/Development/Src/Engine/Classes/TargetPoint.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TeamInfo.uc b/Development/Src/Engine/Classes/TeamInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TeleportReachSpec.uc b/Development/Src/Engine/Classes/TeleportReachSpec.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Teleporter.uc b/Development/Src/Engine/Classes/Teleporter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Terrain.uc b/Development/Src/Engine/Classes/Terrain.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TerrainComponent.uc b/Development/Src/Engine/Classes/TerrainComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TerrainLayerSetup.uc b/Development/Src/Engine/Classes/TerrainLayerSetup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TerrainMaterial.uc b/Development/Src/Engine/Classes/TerrainMaterial.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TerrainWeightMapTexture.uc b/Development/Src/Engine/Classes/TerrainWeightMapTexture.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TestSplittingVolume.uc b/Development/Src/Engine/Classes/TestSplittingVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Texture.uc b/Development/Src/Engine/Classes/Texture.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Texture2D.uc b/Development/Src/Engine/Classes/Texture2D.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Texture2DComposite.uc b/Development/Src/Engine/Classes/Texture2DComposite.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Texture2DDynamic.uc b/Development/Src/Engine/Classes/Texture2DDynamic.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TextureCube.uc b/Development/Src/Engine/Classes/TextureCube.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TextureFlipBook.uc b/Development/Src/Engine/Classes/TextureFlipBook.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TextureMovie.uc b/Development/Src/Engine/Classes/TextureMovie.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TextureRenderTarget.uc b/Development/Src/Engine/Classes/TextureRenderTarget.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TextureRenderTarget2D.uc b/Development/Src/Engine/Classes/TextureRenderTarget2D.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TextureRenderTargetCube.uc b/Development/Src/Engine/Classes/TextureRenderTargetCube.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TranslationContext.uc b/Development/Src/Engine/Classes/TranslationContext.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TranslatorTag.uc b/Development/Src/Engine/Classes/TranslatorTag.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Trigger.uc b/Development/Src/Engine/Classes/Trigger.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TriggerStreamingLevel.uc b/Development/Src/Engine/Classes/TriggerStreamingLevel.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TriggerVolume.uc b/Development/Src/Engine/Classes/TriggerVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Trigger_Dynamic.uc b/Development/Src/Engine/Classes/Trigger_Dynamic.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Trigger_LOS.uc b/Development/Src/Engine/Classes/Trigger_LOS.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Trigger_PawnsOnly.uc b/Development/Src/Engine/Classes/Trigger_PawnsOnly.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TriggeredPath.uc b/Development/Src/Engine/Classes/TriggeredPath.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/TwitterIntegrationBase.uc b/Development/Src/Engine/Classes/TwitterIntegrationBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UICharacterSummary.uc b/Development/Src/Engine/Classes/UICharacterSummary.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataProvider.uc b/Development/Src/Engine/Classes/UIDataProvider.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataProvider_MenuItem.uc b/Development/Src/Engine/Classes/UIDataProvider_MenuItem.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataProvider_OnlineFriendMessages.uc b/Development/Src/Engine/Classes/UIDataProvider_OnlineFriendMessages.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataProvider_OnlineFriends.uc b/Development/Src/Engine/Classes/UIDataProvider_OnlineFriends.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataProvider_OnlinePartyChatList.uc b/Development/Src/Engine/Classes/UIDataProvider_OnlinePartyChatList.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataProvider_OnlinePlayerDataBase.uc b/Development/Src/Engine/Classes/UIDataProvider_OnlinePlayerDataBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataProvider_OnlinePlayerStorage.uc b/Development/Src/Engine/Classes/UIDataProvider_OnlinePlayerStorage.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataProvider_OnlinePlayerStorageArray.uc b/Development/Src/Engine/Classes/UIDataProvider_OnlinePlayerStorageArray.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataProvider_OnlineProfileSettings.uc b/Development/Src/Engine/Classes/UIDataProvider_OnlineProfileSettings.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataProvider_PlayerAchievements.uc b/Development/Src/Engine/Classes/UIDataProvider_PlayerAchievements.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataProvider_Settings.uc b/Development/Src/Engine/Classes/UIDataProvider_Settings.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataProvider_SettingsArray.uc b/Development/Src/Engine/Classes/UIDataProvider_SettingsArray.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore.uc b/Development/Src/Engine/Classes/UIDataStore.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStorePublisher.uc b/Development/Src/Engine/Classes/UIDataStorePublisher.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStoreSubscriber.uc b/Development/Src/Engine/Classes/UIDataStoreSubscriber.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore_DynamicResource.uc b/Development/Src/Engine/Classes/UIDataStore_DynamicResource.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore_Fonts.uc b/Development/Src/Engine/Classes/UIDataStore_Fonts.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore_GameResource.uc b/Development/Src/Engine/Classes/UIDataStore_GameResource.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore_GameState.uc b/Development/Src/Engine/Classes/UIDataStore_GameState.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore_InputAlias.uc b/Development/Src/Engine/Classes/UIDataStore_InputAlias.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore_MenuItems.uc b/Development/Src/Engine/Classes/UIDataStore_MenuItems.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore_OnlineGameSearch.uc b/Development/Src/Engine/Classes/UIDataStore_OnlineGameSearch.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore_OnlineGameSettings.uc b/Development/Src/Engine/Classes/UIDataStore_OnlineGameSettings.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore_OnlinePlayerData.uc b/Development/Src/Engine/Classes/UIDataStore_OnlinePlayerData.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore_OnlineStats.uc b/Development/Src/Engine/Classes/UIDataStore_OnlineStats.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore_Registry.uc b/Development/Src/Engine/Classes/UIDataStore_Registry.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore_Remote.uc b/Development/Src/Engine/Classes/UIDataStore_Remote.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore_Settings.uc b/Development/Src/Engine/Classes/UIDataStore_Settings.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore_StringAliasMap.uc b/Development/Src/Engine/Classes/UIDataStore_StringAliasMap.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDataStore_StringBase.uc b/Development/Src/Engine/Classes/UIDataStore_StringBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIDev.uci b/Development/Src/Engine/Classes/UIDev.uci old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIGameInfoSummary.uc b/Development/Src/Engine/Classes/UIGameInfoSummary.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIInteraction.uc b/Development/Src/Engine/Classes/UIInteraction.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIManager.uc b/Development/Src/Engine/Classes/UIManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIMapSummary.uc b/Development/Src/Engine/Classes/UIMapSummary.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIPropertyDataProvider.uc b/Development/Src/Engine/Classes/UIPropertyDataProvider.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIResourceCombinationProvider.uc b/Development/Src/Engine/Classes/UIResourceCombinationProvider.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIResourceDataProvider.uc b/Development/Src/Engine/Classes/UIResourceDataProvider.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIRoot.uc b/Development/Src/Engine/Classes/UIRoot.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UISceneClient.uc b/Development/Src/Engine/Classes/UISceneClient.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UISoundTheme.uc b/Development/Src/Engine/Classes/UISoundTheme.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UIWeaponSummary.uc b/Development/Src/Engine/Classes/UIWeaponSummary.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UberPostProcessEffect.uc b/Development/Src/Engine/Classes/UberPostProcessEffect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UserCloudFileCloudSaveSystemDataBlobStore.uc b/Development/Src/Engine/Classes/UserCloudFileCloudSaveSystemDataBlobStore.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/UserCloudFileInterface.uc b/Development/Src/Engine/Classes/UserCloudFileInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Vehicle.uc b/Development/Src/Engine/Classes/Vehicle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Volume.uc b/Development/Src/Engine/Classes/Volume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/VolumePathNode.uc b/Development/Src/Engine/Classes/VolumePathNode.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/VolumeTimer.uc b/Development/Src/Engine/Classes/VolumeTimer.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/WallTransReachSpec.uc b/Development/Src/Engine/Classes/WallTransReachSpec.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/WaterVolume.uc b/Development/Src/Engine/Classes/WaterVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/WaveFormBase.uc b/Development/Src/Engine/Classes/WaveFormBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/Weapon.uc b/Development/Src/Engine/Classes/Weapon.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/WindDirectionalSource.uc b/Development/Src/Engine/Classes/WindDirectionalSource.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/WindDirectionalSourceComponent.uc b/Development/Src/Engine/Classes/WindDirectionalSourceComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/WindPointSource.uc b/Development/Src/Engine/Classes/WindPointSource.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/WindPointSourceComponent.uc b/Development/Src/Engine/Classes/WindPointSourceComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/WorldAttractor.uc b/Development/Src/Engine/Classes/WorldAttractor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/Engine/Classes/WorldInfo.uc b/Development/Src/Engine/Classes/WorldInfo.uc old mode 100755 new mode 100644 index a8c3dc8e..7aa54f68 --- a/Development/Src/Engine/Classes/WorldInfo.uc +++ b/Development/Src/Engine/Classes/WorldInfo.uc @@ -73,7 +73,7 @@ var const noimport transient array PortalVolumes; var const noimport transient array EnvironmentVolumes; /** Level collection. ULevels are referenced by FName (Package name) to avoid serialized references. Also contains offsets in world units */ -var(WorldInfo) editinline array StreamingLevels; // HACK: un-const'd for paladins +var(WorldInfo) const editconst editinline array StreamingLevels; /** * This is a bool on the level which is set when a light that needs to have lighting rebuilt @@ -1471,15 +1471,6 @@ simulated event NotifyHostMigrationStateChanged(EHostMigrationProgress NewState, } } -// Export UWorldInfo::execIsPlayingTimelapse(FFrame&, void* const) -native final function bool IsPlayingTimelapse(); - -// Export UWorldInfo::execIsTimelapsePlayOfTheGame(FFrame&, void* const) -native final function bool IsTimelapsePlayOfTheGame(); - -// Export UWorldInfo::execIsRecordingTimelapse(FFrame&, void* const) -native final function bool IsRecordingTimelapse(); - /** * Enable or disable host migration. * diff --git a/Development/Src/Engine/Classes/ZoneInfo.uc b/Development/Src/Engine/Classes/ZoneInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/FlashMovie.uc b/Development/Src/GFxUI/Classes/FlashMovie.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/GFxAction_CloseMovie.uc b/Development/Src/GFxUI/Classes/GFxAction_CloseMovie.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/GFxAction_GetVariable.uc b/Development/Src/GFxUI/Classes/GFxAction_GetVariable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/GFxAction_Invoke.uc b/Development/Src/GFxUI/Classes/GFxAction_Invoke.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/GFxAction_OpenMovie.uc b/Development/Src/GFxUI/Classes/GFxAction_OpenMovie.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/GFxAction_SetCaptureKeys.uc b/Development/Src/GFxUI/Classes/GFxAction_SetCaptureKeys.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/GFxAction_SetVariable.uc b/Development/Src/GFxUI/Classes/GFxAction_SetVariable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/GFxClikWidget.uc b/Development/Src/GFxUI/Classes/GFxClikWidget.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/GFxEngine.uc b/Development/Src/GFxUI/Classes/GFxEngine.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/GFxEvent_FsCommand.uc b/Development/Src/GFxUI/Classes/GFxEvent_FsCommand.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/GFxFSCmdHandler.uc b/Development/Src/GFxUI/Classes/GFxFSCmdHandler.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/GFxFSCmdHandler_Kismet.uc b/Development/Src/GFxUI/Classes/GFxFSCmdHandler_Kismet.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/GFxInteraction.uc b/Development/Src/GFxUI/Classes/GFxInteraction.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/GFxMoviePlayer.uc b/Development/Src/GFxUI/Classes/GFxMoviePlayer.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/GFxObject.uc b/Development/Src/GFxUI/Classes/GFxObject.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/GFxRawData.uc b/Development/Src/GFxUI/Classes/GFxRawData.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUI/Classes/SwfMovie.uc b/Development/Src/GFxUI/Classes/SwfMovie.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUIEditor/Classes/GFxImportCommandlet.uc b/Development/Src/GFxUIEditor/Classes/GFxImportCommandlet.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUIEditor/Classes/GFxMovieFactory.uc b/Development/Src/GFxUIEditor/Classes/GFxMovieFactory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUIEditor/Classes/GFxReimportCommandlet.uc b/Development/Src/GFxUIEditor/Classes/GFxReimportCommandlet.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GFxUIEditor/Classes/GenericBrowserType_GFxMovie.uc b/Development/Src/GFxUIEditor/Classes/GenericBrowserType_GFxMovie.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/DebugCameraController.uc b/Development/Src/GameFramework/Classes/DebugCameraController.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/DebugCameraHUD.uc b/Development/Src/GameFramework/Classes/DebugCameraHUD.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/DebugCameraInput.uc b/Development/Src/GameFramework/Classes/DebugCameraInput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/DynamicGameCrowdDestination.uc b/Development/Src/GameFramework/Classes/DynamicGameCrowdDestination.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/DynamicSpriteComponent.uc b/Development/Src/GameFramework/Classes/DynamicSpriteComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/FrameworkGame.uc b/Development/Src/GameFramework/Classes/FrameworkGame.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameAICmd_Hover_MoveToGoal.uc b/Development/Src/GameFramework/Classes/GameAICmd_Hover_MoveToGoal.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameAICmd_Hover_MoveToGoal_Mesh.uc b/Development/Src/GameFramework/Classes/GameAICmd_Hover_MoveToGoal_Mesh.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameAICommand.uc b/Development/Src/GameFramework/Classes/GameAICommand.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameAIController.uc b/Development/Src/GameFramework/Classes/GameAIController.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCameraBase.uc b/Development/Src/GameFramework/Classes/GameCameraBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCameraBlockingVolume.uc b/Development/Src/GameFramework/Classes/GameCameraBlockingVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCheatManager.uc b/Development/Src/GameFramework/Classes/GameCheatManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdAgent.uc b/Development/Src/GameFramework/Classes/GameCrowdAgent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdAgentBehavior.uc b/Development/Src/GameFramework/Classes/GameCrowdAgentBehavior.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdAgentSM.uc b/Development/Src/GameFramework/Classes/GameCrowdAgentSM.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdAgentSkeletal.uc b/Development/Src/GameFramework/Classes/GameCrowdAgentSkeletal.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdBehaviorPoint.uc b/Development/Src/GameFramework/Classes/GameCrowdBehaviorPoint.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdBehavior_PlayAnimation.uc b/Development/Src/GameFramework/Classes/GameCrowdBehavior_PlayAnimation.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdBehavior_RunFromPanic.uc b/Development/Src/GameFramework/Classes/GameCrowdBehavior_RunFromPanic.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdBehavior_WaitForGroup.uc b/Development/Src/GameFramework/Classes/GameCrowdBehavior_WaitForGroup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdBehavior_WaitInQueue.uc b/Development/Src/GameFramework/Classes/GameCrowdBehavior_WaitInQueue.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdDestination.uc b/Development/Src/GameFramework/Classes/GameCrowdDestination.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdDestinationQueuePoint.uc b/Development/Src/GameFramework/Classes/GameCrowdDestinationQueuePoint.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdGroup.uc b/Development/Src/GameFramework/Classes/GameCrowdGroup.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdInfoVolume.uc b/Development/Src/GameFramework/Classes/GameCrowdInfoVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdInteractionDestination.uc b/Development/Src/GameFramework/Classes/GameCrowdInteractionDestination.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdInteractionPoint.uc b/Development/Src/GameFramework/Classes/GameCrowdInteractionPoint.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdPopulationManager.uc b/Development/Src/GameFramework/Classes/GameCrowdPopulationManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdReplicationActor.uc b/Development/Src/GameFramework/Classes/GameCrowdReplicationActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdSpawnInterface.uc b/Development/Src/GameFramework/Classes/GameCrowdSpawnInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdSpawnRelativeActor.uc b/Development/Src/GameFramework/Classes/GameCrowdSpawnRelativeActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowdSpawnerInterface.uc b/Development/Src/GameFramework/Classes/GameCrowdSpawnerInterface.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameCrowd_ListOfAgents.uc b/Development/Src/GameFramework/Classes/GameCrowd_ListOfAgents.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameDestinationConnRenderingComponent.uc b/Development/Src/GameFramework/Classes/GameDestinationConnRenderingComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameExplosion.uc b/Development/Src/GameFramework/Classes/GameExplosion.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameExplosionActor.uc b/Development/Src/GameFramework/Classes/GameExplosionActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameExplosionContent.uc b/Development/Src/GameFramework/Classes/GameExplosionContent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameFixedCamera.uc b/Development/Src/GameFramework/Classes/GameFixedCamera.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameKActorSpawnableEffect.uc b/Development/Src/GameFramework/Classes/GameKActorSpawnableEffect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GamePawn.uc b/Development/Src/GameFramework/Classes/GamePawn.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GamePlayerCamera.uc b/Development/Src/GameFramework/Classes/GamePlayerCamera.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GamePlayerController.uc b/Development/Src/GameFramework/Classes/GamePlayerController.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameSkelCtrl_Recoil.uc b/Development/Src/GameFramework/Classes/GameSkelCtrl_Recoil.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameSpecialMove.uc b/Development/Src/GameFramework/Classes/GameSpecialMove.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameStateObject.uc b/Development/Src/GameFramework/Classes/GameStateObject.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameStatsAggregator.uc b/Development/Src/GameFramework/Classes/GameStatsAggregator.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameThirdPersonCamera.uc b/Development/Src/GameFramework/Classes/GameThirdPersonCamera.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameThirdPersonCameraMode.uc b/Development/Src/GameFramework/Classes/GameThirdPersonCameraMode.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameThirdPersonCameraMode_Default.uc b/Development/Src/GameFramework/Classes/GameThirdPersonCameraMode_Default.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameTypes.uc b/Development/Src/GameFramework/Classes/GameTypes.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/GameWaveForms.uc b/Development/Src/GameFramework/Classes/GameWaveForms.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileDebugCameraController.uc b/Development/Src/GameFramework/Classes/MobileDebugCameraController.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileDebugCameraHUD.uc b/Development/Src/GameFramework/Classes/MobileDebugCameraHUD.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileDebugCameraInput.uc b/Development/Src/GameFramework/Classes/MobileDebugCameraInput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileHUD.uc b/Development/Src/GameFramework/Classes/MobileHUD.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileInputZone.uc b/Development/Src/GameFramework/Classes/MobileInputZone.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileMenuBar.uc b/Development/Src/GameFramework/Classes/MobileMenuBar.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileMenuBarItem.uc b/Development/Src/GameFramework/Classes/MobileMenuBarItem.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileMenuButton.uc b/Development/Src/GameFramework/Classes/MobileMenuButton.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileMenuElement.uc b/Development/Src/GameFramework/Classes/MobileMenuElement.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileMenuGame.uc b/Development/Src/GameFramework/Classes/MobileMenuGame.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileMenuImage.uc b/Development/Src/GameFramework/Classes/MobileMenuImage.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileMenuInventory.uc b/Development/Src/GameFramework/Classes/MobileMenuInventory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileMenuLabel.uc b/Development/Src/GameFramework/Classes/MobileMenuLabel.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileMenuList.uc b/Development/Src/GameFramework/Classes/MobileMenuList.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileMenuListItem.uc b/Development/Src/GameFramework/Classes/MobileMenuListItem.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileMenuObject.uc b/Development/Src/GameFramework/Classes/MobileMenuObject.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileMenuObjectProxy.uc b/Development/Src/GameFramework/Classes/MobileMenuObjectProxy.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileMenuPlayerController.uc b/Development/Src/GameFramework/Classes/MobileMenuPlayerController.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileMenuScene.uc b/Development/Src/GameFramework/Classes/MobileMenuScene.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobilePlayerInput.uc b/Development/Src/GameFramework/Classes/MobilePlayerInput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileSecondaryViewportClient.uc b/Development/Src/GameFramework/Classes/MobileSecondaryViewportClient.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/MobileTouchInputVolume.uc b/Development/Src/GameFramework/Classes/MobileTouchInputVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/NavMeshGoal_OutOfViewFrom.uc b/Development/Src/GameFramework/Classes/NavMeshGoal_OutOfViewFrom.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/NavMeshPath_BiasAgainstPolysWithinDistanceOfLocations.uc b/Development/Src/GameFramework/Classes/NavMeshPath_BiasAgainstPolysWithinDistanceOfLocations.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/PMESTG_LeaveADecalBase.uc b/Development/Src/GameFramework/Classes/PMESTG_LeaveADecalBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/PlayerCollectorGame.uc b/Development/Src/GameFramework/Classes/PlayerCollectorGame.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SecondaryViewportClient.uc b/Development/Src/GameFramework/Classes/SecondaryViewportClient.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqAct_ControlGameMovie.uc b/Development/Src/GameFramework/Classes/SeqAct_ControlGameMovie.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqAct_Deproject.uc b/Development/Src/GameFramework/Classes/SeqAct_Deproject.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqAct_GameCrowdPopulationManagerToggle.uc b/Development/Src/GameFramework/Classes/SeqAct_GameCrowdPopulationManagerToggle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqAct_GameCrowdSpawner.uc b/Development/Src/GameFramework/Classes/SeqAct_GameCrowdSpawner.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqAct_MobileAddInputZones.uc b/Development/Src/GameFramework/Classes/SeqAct_MobileAddInputZones.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqAct_MobileClearInputZones.uc b/Development/Src/GameFramework/Classes/SeqAct_MobileClearInputZones.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqAct_MobileRemoveInputZone.uc b/Development/Src/GameFramework/Classes/SeqAct_MobileRemoveInputZone.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqAct_MobileSaveLoadValue.uc b/Development/Src/GameFramework/Classes/SeqAct_MobileSaveLoadValue.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqAct_ModifyProperty.uc b/Development/Src/GameFramework/Classes/SeqAct_ModifyProperty.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqAct_PlayAgentAnimation.uc b/Development/Src/GameFramework/Classes/SeqAct_PlayAgentAnimation.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqAct_ToggleMouseCursor.uc b/Development/Src/GameFramework/Classes/SeqAct_ToggleMouseCursor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqEvent_CrowdAgentReachedDestination.uc b/Development/Src/GameFramework/Classes/SeqEvent_CrowdAgentReachedDestination.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqEvent_HudRender.uc b/Development/Src/GameFramework/Classes/SeqEvent_HudRender.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqEvent_HudRenderImage.uc b/Development/Src/GameFramework/Classes/SeqEvent_HudRenderImage.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqEvent_HudRenderText.uc b/Development/Src/GameFramework/Classes/SeqEvent_HudRenderText.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqEvent_MobileBase.uc b/Development/Src/GameFramework/Classes/SeqEvent_MobileBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqEvent_MobileButton.uc b/Development/Src/GameFramework/Classes/SeqEvent_MobileButton.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqEvent_MobileInput.uc b/Development/Src/GameFramework/Classes/SeqEvent_MobileInput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqEvent_MobileLook.uc b/Development/Src/GameFramework/Classes/SeqEvent_MobileLook.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqEvent_MobileMotion.uc b/Development/Src/GameFramework/Classes/SeqEvent_MobileMotion.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqEvent_MobileObjectPicker.uc b/Development/Src/GameFramework/Classes/SeqEvent_MobileObjectPicker.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqEvent_MobileRawInput.uc b/Development/Src/GameFramework/Classes/SeqEvent_MobileRawInput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqEvent_MobileSwipe.uc b/Development/Src/GameFramework/Classes/SeqEvent_MobileSwipe.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqEvent_MobileTouchInputVolume.uc b/Development/Src/GameFramework/Classes/SeqEvent_MobileTouchInputVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/SeqEvent_MobileZoneBase.uc b/Development/Src/GameFramework/Classes/SeqEvent_MobileZoneBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Classes/TouchableElement3D.uc b/Development/Src/GameFramework/Classes/TouchableElement3D.uc old mode 100755 new mode 100644 diff --git a/Development/Src/GameFramework/Globals.uci b/Development/Src/GameFramework/Globals.uci old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/ClientBeaconAddressResolver.uc b/Development/Src/IpDrv/Classes/ClientBeaconAddressResolver.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/HelloWeb.uc b/Development/Src/IpDrv/Classes/HelloWeb.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/ImageServer.uc b/Development/Src/IpDrv/Classes/ImageServer.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/InternetLink.uc b/Development/Src/IpDrv/Classes/InternetLink.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/MCPBase.uc b/Development/Src/IpDrv/Classes/MCPBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpClashMobBase.uc b/Development/Src/IpDrv/Classes/McpClashMobBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpClashMobFileDownload.uc b/Development/Src/IpDrv/Classes/McpClashMobFileDownload.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpClashMobManager.uc b/Development/Src/IpDrv/Classes/McpClashMobManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpGroupsBase.uc b/Development/Src/IpDrv/Classes/McpGroupsBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpGroupsManager.uc b/Development/Src/IpDrv/Classes/McpGroupsManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpIdMappingBase.uc b/Development/Src/IpDrv/Classes/McpIdMappingBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpIdMappingManager.uc b/Development/Src/IpDrv/Classes/McpIdMappingManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpManagedValueManager.uc b/Development/Src/IpDrv/Classes/McpManagedValueManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpManagedValueManagerBase.uc b/Development/Src/IpDrv/Classes/McpManagedValueManagerBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpMessageBase.uc b/Development/Src/IpDrv/Classes/McpMessageBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpMessageManager.uc b/Development/Src/IpDrv/Classes/McpMessageManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpServerTimeBase.uc b/Development/Src/IpDrv/Classes/McpServerTimeBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpServerTimeManager.uc b/Development/Src/IpDrv/Classes/McpServerTimeManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpServiceBase.uc b/Development/Src/IpDrv/Classes/McpServiceBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpServiceConfig.uc b/Development/Src/IpDrv/Classes/McpServiceConfig.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpUserCloudFileDownload.uc b/Development/Src/IpDrv/Classes/McpUserCloudFileDownload.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpUserInventoryBase.uc b/Development/Src/IpDrv/Classes/McpUserInventoryBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpUserInventoryManager.uc b/Development/Src/IpDrv/Classes/McpUserInventoryManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpUserManager.uc b/Development/Src/IpDrv/Classes/McpUserManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/McpUserManagerBase.uc b/Development/Src/IpDrv/Classes/McpUserManagerBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/MeshBeacon.uc b/Development/Src/IpDrv/Classes/MeshBeacon.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/MeshBeaconClient.uc b/Development/Src/IpDrv/Classes/MeshBeaconClient.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/MeshBeaconHost.uc b/Development/Src/IpDrv/Classes/MeshBeaconHost.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/OnlineAuthInterfaceImpl.uc b/Development/Src/IpDrv/Classes/OnlineAuthInterfaceImpl.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/OnlineEventsInterfaceMcp.uc b/Development/Src/IpDrv/Classes/OnlineEventsInterfaceMcp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/OnlineGameInterfaceImpl.uc b/Development/Src/IpDrv/Classes/OnlineGameInterfaceImpl.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/OnlineImageDownloaderWeb.uc b/Development/Src/IpDrv/Classes/OnlineImageDownloaderWeb.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/OnlineNewsInterfaceMcp.uc b/Development/Src/IpDrv/Classes/OnlineNewsInterfaceMcp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/OnlinePlaylistManager.uc b/Development/Src/IpDrv/Classes/OnlinePlaylistManager.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/OnlinePlaylistProvider.uc b/Development/Src/IpDrv/Classes/OnlinePlaylistProvider.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/OnlineSubsystemCommonImpl.uc b/Development/Src/IpDrv/Classes/OnlineSubsystemCommonImpl.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/OnlineTitleFileDownloadBase.uc b/Development/Src/IpDrv/Classes/OnlineTitleFileDownloadBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/OnlineTitleFileDownloadMcp.uc b/Development/Src/IpDrv/Classes/OnlineTitleFileDownloadMcp.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/OnlineTitleFileDownloadWeb.uc b/Development/Src/IpDrv/Classes/OnlineTitleFileDownloadWeb.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/PartyBeacon.uc b/Development/Src/IpDrv/Classes/PartyBeacon.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/PartyBeaconClient.uc b/Development/Src/IpDrv/Classes/PartyBeaconClient.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/PartyBeaconHost.uc b/Development/Src/IpDrv/Classes/PartyBeaconHost.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/TcpLink.uc b/Development/Src/IpDrv/Classes/TcpLink.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/TitleFileDownloadCache.uc b/Development/Src/IpDrv/Classes/TitleFileDownloadCache.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/UIDataStore_OnlinePlaylists.uc b/Development/Src/IpDrv/Classes/UIDataStore_OnlinePlaylists.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/WebApplication.uc b/Development/Src/IpDrv/Classes/WebApplication.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/WebConnection.uc b/Development/Src/IpDrv/Classes/WebConnection.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/WebRequest.uc b/Development/Src/IpDrv/Classes/WebRequest.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/WebResponse.uc b/Development/Src/IpDrv/Classes/WebResponse.uc old mode 100755 new mode 100644 diff --git a/Development/Src/IpDrv/Classes/WebServer.uc b/Development/Src/IpDrv/Classes/WebServer.uc old mode 100755 new mode 100644 diff --git a/Development/Src/MyMod/Classes/DO_NOT_DELETE.TXT b/Development/Src/MyMod/Classes/DO_NOT_DELETE.TXT new file mode 100644 index 00000000..e69de29b diff --git a/Development/Src/OnlineSubsystemGameCenter/Classes/OnlineSubsystemGameCenter.uc b/Development/Src/OnlineSubsystemGameCenter/Classes/OnlineSubsystemGameCenter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/OnlineSubsystemGameCenter/Classes/OnlineSuppliedUIGameCenter.uc b/Development/Src/OnlineSubsystemGameCenter/Classes/OnlineSuppliedUIGameCenter.uc old mode 100755 new mode 100644 diff --git a/Development/Src/OnlineSubsystemPC/Classes/OnlineSubsystemPC.uc b/Development/Src/OnlineSubsystemPC/Classes/OnlineSubsystemPC.uc old mode 100755 new mode 100644 diff --git a/Development/Src/OnlineSubsystemSteamworks/Classes/OnlineAuthInterfaceSteamworks.uc b/Development/Src/OnlineSubsystemSteamworks/Classes/OnlineAuthInterfaceSteamworks.uc old mode 100755 new mode 100644 diff --git a/Development/Src/OnlineSubsystemSteamworks/Classes/OnlineGameInterfaceSteamworks.uc b/Development/Src/OnlineSubsystemSteamworks/Classes/OnlineGameInterfaceSteamworks.uc old mode 100755 new mode 100644 diff --git a/Development/Src/OnlineSubsystemSteamworks/Classes/OnlineLobbyInterfaceSteamworks.uc b/Development/Src/OnlineSubsystemSteamworks/Classes/OnlineLobbyInterfaceSteamworks.uc old mode 100755 new mode 100644 diff --git a/Development/Src/OnlineSubsystemSteamworks/Classes/OnlineSubsystemSteamworks.uc b/Development/Src/OnlineSubsystemSteamworks/Classes/OnlineSubsystemSteamworks.uc old mode 100755 new mode 100644 diff --git a/Development/Src/OnlineSubsystemSteamworks/Globals.uci b/Development/Src/OnlineSubsystemSteamworks/Globals.uci old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAir/Classes/InterpTrackInstSubstanceInput.uc b/Development/Src/SubstanceAir/Classes/InterpTrackInstSubstanceInput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAir/Classes/InterpTrackSubstanceInput.uc b/Development/Src/SubstanceAir/Classes/InterpTrackSubstanceInput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAir/Classes/SeqAct_SubstanceRender.uc b/Development/Src/SubstanceAir/Classes/SeqAct_SubstanceRender.uc old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAir/Classes/SeqAct_SubstanceSetInputFloat.uc b/Development/Src/SubstanceAir/Classes/SeqAct_SubstanceSetInputFloat.uc old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAir/Classes/SeqAct_SubstanceSetInputImg.uc b/Development/Src/SubstanceAir/Classes/SeqAct_SubstanceSetInputImg.uc old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAir/Classes/SeqAct_SubstanceSetInputInt.uc b/Development/Src/SubstanceAir/Classes/SeqAct_SubstanceSetInputInt.uc old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAir/Classes/SubstanceAirGraphActor.uc b/Development/Src/SubstanceAir/Classes/SubstanceAirGraphActor.uc old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAir/Classes/SubstanceAirGraphInstance.uc b/Development/Src/SubstanceAir/Classes/SubstanceAirGraphInstance.uc old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAir/Classes/SubstanceAirImageInput.uc b/Development/Src/SubstanceAir/Classes/SubstanceAirImageInput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAir/Classes/SubstanceAirInstanceFactory.uc b/Development/Src/SubstanceAir/Classes/SubstanceAirInstanceFactory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAir/Classes/SubstanceAirTexture2D.uc b/Development/Src/SubstanceAir/Classes/SubstanceAirTexture2D.uc old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAirEd/Classes/GenericBrowserType_SubstanceAirGraphInstance.uc b/Development/Src/SubstanceAirEd/Classes/GenericBrowserType_SubstanceAirGraphInstance.uc old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAirEd/Classes/GenericBrowserType_SubstanceAirImageInput.uc b/Development/Src/SubstanceAirEd/Classes/GenericBrowserType_SubstanceAirImageInput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAirEd/Classes/GenericBrowserType_SubstanceAirInstanceFactory.uc b/Development/Src/SubstanceAirEd/Classes/GenericBrowserType_SubstanceAirInstanceFactory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAirEd/Classes/GenericBrowserType_SubstanceAirTexture2D.uc b/Development/Src/SubstanceAirEd/Classes/GenericBrowserType_SubstanceAirTexture2D.uc old mode 100755 new mode 100644 diff --git a/Development/Src/SubstanceAirEd/Classes/ImageInputThumbnailRenderer.uc b/Development/Src/SubstanceAirEd/Classes/ImageInputThumbnailRenderer.uc old mode 100755 new mode 100644 diff --git a/Development/Src/TestPackage/Classes/Test2.uc b/Development/Src/TestPackage/Classes/Test2.uc deleted file mode 100644 index cd84f4e6..00000000 --- a/Development/Src/TestPackage/Classes/Test2.uc +++ /dev/null @@ -1,18 +0,0 @@ -interface Test2 extends Interface native(Pawns) - dependson(TgObject); - -function int GetCredits() { } - -function SetCredits(int nCreditsAmount) { } - -function ResetUlt() { } - -native function SetRewardValues(int XP, int Currency, Actor Source, TgObject.ERewardValueType RewardType, optional bool bFlankKill=false); // Export UTgPaladinsController::execSetRewardValues(FFrame&, void* const) - -function LiveRespawn(bool bResetHealth, bool bResetDevices) { } - -event Revive() { } - -function Pawn GetTgPawn() { } - -native function int GetTaskForceNumber(); // Export UTgPaladinsController::execGetTaskForceNumber(FFrame&, void* const) diff --git a/Development/Src/TestPackage/Classes/TestPackage.uc b/Development/Src/TestPackage/Classes/TestPackage.uc deleted file mode 100644 index 08c57c97..00000000 --- a/Development/Src/TestPackage/Classes/TestPackage.uc +++ /dev/null @@ -1,20 +0,0 @@ -class TestPackage extends Object; - -enum EZoomState { - ZOOM_None, // 0 - ZOOM_In, // 1 - ZOOM_Out // 2 -}; - -struct SpectatorBookmark { - var transient Actor ViewTarget; - var TPOV POV; - structdefaultproperties {} -}; - -function ChangeZoomState(EZoomState NewZoomState) { } - -state RoundEnded { - event BeginState(name PreviousStateName) { } - stop; -} diff --git a/Development/Src/TestPackage/Classes/TgObject.uc b/Development/Src/TestPackage/Classes/TgObject.uc deleted file mode 100644 index 55d3cf54..00000000 --- a/Development/Src/TestPackage/Classes/TgObject.uc +++ /dev/null @@ -1,25 +0,0 @@ -class TgObject extends Object; - -enum ERewardValueType { - RVT_None, // 0 - RVT_Initial, // 1 - RVT_Spool, // 2 - RVT_Kill, // 3 - RVT_Assist, // 4 - RVT_Taken, // 5 - RVT_Healing, // 6 - RVT_Mitigated, // 7 - RVT_Damage, // 8 - RVT_Objective, // 9 - RVT_Captured, // 10 - RVT_Capturing, // 11 - RVT_Contesting, // 12 - RVT_Destroyed, // 13 - RVT_PushingPayload, // 14 - RVT_ContestingPayload, // 15 - RVT_RoundWon, // 16 - RVT_SuccessfulDefense, // 17 - RVT_SuccessfulPush, // 18 - RVT_Cheat, // 19 - RVT_Bounty, // 20 -}; diff --git a/Development/Src/TestPackage/Classes/TgSpectatorController.uc b/Development/Src/TestPackage/Classes/TgSpectatorController.uc deleted file mode 100644 index 7ff6a62a..00000000 --- a/Development/Src/TestPackage/Classes/TgSpectatorController.uc +++ /dev/null @@ -1,235 +0,0 @@ -class TgSpectatorController extends PlayerController native(Pawns) config(Game) hidecategories(Navigation); - -const MAX_BROADCAST_CHANNELS = 4; - -enum SpectatorCameraMode { - SpecCam_None, // 0 - SpecCam_Fly, // 1 - SpecCam_FollowThirdPerson, // 2 - SpecCam_FollowFirstPerson, // 3 - SpecCam_FollowTopDown, // 4 - SpecCam_Camera, // 5 - SpecCam_Overview, // 6 - SpecCam_LockedView, // 7 -}; - -enum SpectatorCameraCycle { - SpecCycle_None, // 0 - SpecCycle_PlayerFriendly, // 1 - SpecCycle_PlayerEnemy, // 2 - SpecCycle_Player, // 3 - SpecCycle_TowerFriendly, // 4 - SpecCycle_TowerEnemy, // 5 - SpecCycle_Tower, // 6 - SpecCycle_Cinematic, // 7 - SpecCycle_Action, // 8 -}; - -enum SpecFlightMode { - SFM_Normal, // 0 - SFM_Heli, // 1 - SFM_HeliNoVert, // 2 -}; - -enum ESpectatorMode { - SPECMODE_Manual, // 0 - SPECMODE_Director, // 1 - SPECMODE_Assisted, // 2 - SPECMODE_Broadcast1, // 3 - SPECMODE_Broadcast2, // 4 - SPECMODE_Broadcast3, // 5 - SPECMODE_Broadcast4, // 6 -}; - -enum EZoomState { - ZOOM_None, // 0 - ZOOM_In, // 1 - ZOOM_Out, // 2 -}; - -struct SpectatorBookmark { - var transient Actor ViewTarget; - var SpectatorCameraMode ViewMode; - var TPOV POV; - structdefaultproperties {} -}; - -struct BroadcastChannel { - var TgSpectatorController.ESpectatorMode Channel; - var int PlayerID; - structdefaultproperties {} -}; - -var transient SpectatorCameraMode m_CameraMode; - -var transient TgSpectatorController.SpectatorCameraCycle m_CurrentCycle; - -var transient TgSpectatorController.SpectatorCameraCycle m_PendingCycle; - -var transient TgSpectatorController.SpecFlightMode m_eHelicopterFlight; - -var transient TgSpectatorController.ESpectatorMode m_CurrentSpectatorMode; - -var transient TgSpectatorController.EZoomState m_CurrentZoomState; - -var transient SpectatorBookmark m_Bookmarks[10]; - -var float m_fDefaultTweenTime; - -var transient bool m_bOutlineCharacters; - -var transient bool m_bIsMapSquashed; - -var (Performance) config bool m_bIgnoreCullDistanceVolumes; - -var () float m_fNameplateFadeMinDist; - -var () float m_fNameplateFadeMaxDist; - -var () float m_fNameplateFadeMaxAmount; - -var () float m_fNameplateScaleMinDist; - -var () float m_fNameplateScaleMaxDist; - -var () float m_fNameplateScaleMaxAmount; - -var () float m_fInterpolateCameraDistance; - -var BroadcastChannel m_BroadcastChannels[4]; - -var config Vector c_vMouseClickDeprojectionExtent; - -var () config float m_fOverviewCenterpointOffset; - -var () config float m_fMouseCursorVisibleTime; - -var transient float m_fRemainingCursorVisibleTime; - -native function Class GetHudClass(Class pNewHudType); // Export UTgSpectatorController::execGetHudClass(FFrame&, void* const) - -native function SetNetTarget(QWord qwId, int nTaskForce); // Export UTgSpectatorController::execSetNetTarget(FFrame&, void* const) - -simulated event PostBeginPlay() { } - -simulated function ForwardToSpectatingMatch() { } - -reliable client simulated function ClientForwardToSpectatingMatch() { } - -exec function SwitchCamera(string sCamera) { } - -function SpectatorSetViewTarget(Actor VT, optional ViewTargetTransitionParams TransitionParams) { } - -function UpdateViewTargetUI() { } - -function bool ShouldFlyFromInput() { } - -exec function SetNewSpectatorMode(TgSpectatorController.ESpectatorMode NewMode) { } - -exec function SetSpectatorCameraMode(TgSpectatorController.SpectatorCameraMode Mode, optional bool bCameraTween=false) { } - -native exec function ToggleSpectatorPlayerIcons(); // Export UTgSpectatorController::execToggleSpectatorPlayerIcons(FFrame&, void* const) - -reliable client simulated function ClientSetReadyState(bool bReadyToPlay) { } - -exec function SetPendingSpecCycle(TgSpectatorController.SpectatorCameraCycle Mode) { } - -exec function ClearPendingSpecCycle() { } - -function bool InterceptFlashInput(name ButtonName, Object.EInputEvent Event) { } - -exec function LockedViewCam(bool bEnabled) { } - -function SnapViewToHoverTarget(optional bool bUseAltView=false) { } - -simulated function bool PingMap(Vector WorldLocation, const out array worldActorRepInfo, Object Type) { } - -function SetPendingOnDirectorMode() { } - -function SnapViewToLocation(Vector WorldLocation, bool bUseFocalPoint) { } - -function CycleNext(optional bool bSkipIfPresent=false, optional bool bReverse=false) { } - -function array GetViewTargetListForMode(TgSpectatorController.SpectatorCameraCycle cycle) { } - -function array GetPlayerList() { } - -function array GetOutermostTowerList() { } - -function array GetActionList() { } - -function TgSpectatorController.SpectatorCameraMode GetDefaultModeFor(Actor Target) { } - -exec function SpecViewAction() { } - -exec function SpecViewPlayer(string PlayerName) { } - -function ViewTargetTransitionParams GetBlendParams(Actor Target) { } - -function ViewTargetTransitionParams GetDefaultBlendParams() { } - -function ViewTargetTransitionParams GetSnapBlendParams() { } - -exec function SetSpectatorBookmark(int nNum) { } - -exec function RecallSpectatorBookmark(int nNum) { } - -exec function SpecSetFlightMode(TgSpectatorController.SpecFlightMode sfm) { } - -exec function GotoCinematicCam(string sCamName) { } - -exec function CameraSpeed(float NewSpeed) { } - -exec function IncreaseCameraSpeeed() { } - -exec function DecreaseCameraSpeed() { } - -function string StripClanTag(string PlayerName) { } - -exec function ToggleOutlineCharacters() { } - -native function SetOutlineCharacters(bool bNewOutlineCharacters); // Export UTgSpectatorController::execSetOutlineCharacters(FFrame&, void* const) - -event float GetFOVAngle() { } - -exec function SquashMap() { } - -exec function SpecTest() { } - -exec function FlipOverviewSides() { } - -native function Pawn GetPawnFrom2DCoordinate(Vector2D Coordinate); // Export UTgSpectatorController::execGetPawnFrom2DCoordinate(FFrame&, void* const) - -native function GetActorListFrom2DCoordinate(Vector2D Coordinate, out array ActorList); // Export UTgSpectatorController::execGetActorListFrom2DCoordinate(FFrame&, void* const) - -exec function SpectateZoomIn(bool bEnabled) { } - -exec function SpectateZoomOut(bool bEnabled) { } - -function ChangeZoomState(TgSpectatorController.EZoomState NewZoomState) { } - -native function UpdateBroadcastChannels(); // Export UTgSpectatorController::execUpdateBroadcastChannels(FFrame&, void* const) - -exec function SpectatePlayerIndex(int TaskForceNum, int PlayerIndex) { } - -native function Pawn GetTgPawn(); // Export UTgSpectatorController::execGetTgPawn(FFrame&, void* const) - -native function SetViewTarget(Actor NewViewTarget, optional ViewTargetTransitionParams TransitionParams); // Export UTgSpectatorController::execSetViewTarget(FFrame&, void* const) - -state SpectatingMatch { - event BeginState(name PrevStateName) { } - function ProcessMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) { } - function PlayerMove(float DeltaTime) { } - function UpdateRotation(float DeltaTime) { } - function ReplicateMove(float DeltaTime, Vector newAccel, Actor.EDoubleClickDir DoubleClickMove, Rotator DeltaRot) { } - exec function OnLeftMousePressed() { } - exec function OnRightMousePressed() { } - stop; -} - -state RoundEnded { - event BeginState(name PreviousStateName) { } - stop; -} - -defaultproperties {} diff --git a/Development/Src/UDKBase/classes/CastleGame.uc b/Development/Src/UDKBase/classes/CastleGame.uc new file mode 100644 index 00000000..25d81b97 --- /dev/null +++ b/Development/Src/UDKBase/classes/CastleGame.uc @@ -0,0 +1,42 @@ +/** + * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. + */ +class CastleGame extends SimpleGame; + +/** Set to true to allow attract mode */ +var config bool bAllowAttractMode; + + +event OnEngineHasLoaded() +{ +} + +/** + * Don't allow dying in CastleGame! + */ +function bool PreventDeath(Pawn KilledPawn, Controller Killer, class DamageType, vector HitLocation) +{ + return true; +} + +static event class SetGameType(string MapName, string Options, string Portal) +{ + // We'll only force CastleGame game type for maps that we know were build for Epic Citadel (EpicCitadel). + // Note that ignore any possible prefix on the map file name so that PIE and Play On still work with this. + if( Right( MapName, 11 ) ~= "EpicCitadel" || + InStr( MapName, "EpicCitadel." ) != -1 ) + { + return super.SetGameType(MapName, Options, Portal); + } + + return class'UDKBase.SimpleGame'; +} + +defaultproperties +{ + PlayerControllerClass=class'UDKBase.CastlePC' + HUDType=class'UDKBase.MobileHUDExt' +} + + + diff --git a/Development/Src/UDKBase/classes/CastlePC.uc b/Development/Src/UDKBase/classes/CastlePC.uc new file mode 100644 index 00000000..1131f6cd --- /dev/null +++ b/Development/Src/UDKBase/classes/CastlePC.uc @@ -0,0 +1,989 @@ +/** + * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. + */ + +class CastlePC extends SimplePC; + +/** Set to true to suppress the splash screen */ +var config bool bSuppressSplash; + +/** will be true once the splash screen has been shown */ +var bool bSplashHasBeenShown; + +/** If True then we are in attract mode */ +var bool bIsInAttractMode; + +/** If True then we are in benchmark mode */ +var bool bIsInBenchmarkMode; + +/** If True, then a full flythrough loop has been completed in benchmark mode */ +var bool bBenchmarkLoopCompleted; + +/** Track the number of frames and the elapsed time while in benchmark mode to get average frame rate */ +var int BenchmarkNumFrames; +var float BenchmarkElapsedTime; + +/** Have we triggered the initial fading out of the Controls Help Menu */ +var bool bDoneInitialFade; + +var MobileMenuPause PauseMenu; // The Pause menu +var MobileMenuDebug DebugMenu; // The Debug menu + +var bool bPauseMenuOpen; +var bool bAutoSlide; + +var float SliderStart, SliderEnd; +var float SliderTravelTime; +var float SliderTravelDuration; + +var float AutoAttractTime; + +var SoundCue OpenMenuSound; +var SoundCue CloseMenuSound; + +var MobileMenuControls TutMenu; + + +/************************************* + Tap to Move + ************************************/ + +/** How far the player must have moved within the last 0.5 seconds before we consider them 'stuck' and + abort automatic movement */ +var float StuckThreshHold; + +/** Scalar that sets how much the camera should pitch up and down to match the tap-to-move target */ +var float TapToMoveAutoPitchAmount; + +/** Mesh to use for 'tap to move' visual cue in the world */ +var StaticMesh TapToMoveVisualMesh; + +/** Minimum distance from destination before visual cue will vanish */ +var float TapToMoveVisualMinDist; + +/** How fast the visual cue should rotate every frame */ +var float TapToMoveVisualRotateSpeed; + +/** Length of visual cue animation effect */ +var float TapToMoveVisualAnimDuration; + +/** Holds the destination we are moving towards */ +var vector TapToMoveDestination; + +/** We use this to see if we are stuck */ +var float LastDistToDestination; + +/** Time that tap to move visual effect started */ +var float TapToMoveVisualEffectStartTime; + +/** Time that tap to move visual effect ended */ +var float TapToMoveVisualEffectEndTime; + +var SoundCue TapToMoveSound; +var SoundCue InvalidTapToMoveSound; +var SoundCue TapToMoveStopSound; + +/** Spawned actor for 'tap to move' visual cue */ +var KActorSpawnable TapToMoveVisualActor; + +/************************************* + Tutorial + ************************************/ + +enum ETutorialStage +{ + ETS_None, + ETS_Tap, + ETS_Swipe, + ETS_Sticks, + ETS_Done, +}; + +var ETutorialStage TutorialStage; + +/** Cached reference to the Tutorial Look Zone */ +var MobileInputzone TutorialLookZone; + + +/** + * Setup the in world indicator for tap to move and some other subsystems + */ +simulated function PostBeginPlay() +{ + Super.PostBeginPlay(); + + // Kill existing 'tap to move' actor, if any + if( TapToMoveVisualActor != None ) + { + TapToMoveVisualActor.Destroy(); + } + + // Spawn our 'tap to move' visual cue actor + TapToMoveVisualActor = Spawn( class'KActorSpawnable',self,,,,,true); + TapToMoveVisualActor.SetCollision( false, false, true ); // Disable collision + TapToMoveVisualActor.SetHidden( true ); + TapToMoveVisualActor.SetDrawScale3D( vect( 1, 1, 5 ) ); + TapToMoveVisualActor.StaticMeshComponent.SetStaticMesh( TapToMoveVisualMesh ); + TapToMoveVisualActor.SetPhysics( PHYS_None ); +} + +/** + * Make sure we destory the visual tap actor + */ +event Destroyed() +{ + // Kill existing 'tap to move' actor, if any + if( TapToMoveVisualActor != None ) + { + TapToMoveVisualActor.Destroy(); + } + + super.Destroyed(); +} + + +/** + * An event that is called after the first tick of GEngine. We are going to hijack this for + * initialization purposes. + */ +event OnEngineInitialTick() +{ + // If we are in preview mode, then skip the flyby, splash and tutorial + if (WorldInfo.IsPlayInPreview() || WorldInfo.IsPlayInEditor()) + { + // Setup some of the default states + TutorialStage = ETS_Done; + ActivateControlGroup(); + ResetMenu(); + } + else + { + // trigger Epic Citadel map stuff (see Kismet in EpicCitadel map) + CauseEvent('IntroCam'); + ConsoleCommand("mobile playsong town_render"); + } +} + + +/** + * The main purpose of this function is to size and reset zones. There's a lot of specific code in + * here to reposition zones based on if it's an phone vs pad. + */ +function SetupZones() +{ + local MobileInputZone Zone; + local float Ratio; + + Super.SetupZones(); + + // If we have a game class, configure the zones + if (MPI != None && WorldInfo.GRI.GameClass != none) + { + // Find the button zone that exits attract mode. + Zone = MPI.FindZone("ExitAttractModeZone"); + if (Zone != none) + { + Zone.OnTapDelegate = ExitAttractTap; + } + + // Find the tap to move zone and setup the tutorial + Zone = MPI.FindZone("TapTutorialZone"); + if (Zone != none) + { + Zone.OnTapDelegate = TapToMoveTap; + } + else + { + `log("!!!WARNING!!! Tutorial will be broken due to Tap"); + } + + // Find the look zone and setup the tutorial + TutorialLookZone = MPI.FindZone("SwipeTutorialZone"); + if (TutorialLookZone == none) + { + `log("!!!WARNING!!! Tutorial will be broken due to Swipe"); + } + + // If we aren't supressing the splash screen, setup the pause menu + if (!bSuppressSplash) + { + PauseMenu = MobileMenuPause(MPI.OpenMenuScene(class'MobileMenuPause')); + SliderZone = MPI.FindZone("MenuSlider"); + if (SliderZone != none) + { + SliderZone.OnTapDelegate = MenuSliderTap; + SliderZone.OnProcessSlide = ProcessMenuSlide; + SliderZone.SizeY = PauseMenu.Height; + } + } + + + Ratio = ViewportSize.Y / ViewportSize.X; + + // Find the zone and hook up the delegate so we can perform tap to move + Zone = MPI.FindZone("TapToMoveZone"); + if (Zone != none) + { + Zone.OnTapDelegate = TapToMoveTap; + } + + if (FreeLookZone != none) + { + FreeLookZone.OnTapDelegate = TapToMoveTap; + if (Ratio == 0.75 || ViewportSize.X <= 480) + { + FreeLookZone.VertMultiplier *= 1.75; + FreeLookZone.HorizMultiplier *= 3.25; + FreeLookZone.Acceleration *= 0.5; + } + } + + // Setup the timer to check for inactivity / attract mode + //SetTimer(1.0,true,'CheckInactivity'); + + // Setup a timer that will write out controller stats every 60 seconds. + SetTimer(60.0,true,'SaveControllerStats'); + + // Activate the input group for the flyby (ie: no input) + if (MPI != none) + { + MPI.ActivateInputGroup("InitialFlybyGroup"); + } + } +} + +/** + * Saves out the controller stats for processing + */ +function SaveControllerStats() +{ + if ((StickLookZone != none) && (StickMoveZone != none) && (FreeLookZone != none)) + { + ConsoleCommand("mobile recordcontrolstats" @ StickMoveZone.TotalActiveTime @ StickLookZone.TotalActiveTime @ FreeLookZone.TotalActiveTime @ TotalTimeInTapToMove @ NoTapToMoves); + + StickMoveZone.TotalActiveTime = 0; + StickLookZone.TotalActiveTime = 0; + FreeLookZone.TotalActiveTime = 0; + } + + TotalTimeInTapToMove = 0; + NoTapToMoves = 0; +} + +/** + * Every second, we look at various metrics to see if the player has been active. If they haven't been, then + * we want switch to attract mode + */ +function CheckInactivity() +{ + // Quick out if we don't allow attract mode + if (CastleGame(WorldInfo.Game) == none || CastleGame(WorldInfo.Game).bAllowAttractMode == false) + { + return; + } + + //if the pause menu is open, or a submenu is open + if ( LocalPlayer(Player).ViewportClient.bDisableWorldRendering || (PauseMenu != none && bPauseMenuOpen) || bIsInAttractMode || bCinematicMode || (MPI.MobileMenuStack.Length>1 && TutMenu == none)) + { + MPI.MobileInactiveTime = 0; + } + + // Make the call... + if (MPI.MobileInactiveTime > AutoAttractTime && !bIsInAttractMode && !bCinematicMode) + { + EnterAttractMode(); + } +} + +/** + * Trace, but ignore volumes and triggers unless they are blockers (i.e. BlockingVolume) + * + * @param TraceOwner is the player's pawn + * @param HitLocation holds the location were the trace ends + * @param HitNormal holds the orientation of the surface normal where it hit + * @param End is where we would like the trace to end + * @param Start is where the trace is starting from + */ +simulated function Actor TraceForTapToMove(Pawn TraceOwner, out vector HitLocation, out vector HitNormal, vector End, vector Start) +{ + local Actor HitActor; + local vector HitLoc, HitNorm; + local TraceHitInfo HitInfo; + + // Iterate over each actor along trace... + foreach TraceOwner.TraceActors(class'Actor', HitActor, HitLoc, HitNorm, End, Start, , HitInfo,TRACEFLAG_Bullet) + { + // if it's not a trigger or a volume, use it! + if ( (HitActor.bBlockActors || HitActor.bWorldGeometry) && (Volume(HitActor) == None && Trigger(HitActor)==None)) + { + HitLocation = HitLoc; + HitNormal =HitNorm; + return HitActor; + } + } + + // Found nothing non-volume or -trigger like :( + return None; +} + + +/** + * This is our event handler for taps. + * + * @param Zone The Zone we are managing + * @param EventType The type of event that occurred + * @param TouchLocation Where was the touch + */ +function bool TapToMoveTap(MobileInputZone Zone, ETouchType EventType, Vector2D TouchLocation) +{ + local Vector2D RelLocation; + local Vector Origin, Direction, Destination; + local Vector HitLocation, HitNormal; + local Actor HitActor; + local bool bWantReverse; + local bool bValidDestination; + + // Don't perform these traces if if are in attract mode, playing a cinematic or if the movement stick is + // currently active. + if( !bIsInAttractMode && !bCinematicMode && StickMoveZone.State == ZoneState_Inactive ) + { + // Figure out the location relative to the current viewport + RelLocation.X = TouchLocation.X / ViewportSize.X; + RelLocation.Y = TouchLocation.Y / ViewportSize.Y; + + // Check to see if the user touched near the very bottom of the viewport + bWantReverse = false; //( RelLocation.Y >= 0.85 ); + + // If the user clicked near the bottom of the viewport and is already moving toward a destination, + // then cancel the movement in progress. Basically, clicking near the bottom of the viewport is + // used to stop moving. + if( bWantReverse && IsInState('PlayerTapToMove') ) + { + // Draw an effect on the HUD + MobileHudExt( MyHud ).StartTapToMoveEffect( TouchLocation.X, TouchLocation.Y ); + + // Play a 'move stopped' sound effect + PlaySound( TapToMoveStopSound ); + + // Cancel touch to move + GotoState('PlayerWalking'); + } + else + { + NoTapToMoves++; + + // If we're reversing then flip the touch point along the horizontal axis so we'll walk backwards + // in the expected direction + if( bWantReverse ) + { + RelLocation.x = 1.0 - RelLocation.x; + } + + // Deproject and get the world location + LocalPlayer(Player).Deproject(RelLocation, Origin, Direction); + + // If we're reversing then choose a location behind the player a little bit + if( bWantReverse ) + { + Direction.Z = 0.0f; + Destination = Origin - Direction * 512; + } + else + { + // Moving forward, so cast a way straight out far into the scene + Destination = Origin + (Direction * 10240); + } + + // Now trace in to the world and get where to go. + HitActor = TraceForTapToMove(Pawn, HitLocation, HitNormal, Destination, Origin); + if (HitActor != none) + { + Destination = HitLocation + (HitNormal * Pawn.GetCollisionHeight() * 2); + } + if (!PointReachable(Destination)) + { + // Still not reachable. Then find the ground and see if we can move there. + Origin = Destination; + Destination.Z = -65535; + + HitActor = TraceForTapToMove(Pawn, HitLocation, HitNormal, Destination, Origin); + if (HitActor != none) + { + // We hit the ground, step back the collision Height; + Destination = HitLocation; + Destination.Z += Pawn.GetCollisionHeight(); + } + } + + // Unless we're reversing, if the desired location is somehow behind the player then fail the movement + if( bWantReverse ) + { + bValidDestination = true; + } + else + { + bValidDestination = ( ( Normal( Destination - Pawn.Location ) dot Vector( Pawn.Rotation ) ) > 0.25 ); + } + + // If the desired location is very close to the player then fail the movement + if( ( VSize2D( Destination - Pawn.Location ) < 128.0 ) ) + { + bValidDestination = false; + } + + + if( bValidDestination ) + { + // Play a 'move succeeded' sound effect + PlaySound( TapToMoveSound ); + + // Draw an effect on the HUD + MobileHudExt( MyHud ).StartTapToMoveEffect( TouchLocation.X, TouchLocation.Y ); + + // Start moving to the new destination! + DoTapToMove( Destination, !bWantReverse ); // Don't auto-look at destination when reversing + } + else + { + // Play a 'move failed' sound effect + PlaySound( InvalidTapToMoveSound ); + + // Cancel an existing tap-to-move action, if there is one in progress + if( IsInState('PlayerTapToMove') ) + { + GotoState('PlayerWalking'); + } + } + } + } + + return true; +} + +/** + * The player has clicked on a spot. Start the move + * + * @param NewDestination Where do we want to move to + * @param bShouldLookAtDestination True if we should also automatically look toward the destination + */ +function DoTapToMove( vector NewDestination, bool bShouldLookAtDestination ) +{ + // Update position of tap to move visual cue + TapToMoveVisualActor.SetLocation( NewDestination + vect( 0, 0, 6 ) ); // Raise up a bit + TapToMoveVisualActor.SetHidden( false ); + TapToMoveVisualEffectStartTime = WorldInfo.RealTimeSeconds; + + TapToMoveDestination = NewDestination; + LastDistToDestination = VSize(Pawn.Location - TapToMoveDestination); + + if( bShouldLookAtDestination ) + { + // Start automatically orientating toward the target point + PlayerLookAtDestination(); + } + + GotoState('PlayerTapToMove'); +} + +/** + * Initialize the look at system to point to the destination. + */ +function PlayerLookAtDestination() +{ + if( !bLookAtDestination ) + { + // Start rotating! + bLookAtDestination = true; + } + + // Reset the time of last view change so that we're guaranteed to start looking toward the destination, + // even if the user dragged the view right before touching to move + TimeOfLastUserViewChange = 0; +} + +/** + * Tap to Move requires it's own special state for the player controller + */ +state PlayerTapToMove +{ + /** + * Setup the auto-rotate towards the destination + */ + event BeginState(Name PreviousStateName) + { + Super.BeginState(PreviousStateName); + LastEnteredTapToMove = WorldInfo.RealTimeSeconds; + + // If we are in the tutorial, skip to the next step + if (TutorialStage == ETS_Tap) + { + TutMenu.FadeOut(); + TutMenu = MobileMenuControls(MPI.OpenMenuScene(class'UDKBase.MobileMenuControls')); + TutMenu.Setup(false); + MPI.ActivateInputGroup("SwipeTutorialGroup"); + TutorialStage = ETS_Swipe; + } + + } + + /** + * Close everything down. + */ + event EndState(Name NextStateName) + { + // Track Stats + TotalTimeInTapToMove += WorldInfo.RealTimeSeconds - LastEnteredTapToMove; + + Super.EndState(NextStateName); + + // Turn off the check to see if we are stuck + Cleartimer('CheckIfStuck'); + + // Stop automatically orientating toward the target point + bLookAtDestination = false; + + // Start hiding the visual cue if we haven't already + if( TapToMoveVisualEffectEndTime < TapToMoveVisualEffectStartTime ) + { + TapToMoveVisualEffectEndTime = WorldInfo.RealTimeSeconds; + } + } + + /** + * Check to see if the player is stuck. This is called every 1/2 second. It just looks to see if you have most past a threshold since + * the last check and if not, considers you stuck. + * + * We also use this event to determine if enough time has passed that we should start auto-rotating again + */ + event CheckIfStuck() + { + local Float DistToDestination; + + DistToDestination = VSize(Pawn.Location - TapToMoveDestination); + if (LastDistToDestination - DistToDestination < StuckThreshHold) + { + GotoState('PlayerWalking'); + } + else + { + LastDistToDestination = DistToDestination; + } + } + + /** + * Each frame, look to see if the player has decided to use the virtual stick to move. If they have, + * we want to abort tap to move. + */ + function PlayerTick(float DeltaTime) + { + + if (IsStickMoveActive()) + { + GotoState('PlayerWalking'); + } + Global.PlayerTick(DeltaTime); + } + +Begin: + // Check to see if we're not making progress every so often + SetTimer( 0.5, true, 'CheckIfStuck' ); + + // while we have a valid pawn and move target, and + // we haven't reached the target yet + while (Pawn != None && !Pawn.ReachedPoint(TapToMoveDestination,none)) + { + MoveToDirectNonPathPos(TapToMoveDestination,,1,true); + } + + GotoState('PlayerWalking'); +} + + +/** + * Called from PlayerMove, it's here that we adjust the viewport + */ +function ProcessViewRotation( float DeltaTime, out Rotator out_ViewRotation, Rotator DeltaRot ) +{ + local float AnimProgress; + local vector NewDrawScale; + + // If we are looking at a desintation, preset it for the super to manage + if( bLookAtDestination ) + { + LookAtDestination = TapToMoveDestination - Pawn.Location; + LookAtDestAutoPitchAmount = TapToMoveAutoPitchAmount; + } + + Super.ProcessViewRotation( DeltaTime, out_ViewRotation, DeltaRot); + + // Animate the tap-to-move visual cue + if( TapToMoveVisualEffectEndTime < TapToMoveVisualEffectStartTime ) + { + // We're fading in! + AnimProgress = 1.0 - FMin( ( WorldInfo.RealTimeSeconds - TapToMoveVisualEffectStartTime ) / TapToMoveVisualAnimDuration, 1.0 ); + AnimProgress = FInterpEaseInOut( 0.0, 1.0, AnimProgress, 1.5 ); + + TapToMoveVisualActor.SetRotation( TapToMoveVisualActor.Rotation + MakeRotator( 0, DeltaTime * ( TapToMoveVisualRotateSpeed + 8.0 * AnimProgress * TapToMoveVisualRotateSpeed ), 0 ) ); + } + else + { + // We're fading out! + AnimProgress = FMin( ( WorldInfo.RealTimeSeconds - TapToMoveVisualEffectEndTime ) / TapToMoveVisualAnimDuration, 1.0 ); + AnimProgress = FInterpEaseInOut( 0.0, 1.0, AnimProgress, 1.5 ); + + TapToMoveVisualActor.SetRotation( TapToMoveVisualActor.Rotation + MakeRotator( 0, DeltaTime * ( 1.0 - AnimProgress ) * TapToMoveVisualRotateSpeed, 0 ) ); + + if( AnimProgress >= 1.0 ) + { + // Hide the actor now that we're finished transitioning + TapToMoveVisualActor.SetHidden( true ); + } + } + NewDrawScale.X = 1.0 - AnimProgress * 1.0; // Squash to zero from normal size + NewDrawScale.Y = 1.0 + AnimProgress * 0.5; // Grow to slightly bigger size + NewDrawScale.Z = 1.25 - AnimProgress * 1.25; // Squash to zero from bigger size + TapToMoveVisualActor.SetDrawScale3D( NewDrawScale ); +} + +/** + * If we're very close to the target, then go ahead and hide the visual cue + */ +simulated function CheckDistanceToDestination(float DistToDestination) +{ + + if( DistToDestination < TapToMoveVisualMinDist ) + { + if( TapToMoveVisualEffectEndTime < TapToMoveVisualEffectStartTime ) + { + TapToMoveVisualEffectEndTime = WorldInfo.RealTimeSeconds; + } + } +} + + +/** + * notification when a matinee director track starts or stops controlling the ViewTarget of this PlayerController + * + * @param bNowControlling will be true if we are back in control + */ +event NotifyDirectorControl(bool bNowControlling, SeqAct_Interp CurrentMatinee) +{ + super.NotifyDirectorControl(bNowControlling, CurrentMatinee); + if( bNowControlling ) + { + // Make sure our tap-to-move actor is hidden + TapToMoveVisualActor.SetHidden( true ); + } +} + +/** + * Enter attrack mode. We need to make sure we kill any active menus/etc. + */ +exec function EnterAttractMode( bool BeginBenchmarking = false ) +{ + // Make sure we're not currently auto-moving to a destination + if( IsInState('PlayerTapToMove') ) + { + GotoState('PlayerWalking'); + } + + // Kill the tutorial menu + if (TutMenu != none) + { + TutMenu.FadeOut(); + TutMenu = none; + MPI.ActivateInputGroup("UberGroup"); + MobileHudExt(myHUD).FlashSticks(); + TutorialStage = ETS_Done; + } + + // Hide the on screen help if it's there + if (PauseMenu != none) + { + PauseMenu.ReleaseHelp(); + } + + // Go in to attract mode + CauseEvent('PlayMatinee'); + bIsInAttractMode = true; + + bIsInBenchmarkMode = BeginBenchmarking; + bBenchmarkLoopCompleted = false; + BenchmarkNumFrames = 0; + BenchmarkElapsedTime = 0.0; + + ResetMenu(); + MPI.ActivateInputGroup("AttractGroup"); +} + +exec function OnFlyThroughLoopCompleted() +{ + // Set the benchmark loop completed flag so that we can calculate and display the results of the benchmark fly through + bBenchmarkLoopCompleted = true; +} + +/** + * Leave attract mode + */ +exec function ExitAttractMode() +{ + if (bIsInBenchmarkMode) + { + PauseMenu.InputOwner.Outer.ConsoleCommand("mobile benchmark end"); + } + bIsInAttractMode = false; + bIsInBenchmarkMode = false; + bBenchmarkLoopCompleted = false; + MPI.MobileInactiveTime = 0; + CauseEvent('StopMatinee'); + ActivateControlGroup(); + ResetMenu(); +} + +/** + * Delegate that gets called when the exit attact mode button is tapped + */ +function bool ExitAttractTap(MobileInputZone Zone, ETouchType EventType, Vector2D TouchLocation) +{ + ExitAttractMode(); + PauseMenu.SetDefaultUI(); // set the correct UI + return true; +} + +/** + * Automatically slide to a new location + */ +function AutoSlide(float Destination) +{ + SliderStart = SliderZone.CurrentLocation.Y; + SliderEnd = Destination; + SliderTravelTime = 0; + bAutoSlide = true; +} + +/** + * Reset the pause menu + */ +function ResetMenu() +{ + if (bPauseMenuOpen) + { + PauseMenu.OnResetMenu(); + AutoSlide(SliderZone.Y); + bPauseMenuOpen = false; + PlaySound( CloseMenuSound ); + } +} + +/** + * Force the Pause Menu to open + */ +function OpenMenu() +{ + if (!bPauseMenuOpen) + { + bPauseMenuOpen = true; + AutoSlide(PauseMenu.ShownSize); + PlaySound( OpenMenuSound ); + } +} + +/** + * Depending on the state of the pause menu, a tap on it's nub will either auto-open or auto-close it. + * This delegate manages the tap. + */ +function bool MenuSliderTap(MobileInputZone Zone, ETouchType EventType, Vector2D TouchLocation) +{ + if (bPauseMenuOpen) + { + ResetMenu(); + } + else + { + OpenMenu(); + } + + return true; +} + +/** + * When you touch and drag on the nub, this code determines what to do. + */ +function bool ProcessMenuSlide(MobileInputZone Zone, ETouchType EventType, int SlideValue, Vector2D ViewportSizes) +{ + // Align the menu to the touch. + PauseMenu.Top = Zone.CurrentLocation.Y - PauseMenu.Height; + // somehow the zone size is being reset (on device, but not PC), so this just fixes it. mildly hacky, but no real penalty. + Zone.SizeY = PauseMenu.Height; + + // If we are releasing the menu, see if we need to reset, or if we need to open + if (EventType == Touch_Ended && !bPauseMenuOpen) + { + if (Zone.CurrentLocation.Y >= PauseMenu.ShownSize) + { + OpenMenu(); + } + else + { + AutoSlide(SliderZone.Y); + } + } + + return true; +} + +/** + * Handle any animations and time criticl code + */ +function PlayerTick(float DeltaTime) +{ + local int SettingsLocationX; + + Super.PlayerTick(DeltaTime); + + if (TutorialStage == ETS_Swipe) + { + if (TutorialLookZone.State != ZoneState_Inactive) + { + TutMenu.FadeOut(); + TutMenu = none; + MPI.ActivateInputGroup("UberGroup"); + MobileHudExt(myHUD).FlashSticks(); + TutorialStage = ETS_Done; + } + } + + // Trigger the fading of the Controls Help screen that we bring up on map load + if ( !bDoneInitialFade ) + { + // @todo: Disabled this for intermediate demo; Consider re-enabling later. + // PauseMenu.FadeOutControlsMenu(); + bDoneInitialFade = TRUE; + } + + // Handle the menu sliding back in to place + if (bAutoSlide) + { + SliderZone.CurrentLocation.Y = FInterpEaseInOut(SliderStart,SliderEnd, SliderTravelTime/SliderTravelDuration,3.0); + SliderTravelTime += DeltaTime; + if (SliderTravelTime >= SliderTravelDuration) + { + SliderZone.CurrentLocation.Y = SliderEnd; + bAutoSlide = false; + + if (!bPauseMenuOpen) + { + if (bIsInAttractMode) + { + PauseMenu.SetAttractModeUI(bIsInBenchmarkMode); + } + else + { + PauseMenu.SetDefaultUI(); + } + } + } + PauseMenu.Top = SliderZone.CurrentLocation.Y - PauseMenu.Height; + } + + // Only pull out the settings menu if it's available (only Android) + if (PauseMenu.MenuObjects.length >= 5) + { + SettingsLocationX = FInterpEaseInOut(MyHUD.SizeX, PauseMenu.Width - PauseMenu.MenuObjects[4].Width + 2, FClamp(SliderZone.CurrentLocation.Y / (PauseMenu.ShownSize - SliderZone.Y), 0.0, 1.0), 3.0); + PauseMenu.MenuObjects[4].Left = SettingsLocationX; + } + + // If we are currently benchmarking, track the number of frames and elapsed time. + // Note that this assumes a TimeDilation of 1.0 and doesn't properly handle the cases where DeltaTime is clamped because it was super long or super short, but in EpicCitadel benchmark mode these shouldn't be problems in practice. + if( bIsInBenchmarkMode && !bBenchmarkLoopCompleted ) + { + BenchmarkNumFrames += 1; + BenchmarkElapsedTime += DeltaTime; + } +} + +/** + * Show the splash screen + */ +exec function ShowSplash() +{ + // Activate the tutorial input group then show the splash + MPI.ActivateInputGroup("TapTutorialGroup"); + if (!bSplashHasBeenShown && !bSuppressSplash && MPI != none) + { + bSplashHasBeenShown = true; + MPI.OpenMenuScene(class'UDKBase.MobileMenuSplash'); + } +} + +/** + * Display the control help on the screen + */ +exec function FlashHelp(float Duration) +{ + if (!bPauseMenuOpen) + { + PauseMenu.FlashHelp(Duration); + } +} + +/** + * Start the tutorials + */ +function StartTutorials() +{ + TutMenu = MobileMenuControls(MPI.OpenMenuScene(class'UDKBase.MobileMenuControls')); + TutMenu.Setup(true); + TutorialStage = ETS_Tap; +} + +exec function SetFootstepsToStone() +{ + FootstepSounds[0]=SoundCue'CastleAudio.Player.Footstep_Walk_01_Cue'; + FootstepSounds[1]=SoundCue'CastleAudio.Player.Footstep_Walk_02_Cue'; + FootstepSounds[2]=SoundCue'CastleAudio.Player.Footstep_Walk_03_Cue'; + FootstepSounds[3]=SoundCue'CastleAudio.Player.Footstep_Walk_04_Cue'; + FootstepSounds[4]=SoundCue'CastleAudio.Player.Footstep_Walk_05_Cue'; + FootstepSounds[5]=SoundCue'CastleAudio.Player.Footstep_Walk_06_Cue'; +} + +exec function SetFootstepsToSnow() +{ + FootstepSounds[0]=SoundCue'CastleAudio.Player.Footstep_Snow01_Cue'; + FootstepSounds[1]=SoundCue'CastleAudio.Player.Footstep_Snow02_Cue'; + FootstepSounds[2]=SoundCue'CastleAudio.Player.Footstep_Snow03_Cue'; + FootstepSounds[3]=SoundCue'CastleAudio.Player.Footstep_Snow04_Cue'; + FootstepSounds[4]=SoundCue'CastleAudio.Player.Footstep_Snow05_Cue'; + FootstepSounds[5]=SoundCue'CastleAudio.Player.Footstep_Snow06_Cue'; +} + + + + +defaultproperties +{ + StuckThreshHold=25 + TapToMoveAutoPitchAmount=0.25 + TapToMoveVisualMesh=StaticMesh'CastleEffects.TouchToMoveArrow' + TapToMoveVisualMinDist=230 + TapToMoveVisualRotateSpeed=100000 + TapToMoveVisualAnimDuration=0.3 + + AutoAttractTime=45 + TapToMoveSound=SoundCue'CastleAudio.UI.UI_TouchToMove_Cue' + InvalidTapToMoveSound=SoundCue'CastleAudio.UI.UI_InvalidTouchToMove_Cue' + TapToMoveStopSound=SoundCue'CastleAudio.UI.UI_StopTouchToMove_Cue' + OpenMenuSound=SoundCue'CastleAudio.UI.UI_MainMenu_Cue' + CloseMenuSound=SoundCue'CastleAudio.UI.UI_OK_Cue' + bSplashHasBeenShown=false + + SliderTravelDuration=0.3 + TutorialStage=ETS_None + + FootstepSounds(0)=SoundCue'CastleAudio.Player.Footstep_Walk_01_Cue' + FootstepSounds(1)=SoundCue'CastleAudio.Player.Footstep_Walk_02_Cue' + FootstepSounds(2)=SoundCue'CastleAudio.Player.Footstep_Walk_03_Cue' + FootstepSounds(3)=SoundCue'CastleAudio.Player.Footstep_Walk_04_Cue' + FootstepSounds(4)=SoundCue'CastleAudio.Player.Footstep_Walk_05_Cue' + FootstepSounds(5)=SoundCue'CastleAudio.Player.Footstep_Walk_06_Cue' +} diff --git a/Development/Src/UDKBase/classes/CloudGame.uc b/Development/Src/UDKBase/classes/CloudGame.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/CloudHUD.uc b/Development/Src/UDKBase/classes/CloudHUD.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/CloudMenuMicroTrans.uc b/Development/Src/UDKBase/classes/CloudMenuMicroTrans.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/CloudPC.uc b/Development/Src/UDKBase/classes/CloudPC.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/CloudSaveData.uc b/Development/Src/UDKBase/classes/CloudSaveData.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/MobileGameCrowdAgent.uc b/Development/Src/UDKBase/classes/MobileGameCrowdAgent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/MobileHUDExt.uc b/Development/Src/UDKBase/classes/MobileHUDExt.uc new file mode 100644 index 00000000..a6f521f8 --- /dev/null +++ b/Development/Src/UDKBase/classes/MobileHUDExt.uc @@ -0,0 +1,381 @@ +/** + * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. + */ + +class MobileHUDExt extends MobileHUD native; + +/** Texture to use for 'tap-to-move' screen space effect */ +var Texture2D TapToMoveTexture; + +/** Last time that we were asked to draw the tap to move effect */ +var float LastTapToMoveEffectTime; +var Vector2D TapToMoveEffectPos; + +var bool bFlashJoysticks; +var float FlashTime; + +/** The font to use for displaying benchmark results */ +var font BenchmarkFont; + +/** Background texture for displaying the benchmark results */ +var Texture2D BenchmarkBackground; +var TextureUVs BenchmarkBackgroundUVs; + +var float BenchmarkResolutionScale; +var int BenchmarkFeatureLevel; + +native function UpdateBenchmarkInformation(); + +/** Starts drawing a transparent circle at the specified location for a brief moment (with animation) */ +function StartTapToMoveEffect( float X, float Y ) +{ + // Store time that we were asked to draw the effect. This effectively "turns on" the effect. + LastTapToMoveEffectTime = WorldInfo.RealTimeSeconds; + TapToMoveEffectPos.X = X; + TapToMoveEffectPos.Y = Y; +} + + +/** Draws the tap to move effect if we need to */ +function ConditionallyDrawTapToMoveEffect() +{ + local float EffectDuration; + local float EffectSize; + local float EffectOpacity; + local float FadeInPercent; + local float FadeOutPercent; + + local float EffectProgress; + local float AnimatedSize; + local float AnimatedOpacity; + + // How long the effect should last + EffectDuration = 0.25; + FadeInPercent = 0.1; + FadeOutPercent = 0.6; + + // How big the effect should be + EffectSize = 64.0; + + // Maximum opacity of the effect + EffectOpacity = 0.3; + + // Is it time to draw the effect? + if( WorldInfo.RealTimeSeconds - LastTapToMoveEffectTime < EffectDuration ) + { + EffectProgress = FClamp( ( WorldInfo.RealTimeSeconds - LastTapToMoveEffectTime ) / EffectDuration, 0.0, 1.0 ); + EffectProgress = FInterpEaseIn( 0.0, 1.0, EffectProgress, 1.5 ); + + AnimatedSize = EffectSize * 0.15 + EffectSize * EffectProgress * 0.85; + + AnimatedOpacity = EffectOpacity; + + // Fade in over the first bit of the effect + if( EffectProgress < FadeInPercent ) + { + AnimatedOpacity *= ( EffectProgress / FadeInPercent ); + } + + // Fade out over the tail end of the effect + if( EffectProgress > ( 1.0 - FadeOutPercent ) ) + { + AnimatedOpacity *= 1.0 - ( EffectProgress - ( 1.0 - FadeOutPercent ) ) / FadeOutPercent; + } + + + Canvas.SetPos( TapToMoveEffectPos.X - AnimatedSize * 0.5, TapToMoveEffectPos.Y - AnimatedSize * 0.5 ); + Canvas.SetDrawColor( 255, 255, 255, AnimatedOpacity * 255.0 ); + Canvas.DrawTile( TapToMoveTexture, AnimatedSize, AnimatedSize, 0.0, 0.0, TapToMoveTexture.GetSurfaceWidth(), TapToMoveTexture.GetSurfaceHeight() ); + } +} + +function bool ShowMobileHud() +{ + // Show the mobile HUD if we are allowed to and if we don't have the HUD disabled via cinematic mode. + return bShowMobileHud && bShowHud; +} + +function PostRender() +{ + local CastlePC PC; + + Instigator = PlayerOwner.Pawn; + + super.PostRender(); + + PC = CastlePC(PlayerOwner); + + if (PC.bIsInAttractMode) + { + PostRenderAttractMode(); + } + + // Display benchmark information + if (PC.bIsInBenchmarkMode) + { + // If the benchmark loop has completed, then display the results of the benchmark loop + if( PC.bBenchmarkLoopCompleted ) + { + PostRenderBenchmarkModeCompleted(); + } + else + { + PostRenderBenchmarkModeRunning(); + } + } + + if ( bShowHud && !PC.bIsInAttractMode) + return; + + // Draw the tap to move HUD animation, if we need to + ConditionallyDrawTapToMoveEffect(); + +} + +function PostRenderAttractMode() +{ + local float Scale,w,h; + + Scale = Canvas.ClipX / 960; + w = 124 * Scale; + h = w * 1.193548387096774; + Canvas.SetPos(Canvas.ClipX - 192*Scale, Canvas.ClipY - 171*Scale); + Canvas.DrawColor = WhiteColor; + Canvas.DrawTile(Texture2D'CastleUI.menus.T_CastleMenu2',w,h,0,1518,248,296); + +} + +function PostRenderBenchmarkModeCompleted() +{ + local CastlePC PC; + local int fps, ScreenCenterX, BGTop, BGWidth, BGHeight, ScaledWindowWidth, ScaledWindowHeight; + local float StringWidth, StringHeight, TextScale; + local string PerformanceString; + + UpdateBenchmarkInformation(); + + Canvas.Font = BenchmarkFont; + + PC = CastlePC(PlayerOwner); + TextScale = 1.5f; + + ScreenCenterX = PC.ViewportSize.X / 2; + BGTop = PC.ViewportSize.Y * 0.28; + BGWidth = PC.ViewportSize.Y * 1.0; + BGHeight = PC.ViewportSize.Y * 0.55; + + // Draw background + Canvas.SetPos(ScreenCenterX - BGWidth/2, BGTop); + Canvas.DrawTile(BenchmarkBackground, BGWidth, BGHeight, BenchmarkBackgroundUVs.U, BenchmarkBackgroundUVs.V, BenchmarkBackgroundUVs.UL, BenchmarkBackgroundUVs.VL); + + // Draw benchmark results header + Canvas.DrawColor = WhiteColor; + Canvas.StrLen( "Benchmark Results", StringWidth, StringHeight ); + Canvas.SetPos( ScreenCenterX - StringWidth/2 * TextScale, BGTop + BGHeight * 0.1 ); + Canvas.DrawText( "Benchmark Results", true, TextScale, TextScale ); + + // Draw result fields here + fps = 10 * PC.BenchmarkNumFrames / PC.BenchmarkElapsedTime; + Canvas.StrLen( "Average FPS: " $ (fps/10) $ "." $ (fps%10), StringWidth, StringHeight ); + Canvas.SetPos( ScreenCenterX - StringWidth/2 * TextScale, BGTop + (BGHeight * 0.25) ); + Canvas.DrawText( "Average FPS: " $ (fps/10) $ "." $ (fps%10), false, TextScale, TextScale ); + + // Draw benchmark information + ScaledWindowWidth = SizeX * BenchmarkResolutionScale; + ScaledWindowHeight = SizeY * BenchmarkResolutionScale; + Canvas.StrLen( "Resolution: " $ ScaledWindowWidth $ "x" $ ScaledWindowHeight, StringWidth, StringHeight ); + Canvas.SetPos( ScreenCenterX - StringWidth/2 * TextScale, BGTop + (BGHeight * 0.4) ); + Canvas.DrawText( "Resolution: " $ ScaledWindowWidth $ "x" $ ScaledWindowHeight, false, TextScale, TextScale ); + + Canvas.StrLen( "Performance Level: ", StringWidth, StringHeight ); + Canvas.SetPos( ScreenCenterX - StringWidth/2 * TextScale, BGTop + (BGHeight * 0.55) ); + Canvas.DrawText( "Performance Level: ", false, TextScale, TextScale ); + + switch (BenchmarkFeatureLevel) + { + case 1: + PerformanceString = "High Quality"; + break; + case 0: + default: + PerformanceString = "High Performance"; + break; + } + + Canvas.StrLen( PerformanceString, StringWidth, StringHeight ); + Canvas.SetPos( ScreenCenterX - StringWidth/2 * TextScale, BGTop + (BGHeight * 0.7) ); + Canvas.DrawText( PerformanceString, false, TextScale, TextScale ); +} + +function PostRenderBenchmarkModeRunning() +{ + local CastlePC PC; + local float Scale; + local int fps, ScreenCenterX; + local float StringWidth, StringHeight, MaxFPSWidth, FpsY; + + Canvas.Font = BenchmarkFont; + + PC = CastlePC(PlayerOwner); + Scale = PC.PauseMenu.Scale; + + ScreenCenterX = PC.ViewportSize.X / 2; + + // Draw the frame rate of the current frame + fps = 1 / WorldInfo.DeltaSeconds; + + + Canvas.StrLen( "Benchmarking...", StringWidth, StringHeight ); + + Canvas.SetPos( ScreenCenterX - (StringWidth / 2), PC.PauseMenu.Height ); + Canvas.DrawColor = WhiteColor; + Canvas.DrawText( "Benchmarking...", false ); + + // Draw fps information + Canvas.StrLen( "100", MaxFPSWidth, StringHeight ); + Canvas.StrLen( fps, StringWidth, StringHeight ); + + FpsY = PC.ViewportSize.Y - StringHeight * Scale - 20 * Scale; + Canvas.SetPos( 30 * Scale - StringWidth + MaxFPSWidth, FpsY ); + Canvas.DrawText( fps, false ); + + Canvas.SetPos( 45 * Scale + MaxFPSWidth, FpsY ); + Canvas.DrawText( "FPS", false ); +} + +function DrawMobileZone_Slider(MobileInputZone Zone) +{ + local TextureUVs UVs; + local Texture2D Tex; + local float Ofs,Scale; + + // First, look up the Texture + + Tex = SliderImages[int(Zone.SlideType)]; + UVs = SliderUVs[int(Zone.SlideType)]; + + // Now, figure out where we have to draw. + + + Scale = CastlePC(PlayerOwner).PauseMenu.Scale; + Ofs = 16 *Scale; + + Canvas.SetPos(Zone.CurrentLocation.X, Zone.CurrentLocation.Y-Ofs); + Canvas.DrawTile(Tex,Zone.ActiveSizeX, Zone.ActiveSizeY, UVs.U, UVs.V, UVs.UL, UVs.VL); +} + +function DrawMobileZone_Joystick(MobileInputZone Zone) +{ + local int X, Y, Width, Height; + local Color LineColor; + local float ClampedX, ClampedY, Scale; + local Color TempColor; + local float FlashScale; + + + if (bFlashJoysticks) + { + FlashScale = FInterpEaseOut(3.0,1.0,FlashTime/0.75,2); + FlashTime += RenderDelta; + if (FlashTime > 0.75) + { + bFlashJoysticks = false; + } + } + else + { + FlashScale = 1.0; + } + + if (JoystickBackground != none) + { + Width = Zone.ActiveSizeX * FlashScale; + Height = Zone.ActiveSizeY * FlashScale; + + X = Zone.CurrentCenter.X - (Width /2); + Y = Zone.CurrentCenter.Y - (Height /2); + + Canvas.SetPos(X,Y); + Canvas.DrawTile(JoystickBackground, Width, Height, JoystickBackgroundUVs.U, JoystickBackgroundUVs.V, JoystickBackgroundUVs.UL, JoystickBackgroundUVs.VL); + } + + // Draw the Hat + + if (JoystickHat != none) + { + // Compute X and Y clamped to the size of the zone for the joystick + ClampedX = Zone.CurrentLocation.X - Zone.CurrentCenter.X; + ClampedY = Zone.CurrentLocation.Y - Zone.CurrentCenter.Y; + Scale = 1.0f; + if ( ClampedX != 0 || ClampedY != 0 ) + { + Scale = Min( Zone.ActiveSizeX, Zone.ActiveSizeY ) / ( 2.0 * Sqrt(ClampedX * ClampedX + ClampedY * ClampedY) ); + Scale = FMin( 1.0, Scale ); + } + ClampedX = ClampedX * Scale + Zone.CurrentCenter.X; + ClampedY = ClampedY * Scale + Zone.CurrentCenter.Y; + + if (Zone.bRenderGuides) + { + TempColor = Canvas.DrawColor; + LineColor.R = 128; + LineColor.G = 128; + LineColor.B = 128; + LineColor.A = 255; + Canvas.Draw2DLine(Zone.CurrentCenter.X, Zone.CurrentCenter.Y, ClampedX, ClampedY, LineColor); + Canvas.DrawColor = TempColor; + + } + + // The size of the indicator will be a fraction of the background's total size + Width = Zone.ActiveSizeX * 0.65 * FlashScale; + Height = Zone.ActiveSizeY * 0.65 * FlashScale; + + Canvas.SetPos( ClampedX - Width / 2, ClampedY - Height / 2); + Canvas.DrawTile(JoystickHat, Width, Height, JoystickHatUVs.U, JoystickHatUVs.V, JoystickHatUVs.UL, JoystickHatUVs.VL); + } +} + +function FlashSticks() +{ + bFlashJoysticks = true; + FlashTime = 0; +} + +defaultproperties +{ + JoystickBackground=Texture2D'MobileResources.T_MobileControls_texture' + JoystickBackgroundUVs=(U=0,V=0,UL=126,VL=126) + JoystickHat=Texture2D'MobileResources.T_MobileControls_texture' + JoystickHatUVs=(U=128,V=0,UL=78,VL=78) + + ButtonImages(0)=Texture2D'MobileResources.HUD.MobileHUDButton3' + ButtonImages(1)=Texture2D'MobileResources.HUD.MobileHUDButton3' + ButtonUVs(0)=(U=0,V=0,UL=32,VL=32) + ButtonUVs(1)=(U=0,V=0,UL=32,VL=32) + + TrackballBackground=none + TrackballTouchIndicator=Texture2D'MobileResources.T_MobileControls_texture' + TrackballTouchIndicatorUVs=(U=160,V=0,UL=92,VL=92) + + ButtonFont = Font'EngineFonts.SmallFont' + ButtonCaptionColor=(R=0,G=0,B=0,A=255); + + SliderImages(0)=Texture2D'CastleUI.menus.T_CastleMenu2' + SliderImages(1)=Texture2D'CastleUI.menus.T_CastleMenu2' + SliderImages(2)=Texture2D'CastleUI.menus.T_CastleMenu2' + SliderImages(3)=Texture2D'CastleUI.menus.T_CastleMenu2' + SliderUVs(0)=(U=1282,V=440,UL=322,VL=150) + SliderUVs(1)=(U=1282,V=440,UL=322,VL=150) + SliderUVs(2)=(U=1282,V=440,UL=322,VL=150) + SliderUVs(3)=(U=1282,V=440,UL=322,VL=150) + + LastTapToMoveEffectTime=-99999.0 + + TapToMoveTexture=Texture2D'CastleHUD.HUD_TouchToMove' + + BenchmarkFont=Font'UI_Fonts.MultiFonts.MF_LargeFont' + + BenchmarkBackground=Texture2D'CastleUIExt.T_CastleMenu2Ext' + BenchmarkBackgroundUVs=(U=19,V=335,UL=996,VL=322) + } diff --git a/Development/Src/UDKBase/classes/MobileMenuBase.uc b/Development/Src/UDKBase/classes/MobileMenuBase.uc new file mode 100644 index 00000000..5cc8f761 --- /dev/null +++ b/Development/Src/UDKBase/classes/MobileMenuBase.uc @@ -0,0 +1,62 @@ +/** + * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. + */ +class MobileMenuBase extends MobileMenuScene; + +var Texture2D iPadBackgroundTexture; +var MobileMenuObject.UVCoords iPadBackgroundCoords; + +/** Controls the scene fade */ +var float FadeTime, FadeDuration; +var bool bFadeOut; +var bool bCloseOnFadeOut; + +function Fade(bool bIsFadeOut, float FadeDur) +{ + local int i; + FadeTime = 0; + FadeDuration = FadeDur; + bFadeOut = bIsFadeOut; + + if (bIsFadeOut) + { + for (i=0;i 0) + { + Opacity = bFadeOut ? FInterpEaseOut(1,0,FadeTime/FadeDuration,2.0) : FInterpEaseOut(0,1,FadeTime/FadeDuration,2.0); + FadeTime += RenderDelta; + if (FadeTime > FadeDuration) + { + FadeDuration = 0; + if (bFadeOut && bCloseOnFadeOut) + { + InputOwner.CloseMenuScene(self); + } + } + } + + Super.RenderScene(Canvas,RenderDelta); +} + +defaultproperties +{ + Left=0 + Top=0 + Width=1.0 + Height=1.0 + bRelativeWidth=true + bRelativeHeight=true + + UITouchSound=SoundCue'CastleAudio.UI.UI_OK_Cue' + UIUnTouchSound=SoundCue'CastleAudio.UI.UI_OK_Cue' +} \ No newline at end of file diff --git a/Development/Src/UDKBase/classes/MobileMenuControls.uc b/Development/Src/UDKBase/classes/MobileMenuControls.uc new file mode 100644 index 00000000..d6606d07 --- /dev/null +++ b/Development/Src/UDKBase/classes/MobileMenuControls.uc @@ -0,0 +1,158 @@ +/** + * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. + */ +class MobileMenuControls extends MobileMenuScene; + +var float FadeTime, FadeDuration; +var float AnimTime; +var bool bFadeOut; + +var bool bAnimate; +var MobileMenuImage Icon; +var MobileMenuImage Msg; +var float Scale; + +function FadeOut() +{ + FadeTime = 0; + FadeDuration = 0.5; + bFadeOut = true; +} + +function Setup(bool bTap) +{ + + Icon = MobileMenuImage(MenuObjects[0]); + Msg = MobileMenuImage(MenuObjects[1]); + + Scale = Width / 960; + + FadeTime = 0; + FadeDuration = 0.5; + bFadeOut = false; + + if (bTap) + { + bAnimate = true; + Icon.Width = 84 * Scale; + Icon.Height = 84 * Scale; + Icon.Left = (Width * 0.5) - (Icon.Width * 0.5); + Icon.Top = Height * 0.50; + Icon.ImageUVs.U = 1306; + Icon.ImageUVs.V = 634; + Icon.ImageUVs.UL = 168; + Icon.ImageUVs.VL = 168; + + Msg.Width = 373 * Scale; + Msg.Height = 59 * Scale; + Msg.Left = Width * 0.5 - Msg.Width * 0.5; + Msg.Top = Height - Msg.Height * 2; + Msg.ImageUVs.U = 1076; + Msg.ImageUVs.V = 1836; + Msg.ImageUVs.UL = 746; + Msg.ImageUVs.VL = 118; + } + else + { + bAnimate = false; + Icon.Width = 586 * Scale; + Icon.Height = 133 * Scale; + Icon.Left = (Width * 0.5) - (Icon.Width * 0.5); + Icon.Top = Height * 0.25; + Icon.ImageUVs.U = 492; + Icon.ImageUVs.V = 856; + Icon.ImageUVs.UL = 1172; + Icon.ImageUVs.VL = 266; + + Msg.Width = 373 * Scale; + Msg.Height = 59 * Scale; + Msg.Left = (Width * 0.5) - (Msg.Width * 0.5); + Msg.Top = Height - (Msg.Height * 2); + Msg.ImageUVs.U = 256; + Msg.ImageUVs.V = 1836; + Msg.ImageUVs.UL = 746; + Msg.ImageUVs.VL = 118; + } +} + +function RenderScene(Canvas Canvas,float RenderDelta) +{ + local float alpha; + if (bAnimate) + { + Alpha = 1 - AnimTime/0.75; + AnimTime += RenderDelta; + if (AnimTime > 0.75) + { + AnimTime = 0; + } + + Icon.Width = 84 * Scale * (1 + 1-Alpha); + Icon.Height = 84 * Scale * (1 + 1-Alpha); + Icon.Left = (Width * 0.5) - (Icon.Width * 0.5); + Icon.Top = Height * 0.50 - (Icon.Height * 0.5); + Icon.Opacity = Alpha; + } + + if (FadeDuration > 0) + { + Opacity = bFadeOut ? FInterpEaseIn(1,0,FadeTime/FadeDuration,2.0) : FInterpEaseOut(0,1,FadeTime/FadeDuration,2.0); + FadeTime += RenderDelta; + + if (FadeTime > FadeDuration) + { + FadeDuration = 0; + if (bFadeOut) + { + InputOwner.CloseMenuScene(self); + } + } + } + + Super.RenderScene(Canvas,RenderDelta); +} + + +defaultproperties +{ + Left=0 + Top=0 + Width=1.0 + Height=1.0 + bRelativeLeft=true + bRelativeTop=true + bRelativeWidth=true + bRelativeHeight=true + + Begin Object Class=MobileMenuImage Name=Icon + Tag="Background" + Left=0 + Top=0 + Width=1 + Height=1 + bRelativeWidth=true + bRelativeHeight=true + Image=Texture2D'CastleUI.menus.T_CastleMenu2' + ImageDrawStyle=IDS_Stretched + ImageUVs=(bCustomCoords=true,U=0,V=0,UL=1920,VL=1280) + bIsActive=false + End Object + MenuObjects(0)=Icon + + Begin Object Class=MobileMenuImage Name=Msg + Tag="Background" + Left=0 + Top=0 + Width=1 + Height=1 + bRelativeWidth=true + bRelativeHeight=true + Image=Texture2D'CastleUI.menus.T_CastleMenu2' + ImageDrawStyle=IDS_Stretched + ImageUVs=(bCustomCoords=true,U=0,V=0,UL=1920,VL=1280) + bIsActive=false + End Object + MenuObjects(1)=Msg + bSceneDoesNotRequireInput=true + Opacity=0 +} \ No newline at end of file diff --git a/Development/Src/UDKBase/classes/MobileMenuDebug.uc b/Development/Src/UDKBase/classes/MobileMenuDebug.uc new file mode 100644 index 00000000..f304d6ec --- /dev/null +++ b/Development/Src/UDKBase/classes/MobileMenuDebug.uc @@ -0,0 +1,92 @@ +/** + * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. + */ +class MobileMenuDebug extends MobileMenuBase; + +/** + * Handle menu input + * + * @param Sender The object clicked on + * @param TouchX X location in screen space + * @param TouchY Y location in screen space + */ +event OnTouch(MobileMenuObject Sender, ETouchType EventType, float TouchX, float TouchY) +{ + if (Sender == none) + { + return; + } + + if (EventType == Touch_Cancelled) + { + return; + } + + if (Sender.Tag ~= "FPS") + { + InputOwner.Outer.ConsoleCommand("stat fps"); + } + else if (Sender.Tag ~= "MSAA") + { + InputOwner.Outer.ConsoleCommand("es2 msaa"); + } + else if (Sender.Tag ~= "UNIT") + { + InputOwner.Outer.ConsoleCOmmand("stat unit"); + } + else if (Sender.Tag ~= "Close") + { + InputOwner.CloseMenuScene(self); + } +} + +defaultproperties +{ + Begin Object Class=MobileMenuButton Name=CloseButton + Tag="Close" + bRelativeLeft=true + Left=0.1 + Top=20 + Width=100 + Height=100 + Caption="Close" + CaptionColor=(R=0.0,G=0.5,B=1.0,A=1.0) + End Object + MenuObjects.Add(CloseButton) + + Begin Object Class=MobileMenuButton Name=ShowFPSButton + Tag="FPS" + bRelativeLeft=true + Left=0.1 + Top=120 + Width=100 + Height=100 + Caption="Toggle FPS" + CaptionColor=(R=0.0,G=0.5,B=1.0,A=1.0) + End Object + MenuObjects.Add(ShowFPSButton) + + Begin Object Class=MobileMenuButton Name=StatUnitButton + Tag="UNIT" + bRelativeLeft=true + Left=0.6 + Top=120 + Width=100 + Height=100 + Caption="Toggle StatUnit" + CaptionColor=(R=0.0,G=0.5,B=1.0,A=1.0) + End Object + MenuObjects.Add(StatUnitButton) + + Begin Object Class=MobileMenuButton Name=ShowMSAAButton + Tag="MSAA" + bRelativeLeft=true + Left=0.1 + Top=220 + Width=100 + Height=100 + Caption="Toggle MSAA" + CaptionColor=(R=0.0,G=0.5,B=1.0,A=1.0) + End Object + MenuObjects.Add(ShowMSAAButton) +} \ No newline at end of file diff --git a/Development/Src/UDKBase/classes/MobileMenuPause.uc b/Development/Src/UDKBase/classes/MobileMenuPause.uc new file mode 100644 index 00000000..82d14216 --- /dev/null +++ b/Development/Src/UDKBase/classes/MobileMenuPause.uc @@ -0,0 +1,335 @@ +/** + * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. + */ +class MobileMenuPause extends MobileMenuScene + dependson(SimpleGame); + +// A reference to the help screen that we will fade out as the player enters the game +var MobileMenuControls FadingControlsMenu; + +var bool bHelpFadingOut; +var float HelpFadeTime; +var float HelpFadeDuration; + +/** Holds how much of the menu is shown. */ +var float ShownSize; + +var float Scale; + +var bool bFlashHelp; +var float FlashDuration; +var float FlashTime; + +event InitMenuScene(MobilePlayerInput PlayerInput, int ScreenWidth, int ScreenHeight, bool bIsFirstInitialization) +{ + local int i; + + Super.InitMenuScene(PlayerInput, 960, 640, bIsFirstInitialization); + + Scale = /*(ScreenWidth >= 960) ? 1.0 : */Float(ScreenWidth) / 960.0; + for(i=1;i= PC.SliderZone.CurrentLocation.X && X < PC.SliderZone.CurrentLocation.X + PC.SliderZone.ActiveSizeX && + Y >= PC.SliderZone.CurrentLocation.Y && Y < PC.SliderZone.CurrentLocation.Y + PC.SliderZone.ActiveSizeY ) ) + { + PC.ResetMenu(); + return true; + } + } + } + return bInside; +} + +function FlashHelp(float Duration) +{ + bFlashHelp = true; + FlashDuration = Duration; + FlashTime = 0; + bHelpFadingOut = false; + HelpFadeTime = 0; +} + +function ReleaseHelp() +{ + if (bFlashHelp) + { + bFlashHelp = false; + bHelpFadingOut = true; + HelpFadeTime = HelpFadeDuration; + HelpFadeTime = HelpFadeDuration - HelpFadeTime; + } +} + +function SetAttractModeUI( bool bIsInBenchmarkMode ) +{ + // nothing to do if we don't have these extra controls + if (MenuObjects.length < 5) + { + return; + } + + MenuObjects[3].bIsHidden = true; + MenuObjects[3].bIsActive = false; + + if (bIsInBenchmarkMode) + { + // Hide settings button if in benchmark mode only + MenuObjects[4].bIsHidden = true; + MenuObjects[4].bIsActive = false; + } + + // Position the buttons + MenuObjects[1].Left = (Width/4) - (MenuObjects[2].Width/2); + MenuObjects[2].Left = Width - (Width/4) - (MenuObjects[2].Width/2); +} + +function SetDefaultUI() +{ + // nothing to do if we don't have these extra controls + if (MenuObjects.length < 5) + { + return; + } + + MenuObjects[3].bIsHidden = false; + MenuObjects[3].bIsActive = true; + MenuObjects[4].bIsHidden = false; + MenuObjects[4].bIsActive = true; + + // Position the buttons + MenuObjects[3].Left = (Width / 2) - (MenuObjects[3].Width/2); + MenuObjects[1].Left = (MenuObjects[3].Left/2) - (MenuObjects[1].Width/2); + MenuObjects[2].Left = (MenuObjects[3].Left/2) + MenuObjects[3].Left + MenuObjects[3].Width - (MenuObjects[2].Width/2); + +} + +defaultproperties +{ + SceneCaptionFont=MultiFont'CastleFonts.Positec' + Left=0 + Top=0 + Width=1.0 + bRelativeLeft=true + bRelativeWidth=true + Height=180; + + Begin Object Class=MobileMenuImage Name=Background + Tag="Background" + Left=0 + Top=0 + Width=1.5 + Height=1.0 + bRelativeWidth=true + bRelativeHeight=true + Image=Texture2D'CastleUI.menus.T_CastleMenu2' + ImageDrawStyle=IDS_Stretched + ImageUVs=(bCustomCoords=true,U=0,V=60,UL=2048,VL=360) + End Object + MenuObjects(0)=Background + + Begin Object Class=MobileMenuButton Name=AboutButton + Tag="ABOUT" + Left=0 + Top=-85 + Width=281 + Height=48 + TopLeeway=20 + Images(0)=Texture2D'CastleUI.menus.T_CastleMenu2' + Images(1)=Texture2D'CastleUI.menus.T_CastleMenu2' + ImagesUVs(0)=(bCustomCoords=true,U=708,V=1124,UL=620,VL=96) + ImagesUVs(1)=(bCustomCoords=true,U=1352,V=1124,UL=620,VL=96) + End Object + MenuObjects(1)=AboutButton + + Begin Object Class=MobileMenuButton Name=AttractButton + Tag="BIRDSEYE" + Left=0 + Top=-85 + Width=310 + Height=48 + TopLeeway=20 + Images(0)=Texture2D'CastleUI.menus.T_CastleMenu2' + Images(1)=Texture2D'CastleUI.menus.T_CastleMenu2' + ImagesUVs(0)=(bCustomCoords=true,U=256,V=1230,UL=620,VL=96) + ImagesUVs(1)=(bCustomCoords=true,U=256,V=1338,UL=620,VL=96) + End Object + MenuObjects(2)=AttractButton + + Begin Object Class=MobileMenuButton Name=BenchmarkButton + Tag="BENCHMARK" + Left=0 + Top=-85 + Width=310 + Height=48 + TopLeeway=20 + Images(0)=Texture2D'CastleUIExt.T_CastleMenu2Ext' + Images(1)=Texture2D'CastleUIExt.T_CastleMenu2Ext' + ImagesUVs(0)=(bCustomCoords=true,U=6,V=0,UL=620,VL=96) + ImagesUVs(1)=(bCustomCoords=true,U=6,V=118,UL=620,VL=96) + End Object + MenuObjects(3)=BenchmarkButton + + Begin Object Class=MobileMenuButton Name=SettingsButton + Tag="SETTINGS" + Left=0 + Top=-15 + Width=138 + Height=64 + TopLeeway=20 + Images(0)=Texture2D'CastleUIExt.T_CastleMenu2Ext' + Images(1)=Texture2D'CastleUIExt.T_CastleMenu2Ext' + ImagesUVs(0)=(bCustomCoords=true,U=740,V=3 ,UL=284,VL=134) + ImagesUVs(1)=(bCustomCoords=true,U=740,V=137,UL=284,VL=134) + End Object + MenuObjects(4)=SettingsButton + + UITouchSound=SoundCue'CastleAudio.UI.UI_ChangeSelection_Cue' + UIUnTouchSound=SoundCue'CastleAudio.UI.UI_ChangeSelection_Cue' + HelpFadeDuration=0.3 +} + diff --git a/Development/Src/UDKBase/classes/MobileMenuSplash.uc b/Development/Src/UDKBase/classes/MobileMenuSplash.uc new file mode 100644 index 00000000..8dc3437a --- /dev/null +++ b/Development/Src/UDKBase/classes/MobileMenuSplash.uc @@ -0,0 +1,103 @@ +/** + * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. + */ +class MobileMenuSplash extends MobileMenuScene; + +var float HelpFlashDuration; + +event InitMenuScene(MobilePlayerInput PlayerInput, int ScreenWidth, int ScreenHeight, bool bIsFirstInitialization) +{ + local float scale; + + if (ScreenWidth < 960) + { + MenuObjects[0].Width = 0.95; + } + + super.InitMenuScene(PlayerInput, ScreenWidth, ScreenHeight, bIsFirstInitialization); + + Scale = /*(ScreenWidth >= 960) ? 1.0 : */Float(ScreenWidth) / 960; + + MenuObjects[1].Width = 574 * Scale; + MenuObjects[1].Height = 574 * Scale * 0.1393728222996516; + MenuObjects[1].Left = (ScreenWidth/2) - 40*Scale; + +} + +event OnTouch(MobileMenuObject Sender, ETouchType EventType, float TouchX, float TouchY) +{ + local CastlePC PC; + if (Sender.Tag == "CATCHALL") + { + if (EventType != Touch_Cancelled) + { + PC = CastlePC(InputOwner.Outer); + InputOwner.CloseMenuScene(self); + PC.FlashHelp(HelpFlashDuration); + } + } +} + +function Closed() +{ + CastlePC(InputOwner.Outer).StartTutorials(); + Super.Closed(); +} + +defaultproperties +{ + + Top=0 + Left=0 + Width=1.0 + Height=1.0 + bRelativeWidth=true + bRelativeHeight=true + + Begin Object Class=MobileMenuImage Name=INFO + Tag="INFO" + Left=0.5 + Top=0.5 + Width=0.6927083 + Height=0.2601503759398496 + bHeightRelativeToWidth=true + XOffset=0.5 + YOffset=0.5 + bRelativeLeft=true + bRelativeTop=true + bRelativeWidth=true + bRelativeHeight=true + Image=Texture2D'CastleUI.menus.T_CastleMenu2' + ImageDrawStyle=IDS_Stretched + ImageUVs=(bCustomCoords=true,U=264,V=1464,UL=1330,VL=346) + End Object + MenuObjects(0)=INFO + + Begin Object Class=MobileMenuImage Name=Highlight + Tag="HIGHLIGHT" + Left=0 + Top=0 + Width=587 + Height=84 + Image=Texture2D'CastleUI.menus.T_CastleMenu2' + ImageDrawStyle=IDS_Stretched + ImageUVs=(bCustomCoords=true,U=898,V=1224,UL=1148,VL=160) + End Object + MenuObjects(1)=Highlight + + Begin Object Class=MobileMenuButton Name=CATCHALL + Tag="CATCHALL" + Left=0 + Top=0 + Width=1 + Height=1 + bRelativeLeft=true + bRelativeTop=true + bRelativeWidth=true + bRelativeHeight=true + bIsActive=true; + End Object + MenuObjects(2)=CATCHALL + + HelpFlashDuration=2 +} diff --git a/Development/Src/UDKBase/classes/MobilePlaceablePawn.uc b/Development/Src/UDKBase/classes/MobilePlaceablePawn.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/MobileProjectile.uc b/Development/Src/UDKBase/classes/MobileProjectile.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/ParticleModuleTypeDataSnow.uc b/Development/Src/UDKBase/classes/ParticleModuleTypeDataSnow.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/SeqAct_MobileCrowdSpawner.uc b/Development/Src/UDKBase/classes/SeqAct_MobileCrowdSpawner.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/SimpleGame.uc b/Development/Src/UDKBase/classes/SimpleGame.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/SimplePC.uc b/Development/Src/UDKBase/classes/SimplePC.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/SimplePawn.uc b/Development/Src/UDKBase/classes/SimplePawn.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAIDecisionComponent.uc b/Development/Src/UDKBase/classes/UDKAIDecisionComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendBase.uc b/Development/Src/UDKBase/classes/UDKAnimBlendBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendByDriving.uc b/Development/Src/UDKBase/classes/UDKAnimBlendByDriving.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendByFall.uc b/Development/Src/UDKBase/classes/UDKAnimBlendByFall.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendByFlying.uc b/Development/Src/UDKBase/classes/UDKAnimBlendByFlying.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendByHoverJump.uc b/Development/Src/UDKBase/classes/UDKAnimBlendByHoverJump.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendByHoverboardTilt.uc b/Development/Src/UDKBase/classes/UDKAnimBlendByHoverboardTilt.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendByHoverboardTurn.uc b/Development/Src/UDKBase/classes/UDKAnimBlendByHoverboardTurn.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendByHoverboarding.uc b/Development/Src/UDKBase/classes/UDKAnimBlendByHoverboarding.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendByIdle.uc b/Development/Src/UDKBase/classes/UDKAnimBlendByIdle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendByPhysics.uc b/Development/Src/UDKBase/classes/UDKAnimBlendByPhysics.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendByPhysicsVolume.uc b/Development/Src/UDKBase/classes/UDKAnimBlendByPhysicsVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendByPosture.uc b/Development/Src/UDKBase/classes/UDKAnimBlendByPosture.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendBySlotActive.uc b/Development/Src/UDKBase/classes/UDKAnimBlendBySlotActive.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendBySpeed.uc b/Development/Src/UDKBase/classes/UDKAnimBlendBySpeed.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendByTurnInPlace.uc b/Development/Src/UDKBase/classes/UDKAnimBlendByTurnInPlace.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendByVehicle.uc b/Development/Src/UDKBase/classes/UDKAnimBlendByVehicle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendByWeapType.uc b/Development/Src/UDKBase/classes/UDKAnimBlendByWeapType.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimBlendByWeapon.uc b/Development/Src/UDKBase/classes/UDKAnimBlendByWeapon.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimNodeCopyBoneTranslation.uc b/Development/Src/UDKBase/classes/UDKAnimNodeCopyBoneTranslation.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimNodeFramePlayer.uc b/Development/Src/UDKBase/classes/UDKAnimNodeFramePlayer.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimNodeJumpLeanOffset.uc b/Development/Src/UDKBase/classes/UDKAnimNodeJumpLeanOffset.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimNodeSeqWeap.uc b/Development/Src/UDKBase/classes/UDKAnimNodeSeqWeap.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimNodeSequence.uc b/Development/Src/UDKBase/classes/UDKAnimNodeSequence.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKAnimNodeSequenceByBoneRotation.uc b/Development/Src/UDKBase/classes/UDKAnimNodeSequenceByBoneRotation.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKBot.uc b/Development/Src/UDKBase/classes/UDKBot.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKCarriedObject.uc b/Development/Src/UDKBase/classes/UDKCarriedObject.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKDataStore_GameSearchBase.uc b/Development/Src/UDKBase/classes/UDKDataStore_GameSearchBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKEmitCameraEffect.uc b/Development/Src/UDKBase/classes/UDKEmitCameraEffect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKEmitterPool.uc b/Development/Src/UDKBase/classes/UDKEmitterPool.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKExplosionLight.uc b/Development/Src/UDKBase/classes/UDKExplosionLight.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKForcedDirectionVolume.uc b/Development/Src/UDKBase/classes/UDKForcedDirectionVolume.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKGame.uc b/Development/Src/UDKBase/classes/UDKGame.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKGameInteraction.uc b/Development/Src/UDKBase/classes/UDKGameInteraction.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKGameObjective.uc b/Development/Src/UDKBase/classes/UDKGameObjective.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKGameSettingsCommon.uc b/Development/Src/UDKBase/classes/UDKGameSettingsCommon.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKGameViewportClient.uc b/Development/Src/UDKBase/classes/UDKGameViewportClient.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKHUD.uc b/Development/Src/UDKBase/classes/UDKHUD.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKJumpPad.uc b/Development/Src/UDKBase/classes/UDKJumpPad.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKJumpPadReachspec.uc b/Development/Src/UDKBase/classes/UDKJumpPadReachspec.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKKActorBreakable.uc b/Development/Src/UDKBase/classes/UDKKActorBreakable.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKMapInfo.uc b/Development/Src/UDKBase/classes/UDKMapInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKMapMusicInfo.uc b/Development/Src/UDKBase/classes/UDKMapMusicInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKMobileInputZone.uc b/Development/Src/UDKBase/classes/UDKMobileInputZone.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKParticleSystemComponent.uc b/Development/Src/UDKBase/classes/UDKParticleSystemComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKPawn.uc b/Development/Src/UDKBase/classes/UDKPawn.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKPickupFactory.uc b/Development/Src/UDKBase/classes/UDKPickupFactory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKPlayerController.uc b/Development/Src/UDKBase/classes/UDKPlayerController.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKPlayerInput.uc b/Development/Src/UDKBase/classes/UDKPlayerInput.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKProfileSettings.uc b/Development/Src/UDKBase/classes/UDKProfileSettings.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKProjectile.uc b/Development/Src/UDKBase/classes/UDKProjectile.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKScout.uc b/Development/Src/UDKBase/classes/UDKScout.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKScriptedNavigationPoint.uc b/Development/Src/UDKBase/classes/UDKScriptedNavigationPoint.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_CantileverBeam.uc b/Development/Src/UDKBase/classes/UDKSkelControl_CantileverBeam.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_Damage.uc b/Development/Src/UDKBase/classes/UDKSkelControl_Damage.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_DamageHinge.uc b/Development/Src/UDKBase/classes/UDKSkelControl_DamageHinge.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_DamageSpring.uc b/Development/Src/UDKBase/classes/UDKSkelControl_DamageSpring.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_HoverboardSuspension.uc b/Development/Src/UDKBase/classes/UDKSkelControl_HoverboardSuspension.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_HoverboardSwing.uc b/Development/Src/UDKBase/classes/UDKSkelControl_HoverboardSwing.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_HoverboardVibration.uc b/Development/Src/UDKBase/classes/UDKSkelControl_HoverboardVibration.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_HugGround.uc b/Development/Src/UDKBase/classes/UDKSkelControl_HugGround.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_LockRotation.uc b/Development/Src/UDKBase/classes/UDKSkelControl_LockRotation.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_LookAt.uc b/Development/Src/UDKBase/classes/UDKSkelControl_LookAt.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_MassBoneScaling.uc b/Development/Src/UDKBase/classes/UDKSkelControl_MassBoneScaling.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_PropellerBlade.uc b/Development/Src/UDKBase/classes/UDKSkelControl_PropellerBlade.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_Rotate.uc b/Development/Src/UDKBase/classes/UDKSkelControl_Rotate.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_SpinControl.uc b/Development/Src/UDKBase/classes/UDKSkelControl_SpinControl.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_TurretConstrained.uc b/Development/Src/UDKBase/classes/UDKSkelControl_TurretConstrained.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkelControl_VehicleFlap.uc b/Development/Src/UDKBase/classes/UDKSkelControl_VehicleFlap.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSkeletalMeshComponent.uc b/Development/Src/UDKBase/classes/UDKSkeletalMeshComponent.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKSquadAI.uc b/Development/Src/UDKBase/classes/UDKSquadAI.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKTeamOwnedInfo.uc b/Development/Src/UDKBase/classes/UDKTeamOwnedInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKTeamPlayerStart.uc b/Development/Src/UDKBase/classes/UDKTeamPlayerStart.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKTeleporterBase.uc b/Development/Src/UDKBase/classes/UDKTeleporterBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKTrajectoryReachspec.uc b/Development/Src/UDKBase/classes/UDKTrajectoryReachspec.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKUIDataProvider_MapInfo.uc b/Development/Src/UDKBase/classes/UDKUIDataProvider_MapInfo.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKUIDataProvider_MenuOption.uc b/Development/Src/UDKBase/classes/UDKUIDataProvider_MenuOption.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKUIDataProvider_SearchResult.uc b/Development/Src/UDKBase/classes/UDKUIDataProvider_SearchResult.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKUIDataProvider_ServerDetails.uc b/Development/Src/UDKBase/classes/UDKUIDataProvider_ServerDetails.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKUIDataProvider_SimpleElementProvider.uc b/Development/Src/UDKBase/classes/UDKUIDataProvider_SimpleElementProvider.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKUIDataProvider_StringArray.uc b/Development/Src/UDKBase/classes/UDKUIDataProvider_StringArray.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKUIDataStore_MenuItems.uc b/Development/Src/UDKBase/classes/UDKUIDataStore_MenuItems.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKUIDataStore_Options.uc b/Development/Src/UDKBase/classes/UDKUIDataStore_Options.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKUIDataStore_StringAliasBindingMap.uc b/Development/Src/UDKBase/classes/UDKUIDataStore_StringAliasBindingMap.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKUIDataStore_StringAliasMap.uc b/Development/Src/UDKBase/classes/UDKUIDataStore_StringAliasMap.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKUIDataStore_StringList.uc b/Development/Src/UDKBase/classes/UDKUIDataStore_StringList.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKUIResourceDataProvider.uc b/Development/Src/UDKBase/classes/UDKUIResourceDataProvider.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKVehicle.uc b/Development/Src/UDKBase/classes/UDKVehicle.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKVehicleBase.uc b/Development/Src/UDKBase/classes/UDKVehicleBase.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKVehicleFactory.uc b/Development/Src/UDKBase/classes/UDKVehicleFactory.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKVehicleMovementEffect.uc b/Development/Src/UDKBase/classes/UDKVehicleMovementEffect.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKVehicleSimCar.uc b/Development/Src/UDKBase/classes/UDKVehicleSimCar.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKVehicleSimChopper.uc b/Development/Src/UDKBase/classes/UDKVehicleSimChopper.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKVehicleSimHover.uc b/Development/Src/UDKBase/classes/UDKVehicleSimHover.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKVehicleSimHoverboard.uc b/Development/Src/UDKBase/classes/UDKVehicleSimHoverboard.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKVehicleWheel.uc b/Development/Src/UDKBase/classes/UDKVehicleWheel.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKWeapon.uc b/Development/Src/UDKBase/classes/UDKWeapon.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKWeaponPawn.uc b/Development/Src/UDKBase/classes/UDKWeaponPawn.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UDKBase/classes/UDKWeaponShield.uc b/Development/Src/UDKBase/classes/UDKWeaponShield.uc old mode 100755 new mode 100644 diff --git a/Development/Src/UTEditor/Classes/GenericBrowserType_UTMapMusicInfo.uc b/Development/Src/UTEditor/Classes/GenericBrowserType_UTMapMusicInfo.uc new file mode 100644 index 00000000..d728bf33 --- /dev/null +++ b/Development/Src/UTEditor/Classes/GenericBrowserType_UTMapMusicInfo.uc @@ -0,0 +1,20 @@ +/** + * Generic browser type for UTMapMusicInfo + * + * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. + */ +class GenericBrowserType_UTMapMusicInfo extends GenericBrowserType + native; + +cpptext +{ + /** + * Initialize the supported classes for this browser type. + */ + virtual void Init(); +} + +DefaultProperties +{ + Description="UT Map Music" +} diff --git a/Development/Src/UTEditor/Classes/UTEditor.uc b/Development/Src/UTEditor/Classes/UTEditor.uc deleted file mode 100644 index c956c943..00000000 --- a/Development/Src/UTEditor/Classes/UTEditor.uc +++ /dev/null @@ -1,2 +0,0 @@ -class UTEditor extends Object - abstract; \ No newline at end of file diff --git a/Development/Src/UTEditor/Classes/UTUnrealEdEngine.uc b/Development/Src/UTEditor/Classes/UTUnrealEdEngine.uc new file mode 100644 index 00000000..aa03cd6e --- /dev/null +++ b/Development/Src/UTEditor/Classes/UTUnrealEdEngine.uc @@ -0,0 +1,10 @@ +//============================================================================= +// Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. +//============================================================================= + +class UTUnrealEdEngine extends UnrealEdEngine + native; + +cpptext +{ +} diff --git a/Development/Src/UTGame/Classes/DemoRecSpectator.uc b/Development/Src/UTGame/Classes/DemoRecSpectator.uc new file mode 100644 index 00000000..94fe8a6c --- /dev/null +++ b/Development/Src/UTGame/Classes/DemoRecSpectator.uc @@ -0,0 +1,302 @@ +//============================================================================= +// DemoRecSpectator - spectator for demo recordings to replicate ClientMessages +// Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. +//============================================================================= + +class DemoRecSpectator extends UTPlayerController; + +var bool bFindPlayer; + +/** local copy of RealViewTarget as the C++ code might clear it in some cases we don't want to for demo spectators */ +var PlayerReplicationInfo MyRealViewTarget; + +/** if set, camera rotation is always forced to viewtarget rotation */ +var config bool bLockRotationToViewTarget; + +/** If set, automatically switches players every AutoSwitchPlayerInterval seconds */ +var config bool bAutoSwitchPlayers; + +/** Interval to use if bAutoSwitchPlayers is TRUE */ +var config float AutoSwitchPlayerInterval; + +simulated event PostBeginPlay() +{ + Super.PostBeginPlay(); + + if ( PlayerReplicationInfo != None ) + { + PlayerReplicationInfo.bOutOfLives = true; + } +} + +simulated event ReceivedPlayer() +{ + Super.ReceivedPlayer(); + + // DemoRecSpectators don't go through the login process, so manually call ClientSetHUD() + // so the spectator has it when playing back the demo + if (Role == ROLE_Authority && WorldInfo.Game != None) + { + ClientSetHUD(WorldInfo.Game.HUDType); + } +} + +function InitPlayerReplicationInfo() +{ + Super.InitPlayerReplicationInfo(); + PlayerReplicationInfo.PlayerName = "DemoRecSpectator"; + PlayerReplicationInfo.bIsSpectator = true; + PlayerReplicationInfo.bOnlySpectator = true; + PlayerReplicationInfo.bOutOfLives = true; + PlayerReplicationInfo.bWaitingPlayer = false; +} + +exec function Slomo(float NewTimeDilation) +{ + WorldInfo.DemoPlayTimeDilation = NewTimeDilation; +} + +exec function ViewClass( class aClass, optional bool bQuiet, optional bool bCheat ) +{ + local actor other, first; + local bool bFound; + + first = None; + + ForEach AllActors( aClass, other ) + { + if ( bFound || (first == None) ) + { + first = other; + if ( bFound ) + break; + } + if ( other == ViewTarget ) + bFound = true; + } + + if ( first != None ) + { + SetViewTarget(first); + SetBehindView(ViewTarget != self); + } + else + SetViewTarget(self); +} + +//==== Called during demo playback ============================================ + +exec function DemoViewNextPlayer() +{ + local Pawn P, Pick; + local bool bFound; + + // view next player + foreach WorldInfo.AllPawns(class'Pawn', P) + { + if (P.PlayerReplicationInfo != None) + { + if (Pick == None) + { + Pick = P; + } + if (bFound) + { + Pick = P; + break; + } + else + { + bFound = (RealViewTarget == P.PlayerReplicationInfo || ViewTarget == P); + } + } + } + + SetViewTarget(Pick); +} + +function SetViewTarget(Actor NewViewTarget, optional ViewTargetTransitionParams TransitionParams) +{ + Super.SetViewTarget(NewViewTarget, TransitionParams); + + // this check is so that a Pawn getting gibbed doesn't break finding that player again + // must manually clear MyRealViewTarget when player controlled switch back to viewing self + if (NewViewTarget != self) + { + MyRealViewTarget = RealViewTarget; + } +} + +unreliable server function ServerViewSelf(optional ViewTargetTransitionParams TransitionParams) +{ + Super.ServerViewSelf(TransitionParams); + + MyRealViewTarget = None; +} + +reliable client function ClientSetRealViewTarget(PlayerReplicationInfo NewTarget) +{ + SetViewTarget(self); // will find Pawn from RealViewTarget next tick + RealViewTarget = NewTarget; + MyRealViewTarget = NewTarget; + bFindPlayer = (NewTarget == None); +} + +function bool SetPause(bool bPause, optional delegate CanUnpauseDelegate = CanUnpause) +{ + // allow the spectator to pause demo playback + if (WorldInfo.NetMode == NM_Client) + { + WorldInfo.Pauser = (bPause) ? PlayerReplicationInfo : None; + return true; + } + else + { + return false; + } +} + +exec function Pause() +{ + if (WorldInfo.NetMode == NM_Client) + { + ServerPause(); + } +} + +auto state Spectating +{ + function BeginState(Name PreviousStateName) + { + super.BeginState(PreviousStateName); + + if( bAutoSwitchPlayers ) + { + SetTimer( AutoSwitchPlayerInterval, true, 'DemoViewNextPlayer'); + } + } + + exec function StartFire(optional byte FireModeNum) + { + SetBehindView(true); + DemoViewNextPlayer(); + } + + /** used to start out the demo view on the local player - should be called when recording, not playback */ + function SendInitialViewTarget() + { + local PlayerController PC; + + foreach LocalPlayerControllers(class'PlayerController', PC) + { + if (!PC.PlayerReplicationInfo.bOnlySpectator) + { + ClientSetRealViewTarget(PC.PlayerReplicationInfo); + return; + } + } + // send None so demo playback knows it should just pick the first Pawn it can find + ClientSetRealViewTarget(None); + } + + simulated event GetPlayerViewPoint(out vector CameraLocation, out rotator CameraRotation) + { + Global.GetPlayerViewPoint(CameraLocation, CameraRotation); + } + + exec function BehindView() + { + SetBehindView(!bBehindView); + } + + event PlayerTick( float DeltaTime ) + { + local Pawn P; + + Global.PlayerTick( DeltaTime ); + + // attempt to find a player to view. + if (Role == ROLE_AutonomousProxy) + { + if (RealViewTarget == None && MyRealViewTarget != None) + { + RealViewTarget = MyRealViewTarget; + } + + if ((RealViewTarget==None || RealViewTarget==PlayerReplicationInfo) && bFindPlayer) + { + DemoViewNextPlayer(); + if (RealViewTarget != None && RealViewTarget != PlayerReplicationInfo) + { + bFindPlayer = false; + } + } + else + { + // reacquire ViewTarget if the player switched Pawns + if ( RealViewTarget != None && RealViewTarget != PlayerReplicationInfo && + (Pawn(ViewTarget) == None || Pawn(ViewTarget).PlayerReplicationInfo != RealViewTarget) ) + { + foreach WorldInfo.AllPawns(class'Pawn', P) + { + if (P.PlayerReplicationInfo == RealViewTarget) + { + SetViewTarget(P); + break; + } + } + } + } + + if (Pawn(ViewTarget) != None) + { + TargetViewRotation = ViewTarget.Rotation; + TargetViewRotation.Pitch = Pawn(ViewTarget).RemoteViewPitch << 8; + } + } + } +Begin: + if (Role == ROLE_Authority) + { + // it takes two ticks to guarantee that all the relevant actors have been recorded into the demo + // (necessary for the reference in ClientSetRealViewTarget()'s parameter to be valid during playback) + Sleep(0.0); + Sleep(0.0); + SendInitialViewTarget(); + } +} + +simulated event GetPlayerViewPoint(out vector CameraLocation, out rotator CameraRotation) +{ + bFreeCamera = (!bLockRotationToViewTarget && (bBehindView || Vehicle(ViewTarget) != None)); + Super.GetPlayerViewPoint(CameraLocation, CameraRotation); +} + +function UpdateRotation(float DeltaTime) +{ + local rotator NewRotation; + + if (bLockRotationToViewTarget) + { + SetRotation(ViewTarget.Rotation); + } + else + { + Super.UpdateRotation(DeltaTime); + } + + if (Rotation.Roll != 0) + { + NewRotation = Rotation; + NewRotation.Roll = 0; + SetRotation(NewRotation); + } +} + +defaultproperties +{ + RemoteRole=ROLE_AutonomousProxy + bDemoOwner=1 + bBehindView=true +} + diff --git a/Development/Src/UTGame/Classes/ForcedDirVolume.uc b/Development/Src/UTGame/Classes/ForcedDirVolume.uc new file mode 100644 index 00000000..04261613 --- /dev/null +++ b/Development/Src/UTGame/Classes/ForcedDirVolume.uc @@ -0,0 +1,9 @@ +//============================================================================= +// ForcedDirVolume +// used to force UTVehicles [of a certain class if wanted] in a certain direction +// +// Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. +//============================================================================= + +class ForcedDirVolume extends UDKForcedDirectionVolume; + diff --git a/Development/Src/UTGame/Classes/GFxMinimap.uc b/Development/Src/UTGame/Classes/GFxMinimap.uc new file mode 100644 index 00000000..7adc8a3e --- /dev/null +++ b/Development/Src/UTGame/Classes/GFxMinimap.uc @@ -0,0 +1,345 @@ +/********************************************************************** + +Copyright : Copyright 2006-2007 Scaleform Corp. All Rights Reserved. + +Portions of the integration code is from Epic Games as identified by Perforce annotations. +Copyright 2010 Epic Games, Inc. All rights reserved. + +Licensees may use this file in accordance with the valid Scaleform +Commercial License Agreement provided with the software. + +This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING +THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ANY PURPOSE. + +**********************************************************************/ + +class GFxMinimap extends GFxObject; + +//var public PlayerController PlayerOwner; + +var GFxMinimapHud Hud; +var WorldInfo ThisWorld; +var UTMapInfo MapInfo; +var int MapTexSize; +var bool bNeedsUpdateData; +var GFxObject PlayerIcon, CompassIcon, MapMC; +var array EnemyIcons, MyTeamIcons, FlagIcons, ObjectiveIcons; +var matrix IconMatrix; +var GFxObject IconsRedMC, IconsBlueMC, IconsFlagMC; +var int IconsRedCount, IconsBlueCount, IconsFlagCount; + +var array Objectives; + +function Init(GFxMinimapHud h) +{ + local ASValue av; + local array args; + local ASDisplayInfo DI; + local UTTeamInfo TeamInfo; + + local UTGameReplicationInfo GRI; + + Hud = h; + bNeedsUpdateData = true; + ThisWorld = GetPC().WorldInfo; + MapInfo = UTMapInfo(ThisWorld.GetMapInfo()); + + PlayerIcon = GetObject("player"); + CompassIcon = GetObject("compass"); + MapMC = GetObject("map"); + + if (MapInfo.MapTexture != none) + { + MapTexSize = Texture2D(MapInfo.MapTexture).SizeX; + SetString("mapImagePath", "img://" $ PathName(MapInfo.MapTexture)); + } + + IconsRedMC = GetObject("icons_player_red"); + IconsBlueMC = GetObject("icons_player_blue"); + IconsFlagMC = GetObject("icons_flag"); + + GRI = UTGameReplicationInfo(GetPC().WorldInfo.GRI); + + if ( UTGFxTeamHUD(H) != None ) + { + TeamInfo = UTTeamInfo(GRI.Teams[0]); + if (TeamInfo.TeamFlag != none) + { + FlagIcons = GenFlagIcons(2); + av.Type = AS_Number; + av.n = 3; + args.AddItem(av); + FlagIcons[0].Invoke("gotoAndStop", args); + args[0].n = 2; + FlagIcons[1].Invoke("gotoAndStop", args); + } + } + + DI = GetDisplayInfo(); + DI.X += 30; + DI.visible = false; + SetDisplayInfo(DI); +} + +function UpdateData() +{ + SetVisible(true); + + MapInfo.VerifyMapExtent(); + +/* + Objectives.length = 0; + foreach ThisWorld.AllNavigationPoints(class'UTGameObjective', Obj) + { + Objectives.AddItem(Obj); + } +*/ + bNeedsUpdateData = false; +} + +function array GenFriendIcons(int n) +{ + local array Icons; + local GFxObject IconMC; + local int i; + for (i = 0; i < n; i++) + { + IconMC = IconsBlueMC.AttachMovie("player_blue", "player_blue"$IconsBlueCount++); + Icons[i] = IconMC; + } + return Icons; +} + +function array GenEnemyIcons(int n) +{ + local array Icons; + local GFxObject IconMC; + local int i; + for (i = 0; i < n; i++) + { + IconMC = IconsRedMC.AttachMovie("player_red", "player_red"$IconsRedCount++); + Icons[i] = IconMC; + } + return Icons; +} + +function array GenFlagIcons(int n) +{ + local array Icons; + local GFxObject IconMC; + local int i; + for (i = 0; i < n; i++) + { + IconMC = IconsFlagMC.AttachMovie("flag", "flag"$IconsFlagCount++); + Icons[i] = IconMC; + } + return Icons; +} + +function UpdateIcons(out array Actors, out array ActorIcons, bool bIsRedIconType) +{ + local ASDisplayInfo d; + local array Icons; + local int i; + local vector V; + local GFxObject Val; + + d.hasVisible = true; + if (ActorIcons.length < Actors.length) + { + if ( bIsRedIconType ) + { + Icons = GenEnemyIcons(Actors.length-ActorIcons.length); + } + else + { + Icons = GenFriendIcons(Actors.length-ActorIcons.length); + } + + foreach Icons(Val) { ActorIcons.AddItem(Val); } + } + else + { + d.Visible = false; + for (i = Actors.length; i < ActorIcons.length; i++) + ActorIcons[i].SetDisplayInfo(d); + } + + d.hasX = true; d.hasY = true; + d.Visible = true; + for (i = 0; i < Actors.length; i++) + { + V = TransformVector(IconMatrix, Actors[i].Location); + d.Visible = (VSize2d(V) < Hud.Radius); + d.X = V.X; + d.Y = V.Y; + ActorIcons[i].SetDisplayInfo(d); + } +} + +function Update(float Scale) +{ + local Pawn P; + local ASDisplayInfo d; + local array MyTeam; + local array Enemy; + local UTPawn UTP; + local UTVehicle UTV; + local int j; + local float f; + local vector V; + local matrix M; + local float MapScale; + local UTTeamInfo Team; + local bool bInSensorRange, bIsRedIconType; + local vector MapOffset; + local PlayerController PC; + + PC = GetPC(); + + Scale = 1.0/Scale; + + if (PC.Pawn == None) + { + return; + } + + if (bNeedsUpdateData) + { + UpdateData(); + } + + // player + d.hasRotation = true; + if (UTPlayerController(PC).bRotateMinimap) + { + d.Rotation = 0; + PlayerIcon.SetDisplayInfo(d); + d.Rotation = ((PC.Rotation.Yaw) & 65535) * (-360.0/65536.0); + CompassIcon.SetDisplayInfo(d); + + f = -((PC.Rotation.Yaw + 16384) & 65535) * (Pi/32768.0); + IconMatrix.XPlane.X = cos(f) * Scale; + IconMatrix.XPlane.Y = sin(f) * Scale; + IconMatrix.YPlane.X = -sin(f) * Scale; + IconMatrix.YPlane.Y = cos(f) * Scale; + IconMatrix.WPlane.X = 0; + IconMatrix.WPlane.Y = 0; + IconMatrix.WPlane.Z = 0; + IconMatrix.WPlane.W = 1; + IconMatrix.WPlane = TransformVector(IconMatrix, -PC.Pawn.Location); + } + else + { + d.Rotation = 0; + CompassIcon.SetDisplayInfo(d); + d.Rotation = ((PC.Rotation.Yaw) & 65535) * (360.0/65536.0); + PlayerIcon.SetDisplayInfo(d); + + f = -Pi*0.5; + IconMatrix.XPlane.X = 0; + IconMatrix.XPlane.Y = -Scale; + IconMatrix.YPlane.X = Scale; + IconMatrix.YPlane.Y = 0; + IconMatrix.WPlane.X = 0; + IconMatrix.WPlane.Y = 0; + IconMatrix.WPlane.Z = 0; + IconMatrix.WPlane.W = 1; + IconMatrix.WPlane = TransformVector(IconMatrix, -PC.Pawn.Location); + } + d.hasRotation = false; + + // terrain + if (MapInfo != none && MapInfo.MapTexture != none) + { + f -= Pi*0.5; + MapScale = Hud.NormalZoomf/(2.0 * Hud.CurZoomf); + M.XPlane.X = -cos(f) * MapScale; + M.XPlane.Y = -sin(f) * MapScale; + M.YPlane.X = sin(f) * MapScale; + M.YPlane.Y = -cos(f) * MapScale; + MapOffset.X = -MapTexSize*0.5f; + MapOffset.Y = -MapTexSize*0.5f; + M.WPlane.X = 0; + M.WPlane.Y = 0; + M.WPlane.Z = 0; + M.WPlane.W = 1; + M.WPlane = TransformVector(M, MapOffset); + f = Pi*1.5-f; + V = (MapInfo.MapCenter - PC.Pawn.Location) * MapTexSize/MapInfo.MapExtent; + MapScale = (Hud.NormalZoomf/(2.0 * Hud.CurZoomf)); + M.WPlane.X += (V.X * cos(f) + V.Y * sin(f)) * MapScale; + M.WPlane.Y += (V.Y * cos(f) - V.X * sin(f)) * MapScale; + MapMC.SetDisplayMatrix(M); + } + + // other players + foreach ThisWorld.AllPawns(class'Pawn', P) + { + if ( P.bHidden || (P.Health <=0) || P.IsInvisible() || (P.DrivenVehicle != None) || (P.PlayerReplicationInfo == None) || (P == PC.Pawn)) + { + continue; + } + UTP = UTPawn(P); + UTV = UTVehicle(P); + if ((UTP == None) && (UTV == None)) + { + continue; + } + if (ThisWorld.GRI.OnSameTeam(PC, P)) + { + MyTeam.AddItem(P); + } + else + { + Enemy.AddItem(P); + } + } + + bIsRedIconType = (PC.PlayerReplicationInfo.Team == None) || (PC.PlayerReplicationInfo.Team.TeamIndex == 0); + + UpdateIcons(Enemy, EnemyIcons, !bIsRedIconType); + UpdateIcons(MyTeam, MyTeamIcons, bIsRedIconType); + + // flags + d.hasX = true; d.hasY = true; + d.hasVisible = true; + d.Visible = true; + if ( UTTeamInfo(PC.PlayerReplicationInfo.Team) != None ) + { + for ( j=0; j<2; j++ ) + { + Team = UTTeamInfo(ThisWorld.GRI.Teams[j]); + if (Team != None && Team.TeamFlag != None) + { + bInSensorRange = true; + if ( bInSensorRange ) + { + d.visible = true; + V = TransformVector(IconMatrix, Team.TeamFlag.Location); + V.Z = 0; + // place flag icon on minimap frame if too far away + if (VSizeSq(V) > Hud.Radius*Hud.Radius) + { + V = Normal(V) * Hud.Radius; + } + d.X = V.X; + d.Y = V.Y; + } + else + { + d.visible = false; + } + + FlagIcons[j].SetDisplayInfo(d); + } + } + } +} + +defaultproperties +{ + IconsRedCount = 0 + IconsBlueCount = 0 + IconsFlagCount = 0 +} diff --git a/Development/Src/UTGame/Classes/GFxMinimapHud.uc b/Development/Src/UTGame/Classes/GFxMinimapHud.uc new file mode 100644 index 00000000..6ef00287 --- /dev/null +++ b/Development/Src/UTGame/Classes/GFxMinimapHud.uc @@ -0,0 +1,730 @@ +/********************************************************************** + +Copyright : Copyright 2006-2007 Scaleform Corp. All Rights Reserved. + +Portions of the integration code is from Epic Games as identified by Perforce annotations. +Copyright 2010 Epic Games, Inc. All rights reserved. + +Licensees may use this file in accordance with the valid Scaleform +Commercial License Agreement provided with the software. + +This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING +THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ANY PURPOSE. + +**********************************************************************/ + +/** + * GFx HUD Demo for UTGame. + * Related Flash content: ut3_hud.fla + * + * + */ + +class GFxMinimapHud extends GFxMoviePlayer; + +var WorldInfo ThisWorld; +var GFxMinimap Minimap; +var float Radius; +var float CurZoomf, NormalZoomf, MaxZoomf, MinZoomf; + +struct MessageRow +{ + var GFxObject MC, TF; + var float StartFadeTime; + var int Y; +}; + +var GFxObject LogMC; +var array Messages, FreeMessages; +var float MessageHeight; +var int NumMessages; + +var GFxObject PlayerStatsMC, TeamStatsMC; +var GFxObject HealthTF, HealthBarMC, AmmoCountTF, AmmoBarMC, MaxAmmoMC, ArmorTF, ArmorMC, VArmorMC, VArmorTF, TimeTF; +var GFxObject WeaponMC, ArmorPercTF; + +var GFxObject CenterTextMC, CenterTextTF; +var GFxObject ScoreBarMC[2], ScoreTF[2], FlagCarrierMC[2], FlagCarrierTF[2], EnemyNameTF; + +var GFxObject HitLocMC[8], MultiKillN_TF, MultiKillMsg_TF, MultiKillMC; +var GFxObject ReticuleMC, RBotMC, RRightMC, RTopMC, RLeftMC; + +var UTVehicle LastVehicle; +var UTWeapon LastWeapon; +var float LastHealth, LastArmor, LastVHealth; +var int LastAmmoCount; +var int LastScore[2]; +var byte LastFlagHome[2]; +var UTPlayerReplicationInfo LastEnemy, LastFlagCarrier[2]; + +var UTGameReplicationInfo GRI; + +/** IF true, set this HUD up a a team HUD */ +var bool bIsTeamHUD; + +/** If true, let weapons draw their crosshairs instead of using GFx crosshair */ +var bool bDrawWeaponCrosshairs; + +/* + * Callback fired from Flash when Minimap is loaded. + * "ExternalInterface.call("RegisterMinimapView", this)"; + * + * Used to pass a reference to the MovieClip which is loaded + * from Flash back to UnrealScript. + */ +function registerMiniMapView(GFxMinimap mc, float r) +{ + Minimap = mc; + Radius = r; + CurZoomf = 64; + NormalZoomf = 64; + if (Minimap != none) + { + Minimap.Init(self); + Minimap.SetVisible(false); + Minimap.SetFloat("_xscale", 85); + Minimap.SetFloat("_yscale", 85); + } +} + +/* + * Creates a new LogMessage MovieClip for use in the + * log. + */ +function GFxObject CreateMessageRow() +{ + return LogMC.AttachMovie("LogMessage", "logMessage"$NumMessages++); +} + +/* + * Initalizes a new MessageRow and adds it to the list + * of available log MessageRow MovieClips for reuse. + */ +function GFxObject InitMessageRow() +{ + local MessageRow mrow; + + mrow.Y = 0; + mrow.MC = CreateMessageRow(); + + mrow.TF = mrow.MC.GetObject("message").GetObject("textField"); + mrow.TF.SetBool("html", true); + mrow.TF.SetString("htmlText", ""); + + FreeMessages.AddItem(mrow); + return mrow.MC; +} + +/* + * Initialization method for HUD. + * + * Caches all the references to MovieClips that will be updated throughout + * the HUD's lifespan. + * + * For the record, GetVariableObject is not as fast as GFxObject::GetObject() but + * nevertheless is used here for convenience. + * + */ +function Init(optional LocalPlayer player) +{ + local int j; + local GFxObject TempWidget; + + super.Init(player); + + ThisWorld = GetPC().WorldInfo; + GRI = UTGameReplicationInfo(GetPC().WorldInfo.GRI); + + Start(); + Advance(0); + + NumMessages = 0; + LastHealth = -110; + LastArmor = -110; + LastAmmoCount = -110; + LastScore[0] = -110; + LastScore[1] = -110; + + TempWidget = GetVariableObject("_root.expBar"); + if ( TempWidget != None ) + { + TempWidget.SetBool("_visible", false); + } + + TempWidget = GetVariableObject("_root.rank"); + if ( TempWidget != None ) + { + TempWidget.SetBool("_visible", false); + } + + TempWidget = GetVariableObject("_root.billboard"); + if ( TempWidget != None ) + { + TempWidget.SetBool("_visible", false); + } + + TempWidget = GetVariableObject("_root.title"); + if ( TempWidget != None ) + { + TempWidget.SetBool("_visible", false); + } + TempWidget = GetVariableObject("_root.stats"); + if ( TempWidget != None ) + { + TempWidget.SetBool("_visible", false); + } + + TempWidget = GetVariableObject("_root.flag"); + if ( TempWidget != None ) + { + TempWidget.SetVisible(false); + } + + TempWidget = GetVariableObject("_root.teamStats.redWinning"); + if ( TempWidget != None ) + { + TempWidget.SetVisible(false); + } + + TempWidget = GetVariableObject("_root.teamStats.blueWinning"); + if ( TempWidget != None ) + { + TempWidget.SetVisible(false); + } + + LogMC = GetVariableObject("_root.log"); + for (j = 0; j < 15; j++) + InitMessageRow(); + + TeamStatsMC = GetVariableObject("_root.teamStats"); + PlayerStatsMC = GetVariableObject("_root.playerStats"); + PlayerStatsMC.GotoAndStopI(3); + VArmorTF = GetVariableObject("_root.playerStats.vehicleN"); + VArmorMC = GetVariableObject("_root.playerStats.healthVehicle"); + PlayerStatsMC.GotoAndStopI(2); + WeaponMC = GetVariableObject("_root.playerStats.weapon"); + HealthTF = GetVariableObject("_root.playerStats.healthN"); + HealthBarMC = GetVariableObject("_root.playerStats.health"); + AmmoCountTF = GetVariableObject("_root.playerStats.ammoN"); + AmmoBarMC = GetVariableObject("_root.playerStats.ammo"); + MaxAmmoMC = GetVariableObject("_root.playerStats.ammo.ammoBG"); + ArmorTF = GetVariableObject("_root.playerStats.armorN"); + ArmorMC = GetVariableObject("_root.playerStats.armor"); + ArmorPercTF = GetVariableObject("_root.playerStats.armorPerc"); + + EnemyNameTF = GetVariableObject("_root.teamStats.redName"); + CenterTextTF = GetVariableObject("_root.centerTextMC.centerText.textField"); + CenterTextMC = GetVariableObject("_root.centerTextMC"); + + ReticuleMC = GetVariableObject("_root.reticule"); + RBotMC = GetVariableObject("_root.reticule.bottom"); + RTopMC = GetVariableObject("_root.reticule.top"); + RLeftMC = GetVariableObject("_root.reticule.left"); + RRightMC = GetVariableObject("_root.reticule.right"); + + MultiKillMC = GetVariableObject("_root.popup"); + + TimeTF = GetVariableObject("_root.teamStats.roundTime"); + + if ( bIsTeamHUD ) + { + ScoreBarMC[0] = GetVariableObject("_root.teamStats.teamRed"); + ScoreTF[0] = GetVariableObject("_root.teamStats.scoreRed"); + ScoreBarMC[1] = GetVariableObject("_root.teamStats.teamBlue"); + ScoreTF[1] = GetVariableObject("_root.teamStats.scoreBlue"); + FlagCarrierMC[0] = GetVariableObject("_root.flagRed"); + FlagCarrierMC[1] = GetVariableObject("_root.flagBlue"); + } + else + { + ScoreBarMC[1] = GetVariableObject("_root.teamStats.teamRed"); + ScoreTF[1] = GetVariableObject("_root.teamStats.scoreRed"); + ScoreBarMC[0] = GetVariableObject("_root.teamStats.teamBlue"); + ScoreTF[0] = GetVariableObject("_root.teamStats.scoreBlue"); + FlagCarrierMC[0] = GetVariableObject("_root.flagBlue"); + FlagCarrierMC[1] = GetVariableObject("_root.flagRed"); + } + + if ( bIsTeamHUD ) + { + EnemyNameTF.SetVisible(false); + FlagCarrierTF[0] = FlagCarrierMC[0].GetObject("textField"); + FlagCarrierTF[1] = FlagCarrierMC[1].GetObject("textField"); + FlagCarrierTF[0].SetText(""); + FlagCarrierTF[1].SetText(""); + } + else + { + EnemyNameTF.SetText(""); + FlagCarrierMC[0].SetVisible(false); + FlagCarrierMC[1].SetVisible(false); + ScoreBarMC[0].SetVisible(false); + ScoreBarMC[1].SetVisible(false); + ScoreTF[0].SetVisible(false); + ScoreTF[1].SetVisible(false); + TeamStatsMC.SetVisible(false); // FIXMESTEVE - also removes clock + } + + HitLocMC[0] = GetVariableObject("_root.dirHit.t"); + HitLocMC[1] = GetVariableObject("_root.dirHit.tr"); + HitLocMC[2] = GetVariableObject("_root.dirHit.r"); + HitLocMC[3] = GetVariableObject("_root.dirHit.br"); + HitLocMC[4] = GetVariableObject("_root.dirHit.b"); + HitLocMC[5] = GetVariableObject("_root.dirHit.bl"); + HitLocMC[6] = GetVariableObject("_root.dirHit.l"); + HitLocMC[7] = GetVariableObject("_root.dirHit.tl"); + + LogMC.SetFloat("_yrotation", -15); + TeamStatsMC.SetFloat("_yrotation", -15); + + FlagCarrierMC[0].SetFloat("_yrotation", 15); + FlagCarrierMC[1].SetFloat("_yrotation", 15); + PlayerStatsMC.SetFloat("_yrotation", 15); + + ClearStats(true); +} + +static function string FormatTime(int Seconds) +{ + local int Hours, Mins; + local string NewTimeString; + + Hours = Seconds / 3600; + Seconds -= Hours * 3600; + Mins = Seconds / 60; + Seconds -= Mins * 60; + if (Hours > 0) + NewTimeString = ( Hours > 9 ? String(Hours) : "0"$String(Hours)) $ ":"; + NewTimeString = NewTimeString $ ( Mins > 9 ? String(Mins) : "0"$String(Mins)) $ ":"; + NewTimeString = NewTimeString $ ( Seconds > 9 ? String(Seconds) : "0"$String(Seconds)); + + return NewTimeString; +} + +function ClearStats(optional bool clearScores) +{ + local GFxObject.ASDisplayInfo DI; + DI.hasXScale = true; + DI.XScale = 0; + + if (LastVehicle != none) + { + PlayerStatsMC.GotoAndStopI(2); + LastVehicle = none; + } + if (LastHealth != -10) + { + HealthTF.SetString("text", ""); + HealthBarMC.SetDisplayInfo(DI); + LastHealth = -10; + } + if (LastArmor != -10) + { + if (ArmorMC != none) + { + ArmorMC.SetVisible(false); + } + //ArmorPercTF.SetVisible(false); + ArmorTF.SetString("text", ""); + LastArmor = -10; + } + if (LastAmmoCount != -10) + { + AmmoCountTF.SetString("text", ""); + AmmoBarMC.GotoAndStopI(51); + LastAmmoCount = -10; + } + if (LastWeapon != none) + { + WeaponMC.SetVisible(false); + MaxAmmoMC.GotoAndStopI(51); + LastWeapon = none; + } + + if (clearScores && LastScore[0] != -100000) + { + if ( bIsTeamHUD ) + { + LastScore[0] = -100000; + LastScore[1] = -100000; + ScoreTF[0].SetString("text", ""); + ScoreTF[1].SetString("text", ""); + ScoreBarMC[0].SetDisplayInfo(DI); + ScoreBarMC[1].SetDisplayInfo(DI); + FlagCarrierTF[0].SetText(""); + FlagCarrierTF[1].SetText(""); + } + TimeTF.SetString("text", ""); + LastEnemy = none; + EnemyNameTF.SetText(""); + } +} + +function RemoveMessage() +{ + +} + +function AddMessage(string type, string msg) +{ + local MessageRow mrow; + local GFxObject.ASDisplayInfo DI; + local int j; + + if (Len(msg) == 0) + return; + + if (FreeMessages.Length > 0) + { + mrow = FreeMessages[FreeMessages.Length-1]; + FreeMessages.Remove(FreeMessages.Length-1,1); + } + else + { + mrow = Messages[Messages.Length-1]; + Messages.Remove(Messages.Length-1,1); + } + + mrow.TF.SetString(type, msg); + mrow.Y = 0; + DI.hasY = true; + DI.Y = 0; + mrow.MC.SetDisplayInfo(DI); + mrow.MC.GotoAndPlay("show"); + for (j = 0; j < Messages.Length; j++) + { + Messages[j].Y -= MessageHeight; + DI.Y = Messages[j].Y; + Messages[j].MC.SetDisplayInfo(DI); + } + Messages.InsertItem(0,mrow); +} + +function UpdateGameHUD(UTPlayerReplicationInfo PRI) +{ + local UTPlayerReplicationInfo MaxPRI; + local int i, j; + + MaxPri = none; + i = -10000000; + for (j = 0; j < GRI.PRIArray.length; j++) + { + if (GRI.PRIArray[j] != PRI && GRI.PRIArray[j].Score > i && (GRI.PRIArray[j].Score > 0 || GRI.PRIArray[j].Score > PRI.Score)) + { + i = GRI.PRIArray[j].Score; + MaxPRI = UTPlayerReplicationInfo(GRI.PRIArray[j]); + } + } + if (MaxPri != LastEnemy) + { + EnemyNameTF.SetText(MaxPRI != none ? MaxPRI.PlayerName : ""); + LastEnemy = MaxPri; + } +} + +function TickHud(float DeltaTime) +{ + local UTPawn UTP; + local UTVehicle UTV; + local UTWeaponPawn UWP; + local int TotalArmor; + local UTWeapon Weapon; + local int i; + local float f; + local UTPlayerReplicationInfo PRI; + local GFxObject.ASDisplayInfo DI; + local GFxObject.ASColorTransform Cxform; + local PlayerController PC; + + PC = GetPC(); + + GRI = UTGameReplicationInfo(PC.WorldInfo.GRI); + PRI = UTPlayerReplicationInfo(PC.PlayerReplicationInfo); + + if ( GRI != None ) + { + // score & time + if ( TimeTF != None ) + { + TimeTF.SetString("text", FormatTime(GRI.TimeLimit != 0 ? GRI.RemainingTime : GRI.ElapsedTime)); + } + + if ( PRI != None ) + { + UpdateGameHUD(PRI); + } + } + + UTP = UTPawn(PC.Pawn); + + if (UTP == None) + { + UTV = UTVehicle(PC.Pawn); + if ( UTV == None ) + { + UWP = UTWeaponPawn(PC.Pawn); + if ( UWP != None ) + { + UTV = UTVehicle(UWP.MyVehicle); + UTP = UTPawn(UWP.Driver); + } + } + else + { + UTP = UTPawn(UTV.Driver); + } + + if (UTV == None) + { + ClearStats(); + return; + } + else if (UTVehicle_Hoverboard(UTV) != none) + { + UTV = none; + } + } + + if (Minimap != none) + { + Minimap.Update(CurZoomf); + } + if (UTV != LastVehicle) + { + + if (UTV == none) + PlayerStatsMC.GotoAndStopI(2); + else + PlayerStatsMC.GotoAndStopI(3); + + LastVehicle = UTV; + LastHealth = -101; + LastArmor = -101; + LastAmmoCount = -101; + LastWeapon = none; + } + + if (LastHealth != UTP.Health) + { + HealthTF.SetText(UTP.Health); + DI.hasXScale = true; + DI.XScale = (100.0 * float(UTP.Health)) / float(UTP.HealthMax); + + if (DI.XScale >= 100) + { + DI.XScale = 101; + + f = FMin((UTP.Health-100)/100.f + 0.15f, 1); + Cxform.Multiply.R = 1-f; + Cxform.Multiply.G = 1-f; + Cxform.Multiply.B = 1-f; + Cxform.Add.B = 255.f*f; + } + HealthBarMC.SetColorTransform(Cxform); + HealthBarMC.SetDisplayInfo(DI); + LastHealth = UTP.Health; + } + + TotalArmor = UTP.GetShieldStrength(); + if (TotalArmor != LastArmor) + { + if (TotalArmor > 0) + { + if (ArmorMC != none) + { + ArmorMC.SetVisible(true); + ArmorMC.GotoAndStopI(TotalArmor >= 100 ? 100 : (1 + TotalArmor)); + } + ArmorTF.SetText(TotalArmor); + //ArmorPercTF.SetVisible(true); + } + else + { + if (ArmorMC != none) + { + ArmorMC.SetVisible(false); + } + ArmorTF.SetText(""); + //ArmorPercTF.SetVisible(false); + } + LastArmor = TotalArmor; + } + + Weapon = UTWeapon(UTP.Weapon); + if (Weapon != none && UTV == none) + { + if (Weapon != LastWeapon) + { + if (Weapon.AmmoDisplayType == EAWDS_None) + AmmoCountTF.SetText(""); + i = (Weapon.MaxAmmoCount > 30 ? 30 : Weapon.MaxAmmoCount); + MaxAmmoMC.GotoAndStopI(31 - i); + WeaponMC.SetVisible(true); + WeaponMC.GotoAndStopI(Weapon.InventoryGroup); + LastWeapon = Weapon; + } + i = Weapon.GetAmmoCount(); + if (i != LastAmmoCount) + { + LastAmmoCount = i; + AmmoCountTF.SetText(i); + if (i > 30) + i = 30; + AmmoBarMC.GotoAndStopI(31 - i); + AmmoBarMC.SetVisible(true); + } + } + else if (Weapon != LastWeapon) + { + AmmoCountTF.SetText(""); + AmmoBarMC.SetVisible(false); + WeaponMC.SetVisible(false); + } + + if (UTV != none) + { + if (UTV.Health != LastVHealth) + { + VArmorTF.SetText(UTV.Health); + DI.hasXScale = true; + DI.XScale = (100.0 * float(UTV.Health)) / float(UTV.HealthMax); + if (DI.XScale > 100) + DI.XScale = 100; + VArmorMC.SetDisplayInfo(DI); + LastVHealth = UTV.Health; + } + } +} + +function ToggleCrosshair(bool bToggle) +{ + bToggle = !bDrawWeaponCrosshairs && bToggle && !UTPlayerController(GetPC()).bNoCrosshair && UTHUDBase(GetPC().myHUD).bCrosshairShow; + + ReticuleMC.SetVisible(bToggle); + RBotMC.SetVisible(bToggle); + RTopMC.SetVisible(bToggle); + RLeftMC.SetVisible(bToggle); + RRightMC.SetVisible(bToggle); +} + +function MinimapZoomOut() +{ + if (CurZoomf < MaxZoomf) + CurZoomf *= 2; +} + +function MinimapZoomIn() +{ + if (CurZoomf > MinZoomf) + CurZoomf *= 0.5; +} + +function DisplayHit(vector HitDir, int Damage, class damageType) +{ + local Vector Loc; + local Rotator Rot; + local float DirOfHit; + local vector AxisX, AxisY, AxisZ; + local vector ShotDirection; + local bool bIsInFront; + local vector2D AngularDist; + + if ( class(damagetype) != none && class(damageType).default.bLocationalHit ) + { + // Figure out the directional based on the victims current view + GetPC().GetPlayerViewPoint(Loc, Rot); + GetAxes(Rot, AxisX, AxisY, AxisZ); + + ShotDirection = Normal(HitDir - Loc); + bIsInFront = GetAngularDistance( AngularDist, ShotDirection, AxisX, AxisY, AxisZ); + GetAngularDegreesFromRadians(AngularDist); + DirOfHit = AngularDist.X; + + if( bIsInFront ) + { + DirOfHit = AngularDist.X; + if (DirOfHit < 0) + DirOfHit += 360; + } + else + DirOfHit = 180 + AngularDist.X; + } + else + DirOfHit = 180; + + HitLocMC[int(DirOfHit/45.f)].GotoAndPlay("on"); +} + +function ShowMultiKill(int n, string msg) +{ + if (MultiKillN_TF == none) + { + MultiKillN_TF = GetVariableObject("_root.popup.popupNumber.textField"); + MultiKillMsg_TF = GetVariableObject("_root.popup.popupText.textField"); + } + + MultiKillN_TF.SetText(n+1); + MultiKillMsg_TF.SetText(msg); + MultiKillMC.GotoAndPlay("on"); +} + +function SetCenterText(string text) +{ + CenterTextTF.SetText(text); + CenterTextMC.GotoAndPlay("on"); +} + +function string GetRank(PlayerReplicationInfo PRI) +{ + local int i; + local int j; + + i = -10000000; + for (j = 0; j < GRI.PRIArray.length; j++) + { + if (GRI.PRIArray[j].Score > i) + { + i = GRI.PRIArray[j].Score; + } + } + if (PRI.Score >= i && PRI.Score > 0) + return ""; + return ""; +} + +function AddDeathMessage(PlayerReplicationInfo Killer, PlayerReplicationInfo Killed, class Dmg) +{ + local string msg; + local byte index; + + if (Killer != none) + msg = GetRank(Killer) @ Killer.PlayerName; + if ((Dmg!= None) && (Dmg.default.DamageWeaponClass != none) ) + { + // Linkgun used to be InventoryGroup=5 in UT3, so need special case here + index = ClassIsChildOf(Dmg.default.DamageWeaponClass, class'UTWeap_Linkgun') ? 5 : Dmg.default.DamageWeaponClass.default.InventoryGroup; + } + + if ( index < 12 ) + msg @= ""; + else + msg @= ""; + + msg @= GetRank(Killed) @ Killed.PlayerName; + + AddMessage("htmlText", msg); +} + +defaultproperties +{ + bDisplayWithHudOff=FALSE + MinZoomf=16 + MaxZoomf=128 + MessageHeight=38 + MovieInfo=SwfMovie'UDKHud.udk_hud' + bEnableGammaCorrection=false + bDrawWeaponCrosshairs=true + + bAllowInput=FALSE; + bAllowFocus=FALSE; +} diff --git a/Development/Src/UTGame/Classes/GFxProjectedUI.uc b/Development/Src/UTGame/Classes/GFxProjectedUI.uc new file mode 100644 index 00000000..50e23f4e --- /dev/null +++ b/Development/Src/UTGame/Classes/GFxProjectedUI.uc @@ -0,0 +1,780 @@ +/********************************************************************** + +Copyright : Copyright 2006-2007 Scaleform Corp. All Rights Reserved. + +Portions of the integration code is from Epic Games as identified by Perforce annotations. +Copyright 2010 Epic Games, Inc. All rights reserved. + +Licensees may use this file in accordance with the valid Scaleform +Commercial License Agreement provided with the software. + +This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING +THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ANY PURPOSE. + +**********************************************************************/ + +/** + * Implementation of 3D Inventory. + * Related Flash content: udk_inventory.fla + * + * 3D rotation logic can be found toward the end of this file in UpdatePos(). + * + * Certain objects in this Flash file are embedded within a hierarchy of containers. + * This was done to avoid an issue where a MovieClip could not be tweened on the timeline + * after one of its members had been manipulated via ActionScript. The workaround was to create + * a new parent MovieClip and manage it with timeline and original MovieClip with ActionScript. + * This behavior has since been resolved, but artifacts remain in the Flash file and throughout + * this class (see SetupBG()). + */ + +class GFxProjectedUI extends UTGFxTweenableMoviePlayer; + +var GFxObject Root, Window; +var GFxObject MainMC, BackpackMC, ArsenalMC; + +// An array with references to all of the buttons. +var array Buttons; + +struct ItemData +{ + var string ItemInfo; + var string ItemName; + var byte ItemFrame; +}; + +var array Items; + +var GFxObject EquippedWeapon, EquippedWeaponOutline, EquippedWeaponText1, EquippedWeaponText2; + +var bool bArsenalTabFocused; +var GFxObject BackpackTabMC, ArsenalTabMC; +var GFxObject LeftArrow02, LeftArrow01; + +var GFxObject BackgroundMC, CPCLogoMC, StartUpTextMC, BG_LineMC, BG_ArrowMC; +var GFxObject BG_Optic1MC, BG_Optic2MC, BG_Optic3MC, BG_Optic4MC; + +var GFxObject BG_Edge_LeftBottom, BG_Edge_LeftMiddle, BG_Edge_LeftTop, BG_Edge_RightTop, BG_Edge_RightMiddle, BG_Edge_RightBottom; + +var GFxObject InfoMC, InfoIconWeap, InfoIconItem, InfoText, InfoTitle; + +var float Scale; +var float Width, Height; +var float rotval; +var float posX, posY; + +var float rightThreshold, leftThreshold; +var bool bInitialized; + +var class WeaponClass[11]; + +var rotator StartRotation; + +var localized string AcceptString, CancelString; + +function bool Start(optional bool StartPaused = false) +{ + Super.Start(StartPaused); + Advance(0); + + AddCaptureKeys(); + + rotval = 0; + + if (!bInitialized) + { + ConfigureInventory(); + } + + PopulateArsenal(); + UpdateEquippedWeapon(); + + // Play the "open" animation. + BackgroundMC.GotoAndPlay("open"); + + // Set focus so the Movie receives input. + //SetFocus(true, false); + + StartRotation = GetPC().Rotation; + + return true; +} + +function ConfigureInventory() +{ + local float x0, y0, x1, y1; + + Root = GetVariableObject("_root"); + Window = Root.GetObject("inventory"); + MainMC = Window.GetObject("main"); + + SetupInfo(); + + CreateItemData(); + + SetupArsenal(); + SetupArsenalButtons(); + PopulateArsenal(); + UpdateEquippedWeapon(); + + SetupBackpack(); + SetupBackpackButtons(); + PopulateBackpackFake(); + + SetupBorder(); + SetupBG(); + + scale = 1; + GetVisibleFrameRect(x0, y0, x1, y1); + Width = (x1-x0)*20; + Height = (y1-y0)*20; + + // get original translation + Window.GetPosition(posX, posY); + + bInitialized = true; + + // localize strings + GetVariableObject("_root.inventory.main.info.help.help_g.text1").SetText(AcceptString); + GetVariableObject("_root.inventory.main.info.help.help_g.text2").SetText(CancelString); +} + +function AddCaptureKeys() +{ + AddCaptureKey('W'); + AddCaptureKey('A'); + AddCaptureKey('S'); + AddCaptureKey('D'); + AddCaptureKey('Spacebar'); + AddCaptureKey('T'); + AddCaptureKey('R'); + AddCaptureKey('Y'); + AddCaptureKey('X'); + AddCaptureKey('C'); + AddCaptureKey('Q'); + + AddCaptureKey('Gamepad_LeftStick_Left'); + AddCaptureKey('Gamepad_LeftStick_Right'); + AddCaptureKey('Gamepad_LeftStick_Up'); + AddCaptureKey('Gamepad_LeftStick_Down'); + + AddCaptureKey('Gamepad_RightStick_Left'); + AddCaptureKey('Gamepad_RightStick_Right'); + AddCaptureKey('Gamepad_RightStick_Up'); + AddCaptureKey('Gamepad_RightStick_Down'); + + AddCaptureKey('XboxTypeS_DPad_Left'); + AddCaptureKey('XboxTypeS_DPad_Right'); + AddCaptureKey('XboxTypeS_DPad_Up'); + AddCaptureKey('XboxTypeS_DPad_Down'); + + AddCaptureKey('XboxTypeS_A'); + AddCaptureKey('XboxTypeS_B'); + AddCaptureKey('XboxTypeS_Y'); + AddCaptureKey('XboxTypeS_X'); + + AddCaptureKey('1'); + AddCaptureKey('2'); + AddCaptureKey('3'); + AddCaptureKey('4'); + AddCaptureKey('5'); + AddCaptureKey('6'); + AddCaptureKey('7'); + AddCaptureKey('8'); + AddCaptureKey('9'); + + AddCaptureKey('Up'); + AddCaptureKey('Down'); + AddCaptureKey('Left'); + AddCaptureKey('Right'); + AddCaptureKey('Enter'); +} + +/* + * Starts inventory's the "close" animation. + */ +function StartCloseAnimation() +{ + BackgroundMC.GotoAndPlay("close"); +} + +/* + * Event handler for when the "close" animation is complete. + * Fired from Flash. + */ +function OnCloseAnimComplete() +{ + UTGFxHudWrapper(GetPC().myHUD).CompleteCloseInventory(); +} + +/* + * Setup the background and cache references to MovieClips + * for reuse. + */ +function SetupBG() +{ + BackgroundMC = GetVariableObject("_root.inventory.bg"); + CPCLogoMC = GetVariableObject("_root.inventory.bg.cpc"); + StartUpTextMC = GetVariableObject("_root.inventory.bg.startup_text"); + + // Note the troublesome hierarchy of containers to allow Z tweening while animating on the Timeline. + // Again, this is now unnecessary. + BG_Optic1MC = BackgroundMC.GetObject("bg_optic1").GetObject("bg_optic1_g").GetObject("bg_optic1_gg"); + BG_Optic2MC = GetVariableObject("_root.inventory.bg.bg_optic2.bg_optic2_g"); + BG_Optic3MC = BackgroundMC.GetObject("bg_optic3").GetObject("bg_optic3_g").GetObject("bg_optic3_gg"); + BG_Optic4MC = BackgroundMC.GetObject("bg_optic4").GetObject("bg_optic4_g").GetObject("bg_optic4_gg"); + + BG_Edge_LeftTop = BackgroundMC.GetObject("bg_edge1"); + BG_Edge_LeftMiddle = GetVariableObject("_root.inventory.bg.bg_edge2.bg_edge_g"); + BG_Edge_LeftBottom = BackgroundMC.GetObject("bg_edge3"); + BG_Edge_RightTop = BackgroundMC.GetObject("bg_edge4"); + BG_Edge_RightMiddle = GetVariableObject("_root.inventory.bg.bg_edge5.bg_edge_g"); + BG_Edge_RightBottom = BackgroundMC.GetObject("bg_edge6"); + + BG_LineMC = GetVariableObject("_root.inventory.bg.bg_line"); + BG_ArrowMC = GetVariableObject("_root.inventory.bg.bg_arrow"); + + BackgroundMC.SetFloat("_z", 1500.0f); + + BG_Edge_RightMiddle.SetFloat("_z", (-200.0f)); + BG_Edge_LeftMiddle.SetFloat("_z", (-200.0f)); + + TweenTurbines(true); + + BG_LineMC.SetFloat("_z", -200.0f); + BG_ArrowMC.SetFloat("_z", -200.0f); +} + +function SetupBorder() +{ + BackpackTabMC = BackpackMC.GetObject("tab2_mc"); + ArsenalTabMC = ArsenalMC.GetObject("tab1_mc"); + + LeftArrow01 = GetVariableObject("_root.inventory.main.left.left_arrow1"); + LeftArrow02 = GetVariableObject("_root.inventory.main.left.left_arrow2"); +} + +/* + * Setup the "Arsenal" section of the inventory. This is the top third of + * the menu. Also caches references to each button and its subcomponents for reuse. + */ +function SetupArsenal() +{ + local int i; + + ArsenalMC = MainMC.GetObject("arsenal"); + + // Setup icon, background, text for buttons. + for (i = 0; i < 10; i++) + { + Buttons[i] = GFxUI_InventoryButton(ArsenalMC.GetObject("weapon_btn"$(i+1), class'GFxUI_InventoryButton')); + Buttons[i].GetObject("weapon_black_icon").GetObject("weapon_black").GotoAndStopI((i+2)); // weapon outlines. + + // store the weapon icon movieclip, but set it to false for the time being. + // it will be set to visible later if the player has the weapon in their inventory + Buttons[i].SetIconMC(Buttons[i].GetObject("weapon_icon")); + Buttons[i].IconMC.SetVisible(false); + + // store an index in the button so we can know which button was interacted with when necessary. + Buttons[i].SetFloat("data", (i+1)); + + // setup the text at the top right of the arsenal buttons. + if (i < 9) + Buttons[i].GetObject("textField").GetObject("textField").SetText("0"$(i+1)); + else // Handle the last case (10) + Buttons[i].GetObject("textField").GetObject("textField").SetText("10"); + } + + // Setup equipped weapons + EquippedWeaponOutline = ArsenalMC.GetObject("equipped"); + EquippedWeapon = EquippedWeaponOutline.GetObject("equipped_weapon").GetObject("equipped_weapon_g"); + EquippedWeaponText1 = EquippedWeaponOutline.GetObject("equipped_text2").GetObject("textField"); + EquippedWeaponText2 = EquippedWeaponOutline.GetObject("equipped_text1").GetObject("textField"); +} + +/* + * Setup the "Backpack" section of the inventory. This is the middle third of + * the menu. Also caches references to each button and its subcomponents for reuse. + */ +function SetupBackpack() +{ + local byte i; + + BackpackMC = MainMC.GetObject("backpack"); + + // Setup icon, background, text for buttons. + for (i = 10; i < 20; i++) + { + // the explicit cast and class parameter are both necessary here. + Buttons[i] = GFxUI_InventoryButton( BackpackMC.GetObject( "item_btn"$(i-9) , class'GFxUI_InventoryButton')); + Buttons[i].SetIconMC(Buttons[i].GetObject("item").GetObject("item_g")); + Buttons[i].IconMC.SetVisible(false); + Buttons[i].SetFloat("data", (i+1)); + } +} + +/* + * Sets up the Information section of the inventory. This is the bottom most third. + */ +function SetupInfo() +{ + InfoMC = GetVariableObject("_root.inventory.main.info.info_mc.info_mc_g"); + InfoIconWeap = InfoMC.GetObject("weapon"); + InfoIconItem = InfoMC.GetObject("item"); + InfoText = InfoMC.GetObject("info_text").GetObject("textField"); + InfoTitle = InfoMC.GetObject("info_title").GetObject("textField"); +} + +/* + * Populates the Backpack with 3 fake items. + */ +function PopulateBackpackFake() +{ + local byte i; + + for (i = 10; i < 13; i++) + { + Buttons[i].IconMC.GotoAndStopI(i+2); + Buttons[i].IconMC.SetVisible(true); + Buttons[i].AddEventListener('CLIK_click', OnClickFakeItem); + } +} + +/* + * Setup EventListeners for interaction with Arsenal buttons. + */ +function SetupArsenalButtons() +{ + local byte i; + + for (i = 0; i < 10; i++) + { + Buttons[i].AddEventListener('CLIK_focusIn', OnFocusArsenalTab); + Buttons[i].AddEventListener('CLIK_click', OnClickWeaponButton); + Buttons[i].AddEventListener('CLIK_focusIn', OnFocusUpdateInfo); + } +} + +/* + * Setup EventListeners for interaction with Backpack buttons. + */ +function SetupBackpackButtons() +{ + local int i; + + for (i = 10; i < 20; i++) + { + Buttons[i].AddEventListener('CLIK_focusIn', OnFocusBackpackTab); + Buttons[i].AddEventListener('CLIK_focusIn', OnFocusUpdateInfo); + } +} + +/* + * EventListener for Arsenal button press. + * Informs the controller that the player has equipped + * a new weapon. + */ +function SwitchWeapon(byte index) +{ + UTPlayerController(GetPC()).SwitchWeapon(index); +} + +/* + * EventListener for when button gains focus. + * Initializes the "floating" Z tween on the button's icon, + * assuming it is visible. + */ +function OnFocusInSelection(GFxClikWidget.EventData ev) +{ + local byte data; + data = ev.target.GetFloat("data") - 1; + + if (Buttons[data].IconMC.GetBool("_visible")) + FloatSelectionUp(Buttons[data].IconMC); +} + +/* + * EventListener for when a button has lost focus. + * Removes any existing tweens on MovieClip(generally, the "floating" Z-tween). + */ +function OnFocusOutSelection(GFxClikWidget.EventData ev) +{ + local byte index; + index = ev.target.GetFloat("data")-1; + + ClearsTweensOnMovieClip(Buttons[index].IconMC); +} + +/* + * EventListener for when a button in the Arsenal has been + * clicked. + */ +function OnClickWeaponButton(GFxClikWidget.EventData ev) +{ + local int index; + + index = ev.target.GetFloat("data"); + + if ( (index >= 0) && (WeaponClass[index] != None) ) + { + UTPawn(GetPC().Pawn).SwitchWeapon(index); + + // Uses FakeUpdateEquippedWeapon because weapon change doesn't actually occur until the inventory is closed. + FakeUpdateEquippedWeapon(index); + } +} + +/* + * EventListener for when a button gains focus. + * If an item in this button slot exists in the player's inventory, + * it will populate the information portion of the inventory menu. + */ +function OnFocusUpdateInfo(GFxClikWidget.EventData ev) +{ + local int buttonIndex; + + buttonIndex = ev.target.GetFloat("data"); + + if (Buttons[buttonIndex-1].IconMC.GetBool("_visible")) + SetInfo(buttonIndex); + else + SetInfo(-1); +} + +/* + * EventListener for when the Arsenal tab gains focus. + * Tweens the Arsenal tab forward and the Backpack tab backward. + */ +function OnFocusArsenalTab(GFxClikWidget.EventData ev) +{ + // Check to ensure an update is necessary. + if (!bArsenalTabFocused) + { + ArsenalTabMC.GotoAndPlay("on"); // Highlight the Arsenal tab at right. + BackpackTabMC.GotoAndPlay("off"); + + LeftArrow01.GotoAndPlay("on"); // Highlight Arsenal arrow. + LeftArrow02.GotoAndPlay("off"); + + ClearsTweensOnMovieClip(ArsenalMC, false); + ClearsTweensOnMovieClip(BackpackMC, false); + TweenTo(ArsenalMC, 0.5, "_z", -1500.0, TWEEN_EaseOut, ""); + TweenTo(BackpackMC, 0.5, "_z", 0.0, TWEEN_EaseOut, ""); + + bArsenalTabFocused = true; + } +} + +/* + * EventListener for when the Backpack tab gains focus. + * Tweens the Backpack tab forward and the Rasenal tab backward. + */ +function OnFocusBackpackTab(GFxClikWidget.EventData ev) +{ + // Check to ensure an update is necessary. + if (bArsenalTabFocused) + { + ArsenalTabMC.GotoAndPlay("off"); + BackpackTabMC.GotoAndPlay("on"); // Highlight the Backpack tab at right. + + LeftArrow01.GotoAndPlay("off"); // Highlight Backpack arrow. + LeftArrow02.GotoAndPlay("on"); + + ClearsTweensOnMovieClip(ArsenalMC, false); + ClearsTweensOnMovieClip(BackpackMC, false); + TweenTo(ArsenalMC, 0.5, "_z", 0.0, TWEEN_EaseOut, ""); + TweenTo(BackpackMC, 0.5, "_z", -1500.0, TWEEN_EaseOut, ""); + + bArsenalTabFocused = false; + } +} + + +/* + * Fake actions for when the fake items are used. + */ +function OnClickFakeItem(GFxClikWidget.EventData ev) +{ + local UTPawn P; + + switch(ev.target.GetFloat("data")) + { + case(11): + GetPC().Pawn.Health = GetPC().Pawn.HealthMax;; + return; + break; + case(12): + P = UTPawn(GetPC().Pawn); + if ( P != None ) + { + P.PlayEmote('UseArmor', -1); + P.VestArmor = Max(50, P.VestArmor); + } + return; + break; + default: + break; + } +} + +/* + * Set the data for the information section of the inventory. + */ +function SetInfo(int index) +{ + local string OldText; + OldText = InfoText.GetText(); + + if (index < 0) + { + if (OldText != "") + { + InfoMC.GotoAndPlay("off"); + InfoIconWeap.GotoAndStopI(0); + InfoText.SetText(""); + InfoTitle.SetText(""); + } + } + else + { + InfoMC.GotoAndPlay("on"); + if ( Items.Length >= index ) + { + InfoIconWeap.GotoAndStopI(Items[index-1].ItemFrame); + InfoText.SetText(Items[index-1].ItemInfo); + InfoTitle.SetText(Items[index-1].ItemName); + } + } +} + +/* + * Populate the Arsenal with the player's inventory of weapons. + */ +function PopulateArsenal() +{ + local byte i; + + if ( GetPC().Pawn != None ) + { + for (i = 0; i < 9; i++) + { + if ( (WeaponClass[i+1] != None) && (GetPC().Pawn.FindInventoryType(WeaponClass[i+1], true) != None) ) + { + Buttons[i].IconMC.SetVisible(true); + Buttons[i].IconMC.GotoAndStopI((i+2)); + Buttons[i].SetFloat("data", (i+1)); + } + } + } +} + +/* + * Update the currently equipped weapon section of the + * inventory menu. Plays a short animation and updates + * text throughout the menu. Fired by the PlayerController + * when SetCurrentWeapon is called. + * + * This FakeUpdate is used in place of the real update + * because the current implementation of the inventory + * makes it impossible for the player to change their weapon + * within the menu (it is done when the menu is closed). + */ +function FakeUpdateEquippedWeapon(int index) +{ + local string CurrentWeaponString; + CurrentWeaponString = string(index); + + if (index < 10) + CurrentWeaponString = "0"$CurrentWeaponString; + + EquippedWeapon.GotoAndStopI(index+1); // Change the weapon icon. + EquippedWeaponOutline.GotoAndPlay("equipped"); // Red hexagon outline animation. + EquippedWeaponText1.SetText(CurrentWeaponString); + EquippedWeaponText2.SetText(CurrentWeaponString); +} + +/* + * --- UNUSED --- + * + * Update the currently equipped weapon section of the + * inventory menu. Plays a short animation and updates + * text throughout the menu. + */ +function UpdateEquippedWeapon() +{ + local byte CurrentWeapon; + local string CurrentWeaponString; + + CurrentWeapon = UTWeapon(GetPC().Pawn.Weapon).InventoryGroup; + CurrentWeaponString = string(CurrentWeapon); + + if (CurrentWeapon < 10) + CurrentWeaponString = "0"$CurrentWeaponString; + + EquippedWeapon.GotoAndStopI(CurrentWeapon+1); + EquippedWeaponText1.SetText(CurrentWeaponString); + EquippedWeaponText2.SetText(CurrentWeaponString); +} + + +/* + * Implementation of ProcessTweenCallback. Inherited from UTGFxTweenableMoviePlayer + * (basic workaround for lack of multiple inheritance). + * + * Callbacks are fired by the TweenManager. The TargetMC is target MovieClip + * of the Tween that just finished. See UTGFxTweenableMoviePlayer + * for more information. + */ +function ProcessTweenCallback(String Callback, GFxObject TargetMC) +{ + switch(Callback) + { + case ("TweenTurbines1"): + TweenTurbines(true); + break; + case ("TweenTurbines2"): + TweenTurbines(false); + break; + case ("ContinueFloatCheck"): + FloatSelectionUp(TargetMC); + break; + case ("FloatSelectionDown"): + FloatSelectionDown(TargetMC); + break; + default: + break; + } +} + +/* + * Tween callback: + * Tween the background turbines back and forth. + */ +function TweenTurbines(bool toggle) +{ + if (toggle) + { + TweenTo( BG_Optic1MC, 11.0, "_z", -1000, TWEEN_EaseOut, "TweenTurbines2" ); + TweenTo( BG_Optic3MC, 10.0, "_z", -2000, TWEEN_EaseOut, "" ); + TweenTo( BG_Optic4MC, 10.0, "_z", 2000, TWEEN_EaseOut, "" ); + } + else + { + TweenTo( BG_Optic1MC, 11.0, "_z", 1000, TWEEN_EaseOut, "TweenTurbines1" ); + TweenTo( BG_Optic3MC, 10.0, "_z", 2000, TWEEN_EaseOut, "" ); + TweenTo( BG_Optic4MC, 10.0, "_z", -2000, TWEEN_EaseOut, "" ); + } +} + +/* + * Tween callback: + * Tween target MovieClip upward on the Z. + * Used on selected items in the backpack and the arsenal. + */ +function FloatSelectionUp(GFxObject ButtonIconMC) +{ + TweenTo( ButtonIconMC, 1.0, "_z", (-600 * 4.0), TWEEN_Linear, "FloatSelectionDown"); +} + +/* + * Tween callback: + * Tween target MovieClip downward on the Z. + * Used on selected items in the backpack and the arsenal. + */ +function FloatSelectionDown(GFxObject ButtonIconMC) +{ + TweenTo( ButtonIconMC, 1.0, "_z", (-600 * 3.5), TWEEN_Linear, "ContinueFloatCheck"); +} + +function UpdatePos() +{ + local float yawRadian; + local float pitchRadian; + local matrix mYaw, mTranslate, mPitch, mFinal; + + // Create identity matrix. + mTranslate.XPlane.X = 1; + mTranslate.YPlane.Y = 1; + mTranslate.ZPlane.Z = 1; + mTranslate.WPlane.W = 1; + + // Initialize all matrices to identity + mYaw = mTranslate; + mPitch = mTranslate; + + // Apply original translation + mTranslate.WPlane.X = posX; + mTranslate.WPlane.Y = posY; + + // compute rotation + yawRadian = -((16384 + ((GetPC().Rotation.Yaw /*- 5000*/) - StartRotation.Yaw)) & 65535) * (Pi/32768.0); + yawRadian -= (3*1.57079633); + + pitchRadian = -((16384 + (GetPC().Rotation.Pitch - StartRotation.Pitch)) & 65535) * (Pi/32768.0); + pitchRadian -= (3*1.57079633); + + // Rotate about the Y + mYaw.XPlane.X = cos(yawRadian) * Scale; + mYaw.XPlane.Z = -sin(yawRadian) * Scale; + + mYaw.ZPlane.X = sin(yawRadian) * Scale; + mYaw.ZPlane.Z = cos(yawRadian) * Scale; + + // Rotate about the X + mPitch.YPlane.Y = cos(pitchRadian) * Scale; + mPitch.YPlane.Z = sin(pitchRadian) * Scale; + + mPitch.ZPlane.Y = -sin(pitchRadian) * Scale; + mPitch.ZPlane.Z = cos(pitchRadian) * Scale; + + mFinal = mYaw * mPitch * mTranslate; + + Window.SetDisplayMatrix3D(mFinal); +} + +function CreateItemData() +{ + local byte i; + local ItemData data; + + for ( i=0; i<10; i++ ) + { + if ( WeaponClass[i+1] != None ) + { + data.ItemName = WeaponClass[i+1].default.ItemName; + data.ItemInfo = WeaponClass[i+1].default.UseHintString; + } + data.ItemFrame = i+2; + Items[i] = data; + } + + data.ItemName = class'UTHealthPickupFactory'.default.PickupMessage; + data.ItemInfo = class'UTHealthPickupFactory'.default.UseHintMessage; + data.ItemFrame = 12; + Items[10] = data; + + data.ItemName = class'UTArmorPickupFactory'.default.PickupMessage; + data.ItemInfo = class'UTArmorPickupFactory'.default.UseHintMessage; + data.ItemFrame = 13; + Items[11] = data; + + data.ItemName = "DAMAGE AMPLIFIER"; + data.ItemInfo = "Amplifies the user's damage by 4x. Use with caution."; + data.ItemFrame = 14; + Items[12] = data; +} + +defaultproperties +{ + bIgnoreMouseInput=TRUE + bEnableGammaCorrection = FALSE + rightThreshold = -10.9 + leftThreshold = -8.34 + bArsenalTabFocused = TRUE + bDisplayWithHudOff = TRUE + bInitialized = FALSE + MovieInfo=SwfMovie'UDKHUD.udk_inventory' + + WeaponClass(1)=class'UTWeap_LinkGun' + WeaponClass(4)=class'UTWeap_ShockRifleBase' + WeaponClass(8)=class'UTWeap_RocketLauncher' +} \ No newline at end of file diff --git a/Development/Src/UTGame/Classes/GFxUDKFrontEnd.uc b/Development/Src/UTGame/Classes/GFxUDKFrontEnd.uc new file mode 100644 index 00000000..63e382ae --- /dev/null +++ b/Development/Src/UTGame/Classes/GFxUDKFrontEnd.uc @@ -0,0 +1,792 @@ +/********************************************************************** + +Filename : GFxUDKFrontEnd.uc +Content : GFx-UDK Front End Implementaiton + +Copyright : (c) 2010 Scaleform Corp. All Rights Reserved. + +Notes : A manager for the UDK's front end menu. This class loads + all of the menu views as MovieClips into itself using + attachMovie() and loadMovie(). The data for the views + defined in DefaultUI.ini. + + All loaded views contain a reference to this class for general + menu functionality including pushing/popping views, spawning dialogs, + setting focus, and setting Escape/Back key press events. + + There is an ActionScript class associated with this manager: + MenuManager.as. That class contains logic for animating views + and utilizing necessary GFx AS extensions (eg. Selection["modalClip"]). + + Associated Flash content: udk_manager.fla + +Licensees may use this file in accordance with the valid Scaleform +Commercial License Agreement provided with the software. + +This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING +THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ANY PURPOSE. + +**********************************************************************/ +class GFxUDKFrontEnd extends GFxMoviePlayer + config(UI); + +/** Reference to _root of the movie's (udk_manager.swf) stage. */ +var GFxObject RootMC; + +/** Reference to the manager MovieClip (_root.manager) where views will be attached. */ +var GFxObject ManagerMC; + +var bool bInitialized; + +/** View declarations. */ +var GFxUDKFrontEnd_MainMenu MainMenuView; + +var GFxUDKFrontEnd_InstantAction InstantActionView; + +var GFxUDKFrontEnd_Multiplayer MultiplayerView; + +var GFxUDKFrontEnd_HostGame HostGameView; + +var GFxUDKFrontEnd_MapSelect MapSelectView; + +var GFxUDKFrontEnd_GameMode GameModeView; + +var GFxUDKFrontEnd_Mutators MutatorsView; + +var GFxUDKFrontEnd_Settings SettingsView; + +var GFxUDKFrontEnd_ServerSettings ServerSettingsView; + +var GFxUDKFrontEnd_JoinGame JoinGameView; + +var GFxUDKFrontEnd_InfoDialog InfoDialog; + +var GFxUDKFrontEnd_FilterDialog FilterDialog; + +var GFxUDKFrontEnd_JoinDialog JoinDialog; + +var GFxUDKFrontEnd_ErrorDialog ErrorDialog; + +var GFxUDKFrontEnd_PasswordDialog PasswordDialog; + +/** Structure which defines a unique menu view to be loaded. */ +struct ViewInfo +{ + /** Unique string. */ + var name ViewName; + + /** SWF content to be loaded. */ + var string SWFName; + + /** Dependant views that should be loaded if this view is displayed. */ + var array DependantViews; +}; + +/** Array of all menu views to be loaded, defined in DefaultUI.ini. */ +var config array ViewData; + +/** + * Shadow of the AS view stack. Necessary to update ( View.OnTopMostView(false) ) views that + * alreday exist on the stack. + */ +var array ViewStack; + +/** + * An array of names of views which have been attachMovie()'d and loadMovie()'d. Views + * are loaded based on their DependantViews array, defined in Default.ini. + */ +var array LoadedViews; + +/** + * A delegate for Escape/Back key press which will generally move the user backward + * through the menu or select "Cancel". + */ +delegate EscapeDelegate(); + +function bool Start(optional bool StartPaused = false) +{ + super.Start(); + Advance(0); + + if (!bInitialized) + { + ConfigFrontEnd(); + } + + // @todo sf: Stops the game running the background from ending. We should set the Kismet level up + // properly rather than use pause instead. + ConsoleCommand("pause"); + + if (class'WorldInfo'.static.IsConsoleBuild(CONSOLE_XBox360) || class'WorldInfo'.static.IsConsoleBuild(CONSOLE_PS3)) + { + ASShowCursor(false); + } + + LoadViews(); + return TRUE; +} + +/** + * Configuration method which stores references to _root and + * _root.manager for use in attaching views. + */ +final function ConfigFrontEnd() +{ + RootMC = GetVariableObject("_root"); + ManagerMC = RootMC.GetObject("manager"); + + bInitialized = TRUE; +} + +/** + * Creates MovieClips in ManagerMC into which the views are loaded. These MovieClips + * are then stored in MenuViews for later manipulation. + */ +final function LoadViews() +{ + local byte i; + for (i = 0; i < ViewData.Length; i++) + { + LoadView( ViewData[i] ); + } +} + +/** + * Create a view using existing ViewInfo. + * + * @param InViewInfo, the data for the view which includes the SWFName and the name for the view. + */ +final function LoadView(ViewInfo InViewInfo) +{ + local ASValue asval; + local array args; + local GFxObject ViewContainer, ViewLoader; + + ViewContainer = ManagerMC.CreateEmptyMovieClip( String(InViewInfo.ViewName) $ "Container" ); + ViewLoader = ViewContainer.CreateEmptyMovieClip( String(InViewInfo.ViewName) ); + + asval.Type = AS_String; + asval.s = InViewInfo.SWFName; + args[0] = asval; + + ViewContainer.SetVisible( false ); + ViewLoader.Invoke( "loadMovie", args ); + LoadedViews.AddItem( InViewInfo.ViewName ); +} + +/** + * Loads a view using the view name. Used for loading views based on the current screen. + * Views that should be loaded for each screen are defined in DefaultUI.ini. + * + * @param InViewName The name of the view to be loaded. + */ +final function LoadViewByName( name InViewName ) +{ + local byte i; + for( i = 0; i < ViewData.Length; i++ ) + { + // Find the view data by the view name and check that it is not already loaded. + if ( ViewData[i].ViewName == InViewName && !IsViewLoaded(InViewName) ) + { + // Load the view. + LoadView( ViewData[i] ); + } + } +} + +/** + * Checks whether a view has already been loaded using the view name. + * + * @param InViewName The name of the view to check. + */ +final function bool IsViewLoaded( name InViewName ) +{ + local byte i; + for( i = 0; i < ViewData.Length; i++ ) + { + // Check if the view has already been loaded using the view name. + if ( LoadedViews[i] == InViewName ) + { + return TRUE; + } + } + return FALSE; +} + +/** + * Used by views to set the function triggered by "escape" input. + * + * @param InDelegate The EscapeDelegate that should be called on Escape/Cancel key press. + */ +final function SetEscapeDelegate( delegate InDelegate ) +{ + local GFxObject _global; + _global = GetVariableObject("_global"); + ActionScriptSetFunction(_global, "OnEscapeKeyPress"); +} + +/** + * Pushes a view onto MenuManager.as's view stack by name. + * This is the primarily method by which views on the stack notify the + * GFxUDKFrontEnd that the state of the stack needs to be updated. + */ +final function PushViewByName(name TargetViewName, optional GFxUDKFrontEnd_Screen ParentView) +{ + `log( "GFxUDKFrontEnd::PushViewByName(" @ string(TargetViewName) @ ")",,'DevUI'); + switch (TargetViewName) + { + case ( 'InstantAction' ): + ConfigureTargetView( InstantActionView ); + break; + case ( 'Multiplayer' ): + ConfigureTargetView( MultiplayerView ); + break; + case ( 'GameMode' ): + ConfigureTargetView( GameModeView ); + break; + case ( 'MapSelect' ): + ConfigureTargetView( MapSelectView ); + break; + case ( 'Settings' ): + ConfigureTargetView( SettingsView ); + break; + case ( 'Mutators' ): + ConfigureTargetView( MutatorsView ); + break; + case ( 'HostGame' ): + ConfigureTargetView( HostGameView ); + break; + case ( 'ServerSettings' ): + ConfigureTargetView( ServerSettingsView ); + break; + case ( 'JoinGame' ): + ConfigureTargetView( JoinGameView ); + break; + default: + `log( "View ["$TargetViewName$"] not found." ,,'DevUI'); + break; + } +} + +/** + * Configures a dialog and pushes it on to the view stack. + * Returns a reference to the dialog which can be manipulated to the view which spawned it. + */ +function GFxUDKFrontEnd_Dialog SpawnDialog(name TargetDialogName, optional GFxUDKFrontEnd_Screen ParentView) +{ + `log( "GFxUDKFrontEnd::SpawnDialog(" @ string(TargetDialogName) @ ")" ,,'DevUI'); + switch ( TargetDialogName ) + { + case ( 'InfoDialog' ): + ConfigureTargetDialog( InfoDialog ); + return InfoDialog; + case ( 'JoinDialog' ): + ConfigureTargetDialog( JoinDialog ); + return JoinDialog; + case ( 'FilterDialog' ): + ConfigureTargetDialog( FilterDialog ); + return FilterDialog; + case ( 'ErrorDialog' ): + ConfigureTargetDialog( ErrorDialog ); + return ErrorDialog; + case ( 'PasswordDialog' ): + ConfigureTargetDialog( PasswordDialog ); + return PasswordDialog; + default: + `log( "Dialog ["$TargetDialogName$"] not found." ,,'DevUI'); + return none; + } +} + +/** + * Activates, updates, and pushes a dialog on the stack. + * This method is called when a dialog is created by name using SpawnDialog(). + */ +function ConfigureTargetDialog(coerce GFxUDKFrontEnd_View TargetDialog) +{ + if (TargetDialog != none) + { + if (ViewStack.Length > 0) + { + ViewStack[ViewStack.Length - 1].DisableSubComponents(true); + } + + TargetDialog.OnViewActivated(); + TargetDialog.OnTopMostView( true ); + + ViewStack.AddItem( TargetDialog ); + PushDialogView( TargetDialog ); + } + else + { + `log( "GFxUDKFrontEnd::ConfigureTargetDialog: TargetDialog is none. Unable to push view." ,,'DevUI'); + } +} + +/** + * Activates, updates, and pushes a view on the stack if it is allowed. + * This method is called when a view is created by name using PushViewByName(). + */ +function ConfigureTargetView(GFxUDKFrontEnd_View TargetView) +{ + if( IsViewAllowed( TargetView ) ) + { + // LoadDependantViews( TargetView.ViewName ); + // Disable the current top most view's controls to prevent focus from escaping during the transition. + if (ViewStack.Length > 0) + { + ViewStack[ViewStack.Length - 1].DisableSubComponents(true); + } + + TargetView.OnViewActivated(); + TargetView.OnTopMostView( true ); + + ViewStack.AddItem( TargetView ); + PushView( TargetView ); + } +} + +/** Check whether target view is appropriate to add to the view stack. */ +function bool IsViewAllowed(GFxUDKFrontEnd_View TargetView) +{ + local byte i; + local name TargetViewName; + + // Check to see that we weren't passed a null view. + if ( TargetView == none ) + { + `log( "GFxUDKFrontEnd:: TargetView is null. Unable to push view onto stack." ,,'DevUI'); + return false; + } + + // Check to see if the view is already loaded on the view stack using the view name. + TargetViewName = TargetView.ViewName; + for ( i = 0; i < ViewStack.Length; i++ ) + { + if (ViewStack[i].ViewName == TargetViewName) + { + `log( "GFxFrontEnd:: TargetView is already on the stack." ,,'DevUI'); + return false; + } + } + + return true; +} + +/** Pushes a view onto MenuManager.as view stack. */ +function PushView(coerce GFxUDKFrontEnd_View targetView) +{ + ActionScriptVoid("pushStandardView"); +} + +/** AS stub for pushing a view onto the stack. */ +function PushDialogView(coerce GFxUDKFrontEnd_View dialogView) +{ + ActionScriptVoid("pushDialogView"); +} + +/** Gives focus to a particular GFxObject. */ +function SetSelectionFocus(coerce GFxObject MovieClip) +{ + if (MovieClip != none) + { + ASSetSelectionFocus(MovieClip); + } +} + +/** AS stub for access to Selection.setFocus() via SetSelectionFocus(). */ +function ASSetSelectionFocus(GFxObject MovieClip) +{ + ActionScriptVoid("setSelectionFocus"); +} + +/** Pops a view from the view stack and handles update/close of existing views. */ +function GFxObject PopView() +{ + if ( ViewStack.Length <= 1 ) + { + return none; + } + + // Call OnViewClosed() for the popped view. + // Generally, this will disable the view's list to prevent accidental mouse rollOvers that cause + // focus to change undesirably as the view is tweened out. + ViewStack[ViewStack.Length-1].OnViewClosed(); + + // DestroyDependantViews( ViewStack[ViewStack.Length - 1].ViewName ); + + // Remove the view from the stack in US so we know what's still on top. + ViewStack.Remove(ViewStack.Length-1, 1); + + // Update the new top most view. + ViewStack[ViewStack.Length-1].OnTopMostView( false ); + + return PopViewStub(); +} + +/** Pops a view from the MenuManager.as view stack. */ +final function GFxObject PopViewStub() { return ActionScriptObject("popView"); } + +/** Updates the layout of all views in MenuManager.as view stack. */ +final function UpdateViewLayout() +{ + ActionScriptVoid("updateViewLayout"); +} + +final function ConfigureView(GFxUDKFrontEnd_View InView, name WidgetName, name WidgetPath) +{ + SetWidgetPathBinding(InView, WidgetPath); + InView.MenuManager = self; + InView.ViewName = WidgetName; + InView.OnViewLoaded(); +} + +final function ASShowCursor(bool bShowCursor) +{ + ActionScriptVoid("showCursor"); +} + +/** Callback when at least one CLIK widget with enableInitCallback set to TRUE has been initialized in a frame */ +function PostWidgetInit() +{ + // +} + +/** @return Checks to see if the platform is currently connected to a network. */ +function bool CheckLinkConnectionAndError( optional string AlternateTitle, optional string AlternateMessage ) +{ + local GFxUDKFrontEnd_ErrorDialog Dialog; + local bool bResult; + + if( class'GFxUIView'.static.HasLinkConnection() ) + { + bResult = true; + } + else + { + if ( AlternateTitle == "" ) + { + AlternateTitle = ""; + } + if ( AlternateMessage == "" ) + { + AlternateMessage = ""; + } + + Dialog = GFxUDKFrontEnd_ErrorDialog(SpawnDialog('ErrorDialog')); + Dialog.SetTitle(AlternateTitle); + Dialog.SetInfo(AlternateMessage); + bResult = false; + } + + return bResult; +} + +/** + * Callback when a CLIK widget with enableInitCallback set to TRUE is initialized. + * Returns TRUE if the widget was handled, FALSE if not. + */ +event bool WidgetInitialized(name WidgetName, name WidgetPath, GFxObject Widget) +{ + local bool bResult; + bResult = false; + + //`log( "GFxUDKFrontEnd::WidgetInit: " @ WidgetName @ " : " @ WidgetPath @ " : " @ Widget ,,'DevUI'); + switch(WidgetName) + { + case ('MainMenu'): + if (MainMenuView == none) + { + MainMenuView = GFxUDKFrontEnd_MainMenu(Widget); + ConfigureView(MainMenuView, WidgetName, WidgetPath); + + // Currently here because need to ensure MainMenuView has loaded. + ConfigureTargetView(MainMenuView); + bResult = true; + } + break; + case ('InstantAction'): + if (InstantActionView == none) + { + InstantActionView = GFxUDKFrontEnd_InstantAction(Widget); + ConfigureView(InstantActionView, WidgetName, WidgetPath); + bResult = true; + } + break; + case ('MapSelect'): + if (MapSelectView == none) + { + MapSelectView = GFxUDKFrontEnd_MapSelect(Widget); + ConfigureView(MapSelectView, WidgetName, WidgetPath); + bResult = true; + } + break; + case ('GameMode'): + if (GameModeView == none) + { + GameModeView = GFxUDKFrontEnd_GameMode(Widget); + ConfigureView(GameModeView, WidgetName, WidgetPath); + bResult = true; + } + break; + case ('Mutators'): + if (MutatorsView == none) + { + MutatorsView = GFxUDKFrontEnd_Mutators(Widget); + ConfigureView(MutatorsView, WidgetName, WidgetPath); + bResult = true; + } + break; + case ('Settings'): + if (SettingsView == none) + { + SettingsView = GFxUDKFrontEnd_Settings(Widget); + ConfigureView(SettingsView, WidgetName, WidgetPath); + bResult = true; + } + break; + case ('ServerSettings'): + if (ServerSettingsView == none) + { + ServerSettingsView = GFxUDKFrontEnd_ServerSettings(Widget); + ConfigureView(ServerSettingsView, WidgetName, WidgetPath); + bResult = true; + } + break; + case ('HostGame'): + if (HostGameView == none) + { + HostGameView = GFxUDKFrontEnd_HostGame(Widget); + ConfigureView(HostGameView, WidgetName, WidgetPath); + bResult = true; + } + break; + case ('Multiplayer'): + if (MultiplayerView == none) + { + MultiplayerView = GFxUDKFrontEnd_Multiplayer(Widget); + ConfigureView(MultiplayerView, WidgetName, WidgetPath); + bResult = true; + } + break; + case ('JoinGame'): + if (JoinGameView == none) + { + JoinGameView = GFxUDKFrontEnd_JoinGame(Widget); + ConfigureView(JoinGameView, WidgetName, WidgetPath); + bResult = true; + } + break; + case ('InfoDialog'): + if (InfoDialog == none) + { + InfoDialog = GFxUDKFrontEnd_InfoDialog(Widget); + ConfigureView(InfoDialog, WidgetName, WidgetPath); + bResult = true; + } + break; + case ('JoinDialog'): + if (JoinDialog == none) + { + JoinDialog = GFxUDKFrontEnd_JoinDialog(Widget); + ConfigureView(JoinDialog, WidgetName, WidgetPath); + bResult = true; + } + break; + case ('FilterDialog'): + if (FilterDialog == none) + { + FilterDialog = GFxUDKFrontEnd_FilterDialog(Widget); + ConfigureView(FilterDialog, WidgetName, WidgetPath); + bResult = true; + } + break; + case ('PasswordDialog'): + if (PasswordDialog == none) + { + PasswordDialog = GFxUDKFrontEnd_PasswordDialog(Widget); + ConfigureView(PasswordDialog, WidgetName, WidgetPath); + bResult = true; + } + break; + case ('ErrorDialog'): + if (ErrorDialog == none) + { + ErrorDialog = GFxUDKFrontEnd_ErrorDialog(Widget); + ConfigureView(ErrorDialog, WidgetName, WidgetPath); + + // Hack to ensure that focus is set to the main menu even after all the other views have been loaded above. + SetSelectionFocus(MainMenuView.ListMC); + bResult = true; + } + break; + default: + break; + } + + return bResult; +} + +/** + * The following methods are used for creating / destroying views. They are commented out for the time being + * because the size/perf of having all of the views loaded from start up until level shut down is manageable + * and enabling them can cause instability moving between screens (needs further investigation). + */ + + +/** + * Loads all dependant views for a view using the view's name. Dependant + * views are defined in the INI file and stored in the ViewData array. + */ +final function LoadDependantViews( name InViewName ) +{ + /* + local byte i; + local array DependantViews; + local name DependantViewName; + + // Find the ViewInfo for the view based on the name that was passed in. + for (i = 0; i < ViewData.Length; i++ ) + { + if (InViewName == ViewData[i].ViewName) + { + // Store this views dependant views (defined in the INI). + DependantViews = ViewData[i].DependantViews; + } + } + + // Iterate through dependant views. If they're not loaded, load them. + for (i = 0; i < DependantViews.Length; i++) + { + DependantViewName = DependantViews[i]; + if ( !IsViewLoaded( DependantViewName ) ) + { + LoadViewByName( DependantViewName ); + } + } + */ +} + +/** + * A highly unstable method which unloads dependant views based on the name of the view + * that is being unloaded. + */ +final function DestroyDependantViews( name InViewName ) +{ + /* + local byte i; + local ASValue asval; + local array args; + local array DependantViews; + local name DependantViewName; + local GFxObject ViewToUnload; + + // Find the ViewInfo for the view based on the name that was passed in. + for (i = 0; i < ViewData.Length; i++ ) + { + if (InViewName == ViewData[i].ViewName) + { + // Store this views dependant views (defined in the INI). + DependantViews = ViewData[i].DependantViews; + } + } + + // Iterate through dependant views. If they're not loaded, load them. + for (i = 0; i < DependantViews.Length; i++) + { + switch( DependantViews[i] ) + { + case ( 'GameMode' ): + ViewToUnload = GameModeView; + break; + case ( 'MapSelect' ): + ViewToUnload = MapSelectView; + break; + case ( 'Settings' ): + ViewToUnload = SettingsView; + break; + case ( 'Mutators' ): + ViewToUnload = MutatorsView; + break; + case ( 'HostGame' ): + ViewToUnload = HostGameView; + break; + case ( 'ServerSettings' ): + ViewToUnload = ServerSettingsView; + break; + case ( 'JoinGame' ): + ViewToUnload = JoinGameView; + break; + case ( 'JoinDialog' ): + ViewToUnload = JoinDialog; + break; + case ( 'FilterDialog' ): + ViewToUnload = FilterDialog; + break; + case ( 'ErrorDialog' ): + ViewToUnload = ErrorDialog; + break; + case ( 'PasswordDialog' ): + ViewToUnload = PasswordDialog; + break; + default: + ViewToUnload = none; + break; + } + + if ( ViewToUnload != none ) + { + asval.Type = AS_Boolean; + asval.b = TRUE; + args[0] = asval; + + ViewToUnload.Invoke( "removeMovieClip", args ); + LoadedViews.RemoveItem ( DependantViews[i] ); + } + } + */ +} + +/** + * Pass on input to the currently focused view (JoinGame only atm) + */ +function bool FilterButtonInput(int ControllerId, name ButtonName, EInputEvent InputEvent) +{ + if (GFxUDKFrontEnd_JoinGame(ViewStack[ViewStack.Length-1]) != none) + return GFxUDKFrontEnd_JoinGame(ViewStack[ViewStack.Length-1]).OnFilterButtonInput(ControllerId, ButtonName, InputEvent); + + return False; +} + + +defaultproperties +{ + // Views & Dialogs + WidgetBindings.Add((WidgetName="MainMenu",WidgetClass=class'GFxUDKFrontEnd_MainMenu')) + WidgetBindings.Add((WidgetName="InstantAction",WidgetClass=class'GFxUDKFrontEnd_InstantAction')) + WidgetBindings.Add((WidgetName="MapSelect",WidgetClass=class'GFxUDKFrontEnd_MapSelect')) + WidgetBindings.Add((WidgetName="GameMode",WidgetClass=class'GFxUDKFrontEnd_GameMode')) + WidgetBindings.Add((WidgetName="Settings",WidgetClass=class'GFxUDKFrontEnd_Settings')) + WidgetBindings.Add((WidgetName="Mutators",WidgetClass=class'GFxUDKFrontEnd_Mutators')) + + WidgetBindings.Add((WidgetName="Multiplayer",WidgetClass=class'GFxUDKFrontEnd_Multiplayer')) + WidgetBindings.Add((WidgetName="HostGame",WidgetClass=class'GFxUDKFrontEnd_HostGame')) + WidgetBindings.Add((WidgetName="JoinGame",WidgetClass=class'GFxUDKFrontEnd_JoinGame')) + WidgetBindings.Add((WidgetName="ServerSettings",WidgetClass=class'GFxUDKFrontEnd_ServerSettings')) + + WidgetBindings.Add((WidgetName="InfoDialog",WidgetClass=class'GFxUDKFrontEnd_InfoDialog')) + WidgetBindings.Add((WidgetName="ErrorDialog",WidgetClass=class'GFxUDKFrontEnd_ErrorDialog')) + WidgetBindings.Add((WidgetName="JoinDialog",WidgetClass=class'GFxUDKFrontEnd_JoinDialog')) + WidgetBindings.Add((WidgetName="FilterDialog",WidgetClass=class'GFxUDKFrontEnd_FilterDialog')) + WidgetBindings.Add((WidgetName="PasswordDialog",WidgetClass=class'GFxUDKFrontEnd_PasswordDialog')) + + // Sound Mapping + SoundThemes(0)=(ThemeName=default,Theme=UISoundTheme'UDKFrontEnd.Sound.SoundTheme') + + bDisplayWithHudOff=TRUE + TimingMode=TM_Real + bInitialized=FALSE + MovieInfo=SwfMovie'UDKFrontEnd.udk_manager' + bPauseGameWhileActive=TRUE + bCaptureInput=true +} \ No newline at end of file diff --git a/Development/Src/UTGame/Classes/GFxUDKFrontEnd_Dialog.uc b/Development/Src/UTGame/Classes/GFxUDKFrontEnd_Dialog.uc new file mode 100644 index 00000000..62bdf870 --- /dev/null +++ b/Development/Src/UTGame/Classes/GFxUDKFrontEnd_Dialog.uc @@ -0,0 +1,150 @@ +/********************************************************************** + +Filename : GFxUDKFrontEnd_Dialog.uc +Content : GFx-UDK Front End Implementaiton + +Copyright : (c) 2010 Scaleform Corp. All Rights Reserved. + +Notes : Base class for a dialog for the GFx-UDK front end. + +Licensees may use this file in accordance with the valid Scaleform +Commercial License Agreement provided with the software. + +This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING +THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ANY PURPOSE. + +**********************************************************************/ +class GFxUDKFrontEnd_Dialog extends GFxUDKFrontEnd_View; + +/** Reference to the dialog MovieClip which contains the dialog animations. */ +var GFxObject DialogMC; + +/** Reference to the title text at the bottom within the footer. */ +var GFxObject TitleTxt; + +/** Reference to the info/description text area. */ +var GFxObject InfoTxt; + +/** Reference to Back button, primarily for returning to previous screen. */ +var GFxClikWidget BackBtn; + +/** Reference to the Accept button, clicked when the user accepts the option presented. */ +var GFxClikWidget AcceptBtn; + +delegate AcceptDelegate(GFxClikWidget.EventData ev); + +/** Fired when a dialog is popped from the stack. */ +function OnViewClosed(); + +/** Mutator for enable/disable sub-components of the dialog. */ +function DisableSubComponents(bool bDisableComponents); + +/** + * Update the view. + * Called whenever the view becomes the topmost view on the viewstack. + */ +function OnTopMostView(optional bool bPlayOpenAnimation = FALSE) +{ + Super.OnTopMostView(bPlayOpenAnimation); +} + +/** Plays the view's open animation. */ +function PlayOpenAnimation(); + +/** Plays the view's close animation. */ +function PlayCloseAnimation(); + +private function SetBackButton(GFxObject InBackButton) +{ + ActionScriptVoid("setBackBtn"); +} + +function SetBackButton_OnPress(delegate EventListener) +{ + BackBtn.RemoveAllEventListeners("CLIK_press"); + BackBtn.RemoveAllEventListeners("press"); + BackBtn.AddEventListener('CLIK_press', EventListener); +} + +/** + * User has selected "Back". + * Pop the dialog from the view stack. + */ +function Select_Back(GFxClikWidget.EventData ev) +{ + if (MenuManager != none) + { + PlayCloseAnimation(); + MenuManager.PopView(); + } +} + +/** Callback when a CLIK widget with enableInitCallback set to TRUE is initialized. Returns TRUE if the widget was handled, FALSE if not. */ +event bool WidgetInitialized(name WidgetName, name WidgetPath, GFxObject Widget) +{ + local bool bResult; + + //`log("Dialog: WidgetInitialized():: WidgetName: " @ WidgetName @ " : " @ WidgetPath @ " : " @ Widget); + switch(WidgetName) + { + // Dialgo's title. + case ('popup_title'): + if (TitleTxt == none) + { + TitleTxt = Widget.GetObject("textField"); + bResult = true; + } + break; + + // Dialog's info / message textField. + case ('popup_info'): + if (InfoTxt == none) + { + InfoTxt = Widget.GetObject("textField"); + bResult = true; + } + break; + + // Dialog's "Back" button + case ('back'): + BackBtn = GFxClikWidget(Widget.GetObject("btn", class'GFxClikWidget')); + SetBackButton_OnPress(Select_Back); + BackBtn.SetString("label", "BACK"); + SetBackButton(BackBtn); + bResult = true; + break; + + // @todo sf: fix naming here. accept != exit. + // Dialog's "Exit" button. + case ('exit'): + if (AcceptBtn == none) + { + AcceptBtn = GFxClikWidget(Widget.GetObject("btn", class'GFxClikWidget')); + bResult = true; + } + break; + + // Dialog itself. + case ('popup'): + if (DialogMC == none) + { + DialogMC = Widget; + bResult = true; + } + break; + + default: + bResult = false; + break; + + } + + return bResult; +} + +defaultproperties +{ + // General + SubWidgetBindings.Add((WidgetName="list",WidgetClass=class'GFxClikWidget')) + SubWidgetBindings.Add((WidgetName="back",WidgetClass=class'GFxClikWidget')) +} \ No newline at end of file diff --git a/Development/Src/UTGame/Classes/GFxUDKFrontEnd_ErrorDialog.uc b/Development/Src/UTGame/Classes/GFxUDKFrontEnd_ErrorDialog.uc new file mode 100644 index 00000000..540c2e36 --- /dev/null +++ b/Development/Src/UTGame/Classes/GFxUDKFrontEnd_ErrorDialog.uc @@ -0,0 +1,59 @@ +/********************************************************************** + +Filename : GFxUDKFrontEnd_ErrorDialog.uc +Content : GFx-UDK Front End Implementaiton + +Copyright : (c) 2010 Scaleform Corp. All Rights Reserved. + +Notes : Dialog class for a basic error dialog with a title, info, + and "OK" button. Parent views setup the dialog using + mutators defined below. + +Licensees may use this file in accordance with the valid Scaleform +Commercial License Agreement provided with the software. + +This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING +THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ANY PURPOSE. + +**********************************************************************/ +class GFxUDKFrontEnd_ErrorDialog extends GFxUDKFrontEnd_Dialog; + +function OnTopMostView(optional bool bPlayOpenAnimation = FALSE) +{ + Super.OnTopMostView(bPlayOpenAnimation); + MenuManager.SetSelectionFocus(BackBtn); +} + +function SetTitle(string Title) +{ + TitleTxt.SetText(Title); +} + +function SetInfo(string Info) +{ + InfoTxt.SetText(Info); +} + +function SetButtonLabel(string ButtonLabel) +{ + BackBtn.SetString("label", ButtonLabel); +} + +/** Fired when a dialog is popped from the stack. */ +function OnViewClosed() +{ + Super.OnViewClosed(); + DisableSubComponents(false); +} + +/** Mutator for enable/disable sub-components of the view. */ +function DisableSubComponents(bool bDisableComponents) +{ + BackBtn.SetBool("disabled", bDisableComponents); +} + + +defaultproperties +{ + +} \ No newline at end of file diff --git a/Development/Src/UTGame/Classes/GFxUDKFrontEnd_FilterDialog.uc b/Development/Src/UTGame/Classes/GFxUDKFrontEnd_FilterDialog.uc new file mode 100644 index 00000000..82108958 --- /dev/null +++ b/Development/Src/UTGame/Classes/GFxUDKFrontEnd_FilterDialog.uc @@ -0,0 +1,369 @@ +/********************************************************************** + +Filename : GFxUDKFrontEnd_FilterDialog.uc +Content : GFx-UDK Front End Implementaiton + +Copyright : (c) 2010 Scaleform Corp. All Rights Reserved. + +Notes : Implementation of the filter dialog spawned by the join + game view. Allows the player to change the search filters + for multiplayer games. + +Licensees may use this file in accordance with the valid Scaleform +Commercial License Agreement provided with the software. + +This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING +THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ANY PURPOSE. + +**********************************************************************/ +class GFxUDKFrontEnd_FilterDialog extends GFxUDKFrontEnd_Dialog + config(UI); + +/** Option list present on this tab page. */ +var transient UTUIDataStore_StringList StringListDataStore; + +/** Reference to the game search datastore. */ +var UTDataStore_GameSearchDM SearchDataStore; + +/** Reference to the FilterList component which displays the filters as option steppers. */ +var GFxClikWidget FilterListMC; + +/** Tracks if the filters settings have been changed. */ +var bool bFiltersHaveChanged; + +/** Data provider for filter options list */ +var GFxObject DataProvider; + +/** Data item for the network type filter option */ +var GFxObject NetworkTypeOptionItem; + +/** Data item for the game type filter option */ +var GFxObject GameTypeOptionItem; + +/** Structure which defines a unique menu view to be loaded. */ +struct Option +{ + var string OptionName; + var string OptionLabel; + var array OptionData; +}; + +/** Array of all menu views to be loaded, defined in DefaultUI.ini. */ +var config array